From: =?windows-1250?Q?Ulo=9Eeno_v_aplikaci_Windows_Internet_Explorer_8?= Subject: gp's posterous - Home Date: Thu, 27 May 2010 22:45:31 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_01CAFDEE.4FD2CFA0" X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18416 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://gp-bc7f8.posterous.com/images/posterous-header.png iVBORw0KGgoAAAANSUhEUgAAAEsAAAAjCAYAAADc6ffdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAB1lJREFUeNrsWttPVEcY/wZRVkQQV62lgIUVFbxEWhs1vjRQoTZ4IWlq m5hU0xdM7ZPYp/4FCi/tA32qvLW1iVrRKlasBIja0tjGC66KUECxKEZEboL79ZvZs8vZc2bmnMPa pAmdhJw5Z+fym+/ym2++gSEiWMuBAweKDn2xuSH8xujPaMOoHtOeGU/dNyb5HR3q1rEi46nms6/B /jvTjDFZTjSOfrJt27ZvpCOZhcVIGPydnvn4V+WNWJCmwZkxITqAjhGuBbRtDJVQmRyDo6BlwnbA xGtLqgtIBm0RWZhLgm14xmC6F5UMEtRdUKJRkzWYtcMHZxKNokbD0eFVboES9zO3l42tWEPM9OjS fT0JyzShACgRmhkAomThaGqO8oVJOZBJ+M/oj1YOQ4mizH8RGEyuNBu/qkuiXivWBZktTcIjqNBU 5DtDU/OQBBwqnqB/R/NYqnENvFqDwngtS2XyzNuETGFcXrxKCYnJXRZ01OC9JIJrIetUIpOE1eqM b4h68KgbX/KOVt2jS3z4EoVlNmdmuBID+2Jj2mJse5sUzG5gcJyMg5TuqVuoyqqcY6uXQPBMQSVM o2mzttHCuRJ/Qxm5Mpeu5xTAOvg1U+3+L42z0IFsJJwWI0eMU7loUZpbrJINQ0ozce2GGuvRHnnM 1mPdNVHOJ1HX1Z0EmMYCmGLHtnJeaMpu6RCUMgUo5nCeY5q+KmtRzBcjKF1MhC7IGzWeyeIRlgQA YxJQCteL0awcfM2XlwG6BzTBK1NYG1MEsmjhRoWAEWEqfJAwNcpCB9e0Ck9+AhgaeQ79A2MWwSiE AE4hBVqEqwoXmML6nYWnibPsnasPNcOq3HnQ0TsEz4bHYTXVS0uWAqQmAdCi68/dgWvtT8S0xW9m QGFxjugXbO6EupYeUV883we7SvKg6rurAmztqVtQ9mQElm/KhmBLF7XrFksoivTvHoSa421QtjET vj/fAZUfroYrt/uh4fd7ov+aQDqUvBMASEuC6oPNsJ9+h+xU8VvVwSZqv0a8B1vCGPjYr3AMpXkA Wame+MuTZXH5PXw8ChXb86Hyo9UwPPoCjp0Iit+O1QXFOwe7r3wFXLrRB1ca7tJinwqQn9K3yt1r YWVOOtT8eBMqK94SAMs2ZcLydRnQ09oLv7U9FMLgY1zveAzdrffJ8obJAsfh1MUe2FmUKwTFx95X XiDaDo1MwNG6YHS5/QMjMZYn3kngXAn7yvNhv8AwH74+ftN1yDDl0GHLhkzSyFyhlfKSALTfHwTo GxLP8s2k4ew08OX5oWxDFlxue0Qa9wkvbL3VL0YoLA7A3o/XkjXOEu8LUn0ASYlQd7EbtqzPDFsF jcHnabzSKxbM+1fsWAFZ614lQT0kK8sWc/C2HMNdAwNT7ebGXK23HhkYcqCCY/BI8C5CBwthMtP2 uyhZfO0noKKteA+JevLsROGqkDqTLGUV1F/ugaraPww3DIjvk3yGZJXjUHvmDuDp29G5mBFOCEbI ShHtuJUlJyUY84AJwzPTmi2H6bRZwhM4hmrCEHbDpZMY4uYs1VZsDggNgH4BmAntwqI5oj5Mi5pD AoOxcUHipe/nQ+noBDQ3dBJfXYPKzzfZSP2Dt1+HrCVp4UnGQhDsGjDtbuFnSvJMGB6bAH8EjFBU GAOaQxdqEy1Uj2KgetM5wvAtx7DR5SHc1XGHWeoIp0k7nIf4X31TFyxO9wntBl6bC0fPEkfRAvuv 9sHJS/dgY8ECgNEQ1P50m/iHXOrpc0jxzSAhzorOMkwC5IspemMxNP75gNrTO3Ff/a890Nk7aEO1 Pt8PJ4m/+Byci46e7YBABtHCohShnK6/B4USm851cNsMd6LxDhOGngiGpBmQMnumyyyKK8sC6Za7 cJ6PdqegcAe+G+7auVJ8L9+6DOp/bieruS6MgS9+bXGu6L37vTw48ksnDJ3vFG64d/sy8Z3vZEcu dELZ8wniEWpLG0I19SfHo7HToXQr7Vh9IzFICo0xa0/fEe3WBObTbpgrMO55dykcPtNOO+UD2LBy oUDtJ7x8p9xDGH4gDM8MDBU7lrs4wDtcWBglHzs+u2EdoOpgC026DPyrFmoyCmgPCGOyC15OC94y mXGdNyM8mfNVAVXawrs/eknR2IH6BSmG5JOi7CYGTdkF3XWX7szmdCZ0G43rglCmWJdnNwyXMCHq Ds+oP1QrD7y6BegE7SQ05iIxwBQ7v6cI3ulCEz26hZUbLNlOprtQZS4Pz8yBhxRzoCzfNiXLYi7N XpfrUi2YTV5k2M5uTrcvkgM3Q825kqmFyNy5srurMKkGLcDRIkxEySLRxc2RLNUjSfmgJJWj5Ded 1brPPrggeJl2QxoDlOWMUJP2Ubmqw6bJwIWFSzISrvrFk4O35YK83FOhPuknc1llRkaX+nVKC5sV 4z09o4uzMviJCqZn4dnI+7I4SyUsHkwlG8/pVMb5Ccx4Ov8Xzf/FO8FzkU5MQ3lM6AhM5Ya8MuNf Ooz9lwsXxouIwKxu+I8AAwCazVhDAsuEygAAAABJRU5ErkJggg== ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://gp-bc7f8.posterous.com/images/favicon.png?1274974359 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 YAAAOpgAABdvkl/FRgAAAwBQTFRF/9hd/9RT/+aG/+mQgWMt/9xo/+R9ubm4/+Fz/Pz8gWMugWQw /+KKgWQx8vLy/+6qgWQvubm2//XK/+yk/+ui/+uZ/9x3/+iU7t2n/+R/zLqM/+ubiW48/9Rg9+vE /+J2/9JOu6d2u6Nq/++s/9xq+vr6/+WS/++w//C09vb2/+GQ/9htiWsz/+ym7tqX/+WO/+2m/+qc /+qV/9t0/9lw/9Za/81C//LE/9tz/+ia/+mW/+KGgWIs/9FT/957/+eX/+SM//XJ/+uh/+2j/+6v zLuS//Cw7tys/954/+ue/+GD/+yi/+CO//Cy/9tw7s50/99+/9BO/8xA/9BJubm3/9dr/+uY//K4 7u7u9fX1+fn5tbW1////XV1dXl5eX19fYGBgYWFhYmJiY2NjZGRkZWVlZmZmZ2dnaGhoaWlpampq a2trbGxsbW1tbm5ub29vcHBwcXFxcnJyc3NzdHR0dXV1dnZ2d3d3eHh4eXl5enp6e3t7fHx8fX19 fn5+f39/gICAgYGBgoKCg4ODhISEhYWFhoaGh4eHiIiIiYmJioqKi4uLjIyMjY2Njo6Oj4+PkJCQ kZGRkpKSk5OTlJSUlZWVlpaWl5eXmJiYmZmZmpqam5ubnJycnZ2dnp6en5+foKCgoaGhoqKio6Oj pKSkpaWlpqamp6enqKioqampqqqqq6urrKysra2trq6ur6+vsLCwsbGxsrKys7OztLS0tbW1tra2 t7e3uLi4ubm5urq6u7u7vLy8vb29vr6+v7+/wMDAwcHBwsLCw8PDxMTExcXFxsbGx8fHyMjIycnJ ysrKy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW19fX2NjY2dnZ2tra29vb3Nzc 3d3d3t7e39/f4ODg4eHh4uLi4+Pj5OTk5eXl5ubm5+fn6Ojo6enp6urq6+vr7Ozs7e3t7u7u7+/v 8PDw8fHx8vLy8/Pz9PT09fX19vb29/f3+Pj4+fn5+vr6+/v7/Pz8/f39/v7+////wlebGgAAAAp0 Uk5T////////////ALLMLM8AAAC7SURBVHjabM9XUgJBFAXQO3kuoQgKYgAkFFAqoGJWQMFAMEB3 qx9v//vgb6qgODs44AZQ1hAMXv4jWSEYvP9FvoRgkHKcXKrVHF86Tk0Imrlt7x4lk5VD294RgubC 98/jb6V4e9+fCkGzF4ajdOE13SmHD0LQPHvefezgNjase10haGZAw3Xd6gR4FIJmYFmJp4/E97Vl LYRgpqf13dnPsdZa54Vg5lSpZbF/o5RSV0LQfP5GTmRbbsNqANc1LdNgt9uJAAAAAElFTkSuQmCC ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://gp-bc7f8.posterous.com/images/loading.gif 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 YwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA== ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://gp-bc7f8.posterous.com/images/feed-icon-14x14.png iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJDSURBVHjajJJNSBRhGMd/887MzrQxRSLb FuYhoUhEKsMo8paHUKFLdBDrUIdunvq4RdClOq8Hb0FBSAVCUhFR1CGD/MrIJYqs1kLUXd382N35 6plZFOrUO/MMz/vO83+e93n+f+1zF+kQBoOQNLBJg0CTj7z/rvWjGbEOIwKp9O7WkhtQc/wMWrlI kP8Kc1lMS8eyFHpkpo5SgWCCVO7Z5JARhuz1Qg29fh87u6/9VWL1/SPc4Qy6n8c0FehiXin6dcCQ aylDMhqGz8ydS2hKkmxNkWxowWnuBLHK6G2C8X6UJkBlxUmNqLYyNbzF74QLDrgFgh9LLE0NsPKx jW1Hz2EdPIubsOFdH2HgbwAlC4S19dT13o+3pS+vcSfvUcq9YnbwA6muW9hNpym/FWBxfh0CZkKG kPBZeJFhcWQAu6EN52QGZ/8prEKW+cdXq0039UiLXhUYzdjebOJQQI30UXp6mZn+Dtam32Afu0iy rgUvN0r+ZQbr8HncSpUVJfwRhBWC0hyGV8CxXBL5SWYf9sYBidYLIG2V87/ifVjTWAX6AlxeK2C0 X8e58hOr/Qa2XJ3iLMWxB1h72tHs7bgryzHAN2o2gJorTrLxRHVazd0o4TXiyV2Yjs90uzauGvvp pmqcLjwmbZ3V7BO2HOrBnbgrQRqWUgTZ5+Snx4WeKfzCCrmb3axODKNH+vvUyWjqyK4DiKQ0eXSp FsgVvLJQWpH+xSpr4otg/HI0TR/t97cxTUS+QxIMRTLi/9ZYJPI/AgwAoc3W7ZrqR2IAAAAASUVO RK5CYII= ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://weblog.greenpeace.org/climate/save%20the%20climate%20now-thumb.JPG /9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAAAAAAAAAAAD/2wBDAAEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/ 2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQH/wAARCAGQAlgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAACQQFBgcI CgABAwsC/8QAexAAAAQCBQYGDAgICAkHCAITAQQFBgcRAAMIFSECFBYxQVETJSY2YXEJEhckNUVG VoGRofAjJzRVZrHB4SI3REdldtHxGDNUV2d1hpYyQ1NkdIWUprYoQlJjlaLGCmJ3goSl1uYZOEhY csXS9mi1eIeSpKeywsfX4uT/xAAdAQACAgMBAQEAAAAAAAAAAAAEBQAGAQMHAggJ/8QATBEAAQIE AwQGBwQHBwQBBAMAAQIRAAQhMQMFQQYSUWEUInGBkaEHFTKxwdHwEyRC4Qg0UnKS0vEWI2KCssLi JTVEohgXJzNDNlTy/9oADAMBAAIRAxEAPwAT9STHhtX5Gl/kX2ev3HB/qSdfvLbR+R+gfu3dNPvw FTXb+80vo+3/AJo49ewcKPFTXVGIbZ6/R9cume+cwl9IRy+E/AnqmqEKjNQ1fkaNtEfvlqxo8VNd X8FLvbd8jRsN8tsh3Bqooqa4vXahlhq1dOzDV6aKOBqK7+PD31/XP3wEmXv3/FMSE9TXS/k238jR t+31S39EsaKKlS4Cq4CZbZ+R++zb9WM/VNTUYjtnq9H1y6J75SCaj4L37Wm+JCfPDGqoqC3+x4+4 SDVLrxwUVNce1d7bfyNG9Hpnq6KfKn+ODrH66ONRt9P2UkSP3zsxvLf7JRTeRj/IFf8AYwp6nuCq d3sH9lJA8evKu/zf/ZAp9zwx/kCn+yU+cNwXp6PfXLp1ev3D9Hs++kiR6uUq/gv/APjRgH17RD0e nXT1Scr5fk3Xme7b6dQjvomOfxQdQ/WNPwqNvp+ykiQ4cOY3Ff8AYw/bRRnlfXS4fNsMJZnq9erY G7CiejhU8Bh6PX+7/CpIkJ86r/cmjU/fOzG8t/slFP8AG+8pS9e/p1+r1dU/BejqwCXpl7R10kSP cOY3Ff8AYw/bT2/h82w/zMB9G7p1fVRvrvgunV7fV9lE+eV9UIavq9oT9evWFIaXp2098SJDw9T/ AJt/sQf/AIVEtcc/6gts/I0bp95h1UaLz/8AN9/VT1cpf9Run9mH2T3DvpIkL88Mfycf9iRf2UQH K6v/AM26szRtYa57Ng9HVKns86f+7RPXV3C+/wBfTKWyhESG+u4ev2Fp/wChy2SAA9xlRPw1fU4d 7ekn0apB+8ZdGKiieu+GrZYS1hKftx+6WONDJbT6/agePw4Yx/0Q/wBjRaJ5GNxb/Y0X9lP3oo4f o9n30MccR9f1HjEhu4A/uLf7GjU/18PvLf7Hk/tov4fo9n309w/R7PvoPEhu4Y9vLf7H91PcMe3l v9j+6jjw/R7Pvp7+N95Sl69/Tr9REDw3cMe3lv8AY/up/rhq7/Llv9kGjvwHT7fuon4Dp9v3Ujji Pr+o8Ymra/0+YhPUnPq/kSNLEft169k9tPvDGP8Aoh/saLRfwHT7fup7gOn2/dTx0ocB5/KJDfw9 d/kC/wDsQUcKk59X8iRpYj9uvXsntp7gOn2/dRRwPBenp99cunV6xuk8/r+GCI+8MY/6If7Gi0X1 NdXj/Jd/yPCf3benfRvooqa7932ftD0hQfpPP6/hiRKCdd0lv9jx1Y/XMPso8VP+XkVnPDvPDGWz GYYenAaVvXV1fwpfZ6Pbj9uHpwo8E1Lgcfcd3pnux3jOgcERYFTU/wCjAGH5GjemQ4ejft1BOQVN dL+TbfyNG37fVLf0SxpW9Sp8DPWPowwn09WPWOvGkwJrFRh6cOv78OnZTRMX7/iqCIlHD124r/sa J+2iiprq/X3t0BmaNtDVu1+sdU9jfUqVR07Q+0dnq39FHCprqjht0/Z68fqGi6JDhU1PDfyYNeom jbOr39VPZnX/AOb/AOwo37aKKjb6fso8E9n/AK1B4I6Ly8v+MM/AmNxX/Ykj9lHepOnqn+TZPSJN GD1++3ZSQkyfv654+v2DKjhdvDYap7OvGezfql6MaK+k8/r+GCejnn5/ywz1KxX/AOQLS/0NG/bI OnHEdoylRwqa7/qC0sMczRgnvxxx1bMfqUXbwOGuWzqxnt3apejCiipJ+/14/UPo6KD9J5/X8Mb4 T8DX138m/wBjRpjr6un31KKmpPVMvk3+xo2von+0OqQ4PBMn7+uePr9gyo8VNT+/7f2j6ApOk8/r +GCIj/f3+Pzbf8jRvZsH69nUnrideP8AJujvNGngO7047t9JxU1NRiO2er0fXLonvlIJuFSTqP8A Iavcdfonj1DQbpR4Hy+UbOjcvr+KK3CpPVP8QJYP/Y/Rq1j6p49Y0UVNcfn8PmvR3mjbPsn6fXKl gXPUcNr/AH9tKfvswp6vQdodY+3f6AD2baTpR4Hy+UTo3L6/iiD8PXbiv+xon7aN/DH6r+IzaUpB 3mjdXVs9M/TSwK9B2h1j7d/oAPZtoz1yRrHgNw/ZSdKPA+XyidG5fX8UMGeV3+QKf7IjUTXkfw4C oLCP+how9Hpw9OFJBcXvL7qJ7tr6np39e7brkP7aa3TZw/Bxbjd/KPDHgfD64jxj1SpKv+bz/wBE RpgIape0Z+jZRRUqR6u11BYZbczRpjjj9uPsooqan/qN0wn68Z9W3dOiiprv3fZ+0PSFMxiFFScP SH5NLdmaNPHo9Ht9f73if/zb/Ykb/wDBp+FTXF67UMsNWrp2YavTT1ccqJ7dmE/SG3WGPWA+ig8M I/e8q7/Nv9jRv/wqffh66t4fgC238jRvWI+89k8KN9ScqJ7duE/SO3WOHUAeijhUqe2Xo9eH26uv ZSRI/fhD/wDkS3+xI1Pwzw7/ANEv/sSN+2nqlS+F6vaPp3ato09XHPf6sPrD09NJBEN9ccPS/Jpb szRp4bw9Ps9TfXHD3+a7B+R7ph7d2G8aSCu+F6NXs9f20b+A6fb91JEiPzPVOvNv9jRvb+3WG/EK N9dU1/8Aj82/2NG9s+vZvGdJh8F79rRPXCXrsRL79n1e+reA0H6Vz8/+USIfU1NfnRf5NqEfkaN6 BH2en0U9SYcDUBWl8NWr06+n69WNPUnSufn/AMokCX4H4UN/Fe3Hb6PffRRRAc/jQ60r6gomqTnv 9eH1B6emnUejnn5/yxR4ePhfftqKKM/D9Hs++jhw3C+jo99U+jX6iAKgClQBy74kOHD9Hs++jhU1 3wXo6sAn6Ze0dVFDVajjey8nNVnIaktuBUOZkTSUkn6tXXMdXVjgRhk9jTf6yQ48XM1UPyxJbxPi xB334+HByYx17RwokzjO8pyIhOZZiCSAQlJqHa4SSW8KVEEy+WTk2R0UEOauCKOGBeleB08YG/w/ R7PvooqNvp+yhKHV2M2JqOVMV6HXmlswV/JEk4iuRTIS23G3x0nx6d22g93gyVxkKl1OMjmxjHMz c/l4e85hPVj1j5NtJkOeEiWzEg3CVlquKMQDV2HImxZsZhls5loeaClOBUV0DW1JJHKGeijhv+v9 /wD9ijfwHT7fup7M+j/vUsVB8OY417oSCZ3rAHsc6tw40hRX7PR9tPU9RPX7PR9tJBcerjlfjqnh h7Q2ykPskPVRRU137vs/aHpCifgOn2/dT3AdPt+6hF4E6UOA8/lCjhanf7R/bRRUnOG6PV7+40Z6 6p9x9Or6wGW8BDbT1Rt9P2UM6O/1/wAonShwHn8okGedP/doovH4L39WuWr2bZUZ6J67/Lz98On3 wkO2gysBKElaiAkByomgAq7hUZTMFSglIDkgD2rk00hwrTusK+v9ftCU/SP76erqmvqfh6+oM5vL 5ZmYgI65ftlPCh0LENiFuM9hpEYoxIZZSfDoJ5620lWJipJjDS8RQguPWMRHZ0j19NsHHJZQfhrM RZy240c15bpKys8fJeKDfSEhy5QNzHlu1h5lvTkNs5Zcwzn0iS0nNiVlcv8AWgSplLtugKAelOJd i3bWLnKbLzM1KvNKCbKTWrHdPfUsRx0rTnPp6m6LYFlHuP1qfE2HI6SQfdBwQzspxkLTVP04Pm7s H66YP4fo9n30veR5nKZ/KiZlQErABUmjhmcNyPbY84qmZS05KTQlSHSKPVmG7r+cKKKKN+edP/dp 7h+j2ffR70bl9fxRphRwHT7fup7gOn2/dRPw/R7Pvooqa7932ftD0hTZEj2Z9H/eonzPo/71HDhu F9HR76p9Gv1eoB1ufny/Ly5RIb+Crt3sD9lPcB0+37qOFPU2CYcgPcgW4/5RA8N/AdPt+6iipqf3 /b+0fQFFFTwGHo9f7v8ACoo4H/B4D6uqQ6/fAZ08TU2mRG+s7qBVW8WpR607uJ4akAFdE1JoGreg tzIiyIPwUf8AHJ26HMFKLKShmYrRw2cOAmpiCl/Pa5+zDZ6JBGazrE2A5pOqIjId2l17wOrlCazd h+Xv+8Z0LR2MBqojPs5xIju6s2TU50ORV42N8WiQYbF/TmsG7pHfm/DfhSyFKJCHGwq6YRx+Q9LY Tr5xUWkc3IE18wlVblv5BWkIJeboaUAEv75MPmbx+f8ASKpO0G7LVypBCVHiRug18T5vxueX7Kyp yl1EjNVBw5L7tLaPwHnHPPwHT7fup7gOn2/dTWFpayi+LOqoXVc+02hOvHOR8TUmYJigGIISKuDh o+4tvRrlqplenTpPMpTN5RE1JF1MkkAgkvuh2F73486ClzMquTmujTYLA0VUCjGp7TWtS/Au38B0 +37qeo4fxvvKUvXv6dfqT8B0+37qHiwfgIzaE9PUeKknX4ap44+wdkpD7Jemnrtrv8h9X7aaIkM9 PUeLirt3tD9tE9cm19T/AB9RrxDZ9c/ccKERIT8N8D/Ee3/zdXvs2zo8VJz3+vD6g9PTRPUk/guj 39Y7xnh0Sp6pJ1+GqeOPsHZKQ+yXpoPHn73pvf8AtDxUqe2Xo9eH26uvZSQVKxs998v24bp76Q/g q7d7A/ZRQFTXgUMHqioMmS5TCW0Nk+mUsA3aqDzM1JSUsZqcUkKDBnANwe2uvyIgmVRN4hCWcHdF ATcgHQ8Tyvo0XhCu6ntFWG8OVVVMppeIzwS2xnRPBTIX7768cRwDVS4bQkJHjZ7e9yLhFSMthUDk G7DZMbsdqX491anF+wN1MLQgcleTtI2d1zhwLFysbIXBr3PRA/cEh6NlOqi0VoacPqEK383CztZD oJpmeN5WOXamH1T56Q1yfJ+Ig3GOhHVhOnHpjbMnaAAAnK3qAGYkhw40s4460EX6WyfekxLgEqoo GjuWOg4tyoOcc85N4VGPr9I/v3Y7dY0lBN4VEpcP7jgHUPuNH+07ZLdUDarT9jn1J/QPNHMyJuzM +UzDVJAOhcVULyfcWsNKcWX0gOrIFQsV9UOFf65y3ej1dOA406JKS8jm0qJqUUN5nICg+j0vY98V OZE3JzbTdEBgNWFAOHZ5trGwCbkIV2r0aw3y9OOIa9o0cbxL7xpk4m5K+p/x88cNWPq1j6dmO6kg JuSv/wAvuwH1bfV9e2nv1aW4fxeFox0nn5/8o1BfFTu+uiipWKjHfjh1/unh9g0ztUr1f/l+jVtx 2dHVtmMqPNS5K+X8frlhr1bPtl66LfVv+HygoTBcX8/mfdGh6lSqK7UMvb77+rqxkNSc9/rw+oPT 00zumuXXw/X7j7Meme6koJur/r94SH0hPEPQHsoP6t/w+UMRNBhWvjw5HjxNxF0VNd+77P2h6Qo4 Z50/92lX1LqqJz1asB17cJdI/tpICa9Ud7/D69s9ez6t891B+il26z8KP4QT0nn9fwxOKk57/Xh9 Qenpooqa4vXahlhq1dOzDV6aRcDhGv115bENnv0fuGmT42RsP98NVgAZzg0GZLDh3z8SoYS/ZRXM zPRKTTBVAO8UBZjw+bWJldez4mIfFq2keYcRi5Fqscs7YfoKxmTk78u1TdqX49BDnzfw1bp4bqFA Xme1TjDh/GKHKqZW4XxQR0tabasbDEh+hVz69+uVA3w9Yd5EDC4eqBMl1Q3cshSLzUz6ptRZeUDj dnmsI8tPoZOhgOxjq6UvQ0tEWUFWoTlsvCVyaaMJvG1jSTMGI+sFxFFc1aRNNxoa5zT5lvSQaqUr HzKblpsTQ9hRAbQpLdoZq2I10eGPRk8E+A/l5DwiD1yb/wBfun9mP2y3Bvoz1ybUdOwfsDb69/RS 8H5D2vQqowuNyvMqTXxJGwOeE0HWPHmGvHnTgAYz6aX4avqdWI+4z6d0tvTKl0yyaE4AaCg1F2Bq K9784XTEtbS3nan5VqwdnZ65M2T9Pqx+zX1baJ7m4XCc/ZOfvqkGuWE6KK45X8Lh0zlvH36dWFPX lwNTw+Msd/1B+/0UJjVEXrk09UmpYa8cJCO7Do6NXVRPXcPUy6905Snvnj1a92qkwqFIucHh8ZT3 Dh7ht1enUnrq4jwvw/Tt2dX24jh6KSJEPrjlfjqnhh7Q2ykPskPVRPU1x+u/zbbrx9OM9v7d9JPX gRrqr7PRPHAZylOevAaIOGqKnXiHuM+ndLb0yoREiP3xX51wGEvv3+yjxXKVfUiPD9XV6g2ej7aR euJVGdZ9Uftl16gxlr6JbcV6lU96jhKWvZ6/RuxDVjKmgB721PKj074kPN8e8v8A/WmeItWlkqHp ow224lC5HgUwOFM84sQdfhwPOOev0+he9n5o4lmCJIM6cBon3nLUQ231rmOHTr9dMbtVnnl6tMqu Y8XcZniZs3xbn6oPjkVz3DXRHnOP0fdEpU0c0Jej9hrZvEQdLS31r8e3h5NeEJbaRGudqehx3bmj aAqHedjT8Q4+GlxDl7PT1+oznGElKRYyhLiV3v8AIjnE4XmQVPmVDQ5YRE/otHkWyxk+efk5+pXf t5w6nxPEHhyEE9HHLy/linzqaerTX3BuEZerXrGWHUn4Hgf8Rr9+mc/spZGZ/C9PFe3D68PfHGVF AptRXf4iWv0Bu2znP32fQ3SFChd9b+XWtHONW14a6fMRV9H9toK45FlHbiElGVJXXjiWio5MpKZ9 UXZT+6WHspKalt16wfLkUogaNKBrvIoUKfl6oOHtDX6wwoaDsb9lci2zTgjs6iN9qDXvRsM8oU4y TCKoOC6tIWrmnzX0p/cCLO9o5PI5VUwFPiEME0PWJAs5L1584Y5ZlszMzYUptwM+gAofHRoviA8A YV2LINrDxiMuFizgBHS1qMD3KBxmgpa6PgVC1cndI+qe/aOT4qWo3+/F5QbhHOWk3kAmqHjkPGmT RnIpn2tx/KNDH1ti0BDt2twB7t0Lf7daqKLXUfjz8iWjtVuOos22+l3odgPEJWOIylCCNN+yQX3D GKnkwPKMBa8vIuUtumlMbVOY1JBQL3U7Wk34cuTPXI0ik+6/Y7fmvTSFetzuCDIuPyW/ZppTiy5a azeaOazjqSXIBYjdJDOCG8rnizXTFxhKbiZQB+qksGB9kG1i+lfCNAs6ISqybvPVC4Gi4o6WtE1Y o5NJUxBa/gFCWtOZcoIM62uEUsHpBfmNHrkJTZ7kTYV2tEEwz4t5s04kGifE8Tcz8aXJxED4wDAM OVOO/lkw6DgTTiqTWS5HgC2lBq9HoTKMgOTES0v+eizn5MaRbY3QE5lvTlPPVSTtVeuEqnqzcryy kzzSPfRMo3iaypBdaEHHr0hWh853BDxpuPnvATnpZjenLlhcg6ZxsvVIlM5IliCCwcVDG1AztzLx Pt0YgErOspJDb16Fia9hAHPhGQIwQlfECIguCFcRkoymOBBOd5hPixeSvES2h+cDd1hjrpX/AA/R 7PvoeBHNwytRQ1LwrjSRzku1yaWeZ8TW8cRlJ8w0v3wCtMdcnygh27P7lvSfka/ORbMFBaEs9v8A s3uguhvGoLKSAvTOsOITe5jP1LHahruP91gHqEcKdV2U2sks5QmSnVBGZpSAAolILADjd2L6vFMz LIzl80ZuUTvZYRw3usydGdweFnq7Rnav2ej7aep++FdXdA+nV9nrDDaFPtL/AKPpx043taK64f4V 5U8xCeiipqf3/b+0fQFPU9SQPCiuJ+/1Y/WPo6KN/AdPt+6jhU137vs/aHpCiipJ15ytLkSFSZMm DXeRMqU/L/Zu+qmwzQSN9RZAuo0DCprutbnHpCVYikpQCoqUAGrUlhbnDPwHT7fuptix/ZvPROtI sdjvEhxOgk+6dEhvfMLX8RIq50OxxAh+ueyVLYhXAFKgm1zEW4qEU0y+EtGvpttM54MaP6bXNXKL X+yQY7Q7Ga2yLVgPFi1FEZVMljEZXiqLRx2GwxT2GxcA1fSO/HR1+qnJdtNulEeqsqdldUqrV2BZ TcuJ4cxdsk2cEtMmczMgjdBSLkOPxBqas/CsSC3XGDgTbfhIlXJm7pHvso4eLWNEvauwXXHw3w+L +IngR0Mh06+bGsMAHumuT4VQXc+Uixgq5EsksnHYcRm25kJ+YIOhccNkP4zeSzIj3gy40cxo9apg zxCcjjfkUIgHlVuFi0UH4cz1+QQcSxecM7Q7XnxE9IVrn84ejvMgGnOfkFrBl0h5NYI1JBPdSU6j Oj5XkWTia7Ee8lNhpf8A9r7bEQ8e6BDuYciHT0D+pdKTl2X70vvKLqNSfxF2f4d7MOFhx5rdIYkA KTTRgaOHAJalvyIBCyKlQJ8w1VyoKmUdzm1RsORkOtHu1MPqly8eIq4h/m/iJo5jot5aMvzyYctD cj2lrDdeg1ShE2ABFSW2OUHPXJDEOMnKw9eKH5wN37PPJhjSLVyjmdUoVHfLSPs1H5SJLhOLLlGG jXwXkK/Vxv8A44LKu1jxSafx0QXnPVQpMH3sermu13UqkVtpF1RHz0mbVlhGcikQwuG+r7b4aMRA h27HHzHilr4/5eaGvwOWUlc8mtls0Alir7MkbwrugHdJ8jY8HLPHuZlZTNUuB1wkDeo77tSXq3Ht HKOb/gaiuquHqK+Zf1a/2hvDCnuA6fb91DcWnbDaVFQ0oPeB5FNbcWAHPliHvg1sxLl46Y/m84g6 /wC5j8oFdSTVVHVFBCXCKkiLCWczJYSVYndqmQVBDBFXEP8AZ9tO+bO7SymfygEuoBe6N7eUHejt V7304xzvM8lmsrVvBykkHgG5tVza8M/AdPt+6nuA6fb91HCnqWCE8N/8V7znP1bujV6/3qf44Osf ropp6m+nLy5fl5cojfX12x6nqepoCA9nt1RyWeAI8SM9LOScjsNk+LCAz8CocucDilq149FFWZ5l J5RKdMnN2xLEgWDnlpZ+HKNstKzU3NiVlQVIN1UapSTWxcWc0rVqiHwrhU8owOgu3GaRAzXlfDCs b8GIKXhx0uez3lP0fmqRh6qaOtyvMmk8qT8Km5XmvKnz1q5u9GGweihiLth/BNml2Ox0rNixWf5J eSmvKg+OlyXOBxfRbHcG2gr48EjzwigjpXykw6FhLRPlnFnHq0KCu8eanByi2YfQLcHC8z2rnNpZ tYT1crTvDq3IADVd9HYnkI6DJ5JK5ZLoJDqdL0eoIqNW14Wg4BNHPQT7HjCdnpRFyFVDucNfPNEy aM5HMQv3l6urSGx3B+MDRMR5cNXy0Zek++VBno7kr2ess+vblQWUmeqE76R29D3lJyWvrj16WdBc POCHYOPnvAR2TjRBd6cuWCOuhKOyKZijw0hehGCTuTWu1nJfR2IUPjnKaCyohItwsV6XH5QtyXJf RYJfVIS6xXKudFyJ8immXg6FgHq29E1gW2xrQ6ohfnohW+PzP2qmnhMJctMGM/ZUpfq0HLswmQ/t ska1Ka3e/MeMP8aY3ZlDU6qWajUFbG3c50vBAGHE6vQSqwzlxKLP+E7o7yckPTk3ImH0u+pX0x9U v1Wx/sY+w0LeWN7S1jmoZKL3YoEHjL/guqd+nCmegpOZhjL+8+jv/Bc+Xs6PCapV9cfLuRq3kpGH Qc78SVYnoSpu10AiDfqKuIbg/E/aq+i4fEvGjYFNcQTif31nyGeLZwpnFQksFFYmspt/XF4dRXwh uAdJ2+4mmO/lozPL3TFiBpozXeRZlmmzSRNS5UrDO47kkMQklhaluziIX5hKyuaHo8wkfaON1TWU Wq/a2vbAP/8Ar6jpHAPV7/eFPULTaQsWpTxqlCJsAUq7XB8teEHPBufqgYX0x9uGxrS0LenkHQUw k6+prjFRX1BksZK95HChv8gntDXq6vv7TkueSmfSgmZdQTisN5BI3iWANCa1oPnFAzDLJvLJofb9 ZDdU6MzC1LUbWgeseJ13A1WocduqX37qPFSpVHTtD7R2erf0Ub+A6fb91FFTU/BejrwGfpl7Q10d QDDxUnKie3bhP0jt1jh1AHooo4aortWAe4z6N0tnROkfqan9/wBv7R9AUcKmp/f9v7R9AUkEGl6d tPfDhUk6ie3bjL0Ds1hh1gPpp6pTNk/T68fs19eyignXbev7wl9Yz+ym4IKWe6jNS7/ioRzZH+Wt tkGynGa9vWlzc3Zeqe3ZXMzzuVyodJmlALZkotWjHdvoK3se1hlst0sh3AJvYaa2etjzrWK/gnZ1 r3hU6YvjOUSH5XXnfhNdw8CoYT9/RSYRgR2cpI2YoZJNbbXSyQ96T8V/pzD+y300evIZhUuiIT2r 1LN6io72TyveSOklCd5eHfASKhobflpA4gwk1vLQcA5B8tKZ3XlKv+XHq9T8MXKTBvTcjmPujwDc rGCfKCIg+XEU+ZcF+YzCwpxfMs1nM+nQxUMMF2KmBANmDBmanCLrKy0plgcgKKgDxqWbjahJpUO9 oGepBXtWKrHr6ioMFi6DFRh/Kw4zvRCeiCE/1i3+ZVOsC1Qm3k/G/X1GamVhUbaoSBJuflMfS76G dxym2IgYB+K12TenlwwuXlOW+0sj3EqI67XkW2mXW5GuSzRJOcWNIEIb+0LY3z+4tr3dOHLXrp1E Wrq6vOCx5iWW080276ONOfKbxBy0Q/r9tFMwno00EkFVN0g2sDXtLNw8oZ5YfaL979rVip0FYPI5 EwuIdemqSeqI6oScjeVuUjZdzXw2zm4G7sHSwdNGX5e/TLB8frGaGpEFiKlmyoUjLfS+/X5BE2F5 OaGmrjtj+cMO8J+ejL2YjOmqEx4V9SaL1+fX2XXu/Sbh2r+rw5/SJt0p3c/hGYBRgr34eYTjT3Gh njKaBXwOrJIcZkPn0NfN0PLdrdG3yNMybPpzIZxsBR+zLEgkszgmjl3H1aJmOWSmaSoMwwxAXSRd wQ1mN214ONYDNUo+333T/bjunuo4Zn0f96hcItQAatpAqYfEKyKIyY8Bx0sMgocu1jRp/TTH2N9x yGU8keWnroK9YTVVBVFBEXElSRHAgnMyWElWJ3aqEFTq9/2dyybaOUz2UCZchK6bwLA1Z2fm/e3O KBP5ZN5awmASlwEt1g1GdqG4vYd8M/A8D8DP2S6N2yfTvo4cDX8F77uuXR92FE/Df5v7aKKg5UcL vHHdiPR7hPftozNCxoeGsLo9wFfjwH17t27CX17KKKmuPVM9XUP3df7dVHD4Hgv3y9//AOmnvgvf taD10vp2xlzxPieXyHgOEfalSr6nUM/Z77+vrwfk1SVTh9PIpVQZUlA1gTSSnhNQ9w/bqp+CC1Vx 4LJdDbZEyprKp8jKFNvWA+qXr103ww4etyDyXw4niy28DRLjhw/WiocvUDp37BpWM7zqUyuUUEsr NDYPzABIBoW+TBoc5bls5NFzUBqG9De7jn/SIMjwlPJqXJ4nuUHzQUwTEHZ06QOINlKQiEgs5tpZ giRqE0DHy1YVlbwYQS/np8B9LMNCGrz0jRzGYXIPTOmiHU6grgUaj5Nmt1kjgZneSYg354CRbjly gcTslyIa3lpz5fsmHTN6lw5x+NciXESxgo8EskcVjZzSRTIPz5lQxHCIFqp2NwJaUhyLguy+YUpz pyCYzGbm1dKmiS5oONmoNH4ARdZeVEoGOo18+Io2r15MIXupkgjoxfhxW1Iw1m2loqx3ndrmIAuI vMtcQ/pYPPd0tPBlsvkNqpaNjN4V7Ktmwnrwr7yT3423RApYVinMbXfzFZcK9rgbrScaH/fRf30e DlTw3wBGvNFjCCTwADl5OaA6WuIvHt+6u6B1BrpkdTUjDJeTIdSVUFjKwzXi14nM9pt7i1jNJhoS 0gX69EJc0kDR+IjsuNc5K/bRh0crkwauw5sGGptRhU/KNKfaT2j3wYF7Vyqw4luhKqK8sZTyqx/I 7szBLXfnxE83dmHIt6T8/MRqZ+QxvIgoOqHREzxWTA65Ie+M0GXjpD8p3A3fotLkX04T0hatR88i E13GhqqiKwvNsLnKG7mTUxeS9iKx1xwTbAOJ2Twha7ORb0ClLo6weqapOVSI3asJYiJM2UvnxF4d uPSAdJ2/okPks7OWjLn5ZMPlpRfLTU1lihMy6iUuHBP4XSCW76c6nmwx5aVmUggspgC2pAF2FRTQ RjiuUqiu+HCv/cIy3jhjL1SwEKN1ccqAqv4/Dr2B144Brxn1U1Q/IVpUYakw6oc1CciRQ8cMgpxY mPwdtx4Tb8RfosMmX1aqYPOHDxM0YJHiJksoFe8ThQ3+QKkujAfu1BhTp2WzEpmcomal1ALpvJcO 7dalGrxFTpFcmZaclLW5tUUf+tzE4rq6on/H4Ydfvt+3ZRv4fo9n30g9cpV4VurVMPSPX7QwonvP /wA339VGnRuX1/FC3pP03/GLA4Wp3+0f20UVxz4Lo9/WO4JYdEqV/UnPf68PqD09NHC8uBx1y29W Etu7XP04UxMyzAEmnE258u33MxGRMOQHuQPH/LDx/m/s9v36ujoooTUFcclUoXUIFkdLwWHYb8GJ +P8AxEM5BL9k7QasN7ySy7qfFeZQ2v8ALc1wvM+Ho347h20UPFS4YsXIkSJZFQEHwO3hFGTUxPuK fHS7sEWnsB2cy+fT90yfmhjLpSs72iMqOiSYBoXN60DPws0OZaWdqVp2uW89fqmXzkMUpyLKeh1F eZLFlQ5me5TXvHwrX93OVGGLL58v0cGYyxvipZLdRypfMc2u7Mu81Y2T4s4i8+UPzdafkR56c+pU Z4VgeOVqw+K+oLGUfM8yJqwnLtVLr8PaaXGHKdvwZDDQjSzlpGjny/doUsmu4c58OGbGTC9M6jmz ZMLsfnEvhl8awb7d1dI6qVrLzNrPSlK3gXoo8d27l7AX0FqQyijl5k54fL3VnKIoZmqZmrGyd5Ka C1vHr13uBuuwfKnnoy9YYyp6lwV1Tnhoxw19gjlTgHVnwzpMfVJ+Q+vk6P3U9Q+JA7zpOoqa30pf R4l68fV066OCOgqq8qJ6UhkTSksKhzMiZQptwDb7jSUI7Jcb2cZdCbZEypKBoEv0DcvTPfqxw30I AyWS1YGoJjgK8stvA0TksOE4O336h9NOlbRbSJy0EJIOZ0B3as7aOzjQiovwil5bkpmiJtT7r1FR TqvRrj5PFboMJe5Wlo7cQ+O48xaWEtlts2UxFpX746Q5eae+WOyhMI8OobMdnNPhxB0jeTwZrbSy SO0/CSmusP8AOutXHzncH9k/n/bLHP8AY5Z1dEKNzwjE6yBm54TE9GGebOedC74e4jl5u78MdtKP tjPwxE6Pug55xqTAf8G+8oDxCvlZbbZdqWu8fCOGEP5uMOREUsfManH5hc5m+ajpaipDggV3X6pq xap0vQd1zmEysnKgSt2AUCzuQlzZzVwRp3RjbkrUtdYXGqRUXtZ/XljPYkQnNrN5vmCzoDx0hrn/ AARFKUnoAaDP2jjwx5NNMc9XvjNjBXvKA9pDxZdf82McMZAOpr8rMGXf/lkwqPBMm41h0KK21UoW BaIQb0JPCHpRHu1Li1iF+6Dsfa4tenELdb0lpywh20To5JKzB0LjIRE1Sh+bHPY2QGNnJpjSuLy0 Y65hzSnzpnpoy+Yz95B0vkskJQlNGCQLUoE6N8IUR7gajNXQhnmctoiegLOk8SIClDnLmEro1fwg rOa55uzEHQ92t9oMx6UlCapKtcqJ/fxZbcDyOaTo7sb5zRtsWh7ily0hWufmetVNMR/toMgfuqjP dtQTS2eer3wt6HpZzMoJ2hCZMNOIaKn82MVAni3ft5csKTDmy6erkevrtIG4eY5a8DXKeKlntvHL tTF7daCs5rg833H9FmnLZLTJhjyN9fcywvwBe786cIkTBHXrhVG+8W4lGXa3zSwq8nm8j6NuZ2+f Wg7HAeT8Z9kbrLfMx6z05YWwKbgZ8W4fvxkBDKKtQiRRgu/EcXOT784suvDlox1xwDJvuNp9OLL5 jP3Xpo8h71FceUs3z5VTXtp4TzJHiEbOA22zHhLQsUJlxUXACcH7VTS8h4pdDXGUwx1xBkkejNDl wVHDohlzwleAopxwm7mZL6dqp5lRwQ/zf2iGmHJcY+NPkXGjW/ZsJ3DSlZpgKks1TO4at1t0gpoH dLFxR7v5w4l8YLkwgpcKNHAL1bgQe5u6kY3tRWP3HAaqF/s48Zf8B147mSPEIoT4zaSp5lxUQ/J9 xYbvqGmN6HYYcQnHDGtUENVIlnIz1S9GW8Gk4UfixeFC8Ost8MfyfcTTbnktrZc9OWELyYY8jcn2 kLGaTUoKzHCy9UKLkheVkdeEMvCT5hNjjLzgh39KfRup1bZfbZE4lGW5mpG71QnECg34WBUC3DiQ 9bRSc72dMu83KVJcKTUsaEhuNgNbUga/wvv21FFTw+Ho9X7/APCoo4H4L3lq656tvsnSQNVnuN7L ye3GqlGltwKpzMiZQp+8cd2oPRq6dMzeDK4QWVD7LdBKiUtusLKPJu+KpKIUpQSAd4hgGL1VwZ/K GdHR1VeVE9DQyJlSWFQ4JNHSSnhM/wC4dHrCdCwQZgC1YAI2nD/ryylEjpndjR/QqH5wOL330mEH 4JtWzqg59X15VyxIVCYXw4SmO3wKh/sn7KV+8HUeXTRevr6+8s6JKh1GKFFi7Uy6/Hq1fnk/Dvz3 inOQ8xmDTiG0e1U5mc4cryp05bYqBYkukXpTg1KMIveV5KnLt2bm2UTUDdcsSnhxfuPeYp+049nG 8G4ZSiVR4eWEtsI6SbN+NV2f94HEITDzLZf6+UKxaWrq+zfYjb8Mmo1Qdpdrs9rw+fjIKcW38wxR eXS1fbf5vt3w5J0h65SoM+BrDqYtWvrP7cPERUkdBOBE5YVsz0bTBa7F4+QrjQ8dH4d6R8yNemvP mWFNYdkOeFe5Y3sdgNV46Exghe29NGH32jJqY/NOg5lri75PuLiPms7A0Lel/wCFKjjyzzuX5c28 pJClEMTTdd9QX4lrQ9Ew8rPzDFhQOGeqWoaCgpz72GfXaOVLILfDrcSLO4HOJ1Yp+N+zS6V3xLt5 Ohqw5FvT6Gv2jxXVy5UuNPVVVxtstEB0EwJM+MeKlCC0O1vMuOH0hDVpS7P7e+elG9NqVVYdKwuQ 5SizAjgl3oivyDhtH5MvxLHw6ishDcGMtQPeFuIeYVE6PXJRxGcB5nNu+2MqTWop2ZVc5xog/PsT oVrnOfkmMvpoy/L3TFhjS2plwlmYboHgGY2tbyhGJlwC9/r9mHeprqhOK8AXIvZtp8LzmfLDIKTU o5WWlQR8NMf+cCzuA892ts9PLLUNlF4VCCQdEOa+oUk1YKnO6e20lpnLygafay9xCuxOs5zEe5/p Z5bwtw8p2LoPTK411QTINZx6cKQtdLOZlCu0eTJ8uYSqgBPuYxwQ/N3Zt3sLTJh8jAlEMVJ1NWLQ NxuVBZpK7yR1RaeEEUk4jXY7QubC0FZXXObGkWvTiFup6fTLyNrm1EqOjImwLFKTRyASA5ua0rrz hnlszxNPKule3l7oLwjqRFeIZklgWLH8zE7dJQNf6aY/r5resXmw5Mtm0/GyBsObURUvUPE8msCO BUnmTQjHmfFruw4iRYqAA/7089eth0p9nRaIuQgjnko8WNF145ybNpPJtMX1T9B/zfxmacwF7wtd gaFvTdS2NNqh11ReoPGM5UTXeKOcKE7tv9U+Zbj8n4iSlyW9DC2URyU3nGz8yiclCdwhJYOALPTs 0avCjQxIk51JlJuqmoeNgHPD6rAT4nQlf8GXuoQ5iY3DLbdCX+SG/Bh9L2rSGueULdAJah36qV/w HT7fuofhSUoZRsaKfB20MRvtrlZ9zeLKSHLphqk+IgQ9/wCq/Mt6BIB0NfkmXQT1oqzHEazevJ9Q 482cjHdGDDiw3uYz9S9mwdH3FPyWnLfTueyu3EnnSRK4igjM2DlagBUDjyt+Uc5zvJJqVLygO6CC pmIABsOTFvDsjOHAdPt+6nuA6fb91FFN0Wb7KNe/KpPiBE2oMokP/lpNJ8GKbtl0bW77hjOlmzPP ZTKZQzU2sbwchL1Nqs9SeIfQaQty6Um80aUwUsARvKIazbwBUOFhQxX9m+y6uxmPl3GuZy24XlTg Z4r+M17bcqH/APFID07xoShYcjVYaMnsCHKUWTU9L7yJlEkdW2Qj5QuIdelLs5l8+X7qlRvfkTkp HIaONsSyIjpZPMieaHLtTCKWg9Yho+3ccA19DyfkqZfWFL4JQr1XNiyeVR0s8saQgCamEEsJXEtP j5gbs+ZELR5aRp58v3UNPnvaLaTNtppwpDpyl6VNgEkPypq1ed+n5dlkplcoDLMcT8RIBL0B5tfh pxq4K69XrFb8BXllIwaJqh0nJYu1MPpeN+rS4ueT8O/PeKXPSNEuQQaBUodho+nlrmzulVBcytpy q/GGdOKxsno2mH0pCWr+vpDQ/J9u8R8iGqGodm2lgKVTXnDV1V6UZW1FU5UAyXYcu1TXtvdOtGLg 834d6tCIWiEh20mFj9BqHVbwh+er1Rbdphrtt0PQ44TZME1MXlS5bhFaFD8n275LMjAAx6qByv3W TIAawbTQBvdrUcax6jWHZCFioqYvwnIkXiZhdEdLYaotMN7m8GMvX6tSXWU+J7OI/KzkXNwYUGO5 E2oUkaIDHr2ApFs6vRaipZPzwE1TXlSX4zrOa75PuPyo0Wx/tkw6bwt4LqrXRaeFfmKbFGC6WTa6 K/GRfHKdhOjz0n+b/DmQ6Rky/IZ+6gphdYqUrRdPr1t1La3C9LHMmfaESSfxvQHVPETLfCF5u72t MfoF0vJDAfKlKVcuWN9C5rXTm/KBZr9bT3/7YuiG6kkvCCzXfCrEZNiixzSOMPv4QisjrN5oIX3x FBe3Ax8HRo75kRS8i3pzCfNLYrkc8mn1gHGeMttwIJJrgsO1wrF5ZgljzFCOC43/AMYEO9sELZsJ 5PRl636IjKlTwBX3wjti9X+lMlkPgq5FREKRuaRNGUoQWh2u+g/Ooh82HA3XZq8juWmk/M1+U0Am 8Aj1WYoSU5E1GYd6LRyGTe5SRfs037guvSznpB+OCyq658t4WuzDHCgshPgyqkqDpcprUABtDYM1 KH4k42hTfQg61ZvARoBhvw9Mw3HVUKTbeDXuokczu5gUyF/eAr80f5McrZ8iHS0+Rb08gtDX4Isq lfx4s3tWPF4ONuV6a0owYZ4bGejLtn8+bR2cqfS/MKN6Om1FcQb5dKzYyj3OqLTDNwyJ6SJhBrji urdnPSD8YEGcPjusZOzloyx0nFhY65hUqR5SKp9elHk4s6SqPpOj6PLF5th2tfHlpCtccAzcDe8+ Gs7JPRl8xn7NhctGauROTeUTYnMrUQlwpQ3mAsVUJaz1rfV43dEE2PvgBokCgIsGI1dvcIDO5Gs4 2SvKDVeSUZbboQTmZLCSbJy16g6Zz1fvoz8B0+37qGQdSbDm0gjFmc/yOjb4QSapo07EknxmQuIf EeHKBu7HxC3noy8dusR9pZBPWXqpYqImqrbRM6baotMNwm1i7Wy/ErC4lpDXOvVrBljTr+Ubc5XP yLzxCcRIBclnLA0Ljmb6VeKfj7MzuFPJEilWJvH2QCq54V4g28Ij/e9cGFfhq+/0T+7XNRU1NfXV peoqKgyZMGu8iZQoHrljj1eyYYyhq2tHjbwZEGFWvg7DhtulBbfc+RzcJ0haTVN+YSkt6QDhon50 htx1jQmEJYGtyA5Us6njdrkiga+RlPCSY0tWGzr3hTRMekCTOWnHwlJKkkhISQouGCXAch+DctDE x9m57DnESs6lSN5lDeSUmm6WDs/DUtY6it4M2dUqHpAvEaLdQWMuieettkG8LhwxWlz6RB/uXSwX u9jykaHh85MqBo3cpMoUJ3kpn1TaioekEg69LOZc+XuPIqiZ4PCvOGuH4fOTHGZ3A3dg3WhYrvHn k+3Wnqezp9WmT8pS9dXZ5XcBUECy4YVEfPRSTY6NJh9rhrWnwGHc/s7jr0WnppGjrwChY5m8/mhN ZmTuKCd0ORQ7rBuNBFgAlJRIlJUMQACpqOwcO2tTw7TCc4pGK40n8BUGVtQXr0JNtJaRzjN3S8PI rHW/J6Hf890e3ZN6PTyC5B64+JyoJFVBxqq4WTS5UmLXWIhN4nxYRS/5l7OSH/xu6ZdASxCnq45U ZtntfXra2XeV1kgzQmKa+Y8B8zIaGEu5/Bn0jppLfOieuvypWTBjh23pw1yffhsoHxQWaWv8yoez uiYDv9ONGMrlsnKEMK6Wv2ns194eAoxvbMJ15NpN8a9DLJqwlrCVc7IKHLy7mjW+e3xhzidg6/q3 dCFsBSCqYcD3UuNVSUm+VZ98rD3ZByUTIS8TIHLRDQtTgbo+W/kXPp1869q44ldyQvUId5JrHMvD MjjtVuc0W3R9jd1fVPTynQRbAuPuVWT1WvfC3Dd4aNpegcQinMYgqaFsEBRXxhzddnnTP70UwRM5 +JXdG6wpwonsq5o47Iby9JGnD5Rk+udVfXVpbv8AbRlQeXfqO4Ck02EEeP8A/D8Z+jo/tpSPrDlI KRVQPV9eKaYSziWScht2cWg0lTxCixw0fwQPoRHtpzH2Uq/gVUmvLDO0OTUR8Knfr8s9q34s40y4 +QnpCtcb8tHnEODo5JgH0CDHQyjNpIRrkou4yK45CqO1+JdNzaPeUX4D7NC44MfDugQZ9f8A4Lp7 mMkqBaoD8qPa1iNPF4nSQKuA1dKc/ai+WG8FVqqhgiFQpFjBU4l3y31cEZNUyCqujxFzf5MaROzy IdTT5FxolyB0NfgaFvLRESGHDm1ogp+kaqWbcWMzzJnxjzPw99C4qIYbtvloOOqeA/03Pidankcx zUSqMqLRNvN0NNswa674dekD/wCeCzu7Nb3gI7B00ZfkFS8GS6qip/jzyaJdUJ30BsmsApMZeS/P RDXAnpA3f6UuekF+Y0euQfLSgqMCdyiaRNyZO6kJcA0cBOnbBBmBOskgHTrM3B3Nr9zXjC8SIbvi D7tUGPEBCMobgKd+99Tuw+l4cdoa5jpA3ur0y2wfPPyf2z9M/cemVDYL+g8VG53JI/EVIy3yvM98 eXMNFTHd0f2LegdYyGPHKy7EWCbjLpR6oB2t9e79Z73b5O8kx2pc5awHk+4vosIh6dvT9nNqpPOU 7s4oIzVICQFEJGg1Lcg5uwaKVnWSzkv1pO5IJAD8Kc3duLmKPqVKv6NofaOz1bumloQ3Ybxi0vC3 GrUFu9e/VdXNhxY0kufhpc6N/wCCA/Y4QZs6viKiyYqD1QZZDPQMXI61YndoEN1x6QeUW3D68aEQ qalqsNtp7AYCVdqOU/JJTU15U+elwNekWzRbDrDyNm0W1snlyVSskUrzMhiU1AoAf8Ld71iZJks5 MsZy7hno1taNx0J4Q3ttttWFaCYQ233yJqQrDhN+E3bLowBvt39vRSv3G5Dps1wBHOSxjPLlzsoT vJTvTzLQ0L+cTfLkXBfy95eTo4VN6uqtEUqvM5uaOKhK9kk38vVEKXErHljpEAc93VzLZfkFy8HT SkXUm2JPOEmoIZz3ncqO3kk6CbfyX5mIcxlD+HXnu6uej03U4spU9OTZmpwkuX1N2Pi/LurF1SkS m6B+FhTW3BuA7H5xW6kscDVF8xrzMs8VUVH0IOXm5l5UCV/MuB655QOL+e+1JrlLQHXOlTw84BSj 7mOjaa7VCFzbVCLwVm8cWe5nZaa9y8y4V7HBGYfLh0+jVMaSheU+BqXAq17juRPKk9GHhFhJJ3bx Xr7i9nND9ulMvug8Jak/3Ri9Q4kstDcCpLPbPdnBvCsqVw36HEUaI4Ljfx0idlx9WPmHRmZZzlwq AolxxDpv41v36Z6Vz8/+UawFTSrmb63XnlIsz88a+gavxyL5dqpLDuqcm+bo4btet5DTP8YEevri qwiONVRGkXVEYFqJDTKHLtTHbcXEKEisdc1N5x7tFMBl/YsbYJnHHUu1QIpR5NMxwNNtL0wdit+L M+1tiMK5zXb8/OmehevQLfSv3gmoZxuLFQ1W6pORvw5OKh1YbzhvlNcye/NV9MfSCfJ1p+awag5c v3eNhMqGNRY8eEL4Jxf9fFSx5Z3iMer01Tv5ntdFciS4R+Xqly3DcobG+4dI0OXR1jhT5NeqKk0Y vyuMmcUskcVnCCzec0LwEixUFv8AKftWn5DxSENNGWEgDTNhiE3iyWpVDwsFRIarkcekihC+JDoA 44W9fPgpdWkB+eA3BrHj3ys+sQpU9SsV9TWp9QqnipkuE7ncJTV/UuP/AAqM3oAYcsuegVRUsxI0 c37RxTyHgOUOZe/f8UxIHVUKrbNX43M5Mp/jhJN+EyGoPJ/FwS+ieOM2Fq0KpMFNBY9pZM4dWPJr biwVJpYo73OeDHaHzK9x/wCCHT/f3fSv6k4CaQ4CoHifM9/Fiff2wR83ZbB/3NljB6lSr0FZMfD3 aY+XHM7D5AOxaXZYydk56UjyLekpv0Wa/A00polZmclD0mUfdBHVc9ViNObeetRBEyOlBm046Fgd frhFTuqHq4z1lQbbqSlNEcCUczI4kmynq98MA2hSH1zc1+v7A+72htoSipUmrGBuJzOidUGU1QS+ 8WdEIoT4zaW9FXMZuBufRYMGXrlTL7whW+GS6NFVVCBTUTRPPUc43uMkxeSvnpD9MuiQSlToeWbS 9ISkTZCTuhwS1deVKfm0VSZy3oygZVlVBVfiHLCrP2XDNGX65Br6ro+zo3btVNUQ3hARZ5Uu8Yml 85MYnUdpm/yDetLmA9WGz10j6bE+CEE4qdzmLcRobsCKBVn6aE+6EsCmtkhfqLxEi8nw5xfrZPrG YBSyE1+JUQiphxkXGiLea95HLpciMpJiCqSHw4ut/m/K/P7F8xWFy7GdFuZbSTE0oykqQz1JIBAL CpJLOLg0c9rky+VlITOLTci4o53WA46Csech1VXzWfH68yBgqPehTPLtzAR/4e0T3BzLHDn4NM/x arrtZqwe5OFk/M0s6dVnuTFNYyC18OWj3Q8OTrT8iIWc9Ho9Jae44UuhSrvlHD5sWzUmB0L2Jimp hBL1X0ueb7dw5ENbo5ezGmTo2V2lToYzPSm4ZdrozzTRtt12c2f/ANIKOH0dafkRC3ZtpXZgGXl0 kgKUpgVFiXJFLPV7i3uPSwmxYBhy0i2YVo5epZzfPEahxlnA8hVHoTVohHOM4l37Ob0ip5vfqt/Y akwrqmo4JY+VXeaN5k8ChwmHxlqnzKhyANH27r/UsA20lOZl7mM19RXqTka5q9L4KK09Jn4qb/o/ LD6F40/euqa/Oi9RwBVSUSveJPNNcNP0L1+ie3XQmUNODtTut4x6iH1PD1x9H7xvJRKiBJHSShNG vOEu3rcAzHqHop6kgJ1HwpaoIns27zz05EIcQP4ePNmjkpfroOD96PU3QPDgmoKHB8hcbV75cJom l3w4czEVI/JF27uhrD0y2UqdyOTMyBhdPV5n/Ms04yE+qBxFxHPCf0p1eYWqkgepNcrjRivSlxtK RcoTS88b7sJrLbUxv3CS4uDu81g5avTHbSUWXUExGC0Q30M8Qu1Phz8Z0SWm4SYaTEAQpILF048m G/yj5kNaXIudE2DmctO/eZxROIoHcSo9ZyzMCSau3ygkSoBT0Sw3XHLn8e543xUVKVZFsjJFQ8Z5 uaSFRFcjhNo94pZB+PkfDVx4S0T4j/7AEdtAnnKk826pPhXHCoMu1nqk1phvdJOC5FQhfut6Mhc1 uGHbs/mt/wDHlCMdkIiolE3az4ZONKUnbDddRtJ1g2UJ3aptN0IXEN9Ia55QOJp7Gt+n9uqg/wAm m17VIF266jGn8F3Rei023YknJqYKgYAtMcR5vuLDlvCx2c9NsuelH+TSol5UzcyCd5R3Qz0LNxJF ddC0K8xx/vKRoAHpQFk14XtQ95jxwmHBI7UiauFyxkqj/FXaESuMku6/EKLfnlBDvf5awX17ZUnF SjulYcZevPcgI4NY5npNWKXMnNmLW+a5zYGIrs38y40bdlE5RBqGSgjUOqvLO2B68cz1nlEnwmvq kvDbHwHufxEaet7tZ2YT3DR44Eu1KprtWIxHTZjmjnxVuEoj4NJU/TiHtl5cQt+qjpwfr64iNUN5 Mmqk7wdSG1SyaoKhP4yIIqxME1su1rIQ8erLHQ56Tt9utP8Avoy8NAeQdE9cmkSbcRwqFVbMw/zz PWe9ynGUX7PLoXePrlXNHx5u44+enPlhcvORdLBriZ6uWU8iqrqaajgaR0taZ8ZM85Cn0vxFfi5r 0il+dOYaFhyGfu+iZBrwrnQ4ENnkW224sFTioixIbysj3a2YlpaEi8e3Ih+T+vlu1vLTnywtwT5t 38O3leMOnUhtbW+j584h9cjnq4+4EM820QysLyPnz8h6THkNaWa/850K1xv834ifqmIiAaT/AEzZ lG+HrwajDi+x3iuV6loxEdtqkJGFFg2cu1TPqly8RQXtUIYS0ecTTGehEUh/4D5muC8cY9S1+HQs 5W4blTiqdJpJtyB3TIaPzw9fTHBweTsw1ym9JeRr8aNBwRTjmzbSrqRoIH4lhDlOiedBsx5jYlnM oEpwJd9zQ8nKY69lZLaBw5TjwF1ZOUGU9JzDKAdMxpWdpcwlMCUVJKrvjdUo6b1CSrvADN2xadmN n8zzuaM5gqCMqylIUXLFTAE3beNCR8LxrizJ2TFnR9iWWgvGMiwIXRHQm46GurvhWfi0pJbtdLFe gIKEyoqC3+TEwmGhMUWm8JsoBDQJ8AM6FYbdS62GvF3GwD6imuBLOZldJzjLjRd8SvjR/FwaWYAy HTzLemHM2PHIt5chdsiyKoWFo/I8IGc/0WOMJFNntSJjDilkIiQynJlNV8VeTk6IriNl12XlA5Wx loI5eXkSDJDKyu2q8nIyBCqq+rSw3aQs2LEEYHodRGlkv+PCrCtLJaEXwjackJBzL5P4eI0PVrpy nKc2wssnfUwUTl6j9oMTeCiC4UAVAuC+hL6R1zO/R/LHZaR2ky3DKlZkkoXg7qnRYnMikg0I4AjW oMM1oqxy3ItEO63CtDLQliCqHOXkJlbmMvqfj16sf5g181tmrkZSUQrhWx4AtcxUJNeWUnQaJZ68 HYb4tz/p1cn26A/vpdDqdJ7OjFeer85UDRL5Xt24oc9ggM8PsxxxFR1KtTWp4Hq9STXAKxyP0dJI ykprzoEeIhY6GHJiIERMf1Lgvz5x106PjbW5vM5cJSZUv1YCEgv126oFX3mZq0cefEcHIpSWmjMy zKIBcEAuaAsC7F/pnh3frkrzt48OYLFk8qUHPL2J8WEP68Q/TyIhbz0euGnuNKXWK49XH1AjX1JY ysc51gq9znFiDLHun2jFzzi8yYBtPmXrGn1BeF/FTJ7Pk1EUGusXKsOJJAXI2WG6F3yLhWufnhjN PnvFLbOnlgnUJpAxUXGWL3DynBkK5y80xpYj8Z0cF2c3BETHkQ1t3XSw5UZPoiVJdwAQbkDqmuor b+kATIm94JOpAY3ZxbuIPF++NX9jBbdQpRQtERwPLimtl0FGS2WTVnCPGahfvHy6tLkub4aOIeDV pme0440N7RafHdT72he6FhU7icbkm5nIp6L/ADKuaPh8YDd+ivPRl+qhGLHNSqwNsFKETdFc5dC9 pTFtYbxs5dqmvX6tXCg339ItHB1SEOP/AEUHfXJteg3weZ3xotdUcnHDUN3M22zBa4sEK/RQJ6Pu LzJii0+Rf/BdJljKzOfmyX3SAk3Gln4ahrUL6+Mw9kSmpAKu0hJr8L82ir1ht19caa7OjTXlheBr vKCb3aZ1ZcimfS/ES2+Fxv8AOCHYjzIwB6MsQHop651xYdBhKdVfolaQQEdLWkaNxQ5drGXkrxEt Lj4b/JfSL+lLFl6mM/Zz00CwEcahMa6jXs5VUXbB9UvQ7FR2OtYu18sN0LuFyoc/xfuLc6ZaFxo8 vaQ9YJoaCzEeor0oy7bK6ocSySObSVicTNKPD19coeb7ixEHu1eZb08gpS00pZHF+9n0/afy6JCf o3L6/iiMVNSe0tcFQ1UpNRIoByYiRDJWbd2wzjxqBduND8n3Fq5K7+XLClSpnhXM5NaaO4zxF7Lc J2G+0taWCiT+POx46L68NIXnBDsHGH9tPoa/MKaIeCOROoKPURUXE3ufmjmZWe3u0yaypKaClzAb lXEPnPo7O4uSzs5aMvyC1Uq9yac5+YSlVbRIfx4Ko/I+Nyvc6lDOLSZ4B0LiouDyYcDddghov3Uu nQZ+76Lp8iay6eBqygRStCk0AozAMwpaCZWk3/hZhw0+DRbDkqTwuMweqNEjKxFCZ5tKxvi2BtrR r43EjLn839ohp8R+Zz0Dofghpk8E3t3go1548ZucqcS2y5FaJpLjNBVPEUMbVCG3w5P/AEItStP9 tHhnoBh+MNGIkYO6NvBfZ4now2LnDfKamRKFi8QrsTrOa44Ob8ZmncfNbqweTDGkf4GoqapHfBF8 CpN81Nls+PLhR7yzD/8AJ9tiMf8A8Uyx26wBm65SXlMykhvM6Eg3NN1rguxDa+OkEKBlZp6ktzFm Ie1y3F4nOlXA1qhULmcljCUcSyTkKOw4jCpkFRe8AosVFzFsaROzyIj3+JeNHJjT3Q7npTa8AEdc iQzX+wHilFnbBdUmirDTe6OshmD81AOPKdvuJp+dXPTfplyMelB7pqArVKyXaqU3FtEWEELlJsji Z7OaEqW+p+A9IP8A6wFjN2X5g1p8i7/6aHATUFuQBg2jtsjItcJMWwSzQ4s+FPH3ODydx16gZctl Kfm2BgZesTeEVIxApIASSkuCGoCOzW3i7y/GE3KnpQBBsWro4tXR+y0DvJ2J4EM95iuVBFbW09rn JEyjhcl5Jh9U1+A+oR99amKkTqiuqjFQQryxZPKk89zspsS8Zc3+na0+Wj18gtr0omjY6lXMDBhK r1IzmnEokyhPSQSF/SBC5D4OdwuJ2enTTy90NYVMsJCweOVSfX1FeZUlBUWFUk2yjTWRUlM+q+PU VjvjygcTSDnvak5lsrmMwh1U8IzObzTHCc0WooCRugqLMACHD1px9xjAlEyssFSaUi5Kt0AsTfQi mnZC9YOV5Stz5VrzCaYKrCWS+R6SKaC6BALiRbj/ADgRm8yIWtOTLgx+vkqM5NNVlJaAilES2lKC cVFs5nZzSNjQWVF3x0+F3879ogP9y6OCOmnjhQwuJSqWLI6CTVEU5EJvE5JiCl+PYY2c0OY87fLa KUxej01Y0tBCupMIJ7cItwsmmEsO84YlDngHetRUXA9/1y8jT0hIDJAA0a0aA7B/o0eIOmI6EmGj CGe75T1Q5fSOUzwFJ8xaVPPRc9ASwx1bJPQdUWG0FcUrQ8R3Eer22iI6Ww0skTaZQOMz9+rVwg9F wZYt3iPRdkb58g5Uze5DtfU8eVC4ZHNZ6SOEoj3kpryXjyKY+I6Pt0PLf/f3TJ+ci6aw7GyTZ+dW kHwRqFIyYKPFLRXg7Va+pL1xIt+rqKhg4MB0TvznT56a9tNkx+rI4v33S3xjEvbu/ljM8eFOodVo yLB5qntErQCCsZkccKsCz3IF5r31cNyrmkGpxOxuaxdg6FvXDZTJ9STValxrB6FbcLNKKKWTVEV+ WcFYlxY7UsMV240NwT0gbv8ARaHLRlz5BaqXhEJSz2qWKiNK6ZdsB154Ki1CuITeVxUnyfv1a8C3 5PlA3Wm3Oe7Wdv8AYKlXxCTa8nWo5GKlemoieaJ57CuN0PTiypqbDS0KYISKueU7gboBrazs+Ohl +mlokB9yIIagcGn4Ug/nCbHmHUkf4kue/wCjfi/CIvZdUmBUo0WCDHVXJovphnrkhO4Tl5JkJb9l foofnBDt2edIbcY9MeQ6aU1hUnK9IFHr71W7nQTmett2JM9OYSKlyj4D53cndHNTV5YhoZP8cjD5 m5PhusLibGmJCVmCayYwKiQ13OUe5Q4KZCC1K10Ja4jWsfziYS7qTT6n7TUCCpZ4aULjSjLbcCXM k8IeqxMLzQVT9BoeHJ3SOfJbmX5haGvwdDHlV8GXBll2LLV3B7W17G+LhPsp/dHui0E2vr86M1CU lIhZwLxzSdYZDeN6Nwyi0qYL3dOgeufmfjMAcqNFuZj09VJgSOEXUVMHiJ4TRk05c9OZ1yJv5+IX z4h/mftEfSkORb01DqpR5OqL5qYqCJG8kc136stP+QTWsVpj6/KOQ+R3LTD4m35zymGeXxW3tXqp YysKggSJvc3K7H5PyKipgPKJpzlpSIci3pz9+mYszK0LU5jWo+Ld7PwBUtMaNwb3C/jQcaWMechx LXTSgXrzxYs6GtdZ1YzTi1TID4iWl1D8n3E0x8qcADDQLzLDlAtc2kHfajtj1DiVkRbiyz2vxMzm QkkrzyVBroQCN9CyMWzpE7Bycl0PUGkEsR7YckMadG9sBSIdxZ8ONVSnsmxIQUcYfI6s0iYqT5Ia dDcSEirm1wt12BTmTckNXBA+GTQtJZEQVJMisVeLqbGQWZhNGASCkE0JbBkLeSGVLKaodqAgE8kM rKAO2DJmIUXP5nBljISmMSlazugAlLrUwS+6RRwASWA7DXq/o8y/Fm0z+a4KUqzDKgFMsAulO6WA I6xArY2ZqGCTdiIjsu1kWjBFKr7lK5RNUbJtqgSG7EPJXRXwQkfJ6NnQM8Z5NDnOpyZ5WmK8Txce 889OHDZy7Uwgl676XA83d2ieL08gpc9A5SW1FOLbFJBFKHcNXqlw3a6QwzZRqt9HFPyTrofOCEtr naBl5WU4XYCEtuf8EMqYSAAGnS9D14IT8aSe8alVu1RKnEvPG6UOA9nMgxQXkXj1loe2IEZ9TX0p 5lwX9dNOxElNYU7mOBjhQwTiPhpWorYMk04AuGoaOAVKBMb/AEqT+T5inZ+ZlEpTmoB+13AkDeoC SAOTdbsZoeDhOvrqpQMHs2TU9Lus6sKzsJ8WoI+ItOEJv4uBxSn3EYCNPmWHP3pj9cj15w/cdQhq S44FQ5pPoQ7DklNeD+ei0YuebuqcLRHHcAUsDv42fzFD0bTFBmhnpw2rHLyhnZ4S/npcl+MGM3s3 CGukXUibcTSBfvFb0PeR2eaGznxv2lVTXfa5tb8O9JJDj0dA07XKBktwSB4Fo4NNXKrqq5HHeHdp aGfgSNSVUXVUOoyZTzRy5XhHk3xa5nb/AEYQPQ8OTuv6paqM7kbZGpS2+RcaGpIiMaDPYbWcGlxk 5l/HnpFRc6A9fppMFhNVa5eL1B5ERH/GgqT5NMgpJNhBZ4a+oL8x5xS3ylq6KeTamvrkZ0KqG8RR C5r8cFppw+E15U16Fwr+rV1BtD10n/CP/b5cx4xqgd9sapVdCDFQer0RciAUN83UnmzCVroQYIuE t2i8uZbLl5ZPzX0IR+Unj/Bus73Ghsl7J68w2uDwgi4eLe62l6FoHEjH+kTSmDpnjTnvtOE0ruDr Feh1BlpQvvdLzNwq3PmNLo8RbuTv+5TM6H5Q8Fpavhz/AAN7K9e/6h26PmkdhkkeITeJhecNFTuY 8RPO4+ryWDVIeilbT/8AyDDe+6Xe/so+MG4H6mOwfGB7qSa1VJhmFVuGHLEiz+gnJLCUc/HlZLVN 4yDlBDuUvoW9ZeRr8pD1muPVCy31tVeKamuhV/FvaPKcxolpexlxx+p76Wa/L2XPSknrlNcaryR1 xUeKa0okKhNU0DtCN85eUM4tNeQSRYqT5wN2QA13v0z09oprkGoWFN0EWczU1tvg137GCyGrHOTL 826awPXP96NQ6F+QWmTD5F0u0Luk8/r+GK/J1IEzSw3KhqraIoIJzSd4QRKHLtczSVB/PRZXXMP1 nBrSnrweQ8tKTFNWK6uudUSjyat6Tq99I6s3jmhKZEt0fPTHXPzP2q9HOe7W5lxopXwXVo6nmM+c jkhu1zvE7sJz7uVml0fpzGTgbshD6F+YWhr8DQujxXVKpXH8xPF22pOB+E8SmqBtqVL6Q/N/Gb+5 /LQPI2k6I9N13ozf8YHEy1Qfq+iY2gw16oXkZPQz2bGS5o4ptdtmyiPo3J0T49Zdx/m/iJ57wEdg 6FvTlQ+YCjKTLGPxCicuM9kOAilHryMQbcjXicTKSWbzQbiW/TpA3Xa3L8a/p/ubSDVddRwSgqqp 8LvK3Wy3I4Ymk/AGxBgvbEQ2/wAp9HfMi1I0uWjL6qV85HJpU7XwRVa8yWMGnIpsvO1Y4jKSmgqi 8i8y3xpBNscrPIh0hOC1pxli2JaGvzloHONopBUlOAoUpDjQsb0qGqOPe1XNsy2Z6WBvaABzejNd +3za0GgjMj16lDTSpuCBnNTiWtk9SlJLXZDLDnBLiMNXtoP8mTv6t/j85R1Qmpnc7KLAJqm7UvC/ ePPJ+HfnvFLy0HkOwg0DpuizqNfGCw9D8iuECplYNQfVIfORJcKPeXKhi8QjfiH0XGhclvQFMTk6 48c7xuoyZWFQnfR1vOsbtGfnnaM832608dCIW47KDZdgFZ3lKK1CgUolR0oCST4vbjSCMchJcMkO KimpbhwDdghwQVLgSBcjUETKlnXeTaSZXapO1L2XH/N/Br/jSkXOqVRejgVVVWQ01v5ncqw9ynOZ e/oxhWhj5O+S8pDqwnRvqVJCTdIM+VTJlGeRzPSZtJ4tibaHVP0Htb8O9UsKfOCXNLc+r0pt6cIL bzITfkNZ4a8/AuqWkQ9OH2WOWlvAV5XH5NThRrrukDl5fzRWDqR1yueacFQ1SxZ8XPyDaatcyk2Y LNfVfS4Ew5ReVEnZ/b3DkWFD2aakidLRoroZOrT9PNPD/lIRue5xZ5ecSuDmOh4ufR1p8ecqeej0 EJ8w6Xg5Mxr2u8DwLik24Xlb1Wn49zfPmJapPC4w272Q1uZbL8vZ0r+AOY9zlrqqqxzEHE4q5FVa gPCcosAmivJdy8RPSKi5zn0idnnS7OenMabNYYYk443ZvLgdBX+LD98aInFcmtzufFyJ6oWytncq T7zKcc918+qX1jr8ncf1K/t5jRneFce4NHPRGPFkQyaOZlAc2yL6AEFLuXx4POfZ+uo4YaByGlkV 1SuaRl6/gCxm0QaR8yJsgpPRkhLeh+cWjn5reZY4apYM5Ph6leX6hj5s9okrxwFuJCSbci1diD8+ rTHXJ4uLe6fIvUwtwvL8K9jV8m8oHi8exdKVRUOi1BA66jLbMGme13OKsUBZut2uia+w116Ia5Kf zHzTx37aQ5Trq9NrTNQq1Cb/AJ5mhwNGV6a34bBcDm/yj1unkdy0l+Jt+BppRnsHnK9n2uW/o46i y3C9dRooQxR5nOMyCpxA/UFaXEP6WXGu4Y6aeuVkRsbde24tRASkM8ZUi5V4Kh043lY5eSmnzmve T/ODw5+ujLZYjzyYeqoTWAkZn0YWYnySWcU46a8ocyn6mOz5RD6lSr0eqz4vXmjKOWOd+Z2T40QZ eHb81+4cvdDeegeWCdQpkC5GoqFLiu9DpNISOcyD8+rUK8OUH03ha7JDqGewYemnK+pEueQ68zm5 Uml/JCd5KZBLHxKKGHOBu7Qa39wXx5FUcKnNzhXiOoLKRcZndEihyWf7lmFa5/4WnLo8i6D9HKeQ Hh/pZvKCBjqoA+gF+zjEfTYhHkGqLpRdVTbwXiYXObb09GXalIQ4XGh6m+4mnq0W56MvZpkw6aYQ YkVMSGboOuKtyOBLOX0w3YUkKmw35cs0JaQ8ObuPLdrS0LejL5hUFusPzTE+sPFqnk1bv5yJbYOG 1Y5o4mLzoQg4iZcb/wD7X+0S1PzIx7afIp6eXuNLQjNUqsPGGLx0qcqG4EI4lorkN54jJsr9Wh58 amwLi/pSafIt6fQ1+DRISqYmSU7wABIux0ZxrQDRoJATgbqSxCyA5qxURXjQkc3bSModlbtEwyfp tnKmhwIdpCDkOHO2I8CVmmpYKi6tIFxIyJLnBkuyelLJwHQplr4CFM4dhui9UsdzxOg8YXE0s3nZ kpbpIqxwBUUwg+7nysgVpDQxDFxaPZOU1toTAZY4UzLH2MBF+O2JCq+DxYVFzxIVGY5DZSald4Bi hLVxr48n3DLEfZLGlA2fH45oYxoTD+Q+U8TKYrph5KMoJEFEFsUERXsnJyRycoRQg7QMjKHLygyP why8gMmWSGVlc/E1mqJufckbuLcqUneSCnq2alTQuXFDH01gbMbJf2WkCCjNFnISSA28M4Kd6rVp ZyCKUuI7Dn4TPVBXvFKLKSwl8dAkqxyTGaW3TSKi5hpA4tXJbVqnKmL2rnz8jc1zwvIymw+KrGk7 bzvi19WpX4hT46w5vwZaTj5k+RWHTTQDqezOiEyGeqpV5RAa7oOJejcPW8c4sfjoHa+FzXLHluE+ qU6Z3gPWpSxGSMCquLhZ7RgKo9yvyJreOShnAdL/AJsWP5wYIfLd06/IZhSp1DDmUzqcrDpUrdTv sd56IBBbVzQd7x8xT0iuRxFCcw8TDCifs3SUv1tCprOBR+B5bYzw+cWcxqALFokFCczhrM+TKEl7 UX/5W9VE5OuqDlaoEW5X3bmvOQ2bR5gva/fRXdrGkXrjlRXpZlKPV5lMhulE0s6L31Ka90zAZODd osMtC8Qp5SUiPBF6511BZNRypwTrCKisSBeD56XFycup0/to+6Ny+v4oURMCZsjX1QV9QlZs3xvQ 7onLjNexkC0hy95bqepD7yr6lZT1V1ZsMSDRwNGygnOK8fAS0ua7gHHkQ1vLTfT1COjcvr+KJEwc iO3F6tMJRgM2MFSaZc7haZO8lNBVARbhvpkaQ84HF9KXZzLHVPboixnUtyAMPng43ilGQiA83Ipr V0lEZacfINi8QsRFXFzHSDk5yoe/9fj6E92pRNeLpSqq32sGiaZydafSi+PPRL3nRRaKOV6ayNFj xErm7oJKiJo6UOLSbxXcs13jxvhpRpFo5taYC9KfA2UenrbLaLavK9nss2dyXp7pUvdr/dujeUAB Wjs7i0X1WRykpKdIVmBqOxz1bgluVjc9sDvdTwPLC8+IjV55EiRZvig8FRaOFCl8pqYQdAB4EQ8B c8P4ztP24c8mHRRXk6+FZC/CJEy/4bvxYS0VHhkbR+M1BUHj4dOAn8X8RPMiXPTbyDpnezovLkN8 50HXDMbIX55oUz1dw8ZaJXEtX8vQxtGIbf5vxEafkQ6eZb0ZnLlhU0QjqVehVrgdUHVws7WuqHPj 4cMQli8haSWPiVc1aQN3zIik0+Wm3kbqp967M5krM0JksdITjJQg4oAolYACmB50Hc1A8UHMZcS/ XDKDvvXd2NxQ+NCIkBNYVW2aBcat5RaR3k5MyWCisCM20xhqqF4lXP5v4zNMdTp5l4Bg8gowVNSR QSqhXtWvLRIg8vHPjUe7sOXbxoPiVd/m/iI0/Id06nrrYXIMaM1TUoaQgqD/AIV1CaWgfc9yxUSX YTWVJzLypO4dC3wh+UDdx5Dulp4Mv9fMafKlSSibbMxGZve0GEpt5k8IOKxO8lPj3xK+MeUDd0jx ZEew5l79PKWnosoO0c6uO69IUQ8k65KTWkoJV6X3ZwXpZ4rSu19ILo+Zbj/nE2aLByLejLAZjhSQ L3ALyCjkVxbTURnpZxK7g8br48PfoV8eVGrDSnnpBfUPIMcIgpcOjoyhFtu149yY020tsdxFwtv5 AlrutEfGH4u9I56ER71B9DX5hRffyGmozgf9eBl/wvNHGvfEETZPjSGioOKFfvm/q5EOlqTB6Y6e ywGg+6x9kEMCKdUp0r//AHTADnUkcTw59zDwiQKRMw8T6eef6UWaUQGuLoJI7TzNHUkyLXEsl1FD yYBxuxuBzp/PR5BDp5OgCuyGK0H0841oTMRupsLGy6EbKiA8G+BK8QIKWVkjkoiGi5I8psptZWSO VksrIdoaZM3JysrIyskckRoU21SmuNNZqeqrjjdplnpWlKyjq7IOaEvlBS5gvCy1zzf86e5bs58s GnPq61aycKcjVSHURQekT114KZEwsLzsVz4J7aV8mrBDRlgV3IAF6syXDfGVXZeSOTlZYgGXWZWX lZQCPPNtJkSyVbsh10p3kkNvOACDdwWpSrkagR2r0WZbiZhOYXSp8+qVqQCklSEqqnqqoyiQ7vFg sKx267UTWIl4IN4BeLdh2qOdYQHQsq4qR9jIGVIVyrrO0yw7VqZMwAckQyRZgZGWICOQAUIUw+xt RMhKSa7rY0WlJbVyhMCca3syW3xY0lNdRQuJlwQHDugxEEJzdQdqymX5eSwCl/8AYu01utuK9oBu LtQpKbfKwra8PiYic4sIpa8t3+KKuTxnNDQ9fkYOuhUK6uIo5BQ4CvTURHa/eRw2bRrtTIa37MeX KH5QN12T5rc9Hpf/AC9xpzfY7Lzn2EtU0CkJxVLRvh1CqSASUuXDP2DhTr3pi2rxNnNocPJdn1Iy 7B9QIQW3VYZPq1IJCQ6UqJNmBB74eGemEWSyGu1SF5Xe1m4mEiekLkvJTT0u5fDT4fHm7KU49/2G YMwnRnfjbIvxBUErgVtSMKhNVRUfR7kS+Xb9C2Oufmgh27bj1yHTTyCp44cr6k0oEa8iZTTCXx0s N5WOXkpsNLXb/wDjPiouaSDpBBnVoRC2er1UTjXcDWl6jgFNbLrxPPSiSU4yc78a/EHHSH/+Sr9F uejL9dOojK0hIQHICQACQ1mFO4OOyPmYTalMpSnUesS91GpPtcYyPDFer6lUMXqeREQwzTnc+0sb xO7YQQW2/wAH2zmh/nAjN57ujXL0UnEQq7M0Yuzi+cNtwLxxLJM9kZ5eSmgKi6sgg6aRUXPKCIm3 RYfVSp48HFVBigXiahqqJnDXR0w6sRuiEsXlZ7sstgfDqLA9DARGIERHZJc5UjN6BiPVqCzeSSot WkbN5BqtUx3L1Q4MdSasqk+M15LQkW/hej4w84/JYQCg+QzHq2YzOUm67wZL6ezUO54WbkbGM5g8 z6vmUioYkcAAkVHBgXfQ2gqFqKpdUMbPrPY8KzxnSlmk2uSOJJsmjORTXmGhIooL6mh+UP6rT2Oe WvAU7bqUNSKl3jCuoMMBHS70WnIyCiPpI5olz8O6DaQ4xAh39FvIr6ZU3Db2OEXVEZjtzPjJaIEO UdUc7Ph8UOaNuaLV+3Bx0iLnk+4guNcm1gxenkFsoOY4vXyvF9KdG23aZKk5I5Q2cWU1s6UakG/N fc/jMP8AcyY8vaWjIJd8uVNpckksC9QSA7X7voI8ymWmxX4aBqeYoR2WDxmfGCe/2AhlkRYNM/ji AwnQ7/a+q+rj/OBDt2anw1nby1Ho560eK6przla4HGhkTCk+F5tpZJ4WezRwVJMBr/1H5QN36Lc9 IL+qkfOcfOhQQlwE1MtYB8scOeLKamA6AHHVyYb8ZtHLj5U8zNVE6acVXg5HA3CN2sC0SgrGZOSJ xsNGmwvcdDLjzVD+IgOOQaUzm9B3Uc9HtQh+tbUtW1y4teBuk8/r+GJQ2zlem1rgXIc1Ck9lg2sS iRD17rF56BpaF46vzyg+hEew5ljsGlQOom3CbXcFQqmDMY7O5pY78KFOMnzDR0L3jpD3aWD/AGLj Ru08Ck3TTmmD3MIbOXDMJYsFnJmSwbcKPoQmRLVEKd+8Rj+L+In9FsxZb0xHbRvrq6vWFkw44LN0 y0okNe9GwsQ9No92pkS5TBeRUNDcHJjSLDlxATb5BBu8rl+oujApL8Cw16tbg945R6RMddP7w05j /DDhAGpXE2CSM1YmvHuxwva7wVO5XFhpnFkXyw2uhBfyE9GP5TIGiYBy4hbLTRl/TJh00QcqVVSc Zc9XnWT3WIjI+YknYrCjfwereDXnzLip5MQ/jMPnT5aPTaD8xpj+zSpQ5R1mO9exxMJhhUWGu535 BzPVlSU4aKiFK/Xox5T0gh2E8dE/jogvueTDlTUI1JEmjLBEill4kQvdHfrwhkAo3j3y0Y/kw33F +qcmXGjyC0Nfs2XSrZPNdEUoG4UolqtXWnZ3HWjt8dpqZRoAlP8ApF/AcL+N32RIeobqi0Q4Aia0 Wgjeh0nDKJt893OzS/AAEEYYgueUEO3ZJc0HCQjPVobMKbYtIOu7SotwgJkysZpmRNJSfCh9U8Pa nByX5ubPROiexmm55DQHjpiaf6e6FjMm293Cj3a+tA2LxChIr4XOc7g0T485UuzH1yHL8eHhXrzx UCNRnBguVOX0sJLhRwu0glrq0NxXHq0giJxHJkQtx9dFeYTHrTNAADupOqXGjO9HJbl5QXL/AHSU Lip01FvHnxprfP7w4FSaTgqJIa3ejbVRJ3ssLLKY11+Pr8XMXPD9uTwfDV56Rp1dWR4PqaGvOgw1 HieWzJeI7bvpHSRJg24vx4a7F4h4jhXgNn+yq05obWZDW5Haay056tML6lX5qoZjUFlJQNE89WDb 3AFJsoKoCKgctLYm+IjTnyIa2P10ws21ioh7HPSM841JpMeLT80YckV3uT0ktC2w3QugCChMuFaH L4v7O7S9xAdY8/JmUKZtixKRrXTy8eekEy33sHkLAaXGlD/V7CCM11dX1NaXEiDbvhBJ5kTNlfxZ wlS9fEe1fcW/0jyNYeuv66oryZ8uRI3lc7oOpeZpJQnJzOx0LuOmj4XG8EtHRbf/AMhaGsMdNKOB MeBNGGrxYmp6CKodJpJQlNssNroQzEVxdcHJhwOLZys5l+XumT8myxTrBwicbigqqqsttOH6oGZE 1bjkXzEtUXfmLyn0dn/bR6eXuhrD1WGTlypCFftJBD6uAfiPLRyV1i1iH8r+EKK2uqM1UDxFVLJq Ogk+OHsUuW7CCWheJWP5MS+lM9C2X5BC8n5r2RYOqXiybKDwdZ5ucYAsRQc7PZAgCbyXQkXiJFmP lE6xBcDdx/tphdSOKpMqn1Dpbhks6B/EnBA3c0h4l56RV/VL0suQ9VCEQZR3Gg2AE+oZz/0kiAvN tUc6PELPBmvPxdem1ccABuD9tNU+lQUh0kAszggGqbce6POB7B/dPuEDnzRxtteUHlDJV7o5dUOJ enkMnYTRhTGGlh4CRVxCb/JjknjKKTTxZdwat0HchNDQW66DzOzmLTPFYvqMDIcRy8lMgqYXEtYD /ciKXXp6IjSUVKkXdR9Q7lZHubxIa7kSxchu59G0x+Kg8QgioekH4v3F4clC11zZb066JwrlV1Ee HhWRMwkfDXcioCM0zaPo4ES3RgHIeXlFse8LeZfmEGqdqQk7iSElt1NQC3sgdlmitj2w9t/4xQ7J JnkaILovWvUn/ZXXkbPbpKEwF8wHfnEHhz+b9xYc6WnyKjRrpqA6j1BOqb5F4uPOU/M8yhXaESZq OYJfmXFRD2twR9Prpi9CEisWjE9xw5cZZgRw0OVCTwhOc5sxL/UdDcHJjSIPLeAjs2cwsORdNMsR 1cNfBFqtwM4G9O6RAY2SvK8Pn1bhXpBzgl/Na7OWmvXz0omy3A62ZgmgLtoA97U7W7tYd40xRD8E jvYDsfT6LWfnh69bjeNRcjwK8dE1YocAUxeS8UHTRDXPKBu7g56MvmM/WO8mHzNcKnOK4+YqMxLJ rgNd5LCSb5su0blDXzu5R9MnjjzCCMjD5mx+qrkOubhfgK8y7YXhx0T78WRfMJbi8dIa5zn0dacp aUz00Zep+sd5MPEVFdw5OqLklyvLLTfVDgEm27ChO7bwxBeuW45cn3F5U6Lcy3pz5gK+Ga/MKCzI JIYPXSug+cFAuB2CnB6tEgzwicSjFfw6kWLpRNUJAbzO83M0pIvgVc84G5q88ejTIZaG0/2GyEtd aiZEaImxNqIXP+B6osPyEiO03Cw1lNfK86L6v5dWnwhOHkw3w0cuMOSYz4/paFcHA5uePHpmPkaO 7JXimKCXfXgV880RHlGGPM4dNOfvccfnLR5FAsKNuvTYSuA9o6iNtQX4wPxaOFEk4Pf6pyf46XPp EAyxEZ0qOdZPKTJC5upFUl2YpYgu+lhFjybO81yoLTKlkrAC2NSFMC7XYHnyo8c67ks0s5yWtYwM CoSluH8LlRYVYSQ3SW8saEuZ+9yi4OY6GEuTrTbiHy3j2HkXLQLcG6Gq22cyW4oEIcmERgQva5LR hyRNaaRdqYQHWuwxs5of0s8t3Ti9Hp6RplY46j0QrbkaDCURexmG6pFV+QkfkWHuc+N+PD8Qr/uK zHZ0Q/J6HcJ/LcWnv06fohzLprquOOo45C6Gh1Db7oDNJ/K88+KCzS1/nuetfiJ9KejZRls2ndBL MBR+wJo/ZFezNa1ziSpSiXJqSWJ91Yjxzic0gMcix85Pmjl9Q3s9mzl5ZgqfznWjVz/wtu2hrpH6 6vPV6o6NFHGmu2JKXM7FS0e4Z6DQ0S9dywrx9lFFcjkbmWNFVwy24bZ58ZEenDi+YtKnzIx5fVsn juogXrqJpbfSlVnZs1ypzPIPWcCnj5UnxE9IqanO4Bx1BLbPXKl/lZf5v3drVHlbgE0JqlSapNkZ xny20oHmTgD/AEv2lnR9bfbu6erGeyii8q+o0Wr3w1b7dE8ygnZlKXzdjSSl3DTR8YbZ6/ro3k6l 1acF+AJFn/aINd5I/gXQaCyXt1cmBcTTxDWLLZftpIGemnqlZeDchy6izldCpM7F+0IreDGkl+Pk VDXJ/wC9IjqHCmWHAcvL8vKNcu71d+d/xRg+2MTVSbSV69/3a7YoGlhLRW3D1vYNph7lpc0fm2OS fkQ1piy2Xz5fshoeh7afnLB9mevhylIi2Y0DYd8QycJMbsfjXFl8y7jcEtIPOiU9NMPTQE9pCpSj jDiOhwdPGTKeVkdiRGNwzTeQfzLLDR9uuySHyWwej09dDYLya1Xt2PuzeReL4LQ/ULmhfo27M8WV FskH7crguK/Fzzd26U6sNeuVTxwfX6KG6dOQhjgfqY7B8YGum1KVXIzg7nKUZd0PzYZ7Eiz24TnK ZpSmOmjHXOc+PnTz0ZeOntGeuqUrRdOrwPLb2g+gnJNt2JPF0X7PCpt6Bbuv6FvTyCFmvyVJg8L8 R3lccVK/ubxoQBFaR4yFPBjtHxEtri43wDDb3Umn/bykfrVJV0yGpry5aEseCveRM3xN3M4s37rR VzyYb+lmrzLen0NCl8AIAcEUFweUIolByuPLqojuNWcbabcSFS9CTPjyk/ihjwl+ZccEPxBESXPf Szfy989KQepR6+prXQ1ahnZtPv2JFmVwnA/vpA5cx/8AjQfpkw6eRq48cNOBDZzVLprp/OpZldt8 XY7RQvHUK/KjSJp6vPRl/TNhhRwvhDWGsXr69Vci2x2vdZJHdmZzjlZpVB8BIr4Fv84Id+ZGicvo FobzLpnpB5+f80SE9SpZnVI7xIvDi8ryYbkblYlxmgpa7rgvanY/lA3dmlOwR8svI2j4brB0Yq3H UEVttrDDOKh1yQ9Nk0ZyRMgs1/D3IdDcHJi0/Yzdnmvz1ZYcwqXxXHFSpWeHr69tokQF5GVAR3Zx N3ILQ7XHxKuDzYBxOz/jTDka/NWX7OuYrzuMVCGXMlkiDZR+HTjSe5wE20xYPdASvzQjH44YMjho Q1sdC5hgzeelKPtW03NZaHAeh51QNL8u+2lgydxKG/Pw+fnB8OxprA9zmMDNqK9NM6B2hH5mejpw VJM0XfVwPxCuMcZeHFyeymR3sml2e7nRCsWcBkxp46NG4IpKxebmjSqAtc9IqLnk9Dve1t09dLg7 HKvGKmL9pFDr69pGU95NuF0Tkc20zmC9K/0Fdei4ieT7idkkOfM7V6m+1cjkWfGmJB4wqmYXM95E 0s7EiIXhJ8vziX8WMK/N9uylpvr+2gGXSxTOdEroRQvp38L9lI3zB+5gl2at+PfpGd65SVSbocCr UPFt6UlEe5YwRuNlOTMMw/mxgeh6nA4ugd2GGuDqS8hnEZHPV9QttuE+eBog088HTmNSn89Lk+oe VP8AcKidyVNQcrWfUKrGzYuV/EnZxScZ36ABppFT6panp6Rp9Talc0tUKhKVU52xoNE+UkQjZzkP BZr/ADIh+THJPa6dXmFrpdZaVIYMacRw1Onn4OGrnSef1/DDNEh4OpHKmKivSk1yRgNE8yhvBtJR wUWyw1TxFfiHjpA4pS5LbcdPaPEASbySIaI9QquotFl4OhyPxzvCLBRYRlJMYap49uN8a9I2nv5l eYUpUg8SE1q10PogIbHcehDX0buWKto9w31eZ5LXvDo7OTrr2tZpgL0ekteyk4gCTatdBFj9yuvU m3A9LR+UhN2I4KT5fv6aXfODZzT5ldMsUsy8xmliN1tKU3T2PQW/o5wP1QPdh26v+cWBwNRXJZhn IdeZMs/RtV0kjGb+a/mXULo7nfkvotg88MKeUiZhYKrDcSq8yio5UmlrRyLJs4Cbpb8xLT4XG/r2 aEaJ/wBvdVF9TU1C8Qz4jybg+lzvlvGyYKSmfVdi1qk4HFLypHmXOn0SdQpIpevr6gsiQXK+TpQn ymIOjch48oIiYS0p5lzoW/O1L2bTk0e4pgmLVhvaWgvE08YUkRwIMYGGiks7J8WO1LXeIX0tLiG3 8G+43ZfmlHmVhKVCH2zGquFIlqDjEjfbX0bS88NpJOT5aVxCM1rk/wDjAboS/XRl+QT43j/jZn2g ZhVbrNLLaeKOKLCsSnFqm0ri49XePJB8x8t2tvwoTi04cIupuWfouNx1aOOB0I6Vc6sU/L79RUBe w3zD0+gKIpiuZBR9phXWpT9eWsb5f9R5t8RA/wCuqK/NS6pepYyXNE+83YUua6z4Lvz4PNj9d+R+ hkufrHZr85aUp+JC9X1xB4EahqmXaopZMTjwhkknFlNfJ+aLz0hWuODyi/306Xkw8KaRXvgTRjgE PRKIJrvJyMgpzGfmvjpjrnk+4ujUO95UwtaKFDTYXGK9xnn+Wb6CsJZInE1pk+XUB9iGtPjR+ekE OwcmvDGXILQ0ORY4mv1RPf8A7YJlfw93+2IfAeoIxCiEjxUqHGpLaOVR1QkctCN4mjJqY7UoUX8W FuBj46PuJpuP86Qc9NH5h56U3Q9kdKciCYazjSu+Lnz3R659JLva/wA9MdD8oLO++FvPTy5YOqVM n2XUFxkz7oio+KlpIkQHSdS0UnaEaZy8oGx4SwC/tNHwht/kxpF5Lj9NOfuhoBTZC8m1F1mG5dS4 m4aT6JpPPkh4+7p0K1zV3O/KnuW68do0XZfLAyxVdzfX58KVrwNYxMlpoHm9ewGvgIF/GvsbMK3e kO9WSXGVTRXR0oZ+e3yqJh9LQRmu3Gt5QC5XDBgJjypxecFwwEMBClboHYT0qKkG4X2mrMr+ci23 1QkBKKkMjRxGUnMgKiGNwvoWMuYaQedDInv1Y0MhU1NecIBX16qWUi69373QkkdG0x2ui5QDkPjO EERAwx5lvXy9wpMOxpuo/D2NNoizKuV6aWLql1x1hukpKPo2GHET5Rbj8n3F4DdD3a2/rnRbmGWy g1Z70oXYEjyD1sNQDD7Ls+npNpiTWoNugI31AOGYgO3eKEmt45x3sgx+7H4QT3G3FVbckP4jI6pN veDXy0ktd8+EOXJ9xaOS5UjtkIyprixPEiI0VGQYIw5hImwTs/oKwl91V2vcmsuN9Px0CihIUPDl BEXrmyoLsvooTjshEK4cw9dsQImvhKMprPNNvyeOcuX4qLq1NdRUPzf5R4A6p+qkHg/XONAhoz1x Vbia23yVbfJuCJQpxZCVrrq2NxX4h63BycFDn/gvTy5f2uhOS5PLYE0DLKLAAsS4BYVFS3MdotGz afaXMdphl3rJCUDK6OlCRvNuirM44mrl2uYtCuJ3aQLqx5KLKTX4r0bh6BP5Bh4aXA84vY9Omieu JnketvVVqFJ6uBUWO80kSaNebSVNw4c4gEOaw8i+migK48TPmK9DqL7iga8MJInNJLh1f9vjs+hc 99HAn8pUahj15ZSeBrnIbE5eaYQS9S7cY+UDd3OkJ7KXCKtDOSTa9BVE9K4cy7V9UWFQlpCU4zU2 kqSxuMPOL1aF+QQ09R4TSdRnZhKYIFjNea54Z3K7D6WP/h36UzDHbT1JA8bQg+yagmaMKvACmlyp NLO52ICKn4F9O3o9dMv2il5cUllQeNQeRFJjpZxLbDkzs4s3Y0nRfXESLHBCx0fbrs/MjHtpiOhb 09FNwxCWEqD0L1hcVTpZNT7nS88Nm5SISRUDYM8OjVQZylUrcPTKg/2qq3mx+NCTjA2T020Dv0Jr qKuMf84Fnd2c6Hu1pzw05YWunwB+iFslLZpns9thOJKvVTZPhrUHC/Z66VGh/eD1rUiOjbeTKZSU 6ImqqMEs5tdg5J5tTgYFfaQ7rdm+KCxaogsJkwjqnIu0I03Cj61RdEORccGO3+TDhbrsmIsiKTT5 FvSXka/MKbIRzlQ5Gc37SUHTyk22Ro3fRyE+Ckpy8AvqcvxgQ78l3u6XZMWXixaeic21wnVKD4hJ Xim3C0BJLEMlb4yExpNdel6YwWVXZPp0Lv8A5egzJ0qexY6mO5Ga8D1nMipIkSEE5pOjWe1ZYBSU 4LKnj1ahWufnhgyHmrgDLv8A5e0+4sceoc+E0n2M0ICW9kDqgalrg1IBLAMYoEsTNZX0ckFQBJu9 waWdj4xogmcvKuMRbZ2dIjga7PVM8s4JOKYQa8+PVpDQ8RcEGRny3a3PSQ7+WlG9RJqtSfMRiYFe pIkUEtHSzqxBHiZyJjSa67q4jnyggzj+K0eZekHL7z0ooOI9evOTSOH9fdtqAqcS3OsMhvLF5Jh9 UmN+LUK9Xxiee7WlyL8gqeQTmmCpn8MqgsiWqM8lxVxamLypjfq1CvyZb8Z/Pdrcy3prYXR0NCt5 KVULhJLNqB3C/wDWKyQz9pHhHiZyvFZdEVIcEVvu0JfeTwg4bk5ExpJgYry0hoX5wId/RbyLHZqG jfXVKq1V9YipCswWMxIKE89iRD3PNNdA798OLSH/ADgQ72fQvXiHLSnuBv5eMnoOniyJaIQDiodc iS0+LUx2qgDx4tQPFwc33E03Hfum7WGePMIJyZdHFHzF7HzHcPFERI4Z5nrlNpJO7Uxe+fVqFevR /c92sPPTDQIdA5ssfaWCgSAwUCfn2x5VY9h90Z2tLJqHUwQjA42A47teBonpO/G8bfl5Nlhqgova yvwA+MFuu0FzRfSp2TBlhyGoIhyWdiL2a8JY7xGZEZISw/yYJuh6vCJrThuKkmC/UK/+5QCGADPR 3SO4muO3rwodA1DJkWmkyvg+2m8yijiiK5kptRGQMkoOSmvlMyVoMoFuFQgIC3m8AhpS9oXAISHV q5GG/jNZ6hyg2Lf4JKU1TKlCc022vBYmUksqWYNdBHw2Or5j6AlqnSg7Yy8quaTjbzqUAndvU7os X1qTblF62UzLNJLLjLpnwMvoQGAUOFmJL2FW5u0CPsu6KwTsoWX1wi3ERNfFrQm1zsYFYVi8nM/H QuIvgVjoXnHLktpRzLZQ8udohS2AOZnm56odSaWLoKxow2ohG+UjZQVTiBBGGC4h6SfGBGZ2YzdI deFKfeCa3EEgzyMFkN7IjXa5NrsuG5Rp8ZRfiWlsTxNCtccGMPodg45uiN0UnZPdS+FhSPVCyoKt RUFUNQK95LAJJObZXktd4+uWzmh+UERf6UtvkFRbkmWjLFdGAA+061KdVTHVzQ3qW9+jOsznM3UJ qbWVlI3UqUpyUgBIuSWNGHCGcOLc4SqgiZbZdhnNKDjeVli8v4PCou3/APGfFRc0jDugA7MeS2AB RPXKPAkDB6vBbLI69ei0c0eOD3TItDcqBy0geGknJ+Hc/JbHq8zfVIV9ToulESJmaX+Ldp54sqXc 04l1Wp1zyg+/bgy6e4avqK10qwKpksoJffsSIm8c/FoqaF6rK823ygbu8PazcXpS2iWAILinbCWM 3x4aumFWZSq9jsB/udmm9NIbwdKHNG4GsOflpHDzfcfnu1nZht1YU2B2HlY7p73jQ+FWKilGxRg2 TS4YHHvo3o22T6o+uPl1aY/9HbTuPRdkb2X6aZ3dRNKWCpgiq1CaiQneXfpNqJNzJr5tSzRfDS4O Oj+vbyL8wuXmNN89iXZNRDexQ+HiuJSIwC8UIqRQWkdJbxwE1MQWuhcg2LPf4D51fbSp5/LdGnET bOFFANaE9UEGgoPhDfL5l0kEAhiwNu5vn84ztaKeDOe1oKLDcPV7bTIsIJxUZbOjGUFZBs3UhBii rmkHN9xNPD40hmDL9GmtKXXidQvGnBCt8V5YtFAq3Esi5bQisjjdl1/Mr4XP5uww+PvnoA0tBtvY 8sL75ZzqaplSdKDdaIciE7Ee7XM7VQZhcq4hy5uBhoQEsWX7XdSUq9SIF0NxpRZSRypMCWaZmjCm TQgnctx+/wCzlO2/6QeVejrPEbPzOX743Uk7tT1glqAmvPnweNmBs161lzOJoQokB2LuG49z30pF AcMYqSrggrFSvUmknoKOlkjkb/CTm0XARuFFn+cCDPmQ1mnJ6deLLHzqJ1ClyUi2lLbbh8lk0tFZ 0bihzTZTPpeFxX5q7sDd0c6noy5YzxlfB1BbjqQEduHkptrbfa96HW2kmyd23Dfvh3CW30UTqTbQ 69pEGOqs7kelnM9R0kpNRTEFU/Qfm+A+W4j0aqJZb9L3YslprLc70A3WZzu25BnenDi2xOxmbFgF MKM5FBTlwf6vU7qJ17kSxasYqjRJjtc4l9yuLGkguTP0uYBNcXPzwN3RwedPkZ0cy6KH5UKrkSy6 HGk+WhwoJZwBgm99JNJAPpfz0urrf/GBDuWPd756Mv2M24K5HYKkgJ7VPEEQy30s5nqO3jfiFU/Q cub+lnluIc9B6KOGgbHONcu1a9DLGW8VWL6R0k3fHEKp+g1zyfnLyTAdWrCmT+lnsUpx6uzutntX cvys/dzj2NipwEHeFCD4GMjQ9UlwpabX2qq1GhNrBUhvnpN78TdzOPCXxAvIQPiYcn3EFx9syIpN PnoNNA1SwR44VSJEywHQ1zipp5D1X4tuFUXRHwHpAOi/K3zW/EvGnHma/KTDuVw4riDPSq9uFjJd hnFM6zzeeLIKbSvyV+oqGueT7dx5rUsCuR0pSWWuuHiAmXAzSQkkdWwvS6/mVcHygbshANFnZjRL gfpR7G4BzH/pqjvkbpL74cDzPvfgGYp2Vm0kEKFCCKjRvrx4GC0NtHr4ewbR0o9XmVJQQWElkjhs mTFMUz6pr1apyXPSIeigf345KhYWXgeInjRlIYawqEnI4g8JwV4ll8SGvugREdnlu6f/AMdKaQWI 5RUXkswlHnVxeal+Royap+kQ19Uvvoe50quUGeq15fv+HJPMmh35gQ/TX0gcQ44SwlKeFFmX/pOb Fy82VzWW50AqxDboci2pEETGzc3MgCiWDV7G8Xt8Io91JvDaPpRhqmVswvHBWmgyChziyJfEofGd aMn7QAMf99KYnjBw7ViCsRbSnSmtIwgo6WSjBbRdgXk2YaNdCx7i9jtj7XE7B5L8k/IyQcjeelCY HGS3K5LeKVwBkqXfixfTxAqdWRU15U/Tuzrl6BGnNT2Sy0fEVk2y0aFhGpaSlDmBB6GJyG7IVmej qTYIX4ht2+xW0OUnBpYOUPbZLsysoZSGWT+DlDf9nvTRsp6Q042T5YM5SJdBx8QK3QQlJRYXJD9r E31XepZvK2mST1iAz8SLMRVz3cWjomdZwipEGeecdQZMl3loutQTgKyB5TPxL8PIS0+MebuHNbmW y5b8KJwUnUDyL1GYpr/tQqd65m3vzZ2eGuI6vNjSKUvTjup9iO9mfZ8h1GiPqpeJZQTIbqhxxuAT oA5hSxRQ4lQ1wcG9pY5JNfkoMg20554J9lJjA63QwYHHoWQuTmtFqJDXRX0bbwPJNcyglLq3khJc XNJRv/CY7g/wemlv2Q9KWz+f5Tms5l8hnW5kS8RClrVupWcAPiJSVKAUoBNQHIJSGcpBWTGTzSpo MG3wDQlhvAULVvVuXKhr3usJRNGiBoOqLb2ULnVP4QtoQ3fPf6UugI6Fsf6ODzX3DrwnQqEWm2zi dgWG7AVFwtDZPXmfC9Fbaq4SXgFUmK8hIq5o+H18ysKYBtEqUHYKWf3e4niiGAhvCZJVFkm1UpYF LyXY6BGSFMZcfuF2OPkwOGrGQY0zhZA7InHXsj9SsQyiZB+HDdgBCUq13OcNN408slS0m8AMVmz7 bKERHjyWTIJDt3pcT055BnOU4m0mFl2cYeUZItScRSl4aN5WGUhaUlSklag4ol1cLFiZfZ+bwPum 8CSN7izh6sSRze3MRbrkOV69VJyHaaqDLJuE5mbPViiwKkpr3EvlwAh8YEO5T+NIfSLypH3VU1Fc jJ7ctGKpkssFUe5YbPdIOrLkU0Fr+Ilpc0f/ABgQ7EZAyHSM3pt6pxacidCSzHBtYiM/0sy7S6Ws Jfc3bxs5eSmQfq74kY/zA3dzW5lyQMWPhQV8AeyoMd1RBa8MXxBZxlkd+PDMkdwq79RntoG/H1NB 00Q0NwNqXX5F4dQUtOy3pu2f2kyv1vl2V52nKkgneUh3CN3eb746gWJIArVhCOZ2cm5aa6pBdwGr cCtLGrfIxqB+VLVUo3Qnasd68y0ogZmqaB2hEkmDkY0S0u5fLjR/8YGI4xSaeDL8vZYUuA5Un9I0 9mxUrwbcQEsEs6w43FDnSNxacLjf5wN0JBoRFJp8tNnTS+Cdl1uVNanoa4umXax0FYBa0TVkcAVE F0eejHfE5t9xbXv5FvQcX6A4UzRHeI8D7JhBnsG0Y+HG5Gc8QdC4z0lvMUFJzNIBwvpCWxELhxyu XDVyZst5h22UIYCIBbOenb0d5pnGZSErPKVi5k6fs/VWYFSFICSXqWZi6rCpcB3Ln9nczlpXLlTD MSHItUp5s/F9e2L/AE2uXFJyGSJ+oLMCOCWcvo4UNnLsbMabixvpDXBkLfiIM/xpNOW3T3Gjgm1/ DXglEUq7VA1xK5IeqyOjJqYfVF0eZdx82G+4sOa3Mt6By6gJoa/KY3YdvCxM5GuXYD/tCpoIBU3n rPVnCw4ltt8sP+o1zRv14D6KboZKCRjA0i64lRHhdEhOmDYR4mshY0kz9r6rlfCHqcDdDy3hb/bl haGY0dZj6QdmMuSVTM8csRRllKtwvu+0SCB48uESWy2b58gQeVPjXhDOTOVCZVGK8kN5I5UmqLSw kqxzjMgl+AV1avzygbvkv3UcXoy8WNHlj6B0LB2PepI/wZGeeIpQIhdecj8WiZTHFLF6L+rcPEYb KC3Xme8UdGMLjjdTJZKwlk89R3urPyYoLoDiFCRVxc8oAHyHili9BZfIZ+6Za6bwslx+hXDaA8P4 fmHkmu10M0kqaSm4e3M5E0gqLq0vr2Nwbvq9lczH0k7ILkVYyc/yheEzqWElTABILqYgFrigc1D3 ZS2XzaFgE1BB3eTig5W7x4A3X34eeFuuIGji4Zchdhvx0IsYLTSsj6NMaA8L12//AIl7OaHL8Yjs nJ7unno9OumsDhxKrkZv19ehqTJg+aOZkw4ekxDumx4VPntd18nQ9O3ZSj3tB89XRz7tMaX/AAlY EH2G/NNIDwGKLGjbGXYnrnh16RwXHBzgcXhzWEhHzNYdLgRzvdCSlF8Q5jG23+8F45crwia3uUqY g/QqFYt/m/L7QxxxH2f9KOwkpK9Pm8/PqokALCDulTgboIuXBYC7cI85hluaTU0BLbvVAdyzOBpc cDctThChYWV047SBEUpNckUCpPMW2yEkn8WUB0v1aMOBx6uvW/aQ9NOV9cqOBKYC4WXHDmeexUtC KxyaYgpYjx8ioa5sbv0pxeb08gtdK5XYs2bk1dL2e0OPjcbiuaciY2Xg0wyRGJb8fgLcspGXBkIY OPW1tWwaTeNZyHULGRXumIyo7mDZ4h0cSzqu3SZLFR47uAAfC4E9IXEI6vTrHCltV6bPR5JzeVyY nsYnOt37Eep8xBxCop3ChwEr3qMQ6SYTf2dzXrF09WqjvW1rwh3Qa9DUkBYSWqqqTJguV/GRFdWJ 8polqmPEqHrnrH4rdYeXo0UcMhrCDerjQ1KEtmdLDidJKDyni0qIXz55wOKQSmHItl6sNlEwftQW WLWcSk5uw7dTkeyfDpIFabcJzbb0KY5BsIOu5ZCOUvdtqe05TCfa4TELotBRMZ0EERWtPxabjjdi RDq68km3y55FyUpASl9auFCRmSyBlk5IBrmIyDWEgGi3MvT7sLleb4WR/Z5964xlITgIVlBQcU4h T9mMPeDq33G6wcuCOMbpbZ3NAOlukpq9QQGYGnIDsq9CK5ltgVyq8IXLCq6kMtBOD6AsJZ1ttMoT BNU3a6NSEioaGEtIHFPnvFJ2TZbLoXAmpM5N7GTB9VfDcMv9n3OwySwTJnLtcxGa0v8AHaHLm+4m nr69tBYQajXAjsj9a93HXw5fxrudK7XE4UiC8btTAxEEJERENv45Lf6JTANY40Jwbiy1rMllpPr3 g/2BDmCDXJ3MKO4Ua8kw+lLi04BFF4/5TuAHYGItaeGM5U51mv6QezchtMnJMbKM/wATOlqw2wkY ZKzvlBQNxLsVODuv4Q8wdnZmZlOlqUE6MS1mGrcRX36YXXjhFBa5BKXFVSjHZ3zzke9ynFr5hKqS 8Ch5vuLb3LXYOhb08gqQY5U1CCgp6E+C/dIgOvHFQkz3Y3iY3m0lQJ39cekPN5x+fEBHYGyeONB/ r/ZaLOcPHur18HYEPZ2tdUHMlm9ljRtsu1L+ZdCA0uAW4P0s9ISHG0rNvZKbHqyvGkN3tZ+wl0xN pjaONNwisvSGbtBbGSEjLlwCGMwwdAh20hAdNg107FielWVwMpM1MbN56pacMKIQN9YTuhW9uidK jup9qjJsQLGu4Gz00VFiB1mqeYHuV5jgY2spJHwTXQ4jLl5N82KX3E7SDeFZ7wx4iRVzynm09rWd nLRlyw6VDkBcJuhPqHiqloXWgMzzJtRYKEw7mcaUtd8+PJjlb508y3p5e6G01ggwZarPS1huEag0 tt5e5yt5wnLybJ/eCGhzm3/bRnqYPoejigzlUDDka5onmJNJcLkFSBBD56Y+vR9xasKcfX+lLsCl SkE56lSVFJHqsuCGca2Y1c3uXpYZbYzM6FRS1DUijtXRrO7vR345H+AriDwZx5jmU1YzNUOxIsym zmK7xLx7E6zmuatIdmi3VLTJh0o+y5Unl52ozxr/AI60dBYiqiwTtjJJNZTYmQl/oxtGocg5RNP6 WdTC0zYfIuhGHVAduPBpI7OXK8yZLoIpYM923wspr5aQIWoUNc1Ub21ZpZzVfizEZLrzJZ4Ohtpb YiQbE4F2RaEAxWoqMfmw4HF9KcNo9aTMf0l9gZmby472eEpIJ/6YxABSXU/s8HNn4QXK7OTUsMwQ 7igDW0t7/C1TE/sc1J9q21+Hr0NNzeKEE3QSORCb3NmJbpQrgfl9IaHPDWubcQ65hfFuRBr+6rDd cSkky5IgKjEkz0lW5itIUJa49ei77foX6JyqBnsMiw4oM+LjcPXI4GGTdBJnt7POQyClLqKCCuyQ 9u2QB1baXRFR4LkZ0aoQ3ieLXeVnLR5Hu3P0vDiWWOr1D6qYH6TWwCc16SBneibAN7PhTQ86xn+z k30RgwNCxGl7Vo+h0vWkYXqkfPNICLVcZgyCp+OC0Irfl9+4XKx/fTR6UZ6lHSjiAXIjeTJgelnO /MeXMWnShYS6N/mWy8R101QchuhrBVHSq9KUrnQfkaQUOCmpn9dBtX3F7hrkLwcYaUcXk9xnkssK gl3WSRyho5xYQS0LxKhoeO7ZR3/8qtgUiiM8cWFb9Xk13148IWjYqccHeDUMDvtOVPAQ0MrkaUMy 04HoJNLOtuGTTOXa5naGpDRUPzflLlvFJ2ctA1MLEaWRDevqHVD6Dz4XEPQAuVZ6XoHBtkHLtTF5 L+g4eT7d89hdnPT201g9oJsCJx8ueiA3Czt44S1rNFa+QTL0Q/WOGxqjLVt2zg5DduKSqK4uISaa UOKu+1Yn8gBCncU+n7vQlV+lHsqJozQyvPD+y7bpolu2jPStXGsMv7KTYA6wawqOXfqIy+Trq9YF vvF4VBltrBUmqaHw9STl238l6uI0Pyfbv/GmsaOHGqld7xXKgymqBVt95w8SfBh9rj8x+b8O/Rqw 3U1hXM9q1xq/F1KTVJRNHAO52b8Jn9uHTjv6ApAIqLxFNzccxTBUDRwczV1YeLDzp8RX5P0Yy+qj PZv9IyUz/aHLdn5TZ8j1sQneJNCSBvF7K4gWPe2FbNmVlSZrMN4seq3Dd4eHMvxBjK7xqXUsIKge bh4siLCojXLdJwneSWQa88VpDQ/N1p+RFNvs84hr3Y+4PqrqQ9JNDSaWy3L35ymIKiEtL7DvpDxx cXEewAZf1Uyuvo9fU1vDvE7m0UFS9Ln78u1TvXxEtLmHJ9xTlNreWghqpoixCczyyhaAhkx1W8li F0R34SR/GXh5FQH5cq5pCGHKMFz7qd+ny5Spt07oLfsk7tH43iu4AZ0irUD62Fe2M3rCONcVLV9e eMu1n55cpNxFPCaDuRVxD6/JXnoyvILfTC9sB4V6A6YTodRGMswIgGkd0rUN4hKxO8oZvxL8ArrL jgPlC3XZ50/3989KboJrFRWuO6iNQVZMQDXeWiasT5Mvz9Cod/7QAcGs7JhjyClQb9sZTPLDocKU RY6JFGF6C20s9Gyz3nk4mQ0VP56IVrvOf+1IfMPL1j6gp5nyOh4ddPlG+U/XB2n4Rrmzqya9kwbT 0ruVpsJXe8r0eqvBEosXlDNeVV1a8NIa55P+A+RDW/4xpc9TU1FcjfAaSGWul3WdWEg2N2xfaSpf XkPPyc0jDbyL2cjX5yLo3wwbaG24LMZqtWoW3JDdBZ7XJHGm7OLYmYTkta+T4y/sW9NnLykoqa49 U8anlVSG4b0RW3Fjxmw/0K90Pygx3Y/rjt0SxMvKEs5IAar2CRQ2o5I+N8zOvf8A7oZwA9wJivVb jchhUJ4GzZK7IZvwNmnH830Zh86dex+40pc45O4naRsvx+qCKkWb6W/O4vEg07DnLlBa764h0KfA eUDd1AyHTh4AnjS+Dib4QI1JcsmqC8Tz3RPHRmNKWGF9Ier165cwtMqZmjw1Ut+QHcNRUHlJbBAR 89bZs3z5hpcXgJFXP5wIduzDCXpxpiZlulSgIuKswcl/y7olgwoOHh8hBGeyoEnUjwRb7/hkx9No sJb7S4fM/O0fSS4VR9TuJ6IaH5QOLSOehH9+RlsxfD1tqqC0me1Uo8BmNBVtpZJyOG+Lz408e3Gu L+pxee7q3cwqEwaqkq2zOx9p9ehrhlEdEWoDgi6QlDl2igvxCRQQV3DDykQ5D6MaD/zOoOEFFj1F eKInoKOmEng+FYnd2f3EPjzzfbvmQNPOS0mgOQ98Zmf1amorzLi/Ew3kyYKVaoNxgVxZNeM+WD3K E7tTD/z7cYDi3+gNT09lPE66vXjSi1WBXmUQwVOZ65HDmYJt/DrvofN/WM2tIdNPVRwUuUlUsNUx nLRa6DdZ1yOxw+MJj4afGvlFsZGv0Ub1LlUVUEM9nLJY6CdS89cKsPy9UwxfA63A4p8yNkw1+WlL TC6HhHV6h1GjCG1c5RbrOZ6sOHM7tFe1cdD5v/qtT1IecrgXu8VuoNMljoKwlEgVlY4F6Lqp+m/O CIk9TpDmWEqep46KOI8/nEjeFseKiGz1hnoa2lZy13RxKbVzfNnBFQeJF1dHm/pZq6sKYnzNVg1V aYsdVMmYTlTlynDasTvJTgspr35sYqIYc4YMuzD1acsJ8hPllZEcoqrlTGRwNw+3DLta7ybbXJHY Tuw5yGjw10JFnyHW/wA38Z2k45aEejWA0odtOTuY1SO6mA8dJITqkmWjux7o956JJa74es+2p2Ps bgeQ8ul9MIA5ljxz9H3Yg7KejDZ6WKWWshS3A31EFLFbh1G1VAkUa7QftJmQnM2od5I4lw9HPJ+z nziPvxAqEdUR4qQdPORpJ7W46fkPUk6Dk7iwruOmkK8PjAgy7ZDjiy/IZ+0xgThjo3aqa8W7PNfo 3FA1yneEKGmcu1MfjXXR49jRZXXNbhmIct4Xc9GXcAaBbabHeyadZ6qnRGg6fcjSR2Gc5SQ9NHNJ HNZ4VV35jXPL+zu7Nrp5l7X7upi+13DFVi0lt+MUAUpSbcaYc3o53JD2HpzG6vDy7E6zkOzlIGlL 3ha1OWjL/UMKdc2qy84+VIxGJKCFApHWG6oGhNXIFBrQ1hJl0wJea3dDQcKmlO34DhG2LtSX4fV2 5CQuiNuL5s5nrkVihPRtMfn6ahUM/i/cWkc/10nyC8yxj5244tVqw3EM9ckWEvnLEI2S0JbMWtfP j+b9xaRy5U4aaCHka/aN7DXjFrSCsP3/AF55NaTwVUhLIuR755drZiW6doPjR8eT0RNI0PkR5FvT 9fOWlJBXKXdgKKDHfFeZhcoIKwlklh7OHi3S1UELhuWKkh/GJsZDpHHY/cR00BzkmNLTOVZZMVCk gJG6andYE5jY3ty8YHzImWmujCoLqJZh1mca8QYUXl3Tr4Zp6vUobxASziWSckWHaT0b0tU5XDoX FRcEOT7i0jloQ6fLTDT3z0onUq4IkrKxDk8dMwuiQUciWSOOx2E9G+6WqIQfnU0f5vxD8yJ89N2n nLSjepVOmFasM6JpFyQ3R2acS2wTe7hOXkpp/wChYq7IgfQd1T5F44aB0cF05pWgrDHiaSMshnsP vJnxCVTguRTQdiEivj+cBuOxubGngy5eYdHasDdTvvS4IIY9h1HD4QtTVSR/iHvjfFhVq6eRpfER TzVW0RZhKT0LV3CrE9G1N+Pxd8dPhj+T7iadxrn/AG+A8/Ka4tXvCvQWusGEpxohYwlo+ZHElwnL tbJDXfq0uLvRtnqx30lFkVk17Ds8M+vryJm/15t6aLBQ2sXkpnwuXiLjxwT8nENDHXt1UwPaictQ 8HldVQlIiaoM0npo5FVw/izYaou+All7/wA4Di8yWth6acnmScy2gb2khQCg7pG6U1cUqfIRdBuy 0kxoGSdHZhwsxHx4ti97VN5N1YSq9JcjtMRFSAJE2mU5NxMjwl/pzV3H7OweawamUG2k4QVKvUmG z3GqqrJzdLZ6oinI8tM4iqTGs8KiFxCDLhWPlB+4GFRgcinfDIUFXMXamwnXjlyrCsVJ3lHK0s6V 3iG5b8w0fbodfItl4SeQBT94Sk1WpYbfblQxmkhxIa2lCKj2cElYvKEDSa/EC8AxU290TRzlQ99L PSOpl0sGOAnO8tFG3GUdD1UX5X84XYCnlLuaEh3IcH4N5RLwzEnOpryN2l3RhonJGU3NbS4l8NLk +b+vdu8vafanOM/a5e6zK24EA4lkmGyG8TvFMstKi8i+BXxo+5JuBubfu5F0T1JyoOVToVW44zS2 174VO6RG1wrHGcJVTXcrH5N+zHTTR+XI2WHqiuI5gXr6hVLMhnql1khiEbJoykp2pUvUCKuD7stl +XvLyjYVIHH8vnGlxxHj9cR4xR7qWCJOufC5X/Gk97nnEh2t7mygpfgG5YV/SIR/+QZULhH44z7P lgqG8MnG423DfShHhfDFtuF7k+TCC6V1aQF5dRVxcx0fcXhxr6U4aF69lBrslkvF7PKD7VSmOWYD HXowNc6jw9KHJuZBS76l3Tlwec7g2DpS7MJhyC2gOiOzqLDHdUKobQJiM6nJDhPeTkVIhMN7lCYK TG08Q0VfQUJFiohyFzt9uuy/MHTIdC8eulP20xPs5T7EUOGBic91JCnPYe6ru0McrSVKAsFOATa4 11jN7VWHHUv0uRr6i7W/nipc5QodBSTMOIb6vzU4NYAHvK8FiprydaYryJfOTEu/ChTwmfS9mwB0 i9nqpk+CakuHKqF551VBkssaBpYOQR4zTD6oHEK7cYN+Q7ZejHo2Bw3DFUev/KCvJg5s33DiGIjq 1bsN4/lr6V83OfbaZhmJO9udQAsX3WFL8G7KR1DLZfosp0XUsp2roWbt0AFoZuAInKouYHNth0mb KbNeH19e3ZRSTrlVNn8BfZcNRsp4UIf6i9GvHAQ6KN+Z15M0Yl8nzzPTn9aYTWsA8rMNvVR4qa6u CWH/ALX4zGfUEt3Rtnu5zDFzxP1/QeEOFScSViqD4BMUi+r5Hr17Zevon108CCR1ka8ym7e9DnQP q6PrljRPmdQcreH+SqHzsUwVPX65/t1qKnh6mq+HzbpNlMdc9uAdOA0jnifr+g8IxH3M1yp/iDxc z/pZMcPfd6ZSoovJVqf49Knr+SHP/iDZ7J+ui+prv3fZ+0PSFFFTXcNVfWU2+iQCHp2euWGFaCt6 X7eMSG+uXiNTjX5yWMbL2J3YGqfRtxkOvZLVT2eDXSry9eVMl/8ANOMp6h1CI7PtkNHD4D+I+T4S zT0fUP1TpHziClHM44dLLYjPvTi3Afbq9W7f46T9N/xiQ854X3D6/vpx4dlWXhq7f0XzYZzm6XlQ w3a0Rlt7fs/BDfhTrvrkcKn+IVVItj8lN8ZdOvbu29Y7eSDsw7br022s/wAxwxYzXr0OIYrXehO7 ckeJMiYSCQYBKctYDjPCn0b+jemWXtdnGHMEpUvZ9SAkOCVK3QAKMCS1WuOJiv7QFpZBFwp/AiCc dmcjwdr4VwQs8tA+JlwRvNpb0WEsoI9+ti5wBiowhOY6WOFcyhlk7UCcwlhjG19A0jZ6jv2PGDyG QAssIDDhhkrBwoGTx9FHKjLWLz5WccJ5TkWhkM9mGrBNZ0NnbZnZOIXvOpqa9SYEJGiwjnfc1FPJ NeBsL0FBQhnOQ5LpiNkYykIDWZM5hgGluy5rBBnWlrB7xVs2LaLnBc7kVtUmwhRNQZD0yG/BlrEA p1/LkJ2ZzvIPR/l6gDMZJneeZ2pCwFqzXGJ+ySsJJ9g1AA3lJIYMxASfvCRNvRISL8ABbmOdDXlH 79m8tIZ44mRZlRTxcyXTJROiOUKHBkeVPALGRf8A8+OeQzlpBPWGJWLAcAKizdZfh+zq+oLFnw6C fdBiQbnqdD6RZgihgE9E25cbXkGNOZhn1NfbS7JYnnq+pMKSBFm0fpQcwERIwwQ1u/pTn5tofVLZ OdOlG31HhUgRZgig8UQ8BV3vImLAYn4UlMiqPgByspYD8EZZTVbl+ujJDAByhAB30ofpDy4yOW7E +inKCEnO8ZOc7QqSTvBK8UEjFIJIDqUGIDJSDUMSTl6khOZZookpYgOoaAAM/FjTSz3YJ3ZAbRyr bCtIoED4SVF9tZquIYZMQpIbrdr8XFm4V16f87HKGWTkzAA0NQgDCdK3t+WYkOx/F2D6JDk6ZM5z CxrvTOzZvFQigx1kb8WhxlJ1uPIEZSnjMe2pm6zRaK/g0xaT4w9zlMeyulo6mSbZRwnFhNTCCoue Opa9W/Ab/peFru3J/DGc8J3Eqw5TWArw6R3O2DhtKWFlSv5LXFoV5B5wgGVyTmMww2CIYBLs2TbP 5zkkzkGS5Vl6f7MZdLYgxilSXxFrw2S4ewVulyN4kkVDCEJx5c4HTSWJUwdyHJFS/Ng/Z2HrQhW/ KiKkPofxGI/J34z2u5+9PBfHyJK5f7x/fTnX7MY8K9etSt9m97DXs2FbXRSedneLT6o+lpfXvqXf ZKWNDAdjNeBFdsUQOPZ9eRgqTdLYJ7MwuJ6L9xIuqYate3/zdVOe+2YvV8eOyOxRarVryykYdEYE uGLbV1aaimEFRCuBh/3dwXMB/ZThnovyXo/pI2wxMQfZoyg46lLVROEFErc/hBDmjWHfFgnZoKyz BLgklO6bkuUEsK3pb8oMBGvsb9hFr2ZXREuuVU1hKTXhXfSNEJHipeSYvuhDRsAuPSQRcIu1yeae IDrxGmEewwnHj/CVeFQh15osyCsLFQ5Egr4rPqYXBoN1uLSPKWp4BtHHZk62DYhjFZHIthcfriRX +z15XFFJOFqHVkU1Pc8pii3Gvhk3BqmIgABIPTQy/Yi4hwle8FnO22OwESHDgZrjSiUSDZU6tqQv sF1FG4nnfgyc+8dFd/TMKXLaLFxsr9GudZxK58jbDL8zxMVIJSlQyQ7yUkdZIUN0Ekah0FksYClC JjM0hQoAknSvVpw015u9z97NG/BR7MjHY/fJkvEaMCXfBvwkIpjFRV9dFEwwlpGKHhPEJ0Dx2Ou1 HU2XrRCdXrg3bDeLJJMh8+58W3eArQ5TGemOwHGHbYBLQye3GhBuztO+oJkLLzVSqjOU8ocig587 8G8aCioCD4D99uA4UhFsWyilOrse9maN7NSy4PGDcFWESd4pGtdheuot/LozCfNNyLnT4fdGMska Z2GxMowPRts9lea4aH2u9aJCyASCptzdKiQCWTuswdKb3OqYdOa9JDgJZkvQsBw5cnBFNIvjs169 w0BoMIZ6pLKJdVi+qHZT13EzF0L5DH9OhlBswn0hfHYi0FLQrFrGMEqkS5d0PyKC1IccMlZ0fDXq wQxDJx1bgGgRrV9qghaEsmWR0o6uiZifDpYfzYiQjgPGckNGQEFBWRn2oDpW3e1xHABFzj1H57Gm jZlYksz5jm01Ntqiz6V16L4Y4e8te0K/tllOPsx6LsoynHQGO0WGHALFJxTukcUlJcUA9qgck75a ZMzmfSAQGSQ1hZINO0AsbUjnuSNHXr2SxOXKg8JW/rZmfegYnbOgbkEdWO3XidnsrdTXqNiOLFRU 1+bZ05GIByQy4s0zGQz2yGW2VOeeyvXVCjb6guRPzM51ac7877+Xzei/t2B07Q1Sp0f9kyJVH8BS 0RX19fMSqO1zpLPA1KmmiB9fso19IO7KbX+jCWSEjqZKqwrTDCi1qMH0YMXYR6kSFSmaEly3Ve77 odvN45n7KEWlWzfHiH8W0rNlIsgnMxcaSHj1hrw3Evf2ilul+0/HZLHs1Yhdj2dDqYDjTXa1348I XkkhWSTk8/AXoK97N+8Z0DBY/so19qGGlrCpSiJky9oYs9ruZh5p+Xujj6aLPAOVjcQ1zXgPWA0+ QfiFUL1gW1BBBVPZsoNeJMG40M9JNnBvMb9WtA31jqDWh7NXUFL1tfkmV7TbVZVmkokDN9k87yYr QlgpSOoTvJHWUk7wdRpVxYGFshNGXk1bzsoln5gVB0I4cW7IIz2D1HEUG0vXy74NOSF5IAlqAUVf HbKYTwmG2fSFMYdlFj88bR9pktBxqqxlbh/Bw53Mobt5JODdq6/F3tgXFmQ4aRi4pNnbO4cmUsQo QfsJLcIpzbtDKo15fNjDwhgQzscMEJHcI+j8LKnhrlvEaBeiRUkWrbheB5cL3IXQrWmfLOwSCWET pz1+/rpX8jlpKZ9Ke2+f/ZJxs1yeX/ukrw94BQw0lkJYje3huJIdhUMbHY7+rMuLqCTiVD7rvuCr 6X83g6NmjsQFnxjshHP2i26bizFFVIphxylDKyspbGYallh2uUhoej0hk1MkRDKdGID+EAYCAUtJ 6dh7souI+guOHLcesHnA2HEmOUmaQFfSVsngRFkVwL6RXAPbZPahIQlgMgyRnk4Ds61Y23hE2zrG 5gwzry2nD7Yqm2GfnauDdTJLozwWxkAybd+TARllbdYgHJBF9k2sLGcS2g1Xu6nsyXAKOmPNH0Ti 8sKSYfa4rQoISW2/qnLXk6gEQClN2Ymdq/SBN5zmZ23xMozLBVjhGzl2Rhp9oYZUGBA3S6WYKcli Ia40vLZbu/8AT3KwnrO9Tus7BqOQKmtrCO2auqT3CmK+vryxbOgn8s16+roGdBNW2OyPLllGLpeE zWhy1Hsfymi2HMbcLgcawnAQVVu++2Rbkb7clOSKAyljMN4UKam12eJaPX8OmlhNI6Wd704y8Oog 9PTPGXsoJi35anY0AYxtdquqyjC6PoueG6W5zTrewIqapil304EIUWejbtAJDIOnDpnyb0e5dL5j tdNyU7lnrrET9qWOIEJC0KBKi5G97KgEgglTM7BKjJ9auiYZSSl2LB+TB6vXwGgvGuLDkfnjaig4 oxbiAhNxpCD7U2yjlGockmH0xCBAHKWpOAf+lPHbKfa4hLZ/ApQh/HmTPpBS1+/2BtpQNjV4NuKl nSHD/bcLGTBVGdAuk6Th/D4BUWyhcdL6D2wrQjMPAe3EB1yEaau4ZCTa34eoLGTP/aUsOnZLV0SG chpVtqJaVw9pM0wxl3qhKMRQSlK95I3VAMlTkEMKKBIIq5vG+VfoYd3ar3sLvDOm/D/AJTcNGR/0 MA69np9Y6hpMalBcddV/D3IiF9eHGW/dsnP1bZYp6lyONSquKSJZNTyv5Wq6p/fRuruAOVvw9epO X/PDZy7UzDCfvKiIdDcNejXv7o3wou1Kqa3Mb1W1tQ/khWYbx34YT27B6aKO9yfwBGoTSuAjmiTx kp4j8+c2G/slj6sQoz1xz4LMeGvIvh3oV5NtnEJb+UHV9tPVJPPfhzwlrv3ZmGjO+YoY84fZKm8N oAWb4fl5ViQ8Ezh5SreKs2LF/kRxWN8ZY4+PPKDAMNEmd9yc4pEUet4AjnK24fke/fMdfJ/ft9lG 9Sch75ClVBkqY+RZ34zDVL9X9v76N5OpIkypivmW71mSOG+gPEuvm5r03xoyTjkFIqzgAHl/m5RI cK6ur6mp4cxXgZUFT5YcwH/Unon9erVSl3g5LnNcPUELyWDaxcqQbue8rhVNi0hoflBq9ADhspZO eDxguV+cmQSiapmf9aa8Nez/AIg9FKeeyk6kcVgi1UpTW3AaWEpl8nuc36eFjLmOj7i9M8Altpdv RLMf/cjZt7jOwkasOqWqdbtUaF7BfmQHQxQWOkQZY4BhlTFQ5OVzw41OkzZTlJoljL/9YDi3NbyL 3zmy6Wz2PGuSgiDaYhJwC2WLqjPYa1miv4MvSa+grqL9IPDiFjjTJ6k9qiFdUYbjOXE1/vgqsd+G ynNlpKnzKx5/nExwdOql4WM1JVYds1vpSqlAWLvyG78JLBvO9ToC4H5cq59IuI+W4atcp0/UzMJf 7mlVfZChR3ND5dp7jHJpCY3pxfAluVSzaBu4dmor91INehFdB4qBpazsUVtvcpykUyFxbb88oG60 5B9NGX6cBbxmriBy0Y10N4uNyMGKBo41yNnu2M0jmkiZEtr/ADK+Ab/OAPJfSkOWjLDn7OhmIzs9 VhjEuLB6HObP9nlXgqHX5DLXmHj5dBDGfJ/Bc50tP17aB/huTXK6NyeqsFVRItWZ3lGDSh4NN2I/ Gdnhz4eHENv8p4fuLiPkRFJp8i3pPEMaV2fJmZbLki4IBazgpd2OvnUXd2Eu0vNqO84IqdBYubWs /HlcvFRXHiaoF7Hk1tPAqTSzrajG3ubN1rmv6MeodC3p9DdqCpqQqXGoVFQRMtJ8GifMg2T5MxL9 G6eGi2L0EOYVI9XVwVNVUHm43L7a5olnqzCdwc5iF++Wn/zS0+Rbz8vAp42cI1KXmJg+ZcjXK95H DeZoqa54SiHiT281pBqHQF8bKOkyzJSCLJA8B+9GgzIJJpXs/mhwnw1asJVQlFjJf5a5IemzgXmx NYry0x1zEf3Dvo31xwvXEE9VVVXi8Dlyk4mlA4zvS5eZcVEP3mP99BTqSyh1xpPvxdUhRxDPWfE1 JOfL1QdV+B5P7eVIctGXhp7plRnOVyqTVS/fya24gGvkZQ3xkxolpmK8KKubG+4trI8i/MLohlnB DXHnprGOkDl5fzRpDsSLqr01kR4s9KteWLKEEYwKh1HKfN7YfXH3Ef0dG4lwdwivgIbKM8cm3c8Q Xw1VyoBtwva6xnqOrFPCYKi9x8OGOkHpHkXtnTL9jh+JMPeyRqDOqEpSaSfHiG6o2HI3lbxC/ELj 6WvlC3eI1wP9f0IxbYR0NNUGe+HUezln3Qqot0lOcx90foP/AMb4D9VEuXHok4JYsxU7k8SCeFDR r8YJvzjE5zMlIhwDjqNG4YIPge6TgKSpOfiL+cAJ4SlyL1Sp8WKkkpJZevdWbJsL0vmeUbxzjM/I PEfnBhz3dLs5l9fIsPwrjhfNS7jeIJpljmsIbtNvTTUxe/qOfN9u69N8ZPT2UeK6pqFKqMOpx195 NdVkLbaZQkKbn+q4rj19z/8AaAjS7wviHqROpWCt6vGoKloboIcjybTOcZn/ANCsfzg9u/VOnqer 02vex8HVXuMyiM9rnMyOpNz3ZL6FoaF5xDPnTjgO/CnqSPHRRxHn84i8TtMUEqnqz3IpsSGO/Gew 3PEhpN5yIylcLnuW4e6dCt8N/wD3Hik0+RQ8xn7PXT1cTXKmtLvFrKqa9geRPRgm4VYmGjMeUoPz YRwQ9bfjNt+mkuQUn4MqMFm6pXGJCBnwyf6UpIjwQXK6CRxkK/hMb9mvIVxi4AlpFo4uc1sGXGhl 735jSX1KbUQxKqDxbhEYgQXeI5k/IemyfFmy/fpO3waesGu7B01Zb0l9DHpQPZzHCNn5AboSEbpb dZi6asbG+jPA2Yy4lpyh3g+ndf6pwit669SlUkPiFbjW0NHYd6ElhpOHjF8wHS12d+oq5/OBBgHH 9XL3Q0KReJDVPPBsPCoh1UGWlFBBJqr0Jw9aaxxmgqiFJf7p1nNc8oG7Lnu1tfmFiNLYeyOerl5v xUgs477Lpd1gTdmecuWljcNyxU84G75L6UuzCY6DP0KJ0epSokFbqQkrQB8Mw5fRxkN4msprmYao hLYAuxOgfqn9NoW89GXjoFpkFHU3i9Mk1YZ9ogp3WD1YAtfV66c4BRL9dJ13gXfnf2ozfZFiQ1bW kPnAznhUFmTElmuTSdYKNO5kxjRpdL7Ca4tIaHLRiH8ZnZcfLjyL1YM2WOiFL4yCBkYtke5uCAc0 YYbscJxZFTIavixfGkPKdwN7+lLnoy6Zng+sMB42lng1XHXprJjiqI6o2DjeSTiMmwgtLX7x8xlp DlyYh/Gbz3a3Mp6fQ1+TpqC+Ep4G09KtC5yiOhBmisNwq18poH0vxGy4qBP8Xekf50p6asv20r+x kyMFWZSc0x9WkkA2U5BFH6zPwa/Bob5uP7tJI/AkO3JLgGPHKnPKrRWP1QWZLPZpzMmeabxy8nM0 v0Kh87u6BDvRwMXSPMvyCx5F0f4Vw3cb8iYx4AvFKTTLfVFi+obq18LKkmILXvoV5d7la5rcDd0c HfrngzKRA5Xnk3N25aMbmbM8qsCSZ+j3OZhpcw46hXKWkEGQmE2t6GFJ+UIz2PeHrjrnu+IgONUR FJns1HBsQ3KNM5eTG5deHVpj+b/Jy48NVLFnc2JXKioEAVJKjUBRFMudmo7u0LstlhNTlBQW4eHk Ka90EXicpXCzTFQXPXIHy0mUKfNSF1+v6sZzBu5K489n6XPRGQzKkCo5VRaZ8HEnwYQ18tIqLk5a RfRZ2cy9mhtCoWrnfXo7IcFfUHizAutH0YJxCVRu1TIX7quLWDg1yEWn66CIXjgHG2Xr1wu5ESHy 9Mk22QU4ti/HhUxlfm1vw70j3yH9cqUDZX70rMJpT1PVUpgohw9SddQObhnEO84O6Uyf7IDA6Gmr XhNXL9epGlhxpTxEsnpaxykjcrcZNlha+RUDkPygcWM9Kf8Agxh6q/hjUsZNYb5bjjajkg5CZUiQ lrTPVwWFkYmRpVRDj16PjVyd0kx0pnJlz5BaZUnAIx+uXmuXeKGWcjoKnLlZ8J2mj3lDOEoXLf01 zzgcUgHr1v2kHhMpXPGSMBCocalFqLC822u54qRNcPFsM4aNdCW+IkVjrg833E0xvzlSMw4gHQFj 0eZ0ZUnLTLHrBQcnQuh3JrxueQhJlh+39YAl2t3XYC70/KLoUlJVrnGjkX/UJhaKHGhKG8HElYkx nalro4d1QZhpBpbr3PTy90Nxo3nK08CoocA3CsWokGtF74g5niMpNmCyoHjpD/VP+5bL8vdMsaeT cxqUFQSmcuKSlC80TdAPC0e4TvKZpKi74dRUPzfEZ/itwej0v8A1To0KXwzSUEIieMsiHxVHSyRy 0Ib4yU34lj4l2udw79FmnzLuDl7ro5RVKeJSn3CA6mjmtL/XLwEXPYbZJ5etco64quPTZQYbOdDn cjsKcZJmlAjcIsu/PKHRO/dk6Qfsw1ShxgNxIg6uKqIWdMOSbWOttWKXzySSvDy6iLiGOGjs1zF0 tOYMvHAKbQ7F2yW5wsaIjIdQpIiOqHGxD4npCd1JaFx8K0u4+Vl+IeMsfSNBn2nHhXxJfDwqHIlo i3cL9dDYRnYUR9G3MCWhLdwXKuIX/BG2fs51tlNJ+w2nm5tYSMpyFYTUAb5SGY23q1q+rUi1Sby2 FlksKlSkks5JG8g31PF+GkOEAUG4YfNdKr5GU9ro6Xjuw1hMcPSOraO3SBP4FLWD1ePyVHnKQBxp 4B/eMw1TCU6V+zyV2txPI7gSwOb5h1jv+v0UsA4AZgXIj41WGvq/rrZLrD0zp+SGczQm8yxJx2Cs VZqfadRbSrnhSOuI9hP7qfcITr/eaYXw74VDoev/APFxD9oiIbaM6bXcDWhUS/I89Kf5+lj14/uG W2nnIc4Y+n7C+eKh3ZqEQQULb909uNFBKp4aeb/KMTpKfo1jv3SHZ6AFY8DW3OPUSCp+BK8PUd8m Cp3PQ9svf6tiipqfDBD5TqOk9eI9fs2dW9vqa6oxr+AzYua/JP5Bq6gl9XRRQTrq+prE+vqA74zP bPV7/uoO4NQaAsTwPDt5XiR+FSFfMwBHNjJgqGenEn+XB+g9/sABnqlKjuTUqitqs4L9YhL5B7/t 6aM5yqqKk+PADxeb79JzwzBU6tYdeGvdOjgFTnglz3yY/P5WH5f0rk9mye0RwwpDQAmgVRJNlHgD Y90SFBzgDZUvUcOJYxnkiZvEeNN3X1z1YBROTOfBGKivDvgrPPCmqWMsfYGPo10T11dX8LwNfUZs Y2lJT9HTuEdfoooGo+TnvlJjVs7/AEsQn7cfTjSDQjuMSFCl4UL1/D4KhP7pY7N2wac1PZh4HxNe NqdvOhgQyiQ7UdTgs2Chw202esuRNIKiIsrwZXN/Xkh2gTxAAnqHWHSNU/xo1Biv+S9+kzf6L+vf 76nmurq/MHBX1FeZ4r7y6L0xn7d46uul99H22056Ps9XnqcuVmv2mEcIoBIcHdUBz3VJSoBrjUUg HMMt6XLIfRQPHVjTsNDp2wJfsSVntVgZZ9UHG/mcZacR4svBUWjhRWJ3a5SDDQguFDRgmAC3w7a/ ADCYTlLfnDs5rPyq+qswuIiRUVIwVJxPRjhooUvFNJJk0BcDtd4h2w4T1AIjiFD7VPAHKrgD0x/z uU+M59Hp/ZRRwwptUXqFUuVMl88z0nuP9f17Ouj+Q9Kk3L+kJfpCm8u3UqC0DCCiAAsMMMCp3ACB uVDBi4ePCctHRBKA8GU1Wp2OaUNn4xzgdhDhVlKESYvRbPkMoAZzaSmA2871ZTofI5S4uDLobiHl BIZaxlRg7K5aByoqR9TYSNWvMqTWg7ki2gKAT4sdkTlzKEF3LRADHJCeSiNj8IA/B0mypdrlAOV0 vKSCQJlVG6iJYsYKnBO96E7tA+lrvgLq9uvHVROTR0peILFRXpSIZUDSPnpI2bR0aYqn24TEcdlH B9MElPbe5htnOZUpSfUCcPACsTqoU4fdfDZid47iQkpKg5Ux3vSclIlOipIINSwdw4LmrcK62FGY W8Juxg2XalhtchFRgKTsiRc6Xpg4ReDyTeVEuPZIjf1/dqpjrsm3Y+oFWfrOrXjRBRprbUWisRk1 svADbvWXImaLPdDcGWh84BDR+ThyB39ttwEaHdbdd3oXl8ozPH9mr2+ylsVxNKUmuYIrhBNW0cTm enSisTFTTOIuPt319e+ifI/S/tTlu0qc3nMxXiZIrEGIqXTiBJOGSl0pooJO6WCtxQQasWr4mcsl JmS6IlIBAuA3WDNUAA13bmtK1EAa7CvGPLUIMRehoYrcoD8O1jLiYjzAfBj4ReP8nok4UXJHKDfl AMpSmK/seORWRB7IPCFQVq3KUDwRIfUQDwnAlnyoiIq+v5Kxq/53a+iQhrp1ys9qodSVL3U3G2mm FRHVM8FJbaMm58Hh4cG/1Bh0To3k2Sx0etb6qhsdkIivxoF7JLPRk1TIbRxb/T0b6WvA9MGWy01t tMyWUYqcTa3ACUKGMnfSo4QQvEJ+ydQxMQjE3RudXew3rvAb1MQMuS4IFbEuAUEAMSHpdtHOsZZ7 JIyTEQ7FUcC5chnSi2EdKf5PZzHWhyV0ZgGHJzKWxDp3UCf2FuKWU27UiywROlwTosQ4UyJUpnfy 50sUBXkIMrYA4LvUMhDWFOoY4TqFEgYQ6+oLGSyoTzI4UNk7yTLr69s5asPUNIP3FILNV5I64zoS QubboTCaoSKOFusJFTXMOu/RFc1TABGQjhjIBpXNl/STl2SbE7SbJZxlyiM4OKtCgsbqStA3RuqS ahe6okKDpcAEnejMzlZTNdLTQAJDA3AIpQjhbi4bQ8+PZunRUmI6QfbldX5yXbMFVJYAZ/8APXnq MglLWNxgO0cQmGqZ3oMsNuKVl+F8LHUSEy2FSA7XZjkKbT7YXWY379Hfr1Y7KOUWLNdnyK+buuJk H2C/XgaupsI7hdaQKipkEtCniMhAcJjr2YUu4omkUFGT+HqATUcqTzJHSSeo/uRdf3Tn6dW0G3Uj P7HbDZNkv2iMbJMQrxFUAT1kFO6QQrjvWNu2CcDK3mlTJYpIYC+goXa1O0V5xxAWi4VKtnuLUQIL qvhBirCoSJKxoB4+bHh5CWQlIObmwNUwlrEA657BSPUI9kKywRlmw9yxsHhErvXOPpjqx1hq1BLo p/uKdjyzBH14GH7GCDDUdbuNJCYjZ0aPraWF2oYcR5Um85ZTyg/52Aj2odNNCsNoJbQQm+0GOli3 Gw10dMRm4lFJzJJaHO4xHfPX9VLJ6Q/Svl21GyuR5U+IczwcSXViBSQlBOEEbxB3llSnCrgFq3LQ LI5YZeZVNlgDvAOKVa+lKU4nVo5C7H5YVLsk0MqmoyS4StMvk+Iy+ZFt9dqM8QxAZezeFOgTsq1T mdg+MEsc6WGISHAdQPRA1j16/wBgUvtk2CLJzDilURRYMEm83H613Jkm0d0lFtbHI0nBGmuLPai5 pDk5IrYZQYSCQCAYhSz4+Qhh3H2HJmDz9SjSy0F42mrJwSiwspv4KIsCuIa16ckZD0jv1+Np/SLk ud7U7H54g4oyzIsPARjOhJWMRK3UMMJWd/dSwQVKQ6gSQkER6wMuVLyiySDvk0c6txbUm4Oha5gR 3YPm3mcJY8PGoqM2LrsSGuiE5ymf0FZeMt879x1650HR2TSzh3CLUrnXGqXLpzPjaRCIDPKFCYpy YQUwnpyiyyp4ZLik5glgGSuh0iPT/Amz5CuzgyTDHhWh6JtA05FNzAUV1hZUuM1vJAMkB0gDcGsd fXrhFpCzJB61althuRbQ1tST2csKiy3DbfcgNtzXou5WSgruAgIaOhLDUPTjKh2SeliTkvSfmm0n 2izkmapG8lSQo/3SUjDUrDKiEqBSEuCVIBUAoihHmMmJy0S6aqfeDUNSFeFNR2tSBe9hVKZm17RF QI5zJyQwDtZBtRXB1zAB29OzCWYey22XHIxYqqFoxCQxNQ/iyCZlPA0U8QvsJoWVfeGAOsPwhAen aFD72drI0LLLyM4CEMiS020d4q6WtK4OByA5FM+CD0+2e3bvHR6k1Wq8Gu4GcqtxNdrfXiaoirCS 7Cd5Jh9L1hxEADv/AG4YUTn0qIyT0iZltNl4XiZPnJSnHRZasPqhTB1CgfdJ3uJSqoJ6cu+3yoSs wyVpHUZj1k7rHi4oNDXhfn3spdloZzVhq12Paabjt0ga6PcqPEJkEtJL+S0IJoYPhD7YR0iAcAxx DEZDgI3+yZWqGBaqjI33jDFDcia12aw9GM7dpO7VNe46cC8K0KIOrw7tw39JsIhdhVs2HK3KXEOI 0UYXI5o4IIyTlXM9pCE+JUMF/tXOLdw6Z6xAddEEJewrQBNr3DuNcf8AEZPKhnuaKxxGZLZuveti gTEBmEx1AOIYaqdKk9sfRHlM/i7U5YM5TmsyjEC8FKXTvYgDgJIAKXP7RpWtoTY0hn0yUSoPVQUs pxVI3WBOtu40JuQSeCakRWINwXPEeMr+hXC86TN4qSofHQpAx9O+WofRTOFsDsf8MrU7sbDiiM+H 8yXg124DZutkHEa7QS8layl6+VwXAIScIz/CmP8Azcmm503RWHqMnseEhEsWT0snowScRQnxYQS0 MfArHQv/ABVt1dFE5NH4Gt+H75MGvlhTPNQa5rn7dvqp82oz2byjaTGznZ3MFZX9tiYrjVQxCd5L G5IJB1c6G9kRLkJRKTjEpCWPOjB9ai76vFRWcoEJVn2ESDCVuOJxrLPZx1UEmqvY32qlx6tX6Ha5 Le1Bvlh2wj6btrqmoJ1vAVGcljGPt1X50Y7BDbjrCkoJk1VSPlyKVUZysZnj4tTEHEP7v9Y7uiij hUpq1Q3UeTTJj5FpubJ8WEMZch0PygcY7HV10Vz2JPZxPrzDMF7y8RSlqWr8allyo2uTwdzG4AAA CwAA7BSG+uTa8nVF6hVrzIKBrEm3pheeyUg9uzdT1TU15yt4Av3yYKSE4Uwuwh/Xi5+0J691E4B8 or++UxPNHO/DZwLyfTtw/fs9dJRU1Nz1XAZiXLqJXv3R7xY0tfHT4nzgcWubW30BEsk2Uk9hPzjM N5xNCpu+vr68yZUFT5GUEnPP8PmPD2+joQVyxX1JrgC+bGTHyIM01TmOEp+mf24U+VxyvOGuASs5 W1he1GvGbt/+H276Jz1Sp6priKP8ARryykompoqwrE8Ew+qD4lRN7dnz3dM9fTTMsaGunHn/AE8u USEE6+pNGKjh++AJ9+Gx/IZj9WPWG6dG4Dhg5Ko+TJ6WTzMoU9O/dv8A24U8cruBKl6jhs5BU7+l h4L+e5B52bd44jRnruHru8cZKhtLRZ7QVF3w76JSw9tC3Aq4YVNdKfMeMSJRXV3A6HkeA+UrCXjr 8BcfS1j8+aUfaONM/uuueNc3MxY9ReLodCOqZ4k/P1+vTj1FH9w65UuByKQVKon1/wCTlVjPZb9e 8Md4z1gE6U89kFVciK+ENDr82UDd1oqObKHLt8OrbgxvzD2Us/o9zDou12y8ywDbQYYUTQgEoHgX oT5iBp0PJqA1QoeUZPrsxYdaZLw5qCrtiwVusksOxvE7ybLSmHgVjzHlAPksDpD+wVJTBrSOFdqu zvX164XLKBuJCWSio3s7vIEHTpFX0FCRlxc84uPP20cOGSmGVuqFZ4spRQNcSLD3KE8cB49RIVoc uboDz31ynSp3s1TyCaaDjSa9MLRAazkS4nORvN3jJMQUtCWr+uVDXPOLUL3a0+ReFP2LxTJry1JB cnBSSzOCUA0awr844hgfdsVQ1KzTWqq9nK0b4tysNcqY5uB1QkeIJsWFRnpbn0IN6l4ZXDfSFLW4 uI9FtFnZ1fQygN7NLkY78tBF3i1KgzAq0wl6UEnKyCl8tuGcWlTwCH/o/ce17wtdnIt6fQ2h4Oyf NuHKkQZ6q/3GaYCw8me6NA4sFDi0mpiAqIfHyCivhDnzd4850z5F/WIez0Tf6xEZ8IdoxqlkR/pc K8y/hXtMUZS09g2urSAg8efzwtx2DPlS0+Wnn7plKnP6FeXNUBQfkHSz8BXWH6cB5WfUQagEG5JO 4PEVsx0fjtk2pKhxeUKgjybjwgrCXpKrFDiymtkFTXcrIXHBzfcbsDyWdgCy3rhoFjRNUr1esXee blQWYDoE4qIpNvKxNGTUyLWM13iLziD+a12DoXsYVG9SQa+pQU9qxNI6SQ/KXXoEbbywKk5z47Vq /PzgN3XNrdPILCjedbYnEtPSojVBZ7GFQmqIrDiEkk1lSuFKQg8eecDdw5rTF6Mv2UuqbDsHuhOL Cr0vx5xMCZxx1ziL16GlJpZ0GifKSAzildi9cXmNLyi2eejL+mVGdSOpQIxiokpuRrlVlU0kbxtY Rk1zQ0VF35jx5QN3btZb0DzNpFlipzPR8g/69SUlC50s6jxuSQvISCWHgK/Fxv4RAbv0p56MsdtJ CsHVUnW9/KujZgqcSzqPHooTRrsfiXs042OEJfVy9mFMwTGH4nPZ4wxj7B+LdeRTVtvsN+tdaZ8W Em+gUz7XQlqfcxfGPOJp4c7Pn/plTpptUk2qsQWWHGDcTXaXa91vRGKGzvy70/q4uYYhswpzHRaa qG6nlHBDr3UpQ3eBVt568ITq5y7GM/LiRZIT0Y+Itic8dFurQN8Tp0kWIn5UR4sRwXVTxgspLBqF ehaxnZPxoxZIGv8A1Ihy39OI0oGP+uoOu+mutx3w4wNe/wD2/MQMfM69HrVh8PE8ZdulF1nUdkKx O7f6hvwdbfAB8092zbH6m9qk2oRGdTjUjLfXifebTNk7tcztD5lBD8n27udIf2B6ZAd4Bn1qg+Hj eV4GpciFfFTP+IgWnxvh0HRz0xnKVI/3g6jSe/4qkTJZY+XMNulDnGa8l7Lj2N+Hfq6aX1HsJ/dT 7hCBVz2n3x9R1NceFUnxNfJEGk32ucuVHbySA9//AELQ/o59Kgp6kvJ1Ne5DaO/3x3sXS+bbTSfH yWheJWOP83XnvqH6qepjpQ4Dz+Ua3muJ8TGT4VuuvFuRggfHc85FJvwleDX0bVjaPy5hLfyL04OC HekYjKFn9wtY0uipiQ44YryfUOM8iKSw6CaWebbhviUM7Q7Ww8Orkx5ReZEUpi9PIZ/BQd7wtFQ5 i2QqENxxNLQ3eDobbYRWfaEVr5U0xQS/EcMbRnnBDsHEE2RFKemjLDoAaUOpWhHjZ7UFCANpOHK2 tscysNck8Iek3Jy5aSphcMaIHvgeS/KyaHzS5FxoZfppS5TarAlJqfy3HAYEfZkDq7w3bEUez01B gk5d0v705tQPX8PPyrxgqC8pVDPdHdphIhqWh5U5mTlbxTwmw1QR49Zb4Q/J/wChHPFlvTbMRnSy LnbkYKpHdUMjxVtxAKkwOo6SU5N3gloXh24/Kfkn5rYvRl7NM2Hy0ZodycYIjWaYjN+O8Mn/AKfw Xfjb0Yg/G4oS5DO359gvHBjiHJ5w6Oc94WuwdvIKU8N0MleasTiCxFuzmRMpqilXWdipZ7KHLzcz DkH4z4VrktJ3BDvZpVz0Zeroo5lM6wpuYCAf+olgz03S1SLVBo5vTSBpmWtoRXmfrs1NHZ6/iogt yJEc4bvFKqERgWqSqwlrRNIcIIybDO0PcS1zKvzxBGf/AHLem/Tym8H4TLnDQF40niyI9w7yYbsV g4zuvxEixUQ/5u5houyHTLTQNnIPGmT7XTPI2umG17jPNvu4JazmTbcKssIzb7tM0b8WK55Lt6M3 gN0MjyLemOGyl0QleqU9oXQnr4xlzJaLCWz9GNLHYTWVJTYboQuIbljgh4OdweA9g6aMv9Q6D5cV ZftQdRi1W5cEkJfee9T5aCkMJnAmZnIHDOku53QosUlyTVwB56ARKL4qEHOGrH4jeQoJzPW2klCf KZh71pD0f5wQZ1h3LdT0x0C0NocCxPD2oYdnNjcPUccPK9IgrBs2TBN40XZXEH0f5N3HvljqmNA3 oLPfJt2Q/g6+EpNdr4Xng19D0k2F5aBpa6tSXVq/J6MOBuuxt8qNFuZcx8jdvQQ9rpR2koEVZVMo iPmeZEjaTLwUP27RoVtpNb0smUtVqFiN4i3DQ8o0bOyu4BOKNgC3YQXY8Cw/pAx7VzqqFh+sdKVU vuovBKJqjnJtPPLthk0tz0XFxwc4G6M9X7KY3Te/FlYeN6mZKd6nX7Hk3xambeRcKtQt9u4aL6U8 9HrrYQbaTCLTkQ3UfeLxdQaEw3XXJmTbh608XzFpUQg4iWlxccGtu/vGWulbupSPHDSPXxOShMqH FZKG9ntvYXDhLlxjr/30em5m0YZJlwlspy8lgSxXoS4TfV6vXw1gbMsfpM30pmZ0kA8KAWvTuhvq ThE4zTA1CqpMCB6X3icVlYPjMi1hiiokvJ3b7X9qoztW/Bi01z3FsJYTrzbdB2FcEElYm+Y0vy5Z X0IODBwTbnlS7ORfkMwhnjSULJQ8muNHPPEiWiRGBU7yZ8PUkUZSY0NNdxX4hN+Yz+ivMvz96anW FJDbdpGD4LhFbjHaHdCwCLpCUJ3kxoSpa7rWuIPxgOJphjjNlsu4N+FNm0EvKjLkKHtBQqAOqSUv ZmbuEBZQ4mVaPvPztfui+K6u4ZKT3G40PRtPKttUzOyyk8WZ+lzlfUsdH279KeenJ/kEONIe78xq bncb/PGTKPc6WdYdnspybU0/+vJ8326I+VPPR6UnHAHk10J6VUV5Z7WkDaPnqPFjM7ybP9dX4Aco HFs7qQci2XP00pd1KSEg1rir688hvaKCoTVNJYhG+bKD8+3HtcDi+lM9C/MHWNDJVxhJ3bjDSz8Q lLO/ONbPitxxG8VNBoLH7VSmfYtUVyoXDJZQiOTfr0JqzeAfCi74CRUPDk/4DQmvot0jtoIdYqXi 9nG31WJpEzpwVmirCsbJ3aK810JEv5CWvr5Uy1z66GAtCJpGFdh5PY6Uh98NZnsMkTb5RYWW3JLG 4L+Dd8+YhKgz6lnnk1Gb/D16kZUBvQ6cvbBTvRd4+37tuHRT5N9Pe0fqnYrM5QLbM84zo4ZIUzo6 o3XDOGL7tr00i+5HLdNzJO8KZWEXDUISxqK3H9DEhTfhp8AX73+Wkwxnslr9FM4x2tt2aLO6wWb0 TIllgdyWdzwWW0ymkbjT8q5QGS6jIPa5LeHEJTx1S10/a1dHGvs62fojxaShkvpaPcrQKj50Lgig oQ4Sw8qJTnxBhiOIOexzWTmfadXogRbjfXqT1a7XWEskcJGjopqm+n0uzXV0FxcnpPiE9nbCOMxE Rn8rbD7D5PN5Dmm121AxTlWUqZOHhdVa1DdUSCUKACd4O6XVTdNFNdZmbPShKShAoCSfZcNTQ1NG 8Y3xW9l9slmFAuXrm5GtNIFiaWRvU00USYS2hyll1SxwEaFNaqwlLyMjONKrzJlHXkdLWiZs3rut dRb+QZerfqpgKLPYt7IURkTNGszTEHnEEszcDLNrQpYiGM11DcH4U9eockQ1ANCKpqbUJqUnpVRU d7paOlkiZQB8VoSL++lf2uxvR5MymVTGyfr0Y6sVaF4WI27QYYRZIcqUVuHLACgoTJUzYmQZpQIA DHjyNWZnjPFr+0qRspQXMRa0XyXooaSNhso7UFYym2B9VXMnKkF+ZOTlDyUuOQSyR3iIZMxpjmx/ 2TBwWoo6oEJjsGUVgJK63nM5bzKO5ZcimQyUMMpfBI7YW5s7WQ5PaSCYCOViAUxt2VCJyrHK0XC+ yfDKvvowzldLJLBRJnJQic+RQUG5N0mo3g2hLtl5z4hjTPvY96k+z7csJ2rn3GCA/Insw6A7eJl9 AXRER3CiYBjqw1jTteSejTZ2V9GmY5nm2VIxM5OBiZ2As4gxcMqS2H1UrABSAFgKSUq3lBTsUhNj 5hNnN0gEhBKUgBmUAUjqgvxamopBquyC2voi2U2/CpWYLQZbjqHy4nQUVzb2BYG41VCR28uSRBQM rJl/hLgjIMqerbS/7H8ZlyP1nOG8YnSSRE1zOgm6L4KN8jJNIKiEtOBBCeIgGCGE8meUE8e2Gmbu yqsMu6bIxlcnJQhzEdhucqb1Tv3iFcEeia3k9H4IDrxpGOw5vWoXrKqu1hrzOcMSL7oRQ2eHEZBX R9YgIY6qcxnMlyee9EIzaSykDNMpztScXEBUVqBxDukgkpCN1eGgdUOpPE9ZyJo+tEyxPtB2IYAh KSfiblnbkN8WiYqEYNQJifFOvEsBhiNBUWkcqbxTD7oHwEjDjMeUesNm7GmCLBVsa0Fa0iA6kp0N aHKGyGa3Us64lVvklhNUzzlXQG40VFEHJ/hDx0AAASCWVP8AwgAKm7MXH8igMxoWZkqvC+XkbS3+ +zePeDXRAEEJGw16WOOboDEJZSDkznjk02B2N+AX8HWzcnqrqwdMRjndoeGd+IksEXiJF14Do5v+ f5SAAodlmzmT5Z6PcDMc6ypCs5zzHQnJAsErCFqQkboJDfiNRRwbig6plUzNKZxuAkNSoYi44sDd 7sA0Cqj/ANmFj2x42RVY7AZ0HjTJYj7dLLbhpxIywouQ6loQ3Ctit9s5BHK7bJxGeTjP8HKHGVWV 3ZwrU1TVKHxcwMM50OeneJ3jlbZ+cmTKW77KYRhWzqi0lazbLWG8iqfGyNSkeV7pDJvMi111bXFx duTfycHKGc56p06DzfYVrHZogXPEFuOgl88Akc7Z2og4hIR/wm0I7JAA4DMRwp3fPZP0SbFyuU4G f7Mn1hiymEQvCwlLBIw0o+0UN9LKWpJWreUkuosAkgQollZpMrP/AFIDdWxSSBqk7tjZL0bTlUl8 JXI6nVC+G7qeBFNTXe8WI1nO4iiUHappBTXUW/uI8Rl4d/6QhvmEqTd1OqoarNeDqVajOU9rttUc 5wp/USMvr0pe+Hop5HTSKaQT0ojgXSyaWik9kktCRQwDDbhPD7KJ3IySMQmu6GAdr1IsnvJtOhlr BsoPGZBLXUW4b5AcfV9YU+M1KymZz0ladzJjtAVHDYgjBKwdwAkndCaVJLM5MWgBW6AC62ACrOoB gfGtoASkdnletdVF71swNQyGZZkF1RFWEwbr9DeyuiWI7cRmFHYn2dO7T9RX1Fl7VeuHdU+fcRAO TeoQ6tVHuM3YaYHwmgjEmKiVG2LBjQVhuh6EyiqSZ4ph5UQhncq3kjlZUtctQgPRjQVli2ylUWv4 ouCHR18GWCjoLPVHPpAVRxcgDK4OJbjmGA34MhwnvlT7ByfZv0LZ7k8/n0vl2GMqyobmKUfapAPV CkkYhJIsWLmoHWNIrnSs/lpoyr0NnYuCUm7Xrwu1qGDQWV+ylBaQjwx4LpUAVFol3kcdGSDgNvzK clwghIorw8Rg2u1kGAa5yyvwQl21J3GXsuMOYNPiJsHFyDERllQh4sKjLNuFKcjPus6qDlIOT+GI ZPROeSOVIB6gD97H/YqkOy7G1vxoIxnUIjmEFIVEYmgG2HlNsQv1FuG+AEXMISkMx/52qYjQCsVa 6oibb6f6RUVBa733anuYmGz8Z1x7AkABk4j1bgGlbyrZT0XbT7QZsvIMrGNlWT7PqJJOKlAxj12J JT1t1KkOAAxcBwSSjMZpLSwCyBvKALs9Sl2erVfU9unZQzjlfwSOdr6gyVMGiaWdAobxzDHBF6MA 37dlBou/smzbTbVA2X0ODKysqPdfS4S6V6YI6amiqX4GTfIIYNmQCMxypDlf4OIyCdCnEydRn5fg B73E4Mx/kHWAb5jrHr3U5WLLpKpib2U8urfKS5WPET4mzDVdaGC+IAIhvDJHAf8A+YKcy2B2b2fz JW1s5mWEVoybJMYYA6zJWH+zLpILpIsTYOXZoY5gqbwPVYllVJDjVlbh1rR7AU5x0QR9tFM6ywzQ im+Gq9XYgC5EwksaKE0YFIhLwFzgmGz2bJ0wdXdmSs51Mj3cyjaZMXNmXgdndeM3JjPrx30lHZf1 M8SslI5GomGlEbGISOf6iRF9dD1jOeoZYaxoLCyX2Ot42rofKETEqKjSZJco71Nl3SrNxYUlQ+qI QeGhGeHhweocBxnSy7GbE+j+a2PO0G2bgJx1DeqxQSjcSWFLE6vXgIGmZqcEyJU0sWtVkmvOo7/A F5g92U+z3HqKjBhY22PGJOV3Lkg2m7pCkIoJl53PkrfHgaS4/hIuTgGqfbDvoR6urq84aE9X99fk ROYTzDZxH+31T1AIqzP2KR4wLjlDqMSrFtku5PYqsqHDqUUbqymKeCOuIeIS2ithLVhjsoY2pqaj Eds9Xo+uXRPfKQT5j6R5bYmVzLCGw6lerxhJ+1BLgYm+QwBAIG5uUDjecvUCC8tmZp1CaPVDAEDQ AcL35AczCepJ1E9u3GXoHZrDDrAfTTIFpDsicAbJapoeq31EiKBUn35DyHuUizQZhOT4WgDRhv4h IRlpnk4BlCHbBRn7IDaQVLMcAlBda54sXig+zuhkOM7GVwqgIvHz07aQgAtRuSCYhrEJ055rGdie LdtJ0OhV0pBpQ/QViT8ia4Sd5qZ90rsl65UPY4HFh0Dr10uvo69HWTZjkSdrdr2RlWWKKk7x3FKA 3S9iVDTUki4NYFzLMZsq6JJ8Q7X0d+BbjYOdYM1DHs0Vmx7LJZnPdnv2D5c0cAkddSsKM9m1iMu1 XFtBkKE3t/adtvHbQkEQIyQ6hFCN3RtWzwO5otpug8VZwtMQcaYvpmUMr6Q8rtu1cExEAnlSZeE5 yxoE6KXYQ0HROvCDEcHMpP4oUA6Ub0QkdG0aXlMBDtkUFxAlo/lYTAR2hIQ201/a0aB+FfYongyK +oEDLNs9MNlrGzjS+kC/ZBsGfvhQjP8AIvRhO5vsqjY+eV9nm+fow5jBSoFW6CkLCApJ+zdKmTvF YKt4gAdWMSxnEoUZywDi9wkXrbza0XnZxt52fLXDnV2vDo/Ec052y3MpzK5R1NLIbvFmSs5KCNyB k5QtnJlk5YS7YMcZahDJ2bfFfUfAJRIsm/54HhPHD9kx29dOdDsGKSNc9bSy3wPw6SxIYowG8deU srq7PV/5obh27qdD9Tn3+bGp+jp14hhrkIY76VT0o7O5PsvtPP5Xk4WEjCw1PiKClDEOEhWIQQlI Cd8q3RuuEsC5gzLsczUqZlTUVu2vUAEkvyqSbnSIA/IyQWhMqN8jGGLTKYJ9z3mdRxe7ju6/rjHt V0BGX4M56p4jhsxvhnvxjrDST3GyFVEiQnrvfzb0eOC5G0f/AEzfiBjKfVL0Y823Z1K+v0jsz1Ff 5nRQOyzPHw0gY4S9U6Fj7GVUXZYIs5F0wlm5kyxlc5lZWHGCoC44F4dU5AOz1iM6bs12DkpDYDZn ajp5TmWbY2HgrBYofEUoUFN0gAMljVyTUAa5eaPrMyhIYDeOoFElyLW1obCL9JRggs6nGYMOS0LB 1ScGd5kcSRiQzbzIbLluPSTHdosA+nZS2FhSr1KqFuJRe5G+VxOlN3SuezksHRThgdScmHD6gJ0k JVYNON0GyneghmGSK0GTfI65gMgAQwl6JU7B7JcZqiO9nOE8Rq/vlZNNtLRXIU/kDoYvEK7t2+3A aNNvfRudlslyjNpPMFq+2ThhY3XD4wQwLKeruzMGABIrGnAzQzE4ZUKokkOCzboFdTzGlWYNGiE2 pI8KXIl1VNTTBr8rVjiMmqa8liIBNDn5Oy6ww9c4qSZEnVF6ioPZsnmfGxTjJUP9LHns3Onr3U4/ +ycRHr4nWwoj8Oulruh1dUMW3mhsQAgloSMN+69fKNcXMQmExEN9C8dh0Wa8bJbgqeHUlIyWi+5y WdqhtZUQwRECSL2uTIMdYjLHWOOvOdeigZNsVlm1ip/r4m4d1SbFYSW4vVLJZzV2YPJfMjMznRaF 3D0cAFNrvxp/QwCmvTS8xIkSya388ldHhNMPqmy/FzHugOPGW7XRvqU1VzovXnyKkZUDXyMoc8Ka vTo+3dmGqfopne0tFTuP2fY0RNz7Nlhrw2dFzq5zWKqu8QINx4yDlIua54AE6ckMJ7W1qGHLpaTs COsYVpHQllrnlhHVH48lFLXkpCW5ryKtBPBuSmGIiGTPDoE2O9GWZ7cZbmmYesQn1QkKw0EEfasg qUHsW3UpIud57JMZzDMTKLSlqbwCiNKpFRxYx3DZ4RbYAez7OnAa7yzsp+QbkVkbOjSkOnZSP8Me U83I8AWEwJwMzbxTwZ0LS5jsH6wDooPrsi8anVCGxy/4tQkdBpqPC+IYaNuomIApkUtcWUEQuPo0 eAe2kAYahCdOcVO7Jtb2CuM1FTaYd1fnU88A2jM1Rz8ccAAW2GGOO3eM9e/Zv0SZxtZlqprAzLJM q+zx14ACwreUrCCSoEkM5dLpBfrDq1EbsfOpaWSk7qiSlJLAKFg7839xjtHrjlQTKqBFKPZyYNd5 PB2fy9L+ZUINWjs+e/npOeE8Gf4Dgu/qji8r3kcKSxIJfiJF/WJ2Slj5Fy2YU4zyfZULd1Sf4Cvt CgZ1TKG2FDTbIfNv1iPTsoXuwhbFj9aDgra2UH+/UdbiRDBtaUQ4VyrcRU0CYgzHAPHKGgZPH2SC +iZASEcv8IBypyygAD899Cef7OZeJ+ZzPISreQk3NFrQgOAC1VA1YGqeAI+XZ3KzIJ3TZ6hqgPfg HfiIMrntecNGDx75QaODnk/SvS1BPHH2b6eTa6vz9HMV4+C0dUWjn9aLmr7+jZrpyL13ZVrd1dm/ DxbRA70/JIVs31c25TANeGOuWIUU1vZaLc5UeH7prcNDlHAOm72hYzQEUyYYBgMxHGYb8esv/wCP e1H2ScY5pkjHDGK28XKd1K+qPaJIFAz18NQz7AUrdCFHrNYvcD4+fIx1jnPhq2XtEAl9fp9wo0Zn nmkBGp+UKhxLI/8AEGPVs1evXRQmnBOJaOe+dEdLO7RwXUX7fqHbReTqZVvD5iZM+C+j7w+2Q+nk OWJVl2dYCTfBm8IEj2QpGMmqTwcXvYWu7V1sMlndBLXul4yvXORDauctxnKqatxANE8yWImk5JiY fVPMuFYeT7i2aU+WnkFjSv4hsMjXMdQZrrVbtiSvE8yJpKSPyDX4c3REdmxrS6N9LAXlhuQxNKCU hniylE+VynImm0e7UtB/QqGLgx0i/pSw9VIestWvTG4oV8RlW5IgL0yTDKKxzjP+unwPk+3fMh0+ Wcv7aU/YbIyJnJpaZJf1pLYJAJsBhoa2jjQB3JqI4jOA9MbgpQPIum8bYtvPCHK92N2D7/jEhuRb b6822G2HI4WmKLpyw79ZYoOmiHpByY5xoXrlMcaCfsZtV1QfaT3qa98JsfrN6oca52Fd0z0ZUFTA V36TwfiJ9Fp/3yCQUJwpOUEfsNT4PKzVRIol4S6UIrkacQid5Jjta7FidPjzfycXMXS1MRHqxGvY /R2AmsN4PiyguPbOHQ5L6ckM3ucvJzMNroSKAryKP88Ld18qdW0R1Tq0gCM36I/VcgG46rHXlQPF jmC2WCrAhL1p/wDrFeysbQzxxoKgoHm5UA9m+aWM9cjTVeLVNhKg/PiFP4v3FhzpafIsPZSPpufJ ta4Ftjria5GOaEe6RpD+Qfrwht/Bvh5kRSactNB148i6M6bXVCmVvyDucproS70OuRJkKkqLyXLj 7QfSD8YDd3wtdgaa7KKEc5UOOtRlxjkTLAcBU4qEibeSbmTUx+THj3QfSDBwfTeFrspdeijiPP5x XY+kzlfou4DDOLlluH5Xv14Q9Vjt2uYgIrXhpDXPqdLT5Fj5e4Y0ZlKuqKlGUFxDIlnJCc0bSr4h 6bvpNU0G/dS1hPufuL+lLmW9NYU9U1JFeU8+SiKlDaKBUc9SGmk8m0xeVPAILLHXHBzf6YWOzB5h 55aqJ646fWFrPq+vFkxYNE0skTNlLmTWK7tlyriFLk+4nZh8VvMvdjTBHRQRckG9QzfX9byM7w9r lVHXnhnBdNjFAcreiKjmzZNGUomQ0S11a49hgueb8/NYZMvULCfDNoTDsM79CuhzHiDvD5t3OYwa Ttsobx5LvrdjtcaHPGgx4Ao7HUooRIVYSV5mG8UM8uVyQnVid5Jg8c8e6D6Qc4G67P5rHZql6aax sEvA9D3shLpbh4kmtsvHiFipxSk3zdl6sUb+1ODpvzUHo1UqszgDo/TAz7wIH8L1al37btWDpb9b 8fhFn2rmezobx4fDjcdfpa4HQc0nZ7IN7Bw46fC55uh5q9XTSt0FHVKmtT4mxNPGVJ4KnfqO3jck 1TXsOIlrHFvt76LbAAdeum+LbCO1U12w3f6qlXk4FUnow287J8mNKELwFfmzSLayPsnjleoQajhS 6rEbNltYVDnJpvfP0/Aa0uSwb/sCW4Ro6lcyeUGtAHvdh5AfQgeZl3m3FL1Hj9OD2m0R8mT0qNJ7 iiNUZrnSwlkm2USeLVN23D8x4Do+3MOsNVPUlFz168oX4/z2bI4nO/HEbOXbvuJloaF7enqp6hHS k0onlflanZ5ROjH9rzV845QaiJjd7IIni1n44WpC+2+YJATbsTVY2jt2EFrIJhkoTNisIBoxD60M OXlBkseKXMt5jlBkv3Q7KEHqMZQo1J9am5djO3q33o3UaGyyqtdgREBtZYRwsgOjJyhC5chDysmr yogQYygAct6QsrMnIyu1DThhyywDJylsSYEMu11kud1WdWKgQvtSIKQKxFGxi3ByU5tRLSkJHAcu JNkOrGWU4BDtgrXhAwAF6jPLeTEGuyAkUjDBjCwLVyE3oH2t1U004nNYpoXAi2IaSFlRc7TBCmCH DG0UIgLmf8Gh2OvtMp6QWGQiAsPkXTmapXDQRiLCXLKUSzgsC7vaoa7lNiKB0BoLUAbupX6t2xYD FIxnsMv1XY7vJtOMkBo3oqStnUkTekdnu1HDEQ4jebHWwHKBAcLRyphkusBF6wYeXa5WUGRlDlVe TtZHqWrAGHyxaZs8uN7Oxnpawlnc7zse7lZaVF0OImXFQW/+bvYyIpcynpf4bZssc5QvPOOyCmvC zZa9aGU8IXqZpRcitDOoWLyyk8FvIyclCtAWV3x22VygdLbDtMh0tMdC3lV5OTkv0MmQBkste2ot 2bnUXtNWc4plotQHeV6EmhGLMwUmyvNi5eXcF7RjIcE9H3CLc57QudnPSenDB7aQDlJcCYKM3XNJ JSlJ3SR7JIAYpIJTUh71BpR4kxLuAeIB8WLeY8n5afZ6mR7IE0nQ8Ycly0Lo4JelGnkHEkLuhnHh 0IXLzTSB4BzfiJK4tN4W+hheZdNw2RbSFRHKFyxD+MSqW7sDNWNGG1Fhwo3GZBLHwCEVPKdwOLyX 0p56suc+WVBclnbDuJcNl+INiBtrKGZYWSovJ92TyKpVnnxCVJq1fJWluNNnPJq8nIc0QoN5Tiq8 l0vptCAvaDmWgtqtrMrLY7Uy8vKm1li2Chx+WTBd1LqJDa2AvI9ytyMfEyYxrQ+xCRYqLmHc/jP5 LhHvy08vdr0pcxMEzeXzm8aM5NNUAEvqzlnJ7axoTLkys+mrsGAP7mnjYDzjp3sKw3eNTGQwRfFe Z+Jttqi0jlDdyqSWgqj64h4jXP8AejWDLx2UIhH5+Hm20ljRVq6SPhro+eoxvM7yuFTXfAQ8oOTE sOseimWOxXw3cbVs8GHi+D2cvB+PBUzwoJy8rhS2LxBc2GPJNx35LRMdXQFH+2ksPFSbie3FU/oA 119YVEU7nfPk+ljILlQ0Nv8AOHSzHGe/DGdPM/M+tc3RKkndCkmjl23beD/0piWljKSdncWNCC47 u1/CsDnOVK4TdBjMT6bEiNGZZ68IhmzvIaEqXPG49YCMvKn+4W+nkGv0bPmO5yeRFJwCTvuJEbnZ 4MaW9aQ/289XpsCijMyKagmErMdCYXfIkcoknLyfL8VPHtx6tIHFr5U8zGXhoDPGjOpE0qpbheof CUpMBjpZzkHD1pnJqZ8Q8dIfnBKQj3UnZLewtVL/AIRKUolQ5CUpL0ajC/0dOMV+G9HqqipKrCVD kNEk9MOJfdIia90e7VNeS17j7+z7dwCTWafLR6Yae0p91HFWoRU8jB48WhLCdrvBMOxgjc9zd25+ l31zL/tZ5EQtaevy9pc69U1BxKR3FFSvuRjmkfPYbwyaazxnt46n6fxouzCWEtlKgtCE6hehpplH cTTchOgglPRtw9afOZfS9QaD+b4ee8UnZrCmifAx8tngQeqUkBtARUcQQL14R4lf1zgGbgL/AAp9 NGgFImerkZwNVg1CaiQQNCqaSPhxLAJqmQVPHoLmrR9xa/itafPTrpF4eo7VdT7g/DJqtVSCH7yi o10XSFWJ8pnc6EJZv7jxD8n2607jEO5bL0aqJ1I6RfiCx3++LyYEPzTbS1tnwybxy8lN2yRdSJt/ Xd0uz1U0xYmUjz2tQMeouosit9BYboejbaZVH4rQdSBfcvH/ACj8qQD16qauk7uTCbH4UEM9gndF 38j2RlOB/wBWEumwq7UDbqhpx7BF0dk4Xm4vL0P2PUHiyaoNe9HOcKlDg3nx6PgVcDyfbuPOnbTN 5yprzhVPVc4mYzNL2B4949QscRo0W3nURX7SL4zEU1bTjRxrssmb8GqjSVELiFex678+hftEZOjk 6ipKtcjXVGcl1SG7Xz0ob/L7iAUHp9QS3yp+f36S2Ykr2fkSplKX64Ymu8VEAEamtBro0dP2aSwz CZYNRBNnbdftNA2tRA8OyIwTftoWzUZbkJqgytOdru9NehxqSu1TdiYh5K/faMiYCOkIZUnRlNbt e27WY5IDlAADzfwnj7HCz8aWEqGbxckODGe5Wkbe15KiqTEJrSIvyHKcOGUEwHXrxAadi9epJWkb gSkpcLLboZpNKOuRJKHLxcwNdd4+QnouIfnFo5z3/vzLCmWLYtnGzdFqFD4iXGJERmkvM1uqi2Tj C3hu5yDlZICCCjX1iDgygcOVIGvryZ4CFK56LvSD6nlE7HbSZMvNMpzdZUMROCVH+8OGGWgslSQE ghVCHU5UGAYZjICYPTZNaQsJBUH3SSKnsu/e+rxlCwH2QZ4x5encYi0lJpp4GklUWGg6m8Tu0V0U QMrKW0VbQwwynFldrlBsEBAZ4SHKJNHiMxGBkEokxbPZsAM1nqh1HKGxEc/dHgFiou2QaR3Hv2z6 ecDsbLbPKFrSFNcRqDBcuhEnQ5lkShPxXoYGVhPZx2ABPYI6p00/2W60VeLta1nRuGBMo7NOJb0i OVKeMHOKJfqGi9OibcmGrx+IY40aZ96P8nzH0o5VluT5aMLKsJCM8xkoLJw1pUklKrBDjdJS7OaF IZAH6SoSZBvZy72HjVwxqYjXYl4Q18R7Qr5tJP0wKiosQ6Kyk5323f8AE5836K4sawDkq3wXcoQ/ C/CycnEBnSHwgQKiHHZca9Fr6gqWLlbRsUEYntENOkdfW0IB/wAHEb7DKHVr30y7CS1paGgc01Bq wrfxZqNZUWNJ8z0bZykp3qM5LV+A28Jy9gh1qIJReXXZbShfEx/ngcjpXo1sV0uRWmHGCotrGUh5 S1PVqBD17eiVOrY+S5nize2U5j5lh4mVDZwS2BK4WI6cNSEgJCcMEgqcrBSHqtTsWhekBOJlyrEK JUpXaj2tQzcNG4x0T9kaqc8sPWgKjvnwO1zo7PLRA6dgSxxnMcN+IewyLKUgwetK1CqezZPa76a7 0WTgfkKXoc4r9HXtuOWoRH1yI9beQa9esjWkEqor/krDVFon/qJaQF0faiDhPq2jTmvhXaKr4Pwq tAQ5Q6gyW/hBNthtgmrFPyC41rj0dXlY3FzDCnJPR1lOPtJ6Pc3yKWqgZ8StyHCEYmGsk0FwgsaM 5exc7McfouZJmRV0gULlyAB53i4IPplfbjt2JK46qg0pN94vBUf7k1d4QwYsgQkXq4jQ2uEu265U 6ILYDwMMmyXaYcZGvu1QQYJugkSNhLvC/huGf/vzq19YDp7EBA0wjs2J8fT9SWMmH4cS4Zs8nq5L saS8uyHDDKcXaiEp+AJzxwvDstj3LtWw1EBDE9m6hEVxsSH5OXhO7L5FeW0UZZIhLR9DDCUtmM8B No5g536TNlNmJM/9JyNeTBSRUBaSj7V0jq9WoUQkAgOQLR6lz0bKlzc17ZJ3aFy7EB7gFwPGrgmO SZpu92Q4dKO6WY4lxpOpB8DuturF3KhDpvsMcPRjtpoNm2m7VLjdzYRKi0rGxUUHk72yiHSmVEZd ED1+rAIQ6soA/BwHdjPKAQGhZew3Qfajph7Hd/uJjttxrBV9tdFZ5t2NxGcqYQuJGFdXUVE0gHAZ bMcJDrEQocgnB+BF9ED3cWhKZndb0aBoIbs1NUyCmEhki8m8cQ26h9FOqekT0v7PbP5tPZDO7Leu cROClKJhWGjERhvhp3SDiYawCklyoGnAkCB8tyeYm5fpYUBUEB6kODRmLMO3TSs3J951XAfKdud+ jolr9M99Jw267hjYV4fkvvrCYbgAPX0Q5SR7hrS9Rw+co5oc9RzewcNs9XSGsMOqkxbYVFcaL1Fd /wCxy9/SG/XT4qm5pM3OrnEICEKWVjDsE1cWAAYMH4GLVh0CBwCfhGZ+yAmKhAsA2nxrzwFc4hxc 2Oqa4toCD6sBnQJHYSmsBx62h3ier/gEtuMRsEx/Sa6sry8uB/6txD1T14SAp/ZjHJcNgB8pXnRE iF7YJ6tYLV/T9SHj17KYw7Ce1jCRAeKzqr6jnjF/MSesM/S0JHQhmEh1cehu207/ALMK9UegzaSZ UUj1vnYCQQCaqwyoIdmoA5H4QQzF4SzJfPEl6ADWnso+JJeDTpxyvbdVn1f3sXSyaodzufFl1oXs 9u6nC+yYmmGpHhHjQSSk1xmW/EjumE26rCN2LqpkrS+vXKPq9x1drEbHJUMqA8cHVXzzZCg+/DuG ueha/wBfqxHo1U5Gux2QHY9pK0OhMKJ5JaUmQVYzocywTSFi7VKaIKGKGN9CASABWwkGGvENdLH6 A8SSy7ZzbfN54b2WgMoFmUhOGtWKlzV2TQAlwojhA+drMxOZfKgkOx4MXQz9/wBMHjfqb2bCMJM0 YqT8D4Xmc6+WFCiw8h/B1jMZzDANk+mWulYdh+SK9XtgrK2YDmxCx9nsB+e1pBQf/v8AbtlCEx/7 F7Y7Ytn2M8UmrURQRXBDqHLoeiOUCI2SopoqiGjBcWpshlDjqmOqQBgEqY+7BuTBTi1Hhd1ZtDdr onXfr0mIap+I8fcQseJmWxU16ONt842Ty85WrcUnFWUgOSN1YqVUO8z0cEdUO0afvac1y9M0SQkd UOdCkinv0842R2ZFXqa6CEGGqHyhSiopnich+YmYAeua7P0UHNZp7IRE6y7C9PhWzmPDdcRyqw6F oFdwk3led6Lq1Lyfckgwlq2U1x2aQ4qk12y+lEa+dQZJxPWv+AQ6x1T36wo82NOx+wBjXZ4hvEWI xF7KTweWlB07dLkWW2mXXpovoKEtAhiGHJ0NYD0BIJzr2zczkGV+i/LJvaob+WZmQoihchRIIS4K ba1LOb0xMdKm82ID7wLBrJqGPaz17O/VFhW3hFO109n+1XiyGS0myxGelrRNVad89/Ka6s5IhlTc Dkx7aYhqw7WeIDKhPydTwwfAasTo4dEsQ+yXqnTOFnyx3A+zUZc52DrcW00+8SaWSV72cay5JXGP EWMsdUhnj14U1/U1NSg1Rjh82MrBXDNJ8WIOOF+bcZejbLXT5+2tzDZ7Ms/nZjZzLtzKAjCDFxVC UBSgCpVVK3iWIF2CR1Q7l5aalZU9KrUAV0oQHvq3ZS8c1/Z1HUeqYqWf2OFdxelwrdDnEprxXVq4 r66xuPAMNQYTxoQnsWzU0JsPQor6moksRFNuiJywbAZ5+K4tBkoV+D0t1CQxkGsfwemgzuztI1f3 coHvGvzkyYdEIFNFzo2HGXET0yv+dslfmAS1T1SoTjsXbqSnvYZgfU1FcWM17NJuiH6wU1ZgqIa0 HhzdycXEMZAAB6Z07vtQN30JbPGTCgFnDKylgkgFW9vFLage07lyRCiXb16l7NX+BH0IIATJcL/n O3O8Z6sMPT0ddMcdlEOVCP2Pu0hLUaSGuSDHVN6oHqxw9OExpt8mHycKiRnXMZXamde7o6fZQfHZ gK7NLAEUc+zUDCo74YI+aFMAT5PRAHr1AOG3fTiPo+lulbWbLMlyrP0brGhYo9nSp1Dgaw2nMZpM ghiAQ5DFiz8GNuTtepjAvYK5cLag+TFi49y/8jx8fy+0du2nQjU1HDS+U5xP8s1yxw+j+wMZh1a6 AH7BLPNbVFfrL55BsccceX0sQ1bhHGe7DE/HD8MHAb9Wab5bd0w3dFLn6ZQRt7PDhhpH/qgfAxpy X/tQGpUC2t6098c7HZ2jdRpjZgqKjvkyVaETzga9q0hY9Gr0+uZeOxnVNRXWFbL860DAmobjhOYB x0vzDV7y6aBw7PAcqamIdmGpmWzjucvoJT2aZoUh9GoNvooXfsaldXo/Y/LOB/8AKEuECqtE8A2L S+vYfu1b6W/auT3vQ5sCwPW2gwSSTp9oRSns0bQX400yABznMeIwy3a3n3cI5fWfDc9FqL7oY6VX mb4Nd2RabZQB8aMVFfy8hbtqH+yhaexdR+S4fWRrU6otqhYuMEhVItESZvWRFdZfEMg1zFyIezaG GqmJ+xa1wPC3gx11VDjDRuMi05O/PnxFcGGr9OD1UzfGw26rOrotMWe0o9dqO6HIqQ+d5TVn7XQn oL7Qt+oQQ9e4QnTrmcSKM7xZTZnFSFJRg5Jil2JKEoQpRDgkBgxLMHqSxhRhpMspc1VyVJBuwNiO bXiuGhDddjBC+0faFdR9SMGIcrDCOHFU2GC8+45PSS6K5jr0cv3KGUsZ5Q6xEekfsPKbUE7GUq/G 9IwRQxnPVcGzV1+88HtyFdRCbsLkUHUuVGbOCNrva8QRzuXgvTRAQmKMwncHJ1DXXPkjlDjkr8xl qyd49h/yjFTYuT6jvbvqKcT5DKQfgrTfAAw3fVrlOlR9J2a+sdiswwJUf9NyjPEYLAUO6AlZBqCy gGAoXLNBOT4HR53LzqXJcjUpLluSjq3DWGbswz20Vs0s9qh8oiNGBKJHChQ4Mj6WxUVfXejaKEHT t1BQL8YbN6Gj2M7K8fW6lGQMRkOPxEfhs2c8aX1Ji6tujiGuejHHCWqezeRTvKLEL4SVB4TJdhw5 VHMsFQHyofK1NEAdYz0cRMmXWIjIaEYjbZePr/Yp2/CVDQzJlww5gnDCILbSgJ8Zi6GMjX+vYbOT i4uYDv27feycyvZLZPY9KEYgVnmcJ32SSCjEBAOIzEAjdKXCklJ3iRQQRNYKZmbzEkpYHqgkX6pc acbEMW4RoCyMvIceLHsEFx4pTbewGmIlorjSVdG0kbJ5zsUbhCaGv7ZIfUI/4NKe7IdAKFdRYyjg easJIXIjwKo7YOo7iJs9nNpTQZvNBAVq/A5vfg4DjiGFKo7Da76/uAv+Fi5Xliygw4ki5kdv53Jz EGu+pYLiGPgBu5LjQ1oR1DqmGIUs/svWfHLAsUOAza7weEMM8w+QTekt2vXLAcdYbudoRO5V6WMP KipWDhYufYeMEglKQjFKVghILEFKnDPyNI3YCUzOUKdipAIJLFmYMaO/mXPcOjsPMHoEPxUtIJTx arSjasIKPC8SSs7GgCklkPD+LH0gHSgMQ50jIf8AnSljQ6DbgHCVhp7uLwyhYwGCYeDPU0VXBptw U0F5LuVf8N44Y4jIN+3EAX9gfrRB62pamvHyFhgd428GEJLK7gubNuAasMNs+j+o+GNF/lObmv5X 4UXsQ6cG71S2hQn0uZlmOH6Q8XLzmKxlZMsr7MkkF/sVigYEEsQCGDOHYOPkEqOirdKd5l1bUcD3 e9tBHE/YUQWO97WcGYZRcQ05yQ/XnI6WysN5WOXcmKE0ZfBB48nMOUaHr3yDpp0x1vY17BqlKoqL PjLM1GSPbGxSXM855Ihjc2SOkoCAhvAQEA9NOQxfqaiuiE+CI1BnvWJDnJIxQqT3rK8M/wB4UcTj WiMSIq46NxZbYgU+VZSM8U0CAzn+FPX0gOsBxp3XabZXM8+TlU1K7UnI09GRvJGJunECUAijpcta ru1qwowJwS6yyAob7PuuAN4AXDDhW3ECO69NRyKaQT0ojUAmp6WTSyRMn/IEtC37fYATljqCjwcq czSzFfX1He/FYd96p+gR9GvfjrpV8CFBVOQHgQqLiUpZTgXYWwvAmgKo8pVBU0MQJrT4wxnKYNYA 1T66Ww9gzNhvCvL8ZGEE41yWd/y9Uvu/l6eG/H166fFGZSypLOBKFW/uzIBxaEKIxQ5BrVRAIqdC DF6lyFYajTrIKvFHPmQ2sZvcmisPV5YXK+7Xu+FRZvpHzsnpG2YaJYasNUQHH9FvIvGkH0bkQLvG Kh4ypAvXotNtJzMdOV+/R8NLmxvw7+zBhUsBSUmqyK4XHw5V7KC8sKi0228UubRlpB89f+kSeprc y8eXuONIPo5XrFb3TXi41IEde79lngaTPxU+ZUNDGWj7i+lPMtl4aqfrXsM8xszszMuabPIZxc7i EuW1FSXbWscZzFunZiA1C4AahccPp40xYbOf8jy1gwGceTXIoNc4/FptlFZHByJh9UXYY39cq2hu AfONDXJtZ2Y7+jAFlCpYEToIt9dhk1QgCsLz9VHO5GmknOLF5+f0VLniDcyIW/spv/sWqwlV0ZLR DcI5yiGHkjtZ6LDeN+E0FUBaX0ENX9eIernoA6pUy+yVIi5Gwn10XENpMl4aYvwlnaST0bYztVEJ 6L6DfT4Q9TA0s2un66apeWbNyQNOb6XrQDW96MXjcCJmTGjAa69Ug2ap4ecKDlchuqtL1D/PGWS4 GudA6TVigA20xeVNmnH837i1fGk0/SDNogXidQvVqglRNrxRIgFQzIm4TXgzp04Qw3h5UtPX5e69 NKTdSOHk00XSomd8uAqT4ncJQnpK5mml+Ir8DXEBu9OzHnlhRorjh5k1SelOq7XaxzSOOjbhSTl5 KaDiPHUK3xgDgbusdFfXobR/GgUAHD8vlDMs1J7OriiMXBSc9ziBN75lpIpoIeItOP5wG7udDT5l /TKdIw5a5KTapPSoxV5YyXNE0s624mlOMv8AtzR+YRAbu50jy0276T82cIs5Bb9fX5y7YfmjioRb d0nOUxBU+ZWNjyfcX9Frsmyp9HLSkXWK6vZKMB4iXMxIY7oOd5sgoT4sIKnj1alL4n4iY7tC/wBc pSHXNTDpI4jd0pQjy+dXoMpuO0e+KHg/UuT4wEOO6UWvhLV2sSR3uU58n2t5CrSG+G/yYjA3GmGO x6eYWHIuih4LD/hXagsrx3dTjTHa10GKjXRUd7pJP5elrq1cK7fa55QdcwlLbro32YyQNuGi+CU4 y0dIDLzwkjFFbi1UYQLsuJXwh4dx+IobHTzLeg09ach6ROQLeCq3DzkUi7MOC5/lnGZBU13K+WP5 xNPyIdIc9NtK8uX3ssL8bPx3Tp8KXpx3J/Wx2D/THRBaiTUquheYWzxBDUtDVhLWiekOCZ/XXv1U GONVX1JUwuP+vMqTXVfytW5zH8ZXIuS8nfpTq9tCYQ3ciTHKy0z3VmJZSLxGgm2HOcJm+Mkw8qXL 9ekY+jVrGQDnJ12eldKnkeMmWsaJiSR808Ja/AqFt0d+lOzV14ydZIVKmvEjlpbhzgmZ1Pax/isf CHCpJnjlaFe5LsTWOlk8yJ95+Adgov0gl/8Aj7T1E5M4eWDRevLiiFmOlglku9DnFjSS/wBCecG/ RYZDLZIaeoy6Ny+v4oHjjBRmfGSIMODNqBivNuPUzApXzx5lGkUFMjhBnJAcnKQYmLqEHazh0FZk BlaUNQRBmZWQAv0GaOSAjphiuqH9uStr653iyYcW4JCilXYbNIrahlazVhGUnuM9GWFaHkADpUPa sqM+UOUD8DTwO2yq/wAqFbkstqKBa1saxbW3/BgDokWhGMkk5Kc5WmqAjDfsF7RTJyZ5KA4Z45LX dQiyo0suQhlCAaFj+D1g/Di2A216JFlhrJbIj+lo+U5ov2Om6OSQTXamZOSC+uROse1fbdsGQIjk ud7wGENM2Xk9toAFYxMgcinPAoTU0UzG8LBlFgEgpYUoOsPxO9AWIcsIYWzaXqm6YWrHFtlnxD7l DeWFJsIivlJ1SlWg7JL8GsyqpdWmajOLLyclYbvb5GUL5gIYyqplvKqHJrmILLe2Xk1gozq7HKwE 6BrjFeyo/WaLRSRibG+HJZothQv1Y4Tb0RGkISGeh0aILPUdYCIBRpa8YIaWs2s3YN2vXMVZUV2u T0bglbaNFRylJNFGALjhjaol2zlf8PcrJyatsMuKITe0FpZGRlaYsXJysjIRtxzRgsaO1/2VbSkJ DMSIHOUE1ZifAxUM5Ki3F5JWuEFvx/s7vZvZYZKC48tv5WQDJiq1cusZruqwDJfQ1mTkZFXQ8Sko WSAAwFaOWKQKvUhQrzNxQxgnmNNeznw+VYtpuWX1l4OJAtP9jhc8QlFDRXFVrJ9tElOq/hB2TXRk 1nDZKO+ByQDKXWB245eSyYrVeXVtB4VWXllH3l1T1EakCPwlhvA9yR4R3U8UNpQTtIgHxkN44joz bhBHi/UXnox0PmxB+MukeL3a3Mt6DzC0NCmL4MwTPWb65Yte2ZY/GVuA2BJtxCBGRgczSHx7Be0Y x9WkU+S+i0tC40YvlhDPGhGLJfcjt1WvrJ7/AGBJtrCW8EtajBBw2TvJMIJcKOXmmkK1zygh2HNb RZ2ctGXveWzEzhHowO8SUmzjeABCmDNTg1OTR6l6zvJR7iKeMdgEMWHXw3he12M1SJa8Wuz0tFJp Xg1MvQf/AJj1UE/acWEM5F8vnx7uoxASyYIqM3m8cWbsPqi7O/b8Dd9Fp8tPXQvD2Hhm4oHq9xlm 2QE5nrlN+Mz6VIeJEOWvD310AupL18Oh8dys9nJhUOKi08IyOE5duYJa6teI12Um+3dgeWr066N9 m5XpeZiZ0AAJpoAPJno5hfnMwZVwzto1SHBPZU2Gmt4TrBwijqiPXns5iBGg18kSSnNhpfoUUNvh NwS81saN+e6KujPj1f3SI4KhzMrp5yNhpKmIXKGHKBw72tiy2XRoR+AqapQbkK6/Ns1J56/IsOEN GwuvWu4fm/bvqej0xp8bfD194NyElQJYuVJyeEWFbi3ktLYI/i/h3t89Hp0U6mJaUl2qCo0rxYUL eddYrXSDNMWY3FCNKBmfv5iHCuqahtr2fLnxoxoVDngk3JyNlBVP05hygcX0WHkWyuvCkXidmLbQ HiquOoTYxxoNI+ek2krE9JGygqkwBCvxDAPjAcX0W5lz2zo4I9dX19bopA/OTOdI+evCLCtybUrr 8eghLg/i/h1Pyplpo9N1G9Nrq+p5HQBrzK26FRHVM8iwk6j/ABL+av8Am/boyEAilulzN2BzTBC5 YUSoaGrsksWvIh/GNCJo76aH2k8OI5R6GOkaaltdx2hT19x4VLrO6PKpy7ExpKniIYqLjf5v/Qhr T/X3fQmFgmurzj8jw+HiQMlngzUdhtdymwJ3bqv9+Ci3H5PTbnkvIenZQS8AU2ohuzS6U3FwrGyJ Bt4KiK5Hu1OUjYYboXpDcrH0gwcERNulTsky5cwsKFhs9u/QOwpGiJqqqmVK9DkUMzVjYcZn+OtA +vnGC5h6cdVKLmUx0bJCkDqlYSG9kuoO3EV5hqRY5cE5gkl6pT1j2IevwgW0SFJDdUUL8In85ML0 SVRz4lLtz/UvIS1r6+jEdeqmwKngPi3PZwAp5bShsHDZWfeCWvLV/IXql14a6YPTa2+IjM4K/NjJ hBJ56KtKYLyWuz8O4Y6Jj0hv6KbwqR4Yg1yNR+VOTMsN/EG/0b94dH5vfpD5qqZ29RgAOMoGUlKT VKgCkqSaMQbKTa8dI2dlj6qVSrkEnUuL/m/abHmptIQctwsm0NFePpGHUQE48qPtUWW3ECFJy8kx OS5hlIXag3xHtBFuXGAtd1drlZQT7bER7allJHtz2tFNHbi4lRaeyeWOd5t5WR9G2MhKk+1EFzmi 2A9MsNshx6z02u4GqLnqjDOnIlkh/wCxtojv9wonqeHrypce+c4NE8NWKp0BuDd9VPMt6bJiWk0p /s5kfrTDw04WDiEOrCQkJSndJchmcAEB3NnEFJyVQspQBLkAkP4UgXkBYIMjsccCX/GaKymiqj5F HyjquZSA4sIZITykKGbJxEF/Spwh+EOGTk5IdtlZWAjQXlimF6ha4tPrD/fR2oWm+1nIETojqpwM oEs+pitjcSN+FqmIbMBZiBlSlKnT8pJqUsEO/kpNUi5Xv3NDZMVJMPpfTrAP30Tk2Gx81MCDHZJk tgd70Z6MnZ/9X2y30WSHpTx8CR2i6XgrRnebOEZ6nESMPDwiEBODh4YwwtO6d4bwxWU6eoCk725G WMpLqG6GprRrl6ju99EFwtwPh69uNLvqfemjaN04IePqD76coVssinM7si8TzJCtLohVMjUxTuaF CQp4EMnkIuZY4YZIZP4XVjhtp1uVVSFRWmSNfm2cJZzvzZ9vTuDdtpF1KG8Ml4/pGuQ5YC2sZ4l8 bKzPRlJU2ePNGx+qf2qtgPSLibI42bY+YSmNnRznCUjD/vyGU6SFdZKwQA4YAMWLlik4n8t6SEGU AZJS78mdqiuj2bsiPxyZ9e9oSxoZ5H5S54bvxFJGyksBXEVe9mGqevqx4kK4gfWDjPSksDKksKRx LRklvlcnKFSOqkwQQEcBD8IcA6dsqd69dU1FSVTq/gMM9zLHD2dEv3SpS9TAGBCCtF3UiQWhKiOk qsZ6ScSSw0ZNU09U+egDYExypAG8ZBjSy+jn0symyEpnMrNZYp85Xiqw0pIG4pTgAsKGqagghiBc EDz+Wma3K23Xo4oz+6h/pH4QIhwRg1CGGEMyVRmws5oJaMdKYBn7pEZrvrcc5/ukGHs77jMXRZib vDmbuMm4nuY6U6crKb6FqDeGSOvUE8Qp0ClKmoripj+UZ5mQbt8/sDGc9m2lRRSs/QLjqCBXRfhc 1YjV7ZBTJN0HUWFQuNLW8rtlu5O1HEAGQhgPaj+EGNKzsXthJ5Lt3K7SZ0cRaMQ456qftFlS0KGG SFKCSN5Sd4lQKQSQHYQRmEr0mSEkkAFO6zMPZYeQHA6RxWQ3tL2hYMoNe1YSxpe0OG+aWMlaOJDe OXYmXp89bBls3ylPDChdOxR2kbSUZrQi+lRNi+9X8yGbDhVc92OE9lKSaRvxZb6BfIAIjkgGMx/B xnhLGhf8qwBYpqj5gvlWaIYCGd6hKrY6pzwFyiMpasN+2lnQss7wKgqfX1uDsH2VDg+plExFcZpq o92qR5LEQHKRgDEAEZT65YSp2baz0zbCZ9kObSmFs5v5xiJ3MLGXLYP2hJUgFRxFHEWlkuUrQred gGBLp5XJpyVKf+pEJ3gd3eUzDd7mNiLs/ZF3/AV1UYQ1XwPneekjZQfkH6a17deONFCDU15NUEge zYDBTDOimAn9y1LD2y6KJzhPM83qMc3DHZOcsR3bdmzfjRwJlPk4y/LMyJ4+vH6gl9g0+Wt7e6wD A9YJ4PVu63dFoFAA70FePPvgS/Z013gbL8GG5UePY2Z9lT/QTMX8mc/9e7dQ7MJhIOxRo9z2KGfX niOcl3Q/IoLRzDjMhx1cAYYYjcWO3bjPDeNpCzJCu02zG+1IxF1tSRmwsX0j6PK92KZBTwQcJSmE wnj/AM7oong/BpnQIhy34ZMCoUizXQr0zMXAr3kp8erV/LgguB+DjL9lOkTO2uUn0ZZfsmgLGa+u wVDd6tN4hTg2CWG6QXIJcMBAAy9XSxNmoFXq5FO1rGtrXpGaOyLKZ1q2GLSqqTO50Bpi5KKUNjty VxbQEHtdWOGH3awy9hJQKju3RgVT3iyD6WRJb+PXpjINohceMvtx6GY7QOa1oKE7ogu8DziRGu+x SxVzTUNAnqQ3EtX9jk5YDk5XgPUID0gFKIsr2EISWQFR/HocOJ6LZl9EktEV9NTaMo5hcS2GKJo+ 25iIagEdQDtwlZ9ldttnsh9GG0ezhUfXOaLxFJG4KlYwU+25LdRTggMySCoqO6LMZeZnNkzQPVCQ QHoSLjlpXjdqOn7Iwv1zNsGWllAjXCXr1JopLNHX48eqAhYegB/djQXvYPSlRUrNpg9POQzOFxLo xWl8JfXu695q7Rtn5uWkoMr0EngtuJFb7nONg4cNNUEbKcnEa1fo4OCU5T34iGMwmFKesgWEoZWO lJ/KbAeD0dte+ibYJrGlYI12khQ7+8CZTf1+Gw14Bq201ZFtZs7KeifaHZ6bxiM3zPFWoYQQQS5l wOsPwlIWWqEnDAI67iTUtNetMvmgHSEgHUABqEVLt2XL2phXs1ZyoqV6zeh1Hhcqz34snBKBhdd9 IEpCOExuPDaEhEJypn+zT2T50wThVD+FZKB7bdpdho9ynHAbeCymqa9x2vr/AJtzAAvycpjjIKFj tcWEUK1k5mg6FyJbiYRhntFTbOapSOkORMPCtrWUuyyb+ysnX22VMBDGQUyIPYZ25VVVRXpVox2h m38rhujDIP7yD0TnOW3Clv2c2q9G39j8p2f2gWMTq9fCKV/3RBYCqd1illApJuxqDA8zLTnTDNSo IrXR3bvI0ZndtI2hYtt+HbTjsfDPr4ZprAMtdni5jrgSXfpIIBfQINzc2w0fnjjuAN4U3vW11ec3 li5XX17vb+uvXrpgGxnYQqLJbnfDqqIm6f178biWjZobbejeYXGtAvD5SdASDrHXQg9dUV9Tm/D9 7Y95lOv2B7dewQGnENtcfZ4Z8U7N0yogeyCA7JcHX2n4A6AAsHkt0syn30gmwY1uPocmeAw9moga rRDs+sCJjcImjIwScimdd2aeEyDFfQhJaEJ839IkNEAOkQ1BjQO9ie2y97FrnUS91abQveV1HXhD 7PBTeMwDnmx9fKIOsAekhDEO1l2LHCdQcKGCJ6oLGU813kcKHCd5pihr4lXR69vSNAkx/wCwrsB+ udRdUComFYPEVXKERYCs3MpyMghtEENdnpMgN3K2iIDlY6xCnaPRl6RNk8XZw7EbbEJywJUEKUje BBsxSCUqBPVUKEFlFKQxRZjl02JsTUmeBvZ2Ad7Cj04WcxBo7dm8SKliHiNm6FblTX8qEwJFHZEu 5rtaQf8AOuNEQAygX3FLa7QGU5yHAB0f2XlTPKXY9i9eq15kyoLzvgQcOG5gOfKg5Iry7PAQ247N ct9Khgn2FFgNRXTnDHeKSjFEgmHM9JspvI4sltqEti4uDlC5dk8AAQkEx1z3hb/syP61PZ07ksOz rbRl80+mM5iYOw4sJqYfTEPJcAAjAKBk5QTyREMrf+D+COTlfhU2zGaejPK9otiJfZfEw0IyvaAY uJMhKnShZw3+1o604YS7AGpUxUCImAjNJmVV0oWFBQeFGBLjh3F25zrDdvA9YhRogIdRB1Nij3Rl hrrRxWNvHRzMLiRtgaNyCXThOfQFC0wG7MiRjNFqG8JT1nUw2jMRXelMsm4CsSRUkxBv7KAL6BDB tCA5QB+Fj/zQH8KdB7m+wwWyClV3krQVUR+Q95vlYEPTNvBrnMBxn6KXBZj7GDa6g/aPgTEZ8t6H WiLCiQlOdwGkiI2SpKIpfbAI3Ki9uPah2vbAABkjMZDMAp0naxPoi2gwc0zebzLAObiXxlJKsZAJ KcIkMBiPvJI/u0N1lMjdLwPLetJU7oBCXAYA8U/5WAqaszViPdngOfHbAcjjwBWCipIAx1vPKxGe qYgG2Qz1YgFDkdjzTa+osK2cCB2oAuHcITDmajtSly/5D+2Qh/hCFBw9lVsT2g7S0SoYPeD7IT3Y nteHKm2FgTLuRm8pkFQHmK9lYOHLyN4S34gA7ivWZGS+GdZWhjDlbQxTX+14DpbMNpWUbDtiDmFl r6CCLlBkzye2lIRxlPVMKcq2p2iybG9GuxGWSmZYXUnMMq/vE/a4YTjLcqQCVJ6m4d5SRZLG8HSE tNqzNc1VyhW84IB6qWBNnOoex8OcbsOdSQKW3HBUcBnOawrihmfRx3rwwpsrskvY5owWhI7p8VII JTUUk90M9ro76Jm3IjNxSIqiGFwitcfiF/8AbNwA/C/wpa+2lk0p/sbdjG1pAC1o0HjFKCTtajOK tx+Iqq4RNJCimkcleRcq4sqQuPY4wycNYiOGoZdGw/xUqioDN/V1DOY++ym3b7bk7PbaZTP5BmWH m4Oz2Hg4m4sLwwvcSg7xw1EEglx1tAq190jlwmcBctNOk77gnql6MxPGnClOcCf7KggJTJ7H2XZ3 fII7Xd8B2WjFEkZKc0DiKc9XbcRhLqDWI4qOw5rF8WT3Ah1BEsmmGvGx0EjhSfz8ioC8Aenq6ApZ PZSYYPCLVi54ITAQ1pxudCeDDeZNvt8mKkprqYhrQ37lInagI/g35OXaiI7pjTKHYfC7/hTBW09p iyH8mmEJxJb1bbecDRV09TXVTuZuLJG5EJf8POMbiAe1x/BHtp/hBLfITUlnPognsDFzNCc0xNo0 Yi0FQ3wlWJhOSk13etug2Ux/ZMBFPRczYBRSAybs1Hbi2o4tAhrfr4r4k21o7uhCrjKhmbwyoftv NCYKU0xjSQRuPWHOJCWw2Yz6Bpm5NWI0oNV8A6oxpssc00leSbv1jj+7poRLse9n+NDqtrQ4ccW4 dvRpI7VWnNGdYNvZnrKamCqIXbXEN95QAIhpGthukAyHHK/B6ru8Q/j6gqomPyzOyfy/bgOEm7hu 2BjToG03pNyfYWWyTIsHL8LOlJwMHroUjEGEUJQjeSoOAQU0KSKNpSNeBl6plS5o7wBUXBfrOQah 724WILxyY9iiiOqw3tfMAiYrzJZsRtJqkJThWfGa6phx6hLIhKYiLlRMmQhLBwCEse2A33ZYqkxX 2Bo0cAXLd7HIYHTna+DCCZ3TUAA2DrHW6Nv4WIDKgf8AshDDdVnu3YL/AGcRUiye6DjXjq2zaS2x uwLiWhvxmYYt9u6Rokwa36eHAZjMyVvF0IccexqxpfrQqLwSHjCBrxNbpPKmF3CC2gLuVMACekQD gOAfXSt7Xrkc12s9HG2kkrDSc0xMoTipCkAIUVD/APKQAEmikgqcskuyQI3ZfgbqMzlS4DFQBdhY gh6HSz0bnAn+wPqfxxWjkmvlMzCFtHe+9txvKrEejC/MBCfQOunTcm13fRf5SWLmjme6+M17Zx55 vt2fQO0acynYcyzYhvajWUBcc5ZSiq8YMOXJ0WSTSSptlo5SMsIa9koa6OT+AvxDyuByhBrNWTOZ 3aZenI5QZFb2nTH8srfh/k/+d6j8/nzZjhP2Yaqb6a1CW9IEnPAoWnERLLSAHBQjcww4Aau6Qk1B SXsYLyYbsqU1opi/FnN6349kcS9cj6K23DFR3sm3BbAAiE/yAAjPIMZYt0MMdo6wxp24HK6vOV16 qtQpGW+KuOjbdkN5u1VmHhz6O6/r2DTkSj7DJnJdsi09E6MNepJ0L2bHV1rLebyWGTlPmNL9ylrL XENloIZWSIA3QcIgL2dYAI5DN/CycrJygAcmvIk2rraRxZB018dosoawaWBREhvtN4LSa2WHOUmW hzGTgcQeW0gDQuf4U8Kds2t2DmfSDkmzUxJZ2nKFpwMNS0pxj1iUYRCSEqLFiQoKZmUH3mBVy07L S6swCsMGvVBSLvXR2JqLtQnjHZiTr6+pNLDqVa8DJkrgJwPnT6wbrT99dGZyVOZwVL1FeACYXlhL WjmvfOeI+rDduoPHsZ8Wn9GyyEX0+d63EV3oMU31CM46nCdFTU17jjJXhW/wsocqTUbmICI6hlPC dCLRgrqiuZCeRqPk/wAt1B4L8RerXPo3hOnyXtDks1s/nk/lU1ipx/VGKndxU7x+1ZaQFJ3gFAFn DjerUAhosWXHpaCQ6eoSK6EO1H05t5RgdHRkNkkDD4dV2u1QVCfE8MigfpoLiWoqa9H27pGhjr5a PTdRwJ1y4/DSzEZ4uPRtn5lcqwbNo/y+4phoWx0PHmlv8isdoUUC2241Zv8AeK4ClehNUueGTdOc Zu1LxHlxq+LvCWzDCVIspJrjjkfMOo8uFmA1maTSyRxWNnLtbMNEv5lY/nBtEWtg9Zc/en9YPRlj 9L9H+y80kD/sWGmgc7zI1HiaveOL5mej5rmYAJBUe9yks3a2vui6bBL8I11vouhkW4pNLSeCb8Rd HjaxeQ3WxlpAXkLjzW4Mb895SsC0gpM8nFuJDVfGbJqwVWFTMohFEfwClrvHyEiriF5QaudIhgIb qYfgnE5KbfZLLJ6U3CJlNZ5W9GXeqti5n5p0ir6DpouT5vzwAGt9mohFuReSkyPBhDiMhX231RtN dabbhSSYJr6aQ+AV24/OBuhLms7NXtp6lW9eT7/sU7WT9fnBDn1YlQpW4pUhDfFu+MjnF88wyFQ1 X+lXkzzQidbd0rN5KgJmHHUK1zZv0W9rNoozyvZ5AwuV93P+G685O80nM+LNKMA47AJOeD8RNHMd Kf8AjOjPXVyqySpfPrkijCdeWOJyhTwbeg/MflPD+Ik9+7yy2qE1Mr0ci6H/AAyeJZbT5ZksFHCT vJTIfoWKjH1g3dmlNLLA4NBXQa1enzHjDxwKq274eMOTxl23pdZJyN5wjxYgpfzM+EPzd/pTae2U 8KRc4cr0dGfC5CQL7eFzqh2KkPXusXlyXuS/tv4wId/76MoKfumnBU1QVWDvJJ4JcjrkZGe8ZkJ+ HVpj4fGA3ZeS3PTHHTKkYflTXvZpKFfCSv7m8UEomK020lJ8GO1Un+atclyeiJqHRZ29OgXmXRZN S33TV639q9PqtdDc7peZBm6szC9rUuR9eJr+zELOrmGYdMD77RC6osOg6sMhX5SOZpS8OoqH/PBB nX9NNgeegXA90duPxuLCGuZyiLFzZkTJlFgE1MusJeA1zHSBuy1tZ2+p5axg8B3IlRCh8j6foSJB yJBpyKh3TdJJrLJbIui+rhXQfCHL4v3C7NrpafWO6lsLyaRrj6gx4tpRZtqBs4OeOE2j8WH5ar81 86/Olp8i3p1AMhpeWJklX9m3gPlfVrRBMhw4F+fyggHYkXhUOqxkx25X1+dGIXvB+QxObrsvq/g6 uTi4HrxpQ8Q0dWR4lxAPvhVNJrPQXKqovyPjM/hNCRYVoe/b99I/2IBeqEB72uILF1UsZT0ByNeJ zbzQ5eWfJa7xCu6+n3lS2LYEPHGcj6oHjyrm0PzTPS1o4bVjg3Y0Z4X0hj5xfRffRLlBadVKl0uS QTRgSHGmtHq0M5gvKg8h5sfjFHpyyeeCy3yLVJFU1jyvom3ShO7GyQS/Hz0W1zzixDX9VPUjBOuP LFaXY8MiKapN81I6cSThzjReVJjx0+NWj4465Y/TLCnqWvoo4jz+cL45WWW2bRnY/IzKyaq5TYXW vECG+XmgEzuTEiyxaxhitCHbBlLIAGU/m4IZWSORlZIaYM555Q5OTlM7Lq63IyLXeEFGeuoBm01Z BF3JhBiXW9H7CdIcvx5WTHOhCA3yiLeDniBBkMoAbDIik0xEGWIAL9D8GiBpmYgWYWer2brUEOHZ ECzQu5WRlO+GR3JyW7EmBD8XMe6bBJYceSOQwoiYBNq5QaEvUBygywy+2wqZ4Q9j7YzfzGtKQIiz lOWGi8cAYK2mG6IJiafAMcqGMU2SOTlC3YiSAWu9YXO3Jyu1AQ7btmGEx5SqWmelkuAKJIYuQyQS CdXckAuAQxUHhxGzmrBmHNutxt8Im17bg5a4XprRx7t65u5BalC5hwfHkxB+0QHlvLkW9JzwftGG I0R4dwIyUayDatSXabIMR4KpBGX0kijKcYLHyrlceIKygg4QEXDD0e20nesBHVk6GPJmSyskWY/A AQTo7oG0VDt3K9jxuJcLrT6GVfyxHizI0knJHLfiWtBk5T7ifY8yF/KHLycke3W9NYD5WTkvJmiG WDAHKHIywyaFQYnMG10jNeFdrY8msCOCY27lglbGdl8qWfpc+IoYWqPOBuzDkRFIeWjLly90xYc6 OwJUSyQQr7QEUq9GIbVreWkaOjHgfr/LyHhH5LbvtIWLIw5S2bPMuKEFY8I7oWUYGu2wclle1lDB elNDFDyRDJyhyBnkg2O1yXpBp5/hcHViIZGSfXsA8H4LLFoKOFqmB5F7IkP0uG6XD4nD17rGkinC WKD6Wr+fSKhrmOkDdFuIUmQ6eegi4J/4UxoChlINpmzS7XhZJtJQsGIEFn42kqILxs9q6uipaafb N8AgokZ7Kz3b2VlNhvxDDKEQyXW05Mx7AHbP0Hgw55Idg/YQ7MiJZqsb5IJZhTWy0Y4pvyJpJWcJ S7XKea0xYjFBb3OHR1Fyhl/g9sIjvGiyZwFt0p6W3GeoIrfzvo7GCZX20/vD3pjdFrp1MdtwudC4 +HitppfRu5SaS3ifGZ9TXp8dfrFhh1Sx2BwqanSpuJ66qh3LoMJYSR0nwkpryoAf/wAQIiY4unmW ysfSQa3f3HalLb6G4yKlEhYNPxLc5NJ1Jl6IXgJG1c3ePNeI+kJ0xAsINQmnxfEW+Vr3SyfE8Min FqY0kvxEirkpC39WLW56PTDrpa9lEiWlelaqYNdWj0vew49kLM7G9NgXBGnZyiP5nXvFuVCq46ju bwPSzmepDeKcZKa8qfPWA/GA4sMXTzLZevq8pVxB4NJPVVWo7jkF0E5+VnLyU3aqSxmhj+MBx/UO 6dHB7VxFNNF3jFuoMqTgKk+J4ZFDm/wDfmj/ADfburku0x+ujedR89VE98R3PZtXiT5BwcKHNG8w S/05qCH7d66W4K3mUSmqQT+zulvCdtyaE7AWAHd2fIeA4Q31N6vZLMV5EwVg5Z/axzPThtWOTv5U lK+nwuaogOL6Lb8BxopqeHdSM4G4zkosyITpZPPX64XYcu0V5LQhEAekVHwOLfbv9FoB0bcf3OXq op5d8RpVTLSY+Z5kw4TtPx8la5sZD9POmjephXvxBLrjquSF0B2asZ6jlM0WbsvT5luPHuwREAPq 6Ka8XHCkLFzuFIKrsxDGvinyFICR7Sf3h7xFP2e3UwGU3IoNyAN9qSeguRUOxIiE7Ee7VN2pfj24 2PL4v4dj/fTpmNCwRyOIbDsCwfblQRu0u/NAxukd3PzD7fVr1iXhu9m45HlGiFbOY6jC5raSQvvg 2b5SPmJjofS1iEVFtv8AN+Yy0Ia3MvZ00JR2Q9+VFTEaH8K0pcFMMQvYao5++zl25+qLqLcNzfrF o4h81enWIzpy/PJz7PKZbBN0DEVWgBQN4O9OxzweLdgp3vsgBUhAcXLs9eNvKMHs9HInHTeqJin5 66PlfhOU0DVPfMfWM5zpsBHHvpv7M1eGOI6rlmMhl0ftDbTM8MU27SBfgNer3+/qAB2aIR/ga3ON pQ4lnR9c+rdMPtlT8uduc3mc82lzbMZmu6tSABclCmB5sBo7R1CTwOiySZXiAqncWe9+HvLw4cPw KNwGvNHIlhsl4aX+nVgOzAaOH8RVT/KCvf329Mt+vZ00bzvjCo/TAfdj7Je2jhwPC+jp99U+jX6q gACymDkO5FYIhRU1+Z1siOOanQPE9myeA7se1HfKWqjwTqc0NcAR75TzUjqP/wDf1F2+iQTozj/E l/faFJAmT8FcPmxjPM9Jm/5Aqag+0NwSDCmSN4bpDg03b30bn2RIj68TzM0XPVHyfFFlLxZ4iHD+ 6+zpp6p+H+An90/uH9oyopiO4m60YfuZ+uk8LcaLZbiosuI0bxykJMQxv1ckATERajkHCQeUEtuO UYT21LLcdXQQZMH4zN16O9TKgsFG8WILaYpAnIYTXMkRcLalPtQ7aWE8meEsaNpXZ7O5/L15lI5R jYkvkwV9pjJw1qw0ghKlBSkjdG6kFRc9UAqtWMFaEq3d8BR0JAN+DvWkbOriVccRlgj+UGyeek5y 8KIU+j3Dp1x45XVFcQL18sDRxLO7Zhr1Ybd0scMNlJwj13wXDiPQO+9MOj0egA6aVecUkMnVKBEF xE71WO8yl8I3t99eA76KZWTn53eXK4a1jDL4m6kq3GI3gpk0bUlhYu0QqSn2lAPZyA/jDwm/DFd0 jme4dcph9e8Nm+iipqai9E+o/lSwl4/b7+qidBrg4Ke/pwn9mHo2zo8E6mR/gJSMFFhLDVj+/Hqp 6+zWpQRuqViCm7uupwwoA/AV7OUZhnrq4OGWK/8ATKoIa/nrfIdga+vHVTzblXfx+o0cz4Oj3Hq3 AI0b1Kpr6lGMjX1BktnSwqT7zDH7AGiht/A1I1+wpPXjIAnt2/bLUNIvDxMItiIVhkh2Wkoe3EDl GHBsQe97N7qeUPH8cQ4CvD5L0jqxH6xCc/spIE0n8Ejlx/Kr0O9QY/dunP00Z+Ar66s4CoqAM50c DVLXh7OjXqxlSUE+AqT5ivn8l7yJynOXow6P240wQRh/akEYei2O4TwCrE8nrpWMuLOH4U+b+UeX vgZ6++rrJT3ju6/cBxpF64ajgy4cP3vxqdOavBe4Ps9tJAvV3whf4fH29OwPTiNIepfxxcjU1AmZ j6/fbr6caKZfGLBRSWdwoihPEGvFnd/gRDfXV3fRg9wHfBr5GUx7w9Qh9WPXhT3C1Cb8BUeEBOfu 1fV91E9TXV/fFQlV+cmPHDhGciGrXv1h1D6qPKamZn8P+Ufys34v231jjr+30Nt1TBW6d1VixY9h asDwmqSdfMwHDZsYlxwbN4Zh+hZenXvDDD8Knq8CJOpL8PUcX/kaT4zP+nANnp37afa85X11aBFK qPks5lP5Dtvtc+kfT1TovTEH4XPq+vMmTBuYZ3hqkEx9x1ap0zuqvuqbix+UR3sX730HwbublDeT J15yt4evqC28UkfBhDbj6vr1UmFST+C4eo75/lisbHiwgOyevGWuc/tFPnlRU1XAD3zszQp/9/V3 p3y39dG+uOV5v4c+H+hFNSYQ/wBRhtx6A66eYkPFSc+G7yr84xwVjZP0cR+r2DRP/E+uedm/YIa5 7h14jRQTTT1b8OY4sLfytW6tvq9fro4E66o1IZG8jG1WVvBhD79wa9XSFJEhvJk6+u+HMcWF/wCV q09/on1erCiipJ8NVGa9KqM5qCuBxwuHi1MwlLiIPtx276eGtqK41Kvzl2rA/wDZezZsGcqKFKuq KmtL3rx2sS7zbxXwYg7N4Y469f2kRI9wNRU8a8PMPOJxTAcNqGhj0e8qNFec+CGWcli5qYh85n91 +7P7LdFP3ODX8Lny5X5yofkZT+QDLKH9/sDEKfvUk5VV6rpi7SEv9aH/AEBrnIfThjhSDqqChQpL hQuDxB4xIQE6kxXVwhUZsZMFcP0YgpYgOPvq1UUVwVCaVA9X15k0JrvIn85r39RgGpu/SnePVRwO V9QTKlzCsRzZPxBttPYvBiF9Lmv3EKMFfw5w1eq4YzpQNTJZoT13XquXdMcOjp3ElSi7qJe7kl+3 j3xI+VVTXne/j1Rh8iJlCmOOoUVDxkGrDVuxlS2GeHDHzBH8o8cGykwu/wDQuOI69eGrAJa4PXV2 Z/AVFfyg/lYeDGklhhxH9IvXL00sCHtTUVNaXqCVQZu8ZCTKB4TPj89a9eIyw340V5jMEyuGmoAI 3RVk1T7I07gD33Llbnt+BiPrHwx/MaioxNHMc0/Lx+ZR9Gt1buiVGeuJ1Fd8B8pTyuCwbKT4+Vdi Kh/R0fVqkAzpZCwSuc0oVGN4GvDCt83pfzKhT1T2evaNKnWFKvOGi6G3J/5nh8g/TQb9k59e+jCX UVSiFKUSvcABJqwABA5WgeZoQRQv7gPkPCPV1dXnD5giR1FcVg2UmmZh+hfbjsHCeyTPVV1evKhe oqK8yYTyvyQ2b1n9grXv9tGdTrvgi7VQvB5X5YbnO/g6tmrHHZsnjKEdH4apzGo72Lh8sNzwAAl0 6t/TjTcMRaU7qVqSl97dCiA/FgWfnGvdS77od3dg78X4w4kxr1KuGvGvMmSBU5mZMpsX1X1Y4b9t E1dXVFTWrB4Bzkug95bO/wB0avTu10eFg5XoyWXryNQBZYVOJW2k/wAg/TQYateOqW/Y33PwJ9Ha pfAugd+rH+fqmvZgPtpvUtayCpalEUBUokjvJjLAWAH1yhw4KoRyBjPi5YzmqPnpwoc4y40Xf2dG 2jOgoJFSaXAKqUnGU9U7yFJNkwuyfj30BgI6hGQYDqH69lKu4G6iM+NDnq69wh+7pn9Sm5oVR0rH N0En35/WgB9nvKdNX2+N/dj7XEbCIOGN9fUKWbdY9VmputrEYXavGM89w6C7JU0dws6D0L2i7hJp aOjuBvMRHTVIgOpd47b2HbSHAesKT/4CurcMCxrSjf4i3fdT91KukCeel8lJBmc9ch1+r1fVRnqR 4A+16j+Sk1T2+85YdQTpqmc2xZ2aSqcxFrWgMhS1qWwSxBckmh7ADWMAAWAHYAPc0Ue8LNNnSILn 0xf8F4bu1zKhNLWzjgV0fjJQmtS3jhjLpAZYUrde7HxYtOVqeQPWe2nnCF3kUulYeSZ4c1Tm5NmM tWr001gTHhq1j8OHe5rShsHA6xAJdAbdmqihyV3AlW+d/TKWinJj+mg2S3DtHoxpYMs2x2jlEpSn NsXcSAhIGKtkpoKAGgABFg+ojT0SU4Ak3/xdtNSOcVvCCB0LIEVRdgwfapdlM9Ud7nN3UUOrKlyo W0Nv5ILPKARkGTkgAAGEsN9LBfhM85GkZzHNSxgy23Sik/8AMFRC/d68Aw1u5ypzIq1z308S5Y/U Ev3jLppIK4nwxp4NzgMc7von/r3Vt2gIz6ttNU1OKnZwz07mRWtR3lqUolSj1VHeJcl3q5JrU1eC JYdFG6wYhmejWAvb+jQO/RVnOlLR3i+F25E9Lkii00nny7nQheJWP/8AFOGGNIesVzjjYqJ7AqG4 WTWelhnrbbyTxcxmGl/PT4XA5vuP6Uu3plsm4JjOI11a6DzqdRZgM9huTMnI7Fb8g+YkRD8p3A4h HZ1a6VuvRsr3uvF4LQxhy7XIx145mWjqSTvJ8vx0fPUVPOHqEdC2XMd0h/UD0IbSSv8A9NdnnWD1 d1JcVDJ7aWYcHHbx7aLLZo5rmC5UO5Bqz1KSWccH48Yz/E54MeG9puA7VY55SW19mvyF608I8nOL VNeS9NPArHQpzb7dkEtKZaaPTbQ7HZFF6vQXRDci424WcjHdDbVCRxJN8WKhBUQVoRvpDXA5vuIW 4ubZylgMp054LSNTBaFay4G4zlUzFqOJq6yRxw55eTGgsCF5Fsf+cCIgDyX0p5lsvyCARGnTPbAf Z43AyA7/AKhKLO1HeQtfPG8rE+LT4LrLb6+hf2i+/ppaMuzETe0JU4CVKIPBTsznXlUh25xvYjKW brAB+L9T4vXtgV9QTPNVLUHzDlxlna1jV1orkbys27y4rw4liox57uZDp/34CU6N5NNPVy1pHCSv MtJ4FSeerEPc8vJzXVt0HH84Dd18lnby0/XIaSCubdfUqhhxwkVVss4Es7xw3gOIwvlpJeArqLhy YiA3Z89+rl6xxwpFyZNCfl3nkOoLMCIH5G0vBrZdqn9B1z837i+i39wnxjKl9NL07acOPaPERURv KLB1HgHJ008PKE5OpasSKovXtUuWZMQL5z0m3iixdrHdqqH81a75PuL6LOz+wUpUq+KlcQicyHAh xGXe5u6ZZkTe6uANtMPui+vAscEMQ5PuIfOkJfT6lwLFclPbOCMTUtSbboKyvh7q6PdyYCpuioh/ +KWn0ae7Bpn+OTkQzqMYhlaFrjKIsGrrJM+MZQnpIpoKV4iwx7sEO/pTz0ZYf3LorzGbk+i+0AE+ 0AQXLpPFi1QXN9YMlpZQYkEXZ3uG/IW4Nxi6GSsPFBh812daTQ1sssFEfPUd2eEnygpfX+eCHY+d PPT66Ti+VVqpaO1XjUaWsDMs9Yas3jl5KaCmfPUKlwOcDdEOe8LXZKX0NpQ6C6jsB4fQ/hzGJuGX tC9Ubees92MhyIz2Y2zjqFb48QOL6LdenrHlS0Eaur6lrmHWxjxaLUF145nqxmgcWEFXXx5LlPB+ Is/KnbveWFPWT5jJzMruyxSC7HeYXYa0vVmLU7YkxLTdCHYNVtKP72P5VeLE7kakN+yRI6E1VVEM t+LUK3O2DhxJkmpguid/IUkOXJ4OI8Gtj9lCkW8GS43VVQvVUqvLlkcrpQiuTSHmMgpePHS57jLC gL3I8GdDG0PZfio3FbmvFRrHXIUVid3OYg111aFAC/Alox08k5DKc6dIFsZkrj8gY6EluCZMrCWs NZaJ9+3aln0u+pLorm5u7h9WFK3PES2fJKSCkMd4MUkkJ1FL66UIEOpd+gh7sHf/ACwH+uOEa4qY Z0HahSG9DiWiuRWFH5TvxTwuJFXMA5O+nV06vUi5xeIo6oosCGd5mngqEsyWImt4n8v+fUWFi75u hLlvIdNNWAYU9S3YSsNSEkqTUD8Q4A8RCbpK8Pq7qj/lJPugWy9GxDtC2XtB7UJ4ywFB0M9Lh8z7 UqsT0kTEFUnxEixw0eHSfud6R/3L26Zcy6CsQHRHzsfkTHjC2JEP0Rysd6Iyanxcg46lDIccIbQs MlvKq8pEeqO9G/kjljVjV5YuZixSafBvJm5Y9tk1uVwVbVje605Em3sYMN1XeybCa26vEkslllVX JR2XA62ApIk8m6FzJycuqa8ILROQOWGVkOjKy8lkPbLDJycvQ59ZQgNcQhtB5bCrMuyTbfYTrXIe wvcilVt0VRucHHGx++gGa2tsXIcIZGW4m0I1fbPeAztyNC3llBkixhCsHJnzHGx1EuB1qEDV95LE DvZxQB+FLXLS9LuL3oKdvDn2Uu/xqhgppkFy1ouyC+HG5bP6U8EtzHstVK3faXsmui/BFBSIovdA yckchuC4BydCI8NYdDXnlz7btH7ldpkL09SZnZATSMRfys24TW8BJATKOxXNozIg/bCEcbje44Ni ENogMAynX2uSynrljlA+wZz6DJy8rXzkasfrN6XCd/wW0AdqeaJugkjxNh6j3lA2PDXfVwIPLdjy AMQ5LveFrs6peWlKStc2GEmIRczEGymgFm64GuRVXLGCzeTOrB5UIJiCsSWooWdL+CThgy0hDJGs haIaawbyRy/w3gx8vhcnfiyc0oCZ3R1iGIBLWaiTzD0IL3JAAG6TVt6tmc+7e+DxDoP2iYlslTM2 UI/wXcr2ymGdc8PoaqrrRlhOjhZqfT7WMpCykZEygygFfh4Dk7QHrCvtMoMrtsp9MQcjKyADL/oX QlYdRD2FTHY6qeu0szWE1mysKxTi3MFRCRePVpDHDDSO/JB0a6ce/Y6oPxAtgRVsnno/VCI7ViDb 7S3ojxjzxZB8r8G4UDxFDF8Bj3QG7pGhoehDqdg6aMvZLUPYw9jjOqUFRr3xXmbvzxLO5oUO3bn6 p06w0d+2U6K5tWZSpaZASlh1VM7FtDe/AXAakEdkAvjPaWhI8La7gs9QIqHGpRog2w0tFWXCrcZJ hAV3j6+0QNWkXHg6bul2ByL2UUE6nRpUT0pmgpPZ7ryxzhKExciYgqnj3Qf6Rf0pOz68aDHcldGK 1FHO0BUWcq9NsqQPVIqKjnjxFhwnFnTmJbovq4dC1x8ahk3MWRARpiHgDZroTht1x6obhdjs6vMl kdBR0sk5Hu7Bu2/kv56fGj4cn26GAaLNMJ79Mp0suzkwTKXc0ftLXvx4d8LsyuOZDc6JtDPUVCUy XGnVCVX90CLC8sSRlbFyJjSVMAHQfzhcX0p266N5xNLsm+HGuB3WooZ4B0mUNjeTZaWHjz+cCIeP 6l4z30mCbU1w3y1YVheToNI/KR2KwXa5l5K//t/DsJb6fgTzFkVqfUMdKMxHigvXWi6bpKPxYQ3a Doexu4c6to78Apbgaciym5ix7RxgCIesVNQg1pZ1x+PGXI8FQ6K024ZFOMnNLxFpwu+T7d6N2rQ2 nxeqTylVI8TY4HjKIjlSeZMNkNMnxovBLwLCtj/+KfRto/qVc3IYmk8847kihGg1ehMmklOMkwgq Y+HPOCf9yqNCwmkW2qafxwPKT2ig6CXJuGSSc4zPpYAO/wDF9DvDp6p0kB9Hb6/5Qz2V3I+H5bmh +xnGx01owf50M9vN4Buwg/UFFv6+lx8T+MCImjiGPvrj9px4VEQY0xgXKioLKSivPxLbGd+MyDXQ vf6wpdFmOufFTabdEYogLiaLfg3ZLfrmbTeSSd2sZhqr6WrhQkZjoe/6UTHTXZsEMztVSInCqwqE a8tw6qcVb4N5neQEFRdWguJaD/sMP27vmL01bQTWRZTmePLFgRuULXYHdsddIv2RyxmfVz03RVuQ QWPFyOPfF0MkaioIF/5Rulrlq9x1DLZS6KmuqOCD/Q9e39uPr3iNKvZ5Ma6qLjX1BYsY/LM02Y9O vbP2UuDgeBqv4iZcqTljhPDXt9f7ZB+cc4tWKpWIXKsQlR5lSn05xfrR6pAa6tMV8vlQz9Wrr1ew NwBRfU/xwdY/XT6SqflFf+0cw1z3der2a3BNqRrugwa+RlNQzwxHbMNYdOE9dNESPf4r3/6NFFRt 9P2UU1NTUd714B3vngkimoc/n4d6t+v1Sx+VIcNXSqOrZh7657einjHdw13DdrpaJGEOyqvavbVg K0AYL14F1F0E2uzDkx+X3280FDvue8W4AjgM/UFOUaxBFQIS2uYEvjODJZHKvxLbDkN6uTD54hXR GQYyyVwQydu7aFOhns6brFqWVYYM4vIsZiNF9MOBjrS2MiX4M5fSNdEBlq9VOVCsNnU8uVWqipEs Bc7knEiWMgQturZiO3dT7w9BWSCZ9GU/LTaEqXnCc4OHvhIcLQhKSFKBL0LFmF2aKHnEyr1sN1RA SU7zGgIYje7NHPYOH9D4msVDVvA8q98p6Xeh04b8WXWhdXX7MQpw6wWMGY4W04ZqtfXmrxidakTH IcATgiB5LX3mD3ysQnqycvKABmABPbt624+RNqEOxBE6MIV2bGDdmQFkmcKbFV9swQ/4jXJyDXjq lTl67FEzzDqtvQby6+o4uYhR9v4etEZlyT69I1dEDZrnLClD9DuXDJ9l/Sfm02hSVYRmxLqKEqCV 4ODiF07ySxQShQYgAOo0FHGcLM1NZbKgiyFEa13L8ix01aOvR1PZChu3Hi+HUqlkRntcmqOdYcJq XeCWhD1bd8wx3ypyw2rOyuR3j+oK6TDhwqUDYU54JJHSGmsCmvlfS5hz2e+TLKH/AJw6LT7WQbaE I7NHaF0ahoz7NqHX5soRPnEGI5wBx0FQlobhRsNrrceIbe2QMcNdgdjhsBw9hXDRrxnii1UV2Ref aMlLSOUcaQCmmw1bC5kgCGj3Iv5GQOkA5U8p6ucQEavJygyBysvKDKy8tZsPK7M7B7HYm3G12XIz jNc4xlHIcBSUknC3gUkJWhSWZKklRSrd6vUqHzjqnJqbEmkqASGChRqJZ215s7PxgA8MbWFpmDKq YXGFGZ7Fy0wOnUl1LGkLaXgDYtoTgDKyJjqHtsnKwnjTqYsIW0W5a/heoLhciWbcR2ecSycRmUUN 8WEFOYghLSGHm67BAQHWEw2hIaZR7KzYhaj8gW6bRMOW0itSJEKCV9O4G8Tu4X0xRygvzKWgnMXG 1JaTZTnljkjgHbBkjkjE7Dy/K9n2wUhuVFeZLIEWWG52wcAp4MvND7ZeQh6gFDDfiOI0tW0Ulsj6 WPRlP7U5flmFlWb5SnEUQhCMPEScJlYiMQgD7QLQxSVEn2QCk7ySNLmclM26IX3TqTcHdZnexd6c XBNjAdl+iTEaG8EYQOOGb+drCVzMVFRFOm2o5Bbame5Ga/wRCUv8H8LAJ6v8GmkOxtxOe8VLHsKH jEV1LTkd+evxFWHA4BFTcy5cT0cA9rOY45PbSGY+kZjPFHZnK6uroRwKShMa4pOg708RM3J+v9uy dND9idN1xuxBC/EtUZq44nkjn99F+azLon2voCnJp6QlF+hHKMdOWYasVefow95KE/bFSlrQxUEj FUCz1VuhwD+GD8FShmZqWAcirA9VyWpFE9lZt6xfs9RFhxCez66ahuufRwHnEdVNNxGcXbX4Nxsh F7Zw5GWH4OShrbnEO1/xgDMQyZU2NYdi09o/WV4YROiIql1F3OjKdOkSqVKXdlHlNCei+g5M0RvB khOWA5UskBHUAU5mLXkVa+P1ouM0Z+2LGW+vO5UbLDNgPbcmWPxChdqEsB7UMhzSlMcrJ1jMJHn7 EAsVylY8Tm5X1AlhZsYH0iz3D2rfXhDV+nBDfgOv/CC77b7C5Pk3otyVEplWCnNCqXGIsYaBjb+M EqWMTECQtXWUUBJUwCUgdaqtMhNTUzOKJdklT7xpuggNwDs9xU9sZp7I/wBkNjPZ6jsnwegI4242 0drsVKcz6NKrRRXHn7nXcnKXkVFHSHJygwbvadrLeNCr2W16L7+s9QodUdFQgZiK8m5po4gQUnJb 2XdK5x8hIuWiBk5Ic3LjmAZMg1D22unLtEioL2rrfazM8WNF4oWm0tlkymE9F0N53DkjvCTdRckc R2y1069/gKnNyNRUFiyeVmSJlP0ZLX7NQapaqIvSbJZRs1sjsjk8rlOCnNsQYC8Q/ZoEws0KivFK QooUcRSGfd6iHcoCiTl8wZn1kpzQEJq4ZmYVZ6A3c+IgAdpzsolp6DFpSNsK4cp8MdAYdu4UVILK zGBRUgS0JHQg47W9IZiEgAP8PHK7YMBwA31nd+u+J0BIMxGiHUoqc7X5DlNc7iKoBO7U4cldEZIq IhhgGUO3ZPUG/kYtvqamNrq04eI5vJSio6SJUcZiA5eUhzCY6wDK2zHZKUhp1+wrTdFYXwvbiXUT LoMN2Gi99/qWgfZvD7AoR6WspyfK9jtllSmW4GWZnm2DLLUvDQlCwpEvhfabxSkEpUtRClKCipaC QoBwoXJuldKUVlRQCQxJIuGpoHAYBgNKmLYqU2vrqrh+HLJpfYbNnBkG/V+zHrGiiqrqiprRuoje RjHjZWAP2jsl1T10j9d8NWl689nJkxhuDbPH10eM8r/4iebF5/kmHoCfV7hhT5uZqEuRQniRr33i yQvrqmo4XjwwZW1D+S4T9Xv6qONcB458uryxYgP5IT+0ADqHbRmJ/A/xFRL9mrVtl69UqONdXCc/ j/k+EikuLNmG769ohsoRBnR3+v8AlCfh6+u7xQ6i7S/8r8Zn8daHs/eOqVPVPAJucVCVUZyoflit KWYbMPOBxbfqHXT1ccGu+AqK8zm5r5YG0+OO/f8AdT3DZniRDviY5nIJpqfiMtk/eewaSA4UVNSQ R83rzwXksGhmTKfy/D9k/Rs10UHDlQj1pdVXM2W3QaHidulPBiDtEffpHfRvqTlQm5xmIZysmvli sb2fZs+uYhRvqQqKn4fvkyoTlnerP8durVPVL9lCIkKKmpr64+YOqlfeSyb/ACv5v2hL2bN26igD lRU1Rgx6M7x2+46+uifhqipqjAV/5X8s1bZT9fUHpoozyoA1w9fm2cetMIa9+pxbf2UkSFBMnwNb 8OXEyYN6kkfUF+Dul0BLZqCl8Qr8KfD14gM/lX/3lQwxlv6J0o6orqjgjHDj8q/JBODea7vvwPrl OU50sFhrwX9wFRX8Y5nt8GENWvHD7BD0UDzH9V8f9SYLlbnt+BiPxIcnHKghke+e/PlY7Z9W4Nm3 CY0q85XXOVMES9fnKia+WGymvUE0UNoY/ViADScOuuqCa8sVGF4Z58r6cZ+jb6JdFIeTTagnm56v 75H8jKTHv9U1btc9Wsd9B5T9U/zCBsb9b+uUKEdHriYjw5fvg18jKCM+kPtnq1dFLAJ8BwuY97Zu VmdWDeHF44btcw1+2kXzwamqMcAGcqH5Yb6/EuGzdIdg7JhROpV3DVWjlQJnvrv1yG9YXX8yzxHD 7KM02HYPdHmHBNOXkqKD5rx4vSyWZNspLX7dgUUNr4FLUHGdDvhUN959PSMg68Md89zesd+Vie3C Xyf5asD0/VLb16qeWFmorq0vUVHg9L79nsPqm7EcJ/WOqmYkN7b44dGe1/ydB799fVgGzD7MaThe WOBIGf5QZHVs+wNg44Ui7b4BHQTFfnA5wqHFTr26uoB6+kKM6kcrzlbv3YAOuWwZejdQRUwZYVcv SlS72Z/ONgliCC5vy+cPFd/FF6gMPrlPVsDX+6kXrq7jkvX681R1THEfTvDq2bpjSQV1fw1Vq+Sk /wBv2TwCcqR9Sqe/zGzvPMuriX39ewBoNL1U5qqt71c/I+HKN8xL0DFxQ9hvz+fJmZvOV3AoOHyh BeAnZ7A1dW2WvbSQPz4ZBWaio/JXGlrRPbv+7poz13wyW6Kj+VE0rM8cd+AfUP2DIXBTOVByqCon LOiaWS9Or7p4UYy2vZ8YEiQOSuz1uN+oqPlGmCXmWqfX09fQOOFFK8pAmOMuq1H5WTlh1ff69eIh SLVJwbmT6iv/AI9LeCX74e+zHUHxyHOG/wC2Jk9n27vR0TlL0oAgg6xIwhGyDKrEJeihUJR5ETU9 BiQ13OsOx2LF2tlhtddZS/fq0uz8nPqlv1ZWeEWkOHqMoQrgDULd3qhO5H5GM2T+MyJe9FQ9Wj8G fosHLV6YzwoQmMEK1yJ7NiQhoZEytuBeR4XnSZUp+XuhirS/qnhPRxc6+IJDiAywfpIzbN9TmEJF VEijHAJkliLCTxkxoaYDfqLA/Y4HF/Sl/cLVT7q/R+zPpuxok97/ALUQGJ47tQmtnppFSzmk0NKh 9NBeM7rEGWdCVVz6Ld5KUYHldZKFdntpnbtU2nfvgF6RwXPJ/wChELMXp5+06QGqsNx+djTgwuPE jpInoLPa5E4UzzjMVRBWl9hcRLjf8oguPrpzbtWA9eprxeOFox1KULmO6HIqLbPKKvGUX40ujHmM h859Hp894pO2Q691OjjseKkRclgBYbdRUlVIuw3JFBsBe3FvFeml/IQLn/bgdYjTuoUZUpXJ1VQv frUN+3tJ8oroAUQk2JY9hoYxQcs9qpytLuqGLxUlJQKnEskThkb5NxfYd+4IS3Jv4OD9aWnqDrpI Hg6oHw9fBhjRNIsl/wAX0smlnTj2djbWW3B9BfgYXLFRD1OBxaOT5UtLQ5l+fsueg3+8GGqtt0KD Vbh67YoJYZ6jJWkmJC/fAS0x1z2aKhy0l55UpiJCYx4wEHAwYqNVtlokZ4l5nFc0TWU24FQeIfDn 5v3HPHRWehYfQ0aEY+0Wa47CZJADANQ03TfsDd0b5fJpPAmQZVi4Ci9Q5Dkgnw8IwtEOIS45FPQC 00RcqddZxU0DdiST4zaSWuh8x82IgQ79QDhoF5l0peJCxXQwaKezoxIZaKMB3Qcz1nq7eWOKyH6a hW+PJ9x+e8LXZrly9YwTpaD9rlaDLjUIHxUSgijC9LWFQkzzYkwTXOg7eQ64Ewb7ikPNbmW9BCWo BpU79WFyGLIUFxqJTSjZZvdDkS9MEhWR+LE9T+ZXwh854fxE8yIpNMf7c+RdB99U3XeI7TTTjq4H 1b3MpDhki4sOQ+PnaLBbefQ3YfDs5VLRss3ui69JG84Cd2qaCqS4i04Q+c8H4iY4Olp/75DMKJmr XOqDLjMRwsvOtSMpxUny8aatg5iCXtRYqMeejDgbuHIiKWDL3aG6qfEapPEypiI1npVM8Vo/KSHy uTRlN8tJr+PUVcQ8GxGCHf0q3c/sKNCPXVDwVC6rCs93NoseZCUsXamO3/0Vrk+j8Vrsx8wtMae0 qUj2VFPYSP6xrIBuAWs4i2LTkToLRts3GHwQaqawIwGjl9NsUkmsprZXlRCHj1FnzYFxfRbnpq55 MOnRRD1eqLQtkprrnAGTJeKEB0vvQpNNz9U0LDYGE9I/T0U5j0F+MCpNPgi6m2VaRh5I6o2IkQ9u cdBna6PAKFE5joX5v4ztOQza09C3oOzVQ4HYhX5XvCxYx0Ov74UIXvF+Q+WOtCWr+QvSF+fXOe3X 0qbcEgFtakt2s8aALC1h2aQM+JEeFxhkEdquNVbZmLCWMyUPWQkIybCCCyp89cn/AMYEZtY8rOZY bQmMvU0xaFgzCtMiWsOOLaGiGXCVeCpo24ihO7b+EMUL+EYht7kw4G7L3wnT1PC8zW46yrcVce3k PpmYiUQQDuJqAbDh2xzQ9kNsOEjagvxisutxQBvsFISz8a7OBU0sKbmguliigvaaMgBAQiFBfCYu dqzeLLCYP0MReg0lCS0BDu1SkteDVsd0g0YpoLZBmQJtn5rkqimnJuV+EgwvtHBk8pn7D7IDKyQZ cTREXuxsvtqusB3sfJy6vI2D2UrIfdn2OMHrR0FFd6pR1BN5WS3I6tTLSWu2UF0ZaFlLYQzeyNVi DobsSaocoK15Nd3Bl1TzaGRk6EVNfUjl1NZRkOYdQQtxH1F/wzbqZB22PdAuR42Zm5lojehnaGys kAFeednK/srKBvRCGelD1gOH4NYACMPxyu0FlA3n0pl5sBIJLpJAqA+7oBR2oWoAOUL8u/U1E8BU 9nHwgztleFbxsxlXRCt4kU1ba6ocS1o4yFZYvKGcS0rxE9GOuByY0ilPlS0tfqlYDxgChEn6nxwh W41JNTypNURUc3jpNDRTvm/0JFfOuTiG4uRDp8tJSpJ2GsVCBD5voh5KUogQXNJHHDTKS05YbouX j1aY+kGtxbXvC3D+/kpzlNrlyGKgjvFCdRZ2sBz4M+JpQpeSYvJfmW+ENwbNYcrNlLnlzdECiBTd LkaMknuiuzNZxI4lvNMa57H6w69eihEiLaqhttDP6HtdruTR3i2/n6u4rq0uIY8mG+4nY3ETyTlp pLppt+0g/Icw3h84HU6kow5F9BbaoikyhQ5xmQS13iHiL6RDjyp1bMaR+xmgn0eDlQqqqUmoig6H I6HOJRIOLKkmEEvxDzgx+vbs11fbAio1UEho4wEJpKUQHms30AOE4Pf6ohb5S/Qev2BSlZk2a5sE 1YFmFjavM2emlDFhpLSb0qO02DcDQEU1vAJ3ITcabG9Hf8aXimMmz+l3oSs3wcZE01TiXfqKgcdM dD9YPePbs56T9e6K+pVXIQLnjxgsyWOlnBzQoUJ8Wf6jQ5B3QHFt0pDER9dB7x+QYZsm0EnRijTX qTtjS6EdrnUezhnngF0TuHTSOL41t9u/RZp89PobQgBSpVXI3Gu8oqV5lNMKjcSzqO00kndqpdYz mioaHj3P291j9VGWRp6LNZjKcgwuKbtQOdmDi51hbM9JVK5eotcPZmJDP3OwNfgorSaqvJawlMCo RGkzipzlg4XCs8WH5+Onwua3A4vots6JBRPnh4nWmGPBZKUjKwvE1Q6sOxWkmqa8l+PVpcXPzfw7 n5LYjqonGpPLxVP+ATWjDZBODmQlCc0wh+o6IPKeIERN7p6OX2GpPniqvFVBgQyqCzSb6VdZ14Kz hO8WEP01FRcHnA4vos0xEevXSzwDDPfCVDdULpTAqC0SI4rxMQ0sAmN1oIT8h0PD0umf6hYUTnCa VCU+Yr3iYLRRjgvSOnG8bOcWIOvnwueT7dCeLWwHz+HVSQJpyvQDRhgQISlJSiAvc5IhKxMNJj+r +78w8lv3i38MhwxNaKtyvTYkRgzPPTqsrcZMZoh+nMOUDiENVCIHjykgZnBGLEW3Gq33FB0RIYbK OOE2F2ZgloTKv4WWhofk+3fAfJaQ6t1KWhuj1FczXBwFeWMlzSw10YDZSeFxIuPXyk26uilxRs4B tWc4Xtw8qqS2YfixFCNDwcJs5eSmuqi4tXCGIywG45+ikGgyml9A0/MKgsWLqjkvomU/Rc+n93sA PhP9JTOhvKkqe0KA8wlqG/4m79I6LspLkywJcGtQKj2Ty7b82Gl8NWp71L8P/I/SA+od0/T1UnHD /C7vy04GH34bN+OGoBpH02pDgsff6vfqpIB/yFf/AF0cw+0fRP1U+Orgc2Pxi5w4cFX8F/nBr65B t6PTuxpKCdSFdKo+TZ0T78NS+Qpc57cOvDoHoj5Our67v4JYh3nL3Ge7Xt9bgvd5pZdD4fjFU79W A1Zgl/MuHQHpGWqmiJCfPBUjXD1FR3vmeYo+0SCX0dO8NvqpMEgns4DOTGZ56JQ2I3ZLDjpcH31h StwTVU4fRkojXpuHfyxneogl+sdurVh0UshNJkamqMVFQKlc5s534bzwVJTdqpj76tQdEqZCd4hP 7RA8S0SOZjs/z9BYixACHJc9eVQ14bud6HDZuY5+pvpauERuPD/nIYSl/wBIQ2UHlaKgnlNmwjYI irUFy/BPfKjuiuY2Ewz1UW3qC4hDqw5PX1jgADIJbAfuy6O889rfUfi412cZLYFrw/RypUB7wyUJ mIGTcwCA48o1ocQAcZhsxLh2RuBQtDsV0MWvVVEzNn/uEnh7z25SLlIK9vwBxrurDrnq+9cszJGx +R+inJyooVnjJDEPuYmWFSlrSS4O9jIKKDf6xBCqxTMeWEyvMJtt7dINqhiKAA0dql/GoEJtLxwr lbsIsGThE6bE/EUnDGEasbzsQz/QVacALSMP/rMjJ1jj04zz72D1oVByLEdoi19RIu12I2W0T6l5 ZyV0PagiP1jKUsHOq0Bf/Y9oUQBrzwXgxLTT7c2aZ5qa64zMm4hlvFxLa7OYaxEJBOdDY9hLh7UI 9l9zPcxUd8ROi6pgGAYpTHRrk1TEZB2y4HTKcscVe2uXp2S9GO08qlsP1/n5SjcSyv7/ABsMjCJo d0IQpQ6qkkOCA7x6y77xmSZklwhAABLhgkAqAqHB/LQRgfsiko/dkxa0K0zJEzmpyD0JADKCeF9X 6tjjuylyc8PXhTqGJ1NQTAvUVHycr3kTDbdfqw1/dPGnJ3VOSvX+y2F3SYry2b19rwA77xGSIu3H PUIAHE3QOrpp1iJvD/xFRUDnAbB9/TtEMacV9MUvNy2zuwmVSp6uX5BhLAYpfEWhCcRJ4lJQQDxr +Iw4yZ1LzGYpvOwdiWcFgOJBAoQztyiubWYEqmx7anr1TNixEYEvsDZTb21zYAGsde/fTl37E6jg p2z4Qkc3wSm7E5aN5qH0KrMesOqWyWI06KeyRuSobdgi0cfr68RMLrQSWYTA3rvNbeiAhDhjqABH GYaglQEvYYUiuXrXiyuVBc0JdnQhfR44PQuLKEgoYCO/8LdjrGU6Wv0Yy3RvRFtnOLUQMTDmEspy l/sUh0gBuspTXuA7CBZ9RObZbu3ZB53ALjsHvghHZnan4r4ABUjreD8JBtlyMb/VPXgASEKRGEUX +4J2GxWdJM9UFnOvHYoQ/bo5IfhacPh6L6DliH/3LaBdlIJ6+ik17NgNSSs0woPalgtGvvPNA8Vr rLXxXAn1hj7d4BhfcSVWosAWeYOVB3EvaDju/wBXSccExDR28KGOwJCC2uhtAJ9VG3o7yJGc+jnZ 3DWRuYOfmYxEKT1FDCJxGVQ1ISEuQGKq0BMaMeZMtNT4epYJINRvBI+LmhicwHs5mXNYctjWiXGR zmqaDRa0PoWDlFBASAoz2b68+FpFHKCUhbkmyOUHbYZbnmIZQCFCH9jdi9Xw5sZ21nDW1/bGoTnF R/o5ucgBWXYZSQdQDLlGhhPARmI4z1bwSLP1QyuxrrECyVQWvD+DI5zywExu7ShcZeni4HbbRBxB IB9MtlALQriGSZ1iC2+1eHksROOWc0QiOHf4ruU4BXZBr5uIYj1+x1h5xL+kCSz7LwVYiZXaTKcM FAD/AGGCvBSFgU3FKSjFKy5ClGoBLxrmN7LkD9paA1aEqFQ9aOQOzvZ57EBDhVeNrVJiBXfDo8HG g6HobNm8A0nXRFCQgmI4yvxaEAnhLGYjk06zkInmZ9PPV/fJjPEsfeXoEccR2ToFDsLcMtG4FxQi pXF+MIjRHFFKGzfzWxkbXjq5Qri2HTKeqhl66v4AqoHq8LyEqjqh39GeBfX7j1U4l6Zs5GeekCSk pVQIyYy+SndG6gKJQToACCopcUBDClIa5RLGXypSrFbl3dRcCrvrS8cYKuTOxgtYGEqZkyYfloJU RA/+6XYl5Uv93sNctmOunadXV1QUrbqSq/Er3lnevMP6jn6xdPTtpxn2NExVcdsiAJ2vqDXAKkYE taNgGPFiCtry90f+cOsJ6p4hTsxRyfDVvDyzb7Jyx3+iYDtHAKPfT5NFOJsplR3epkKFBSahCmSC kFyxG66QBYnjGjJncu7ue2xh3KVPA1X8RnJgr7NgYbfq9NJATJVCaVvRVlm/8j/l6p77MfRIaJye YkyIKyr3sj/+817o9mrXOQUUVIHl4yCsq1GbFypORMoUCdwpe/Xzi9g0+ewGAHAARYIUVNSeVzXw 9RnJg18sn0h92I6pz6g9XcBhUVHyccc7/l6oGPpbuO7XhhOn3PP4+oqK/Ni4/LDfo8C9XTuHcI0d 0xHA58PX8Wp/V047PbP7QpoguWfohe763ZudeHlDPVE+GEa/OM2TynyxWx/Z6erVROc+GNFyNRUG c5/kmHF4SkG3o9WNFCksZ4aT0pDqO+MMzKDglkJTktevEd+qeqjfUk6+uzhKQz3e/lI7DYDhLDbL 90vQRAke4HPDV1JVRnOa/LDZT8h+qevq9svcCRqaoxX1FeFzlQzI4rTDj5T2oqHjh7gNPV1cQqUv gCImU1nlZkThvxmvqgfMerr1j14Sp+FcpV5PNjx6oLFljMw0bb0uLEEPnrfj9fopIkJjldUE60vU V9QJZQ2lPmFKnqn5xeycsKKCZLhq0eHzbvX8kw7w9O8PXr1bW9HTa+uzlVPns2T/AJacVjY4H/Xt 9P3OE69yhwCVUXa1yoZ6cNmg+X7OPAl9XspIke+A4YvUEajD8jCXy/1b54YjspP4ekyOlpcjX98m DRP5GUHoxmMt4Dh0dNIRUh8oqG5X3ajh4Zdithn+z2YY68caSCGykRqXkn1CVX5qXEmp54rG/Ch/ V0dGzduoHmP6r4/6kwXK3Pb8DCiISaXJr6gRr6jOVDPB70KfkGvoxlhvClfhU5n8AYr852hu6Mdf o9xnD2wcav8AD6OFzWzwk5l7GX7MMfrozkyd2lOHr85Q0/8A3mP7v1fH7JYSpMt/VB/l/wBKYzMt 0z6ZmT+cNF2hwuIGbw13SUHjT/Xnm/0dfop8qSZfvivr6/p70OdIBrHont10U1NcBzvFDSu9w/7M /wBeD5QbBDbLXvomGpI1xouB6vMuRQ/khTwYQ1egNU/cKNIDhPU1PDVpmvImDJkya/K9ez7JY+vq 9wNRwv8AHjq9vq346teE9tHA58DVcaniyaX+aSvvIPVT1cc4Kq4chUFkQuGF7K3hPDYhofsH9uqR I9XVPwXw9fmxcNeA9EsZ4/dLXqb6mq4aXAmMdWd+LPeQDs+qnuB4at4fgDSkG1WV/Bm307x9tHCp qK858PMyZ/zspq+vDHVjLDaNBJnTs+IgjVteHh8x4wozPgar4evMerHAffXqCjedJy+XV+bf6XhL rw2fvnSQE+A/J68JywumSkH/AG5jh6NvXJvrhrw/iC5ZNzr/AFkp9H2h0DrxppBFgR2AjloO7yjN eenup5W5RH7twCY5qW/zufRiMvfHqogridRU/wCPNDsxxxnu2e+ONHe7v8v0iBw2c9mH7fTT1TUj XVvAESJk0Y9vUGH17JbqbukjgKdvyj2ZcC7DtP8AyhnqSVfXaq+XUEt2uXuEsaKLtI138fX98f5o G7aEpaho8V1TUVNbm56v75mPehT8gkOpdDdLcHrpIEcnw1aXnjnX5J0THDb7NfWNCd0zYDAhgGoQ GpbmHDd2poHFbxCqRR4VPA9UJakpKFzqgI6SUkpX+qLv6D8oOj940FecbbcgPyji3dr2jwaJZ6kQ GKDyGhoqYXCtRw0fEOUW+FrTn9PhwoWC0gsnm3CB0Hm4fMoiwgs50OcmrFJXmQVJTHGe6eHpoGZH hi3GSQR4jWhb7LGFQnpOz4OFFi7YmRL/AE0+FzU34dgA86J6aPX1U+yP0a8AyuV7QhwQVJJF2B3Q wemj0+Ziu7R6N+0mKYh6z4i2kIlrFoWNL4MtuG6CsZk8IsOEJpgXF4ChjCtDCQOBxfRZphyLnuof HsV7kIr0KrXDVaqVmyAgxIvpht52cZqZ9rrsMfHmvnYCH7iFAPNpYjFauiq3yNQhppou10dUJQ3h i3iYNuGcJWvh4DQ+bDebuPOp2eyhoOxI1yUyY+2kIZJTqTXsX0DhetaWpM9GV5UQloEFdFC+joX5 uxwx3/TKbDsHuisxpCDL8blpCErHIobVKsgw6CeZPxWcPGV4KmPEqGH84jTl/Yu4OnGPuRBv5GcC VUaSKUF0s5yljGkk+Ux9LQefSJyg/GA3ZgId1KWmn65YUp+y73CKmKscbPVfE5bbbANPx+OhyQGd hzjMVVCW/Eb4w0gh3pHN0aK89OUHpptBYrlVNS091RiSlstAdLcnJtjqxwe6ZJd4hQtOEMcIgtwf IiFvPQPplQSZ+v8A1guVue34RieJEGUN+Q0WCNfUFlKA6CT5Huwo5EZTUyAoPlpCtbGWj7d+izt5 6bRZoawvxUR4xWda5vvluKqaZb68c0YOOxKR7yYzsn5FPhjuDm/s+K12bZdMulh4NUicSzEaag8i Fkd5rCWSYcHEkmD2S4luhC8BX5o+H4xJf3L8vZToKe28gxwZL3R4qM5DM5wqk8yjZBFWbaM5GyQY YCgAhX4h4d2Bui478+NJpy0LDzNpJbT6/agmZ+v/AFjI6aTQn4fT1yEh4YXRoSzmeo8PSixdqYvK m1age+NTfcQ/zWuz+wUwo3nAbkTjRhuPioTYSxgKnMyvc2T0bhm7VT6cIYz7j8RNU3TzLwHDEKOB yHrVjAVMHoOVF2vjMwOrEEVY7eSmf1cdQrXJ/GB+q0tNP1yozpr8Q3vVCzo7mFLOCpO5W3FkCd5R MaX6FfCH+cBuiHnZy0ZePpMhXEgWDlQpVphgWhUpbbcQGwTzJHibmc3Nr4iRVzV3QG79Keega9OH ltIR2EN71xM/aghHX1/yVYa8QUcp0LvEK6PQPEaHt9cqD/WK5VZ6WjseOBEHtC80TVBhvEJvHLyz BL+g74/43ha7N+tmzpcHYx3V3N+yEl2deqkZR4jMN+MsmbVid2qZ9UQuPULiOW9Dxw6qERpx/bH7 w95g3Fopk8C93A8XUhlnJC8020s6sCkttZUnMgynft+D5QQ727NCxEcN/qagfi86m2aZ64hkU1bb 5a9STwSZLOk11gPhpjz9ei3lrT1FC5eV3iz+D/VvrRnh+wnsjhatfRVipZbtnLDCdNQbdjDfUN2s MaIPRsykZQhDGdjZOVkig5aHo+ExAAycrQd05OVVvUMocnL7b8EQGNwxsxs5SrXvaMskup7OSExp hqt8QyOOT437PDo13LFTR78YEO/MiKTT5GBLl9oc/MR11bee0I6mI8N7PVqEiWckJlRhqjnbcY29 cybF+zw6JeGWOHNhwQ7dv8wjsEBemyT8CiaxzB+KlmOKsQDCGRbb/R4jMNLPQTjHD0LyhnExr/oN ccHN9u6N892s7P1HFj0eTSgc8Z3FH8Edl34cGhZKJV6iwzusXqbF95JD92vnG4LPcVKiP0OWceeL juSMBUnmXdCVuLWzEu4pcSxU+kX9KWD0ZXl7LGlwHEd8NU08W41SJZNWHRdSK8IeuwmKkmgqa0Ja uOfOL6UtPnp7BpezT3K42Q5WCLAahZgvcq5FRaWIZN45xZpR49WoH/bC0JT/AFDGmsbOumL2jJB9 gLl2qSe13LfWkIkxvM+w0Ib+0Lvzyf5R+Szs6mENLPgTCfVSgCHBOtWpo4NONOyFeNL/AHpBFwEl x3fFq+cGvYaORYbIa7bPVBZNR2u20tFNyndmCLx8M5S/bj10GfaciRULD8a8OYRsDNi6WjqhJHe7 fJ3k52kqLvjpDHyfnrCKXTjtkUh1VzVqW4oacESykj/LbpN4gfVMZhr6x27NVArvyIS5Gx+RBPQr SURtt/ST41Cascu3P0uYoILS6uDzfbujmDIa+LLem+lZyYpmc3JUWZ2e3idTTnz0gzMKSiBw/KMH 2hFhDgy6IXqpBqpsdbRBoFRsM97ij3kxkFUvrxGx9UQIz6uVPMvVhhTVDbJ17VQS9fFs8Ze0UDQq h1YbxtYFREgqS1xUXPOIPNb17aUfFSucaazW+3LHZE07Vlecioi6WFCd5PlpX74eRYV6QCHceh3j IXS7OWvppbEH6lDYbNTyKSqokSIgFsFhwpMnIxkF0Y37ceyIDiFx4i6d2G2jrAx+jbQbpYu7sL0S z8Xag42hYp/Vqb3Lf+kTBYR1xeqi6q+FVSRE80T7zSUni18n0sZcSsdDloxD9ugHlT6GFIKNCbXH nsVLttnXayYPMw5mSw4fJhBVPmVD2xAiJ9Kf3Uf15t1FTWmD0RlVSUlA136caZNYHSY+H04XPJ9u 7B8tf1OpF8zVYnFU89XKugEH0wRRUdWSUe7QXkufMuB6FtboedO70CFgJuTT84HTYdg90PCacPnc 4hJAhEMoiP5YOFWOcZn0vDjpcXP/AAt9QDg3nF5DZNUos6HNeWcj3KlBJOSJqsTvFstJU/QfnBEQ W55Uz1h10UJrkPRJKqEOYOoZZpQfQe8nI4b4xC4vHS4+PKD9aZ9A7hb02pbj2UEeDsK+MkdeciUy 35GM4TxP8dcesuFYf8bxS6sKeFqG6piPZJvyd/MeIPCPSbjtHvit7aSDcPc/hUh15ksnsNhwvbAG xwU/Al/Lstnjz19FLYh6j3a12sR/kqOlhIJevVhjLb6KUvHJSr35aWUK8uGcp5t4OjM9wpaEAICE OI7kLYHolTTCaTGpqU+o2FSf7vZLo9MqfmP6e8y6XtYuV3rLY1cCovo4t3XLR1bIw0mmjFkPSvsi 8Sgnm9SG76tu7X98xp8rq7hq3N/5V36c/qvG4kXCfvrp/rGpqekOrb9vqGY7Bp+9Tw9TnEw74NfK ze3Xju9Pq1jTiUOYmBPMSdaXrj2Kelk89OD+37PXOVGfOz2dGD1ePHCqcE7jhcOvVvlLp29dPVxy urqrd/mf8v8AVsGfRPoonJ1Pwvw8jOMsegfcfXSRIkCbVVBMhOvznNzX5JPjNeVJbvefrpKKmur8 /L1FfX8cfIThsphcOqSKh/SIZ+mc6Q+pOfC8P4x/lc/kHTvHCfT6Ncfcrk0VazpcdRUGTJhCbboW s0KE7zz+4kW/rlQ9+GyUh6KbcsabzOXlFFkqxsJyaJ9tLkvyZ62jyqqVD/CfdHGG46rKjf2TJRI1 gjX1D8tp5SKJUBEBFKRoljkZQYjqHIR+1EA1hh/zqdV1vlB0wsa2rUPgc4MdyxzLRQrt4iEF6eH9 Rj0/WPMX2PeFMU1u3pARbeTBfqJmr8c7+cZxwtFZbyYSkjry+I5IrzdHJx7THKllZOwBxp15vBBI vBhvhmne9k90MNztg4blrS11FX0HV065Brxxp9N+mDN05ZtT6NJWTxULRk/R1qQjFStOGRiIwmVu kbpUjDRU7pUllj2q13KZVSpTNXfrOxU9RugndfmTUG9Ocfz3q+ddVF6/UXNd+6p6v/uunEZznj1B 2hdjJbeilhuzjUV9ROvU22qPM2PQuPRfXQ1bQDb6/wAKdOMBSIZaVVqCXXZGVnCZlASCWSI/hIgj KWGsdg7wGe0Q7rbIqbdllqzdUfySCbCx/wBS4a/2756qXL9IzOEDZDJOiKCgvO8DFoW3ghKHYB6E LBN2dhcwDs/KqdYLhXWvoSQ3hp79I5EI51Tjg/amixOoMproZsd3Qso+djISCohPO/UJaHGcpb9e qnXxZjj81bUUL2/E1jmComFQnmLwaZSYKbSdEhv1GXNshw0IDDpDVQRXZYLE73czxG09CZrqDqLr qMmo8XkBAJZSkpEFVByBQkJ4D2mRl5Qt7LHIyMh5YBkZOWhZQ1mVk5A5WXkArR3q621WnyTcdDka WdFMxVxbysstsFBL235o/Of4QhPJxAZ09T+z2Q+mDZHZiZwc2wsrzPKcPC+1AUEqYJQnFw1oJB6x YAmiqMXcDzgY87lk2pkK3STRiQbWo1H8bUrBqOzGWzEOJC6gWUIVrl5NeHKxfUU1ZJOXkln35tZm A5IDonKQhKWmk56qXF2FCGFelsKN8Ya+oyixd5ONLYDbyRAO/wBMY4X+u9rIZYuBcyBCe0Rw20GR Y+sExStTLxc+YqFJgwhKHcxV4gKxKQHsQmiskBlpE4hGfKYJTEZ5QhIcnK6v4Zw4aMLWI0YesNML t5otFJykhupeWIqmVlJuUIjlDlZY4iOUIiOUOUIznMR3U70l7SbO7GbEHYHZ/FTiY2IlIxVYbKBB KSorUk1WVgEAhW6AymIoyy2XnJuc6bN2B6ruK/DtDaMOArezYHCJOzlCAT1ROoCNf/gxfD1dezXu oFGzbB85HeP0IGAlEc6LPJ9NnPCZs5JNINhCyRXXxKUwAclvIYZUpgEsnKGhoOzj1FT/AAfIIkZ5 yYNRsDvs3t5Gr2MugZDjIOvZUHYPoJHXG+orRwry2UCCzkfKhk3Dhv8AwcpzLvarj4l0g3gRph+n 9W9jsZnIyL0GHNXSFpRmq91be0VjDSUp16xF2oFcQDDLpmc1IU1HBsHDJ8bE8h5H9ewkVJGdDcqK jOS5ptugmczXwYQmih+zEQ3U4MVp1F05IMVAZ0KiJ3vsoMgTcoe24iGWA46tnSA4jld9ylU1BMqo JRGXfRNVE4bAMcEXfKWsOnq1U4EC7bMulyorPLVImTSk8QbJLK2nhXVq4gH0X5OUtk5DRD+jZjIV J7VT2IxBV9oo+0aOpwCQl66kVDOCHjO0KSDl7BwlgSP8lTSmrU8Hr2L2HGSXhjZCs7twMK/ucJbn VzZzYpvrl4u+oFzpCmwE0neVb8PUGQLmu8tgKZ/7QpD22j1CCQR0Oo+TIKOlopPAPESLcOHo9O3A QCXo2LwM+AccHln12mEGD8UTpI2UD5AqaFr9xbsMJ9HtpwqcM3nu2iylYSc12kJKwzo6461GAAoe AAasN0fqCf3R8IwDA3sXjbs9xsa0YSMS3W7TLWynQKQ1XCz0hNTRU10F9BFYvztpSHEcMkMqYhLK 7XACjVGYkyPDnwzZHLfIyk/Dypsl7+2nLD2MF+vh2Wr4UF3k9385CBZuPw8cSXA71hRz7kWP4IA4 JB2oz/wZCGAdqG/qeJpphSrRVVzNs4KiB3NPFZBLwls6Q9mvGlt9LOX5plmeZVLZpmKc1SjCThpI QnD3EAAJBCQA4DOS5c3LRpywSnWpc6F3LDvt8dTChMJnl43firX5sXK9+kyv8gDHVhjtmOAUd1I4 XrivD1FRmyP8hRynjNQljfU/Xsw3bKfgcOVFdVF+HqJp44I6TLjNe/TS4O1uyDVtDGjwmE8zNZ8q 5spOE18jSSmshjLd9fVTlRudKmnCGEPCCg1He55cDAPkZTq+391E68sn1g3dSH/7Yb8WEJ9PVPYP XKifPDylWmC5E93viKw4dWYCPiVD6R9oS14Ub66pI1xAPhzKIzis++/Ga90y9fVh6RoIhvqSdRXV RioIns2RyuLkdn8vEAl9ojr6RxCnq45UVyX8PUXazyvyMp4zXh6cfZj6hw8pHKivqi9eqkTCa3yn gdplPCZ/2bvR6pUb+Gr64/n1eXLKLgn3kklPBiCPv+yhEDwnr66vqa0uqqlRnKh5Nt4PEKX0ymIb NmGvVT2Z1Cbk3446+8lA14pnLP8A1/uGWynqnh+FMXHxisGvljhN+DMOv7NftooKZigVufmDGcrG PGxsejX92Ho2EcOdufZx7okKa4mYOZuYdXexfxO3ikunaHvjT91hSI1NUXvzvcvLvNvFP/v709Qj r9FGeuUlU5nBgjUCml/yxWN+FPT5v9NG9NzHhTBhKIgpKGo6rK07s6cNuuX2DTIBU+6Cpr7odu1r fnEhRXXqvVXDmK8siI5X8rN+DOm40PV1jiP1UmEMeAKO1HryPexeSoN7Kw8Zn/Zv3BLb0Uh9eFRX VoV4V99mCvjY3zZIf1GM9g7fRrxo8MM5w78R6/hs5Mfys3s4lx29GNFWZUlS9GBJejDeTU8mgzAp NF6JoK0Fx8G7miwXtzoWK9KzbODRPvxwK22f7eilfcDUVw8Pm5l2mA/KzfFjZIa/q9mykwiSHDOM xXgJYz3ml+FukdQIercOz6p1/wANXnKoM+zlTAJ/K+LUyc/mMfs1Tlqp6yxC1SiAlClFQSUgJJJG 6mo4jmHEeZkihcM93DWGsOFfW558AePGVrXxU3uLUzd68fTLCngrq8O9y/Fpf+SN6Slrx8OBP69+ sKN9ccqM0MV9fXliyeVHvzxamDu654z166U+vWhIHts0XSnHGmFyaoT7zJm3gjB7/Vq1BOT+WyzM 5v8AVJfGIBSFNhrLVHAFizfQMBfaYf7aP4k/OLgqanga0eAzYtL8rSeMlMJfpz1euigeAJ/D1GbZ wAh33gpKe77tvVSHoL2arxK155quptvYuVOZmcON5YRnKmJ+/m+EtnV0Up+Klq6AMGa4wRfMVG0m rBXyTSeUjm/7Db+6fSOOEtVMYGUZ3NTvQJTK1/akWOGXegCiLtzsK92vpclKuokcyTSvMv8ARjSH DDXf4jvjEc7NyUt27kwE/VqlLCXuGn8Oer9vys4cvPDV17/r10FP/wDShtU47UciXhktokPzSwlk Tj4e6yjJqpdcvDSGx/btH000RbGtdIVlJpN9USkMs/3w8r0BtpKscu1MutC8tFz6O6+iXThR9j+j zajBmsuyrGy9JzPNRcVCHZt4gs9tNI9YGdZW3Si40D7zE0sNR9CN0VNdw3+c+zUE57OnDfPJxo31 1fX138R8o1nM099fRqkGoJUw/YPtjV9rRGeBB4tVMab4ZvHRO6Ti1oM7Wv8APSGDg8omnvCjfac7 IpDKDKoYh/DKpKxaigV7zNlChwU2GbDVB1AtrnrEWs09oCGsKAD0dbUy2eHIjl56cn28Shw0pdN1 2HDttVjEO0UmJUzLDecU1GgFvZ8bOOMbwriVQTquHVT+bf6Jtn7Pechp6qrq+uqgqKioMpqf/JCn hOX6c9UtezrGgX2J2QiNLVi030mPzVTdF3QcSySwbFt6EuZpX7O4lpDFwAGj7dDe7OWm/XjKLe1t KMUJIoGIOwdXU1pF0ttthaWHCUR0ZyOdeVF3xLPyfHX1dONLUfRFn4zLL8uUpITmaXWsEEYbbrkn RuGorRoWzO0UqJYTRcuQGdjpQuKdvFjU1gyCam558BUYFyvyw4E+8OmfX09VFCC6mcTP5ueciIWW DZMMzSL5RrzuvoEB1+qnP8mQN7IzFtB4d11EWjJZVFUOnBiE/NCUwj/qPSTYHVLrGm2YS2J40tVp qBFVVWSiKCo8GudJm9JFlS5LoQbd0tUtWHRhbEejDI8lklnNdr91SQpklLbywAyAW3SCQx08aiDO pqb3RLZdRwVEnQtVyHBYHwuNd4RsiEYZ7Dig+CBcsWWEFhqmjd7I95JhAUHVxF0zH/sDDZQI6DD1 xxm0pi3Ft5aJMcqcz1+R5e/GV4KYj4FY4/nAiJ9FvbQ2EQqlqrFasIbjI32XNI6oReDeNrF23glo XiW/PEHp9oAFArr/AHabVDz0HqG4nZuzUZUJI7eSSejcIIKtdC+fMdGIft3yo0pdnPT006v+jsEp y7aUJVvJSohKj+JIIZXeK98TOHKQVBlboJHAlKXEJ0eJ1e6iBeB9mRnLbShuqE8yzU4OkkX4tKnn pFRcb+3XyWDkWy9U8aEA7Hi1VWBtuBrw/caqiaUPyCb8JORvJJwVJTaSpNvryEirn0i4j17Zbwpi +G7wYEEr5Z0AXiWUngVbeZRTtYG5pqYQS/HrLs5ofm79KZ6aPTGehuErfsmVR5n2qrK0RtHFJEh+ 8oqKjLbas4TgXm/FRdRV9BXVrb/8GTnqp9KSns/5R74rQ/VB2j/VF82hIYpTat6uB5QrPaWvBBiR fUSIDOEmjJrmdqW+kYL9W4VrnNhweHNKNFsHproWCpOKrOPw4dTqIlnsoPJHvthwnSTqypPmGg+P bj0h5wN1pgPOl2DppPmDMJsqgr+ylQBeKxH1QiazprZY1DdrnVlptM5y5Qbimg6aXGPk7jLSpp9O /G4LLtpyvGzSjxFMLhlyOBLbaW2IqPdwo6M5HNCXxAhceBhEAAcd+aEQt56Y6c6qbIzL/rSXtT3F 42hXnKhhny0RmM+CztjRFBYvrNObcICDX8ArqK+Nfc+brS86Q+Od6PQfLKgt7bzPXHhaMs3vFqup 2logNdYE7aFfCS8EcHMw2w+lrkKtIaG38G/BrRzHSnQ+fn7SDxZic/ybjr6+oIlntC5+HM9WDbhW NJGzGmXlouLn84n9znqyx6BpW7JTSD8jxZPVYO32tNeBCw6dPGQkrH/KFINddWr+XVq/G/PuwN1p y0X0pafLSaBoNoProPG4nifE/OKne1S1X48nQ3HHckHI4ILkzIm90ni6EEWvHqEtLmj8u5+4nZq0 pafIt6fQ3a3uRS0kWTDOtGJSkyYoFSeMWLnBSVD6V4iCKqGP4wG7/Sm0+Wn65Tpsi2BZvhVn7XiM 23wiIifFAFQkzohaoZryp5lvj+b9xfSrmXPn6x2ZQc6/E5xwre6PAGPzHU3I1zSOOjaSbOXa+WH8 +rUK3wHk7ua3Mt6bdlCIkWATUnjBnOGq8SKa7WM8iaWdJFDZzSSGbtSvnpDXG/gOvF0tPloy9e9l Uj7VeCHDG1BZviMwFVc0Wa8VGHnhRw8ZqiClrq1cK8i355QN0L93YS9SioWFWHrc0jatemx1svrx zPVgocJ3amILo/TiHzms/wAZvpTzLekvLLVTO8YDjArkFOdUHXipLaOqyWroVid2vloqk5XI+N+z lS08Hp10kapnTt+AjuIe9c5CbXMGGcRRVJwpZxLOkyascu1MP8dSuW/MQ0iw9Hqp6lfwNex6J0B4 bvhK75WHlCtsOcnjqdFy/wDxGh9MvSNPUkaETOMw+xB3HtarjgO7vbt5ALaTVgtaQtLF2AuP8tDe 1wVYbDOtuIT3WEZNhnaHv3yLfE/xfxmDyIdPMp6a36Gp6Uf+x+vyLcK4lxggsuM9yaPlLrF4wniH ybTEF0Ia1cK69FxDx0fiL5julpy1T6KY3tUQlSrSy9UR3srpSkHclZyUix4s3uGX8IWC431x685z nF+HchEdKvwtDBCT9DHtgviyjbYqDlb3JLTSqCI4CskWHFprRsXI+Wk10LwEy3zjpO/4dg4w5EeZ evZoXTYoSs1tPuuwYOHYj2RV2IqGPyg9OBMf2WSAQS4DgVNUi9jS3Kx0NcR9S4u2R36Yi1CJ0qkQ YAKcR1Yn3QkgkIudhPpayRysqGUVUKQ9z+IWS4cntmS6paFPMMmbDwyRED0dhKtFOO1+448RbcaG mlTEOW21mWccJQndulr8XsVxaXPpENxzxw3S2AOtXOSKljmPMWFxDrypkuaJJZ14MiIXKWEFqWDb 68Ooq7j8YHT5aMvXyO0RlTpj7BTCpjsiwuRiLD9vH2q3rSkVX7GUk1lI2KgoIjWyeT6Azslaysir y3C3GqCEGUA5dXk5Y4jlh24jTbOEyswZeVJIe5PVs7X4hxpd+ayV/C96Px/C/nBDbVEbYR2dYLPi OETS5lSMQuZ7oWSZQoc4zIcS+I9ukW0OkBnTlfZFop8WimR3Rq86iWXbL7Dfmetp7qxzkyofoVD8 p7QEZnb7AkHI2hguzdWj7MtnyykvpUVYcm4sq0bnM1WweZJJ3A3cp9KbFygfYo73Wu2yHMgQ8AUN D02yWpl5M8rDtgnTk/PIsVLTRFnWmbesRilniywVycknAiGbGaKK3nK/krKDJyghjY9ghkjlZLeb 4BlBk5UUHYOSzMgcntMt7PGsDKAVstvJJnA4IJNHFmIqDrqTwvGZgOWLFy1bXMEVXrSDxtRH1CBF jNnLbJb5o5pPGyISssozbv6F6EPhqOEVB5MN9u65Nbd55UIVZ7cjHYcOWewISLhZ/uAqd0L7pqSj zv8AVAWvAsK0OXJ9uauVI9M50GtDFYPRbg28GA1WOybKlidm3WdOOxwrAixkBUx46io+Oc9oC0QE w5LNPq0HZuqkHJxyeL2SzEAexiNx2mXQaus7EiIThJI/dfi01/Hq1fghoxZ/gzLo/X18CAyDbLTM z0sZoagXDvRO7U1ckhrUaBvsB+qi1C/gfyHdWDkLFdDJtlVkk8TyI7XQVOBpIkm1jky0ZefC5qcD i+i3Vvphe0JFXRRZMxNtCxNUmBAdfR2voHDxJJ/HlGlKQhwRWOx/zfwZD+dJ2ci/MIJY0wev2zIO 2XK1HQzzkTbTNohAR7lfj3b3GVmeGiohS4kY6H/9kBETiPnS7ORfEHlkA0re0I0EN4KjftX29X+9 obs9+NwFptQGSQvS1XGlK8RXGhOEJQfh3/Sk7cB1MJjiGFG2YZyZmWR0Xq1DgpNSCAadtNHJDkXg bo45eX8sagatqKLdrq8GBBZqokLoPwvJitPBvJLk0chmw2vrvqKkVHDOQBrl5aeQUgnQjFjl4Md7 PdjobHeOmzfYbkdEQXLE3NNG2yu6Coq+vITLhWx9Tegy05ofKl2S00HRgNU6c1BSIloe3Mvt+y/Z 1hKnQ5ge18nJcrbs4wpEU6GbSScgAycmJscHy4MYgOHIyMnJyHrFGLE+1yQAA/BwA0/Y8Wqx4Y1t ohqsCIxaLTgYdm/MokRDaeEICDpfUTkBCQmXCpccHOHRJuX6GlI8i3p07a5PZ7NSeHiOouMNRLGo ASDxoz15ij3hnKykqrdSQxpQixLeOniTrXTEH0CvdUVVA8YDOc1J5lI3+nfDu70fdjrgnXAcrTB7 AS6oczEkOPgvxD1fdsGlPwATa4mzXg45cYPJyKjYR80APBcrgx6xQ94/ZS4K6u4GqL1FRjnXeRPp S5eGunb0j9X5sbd5ic12kzOaqeuoA6DrCxJ1J7q846PKy3RpMc2blYfI2rHuGzw0Y/KfTt2/t175 yGVHCuruBqi/8oN4S+z7OjfiNGeo4AnhUFywGMcyJy9e7ZLVL0hRRU1PDT4eZowa1m5/Xuwl10qw qAeIEb4cKjb6fso4DwHBfD7h17uie3f0zon+AqdwYdeAfX7aIOG4efAdP7toh+8NlBelDgPP5RIX 11d7j6dX1AE94iOyifhq7/IewP8A8Gnqn/r/AEy9s5e+vooopqHVO8miuIofEViQoqK6vrvgK+vM 9W36/wBwjRRwHT7fup4nnFcO/wCvbu1fdMaKK/Z6PtpsVjYq1JWvExFLT7KlrKlBjoSTYgfGCQlI lAyQH3XoK1F4h9c1WrXVvD17VaRj/TG2jY++/bOjxVE6ipqi5GoqM2LlZEiZQpLvAN+GrGiiief/ AF/s++hxn5+eQlE9irxEBiErWogNRwCaHXjTlAoASXAA7APlHqVusQZg6sKmkarCuG6k4BOZ6LhN sNGUlP0rmjYAPV10sinqEys/mEn1ZLGxEpLOy1ChIFgWt9GPe6maukJAbRi4Zq3ag8OFvVNTUcEX qC9QJYuV+R5oF2hrkG3UOGPSG2dFGZ9H/ep6p+Bxl3v0+/p9munsK6u6B9Or7PWGG0KeZla8VlYq lKKgCpSiVEEu5r/WgjzFIRxs7wftHNxBbkaG4ZcjfbCvlOZHJlFhZbeYqgotwCHEADuDfq3SpcFn 2B8M4Bw/Lw6hM1habIKnFJZuoTiypZ+preSGStrK4uapZOSAZOSGwMnJDUASX1P+Ql749HvjMNlL gatSF1qG/wC36h2bvZjqzfOczGTpyP1pijJkqSoYBWr7MF3bcfdD76tBVRahJOZWVlDNhW6yuLa9 UEODagYamlIgByp+F/jzI69WH2hQXzJ7FVZfYcS2vE5EPRRNLDXd+S80dJVnGiqbavPJWQXcm/B0 amEg2zCYYjMKFAUPyj0/ZRB8BXVRiQ/Kf/zoPQPvsptyHPc3yCRzCSynM15Vh5sAFBKldcAbpcJ/ aQpQD1ZRFi0SYlkzTOAwOoHI9mgZrML0hmqU34Ufh9eByX7h3+jDZrjEU4fDFOGr+hYeWzCKXfbQ VGwKqVJ3kBG/Mb6GezeGEw1ZW+b1NfX4V1eEzBWRI76evp98aONd8NWp9ePyj5F7MNsgHq/aNB5P ExpGew5+UWTiIUnEBLl8RJSrfq4cqGr69g87o3d3Rt3uZvdAv7NHY4SNm+NiPGchGlSe11t1zoxN vqzDSE3KG+0W4JX5pNKWOuWMsBkAzJ/XV1fXVXAV/fP5bmuzb+3X6uhRwPA5zUTD+W5psP4ftp6v /is+wHNO/f8AT0sNUwn6fV10YbRbR5ttRNYc1mpphIThpYAEBLNYAkk3JcnUxqlpbougrX6vS2lY T1NcYqe/uGzlQD8rN7A95Y79WsKOFTXV4VRio/lXyzcf+3ftnh00TjU8Ca4Cfe/ywnj4r6/R6QkI 4yooqflSgP5QVuv3HXv2aqJo3RICdcFdKpMVHF5X5GUKY7/2/ZROonOGrc+r6jOPy0nPwYQS92v1 9QzlSIRCiEzoStJwP98KoIjPQSl9nDYB/wC5UMZzcDi0jn+0aBQF62jOyMxAV243K8zDeACGc44J lTkm0QS5AM3wta4gRCGYSbA8jGZOcpTGjrZ7YmczUKn53MfVWUJYkqYBYJoEvUlTGgBI4WjTj5zK yxASl1kpozuaU4CvKnfBjkeJzHeC8sIbVf7ScjoSyeerJRvORFUlNBSsMB1+h0/XRwrlIimEDFee r01MRypMDqwbNnLtTCG4Vz0ju6qBnJ2M48QTtQMc9AkipuRjpawlnicQpoyamEWJqfSK+N4zH+2n pw1x2SZrHnhZHijUJTjBuaGnEt6LBQdS8mIa1zLXJSxCU8meACAT7bGlwxtjMvVnGzUjLZifVmcK ShaiHaqRvFg5BFXcVdnMKhmsymVzCamJEEp9ljUDqsRXXsrfs1A1Y5QriFWmEqHUVIbuRQDxS3ng jKSp0hj+6WI0nFTXfCyqO+TGEs814446+jrnupygE4HNZHsklrUFREZSbcSCsYO5822QUKCm58O1 ZQlyek2kTUvzJEZhOeSAbMS8LsVIzxH7GB3Tkp0GUSKGgQrLkdgHLsUz7ZQnmKCuCiLv4Wj7idbd QwnsGXa4a6WLaj0TSmXYmUpyvMin7fO0ZMoKSQoJUU7ym6ylJAL7wSTbqvSBMu2s6QhRmMuPVS4o 9gGuLsAQPDgSLvCJzAYZTPojRAZLSL/kZR2ORGbeOPiOX16wnPGlfs+1FAGJzjqGcx4xMB7Og1gT bzeWMD+P+8Ajh0YzCdOUCHrVY73WVA9FSLZaGyOmExOm3Cbbay9nMvY4oqGhjPlF+tnXsxMDYhhL Y9rCDxjTDlyRRWnxB1FVM9cMTCiK2waYLjMXx0zRENu4DLKBcwEZdtL0WTMvRJkGy2WTgxMwz05n iFAO4gnrK3WAem6SwcF909xCkdo5vMVKKU7oSVFIs5SbO3AAdxrG1479kBgDA5ZUG2qrq29ngl4n GoySgKNw6poq4uYthvjhiAAPUNMDo/ZboqLEWmQEOoVtxNb5R3pd8JJsVl7Pl2te+5LiKh69H3Do 5OeIBrxxoIZkxCqGq5E9116EhvUwVOCt3Q9yd5Ji8qD45W0MR4/26+idDQ9jTi1aaida5Y6qutwu mwoKE3ODjBvwrRobsYhNFXwQrkFvtvBxA4vvAADCxZr6O9ldjtnZ7NpjLRnGJ6iCj65IYqISoBKV AMokkJBdRNAX3QBZbaLNMynDKAbrK3eqGDAjXh7m5x8i1bNjhDHshr4IxGfy33MEGKmjB1kGyk0w hC9eFBuJal/g6Qg2lxDdGH4W0RlIKSjsri+qppqADqbj4W03NSboOk9HlgE1MP8AgBdvrWIY7RlP qlSh+yEIJGMHZO4gQ/Sq8ymg6HhC+HxxxZneQkFTQtAQdoh0h0+2mV7TbWjvCWubEAYxKoriPDm9 FqG5vPLyTD7XXPmNc5z6O8R81pci+gaG5Fsns3N4+x2byqcHKczVkJIyBSEbmIQkMSCGUSKvU6kv bRPZjO4HrCUKjUgOHLCgLaMODnvrGwEey7bEtRVRB/x3i2WZUP8AQ9LWm04XY5LyTD6XcvEXEbf/ AN93S7AxltCmV7NLcskrBqKBi1C41ttggkkvRDR45NTdiqN/37cfnB9euh0WpCZrWlbEkJ4dKqsp IjfdENoXgTVkkLyUyCoh5OVk7QHDSLDV1a8AnWM4AM6M1oxwQdibXuQsnoJN+DxScu0T6oxVq4bl Hfh19euheQbQYGPgbZJzaZw8rVk+IQMPJ8JAdt0pYmrqYhQa2pegs9I4uD6s6ItZ3wgqUSbr3Heo oH7jE4sQxCPQrirECJqHXqSbB9hsN+LTw0hDw81/ALFRVzHnDpHcfSOqdIBZ8a0F3ufdDrjxGnuS 1N8ZJy6UltLLkfLtBcyQXFy413RvVIJBtHWONCX264JtWFdjIw24LNUs22+lxIYa08CiT4TPpfz0 uLgjpO4eUYIe6U50GRBhyWV0ZrqFfGlgR0dr5xFIbzIcjNbbGP8A9eDzn2B6JDKjDI5/Lc8kZ/PM rGEJ905Pu9VObKCQAMUpoDRSmVQ1po/nMMCcy+YEtNkqBAO85aySKl20b6MEHsx//R7PWNJZgM6F jkW3P8sZ8QoxnFpyaWqiFMQ4jcGGz2TkNMrx4tOQ5flsjT98NZSf8L4XvAGwz28UOcWn0tij8x/S xx+8pU0BZXibCRSZFpd1Qrs5mWRGCGEK3Q52GrFVhZiRJLXUbKQfKCdwOLflBk9QYUqfsZtlFqxs cb4f0Ym4ZcjHZpNLRUcpniym38/F0b+Fa38k25twEAX9YjMKJMvxcnyWbz/Ps4mM5UrKQEofFStQ J3SSkOWv+HmCXBgpQm5iVkJaUSxFS4IdyGctrUB+ffmeIUclapjI+IqQdqFKEumWlCKTSb4FSU0F LXEUb9RUPzf2808QmIU2h2KlBgRUvdwKr/VW33aCopYQrSXv4MIJfj1aQxcHOBx65ap7sKR+3hYh XIMuhHccFms5FuH7pJ32jlEkmsuTRF+Ifh1F/B2uzXgAiH16XtOdjfqIhaERbhkqpsJXyvNtrHX5 D1WJTY2lC7gu3Ho/zf5SezpobtHtdsVPbN5bLymYeqJjN33c+BfGQo7pCczYlQAcMKB+DRolsszY TQmJpPUT+AOQbU3ezl8W01aosTw5jA/O7vEZ8ORpaLk0s7Eg2c8Gn0ti7hcHN/odOOsZBjQS0YHG hxCthxBfCGuIjlTzTwa/c3KlDnJle4lQNBVq/PJ9ugGHK3ZLHGloVNie2W5Esw1FU9fd1d5HGmEY bybPQtXG4B2hs3UuhH7GO4ycL2u4691IjajAVV3Rpg3ucjHXmH4iRdgd0Rp8ecqaI9n80ynZuWBz PacZwtmw8TeBKQQGKauNC9KNaGU8JvMCmVlMtICSKkEBwEacX8ODkQ8RIg/H5qsLSONMW207nA6F hLRSd7RsmmJ8seI9IOTDg9H3AViA9S8mrZug+hv+v5YJbPSyTkNicvLFC6R+jlx/toI9H7GPE1S4 Cv7prS7n5o7npNWzxYUlMOtDw5RemfVKhwCbbSWeyG83CVeaWy6Cz0tEA2b8YXEiXB7A99lKDt/n eUzctIy8lmAzPfU7AAFO9ukO1HHzI4Q5yKVm0ieE2GPVYHiN0UcWA5d1Hij66pInXRfjjqCxVn5n ywNmyd5Jmi9yzXZIfpHGUg6aCvtdOpUaptwQBhI3Czbg+qEr6Jt5kHVlyOaLaouzuJafC5+cD6EN bAGXQlKCcVU17s+6u+c1OZicKYBIb69E5axx9FMzW0ni1LPaMYirZlQ22WcL8OKjYOxYzy8ghL8+ osK0MPxfuLSOem7pnt5BaGyx6l+jkp8t2ilQ9VA0v+EsNb9lK1qxOc0SRwA9yYzfDeEsK7N6XpHa TzZ2xYKk0tabdmUoc+QYDcS1HBcAQ0flP8VoCG+jOTio+HVG6F8YXwqmTJlrxUhedJkyhPky0kvT RAkioY+T7dnKeGzrGlf2e4Yqr8RnBFuIyqosmD5VYmMQnCTvJTfjonx6iwrQ9cQIiS38i8eXu2k4 jNE1KWG53OmA3CrRY6WcvpHaYnLycx90TlppFNc8oIidXItlhT6bTRKeQHkIqH/h/XGDAdlQhJE1 YfkH4twkFSMuBBbboRTmiaxdr5IJl9X9fSGhhLSBu8eBqoN8m8UOJCMYbjjVSzAcF7qi0cia3iYJ sM150LoceacscOb7il+dJphQsFvAm43hAeA8W2rUOQsoMy63ocVm9gpoKWusvFa5Pcp9HdeqWEpa 6BPipFpnRIIGGc6ni24JxgNkxOo8TTaOOjJ/5i7uDHb/ADfCWGlMwEPL2hMSJAsKT4gaVWCKrUNp Nh+qE5rDedix8WcS0rDjtDXMMcJaUtPlpIcMaZfQVioORzhvaMs5kTMUU+EqwlrT8stGzgd19BYa EPHq3Cv+cBu6pC0+WrL16D08sKStZvho4IV2ojybFGE7o46ON5XWFlTTF6/Q56QOfDf9HKlpju09 2Ux/WwfI3WoRpsdxGW4kQ/YfKdYKJI3baFgOqYr03wh7W7/Sk05a/I2WMjTjFlAv+IHucn84Ow5I wQktUw+cNQwHxnKO6W213q/DbhlxC/F1aX0FCRYqIY/nF4j/ABpNPlp5+aZYvSgz7RTw7kqKz4V2 oYcqT/huq8zlVurHKZh37jppA+KnlA3forzL/U2kXhXaQh/aESzDjiM8U2EscEE411olHkoj8mYl paFxChIkcGO38IgaJiuYxSaYaacf+WUqM8bIkOqA6CsQ4jhCstEezfEZZVHo22QTeF5tm68eWlnS Kbfno/0Opp/29Y9PHRuY8/nDETDADgAPAfuxT491SzTVLFoyAMTe7XB90FNGFiIRQmOjP6l2jIV+ T7i+izs5F+YT4CjPXOOFcVNH3xBYiZgnFhrBcsSLPZs5eTHdrXXZ8dQrXHB5O6/itdkh+nFIQgNV /QZMmLSdh+I6nFGDEwJRTbppG+MtiNZeD8JmWjIICINhwQ8CQSii0gFlZQCIgLMkAZX+alNgdGat cD/gqYToORgK8dOSz2bOXlDOJfz6tWc3w4B5PjP81rsD9QnwFPbfX17oWR2s9iRewvyxRCeor8DD Dcroh8c2+AlqSFPb4829OI4z9TD/AGB+ISqptyOEK1WZVQS3Iw4gkiitipyXUW4V0N2Nx7Omnqb3 HEfX9R4wRI47S6XDFzcVoA2h4cfnAr7SByoh7aqgu+G5mzARmvDdUFhx5ZBxG0GiWl8Q4ob4lyh0 T8t2s7MJzmx6YYtLMpj23osr63Z6OmGBbHa5RMyjcBjWSDbbVodMQwBdF6WdMqQZSBESQBKFYiIP LEYfgA5WUyxk9jleibZ0Xoj2c7VDVMmYfoKwlnn5BGLBy8kxBdCF4CejIn+L+InmQ6Wng9Aw5ZMP Vnbsi8LHRUu5AtLwpcYvWzUJtNbcOohtQjktxzQkdFVk5S/ksyNqPk1eVWw9jJlODLrHNWOMBych 7ZeTkVzGrMrJyAyalMjHM3tDPzb7tQAA41SQEilHL051EFl5bIMvlSdWep4X43saV4QirLYq6/Go s2ZI0tSve8L3NdjabbdcZUAi7Z6jFkAKGhrTHXwyslzZTiFxZIg9ms6sqb2GWS+/wsoJ/wBDay7B 8jAGA8B4EVJ/Nk+EsLGGyxNm+LPASLx963Hfk9oemnFlYsWYf9kYtkWKk9/sY+RjRDp4JbyfUW88 SlFSjOw4TpGSv3RFAG/lZE3HlBkomR3Uq3IEO0y8qeRk1gZOVk91q8jpS8luGocaqpJqeaJ57naQ cu1TvSXiOf1iMvrofmBrzd7004Nbi+tGq66Wl9deJ001JN+d6CjA8sPZ5LTtkuEsSoEw4SIVGY/x oh4iul5Q4h6+CAKkIE9zxUWwRUOJ8UkQQF0RecYXAAsqGGSOSzOD7bJHKGryssBDedYlQ24g1Npj sqsR3K7Y2r6QC4xLG6SsinReXkwJg3xito+GS17MEGsntsrJ7l4ZIPTHKkxwAZDp/shVsuHuRbsi jk2B4UrL8tcORaIQbRo2rDM00c8NRYqADDFlWWGZkZFZWZTlrcvIVap4R2dmRWPEMvKrKxjZRSr4 Styx/OBnwWsXrCy+rW6giWu7banVZKuYs85buBzQihK6MocrLBYtfRRQ6zLyouxBEwFZ28CWhlyy QHL0/fHbVgVFZ7l5f7oACQSOIdilLips5NyHo4BePMwes3M/H5iNJxLy4n2uE9uxktFRHQbKdgFj lslOhqVLt/Iqkk8OXldquQystwVrcvIcUXIg9sIDlO2ty8iryMmeU/31k5IDlDX8Mopu21E4K2yT Yyg8+IX2YsyE/Fgo1XGipcXIlpiHlSyYmWwY4L/bNlBboZEsvKbOUOQymYOVlVYZA9oFZWVopw3i zaQq0u2h2SKNjgg1A5XqKsrDWoykhErItRLaiDw+SENLINnkMqqyW+wakMuryMh1AXaEFWdk11dl DlusQ4PLiytGuMtqSsSbF1hGA6pCSCiidy1ArAmGh+rU3JE/IQxqavJiVakihl9plRAy8jhK2srM p1ZbVg0zQyqoMmoqciprq/KktLCWBHLtS1HYHmHNWqGZqjxZZh72frFyqrpVnc41LWVp5Lycgidt HONKycuzRZ4ywyABGyoGslfyKsH/ABCatYGXl5ET3bkizKvIHJyGIyqzKyBrMtO1bNTjX6sxa2t+ R2ckP2NEY0qLIOJ2Te1oW0uqB4mgix3BPtm7lTEcqKTs5FsvCWGFPNpHgZYhqMmpbpZl20LVpU7k k8pfAqDisYWenOEu3BBRu0ELT0RWrj2ojV5cF8iYTB69qPbPTxs7PZzmi1r3sldoN6sZoPwlkrKM ZVCd5Wl413BkiOUzoIwty6wRb8PsqQCEUHVks1ks0crKDJB3yycnL0Y6Sd5KVJcqZt1io0ZuqWc1 ALF6itQQCxBZ2r4MW7+TxejPiEftFtcvZlsXQWW4bw/NHL6OQnaazxYvNdCARXYm2qIqL/4wNWlG lLseDOZLK1sJkY0JhYVg+1YS2VbZDxbj/bcUTC/GyDcMQe7HOApMY/oKiL78XUVjrk+P27pGuT0o D65UCqkO60HbVbLoghZRYDbsdWCWJlCcik4VZ4A22MRyQ4MdNLVFohxADpi9ELKycscvJhi1snKC sGWQwGHkhk5eVTossdwaasMuxW2eERgOKviO3oo2kX69SUQVVtiygdjXmvsNBWUJDyhyhQG6Fxyx ER2CIjMKUrauX9U5HmmaTeIHVhqYOaFSTQ1YFrt4mrM5PH6VOJDM25RgAbDlzPaO+NDNVHFtshjo Y97XE25HM02Ki7x8uh1jxG19m+ijhuGreHr6jvg18jKB+QTw2BuDH7dQqFg5nhoxX1A9f2S1Y4e8 6M9TXf5eWcS6ffXPo6p0/N6fmel42Msa4iy7f4ib63HY/OL4kHdSK0AGvAD5eUOHA8CPD188Pysc R/Z7A9dFHC12/wBofto34V1d0D6dX2esMNoUUU8M1GZozCiijh+j2ffRNU/xwdY/XT7Tx0UcR5/O MseB8PriPGHCiio2+n7KN/DfBe8tXVPVs9s6OFRt9P2U1seB8PriPGMQ/k/4oeoPrCn2v2ej7afu T/ih6g+sKIDm3/1aDtUCxPx/rBX/AIif8vwhvrq73H06vqAJ7xEdlE9PU9w/R7PvoYJaxcaHWBY9 T1E/Df4XD/X1zDV74hKijPaj/EavqxD9kpgHRvoUGahDdo5c+Y8XiQo+F9+2ooo38Nwvo6PfVPo1 +pwqeA4L3l0dMpzpmMODYg9/Z8x4jjHv4r3nOfq3dGr13Qz6mo0XUDw4Fwx9+kZY9eulL8DX12rA fcJdG+ezonTRDPTKiphosV9RX/On1fuHD76VzaCYHR0MBVSQ3eP6dnA0gzL7OeBqYo85XVGrbL36 fXuwEMKM/D9Hs++koOo/+PI1+cS3Ye8vTtEemP8ABV272B+yjWTAUhBZ+okhw5FmrxtblAtRxHlw PyPhHqeqK6v4L+IH0h6/R6sN9E/AdPt+6iio2+n7KHNyp8vlSMQ4VNdX4hslr9P1T6Zb5SCaiprq 8a3aWzo5nv8ArTZ/evdh+1vnXfyf6v2U9w/R7PvoJNWHZ8REj38T8BrzX5H/AFXsRfrmOI68dlFB Our86MV8g7636xD1D14+nCnq6u9x9Or6gCe8RHZRnzz4XVj7Ov17N+ydNaQkqTvlkEjfI/ZJG8fC 0Sul9O3SA39kCiQ44zWg4cWV2ce73S1hrkjhSYjy8fYSvqX0Tbnq1z3Ko2WnIm2S3P8AwSrPUJG2 Wb7NSGyCO4TjbWXu5n5fqJNdWhRG+O1x+ieTiIiMqXfaWsBq0WojGI7wdf8AoTEg0cS1k6UVQ4t0 oQpXE9ERcb/N9wiPa/4QSmH4Mp5XbUccgz2VCpP5iXjTs5w91VGw9Gjmk9Po3Isz2XmMqy6TM9kq pDLUAKTm7oWVjd9n9s3SkkG5sbUuZlc1wJre3XSS4eoI6oFwNC79xrA54wWi7WzkXgQ4xPiLbbUP luiZuUN0y6139BN/XMfTMZS10vG0A5Y3nbBdm8+4nwphD90uRztlYbqtg5Xal3yC9ClaXA8oG3o6 hj2s5YYYhjSlrY0GXVBOIyOkv6IylEh3vJhpbncb3OCsiN6X1cK4i8oNeG2WO3bQsdsmzS9Y12fY Is6CZdGMlYd5LXWAQFRXBuJy2mAzMlC7ZCWxHJDKwye0EO2DDKnPCQ37Ns52ay9exuPJyUslJJP2 x3U4QKUndZRHUQskMSQAGKilnCeXl52a9Yh11oE8SCLDUVfmxa9edReR3Gj6L1LxIuUs31MppO2y hwATgXmuuz46QwygHJHVzpGYDhgIUNXHyPEI4z2BnA1bOh40nl4dkoYg74ZGyl2udChkhrIguX4i DzhboZYoI5Tp9A65jt1Ns4QxdVn6FED4ws5EfxhhMNLRM7K4igqmUAgughrgSFvj6gHqwpAIG2EY SQBeKu924qu1yGF5uKrLFJextGUkwglrvh2fJvlBqlKQTARmExnSuZ76Ttlc4xETSkK9YZJjoxk4 aEujExELSSrdIZRIDBRT7N39kmZfkma4AKSfbDAa1AbhxF/hAHoGLFklIIKC5aFasY3+4M94nabT OIzbY116gvxcDlOPoDoAd5009hMiL9h11JFmFkloOp8YmjnSQ3zRO71M+p5K2OTNbXBysntgddxa MA6PwJ5K/KeTSW11g+yEccZh19wht3gbOZ7mt8LKa2QVMQEBQ+bEvWOIz301wm1NQjkE9KI1BZNT ypMSRIoV4tTSCXtRdo7dcpS1Uqm23pRks4mcqmss9dnEQvCxFpUf7o/ZgdVaaFW8TckFKUkB94s0 yjZ2ZliZeaIANQQK1Y+0LDiOdBx5iGpBm3bBM+oJTOgu9UNYVO/QVijDR3sqJ+GIob4AB0fDZr14 4hrNR2M1n2rm28jDjtJupyGU90LCXo2yHas6SOZBVJeGZBzelta4a9wSx2vUcOc+T4e4T3+86TBk 8ATe7W+HADF8bN+qcsRGWG2iDbn0tZttDs7O5Vj5clKswQlKFB3SUbpS5JLFwBTsoIaZbs2JaboQ XJ7dLm2oHGlxGH4wdjxcNTbvULU9RFNEMthTiQlxa0JNNtZvIdoIt9ywyuI5YCACGvHthpL7Zlkt KtXMlPIoaqWbcSGacE60HArE7yTbrXfDyIuCM+Tu7D65UJjEngKlZT6ivqM5LXOE8Ax3a9XrlrDc NKfOVxepre8a/Of9EkPX93VgE50oWW7eZ/jjZzM5nMAnMMlQMJkJShP2aGSEndDKLXKnJ/ES4Eb5 jJZUnMJc1dusXJAZLsS9u7ucxl+yLA11Wb4LI8Mn++ER2qCWsKa0jg3yayKYgpa6GKKh6g14hgA6 te2ItuyDD9t2nli0w3Fpxoigq5Toy9CjZRI0a0oXQHJXVi/O30kENui45AZQDLJ7btZhTW1SCqpG v4iW4NQAAb/r3BsxmIyC5yKb8OuV+bF+oLzP/WID07qEja7NcabzWbdI9dbwxBupbrMCQlmSeBCQ RYEXjKcvk0yiJX8SN0pLlwxADF9WHbShhn0bIuQqopR8iWUkdUJZk5TbhJ8WH0sZ6glPoHXIaYfW LAdkg4qcOhsBylixo5I4USXgspqYfVcJDIPJ3DfTdJxSPL1VmNTUFk1H+aSfR0/Z0dA0XkyfA1pe o4HdhL0b/T7zpoy7PM2yp+iZjubxdYBP+F7XNbu7NweM4+XSszumbcqTusWDuGbssO83iHwxhuwI MoKex4ctVEaSeaOBfF0k/l8pAHHutwYB1dFLRqUcjU1QJVRUFi3fgnSeaE7twwl0/tHdOjcTzep+ H/KN+ycg2/tx3jSQVJzvrh6/93pwx1+nXrppXmGPOKUMTFxCcQkrClq69QSVOetVrg25xuTKhIG6 AGAZg3ABju9kWAg8PU5uRGvzkNQlCn7REZS1+yWylbutNzO8EqvEM3N/I9eMt+2lkINdwNaXr54G teOvEdm3YG/HbRA/SfDVWfVGP346/UHuFFEzMnpCcNyUCoQ/VBpVnbh8qvDOVSmoYGuoHD8h4CMv HCdfnRevqK/N1hL+Rm98tvVrH0UtBquSoctVmJ6ou10FdZSQd/y6/ee3AaV+cqf8RX+z1/uw6RCj fwPD1pcwFfmygWnmRvdvlhqn9ezVQqXKlBipRBDVJb8PzHOBdX1/p8hFocDXslQUFWoqDJlnKhzl Ikz8Aqk5X0IYbfQGulkVyaRzUuez7i/Mu8zZT8v2y2CADs2bMaQ9quq8qq6nJUFs4EMyzs34MP46 to9Q66eR6kWqaMM49X8l1U7njaVjfiFU+ZVzEOTuyQ7d9PMz91qzg634OPDyo14nxvGf75r0eIzQ qCNRxfpglnbpn/766h9wp7sgbagfUtd8WjFVgLbkLoJNsLT8gjfGjefuhdWrhQu7gDfwHlH5VNTl o9GXNjTpKHgm6Nvfh0uovIxmSpnoG/yAde7DHqHXRwtvRIsyx+sjGK+KlQ5IJuFrrDXZaxELRvlM fS0JaQF5dZbHEPxwN12cR6D+RbLCc9DNYfTP6N0396zCVwFAOAS+r7rlqbxuO2lYT53+P6/ZgKDD WI72unuoVJGoLKSwlk0skj5nybhnBZhoQYXH5MQ/bv8Avpr3YanrWHB1hsNYZyHUFnssOgMyeEWF YkPH30LhWh+T7dAZ8qeej02Y0reEsYCL2ZqgwIOw5MsCF5VyJaIz4epJy83zExUuXnpFRcH8YDix /Utl9VNIHW43ISjwz/zZ/wAaFQnJHh6UOcmWHj4bfC4MtfmtsCn1xFPjYEYH5Xo/YoYXxbqFVSTV iF7Dhgsk1YocWrzIKiFyD1N8Zz+r6+b9TUoSWuQUKhx1/cTigaWAviITfR/izjSqfTif4vnFr5Ut PkXtfuFOjiD7qPE+xTRAPIa4WvCEqPGUlewE7yTB0Fidfw34h+UDdBue+4F6lHKDsYKoEpgP9pQl ig6CcybIvhGZMM4tqv0HfAjoxB9xY81nZyLw6MdsvL9JqaENenMXv8/LT0gmUsd5wOdWAHgRYW51 ir0doWmkdBMWXj1jtyR0hgl8p3hBxWvlyXe1/AOmkD3w3+b7i2aUtPkWA+eNMzuSyjFSCTkUIx2V 3jEj4rzmk7wZCs2wZNr6zQl+PdOGP+cGHf0paYizNj90MCVLROW9nVAGtWIAxihlFoyjlHJnrkZD sciyyXy0gn4aY65znb7intCbLemzTKWEfcqu8awVG1dZfiM7Y2NBAKZSydiGTOrCfaYs8KoCID3b 2TkzcribeAydTSEWSOSMwFnYDT3/AEt9NaPIqAeP5fOGhWUrPFrMinuPKdLUs4Wh1U1lnNNkdJBL gdEtWvjK7QYqMhAycsIQOF1ZYhlZbnaQAzMvIAch+MqrEQy8iKuqJMd7MdW4ILR+hyiRRhu6Dueu SDr3OXkxn5q+M6Fb4AJt/wChEUmm8N26koZMQrPVtKqMIbxItuAMf14nfRyITeR7tgbEtUD+dRjt 78X7i/pSaW6b9Y+sKODqe0VLPaW37OdpOC3dIg+BPvNvOFY4sP8A9J1nOODe5vuLRufNLkW9PL1j hSef14xIpdBhWeJqiPaM7HrEZ7LZdmks9eEPhOXbaYgslrvh3TlEb8u7BDre6Wn1P1j7KTCG9TAi 107S6rXkUSzxHAqsZ6sKzeJ/8meNIh46uP8AM9ETf5Fy8zdVKwUoJrhM0r2qLFkTXJEhjsML6OaP E9CbQtnhUQtSK+GO3wwbv9KMJuReE+RojS92HGCGVoRKMqsWiLagpGhVuo6sRvaSPdsIIl8dAKF3 cENvy7n7idmrupNOf09Y+2niZ0bgO13H0O6JBiOxCuqvZ9uZQhzX98p78hW6EXO58aXoxbgXkLZg OC3MJdWEqeoPfse7qf8AAe3DA9KioRu1Ya8eEtEzsosaSJmi8V5IM0N8eUDdG/Aw2y9fqaE+yPrW JEwqY/QIjw9y7VtGJSaiJ7NZ7X0DtCeEnMww+ZoqIf5wIM9fLRl9VBjxVflpWwraiidXrjeb6i1I uFqzIccO3BlZD3s/2loPLIVNx5OXV5PbN1+NvKyK3Jy6p2tjJq3Y0HnkV+RUVjRr6mvyMi0FKHEM bZjIcEabITVBkxRSkfPYwWIyh0FLMEtC8OxOsr46TxAh3gGm8LeejL+mTD1UjDC0u1i8Pv4NtplC WotWaFVXVjbcNpQZOVF+zU6MoByResD1vKCQDLK5awvdYAzHkIZOVkDk5WSGUGEy27Nmab2khOtg RUDUsLHhSsM5mZeVEoKkAEG4ajaa3cd12B9f/J+4LQZdtpa0JaugkWcaHDFEhOkMJsw1dJ7IU3FC h7PtYyFx7MzIXKvJk4G/kt1ByslnOocscsGivZVVW5NXX1VcFOqGJFdDlts0xEaJq7djeYV6LWaG zl2tniJE8NLiHObg19PtoILsCFnZLgFYUyFSoXCDkyY6xSc8SyDrLFRyr8YSCIsVjrOTOXa5GUgI tbWBkgEgyssQxGYjr7smKLApDsoRgrrQkZy8MGxEVnJrMJuFwGxVBaWSuAOVljCtjt7nBEPJyQEW S1xwDJARHABp6mA+IANVJFq3QP6vUm9XgWok9QfA3ji7dsZFsIuRWs59jIhG9qqJ8TXe5yEUbQdY lZYWlIr5K8uhlLyGyAq+Tln6Cv4VZlZWTVZeRlaHZfbvx85QzDLp5MQ7OthTJUTh5PYFti2c2hA+ bSe1yXrZDstqeR22QC09suQ5VqCITUnlBlZOSIwVZ2UAZVYD0yqvJELsZNpxcipEZwWc+x6wyckH EeKCxcoOwoj6SWhbQ7oXVqa7E2OD48QQ7abcFcdHctafItl46e6ZbdoL1mOBFjNGRzyqzmTGyPCA 29GG3D0ocu2B0r68NRUXBD433FJCB0aLcy9envQ4RgshLEDqh/AXcVFOPEWhdA02XZmj7bIOLNsq 2lFxbh7BdTKZN7R2f6eCi9omJKENbl5TMs7Qu7bt3FlZA5YZNWLWBpQZZmRlCA1mSFXkZGV/mqfc Wo+XjYs7HNBBahPBdUycgX4WSHJlKUXo0JiIGTlDEy1PG/Kyclst+HuSM3LlNfkfBRliGV2nbZPa 5Y3u44NRwtB1xi0p2QqNClCeE68jiSYaSlttG7uMS2whBgy7K8KZtHR+HYZQ6MA6RZ7OZQ9rLKDK DCjOkLUVLWDDdMELKUOmVY5sEsM2ARrdjseCyntmeTIAedqiOMwc8X4huvIAQCFrSAQyZZOQwWMA DPJDJoXIKjQgh2A1cln0DC1iCakRDkx62XbGeizVhnUMq1pbHSxAikPcmkLD1sqwlfniLuVsgZhH +Imkc+VQgLLDWw2O8sJvbuh2EP1s/G7sq7zfsVo/PMrkrKTY8QnLlKVoNbAcoAQ1yOL3yMnLbdmG HWQAzFqVdXlveQCIMRnSpDgtPw0s9qhCDvY2YcKT+jgpm9DRtjLDEyVCL68pjk9suItlaFeULt7k Dfysn8LJdAAL2yg/wAZ06fs5ISwPsxGtMbeqqpRStDm+OidhlkPu81Mg6F0ZitWw44CHxfDMfxWt PTB6yGXI0J0jUHVp7TndYuzdgBIB6xZ/wmJCpfKWmre0PzLjPDDez1Y3gRel0N5LOdzeytAgBGfE aHIRi/EUQAZiGmT0ekxARkI06v4guNrWKbCtjeuikBpGhRDmFbEhgDhNAjDfznfSIK/fVxBzfkE5 4YX/AI6sOP8Ab7wtT9kUiiwGfUs0sMHWu/IZNclD2Gba0Is9WeGuvPNBQMhGQ0IMoGw3hdeVIeVm UL0emUGOTlAA5OV2Edn3hA6YqWEC8M4VsAy/4gIER2wtIreSpi5j7EYiIOnAsdCmGkDiBvXGOizT HTTQvGWUGA1raHZ6W2oyudymdUU4aiH3VMoJdIJSW1YlJqHFBqSpbHMoelgVs16uGDcKs9PKBsRZ 7JrAKB6wnIkRWBHxtgvJAOZoGhhyjA2X41x7aT0ZC5luTJ0gbo5IDjkzyQmExnMKKWV2SGyzE1nL zpZBiLCkfaBMDjih+TYuRlRJItiQTWRRgcw5C+3skMrJHKyWqIdpMBywyZhTncgba0IslmmLPVoV qmY/WT1NYz3uZOE4Ca+YSujx69LOj4/N/ETZosI6FvTy9Y8pUVxgs0OiByW3bVFmOJqnFuzkK1lA 246tIlo294SucRyeDZdodkY5UP3IIjlBlZGXk6FvIMnJygrMsa3KycjlKf0fdhVSoBTngWAkqIxU 7pYp3wgHCJ6wZhvKNXSlQATDcbRzXJiGHVD6a04DQFgXNSx2SfZd7FFd/HuqJ5aQfKzcI1Ueoec0 pdOA7KXcu2+bMDda7YfNdE1SUmO8AzNuOtvsR4uRtCphMRZa2tjlTQnFkhiLWdQZUsnHVOnP2gV9 n63GmprOWBaFl+2QJStBuP7IC67NlpRV7Wr7VIisjjV5QQhjFlZWqJ4ZWWzXmORWg/cmp4TJrcqR 2doMx3gE+IoMB8NVSaLnQSiYRiNBGIRMQbLtv3xyuIQ4OAAw0IdLTEZiIiwxyp9sIsz+j7sbMpBl E5+kpopAxUlTboIO99iAA7EtvEtukIJBGobRTcuwYFyBVNKkWD+PCj6x0HtW2lZseB9HSkOLiIZW F7wOVNkllNUz6oAyuXlB5RfRfpCVIib7I5Y4SFQ+iLcbiCKrphwUVXb7hbL0TlMiphOd+Do1iAYg I4yxnIZ0AdGWy6txbRng/wCzaeUXI6IcgqrcbLLRyf8ACFYaWAYROY+AjGCHe50NMNNGXgD9Y/a4 0zSgRmh/HhGR2PaaPmU5wFiYorDtMpRO8XIgzCYI0VEQRDugQ9yRnypwejKAJTEMoaKl/o4bNkOv Ms8AIA3U4iULSd5ABIUhZUlnDAP+Jy26d/8AaSbOnkOXLnrwI1LdZzWtk2Z3c3V94taL7UWm+zu/ XeaKG8qaEljhfS4hjynFvTwkADunqoqbtueyY5zRcijR1hysqBr5GUKuJHD0fhbR1+nHWA05FV9h xpsovFnOsjlLTSMmiYrTDis0zgqUNIlJeAzZC7IGs4G4Mx02a4ZQ5U8kZhkh2oiTizLAJkxcPtaO 5OHSK3XSuq6UCw1GoKyMND6lkq4ZOS80MfJ8Mlw5OTkvVqasgADJAAAJCJifo17NhGKcLPs/+0Z8 JJUkgHdBIWAh1OSGYpZiFAkAktG0RdIUS1N4sXaj8a3d9Kx0nkn4lVxUuYqagyBfM89DwNrnt6QH b00rBetKQWQVgu3VyJrKRF8z8kb6s8GcmqQT1TRNJJY7No6gpe78sWxbZMPng6lVVZN3tdnulaOC UWFm8+IkXWIbPfopx/Wp2wxGRG5zxKtCKdYtpnbpmXDqz80z4ZL3feQCLkBkLL1WQyQFgQ/AQyxH LrMvKeTzycqWRV1Y5OVWZfO9nPQRMTe0OPJ5vma8PDShZw1brqUQwQ4YAvQqDixqB1gyzHPJYSiT KCvV3gTTQml/I8I6ga6P0K7rMLndGbRZvpZy5TitpIjCmEFMPEt+D5RerWHRRvTbSEDzh8uR7sTJ MqBrAmkpKwjKSmf9eE93qxlhxyGjMd7YbhJkkZHRkOHrDJ5ZskmJOTkNmCMGGriOStLy12+V2g5Q 5IdsLqy8t6PEcQHLEMkMpyy4sQ9gZVg2rOpM0/4kGgqyJ20GrpOUCleq1khV5KNBJkVmWOj+IiOl OVlaYvAMrKCryavIlkheh+jPgFBJ2lxhineAwk4CVINRudf7Z2LDeG4WILbzQhG0qhcUpckU3Ro3 ffW8diCxH+CyAqXUqxbZKaoFQ+SKywipqmQDD31eva4o8coSLpXPkOIzSW0/PMyztJWLxTBU5bMA 1gO/r105M16yUjwMVGu97dqzltp4PInpoRs4FHNlKEclxMXMrtgW43AGUDmg63gypy0sDTN5jlZQ y7bGmxrLka3zGlxEmjZfhaoLbwaw5NzN4tlIsN7PkGmIjZXHsTYpPdwTbKA3QAMrLysp2yeOSAAA vsMvLq8jKOl/0apIfZhO0q1KIBWFZShAFEO2IMRe9wdknVnpHr+1YI/7fcX7fs61Apr3s9HPR+Te CGpVpioIKqYZMFQ78KXxj0deNHgms55XGBqBTTGazzzNHIjBmG7b0Yjh7JUG8sWurKDwcaOzocxw THtGgqSS2w8HZD1HWe5kvOhd1orIXHBoh3QId6Ry5Uuz+wQjrpuBHhu3Gqfb6rFsjoTFAoTz1Hg2 01gLzdqX9OFyY6Pw7DVLnrtxDGjT/wCLWWzMy42iL7tGTQEbrOluNG8gWhera3ox/wC3PwqTV0ci ONvlFkVKlntb8Bm3ywCWZlHIjdQekOkNuNNQINcYJw5L1GY97mymPQOM/uxxDroLcm21Z1ONwHmq h6JRQQSao51dumwvJjaL4L2C5/N39KZaasvGXSVCOSa3F/sX5ci/3UZhI33RCuF98OE2TFSFpKa6 tIC9ghYaQN3d5aTpXM5/RUaWAmNozQ9UeqwQagAbwPZV+cMcu206SXOXMnVTUZ02YBww41ryirzl TXk/h6git5t/U88fT6d+3qpHzhxDOajBYsYxlnYXaIj6Nevo9eFBLxmWHxZjS2Oqqr/RG23zbbSj rbdjecgqTFiWlj4euNcnyg/8Fz1zpkRxxfilaQX1ZZsB2qYhosUm+Wyz7xsaG4q1zly3Dk5WTkZC 477Or3X63gogZFUORlZbzhc6avIfLLyqys0GrHtkBVZNVWsb9HHPZZLSuaJSlKXBWlTKoGDISsgk EGzAAgVoXf8AaOUmWG7ungGGnOlNOFNBToT4aowqC5gsZ/0Q5eQyls26tW3VPdRRXE6iunXh3tsn L93ppzYws7JxEwnlGGBaNfym2q80sXLlRNCFjNez5hq55zuV7wtcOid/tyXPbttD3oAhPVSyoxW9 bcdmosjup7Q5gJE+Dzpypw2jvCg28MqGsSckcocERebzlyAQnJk5Pa8l3ZkVb0Z2VPDIlig/+hW2 fRsTcxMNakFgCrcKwG6yVLCQUuQN0neY0SwJGRmUmW6rO3Nna7Px7Odo6BP9I/8AW9w9Or07aezP o/71ARWfuzasyJi0WasWGUVhOrGxEUZwnHcCiyD6nsRVxbX27lC3ZymDnyhFnBLK7bJyZhTUb27K HBOD7zr4f2hGNGuCjsLlc6Eq4GMhuVMW07tZoDyZa033Loy/G7lgGVwbqa4ZOTW9rl8EOUNXlyq0 16J/SLJrXhzGzZxTh3OCUY4KXSN9Jw1LSsWG8kkAkAsSI3ickikEqAfiGqztU3HC41gldd/Ej1B9 VGamWIS29rGkayygdasYipkwlExOnG8rI7xbjm34IYNwQ0d6GkPXiFGCMdvSyjCJVBJdER1osZyh lmiAxXg8wPz2oi+hN3JyV9uDhiIgHTSvf2F2vM10JOzOf777qUjKVOVskAAs5L0oODBgGymbk6EK GjGni7+cEObdTUVxAOG6NvR9uvH6qVu5K7v8zwFQazj7A2dO8Ja+mk3sr8BH+EqdFSFfKRnrywqE kdWcPJtT4i/Qbgn0DsAfTRgeF6o8UVljuNuKSJdaw10V4PfO0buZsPTrwEtLr4lL20Vy/o39IHS9 3H2bzwJKuqVBhUp3SoWpShFAXcMDDCYzGRMrQpKm3XBBL0v2OAezjGYIqWfYSxxNIB6KTIRXGYa+ KQbNHVq8xS/mUQCXJ0Jj1CIbsLXqSZepKl6jgAzcqTzIn81kPR6t/oppCJEJUOCagnn4qPLRuG6o T7ziaUJipNkg6MJstcQuc6BpZ5Eunq1UFepWln+5CCh3I4csBSBrnM9eDhiFFTQlsoDXncIrV+gI +jDXTpOD6NvSZOJyzK5uSxPs0AbgUssh90gBRLJuCo0L1NnhL0iSlXmg3WoQGrajeGpjZHDYfAV5 Yt/onXrH065jvkIY09wPTu+Vh6A2e+vopidyRbtGJoo7q0cgU24Dmiee92NwuRZUmyvXF4dW0MNJ eT7dH7dVKfTbWsVIkRkSGrCVVgUpMBMWEvS82UOLLkfC615gK7caF5PuF24gyGqEhCYdICdLegvb vpSny9CXPtKzMMWAooB3L13SLUdnIH9eSfE+MEorlKo4X+PTd/o3jr9HTRRUnErDh++dfyQn9XWP q1hhTF8YIqPGEpp0JKrHCDrbiAlCqLSPBw3c2kyC19SF3VFxvtvReH7i0buP4reemrXTO9Sg29Y5 EDDqY9r2BbSgugLCWSiRG4pFRm6MMO/fnzR9th16LNPlpIKPpX9H3bSaAEzmWS4YDMA+8kdV2IFw CKsXPMiJ/aOT5/XfBUK44erp8ARMli+r5t+6W7bjqkNJA1c+Julv8VGe9VlL77Nk1nf6tYY+nAKc +FseM8TIQI7AasI37GNxw/eZ10Ipy0c64wo7lUo0OhjCOnIITHYAi2YPtxpzANFhEXrhrHGd72CY Yx+rotWZ44RGVXIiQnXo2MREZ5V7vBavONPHXhpjobgw0d16bumehc9GN4jSK/RqzWZJlZnaMULb yQd1iQHSFAdWzAgFuBpEl9pJYkGWerODThRy/Dn2mOhCJBw8cPp9RX1GchmX8jWRzCeGOro9QSpX 6amqtcfqKioIyzr07sObcg3/AF00BbMhvUvZ+Ma43+WZLwKttUJNtkKxxGbbZfnHXHqKhLnk9EXz H0s5FvTXqEKB3tRQTipD34zWrE0VGz+aJi142N52Px5wTiZCWKHiJFXEPU33E7JciPPSWNCP/jJm ctLJlJTaIFRI9rKwQ7pusaUqXdqmwjEztINcvckjfUK3KQ5pzepoBBMK45X3eXryP+hHDdzgHGkw lv2j9ksaRCuJ1+dcPX5yZMT+V6w2bZag1jtoGZSQYqRCNPCJsCLZbtckP0ttpb0WIZKzweXdyhpr kCIht9t/GC3ZD5J4+f06V+j2kX+60ZPSnja9UobmFTm3E1p6ZqSZq8uEPRufVomFMzH6Nm1cqzZj kpDCpBB/AXIBYF6kcX4xoG0WV0dLKpRiGJanjbt7XPBUnKiXwFfnMhn8j6N/Tr3y1aqKKlS4Gt1S 37tXT0at+IDqEKDHidGaODVXoToZCI63m5qD7DJLDsKE0ZSYr8fkl+/Xox3x5QaWcR4COMto0Tqc cni5IgmIVse2I0iz4VTmZLDhNsN5dzNpXCPhpD+LfU7POrllMeui7H9AW1ktuNP5IXKTR1V6gYt7 qV5wR68k+J+u6Ck58P8AkA+Wf9IP2UX1Jyorq0aga/p6teGG369YSnTE8E0e0Y5F5YZtRaag5FFw M04qHYqJLhZyyydA2uhYoS0hrnc35QaWfSyWOLClQgEN2q1ThpwVEYnytwuWGuTS1o5D12I6M23M oJePHSHLnA3cfJSW7VIKC4/oO216VQ5IUsPZBchk2Du5Nu5xBMtmcnNVZmY68j4ctOBNnhHOB3vU BPNypPpCe4ftnrEaODqr+FK++/Hbqw2dFMbxgez4hilqDqY7jYD3a6q8EtFYYlFhm90xBS116ICD 8ajHGfk55p8y/L2l0xOZNr1tw1e64lscui16C21NaKK10Ir1EgCFx9fIMgXGIL47NFxAcdQDtpeb eiXbXBzZMojLuqrdG+ASgOQN5wDRyTxAAubspfM5QaCnMcvmfGG44mlzlaYnj74/v6wpF66prydc IV9RMR9nuPRrx1zoI9S7JY6uBMHjy4mtsuVOZlo8kwT02cyglSDlqtziO0dH9W7bswpODnZAnw1a ouqvGoRDSgZJitdyc2wxTXynpXiF6Lnxkcn92i0/Vss6PQbt3gpDJBKgmjAVUzhwCHILPo51AZbM 53J27vjbwLc+QYpFSc4GYfKagrh6sdm+eHr20lNSpXwQzE9XgZL/AJH85kJ4avR6B9dBnQTtyOOJ yC6FWvge7XtcKwlEjitDImjXY0mv89PgHBq6w1To4HLbxGoNLBGvQ3Jm5VY5NuFJYaMpZ+l7OcES GiPs9ONPeN6DttDuy5y17Ek5o4ruuSKPqfEQOM7ygNVThq1vTlxbxEEArq4jUqqcq1/GagVJ6MLB Tafa8/DSHr5RNPbqHVrphe2ZBmI0YF7ucoaVeRdABhudtRNdhy7YZsKF+N/LS4ufm/n18tBHYOFL 4g8vRNi1W34qrrbg5Dc0cSyTbdkWIV3apvsF7iFduNDb8SOT7dabjuNrd1J2cixFfnvpD+yTQ3iN BmFTHariPFn+33lFRrkW3omcWW2mXoKK4OJVxj6SaTuBxBiLIdPVuCnUPRN6OtqtjNqel5plxGVk XBerJNSL1PAjsjGY5jJzkoAnWgAuagPd3BoHpUd1XwMr2BBmHKwhWe1wy5HAaOXK448qyOKapryo OC73KkPyfh3/AL6eqnnIgtyG8L3BFuIzqMw3h+V+WPc2T0kcztdHzKx0MB5QOLdPkZrppCzGgwkg xC9sMePyEmtuJC8sKi2sN4Say5XMgpa74CRXwDf/ABfy81p9IU0xFSDMB7XTXUKhuLjbLKDNJjoe rFDl5OYg6ELwEtaDz5Pt0do6H4X/ADlT6b6Q5pQE8LAn93mIqfRTxPl84ofsVK8416w9aQblQRW2 k6EF4RQOs8o4TiMouYhp0y7+QhXMOcWvktj6cacy5yog7aKNAL4bjJsvWuF4n36rFCd22Z4lujXN 8Ibf/E/ER2bmnyLn5m06iOxUw3IwBijawgDXl1IyoJZyF0QVjSw5pKpn1R9Iq+gro355QaudP1UC PEiDNl6IUVYoNWB7VTWRGlBeDobCxDxwu9ZZLGdqohLfHvcrfDg5vOLVyWdg8tPIJ8SlJkk0DUoL NyLctLd0CRjgm27Rdenq8CLbEHFJ/QwYZ1MJNxxHHKjJscYaJS8AAD0gdFOWjL/h4AzHRebyZYzA AABARGvq6AEd7N6yNpOzY8RjHDdrnc9OPdkAssmJjDS9jLjgx2/Nzt/EBw5Yst6AA4js2vB+Ki7D 0g+IEPCFZl2w3hyCWdOQGiw5HkmuZPVL5490HXHBynh+4tHcfMofqsFnoKUyl54R+syIalFpHSzm e6EFIqPKEsTILNefHqNFRDbzbd/dgh35L6U8sWXq090NnjmB4G+z3VAG0g/Ed1Hqhk2VLTBo58rK cW2Z4837jx5o/wD/AFf4iT8qWmGhY7hpqhSXojQfa/cWtGQyUYgQfVDl8vCGTsHjNpKn850K3w3+ b+7upNPkW9PL3Gl0Qls02OrdT8cBF4wPckCokGjmkzw7jjk+KAWuheHVoUPRp3dz9xy3M/QofoZh IkEQ7MdfZLKs+vbiV/CHsjmiWZHIZRC5bKcNPppCt8D+bt2YabtWQT+mU5j46SBTdA5MR8IJl79/ xTHNypQAd7JcX8JSwvE57uxsMw4qHXITKcXWl4E4jfwxTY/l/DsAHJAIotPkUP4Qv1kMwZZIy4mc gtaWQS6q8tG7M0aHkT/GalE7ss9x3391RjoGMH3E7NWlLT5F00BaigC42G7GPGKxYrOQGuw3IlrS wbh6sI2nUJr98dLiG3+U4N36U8sWXv0NEaawRkeBFpZrPioVW4iFnRmdyo73No+hLZPvyV/rq0uI bfl3PnFpHfknS0+emMmPuX9JcgClhQXPH2b9jeNYnRzz+v8ALA123UxUgNEFHhzE1naNqLXOJcQW ebzwFJMPpiEtIC9fTHXQ5MOBu/Shp7h9PqM8QlOKkK40t+DsRoYlmk1ypPMmeVKCsqTZPpfnpCt8 crpN12YT0T5F/VT1GQYgFhUA+75DwEDseB8DFMP6ATrspn4bxVhnFXS2GC8rgtQHtSwxyVhMbB9T AAC5RAABzwgiK0wCb5hc7ccrK/CyhymIM8qZv9XhpbSRT7xKpafDC2+WOZBM6Vaqej5MI7WWVe+S NYsgAZeXkwgtC9vlZTmeeWOULOe+TV5OXlZFQ/csaulV2b4zRNsun3xCuIzIByQ/XjmjEeLLUYya ympi9PDjxCENKIfxEaeLnZDpafLSYTARCQ02lY7scw5jB2QOycqWenqZiPZvdEUxiC5G+4Byu6/A nQURfi7DOKsxHELj7VkOnJkD0DJCQT7YR1EEEvfW9ajhSt3s1i7QyLEjor3BLswqC5+rd8dx9m+D 56Cdn2B8FkM8XTS8OYbsNl96I/jRCRUC/scJBpHfn37RH9ngs3kHtCWEBGI9oxFg6zmG+1WIMSIs PcreKafTLkuBBZbHhW3w0ncEQwypCyGq08dkwwygO/U1Lxrq0weZ1QmqSwV79AorHLtTPZqwx6um nHX2ZWB9VE62A8oo2vI3V8HrJ0JklqsFoOwU/IVYnxodNWh1i8+WZZVglpHwi9kaRL+U2cuJ7ryg Y7PHJyMqte2VwVX2uEgFSQeI0fyN/PvjExZL8v8ASIxZZwi2hRIcrps22F4cRQY8NzZQSTveoXO5 LXtpVUmA3xG985Q5TZg/Z2Cek73azUFnsvY/ny8xxobdtrBFhtdr8PDJEj8sFTiWdR3ukLCM5IPw 0VPESKhhLSeMDiabjlyp0P0LZf0yoBqHLqjbaQbK/CywcxmZYpsOQ3OpJ2MMVn+souSnKIdsHbPK 1PHRxZOXkxciKOR22g0CGnV1oBlS0DYeUGIOJS1o7obkFCD3Y2a+LUWYlPM+DZfls1ebWUD4fSkO VlzQ7LEEkIRyoPQ8ye1yO0dMq15jk5U8rLZmXkjkienGOAwAcG76ClefIV5CFsbNtuwehlCw04bR luevWoxug0cTCaPBFkuUFF8O1UXAEUNFjhFQZBCBvS2NMBeoiIAGhwiAUGcpkbTnZDEAq8Hssw/s mWBoMH8sojrJwnlw2stQdq8oKnJuCGDGCsFxR8jF+BW5eRwOQ8n08xrqyrra1p5HBZVXdLwuOyK0 k9Kt3OJRtRRga5zugkrDDJcvIaGjpXQ8NWxIqN8dv81rU1iAA/JTlSoCS9ai7Ji7Bda4itttWf4O fgnXW9nKMN7IVltrYZVyoi3LRhv5Oj2TkiLVammL0egyHJyR7UZD45UwKRVrkWqNTQcCXq7VESP8 O2OJ2yYgGmDYHgrFSGRZwE6xId9tiJjGysm0rFXIXO3rBQWJlI2XltqzFDp05GSGRVtRq1ta+qzJ GryH4+aytyhyRc0iy624aoxeKnZEV1xNRYVSKlEElZQh5dCjariwK8GTlCtRUmGT/B/h66hnV5Tp dvbPJ6CA9qxxDtcsT7WdY2Mcm3G+1bMpDT9vFSfHEeVabbVF50ePe5Wx3A2+T7cl5VOzlps6aVlb /s9WZGgwnJaLtCouQgAWK5Jx+psNkYcq0FFdKXsoLiZ2W9slxVjah/kOr/Cy3Q66t6PYQAQDIygE MkZ0dRlgonrEgPrwcPStgKNoRQwRA/8AsZsaInWzeyOWQYWt1jocHrJEFYkKsWkmA8HiiwnwjaeU xWauuFDXXuuD+G/4ijLJAXY7OWgzywniIUIB/wCVGO9/NBbsNPKHJ9/NIyzVh+LWTExpn1pLTGk/ OIctjI4rqDkDkIMQwbWQuubtBy8jKymdl1fBhlyHJpV/YIrUybHG2OvkqxMhNZfs7wRgQ6CMFLPr UV0ZspmlL6WG4gitLb2cAC5ovxCBAyqzJejsdlYOXWZIZOVlVVSM8kc/9lb7JYsh2QyKVRB97tW0 jZpTGE14SRRg660gHFAt9Cgri6vPlm5QCGUNY4Wo4VysyWTFBpcG9cnKCry+FygDKq8rTUG7MA5e 9ALtUklnrUuSfaggVk2FSdBU3HwaB7VcR4G9kAqi6VG9eaNme2uayhyUe0fkk8pt2e7S6nkhk3Ck WjENByMkIPRkyhEe1j01Js15yHugZIBJ6ZVMoz5tQdjwjctNo+lGodRELFBRojQze6LkOGG8WWKt 5NZk1SM+EYcitbUXYcOtvVgZbNcmRldpWyAGHldtk1dZkS6I9kqHEcmQ6I8WChcrsbTXKqa3F6ye 7DYKNoSzwlSG/ltDyph3foNZI9qGS6GmAvRmAI6fMjJ7XTTKaIGWxW2ssdr2crbDVWo6WeUA4Iw4 iE38oAtB2bMgO1DJWIUvdfyZL8Pg/Cyhhc7soGVlyAABmZYfh+qs9n0D7rsOqHJKqAOCAP2XDBQ8 a2g1BSzpaecahFuyilCyoglUgVqJFg44sCpOdCVhERXnpY8XQ/GFDyeUt/Fc7ZvZlTAOWQBky1zC 6LELEqwbCrIt3kXWtshRczpa0FXwilsh0RvYeUgLYoAozEy1zKynJl5LTly1hg6srKZGUEsrJymc +xnQX9o6zQfs41sP4+QiiIaiVBF0K+WuQgtIQbBbTm2Rc2Tk9uKMu4i54PRkq8nIyssYXusMkQye 3FiZQ5IYa3hjG2FdvZYhgFsuvr4bxwh0OZs+0eUAE2B8WktcDKky7RaK3wnD6IbsmIDHppZQBlfg i/gHtQEPGBjkqoCknUgpq1QHqbDXxuZ9fXfFIWt4NRbsrKjPtIokQDRhWVnIByz9aQg2rLCe2z2S AgNzrQZQ5Lnh/GgJTe8LXXlZIszJnk9s8cnKyqRYTcCeyJ8ADjr2BZct4qQiBN1iKMybNFrNUHCS 75MWf4zOwcNKcILvQRCehgjKlgO6JNp+x/FqPCDECDhYIPL51rNmKlmiJpMXLA+M7WXBEURaQVrt gycqYDpSyIpQp7UWWOTkhk5WTk9sAwUxYohPaYyqmK1id0rihC4qoAejxAV7GkRx2gLLqPl9vlry 6MsrJCPcHMjK7TJyIntCryngz6vLHT1j1GVUgJn1j7yphIqHII4XFC40PW4FjrbH1a9uHhXtsIgk OY6RVsbuJ3WUrTUIK+IUFqhy5QRSstxhEU4Wm56vK7TTWFi5IBh5EQRARyYntYMlnvPIDJy8qreG Rl1eVlm0sBvaFaPGSzhDmzK41uMcH4yRga/GzhR7sfMFuOr9XGXHBDnziG4uRDpak2W9B2jqpQ9d DdqnILQnh/bLRDMbIbpay6GXBOPKScvK0LAcELyMXP5wIMhPSjRbTAfD/ILQ6hgOxv2G7IUK7VTf f8CKhNU1hBZ6mtHFYqsPJSS5LqJIFpDQ3Bynb8gXPKzTHZrCno4ExgTQIZiA6SxDsHYmxDil63s+ YNxaoqVxSs8RQSmqRUlJwLyOlopMoUJgpKXHq0gBtDUGqesfYHDCu2dIZtWsfMTuyEra7B2HEWIp i9YRQySA/wCVVHbJFbycmaIyF8Zw/h0OVldoMUnaABMckGEyBHKkHfNFRScaDDV8ONDcZZtmEFnO hzrDsNk7yuFLQkVfXguKfuPtpxrwe7Hv/CEa7HtNW51WJBZ4PJHig51hvKywsqVoWLV+vS/mKtoe kGEP27o4POh2fP8AyC3URy0qPW+9upCjq1QSxuOFjQhu5i5ktKo5EluLbvzjO71gDaTtaIxiDsHm cwLM1neEt6LSPBwb5hxDOEqXq7p0cYqOAfjAiI7G5fY6UuwcZcgvMqmQRjtAixYZr2hYZqQjHaAy gzN328XW0MnKFhSypLv8D2FS+I6OzEMr4+ndy2HJ7UWFkszJysnKHqWWGqqxah93CWq1SzahOltv MkeHreOAKZddy+PFxwAP9t4pOzaHkbKgj+x12fLOUMX5EhKZz/aVpC0gwjjXWn47EgmLkszwIVL6 G4kWFc8LQERGnx4GlLs+JZl/TLGlnTlyX9oEjQKqDTm/iIWdI6SB1WAAqxagFXN9KVs3KBWQ+sYg qJxi1Nb4im+IKQPiIqqbkaxRwlhets61cAZYZY9ytjOPtnKORljlVuXlR4dQVbJCtywrMnKeOSGX V5ZL7NSWbt4sd8Wf2pBkbJVgtlnlI+aTGK/FlsNpNVskQ0fe1t2OC72vdccLp7UO0yXSABkBkhks BjZIZIAGhLe1j+B7kjlC+MVqF/xIMuB+I4NgnCdkG7ytMWh1XxEi344OTEH4d/Sn0sJjUgD1svxc tlp8OYENVqhDey8mgBxoWe7PhrJbjaYQdtkoa49XvpCE4uxFag5IA+HXFaWUIdtkCPa5WVk5UiRo eD8B7BVi1ZL18Fq9EUnw8UfMidppxPxHcimw1TAQCFaE4Pxf/wDpS56fqbs2BUwxqE1rlz1oV1Xa zxOJZ1hxCNnPjMdqou+Ogw5PuIJ/jS5lS10HPCuwqh2DyBh/wW0StsRoNrCoRRohuFG+KCA7WQvm OFf/ANkBETDXzLZevQd5UJgyW0+Hg1y8W4mvFNW4bvImqHXgbViay5FM+qTwRIVofOdwYz5LeRmu eE6McuxwCHSHFiRUWtTgRx00rC6ZlydSX/LsFgDSjAd7fEJ+KqkQUIZHkNSZMPxkdbas0zizeZ+4 ePr6fC5r7ogc6NrL9Y03xbwR2qb7HvoO8X+iMlPX0eDaKjxCdhPisg6AuBeQlpcQ2/LnZ5bumfIu /wAKYPOPBDTWintWEjbvKA68TuVyZoc0kiYvJV9ePNIJ6QN3aELcdCx2ylTSHZnlhq/wFC6UlHm2 pKBWJEL7nuk6jKWYJaFxCu7ZfMc/s1UHztyFXI0uRpaGGWMkKqB294+Qgd9dB9WZNngs3IqMdtxa a6oz76ckJ3YsabQzfiWh+OmOuN/m/wAnOZDpafLXDpoGi2ZZXOupdR7QtjsiJlsMNoJTneEG28TR m1aFgOlSG43roQ3xm/4eBh2sUmnki9MRF/CEvwjX2RXtUNWy+zjx6vTTTXSyboOvBvOCejN1oS0v jfSH5vuLc6mmE9fPKgOLUUN40pES/wCHdZJiY/nsx2uAujSxvCstu0LZ3S75H8ajI/Bc/c7CWEUm mGhYjsZo4UXD9T+uP03OPaS06BxI+HyEV8TtIQdtXIpdDtpH9AIvgTuVn252m27yU1D5jRbU7Gb/ AOOBuyAJxSxerLkADplhOo6pdtW9jjW1ZnxBRmXFKAEbSKifOMpYOBFaytaiY8skcpaY643svKDJ cGRWTych2NPLZz1ZuSGTl5WTVZQjV5Fo16rAbsgqYZIuWtaNla1ubya02ETUglktuyraGVsurysj JyopoaFkZeTZ/iJk5UsruoNPJBmvQAHTllVNblZNbkNzbNx7sEstxwMtQwprIowjdfCLMQLL0Qj+ Upsgml1qzlZKPE2Fy+38rtmE4q3Iy8rJZkUoUPEe3ycrKDLmGUICulm3QX3n0YukAVvQaAOCCODE Bhin70A7A6PT8LfCGRRslwdtFNJwP+wirKTjMpaOLnfli97nNJI5MJLAOPVqFi4Af8oCHbT2Olp8 tMeY4TpU8GLV5JMQU+zLafZH8IazMWVwItxvK6zdsXoEKgCA3zBGKmDmYGT22TN7NUQ0KeggA6D4 dsG4W5Z2ZzsaiRHKwi439FFIh2OUt9zwmbBLtVWeFURmN95LdAMl/wAOmmOARRaIAAAA6eAzAGQU Agxgs826XUXqLTRJCgZaYylkbotXNRsj3NYzdqMwRrU8LG/5Q5XCZQd3po5QTEB7oGQ8e1q8sfYc k1JI63EnTiDXkT4BwTMYBAB3izA3a7fIaaWYBkscbN1fA1GT442bHl3dYAFTgAbjayDg6TwXVF2d xIscENvgAQ/cQTxdM9DHpMA03kIsvJvfkdHhkw/i3a+gQ7UV0Jd1orbtHw9R9CYQR4SkLwDDGOCH zYb7i/pSaYjt091U1BYg7FrbuYcbnA6mqXLMAu14buk6sKxRyIzlhBGlLXVq4UKGKGHK6GUQG67P pYz9C9r9x1+7IR2P1jk2R3VYO6SQlfCCsJiK/LMvHKaxiDoXUVAXV3QdCcDk+L/w5NkT5FvUMGFK ehYaZhKXBCQD+0BWu6AS1QxpS4bqvddvKFHUG0chrfIeAjpZ7EupEVixu3zyVCstBtHKxVjGSR4e lXIsuRMQEtCWrhQrjXHB52bsdvVQd9vCviM1LZsWHjEZ8JsHLF4ttiaYOF2TUkyJbo0L49hjA+Fc vjAiL4D03lNlsvy+203P2D1BVUHsbEFyK5UKRZY0wjJnZRW8JkPjPX9cvfWI4ToJLsy/Y5o+2wLd 6DEWHT/TWlDBiQqYWl7siCbWdB4SiGkC8urLHmMnA4OJO2ymu1MkR7bIyckO1AcrKpOiCZqQBq9B aznmw4Xo8TeV+0rxPzh1QbVBFeX4ftyzY1TKkz0G9NGmQbJ90iJh9UXZ36tScAC2HB5r6LDgy/rt CzHZXY1cqxAhY6jzAijaI0b0zbcEeckM2G6EJa4iRnwuN/kw4HFt0W5lsv0ToI9BtmMeDJBQgtZJ 0tbSeVHMoj2hIx8m7QsadvEaHOcHoMuzzWafLTAcZUIRY/h8qwlNF4/RUXFKEqOqXW54bt5J/G+/ FS+r+vpCQ8dH27s0pdghq6hpOjVB1FjwtbrchGOkK4nz/min48WV7bNoSJYtyODWMsBjtdYm/HEr RJZqbDNhJaF46XfJhvt3ULI9gUUQ3jBBaz27YbsCySeZCazkF+pfdUtNPcnJzO1UQ1rj1Fgex3B5 2bXTLTTQseQQMyhGLXSO3OyEQba7OY6U5DMcGa5BiFEiGSs/NG2MeSx8ArT5XJ83fKhkOl2Y4ucd QYCPdUQ4c2UXajiwKhEi1aAzzQs5aaVkdF7mcB1TwCuotnNjuDzSD86TsnLyC1U2RiCARNsctxSi /Eg9aTeMHG3Dd5Px0RBYcEWS/GayVONIX1fyEtLj4cDlaHc/boiuTx5aUGfaF/hNOW0jBezk6m4y S0N34GZWY4UWZVhmuSGbSS8UHDuf6XcovPh0uzlpSPoNnWNUW3FEl/x9eJZEg+13g+9MLUsTXJpK xj+8UMJ/GA4nZ5rNOYTpv+JBNnHLGUSIV9jLXFIzEA0j6URgjGUOM1kqbtS0LiFdZbHXJ6Tt9xO1 uXHyWaYAywZa/wAvenXLBtPLt/Ly5RIyhaQiRZRg+6Ibs+oYCJaGtMQvOKh1HhOLk0ksqQHflyjf y1FTR8RbEQIiSREN0dy1p+WnP18vKehVK/sRRUjTaQtSw3i3EZVez/WGdGGF+nj3Nk+TKDfr0QEF BRERD5sMBu+ZDWkzQHXhOVMPwfsoIkGWun2hbbC45IFQvXeOoPwcbxP/AJTFodUQhDmQx3AMofQ7 2d1J27eYWmVNgQZt1Ljwi1BduoaG27N8B2ZHhhrTPhOyFi7Wy0WuuvRAv16xUfHOeMERNYPd0uzE QwnTRMMCk8FA1vYOx/p5QQOrJuAAeIDG8Ho7NvCt5PZ2wPiM3agyuI8OWfFA68G83jazpzdd9IHH Wg7f5TuFu69N3S0+ZW2gj0HsqzAdSMoM2NTqBNR1RnqjKR4mlJvVzNJr+AV1lxUQ/wA8EGfou7OW jLnyCfDNGVN8dnCiox1h5WZ4twkj+iXhCUnFA6KtCd4IykqEFUVpAuLjxvgP7urEa7UtXWZY8n9A ImocN4SRQNd+o8WElnoybDN2uldmvfGoht9t8gHFq03dO/n7soeklkzLmjBgeDP7g5bleNHSDz8/ 5oTk4DxNhW7U+ODVibDdNheqE2uehXGMpFTRtsn1S5ZX0hLujek2IYeenn70yh4ptnmPyWv18TYj QuhdGg0cuU7E1kHFkIQRMVPES1FRjt9t8n3D/Sk08fP5j4U3BZ7j8x4GmkexpahhYmttjucmlkob OEoTRVJjce6/ow4IMuxx7pb2FobSt7Y3YxtFV5QqIH1BZbeDyR1RZZ8J3C5OMnal/wBB644Pxgfq s7OWm4XlqoTgTAmwQsBh+1bSz08GejQvxhUFnqDQc+XcPDlDOvPZ4wTRoLQPfDATdF2vB5rth+NN w3M5IZvxU00X15DjRCt8N/VJuLiH8aTT6OulkM+zGx4yrzwQ7K8VGA9k8qTS9MG8bfiwMTD9++JU MQbfH8O/1Tlhz8pleGMWnEgtdgQWfDOaTuhulk7lOQ8VlgU24VS+l/jtCfH5v4iTDr4g5e0PRZFs rwyaq86DxFDvt4Ogml9yuGTgHRruSsNdRuPYnLi433J8YDidg4aUtOfIvzNCgpSiWuEq7QCLd9bd vvYJBmAkVoAObgDyPnzeuiIG2e3VZ1hzD8gquMtFp0FQSxR4eqw8plDohWuB5p/SvkVv0MlSEWik FnOpLvV4pUUX/EgTioSR2myGes6TQWVP059InZLHz1wpq8461yAFa6D56vTYxnyrbSyKxEI2TWdJ mGqBggosVNH/ACddjj80+Wkufux50514hPy00mxQfEVXUhv8s8HksKhJYb2jSy5Ex+Ja6teBbj5s OCHeE9KRHXzCoP0YTI3moOGlhfuDdsEiZErSmlBwoCHbgLdsUfaKv1Cdpe/ISLTJUCrba7nJ958W SvoL9Wh16PuLiMdN2tjoZP1deN5V9c0jC4lEbyUDTPvpHKZ5dufqly/Ps+T/AE6x14Y04frSyd3Q iEIImsdnOWG6Ols9zorwY+mCy5ONEJ6L4L2Lg8nR+lmFO1CEpzSqCMNzwV/OiCbX/wDfrL6tWID1 UxgSiVF1pBIcdYPSh17Bp2amM9KPA+XyjlnQbNLAhvAd0RpZ1ehxadBV+OhsPy0e3W0suRjQVdGK 8usuFaG3+U7gwXPxpOzkX9uR0GyvDl7Vvd+eEYlKG8H0vvLuhKzDWU1zxadEuPmXCtDcHKeIERMd fMvoxkBOLH6+t9j9YbwQ4xKplSMPxYVCTls9tO5nIptJr31z0ir5MN9xaOeSvPTj7l7Pa4W2bB9f Gx+sa01CSLbSdtn9eZ2ZNvTdZRm02YDNfC/QFDwbDfh5hMRxemmnpoXLavwF+2l+5oWzOASQQSda kk3BHm19WrpGV4VxggdEiGkYIHwkhlFGG8Byqww8zOQnYYxIiYvPy+rh+NRD0kaPdAcLsHo0MZdw dVLQJw9sr2aX4XIxNfDtiO6LnE6DTCG4uRswlVMbhRY4IbfcnKBxa+SrT3Sfo0h8K4nwrhW148Me zWuLZkwVZ7DJRgtSm0d5JrmP389LhHQhjt9t8n4dT1unB6PTownsiwfZXIk4go1o1qnmlH9ns29N A9Hm28hU15+XLx69GPpA22jpBonq0W5lyX97QoVup4DwEYSPZT2D4QRCz3DF4wfSjDrjSqolohvx 4Jjp7EJJR0ZNU2k1wReImXoPzYcEGdHAAB0T5l/TKmJ+yQRCr7McJYLhBZ1NJSCIzwVVqFekKz3S HzBZh6F8RLUK10QAW+3XZzXZDpdmmIsvWwwoUhnE0lnM1HjhA+vbb2hug6UHX5CcmSRmTxoK1Nd7 lYOCXc/jM0/5rnZz0+hs5U5zrULNYCtE8/aZtCJS5C9jvp3ug5Cqy21Cotx9PwAAAuUUXKEcqELe Hy4HKERyhX5sJjiNNFfru/LyhmPuwDVCmpepbyf86Q0QfZ8VHVCprvFDXGU24frxx0HYwR5iE8Oa XHUrlx5TuFxDqBrS00elLAbdoRuZ+oM6B1eZaSOhHEvSSJptYRlJ8u1U8RCuaP4t/pha0w2asMIe j1MW7TjNIJVfCvRtrNd4JZ2FcJ4ZNu7WyfheusvxHpBt0j57xSdnpGi91VKHZdWRdTHbia9okJbb mTcKQcRlKGbDv2fEsDkP84ERHZqe8e3ZzK1sKkZ9PLs/LygQGcoTYkcLEwVmzTE54uS0230qJpFS TXwqWb3T32bua8z7XQnogLyEK4h4A33Fx6uh6fWK+29AGEjqjTHBuNVuPYzEgq/FRzrEJ74RmS53 4qLoivIT1hWuOBt/GAPHnNYZPTXzy10lFle0IktWMjPj8/8ASPN7mfgLDeJ8pHMf06Rd4a5uQedM uWm3dTYEWlOz12QhfToZEUNNhdEG+EpzsONzs4tcw8S8eotx+gdU/VTzLPV3tq/HnybuaJj1I1Lj xqdIDdZpjWqrztT4HxUhkuRI5HvyHxJVe7kRm3F9hpdy8eoqG+ec7g0T81nZr30Z4bsNDhKaWY01 Fe7YxwvKnM9bUYrPb87m0TIaKg+JXwhuFtu/R/ZzsDD2UtFefjHatpuD7AjglRaW4kJawqNln2j2 noa23zdfgEFoFyejEYIduwPKl2TekvLjZS4LAdld/wBS9zC6wFVSiQ30A4qPQ664euRGTYZxLYYy QUJl6cODlO34zaST+K2LDP0LmgUKgfo3Ly/4wWixmw9A2sj2jG5DJNBHjc20taioUbwI6lExBuIO ItOO5/yYcDi8qHx3J2fr5+seii2NGyC8ASCOuMeIzSKl4oI6otLEHFYmsqTGiW1/AALTHXG+23d3 H4zaSYDj0P2Y40uhBWHI27wi2wDxYqoXxmcVOJ1lttk+6ddy2jIV/wD2P8ZdndSafIvDl9pkw6Bf tRRIPPy0PEB4v+Ldl1kwveRxLJHLJ8eVhZbamg3Ei3DfSGut9tho/ER2y0p7qTTDQt6bKCfrejEc mt8RTs7bMhLtK0LF3Z+DVu/DVvMQL+PDPf6Css+17Zsic7XaYa7kVNLzbTR9G3yw0vb3VWO3/wDX knTzL1bKWQ2ntCuKmbNU+qtuE0YF/v1yG0lHWW3Z6i0qfMr4QvzfxEw50tPkXs6By/H5qxNJxQMR o7H7Fsy9jEEb0JPFpw9Wbyjkw0vC/QXENvz7v8GfpS0+t+sdm40nEPXhCu1ozS7jcdQ0rN9oAqcz K9ikm3A2Jap89riFP4n3EP8AcvbyNAZUkvK/e3p2EWIYjQaN3CB5gkS6SHoxpe44RN7QjqIttpQn hI8WPdjhS4kZ6TbzhWFkVNpSRRv1aY/kwvt12atKWnslT1K4idEmIyCstiz1GJnFjKggnFRazRXJ ipKiD8xvSBz4x5OOz6J8i3oE/T6hceU45AFCKDTs58vKMww5jyxbYLYb8MrZLiymhGdMRslFg/bP Olb0U7sHJC5IY2p0PtckX/DkcrthyYoYvVk5Ihk5WVlMQBrMorH/AJPtZYiND22Za3f0RkoE0zC5 iJsPyZtJVslxtleVH2s5IX0hr/NpxN0W6gjynH8HIv8AEcjHLyqCXW4XwqtTMlXjfZAQCkOnw10V RXI2WMDKxlqKi0kxFq8nLX4l2c1xx5GRlOCHtXlCLkfTXkLxZmXk5Q1eVWVfa5eX1XdgrQVUlYKb 7/VSKammIoRIdC22xJk9bCYvINB9PEa5jqw3atHH610anw8oYBmDWanZBqK44+E0hwDPSu91QmqA sPc54MQUtCl4j5zuBxfXgG2nCpbBaEMmzEZbjh2R9/Pp2vFWVlRYhvYQZrvDKfK0k5eUFWx8uKSy Mwsww9DJyx5LhV1r4eEhranJyKyrya3I65OyDxOtCQ+sZx4VYLt1xpb4LNAESFgtMmLkfDsie+lq 4UMWOht7JF0aQBfoiMsnK6AEcKcOipByB9i9TMum26fLWrLXqkYyVj+CehPBXUWO0HN2+TWZSxbA jchZdYK64hrRysoYWs/LHLywysvKfr4yMnLy8ikFahn0HE/AavQDTSB+XHw7/H3xbsIWpao7Japt deiPVtGy92OGEyzmSQkN9tiyrNMNkwRy5o0KmQE3LGCMwDk5M3VlC8HsOVlgL7e7QyQHLyTiw9gz DmzqjJ8JIAobkYBd5Bcv8I+aMpRfi0prviZcW2/Puftx2eazT56Y8uNdA6WIG9a77IPahY1pyL4J xSznAE2q5SeZWE1Vh7ZrYOQGXl5CDC+zwyG2GQ2MlyzyBHRRq1bsyhyByK1+5HB1mRlZXQmmvxKa qMYI2c24pKSffCqReBRWKXbF8fn1FY6FKcP8PJfW9A6KOJHB3uspuNTR2DXNzRnHB40TH3UBqkv4 MCdGp+ZLRkc5YPgegxaMPi0YlIhmJC9ehJtQnaRy7Ux2paEiXDcsVF3yfbrs4803hbz0n0UGvacs l2xI8RBLsBVBgQusfwvR89ZxQp8UtkGzSl/pz+cBxOzzp5YxoemATlQ7Nc22PD1uLARNvuJDXE4l yhkU4yczDlr04fADpPo605c1hDTRl66UNanWK+KkIHg24qJTbe0JzbbVFqG6s3ifJlhqvh5C4jb+ yX509ePL3dTEyBWln0sOt4aeUDpmXUkb2o15/vQz2G02GUK4Sozcs5ri2/09BBUJHLQj3R7sU15U vrj0IVMcfxft0NjpdnLSlYdk4Cor7D8fzqpUKRkho2lATAZKSkfdF9IElqY9qAN0emQBgI463iwe pV9dBtQQ+9iyO13IqHQK+NL0XUVA27vvliNPnZFKk8csUWkK8weu0uVYfyPCfhpA8Ob8ffYA2XOq WJvrx0HxPjzjzMEdJTVgSBwoQKflAD+xLslKflr6H5FcQyxlPa7Pfi0sZ3c4TS7l17Z+HB+qkXgM jwkqI/GEM8zkQ01xjYqIqP3Qzg6MoCWL0uHjzR/9wY66TDsUdSRrrWjfXDzy0bb6Wz3QdWEkoTvL TxL1aFhjzixQ8P0BSYWe22wHLaRUGO8SC4mmEu0g/CSwrFFhZTVM+176X/DmrlE03Ghoc8dU8aL5 3/8AAhr7wt++n67IcyGA+OuxBQSx7AXPgLeHA0H8FdgKTjMRGgtnMAS6Cc0nR4sN7k25j6oha1pj 6tH27s0p8tRlTL9qexPB204jJ7xqK9kwBjgvOVURWfEI2U0Jgbalc4T8OoePcfiJMPxpS0LemAcj RChOV7gFIrpTFSvuSH6WbC54enPCa8qSC4hfHnA4h8iIWz2yCmLbexR4r0DC74cdQZbaOhRIa51H Y8uM9vHT4XPOL6LeReGvbYMaWAk8NQaiU8OR4P8ATPCFVFqb9o+8wLFRjC8bCjdUG64WCLaiU8RS mZGqyLFdiLSjCGJTYnx6L3RA5Mg3gGQsd1NJ4g9AFfmGqdCM2KWBZYtGwOcKTY0FQbjoTDboXIv2 RY2LGkzkQ0lfCYZTGXcO6A3WmAyZLnEMl7ZDMnVxAyXhl5OVkhY9sd4QyGyiz2Ba9IuRShO6Fhhk mHHlkI6MpPmA6ouot/X3cbg8nfPeFvloPMLQ3UFIWELPRCz0de6W4l5LXGREbKYjzs32uIOG1sGO uAgyQVzKRHxLSVgRCaoCiA9oWuse2nkZXbZOTk9qOWvQAJxIp+GhIrQWBqbgGhLh7Qd/4b68db8f qsa2bcGYcm7I7ws5xir3a/4fs1tui+G8b/G/AdLuXBbhWubvotIWW9NggNA82UbGUWoV2t4ERpgs 5EyOsATOU53nDe0dChXW202164kTLDKZb2EOUsH4yBLJ7aFrullhlCHag82EGWIdDz1uqIZUy1Y4 HizAigqo6o2GHaPb4g22y/FRdRfAsVP5v3E7B6mW9BoCjsTBWNVlK2bE+Bz5qFuF6gZYSqRfcJ3w Ii2XYpoa2gChZIIYiLXX8nthyh0pyQDkZlCLD7aY0ImQOlJFAHAdrCnkLxmXv3/FMFHjZDFjxsZv JV1IkLogae58sN5wk0ZksZ2xRXUXwKuAP4n4iO0OuC70+hg0Kx2NNt54VLvE8hlkxwIMH0qH2dh4 TDjrG/OniP8AdIQoP+2NCtuROhK4Hix258YDNutaWGkUOXkpkGuhTv24tkQYdhzolz0ZfqoRDsP6 DUVNnNZeMzOcOhyCSOd+eYodHVhPD20XZiTLTYIrQO1QHAbs5aGkSX+9O9DYvTsf3cX1tGsbdUVI jQNslx4iowK9ETTDChuqLRxWcJO8vHQIKEighy5QDx5LlZ10EbA1nri9CVsRUjE+Fu53QTVHoccL sOXm+X4qLq1fw3EI84G7/uYy+nYQHspVoruJ2WVio7kjbiQnuiJEL2x8YRP4swdC6t38hcRh+MHR S49KdFvsGmJ23UqtSyGPFS1C6ltSdDobaWdbbISEfly/FXXxGx/J+X0sHQtl6qC5aHzclnG6KtQU Ddhgma/VU9/+2M427m5Hi0FZgiPCWzkRMQ3bC6ea5NxgccSIzMkWIC1NceccYpOKeSgw6abdwHJE ByRAZDkjty72NRCsv2X1+JLWgTEAvG2JSZDhLW4q2kTginQhQkwVriNmQQZDhGbhFqCMxim7dfkH Okq7JTD+01aghFDaFkKmqtqVQuxfbBLJgPCc7lg2U5sBkj2q5FNdXhAXBlAIBlPV1OwdC2XlAHbg OIC7WMoDwPsxshwPF1RVbdod8AsJZI4UbwXlZ6YToQkXiJFY/wD9sA4mmP8AYvDU8ZUaJP8A1MJe m8afwfM+caMAD1WTuh+LB7jXziyIzMNKiFFCzvH6MTxLwchOgvBU0PVnZJSi/aHVF1aQOJYWMcOU 4N3SOfxpOvbr6NYVzwXIhGlBjwWbnc3WCqwB1yQnzPjN+Knz1FRcnyglPnS0+RXXqHI9paG75jMa hPHeOERm1AqG7XiRnpNXe5PSR8r3zEioaH4/iK7J81mnyLZYc/f+iGsXhEio4VQhylVC3CUgvAJJ GiaUOI2k0Sh+ZVx8Y6P/APot5lhLENzGXA6czUe38MLP/D+uML6lMY8PVRwniNQiOSPBVHz5yQn0 k+LNBVBHw0+Fxv8AOBxDhypaY6Fh5e7qVwsvF1RPXjDxIrikWiAgk0sk5Ieu3i1MFL1oSLcfk/8A Ql0tPbLqpHlLvw0jtyI/Jt0FTnIOITd4tTD6p+g/N9w/0WuzZ0606xU15xUR0p8V4tF8Fe8mHFhv E7tTV4ddyj5vgEuW8LXZ/YLXQ4ACwA7BA8eJ1N8H1BxsHk2+Cpzl5D1xcWpi9/Xk+b+HMiKbTGWF M32nCaUvQMiw424eUmksJZNLOxThkrE/00g8dAh+T7i2aUtMNC3p1400ApKQqTta7OeJAyyYo5mq HWfEJvYph+4g8R6Qc4NLB57wtdoeqWmgU/aQriK9Cp8pURkosiRQQWeqHme7Ek5dqY/EvDiVDxnh P8Vrs9E9YaZpuiAtvEPTuTTvr4mMSftDtT/riUWOakuvWbkdDPESxlPKrDoJHAN/l/vL0ToKjsnz 2fFnW1LZ/ibA94qUOHh3K3QN7N06IZ8l30HEq4hzHSBuuzENFRAQx1YBQn9idSLk4DqFeePl01HS 3gqd9m+LUweJUDHVL2Dj6qCP7MwpEViKtndVImCxkuahu/CRPNNtxPT1a92ADuomwccDKlU1N6mr cjp3QwT/AN0T2J92HDxBNBgDbebkYKhuM1pWb7UDxZ6WiuRJSZptmeJd+rXhpjzD/k/xEddx7JQX l5m7NFReOJUBoAL0ArTUOliMUN2GkAScjJPm7viVCRLXVsOPLO0UnBk5QoGSGvKye1ymW9QAQ7XK /wAER+2Gq6vqCsT6jAqXNEmuSOSD5f6tm3ZQiMR4ks50wDe8M7TaQ43vB4o21MSa+1RlHGEyUAhx yyFxfHJynA3BDXC11iDMkIyEBoskP1Yk0Lh/BJMZmHM2LvvDvNO3XjwgeJuDsToHt1Qth2QIpLkd YAs5IBXbUeIYK4w4i/ZrVr6DJQf4RTHDtnOgZWUPJiQDoW9pyyXuGAUrhPednO3YbLA5q9lWMLbR oeK3+Um2bK9pRVCQjkvhEb4ZYWfoiu3JGQuhqB3GXjWdtk1lWzByZZV/MeCkbbEzdiBaos6xSYUS oTCwsoizo7o5VYUGOvJo5GUC0zI4QQHJrNH4hA3hyRympFjJ0MrMgMrIDLd45QZeTniphRZzt0lT CtAlJbVlW1gZJDe1nFWVslNs0R5VZjlZI2dnu4ZhCKIkxH4rHaIsuQgDDfLPyckMmnqWI3SosAaA uKBw1AwNxXU3AcQ6xwpkBi7Joxd90fVo7hexFwxMMmyPCeHN1LUCrR7X07OrEMomnVlyNuJaZpoN /PREW5cv26ASHJdUJxHQ0Z4PGUxlHZP16z0TsvvBVjSx1JtxoQCdysNvZmKkpryo+uIfDgcmYgwZ /wDljBmv2QUb7NLVi2g2PbM5G1sx0SErwNQ3YZ04rJN8sljID8QkW4ELTjAHPZgjNo5P40mp8S70 ERF+7gE/bTtjP+LV3vHgIJ2kYTpd6w9hu93YjrKa+Wl8+or4Q2+5Gjo/ETVN0gz9C3pz5HXoVTN+ fnz/AD840TOnb8BBiOxX1OZ2CrP/AA54ypZ0jug7nZs5eSni9F/r9Mt/poP+3UsRiiFb6b9nNjvh S4rhWqRBaCSUZyMpaJqncxX5ot+Y8nXZzXe+lkvD40JR2OX/AOo9Znr6+oKljBphZ6dKFPBktNF/ fIQw2Sl1hQX9vC0hGknbSfFmWFcFmkpOB5Q3wNpN8qT5jQl6F+BVzR+ej7eae7+3M9VPExpu8Bbt DW7m7oEjE73dUHYJVJcjEYhC6NdpBB79RzROHCMpQNgs6P0GuaN/HA4mnP8AUsdzyp8gk23ysH/4 RlqFyLZZvPw4lkme7HESWXJEyJaoK2Nxdw9j+UHmvpT+Jdl9I0Urxxj2V2H8Y0OYXR+tAFVjPQaa Sc0khBBb5iCKi5pGHdgcTT2NZpjoX9OB1UrBtqVqK0gvPBxtxVMuR8LyPmLwiE4VjRtsQlYnj1av zmxD9utPEZNOWIcgqe4HjQ8bF5Veyoz2A1byhvCAq/NKIqQ9h6scuYlqnmW+Hw38HA4sVye1l+QV NoL3YZrEy9EtHjE3IZOQsxyrbS1s3DKIT8WU1MPunx6tLi5znb7d0cCei05aa0xvDeITOg+VLseB 653QIoIJMSTwtHq6PdqYQ2/EehuDm83f6UnYGmm0dwEwslvaoroIqFfFRWci3D9mxIz5nlFZHWVJ sv1UXZ37r5TxA5RiA6Leeu/aJ0bo1fi9aa6G1eVKQTL/AHp3pxDNS40+vCKfWexX1EeXGsLkVI0q SbZ/a6O6EWA8PW8jo0N4ZsKF8+IkVjIejfJ/C49N4pc9XrTL7bgn/wDRs1rHia1m47YtJ7oWNCyc TXYc0bhBDSDetdRUQZh3QHFPlQyIouzkVrnQ/BNI0kKrEabV6qWZENmudSyTbg4bkGfqkuIhfGj+ MQHHhyHha09wae6ZSoPbst1oV41MNmBDc8nl01GjabUhCCavcinkjDBDHKAVmN4dt23bOpxhNkwt amSAMsEPJB+ZWUIZQZOwVIHEiN+7KJYF35gg2+j3xwkWiokrkVLTcaIjLjxUn8YXn46DqQ4HC5Bc indd9iKEjCuOEZaO6wkABhuERGkwhiTPKTReFQlVHF6oj5l4IRrs2rq7+r8pbglh0Tr+062xasaX hUBUJhYuvHUtzo5Qo2xbaZ/UtxzEW/769ukIDrFf3OnAlqqU0jSOaJ5lnbhJrPz0C9NC0f8AYPop pmJf70HtSmlhxeofvrR6mf8Ah/XGLIjA5YqLDcLwyZ1Q4zLPKttrkiZTRtGbaYf4lQF7Dbj6No76 VumwfcZ00XqIjPgyyb07+zTRu7c/VMPHm2Wr7NlCUV1TEZnoxioIs6EqkjLzPa602jeeaSZgl3Lg ijyk3jr6KVumxCiNXIKgRXGPC4ynrw57NvM9GciYQ6bjXw2deqVGcvLg0+i7doe3lyZLMzPy7W7g PLh3WAyVJ1w8h8XayqQ/hIWd9GpvCAz3OXk5mmqePXpA98BNzt9xftlgM5GRgymse0LZ+UIZPh4v aOsF2vdb0hu7Cgf8tGy1j4aQ/wCeCHbT86WmOmuheOg4UAM1YqLjPiro4eIljKOqNtKWkcElHBNx nqRPT699CAQfchhnvxnxGY9ReRdBeCWtORkE1jRvP+Ohv241yfxfOL6U6uoKSYlui21b65X73gqW mQbhx3H3+Nu6xi+InNuGSbH1jwkjE+O7YoZnC9zsO13D1to2kzta68tSQ2VFVj82Iwfg8l9KcHpT pITWqzonM2objAqE3RcTmk7lixLlMgqn0H8qG/ET6Uhiy/ZTnficTs2Oq2QXImK9yQkeCW8IXrSw rRCZ92pjt46b68usuKjHb/N+ImzSpphoW9PU9KHZtLLzcasJYgWkwqE1pN9Lbimis9vN+5vjp+Yk WKnkx3O5BgHPRl3APLjZRcZcm7ntL/7oYQN62xaKapNVLwCYEfiyKsNdYVFpnxCE5oS2X5FBdAeR ccHw3gkDiafnQPIvz9oIZq2kI72b1lwQdjC6oouUu8llLeh2Dmnqy23M0b9Wr+01Y0VG/PV5rNPT Fl+fuul4xCjZFyPzXcFfZsjTpIsFDl9O+DjhYUNHK+WHcUvxV8m/jgh39KZ6afQfEQpR8PLSEcFg qoJUaTDbjrD8TnfhwG2zWS5mGqYiHcr5N8n9+izs5GPUJ6ejRgJZrEDx+BgHHmXUkcVCveBp3Go4 UuYreKikq1KC0DzOtGRRiiz15ZihpgbVlhZTcwmN+oSLFRj+TziaePNPkW9NuynWRYzVzylZVsvq vfKl8T7DE7/qLiHqwAerfTkvi1pGgw5aC5DmJrAilC95Px0HTpRpw3RmS+SCpcvlwxx5v48l9KR5 6Bv106kOxpr1evWHbO5/h82Eq21RFzQmOq4nmv78Ps6aawHIHEgeMbEl5pPNI/02gE7Jg+eh66I0 OqOyqosCGxqNkZND0k2IKUX408tF+YQrQ3Br6XS7ORe6mkIS2tVVquhPQ2BDFkLcBl7kWs2ezZMB z9LXfDi1fk9J+6JPfJl0yPaQgnH6OVvG0hmDrMqaOwoqKvKx7mwTGNBZhoQTQpvifJ9u6OBMGr6g pZKZFqH7DKrLcs2KpZbiRmdyvC0Iro92qZ+XiWFaGHN5u6x0p56bsZU2zEvbRwO0cGqBRnGnx9y8 x+12EHVrPR+7wFiCLsOwfBZtO2LCrB2+1JPeTba5J4WZYmrCKmtlBVBWkB+oSKuLnOdvjs8y9nXu dk5icqnA/wCCqr3N4kQvJpbLeEBYm8Wtk+loWKEy3wh+T7ilzIilCfVueQ0xvZLclfGCFTHVc+W2 BaAg0sKkPkd7lCd4qa+1/DyGirmGjEYId7NFt2xm03Sj6KvBVWG4/wBxuSBUYEImqLTDe5smjAmL zWQuPl1aY/kxEBu+HNN4Wuvloy9oeWlNMb4whbqtILiOs3VAiBCktxneSOlnYwFDaOsuRMQbi0fX mKtPhDb8mw/3F5kRSD7qAuUoMxGjY+FCLcaL7g4z0H8cEY4xk1m8z6ouzBBZaGh854gRE3NZpj0d NNYWhIhLhyPpi0ZaacbtTYoPK9EaFdlqDjwWWSprzXlxEtPhd0kDuPwZdjcQ0N0aLBy0Do2jvjlH KLkc4oJ65FRVmYa7OzJtt5JOXkxUFLBa8RIePpnN6AA7p03Yx+63r/8A5/KNIx1KpW448Q34uLRs BYiqlJsPogQrhI1bka+jbDWibdcLjWRi9EtrTuHTSOC63x5u8eciICNOYyAeqmH19krhKIKe+HHD lSdsSBbeZE0nM1jQZpJQ+Olxc0b5xfRaY+nVSUabV7bNGGchxUf5lwOlh56Te5tYWVJMaSZjNlsd j9U+VO6egW+md0GIURlhUMMDujP8yjzVNJHC4VhZUgUP0Khoc9GG+3ZbdfTtp5lekFt5iOqzXum/ cR3kaNGJg1cOHIPmTF8E1J1QxWTB54kFJSdC9K+BKI60mtlBS8fHnlA4vSGsNtLwTVgi5Eu9a88J ZrhI93oc8PSHw2A4D7f2UyevNWvUm2YIqr4exkvmffhu+A7/AJ4deE9+vowonga8SLVRkdK4AyZR yvgcHEAgp3p9nVsljjRnMS1BzAfwHDuFeVdIWy0ySRrp2HS9OOnY1yeg48IO2tbObgeNq8iySw2a mGqEmG3TaPdr5dqpoWv3E9L8b83PLBD+K1p6/ZRg7EXAEHrZLb7/AIVv/uXWgEuKkUM8dhQ5eaYv JfJ+4mXFVjhzgbs9zPx8g9k8DJsVO5KlPB8VFQDtX3RCyKDLFJKeIWs+mWvoPEch5P79KfZtoU/s S6CzlKy1Z/SUpcW4Sx4SycUDrPiGCPz8a2mnHv0YjA3R8t2sHLSXLnkaOpRDkGxHIxfNp2JzxWGG 4GquJSbAq2QaRkuGJNw6SIzbbL8a68HHqKuaQYOBuuxucyOvnwzeZdAjqTVjGTeSxBaP0OWA9m+z SSWd0TVoqM1txMhpfg+G4VvnST/dbmX140IR2RSpi5HiNLHZzqYCiiKEL22qIzD0IJLLkYz8dHh5 9PSFa5o3JwN3wGOi2Ahr24D3WWGuKSoXatqGAL2W0YOTDPixo0stt8kP0IhvjRvlAP8ARa7P7A4Y Dtl6SgOobxrfwEATEyRNhL3oB/DoXpQdjDnAt7UVl2JsGY8H7QsAnGpO1jMM411t4OyE7ku2JsJV S5fzqobf5v8A60tPkW9NmsZ6IZ7khXacRgqI4aJMCLCp36Tjc07mTmy+1T6cMfDSBxfSlp6pByGe ONM02hIAWirE8cTFo2Dig5k2GJsU0kViW1EVZbeSgZAImSg5DMjcyRypsLKEcqsDKyXbV5LKeIZO TlZOVljlZQZEuWKmBFqKqT6hVqG3Zdj+V+RuFuk9GrM8S1Sd/TW/5n3Fx5zpafIvfsoP9u00GAtQ 10AHPjWjg04mGP2H3S96tx1c17L+OkTiudUcIVvNIgfH5jMl/wAH1Rtqi3Ctw55pImAPnrA+Kjf5 v/Thrf39Y+/1K/g+5LRkAIgxAg7HBuqRlj8Vne5lFgnpIxnaOvTRjrjf/wCKYTylswDH1PcCxjeJ 1nV8Wbz7Hf8ADl8JsUYTPMfiTtHwyBZTWw7VTDiVcQ+c8P4h+fDWdnTjjKn9DizfD2vhXAeC8Ocx 4wa8N2uSWSiQTu3jS5r+XeI9+kYLmvWG3dwY9jDakRXfaxgzZVcKaoVTWXYxJizFOFT1JraakogM QRXVxdWkPLycjLb7gaoIYCAZWRkZXaj+Fk5OUHah/QtJuRDapou43GeLFk8ocz3vv8vVMBQsdXWG H7PEzVhqR/uA+MMIBx2eC1fauasFrP0JLPVQ/wBgxHtLRJVIfttpQ9Jj3cl5rsVG49BDQ29yoDSx xrqGMteyQYU5jTsFYCWLjRdctrqQWjbT5Ypkm0qxhD14zYzTUgyckO2thRsQcoR7fKysjKrK2FzT rNMhHKyat9PipyJhlH77MlaEt2xajlUwIshw4NNtZKw1BFVnYx0gAtCLqY+soF1dhkx3wIDoC3NG gRXO9waWhmmeUIDMQAcnKA+sMSy9Y4rU89aGBo2vbUKFKVmZkOT/AJNEJHRj/wDWLio3x+MBxYfi uhPyLwk/X0ExAfSD0YAAODVyDSjAFywuAbCzkVJXa37qcvo9vZG6ex5O60zatfTmtKWhHGME4As5 tpsMYEuBJJhDizzDNTXFwAyYZQPhW3soRf2VPtgyslq5LwEADJyn5lZQVgBkGfWHslJqoZbjAIhD d8GiaURJxYcKOjKSnEu4vEv0fbn0WnpptoEix25YmWx8t62i43qSg9FGGziTIeMZlNEcttsiHDEF JrHDodC6FSFl5ULwb4ZOUFUDWq8mrePaVeQIvYawaysyyjDXEalr4ZzEiE5oflfhNzNL0c53A3Wn /fVlYAHQ6kCCQZmgISUsTahFaEh2f+sepi/f8VRIKmurzi+Yr0PNmBFgsTz1YbyscBSbL9S/nrXy gnr0p56MsNk6N9QFeGlGg6Tdqxmapp7BFWOCOC8jeGmOuYdWxlvQNW2SdSryNSjJ+lR8y7Yf55fb biYknOUzE/TS4uBMP7U7MNPA20+LFfI03yL/AD12qBU5KG8bm9xbrnxIugAaMN//AILeeI0OICgQ bENC9Nx2j3xmiw2cqEc1EhuKtepJphBOJZ1Hbxvi0T6pNwIIjr69tLItyJxFYsl2gEpyV+crDohW 6NGkkpJSzAUIRXv2cqJbJjhQf8MXI44e2tHwhnq8sZWEt4KiLPMrtTL0vrf0/XTdFsVSIsmzTaQq C94uR8KkK1Qk5HCU4tuFLXeIf7Pt3XyWw3baJ5D7rLZml3UxKQLuwFByvSluMET98LtR70wK/sP8 N0tnxHeEVD1RfaiVbaW2GG3kkneTmXnQurXiLEdHw4j50ywv8Omkosl1yGTt1xQcde3LydHdgjId R283pKU3Rx/K4hcEwHZTQHYr+HTUF41DcQyyksGibDRSZs34MIeH/Di35ugFx65Txwphfse66uHO yJOio8JccWjDvzbxpx/x16Bw6d4Sovl5eampfLyWHWc/tXSwNKOK8fCDUzBlsehoUAcRVI1FWr29 8dFFdU16CaT3i+JOR8fIme029xkloI/Qfc4g8t3Tq2YUyPbeQeGs+Ohxv9cLacGziWdYbTSTkmy0 hvrj24xHnA4g1Pd047t1NoBw6PWmcxLllt8Gifys3qIbtWDfb25rdVMz2j0xKR4LRYQz1epRAig8 mGqHTiuUJ8ZkEpBC/r6/o/h00x365+WQ0tcwCJNCWNAxBe4Cfz86wiUSokm5JPjA77ezkqKiwzA+ vIvhtqRdUcjDWTjIcPKVTFUQkVfQV3Qdc/7D03aztnO/+QVGfsNsTni0D8YGq3KlTe7AXmelLTwg 4rkwcjGXpBx6tXGIi2AcWwAnpn7J/LQlc3FjseMN1XgLkeCA8GGSvY2T4sdiXfS+ghqxcGid+TCf LQerVEOxU13xyRIItR46IqBqG4C20k2THRk+qIT048RVxDlx/wBEsRpWU73rXLxXdYbzW/8A1s/c TyvDmW/VPH4R0AJyChqTbUHHCSoNRIg9mfLCCKtykfMNErx7cf8AODDvAeS3PRljPYGAR+xy2tFV +RGeEAY3s4tH6E7Xbb87m7tzK8o5QlYemkhRWOuAIuhwQ78BujuWz/UIAlKhgCZw8cdt7NyuNQlj el9+96HOLHbcQ+GvpBtDSnnoygw6hRWF4gQItEWl9PmCQally2QKLE0o44elyI5Fmi0t2+QGUurb GW+2ELP8QRuWb1y8GXl5Ha5csntpA3zD2sP95Ne8U74FltO7/bBNY8FHi24GOBVarjMxjhMvI/xb xjafGTmaSp8yvhDl09IT5+0Lh2K9NrydiiF6rX97GHmsPxz7da6tXD0/MewQxljQO8SEc9o5GAi1 b7hLEDRtVORtg4rHbtTHaloSNMQ2f2Iik057NPadAFjln1DPsoWb25UVBpNzWCbDO5ob1DfqKK9h L+vN9Acwsl7sl3v7Kb97xMtcbz0Or0u93gc/ZkrXa5BNuWb2q3ISNJyOB0RVdB1hxCiaT0kTIaOh iIvHr1Y7HnygcXHei+lLs5l7MaQ6G8Nz1zJ8VItupbvh0I6WdWHW7OMny7f0Kx0LzdwxdPMsN+2l YdmetgQBZEX7O/AQkCMcaIXwrfi1CtWiHjZ6YYrqygIK69NB5fG/ETiOTIDttC2ZMPwfwQpZ7VRn W9mujxFdTqFNLuhHS1pYiE7OMlNeVLkv7kMh+UH6qy0L9NNGTD70ebXFLjxce+xFSTmRoK0IHfVJ jKPZH6+KkWbN6jZ6sypDsTng/XcxSJKHcMzayL5fjXylkcldF8LjflpA3sltjN7DzKDKABkOoWax /Adj2LYQN9KdVemx+tAKjkdC03Gm01jSSGbDVJCg3LfnNnSLiPlu6cWX66R/sjUTq6D9kaICVBav cjJ0ocjDRX49r4+Mx2pa6tTXdOFyfN3+i1p8iqSCy7XV5yzdC6vZ1QmlnAvM9LOrDiNkryTCHHWO r0TaobNlGJwWzN9BXRi+69e4Xaj0EDdKHqzo7Vu7XqD5cewRR/ZFFJxrzWh+8YmvjSSKGniWBNvF DnJlpNj5lY6GGrHyp9O6WyPh01B4ev8AjRg+vI/fghykczSS/WPdAbvqejLpja3ITarbgYsNxKr1 JbfAvBhud4uE4TvJTDFfHlwuYaP/AEIawbPRLWLJ4BSbhBxwyryxZY0bSjrwh6rcWpihJF+Y/J9x fSnrlQqX/Xu/+WB//D+uMSAeLEHv4x3UYPrxP5XzkcyCl4avOBvf76MsJSlT8Dpyobbc48+MiC6m T8LT0lU0FLwHjzzgbuuTpHloywHrGiZBHhq0wqw55Nugrzwhk4eLQPqgj/u+4peVLT5FvTqpW78h 6eiRVGO5i8XdC8wVFU7sMMiixo2pryWuYLqLjzf0s2unFly34U3wPFTPyITHYUVWeReLq0/huvMN 0IqO3jZy8nMQVF1bQLhWhw0ncG3Qh0jy03U/B+PCMTwhA6CKqxjPcnVCapc73dhNGUnMfS/ES0ua Pzw8yHSPrpF16EsM23aCge8YSMe7XQwzmZHGmrHLtcpBUvpf4lXFxwa3Fo5iGGhT0pqhyVI1zNiQ uQkrwTQ0bdHdIhO4ZpuYKlyhfv6gOIPQy3pQZXskaMfdGJP2h2j/AFRn+yKyW4+4aOBKcZhTUi6C /O82mUWFlNTD6ououC0uIcx6RxmI+mgx+y/ttDbcX4HpSVdpbNYVugDqSk+DCHLTDiP1S6pde4Ox 4rC6sH4kIaWezYFQm1zoqxvjJTIavAf0i34jKW6mJ+zGaOVMS4D1DVrzJnNWG/CSwrBxkB9U001C uy5QOLf9lE5/7YlrObcep+fnDBP/AHRJ0ZPuw4q+xNU8CnxJrxqM5zo61yRP1uD6t+2fVTSEeB4G CsUK+vr++AZ6p/7B9Xt26qR6wrXJSbZGjQrLhH5VGxr3OrfpRCRQC5ejx59mudJTaKR68nZ9iguH q67c6bXE8h4zXgvpA/3d6x699PGCHkmtQfGPWPScR++PhHrK7xfEN4VKJFj1BZSFUYaoTWGmrNvT ZsxMSrlv7Qt8McOcDdmh81v30zCxYBQltdtJfinYfQzEN4rJACsPqxy7FbIcSaKl2+VlgNlp8rwc o8qeUPxXu/Ly3sGT2tWGU88irq8nJ1d2NOpVXhGRvobVr23pAglEtFRyjsvnRk/xKv8Ahz6O+sfs GxZXqVVNrVDgM5TTAnMyOZrfKb4C/eO71jghmCqUy6pLlYFDxKdAzjXuq0WCWx+k5kOkvuhIYgUo kN3ter2EdwqoxoswVsDM1MUHtEaN1jmIdnFhlLQBVKceSMdIRZYoSFkPvKYq64cV6HouDLy8h8Nd 18tWXk5WVkiIhlDMEMbDllCz4/GuuaDxsckB4jI6oSbcWGnEhmqTZdoapLnJvk+4hly3azsZ+mjL 58sLVOnVRZ1eCG/YVJ8RrNjj7qDPNM9rkowQGdfOdBVLlQL9EUNwBr1T89B1aZAOhVOde052P2HM MHvEBVQ7W1maDlm+KCwpnm3BG0ysPJtqaCqePWWM23oxzjDq6dtDZRylDu+6L8WP5eUBTTbx3bbx bw98dFFhuuSgshWb69DqFIq3zUK0s6jlFbjJTIJa7iF+a8PV1zxoI+3JauSoP2uYkNVuMDRt0Gm2 qDGx2cS6cxLYehaAgodxvjnPD9utO/ER0A1mnz02aqGIsfoJFn2VbN7USq9MUkdAgmwySObSVfSR MUEu5fDSEueUDdnLZ6J4CEi10vQdhjbIjxGJj1Ba0PaIVFhL5PRCOIybCCzwloSKgIPEbHHlPECI fEfOnmWy8Rm8saF9GqC4dxqfeTpzgOM6o8E2AjoSfFuLen8LobrxNUOs+GWeoylF+LQbO5Whh+L9 u4c6XZyLDyClhSEd1Pu5Gi8DmqhmYSwfzPPmHByGXGSmeVPnpc8p4wxEn52bA6qQ5Ng/Gm0s7YkR pVYprbbRyqxmUSIxxjciMpNlpTwuUNekGvkQ1mns2TlSILEf2rD6tfEJLKF5tIzo26CT8tSuG5k2 OcS1RC8OojGx+J+HeHNZphpo9A1jgEiMeWZj2N3Wu2nl5rpe3d/LGoND2BAA+XqH+JaJESCpOaPZ 7STgKTYaSp89WjHw3+cDi/otafMsPQAb4sWxaVXI/Hg6nwRMxIjByD7lbIbxMU1MQAkvgu6DoYcm Ift36U7JSnQK8K16oUmajmEOvMrbgXid9ORWVh8A46tnroUjsZrqfFdEuKDOhJUIiksKmgZJyPdw 8ZJjDS77XwFaXUMOcDiCXIlrT9g0GmbAcu81EMpe/f8AFMGoWK4i23GYXH/UDGO1QaJqq3CuE7IJ rKk2YaX6i+Q4+T7dxAXvHt2dbC8y6c58eYtV6dH0wuWtoHmYkxQiMc00bbhh7EjubwzQWvcoXCis dj7AHePlpy52yoYiptIV8DbRj4soMCvTX/Fh0I7XOrFpqIR3SRTXn4uzXgRXyhIHJjVyWZDWaehz LZY6qVvads6wctpQlR0puEXIiRIhe5AOvyNxsm8lJTaSp4BfSI+NH5ufxHyIazTn/Y0abE3HaPfB Uy1Ga+jfsj4ARxYdkgOpSlG1gOJDQzDbUF9oKYrJS9wU00gOS9MqVxCITyQllDPJdYgGUMhygEcn J7VugO/Ick6ow1Ymtx2raOvHEskT0IWEZtKZBLvrj0OP92P1bMJz2VaGMIoVxehCkwkj60o/ZSpD hT0jOJDbeTbUWipXzlAhoi9kxACYiI9qID24BkgGUA5OUOUA5GZrPefLz8MJVQ42SiDmc87iH4MP pfzL04jv14dNNcz+soNw3wT/AFhdLP0SvtMXe+j+cGockVWOru1vwyIs5bRC6Cz2uSbbhcTk5+NZ CRfAq5ybGbi0c9xxo3k3IwDjXLnmAxy4Zqc+SOF4LIifuLFeRVwRkGHnSGzVsCmV4nsNxnIqqJ6v jHC5pGCrDYZ1ytNwrCwpZ+loSNxEtIYt/wCjg86dmEwo8MNNhWTIKBFqx/LFrgOCtHFYocWHImce /oNwdHRLCXTRlL9D1vz40+uzvgSYt3fBUSBecdevRBMIbVhkZLGARx42KPy8swVF3G5V3zf6ADDp nTWDbatw1Qkb1UkR8pROfG01JM4i9A3+3Zf219MgpW8PIPoabEFQi2uONSUjDoSEtFZ7hSSWjbZI CheOt2oN2hePqtB7KVeTKl0N0iWzgTg3O7SnFt3+nyfcWH10GmZnj4fTi1OHwJlfw93+2NURIeDx eHZCYXrjyblyPFUcll+beKOVGUr+ncFxLSGuapuz7N1CsdkbqXHA1B7qi4zobxih8qLHdBjZZPuZ ZG4mGheHYnQr0f1OJp+XDpdnIp6bA3AIiQ5IjJttKz+eqHUiLbwS23Zfc7OVjjbFNTOImWgLyFpw h/8AG+iYctNdOreDLqSY2QqMIcMW4WW3xFpHzK0hE2JpPSRstJUHiFdZa5/OA48ZMiFrTmy2WytG BlQGGEcs9dHJ1Ly9XxwsvQBslxjs/mlhL5Q6NvJkxMs8foV8Qrb7k0nb7i3xSaXIzeDMpZEN7VEO YqVrxPRphzCVNeBpyOhFbUY7nWVJskLhx+NVDb7k5QB9KWny0188hnSYRPs02NLCsczGY2k7Q7Si gVWNGCfxbs3RlhMPx7cYt9yfGBqnotun0Urd7Qx7H5Fp4t/QeKhmFzoXieeo6srM9ZgmxnaqB8+s dvuT4v8ASxxgHKlpDoW9JeRssW8vbu+CYXzOvf8A7oq9yM9cgzVJ9RXwkYFzRaWFQ6TcWniy5GNo uhIs0JageuN9x8oP/Bf1dGPYnVITli1nkqjC4YkRRRfln00v72350jOe0ac50SUevhUfh/CuKjqL MlPzNUOttkaHrN2H1RCROeqGE+T8/oni9JAM9QUPR2Gw4RrrL8QCJE/eRdBjw6MzmOHHqKgL37sB 6d1NEYlP1wdp+EYG7Jw/HGvR4iBALh01EZ5VYa7oR283id26WuheRUDjp8aPfjAcQ/SwJ4+rNEN7 MbHgOsp74tCnltNdCrdZ2G9ntvOS7Xy7Uq5fDUVFsPxfw7HzW56YemhIbeDkhXCu1q4Hi3Yc/wDK AVGGwlo5HpxEkZSTIaJfH6ChAx/N9xaOIYjpS7dvqpi4nCWvXkZZirHF4mW3BfPM+OxCcPGT5dqo GFysdC/OA4vpTIfYNPMxM6cLDXlxq1PqhXR/vjm19Gfw414v4xtCyVFTu2Oh4Q5i2RuQulk2u9IV 9z0ktNtsQ0uIQ46Y663vxfOLjwR5Wc9MeeUqEQiosLiPDkvDKKkQFJkmFUmqEob2jzbDRrsaUUPA KEtPhCGTYh+497p5HMt6bdDaCPgDaWZ1TFFPhzXsAs27K6823QirBQ2T02cztG5eekcFyfKD+yfI tl4jgI0MATfh6DKyz2AeIqcfrO8UGG6HOjm+JokPlhtdC0fv1FHJ/wDsgIM6OLulHnroV55UCDOH s4fs1jfHJtaWtdWxIexVM2bI7vGEppwAKo2H4bVoJM28z460J635i52+4vAbo+yeNKQckWlyJD4E 7EZ4ojkUGaw2u1ySuUbaM2xPpd9r+C5o+HKBxbgxxwmG0j/Zi+x/MZOdMJ7XrAqHvEeyuppCXpib hm5EdxpjSa98r2VyGXHCOk2U3cQAWs6+2BlivtgJjlAMudCE1alVK9FGpZ1et6LlVjMkfSE5xnda Ff8AcQT9OrH20PHQ2D8OdyB4ad0LfvWBNUZiDXw7QGu2h8TomGNuThnaoJTxqE1SWM8S2ww3to2j SIXEtfPmwPVgMg1Uf/4aUTm28nguONxomg/NhHKJLbZqapryqhDxFcfJvrw650zvA1Yg6pQ+dDOr 69yJqwvHOWDhNttGUsw464iuMd2kmH1UnC+TsvMl7pDcqIcxjiQ+Es5mQJJR4IyleCruuPzj+i2/ fsktgyp/E9QTXkDxD2B7x3D9Jmu7s08fhF8KVumvTUsw8XGRdqaYXifehQ2cRbzXkr+o/J9u6sem e+lwQHJvGJxBPf74QlNEL56qHSd7HMV6eKFJDDydljt6pDSANuDLITYvs5DXLMsUe6gqDpO5DcWH isqTGYSWEuOlxbBt6MOBw44NZpyZTMxAJiAyIOTRyKaQuqoqM6TypPUb+a+rrD9+FPMzMkcRoBfm PJuVu0FysuxBOhHvfXvFDxrYRn+J1ddsNHxUNWoK3fmfHDhN/l4gHiOQbp/ZQ/8A2PmtbFTYms4w qj41SiZDl0IyWtQ1iGWNinNcFZdWXBcKKvPYByXRCGMoDIWS6AygZghh22SPIynOxHI2uLDIWOA4 sa5U4lkiaTMbzP8AHWpd3y2B6pjToQ7HK9nim2Rob6RoXdbg+Vbaoy3g3iiPeT5YaWhfoIPxwQ70 cx0Wnpoyx88qaYOA+9gHgB/6xhfsmVnt8WY4gp6qqvhyLcN34dz1nOE2sLKbcLoQvnzU2G84phMH S0uenRQI9TGBcUoqvlDXYqv9bRzSPmRNvKz8WVJtH8R46l5Ph6fRKnaRHhnuruD35AhDhvaigfme k7Ph7E5H7rKmw/1H5Sh3QIdDtazs5aMsdmNOQ+u7I0wGfFWLCGq2SbMyanuhYzG6e5WsprmQFTG/ bjXNJNJ2+3ZBLRbV9reXx5MSgDAGx4u4elePdw4gTOW/e+lg2ZhpQi97t86l4wREe0VaThNFuGz+ Q4priKsL8N1REzp1jpG2V9iX04AXEV8IbgAQcDenlanYGVPZLWE4V02AFqIykaAONuWVbQIEs9JQ ncKzdtmeLKr2wfise7gD/k/xDdkx5LO0QZcxAZs2Uhoa2A9kp7RQZ64hs5EYCOVbdy6PNNXWVFsk OOg8Bobglo+3dvvOkXhtEIigkDFRoOwHsYA4qZ53QmdpIG+SGID6N9F7jiH7quw7eHiO8iN8QljB FWA6M8IH2qGctuRrtdYSz3cniFxaptLiWV9QrXMdH8JcqWnyLesuidPUh8PrRR5yMhQYEfmcWi1C bPFW528kjdr5hKl/0HvjnO3w1ADW5l09SOOI8ez5jxEDwSzsDjkd1q+0o8rQsZgMOyI0B4EJkPiU VjIZQqTt06AEBCRXt24BluBfajdQ1wch0ZYjlhkyDLEcoBysrrcTXg1WfVKB5cry2cGhzJHKG5TP y37/AH204oexidkOs59jkscPCuVSKjFG0RGOI6msjDNp5OSlggsRBQwQERafD4XhHJQAAVtdDRkB /DD8MfwsqVJ85OzqWtn4qGFxqs6CcJTBXvJnm0ln6bOYhIZcersQJ4BhraAbJa6Y6NNTBDsAD4hw /jrUuw0hn0o8D5fKDQxmj/XrDiiA6iKUWaWlCxmSwUaZO8ny/LimgoXHnOfZzWpyb9knhklw4jmj KiY1m4yj8Tm13QHE0m/lDdiep32KHIA2OF2ZWUOW9wAACY5QymNNfo/ZDoqEzRevcbcZLkWFQn8r J8WqZAfHtxrjfw9m/GmV7TiarWkH4WfBF4lk14FEdLRdE4hOX5eqfQd8t/kw38PJZ2Azp6g3CxmJ ZpMWJbWtt1zVy9OVNbws6P8Ae79W/K9uH56NG1+xO5jUwgeFeXVVJpPBVioJJtuE2S5Mr3EqByLX POHGc8aFZqa6vrV4yYIgWYESPlptJNnOQz8S+n/4pwenVMaBwsFON4QjhO6Icv5gplQjqsXwPClu A5lJr4PukUQEIUNDYyCDsdMQG9kiui5h0TyZDlN9syHKyJCJP9KlWuQS9Q42c2zMHzRxKJI7siac WVGJqCl4X6tMdjt/S6J0ml50uzQ56e0KDy+PuypBABSSNOXB70FKcOZMzLNa9Go7t517bt3WugVJ 44fWa9gEbjdBXv1+QncJzixeCY8dIa5vw508y3oHP0KTGHsPVx4FViohW1TL3b5XvKJEEVYnduiW rx44B0Yb/wCq3Mx6amEGuUQZMWmrGB7o7Ar6i8muzSYnSdppW4tU4LMPCa0uaP8AxYt+QB5Wci3p hPGkGjZ2QhqurkdDJcZOkDDOKjKZ8bih1Zbam/NWD4hVo33Tm83XZ5rBpiy5+ZtM+s/8P14ROjnn 5/ywPeJzJbjVtmugjDJcvtrmiaWsk5XzeaCqLrLmustcv8NJ9Imm477HGmuLfhxuNWxRGAi1TxbN 15tte+AdoAmOY+qLq0geA9XdAcQfupV0SF51LFpGE64/22iMp8cg2u8NHlhGcqYKogrVw30hyDHw 55WdNGjswz8Q66y014V5wmGXA14wNfMzfjNQSxRV8OI/o7OX2BRYZl5spehFb17RY+D++CZiWaUD Dwfj9ad4tEP7DysLi+zYwcBUZsXKvFhkgVpD3gl3KOraLi1h+3VTD/Y001VOW/3xUEe9jCWTjxM2 bxzCa3Pbq9PTrnjaFhy2AyLJVmSIFe4zxZbWHPFRLWyUJyhy7Xy7UsUVAxQ/N8dXKnopj+y7Hhxw TjTECJrGYBZyLDxJujik2SvJMQEtdel/cR6P/wB2NKQ9AYUaSctNiXSQaBQLPUB06aceXOFsdYBM aiprTCUiVHGAYHFY3JS40+e1zDj9xejGlLvYnySiQwIcpJZbWFRtujukPdw8ZJhBUBF1ri55QOMM OSwTGYBQe7V7JO4ydUQQ3/A5omEc0Tz05o+sLLbUyHHX0gno/wDs5c66a4atq6FcZl5vwdY64MJV hfJqmkhtWOI3eCWurfEKKx1yejGkTs485U66N8cTZSBQhgDzp/W+ndE6Ny8v+MYIWE1Ve3YznwRr 0ospN9huTSYnmhy7VNBVEJaQPDmPKBu8e/2L3SmA1d2LtNblc/InnnU3DK010GG6WSvYoF5KbSv1 64vPk+Ok+rDSlpjTREMWquLFh22wlJSqZzdhk3QeWG8bJ3k2brAR46v3yfcXEchxHcE50q/sNpxV 7qEaa9uniyarlIbpS1dJvi1Mdo6aeBb85zt/Xi6Wn6MJUr9p19Rx7PyrBcsD0XdYu5DavSDQHEGv upPIv/ltD9T79bcQynGT5QZh4aXENv8AKcZ/zpNIBDz96OZfseNSx/4bjPIvFVuxvGnJFFFvY2cW k3Uir4oXHiBzfD659NOvCD5wjfzweUMiKawE9h3W54qWe3Ccu1MduE0K41zldo/pZ508sWW9PL3X Ti/s9xIVYS210aIyGhllIwgxsfh4m0zZy7c/v1bX0G5Z7uPB1e2VN+YTNAz2HPhe2h0Oj848y46K GIBceWlz9cNY6sIqI8QFMgzmBFqvLGS5VYuWG0QjZO7VM+113iG5e6o3+b/hyfKwNDHoAhzMp0kI KPUISWjodQAF05BSEtF2cXpaEi3D+zZ9VOe+xc6nG8HvD9KZxFELM9UeCWdiRCdWJrKl3M5rUuI9 IA5P7OSo8i3oHop0UVKPUOStMIZ7vkuqd5LBQMcd++Y7usOgVsxMks1Sph9PV/DWoNAUJbUE1rp8 45T+zYR4soQ3taMd/nmOZtIRoS4J6FwrhQ4Sd2WZ2GloL0X+Wj48p4wuLSOXxW4sva/cZhTRAvB1 RCIN9xLit3yabaXnitmd2a0XwKx0OXJ9u9G0KBP7PYvKql2Q4wlV7HLMBvtdn3Kz1codRRTHa1wW vDQ6gb+KGDXwlr361C92TivTapvtxuZs7U9ro6WSFWSWeCamO1Un9IJ807i3dOFCJXpYILB6GgvU M5GhHd3NAvRxN6h6dmlweD6f1vjstKkJOxuYIkajNkdUiowyWvjM/wA4F7dhq6hAd+FNgWSkFxnL Jdn4ih1CkmlzUE0ta0hKE9SWPh1bQ8N/vPAQ32nLQn8K6HKdDGJtQ5GAYS3hpoTNsgmzVLjS5eIk RcQtJP05r9u8gFm+PzV7n0NoLLkYipaH7NYSWik3YrMNaTUtP4lC4kX6P6WcRcqpy3z10aBU0Gmj l5cBNTdktU+ZsbDjGDgJH3S4DB7uaa9rfOJBauzKus3P9uMBucj0FYTDrke5s54QdF9eI8fjAcWv Td08y91LwhvXl3UwoT1CrUKTSeHc2a5JhuxJ4yz+aLgi35qcH6rO0Q2jqpV8TyUTotQHjQ6kpxoi 3AdBZ46NuBvI+hN/KiFcHEqGC/zgbukfmn9tJxA2JDOQIGQvIxiXG3EiHyow0skdaaST0b0D+YtO NH5af4jLSkeWmI4yoL6waa6UQwszMxIH0IH6Ly8v+MXRd15qiO3IgZy0ogFZEme7GRxln6p8yoa5 zY0il5KuwPXSwH4wq9nm2uhxpSjLSiRLkfFiHqwiqX+pVxD8n3Fh+K12/wC+VGdnxCSk1huh8OOv bcY7N7NJpfek0ZRU2k6H1ixdOPP9utPnRsevEADhRnrnshtQqXIup1psWobvNttfPHCrLCypOZBv 0cUUENwYRgh34Dm6R0xenVqpn1n/AIfrwgno55+f8sZviemvE5HeD6VXnk0s6A7yR3Y3SgXmf46X /IdwSD+yzsHdoE+KWQ8OAWK1QSnx8W8WCradCKjuxJAbsdqXcq/xNygwcH/otdknoy5cggEQGkoU q2Fa9Wp6qrVKJH5joSwlkihtJciN3TGGljhct+BjEBu/RZ2yejK3PINbgvKTAqUu41WKiJHWB6qP fhRwk9JYvsNLHYhrjfcgudwN1p+dLT5aMsPIbUA4VmW8lSd2igR9UjQnLGUk71lA+fbAv+x7oNfX Lz4I19epJqOabaXnmaTTbwSx1ovv1zlTN/ZnsxrXRZnqEojdpdLZz8JEwKfNd9IG7Xh0asdtNsWP 65uNtejQeVXGiNtrNdt56ccLiOCmtm60JaGd+Ls/R1bgoP8A7LE8GpEiOcL24x3i0nsDXhvJYNtN YRnImEFRdWr+uW/G/IebnTKWsKAYBUqW6LqSTSpckHQM3I8RG7GlwJpDV3QlraAava2vdEXsouqo TYDp6HX1F9mCsSHQtI7eNk+LL0XUVAQRWlzHlB+q3onqClsWkK49XWbokHnjXmTL4NtsANpOecZk OOkAePB84votgOPWIUPAd7IcN4fJ6SXIrZlQ0kVSRx7t44jXmQv75j0glo94D51B6xpbD8Umc64V RIZzcVbtd7yJqiIT03Jim8aa7kQ9H8f7U+2hwlZvolr0oztTRq04tp2wNM/rI7fgItDsIZO+LQRe vqF1SRFhLJKh1HVShNGUhIXFDF/cdBpB79GymR7MaCYWIfOhcqK8zLPFM7PHjDjrVLftChEOxRwN SkFpR3eL5qG2W0DbboOnCguRZTVMVTuYr6ChceN/m83emXLTmNtpi+w2sVFcwjCUeqO91RtiT9/R uHdPor+YpUnARvJIG/VwR+IcYeStz2/COkCwhE65m2x0pVPPdgOB0E0ojCuMZRt3apgqeARRWOC/ hEBuuzy3azsDQvW+dQU2RacgOxraTc7hFqFuMlEtAGkfMmfFhJJ6NtmJSpMPAekHJhwOKcg7lrsF nPTzCfDyxGgp4Avav5P91QipP+F8L4PqjnWCmZjNBBCRQYaFfn0dabjXELlThLVQk8PYtHl6F7oS oqoalHWF5RHS88N5mjOR8tJL/Tmj+EQG60/OlpctGX9MqEI9hP7qfcIEgkMGWHXwxhLCeGX5RDmG 7Dh8cxDxEi3CEgxH1AIz10517Y0JYAwxtkWiI/R3PFltYeRxUWmHBGHrk5dPy4UUOWkVFxvzbEH2 67Bx0W56a9dOmhq1JGpQW/dXg+50sCffl5TS7l+fPKCe3dP1c59pxkup4RltEVCGYZMY2eluN0Eu 5ObJ9zeOLCS5jPQd8a4gt3SP6g5D0K7IkCvjBGZxxyKtci40rRJjtcnmUN2TD0mssmGcM79xC40P HlFvdLs56a5UH+/Ca4TVNHENVLIjoKuTvNWdh1ZTUwgN9ePNHh14esZUIQcWENSIF8xccYyyPmeZ LEPYsM9ZFzXX4B4jfDfk2IgA0+rTSmZ3UjtxqrLwdRc8iFk5LOCtEzbiWJpl2eHuPFz2+4084+Op RSlIJJIAYOxNOfEe53YDRLSzCvbXR+/49mjr7N8Tn+sMh0JVQhtJbeDXOZicJt/i3jT0en10MT2M dtuN+OOLEOElx9zeH5VHYT0io+EkVlNUl4UJaX+JUNc1t9uj5bume8MMKc+8MbSBFk1sQC6U1c5M PFyX05HCUWLt4rXfHeABjq3T66aosx2wF2z0fUXURhkWf6gvLCWSON52HFnRk+l/PMpc3fKjdrlt pvGXzamIVcBu9vz+rYgp9rSLSUj2yHSlNyodqIQS22w0RHdlz6E+JZ30x/8AihkOkNssKHRsxxac cZoNmCLcI6IsdKvRFeDsbxxGbWfpc/AiGuYdz9u/SkNMno9OU+AYy5T0y05DOM0aYkPiP1fEhtoz 8utznGm09DXImH1RC4huW/OdDfbvQHpoWCFcYIc1KC31xKbhktZ3VDiZ323iaypNk+qamKK5MZuB xS5kNb99B8fLZyW3aliQ19W1DEeZ4cIIjnx7PihwXRrUbBOQIQ01EaxtiOYodON0crRl2unJWcoF xaY4ODK0lcDd/DHlVlAOU85AGTlZIDlhlYdsFQxr4wRacCVertRC7XYbpemdtNtrL2UyA7OI/N2X Pf7p03j2c6qeClaBgw41WGKdDdkG24+0VnFDeVeSj2oLWVfwL2T2s0ARFcyHSDXDKye1v7KCQjlA OTkbsb8SD0AY8GH/AFCsZLGEtnqiKkXT4T498ddISHr9dPeiXNgxPCvdy+rLxSb3RQDTS3CNUR+s xxidbtMxUhkRW3+XS221+W8PeMks/cKLrnznh+4g1C1nYz5vTVjjKDwrs0xMcjtQHHEaHLkYBcqc vpyO0oTRrsX0uXzG3nJzixHmnjrHGhgH6pwWdToa64rJS2XdDyJ30jq7IeCzCV8rypxAK6tQsfDf w7omHNbliy/oPR4hvDFjqRV0ONjxA7rRnPEsk42nHlYRoSxfFUXQ4iuNcb8oYaRdfPXdTx0kaAef ygmZlwbEac3sfA0Irwelqvrq6pR0YvUTLOSH+ZzJm+J1NTQUv9OB5QN3q14S6Mnxyi1UQlSy91V6 a5DDyJqhJnpLhvlSTCGOF+CGpu76EI/g3vF1aUHoVtxcLKDNOcvIevcno2pkFQcJ+bH9qaDXjNZv i28HkYRD0K3a23Qauu52QNzJrmP374CuJDHnADs9k9lNV4xZtGZvhEogdU18Qo3WcD6qeXFIwqNu F98FCixxmQdFyr9+oqGueTzd1NZkTxoejsclpCoJoxaEjjfHc3Y7oJ565M0OIwOZvqg+Rd+a2+Ls 5rvd0/oCnOOwoqMCx/FWG5KOJFSTTEOVhL0whlmV5RMPqly+BLj5saRceeVg7MZY0Z4D26qiGDXL seFcAb6cBUmqHSbsia4wUtt/cx2/yYb8uiX7Nwy2bLEMHYilrdvG76c6F9J5Hy+UdbNrpBZ0eIX5 8wO5vDdvQbR76Yd7Bo25n2qLuHEfm+3Q+lnLR6btwRjkAYjNWtdC4egQpRReDyOJa0Js4/Ga24Zt KSL4aXIqODlMv7de3dSj4Y9lojTehdcPQchK7VAqTVPnlS/9+ODnByc8qds+QVLQ/wDpDmrE5eqE NcIqUJS5o4JLNL4vJjf1z+ruGoJb9s6HjL5oAHeajsxDNpy98DzHRSRMOSSbavSrN2cWGpMaASGq 6nIlMeC7/BgGW8avQ6z+R/dIhmw3R4eQmXyg+M6Ts86dMOentJR2JEmqttFtUM1cbhZpKCXFVhuY 43ih0VJMIX6y/UHgPWI9GumD23XV6OQeCGlGEwyoJegayjqxt+M1yKZC/Qv1irSGDf5McrLj506Y BQmFiGucf8Ju1xpGRTU1RfjPgPE4mUScButdRV/cOM/Xs6A0GYKSQQARQu7+6PA4jtduz8vKG+3s ms5qvdvxUdTOW4tKBVhpZJHhOUJzTOIlpf5aPifKdwN2WOizT1b6A3jZGZVeyppw6njfbeKz7zzy 7UxpJaF4lZCJi2G+3fotq3hiFOgC3XCU+8F6G74SkNEWzDWbbpJG0lWcmhOf8dX8FxPjDufuL6VA GhXRroGeP1kU9H6qMV8P3imqRdrnPjgg5aEWO5vEzVJC+NSH7b0YcHS6ZctN1NMERk+x/EiIzVtG teI9Q44SraAluRLWkdkN5YWU1MupdWrh48XNGuT+C56caFAjxGUxA1MhhaMhm/1JEcEObQiodclk 4o29G9Er90guIUNDnyfcTsuOT3Bp/Ew9HoHppgeGNg9VhWffCqkxGLQucCCTS1pZacTVhHUswa6F 5aX43+TEQIdj506H6aSAKXvaEtLM60hCovDmIzqhuwY8IJxLc8K3wbOXkxolsNCWrhfSKx3zznXx w/Fa7J9IhTDjiPr+o8Y9y2r8Rfsp8GjfNpyOVl60hZatEPiyvGIUR0KjDE7GyzKUJrKamRKdL6Rf Aq4h6NfF/ETSTkuEUmnyMenl7pls4v4AtA9wUSAVagyiGCqxI4UVpipoPEvgXZ7PVrGhAIqR4gQT g2oEXUuKTSjwzVhU7m8Y2QTWbzvRCWuPUXQfnO4W67HGHNV2ci2XsoO9HjlUVKo6KhjtUsmp7y46 WFaIRzSRUPqnECCu8Rjojyd0jFc3z9AU8iWm5kAMQKOCGe1jz+FbmPBqXNTx1inoY1JEnVLBGvPK Sa4FQ5npPNDl28VzlfV+Yh99N4sMIcKRpjwyQ9EmSXNXXpJEJkHPjMXnR+nHw4Ob+oMWn9QjTO7J iQlJqonmDDjbaanmiaoGaXOzU1MIavEWjfp/dS0GS8GcpOMud0chctqHy3vQndqYPiKQIbe8ov2U I9TzYboyhYE9bgx91GPaTYiDoZbjTjeDkQHUmcgmkdnHlx7GYfKhPRhHe+eIyk5kF+oXEKEivhCi AGjDgbrsxa+lI/tpoB4QHXK4qBFDIprtWFMmqZ4kwnkmvkgpoSJx6irkKnB/4TeGzroCdyWqH+jk Fgwdr0QtDcrdZIm00ltApPle4k8C6ceIG9xHy3dMtNOqmsIY2/NKl1HSrSbxbcCngvFEvjbMllyO a9Ll4iWnxLm/pYNx8lpy9IypoDhpWbHWDF2oCGYPV7jgT239dGt1jxuBw58xQxjeMFTEZfizxq8W 2Zh+g3oSR2QUvltPlBVJeXDHcE3O35j9dOhjsb72iND5GWCLALmXanlSbDc5yGRs4jJ2fpfgFdWm O+HBzfiJND5quzkW9BnzNxoMe0tFpqxaZsP4Zs51afvBecio9HgrOFh3a5kFVDxLpw4JudwaW/rh 4gnqwpZFdaoqISuNvxNgRDmLWkCC20plu9pq5y8myvKgyuK/NIB5u8Rzw1fV56UkMGA0F+xh5fCP MGoZ78r34s2mGPZsVXJC6LF8Ki0sQ9cVzNtsryW+sOXCG4PxfxEabkw7qTTD++QU5Z+yKQNY8N4g teoPkbQybEA0jph2KndYR2bdmnmtdWkNdb7k5QN12Dfk3TuHXqETEL1pBDe0aWvHdVPO2yFaY0Du XSFJZ4RaYx9LQsV2/Jc4Id6Oehlz6aDHtORPipFp2p7VtXtVSeyOluV0kiRuHvFrGQUu+l9eXVpj rjg27dFhw201x7mrjt+AgG8Ql4ipLxioqPk5UnmRNWNkuM7r1znsAfrDrpMGfoBXMNZqFxccmmGe Zkzm8kk0acv04G7HVKkHiQokal0cAkoak20cqOeo+djJUBL369XUIzHopHyb2qCWb6OcSF/5X4Sc 3/bn/wAJ9FNstIGZAJLChIBIp1T8uD0hZGiGemuO4S9ehpS3eBomqHSisUR/kGv3AOmnqU+mvZt1 I8eCtmTGeAdzwocBS6JhjIB1baeoyGXy4so6ajRufLz5RIqe8szrZl++TH5Z6ejUGzpDHeM284vH q7GuPGRwD8s69n2YT9VPV1TX4Dslq9P1T6JbpSGbP/jff/pUJiRICalX/wAuMlsZEwxHaO3f7Apc DVi06k2tL6R5ytl+K89E2cHvD31hIKZ3l+T8P06/ZKft/fScE8+rqouHymWGaDLpmMxnOcx37B6Q nSX1fv8A+UZBYg8CD4GDAWXbZjjhLnNfXnr7huqd5OVJKBdr5QUvVyIW8HO326HmtPQvHbOm4ItR ggRXIyAqpSHFpST34TS1pHNsg5pJp4qD4luPRv8AsvpS7PXqpzjttSPJhrhyOch/LChT5r+rAenf OhCLN8cqiHrtR3UebmlrfK3otttulFhZTVNBdFyoFxLSEuc12/yjuINf1zpjowmnNABXh4igpxc2 hiJlgAxoBw07oNg6o2QBgCzUezK1WrH5tuCNzb0ntCFDYrLkYy74+QoLLq433LpO33E0+dGlTTxA eumUF6JEI0c02Kg9CW1E9oTlVe5XIrK1zRITGmlz4iWkJcD49W/rHWMgAPQNXMOOTNeDtMOl42bE Tu0ugVQkrxCZEVFnv9U+eucujHt6QpU7qtCNVy1SOebkKmS9okCTVGwc0eipEqG7mIAP6D0b178N k+ig/R08vL+WBukK5+f80awiSsNxYXm+uMBxvd2w/S8Uc293IjOS4VTFeuXzn6JuwdNNWzGlH9l6 fkOVJUY7OaqGtpj4VVhLeiwb8mVBh6F3DIeUmLi28rGhiIY7qO9dG2oiRD4u8XVBYxDcyguRURXI 91ZYWVJTXlRCRb+XkQNIOcEtodEx1UDxGyLTjjNEsxE1xnjJlQN3WSzT5ha6EioCChIsv1cQw27d 1EglimbE3oktys3BnYPx5QTMTDygA7KPx+te43iHqXENaYqKioEyYzMNm/ZrHHWOOqU6JqmJDxJ1 RgiRda2nFzRPDNDgps5fv+3EBogcvftz1/fWcZn07B3/AF65TAJUg9d/G/xG3AR6frkO+QhupZJa Z8L08PzoO6xhbFwJsW4m1NaXI1DxW1IuV/JFY5eSZs84OtCHZtlS4G3H6oOVRkjEBKTc4NHJA4Sh PiwgP9Sax2++FMj1Nd8ENfUfKQnIJz6Prn17aSCpqTFd8PwGc/luP5D6+v17qFdJ6Ka1seNKankB 8aVEgzDJidUE2FGhqV9RpI14yNDRhtuFJOLOkxBUXUUEFCWgXAnpA3dr3a0tvqUdjGTTxO0soMev r0RtuBeZ6oik1ZwvDQlMQVS+/DQrnq+hb02yCgp2I6jzbrf48yZb5rBYSShz/wB9D9I8MOr0UKhY tjW1YSxkR4muRDTXs31SG78ZZxJudGUr+FeRdVx7+I94aFynvoJmMsZoCckqEAUdqsHp2szfKGcr MOUhqEgNpcW8Rz8m6YIqI74TXbZ2g48UppJrXQSboehO0IyHgsttMXn4uotwoSLpxo2OgHKOfJZ2 8inp0ypxjvxBPMO3DE9uuO7b4bFpB0E1gQOIt2H1QHoOArmLYDVPVoXu2TPQT7JXXk24joaHDJNh c315yXLo84SazEnRJr+AV4eIHIOkLdxHQhrOzTGnPhaMUiBO2HHdVbdQpFk8rHd0HW2UcIACmQFC XBuK/ENwbwHJ1jMNU5UqsuZoqPSySxDDm6aEd/uhjPiVASQnQGyrgBm0Z46x+xFxHfD8tQF2OuQr ZKI32ajvx6tt7lNMk183WHEHEa43/iKcDdHzW5HaFz3Ygcm2Lbpgv2PKCKzH2LVeCkYKBlI0K4ZJ R4MlzRbfmSHbIaKhjlCExEA5bOeYZTNZghkZIZWUIAIFuwAsmv8A4Rlsd8uM8yVJYQWG10U44m8T WW2mSXVq/gvxDGbY5uIeLpaYdYYhQA/ZbreCrb2tfuhxpR0z3F4SnFWGMB0jxYDXQlua69ZecUWH FyomP0Y66OhL9IKSKhJB4WL/AFS7QtmJlktowpxaw0+vPN9qi2BGK2NG50RwjFXpt4KneLbaaSS5 MtJr31fyEy0PUHjznTPGfVTL5x4rhz4DPjJYv/JCntHD7sdYaqN9fs9H20j9dw/CjnG/bvkHs68f RRinq7rfhbyhbFoI8TnjUmpVC4Z8VgTNiT+YvAXXPV0SlqxpdCDHJ/k83vwimvZr55npwoUC7f8A UvJ8Jt/Z6OmmRyfD8LjPb93p1+mVJQm13wvDnqjOcQkM7t95DPpEfWJAmJ0gM5Swa1h3/CJBYIV2 ilVYQVBKQ3GtmWuaOX05IfGxvJMPqn6DlINItHMNKd3kPrlrhkNVci0zU9xsdWbakzzRy5c0Vn4z W2ptLbx73QOTE58yGroe8ZY9NALo5yvR61PXEM8ZLKCXM9mgfkHvKU+nbt2QyX4zngQT69cSs2MF VhLJPC6ppqnK+vDSGueT/VOXOfGg/RhNOTRqmjNa4pxu+g7YJlpjuNm8eT17Owag+CagP+GMEYPt VgV6IZWHQcig57TkPXBGDRrMFR9cQwo0H0gbejGkXc55UeZfRrpl9HhLGkmsp5hnOppIhdmuTPXI UVnIzWS59YBfXJ9yO6BTg2Oieh7O3hrmKe2YjwPio4y7jbloyALJzo418zZEWFhZUmKfa6Ei3EhI tx+T/q9lKngzDGAKDeBBgRis8IjgzNUC9mREhZcjYx1IlxuDqlys9OA0Xtu0Zm+voxvjaD87vzwr XhUQkLwmRC5W6zsSEnukI0N1Mgq+ecm+5NGOVk8NE3gzt/RSv0FnxGJr6hXqr4aWcFTl9OQ27Hgz U2/ksMQWlxcxdG/lS03g8QDGVM3ggMCufpcg1YxWZk50ql6EtIWQ/FmG9/Jfj1FXENvtt2thwbuV jPpje2lEkiyG4Xsrs7ubu0uVcgvRyRCZJJGHitdBBBCZd+N/RFsL4+ew63oOjAzwmEiRV0eLVy46 tMGCwK+7Yfr5zlIbwUlN+Jd9X94clLR3SP3lKmQCbquGqL1BEC0sPcfQHROW+VG+uqK/vgviVMfL Tn1TCfuHppFznwNbw/AfJZ6v2bMRwAJBvHVRhLASujvanh+d7V5L3N3rx+j8YtCpjA+Kk0YPEVwy i3ocz3vXBM1bPtxw9NJwkWiYmk83qDx5EWy5W9MzKKxT5Bfs/fDZKmZ6keBrp1HXsx99UtnTRwqa 7hff92GvZQhOPOdWlKG1NOfwiQTCEsfqg4qcAhnlJpOhf4lOFEk5LP8AVNFGc+Tu7eM5jspoCA5N KZ+boaGMs1vTM0nae33GuOCWkHSHq2UD/UVJGuqi9QRrzJYwV7977Do1agDZ0babYgxFo85BL5+e LFnggd+99nFmTt/TSGhj5RT27uinmYCcxBlplIcAENQPQ3bkDU++rKWmvm1W+PZx+HQxBlyHk2Bk aHURdSaiF1TQNli3zZx5Xnx6tL6+uzXG/wAwOY6H9CxpmdyOqvqiCw6yB+JCIXNcSnVcosLKnmCp r8OQ/wBEont+erlYz3jpp0a6J23E6oUoINeozFyXgbfioeWChQ5ymIKiEy7gHrbn1DulTL7we18K BZDLnk1SUF5Ya6KTNm0dZbbnIcdAgj7hqmADOlWmR0VW6KEEJ9zX4PVmbujzH9Aln1PAozPqPo21 yU/9TIHql1/dybRadSqpWkbVDxap5SLKDXjDFBFWG9fCymtk+qX0v3EtLoSd2j8/Xtp1vo9VwNaj 1GvNbrI7vT9fsxDXThYtIRszON1og8uLhlpJ5WKsT8zV8FJTQeWjg46Q1zki52/iH1UFxpg4G6A/ Wag4q3R727aQVLNV2vr2f0i+ItWtGrAeHxh8v+vbaksrxxLOrEB3ATRnslxLVADUABINIv6Umn9U mXTmni3GdxxgeSu4jxcs22+aWFRbbjIbx282y0kwBHiUAlyg3aUuzthmAiI4yBRGaLbqjy/DDxeK qZUi5UnmTawlmDX+Zvt27+qn66uqamqx+Tzw6f2SDHVtpYpWXBAJo4Brxobu3e+lKsy6ZmeGrefn w04c3kFS5Dyb8OlHjJYxLHNMONPv6PZhRPUuRWqa0x38pZwV/wA8wHbs+v0a6Rfhq/gjEy/e+rH3 Dd0dNFFT/l5++PT74zHbQtzx8+z8vKBouBtxadSOaz6vPFluU+9FYleW8cPXIOnbtpviANrN1M95 mHTDlVUkQwVOJbmJw9cKxyZvRCncW/q0p56bd0hb1Nd/j/VmnrERGf1B1DSQEzleTrS54jXmS2a9 +52V4tUx9w1bAkHRQnpB5/X+aCI3B2T60I8bQjohO+Hw61JbWCrbVOSZu+ZsPjrFF6NLB5U4698q Y/gm9lxhxVY7qbtepJqw13K11pHOFLmvMhx1MQANnSEphhrp60IvVC8ls9VrzxYyo8aElgmUJXbm HzFj6hljt1BOkXh7348k+oqKjOjF8JgExwl6NY+/TSuZhfh1r9493xgeCsRIeCUmkHAlOpDM5x3S FRzo7gb18NtMPqi74d03QvzPxE2MfyLekxGTymNG+utOLgONj155VW1svmaXmZQ2cu1TPqkuIrj1 NhvONpuPEWsHIt6D5mhT6jrrIcicrxAPPdOf9eWZ6YER2m4VhHZAISYCKCFca4iN9t4t0LkQtCdo AIasKZdOM89Ulu6alV5ksZQTiWtMNJOHLyzBLn1ahHpxw6KK5mZMrZyT4klm05g1veCZe/f/ACxs lftgPGD0QS7jhXEZ3DEhB4lchu+FlSv5rrqLx6irukMtH9E56L6Lcsd8tlK4tgdkHSoqH2+rQPSn YwIsKrbElFSJunqy5E2YSG5YIZLgHSiH2ArYvcdMBARnIZ5Iyytaiidps/DKqQrkQysLzbSyTxcL eR0ZNTHYqbFoUOfJ9xfVgFMr1NRUVNUX+ADOcPle7cOscd+v0UaZZgTRlxNzTEuCkFuIIBFj2UcH k5kzM8G0AbS3fw8rC6iuWDwn1E9X5ypLCocz06rGzl5KZ/8Arz7ADVtonrnIrHfgK+vMmf5Zh6pb cR9w1gnOZvU7CwYTl17f2YSl10Zhrq//AB/e3XMfRhj79ONiEwWDOAwa9v4oGiYE3Iqk82MVCqpF tX5XsHX68N32BZLPjM6mfWd/V+kiP+WJKt+X/wCvNX37J0pep1/x5meZy9fT6PsDpcKjvz/Hli2P yv8Ab1fs6hH6Vz8/+USCANt+HlJuJx4i6nImtcqcS1pYabTWLtz9VQlq/uIxkLYFxBxH0a5zp1Id g3jY8otRLigqvEjmygUgQ12wjm74WXJn6UxXpNC48cEvnzD2U4v2SpHm2s8Aer85R8z78KB0ax17 doahHaFOnj/ye91EU21zEhkVB4zyog+6FpHKG9Z9LvtA1++vZTExKiZT0tLBqNftoGrrd4IgpHZz me6liH1m94sdVTSyw14kPwkdSTbvBkqa9frLQJihrnnFxHh7ZylTnHipacfEQq5Pr6ji24TnhZur HGZBLQvDqLr19PLLVrp0If8AlHSaROWHYXrh4jnNw2kGuF7FMFNBv1lL/HSFjKXp+ynE88FiobZo uqoZ9SLGCiOl99lOLRBU/TmPKBuiGMtdKVMdM6Z42f6fs5atBXSBLaO7aOGDcb6c+dYIy/IkPGIN 4V7xjFnJg0dVdG26bJ3amXp69KNIvrx3YYIjY8CBOqLkRSlMw8DQSOFHAF2igiACK4tLoCIcohGQ Tnhk4hPABrZyRUPOoqYcdQ41Is6Eu7M8KeEkw+l4+A/N/HU1h6aVOcOHlg+oLjjMGVJQNHO/DZs5 xnOevd0fuozy2XLgzZNwRU/4WqA/AN2VtA0zM8rt5t38NOHenOVyqsHwca4qmVJQNflZsQ9Ho9VE +eV4fKO+cd/7fvoor9no+2jfXVw1Nbt/zOXv6NeAdcqWMUZqMzd1oGhRU13+Pr//AN7H7vZ6Oijg TOGKmtL15GvMljGsc01y9fo6tdG+vrq//NvZ0++GrZtooqeHqa0uX4frGQ+v0T9nVTIUU2LfXzaJ GuISxgz2tuN41+cmM8z0kreMz6p7B2Yj99K/iRXdzB3GD1QQKragvHFRaR3CrcZZgqbNeDgcUsNw 0g6OTInA74r+95d+b/f3EZ0uh4VJeJzDMJVdnRl0IPfudlEe8uK+jfr2z6aYmZfpNdR1n14iutu9 uDwS54nx+uA8Ii7JtFP9BrW/UZxeQoPfpMobOT6blDCejvT001wcez5OLxd/kW47VJQNE0skkFBJ 3kmXpLwKuaQT5OtPY1hl6sQGesoN0IyOeI5zm5rAZHLy37pbBmOqfXhSUIMX3+moxdqVDjUtHyoZ kKSUOrV2fVjj91KmZfpBLFt1WtHAIZ3LaW56xJaZ8bN52Z6vw7OIPPBmISVpGCHEZ5LfdANHM9OJ KTfKkmaUBPFCXHB+L9xeryXltpii2NbGdTqKuCH6rXpj2vQ4lisaQttG7wdCFxDpohi3uTDfcQNz Dkn6MKZvclpBdfhpYVVUw0kRRTG2mEiZQmjjea8qAi3CK1+7YMqZHrjlesqCger85254bN6z4+4Y dAYdDrLZbpLUAYDuAAby8XrE6Qefn/NDf8PXfDmPyn+ViO71bA6fQOKeu+F6NXs9f20cK6u/9m3T 2b5fbiPVMKN9dXe4+nV9QBPeIjsoyFLU7Ke6Bo9w/R7Pvp6ieo2+n7KepIkOFcIcLw+3M9wTx2en 0+ijfwXDVvw/vs9+nCjhT901NPLBoulESJgyoGjmZEyhSXf+v36aSJDBmdRXVoVEsQ9HQH2yn19I ShNrq+p/x/2YTw27RENW/VKm0CXY67RlQjN9cPIaIOlBPPSaSUeDNvMgGHhzSByff0gFMvxIZC5C V7qDAcZG7XCg3XnhQDiMpZhsGS4392rHpHpEbpA5eX80SI/nlfVGi9eAAO2e0Q9Uur17pXQyVj4U vX1Ff3uqd5HCnhLMFTYH365y30UQxs0xpjkiqLjhyx9JE9LOAinDZRZRk3jScvKD6+rDZSDtWpVU FxmG4qETCIYHvLvufeCprD3lv30JB4HwPygmXv3/ABTBkLHMZnUpRGhfDJKZDAW2/o2qEngUNwrZ t56MXLqB8YOcP1pnINtK3QYzHqpeMLhGHMHHIXNLGe3SrQSu3MP9RuDlP0honu14hSH2P4wLkPYv t9xJVetlk9UOKjYfiSlHLtz9LXQBBQkXAdrjFD9PoGhADrwtNEz5ev0AtsFk8qcVL4zs4zfBdy8R eTeHKIdKPcaDTP6yO34CCpnTt/2iMT2ionOInY8eFfo4yWkXfkbO58Tb5RtgmqbSVLlv5dWkPCWj odI7p4Y0Dvw9RnRjh68SxkqIkvfcHo6to0IRbYioei0fh+h159aUlhBOOi+FZ2HUZSc3H1wIKEir i439YzvzVPaATph+JDaqEF7rFRUAZzcqjpfeZueGPWGrqns20mP+qJ7D74WQnWPhiqfKXesyP78Z 6saQ+dRwus1/IpbZde+WOukw4aoOJahUV9RPNTmfb5/uDHHpxozo6CeXlQulISGpLawqHMyRyiSU vNTP69SHTGXfqp+vwiJDPUjwNdOo69mPvqls6aSgnXSl+Ta/kkpfbq6BpZHcHiomH3ARcTcUmAsI KMlrZxvPdHWU1zHktd8A3Gh/Sxxya/RSsF6tSkBxV7dE8aMmEs5mZw3mYpuYKgDx6jAhjIBBpjMM B1gISCVCokfukVwJp/4CoLGuk3rP+kJ7cPrCVNMQxdZFBvFKG7bnXifeZs2TvLMP0KPp2at2ymd7 nr64gYXCJFSMo+eCJxWAnxZen1B7zGdJC1fhqowRlMwV79J52T+zV1/ZQiXx+jOhn3iAQbCtTwpW ulKwTLTAbQfFu73jSmjdP/YwViEhyBjwarxZxZ2uhBiQJ04TN8+kFLXUVAuJaQ5hzd+4d1AD22Kk iTtt2mLqqFu7zUYHQdJi4SfGfHo39x4Mh9XUMsKaYsc2ioqQZiC112HJ5Szh0XUiuRuk3gsttMdq XfV/XKudOrVjvlQmMDuxhJXZOY2Wt7UEflt7QcqDMYUxsttlQ8udSEXOLKb+nSyurjgHtQDJkhiH agAiOXlDlCISAK5My4wMzU5feAIDn8RSeXf4XLw6OOJqUBpvDgK1tTubxERCzbHFUsj9hWtsRZSo gOJwvi0XF5s2VoWHXETyk1zNRVW2Tl5b5yUSXbD2zWbi4tuTIkGTkT7XthyQ7bLDm9Jk+BKy72Ld 55kT2S14fd6ZDQ7PZt2VUWd0yxxYSYDwdi2wIEwsdL1KJLgBFyVIHS+3ovCL0W8nJAMlfcTsFEwA ADJAMADAAAMr2RzCMsmEqvqPAJNLJfIrs8ST1en99GUvbu+CYSzF+/4qisVKuEargN27V79cgxpF q6p76+H6NYj90vVSUnK6orq0d2zEP26tv7qfu1WQ8YhLJduMBquR2uBUHvNJbyODkUj/AKZb90pa g1SoTA0Q/wCH6M3Kh79Gof3hSwEZS4GqMcBUd7qpMSRzOye/2B+3VjSXxas9xbgM7Udjxbaplkuh fbaU5ybeVjiMpKYpf9n9Xq6qMBNqrlcVz7MQzcr3kc6ujDDZ10kSGcmpGE0/nBf8l7+EcOnd0Ds1 0uhkqSUjuMguSMmUdenfBQoTn07fswDq11edQTybm9eeIqRfOieek88J/LpB77ho4Nvhx7xqA74n nxP1/Zr6N9IJmwB4AV/5RIIAms9qvytcC5XxicjAuskl54klG2MSNLUr56uKc+n2a5Uk9TBiDsPX k3x7ozSexdztt0IrkdqRB9ZZD5holrup6ChaScfuP+x+/VOdM8Q9OIZwgnkVyoUizfS1gL40eN3a p6L6164p+UejnpnupbArFnNNfBevZyVaadrfNMN0d0jSxYhmpqegf0GXPJ9xT1Y7dUwAaYmGYtQF /wDdBEWQvLFmxBS3ARXLQylFIwaJqhImrOyCaymvkgqCPES1cbg5wOL36aCfrjd5KiguHqgyWMGj iod1/Pw+r3xDfriKj2gDXQguOC1Rai0gXlhLJZpGNyM1ytnRcePl240Nv8p9IsEPXsDfTO6kj16C yGfUcAZzhUJqh0ChsnuWrgwH3CdMwPFbneH9GOrf76vRSP11Twvv9fROW3XRwUq6vDDV1+rbq9E/ 2p9VV8PXzzX5Zux+qXvspIkMwcBU5v3v0dHvs3+nXIUfgKn4fd0SkGAapS+qnibbVVjOLqQ1JSLl NRsoT4r9OrDDZOlgrEH4jNBBSHI6mMtojeVFhVbKOrKxPiw+6Llv65ZecQNzDaGIBhSRIg1dU8CO 6fyPf1T6/sxEaWC2zlfUqqOqjXmSxjHPDeaeNPYHR0YBSK8DwNb/ABGc+rp9EtmGEt9JCjk+GPly PDiWLmv5Wd9U8PZj7aZSWUDwIPgXiQSBkxCqK5BWD9Seu0wvNucjaxxneiFr/V/brxDbKl4WOYJu O1dEZYqEp/prbT4crLDehxJcJNZUlM+l6aeBUMN/UOGOug/4ZL0iphJr85zcqT7yKeDcP68wx8CS +qnUB2HmwrUI7HT7W2nCapGIyI+Zdz0o2+LEHQR6bFzyg8B+jdRXmEsZqaE2DYANRqNVrPQ3YsOU MxMPKDi96UcgNVq25e+OqBN8MVH9cfaNP5k/ZAn58YMUEOoPllIw6IqPxaWDmtTIJemi/wAS+ndg HqCn9DlBrotk1lvnlV/qaknlVhLzxJNo6Mmpi974YB8wYYU/m3RmJkYhWyIoAhnzLla3dgdGZq2Z 3bn7XQlpfnxH946sN1B5aX6VOC1G0FGZqWdwOw9seAXHaPzjN6kj3CVTyNfnN4GkdLOnNQAQ3Iuv fMRn91I/XFNeH+h52P14fb6dYUsh1V1epKigq19fnJg0cz3dh04ejZt20r+uOe/1YfWHp6aO4Xwz HOGrv5Nj3jj1ezf9W6n0nw/C4z2/d6dfplSQE2S6lKu4qbikZMSz0ZbJ+OvfZS6FKy5Fptw+Tomr lS0y6A6Fe5ShMq+0ZScqeq3MK8g32hzG4QkAD2wgAzEQlgGUIox5K1HdvqqfrWJFH1NUIVQVAZtP +V7Z4fUNFFTU19TW4S1D9mzDXq6fVR4UkFVR63gFUgZLf53me309UsAnjPfRn+HDOOHzkz1S1fYG 3b0bhKltO7/bEhA8KnPCCMlyzYxxqSlrn0D14/slT4z66vA+jnqjvcwVFL1Bq6x14fvHAKM6wc5R o4/k+Zylt1bNYdAjulhT6j13AmVD5RMrr9cvfYPRjJJNVAGjHzIeNCbjtHvjc0QkdLrnQ6FxDMJi bULxxVOuQokyTUwhrDYMtfX4f9TBU1yVXJRivXK92mWelo6n30b1H+jfo7js9dIfmdecqi9edrzP ivMymPf/AKscBH2+pvfilX1LSMIdRUGSygaHPThM2PitC+r0Y0rsrgdLxEyxqoKBJe4cOK8W92oh smw7B7oz+T4yPmK+v8H/AC3aHTiHRh6KOFdXSrTHD1Gc65Yenfj1b/TKQVKbXpyWnfkxg0Tz04G7 3kIiG3ppF/h66t6usff7JbNl8SN1IH7IA4Cg/KAIZ66pr66qx+Ua+9Nsgx99XVRPXVPC5vjmxcZH e+5fslj6frpYCYyTxzOK+vO5sXK9+99+FPr30cE1k1CksJ6UNfdudEwO52bwzDiX1dW/2UH9Yyrt raw+XP6YxIg5PvOtL15evHOCpzPZ6ts/r1z2ddHevqOG/wBIzzPc7KenYPrx+qdJSpsSvR6rPs+L KSea1G8zu1T6Q+/dspH+BzOt/iDOsffZsH9mqkEwC1qt598SJe26ioUipfPqid1E5CcKk+qctuO3 duDaSnsdVomvsu2jILxpz4yWR2G/EtlPzvzixehe++IV6aHiHNxc65oAhQW6CpV6Os8PX1AZuaJ+ jZu2BtHqpcCYcr86DMagzx8jqhLNPRhh749NCZYv90e7EH437PlEjvZ7Nu22rELsfbpqDDpTbnQo kQbel7JICpcV30HHXJ/ffmvrGQbOK5hQmgQ6X6xkR4pTtXG+uvFLbKuUbzk0ccoX6tgg30iAMwGe 4ZgONOvCxCw4ZWurAsF1x/1Bl2l3Qw+59EgoKusjn6oxR0DXR5P/AKjoY75y2UC/2W6zFAixbWwP f9mxDBEUTR10aYFDbw0kuFUYoIC6xVrlB6PV0hSuTEtNetgCHDguLN1fNrHmIYADogoLjTnAcOyB wrgDA21U74L2Xql2GmQw7rRDio93GLjUzsTwAL9GUgyeSkxa4SER7bJyhywCYCOVq6pI1PUVkE8f TLf74UkCRny8bfD/AFY9eSibWO/FY3rPuh9LU11an0Bs17w3Q6uqa8nWgHfObe4j7fRt6rEZfowC lVdjWra2Pvpd+cD4+nd8YYDnw2vZ9u/2fbOjNXVPDVpeor+oO89uOvV1YjiPXSc1KDX1xUyeVRu0 uPvu6t310nCCz2qsVReor6hSMmDXyMCix6tnSMvXvoumcylAwtxrawNPlzEDxT5Sp4HGv+T4hLdI J44++NJRUnCOa5jX1Orv3O9XsHdPHCmiF6A7cqSqRo48jJYwbR89OFHD+QKn9eSDZP7xpQ6w1Vxt 1XGqUaLFzWJM34sUPRPZ0DPWG2hUrMyk0zAOLdriv15OxkJ0c4JM+YqK8e9x/Kp4+voGXuGN0M9e VW2vGCNRX97rxPM+9Cc/q3+nCmf/AIfGvqJ5x7/WGMvtClkBXcNc9fX983WcSzo78R3jIPV+2jGX DluJZu3dEZTcdo98bAbcMWq8UYuer0NNLJxU5mWaFCYdWPsw+umsHJCWFcE4NqKqhpSI5Vh+uRLa 6w3zaOjXmCWhIt/Xzfm4B19WE5UzBDF1EUdBWG3Xqt3F+KzpM4bR1nx6OA6uvDZvlQh9c8BWLKqw 3CKqiIiP3YGu9Dj3diPeXFmhetD95YznSpZj91nBJpZ1F3tenPVtXt3MZb9bT/l+MA3tFLDcOOgu htVuIiJmpMTiyUSSeF6eIkX2/ZSj66pzMrwGsZjj7Z7fb1S3SiuCvdaysOM9X8YGjiotHc02bOnf h6cNox+vJn1KtL1FRUZyYNTn9ozD3CljlT0WTelQDU1sLfF761utmakji/8AuiHnJ12cfJhx+zXK X34S2UT1Fd8n+H98J7fX7aaYTYbkUeqLqyrUX5mvywob8GEMZ9e32UnBypSqmr4CoIlixfPO/ChU njL7ujHXPCi6WzLS4+Fq+PlEEtYgcCKf8Yx/Uk+GrcALme/Okej7AwmAe2nqbfhXD2FTvcboIuoj NPKttUOo+acWqd6bFv0bNWOsMaeoT0gcvL+aJH//2Q== ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://weblog.greenpeace.org/climate/windturbinechina-thumb.JPG /9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAAAAAAAAAAAD/2wBDAAEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/ 2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQH/wAARCAGQAlgDASIAAhEBAxEB/8QAHwAAAgIDAQEBAQEAAAAAAAAABAUABgcI CQoDAQsC/8QAahAAAAIFBgoFBAsJDAcFCAMAAAEDBAURIQYTMUFhgQcUUXGRobHB4fAIFSPR8QIk M6IJEhYlNDVTVGJk0hcmNkNERWN0lCIyN1JVZWZ1hJW14idGVnaChZJCR3OGpThXd7K2wsXWGJbG /8QAHAEBAQACAwEBAAAAAAAAAAAAAAQFBgEDBwII/8QARhEAAQIDBAgCBgYKAgICAwAAAQARAgQh BTFRYQYSFEFxkaHwA9EigZKx0uIHMjQ1wfETFSRCUnKCssLhYqIjJRbTJkSz/9oADAMBAAIRAxEA PwC8JmkvY1HFj8zZf5H/ADLDXrJ9bxEK4nh8Gz4mxqHPKyJ2RtAC36Y/1Rl/4MwR9x+L1+qEf1km +rfsbG+0GHWK/wDVv2JjfZCgEAvuWvPH8E4QtJed+TVfkbGyQywsdTFxD79ZJvq37GxvtABBXfuB AnVqYIWknP5s79TYxVwr3m+LzH36yTfVv2NjfaAAIQV37gRMELSTkiL4NXQpsZ+h9NgP6xX/AKt+ xMb7IUAgEThC0l535NV+RsbJDLCx1MXEPv1iv/Vv2JjfZACCu/cICJv1km+rfsbG+0J1km+rfsbG +0AEFd+4EIUPjv7zuIETBC0k5Ii+DV0KbGfofTYD+sV/6t+xMb7IUTFuvgGAImCFpLzvyar8jY2S GWFjqYuIffrFf+rfsTG+yAEFd+4EAqEf1km+rfsbG+0COsV/6t+xMb7IAmLdfAEAiP6zWMjM/Y2L 3CdYr/1b9iY32QACAUczv7/hR/WSb6t+xsb7QI6yTfVv2NjfaAExbr4CAo0f1iv/AFb9iY32ROsV /wCrfsTG+yPhMW6+Akxbr4AiP6xX/q37ExvsidYr/wBW/YmN9kfCYt18BBQi+/WK/wDVv2JjfZE6 xX/q37Exvsj4TFuvgCJi3XwBF9+sk31b9jY32h8EzSXnH8Gr/I2N3FVSTqajA8xbr4CTFuvgCI/r Ff8Aq37ExvsidZJvq37GxvtD4TFuvgJMW6+AIvv1km+rfsbG+0J1km+rfsbG+0PhMW6+Akxbr4Ai IxxNlVf2JiCY4myqv7ExAOIKFOj+s1jIzP2Ni9wnWaxkZn7Gxe4AAiYt18ARffrNYyMz9jYvcCOs 1jIzP2Ni9wAmLdfAQER/WaxkZn7Gxe4TrFf+rfsTG+yPgICI/rFf+rfsTG+yCOsk31b9jY32goBA ImCFpL/820O+J2NWcOah9+sV/wCrfsTG+yAEFd+4QETrrJP/ABVX+52N3D/KFpJ3fm2j5mxsvOek wvBCCu/cCJh1ku/zX+yMYffrFf8Aq37Gxv8A9bCgEAiYIWkvUebZPgbGz/7N5OJGPv1kv5Gd/czG CgEAiP6yX8jO/uZjAnrNP/Nf9zsYL5i3XwEBEf1iv/Vv2JjfZE6yX8it/czGAAgImHWS7/Nf7Ixh Os0/81/3OxgPMW6+Akxbr4Ap19+sV/6t+xsb/wDWxOsl/Irf3Mxh8Ji3XwEmLdfAFQvv1kv5Gd/c zGE6yX8jO/uZjAAQER/WS/kZ39zMYfvWS/8Azb+xMX/9bC8QERHWaf8Amv8AudjCdZp/5r/udjAe Yt18BJi3XwBER1mn/mv+52MPj1kn/iqv9zsbuAokxbr4AiK6yT/xVX+52N3CdZJ/4qr/AHOxu4LR ARffrNYyMz9jYvcPl1kn/iqv9zsbuAoHE6JgpthPj6uXmx+eP+J2NqpohVQZRN5iBepofP1d5/ln NefvrEBFoMufCi/UmV/ghD9QV37gMu+lP9UZn+CGCUFd+4FQmAIA4IBZBMEFd+4EAdBXfuBCCu/c J0RAIQV37gOCEFd+4ERAIA4YAiIBAHQV37gQCIgEAcMEFd+4EUBAggIiEFd+4MAvDAEUBAkxbr4A hBXfuBFAQICARDhggrv3CIK79wgLr2bLv2lEFd+4ETFuvgICEFd+4FPs2XftIeYt18AQICAXWhxJ i3XwBExbr4CTFuvgCIcSYt18AQJMW6+AoRDzFuvgJMW6+AImLdfASYt18ARDiAgSYt18ARDiAgQU KdDiAgQEQ4IEEBFBAQICKCAgQEUBAggIoCBAQCKCCAgEUBAHBAoRQQQEAiggggKdQQQQEUEEEBFB BBBOiggggIoBwQICoQ4HBAgIhwOCAPMW6+AIhwOGAHBFFT4er/rn2hBFT4er/rn2hBOi57LvpT/V GZ/ghglBXfuCdCnnsXT/AFNlmf8AcpO3aaQ4BVy2/j+CIDALwQJ1amCFN4bu8ryBCCu/cB0Fd+4E IK79wImExbr4AhD2VtOvRuC9Cm8N3eV5BgCIgMAvQV37gQCJwgrv3AgL0Kbw3d5XkCARMPS8uc7T ltp0EAdBXfuBAnREAhBXfuA4IQV37gREIUPjv7zuIMEFd+4DoK79wIQV37gREAgDhggrv3ChFARM W6+AgIBFEKHx3953ECJi3XwEBAIh5i3XwBAgIBdcz3/1Q4ImLdfAECAo0OICJi3XwBExbr4AiHmL dfASYt18ARMW6+AgoRDzFuvgJMW6+AIEmLdfAEQ8xbr4CTFuvgCJi3XwA4IpMW6+AHBAgIhxJi3X wBAgKdDzFuvgICBBQiHEBAgIoCBC/EX7hARQQQEAigIEEBFAQIICIhBXfuEEEFCIgQQQFOoCJi3X wEEBFJi3XwEmLdfAQQEUEEBAIhxBAQJ0Q4gggIoBwQBwVCgHBAgIh09V28DggDgiHA4IA4IiFT4e r/rn2hBFP4Wg/Wj3CCdFzvU+qcVQIFhRxbzNl6epa8urMTg4QqaimdML3jtfUK8u+lP9UZn+CGP0 FQrATNXvxHnMc299bwRMp0Pp0HNNNJ6bLQnU0yf5dZdRCjvOt1ROi4OELSXkP490c+eh+g4ZxOrJ fd3/ABKT9mriGCCu/cIhaMfOFFVcdLo57DKk66BPepMl/KVbftKG6oF2IhBXfuBCCu/cIhU0Cb0C 8rLNhP21HrdcCMTXkP4ijLS95WuyEWW2AIoGAX9uhOsjI85kZHpp2WAhBXfuE6JhP2auIYIK79wX oK79wJQ+hLMewER4IA4iCu/cCJgD0PpizntAA+6H0xZz2giYhggrv3Begrv3BgCL7ofTFnPaGIXh ggrv3AiIBAHQV37gQKETBBXfuEEQV37hAREAgDggEUBAgIBdcz3/ANUOCARMW6+Akxbr4Ao0OIGE xbr4CTFuvgKES8QMBJi3XwBEvEDCYt18BARJxAQCJi3XwBEvEDCYt18AvmLdfAEUA4YAcUKdQQQQ EUEEEBEQIIICIgEIK79wXggERAggIn7NXEEUBAHEBEQCAOCBQp1AQBwQCKCCCAiggggIoIICBOiH EEEBFAOCBE9V28ES8QT8bz/GEBUIcDggDgiHTJuTvo2ET8pmdQHT1XbwQB/xfbuphlpt51CdEQqf D1f9c+0IB1T4er/rn2hARc5k3wo/1Jl/4J5IJC5d9Kf6ozP8EMfs/Zq4gsps4y5/NmOabofTFnPa GITghBXfuE67E4QV37gRP2auIXoK79wIBEwDBCmWENCd9dJFzzY5OGCCu/cCKwIWkn+XxmGh9EYa 63ZTDBCuIE3p1Hxc+l9WZ2oV9BXfuBCFN4bu8ryE6KwIcRTOKeWVYvrbzy2xj3gjE3egTqyzdRo5 KLnivhgCoTiaTZNRdwIQV37gvQpvDd3leQYY4njDGa/O3b+47yBTohBXfuBAHnkCb06vi1fmj+X7 YBghQqPy8eeSvgdIKhEIK79wYfjef4wHQobVbmGvTUUAR6Ll736MllGkiIDBBXfuC9BXfuDAFOiA QBwQCIgMAvQV37gwBFAwQV37gvDBBXfuFCIgQQEAiIQV37hBAQC69my79pDiAiYt18BJi3XwFCjU EEBAIhxAQICJfMW6+AgYTFuvgB5i3XwBEPMW6+AHmLdfAMJi3XwA4IhwOGCeq7eBxQp0OBwQICKC CCAiggggIoCAOCARQEAcEAKsd2OVPNFAQ79Br4AcYP6QnSQwVdFzBgv4VMLbc6tY6r5kx2SqfhNK 2VJUsVhsOooP0Zx2Skr4k7OCUlAYonhdgTXJszSjF+c81NQyYMZIEP1iXa4Ua/1VqrzhUwtYOcBk g2zhNwqSqZsiZHsE/PGs1o4/D4lYbD/1glFkPI4xoh0L+mjhh6a+FiX8sZKyCVpA9EmQimcmWQsy gUjaMuJcy8N5EXXhmRMA5KF+79yxfuS8n2sT8p5eRwWaUq+kl7MN0pGNJVOurMm5Dstcx5Tk+qH1 nIbAtgv67Pr5stuJe6CUJuI4k+Whk+BD1r4GcEsh8A+DSS+CTBiyupJHSNUyUlJU/Oi+UOvW03Cg XuilZTRAte22hISVkyRhmhDHascMIhrE0DmByw1QYyBq+lDFCIXIBiaKHC2faE5aU4ZljDZooxDE sGbFnrRnxYMcoAgDggass0oIIICKCCAgEQ4gIEE6KAcEAcEUET1XbxBE9V28EQ4HBAHBUIcDp/Sz DyKFGUoZj0UZMrBPVdvC8EQ4HBAHE6KIvhav+td4gip8PV/1z7QgIua64mKd/sbLfn6lcfLqIiIK 79wXpk3a/wBjZf8AgsYwdbWT4FAEIU3hu7yvIFS5xPPvAck4n7NXEET9mriE8/Zq4gifs1cROr1Y J+zVxDCfs1cRX5+zVxDBD2tlOrTvBE4n7NXEET9mriE4YAiYIU3hu7yvIMJ+zVxCdBXfuBE/Zq4i dE4n7NXEMEFd+4J5+zVxDBCm8N3eV5AqE4n7NXEEIK79wToU3hu7yvIMAU6YIU3hu7yvIMEKbw3d 5XkE4YIK79wKhMEKbw3d5XkHE8nQ+gT80UUnotsCdBXfuBE/Zq4gif44sZFbTxDHzH8fuo2U/wAX aK+hTeG7vK8gwQpvDd3leQKdOHIfnG3vBCFTT/IEXc+NWZ8anEYTghBXfuBE4BAXY4sZC08QxQpk HyHjmdkphkzgiIBCCu/cB0KZXTVrKtVQWpx8TgGEz9YV9AIiAQB3TPp/NlelcjrodzUCIfILJY18 Ep10UOzPqiKRDFF9WGKLgCfcuDFCL4gOJA96IBExbr4AcEDhcogETFuvgBwQCx6kxbr4CTFuvgCB BQikxbr4CTFuvgICARL5i3XwEmLdfAMAOnqu3giHmLdfADzFuvgGAHBEvTIeTvo2kbspGVYHmLdf AME9V28DihEvEmLdfAME9V28LwU6HEBAHBFBBBARQEIK79wHEBEQIBxrf0rulngr6H2DRYwjYRl4 llorRYlI+Q7JXS900vGpFzFYf9Hf6Uu7h9ysrNzsYk5QaxJAuqS4G+/Pccip5uahk5baojxdhvB3 scTU3hOOkt0o8FfRRwXtDCbhNapmrPNSkfJNk/hNL2VFHUrDq/8ANP8AqW7T498LWGHpJeyT9JCT 6gSisyklhKdc9zGDjBnJ+MmZCSXOPtScZkUPw3lTTSZnHySLH/SE6RWGnpp4X1eVUuE7TbcoG8ue 5iQeD2Tyn72MFlt03MKRch2FnrhkrHqY9ja6AbJ6IuD73Uy4UGa0ukBLxkff41lT3y9wbL/92LDj /wD3ch6fKy0nodI7TNCE2rHABC4BiciFme4OBUXNqvUhaYIpvSedHgSp1bLhLmIEgODC9QWvFBve tGbYDoQ9D+Q/QywQM6QEnCVm1LhukTawqS3xN3utlPZ/R2SdMiKzym957kAdBXfuBA84mpubnpsz s3FrAks97FmepcNQMd2AW5QSsMlCIYWAhGqwZqbmDXmtb8SiAQBxBIuUQIIIKEUBAHBAIoIIIJ0U EEEBEOInqu3iCJ6rt4IhwOIICoQ4HBAHBEOnqu3gcEAdPVdvE6KKnw9X/XPtCCKnw9X/AFz7QgIu V7STedR+ZsuNMOpYZ4x7nAhCm8N3eV5CvribzqfqxNln/wCiOuy7AQhTeG7vK8gRWhCm8N3eV5Bh P2auIq6FN4bu8ryBE/Zq4gqFaEKbw3d5XkGE/Zq4irz9mriGE/Zq4idZBxiO/wAxzVgnU2XWXeGC FMniVTqb9j7XZXOJ9fn7NXEMEKbw3d5XkCJwgrv3BhP2auIr6FN4bu8ryBE/Zq4gisAcIU3hu7yv IVdBXfuDBCm8N3eV5CdFYAwFfQV37gwn7NXEETgEIK79wToU3hu7yvIEIU3hu7yvIFQrAgrv3Bgh TeG7vK8hV5+zVxDhCm7K7NAn3u1nQCJuh9MWc9oYoU3hu7yvIV+fs1cQRP2auIIrQhTeG7vK8gQg rv3BOhTeG7vK8gRP2auIKdWBBXfuBCCu/cE6FN4bu8ryDBCm8N3eV5AicIK79wYBOCEKbw3d5XkC IlpM1lSkYLYk43FcmlJ9vMdqMVsMn5+ym77wt1i597sx+fLDlIjp2exiNVoS46OmEeVeFjooY6S7 7k5buwj+TITyXO6llwwYeT5Mn4O91Ek/aeQcX+1OPlegwMCmEyJYQJ0CstK615kuKi3+Xw4xeYz1 lWpBZZ1fFghj8GMgeJDEHBhJFQR6UMQBpFCXZwXhiihOJtGz45hzATDEATCQS+s1Lr4SQHB9Ze7k x0XfZmOjnhk6vkrhhUi6POEBa8klJTW2suG08GbcMzc5iNwyIpPnRGVbyeZOpJ3YdmtJRXFVntVl EqtJjtRTx1jtdUXOsmYvsuPxG3Ndg4MdNj2HORmE7rjCN0WCYmDeXC1562ME7W97MGcrWoX8hx/0 fyiof/qWdRk8xxuwS9Kjpp+x8S8aODo16Uskuq1wvdJgSwmqZNKTK+ZxPqNhx9z8PbffTJNxm573 fvtqj0esi34ROWFaEMHiRQkxeE5cRsCaEkgGjCoMT1G7XYLWtSy4hDaYJhLQggAliwD6oq7NdVl7 iEKFAmRYwgQZqszo5tg+8ysfIFzcORHRR9l66OeH7q+S0v05YAcKC0eJdVSsXPvGbzUgT2HLiqJk RSWlZXRZ1nQpuyV08+eLrXnqmt81VZcpwjpc3ZM/ZM1+2Qx6puiMJZizEECpLZv1WflpySnGEpFC YixIJANQHpffeExEExxO/wA4xdZ2P0Q01ZQRPfV9Y61SoCBOy59qCJie9AsPdqpr8KyBEOIPyZWP kC5uH6CIcQEAcUIh0yHk76NpG7KRlWB5i3XwDADgp0vmLdfADp6rt4YAdMh5O+jaRuykZVgiXgcM Ji3XwC8EQ4gIA4U33b+CO29vWyggg1I6YvTMwc9DnBosSxliarKSWDeMlKQeDJUXHNOVrUywf7n5 Ol/tTXBxCuTlI52bhlJKFzFqh2o5YX8SHNymm5uCSBm4ogAz6rgUGR4UX36XXTAwZ9DnBosS/l+n 6ylA1etFKQeD1UXC6zl41P8A/Pydo++m0eMjpCdIrCb0osJjXwm4VG5122Wo7qdkqruq5JMsvzKw 2GdEnazOiWkaAuw/Yf8ACb0l8JbZwqYU2513KBqfA1RUP3sYLM/kZhsOPufk6VBVZKY9qPYo/Y3/ AHUpZP8ASow7ycfJdVXOusD+D1rKcZWtSuWbdYZufJwj/AkqHlWTjL1qQs6R0Nskzk3qm1TC4BYm oDAAlxUD0h9U7qB/OpmZmtKZsSsqdXw9Zia6rAjWfczU48lsz7E97HX9x9jM/pJYcJOGeFhvKf8A o3km1lMyaeDRlkRF13Ev4RJWGZkVcjCqJxkO44k9O3Wc0Psp0QeUWpak3a05FOTRIg1jqw1YAmjO SW3CpNK7yvRbNs6UsqTEpKn/AMgDRF7zQGvEeslyEQCAOCBCuUQIIIKERAIA4gIiBBBARQQQQToo BwQBwRQDggDgiHEEA4KhRPVdvA4IT1XbwOJ0Q4HT1XbwQB09V28EUVPh6v8Arn2hBFP4Wg/Wj3CA i5Dpk3a/2Nl/4LGMHW1k+BQEQpvDd3leQr64mKd/sbLfn6lcfLqIghCm8N3eV5ChTq0IU07z4Qpq DCfs1cRV0K5zthsK+0EY5b6oKhWhCm8N3eV5BhP2auIq6FN4bu8ryBE/Zq4idcuce6eQVon7NXEO EKbw3d5XkKfP2auIYIU3hu7yvITqvac+/ZVoQpvDd3leQYIU3hu7yvIU9Cuc7YbCvtDCfs1cQVG0 59+yrQhTeG7vK8gwn7NXEVefs1cQwQpvDd3leQLsVoQrnO2Gwr7QQhTeG7vK8hX5+zVxBCFN4bu8 ryE6K0IU3hu7yvIMEKbtb88Tfc/UVAq8/Zq4hhP2auIIrRP2auIIQpvDd3leQr6FN4bu8ryBCFN4 bu8ryBUKwT9mriGCFN4bu8ryFfn7NXEEIU3hu7yvIEVoQpvDd3leQYCvoU3hu7yvIMJ+zVxBTqwI U3hu7yvIMEKbsrs0Cfe7WdAq6FN4bu8ryBE/Zq4gitCFN2V2aBPvdrOgOEKbw3d5XkKuhTdldmgT 73azoBGOW+qCK0T9mriCEKbtb88Tfc/UVAr8/Zq4hhP2auIIrBPTt1nND7KdGv8A0i+ivgP6V0jS krhikcrNHFVP725WMlzNlzJJxvcw25Q6l7/vKidRxzQhTeG7vK8gwQpuyuzQJ97tZ0CmVm5uQJmZ OLVIMJ1RFqsxBFKPcPW2NOmalIZ368OsLi4BpR6d8146emb7Frhv6K3XEsWGrrOGPAeqH+G8nlP3 ykmy3n5T5cSHgfkk4/J++k/bSLMyM/bEbiFV6KPsnHSa6K6JQYTDlErYR8FCp56eDLCEudZM1QN5 v9w7bN8p5PnRQZQJxl5RxL2kIU89kNXpXMi/VaT6crjfGBO449NH2IDBJhyRNiX/AEeyYmBPCx5P nq5J72vV2CCXjUgZmT/4P5RQjKiSn7n90bomZl6TZWmMjastDZmkUEAiaECIwQsT6N9AQSLow1b/ AOJedWlovOyk2JywIiIQQSNYioMJNN9aENdV3W13RL9ky6NnSu6vYbKbn3LsKH5ZgywhLjGZrTX2 p/QduG6TEoKS/ppWREdHRnt/QRpotppy+No/nj4YcDOFvo9yyWZAYYZHNyQEp2X56qKrWU3Y+VTa Ybcj1/En+6iSdcB0I6JXswHSM6PaJnyVwgJ/u+4MFVykpsmW659/DBZcHmw5b/8AZ/7R+5aVhnEy cRE8d9saCQTssJnR6OE0B1YS9HDsz+tzwcpZ2lUUEwJS2IQGYAkEVGreWuPefs3BH4rn+KNKOix0 6ejp0umfMYLJYYtLBWVMdbGCeVhdWy4UIe2+I6JQSdLyT/dSpkmcHvcUBuePOZqTn5E7JPQRQEG8 wkAXEVLca+tbrLTUnN/YyDUHoMc296+6H0xZz2hjPJ4/Bll95+BRI4ZAvBCCu/cPgbgPUOQ8l3KP Q/N9vcJNIcmo+4QQFOomU+dkdp3WBemQ9r6CLqsu/QeWAYCOomE9+iBHoOFgoRJ5i3XwA6eq7eLB P2auIXppiN+nw/egiTzFuvgBw5ToVf5d9HwuEaXaXkcdIGmfrCvoAB2we/cNz9eqJOBwwTIU7vQR hm5q3Vjnv08On5g/6GcjcRV0DNlbhwbzHx2QeD0lyKhT9+kuKmBJ07ilpRlFknJzk9OQyknBrQlg YmcCEmFy9zV4M5uoOiamZSTlIpqaiGsBSuDV4PThTAJh03enVgy6FsiFdeauLStwryoU2p7g8Gao uQXyeRddNyH4OvOp5RdUPGhhgwzYRsP2ECUGEzCpKJpSkle3ls/KXFtbP3sUGXH3lYbDok/J90IU RcUTeNhUwnS/w2YQZQYTcJso2lK2XEqFzHWw1luk6T6lYb/wfk7EyhVe/cj2PfoKyj6ZmEv32xli YF5BrjLXcJErPn5ON8i2GdUopWZvvLfF1B+xWdY9l6KSRnJow/pDC5JZ3BBaEkOCCBg5xC8otC0Z vSmbEpJiKHwxEAYhrMQDCIqin1Sa8d6zj7F37HWs9JqVCvhiwqqCyrYAJHNcsTZJkb8LUp2GTyY0 f9XZKE73amVH7mRBRJ49c6mhQKaJXUVFArKrPVFM1JTVFRT6sZqgy6DohzXAIJKyVk5IOS0n5DyH YbNk3I+S7HZbGk3J5kqb2YoMug8lOUiyOqIPx5jbluG3pwzExrfooSR4YcsAWAJZgS0IBLV3Cgb0 Ww7ElbKlBEa+JQFgB6QYMKP+dyIEEBA19ZlQEAcEAp0QCAOgrv3AgEUBAggoRQQECAiHEBAgnRDp 6rt4HBAHBEOICAvBFAOIICoQ4HBAHE6Ic/x928Dz3a8vpzOpq1uBCaYmuXW2ue4L09V28ERCD4Sr 3bSEA6FN50rnlXM8NxabBBOi4rp1x61H5my7veXwjljacQrnO2Gwr7RV0649aj8zZd3vL4RyxtOI VznbDYV9o2TZsu/aWPV4xy31Qwn7NXEUfHLfVDDHLfVDZsu/aVO0HPr8SuCFc52w2FfaGGOW+qKO hXOdsNhX2hghadbrtMN9GeoT7Nl37SbQc+vxK8IU3hu7yvIMMct9UUdCuc7YbCvtBCFc52w2FfaJ GOB5d4jmu9XhCuc7YbCvtDDHLfVFHQtOt12mG+jPUGGOW+qJkV4QrnO2Gwr7QwQrnO2Gwr7RR0K5 zthsK+0MMct9UFQrxjlvqghCuc7YbCvtFPxy31QRjlvqidFeEK5zthsK+0MEK5M26eeTFHQrnO2G wr7Qwxy31QWQcYjv8xzV4QrnO2Gwr7QQhXOdsNhX2inoVznbDYV9oYY5b6onRXBCm7W/PE33P1FQ GGOW+qKOhXO1t50llJ0LHBghXOdsNhX2givCFc52w2FfaGE/Zq4ijoVznbDYV9oYIVznbDYV9oIr ghXOdsNhX2gjHLfVFXQrnO2Gwr7QRP2auIIrwhXOdsNhX2ghCm8N3eV5Cr45b6oIQrnO2Gwr7QRX BCm8N3eV5BghTeG7vK8hT0K5zthsK+0MEKbtb88Tfc/UVAIrghTeG7vK8gwn7NXEU/HLfVDBCm8N 3eV5Bubdhu3eQRWiemr7OaXW0aWCFN4bu8ryFXQpvDd3leQYIU3hu7yvIEVAw44CMEnSPkSsSAww yOZsrZPl8EXFt7OlMwWo53XTDbhu9z8oTJ73wqMh5eOml7Ejhi6PnW8uMDvWWGvAwqnj3mqn/pKk Iy4n7+MMvj+TtXupko4nHE/JIo+s5Cm7W/PE33P1FQHCFN+nWXa6YvhVCFBxppGy6OaT2tYMyIfB iMfgkh4Y4iYdUmFyAXZhvBBN28wnAWzo1KWnK60AA8R6EQgHdeQ5vbjgv517NbDVY6+z24w15pM1 sMtcx1jtZkrnVrUUGo+puZ9Y7k9D72bXC5gySsaRvSaUlrDZIhV9qofdCVjJmYXmCy3xf5R+18mX xVl7YylnSftir6QdN72KTA70lkTQl/gkJm4HMN6156uLampn9zOXjUeZuluw5Pv9z0onGf30yTIy Olz4jy34csAOGLo0y3WJAYYpHNKRMoH44pra45pSZbzLifXbCbhGcmZQFURvK2kh7HKT+j2mErDL zMMEXiMde6GMFwSRFeXNYS5FGiDOD5dMy2kOjE08DxQgiKlQ3ojGtKne9Bcvd/gB6S2A/pLSX91e A/CAxJbM5VU/fhkqjmbKZg5Dbkhy++dgcK688kmTki7DFsYy6MlWZ9w/nLSDwkS4wYyoZ8scHMsZ SSJlgy/ieUMnmx1a1FDIVZcax6EOiX7OomQ9TyO6YcnCaSv8C+7FIhT99Hl/tvIe4vwTccXE+vUL a0AmZcGckS8AqzgkwjVN9xIhbiRduG22LplLTTeHOUjJhGBNwrxO/ebmXpgn7NXEEDG+DLCpgzww SSV5cYK5fybl/Jda/O0k1zrLEXfmVuk/733H/tZGkZAn7NXEedRQeJJxERwxD0maIEEnAk3h+8Nq hihjDwxCIFvqkG+67FMJi3XwEmLdfASfs1cRB2LlRMh5O+jaRuykZVhemQ8nfRtI3ZSMqww/G8/x hARJ0yHk76NpG7KRlWF6dF+PfnPQXGFgsA0o9kC6VCDof9GmWGE1RNmrMuGot+4vBWyVv8vl43Pz 1/5Uk26VDoRPMOyUlZqe8WGSlamIgF97xAcWYX+5TzUyJSEzlwa6jUbcWfdS9lgf2Qj2RqR3Qzk4 sSVk51bKzpEN5j45JuRC38VySZhUS0lxb/RZxe7QyyEZl43ZeYQpY4VJZygl/hGlG05WywlQuddN iULW+M19qVZuXPr+EsJYyqwhStlBLiXDcaUrZYSoXGo2pSShay31i019qN0q68nBzhccBuBKX/SK woSXwS4K2V11LCWK4Sip09WMFl/n1stwo+56Tsky9sbzqroI/eLEsWS0ZkoY5wQmLVcxRAULAtXB va4svKLRtKc0gnNjhdnYML6g7qXNQ/gsj9EToo4RemBheZGDORCDFmeql1zLuWy2p+9khJLv+OjI /KI/JlF7UzfJgiyFS8y9vOA3Angy6PuC+S+CTBWyupJHyXU/M3fGbealLdbLcqlBKKVlUMhEWTH3 RE6JeDnof4H2fgykP75Nha89wkS3W1Pqxpy8lQbntt5w9zpnGREliiNmJi3XwHlelukc1as5qQBr Kgo1SYiCPSIFWcsAAAAzgkud90bsMWXKiKIDWo5IDhyHrU3+d14+KfptfET8ZMa6qNNHNYImLdfA RCh7W/NEn3P1HSNXFwa7d0/0tiQ4IH3mVj5AubgVMq/yB83Ap0MICJpDk1H3AiZomE+bduryE4EQ 6FD47+87iDADoUKeJ1Oov2Psdle8nfeZWPkC5uFCL9BAiFD47+87iBAKdDgiYt18BJi3XwEBEOIC Ji3XwEE6oS8Dhgnqu3heCIdPVdvA4IA4Ih5+zVxA4gHE6oUA4IC+fs1cQRRMm5O+jYRPymZ1BfP2 auIYJu1so1ad4XpkPJ30bSN2UjKsTooi+Fq/613iCKfwtB+tHuEBFwPTLna/2Nl5amLF51abDqdE K5zthsK+0U9MuFO/3XV/MsIV8HwBGOW+qN12UYjr5rDbQMunxK4Y5b6oYY5b6oo+OW+qCEK5zths K+0fa5V4xy31QwQrnO2Gwr7Rj/HLfVDBCuc7YbCvtHxsoxHXzXG0DLp8SyAhXOdsNhX2ghCuc7Yb CvtFHQtOt12mG+jPUCEK5zthsK+0Rav/AB6cP9dMlTwWQEK5zthsK+0MEK5zthsK+0Y3QtOt12mG +jPUGCFp1uu0w30Z6h17Nl37Sp2g59fiWSMct9UMELTrddphvoz1DG+OW+qGCFp1uu0w30Z6hjtl OJ6eabQc+vxLIGOW+qGCFp1uu0w30Z6hj9C063XaYb6M9QIQtOt12mG+jPUPjgu9ZIQrnO2Gwr7Q wQrnO2Gwr7Rj/HLfVDBC063XaYb6M9Q+9lOJ6ea5c4nn3gOSyAhadbrtMN9GeoMMct9UY3QtOt12 mG+jPUGCFp1uu0w30Z6hjWOB5d4jmu9ZIxy31QwQrnO2Gwr7RjdC063XaYb6M9QYIWnW67TDfRnq HCLIGOW+qGCFc7KznQeUnRteMfoWnW67TDfRnqDBC063XaYb6M9QL7lpn1i7ke9+FWuyAhXOdsNh X2hghXOdsNhX2jH6Fp1uu0w30Z6gwQrnO2Gwr7ROrVkhCuc7YbCvtBCFc52w2FfaMfoWnW67TDfR nqDDHLfVBHGI7/Mc1kBC0u1zazvyUVmGCFc52w2FfaMfoVznbDYV9oYIVznbDYV9oLr2nPv2VkCf s1cQwQrnO2Gwr7Rj9Cuc7YbCvtBCFc52w2FfaC7FkhCuc7YbCvtDBCuc7YbCvtGP0K52VnOg8pOj a8MEK5zthsK+0EWQEK5zthsK+0MEK52VnOg8pOja8Y/QrnO2Gwr7QwQrnO2Gwr7QRZIQpvDd3leQ x/hgwP4K8P0iFnBzhikOw5bSXW/yRrfGbBan8tMRuFGT8osoYIVznbDYV9oYIVznbDYV9oplJyck SIpIxAggmrFwRfeKceihmpUTriKERA0qA7Ucb/VuFF5WOm97EhhNwA9cYRcBHXeGPAyqPXVxkqqn 1lhLkG5/x4w6W/J6gvdTJN5fuqi8l/lcbkKbw3d5XkP6KCFpzL6TuhB9uaOc6Yjk/wBNL2KTA90k ErYl9gsJm4HcM7TXMdXFpUU/9Gku2o+PXbDh7n5Rf0pkn7Yie9xmY9T0Z+kTWEEla9N2sRQ0gA1i TxIiDudxBJWgW5oYQNssktFfq50emOAPELy/4DekJhi6N8rVeXGBaXzbkBKAj88NkrnvY3jh7ytx hfgxKCTroRfQ91A9LPRF9m8wZYSep5D9Kdls3BLLhaM1H7pjJ/g0bzq25/rPg/edBEfuLhEiKJeZ bDfgAwtdG6XCxIDDFJBpSTlAfwPG3NJmt5l/y0xG4TylBJ13kvgZk6ukiw/P2auI3q0bDse3pXaI f0YiIeEQausCdUhooaHfe+8AghabIWza9hRGGPXiBIDRObjC9Klr7vxX9KBjthRbDLZ7VYS8zW2x mo5dY7WZK51ky28yzh10w24Tr4XBwhTeG7vK8h4MOiB7IT0hehy1FdBIiUZSlwbra4fXGB2Vq51l IZoHT7yHHqCUb65Jxi4zOr1gdEb2SXo59MBVZ7DYbcKQGFf8swOy2Xer5SG5/wCA7d/BiUEnjp9q bj/dRyjyq2dEJyzhFH4Ot4nhwsSQCTDAWYkB2q4d2G81C9OsXSSUtJh4pEMTC8s5auW923FdFxAu Q+mLOe0EjVwC4Fxdq0LrNDwISHEbhnd4buaIHjv9mq6UX3bOkseCSTrVxnB/0flNqyY80XHsxfl4 3jfLptFkj969OkdqPZRfZDk/Q+karYOcGTlnDvhHYzUXWO1i+LMGkl/iEpaVffF/sRkJ0DgPHuwW DLHCRLJnyck2ym3LbCBLKUmJKbJVFPrJpt6VDdOvOVdBlQPSNDbFEn45tidp4YGtUBjCAAauAG61 vN2haVWiJwiyZQE3OQ7msJPHd+O5DyJweyxwnSykvIHB/JxpSklhKhs9Sybk8yVP3zX2pSdUcpZr Ye2D2PzoEyV6FuC/EF42bKTDRLJTZf3VJbqlEYe4th/0eknQbvw0zOFQ9jg9jlkr0LZIq0sJVK7N lb0kJUqeJSwlC7rJmSDZji+8uQ9dX37yp/10N7sp9N5i3XwEGlmlUVpRmTlIov1aCzgtWgF1QHux pSrLIaOaOfqyVE2Q8RYtQkfVvfIigzCHmLdfATE56FGu6/PZWCE9V28D+i5e9+jJZRp0VbYmCFj0 kmLmmh12g3AjqD99MFZtd3uzhfPJ01MD5N9mR1VjwwQs1qrvoF5WVv7ZfVutzBeiH6nTZdg/OqFj 5ctAtKGSqdMfbtVZh80oq4vvprsCnJXEu3n8hY2tuJ7q4OjdXEViXm2DVBDhhupnn0OC6NoOJ7/q zHNY/wCoU6bt3c7Nh5ogjqFO6Zuc6GWjP41i0LiZuTswgV2asn9UooeVdZUOKL6aXsECmnmvPk6y rLFFELOaChWJWLsxe5mLvh1HNcOMR3+Y5qj9Wp0KUkExzEzfbE3ZnmPzE16zTxFpXOo1M+3Xln9c 74aTA6FOw034+jNZlI3WvHeir8z9Y1AhCajNdugLTUTs9BOKhxwjEWBOhQJvQG/fmymRU90BELHJ D8OQLKz+qPjlPuvgDHA9/mOaKvp6rt4HmLdfAWBMzWUhggWFn+1wi/mATplNOm9Agc/Led2WyqoF Ok6eq7eB0ybsrs8Dde7WVAPxNYylo4ABMhTu9BGGbmrdWJ1Ql6ZNyd9GwiflMzqA4gkzO3W80Psp 0EQ6eq7eB09V28OMU/Ta+ITpkKd3oIwzc1bqwRDz9mriB5+zVxBCZCsTR/BquX8lVQF6ZCsIaSfG mmyuNNwnVCboU31FWxd/fq5gGMyyk3b+aqyxnhndA3XZaKBT5+zVxC6eWPly5vHO0HPr8SnVpTM1 AmS9h5tXBcKHfy+p9PaSFOhSzGeq3LDJlyOEn7NXEDplznZDaV9omVCIZs/jSu755B9PNLrHiCKa 550r1njkaidqfW+oqBARecdMuedHnZdbrbKIZ6c0n7NXEJ0yYp0qIKbL5t1PorIRCm8N3eV5D0Ba urBP2auIYIU3hu7yvIVefs1cQRP2auIo4KhWhCuc7YbCvtBGOW+qKehTeG7vK8gRP2auIIrhjlvq gjHLfVFXn7NXEET9mriJ2GHfYHJfG0vuHXyVoxy31Qwxy31RR5+zVxDCfs1cRxs4y6fCq71eMct9 UEdZ/R50CjoU3hu7yvIEY5b6ol2UYjr5rjaBl0+JZAxy31QQhXOdsNhX2jH+OW+qGCFc52w2FfaJ 9lGI6+abQMunxLJCFpdln1FfloqIEIWnW67TDfRnqGN0LTrddphvoz1Bh1j2XOil1GqtwbKMR181 TwWSELTrddphvoz1BghadbrtMN9GeoY3QtOt12mG+jPUCELTrddphvoz1CbZhh37WQ5JtOfX5llB C063XaYb6M9QYIWnW67TDfRnqGL8ct9UMELTrddphvoz1CfZsu/aVO0HPr8SyghaXZZ9RX5aKiDD rP6POgYvQtOt12mG+jPUCELTrddphvoz1CbZS7ek+FH5Xrhw2sT6OLhq53eaywhadbrtMN9GeoDt 6WzDkqwWhKOUTcZsm5PstTx1sNZqrnVrMUHvyarspjV/C10g5A4FGD1tLFd8paaDTjJ2SbJf7pZW tN7nsTJ5JG4ouKLhhmR+DKW+HFss7Cb0mUGKshlreO4OMA6o/wBzLCJ7jbUty/P8oKjgZm4zOB+1 LJSthiEGbnfQhZ4QaGOoDQAX7w5oCMSAZ/1kTN7JKOaAGJ6A0d7gO8lvdg3wtMTCnJz3YSdZMpGb JhZXMRk21pRMfq33Wswvz0xP6O5f4pvdQMoIWnW67TDfRnqGJ0LS7LPqK/LRUQcdZ/R50DGzUMOs NUUdhQOxApQB7hu3LJy0VS531c5fl0yWUOs/o86AwQtOt12mG+jPUMXoWlVP2ERai+1HIYYdZ/R5 0DGbLl0+VdrjEd/mOayh1n9HnQGCFp1uu0w30Z6hi/rP6POgMELTrddphvoz1Bs2XT5V2bTn37Ky QhadbrtMN9GeoOELTrddphvoz1DF6Fp1uu0w30Z6gwQtOt12mG+jPUCo2nPv2VlBC063XaYb6M9Q YIWnW67TDfRnqGL0LS7XNrO/JRWYcIWnW67TDfRnqE6bTn37KyghadbrtMN9GeoMELTrddphvoz1 DF6Fp1uu0w30Z6g4QtOt12mG+jPUCbTn37KyghadbrtMN9GeoMOs/o86Bi9C063XaYb6M9QYJm8g U1VYXl5P73stTx1cIoe9bskX6iN45hhMUQENIoogAcywHCrLgzQloTR4QHIG8Ct2HNgF+4YMDODP pByEWMHWEyR7ElsyFn4GqN9kdY4g1P5aYTdJ3ufg/S52TjfhV9iM6EynJcpVJ8PrawArDTU8dImt KNjSjkwo00m3vvospfcOZ2H72UrpTYWl6VDDk3Lg5AYN2o2GopMdkyIY/VrSX5L9dH1H143CM5T/ AMWMK4UDne3pSN2Ui0S9KNuNuUixDztqthtNIqu92uI9l0Z0R0ilPDE1NWrH+hJhj/ROT4ddUgGF 9QlhCDfRgQ4LeXW3pBZMURH6tGsSQ7B3eGrgOxJJ413FZgw8YH8HOCtvdVYOekLIDD8oY58LknJu WUmv/qDK+t4wezWknU1pXToE6yrL6quY6praoudWNNQalPXV2TNWTwPP2auIHHpngyoilG8QCImF jrAFwwBoxoQPXlv0Px5kiMHw3hcggQ0ZzQFmN+fHcF3gwJ+zndISRLBk/JzCbIeRWFFXYLHNiqco FXrmTcuV/qKPv4b/AL4aYwI7DGwDS9nyXlySUsFFRwH9WyxWpNtRTkfKHrditJmMGVDnsJtNxhH+ EEnH5M1A8zyH0xZz2hzP2auI18aKWBMxCOINFrQk7gTrQk3UAeu4BmoCVmBpHa0sBAXihIAZ6tTg bi7kHis4NiUeFvpIYVWevSqlHKTCjhYwjNhlyZU2tKFb6yabeajeMmAwWKZ1FGFeeJj10+xzexjy c6FqFoS+l+1WJL/D+1FTEvdCyFP72cGjLd7+sWQ/9IoffvKmqnK/y3dAJTlw0umb0cEGDlAazKhV wpyXXS806yxBlkb26+l/3uFQ+oskfehjiCec+tz6tGV8d40/Tm05iR/9TImEWbqjW1aEVBqzEOKs DXAXLZtFrOl5yIT04CYidYaz3kh2cMb6etk4QV37gR2vPtgvQpvDd3leQYIU3ZXZoE+92s6B5ret 8FAIRSEXAXcvUpiadKZUbdRO0U0mGKCTa8moxbRbzUPxCmmufGNNQiZNRMJ82xzy2AiIQyPa0O3s 3nx1HULAqSbxP06dyu89Bupsied8TdAUf31/EJ1nI7Tpj31henXGqhL8pLm576BQKEHD/Xkses0q SZhs05hOnp4RMshQI6dMQ/RNiTib0KdWpftqoPLbkGt6FsJ0H4hpRpIt7rstgcKcsEyF3brKsRxI 1tT128xqFgtFqOaMPd5hfezyuNePDLIclswhQslMi8xxZ2SuB0vy5Td3CJpN456BRVv2w4ZYuhY+ kYnY8qlhN82Wofkb8j669uQxmBjtNOuVLMHZaaeX5bXjjaBly+XIcl8bMcO6N+7l0CTpsGJJqerl aqBnbDLzVEDosD6jOvT4s8q9Wd9MaY2kMwIf/AylTfE9FVgYJlNOuP8AybQVEaObR2qdYHXcG7DZ qWfQNVWPk7XW1HCmATpmCyp3t1/Rl7n01UDPHuKUUyUk6dBCwyvjGOfI+gyA7Sk2ooUMwgV8lPc6 MNVw72GA5d4DkiweuMeQDN84XsZWXRPFFy+NRxspMqDMJ56RqFL2CdpE971PNpcV9UReG9I9Oupv ybg8z7qaSyCjpsHrcM9VkL7IX5hjTMEXuOIb/FUIhpIWHNflKte+mzPT3xGOFxMr1qKyrK9GOLce FtJnULf7gm6hTdunsqueb4OgcO8EJpNNV8wnxUn/AFvkic6qFOYdSLGD1H9Y/VdrjqiPuhXGVOeg g4+crtYyAUmpn06izf2PY4ua3OeK+0pHspcOfQebfqi5XmOLjjnoeJ1Qq+lXFD8Qg5v06YhOlTfI Znv2bIaBYE0m0CFL8IdF2bw2EVAiZmsNPHzl1lTjt51CdUKjpzTpj9AdbuSrtpfFzyeF62hQfWsY 4FGmO06Xi8JmOo/kS80sYqVCN1TttTj1wTppNtVN+Q/ta4dcb+87QRY/TT8b9Hj+9A6ZTQOPt/OH Zsuszpqpe6u4JmZM+nUVgnuoXHuhp8bQoxNXyrOjgJ0VeTKdT8hfDP8AigWmsDoVKeSux9VVnFwf vtqqFgmVFCl9BjVXndUK+TjngOmaTKnZ/qNWfXG3x03EREs2Sqia0rz7cVvhhl5opvKvgZXwEH4h lXMrSunNkxxw/E/GikQEXmXTJinfTrPwNl76MsHxN77QQhTeG7vK8hR0y52tvOgshOja8RCuc7Yb CvtHqOznPr8K1Tahl18swsgIU3hu7yvIEO/Qa+Ax+hTeG7vK8gRjv6bV/lE2y5dPlTahgOvkrw79 Br4AdNkmFaniUbChy8VdCufp1mFXMadL4lQPvjif5ZZ0+T3Bs2XT5U2nIdfJWkSe/T8/9Ar3WKxl IMULS/QZXb4bn5TyAvtMJ79Pz/0AhCm7W/PE33P1FQAJ1D8irau4fk9+n5/6BOqFYEKbw3d5XkJP 2auIr8/Zq4gifs1cQRWCe/T8/wDQGE6my6y7xV5+zVxBCFN4bu8ryBFaO159sGHa8+2FXxy31QQh XOdsNhX2idUK0drz7YfaaXfm6xr7xWUK52tvOkspOhY4WBC2E/oPNig/VTutfW4TomCFMniVTqb9 j7XZXOJ5CFc52w2FfaE/WSdNZlz5aqHn3AdpNhlMdnrDVba8rM1nstTx1cW1tdLzDl1HgVUMMURE MIJJYAAcAOFWqhMMI1o6QipJpS89FaEK52tvOkspOhY4aoYZulmgk22vuZYJFH7pGFdp+8qmqMky aTMYLTod5MSecSyQN5wf5Ra/YSMP0uMPEpFjBJ0c0DSVmOtfhJLj4tJfZbjfk9z8naKfw0fQY2gw D9HuSuBNiuUffuWDUU/vjlYtqdbviVh0Ok7dSVRDLiWkbL8ITc0BFaRhcQkhv3SAw3VGsGDsQCL1 g9onLRndllSYbNDObi9Hdy9MXy3r4YDcASeTbZ+63hoavu/wztTz7G1ozaTMkI4zcxWLbE6CIiqd EbjoVznbDYV9oo6FN4bu8ryDBTRLyX0CutLOrLDNfUNdtCbinIgZpw1IBBQC66EMGfed+JNc5LSu xuby1TvFz3cPVSivCFp1uu0w30Z6gwQtOt12mG+jPUKshY7V+Y0/XKX0Phe88w/cTaqH8hWXlGzK 7nLnGIVCvCFpdrm1nfkorMMMd/Tav8ox+9N83WNXcPvjib5BZ194LlzieZy8hyGCyD1j+m18Q4Qt Ot12mG+jPUMboVxO70Cy6PC2kzpti5xBghXE7vQLLo8LaTOm2LnEJ13rICFp1uu0w30Z6g4QtOt1 2mG+jPUMcY4X1nQXcPvjlvqif9Ace+WY5qhZQQtKqfsIi1F9qOQwwQtKqfsIi1F9qOQxi9Cuc7Yb CvtDDrP6POgcNDgOmXmOYXLHA8u8RzWWELSqn7CItRfajkMMELSqn7CItRfajkMYnQtOt12mG+jP UGCFp1uu0w30Z6h0IxwPLvEc1lhC0qp+wiLUX2o5DDhC2Pg91OjLcd+YYfQrna286Syk6FjgwQtO t12mG+jPUOYTqxQxfwxA8i67zDrDV/i9HnTNeWHp1YEkGAfpKYQJLMJBi0j28ulL+SBxN0l26T/J YxnlkpKMjJxR/cnljp6mQ9ldmgTr3azpHsCwv9HzAjh9RMdPhZkOryjX2EpkpMhqkutlmtNhMojL yi6kbkn3Pc59DoENDpeexGYHWxjKxg5wiS+kUsH+RyhU2NLVmWOLyT8mU0dMbh7ZYmnsiJPwpObO pFDDDBEIgCHgYAwkE3wwwu4YxGLdU+ZW5obORTmvKkn95uOq77u99V57pi3XwEG+PSp6BMt+ivI1 jy4bcv5Jy2Y7elh7l1PqpUbDOaaiZMU28/74PJL+Q8hxflhodNJsmou4b/LWhKWnJiZkyCBDDUOx DQ7i1RwamAdaPMyk5ZU2IZsOzMBVqhuVAxahxX5BCmsK6ndoKNRBjMp01ED5J1mV9VjxnjoodHVe 6TuGRj4JEEqlaRXWjIaba90C2xzaRH1G8ndR05HUGMk9MbovIOiXhQYGDlRlisy/V2pIRlynKUC2 x+rSL36b7Bd1Ibzd7x563jGRT8rDMmUBGuQ0MIJegDEM4I1qO74hgsnDLTMUr+s6mAaoifD0Rzwf pcvRR7Ex0V8FeB/AjI/pCMpOsytwoYZJH46uSsW3fekyzMvvLYZujklu+lxVE4uw6FpVT9hEWovt RyGOKHsPLeZf/wDDxXUlHGcYZWFOXak2MbXPzoRSfbuk5OUupOJwp6voWxVzld3wyPyjwS34pw2v aAmooogIvQ1iXYEavqELDpcy9hsUSn6ps8yoqwMVBeWd6DddxIWaEK5R2+aOreb7yoMEIVznbDYV 9oxeptirnP3wyhwhbFXOV3fDI/KMDtOB6/MqVlDHLfVBCFN4bu8ryGP0LSQW1lvOrRlsDhTaVOl3 OiF5UihFf1NMnQpewT107jddA312C0s5cI/hyDGd9EIVxhqGN2auTyWl1pP48KnG8X9mpkCH8e/x Oxzqsrq6xRcp1cep2GufiDyGT83NB5cgnuCYa4l7B3OV1V2sEKaFAm7ef05qMhk/XkDj0KLsMWyP 27K6Mwr2gZcuH/HIcgudnOfX4VX/ALkqkm7dRXllWWPHwohcHCnI+WLHS9gvYyrlfnshEqgOup5R oU3YNW7OUTvs1QE6+lx6BAnxlY/U4mWXO99VJkPhTLJDNlI3GakNA3FFZJX+dqjslvDYQygzWwyl 0uwTqu7nWUY0DXdTaeE1N+Y8Z30QvIjouOoZAY/Wy58OkesKqxUVRxfDhrFst48W8GrsSDW5m5jf vDXsjjHvsjms8IVOeRdhzCBd7n1lCIHXGCnTQpdVTzDeT4xq7NQzPoEDSZpu5LjnrIXhT68TfOT/ ALHzUcNOUZNTuMR3+Y5qnppK06dxcdQq7SU24h7BlK6tjFBY255HzbSMwJkK8h9Og3VwsdxzCnth cQKfzqFjudVbhi5nf3/CqBW6vCvuWv7Yk3LFMiMiaqt/ZFPgVPgYr6djyjU0Xbp8Zyvqzasm4ZQb EpDQvQIECyWR76tZP7yfSMXthcbiZ8xjNVO0iMjKg415ahjpq8cfwCoVXaTYToS8/dwhpKg7xSEz YUU2MIECclZY5IsldejIbdcZq+mxifXsuR+Xv2mKumYKih84TpzWVinFFSraVEb6jEioREz2yvP4 ysuOED0xosozVAfzf8RRy+ynJfUCMcT/AKtQ8ouzuzP131dNPoVr4es12lRTGnhDKRE4TJprsEHA yhAoQ8YhOmXFjLjMDg55HVy8L07SQIo4w/PTnq5zRXpmkg+Xodv789joidFEzSXvkOY6H13Uivrj SrTvVnlzmhdvYJkyBN+Pgd8c9ZWaXnEV9MpqKZL6fl5V25IlYbyBEvNpIEyUu6ktT7H3wgF640pn 0CjqPwjfHKCUzNQUz+XZCGyGWkDJ2bSnQJ+Yn3PLVWJ1Qp57Oq8z88jmhlvfW+kQDoZ/GlefTq3w yu3PbeVMRAReYdMm7VXodiebvdCPESfs1cRqAx+lR1Yv9R4W5ENuSbY+dqimZOjR1GdJ0HAjgQ2X kfLaR0sFXHpKyjZrbV6HKi5755DM2HzvP2yZlJzcHFzhogXZmIcE1xvDNReYy8zKC8l6Vi9TGt27 d6rmvCFN4bu8ryBExbr4AfHLfVBE/Zq4jGEEXgjiGWdhihiA1SCGoxBp6lP1f/h5O6m6oEPTfN9n cJP2auIYIUyeJVOpv2Ptdlc4nzLlDzyb5DUX2QwQmnh2F2o7q7DdSPzHFjIWniP3HLfVBEQhn530 FBlTW+jLRad+VhNJsmou4L5+zVxBCFN4bu8ryE6oTBCzU/y6tHR35MxuzhghY69+PTqzzLPXkzZX bQvx1B+Po2xPvc8yylkB6FpIJrNC44aYUQE/7b2yJl1cm+XLX9kffq39Pr4BehaSC2st51aMtgI6 5Q/Laj7w/be2/BUQ7HTGmN/uvTBCx6O3yR/+Y+N1gcIWOgjljHN4uhvMV9C0qp+wiLUX2o5DDBC2 Oy9PQW2FfgYGgc3Y7kFbq8K+5WBCx0EPg1eqOki0FEE4mo/oNPEU5dXJ70CevPyZW6xq/hr6SEnM EqqsMpRxaUkuMT8zk8qLnvYwD/lpuW0Po2DiVsybnSNkchw5vo+PrvcUZSTNoysrSaHpAUGbhrme 98sLytmMJ2ELBxgfk57qpcNZWZqvAmOyFT8Jm89/xGw63P5q5rqabDF05JcdVMpXOSWCdlrj1z85 Mxgsun39f/CBKLVVWKRg4wV4Ruk5K33fYRmq0vcfjjjaxl1aa/X1LIfJJ4ol7qYOpOkx1XkSzVGR LGZ8lZKsrqRjsr4GyVSnLnyZtQ2kwydhSQciK1dVnHpAEseb0cXEFiRfhpaKctuLWmvRsyEhg+qW DUZ94GJcBsVcMEuB+R+BmS6vJWQ7KxZXf78NZcVPfNvNT+Wm4ZkbnFCxzig4ZYTIcdpTqyzCih8d dPMTGL8cbj/Tqys76463PbZeHCm0k/5cvYysRshppPLHIUTeNFmo5yciMc2SCS4qTnhe9+/ELa5S GSgEMMIZqBvVdu4epWhOwE6G0/qh1G+FFUHm7TEyIU0MyimEGMqx1vgcNBwiF6nKRAgS+nt88XM+ TXVYJjiim9O3FmYP8k8dfcQjAm6A6pFHfWuCqeTd99+9OOvmqp0p1ZpK9muh2ciMq6ww92y8muOL 7qdJd1Aq64pKP5C1cZ/W35LK80CpdQE8xM+nWHb790aXZB9bNl37Sm2nPr8yyAhlTVMWP1+NxmYY IZYJ3egVqaHG6u/UeWFJ42QpkCb0CeJHGrgd5W1Cw9T/AF9X08A2bLv2k2nPr8yyApywTv8AgCtm 1PuLY4hcFSVSi7zhBi3OmOeLyMyGEE6nNfl1jqYxppsH4TTJD6B6zDgdT6slobNl37Sp2g59fiWy CFvMOP5NXHJF/O6gjrOTib06dZflfztsGt6FvLz/AMl/Y4V15HufCmkXBmykbkOwVoUeZ09wxv6C LGLr5ZDkqtpyPTyWaUPuGQv83jGnabsmuL7WCFpSHQppiYN9b40nlpphooeQxchlI3U35CraqaK3 1wfnDBC2JR/yUzc2J7rX0XlWJdn75f8AHh0yVO0DLl8uQ5LKCFsSATHi5IFZ9OnidpvONMbAhTSA mvQM1+3RHeVIwOnn0yJYn2UrPyFoyeDoVidQz3oFHFsaLRoKGeiFI42YYDl8uY5ptAy5fLkOS2IQ ppAfIM3PrLgbrCrBBocHM1Pp+rb3RjGk+DqRrehYKe4zjzdHVEEdWp52YQIKczyi99ndSY52XLp8 qbTn37KzwmTSATegTqyvaVNWSulz7nAfE5OJkXm6fnO6NGUjzDE6FCvISjB8XVlzY+Oq0IVxqzT/ ADbbnO/SVLg2bLp8qbTn37K5j+y9IUCHo+4PkCBBjONYVPhcHm9it/mukh53x6GPZbseTdH2Q6dP i/muFRlvP/krfr2vMeeefs1cR+hvo9D2DCCxoL6V/wDFy/BeN6WHWtUE72PrvXRr2K5MgLplyInz errUkMJ3tir+JfKda6EaXm7INgPZnmcvoMLOBBqGn952pg4aakp+a/nQm15RN0zbT7WHH/s0QPyj GpvsbK5ifTDwXwxbGlOVP/0W34ZKbtY6MezDSb64wVYH5YoPOU8mJeNRiLi3/NbdYsb/AHj4DDWj EZXTyzIaAGCKEh6RawvLUrrbwXehBVdnftOi9oULwmgZrtQij0dtw472xh7C3LZeQYT8L+DlO1Vp WZDekIy5TsdUj1Z1mwm15HXjqIvbflRzVOHo/U0Bklfj1P1PLG2NG8eRf2LuUqeTfTDkAgQJ8W91 Em5dyYe4/wCRX1H/ADH3GUR6sELYXkJ+gWSfWfNeWMRpOn8ts1vwkNDrioDsaAf1Ozk4lyGW16Fe OZmydWh1Qa5gw1BFaLNCFmoKMevtjXmpueGCFDNfj305eF/dAYnU5SfV7th9+usWBTlJWgUbX7Hk d9OgaQtiWUEM/Negp1ERb674AhCuJ/kM2a2+nWdQo6nKSethq1V36xYELenvQJ1Z9GSmyJG6D6yv hQivKmuJ0Pp8ma/c6GSgN0LYTu+HPozaKc+eghR+sk6bFzjGi2nLXkIWBTQ1Z+Jv2k7cCLKDObyd C7z6ix+SjPCh4uDNbyf08/ftdTy8xh9Cpryb0CDGasnc6uBeDBChaqH8Rzqz53ChTrYBgrjDXEpz 6c6HES3E6qTpdlOuFDxlhjpmUhRdg1cWWLIVU5X059L9R1RMnUy9Bybqyqe91ekXhmtJOSVWV1jz U69MX69BigG4jiEW8DHlWoqeLknTs1Zpe5c0OofC6+jICphPkAhSmbUTqys7K9pFVkJ5WbaBoehY LVbGL/CcX+pkToZ6XnV3i8MfAmvN5F2DKbZ5aXkdlsNeYWQePNkwiGCEkMwArRsBgz+pTzPgykI+ vq0rE7APvHN+A9S3vRS3wVtH4PK6TiCuHtP/ALjLIb3PItj1AsSIm3IpWycTuKklxi+VF8f3vlHT S4iqvGqUm+h0vNgvfZC0lWkyfAtEbM51C0JvY/kqdF5vKtaVjrc+p8I1FVphSeelpO2JoN+q4nox 1YqlgzlhUtuDm9axNTdlSpH/ALZiSHhBhN5hpdrA0ehbos0N1ekch9PKKTnk0GT1wn+r5Rx30FWM QNJsSAPGPvjYdMPPHd8YiiN7oDSgVCeoN5YWSdWZERETzrdAshVwiMFN7oiyxU0qwgUV5pYwqOMn OovueeTIMXNQ2rKUnLN1bqmE0Dwszg3AvuN9wuydmzUnG2y2l+kNHLwxE1hBvxrVhd6hnhc9zi4i 8xarNWf7ZS9zsmTxIU9pMdA95p73xOil9J5u4avrmAHCMx0rkCer55VndTkylCiiwKciZSMdE5O1 Txj5pjmXIZPhyVQwUzM0yvY3dvSn55wVurwr7lYGwpIJ1Y03OpPJqryQx+0lPE4oPNjPnJRmi94u CfGEKr26fTCrmirXjdpLf9pi6vnPZaJlQq+uN5Ap+nT+cd9OmPNFX90qCen9VtFLteUMFxcQcKYV bctOkUdMuIH11QfeVdJRzkdwnROPdUozvbnVQd0Co4BfjiBcxh6Bm58jqNdZlliK+uNhB8vkhwyl wMyiYTpm9VP5C3uIn5zp7g2nPr8yJwuKSBD6BOrK1NtD6TI6cuwV9MuTH495xddnOHLngdO2FFNF Pixxry5LMnJBP1wyvqys+kqqzfktvPOJ1QouNhOaWCfLkK4qcr+Scm64WPnxf9P+UfBcbCj9WI41 QgeeyFDiIqaAnTNNRmnebG55aTfqj3gisCFpT6+rz6fGfPY292SgrxBR8cUJ1X7fFvPO6JlE4HGB VCAi848qpNycleq9VSjYbNbSuRsvzRbU9G7ZGvU+WHRRTqa0bcwVyjWWI0HRZLWXMlPUbddopG5K b01zK2mPyfs1cR7XL2jNSwEMTEUdw9ARWt1wD72F9y8xmJaTmWajUDO4Ibu6ma5/qeGzDhgmXyZW EZiLLbZ/wL74X+fET4sNuZHF/wBl7qxshI/pLYMpVJVdAvLyzJJoUmpyh+LLPfw4XPPOM0LimoNh QWVFqqKs0metQxRbU+sy2Qe8z8Bq/LzooyObyJYXpDLyzJJsVMn4yky0IG58aaTdloiMlD49lTZG 0gQkszAgOw3ioffcAbnFFMfBnJVzKxOwqCX6kea24U1zG0ZJ0CZWWVda/K1RcI6yqgTtucEIUyed z30Qg+OWp45TplTDhgBWvTttiM/52p++UmV99XcR1U0RzxInpjIE2LKMv5OYtH42k9T/AHGWg4Wn W7iZsWEgGSiBfeDe4fjm2DO6+pa2CDDBOwkOwAu3tu3V47zvW+E6my6y7xEK5zthsK+0U+R+EKQ8 t1U00lW4zW388VFQ/fR9rDK2quNLo3CeQ/Iaj+yNemJWOVLTQiNA1DeSD72/FbDDNwxAGHVNNz0F MPduTDHLfVH3xxYyFp4hQhTIIlW+m7a61+V7ycwQpUCEsrn5nZOYWGJF2Jwhx76s63I+PJW1hwiQ r01SrGRlqrK4stNQq/Wf0edAP6xWMpAqFYcU/Ta+InYIUvbp4v4w012PCfrhNk2AfHJ6NGu+/NbW CK0IUyB/p4Rz8176gwKYQIp9AnVnU5H6jhkPVFwxfKSWDDkexlhuSkXmazWeqm7G1u3a/S83jm/h t6Tko8JBrElZKoFliSPWfMcUI3ymlbFxdeVG7/ZZ5x0iqzrFm7RA8DxA3hwkExMzgEE1O9vwbe2M mralbNOrDWM0Ady5ZupzvWecPHS6QMzrCR2CtPjKx8CbEtz/ACDL1HWbo/fT3wx9gB6MbVl4lVpf 4TUDSVpPLXnqkyVt/Wkrf56bn9HT01PFowA9F1AppGRLjCao4y0FXz1jyTd8AL+fNP4LP1wLoBjl vqjMTU/K2ZK7HYjGNmiiYvcNatMy44BYyWs+atSaE5OH0H1gCwBDBr6FrgM3X3U2anU1VXUVHzZn qqoakpKip8WKBxqs1UZAT57y4RTaSeiGXa/m2wOELS7GKCp1fL9L6DGnGIxxGKMkmI1JJPvWzQbG AIRS4MHAem668JPOpsusu8EIWnW67TDfRnqDiCb5sUOctOjdEzNnvg6Dzjxqjnc4tTxwiX45PRo1 335raxJ+zVxBHU6bLsE6tXkyXsEHJ5a6e43gqFJ+zVxDBCm8N3eV5CIWC1aJix2fwy31AhCx2qhS +gPm0izvvpq4cYjn3iOaJhP2auIIn13IsaC7wQzWOvJvToNNEOD4xpyhh1YgQpfTq+MPN2nTGvc8 dCJehTJ4lU6m/Y+12VziewQpvDd3leQI6t/Tq+ngIgY6edPt6I6Srrp4idEwQriB9dcH3nXScMxF cHCGUidAcE5nm2d8cuUL0LB/T5T5N+++ggwQMH5dNp1Qdc8iyxGPVCsCnLxP+PQa89mdzxYEMvOx eSDvJ7qbdloq6FgoLyKPN8dUAQbBUULyTp9Nhuft5o6pjZKXvv5DD1er1qhXD3eKHyKxzeGCGWyD 8eZ+GTTaVNIp5MJCnPsNZlDPoyFWCEMlU6VF6eELarK9meiUbJRn3Y5N+HRUDbGDMzBrmbdmzK8e 6pQXEpJy82dAidVwyO3gfrhBOnPL0H0c1bizhOhkog83PHsr3WPPnI5xkCELBZSFL26/nxTXmy63 DhFYELeQfiE+cn7OAhSkQIUswnT31FY7LkhXGsIOplH5yengCOplH5yengCLnN7LE0scwD4P0HnL /uqVPp6lb5aNw8/473+yoKaBBgHkPMH/AN6jnHX7yt/jXTeY4ID3/QKmj/h7qDm3hfivJtK/vSHg Pct0PY/Wl1b0vsC6eY+FNhqqRWe8rfqOuzJWO5HskDBTy86G+EjzEyWJGtiS8tFN0PiNte/pG5zv jx3lFCnOOD/QW/8Aa0wDz7ne7DX1K38vNNY9LGGCRP3QsFWEiQ+PfhRIOVLFUn2sU+orHX/SoMap phMbLpZZc1WsUMJIpR4b7ss8GvWa0XG06P2oGZgRwLQ340v3O7rzH9C2UnuV6V/R/bk+5XVcKkl1 JcW3H+fXsHRbdYPZQhbyh6BYPzhVyZIjwnsBpL0m2yx2qr4yrNGS7YZa7/zRhbj2Wj2kSV++RjSf lGgXvN2+x2W2lMnx9/WLVVbvEP0mQg+NZk3RoxCXGLQbiKk1Nd5VugswBLxSbC8vuIchxwFOWazg hbyCd7BXZyzTzt3VC0IWir/IM1Wr+GRyvryug6iiAxOhYCD8enxk4nqdGwi3G4OELBZUO3Wee7wK seYrelk9Cn+oqyzrPJ4PjEsgKTdVTpT6isqv6pyWyshTlNjoCS+br6zD67Q93MMxizoWagh58s8T PcUDyAp0SmXGUpJvN15pQo0v0aY6nCnLDE3Ea9jJxhDnc62IT+5XHPx97tbnx0lltDhTwbz8UCdx 2Z4XQ1AiuDNwhUd+4thC0M2XijOknTp1rK+L8+48lop6ngrXkz8XT8lDf3C8MfBKnTQx5Wt885pf mylk74TN0rSmF1PXvDYorQhlgy0yN6BB+1qbyPZyQcKcvJlLMKKjdke8qtcd5Bwx8DKdMlcn+Duf 8Mpd3eL3jZ+QnR7UFpaV/KWZOtEnH8MVf3NhPN9puopfEWwysThidZwzNf6ziunaJYAmIM17igud 3NGe6qxRIjC1L9TSz6goqyyrGXzMmkR0HmqpooMx05wHp8OSVVUW7L9lMVXZDUVPJNTYCqqGzmoz fKN7jbXt3l5LnUeSXtaH+TFx5Dwa4DJFMPFmylk6reQ0FZ+LeWsqn7vyCMnkZEbyM3OcZkZR9s6B DY/yfJR+QReT5JPdRleRvI8lVOaox6zojoZMjUtSbiZ21YDQM0BBILjlhz8p0n0qlfEjMjKeGIoI XEUcTmpb6rC8PWJ6XDeQgJqNMkntSYjnFSS2jI4G7+I6h8adgnWjSSpCmWMm8kqCNa8oiLOWfUdz 7D7UuSzZcx00vtjPaFyWZ+w9MB6pDZ3igBp9qC6EXU3i+7tg2h7R4JZoYXLCpiOG7dTfW++98Vy4 aeENTZS0uSQk8x2gvoPJeSouLh+RjkDNxeV5Pk+SXkGVXtjM3k+ghoXK3pJYWFVI0Fdp4KiVlhUL zxVW1ypxHVA37KIGRjqOXle3I/a+URlQ7yi5eUdpG97ywvhakKjlMyyTKTKVV9fV/wB75PlmXk0U uqIy/fOpidZGNL0z0dmpqTMzKT0UJhAJhO8tDuh4VJF1VtGjVtSUtOQeBNyHhtEwh8WoiDs2tESX qQQXG4AYcg5YdJDCMm9Bg5xWELX2Z9sHQGu7ew/S/TH5xJxVVitKuyp1J+I6DyjwQNs0sy1JOkat Q8nHkfQZ10lB2gYIlJgek4h9OylZVj89267c4/Pk1KzgLHFsLmq3ufg+HtEtNScUAMpUEA1IZ2B3 sPXm+S0oXMNkpCTduonnya87j2BMnwwIEyLt1HFtFhvpyQznp2AaWDGSh4xP9WLMfntHhooorxu0 pByORHt0vt2VWiVZBYvTS8UU6aY12bqs2sV9cb0/E06vTlKyg82ygXhckdJV35Nlfm4k/iKeuSbk qhS+m2PzQKh28Toq+lTfIZnv2bIaBX0y5zshtK+0WBMzWU7sF5Zdy+jfk0p0yJAhf58SzVBzq6Kq tYIquuJl5MeWg3c015D1Pq6ZD8unVX1ltymUDFwTJkECrfTdtda/I5xvr67MXxoyc0XAir65X/wg BNMTXm6fNF1rtmh0DiPs0VNAmSn26yUPnb+SMgoTIeyuzQJ17tZ0giiFcT40rz8at3MNggXoUKDG lazXu2nkpEBFwfTJu1vzRJ1z9R0CT9mriF6ZN2t+aJOufqOgRCm8N3eV5D2Bjge/zHNebpwJP2au ITzqHLrPvBE6hy6z7wROOwTIsXToFZZV/mhc35sg1vl50XZASqNYXpOYzIpsLT/gr2kzDriw6jfG mGl+wE6hy6z7xJ+zVxFctNTcqxFag1c1vbe4b1c10TMrDMg0AApcOyfdmuYEr8D+EzBWtY9iCz1e qfA5WSe9835d7swt8g+lPhGk2iV1FuJ/dsoH/K3xnX+feYWvHRjHDmZit+t+R2u60YPl5gBkBLxE sp0Ch7kpQOL32ZKnF1BE3GHcd9AzQtiTnGhm4AB6IuFD6L1Z2uP5OseZCblGilojEG/eO4EGjvuw vvKsEg+khg5lt2Cde9zbYoxSUTjM8nv4UM5OJ77BnhCmJMc/jHm609y3Dko6oE4cf8IWBOX2D5LP r6kbbYx/BJQsknsy0m5R1BXkKmJmYGkThgl/INKroZOSjWer/wCSVv3yZkDdZYZWZo8TFiyc2xlC KgH6wO4Xhy1+9lxBpBOyrQzMJIcCgrRsm41uXZFCm8N3eV5Aifs1cRpfIPpXSVbGLqMsVFZki0D/ ADsp++TMdwyeI2gU2wymkiVk7KXmY0lZ3wtUXesqXQ74UPrp1+YsyclT9UmGj6oL3i4hx2Hos3K2 pKTO/VJAo7Xsajjx3VVwn7NXEUfCRhIYeDaS6xKNq+crJl7zsl8W81KfGmMHCSqliw5HsZoN2Ua9 1az1Wl3xnD+Q9WSykc3pSSklx0ipeIEDDUXIFX4nVD+LGCy3/nwh32NY0XjzW1Tno2bDUP6JEQZ8 CbhSm8nETz9pfoH1TrOwBHqa4mgccPU6QSwlrLjDNKhXx42k02gtLmJSbk8yaVCnNTF7rbt8MA/R 7UcHqNXlVKpArNGXGT81ySqvlFZXRAMMD+B+TmCVQNOgc0pULSm9sShxMnvrYrDrznF+3PE/Zq4j IWjbAh/ZJGFgARrANSgYtS5uams2zhHFtc2dYkuAS5Dsx3sKhjxqzvYAQK+hTeG7vK8gR1n9HnQN UWzA0DGjUwbtlaEKbtb88Tfc/UVAIQpv0GV+qG978hCr9Y/ptfEMELSqn7CItRfajkMEVgn7NXEE 44nQ/j1l/NVVdZ3PFe6yQ/L7e4EdZIfl9vcJ1QrQhaS98vCGiNdh05AehaS86vwNxE7JbpMUjrJD 8vt7gQhaSD5el+7uz2OiONnGXT4UV/63XLebh+k2F5NSnOrvrfGgjhkFH6yQ/LrGvuEQtJB8vS/d 3Z7HRGO2b/kP+3nkOSLJCFvLz/TrPLypsz6HuOT3a8vpzOpq1uFPQtJB8+jmppqp8DN7nEGCFpKM PPn8a9FB3RH0xwPf5jmqFaEK52tvOkspOhY4OFNpU6Xc6IXlSKOhaSj8vGGmNdpU5QwQtJB8vS/d 3Z7HRBFeELYTki9ObqjzO0ZomYYE0k6Yu3T01cwueVRDH5riBC/z5W25M1lWaAYdcIJr4Rbuz2Oy aBHs2XftKjac+vzLICFcT/Lkfc+NeZ8K3kQIx1P+Pp2QPuc8yylkGP0LSQTPp1ajw4CdcofltR94 n2bLv2k2rPr8yyAhaSdE7t35suXl1NgYIpSLyFF6dZuO2ELj4mMX9cIPxFVFGTvyuopE64Q5No42 UYDv+rIck2rPr8yyf7pVj5Yv+kfvuj/T6/8AKMYdYq+Ux9+s/o86Bzs2XftJtWfX5llhDKRPUgxg qLSfRmLRZA4MPdL9W1cBidC2E8O3ywdT4ZDOt5Vj7oW8n+XsorjVZmrebg2bLv2lyJlyBrX5/MtQ fZOGl1lgHksgmPguEhlxo/Mrfjfd38Jh2n9kaaSdcwIyf/38ZdjveVv8H7RxYHtugo/9DDgC3/8A NeWaV/e0H8vktmOh+0urOlDgPXph5e7xlHDXTaZcmPVAgleykOLz6BZVq66Cq0X0jyXdG9NieH7A unoP7pEmP8brfUWQrckfTz1gh+S2jUfpD8DVnbNiciIGGJ6vQwUN1/XfvfZdDKydowu0MQIIN1QB UeurrzAYeJLIJH4acLEjlfGVZXYMvJUKSljn8l9db8+QelfoT4TkEsOirgYXk+NLLQZcm/cwuF/O khXsG2mrLCkhwv8AZD5Nkwekg124gQ+by9k5JeU6m+BdaG5gtwq4vYhvgdjxvh7GPKrHMDcsJKkn 84kvLzHv+Vt1iufd1GVTq4V9+lMr+stFLNmgNYwCAa1CzCGEgm/B8MTvn0dmdkt+0ZRhUln/AORh DDm2+g9a7MIZVIPkFmD6aH199jg4QywqmFnJzuyVm6AwOhXE8KHxhrOtzi1vuDhTXOdL4adRPHk2 znPr8K9FWd2bLaZ9AorP7a7Rye0XlUwkfiE7DVnFQ5cLm3NW4xrehXE/y5H3PjXmfCt5EHCFpJ/l 6H7u/NY+ImRbMocJCCa7BhqxLEN3k0HGsP2bhOXkKX4jVay+GVlGt0araCpMazqbST/L0v1atQsC FsJ4dvlg6nwyGdbyrBFuAzcJMo0KI/MVbF3QvOOR0I1aoWhjy8lVOuUVhWf+pwi+rJzaNN1NvLym mn5/Kb6tN+SoZQY+FRuKf5OrcXX6crrAc4nv8hyRdAJHy3wjLiVXTqKuxFk3GXnbHz5IRJ+mmI2n kjKnCawlk2o1lcjVlbz1TZCs5mss8nLu4cr5NYfurcXn2U0lk4F5ouU9+06xmpT6UTDTKsx1U0lZ Y+dkuPflOwiK94qhmYoYgQSCCCDmC4/exXzFBDGDAYQRENUhncGhHrFB6l3GwaYZmrKpgrC8nY6D yE6ot4maqprLRqdTOI/KOBweROc+hzx/hu4dZYqaRMgUcGq4tH5JQ8o1vyIvgcC8gizGVTjiUC5z 9GzpDeW0G8nk40ZTSz8tXbh4kxVRmMXyT9q1DgZEZkbnudCl0aR1Ok3I1G1Gf7dM2ZdK6BZ/eqzV WyUGl5JOe8zInkTsllQ9a0bti3bclIZOTtEwGGHVfVrD9VsC1HyvxK8ptuz7Lsmciim7NBhJ1of/ ACR+lcSbiA0RcQvxIctqxKTpW4WGQl8pAeDlCxT8siJVNrJPLIjIoE/2pkRZNOYVJs9KzD4x5hMs SVkniy58EJVXjN5OiRPM4lVE8tI6FKUgJLqStM9X+W0EBm/2rWWUrW8p5GTzM2t5XlmUDN8Ti55Q If5W8GEg2h5SE16SbAWTVz/cH5bJV/3MC/emSN1rvK9s8yI8ozn/AMX0sLf/AJHE59YBGr5U4D14 gWvo/DED+qAQKu0Dm6nrDAkniufil0tOkF5KM06XBKoNtX8ozNVNkpEnlvP/AI/K8o40/uXHTGkV aUnTR6RCFSaJqWBdEzyVSd1kuJfLmyfT2ftj8k41GVlY6fs6SUl2QkPy2WxGQoJ/KJx+UqqiMnVQ LyPJ8k3FmKtxuIVyXKjI9CyllI2mCotNAsEReWpeUqeR5ZrhmUPJd7UiOmBm+siOgddo6PaUS8lF MTWkZJEIBhIOAELOwODAEw3Bt9MrbVgePNQwwaNwkREaohiDmJg3o0hZqmrX7g64IS06XHSEaCyn StMlVmEVBKjHoy6TprpGGGx0isKjTRGgXjxg3/M+SyRpHZaXUgsDDXQp0/lSPZjON1K15J+S/OXt vKfnI3FmGjMvMGOB1TW1hOg82/tdR5K9OweHTctNS8UW02kPEeI1FQfqs9AfSY7t4BuXrtlavjyk LWZ+iaGFoSw1ABCwOqSHA3PQ79y57tiXkuGklxhOgeslzTVC2l7qxT00qm5O+fYzfU+0owqzFA69 oJSSDkAmWuwarSzQyZ9BZnDF7SkhJxCXYIFlZWKjWz00016RjFkVhdNKRe23+Oml76k6Zcaqa2D+ XxKrxGQGlI9e/J0GgrHRyxMnlkMiKIr6aR69+PT05q3ab6baARU9MmXqMeVY159UPBxkB55fN5Jz Vn86KI11xoFoTSPV4364bdNRkE64wZo+wTq1JWXv77nReRV5MhTpn/Biqi4uXlnqoMATKb5fWX2g Qmk4n+XyO1876gvTMGZSzHnPNcKIm62gEUToKTT2vhnLxPVWE6bF03YV3m+2nu2hgnY6BCic4qKM pRI9pu1hOmZtczlMzPb3QygiHQoTQrSu5PDHOMLqIU1+S8QTq1AiWlefQVO5oz6DIhARee9Mm5O+ jYRPymZ1CT9mriF6ZN2t+aJOufqOgDz9mriPd2GA5d4DkvL1YJ+zVxEn7NXEJ51Nl1l3gidTZdZd 4k2bLv2kTifs1cQRP2auIr/a8+2BHa8+2HWqE4n7NXESfs1cQvnv0/P/AECDhhgOXeA5InE9+Iv9 rrc7nNWMXt7A/gylIln12Q7Nxhaga2qe9ui2NUBkAEIVxYnVd6dWhm3UHHmgd8tERENmMV4dy38L 58xdepjDDFfDCeIB965fYTmZg5ZrZ6qkAnlJ5quGothbay71kzOtDe/qSJ1w0PoJ1AU2w1WOleot VZZyv9UXOrTX3WkR7BkCVWDeXHujlAnQSOlJMdbtRdxvE+SdA9cCGJ09V28ehymrHJgEiKKlSQTd v34dFp804mwzi991fRfq/wCasCFMvN5fZ7KTryy0lhqLjLUnrnvkcaXHCuqjWOtEg5BsPBuwVdhs NRVv54W1v4zX2rsopvu5z9HZCopsKsnzXvOfM2ouqeQ2obFjA6n2jpxMLuXWXcNd0hmBDCJSEaoP 8Ia9jVmGDcFmbH8AxOYy4r9Yvvuwvb13NerBPfV1fSJjlvqhOhU08KHxjqOpzj1OvBGJ2esNQW2S +5/U/ru/69Mkwx1P+Ip2wLvc8isyj8xxYyFp4j4IWb+nyu3x3uylkETKaBC9yxXQcYPifLqSpBdi YY5b6ok/Zq4hf2XPtRJ1Dl1n3gicY5b6oIxy31Qnch+cbe8EIK79wnROEK5zthsK+0EY5b6oHQqe RYtN10I3P1ZQwQoVA/Tp1bY6x8Mr3U5hOqEQhXMivYbroxufqyAjrL9Ar6OIHmVL5xqMEIUKj8vH nkr4HSCKY5b6oIxy31R+EhUUNKd/NNBQp0gqdZdv/UfcOGGA5d4Dki/EKbw3d5XkGCFMn+Q8Mzst MMmcL0KZlTvp4R0VXbQxJcUUHoF5ZppjVmcdR6co6EX3nk3yGovsgifs1cQOhXED664PvOuk4ZiK 4EIVxBO+gy8bX684KhET9mriCJ+zVxBCBOgTQmFY7NDu/NqYTKimpi6Om/NGu4Toh0Kad58IU1Bg poU6Z3b9/DTqgB0LHrQJr3XE53NDgR1annfT9/NefSJ0TDFP02viGCFTyLFpuuhG5+rKK9ia9Zp4 glCpryajW/bqzgqFcFNjz0J9W5y5bqXE8EJmchQk6fVSrN2XwziroVNedpjVTRve+ywMELHXqKv1 y57852FlqEe059+yi0n9kIQoEOAxj0LKx90hl62JKC4n7yqHF8dkPZCFNOhwLMCf+D/dIZZu/wCS ygyu00XDjPP2auI9u0KANghmqDUf0VXlelP3rD/KP7YFljAammcMmCdP/TyS/wDjVFFDrco9OH43 n+MPLvgrS4nhLwbp/msvJL/408n0VUvo0D1EYmnQpvQflkbtlEDGn/SPSas47tUf2weRW0aE1lp8 PVzxvAXLD2T6Ss8z8E0uECD4KuSokwuLZXt5hO/9cuzCrexdykmcI2EeRpF8fyPZbaxSPxow21U9 z/jyihw249kCkenb3RklA1ZgvvNlJJeU5GdPx11C6FrbjvHNDoBt8mD0pMG6vjGLdfqkppMPsbrF 8onay0DmQmRaehkUq9YXN7kMAQwFQDUC5hivjxpcymlMETgCLVq7OGg38RmHPFei9ChTxOp1F+x9 jsr3k60KiFB+PQLNBERHZkz6cwiFgryeiGbfny7BaGZJtRTEc+v0GXMNGgh5JE0MRhJDh+hZ+Dsv Rx6QBG+780wZqFh+boJlZWf7ZXpe/LU8XhCx1FP2CigZqssfO2suRzUPvohea9TkSopkTkDVhzo5 pFwZsiVBB8PT4zdHSMdtAy6fErNnfv5lFPB4vJkTjTs2iGKR7nZ7RYWbg3+cJyWcmZ3NpnmD5jyb UVOCBfWTo/LKYVZM1FlQuKmzUH5ChxZ/ztcqJ2XReQbQMunxJs2XftKjocGKdN6BOs1fkZwfVUcI lYeWIt7BwPoEyX31aqyrK9fmdZurfnI4bBeVNTXkKIyV06s7TpfRHJUdMY2BTQNsy+HK39rU3800 OuHKbNl37SHZ2BOSq4cwgaqyVi3DJQWR1dIyQwejegnZ5C3GarK/1tc7qvC0L2azZVTqv58rKyvV 5nGEC5yuIZgY8mscxdMvPWbVvLS84UaIjgTAcXd+s+4qjZsu/aWxGBPBigYKJW6jlwzVZsfDfNPf Kmg6nVU2UVdUpBSnJbZSioN9qs5Yb6v5JY0sqh+18hbMokfk+QZPIj9s8ydA/JL9yRvfy8wem1mC 5AoqLEVlenzRT6t1HydRDamTUpU6miV06ugVlanS+jNog5w3zRW2ZiwpoTMuAYIm14TUahYH0TvZ wDwcVZaTpZo7LWpLAwxf+Suqd7uAwvoWFK7mqAVvgSeBQfbl1j6n5ZF4kew8uYa4M7CYuo1V5mrv ogbo05Kz5oC5r4S5QkXYLqqrvIqSeRwyHTaROe4euj6RbL1QSPSYPR2LQ86kYXjJvLBoXa2swhGq GAJjLkei1AMDibwzutg2m1VJlq5p1pYd5JUk974vtc6g9B0DV7CNhSQJEKx5KugNxERv8ozODiIo b63wGMJYywbi6i7dq59vOU9Wt7eaS8mSvn6LDfutqdkHnGkums5asOpKPqChBdiKAimW7Mut60c0 N8Czmm50jXDNC4oTqhmc1qK+u5D4QsJE8lWH+c86nkefMUD1flJKrrJ0/YeYtZOuoyC8SkQkmSmV 17iLh3vGJ2kzcuZ/jpgd9I82iJirF6RvO+uI/D1Le4TqgCE6ouDFh6m4dFV0zTrddohvozVirriZ OmKfOyirKVT3Ui4JlOnsM8Ne4nXHSQTrinXmLY6Oh95uE6oVHTJuTvo2ET8pmdQTpiQR7e/WV9Vp PoFoXGbXMc2vucWYL0ymgQovgOmuNr+TN2QEVHXK/wDhFfTIZ76sR1uidvORxC4LinlQX86dDsoX plPnZHad1gnWQVHTKSdClLRkyPKNMKqzN5PoC9cTORLDnVZatuw6YOeLgmZqC2o9xV6ctgXpmago x6+2FJ5qL3Aiw+mQr0cmWqzO4zttdAJ00/G/R4/vRlBMpoI9v416qNRVhAmZqCmfy7IQ2Qy0gix9 26ZaV7HnXn5cdT4CC4dWoMbV+c2eJX0QfCAuvZsu/aXmXTJk87muphF0clTxO159sB0ybtb80Sdc /UdAk99X1j9ALyNMJpNk1F3Cdrz7YDz9mriCJ+zVxBER5wmOKeNHG5/Ch8cm+cbO8L0ybk76NhE/ KZnUJP2auIIj55e+cFo4BjOpsusu8J5+zVxEnk6GiJ8m+3I6u1wj2bLv2kTgfs8r/LrPN4XTyH5D Uf2QOKBLtdRrmLN/2RELq55q0O3WfgbU4WcDjU/kfPdry+nM6mrW4dYFv4AvfqbV3jk+Nl0dJLuS eJJ/hxWv2uA4ZgXhqAHD6tVmDB797ct8F7cc42ouMtdoIne/XUMadXEdOOsk3y+zuHN5sKUzggwT yrQfCGXKRqKUIfns85U35x0JU/fJVZ69DzpTx08xQ0xsO2oTaRb1fZkXowyxJYgHWZtwF/kaK0Y5 b6oInU2XWXeE6FCnidTqL9j7HZXvJxHouXvfoyWUadPWaBIqFYEK4nhQ+MNZ1ucWt9wInU2XWXeK /jlvqiY5b6onVe059+ynHZc+1H+ex+tawDP2auIIxy31RQm09t8q+3Y/WtYI7H61rH7jixkLTxHw BdicT3ZcuozPoq1vBCFMgnS7eL9e1xV7wnBAnRWGfUf4p6R+eYz3L3v5tcE4IQV37hOqFYEKmgTV kWg9RlmN/cCOrf0+vgK+grv3A+eWPly5vBE5Qs2e9PG2D3P1uo7wfiaBC+CtuoqphbnhS9AhTLCG g3xoptqjTcD8cWMhaeInRWHzFCeUtpO1ETuXiY2pfI6j7gnQpkHyHjmdkphkzgjsufagisCFcQfI Zs9t1Os6gwQthA/0BuiWp/cYq6FD47+87iBCFD47+87iE6oVwQtJBbWW86tGWwOFPEUznJ9L6ctF DnRe59dQo6FD47+87iDBBXfuE6K4TKl841GGCFcZT3ecv5pzkRxuIUcOEFd+4fEzcOH4hULIKFcZ U16d6w4zrhE+6nOdhfiFcZRfiMZ55rN0KXCvoUPjv7zuIEIK79wxSoWk/siiaewGMCYQLL/ukMuk yh7yt+7ZabhxOTemPOW0dsPZD/4B2N/8SZL7W+OKA950Cb9Qw3fV/wDq/wB9V5HpT96w/wAo/tgV okemToZUSWToE+LLBSlkvia2Vfv1RAetBmoU+Kq/WuLLLRJTeuLapS0NBvzZMroDyTsJNMSjk+nc 81aUjLXbYtoqb364uiPWypoTmleP5HU6jwdl3FqP0nX2ZwH+C2fQK60XuDcngVfwtSVOW2CbChI+ YVnt2QkqFLFHuj1K9+V++8i8w2ACVSeQmGXBPKtP5qbBwkSXXFz++rSsdmdWPWCpqaBN6fdSUOdD 3DyXYYJNp5B4WsKMlfgyxJeXkqFKv+WaNNNFBlCgYr6PohFI2pJk6w1ImFCwMLO1WLAF2qQASFXp fLt4lmTYoBFA5BYs8Duee+j+teyhCmQRKt9N211r8r3k5whTIIlW+m7a61+V7ydifBW2DlXg5wfy qn/wokdJdtPL+pbjzVbsrqaEpqrbmjyZZzMeVzoInYxUNHEDkBFv9bX716HJftEj4UQDFoGzpDXH DiRkycoU0Ow82e8qadFvL4hwppl5CXYLzqqM9OV2nSB1NCgprdzboyRIoiwKaFBTW7m3RkiRREqy wDADAAfh+CIQrjVQ+nXt9vNbowIWhjNJOhS+n3xjrJ2XWYXoK79wsCnV/wAQLlXBTaSeiGXa/m2w ZAYLST/j++19BZqLMgxup1f8QtCmmrz8SdtN+4EWaFNsdl2HwgtFlcNGYqCFwY8o2qhJX8xKh3mi 49+XLDPUVNQwuppq8/EnbTfuF4Zq383WM8NexzriAUIOH+vJFtAwZYL016C/JZTHLWdRueMsMeWC 9lVi3aLIuphS9z9T2a2Kuaii/RRkzC8M1vUvu2R1FEZCGZIYCLACvzf6WKmZb1i/Id8MaNduAzZY dl28TLQZQuhzQ44llIgT/j8uk3XnRdCikazqbeqn7e/eTn94ce6Ozn/qFO0HPr8SxuznPr8KzAuN 5BNUbb4ZN1pkMbthMrpjidjtlmh9Ap65KTIn5oKjXoPIEC7KSeRaXxyWVVV7TDaDn1+JcL7thAg1 v5dXQXgT8ftLF45fGi/l4YJmnPZS2R5OOY6SeKumXE8aHwhrKtzj1OPMJlQl6ZCggdb6LtrrH5Hv N1fXEKCmt3NunLAjgGC4mTps9Oao3v0+DgnTf+PkOi6Baa7QVCTplPnZHad1gTpkPJ30bSN2UjKs WBPVdvCdNPxv0eP70Toq+uKdeYtjo6H3m4J1xTrzFsdHQ+83CwLiFPTU/mzTkgRQCdPVdvBZBVdM p87I7TusFfTKfOyO07rBcE9V28J09V28ToqemU+dkdp3WCvpmZU+/RHdTmrF4T1XbwnT1XbxOqFT 0LN86V/12nLlLce2sQOEKHzpXLIuZoby0WCAi8n6ZN2t+aJOufqOgDz9mriB03a2UatO8RBXfuH6 QXh6YIU3hu7yvIET9mriF4IE6oRE/Zq4gieQ/Iaj+yF6Cu/cCARMJ76vrEd+g18AOIgrv3AiYPQ/ N9vcCMct9ULxARRpJvMGgRfM2pRsee0izDkv+N5/jDrU0/itf/U2rsMclU9V28bBYdxO4M+V3f5L XrZuPAf4rblmM1A3ujAsK8x5wy+tGyqf8ibRvO2GR7yfaNh8EreTt3BzI9envzPiTjh8RPhS6FFL rYPFHwGsxA0sDSuyk/wdqe6hSpI6atr77gOjWtp/JkvKCTid2MSXlG1FPFaToIzMnHle50YRGPtL 9rhjF5hihBL3E/WeuQbiHvAWQlnazTWohfOkF+PrWy8/Zq4gifs1cQOCBq6zKgIA8xbr4AgERAIQ V37gOCEKFPE6nUX7H2OyveTi+5a88fwRAIA8xbr4AgTq1RBXfuDADzFuvgGAIoCEFd+4SYt18AQh QzXPjCmsTqhQECIUM7z4RprBAIoCEFd+4RBXfuDBBXfuE6KBhMW6+AiFD47+87iBAKhfdD6Ys57Q yQ+hLMewDIK79wYTFuvgJ0UQV37gwQofHf3ncQHQofHf3ncQcIUPa35ok+5+o6ROqEQhQ+O/vO4g wQofHf3ncQHQV37gwQV37hOiYKdX/EGCFD47+87iC9Ch8d/edxBwhQp4nU6i/Y+x2V7ydFM7uP4B Uw3jiPetF/ZFEMzgIY7v/eRJc/8A0Vv8KaRxHHcH2RT+ABj/APxHkv8A4JKAcNh7b9H33Hy9/hry vTL70h4H+yFOFNL5+z3/ADxlP2R3aTHrwYKknTMtnp/qbLd/cp5KXZB5AEPpUGfcQ9f8m1xOmYMn 0/8ARtlwyuYpuyUu0wGo/Ss+rZl9493h/wC+uaz2gVRaIxMPvgVwQqaf5Ai7nxqzPjU4jHnJ9kak V7lulTK9PMni8u5NyXlmVhNxi9RN09LFM3vK2mHo2U0ydzp/KZFU+vfXkhWOJ/st0m06GVuBeXEM Xakm5USYXFv+om119sbhPjQ90BrP0dTJl7b8SAEavjQGGpDEEQnIEOMKsMQs7plLn9RwRjW9GIHE isBNwpR/U+9dQOgc3k8quihgXapUKsmjkxVQwW11DqLQWQboKaFPTU/mzRliRxHK/wBijlInbPRp aDDnyIpGYR5TqMP5Mbvk9fZ4xvOI6kKU/dCnLzTeNX0m8DZrZtOWDF44ogwahILi6/IPzW0WDMiZ seza7oNYgbwIQ8W/EZ8laFNCn+XhvyFVnN+XOLQpoU/y8N+Qqs5vy5xT0KFPE6nUX7H2OyveTnCn V/xDW1sCvCFCnidTqL9j7HZXvJzhDPoUXoI35XnRfYKegrv3BwhXKO3zR1bzfeVBgivCFMniVTqb 9j7XZXOJ9gU1znS+GnUTxR0C78vpftPnIWQWBCuIH11wfeddJwzEVwIsgIU3hu7yvIWBTXE/y/Nf Lsrhj9Cm8N3eV5CwKa5zpfDTqJ4oRZQU2knohl2v5tsFgU2wnhfDNwhZUMboVznbDYV9ocIU3hu7 yvIUKdZQQthPDt8sHU+GQzreVYYIWwSY/TnRHk31RszjG6FN+nyPN2mDs1WR4IQpv0+R5u0wdmqy PBdezZd+0sgY7+m1f5QOuNhAh7CD98Hu0OvoKBin45b6oHTLnOyG0r7QTZsu/aVwTNLss2srslFZ BOmXOdkNpX2ir9Y/ptfEL0zS7XPqO7LRUYJs2XftKwJk3J30bCJ+UzOoJ0ybk76NhE/KZnUF/Wf0 edAXpmnW67RDfRmrHG0DLp8SbNl37SYJk3J30bCJ+UzOoL0y5zshtK+0L0y5zshtK+0J0y5zshtK +0dC7EwTLnOyG0r7QvTJuTvo2ET8pmdQXplxA+uqD7yrpKOcjuC9MuIH11QfeVdJRzkdwIomTcnf RsIn5TM6gvTJuTvo2ET8pmdQHTLnOyG0r7QnTLnOyG0r7ROqEQmTcnfRsIn5TM6gnTJuTvo2ET8p mdQHTJuTvo2ET8pmdQXpk3J30bCJ+UzOoERCFN50rnlXM8NxabBAnQpvOlc8q5nhuLTYIJ0XlHTI e1vzxN1z9RUiD8TemPOW0fo/TC8XUBAHBAnRECAdBXfuBAIiAQBwQCKAgDggY9UIZc+K2z/UzU2k OTA60rvxW0P1RqbSHJYbhop6QtDWqPQv3P8Ao3bcLzzK1a2rjwHuhXQ/o6/wXMb+uWp/jRisYPfv bw8YSJOfk7eU+ulPJU3iqrhUe0Wjo7fwUs/+uGrtIV+XnvFh9wbtw/g7eUyYq46+o6HbqqCxpb9Z 2lLVDgkBxRwLutKl2WSgpKWabmMNfX4e/wBZW0AIA6Cu/cCBrUQYkYEhbFLNS7pn/rpkiAQBxBwu 1MAQgrv3AcQTomAIC+fs1cQwn7NXETomCCu/cIB0Kbw3d5XkCAVCIBCCu/cB5+zVxEQV37gRMAwC 9BXfuBAnRMAwQV37gnBCGfhdo8f3wnROPxXP8UMEFd+4J0Fd+4MEFd+4FQmCCu/cGCCu/cE6FN2t +eJvufqKgOUPoSzHsE6oR4YIU3hu7yvIJ0Fd+4MEFd+4EThBXfuDAJ0Kbw3d5XkGE/Zq4jDqhWBC m8N3eV5Bggrv3CvoU3hu7yvIOEKbw3d5XkJ1zDeOI960v9ka/wDZ9UP/AIkSY/wWUA4Xz9mriO4H shyb/QEz4f8AeRJen/n5lXqufWOH494+j77j5e/wl5Xpl96Q8D/ZCiPxXP8AFHrgwepjTSIkOnd8 LkfJeyPUsI0aSpyHT5Hk3ok+beY9XOCVcnsF+C9O/wD7t5B0w/MtVGQo6zGtfSx9ls7gPdAs/oCH /WAxMPvg9zHks4IK79w5z+ylSa646Ocn5RIEHnEjcJDLXYfyU3WMTCMstRZzdnHQhCm8N3eV5DXf pjSbKWHRfw0MqYxlYVpH9dKbo++jB9/qMrj01jzHRmY2a2LMIf0ooQSKOIjC7sbmLGtRTBb3bUuJ qyLQlyHprAPWghuqxNNw3vw0x9h5lVM/d4krP/7BynUlQig/yev2DqLQ98Yv7jKaavPxJ2037h5r /Yo5SGzekXKFhxdLLBu1Cef8qMJtMBvuzwjQRPtcPRghXOdsNhX2i36RJcy+ksMQcDxIAxv1nAYi 53ILbhcTesfoWTDZZhcvBrUeoIMBAyYXK8IVznbDYV9osCFc52w2FfaMfoVznbDYV9oYIVznbDYV 9o0VbyskIVznbDYV9ocIUyCJVvpu2utfle8nY3QrnO2Gwr7Q4QrnO2Gwr7QRZIQpkESrfTdtda/K 95OsCmmQUVu5t0ZYmcRi9Cuc7YbCvtDhCuc7YbCvtBFlhCuIH11wfeddJwzEVwcIVxAhqI9BazPM Tu8YfQtJPZWW86tGS0OELST/AC9D93fmsfEEWYELSQW1lvOrRlsDBC2Kucru+GR+UYfQtJP8vQ/d 35rHxDBC16Cn8pbwRZY695fxE695fxGL+s/o86AR1n9HnQKFOskJ29UWY9eW4y1Vgfr3l/EY/wAc t9UTHLfVBFcOt/04HTNikucru6GV2UVfHLfVC/HLfVBFcOuOXf5QOmbHa91OTSd19Ap+OW+qJjlv qidFYEzS7XPqO7LRUYXpmnW67RDfRmrFfTLnOyG0r7QvTLnOyG0r7QVCsCZpdlm1ldkorIL0zTrd dohvozVivplznZDaV9oHTLnOyG0r7QROOs/o86AvTNOt12iG+jNWE6Zc52Q2lfaF6Zc52Q2lfaCJ gmadbrtEN9GasL0zTrddohvozVhemTcnfRsIn5TM6gnTJuTvo2ET8pmdQnROEK550r82ln1nWVMI K+hTedK+7Vny1FWdkBF5jk3pjzltHwQV37h+JvTHnLaP0fpBeLogEAcEAiiCu/cCAOCARECIK79w HBAx6oRAInUOXWfeBxARDtKY6rbLnfE7UpyVUWDk/wDiuf4o6rtL4rbH9TNPaY5PofRIM28ht2it IbS/lgbl4dy1e2PL/FdCOjf/AAYK/wDXLV2D96RKGZYMl5VID84kvLBlvLKVNPDJAnR/Ojf/AAYK /wDXLV2C84WWMgb2DqWClA1gmPjqm/yYOhScYeVWfExiJotaxLsSQCd5B1XGdFkIHNkwM7gQtiD/ AOO7BllBTXEC4iV06v6BaU8dfzc+jREMJ1Dl1n3jGGCxsdb4OZHrplRJxmKRk+io6OdQyOMJMAid IIYufeFmpT7E++ld9z3pggrv3CAcEDrVyIBAHEE6JgCAvDAToiEFd+4MAvBAKhEBggrv3Begrv3A gETBBXfuBAXhgJ0RAYBeCUPoSzHsE6oR6Cu/cCEFd+4DoK79wIBEwQV37gwQV37gvDBBXfuE6oRC Cu/cHCCu/cE4cIK79wnREIK79wYIK79wXhggrv3DHqhOEFd+4MFNNXn4k7ab9wToK79wYIK79wnR aT+yHJv9ATP/AN/ZL1uqb79ENpE4cRx239kJ/gCV/wDf2TGxvDiQPePo++4+Xv8ADXkelP3rD/KP 7YF903ok+beY9SOAdcxzA3gnTxLGsG8lyz+8rifbS6OeiHloTehPMWwenfo3pkC7gCwPp0H+wcl4 w5zxKgxgfpOH7NZ5alA7Ud4aYXbsFn9BJisQDVIJZv8AjUuLzluvy2QQpvDd3leQjYZqBvMFsycX vg7eY7UYq5/z1jXUU5XE8jqNegrv3BwhXOdsNhX2jxjwf2TxfCiH7scDRZaw30IdnvLOvS46wRvV 4Ynzp5rzj9BtpJ5B9MPBuoJ8ZVvvklTItcq/MsoGCRU+FeUenBCm8N3eV5DzIy8U/uWdPBfWFd6s hZfSDZkqFSr3rbrbYDfood7VtQzmRRgXpmnvOljXvsK3hHcNPIRM+LZM2AHi8KA6zuCTDAQMCQCH vYg1K1jQ4keJaUqSzRkgOKFwaDFi26jb1YEKbw3d5XkHCFN4bu8ryFXQrnO2Gwr7QwQrnO2Gwr7R 54vQAGAGAA5K4IU3hu7yvIOEK5zthsK+0UdCudrbzpLKToWODhCuc7YbCvtBcq4IVznbDYV9oYIV znbDYV9op+OW+qGCFp1uu0w30Z6hOivCFcQTUbn5D5toiGCFc52w2FfaKOhadbrtMN9GeoMELTrd dphvoz1AivCFc52w2FfaCJ74OnOwuXX6rTFPQtOt12mG+jPUCMct9UEVwxy31QRjlvqin9Z/R50C dZ/R50AiuGOW+qJjlvqin9Z/R50CJmnW67RDfRmrBFcMct9UD45b6oq/Wf0edAH6z+jzoBFaMct9 UTrP6POgU9M063XaIb6M1YH6z+jzoBFaMct9UDplxA+uqD7yrpKOcjuFX6z+jzoA6Zp1uu0Q30Zq wVCsCZc7W3nQWQnRteB8ct9UV/rP6POgL0y5zshtK+0EVgTLnOyG0r7QOmTcnfRsIn5TM6hX0zTr ddohvozVhemXO1t50FkJ0bXgisCZN2t+aJOufqOgL0y5zshtK+0J8ct9UL0y5zshtK+0EVgQpvOl fdqz5airOyCroVzzpX5tLPrOsqYQEXnHTJu1vzRJ1z9R0Aefs1cRBB+iF4uiJ+zVxBAHEBEQCAOI CIifs1cQQhTeG7vK8gvBAIiJ+zVxBE/Zq4gefs1cRBj1Qo2Exkxmw/8AkdqUm/uPLRkHJ5D6JBm3 kOrDZ+Kmv/VDT2EOVKH0JZj2DcNHP3u/4fMrWLXvHGH3wLf/AKN6b/Rn/wCZGpVmvo1WjPCZDjqJ YUX/AApTxKFB2RyaqoRGv/Rv/gz/APMjU2ENgBhbU+9j3+9CsvKVkoXq8O/gFh/ACmmZGtBhrHwi S8pGoxaY1nuOjQThnifs1cRgiQZdT4T8LDD+dLjLlOp1l7+ufSROpq2OGZxjbR+1eo8tWFvVWnHN WSn2T+oJwhTeG7vK8hJ+zVxA6Cu/cII1k4bhwHuTifs1cRJ+zVxA8/Zq4gifs1cROuURP2auIYT9 mriE4YT9mriCJggrv3Aifs1cQvn7NXEQTqhN0PpizntBKCu/cF6FN2t+eJvufqKgET9mriCJwCJ+ zVxCdBXfuBAnROARP2auIXz9mriGCCu/cJ1QmCH0Ppzo2bHlTS8EIf8Ax8p0XRLRXaFCH0JZj2A9 BXfuBFYEFd+4EBOCEFd+4TqhWBCm8N3eV5BgK+hTeG7vK8gwQpkE1muphB8MtTgROEP/AI+U6Lol ortBCH/x8p0XRLRXaE6FMgiVb6btrrX5XvJzBCmQRKt9N211r8r3k6dUJwhTeG7vK8gwn7NXEV9C m8N3eV5BghTIJ7I/VpjsMY9Fpv7IE77g7PLGC/DyS+j3/wBx6M0eK47P9PxN/oMZ9H4eSXy0e/8A VXHNqefGAe46C/cUPH/6yV5HpT96wfyj+2BQekDolridc6N2B9PP/wCp5qTsnv0fF1egeb8ehjoZ Lk70acFFHmrHaik6MPfpvwgZZnx2jF/SfC9k2fT0gYeQEBPLzWS0E+11yd/VetyEKbw3d5XkHCFN 4bu8ryFXQpvDd3leQIn7NXEeFAsQcC69clwC4NxP4Lhv7JMweoekiz5VoEGLHKiR0l5TWdaMIuoT gb6mHthWO98j291xJeS7cQRV2pJplto/+esUn3lwzcgPZSmFjbGwPSxJBi3lEuSokytvp9/XN/Q+ k3V2joh0Y277pOj7gYalazg3kuoUx94veAyfvLI/IN20jh2nRzR2bD+idWIk3FoWGbsTXJstTsUi Vt+0pVjqmoJNKxCjtVnx9y2gQpvDd3leQYIU3hu7yvIU9CuIH11wfeddJwzEVwYIVznbDYV9o0Fb ttOffsq4IVznbDYV9oYT9mriKfjlvqhghXED664PvOuk4ZiK4TqiXiurfni/vp0yVwQrnO2Gwr7Q wQpvDd3leQo6Fc52w2FfaGGOW+qC7FcEKbw3d5XkGGOW+qKOhXOdsNhX2gjHLfVE6LICFc7KznQe UnRteCOs/o86Bj/HLfVBGOW+qCK8Y5b6omOW+qKPjlvqiY5b6oIrxjlvqiY5b6oo+OW+qJ1n9HnQ CK8dZ/R50AfrP6POgU/HLfVA+OW+qCK4dZ/R50AfHLfVFPxy31QPjlvqgiuHWf0edAHTNOt12iG+ jNWKfjlvqgfHLfVBHGI7/Mc1aMd/Tav8onWf0edAp+OW+qB8ct9UUI4xHf5jmrRjlvqgfHLfVFXT LnOyG0r7QvTNOt12iG+jNWC4cYjn3iOatCZp1uu0Q30Zqwvx39Nq/wAoTplznZDaV9oT45b6o+Nl GI6+ak2nPv2VcELS86V7K8uSmmi2Igp6FcOdV+J7eacsYPtNpz79lcF0ybtb80Sdc/UdAk/Zq4he mTdrfmiTrn6joBA/RC8rRE/Zq4ggL5+zVxBD/wBPq4giIQV37gRP2auIXz9mriJP2auIInAgXz9m riCBOiYT9mriJP2auIXz9mriCH/p9XEEUbCYyYzYf/I7UpN/ceWjIOVCH0JZj2DqO2E3vM2DyMdq Pi4/iXRkdUVJ5By3GwaOb+/4Vr9seX+K3w6Nyb/R8sOKPukalXN9NGSnYifs1cRrf0bv4Plj/eRq bRsAhTeG7vK8hhbT+1+0sxZn2H+mH3LG65724aZPr35PKiR7UYlptRhPpddU/MMwDD+EdMbOaGD+ Uf8AIMsGWpn/AFW3SNhH3O2jLE/Zq4iWZu1moaA4/UJ6EdFzL3+v8YUwBATz36fn/oBE9+n5/wCg YtXpwCEFd+4J579Pz/0AhCm8N3eV5AlycT9mriCJ+zVxCd/6fVxEn7NXETqzaG7+VOEKaa58Y01B ghTeG7vK8hX5+zVxBE/Zq4gm0P38qsE/Zq4ghCm8N3eV5Cvz9mriGCFN4bu8ryE6svVgn7NXEET9 mriK/P2auIIxy31QRWCfs1cQwQpvDd3leQq6FN4bu8ryDCfs1cROxwRxiO/zHNWCfs1cQQhXOdsN hX2irz9mriGCFN4bu8ryBUKwY5b6oYY5b6oq8/Zq4gjHLfVE6K0IVznbDYV9oIQrnO2Gwr7RV0K5 zthsK+0MEKbw3d5XkCK0Y5b6oYIVznbDYV9op8/Zq4hghTeG7vK8hOqHGI7/ADHNWhCuc7YbCvtD BCm8N3eV5CnoU3hu7yvIMEKbw3d5XkI9my79pcAg3EHgR6rnWp/T3TT2A1nu/wBvZLxP/n5Z9I43 jr/06kxpsCDPof7vJLu/9fur4jkAPbNAQ1kkHdrX5aq8s0p+9YP5R/bAiB3w6E7SJN0bsH/1ZclS pf8ArVdMXQtyRIhwPnu15fTmdTVrcO3HQbXJzo7yXV58yxWUkqFK4208qDibvKzuMnOgQxn0iwk2 YCxIBhalxIBpuFxWU0Mbaw7O++9qN6lvghXOdsNhX2hghXOdsNhX2inoVznbDYV9oYIVztbedJZS dCxw8KXqId6XmnNar9Ptg+6To5the/HyXlJJdtauoYnl9/dTxcegi3usujDg4eniy12VDHc+piNr 2xaXxpsgLfhgY6vLbBBhIkr5PnJtyR7UUlM/52+Pio0xJ+Qhrh7Ha3p7AGsKLvOGXLqUtTv+x5Le fXRl7nDcg0zojU1g8WBnYhvSJLEGtLwwZ792tACW0ghNfSFcCNWFqg1erO7VzXS9Cuc7YbCvtBGO W+qMfoWl2ubWd+Sisww6z+jzoGiigAw/15LbFkBCuc7YbCvtDBCuc7YbCvtGN0LS7LPqK/LRUQYI WnW67TDfRnqE7HA9/mOa5c4nnw8hyCyAhadbrtMN9GeoEdZ/R50DG/Wf0edAI6z+jzoBd6yRjlvq gjrP6POgY26xWMpAlC063XaYb6M9Q42cZdPhRZI6z+jzoE6z+jzoGP8ArKZjS6vNB1eSl98BOuOX f5RLsoxHXzRxiO/zHNZAQtOt12mG+jPUJ1n9HnQMf9ccu/yidccu/wAobLmOvmjjEd/mOayB1n9H nQJ1n9HnQMf9Y/ptfETrH9Nr4irZxl0+FHGIyrw8xzGKvHWf0edAH6z+jzoFH6z+jzoA/WP6bXxH PBdm059+ysgdZ/R50AfrP6POgUfrP6POgD9Y/ptfEcbOMunwrrV46z+jzoA6Zp1uu0Q30ZqxR+s/ o86AP1n9HnQGzjLp8K6HOJ594Dkrx1n9HnQB+s/o86BT+sf02viF/Wf0edAbMMBy+XMc0c4nn3gO SvCZp1uu0Q30ZqwOmadbrtEN9GasUdM063XaIb6M1YH6x/Ta+Ip2XLp8q4fPrw/10yVwTLnZWc6T yE6FjgOmadbrtEN9GasU9M0k8yb09W2iOXfQ4L0y5zshtK+0Nly6fKvvacj08leELS86V7K8uSmm i2Igx+haXnSvZXlyU00WxEDZcunyptOR/wCvkuNyb0x5y2gkLk3pjzltH6grv3D9ALyxMAROocus +8LwR2XPtROiIBCCu/cF4k/Zq4giYIK79wIT1Xbwvn7NXEET07dZzQ+ynR9QfWh/mHvCLGEilxOu YUML70/m6r7l1JTLIXUpFE4xJ2UyodF78vjXDA00TaMrMMrWg7y5XGqFTQXlpPIi+D3+ScYwGf0K btb88Tfc/UVA7LSlTDNQBgAYISwdqwQHeLzfeKlfUsXlTVzXo3fRRr/ELX/qdq/4MOY46YNhN7zN g8jHaj4uP4l0ZHVFSeQcyEPoSzHsGSsLy/BYS2rjwHuhW8/R1/Adof7yNX/5jGeJ+zVxGt/R1TH7 kmxT+Elh/mU6joGwE/Zq4jHWl9sHErJWb9ji4D3Kr4TlPrKQUoJj4QqqfXSnQTuorHPy+IvLNXEC 4qs9e/JlpTx3wgWfl4XLiFAuKqwop/g60p4kW52cipidWar4PVwk8h5PT/whVU8SXa3dRe8OV8Ds yE+oYz/9at+/G5d6yRP2auIIn7NXEJ0Fd+4ET9mriI1QnE/Zq4iT9mriF8/Zq4iT9mriCJxP2auI InUOXWfeF8/Zq4iT9mriJ1QnE6hy6z7wQhTIIlW+m7a61+V7ycnn7NXEET9mriCXJxP2auIIQpvD d3leQTz9mriJP2auInVm0N38qsCFN4bu8ryBE6hy6z7wnn7NXERCm8N3eV5DnZzn1+FdgamGWGSk pGcut5jLCiym40pNtD8jayoXwE9NwxOzsMq7JVqK8jsMLK6laC18DlYyYyabv89G4o00vqi4zIZg QpvDd3leQTykYLDlgy1hhyjUVZpM9aiTnkbPPOUYZ30ZY0yuqABOAM9Cwd6B3YbhUEigahqopklx spqGJBN91+68dAyvCm0kC4iV15RTqy0rrXwNbVPy+rPSR7YwDBCuc7YbCvtGg7TZuEzo9r/WslV7 3RyAWlz4ItlBRiZmcaHUFKih1JlQNiMH2GySuEJEroFFP1ZKD/Z5ai/+ov8AaCqqxw+pqzIdmM1J ERVFAKkEhwYb3FaNfc4YlLWkWacFaAY0Ic9HGTVWeJ+zVxBE/Zq4ivz9mriCMct9UYNiGBDHBiOT rKQxQxB4SCMQXVgQpvDd3leQIQrnO2Gwr7RV8ct9UV+VWEKSsg1A2tKpqqzN+ZqkSaa+6w66jdqq olZWKbDwgtuIBbOrd03sF87XKwPtV+rQYhwcTupQMzjNZYn7NXEYYwhdIqR2D1J1WgL3WSneWJsC T370qS9/YbI2GNV2xhmwqYa20cjsGaisybZC18MW3uaXVf8APrc/1fcVRO/dV0kew+CbAnJzBkXW qf75JYRxyUK24sQN8PKYdpwfW8qYEMkLOglIXm4g94hhNXDM9GA3MKlxduw5nzMxfsgiAdri4FA4 YN1NzkUVwwes3CnKVqq8uMJjcWZNq6qbmPgyk972sx/8+RNxnW8zc7I8hsBP2auIo+OW+qGGOW+q MJMgTR9FoQGAYM5DZbtxO6rg0WYlXlmJLmIDE3tSr0ubnx1n6byeewNs/wD38ZZ/4+VB0FkdCmsc nx1I6aSaewQK9ksGXrfYRU25M45bj1DQwGGyiMNb3wt0/wBLz7Smtqwn/iH46sKg7IdBtpOwGK6A /wAllhKiPOVxHTkpOnjeOrHQbXC+5A0EGSXjUKx/UuXLHmgc6aQ61kwBryxOThx7+S+9FImtU4MT /aO+C6AY5b6oIQtLtc2s78lFZijoVznbDYV9oYY5b6o8T2Z9z9/zL1DaBl0+JXhCuH+Pir8D0PfV RcNWeinJZewcosMsnE6BZVldVwvNTyWSS2pn58y/JYxuIqf+z7Uz+k/K4Z2QtOt12mG+jPUCOs/o 86BZDHFKSMUkKwxgAgh2rCQb6GjcIrnNJtmecE44Orm7UBIJv3Ctzb7gsgdZ/R50AhC063XaYb6M 9Qo/Wf0edAmOT0aNd9+a2sYvZsu/aWS4LICFp1uu0w30Z6gwQtOt12mG+jPUMf45b6oI6z+jzoHG yjAd/wBWQ5JtWfX5leOs/o86AR1n9HnQMf8AWf0edAI6z+jzoE+ynE9PNNqz6/MsgdZ/R50CdZ/R 50Cj9Z/R50CdZ/R50BspxPTzTac+vzLIHWf0edAnWf0edAx/1n9HnQCOs/o86A2U4np5rlziefeA 5K8dZ/R50CdZ/R50Cj9Z/R50AjrP6POgNlOJ6eaOcTz7wHJXDHLfVE6z+jzoFH6z+jzoExy31Q2U 4np5o5xPPvAclcOs/o86BEzS7LNrK7JRWQp+OW+qB+s/o86A2U4np5rhXDrP6POgD9Z/R50Cr45b 6oHxy31Q2U4np5ptWfX5lcMct9UDpmnW67RDfRmrFPxy31RMct9UNlOJ6eabVn1+ZWjHLfVA/Wf0 edAq+OW+qB8ct9UdrZdOH+umSbVn1+ZWjrP6POgTrP6POgU/HLfVExy31R2bNl37S6HOJ594DkrB 1n9HnQJ1n9HnQKfjlvqiY5b6oo2bLv2l3qwY550r6cubXXGyJiCvoVw51X4nt5pyxgbNl37SLlum TcnfRsIn5TM6hEKbw3d5XkB0ybk76NhE/KZnUBx64vN0wn7NXEEBOCJ+zVxBEwQpvDd3leQk/Zq4 hfP2auIIn7NXEFQmE/Zq4gie7Xl9OZ1NWtwTz9mriF7ebCBjsFsNWDmWx2ou54cCfxCUlvThx1gb 63jB/L8OIvqngVgro1pyTosJidN+VSud5RZ/K8ryiidRPKmgoxoG0s/Zq4jTnostFMtqEt1eZ9sa 212UvGWQ3+URlVke+t8Mg22np26zmh9lOjI22GmwMIIRyhhC6bObZI86jgTVslGwm95mweRjtR8X H8S6MjqipPIOa46MN5NMsCUB/wAztS38y2eG/nOKNHbq4H3hYa2PL/FbkdHr8EWx/vN/+EMbAT9m riNb+j2m+9xsP/liH9yVFopzHlGwE/Zq4jC2l9sh4n3rMWZ9i/ph9ycT9mriKdI/zNLLBlfk6rLB qLymf9e+/wBXEu+kOZ+zVxA6mpoFNqNhqoH4w1Oq8d11FbHITqXjo3Nuw3YXXXLIK0T9mriJP2au IXz9mriJP2auIj2bLv2kTifs1cQRP2auITz9mriCEKbw3d5XkGzZd+0iYT9mriCJ+zVxC+fs1cRJ +zVxE0yLgBvuAyGCJwhTeG7vK8hJ+zVxC+e/fT+3O8qOYk4Sfs1cR8InE/Zq4gifs1cQnnUOXWfe CJ1Dl1n3idUJxP2auIIn7NXEV+fs1cQRP2auIIrAhTeG7vK8hJ+zVxCdCm8N3eV5CT9mriCKwJph MhWECc8ZV4/C3Zc+/SNR8J2AFPjSxKLBl5snLz1ck8qLhmcf5DoOx1BZahtROocus+8Sfs1cRZKz IlaRClHBqC5BzAueg95bo8eWMyBtDAt6O53YByKtx3rT/B90kGqwUvucwjIFpoq6q9S62h7plB50 Nx8dT3WjdhmthRbCgrtVlLys0metfA1tUXH5Csz+A0f6Sy3JxSajPQK8nFYpQNRTx1clD8Wkvxzx pGB5Ky8ljI/Gfco1WkzVd+OrioqH72ZaP81UBn/HsaC1JSGblWFBrXVZnpczVqBddhhZa0YrKmhK zQeEn0Yn4arlq3imNzLoBhswqJ8G7BV+qk6r7oGoueZ44fwAv5aoycwGs8g8EsuMMDUV5VSxXmkr MdaiuNZrRabeKrqN1GTXlGcZB4K0DYWmfL/CamWZSSoainjimyWt8WMKL4xOx9RuI4GTxsPP2auI xBnxZktsspDrRBhETCCQCYRSj1xJ3kNjkoPAM1NCcmqwPCYQAW3NTHfdxFHUkrJthyJZasw5OKKs zWeWfz/J14fLzuFon7NXEJ5+zVxEn7NXEa7MxRThfWN73nIm+6oDXe5Z2EQj6ohDUoBlh6lYEKbw 3d5XkCJ+zVxFfn7NXEET9mriJVUtd+mAmncEqvCmWDLz83XmY5fjph0tEzsEtpSwZdNO2NFMLzMc zx6tol91D+U/4rzzSP7UeELcgiEKbtb88Tfc/UVA6c9CdMX3OpUIC/JZYH/gpxoyHnsHL4dIehQu felLhB81lGzDz+8rszz3vreOzSv7ph/mr0TRz71p/CeVPwW98/Zq4gifs1cRV5+zVxDCfs1cR46v Q1YEKbw3d5XkCEK5zthsK+0Vefs1cQQhXOdsNhX2gqFaJ+zVxBE/Zq4irz9mriCEKbw3d5XkCK0Y 5b6oIxy31RV5+zVxExztaI6s+mrLU8TorRjlvqgjHLfVFXQpvDd3leQIn7NXEEVgQrnO2Gwr7QRj v6bV/lFXn7NXESfs1cQVCuGOW+qJjlvqir45b6omOW+qPjZhiOvmitGOW+qJjv6bV/lFXxy31RMc t9UNlGI6+a42gZdPiVoxy31ROs/o86BV8ct9UTHLfVDZRiOvmm0DLp8StGOW+qB8ct9UV/HLfVA+ OW+qGyjEdfNS7UMB18laMct9UDplztbedBZCdG14r+OW+qB8ct9UNlGI6+abUMB18laMct9UD45b 6or+OW+qB8ct9Ufa+1YMct9UTHLfVFXxy31RMct9UcMMBlTh5DkMEVgxy31QPjlvqhBjivkPTxEx xXyHp4ilfG1DAdfJP8ct9UDplznZDaV9or+OW+qB56dus5ofZTo+NlGI6+abUMB18lYEK550WU7b ii/X3xgr892qu8o9+irM6iIg+02oYDr5LnemTdrfmiTrn6joA8/Zq4gdNPzvL7bHucIPUFpSYCBf Opsusu8EAiYT9mriJP2auIXz31fWCARMJ6dus5ofZToo+ELGE8l2go0Y0ptTHLHsUzp1Xi0Cn4Qk ydSkc2F6YJZxVTalMXe8xlGs3cvKBJP7bD/N+ISb+yf0lYq6LiH7z2+uJ0HwiUjjW3/vTJjeU4o0 FGgnk+0hs7P2auI176OiE1fBmhTIv3yw2Wotm8v4jvJc8nUOdxiM+O/Qa+AptUvPnKOIeoMA2QAA 9Sls6sqXrx/lB99eKXt5N7wygtY7UpKjQfeOf434lJ+DUof6nao0HGRsW/v+IqC2rjwHuhW0+AL4 mb/9b/8A4UxsDPTV9nNLraNOvOAH4llD/XAz8MJaX2yHifer7N+ynv8AcCYT9mriJP2auIHEECyS YAgLxARMJ+zVxBAXggFQmBfiL9wk/Zq4hf2vPtgR2vPthOiYT9mriJP2auIXggETCfs1cQRP2auI Xidrz7YY9Ewn7NXEET9mriF4IBEwBE/Zq4hP2vPtgR2vPtgRMJ+zVxBE/Zq4hPOpsusu8Edrz7YT qhJ5YM1RbEl5QIGqoKyw5jtTE8bJ35mdtqPIQ5zsFDPKMqJj/Zw12Efz0wK6+TzdIG9P+5yUNHxM 1Xvy9S+LrBzukehnfdRZIOVGbdG8bjYDmUihBNWDcRCblrFrgawLVeGvsLolg9bKBoyIkuvIFjGc aY7Lxy3qEtR2PF/n7NXEa39HtMnTYOVf4T5q12pXzsLVDPCFMniVTqb9j7XZXOJ+szgMtNkkD0jU EEu1ed9bslsEn9hHAe5WCfs1cREKbw3d5XkE/a8+2BHa8+2GMVUteeP4KwIU3hu7yvIET9mriK+h n4XaPH98CO159sCtWB+lQmL7kqxR+EjLyllr76oRHM8dIOlFP/cqWMnukZb302Ps3Dm+PSNFfuw/ 1e+FedaSfaxw/wAQiBvx0LVyZZeEBX/nhlny7daOf43o6HKf+EBB/uu8n6YFfF+SFYr0q+6Rx/yg X3oz978/cFvxjlvqgjHLfVFf7Xn2wI7Xn2w8cXpSsE/Zq4iT9mriE6Gfhdo8f3wk6my6y7wRWjHL fVEQrnO2Gwr7RX51Nl1l3gidTZdZd4IrBjlvqgjHLfVFXnU2XWXeCJ1Nl1l3gisGOW+qJjlvqiv9 rz7YETqbLrLvBFYMct9UTHLfVFfnU2XWXeCO159sJ0TjHLfVBGOW+qK/2vPthJ1Nl1l3j42UYjr5 orBjlvqiY5b6or86my6y7xJ1Nl1l3hsoxHXzROMct9UTHLfVCftefbCdrz7YNlGI6+aJxjlvqgef s1cQv7Xn2wH7Xn2wbM28dfNE4n7NXESfs1cQnnU2XWXeJ2vPthXciYT9mriJP2auIX9rz7YDpp+N +jx/egiYT9mriJP2auIX9rz7YD9rz7YETCfs1cRJ+zVxCftefbCdrz7YETDHLfVExy31Qn7Xn2wn a8+2BEwnu1V3lHv0VZnUREC/tp3wfz/9wgIv/9k= ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://pixel.quantserve.com/pixel/p-16ewveTurfCCM.gif R0lGODlhAQABAAAAACwAAAAAAQABAID///8AAAACAkQBADs= ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://gp-bc7f8.posterous.com/stylesheets/bundles/post.css?1274974359 BLOCKQUOTE[type=3Dcite] { BORDER-LEFT: medium none } .galleryLabel { FONT-FAMILY: "Lucida Grande", Arial, Helvetica, sans-serif; COLOR: = #444; MARGIN-LEFT: 10px; FONT-SIZE: 10px; VERTICAL-ALIGN: top } A.gallerySelectedImage IMG { BORDER-BOTTOM: #333 4px solid; BORDER-LEFT: #333 4px solid; BORDER-TOP: = #333 4px solid; BORDER-RIGHT: #333 4px solid } #modal_container { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #666 1px = solid; BACKGROUND-COLOR: #fff; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: = visible; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid } #modal_overlay { BACKGROUND-COLOR: #000 } DIV.downloadFlyout { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 10px; MARGIN-TOP: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: = 5px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; = PADDING-TOP: 5px } DIV.downloadIcon { FLOAT: left; OVERFLOW: visible; MARGIN-RIGHT: 5px } SPAN.downloadlink { FONT-SIZE: 10px } SPAN.downloadSize { FONT-SIZE: 10px } SPAN.downloadlinkInstructions { FONT-SIZE: 10px } IMG.border { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; BORDER-TOP: = #999 1px solid; BORDER-RIGHT: #999 1px solid } A.lightbox IMG { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: = #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.posterousGalleryCommandPane { POSITION: absolute; FILTER: alpha(opacity=3D0.25); BACKGROUND-COLOR: = #111; COLOR: #fff; OVERFLOW: hidden; TOP: 0px; CURSOR: hand; LEFT: 0px; = -moz-opacity: 0.25; opacity: 0.25 } DIV.posterousGalleryMainDiv { MARGIN: 15px 0px } DIV.posterousGalleryMainDiv + SCRIPT + BR { DISPLAY: none } DIV.posterousGalleryMainDiv + BR { DISPLAY: none } DIV.posterousVideoMainDiv { MARGIN: 15px 0px } DIV.posterousVideoMainDiv + SCRIPT + BR { DISPLAY: none } DIV.posterousGalleryMainDiv + BR { DISPLAY: none } DIV.posterousGalleryCommandPaneDarker { FILTER: alpha(opacity=3D0.5); BACKGROUND-COLOR: #111; -moz-opacity: = 0.5; opacity: 0.5 } A.posterousGalleryMainlink { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } A.posterousGalleryMainlink:hover { TEXT-DECORATION: none } A.posterousGalleryMainlink SPAN { DISPLAY: none } A.posterousGalleryMainlink:hover SPAN.show { Z-INDEX: 100; BORDER-BOTTOM: medium none; POSITION: absolute; = TEXT-ALIGN: left; BORDER-LEFT: medium none; PADDING-BOTTOM: 8px; MARGIN: = 1px; PADDING-LEFT: 8px; WIDTH: 460px; BOTTOM: 10px; PADDING-RIGHT: 8px; = DISPLAY: inline; BACKGROUND: #111; COLOR: #fff; CLEAR: both; FONT-SIZE: = 11px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = TEXT-DECORATION: none; PADDING-TOP: 8px; LEFT: 10px; -moz-opacity: 0.8; = opacity: 0.8; -webkit-border-radius: 5px; -moz-border-radius: 5px } DIV.posterousGalleryLink { COLOR: #bc7134 } DIV.posterousGalleryLink:hover { COLOR: #f59344; TEXT-DECORATION: underline } *:first-child + HTML A.posterousGalleryMainlink:hover SPAN.show { =09 } * HTML { =09 } A.posterousGalleryMainlink:hover SPAN.show { DISPLAY: block } LI { MARGIN-TOP: 5px } .buttons A { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 6px; LINE-HEIGHT: 130%; BACKGROUND-COLOR: #f5f5f5; = MARGIN: 0px 7px 0px 0px; PADDING-LEFT: 7px; PADDING-RIGHT: 10px; = DISPLAY: block; FONT-FAMILY: Arial, Verdana, sans-serif; FLOAT: left; = COLOR: #565656; FONT-SIZE: 100%; BORDER-TOP: #ddd 1px solid; CURSOR: = pointer; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 1px solid; = TEXT-DECORATION: none; PADDING-TOP: 5px } .buttons BUTTON { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 6px; LINE-HEIGHT: 130%; BACKGROUND-COLOR: #f5f5f5; = MARGIN: 0px 7px 0px 0px; PADDING-LEFT: 7px; PADDING-RIGHT: 10px; = DISPLAY: block; FONT-FAMILY: Arial, Verdana, sans-serif; FLOAT: left; = COLOR: #565656; FONT-SIZE: 100%; BORDER-TOP: #ddd 1px solid; CURSOR: = pointer; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 1px solid; = TEXT-DECORATION: none; PADDING-TOP: 5px } .buttons BUTTON { PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; WIDTH: auto; PADDING-RIGHT: = 10px; OVERFLOW: visible; PADDING-TOP: 4px } .buttons BUTTON[type] { PADDING-BOTTOM: 5px; LINE-HEIGHT: 17px; PADDING-LEFT: 7px; = PADDING-RIGHT: 10px; PADDING-TOP: 5px } *:first-child + HTML BUTTON[type] { PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 10px; = PADDING-TOP: 4px } .buttons BUTTON IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; MARGIN: 0px 3px -3px 0px; PADDING-LEFT: 0px; WIDTH: 16px; = PADDING-RIGHT: 0px; HEIGHT: 16px; BORDER-TOP: medium none; BORDER-RIGHT: = medium none; PADDING-TOP: 0px } .buttons A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; MARGIN: 0px 3px -3px 0px; PADDING-LEFT: 0px; WIDTH: 16px; = PADDING-RIGHT: 0px; HEIGHT: 16px; BORDER-TOP: medium none; BORDER-RIGHT: = medium none; PADDING-TOP: 0px } .postly_button { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium = none; WIDTH: 147px; BACKGROUND: #fff no-repeat; FLOAT: left; HEIGHT: = 39px !important; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .postly_button:focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } .postly_button:hover { BACKGROUND-POSITION: 0px -39px } .postly_button:active { BACKGROUND-POSITION: 0px -78px } .go_button { BACKGROUND-IMAGE: url(/images/buttons/go-button.png) } .import_button { BACKGROUND-IMAGE: url(/images/buttons/import-button.png) } DIV.flashheader { BACKGROUND-IMAGE: url(/images/flash_top.gif); PADDING-BOTTOM: 0px; = BACKGROUND-COLOR: #f9f9f9; MARGIN-TOP: 0px; PADDING-LEFT: 8px; WIDTH: = 502px; PADDING-RIGHT: 8px; BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: left top; MARGIN-LEFT: 0px; CLEAR: both; = PADDING-TOP: 8px } DIV.flashbody { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #f9f9f9; PADDING-LEFT: 8px; = WIDTH: 500px; PADDING-RIGHT: 8px; COLOR: green; MARGIN-LEFT: 0px; = FONT-SIZE: 1.1em; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 5px } DIV.flashbody A { BORDER-BOTTOM: #cfc 1px solid; COLOR: #0a0 } INPUT[type=3D'text'].commentSecondaryBox { PADDING-BOTTOM: 3px; LINE-HEIGHT: 12px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; COLOR: #444; FONT-SIZE: 11px; PADDING-TOP: 3px } DIV.profile_header_image { MARGIN-TOP: 10px; FLOAT: left } DIV.profile_header_text { MARGIN-TOP: 60px; MARGIN-LEFT: 90px } SPAN.profile_header_username { COLOR: #70604d; FONT-SIZE: 30px; FONT-WEIGHT: bold } SPAN.profile_header_realname { COLOR: #c5c5c5; FONT-SIZE: 30px } DIV.profile_body { MARGIN-LEFT: 90px; MARGIN-RIGHT: 20px } DIV.profile_user_body { MARGIN-TOP: 20px; MARGIN-BOTTOM: 20px; CLEAR: left } DIV.profile_bodytext { LINE-HEIGHT: 25px; FONT-SIZE: 18px } DIV.profile_latest_posts_from { COLOR: #70604d; CLEAR: left; FONT-WEIGHT: bold } DIV.profile_sitelink { COLOR: #70604d; FONT-SIZE: 1.8em; FONT-WEIGHT: bold } DIV.profile_subscribelink { MARGIN-TOP: 5px } IMG.profile_border { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.profile_users { WIDTH: 450px } DIV.profile_user { TEXT-ALIGN: center; LINE-HEIGHT: 10px; WIDTH: 40px; PADDING-RIGHT: 5px; = FLOAT: left; PADDING-TOP: 5px } DIV.profile_user A { COLOR: #999 } DIV.profile_user A:hover { COLOR: #bbb } DIV.profile_subscriptions { MARGIN-TOP: 10px; WIDTH: 250px; FLOAT: right; MARGIN-LEFT: 40px } DIV.profile_subscription { MARGIN-TOP: 10px; CLEAR: both } DIV.profile_sub_photo { FLOAT: left; MARGIN-RIGHT: 5px } DIV.profile_sub_site { LINE-HEIGHT: 14px; FONT-SIZE: 11px } DIV.profile_sub_site A { COLOR: #444 } DIV.profile_sub_user { COLOR: #777; FONT-SIZE: 11px } DIV.profile_sub_user A { COLOR: #777; FONT-SIZE: 11px } DIV.profile_sub_email { COLOR: #aaa; FONT-SIZE: 11px } DIV.navbar_selected { DISPLAY: inline; COLOR: #333; FONT-WEIGHT: bold } DIV.profile_ajax_reply { COLOR: #090; FONT-SIZE: 11px } DIV.profile_ajax_reply A { COLOR: #090; FONT-SIZE: 11px } A.profile_user_link { POSITION: relative } A.profile_user_link SPAN { DISPLAY: none; TEXT-DECORATION: none } A.profile_user_link:hover SPAN { Z-INDEX: 5; BORDER-BOTTOM: medium none; POSITION: absolute; TEXT-ALIGN: = left; BORDER-LEFT: medium none; PADDING-BOTTOM: 5px; MARGIN: 1px; = PADDING-LEFT: 5px; WIDTH: 72px; BOTTOM: 40px; PADDING-RIGHT: 5px; = DISPLAY: inline; BACKGROUND: #333; COLOR: #fff; CLEAR: both; FONT-SIZE: = 11px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = TEXT-DECORATION: none; PADDING-TOP: 5px; LEFT: 0px; -moz-opacity: 0.9; = opacity: 0.9; -webkit-border-radius: 5px; -moz-border-radius: 5px } A.tooltip_link { POSITION: relative; TEXT-DECORATION: none } A.tooltip_link:hover { TEXT-DECORATION: none } A.tooltip_link SPAN { DISPLAY: none; TEXT-DECORATION: none } A.tooltip_link:hover SPAN { Z-INDEX: 5; BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; = TEXT-ALIGN: left; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; = MARGIN: 1px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; = BACKGROUND: #fff; COLOR: #444; CLEAR: both; FONT-SIZE: 11px; BORDER-TOP: = #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; = PADDING-TOP: 5px; -moz-opacity: 0.9; opacity: 0.9; = -webkit-border-radius: 5px; -moz-border-radius: 5px } A.tooltip_link:hover B { COLOR: #777 } .searchCriteriaFound { COLOR: #090 } .comment_email { DISPLAY: none } .pointer_cursor { CURSOR: pointer } .sms_notice { COLOR: #999; FONT-SIZE: 11px } BLOCKQUOTE.posterous_short_quote { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: = normal; MARGIN-TOP: 10px; PADDING-LEFT: 22px; WIDTH: 430px; = PADDING-RIGHT: 18px; FONT-FAMILY: Georgia, "Times New Roman", Times, = serif; MARGIN-BOTTOM: 20px; MARGIN-LEFT: 0px; FONT-SIZE: 20px; = BORDER-TOP: medium none; BORDER-RIGHT: medium none } BLOCKQUOTE.posterous_medium_quote { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: = normal; MARGIN-TOP: 10px; PADDING-LEFT: 22px; WIDTH: 430px; = PADDING-RIGHT: 18px; FONT-FAMILY: Georgia, "Times New Roman", Times, = serif; MARGIN-BOTTOM: 20px; MARGIN-LEFT: 0px; FONT-SIZE: 20px; = BORDER-TOP: medium none; BORDER-RIGHT: medium none } BLOCKQUOTE.posterous_short_quote > *:first-child { MARGIN-TOP: 10px !important } BLOCKQUOTE.posterous_medium_quote > *:first-child { MARGIN-TOP: 10px !important } BLOCKQUOTE.posterous_short_quote:before { DISPLAY: block; FONT: 32px Georgia, "Times New Roman", Times, serif; = HEIGHT: 0px; COLOR: #ccc; MARGIN-LEFT: -22px; CONTENT: open-quote } BLOCKQUOTE.posterous_medium_quote:before { DISPLAY: block; FONT: 32px Georgia, "Times New Roman", Times, serif; = HEIGHT: 0px; COLOR: #ccc; MARGIN-LEFT: -22px; CONTENT: open-quote } BLOCKQUOTE.posterous_short_quote:after { MARGIN-TOP: -24px; DISPLAY: block; FONT: 32px Georgia, "Times New = Roman", Times, serif; HEIGHT: 20px; COLOR: #ccc; MARGIN-LEFT: 450px; = CONTENT: close-quote } BLOCKQUOTE.posterous_medium_quote:after { MARGIN-TOP: -24px; DISPLAY: block; FONT: 32px Georgia, "Times New = Roman", Times, serif; HEIGHT: 20px; COLOR: #ccc; MARGIN-LEFT: 450px; = CONTENT: close-quote } BLOCKQUOTE.posterous_medium_quote { FONT-SIZE: 14px } .posterous_quote_citation { MARGIN-TOP: 10px; FONT-SIZE: 10px } BLOCKQUOTE { BORDER-LEFT: #ddd 4px solid; MARGIN: 10px 0px 10px 1px; PADDING-LEFT: = 10px } .fav_mouseover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = BACKGROUND-COLOR: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px solid } DIV.fav_star { PADDING-BOTTOM: 3px; MARGIN-TOP: -3px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; CURSOR: pointer; MARGIN-RIGHT: -3px; PADDING-TOP: = 3px; -webkit-border-radius: 5px; -moz-border-radius: 5px } DIV.ajaxComment P { MARGIN-TOP: 5px !important } UL.searchsort { DISPLAY: inline; MARGIN-LEFT: 0px } UL.searchsort LI { DISPLAY: inline; MARGIN-LEFT: 10px } LI { LIST-STYLE-TYPE: none } UL LI { LIST-STYLE-TYPE: disc } OL LI { LIST-STYLE-TYPE: decimal } .highlight { COLOR: #090 } UL.button_row { MARGIN: 0px } UL.button_row LI { MARGIN: 0px; DISPLAY: inline } A.rbutton { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat left top; = FLOAT: left; TEXT-DECORATION: none } A.splitbutton_left { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat left top; = FLOAT: left; TEXT-DECORATION: none } A.splitbutton_right { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat left top; = FLOAT: left; TEXT-DECORATION: none } A.rbutton:focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } A.splitbutton_left:focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } A.splitbutton_right:focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } A.right10.rbutton { MARGIN-RIGHT: 10px } A.right10.splitbutton_right { MARGIN-RIGHT: 10px } A.right5.rbutton { MARGIN-RIGHT: 5px } A.right5.splitbutton_right { MARGIN-RIGHT: 5px } A.rbutton .tr { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat right top } A.splitbutton_right .tr { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat right top } A.rbutton .bl { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat left bottom } A.splitbutton_left .bl { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat left bottom } A.splitbutton_right .bl { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat left bottom } A.rbutton .br { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat right bottom } A.splitbutton_right .br { BACKGROUND: url(/images/buttons/regular1.gif) no-repeat right bottom } A.rbutton:hover { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat left top } A.splitbutton_left:hover { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat left top } A.splitbutton_right:hover { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat left top } A.rbutton:hover .tr { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat right top } A.splitbutton_right:hover .tr { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat right top } A.rbutton:hover .bl { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat left bottom } A.splitbutton_left:hover .bl { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat left bottom } A.splitbutton_right:hover .bl { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat left bottom } A.rbutton:hover .br { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat right bottom } A.splitbutton_right:hover .br { BACKGROUND: url(/images/buttons/mouseover1.gif) no-repeat right bottom } A.rbutton:active { BACKGROUND: url(/images/buttons/active1.gif) no-repeat left top } A.splitbutton_left:active { BACKGROUND: url(/images/buttons/active1.gif) no-repeat left top } A.splitbutton_right:active { BACKGROUND: url(/images/buttons/active1.gif) no-repeat left top } A.rbutton:active .tr { BACKGROUND: url(/images/buttons/active1.gif) no-repeat right top } A.splitbutton_right:active .tr { BACKGROUND: url(/images/buttons/active1.gif) no-repeat right top } A.rbutton:active .bl { BACKGROUND: url(/images/buttons/active1.gif) no-repeat left bottom } A.splitbutton_left:active .bl { BACKGROUND: url(/images/buttons/active1.gif) no-repeat left bottom } A.splitbutton_right:active .bl { BACKGROUND: url(/images/buttons/active1.gif) no-repeat left bottom } A.rbutton:active .br { BACKGROUND: url(/images/buttons/active1.gif) no-repeat right bottom } A.splitbutton_right:active .br { BACKGROUND: url(/images/buttons/active1.gif) no-repeat right bottom } A.rbutton SPAN.add { PADDING-LEFT: 17px; BACKGROUND: url(/images/fb_plus.gif) no-repeat left = center; MARGIN-LEFT: 8px } A.rbutton SPAN.no_icon { PADDING-LEFT: 3px; MARGIN-LEFT: 8px } A.splitbutton_left SPAN { PADDING-LEFT: 3px; MARGIN-LEFT: 8px } A.rbutton SPAN.no_icon IMG { MARGIN-TOP: -4px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; = MARGIN-RIGHT: 8px } A.splitbutton_left SPAN IMG { MARGIN-TOP: -4px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; = MARGIN-RIGHT: 8px } A.rbutton SPAN.padded { PADDING-BOTTOM: 7px; PADDING-RIGHT: 13px; DISPLAY: block; FONT-FAMILY: = "Arial", "Helvetica", sans-serif; COLOR: #333; FONT-SIZE: 11px; = FONT-WEIGHT: bold; PADDING-TOP: 7px; text-shadow: 0 1px 1px white } A.splitbutton_left SPAN.padded { PADDING-BOTTOM: 7px; PADDING-RIGHT: 13px; DISPLAY: block; FONT-FAMILY: = "Arial", "Helvetica", sans-serif; COLOR: #333; FONT-SIZE: 11px; = FONT-WEIGHT: bold; PADDING-TOP: 7px; text-shadow: 0 1px 1px white } A.splitbutton_right SPAN.padded { PADDING-BOTTOM: 7px; PADDING-RIGHT: 13px; DISPLAY: block; FONT-FAMILY: = "Arial", "Helvetica", sans-serif; COLOR: #333; FONT-SIZE: 11px; = FONT-WEIGHT: bold; PADDING-TOP: 7px; text-shadow: 0 1px 1px white } A.rbutton:hover SPAN.padded { COLOR: #555 } A.splitbutton_left:hover SPAN.padded { COLOR: #555 } A.rbutton:active SPAN.padded { COLOR: #000 } A.splitbutton_left:active SPAN.padded { COLOR: #000 } A.splitbutton_left { BORDER-RIGHT: #fff 1px solid } A.splitbutton_right { BORDER-LEFT: #c9c9c9 1px solid } A.splitbutton_right SPAN.padded { PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: = url(/images/icons/down.png) no-repeat center center } A.splitbutton_right { BACKGROUND-POSITION: -10px 0px } A.splitbutton_right:hover { BACKGROUND-POSITION: -10px 0px } A.splitbutton_right:active { BACKGROUND-POSITION: -10px 0px } A.splitbutton_right .bl { BACKGROUND-POSITION: -10px bottom } A.splitbutton_right:hover .bl { BACKGROUND-POSITION: -10px bottom } A.splitbutton_right:active .bl { BACKGROUND-POSITION: -10px bottom } A.plainselector { PADDING-BOTTOM: 8px } A.plainselector:hover { TEXT-DECORATION: none } A.plainselector:focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } A.plainselector IMG { VERTICAL-ALIGN: middle } UL.mini_commands { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; CURSOR: pointer; PADDING-TOP: 0px } UL.mini_commands LI { LIST-STYLE-TYPE: none; DISPLAY: inline; MARGIN-LEFT: 0px; FONT-SIZE: = 10px; CURSOR: pointer; MARGIN-RIGHT: 10px } UL.mini_commands LI:hover { CURSOR: pointer } UL.mini_commands LI A { COLOR: #aaa } DIV.commentunit { MARGIN-TOP: 3px; WIDTH: 100%; MARGIN-BOTTOM: 3px; COLOR: #444; CLEAR: = left; OVERFLOW: hidden } DIV.commentunit INPUT { VERTICAL-ALIGN: middle } DIV.commentname { FONT-SIZE: 11px } DIV.comment_hide_button { FLOAT: right; FONT-SIZE: 10px } DIV.comment_none_yet_msg { MARGIN-TOP: 20px; COLOR: #999; FONT-WEIGHT: bold } DIV.comment_spacer { DISPLAY: none } DIV.comment { LINE-HEIGHT: 18px; MARGIN: 0px; FONT-SIZE: 12px } DIV.comment P { MARGIN-TOP: 10px } DIV.comment_date { COLOR: #999; FONT-SIZE: 10px } DIV.comment_label { MARGIN-TOP: 10px; MARGIN-BOTTOM: 5px; COLOR: #999; FONT-SIZE: 12px } DIV.comment_value { LINE-HEIGHT: 18px; FONT-SIZE: 12px } DIV.comment_avatar { FLOAT: right } DIV.posterous_comments H4 { PADDING-BOTTOM: 0px; MARGIN: 15px 0px 10px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.spanningheader H4 { PADDING-BOTTOM: 0px; MARGIN: 15px 0px 10px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.comment { MARGIN: 0px } DIV.posterous_comments_link { LINE-HEIGHT: 18px; MARGIN-TOP: 10px; FONT-SIZE: 12px } DIV.commentunit DIV.comment_profile_icon { MARGIN-TOP: 0px; MARGIN-RIGHT: 10px } DIV.commentunit DIV.comment_profile_description { FLOAT: left } DIV.commentunit TEXTAREA { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: = "Lucida Grande", sans-serif; COLOR: #444; FONT-SIZE: 14px; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 3px } DIV.commentunit INPUT[type=3D'checkbox'] { MARGIN-LEFT: 0px; VERTICAL-ALIGN: middle } DIV.commentunit TEXTAREA.twitterBox { BACKGROUND-IMAGE: url(/images/comments/twitter_upperleft.png); = PADDING-BOTTOM: 3px; LINE-HEIGHT: 12px; PADDING-LEFT: 24px; = PADDING-RIGHT: 3px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: = left top; COLOR: #444; FONT-SIZE: 11px; PADDING-TOP: 3px } DIV.spanningheader { MARGIN-TOP: 20px } #posterous_required_header { RIGHT: 10px } .posterousHeaderLeft { POSITION: absolute; TEXT-ALIGN: right; RIGHT: 10px } .posterousHeader { Z-INDEX: 99; POSITION: absolute; MIN-WIDTH: 550px; TEXT-ALIGN: left = !important; LINE-HEIGHT: normal; MARGIN: 0px 10px; FONT-FAMILY: Arial, = Helvetica, sans-serif !important; FONT-SIZE: 11px !important; OVERFLOW: = hidden; TOP: 0px } .posterousHeader A { COLOR: #fff; TEXT-DECORATION: none !important; text-shadow: #000 0px = 1px 2px } .posterousHeader A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; = PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll = repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 0px !important } .posterousHeader A:hover { COLOR: #fff; TEXT-DECORATION: underline !important; text-shadow: #000 = 0px 1px 2px } .posterousHeaderDark { COLOR: #bbb !important; text-shadow: #000 0px 1px 1px } .posterousHeaderDark A { COLOR: #fff !important; text-shadow: #000 0px 1px 1px } .posterousHeaderDark A:hover { COLOR: #fff !important; text-shadow: #000 0px 1px 1px } .posterousHeaderLight { COLOR: #777 !important; text-shadow: #fff 0px 1px 1px } .posterousHeaderLight A { COLOR: #444 !important; text-shadow: #fff 0px 1px 1px } .posterousHeaderLight A:hover { COLOR: #444 !important; text-shadow: #fff 0px 1px 1px } .posterousHeader UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .posterousHeader LI { MARGIN: 0px 10px 0px 0px; DISPLAY: inline; WHITE-SPACE: nowrap } .posterousHeader LI.last { MARGIN: 0px } .posterousHeaderPrimary { POSITION: absolute; TOP: 9px; LEFT: 10px } .posterousHeaderSecondary { POSITION: absolute; TOP: 32px; LEFT: 10px } .posterousHeaderAccount { POSITION: absolute; TOP: 9px; RIGHT: 10px } .posterousHeaderActions { POSITION: absolute; TOP: 35px; RIGHT: 6px } .posterousHeaderExpandedDivRight { BACKGROUND-IMAGE: url(/images/header/clear-expanded.png); POSITION: = relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 454px; = PADDING-RIGHT: 5px; BACKGROUND-REPEAT: no-repeat; FLOAT: left; HEIGHT: = 59px; PADDING-TOP: 5px } .posterousHeaderExpandedDivLeft { BACKGROUND-IMAGE: url(/images/header/clear-expanded-left.png); = POSITION: relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: = 454px; PADDING-RIGHT: 5px; BACKGROUND-REPEAT: no-repeat; FLOAT: right; = HEIGHT: 59px; PADDING-TOP: 5px } .posterousHeaderExpandedDivRightOpaque { BACKGROUND-IMAGE: url(/images/header/opaque/clear-expanded.png); = POSITION: relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: = 454px; PADDING-RIGHT: 5px; BACKGROUND-REPEAT: no-repeat; FLOAT: left; = HEIGHT: 59px; PADDING-TOP: 5px } .posterousHeaderExpandedDivLeftOpaque { BACKGROUND-IMAGE: url(/images/header/opaque/clear-expanded-left.png); = POSITION: relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: = 454px; PADDING-RIGHT: 5px; BACKGROUND-REPEAT: no-repeat; FLOAT: right; = HEIGHT: 59px; PADDING-TOP: 5px } .posterousHeaderImageRight { FLOAT: left } .posterousHeaderImageLeft { FLOAT: right } .posterousHeaderItem { LINE-HEIGHT: 14px; MARGIN: 1px 10px 0px 0px; FLOAT: left } .posterousHeaderItemProfile { MARGIN: 2px 7px 0px 0px; FLOAT: left } .posterousHeaderItemValue { WHITE-SPACE: nowrap; OVERFLOW: hidden; FONT-WEIGHT: bold } .posterousHeaderDark .posterousHeaderItem A:hover { TEXT-DECORATION: none !important } .posterousHeaderLight .posterousHeaderItem A:hover { TEXT-DECORATION: none !important } .posterousHeaderDark A:hover .posterousHeaderItemName { COLOR: #fff; TEXT-DECORATION: none !important } .posterousHeaderLight A:hover .posterousHeaderItemName { COLOR: #333; TEXT-DECORATION: none !important } .posterousHeaderDark .posterousHeaderItemName { COLOR: #444 } .posterousHeaderDark .posterousHeaderItemName A { COLOR: #444 } .posterousHeaderLight .posterousHeaderItemName { COLOR: #777 } .posterousHeaderLight .posterousHeaderItemName A { COLOR: #777 } .posterousHeaderDark .posterousHeaderItemValue { COLOR: #ccc } .posterousHeaderDark .posterousHeaderItemValue A { COLOR: #ccc } .posterousHeaderLight .posterousHeaderItemValue { COLOR: #444 } .posterousHeaderLight .posterousHeaderItemValue A { COLOR: #444 } #posterousHeaderNotLoggedIn { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; FONT-SIZE: 12px !important; = PADDING-TOP: 0px } DIV.posterousHeaderActions DIV { FLOAT: right } DIV.posterousHeaderActions DIV A:active { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } DIV.posterousHeaderActions DIV A:hover { BACKGROUND-POSITION: 0px -27px; TEXT-DECORATION: none !important } DIV.posterousHeaderActions DIV.subscribe A { BACKGROUND-IMAGE: url(/images/header/subscribe.png); WIDTH: 67px; = DISPLAY: block; HEIGHT: 27px; TEXT-DECORATION: none } DIV.posterousHeaderActions DIV.unsubscribe A { BACKGROUND-IMAGE: url(/images/header/unsubscribe.png); WIDTH: 79px; = DISPLAY: block; HEIGHT: 27px; TEXT-DECORATION: none } DIV.posterousHeaderActions DIV.newpost A { BACKGROUND-IMAGE: url(/images/header/newpost.png); WIDTH: 66px; = DISPLAY: block; HEIGHT: 27px; TEXT-DECORATION: none } DIV.posterousHeaderActions DIV.settings A { BACKGROUND-IMAGE: url(/images/header/settings.png); WIDTH: 58px; = DISPLAY: block; HEIGHT: 27px; TEXT-DECORATION: none } DIV.posterousHeaderActions DIV.tryitnow A { BACKGROUND-IMAGE: url(/images/header/tryitnow_login.png); WIDTH: 72px; = DISPLAY: block; HEIGHT: 27px; TEXT-DECORATION: none } DIV.posterousHeaderActions DIV.login A { BACKGROUND-IMAGE: url(/images/header/tryitnow_login.png); WIDTH: 45px; = DISPLAY: block; HEIGHT: 27px; TEXT-DECORATION: none } DIV.posterousHeaderActions DIV.login A { BACKGROUND-POSITION: -72px 0px } DIV.posterousHeaderActions DIV.login A:hover { BACKGROUND-POSITION: -72px -27px } #posterous_modal_flash { Z-INDEX: 100; BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; = TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 10px; = BACKGROUND-COLOR: #eee; PADDING-LEFT: 10px; WIDTH: 940px; PADDING-RIGHT: = 10px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #333; = MARGIN-LEFT: -470px; FONT-SIZE: 14px; TOP: 0px; FONT-WEIGHT: bold; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 10px; LEFT: 50%; = -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; = -webkit-border-bottom-left-radius: 5px; = -webkit-border-bottom-right-radius: 5px } #posterous_modal_flash_dismiss { PADDING-LEFT: 15px; FLOAT: right; FONT-SIZE: 11px } #posterous_modal_flash_dismiss A { COLOR: #aaa !important; TEXT-DECORATION: underline } #posterous_modal_flash_dismiss A:hover { COLOR: #888 !important; TEXT-DECORATION: underline } #modal_container_holder { -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px } .posterous_retweet_widget { MARGIN: 10px 0px; FONT-SIZE: 11px; VERTICAL-ALIGN: middle } .posterous_retweet_widget A { COLOR: #666 } .posterous_retweet_count { FONT-WEIGHT: bold } A.posterous_retweet { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #ccc; PADDING-LEFT: 4px; = PADDING-RIGHT: 4px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: = #fff; MARGIN-LEFT: 3px; FONT-SIZE: 10px; PADDING-TOP: 2px; = -webkit-border-radius: 5px; -moz-border-radius: 5px } A.posterous_retweet:hover { BACKGROUND-COLOR: #090; TEXT-DECORATION: none } #tag_editor *:first-child + HTML DIV.holder { PADDING-BOTTOM: 2px } #tag_editor * HTML DIV.holder { PADDING-BOTTOM: 2px } #tag_editor OL LI { LIST-STYLE-TYPE: none } #tag_editor DIV.holder * { FONT: 12px Helvetica, Arial, sans-serif; COLOR: #444 } DIV.autocomplete * { FONT: 12px Helvetica, Arial, sans-serif; COLOR: #444 } #tag_editor DIV.holder { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = OVERFLOW: hidden; BORDER-TOP: #ddd 1px solid; CURSOR: text; = BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 4px; -webkit-border-radius: = 3px; -moz-border-radius: 3px; border-radius: 3px } #tag_editor DIV.holder A { MARGIN: 0px 5px 4px 0px; FLOAT: left } #tag_editor DIV.holder A.bit { COLOR: #444; TEXT-DECORATION: none } #tag_editor DIV.holder A.bit:active { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } DIV.holder A.bit:focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } #tag_editor DIV.holder A.bit-box { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; BORDER-LEFT: #ddd = 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 15px; = BACKGROUND: #eee; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px = solid; PADDING-TOP: 3px; -webkit-border-radius: 6px; -moz-border-radius: = 6px; border-radius: 6px } #tag_editor DIV.holder A.bit-box-focus { BORDER-BOTTOM-COLOR: #598bec; BORDER-TOP-COLOR: #598bec; BACKGROUND: = #598bec; COLOR: #fff; BORDER-RIGHT-COLOR: #598bec; BORDER-LEFT-COLOR: = #598bec } #tag_editor DIV.holder A.bit-input INPUT { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 2px; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; WIDTH: 150px; PADDING-RIGHT: 0px; = BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px } #tag_editor DIV.holder A.bit-input INPUT.smallinput { WIDTH: 20px } #tag_editor DIV.holder A.bit-hover { BORDER-BOTTOM: #090 1px solid; BORDER-LEFT: #090 1px solid; BACKGROUND: = #fff; BORDER-TOP: #090 1px solid; BORDER-RIGHT: #090 1px solid } #tag_editor DIV.holder A.bit-box-focus { BORDER-BOTTOM-COLOR: #090; BORDER-TOP-COLOR: #090; BACKGROUND: #090; = COLOR: #fff; BORDER-RIGHT-COLOR: #090; BORDER-LEFT-COLOR: #090 } #tag_editor DIV.holder A.bit-box A.closebutton { POSITION: absolute; WIDTH: 7px; DISPLAY: block; BACKGROUND: = url(/images/close.gif); HEIGHT: 7px; FONT-SIZE: 1px; TOP: 5px; RIGHT: = 0px } #tag_editor DIV.holder A.bit-box A.closebutton:hover { BACKGROUND-POSITION: 7px 50% } #tag_editor DIV.holder A.bit-box A.closebutton:active { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } #tag_editor DIV.holder A.bit-box-focus A.closebutton { BACKGROUND-POSITION: 50% bottom } DIV.holder A.bit-box-focus A.closebutton:hover { BACKGROUND-POSITION: 50% bottom } #tag_editor INPUT.maininput { MARGIN-TOP: 2px !important } #tag_editor INPUT.inputMessage { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN-TOP: 2px = !important; COLOR: #ccc; FONT-SIZE: 11px; BORDER-TOP: medium none; = BORDER-RIGHT: medium none } #tag_editor DIV.autocomplete { POSITION: absolute; WIDTH: 492px; DISPLAY: none; BACKGROUND: #eee } #tag_editor DIV.autocomplete .default { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: = #ccc 0px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 5px } #tag_editor DIV.autocomplete UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; DISPLAY: none; OVERFLOW: auto; PADDING-TOP: 0px } #tag_editor DIV.autocomplete UL LI { Z-INDEX: 1000; BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: none; MARGIN: 0px; = PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 0px solid; = CURSOR: pointer; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 5px } #tag_editor DIV.autocomplete UL LI EM { FONT-STYLE: normal; BACKGROUND: #ccc; FONT-WEIGHT: bold } #tag_editor DIV.autocomplete UL LI.auto-focus { BACKGROUND: #090; COLOR: #fff } #tag_editor DIV.autocomplete UL LI.auto-focus B { BACKGROUND: #090; COLOR: #fff } #tag_editor DIV.autocomplete UL LI.auto-focus EM { BACKGROUND: #090; COLOR: #fff } #tag_editor DIV.autocomplete UL LI.auto-focus EM { BACKGROUND: none transparent scroll repeat 0% 0% } #import_content_area { MARGIN: 10px 10px 10px 20px } .import_url { COLOR: #999; FONT-SIZE: 20px; -webkit-border-radius: 5px; = -moz-border-radius: 5px } #import_left { WIDTH: 250px; FLOAT: left } #import_right { WIDTH: 400px; FLOAT: left } #import_details { BORDER-TOP: #ddd 1px solid; PADDING-TOP: 10px } #service_list { MARGIN: 0px } #service_list LI { PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 3px; PADDING-RIGHT: 3px; LIST-STYLE-IMAGE: none; PADDING-TOP: 3px } #import_right TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } .cancel { MARGIN-TOP: 18px !important; DISPLAY: block; HEIGHT: 42px } .blog_service LABEL { WIDTH: 90px; DISPLAY: block; FLOAT: left; COLOR: #000; FONT-WEIGHT: = bold } .service_icon { MARGIN-LEFT: 90px } #user_blog_url { COLOR: #009900 } .CodeRay { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; = PADDING-BOTTOM: 3px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #232323; = MARGIN: 12px 0px 20px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = FONT-FAMILY: "Courier New", "Terminal", monospace; COLOR: #e6e0db; = FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: black 1px solid; = BORDER-RIGHT: black 1px solid; PADDING-TOP: 3px } .CodeRay PRE { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .hide_numbers SPAN.no { DISPLAY: none } .CodeRay .an { COLOR: #e7be69 } .CodeRay .c { FONT-STYLE: italic; COLOR: #bc9358 } .CodeRay .ch { COLOR: #509e4f } .CodeRay .cl { COLOR: #fff } .CodeRay .co { COLOR: #fff } .CodeRay .fl { COLOR: #a4c260 } .CodeRay .fu { COLOR: #ffc56d } .CodeRay .gv { COLOR: #d0cffe } .CodeRay .i { COLOR: #a4c260 } .CodeRay .il { BACKGROUND: #151515 } .CodeRay .iv { COLOR: #d0cffe } .CodeRay .pp { COLOR: #e7be69 } .CodeRay .r { COLOR: #cb7832 } .CodeRay .rx { COLOR: #a4c260 } .CodeRay .s { COLOR: #a4c260 } .CodeRay .sy { COLOR: #6c9cbd } .CodeRay .ta { COLOR: #e7be69 } .CodeRay .pc { COLOR: #6c9cbd } DIV.menu { POSITION: absolute; TEXT-ALIGN: left; FONT-FAMILY: Arial, Helvetica, = sans-serif; TOP: 0px; LEFT: 0px } DIV.menu A { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium; = DISPLAY: block; FONT-SIZE: 11px; CURSOR: default; TEXT-DECORATION: none } .menu .separator { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; HEIGHT: 1px; FONT-SIZE: 1px; OVERFLOW: hidden; PADDING-TOP: 0px } .menu UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .menu LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .menu LI { LIST-STYLE-POSITION: outside } .desktop.menu { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #f9f9f9; PADDING-LEFT: 0px; = WIDTH: 14em; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -webkit-border-radius: = 3px; -moz-border-radius: 3px; border-radius: 3px } .desktop.menu UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .desktop.menu LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .desktop.menu LI.separator { HEIGHT: 1px } .desktop.menu A { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 32px; PADDING-RIGHT: = 0px; COLOR: #666; PADDING-TOP: 5px } .desktop.menu A.disabled { FILTER: alpha(opacity=3D25); ZOOM: 1; opacity: 0.25 } .desktop.menu LI.separator { BORDER-BOTTOM: #fff 1px solid; LINE-HEIGHT: 1px !important; = BACKGROUND-COLOR: #ccc; MARGIN: 1px 1px 0px } .desktop.menu A.enabled:hover { BACKGROUND-COLOR: #eee; COLOR: #000; CURSOR: pointer } .desktop.menu A.enabled:active { BACKGROUND-COLOR: #f9f9f9; COLOR: #090; CURSOR: pointer } ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://edge.quantserve.com/quant.js //=0A= // For correct measurement, DO NOT HOST THIS FROM ANOTHER SERVER=0A= //=0A= function _qcdst(){if(_qctzoff(0)!=3D_qctzoff(6))return 1;return 0;}=0A= function _qctzoff(m){=0A= var d1=3Dnew Date(2000,m,1,0,0,0,0);=0A= var t=3Dd1.toGMTString();=0A= var d3=3Dnew Date(t.substring(0,t.lastIndexOf(" ")-1));=0A= return d1-d3;=0A= }=0A= function _qceuc(s){=0A= if(typeof(encodeURIComponent)=3D=3D'function'){return = encodeURIComponent(s);}=0A= else{return escape(s);}=0A= }=0A= function _qcrnd(){return Math.round(Math.random()*2147483647);}=0A= function _qcgc(n){=0A= var v=3D'';=0A= var c=3Ddocument.cookie;if(!c)return v;=0A= var i=3Dc.indexOf(n+"=3D");=0A= var len=3Di+n.length+1;=0A= if(i>-1){=0A= var end=3Dc.indexOf(";", len);=0A= if(end<0)end=3Dc.length;=0A= v=3Dc.substring(len,end);=0A= }=0A= return v;=0A= }=0A= function _qcdomain(){=0A= var d=3Ddocument.domain;=0A= if(d.substring(0,4)=3D=3D"www.")d=3Dd.substring(4,d.length);=0A= var a=3Dd.split(".");var len=3Da.length;=0A= if(len<3)return d;=0A= var e=3Da[len-1];=0A= if(e.length<3)return d;=0A= d=3Da[len-2]+"."+a[len-1];=0A= return d;=0A= }=0A= function _qhash2(h,s){=0A= for(var i=3D0;i0){s+=3D";fpan=3D0;fpa=3D"+a;}=0A= else{=0A= var da=3Dnew Date();=0A= a=3D'P0-'+_qcrnd()+'-'+da.getTime();=0A= u.cookie=3D"__qca=3D"+a+"; expires=3DSun, 18 Jan 2038 00:00:00 GMT; = path=3D/; domain=3D"+d;=0A= a=3D_qcgc("__qca");=0A= if(a.length>0){s+=3D";fpan=3D1;fpa=3D"+a;}=0A= else{s+=3D";fpan=3Du;fpa=3D";}=0A= }=0A= return s;=0A= }=0A= function _qcdc(n){=0A= document.cookie=3Dn+"=3D; expires=3DThu, 01 Jan 1970 00:00:01 GMT; = path=3D/; domain=3D"+_qcdomain();=0A= }=0A= function _qpxload(){=0A= if((_qimg)&& typeof _qimg.width =3D=3D"number"){=0A= if (_qimg.width=3D=3D3){_qcdc("__qca");}=0A= }}=0A= function _qcp(p, myqo)=0A= {=0A= var s=3D'',a=3Dnull;=0A= var media=3D'webpage',event=3D'load';=0A= if(myqo!=3Dnull){=0A= for(var k in myqo){=0A= if(typeof(k)!=3D'string'){continue;}=0A= if(typeof(myqo[k])!=3D'string'){continue;}=0A= if(k=3D=3D'qacct'){=0A= a=3Dmyqo[k];=0A= continue;=0A= }=0A= s+=3D';'+k+p+'=3D'+_qceuc(myqo[k]);=0A= if(k=3D=3D'media'){media=3Dmyqo[k];}=0A= if(k=3D=3D'event'){event=3Dmyqo[k];}=0A= }=0A= }=0A= if (typeof a !=3D"string"){=0A= if((typeof _qacct =3D=3D"undefined")||(_qacct.length=3D=3D0))return'';=0A= a=3D_qacct;=0A= }=0A= if (media=3D=3D'webpage' && event=3D=3D'load'){=0A= for(var i=3D0;i<_qpixelsent.length;i++){=0A= if(_qpixelsent[i]=3D=3Da)return'';=0A= }=0A= _qpixelsent.push(a);=0A= }=0A= if (media=3D=3D'ad'){_qad=3D1;}=0A= s=3D';a'+p+'=3D'+a+s;=0A= return s;=0A= }=0A= function quantserve(){=0A= var r=3D_qcrnd();=0A= var sr=3D'',qo=3D'',qm=3D'',url=3D'',ref=3D'',je=3D'u',ns=3D'1';=0A= var qocount=3D0;=0A= _qad=3D0;=0A= if(typeof _qpixelsent =3D=3D"undefined"){=0A= _qpixelsent=3D new Array();=0A= }=0A= if(typeof _qoptions !=3D"undefined" && _qoptions!=3Dnull){=0A= var _qopts=3D_qoptions;_qoptions=3Dnull;=0A= for(var k in _qopts){=0A= if(typeof(_qopts[k])=3D=3D'string'){=0A= qo=3D_qcp("", _qopts);=0A= break;=0A= }else if(typeof(_qopts[k])=3D=3D'object' && _qopts[k]!=3Dnull){=0A= ++qocount;=0A= qo+=3D_qcp("."+qocount, _qopts[k]);=0A= }=0A= }=0A= }else if (typeof _qacct =3D=3D"string"){=0A= qo=3D_qcp("",null);=0A= }=0A= if(qo.length=3D=3D0)return;=0A= var ce=3D(navigator.cookieEnabled)?"1":"0";=0A= if(typeof navigator.javaEnabled = !=3D'undefined')je=3D(navigator.javaEnabled())?"1":"0";=0A= if(typeof _qmeta !=3D"undefined" && = _qmeta!=3Dnull){qm=3D';m=3D'+_qceuc(_qmeta);_qmeta=3Dnull;}=0A= = if(self.screen){sr=3Dscreen.width+"x"+screen.height+"x"+screen.colorDepth= ;}=0A= var d=3Dnew Date();=0A= var dst=3D_qcdst();=0A= =0A= =0A= =0A= =0A= =0A= =0A= var dg=3D"E12267-W-MS-8";=0A= var qs=3D"http://pixel.quantserve.com";=0A= var fp=3D_qcsc();=0A= if(window.location && = window.location.href)url=3D_qceuc(window.location.href);=0A= if(window.document && = window.document.referrer)ref=3D_qceuc(window.document.referrer);=0A= if(self=3D=3Dtop)ns=3D'0';=0A= _qimg=3Dnew Image();=0A= _qimg.alt=3D"";=0A= = _qimg.src=3Dqs+'/pixel'+';r=3D'+r+fp+';ns=3D'+ns+';url=3D'+url+';ref=3D'+= ref+';ce=3D'+ce+';je=3D'+je+';sr=3D'+sr+';dg=3D'+dg+';dst=3D'+dst+';et=3D= '+d.getTime()+';tzo=3D'+d.getTimezoneOffset()+qo+qm;=0A= _qimg.onload=3Dfunction() {_qpxload();}=0A= }=0A= quantserve();=0A= ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0013_01CAFDEE.4FE85370" ------=_NextPart_001_0013_01CAFDEE.4FE85370 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://gp-bc7f8.posterous.com/ =EF=BB=BF gp's posterous - = Home

Is this your site?
Sign up is a snap, and lets you = customize and=20 edit your Posterous.=20

To claim this site, register for a Posterous account here.=20

3DFavicon=20 = ;Claim=20 this site




April=20 6, 2010

Post=20 removed from Greenpeace site Part 1

Will the real ClimateGate please stand up? = (part 1)

Gene from Greenpeace = India is=20 known around the Greenpeace world for stating his opinion loud and = clear, and=20 not being a diplomat. He wrote this blog, showing the links, tight and = loose,=20 between the various player in the industry of climate inaction.
Note: = the=20 blog he sent was quite long, so I cut it in two parts. Tune in tomorrow = for part=20 2

Remember the longest night of 2009? That was the night the climate = summit in=20 Copenhagen, sick as a dog, collapsed in a heap before our very eyes. But = if=20 truth be told, the make-or-break negotiations had died long before that = night.=20 They were dead when they came to the table, the leviathan slowly = poisoned over a=20 decade, its body already sick with rumour, lies, bribery, propaganda and = disinformation.


None of us knew this at the time, of course, and as nation after = vulnerable=20 nation stated its case long into the night, hope still sprung eternal. = Over 16=20 million people had waited for the nail-biting finish, naively clinging = to every=20 desolate straw, even in the moment of going under. "This is how the = world ends,"=20 wrote T S Eliot presciently, "not with a bang but a whimper."

Ricken Patel of Avaaz commented on the whimper: "There are some = opening=20 champagne at this moment. They are the fossil fuel lobbyists and = polluting=20 industries who have worked for years to capture key leaders and deny = democracy=20 today. They have so far operated in the shadows, but in the coming = months the=20 climate movement will take the fight directly to these lobbies and the=20 legislatures they have captured."

How right he was.

Coincidence or Conspiracy?

Greenpeace researchers have spent these past three months uncovering = the=20 money trail that led to the unmitigated disaster of Copenhagen.

But before I get to what we found out, a word about what we found = odd...

To begin with, why was the attack against the IPCC at the height of = climate=20 negotiations in Copenhagen so virulent? Remember all those leaked = emails?=20 Remember the drama around "ClimateGate" -- all timed impeccably to = discredit not=20 just the Copenhagen summit, the IPCC and specific figureheads, but also = the=20 entire accumulated body of work put together by thousands of = climatologists?

It gets curiouser. Why did the EU in those final days, while = ostensibly=20 working to strive for a fair, ambitious and binding deal at Copenhagen, = take a=20 position so limp-wristed it was beyond farcical?

Why did the US, despite being responsible for the largest per capita = share of=20 global CO2 emissions, and despite all its noises about the urgency to = act, make=20 little more than a papal visit to bless the broken wedding? A three-page = joke=20 (the Copenhagen Accord) was found to be the only evidence left of = America's=20 involvement, even as it fled the crime scene on Air Force One.

And more recently, even as we were figuring all this out, w= hy did=20 Czech environment minister Jan Dusik resign rather than approve = revamping of=20 the Czech Republic's dirtiest coal power plant?

The result of these =E2=80=9Ccoincidences=E2=80=9D has been a global = undermining of climate=20 science as a whole. Climate skeptics are suddenly enjoying street cred. = Not=20 surprisingly, public belief in the climate science has been shaken. How = did this=20 happen? Or, as a fellow traveler tweeted the other day... "How do you = explain=20 the weight of climate skeptic voices in social media if expertise is = more valued=20 than ever?"

If you're interested in answers to any of these questions, you've = come to the=20 right place.

Lies, Denial and Skepticism. Now available for a fee.

As our investigations started, it quickly became clear this was going = to be=20 harder than we'd imagined. The smoke and mirrors created by the fossil = fuel=20 lobby are impenetrable. Their own tracks well covered, they operate = through=20 front groups, shell companies and think tanks.

But as we as we started knocking down the doors of loose, faceless=20 associations representing industry interests, we found a cache of = chemical and=20 oil companies, every last one of whom benefits greatly if a climate = treaty never=20 gets signed, and every last one of whom is responsible for the = industrialized=20 world=E2=80=99s compromised and compromising position in Copenhagen.

LSE's=20 Bob Ward admits that "a lot of the climate skeptic arguments are = being made=20 by people with demonstrable right-wing ideology which is based on = opposition to=20 any environmental regulation of the market, and they are clearly being = given=20 money that allows them to disseminate their views more widely than would = be the=20 case if they didn't have oil company funding."

Across the pond in the US, the "biggest company you've never heard = of" has=20 been hard at work to achieve similar results. Their=20 name is Koch. You can pronounce that name any way you want.

David and Charles are two brothers heading Koch Industries. And they = are to=20 US climate policy what Halliburton was to US foreign policy. With $100 = billion=20 in annual sales and operations in nearly 60 countries, they have = enormous=20 financial interest in keeping us addicted to fossil fuels. Matter of = fact,=20 they've actually surpassed Exxon=E2=80=99s funding of climate denial = think-tanks and=20 astroturf front groups.

Through millions in lobbying and political contributions to = politicians,=20 Charles and David Koch are polluting not only our environment, but also = the US=20 political process, where efforts to get climate legislation passed is = being=20 hampered by massive corporate lobbying and denial campaigns -- including = those=20 that now claim that polar bears are not threatened by global = warming.

Despite being virtually invisible to the public, Koch Industries is = a top=20 lobbying spender, a massive funding source to climate-denial = front-groups, and a=20 major force fighting against clean energy policies. Charles and David Koch, who own and = control=20 the corporation, drive the anti-environmental political=20 spending.

More tomorrow...

Photo: =C2=A9 Greenpeace / Pedro Armestre

Comments=20 [0]

= April 6,=20 2010

= Post=20 removed from Greenpeace site

Gene from Greenpeace India is known around the Greenpeace world = for=20 stating his opinion loud and clear, and not being a diplomat. He wrote = this=20 blog, showing the links, tight and loose, between the various player in = the=20 industry of climate inaction.
Note: This is the second part of his = blog - if=20 you haven't read part one yet, start=20 there.

Jump=20 to the "where you live" update.

Greenpeace=20 has almost 40 years of history as a peaceful organization. Two of ou= r core=20 values are:=20
  • We 'bear witness' to environmental destruction in a peaceful, = non-violent=20 manner.
  • We use non-violent confrontation to raise the level and quality of = public=20 debate.

This blog entry is about encouraging civil disobedience and = non-violent=20 direct action - the kind of peaceful methods that liberated Gene's = country=20 (India) from imperialism.

I know Gene, and he's a genuinely peaceful guy who believes in the = power of=20 peaceful protest to change the world. Some people are trying to portray = him as=20 otherwise. Just read what he had to say in context. He is very specific = about=20 what he thinks people should do.

While we encourage and appreciate discussion in the comments, do stay = polite=20 and don't make death threats or incite violence. (Not towards our staff, = not=20 towards people we disagree with, not towards anyone. Please be nice = people.=20 Thanks.)

-- Andrew (Greenpeace web producer)

Just as we were bolting down our investigations and going to press = with our=20 findings, something happened in the Czech Republic.

Three months ago, in an unprecedented move that could have = far-reaching=20 effects, the small Pacific island nation of Micronesia wrote to the = Czech=20 Environment Ministry challenging the expansion of Prunerov 2, the Czech=20 Republic's most polluting coal power plant. Their case? The effect of = CO2=20 emissions from Prunerov and plants like it would eventually see = low-lying=20 Pacific islands -- even those that didn't share a border with the = polluting=20 country -- submerged due to rising sea levels.


This could have been climate cause-and-effect finally meeting face to = face=20 across a crowded courtroom. B= ut that=20 didn't happen.

When Environment Minister Dusik told his Prime Minister he intended = to reject=20 Prunerov's expansion plans, he was told that was impossible. Rather than = do the=20 bidding of fossil fuel corporations, Dusik resigned. While stepping = down, he=20 mentioned that the pressure from lobby groups and big business was too = much to=20 bear.

So that's what it's come down to. This could have become the first = case of a=20 climate-vulnerable country challenging coal power plants beyond its own = borders=20 and, in doing so, challenging everyone=E2=80=99s right to pollute. This = could have put=20 climate justice through its first stress-test. Instead, this has = revealed that a=20 watertight legal case, a high moral ground and a credible support base = are no=20 match for infinitely-resourced and well-muscled think-tanks.

This Prague Spring has revealed, above all, that the "proper = channels" for=20 righting historical wrongs have failed.

The [r]evolution won=E2=80=99t be televised.

What do you do when patient petitioning, protest marches and court = orders=20 fail? What do you do when all the protocols and cheat codes of democracy = fail?=20 This is what you do: you reclaim the language of democracy from the = twisted=20 bunch that have hijacked, cannibalized and subverted it.

Pressuring politicians on climate change is not working. We saw that = in=20 Copenhagen. Three months later, we also know why. Which is why the = global=20 climate movement now must do course-correction. We need to shift targets = and go=20 after the real termites that hollowed out and imploded Copenhagen.

Not Barosso, Obama or Wen Jiabao, but the real obstacles to the = climate deal=20 this planet deserves and demands. The oil and gas mafia running loose in = New=20 Delhi. The coal magnates that have Canberra by the short and curlies. = The=20 petrochemical giants that have placed a firm jackboot on the EU's = throat. The=20 fossil fools and nuclear lobbyists that have Washington DC on = speed-dial.

We need to hit them where it hurts most, by any means necessary: = through the=20 power of our votes, our taxes, our wallets, and more.

We need to be inclusive. We need to join forces with those within the = climate=20 movement that are taking direct = action=20 to disrupt the CO2 supply chain. We need to embrace the conservatives = too, the=20 ones that choose scientific rigour and court injunctions as their = weapons.

And we need to inspire, engage and empower everyone in between... = from the=20 AirPlotters stopping the expansion of Heathrow by purchasing bits of the proposed = runway to the=20 volunteer activists that have been making=20 life hell for fossil fuel lobbyists in the US.

Finally, we need to prove repeatedly, consistently, doggedly, that = our=20 alternative vision of a=20 world that runs on clean energy isn=E2=80=99t just a prototype, = it=E2=80=99s already in=20 production.

Emerging battle-bruised from the disaster zone of Copenhagen, but=20 ever-hopeful, a rider on=20 horseback brought news of darkness and light: "The politicians = have=20 failed. Now it's up to us. We must break the law to make the laws we = need: laws=20 that are supposed to protect society, and protect our future. Until our = laws do=20 that, screw being climate lobbyists. Screw being climate activists. It's = not=20 working. We need an army of climate outlaws."

The proper channels have failed. It's time for mass civil = disobedience to cut=20 off the financial oxygen from denial and skepticism.

If you're one of those who believe that this is not just necessary = but also=20 possible, speak to us. Let's talk about what that mass civil = disobedience is=20 going to look like.

If you're one of those who have spent their lives undermining = progressive=20 climate legislation, bankrolling junk science, fueling spurious debates = around=20 false solutions, and cattle-prodding democratically-elected governments = into=20 submission, then hear this:

We know who you are. We know where you live. We know where you = work.

And we be many, but you be few.

Gene's=20 blog entry is about encouraging PEACEFUL civil disobedience - the kind = of=20 peaceful methods that liberated Gene's country (India) from imperialism. = Peaceful direct action is part of ou= r core=20 values.=20

Hear Gene talk about his own activism...

FYI - Press=20 release about the 2007 protest is here.

-- Andrew (Greenpeace web producer)


Update: Where you live

A lot of folks commenting are sizing on the words, "we know where you = live".=20

Gene has a tendency towards the dramatic. So at first I didn't think = anything=20 much about them. After all, I know he's a peaceful kind of guy, I know = Gr= eenpeace=20 is a peaceful organization and I know what he's got on his mind.

It's no coincidence that Gene's blog post came out just two days = after we=20 published a report about how one giant corporation, Koch Industries, is = secretly=20 funding the climate denial machine.

In that report, we name names (specifically David and Charles Koch). = We're=20 going to hold powerful people like them accountable for their actions - = through=20 protest, civil disobedience and other forms of peaceful direct = action.

That's all Gene is saying we should do.

But then I got to thinking: Would we ever protest at someones house? = And=20 would that be OK? Of course it would be a peaceful protest. But would it = be=20 ethical?

There are only two cases I can think of where Greenpeace protesters = actually=20 showed up at someone's home:


Union=20 Carbide chairman - arrest warrant served

Warren Anderson was the chairman of Union Carbide at the time of the = Bhopal=20 plant explosion, which killed thousands. He was charged with culpable = homicide,=20 but fled India and has refused to return to face justice. When asked to = turn him=20 over, the US government's position was that they could not find = Anderson.

We found him, went to his house and served=20 an arrest warrant.


Solar=20 panels for Australia's Prime Minister

In 1997, Greenpeace activists showed up at the Prime Minister's house = with a=20 gift - solar panels, which they installed on the roof. The activists = were=20 arrested for trespass. I'm not sure if the solar panels stayed on the = roof (I=20 somehow doubt it), but a lot of attention was brought to the potential = of solar=20 power in Australia. (Read=20 more)


Personally, I think both of these protests were pretty cool. I've = heard=20 they were very controversial at the time though, and there was a lot of = debate=20 about whether we'd crossed a line.

What do you think about cases like these?


-- Andrew Davies, Greenpeace web producer

Comments=20 [1]



------=_NextPart_001_0013_01CAFDEE.4FE85370 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://posterous.com/analytics_tracker Posterous Analytics Tracker =0A= _qoptions=3D{=0A= qacct:"p-16ewveTurfCCM"=0A= };=0A= ------=_NextPart_001_0013_01CAFDEE.4FE85370-- ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://gp-bc7f8.posterous.com/javascripts/bundles/main.js?1274974359 /* Prototype JavaScript framework, version 1.6.1=0A= * (c) 2005-2009 Sam Stephenson=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://www.prototypejs.org/=0A= *=0A= = *------------------------------------------------------------------------= --*/=0A= =0A= var Prototype =3D {=0A= Version: '1.6.1',=0A= =0A= Browser: (function(){=0A= var ua =3D navigator.userAgent;=0A= var isOpera =3D Object.prototype.toString.call(window.opera) =3D=3D = '[object Opera]';=0A= return {=0A= IE: !!window.attachEvent && !isOpera,=0A= Opera: isOpera,=0A= WebKit: ua.indexOf('AppleWebKit/') > -1,=0A= Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') = =3D=3D=3D -1,=0A= MobileSafari: /Apple.*Mobile.*Safari/.test(ua)=0A= }=0A= })(),=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=0A= SelectorsAPI: !!document.querySelector,=0A= ElementExtensions: (function() {=0A= var constructor =3D window.Element || window.HTMLElement;=0A= return !!(constructor && constructor.prototype);=0A= })(),=0A= SpecificElementExtensions: (function() {=0A= if (typeof window.HTMLDivElement !=3D=3D 'undefined')=0A= return true;=0A= =0A= var div =3D document.createElement('div');=0A= var form =3D document.createElement('form');=0A= var isSupported =3D false;=0A= =0A= if (div['__proto__'] && (div['__proto__'] !=3D=3D = form['__proto__'])) {=0A= isSupported =3D true;=0A= }=0A= =0A= div =3D form =3D null;=0A= =0A= return isSupported;=0A= })()=0A= },=0A= =0A= ScriptFragment: ']*>([\\S\\s]*?)<\/script>',=0A= JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A= =0A= emptyFunction: function() { },=0A= K: function(x) { return x }=0A= };=0A= =0A= if (Prototype.Browser.MobileSafari)=0A= Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A= =0A= =0A= var Abstract =3D { };=0A= =0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var lambda =3D arguments[i];=0A= try {=0A= returnValue =3D lambda();=0A= break;=0A= } catch (e) { }=0A= }=0A= =0A= return returnValue;=0A= }=0A= };=0A= =0A= /* Based on Alex Arnell's inheritance implementation. */=0A= =0A= var Class =3D (function() {=0A= function subclass() {};=0A= function create() {=0A= var parent =3D null, properties =3D $A(arguments);=0A= if (Object.isFunction(properties[0]))=0A= parent =3D properties.shift();=0A= =0A= function klass() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= =0A= Object.extend(klass, Class.Methods);=0A= klass.superclass =3D parent;=0A= klass.subclasses =3D [];=0A= =0A= if (parent) {=0A= subclass.prototype =3D parent.prototype;=0A= klass.prototype =3D new subclass;=0A= parent.subclasses.push(klass);=0A= }=0A= =0A= for (var i =3D 0; i < properties.length; i++)=0A= klass.addMethods(properties[i]);=0A= =0A= if (!klass.prototype.initialize)=0A= klass.prototype.initialize =3D Prototype.emptyFunction;=0A= =0A= klass.prototype.constructor =3D klass;=0A= return klass;=0A= }=0A= =0A= function addMethods(source) {=0A= var ancestor =3D this.superclass && this.superclass.prototype;=0A= var properties =3D Object.keys(source);=0A= =0A= if (!Object.keys({ toString: true }).length) {=0A= if (source.toString !=3D Object.prototype.toString)=0A= properties.push("toString");=0A= if (source.valueOf !=3D Object.prototype.valueOf)=0A= properties.push("valueOf");=0A= }=0A= =0A= for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A= var property =3D properties[i], value =3D source[property];=0A= if (ancestor && Object.isFunction(value) &&=0A= value.argumentNames().first() =3D=3D "$super") {=0A= var method =3D value;=0A= value =3D (function(m) {=0A= return function() { return ancestor[m].apply(this, arguments); = };=0A= })(property).wrap(method);=0A= =0A= value.valueOf =3D method.valueOf.bind(method);=0A= value.toString =3D method.toString.bind(method);=0A= }=0A= this.prototype[property] =3D value;=0A= }=0A= =0A= return this;=0A= }=0A= =0A= return {=0A= create: create,=0A= Methods: {=0A= addMethods: addMethods=0A= }=0A= };=0A= })();=0A= (function() {=0A= =0A= var _toString =3D Object.prototype.toString;=0A= =0A= function extend(destination, source) {=0A= for (var property in source)=0A= destination[property] =3D source[property];=0A= return destination;=0A= }=0A= =0A= function inspect(object) {=0A= try {=0A= if (isUndefined(object)) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : String(object);=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= }=0A= =0A= function toJSON(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =0A= if (object =3D=3D=3D null) return 'null';=0A= if (object.toJSON) return object.toJSON();=0A= if (isElement(object)) return;=0A= =0A= var results =3D [];=0A= for (var property in object) {=0A= var value =3D toJSON(object[property]);=0A= if (!isUndefined(value))=0A= results.push(property.toJSON() + ': ' + value);=0A= }=0A= =0A= return '{' + results.join(', ') + '}';=0A= }=0A= =0A= function toQueryString(object) {=0A= return $H(object).toQueryString();=0A= }=0A= =0A= function toHTML(object) {=0A= return object && object.toHTML ? object.toHTML() : = String.interpret(object);=0A= }=0A= =0A= function keys(object) {=0A= var results =3D [];=0A= for (var property in object)=0A= results.push(property);=0A= return results;=0A= }=0A= =0A= function values(object) {=0A= var results =3D [];=0A= for (var property in object)=0A= results.push(object[property]);=0A= return results;=0A= }=0A= =0A= function clone(object) {=0A= return extend({ }, object);=0A= }=0A= =0A= function isElement(object) {=0A= return !!(object && object.nodeType =3D=3D 1);=0A= }=0A= =0A= function isArray(object) {=0A= return _toString.call(object) =3D=3D "[object Array]";=0A= }=0A= =0A= =0A= function isHash(object) {=0A= return object instanceof Hash;=0A= }=0A= =0A= function isFunction(object) {=0A= return typeof object =3D=3D=3D "function";=0A= }=0A= =0A= function isString(object) {=0A= return _toString.call(object) =3D=3D "[object String]";=0A= }=0A= =0A= function isNumber(object) {=0A= return _toString.call(object) =3D=3D "[object Number]";=0A= }=0A= =0A= function isUndefined(object) {=0A= return typeof object =3D=3D=3D "undefined";=0A= }=0A= =0A= extend(Object, {=0A= extend: extend,=0A= inspect: inspect,=0A= toJSON: toJSON,=0A= toQueryString: toQueryString,=0A= toHTML: toHTML,=0A= keys: keys,=0A= values: values,=0A= clone: clone,=0A= isElement: isElement,=0A= isArray: isArray,=0A= isHash: isHash,=0A= isFunction: isFunction,=0A= isString: isString,=0A= isNumber: isNumber,=0A= isUndefined: isUndefined=0A= });=0A= })();=0A= Object.extend(Function.prototype, (function() {=0A= var slice =3D Array.prototype.slice;=0A= =0A= function update(array, args) {=0A= var arrayLength =3D array.length, length =3D args.length;=0A= while (length--) array[arrayLength + length] =3D args[length];=0A= return array;=0A= }=0A= =0A= function merge(array, args) {=0A= array =3D slice.call(array, 0);=0A= return update(array, args);=0A= }=0A= =0A= function argumentNames() {=0A= var names =3D = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]=0A= .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')=0A= .replace(/\s+/g, '').split(',');=0A= return names.length =3D=3D 1 && !names[0] ? [] : names;=0A= }=0A= =0A= function bind(context) {=0A= if (arguments.length < 2 && Object.isUndefined(arguments[0])) return = this;=0A= var __method =3D this, args =3D slice.call(arguments, 1);=0A= return function() {=0A= var a =3D merge(args, arguments);=0A= return __method.apply(context, a);=0A= }=0A= }=0A= =0A= function bindAsEventListener(context) {=0A= var __method =3D this, args =3D slice.call(arguments, 1);=0A= return function(event) {=0A= var a =3D update([event || window.event], args);=0A= return __method.apply(context, a);=0A= }=0A= }=0A= =0A= function curry() {=0A= if (!arguments.length) return this;=0A= var __method =3D this, args =3D slice.call(arguments, 0);=0A= return function() {=0A= var a =3D merge(args, arguments);=0A= return __method.apply(this, a);=0A= }=0A= }=0A= =0A= function delay(timeout) {=0A= var __method =3D this, args =3D slice.call(arguments, 1);=0A= timeout =3D timeout * 1000=0A= return window.setTimeout(function() {=0A= return __method.apply(__method, args);=0A= }, timeout);=0A= }=0A= =0A= function defer() {=0A= var args =3D update([0.01], arguments);=0A= return this.delay.apply(this, args);=0A= }=0A= =0A= function wrap(wrapper) {=0A= var __method =3D this;=0A= return function() {=0A= var a =3D update([__method.bind(this)], arguments);=0A= return wrapper.apply(this, a);=0A= }=0A= }=0A= =0A= function methodize() {=0A= if (this._methodized) return this._methodized;=0A= var __method =3D this;=0A= return this._methodized =3D function() {=0A= var a =3D update([this], arguments);=0A= return __method.apply(null, a);=0A= };=0A= }=0A= =0A= return {=0A= argumentNames: argumentNames,=0A= bind: bind,=0A= bindAsEventListener: bindAsEventListener,=0A= curry: curry,=0A= delay: delay,=0A= defer: defer,=0A= wrap: wrap,=0A= methodize: methodize=0A= }=0A= })());=0A= =0A= =0A= Date.prototype.toJSON =3D function() {=0A= return '"' + this.getUTCFullYear() + '-' +=0A= (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A= this.getUTCDate().toPaddedString(2) + 'T' +=0A= this.getUTCHours().toPaddedString(2) + ':' +=0A= this.getUTCMinutes().toPaddedString(2) + ':' +=0A= this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A= };=0A= =0A= =0A= RegExp.prototype.match =3D RegExp.prototype.test;=0A= =0A= RegExp.escape =3D function(str) {=0A= return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A= };=0A= var PeriodicalExecuter =3D Class.create({=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= execute: function() {=0A= this.callback(this);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.execute();=0A= this.currentlyExecuting =3D false;=0A= } catch(e) {=0A= this.currentlyExecuting =3D false;=0A= throw e;=0A= }=0A= }=0A= }=0A= });=0A= Object.extend(String, {=0A= interpret: function(value) {=0A= return value =3D=3D null ? '' : String(value);=0A= },=0A= specialChar: {=0A= '\b': '\\b',=0A= '\t': '\\t',=0A= '\n': '\\n',=0A= '\f': '\\f',=0A= '\r': '\\r',=0A= '\\': '\\\\'=0A= }=0A= });=0A= =0A= Object.extend(String.prototype, (function() {=0A= =0A= function prepareReplacement(replacement) {=0A= if (Object.isFunction(replacement)) return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= }=0A= =0A= function gsub(pattern, replacement) {=0A= var result =3D '', source =3D this, match;=0A= replacement =3D prepareReplacement(replacement);=0A= =0A= if (Object.isString(pattern))=0A= pattern =3D RegExp.escape(pattern);=0A= =0A= if (!(pattern.length || pattern.source)) {=0A= replacement =3D replacement('');=0A= return replacement + source.split('').join(replacement) + = replacement;=0A= }=0A= =0A= while (source.length > 0) {=0A= if (match =3D source.match(pattern)) {=0A= result +=3D source.slice(0, match.index);=0A= result +=3D String.interpret(replacement(match));=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= }=0A= =0A= function sub(pattern, replacement, count) {=0A= replacement =3D prepareReplacement(replacement);=0A= count =3D Object.isUndefined(count) ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= }=0A= =0A= function scan(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return String(this);=0A= }=0A= =0A= function truncate(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : = String(this);=0A= }=0A= =0A= function strip() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= }=0A= =0A= function stripTags() {=0A= return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, = '');=0A= }=0A= =0A= function stripScripts() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= }=0A= =0A= function extractScripts() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= }=0A= =0A= function evalScripts() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= }=0A= =0A= function escapeHTML() {=0A= return = this.replace(/&/g,'&').replace(//g,'>');=0A= }=0A= =0A= function unescapeHTML() {=0A= return = this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&= /g,'&');=0A= }=0A= =0A= =0A= function toQueryParams(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return { };=0A= =0A= return match[1].split(separator || '&').inject({ }, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var key =3D decodeURIComponent(pair.shift());=0A= var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A= if (value !=3D undefined) value =3D decodeURIComponent(value);=0A= =0A= if (key in hash) {=0A= if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A= hash[key].push(value);=0A= }=0A= else hash[key] =3D value;=0A= }=0A= return hash;=0A= });=0A= }=0A= =0A= function toArray() {=0A= return this.split('');=0A= }=0A= =0A= function succ() {=0A= return this.slice(0, this.length - 1) +=0A= String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A= }=0A= =0A= function times(count) {=0A= return count < 1 ? '' : new Array(count + 1).join(this);=0A= }=0A= =0A= function camelize() {=0A= var parts =3D this.split('-'), len =3D parts.length;=0A= if (len =3D=3D 1) return parts[0];=0A= =0A= var camelized =3D this.charAt(0) =3D=3D '-'=0A= ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A= : parts[0];=0A= =0A= for (var i =3D 1; i < len; i++)=0A= camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1);=0A= =0A= return camelized;=0A= }=0A= =0A= function capitalize() {=0A= return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase();=0A= }=0A= =0A= function underscore() {=0A= return this.replace(/::/g, '/')=0A= .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')=0A= .replace(/([a-z\d])([A-Z])/g, '$1_$2')=0A= .replace(/-/g, '_')=0A= .toLowerCase();=0A= }=0A= =0A= function dasherize() {=0A= return this.replace(/_/g, '-');=0A= }=0A= =0A= function inspect(useDoubleQuotes) {=0A= var escapedString =3D this.replace(/[\x00-\x1f\\]/g, = function(character) {=0A= if (character in String.specialChar) {=0A= return String.specialChar[character];=0A= }=0A= return '\\u00' + character.charCodeAt().toPaddedString(2, 16);=0A= });=0A= if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"';=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= }=0A= =0A= function toJSON() {=0A= return this.inspect(true);=0A= }=0A= =0A= function unfilterJSON(filter) {=0A= return this.replace(filter || Prototype.JSONFilter, '$1');=0A= }=0A= =0A= function isJSON() {=0A= var str =3D this;=0A= if (str.blank()) return false;=0A= str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A= return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A= }=0A= =0A= function evalJSON(sanitize) {=0A= var json =3D this.unfilterJSON();=0A= try {=0A= if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A= } catch (e) { }=0A= throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A= }=0A= =0A= function include(pattern) {=0A= return this.indexOf(pattern) > -1;=0A= }=0A= =0A= function startsWith(pattern) {=0A= return this.indexOf(pattern) =3D=3D=3D 0;=0A= }=0A= =0A= function endsWith(pattern) {=0A= var d =3D this.length - pattern.length;=0A= return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A= }=0A= =0A= function empty() {=0A= return this =3D=3D '';=0A= }=0A= =0A= function blank() {=0A= return /^\s*$/.test(this);=0A= }=0A= =0A= function interpolate(object, pattern) {=0A= return new Template(this, pattern).evaluate(object);=0A= }=0A= =0A= return {=0A= gsub: gsub,=0A= sub: sub,=0A= scan: scan,=0A= truncate: truncate,=0A= strip: String.prototype.trim ? String.prototype.trim : = strip,=0A= stripTags: stripTags,=0A= stripScripts: stripScripts,=0A= extractScripts: extractScripts,=0A= evalScripts: evalScripts,=0A= escapeHTML: escapeHTML,=0A= unescapeHTML: unescapeHTML,=0A= toQueryParams: toQueryParams,=0A= parseQuery: toQueryParams,=0A= toArray: toArray,=0A= succ: succ,=0A= times: times,=0A= camelize: camelize,=0A= capitalize: capitalize,=0A= underscore: underscore,=0A= dasherize: dasherize,=0A= inspect: inspect,=0A= toJSON: toJSON,=0A= unfilterJSON: unfilterJSON,=0A= isJSON: isJSON,=0A= evalJSON: evalJSON,=0A= include: include,=0A= startsWith: startsWith,=0A= endsWith: endsWith,=0A= empty: empty,=0A= blank: blank,=0A= interpolate: interpolate=0A= };=0A= })());=0A= =0A= var Template =3D Class.create({=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= if (object && Object.isFunction(object.toTemplateReplacements))=0A= object =3D object.toTemplateReplacements();=0A= =0A= return this.template.gsub(this.pattern, function(match) {=0A= if (object =3D=3D null) return (match[1] + '');=0A= =0A= var before =3D match[1] || '';=0A= if (before =3D=3D '\\') return match[2];=0A= =0A= var ctx =3D object, expr =3D match[3];=0A= var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A= match =3D pattern.exec(expr);=0A= if (match =3D=3D null) return before;=0A= =0A= while (match !=3D null) {=0A= var comp =3D match[1].startsWith('[') ? = match[2].replace(/\\\\]/g, ']') : match[1];=0A= ctx =3D ctx[comp];=0A= if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A= expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length);=0A= match =3D pattern.exec(expr);=0A= }=0A= =0A= return before + String.interpret(ctx);=0A= });=0A= }=0A= });=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= =0A= var $break =3D { };=0A= =0A= var Enumerable =3D (function() {=0A= function each(iterator, context) {=0A= var index =3D 0;=0A= try {=0A= this._each(function(value) {=0A= iterator.call(context, value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= }=0A= =0A= function eachSlice(number, iterator, context) {=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= if (number < 1) return array;=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= }=0A= =0A= function all(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator.call(context, value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= }=0A= =0A= function any(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator.call(context, value, index))=0A= throw $break;=0A= });=0A= return result;=0A= }=0A= =0A= function collect(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator.call(context, value, index));=0A= });=0A= return results;=0A= }=0A= =0A= function detect(iterator, context) {=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator.call(context, value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= }=0A= =0A= function findAll(iterator, context) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator.call(context, value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= }=0A= =0A= function grep(filter, iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var results =3D [];=0A= =0A= if (Object.isString(filter))=0A= filter =3D new RegExp(RegExp.escape(filter));=0A= =0A= this.each(function(value, index) {=0A= if (filter.match(value))=0A= results.push(iterator.call(context, value, index));=0A= });=0A= return results;=0A= }=0A= =0A= function include(object) {=0A= if (Object.isFunction(this.indexOf))=0A= if (this.indexOf(object) !=3D -1) return true;=0A= =0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= }=0A= =0A= function inGroupsOf(number, fillWith) {=0A= fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A= return this.eachSlice(number, function(slice) {=0A= while(slice.length < number) slice.push(fillWith);=0A= return slice;=0A= });=0A= }=0A= =0A= function inject(memo, iterator, context) {=0A= this.each(function(value, index) {=0A= memo =3D iterator.call(context, memo, value, index);=0A= });=0A= return memo;=0A= }=0A= =0A= function invoke(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.map(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= }=0A= =0A= function max(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator.call(context, value, index);=0A= if (result =3D=3D null || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= }=0A= =0A= function min(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator.call(context, value, index);=0A= if (result =3D=3D null || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= }=0A= =0A= function partition(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator.call(context, value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= }=0A= =0A= function pluck(property) {=0A= var results =3D [];=0A= this.each(function(value) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= }=0A= =0A= function reject(iterator, context) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator.call(context, value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= }=0A= =0A= function sortBy(iterator, context) {=0A= return this.map(function(value, index) {=0A= return {=0A= value: value,=0A= criteria: iterator.call(context, value, index)=0A= };=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= }=0A= =0A= function toArray() {=0A= return this.map();=0A= }=0A= =0A= function zip() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (Object.isFunction(args.last()))=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= }=0A= =0A= function size() {=0A= return this.toArray().length;=0A= }=0A= =0A= function inspect() {=0A= return '#';=0A= }=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= return {=0A= each: each,=0A= eachSlice: eachSlice,=0A= all: all,=0A= every: all,=0A= any: any,=0A= some: any,=0A= collect: collect,=0A= map: collect,=0A= detect: detect,=0A= findAll: findAll,=0A= select: findAll,=0A= filter: findAll,=0A= grep: grep,=0A= include: include,=0A= member: include,=0A= inGroupsOf: inGroupsOf,=0A= inject: inject,=0A= invoke: invoke,=0A= max: max,=0A= min: min,=0A= partition: partition,=0A= pluck: pluck,=0A= reject: reject,=0A= sortBy: sortBy,=0A= toArray: toArray,=0A= entries: toArray,=0A= zip: zip,=0A= size: size,=0A= inspect: inspect,=0A= find: detect=0A= };=0A= })();=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if ('toArray' in Object(iterable)) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= function $w(string) {=0A= if (!Object.isString(string)) return [];=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= Array.from =3D $A;=0A= =0A= =0A= (function() {=0A= var arrayProto =3D Array.prototype,=0A= slice =3D arrayProto.slice,=0A= _each =3D arrayProto.forEach; // use native browser JS 1.6 = implementation if available=0A= =0A= function each(iterator) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= iterator(this[i]);=0A= }=0A= if (!_each) _each =3D each;=0A= =0A= function clear() {=0A= this.length =3D 0;=0A= return this;=0A= }=0A= =0A= function first() {=0A= return this[0];=0A= }=0A= =0A= function last() {=0A= return this[this.length - 1];=0A= }=0A= =0A= function compact() {=0A= return this.select(function(value) {=0A= return value !=3D null;=0A= });=0A= }=0A= =0A= function flatten() {=0A= return this.inject([], function(array, value) {=0A= if (Object.isArray(value))=0A= return array.concat(value.flatten());=0A= array.push(value);=0A= return array;=0A= });=0A= }=0A= =0A= function without() {=0A= var values =3D slice.call(arguments, 0);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= }=0A= =0A= function reverse(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= }=0A= =0A= function uniq(sorted) {=0A= return this.inject([], function(array, value, index) {=0A= if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value)))=0A= array.push(value);=0A= return array;=0A= });=0A= }=0A= =0A= function intersect(array) {=0A= return this.uniq().findAll(function(item) {=0A= return array.detect(function(value) { return item =3D=3D=3D value = });=0A= });=0A= }=0A= =0A= =0A= function clone() {=0A= return slice.call(this, 0);=0A= }=0A= =0A= function size() {=0A= return this.length;=0A= }=0A= =0A= function inspect() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= }=0A= =0A= function toJSON() {=0A= var results =3D [];=0A= this.each(function(object) {=0A= var value =3D Object.toJSON(object);=0A= if (!Object.isUndefined(value)) results.push(value);=0A= });=0A= return '[' + results.join(', ') + ']';=0A= }=0A= =0A= function indexOf(item, i) {=0A= i || (i =3D 0);=0A= var length =3D this.length;=0A= if (i < 0) i =3D length + i;=0A= for (; i < length; i++)=0A= if (this[i] =3D=3D=3D item) return i;=0A= return -1;=0A= }=0A= =0A= function lastIndexOf(item, i) {=0A= i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A= var n =3D this.slice(0, i).reverse().indexOf(item);=0A= return (n < 0) ? n : i - n - 1;=0A= }=0A= =0A= function concat() {=0A= var array =3D slice.call(this, 0), item;=0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= item =3D arguments[i];=0A= if (Object.isArray(item) && !('callee' in item)) {=0A= for (var j =3D 0, arrayLength =3D item.length; j < arrayLength; = j++)=0A= array.push(item[j]);=0A= } else {=0A= array.push(item);=0A= }=0A= }=0A= return array;=0A= }=0A= =0A= Object.extend(arrayProto, Enumerable);=0A= =0A= if (!arrayProto._reverse)=0A= arrayProto._reverse =3D arrayProto.reverse;=0A= =0A= Object.extend(arrayProto, {=0A= _each: _each,=0A= clear: clear,=0A= first: first,=0A= last: last,=0A= compact: compact,=0A= flatten: flatten,=0A= without: without,=0A= reverse: reverse,=0A= uniq: uniq,=0A= intersect: intersect,=0A= clone: clone,=0A= toArray: clone,=0A= size: size,=0A= inspect: inspect,=0A= toJSON: toJSON=0A= });=0A= =0A= var CONCAT_ARGUMENTS_BUGGY =3D (function() {=0A= return [].concat(arguments)[0][0] !=3D=3D 1;=0A= })(1,2)=0A= =0A= if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat =3D concat;=0A= =0A= if (!arrayProto.indexOf) arrayProto.indexOf =3D indexOf;=0A= if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf =3D lastIndexOf;=0A= })();=0A= function $H(object) {=0A= return new Hash(object);=0A= };=0A= =0A= var Hash =3D Class.create(Enumerable, (function() {=0A= function initialize(object) {=0A= this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object);=0A= }=0A= =0A= function _each(iterator) {=0A= for (var key in this._object) {=0A= var value =3D this._object[key], pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= }=0A= =0A= function set(key, value) {=0A= return this._object[key] =3D value;=0A= }=0A= =0A= function get(key) {=0A= if (this._object[key] !=3D=3D Object.prototype[key])=0A= return this._object[key];=0A= }=0A= =0A= function unset(key) {=0A= var value =3D this._object[key];=0A= delete this._object[key];=0A= return value;=0A= }=0A= =0A= function toObject() {=0A= return Object.clone(this._object);=0A= }=0A= =0A= function keys() {=0A= return this.pluck('key');=0A= }=0A= =0A= function values() {=0A= return this.pluck('value');=0A= }=0A= =0A= function index(value) {=0A= var match =3D this.detect(function(pair) {=0A= return pair.value =3D=3D=3D value;=0A= });=0A= return match && match.key;=0A= }=0A= =0A= function merge(object) {=0A= return this.clone().update(object);=0A= }=0A= =0A= function update(object) {=0A= return new Hash(object).inject(this, function(result, pair) {=0A= result.set(pair.key, pair.value);=0A= return result;=0A= });=0A= }=0A= =0A= function toQueryPair(key, value) {=0A= if (Object.isUndefined(value)) return key;=0A= return key + '=3D' + encodeURIComponent(String.interpret(value));=0A= }=0A= =0A= function toQueryString() {=0A= return this.inject([], function(results, pair) {=0A= var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A= =0A= if (values && typeof values =3D=3D 'object') {=0A= if (Object.isArray(values))=0A= return results.concat(values.map(toQueryPair.curry(key)));=0A= } else results.push(toQueryPair(key, values));=0A= return results;=0A= }).join('&');=0A= }=0A= =0A= function inspect() {=0A= return '#';=0A= }=0A= =0A= function toJSON() {=0A= return Object.toJSON(this.toObject());=0A= }=0A= =0A= function clone() {=0A= return new Hash(this);=0A= }=0A= =0A= return {=0A= initialize: initialize,=0A= _each: _each,=0A= set: set,=0A= get: get,=0A= unset: unset,=0A= toObject: toObject,=0A= toTemplateReplacements: toObject,=0A= keys: keys,=0A= values: values,=0A= index: index,=0A= merge: merge,=0A= update: update,=0A= toQueryString: toQueryString,=0A= inspect: inspect,=0A= toJSON: toJSON,=0A= clone: clone=0A= };=0A= })());=0A= =0A= Hash.from =3D $H;=0A= Object.extend(Number.prototype, (function() {=0A= function toColorPart() {=0A= return this.toPaddedString(2, 16);=0A= }=0A= =0A= function succ() {=0A= return this + 1;=0A= }=0A= =0A= function times(iterator, context) {=0A= $R(0, this, true).each(iterator, context);=0A= return this;=0A= }=0A= =0A= function toPaddedString(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= }=0A= =0A= function toJSON() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= =0A= function abs() {=0A= return Math.abs(this);=0A= }=0A= =0A= function round() {=0A= return Math.round(this);=0A= }=0A= =0A= function ceil() {=0A= return Math.ceil(this);=0A= }=0A= =0A= function floor() {=0A= return Math.floor(this);=0A= }=0A= =0A= return {=0A= toColorPart: toColorPart,=0A= succ: succ,=0A= times: times,=0A= toPaddedString: toPaddedString,=0A= toJSON: toJSON,=0A= abs: abs,=0A= round: round,=0A= ceil: ceil,=0A= floor: floor=0A= };=0A= })());=0A= =0A= function $R(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= }=0A= =0A= var ObjectRange =3D Class.create(Enumerable, (function() {=0A= function initialize(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= }=0A= =0A= function _each(iterator) {=0A= var value =3D this.start;=0A= while (this.include(value)) {=0A= iterator(value);=0A= value =3D value.succ();=0A= }=0A= }=0A= =0A= function include(value) {=0A= if (value < this.start)=0A= return false;=0A= if (this.exclusive)=0A= return value < this.end;=0A= return value <=3D this.end;=0A= }=0A= =0A= return {=0A= initialize: initialize,=0A= _each: _each,=0A= include: include=0A= };=0A= })());=0A= =0A= =0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new XMLHttpRequest()},=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A= ) || false;=0A= },=0A= =0A= activeRequestCount: 0=0A= };=0A= =0A= Ajax.Responders =3D {=0A= responders: [],=0A= =0A= _each: function(iterator) {=0A= this.responders._each(iterator);=0A= },=0A= =0A= register: function(responder) {=0A= if (!this.include(responder))=0A= this.responders.push(responder);=0A= },=0A= =0A= unregister: function(responder) {=0A= this.responders =3D this.responders.without(responder);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (Object.isFunction(responder[callback])) {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) { }=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() { Ajax.activeRequestCount++ },=0A= onComplete: function() { Ajax.activeRequestCount-- }=0A= });=0A= Ajax.Base =3D Class.create({=0A= initialize: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: '',=0A= evalJSON: true,=0A= evalJS: true=0A= };=0A= Object.extend(this.options, options || { });=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= =0A= if (Object.isString(this.options.parameters))=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= else if (Object.isHash(this.options.parameters))=0A= this.options.parameters =3D this.options.parameters.toObject();=0A= }=0A= });=0A= Ajax.Request =3D Class.create(Ajax.Base, {=0A= _complete: false,=0A= =0A= initialize: function($super, url, options) {=0A= $super(options);=0A= this.transport =3D Ajax.getTransport();=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= this.url =3D url;=0A= this.method =3D this.options.method;=0A= var params =3D Object.clone(this.options.parameters);=0A= =0A= if (!['get', 'post'].include(this.method)) {=0A= params['_method'] =3D this.method;=0A= this.method =3D 'post';=0A= }=0A= =0A= this.parameters =3D params;=0A= =0A= if (params =3D Object.toQueryString(params)) {=0A= if (this.method =3D=3D 'get')=0A= this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A= else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= params +=3D '&_=3D';=0A= }=0A= =0A= try {=0A= var response =3D new Ajax.Response(this);=0A= if (this.options.onCreate) this.options.onCreate(response);=0A= Ajax.Responders.dispatch('onCreate', this, response);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null;=0A= this.transport.send(this.body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (Object.isFunction(extras.push))=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= var status =3D this.getStatus();=0A= return !status || (status >=3D 200 && status < 300);=0A= },=0A= =0A= getStatus: function() {=0A= try {=0A= return this.transport.status || 0;=0A= } catch (e) { return 0 }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this);=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + response.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(response, response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= var contentType =3D response.getHeader('Content-type');=0A= if (this.options.evalJS =3D=3D 'force'=0A= || (this.options.evalJS && this.isSameOrigin() && contentType=0A= && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i)))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON);=0A= Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= isSameOrigin: function() {=0A= var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A= return !m || (m[0] =3D=3D = '#{protocol}//#{domain}#{port}'.interpolate({=0A= protocol: location.protocol,=0A= domain: document.domain,=0A= port: location.port ? ':' + location.port : ''=0A= }));=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name) || null;=0A= } catch (e) { return null; }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval((this.transport.responseText || '').unfilterJSON());=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= Ajax.Response =3D Class.create({=0A= initialize: function(request){=0A= this.request =3D request;=0A= var transport =3D this.transport =3D request.transport,=0A= readyState =3D this.readyState =3D transport.readyState;=0A= =0A= if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = {=0A= this.status =3D this.getStatus();=0A= this.statusText =3D this.getStatusText();=0A= this.responseText =3D String.interpret(transport.responseText);=0A= this.headerJSON =3D this._getHeaderJSON();=0A= }=0A= =0A= if(readyState =3D=3D 4) {=0A= var xml =3D transport.responseXML;=0A= this.responseXML =3D Object.isUndefined(xml) ? null : xml;=0A= this.responseJSON =3D this._getResponseJSON();=0A= }=0A= },=0A= =0A= status: 0,=0A= =0A= statusText: '',=0A= =0A= getStatus: Ajax.Request.prototype.getStatus,=0A= =0A= getStatusText: function() {=0A= try {=0A= return this.transport.statusText || '';=0A= } catch (e) { return '' }=0A= },=0A= =0A= getHeader: Ajax.Request.prototype.getHeader,=0A= =0A= getAllHeaders: function() {=0A= try {=0A= return this.getAllResponseHeaders();=0A= } catch (e) { return null }=0A= },=0A= =0A= getResponseHeader: function(name) {=0A= return this.transport.getResponseHeader(name);=0A= },=0A= =0A= getAllResponseHeaders: function() {=0A= return this.transport.getAllResponseHeaders();=0A= },=0A= =0A= _getHeaderJSON: function() {=0A= var json =3D this.getHeader('X-JSON');=0A= if (!json) return null;=0A= json =3D decodeURIComponent(escape(json));=0A= try {=0A= return json.evalJSON(this.request.options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= },=0A= =0A= _getResponseJSON: function() {=0A= var options =3D this.request.options;=0A= if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A= !(this.getHeader('Content-type') || = '').include('application/json')) ||=0A= this.responseText.blank())=0A= return null;=0A= try {=0A= return this.responseText.evalJSON(options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create(Ajax.Request, {=0A= initialize: function($super, container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= };=0A= =0A= options =3D Object.clone(options);=0A= var onComplete =3D options.onComplete;=0A= options.onComplete =3D (function(response, json) {=0A= this.updateContent(response.responseText);=0A= if (Object.isFunction(onComplete)) onComplete(response, json);=0A= }).bind(this);=0A= =0A= $super(url, options);=0A= },=0A= =0A= updateContent: function(responseText) {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'],=0A= options =3D this.options;=0A= =0A= if (!options.evalScripts) responseText =3D = responseText.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (options.insertion) {=0A= if (Object.isString(options.insertion)) {=0A= var insertion =3D { }; insertion[options.insertion] =3D = responseText;=0A= receiver.insert(insertion);=0A= }=0A= else options.insertion(receiver, responseText);=0A= }=0A= else receiver.update(responseText);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A= initialize: function($super, container, url, options) {=0A= $super(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D { };=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(response) {=0A= if (this.options.decay) {=0A= this.decay =3D (response.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D response.responseText;=0A= }=0A= this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= =0A= =0A= =0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (Object.isString(element))=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(Element.extend(query.snapshotItem(i)));=0A= return results;=0A= };=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Node) var Node =3D { };=0A= =0A= if (!Node.ELEMENT_NODE) {=0A= Object.extend(Node, {=0A= ELEMENT_NODE: 1,=0A= ATTRIBUTE_NODE: 2,=0A= TEXT_NODE: 3,=0A= CDATA_SECTION_NODE: 4,=0A= ENTITY_REFERENCE_NODE: 5,=0A= ENTITY_NODE: 6,=0A= PROCESSING_INSTRUCTION_NODE: 7,=0A= COMMENT_NODE: 8,=0A= DOCUMENT_NODE: 9,=0A= DOCUMENT_TYPE_NODE: 10,=0A= DOCUMENT_FRAGMENT_NODE: 11,=0A= NOTATION_NODE: 12=0A= });=0A= }=0A= =0A= =0A= (function(global) {=0A= =0A= var SETATTRIBUTE_IGNORES_NAME =3D (function(){=0A= var elForm =3D document.createElement("form");=0A= var elInput =3D document.createElement("input");=0A= var root =3D document.documentElement;=0A= elInput.setAttribute("name", "test");=0A= elForm.appendChild(elInput);=0A= root.appendChild(elForm);=0A= var isBuggy =3D elForm.elements=0A= ? (typeof elForm.elements.test =3D=3D "undefined")=0A= : null;=0A= root.removeChild(elForm);=0A= elForm =3D elInput =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= var element =3D global.Element;=0A= global.Element =3D function(tagName, attributes) {=0A= attributes =3D attributes || { };=0A= tagName =3D tagName.toLowerCase();=0A= var cache =3D Element.cache;=0A= if (SETATTRIBUTE_IGNORES_NAME && attributes.name) {=0A= tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A= delete attributes.name;=0A= return Element.writeAttribute(document.createElement(tagName), = attributes);=0A= }=0A= if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName));=0A= return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes);=0A= };=0A= Object.extend(global.Element, element || { });=0A= if (element) global.Element.prototype =3D element.prototype;=0A= })(this);=0A= =0A= Element.cache =3D { };=0A= Element.idCounter =3D 1;=0A= =0A= Element.Methods =3D {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function(element) {=0A= element =3D $(element);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= return element;=0A= },=0A= =0A= =0A= hide: function(element) {=0A= element =3D $(element);=0A= element.style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= element =3D $(element);=0A= element.style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: (function(){=0A= =0A= var SELECT_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A= var el =3D document.createElement("select"),=0A= isBuggy =3D true;=0A= el.innerHTML =3D "";=0A= if (el.options && el.options[0]) {=0A= isBuggy =3D el.options[0].nodeName.toUpperCase() !=3D=3D = "OPTION";=0A= }=0A= el =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= var TABLE_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A= try {=0A= var el =3D document.createElement("table");=0A= if (el && el.tBodies) {=0A= el.innerHTML =3D "test";=0A= var isBuggy =3D typeof el.tBodies[0] =3D=3D "undefined";=0A= el =3D null;=0A= return isBuggy;=0A= }=0A= } catch (e) {=0A= return true;=0A= }=0A= })();=0A= =0A= var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING =3D (function () {=0A= var s =3D document.createElement("script"),=0A= isBuggy =3D false;=0A= try {=0A= s.appendChild(document.createTextNode(""));=0A= isBuggy =3D !s.firstChild ||=0A= s.firstChild && s.firstChild.nodeType !=3D=3D 3;=0A= } catch (e) {=0A= isBuggy =3D true;=0A= }=0A= s =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= function update(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement)=0A= content =3D content.toElement();=0A= =0A= if (Object.isElement(content))=0A= return element.update().insert(content);=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= var tagName =3D element.tagName.toUpperCase();=0A= =0A= if (tagName =3D=3D=3D 'SCRIPT' && = SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {=0A= element.text =3D content;=0A= return element;=0A= }=0A= =0A= if (SELECT_ELEMENT_INNERHTML_BUGGY || = TABLE_ELEMENT_INNERHTML_BUGGY) {=0A= if (tagName in Element._insertionTranslations.tags) {=0A= while (element.firstChild) {=0A= element.removeChild(element.firstChild);=0A= }=0A= Element._getContentFromAnonymousElement(tagName, = content.stripScripts())=0A= .each(function(node) {=0A= element.appendChild(node)=0A= });=0A= }=0A= else {=0A= element.innerHTML =3D content.stripScripts();=0A= }=0A= }=0A= else {=0A= element.innerHTML =3D content.stripScripts();=0A= }=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= }=0A= =0A= return update;=0A= })(),=0A= =0A= replace: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= else if (!Object.isElement(content)) {=0A= content =3D Object.toHTML(content);=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNode(element);=0A= content.evalScripts.bind(content).defer();=0A= content =3D range.createContextualFragment(content.stripScripts());=0A= }=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= },=0A= =0A= insert: function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D {bottom:insertions};=0A= =0A= var content, insert, tagName, childNodes;=0A= =0A= for (var position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= insert =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= childNodes =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= =0A= if (position =3D=3D 'top' || position =3D=3D 'after') = childNodes.reverse();=0A= childNodes.each(insert.curry(element));=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= },=0A= =0A= wrap: function(element, wrapper, attributes) {=0A= element =3D $(element);=0A= if (Object.isElement(wrapper))=0A= $(wrapper).writeAttribute(attributes || { });=0A= else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes);=0A= else wrapper =3D new Element('div', wrapper);=0A= if (element.parentNode)=0A= element.parentNode.replaceChild(wrapper, element);=0A= wrapper.appendChild(element);=0A= return wrapper;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return Element.recursivelyCollect(element, 'parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= return Element.select(element, "*");=0A= },=0A= =0A= firstDescendant: function(element) {=0A= element =3D $(element).firstChild;=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= return $(element);=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return Element.recursivelyCollect(element, 'previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return Element.recursivelyCollect(element, 'nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return Element.previousSiblings(element).reverse()=0A= .concat(Element.nextSiblings(element));=0A= },=0A= =0A= match: function(element, selector) {=0A= if (Object.isString(selector))=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return $(element.parentNode);=0A= var ancestors =3D Element.ancestors(element);=0A= return Object.isNumber(expression) ? ancestors[expression] :=0A= Selector.findElement(ancestors, expression, index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = Element.firstDescendant(element);=0A= return Object.isNumber(expression) ? = Element.descendants(element)[expression] :=0A= Element.select(element, expression)[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D Element.previousSiblings(element);=0A= return Object.isNumber(expression) ? previousSiblings[expression] :=0A= Selector.findElement(previousSiblings, expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D Element.nextSiblings(element);=0A= return Object.isNumber(expression) ? nextSiblings[expression] :=0A= Selector.findElement(nextSiblings, expression, index);=0A= },=0A= =0A= =0A= select: function(element) {=0A= var args =3D Array.prototype.slice.call(arguments, 1);=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= adjacent: function(element) {=0A= var args =3D Array.prototype.slice.call(arguments, 1);=0A= return Selector.findChildElements(element.parentNode, = args).without(element);=0A= },=0A= =0A= identify: function(element) {=0A= element =3D $(element);=0A= var id =3D Element.readAttribute(element, 'id');=0A= if (id) return id;=0A= do { id =3D 'anonymous_element_' + Element.idCounter++ } while = ($(id));=0A= Element.writeAttribute(element, 'id', id);=0A= return id;=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= element =3D $(element);=0A= if (Prototype.Browser.IE) {=0A= var t =3D Element._attributeTranslations.read;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= if (name.include(':')) {=0A= return (!element.attributes || !element.attributes[name]) ? null = :=0A= element.attributes[name].value;=0A= }=0A= }=0A= return element.getAttribute(name);=0A= },=0A= =0A= writeAttribute: function(element, name, value) {=0A= element =3D $(element);=0A= var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A= =0A= if (typeof name =3D=3D 'object') attributes =3D name;=0A= else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A= =0A= for (var attr in attributes) {=0A= name =3D t.names[attr] || attr;=0A= value =3D attributes[attr];=0A= if (t.values[attr]) name =3D t.values[attr](element, value);=0A= if (value =3D=3D=3D false || value =3D=3D=3D null)=0A= element.removeAttribute(name);=0A= else if (value =3D=3D=3D true)=0A= element.setAttribute(name, name);=0A= else element.setAttribute(name, value);=0A= }=0A= return element;=0A= },=0A= =0A= getHeight: function(element) {=0A= return Element.getDimensions(element).height;=0A= },=0A= =0A= getWidth: function(element) {=0A= return Element.getDimensions(element).width;=0A= },=0A= =0A= classNames: function(element) {=0A= return new Element.ClassNames(element);=0A= },=0A= =0A= hasClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= var elementClassName =3D element.className;=0A= return (elementClassName.length > 0 && (elementClassName =3D=3D = className ||=0A= new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName)));=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= if (!Element.hasClassName(element, className))=0A= element.className +=3D (element.className ? ' ' : '') + className;=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= element.className =3D element.className.replace(=0A= new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return Element[Element.hasClassName(element, className) ?=0A= 'removeClassName' : 'addClassName'](element, className);=0A= },=0A= =0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.blank();=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (ancestor.contains)=0A= return ancestor.contains(element) && ancestor !=3D=3D element;=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D ancestor) return true;=0A= =0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.cumulativeOffset(element);=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value || value =3D=3D 'auto') {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= }=0A= if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= getOpacity: function(element) {=0A= return $(element).getStyle('opacity');=0A= },=0A= =0A= setStyle: function(element, styles) {=0A= element =3D $(element);=0A= var elementStyle =3D element.style, match;=0A= if (Object.isString(styles)) {=0A= element.style.cssText +=3D ';' + styles;=0A= return styles.include('opacity') ?=0A= element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element;=0A= }=0A= for (var property in styles)=0A= if (property =3D=3D 'opacity') = element.setOpacity(styles[property]);=0A= else=0A= elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ?=0A= (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : = 'styleFloat') :=0A= property] =3D styles[property];=0A= =0A= return element;=0A= },=0A= =0A= setOpacity: function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= var display =3D Element.getStyle(element, 'display');=0A= if (display !=3D 'none' && display !=3D null) // Safari bug=0A= return {width: element.offsetWidth, height: element.offsetHeight};=0A= =0A= var els =3D element.style;=0A= var originalVisibility =3D els.visibility;=0A= var originalPosition =3D els.position;=0A= var originalDisplay =3D els.display;=0A= els.visibility =3D 'hidden';=0A= if (originalPosition !=3D 'fixed') // Switching fixed to absolute = causes issues in Safari=0A= els.position =3D 'absolute';=0A= els.display =3D 'block';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D originalDisplay;=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=0A= },=0A= =0A= makePositioned: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.getStyle(element, 'position');=0A= if (pos =3D=3D 'static' || !pos) {=0A= element._madePositioned =3D true;=0A= element.style.position =3D 'relative';=0A= if (Prototype.Browser.Opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto';=0A= if (element._overflow !=3D=3D 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if (element.tagName.toUpperCase() =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p !=3D=3D 'static') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') return = element;=0A= =0A= var offsets =3D Element.positionedOffset(element);=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.width =3D width + 'px';=0A= element.style.height =3D height + 'px';=0A= return element;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (Element.getStyle(element, 'position') =3D=3D 'relative') return = element;=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= return element;=0A= },=0A= =0A= cumulativeScrollOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= getOffsetParent: function(element) {=0A= if (element.offsetParent) return $(element.offsetParent);=0A= if (element =3D=3D document.body) return $(element);=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return $(element);=0A= =0A= return $(document.body);=0A= },=0A= =0A= viewportOffset: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= if (element.offsetParent =3D=3D document.body &&=0A= Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!Prototype.Browser.Opera || (element.tagName && = (element.tagName.toUpperCase() =3D=3D 'BODY'))) {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= clonePosition: function(element, source) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || { });=0A= =0A= source =3D $(source);=0A= var p =3D Element.viewportOffset(source);=0A= =0A= element =3D $(element);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A= parent =3D Element.getOffsetParent(element);=0A= delta =3D Element.viewportOffset(parent);=0A= }=0A= =0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px';=0A= if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px';=0A= return element;=0A= }=0A= };=0A= =0A= Object.extend(Element.Methods, {=0A= getElementsBySelector: Element.Methods.select,=0A= =0A= childElements: Element.Methods.immediateDescendants=0A= });=0A= =0A= Element._attributeTranslations =3D {=0A= write: {=0A= names: {=0A= className: 'class',=0A= htmlFor: 'for'=0A= },=0A= values: { }=0A= }=0A= };=0A= =0A= if (Prototype.Browser.Opera) {=0A= Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A= function(proceed, element, style) {=0A= switch (style) {=0A= case 'left': case 'top': case 'right': case 'bottom':=0A= if (proceed(element, 'position') =3D=3D=3D 'static') return = null;=0A= case 'height': case 'width':=0A= if (!Element.visible(element)) return null;=0A= =0A= var dim =3D parseInt(proceed(element, style), 10);=0A= =0A= if (dim !=3D=3D element['offset' + style.capitalize()])=0A= return dim + 'px';=0A= =0A= var properties;=0A= if (style =3D=3D=3D 'height') {=0A= properties =3D ['border-top-width', 'padding-top',=0A= 'padding-bottom', 'border-bottom-width'];=0A= }=0A= else {=0A= properties =3D ['border-left-width', 'padding-left',=0A= 'padding-right', 'border-right-width'];=0A= }=0A= return properties.inject(dim, function(memo, property) {=0A= var val =3D proceed(element, property);=0A= return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A= }) + 'px';=0A= default: return proceed(element, style);=0A= }=0A= }=0A= );=0A= =0A= Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A= function(proceed, element, attribute) {=0A= if (attribute =3D=3D=3D 'title') return element.title;=0A= return proceed(element, attribute);=0A= }=0A= );=0A= }=0A= =0A= else if (Prototype.Browser.IE) {=0A= Element.Methods.getOffsetParent =3D = Element.Methods.getOffsetParent.wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= try { element.offsetParent }=0A= catch(e) { return $(document.body) }=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= =0A= $w('positionedOffset viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= try { element.offsetParent }=0A= catch(e) { return Element._returnOffset(0,0) }=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= var offsetParent =3D element.getOffsetParent();=0A= if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D = 'fixed')=0A= offsetParent.setStyle({ zoom: 1 });=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= });=0A= =0A= Element.Methods.cumulativeOffset =3D = Element.Methods.cumulativeOffset.wrap(=0A= function(proceed, element) {=0A= try { element.offsetParent }=0A= catch(e) { return Element._returnOffset(0,0) }=0A= return proceed(element);=0A= }=0A= );=0A= =0A= Element.Methods.getStyle =3D function(element, style) {=0A= element =3D $(element);=0A= style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value && element.currentStyle) value =3D = element.currentStyle[style];=0A= =0A= if (style =3D=3D 'opacity') {=0A= if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/))=0A= if (value[1]) return parseFloat(value[1]) / 100;=0A= return 1.0;=0A= }=0A= =0A= if (value =3D=3D 'auto') {=0A= if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none'))=0A= return element['offset' + style.capitalize()] + 'px';=0A= return null;=0A= }=0A= return value;=0A= };=0A= =0A= Element.Methods.setOpacity =3D function(element, value) {=0A= function stripAlpha(filter){=0A= return filter.replace(/alpha\([^\)]*\)/gi,'');=0A= }=0A= element =3D $(element);=0A= var currentStyle =3D element.currentStyle;=0A= if ((currentStyle && !currentStyle.hasLayout) ||=0A= (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A= element.style.zoom =3D 1;=0A= =0A= var filter =3D element.getStyle('filter'), style =3D element.style;=0A= if (value =3D=3D 1 || value =3D=3D=3D '') {=0A= (filter =3D stripAlpha(filter)) ?=0A= style.filter =3D filter : style.removeAttribute('filter');=0A= return element;=0A= } else if (value < 0.00001) value =3D 0;=0A= style.filter =3D stripAlpha(filter) +=0A= 'alpha(opacity=3D' + (value * 100) + ')';=0A= return element;=0A= };=0A= =0A= Element._attributeTranslations =3D (function(){=0A= =0A= var classProp =3D 'className';=0A= var forProp =3D 'for';=0A= =0A= var el =3D document.createElement('div');=0A= =0A= el.setAttribute(classProp, 'x');=0A= =0A= if (el.className !=3D=3D 'x') {=0A= el.setAttribute('class', 'x');=0A= if (el.className =3D=3D=3D 'x') {=0A= classProp =3D 'class';=0A= }=0A= }=0A= el =3D null;=0A= =0A= el =3D document.createElement('label');=0A= el.setAttribute(forProp, 'x');=0A= if (el.htmlFor !=3D=3D 'x') {=0A= el.setAttribute('htmlFor', 'x');=0A= if (el.htmlFor =3D=3D=3D 'x') {=0A= forProp =3D 'htmlFor';=0A= }=0A= }=0A= el =3D null;=0A= =0A= return {=0A= read: {=0A= names: {=0A= 'class': classProp,=0A= 'className': classProp,=0A= 'for': forProp,=0A= 'htmlFor': forProp=0A= },=0A= values: {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute);=0A= },=0A= _getAttr2: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= _getAttrNode: function(element, attribute) {=0A= var node =3D element.getAttributeNode(attribute);=0A= return node ? node.value : "";=0A= },=0A= _getEv: (function(){=0A= =0A= var el =3D document.createElement('div');=0A= el.onclick =3D Prototype.emptyFunction;=0A= var value =3D el.getAttribute('onclick');=0A= var f;=0A= =0A= if (String(value).indexOf('{') > -1) {=0A= f =3D function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= if (!attribute) return null;=0A= attribute =3D attribute.toString();=0A= attribute =3D attribute.split('{')[1];=0A= attribute =3D attribute.split('}')[0];=0A= return attribute.strip();=0A= };=0A= }=0A= else if (value =3D=3D=3D '') {=0A= f =3D function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= if (!attribute) return null;=0A= return attribute.strip();=0A= };=0A= }=0A= el =3D null;=0A= return f;=0A= })(),=0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= title: function(element) {=0A= return element.title;=0A= }=0A= }=0A= }=0A= }=0A= })();=0A= =0A= Element._attributeTranslations.write =3D {=0A= names: Object.extend({=0A= cellpadding: 'cellPadding',=0A= cellspacing: 'cellSpacing'=0A= }, Element._attributeTranslations.read.names),=0A= values: {=0A= checked: function(element, value) {=0A= element.checked =3D !!value;=0A= },=0A= =0A= style: function(element, value) {=0A= element.style.cssText =3D value ? value : '';=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.has =3D {};=0A= =0A= $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A= 'encType maxLength readOnly longDesc = frameBorder').each(function(attr) {=0A= Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr;=0A= Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A= });=0A= =0A= (function(v) {=0A= Object.extend(v, {=0A= href: v._getAttr2,=0A= src: v._getAttr2,=0A= type: v._getAttr,=0A= action: v._getAttrNode,=0A= disabled: v._flag,=0A= checked: v._flag,=0A= readonly: v._flag,=0A= multiple: v._flag,=0A= onload: v._getEv,=0A= onunload: v._getEv,=0A= onclick: v._getEv,=0A= ondblclick: v._getEv,=0A= onmousedown: v._getEv,=0A= onmouseup: v._getEv,=0A= onmouseover: v._getEv,=0A= onmousemove: v._getEv,=0A= onmouseout: v._getEv,=0A= onfocus: v._getEv,=0A= onblur: v._getEv,=0A= onkeypress: v._getEv,=0A= onkeydown: v._getEv,=0A= onkeyup: v._getEv,=0A= onsubmit: v._getEv,=0A= onreset: v._getEv,=0A= onselect: v._getEv,=0A= onchange: v._getEv=0A= });=0A= })(Element._attributeTranslations.read.values);=0A= =0A= if (Prototype.BrowserFeatures.ElementExtensions) {=0A= (function() {=0A= function _descendants(element) {=0A= var nodes =3D element.getElementsByTagName('*'), results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName !=3D=3D "!") // Filter out comment nodes.=0A= results.push(node);=0A= return results;=0A= }=0A= =0A= Element.Methods.down =3D function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= return Object.isNumber(expression) ? = _descendants(element)[expression] :=0A= Element.select(element, expression)[index || 0];=0A= }=0A= })();=0A= }=0A= =0A= }=0A= =0A= else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A= (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A= return element;=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.WebKit) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= =0A= if (value =3D=3D 1)=0A= if(element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) {=0A= element.width++; element.width--;=0A= } else try {=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch (e) { }=0A= =0A= return element;=0A= };=0A= =0A= Element.Methods.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= };=0A= }=0A= =0A= if ('outerHTML' in document.documentElement) {=0A= Element.Methods.replace =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase();=0A= =0A= if (Element._insertionTranslations.tags[tagName]) {=0A= var nextSibling =3D element.next();=0A= var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= parent.removeChild(element);=0A= if (nextSibling)=0A= fragments.each(function(node) { parent.insertBefore(node, = nextSibling) });=0A= else=0A= fragments.each(function(node) { parent.appendChild(node) });=0A= }=0A= else element.outerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= Element._returnOffset =3D function(l, t) {=0A= var result =3D [l, t];=0A= result.left =3D l;=0A= result.top =3D t;=0A= return result;=0A= };=0A= =0A= Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A= var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName];=0A= if (t) {=0A= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= } else div.innerHTML =3D html;=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= top: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= bottom: function(element, node) {=0A= element.appendChild(node);=0A= },=0A= after: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= tags: {=0A= TABLE: ['', '
', 1],=0A= TBODY: ['', '
', 2],=0A= TR: ['', '
', 3],=0A= TD: ['
', '
', 4],=0A= SELECT: ['', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= var tags =3D Element._insertionTranslations.tags;=0A= Object.extend(tags, {=0A= THEAD: tags.TBODY,=0A= TFOOT: tags.TBODY,=0A= TH: tags.TD=0A= });=0A= })();=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= attribute =3D Element._attributeTranslations.has[attribute] || = attribute;=0A= var node =3D $(element).getAttributeNode(attribute);=0A= return !!(node && node.specified);=0A= }=0A= };=0A= =0A= Element.Methods.ByTag =3D { };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= (function(div) {=0A= =0A= if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {=0A= window.HTMLElement =3D { };=0A= window.HTMLElement.prototype =3D div['__proto__'];=0A= Prototype.BrowserFeatures.ElementExtensions =3D true;=0A= }=0A= =0A= div =3D null;=0A= =0A= })(document.createElement('div'))=0A= =0A= Element.extend =3D (function() {=0A= =0A= function checkDeficiency(tagName) {=0A= if (typeof window.Element !=3D 'undefined') {=0A= var proto =3D window.Element.prototype;=0A= if (proto) {=0A= var id =3D '_' + (Math.random()+'').slice(2);=0A= var el =3D document.createElement(tagName);=0A= proto[id] =3D 'x';=0A= var isBuggy =3D (el[id] !=3D=3D 'x');=0A= delete proto[id];=0A= el =3D null;=0A= return isBuggy;=0A= }=0A= }=0A= return false;=0A= }=0A= =0A= function extendElementWith(element, methods) {=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (Object.isFunction(value) && !(property in element))=0A= element[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('object');=0A= =0A= if (Prototype.BrowserFeatures.SpecificElementExtensions) {=0A= if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {=0A= return function(element) {=0A= if (element && typeof element._extendedByPrototype =3D=3D = 'undefined') {=0A= var t =3D element.tagName;=0A= if (t && (/^(?:object|applet|embed)$/i.test(t))) {=0A= extendElementWith(element, Element.Methods);=0A= extendElementWith(element, Element.Methods.Simulated);=0A= extendElementWith(element, = Element.Methods.ByTag[t.toUpperCase()]);=0A= }=0A= }=0A= return element;=0A= }=0A= }=0A= return Prototype.K;=0A= }=0A= =0A= var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A= =0A= var extend =3D Object.extend(function(element) {=0A= if (!element || typeof element._extendedByPrototype !=3D 'undefined' = ||=0A= element.nodeType !=3D 1 || element =3D=3D window) return element;=0A= =0A= var methods =3D Object.clone(Methods),=0A= tagName =3D element.tagName.toUpperCase();=0A= =0A= if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A= =0A= extendElementWith(element, methods);=0A= =0A= element._extendedByPrototype =3D Prototype.emptyFunction;=0A= return element;=0A= =0A= }, {=0A= refresh: function() {=0A= if (!Prototype.BrowserFeatures.ElementExtensions) {=0A= Object.extend(Methods, Element.Methods);=0A= Object.extend(Methods, Element.Methods.Simulated);=0A= }=0A= }=0A= });=0A= =0A= extend.refresh();=0A= return extend;=0A= })();=0A= =0A= Element.hasAttribute =3D function(element, attribute) {=0A= if (element.hasAttribute) return element.hasAttribute(attribute);=0A= return Element.Methods.Simulated.hasAttribute(element, attribute);=0A= };=0A= =0A= Element.addMethods =3D function(methods) {=0A= var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A= =0A= if (!methods) {=0A= Object.extend(Form, Form.Methods);=0A= Object.extend(Form.Element, Form.Element.Methods);=0A= Object.extend(Element.Methods.ByTag, {=0A= "FORM": Object.clone(Form.Methods),=0A= "INPUT": Object.clone(Form.Element.Methods),=0A= "SELECT": Object.clone(Form.Element.Methods),=0A= "TEXTAREA": Object.clone(Form.Element.Methods)=0A= });=0A= }=0A= =0A= if (arguments.length =3D=3D 2) {=0A= var tagName =3D methods;=0A= methods =3D arguments[1];=0A= }=0A= =0A= if (!tagName) Object.extend(Element.Methods, methods || { });=0A= else {=0A= if (Object.isArray(tagName)) tagName.each(extend);=0A= else extend(tagName);=0A= }=0A= =0A= function extend(tagName) {=0A= tagName =3D tagName.toUpperCase();=0A= if (!Element.Methods.ByTag[tagName])=0A= Element.Methods.ByTag[tagName] =3D { };=0A= Object.extend(Element.Methods.ByTag[tagName], methods);=0A= }=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!Object.isFunction(value)) continue;=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= function findDOMClass(tagName) {=0A= var klass;=0A= var trans =3D {=0A= "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A= "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList",=0A= "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading",=0A= "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A= "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION":=0A= "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A= "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR":=0A= "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A= "FrameSet", "IFRAME": "IFrame"=0A= };=0A= if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A= if (window[klass]) return window[klass];=0A= =0A= var element =3D document.createElement(tagName);=0A= var proto =3D element['__proto__'] || element.constructor.prototype;=0A= element =3D null;=0A= return proto;=0A= }=0A= =0A= var elementPrototype =3D window.HTMLElement ? HTMLElement.prototype :=0A= Element.prototype;=0A= =0A= if (F.ElementExtensions) {=0A= copy(Element.Methods, elementPrototype);=0A= copy(Element.Methods.Simulated, elementPrototype, true);=0A= }=0A= =0A= if (F.SpecificElementExtensions) {=0A= for (var tag in Element.Methods.ByTag) {=0A= var klass =3D findDOMClass(tag);=0A= if (Object.isUndefined(klass)) continue;=0A= copy(T[tag], klass.prototype);=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= delete Element.ByTag;=0A= =0A= if (Element.extend.refresh) Element.extend.refresh();=0A= Element.cache =3D { };=0A= };=0A= =0A= =0A= document.viewport =3D {=0A= =0A= getDimensions: function() {=0A= return { width: this.getWidth(), height: this.getHeight() };=0A= },=0A= =0A= getScrollOffsets: function() {=0A= return Element._returnOffset(=0A= window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft,=0A= window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop);=0A= }=0A= };=0A= =0A= (function(viewport) {=0A= var B =3D Prototype.Browser, doc =3D document, element, property =3D = {};=0A= =0A= function getRootElement() {=0A= if (B.WebKit && !doc.evaluate)=0A= return document;=0A= =0A= if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)=0A= return document.body;=0A= =0A= return document.documentElement;=0A= }=0A= =0A= function define(D) {=0A= if (!element) element =3D getRootElement();=0A= =0A= property[D] =3D 'client' + D;=0A= =0A= viewport['get' + D] =3D function() { return element[property[D]] };=0A= return viewport['get' + D]();=0A= }=0A= =0A= viewport.getWidth =3D define.curry('Width');=0A= =0A= viewport.getHeight =3D define.curry('Height');=0A= })(document.viewport);=0A= =0A= =0A= Element.Storage =3D {=0A= UID: 1=0A= };=0A= =0A= Element.addMethods({=0A= getStorage: function(element) {=0A= if (!(element =3D $(element))) return;=0A= =0A= var uid;=0A= if (element =3D=3D=3D window) {=0A= uid =3D 0;=0A= } else {=0A= if (typeof element._prototypeUID =3D=3D=3D "undefined")=0A= element._prototypeUID =3D [Element.Storage.UID++];=0A= uid =3D element._prototypeUID[0];=0A= }=0A= =0A= if (!Element.Storage[uid])=0A= Element.Storage[uid] =3D $H();=0A= =0A= return Element.Storage[uid];=0A= },=0A= =0A= store: function(element, key, value) {=0A= if (!(element =3D $(element))) return;=0A= =0A= if (arguments.length =3D=3D=3D 2) {=0A= Element.getStorage(element).update(key);=0A= } else {=0A= Element.getStorage(element).set(key, value);=0A= }=0A= =0A= return element;=0A= },=0A= =0A= retrieve: function(element, key, defaultValue) {=0A= if (!(element =3D $(element))) return;=0A= var hash =3D Element.getStorage(element), value =3D hash.get(key);=0A= =0A= if (Object.isUndefined(value)) {=0A= hash.set(key, defaultValue);=0A= value =3D defaultValue;=0A= }=0A= =0A= return value;=0A= },=0A= =0A= clone: function(element, deep) {=0A= if (!(element =3D $(element))) return;=0A= var clone =3D element.cloneNode(deep);=0A= clone._prototypeUID =3D void 0;=0A= if (deep) {=0A= var descendants =3D Element.select(clone, '*'),=0A= i =3D descendants.length;=0A= while (i--) {=0A= descendants[i]._prototypeUID =3D void 0;=0A= }=0A= }=0A= return Element.extend(clone);=0A= }=0A= });=0A= /* Portions of the Selector class are derived from Jack Slocum's = DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= =0A= if (this.shouldUseSelectorsAPI()) {=0A= this.mode =3D 'selectorsAPI';=0A= } else if (this.shouldUseXPath()) {=0A= this.mode =3D 'xpath';=0A= this.compileXPathMatcher();=0A= } else {=0A= this.mode =3D "normal";=0A= this.compileMatcher();=0A= }=0A= =0A= },=0A= =0A= shouldUseXPath: (function() {=0A= =0A= var IS_DESCENDANT_SELECTOR_BUGGY =3D (function(){=0A= var isBuggy =3D false;=0A= if (document.evaluate && window.XPathResult) {=0A= var el =3D document.createElement('div');=0A= el.innerHTML =3D = '
';=0A= =0A= var xpath =3D ".//*[local-name()=3D'ul' or local-name()=3D'UL']" = +=0A= "//*[local-name()=3D'li' or local-name()=3D'LI']";=0A= =0A= var result =3D document.evaluate(xpath, el, null,=0A= XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= =0A= isBuggy =3D (result.snapshotLength !=3D=3D 2);=0A= el =3D null;=0A= }=0A= return isBuggy;=0A= })();=0A= =0A= return function() {=0A= if (!Prototype.BrowserFeatures.XPath) return false;=0A= =0A= var e =3D this.expression;=0A= =0A= if (Prototype.Browser.WebKit &&=0A= (e.include("-of-type") || e.include(":empty")))=0A= return false;=0A= =0A= if ((/(\[[\w-]*?:|:checked)/).test(e))=0A= return false;=0A= =0A= if (IS_DESCENDANT_SELECTOR_BUGGY) return false;=0A= =0A= return true;=0A= }=0A= =0A= })(),=0A= =0A= shouldUseSelectorsAPI: function() {=0A= if (!Prototype.BrowserFeatures.SelectorsAPI) return false;=0A= =0A= if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false;=0A= =0A= if (!Selector._div) Selector._div =3D new Element('div');=0A= =0A= try {=0A= Selector._div.querySelector(this.expression);=0A= } catch(e) {=0A= return false;=0A= }=0A= =0A= return true;=0A= },=0A= =0A= compileMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m, len =3D ps.length, name;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=0A= return;=0A= }=0A= =0A= this.matcher =3D ["this.matcher =3D function(root) {",=0A= "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"];=0A= =0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i =3D 0; i";=0A= }=0A= });=0A= =0A= if (Prototype.BrowserFeatures.SelectorsAPI &&=0A= document.compatMode =3D=3D=3D 'BackCompat') {=0A= Selector.CASE_INSENSITIVE_CLASS_NAMES =3D (function(){=0A= var div =3D document.createElement('div'),=0A= span =3D document.createElement('span');=0A= =0A= div.id =3D "prototype_test_id";=0A= span.className =3D 'Test';=0A= div.appendChild(span);=0A= var isIgnored =3D (div.querySelector('#prototype_test_id .test') = !=3D=3D null);=0A= div =3D span =3D null;=0A= return isIgnored;=0A= })();=0A= }=0A= =0A= Object.extend(Selector, {=0A= _cache: { },=0A= =0A= xpath: {=0A= descendant: "//*",=0A= child: "/*",=0A= adjacent: "/following-sibling::*[1]",=0A= laterSibling: '/following-sibling::*',=0A= tagName: function(m) {=0A= if (m[1] =3D=3D '*') return '';=0A= return "[local-name()=3D'" + m[1].toLowerCase() +=0A= "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A= },=0A= className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A= id: "[@id=3D'#{1}']",=0A= attrPresence: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= return new Template("[@#{1}]").evaluate(m);=0A= },=0A= attr: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= m[3] =3D m[5] || m[6];=0A= return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= var h =3D Selector.xpath.pseudos[m[1]];=0A= if (!h) return '';=0A= if (Object.isFunction(h)) return h(m);=0A= return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A= },=0A= operators: {=0A= '=3D': "[@#{1}=3D'#{3}']",=0A= '!=3D': "[@#{1}!=3D'#{3}']",=0A= '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A= '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']",=0A= '*=3D': "[contains(@#{1}, '#{3}')]",=0A= '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A= '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A= },=0A= pseudos: {=0A= 'first-child': '[not(preceding-sibling::*)]',=0A= 'last-child': '[not(following-sibling::*)]',=0A= 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]',=0A= 'empty': "[count(*) =3D 0 and (count(text()) =3D 0)]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[(@disabled) and (@type!=3D'hidden')]",=0A= 'enabled': "[not(@disabled) and (@type!=3D'hidden')]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, v, len =3D p.length, name;=0A= =0A= var exclusion =3D [];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i =3D 0; i=3D 0)]";=0A= return new Template(predicate).evaluate({=0A= fragment: fragment, a: a, b: b });=0A= }=0A= }=0A= }=0A= },=0A= =0A= criteria: {=0A= tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;',=0A= className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A= id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;',=0A= attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", = c); c =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: [=0A= { name: 'laterSibling', re: /^\s*~\s*/ },=0A= { name: 'child', re: /^\s*>\s*/ },=0A= { name: 'adjacent', re: /^\s*\+\s*/ },=0A= { name: 'descendant', re: /^\s/ },=0A= =0A= { name: 'tagName', re: /^\s*(\*|[\w\-]+)(\b|$)?/ },=0A= { name: 'id', re: /^#([\w\-\*]+)(\b|$)/ },=0A= { name: 'className', re: /^\.([\w\-\*]+)(\b|$)/ },=0A= { name: 'pseudo', re: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/ },=0A= { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ },=0A= { name: 'attr', re: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/ }=0A= ],=0A= =0A= assertions: {=0A= tagName: function(element, matches) {=0A= return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase();=0A= },=0A= =0A= className: function(element, matches) {=0A= return Element.hasClassName(element, matches[1]);=0A= },=0A= =0A= id: function(element, matches) {=0A= return element.id =3D=3D=3D matches[1];=0A= },=0A= =0A= attrPresence: function(element, matches) {=0A= return Element.hasAttribute(element, matches[1]);=0A= },=0A= =0A= attr: function(element, matches) {=0A= var nodeValue =3D Element.readAttribute(element, matches[1]);=0A= return nodeValue && Selector.operators[matches[2]](nodeValue, = matches[5] || matches[6]);=0A= }=0A= },=0A= =0A= handlers: {=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= a.push(node);=0A= return a;=0A= },=0A= =0A= mark: function(nodes) {=0A= var _true =3D Prototype.emptyFunction;=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D _true;=0A= return nodes;=0A= },=0A= =0A= unmark: (function(){=0A= =0A= var PROPERTIES_ATTRIBUTES_MAP =3D (function(){=0A= var el =3D document.createElement('div'),=0A= isBuggy =3D false,=0A= propName =3D '_countedByPrototype',=0A= value =3D 'x'=0A= el[propName] =3D value;=0A= isBuggy =3D (el.getAttribute(propName) =3D=3D=3D value);=0A= el =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= return PROPERTIES_ATTRIBUTES_MAP ?=0A= function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node.removeAttribute('_countedByPrototype');=0A= return nodes;=0A= } :=0A= function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D void 0;=0A= return nodes;=0A= }=0A= })(),=0A= =0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (typeof (n =3D nodes[i])._countedByPrototype =3D=3D = 'undefined') {=0A= n._countedByPrototype =3D Prototype.emptyFunction;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= tagName: function(nodes, root, tagName, combinator) {=0A= var uTagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D=3D uTagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= =0A= if (root =3D=3D document) {=0A= if (!targetNode) return [];=0A= if (!nodes) return [targetNode];=0A= } else {=0A= if (!root.sourceIndex || root.sourceIndex < 1) {=0A= var nodes =3D root.getElementsByTagName('*');=0A= for (var j =3D 0, node; node =3D nodes[j]; j++) {=0A= if (node.id =3D=3D=3D id) return [node];=0A= }=0A= }=0A= }=0A= =0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D 'child') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (targetNode.parentNode =3D=3D node) return [targetNode];=0A= } else if (combinator =3D=3D 'descendant') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.descendantOf(targetNode, node)) return = [targetNode];=0A= } else if (combinator =3D=3D 'adjacent') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node)=0A= return [targetNode];=0A= } else nodes =3D h[combinator](nodes);=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node =3D=3D targetNode) return [targetNode];=0A= return [];=0A= }=0A= return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : [];=0A= },=0A= =0A= className: function(nodes, root, className, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= return Selector.handlers.byClassName(nodes, root, className);=0A= },=0A= =0A= byClassName: function(nodes, root, className) {=0A= if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A= var needle =3D ' ' + className + ' ';=0A= for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) {=0A= nodeClassName =3D node.className;=0A= if (nodeClassName.length =3D=3D 0) continue;=0A= if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle))=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= attrPresence: function(nodes, root, attr, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._countedByPrototype) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (node.tagName =3D=3D '!' || node.firstChild) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._countedByPrototype) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled && (!node.type || node.type !=3D=3D 'hidden'))=0A= results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); = },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() +=0A= '-').include('-' + (v || "").toUpperCase() + '-'); }=0A= },=0A= =0A= split: function(expression) {=0A= var expressions =3D [];=0A= expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, = function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= return expressions;=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D $$(expression), h =3D Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._countedByPrototype) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (Object.isNumber(expression)) {=0A= index =3D expression; expression =3D false;=0A= }=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= expressions =3D Selector.split(expressions.join(','));=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(Selector.handlers, {=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= if (node.tagName !=3D=3D "!") a.push(node);=0A= return a;=0A= }=0A= });=0A= }=0A= =0A= function $$() {=0A= return Selector.findChildElements(document, $A(arguments));=0A= }=0A= =0A= var Form =3D {=0A= reset: function(form) {=0A= form =3D $(form);=0A= form.reset();=0A= return form;=0A= },=0A= =0A= serializeElements: function(elements, options) {=0A= if (typeof options !=3D 'object') options =3D { hash: !!options };=0A= else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A= var key, value, submitted =3D false, submit =3D options.submit;=0A= =0A= var data =3D elements.inject({ }, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= key =3D element.name; value =3D $(element).getValue();=0A= if (value !=3D null && element.type !=3D 'file' && (element.type = !=3D 'submit' || (!submitted &&=0A= submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) {=0A= if (key in result) {=0A= if (!Object.isArray(result[key])) result[key] =3D = [result[key]];=0A= result[key].push(value);=0A= }=0A= else result[key] =3D value;=0A= }=0A= }=0A= return result;=0A= });=0A= =0A= return options.hash ? data : Object.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, options) {=0A= return Form.serializeElements(Form.getElements(form), options);=0A= },=0A= =0A= getElements: function(form) {=0A= var elements =3D $(form).getElementsByTagName('*'),=0A= element,=0A= arr =3D [ ],=0A= serializers =3D Form.Element.Serializers;=0A= for (var i =3D 0; element =3D elements[i]; i++) {=0A= arr.push(element);=0A= }=0A= return arr.inject([], function(elements, child) {=0A= if (serializers[child.tagName.toLowerCase()])=0A= elements.push(Element.extend(child));=0A= return elements;=0A= })=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name) return $A(inputs).map(Element.extend);=0A= =0A= for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('disable');=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('enable');=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= var elements =3D $(form).getElements().findAll(function(element) {=0A= return 'hidden' !=3D element.type && !element.disabled;=0A= });=0A= var firstByIndex =3D elements.findAll(function(element) {=0A= return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A= }).sortBy(function(element) { return element.tabIndex }).first();=0A= =0A= return firstByIndex ? firstByIndex : elements.find(function(element) = {=0A= return /^(?:input|select|textarea)$/i.test(element.tagName);=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= },=0A= =0A= request: function(form, options) {=0A= form =3D $(form), options =3D Object.clone(options || { });=0A= =0A= var params =3D options.parameters, action =3D = form.readAttribute('action') || '';=0A= if (action.blank()) action =3D window.location.href;=0A= options.parameters =3D form.serialize(true);=0A= =0A= if (params) {=0A= if (Object.isString(params)) params =3D params.toQueryParams();=0A= Object.extend(options.parameters, params);=0A= }=0A= =0A= if (form.hasAttribute('method') && !options.method)=0A= options.method =3D form.method;=0A= =0A= return new Ajax.Request(action, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= =0A= Form.Element =3D {=0A= focus: function(element) {=0A= $(element).focus();=0A= return element;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= return element;=0A= }=0A= };=0A= =0A= Form.Element.Methods =3D {=0A= =0A= serialize: function(element) {=0A= element =3D $(element);=0A= if (!element.disabled && element.name) {=0A= var value =3D element.getValue();=0A= if (value !=3D undefined) {=0A= var pair =3D { };=0A= pair[element.name] =3D value;=0A= return Object.toQueryString(pair);=0A= }=0A= }=0A= return '';=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= return Form.Element.Serializers[method](element);=0A= },=0A= =0A= setValue: function(element, value) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= Form.Element.Serializers[method](element, value);=0A= return element;=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= try {=0A= element.focus();=0A= if (element.select && (element.tagName.toLowerCase() !=3D 'input' = ||=0A= !(/^(?:button|reset|submit)$/i.test(element.type))))=0A= element.select();=0A= } catch (e) { }=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= =0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, value) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element, value);=0A= default:=0A= return Form.Element.Serializers.textarea(element, value);=0A= }=0A= },=0A= =0A= inputSelector: function(element, value) {=0A= if (Object.isUndefined(value)) return element.checked ? = element.value : null;=0A= else element.checked =3D !!value;=0A= },=0A= =0A= textarea: function(element, value) {=0A= if (Object.isUndefined(value)) return element.value;=0A= else element.value =3D value;=0A= },=0A= =0A= select: function(element, value) {=0A= if (Object.isUndefined(value))=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, currentValue, single =3D !Object.isArray(value);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= currentValue =3D this.optionValue(opt);=0A= if (single) {=0A= if (currentValue =3D=3D value) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D value.include(currentValue);=0A= }=0A= }=0A= },=0A= =0A= selectOne: function(element) {=0A= var index =3D element.selectedIndex;=0A= return index >=3D 0 ? this.optionValue(element.options[index]) : = null;=0A= },=0A= =0A= selectMany: function(element) {=0A= var values, length =3D element.length;=0A= if (!length) return null;=0A= =0A= for (var i =3D 0, values =3D []; i < length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) values.push(this.optionValue(opt));=0A= }=0A= return values;=0A= },=0A= =0A= optionValue: function(opt) {=0A= return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= =0A= Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A= initialize: function($super, element, frequency, callback) {=0A= $super(callback, frequency);=0A= this.element =3D $(element);=0A= this.lastValue =3D this.getValue();=0A= },=0A= =0A= execute: function() {=0A= var value =3D this.getValue();=0A= if (Object.isString(this.lastValue) && Object.isString(value) ?=0A= this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= });=0A= =0A= Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D Class.create({=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= Form.getElements(this.element).each(this.registerCallback, this);=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= });=0A= =0A= Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= (function() {=0A= =0A= var Event =3D {=0A= KEY_BACKSPACE: 8,=0A= KEY_TAB: 9,=0A= KEY_RETURN: 13,=0A= KEY_ESC: 27,=0A= KEY_LEFT: 37,=0A= KEY_UP: 38,=0A= KEY_RIGHT: 39,=0A= KEY_DOWN: 40,=0A= KEY_DELETE: 46,=0A= KEY_HOME: 36,=0A= KEY_END: 35,=0A= KEY_PAGEUP: 33,=0A= KEY_PAGEDOWN: 34,=0A= KEY_INSERT: 45,=0A= =0A= cache: {}=0A= };=0A= =0A= var docEl =3D document.documentElement;=0A= var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED =3D 'onmouseenter' in docEl=0A= && 'onmouseleave' in docEl;=0A= =0A= var _isButton;=0A= if (Prototype.Browser.IE) {=0A= var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A= _isButton =3D function(event, code) {=0A= return event.button =3D=3D=3D buttonMap[code];=0A= };=0A= } else if (Prototype.Browser.WebKit) {=0A= _isButton =3D function(event, code) {=0A= switch (code) {=0A= case 0: return event.which =3D=3D 1 && !event.metaKey;=0A= case 1: return event.which =3D=3D 1 && event.metaKey;=0A= default: return false;=0A= }=0A= };=0A= } else {=0A= _isButton =3D function(event, code) {=0A= return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code);=0A= };=0A= }=0A= =0A= function isLeftClick(event) { return _isButton(event, 0) }=0A= =0A= function isMiddleClick(event) { return _isButton(event, 1) }=0A= =0A= function isRightClick(event) { return _isButton(event, 2) }=0A= =0A= function element(event) {=0A= event =3D Event.extend(event);=0A= =0A= var node =3D event.target, type =3D event.type,=0A= currentTarget =3D event.currentTarget;=0A= =0A= if (currentTarget && currentTarget.tagName) {=0A= if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' ||=0A= (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() = =3D=3D=3D 'input'=0A= && currentTarget.type =3D=3D=3D 'radio'))=0A= node =3D currentTarget;=0A= }=0A= =0A= if (node.nodeType =3D=3D Node.TEXT_NODE)=0A= node =3D node.parentNode;=0A= =0A= return Element.extend(node);=0A= }=0A= =0A= function findElement(event, expression) {=0A= var element =3D Event.element(event);=0A= if (!expression) return element;=0A= var elements =3D [element].concat(element.ancestors());=0A= return Selector.findElement(elements, expression, 0);=0A= }=0A= =0A= function pointer(event) {=0A= return { x: pointerX(event), y: pointerY(event) };=0A= }=0A= =0A= function pointerX(event) {=0A= var docElement =3D document.documentElement,=0A= body =3D document.body || { scrollLeft: 0 };=0A= =0A= return event.pageX || (event.clientX +=0A= (docElement.scrollLeft || body.scrollLeft) -=0A= (docElement.clientLeft || 0));=0A= }=0A= =0A= function pointerY(event) {=0A= var docElement =3D document.documentElement,=0A= body =3D document.body || { scrollTop: 0 };=0A= =0A= return event.pageY || (event.clientY +=0A= (docElement.scrollTop || body.scrollTop) -=0A= (docElement.clientTop || 0));=0A= }=0A= =0A= =0A= function stop(event) {=0A= Event.extend(event);=0A= event.preventDefault();=0A= event.stopPropagation();=0A= =0A= event.stopped =3D true;=0A= }=0A= =0A= Event.Methods =3D {=0A= isLeftClick: isLeftClick,=0A= isMiddleClick: isMiddleClick,=0A= isRightClick: isRightClick,=0A= =0A= element: element,=0A= findElement: findElement,=0A= =0A= pointer: pointer,=0A= pointerX: pointerX,=0A= pointerY: pointerY,=0A= =0A= stop: stop=0A= };=0A= =0A= =0A= var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) {=0A= m[name] =3D Event.Methods[name].methodize();=0A= return m;=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= function _relatedTarget(event) {=0A= var element;=0A= switch (event.type) {=0A= case 'mouseover': element =3D event.fromElement; break;=0A= case 'mouseout': element =3D event.toElement; break;=0A= default: return null;=0A= }=0A= return Element.extend(element);=0A= }=0A= =0A= Object.extend(methods, {=0A= stopPropagation: function() { this.cancelBubble =3D true },=0A= preventDefault: function() { this.returnValue =3D false },=0A= inspect: function() { return '[object Event]' }=0A= });=0A= =0A= Event.extend =3D function(event, element) {=0A= if (!event) return false;=0A= if (event._extendedByPrototype) return event;=0A= =0A= event._extendedByPrototype =3D Prototype.emptyFunction;=0A= var pointer =3D Event.pointer(event);=0A= =0A= Object.extend(event, {=0A= target: event.srcElement || element,=0A= relatedTarget: _relatedTarget(event),=0A= pageX: pointer.x,=0A= pageY: pointer.y=0A= });=0A= =0A= return Object.extend(event, methods);=0A= };=0A= } else {=0A= Event.prototype =3D window.Event.prototype || = document.createEvent('HTMLEvents').__proto__;=0A= Object.extend(Event.prototype, methods);=0A= Event.extend =3D Prototype.K;=0A= }=0A= =0A= function _createResponder(element, eventName, handler) {=0A= var registry =3D Element.retrieve(element, = 'prototype_event_registry');=0A= =0A= if (Object.isUndefined(registry)) {=0A= CACHE.push(element);=0A= registry =3D Element.retrieve(element, 'prototype_event_registry', = $H());=0A= }=0A= =0A= var respondersForEvent =3D registry.get(eventName);=0A= if (Object.isUndefined(respondersForEvent)) {=0A= respondersForEvent =3D [];=0A= registry.set(eventName, respondersForEvent);=0A= }=0A= =0A= if (respondersForEvent.pluck('handler').include(handler)) return = false;=0A= =0A= var responder;=0A= if (eventName.include(":")) {=0A= responder =3D function(event) {=0A= if (Object.isUndefined(event.eventName))=0A= return false;=0A= =0A= if (event.eventName !=3D=3D eventName)=0A= return false;=0A= =0A= Event.extend(event, element);=0A= handler.call(element, event);=0A= };=0A= } else {=0A= if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&=0A= (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D = "mouseleave")) {=0A= if (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D = "mouseleave") {=0A= responder =3D function(event) {=0A= Event.extend(event, element);=0A= =0A= var parent =3D event.relatedTarget;=0A= while (parent && parent !=3D=3D element) {=0A= try { parent =3D parent.parentNode; }=0A= catch(e) { parent =3D element; }=0A= }=0A= =0A= if (parent =3D=3D=3D element) return;=0A= =0A= handler.call(element, event);=0A= };=0A= }=0A= } else {=0A= responder =3D function(event) {=0A= Event.extend(event, element);=0A= handler.call(element, event);=0A= };=0A= }=0A= }=0A= =0A= responder.handler =3D handler;=0A= respondersForEvent.push(responder);=0A= return responder;=0A= }=0A= =0A= function _destroyCache() {=0A= for (var i =3D 0, length =3D CACHE.length; i < length; i++) {=0A= Event.stopObserving(CACHE[i]);=0A= CACHE[i] =3D null;=0A= }=0A= }=0A= =0A= var CACHE =3D [];=0A= =0A= if (Prototype.Browser.IE)=0A= window.attachEvent('onunload', _destroyCache);=0A= =0A= if (Prototype.Browser.WebKit)=0A= window.addEventListener('unload', Prototype.emptyFunction, false);=0A= =0A= =0A= var _getDOMEventName =3D Prototype.K;=0A= =0A= if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {=0A= _getDOMEventName =3D function(eventName) {=0A= var translations =3D { mouseenter: "mouseover", mouseleave: = "mouseout" };=0A= return eventName in translations ? translations[eventName] : = eventName;=0A= };=0A= }=0A= =0A= function observe(element, eventName, handler) {=0A= element =3D $(element);=0A= =0A= var responder =3D _createResponder(element, eventName, handler);=0A= =0A= if (!responder) return element;=0A= =0A= if (eventName.include(':')) {=0A= if (element.addEventListener)=0A= element.addEventListener("dataavailable", responder, false);=0A= else {=0A= element.attachEvent("ondataavailable", responder);=0A= element.attachEvent("onfilterchange", responder);=0A= }=0A= } else {=0A= var actualEventName =3D _getDOMEventName(eventName);=0A= =0A= if (element.addEventListener)=0A= element.addEventListener(actualEventName, responder, false);=0A= else=0A= element.attachEvent("on" + actualEventName, responder);=0A= }=0A= =0A= return element;=0A= }=0A= =0A= function stopObserving(element, eventName, handler) {=0A= element =3D $(element);=0A= =0A= var registry =3D Element.retrieve(element, = 'prototype_event_registry');=0A= =0A= if (Object.isUndefined(registry)) return element;=0A= =0A= if (eventName && !handler) {=0A= var responders =3D registry.get(eventName);=0A= =0A= if (Object.isUndefined(responders)) return element;=0A= =0A= responders.each( function(r) {=0A= Element.stopObserving(element, eventName, r.handler);=0A= });=0A= return element;=0A= } else if (!eventName) {=0A= registry.each( function(pair) {=0A= var eventName =3D pair.key, responders =3D pair.value;=0A= =0A= responders.each( function(r) {=0A= Element.stopObserving(element, eventName, r.handler);=0A= });=0A= });=0A= return element;=0A= }=0A= =0A= var responders =3D registry.get(eventName);=0A= =0A= if (!responders) return;=0A= =0A= var responder =3D responders.find( function(r) { return r.handler = =3D=3D=3D handler; });=0A= if (!responder) return element;=0A= =0A= var actualEventName =3D _getDOMEventName(eventName);=0A= =0A= if (eventName.include(':')) {=0A= if (element.removeEventListener)=0A= element.removeEventListener("dataavailable", responder, false);=0A= else {=0A= element.detachEvent("ondataavailable", responder);=0A= element.detachEvent("onfilterchange", responder);=0A= }=0A= } else {=0A= if (element.removeEventListener)=0A= element.removeEventListener(actualEventName, responder, false);=0A= else=0A= element.detachEvent('on' + actualEventName, responder);=0A= }=0A= =0A= registry.set(eventName, responders.without(responder));=0A= =0A= return element;=0A= }=0A= =0A= function fire(element, eventName, memo, bubble) {=0A= element =3D $(element);=0A= =0A= if (Object.isUndefined(bubble))=0A= bubble =3D true;=0A= =0A= if (element =3D=3D document && document.createEvent && = !element.dispatchEvent)=0A= element =3D document.documentElement;=0A= =0A= var event;=0A= if (document.createEvent) {=0A= event =3D document.createEvent('HTMLEvents');=0A= event.initEvent('dataavailable', true, true);=0A= } else {=0A= event =3D document.createEventObject();=0A= event.eventType =3D bubble ? 'ondataavailable' : 'onfilterchange';=0A= }=0A= =0A= event.eventName =3D eventName;=0A= event.memo =3D memo || { };=0A= =0A= if (document.createEvent)=0A= element.dispatchEvent(event);=0A= else=0A= element.fireEvent(event.eventType, event);=0A= =0A= return Event.extend(event);=0A= }=0A= =0A= =0A= Object.extend(Event, Event.Methods);=0A= =0A= Object.extend(Event, {=0A= fire: fire,=0A= observe: observe,=0A= stopObserving: stopObserving=0A= });=0A= =0A= Element.addMethods({=0A= fire: fire,=0A= =0A= observe: observe,=0A= =0A= stopObserving: stopObserving=0A= });=0A= =0A= Object.extend(document, {=0A= fire: fire.methodize(),=0A= =0A= observe: observe.methodize(),=0A= =0A= stopObserving: stopObserving.methodize(),=0A= =0A= loaded: false=0A= });=0A= =0A= if (window.Event) Object.extend(window.Event, Event);=0A= else window.Event =3D Event;=0A= })();=0A= =0A= (function() {=0A= /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A= Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */=0A= =0A= var timer;=0A= =0A= function fireContentLoadedEvent() {=0A= if (document.loaded) return;=0A= if (timer) window.clearTimeout(timer);=0A= document.loaded =3D true;=0A= document.fire('dom:loaded');=0A= }=0A= =0A= function checkReadyState() {=0A= if (document.readyState =3D=3D=3D 'complete') {=0A= document.stopObserving('readystatechange', checkReadyState);=0A= fireContentLoadedEvent();=0A= }=0A= }=0A= =0A= function pollDoScroll() {=0A= try { document.documentElement.doScroll('left'); }=0A= catch(e) {=0A= timer =3D pollDoScroll.defer();=0A= return;=0A= }=0A= fireContentLoadedEvent();=0A= }=0A= =0A= if (document.addEventListener) {=0A= document.addEventListener('DOMContentLoaded', = fireContentLoadedEvent, false);=0A= } else {=0A= document.observe('readystatechange', checkReadyState);=0A= if (window =3D=3D top)=0A= timer =3D pollDoScroll.defer();=0A= }=0A= =0A= Event.observe(window, 'load', fireContentLoadedEvent);=0A= })();=0A= =0A= Element.addMethods();=0A= =0A= /*------------------------------- DEPRECATED = -------------------------------*/=0A= =0A= Hash.toQueryString =3D Object.toQueryString;=0A= =0A= var Toggle =3D { display: Element.toggle };=0A= =0A= Element.Methods.childOf =3D Element.Methods.descendantOf;=0A= =0A= var Insertion =3D {=0A= Before: function(element, content) {=0A= return Element.insert(element, {before:content});=0A= },=0A= =0A= Top: function(element, content) {=0A= return Element.insert(element, {top:content});=0A= },=0A= =0A= Bottom: function(element, content) {=0A= return Element.insert(element, {bottom:content});=0A= },=0A= =0A= After: function(element, content) {=0A= return Element.insert(element, {after:content});=0A= }=0A= };=0A= =0A= var $continue =3D new Error('"throw $continue" is deprecated, use = "return" instead');=0A= =0A= var Position =3D {=0A= includeScrollOffsets: false,=0A= =0A= prepare: function() {=0A= this.deltaX =3D window.pageXOffset=0A= || document.documentElement.scrollLeft=0A= || document.body.scrollLeft=0A= || 0;=0A= this.deltaY =3D window.pageYOffset=0A= || document.documentElement.scrollTop=0A= || document.body.scrollTop=0A= || 0;=0A= },=0A= =0A= within: function(element, x, y) {=0A= if (this.includeScrollOffsets)=0A= return this.withinIncludingScrolloffsets(element, x, y);=0A= this.xcomp =3D x;=0A= this.ycomp =3D y;=0A= this.offset =3D Element.cumulativeOffset(element);=0A= =0A= return (y >=3D this.offset[1] &&=0A= y < this.offset[1] + element.offsetHeight &&=0A= x >=3D this.offset[0] &&=0A= x < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= withinIncludingScrolloffsets: function(element, x, y) {=0A= var offsetcache =3D Element.cumulativeScrollOffset(element);=0A= =0A= this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A= this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A= this.offset =3D Element.cumulativeOffset(element);=0A= =0A= return (this.ycomp >=3D this.offset[1] &&=0A= this.ycomp < this.offset[1] + element.offsetHeight &&=0A= this.xcomp >=3D this.offset[0] &&=0A= this.xcomp < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= overlap: function(mode, element) {=0A= if (!mode) return 0;=0A= if (mode =3D=3D 'vertical')=0A= return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A= element.offsetHeight;=0A= if (mode =3D=3D 'horizontal')=0A= return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A= element.offsetWidth;=0A= },=0A= =0A= =0A= cumulativeOffset: Element.Methods.cumulativeOffset,=0A= =0A= positionedOffset: Element.Methods.positionedOffset,=0A= =0A= absolutize: function(element) {=0A= Position.prepare();=0A= return Element.absolutize(element);=0A= },=0A= =0A= relativize: function(element) {=0A= Position.prepare();=0A= return Element.relativize(element);=0A= },=0A= =0A= realOffset: Element.Methods.cumulativeScrollOffset,=0A= =0A= offsetParent: Element.Methods.getOffsetParent,=0A= =0A= page: Element.Methods.viewportOffset,=0A= =0A= clone: function(source, target, options) {=0A= options =3D options || { };=0A= return Element.clonePosition(target, source, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!document.getElementsByClassName) document.getElementsByClassName = =3D function(instanceMethods){=0A= function iter(name) {=0A= return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' = " + name + " ')]";=0A= }=0A= =0A= instanceMethods.getElementsByClassName =3D = Prototype.BrowserFeatures.XPath ?=0A= function(element, className) {=0A= className =3D className.toString().strip();=0A= var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') = : iter(className);=0A= return cond ? document._getElementsByXPath('.//*' + cond, element) : = [];=0A= } : function(element, className) {=0A= className =3D className.toString().strip();=0A= var elements =3D [], classNames =3D (/\s/.test(className) ? = $w(className) : null);=0A= if (!classNames && !className) return elements;=0A= =0A= var nodes =3D $(element).getElementsByTagName('*');=0A= className =3D ' ' + className + ' ';=0A= =0A= for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A= if (child.className && (cn =3D ' ' + child.className + ' ') && = (cn.include(className) ||=0A= (classNames && classNames.all(function(name) {=0A= return !name.toString().blank() && cn.include(' ' + name + ' = ');=0A= }))))=0A= elements.push(Element.extend(child));=0A= }=0A= return elements;=0A= };=0A= =0A= return function(className, parentElement) {=0A= return $(parentElement || = document.body).getElementsByClassName(className);=0A= };=0A= }(Element.Methods);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.ClassNames =3D Class.create();=0A= Element.ClassNames.prototype =3D {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= },=0A= =0A= _each: function(iterator) {=0A= this.element.className.split(/\s+/).select(function(name) {=0A= return name.length > 0;=0A= })._each(iterator);=0A= },=0A= =0A= set: function(className) {=0A= this.element.className =3D className;=0A= },=0A= =0A= add: function(classNameToAdd) {=0A= if (this.include(classNameToAdd)) return;=0A= this.set($A(this).concat(classNameToAdd).join(' '));=0A= },=0A= =0A= remove: function(classNameToRemove) {=0A= if (!this.include(classNameToRemove)) return;=0A= this.set($A(this).without(classNameToRemove).join(' '));=0A= },=0A= =0A= toString: function() {=0A= return $A(this).join(' ');=0A= }=0A= };=0A= =0A= Object.extend(Element.ClassNames.prototype, Enumerable);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= =0A= document.observe('dom:loaded', function() {=20 if ($('feedback_anchor')) { new PModal('feedback_anchor', '/main/feedback', {}, {}); } =09 $$('.CodeRay').each(function(e) { e.observe('click', function(t) { e.toggleClassName('hide_numbers'); }); }); });=20 var PModal =3D Class.create({ initialize: function(action_id, target_callback, parameters, options) = {=20 this.options =3D Object.extend({ opacity: 0.5, position: 'absolute', width: 500, height: 500, identifier: null }, options || {} ); =20 =20 this.options.beforeOpen =3D = this.openHandler.bindAsEventListener(this); this.options.beforeClose =3D = this.closeHandler.bindAsEventListener(this); =20 =20 =20 this.action_id =3D $(action_id); this.identifier =3D (this.action_id) ? = this.action_id.getAttribute('id') : this.options.identifier; this.target_callback =3D target_callback; this.parameters =3D parameters || {}; if (this.action_id) this.action_id.observe('click', = this.click.bindAsEventListener(this)); =20 if (this.action_id && this.action_id.getAttribute('href')) = this.action_id.setAttribute('href', '#'); =20 }, =20 openHandler: function() { // HIDE ALL EMBEDS AND OBJECTS below modals // todo: set a class so that we don't show hidden embed/objects = accidentally // put a placeholder image so that the user doesn't get = confused $$('object, embed').each(function(obj) {=20 // var spacer_div =3D new Element('div').setStyle({width: = obj.getWidth(), height: obj.getHeight(), backgroundColor: '#ddd'}); // spacer_div.addClassName('posterous_embed_hiding_spacer_div'); // obj.insert({after:spacer_div}); obj.hide();=20 }); }, =20 closeHandler: function() { // SHOW ALL EMBEDS AND OBJECTS below modals=20 // $$('posterous_embed_hiding_spacer_div').each(function(obj) { = obj.hide(); }); $$('object, embed').each(function(obj) { obj.show(); }); =20 }, =20 click: function(evt) { if (evt) evt.stop(); this.modal =3D Control.Modal.open('
', this.options); this.modalDiv =3D $('modal_' + this.identifier); new Ajax.Request(this.target_callback, { method: 'get', parameters: this.parameters, onSuccess: function(transport) { var response =3D transport.responseText || "Something went = wrong. Email us at help@posterous.com."; this.response =3D response; =20 this.modalDiv.update(this.response); =20 =20 }.bindAsEventListener(this), =20 onFailure: function() { alert("Something went wrong. Email us at help@posterous.com and = we'll get back to you ASAP."); }.bindAsEventListener(this) =20 }); }, =20 finishLazyLoad: function() { this.modalDiv.update(this.response); =20 } }); PModal.click_listener_hash =3D new Hash(); document.observe('dom:loaded', function() {=20 $$('.slide-out').each(function(slide){ slide.select('.slide-out-toggler').each(function(tog){ tog.observe('click', function(){ slide.toggleClassName('slide-out-opened'); }); }); }); });=0A= =0A= var PREFILL_CLASSNAME =3D 'prefilled';=0A= function prefillClearer(elem, defaultText){=0A= elem =3D $(elem);=0A= var enableText =3D function() {=0A= elem.value =3D defaultText;=0A= elem.addClassName(PREFILL_CLASSNAME);=0A= };=0A= var disableText =3D function() {=0A= elem.value =3D '';=0A= elem.removeClassName(PREFILL_CLASSNAME);=0A= };=0A= elem.observe('focus', function() {=0A= if (elem.value =3D=3D defaultText || elem.value =3D=3D "Untitled") = disableText();=0A= elem.removeClassName(PREFILL_CLASSNAME); // always do this=0A= });=0A= elem.observe('blur', function() { if (elem.value.blank()) = enableText(); });=0A= $(elem.form).observe('reset', enableText);=0A= if (elem.value.blank()) enableText();=0A= if (elem.value !=3D defaultText || elem.value =3D=3D "Untitled") = elem.removeClassName(PREFILL_CLASSNAME);=0A= }=0A= =0A= /*=0A= * Copyright (c) 2006 Jonathan Weiss =0A= * Modified by Garry Tan (garry@posterous.com) (c) 2008 under the same = BSD license.=0A= *=0A= * Permission to use, copy, modify, and distribute this software for any=0A= * purpose with or without fee is hereby granted, provided that the above=0A= * copyright notice and this permission notice appear in all copies.=0A= *=0A= * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL = WARRANTIES=0A= * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF=0A= * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE = FOR=0A= * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES=0A= * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN=0A= * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT = OF=0A= * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.=0A= */=0A= =0A= =0A= /* tooltip-0.1.js - Small tooltip library on top of Prototype =0A= * by Jonathan Weiss distributed under the BSD = license. =0A= *=0A= * Unlike other libraries it does not declare its own tooltip =0A= * div or window. It relies on an already existing div or element = defined by you to display as =0A= * the tooltip. This element will be placed (and shown) near the mouse = pointer when a trigger-element is moused-over.=0A= * =0A= *=0A= * Usage: =0A= * =0A= * =0A= * =0A= * =0A= * Now whenever you trigger a mouseOver on the `trigger` element, the = tooltip element will=0A= * be shown. On o mouseOut the tooltip disappears. =0A= * =0A= * Example:=0A= * =0A= * =0A= * =0A= * =0A= *=0A= *
=0A= * Detail infos on product 1....
=0A= *
=0A= *=0A= *
=0A= * This is product 1=0A= *
=0A= *=0A= * =0A= *=0A= * You can use my_tooltip.destroy() to remove the event observers and = thereby the tooltip.=0A= * =0A= * modified by garry tan:=0A= * now takes a hoverElement and a positionElement -- so it can be = positioned based on another item.=0A= */=0A= =0A= var PTooltip =3D Class.create({=0A= initialize: function(hoverElement, positionElement, tool_tip) {=0A= var options =3D Object.extend({=0A= default_css: false,=0A= margin: "0px",=0A= padding: "5px",=0A= backgroundColor: "#fff",=0A= delta_x: 5,=0A= delta_y: 5,=0A= zindex: 1000,=0A= position: "mouse",=0A= marginTop: 0,=0A= marginBottom: 0,=0A= marginLeft: 0,=0A= marginRight: 0=0A= =0A= }, arguments[3] || {});=0A= =0A= /* don't break iphone, skip... -- seems to cause divs to overlay, which = breaks clicks */=0A= if (navigator.userAgent.indexOf('iPhone') !=3D -1) {=0A= return;=0A= }=0A= =0A= this.hoverElement =3D $(hoverElement);=0A= this.positionElement =3D $(positionElement)=0A= this.tool_tip =3D $(tool_tip);=0A= =0A= this.options =3D options;=0A= =0A= // hide the tool-tip by default=0A= this.tool_tip.hide();=0A= =0A= this.eventMouseOver =3D this.showTooltip.bindAsEventListener(this);=0A= this.eventMouseOut =3D this.hideTooltip.bindAsEventListener(this);=0A= =0A= this.registerEvents();=0A= },=0A= =0A= destroy: function() {=0A= Event.stopObserving(this.hoverElement, "mouseover", = this.eventMouseOver);=0A= Event.stopObserving(this.hoverElement, "mouseout", = this.eventMouseOut);=0A= },=0A= =0A= registerEvents: function() {=0A= Event.observe(this.hoverElement, "mouseover", this.eventMouseOver);=0A= Event.observe(this.hoverElement, "mouseout", this.eventMouseOut);=0A= },=0A= =0A= showTooltip: function(event){=0A= if (event !=3D null)=0A= Event.stop(event);=0A= =0A= if (this.options['position'] =3D=3D 'mouse') {=0A= // get Mouse position=0A= var mouse_x =3D Event.pointerX(event);=0A= var mouse_y =3D Event.pointerY(event);=0A= =0A= =0A= // decide if wee need to switch sides for the tooltip=0A= var dimensions =3D Element.getDimensions( this.tool_tip );=0A= var element_width =3D dimensions.width;=0A= var element_height =3D dimensions.height;=0A= =0A= if ( (element_width + mouse_x) >=3D ( this.getWindowWidth() - = this.options.delta_x) ){ // too big for X=0A= mouse_x =3D mouse_x - element_width;=0A= // apply delta to make sure that the mouse is not on the tool-tip=0A= mouse_x =3D mouse_x - this.options.delta_x;=0A= } else {=0A= mouse_x =3D mouse_x + this.options.delta_x;=0A= }=0A= =0A= if ( (element_height + mouse_y) >=3D ( this.getWindowHeight() - = this.options.delta_y) ){ // too big for Y=0A= mouse_y =3D mouse_y - element_height;=0A= // apply delta to make sure that the mouse is not on the = tool-tip=0A= mouse_y =3D mouse_y - this.options.delta_y;=0A= } else {=0A= mouse_y =3D mouse_y + this.options.delta_y;=0A= }=0A= // now set the right styles=0A= this.setStyles(mouse_x, mouse_y);=0A= =0A= } else if (this.options['position'] =3D=3D 'upperright') {=0A= =0A= var elemOffset =3D this.positionElement.cumulativeOffset();=0A= var x =3D elemOffset[0] + this.positionElement.getWidth() - = this.tool_tip.getWidth() - this.options['marginRight'];=0A= var y =3D elemOffset[1] + this.options['marginTop'];=0A= =0A= this.setStyles(x, y);=0A= =0A= } else if (this.options['position'] =3D=3D 'topleft') {=0A= =0A= var elemOffset =3D this.positionElement.cumulativeOffset();=0A= var x =3D elemOffset[0] + this.options['marginLeft'];=0A= var y =3D elemOffset[1] + this.options['marginTop'];=0A= =0A= this.setStyles(x, y);=0A= }=0A= =0A= // finally show the Tooltip=0A= //new Effect.Appear(this.tool_tip);=0A= new Element.show(this.tool_tip);=0A= =0A= },=0A= =0A= setStyles: function(x, y){=0A= // set the right styles to position the tool tip=0A= Element.setStyle(this.tool_tip, { position:'absolute',=0A= top:y + "px",=0A= left:x + "px",=0A= zindex:this.options.zindex=0A= });=0A= =0A= // apply default theme if wanted=0A= if (this.options.default_css){=0A= Element.setStyle(this.tool_tip, { margin:this.options.margin,=0A= padding:this.options.padding,=0A= = backgroundColor:this.options.backgroundColor,=0A= zindex:this.options.zindex=0A= }); =0A= } =0A= },=0A= =0A= hideTooltip: function(event){=0A= //new Effect.Fade(this.tool_tip);=0A= if (!this.tool_tip.hasClassName('tooltip_donothide')) {=0A= new Element.hide(this.tool_tip);=0A= }=0A= },=0A= =0A= getWindowHeight: function(){=0A= var innerHeight;=0A= if (navigator.appVersion.indexOf('MSIE')>0) {=0A= innerHeight =3D document.body.clientHeight;=0A= } else {=0A= innerHeight =3D window.innerHeight;=0A= }=0A= return innerHeight; =0A= },=0A= =0A= getWindowWidth: function(){=0A= var innerWidth;=0A= if (navigator.appVersion.indexOf('MSIE')>0) {=0A= innerWidth =3D document.body.clientWidth;=0A= } else {=0A= innerWidth =3D window.innerWidth;=0A= }=0A= return innerWidth; =0A= }=0A= =0A= });=0A= =0A= /** * @author Ryan Johnson * @copyright 2007 LivePipe LLC * @package Control.Modal * @license MIT * @url http://livepipe.net/projects/control_modal/ * @version 2.2.3 */ if(typeof(Control) =3D=3D "undefined") Control =3D {}; Control.Modal =3D Class.create(); Object.extend(Control.Modal,{ loaded: false, loading: false, loadingTimeout: false, overlay: false, container: false, current: false, ie: false, effects: { containerFade: false, containerAppear: false, overlayFade: false, overlayAppear: false }, targetRegexp: /#(.+)$/, imgRegexp: /\.(jpe?g|gif|png|tiff?)($|\?.+)/i, overlayStyles: { position: 'fixed', top: 0, left: 0, width: '100%', height: '100%', zIndex: 9998 }, overlayIEStyles: { position: 'absolute', top: 0, left: 0, zIndex: 9998 }, disableHoverClose: false, load: function(){ if(!Control.Modal.loaded){ Control.Modal.loaded =3D true; Control.Modal.ie =3D !(typeof document.body.style.maxHeight !=3D = 'undefined'); Control.Modal.overlay =3D $(document.createElement('div')); Control.Modal.overlay.id =3D 'modal_overlay'; Object.extend(Control.Modal.overlay.style,Control.Modal['overlay' + = (Control.Modal.ie ? 'IE' : '') + 'Styles']); Control.Modal.overlay.hide(); =09 Control.Modal.container_holder =3D $(document.createElement('div')); Control.Modal.container_holder.id =3D 'modal_container_holder'; =09 Control.Modal.container =3D $(document.createElement('div')); Control.Modal.container.id =3D 'modal_container'; =09 =09 Control.Modal.container_holder.hide(); Control.Modal.loading =3D $(document.createElement('div')); Control.Modal.loading.id =3D 'modal_loading'; Control.Modal.loading.hide(); var body_tag =3D document.getElementsByTagName('body')[0]; body_tag.appendChild(Control.Modal.overlay); Control.Modal.container_holder.appendChild(Control.Modal.container); body_tag.appendChild(Control.Modal.container_holder); body_tag.appendChild(Control.Modal.loading); Control.Modal.container_holder.observe('mouseout',function(event){ if(!Control.Modal.disableHoverClose && Control.Modal.current && = Control.Modal.current.options.hover && = !Position.within(Control.Modal.container_holder,Event.pointerX(event),Eve= nt.pointerY(event))) Control.Modal.close(); }); } }, open: function(contents,options){ options =3D options || {}; if(!options.contents) options.contents =3D contents; var modal_instance =3D new Control.Modal(false,options); modal_instance.open(); return modal_instance; }, close: function(force){ if(typeof(force) !=3D 'boolean') force =3D false; if(Control.Modal.current) Control.Modal.current.close(force); }, attachEvents: function(){ Event.observe(window,'load',Control.Modal.load); // Event.observe(window,'unload',Event.unloadCache,false); }, center: function(element){ if(!element._absolutized){ element.setStyle({ position: 'absolute' });=20 element._absolutized =3D true; } var dimensions =3D element.getDimensions(); Position.prepare(); var offset_left =3D (Position.deltaX + = Math.floor((Control.Modal.getWindowWidth() - dimensions.width) / 2)); var offset_top =3D (Position.deltaY + = ((Control.Modal.getWindowHeight() > dimensions.height) ? = Math.floor((Control.Modal.getWindowHeight() - dimensions.height) / 2) : = 0)); element.setStyle({ // Posterous edit: [gt] fixed this so that it doesn't jump image to top. // top: ((dimensions.height <=3D Control.Modal.getDocumentHeight()) ? = ((offset_top !=3D null && offset_top > 0) ? offset_top : '0') + 'px' : = 0), top: ((offset_top !=3D null && offset_top > 0) ? offset_top : '0') + = 'px', left: ((dimensions.width <=3D Control.Modal.getDocumentWidth()) ? = ((offset_left !=3D null && offset_left > 0) ? offset_left : '0') + 'px' = : 0) }); }, getWindowWidth: function(){ return (self.innerWidth || document.documentElement.clientWidth || = document.body.clientWidth || 0); }, getWindowHeight: function(){ return (self.innerHeight || document.documentElement.clientHeight || = document.body.clientHeight || 0); }, getDocumentWidth: function(){ return = Math.min(document.body.scrollWidth,Control.Modal.getWindowWidth()); }, getDocumentHeight: function(){ return = Math.max(document.body.scrollHeight,Control.Modal.getWindowHeight()); }, onKeyDown: function(event){ if(event.keyCode =3D=3D Event.KEY_ESC) Control.Modal.close(); } }); Object.extend(Control.Modal.prototype,{ mode: '', html: false, href: '', element: false, src: false, imageLoaded: false, ajaxRequest: false, initialize: function(element,options){ this.element =3D $(element); this.options =3D { beforeOpen: Prototype.emptyFunction, afterOpen: Prototype.emptyFunction, beforeClose: Prototype.emptyFunction, afterClose: Prototype.emptyFunction, onSuccess: Prototype.emptyFunction, onFailure: Prototype.emptyFunction, onException: Prototype.emptyFunction, beforeImageLoad: Prototype.emptyFunction, afterImageLoad: Prototype.emptyFunction, autoOpenIfLinked: true, contents: false, loading: false, //display loading indicator fade: false, fadeDuration: 0.75, image: false, target: false, imageCloseOnClick: true, hover: false, iframe: false, iframeTemplate: new Template(''), evalScripts: true, //for Ajax, define here instead of in = requestOptions requestOptions: {}, //for Ajax.Request overlayDisplay: true, overlayClassName: '', overlayCloseOnClick: true, containerClassName: '', opacity: 0.3, zIndex: 9998, width: null, height: null, offsetLeft: 0, //for use with 'relative' offsetTop: 0, //for use with 'relative' position: 'absolute', //'absolute' or 'relative' borderRadius: 10, padding: 0 }; Object.extend(this.options,options || {}); var target_match =3D false; var image_match =3D false; if(this.element){ target_match =3D Control.Modal.targetRegexp.exec(this.element.href); image_match =3D Control.Modal.imgRegexp.exec(this.element.href); } if(this.options.position =3D=3D 'mouse') this.options.hover =3D true; if(this.options.contents){ this.mode =3D 'contents'; }else if(this.options.image || image_match){ this.mode =3D 'image'; this.src =3D this.element.href; /* Posterous: modified by GT 2/2010 -- added this.options.target so = that we don't have to use an a href */ }else if(this.options.target || target_match){ this.mode =3D 'named'; var target =3D this.options.target || target_match[1]; var x =3D $(target); this.html =3D x.innerHTML; x.remove(); this.href =3D target; }else{ this.mode =3D (this.options.iframe) ? 'iframe' : 'ajax'; this.href =3D this.element.href; } if(this.element){ if(this.options.hover){ this.element.observe('mouseover',this.open.bind(this)); this.element.observe('mouseout',function(event){ = if(!Position.within(Control.Modal.container_holder,Event.pointerX(event),= Event.pointerY(event))) this.close(); }.bindAsEventListener(this)); }else{ this.element.onclick =3D function(event){ this.open(); Event.stop(event); return false; }.bindAsEventListener(this); } } var targets =3D Control.Modal.targetRegexp.exec(window.location); this.position =3D function(event){ if(this.options.position =3D=3D 'absolute') Control.Modal.center(Control.Modal.container_holder); else{ var xy =3D (event && this.options.position =3D=3D 'mouse' ? = [Event.pointerX(event),Event.pointerY(event)] : = Position.cumulativeOffset(this.element)); Control.Modal.container_holder.setStyle({ position: 'absolute', top: xy[1] + (typeof(this.options.offsetTop) =3D=3D 'function' ? = this.options.offsetTop() : this.options.offsetTop) + 'px', left: xy[0] + (typeof(this.options.offsetLeft) =3D=3D 'function' ? = this.options.offsetLeft() : this.options.offsetLeft) + 'px' }); } if(Control.Modal.ie){ Control.Modal.overlay.setStyle({ height: Control.Modal.getDocumentHeight() + 'px', width: Control.Modal.getDocumentWidth() + 'px' }); } }.bind(this); if(this.mode =3D=3D 'named' && this.options.autoOpenIfLinked && = targets && targets[1] && targets[1] =3D=3D this.href) this.open(); }, showLoadingIndicator: function(){ if(this.options.loading){ Control.Modal.loadingTimeout =3D window.setTimeout(function(){ var modal_image =3D $('modal_image'); if(modal_image) modal_image.hide(); Control.Modal.loading.style.zIndex =3D this.options.zIndex + 1; Control.Modal.loading.update(''); Control.Modal.loading.show(); Control.Modal.center(Control.Modal.loading); }.bind(this),250); } }, hideLoadingIndicator: function(){ if(this.options.loading){ if(Control.Modal.loadingTimeout) window.clearTimeout(Control.Modal.loadingTimeout); var modal_image =3D $('modal_image'); if(modal_image) modal_image.show(); Control.Modal.loading.hide(); } }, open: function(force){ if(!force && this.notify('beforeOpen') =3D=3D=3D false) return; if(!Control.Modal.loaded) Control.Modal.load(); Control.Modal.close(); if(!this.options.hover) = Event.observe($(document.getElementsByTagName('body')[0]),'keydown',Contr= ol.Modal.onKeyDown); Control.Modal.current =3D this; if(!this.options.hover) Control.Modal.overlay.setStyle({ zIndex: this.options.zIndex, opacity: this.options.opacity }); var borderRadiusPx =3D (this.options.borderRadius + 'px'); Control.Modal.container.setStyle({ zIndex: this.options.zIndex + 2, position: 'absolute', backgroundColor: '#fff', =09 top: borderRadiusPx, left: borderRadiusPx, right: borderRadiusPx, = bottom: borderRadiusPx =09 }); Control.Modal.container_holder.setStyle({ zIndex: this.options.zIndex + 1, padding: this.options.padding + 'px', backgroundColor: (Prototype.Browser.IE ? '#999999' :'rgba(82, 82, = 82, 0.4)'), width: (this.options.width ? ((typeof(this.options.width) =3D=3D = 'function' ? this.options.width() : this.options.width) + = (this.options.borderRadius * 2) + this.options.padding) + 'px' : null), height: (this.options.height ? ((typeof(this.options.height) =3D=3D = 'function' ? this.options.height() : this.options.height) + = (this.options.borderRadius * 2) + this.options.padding) + 'px' : null) }); =09 if(Control.Modal.ie && !this.options.hover){ $A(document.getElementsByTagName('select')).each(function(select){ select.style.visibility =3D 'hidden'; }); } Control.Modal.overlay.addClassName(this.options.overlayClassName); Control.Modal.container.addClassName(this.options.containerClassName); switch(this.mode){ case 'image': this.imageLoaded =3D false; this.notify('beforeImageLoad'); this.showLoadingIndicator(); var img =3D document.createElement('img'); img.onload =3D function(img){ this.hideLoadingIndicator(); this.update([img]); if(this.options.imageCloseOnClick) $(img).observe('click',Control.Modal.close); this.position(); this.notify('afterImageLoad'); img.onload =3D null; }.bind(this,img); img.src =3D this.src; img.id =3D 'modal_image'; break; case 'ajax': this.notify('beforeLoad'); var options =3D { method: 'post', onSuccess: function(request){ this.hideLoadingIndicator(); this.update(request.responseText); this.notify('onSuccess',request); this.ajaxRequest =3D false; }.bind(this), onFailure: function(){ this.notify('onFailure'); }.bind(this), onException: function(){ this.notify('onException'); }.bind(this) }; Object.extend(options,this.options.requestOptions); this.showLoadingIndicator(); this.ajaxRequest =3D new Ajax.Request(this.href,options); break; case 'iframe': this.update(this.options.iframeTemplate.evaluate({href: this.href, = id: 'modal_iframe'})); break; case 'contents': this.update((typeof(this.options.contents) =3D=3D 'function' ? = this.options.contents() : this.options.contents)); break; case 'named': this.update(this.html); break; } if(!this.options.hover){ if(this.options.overlayCloseOnClick && this.options.overlayDisplay) Control.Modal.overlay.observe('click',Control.Modal.close); if(this.options.overlayDisplay){ if(this.options.fade){ if(Control.Modal.effects.overlayFade) Control.Modal.effects.overlayFade.cancel(); Control.Modal.effects.overlayAppear =3D new = Effect.Appear(Control.Modal.overlay,{ queue: { position: 'front', scope: 'Control.Modal' }, to: this.options.opacity, duration: this.options.fadeDuration / 2 }); }else Control.Modal.overlay.show(); } } if(this.options.position =3D=3D 'mouse'){ this.mouseHoverListener =3D this.position.bindAsEventListener(this); this.element.observe('mousemove',this.mouseHoverListener); } this.notify('afterOpen'); }, update: function(html){ if(typeof(html) =3D=3D 'string') Control.Modal.container.update(html); else{ Control.Modal.container.update(''); (html.each) ? html.each(function(node){ Control.Modal.container.appendChild(node); }) : Control.Modal.container.appendChild(html); } if(this.options.fade){ if(Control.Modal.effects.containerFade) Control.Modal.effects.containerFade.cancel(); Control.Modal.effects.containerAppear =3D new = Effect.Appear(Control.Modal.container_holder,{ queue: { position: 'end', scope: 'Control.Modal' }, to: 1, duration: this.options.fadeDuration / 2 }); }else Control.Modal.container_holder.show(); this.position(); Event.observe(window,'resize',this.position,false); // Event.observe(window,'scroll',this.position,false); }, close: function(force){ if(!force && this.notify('beforeClose') =3D=3D=3D false) return; if(this.ajaxRequest) this.ajaxRequest.transport.abort(); this.hideLoadingIndicator();=09 if(this.mode =3D=3D 'image'){ var modal_image =3D $('modal_image'); if(this.options.imageCloseOnClick && modal_image) modal_image.stopObserving('click',Control.Modal.close); } if(Control.Modal.ie && !this.options.hover){ $A(document.getElementsByTagName('select')).each(function(select){ select.style.visibility =3D 'visible'; }); =09 } if(!this.options.hover) Event.stopObserving(window,'keyup',Control.Modal.onKeyDown); Control.Modal.current =3D false; Event.stopObserving(window,'resize',this.position,false); Event.stopObserving(window,'scroll',this.position,false); if(!this.options.hover){ if(this.options.overlayCloseOnClick && this.options.overlayDisplay) Control.Modal.overlay.stopObserving('click',Control.Modal.close); if(this.options.overlayDisplay){ if(this.options.fade){ if(Control.Modal.effects.overlayAppear) Control.Modal.effects.overlayAppear.cancel(); Control.Modal.effects.overlayFade =3D new = Effect.Fade(Control.Modal.overlay,{ queue: { position: 'end', scope: 'Control.Modal' }, from: this.options.opacity, to: 0, duration: this.options.fadeDuration / 2 }); }else Control.Modal.overlay.hide(); } } if(this.options.fade){ if(Control.Modal.effects.containerAppear) Control.Modal.effects.containerAppear.cancel(); Control.Modal.effects.containerFade =3D new = Effect.Fade(Control.Modal.container,{ queue: { position: 'front', scope: 'Control.Modal' }, from: 1, to: 0, duration: this.options.fadeDuration / 2, afterFinish: function(){ Control.Modal.container.update(''); this.resetClassNameAndStyles(); }.bind(this) }); }else{ Control.Modal.container_holder.hide(); Control.Modal.container.update(''); this.resetClassNameAndStyles(); } if(this.options.position =3D=3D 'mouse') this.element.stopObserving('mousemove',this.mouseHoverListener); this.notify('afterClose'); }, resetClassNameAndStyles: function(){ Control.Modal.overlay.removeClassName(this.options.overlayClassName); = Control.Modal.container_holder.removeClassName(this.options.containerClas= sName); Control.Modal.container_holder.setStyle({ height: null, width: null, top: null, left: null }); }, notify: function(event_name){ try{ if(this.options[event_name]) return = [this.options[event_name].apply(this.options[event_name],$A(arguments).sl= ice(1))]; }catch(e){ if(e !=3D $break) throw e; else return false; } } }); if(typeof(Object.Event) !=3D 'undefined') Object.Event.extend(Control.Modal); Control.Modal.attachEvents();=0A= =0A= /** =0A= * @description prototype.js based context menu=0A= * @author Juriy Zaytsev; kangax [at] gmail [dot] com; = http://thinkweb2.com/projects/prototype/=0A= * @version 0.6=0A= * @date 12/03/07=0A= * @requires prototype.js 1.6=0A= * =0A= * modified by garry@posterous.com for left click menus on split buttons=0A= */=0A= if (Object.isUndefined(Proto)) { var Proto =3D { } }=0A= =0A= Proto.Menu =3D Class.create({=0A= initialize: function() {=0A= var e =3D Prototype.emptyFunction;=0A= this.ie =3D Prototype.Browser.IE;=0A= this.options =3D Object.extend({=0A= selector: '.contextmenu',=0A= className: 'protoMenu',=0A= pageOffset: 25,=0A= fade: false,=0A= zIndex: 100,=0A= beforeShow: e,=0A= beforeHide: e,=0A= beforeSelect: e,=0A= position: 'mouse_click', // can be mouse_click or relative=0A= location: null, // needed if set to relative, should be a DOM = element to use for location=0A= click: 'right', // by default, right click=0A= width: null, // if null, then don't set width on the div=0A= menuAlign: 'left' // can align right if location set and position = is relative=0A= // iconCSS: null // if not null, set an icon for the menu item = using that css, e.g. url(images/email.png) 2px 50% no-repeat=0A= }, arguments[0] || { });=0A= =0A= this.shim =3D new Element('iframe', {=0A= style: = 'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity= =3D0);display:none',=0A= src: 'javascript:false;',=0A= frameborder: 0=0A= });=0A= =0A= this.options.fade =3D this.options.fade && !Object.isUndefined(Effect);=0A= this.container =3D new Element('div', {className: = this.options.className, style: 'display:none'});=0A= if (this.options.width !=3D null) {=0A= this.container.setStyle({ width: this.options.width + 'px'});=0A= }=0A= var list =3D new Element('ul');=0A= this.options.menuItems.each(function(item) {=0A= var aLink =3D '';=0A= if (!item.separator) {=0A= aLink =3D Object.extend(new Element('a', {=0A= href: ((!item.href || item.method =3D=3D 'post' || item.method = =3D=3D 'put' || item.method =3D=3D 'delete') ? '#': item.href),=0A= title: item.name,=0A= className: (item.className || '') + (item.disabled ? ' disabled' : = ' enabled')=0A= }), { _method: item.method, _params: item.params, _confirm: = item.confirm, _href: item.href, _callback: item.callback });=0A= aLink.observe('click', this.onClick.bind(this));=0A= aLink.observe('contextmenu', Event.stop);=0A= aLink.update(item.name);=0A= if (item.icon) {=0A= aLink.setStyle({ =0A= backgroundImage: 'url(' + item.icon + ')',=0A= backgroundPosition: '8px 50%',=0A= backgroundRepeat: 'no-repeat'=0A= });=0A= }=0A= }=0A= list.insert(new Element('li', {className: item.separator ? = 'separator' : ''}).insert(aLink));=0A= =0A= }.bind(this));=0A= =0A= = $(document.body).insert(this.container.insert(list).observe('contextmenu'= , Event.stop));=0A= if (this.ie) { $(document.body).insert(this.shim) }=0A= =0A= if (this.options.click =3D=3D 'right') { // if right clicking causes = it to pop up, treat it like a context menu=0A= document.observe('click', function(e) {=0A= if (this.container.visible() && (!e.isRightClick())) {=0A= this.options.beforeHide(e);=0A= if (this.ie) this.shim.hide();=0A= this.container.hide();=0A= }=0A= }.bind(this));=0A= =0A= $$(this.options.selector).invoke('observe', Prototype.Browser.Opera ? = 'click' : 'contextmenu', function(e){=0A= if (Prototype.Browser.Opera && !e.ctrlKey) {=0A= return;=0A= }=0A= this.show(e);=0A= }.bind(this));=0A= =0A= } else { // else left click =0A= document.observe('click', function(e) {=0A= if (this.container.visible()) {=0A= this.options.beforeHide(e);=0A= if (this.ie) this.shim.hide();=0A= this.container.hide();=0A= }=0A= }.bind(this));=0A= =0A= $$(this.options.selector).invoke('observe', 'click', function(e){ =0A= this.container.visible() ? this.container.hide() : this.show(e); =0A= e.stop();=0A= }.bind(this));=0A= }=0A= },=0A= is_form_post: function(item) {=0A= return ;=0A= },=0A= show: function(e) {=0A= e.stop();=0A= this.options.beforeShow(e);=0A= var x =3D Event.pointer(e).x, y =3D Event.pointer(e).y, elDim =3D = this.container.getDimensions();=0A= =0A= if (this.options.position =3D=3D 'relative') {=0A= var elemOffset =3D this.options.location.cumulativeOffset();=0A= if (this.options.menuAlign =3D=3D 'left') {=0A= x =3D elemOffset[0];=0A= y =3D elemOffset[1] + this.options.location.getHeight() - 2;=0A= } else {=0A= x =3D elemOffset[0] + this.options.location.getWidth() - elDim.width;=0A= y =3D elemOffset[1] + this.options.location.getHeight() - 2;=0A= }=0A= }=0A= =0A= var vpDim =3D document.viewport.getDimensions(),=0A= vpOff =3D document.viewport.getScrollOffsets(),=0A= elOff =3D {=0A= left: ((x + elDim.width + this.options.pageOffset) > vpDim.width =0A= ? (vpDim.width - elDim.width - this.options.pageOffset) : x) + 'px',=0A= top: ((y - vpOff.top + elDim.height) > vpDim.height && (y - = vpOff.top) > elDim.height =0A= ? (y - elDim.height) : y) + 'px'=0A= };=0A= =0A= this.container.setStyle(elOff).setStyle({zIndex: this.options.zIndex});=0A= if (this.ie) { =0A= this.shim.setStyle(Object.extend(Object.extend(elDim, elOff), = {zIndex: this.options.zIndex - 1})).show();=0A= }=0A= this.options.fade ? Effect.Appear(this.container, {duration: 0.25}) : = this.container.show();=0A= this.event =3D e;=0A= =0A= },=0A= onClick: function(e) {=0A= var hide_after =3D false;=0A= if (e.target._href && (!e.target._method || e.target._method =3D=3D = 'get')) { // normal href=0A= return true;=0A= } else if (e.target._method =3D=3D 'delete') { // post=0A= if (confirm('Are you sure?')) { =0A= var f =3D document.createElement('form'); f.style.display =3D = 'none'; e.target.appendChild(f); f.method =3D 'POST'; f.action =3D = e.target._href;=0A= =0A= var m =3D document.createElement('input'); m.setAttribute('type', = 'hidden'); =0A= m.setAttribute('name', '_method'); m.setAttribute('value', = 'delete'); =0A= f.appendChild(m);=0A= =0A= m =3D document.createElement('input'); m.setAttribute('type', = 'hidden'); =0A= m.setAttribute('name', 'authenticity_token'); = m.setAttribute('value', window._token); =0A= f.appendChild(m);=0A= =0A= $H(e.target._params).each(function(pair) {=0A= m =3D document.createElement('input'); m.setAttribute('type', = 'hidden'); =0A= m.setAttribute('name', pair.key); m.setAttribute('value', = pair.value); =0A= f.appendChild(m);=0A= });=0A= =0A= f.submit(); =0A= e.stop();=0A= return false;=0A= } else {=0A= hide_after =3D true;=0A= }=0A= }=0A= =0A= // callback=0A= e.stop(); =0A= if ((hide_after || e.target._callback) && = !e.target.hasClassName('disabled')) {=0A= this.options.beforeSelect(e);=0A= if (this.ie) this.shim.hide();=0A= this.container.hide();=0A= e.target._callback(this.event);=0A= }=0A= return true;=0A= }=0A= })=0A= =0A= // script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A= =0A= // Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= // Contributors:=0A= // Justin Palmer (http://encytemedia.com/)=0A= // Mark Pilgrim (http://diveintomark.org/)=0A= // Martin Bialasinki=0A= //=0A= // script.aculo.us is freely distributable under the terms of an = MIT-style license.=0A= // For details, see the script.aculo.us web site: http://script.aculo.us/=0A= =0A= // converts rgb() and #xxx to #xxxxxx format,=0A= // returns self (or first argument) if not convertable=0A= String.prototype.parseColor =3D function() {=0A= var color =3D '#';=0A= if (this.slice(0,4) =3D=3D 'rgb(') {=0A= var cols =3D this.slice(4,this.length-1).split(',');=0A= var i=3D0; do { color +=3D parseInt(cols[i]).toColorPart() } while = (++i<3);=0A= } else {=0A= if (this.slice(0,1) =3D=3D '#') {=0A= if (this.length=3D=3D4) for(var i=3D1;i<4;i++) color +=3D = (this.charAt(i) + this.charAt(i)).toLowerCase();=0A= if (this.length=3D=3D7) color =3D this.toLowerCase();=0A= }=0A= }=0A= return (color.length=3D=3D7 ? color : (arguments[0] || this));=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.collectTextNodes =3D function(element) {=0A= return $A($(element).childNodes).collect( function(node) {=0A= return (node.nodeType=3D=3D3 ? node.nodeValue :=0A= (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));=0A= }).flatten().join('');=0A= };=0A= =0A= Element.collectTextNodesIgnoreClass =3D function(element, className) {=0A= return $A($(element).childNodes).collect( function(node) {=0A= return (node.nodeType=3D=3D3 ? node.nodeValue :=0A= ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?=0A= Element.collectTextNodesIgnoreClass(node, className) : ''));=0A= }).flatten().join('');=0A= };=0A= =0A= Element.setContentZoom =3D function(element, percent) {=0A= element =3D $(element);=0A= element.setStyle({fontSize: (percent/100) + 'em'});=0A= if (Prototype.Browser.WebKit) window.scrollBy(0,0);=0A= return element;=0A= };=0A= =0A= Element.getInlineOpacity =3D function(element){=0A= return $(element).style.opacity || '';=0A= };=0A= =0A= Element.forceRerendering =3D function(element) {=0A= try {=0A= element =3D $(element);=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch(e) { }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Effect =3D {=0A= _elementDoesNotExistError: {=0A= name: 'ElementDoesNotExistError',=0A= message: 'The specified DOM element does not exist, but is required = for this effect to operate'=0A= },=0A= Transitions: {=0A= linear: Prototype.K,=0A= sinoidal: function(pos) {=0A= return (-Math.cos(pos*Math.PI)/2) + .5;=0A= },=0A= reverse: function(pos) {=0A= return 1-pos;=0A= },=0A= flicker: function(pos) {=0A= var pos =3D ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;=0A= return pos > 1 ? 1 : pos;=0A= },=0A= wobble: function(pos) {=0A= return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;=0A= },=0A= pulse: function(pos, pulses) {=0A= return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;=0A= },=0A= spring: function(pos) {=0A= return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));=0A= },=0A= none: function(pos) {=0A= return 0;=0A= },=0A= full: function(pos) {=0A= return 1;=0A= }=0A= },=0A= DefaultOptions: {=0A= duration: 1.0, // seconds=0A= fps: 100, // 100=3D assume 66fps max.=0A= sync: false, // true for combining=0A= from: 0.0,=0A= to: 1.0,=0A= delay: 0.0,=0A= queue: 'parallel'=0A= },=0A= tagifyText: function(element) {=0A= var tagifyStyle =3D 'position:relative';=0A= if (Prototype.Browser.IE) tagifyStyle +=3D ';zoom:1';=0A= =0A= element =3D $(element);=0A= $A(element.childNodes).each( function(child) {=0A= if (child.nodeType=3D=3D3) {=0A= child.nodeValue.toArray().each( function(character) {=0A= element.insertBefore(=0A= new Element('span', {style: tagifyStyle}).update(=0A= character =3D=3D ' ' ? String.fromCharCode(160) : = character),=0A= child);=0A= });=0A= Element.remove(child);=0A= }=0A= });=0A= },=0A= multiple: function(element, effect) {=0A= var elements;=0A= if (((typeof element =3D=3D 'object') ||=0A= Object.isFunction(element)) &&=0A= (element.length))=0A= elements =3D element;=0A= else=0A= elements =3D $(element).childNodes;=0A= =0A= var options =3D Object.extend({=0A= speed: 0.1,=0A= delay: 0.0=0A= }, arguments[2] || { });=0A= var masterDelay =3D options.delay;=0A= =0A= $A(elements).each( function(element, index) {=0A= new effect(element, Object.extend(options, { delay: index * = options.speed + masterDelay }));=0A= });=0A= },=0A= PAIRS: {=0A= 'slide': ['SlideDown','SlideUp'],=0A= 'blind': ['BlindDown','BlindUp'],=0A= 'appear': ['Appear','Fade']=0A= },=0A= toggle: function(element, effect, options) {=0A= element =3D $(element);=0A= effect =3D (effect || 'appear').toLowerCase();=0A= =0A= return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] = ](element, Object.extend({=0A= queue: { position:'end', scope:(element.id || 'global'), limit: 1 }=0A= }, options || {}));=0A= }=0A= };=0A= =0A= Effect.DefaultOptions.transition =3D Effect.Transitions.sinoidal;=0A= =0A= /* ------------- core effects ------------- */=0A= =0A= Effect.ScopedQueue =3D Class.create(Enumerable, {=0A= initialize: function() {=0A= this.effects =3D [];=0A= this.interval =3D null;=0A= },=0A= _each: function(iterator) {=0A= this.effects._each(iterator);=0A= },=0A= add: function(effect) {=0A= var timestamp =3D new Date().getTime();=0A= =0A= var position =3D Object.isString(effect.options.queue) ?=0A= effect.options.queue : effect.options.queue.position;=0A= =0A= switch(position) {=0A= case 'front':=0A= // move unstarted effects after this effect=0A= this.effects.findAll(function(e){ return e.state=3D=3D'idle' = }).each( function(e) {=0A= e.startOn +=3D effect.finishOn;=0A= e.finishOn +=3D effect.finishOn;=0A= });=0A= break;=0A= case 'with-last':=0A= timestamp =3D this.effects.pluck('startOn').max() || timestamp;=0A= break;=0A= case 'end':=0A= // start effect after last queued effect has finished=0A= timestamp =3D this.effects.pluck('finishOn').max() || timestamp;=0A= break;=0A= }=0A= =0A= effect.startOn +=3D timestamp;=0A= effect.finishOn +=3D timestamp;=0A= =0A= if (!effect.options.queue.limit || (this.effects.length < = effect.options.queue.limit))=0A= this.effects.push(effect);=0A= =0A= if (!this.interval)=0A= this.interval =3D setInterval(this.loop.bind(this), 15);=0A= },=0A= remove: function(effect) {=0A= this.effects =3D this.effects.reject(function(e) { return = e=3D=3Deffect });=0A= if (this.effects.length =3D=3D 0) {=0A= clearInterval(this.interval);=0A= this.interval =3D null;=0A= }=0A= },=0A= loop: function() {=0A= var timePos =3D new Date().getTime();=0A= for(var i=3D0, len=3Dthis.effects.length;i=3D this.startOn) {=0A= if (timePos >=3D this.finishOn) {=0A= this.render(1.0);=0A= this.cancel();=0A= this.event('beforeFinish');=0A= if (this.finish) this.finish();=0A= this.event('afterFinish');=0A= return;=0A= }=0A= var pos =3D (timePos - this.startOn) / this.totalTime,=0A= frame =3D (pos * this.totalFrames).round();=0A= if (frame > this.currentFrame) {=0A= this.render(pos);=0A= this.currentFrame =3D frame;=0A= }=0A= }=0A= },=0A= cancel: function() {=0A= if (!this.options.sync)=0A= Effect.Queues.get(Object.isString(this.options.queue) ?=0A= 'global' : this.options.queue.scope).remove(this);=0A= this.state =3D 'finished';=0A= },=0A= event: function(eventName) {=0A= if (this.options[eventName + 'Internal']) this.options[eventName + = 'Internal'](this);=0A= if (this.options[eventName]) this.options[eventName](this);=0A= },=0A= inspect: function() {=0A= var data =3D $H();=0A= for(property in this)=0A= if (!Object.isFunction(this[property])) data.set(property, = this[property]);=0A= return '#';=0A= }=0A= });=0A= =0A= Effect.Parallel =3D Class.create(Effect.Base, {=0A= initialize: function(effects) {=0A= this.effects =3D effects || [];=0A= this.start(arguments[1]);=0A= },=0A= update: function(position) {=0A= this.effects.invoke('render', position);=0A= },=0A= finish: function(position) {=0A= this.effects.each( function(effect) {=0A= effect.render(1.0);=0A= effect.cancel();=0A= effect.event('beforeFinish');=0A= if (effect.finish) effect.finish(position);=0A= effect.event('afterFinish');=0A= });=0A= }=0A= });=0A= =0A= Effect.Tween =3D Class.create(Effect.Base, {=0A= initialize: function(object, from, to) {=0A= object =3D Object.isString(object) ? $(object) : object;=0A= var args =3D $A(arguments), method =3D args.last(),=0A= options =3D args.length =3D=3D 5 ? args[3] : null;=0A= this.method =3D Object.isFunction(method) ? method.bind(object) :=0A= Object.isFunction(object[method]) ? object[method].bind(object) :=0A= function(value) { object[method] =3D value };=0A= this.start(Object.extend({ from: from, to: to }, options || { }));=0A= },=0A= update: function(position) {=0A= this.method(position);=0A= }=0A= });=0A= =0A= Effect.Event =3D Class.create(Effect.Base, {=0A= initialize: function() {=0A= this.start(Object.extend({ duration: 0 }, arguments[0] || { }));=0A= },=0A= update: Prototype.emptyFunction=0A= });=0A= =0A= Effect.Opacity =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= // make this work on IE on elements without 'layout'=0A= if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))=0A= this.element.setStyle({zoom: 1});=0A= var options =3D Object.extend({=0A= from: this.element.getOpacity() || 0.0,=0A= to: 1.0=0A= }, arguments[1] || { });=0A= this.start(options);=0A= },=0A= update: function(position) {=0A= this.element.setOpacity(position);=0A= }=0A= });=0A= =0A= Effect.Move =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= x: 0,=0A= y: 0,=0A= mode: 'relative'=0A= }, arguments[1] || { });=0A= this.start(options);=0A= },=0A= setup: function() {=0A= this.element.makePositioned();=0A= this.originalLeft =3D parseFloat(this.element.getStyle('left') || = '0');=0A= this.originalTop =3D parseFloat(this.element.getStyle('top') || = '0');=0A= if (this.options.mode =3D=3D 'absolute') {=0A= this.options.x =3D this.options.x - this.originalLeft;=0A= this.options.y =3D this.options.y - this.originalTop;=0A= }=0A= },=0A= update: function(position) {=0A= this.element.setStyle({=0A= left: (this.options.x * position + this.originalLeft).round() + = 'px',=0A= top: (this.options.y * position + this.originalTop).round() + = 'px'=0A= });=0A= }=0A= });=0A= =0A= // for backwards compatibility=0A= Effect.MoveBy =3D function(element, toTop, toLeft) {=0A= return new Effect.Move(element,=0A= Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));=0A= };=0A= =0A= Effect.Scale =3D Class.create(Effect.Base, {=0A= initialize: function(element, percent) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= scaleX: true,=0A= scaleY: true,=0A= scaleContent: true,=0A= scaleFromCenter: false,=0A= scaleMode: 'box', // 'box' or 'contents' or { } with = provided values=0A= scaleFrom: 100.0,=0A= scaleTo: percent=0A= }, arguments[2] || { });=0A= this.start(options);=0A= },=0A= setup: function() {=0A= this.restoreAfterFinish =3D this.options.restoreAfterFinish || false;=0A= this.elementPositioning =3D this.element.getStyle('position');=0A= =0A= this.originalStyle =3D { };=0A= ['top','left','width','height','fontSize'].each( function(k) {=0A= this.originalStyle[k] =3D this.element.style[k];=0A= }.bind(this));=0A= =0A= this.originalTop =3D this.element.offsetTop;=0A= this.originalLeft =3D this.element.offsetLeft;=0A= =0A= var fontSize =3D this.element.getStyle('font-size') || '100%';=0A= ['em','px','%','pt'].each( function(fontSizeType) {=0A= if (fontSize.indexOf(fontSizeType)>0) {=0A= this.fontSize =3D parseFloat(fontSize);=0A= this.fontSizeType =3D fontSizeType;=0A= }=0A= }.bind(this));=0A= =0A= this.factor =3D (this.options.scaleTo - this.options.scaleFrom)/100;=0A= =0A= this.dims =3D null;=0A= if (this.options.scaleMode=3D=3D'box')=0A= this.dims =3D [this.element.offsetHeight, = this.element.offsetWidth];=0A= if (/^content/.test(this.options.scaleMode))=0A= this.dims =3D [this.element.scrollHeight, = this.element.scrollWidth];=0A= if (!this.dims)=0A= this.dims =3D [this.options.scaleMode.originalHeight,=0A= this.options.scaleMode.originalWidth];=0A= },=0A= update: function(position) {=0A= var currentScale =3D (this.options.scaleFrom/100.0) + (this.factor * = position);=0A= if (this.options.scaleContent && this.fontSize)=0A= this.element.setStyle({fontSize: this.fontSize * currentScale + = this.fontSizeType });=0A= this.setDimensions(this.dims[0] * currentScale, this.dims[1] * = currentScale);=0A= },=0A= finish: function(position) {=0A= if (this.restoreAfterFinish) = this.element.setStyle(this.originalStyle);=0A= },=0A= setDimensions: function(height, width) {=0A= var d =3D { };=0A= if (this.options.scaleX) d.width =3D width.round() + 'px';=0A= if (this.options.scaleY) d.height =3D height.round() + 'px';=0A= if (this.options.scaleFromCenter) {=0A= var topd =3D (height - this.dims[0])/2;=0A= var leftd =3D (width - this.dims[1])/2;=0A= if (this.elementPositioning =3D=3D 'absolute') {=0A= if (this.options.scaleY) d.top =3D this.originalTop-topd + 'px';=0A= if (this.options.scaleX) d.left =3D this.originalLeft-leftd + = 'px';=0A= } else {=0A= if (this.options.scaleY) d.top =3D -topd + 'px';=0A= if (this.options.scaleX) d.left =3D -leftd + 'px';=0A= }=0A= }=0A= this.element.setStyle(d);=0A= }=0A= });=0A= =0A= Effect.Highlight =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({ startcolor: '#ffff99' }, = arguments[1] || { });=0A= this.start(options);=0A= },=0A= setup: function() {=0A= // Prevent executing on elements not in the layout flow=0A= if (this.element.getStyle('display')=3D=3D'none') { this.cancel(); = return; }=0A= // Disable background image during the effect=0A= this.oldStyle =3D { };=0A= if (!this.options.keepBackgroundImage) {=0A= this.oldStyle.backgroundImage =3D = this.element.getStyle('background-image');=0A= this.element.setStyle({backgroundImage: 'none'});=0A= }=0A= if (!this.options.endcolor)=0A= this.options.endcolor =3D = this.element.getStyle('background-color').parseColor('#ffffff');=0A= if (!this.options.restorecolor)=0A= this.options.restorecolor =3D = this.element.getStyle('background-color');=0A= // init color calculations=0A= this._base =3D $R(0,2).map(function(i){ return = parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));=0A= this._delta =3D $R(0,2).map(function(i){ return = parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] = }.bind(this));=0A= },=0A= update: function(position) {=0A= this.element.setStyle({backgroundColor: = $R(0,2).inject('#',function(m,v,i){=0A= return = m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); = }.bind(this)) });=0A= },=0A= finish: function() {=0A= this.element.setStyle(Object.extend(this.oldStyle, {=0A= backgroundColor: this.options.restorecolor=0A= }));=0A= }=0A= });=0A= =0A= Effect.ScrollTo =3D function(element) {=0A= var options =3D arguments[1] || { },=0A= scrollOffsets =3D document.viewport.getScrollOffsets(),=0A= elementOffsets =3D $(element).cumulativeOffset();=0A= =0A= if (options.offset) elementOffsets[1] +=3D options.offset;=0A= =0A= return new Effect.Tween(null,=0A= scrollOffsets.top,=0A= elementOffsets[1],=0A= options,=0A= function(p){ scrollTo(scrollOffsets.left, p.round()); }=0A= );=0A= };=0A= =0A= /* ------------- combination effects ------------- */=0A= =0A= Effect.Fade =3D function(element) {=0A= element =3D $(element);=0A= var oldOpacity =3D element.getInlineOpacity();=0A= var options =3D Object.extend({=0A= from: element.getOpacity() || 1.0,=0A= to: 0.0,=0A= afterFinishInternal: function(effect) {=0A= if (effect.options.to!=3D0) return;=0A= effect.element.hide().setStyle({opacity: oldOpacity});=0A= }=0A= }, arguments[1] || { });=0A= return new Effect.Opacity(element,options);=0A= };=0A= =0A= Effect.Appear =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= from: (element.getStyle('display') =3D=3D 'none' ? 0.0 : = element.getOpacity() || 0.0),=0A= to: 1.0,=0A= // force Safari to render floated elements properly=0A= afterFinishInternal: function(effect) {=0A= effect.element.forceRerendering();=0A= },=0A= beforeSetup: function(effect) {=0A= effect.element.setOpacity(effect.options.from).show();=0A= }}, arguments[1] || { });=0A= return new Effect.Opacity(element,options);=0A= };=0A= =0A= Effect.Puff =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= opacity: element.getInlineOpacity(),=0A= position: element.getStyle('position'),=0A= top: element.style.top,=0A= left: element.style.left,=0A= width: element.style.width,=0A= height: element.style.height=0A= };=0A= return new Effect.Parallel(=0A= [ new Effect.Scale(element, 200,=0A= { sync: true, scaleFromCenter: true, scaleContent: true, = restoreAfterFinish: true }),=0A= new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],=0A= Object.extend({ duration: 1.0,=0A= beforeSetupInternal: function(effect) {=0A= Position.absolutize(effect.effects[0].element);=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.effects[0].element.hide().setStyle(oldStyle); }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= Effect.BlindUp =3D function(element) {=0A= element =3D $(element);=0A= element.makeClipping();=0A= return new Effect.Scale(element, 0,=0A= Object.extend({ scaleContent: false,=0A= scaleX: false,=0A= restoreAfterFinish: true,=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping();=0A= }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= Effect.BlindDown =3D function(element) {=0A= element =3D $(element);=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, 100, Object.extend({=0A= scaleContent: false,=0A= scaleX: false,=0A= scaleFrom: 0,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makeClipping().setStyle({height: '0px'}).show();=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.undoClipping();=0A= }=0A= }, arguments[1] || { }));=0A= };=0A= =0A= Effect.SwitchOff =3D function(element) {=0A= element =3D $(element);=0A= var oldOpacity =3D element.getInlineOpacity();=0A= return new Effect.Appear(element, Object.extend({=0A= duration: 0.4,=0A= from: 0,=0A= transition: Effect.Transitions.flicker,=0A= afterFinishInternal: function(effect) {=0A= new Effect.Scale(effect.element, 1, {=0A= duration: 0.3, scaleFromCenter: true,=0A= scaleX: false, scaleContent: false, restoreAfterFinish: true,=0A= beforeSetup: function(effect) {=0A= effect.element.makePositioned().makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: = oldOpacity});=0A= }=0A= });=0A= }=0A= }, arguments[1] || { }));=0A= };=0A= =0A= Effect.DropOut =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.getStyle('top'),=0A= left: element.getStyle('left'),=0A= opacity: element.getInlineOpacity() };=0A= return new Effect.Parallel(=0A= [ new Effect.Move(element, {x: 0, y: 100, sync: true }),=0A= new Effect.Opacity(element, { sync: true, to: 0.0 }) ],=0A= Object.extend(=0A= { duration: 0.5,=0A= beforeSetup: function(effect) {=0A= effect.effects[0].element.makePositioned();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);=0A= }=0A= }, arguments[1] || { }));=0A= };=0A= =0A= Effect.Shake =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= distance: 20,=0A= duration: 0.5=0A= }, arguments[1] || {});=0A= var distance =3D parseFloat(options.distance);=0A= var split =3D parseFloat(options.duration) / 10.0;=0A= var oldStyle =3D {=0A= top: element.getStyle('top'),=0A= left: element.getStyle('left') };=0A= return new Effect.Move(element,=0A= { x: distance, y: 0, duration: split, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -distance, y: 0, duration: split, afterFinishInternal: = function(effect) {=0A= effect.element.undoPositioned().setStyle(oldStyle);=0A= }}); }}); }}); }}); }}); }});=0A= };=0A= =0A= Effect.SlideDown =3D function(element) {=0A= element =3D $(element).cleanWhitespace();=0A= // SlideDown need to have the content of the element wrapped in a = container element with fixed height!=0A= var oldInnerBottom =3D element.down().getStyle('bottom');=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, 100, Object.extend({=0A= scaleContent: false,=0A= scaleX: false,=0A= scaleFrom: window.opera ? 0 : 1,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makePositioned();=0A= effect.element.down().makePositioned();=0A= if (window.opera) effect.element.setStyle({top: ''});=0A= effect.element.makeClipping().setStyle({height: '0px'}).show();=0A= },=0A= afterUpdateInternal: function(effect) {=0A= effect.element.down().setStyle({bottom:=0A= (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.undoClipping().undoPositioned();=0A= effect.element.down().undoPositioned().setStyle({bottom: = oldInnerBottom}); }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= Effect.SlideUp =3D function(element) {=0A= element =3D $(element).cleanWhitespace();=0A= var oldInnerBottom =3D element.down().getStyle('bottom');=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, window.opera ? 0 : 1,=0A= Object.extend({ scaleContent: false,=0A= scaleX: false,=0A= scaleMode: 'box',=0A= scaleFrom: 100,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makePositioned();=0A= effect.element.down().makePositioned();=0A= if (window.opera) effect.element.setStyle({top: ''});=0A= effect.element.makeClipping().show();=0A= },=0A= afterUpdateInternal: function(effect) {=0A= effect.element.down().setStyle({bottom:=0A= (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping().undoPositioned();=0A= effect.element.down().undoPositioned().setStyle({bottom: = oldInnerBottom});=0A= }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= // Bug in opera makes the TD containing this element expand for a = instance after finish=0A= Effect.Squish =3D function(element) {=0A= return new Effect.Scale(element, window.opera ? 1 : 0, {=0A= restoreAfterFinish: true,=0A= beforeSetup: function(effect) {=0A= effect.element.makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping();=0A= }=0A= });=0A= };=0A= =0A= Effect.Grow =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= direction: 'center',=0A= moveTransition: Effect.Transitions.sinoidal,=0A= scaleTransition: Effect.Transitions.sinoidal,=0A= opacityTransition: Effect.Transitions.full=0A= }, arguments[1] || { });=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= height: element.style.height,=0A= width: element.style.width,=0A= opacity: element.getInlineOpacity() };=0A= =0A= var dims =3D element.getDimensions();=0A= var initialMoveX, initialMoveY;=0A= var moveX, moveY;=0A= =0A= switch (options.direction) {=0A= case 'top-left':=0A= initialMoveX =3D initialMoveY =3D moveX =3D moveY =3D 0;=0A= break;=0A= case 'top-right':=0A= initialMoveX =3D dims.width;=0A= initialMoveY =3D moveY =3D 0;=0A= moveX =3D -dims.width;=0A= break;=0A= case 'bottom-left':=0A= initialMoveX =3D moveX =3D 0;=0A= initialMoveY =3D dims.height;=0A= moveY =3D -dims.height;=0A= break;=0A= case 'bottom-right':=0A= initialMoveX =3D dims.width;=0A= initialMoveY =3D dims.height;=0A= moveX =3D -dims.width;=0A= moveY =3D -dims.height;=0A= break;=0A= case 'center':=0A= initialMoveX =3D dims.width / 2;=0A= initialMoveY =3D dims.height / 2;=0A= moveX =3D -dims.width / 2;=0A= moveY =3D -dims.height / 2;=0A= break;=0A= }=0A= =0A= return new Effect.Move(element, {=0A= x: initialMoveX,=0A= y: initialMoveY,=0A= duration: 0.01,=0A= beforeSetup: function(effect) {=0A= effect.element.hide().makeClipping().makePositioned();=0A= },=0A= afterFinishInternal: function(effect) {=0A= new Effect.Parallel(=0A= [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, = from: 0.0, transition: options.opacityTransition }),=0A= new Effect.Move(effect.element, { x: moveX, y: moveY, sync: = true, transition: options.moveTransition }),=0A= new Effect.Scale(effect.element, 100, {=0A= scaleMode: { originalHeight: dims.height, originalWidth: = dims.width },=0A= sync: true, scaleFrom: window.opera ? 1 : 0, transition: = options.scaleTransition, restoreAfterFinish: true})=0A= ], Object.extend({=0A= beforeSetup: function(effect) {=0A= effect.effects[0].element.setStyle({height: = '0px'}).show();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldSty= le);=0A= }=0A= }, options)=0A= );=0A= }=0A= });=0A= };=0A= =0A= Effect.Shrink =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= direction: 'center',=0A= moveTransition: Effect.Transitions.sinoidal,=0A= scaleTransition: Effect.Transitions.sinoidal,=0A= opacityTransition: Effect.Transitions.none=0A= }, arguments[1] || { });=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= height: element.style.height,=0A= width: element.style.width,=0A= opacity: element.getInlineOpacity() };=0A= =0A= var dims =3D element.getDimensions();=0A= var moveX, moveY;=0A= =0A= switch (options.direction) {=0A= case 'top-left':=0A= moveX =3D moveY =3D 0;=0A= break;=0A= case 'top-right':=0A= moveX =3D dims.width;=0A= moveY =3D 0;=0A= break;=0A= case 'bottom-left':=0A= moveX =3D 0;=0A= moveY =3D dims.height;=0A= break;=0A= case 'bottom-right':=0A= moveX =3D dims.width;=0A= moveY =3D dims.height;=0A= break;=0A= case 'center':=0A= moveX =3D dims.width / 2;=0A= moveY =3D dims.height / 2;=0A= break;=0A= }=0A= =0A= return new Effect.Parallel(=0A= [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, = transition: options.opacityTransition }),=0A= new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, = transition: options.scaleTransition, restoreAfterFinish: true}),=0A= new Effect.Move(element, { x: moveX, y: moveY, sync: true, = transition: options.moveTransition })=0A= ], Object.extend({=0A= beforeStartInternal: function(effect) {=0A= effect.effects[0].element.makePositioned().makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle= (oldStyle); }=0A= }, options)=0A= );=0A= };=0A= =0A= Effect.Pulsate =3D function(element) {=0A= element =3D $(element);=0A= var options =3D arguments[1] || { },=0A= oldOpacity =3D element.getInlineOpacity(),=0A= transition =3D options.transition || Effect.Transitions.linear,=0A= reverser =3D function(pos){=0A= return 1 - = transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);=0A= };=0A= =0A= return new Effect.Opacity(element,=0A= Object.extend(Object.extend({ duration: 2.0, from: 0,=0A= afterFinishInternal: function(effect) { = effect.element.setStyle({opacity: oldOpacity}); }=0A= }, options), {transition: reverser}));=0A= };=0A= =0A= Effect.Fold =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= width: element.style.width,=0A= height: element.style.height };=0A= element.makeClipping();=0A= return new Effect.Scale(element, 5, Object.extend({=0A= scaleContent: false,=0A= scaleX: false,=0A= afterFinishInternal: function(effect) {=0A= new Effect.Scale(element, 1, {=0A= scaleContent: false,=0A= scaleY: false,=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping().setStyle(oldStyle);=0A= } });=0A= }}, arguments[1] || { }));=0A= };=0A= =0A= Effect.Morph =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= style: { }=0A= }, arguments[1] || { });=0A= =0A= if (!Object.isString(options.style)) this.style =3D = $H(options.style);=0A= else {=0A= if (options.style.include(':'))=0A= this.style =3D options.style.parseStyle();=0A= else {=0A= this.element.addClassName(options.style);=0A= this.style =3D $H(this.element.getStyles());=0A= this.element.removeClassName(options.style);=0A= var css =3D this.element.getStyles();=0A= this.style =3D this.style.reject(function(style) {=0A= return style.value =3D=3D css[style.key];=0A= });=0A= options.afterFinishInternal =3D function(effect) {=0A= effect.element.addClassName(effect.options.style);=0A= effect.transforms.each(function(transform) {=0A= effect.element.style[transform.style] =3D '';=0A= });=0A= };=0A= }=0A= }=0A= this.start(options);=0A= },=0A= =0A= setup: function(){=0A= function parseColor(color){=0A= if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) = color =3D '#ffffff';=0A= color =3D color.parseColor();=0A= return $R(0,2).map(function(i){=0A= return parseInt( color.slice(i*2+1,i*2+3), 16 );=0A= });=0A= }=0A= this.transforms =3D this.style.map(function(pair){=0A= var property =3D pair[0], value =3D pair[1], unit =3D null;=0A= =0A= if (value.parseColor('#zzzzzz') !=3D '#zzzzzz') {=0A= value =3D value.parseColor();=0A= unit =3D 'color';=0A= } else if (property =3D=3D 'opacity') {=0A= value =3D parseFloat(value);=0A= if (Prototype.Browser.IE && = (!this.element.currentStyle.hasLayout))=0A= this.element.setStyle({zoom: 1});=0A= } else if (Element.CSS_LENGTH.test(value)) {=0A= var components =3D value.match(/^([\+\-]?[0-9\.]+)(.*)$/);=0A= value =3D parseFloat(components[1]);=0A= unit =3D (components.length =3D=3D 3) ? components[2] : null;=0A= }=0A= =0A= var originalValue =3D this.element.getStyle(property);=0A= return {=0A= style: property.camelize(),=0A= originalValue: unit=3D=3D'color' ? parseColor(originalValue) : = parseFloat(originalValue || 0),=0A= targetValue: unit=3D=3D'color' ? parseColor(value) : value,=0A= unit: unit=0A= };=0A= }.bind(this)).reject(function(transform){=0A= return (=0A= (transform.originalValue =3D=3D transform.targetValue) ||=0A= (=0A= transform.unit !=3D 'color' &&=0A= (isNaN(transform.originalValue) || = isNaN(transform.targetValue))=0A= )=0A= );=0A= });=0A= },=0A= update: function(position) {=0A= var style =3D { }, transform, i =3D this.transforms.length;=0A= while(i--)=0A= style[(transform =3D this.transforms[i]).style] =3D=0A= transform.unit=3D=3D'color' ? '#'+=0A= (Math.round(transform.originalValue[0]+=0A= = (transform.targetValue[0]-transform.originalValue[0])*position)).toColorP= art() +=0A= (Math.round(transform.originalValue[1]+=0A= = (transform.targetValue[1]-transform.originalValue[1])*position)).toColorP= art() +=0A= (Math.round(transform.originalValue[2]+=0A= = (transform.targetValue[2]-transform.originalValue[2])*position)).toColorP= art() :=0A= (transform.originalValue +=0A= (transform.targetValue - transform.originalValue) * = position).toFixed(3) +=0A= (transform.unit =3D=3D=3D null ? '' : transform.unit);=0A= this.element.setStyle(style, true);=0A= }=0A= });=0A= =0A= Effect.Transform =3D Class.create({=0A= initialize: function(tracks){=0A= this.tracks =3D [];=0A= this.options =3D arguments[1] || { };=0A= this.addTracks(tracks);=0A= },=0A= addTracks: function(tracks){=0A= tracks.each(function(track){=0A= track =3D $H(track);=0A= var data =3D track.values().first();=0A= this.tracks.push($H({=0A= ids: track.keys().first(),=0A= effect: Effect.Morph,=0A= options: { style: data }=0A= }));=0A= }.bind(this));=0A= return this;=0A= },=0A= play: function(){=0A= return new Effect.Parallel(=0A= this.tracks.map(function(track){=0A= var ids =3D track.get('ids'), effect =3D track.get('effect'), = options =3D track.get('options');=0A= var elements =3D [$(ids) || $$(ids)].flatten();=0A= return elements.map(function(e){ return new effect(e, = Object.extend({ sync:true }, options)) });=0A= }).flatten(),=0A= this.options=0A= );=0A= }=0A= });=0A= =0A= Element.CSS_PROPERTIES =3D $w(=0A= 'backgroundColor backgroundPosition borderBottomColor = borderBottomStyle ' +=0A= 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +=0A= 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +=0A= 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +=0A= 'fontSize fontWeight height left letterSpacing lineHeight ' +=0A= 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight = '+=0A= 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +=0A= 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +=0A= 'right textIndent top width wordSpacing zIndex');=0A= =0A= Element.CSS_LENGTH =3D = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;=0A= =0A= String.__parseStyleElement =3D document.createElement('div');=0A= String.prototype.parseStyle =3D function(){=0A= var style, styleRules =3D $H();=0A= if (Prototype.Browser.WebKit)=0A= style =3D new Element('div',{style:this}).style;=0A= else {=0A= String.__parseStyleElement.innerHTML =3D '
');=0A= this.iefix =3D $(this.update.id+'_iefix');=0A= }=0A= if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);=0A= },=0A= =0A= fixIEOverlapping: function() {=0A= Position.clone(this.update, this.iefix, = {setTop:(!this.update.style.height)});=0A= this.iefix.style.zIndex =3D 1;=0A= this.update.style.zIndex =3D 2;=0A= Element.show(this.iefix);=0A= },=0A= =0A= hide: function() {=0A= this.stopIndicator();=0A= if(Element.getStyle(this.update, 'display')!=3D'none') = this.options.onHide(this.element, this.update);=0A= if(this.iefix) Element.hide(this.iefix);=0A= },=0A= =0A= startIndicator: function() {=0A= if(this.options.indicator) Element.show(this.options.indicator);=0A= },=0A= =0A= stopIndicator: function() {=0A= if(this.options.indicator) Element.hide(this.options.indicator);=0A= },=0A= =0A= onKeyPress: function(event) {=0A= if(this.active)=0A= switch(event.keyCode) {=0A= case Event.KEY_TAB:=0A= case Event.KEY_RETURN:=0A= this.selectEntry();=0A= Event.stop(event);=0A= case Event.KEY_ESC:=0A= this.hide();=0A= this.active =3D false;=0A= Event.stop(event);=0A= return;=0A= case Event.KEY_LEFT:=0A= case Event.KEY_RIGHT:=0A= return;=0A= case Event.KEY_UP:=0A= this.markPrevious();=0A= this.render();=0A= Event.stop(event);=0A= return;=0A= case Event.KEY_DOWN:=0A= this.markNext();=0A= this.render();=0A= Event.stop(event);=0A= return;=0A= }=0A= else=0A= if(event.keyCode=3D=3DEvent.KEY_TAB || = event.keyCode=3D=3DEvent.KEY_RETURN ||=0A= (Prototype.Browser.WebKit > 0 && event.keyCode =3D=3D 0)) = return;=0A= =0A= this.changed =3D true;=0A= this.hasFocus =3D true;=0A= =0A= if(this.observer) clearTimeout(this.observer);=0A= this.observer =3D=0A= setTimeout(this.onObserverEvent.bind(this), = this.options.frequency*1000);=0A= },=0A= =0A= activate: function() {=0A= this.changed =3D false;=0A= this.hasFocus =3D true;=0A= this.getUpdatedChoices();=0A= },=0A= =0A= onHover: function(event) {=0A= var element =3D Event.findElement(event, 'LI');=0A= if(this.index !=3D element.autocompleteIndex)=0A= {=0A= this.index =3D element.autocompleteIndex;=0A= this.render();=0A= }=0A= Event.stop(event);=0A= },=0A= =0A= onClick: function(event) {=0A= var element =3D Event.findElement(event, 'LI');=0A= this.index =3D element.autocompleteIndex;=0A= this.selectEntry();=0A= this.hide();=0A= },=0A= =0A= onBlur: function(event) {=0A= // needed to make click events working=0A= setTimeout(this.hide.bind(this), 250);=0A= this.hasFocus =3D false;=0A= this.active =3D false;=0A= },=0A= =0A= render: function() {=0A= if(this.entryCount > 0) {=0A= for (var i =3D 0; i < this.entryCount; i++)=0A= this.index=3D=3Di ?=0A= Element.addClassName(this.getEntry(i),"selected") :=0A= Element.removeClassName(this.getEntry(i),"selected");=0A= if(this.hasFocus) {=0A= this.show();=0A= this.active =3D true;=0A= }=0A= } else {=0A= this.active =3D false;=0A= this.hide();=0A= }=0A= },=0A= =0A= markPrevious: function() {=0A= if(this.index > 0) this.index--;=0A= else this.index =3D this.entryCount-1;=0A= this.getEntry(this.index).scrollIntoView(true);=0A= },=0A= =0A= markNext: function() {=0A= if(this.index < this.entryCount-1) this.index++;=0A= else this.index =3D 0;=0A= this.getEntry(this.index).scrollIntoView(false);=0A= },=0A= =0A= getEntry: function(index) {=0A= return this.update.firstChild.childNodes[index];=0A= },=0A= =0A= getCurrentEntry: function() {=0A= return this.getEntry(this.index);=0A= },=0A= =0A= selectEntry: function() {=0A= this.active =3D false;=0A= this.updateElement(this.getCurrentEntry());=0A= },=0A= =0A= updateElement: function(selectedElement) {=0A= if (this.options.updateElement) {=0A= this.options.updateElement(selectedElement);=0A= return;=0A= }=0A= var value =3D '';=0A= if (this.options.select) {=0A= var nodes =3D $(selectedElement).select('.' + this.options.select) = || [];=0A= if(nodes.length>0) value =3D Element.collectTextNodes(nodes[0], = this.options.select);=0A= } else=0A= value =3D Element.collectTextNodesIgnoreClass(selectedElement, = 'informal');=0A= =0A= var bounds =3D this.getTokenBounds();=0A= if (bounds[0] !=3D -1) {=0A= var newValue =3D this.element.value.substr(0, bounds[0]);=0A= var whitespace =3D = this.element.value.substr(bounds[0]).match(/^\s+/);=0A= if (whitespace)=0A= newValue +=3D whitespace[0];=0A= this.element.value =3D newValue + value + = this.element.value.substr(bounds[1]);=0A= } else {=0A= this.element.value =3D value;=0A= }=0A= this.oldElementValue =3D this.element.value;=0A= this.element.focus();=0A= =0A= if (this.options.afterUpdateElement)=0A= this.options.afterUpdateElement(this.element, selectedElement);=0A= },=0A= =0A= updateChoices: function(choices) {=0A= if(!this.changed && this.hasFocus) {=0A= this.update.innerHTML =3D choices;=0A= Element.cleanWhitespace(this.update);=0A= Element.cleanWhitespace(this.update.down());=0A= =0A= if(this.update.firstChild && this.update.down().childNodes) {=0A= this.entryCount =3D=0A= this.update.down().childNodes.length;=0A= for (var i =3D 0; i < this.entryCount; i++) {=0A= var entry =3D this.getEntry(i);=0A= entry.autocompleteIndex =3D i;=0A= this.addObservers(entry);=0A= }=0A= } else {=0A= this.entryCount =3D 0;=0A= }=0A= =0A= this.stopIndicator();=0A= this.index =3D 0;=0A= =0A= if(this.entryCount=3D=3D1 && this.options.autoSelect) {=0A= this.selectEntry();=0A= this.hide();=0A= } else {=0A= this.render();=0A= }=0A= }=0A= },=0A= =0A= addObservers: function(element) {=0A= Event.observe(element, "mouseover", = this.onHover.bindAsEventListener(this));=0A= Event.observe(element, "click", = this.onClick.bindAsEventListener(this));=0A= },=0A= =0A= onObserverEvent: function() {=0A= this.changed =3D false;=0A= this.tokenBounds =3D null;=0A= if(this.getToken().length>=3Dthis.options.minChars) {=0A= this.getUpdatedChoices();=0A= } else {=0A= this.active =3D false;=0A= this.hide();=0A= }=0A= this.oldElementValue =3D this.element.value;=0A= },=0A= =0A= getToken: function() {=0A= var bounds =3D this.getTokenBounds();=0A= return this.element.value.substring(bounds[0], bounds[1]).strip();=0A= },=0A= =0A= getTokenBounds: function() {=0A= if (null !=3D this.tokenBounds) return this.tokenBounds;=0A= var value =3D this.element.value;=0A= if (value.strip().empty()) return [-1, 0];=0A= var diff =3D arguments.callee.getFirstDifferencePos(value, = this.oldElementValue);=0A= var offset =3D (diff =3D=3D this.oldElementValue.length ? 1 : 0);=0A= var prevTokenPos =3D -1, nextTokenPos =3D value.length;=0A= var tp;=0A= for (var index =3D 0, l =3D this.options.tokens.length; index < l; = ++index) {=0A= tp =3D value.lastIndexOf(this.options.tokens[index], diff + offset = - 1);=0A= if (tp > prevTokenPos) prevTokenPos =3D tp;=0A= tp =3D value.indexOf(this.options.tokens[index], diff + offset);=0A= if (-1 !=3D tp && tp < nextTokenPos) nextTokenPos =3D tp;=0A= }=0A= return (this.tokenBounds =3D [prevTokenPos + 1, nextTokenPos]);=0A= }=0A= });=0A= =0A= Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos =3D = function(newS, oldS) {=0A= var boundary =3D Math.min(newS.length, oldS.length);=0A= for (var index =3D 0; index < boundary; ++index)=0A= if (newS[index] !=3D oldS[index])=0A= return index;=0A= return boundary;=0A= };=0A= =0A= Ajax.Autocompleter =3D Class.create(Autocompleter.Base, {=0A= initialize: function(element, update, url, options) {=0A= this.baseInitialize(element, update, options);=0A= this.options.asynchronous =3D true;=0A= this.options.onComplete =3D this.onComplete.bind(this);=0A= this.options.defaultParams =3D this.options.parameters || null;=0A= this.url =3D url;=0A= },=0A= =0A= getUpdatedChoices: function() {=0A= this.startIndicator();=0A= =0A= var entry =3D encodeURIComponent(this.options.paramName) + '=3D' +=0A= encodeURIComponent(this.getToken());=0A= =0A= this.options.parameters =3D this.options.callback ?=0A= this.options.callback(this.element, entry) : entry;=0A= =0A= if(this.options.defaultParams)=0A= this.options.parameters +=3D '&' + this.options.defaultParams;=0A= =0A= new Ajax.Request(this.url, this.options);=0A= },=0A= =0A= onComplete: function(request) {=0A= this.updateChoices(request.responseText);=0A= }=0A= });=0A= =0A= // The local array autocompleter. Used when you'd prefer to=0A= // inject an array of autocompletion options into the page, rather=0A= // than sending out Ajax queries, which can be quite slow sometimes.=0A= //=0A= // The constructor takes four parameters. The first two are, as usual,=0A= // the id of the monitored textbox, and id of the autocompletion menu.=0A= // The third is the array you want to autocomplete from, and the fourth=0A= // is the options block.=0A= //=0A= // Extra local autocompletion options:=0A= // - choices - How many autocompletion choices to offer=0A= //=0A= // - partialSearch - If false, the autocompleter will match entered=0A= // text only at the beginning of strings in the=0A= // autocomplete array. Defaults to true, which will=0A= // match text at the beginning of any *word* in the=0A= // strings in the autocomplete array. If you want to=0A= // search anywhere in the string, additionally set=0A= // the option fullSearch to true (default: off).=0A= //=0A= // - fullSsearch - Search anywhere in autocomplete array strings.=0A= //=0A= // - partialChars - How many characters to enter before triggering=0A= // a partial match (unlike minChars, which defines=0A= // how many characters are required to do any match=0A= // at all). Defaults to 2.=0A= //=0A= // - ignoreCase - Whether to ignore case when autocompleting.=0A= // Defaults to true.=0A= //=0A= // It's possible to pass in a custom function as the 'selector'=0A= // option, if you prefer to write your own autocompletion logic.=0A= // In that case, the other options above will not apply unless=0A= // you support them.=0A= =0A= Autocompleter.Local =3D Class.create(Autocompleter.Base, {=0A= initialize: function(element, update, array, options) {=0A= this.baseInitialize(element, update, options);=0A= this.options.array =3D array;=0A= },=0A= =0A= getUpdatedChoices: function() {=0A= this.updateChoices(this.options.selector(this));=0A= },=0A= =0A= setOptions: function(options) {=0A= this.options =3D Object.extend({=0A= choices: 10,=0A= partialSearch: true,=0A= partialChars: 2,=0A= ignoreCase: true,=0A= fullSearch: false,=0A= selector: function(instance) {=0A= var ret =3D []; // Beginning matches=0A= var partial =3D []; // Inside matches=0A= var entry =3D instance.getToken();=0A= var count =3D 0;=0A= =0A= for (var i =3D 0; i < instance.options.array.length &&=0A= ret.length < instance.options.choices ; i++) {=0A= =0A= var elem =3D instance.options.array[i];=0A= var foundPos =3D instance.options.ignoreCase ?=0A= elem.toLowerCase().indexOf(entry.toLowerCase()) :=0A= elem.indexOf(entry);=0A= =0A= while (foundPos !=3D -1) {=0A= if (foundPos =3D=3D 0 && elem.length !=3D entry.length) {=0A= ret.push("
  • " + elem.substr(0, entry.length) + = "" +=0A= elem.substr(entry.length) + "
  • ");=0A= break;=0A= } else if (entry.length >=3D instance.options.partialChars &&=0A= instance.options.partialSearch && foundPos !=3D -1) {=0A= if (instance.options.fullSearch || = /\s/.test(elem.substr(foundPos-1,1))) {=0A= partial.push("
  • " + elem.substr(0, foundPos) + = "" +=0A= elem.substr(foundPos, entry.length) + "" + = elem.substr(=0A= foundPos + entry.length) + "
  • ");=0A= break;=0A= }=0A= }=0A= =0A= foundPos =3D instance.options.ignoreCase ?=0A= elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + = 1) :=0A= elem.indexOf(entry, foundPos + 1);=0A= =0A= }=0A= }=0A= if (partial.length)=0A= ret =3D ret.concat(partial.slice(0, instance.options.choices - = ret.length));=0A= return "
      " + ret.join('') + "
    ";=0A= }=0A= }, options || { });=0A= }=0A= });=0A= =0A= // AJAX in-place editor and collection editor=0A= // Full rewrite by Christophe Porteneuve (April = 2007).=0A= =0A= // Use this if you notice weird scrolling problems on some browsers,=0A= // the DOM might be a bit confused when this gets called so do this=0A= // waits 1 ms (with setTimeout) until it does the activation=0A= Field.scrollFreeActivate =3D function(field) {=0A= setTimeout(function() {=0A= Field.activate(field);=0A= }, 1);=0A= };=0A= =0A= Ajax.InPlaceEditor =3D Class.create({=0A= initialize: function(element, url, options) {=0A= this.url =3D url;=0A= this.element =3D element =3D $(element);=0A= this.prepareOptions();=0A= this._controls =3D { };=0A= arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION = LAYER!!!=0A= Object.extend(this.options, options || { });=0A= if (!this.options.formId && this.element.id) {=0A= this.options.formId =3D this.element.id + '-inplaceeditor';=0A= if ($(this.options.formId))=0A= this.options.formId =3D '';=0A= }=0A= if (this.options.externalControl)=0A= this.options.externalControl =3D $(this.options.externalControl);=0A= if (!this.options.externalControl)=0A= this.options.externalControlOnly =3D false;=0A= this._originalBackground =3D = this.element.getStyle('background-color') || 'transparent';=0A= this.element.title =3D this.options.clickToEditText;=0A= this._boundCancelHandler =3D this.handleFormCancellation.bind(this);=0A= this._boundComplete =3D (this.options.onComplete || = Prototype.emptyFunction).bind(this);=0A= this._boundFailureHandler =3D this.handleAJAXFailure.bind(this);=0A= this._boundSubmitHandler =3D this.handleFormSubmission.bind(this);=0A= this._boundWrapperHandler =3D this.wrapUp.bind(this);=0A= this.registerListeners();=0A= },=0A= checkForEscapeOrReturn: function(e) {=0A= if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;=0A= if (Event.KEY_ESC =3D=3D e.keyCode)=0A= this.handleFormCancellation(e);=0A= else if (Event.KEY_RETURN =3D=3D e.keyCode)=0A= this.handleFormSubmission(e);=0A= },=0A= createControl: function(mode, handler, extraClasses) {=0A= var control =3D this.options[mode + 'Control'];=0A= var text =3D this.options[mode + 'Text'];=0A= if ('button' =3D=3D control) {=0A= var btn =3D document.createElement('input');=0A= btn.type =3D 'submit';=0A= btn.value =3D text;=0A= btn.className =3D 'editor_' + mode + '_button';=0A= if ('cancel' =3D=3D mode)=0A= btn.onclick =3D this._boundCancelHandler;=0A= this._form.appendChild(btn);=0A= this._controls[mode] =3D btn;=0A= } else if ('link' =3D=3D control) {=0A= var link =3D document.createElement('a');=0A= link.href =3D '#';=0A= link.appendChild(document.createTextNode(text));=0A= link.onclick =3D 'cancel' =3D=3D mode ? this._boundCancelHandler : = this._boundSubmitHandler;=0A= link.className =3D 'editor_' + mode + '_link';=0A= if (extraClasses)=0A= link.className +=3D ' ' + extraClasses;=0A= this._form.appendChild(link);=0A= this._controls[mode] =3D link;=0A= }=0A= },=0A= createEditField: function() {=0A= var text =3D (this.options.loadTextURL ? this.options.loadingText : = this.getText());=0A= var fld;=0A= if (1 >=3D this.options.rows && !/\r|\n/.test(this.getText())) {=0A= fld =3D document.createElement('input');=0A= fld.type =3D 'text';=0A= var size =3D this.options.size || this.options.cols || 0;=0A= if (0 < size) fld.size =3D size;=0A= } else {=0A= fld =3D document.createElement('textarea');=0A= fld.rows =3D (1 >=3D this.options.rows ? this.options.autoRows : = this.options.rows);=0A= fld.cols =3D this.options.cols || 40;=0A= }=0A= fld.name =3D this.options.paramName;=0A= fld.value =3D text; // No HTML breaks conversion anymore=0A= fld.className =3D 'editor_field';=0A= if (this.options.submitOnBlur)=0A= fld.onblur =3D this._boundSubmitHandler;=0A= this._controls.editor =3D fld;=0A= if (this.options.loadTextURL)=0A= this.loadExternalText();=0A= this._form.appendChild(this._controls.editor);=0A= },=0A= createForm: function() {=0A= var ipe =3D this;=0A= function addText(mode, condition) {=0A= var text =3D ipe.options['text' + mode + 'Controls'];=0A= if (!text || condition =3D=3D=3D false) return;=0A= ipe._form.appendChild(document.createTextNode(text));=0A= };=0A= this._form =3D $(document.createElement('form'));=0A= this._form.id =3D this.options.formId;=0A= this._form.addClassName(this.options.formClassName);=0A= this._form.onsubmit =3D this._boundSubmitHandler;=0A= this.createEditField();=0A= if ('textarea' =3D=3D this._controls.editor.tagName.toLowerCase())=0A= this._form.appendChild(document.createElement('br'));=0A= if (this.options.onFormCustomization)=0A= this.options.onFormCustomization(this, this._form);=0A= addText('Before', this.options.okControl || = this.options.cancelControl);=0A= this.createControl('ok', this._boundSubmitHandler);=0A= addText('Between', this.options.okControl && = this.options.cancelControl);=0A= this.createControl('cancel', this._boundCancelHandler, = 'editor_cancel');=0A= addText('After', this.options.okControl || = this.options.cancelControl);=0A= },=0A= destroy: function() {=0A= if (this._oldInnerHTML)=0A= this.element.innerHTML =3D this._oldInnerHTML;=0A= this.leaveEditMode();=0A= this.unregisterListeners();=0A= },=0A= enterEditMode: function(e) {=0A= if (this._saving || this._editing) return;=0A= this._editing =3D true;=0A= this.triggerCallback('onEnterEditMode');=0A= if (this.options.externalControl)=0A= this.options.externalControl.hide();=0A= this.element.hide();=0A= this.createForm();=0A= this.element.parentNode.insertBefore(this._form, this.element);=0A= if (!this.options.loadTextURL)=0A= this.postProcessEditField();=0A= if (e) Event.stop(e);=0A= },=0A= enterHover: function(e) {=0A= if (this.options.hoverClassName)=0A= this.element.addClassName(this.options.hoverClassName);=0A= if (this._saving) return;=0A= this.triggerCallback('onEnterHover');=0A= },=0A= getText: function() {=0A= return this.element.innerHTML.unescapeHTML();=0A= },=0A= handleAJAXFailure: function(transport) {=0A= this.triggerCallback('onFailure', transport);=0A= if (this._oldInnerHTML) {=0A= this.element.innerHTML =3D this._oldInnerHTML;=0A= this._oldInnerHTML =3D null;=0A= }=0A= },=0A= handleFormCancellation: function(e) {=0A= this.wrapUp();=0A= if (e) Event.stop(e);=0A= },=0A= handleFormSubmission: function(e) {=0A= var form =3D this._form;=0A= var value =3D $F(this._controls.editor);=0A= this.prepareSubmission();=0A= var params =3D this.options.callback(form, value) || '';=0A= if (Object.isString(params))=0A= params =3D params.toQueryParams();=0A= params.editorId =3D this.element.id;=0A= if (this.options.htmlResponse) {=0A= var options =3D Object.extend({ evalScripts: true }, = this.options.ajaxOptions);=0A= Object.extend(options, {=0A= parameters: params,=0A= onComplete: this._boundWrapperHandler,=0A= onFailure: this._boundFailureHandler=0A= });=0A= new Ajax.Updater({ success: this.element }, this.url, options);=0A= } else {=0A= var options =3D Object.extend({ method: 'get' }, = this.options.ajaxOptions);=0A= Object.extend(options, {=0A= parameters: params,=0A= onComplete: this._boundWrapperHandler,=0A= onFailure: this._boundFailureHandler=0A= });=0A= new Ajax.Request(this.url, options);=0A= }=0A= if (e) Event.stop(e);=0A= },=0A= leaveEditMode: function() {=0A= this.element.removeClassName(this.options.savingClassName);=0A= this.removeForm();=0A= this.leaveHover();=0A= this.element.style.backgroundColor =3D this._originalBackground;=0A= this.element.show();=0A= if (this.options.externalControl)=0A= this.options.externalControl.show();=0A= this._saving =3D false;=0A= this._editing =3D false;=0A= this._oldInnerHTML =3D null;=0A= this.triggerCallback('onLeaveEditMode');=0A= },=0A= leaveHover: function(e) {=0A= if (this.options.hoverClassName)=0A= this.element.removeClassName(this.options.hoverClassName);=0A= if (this._saving) return;=0A= this.triggerCallback('onLeaveHover');=0A= },=0A= loadExternalText: function() {=0A= this._form.addClassName(this.options.loadingClassName);=0A= this._controls.editor.disabled =3D true;=0A= var options =3D Object.extend({ method: 'get' }, = this.options.ajaxOptions);=0A= Object.extend(options, {=0A= parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A= onComplete: Prototype.emptyFunction,=0A= onSuccess: function(transport) {=0A= this._form.removeClassName(this.options.loadingClassName);=0A= var text =3D transport.responseText;=0A= if (this.options.stripLoadedTextTags)=0A= text =3D text.stripTags();=0A= this._controls.editor.value =3D text;=0A= this._controls.editor.disabled =3D false;=0A= this.postProcessEditField();=0A= }.bind(this),=0A= onFailure: this._boundFailureHandler=0A= });=0A= new Ajax.Request(this.options.loadTextURL, options);=0A= },=0A= postProcessEditField: function() {=0A= var fpc =3D this.options.fieldPostCreation;=0A= if (fpc)=0A= $(this._controls.editor)['focus' =3D=3D fpc ? 'focus' : = 'activate']();=0A= },=0A= prepareOptions: function() {=0A= this.options =3D Object.clone(Ajax.InPlaceEditor.DefaultOptions);=0A= Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);=0A= [this._extraDefaultOptions].flatten().compact().each(function(defs) {=0A= Object.extend(this.options, defs);=0A= }.bind(this));=0A= },=0A= prepareSubmission: function() {=0A= this._saving =3D true;=0A= this.removeForm();=0A= this.leaveHover();=0A= this.showSaving();=0A= },=0A= registerListeners: function() {=0A= this._listeners =3D { };=0A= var listener;=0A= $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {=0A= listener =3D this[pair.value].bind(this);=0A= this._listeners[pair.key] =3D listener;=0A= if (!this.options.externalControlOnly)=0A= this.element.observe(pair.key, listener);=0A= if (this.options.externalControl)=0A= this.options.externalControl.observe(pair.key, listener);=0A= }.bind(this));=0A= },=0A= removeForm: function() {=0A= if (!this._form) return;=0A= this._form.remove();=0A= this._form =3D null;=0A= this._controls =3D { };=0A= },=0A= showSaving: function() {=0A= this._oldInnerHTML =3D this.element.innerHTML;=0A= this.element.innerHTML =3D this.options.savingText;=0A= this.element.addClassName(this.options.savingClassName);=0A= this.element.style.backgroundColor =3D this._originalBackground;=0A= this.element.show();=0A= },=0A= triggerCallback: function(cbName, arg) {=0A= if ('function' =3D=3D typeof this.options[cbName]) {=0A= this.options[cbName](this, arg);=0A= }=0A= },=0A= unregisterListeners: function() {=0A= $H(this._listeners).each(function(pair) {=0A= if (!this.options.externalControlOnly)=0A= this.element.stopObserving(pair.key, pair.value);=0A= if (this.options.externalControl)=0A= this.options.externalControl.stopObserving(pair.key, pair.value);=0A= }.bind(this));=0A= },=0A= wrapUp: function(transport) {=0A= this.leaveEditMode();=0A= // Can't use triggerCallback due to backward compatibility: requires=0A= // binding + direct element=0A= this._boundComplete(transport, this.element);=0A= }=0A= });=0A= =0A= Object.extend(Ajax.InPlaceEditor.prototype, {=0A= dispose: Ajax.InPlaceEditor.prototype.destroy=0A= });=0A= =0A= Ajax.InPlaceCollectionEditor =3D Class.create(Ajax.InPlaceEditor, {=0A= initialize: function($super, element, url, options) {=0A= this._extraDefaultOptions =3D = Ajax.InPlaceCollectionEditor.DefaultOptions;=0A= $super(element, url, options);=0A= },=0A= =0A= createEditField: function() {=0A= var list =3D document.createElement('select');=0A= list.name =3D this.options.paramName;=0A= list.size =3D 1;=0A= this._controls.editor =3D list;=0A= this._collection =3D this.options.collection || [];=0A= if (this.options.loadCollectionURL)=0A= this.loadCollection();=0A= else=0A= this.checkForExternalText();=0A= this._form.appendChild(this._controls.editor);=0A= },=0A= =0A= loadCollection: function() {=0A= this._form.addClassName(this.options.loadingClassName);=0A= this.showLoadingText(this.options.loadingCollectionText);=0A= var options =3D Object.extend({ method: 'get' }, = this.options.ajaxOptions);=0A= Object.extend(options, {=0A= parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A= onComplete: Prototype.emptyFunction,=0A= onSuccess: function(transport) {=0A= var js =3D transport.responseText.strip();=0A= if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check=0A= throw('Server returned an invalid collection representation.');=0A= this._collection =3D eval(js);=0A= this.checkForExternalText();=0A= }.bind(this),=0A= onFailure: this.onFailure=0A= });=0A= new Ajax.Request(this.options.loadCollectionURL, options);=0A= },=0A= =0A= showLoadingText: function(text) {=0A= this._controls.editor.disabled =3D true;=0A= var tempOption =3D this._controls.editor.firstChild;=0A= if (!tempOption) {=0A= tempOption =3D document.createElement('option');=0A= tempOption.value =3D '';=0A= this._controls.editor.appendChild(tempOption);=0A= tempOption.selected =3D true;=0A= }=0A= tempOption.update((text || '').stripScripts().stripTags());=0A= },=0A= =0A= checkForExternalText: function() {=0A= this._text =3D this.getText();=0A= if (this.options.loadTextURL)=0A= this.loadExternalText();=0A= else=0A= this.buildOptionList();=0A= },=0A= =0A= loadExternalText: function() {=0A= this.showLoadingText(this.options.loadingText);=0A= var options =3D Object.extend({ method: 'get' }, = this.options.ajaxOptions);=0A= Object.extend(options, {=0A= parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A= onComplete: Prototype.emptyFunction,=0A= onSuccess: function(transport) {=0A= this._text =3D transport.responseText.strip();=0A= this.buildOptionList();=0A= }.bind(this),=0A= onFailure: this.onFailure=0A= });=0A= new Ajax.Request(this.options.loadTextURL, options);=0A= },=0A= =0A= buildOptionList: function() {=0A= this._form.removeClassName(this.options.loadingClassName);=0A= this._collection =3D this._collection.map(function(entry) {=0A= return 2 =3D=3D=3D entry.length ? entry : [entry, entry].flatten();=0A= });=0A= var marker =3D ('value' in this.options) ? this.options.value : = this._text;=0A= var textFound =3D this._collection.any(function(entry) {=0A= return entry[0] =3D=3D marker;=0A= }.bind(this));=0A= this._controls.editor.update('');=0A= var option;=0A= this._collection.each(function(entry, index) {=0A= option =3D document.createElement('option');=0A= option.value =3D entry[0];=0A= option.selected =3D textFound ? entry[0] =3D=3D marker : 0 =3D=3D = index;=0A= option.appendChild(document.createTextNode(entry[1]));=0A= this._controls.editor.appendChild(option);=0A= }.bind(this));=0A= this._controls.editor.disabled =3D false;=0A= Field.scrollFreeActivate(this._controls.editor);=0A= }=0A= });=0A= =0A= //**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****=0A= //**** This only exists for a while, in order to let ****=0A= //**** users adapt to the new API. Read up on the new ****=0A= //**** API and convert your code to it ASAP! ****=0A= =0A= Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions =3D = function(options) {=0A= if (!options) return;=0A= function fallback(name, expr) {=0A= if (name in options || expr =3D=3D=3D undefined) return;=0A= options[name] =3D expr;=0A= };=0A= fallback('cancelControl', (options.cancelLink ? 'link' : = (options.cancelButton ? 'button' :=0A= options.cancelLink =3D=3D options.cancelButton =3D=3D false ? false = : undefined)));=0A= fallback('okControl', (options.okLink ? 'link' : (options.okButton ? = 'button' :=0A= options.okLink =3D=3D options.okButton =3D=3D false ? false : = undefined)));=0A= fallback('highlightColor', options.highlightcolor);=0A= fallback('highlightEndColor', options.highlightendcolor);=0A= };=0A= =0A= Object.extend(Ajax.InPlaceEditor, {=0A= DefaultOptions: {=0A= ajaxOptions: { },=0A= autoRows: 3, // Use when multi-line = w/ rows =3D=3D 1=0A= cancelControl: 'link', // 'link'|'button'|false=0A= cancelText: 'cancel',=0A= clickToEditText: 'Click to edit',=0A= externalControl: null, // id|elt=0A= externalControlOnly: false,=0A= fieldPostCreation: 'activate', // = 'activate'|'focus'|false=0A= formClassName: 'inplaceeditor-form',=0A= formId: null, // id|elt=0A= highlightColor: '#ffff99',=0A= highlightEndColor: '#ffffff',=0A= hoverClassName: '',=0A= htmlResponse: true,=0A= loadingClassName: 'inplaceeditor-loading',=0A= loadingText: 'Loading...',=0A= okControl: 'button', // 'link'|'button'|false=0A= okText: 'ok',=0A= paramName: 'value',=0A= rows: 1, // If 1 and multi-line, = uses autoRows=0A= savingClassName: 'inplaceeditor-saving',=0A= savingText: 'Saving...',=0A= size: 0,=0A= stripLoadedTextTags: false,=0A= submitOnBlur: false,=0A= textAfterControls: '',=0A= textBeforeControls: '',=0A= textBetweenControls: ''=0A= },=0A= DefaultCallbacks: {=0A= callback: function(form) {=0A= return Form.serialize(form);=0A= },=0A= onComplete: function(transport, element) {=0A= // For backward compatibility, this one is bound to the IPE, and = passes=0A= // the element directly. It was too often customized, so we don't = break it.=0A= new Effect.Highlight(element, {=0A= startcolor: this.options.highlightColor, keepBackgroundImage: = true });=0A= },=0A= onEnterEditMode: null,=0A= onEnterHover: function(ipe) {=0A= ipe.element.style.backgroundColor =3D ipe.options.highlightColor;=0A= if (ipe._effect)=0A= ipe._effect.cancel();=0A= },=0A= onFailure: function(transport, ipe) {=0A= alert('Error communication with the server: ' + = transport.responseText.stripTags());=0A= },=0A= onFormCustomization: null, // Takes the IPE and its generated form, = after editor, before controls.=0A= onLeaveEditMode: null,=0A= onLeaveHover: function(ipe) {=0A= ipe._effect =3D new Effect.Highlight(ipe.element, {=0A= startcolor: ipe.options.highlightColor, endcolor: = ipe.options.highlightEndColor,=0A= restorecolor: ipe._originalBackground, keepBackgroundImage: true=0A= });=0A= }=0A= },=0A= Listeners: {=0A= click: 'enterEditMode',=0A= keydown: 'checkForEscapeOrReturn',=0A= mouseover: 'enterHover',=0A= mouseout: 'leaveHover'=0A= }=0A= });=0A= =0A= Ajax.InPlaceCollectionEditor.DefaultOptions =3D {=0A= loadingCollectionText: 'Loading options...'=0A= };=0A= =0A= // Delayed observer, like Form.Element.Observer,=0A= // but waits for delay after last key input=0A= // Ideal for live-search fields=0A= =0A= Form.Element.DelayedObserver =3D Class.create({=0A= initialize: function(element, delay, callback) {=0A= this.delay =3D delay || 0.5;=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= this.timer =3D null;=0A= this.lastValue =3D $F(this.element);=0A= = Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListen= er(this));=0A= },=0A= delayedListener: function(event) {=0A= if(this.lastValue =3D=3D $F(this.element)) return;=0A= if(this.timer) clearTimeout(this.timer);=0A= this.timer =3D setTimeout(this.onTimerEvent.bind(this), this.delay * = 1000);=0A= this.lastValue =3D $F(this.element);=0A= },=0A= onTimerEvent: function() {=0A= this.timer =3D null;=0A= this.callback(this.element, $F(this.element));=0A= }=0A= });=0A= =0A= var Importer =3D {=0A= showBlogService: function(request){=0A= var resp =3D request.responseJSON;=0A= var blogType =3D resp.blog_type;=0A= =0A= $('searching_screen').hide();=0A= =0A= if (blogType !=3D 'unknown') {=0A= $(blogType + '_url').setValue(resp.url);=0A= $(blogType + '_blog_url').innerHTML =3D resp.blog_title + ' ( ' + = resp.url + ' )';=0A= }=0A= =0A= $(blogType).show();=0A= =0A= $$('.cancel').each(function(btn){=0A= btn.observe('click',function(e){=0A= $$('.blog_service').each(function(e){=0A= e.hide();=0A= });=0A= $('discover_form').show();=0A= e.stop();=0A= });=0A= });=0A= },=0A= showLoading: function(){=0A= Effect.BlindUp('discover_form',{ duration: 0.5 });=0A= Effect.BlindDown('searching_screen',{ duration: 0.5 });=0A= },=0A= killField: function(elm){=0A= if (elm.value =3D=3D 'Enter your old blog address here...') {=0A= elm.value =3D "http://";=0A= }else if (elm.value =3D=3D '') {=0A= elm.value =3D 'Enter your old blog address here...';=0A= }=0A= }=0A= };=0A= =0A= document.observe('dom:loaded',function(){=0A= //$('pages_table').sortable('tr');=0A= }); ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://gp-bc7f8.posterous.com/javascripts/bundles/posts.js?1274974359 // script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A= =0A= // Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= // Contributors:=0A= // Justin Palmer (http://encytemedia.com/)=0A= // Mark Pilgrim (http://diveintomark.org/)=0A= // Martin Bialasinki=0A= //=0A= // script.aculo.us is freely distributable under the terms of an = MIT-style license.=0A= // For details, see the script.aculo.us web site: http://script.aculo.us/=0A= =0A= // converts rgb() and #xxx to #xxxxxx format,=0A= // returns self (or first argument) if not convertable=0A= String.prototype.parseColor =3D function() {=0A= var color =3D '#';=0A= if (this.slice(0,4) =3D=3D 'rgb(') {=0A= var cols =3D this.slice(4,this.length-1).split(',');=0A= var i=3D0; do { color +=3D parseInt(cols[i]).toColorPart() } while = (++i<3);=0A= } else {=0A= if (this.slice(0,1) =3D=3D '#') {=0A= if (this.length=3D=3D4) for(var i=3D1;i<4;i++) color +=3D = (this.charAt(i) + this.charAt(i)).toLowerCase();=0A= if (this.length=3D=3D7) color =3D this.toLowerCase();=0A= }=0A= }=0A= return (color.length=3D=3D7 ? color : (arguments[0] || this));=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.collectTextNodes =3D function(element) {=0A= return $A($(element).childNodes).collect( function(node) {=0A= return (node.nodeType=3D=3D3 ? node.nodeValue :=0A= (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));=0A= }).flatten().join('');=0A= };=0A= =0A= Element.collectTextNodesIgnoreClass =3D function(element, className) {=0A= return $A($(element).childNodes).collect( function(node) {=0A= return (node.nodeType=3D=3D3 ? node.nodeValue :=0A= ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?=0A= Element.collectTextNodesIgnoreClass(node, className) : ''));=0A= }).flatten().join('');=0A= };=0A= =0A= Element.setContentZoom =3D function(element, percent) {=0A= element =3D $(element);=0A= element.setStyle({fontSize: (percent/100) + 'em'});=0A= if (Prototype.Browser.WebKit) window.scrollBy(0,0);=0A= return element;=0A= };=0A= =0A= Element.getInlineOpacity =3D function(element){=0A= return $(element).style.opacity || '';=0A= };=0A= =0A= Element.forceRerendering =3D function(element) {=0A= try {=0A= element =3D $(element);=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch(e) { }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Effect =3D {=0A= _elementDoesNotExistError: {=0A= name: 'ElementDoesNotExistError',=0A= message: 'The specified DOM element does not exist, but is required = for this effect to operate'=0A= },=0A= Transitions: {=0A= linear: Prototype.K,=0A= sinoidal: function(pos) {=0A= return (-Math.cos(pos*Math.PI)/2) + .5;=0A= },=0A= reverse: function(pos) {=0A= return 1-pos;=0A= },=0A= flicker: function(pos) {=0A= var pos =3D ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;=0A= return pos > 1 ? 1 : pos;=0A= },=0A= wobble: function(pos) {=0A= return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;=0A= },=0A= pulse: function(pos, pulses) {=0A= return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;=0A= },=0A= spring: function(pos) {=0A= return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));=0A= },=0A= none: function(pos) {=0A= return 0;=0A= },=0A= full: function(pos) {=0A= return 1;=0A= }=0A= },=0A= DefaultOptions: {=0A= duration: 1.0, // seconds=0A= fps: 100, // 100=3D assume 66fps max.=0A= sync: false, // true for combining=0A= from: 0.0,=0A= to: 1.0,=0A= delay: 0.0,=0A= queue: 'parallel'=0A= },=0A= tagifyText: function(element) {=0A= var tagifyStyle =3D 'position:relative';=0A= if (Prototype.Browser.IE) tagifyStyle +=3D ';zoom:1';=0A= =0A= element =3D $(element);=0A= $A(element.childNodes).each( function(child) {=0A= if (child.nodeType=3D=3D3) {=0A= child.nodeValue.toArray().each( function(character) {=0A= element.insertBefore(=0A= new Element('span', {style: tagifyStyle}).update(=0A= character =3D=3D ' ' ? String.fromCharCode(160) : = character),=0A= child);=0A= });=0A= Element.remove(child);=0A= }=0A= });=0A= },=0A= multiple: function(element, effect) {=0A= var elements;=0A= if (((typeof element =3D=3D 'object') ||=0A= Object.isFunction(element)) &&=0A= (element.length))=0A= elements =3D element;=0A= else=0A= elements =3D $(element).childNodes;=0A= =0A= var options =3D Object.extend({=0A= speed: 0.1,=0A= delay: 0.0=0A= }, arguments[2] || { });=0A= var masterDelay =3D options.delay;=0A= =0A= $A(elements).each( function(element, index) {=0A= new effect(element, Object.extend(options, { delay: index * = options.speed + masterDelay }));=0A= });=0A= },=0A= PAIRS: {=0A= 'slide': ['SlideDown','SlideUp'],=0A= 'blind': ['BlindDown','BlindUp'],=0A= 'appear': ['Appear','Fade']=0A= },=0A= toggle: function(element, effect, options) {=0A= element =3D $(element);=0A= effect =3D (effect || 'appear').toLowerCase();=0A= =0A= return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] = ](element, Object.extend({=0A= queue: { position:'end', scope:(element.id || 'global'), limit: 1 }=0A= }, options || {}));=0A= }=0A= };=0A= =0A= Effect.DefaultOptions.transition =3D Effect.Transitions.sinoidal;=0A= =0A= /* ------------- core effects ------------- */=0A= =0A= Effect.ScopedQueue =3D Class.create(Enumerable, {=0A= initialize: function() {=0A= this.effects =3D [];=0A= this.interval =3D null;=0A= },=0A= _each: function(iterator) {=0A= this.effects._each(iterator);=0A= },=0A= add: function(effect) {=0A= var timestamp =3D new Date().getTime();=0A= =0A= var position =3D Object.isString(effect.options.queue) ?=0A= effect.options.queue : effect.options.queue.position;=0A= =0A= switch(position) {=0A= case 'front':=0A= // move unstarted effects after this effect=0A= this.effects.findAll(function(e){ return e.state=3D=3D'idle' = }).each( function(e) {=0A= e.startOn +=3D effect.finishOn;=0A= e.finishOn +=3D effect.finishOn;=0A= });=0A= break;=0A= case 'with-last':=0A= timestamp =3D this.effects.pluck('startOn').max() || timestamp;=0A= break;=0A= case 'end':=0A= // start effect after last queued effect has finished=0A= timestamp =3D this.effects.pluck('finishOn').max() || timestamp;=0A= break;=0A= }=0A= =0A= effect.startOn +=3D timestamp;=0A= effect.finishOn +=3D timestamp;=0A= =0A= if (!effect.options.queue.limit || (this.effects.length < = effect.options.queue.limit))=0A= this.effects.push(effect);=0A= =0A= if (!this.interval)=0A= this.interval =3D setInterval(this.loop.bind(this), 15);=0A= },=0A= remove: function(effect) {=0A= this.effects =3D this.effects.reject(function(e) { return = e=3D=3Deffect });=0A= if (this.effects.length =3D=3D 0) {=0A= clearInterval(this.interval);=0A= this.interval =3D null;=0A= }=0A= },=0A= loop: function() {=0A= var timePos =3D new Date().getTime();=0A= for(var i=3D0, len=3Dthis.effects.length;i=3D this.startOn) {=0A= if (timePos >=3D this.finishOn) {=0A= this.render(1.0);=0A= this.cancel();=0A= this.event('beforeFinish');=0A= if (this.finish) this.finish();=0A= this.event('afterFinish');=0A= return;=0A= }=0A= var pos =3D (timePos - this.startOn) / this.totalTime,=0A= frame =3D (pos * this.totalFrames).round();=0A= if (frame > this.currentFrame) {=0A= this.render(pos);=0A= this.currentFrame =3D frame;=0A= }=0A= }=0A= },=0A= cancel: function() {=0A= if (!this.options.sync)=0A= Effect.Queues.get(Object.isString(this.options.queue) ?=0A= 'global' : this.options.queue.scope).remove(this);=0A= this.state =3D 'finished';=0A= },=0A= event: function(eventName) {=0A= if (this.options[eventName + 'Internal']) this.options[eventName + = 'Internal'](this);=0A= if (this.options[eventName]) this.options[eventName](this);=0A= },=0A= inspect: function() {=0A= var data =3D $H();=0A= for(property in this)=0A= if (!Object.isFunction(this[property])) data.set(property, = this[property]);=0A= return '#';=0A= }=0A= });=0A= =0A= Effect.Parallel =3D Class.create(Effect.Base, {=0A= initialize: function(effects) {=0A= this.effects =3D effects || [];=0A= this.start(arguments[1]);=0A= },=0A= update: function(position) {=0A= this.effects.invoke('render', position);=0A= },=0A= finish: function(position) {=0A= this.effects.each( function(effect) {=0A= effect.render(1.0);=0A= effect.cancel();=0A= effect.event('beforeFinish');=0A= if (effect.finish) effect.finish(position);=0A= effect.event('afterFinish');=0A= });=0A= }=0A= });=0A= =0A= Effect.Tween =3D Class.create(Effect.Base, {=0A= initialize: function(object, from, to) {=0A= object =3D Object.isString(object) ? $(object) : object;=0A= var args =3D $A(arguments), method =3D args.last(),=0A= options =3D args.length =3D=3D 5 ? args[3] : null;=0A= this.method =3D Object.isFunction(method) ? method.bind(object) :=0A= Object.isFunction(object[method]) ? object[method].bind(object) :=0A= function(value) { object[method] =3D value };=0A= this.start(Object.extend({ from: from, to: to }, options || { }));=0A= },=0A= update: function(position) {=0A= this.method(position);=0A= }=0A= });=0A= =0A= Effect.Event =3D Class.create(Effect.Base, {=0A= initialize: function() {=0A= this.start(Object.extend({ duration: 0 }, arguments[0] || { }));=0A= },=0A= update: Prototype.emptyFunction=0A= });=0A= =0A= Effect.Opacity =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= // make this work on IE on elements without 'layout'=0A= if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))=0A= this.element.setStyle({zoom: 1});=0A= var options =3D Object.extend({=0A= from: this.element.getOpacity() || 0.0,=0A= to: 1.0=0A= }, arguments[1] || { });=0A= this.start(options);=0A= },=0A= update: function(position) {=0A= this.element.setOpacity(position);=0A= }=0A= });=0A= =0A= Effect.Move =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= x: 0,=0A= y: 0,=0A= mode: 'relative'=0A= }, arguments[1] || { });=0A= this.start(options);=0A= },=0A= setup: function() {=0A= this.element.makePositioned();=0A= this.originalLeft =3D parseFloat(this.element.getStyle('left') || = '0');=0A= this.originalTop =3D parseFloat(this.element.getStyle('top') || = '0');=0A= if (this.options.mode =3D=3D 'absolute') {=0A= this.options.x =3D this.options.x - this.originalLeft;=0A= this.options.y =3D this.options.y - this.originalTop;=0A= }=0A= },=0A= update: function(position) {=0A= this.element.setStyle({=0A= left: (this.options.x * position + this.originalLeft).round() + = 'px',=0A= top: (this.options.y * position + this.originalTop).round() + = 'px'=0A= });=0A= }=0A= });=0A= =0A= // for backwards compatibility=0A= Effect.MoveBy =3D function(element, toTop, toLeft) {=0A= return new Effect.Move(element,=0A= Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));=0A= };=0A= =0A= Effect.Scale =3D Class.create(Effect.Base, {=0A= initialize: function(element, percent) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= scaleX: true,=0A= scaleY: true,=0A= scaleContent: true,=0A= scaleFromCenter: false,=0A= scaleMode: 'box', // 'box' or 'contents' or { } with = provided values=0A= scaleFrom: 100.0,=0A= scaleTo: percent=0A= }, arguments[2] || { });=0A= this.start(options);=0A= },=0A= setup: function() {=0A= this.restoreAfterFinish =3D this.options.restoreAfterFinish || false;=0A= this.elementPositioning =3D this.element.getStyle('position');=0A= =0A= this.originalStyle =3D { };=0A= ['top','left','width','height','fontSize'].each( function(k) {=0A= this.originalStyle[k] =3D this.element.style[k];=0A= }.bind(this));=0A= =0A= this.originalTop =3D this.element.offsetTop;=0A= this.originalLeft =3D this.element.offsetLeft;=0A= =0A= var fontSize =3D this.element.getStyle('font-size') || '100%';=0A= ['em','px','%','pt'].each( function(fontSizeType) {=0A= if (fontSize.indexOf(fontSizeType)>0) {=0A= this.fontSize =3D parseFloat(fontSize);=0A= this.fontSizeType =3D fontSizeType;=0A= }=0A= }.bind(this));=0A= =0A= this.factor =3D (this.options.scaleTo - this.options.scaleFrom)/100;=0A= =0A= this.dims =3D null;=0A= if (this.options.scaleMode=3D=3D'box')=0A= this.dims =3D [this.element.offsetHeight, = this.element.offsetWidth];=0A= if (/^content/.test(this.options.scaleMode))=0A= this.dims =3D [this.element.scrollHeight, = this.element.scrollWidth];=0A= if (!this.dims)=0A= this.dims =3D [this.options.scaleMode.originalHeight,=0A= this.options.scaleMode.originalWidth];=0A= },=0A= update: function(position) {=0A= var currentScale =3D (this.options.scaleFrom/100.0) + (this.factor * = position);=0A= if (this.options.scaleContent && this.fontSize)=0A= this.element.setStyle({fontSize: this.fontSize * currentScale + = this.fontSizeType });=0A= this.setDimensions(this.dims[0] * currentScale, this.dims[1] * = currentScale);=0A= },=0A= finish: function(position) {=0A= if (this.restoreAfterFinish) = this.element.setStyle(this.originalStyle);=0A= },=0A= setDimensions: function(height, width) {=0A= var d =3D { };=0A= if (this.options.scaleX) d.width =3D width.round() + 'px';=0A= if (this.options.scaleY) d.height =3D height.round() + 'px';=0A= if (this.options.scaleFromCenter) {=0A= var topd =3D (height - this.dims[0])/2;=0A= var leftd =3D (width - this.dims[1])/2;=0A= if (this.elementPositioning =3D=3D 'absolute') {=0A= if (this.options.scaleY) d.top =3D this.originalTop-topd + 'px';=0A= if (this.options.scaleX) d.left =3D this.originalLeft-leftd + = 'px';=0A= } else {=0A= if (this.options.scaleY) d.top =3D -topd + 'px';=0A= if (this.options.scaleX) d.left =3D -leftd + 'px';=0A= }=0A= }=0A= this.element.setStyle(d);=0A= }=0A= });=0A= =0A= Effect.Highlight =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({ startcolor: '#ffff99' }, = arguments[1] || { });=0A= this.start(options);=0A= },=0A= setup: function() {=0A= // Prevent executing on elements not in the layout flow=0A= if (this.element.getStyle('display')=3D=3D'none') { this.cancel(); = return; }=0A= // Disable background image during the effect=0A= this.oldStyle =3D { };=0A= if (!this.options.keepBackgroundImage) {=0A= this.oldStyle.backgroundImage =3D = this.element.getStyle('background-image');=0A= this.element.setStyle({backgroundImage: 'none'});=0A= }=0A= if (!this.options.endcolor)=0A= this.options.endcolor =3D = this.element.getStyle('background-color').parseColor('#ffffff');=0A= if (!this.options.restorecolor)=0A= this.options.restorecolor =3D = this.element.getStyle('background-color');=0A= // init color calculations=0A= this._base =3D $R(0,2).map(function(i){ return = parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));=0A= this._delta =3D $R(0,2).map(function(i){ return = parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] = }.bind(this));=0A= },=0A= update: function(position) {=0A= this.element.setStyle({backgroundColor: = $R(0,2).inject('#',function(m,v,i){=0A= return = m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); = }.bind(this)) });=0A= },=0A= finish: function() {=0A= this.element.setStyle(Object.extend(this.oldStyle, {=0A= backgroundColor: this.options.restorecolor=0A= }));=0A= }=0A= });=0A= =0A= Effect.ScrollTo =3D function(element) {=0A= var options =3D arguments[1] || { },=0A= scrollOffsets =3D document.viewport.getScrollOffsets(),=0A= elementOffsets =3D $(element).cumulativeOffset();=0A= =0A= if (options.offset) elementOffsets[1] +=3D options.offset;=0A= =0A= return new Effect.Tween(null,=0A= scrollOffsets.top,=0A= elementOffsets[1],=0A= options,=0A= function(p){ scrollTo(scrollOffsets.left, p.round()); }=0A= );=0A= };=0A= =0A= /* ------------- combination effects ------------- */=0A= =0A= Effect.Fade =3D function(element) {=0A= element =3D $(element);=0A= var oldOpacity =3D element.getInlineOpacity();=0A= var options =3D Object.extend({=0A= from: element.getOpacity() || 1.0,=0A= to: 0.0,=0A= afterFinishInternal: function(effect) {=0A= if (effect.options.to!=3D0) return;=0A= effect.element.hide().setStyle({opacity: oldOpacity});=0A= }=0A= }, arguments[1] || { });=0A= return new Effect.Opacity(element,options);=0A= };=0A= =0A= Effect.Appear =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= from: (element.getStyle('display') =3D=3D 'none' ? 0.0 : = element.getOpacity() || 0.0),=0A= to: 1.0,=0A= // force Safari to render floated elements properly=0A= afterFinishInternal: function(effect) {=0A= effect.element.forceRerendering();=0A= },=0A= beforeSetup: function(effect) {=0A= effect.element.setOpacity(effect.options.from).show();=0A= }}, arguments[1] || { });=0A= return new Effect.Opacity(element,options);=0A= };=0A= =0A= Effect.Puff =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= opacity: element.getInlineOpacity(),=0A= position: element.getStyle('position'),=0A= top: element.style.top,=0A= left: element.style.left,=0A= width: element.style.width,=0A= height: element.style.height=0A= };=0A= return new Effect.Parallel(=0A= [ new Effect.Scale(element, 200,=0A= { sync: true, scaleFromCenter: true, scaleContent: true, = restoreAfterFinish: true }),=0A= new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],=0A= Object.extend({ duration: 1.0,=0A= beforeSetupInternal: function(effect) {=0A= Position.absolutize(effect.effects[0].element);=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.effects[0].element.hide().setStyle(oldStyle); }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= Effect.BlindUp =3D function(element) {=0A= element =3D $(element);=0A= element.makeClipping();=0A= return new Effect.Scale(element, 0,=0A= Object.extend({ scaleContent: false,=0A= scaleX: false,=0A= restoreAfterFinish: true,=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping();=0A= }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= Effect.BlindDown =3D function(element) {=0A= element =3D $(element);=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, 100, Object.extend({=0A= scaleContent: false,=0A= scaleX: false,=0A= scaleFrom: 0,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makeClipping().setStyle({height: '0px'}).show();=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.undoClipping();=0A= }=0A= }, arguments[1] || { }));=0A= };=0A= =0A= Effect.SwitchOff =3D function(element) {=0A= element =3D $(element);=0A= var oldOpacity =3D element.getInlineOpacity();=0A= return new Effect.Appear(element, Object.extend({=0A= duration: 0.4,=0A= from: 0,=0A= transition: Effect.Transitions.flicker,=0A= afterFinishInternal: function(effect) {=0A= new Effect.Scale(effect.element, 1, {=0A= duration: 0.3, scaleFromCenter: true,=0A= scaleX: false, scaleContent: false, restoreAfterFinish: true,=0A= beforeSetup: function(effect) {=0A= effect.element.makePositioned().makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: = oldOpacity});=0A= }=0A= });=0A= }=0A= }, arguments[1] || { }));=0A= };=0A= =0A= Effect.DropOut =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.getStyle('top'),=0A= left: element.getStyle('left'),=0A= opacity: element.getInlineOpacity() };=0A= return new Effect.Parallel(=0A= [ new Effect.Move(element, {x: 0, y: 100, sync: true }),=0A= new Effect.Opacity(element, { sync: true, to: 0.0 }) ],=0A= Object.extend(=0A= { duration: 0.5,=0A= beforeSetup: function(effect) {=0A= effect.effects[0].element.makePositioned();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);=0A= }=0A= }, arguments[1] || { }));=0A= };=0A= =0A= Effect.Shake =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= distance: 20,=0A= duration: 0.5=0A= }, arguments[1] || {});=0A= var distance =3D parseFloat(options.distance);=0A= var split =3D parseFloat(options.duration) / 10.0;=0A= var oldStyle =3D {=0A= top: element.getStyle('top'),=0A= left: element.getStyle('left') };=0A= return new Effect.Move(element,=0A= { x: distance, y: 0, duration: split, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: distance*2, y: 0, duration: split*2, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -distance, y: 0, duration: split, afterFinishInternal: = function(effect) {=0A= effect.element.undoPositioned().setStyle(oldStyle);=0A= }}); }}); }}); }}); }}); }});=0A= };=0A= =0A= Effect.SlideDown =3D function(element) {=0A= element =3D $(element).cleanWhitespace();=0A= // SlideDown need to have the content of the element wrapped in a = container element with fixed height!=0A= var oldInnerBottom =3D element.down().getStyle('bottom');=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, 100, Object.extend({=0A= scaleContent: false,=0A= scaleX: false,=0A= scaleFrom: window.opera ? 0 : 1,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makePositioned();=0A= effect.element.down().makePositioned();=0A= if (window.opera) effect.element.setStyle({top: ''});=0A= effect.element.makeClipping().setStyle({height: '0px'}).show();=0A= },=0A= afterUpdateInternal: function(effect) {=0A= effect.element.down().setStyle({bottom:=0A= (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.undoClipping().undoPositioned();=0A= effect.element.down().undoPositioned().setStyle({bottom: = oldInnerBottom}); }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= Effect.SlideUp =3D function(element) {=0A= element =3D $(element).cleanWhitespace();=0A= var oldInnerBottom =3D element.down().getStyle('bottom');=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, window.opera ? 0 : 1,=0A= Object.extend({ scaleContent: false,=0A= scaleX: false,=0A= scaleMode: 'box',=0A= scaleFrom: 100,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makePositioned();=0A= effect.element.down().makePositioned();=0A= if (window.opera) effect.element.setStyle({top: ''});=0A= effect.element.makeClipping().show();=0A= },=0A= afterUpdateInternal: function(effect) {=0A= effect.element.down().setStyle({bottom:=0A= (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping().undoPositioned();=0A= effect.element.down().undoPositioned().setStyle({bottom: = oldInnerBottom});=0A= }=0A= }, arguments[1] || { })=0A= );=0A= };=0A= =0A= // Bug in opera makes the TD containing this element expand for a = instance after finish=0A= Effect.Squish =3D function(element) {=0A= return new Effect.Scale(element, window.opera ? 1 : 0, {=0A= restoreAfterFinish: true,=0A= beforeSetup: function(effect) {=0A= effect.element.makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping();=0A= }=0A= });=0A= };=0A= =0A= Effect.Grow =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= direction: 'center',=0A= moveTransition: Effect.Transitions.sinoidal,=0A= scaleTransition: Effect.Transitions.sinoidal,=0A= opacityTransition: Effect.Transitions.full=0A= }, arguments[1] || { });=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= height: element.style.height,=0A= width: element.style.width,=0A= opacity: element.getInlineOpacity() };=0A= =0A= var dims =3D element.getDimensions();=0A= var initialMoveX, initialMoveY;=0A= var moveX, moveY;=0A= =0A= switch (options.direction) {=0A= case 'top-left':=0A= initialMoveX =3D initialMoveY =3D moveX =3D moveY =3D 0;=0A= break;=0A= case 'top-right':=0A= initialMoveX =3D dims.width;=0A= initialMoveY =3D moveY =3D 0;=0A= moveX =3D -dims.width;=0A= break;=0A= case 'bottom-left':=0A= initialMoveX =3D moveX =3D 0;=0A= initialMoveY =3D dims.height;=0A= moveY =3D -dims.height;=0A= break;=0A= case 'bottom-right':=0A= initialMoveX =3D dims.width;=0A= initialMoveY =3D dims.height;=0A= moveX =3D -dims.width;=0A= moveY =3D -dims.height;=0A= break;=0A= case 'center':=0A= initialMoveX =3D dims.width / 2;=0A= initialMoveY =3D dims.height / 2;=0A= moveX =3D -dims.width / 2;=0A= moveY =3D -dims.height / 2;=0A= break;=0A= }=0A= =0A= return new Effect.Move(element, {=0A= x: initialMoveX,=0A= y: initialMoveY,=0A= duration: 0.01,=0A= beforeSetup: function(effect) {=0A= effect.element.hide().makeClipping().makePositioned();=0A= },=0A= afterFinishInternal: function(effect) {=0A= new Effect.Parallel(=0A= [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, = from: 0.0, transition: options.opacityTransition }),=0A= new Effect.Move(effect.element, { x: moveX, y: moveY, sync: = true, transition: options.moveTransition }),=0A= new Effect.Scale(effect.element, 100, {=0A= scaleMode: { originalHeight: dims.height, originalWidth: = dims.width },=0A= sync: true, scaleFrom: window.opera ? 1 : 0, transition: = options.scaleTransition, restoreAfterFinish: true})=0A= ], Object.extend({=0A= beforeSetup: function(effect) {=0A= effect.effects[0].element.setStyle({height: = '0px'}).show();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldSty= le);=0A= }=0A= }, options)=0A= );=0A= }=0A= });=0A= };=0A= =0A= Effect.Shrink =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= direction: 'center',=0A= moveTransition: Effect.Transitions.sinoidal,=0A= scaleTransition: Effect.Transitions.sinoidal,=0A= opacityTransition: Effect.Transitions.none=0A= }, arguments[1] || { });=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= height: element.style.height,=0A= width: element.style.width,=0A= opacity: element.getInlineOpacity() };=0A= =0A= var dims =3D element.getDimensions();=0A= var moveX, moveY;=0A= =0A= switch (options.direction) {=0A= case 'top-left':=0A= moveX =3D moveY =3D 0;=0A= break;=0A= case 'top-right':=0A= moveX =3D dims.width;=0A= moveY =3D 0;=0A= break;=0A= case 'bottom-left':=0A= moveX =3D 0;=0A= moveY =3D dims.height;=0A= break;=0A= case 'bottom-right':=0A= moveX =3D dims.width;=0A= moveY =3D dims.height;=0A= break;=0A= case 'center':=0A= moveX =3D dims.width / 2;=0A= moveY =3D dims.height / 2;=0A= break;=0A= }=0A= =0A= return new Effect.Parallel(=0A= [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, = transition: options.opacityTransition }),=0A= new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, = transition: options.scaleTransition, restoreAfterFinish: true}),=0A= new Effect.Move(element, { x: moveX, y: moveY, sync: true, = transition: options.moveTransition })=0A= ], Object.extend({=0A= beforeStartInternal: function(effect) {=0A= effect.effects[0].element.makePositioned().makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle= (oldStyle); }=0A= }, options)=0A= );=0A= };=0A= =0A= Effect.Pulsate =3D function(element) {=0A= element =3D $(element);=0A= var options =3D arguments[1] || { },=0A= oldOpacity =3D element.getInlineOpacity(),=0A= transition =3D options.transition || Effect.Transitions.linear,=0A= reverser =3D function(pos){=0A= return 1 - = transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);=0A= };=0A= =0A= return new Effect.Opacity(element,=0A= Object.extend(Object.extend({ duration: 2.0, from: 0,=0A= afterFinishInternal: function(effect) { = effect.element.setStyle({opacity: oldOpacity}); }=0A= }, options), {transition: reverser}));=0A= };=0A= =0A= Effect.Fold =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= width: element.style.width,=0A= height: element.style.height };=0A= element.makeClipping();=0A= return new Effect.Scale(element, 5, Object.extend({=0A= scaleContent: false,=0A= scaleX: false,=0A= afterFinishInternal: function(effect) {=0A= new Effect.Scale(element, 1, {=0A= scaleContent: false,=0A= scaleY: false,=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping().setStyle(oldStyle);=0A= } });=0A= }}, arguments[1] || { }));=0A= };=0A= =0A= Effect.Morph =3D Class.create(Effect.Base, {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if (!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= style: { }=0A= }, arguments[1] || { });=0A= =0A= if (!Object.isString(options.style)) this.style =3D = $H(options.style);=0A= else {=0A= if (options.style.include(':'))=0A= this.style =3D options.style.parseStyle();=0A= else {=0A= this.element.addClassName(options.style);=0A= this.style =3D $H(this.element.getStyles());=0A= this.element.removeClassName(options.style);=0A= var css =3D this.element.getStyles();=0A= this.style =3D this.style.reject(function(style) {=0A= return style.value =3D=3D css[style.key];=0A= });=0A= options.afterFinishInternal =3D function(effect) {=0A= effect.element.addClassName(effect.options.style);=0A= effect.transforms.each(function(transform) {=0A= effect.element.style[transform.style] =3D '';=0A= });=0A= };=0A= }=0A= }=0A= this.start(options);=0A= },=0A= =0A= setup: function(){=0A= function parseColor(color){=0A= if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) = color =3D '#ffffff';=0A= color =3D color.parseColor();=0A= return $R(0,2).map(function(i){=0A= return parseInt( color.slice(i*2+1,i*2+3), 16 );=0A= });=0A= }=0A= this.transforms =3D this.style.map(function(pair){=0A= var property =3D pair[0], value =3D pair[1], unit =3D null;=0A= =0A= if (value.parseColor('#zzzzzz') !=3D '#zzzzzz') {=0A= value =3D value.parseColor();=0A= unit =3D 'color';=0A= } else if (property =3D=3D 'opacity') {=0A= value =3D parseFloat(value);=0A= if (Prototype.Browser.IE && = (!this.element.currentStyle.hasLayout))=0A= this.element.setStyle({zoom: 1});=0A= } else if (Element.CSS_LENGTH.test(value)) {=0A= var components =3D value.match(/^([\+\-]?[0-9\.]+)(.*)$/);=0A= value =3D parseFloat(components[1]);=0A= unit =3D (components.length =3D=3D 3) ? components[2] : null;=0A= }=0A= =0A= var originalValue =3D this.element.getStyle(property);=0A= return {=0A= style: property.camelize(),=0A= originalValue: unit=3D=3D'color' ? parseColor(originalValue) : = parseFloat(originalValue || 0),=0A= targetValue: unit=3D=3D'color' ? parseColor(value) : value,=0A= unit: unit=0A= };=0A= }.bind(this)).reject(function(transform){=0A= return (=0A= (transform.originalValue =3D=3D transform.targetValue) ||=0A= (=0A= transform.unit !=3D 'color' &&=0A= (isNaN(transform.originalValue) || = isNaN(transform.targetValue))=0A= )=0A= );=0A= });=0A= },=0A= update: function(position) {=0A= var style =3D { }, transform, i =3D this.transforms.length;=0A= while(i--)=0A= style[(transform =3D this.transforms[i]).style] =3D=0A= transform.unit=3D=3D'color' ? '#'+=0A= (Math.round(transform.originalValue[0]+=0A= = (transform.targetValue[0]-transform.originalValue[0])*position)).toColorP= art() +=0A= (Math.round(transform.originalValue[1]+=0A= = (transform.targetValue[1]-transform.originalValue[1])*position)).toColorP= art() +=0A= (Math.round(transform.originalValue[2]+=0A= = (transform.targetValue[2]-transform.originalValue[2])*position)).toColorP= art() :=0A= (transform.originalValue +=0A= (transform.targetValue - transform.originalValue) * = position).toFixed(3) +=0A= (transform.unit =3D=3D=3D null ? '' : transform.unit);=0A= this.element.setStyle(style, true);=0A= }=0A= });=0A= =0A= Effect.Transform =3D Class.create({=0A= initialize: function(tracks){=0A= this.tracks =3D [];=0A= this.options =3D arguments[1] || { };=0A= this.addTracks(tracks);=0A= },=0A= addTracks: function(tracks){=0A= tracks.each(function(track){=0A= track =3D $H(track);=0A= var data =3D track.values().first();=0A= this.tracks.push($H({=0A= ids: track.keys().first(),=0A= effect: Effect.Morph,=0A= options: { style: data }=0A= }));=0A= }.bind(this));=0A= return this;=0A= },=0A= play: function(){=0A= return new Effect.Parallel(=0A= this.tracks.map(function(track){=0A= var ids =3D track.get('ids'), effect =3D track.get('effect'), = options =3D track.get('options');=0A= var elements =3D [$(ids) || $$(ids)].flatten();=0A= return elements.map(function(e){ return new effect(e, = Object.extend({ sync:true }, options)) });=0A= }).flatten(),=0A= this.options=0A= );=0A= }=0A= });=0A= =0A= Element.CSS_PROPERTIES =3D $w(=0A= 'backgroundColor backgroundPosition borderBottomColor = borderBottomStyle ' +=0A= 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +=0A= 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +=0A= 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +=0A= 'fontSize fontWeight height left letterSpacing lineHeight ' +=0A= 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight = '+=0A= 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +=0A= 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +=0A= 'right textIndent top width wordSpacing zIndex');=0A= =0A= Element.CSS_LENGTH =3D = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;=0A= =0A= String.__parseStyleElement =3D document.createElement('div');=0A= String.prototype.parseStyle =3D function(){=0A= var style, styleRules =3D $H();=0A= if (Prototype.Browser.WebKit)=0A= style =3D new Element('div',{style:this}).style;=0A= else {=0A= String.__parseStyleElement.innerHTML =3D '
    this.t_off.left && x < this.t_off.left + this.t_dim.width &&=0A= y > (this.t_off.top - this.options.top_active_area_px) && y < = (this.t_off.top + this.t_dim.height)) {=0A= =0A= } else {=0A= // console.log('hiding ' + this.position_div.id + ' pos ' + x + ',' = + y + ' dim ' + this.t_dim.width + 'x' + this.t_dim.height + ' offset = top ' + this.t_off.top + ' left ' + this.t_off.left);=0A= =0A= this.unhoverHandler();=0A= } =0A= }=0A= },=0A= show: function() {=0A= this.hoverHandler();=0A= },=0A= hoverHandler: function() {=0A= document.observe('mousemove', = this.mouseHandler.bindAsEventListener(this));=0A= var dim =3D this.t_dim =3D this.hover_div.getDimensions();=0A= var off =3D this.t_off =3D this.hover_div.cumulativeOffset();=0A= =0A= =0A= var pos_dim =3D this.position_div.getDimensions();=0A= var pos_off =3D this.position_div.cumulativeOffset();=0A= =0A= // console.log('hovering position_div ' + this.position_div.id + ' dim = ' + dim.width + 'x' + dim.height + ' offset top ' + off.top + ' left ' + = off.left);=0A= =0A= this.child_divs.each(function(div) {=0A= this.position_child_div(pos_dim, pos_off, div);=0A= div.show();=0A= }.bind(this));=0A= },=0A= position_child_div: function(pos_dim, pos_off, div) {=0A= var new_div_style =3D {=0A= position: 'absolute', =0A= top: (pos_off.top - div.getHeight() + this.options.y_offset) + 'px'=0A= };=0A= =0A= if (this.child_div_position.get(div.getAttribute('id')) =3D=3D = 'topright') {=0A= new_div_style.left =3D (pos_off.left + pos_dim.width - = div.getWidth()) + 'px';=0A= } else {=0A= new_div_style.left =3D pos_off.left + 'px';=0A= }=0A= // console.log('child div ' + div.getAttribute('id') + ' ' + = this.child_div_position.get(div.getAttribute('id')) + ' left ' + = new_div_style.left + ' div width ' + div.getWidth());=0A= div.setStyle(new_div_style);=0A= },=0A= reposition: function(child_div) {=0A= var pos_dim =3D this.position_div.getDimensions();=0A= var pos_off =3D this.position_div.cumulativeOffset();=0A= this.position_child_div(pos_dim, pos_off, $(child_div))=0A= },=0A= unhoverHandler: function() {=0A= document.stopObserving('mousemove', = this.mouseHandler.bindAsEventListener(this));=0A= this.t_dim =3D null;=0A= this.t_off =3D null;=0A= =0A= this.child_divs.each(function(div) {=0A= if (!div.hasClassName('phover_donothide'))=0A= div.hide();=0A= });=0A= },=0A= addChildDiv: function(child_div, position) {=0A= this.child_divs.push($(child_div));=0A= this.child_div_position.set($(child_div).id, position);=0A= $(child_div).hide();=0A= =0A= }=0A= });=0A= =0A= PHover.created_hovers =3D new Hash();=0A= PHover.factory_create =3D function(hover_div, position_div, options) {=0A= if (!$(hover_div)) return;=0A= var existing =3D = PHover.created_hovers.get($(hover_div).getAttribute('id'));=0A= if (existing) {=0A= return existing;=0A= } else {=0A= var new_phover =3D new PHover(hover_div, position_div, options);=0A= PHover.created_hovers.set($(hover_div).getAttribute('id'), new_phover);=0A= return new_phover;=0A= }=0A= };=0A= =0A= if (typeof PSlideGallery2 =3D=3D "undefined") { var pgallery_stopclick =3D function(e) { Event.stop(e); }; =09 var loadingDiv =3D new Element('div', { 'style': 'width: 500; = padding-top: 158px; padding-bottom: 159px;text-align: center; border: = 1px solid #aaa;' }); var loadingImage =3D new Image(); loadingImage.src =3D 'http://www.posterous.com/images/loading.gif'; loadingImage.width =3D 16; loadingImage.height =3D 16; Element.extend(loadingImage).setAttribute('id', 'mainImage'); Element.extend(loadingImage).setAttribute('style', 'border: none;'); loadingDiv.appendChild(loadingImage); =09 var PImage2 =3D Class.create({ initialize: function(init_data){ Object.extend(this, init_data); =09 if (!this.thumb) { /* set default */ this.thumb =3D 'http://posterous.com/images/spacer.gif'; this.thumbWidth =3D 36; this.thumbHeight =3D 36; } =09 this.imageObj =3D Element.extend(new Image()); this.imageObj.observe('load', = this.imageLoaded.bindAsEventListener(this)); this.imageObj.src =3D this.main; =09 if (this.width) this.imageObj.width =3D this.width; if (this.height) this.imageObj.height =3D this.height; =09 this.loaded =3D false; =09 Element.extend(this.imageObj).setAttribute('id', 'mainImage'); }, imageLoaded: function(){ this.loaded =3D true; if (this.loadCallback !=3D null) { this.loadCallback(this.imageObj, this.loadCallback_meref); this.loadCallback =3D null; } }, getMainImage: function(callback, callingObj){ if (this.loaded =3D=3D true) { callback(this.imageObj, callingObj); // for test of loading div only // callback(loadingDiv, callingObj); } else { callback(loadingDiv, callingObj); this.loadCallback =3D callback; this.loadCallback_meref =3D callingObj; } } =09 }); =09 var PSlideGallery2 =3D Class.create({ initialize: function(galleryDiv, urls, options){ this.galleryDiv =3D galleryDiv; =09 this.zipFile =3D options['zipFile']; this.zipFileSize =3D options['zipFileSize']; this.showDownload =3D options['showDownload']; this.externalUrl =3D options['external_url']; =09 this.imageList =3D new Array(); $A(urls).each(function(image_url) { this.imageList.push(new PImage2(image_url)); }.bind(this)); =09 this.idx =3D 0; =09 if (this.imageList.length =3D=3D 1 && this.imageList[0].largeWidth = <=3D 500 && !this.externalUrl) // && this.imageList[0].largeHeight <=3D = 500) return; this.galleryDiv.update(''); // clear nojs fallback html this.generateGallery(); document.observe('keyup', = this.handleKeyboard.bindAsEventListener(this)); }, generateGallery: function(){ =09 if (this.imageList.length > 1) { var controlDiv =3D new Element('div', { 'style': 'margin-bottom: 3px;' }); =09 var leftLink =3D new Element('a', { 'href': '#', 'onclick': 'return false;', 'style': 'vertical-align: middle;' }); var leftArrow =3D ""; leftLink.update(leftArrow); controlDiv.appendChild(leftLink); =09 var spacer =3D document.createTextNode(" "); controlDiv.appendChild(spacer); =09 var rightLink =3D new Element('a', { 'href': '#', 'onclick': 'return false;', 'style': 'vertical-align: middle;' }); var rightArrow =3D ""; rightLink.update(rightArrow); controlDiv.appendChild(rightLink); =09 this.labelSpan =3D new Element('span'); this.labelSpan.addClassName('galleryLabel'); this.labelSpan.update("1 of " + this.imageList.length); controlDiv.appendChild(this.labelSpan); =09 this.registerPrev(leftLink); this.registerNext(rightLink); =09 this.galleryDiv.appendChild(controlDiv); =09 =09 =09 // set up thumbnails var thumbDiv =3D new Element('div', { 'style': 'margin-bottom: 2px' }); this.galleryDiv.appendChild(thumbDiv); for (var i =3D 0; i < this.imageList.length; i++) { var img =3D this.imageList[i]; if (img =3D=3D null) // || img.thumbUrl =3D=3D null) handle null = thumb continue; var thumbLink =3D new Element('a', { 'href': '#', 'onClick': 'return false;', 'style': 'margin-right: 5px !important;' }); var thumbImg =3D new Element('img', { 'src': img.thumb, 'width': img.thumbWidth, 'height': img.thumbWidth }); thumbLink.appendChild(thumbImg); thumbDiv.appendChild(thumbLink); img.thumbLink =3D thumbLink; this.registerThumb(i, thumbLink); =09 if (i =3D=3D 0) { thumbLink.addClassName('gallerySelectedImage'); } =09 } } this.mainLink =3D new Element('a', { 'href': '#', 'onClick': 'return false;' }); this.mainLink.addClassName('posterousGalleryMainlink'); this.mainImage =3D this.imageList[this.idx].imageObj; this.mainLink.appendChild(this.mainImage); this.galleryDiv.appendChild(this.mainLink); this.setupCommandPanel(); =09 this.registerMainImage(this.mainImage); }, setupCommandPanel: function() { if (this.commandSpan =3D=3D null) { this.commandSpan =3D new Element('span'); this.commandSpan.addClassName('show'); =09 var div1 =3D new Element('div', {'style':'color: #fff; font-size: = 14px;', 'id' : this.galleryDiv.id-"-click"}); div1.update(this.externalUrl ? "Click to view link" : "Click to view = large"); =09 if (this.imageList[this.idx].originalSize) { var div2 =3D new Element('div', {'style':'font-size: 14px;', 'id' : = this.galleryDiv.id-"-dl1"}); div2.addClassName('posterousGalleryLink'); div2.update("Download full size = ("+this.imageList[this.idx].originalSize+" KB)"); } =09 var div3 =3D new Element('div', {'style':'font-size: 14px;', 'id' : = this.galleryDiv.id-"-dl2"}); div3.addClassName('posterousGalleryLink'); div3.update("Download this gallery (ZIP, " + this.zipFileSize + " = KB)"); =09 this.commandDiv1 =3D div1; this.commandDiv2 =3D div2;=20 this.commandDiv3 =3D div3; =09 =09 this.commandSpan.appendChild(div1); if (this.showDownload) { this.commandSpan.appendChild(div3); this.commandSpan.appendChild(div2); div2.observe('click', = this.clickDownloadFull.bindAsEventListener(this)); =09 div3.observe('click', = this.clickDownloadGallery.bindAsEventListener(this)); } div1.observe('click', this.handleClick.bindAsEventListener(this)); =09 this.mainLink.appendChild(this.commandSpan); } var isSmall =3D (this.imageList[this.idx].largeWidth <=3D 500 && = this.imageList[this.idx].largeHeight <=3D 500 && !this.externalUrl); var hasZipFile =3D (this.zipFile !=3D null); =09 if (!isSmall) { this.commandDiv1.show();=20 this.commandDiv2.show(); =09 } else { this.commandDiv1.hide();=20 this.commandDiv2.hide(); } =09 if (hasZipFile) { this.commandDiv3.show(); } else { this.commandDiv3.hide(); } =09 if (!this.showDownload) { if (isSmall) { this.commandSpan.removeClassName('show'); } else { this.commandSpan.addClassName('show'); } } =09 }, clickDownloadFull: function() { window.open(this.imageList[this.idx].original); }, clickDownloadGallery: function() { window.open(this.zipFile); }, registerThumb: function(idx, thumbLink){ thumbLink.observe('mousedown', = this.handleThumbClick.bindAsEventListener(this, idx)); Event.observe(thumbLink, 'click', pgallery_stopclick, false); =09 }, handleThumbClick: function(){ var clickedIdx =3D $A(arguments)[1]; this.setIndex(clickedIdx); }, getCurrentPImage: function(){ return this.imageList[this.idx]; }, registerMainImage: function(mainImage){ this.mainImage.observe('mousedown', = this.handleClick.bindAsEventListener(this)); }, unregisterMainImage: function(mainImage){ this.mainImage.stopObserving('mousedown', = this.handleClick.bindAsEventListener(this)); }, =09 handleClick: function(evt){ Event.stop(evt); if (this.externalUrl) { document.location.href =3D this.externalUrl; } else { this.setupLargeImage(); } }, setupLargeImage: function() { var current =3D this.getCurrentPImage(); if (current.large !=3D null) { var modal =3D Control.Modal.open( "", = { opacity: 0.6, width: parseInt(current.largeWidth), height: = parseInt(current.largeHeight) }); } }, =09 registerPrev: function(prevLink){ prevLink.observe('mousedown', = this.prevButtonClick.bindAsEventListener(this)); Event.observe(prevLink, 'click', pgallery_stopclick, false); }, =09 isVisibleInViewport: function() { var topOffset =3D $(this.galleryDiv).viewportOffset().top; return topOffset >=3D -200 && topOffset <=3D = document.viewport.getHeight() - 200; }, =09 handleKeyboard: function(evt) { if (!this.isVisibleInViewport()) return; var key =3D evt.charCode || evt.keyCode; if (key =3D=3D 37) this.prev(); else if (key =3D=3D 39) this.next(); }, =09 prevButtonClick: function(){ this.prev(); }, prev: function(){ if (this.idx =3D=3D 0)=20 this.setIndex(this.imageList.length - 1); else=20 this.setIndex(this.idx - 1); }, registerNext: function(nextLink){ nextLink.observe('mousedown', = this.nextButtonClick.bindAsEventListener(this)); Event.observe(nextLink, 'click', pgallery_stopclick, false); =09 }, nextButtonClick: function(){ this.next(); }, next: function(){ if (this.idx =3D=3D this.imageList.length - 1)=20 this.setIndex(0); else=20 this.setIndex(this.idx + 1); }, setIndex: function(nextIndex){ =09 if (this.imageList[nextIndex].thumb !=3D null) { = this.imageList[this.idx].thumbLink.removeClassName('gallerySelectedImage'= ); = this.imageList[nextIndex].thumbLink.addClassName('gallerySelectedImage');= } this.idx =3D nextIndex; this.labelSpan.update((this.idx + 1) + " of " + = this.imageList.length); this.imageList[this.idx].getMainImage(this.setMainImage, this); =09 if (Control.Modal.current && $('posterousGalleryExpandedImg_' + = this.galleryDiv.id)) { this.setupLargeImage(); } =09 }, setMainImage: function(nextImage, me){ if (me =3D=3D null) me =3D this; if (nextImage =3D=3D null) return; me.unregisterMainImage(me.mainImage); $(me.mainImage).replace(nextImage); me.mainImage =3D nextImage; me.registerMainImage(me.mainImage); me.setupCommandPanel(); } =09 }); =09 }=0A= =0A= /*=20 * Posterous Widget Gallery *=20 * Copyright 2008 posterous.com All Rights Reserved=20 * garry@posterous.com */ if (PWidgets =3D=3D null) { var PWidgets =3D "loaded"; // alert("this is run"); =09 Event.observe(window, 'load', function() {=20 var items =3D $$('div.post img'); for (var i =3D 0; i < items.length; i++) { var img =3D items[i]; if (img.width > 500) { new PosterousLargeExternal(img); } } } ); =09 var PosterousLargeExternal =3D Class.create({ initialize: function(element){ this.element =3D element; this.oldWidth =3D element.width; this.oldHeight =3D element.height; element.observe('click', this.handleClick.bindAsEventListener(this)); =09 var newdim =3D posterous_resize_image(element.width, element.height, = 500); if (newdim !=3D null) { element.width =3D newdim[0]; element.height =3D newdim[1]; } element.addClassName('pointer_cursor');=09 }, handleClick: function() { var modal =3D Control.Modal.open( ""+ "",=20 { opacity: 0.6 }); } }); =09 =09 =09 function posterous_resize_image(width, height, maxWidth) { if (width > maxWidth) { return [maxWidth, maxWidth * height / width]; } else { return null; } } var pw_stopclick =3D function(e) { Event.stop(e); }; }=0A= =0A= /**=0A= * SWFObject v1.5: Flash Player detection and embed - = http://blog.deconcept.com/swfobject/=0A= *=0A= * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT = License:=0A= * http://www.opensource.org/licenses/mit-license.php=0A= *=0A= */=0A= if(typeof deconcept=3D=3D"undefined"){var deconcept=3Dnew = Object();}if(typeof = deconcept.util=3D=3D"undefined"){deconcept.util=3Dnew = Object();}if(typeof = deconcept.SWFObjectUtil=3D=3D"undefined"){deconcept.SWFObjectUtil=3Dnew = Object();}deconcept.SWFObject=3Dfunction(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!= document.getElementById){return;}this.DETECT_KEY=3D_a?_a:"detectflash";th= is.skipDetect=3Ddeconcept.util.getRequestParameter(this.DETECT_KEY);this.= params=3Dnew Object();this.variables=3Dnew = Object();this.attributes=3Dnew = Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id"= ,id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height= ",h);}if(_5){this.setAttribute("version",new = deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=3Dd= econcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&= &this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=3Dtrue;}if(c= ){this.addParam("bgcolor",c);}var = q=3D_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpress= Install",false);this.setAttribute("doExpressInstall",false);var = _c=3D(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.s= etAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);= }};deconcept.SWFObject.prototype=3D{useExpressInstall:function(_d){this.x= iSWFPath=3D!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInsta= ll",true);},setAttribute:function(_e,_f){this.attributes[_e]=3D_f;},getAt= tribute:function(_10){return = this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=3D_12;= },getParams:function(){return = this.params;},addVariable:function(_13,_14){this.variables[_13]=3D_14;},g= etVariable:function(_15){return = this.variables[_15];},getVariables:function(){return = this.variables;},getVariablePairs:function(){var _16=3Dnew Array();var = key;var _18=3Dthis.getVariables();for(key in = _18){_16[_16.length]=3Dkey+"=3D"+_18[key];}return = _16;},getSWFHTML:function(){var = _19=3D"";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.l= ength){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplay= erType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19=3D"0){_19+=3D"flashvar= s=3D\""+_1c+"\"";}_19+=3D"/>";}else{if(this.getAttribute("doExpressInstal= l")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",t= his.xiSWFPath);}_19=3D"";_19+=3D"";var = _1d=3Dthis.getParams();for(var key in _1d){_19+=3D"";}var = _1f=3Dthis.getVariablePairs().join("&");if(_1f.length>0){_19+=3D"";}_19+=3D"";}return = _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var = _21=3Dnew = deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21= )&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.= setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",es= cape(this.getAttribute("xiRedirectUrl")));document.title=3Ddocument.title= .slice(0,47)+" - Flash Player = Installation";this.addVariable("MMdoctitle",document.title);}}if(this.ski= pDetect||this.getAttribute("doExpressInstall")||this.installedVer.version= IsValid(this.getAttribute("version"))){var n=3D(typeof = _20=3D=3D"string")?document.getElementById(_20):_20;n.innerHTML=3Dthis.ge= tSWFHTML();return = true;}else{if(this.getAttribute("redirectUrl")!=3D""){document.location.r= eplace(this.getAttribute("redirectUrl"));}}return = false;}};deconcept.SWFObjectUtil.getPlayerVersion=3Dfunction(){var = _23=3Dnew = deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeType= s.length){var x=3Dnavigator.plugins["Shockwave = Flash"];if(x&&x.description){_23=3Dnew = deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replac= e(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&nav= igator.userAgent.indexOf("Windows CE")>=3D0){var axo=3D1;var = _26=3D3;while(axo){try{_26++;axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=3Dnew = deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=3Dnull;}}}else{try{var = axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var = axo=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=3Dnew = deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=3D"always";}catch= (e){if(_23.major=3D=3D6){return _23;}}try{axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=3Dnull= ){_23=3Dnew deconcept.PlayerVersion(axo.GetVariable("$version").split(" = ")[1].split(","));}}}return = _23;};deconcept.PlayerVersion=3Dfunction(_29){this.major=3D_29[0]!=3Dnull= ?parseInt(_29[0]):0;this.minor=3D_29[1]!=3Dnull?parseInt(_29[1]):0;this.r= ev=3D_29[2]!=3Dnull?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototyp= e.versionIsValid=3Dfunction(fv){if(this.majorfv.major){return = true;}if(this.minorfv.minor){return true;}if(this.rev=3D0;i--){_2f[i].style.display=3D"none";for(var x in = _2f[i]){if(typeof = _2f[i][x]=3D=3D"function"){_2f[i][x]=3Dfunction(){};}}}};if(deconcept.SWF= Object.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.pre= pUnload=3Dfunction(){__flash_unloadHandler=3Dfunction(){};__flash_savedUn= loadHandler=3Dfunction(){};window.attachEvent("onunload",deconcept.SWFObj= ectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFO= bjectUtil.prepUnload);deconcept.unloadSet=3Dtrue;}}if(!document.getElemen= tById&&document.all){document.getElementById=3Dfunction(id){return = document.all[id];};}var = getQueryParamValue=3Ddeconcept.util.getRequestParameter;var = FlashObject=3Ddeconcept.SWFObject;var SWFObject=3Ddeconcept.SWFObject;=0A= =0A= =0A= var PFavorite =3D Class.create({=0A= =0A= initialize: function(hoverContainer, positionContainer, postid, = isFaved, options) {=0A= this.options =3D Object.extend({=0A= y_offset: 20=0A= }, options || {} );=0A= =0A= this.hoverContainer =3D $(hoverContainer);=0A= this.positionContainer =3D $(positionContainer);=0A= this.postid =3D postid;=0A= this.isFaved =3D isFaved;=0A= this.mouseoverHandler =3D = this.mouseoverHandler_delegate.bindAsEventListener(this);=0A= this.mouseoutHandler =3D = this.mouseoutHandler_delegate.bindAsEventListener(this);=0A= this.clickHandler =3D = this.clickHandler_delegate.bindAsEventListener(this);=0A= this.isLoading =3D false;=0A= =0A= this.createFavPanel();=0A= =0A= this.tooltip =3D PHover.factory_create(hoverContainer, = positionContainer, this.options);=0A= this.tooltip.addChildDiv(this.favpanel, 'topright');=0A= // this.favpanel, {'position': 'upperright', 'marginTop': 2});=0A= =0A= this.favpanel.observe('mouseover', this.mouseoverHandler);=0A= this.favpanel.observe('mouseout', this.mouseoutHandler);=0A= this.favpanel.observe('click', this.clickHandler);=0A= },=0A= =0A= createFavPanel: function() {=0A= =0A= //
    " style=3D"cursor: pointer; = display:none; background-color: #fff; padding: 3px 3px 3px 6px; = margin-top: -3px; margin-right: -3px;">
    =0A= this.favpanel =3D new Element('div', {=0A= id: 'favpanel_' + this.postid, =0A= style: 'display:none;'});=0A= this.favpanel.addClassName('fav_star');=0A= // this.hoverContainer.appendChild(this.favpanel);=0A= document.body.appendChild(this.favpanel);=0A= =0A= // " style=3D"font-size: 10px; = color: #090; display:none;">Fav this post "/>=0A= =0A= this.messageDiv =3D new Element('span', =0A= {style: 'font-size: 10px; font-family: Arial, Helvetica, sans-serif; = color: #090; display:none; margin-right: 4px; margin-left: 1px'});=0A= this.favpanel.appendChild(this.messageDiv);=0A= =0A= this.favImg =3D new Element('img', {src: '/images/icons/star.png', = width: 16, height: 16, style: 'vertical-align:middle;'});=0A= this.favpanel.appendChild(this.favImg);=0A= =0A= this.updateView();=0A= },=0A= =0A= mouseoverHandler_delegate: function(evt) {=0A= if (!this.isLoading) {=0A= this.messageDiv.show();=0A= this.favpanel.addClassName('fav_mouseover');=0A= }=0A= this.resetFavpanelPosition();=0A= },=0A= =0A= mouseoutHandler_delegate: function(evt) {=0A= if (!this.isLoading) {=0A= this.messageDiv.hide();=0A= this.favpanel.removeClassName('fav_mouseover');=0A= }=0A= this.resetFavpanelPosition();=0A= },=0A= =0A= updateMessage: function() {=0A= if (this.isLoading) {=0A= this.messageDiv.innerHTML =3D "Saving...";=0A= } else if (this.isFaved) {=0A= this.messageDiv.innerHTML =3D "Unfavorite this";=0A= } else {=0A= this.messageDiv.innerHTML =3D "Favorite this";=0A= }=0A= },=0A= =0A= updateIcon: function() {=0A= if (this.isLoading) {=0A= this.favImg.src =3D '/images/loading.gif';=0A= } else if (this.isFaved) {=0A= this.favImg.src =3D '/images/icons/star.png';=0A= } else {=0A= this.favImg.src =3D '/images/icons/star-hover.png';=0A= }=0A= },=0A= =0A= updateView: function() {=0A= this.updateMessage();=0A= this.updateIcon();=0A= },=0A= =0A= =0A= clickHandler_delegate: function(evt) {=0A= this.isLoading =3D true;=0A= this.messageDiv.show();=0A= this.updateView();=0A= =0A= this.favpanel.addClassName('phover_donothide');=0A= var me =3D this;=0A= new Ajax.Updater(this.messageDiv, '/reader/favorite', {=0A= parameters: { id: this.postid, add: !me.isFaved, authenticity_token: = window._token},=0A= onLoading: function() {=0A= me.resetFavpanelPosition();=0A= },=0A= onComplete: function() {=0A= me.isFaved =3D !me.isFaved;=0A= me.isLoading =3D false;=0A= me.updateIcon();=0A= me.resetFavpanelPosition(); =0A= }=0A= });=0A= },=0A= =0A= resetFavpanelPosition: function() {=0A= this.tooltip.reposition(this.favpanel.getAttribute('id'));=0A= }=0A= =0A= });=0A= =0A= =0A= var PComment =3D Class.create({=0A= =0A= initialize: function(commentLink, postId, container) {=0A= this.container =3D $(container);=0A= this.postId =3D postId;=0A= this.commentLink =3D $(commentLink);=0A= =0A= this.linkClickHandler =3D = this.linkClick_delegate.bindAsEventListener(this);=0A= =0A= this.commentLink.observe('click', this.linkClickHandler);=0A= },=0A= =0A= linkClick_delegate: function(evt) {=0A= =0A= $(this.commentLink.parentNode).hide();=0A= =0A= if (this.commentDiv =3D=3D null) {=0A= this.createCommentDiv();=0A= } else {=0A= // this.commentDiv.show();=0A= Effect.SlideDown(this.outerDiv, { duration: 0.5 });=0A= }=0A= =0A= Event.stop(evt);=0A= return false;=0A= },=0A= hideCommentDiv: function() {=0A= Effect.SlideUp(this.outerDiv);=0A= Effect.SlideDown($(this.commentLink.parentNode));=0A= },=0A= createCommentDiv: function() {=0A= =0A= this.outerDiv =3D new Element('div', {'class': = 'posterous_comments_wrapper', style: 'display: none'});=0A= this.commentDiv =3D new Element('div', {style: "margin-bottom: = 30px;"});=0A= this.commentDiv.addClassName('posterous_comments'); =0A= this.loadingDiv =3D new Element('div', {style: "display: none;"});=0A= this.loadingDiv.addClassName('comment_loading_div');=0A= this.loadingImg =3D new Element('img', {src: "/images/loading.gif"});=0A= =0A= this.loadingDiv.appendChild(this.loadingImg);=0A= this.container.appendChild(this.loadingDiv);=0A= this.outerDiv.appendChild(this.commentDiv);=0A= this.container.appendChild(this.outerDiv);=0A= =0A= this.loadingDiv.show();=0A= =0A= var me =3D this;=0A= =0A= new Ajax.Updater(this.commentDiv, '/posts/getcomments', {=0A= parameters: { id: this.postId, authenticity_token: window._token },=0A= evalScripts: true,=0A= onLoading: function() {},=0A= onComplete: function() {=0A= // me.commentDiv.show();=0A= Effect.SlideDown(me.outerDiv, { duration: 0.5 });=0A= me.loadingDiv.hide();=0A= =0A= FB.XFBML.parse(); =0A= }=0A= });=0A= }=0A= });=0A= =0A= =0A= /** =0A= * @description prototype.js based context menu=0A= * @author Juriy Zaytsev; kangax [at] gmail [dot] com; = http://thinkweb2.com/projects/prototype/=0A= * @version 0.6=0A= * @date 12/03/07=0A= * @requires prototype.js 1.6=0A= * =0A= * modified by garry@posterous.com for left click menus on split buttons=0A= */=0A= if (Object.isUndefined(Proto)) { var Proto =3D { } }=0A= =0A= Proto.Menu =3D Class.create({=0A= initialize: function() {=0A= var e =3D Prototype.emptyFunction;=0A= this.ie =3D Prototype.Browser.IE;=0A= this.options =3D Object.extend({=0A= selector: '.contextmenu',=0A= className: 'protoMenu',=0A= pageOffset: 25,=0A= fade: false,=0A= zIndex: 100,=0A= beforeShow: e,=0A= beforeHide: e,=0A= beforeSelect: e,=0A= position: 'mouse_click', // can be mouse_click or relative=0A= location: null, // needed if set to relative, should be a DOM = element to use for location=0A= click: 'right', // by default, right click=0A= width: null, // if null, then don't set width on the div=0A= menuAlign: 'left' // can align right if location set and position = is relative=0A= // iconCSS: null // if not null, set an icon for the menu item = using that css, e.g. url(images/email.png) 2px 50% no-repeat=0A= }, arguments[0] || { });=0A= =0A= this.shim =3D new Element('iframe', {=0A= style: = 'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity= =3D0);display:none',=0A= src: 'javascript:false;',=0A= frameborder: 0=0A= });=0A= =0A= this.options.fade =3D this.options.fade && !Object.isUndefined(Effect);=0A= this.container =3D new Element('div', {className: = this.options.className, style: 'display:none'});=0A= if (this.options.width !=3D null) {=0A= this.container.setStyle({ width: this.options.width + 'px'});=0A= }=0A= var list =3D new Element('ul');=0A= this.options.menuItems.each(function(item) {=0A= var aLink =3D '';=0A= if (!item.separator) {=0A= aLink =3D Object.extend(new Element('a', {=0A= href: ((!item.href || item.method =3D=3D 'post' || item.method = =3D=3D 'put' || item.method =3D=3D 'delete') ? '#': item.href),=0A= title: item.name,=0A= className: (item.className || '') + (item.disabled ? ' disabled' : = ' enabled')=0A= }), { _method: item.method, _params: item.params, _confirm: = item.confirm, _href: item.href, _callback: item.callback });=0A= aLink.observe('click', this.onClick.bind(this));=0A= aLink.observe('contextmenu', Event.stop);=0A= aLink.update(item.name);=0A= if (item.icon) {=0A= aLink.setStyle({ =0A= backgroundImage: 'url(' + item.icon + ')',=0A= backgroundPosition: '8px 50%',=0A= backgroundRepeat: 'no-repeat'=0A= });=0A= }=0A= }=0A= list.insert(new Element('li', {className: item.separator ? = 'separator' : ''}).insert(aLink));=0A= =0A= }.bind(this));=0A= =0A= = $(document.body).insert(this.container.insert(list).observe('contextmenu'= , Event.stop));=0A= if (this.ie) { $(document.body).insert(this.shim) }=0A= =0A= if (this.options.click =3D=3D 'right') { // if right clicking causes = it to pop up, treat it like a context menu=0A= document.observe('click', function(e) {=0A= if (this.container.visible() && (!e.isRightClick())) {=0A= this.options.beforeHide(e);=0A= if (this.ie) this.shim.hide();=0A= this.container.hide();=0A= }=0A= }.bind(this));=0A= =0A= $$(this.options.selector).invoke('observe', Prototype.Browser.Opera ? = 'click' : 'contextmenu', function(e){=0A= if (Prototype.Browser.Opera && !e.ctrlKey) {=0A= return;=0A= }=0A= this.show(e);=0A= }.bind(this));=0A= =0A= } else { // else left click =0A= document.observe('click', function(e) {=0A= if (this.container.visible()) {=0A= this.options.beforeHide(e);=0A= if (this.ie) this.shim.hide();=0A= this.container.hide();=0A= }=0A= }.bind(this));=0A= =0A= $$(this.options.selector).invoke('observe', 'click', function(e){ =0A= this.container.visible() ? this.container.hide() : this.show(e); =0A= e.stop();=0A= }.bind(this));=0A= }=0A= },=0A= is_form_post: function(item) {=0A= return ;=0A= },=0A= show: function(e) {=0A= e.stop();=0A= this.options.beforeShow(e);=0A= var x =3D Event.pointer(e).x, y =3D Event.pointer(e).y, elDim =3D = this.container.getDimensions();=0A= =0A= if (this.options.position =3D=3D 'relative') {=0A= var elemOffset =3D this.options.location.cumulativeOffset();=0A= if (this.options.menuAlign =3D=3D 'left') {=0A= x =3D elemOffset[0];=0A= y =3D elemOffset[1] + this.options.location.getHeight() - 2;=0A= } else {=0A= x =3D elemOffset[0] + this.options.location.getWidth() - elDim.width;=0A= y =3D elemOffset[1] + this.options.location.getHeight() - 2;=0A= }=0A= }=0A= =0A= var vpDim =3D document.viewport.getDimensions(),=0A= vpOff =3D document.viewport.getScrollOffsets(),=0A= elOff =3D {=0A= left: ((x + elDim.width + this.options.pageOffset) > vpDim.width =0A= ? (vpDim.width - elDim.width - this.options.pageOffset) : x) + 'px',=0A= top: ((y - vpOff.top + elDim.height) > vpDim.height && (y - = vpOff.top) > elDim.height =0A= ? (y - elDim.height) : y) + 'px'=0A= };=0A= =0A= this.container.setStyle(elOff).setStyle({zIndex: this.options.zIndex});=0A= if (this.ie) { =0A= this.shim.setStyle(Object.extend(Object.extend(elDim, elOff), = {zIndex: this.options.zIndex - 1})).show();=0A= }=0A= this.options.fade ? Effect.Appear(this.container, {duration: 0.25}) : = this.container.show();=0A= this.event =3D e;=0A= =0A= },=0A= onClick: function(e) {=0A= var hide_after =3D false;=0A= if (e.target._href && (!e.target._method || e.target._method =3D=3D = 'get')) { // normal href=0A= return true;=0A= } else if (e.target._method =3D=3D 'delete') { // post=0A= if (confirm('Are you sure?')) { =0A= var f =3D document.createElement('form'); f.style.display =3D = 'none'; e.target.appendChild(f); f.method =3D 'POST'; f.action =3D = e.target._href;=0A= =0A= var m =3D document.createElement('input'); m.setAttribute('type', = 'hidden'); =0A= m.setAttribute('name', '_method'); m.setAttribute('value', = 'delete'); =0A= f.appendChild(m);=0A= =0A= m =3D document.createElement('input'); m.setAttribute('type', = 'hidden'); =0A= m.setAttribute('name', 'authenticity_token'); = m.setAttribute('value', window._token); =0A= f.appendChild(m);=0A= =0A= $H(e.target._params).each(function(pair) {=0A= m =3D document.createElement('input'); m.setAttribute('type', = 'hidden'); =0A= m.setAttribute('name', pair.key); m.setAttribute('value', = pair.value); =0A= f.appendChild(m);=0A= });=0A= =0A= f.submit(); =0A= e.stop();=0A= return false;=0A= } else {=0A= hide_after =3D true;=0A= }=0A= }=0A= =0A= // callback=0A= e.stop(); =0A= if ((hide_after || e.target._callback) && = !e.target.hasClassName('disabled')) {=0A= this.options.beforeSelect(e);=0A= if (this.ie) this.shim.hide();=0A= this.container.hide();=0A= e.target._callback(this.event);=0A= }=0A= return true;=0A= }=0A= })=0A= =0A= =0A= var PTwitterComment =3D Class.create({=0A= =0A= initialize: function(twitterCheckbox, commentBox, twitterBox, = twitterDiv, twitterUsername, twitterShorturl, showLink) {=0A= this.twitterCheckbox =3D $(twitterCheckbox);=0A= this.commentBox =3D $(commentBox); =0A= this.twitterBox =3D $(twitterBox); =0A= this.twitterDiv =3D $(twitterDiv); =0A= this.twitterUsername =3D twitterUsername;=0A= this.twitterShorturl =3D twitterShorturl; =0A= this.linkOutput =3D true;=0A= this.showLink =3D showLink;=0A= this.setup();=0A= this.updateAll();=0A= },=0A= updateAll: function() {=0A= this.updateTwitterBox();=0A= this.updateCheckbox();=0A= },=0A= setup: function() {=0A= this.twitterCheckbox.observe('click', = this.updateCheckbox.bindAsEventListener(this));=0A= this.twitterBox.observe('change', function() { this.linkOutput =3D = false; }.bindAsEventListener(this));=0A= this.twitterBox.observe('keyup', = this.updateTwitterCount.bindAsEventListener(this));=0A= this.commentBox.observe('keyup', = this.updateTwitterBox.bindAsEventListener(this));=0A= =0A= this.numLeft =3D new Element('div', {style: 'font-size: 10px; color: = #090; line-height: 12px;'});=0A= this.twitterDiv.appendChild(this.numLeft);=0A= this.twitterBoxExpander =3D new Texpand(this.twitterBox);=0A= },=0A= getCommentBoxValue: function() {=0A= return this.commentBox.value.gsub(/\n/, '');=0A= },=0A= specialTruncate: function(value, len) {=0A= if (value.length > len) {=0A= value =3D value.substring(0, len-3).replace(/[ \.]\w+$/, '');=0A= value +=3D "...";=0A= }=0A= return value;=0A= },=0A= updateTwitterBox: function() {=0A= if (!this.linkOutput) return;=0A= var prefix =3D (this.twitterUsername) ? this.twitterUsername + " " : ""=0A= var suffix =3D (this.twitterShorturl) ? " " + this.twitterShorturl : = "";=0A= var remaining =3D 140 - (prefix.length);=0A= var commentBoxValue =3D this.getCommentBoxValue();=0A= =0A= if (remaining >=3D commentBoxValue.length && this.twitterUsername && = !this.showLink) {=0A= // this will always show @poster blah blah blah=0A= // if there's no twitter user for the poster then we always show = post.ly otherwise no context=0A= this.twitterBox.value =3D prefix + commentBoxValue;=0A= } else if (commentBoxValue.length > 0) {=0A= this.twitterBox.value =3D prefix + = this.specialTruncate(commentBoxValue, remaining - suffix.length) + = suffix;=0A= }=0A= this.updateTwitterCount();=0A= this.twitterBoxExpander._autoExpand();=0A= },=0A= updateTwitterCount: function() {=0A= var remaining =3D 140 - this.twitterBox.value.length;=0A= if (remaining >=3D 0) {=0A= this.numLeft.innerHTML =3D remaining + " characters left";=0A= } else {=0A= this.numLeft.innerHTML =3D (-1 * remaining) + " characters over the = 140 character limit";=0A= }=0A= },=0A= updateCheckbox: function() {=0A= (this.twitterCheckbox.checked) ? this.twitterDiv.show() : = this.twitterDiv.hide();=0A= }=0A= =0A= });=0A= =0A= =0A= var retweet_modal_window =3D null;=0A= =0A= // Element.observe(window,'load', function() {=0A= // if (window.url_to_ids =3D=3D undefined) fetch_retweet_counts();=0A= // });=0A= =0A= function client_retweet_update( json_response ) {=0A= =0A= retweets =3D json_response["tweetcounts"];=0A= for (i=3D0; i< retweets.length; i++) {=0A= url =3D retweets[i].url;=0A= count =3D retweets[i].tweetcount;=0A= post_id =3D url_to_ids[url];=0A= =0A= count_id =3D 'num_tweets_' + post_id;=0A= parent_id =3D 'retweet_count_' + post_id;=0A= label_id =3D 'retweet_count_label_' + post_id; =0A= =0A= // console.log("count_id =3D " + count_id + " parent_id =3D " + = parent_id + " label_id =3D " + label_id + " count =3D " + count);=0A= if ($(count_id)) $(count_id).update(count); =0A= if (count =3D=3D 0) {=0A= if ($(parent_id)) $(parent_id).hide();=0A= } else if (count =3D=3D 1) {=0A= if ($(label_id)) $(label_id).update('mention');=0A= }=0A= }=0A= }=0A= =0A= function fetch_retweet_counts() {=0A= =0A= var post_ids =3D [];=0A= span_elems =3D $$("span[id]")=0A= for (i=3D0; i but got = <'+this.element.tagName.toLowerCase()+'>');=0A= if (typeof Prototype=3D=3D'undefined' || = (parseFloat(Prototype.Version.split(".")[0] + "." + = Prototype.Version.split(".")[1]) < 1.6)) throw('Texpand: requires = Prototype 1.6.0+');=0A= if (typeof Effect=3D=3D'undefined') throw('Textpand: requires = Script.aculo.us, specifically Effects');=0A= =0A= // Setup Textarea & mimic=0A= this.element.insert({after: '
    '});=0A= this.mimic =3D this.element.next();=0A= this.mimic.update(this.element.value);=0A= =0A= // Fix IE default font size, based on a 10px em unit=0A= if (Prototype.Browser.IE) {=0A= var fontSize =3D this.element.getStyle('fontSize');=0A= if (fontSize.search(/em/) >=3D 0) {=0A= var pixelSize =3D parseFloat(fontSize.replace(/em/, ''))*10;=0A= this.element.setStyle({fontSize: pixelSize+'px'});=0A= }=0A= }=0A= =0A= // Duplicate style=0A= var style =3D {};=0A= var properties =3D $w('borderBottomColor borderBottomStyle = borderBottomWidth borderTopColor borderTopStyle borderTopWidth = borderRightColor borderRightStyle borderRightWidth borderLeftColor = borderLeftStyle borderLeftWidth fontSize fontFamily fontWeight = letterSpacing lineHeight marginTop marginRight marginBottom marginLeft = paddingTop paddingRight paddingBottom paddingLeft textAlign textIndent = width wordSpacing');=0A= properties.each(function(property){=0A= style[property] =3D obj.element.getStyle(property);=0A= });=0A= this.mimic.setStyle(style);=0A= this.mimic.setStyle({display: 'none', position: 'absolute', left: = '-9999px', top: '-9999px'});=0A= =0A= // Listen=0A= this.element.observe("keyup", obj._autoExpand.bind(obj));=0A= =0A= this._autoExpand(null);=0A= return this.element;=0A= },=0A= =0A= // Auto expand height if required=0A= _autoExpand: function(ev) {=0A= this.mimic.update(this.element.value.replace(/\n/gm, '
    '));=0A= =0A= var mimicCurrentHeight =3D this.mimic.getHeight();=0A= var elementCurrentHeight =3D this.element.getHeight();=0A= var differenceHeight =3D = elementCurrentHeight-mimicCurrentHeight;=0A= var targetHeight =3D elementCurrentHeight + (this.increment = - differenceHeight);=0A= =0A= if (differenceHeight < this.increment) {=0A= // Clear queue=0A= var queue =3D Effect.Queues.get('texpand'+this.element.identify());=0A= queue.each(function(effect) { effect.cancel(); });=0A= =0A= // Expand=0A= this.element.morph('height: '+targetHeight+'px;', { duration: 0.1, = queue: { position: 'end', scope: 'texpand'+this.element.identify(), = limit: 2 } });=0A= }=0A= }=0A= };=0A= =0A= =0A= =0A= var PosterousHeader =3D Class.create({=0A= initialize: function(headerDiv, options) {=0A= this.options =3D Object.extend({=0A= imgClear: '/images/header/default-clear-right.png',=0A= imgColored: '/images/header/yellow-arrow.png',=0A= imgArrow: '/images/header/yellow-arrow.png',=0A= imgExpanded: '/images/header/yellow-expanded.png',=0A= =0A= imgClearLeft: '/images/header/default-clear-left.png',=0A= imgColoredLeft: '/images/header/yellow-arrow-left.png',=0A= imgArrowLeft: '/images/header/yellow-arrow-left.png',=0A= imgExpandedLeft: '/images/header/yellow-expanded-left.png',=0A= =0A= clearDefault: true,=0A= top_active_area_px: 100,=0A= hide_offset_px: 50,=0A= direction: 'right'=0A= }, options || {} );=0A= =0A= this.headerDiv =3D $(headerDiv);=0A= this.viewstate =3D ''; // hidden, arrow, and expanded are the 3 states=0A= this.setup();=0A= },=0A= setup: function() {=0A= if ($('posterousbar_nojs')) $('posterousbar_nojs').hide();=0A= =0A= if (this.options.clearDefault) {=0A= var bgcolor =3D this.getParentBackgroundColor(this.headerDiv.up());=0A= if (this.getColorSum(bgcolor) > 384) {=0A= this.headerDiv.addClassName('posterousHeaderLight'); =0A= } else {=0A= this.headerDiv.addClassName('posterousHeaderDark'); =0A= }=0A= } else { =0A= this.headerDiv.addClassName('posterousHeaderLight');=0A= }=0A= =0A= if (this.options.direction =3D=3D 'left') = this.headerDiv.addClassName('posterousHeaderLeft');=0A= =0A= this.headerDiv.addClassName('posterousHeader');=0A= var contents =3D this.headerDiv.innerHTML;=0A= this.headerDiv.innerHTML =3D '';=0A= =0A= if (this.options.direction =3D=3D 'right') {=0A= this.defaultImg =3D new Element('img', =0A= {src: (this.options.clearDefault ? this.options.imgClear : = this.options.imgColored) }).addClassName('posterousHeaderImageRight'); =0A= this.defaultArrowImg =3D new Element('img', {src: = this.options.imgArrow, style: 'display: = none;'}).addClassName('posterousHeaderImageRight');=0A= this.defaultExpandedImg =3D new Element('img', {src: = this.options.imgExpanded, style: 'display: = none;'}).addClassName('posterousHeaderImageRight');=0A= } else {=0A= this.defaultImg =3D new Element('img', =0A= {src: (this.options.clearDefault ? this.options.imgClearLeft : = this.options.imgColoredLeft) = }).addClassName('posterousHeaderImageLeft'); =0A= this.defaultArrowImg =3D new Element('img', {src: = this.options.imgArrowLeft, style: 'display: = none;'}).addClassName('posterousHeaderImageLeft');=0A= this.defaultExpandedImg =3D new Element('img', {src: = this.options.imgExpandedLeft, style: 'display: = none;'}).addClassName('posterousHeaderImageLeft');=0A= }=0A= =0A= var posterousLink =3D new Element('a', {href: = 'http://posterous.com/'});=0A= posterousLink.appendChild(this.defaultImg);=0A= posterousLink.appendChild(this.defaultArrowImg);=0A= posterousLink.appendChild(this.defaultExpandedImg); =0A= this.posterousImg =3D this.defaultImg; =0A= this.headerDiv.appendChild(posterousLink);=0A= =0A= this.expandedDiv =3D new Element('div', { id: this.headerDiv.id + = 'expanded_content', style: 'display: none;'}).update('Hello world!');=0A= this.expandedDiv.innerHTML =3D contents;=0A= this.expandedDiv.addClassName(=0A= ( this.options.direction =3D=3D 'right' ? =0A= (this.options.clearDefault ? 'posterousHeaderExpandedDivRight' : = 'posterousHeaderExpandedDivRightOpaque') : =0A= (this.options.clearDefault ? 'posterousHeaderExpandedDivLeft' : = 'posterousHeaderExpandedDivLeftOpaque')=0A= )=0A= );=0A= this.headerDiv.appendChild(this.expandedDiv);=0A= =0A= this.setState('hidden');=0A= =0A= document.observe('mousemove', = this.mouseHandler.bindAsEventListener(this));=0A= =0A= Effect.Appear(this.headerDiv);=0A= =0A= //this.headerDiv.show();=0A= },=0A= getParentBackgroundColor: function(elem) {=0A= if (elem.getStyle =3D=3D null) return 'transparent';=0A= var bgcolor =3D elem.getStyle('background-color');=0A= if (bgcolor && bgcolor !=3D 'transparent' && bgcolor !=3D 'rgba(0, 0, = 0, 0)') {=0A= return bgcolor;=0A= } =0A= if (!elem.up()) return 'transparent';=0A= return this.getParentBackgroundColor(elem.up())=0A= },=0A= =0A= getColorSum: function(color_str) {=0A= var sum =3D 0;=0A= if (Prototype.Browser.IE) {=0A= color_str =3D color_str.gsub(/^#/, '');=0A= color_str =3D = color_str.gsub(/^([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/, = '#{1}#{1}#{2}#{2}#{3}#{3}');=0A= color_str =3D = color_str.gsub(/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, = function(match) {=0A= return parseInt(match[1], 16) + " " + parseInt(match[2], 16) + ' ' + = parseInt(match[3], 16);=0A= });=0A= }=0A= color_str.scan(/\d+/, function(num) { sum =3D sum + parseInt(num) }); =0A= return sum;=0A= },=0A= =0A= mouseHandler: function(evt) {=0A= var x =3D Event.pointerX(evt);=0A= var y =3D Event.pointerY(evt);=0A= this.getCurrentPositions();=0A= =0A= if ((this.viewstate =3D=3D 'expanded' && this.isInExpandedArea(x, y)) = || (this.isInActivationArea(x, y))) {=0A= this.setState('expanded');=0A= } else if (this.viewstate !=3D 'expanded' && this.isInTeaserArea(x, = y)) {=0A= this.setState('arrow');=0A= } else {=0A= this.setState('hidden');=0A= }=0A= },=0A= setState: function(newState) {=0A= if (this.viewstate =3D=3D newState) return;=0A= // this.posterousImg.hide();=0A= if (newState =3D=3D 'expanded') {=0A= this.defaultImg.hide(); this.defaultArrowImg.hide();=0A= this.posterousImg =3D this.defaultExpandedImg;=0A= =0A= if (Prototype.Browser.IE) {=0A= this.expandedDiv.show();=0A= } else { =0A= this.sliding =3D true; =0A= Effect.Appear(this.expandedDiv, Object.extend({=0A= duration: 0.15,=0A= afterFinish: function() { this.sliding =3D false = }.bindAsEventListener(this)=0A= }));=0A= }=0A= =0A= this.posterousImg.show(); =0A= } else if (newState =3D=3D 'arrow' && this.viewstate !=3D 'expanded' = && !this.sliding) {=0A= this.defaultImg.hide(); this.defaultExpandedImg.hide();=0A= this.posterousImg =3D this.defaultArrowImg;=0A= this.posterousImg.show(); =0A= } else {=0A= this.posterousImg =3D this.defaultImg;=0A= =0A= if (Prototype.Browser.IE) {=0A= this.defaultArrowImg.hide(); this.defaultExpandedImg.hide(); = this.posterousImg.show(); this.expandedDiv.hide(); =0A= } else {=0A= this.sliding =3D true;=0A= Effect.Fade(this.expandedDiv, Object.extend({=0A= duration: 0.1, =0A= afterFinish: function() {=0A= this.defaultArrowImg.hide(); =0A= this.defaultExpandedImg.hide(); =0A= this.posterousImg.show();=0A= this.sliding =3D false;=0A= }.bindAsEventListener(this)}));=0A= }=0A= }=0A= this.viewstate =3D newState;=0A= },=0A= isInActivationArea: function(x, y) {=0A= return ( y < (this.e_off.top + this.e_dim.height + 5));=0A= },=0A= isInExpandedArea: function(x, y) {=0A= return (y < (this.t_off.top + this.t_dim.height + = this.options.hide_offset_px)); =0A= },=0A= isInTeaserArea: function(x, y) {=0A= return (y < (this.t_off.top + this.t_dim.height + = this.options.top_active_area_px));=0A= },=0A= getCurrentPositions: function() {=0A= // element position=0A= this.e_dim =3D this.posterousImg.getDimensions();=0A= this.e_off =3D this.posterousImg.cumulativeOffset();=0A= // overall header div position=0A= this.t_dim =3D this.headerDiv.getDimensions();=0A= this.t_off =3D this.headerDiv.cumulativeOffset();=0A= }=0A= });=0A= =0A= =0A= =0A= document.observe('dom:loaded', function() {=0A= if ($('posterous_modal_flash')) {=0A= setTimeout("Effect.Appear($('posterous_modal_flash'))", 2000);=0A= $('posterous_modal_flash').observe('click', function() { = Effect.Fade($('posterous_modal_flash'), {duration: 0.5}); });=0A= }=0A= }) ------=_NextPart_000_0000_01CAFDEE.4FD2CFA0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://gp-bc7f8.posterous.com/javascripts/html5.js?1274974359 // html5shiv MIT @rem remysharp.com/html5-enabling-script=0A= // iepp v1.5.1 MIT @jon_neal iecss.com/print-protector=0A= /*@cc_on@if(@_jscript_version<9)(function(p,e){function = q(a,b){if(g[a])g[a].styleSheet.cssText+=3Db;else{var = c=3Dr[l],d=3De[j]("style");d.media=3Da;c.insertBefore(d,c[l]);g[a]=3Dd;q(= a,b)}}function s(a,b){for(var c=3Dnew = RegExp("\\b("+m+")\\b(?!.*[;}])","gi"),d=3Dfunction(k){return".iepp_"+k},= h=3D-1;++h\\s*$","i");i.innerHTML=3Da.outerHTML.replace(/\r|\n/g," = ").replace(c,a.currentStyle.display=3D=3D"block"?"":"");c=3Di.childNodes[0];c.className+=3D" = iepp_"+d;c=3Df[f.length]=3D[a,c];a.parentNode.replaceChild(c[1],c[0])}s(e= .styleSheets,"all")}function u(){for(var = a=3D-1,b;++a