grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ÐÏࡱá>þÿ ÜâþÿÿÿàßÞÝüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©  @£nÿý?" dÿd@ÿÿïÿÿÿÿÿÿ  @@``€€  ð˜ð�Èqä7    7%  .      "$&. 2 0 3 !4#%'/156(),-*+?ð„ð$ÿÀð$ÿÀbð$½:@Xì\þ&#NZ ±ÒÿÃÀƒ ð0�ƒ†A¿ÀÅAÿpñÿ™êêêÝÝÝ€Êÿ@ñÿÿÿÿ÷ðó€ÐN©g*@Êš;62Êš;úgþý4dddd°nÐÏÿ¿°�ÿÿÿ€ÿÿÿpûppû@ <ý4dèéæé(€àà€  òF/È 0ÒÕ|·DArialÃ0¯0w÷°bÿ¿ˆÙÿ¿°Õ Iÿ¿ˆÙÿ¿°ÕW±@\P^‘\!·DTimesÃ0¯0w÷°bÿ¿ˆÙÿ¿°Õ Iÿ¿ˆÙÿ¿°ÕW±@\P^‘\! ·DCourier New÷°bÿ¿ˆÙÿ¿°Õ Iÿ¿ˆÙÿ¿°ÕW±@\P^‘\!0·DWingdingsw÷°bÿ¿ˆÙÿ¿°Õ Iÿ¿ˆÙÿ¿°ÕW±@\P^‘\!@·D-ÿ3ÿ 0ÿ´0·0Ã0¯0w÷°bÿ¿ˆÙÿ¿°Õ Iÿ¿ˆÙÿ¿°ÕW±@\P^‘\!€¤ €`ÿÿÿÿ¥ .nðý:@Xì\þ&#NZ ±Òÿ‰PNG  IHDRÈÆ0X¹ pHYs  šœtIMEÕ ; xÞ¥r IDATxÚì½Y“$×u&x¶{¯{DäR+ A,$Hˆ”D#EQÜ´�)Q⦑4£–ÍüÑy˜¶~˜‡™é¶‘iØ¢( ±…ªÊ̈p÷{ïYúÁ³Ô6�”ˆ&ÁÊ,ËÒÂ2Ü¿8÷œïûÎ^^^^^^ÿ®/üðüÿï" " ®ÿáà�øðæ}¬7€,,B9K.ÌÌB)¥–éj¦½·fµº¹›†;@ćÀú÷P‹0P8ïÎ6g·ÒfsvóôÎÝó“]ÙcDa²BÎ9%aF$GEp€€ª½·®ê¹ä1s#9T½¼¸lÇ©¶vœ¦ùp\j¯Mkmf¶užUÝ[óVaEÛ‡Àú T&¤œÓé­áôÖîl¼ýÌíg>òÔ½[g;¦ P`÷>Õ:ÍsïLÀ`æ�r&bwg‰q³%–Þûq^zïœòv³ U@"Nó¼çyjµkg@V€nçÞÇ¥+j{ôîý‹û÷—«ƒ7�^#âƒ]Ï>˜ÀBfJe89Îožß{âcáù�>sã4 ƒÁ@6OÇÃáª×‰ƒøØû¤U"TH$å2 ¥®•@ÁÍÍ5 8Q.Œ\=™¥›©»†m2Û“@nµ¹›-³[�ΗKÝ/õ¸×?{ëxuyõðr>¬µd%û ‹òPÎïÜ|êÙç^üØK/={ûÎÍÛçÛ›b­Ëryy8¸!„]]í/÷ÇwÄ@Ôˆë~�ˆYvÛMI©Ö~8Ý ÔÜÍ€™‰0<Ü£äæa¦‘Šäœ˜9"¦:™¹»s@!3:f>t¿1¿þÆ;ßzëêÑ£z8Z]>ÖûïmÉéÍí�'_xå×>ýë¿þ‰çžzúæ&“‘wëõpyÙ¦ýáx5͵6mµõÞ{ëîàîŽD”RZO($¤¡p"°s÷@ €¥73@ffް UC"Dt‹°4"ȹ0³zˆp &&7óŒ(£*_ôåááðàÝË·þé§—÷ßíÓôÁ8"•�…ˆÄiÜmoÞ}þ3Ÿþì~çcÏ<õÌ­rš%zï}š¬×¶,Wûýt5/8Ëqªf®†ˆAе#¡{¨vLÄ"Äê€ÁÆŒÂì îîD„èäj D€ˆˆàhnÁœJ)¥°™B!€C˜¹›:: ¡2yàÛs}çáå»o?xðú[Ç«ƒÖj­ýê‚ìWXÈ’Ïo?ùÜsûô¯¿øÂ‹ŸùØ3OÝØ¢9b@¯u©=Ц‡®ý8O‡eÚï÷ûÃ�]µ.ÍÌ™ÙÝ#ˆ@U{WUED‘�ï3`CDó@`DD ¸f°" �œI˜3@3E„ˆ0³{˜D˜ZGDD$"ˆpsˆ@†Åý`üàÐÞ~óþÿôÏûŸ½í¿šG䯰�$ŸœÞ{ñ¥W¾ð…Ͻòñ�=qk`Ú$wVíÚëK]¦Ëý…»-µ=|øhšæ¦náDDDëÝ4ÌL{¨"23 ®¿FDÌŒ"b¦ª*"èH˜’¸››#2 ç,)3ÕÞVât}M" DD Õnf "@€€Ž.’�ÒAáíËãýÑOÞüÑ?ΡõC`½‡�T9»}ç£/~æó¿ùùÏÿúK·oosNˆË\ ¡Ö™Áæ«Ëûo¿}qâÃJ),¤½23…C@Œ›!ܑݕˆ…³™™7ÕŽˆ„ènˆH$„(Œà‹š1! 2 ÀÞéµËÃ�üú›?~uzôŽÕ%Ü>Ö/òàOÏŸ~éãŸýÂoÿú§?ùü½[wv£ÖfîàÝrfuUíµÚr|ôî£wï_,½Î󬪺V*°  @ðˆ0óP%ÅÆ˜ÜÑݯ!…kacB 4à,‘R2SB@DB@wGrfffBd·X_J]{ï�àkÙ#"D"E @!@ 5Œ)oDDi(H<¡üôÑñǯ¾þÓ¿û‡«7_¯‡‹÷ï…ïû*Åùüæs/¿üʧ>ùkñÅgîÝÜ™(‘LmDBLÁ"0Óñpœ®óñârqq¨ÚUÕÍ„ØÝU+P[["�ufѨn¸>zI‰ˆ„Ù݈™�ÁxÌ„ˆá�=F„j ˆœ2¤”AÍ©·¦Zÿ¥F8®sp""A"Àµù[ÍE ;ðeÇŸ=Ú¿þúÛû_þfÿö›Vç÷3¼ä}<ó1–rûÅ�æË_þâ§^¼Íž�¶B"É#&S€D¡`µLWÓápu˜Ó4ϵNÇI›USg&IC×á�€¡ˆH dÞ!у„��„@< Ð#€Y Å ÌI€˜Ý A˜ØC¹“u%�°hæ­×\Ò*>Š$&îʪŠŒân9K8º{wÄóp뙉!ˆ˜„ƒ=!F¡¼á›ãùówNo=}ó‡?|õ�ÿúwÓ;?Ó+Öσ©Rn<÷ÉO}î7~ûó¿öÉ»·ÉÚq™óxzãäôtÈaK­µkÓÖêqž¦éx<^. VŸæÉº†¢¡³“Ý8n‡Ãašºvs_‡ÁˆP½~*nA‚˜JF!'&r„$ÉáºØló�7ƒ”!¥!œ‰S„ÕvtS""D<öËRSJ"¢ªæNHˆàîÄàf&Œ‰²»/ÚAU‰)À­³sJ‰Râ”U%„T²“‚�´q8vÿÉ›ÿçú¿Þù»¿m‡«xÿq÷ﻊ…,›Ûw^þìg¾ò•/½ò‘§O1YÏOÏn¥´ô¶?ÌË¡¶ZûtÜÏÓ¾Ób]ðU›k7‹ fÞj÷0$bDˆ0w&F_ 2a”�™#�1˜H!@8!G”Ìg'CΧ7’òt| m’ÄÑ–©ö)•-sŠ›Œ‚€D�B ‚…ED4w�pÕœS¸¢º»wæDœÇq\juë`Žà&ˆ'Âw·Û'o>ñôÝ'þóÿûÜÿïÿüðµ×l>¼¯ž#¿¿`ÅéÖ /åÛßúÖ׿üé§îž „²5ì5T{­Ë2_\<¼ÿðáñj¾:L�öûýqò3ï½OóÔT͈)Ì£öÖºÙõà†Úºu $É%�»AAX8B xX ` !rJYˆ™-’ÓùÙé½çžú™çuѰ~~º#ôåp`ÄÍfðX9|'F\YS UDBs p@7\É­p§À@t׈ˆ€QòúXëÞ­--\†!ËùvûÄùɳ¹wï¹*�<²:¿laï`!QÞ�¼ð™ÏýÕÿú¾þ[Ÿzz7ÐÑêáò᣷ß~ðà�ÃqBH›mÙï/]ì§ZK®öûýñî¾,K]ª¹sâ•åF"�`âDtmÙ#t3WcbAF Br‡Þ­ó  ¡#¤$) !CTë~ç´ÜØ•û?{pñàgÚ§^çV›™™#ÐJ™²H¬S¨„¯|QN4ŒKÊ)—’JÎy)'D $$&$)C5[šVÕ¦Öšjï‘oÇtc>òÄÝç?ñ‰|ãΣý±ö®ï‹®ë}ÑcQ.7Ÿ}á³_ú�ßÿ½Ï¾rïfªMÃêáâ�×Þ|ûÁ¥:oÎOž|ò‰{7n�ûG‡ýáâÑe˜Í­v3wPÕ®ºZ;(H11±JÊÝ­kwsB€€ $2íŽÄ$9§”0™¨µ&DI’'I˜(Å élÜ”ÝöjõÒôÞÜÀT›ö\&©­Õºˆ$·è½»{¸ 2"SÉi3¤4l<˜‰ SºÙ²Ì½·Í¸ÙHÎãØÝç:?ºxt¼: *‡o7åÆÍÓ³çÃîæ�O¥Ð‘äoþéÁüßÿãÿóŸþ�úðÿe7õ¿ìŠ…ÈÛ³>ÿ[üýïã·ó#»‚m®áÇýÅ?ýÃk¯ÿ쪧Ýx~z÷æ�ÓQT§ãq±ðÖ狇�Ó fæŽDH€ÀHˆœ„×Ö™ q‚‡�œ€ÐÜÑ™‰%­¶Q@ĈÄBÌ€A€,‚„f–XY™:¬Ì‚«»ªS�{¸yx¸xXW7‡ìÚͯu¢H"EÄÝ#3åD9‰03†�cɉ7CòPr ÃPU p C`â’“ZÀL´-ùé;ç}þ£óxëþƒ«~܇ٿS`!óÉ3Ï}æëßüŸ¾óG¿óü�“ÂHáxyqùξŸÜyò…�½øÌ½[ä½×eYê4æãþêòj¿T„U¯##ºîžˆ"ÜÀ#H€…ˆ€Õ×§ €„D„HDÈDD()%b†`ðX­î„à�À“0àªð ,ó 憀9e"333�¾ž{@DfFL àëÉœ2�p8èR…03a¸0%InÆH%á„€)¥\Š;‰Y­b%h­n�«žfxîùwOܽªvyÿ­øå‹¿4`qžxå7¿ó¿ýõŸýþo}d; yCFˆ¡ŒO<ýô /<{ïæ ·ã|¼ZêÒ»>xðî›oÜ¿:ÌæÁÁ„x]½ÂÃ�€…3'BÄp�œ¡«®­u ŠpJ©N)›9àúëpÍ£B¬·EIBbrõÖº© ! ‘9€)†!1‹03EP š«»•’ÆqèÝp%ИÉÔ,¡ 'FfÊ‚) LyÜÁ|ý¨ø*D¥|"ðñçž|áÓŸ~`ùáý «RºVÊ?ðÀJÛ“ç~ó³ôýoÿÞ+/œ31Ax¨jïˆP†Í0Ô6_]®]^<š§å8¯ö—ûC]i(wÇ®ánŽ„æDXRJ²6WîöØ„€„Ð{·Uäñˆ•‚ "fD"÷p$$$!†�`áX]_9sʉM½w� �$�ù±Uv&Uƒ5wÀ€@DÉâ�AD˜K"¦R21v5$L9¯R’zw r$dfN’´+†�ÃP†± 3ç’$1É–’ 2Ü>Ù=óüós9øàQ½z®ôŠ…8œßúôWÿ;ßý“ßúØÝ-Ç*Î"‚i×ÖW�!R]æùpuuñàòòâêêj^�˜æ¹w»þè¬u ÖÙS’ÌœE®Çý&±zT"ü‚D„ááîæ„˜ˆJ)¥””3HÉ9%†0íëqáaˆàêª^k¯KUí½YWu@÷w¤•Óg  B "LYZ¯¦½”´Ûípš§ˆÄ Ü,Â� A†‘ò††¡ä’¶»m.§½ÖV'€pŒ`!Dº9ŽÏ½øLœÝzçþqyt?Â>¸À"Þ<ñôüù_~ï[_ýÄ“ç# °X�3 sï„àjûýÕá¸?LÓ4ÏÓ4Ó<-îÀ†ÎLHÀ DÈBD93âZÒD¤”"©@\«fGDî�Ä|­#GDdJ°ª>ˆ,œˆ<çÄ Y„sEÆR†Än6Ï­™…»EW­ eÜ )"†’3'fƒ`–a9±÷ÎL�˜˜DRÉ%ÖÞºšª‰ˆ»›9µ¶¨v"`&Âr]6V¿1œlÇ!§ëÁ"ÔVÚlÝ!KÈLdn+iÂÂ’R3W7DìU[µ¥éÔ–¥öi©µõ¥V!Øl6»íŽ `H%—¡˜GDhï (¥ sïÝ´ãá‰Ûg_þÄÞÞ}ó­¾ÞS;×{ ,ät÷¥O|óûßýêg?qbJ�­.Ë윒ªRÊÃölÜ��"ËtXæý4í/®®.//ÇÙsνik0ˆYDÆ2 ¥d$sU³P°n×T7¬Ó"ÓæADž“lÊP$á¸ÙŒcJÙŒÃ8Y_u(™ÁÑ��p(éÆÙi:÷Óaê­›vRÓ•B­µå, ÄNæ×Ä™»›bª�º�šš­¤°°¬<-"!3qD cªÙÒzSU7Uófq@r³Ä4ä�aèH$,Òzm­†ÛÊ¡8ÀÊ÷�Cxòt{ï…´}ëÍ7õpùÞÕ­÷XgÏ|ô�þü/¿þùWn°ƒ)ºÖ¶ì§RÙ‘0`H.ÛíÉùé j›—­Î——‡ã´Ô¦È„u©½@ p)eSÆ•t6·®ªÝ"W3ù:†€Pøãʈ@p²ÙŽ)')CÙm‡ífSÒÀÄ%Ûí¶¤Ä„áªj戮­‡ý4Õêó´´®ÀlfHÂ,D´ÛŒ¨Ý5:€# B˜!`FHbPuG„œ]ÓûÁL€aînHLĪÖzwí=˜XDÖù]»0X¸6UWscbHX­·VÁ}3@Ê”RŽ ·(ÞîÝØ>õÒ‹éäÕ¿û¼gý¿gÍ:·ŸúÆ_ü/ßúÒgn‰( a°G7>»uóôô$Â[¯2¤õ0ï/ë|¼zôèþƒËñš91P]æeiîNHœdÆ0¯µ¶yV7 O%­Û5fÌja`!9m6Ãén›%±ŠìvÛ“R²””ò0lˆ}õÍ« ‹ˆä$­./ç¹5µn°´"eܨ‡Y1p8 Aæ”$¥´ê?NˆÄ@¡­jkha+ñÑ{w€ð°5ýƃ"®·ÍTµ¶¶:W't)eZ&Àµ7DðuÑÈ݈u,ƒpF&`̹ `mK¨¢29à~ó¤¼ô‰�¿9é;o¼fó{²"ËïªNžyîw¿ó½?ýêoßd3 ‰Âxõ¤’…ÂÔ<P�ÃÚ4–eiË|uµ¿šª¡pÆqËÌÞ»’™*F””�É!@Üš²‡GäJœ¶ãxóÆéùé¦$êÚƒxÜ�CN B"›Ýv²»¹÷WS`–$”އãñ8«»A’‡‰È0–p‹@dvwH%^;žÝ=…Y$åXëÀÒºš#º#8€ºuóuÍï·ÜÐ=ÃÃÈ#, „¹”„¾ ‘fˆœ!€`N)cÃ�ܬª†“Ū$dAÐ7žzòQÀ»¯¿Ùç㯰p¼ýÄWþäOÿäk_|r[FæÝ8RØ5¥NÄÈn­Y7b�3U×ÚLµ_¦Öáäìäül[2•$B ­_ï.ÅÚ»m7cWuDR 5S3bRS3 ó@”Ä»íæÆÙIz³Ö4¥¼Ý XòX†�ÝMµ{ ª¹”$Úú2ÏKmÝBƒy(1çìîP’@s¤\ˆ23º»jG"$$âuH wW3‡` ’2 57uøïyZhjfæ®aq½‹� ´n™[ïÝÌófÓPÖœb @3Ï¥0 C0‚C!#¬x]7…‚¶ãpëÞSo\N÷ÿùŸ~áÜé/Xùôægþð;?øæWž9Í<§Œ®="b=Â]ÕzëÚmAD„·¦Ah)åÓ³ÍP0¬-Ë´�ª¶.Ô‘j�è­µÞY$•²Ìspbp7\M)Ev»MN’…%ao6O-<’HJ²Æ2Œ’Ò¸ÝM»†‡Ù:º9EÇý~ �2ŽœÒf»½u~îf^rF�œ%'fÆœ9å"©ä,$ÄÌ7ÎÏKVFßÝ×·Érݯ³¤ŽS‡ €ðpÂÿ^ï=Ìà«€0#¸…›™¢»3Q9??K©<^‹¥U73o]Í»¹y€vuS¼6<@xÄqo7ÞüÈÇ_{·=zóŸÃ:ý¢Úù_0°8�/ñwÿúÏÿø…CFvbN‰P ‚ÜÀ="zÓn¡]µ­>Sç4è¥H¸yïÇãtu¬ËÜ É™EÝÕBÝY!…9¸‹p.E˜†”KN)¥DÀZ{8fá¦F9ç¡l¶Ã­[·w§§€D᪮áQ[�¦ù0-óчÓqjÝÌŒ$JÂ1KÉÃÚŽIèžs"¦œ3B’Ì©€ Óv7žŸ� B]Z­ÕÌ�(�XRJ%Ex¸…{¨uðð@‡ÀÄ«‡k%¶èz£ˆ�M£»›™fÁ2 °@@F ¡` ¤êÖ»z¨E·n«ñ4Ü#Éõz# âÝ›;~♟üóÛÓ»oAÄûX˜òÓŸúÜw¾ÿÍO?u6#–´Ç�ÂVµÖÓÌͬ»ªÃãýL$êË<ïÞZsõ««iªJY™K£÷ èÄ€"i5?13"”ÌCÉ›!1¸õê½;"Žã&eæ\nÞº= eS†M(¢×¹·¥.sWmM�ÇÃ~u8εj�šÙ*Gx°ˆ;ÖÚˆhÜlÒXD¤”�˜æyÑ®��¤ÀÄ)¥VûÕÕtþ‡?øî_~v$)Ãf“%�Ž´Ú‘(z«îÞ­öÞ{7BJB‚`ÚêrÜ_]ÎKÝOó²´¥¶U.CÑˆ]›»_§áyˆ0B˜ÚX „'–pwí¦ÍÝ™ˆ™1'æÂét»ÉŒÖm:çyªó±¶å0Ïе/˲´fL©wU–œ$s‡<ä¥KÞžœŒ›M"N‡£™CNICýx˜jÓp5mB¸öÔ›Í"„nÎÄ«"�’da~œ°¶üD„˜E2§À•Et³èͬkWëÝÂ�T»iOŒè M5³K–®Í…=¡3§"<"€�INoÝymo÷_ý¯Óû XD·_zå�ÿìßüÜÇÎó@”ò0œ�ÝÜnv™€›™[ÓÖ–eRëÖZSS tÓZëá°ôèáåqJ›].ƒ{ÔÖ%I)ŽÇ91ÜÔÂaÕX!,Â[«þ˜ÔöX ìÞ͉I˜yõ4 ‰‡�‡‹Ëýq:ÖÞçyZ–eé¶´†Ä­7­½»#óP†H%“ä´Ûmv›ád·ÝmO“ÈÉÉÉÙéÙ0Žëpæ]‰‰(z[Ü¡Îu^ªöîÂRr†’“˜j!¤Õ*„Ö-‘ÀÝ#VsNo}Ý¥vw@ÃUf�d@T³Õè±nix€š«v÷žSákÎSJf¦Kí=z¯1ŽCG–ˆ€ìÍŸ<ÛÜzîÅWvxøú«aí},B,7nû¯þ÷¾òÙÛ ™RÎÃf{²ÛÝØ [ W€Zç¥-ÕM»ÍnH¡ÚæeYju¤nŠœÇÍv»sN½kJRJVíó\ ®lÖ™>ÖÓ!%¹v61¡Et5s°@ Ä�”‘ªÃ²D`xwG`&–5l¨Î³…‘›'‘óósFħ§CJ»Í®¤œ˜RJÛ“Ý8 ªÚ{ó®á®D�á�€jf8”�ˆ�0ÂÝzצ×qÊŽÄk2›{0³™©*2¯+µˆ «½:‚®cÀ›Ù910 q’”3 EJ™R®Ýzm"°ðâÔ IDATXæ©y4�èê8n7)˺ÓO,„RDnÝÚÁ�§ÿ¿¿ûûöèþºMôˤ2¾ü¥ßû«ïã‰AМ9�ãæ|³=K±:i›®yÇpÕÚ[÷nîa«�…xõ CNRY€bÍ:‹pgÀZÛÒª» 3Ëje_ap,ãvÜ BW]Z$D^� ëœ$¥P’pˆJBÄ”‡!猴Ú4™k�Ý)s&É)#Á8 ÛÍ6¥"©0‘$×n½»Yï�˜9' FâPïÝZ7b¦ˆ’sÎédDª¶¶SL„Dê«ïCÂÌV•OoŒ(̉@c&Bw'ND´ºü™eM ,9çÚ4119JZ …LnA$f€a‰���e­XHœN’ݽûÔ›F¯ÿã«ÿvµçß ,’tï×~ã/þâ{/ß9‰ÞM‰†íééÉyŒ>χ Ófj­w$¬}i]Õ×) rN«‡sÌa-Jnêî©$4<Î3%Y›&bs[�9d"pÃwd–µY‘õd¼Ö}’Èf»6#<¾bæœóPŠ© ñf, ©nÆáìììäô‘ÍQXÄT§ãÁ͈0¥DL@”KwE$Ja–r�à”ð±Ì«þS»‹pJLŒ�kò| @NéÚÁL˜E " ‰˜YX)e„N¹ €(ÄB²Ùžô¥ö3+Bã�7'§J¢­®ß~€`¤­!â¸Ýi@JNBL'ÄgOÞ}ãjyøÚZ¿D`áîî½?øîw¾ò©�ffS 5Ne¶CI¡K=^NÓÞ#óé�~üÚòðgñ¯Zû× Óîì•/~ùÛßøÒÝì €�˜]ÍTÍ:®¨&w3×Þ•$K*D´ÚÌ7›ÝXJ_fíj¡AœEÈÒõ)Ì mYÞ}xqXæð�uzbFAˆ”RJy»-Ih} ÄÄ‚) 1¯2k=H%ç’UU»B ˪Õ®€’„$IÊ9‹dÄ\sk`µN¬!cÙä\ºëÒæZëa?…9 ¹™Yìv»›·Ïjmó´@Î{[ZÓõôäÇœ‚$Æœ³xaJ$‚DˆAI„ˆ)�Ö“Ý)ˆQ Ö„^7"&ÙŽãf³i0zÉ–8�„‰�HnÚ]Uµ¯z!$I%�,ë…$„$9ÒÉ�Ý;‹ýô'?Ñéò°�ä©—?õ§ßûÃOݽ‰†.œa Ût£5v3bí`Vñ¸÷)ë‡m¥s†RÂ{«Ç”K.9e1‹µ;.e¤0«‡ýñÁ»ïŽS7'BD�@$Zý89gê­«"³Àîd<;Û¥Ä`kªûJkñº'�«Ä±æ¤�cZj†R’äu¼O©0 3yè @$9•2 ÒašÌMU{ë¦ à„¤jfÚ–®­‰àx²å”ºví­w5�XëÊÐ0–q[ÜÔÂB„Œ™Ì=,û RÎ,Œ¼&UðÊžÆ*ü1ÒHy³6§[õÐÞSŠ”-õÖs)†¢ªî¶îsæ”6ãf([pr¡H\L6ÀÉÙ�úÖÅkÿø¯èâùçoÙq¸s÷«òÍßû��­SVÕŽL)'óI Ö” ŠuÿÝ�É{íó¼ÌS­s­ÇGß�ç9�%å½·f,`}s¶™˜j¯aJ�9¥œ‹HbI,"œER)óÀ9³D—á‡óÃzqÿç¢~>`Q_ú—~ðõ/ßÌ)‰hkhÁj¡9qôþßh{·Ë’ì¼o]#ö>—̬êîéÛ g†3òð& ¢–!?ˆ†@üà?×Ï6 X‚-�¶à¡H˜W‘s©®Ê|¶,ááÀ”è9•Ê˲,ËÒZ·îÃÌúÈ9V@Ra)ŠÈ ¯øxš w@@ éfÓ¢ÖH$<4æ¸$˜qº†¤hQ¾^ÎÍ¢K˵Êúæ ©.Zëõ‚A•8YZkÇýžæÞzQÔ¥R9¡T¡¹¸PeQðX×úo~úüWøcïÇÿ/……Do¿ÿ£ÿî¿ÿoí³Ç’h}´û=3ƒ! ¸°*‡udYëªÌÌúxyh÷gó¶¿Ü÷d�~ÿþ«Ÿ?ÿìvß�ýh­O‰ÈÖÇ0óZ•|ìÞõ³w_ ‹õ´\`ôÁÊ,`ˆf�ÄÌ¢¸žÖóùz½>~ûË/Oëê>c è~¿�Ñy²‘™�”ÂÓ,3¨Ö‚sûæîžÀ2¿ÏÂ̘™ R—õT–Z”2`©'i­¹[¼^b¯!<ÌDH‘"üu³©Ì<Æèý0óÈ„D¢p½žÞ|ô¦žOÝÛ,µ -JH�.ATbLðÊ„É{ŽéQCLfZÖÕ FëS׿™yYËåòXz¸œ¹Ô�!�q Ûî·ÞÛÑ[¢×‚ª‚DÂX…¿¶=NOô²ü_ôÇÛOþâ›/§ÿ…%ëùïþãü»ÿèï¿©è6F·ð�A™ ™(\J!!Y—’ÃúqxúËËû‰i_ýäO_Žc;ö};ÌF¸G¢{šYï6Ì3|ôãv»ýüýsë~¾\>úäíãå2Z¿o›‡‡˜=$D¹œÏKY„õ´.af½÷á}Xw÷ˆ˜µR”˜3 �‚Ȉ”¡¥”e™Fø ��¯9Zu]ëZ ‘Y‘èØï÷ÛK fæá ¯»KšX@„–pó>º»�Ñ__QDÓú¸^–ºœN²,6íù:CG$fQ¦9Å�ÌŸ‹�Éy#Â̘p€ˆpÀ9gIžù?HYEj) l†Ò1“)‰ZïážH E«�–ªµBEœ6%"ÐúÇÚ_þÁ�ý¸ý§.,Ä·ßù•ßýoþé¯þ1§#Áè0Q2ÁÈáû¯@´êZTdnl¦{Þll÷dûËÏ~ò÷ncø_Ï!É,br<ã}' ëU#)"ÓWòjΉÈ×€–ÌHL‡™ü: sO@ ÈÌ‚8)�("ª:µƒ"‚ >�DU©.¥Ö3e¬¥&b-…ˆ3`´A„ˆB ,\ÊŠˆÄbó9ÁŠLEèt:ýøýñ§ÿê_äøF/­o Pß|ë7ÿþßûäzâð0Èá9F’.Ë*”Ãáᑨ,æÎZʲ®k ëÛÞº÷Ã!Žc<¿ìÉ‚„áµÔýØóÕ¯‡ôº*Ž dU&”˜HŒÈæÃÜ"PT&FbeÜï÷~Ãz·ž™iî`˲é¾ï} aB·0¹(«æð&Tx®ðö6`xÍgHpߚаˆÃÚäÅÏlDrÏá©L”܈XÇ@pH˜ˆ¯k$6Ý�䣵=“2qÞË3û.‘ "ÍÃ01,H‰™€™’ˆF„y²&Af©Kb³ªVáE×õzÙ·Í"êzZëÉ<àØ.K9 D„Y õÞGk äyˆ`$ ’"Ò'…þ‹ßþ{ÿêÛ?zÿÿü›ÌK¿Ya±|ç×ã?ÿî—è�Tä8�Ëùüp=K ¸œ©.³e&€"YkmÇALZ4!Q1ÝŒ’ `X­OxPR¦s"™;"½ûù‡RØŸÞy:-‚žíhH4­ì,IÛ½o·íùùeXÌD%7o{ŸÓ`÷h­efÑ2w8Ì<Ùd6ì8,�¤"´}ý`$6“¯s~BUˆLC p·Wó'�pQQÁLD,µak}ØøÚÆ—ó�ED‘éf=ÂgЯæËõ´žV¡¹„–u]`º…"²j¹\.u-Z”‰q^Š¢¬â̬Z‘)çÿ]’™1åÃU¥ž1`©§$A‡¸mûѶގð˜Dñ¢:MÀäžóõ> ‰'á¿âú¯ÿåÿáÏ?Ë¿é¥õ ‹øóßøµÿá÷þé§×âÑ™b´ÖËZ•óh{@dºæ+#‘겜N'­õ»ùÑöû~ééɱo}ßÍ"¦™�'39sÂ}ðTfRŠLÑû„óùüÑGW]ö1vëH˜މÊr´#  =Â}âk231,2§5(½!2"ÎQ–›Ï‘§»CÂRkDŒ1±aÃÍ­Û€Ru=•Ó©ÖE_[×R_¥Éá�Aè)ÌË‚Oo¯RkzF+s¡IµWd’@H‹tp„̺”eY„/Ëõ2}eªêÉ·[ûùÏ~æmƒœP®L¤“ —3éÄ‘ƒ°ã+Ñn¸{Øi¹üŸñîÝÿ8Fû�½ Ëùò£ßü»Ÿ½]‰Q`)˜ÉÙ÷Ãz�LÄI¦K0ËÞã~?zÐ{÷Շݺ޽Ý?¼  Óš’mÊ)f™oÒRÖóùñÍ¥¤»Ö²ûíå¶mÛ°@.SÈPk�a÷ÛžË"Z0²‡û�øJe‚„z•ËÉ›�?î½ßîwé&"絞J]u1pfQQF³ðÖšJÀûm�ôÓ¹ž–‘+N O"L,nD k½÷¯½{4s E„ç�4GùD42Ý-‰RDO§Óº.È” ²!9¶{U\ îGß¶ 1#áåe `"È\¤"’¹‘ ›§3'fBŠðG½Y×sÁ2OIŒ0Ó3ú°¶ C¸3e†2 eZKF÷pƒ�ÍÌ‚ø³Ëò~ç·ÿäûŸ_þï—_ÞÊß4dàÇO¾ýk?úÑuaHL drCÆÈ~ß·û‹) îcx¾ ì·n}øЈã¾íû–R¦Á‘=2<͆ ^–ÓÇoß>=>=œË¾Ý>z«k[nï¿:Žž0T´T=­ !µ6‚™ã8º»A ÏÙÍ´ù¢²-¥.uY–2ÌyîX³Öåz93âíùÃ~ôá�½�ûËý8z)‘Ï^<#"12àTÑ•<^ƒÄÝqz%¦`:2‘`)Å30ŽÎÃS”ÆÀH‘‰öS-"%3TpæÀ¨Z«† 9Ø<Ý^1¥gJˆˆ*¼ÔÅ|ØèÊuøØŽ 0–‚×ë™°Z}÷ªe˜ù±‰.Kyéè3«‘˜Ú0î�²Ô õÑÛK›�(ª®ˆ¿þÃïüO?ø­ûŸýÁ/?´þ¦Âýâ‡?øágŸà0f·LGV6k9ñ=„d½œôˆÖúæmï£7DŒåTsÛŽmo=¸)gÌ>Ž^d¡~ìŒ`‰µ”§§7_|ñÙãõŒ˜ýhá龜µl¯×뺔RJoñæ‹·ÛvÿáƒYï=fÐn­$@™š|:Õõ¤ )ÌJ0ö=܉@—JX”EÀ½�q´î#£YïÇa# h;ZïÝ}‘'òž~,*ÓéïA ÐÚáÓoSª"Áörë½_ÖŠ€ÍÂÜÜÍÍ2�„íaGDLÎÀpŠL¤ÁSƒ‡îû8(ÐNî07˜D¢¼€™ ³È80†ò’Iž”)><ÝÏçéÉÚð1�"À�«[Þ·Ai‰E*Mà ؠpòQ² æ÷®å{?úÑŸü/çÿ¨ÂÒ¥þà7þΧoÏI�écˆ(ãhÇéî§zAL®‚‚i½ï{×’ÈBÈ}kH¹\“¬¹LΙ¹}óöñééZ«@D &R¤uÕ”\T�ŠÕóz>ŸÒëÂ@u?ØýßÜ "#Ü‘‚Ó »·¡¥”º”R•Í3ŠTa‹¹-ÎÌÞ{·Þ{OQ¦ÌÂ$NPUABB„)�"c"œì}ß_^^2£ ÕÓe?¬íý8zº™¦im †RxYtY*"2RÀ¼Ëxˆˆ™#&$²H„óŒÄ ¦ùR¤°pwÖ¸œ‰N›YÂ�ëòôþ‚ÂL©ªI4l¼ºþ‰Q!Ã# ` !±ídˆj’â+ë�m$ãxdþÏ~ô�ñö[ïo_ý’µ´üòíà›ïþð·~ã‡ç’‡0€÷Ñ<FïÃŒGo6¼®Å1#(0[Ûö­÷¤Óéâ6ÒÍGS] ô—Ý™…(KM0Ô…U‰àض)E8³µckǺ.¥ÖÇGNÌÇÇG·ž@ª<š3ÒårN¸oÖ_ý»‘ˆÈ2žöÚ¼#2±.« ŒÎHÉ9£ÝýpÛû‘a9ƨ¢¥ ì½¥{ë^ÏÉLª%‰f¯–�îÝ|´Þ`ª¤[ë‡yÉ\k9Ž]„QØ[ÎYCD Q8†0i!ŠH¡Eë2E§�PI�Kq¤îˆóñ0A#ÀDQŽÞ7"dEˆ€4È K-r~èÃ0"GfRk�Â(¤3!Hp$Êa½w¡,L¤Ëî ¤SûÁ—ßzóÝßøð瘯cù·ë ‘ùü׿÷»¿ó›5ÌzxR¦[˜�Öl"¢Ù˜‘"ctóØnÞ¿ï ¤BÀncŒ–ˆtZ—¹„L@!‘R„ç>_�ÖZ ,¼�è£�—ÛÝ2EªŠÂR—u]Ö²>=>žN+ [ï鯉z¡Z˜“PTëåz:­ëRʲ¬ZDH†@Èn6¦•¶÷ŒŒ€T×%‘ÐmòÑ ¨Ì3pr—ÆüŽM¼Ö4üDÌél†g7g¢ª…E–Z.—‹C¦»°ä×&r&Zj]×5Ò�ˆ=³÷–ȉDPTX I´ˆ"#k¥Û\ŸÂ%±N\©ËryŒœ>~cô1Z;öýsMD0í•Ð{C0@`Âóz.ëÉ#GoBHÌ#,!êºþɇãÿå?kÿ_N,9_¾ÿýïœÑs¸Š�05÷ÑÚqtä© -�Ó-£¢Ð}Œ,çº0‹yŸK˜Êe© xøj‰�u]—Eúý¾mG0—¢ÌÃF·ìƬº,õ´VVf®µŠª™•Z„©Öš i£Çhà!ˆ¦]Tæø03 ±°$$R"xf“›!1Ìnn 3‹á™fƬnó%.*2¥èf� þŠ©„¹uyµ…'gL¿!"Ñcß7!~x¸V­yk{š’í[†cQi-ŽÖUÅ!^·ÐZO ÌZTV"p°n*R—EkÝG„‰„�æÈµô <ŽI˜ŽHàîm좨TZƒá£¤2Pöq cÑŠ4‡‚f½a5M IDATÙÇF¨:V¿ÿ꾨Öÿ|�ÿ€Õâ—ÖúæÓ_ùâ '2:¡¦#RôÞž_nË弞6w�Š BötóOÕªÀIì„ÄÍÌ i)ÊH�ë²,‚Þ© s©œ�ž‰Ìsx¨µ,¥ñ¤Ò…yëmYJÑÅûhG¿Ý^Þx!Epz12òV­ÂuNÀÓ£› hÕ4>Ú>܈¨”Ò›EÀäµ'¤¹)«i]Š A@xÄð™"îan_ó¿#= 'ÝjFüì{[ë ¬DUÏ—K&ÄH¦nÄ $ xì]Uܧö{þm>ÇúŒÈÈ À˜(’LžI”LYT·vØÖ‡ar’ðZõtªI «CFxBfš÷Ñ�}¤¹�‹p9�¸ÔÛË3Dzà°aÃ)€ñÞ�Š ‰‰Ñ#Ñ[™ž<Âï}üôæËïýô/ÿüo]XÈüɯ|÷³·O €˜žA‘}¼Ü^v·Â4 ‰03™ø8޽óK¿Ý—뛢Å|@n¢r½^ͬÕ �#€Ër>/cô¸œOû±{doMˆRÔÍÆèf–�}è¶Ý£{;Žã8޶×s™ì—1†…eb80ÑRd]µTùë ÁLÈÈÈäR‹cÐHp˜#ƒ}½"–*ÓÅ_k�ûð lí¸o; =<<ô~SfN)ý+2ó^3p]VoæJoŸ.ëi¿wF|¹… -K}x¸23G„Y÷èD“ü1MÑ„$�ŒD*ê eúÝ2zÛï÷Çäi‰j$QYÊzZ,K?<TJx±¨pzfZï ¨ª¢år=ÕR€ÑÀ|oÄB×ëyYôíÇá#3×e)ºdv*4lX·Û­E"Z"13KÁù‡ f7¹Ý#_zDQJ¤ZÊŒ‘žywS“TêÌS;X" ¤dÃÌ_Ì1Â#ܦ䀈'Ó{o"�Ê…3â¢ñå÷¿ýûo¶ûsü¢I©ü‡ 2åáͯ|þùJ™aݺgBp Ìu]�¤2 �²Md øŠ€$EÏo®g êÖPŠ-§ó²Vf£�”EÂŽÛ-€„¥ÖòððPUÚqoÛÞÆR\Dç‘*J­· °Hš½ò+úÝ}YW"ã¤H'Ñeaâ¹{�Z—RêÑ6a}ìÛv ÑœwÌýψˆáÌê”G³ÃrØèÝ^öý¾ÝG7å`Èõ´˜EF/Rhà0#bø0ÑÌ,I/p´.ꊌL"¸¬"H·P©f˜Ñ™ Y#ºY0Cï­P&×S8f¸0€Yíè½%Ø")ë©Ü:·û–É—ó¥VÙ»�†c€î B©‘Ü3q?xf c"›7OÈ@ŒDšf4†NúΟ>|òåöWþ� +‘ž>ûôßý6¥FáŽK‹ *çó9I k3²²”L÷èc "ª¥j©Â Œ” ˲0s„›\¯ËšÇf"3ͶÖZJ ³qusYëR—U+µÃ˜ëõ²úØß¿ß"!}:òæ54XëZO'ìw¹ï[¸Ì!“°0w�áó25÷6|; ԥ̅ôR+Ýû6]�Œ ÖÇ€é•2³}ë62¼�Ž! i‘Z� ·†}ÞRˆǾ{GÎ<Ÿ/*�‰ L’1ÑΦ¥R–ZåhØö°Ä>,ÃZÖÃä5Ée*³ _›�÷ Ðb)ë…!¡m„¨Ä’¯jDwD–Ha^‰ë[zD Ÿ ‹ÈüºN&ï«y33’˜E9Ü1åˇóã—ŸýÛÍàã›iùì»ßûÎgo•8‡e ÷¶#8¡”J\kEiû>¨SY�y´ÝQÊãSA,ZŠÁða\J ‚ùrì·ýXN×ç¯ÚñüÜ{F)\ªÛíÃWï÷Öº»½žO§e%€Ö[sÿøñãǧǶñí~?î;88äëÙ„áµV>ÕDŒ@âX–×|€£íÏ/ï[áˆmt ÌÌÞ-—+#�1"#Á‘D!3úHwU�=ÆHEe~´˜IL¬Jë¥Àvì~XD$8@¶6*3³U!©•«—ZY…F›w)zÔåT´$¤‡ŸX÷÷XêÑŽ8öMH"2Ó2€`Œ>ÜÍ\¸Lj‰í¦cïJEN'"JGOlGÙ"f‚¸,§„j~€«ÂÀmÜÜ,ƒÑ£Õ>.çs­€â5B]Ð݃Ð>Zë·~åË?XOö‹L¿¸°¸ÖO>ýôézZ ZOBf"rKÂ4 H4·ŽŒlNÌ"ŠÀY"sL(P)è¯ƈÑ�ÛËívô}omÛÆÞ¡ž× .Ù7¿½ì–Eëõr¹®ëûš5R­U|Ì9“‡ ̉L‚`†Ùá=h˜Ù@8_N×ë‚@¦YÛ¶ýåå¢ÚÍY$!-½¨""‘DB²bd¸õA@Bœ9£é2‹0Èë¼gjfÎÕ‘‰�iG;Æhî™APj$ ÷ÖÚJJ "Ð$A @r%Rf„1ËùtyPe)/J/Ï‘ý¶MÊR;ŽYÜ}ô™¯7½ ŠñúrŸ¢°ËºˆŠ¨i€"I)u9m{‹Ñ‹.{·Ö÷Ì(ªU•ë©èûþ>©ºÑ{�eE”È$pÏHïˆOrúÎçßZ?zùðî›V½<}úÙç… Ž6ç4f±èBèûþ¼ovÂ%Š#Gï;@]jEfÎÄH®Bb=Ì,gvCÆËí†Ìôüü æf–‚9zÌ­5f¶¯¡Äœ ­5"RÁÇ6úýv73¤D !D|E&÷>8-=Úá} b®«ÖZ×å 6úËö|Ǿo6#¨ÖE‹$e)¥èr>=†„iž‚”žœÞ{ÀZk€åÌ™,äùþ›uFDëiY ‹Àˢ4ÇÈè}Ô¡iI9ÒïNµuo='ïY#¢�F‰çz�0+b§µ ¿–¦µTžyct�h½À Õe© DÂëét½> *Eø¾�eaf±1D¤ðŠL¢:s Ì[æ ,PJáRQ¬�ix�ˆH'U}Œ�…ˆ’³›c3w`]JúçoŸNOŸ¼üé¿ù³–qa�¿üì Ù¾o÷6Z”µ¢J¶h^¸ˆˆ{�ÖÌ6>•c„–‡éÊ}ŠðýÞz¦X÷¶7R9½yZªÆhaDæ$¬"˜§• úóýÆ"kwy¾E‚�¬Ì‘ P*-K}l[h(Yª><<=>|¤£ïîãåÞ¾úp#Ì"3Y *ËRêõòæÍ›7çóÕF²Ò¾¿ô~ذH˜ÒCbc“¨€§/µŽÞ‰RX‰dJU¥�è:¬‚”:âF”Jëì ˜`ßÛq4­�`Éë¢z ÂnV©R –G�ûåT‰ÁJEŠëã)"ëéôá~?2 Òë¢ëºª– óU«ÅRŽÍÀiØ(ÔO—3fd8äh*hTb !]ÐÃÂZ?ÎUX°ÔÒz™Ç¡€0³g 3aÖ ž x&‚ ï;j|úéÛ/?ùÉïc~£ÂB||ûö£Ë•ÜÇkÞ�@îëéBÃZD ADZBOà! ‘j!H~¾¬Z‹2Ý·—cïæÍÌJ)À,Z>ûì3ïÛËó‡Ö»¨ìÇ`–™Cá­aJ}tDŽH·˜‡ÄÜŠÚðçvc$øº.Oo߈èõz¡cߎcß÷¶ï‡{DäEÕZO§z:�j]^³ÄU… ñÍDf1P23àÖž?|˜ÄýRt¦âÔRˆS¥¨.Z4 aYêÑ;ÆWDL-¬@Œ ª1�™m7bzX×pß·Í "‚Î$eééDZí™é6É•5ºíû±×ºL�Dôa’€ €ž�)¥èRq´Gà ý¦½M›õóA%^×¥ÂÈÛ‡Hjm 5]˜n#Ï4‚ˆ˜ÁDP–$!• ôn€šðv9}û»¿úãå’Ûóß\XLòæóÏžÖ’6’1:¸'R Ya–Þ�s÷˜" ¯DB¡×4+@Ñr¾œ°g=_Îûm;ˆééé±ùðŒp¯uÉsÔ2><ØÑ‰ùr¾¸õv—ØŽ9Í-Ý‘™Â�•qߎˆ(Z¦5*ÌÌl¸dôÖú¾o÷­ C|}Mäm)|^ëãÃ…X—º¨•’�}t"IÇL¨Zë²DäL·p~¹™{o=<.gaR•Ëåt:]2ÁÝ™"|]ˆ0DP032F7È­‡Š Rd"°¦¥öb¹µã é6€Dj­Šøn»·ÑÚØuß!É& bX8Üóvl¤$—Ë)?¼¼”¾Žžíþ²®ª×sxoáÃaß7ƨU=\eréä|Âv? 2[ë‰æ…Åkm>l¦Že¦°ôÞÊZ´¨Žná”°@~ò­Ïh}ˆoRX¢ëÓ§-ÜÓc? œ3³€°£!¦»yx)¥(!&"U±™—‡ÇZà 0¹–§§‹èJ „Á{îÝúUJa¥B^N§µ®LÒûŒdnctà62±ˆ {˜Eò´ªb¦#Ái@‰ÈÛm‹H•¡zŒmsO­…8̇Ù@ À  ™Ò[K3ó´Zµ‰¶f”,¨Xh‘µlG³H˜8?úRd=�j]ïÛ¶owaº\Î"ªéûØ÷í.$*z´>UîC F×RÍ#ú†äLéD Xö#˜%|Àˆl·­*A‚ssŽèµÔc8õÖ÷c´Ÿ IdúØŸ.DZÑùá)‘o÷—Eñ,œìŽÀT¤"ñ4FyDk1yàI ØÇ`¦­CQR$²&Kä(É!Ÿ}ú-)žÑã]è»_|ûD[‹1–eáíØ¢gón>"ÇìŠj9—ZuY¤œXu"V\D†Yo�¹°hBŸƒiQº<®íÇ$nicŒ1©Oùt÷w?{×3PÄÍÛqxxº·Þy] `‹Ö „„˜�"2‰ Òdp¸fÒGsƒ·—+īĦGzDz¸#@d:À7Ÿ›2ƒÜÌ\™¦’ÉÝ^Ó˘‹ê²,×ëU¥ªÎCœEÄÌd=]„:EöÞo·ûh�Áh\=Ðó8Ú_j¹¬E„GovËZ`˜‹€ed;&ÈoYÄGû°–æ1ZÇ�€íÀcßrÛêK·–„à}¿½,瓪¾õ†™õ>°ŠD�%o¯|z|{#ù÷ò,ä-s. $#KeaN–c8„áhRäDóáL„‘£± $0’2‡�)Z2�ª*Î÷Z„ˆ€‡[ÖåT—U˜ÓÇqìÇŒÑ[ocR7æLyYê¢fÖz‹ "2Ïtè�¢XêJœž9†‡9$ ELÀ,Uê²"'háuYY”¥"‘[‡t3ÃÀZ×u­,ðÕWÏmßzÛ™ ˆ o`´(©t³Ö¼°dð±ÏÑ”3‚82•€,E÷Ü=Fb æ+²vx€g˜�n‘Ù[ó–õ²¸¿~Œ™a–£ÇZ ¦q­JÌ6"_¥™QK}ÝÃDŽpDÈ ÷É‚@ÉÌÌ·Û ´‚ˆ’Ôe­zbÍO±Þ^^†Y"0±ÊzZ¯µèýýÏüè…x„·Ö[ksÇL”ˆQ«ÔEýÞ�2SmXOîE˜U„°“�0®§b#‰ f­§§Ç!ôn‰\ËI¹Ì]ǘüf$™Î!a"$|e¬ç~ÃmïÍÇÈL)J"R* �[ä0b¦•€à¾mΈ4†ýuš—j�Œ'"2÷çc¯¡«Ö}´c?læ¡…›ÙqŒcïf&"ˆ�i¯ÌzM(c ‹pï}@Ž �¤-UMðÖ,ƒˆ^Áp™f„„�˜îä{÷€HDµ.äv¿� �èÃfÎÓ†‡G�€¨—£ƒ™%Ø™ñ‹ïÿÏ–Óè/¿¬°Xë›O>½0�çˆLLŒˆé} ¦PΤ\P‹h ˆãhв„h)ˆ�ÁÌÄ‘ÁH¬“l-Œu%Ï8áŒYƒõt}z|Ñ?˜E¦ˆì·ÃšEÌNÝÜ_6áÖ<`=—¨’û>õ}èc¸+—ZÖ²DÉHˆÈu]®×k-‹›³rY-EU_Cu‰&§¯7ÏŒ}Û60óe©Ûq4³Ñ­=ˆ™PªèÌ¿€€0`­¥V&R©ªÚzw{q·ù5ìÙ'SgNV#božìL¨…“òùùnæµV»ïÍ›µÖTu:í¸ûmË´1�àfSH8Æ@ÂŒ ž?¸ÖÑ #Óô5l^å½wÓ×c/þÊÞ¥YŽ%»Ò[ûå‘y€‹ªâ£9Ð@¦6Y›É4Ðÿÿ)2µšM6É®*Þ àœÌˆpß ÿšH$'™¸�+Ëy=bøðšåoo� 1n[Û«ÊÔXÔGD0“2Zk4Æó9Ž'‰$�;cdªuÔΈKÚ½÷m\cÎêû¦Ï�µu;Ïó—_~Ö!`ÎJ!¡Â9¯ˆèm3ÙD麎uáY‰9'S-¡±‡_c>�8¯�µ«8}<®co7“¦fv»5¥ _Æe¦¬å–U­©2A{ÇJgŒiT½ó%Á÷Ͷ[¿†çŒë:§_j=½ÒGQ‡#Kh¤_×H"²¦cŒ1“T‰‚¨Ñ”™Fà¼êò«Ëµ÷mëíyŒ�¯ÏŒb¥@2 @È@$É(B%MÜ£²¤ÀA¬\(DpB$Å T�å'ig‚Ï#®>IYïû1æ38PžFè�{k2Õ=Üg¤“»”´ÖMwŠ"zã·ßüy �$•ù¢ ü“ºÎ?XÛ¶Ýn·Ef� f"VŠŒôëz>g´~o¶ÿè+× ¢¥�oªÄìQQ2EbÍzëB1S™àÄYU>óþy»ÝÞ*ßUÍÇÌ ··ÏÇñPÕ··7¦óxΔ$¢¨^w°VÀWf^×µÌðki¡µrÊ*,­Í,žçñññQU¹×}'Q39r=ÂÄÈ:Y•™³¢*WÒ:9™yµðLVc¼ÈëEÀóùD5¹í7Ó�ÉA™ôb¸/ŽvfºûœS„©rm›ˆhß÷¾éuMæbâWµ'bú\„–b¦Õ­ ÊŠ ÖÌ„Ï\ÙøÊDf�çzáFDQ­UÙäUÒÌœ‘\Eçqf&¹C‚æB‰ðç/ ¸lÆ10ü#Íñòʘþ à1D¸™­«¯sÅ"âûç·/o·¦æ×I‰¦J ¢,B�Ð÷MÔP®bE”U,ÂD‘Q¹xs˜óZ"Pˆô[¯ª1\ÀnÚÎëãdÒÞ6Ӗᕮ̧gA¶}Ÿ>$ãÆ÷ôšÃç¤Wš€Y—£!ÒÝq\Slg"Y˸pÂT…@a�§A,ÊfÄâcpÉu^ÇqfÕ¤y[bHQ¢¥Ä]ÉÜ‚²µövÿ`FŒW.«š’¶íÖZ'®mï­¿10‡ûó:»uìeDþñ8¯‰JzbRå/ŸoŸ¾|z?ô1êã�˜,²±ž>zW•V>ü•ë+ba®LTEÑzË(‘Ê(V!^i°µ‚ªªÙ˜N&³FÌcŽéT œ¥ìá(0Ð{ÅuMIÊÊ„WÕÂ’$ˆçœ&i¬QQˆ~Õ¬­+Œ­éo~ýÓ¯ÿÓ_ö_ÞÇÿø-2E9²™6}câó8˜irF•H« ™ª¸V÷TŠ„"‹~á•3™Ì É"¬fº¦ËìçóqxDF©�ûu©*€‚ÐZ Ä9¼ŠDÌ3¦Rj1U‰¨UrF�äòÓ›Ù£kío7-ü`- D~úͯöݲ&˜ÙÄäÀ\´·›°d„Ò Î´Ô%D¤ªJâîKxŒZ9Ø&ÂRUIÌ9�Çñ(0³ˆm}­r/Â"Ò–ë|-àA>Ù:H_ÈPZ?3®")öʪÙçÖ½žE¦¶ßo‰ZÝy�¦[Òkq½®Óý>€R3›9˜rßµo*"}ë*BÄ­õ¾µýÖX2.c¶ÞÝë<.�)FU%¬ Š3|©N˜EE–X&+^õ³ŒJdæ �yxë}ÉÆ5Žç“Öµ(ÓÕÚmÛ=dúsÎt¯L0F3ɦf­iß#+#š¨J/bj–B1Ad™t�óãýãx<þ¨ýcŪUùÒûí¾%%B•“¢œþáÒ”›2ñ�W8Uº@3ü g¥Ö,WŒªjlÝz”°ßöˆT^R�‘fÞºuÕô‰Âœ~žÓºnäßæ¸æÒ*o½ùÕ¯Å>Žã¼®«œKi¨Û}ÿõ—ŸÞîoÏãȔϟ?ß¶­µa%&Q³r™V‰(çUƯÓcý*‚PL2|¾ jÅæÕM�fÓŒX{&µÆ*¤j¢�« ‘IÇs ‘ª æò˜Y¹zcÛf÷Ù¥n·}ßnfBÌïÇÉïs°°ìûvOí»qׯßÎ�ã!\ÂEÉ þa‘f&[çDYÄÑuö,⢅×\ÃÎt¾®½ï­ ±#<™ÀŠ%q%D8°�#Ü£©l*¢š¯Ú)2ETXµ[1“�D�+‹ù8Žë:+ÿµYá«øƒªHIˆŠ�I f®˜…0aTuß¶ŒVÛ�D�éÓ'îê³°·&¬UEH1³ÖQÅÄ•á™%¢÷ý^YcëH @T©\ˆ›Ù9‡šÝßÞ˜¹õöw÷w™É$HÒ¦}ïÚ¬ÀU°Ö™m»íÍš²p×çáTÅÖl­X¦šÞy´¯ IDATƒ§‘¬ùÁZb©»ªΠ…íÏ,VÉL‹Øjö•BE¥ØZÑí~_˜ÚðˆðgÔôTå1®ã|foÛVyöž™[3a‚™®3;ˆÎ1ðíÛñ¬óz¨Z&®c|z»‰Ê\WÝ®Ecá"Ì1yÍÏPÄXw%BìîQ™UÆ’ÔMG`aÂ,mËŠ,¨¼¤VjÖö]­©µ.oçq¶Ö‘±›ª™g¬ûúáUîÖÌDAÈðôp©Î×|.ªæ¶ïÄòOÙ¤¼yW3`åö¤˜…‚Öu�³–´ø›S*+‰“™8Ï‹ˆHTÄT¬ª˜Å=«|Û6!ž‘#`Uæ�ç“E—ëû~¿³Ò9°mû_üåÚž�LuÎyžçí¶QÕÊ«02â:†’î·Û~¿«He±IF.)MkÝL˜é5ŸS[`zÏÄ–ª’ùz°V%… �°¬¥°®®QÄ $+DÍ,Ažsí’ËD#”1"#U¤™‰ˆ»wi½WD•7ÎÈŒ<ŽÓ�‰°õíñ<~ÿ»÷ãxÿüé-<„õ:¦ôr�ƒÖ‰‰Td�r]\ÑÊf1P™I(¼Ýúƒ9À5Æó8¹sEö®Í4rQ1 o}»¢ú¶U¦�Š &ˆ6�È„$b¦=bR�qÖ É y|PŽ­wù§¥hý#÷„˜’£ƒ«8h¹Ï­IkbTu³9#“ˆjD¬GT VH08ªTÄ9œ**Ú Úú¶Æ™1}¾ýôE¨*ÓÃÝ'“ɦڒúVY%<æô_ý }{œçð$"áÙër»5e¡zYà#C@ÄÒÔl%^æ8cxÐy]MñòÙ¨^'ÆÞwf#VbfBø D¦g:Kr�I‰‚d‹(�ùÚ½APD¦˜žy™Êz’×Iüù|6µ �¬Úˆ“rÀ=*Ç1ˆÏIôx>Æy4åJijîó<² ÓâqÑ‚D(ÄEë¯Í¢JUÒfž¨"b0Š¡½–C€M´{ñÏ¿LUi‘ÉÂá�ªÌ ŸÖUçœD¤,{ë\´èMªÚ¬UDÙl E½�k)ö1�iÙ;Â##‹LÓ‰5’{'LŸcºˆ0°™öÞ+Eµ1@÷Û=Ó#]d¹ìøåëÒ=àÜn›±­–ó@"š™}á© k$Šªt„{~4Üi) ‹53W•~…WU›îýù<Ý'‹ômgâb-bI��¡" Rµ œA÷·5BösŒ™N9›¨ÏHZ³âu"a¡u‡D`¨˜J…ܪ²Dyͳ%+cm‰Éx—öƒ²èy�kŒ&tÛ›õ03Ed!|^Ïã½Ä@¯/ÏTÕõVai%S¥_´ ^TTüÊ"¥9 ™™Ä‚ª®Ý 3—R¨R!–k$e˜�@&G*æ·ùyþ‹Îê?_±2ž�wÏ,gÊ¢F¯kª×u¾#ª¦ý(“c±\Lm}!Ââîf‘!’n›Ê¿<33¼.æLôv#&jÊY•5ç@US•M˜¸€kŒÏŸ?ßÞzfΑ1ÑZ³Î˜î•ETpz…·DÖü,Št¯ðp$€‘¼ÍH•\Vv`!@TíV^Á À#X�羑ȧ"xŒB€hý|EDTL©Êdä–H:=¯´Î”Ò{ßz& ˆ™)‚¹X¥<=âãù¼KG -x~�LfU ²µãqภ>ý`Óáõ/a‘ÿüÁªôq­BN†dø˜Óz®q�¬r¢uU'ÅDR,"ÍÌæ¸2“™(ƒYÔ6b!¢DxbQTç9…V×Y+K¥3 32ÁH�PÕÀ’Ðú6G4¥ªˆÀÞîåîÌ9ÆåkŒ¦D×qE¹‡¯‚PÇðÖfFËdæ0E‘D$ ®ZøüaAr&ZMIí[Û7ÃêZåš'¯Êu]sN&*OZ!â«5æ$2–ʘ™yŽkΙ5­7ÏcÌ1™HD.÷¬Üö¾ï»;2äv³„~|ý6}¼¿=|øœ+-‘@�Êœ9–,-2ã£ÀUBUä~­Ñp Ï1œ…M¸w»ßwQbÖÖ3hÌHʶësLgæ.b&Ö,È}xáÂã� �²Æ ÐÌ ñ˜íçßýîN¥÷[D=Îq<Ž:Ìù7N… –mfª*k÷�?€s &¥%x[Òb¢å9FÕƒx+Öb5¡ª™qùz«P�I…‹BP³(SUD´^ì×*°5àQLÂT‹H–é繚àéîY.ÌË0_ »–ÈH§F¶ìj,rÍ1Ý+“¥K½ÞåË Pf“öÆ*ôÚcYklÔ—Qrݨ‰ƒ*«Y‹ VV×kÄœU5}ç1笘å”IL²í[fùçy~ÿþóÛý&¢îþxÌú®uß²æq~\á,dÍbŽÊaŒk½ ÖËwúd¬CŸRu­ÌžkÌÊ”%„m×ßüæ§ýv’…šµ1’Iæx>ÏÓM�1fï�VËH„ÀëJ?`…]¨3ñ5NŽˆxŒã£w2º%µÓçÇ·¯q¼ÿ»V•›‘”DI°yRxV­±?#K LªMEMIˆ…˜˜‹©5ÛZgb! �+|JÖ+;Ï‘P»39ª 1!×$„ED¸9<ò ³¤O�A¦ºÆ¨¥/ìy ¦%¡Ô˜žé"k¦Â`¦Ö7ëïLžTLÕÌP’kĸÂXUzkF%ìÄR}ï"¶¢¡çóyžgD`ˆA²n#Lˆ)#&‘Žq*3‚Š”ÉQ¼eL¨XÆœuzƬâk$ž×ðøíï~OÀÛýV5YøŒ@x“úôÓÛÇóôã(¢ /,h ¡"îŒ )“‘då‹ÚRîs°™ˆˆà§[ÿò¶úé×é̳êãñž1ßß93Âo½©ÒŒò™J’àÈbwUU^d,d WÅ·(Piã‰x�÷ë||}ŸÏ�?±b=Ïë í‚H¿„™ý%a_@ȵW�Ì$–&´´Û­÷}%K[ÓÞ„4#<§‡‡m÷}¿+ y|<¾ºÖ6<¬”„ÙT@×ô¨²ÞÍ�ÖûwºÇuç|ÿþ=æü+Öããù~\ÊÄÊœBT´8‰u¨­5ý$hk"f,&Ì¢j;‹.mH}Ö˜ U¾¨Ðûíó~ûÄÌËæ9 W$1™I£â„€Ô”Ô6í›ICÅy~àx|}œç©ÖZgÙ¶þVΑ(ePDTѾÝLtm�°ÆKÌ·}ïb⬈‘#K’*ŠmïP&(G­PœÍ�¥71ÕFë„Î"­wñ3™—µ…2gF(z/Њ6œÇác )Ë�D¦WEÌã3Qž~}ÿøîqxDEÍ™_¿=ˆbk¸5Ût³÷�Çy³™°èBƒ.F!Q©°0¿b©ž«#T& +‹ªXߪªY1ÜYhŽ �ˆŠHeÓqÊüùË´�u–/?-3 ˆÆu@4@ÁœéMñù×_Nì�_¾†Çqœß¾ýKƒámÞk^Ç™Ik½²à\@NÊÊdHW†*³$ˆ˜ÄÀç”Lepe‚²�E æWs°fLD±6b3µ%IïoªRÄ(-ëÍ$ s´¦Ò"à³úÖZoîn}ãnDx¡ééÅK‘M^XšŒs–',<®kαjgQX^&¦DéœNá3N!¦¢¬( P1‹±Ò3‰X(×!—ÅP‰U•Ï>¯õTåÒ’_ã̈9ã9®á##Ÿ�ãºFføþxøO_:q#ä+ð1e–È«`ÐÖð©)ðB2;9„àDUL%L”i̽oèüø?*À‘ë�"X3VVVÓÆm›áƒILŸ3Æ­Án·ù¼ÂQ3:ÓÂ}Ìé ãšçû{Eüû¯Â:ßùí÷ã¬öSKaÊxˆ &޵"#¼ž•Ùìð¹‚XDÒzSU*ªJ. 3æ5L{²fäÈ(Ѧz“3DˆgU9Ë#dÒoûgJ:Ç@¥-±“‰v¨eTÙsŽkz¬üÆÚÅOwNTæy?î3DØ’rÙuR…çóÉ"Äd´©1ò<ÏJÈ!jˆð•{^{dF¶.º†Ö Nˆ†{f‚�‹ S¹ˆ_ Ré1+óÛ÷÷ï�c5ÏžÏcµCœç¹ðOÇq6þh­­rfF²ÙŠe÷Bùœ¯x4(‘1ƒ«޶Á ]Ûýó'nöñø˜e“øãñq�W¥¢NÕRÞt‘}·Û­ß•ÍZÞ{ND‰ËHî·ûì_æãwãz²Ïà·çó1AžœïãÇñ§ÁkÇ/?ÿ?ÿõoçÿõö~Ïñ|^Ó+Ý�«(ªÈ#Ë©e®aSÌuR±ššZ33«CUYîK„”ÇñݯѬ1%h p¡€òô"fªà—i{Ìëbæûýmñ߉P• æÈä,ãæ4LƒP1ÉsínEQ!Âñ<Žˆ×Y”îÓ‡3„„Ó�"%¢Ë)2®#§«¨vÉ̪ã(LEÔ  {¦˜²Š0®kÎ9ÂÃç5ǘ~-¹< ç¼Îó ÏÇqç5—`ÝgU*Ó…%³× v¶­™éuÎð`bé‚—Ý• •U`ž¥cÎô@‚jTÔšêÛçÛíí�Tòq$3å4eSýø8 ÌǼÝúçOŸú¾©GÄyQE{Ô}o½µ$ûþíûÇû»?Ê!·=ý‘YQsF~{<Çñ¤¡=ùã+ÇüŸû[ˆèÉÅ”‰¨Œ *&1y0V,ºH2K‘ÂXUa–5T@‘N„ôëñ>æÑlWÝU­ 呞dª¶æ~�órMàUÎ AeT SeP>OŸÓO‚gÎUsª*Uë ²µ¾nܧ¬r*˺ի,“¶n¥©à1ð_cúK "Y`&ŽsЏVóBÔÂgE¡*Ïó¨JäEé�—_sž×øþýyGV]וnf*’\Ì<†gøZ‹„ë˯îÇÕþñ÷cé3¢Š„A•… ‡g… Êh*Ò$’„y¿µ}ßTŒˆ ‰pBãÖºòO³faNkm»ßIûuÌ9/UY‡´,ñ˜™pæó‰yÍ1¸É9b^U¥Rç•õ'W¬Ç÷ßþ÷á…«J„{ˆ‹zSùCä´²zk[k/ê,­õ¾ú!TDȯ3…YbŽB"RT™‰ðê""’S¥­WXdDøu}%$³¢*Â3c5^*‹©� µ¶,þqŽé§p ×óù\‘þÌT Pëì¶hæÙÌzï“.E´(/ÁUæÌôÈÖ”‰ç¸bN“Î,Kê'"×uU1aY¢««‚ÑZ§ô¨E= ¦ö«_}ÚnÛ_ÿ÷ÿöüx¿|<ž�1üG”cù,V®0•mÛP××�Zom[›$%1îMªrºsie2JEÈq1A[ÛL?ݶÖúy:W}Úï÷¾‰¶Êh­QF¢ öùóg³ñ¼Nw�3‰\á�$2}Ñt R¨ð9ψøð˜«_iÚ2.øÕÛîî×ó8žÏ?Ê5ü[¤þþ»ÿñó÷çøÕ& d×AUË¢Ì`jÌe¦îÔ•í•ék*Ê &wU¡¬ˆªò�›uªqle¢*_-f©^©m�È(jfŽœ^@y¸‡¯‹ãŒ ÀÌX`ãàëç;1ˆÉ3Pµ,JÇñ=Y´øòƒ‰*‰@¼õ*�h×–Y(^°ñ|Ùµ^_9©zºu0V§#³€R%aQD¨¨$TbÎË=ªhÆì²óåõñÓîÈ¢¬dayíéEN>‡' ª™9�+þá÷ïYÈÌÔÛžYóº"™ª JÛ+,moo÷ÛÛ¶µþù'¦¬OŸ?iÛˆ…©‘ŠÉMÛLŸ[û¤ìQú<¿SUz¥S™‰U›ó$Îmë>®3Ò~­qKNm̳›¦ÙyÎÇuå90ÿC8îòqe¦ÇdZÙ€�5rŽpe1 $"ÀXÎíª¬ë Ä,^³É܈«�Ä D€ ¨Š²À,R´b>Ì€ Â}E Qîl¶æ_UÉÌ¢Vq C‘™ QM_NæcÍY^“ˆ*`Ú"¢æXÂò1F¡ˆÈ}®ðnáMµYc]%ÐàuöNg¢Á¸Fd5³">¯kú—G:�Døåë/ÇÿüûçùQˆë•‘ua^‰U#[ú b„{&e&ÿÐ= ÷_~ù (T”ˆ­‰Î˜î Ñô@f·öÓOoHÜo÷ÖUU{ë XëÖ;K[zÃ\ TU¯Jæe-Ô ÚºÍâéNQÂ"ÌéK¿“1+|^“(ExÌ)ÌÛ¾_$‘ðÌ9þÅ]ÿò`­€Ô×oߦ¿²˜Ù}†'«¨JE̙�”�ÅB‹›HŒŒÊð1@Yj "b ˜•“؈@%UTEJÌÄIÈòW°2+ˆ²Ê#ƒUM›µæsf®8¿, ³°0ˆEko›„¬S¢¨u;_XÀjƸŒèÓ§Ïûmÿúõç1ÆbPe£T5Qkxe­qæÃ=„ ÀË.ˆrf¢*=*™Q™îµ¨¾>üù|œó¬òÈõmòÚîlÛ–±fíYÑ£`¢X#¡WŸ#|Œ¡º©±ªzxù| ׈›mEc’·Ûͬ±²©™ÚÖZo›µÝÚžÌ4Q³™: µÖ¬uá··›69žãx<¸rÛZùdÒÉsNÊÚ[÷3<ÃÛíFÄ‘uøõ||TÄ*e âO­XDãÛÏý_ÿöý?ÿÅMr_süB&(¹@ªÏ&¦$‰åÞî­µÂc†‡¶Òâš~.Ê€ qºJËJ¢ÒJ&&­ÈsíÉp,’ ” HF·$qêLÙ:¸jå?1Ïë㺎9!² B cŽ*fÝ„¥Â9sÚZ•ˆÁÈÊš�ÆÖ¬Ý{;ÂWC2Xo½_×噹�ó<™%ExEU‰ØÊ]¸˜KD*ÆŠí˜ñqÔ/ß>¢0kzúãy½>Ff¬|‘²$S˜a _¿ºé "Q¯j‹˜)¥’Cи˜ætBªâ~¿oÛž‘¢Ÿˆü˧ۯÿüχ·ó|¯Hc}{ûÒ·Ï­õ¢ŠšÓ²B2T(¯ný×_~j9·Û=Ù)\••4‹Ä“õû·Ë0“Dñð�¸P–r{:¾?Ÿçq^�óãëûB;ü©‹´Æõßÿæoçÿq7B£”©Ut¡ûˆeé·}_ê‘1ÆqžÂ]2#BUb¦»‹Z1/Z‡ˆˆÐ¢£EUð9U”0_ሥWY±„ˆÈ0&ªEÖÀjÓ«*PîsÎÁ,­sÀl¦ó…�J^�¾&DD EÌDx>ŸsDº3óœ#sTI„T5Τ?EDµ-eˆu[°I®¨ò"€×Ü Æ<‡�1®óz?ÌU•s^ãºòeŸ#÷µ*Pan Ì<)Ö�—"´úHUAÌ+Æ=®‹C"“QMuÛú¶™ßîo&¿*  .fŒ/_¾ômQU%( A*–H(òd†RQÓµNñ«ÏïÛþýñsÂãÂuÅŸîBk¿ªŸ£P0í!2FÄ•WàÛq>~ùù_ÞŽþk›wbþîþîßö«7¯È,¬ú¯ÀºµÅ3êÚ»ôŒ<χ§‡§mäÓ7Z�¥ NA™Ø.*„𑤙«º‘™Ó¯¬QD .*Í9«J”ËËçHÕµ§ž× f�ä"›õ¥pÊLi¢é„zâYåî¾n]W˜!³˜µ¢Îçã¨ç288@&VÐqª«Mj*Z•ÍϘ^í­w!CÖMóu]ÄR³Ö¥ü¾o÷9çs]zÍáþã’‡dqf¢iI¤m$Œ(f¦ÞD”=ÂÌI+=Í>|&�X˜HÎóêÊf[W¶å®¦Òmó`®J¤¦¢•ÖÌIB!¡*TÑLÛ¶ ˆÅ´§Ø¥I¦žés ƒL¤o�ÆeËdŽB„£è¼â~ûûã—_þCZ¹J¯¢÷¯¿ûúþœ¿þ‰2Š €g(óÒ£›¶ÈC¥ÇOg*Ô:Ñ8#kÆXs7³&ª­wÊ=ÃI2Q“)Teœ>½¸› ·Öè•_—gÌ*ÊB1Ã=ÕúQIQÌÒû>§Ï9‰ÔÚ â Ÿ¢­“¨*¨¶FÌ–A«Z\ÂgøóxÖ¿&+ü7•'ÿø»¿þÛ¿ÿ/õåKÿIšú8Ý��JHhVT�«¸÷·Šy�dQʈëœ~Î�¶mºmj ™E5#•¤¨dŽbqqy‚¤*… Á 6h\�ÊQTÌq¸_ 2� F’ˆ�™Ì™"BT‘WU1CD2áH$Ò£*›ªS1/ntžX›�bAyD‡¯¬H@Ô™‘•³ܲ(‚{‰x$"YH­k+Ð{‘\óšÓ‰‹_½T}M£+=’§gUŠ01ðéT•ÓÃì8Ç\Ã*iàDà*75µ~Žr‰‡5s¿(‹6c¦ˆPm™5æ,>Ï93bŒÌTI˜îîNF SÅŠ D—¥ÉYHÔ²täIálL縦çŒò��kÿÚøùß³ØÇôûŸý§ÿò¿ÿooÍT%æ¼æ± [Û÷ý¾Î2/Û`3p¹GSMU jÊU*b/0H”²Ü§¯вK¾Þ0”éËú-Í„¨bdz˜0Ç5½U³D IDAT®sécŽLOp…×�u�(˜™µšò±$•"´jz¯¥Îsõ²�_;b%é·- 9cŽ1çyš1€1ÆÌ,D$á5Î#ÃÁFF]×uÍsN~||ûöK̹Äñ™IT/._eÂ�xeÕ="(¯Öžˆ½ö”j&�Q?äš‹¥bé -¬¦ªEDUëÚ´ˆî1+I¨T˜Ô@U@™ˆ5U^Y�×y¢`fD$¬Uü8NÒKäûqÎsxÄLüãûùÿ¿ýÛÿö×qÿ?¬Êš¤ÿËÿúŸÿê7o ªœáæ¦ÖÚnÖ™8s.B›€_;SaÞnûZðyqè*�kœcÆt¢u¤]~ž4µª¥Ê!ªŠœ±ÎDTeº”‚¾¡tW =P‘YáUÃgd “‰Xd]-H†GULf3©H÷9Wa‰$™‰U)¢¥UÒ[ (r¹ÚX-¢bFVt!©FÍkúuFD)ʧ_c^cĸ®ËçðyŒë|ÿqoÖcIr¦é}›™»Ÿ¹Tqmv“ljÐhZ� @ºôÇõ„†FM4»Y\ªX{fÆvÎqw³oÓ…�$„Á°Y]¬ùmœdF˜oŸ½ïóìîÁLS-µN� €n�”¥` ŠÈøš‡¹§ûà§û�£„ÓíëJ€\'õèÝöu-Lór(µf¦H!bK`D$L*3RF­Yö®ê±oÛ¶­Ä4Õ™ˆ‰’›ê¶¯¢�ÓÃÚîß> ­­ööá7¿ùÍó_ü,�?gXM{úâÓ_þþ“ÿùç?¸)uà�ݼÕ M¨‰jÑû@� B4sL*ÀDà¡éª{vaDBfˆ4€ OCˆ4©ÜÓÒ=t7"40—T¨75³©ÔBHi êÝTH¦½ï�¼m‰H 9O¥ŠXªA„”bî逵2¶Ö%"1³¥åN„Å" ‰3‰‹ˆTȚÈPÝ"’·ÞÁX�Â3 a.âÓ2^áÓNÔˆr®¥Pj$!ƒkaª~U�(!BeXr&DškÆ€™Ô‚nMa�õ2G‰�2a¿¬3—œrÛ755µ™X$‰H"Ôlïĉ檹ðìá�!Ä\%\#�3™…XŠT Háfã"; ׌íÅ$S�Ü›í«¶ó9Ìþ”¬žÿÔÂ�/þãú»—*DB,$Â2y„€0Á®­_ÚÞ"2!Ç+"š«;xP©“÷FÄ¥ÔA´1³!ñê½Æ€m oDŽ®_¸'x( $DBs¤È¼>ÃûøF$4W�)C\XÓÒ#<©Š¹gF†‹°ªöÞ1†—2|lqAdbÎE¸”åx'²@xªùh�š¹šwS¼OJæU¥qº¬ëº©öÌd&×Þº™‡º’ÀUé£ D£bw}Œ7µ÷¦È‰bªU¸Š†»–IÖZxªnf½c¦pÎ3•z@ eûT¡®à‘À’B9ÍdÚwµ®cÌCŒ¥‘)3Um¸ÀÔ:%55L­…IxxÞÚ§_¿ûôŸÿE·íO­ù“ KûWÿîËóúó[±`*5 9‘Ò O^"M÷}»˜Qº#P.�n¶[G™¥`!¦*HyÅw$‘{¤'`BA‹ñâVØC!†(“ œæqñ¶"bz`  ¤ƒ™9שºjÛ/ÌÅÓ!=2�¸«r-#S„ç?¦!F~ ˆ%D˜Zoµ2'P#@ÛÛ强[&%b7Û—Ã�‹� Ë¢P·mënÑ´7„2nœÂŒ„Ê0Ú·í<ñÈœ˜Î,î>Ò=ž1 00F\‰$™»EœNîV‰3#\=lÛ¶DD’Þ›öþtyæZæy‚äçÓùùùÉL“<˜rÄ2µw*LÂäÃÏÆ€Èf™ƒŽe<×�ˆ’gD æ4‘' ‡§Úrœ_¾¸®·ÇéöÅ+6ZÍt3í=F„lPgOÚž7í¬gzàHh„{� —‚T8"±GO@¦‰™ž[o›jÀéùäÚ¿Õ°õüÑ'_<ÿÇŸKAÄkËÃÑÀˆÈƒÆ~�¸32Òsp…®&p¡åæÙ{7�H¦â€ÖÖž^I<¢k·Ðµ ĺš9QÍÍۃ¨�¨ ,�»wU*%SÁ½[t¢”ä‰Ú— Ítü;!"BðJ»Ì÷ôÁâd KBf3ký¸.j;`q$�Gwï{_u3*’ñ"‚žžžO§SDPPJE„dfUÅÿ–‰"�Dù8"²VI°Aæ3°Q' Lͳˆ¬µ˜!ÚÅ(ãPªG2ó‹/^½~YæÃÃó90Í I�¹”âîHx8Tij¶£)@ " !"Z,‚41—%PΗs 73¶DÂ�ç;%þá«Ë鋯á_=þµ…Ú¾ü§_ñ¿ÿ¯?8Pw¨B ˆàîŽ š ‚Ø!#ŒGh}($\­uÅôô„Ý7È$¦œ¤°¹;Dw›XÜÌ @hZß;0Óaq �R<ÃÌ…ê2/"%/'Su·€� (�™ bºw4F&óÞmU3¤BÄI×}î±ë€™‘é™R8¹2 O!€DkÚÔzïªæÑöv>�Õ”Kµîæ¡ê¹·¾oç®(2 xlL@"y¦ äh£DDàÈëc¤’¹ç5�è½§ sq A+ž…kS ÌÃñˆóñì~z>'äe}šk )u&ÊÂ|s{2ÇåéM(0 “O…o_záÞ|ÛškîMÍö@¥ÀŠ[·ûû‡ýéñÛ/,ȼÿø_~ýÛOÿúæ¿ûs™fÀAqPhP7ˆHW™§išÃ<"ÓÓU@Þ£oCÛéI…x€×Ý��Ë$ª¦j ©¼§QD´°ˆ"B#ôpk›Oe&.€Y‹dªª²rÐd‹p�‹m»6ÍÈZëxèÉ„ð47ÄÄÈ!–$³ Uí½ñØ!G@àÂŒ(EJ�mlO ­(DºgïÚÍ2sÛ¶k�µ÷u_™È-Úºº@4ÿ�´@"dMìjŽæM-‰Ý� ÜSÕF¡ÜÓˆx<¿d’2™FddoLP'ÎÈÔÖÕtz:=>E‚†¯Oç˜k23r!ˆBøôtNîá�$µ&"pQ¦…�7º¶Ëå|ÙΗËEµ™)˜‘¡–‹æ»ûÓÓŸ{oÿúÂâýË®�n_ÿè§?þp–yjƒÝ-Y„sP‚0P�ˆÃM20cLM<ÒC-¯ìÍë�#“™›ºö†é¡Þ{ßUÇ 3„ܪH†¹«»C¢š$“0 ešö˜)!#böÆsI&˜›^©Ë™ãráažÄä&B"ŒÂ‰@ƒ«\æãÍíñænl®�Xs¸cB¨iï­k33CÌZeÔª"¬µ=ÍÆ”®Ü¼‚k—e“PDÂL@mı‘…@ ‰Ì4LL×Ù/’]Áì&á/o–㋃0ÀR¹,s嶇`s#óI™’„’ºÚÞ{kÚöæª á˜„ŽDP¦Ò�OOç};mûɬeXx``™±×ù“7ç_ÿú“/~ûkÛÖ¿àŠ`}ûâwÿôÕ»¿ÿOÞ9„ "¤…13 _‰JÈ¡!…")93"“i$ÊÙ®ÄÒô0À4UÓ@ȼZG23FÀ0#9¹‚0frzÄÞ[d¬kÌÓ¼,Kf0ÀDÜ¢CBX�´��€¡ÆMØ0õhŽ(À…ã‡Ìרƒ�x¡gá"HÄ ,ÄÅc 73²L ©í½WOëÚ#± šÙ®É@–�á=2Æd=‰€¨›Ã¦L@–a2ÕTË̈«TÛÌÆÈ€‚05#R}Ȉ§ÂsáW·óñƒ;iŽ7ÇÃq:Äì�~7S–2 �– è е!IF¦jg&L5À�u ;]X,½ytH`ψôR°>žõÍ÷Oo¾Ôõîø3W,HÈÄÿêgý³¿9Ö*ËTÃ2¥ÈÕ*žb‘Àˆ‘×$Sš+1!d†K)ƒþîWW0s1S¦´¾¯ëÙ#X„™#…€‰‰J7 NTÄŒ°ÖV÷^ç¥ÖR*—"‡ÃBˆ1Ï2~ ND… "!ò�˜}îýªŸ¼^sàÝß§Ó2�ÐÝ9ãȲÔòòÕáû?úðp¼žJ-wÇ»ãíëRÓZyà!Â�io»«V)Ä•G¦Ì�¯�d ˆ*u¨{Û¶Fú¶7·ìÍU5Ò©9}ýxùì³/?ýÝïöç§?»°äÏ} ÛóÓ¯þŸüé/~úÃÿáïB¨;Ö Û·í«BHð€`‘ešT[ë�@˜>Ú%a1LU€ŽHÄÌ¥3³†™ fYÄxè¼A™˜",÷Í K- BìaͼL aTµ©¹Þ/fj¦ÄÀur„.&BbD(¥™ŠTA~+ªµ0!XoáATÔ[ëmЋtß[²;¸¡jFìD˜t(< C.ëe¯É‡Ã�E"ýt9'@„Àñp·íýùrÑP3)ãíy´’YF‹š9ÝÒ!"²2~ïåñöƒWuäIŒÄ—Ã�¨dÚÕºkJ„™¤‘î:ÔóÀ jÎDµV@$&M›«xƒuÛý÷nM/ªÖÆK¢Gl�—óýûíùé¿`¬}»…¶_þð«_~öåÿÖþîo+‰ ‰@jïÝCd¾v§Ì5 ‘Ë  3aGµ³Ì¬µŒ"Œ&b Œ²"‡iŒŽMç&ãtXˆhî=¤Îàƒ×œ™q¹¬î)RJá)Ëá»�L³L¸˜™'¢ˆ”š %ÞA2S˜§¹fr¡pF2&b&pÓ=Ѐ‘˜3!�º§woÍ" ÌMUGzì},è0Õ‚t\–ÛyžçC÷ˆè/_Ü-Ë´ö}Œ-¾üòÝÓy+Äó\ˆÙ‡ ¡iwÄ„ÄL¢p&qψÀRÊÝÝrûúx¸; JÊLA D©BKP­Õ͆Jj7w@Õä2.P$PŠY·ÞnnnHŠïa»÷î{o£Ê;ÎðH0ó¾k€ðEãþéôågŸ~“ûà7ZX™¹=>þþãOÞíÿ#Ãt³Lµ–B”є˜3#3dlšhztd&Zá¹Ê°¥»©¯*\(lj…ãF ž‚<ÕÑ™�‰j­ÝÜÔ–©2`WsSÈð¾‡5³" ó4G6Í€$J\æCNÐÖ“ö† ÉL�0´š™cÔ�qmO�ðµîWfâ$1ˆÜM#Â,z _�ªšªoÛ–é,�€"SfD# ¡ZŽ&*Œ¥Î ‚w‡ã‹/Þ==�žOM÷ˆp·dä©f¤[.B"2³ ½ÓI˜Ïç @ºÛÄüúå‹z¸‹L‘rÝE¬JB8çA&WÝ"bæR‘Õ… TOϧçèÝÝǰ»G€ƒ™víæîHdjîà–Þz{sn_}þæüõÛü—«oðŒõþIkOüÁÏÿöû/�‡Z—ybL´187wï9vO3ÜF`‹pÀc5ÜHh”ò(»¶L e¨ÌpÃÁü™¦9"öÞ{ož€é0èîˆìÑ×±«=¡M›š«_RÂP®oîÀDRdô¯PdfI5�ˆ|Ùž—c�u9&0Iå:YºvÝ·½µaMûy_ŸÎÏûåaÃRK¦©–C­¥Èr¬µÖ2MË≈<¹{ñšçÜ_Ƹ?ÌHÌ$šnî�8Æl§ós¦‘ X¸ªj÷Þ›©º9¸!•f‘€±÷öðôüÕ»çßô»ýññO%ûþÍW,ÈÐçO~ÿÿù—ÿá¯pSÚŸÏêݶs�&�jf��ÈÇÌ(ºjô¦„”Ršf´n{k[»|òöéó_ýV·ý›/,ùæµ}øü³¯NÛÆTÁ1�ê|LâÔF¥5mÁpË †$,S¡ž®è9òžNÜUÑË4,³î="’92µw€¨……iš&§ãûI�eŽéõ€š†z€P�jö¨á’ž,L8ÎZL4óRDDÂSDÜQÕ˜% 30ö} 5ðÐ ß/kkm×]MUu`rL "s;??8Í2f©3Dq£pÍ4³ÎX°ëxÿgŒDo=3§ŠÇ™.%OÛîîqÝšG*Ä0ü«2MËašo„´ˆòþÕb¼½½+¥D„§‘Ãáps8Zàóesà yºlÛº>œžïïú¶b ¿¼»áyÁÌÞ÷ˆ7p)h#ò,u€B©Ì3±˜*d¸§›ghºR)µNS‘b®cPIa™å勗ǻۖî˜ñêÕ‹Û7ušçZ—y¹¹½«Ó¢�[ÏËÞ/Ûþøø°nëùü´íkxÇp€ä­õ®–�ÁLË<‰Tž§îÞU‡ YX˜JQóó¶­çËùrþüñé³�>³íòïµ°ÀÛvÿ¼üäoþöûLÌ`f½©[xwU3WUÀ@HÓfn€I\ÍÒ�¹VaD&&$NKÁ· w!ªR¥a®Ä‚Ù5‡p ÁÓÕ6daJ¦ZEDXj)\ÃB°P)=M¯x�t¦L@ª¸Zë¼X( %@Bå…¾ëåéþ±÷fÑZß[ï}ï9.“a™† @°·=3Y„KbSǰZJ­— YT››€γpáæî½' n{ÓÖ £U©S©Â%«ðãŸÜÍ2WÉb‚°Þulµ&F˜YïqmQ“G¦¡”rMC!±Tó4uD¢®œBJâ1{ŹP@ÆÀƒ…Ñ0$‘R«ª†‹$ &©PÄ͵µ¡@÷D�Øzo¦ÍrkÚt�Ldòl`ÚÜ[³¶�=ÔÓ[k½+Ú0/šõÁ¹2k­µÖj-\Æ­lš&ba@lûá™�8ÀÃÖ»õ½!e@>>>ä<ߌÿ·�i 3—Â,T„çRÝBM§*µV)Ã2Á•Ãñ0Ý]¡™?ìËlf×ÞB„Ũ)ËØ/BÆšIÃË2&mf›¶¶›znÚ`)"…Etu÷¤ˆÌ« ŒÙÔsŒÅ�È2»çãy-ŽËmJդˮçµïM]{©¸Zx€4k–�”‘BE(º™©õÛÛ¥QMh˜é QŠ`·¸š]<°ÎÇÃíK É=¥9žßœÖÏ?ýt{x—ñm.Wßra@´õ¿úå?ò?ýäîÌÕ­A †ÛJHRJáÂb¡} 0ÂqðïA=³ J¦i("�.—WDÈn‰à(¥Ê ì¡„…³oë9£a”Ù*Ù·˜ Ô‚ÑrÆ#‚¸“‡A\ÉÀ#?¡n›EPZxnÛ~U>G8€±H�˜hZ�°…ú¾î¸ÈNkœ ûÞ­86ÕŠÈ¡îk×ÖÎmßy´¬Ì}*Ò¸°jëÝ<üE�¤LMuš§„Ö��Q„K ‰Ônͽµî��oOϽ7s3ípEÞ³Yzzdb©õx#w7åðýO÷[ï¾éE{ê~q,²ª>­ÛÛ/ßÜúYø·\Uß~aeøþö³ßþòŸ~ö½×?øàåæÙ}�–BÄ ¨æW›*QßwU§©„Y‘Èuü4HG ÈT‡iA]=z‚–Š,B\‡öˆ0#RXÜL½Sd”ÄtCí 3¨ˆ†{$'ZF’_³££ô‡A’",HÃD„1†æ”H "ÔÌ­iFÌ/_¤:Û¨ª9×*™� D·Ç›²L9 Çfºg&`×U|á]9 IDATöî…òp¬©€`Ûº==Ü”i"b/ra|>�Ö€YLÈ€.“P¸¸PF)\EÜÜc€¶ë¹=ŸO÷½µÖšZCDs;ÙùFBƒœ’‘˜(LËÝNǵ»DäåòL8þjºíû»çÓ×Oo¿þJ÷þ‚ƒ¿õw¦éã»wyó²f–Zoo« Ub  q WI@E„€¾ï£Zîáf° …ãõ9*QA¨Ì$up�c<õ§š&ÀØ“‘"Ë2 ¦÷FD�¨fŒX�8·säèx ÖiÔo] †í¹Ô1…Lf*µ°Èºn—çsº+AWÃL„œ—™Ç`Bš™°ÜÝë\™k‘r»Ç2z¨öÞžÏë¶*R–ʧÓåíÛûËåÚÒ• Ã1c¼iîö¤€Ì"¥ Ëy½\Ö«àa©µNId™é¡k{x>?�×¶­Û¶^wÆÜÍÌ3=<F¦:S)3*cg^/Ž›ÍE°V™f2¬—®oŸ¿xsÿÉï>~÷égñ_CÖþ·XX Ûºn—Û^ ¹J*mÛ`eÈäÀ´5`@¡êWk¦„»‡6K æÑ%H�@& ÉtbdD ðô¦®XŠP¦î»Ð\±€2¬ˆ�)\ ñ¸M!rf$ñ{•Ÿy8X¤EHåä€@Iô:Õ:M­ù»w÷抌î0²ùž ",E¤ Ò+‚S­8Íeª³”R–Šeºt{:=Gئíñá1º"•òöÝýùñSP°’a$Ef/èËT‹*î®ÑÕÖ­µóNçëÛÛÛ›[‚n==Í{ëñü¼¯§kåaİÂ"Ý �9‚2À·îÞ�¬2©ãv:8"Ê,×H‰H&N wMD‰¢$)uZ2Ó»ŽÜr‡ à„�h­SBd23õf�Ø)Õœ#‰ˆÒ¸�Јed ™…Âj¹î=2�|Ð0�q8¡ 3!,9h\«=3Q›»†MÉ\·î{_[÷nþ¼îoÞ¼{üúÍw²ª¾ƒ…©í³�>úÇ�þît~ýý»ÛH‘žPæÉzƒ `"¿ò6Gú6" åÈL3SâzÀøä€sº{)Å<™«‰›yôÁ«É±ùaáU¸”Ê[Û»w‘çRʼ&Y·–„¨ÞM#¨Ôiï="Pjsè½ V§2ËM)õö¸¼º;Ü}ð®%’ö‹"r‘²7S톑à,ű>=<·í4Œ˜�YJòœDÐÞx`#\¤,•Úîj¡j€€Âì~½Ì ©#/Œ„P2�«t7Uõ{77wwˆ ˆ? "2`¤K2€ p.åÅñF¦¥ç΀HضnÛ¥?Ÿ×/¾~øê“�õôßÑÁßÉO±}{ûæíãI»æá8ž6퀤¡‘êEˆˆ)Òr …=ÜLIKq@óqy.”$nyU0@íª9šŸŒLR˜ FB¦Bø{/u˜ur"®¥.µ–ÂÈiŠd@}H”Ò4\=`ÝÍ�®±öÞlìºë¼Ì·ÇùæxœŽ·Óñ.ÌÒ¥rfìûz9¯á½éýýýÃÃ[7c²@Ý÷Œ„½÷nWÔ/ ÷0( Š;l[‹°HaD²ðð°kUÙ à÷^½üàÕ«:ÏHäH©êêæÖû~Y׳‡S¢ßÍÕ‹�£Ræižæz¼»¡ižP FžärÚ?{ûîÓ�>º<<þ)ŠÚÿo 2ÛéÙÖ³ÔL*/_½(ŒÑ{¿9¼œ—i¸$‰ˆÜüj5Â!§K’™ÖM·†D`–f ,BÂÚz c�ö´V¢L&/1oˆhæ‘ÉÂDD"#(¥�”¥¦iNDbdWÏ0"t·Því=Ü#{ß×}ÛN§‹™õÞ2�™çi溕Ú5ÎçÕê$nåwÉT×öpÿöáþÁBÑd½è¶­î6ˆ_"<‚è–{kûÞ"†„ "g¢ª¹9@ ãëÛ|ïu=¸N@´õ¾n{dQ)2¸Vj>*ç1hL ƒŽ€äæàþÁq¾}õÊDÐ�ê´[\¶ukíúû‡Ç�ýùóW_~ë!û¿çÂÏ[™P P-Ër3—© È„ µ 2Ž)d­%|¨ŽF�ÆŒjçÌ*2" £,˜˜BŒá:LKR¸VÇÌd"sß·Í#“™X„X¸`Dbañ„½ïê®{ôÞ‘Æ¿�"Ýmc„ZÈM۾ﭛ9a0�Hä$NâÖã|YßÝß›µiªœžH&œDé¡çÓ™ ˆ©[¬«ï›®Û¹ë†�,<È�DÎn¡#0KDÂ00|8*'�Á„ß{õÁñÕ ¬©� GP嵅 ä†ûÖ¬÷Xd�Šp˜'*Œa!H¯n—×?üp9Ü`�mf§uëû¹Ûo?~óÑþåùíWéßåªúŽV¸m§óétÞS¦»Ã²Ì/î^ÏuJHb¨¥ŠóP DV5WMB]÷Þv 75b™æ©"ä‘Z Q̺²1�iàs¸F3Ì›1¦GX"32x)t{s�ÂÇeúàx¸yý!̇½5W;,Óë_ŽÇp@.»çiÝÛî§­?<¯Ÿýáó§/¿Søw8ø»ÿ‘™Ñt}Úºg!ömÓ}'„IŠ …)`îû%3ŠH@“HaH‹Ý£EZ&Z‚#q¾Gº•RÆ›æâÃÖ6@@O!@p×pÏt pï9n�D ©æ”Ì"EÊ #K™æŠD‹bæÂ<‹Ô¤Äd)EÝZÛ_Ü,Ç›ež§»»WÓ4»çº­¦�%ª@e BÛÞOÏÏàn$àmWÓ nž�#Ñ™�€×‰Ì �»�d6#óÝÍí«×ß'™©–’�ެ@ÜšõîÍ´ïaÍY¨V¼½™ç›%hY/-ÌK=Þnoo¦é¦‰\"Þ=�žŸÏk{ÿôñïÿðÙçù„ý¿á¦𶭗óÍw/gß»G9¸p¤þ"²ˆr’5C&µ‹ˆW"’" #›•£^j©ÓT¥¤€3! D*ªáÈvŽbã€ãf . •ðôw2sb�ÌDw0$&*æ‘£:f¦jà„ÁPË À§óz9oÓT€ p%®@DóÿÛÞ·õFrdé�K\2«ŠdK;kÃ00¯þÿÇ0Ö#�4ê›dU^"âÜö!©YØð.ÖIÓ­éóD À¬¬âLj'¿ËT 2sâTªcÜn«!8ìÜBÕLÕdroµˆ¢ƒšuîÿÖñ‚ùÁoæB¥d j>¥|°B—U®× `„jA*5áýåÌuzÙÕö½ß{:ÍÂÜœß>-O�ÏûmYÛöáéúö‡¿<þùÏ:~-TýZÀz¹nëóºñ?}{ÿæÍ¥ä}ÛâpiW$d’Ñ™!%5¦N懘^ç4‡b‚Žn>gæ\󑆪ò$)?dJ10‚k˜º9áá¬bjz¤2çüju ÐÆîÚͬïû¾ìk×mÛZÛ€ ŽÃ—Zt‘À×ð ê­ÉõyÛ÷�ˆh¨õÑÍ �™‰ˆ1g&füù�è5��W_ˆã@“𰑃ߑ“c8âuïí¶�§Ä)×\ÜÔ‚�禸ÞÖ3Ç|®u:åMôÝóõéí»}[ÖÑ×þá§÷ŸÞ¾Uø5‹Õ«÷eùð~Y Mç)3ˆpaÎàdu­k3€aH‰3z„¸¹©¿ºsK{ï"¢L9ø‘y‡±i�¦’!„k.ŒHÞÁÜáH w 3fʵ¤D.ª¢Œ”32Ô²v„Ήc´1ÆŠ §S=Ÿ*õ¡[k!":ćŽ6]d¢àж¶m«»½>“TApNÙ1˜Ñ=�ðPb&¤W£Vð#Å— 1eL•ˆãî4ç:‘™ºŠ#‰Ç¾Éó‡'ôír—32[ uغ=~|L}{øÃ�¦ÔÌ>^·?ÿôîùý{QÙÄßZ¾ûŸÿëù/?ýþì_° ÂÚ¶/Kó˜ïïr)šƒˆ‘Ý4<ñÕÞŽ‰ ã0�2cÈAh£‹«x¹E¯>�G¼" q ¢æ8Ú.j)1'ò°×éFDíK)Ì„D!6Ï5çŠH)g üë¸uªO÷Mho"½©Èè]EOµÖ’�¤ Ñ5ý°’CFF,̉Ù)§\‚á°#€@$Äœ™ð8OSª%1áyš9—1lJ%§‚¯>”£ Ý]òt®ëbv0m¢Ô»ypYvß6yüð¸>_!ü&úã_ÞÿôÝíù~“â_û Âm¬Ëí¶t ꌔR2‘19¡|CÄB=Ü·}ß{Sˆ`¦š3Xä”\UŽé“‰º;â‘èG"º÷¡È9uŒÞo]'®¥¤œ˜9§|(= "sN¥Ô’rJ)åTzÇãŸ@ $74@Œ’sDôÕ^^–åvs™Ù#ér:�îf…hMÛ&£oD€G®kNy®Õ!€8¥Ä‰Ì~6ELŒ)%bÊ)¬îĉ‰Îs-)�¦)—jfΔ!0ÂÛÖºèæuÚ{,×¶­{x¤Ì€j /ÝdÕ½í/×—ÇÇëØoßÿÓûï¾ïË¿Uñoñ&ºïÛ¶zÊ©œÎ§Ä1tßUã0ŸDDâlbch€3+¸¸ s $IˆÈÜ¥éCFPuMDÝ �ÝÁÃ1(Q âž`"œË”©r„)3qâR31‘‡¨‡…í£õ1L­�1L1Q ‹ãÞE†lë­o7GDJF™ÊÉ"D{ﻃ±†!:ä#ú‘Žø`ÏsÎÓ<W@&"Må@@<]¦Â) gÌhçS&5ØÛ¸¶ñ¸´ï?>}x¼]_T†m›‡­û*Û®cm½÷Oûúþý‡í&ïŸ÷·?üôøçìWnªþÀ€iû²ïRrý™¶`faáÀˆD„á.c GL¥»¹ÉvD_ÃL0|ʳŒ�ÀLì)¥’˜"23¸¹ë«2²{P¢ZÓÏs .¹ÌÓ9åZ¦S.S�Ή“ª‡;F3~•î*Æh]ôåzÛ[[o«ˆ 1râ ¥&7è¦æÒZÛ÷!Ce¨ˆzxx0Ò±ó«9'"J)±á«½;3Ùãñjèî�€xwNw�æeûh×e]—[Œ-Ú}©ä™ñt™ÁÜSb “ÞF��/˲~z~y÷ý�·Ç�¿àCÀÏ XǺµíëóõ¶7:l$§ZQÍÀ8øP;yŽ€™0er7Ã<<‚!8 8¥!¢baÈìÄ@‡˜.gÊH%sÎ)¥ Nˆ<Õù4Ÿ‰�;—…Ã�7ÂÁ˜‰8¢Ë²Œ¶�¡Gò !;n[£÷¾ïÛ¾\÷¾ï½•qLjÑœù ¿Ú~å£Eê­‹šsJˆá¦îš™K.¹äœ‹#Ž! øi·[3im÷Äîœr@ Ì4Íœr.Õ-Í1 PšÊ>T@‘$Á„ À„©¦©æ”(çLÄèŽaÒ‡¨�>¢LqžJÍÕƒÔ£¹í·u¿¶±_S´ÂP(&ÄÔ÷¦d¦¥T  Öµwéûþ¼Œ·Ÿ–wß~ÿý~½Å/įú¼�õúHÑöëËóã'åRîîr¦#�źK9O†‡(€ƒRª•S.åd£«Èswsïc@4é½57í2Ü_‘˜82“j€˜Q.åtÿÍ?çz"@w1B>LJrÉGžù¶¶¶ïn‚�ˆÃÄÝ£$ÊŒµä2¥\jÛÔM‰œíUžD‡§ rJÓ<Íó”KI™S¦ÓTÏç™B¸#ZF¨œçšj)ÄyYWp pÔ‘INs9�f" »”|®µ‰Yo™‰§škÙûh­oÛ~]·?>ýé_þôá»ïþF™Í—¬W*ÄËu¹ŠT´Ó\.—¹`s3µ1ˆ)ê� pUpCæãŸQµ·¶‹ 5í£k`€Ä”s©�0qŒ."¢¦æxtëDÄ© a Ž®Ûºöm7Qµ×¨wGÀšxšÒ\óTJ� çbÈm(„¿¦p„%>Ž›‰Ü,×2�ç:×”Õœ/çKžN˜K%×T¨äTS>]¦4MæL4†Ö™/—‰°”r‚”xNx>OÓibâ<Í»[ ‹[ëËËõe]_nïÞ¾¿~|´_‚·þEëÀÖöürÝš&æ’)sæ êà¢懅¡"1‚è¡H‰‡è‘sî†îàêt^Ùk¦#ëKbppÄ „mß» >TÕEEÆÐÖÜÔB,Srâ”êý›‡ËåòðæŸR�¯Ë~½."½–4M•s¦œ ›»ªÄtš§ÓœsâÄ9•»Ó]­3Oça°®+ƒQâRjâTÏSžOf˜8AνuPIùR¦¹Ì“z BÃÅñ6bÛºÕ!ûÖŸ×íåºÜÖíío_>|ø»£ê—¡&ÿ-=—îÛ§ÿý/ëã‡åùüñ�ÿý¿<|sWëT ÉÃFI)€KÊyk>Õrž1!Ïs‘äjªæADŒL‡òÝl¨ …¡ H ëÓù‚ˆ`ƒ2!¢Sšy¨õ°ÄÁà~ø˜ª‰›B`Æ,j¢šS!" ¹Ì5gÎu–mÍÏ·Š1ϵžgbá„Ó‘›>´�SxJ9#àTjÉÉ1ÏÈ|è.Е°°CòÙ…TÜ5T4WtŸ�×eŒ>Bw-Ù|ìËæ¡,ê#|òrÝß?~zþé]_Ö¿WSõ­XÿÖÑ·¾<¿¼|z^÷&û¶ ¦°>Fë½WMZ7šør9×TD]ÔÍ•ÝÜÁ-ìÕÓÍ ‘ ‘OuB¢@:Ô‰S)sqt?Èt@(ªîÃРÍÐ#Ü^�…�sÎî.¦­�ˆH€ææ99qïbfˆ)!&†vpdÊÕ©Œ ­ëËui­õ}s@l]Ô!LŒBÒa•¡è>‚[“õöÜûÞ{ wõxYn/ûúáy}÷Ã_üñÿËÊñXǶ(£Ý–—§§.∀­�Þ±g “!&@ÌA,ÚÛ‘ÝhªÀô39àH(CUË5Ÿ/÷Dyß÷¶íâÌ\s­¹fJÌ@äê*&­�­omt� 7U³¡á¡¦‡ÝòÁŒ88 .¦"&öm7õ€. ÁéxY͇ؾ�mY·eÙ–e[í;¹20©ûòš3'@PSµ"‹PÑ}ÝL‡¹$g^¶—MM›É§§õíŸþ|{|ü ÿ}‘À‚# uŒåùùº¬ÝlkýzÛ®·e@®\ ‚eNÛmë[ f3 S7bšæ Ü<ÜG—#(µ6d4S•ÑÜ œ˜êétÀÃu˜A¸ÙÞ: ¡Ì,Cˆ(1#óq �”²™©zkk­56]ZÛǾÃÁ)¶‘3G8º§”ˆÁ½™îhÊ`î9Q"u÷@åD>U¥�Þ‡x@fc„›ƒBZ¯»ö¥ãø¸ŒïþòôáÇŸö§§¿Ë¤êsî±þ_K—êíǶܞîÿð‡oÎ5»ö—ë­œ.ß<<ü7®6ÚsÀÃÃÃÃ)c°YÙ¦Ñú•ðH)[ßÇÞ)!¡E�1úê¼ïý¶÷Ã{Šˆ±íO­é§»s.õþþ2weµŠáÄÌ µä ]s‘¾‰Œ”˜R8¸ JˆA°SJ¯TÖfàNÈéàœ¹ªX*w`ýL‹ˆÛÓËr½�ÞäRbQ•ZKeƈ—T/wó›‡9ôm Dsuum%bq Ìžº˜00‘˜¸·9e×½íÛ„9§@(uáš+„8¡{ˆI“D`¢Ð)!2#§œRÊC,"PÜÃÃ-v qTçÂá�æì.fã0_P—uÝuÓ”©¤—mütOŸžoŸ—O�Ú‡«øì ¿€[$š/—é<—óœk­¹ÜŸ¦sMs*õî|z¸ŸˆÏ§ó”˜[P CJ)€J)9m:’ª!¢{ä\îïj�ÌŒkò!6Fï& À\IDèu ¦ª½u3M)…»HxÀ’TUE£ñ”’Y éJLlæ™KŒ18¥#n‰3óÐØ¶Õ‘XM‡U£È›ùÚÇ»wßÿøöåÃ{“_˜¾0`ýõN‰™Kɵ>|ûæÍ›»7—óœKâ4].çËå4Wx£ó¡ºGðyšçyN ‰(b€ªŠsžçS­5€ø|WÝ!‹Š�½ƒƒ&nªÚÔÁ)hW3%Nj®&˜ÈMŽC™C0“¨‹ôœéÈÔ|| Æá¡ J€ØÝ÷}Ís ˆóçµ?~º«T_–øÒ õ¥ëßn‰©ÎÓýã¿ýö›Â¥–yš‘ˆ™Î—9ƒ“kN8Ïw)MuʹäDÈ„*ª PJ.SA"ÕH¥¤”§šJ-½·}[M-™j„›Ê¡ÓjÍÇDî1ú0·:Uo{3?<9Ât¸û|¾0²#Dê ôsZ}LR*OOûº|ZöÖö>ö=2‹ãºõ�ï?ÜŸ´õ_VšüXÿÙ¢”¦óéüpww9�/SJÉܧó4ŸëÝÝT¹ÌÓĜԣNSIŒàˆäv°ÎSJìîS={¢¥”Çh�9ñq”‹ðÑ{ë½÷1Æ8Ž0Æ ¢Z‹ê轫*"8�fÎÁ9‚ÐÀ} VóÑwDà<¹á¶öhO{»E÷¸]o�ïÞ¯/‹©„|á…ðåWž§ùînžêý›ûZJJ©Îµ^¦KšJÆi®½éi>Õ’¯?NDL%ePˆN\jabQ­#@Ê\O3 ‰*"ì£÷ÖC¬Trw¡Wkñ8d\�’RÚÛ "È™°©�%³#¯55¬Œœxkò²ÜÜ,Ôáem?>ÝÞ}èå�Ü[]IDATë¿—ÂßÍ'¡Äõ|J9ç\N÷—ùr>×RJº»» œkb,93§š33‘3橸‡Œæ}P`—ÓŒÀûÖUBA-М8%S;â¥ãÈð1¤¬\‚�ÙÂÔ\ÝC-ÔÖ½_¯[DÜ¿9»[ÛÇÞ»º-·¾.Ëúò²½¼Äg6:ÿ ¬ÿ»;¬lËïO/*òšÉô;û;ÀhS=]¦i*çK=¥7ßÞÕ:rJ4%æÄ§Ê5SâÔš‰i@d.[Z33…«!''¢ŸÝ ·æffધӄl™!{6�mÛ(¡#,[»µÖÆp£.&½ëí:z{ 7ÿ¼'œ_�õŸ†!—Ê¥Ôi*Ó<ŸN¹V'æû‡;fff´ï5³‰½ 250 ... Sender ok rcpt to: 250 ... Recipient ok data 354 Enter mail, end with "." on a line by itself Subject: World domination: instructions. Commence stage two. . 250 RAA10452 Message accepted for delivery quit 221 tecgraf.puc-rio.br closing connection¡"ópnPZ02ÿþ 6  ÿþ$*ÿþ$/ÿþ  1$$ÿþ@((+,,ÿþ00)44ÿþ88ª,   "    ¼ó!Ÿ¨Protocol abstractionª Ÿ¨Ïstatus, error = smtp.send { from = "", rcpt = "", body = "Subject: World domination: instructions.\r\n\r\n" .. "Comence stage two." }¡Âd´P'Cc C c C6ccc C $$ª                 U ó&Ÿ¨ LTN12 sourcesª Ÿ¨³function ltn12.source.file(handle) return function() local chunk = handle:read(BLOCKSIZE) if not chunk then handle:close() end return chunk end end¡,#d‘F´Cª ´ó'Ÿ¨ Using sourcesª Ÿ¨©status, message = smtp.send { from = "", rcpt = "", body = ltn12.source.file(io.open("/mail/body", "r")) }¡’dŒP)Cc C c (CcCª                 ( ó,Ÿ¨Message Format (RFC2822)¡,!ÿþª Ÿ¨| From: Roberto Ierusalimschy To: Diego Nehab Subject: World domination: roadmap. Content-Type: multipart/mixed; boundary=part This message contains attachments --part Content-Type: text/plain Please see attached roadmap. --part Content-Type: text/html; name="roadmap.html" ... --part--¡0}P¼CC)C C CCCC  C  $C$!(C(,c,0C04C48C8Ÿ¨SMTP dependenciesª Ÿª óA Ÿ¨Error checkingª Ÿ¨DFunction return convention Return nil, followed by message on error;¡Bd*dA ª EóBŸ¨LTN13 exceptionsª Ÿ¨try = newtry(finalizer): factory; On success, try returns all arguments; On failure, throws the second argument; Calls finalizer before raising the exception. foo = protect(bar): factory; foo executes bar in a protected environment; Returns nil followed by any thrown error. ¡”"d}ddXdgÿþc` `  `eÿþ`.`  a $`$(g(ÿþ,c, 0`04e4ÿþ 8`8ÿý?" dÿd@ÿÿïÿÿÿÿÿÿ%£tÿý?" nÿþnÐÿÐÿØ@ÿÿïÿÿÿÿÿÿÔ Ð@ð`€ £nÿý?" dÿd@ÿÿïÿÿÿÿÿÿ   @@``€€P£R    @ ` €`£ p£>€£>ù'öI Šð‚ð$ðð( ð ð$ðö ð$ ó ðZ€ Ãø‡�ƒ¿Àÿ œ1œ1ÈœÿÿÈœÿÿ?¿ð À@ ðà > ðTŸ¨ Click to edit Master title style¢!ª !ð ð$ “ ð6€Çø�ƒ¿Àÿ ?ð°Û� ðà > 𞟨RClick to edit Master text styles Second level Third level Fourth level Fifth level¢!    ª Sð`B ð$ s ð*D¿ÀÿËœ1ÿ"ñ¿ððð�ððX² ð$ C ð"€€AÁ moon"ñ¿ð— ð`ðH ð$ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆDŠ<º___PPT10‹ê.ë.&ÈÂ@¦¤� ºCustom Designð ñ€° š ð’ Pð¬ð* ð( ðƒj`¶j ð¬ð� 𬠃 ð0€°A|�ƒ¿Àÿ ðP ðØà  >ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðPŸ *¡ ùª ð’ 𬠃 ð0€`J|�ƒ¿Àÿ ð� à ðØà >ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðRŸ *¡ øª ðd ð¬ c ð$‡¿ÿ ?ð°Ð ðà >ð 𬠃 ð0€°Q|�ƒ¿Àÿ ð° @ Ððà > 𞟨RClick to edit Master text styles Second level Third level Fourth level Fifth level¢!    ª Sð– 𬠓 ð6€@\|‡�ƒ¿Àÿ ð`P€ðØà  >ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðPŸ *¡ úª ð˜ 𬠓 ð6€ðb|‡�ƒ¿Àÿ ð`� à€ðØà >ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðRŸ *¡ ت ðH 𬠃 ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.ÜÐq€�ZÉ€ ð ð`ð ð( ð ð`ðÐ ð` ƒ ð0€€¼O �ƒ¿Àÿ ðP ðà  > ðXŸ *¡ ùªðÒ ð` ƒ ð0€ ÂO �ƒ¿Àÿ ð� ß ðà > ðZŸ *¡ øªðÖ ð` “ ð6€ÀÇO ‡�ƒ¿Àÿ ð_Pðà  > ðXŸ *¡ úªðØ ð` “ ð6€°ÊO ‡�ƒ¿Àÿ ð_� ßðà > ðZŸ *¡ تðH ð` ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.P³ÀÀ—]˜îÉï€OÐù'öOÐ ¼ð´0ð$œðLð( ð ðœðx ðœ c ð$€P =¿ÿ$ð¨°Ðx ðà > ð žðr ðœ S ð€`±;¿ÿ$ð˜ ` èðà > ð žðR ð"œ s ð*…‡�¿ÀÿðpÐø@ð`B ð#œ s ð*D¿ÀÿËœ1ÿ"ñ¿ðXð�XðX² ð$œ C ð"€€AÁ moon"ñ¿ð¡ f àðH 𜠃 ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿO©ÿÿÿÿf3¹Ób½™3™ˆ�Š•º___PPT10‹uë.ò³Ä à"z+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +î¡ï €OÐù'öOÐ ”ðŒ`ðHð$ð( ð’.¦�ï1@”¸ ðHðr ðH S ð€0¶¿ÿ$ˆð À@ ðà  > ð žðr ðH S ð€�ö¿ÿ$ˆð°Û� ðà > ð žðH ðH ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿO©ÿÿÿÿf3¹Ób½™3™ˆ�Š•º___PPT10‹uë.ò³Ä à"z+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +î¡ï €OÐù'öOÐ ”ðŒ€ð@ð$ð( ð ð@ðr ð@ S ð€Ð`¶¿ÿ$ˆð À@ ðà  > ð žðr ð@ S ð€@Q·¿ÿ$ˆð°Û� ðà > ð žðH ð@ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿO©ÿÿÿÿf3¹Ób½™3™ˆ�Š•º___PPT10‹uë.ò³Ä à"z+Dñ='ñ ÿÍÿÿÿÿ=ñ @Bñ +î•ï €OÐù'öOÐ ˆð€ ð-Äðð( ðk§ý ’ý  ðÄðl ð,Ä C ð€`Û¸¿ÿ$ð À@ ðà  > ð žðl ð-Ä C ð€Ðܸ¿ÿ$ð°Û� ðà > ð žðH ðÄ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. Óq¾¼À+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +î•ï €OÐù'öOÐ ˆð€ÀðÈðð( ð{5 ðÈðl ðÈ C ð€°}º¿ÿ$ð À@ ðà  > ð žðl ðÈ C ð€ º¿ÿ$ð°Û� ðà > ð žðH ðÈ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. Óq£î+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +îëï €OÐù'öOÐ MðEàð ÌðÝð( ðÿÿÿ ðÌð!ðÄ ðº˜‘   ð Ì𘺑  ð„$ñD,ˆPŠHº___PPT2001‹$‡@FÔðÎ ðÌ ƒ ð0…‡�ÿ‚€¿Àÿÿ"ñ¿ðº˜‘  ðXˆPŠHº___PPT2001‹$‡@FÔðw¢ ðÌ £ ð<€@¿…‡¿�ƒ¿Àÿð¶' Ò ðȈÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð3Ÿ¨ David Burgessª ðš ðÌ ƒ ð0…‡�ÿ‚€¿Àÿÿ"ñ¿ð`º‘ ð,$ñD,ðò ðÌ ƒ ð0…‡�ÿ‚€¿Àÿÿ"ñ¿ð8º‘xð„$ñD,ˆPŠHº___PPT2001‹$‡@FÔðl ðÌ C ð€€F¿¿ÿ$ð À@ ðà  > ð žðl ðÌ C ð€ðG¿¿ÿ$ð°Û� ðà > ð žðH ðÌ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ. Š& º___PPT10‹ ë.Óq€‘kµ^z¹+bkÍØDñÎ 'ñ EÐÿÿÿÿ=ñ @Bñ Dñ‰ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +Dñ4'ñ =ñ%ñ(ñÿÿÿÿDñÜ'ñ =ñ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*Ìÿÿÿÿÿÿÿÿ%ñ(ñDñ¾'ñ =ñ%ñ(ñÿÿÿÿDñf'ñ =ñ%ñ(ñDñ‚'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû*Ìÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* Ìÿÿÿÿÿÿÿÿ%ñ(ñDñ¾'ñ =ñ%ñ(ñÿÿÿÿDñf'ñ =ñ%ñ(ñDñ‚'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* Ìÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*Ìÿÿÿÿÿÿÿÿ%ñ(ñ+î¡ï €OÐù'öOÐ ”ðŒðð8ð$ð( ð°A ð8ðr ð8 S ð€°Š¿ÿ$ˆð À@ ðà  > ð žðr ð8 S ð€PŒ¿ÿ$ˆð°Û� ðà > ð žðH ð8 ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿO©ÿÿÿÿf3¹Ób½™3™ˆ�Š•º___PPT10‹uë.ò³Ä à"z+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +îlï €OÐù'öOÐ â ðÚ ð Ðñðf ð( ð€ÿÿÿffÿ¹Ó ðÐðâðl ðÚ4‘# ðÐð<Ú‘#ð,$ñD,ðÔ ðÐ “ ð6…‡�ÿ‚€¿Àÿÿˆ"ñ¿ðÚP‘ðXˆPŠHº___PPT2001‹$‡DFÔðŠ ð Ð £ ð<€Ðî…‡¿�ƒ¿Àÿðý4‘#ðȈÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðFŸ¨from¡ª ðâðl ðÚŒ‘{  ðÐð”Ú‘{ ð,$ñD,ðÔ ð Ð “ ð6…‡�ÿ‚€¿Àÿÿˆ"ñ¿ðÚ¨‘h ðXˆPŠHº___PPT2001‹$‡DFÔðŠ ð Ð £ ð<€°ý…‡¿�ƒ¿Àÿð-Œ‘{ ðȈÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðFŸ¨rcpt¡ª ðfðl ðÚX ‘h  ðÐðX Ú‘h ð,$ñD,ðt ð Ð “ ð6…‡�ÿ‚€¿Àÿÿˆ"ñ¿ðÚX ‘h ðn ðÐ £ ð<€°…‡¿�ƒ¿Àÿðåì ‘Ó ðȈÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð*Ÿ¨bodyª ðr ðÐ S ð€¿ÿ$ð À@ ðà  > ð žðr ðÐ S ð€p„¿ÿ$ð­Ú�ðà > ð žðH ðÐ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆŠº___PPT10‹òë.Óq€"r+§�ª‡Dñº'ñ EÐÿÿÿÿ=ñ @Bñ Dñu'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ ¯ ±8¯ ±H¯±@¯ ±x     ¯±P+Dñ4'ñ =ñ%ñ(ñÿÿÿÿDñÜ'ñ =ñ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*Ðÿÿÿÿÿÿÿÿ%ñ(ñDñ4'ñ =ñ%ñ(ñÿÿÿÿDñÜ'ñ =ñ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*Ðÿÿÿÿÿÿÿÿ%ñ(ñDñ4'ñ =ñ%ñ(ñÿÿÿÿDñÜ'ñ =ñ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*Ðÿÿÿÿÿÿÿÿ%ñ(ñ+î#ï €OÐù'öOÐ ÌðÄðìð\ð( ð°A$  ðìðl ðì C ð€p™¿ÿ$ð À@ ðà  > ð žð� ðì £ ð<€›€�ÿ‚€„¿ÀÿÄÿ $ð°Û� ðà > ð žð ðì “ ð6€0ž�ƒ¿Àÿ ?ðP Óˆ˜ð,$ñ, ð~Ÿ¨What if body is large?¡:dÿþ ª ðH ðì ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆçŠßº___PPT10‹¿ë.ÓqhÇ+Â]%êDñO'ñ EÐÿÿÿÿ=ñ @Bñ Dñ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*ìÿÿÿÿÿÿÿÿ%ñ(ñ+8+0+ì +î÷ ï €OÐù'öOÐ  ð˜ ðð0ð( ð’.¦pè1 ððl ð C ð€€&¿ÿ$ð À@ ðà  > ð žð¼ ð £ ð<€0(€�ÿ‚€„¿ÀÿÄÿ $ðP Ú�(ð<$ñD<à Π ð žðÀ ð “ ð6€0�ƒ¿Àÿ ?ð¨Û�( ðhˆ`ŠPº___PPT10‹0±(Švº___PPT9‹X¬PŠ‚º___PPTMac11‹\T   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography  ð꟨pUse callback function that produces data; Returns one chunk each time called; Signals termination returning nil.¡LqZNEÿþ E ª qðH ð ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆçŠßº___PPT10‹¿ë.1Óq€ØÌþ+Ÿ—ÉYDñO'ñ EÐÿÿÿÿ=ñ @Bñ Dñ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*ÿÿÿÿÿÿÿÿ%ñ(ñ+8+0+ +î{ ï € OÐù'öOÐ $ð0ðð´ð( ð0B0A0B ððl ð C ð€Î¿ÿ$ð À@ ðà  > ð žð� ð £ ð<€�Ï€�ÿ‚€„¿ÀÿÄÿ $ð°Û�h ðà > ð žðp ð “ ð6€€Ø�ƒ¿Àÿ ?ð� ã˜hðh$ñ,ˆ4ŠHº___PPT10‹(± Šfº___PPT9‹H¬@Šnº___PPTMac11‹H@   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography  𚟨What if body is complicated?¡Bd` dÿþ` ª ðH ð ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆçŠßº___PPT10‹¿ë.3Óq€Fû+'ÇDñO'ñ EÐÿÿÿÿ=ñ @Bñ Dñ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*ÿÿÿÿÿÿÿÿ%ñ(ñ+8+0+ +î’9ï € OÐù'öOÐ .ð&@ð @ñð¦ð( ð ð ð  ð € “ ð6…‡�ÿ‚€¿Àÿÿˆ"ñ¿ðÐÚ‘�ð,$ñ@,ðø ð € “ ð6…‡�ÿ‚€¿Àÿÿˆ"ñ¿ðˆÚ‘ð„$ñ@,ˆPŠHº___PPT2001‹$‡@ FÔðù ð  ³ ðB€�Ù…‡¿�ƒ¿Àÿˆ"ñ¿ðÙ‘ÀðD$ñ,ˆŠ0º___PPT10‹±Š6º___PPT9‹¬ŠHº___PPT2001‹$‡FÔŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð-Ÿ¨headersª ðr ð  S ð€Õ¿ÿ$ˆð ÀÐ ðà  > ð žðš ð  ƒ ð0…‡�¿Àÿˆ"ñ¿ð€ X8 ð,$ñ@,ðì ð  s ð*…‡�¿Àÿ"ñ¿ðXÈð„$ñ@ ,ˆPŠHº___PPT2001‹$‡DFÔð  ð € “ ð6…‡�ÿ‚€¿Àÿÿˆ"ñ¿ð� Mm ð,$ñ@,ðš ð € ƒ ð0…‡�ÿ‚€¿Àÿÿ"ñ¿ð4 M ð,$ñ@,ðr ð  S ð€�ß¿ÿ$ˆð°Û�àðà > ð žð• ð  £ ð<€ è…‡¿�ƒ¿Àÿð‘ ¢x ðô$ñ,ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð-Ÿ¨headersª ð’ ð  £ ð<€°î…‡¿�ƒ¿Àÿð, r ðô$ñ,ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð*Ÿ¨bodyª ðä ð  £ ð<€@õ…‡¿�ƒ¿Àÿð…tXlðD$ñ ,ˆŠ0º___PPT10‹±Š6º___PPT9‹¬ŠHº___PPT2001‹$‡FÔŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð,Ÿ¨part 2ª ðâ ð  £ ð<€Ðû…‡¿�ƒ¿Àÿð å‘ô ðD$ñ,ˆŠ0º___PPT10‹±Š6º___PPT9‹¬ŠHº___PPT2001‹$‡FÔŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð*Ÿ¨bodyª ðä ð  £ ð<€`…‡¿�ƒ¿Àÿðe tXL ðD$ñ ,ˆŠ0º___PPT10‹±Š6º___PPT9‹¬ŠHº___PPT2001‹$‡ FÔŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ð,Ÿ¨part 1ª ðH ð  ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆô!Šì!º___PPT10‹Ì!ë.3Óq€FûøS Ó+îf™Dñd'ñ EÐÿÿÿÿ=ñ @Bñ Dñ'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +Dñò'ñ =ñ%ñ(ñÿÿÿÿDñš'ñ =ñ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñª 'ñ =ñ%ñ(ñÿÿÿÿDñR 'ñ =ñ%ñ(ñDñ�'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ�'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‚'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñª 'ñ =ñ%ñ(ñÿÿÿÿDñR 'ñ =ñ%ñ(ñDñ�'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ�'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñDñ‚'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñö'ñ =ñ1ñž:ñBñhidden*ño3ñ>ñ+Bñ#style.visibility<ñû* ÿÿÿÿÿÿÿÿ%ñ(ñ+0+0+  ++0+  ++0+  ++0+  ++0+  ++0+  ++0+  ++0+  ++0+  ++0+  +îÅï € OÐù'öOÐ ¸ð°Pð(ðHð( ð ð(ðr ð( S ð€ €¿ÿ$ˆð À@ ðà  > ð žð– ð( ³ ðB€P‚€�ÿ‚€„¿ÀÿÄÿ $ˆð°Û�€ðà > ð žðH ð( ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë.3Óq€Fû+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +î ï €OÐù'öOÐ ÿð÷`ð0ð�ð( ð ð0ðr ð0 S ð€@à ¿ÿ$ˆð À@ ðà  > ð žð– ð0 ³ ðB€pÅ €�ÿ‚€„¿ÀÿÄÿ $ˆð°Û�H ðà > ð žð? ð0 “ ð6€°Ï �ƒ¿Àÿ ?ð€ ãÀXðˆŠ@º___PPT10‹ ±ŠVº___PPT9‹8¬0ŠZº___PPTMac11‹4,   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography  ðÁŸ¨UTransform declaration into an LTN12 source; Pass source as body to sending function.¡0Vd-`(`ªU ðH ð0 ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë.3Óq€Fû+Dñ='ñ n°ÿÿÿÿ=ñ @Bñ +î•ï €OÐù'öOÐ ˆð€°ð„ðð( ð ð„ðl ð„ C ð€ � ¿ÿ$ð À ðà  > ð žðl ð„ C ð€0‘ ¿ÿ$ð°Û� ðà > ð žðH ð„ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. ßq€ê¾–+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +îcï €OÐù'öOÐ VðNpðPðæð( ð+R ðPðr ðP S ð€À² ¿ÿ$ð À@ ðà  > ð žð® ðP ó ðZ€Ð´ €�ÿ‚€ƒ„¿ÀÿÄÿ ?$ˆð°Û�X ðà > ð žð~ ðP “ ð6€À �ƒ¿Àÿ ?ðØ ãÀ°ð<ˆ4ŠHº___PPT10‹(± Šfº___PPT9‹H¬@Šnº___PPTMac11‹H@   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography  ðÔŸ¨ZWould like to send PDF; Binary data has to be encoded (Base64); Want to encode on-the-fly.¡>[d`(`` ªZ ðH ðP ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. ßqþª°+Dñ='ñ n°ÿÿÿÿ=ñ @Bñ +î¡ï €OÐù'öOÐ ”ðŒ€ðXð$ð( ð ðXðx ðX c ð$€ÀA ¿ÿ$ˆð À@ ðà  > ð žðl ðX C ð€PC ¿ÿ$ð°Û� ðà > ð žðH ðX ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. ßqþª°+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +î³ ï €OÐù'öOÐ ¦ðž�ð\ð6ð( ð ð\ðr ð\ S ð€0° ¿ÿ$ð À@ ðà  > ð žð„ ð\ £ ð<€`î �ÿ‚€ƒ¿Àÿÿ ?ð°Û�ð4ˆ,Šк___PPT10‹°±¨     Švº___PPT9‹X¬P     ŠÎº___PPTMac11‹¨  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ðÜŸ¨ô[2] = { headers = { ["content-type"] = 'application/pdf; name="roadmap.pdf"', ["content-disposition"] = 'attachment; filename ="roadmap.pdf"', ["content-description"] = 'Detailed world domination plan', ["content-transfer-encoding"] = 'BASE64' }, body = ltn12.source.chain( ltn12.source.file(io.open("/plans/roadmap.pdf", "r")), ltn12.filter.chain( mime.encode("base64"), mime.wrap("base64") ) ) }¡ŠdíFCC C9 c IcCccc) c $C$(c(,c,*0c04c4#8c8  ð žðå 𬠣 ð<€�y�ÿ‚€ƒ¿Àÿÿ ?ð Û�Hð$ñD,ˆèŠ8º___PPT10‹±ŠFº___PPT9‹(¬ ŠRº___PPTMac11‹,$ ôtnamdlCourier New&Monotype Typography  ðUŸ¨ùfunction ltn12.filter.cycle(low, ctx, extra) return function(chunk) local ret ret, ctx = low(ctx, chunk, extra) return ret end end function mime.normalize(marker) return ltn12.filter.cycle(mime.eol, 0, marker) end¡.úPùCC ª úðA 𬠓 ð6€Ä^�ƒ¿Àÿ ?ðˆÚ·H𠈊@º___PPT10‹ ±ŠVº___PPT9‹8¬0Šjº___PPTMac11‹D<   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography  𳟨MChunks can be broken arbitrarily; Filters have to keep context between calls;¡4Nd"`+``ªN ðH 𬠃 ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆçŠßº___PPT10‹¿ë. ßq€ê¾–+Ÿ—ÉYDñO'ñ EÐÿÿÿÿ=ñ @Bñ Dñ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*¬ÿÿÿÿÿÿÿÿ%ñ(ñ+8+0+¬ +î& ï €OÐù'öOÐ ÏðÇ€ð¼ð_ð( ð ð¼ðx ð¼ c ð$€0Iµ¿ÿ$ˆð À@ ðà  > ð žð§ ð¼ £ ð<€@Ê“�ÿ‚€ƒ¿Àÿÿ ?ð§Û�ð$ñD,ˆèŠ8º___PPT10‹±ŠFº___PPT9‹(¬ ŠRº___PPTMac11‹,$ ôtnamdlCourier New&Monotype Typography  🨻int eol(lua_State *L) { int ctx = luaL_checkint(L, 1); size_t isize = 0; const char *input = luaL_optlstring(L, 2, NULL, &isize); const char *last = input + isize; const char *marker = luaL_optstring(L, 3, CRLF); luaL_Buffer buffer; luaL_buffinit(L, &buffer); while (input < last) ctx = translate(*input++, ctx, marker, &buffer); luaL_pushresult(&buffer); lua_pushnumber(L, ctx); return 2; }¡.¼F»CC ª ¼ðH ð¼ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆçŠßº___PPT10‹¿ë. ßq€ê¾–+Ÿ—ÉYDñO'ñ EÐÿÿÿÿ=ñ @Bñ Dñ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*¼ÿÿÿÿÿÿÿÿ%ñ(ñ+8+0+¼ +î ï €OÐù'öOÐ ¼ð´`ð´ðLð( ð ð´ðx ð´ c ð$€ ÿ¿ÿ$ˆð À@ ðà  > ð žð” ð´ £ ð<€ +�ÿ‚€ƒ¿Àÿÿ ?ð§Û�ð$ñD,ˆèŠ8º___PPT10‹±ŠFº___PPT9‹(¬ ŠRº___PPTMac11‹,$ ôtnamdlCourier New&Monotype Typography  🨚#define candidate(c) (c == CR || c == LF) int translate(int c, int last, const char *mark, luaL_Buffer *buffer) { if (candidate(c)) { if (candidate(last)) { if (c == last) luaL_addstring(buffer, mark); return 0; } else { luaL_addstring(buffer, mark); return c; } } else { luaL_putchar(buffer, c); return 0; } }¡<*FqAšCC ª ›ðH ð´ ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆçŠßº___PPT10‹¿ë. ßq€ê¾–+Ÿ—ÉYDñO'ñ EÐÿÿÿÿ=ñ @Bñ Dñ 'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*´ÿÿÿÿÿÿÿÿ%ñ(ñ+8+0+´ +îV%ï €OÐù'öOÐ µð­Àð dñð±ð( ð ðdðx ðd c ð$€`þ ¿ÿ$ˆð À@ ðà  > ð žð’ ðd £ ð<€€ …‡�ÿ‚€¿Àÿÿˆ"ñ¿ðÐ  àðȈÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðHŸ¨socket¡ª ð¼ ðd £ ð<€p …‡�ÿ‚€¿Àÿÿˆ"ñ¿ðð @@ðô$ñ@,ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðFŸ¨mime¡ª ð¼ ðd £ ð<€Ð …‡�ÿ‚€¿Àÿÿˆ"ñ¿ð` @@p ðô$ñ@,ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðFŸ¨smtp¡ª ðº ðd £ ð<€ …‡�ÿ‚€¿Àÿÿˆ"ñ¿ðÐ@@àðô$ñ@,ˆÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðDŸ¨tp¡ª ð‘ ð d £ ð<€  …‡�ÿ‚€¿Àÿÿˆ"ñ¿ð` ``p ðȈÀŠ0º___PPT10‹±Š6º___PPT9‹¬ŠBº___PPTMac11‹   èhnamd` Arial&Monotype Typography  ðGŸ¨ltn12¡ª ðŒ ð d ƒ ð0…‡¿ÀÑÿðØ @Øð,$ñ@,ðŒ ð d ƒ ð0…‡¿ÀÑÿðà@ @ ` ð,$ñD ,ðŒ ðd€ ƒ ð0…‡¿ÀÑÿðp @ @ ð ð,$ñ@,ðŒ ðd@ ƒ ð0…‡¿ÀÑÿðh @`h ð,$ñ@ ,ð’B ðdÀ “ ð6…‡D¿ÀÑÿðà@`` ð,$ñD,ð’B ðd@ “ ð6…‡D¿ÀÑÿðp @`ð ð,$ñD,ðH ðd ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?Oð€ðdd dðdd dðdddð dddð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ1Š)º___PPT10‹ ë. ßq€ê¾–+,üfDñ)'ñ EÐÿÿÿÿ=ñ @Bñ Dñä'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñY'ñ =ñ%ñ(ñÿÿÿÿDñ'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* dÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñÍ'ñ =ñ%ñ(ñÿÿÿÿDñu'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñå'ñ =ñ%ñ(ñÿÿÿÿDñ�'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*dÿÿÿÿÿÿÿÿ%ñ(ñDñ„'ñ =ñ4@Bñ�Bñ Bñ°Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû* dÿÿÿÿÿÿÿÿ%ñ(ñ+¨+0+d ++0+d ++0+d +îðï €OÐù'öOÐ ðÐðxð¨ð( ð ðxðl ðx C ð€0d ¿ÿ$ð À@ ðà  > ð žðl ðx C ð€Àe ¿ÿ$ ¯±�     ¯±ø          ¯"±Xð°Û�°ðà > ð žðw ðx £ ð<€pq �ÿ‚€ƒ¿Àÿÿ ?ðàÛ�@ð $ñD,ˆlŠ º___PPT10‹€±x     Šº___PPT9‹ø¬ð     Šž º___PPTMac11‹x p  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ðcŸ¨áfunction metat.__index:greet(domain) local r, e = self.tp:check("2..") if not r then return nil, e end r, e = self.tp:command("HELO", domain) if not r then return nil, e end return self.tp:check("2..") end¡ âZ%CCc C CcCC C $c$ (c($,c,0c04c48C8ªRD  T ð  ðx “ ð6€Ð} �ƒ¿Àÿ ?ðpãÀ ð$ñ,ˆÜŠ8º___PPT10‹±ŠFº___PPT9‹(¬ ŠFº___PPTMac11‹    èhnamd` Arial&Monotype Typography  ð‹Ÿ¨-Tedious, error prone, virotic, not finalized.¡".d-`ª- ðH ðx ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆhŠ`º___PPT10‹@ë. ßq€ê¾–+Á{ Dñ˜'ñ EÐÿÿÿÿ=ñ @Bñ DñS'ñ ÿÿÿÿ=ñ @BñAñ?%ñ,(ñ <ñ +O%ñ,(ñ <ñ +DñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*xÿÿÿÿÿÿÿÿ%ñ(ñDñA'ñ =ñ%ñ(ñÿÿÿÿDñé'ñ =ñ%ñ(ñDñ‘'ñ =ñA@Bñ�Bñ Bñ°Bñ0Bñ%ñ(ñDñø'ñ =ñ1ñ :ñBñvisible*ño3ñ>ñ+Bñ#style.visibility<ñû*xÿÿÿÿÿÿÿÿ%ñ(ñ+p+0+x ++0+x +î•ï €OÐù'öOÐ ˆð€àðtðð( ð ðtðl ðt C ð€ð!¿ÿ$ð À@ ðà  > ð žðl ðt C ð€€#¿ÿ$ð°Û� ðà > ð žðH ðt ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. ßq€ê¾–+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +î, ï €OÐù'öOÐ  ð ð|ð¯ ð( ð ð|ðr ð| S ð€cû¿ÿ$ˆð À@ ðà  > ð žð‰  ð| £ ð<€0nû�ÿ‚€ƒ¿Àÿÿ ?ð­Û�- ð\ˆTŠxº___PPT10‹X±P Šƺ___PPT9‹¨¬  Šþº___PPTMac11‹ØÐ ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  𹟨£function metat.__index:greet(domain) self.try(self.tp:check("2..")) self.try(self.tp:command("HELO", domain)) return self.try(self.tp:check("2..")) end¡¸¤Z%CCc C Cc c)c c $C$ª:@ ; ðl ð| C ð€2ú¿ÿ$ðÀ Û� ðà > ð žðH ð| ƒ ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. ßq€ê¾–+Dñ='ñ ÿÍÿÿÿÿ=ñ @Bñ +î›ï €OÐù'öOÐ Žð† ð¤ðð( ð ð¤ðr ð¤ S ð€à=ø¿ÿ$ˆð À@ ðà  > ð žðl ð¤ C ð€ m8¿ÿ$ð°Û� ðà > ð žðH 𤠃 ð0�ƒ“ŽŸ‹”Þ½h¿ÿ ?ð ÿÿÿ€ÿÿÿffÿ¹Ób½™3™ˆ�Š•º___PPT10‹uë. ßq€ê¾–+Dñ='ñ ÿÌ�ÿÿÿÿ=ñ @Bñ +ðîñ nðf@ð°ðþð( ð@ ð°ðR ð° 3 ð¿ÿ¬ð°Ð ðà  >ðl ð° C ð€ ¼|¿ÿ¬ð° @ Ððà  > ð ŸðH ð° ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.ÜÐq€�Zðôñ  tðl°ðØðð( ð ðØðR ðØ 3 ð¿ÿ¬ð°Ð ðà  >ðr ðØ # ð €€…¹¬ð° @ Ððà  > 🪠ðH ðØ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.Óq€T6·ðôñ  tðlÐðÜðð( ð ðÜðR ðÜ 3 ð¿ÿ¬ð°Ð ðà  >ðr ðÜ # ð €@R»¬ð° @ Ððà  > 🪠ðH ðÜ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.Óq€T6·ðƒñ  ðûðàð“ð( ðÌåÿ p¹`¹ ðàðR ðà 3 ð¿ÿ¬ð°Ð ðà  >ð ðà C ð€p® ¿ÿ¬ð° @ ÐðXà  >ˆ@ŠPº___PPT10‹0±(Švº___PPT9‹X¬PŠbº___PPTMac11‹<4   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ðYŸ¨ñDavid, who lives in Melbourne, knows RFCs by experience, whereas I only read them. First FTP server written back in 89... My inbox has about 700 messages from him. He wrote all of them while being upside-down, which always strikes me as odd.¡:òS&+M ª òðH ðà ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.Óq€T6·ðóñ  sðkðäðð( ð )¹ )¹ ðäðR ðä 3 ð¿ÿ¬ð°Ð ðà  >ðq ðä C ð€à>I ¿ÿ¬ð° @ Ððà  >ˆøŠ@º___PPT10‹ ±ŠVº___PPT9‹8¬0ŠJº___PPTMac11‹$   èhnamd` Arial&Monotype Typography   🨽What is SMTP anyways. Text mode protocol. Send commands, read back replies. FTP also uses the same underlying command structure, and the implementation of the two modules share a subsystem.¡&¾5sª ¾ðH ðä ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.Óq€T6·ð* ñ ªð¢0ðüð:ð( ð ðüðR ðü 3 ð¿ÿ¬ð°Ð ðà  >ð¨ ðü C ð€0` ¿ÿ¬ð° @ Ðð”à  >ˆ|ŠXº___PPT10‹8±0Іº___PPT9‹h¬`Іº___PPTMac11‹`X   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ðÄŸ¨6Here is the simplest interface we can come up with. We can add some sugar, such as the multiple-recipient list, passed as a table. It works well for small, static messages. But what if the content is large. Messages with attachments can be several megabytes long. We don't want to load all that up into memory.¡H7ƒ*[ (`ª"( ðH ðü ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.Óq€Uö¢ðÞ ñ ^ ðV @ð ðîð( ð ð ðR ð  3 ð¿ÿ¬ð°Ð ðà  >ð\ ð  C ð€°#` ¿ÿ¬ð° @ Ððà  >ˆøŠ€º___PPT10‹`±X  ŠÖº___PPT9‹¸¬°  ŠŠº___PPTMac11‹d\   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ðüŸ¨ The idea we use in LuaSocket is to pass a function instead of a string. This function will be repeatedly called whenever the SMTP module needs data to send. The protocol to these so called "source" functions is formalized by LTN12. As an example, consider a source that produces the contents of a file. This is actually a factory: a function that creates and returns custom functions. Hail Lua, where functions are first class citizens. Here we are also taking advantage of Lua's lexical scoping to store the context between calls (file handle)¡~!HT!* ` GR3) $`$A((ª:½* ö AðH ð  ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.øÜqÍ,æðÚñ ZðRPððêð( ð ððR ð 3 ð¿ÿ¬ð°Ð ðà  >ðX ð C ð€0Y` ¿ÿ¬ð° @ ÐðHà  >ˆ0ŠPº___PPT10‹0±(Švº___PPT9‹X¬PŠRº___PPTMac11‹,$   èhnamd` Arial&Monotype Typography   ðÀŸ¨<Here is how we can use a file source with the SMTP module. Nothing is really loaded into memory until the module needs data to be sent. Even then, the source can control the granularity. But what if the message is complicated? We don't want our users to be forced to know all the details and write a file to be sent.¡>=;€.S ` ª"éS ðH ð ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.øÜqÍ,æðÒñ RðJ`ð$ðâð( ð ð$ðX ð$C ð¿ÿˆð°Ð ðà  >ðJ ð$S ð€�n` ¿ÿˆð° @ Ðð„à  >ˆlŠXº___PPT10‹8±0Іº___PPT9‹h¬`Švº___PPTMac11‹PH   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ðpŸ¨þHow complicated can it be? Here is an example of multipart message. <> We want to be able to describe a message like this, without creating it in memory. Roberto would never send me a message with an HTML file attached, but bear with me. ¡DÿDS Tª ÿðH ð$ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.øÜqÍ,æð,ñ ¬ð¤pð,ð<ð( ð ð,ðX ð,C ð¿ÿˆð°Ð ðà  >ð¤ ð,S ð€0”` ¿ÿˆð° @ Ðð,à  >ˆŠHº___PPT10‹(± Šfº___PPT9‹H¬@ŠNº___PPTMac11‹(    èhnamd` Arial&Monotype Typography   ð"Ÿ¨¤Good thing Lua was designed as a description language. Notice the ltn12 source doesn't load anything into memory. But how to send the message we have just declared?¡8¥)`m` ª"– ðH ð, ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.øÜqÍ,æð ñ Œð„€ð4ðð( ðœ� ð4ðX ð4C ð¿ÿˆð°Ð ðà  >ð„ ð4S ð€€µ` ¿ÿˆð° @ Ððà  > 🪠ðH ð4 ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.øÜqÍ,æð ñ Œð„ðð<ðð( ð¿ ð<ðX ð<C ð¿ÿˆð°Ð ðà  >ð„ ð<S ð€˜$ ¿ÿˆð° @ Ððà  > 🪠ðH ð< ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.ÜÐq€�ZðU ñ ÕðÍ�ðDðeð( ð’“ ðDðX ðDC ð¿ÿˆð°Ð ðà  >ðÍ ðDS ð€À²·¿ÿˆð° @ Ððpà  >ˆXŠ`º___PPT10‹@±8Š–º___PPT9‹x¬pŠJº___PPTMac11‹$œœ x  œœ x  œœ x     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   🨃We start with a few historical notes on LuaSocket Then we move on to our case study which is the SMTP support shipping with the newest versions. We will focus on little details of Lua that enables us to taylor a very elegant interface to sending e-mail messages. I realize my abstract mentioned more stuff. For some reason I had in mind it would be a longer talk, so I had to downsize.¡N„2_v r ª(\ðH ðD ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.ÜÐq€�Zðúñ zðrpðLð ð( ðœ@� ðLðX ðLC ð¿ÿˆð°Ð ðà  >ðr ðLS ð€`O~¿ÿˆð° @ Ððà  > ð ŸðH ðL ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.ÜÐq€�Zð9ñ ¹ð±ð€ðIð( ð ð€ðR ð€ 3 ð¿ÿ¬ð°Ð ðà  >ð· ð€ C ð€P,a ¿ÿ¬ð° @ ÐðHà  >ˆ0ŠPº___PPT10‹0±(Švº___PPT9‹X¬PŠRº___PPTMac11‹,$   èhnamd` Arial&Monotype Typography   🨛The solution LuaSocket adopts is given by LTN13. We use Lua's error reporting to implement an exception mechanism with two tiny helper function factories.¡>œ2_ ` ª"<_ ðH ð€ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.ßqI‹�ð.ñ" ®ð¦Ððˆð>ð( ð ðˆðR ðˆ 3 ð¿ÿ¬ð°Ð ðà  >ð¬ ðˆ C ð€ a ¿ÿ¬ð° @ Ððà  > ðLŸ¨&About 100 lines of nice, modular code.ª 'ðH ðˆ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë. ßq€…î¼ðOñ! ÏðÇðŒð_ð( ð ðŒðR ðŒ 3 ð¿ÿ¬ð°Ð ðà  >ðÍ ðŒ C ð€ 8a ¿ÿ¬ð° @ Ððà  > ðmŸ¨GAll SMTP code, with error checking fits in 100 lines of clean Lua code.ª HðH ðŒ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë. ßq€qOÞð‹ñ  ð�ð�ð›ð( ð ð�ðR ð� 3 ð¿ÿ¬ð°Ð ðà  >ð  ð� C ð€0Ì` ¿ÿ¬ð° @ Ððhà  >ˆPŠPº___PPT10‹0±(Švº___PPT9‹X¬PŠrº___PPTMac11‹LD   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ðQŸ¨éRoberto would actually send me a PDF; But PDF files are binary, and SMTP is text mode. Need to encode as BASE64 before sending. Want to do everything on the fly, with the same requirements: not allowed to load everything into memory.¡:ê&1)i ª êðH ð� ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºð.ñ ®ð¦ ð”ð>ð( ð ð”ðR ð” 3 ð¿ÿ¬ð°Ð ðà  >ð¬ ð” C ð€ðÙ` ¿ÿ¬ð° @ Ððà  > ðLŸ¨&Introducing LTN12 filters and chains. ª 'ðH ð” ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºðÃñ Cð;°ð˜ðÓð( ð{5°v ð˜ðR ð˜ 3 ð¿ÿ¬ð°Ð ðà  >ðA ð˜ C ð€0ç` ¿ÿ¬ð° @ Ððà  >ˆìŠ8º___PPT10‹±ŠFº___PPT9‹(¬ ŠVº___PPTMac11‹0(   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ðퟨ£Once again, nothing happens until this message is sent. And even then, things happen chunk by chunk. Filters are great to use, but how hard is it to write filters?¡¤e?ª ¤ðH 𘠃 ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºðv ñ öðîàðœð†ð( ð{5 ðœðR ðœ 3 ð¿ÿ¬ð°Ð ðà  >ðô ðœ C ð€Ða ¿ÿ¬ð° @ Ðð”à  >ˆ|ŠXº___PPT10‹8±0Іº___PPT9‹h¬`Іº___PPTMac11‹`X   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   🨞Two of the involved modules have no depencencies. Socket and LTN12. Socket implements the core comunications capabilities. LTN12 implements that technical note functionality. The tp module implements the command/response structure common to SMTP and FTP (and not by HTTP) The MIME module implements the encodings commonly used by SMTP The SMTP implements the message abstraction, and message sending functionality.¡DŸ2}a? Oª ŸðH 𜠃 ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºðxñ  øðððð ðˆð( ð ð ðR ð  3 ð¿ÿ¬ð°Ð ðà  >ðö ð  C ð€%a ¿ÿ¬ð° @ Ððhà  >ˆPŠPº___PPT10‹0±(Švº___PPT9‹X¬PŠrº___PPTMac11‹LD   èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography     èhnamd` Arial&Monotype Typography   ð>Ÿ¨ÖThis is the error convention has been adopted throughout LuaSocket and many other libraries. If a function succeeds, it returns whatever it is that it should return. If it fails, it returns nil, followed by an error message. I subscribe to this idea, but it can be challenging to implement code that conforms to it. The reason is that each function might perform many operations, and there can be several layers of functions. There would be a lot of code like the above.¡:×]ßn, ª ×ðH ð  ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºð ñ# Œð„0ð¨ðð( ð’“ ð¨ðX ð¨C ð¿ÿˆð°Ð ðà  >ð„ ð¨S ð€ÀìZ¿ÿˆð° @ Ððà  > 🪠ðH 𨠃 ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë. ßq€qOÞðÁñ$ Að9Pð°ðÑð( ðœ� ð°ðX ð°C ð¿ÿˆð°Ð ðà  >ð9 ð°S ð€0Ïè¿ÿˆð° @ Ððà  >ˆøŠ@º___PPT10‹ ±ŠVº___PPT9‹8¬0ŠJº___PPTMac11‹$   èhnamd` Arial&Monotype Typography   ðÓŸ¨LTN12 describes a series of tricks on how to implement these ideas. We see here the code for an end-of-line marker translator. ¡&€D:ª €ðH ð° ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºð|ñ% üðôpð¸ðŒð( ðœ� ð¸ðX ð¸C ð¿ÿˆð°Ð ðà  >ðô ð¸S ð€&ò¿ÿˆð° @ Ððà  > ðŽŸ¨hWe talked about lots of different modules, so lat zoom out a little and take a look at the dependencies.ª iðH 𸠃 ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºðXñ& ØðÐ�ðÀðhð( ð ðÀðX ðÀC ð¿ÿˆð°Ð ðà  >ðÐ ðÀS ð€Pá“¿ÿˆð° @ Ððà  > ðjŸ¨DLTN12 describes a series of tricks on how to implement these ideas. ª EðH ðÀ ƒ ð0�ƒ“Þ½h”ŽŸ‹¿ÿ ?ð ÿÿÿ€€€»àã33™™™™Ìˆ8Š0º___PPT10‹ë.…ßqGrºcxœ»p^ðÁÂ�RЀ3ÿÿœ lHbŒP  @ùÿÿAL ÿGÁ��øß@;b `BÏù¤&V”<�WqÌoó “Ž2þ#¤ŽD@´ý4CÙ~wló‡r ñæ Õú]ÿ ³í&B�€ º V#DFHŸNÊ8$šS& õ?ôL) Ì\²f,@wX”l’nt1 Þ”¢y4�.×­ ¶{Ê}'‡�žú¦£©>\íApº²/O2ò›)‰jŽ �Ià÷’ŠšÀœ‹¢ ¬JÀƒ?‰´^Ê�¶Aãf»Ùê½õ!éµÀVÙ°èçé(€àà€  òF/È 0ÒÕ|·DArialÃ0¯0w÷ ÿ¿ˆÓÿ¿°Ï Iÿ¿ˆÓÿ¿°Ï�@\P^‘\!·DTimesÃ0¯0w÷ ÿ¿ˆÓÿ¿°Ï Iÿ¿ˆÓÿ¿°Ï�@\P^‘\! ·DCourier New÷ ÿ¿ˆÓÿ¿°Ï Iÿ¿ˆÓÿ¿°Ï�@\P^‘\!0·DWingdingsw÷ ÿ¿ˆÓÿ¿°Ï Iÿ¿ˆÓÿ¿°Ï�@\P^‘\!@·D-ÿ3ÿ 0ÿ´0·0Ã0¯0w÷ ÿ¿ˆÓÿ¿°Ï Iÿ¿ˆÓÿ¿°Ï�@\P^‘\!€¤ €`ÿÿÿÿ¥ .  ¯±P ¯±@¯±°     ¯!±Pþÿ à…ŸòùOh«‘+'³Ù0T hp€˜¤ ¸Ä ä ð ü'Slide 1 Steve Overbyb})à Diego Nehab75àMicrosoft PowerPoint@ ®¾Lê@¼éÞ ÅÂ@€VMX�Å&G<þÿÿÿPICT4‡´ÿ ÿþHH‡´ ‡´šÿ‚Ї´HH  tØL‡´‡´�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ��õ�Щ7�ÿÍÿ­ 8GQVTI:(�Ù  >LTZXM>,�Ù  :DKPOG9(­C�ÿÍÿ¯1”}h`cfimmfT(�Ý8ƒ•ze`cgjonhV-�Ý8€ŠjXTX[^ba\M+¯O�ÿÍÿ±"s¥‹mf__j‡xrs{ƒi)�á)x¤†jd__j‡xqsx‚n0�á'r˜y^VSS^t}legktd/±U�ÿÍÿ²L¢¡y_aecgp|ƒ{v‚‘�—žW �ã S¤œt\`dcgnz‚ys~Žš–ž` �ãR™�eRTWU[amtlho~�ˆ‘^ ²X�ÿÍÿ²_±¬cfdgr}€yptwsz‹Ÿ ®u�äe¯¦{`ccgs{}vortquƒ›žª~�äa£˜jTYWYflmhbfhberŒ�ž{³\�ÿÍÿ³V»­™uhffy˜•vxtspkf{ž ³p�å^¹¦“odcdv“‘|uwspnicu˜�¯y�å^®™ƒaþWi„‚lfjhea\Ubˆ�¢w´a�ÿÍÿ´?ÆÁ£�~lkl|Šˆ�•�{vpjhh�˜–½Q�çGǺœŠzggiw…„Š“Šxsmife{“�»]�çFİ�ykZZ\iwv|…{lha\XVi„€°`´g�ÿÍÿµ£Äº¬¤–|ru|†•¢¦“€yspqty‘—£À �馿³¦ž�umqwƒ‘Ÿ¢‘}upmmotŒ“žÂ)�韵¨šŽ‚f]cjsƒ’–ƒnhd`^_c{…ŽÀ-µg�ÿÍÿµs·½¯Ž‰�w��†�Ÿ¯¶¡†||xw|~‡™•ÉŽ�éz³¸¨†ƒ‰p{‰�‹š¬³žƒyxtswx‚•‘Ù�év©­›vuycmxqzŒŸª“tjjfeggp…‚¹žµm�ÿÍÿ¶&¯³Ã–nj|vƒ‡��›ž¦¤�€‚�y„Š©™®Ë-�ë,¯®½�hevp|€|‰—˜¡ �}~~sz€†¥–¨Í8�ë,§£´XYgamoly‡Š””nnogknu—†™Ì=¶m�ÿÍÿ¶i¶®®�q�”Œ�z�—�…‘š’‚…—��”ž¯šŸ½t�ëo²©¨†l|�†zu†�Š��–Ž~�’Š��™¬˜šº�ël¨�›u]p€yldv€{r~‰€pr�x{ˆ ‰Š®€¶s�ÿÍÿ·—¦¨Ÿ •Œ‘”ˆ‰Ÿœˆ~{{ˆ–›šš›–©«™•«› �í ™¡¢˜šŽ‡ŒŽ‚‚—”…{xx„“—”“—‘¥§–�¦¢�í ‘“”ŠŠ~w€qr…ƒumjju†‰„€…€—œ‡–›·s�ÿÍÿ·$ª¦®±œ�Œ�ˆ‡“��›…||�§©ž‘ ±±¥“�¬)�í*© ¨«–‰‡‰‚ƒŒˆ‹–€x}xŒ¡¤™�𬭡‘—­2�í*ž’œŸ‡zwzrs{x{‡qjni|’”†yŠŸŸ“�…£2·s�ÿÍÿ·A±¡µº«£š|}}ƒŒ¦µœ”¡Œ{‡��|zŠª©’ŒµI�íF¬›°³¤ž“vww}†ž­—�œ†v‚‡|wt„£¤�‡²S�íE ‹¤¨—�ƒgfgmv� †~�xhqvjfer”–~t¥S·s�ÿÍÿ·^³£¸»¾Å¬|w��£µ¶¤œ¦‡t‚vioq~˜—•‰¼d�íd­ž²´¸¾£sqz…›­¯œ•¡ƒp}rdkjw“’‘„·o�íaŸ’©ª¯´”eajv‹¡ŸŒ…”wbndU\\fƒ€sªo·s�ÿÍÿ·t»®¸ÁÊϽœ‰©´³±´¶¹¶”‚‰|prr{…–�¢º_�íz´©³ºÂƳ“� ¬«¨¬®²±‘~„xknmt€�˜�¸i�ív¦ž§°º½¦ƒq’Ÿ››Ÿ ¥§ƒouj[^]co}‡Ž®g·s�ÿÍÿ·pǵºÊ×ÜÛλ¼¼ºµ»ÀÃÇ·£–Œwrqr‚“�¨«L�íwÁ°´ÃÎÓÐı±³¯¬²¹½Á²Ÿ‘‡qmmn}�—¤«V�ív¶¤©»ÈÎɺ¤¥¤¡ž¦®²¸§‘‚xa]]_l{…–ŸS·s�ÿÍÿ·dȽÇÓØÝçäÔÆ¾¿ºÄÇÁÀ¯–zvlje|•‡�¥Ÿ3�ímøÁÌÐÕßÜȼ³¶±»¿ºº«’ysifaw��— ž<�ímº­ºÇËÑßÚ¿¯¥©¤¯¶°° †mfYWRfp‡“’9·s�ÿÍÿ·IÈÁÌØ×ÜáÞØË¼ºÀÁ¹”p]]ei}Ÿ§ž¥›Ž!�íRļÆÑÍÔÙÒÍ¿±°··¹»´’p_\cgx™£™Ÿ—�)�íT¼²¾ÎÇÑØÎŲ ¢««­¯©‡fTQWYg‰“‹�‡&·s�ÿÍÿ·(ºÍÓÑÚÙÙÖÓÎÉ¿¿ÆËÎÀ€fbcb€œ¶¶¯£–| �í/ºÆËÊÑÑÐÌǾ´´½Äȼgaca|—±²ªž’€�í0²¿ÄÃÍÌËŽ¶±¥©²º¿²t]VWTm‡¥¦ž�„t·r�ÿÍÿ·™ÏÌÈÒÔÕÏËÃÄýÁÉų€e]\_pŒ©±¯¥—Z�ì ŸËÇÁËÌÊÆÀ¸º¸³¸Â¿¯e][^n†¤®ª –b�í šÄÀ¹Åﵫ¬ª¦¬·¶§tYRPQ`w–¡Ÿ”ˆZ·m�ÿÍÿ¶bËÁÁÉÉÄÆÄž¹ºÊε‘yqgZUh– ¦©¤Š0�ëlǼ»ÁÀ¼½¼º²¯±ÀƯŽvneZUe‘œ ¥¡Œ8�ël¿´²··°±°¬¢ ¢µ»£�j`WNHV‚�’˜•5¶m�ÿÍÿ¶¸ÂÀ¼½¹ÄÀÂÅÃÄʪ›¡œta^†±¤š›Œa�ë%¼¼ºµµ±º¸¹»¸¹Â¾§˜œ—s^[�ª¡—™‹g �ë&¹´²«©¤¯­­®«ª·´›Š�ŠfRPnœ”‰Š|] ¶g�ÿÍÿµfǹºº·º¿¹ÀÂŰ˜� ©œzpz›¤zw�‚)�érÄ´³²¯²¶±¶¹¼ª”�œ¥—vmu–¢zv�…0�ét½ª©§ ¨¬£©«¯�†�˜Ši_f…—pg}x-µf�ÿÍÿµ ”¸°´µ¶µ·´¸¸›…‡¡ž‚ru…›lX_‚I�蜴ª®®¯®¯¬¯°•�œ›�os�šnX^‚Q�é—©Ÿ¢¡¤¢¢Ÿ¡¢…or��scepŒaLPsKµa�ÿÍÿ´,š­®´¹·¶³³°¡—¢¤h^[„ˆ[MbY �ç5�§¨¯²°®ª«©™‘�¢h]Z€‡ZK__ �ç3•œ�£§¢¢�ŸšŠ‚�—rZQLnxN?QV ´[�ÿÍÿ³-™¦©²»µ°°­¥›š‘k]WW‚†xpU�å5›¡¢­¶¯©ª¦ —˜�j]XU�…unZ�å4’”–£ª¡œ�˜�†ˆ‚]QLJrwf`Q³U�ÿÍÿ²2‚˜›§¯¯³¸®•„�skdctkmF�ã:…•˜¢ª¨¬±ª’‚€phbbrknL�ã7z†‰•�œ ¦�ƒsqa[VTe_aE²R�ÿÍÿ²\€�” ´À­™Š}€Šyph[1�âb�Ž’�±½«–ˆ{}ˆvnh^5�âZs€‚‘©¶¡‰ymnyj`\R1±I�ÿÍÿ°"Ouƒ”¡ž”„xz{nY3�ß%Twƒ“ ž”†xy{n\8�ß"Ljw‡—“‡ylkodS2°<�ÿÍÿ® 7Thqng`VG,�Ú ;XluqidZM2�Û 6Pclg`ZRF-®+�ÿÍÿ«  �Õ �Õ «�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ­ �Ï �Ï £V�ÿÍÿÁ8ñ3ò™ùûÁ5ôTÿ øSM�8ñ3ò™ùûÁ5ôTÿ øSM�8ñ3ò™ùûÁ5ôTÿ øSMÀ^�ÿÍÿÁ;ÿ6ò>ÿ^2Ó±ôTÿ ø÷h�;ÿ6ò>ÿ^2Ó±ôTÿ ø÷h�;ÿXô>ÿm\ÝÁöTÿ8ú÷o¬�ÿÍÿÁ;ÿ6þ-äF£•XÕòÃ'ý›=!/xÞ×yQÀè›Tÿ«¼;¸Ý}ˆÿïN�;ÿ6þ-äF£•XÕòÃ'ý›=!/xÞ×yQÀè›Tÿ«¼;¸Ý}ˆÿïN�4;ÿj)äF£•XÕòÃ'ý±iGb8xÞ×yQÀè›TÿQµ¼;¸Ý}ˆÿñl ­�ÿÍÿÁ;ÿ6þ-ÿO·§hG(û^eÙÿëfQÿR9õTîs!¯.Tÿ°Ú͈è@ø{ �;ÿ6þ-ÿO·§hG(û^eÙÿëfQÿR9õTîs!¯.Tÿ°Ú͈è@ø{ �5;ÿl*ÿi¸¯$nQJû~mâÿíx Wÿ^[÷lîzA¿R\ÿÆÞ4,Ð�8ì\øŸT%í�ÿÍÿÁ;ÿ6þÿR¾§oÏÀøk'H*£ü‰ã½¥>ÿ$þ Tÿôä ÿÖÈÜx÷h�;ÿ6þÿR¾§oÏÀøk'H*£ü‰ã½¥>ÿ$þ Tÿôä ÿÖÈÜx÷h�6;ÿm*ÿ{-Àµ:yÓÉù’LQ'`¼ü7Žä95ǺZÿK6(4eÿ÷êJ=ÿÜÓá—!÷�Dí�ÿÍÿÁ3;ÿ[//&úsä§ÿ]úmEÿd(Ÿø WÿG-óW òwÑDTÿ%Ü�䀃2ôv�3;ÿ[//&úsä§ÿ]úmEÿd(Ÿø WÿG-óW òwÑDTÿ%Ü�䀃2ôv�5;ÿˆQ5&ú–<å·IÿnGûšlÿs=¬ùPhÿzIóy?óšEÓOZÿcç² ä�N l2ô—>ê�ÿÍÿÁ;ýÿ.ΙþÙħ¥õÒÛ�‰áÿìYŽõëŠ`Úø­Tÿ Nû-Xò÷üÿd�;ýÿ.ΙþÙħ¥õÒÛ�‰áÿìYŽõëŠ`Úø­Tÿ Nû-Xò÷üÿd�;ýÿ0Ð ›þáǹA­÷Ûß®8–çÿívP š÷î�?5lãù²)fÿPtüVaõùË<$¾ÿ†À�ÿÍÿ¹ ü ûüü ø þ�ø ü ûüü ø þ�6FOGD;9H>FB;G>L;.MDJ= 3FA?$DAAI#$B 'KCA@K* ÃD�ÿÍÿ���Øþ/     Ã�ÿÍÿ��‘�ÿÞÿú�ÿÍÿ����å7�ÿÍÿÃÿüÿùÿÿÿ�àÿüÿùÿÿÿ�àÿüÿùÿÿÿž:�ÿÍÿÃñÿúÿþÿóÿ�øñÿúÿþÿóÿ�øñÿ)úÿþÿóÿ¶ˆ�ÿÍÿÃÿüÿþÿÿÿÿÿÿýÿþÿýÿýÿÿÿ�øÿüÿþÿÿÿÿÿÿýÿþÿýÿýÿÿÿ�øÿ=üÿRþÿ?ÿÿ?ÿRÿÿYýÿ?þÿ,ýÿ?ýÿ?ÿÿ?¹n�ÿÍÿÃúÿþÿÿÿÿÿýÿþÿûÿúÿ�øúÿþÿÿÿÿÿýÿþÿûÿúÿ�øúÿ^þÿ\ÿHÿÿJÿ\ýÿ\þÿZûÿ\úÿZ¹<�ÿÍÿ���Ú?HV^þ_% B\_ B28THB\__.S^27AU^__ B\__KV^¹:�ÿÍÿ���Úý       þ  ¸�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����åC�ÿÍÿ¸ýÿöÿÿÿþÿüÿ�êýÿöÿÿÿþÿüÿ�êýÿöÿÿÿþÿüÿ³7�ÿÍÿ¸ÿöÿÿÿôÿ�ìÿöÿÿÿôÿ�ìÿöÿÿÿôÿµ^�ÿÍÿ¸ÿûÿÿÿÿÿûÿÿþÿÿ�ìÿûÿÿÿÿÿûÿÿþÿÿ�ìÿûÿÿÿÿÿûÿÿþÿÿµO�ÿÍÿ¸þÿüÿýÿÿüÿúÿ�ìþÿüÿýÿÿüÿúÿ�ìþÿüÿýÿÿüÿúÿµ�ÿÍÿ°þÿ�Ðþÿ�Ðþÿ¡�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����å�ÿÍÿ����åÿþÿ ÕÍÕœ.“—+,ù®00ˆ�¨´¼ÄÌ Ô Üä ìôü  ÎéýOn-screen Showú6Àë«F  ArialTimes Courier New Wingdingsï¼­ï¼³ PゴシックCustom DesignLuaSocket behind the scenes Short BioOutline of talkHistorical notesHistorical notesCurrent versionOutline of talkSMTP (RFC2821)Protocol abstractionLTN12 sourcesUsing sourcesMessage Format (RFC2822)Message abstractionOur message APIHow hard is it?Zoom in on attachmentsLTN12 filters and chainsZoom in on attachmentsCreating filters: high-levelCreating filters: low-levelCreating filters: low-levelSMTP dependenciesError checkingLTN13 exceptionsNo 'if' statements Conclusions  ¯#±0ŠÌ º___PPT9‹® ®¦ ¯¬P¯¬€¯ ¬pRÿÿÿÿÿÿÿÿ��d›Oφꪹ)耶;Ž6�ÅÙPicturesÿÿÿÿÿÿÿÿÃPowerPoint Document(ÿÿÿÿÿÿÿÿë«SummaryInformation(ÿÿÿÿË„�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÛÌÍÎÏÐÑÒÓÔÕÖרþÿÿÿÚãäáýÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿþÿÿÿþÿÿÿåæçèéêëìíîïðñòóôõö÷øùúûýýÿÿÿþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoprÊstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþquf  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeþÿÿÿghijklmnopqrstvÿwxyz{|}~€DocumentSummaryInformation8ÿÿÿÿÿÿÿÿÿÿÿÿ`Current UserÿÿÿÿÿÿÿÿÿÿÿÿAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Fonts UsedDesign Template Slide Titlesö#_À‘ãÇ« ô"DDiego NehabDiego Nehab¯ ¬�¯¬€¯ ¬     ¯¬  ¯¬      ¯¬ð          ¯"¬°  ¯¬  ¯¬€¯¬`     ¯!¬  ¯#¬`Šhº___PPT2001‹Dˆ<‰4XˆÓ€àŠè’º___PPTMac11‹Â’@f   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography Œ¯D   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯`   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯ <   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯ t   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯`   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯ Ä ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ô      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography ¯D ôtnamdlCourier New&Monotype Typography ¯Ð ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography ¯T ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography ¯"¼    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯$  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography  ôtnamdlCourier New&Monotype Typography ¯@   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯¸   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯!˜   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ¯#H   èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography    èhnamd` Arial&Monotype Typography ( £áÊš;ô&¹)Êš;ÈdÈd?Ù Ú%ð_3óŸ¨LuaSocket behind the scenes¡6 )  ª Ÿ¨ Diego Nehab¡ ª ó4Ÿ¨ Short Bioª Ÿ¨–Graduated from PUC in CS & E, 1999; Worked in Tecgraf 1995-2002; MSc in PL with Roberto, 2001; 3rd year PhD candidate at Princeton; Computer Graphics.¡D„A% ª —ó5Ÿ¨Outline of talkª Ÿ¨~A few historical notes Case study: SMTP support Protocol abstraction Message abstraction Implementation highlights Conclusions¡p0C   ª ó Ÿ¨Historical notesª Ÿ¨Ô1.0, 1999, 1.5k C, 200 man 1.1, 2000, 1.5k C, 1.3k Lua, 500 man added protocol support for HTTP, SMTP, FTP 1.2, 2001, 2k C, 1.3k Lua, 900 man buffered input and non-blocking I/O UDP support object oriented syntax¡N@+#G@+#G ª23KQó Ÿ¨Historical notesª Ÿ¨£1.3, 2001, 2.3k C, 1.6k Lua, 1.2k man streaming with callbacks added select function 1.4, 2001-2, 2.2k C, 2.2k Lua, 1.9k man LTN7 added URL module named parameters¡l&/('&/( ªo2ó Ÿ¨Current versionª Ÿ¨2.0, 2005, 4.6k C, 2.5k Lua, 4.7k man Extensible C architecture, split in modules LTN12 (sources, sinks and filters) MIME support (partial but honest) Multipart messages support LTN13 (finalized exceptions) Package proposal Improved non-blocking code, robust to signals...¡p&dìd&,#"  ª÷ó6Ÿ¨Outline of talkª Ÿ¨~A few historical notes Case study: SMTP support Protocol abstraction Message abstraction Implementation highlights Conclusions¡p0C ÿþ  ª ó Ÿ¨SMTP (RFC2821)¡D!!ÿþ  !ª Ÿ¨[lua:roberto] telnet mail.tecgraf.puc-rio.br 25 220 tecgraf.puc-rio.br ESMTP Sendmail 8.9.3/8.9.3 helo lua 250 tecgraf.puc-rio.br Hello lua, pleased to meet you mail from: 250 ... Sender ok rcpt to: 250 ... Recipient ok data 354 Enter mail, end with "." on a line by itself Subject: World domination: instructions. Commence stage two. . 250 RAA10452 Message accepted for delivery quit 221 tecgraf.puc-rio.br closing connection¡"ópnPZ02ÿþ 6  ÿþ$*ÿþ$/ÿþ  1$$ÿþ@((+,,ÿþ00)44ÿþ88ª,   "    ¼ó!Ÿ¨Protocol abstractionª Ÿ¨Ïstatus, error = smtp.send { from = "", rcpt = "", body = "Subject: World domination: instructions.\r\n\r\n" .. "Comence stage two." }¡Âd´P'Cc C c C6ccc C $$ª                 U ó&Ÿ¨ LTN12 sourcesª Ÿ¨³function ltn12.source.file(handle) return function() local chunk = handle:read(BLOCKSIZE) if not chunk then handle:close() end return chunk end end¡,#d‘F´Cª ´ó'Ÿ¨ Using sourcesª Ÿ¨©status, message = smtp.send { from = "", rcpt = "", body = ltn12.source.file(io.open("/mail/body", "r")) }¡’dŒP)Cc C c (CcCª                 ( ó,Ÿ¨Message Format (RFC2822)¡,!ÿþª Ÿ¨| From: Roberto Ierusalimschy To: Diego Nehab Subject: World domination: roadmap. Content-Type: multipart/mixed; boundary=part This message contains attachments --part Content-Type: text/plain Please see attached roadmap. --part Content-Type: text/html; name="roadmap.html" ... --part--¡0}P¼CC)C C CCCC  C  $C$!(C(,c,0C04C48C8Ÿ¨SMTP dependenciesª Ÿª óA Ÿ¨Error checkingª Ÿ¨DFunction return convention Return nil, followed by message on error;¡Bd*dA ª EóBŸ¨LTN13 exceptionsª Ÿ¨try = newtry(finalizer): factory; On success, try returns all arguments; On failure, throws the second argument; Calls finalizer before raising the exception. foo = protect(bar): factory; foo executes bar in a protected environment; Returns nil followed by any thrown error. ¡”"d}ddXdgÿþc` `  `eÿþ`.`  a $`$(g(ÿþ,c, 0`04e4ÿþ 8`8