From scott@griffitts.com Wed Aug 1 03:25:10 2001 From: scott@griffitts.com (Scott Griffitts) Date: Tue, 31 Jul 2001 21:25:10 -0500 Subject: [Pythonmac-SIG] Re: MacPython 2.1.1c2 In-Reply-To: <20010731220027.86FF8162E15@oratrix.oratrix.nl> Message-ID: Multiple Users is installed but multiple accounts are turned off. Anti-virus and file sharing are turned off. My hard drive is named G3. 2.1 was my first ever installation of Python so there was no previous pref file. When I installed 2.1.1 I made sure to remove all traces of 2.1 from system folder and elsewhere. Unfortunately, I didn't give the interpreter a shot before I reinstalled classic only. My system profile is below. Thanks, Scott Software overview Mac OS overview Finder: 9.1 System: 9.1 US Active enabler: None QuickTime: 5.0.1 CarbonLib: 1.3.1 File sharing: is off Multiple Users: 1.4.1 Startup device Name: G3 Type: Hard drive Location: ID = 0 Bus: SCSI Bus 1 Memory overview Disk cache: 2048K Virtual memory: 292 MB Used on volume: G3 Built-in memory: 192 MB Location Size Memory type J3 64 MB DIMM J4 128 MB DIMM Video memory: 6 MB Backside L2 cache: 1 MB Hardware overview Machine ID: 510 Model name: Power Macintosh G3 series Keyboard type: Apple Extended Keyboard Attributes: Audio card Processor info: PowerPC G3 Machine speed: 300 MHz Nanokernel version: 2.21 Nanokernel pool extends: 0 Nanokernel scheduled CPUs:1 Network overview PPP Link: n/a Speed: n/a Duplex: n/a Ethernet built-in Link: n/a Speed: n/a Duplex: n/a Serial Link: n/a Speed: n/a Duplex: n/a Open Transport Installed: Yes Active: Yes Version: 2.7.6 AppleTalk Installed: Yes Active: Yes Version: 60 File sharing: is off Default AppleTalk zone: Not available Active network port(s): PPP Ethernet built-in Serial This network: 65405 This node: 109 Router: Hardware Address: 00.05.02.39.9D.2C TCP/IP Installed: Yes Active: Yes Version: 2.7.6 Personal Web Sharing: is off USB Printer Sharing: Not installed Netmask: 0.0.0.0 IP address: 64.157.116.218 Default gateway address: 0.0.0.0 Domain: Name server address: 209.244.0.3 Printer overview Printer (Default) Printer driver: FaxPrint Driver version: 5.1 Printer location: Not available Production information ROM revision: $77D.45F1 Serial number: XB82404TD7C Software bundle: 694-1119 Sales order number: Not applicable ---------- From: Jack Jansen Date: Wed, 01 Aug 2001 00:00:22 +0200 To: Scott Griffitts Cc: pythonmac-sig@python.org Subject: Re: [Pythonmac-SIG] Re: MacPython 2.1.1c2 Scott, I have no idea what is causing your problems. They also seem to be unique (i.e. if anyone else sees something similar: please speak up!). Some wild guesses: - are you using Multiple Users? I've never tried this, and it could well make the install fail. Is anyone else using Multiple Users? - Are you running some virus-catching software that could cause this? - Running off a fileserver maybe, so Python has no permission to save the prefs file? - "Funny" (non-ascii) characters in your diskname? In the path to Python? Some other info that would be interesting: - Does the prefs file actually exist or is Python somhow only thinking that it exists? - Your Apple System Profile output could be handy. The second Apple Menu in the IDE, by the way, means that the IDE has crashed. Unfortunately this means you can't easily find out why it did so. Did the bare PythonInterpreter run OK? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jwblist@olympus.net Wed Aug 1 05:46:57 2001 From: jwblist@olympus.net (John W Baxter) Date: Tue, 31 Jul 2001 21:46:57 -0700 Subject: [Pythonmac-SIG] Re: MacPython 2.1.1c2 In-Reply-To: <20010731220027.86FF8162E15@oratrix.oratrix.nl> References: <20010731220027.86FF8162E15@oratrix.oratrix.nl> Message-ID: At 0:00 +0200 8/1/01, Jack Jansen wrote: >- are you using Multiple Users? I've never tried this, and it could > well make the install fail. Is anyone else using Multiple Users? My seemingly flawless install on 9.1 was with Multiple Users active. There are no users other than the "owner" (and it follows that the install was done as the owner). --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From erik@letterror.com Wed Aug 1 10:44:40 2001 From: erik@letterror.com (Erik van Blokland) Date: Wed, 1 Aug 2001 10:44:40 +0100 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: Message-ID: <20010801104515-r01010700-425fb1be-0910-0108@192.168.128.6> Is there a new (carbon?) interface for the Scrap manager or alternative in Python 2.1? Scrap.GetScrap() seems to have dissappeared. Erik -- www.letterror.com Type & Typography From jack@oratrix.nl Wed Aug 1 09:58:37 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 01 Aug 2001 10:58:37 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: Message by Erik van Blokland , Wed, 1 Aug 2001 10:44:40 +0100 , <20010801104515-r01010700-425fb1be-0910-0108@192.168.128.6> Message-ID: <20010801085837.A87B5303181@snelboot.oratrix.nl> > Is there a new (carbon?) interface for the Scrap manager or alternative in > Python 2.1? Scrap.GetScrap() seems to have dissappeared. Not yet. The Carbon scrap manager (or pasteboard manager or whatever it's called) needs to be bgen-ified. But as it was non-trivial I first moved on to other issues. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Wed Aug 1 10:22:03 2001 From: just@letterror.com (Just van Rossum) Date: Wed, 1 Aug 2001 11:22:03 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: <20010801085837.A87B5303181@snelboot.oratrix.nl> Message-ID: <20010801112206-r01010700-385ba442-0910-010c@10.0.0.3> Jack Jansen wrote: > > Is there a new (carbon?) interface for the Scrap manager or alternative in > > Python 2.1? Scrap.GetScrap() seems to have dissappeared. > > Not yet. The Carbon scrap manager (or pasteboard manager or whatever it's > called) needs to be bgen-ified. But as it was non-trivial I first moved on to > other issues. But now there is *no* clipboard access :-( I don't understand why Apple doesn't support the old scrap manager under Carbon. And it's really dumb to replace it with something "non-trivial". As a workaround: can we use calldll to get GetScrap() from InterfaceLib? It seems that's possible. But then: how do you pass a resource object to a calldll func? (I realize this won't work under OSX, which is just fine for the time being ;-) Just From jack@oratrix.nl Wed Aug 1 12:21:41 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 01 Aug 2001 13:21:41 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: Message by Just van Rossum , Wed, 1 Aug 2001 11:22:03 +0200 , <20010801112206-r01010700-385ba442-0910-010c@10.0.0.3> Message-ID: <20010801112141.73436303181@snelboot.oratrix.nl> > But now there is *no* clipboard access :-( > > I don't understand why Apple doesn't support the old scrap manager under Carbon. > And it's really dumb to replace it with something "non-trivial". Well, it's not _that_ complicated, it's just that I didn't put it high on my priority list. If you've used bgen (you have, haven't you?) then half a day's work should get you there: basically the wrapper code around the ScrapRef object, New/Convert routines for ScrapFlavorInfo and a bit of magic for the GetScrapFlavorInfoList array in/out parameter. I think the promise keeper UPPs are not really needed, otherwsie that'll be a bit of work too. But if you wait for me it may be a few weeks before I find the half day: too busy with OSX and 2.1.1 at the moment (not to mention real work:-). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From tom@othermedia.com Wed Aug 1 15:24:02 2001 From: tom@othermedia.com (tom smith) Date: Wed, 01 Aug 2001 15:24:02 +0100 Subject: [Pythonmac-SIG] Urllib huh? In-Reply-To: <20010801112141.73436303181@snelboot.oratrix.nl> Message-ID: Is this right? >>> import urllib >>> u = urllib >>> url = 'http://www.othermedia.com/blog/test' >>> print u.splithost(url) (None, 'http://www.othermedia.com/blog/test') I expected to get ['www.othermedia.com', '/blog/test'] Cheers tom From Laurent.Pierron@loria.fr Wed Aug 1 16:07:18 2001 From: Laurent.Pierron@loria.fr (Laurent Pierron) Date: Wed, 01 Aug 2001 17:07:18 +0200 Subject: [Pythonmac-SIG] Urllib huh? References: Message-ID: <3B681B26.91874C61@loria.fr> This is a multi-part message in MIME format. --------------835DC33829938BBDC21D5A13 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit tom smith wrote: > > Is this right? > > >>> import urllib > >>> u = urllib > >>> url = 'http://www.othermedia.com/blog/test' > >>> print u.splithost(url) > (None, 'http://www.othermedia.com/blog/test') > > I expected to get ['www.othermedia.com', '/blog/test'] > >>> print u.splithost(u.splittype(url)[1]) ('www.othermedia.com', '/blog/test') --------------835DC33829938BBDC21D5A13 Content-Type: text/x-vcard; charset=us-ascii; name="Laurent.Pierron.vcf" Content-Transfer-Encoding: 7bit Content-Description: Card for Laurent Pierron Content-Disposition: attachment; filename="Laurent.Pierron.vcf" begin:vcard n:Pierron;Laurent tel;cell:+33 6 72 23 03 80 tel;fax:+33 3 83 27 83 19 tel;work:+33 3 83 59 30 93 x-mozilla-html:TRUE url:http://www.loria.fr org:INRIA-Lorraine / LORIA;Service SEDRE version:2.1 email;internet:Laurent.Pierron@loria.fr adr;quoted-printable:;;Technop=F4le de Nancy-Brabois - Campus Scientifique=0D=0A615, rue du Jardin Botanique;Villers Les Nancy;;F-54600;FRANCE x-mozilla-cpt:;7312 fn:Pierron, Laurent end:vcard --------------835DC33829938BBDC21D5A13-- From richard@richardgordon.net Wed Aug 1 16:15:29 2001 From: richard@richardgordon.net (Richard Gordon) Date: Wed, 1 Aug 2001 11:15:29 -0400 Subject: [Pythonmac-SIG] Urllib huh? In-Reply-To: References: Message-ID: At 3:24 PM +0100 8/1/01, tom smith wrote: >Is this right? > > >>> import urllib > >>> u = urllib > >>> url = 'http://www.othermedia.com/blog/test' > >>> print u.splithost(url) >(None, 'http://www.othermedia.com/blog/test') > >I expected to get ['www.othermedia.com', '/blog/test'] leave off the http: and you will, e.g., url = '//www.othermedia.com/blog/test' Richard Gordon -------------------- Gordon Design Web Design/Database Development http://www.richardgordon.net From scott@griffitts.com Thu Aug 2 01:17:52 2001 From: scott@griffitts.com (Scott Griffitts) Date: Wed, 01 Aug 2001 19:17:52 -0500 Subject: [Pythonmac-SIG] Re: MacPython 2.1.1c2 In-Reply-To: <20010731220027.86FF8162E15@oratrix.oratrix.nl> Message-ID: Thanks to Conflict Catcher I've found the culprit. AliasMenu 2.2 is a shareware control panel which allows you to add custom menus to your apple menu bar. According to its website, 2.2, which came out in 1999, is the latest version. I disabled it and was able to install the carbon version of Python and run the IDE with no problems. -Scott ---------- From: Jack Jansen Subject: Re: [Pythonmac-SIG] Re: MacPython 2.1.1c2 Scott, I have no idea what is causing your problems. They also seem to be unique (i.e. if anyone else sees something similar: please speak up!). Some wild guesses: - are you using Multiple Users? I've never tried this, and it could well make the install fail. Is anyone else using Multiple Users? - Are you running some virus-catching software that could cause this? - Running off a fileserver maybe, so Python has no permission to save the prefs file? - "Funny" (non-ascii) characters in your diskname? In the path to Python? Some other info that would be interesting: - Does the prefs file actually exist or is Python somhow only thinking that it exists? - Your Apple System Profile output could be handy. The second Apple Menu in the IDE, by the way, means that the IDE has crashed. Unfortunately this means you can't easily find out why it did so. Did the bare PythonInterpreter run OK? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From draayer@surfglobal.net Thu Aug 2 05:21:24 2001 From: draayer@surfglobal.net (Dean Draayer) Date: Thu, 2 Aug 2001 00:21:24 -0400 Subject: [Pythonmac-SIG] Mac module documentation Message-ID: A while back, someone graciously volunteered to coordinate an effort to improve the documentation of the Mac-specific modules. Unfortunately, I can't recall who this was. Is someone still collecting documentation snippets? I have a some (not much yet, but every bit counts) that I would like to contribute. Dean From just@letterror.com Thu Aug 2 10:38:46 2001 From: just@letterror.com (Just van Rossum) Date: Thu, 2 Aug 2001 11:38:46 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: <20010801112141.73436303181@snelboot.oratrix.nl> Message-ID: <20010802113848-r01010700-869bd88f-0910-010c@10.0.0.5> Jack Jansen wrote: > Well, it's not _that_ complicated, it's just that I didn't put it high on my > priority list. If you've used bgen (you have, haven't you?) then half a day's > work should get you there: basically the wrapper code around the ScrapRef > object, New/Convert routines for ScrapFlavorInfo and a bit of magic for the > GetScrapFlavorInfoList array in/out parameter. I think the promise keeper UPPs > are not really needed, otherwsie that'll be a bit of work too. > > But if you wait for me it may be a few weeks before I find the half day: too > busy with OSX and 2.1.1 at the moment (not to mention real work:-). I think as a workaround I'm going to stick to a calldll replacement... For which you didn't answer my question: how do you define a calldll function that takes a Res object as an orgument? I hope that's possible at all, otherwise we're still stuck... j From chrishbarker@home.net Thu Aug 2 19:16:42 2001 From: chrishbarker@home.net (Chris Barker) Date: Thu, 02 Aug 2001 11:16:42 -0700 Subject: [Pythonmac-SIG] Mac module documentation References: Message-ID: <3B69990A.98C26B86@home.net> Dean Draayer wrote: > A while back, someone graciously volunteered to coordinate an effort > to improve the documentation of the Mac-specific modules. > Unfortunately, I can't recall who this was. Is someone still > collecting documentation snippets? I have a some (not much yet, but > every bit counts) that I would like to contribute. That was me, and I'm sorry to report that I got no volunteers, so I havn't done anything. I'm pretty short on time for this kind of thing, so I need a motivator to make it a priority. If you, or anyone else, has some pieces to add, I'd be glad to put them in the proper format, and forward them on to Fred Drake, the Python documentation coordinator. You can certainly get the docs source from CVS and add the stuffyourself, but if you are working on a Mac, and not familiar with CVS and LaTeX, it would probably be easier for me to do it. By the way there is a lot of stuff in $PYTHON:mac:demo that it would be great to edit a little and put into the "official" doc as well. It would be great if someone would like to do that. I repeat my offer to put it all together. -Chris -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------ From chrishbarker@home.net Thu Aug 2 19:18:52 2001 From: chrishbarker@home.net (Chris Barker) Date: Thu, 02 Aug 2001 11:18:52 -0700 Subject: [Pythonmac-SIG] Mac documentation References: Message-ID: <3B69998C.812122D4@home.net> Hi all, On a related note: With all the new Carbon / OS-X stuff, it would be really great if we could have at least some mention of how all that is working wiht MacPython in the "Official Docs". I havn't been usiong any of the new stuff, so I am unqualified to write an y of it, but I'd be glad to edit and coordinate. -Chris -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------ From jack@oratrix.nl Thu Aug 2 20:42:06 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 02 Aug 2001 21:42:06 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: Message by Just van Rossum , Thu, 2 Aug 2001 11:38:46 +0200 , <20010802113848-r01010700-869bd88f-0910-010c@10.0.0.5> Message-ID: <20010802194211.AE31E162E15@oratrix.oratrix.nl> Recently, Just van Rossum said: > I think as a workaround I'm going to stick to a calldll replacement... For wh > ich > you didn't answer my question: how do you define a calldll function that take > s a > Res object as an orgument? I hope that's possible at all, otherwise we're sti > ll > stuck... Calldll supports it, the "InHandle" and "OutHandle" types. OutHandle is one that is created by the routine you call, InHandle is created by you (but its contents may of course be modified by the routine). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Thu Aug 2 22:40:45 2001 From: just@letterror.com (Just van Rossum) Date: Thu, 2 Aug 2001 23:40:45 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: <20010802194211.AE31E162E15@oratrix.oratrix.nl> Message-ID: <20010802234111-r01010700-928a8f3e-0910-010c@10.0.0.7> Jack Jansen wrote: > Calldll supports it, the "InHandle" and "OutHandle" types. OutHandle > is one that is created by the routine you call, InHandle is created by > you (but its contents may of course be modified by the routine). Excellent, thanks! Here's a GetScrap() replacement for 2.1 Carbon under 9.1: # MyGetScrap.py import calldll, struct, array _GetScrap = calldll.newcall(calldll.getlibrary("InterfaceLib").GetScrap, "Long", "InHandle", "InLong", "OutLong") def GetScrap(hDest, theType): theType, = struct.unpack("l", theType) return _GetScrap(hDest, theType) if __name__ == "__main__": import Res, Scrap r1 = Res.Resource("") rv1 = GetScrap(r1, "TEXT") print rv1, `r1.data` if hasattr(Scrap, "GetScrap"): r2 = Res.Resource("") rv2 = Scrap.GetScrap(r2, "TEXT") print rv2, `r2.data` assert rv1 == rv2 assert r1.data == r2.data Just From jack@oratrix.nl Thu Aug 2 22:50:22 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 02 Aug 2001 23:50:22 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: Message by Just van Rossum , Thu, 2 Aug 2001 23:40:45 +0200 , <20010802234111-r01010700-928a8f3e-0910-010c@10.0.0.7> Message-ID: <20010802215027.2E90E162E14@oratrix.oratrix.nl> Recently, Just van Rossum said: > Excellent, thanks! Here's a GetScrap() replacement for 2.1 Carbon under 9.1: > Ah, so you're calling the InterfaceLib GetScrap() from Carbon-Python. I hadn't realised that that is what you wanted to do. Note that obviously this won't work on OSX> But it does trigger an interesting point: we could possibly do the same for _tkinter: link it against InterfaceLib but allow it to be loaded from CarbonPython. Anyone here who wants to give this a try? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Thu Aug 2 22:57:00 2001 From: just@letterror.com (Just van Rossum) Date: Thu, 2 Aug 2001 23:57:00 +0200 Subject: [Pythonmac-SIG] Scrap.GetScrap() ? In-Reply-To: <20010802215027.2E90E162E14@oratrix.oratrix.nl> Message-ID: <20010802235703-r01010700-48f6181b-0910-010c@10.0.0.7> Jack Jansen wrote: > Note that obviously this won't work on OSX> That's what I said ;-) Just From nathan@vividworks.com Thu Aug 2 22:57:32 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Thu, 2 Aug 2001 15:57:32 -0600 (CST) Subject: [Pythonmac-SIG] OS X Devel Message-ID: Hi pymac sig. I'm very familiar w/ Python but not familiar at all with Mac development. However I recently switched from linux to using OS X as my main development platform. Now I want to write nice GUI OS X apps to do... whatever. And I want to use Python. I especially want to distribute .app self contained files that use sheets and dock properties and all that stuff... real cocoa apps and not mearly carbon ones. Can this currently be done with Python? Any ideas in this direction (like where TFM is...) would be appreciated. nathan From jack@oratrix.nl Thu Aug 2 23:06:09 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 03 Aug 2001 00:06:09 +0200 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available Message-ID: <20010802220614.A00C6162E14@oratrix.oratrix.nl> [Folks: I'm sending this mail to pythonmac-sig only for today. Once I have a few "it works" reports in I'l advertise it wider] MacPython 2.1.1 is available. This is a bugfix release for 2.1, there should be no reason to continue using 2.1 from now on. Aside from the platform independent fixes (see www.python.org for a list) here are the highlights for Mac specific issues: - non-ascii characters in sys.path entries work again. - On 8.6 and below the IDE wouldn't run, and Fm didn't work. Fixed. - Dialogs and windows not created by Python are handled more gracefully. The full list can be found in the Relnotes file in the distribution. Download the active installer from http://www.cwi.nl/ftp/jack/python/mac/MacPython211active.bin or the full installer (8.5MB) from http://www.cwi.nl/ftp/jack/python/mac/MacPython211full.bin . Binhex files also available, substitute .hqx for .bin. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From richard@richardgordon.net Fri Aug 3 04:22:50 2001 From: richard@richardgordon.net (Richard Gordon) Date: Thu, 2 Aug 2001 23:22:50 -0400 Subject: [Pythonmac-SIG] [OT] If in hurry, skip... Message-ID: As many of you foreign, er, international, list members may have observed, especially over the past 8 mos. or so, we Americans are not exactly famous for caring about the sensitivities of anyone else too much. This list is a little unique because the people on it are almost invariably civil and reasonable regardless, but you know what I mean. Anyway, in the interest of furthering my own curiosity and the curiosity of other Americans that they didn't realize they had, and perhaps even suggesting to the rest of you that we are not all overbearing idiots even if our government is led by them, I would appreciate being enlightened about the following: 1) I came across Guido's home page and his efforts to explain how his first name is actually pronounced in Dutch and the spelling rules for his last name. So this led me to wonder about the correct pronunciation of Just's and Jack's names. I gather that Dutch is essentially Low German and would assume that Just is phonetically Yust? Is Jack Yack or just an Anglicized Jack? 2) In the Mac and linux communities, I can scarcely think of anything of recent vintage that is interesting that wasn't developed in Europe. I don't object to Europeans developing nice things, I'm just wondering what happened to our ability to do so too? 3) I've noticed that for the most part, posts from non-English speaking Europeans here have nearly flawless English and have marveled at the posters' ability to express complex thoughts in a second language. What I haven't noticed either here or on the main python newsgroup/list is a whole lot of chatter from Indians/Pakistanis who are generally proficient in English and I'm wondering whether Python just hasn't hit there or they don't post or what? 4) Same thought with the Chinese, altho I don't assume that all of them read/write English. It's hard to imagine that they don't use Python at all given Red Flag Linux, and I kind of wonder what's going on with them. So, I guess that's enough Hands Across The Sea for now. But I'd at least llke to know how Just prefers to pronounce his name. :-] Richard ----------------------------------------------- "I can do chin-ups, I'm the best rock-thrower in the county and I'm saving up for a gold tooth. I'm the man for you, Charlene. You know it. Now can I come over and kiss you on the jaw?" The Angst of Ernest T. Bass Mayberry, North Carolina circa 1964 From erik@letterror.com Fri Aug 3 07:29:28 2001 From: erik@letterror.com (Erik van Blokland) Date: Fri, 3 Aug 2001 07:29:28 +0100 Subject: [Pythonmac-SIG] [OT] If in hurry, skip... In-Reply-To: Message-ID: <20010803073025-r01010700-39c2a1c0-0910-0108@192.168.128.6> richard@richardgordon.net (Richard Gordon): [8/2/01 at 11:22 PM] > 2) In the Mac and linux communities, I can scarcely think of anything > of recent vintage that is interesting that wasn't developed in > Europe. I don't object to Europeans developing nice things, I'm just > wondering what happened to our ability to do so too? Don't despair, some of the new macs are really nice, and they're from California. Erik -- www.letterror.com Type & Typography From richard@richardgordon.net Fri Aug 3 08:26:42 2001 From: richard@richardgordon.net (Richard Gordon) Date: Fri, 3 Aug 2001 03:26:42 -0400 Subject: [Pythonmac-SIG] [OT] If in hurry, skip... In-Reply-To: <20010803073025-r01010700-39c2a1c0-0910-0108@192.168.128.6> References: <20010803073025-r01010700-39c2a1c0-0910-0108@192.168.128.6> Message-ID: At 7:29 AM +0100 8/3/01, Erik van Blokland wrote: >Don't despair, some of the new macs are really nice, and they're from >California. Thanks for the encouraging thought, but there isn't much that is going on with Macs that wasn't over and done on the underlying OS side a long time ago at Berkeley and a less long time ago at IBM on the hardware side. To clarify my previous lament a bit, there is an entirely legitimate school of thought based on the idea that everything of any real consequence in computing was sorted out by IBM, ATT, Xerox, and Oracle by around 1980 and the ultimate computer language, LISP, was developed well before then, all in the US. I don't necessarily agree with that outlook, but do tend to fall back on it whenever somebody starts to observe how truly awful software is in general now, which I would primarily attribute to the fact that M$ ever existed at all. I will speculate that if M$ had not sucked the life out of American software development for over a decade, we might very well have the flying cars that were promised in 1950. Richard Gordon -------------------- Gordon Design Web Design/Database Development http://www.richardgordon.net From jack@oratrix.nl Fri Aug 3 09:43:45 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 03 Aug 2001 10:43:45 +0200 Subject: [Pythonmac-SIG] OS X Devel In-Reply-To: Message by Nathan Heagy , Thu, 2 Aug 2001 15:57:32 -0600 (CST) , Message-ID: <20010803084345.722BF303181@snelboot.oratrix.nl> > Hi pymac sig. > > I'm very familiar w/ Python but not familiar at all with Mac development. > However I recently switched from linux to using OS X as my main > development platform. Now I want to write nice GUI OS X apps to do... > whatever. And I want to use Python. > > I especially want to distribute .app self contained files that use sheets > and dock properties and all that stuff... real cocoa apps and not mearly > carbon ones. Can this currently be done with Python? You can't do this currently, but all the building blocks are starting to appear. I've fixed up the configure stuff to make --with-next-framework work again, but there's still a few odds and ends to be done before I can check it in (installing the framework is the easy bit, the difficult bit is that you really should have installed the framework before you attempt to build the Python executable, and that's not easily expressed in Pythons Makefile/configure scheme). Also, the NextStep/Cocoa interface module is supposed to sort-of work, but I haven't looked at it yet. Steven? And (even though you said you weren't interested in Carbon) the MacPython modules are starting to work too. The main problem here is again mainly organisational: where do we put the resource files needed by them, and in what form. Also, the general layout of the installed Python (i.e. where does the Mac stuff go) hasn't been worked out yet. But I hope that as of 2.2a2 Python will at least configure out of the box (i.e. without all the extra args needed nowadays), and there'll be support in there for creating a framework. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Fri Aug 3 09:57:58 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 03 Aug 2001 10:57:58 +0200 Subject: [Pythonmac-SIG] [OT] If in hurry, skip... In-Reply-To: Message by Richard Gordon , Thu, 2 Aug 2001 23:22:50 -0400 , Message-ID: <20010803085759.1D8E2303181@snelboot.oratrix.nl> > 1) I came across Guido's home page and his efforts to explain how his > first name is actually pronounced in Dutch and the spelling rules for > his last name. So this led me to wonder about the correct > pronunciation of Just's and Jack's names. I gather that Dutch is > essentially Low German and would assume that Just is phonetically > Yust? Is Jack Yack or just an Anglicized Jack? Yust is probably good enough for Just. My name can be pronounced in many ways, even in dutch. My parents and brothers call me "Sjaak", which would be rendered "Shaahk" in english, I guess (S, unvoiced J, long A, K), English Jack is fine too (I'm half Dutch half Irish, so "Sean" is a reasonable pronounciation of Jack too:-) and most people would pronounce it "Jeck" (like Jack but with an e). > 2) In the Mac and linux communities, I can scarcely think of anything > of recent vintage that is interesting that wasn't developed in > Europe. I don't object to Europeans developing nice things, I'm just > wondering what happened to our ability to do so too? This could well be a visibility issue. The net has made the world a lot smaller, and where initially it was very US-centered this is disappearing. So where before the net you knew that some of your magnetic tapes were coming from the US and other were coming from Greece, during the inital days of the net the non-net-based stuff (and hence a lot of non-US stuff) was ignored. > 3) I've noticed that for the most part, posts from non-English > speaking Europeans here have nearly flawless English and have > marveled at the posters' ability to express complex thoughts in a > second language. What I haven't noticed either here or on the main > python newsgroup/list is a whole lot of chatter from > Indians/Pakistanis who are generally proficient in English and I'm > wondering whether Python just hasn't hit there or they don't post or > what? Maybe it takes a while to get used to the net-culture? I get a lot of private mail from Indians (they all seem to be into audio coding, it's always about my 100-line ADPCM-codec of 8 years ago), but maybe they feel uncomfortable about discussing things in public fora. > 4) Same thought with the Chinese, altho I don't assume that all of > them read/write English. It's hard to imagine that they don't use > Python at all given Red Flag Linux, and I kind of wonder what's going > on with them. East-asians have the added problem that their languages are structured very different, so english will always be a lot harder for them. Hmm, but then the same is true for the Fins, and it hasn't stopped *them* from invading mailing lists and newsgroups:-) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Fri Aug 3 10:08:05 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 03 Aug 2001 11:08:05 +0200 Subject: [Pythonmac-SIG] [OT] If in hurry, skip... In-Reply-To: Message by Richard Gordon , Fri, 3 Aug 2001 03:26:42 -0400 , Message-ID: <20010803090805.B0D4D303181@snelboot.oratrix.nl> > To clarify my previous lament a bit, there is an entirely legitimate > school of thought based on the idea that everything of any real > consequence in computing was sorted out by IBM, ATT, Xerox, and > Oracle by around 1980 and the ultimate computer language, LISP, was > developed well before then, all in the US. You forget programming languages. Except for Lisp (and maybe Prolog, don't know where that originated) one could well argue that all programming languages are european. C comes from BCPL (british). Java comes from C++ comes from C with a bit of Modula (european-living-in-the-US). Modula is Pascal (Swiss) with ideas from Simula (Norwegian). Pascal and BCPL were both done as offshoots of the Algol-68 project (european). And Algol-68 was of course Algol-60 (dutch) on steroids. Oh yes, when Algol-68 collapsed some of those people went on to do ABC (dutch) which is the ancestor of Python (dutch). In the mean time the americans have created Cobol and Fortran. Oh yes, and Perl. :-) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From nathan@vividworks.com Fri Aug 3 16:01:42 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Fri, 3 Aug 2001 09:01:42 -0600 (CST) Subject: [Pythonmac-SIG] [OT] If in hurry, skip... In-Reply-To: Message-ID: I'm Canadian which really puts me in the same boat (as Americans) but I'be got some thoughts on this. A recent trip to Europe makes me interested in this. > I gather that Dutch is essentially Low German My understanding is that they are different languages. I must say that I found Dutch impossible to pick up, yet I picked up enough Italian and French to get by. > 2) In the Mac and linux communities, I can scarcely think of anything > of recent vintage that is interesting that wasn't developed in > Europe. I don't object to Europeans developing nice things, I'm just > wondering what happened to our ability to do so too? I'd say Microsoft. Or is that too obvious to be correct? > 3) I've noticed that for the most part, posts from non-English > speaking Europeans here have nearly flawless English and have > marveled at the posters' ability to express complex thoughts in a > second language. I agree. I'm learning Japanese and have been taught German for three years and I'm still writing baby-talk. > 4) Same thought with the Chinese, altho I don't assume that all of > them read/write English. The only Chinese people I'd expect to speak English en masse would be from Hong Kong. I think the rest are too busy attacking the White House to post on this list (kidding!!). > So, I guess that's enough Hands Across The Sea for now. But I'd at > least llke to know how Just prefers to pronounce his name. :-] Isn't Just Guido's brother? nathan From just@letterror.com Fri Aug 3 22:15:33 2001 From: just@letterror.com (Just van Rossum) Date: Fri, 3 Aug 2001 23:15:33 +0200 Subject: [Pythonmac-SIG] PIL for OSX/Darwin Message-ID: <20010803231537-r01010700-e88c1679-0910-010c@10.0.0.11> Has anyone succesfully built PIL for Python under Darwin? Just From sdm7g@Virginia.EDU Fri Aug 3 22:23:23 2001 From: sdm7g@Virginia.EDU (Steven D. Majewski) Date: Fri, 3 Aug 2001 17:23:23 -0400 (EDT) Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: <20010803231537-r01010700-e88c1679-0910-010c@10.0.0.11> Message-ID: On Fri, 3 Aug 2001, Just van Rossum wrote: > Has anyone succesfully built PIL for Python under Darwin? Not me. Does PIL require Tkinter ? -- Steve From tony@metanet.com Fri Aug 3 22:37:57 2001 From: tony@metanet.com (Tony Lownds) Date: Fri, 3 Aug 2001 14:37:57 -0700 Subject: [Pythonmac-SIG] PIL for OSX/Darwin Message-ID: At 11:15 PM +0200 8/3/01, Just van Rossum wrote: >Has anyone succesfully built PIL for Python under Darwin? > Yes, PIL version 1.1.2 with Python 2.0 and 2.1. It was no problem as I recall - just disable Tkinter and Sane in the Setup file and go. -Tony From tony@metanet.com Fri Aug 3 22:44:05 2001 From: tony@metanet.com (Tony Lownds) Date: Fri, 03 Aug 2001 14:44:05 -0700 Subject: [Pythonmac-SIG] PIL for OSX/Darwin Message-ID: At 11:15 PM +0200 8/3/01, Just van Rossum wrote: >Has anyone succesfully built PIL for Python under Darwin? > Yes, PIL version 1.1.2 with Python 2.0 and 2.1. It was no problem as I recall - just disable Tkinter and Sane in the Setup file and go. -Tony From just@letterror.com Fri Aug 3 22:45:17 2001 From: just@letterror.com (Just van Rossum) Date: Fri, 3 Aug 2001 23:45:17 +0200 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: Message-ID: <20010803234520-r01010700-5e3a1d42-0910-010c@10.0.0.11> Steven D. Majewski wrote: > > Has anyone succesfully built PIL for Python under Darwin? > > Not me. Does PIL require Tkinter ? It doesn't require it, but I think it tries to build with it by default. I'm not sure how to turn it off. I get an error that I can't make sense of (and doesn't seem to be related to Tk): [localhost:~/Imaging-1.1.2] just% make cc -bundle -undefined suppress ./_imaging.o ./decode.o ./encode.o ./map.o ./display.o ./outline.o ./path.o libImaging/libImaging.a -L/usr/local/lib -ljpeg -L/usr/local/lib -lz -o ./_imaging.so /usr/bin/ld: can't locate file for: -ljpeg make: *** [_imaging.so] Error 1 [localhost:~/Imaging-1.1.2] just% I've tried to build and install jpeglib (or whatever the name is of the jpeg lib that PIL requires) and that seemed to go fine (no errors). I guess it's time to ask the effbot... Too bad PIL doesn't yet use distutils. By the way, what's the magic to get zlib under Darwin Python? Thanks, Just From just@letterror.com Fri Aug 3 22:50:24 2001 From: just@letterror.com (Just van Rossum) Date: Fri, 3 Aug 2001 23:50:24 +0200 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: Message-ID: <20010803235026-r01010700-72230144-0910-010c@10.0.0.11> Tony Lownds wrote: > Yes, PIL version 1.1.2 with Python 2.0 and 2.1. Ah, great: there's hope! > It was no problem as I recall - just disable Tkinter and Sane in the > Setup file and go. Hm, I get the same error as in my reply to Steve :-( Just From just@letterror.com Fri Aug 3 23:38:36 2001 From: just@letterror.com (Just van Rossum) Date: Sat, 4 Aug 2001 00:38:36 +0200 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: Message-ID: <20010804003838-r01010700-9cc07fd3-0910-010c@10.0.0.11> Tony Lownds wrote: > It looks to me like jpeglib is not really installed? Try finding out > where it is installed, and adding -L/where/that/is to the > Imaging-1.1.2/Setup file. Ugh. Make didn't install the headers nor the libraries. Now I get this: cc -bundle -undefined suppress ./_imaging.o ./decode.o ./encode.o ./map.o ./display.o ./outline.o ./path.o libImaging/libImaging.a -L/usr/local/lib -ljpeg -L/usr/local/lib -lz -o ./_imaging.so /usr/bin/ld: table of contents for archive: /usr/local/lib/libjpeg.a is out of date; rerun ranlib(1) (can't load from it) make: *** [_imaging.so] Error 1 [localhost:~/Imaging-1.1.2] just% > >I've tried to build and install jpeglib (or whatever the name is of > >the jpeg lib > >that PIL requires) and that seemed to go fine (no errors). I guess > >it's time to > >ask the effbot... Too bad PIL doesn't yet use distutils. > > > >By the way, what's the magic to get zlib under Darwin Python? > > ../configure; make; sudo make install > > I've attached the sources for zlib Thanks, installed just fine. But now I need to build the Python zlib.so. I tried to rebuild Python (stock 2.1.1) after "Make clean" but get another fantastic set of errors that I didn't get the first time I built 2.1.1 (pasted below). Any hints? Thanks... Just cc -c -g -O2 -Wall -Wstrict-prototypes -I. -I./Include -DHAVE_CONFIG_H -o Python/dynload_next.o Python/dynload_next.c /usr/include/objc/objc-class.h:125: undefined type, found `@class' /usr/include/objc/objc-class.h:130: undefined type, found `Protocol' /usr/include/objc/Object.h:38: undefined type, found `@class' /usr/include/objc/Object.h:40: undefined type, found `@interface' /usr/include/objc/Object.h:40: illegal external declaration, missing `;' after `Object' /usr/include/objc/Object.h:48: illegal method definition, found `-' /usr/include/objc/Object.h:48: illegal method definition, missing `{' after `init' /usr/include/objc/Object.h:53: illegal method definition, found `+' /usr/include/objc/Object.h:53: illegal method definition, missing `{' after `free' /usr/include/objc/Object.h:55: illegal method definition, found `+' /usr/include/objc/Object.h:55: illegal method definition, missing `{' after `alloc' /usr/include/objc/Object.h:57: illegal method definition, found `+' /usr/include/objc/Object.h:57: illegal method definition, missing `{' after `zone' /usr/include/objc/Object.h:59: illegal method definition, found `-' /usr/include/objc/Object.h:59: illegal method definition, missing `{' after `zone' /usr/include/objc/Object.h:64: illegal method definition, found `+' /usr/include/objc/Object.h:64: illegal method definition, missing `{' after `superclass' /usr/include/objc/Object.h:66: illegal method definition, found `-' /usr/include/objc/Object.h:66: illegal method definition, missing `{' after `class' /usr/include/objc/Object.h:68: illegal method definition, found `-' /usr/include/objc/Object.h:68: illegal method definition, missing `{' after `name' /usr/include/objc/Object.h:73: illegal method definition, found `-' /usr/include/objc/Object.h:73: illegal method definition, missing `{' after `hash' /usr/include/objc/Object.h:78: illegal method definition, found `-' /usr/include/objc/Object.h:78: illegal method definition, missing `{' after `aClassObject' /usr/include/objc/Object.h:80: illegal method definition, found `-' /usr/include/objc/Object.h:80: illegal method definition, missing `{' after `aClassName' /usr/include/objc/Object.h:85: illegal method definition, found `+' /usr/include/objc/Object.h:85: illegal method definition, missing `{' after `aSelector' /usr/include/objc/Object.h:90: illegal method definition, found `-' /usr/include/objc/Object.h:90: illegal method definition, missing `{' after `aProtocolObject' /usr/include/objc/Object.h:91: undefined type, found `Protocol' /usr/include/objc/Object.h:95: illegal method definition, missing `{' after `aSel' /usr/include/objc/Object.h:100: illegal method definition, found `-' /usr/include/objc/Object.h:100: illegal method definition, missing `{' after `aSelector' /usr/include/objc/Object.h:105: illegal method definition, found `-' /usr/include/objc/Object.h:105: illegal method definition, missing `{' after `aSelector' /usr/include/objc/Object.h:107: illegal method definition, found `-' /usr/include/objc/Object.h:107: illegal method definition, missing `{' after `object2' /usr/include/objc/Object.h:115: illegal method definition, found `-' /usr/include/objc/Object.h:115: illegal method definition, missing `{' after `aSelector' /usr/include/objc/Object.h:120: illegal method definition, found `-' /usr/include/objc/Object.h:120: illegal method definition, missing `{' after `aSelector' /usr/include/objc/Object.h:125: illegal method definition, found `-' /usr/include/objc/Object.h:125: illegal method definition, missing `{' after `stream' /usr/include/objc/Object.h:130: illegal method definition, found `-' /usr/include/objc/Object.h:130: illegal method definition, missing `{' after `stream' /usr/include/objc/Object.h:132: illegal method definition, found `+' /usr/include/objc/Object.h:132: illegal method definition, missing `{' after `version' /usr/include/objc/Object.h:137: illegal method definition, found `-' /usr/include/objc/Object.h:137: illegal method definition, missing `{' after `args' /usr/include/objc/Object.h:140: illegal method definition, found `@end' /usr/include/objc/Object.h:146: illegal method definition, missing `{' after `stream' /usr/include/objc/Object.h:149: illegal method definition, found `@end' /usr/include/objc/Object.h:157: illegal method definition, missing `{' after `header' /usr/include/objc/Object.h:160: illegal method definition, found `@end' /usr/include/objc/Object.h:163: illegal method definition, missing `{' after `)' /usr/include/objc/Object.h:164: undefined type, found `Object' /usr/include/objc/Object.h:165: undefined type, found `Object' /usr/include/objc/Object.h:166: undefined type, found `Object' /usr/include/objc/Object.h:167: undefined type, found `Object' Python/dynload_next.c:30: header file 'mach-o/rld.h' not found Python/dynload_next.c:51: undefined type, found `NXStream' cpp-precomp: warning: errors during smart preprocessing, retrying in basic mode make: *** [Python/dynload_next.o] Error 1 From draayer@surfglobal.net Sat Aug 4 10:26:03 2001 From: draayer@surfglobal.net (Dean Draayer) Date: Sat, 4 Aug 2001 05:26:03 -0400 Subject: [Pythonmac-SIG] Re: [OT] If in hurry, skip... Message-ID: Jack Jansen wrote: > You forget programming languages. Except for Lisp (and maybe Prolog, don't > know where that originated) one could well argue that all programming > languages are european. Prolog started in France (mid 70's) and has found its greatest support in Scotland, and I think Japan took quite an interest in it for a while. How about Smalltalk - purely American? Cheers, Dean From tony@metanet.com Fri Aug 3 23:09:29 2001 From: tony@metanet.com (Tony Lownds) Date: Fri, 03 Aug 2001 15:09:29 -0700 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: <20010803234520-r01010700-5e3a1d42-0910-010c@10.0.0.11> References: <20010803234520-r01010700-5e3a1d42-0910-010c@10.0.0.11> Message-ID: --Boundary_(ID_8YOrOjtx39nhzc08iX/V8w) Content-type: text/plain; charset=us-ascii; format=flowed Content-transfer-encoding: 7BIT At 11:45 PM +0200 8/3/01, Just van Rossum wrote: >Steven D. Majewski wrote: > >> > Has anyone succesfully built PIL for Python under Darwin? >> >> Not me. Does PIL require Tkinter ? > >It doesn't require it, but I think it tries to build with it by >default. I'm not >sure how to turn it off. I get an error that I can't make sense of >(and doesn't >seem to be related to Tk): > >[localhost:~/Imaging-1.1.2] just% make >cc -bundle -undefined suppress ./_imaging.o ./decode.o ./encode.o ./map.o >./display.o ./outline.o ./path.o libImaging/libImaging.a -L/usr/local/lib >-ljpeg -L/usr/local/lib -lz -o ./_imaging.so >/usr/bin/ld: can't locate file for: -ljpeg >make: *** [_imaging.so] Error 1 >[localhost:~/Imaging-1.1.2] just% It looks to me like jpeglib is not really installed? Try finding out where it is installed, and adding -L/where/that/is to the Imaging-1.1.2/Setup file. >I've tried to build and install jpeglib (or whatever the name is of >the jpeg lib >that PIL requires) and that seemed to go fine (no errors). I guess >it's time to >ask the effbot... Too bad PIL doesn't yet use distutils. > >By the way, what's the magic to get zlib under Darwin Python? ./configure; make; sudo make install I've attached the sources for zlib I'm rebooting to OSX now, mainly to confirm what I have said is true, would you like binaries? Thanks, -Tony --Boundary_(ID_8YOrOjtx39nhzc08iX/V8w) Content-id: Content-type: application/mac-binhex40; name=zlib.tar.gz Content-disposition: attachment; filename=zlib.tar.gz; modification-date="Thu, 9 Jul 1998 17:00:00 -0700" (This file must be converted with BinHex 4.0) :#hTXD@)ZG'&b,QGk!%GkDA"6593K!3!!!T)2!!!!!(lC(iX)!%$KT68#!qaE@A- E4j,f+rYA92"K"GK!Jq!PkaJ2`8ZQ4%Sd54dlX4'+3RF"+,%2Z+ZD)2MJhcf2qf9 @GD-"8XH1Gl`2+dEBDU!VXl,bcUc%AD+(hAlB$lGk&dH$`l1M(rlhri33Zp[EiJI 4hplSE`Vkh0rGjArTFHIaaLC@l1cdqlXl'jXE[2cacJrLKqprrrDr1mKIX2b&0N+ +XFT8)4-a,BYTET5)TC8LbY0TSBc4H5D`[T!!a6`8BT!!*-*1&0l'+J#`R44+aX, )NF,EUiN((Z9&+UdSMBV&F-i3[+P(4*!!X6*4SBGZ`FAaJ4'Y#r9lUB`PD('3!+H TbUaTLrk6R3eKFrTh8qL-NBedSS`)4REkY0H,6DJcUiT-4f'QE+mB4I3I`BAfeSS @Eqe)DRH%Hp9hVf)e5U49JAmVC"El"CYZ`IK16b[BN!!152c*Sj+*%l*33LBQ&r* 'kN31%`8+Ja`N&Kl)L&'4Tm*4L[q(CFP%MJXjRHM)p+ECZ&FMl"'T[6YmlZSX9VI Ka+C*%"$A4f8@@3M$L(cN4A"23%a2K3bFEA#,q4p1JYC0RT4i#3,"deQKV4+Tc-4 8MX(4Q8U!9R@!2,-bXZ*6NTI62@*#Q"GMF'!!S@*TS'jP1J9D6da&!!3leMFU@pV DV`dM-F14*ijM&T)QrC%f@%%`biYVRBe"3e'Sb#E3Zd(QH&VYqY!f3DSccC4',+J ('D5Y8FQ)i1PY6[U*%dM`eq4P%AR0`ZNL0E80`NN['[L$i#TR$(3mJRB+bGT61T, SI'*Dj""dfS%b*%NqiaFk-lBSR5`$G`UB#S2N8k,Q6&iV`KH+NdbB59jBXClL1dE j62!M)F'qk`(HPdR-2'1l5A0XQmTSSM0P3R'-VpjQq[DT@)G)4hTF&XUMH!JE,6q l2(acf5(E&AP@#pK-9D6K)e*2R"'Q*&'D"EQT!@-)`lXc$dq[2YkN*J5V"&iiQjq '+Ei+JYr)f&QMj6![VI-3rMa$l!JG*Kep6Yr[X@F)2df6-*0'KZ2mjTF1SE4jm%) R4-mlX&J#j,R14[RH$-*+SDLdp5r-'6V&HeK92M2Lm248h+L#9#--VLV[0)(UXb' 3!(j-,*[XE$B,SaJQ6)Kkdh,B)r63!QHU$*b24TUCiab0R3T$CJ8N#l2r%Sjp"IU 8+038XLE0Pk3iF#C3(+LI"#HMLBUZF34bci6F%'G`!MfD1aZDjk@Bb"[PV&'bp[N 6NJKTSfH#M@LQJ@1Xl%-VSF#"ffSf8@aaY-J6)b!YU,Uke@5ji#L-%Q)mNe#pe`S fRBRR+6jNHcM%h$&q9Z6J"2b,a-NL-TD&U#ZK[*4C#1rqj$(#JLPCim4K%BV$I$K mC-4,''BQNfH#BY*dALPNKC!!)PM6q9Cb8m208'UiB*f``fA+HKl+19UEjdRp3+i fB(&'%jQ4-daP6"KVjVL)q38AHm#!TrRBk45fcQTN4QI`,S4LNe!m$B)ZJ'l&ZL3 RaN%)rdl"Qf%j'S(a`h,-NL@,J-D@F!fC+'Mh)4C0L5CM38-J4"j&NLJdkk*&dQK lh1-l$XlNPFCh9T'E!X[K"b,XPNNL2acIHGr91Y5aaVkR5ZcR&TDd`'+8ZQk&BGJ 4PdG(VcjH(PfekG`qH&!Qi&C'4H399Bi3MbQcZ!1SD"dA-VX@al)FUX*@H-QGPKQ &9qKDjV84ZSJcND1'bJL1[GS*fA[ZaCFiH1ZP1)9+MKAKP((-B3Y*48qDG1IRA6j jikYGI0AD,c4BIL&"Hp%'MNZPQVDHPY1T`['(l,4kI`b*KF2mYQIbNCf"r8"N9$T %91,Bl2BeJ#)r6I`p9!NLZpLL)e5EaqkleRiqT2H*M'6l!G#$RhlD,h85JhGE62c RF@e#B2*'3d22i$ZXeB3[cXNQb8)Tp#LN(h$h#6-6-4qLeL1a3G%'lKjE`T+'53j a3@['@@R%VhQ5MJ[&SLIrM6K5j1,S`pA4a@X1%U41J&+hP'k4#kUS*iG+*pKAEbj &ka+di`bA0VmfrTc305Q1"lmjd3A6T#3$bqDeJ4!dSC*$R@JlKf0jQhRXJ,86AF6 `cB@G9i`SIH`Sf%%4+pJDBde*3`i9@[F,ei&V!#pc)i@QF%k@+fh$-Dlk%1q9X2j 3hDJNRa+%H!@Q`Rk$KV*m`KV5#qIALca'@$HpPiH[HPK)@ChTbDRZRF[S'P'P5mY $N!#GK*4&X2U3!2ECqr(Rfi)2mba@&T3E2Z1j+K,"ZI")4T421,aNU$"i5V62CCN J,"F86Sei2Nhpipj`C&38$ZNSBARp#fASRK%(ji2ASRA!b43-e5"MF4X0#Q3Cq2" D@8SrfLi`GDV%i'R3L(lDK18S#99FmM(J[T)H)Hl"IC6NMiIcVR[X(ILdVAlSrJ1 (q*(20dF%c,jm`N&i&STA)#'K52TFTYGlb!-3!6JJ"DZLpLMli3iE(2RKS[,iG"D PQJ+ImQT+K8Qk24+#SlVVdQZAV6ZDKXJeL!35dYA"k4+0@3bhBN$QY0$3rHFb[(D 2Hc0&AMeH*YC4#lYYN!$5@0Ml`d-c8EBB)GKPp&p&8!D,"FXeDclU2+H2a,dk3$K RlN)"f")ZbTj18&'HCe@+kJii&ep2[6S`VQ$"mC8c0&EflNlem$"*HK`6(19%'"F ,AK8V&dLKJ`KFf,UR#9B3[-kYGbH'l!QH$XQ1iB#,T(e)rK@Zk)&-%+4Q89+kS#r j$@ck%hC`Z&%VGYa6%5&`11)5JHV!XHdV4F1cZQ#BD6X4hF0rR*lXIm3ZJ5ZFQDH dDH96Cj*%S5db5rM`Q**adKeXCB!CM[P%)L%LhmmlJFm#lRr'H3Gm3ZC+kkq,+%6 LiV,,"4&!YI"'AaGDJ2A(91HqdkD%KZdM(iNkJT,5#0%fNVjY`''L,Q4G0HL$PN@ Y3&`9VMSUUE)QlclQ61YTAFfKXXLUjeS'ilXI&hK$(p8VEEPKQVT$SSQ,HPFR&54 RTq)XI(`*4D'$,mjUSp'3!-p*ZU)ir%ITY([AeCBXK(5+#TlGlHi3dH'Nd,FGi9X +N!"r@L+G'DT+lM%,RY*ILR[je1T8hr(Q42&l9SSh(5kk))8TA!IRjL0flk`Lr*P m,G[SeUDJA5N"%be#$5c%j'k'0hl23S#BFAY4%20hP&Y1`0fKJP@lXS0LE#iZAjb %G#K@JcKA*R[N0R3k1iiLX4RZ)J[1f8+1$X6@aXC'$rmlr3#j80"rFhRFkf09A`J "JR4&-#Gj5j`38F5E!GHK(Q[b6&5ULZe`ie#d5$+8Zc#q0LdD)1q4PkU!ZADF1iL BLhM906EZdfj'C#SL!i&2`(QSc"RI`6GQG[43Aq&U3R(1e-C9emLIi3+fq[@mqrD $H"*Zl,K$X*1T!JEjS4iFI`p(%bIqk+#,9lS@4L8%L23Y8Ua&CEp1",[d'ADc@-L NM1pLQ(V'"i5a,")M8(4aFRP!&I[q%A)[XJJFK+NkNe&MZdTCVmTLQ)X$9p@RC$f N33QKEU)&kjRU!M%l`MH)(f`X'BGGXY5EA-HXbL0CN!!9jK%Vmc1@1E5,$P@*ZRY i0[M`mIhqbGAPhrTprr(Xk1cMkG'lSp1rE9A%RFXNIH2LlP)5K23"*TIP[6p!4pS l(eaH$ASi@'lVa0b&$%'jLIK9&K*ZrQaHh%M+!JKScpJbAQ$k"D&L%&h$B8)Iapa pHaTi9qa0H,@0k9)05Eh,8H9HcbFk%DqN[3ZEN!!q2,L1"R914YSaKeTXF$b0A1! d"-@8G"bUdTTS3RK3,A'"lpdQX%e96Rf[f54If+X[bjdA019il2Kp)`ZG)lY'VSZ d@,P'*G`&Y`#FLh#03P5p)S0h,@Jek4jP!&"48[i$90U&(NmXUCZ1U&j&$NM0f#F lAIc[Cr&5bDa,h8(aJM+8192"[B""$(ecV#5GmZ)KrDVcp%I5G,9je&RbL-K4f+P $$5K2ebSQbj%&LNG,[HH6$-3)C13)Bc2Y)iSXJD!J9`E5)I*%Fjj",Tj`aT*#&CN JZ')i(D-`4C!!h1#LAN+$b$"`#T4UecDN2L0Yll`M%*+I`"2",J(@'rSHHSHF%@F 6cZ1NB$1hL138*r1kd''HXCa*!E4e$839Sl,R!JG-Si!d+K3m)5A@3mj'!-%p"qi T%Rk`$3!ZqV%5pjdfjK#KcZkGdJ8QmL2J'Si+M3)'lQFmijKG[3riXLC+T%jG,i* HZTD1VG(,C-%qF6,L0IIiic"aAZAVT!jhKCB-X%Vcr)UkcH++YCP[$$T8i'0"(8N 5$69%['-Xe1mPNX+B)ZTQL*!!!FCLK@rZeQkkLXa6()dm(6@(U%*eA8dRP`D6h*E ,R")F2iRl$l-#-&Xq`$J6`LEcLZQSc@'D-DQkp#5bAT)'H9TV*H$m!0MZ'CcrDpL F@1RALrS[PE4J6bCPQZN`SNhKDZ$DJf"*C-[h0#X#QbN[K!AcaBmidBm"2LPp3ma )9$DfNcRq(B-ELjX5kKASFHEddKeaZADR+aM@G"CRj4FUmqFZ2CL$!"llLkD+aLU 4#E#2jRC(`lYqa8YaV+))cpTHTIrFE1K@cBDB[)*RdT*Y)Qc#VpIDC4jQ8'dh(R[ `B-G33%qiN!"TT+3epiL[,L9`[C)`q22hIrlqphM`flrRM[(,plpLHkYIhrpZlql `r@prDr2lrHpIm4HXV4f6Si4U`5)'KPcI3jFa3DAhKIMG[klm,+@bkYlYa,dq9[# 0M5aA#C+$j$Z-e&f(4#iQe!C"e6e+J42Nq'UPKJmf'pmhLp$lcD*JUedANkdfYN' YL@2riq2qfq124aFAEbk#lADG!P)biY[c$khFDB[ha!V"Gq'U+KQDFDY9AkpfK,* 4')EY[`Hl"-G&r50EZpmAVpp52T06&G)4rPkL![Tlm,K0IXrY*EQ'mePG'2a-TkG LCjf+-*HF&QU%a5jGTb+SY0&km!810YX3PB1Qi[fK!YBj)N,XJS0br4)+HYj6cUM C3,&$eF"BF#qaIlLCm$q4j[d@rYH+GZH"rY3pN9Lk@PKY-!6IS'+"i0Y4j"Z&Ma& $G`[)K5dPrSKiLji(hij`D2AhAi#[hR)'a(G'8!bB0CMP-d5E8e&Yp*eD(4USBIa 4b+E[8!NJY[)0lP)ETc*[[UDQ0"l99FSe#hmJE%#$D,Y3ZGBk0@qbqAUlih+H1HU 5T23[NM`EVlI*R,rGdVl1-1ibIY5Ck`Va"biYX+Bq(VEm9df@G0XqUNZTF&*IB+B jJBE8Bh1M&CcZ@#3ZKR`A-id+Ve`dm&DZmm&"Le!FZ5kLUEZYEZa#m('@TQ#q-+6 `,lNCl,'[)NNVkh`QdGGXFGG+64dj*&l+TqHqKm!e+&q[91ePFJE9l8SKZIIKlRH S$Bc99@1&c6bP1i1Uqe)lqbpi2&)('RA`HQde6Dh`cF1L,+DEfP+jbSh5,pIhU6P CpBc&Z41&G6dMb['G6f[HIA-A3lV$8MhZ"M[FX4Aq9aT[ApM$6(2Aq[HT[(6Kp)% C"Q!kG1e24T+@LGAG&+RcF'kV85S@FZ9iTkMY861-N5HccS&*hqllf6Nh'dlqS)E E4G"5bYreY5ph+Vh+@k&9YrDRMG[qiqhf8fVU04`#+C96,ilF1C6&8B`$hi8rNX" kT5RSUU6MRh*B+hdQ%46ZZ`rprX9ZMi9a`D84)kV,08Zp`cMhY&I6+MMmpecZ6qE r*km2MclmAq6rMcGfkrarJjl&lYEMlHrjrera9eHGDfY9f8R*KLXZ!eD*YE8e$[9 m@imLFHeE5iEQb0ID'SplZ3ZAGr+fpqlX-UM'aGE@UP%bIXfGrjDE4,@ZY9ShipX e8+Lc"q'XJU[b(GX(i3TYSYb)C9MA1!rF$$4111C,m4Q08mPNR"I`Z5RPFfYVIR# Y'KSJ6pq+9EXjB9K$"2AqDf[eSfK`JNJ1'U0`+bHU'-@aD3YN88L[-`GH`Q&e-FP T&U1FSa,KL@$UN8lZ+rQ%aBphKRiaS&EQ1i0!TRSXHcAIM$6,e!hS[EJFA2B19YG 1bfR9E,S(--eRURKllJ$&qIP"%+3QcXd#HVDeq3$dQBk+R(TU98Tkm002BQZ6VYY @%3bh0TG*hFq,K1)cJBM2!HA&Ci"k"0EII3JSrV5bdq(,&qIRBM1mA9fTdY[PP8G R(m4'q#35,8H21(acfAYcZGPHK8a0Y2BC6KamKLbl!Z%[HZia@YVPGHqPTIR-DQ& eeefe$YFiUG#Xq`ZB4Z(B!#XLmFeJ3@BA4'9fa3UUPDq[D*fM+@0,r$c@eeH-Z)Q A"2#`"(SAPam!d!qhqk)&$&#r%eK6dPk#(dI4C`P$cNFCdiZ$!a3-H))'`i"JI@b Hdh+BS'#G+%QhSRl'VZSlAkZTE6m0lXJrK*2!cfB$&2RG$IQajM5bZhqbeHc#DT2 fDF#phDh0-!SUKd524F4IeGI4pG-NJ,hRq!,P&Xpr04mRp%K06q1qGBrml8JLHih U*rl1SmD648TUQSrmRUHGS[TT%K![k6fqV#$mI6kHl[cb1lmB$&PL"!peZ!P`Ri# ETd&Grc3'`!QbE)b208I'h!m5UR%bMBJA0'B%YhlHlAhEf%5`YN8MKLEP(M'9$BQ -1)A1+BlDMbRXDY+L-RGPEZ@E0cJMcdq$,Z54h+cN8"Thkh[R-QMhGrReVNTcVUB Q5+1%+T4-QD*AkJECqNA*rZrj0AhD3i'JXh!'YHAKV9rU(3IX9NpkEi6$B*CE-l@ 5,NeQh0piXmH0JkXj)Y[T2fm-bTMRp#%mcHR$AT3@I&Hl9[d#i,1l,R$cU+2$Zhk ZD&"Q%)S"U[&BLKG3JIr5U0(ZeXAcUC6M2D[M8"RD`CHcVSLeXU$C@"3qKD34)fr XVZAdfFN5E(NJL`5CaJ91+*j((e'[Q6f$HP#'8E*JhkrdB`"hMlKS&$9(@eVZYbM %ab8@ZRMqE[r2h!%dm[mk&IaVmrqGRFH2'lrrfYM#Giqh0lDqjrpr8IprFI&8"cD RfJGq(&GAmqkY*q*PLCbI,[hEhiI@[`qYrrmG@Zq+5`pCM@0"ZfR)LTZ$CmKVU-U jKPUqP24VQ&1G6D66(GrP+j6Vd)PpkZpjD%JA&*i62kci$h%2eS1`'Kqp2Z5j(I# N8Z[U5UlUrE8'#@QX1*MSV$[SrQGHCQ-q$mpVm@!B9#*$0(0Ya8A*)eTAL#eA-XY )bjc#ecp&DNUcbQ-ief)@ZSV%rAC-Y*Cc'd+PdT+p48Q0@X3fcU42AQpY0Y%kF6m %,[RAFdEGm1p8Uk&30l98PpLY+je#XI*-c6XdM3V&1Xecr8R+)Uk8!ciZeS@EPhA hmI44Ck,4B@JL)VK+A3`%SQ+IGY2B0X6dj[+i,pjYVi+iq3i`qf-e&FFHeI8[Sd6 *E&fX`V"lUE0MIqIQlL088B"IV4H*bV+1U,cPCkIKD3KiHE5pp9+"T,RiGClBR#d P8c1afKeTAG!Yl(ZCA$[jqq&MZMibG$-596rJXc4a4CF3rmhHYlqPG@@"rPcqLMh @U@!!$fr3fUP&6'b-1Q,56YS125q8%6Q8!c(DDIrfZellF3#6GQkRmphlQDp0B,1 IDkqphRYYPZ"T0i'ma(4L*1"Dj8p(F%VlYi"L'[SE`b3TAB(S0CSiEJYVLU&pHI1 U[p`@53k5@Y#9UcC'hGdb2"0j#UZr8frp)"NRmiQ"kT!!$bYfINeaLN`MdK@pZPR fq!bFq*0icCj`5"j!PlB`Xd9!B&!a'Vf2Sr*ePU0CGaRc'EbN`USB4YR"YJ,HSfK l1VSCBa[U(&LR3,HBN4,MD$!Q`X-8-SU4jA))F2FDpR'1M+)r(F9MhX0A&*4QlpA !E%!V!3#LU,VFB"GB5eQ*&PD8$pHl3JVa2Jek$8KBZ)e[YkQfDr$E933!#EbrRbE TQLT,jSMYA4-0*H1aL%Yp4$&XA"42`RXiGZQFZeZeP1JZe!B!ePq-JG$1ap!#q,F Sb4X84m!p*m'rj*V[QYjJ1X4%-#5fT)HIU`RXS2(hS4iqcejSAp06I2ZqU*CX%GQ #Uc$FCBd!6k1j@9Z8mr3HZ+9BKiVipE0CqRibeeiq0$H3!1'#V"'GpfT(R9lUJbB X`q&qX"[)HjMI!I-CmX8+1J(p,[ZeGQk"'LjZXdH!pGTB$3BBjNX-JcjKb`"i9Tb jYV8'#iYUq860p59rS'Z6"$DFHB",aNrM1b#hYi89J46@A1NJ#34+a3)T)kI$QS! V&8P3qj!!kVc+CAkh&Pe#FF@KNAbjQk9LFR-bJH%M3AD8)[Z!Ef+E3i(Gq'-J$q0 l0jZ#*5&d%%JVGD+)bHmiTJ$GG"V(83RT4C+C!PNPPN6V'$!K`6$D5FQ*"""CqJ! "SIVKp@aaUkNZ"GEV+2[-0Z(5L2["X0bjK0RMN!"c*-r*c5cq9qUJ**e-$J1!HG4 I8KrNiqmI[qfYN5-3%lk*Vd!F8Fm8F6qli8PDG5bbL-m6,M6fblAmJ+4A`mJcJZc Vdq0["rdhpA,ee6QXiZ#brrVea3()3cIq**QjXZVGc*pUHA+MZ`%##3KCd1mp(,G E,9LNfA0%JA`DqCE[KU(GKE`3-QPl0mb44&HYl4q`VcXGM3&*4B9KlT9aSb)5`rl YJkUd3F(9SJFj"j)J$pS(bXGTk6bqRU8X4%KhYQUTa,fTc4GRVhSEMiK&4[c-L!' XmD&KmJ-M8R[A1d%mHF9RX8)f+LTIEDQM1&"@La8KB$#I$4!3pi0YKc9,H)I$Acm `+eNAkbAcf@,#ae4Ga`XLKMVaaE8IXC(T&Q3N#KH13@d1jeErKP')&--'!$NGJ&U G-QNKM9Y40K)JJZ8kQiHLq!Td"e*6S2Tm(#q&"Se)rBDji+NR3N*RAH+51A-*lL( ##GJPSU3""diUKqiBPKFXD!BTY#JE[&cMal(5r9Vr$@Q8S&irM&"'@GiU%-'UG@H V)UdkB8b3!1TI`N&j4AV3NV+Sk9lqkq4k!NV0R8K!-p3DjKQM*!a5EPYDRBKZ4-B fZZ,8KPRJaQZjqD[&YI5fG)I[k+"rfHYIkVY',Yb*rXSY,b5bD,Y'8Nfb'dRA*PL R5,%RYlIqG%X(P,0CKBdcSaR`br`V1',a@)&f0i[$kcN,k1'-3PGdL"GD4YN8NlV p,jdZ"+F201K+AIQM#GTL!+k,#GPS-%LEq!a)'R6EUC!!%kU*4)Cd$9aXjMiTXeF RCPc6XP9&cQ'AH%q&JS%3j&N*J'3)p5+H"8#EVjG4a#Yh3!MJdkbY8Sb+&1Q5bPT *#E'QCi0)+&k$k!(3`UYaI+T5X[K3A2MK+,k"dG+X*8NiZ@JH&0S&BMe+KVH'c@D DbQ"qQLjZ*9lYA5SF8SHhi6j2&U!hcFLUFBrh9RAX1Q!He(J*$@ibBPM[fr1cLdY '[lIba5!`JR!m#ZIZI62Y+(%N*FC48Vh&!e9F[Z%D6HDL*"S("mR15ei,4hPRh`R ++bbUh$mQM)$)Le%q[*bh"bFRCef1UVYH$*(LMFC4[L"hkq!dM(8Pji`2L0+Q!jK I[S$G53dR5K,9"EF&+9-$NXAb"9F`CVXqX-,`CUNRPP4JPbQI9ACkMhI3emYr1cJ k2MhZ[l"DRm`P6dIUJ(E-NK[F&VbMK!kUaC8Pk0&S5,&FFj)2rBP$`CL)@0pE8D0 "U%TRe!ZGB*8rmQIT0Ic3'r[A)ck'HZHCSq*bpA9N@!T3%!@(C$cL`mkpQVJkjkT T&)GMIfBdi+1$#h[Scja$cj)'KB5Pb6C[,KfF9U1Km[(l1&b3!-5F!5ck$a"P3R8 5Aprk%f'eIS4X%FQFSeQ,KX1UcEEE5`M#hR!EEh1#bKT1lfdMMK$-YZ4S9@k$R#5 0TpHU2`IjETlK4Ec`'%JIDCPC@Q[Chc)[)S-cS31PZk#l4#(039pP(m@1T8K(ZUR m-@cm0`$B8ET+$GXNfh`004`E25@f'UBahreEFR"H[32'@DZ@m@b[)G*-pS"qDVD "mB1Xm!(2!)dBY6X@GP-qe)Y8R3%CZmEEK)995J-(aTK18V4c#T2,C1M#9"[-dqJ 5$[5rJaZ6!Si+Gi8&$HC'NR%RB&"%IDEq$VfI*'ccC-X*3K%9jpR-[dq0&LmQ,6S lVM(,a4fBh`*RbqKqLeCSbZm&R%rPjqDHjXXBa8)3&8&!iHlT-LhGb)5eiIAV4#' VTTZKiKi[CQ@*jlh6!FJf[IlJKFNMjX4USVc&Q#1#%)XA3jX5,91GTF04#P3@`l* 6d,a3A`9fC"#9EL95cJXd&E#+Pl)f0ii(HQXFJXih'AP8)@ApqdPS+B33-k3m1FG ZfZhZEq"2T@m)Pc1X[J6ljfkBA#S'eVa)Va9&)9-Xf*!!2%(%UmQ@Ke#fVKb9GhC JaFU3!,(EhTYT19a6VX9V[85ZITH4d*Dq%)E)`fGMAGDF(AZk,`mZR[FZ"fIp`DX $BPj`+$K`"8D')P4`(FZr3ei3Dm9Q5IBCkeKBic%S'$F5MXcS,5I@1EbZTQA!l1T K)KZb8U%6'+c9)FfC-LHTHp&PJmHkI8$$)H(PBQ,)fFUZB"3'ph`j!l(JRAX)U83 BR3jA+@994ji54hFlGJd4"@LD'*!!N3+f#Pl54H0RlbB*XGfj#iQXLH2&qHY[4@) Hhb(j-%%PUi5i"B6B@bE%@S"N$4"[M`Hcj)C6&fDFNA+ZfGE2ZdJ0!9XQm4A3URH B25e0aRMhF*UNK%ZDTf6QI$+D,0kM&,fBP2#[+dc`-FNU$#LZJ$k#S08f3-IFJR@ "iJl#@6L`%I[1S6p(9B$i*mZJk(GD23aLKZ3UE`idESUGD)fEKa9+(HV)%C!!j*D i84G*G!8mQk$+$Q(V-bSD3cf`8BQFN!$VlmCBN!!cKe2JQS(rbJ(KG!Ba"i"SpcE K,E40aIiq0(f","(1&k3fief81,)10e#SiJMQb4mF15pe)9j8Dm'a#R-VZXRHNk4 ,M%##R@bX#04eJZIBFKbP6ScI#JShbEcUSM"1`[DSGkmSK+8SJN*4R29&0M)@"6" &FZIIM5ENd!IHKm9cNX"5Pi&H*15"I$l##)%VQQJQ'XPNmp&AfC%2iHb1b%@TVa# 4b"Z'LaQb+T[#BNA-8*ic1-`+b"cUq1(0@$Cj+2Bj'LZCa!9N[mHZ`NkXe0%$m@S aT6@peJSlAH(!cXT[aHTL$lPcXFNPG@m(Cbm4Ud$DG))U-+DA[H%f1-JJXp%bA!Z )"5c*4[h`HVbBmUNqeKR3XMiSfq)JmQp90dPa0a-bZG'Y+aD@V1m6H,+fk,SdXmK @ij*3GjBUbXC`4fCG*iK5jmB3e4U'YbQGL0@kj*V8j86V'K5mjip&8U$Vj4Qp8iH &+C9(Z`C*I2Hh36)'N!#G(eaF(KqF$)j1AL2N8SV(&,+#l'!NcJc#(M`@pB)l%4d d,rYMXPS!6*cd$KqH%dIAaf5r)Uk!,-DNTiXTX3V`'hdZkqbcI6r2hQp$L84#5Ue P*G)hij!!%L%@#eiF3`e&0MfRS#T(A%`*f$[Pq&bK*IQPq&e,VjdJAKH4qR23R@* 4@q#mf`D8IF1*cM5*qZcZNerX[ab@kBc`CmG"VKRk$ib%G(Vr)f-K*CIcQS")Cm$ rD8LND$M#AdSJBm#F1Ed'hU@$hNVA+Rm0aaCP$'33@%3ZV&*(j4dq!E-L6P&`9AX AZkeVCd8NRU&HK6+6eMaGilNp"&Sp%4(##AKEPN8Lp'!k1@IebPH%!i"3rYSAr80 52BBh)&(kq[3pdY&$Mk41$UFKFcQ,SA5%N!#1c@HX"4-93+Q&BM0%(M[JQ)KX0!3 U&0T+IRSf11`GR4aFpV,'pQ9c1HlJDmGA+"BE(,0rIiYjH%,K)6Bj&Ja[bGG0I(q Ac&KH)2ii`#@#r"l(NGMJ9dQB!S'"6,Q@pm!X6`i(*mGIA4aFr!2BaH8,DZXSf-L !5D%A,`T('f!PXA+9+fDVA5IMdHZ[MbrlVpAVEmph$[YCM%U[4rl05*dQYiZCVe@ YcAcraF&&la!QNl'1b6!VX8YDDE(NYJ4R6BF[X'U`E'h2k!P&E*LLY#V'k936X[8 5T[@h2J*H2hShBJh1Z6FG)2V669bbI[(Kk-Ic3djMK$%9*Fkj*Xl962)kc!B(9'N %CaDM,pm16PqIN!!A9GqF6dYId2i2(6qPLk#%Q!HRr@10-L,5aa-mZC'p2d1DqaK $QMJQa-Me'h)lY8p(Bq-ll`IdDh%N(8a4,rkdecXF(,jqpHSIJi[HjHZ,8rH@N@b amB3m$0kKcb198*-C-kkP-*rPK'%NQckb`QlAD''4kPmHGX9Y[k-M-6%$$8aP@[J %+Sj(F+M&V`f5&5)0lAfE$+)5,[8'rI,Ab5f),#H`,i@X*dZ(+iQmU(e4"&[([bq f1p&JdX8`DaMG-"5hK&Z4!2IC@2%%qUkZM1KCRA#Nbae4X44YbUJcAcf3!)L)Y2% S(X-i*h'X$pG!c#c1ZA)0,k!8Il%[8@'mj#-3q-Iq`P9@Eq*a'*B$RmmhI#lGd@d Lm[lhjl"0Ne%UB(+[N!$TZ+lT[9KGaZidY-fF6)'h1KVj%%l'G8,6Crm"(%Pd4dG UmcMDP)b#Xa"ih`e)8`M*m"fSTK(!NiX-q6f@YUR)jaEi#jMZ2&U*bX'Ib!$V1,a K!CL09"SlD5&@2$@Bf-NF(Gf-U3`T)mk4a6RUCaV@HA`X)SMSIbI8jHSK(12C@@q Bj@N6)6`k1qqGBJD$S`&pXTE!X3mGdXQKDqPLLpj"@c4YflAJ$6!d80lJlaHC#'2 +TQFi)1!4IN(RN!#BUUPR#ATD)Qp`[UrJL2!+S2ed0*AiS4IR1kqrGFbT*NmX"qq HAC`FR"k500JSZhUYHM4F)@Xa!Rfcfb8,aKLG+rFfKFK9'+iB#"SUAb2l!&X(82p fr1Kc6*f(3IUB0Lq-8A1pjdMj)CNqCV2&G-jjcdD6Gk#YX'!QE2pM)T3-",9l5+T S("!4N!"KMf1IcD0DETQ`VA@ThB9%'NV5cR3qZN)G-K3,N!#Yq(SDBHphFB$RR,3 qipF'-@JC+R@+@IJD"+j1Xm#Q!K+JkHU$RBa*$TZ(MeTcae3aQ'-$mlaQ-ZT-91r X#"1VM1C&*DD&+0Bb%kd5fpNLR5r5f%)TJ35P8j-l&k58qR1m,Meh'L+1XU(VbTm &b*1aTBi5S4#9f+B@`@$EXYM)hpL()p$b3m!h$JVF6H3FfaN"6#3$EB1Ab0rm*"( 5LbiicS5"ZNH8c&-UB8mEIF5M1%Nd$AmBm,#'aacf[RVpA18cANXq,$$d'[pC$6E 2f6[ZNl@UUAZmGD(D,SSePb,[lp"GiFp-G!55HC44!Gif0BT%9T))NHkaA3PC4jT p2@HLl3rD+`6Em`kcH8*R*KZ'm$XGTCU@9IiddC&%@@P&%9`N%N#S8,PJl9"SEV) ,G'a53c1b-Dk4D-AY*"-8*B%eDAC5bV#Ma0M#59Y3958l@J)EDANQL2@h(,df`G! 6P%Y-RPTV0NDYJ35R`elha#CYcQ5e9AQ8*mPi"+6hLTi!-2Pp(42dB&#VIR9m14M JdZ",Z`NIN3UKX@"N-lVQTd'C)5qhSR(c!%'a+iPfYCa5K"N5bmL!6LLACR&1+bk VH!FL3V8'blNAa'2JZ)R*KH3lPe'XaZBF[Vb@J*`fe[[Lq1K68GSj!*J*(JGlim, P'J[T9bkqBPI53J1+!MD@BiZh)RX'cCd5`r54Yq$Bk!DbPLSKhdXDVik9Y+&%NR` U9XjEA[ViA4aemDd[2,T%YD1-Q'@"Ce)kJ!DmXKN9mYh)CUM[-!`Y[4P0Tj,jeB6 A,"$L2qM,-HK49X"4CQ2rhJdHe!&rP&GRG%ZCe0L9k8HZKdUBhp$KSLMSXj`!02T HSD84fk(i)c9AGfLYFmNVGcV53UCe6RB4$+kKkX`qR*3EUh-VVpRkD0h@ip&aaCP 96BK-QSU5Lr"eUP)fkYe*T*!!GrH[8*68$DE2[*[bSB#CGZ@XjYdF"p$1b9AKr*D b-B4Mm4C6*EIRKF"%'01VhmqbkBNAmk4%cM0%6DYCSra-$Bm[MVr0#-`i!ZP!!d6 h!58BGi--8Xj*0EFN5N**+,ddaS0c-T!!9rfe,VkrRhjVE`p+1I#3!%R)fM93,+* FD!J`*j!!RPXaRXlmBN)BUC92%Nl`iU84bQhb-pbVa0@-m-DFGV2MXeS-IlTV!lp Q%Y2,kM!d#*C'5'deL%MIL"YTSINVl69jpI+EhXA,rT+B$%"lpFe,r)(M-fe@,b, rqM%hc45b4"G2K)Q9%CT,HM-&iU$p4pXHY(FD52jG,(RV4HKLAFd@C*6[&5r6*(( ,Y9%JFakYB@4AHSVZ38dCK6V,ST-)d!E+k!b%YKb%%qMckKl2,"NA@3l3+VMMfEI M,TXCf9m$%V'0kGk`Q5GXiVGX5)AV'c((l+I*HkhK'Nf$kBE$Q8bDGIf%JJRULH! %K*,J[JY8e[+cV%EidFEdDJ",!Kbbp9EE)JmGNe4qQJ!8!mTHTl9BM[qfRK,'&`S #@12')be(LrF&bNUm,2diRERqG2j1@3V[G&#k#CI5Miq4e)%ff*)%l21l&q-Nm0f h)FP!MP&6c%-H"ZDaNF(j4HrSq&[Yd"[b46MRmJP3TJNk01GiUR4)S38lk60)Sfk S-[ShM'*$P'mqF!JH0X0FcU-*aeqM8MZ,1&$22K@!blb1ae-Y"J#&!Z9MTS9`6P2 Jl@6Lq5KK,*@-)JjFC2H%ATJNk5FU9k)j%!3i!ZQXaP&)m$IjrNYXf%lKZiM[*Ar 'NQhT'cD&%r4,hh##p4+)G[1%!9ckKV,%`bLfF-03!lR'6SEYG9IA,6Vd+2hQRC2 dm[$JmX!+i[+DJSPfYbhTK8'm4J!EN[pE3E'kMFL2@MKI2%!+T%2iJrJHGJ`$q0M #0&h)h@4f#-$)rAqFGYNVDY`&fK$P@+rJYki4JJH$F$THd(YHjMLKe-$#-K%LaJk 3!2LZQ(YNA,H'23&*Z5@cN!"K88Y*R,,Kih$!VJHBA5FMGbh(0Z%'#0r+FiK63B` U li,X4Kr2)fUGAP"*G5ppCSk[[3*M`TkX*+LDXKX+1`5&bA`kK"a24a%B+&2r '4L[Xic6qpV*rf6XAT-GBf)'FF!IVTF6i&haMcBS3YYY)P[(Qa[CM`H$ZZ`0bah5 Q(NTIh+CAMZ@$k*af(p1E$)j'Ri9r-[9r@Q6MCSS54HDqJH231GSG*LCi0p303Xi 2RTqqlS*+Y[m&)"4rcNE6QF[LZJQpVk'9&eiaD1'h60ESG4bMR*Q)3"NembaTIVJ jRdh'NeX-p4YZiUf"HadM23bT1c3kB-qiE+2P$rR5a4HBa!3d"iVH*p-NEMQC`1A &91R%PBbb5)f9#GfFr3BJR0@U!"#cR6VQQ'deD",5Nf-K66S#PR4mHR$aMiaH6b8 d16RTT%jTHbRIpp)T$HKP$Il"[+aVERVj'iKS1Q#+Bc(,!Pfa[!QIiYpRc1iPmKI e+Ic**0BT$8IiCSFfGaUj1T1qG1P41fZ'!diSJ4fB`f1ZAh4$5C--ArPMM)#Pe,@ hM-m4Ik#F[DlkY1YF)A'MhKc&1m,,,UR`,,,UF$4ahQC2#(hFHY#U*R2bbD$FZU3 1GA85fkA!H5h6d#e40(+Vcd`C*Y[#F,b&2i1*i)dGI1&AfmH),1PAAVIa+%PNZ8Q l,4R)1(38&kVc[@%YI%+1T)dJcYb%Gam'LZ@KC8HX,fF`(@2E8*NAN!!BP%hTa39 $cS0lja+BA(c@C,TEEp@EZfT,,rV@6fqfe'kfDp5HI(Pk3fh4KH3YlLD254Zhm2C --K(e'8ebK!CiMRe@lFCrSid4P360p4KUj@k!Z"P3NSQGkriVIM8iZ%ZD482P+de e!0[ED43bQ[Tk+b"bjMX9qkQqC"(jdlQm-Q-B$p1K-CQQ-%2`!$BJG43[i[iU[eX U%')j%UX!J6`NHBNR3c&#Ud["BNl2aFeG%C!!U[-cQQ5j0MPk00M)+hp(&LSQIaM RVRh,Q@bB'5f*!bVb)p`LA$8jr-+422#-UTGj(FSKm63S)Y)8560pi&Zqq(&L#aR PdGa-bBA#HqIk%iEEXiQ#CH0!-PY,&cV`DS,F-'XkaEaYf4fZ``lAR"h@$TP9Hdc @l*,C#MDk@,Z3!$DrN!$eKIHTN!"YIN'k+6pL,fHCA`BdGNkMIF94B@h3!9X4'*I p0BUUSH88@#J18pSTj$%JL'P*l@JYJK9PF8`SKQ5rjqIeT[`bMik3!#YE(abXjJV %'$c+4U#aiIMMq,eq$NV8#jZ9%+M!k!Ud"#3EqLdc[('`C#M)@Q&4qYI+)1Shk[L dhlZi(23[,ij2RaFbj)`2R"[kPZQ+I%IBRcE)@cX#VBfN6MCNJ!*m2*PV$Xh02fA U8ek49$Q*VTKP#NE3%'(-*$pL5VK@jY8[Ikh'p4GG)Fh'd4H954fTXhf%MX%faEI fk'hj5'd"8pTb,&M,K`1G+!hep3)!akF$I8`*"SZL5M*+K6YR)DYe0Se5'G8&-4( ppr%N@9aGUh'5h2JNle0`Na["LBQCi)J%)c,GN!"d3J($mfJdfB'r%DkV0l3`#X, X1k%Z5@d5TAhYcc)KY8JP62TkRP*KbA,VZ#)P8[a+ah,L5lPSNJ$e,9f'A"8pUQ4 iEPJmG1q0mPa526@$MHJkHAk-EESNc50cPT!!9$*'%-V`Fr*,9Q3mS"aDP@#DS"N JEH3BFGM)JUSESB0cKaNBqS$*Ij'%Vda-TGPH$'S,XbdeM-K1CHG#-G%J,rN""XN LQp3[MlM"Xj+bCKP`D,*h!(FSl-Qm+SJ`Dr21G8cLj3)C@$2[YaZGpG#+afBhj8% aqiUHLEfAT$LCLhSkS!@[4D8a*5NC*eIdESNEV'G9q2cE`G(V%m(M!T&FILj6dp* X+$LQ18U[a58dC'qMkE8SZ*1'p+k@["L)01GI'#1m-8k`lh'dXCC(N!$TI4R%`2% qL*S2BN9#r'0ATViiB9`lH5b98#SNdiUi&eiD"''!EVTbfVfaL1%JLV#8UddS&#& MSd$&-i%P0&9d2%#(qR&2QRHV8RJ-a%80-@DV5pGDM"Q165P12,DM#T!!6@2T$Yb b!iYXfeDS`FaFSVGU#36qRq&P2%cK3SrPd1ZIr+`1J,EXUQ[!#N&j(mN9B!hfI,2 qNKj'&3%%0eR(4PQ0&@pGD&k5*`mYh`YGMGpHbBG9e2beZ+5aSNU#RP"--CaIYV( MGG511TJ#j4Hmi@'`ND@R*Tr`dNj*5%6@)1BNI@!cD`)-&23BBR1lqRf98IS""hV QL9Df%C)6c$LdmHj&H8@)%-60""rQf9%QA#C3RhqZ2(lBb+3jaQa#HA-ML2C-LjT qTM0Z"d#V)2pr&l2m4AJ24*V)kiaFTh304Gp'ZUHmQbU-CrM1-`KT+5R2amcZ-8[ EI*EFBr3d(eQV6rYNPShX)mZ2H)Fir1f3!,`m0PkAEC*bMF+%31JlQUrkfRQpK"% YS059HJBPMXJ-a2jm*k#A95acdh`hEppr!C%!Y5MM(mARURKc(+&p@@C[V3am`,M )9fSB&i8+iZE,jIf4A&)3",I@"hkq%(#U4*4MQU6cNV'#5i4d3ZjaPQ,ap"DdReT mJ'5hPTi"L3mZ6N%#C56Q0lar!a,[%GSX281%CJ1+U&f'3K2KAmf!`E&0d-ZPfLl ")#fE@mAZNd+'1aQDXc)3M&0CFr5Ga0`f93HEQqM"(8l2aaF-E)T"j04A$dFMa`l M*Yl3!3A*N!$b@@(r*TH9i4jPBh+8"FVKbZZ$J8Gj&T*3J$F%PU[,8E,'Bp03(%! 1DH*JIM+G&Db"a0`Na,[cBL'4pj[i%QEHR$8Y82,McBmHLb@J0hBj)K,@-XlSGUk 18&jhkmRH`,(@J2XBr3#@BCBG46HMd&1JMdj$k1Y8(F!A@"m2LD3+1EG*ZpKSR2! lYT6eL#8)XZBLDE*jK6,UVm1RUF"KacCk'Sl$3(YXPNd#fLjCGJcRZ!GEI%0N+jY ,`RAl)@jXDHIU&PiEBKU#UcZjl&hd$QPfE`F[AKmG[6Si(CbGR[c$"LiZRj(kVJd K"j5PR&ZcqcYq6e'l[6)1Vp'8AVabR+a["eqGR(9ImJi9Q6bK-@pPNc%JK**5X3+ [8+*dpa"II8SLYEq[fKE`1L##(-a)Tab3!!PJcL4EJ*pQ3&@8q2X*[HC'lq*5j"Q L#Vd#"emcYm"Nr-GpVRC@5hI@8RNLQMFjLQH!![FIp,!'pql6k8bX83JVQIYlfAY ppRAiT@I4lERLbDMPSDV,HelEcETY188aapGc*Tq"-GqEkj`'!4`r)@9R!28iFkI 9`LL,J`kY*GXm5'SVqGq0FrkrN!$r(A1l2*,r[9*[eHZ8rpeVeHTHXdA9kifRr1p raTp2rl)6S'AN1[HT@[Y#%6q,amqhFbQ+-"c#+cIIS5NpmcRLblFF),)F'%)(Jpk 2PG5)FT*)9E`Y3KqS4['$SI3-S2DCD4'j5$Qkq%Pim81E5eTPD(k'j!AQ!+36qm$ R5NRATB56)l'1fPYEHbUVVAm+ACM-,#ZcCh+Fb@l)&6Efh1[2[J4k39mQMMH92L0 k%ChI%F6,0@M2HL3GLD9#`!QJ,rdU08PF2*8KT5D&BcmYqk-bG)GA8HNehD[*BNF HFLaYPb8J3PB(K$,4lNLmDQh8$l`kmbKdC84-dXULi#ldTT61&NRj(6'c5aLUlY( *`I2qrNETV,kKbTDNi2Bb43r6kjdjr-9+Vr586p(lp%kj'504VUA#,ZKFSIe')bJ DBFmGSJ"GR4cb"6RpRUG1Dm01,IefcL0lR)-1MNd-QH3Q)Kd4CS!HIKiCAbC')4c P6ZT*c'UC[K!KjI9EHJY4bfZFh8q(%R+i'lUmZR3mC!3amm,H#R2ke&a`!QjbF[a 9IerXj1Bki,jF!Fbpk9hXriMV,%e8#85D(5MS(jqGUSfGG+Hm[I&p[VcpI@'M[,h cI@9RZU8q&mhKapc"aIlQc`FAT3dIY-a`ijIFaF%TpVcj-hmSEA#m![bL0rjRrP# bEcRqNR1#&U##mkfdTH[rX[9,MT1[3`hqJ$mkGAp"$)CD0Lmle,4IR+ld[4bSc$X `!,eiI`Y!X58&qelZ+JcKlf3F$H$$aQDhZm&I#1@aJ1#qNFZ"(MYQmU!f2e8P8#8 VZ5M*S9+Y0MBVQ,#)R)bPkfheEk!"epX&ZE-FKpH*fL+9DhFV8kBFZ[UG*KXri%H "%JGMrD#`b)9Hle[jCENr498&JV!cKmFAe*m$VH26lXRV`alqXQ9Z9G1c#YlH(Lp KZVh2Lm!2"AfBIk4"0L[`#f,49VVcAFN[23aqf0lIfGRk%BlKp@Jiehh%ZSqBqR" RrrXk'ZZ1C&A3QAckIIf-G$m1,,B,6RlrMrDAk@kU)@6JXl&ChG"M,X0#)*'&`q- 0aV*LZpE(kijN9GQe2&irjISTe*G68-R@L&-rc+%9)TG$G0pr`,mh0`(9jqS,YFN 'IrAjjhMY5,)EBmBCc1m#rH8,HcRmHSf*3I)&pE2S`2ERAh,BN[T@T3G&KdjppKR MF&F(KSKl!%0@i'4ZrYcYPZ$V,cNjQ9"!*l-%e,i'G1G6%RT4S@6lFRTVBL+"YZm kh+HQ5SF(r9G[XNa)cR%BbN(HKX%!3NJH+J!AJNN1C"#DpFEQ&9BXa6qT#Xim[iP 4BU(Dj-PT'"98pBZG+(kh-eQ-ah[d2#hdM(R1F"c-*-k6FYBb2$rZ+Pk4-R1@EV% &6I2(r)+FSk98rI[I$,E&j'D5h%db)rl)+q'lh2r'QqH,p`A$"f&8rE(%8Br#TNV IM)Yb&laS,UP[r%,)!4"arhbX,fP&`)[(+DDFq*55jQK"MjE"%FVZJmMSKChU&"J !,pTph2`9!-aq#`4HR*GHImY6AiAiQAVf!0$qK"E8AIdCFHZ6aeF,iQ`T@*-Lc(6 jH#Y6*FZGaPY5E$Ri&Zr$H)[!LCF)C#0@Pd0A$8TR99@D`@bZ9IN$Dp0e2ccAPHh %G1lIUcGeQ--kF&)Zq!p"G+R'4`C9'B6F0%$KiY[drTBrdA+,QhQQP`9T&FqeUDH iq62)1lrX9XUHXij(iIL(Vd-'rIZThVXeJpB9i9[QM(8IUrA"8CGl@4(BjV0&[&` *a$bDm-%'6EAI24[dhhb[DZAUqUd'5KVGUp*,T&NI!P6Yic!brC5H#k$kLmPCrh[ 9@$Xd1BP+lm1VGNHhZbKr((*1Xip2D@NLMk!l($3BrN1VVhk-&-Jir+i!dF8"3,e HVTDpJY+dB+9IA[AC4dMAEebM['P!Slik,c`q+$,-C(BlQ)l#2fc`6rP9HqfDe5P '+C1!Hb29HC2,2%@Fj8Rp$dcM2jVL+KXEMU`BX+Nj*XS"KVq[LM(V9AQ8E($aGc( lC(8-2#DQ32YiU[)`"AV6IK`9LMV%)-,XXZ-B-CRcXCreBGIHXp'@TC-Imb"5N6c #!((PNFmU2fkSIE@"%KFI&p2'D-LPK&YX@XBNA55C,Xb5(9'P,rS5J4A9d3e,XXZ E3)(j*`)5[3G(L3qb!&TU`EC2@",#+alVCC,Sb)SEL'+qmjfP*@Gf00TTXQiMf+9 RZI#q4e[0`SV@Uaj[Z[FEP2DYPHi"LH#rG@MNQ9NER'5PG!9NEUBp!"R#fNLm5e" $R&dR[(qU,bYmVT0jI%'LqkdrQU$NVYeA-#Q@fGGJ@2Ga$,-5VdB1U9`kI((`TMF !SY1r2"bm-)[Eb*`D25F-LIY(R*BhY!MjNEUR#96pq*,PJXCrCm9VTLMM`3`rqHK bh,UdR(8`Y-P&IXYbR6cCAb`9SaeXY434$%Y$6'`aF23jQ)a!#9qLb1HP3X%VUMa RIS&2jaGRP`--`#qU9`IR!dEPSR,U&2C8lJr'UYIphZ!9$,HaPJVME"hD5jZ3!0Q $$pD'E5!SGmr2NBHFRjFfD,)pB#+NNqKTX2D)#UBBJ1cb*VHDM))kGM@,TfT!8&d PTl!k'!G'1$rRRAjpHYLl1$Nql@fi"TqP-a$&Xc'rjl@8R8N[J"TUd[BIp%%J`jE $NG'*ClHB3BrAp9fBr,$#1Y"fZSLQD&Be0m23[2*j*L(C4QlRR`$2lIfGp+rljHf rlJ0driTP$&@hR%VS0i#1qm2j1CBD0ZEmT-[SGk58lQr`(FZYCZ(mD!UaaX'&qp2 ""CDa21f@F`RqKP6Bq3'qBUNBXTdIZ!4rFkpe14@FBU`PVe-k&EJ%Ih1HUh4qYk9 rc@d!P6!Em4[IIhD[3[f*lcqV9UhLLIq[@QfeD[#Vjc@m*rrIRr&RmbrX"d2M!e- 'ZL%!aIVe'BcQiPIFcXYIPpAEd55&5TrIPKrSdjGAkDJFa9p!%faeNL3h*JV*Z*I 3md)99"L#k%q8%,i!eG5hl2)E,liC[$Sll*eX&-TAFERL9HY3JiMPTV,0GX5XLMk lCe4+2m0!#RmH$+)i$!H$r3Vfc`2`PElm4[mIIHJlrJRBmJD,h(,j*m98l[ITTXK CZp#5#+MZJ+0hUB00q2qbpfVhX0IYERE2ATdIRr3ZbVe[HkCRE'@QRCRC1rqpRGR raGb8QGh[k36KSRXC#+RBP6NDi'+Pp4"q(-Ei"XJ33FEr%KD3!!6,&l,Te[YdM,' *LE`CHAZE-M*`cR9FRS3fEh3*Bl$*@hU56b,!m8%kM5pVGZ29Url+(TJY`!`D*L! h#IkeYedd-@MdP@Te$dj13)Tjf62A)-kqqKVQde9E@phZfIRPP[i"p*!!V!N#rTL V%cS16iH'Cl[@J4UVIHYIeR9Z@RfXGic2@G-e&UrYPqTrT&-G0EE5VIb`VQ0lipF qS+IIFrhJB"4BYc)5PUiE4TkTq%dpQhXZ+lhVApD0B'r(2$++VE&Q3,kMY'j!qZ@ 4!IA0TXF(P$GM9JHN)1Teiq%2M`c(JGFI')dUV"PX29E)$im-*PMa(m#5elaZ12V PNI&dKThr!*E8BYeiq--M`mN0p)q1CQ2$PmCpC*@2,P'[lhFH-lP!X6U3!2b`ELM GjL2NiQ%ph"iHJpV$"f&'RDmb#@-I)4iK[-'G"AP5cNkq8KZB)!5$0,JS'3GU'iR q"[`$NraBrjTVV)kJIePCUIb`EUhfMCSeU``j&[$'XLV3"p3'D)-[G8P4V`'$)cC FPQC@pl%&'FDhZL,cdmU5p#rVeZ6FSr[JSN`pA&9*VI6$#c92DVJV,Ek[9%!VfAd 2Ib'@T"B%DcTb@AX',%CQ!ZPMKi)Zpr0EL00E"9H+@38H)4R(Y1RVd4%#$k-T@0c *E5)%GeArp9FACkm[3B'(BIlLI,Xm8pdA[Hj,GGJlli'5IpSplS'-VGk!1,9eY2N QRSf'phQ[J+,6H38+[k&E)[6J)0SH*A%33T+U9+&+eiBfF5$ER(kU!9$1fiTl'-h PeA5m-C,EK"'2KqTSXmm5e(QPS-Sp%*M38(b*iZ,cK*i*ZBQa-dcY(X0!4j[GGrJ aIl5*mII3V,KaFALj8B$TqV1Vr9TZ%i6qUFL5k''DAI&9TAee[J8ec!m`Z2PYcF! p!UM8lBhh2HkiDR['m@P'2Ej1NHq0LaYUSkKl,EK$8@8C4QA'Q84M1eRT%i9'(+e Q4cZ6RkM+5J-$4[bH'IM!(AP$PFpQj8`Cpf[RFaUrRrI'QDN[JCaDDkLVmR0kY4G hCmfZm4mUSrAN0URrNed(Y$"pq1ZCUUc@VqBf!6j8'cFArRp@BEb"MkTm%TG9faN @Qm$2c[l"BD#TB!p[hZ`IS8ANq1JIK0fVTqXFaP0Ep$G8YQIKc4ZSMKhZmZ"[H%b mfXXei0I63h[%FNqDr(rfCmRqJrDL2hb-$pYr+Y9UV8(fRdUPfDM#$dUeUXh@Nrh R6iRr0QC#qr$iT`SIJTV4GG4mYi$2Ic9+q!DBqMVf*k9aXTLUjciQG-%`ek0XMQe k[a3cT!@,ZFlqXF#JE,bP&TTqmI'Qc%-31BQrPRF`LEA&kEa)16Xi60J*jC,SEDb "lDjMmpU$Nf)`Y6N-*E#FVf&44+i1,hF[GGZJh@`Xqf2*$SXFGZE-5j95@BL1SVD aX5Lcl*!!5,*0bh0qdFRP'4EZQM04kYQH!ABFHZhF$l&pmYa@qmK%EHGb&,B0rl# ITA5@qp4m9+9$FfYj[e+AVqC+rAl,eVf#(bR9YY2m0kEAbbEAqjiR,(pqDkUpA1l N8)Bp+D[5q#&RRIhjEVI!$KhmT%U`CSb4*T,hN9KU$)QQB'JG#Xd"d,P,+*rl-fM 41cRCerFR*#SDH+[G"$FD'Ri`8FX5rNa&bf(26Y#cfd6M5#i(!RSIIY%f*jY9&$q 565GKfdKLY,E%U)L*+)d*J$UMJb9'38qX*TjBV6@aaSR%+,#*X4!N0+m$YFp"QS[ 8KQKLSeh'3Dbb6`NLX-&PVhmjN!$9''h'NH"cZF2MrZA4m8N2DdMfjk1$[d[QB,j @GC*F1@FHLGRfGhlT`5YeIJ!Pll[`'[m"QCr@Dr-qih08mUBN[q1DEHQmlBV2f@5 IHX@H*[1P&TR(&6(C-2pHrY[IrUD5Y,Vc#K62Y%SI6EIBNAiXkk+hACE2TQbETVR dp0PfQB'k9"KQHM2&q"E*8L%1rbiX4c!ajjI['XdIU-AIfXhPVXa[rG9AdQ$Nk66 6`2RTHYhECPLmVR5j(hk[c,#RE$%ZH,RNVPE0G)#B")Ldmehhe3rEhdhM(eCq%34 C8cb2IJ$iZ,e&mAKk2GVHS5h0jB#dlCUVd4TR1H#CF[IQ2[PbkGQSrI,ZCRkTV+$ fj#QPj8HQpQ$`6mKj5qjM6YHKrJh-aYc"cR`T44JPqcd'1h%mbbHIE'p[1`meS([ kk!!1dk'#(lB8$3"mXE`MUf$Ap'SAa2fSqGP,DXT6!hhk3h@GSDJqqY@CdZkUc6b HqJ,rHe$)IE+C2lL!VeqZrP,k8Z8hmdarU3BX%X-D#mT'!&2N3#iRG'@AFjb@qpJ Y%2k#rUkq8*bFTTc56mJ03UISpThq)QP5J3*p`Tj[8bRR2X&9hX`$+bQBp@#[Q[% 8+-$U5rZ6Z0$G&l`bI99bRi`R'1e0MH`2Ma4$rCbqMH836jJ!X,5#AKrm6Aa4cbC 6N9PQ!3!R1,,Vd0k2pC5YDES5)@2A0Lpp#6MfRIS,)ZKQh[+fJP)r#-EGhL#[brb iKq&65feed1pb-bRR*Z&dfHkDk4FUA0mQ%HNMQ4p%p&SZ&'-@GLXVXJ0#DH31cch M69GRmIPX(B[+I"BH4qHPcNe!A"D("!AGSrY440[MHS*@UjePbRjACG0hIK`a6lE V@ekJ*JSX[8XUh0(%5VI1,916'&Hr9L$2Qp0P,8bGKrFYpBLMe,jZPmZCT-@l!Y% -NX%8hZeV%$)je&"QI(!"qmjFV2[YYqVfV*LPp0CNm92J32pNYjaV-jiXcbkl%j[ [2S`!@11M'%(KC@03m(BeX3+*4@hrZX,N01U+Q,`YVl+T0"RSC0iTcm636C,q8)l -j9!jj'%qSApb1D3m4(d0UpFIIS9$"CaYQJNL-Q%Y-NZ*KD-,6+j8S*NjrBkmqC0 hQCZ4kFlhjCfGUkhIGdeb$aC'l(BalP!CJpB)USA-5RjeRKc(KImjkicfbDVc(f$ VpiC2E8CbG6L$H85*bq8Gq&N`MU[V)LB62dl[SKp0QH!f*@2Ca`!ir)+AJ8Q"G5# hKjP,T0VQ*LG[J4kJPq('(QA-dBHNA+C2cpmHRqqA1Y$**BS2))B-(k5&RVf5MPC AXE`%QHZMfcIhVp,G6d$Z`3qL@F#QNRNGYa8IR+F[UP4bZ@A*e2e8(CkTdl0,GGJ lk9hfe1@,ill#F$qX*,N2U30VXeHMH4P%6DhTl5il@DcQYrS6Di)Vj8B4h2fifp# )#bZpX(kjqeK$Ud$Z1QlG*4FS+j110r3$[BRLZIYEUQ4(FFCH(G$kYidHZrXE[-9 1jGmeJJEmaahJ9ZhqMI0KGI`hG2fa6FKCb@jA,AH6-j2k'1iS26GMJPM"SBH2c&N p'IAr*rCrB$lrFrYrXe9rX[mrfIqIl2p2p[mRqrq6rIr*r[pNrhqbrcrCrjrXrdr frbIlrj2prmRqrf6rIl,r2pRrRqcr6rEr*r[rNrhrkFmIDIqIMG)`5Ir%r!mHjAq S0Ve+Sql9-Ip$SeClX[rr1IErmeQ#,h$X+MlYJmV!U`'[1UH(eL,M&9#)*&8eZrX b[IDMj!i6Xj8A0qJFD([eQSGf2f5Zr'4CXTLANQ%*q'XT50iAY932XJ%qD%)[A'` KIiYL[-6'*[0N6$QpGR2G,QGBh8Ip[#4-m5q(`Pf2ZlX+$FlckePb&q#V+DTdH(( FljleiG23"bV9IIEXScfBjMR3&'j-G4q%K&,il*QSZEQci&m(kDhjf3jD1Nfk2N" SZIYFpp@,jlSqp"hJh5eh0Q2GGIqR44`rf0q`&#&KA[l#V"b6@!8a[LFj6a5"63h ZNm9!RJQM+T*RRL'-$fZL"S&EXBmrlT*,"rddp$lX("p)QJ13!,mXiiq`k9q@Nl* qjJ-rDjQ#[k!83CrdZiciQ9k@XSS0&QN'Slm3Ap&I+#@MI$DGD$kN[b!6S-pFQZe HZ!Kp*RCKEhi+L&(TGS"Gq,hVbSj(+r`$ejAYhIkqCPeX3F5+4Z(kXUae-0Ueh#G IdN0ip)Ar$T8kq,Alkq(4VbHrR[jkrZ[IIlhSrhVj"QU5G@kfQ&$+1Z`lh9@)B!S I#rRNbaeR'*!!JN'DaYk@Ib#29eLkHPM6S[,l@PcrlM'ZIrFB[h1!MrFHMBE$$,J eB1NjYr5D([)PYb)RlFI%iP`G(Afb3k-SRXa(S6rHdZj)DS&pbdlBA4kLPj(rb3a &,l*6-h`2GD,'bCaFVQ3MrXX@[M"Nek"2Yi0(1+AZEP,ZcaG"kTkKb3dG)+'%KBq d-e293f6`mlH2m%JcaiiS#"pD8aqJF''P!'edqP"FPiPIZ6pbb5-Ra$C$`A1T(49 pZ1(5B2MeJiFaZI([LjCHkdHHh1@*)@B2d!QIMh4S!5MSZNL!jj3`CTEZ4P-Q4G[ Uk0ICVq%ET`TK&(#$erMD84b0q"&ECQ(a*"c&`"V+)8MPCZI#%'B@KV*VBYAq(2[ SFhV+E'08FqrakH2P(maZlhi5QVNlKEa*5b8)rTc&4'aU)1%@QmDC)QNYA!!EbdH hd$4e5k5PjKRB9(r1&*['Q5,G'TN-0D@AXdb"E@5q5`YK4YK'2VU&eqX,L@mX&A( rESQ-J)`0ZmGrc9IEKrR1(CL[dPTc3qa"Imi8fjibCGaETQLPaq[(HY3-GE@BQ2& UXCd"9C!!b6U9T6Jc@9YQ*QZ,l'40@AC@EV'c"VGihIMV*RZY*BZFN6&N"FZ&QIQ E)M0p8f*RViZbNhG+RENlTFl8RG,9X60ce)JX(ph#c-5AF0BYX42A4GNTdKTN$'F p8T`CaCDCB@b4(FH82G)MVK$IK-`Cd8k'Yb0aB@C`8f6'0L9fD&f8AD*6kXc(+AA faLQ9X3f!G&Zc%%Y*9U#e$+S91*N#hDY)X6L3!(ad#de(ESPdpD""U!Gr@!EI`a, `(V+JHp,Jrc$lMdPLpqIQIe$9'X9reTZ0@U0DUGBSri0AHE,rr"PrGVDGj)@P%X@ 5,HCXI6M!(dUJ*l1rGA',QSE26kjcf%j1E6mD+iV2ZR-A@1Z2LK*9fcZj(%ckbrb R"E9j('e5JFPU[F(e0U")FPpqGG$[BA"aYA+LS"dp%*h1k3fq@+@h+)*MXP*rJT9 U6Ha10cepGI#YDN"6(*!![XLcFVU6L8SAi69VCY9'Bj+I2+X8GUVUQD*2H4bl9#Q ScrG9pCqe+LLD0&RTr[#XNJm@`q+SS062D88pfmIA4VmErE#RdLTq5bYl[cLeUkD fEEPR2m1!HdlYZP1lkY5@cmqUQGTYThEGU5fIRp8cY5Y0,-BR'A4,MfVcjcE84BM Yre&r%'U,N`36[[@q26qlZ03SQkGrL`LfSKV(%ml&c9AT*hlVLYlI99rGcq1KfSD kA,SiRZ!E#j1ph-rmIC+1V[$eGhaT(@#[3bc9CmTl2i3rHqZUB5SZRSEkiJXJDi@ PkTKirJEJ)FPD%8$ia1lE`HRVNj1#6V*H1C%Ur!"G(UDP[P!H*f,R2cGScS2LcaN 6rdCIGZR,RUQ%CD9p(&#A5)FhkSYpQYh2QBaTCL[hq*%-R0dcV,LAUAD$REU&pK% @A010qXXq6MC+PVTRT%D3!$pl*L-Bc,Cpk6Q@5MF&@`aYrlT2TpFTUfE,H"S#`cc mq[RRY-Krd`#r2!N([i[rfcbcIblrVeGURX2rkr6qlp2pMcq0rc[jK88!)$1jVfl M@rX%pSGBrHUeN!$r"FIr)eR1rMi6RDj!)fE'crQS"5*)fa-U4U2GD%+46mk$i5! Ra1rL-ACN(c@rpU8RI0VZ&Z"'VmHQ5`q*Pj8-G3)%AB51!2KAMQRmeI`DiENbSl* k2B8Ta*-jhNh"@6RYjmRF(kYdp"",fabPDPkHH9&Ll1LjSL#f$a&jjFTI@I)4HFR 1F$THi#0q#JihcM,9mhJrQUp-``rRLq`m$-S"8j9e-$-d2e5&aZ0VpfF[NHH!h"A #$d8S`!XT[BZ,X`Z+N53AfCh2cbA(Nf4aK8rG#bTMpDpH(hfiZTSPb5fpdB4[eR1 D3J%0p[4fd,qmk"eNaq5GGVBC(iZI[22(SkLF!h4&+8$,,RC4qBJZ1!Q!LJ,3SJ9 XNIYPX8EN&kbpCq8F+6P"1@C&eZ'1R0UfDbZGd""D#(SBX'![mVfY&FpQ)U,`,q9 *r(iq!#L"q%1ME4IFdD55r`lSJG4#HD[JM2rTD)Kh)%"qkIHH$jVePp33$M%p9X* [DM&bI`(-i59kLb[08M$#Khc#Da"%Gj%3D"NN6qXV,)m,JSNCdNKE$K,!0$Mckr, +m+@RI@@"RHQBIq39CF(rf&5`"Fa&9eir&AHJ"e"-NT!!K%[m-"JZ*Q("bmcPB6L ,-40T([pG9b'CqMmYU-DlC"40KrJc2`mcQp(L$,h*ImC00-,Ca@$9[qc6Z616YVL 3!1R)G[*fF(4mHYarXDiIIAT1$eeK9,VS65,GLb-+fQ&CG!B5m,I-5GlP+9Q48-- C*LH`)1U(fl"ZjU[$ZL[pjBpR,Bq3!)528i6r$LRif9fcS8qrJ6bp(4cfMJjHRe` 1m#f-LeiI`d`,6k,hrj[b2lm(mFH2mC(lhiekUlNNrcGEP5Ijrdq6rq8GN!!Pker hSSZf[rm(6Ajdp9BH6maT1H2`(kF(Vikl!eM@i2,JUj0H,XIeN!!3!`J'j!NIa,I 6q6e`KXUHr#bNeG6iVYTSrU"r4,j+SGX$mlXk1mS6[bf`'3a)kr0i%Xm`2-KAA!9 P'jp%jG,G+)e9V8Tb$8`0Vl'(Lc%,j!R,S00NI$p*ENIq'*hblrpCUcjlrmpU%rq Ui9riYB*I+r5TJRpjm&FErQr"r`hi[ii9Rler9L(4qYcd#0[b$X69jdIjDS'bcFp L*2kJ3B!`$RX3J(+!FR1#F@J`a@Q-HaS2Kk0`"*93)UBRI8J'6Zl)XJVrc&)Y30m Q8)3@Xa%d`CLeJ,3EbZEY4r3SJ9dI+K%J1Im,9Bri2@a[1RSAPa,354"CEKIMq@J kTQci[Y-+AkKkMqema5K%lpa$+I3'mbj65[8lb4"!+NL!X4"1"e-H`+aG0NHaVJE G1(9rJVVM0&Qrl!qY@ZA64,UMcVhh388V48lr['Feh+Y#N5mSb'R%b[QIYK%"#JU [QNd*r+6#q&33N!"'b9h1BRc[%YrcmSHSN85MGk1)33I`#JJ2,UqK5aIMi#[HXi" c5G&LU&mL,%Zcq!U1,[3#fXee3TN'-VXaLD#hZAqM@jR"HDZ9D8pk%4!%d)`HBRU mi#'H*3aqHK364(Y%![38BQF"DT!!Z',Dh`L[Jp(+P@MHYQ2@`a$1K!QiLMc"4Xk -Y)-ITmrSqlkL8e3ZP`R5P("LDDUbaT%CPA$U2AD-+M,8)2$J4"Rc!,)i-2BPb1d 1EDG)c@)%'LS'HX)&J0Bh-4+ZfGcLecAdE"%XcmVi%Qi9B%HJXjmd'XHJY414!Bb 2H@BM$K6l56Bq&P+%DaMG`MiD,%1#MfNLNM3GB3h6AS%qZd$PR[%'Cce'k`Bf(0' ,dBa%FQd2GZK+%clSGi[ZXa!MdDF,caPHhp06TF[@Yi(B)fLk1#'c)c`qVG%L#0N E8-GqP#,R#b6JXY3ElZ9BS3ATPFcNA)`(F-meA31rF3kP5ia!bjrMQjQXI8)pq(* ,Nh8DQ%H#jh6%CL&S31r$H$SRK#L)kLV[qeT"A8frq`%3mfH[@#P@Lr9LSpJUYSX 9q&ST9UV&5V0BV4DVY@+eq3[T-6#k["QcCRl$@A,VcLR[[BqMS0fZ9Ef6!Nm!IiA a["0kX"MDjP&Pm[B8qKR34*--mp2#MRc#'4EJYfI2@!fKe[m'ARQ#K[GmVD*+X)$ *$kK$VHN2'+GTc"S(kEHX,B[13QeZZ-d0Y'R$2hSiVKqUce3&p$mDr*mU(j,IT3! k)(m5hFH`k`N#P(BG9F094ZqKY[)T[3lc"fTj+2pFdJ&M*!C*DL[94`Z*kcJZd5% 3R-lIqK'Dq*C3Yd$#$f-fBmPDF344"KER[IINcdN4[V4DAU[QGCVd*BkpZ&QTK[5 Pdr%kM8VJdaH[eBc#HU9c8U3Z@Pl6(pEE3fl9DGCm%-Zj9GbXGaTqM9X*+[&)R5J -fRjGZSLpU"&h+M'hDNA9U00ZFkY1d+b(eB"Ea8'P&3B4Mp3+fYA)DdNA(5mB9U* 1KAkV4%'ViMAVp+AT"el9'r,!`eV3!9@"1frAJlKHL@,TSZ*(IP4[FII0#(K(2HD "Kr@S(M3Dh(Ql&YADME$&)p@DBDIGD%SAS*-%IMYNF!kMCRABD6(3fRkc%ACL"LH U0Bf`cL"VeVaQ-i`d1)Hq0ka&63CD1r,DAM4NF0D#CPce3Tjl2@af+Pk$34BeQPk p%QY`qY9QUe9TmBTVS9H,ka(2[4jiX*3kccfUHP'l-H6eqJh2$aV03,US0B+'hal bh1[9S0TT0hRZ84!%B5GL*2($)"afkVcH@M@#5R&0ZUJhB1*KLqFHK9(6Ld*HX4p %P9V8k0#ADM2Ue$bI1fr!ERKHcCFZ`RE8DP6Dh(d`M,aQTF)$9bY"I3Kl`UfD35f X9aPNi6$`1if1"QI3$L*B'`pFEA[9S0eKS$@'AU2GpKLFBG1$,3JBC%(&#q*19B1 c1Q`1@f'EJGCS0p[eX-,J$#X`SFKR*!QDc@BeUM%ijBKidS8R'-N)hSkU95rJ&FI $U&(aUJcS9L@SY"YY"ScA$*T"Sc,8#$i-KR(GjaA(lD!Ge@ZmiPEEDi8GRqIZ$6e [f+NakRHDAXG[Yc@#aa8[lV3V[1,@X1PlX*RFUYf%Q9GjlTd+S((BiIA'c@DY%AS 9MH!m*qkq%ME$CUA*!m-KD03!S4MeUmfUjp8Cd-h3DhBDFD52@H"9r%D,"fjA[IB 3i-QYB*r#HS-(EMB#,qU%$,*+0@M&RBB'CcX)iU!G-p#'B3$8SXAJK"f)+P(%fee T4(ieUM-iff&8Di9$MCh$!-j"f'4`eU1JfU`dH1ie(ipkb(2hDd(SH5eH,a#"S1E &9BhJIM6d'h@HHbf+fTe'a(2hiEb&p5D$%`$E(0D([0jkVGN"'UN4[&C[aP&Rb(2 hSfDVhDlcLL1rkF%H-qVAkekp'V9iZfXeV`E(T+%2ZqrjpE$"+iiL,fU&)DqiiAQ 09UA'R9GEAV9Hm4PN3H`"MPFd1-11&m)qm-#09V-G0+S-Q+VA(,BE!3mFG*V0U1j ajb%`KlMHdGJ*faX21ai$VGU"M32eRPYjNGGT9aP*`PE8mYX"Jl24#@UeU+)TH$8 1kS!r$-kJ&850X-C!#lh!EiDqd(dYN4#UqX%`!,USMjQ3!%K'm(T3LDSGAR(X4ie kUmCcld44YGAb'@5HE,lQCV8)6R@E9acAJ$J(&CjlTpkXei)fcpf,QP(6Vr&k@hl 6ErKq@aqcZKH(3irR$V5Y-aafH1kHlhPqA'8ND3(ckJ"(Bb6Q8kY*6V[PYAdiN!# -aV&AJ32&i'af['CB(I,!`eDcfQJeZ21fef`dJ6hUBpCTKV9QLlY[aXh!DmBmm$# 1kT@JaG[GlN5e+Z!$Mq4&IJZ@SJpl+iVUIXMJ((D#6J58N!"Ea8%-1Mf$Xp+#hBV V$$,!@UmG4aUF!LDHZeq*+TeDLqGHDdIYX"Sb11[$D$LX0RLp858)QUfK*MPq-`J "+ARZY@(3m)!hFkYf8+dek`cS#"KP&@JpMc6dI1!3S6jQ6Dp@piHmiRV&Um11mBT K49im$(RZIKY@2'`)YkddicBX8KrfCV-6a#e"rU"C#@TY"N`30J&I+M``#&I$U1T cj`hBY"KQU)pCk)@Y9SHl$`)[U,Fm(KMB3EA5$16B0MaS@'9!Kid!5&#J+AJ!+r5 #+S1c'J6eKYpKS$A#S!B%RF%C!V%B$Rd'@G#)2+"l'Ta9i(-Gi"rF+SKL2ki)h@G 4LqFHKmhDX&TPN!#e'NhIVh8d1$hKfG`Up!!PICjl((KiCRMZV5T)LUdfVpF6DU5 j@5-Be[dfccd'TYcb+cch9J!(,[!C56b"0)p8MDVYZ+-42'j%$8"FiEGK&-E$J&I X"9%3$DXLVM&Rimj"4+c(eEUQi-ef&!@e)AGI'8CqZpENJGZ9)+k!9-DYB'ZU`)m B`BH"efV&'Tb9GY#UYeSm-)S6$6pQS!f((V$B&S1cfI5D`%SBC"@N[8&$Jl-pE$B kF*Ui9EYCK4iBR-"FJq%`BL5TJ*3B$ZX-6L%NQZ4%,3pS@XacVmGH[9eVm)TV(5# +YC!!!Hh$IP5E63B-5&0H"53EMH#GCUIHU[1+Dc%3LeE%+rEMU0,dkcch#%5rKKm akJ1p"MVAe!KHDdAY@M$N&IXG@'lFi,P(F4#!m#[FYK98`f',e`[dY6%FaNCFijh MlN-rm-0UQ`GZ`$)k`2XBpHY"hDrj$1M!Mc`iiCVNK"&!SpRKJ4Yei*5YUSLDYDM 6E!8m-"bACXZ[-XL!@9IUIU$"fBLDJ!!H!khU0iI9S-2J""B&Tl('fah@3"U2I3C R`rG!i+eSl!69T"S2fp&*lKIM-[j$[B+N-++Y!2fiC%B*r3R'Ab`S,1+H-LP+PNa 5*-PURfF&-D-DEKZhiP8mAl+#2'S,CbIYNRCF@$'N11jb(A@A(EYJ+[rKIP-h-PH #AJYN@GPhY1&mIM5Cib630-#"K`8GN[N$Q3YQC#CSCq*CUa,1UV[GXjq@)fTY2+f 0TPf0T,9aY$D+pVmI&FXS!Aq[MiL&(hj221cMdDTS,[S!*Uh(*6(KI!#MP0e0f#N 1SX8r*hXVSE(lX)&8U#-)00aed)!%`VEGS!#F&B,%M91eql`8LSS9-k%!DfEeri1 Afr(rkT3ZIqlpMdUYeDLf62j[8&BarV0Hmjlm[hq5rpIXHbEmNbceeJr%PFK[Uh2 SrUmM3V&,GA$br1cLq2,&+rK'"IJ(h4XECXBEDMT,3PU66D`9a15i3J[Y2*'VqF0 lKCIhFA+Q+`P4(%d`$(!H[jp,H#6k5Xf&IZ`LpQIM%AN!X@BHh6F`CGpdP)lCrAB hQN5BcQ-'F#%(4Jce)QH3!(!aQd'rihZCSd`qMJVPj6@bQa'l!N!0NpQG2m1XkH( eC)5"Aa`bL4iQc'61ARfmRiRH*+KYZU*ZH("+PVD,EijRR8#8adpm,fNmMN0*2J* m"G21C@Ce%pqVBHc2-4mcJBmm4B)dl2(%YmNRDFb`YR'dR#,FG"D05",#l#B)ET! !IZlC@5ATiDmA+Df(RAF46)[l`mSq1S,3`bCpkDIE!4A9X4dDUdlM'6U[3-b#DD% $8Qr%Y6rc`cQ(a-Dcf,GB`41e8-RdNNaJlqkdiaC1dlY4XNLj-VicRjC92m(hfR9 [k*1FaF0iTY%aTB3bYmQ-deXLlZZKi&F-#,aMD&!#NL@S1B!P2b4ja!a`1$#CHU- $B2D&iLe[b3ZA@@6+2YYd1X+8&146S[f$REh`!jMCCqUP2jZ@eB%+CKJl!Kh"FI@ RJ,INc,@,*&&fMMRq*Rap"Sk,(S6JjI--"&3B+Kh%8$a-&T2)iYJ")X&Sl-qb@%@ pMbKqE45#k(+[[JBD4#%ThrLhDB&pc$0-Z@1k`PSRF6)"#(de5aBhJ+S&1a#0CIC 2TkMA+%dC('P3RlFU6DC3MJ3"JbFbC0)-GM6bacl0j$R-C")AP(%PAbd!h5EcQ'% d@f!U9%S!K!Zp4EVdi1!ciJ@+HA-#Nkm$XhfBTAq&j"12a3,MeQPZ%XT2VY-82B3 8i@'AqL+jLpp4B(HXMMjllN$feNG#a(4M*P'jYqb9"M3(R)#pJ@QERMK[SrLkE8$ dVIpq!!GU0"P)r$T'&iC!qe'l`34("D)-5F)V-D6ZS2[bp1bENplKmpkVhZPPIjN %`L(hF8['rX1pLY'E*V%c3h0N-+KK3HFUJa"&$PZ3!,k1'FX8aJp-e"EMb4Bp@!q `8UYiiY)mIh*$*r2@rcrX[@Pl8mHb+(bqiPqaiRd#NLd*MCk%b69J%YmB`fZERC1 `ZAjNDFP@d"30'-2frHe[ep$G9Ef@"Q0Jlh-Z*,DPYAVZkZUDUfqZN!"i-'3ERr2 T"3H%'EZ%&JEDhH51pjr[(qmI2GeAdhS@6bIMjQ8Z1Lbm+Z4@Rqdr2p`lhIHZ#+h S'Gc0ce(K(Te!(JZ`"-#V6T`5X$XQ&Emj3C2KcX1("[0JiS9qTeRSaj1(ShB6INV EY4)%QTGMf)YSHiB6"r)aRhHB#*aiIISS(!fE[j`2"ZrN+9VGXdA(Ul#8a`B$aUf ,q+V6I*H,pPU'$"Mdmlr&ifjmRBZ'j9TCAA9iD(,lKH0#6KbGh,2#,qUXiUVB9B* KS`R&Fl!hLD2Im0SeQfi+p!Tl6erNSNSj9idbTHfYl@a8h5lQDpXekR@qZCQ,I,L k`S`hA"5@LMTcK!YSmS'"@,@[-)*D4C!!6,2*T@Le6UCMR)l%TP2!8$%qiKHB3Bd 'V@N6Vm#SdAcA(eaecFT#0K2BPDZiDp"KM#B24-B0QP0ik3k*DAeN'bP!Gqk%`i9 RbN$hc8EI8'&NPi1,J'k[L4jcjK4GB5JN`2k3!&i&63N0N!"#)qrLH)LB%mdml"V `6FV$Je`BdiR9QkZaZAhjXSEB"VUX`-AR%k(1i#2`Z(&rfQ1'%8aEcJ#KjTb9#%8 (!rF45f+dFPL1%#q4%QC0m4ZlNl$I!PBp!i1VR'kYhCf1,`9&`HA"T'4mHBEf3G# ,+8q2)[F)1dB#42CRGJ#F'K`Jk[E3iS[ljrCS6)dQ@Ucd"m&8r#aZH!jJb",A9pb 5LDG4CXhb&15MJ!D5pV43NE9a$QebF0jJ0`PH)1)J@jPB)6TQ2b$%-VK@e!,CZ%d i$e!"B88B"*P,UA['P,IjPcB#k*CUb-(l8J-JIjBBqZ`fN!"BLql@aVL,-eLk$Ca pYhF'50$LbIQcaaTQHdmZcEAeiZ4*0,-l&"LG"c@arc1JAq&BBdhV8c5%`plcj@' ijRRV$+4-BQbkI%i)UR,HqaT-NU!TPN2YREci1iYdf!,-h2ddDf'2#a"Z-p*i1d6 #KA`QV"b-'"Z+AcjV!3jH$FE!VP%T(!hD%E(Km*hD)3QcPE*KDL9UPZD(%4Qie6Q 0)PlJceJiTrbc`hrN$JENQ4c%PmHjKcJ6N!!`V+L)#%F(Ke%4qMXeYb#'Y@Z-)GU r)4[(I!Zhql!JTbpIRMhI1iCN89b9Rd69i[D'(EPTk!A6J%!K%YeC3@l08"a0`b` $ai#d6@H%XSK'[iR'G!D,MPf6FS3[$Sl1$Pqqr(A[PrfpCe%'%f,YR6lpC4eHd+G 5&MXfi08cpiDKh+Gpj*DkKLKUA"Ticd9X#YJJ*KTi259Q`##mX%iRF5bN-fd8Rr3 `8aRB-%qTZZMCAj*r*l-bU!+80e$("#fjk')`D$(NS&9e3*MR@%V5`4#4-!VfF%A qE`LK6mRC-9-X&,Dca%qb&4X4J45[&)-8)[XfQID4Ti'fd&$4(,kV`3J)TmEB-Fk ip'dbAl`FG!FA+&K"EU)32BNR`J#8@"*SMQKf*&QB$1BDkJ)hD-43%*`PkQa-GcR FX,J80'h%$F$00'2L*FD'li)P3PYaC2KSc4L-#&e!)hCpkhb&YJC)$I#dEYQB)Fe M1D+rTQ!YI*ZKi&kLj&TGZhL(eXf&6DY3Ae&@KC`k`qE43Sc)'T95NF`,(c+K$@Y 'Ni+adZ'%)CMh4I-AE&HK'2afRr3YHT2$GF)[4+Y3p4*@Vf)Pq,eP2mN,p#C(4Um Im(5CA8HUCd!MXK`IY9F@lG9b8@N$2ff&l8(4LLLkJCb"q3#rJk*3YUU(5Fh#EhP (maa64PA$kPZf8V)VUJj&0h648RQ,Ib@,E[ULd"D@+YFfdSTZB9&4#PSYPUYTCEG G@5b'[`$$"Q9[kR*6QS*bBh4d0*M%1d+1('HbG!PcpX@a1d@Jfh%B65-SH&@eFQ5 j-DDa$1+N-86DU@3*4N&XGG&(XJfD`FC*9J)49f13!,&#Bqb$Ap!hdIlrphU2lb) cZQNA-AJ[lM809B*q#RqK%cX,Vk!Q)aNbk6k$b'KR`%)$ZS&VY6AYpDlVY&!X'VL iYYNZ4q1[a0bm(VE)l`J[8N5IhV(!XZcSi)l""GDLJk2)8%JX3-3mCNK3Sh6$r2r keE1pdrfcArC1IX&V&+f@X8(!)m#lQ6DC*`q%U'0`(#9ZX1(L%H1`3&l-bQlf2h0 b4YZ@%m*"@C(ZdV*FCT1N'`X+F8VYU0e@-2M21AHB-,j+j""2d61BbqqM412m BaR1'cKPC9"DMlYJqlcA'll)VAf1E5#"YH@(cal(V3J+1N[F*8lC!4eJI',Fim"# DBf,#%dp4aMNPQB8#f3"hK9Z(S5MX6Q3YMf9[IYHkMM[K'dG+j8!+4F(MJ3#l46h NRchI1i&XMcN9l`'fLQJ*bYR8*2QQQ9D*"$d'VdX+N!!JcT`Qmm2#b`A`HR"dXRp m#MlR"dFrhaTLR8p3Z`28LNG,k(3#+`&EKDS*L26!V9K($cMP&#a-eXfAI'e0m@8 C@)RNj`9cX+YQNS($0"RP"$"N+F4i4X-i`+jCZE0,r%3-m*Z-UCU&''9L80Qhf4` (+4F!YSZ`EckpXHfmYD85,q!F'6BMLkeRQ42kpU-h"3&LZ4JHhLXmZ6$!,c@eVm8 A(6MA1(r'5"U@3681(&N-KI(H%*G!C!1-P6E)THcDB-8HUbp`#Gj5Y2$c@,RFX90 TQh5b(MNq2GcI1qD9cbCAJM#MD5&IJ[8`R*T0EIE4A)[Ja*I*-+1Hj@Uj+'2CGE0 dUSRX'VX8VA(Cl0H`MT%K&N5`Ll--b483pH5XALI(rXdi`U`+KN+#L%6%&'p+J`, J0@l)Pa-0"M%@a'M+`A!`T!))r*rP)TGq14HCKcleFQlPhVel)[L#19HQ`XqrcjK -h8C@14dBlQ5(b5+F92kaMH2534pC%$3EB$*N%N[,3-MhcABQA![b0Xha@*jd*Q0 ieMZNYk$iRX3Ael!Dd@GXSpa(r%lGL3HqAe@+"L!HfC&m(Nb%XKYIZ$q!Xa'2b%f 0G,,#Ba#k-!6XpCP96Hj'Ia`H2$RMG'mFkF3`KZC3!XVS0UiG+2`@4r`SBQiIaA# S5)G2kehiA5#E4-VT-Zi!Lii1e+4P*&R5QT8(BdJRG1"M5B+9U"#YMiSiL)4C4@I 8!YGqk'-MZQPBLc2)(XN2haJfp)GG-9Pim-prqY#!IPdak!qK&l[e@BJeFmr&h1% &XR&hY)NB!%Q+dCZ1qq5$pCJMe"YI4,CmAE@6IfcMq2Mfc%$dUqKM%cr9lBZdZ$h *-CS'+!#3!'pD26E0`JF4Hj*S,5bI&VD&DE(GD+-H8L&N8NG[5eibD"[fjb4kK&% V!F+QIDYX!RUHl%&fS[&d52C&U-TLm(DbedL#[)J4+6VBMI,KXI6VBXqQ'8B*J-G pIabTh2Ad$PhCIpJ9+&G#P*V8&Y336aj(T4SmkR*[4IrPXH'D662h,&+`EphhakE $AeirIrjLlqMXjG(Klc)1dJaJml1%"3LP[GRSMlh$`jG2'ANDiTR"AjA,LQK-ie3 !Gj(8kJ+iUBpGK$PJF%Q$h1KbjbJJcI*'M+%iR"l'Y2DKf&6ld9@i1MZRE3eh&Gr KH6DJ!!l'VV"i$j3GdA*F0JpJiiJAS$LiH3F+kp&QA48)qR#9G#RINkq8Yc#U@%G 6bV#8XU9e5DXqG&qbIU4mfpTJDSNpG42-4H8ekBkGV8Zbeh`L@K9EQ0N%0`!dVDq 2C2(mqQlQB41fMDkKVXbe)9Fd)aCqJe3`TBeISlJENb$lr"SZ`!D)@1aGB#mQF!l (bbZj'+)M0aC3I'&BBlXJiPk$TTV8P,S*G6%,#TPTpb)E6'I0R!$Ccf&@B&DaJr, ZXVX52L314$cdeeJ`E(PYL+[1A6SCT!'bjY5H[6Mj1521X)LIjU1FdFf4$+f@12X hGR9D[(af6pD$eAmS&X8YDCFV"E-a6&YTAC62VZQf""caA5-S0-)YK%&h!iV,['0 XcJFSDdQj&+,l1"l(%lX1hiDf2BNRcl`NKk(BbhESmb%ThQD5V-TUheF@a[ZLQIQ dT6Ae"hR1VUVPhM,*LTT$22E-04FPe#Y+LHmiIfA)&d+3!*81pliLrCQ1i@Bq1$S !lXCFc3[S-,jbZ!PjIe&XlPdA-P`mREN(LQE#9AVN*6KL*#prVBF&LG#!T-D'M8C LckfcH&&hQXcA*r[QiG26-e!SVY`6kl3ZGmCF08)VC-f"*U`Q$85&`09lTiSEak8 hKpFH8qR*Gqh%r9'M-$5lYPrlaPNPi-X-+,LcYSKP,PLHLE%ZV"&T2b(55*166Di '*"r,@[i!dB&9R3,rFcf1))NmLT1YL-C*1NDa%b'cGKAi@pX84S!bkbA-36`E`[1 MpRD&a+RiPLDrK(#Up$BViTMif#Gf&Fdf1MLL@#J!)3RTQ1&LhCR,KM5ZIa-F6!T '-k#)-&DcB-S-KpGfIJTb[`hZ3h6,pdiUETZ(U$i$e33S*H5rI08%pl5BdD-JSTf q`cBZUUMNd"-XS6fbe#-*@Y$D&XF'%i$L,FUDeZKfhAC4@f!RF3DkE'cap4%Ba"i *a*GJ"j+Bd0h$BTcqEUEakmYD%cH1J(qNNa*SfVk)-i9SbV$P"K*4f1e8IS9#3BD 'YC1mm6J(dIkZD[@Rk-RVNprT$SKfa)@3!)EM2681b15-c1K`'ekH26pmII),cqT X-N,E)-6%b0[fr2Gre8&j"EE5Bbd!Xf61d[*)&M%aE66[D+9C"iKJcp%Z6rkf4c! lMiG0h00,bbE`)RALLG#TE`B6(Yf+"lqhN!$jaUAD66@6X%6Vf`)YT4XFe[NK[C+ S%Gfr(b)C5UTKaQ@!lcQ#XVXQ+4ij4K'lTf-`%rMmFICUlrMdB1q3!-!qFBFi%[X (TV&*,*8J[1'4YKp#$R(1A*`e$0B9YNEdEfjGDBk$eG%DCZRUdRE'M9cj(#`FZ6H HN@KT"YIa&@0%J`lR&4MZ3QlCdF456aD*ba`$("1GG2[Jfc(&iQ#j14K""%C@N`S Y+EYD8CKh1,bSX"f0`+Z,9CiMI+J$iU0LbGm3"4'E,'%d#P6-HAB4#h*Z8C5THJC N(e3M"Ljc6QlD$,UT"FLY'iVF!+h`aAH!$Pd$iN!f,phL@j[UXI11+d4lhDk`E1% 5&i0i6&Vd%5lM4,Rh!r8+C[D'21Zbp`CCYPf"!6D3!('$&RJNNTmBZ(hK)M2*3)% md99'kR%',PF"EL5BfC0e2IJiNTYH"S`+-B+TYEh0C,1*[94Q[!Z*0jm6+HjV$1p S#Xe5'Ic,0lH0MTp9GGeMa9r"p9#dp`Xhk2JDY3Lje$(3'qrC(5`FF&aG'cap9[f d8Ti+6,lciIr"(heZmkU!Pr)(KACh!a*XeN$6pq(-qI[II#1kaXSlb$*p,L'$49c m!6#ElED)LN2+NR!Fm'rN(`%%%jQ-@KX9fb8bHNaI*[(2jh!9pkM2aik!KG,d,+# *Pa,KTa0"!8#QXM8CVEEeC4`")C0IQ*("i$1#[0k0D!*-8jYU0!e8K$"a,ZF$XXA MrG2AadH1Z*!!-mZQkkC%SJ`F48SV,Rq$%#",p3&X1BD#"UG1X"6Q$A9!3Db#*rA 6UApqj45ISmj%1&0T$4664RkTT!$UdiTE%lbp(0q6%3UNG4,pNk)L[j9pp+KU9[2 4)aZ+3SMI$09aKPQe8E[#Y"HN#k3`TLV&QLcp'%`FGI@+Eja(pFpGAFQ-B!1b[,N CXRb(B-4A!STlra4&8SNf$AE$'+mCr[kMqCS9!j8mR1IDI$1#3)"lR&U""S$#2@Q mCq8b#HUXA!Y$FNq%X)USh[4jI+)NFd&(P+K&5[ii9jp0HlHi[%hUKe9ZV+,@mCf (pK"B+&Z@G!J!caEm)8$b+GGaAF&(qU(MjB$94GfpIfmS%@qAlD4R68T)hlJ!Qd% `NU2kB#8V[-R'`dD6IBpj'YGN8AFqQ2LjJR1YVHd`%TR0FY4[T&mKrG+Jri"56I@ [*qL92J%lPCbVISkH$K4b'NcV'dKdJp&rCm,Z[Q-@HidKk-"9l+Sb-SDN8GjUe#H 1XBja9M"S%kCV,aQ!Yc6-NLmar#KT`6d2"5rFN!!F53ddRjLNG0'I%L%BDmY%QJG f#Ci3B2Y-!ElCVRN+i4M'BcCla(f`D$`(JLC`Zea4U`'Gbc`mFQN3+r2UD0(S633 @I3PJSbZSk+q44lX#3GqrccX4T9`bmqmBH6[SXr9k$2lNF$'JRm9Sm,l6LU@,SRF '*-00kQpR*T)2lm28Dr3c"hZ#f+PK`1b+(4BT#)UKi+H%lcMH"kBU8#ZHXY3`&0B KHTNi2r38JPKU+rM#D8R0LTbcZZkPeq'j*9$ZR6XcJ,A-B[&(0JYSP!Lqi#)lGl5 9pQD&@5AHJ4YUQ,*8AM*b%V15NrT'RI0ZDPmm$SFd&f,9'4J"I3ca3(Xdih!-aEB K4ak,9@l5F)K9T,5M'CZT"j9cUJlXaU%rMp*!N!!!RYP@GB4'hi+1aL!0%i&&A4Y SXNmQSe#DME["kKlMQ&b"8cNJF(6i-LhB5kl[@U"3k`6pJ!GcK-hYVB2qaa)6Xp8 C-+QqM6i-LQ2(82i8LJH$!80dQMk8VrFkk'!(4Zpq1IUa(%c"[RJ)5$XGD,b2GJL )+0bMIGp0#0b#XPESh1JD2YP*RAd'A%5YD$Aeh*!!mVc,CT)R[ampj@r#4NUf5#j 9CcK-T&h))-"!")C@$(Ube!QZAhYU9JjR`"XLpdNUe#lk&(SNr!I1Y##L!YHl"N4 Y'Edc3(31(KV-FPhhQaQVb3YZe)6[U9j1[`jTDiQT1DA"FMfFSJ'4#d-f3N#@`HJ kVF1EPGRI8ZQYCG(#NNK"3R`DANK$#6F"NU2IHbMD5`cV-H#&eI2T4AP9DV46,Z* 8KEE3`U6)p)qHc@5T-,39T#TK5MjV9rm@C2RYUI+jC$+K8NAq8YiCC$Lm")l!(UP "LcH4',B%&!3[FT,i%8@qdZTMS3lMIEpbUf-A"RdH"iBJrb(3b`BF!'Bj0+6V6V$ ZhdCZimf&jNMq50m%er%Ae"3j5qIT1*4LfEjm9dP6%5,Kl(1K2J4UG!B&j($-A1Q 0KD9RXG2F'U*X",TFJlp4h-ij2JBXdA9%jqRalfI2MrIhV3RE$0%F`qZmdX)SB'k MCPK,$"BXIrNJ[PNdc#,AfcJU!(8dYPKfJq0RHkCj,e[P9Y+Sf'U(-LNa$68R 5M#p3((ikS*!!FL"Upc9cLYm%Qq8"%URNEi-+PaFRcekHF#BSD+JeL-H1$',&LBZ kGAh9Z%D'6r"ihJF14c0Q)Ac+5F4TF6C1'Ppi*(dQ8(&-1H2RTaQCGQG!1MPZT3K 1@hcX3RQU9HKS0`1"$@J[Y$NBK#$8'!*,TH#)*3@V"+#),f4,$*jVe+&2JdScQ@Y -6HZpK$&eDbPVDQKZ5@[Ub#le'Sl3,A(,#dKT`ph6fHE$R-0eNIe`Dki"FE+4T!9 aDki*X@pKTJhaI-YIhm"#dpr@%VDrB[256AGEUEDlVER'ZkePV(IPl3U6@YSB&iP D#2d)j!'V[@b`#A$355)R[RUXLU`PE2r'dJl3@mpMd)3S"6jN'l!Xe!*p8[@6HbU VNP[Jf(e5!,'`YPKElPmq)2U`P@,4R48R4@[)@NN,jA&3+"rf*+!XD4cG@Q3Gh4, QdDf&pY'Y9!0TDJ1L#a4Dehf-0F#Y`GIZ",eqr"KR&@cTJZIT6CV(%qp'T$J&0M, p'[QaSf-iC5`f)i@f$3RJ"'BNl,-jakF8kN"S%+!C0'F!p@c8RrE1L6`Mrf[3IKH L3(026B,LhQVY5B(rHBTlTlA(NFa9h%1UeD6H(UHFd0YV,NFVlf9-,DEMk,6-pBC -K)+A8EEQ+[QYC$+ThSF1E9&XCCBLhjQ8"l*1T`jh0Ap3P+YR6N0Pq&b6ElASdKT !fdR6UXdUUhGZTNQ!HEFZ*f&c*N#1!Rakm`fmb&Fj"KPj[kp'"U`0&(*`+$TKb,D lp-i2df,(CFDcV(NqD4mQj8062PacP`1[J4EEH$Pj2,(aBG!A5!QC[BKb["-bh%Z DThN"YEG3iaD@0&,c,5Jl0F[h,fHUjKY4eQTL,NXBV1QjX-eDLZ9qFBE4I[(3DmU G&N%@TcJ*EJamdrX(`TdYU00`8@GPHpDQ[TL-eqF$p@A)1DbMSGH&kr01$9rPd*b id#Ud5X`dUV0$iI33Jdp%""f1TF,4K2Q-Jp-KV9I""D&$@ckiJdCH%5SA9J@Qbd& MS)E&q0"Srm"#*cJH)+e0ED,I8Y2SS!AD4@0dhU#JbXS8F,cM``lD905AV!N-)XK B,`fqI#R@#FmmBf'1BQc$e&d`2I,jYUi[&0C&$[MaEP5#aPkq2Je0&&@3!$0Qa5p 'S2Q%S66k#RjGm*5q!bm@G'p"dLMXGm0m,'+Nh-&`dZPK1!cVFflPhDa1E,QBk`@ !3!U@6pp2b1i5JG,@XX3"'Zp$5+[h$62ZL4k8GDDH&4i5K*`q#Z3FfdNG,l)q,k) MR#K,,p&kQJ%&phQ!F9,`8*fLHdPi8,(RI)TQTL6'%-p*q0#3!0ZJ"C1k("A$d)b 'jXl`)@m*%#VTVA"!brVm"I+4M4*,C@@Fjl",6-dSE&K2Y(EZm38h$$4EBb5E%lI &VVip%SU-m@5!UF1j48MN`p)PEJqKSGX"IGHZZJ!H4aPiPa9qCp&2fPL(5qC65Zj JM"H[aMDM`"Mp(Q'FJkp9M1FEZbmNK'P`4R*@GRj&XD6FmXCM(iU-YmrX!--,*)r r%"@eH*f%#X59ffd3eX4AdKNF2YGG!0AA4hZ("cmIl6mcI)ZG%J3B"ScVA-jm3[+ ##eJRM%kk9q"kGKlhihB(p&h13Heda2B[J'2J!l+0cf5IJ+BaC+ZH81,B'"+XhjT pF-`h&h(81jql9N!a!5I2AI4V+%9Cbm,$@@@K`dL8cF$6G3[[q9*@LJ6[-Z"kXJ8 hJK+-!,kmm4frR9FK5P4iUm053,3ELkA0$RU%$aFC8*pR%&F(-dRK[VPKjXY4cpb `R5(&)#pYZ(dqS'Zh-EkQh2D'dqUdA$S)lS(S9A0Hqc&NE@Q-V[@@@efG$%k!JlK rAqbYiBm`eZ,U8aJrC%9S!X8h@K88mc-@r8"L"Lb#TQD8,`4Gc"TGi!5[55,GS+# )H2*#5jMJ2PBNXH5Ze%Aaf*3X"r)T(K*FbKakPXljHA`pi&"UBE"Ee[A$)E-,*T4 YD)eJ0A%YB!"kB+dak656TM)Nra'BpE%L%,)*T1YHmCVbePMRI`I$MhB$lLD[SJ# EAF+SkkijYdNLcjKVhD224r+J3#2QPTK#N!#895%5&-0ejm[Ir0kd"P$dZmi3eJb 9bNc5YC1%&-AbKdMq%1!rAK(DI,0MD68k3-Q1ad4cPB9Y(0%f+%'(J(`CLI'bD3# GPH2&IFIcDHLq+9`N9[6PT!p!,fHaEX(#eP32@5(C$UF-F,k[Q2p%a2[%(JSVD@B )-!q(!R(k%JGL5#',HS6%&a[K@V4QYL$6`pE55fm9B4+BMJ0k[#(i4N+m9RlVLAR iiU)[B6)NZ3Cm-a%ri2)1$F$NN!![0K[j'GN9CmpM3ck19@1QIfU*2)&-@BdY#ql L,)IAT[NNQl+`[9l*4HZeA&3S&+)TJUKl8kjY&L!8&Gk0L$)-UcKY``@,6)C[c$1 UU$f2dILRLQ%FB653!%#NMV-UPEIJ+6CSbA-)qUJQ13Q'F0"@&i#pmY90B0"aKaJ Uhj!!fMi3(D*j'@6bDIR&#G#H&EX$6q&EXJ3#@pUf*h%rX4k4j(C5B0MH,3`qZlX 1HJakiDFr5Hb#9rdk"f*FAaF43b6QFPN40BQ`@mDM'4`DH(VrISV&chr$ZXM&2)U )b"(,aV5&BIVkep%UV0A0UU%(qM&i"m*YKm(+%E8C@J$$VZT![k+KAp!HMRUb-C! !eL9`cYKJG5ZYkd#,mUSUCFhHQh23`Mj@!l0aCY4fQG(+-N3)E%8m6dD4R9PJ'$T XM'1@*Jqe!V!L#6'!I9l84R+5k%Qdj*AB@bi-a[*#f(ANRANUNA#)KA9T#&)T5TF 51&Y+k[$I$l[-YF+rX26kHP#HfiCi$cDpA"UH4`S86hA$Xj!!qC+0GMb+Hi2hQ2q UfH$!Lc-a&TVN!aNd+N3C[$S[iqN)5D'!3fN!&"@bX[EGlT[`H[L-qdCK1RRe,(( IT+)kh+Te3aLN)#mq*3&XQf0JjrE6DPE[dm`E+2hDfG,A6MLjFQdMp3B+VTdC-jZ "HYIAhA3X0"S#+rea#KEmle`p4-0I&Kd'Q%iL1SRM3!mm(mX*4TFjdB8SMP4P&M' N@,T,8HkZ*2aP15'EFPUS4#qlJ[h*4ZH'pRpARbNGN9-m)`Cr+I&!@'m1@jrSBJj $(pLmfM-KH+PGLRMX(p`RDC!!3Fq256LP`FT!Ack[f&PdmK#k4Z)QhG)qfJfB5D[ +8mAUJ6'Ri$"[a,A(JQ"1#*(rF[p3N!#H%'d$8R2K08U)b)5@lemZKriI,6ZqQm$ Xr`9*eKHAZYa1d,+bV*6Pi4SR4SMDM8iAI2U@PT8))4@4)%9(R9)8BkDk20'+K#A M%D9XAIQ#P1AR8j9IKU+m)cAjZC5N04d)+%MmA&qj*3(jKBM(cb)FEA`$5c"q*V& ilc0SY'pE*j8!r(,%hl+%Rl*J5JX)k41%U#M%FiNiVTT#Bd3riG1G"#(KL8Y"52L (S2ZfbI*mmX![Ec(a&1(854-jSp`N-$p!64lPb%EYH@KI*")C8Pi3a0&mi,SL*1S F%N4@NP(4C#"8S"V5"T`BSF6@(bRM8dEH#c25++VlR-E$S`HFMZQNP%2rd0!F%c$ 4Dm@MN3&,UK6p1,AS#$laTI*Mkarp9FKbN!#k1S(8lPjUmcmfIfbZbNL9c$@rPFm )`Dbra4J(&TRNmjT#YTep2%-Ir-aUTirCEpLm,"%1j#-%l$mIQ%[S-8L1CLl"kMr qmHE(9Zl(eYY9"S2m[(Q#Y,@C5BiGkN*lfASdG`ShH*!!-%H0bb'j&#aq[H`[c`( PH`Qa[``p5V!UGhR0&(bLVl'l*LMPQ6515BB"mmdqdRNY%rBiije)dQ8cL6,1J,3 (K`r#e)'r,GcKQ(F0Fd'1d1`E$!pPp)!k2Kq6BS-5IVRFafLPD"[dZ[S-CijV1FZ NMk$q'MAkBd36mD$,63dSKhNq(rMbJ#Gb5Z!V(aTfNFQMek9EK9AI3%ZJY@DEKF# Z&S6m0PrNRXX3LZ&"-EV'6,9"`D)RXRKJ@m[3aP,*N!"3SE!EcE`@Sl`,Gqi!)Kq 5ii(!$"cJb1EKKrreYrrm%C-5)CZp%qV8U(H1%+(-%rdcBB3BK&S3ilm5m`[L8GJ qa"60A4qf!eP4J3#EpVZGGh(h@N8`38NpCe,U0CUAJ!ikl8L0GL9dITC(M(MV$"Q 3!+0(Z`0qf-Y1,mkZc(1"KMRNmi'D81jmK"laU%a!afd9U#qGl-a*b@4[`2&ec!( !X-$GYMGb[%+[e0LTh$RLAe!qA@!T!i0)kb2HX[8J(VDDG8T8DNr)AC',Mpr9+j( 0D)D3!#c[!#84-i,(&8@q%,VRaJB[F,TD1AJll(#M!Q[D[)f"R3"3UjE[3R55-2C e%i-a3-`E`$Sf6ekP(,PBMZ13!-5`+1($-1k2Bmj(#Hk&dh(M`Q!bB%6'f"NB@G( YiF3qaE!eXp-3'5BF')5H!F3&lK9S4$)f!`0E,mMlDqVBk+U*pL`6qAS-XK3U9J3 dhQ[d6@Z'rI("He$!!+)R',LC50J@Q+0MH'mA@k+*R#+R2)BJPc*(-0M'&V,T)A[ k3FS1'r$*2,j[XjZ"T2'HTjrZJArG@Mj[F2DpHfY$PrbYjd$D81Dp2(e#+cNE'd! 3(-J[Z"%`D)5'S'SS+-$m)N1j4kLMEeIFB,C'reSBEqBLlJa+X'd`)%2)Sl@'jVX f8kM"-hf-9(f1UF%-)3&&(UC10a$@1Y5pRML51YB'1c8'!B@#-)m+)d+)T`E-$H( G`*Zd5@%I$%HXr(Cbm-Hq3d,j%Y`jJ[,C$9*k'mj0+5(@r"@N#"m)b1q[5pHMV,M lQ#Sq$LYQ9*GQ51Xd5KEqd6Lc5c99AV-ebdVK4kMlbF(2i%X)p0D,&hZ[b)Sm!c" a(3Y5+*[6me@1(,YNTdAIeS295Lb9N!"MUS[pN@T'6%He*bqBk#AXp&9R(1I#!GP *3p![EUDXULS`B4M*ZE*B'@2A'&LMM+(MH*a,EbZKI(HP3"i%Rap&CD9(JJ2[AE! )Z(0cj,ebR@J38XNN&p'FT2!mT#5-T,-,GaUbZPFahfhJXiClN!#Jd93R-[pbLNB UQ4j"c#E3l5b4-%&8AXIN#@"3jZ8SKQ'VU#DI`Rl*GV0#2PUK,34LDjbZ1`S)+h1 (f*KK`+&ib@f3!1Se&p'd2ET8*bD-6pIT`EPUS,dCL$a4qYIYQ![5h&E%[PMa(S3 TQX5"2Bq@jZPc&"a!4e3R!TCp*HFb(iMFkMZ3!"V+%3&$-PS`#4QdmjJ,'+*2TS5 JG[$IFFN#!Rj(U90dUP)-#h6fj2$PdemaH$X!9caS3pij6%N+FC()5G+(43V)YXI J"@8ZchqNK4E#'%VJ,hjIT*ee9+KZkDfjGqFh`LlJN!"GpYipj+Xb4$&U#hcGV#d 1dmTbTY@%(jG5Lf'4)!!13BDYIcSbR1AlM"1i[-&eI,Y+(4#dR%"B-)"R6-F-G%) 2%rFCXV-cdFUJ'6X5EXDXcH*"T9!!2U559E*LHcq&%H0fI%3h2i%[,H5%d"[@TPr 'l,#K2@8X6qHKV$f64bUIYMSf-K#*FM+'D#+%5bL9$RKT"UPd4-)I4$23L+PZa`J $JX`K'"0q0$K[3*K1YU!e$'3Kk0"m"J)2diF$ZR*CHB#5hbfUZC0%"8Gpp2*dIbG dN!#qY-b0ee@kq1AaKmQSS4bFS4Qq'X')-Mh![)a+k18a%2V-4aTFN!"-93@A*TF @%"pKbk3p3JN'$CEL5PRX,jhd1f0E6YLTKa%(b-m0dp#246Gibc5L'J[&d(eCk`J 0HJ"2Uc1H,iPhD$"e9B"1rBT3,+T+Me-cfq@MQVc5%ah0U"1'2m*$-I-!%2#l3)# 1fX#852@k(-$$T0!cTGRjp)UK,%X*ZB,A6AY@`%[*T%J#`f2I5f,AajD[&d&29SQ p"L8f`*LLqR#'5RDB0-4*L,Tme04G'Gr4)6k2heB@0fDYHM"352SYVF3f+rIm+L@ Z4JJFKc8Z"RfDk$e&YBB1&2H5[X3BeANI`c$U3f"',`q8pk(XGQQVlcN!*jL8SeX 2S,DH`NX+!H-rraNP,!XHlrS6*'-NkjSG!GFS5lND0BD0d@$DEj'X-#pPK6*%X&J ''l01hI5qmlUV*,bfUBiiih,RJiZfb1'SAF4T%YT!0!SEMK0K0NF+GH#Q)VQD8*! !G!VDU[fL!F'(VBb4lK'l6`!41c0p+!+h3Ta,%X!#QH$L'AS52RJ[3dCbBLQT9df mpQ3%#QPh4)$2qYFL)HMQ[$h*%$TF,dNbX1iNJL!(83cX)*Rb$0V1)3[GY*'b32r `qG5&S`HQI@db03E"!Va!4ahR)3eKUXNq"#J+68kd'q0*#LdaAR6A3lh2ZqN6'5c "V4@1q`a(GqRdbkNRY$pZM(5`aUXBMIUF3q5D19XQ,[h1Nf("L80R)aJC1dl)"#K 4BZ$!NZC-"cG3M)*JY)hb*Je)amJ'l(jiCc&$jCM"Kj`[B"!Q38ha`,X(+6JANNS h9jL()@EbXb%bZ0@0QX)ETekZ)RjcmTkpP``'qf9Z@bffX5YUPp&TX4Pe&JV#iZF Y(dUjr$*j*jaQ!%X2jFa1Ti2icR*E-dm3P-KBU5cX`Yb9b39ihZ'E4FAAb0RS&`4 1B$2`D&G'Le"#[MfV#aM!@E9L,Mj*+S+*X0@C1A@rGMmJLJM9PAQaZSrQAQ!2ep, pi*G`J!meM!PrH&!`3M#F5DFjl6C'EYBq243eRG+3!!)fX&5FM10Zff)5QQ3#Pi5 aQ`0GQ,r`+8-D"K@HPGSqSE&c%5H8p6'Q$NZ$S16""20ECELFK@-`9KC)kJ`'ieE $Q!IZS@')"(DYJ-b&d`Yj"*!!68dJ6-JCK%J*@L-aN!"XEQ@1pA%i!j&E0XGh9pL l9[,[KNdNYCF(-m823QQ)0hb+0@`)K5`H*IjTG"'c$'*X)(K-$U3JH@V&&b2$')m PQC!!"-03PjB#PKS(Z-!QG*hCjbN1*dYM`C40b1IVc%T`Q#"[N!$$h[KQqF65TF3 P9mBE-l6BdYhTERJj%@f%KdYU2k!miYDB9#Cj4dqJFTBd,-SA1E#2)&3F8K5K!qZ #Z2"#baMZD@#4PVj188USIDXF`-[qdl`'Q029Kf3a4LZQ&VU0lZ3Vk8rZT%24'T5 3!2"Lb%KS5["3GbD12dR,)f#@$ibP5&dLM09e1QqN,Q@+Ym@C"@j#-jA%AAddX-5 (69bK9$9KJb4%&e,d`+j5lQJf!%k2qlXB8@p@2B'pCq%P-"9D"ZD$Y"E8E"U2rGq B`8DG"3K@)Ad#J4Y)CH,hdKIEAbA!(S&24!-CC'K!m-JLDXQ1X`J',VY$XEdD,F1 `@UDfdhB@@-K&$fahcKEDm84-aKQq[f0Pjh0&feeJH,iFZdZJEYQ"CERGcf"i6IP ASd'6&+Q@NU4N+r2P`0pjiZmmmAHHq)imm80T0k*$GJBd5Xk9%,j[J[&3&LJ"FC0 d5&[!4-Z42%U*f4V3i0rCl[m4E2Fb,&N0)%60K5Q*`p2pireRB5!16S!EcN5!C'S !JENXG[3i1ReTm1$HF6CTRqbTAA&@1$@C*(S$RbFQIG-SAD"1VYLdXR24(icLT,8 ,*`aC,Qr@J[-jJaLHD96Cd-5,bk`mRX4$T`pb1JP&`6GGP&BLJaa&V4UL#(6cd'd 3MNlZEC61eSXD)HLMRi4Rqi-3QB'9ST!!S04$N!$Rq'2FM"#'#'lHaERVM!Z*)c" EL*3["HJi&dlUGN+N%J'jD'rPRY9abm9G3Q$N,fBp8f!Kl4T36+q!pJS*(Kd5c!` 4,fJR("R&3N!#rF@YJJI-6JVMZ*C#&1,YDIf%l2#JEEpc'0NhE%R,XqBMha34QPM 6m-L&+qjmM1G+Hq!JV+m(h[!HL'GPa2Ymk8q3!!Y2L9cNq&-N,[0#Ihm'MJU%A)P ,C!i,1m-M*4KG#Yd3@T@RBd$,ZhP"33+k$EaeBbXq++3MeR0'L!VMTdK+mBSe1(3 bQ[DE0V1&aU*)Ii5pcJAH@dJ[mU@h,Mqf%Pc-P&ZB'J+0h!Yh,!QcDDD"aEQNaa` 4k$cTb$*'KS,I@53b1[9)+@9(E!`%)2F-pGRSS$&P'XT"cK![9NJ0&MFlVF@i*hR @jKqJCCBSQ8Xb0BF`Kmk!&bk+i1)cGRZ3!%X9Pbd*GFYJT@mKj[U2rblr`0FUAbU 8#T@(,'%UA(lT2X`bEP5VdAp%T@Ua9)lJHfPM!rqDIq@0@RR6P+M9LTZPcA+PBTj Y9NZPriMqirZrVrl2S$1hlq!ME425*4-8@R2S8HILdL#)TpQSY,eGbjYI@p(rMK[ pI(GJ+-'IcA($q&+BHk&Tb1%1C8L#903GS-R-"BJ'e*5lRM,I0PflKP,V0$'Y*N# Q'40+5N&Ur0[HmC'KDkbe-4!SE'QmCLUY@4Feb$mX8c1a,4)FjU&NYL'&GFpF`-i fLL3'IY+Qqe%$XcHfZ2jiH[jRh*a3V0C'(a5BHc)*&!m(CF-JBDBC&0`-rPIQEpR S2`pDrfR$Fk!'mqcCr[0$e-8iFhVab"6V0l[69KbYIM3,ebeFVRkGR%'cYTf(EiG fZ(rdmqN[CdpI2YXrLFVE-"5I@FZ'Q"kd`'SDL1iQq,CE5DK0&,erp)`3Vm[XiTX r-)crhZ&*"-&`JXD9!dfa8#MADVSZMbTM'eN[VF[KCR9lKpbH!G0$0@jDF$[S1B0 paKe'8D@SfhET6l"*9HQ*(DBj2VS5P88B"Ri+3KQdBa**JkNT,DjZl*Ip[9GRk!Z A+Dpa`qXPR+KK&cUpD3rNRF1)dZZ*LL")`m")T4S8KLaSe$d+pQ(R52AV#f*m,pQ %5,KVrPA,ISBqpDZCC+RL[84%aYeSB`2hp`3Y(QhL@'JIRMi$Je0+N3NU!FK,Ca! (j8jMHTIFh'bq'G`Ei[L3!21HA!pM1&bFCV-j13-EeV0aC(1I!(al)J8ZG`Lrm&G GC"#(#"0a[hP03#aT-5`1ABVLX%8kNYa0e'l@ChIADV6U-Q&j!d0Hp6(-@crkCGT ZpaVp#$2aK9h,X(3U"PhD)&TG3j!!B'C4AS@khm2RCSjQP!@BUhZ)NGV-3jLJKhA )l0RU&XbSrB',qrM-p,m5VMKXD+H*U3-aVD"CqX5cHU+@,%l,a@11eQaD`X!F%fe 9VrZ0AUHTeJSd@YE(3Hk8@c-`3%&Ee"D4kQEPqjJ8A'bm$48@M"[#q$8Q0!8lKZE !X(2MiB#bGe-00b"DrV4j`hDq'ScVlJ'Slk!`a!ha6ehJN!!$,)a(&SZ#,,,2BQS fc!'rXdB6e*!!0Q3)+cc45KI%)"0@JF!D63D!rXIS)BU44lL9pid4XM8S%B&,P([ 6*VdZ,j[j0)D$bEG&X+e"PYY2DBN)hFkJ24qiR(2)!EcZ4BBk[F1F%&cXE)08Mhh 3#U-fJ"#`b(-S[!rU@)8Cq[%%T,)f!l[`b)N5$MjNj30BGD#p'G*l-Ke36mMbf4l 3[X!jbPJK@YSXZBC!0recRmU5Ym`e5iNN93-f@D*IC[$q4V0dA&T1@JrSP,-QbTP %k!&`"VYDYr9I(rekp2+hSecdj1"SlrKhZ%Eh6TiH(1Kk"MJZ"`V2RCbq"-Pq"X! (3[B!,'@K0Y-mcr6!3CahjMA6TJ&#r"!Z"hNb"%%#4XZ+5a14K"L@@l'NSL9qQcZ Z*)U-)`kS)kSFrV'jD49$Z2@C5[PAEJ0b&QC9E"l6!&bC#Nm2,XSCDMFE4CQY3U' dNDL%LBY%*HIUAh)$C1#LSIJ86H6RlNlp!HRHbHCU&+021L`U3eN-Y$Q&JG'*#9C %H"X+'N-efKh$F&1&,Z9Jia!L$H8Xd2E4QUj1c-KYFcJ3JiY)p3CK4NFAM6k('Fe jc`6YKpI`T*50%l*'lHB$6Al1Zf((I6!N'*-P`F&,8YL!-B&Y`%HASVa0pJD9i9+ 4l#+(#dJDBNLNm3!c31$SaM*ZSi3*-qD0kUmj6YYRH[jVDZE#6TIJ1)5TQAhZU%( 8'Z`JHXCB1f--2)XEaqPJA3!$Zl%VbNdFd*-)Mq#JBFp36SDiY5L+LZa%j69F2'X ri@1-*ATHmD,)9QGNf"jLDPS,4q5cG,R"((EkL-S(A8!b8Kdk"Lb0SRHm`c#&'18 b3b$PdF1ZqTLKSmDe@fEFlbidh`%4R!(["U5L#AaB!4MKV,*+`+hqRVSk!8b`FFb %11@BTei0h"ZdTYd"0*3kBh5%Sj31%-XXB@+!hM*("iH&!0'J`9aG)5Hr)0!-VpF %c)Zm&N1K$4rIaPm3MUq)LG%GTjZHLJB%[V,BbM@F65N[8"82QZ0X"M1N0jHGpX4 "a*(2aJcNZd'LI'$3HY"D&f%GX[e$AeU%ca@R5iU(b0bldTMr#XjmS`hib5X1SHL Be%-!JZ1*4%SJa59KZeQBGr'Ba!65b[PGI*fMKMXZrf`NTf@qqXiHlrV9e(##bIZ %*jaEMGqdGCK92Cc(&jeqRa2M5Cd"%`aX9r9cl0'4Fpec"pY($q13!-#'V,TUM&V M%*%F@'9%5QC$c@6i")Fb"D&A0bCb'!C#FR(""d,DHSVK@9!jrQ!ZK,'#4Km%)F@ HQ@8qrK#a"PFf)!eICM@!CBLfPr`9KdqhMV#*!IKM5&%bK3ddCRHPh9'E),0,1Jc U9Tm!`qe!Bk*ep$lEE#*GUXDL)Y@Xcm''#*j"(pd(HFfGJ@3kd!6C3PH%2Fi3K!M 6)G0CH09,P)M+@63e(mH0%IS@#L@k(De0T'ZBRX[1"E$*G%FBmRidH+pG"5*-PD` p#CbGf"S0D0BX[%f5[dFRNlJh41+m$3CD$@hMLIH-1f[DLU1$i6JlF(1khRZ'**A l3G3XEd!["V&LCpa,-PTLJRj4hXGG$,PHpI2j@q5LQ5Cp(B)jVR`*(`qPQep,!Tc EZeZkHUbPM(rHUYMPH,3E9B,YT@$!jUhP)",9SNbT80M15X4N$C,)Q,(aIM"LCeG $L9VC6(-!9*!!JL+I10&"d'Zd03B(9JIP(Q)#j1Ed[Q)"j64NRPLEPC@D4)U+ml- +',31(+UP'D`3b#I'c!KCSjG1#m,[!APU"6'@Y6q2Za5a`c#5b%HkV([QGZN,$*N 3`B%NT`ZG[A(LblGe[Q4B*SZK0@R6T9!RYDN@0P9HHfE&RfpaE4cI-,H"mqiC9hp b+1SM'5FPF!"YS4"@0#MP9Pd@$#A@'4iA+"X(6c0PD,+PeZ+@jXe50R@H1LV9P*q HDfc&5Ka0G45#[V(Li(@Eab9&JQfT0G%J"[(eJ4p9q`$A)+4q)b6BE`9C#I*V+a3 rRd,dGMJiFRI'mZ"#qE18["dc5@)f#KiQ'M%)++84VSSD#CBK*J5'R+"Kc(S[R&h r,9jf20-qj8D`hmb-#r5Pq0BDd9'm4FXR3R2)+m&)(CZLe`A%(A5)Jr[0E%E,F(Z AHSRG)BGAZ#SBVfCkMYYMHEe**bDclTKmr@R"S66Q@R"c6h4T@+)ZLpKNGQaLDm8 T3,iS2&I%1*J5d)*LE%qB*l6@0)RQ(R*EKP`iY5jU84A%(lJIcKCMMBJ)$&IUqf( 18T!!qANh4j!!*(+#MAI!2(GFb'!m(2&S,'Z"ci5iD(KA$C-#hK%J$(!a%9#``Q( 8B!m9Qi0'BKc(L358(8AB8jK8'"DpM9-LVS$eXf`2,`TLpLQH1)DK!%c5JXb9R*L A-i*!dfM[HKj6B'1aJKLAYYZe3C3kEE@8R43L&,MRl+fAUF(kANNqNCJ&Tbk(Jm& [p5*JA5(h$PBRBkJ5J!)+bc61&Q4cPM*QPE)MKDci%U0TAU!JFi5L9&Np(d'5A33 aS+idcX*SJ`aD)&b"@#`B[X13!,33CJJS"VA1VFD3!,A96J(Y%"M(R5DeQ5N%'9c 'N!$6"GaUJJf,2c4!q3fNE!GPGVJq+)iC$JDMlR@NJSLKKS4F@T!!6P"M3RSmV'& j,65Qc%BR['Ym9J%daKJT8,D%J8(%&-ma*Z2lQ+k9kBJ&C)ED(cN2$Y#3!%,m4'I #6dh4mU)ESepHY5X(!$32q0L5heK86H%*82KX)0VI4U-T-H41E05e8Rpl9jS['2V 6)D`R(NACfhTFQ1'VJ$@*qX&2X!*5dSKA32)D`qD!521CMKN*JL--aeb$5)aDL(C Pil5PC(Kb`N9cCjm&qNCaX3p#ac!%)hR2Mk8LK69TVVeP'K1kY('5Dir(pE3,RN( 35T8lrA3hT)lGj(K`ENH9'02qbbIf%)a)PZMDd$P@l#cYBBKEe#DS#!F6-&h3FhA &k!6f"UfSr(qmjJ@D!L(5fGL-ZcjVpAdMG2U4pKFYfA`9MT6V+1KmbD)N"0)#5H2 J`R4b4K5!X$-lbKi'NiQj,$)SiRGmEHHLhfNEr!J,E*V)"ZRCmI%C5N"54)!X'HN 328B$"'DrfqAaR0[BpEMkVRK+'LP3i!SJ*X@VFTdNlHP,kqZ,%X""AfMH8U+91LY d0MQhiI%6`3UYCK`L(82,Q%S['hh5JIAHq+rVkfmKj&Fc@lpC%GBCbQI2TmpGGe* '0[*idHQMN8I$jC!!5,K)c[H,42rC12CU--YA%hPX3kl(NHJjX!L5`I5LM2PY!qE Th#!ihJ2$!iaDT$Y+3ArHaDTlR8c)--jCBfR2h5884LjX[lM[+H$c5TKkZG1h,#q m36mZ-$Ne5cTa&1[,jjP-k(N,0UUSR(3'U[0+jlcb(JBY[RDEd*,V9d5XRG85Kj3 e)*4MG!TN$#!Cp[#!B9()@0qZ15dAr8AcFD@j54V'l8Fa1eU*'*S$R4DDCQ4JAE) 8$ME$Aak"r9Id8i31,PMU$Ab#D,[LN5QccM8H2pl-[U8cB8Je'eY8kJqe0K(U&r! VUAYLr`T8VHB+aRKQeKU+3QKMFJ@$+*Y`jHTa%$qRRQfqpH*0$-j+$*fdrA1jZ3l kA9J36YQ*r*@(,Jba"R,,(9ZCCAbYc-rl4fHRar[l*fHr3#M,k!IliZ6df91JXmh G(irkb!+b')f'KqbII1P(rYDRG18#N!!9BM+r$9%ND)QZRlpCX@6#UVYThG`4!Mj K'mdQBd@1V@`3CXYL6NZ8[8@,EPqJ'aBJh0TXbNDFk+RCI&X!kbH)PN#[fF5E2(k j#E$iKUqHUB'-Ye6K*Qe1eKr,!T20'j8b4mkXEMfmH"3`"S4+mmSfXR!CS1$LP8" DK!T""3K9Nl)`DSFK$Hqk0kF-Pi`VNJ41(ZBlVUe2cE8BD'c6VJKkNF#eqpRlSlc YdjS2DfFM$qIdplqMr6rcKBAQYlArVfaXeXTJrerH+*E-Vdfdrkr8[Y[rIb2lIlI [B2p21AQXL)!*4M345l'0[ie,31&Vq!5%&[9X+[pS2'Pe"SA,ap*k(UZZ1TB0,NK 3PiNkD$d-PG66&PCml01Fmih(iFb"@!3k#9+'CX9p*blT[lmi`F[CIMmq1(RkmL3 V-Jp##,2R"iIld@Tl--KII&a0j#C8*3T8JRZbCVZrl$rpp@crq$L$+4pli`XAJar GY-a6mZGkqDYrNCiXdM!kN!$EFBFc6d*EZBL5+[TU-2@-Z`fM'`V"6h3!N!#)d@A Fl3lH`-fcLKpcp15(e6TX(6f,VJDMEQ[9Lb*3E'-PN6RR,6Q+Kb"%E('ee49b*JE 'Gjc`h%"QhIUJM`HMdA@K`)5A'*ih@K0M0'1E(S+C"V`p)(ZH26D)G)D(3AaFD"H "B4)MiF2KIKfpMCD3!'[ih"$-f$Tq155bAGif9*5Mq0[#r088Gj3kpR6aX61)&+F LCVGQ',GF*"p!hUIjh3'*2UXcDe1je,4de8lr&PA[Y#+SN!"a3rhk2GQCIFfHL!# *jUrH@RVGmA@r'5fUqd9'#FI"`mLY`!1V1KMjmS0%9Ke-!`1'P*'fiG%ZQMNq)qE cqcISK2S9I+a1Ba(l1T1Pfkl[(k`i-B4#*"QHQeZ#b%rA6p6EA0Z&Xk[#,LKk'89 9'cN-'I54+NiXLX'cjN-'m@0fhFEmJHYN0`S(HGrh`0J)MCAAXR`$Q)EBX6DiVPC Y5bkVJZN@8N0L(TfeV*[c+JGAFH9S)')KAG(lIT+mI(i9Cic#0l-U-hl$@(V$a&K S5HEQG6j[b%hq"fBG[fH[cT98,h0ZBPA#KVQ+ahJ9C`K3l4K%0Z1["E&J0rl`DJ4 @c1EZ-k3(5Jl(!E6#CC6"1kFc$d+$'kSZcA(!XSI%XLJ1CpQa[X,U89$$bc+9ii% 'IN3"#b#H8iDR`6Zm[[Mi(00CQ9peGPmCY0YRQ%#@!38(X@Y+$SDQ1Ul&kY@jp*5 R%VX4*S5D"cA8"P&K"$-Ke58mf5mqBLjXD$`A2EKm)$V%9f0qYBS%$ZBMVblS(@T "l`lX,Mj5YQpUk6l3JNP!PYe5NpaacM6cJrR00"B1B@[4%2$*C`lLiU2K)0ja`G* K,MVChrrel1RViba#A+29`R5hk1iPShaHI'af"q-B+fC6Ya@JHhAd*AIejPEBcN- aMJN1*dr6eI'TbX6Tmm-9,Ib!3U%&BdDrNFq(KEZK6ZTHBcq*r*C%TEa3Lp%SrM& ('KGA`&"q5`'4Qad80DZi!HcGaFH*Q46"$M`dlc#`BXUD3XX%"cNSY[YMYjAMq[! CKJMChc!"NAQIiea%XSH8*4IRlb*QM)!MH4!pQ$85+#JK-V90,'E45,L6#5"6)-V )0,&akG#i!CbTB`jr@*@HVqQ$4c6&"[qdVPm"6YFhPi&8()dFbDeZHelME2TFjX* VJ,@q(LR!",iC*'RQHfMlJkVMN!!HX%9$XLZN8p1S8hXr@`r4U-NIkU(eEY*AFTR lR1J+EV2`d8aLJ2S'r(!'#A@b(#V'&fU$6C`T!hr6L`b'MEqQ@!C@BGL'!S*!j3@ "M+fCqlC5,[S$BMhX[6im2A[kmX@Virf6Ni1A4c1)8p'%Z`pFpq"C#XNrB3#5jUk R&-2J4a'[r`TCK'(!,eF-l48iPfJ'GbF,LhRrIK38JDBHqHd9J1d+qVc1i6-D4iP XV0'd@S'822eU%I8#ZLLfRNUDXA,kbU@BUjhaT9$qjpL+$ND$cKjb2205fFfBf6, M9r''T,31``fGR"l[lldifcpkCX2V,Mr,*2MYpeZqmrPJCSUZIP9X`Mcr-YM%&[e AX-)1#l8N&QV&kAMS9X4FDaNFe&U-JeS,F9!V"8f)*@QPR0@`EB%jh()+!1-Y)[c @QJpKSUaE#mC!V66d)SJ%Ji&D#559MS$5*Y@k)`+bJ1KQ1!-"IHi4j[C6Mc#r`b1 mh!,c%Ij#Y$JhHLZUaThaIk%!)k"D8(6VGKL%F$Cq#0R85UXkjb%8i#-PD2j@@1Q cbD&r,hVRbIl*kGR*UrhpCjp0jLMkCHEY5mNRr5TkPck41-`YY,H[l`h'B)m0`J' `14X2`1ZIBh[CeEDQKqrMdA9dCFk26Z1ES-S%cTa&'p&`jEEIMZjC3!h!q8pfL`& Gjaem+p0R3rkiG6f(6`5++LB28K[00l42aE#rjKa5V-cq3-+[SkqideF3fQ1FQ,3 JP#ApE,$XhZRqclpRkl1fB+N0X-[rX2`&0m!jVp$-E@JE0hF`94kdiQ8@!)p2X!3 fA[VXUImVS@rP0[5[dP6,Lh-*'18c1SU(%1K)9Nq(fIp1e,'kY9*[SqmdmVHRN91 [Q#p$$kI`Q20)mG#YNhclb@H'P#U3!++k0IZH$)rqYk0j#E5r,Z@E`PBB$&0H%jc &HZ44rd*D@)hCd,BNXif5h5a2+ZY6E!MQPlp+*F%hSimK$cZC23CS"TrG5U#hpPf Lpkq3!1M0ZZ-V#iRPYD@[rqH[$`p[43"JbfmUEm%Sf((E$GD'!F9)EV##AP5H@QR c!@$)`kbq0)@aP2M`MT3$&PN6QT+NB28EN!!A*pIpCX,b"-b'[T-4hj!!M#MM22q FXV@&YlRPX)afXPq'XTJVd8XCiL`UJIG[-A%`4mLe*'@9,l0R*Lj2SpY0m*@-*Y3 +)A#,&BU#5!5'UhrA'C)jCk0RS+9&XEqiV4R$KPB$YLCe%@BMR@GlTh[3lX[MZA5 'YBR6E)f[V!e$`0-iEME!#aK$Zf*!fZC%K[1FcIrFMF#b&!aT,K9Qf3(KiNc*hcH MD3"8iSN`fJfePF*mm9qMX[`hP0&p([QL@Mk**mrFQSXZ1"m9TR06CS)bK51i"!h D'ImS1hmBUM12A0#3!&[T(Z&%e,qX@$&&j$+2CNXJZRNfPYq&*TmV0'NXGr#r5dl q4dP1[LKpNb+'qE*5NAZU`0(qrV1cC`G26ee+AL@p303&ajb`'KC+@R90cF5(jZj (Ph1*%1rj`m`jIHmPL5D0X[hXCL*U31B@QkILl(XhLr5GG&bKeVqcjY12mR0dS,i fVFbr4L2k'[clGR`3S$FN(35clZJ0"Akkq2Mf,AP,8B6@6Mp$2K,J(C&e+!bHmE8 QI#FXNPXD3i,q[@MqV6(SJ"mGiF!"K1L"J$pYL$4S3fHlk#L"UiG&18ji`A&M[2h i@Y5lrMXjf*[#Ia`H2$RlqriaN!!h!P#!lH*#Q5a%Bc1(c98chaG3l*MmEB*4N!# 3!)&MKriC0Y`VBEC#JP)eKT`DDADaaSl$,qk)B%$T3lN4JKRi`#6,@VD*ed4'SqK F90,fRE-U5+F,@mA5`0,R"B-M0,YaBm5Kh[&@"JD[JaX,F6JkMDk"LTE9YMS0SLP 13GiT,,0Yd6'&Bp6*"N&S3!'+a3M6[Mim"+YG@pFpc+BFBEJL)1CFh"Z-VQI64Cr KYm0!i(dSm+a&Mk05p"-HZ$FP#(TKh6qcBBJ0@laXLjH$iSbC[A9i4qf4'X!X$UM ZLpb+9T*YIiE*4$fXrGQG+p(erE31PTGjeIfT)E56S"N@Xj6eS0cR6!cKVkM6&"B jf"3I*K'*G9C+3Z(r$q$hjChr&rVrEj6,T4VPrbYYEKBhD["XXrVGrrpEqIr6[S2 crm&,Z'DPLpHr`VhIY%3pBcaKNHi2#DMm-d0NFkiB$qPT,Z#&jF-%T'ECQj'm#'L IeV6AZklI@%e'G$kpZ,Kf%C!!abV'capR6eirK`K8'&F!B`qmf2Z[NrfIccDU[f, !EZ[MldT'eH,f"V6GJrKH%%U6EKk1cJ!pPMEb%"U,#5,6LSdAN!$5@QQMXPA&-KJ aJ!-(q2'p1Mii1RdZKqQDd+p`A)R!!hZ(KbqICLK*4)mS!IcL#T`HrrlmH(mr-c4 A+cV0C#%`Bfcq3Y3cTY0J@5mqR[8D&jdQA'+ldDILKe)l&a8rE*h65Q1B65`J"H2 f"F3hG-jFEQb3!*,)m'4l2jZ&+AiSPQ`%[5+N&pJKZ"U1"ZH0mqjee"Jh1af$PMp -C"X3[HcXkI&6a&DQME*YSd4Ym&LJ")SEqUVfrRqG(ZqG26rB2hb'YDZfGTPUFh$ '6YaYT99rHAc`mpR4hSYplRc,9Up3pB%j3ae)h)Jc`D4A+DdmIIRLaIl4DF46+"9 Y+e@a$"ce,DhqmIl*r[(IpjparAeEIac9#SA0R3KUM0j69T)`qGH&%h%%)P+@GkK dEHBYL%Bie$+U"RAS4Dil'-BM#K3Dj(Z$"JEYZXSJ`D([NUkL'&!$586dkk4+&[h T4&C3U00h'F08MTj%38-ZBNQI@NbA*0i&U)K4d`A#0*mVC4LRprX0P"[)Cf%([I' &$@C2Lp5$q*dAFE+Ni8BZH@,`N5!%Bj('J,3`Z3M%X`fA%B1V3KlV2MRTPQ!Ka3T bR0j'BVPFecfEGFr8IR$e!1,M2KJpX-@k[!)8Aa+FD&@fMA!&8$m-pZ&mf%"aBk! X5pRe()JCdQM&i"pc(0KIela"Rm[8%"Q`)$T'4Jr$%1)LY&XJZU$'%182G#J'D%` i"9-Y#L+PkS&r9Nc4)%8pH`BSqKk9aSX-&M"Z[M[MHFiZc@e$0T[4i$TDVQfcI4E dU$5HJ$9f)-9A(h`P"P-cI&dTl1+,LbQ`)l0YN!###A&laN"CPL!!B0FbLHBM1+C MdNq)N!!1fqGc%N)l%,NCSiUf%3`bi,S,eG!aQbTCF)D)a2dSlQ!DcR11LNbC4iF 6LU#-'3rY)FUB!p&Z!GqB,pPiTaEFQ"a((T16CM#+"9Nl(*cc'(!BTUSDF4()'Gp !bq+1i@hEl8kcJm&FkHS(8JIZ9U""S,e-+miQN[A@!4hd"p!'"bT(D#)''fJaXe4 6kr%dZ4UB8X!X`e5`)U`$f$hRE-S8P"b`LFEBd!-[pPq`jV+`BSjHkPR,d,QLXf5 18F+0(h&5iLRL#iq%fUdjE[U3!,0M0ph5TTkHi5-PYBGU`9S2TqRVU,6%EfY$M%q )`N3rERNZK'5X$5AHE"AIFYY$c**(b`-NV3fa1R23[$kQbcCejZ3C2b!i3Ya(H*' eF%H#$"Y(!iBUKTEep0UJl9pNK5lTKr'-T[+2Pe!TL&)cG3Uq6*T53CI`+MAc$1r JD0H0+k8SbI203lU'CaB@fSM`)6AK4m)a!&3V5+P%&&",2Kbd999cVB0S%Llh62% `af-aC'h@&6'hHGLiZ(kT0IX#0pc"(QmP+3rK9ADp*2E4P8m'*q$YjHXM-mlQ)Vl 1XR+e9(!#ELk(50!+D6RP)SEXeA5&deHC'3*LhSdHr+2iJ&8`!c%@'#UFU&dJ%,+ br1K"2Df8S5B-c21AKUjbPDcbf$`Z2J$A-I2PNIQbrF#T9b`Z-@rb8!Ud&9iJbef dEAQ&1Uc9I@U9bp3U[laqr[c&hY(Cbk2$hhde(XTDEhdG4q,aa-4HDQ#pFF2LB[D 8@aZDiQC124!*)f+)eUhq"EpQ0563!Y%QC*IGrp3'VR"Z(%I2Fq1"JXaVZq#qm$& P8raK3AeAcYc2Z'1BcG('c!XS6-JE8mEQ)X`'qKYNTXP")PQmT`lhrljrQ(-ES'e P+(['%i`j2XEXaHD5I'6B3XTSP%b0+i0(,d3i,"HRiqNBF4mH-&31FP`qJ'V46*T %qKCRejrIK'SUL9`eGTdjrR3PD0Vqq4eCIZ%KZJ9*p&h%G816L&dSq(9BLii'%jE rfr5G3-diCGdDj(lSQ(eFmcN39P&`XiTL!YN8@5l*5aJMhq1&f4%abq&Yep#@JB) HSdAleYc9kG@pKHLAH%5%'a+d6iqI'QC2*DUYqPbpXM(,MFmCSPb9K`YJLhIibi& @kU9+*m)"MPI[Qqe-Z9IE"!%r4Fr2AVlD2f)#NT!!@,36)CHbPQfh-!*2Zf9I5If ZEHZ10edkUK2JqaX'`QU3!1-IKV#2N38Qq0a*h3QRSU0"3S60C[)rM&M#mUrL@r' Pp$C!Ja,aJ53'*&rMYBF3pKMr-imJa4iq-CmrZ2F[6c$l%fL[F-H)mdB0V&Q&Hc! p5K9[[XX!qQd-1m2$ce)Q@M)ea$F4IJCI@JQiE@+AJB3H'(CTI'fDkidj%5!V)fd d6BiRDmL#H-`*jf46EU50r[89C,lU4a53!)b)k$%6)8jM5*)KQCR3CNI9H8l%2[Q V@2,I"PT),Q(Y42e@ij@X9c%6V&-qKGK8qN+TZV%`1IiUpP'I`9%$ImHFh4rlrrA UjI%Tam#5$0lYQ,Y2FX+Tl#+%!2pDmpmEM`I06J12,drXLV+4ab'cEc"5!E!55lP Ddq'$',+e%@Sfm0rVJ--ij@+pE,c[$$,6,1Bb)559[RJYQLmJ-,pf+$CUc9maI!* #KcGP`d9kV%Gi-aZ#N!"LGaMh3'f$H"ke@cXrYKk[)Q2Ze"G*QMhF)kVZ@2U[C-2 hHYLbiSdN-ibH`dc,S@B(9Xi[lMLHS14R(((!*b)J2IQA(XE2*`G0T[lNeCGX[H+ PcC@%lILE`pirI0RL0I)$Ab-*US$)BQXIm3)bG@&L'CEdA*%d8@65j-XTHG1b53M MSjQ%+4ZEY4&hCYcMA&6+qEXk&cRmpB1i`Kh$T$KI-iHMPfMJG@mK#5"-6Yb9,,b FSe6kAe,[A`NY(+0,!@Q11'H)PbG(8`**5bB$%&T8AM"9F4ll,jq[X+NJUaSiYdk 8c#0NUFSa*0Feb--FV['88pe"dKZ5#3U8,14XU#+,E@DKE)V-kC1%%j4&1,JcJkc 2K#)3JM!3h408fVe8B8NEBqPC@R)@p$#`cHXTN!#CP1VHiV&0SGYXBpPdX"1`K02 6F*L8'pARN!#XRAiqVf`TeM+*TV,Vkem0$+1R3(Gi$S'T$%aAk$Fj"6kLNhJL)'[ &kPk3!+%5BL5@3bH9U(c*-D044kfCQETCE,*5'5LA&Cm%@MGKq43IXAdmXH3GP5, S'h[I&+,#&K`4'dJ#M`UQ8`5qaamCaj!!T%!D5l1$6*Y!'e0NH8Lj#1R["[dmP,- Y83UX2SMDqpLGXiJ3Ka%e+J'Y12Y%SKarFMQJL2,d888H*Hf4SG0*[iJI93&+5'L 0'k&idemH!Hb%1R*Rb%cZXm8kZNiq!Vmcmf&p(8mML#N&GZ(cfi4E`,%LN!!24PN QGf-E3b5jr1[VZD5J!3kCUif0Qj0,GXbhDH&H3NCDdME0!PqN!!B-fE#Eb"I[+%C GB49RZNbrHGZ#CD)X-E"G+5pJPPcYKeh"Z!'"N!#K@[HGGYdEGpj6k-iI2M-J1c) GGZ@CpIG(f#D1$bqVPbHS30qC"`BE$Ja3"Tp9Xh$6F--9&JeZa)T*NLB0`#9",kB r0V(A-!E[eJe4PALAII4SLhK5+!,k1A*[J,%BN!"aH+Bl'!`j'IN941rjD`UTAiP 2K-jC@QSDbHGThqrIPr[N3$!8!lMj1K1-p0QQ@'#)IM2"XFUk-63ApmaQ'llI+-' -+XZ0,p@[YAJ4(FYq'E'!CJ0kR)pC8N"+AF,LP")Km*1qERCB`3+`rZ8jMUIGZ0' IiV6kD*4%5"49`3k41d+[)I@KE')@4DH3!%,A9+@mX(cjJB!MCX%Kh1'NZJ@c1$* ,%iB&V-&IG(p)E91kTLk&XE#Q9k4P#L4Q2$ZbDr["5mlZ,5[`[lG)fRm[h9Y-%2T H*Lk9+,,cN9I@*,e"G%X+@dZa)%m1`,p0XA)pCHNQYRrbkZ$9[R2)-83`("4mQ-8 l'@X#+MSI$Gi"[)!p3'G)q@9rHIA`pAq*K+YUECKJ63b1J"pjH(N+R%1Sf$iNB2R `L-I%`L@INiT12p@f`YM,9q5TaZ)SqF5mbVL*"0l)G!@#EFG!FIaa'M-ek4YMJAP c-X8mL9Jb8``C-6*9d0)#+NU#!Q4LZYDe,b%K3,9dj,J(Rll6Hr3YP""Bml#f+B! Q6Yipe"U+Z6bl'*D1D0"4%pGN1P'QEQ4RYQBjr$UKa5KNr1'#",SH)ffB&@dB,!f YSKG0eNPkjXSY4J[N&JU-Gc@Y`Qf*GhJ+A)2j8Re''p*,cKZf`c6KiVF$&a)19PH j28S9JmJ&Rk1dk$ScIVj*diVpi#3Z2(T"LcTXpC!!V+FYed'd#LAR*FK&SZbH)ql lUE5U)*IldH1d3@HM'5B-39@L,1ppl-8peZB(Lj4#E1HL2[S0ZR8dY&UrVSKeXF3 1**-&-2e1XV*Id[b-Ge#4h`RbITBSc-eb4KFNZr!6,ZA5&SjF'Zp&3NX9Z%aLk*P jLqlIZ#Le51Hk@0Scb[%Dbh)ULblcA,Z@j`U&*eB8$&iqe-Z0dJM1N!$(`-hiJjF CI9T4[3D+ZfJfalfmG#LFe4a"8DMi$kCp,e9Jp)Nc4D8+M[#0GF!9+q3[k0QDmP# FT1Z)lTb(X**V+LGKKcpQB$q"5C!!``FEFq$U(-m"pKi1L`6@4[3e4cG,MVQ[P'- 2HLSSNV8`EUqSC&%BX8Xb3@DKc%*4CqlXc@"HYDE0qE"C&S(EUbGfh#`!Q'SUiS& 5Vc,!)c("LH*03f"GR!&[K1ZN!FNDL(bmEb45(bQR-!Y%(4S8$0S!-'Zc4%+m0CL N'I,kiY-GV',f*D&1C(M9HiiT'4NXbHV@BBhG&&456bRUC2h*+&*FQZ(a'#)L*#M R@8KV0`Sl6F0BZj(SlYkp*8cIi04CK(S6(!0YXF!S5334[&Rj3Y#q%Q,-$)885lY NN9Eq1T*ISTBK)C&A3U64`a'RDr(%F'IX6&N-q19,!QBP"3`[%6qQ8-)q8db5r2f N+9j83cEVJBC3T##kh`5AA`"Tm&jY'YiGL,b[['lcQ3JcqNQR#mM#V!j-`(!,'2H E9,N`q"`X6m-3,eHBJpd9!Nk2iNf"ac%3H($*N!!Y09jY8!e0(Xa5j`IY2-YLf2m 0UXF'B8h"IbaZ&5*%BC4PPR21pb2cUYG"M!,YF0#52N4JG-1`YJUFB-CZ[Kd"Hc, ,MDHGjQV3DA-k)K8!Q+Z!T%JD5%5$i35Gc-a%*b#S3#!K*E5'Nr&b$"09GIGMamU Y2mQhjYck%ZE`+kXN12NS4pS9fQePLFbdH6i2a4kc8%q#)Y%H$)YJq@NHV+mM8r1 2rJ-VqeSMFcG[PmTpR8-pH'GUfKjqXS2ELFi*U+d(RC!!L(`01%H6Sk@jDE2FJcR F00R0,-913p%*+2q,#HK+BkQTj59""!dG[J4RIAIGHaU&Yj!!9l6a*qHcLL,!qP` LA#Raje#I#Aeq5%4rYQSrRF415UrN[b#XlccDHBj*`%cbfB@pQNdq"fZUU)IP+3B Cf#E#2EGj5THP$p#XkbZ*dTi1qZrMd@5F!`Ucei!2F"pGHD63'&f-Sr4$Emi8+el 0(#HM3GGUC+NY[SebeNH+E)@!cZ$XLkPiBX@(Nj!!L'Gj[+%bX%YRE$-6p-B@L1A [HhidfYp1'N[4G(+Bfa&@BqeK9#J8X[,+-G[k*[4RIXX5[XCCY`2iU"(F@2BY%Sb Cp`fl"b#dTMRmXRGbpRlFT`'ZH'E'2FXJ1,&C2NKUE4Xjdh"@@XAELV*H806CMTX aQ5mCI'c&%5iX-XU$8D3)GTGVh#$(df&SaJdppdMIlTQ`0%TF`-@3!2)MC#-3[Xm m5HIRKUB(B`&#BqrSj#"kkL),THd`0@DRh6$BUe%f2aAc8c8r0I1cBAifcFq@qGQ '-XAFbVd!069+8,-%98Y3Y`595e#l"09,8,m%$C5JKA*alM8P3F`$b2*MZqeJkNZ #V3G6!B`+&TF!`JA6i*@eNlRp`NS)6`AYT3C`YrlGX8Nr*S0Z+r+(K!b3!,rU-I' (J`)TI"AQL+R'*L*+Z%%ibP*Imh1j433Mj"C@pm$l4RI+IKGA$EFNZ43'G!E(+E) 90qGBC6CRm*rSGDLHC8eC#Jk-$KpN(RAHZF"i&fE#E(UH0'k91h1rUCKA[1kEAjf &6D(YZpfmj`SY[jLq4ENSrJ#hTbQ"GXRJe-Y9SG)X2K+c1kHc!)*$rUb0Y5cLH!Q -1NiBK-[pB!r(XEa9q15LdrRAfT,RB(3,j)aCZb%!%&M&8a#(Q5F&Q@cPGdkq$ml l(%0-Zj!!a1!)#`aiB0VT)JcB@a#$#F`q)2MH(C+%H9J,"%T1C[p0'5Q944!T%3S bHmiTYke0RcI6Q49VNc#f$f@66eHjV)6kN4p59!GSiS*L`93fU3Z`,KQN)$AfE9J MYd`TlfmqQm2l$(i+SiFD3%JNB9R)D"(dJI$Bl0r"4Ar!lQ[M'#4Fb%G!r!"cRZ2 QG'*`&p@`@NfTU!)TLTChQa(E!1J*6fVTE@@$&)-KD"YcYF+4XfEa',MN#X4SR3N 8BFqK9M3G+ZFqG#U-b@kl!D%Cam-'"C`5kA%S3XY1P1V"a@GTTLiiUHX@@Kbck(- j9E8m2ma*RR-MXHA-rVaGScFQZ9N*828X4*2%0%P8Xj5eJlGB5NGV!Z&!BQjPP)+ iJ%,fDAhKjdfGb#`!*a%jM#0(IINEr35%Y'6&l!`kaL33YQE)F0+Y$FTJj%4RJlk R!eCXL-(`PKQdff#I2BVChRU-mQ)Y`52!GYFp*TZAelfT1HhLd,JeDjX'Ye8[ES" 6+LEamk*e5ekFaaHGITqUiJ-P#,#KJQG4$,a#qrZriQkar0P*TH0@cSe6e6KJrpj dVm'FR51(2!(c8p1H`3hMlZ!+,pQ2CfDQCpTGb&4JL+49b#%UDFBcEPcE""Af3%k 9lLL[T%EJL9ZFIrj6@J'lZbD*DA3fLA[1ZZB`i@QiY&QIE)-0qD"Z--U6I4qPQJ% T2d0Eb4Sq,L9peV!2['1#Y*aFYK05U%K!%'!DDJa26X(G11N1cPBIZFLlhEV$!@b `fa9@"BXCk&CB08LIH*JG#i"jd'L&BMY'bJcep1UZGRTdYbK#)-[&L9Ua%-IcS&H D@2B$`mKlSR8U[TYFm@$A6$'DL49h-VaRdrC6X03ZPISaqhYBiKCf6RQ@FT3a'3p i#VkBjq0"&cii0#QBk`$LRViQ'1GaVmr3GfXcbjP!*ij%D,i&2KU0)3"B'a'&mr9 05C*pEcN6%4623f2H$GcL(AqD8Nj'UNiqA3I24N-@AZa@5S`P%V@bd[1LJF3EM!b `,i4RX)%kH8[iVG`Ae42%9dNeS2!lPCqh8plX&qj%'!$TSfNeCU)dN!$F1"c4(eb P+V-JQXHlcV#Jc"fjfJqH0%f,Z(&[UB!HIM`c8%!RrI3[1[NGGI$GS4FD6X'pF!i 42[VZf$p+(2YliBP2N!#9-mrpemT(4STmf2@aL#pBL0*XGK%ijaXV,%@FhXV`09r br1f5-Cp5mF4beQ5,c'DdrEi02H$G8LJSBkJ'![c&4d[B-hU"T8!0T)B)M)8mBkJ )m3#IL5%*T2B9SFD6Y*p*E+1)%q9Z+F3fdL,FfT,dGM*dTih3NNU%B[#-qI$XC'1 ie,61!"6Z2[cUbeXL&KY-Vi%00l0lhaP-aeefb@c&%dSeBLpkaF23LACm!B6eZHU -53b8)N'%Jr5PcVG&D(22q%rQ#YKaKrJVVH9,P$!!j'$88`-ZKbG2I&!K,rb&'33 HTMCL*frpKk`2A,[Q*mbK1k@l%%X#8DE'JMK`c+UD2q6`kD26J$bHe0XIS[Y4m8- E&86D62G$p0KFmeYI-6H*YHG+@b9RhCA`c%*fQp!bmjYS$#H&e$+BUBeP1XrCLKI 6%e4*VdlKIIZ"h4I$NZ5rZ+"%DB2&iV0m4jX![1LX0p1S0Y&&dc4FVLT%rH'VBBP ji[+f$lL6Lp"jDT`Q2SH'J1*Xa6E!kGM*l&+MR+BJ$R,0QSmk9"c4cf$8Ph+&@CU jALSmAL!k#p+qT86j5J6f#bFQBlJjh#*[F,$LVXm[%[!Mf45'F2%S[J&4S%0M@i) !`iM6+d1b0bqM3E1*!Uq&*!'i38al`'i!$6dC5'p3SJN+d8(EfS6LBpXfbjU4'#0 e*))mLVrkbB!h,0MLGR5R9K#%9UNJeKi1Zaf@hd&!!a$*6lX6(`RBe,RJ%"(aKdC cS[aA`G46C%L5Gc'@BXLM8Fa44Ue4#@hPfE[$@I-A&$HGiQ3DU&Y%F1qeV#PbpZ, NjibZScJfhl!A&lZ`SICGF+j8(kZV22BHZVI63ef9pZURk#2-'&e8F&qb4(A`53T FFhZ5BPRVqD#G24rje8l2MM`lbq&AaCK0#aYVR88KHLJpkF(RLUhVBVqD*R+4GLf &Pif*HlQk%kfQ[`NB"l@+9+Bq-dA0phpImCr)rf0B2NbjrX9c!-h2re-TPST&b2p 6f5b@DZD,HECCUj5rjrrj4[Prr,j$$L"-Gf0ZSJPH--24!#Li#!Y%N!$C!f9UH)I LXhNjJPid4ZqL28KCqH@5!d8V1SH2cpIM(lN*K8m0YSh(LDG`%5DI*Y-!S8$N$%[ I0KF3Q%#!QU[6TTM1R+8E2YTf,kIY#5i`HB'Jl5CPAaR,6#caKm%`ZM*F8H(UXM% Tl*Z[lKdQC2([)-BZGRf+5Qm+p%IkG15RA[hkam'V"f-J)-`UaiA*KdR"KkBJ$)h +Lh0N`YjJ6KkBj8XEe3)eJTf*GFA$6#hdH5bejf#D"jCjB*KAc%AQYrQbRB[JXIP H-hp+ZDKUrT4c8FAm-6rQ%pMfQHHPfJfQQ)$Q)13[4%fl(M$a8bTX9aTb"MYi$CB +%"&RdJ$P!HU6B#2k%*5$hH[2ilBeD%LS0)PpiG',#,[PY%C"jmK00X`*D64(!hY FaVPSLMU%5YQmZ'T3e0%+kR%TZ,'TLe"K#-4Hid1RCiJ'-iC0fNK,ViS&RZ"'qQM $TCSZ5LEB+(M#[UT)Mk,Q"3`BF(rL$fB1iabj(h8QeNZT"@B6Be,8B*m&3p$miB0 LA9N$RKkX@fbc8e!FV@%mZQ`-NAA[6#EN"0A'eJVC#)B`ZE,Yi2'K3H!BVLN0C,, r+'iBfMa64-6!#6CUBZhkJ`KXKmakMCRY4-eJbqi3GT620qKm4VdTB#c,B)ep3,4 4M#2SQfjKbVqBqJ0)cSUjSmfH&kA@'Bm-VB@$$eJ2fQmkZIe`%$Q19@3'$3D6jQ8 6XTUb)jNGdQ3`L!`j0!B(X#D)+%GJ)@D@lqq0EUG&QiL*[`$L#`#0a@S6l98T@L3 hNl))1HCcN!#&!-[PXBF'Te$&H0`fILq"'bljKPeb@#3#jr,@"Zac2'Td(iU62bk !Xi*TXecEN!$b8Qq+`'jbK*[T-%HAJbXmPMEUYdhEDL%H3[)`'Z4@bPYE$%9r`Tk #MJlL2YNX'Vp-fqeHSkq'0-Ba!b#9YcBY)$EkR)F&6BBJ$FI&*HK2BGeNq(%Hb6Q D-S`iZ"@X&cG%Sf[C3pJcICjdHTeZBp6TAZF%L$%b+!EEBidFIU'9b0N9`-[+CQ+ VP(R1N!"[)k*MR`hREKZ5+j!!mi'bi-i'Qke,L$m46m$$%9CJE,B!aQE0&#hbf#a %VrX363j3((Sa4khVIJ2LhYSH'1`TAKj(4NH`-UbUQpFTmTh0H'Le`VM9$9MTLbk A[j*jF9a6'5!&rPDPXlpPXr@mMbh5!l#h%QG2S,$E*RLL*0a@!,B*FRNjm8$d1[f T!C(D*RDdABJ1"95EkmVFAk80h%*(()'cj0KF92,U3jTQ5i*'TV5qXEk4*GI2%9i j1GJd&T!!65iai&5Rah)aDLXAA3qQqK+LJJ`!TAAcAaDY9F`dak+ppQ!k%Xf0)43 CYmN0BFZ!5ISa`$`Dm('M&4MQ,cfmkNV&!YRFa(3!4c&5!d!()DR@[4JB$(ACbp' "hk8rkkC1Fi5@20`GGQA3V+&%D%NcRDbeqN%0J&QL9fBe*`D2Rk0@S3!LKT+j[Tp 5L%L-#9Q&"XBldGpJJFe([6pjmaiAZfSqPVDa!A09!hEC8C4*HDZ+X1a`8e3ZEqE ,Y5dk)lTSEF@+&K#51J!I@qc$LbH*LlFSmje"RJBN"eGJ3RSj'%f`'AY&)%VTB1c @-@%EN!"aSq3(`mLEUf$DEcAk%aY4J(V"$Lc5UfdKrKl'c3k'IB!Qi@%qUN3CM-I C!I(2a1"jUTLP-GG`2iRS#,%f#PdP,K+d"RT)XrZcqHbR!QI@"L0Yfm*Qb!G)5J` 0pB2CVc-B+EIehXbUF4'ERFd#QZ"Q'V!(FB0@b3!IdiG`ZfdK9VXB@%S+crB!PQF %#UI*94chhDQJ(&D!E14BL%0B3I@*TDi*8jf08*eTN!$L4r3p#0iL8Gp'6B#98!f MMr89&+ZEjqb4i#*AXUd!bC+D*%C#4&PI5FL$Rj`Hlqp,$C4jpJbH8I8r8'McNF5 Vdr-#F5TQ)IZN$3KDJbMq*cCqZ14,-+mQY`%j+PTaJDq"MpL16j4cq[ZVIAjLG[f Ge9(6eh2a&@%!jdDD8rU)@6c%b($HlAki,"rcMa[!!)V&!6(8QUq444ehi)1TNb5 GMKV0q(e'jPR(1Hq!%bTG3ELaN!#BQcd$CZaXm,JIAm'D0`dbcHSYTkJGB-X%LKl NJUjipfI#$#p'CNcf'kR&XRqJl-fb4UEh8SlpXJ)q8eE-CV2#0N8+dXCeef[q-E# 3!+CcelKL,@hA#'68Sha[,T3AHdHrKaep#U"6Lr&mS2NE-3b#$HG&VASZ`9)[k)- R`PdYecI%+qkh*'bDkqL+)GM#jLlXCGSC@!,!V'UUa8!@c8-Y2$FSjIH*`$,FB+i a@KSC34-M!N8%bdNp'5YR%[H'!dbS!Hb*b`Y+LXhcHU)mS(fCS43EITI5-,-*L3U mdF0k@)(drfJ*`5bck+'IeJ2j%MY6I5+IC5Gr*6TKmSIhRE"8XVIHc0l-KF2"8VJ *0PZ8MDa%,LNAcZQKm`NL4dDJLd!`"V)63dqpI[8-V-alF)YK+'a$qSfc0*V$Ph[ 2Z$dVAZ0dXSdaUD&X[!k5-Q%PYLiVCD1ai6+"-fB`pLF)MDd"T'd@QU2pr@H3!)! T8mRD+p-CPCj(pk00Ud%a65&0XfX+h)p+lM(h0)NH2cBX1$reLKRXX,Jc-d%A4M8 FM#JYX(mmll4&YJDHJKr(jV5Pj!#cirdT@Sdbm#Ql'Ze%UkYC&6VUfHXAVr6dl4+ m`mR2',+K25CNBH`*$c9qeqj%YZZabZ(qd8N+V)%1MJN[%&U)DHVQ!dFGA165h%9 ZGclFESfT!T(2Af#KYBm8L3blKUKZ"3%Ue(8d-5A@*Uhk5QSCT(r1F*bCqp$BrI1 @q3@9lNpDPTV4VP%"bH-MX$&Y",FpMFX`BHC[@M[@XLl4PVjpdfGZX$dU+9f5e0! al("rlqrl-jh"EKE#VSFa*!$V#k#Q2"GU,$0r#lLa9EiBj#bDjZRHNm2p4G1Xc*e QTpZ0,aVG'8Gi4Vp2pTl*AMm'qP1c+Zp4+ZHP$UZbI,U46K)'l)k,@H'-!)-NNAM CMK8*V8cQrjjR%6&[C0PUUpe'[mA-ZIqH40Sc*MPcLJT4-BXP*MYlUQN6jD29MG[ k*U,4fVVRL+,4C'dQm%i00B68L0[AqD$V,KC'`6p1!@lPJ$aNqL@5irdT1MPpHEc r$",5HHKqG[blH3#hVUXHlLC9fa'Eak%Y8jF+p[[Pke0aBBY"e%8MB'2Hcf+*I[L m4mplpVQ0qITA,KSDa1H'1J5l-D!J-CUTDri[qlLR(PX#hbd*[13Bm5ZT*h6*26( 89blkX6ZP+)*!ck8J&31K)N4UP2Q,r3k3!&,lbB`jlllY"&8cc"ki%PPU)1rC"F0 LTHprBTpRE62LUX5T,9@c'[D*XbG0cQi8(S-+(J-E@!c9$@G2A[pmpY[,ierhMPq q2RSQpf+#G8VQf$q1bYZB8i+)Y9T@[IPm,!"DL9kMIqdSPj'A')f[HqH$lZFJ!j8 &&CB!*&RVNCM2HR)QD9!Sa#4f)GZ5hC`iAKIA1-P'bc@CHAQRB6*hJmcBB!08m3F C-RI485#)J0'1Sm%laf8'Q`85)`&cq0h#R!K#&JcM895&&8f"3,JrLLQh4**eL&* %8fpB-jcXFRhplGYdAL2YmVeCBJDPl6Z0T&K2fk9cZ'VFd#D#C#3#&'kB&&Jc4'M 3c0a%a9&3I(,ZT4b5"#AXE5dj%hZb5%ESSALLl816MU+,LCijYrGR!MMHeUK1Q!R Hc`,`ITB#hZ*'&)!FV(mU"#f$C*+VVVQ@5lp#b1GdFY'I1@F,(YcB&MMUb@-P@-I ,a)61F@6Zk0J4p"VMGfmQEm9H3eqA+,!G#jUB(jS&e'$3K&1di6[qY!a2'jkce!0 Q*@XK(f1$Ik%9HfQM8#KY56TF$U!$E@#a,A2EETUlYJRUR+SNRIp8C8SP8kJLhr[ 903[Bb5kFhTm8D6eeR6Y[8rN8e@SRh$PFMhSJE%J#Ub`"'p-a`rd6,ZSP!"6m`J2 LKPFAA"NlX-ACl%cHI$N8-TFAQXF0H8X9dZqXkSVcf+)NFbcCiDEEq3fcmbPJf3& JH@X!3S@SE`f#qDI96-![Z+5kq,*rUR9*aB#G*1LRBNc8UZJXfTp@jNT0CNK-`YI #*)fd9*iBljSZYqZ5Ff*$'(!1h8E0[8p+d4L2$9Y&jRRLQ*k$A(hMMSdX1JR*ZjH &$CPbE91GLPa85MXB#flJ'GX2JU@%G'QjPK,Apl,(+r@D$l!K&YQef'R@h6hRQ!C N3(Lmr1&D5*HL'8T`C6-9hPa5aTC0Njpp@PP+EMCVh1N52hH-EeEQL-b3!,M!ljD i)(Qpj$"'iGbFTLDE#0)61L,BHKc$KZ[CS@N(iYYUF(&03)1`h2Da[Gfr&i00QFZ )Yjl(QdTf1j!!,#6heh$SNR3mrYd1%U-&VbMj,NlL"kr86KI&L,CI(LQke(cG8EX T%dL'$4'RY[G-edKHJlk'iIdEdqiN[BZd+MFcY)X-63!lbqSA2bfYfT6BM[FiI1` 9ZB%DG`Q0+`cGDeZGeTGc!@Vc$M1qXeB(cB8DSfXBDJXb&mfCXl)hD,'+2q+iib* &%Nf-feYX%@(![ZpL%cTIY0%8ie[`D-"1KM9mhHZ)c4jC!GPJ3HY&h)p(P"B!Y*5 `rEmI2DA!ea6erlRC"[TH!*[i))hZf"YLZ&cTi@*FpjYRU1%%CpMC+r9*D,'p"3S UZEkll2b2p2qjr+Eq2f#&Y`%P0SSEPA*TFa2pIfVIrAqqZIr2*IMrF(,Ab3#G9,a [d,r)dFH-llHpik1$Sjphb)5HA'JTRZLDUE6Q6,JK!C6hK4dAb#34EXSKj,1brMB k"`Sr6I'qaB&5I81,r4NhdGEFX,cpLlJ3lBQHl($3h"9@M@E!KSKcl,VU+k!k"%R rR%,4mlhMG+Xc`qM&(bDa)$J$l"dPlGfLPmmc'3jSjflp(2[XHTZhA&,P4XCl,Vb A6%YZL,YkZTk1Ed@ETXb20jbV(pH-ZH5#3HHXkh&khpEmb!#K)AMjrN*c8c'-Q5D LRcNDDbLD1L5hK"4!'f#26)MQVJY5F,FG$ZDf5TZMTT-@0M[1LD$0PPE+N3,@Yb) K`4"*EZkk&!Z'jNr@db5,a`D6r)kr[qcp6`iThpErYl4CfUJNr(pVPHrhrlHlrhR IiIkh*SRX+c$'Dj!!$Zp$TrSG0MUMmEqTkfqkNfqk3r"meereX0dB6p!Iq&rSbfZ TK4M#5hb5efbMJp(23"5lfYPCh8@$8X0@$maRZQE-P`rQLeR85ijYbY&i6rH16h2 FcSFGM$)b(@*,KXIcjFbAR,pAGi3jid2V9K)2cLRFQUbdrerBZUZ%iq6,J(cT-TF 0m1PUM11XVrRXi)4'*ETci+FlJD,8Lql%&DGZA2QR,erplTSHl#$%3ANAc-hbr(* 9+@5iRpM"U9m0dmE&B'*2M+l(Gha3rEHpNepb3A@cHMRV2`1'fqcBKjE0h+#V[hr dc(Ir`GA(N`31JQK`6I(BK@(SNleR)25m8E8`bJY+#+38%YKmp,Tf3JX5*!j(RII `c9NQcr11Cb2R(P0GSD36Rf0(RN#bL3TP3GH!D+i93l!T,ZS-X,fa0fG#Q2EKm5F EN34'qQNP9EGLN!#'S&ZXi6GPI!!+c#dL@Dl(FDXHcE#2KjGqf@p`jC+'m@dmAQE Y#G+[b11dVhUMUA58L6rA"ILcVSaF1TJJ9MCRS4l0'LJ("QSlVeBp56JrDC0dj`S phS%R`LcR%&*!c(PiR6CRFdjKcR3%DFi!Xq##fS2NZGM!$6"FD6fEabQ`!(UiQG! !9'[843fjEUZ,#ihV3',f&VLa4iEekpYaB0e@5Ye@@(H8U+["Ub[KLrYA[RL)1rh @kpUYC'fh"lE1#J4*@%RA##kMSPP4#XK3mCKidX*`&qK&1SiKm`QX90cX`LFEII2 *B05&cAfk[KjKq-XC8ZBdpD96,fA55cQ"[E2eQZ9(*HTPVHT'HaieRCJIlm+kIBK 3BpfBXZGGpk+PAl4m$Gb0h@JLbYT(A'SjIBhC)bIj[[(befE5LdLVTMlALHM2jCf )!N#STj42qYl%+Hel4hV!#)0K2**)r,ZVdQHl+VRZfiRZE5Q,Y#Qle&JJlaQ(dQ[ [T8kbcNj4k%P[+B*[i5N&D-AQEEQ9de461%dPC&@I5d5cPEI"(6Zb[94LfTVfRKb qr%hS*(ZJD`AlRr[hScjm,K@6LP'PT#DeS0-d'qiNBh&@cL'TR-0+1BH-$*ZPV4D %0YRD#mie6[$i-Ld"#j!!YY'1T6ARq'lF"1E!X'3r`,*i-U4*))F!KhI0VX2,pC3 LM'VYP%84ljQP[5af!K5`*&[c*r@LaPB2,ErrP%jhL@(1Y[$lde[iHE-e-[+c,IV F%2!'f%LP@VF*(a)i*#!BP5mIQr9hd!X`0"qN@dYF@e`#),AiSBaKp1fM4qE*CM[ k+@P&%pje2KM(JaqE$mb&Pl!VQ&ZTq1((B[N$ZR&`hp*!4Hck`HN#)`*DY2[S5T0 F0#HiR,&QJ1S+!$Hl%6C58i1J$'D*&99!DDML*8D)3pbSC[AZ)KPQJ*2XZHH0dKm L2Bl`r)$a4f+mFpHY8NjC0lkR!Jr(6l0K+VR6XSR!rXL[(b#F"H0X5LXT4%[UhLI VaDCM8qFD1DC%2PUY,fhCB4'2fI'G"1*C8M5LX!q"hQcN`a!ifp$eclF*E#-VTq$ IeQ,mfj,iGiQ0eNjC0'DrfhllJ&H@GMMQkdiD"TmK+IUhapXc8*!!QmlR)L&A!PU DMijBQ[EI%KppbA1Z!Z2FpS6c)ZkNR["CFXRERQZpUCph`TFiQfkirR5URY21+FK hP+RPUpre1Efef0A5c@GRTkq2RlamHRB'cCa14qH$k#R%h-6L2LCBr-(Tmpd#Yrh adkD*KQC*V1G2fZbEV"XcL@,jK*QM)Q,JA9K(ahU(3D@A#V1@,KkdTpIEa,$0'A9 DNcU5Zq1I'"qR1SPj9p8S-TqIr(kkRePVVkpRGH)V`"%d(QQrh!k$#FNl+jqIIEb &S#E&HrVJ0+$VEbqJee1c%r0%F[Cf3`)DC5GY5&VSMl%e[9@!AlphdH0S8k*B&JK 0qfcj-M&XA3G#ceqRSG`p0!`dV6c#@+bV@Vaq-@UFRf-d5[Eea"1jkMIU(6MkE[R pkDq[L``"CTp#-iF'a)LlDPcE,0-BEp+0kqDZGVPqdCfp,DkbqAClUebi*RDLK$, &UN@qSXQZc3eK31h-B1BA[jmGla[NGL5YA98,1-!69#C1HqFLa$"'6'`J#S8iPKa X&,!QRHD%[D``0@mUiq#%,$BKYA@'[-f&KVaHRJNpZHKFhjAZrqEf(prBrV08UCD J4'fc@UQ8+Q@drkL@[YYrI'[lMh6l6lB0q@lrq@AX2`@'R@Rq+EASd[T6BZHNmHF #TCqhU!25,dHr9j+Um&ci26"eP-Dh8RF`idfd@r9f9E&a21A@Nhiri,I!r'MP pDI1r4ICrP@+T"[Cra8TjSeBVE3$qVjBf[Z2rEiIrDGp[CriA3DAr4fd!rr[R"%& p+i9Z"`djU99YrJ+d8`F''AD&NRJ$2`*2"-HTa[$cmGi6&Le&Re"ZN!"jpmKmbAi krqHZc8`)BQpJT,12(VfV[e[IhDVIh,J@AKp"'p'RjLi%$HE8ZIPq[EQEHIIiF5A lU2N6r0eTe[[VZmhk-'pq[61r(MfUe#QCh00'Yf['4V-)FV4L[#UE-0j,Qm$pVKY $L+GbE3ZZ$iUPcFNi5$hZ!QTMaMEA,XIXe%B!Q-[30MQ*qac,fhbb*8F3j1F$Ih- jkFcUa#kS1(+GkV"&`qjd62(GI89))Y%Gq+5VhY+"dPh,baRe`k(9crME'2jmKZ2 TGq15IerM%QUNQe`p%$C6-!LY)[0QE95e0DGU`Uk0+cAR$4TY6AcC9[hf0SZmTU2 %QT+CM$Pic6JC$KK1Am4@)YC!"%!#2Ac'#4X@pNB#AbLB-"ISGB8G"`VXclXSXHq e%LpDEq[F9X[`Chec4f%ZKEJ2b8XBb%+C*XV&-@2"`&`6f#A%4BRQ"Fh%)"lQ(KB )0F9#aFV(E($ET'E8PR#h3cPKPN$Erm%R-TV6$'ZGGLN+e+5VYA'pEME,@M84Ar( 6!ThF&c&Y5'T0eTD`ECKADjja`pTI"V&Dmm0!-pEcBR0$E8dkr@NX8ek+L$Lc&N4 S)K1#C0jTJ9eaa`),#9"dhYr91NL[G*bM3SePF#Xh2L%&AN*GY4BUNl-bj5fF($4 JNaL"##q1j5V4#Iec`&ZUCHYc!&HRdP#VB5'f&8"Xbd+XRhB3XfM@,UA[9$,L8h, (c!`E,F`pTCG!"FK0f8+e&(&f6JmCbR48UQ6$4PZh"i0CS,!d1)6kbjB##!X8!aB $$Dr$-@--e'Bb6(5k8XjJM9E@AFMY0PJ!FV)j5)BF0[jTFDJKD)K5AD@0MP30-)K @''fDdF6DD(fp$NU6[05'pmaP"#4ZFc$Y6bJV%pS'*TUIfiUj'Fde0"TdZh5lZ!4 `36-h'V3J,0cXbH*VAVT''bjF@,P1[c&4fYcd#0a`ePUcp*Ye6cEJeFqG-0f6ZV* 1L4VACjV5FM1*qK4dlh%8TpejjL@6&CMS"J,m*"ViP,JbQJ#-FDT,"d*(JS4,Y*N 5&5fjdBRA)L*DR%fq(LP&ER*BB0G,5fl1)XPLCih[CJlJc+0EE&IJrS5T[4Z6"mc fcBATP4R6E!E6$+aApG!3C*-f-61a-TTV*'aDa&d"eKbcX@2LdNL1CQEAYc4iBFY Mj-he)ff-V$+cT)Iimd1mmCECYlBc5Y!Nk@XT5F@P&M2FXQ8[i5pM'[[C014Gk-K &Y'4!6mkei3l1!9Z&ISl4jpSmXmm!%%1,q&"YlKArFS5*8Af@XHI5JdQHKTZ9P&2 J[UEj!PLfEcDhPmqcmi6263Xb'"i&SN!hAMI5)+V@Gh(iGrh2j)ZVraITrk20@M( 8reFfUYre2ppBrj1ZrLI9d(IYrfGUre-8j5L-dmVii&1D!RlHX`8kpRQ4FS,c$`Q A[V(p6lP8UF,jVe9,e9UP@UXK4YJXIMrrhr$mdli$!L#lIC4RJD!-c@4pZM!ii6r Ef*44BcSCJ%GR%h2NRT-HXpGi&i2d[Y!%CI,&U0(lRh+@d@@9G!bi*'FFAM[P"3L kD[D&1VT8B0*p!e((L36pp1R6pNCZmqBQ9kjYh16JHc'hCEjZ&H@h%VrEUY,A8Zd QCqY[PE&qTD3UP-VbDhA,IYZ'PpYP8Ef)e8ZU[fdePNTCeGiSqYT83)qe[#@rEP4 PjA+jQZKDceY9,U[+TDUXA-(+Y@hGYaU+Ae,XZlJPUTGSfTZUHV'U9UfSHYrF#1H YaPUUU)PXUN8V9iZ*HDZqYY3h1ifY'RdYEbBQAUhSr9DGeh6Ra@*biVTk8DeEC80 [q&BimDUHZ)+e$39Vj8S5eY5bED[+C3fS09Qj5TAe`-YU+"YUamUPMF3a+3Ic9Q1 TDR$EUSEceUHU9&@VYUQKVEU9Q,MUHdZhYD9f[,445HaiTDChA-fmTQ&eHb1ji`T "E+Z*9r6%0a)6ef1YU(P[k(QANr0@KfaE95jV8&1,4KZqSBpS@3fPTS'Y9%jXH%N ML+)k*e@0fEB5Q%fMa9*&VGUQ4Qh9*'T61lDPZVEc--MBiY!3Y38BAI9GdhdAUmR peZ"591Y@dHGXXaa1I%22@m(DTMjPPBh%[0@DEk[+&3fSYBh%KQm(+&d0C80MYR) aHF)e[1JGV'T`fdTJ0RfU5P@eDTXDfL4fQR',kbhFe'FFVZ`&YlM#'09YIFDVLfj aY4+9LMlML5hAACI9,Qc8p,*[,,M&9H9b6CraMB@hZ"T+E91ImH,#@ea"IV@N36f ajEV[LQTVXk+2H(R",DjkYY2BXXZ`YI!@9jhAG1I&mX*EA+eEC9022)(F0)+SU,B fY[8CVbkia9APXJE8@RAK,Dk'XP(5'lkem"CA@eM9i,D9)0Z#9DZU9G[8d&BV,VM &G9[EqS4[eaEHiZTV6F2UpYDL@ea0[+)R[T'BZ"kVaM8EHYk9iS*EA&8ZDe"6LjC qLkZKe$5`PDS,Eh(9@P9MYUdNCY1SVD)Dfp5SVEUai"CAAGYj,(q,UljVZZrLaX* EA+eE4Cqcc36CTKGGJpkQ2Q@9V3@hZ+TFdB"DfeTiLkZKE'M-9Li[[-A9+PBeZ'd Rb6DpDKV,EQTSNpMTAm',9ql%LjIZ`S[AlX+,eql'LfrIM4II[!X[A[TAmZ+PZr( LfhIKa5YhiF8VGq2&0qr'LpIZa)Y[rbYjmFdlmH+eZr$LfhIKaEI[aSYAlXD,Pql %LpIqKEail@kmH18Z[2MQAAMacE[aiU@lmH,EGq,&+rpDAVaf*ekmFKGHI2-Z[2M QhAMadYeimHflm1+9Ib8[AVNE,ekk#bpHZ`X[AVXE,ljp0ejmmdkmH1PIbBY[hiN Ahl`,,ekk#bpHZKX[AVXE,ekj%bqqq5rNa6I[aS[AlX+,Epq&&pqq'bpHZ4X[AVS 6,ei$qmLEHGVcPYDHQq@TqIYbDa1rPHdeCIDp*ZkNl4*qV4B$NVcQ!@YVQfS8,4S dk+-Q,YeYER'MXUA4F-fIkDdYDY(L0V-,0A(T'r#X)6fbVCHkjVGjQpSV&bfCXE9 "h9TXAZ*'$+'lZCNB4eQY4XAHK,`DGQDm'KZDPDH(QhSeDT90Y4U@QZ(95"p&9Dh 'TVh&H$AXc(JLKTIBfNiXKee"ASp+dG)!GMff+fRV36$dhF,R0[DIF0#qGIb2FRP M%qdr0kXe`rG8+KMrSr`prY-hY2qLI3Ic,i#(#1h(fq!m2"Qi"%#p3@[DMIpGXhk jf"lcmQdZ(ja$CpTLXrdAqkHr[(b@5fB,k-@6b`%&aI$14Xm2phl1TH8@-11k#-S q1hKk@V9*Z$$-JmLF5&NMREIla8$AUpKkk-&hLiTP9r&UF)YU*9X0JMUQ9NZV9Fb PV!6[d8NmHCC)*aP&6`jI2[he*1HpGYQ`$f)h8-j3Rp,VPrfR[eCcB[hQ6!),9h* bd4D9,ZIm5LdU@mVjjCQc*Lq2pKedY$[p$UEU`[+jU+ALC6lCHhEMA@d(N!$pJZ* 6j[-'UUmM'aR#16BPFRI0cYS&aXQ0lX+%AIM%jHT+*ZUkEBSZNCD,BN,J!DTVpdJ i3'El8`jAQ1N+ihPF0FEe9+I!hR!kX@[,b9GpSLZXQTE1#m,cS2ed@X8EHPK2qR3 L#14N(3j4d4Xf4MUa9mpJbhJ860TXYJ[!GR,GEciBFcQ'12,A68Q6pARTX6UBXh9 `0@S-YGXQ)LNiShf)QG-B$PAiMkZdK&U$Lh*'j2[04P&QUe!SeA)f1#UZ4+Q@eE# PMGGaHGES@5+ZE*!!(BkaJ-mm`cQ`*Y%IqrrekZAaU5ej$$Pp-aqc+3&RfP(Q)f8 aJD43d6rr#FjJe1+Z6"8e+bEV#RU263D6"S3V-Nb*q`Ca@(HM)TFJrc*UMapK,bk 8VAp!fa(pa!J`fZ',TjjFY"&0c&@PajJ-LSFq2dBVeRFZGS%h@1T5l[GERlq3!2c d)`Ec@hCjXH9JKMU09j5@-cPY9A#@,S#Y,C!!PIZK0QRf`TRcG+YP1qKh*Z8ck28 U&ldh9)BjJ6P'-'Gi@T)*ZUlU+j4j'C`5Sc@Z4Hp%6ErqA%+[0cpm8hb,LhCim16 Xlr[(*`F[Mq$42rr*L&!dL!'B+CHD(92@HR+kZA)EGTX5!@j%&UB!0"DIT[#X-!4 mE(604ZU'k!S3,k126Ia8Ybm'`mCI8h3%KUL5`hDfD*1Uf@B$D"33DKTVFb),p#F @3***[d)K@ZG5bHPN,FK,0fYjAZcVYG((`+m5EF#P)DUlXEPI@i2Q&&`Mc,h(k'3 `4+bI-IJFDAafp"S`UF4)1B'&')2"p+r!IpN[qT9jPiqZh%+(p8UdcM3`L)m3j), hM@i"R&j&Mq&ZF-dVI&1I$c-hDZ4A0MdIZRaIfE9T'N#Ha$-[Mf#,r4)(q8)Ca8! @4B&$"0EQSlF60B!4UKM5N3C5LKipLUlF58S"ihP69R"`-aFh)Ib$I`jMU"@1'!p l)+HVlmEEB$*%C%YJXHA4&rHF`*E2pTqIr3DZpc2kSf(D%)+B*Z2hdhh$jl8c)SV JlQiabcf-kU2GG[e'9+'3!)54,*r2jm5P[VkH@c0I)DX*IXZQVJZ-YTf#aGXfXKe QA'6kkG`PZ9cfcZ6HPdDMN!"DS8fPRamF(CcmJT!!qH6eFbTL`*0ffBDUGfrUUAR c0,NLFQG#@!-L6hCNVT,IR5-mRLT4(a)S-%QrkeBr'pf2LKrDR*l6E2VKhZRqXfb DSlkQQJbjA*rYaMrY[c2(XUpm`UM[eAT+QcJd)VE"HdXP0(J`L5DMDdQCbl!LXf0 AT%lmmH1SQSh@$H*l(1+Y1mrCKLi3f2CE6$Ba5Z$H4'i'q$S$3Xi&)03A3ih"SPZ `H1ICk-HS8[S##pBF',l#h-Tm*H*pq#h@E$B+9cHdMS%"+r0$"J+C[$VH2pNr232 T5RDC98"ZSRl,E86*P%UjCEl2f%Lp8,L-0X06%!!@0V&FVFrVY"*d@VPYTqZT[CB fj[CD$RSYIjPHYqCf@JSk,Gfp8p%INL'+`G5ej`kY@!m*IdTABPi&JblZV#`qISR $Km2h3X69qXVF-eI8CflfLCYj,pV%,hJBC,B@6GqPmp3MG3SjqkN2lr)CU1K1Nja clr$BC!TAD,UYarq$6T+6$@2AM'6D-ephD4R%r65BZfU-e6+'*235U`M#dpXL-K) 4bk4Nq1"VSc)50SIGIReN4Q,VX0q[MXj)!Kjfqd83@LV)+,!#H*l9j"FN%c#+mlm ,N8##jS"'Q(0J#&qEVcXV#f*Qf34CLB*K2+X`pG9X,[hECVa+BG+8TJNi0Rred1G $#[@HaXCbL'KISdkKdd8pB[A`+8F-fe9[EmRcb6hmJHrMZ@`IYmq#KdcTF1B%qDK JbHbXV4A%3qR3YFicHqb#kT8H23UC'-mJZRA)T"6,-kB3@X4eZ@*4RZXlN4eI2HE '1@Z*M8aF2R,D(,ir9HVZLH*PC"p`B&1PhcU-1m4T#p)2B-,l`6[)$C!!%LKHKa0 eZ4A#J1fUAD89DJqQ%1+N(c@LN3fU5DSYJc'ZkMU'ISI'-iE8`Nja!GTiVlG`'L4 1B*mQardXABR'hKDb$CC4`Y`CH(NQ[53%ZKR@`9K4MJcVk%DPK"e$UX!#&JbmRU# @@9AR&U8aDR+mDaD9p#&BAbpkC2Kk0a'ShfP'(R[JRVfTSZPD-4I"rarDEITp8hF 4cYH'-'BXfhYVlkfH$9AU3LbZ18UTCaG"K6H%Te9cJRVdCVLqRSXiUHD0P`PLa%! VqRA3B%lKd&69bb+P80(3)JKHCr1SVdqBfU1H&d2L([3(dCq$Dj!!2M1%'B#%d@" i(`"M5&JP8SI$K(X!+Y9J+cA''NN&A!F1j&@JNUZR5cke$Jq8XS%HlqUfk-2-p4L IQF-fQZ+@@@@jZDPBPGQp"S`!BBXijQ@$*heKBbb")Fhj0CbNhiqHRQ(+6&Le2mk HQm0'h`[4+BC6Q[B4jd(c0SS5f"'mH[8+'JQL*CRe(Si'lcYQ'T!!VE0&9MU0VN% ,lAM#eK`&U!b0MG8!F%aQ98CaEr!HN!!*C$!KK%hSL%-aQ3deG!&Qiqd06CX)E#f DB5(kl6,Z3d[+XL1(2@,Rd+jC(,dq&24bf'LqLbFjXD$3N!#d,$&9aRT3&-0T"P* r"GMhcRV03('`*%V8SQqR$MHM1K[5X)+@[fJ56@hr4hQ6QYr8rUqb@6%2)dMp9GU SPBZBrfZMZ2RGrZrEfIra[S-"S-8md5r6GVZ(iSHB%`l&lADRf3%,$"XDlYmpr4G `(0%2T1TTCCkm2MKmp[cJ[rDICH'kGXp26TmpcDlm,H,F@T%[ad5A'H$HdFQ"i$p kM@Z-aGYS0Z2K4)E3mcb)9(rj6'%m06"J"lb`kT!!'"j#XCTT+aNCM[2KQUPhd)k Z"e--83IB%9P"'qd1b8#$h&[6TX'4J0fES!ETaUf,ANc"rUrLVTP,M(FK0Q$ea5k 8hM8BdA%M"HJ1Xl%$*fE3ipL8JHi04fX@!9ZKa4p2$9f8k$%A(84A'&H[-65)[YQ "k5*bKdEHaI%3fEH951`mTplLiF8IiZD8)K1'BeZCEFrfhb)AQr0bQ%63aGRjY'- @5S8(KC!!RJQVYTDphQ`LUV%d,XXPVGNmkd#C1TFY[BSV%krUDJ6EHR4J"!ECjB( V!H%"Qlq4&9Nr6qhFUTNJdFbX9R4X9$$#@-X4H3Yb#FSjJ&R5%),%a&0@eZCq!hE 0d+@8d'6%P&bM1CNfZYRdITdjTmql4,K6'[hTrY"Q`e4QLXeXT-T$cd1%!+l+,Y' ela00!3LI`[3i&de-5!9c,VckpBq$9`r'F2V-FBd,N`m6c""(N!$RYb"UQTAYMpp 85XLL3&H!MKbFLHa-[2lPfQDK80kU55P@*4G9Fe%Y&fhNSXeFY*@,YR04b6!lTC, j-@r")V"NhT6-ml,jAMDI+k@FEm#mVjVR091qCXTX3#[QqcDdJj8Vd0)'0,9Y[TD KJA*YLcLUQlT-pJ2A#F`jqPZT%MA1$EN+[kHBlQrQ%RbBb#AB$j)G,9`!CZd5rjI %rfAr[e`iphp9r&m6rq-bP[%AB66cBAIAkRc6*`3AlCY+8HmTj5a*59`dMSTQ4YY b3M4HYkqEY+-9fX@bH9+"Gl"6j[-fl'`C#QaAr0c-1TPL@c!*U,LjJ6!"GF'Yb,4 5K2VJfQ0D+N)Ei*(Nki1I&,4EhYV'VBH@b-fRRMTPh-2LV$d-*MaMlq41b9fT@HM Hm12EY,"1i'iKhN+pJ'lF[6+[Aq8'$EAKT5@h+$Q9$EeVlZTK2!+Mh4J)*-c*'I@ !UmThirGaPe%D)DX#Y!2T*L(#0'4FZ@TJ4KM1H08KX3rJcqZ)VTQ'4A28c0APJ-3 (D+0PbVGL!q`p)**XG&qEU4*D,*K4$kl--#$V"@5jl*JlX@0ZbFDl'+2YJM!,qd( T,28"'Ue'Gcb!B,m0-p,Q""`"k+j&bITj$,1N-EHJ&9-95#h6c69fccNeH`-F4Um hk2-qJS&e2iEdYBe4Ti[MaFPF$NB61qCa$R)@6@#LA+Xek%&Z)5+Nh-,$A(*)PKS fYBRY`2[a-$C8(Jh!m-i0'"a63Y%P#03Dh0f)TiYN$NeQV!GN&Uf(k4T'Jh0D'4S H5Z*-Tb35a#fERSmlV3l3GK1(iZf)F%0'90PQ'q9pD*S9'JX!#)Yc6'6Xc*b2&N4 d[QKdi"`PYK1DJFM1YJ%D5''&3-kX!Pffc2[$EN1$Z#9-`ldhQd+Mlq*"K(Qfi"- dF4jh"eGQq25U3c)&)86&a'8!fCd4TNReS#p6"UjiJ600%,E&3RmIT5(QB!ac[Qr EeEM4Jr9KmB&G@idRc2"1c%l%Idf"LZDGJ!NL1(FKDl,Cl6k)Cd`CJj)Q!fS)B!e 1&1q2Tib!Li"Md),dAQEei`kNq66(-1j6(U1f"4N2i!kmS#Z!VKaQXlhX'-SE96E K+E8VdZRM3[1NJGl)8D+NQ2C((4-SXNCE[@Dl!Y,Ic(dmS@0*b`rc5Kd"GFT%G0" fh`i$fS'4@$J#6aDB*(NN39j9@'T"4b*FQTHdqZBXGc"Ck'9m68dh+(@ZVHNKD$J BMc[R(3-T)2k1'me,2LaKXP+EaCI[pkd0VYUeZiDVKM`@N!"B@#lR%jp"8PkcMiD &XD[0rIM-T[k`Q`X[YAAA'J!9`C!!fB&fjcha%$RXQGX&ZekJ9m8L)C*#L4N3X$( bk4(6232L3`Mem-B1N!$a([M$Yl9HdNHNYPjbPd[3)F!`,6Ld")PTN!$Ql*N9"Ti (d3Cqa&1(-GaTaYH41F8'%Z,*94ch280Qj[8l-(Jpmkea%@-("RGFFa"f)(301rV NaGjrSGm1BLCcL,U0dB8p&U@0(''e5jc'"m0XFf"hL$"rL(H)i0Q`,FK"Rq3#B+N m+$IkebkjBbVIPMR24Ae-V'`1PjQa1CbpA(4T--kPHIbHNLdEL[kmRZDSP-,5C3! 08$E@9[4S&iH+l%GkiZ"84LmMkTHhYRcemB,Ua'VPFD0EYM&$(Blc*@a%-@mYaD, FKJp8cF5Tc5c""bCj3%SJ2CF2j%l68L+Rm)'j521"b@i[Kr8d0XfaJF3#AUBPI*l ""[))hkI8Z"U-+%Rl+'lXf%@'Dfl8FVHQb-eUD[cFJ42AF-ZU3!j15X00@f*h[2F EU+NCY"hUej5&`B6dhYf9aeiM!LUGmE3*P&P1UYp@51-&52d#KiD036XGQ!NUq3d &5NRCaB8lRR6-XB!60b(UJQi5Z(bb1D88XXf6hJ"E*9BT!aHe`G9j)+kDSmij*M5 h%q3ebHC)eq+-lk%jNB+V&aXdHSfi"(dRFAXEpANC#UHSj@d2,!PQ&Sbhk*e-Grd '$[Tkk@eklR&2j%`Y*5)UYqF-S'0!H"Jh+(Xj9Bb4X!CAj`QUKTeIi%9p6Uj&#bH 5`R!e,qI9C)i&56LX-BS[$$bD9F(4GqUc9LhR(!"pJPeGpmqCGB25R4Pjh31+dka 4XNZSfjdh3D`kG"`!#irSA2Hb8V(I',qVcfJN`qiL84kB8-MC#qj,8E-Cj9q##"1 1e#q[8KBKNAjH'"HBh`-$@fpcd6Rm!J'5Z4U90bEKXEq5#iPYN!![+bq*J,[!jai [a(&NI9[GTJ1)A41*JK@Q31iCBZ#LMi,TP)&-m5#mV5IJaq"bUaY@ZhT9Rl%KR)4 AF++lZe('J'"d+IIN`i+6ah)6TLm)ArQKm!Cm'-lD9V86(ca!AFm$+!q9+-Zfc%! ,'$BrmSreC9U`Teb!YYY(9Y(Er$jdGPMeBfLii$iKbiPQhC&46iX'p$#EC&%m,-0 cqlprA-8hr,pTbcbBR`+jDDM"%3"[2XrCk@QM!+QA0[b!J,6U@'X%PqUfq3D'pKC c'-r1G`r%PPdJ*VDXUlA,#p[*@MZ@*MK3'L$UCe0A[0ZP@mH-ehcm')m'QMI&KQP dDf"KN!$4N!#IpIk2TS!`m9#@"QM,3G[f['-ZF*[@'5jc4m&JVqE-Sj'3!'N+46N $Qr)EFKLYSC%)E(6Q6h6GLrkd#f!qJXZ6bfImjNpRNq,X&GqC1Rr1[5eFYZR`YR# *Y,[4SqK2DVQ,cGN"`@E53-c9d-RRj9JkbE'!c@ERmfiZ-CE(8FH2T32YiKCdkhD epj!!CcGFacLmM3H3!0LU#eNjV83(L!E$UGM6LV1kKQ8'&2mRVM8-q8q`d,Nfcm` E2dP6%[+2`l*ErmXj"M#b4NI@Q&%H5S'ech8pFISGY@a&aBLc5*)$S4#mq!@4Jec *$fp3I2kR"9T%&0%k`&Ad!Ejm-&r+`Y--MP9+DQG+H-VNC3I1fJ9aPb6*ClQY3EH 8`rC2Q!QFmk`k'#q)I(AU`lQ8mML*5BS+Nq!+`mb`)c"*FR[brXd(Xdd'c9LBF@K MIEeMYU+2i`)$S`p[,Yl@C`%SN!#KD+$M'FrhDHJCYN*+MBQ%Ya[#C,ZMR$9pp`& a&dm[E4!ND&0#DB0S%BZj"ASrljKGM"VRBURalX6PaZTJ%CS[cEZaV)`RZSi0#L9 b-9pLScZShDd[)-&BK*bmjfRZ-r#YD!92Z0N(e&"lKI&PBcMN-$9rc@d(`YCd*K0 HXBrTDqflFf9A10),"+G"2J-f8B*SjTfjUJc#Deh$TPK593RCXJ,Ae!f#0NM&d22 [#*86*$IJ9,jjpjDZ&BE8KN@`eP!H@&-3bh@XU&6"K'4I(([1S9+'AV'#D2HGiq' X[GpId`iBK!PH3)cNR8(#9`C2G*1QqjFbErX9R2TZ+K!24r(lcQ"U#Ej'pkTa26B Sh@V,9j*aBYa9K5S3bkZNL(C&-mi()!)%jAcLlD12CL,fA[R*90X4T*URCk'l+BC CkACk(C@d(P&1feiBL(cH36ICV'Qj!AJekaU$E)I4Zr`9`S[5Gq-5cQ(,"ZELLUm BNm!fcQ`&[)[0$G0JM+jJ1!DM$0X)S1TKB`*''@ECirC%Yr,"hJ[[C)TaQ#hFL"q c+YQj`k6d6Njih$-8PY0*-(4p6'a2Q09G,#hGZA")eYEA2`bcL66V4&kSUE)-J$8 lP#rAG2eRDVqmC)ScJ$E!Q(I1QJ@Yh+`N2hd8K%3UTfha2QcTRhQeS4,qEG3!Y,a 0E$ND(&rfc9i"0,rB1rVGl8!'VZJGFd('Br"[kH(B+G!CQ%4Pp545!KT%B@Cc%U[ )HY-hPi#b!GeH$XdJ3)6QAZ+iGX&J8jrRITmcI5+4KP2+X6aSK,HCLV*&Flcd@bp "j32ehdNX-4V4mhD4GC(K"B&SQJk$H4GX9!U`"-pfkqUU!NRDY$G-B9+$4Y#mb$E bTfk%*@&T&Ir%ZrlaBiLhN6FBYDj("N*D'bmMmjFTBGBlEdLi[+()HAZ)#)b3!!* -li2U'!+)$DMRli5Xki&CQ+ml[ZL[qLcUK"T#h50,@%M5kpZq@9P4C*A6G*-N`Uc B52L-kLh+%)k9VST$m(TjEq#[,e`PlCk8bP[Qc8E9#ce3hf,T682LXZM4Lj)#Hhk $f&,mri00Th,PfSDj5iVQ,UQ8XGHXJ`9iCGBNlVIbJhCHf0!(f`hdUmCS3U31,4$ jiqKpXDL*cCSpfYJ`hQBGafrKXYMJSC*0*B[`$A%(RM&QDcTpP%b28iIE3JiHQkU Rl#lbA$$bI,IccL-pY086Hqa[8EflM[A&8h*&20P(q'-`5p[[pPm@[NAAF15['U- @LUa(D'12brB1N5fYTKL"Bl,G-%TQmcV4I@)&(cpfl"q#AI4rQ"Q@hh6RCZP3lHM ##2*&k2S%351kB(QCSSG5CNe4RTJ6!XD3!"l,`"#K*@4k!#1Q%'Ejr#c*9fX!Y`0 kGm*P1@c"AI1Ah1SVZ#'l(M@PM9U"i)hNmSi6cMe`UUjLmrr)UKFDIDP9%(L)Ek9 VC1I!0[J#2T9Qa%bahQ'@m%IecKNJMd`c&jfIjk,*1@Rp2MU0Ac-&Lj@fY3E'Uh[ 1cq[T2-d%3hc'Bk#E(l)@UK82LI&19B'Geh9PMb*[TlU5RK%K0XB3U10aii++*Z2 GA2B$jQHHh@1kbSX9AUMY`Kk&Y5b4-NM,[EFA@GY`BMEm&TSDFJ3Z[15@$EJ&rN4 #ZpZNPZ$(pB&Y*,iR#%J%LA-'LrZN$EB#QaQ""")Zb($)KEUUGGe[p$T0a4R#GU& AXVY@Z(%2aIrm*m#AFi[lY$,6hCR2bGaqE2`J,9DkNA(fhX[B8U0CaiGlbI5lZDM I-SM),*IjH'iq6XcI58ZGU+MIVFq9F`GQ(8lN5T9EmbXRl32RR')86[A!0##$$Q2 CQBHkQcc8eTSd10+`e1jBfqUYHSV)J!FkVhiU@ZM@4II1q'8HJZ#+VEVUq(mi6T' -N5rUaFATk+DmYI8jq)EkSql6GSDZUJ4+JK1$pV9N[TeM'fBk0h#'8P(1$a3IK0" "0d!(Fm1E,-*,+80I$AaAZAXhGbebQSH-CMHHMSNXV4"J)ahLj%BY[BEYe%8(&S$ a9$((*YBjYMXQA(AH@VcZ'A1QFH'"iZL$dX&XBrB,lB+D4A,ppD@3!$8pFR!'G"B `EhiqqqhPmDplabpI(ce6kdYU*`cR)$L!Z4G)bP$QlpER!JVjQHS04"D!XI&G3B8 pZcc%q%MGkGHGmJFQm%+TL#A4"rdZH1Nf$4I%IP"ac`AdjKhalQM#jS`5SC!!#Ba 5Z',"Ak*DYCTbX3RmH(kY4q*m"e,bVI6LhKYUpkdeYbG,%aT%0qeK+c9rbaSRF1R 1IGZU-f`TVclfX&YerR8T9!5@bB5%JbI$%hI`A5rK1pr#Rhm0clZ(CpfXrQT&%4[ IE4`1r&-+a!QmU-#&$D'X'X,GL$m)`*546C2f0L)LaE8c$PHq8Qep`Fq#j%lIJfR J1G8-Bj66!U2p@r+q&aAIefp&*QK#3FX[N8jSILkG-)XcZ5[pB9'S3e[0E(e"KcG ZT[E!+%NH#MEHdCDpLaj&T@V9+Cc)"1-GL%iiGT4A6)(!+UhJGV,J9M'Yi'C+`De jA62@mReSHJTA,j@JZQqaPrYS-%h)kMPBK%*d(Db%L',Z`P95CeP6Jfrj*hV`P@) U5@*(h[)MEpeUj%*@RVJI%c#N,bF1"1hZ6L3haGd"6eVq#3BN0+M42CP3QBN[-fQ PA,(IIIQr92b(bfmDrb'U&6(r8keB+GE+Y4,'IkKY9,r(IrM@m4mZ)Ii$4jePKDD 2$I%[#[9Ja[IEh[(4`G(21k4jDS-`QVdjeNbP0I6TB)Uf-4af1d63M![4`B4GM)B B9SJY`A8F((iU)d6E1!S`8+T[f+Sr@B0P')hq49b)pN42GMK)c-1Ud3`+EJE+C%* jA+)H+Tr(QE&1DN`*M'aJVj(eRl'13"0b0#aYS(U"$8V(85BZA"5L9dmIM+h$(DV &)b6f@TeT$l2"G,-&PGmUhA!A5%cjU*l)UX8&2`A*I),%2"Md#N)Je00Y8EeAKaR PB!KQ65icMD[r4+DD5EA4aY8MFj34l*98X)%*9Q05pd6PX0%+D$[c40JMJkQe@G8 VkU)FCDTL+k`ak'#8aJI`RZ5L,9'P8XCp-V[dB#`0M8'Y98pR4()ZF&%$cSQM'[$ VbK`cfF()@EQKYYEd4Jl'jS4qm&BYF#*CTJZ(frV6FK%45`iF!$(5%fMVS12i`f9 M1Tk!)aS(3B1`Qk9LXBTNL&p'!ipEY5)jCq*F([,F%)VKC*9U9H@,65E98CI-"iL $)KpHbpDJ!eEU+,)m"HDll%cBF4KM`1G`(Za053T0p$Q&3YiA$S*I+GF`X(3!5VD iXQ+J0FBi6@Q+RrN"1qEVI*DSY9MhNai'`lFi3`Fd+iT&0&GZLl)Abf(+i"5cjEH cPmq#SPV"h$+fl,0Nr,GU*$d@`),p@#ccAk+4CF315c5cP24K#I#B,i4BSS&CXSK r!aJMdF@bCr6rTBeCDSP6C%AI+HIrLI`I4P2la[PrSmTQD40+E"6,TBSTJ[Pr5qA [r0qhcIpl4TX22#$'B3%LE63`$rZBGK,MV)#V28@hK,GiBrklj`01$`bSRT,(F[M 80KZb2PMkY[Q%`@1ShhS!PU'SM`,ETMIpYrLA!kJLbq%MZC%cV-fr#X9,QclTII& $dIc,qFqP(2fYm0p0rYZQ[bAq@q'rQrbhhACYP#J8X5P#IcIjEj[qP[K[KIpZYQh SiRDE%QqLUHI3A"5'SXBiJ'-Ih!,0QT%TlACDY!UBRSJpLJbBJAqf9Dl,#lcGRBi [-cEraNTkeY#eF6fCH@ZNBR2,S0[qmep@kfk$5!dlj*3p0Mai-kBS',(K0ITdmcP ffcR"f+M)(&XB6*6(qFHJ&A'*jpLc)#8QZ&f[GQ-%IcM),Dm0GY(hKVQC[m"!h64 q06)83I56rlJ$(dePX*(lbqQDqj4GLL)dQq&P)a8Ef`C$ER2dkU41f1YlD5*XY-F Ze@-A0YUe"`CmI491'4kZid2G"'BY5'DM0@-a-m'hlAkBj&1%SlH&B((@I)fXUjf ,rXUK[jAGJNAVr0&31FhKG@ESDX,fV[0mrP+6!!4PKNTXSpe%`p((&jeqRccQ90X `VEpJGAQAR&S-&%Z3!$433j8$)QV$Dh[FIUZQ81lLhXKk+i&VL`BllNX!Q'[&3Y& Yi'Kj5*S05c1JD4Bm,3&4Lf$Umk(+`j8GHJS%54Mb8160"hM`H[m&4V'"eKQMS$9 m`[*!@YCp#IV[mK[6IjZP#Y*rQq9bV9KMqUrm2Ilc0k6rD0q"p!2"m*MGajZM`Em KjIIIAb2`Ydkl$m,hXi1Mjkp2$`l2IR(b4[()bHKM3cJiNIVTlkrfAD$CLjK$%P1 XU%U1!c&Mb(dc9[0BZ&mGlKqGU+SbVL[(jRH&6djI(ZmrbeNrbN'6i[1V'2kqp1R HNd-DPKd91diUHCLKZNk2pe@jd+BBap,`*XHkQfGKG4[D3%Nia[-EHIVbfIj*,NV -M'4%)*'HdIRalcRTfM1N$!L06Pr3Xb*h#pCjHH4hblPRS"F8YTj6L[8)8ThFH!p UX+mKAL`HM3DMI(imQCS4@I-`43UIJAD(C2dfS,M0F"ch1[RKU21HRISTrfr!e%K b1[V%9da2a,`*ZiV`VA-kXV&%9%(AJ'LZ&3m0C(*4I9G,44,R8'T2Y(f[ZF`YB0* +Se0T30%%5LKX#Z'a2MXB%IY9PkTiP-5KB6DX&Ap)UBh2+5l#19L+4"PJrp$02@J #6Fp-LIVXD%lM4'KZUbNkVmp5#N45*UKNLU&3F(*HRe(AKcaejUkJim+6&#USc2V c'I34DXdf*L@h`4kNm-lYb'Zbe[!j@aQahhipd6-IA!YU)TAe$H$M02'PHHb"Q'$ +R,e`9MBr#piQ",RXkqj2DJ$'X21c!4PhV60j9dp6ih!`K2-TaN`8UCV-dr0kFSY P`F#m(QcJkZbkelrSJJi2K,4Z1k3&2$1mc"[)0G)FZ5`Fpd0G+BD2"+eXS`eUZMP eN32@0R48#!PC'`G*$3eiMhT+$@*+9"8NammJj8h%9$VlU4)"lh,KL1A&0hT%R$b [Ep%jl,%9CGMBrZh"b1HCJAJq$heKd2NQD(L8Qa&*,K5*VempJc6Qd5G$bX0'ljl AkG1lhAFL(ENTGR!8IC+jbrYeQBYmGjJA@CRmapfKEZAPke2X#pGZpbrpFJp5T0X 48CG8aCFkh0rl1a@#`N'1'LZ6qCJEC8h,Z!aiQb01EK$PSG)L(,lF`iN0GmASqlY LR[AcA9kDqM[qp%lPD4HThI[Cd5kbNfJRMN00bqJ1HG`a5SYZa8`kmfFfqS4qMCP hMmbAl#IEI[hmRlZC)2GNpY'MGr9hklYEp4[IcE2A,ekjTXiI2pie(qV[m[L(Pi3 "aG%%YZT[HhrI1cKdrYD2Q,[lLIrQrmUAGSLrcrq998Z)ZrVAVYhAHQqA'U%@aA, pGVch#TIUVpeGDZVqI@lqKedR)XKb@i36`XCmDj4fkK1$e@Jh&3lX!2@HiBM01(U lZmAX*ab@qdE0UQHmQ6Hm[liYd`jX4DCK9R[YVrAeAIB[EQ6V[AcHVRKhB(!,LI) N6bfA-2V%X1L'Zi,458!1LqB++)FPJKUY*FKee%AJ'hI!,1'U-3+bMaf-rpiCJf, [+33%-Yfa'M*9JP[rNR,5&(dRESRAG-i3PqDdlLr+@5YYb#%k+jX+QJd[+r"QDmr [$2Cr(rdI41K"Hk"[QrmVUQkJr+G@,99VPA+aL[DIeBh[mTp[*2raq`i#))c6*2* Cq6"[MZ3R6RQf$1Llq'H435KQ6"L1"KHM4SpM(B2HXHA5FFReS@$"j%YR+0)a4Q, rI6#&Q(4JhfCM+M!#"K('D-T@NEB2LT2[YjAcDVJSBR2k"pZk!@FDmbe#!j!!q#, X($14iD8SXUKaSM@IfS*,@e[!EUIr6SmA@`JcQj'9AerHK"b2@PD&R!m'!SDG)Bh -6lUJ0FH2aT0@Ce#iI+`Ii9Bp[N@1ZApKmM!8Jh%i`%lIR+p'Yr14%hbkFp[Skh' )f,ZM832&*NMC@$b3!#(q04G+%,,1#EZ6Lf,+"fh$)h+-N!#5eff",QVbT[-@im& i"9%-#L,iE3T[V'p8XjbJ0b'68HbHpeGU$dIQHGZR3lHMhZ&XG(iG)"hGHClmeAk !r1M@`5Rqd*QBS8UI6aKD*rSaUSTd`3C08&qVrqK$TMkVdH'(dDG2RhkFjRkFhYc !Vp@FRbjrT*Map"&#NrY9J(L3!,Z8%rXmQ`KKD[UB6X#M0I-Jpb"VibQBCq2-kLT Qrd3DdK6R+*!!fM1[(cd0J@&mEG$E"l(6RAi'2Q96r1V*HE+HN!!fJ0I6'RRH@-+ 4Bfjp,(`NZF0Zp,'*Rl"3B6"Xr$A&b&,3el#G,G,cMff3!%e!BIKJifbN1A,HKm( F"eI1qqKdKIj,(ldhY3Hh"&bN'3#L'$AkX@@!!B`*T(H[AQ@5SYSV%03LFfp"!Jf U'[N)R3EK65F$N!!-0G'@Q9-SLIZ@FCDZre"qPCr[I2@TIZjf#`C0IHD&Z(MLI0K 5R)i0b2cBUZ0@RRFA&'l*`Uf8`LP1cj2Z'l5hSB%ij!J31HQUfGr89jGXXTAH*,J UYe+Dr!C1EC,q0dMMiQ0Rq)hTrp*QZBEjId[PDR@cA#aMrYp5j6[prkhSIlI[J1N -+60&B5FmiT4cMK",`3IcY-$r1fldmph"G"Mph!#a5H%VF!23T*d"NV38`481B#T +SfP0)"280@G1Tr6KL*X-V44rD'!B2&1HCSmc*kb(!5l0T#B8[hEBE9$f+DMIRRD lqEDjNkHJ)-8&MBi'%ILcp)DBHk3('G%`DBSC(4+#K-#[akB)MJ&$[d+Ir8D26(9 +9D$RYpBVQ%Hid354PU'q*Xe#S4$Yihf'8Qa+&JKY8*imD!JbeCd3kHj@#'H*qJ' dDVZSifYmaIQeS)d4M"$6S4@LPrhSaFQcPbFj)Q`TB!@0R%B*-`&E&C!!4[8"0(! e-8F@%1'S-2'Xcrr+r#dErHG"kcmA%Z1VY018a4N8iC!!TaR50)XkN!!N'#ZTTik 'Y`&+@&#'a!p3Ia&+b&MHCF0*F#q[6rE2AVcBHkAE["ir401)4'IQ4DrAk+Fp"lN C$F0eB&QK$#jT&U,!f#F[6mVUqfm(4j9b9MADE[BRhE!RAM@A[ITNrr6XbF(4h[( [CbpH2Y[2`%jP)ISPl!0qk`rSB5jkb5@c0Yl'r&E#TIVlLa04CGT(2Ui9!k-UR[r mapR*kqH'%ia@maFIAIJ1EZ2ii16Tbj4Q4R&[m(jZ-qk0R"0qb6mq1i1rSLZhV'G R,hlE2rlej1`-Ni#IRB&jjpPJ$*CKCfIR-Aa-2VrUp#YPmdfYr,6Iq@$@hST"D4J b!EJep-#Y4(X[QTYRZb-'Hfb!LL($)b5lA!F!9L38A`XJ&rYa5j5qE!@jqRDImGh CiIi4LEX(lBbVNFdEIXjR5A[p(%V4REe4fDS+*lRr1M[DHl'2VC5+jDS$%22QC2r RXihUVf*%4"l"iHJd9iMP1k)BP'L)3YL3!-2f!"TMp0hR4#X`5[,4#d!@frA*eh' 9J-!f2!SGI-5@iPqiT,ha"D`U&VliH'B[1eriqF(K2ULV1rfF+I!FK5e6`L%"lS# 0NffF'4`aA03'MGaf2qh,!8"9,JieE5YF&HX!r*f&GA"Q%&J(JKrc0#%m[+SNZ`S U38'F$2#-8EKkm+BaZQMDTXhRpfrHSK,"l1VZPrX(9mUccYKFZ0HmMqciK4FcS23 9aphLq`aXTNJalRDBM-*6'-BIac[4Mf0N%3"UFK'd`('cV-$JjQ[-kkPGHdT5CLj p&Qk4U+`,Q9V1"d`YM2NQ$B%d!e!"d)!$pN"'%r#!CUI2pZk`+ZI6pKXkh"aC&c0 FaAhra5a32ANrXVMQ&&)kB6aQ4adk,`F$p!A)eSM3hcBdi$M+1&,%"ZpTN!$mB`f TK@b14Bf3!,Gl"'4F'`d'ZS-"j6H1T'&[H-,F+T!!"I,,Al11[AIK4fbNQ(T@"+i ediAS)Y"9aU`(CRjQG'LqCN%@*S*Q3pGY!M2c2"Y%P4r5Qe9XE9A&fJjN6cVi0E5 +id"j'%Z$e0Z,MkMfcCJCJMpc'm+1pL&p9Yc+QTSBQ"IrdJJZ2Y*I,(lII-iUQ9F E35[MCNBpd%0F`arX'YS*Q3e%dKE,X#3UJ!T-Z!*r)4UG`GZjk%ARBKThSlfZQ9( 682+2c+ELarm9M`H&`HMLXC1+Mki9$2R%I8KY0LBB+BfTFS)YQ@33GKF0K85U`Ih Mik1Ad3"#[PpeaNb'BR+l@C!!Xq6j56mMpSYC%`a@Jh5*@q"QSp8DRD&&6peQa6" G2`"j$4Rjf"5hKQRTM06N'HJ(l6BeF!DGbjK@JhDiAYS8#qlED(cZEGHIfGcHT'r Q`!!N6S6,SZr[C"MPMMahE@JYBfCTi'Tm6QQ'I$`HA(5D-Sm8M1[2#iDHJQimY0Q hMhE6kYZ"(JfZ308a%3lqFMbQ%G-mlQ''9cJ,)C!!Z2&Fp1VijHRCmIlH-`1,Hkr 16RlC3`0#((d'&c4Ec0BM15S8cYV'-SB-QMdkKleKI&HAJfkXS080NeC"RH!-8h, "5HD"@cF$LaCq`&3c%rGkhL((LVeT(aB&@rGYIU'6RmK%CJ-m`CSiC-!(q`YIQ+m pZA+,+c0*9qNclkLVZN)"GlXcjeih&ara[ZRd'CQ,#bHiE2#3!-!C)GV(E6T8PBK pZ@X%`DK0J'J[1h@4m"eUEj02+rI`kP+`328"&1lG")U8YSHN%),D$S!5J0IT,hR MI%d5c+HL"FMCX8U@KVQA4UE!%14@j[)aR"5IFM6f!dl9LNi'Smj&TprS#U"6K(Q 'X#X5iA3VH'+l,Kq3!%&h![,-UN,40j,THLY"0[A5XMF"1#Ka#cNF&`-1[$)BhEh b2+$G+D52"X1ica0B(Cf[#[643B"$abS"jd`+LBjQk0r)eqRL)hEJ4S',j2[!3XP 18LRjCJ0NGG5J*ZZjpIRM5D1XH5@)(lGcqMV`+$#FKXJ!i'C#Qd"b*,P*3&SU5NX "+VUM1RhDN69H239`cJ-`3+'-%q(bRibk$$PC$Bb)Iq4cLliH5p(%rIYB[MI%*YE 0qlar+k'9XCi($KSi%f0qbhNDN!$Pca"MiH-hd%%&9$82rP&mB1h5dGMd8dS6ZQR ASfUC$jKG4hQq"2,Xqd0J5bjecQjj"+MYC8jN@ar)e5XeQ"N(FUP6EipCbR@X$jS El&FkDL"&f)QmK2a0[[A@r'V$Vd[i93,k)VpY2K)e85LmKBT4P'p&1kJ2T[(c`lC jk%i[XX&rR*Q$FVTr$1&dXFKP5T&I$$Lmf$XkHhPdq$XAiij&BG5l3,Bm%J*d-)P dTjmK'3a)Al,Zj-%cHB4*0L2j&ejkReU@cfp`&CNY!86mTPamQlK)i!@#a8EN,R@ !-G-QpPGN,!+$bHGTL*!![%qP($6[c(%AaaCpGZQmil"0$hR$5E0YaMdrETF3aJ8 -$kZeI68l$cVBl3F,kel1URZCV%ZeXT`5q%(q!GUjm-25@dJFpD!82M4mci0YH%J %P[PRAjEIKMfA-@HPUbX(X(*2Q)iNeeS6ClMD)CB-TIdJPCB#Mj6hG&!P@FRE%ST $'"YHI'`jkX%`aG5$3Qp+ZY+K"0f%@TJDY!J0'd,*H6qXUa%+)Dh%B"1SI1i`S@l 1(S,2(UUTRc*@0e+FM+,)4*UMF,JZ&qd5UfqR*TH&J%J2*R90A'9GGGCUL25%iQb rKl6'q6c!RETJm$iSDPDb@+G8P'aVceEf'-I`ZbRjelEri%#[Alk2ZIBITA+YA-( i[lALCQQcZPQLN!!!YHrf(pr)rS2h(B`r@)V5LY&dU8A1ab4[&6&XcGIE@(em*D1 2D1r`jjI("kHr[$$IL'+++!cS+ShI0,aU(EbKGA#&ISq"rHaFD1B8rA3`LPdM(21 !B`"a%Z['#',R!4U-qa-bXD1-bqJYC0VqDaT$(01#(-iqT%E(f*!!k)rC'9X(HSb [DY%UL9PlJ$40FE")QBcM,SUc'fk`TR%b2'3TVI!DKMLrC+lA!KI[%ASQ'F)C'aJ hBa*D82TY',DF9a!l96A4',%e#1V33)`-)l8Z5RB!E$0ZR54jaA2Jep5+14d05ZE CYTb!+aS2ifDRc4D#EY'1pjmE3[RSkIk*A-CRmA3bKTcQKi9AKGcUJfI8aJ-RZ$( MHJD`qK`pFD-6fICU`E@c"mk'P$A8m016B@%k,I6MbFl$iI6m)855lE`h%hpSf)# (V8(c)3m9mD2j,NGd!YYS1+hrM5B`Hli,(#i-jDQRf3elm5+HA!jDj"aTPRX`ZME -f,!39EIcYD+ZrC6#pBbLNfB()#Tk0F,e,'e[ECR01MKjFK39mjZPMFhm9UQfNDm TL$Z*@aIa93GL#acVG[Hk&i14B6CkTUeKH6[SGDpP6Z5JRrmY(RIMDqbY8V#GPBZ PI(&MBl1FhjKPb@-H@(Z!RrH2cX",r16XPb"@'bqS01TjY[rNpFr+V+)*KME5EZC Vb2[k%$"L-ZD!(-+3!1(*i4Qka@j#YdqmQcajj[FJ*bUQ+[l3"-m(@F0P&EI0l4m p-bpI2[d98PbXB-TSM$Y&$Z8fbUL09ZfU(Hqr1UZFE9K,#kKSm%jX`0VP-aIZqjA m4M6T!""QbKa,Zfh,Bh5PE0Mi(kEe8T&-,dAMMHKM2"ViCNd4DMI+9*CYZ&3k+e@ f6-0E-aXZPI*3a$Dp1DGT'j-0p2FS8SGii@GGU2$QF2rSjp0IcM!Q`&Y-THf$LB2 !23E%+lD1e6#ldDGL6[pAi[r+r&q&rk[bIcAqV`LHiHP$DZ'3!*iY')f+0*`FMaf $l4[kh$$rECVrYXarfqDr8K(r,q(rCIbrB[kI2E*c@Ld$SM5f'8-leh!qHl(#rf# iQf(hi04khMh$qmChc5f@0R+Pc9aTbe6H-M2E0M-d8kV"M+S`)CL2DEC8K3@TQDE 4A8TGGh#,R)FR%klR-B9Mi*X1L)`B"2KM*PM-cA6H1%I,cjaR-XaUp-HpcQ4L9Fi b,-kd6qEd3@m&M6HH60ZSfB`b@kDEmKSVFN"kNXh#")jdc(TX%q3q'![Ll(cD,N3 CqK$eN!$b14F@qCLF&meFACcbdJBIQclj%V(49#'lmT98ESHi[8!1)VNdMR'p[DY 0bfFb#pEQfF(*+8)!#R+M@UPX3qKKJBkec59I*$JM'#@%Sl0cZ#4R[5HZ&M5@r-' q!0Y3A1UqD@l[k14!q#2h6-1BV+VCM)H6b#Dl%#KQFSD8,YQNRA@Ka"Z'frAb@`H $p0kR2m,Jq5IS@UGKNX$4l1$!l(61Cjc[$f!ad@I1U[Uj'ck@"-X)(kdT%''3!)p M'$Rk#rhaIKPF!5%,6CeHfX$PjDd0*#l+@j[B1D[[)630*UTUJ$aid!GA&+*&-l! (Cj24'@`#Y)8VRZAY5efB&Lk-aA2KXUJJ6!DJpf`-riCjBJJVfc(j)MBiAcI1&VU [)8KE%!BFFZDJiBf#)ZVjQ3VF6P3mf5&""R3QfVhDcVV3Zh`$d'FP+K4-mDfFMrB bYr*N-)6N$R4M332`X&5MN!$HYZ'#Q!'"!md"D)8AHkG2ImQr1$LL6qXPQS[%[3i TNrd6(Lj$drVV,&-%FC0V3pk9(8iX`IhU@a*lHSiV**VQ4Pf[1!ESBN%2-&d0#SQ Q(8#N01lHQD0IBNV#fR-kFY'(kh@Q"5&Y+DaE$)"#"6$FEA*Z%QIpah#m*XTai"b #A34--dS3iPQ,$AHA3L3FZNep+T)C&kR03L,E3I0*-N+(0R6H$dcK2SijP"5filT +0'$ZJh&+'+THii2-UN+hKZ2,C&JRfj+T`5"56l3NlMU,Sea8+Rr6K`XH1H4*AhG A2NPXQT2%Qf(M$NlhMrF16pC,1BX!Fd4,'d*kL8jDB5FYf8Q,1LQ+`2c22U16Fcq 96!"'f@*1%9MFf4-pPd2AdpHkN!!c005X$p4Ydq'!f&DKFUCecRKbJ264K"IG3,0 e@3VHF33hDqM,M"Z(!PNE"c@'Il8'9hfmUQE9b2R9Slh#R*!!36XAF4mJ(r5rXp[ a1l8'[e1D)(Me0Yl*MZ%!0&&h04eIBR#f-f)mG'0iG5*SI2CiaZEDp5dX[c4fK'& c"K0qQHB3&p!%cHbTb5@f'JGJ,QpbV*da!06mibl3jaCpRTHlL,(6198,1R@QQJ5 9#fC0''G"CkidSSl%*1RY'IVX,eJ@DcN&T2`)#$1$cU''HilN4-kD3aM%'N*C"ra ,@Y0KY1aj-c8Sd-r508#SZZ"-Na%r(!D`bA#M"hZ`*6D1mXDKm5&,GX49(4j3FXV Q9(-5#i8H,8ika0`%3Kp!#%5%Ep,Cbp*6`--C2Sj[QQm,6r&iffq(F6r,cLBR))C Tm&AG&JBf4,Ff+8`&R!FRlF'-Dq11U4#hfh(6bRP3C3DN+)`5A9)@$23IY*!!Re" Mpr(-`-Uji4!HPl1K"FIU2rV09[4MT4@YjM+!8Qc9D0R*eRh+cDp`rEcN3&3N!Sm 16ji`l6hJh(-B(`!PM!G(8@-mMNF6&)3k9LMZ$kBAPqEL'[638j!!K05'NkCEbl+ 2TTFcl!0QHj8e5rF2'b(K$!+V`H1-)E@cQBajHam6%[MP5LPP6Nd@LMjq('e4`Dr Le-&!4TR'3-2"-+Dcek8X%*0HMhD"b3G)T#ED($V5CSEMbJqe'$A%ddK&cMR`F(" 6X90U5l#+A*T,iL+(cAVM,ba-G$E0`V"4d*SN4bdCQXcXKaQT8DFcDM6MpqmclR" %hHM(XPQCk-IU"h0!A"KJl-6D`ZlKQQCi`4j(46#q%+YE`b!4TNV(-N&@38r4"mG R+%jDKr$ihBXXMp2CI4p3!Z`!M%Q)3ciX'@`lba`#D%eBa'0feEUmC-`Qjq&jSUa Ek!DS*+,-9DGP"Tk('RPA2Q[EmA)UK"+XR(5A`BP49E-JD!EX4&GjZkI#"S$+`j! !rlQ,dc&Eq1K4**S4&J$UT,UDSS"[$CE8(%0Ud"c%M"K&HZ0bj1ZlGK[c6[)f`dC 265"Yr!YkX2B+0alArq#3!,h$8A-1L%%[Ri3G*,IkMj8Ppm0XaMrNDBTi&[9rV+6 Z6f*h2"T-fjU`&Em[FhG&9T-,*[IM(bYq1fB-eKc9F$GQY8c0r8-j'IKpN!$kQd` MGjk0-Jd`Z$U2IM*iGbFk4m%JqSq-,UE%(#qifVrmKA$J`a,"5#$K2@Kb(M4C&I@ !irF39Tr*Xf8JC-mY*+*NVSFbMNlIb8Q3!-2$d121pUq$@A*Na18*"V%C4i2h-BF 6GU)&JEqp6)6M&A0+Mc3F,rf9k$5+3Nd96ab)Xd34%"V9%eRY5(4LFr+08IH!JhK MQIeeDbqR,KR@'d`5+K!1QM8B6M#1K"@JH$3D,+*h-V5GJ,N$#ZCMdeN,jE!'p') 3&&ad"qH`Y@Er+9i6#QY9h+V@M[IG%M+9JT!!9+"0Y4H[e&0+#cR5VT5qU,+Y15f h%LfhCVEF5V4m2RXBjc`1GjAUSp&V$)G`j6PaCk&3VY@b8IkaNT2LmkfXm+q#9`k HdHX'#m)MU[)SNJ,4I)NH3p4@If9)m5QmI4[Tbm#ehDH'`6%(iRK*j56@-l4PAcF 0rj4%Q$k[Vk0T*j!!ThJ'3[-r3Fe%PTcCh39"G3j%T")l12,a"ha[#4TdSX0BBBf *8('C)V8SSf6,jCTC8BkJ*iaG,*N"dU@VJ6Pki+d)e0&9iaSXc@&abe[9D*fPq"' Dqq"$3fD0"p&9E*X!E%)"[H9+Q*'mY6R(8C85MbI1iQ9(%6)T+jJ["5Zi!,)!G5$ m9-Ur)PcK!`p9f`kUm%8k6%81U%SE-`%*TH3@M""p,3&%VB9!j"8Mm1P@!%3cQJ8 qq&B$$cjkE+l663Vi#m4TIh!9J@m[+('FhJ-a@D[c[Y-LkkK5HFXZ)ml9,aK,BjG I0D!60ZF[A5DaG[R0l-,P!fh2H[5&&p%mAEF,@5Z99l25@j39H8+ZcM+)&1@L@Mj 'S@E+q-Q`-2CkSbF`6hIc`B1h(R$lrL-EjU,6EDPDb@UPTeNY&"qBmPXjhpc@@fY ),UXM9Tj9I9Y8hdk[[VNpZrUQU,kCAReVmlD$a`d)PD8F46AqB(D-XS4IXH6(kU( -l[4BQf+a'1k1e-S#mS)3q&,0+Xd-$HBHp#pL4M1f'6JrKS!BCa@'Fb*X)EV1DQf +98kAr$`&P-e5bQ*D#e,&lLMB%QI*RFhJi#J9F0qZFkdqXm"6`T0H+1SPSPQ$1QV +'$b&,Lf"*"%)VP#@D*G)#K%c)$Z-)SjYihL%jBKNXLrr#M3r"S+Nk+c@VpjC(l" TT$8k%AT),GL4-mIPd(*4(II+aB+bBP34cqR9h[(HkF[M6#H(LZjFK")&*j-%Yf" dGmR!fqa2dHSrqMIeIr6rd9me,*6jj`53!&M`4jC)8"AkQ#mCKQXe4c9@$@,-CQf JNX4fX@J(23MA@""XhFfFhKFmLjbr'CMf-)KE0-ceIL$R#e2k+ETGS-q&EF1k[,0 mPDVNb1%')QTb'q6S'dEX40qXr$1YG-BeXDFYD$GDPBC3#qa+`"c+akA&JdJ"GD- 1N!#UYTcj5NIaAU+c6jpqV%a[F[MljXIaDNjhe@("m-UpHq(c3r$b9N!K8%SYUph dEM0*E5-bIiS1embEB"NR@!iQf*Sa`GEX#6kcC2m5%r5'E$108"C-6CDG-d%c-Cb @k+Ec&ZDMKbjEJ`Q8LlHB`@)MP,P65Dfbc*4N[bQ65QPhQBQ&KSicl9d@(#p4G0j N5M3Cf8[+A$4IqGR68%BeGcdl2pE%d,(P0-MbBbiPaNb"'9LcTd0mK(BiAeeJ4LR 1#0&`r(+Ek+mIAe'3!%k[G@*IH'[HPKR28PA3046+f+bIDria5c&DehdR(FNrKQp 5lZ++350X0",G9q)Bhf*V9SXYe@*VGSZYS-Ace%'b8VmHPNTVm6`FT"-)&qX*NDa m#,6#@6`ijb!r@mJLXNkN1aLmD`$`U"aDSFU+'r+Z-0a8m6"&'812V9ScRFNR255 TZPe!)hK%%6fF10(DZ"MBq%U"hF6!#%JT+AdSi&9$Q3ZQ,+0G,*bGX66Xlc5$mMq d')9)I`RR3-mr(m9r"D+3!$5f399Z,9IjbD&L1Mc`kUVZD,KK13m,9kcNS'B`R0M 38rR(pLb'S)A`DeKZ+S@LX*LiE)aYCSRR&hZ(KrXRTe&T"4F9j-eX[Jh,LRC2C,p X!+iEJaPTHi6qB+"M`(5"@&!aK+Ljq2*!Gqb$Ji`K(5!+dJJd[1X@M4K$LBJd![J 8jNAKN!""3MFHfmU&k$8QZK[lb[!"PM63f2p&m8QXH3+BfJp4%8BF"0M3iQT$p6G fDGpDPAhLK5M-Ik(2I0l9m-CR[NYEqqXTq-&,Uc'L)-hMk6NHVCb)Pbe5FMC-S8j -SCM-DEfkM2[@GYM@*$@8!4N+H)LZK$Bm0FDc0NHB3i`0-03Lf)`51D*ARrCmP+& P-#4`,dHMB%B[Sil9)c)CkI&A`aQR&$)-RLTerckeD!U!()Bqppi#XrFe`"NG*Me m$NH'[4Y0-*Z#!6-8jjVYpfYZM[S)I6NDI2MHjD#Kq!-Q*X!Ap0cPQ((Ra*aH%+f "L(X-EUU'e1R(i-cB!(Fp-a!8(d0V9cB2M4k6fDe4R$G00FklP1XhJmUPGJ2XAZc QN!!24`HpceaRfF5pN!!'eqrQQ9`SXcmbZh#VJ[(+D5Q&3ZeGLM8aVSdTMQJ%PpB CBU!@@Tc(Gb,ifCrQq6Z3!01@E&K#5$9$[KdZLc,,lri%Z"'(@FUCd%!,QQ16HlN j1"YHVafIkCDdFUC4f5C%eC!!-p-(`mlJ6m2mL'rdQFj,+$AqddS4GDJ$-pjpL#K ZK[!HrA[P(Q--1J5PB,"k01pR$L%-hiDp8BB0ded5JXFfjkNcDZ#0%V[fTm'FCNY fScpe`hZBf,e[cXideQF+r,,*2mTY5qVfiM)C'($Am-e+BK6[[f)8h5PIC&Cc+ae bL&A!Xi$HjT5ePC`k*USX"[1hPZqFE0K4ENPc0N0AaYh@'0%f0Ydb&#pjSdebL"r H)%cf'KrHNZN2HYdfcZ&m08D#ZqQME(S-2Z@S31RdVIHDZ"23qZleU4r%@)`#V6! !#11*5aQC@)ZF$99(`@+!E,%bC0cr4UG29ihYY"1RZJSkrf([RKGCSXZ-J9Di9Bm %lB8TamB$q`k$YE*JfMD''FfQh@i#(AVEF%#(D'Np"aF'4YNfhUUiQ8(m1M3)dD- hK6mY21pL85)k26mP6DUMX+Kp88rh3#%1MBSkCXb4U,k2K2q*l%08&,iThLS$k!2 jEhBpm%G4Fq+YR&P21)qiHTIea$f#0k1bc8$fa9!NB@T[iQ@BPE%E00r@*#f4Z5M i)5LT[A@%U8Jl1@jhe'5$-,Bf1#3Lca)BNVLK)Mk@DGN(JkJ,KKq1*eYDNdFm8%+ CjaNlJmb)V4df)$K!F`(kbe"XL9lM@LVLF8V-R#"*QI5Z4F0PE8U)e'")N`0kXeS K#Z-c'JcFVBh!S"EKdYp)8"FNLTIQ"[pP(d,d([baEljU"94IA''AEre9c+Z*Jl* dkl0'LmDblN1%FA"I+2eB`(R@0Z!IjGcDb#YI+ll38-kI1Gk@hf*Khb!'ib0lp!e %J#*`C"ddlD,B!ICjG1LXiHjMXSm&(eEJ,pY%T-QU#AL43rrJ)#lXDKFa4GD9`&2 bTTq(Tf+0fhD"Q5G3CT-@jeY,f6EBY@*lkp4Z%#GXc%ElLLYAPFGbVA8M2T!!Q6q 5)RSdRa#d'-i)BhS"d,BHL&DpI3ab@TH0i6$Zmf9Rd`!C%ZImcc,Hl-01d`,dddE hSS(abNI$UC+j21p3PNXVL2)p%a!d-4-DhqeH)+@#HL9!-Lr!Q)RS&!a"%Ar0jhb q2KXbc%[[m!G%#,(k"USd)kAT50@'SCTKamTeeBE(+*1i"e`[c1*mK0(AClAQTrK @$TU9f,Bb,hV3!9!5d2NBHap2iU%K,)5[bKTUmp%GVM@)ah4qd-Jc5ZYI924MG9h QBESV+VLCH`I"#h@mmP&X%6+Sq!8LcU&$'%Bekr4R8AJdq%X+&p3a$C!!B-"3G!i p&U)-T[5Me+0`F3jNR"lSeVEMir5B*@TJ"**fj`0'"!+II43UM!EiPIbS)3"4+fk JY8$M(3JVU#%8(ceSM"j%J1!QjQ`D)[@AaQKkfANhL&kqQrDQSdC"fc,)#dpkRH+ M(p`PQ-qRS(S0YSN$J#(4Lb'EeK2A4$i[,`U,1(VT'$C4cJSp$MRiZV0H`"'R"GS ,d!i5Kcqb9Ik2VIaMcMcCbd@Ll4`e&m655m'YD%'#G`ki!H!Ad8afJBr@QUkKXEL kihTclMM0qq*Hb@0liqcP[jBeK@ADb(5+Q$V[[B9BfKNK1kS(!bl!k6qR%0e%(f9 Rm(2c@#+"cI(b-XHcLF1`!VeJ,+QF'Bkkfp9dET+aNh`GJY+mkR#Uqa3Q"2jKa"f X*)@%U@kb,)2`(V(1S#K9U+5*C5PIJNLi)eEaK$a5NXa'ZYKDA5,K$*%lF0`*#Pc lk0C$JG9LLfl(iJ(0hcG%MPH'@rY`E-QmNDERDI&a"22JVB[$bBfQK1,6cGK$0NC c-dQ@UCjkS+f9[#X[VEp8G$dq$#"V)*S%IBA3B#di84cj`L*mQpN2KN9'A"KTI!C k,mhMC`4bGmY[q4TH4l+XAGG'M2R5fba*&3Aj"hCmN!$dd"XdLc-2APMfl-+8i8i dUi%UM&-Ej8-DiD'YhhRXM2(d$+fY86Ji1m@hqC*0j@`ICI-Pl6'lDZjj0`Sa9U[ E*`Fh5DqkilRMa3`rJM1SFZ41+0-LY)cdKbk`iI115),!RT8j)RNa1YU'I*ajhC9 XFlEaRppfdm9EL!NVFTbi4@Lq4h3%pkdfH"4VddHrf"qEl!AB4#r!c)mIXQCjp)e QlYC-Ch`aDJ`[-reXp*0CRThS3I3JLjhRe'KcN4iK*(fTImhVc*X#!r@U9)0`FjK V`&!EBhmd-FLN$FcBYck,G'qmRLh0[,dSNb5CYlZVaNS8#N$8k21YaD,3fI*)*iV %'M,0"Y3[h%Umk0UD)@AdiN@1&`6cG5H-jTbi+hd8L-q52(k@f(''h$&9Q,L80"& M`N%!QB9L3B`b-dYJ&mVV8,#6*UYcLlSEJD20,@rm$Q[1GFpJ3p'Ri'!)(Qbc+Hi qE9r2,P8ib"aRP06DHDXClcJQ4bZI#8c'(,-@hrAI)NMMjr*Drke6KF-h3dN89%[ &YaEUi0,99i[89Ze#""NK$c-2[#KX*G9UJX-"K6Lq(DK[djJNbb#YVfHN'ZjYY#[ hV9m2+cQpVj)PTFB1eq+bBT*(N!$Nb[!G*b#'i+f`0ah8V-2YhTM`RJ'@e#%8d@6 I4K9CBhSlV)*SNl,2Rh1%`"K)p%lEab,Jf(@1)KJ1$2+&+,'%J%i'2PSJ4Uh&P#Q 'rM#BVJ'ZMJD-Vj!!@Qc'VR2R+A!em(iH5B$A%1&&1`i`(N9P46h4eXcC`)cE392 9h(RVkql"6P6-KJ*0m*3*M'IdCV-E6M&0jJHLT*NL[IaZ0"Cp+&,$kTR0iKI"@D` %6Q)34-h+DFJH)L'c[f(%+p8X!QLe#i4$5ei*CmEeX,aHJV"[pMXGCr#cplii)S$ -@Z68q@#YNBGU@%l)E[JUhNQ5aN*S6Ah$dAf-Y()IC"jT1[lq6(mK455FAh2)e,M 9aEb*jjfq$f%*i'p!ciYZK$P531%b5+9&&l-m83FmH[X'l2XLD)S8%LVTCG)##-+ 4B'1!9EJ*KBNpjJpP1-*!#'50SJ%F@8SV#Heh2Tm4Q"82#9R4[B[M)DFDeCVAe&( 0DDkR0HP2EGB`Gf'a!3L-'[&8,dNdbi1S%2KkP#kd54a4G&k,-Z!&,h#eYbF!)ah 3L'565Jh38AJc(rU'iKqmK*h&jZXAVb#X'4Mq*LiFB"Zmj9iL#dJL[NfIH*V-Mke XMQjBqX*r9Y1$$[9pS"ZrBQMS*0G-bGMJJ8UU)9,"mSE"PR6kb1JK10KYN`Cq+C! !)'h8qZM++-*Kc,9+@p'5C)R`$ABS#`2N@5#A2"m1DHbad(Xi-%ZH@f5M8!#Y&EM mpJGA&PdS`B#3!&iA%RjUAL1I%B4[&SPNMBf9'!`F50%qiSVk6R6S3JiUKlK)HX5 &FLXK-IjD&VdR-0D'mp%d'&llek%86+C9P5B8M$Ca)L)HIU"V6A!I2S#F"b3R",L &09JSVJ0U#&34F@ZQ`-kHM-PB%qqTP)`f%jXYY0+QbdP"TKJ-a$XRiKKB##dp",0 @L0VX3jM+@",6%HA(6BSGAECFb`q,J0FdFR1Y##&*N5JAAGF,#P8!LbQCU#HNT$+ dZ31$'Gh6"P",Qr8`1+GU5GEUp&fYUUjP`#bXjA5SEUl))mLZ5j@YR'UeiVRE0aC )J0X4UJ+)[G9Zie*G6"ZMPPEiHmjPMS5+0Jl3+BfX(Qj(Rr[88U[eG4VQ)c'(qrG GDkkjm&C+bVKZI%S[ek4GK43ZbYUT8drf`YkPT8j[PFD8aTATe`cmf9RGb-XQ'!e R%%L@5mjZ&paqCXr,T3ZBfGEmUT33)+@bhh&rD[aajr1VV488V!C+[b8J0hdICX1 'E(0M8BZcUflQJX2jEC4P((pZjNh9kBICCk6a1PffP%#'pc0j,lP)T(HkPfjr+hf rQ2jRAdbFNLVPPS(&ARXBq3ZQdB8-fYFSAaCalQjhVIe2[U+!,`pLN@+(1FQUe6d MNXp6NhJp#DEf6KGBdP"LmBK`'0+d)'Pj`!%HDF#'DkVJHYTV$3+c41B5r#P-ZkM kjTXbk&`&p+149(+H+l[&64Vd4AIT8Ve98RTEe$MGYSZE,j9bd@Efqfhmc@lM1@) mUjj6b823-`mcBT)D!c6mlMCff@eFcSS`I3q(@C9A0YSGb'$IbrLD`XUGGl&lNYr 45%"iPpCYH2Y+M2j-XF9524Ni'9L+"D88NQ4a&l"ML&(U)#,N#-r3R($+GN4*ICR U,9HpPDKZ*r-%-kUN-1r1QP1V$*9S*(-rilfaXm)%e5ShqfL6M8&GaM*DQa5lZYK XQ1&ZR-0mC%1[G*LA-'PXl@6B2UQfAPZ[qM`@42p05Fh,dTldA96aHR8f*JZ"#Hf 1(H%-*8mef44VE3T4TM%FpJH6Z$!a0-kiFHh-9#TXjqQ5'*,&$9UjG-C40FdN8B# f`32@!4N)$2N'EKAe40XTfKLZc2'iR&HL`PYR2eKdhPc+N!#&9IGfmmh#LE"6)Ab aMR`Ub&&Y*&KCNc0E,i'm&rFheG!%B[`BQ+IMY42"aaql,BUa!Tm#'Dc[+UG92Fi @KC'@a"YINEeKd5aJ3c)%*+GrBQ2-C"Up6P2RqY`4d1hFS"CN&Z2F3$)XQcdj1Z0 45La[JQ#3!1M@c-h6FPmaE*Il9NhRV9b5"8!K0TX#Ce*`H4)@41#H8DfHCMIRV0f XBXGI"+0'reep&Y[%Yj1rQLc#F$%Vj6+Jql"I#2JUPm,!T!LVMFpA98"[ej`KZ'c Z,0qNHIM-2cch49eU&QfB"4ik"MUZG8mTaq5mbf#c%cQh!89C89Gjh1KDe[PVV%1 -cFBBMa5RI49Bc*jKf4$0"!+b4#j)QLV!XmUEYBUU[UGmC@%rL2PJ,iR#`dq22%c !GmhVc&S)d0b8d4c0i6bSr&CD-DXaTf&*V-%Qd"APhT(H,9f`U-&(h+4#JcJ8j-3 5FkN$AX)5,9pDc-@8-8#FL#mb#+Ba@QS3@MicHa3B@A,K-,kQ8)P6'#1feE&fk)d 0CJ,4&0Xj,NlA4MaScj80Z33NGBPJ)08%iACVIGZp%-h@3`P+5JddIaUdYE$'N!$ N-4Q#J-[$@"$8@*8Z&BcDjl#KJZV-bHR,ihd13I,S85QlEVT!B+EFBV"Fe"6QN9N fp%dQqA$G%$RVKQH,lT1Ee2rGp$&-`U,3J&XE8kZ+"V59ZY4lqR3`ETZmIi2F-!C 1Y*hLZrCV48Y%k!+6REJhR&cEL)LmIJ1dV*mE@UK!#4(CDf9Xf2')FR-CL#!rJ%e -"6Q+H`hd[A(A[CPr1ai9A%*&PS$CN!"&L1mF`EVY-YDk843J'i5P*YMb3PbUd)e 2hB[cb4K+N!!4kE"VRZkrI*+0VZ)4GGDL!#`LQ()A-d$E!F%Xd%!'$CGUkjANN!# X3AiVYTi*1$$AE3&F5"(ZdHrcLV)Bi-#6bqpmKh"FEGJN3ikIS[N8K5r(h+TSA8K f9H&mIH*c-jPfjd2F`N52dHQ!(*Jkl@XRH%DPX+'LTVdiM(KL18qrHKJMfLfB0IL #G3R#J$@k"VJA-EhUG*qFlTdH2+8SCqC`qdY+#9jF##)GHc&EAqDXVi23k""2@!9 "a@1,R)&@H')J!a'(2lXfq90Ql(R(Pl6U$2)1kQJVX9&F933D,c6Y6h`HNQ)L$`P EhUUMPJ5N+(-HQcHaC$eKc)-d1$!`$X&`,UGMED5(Cm!cVFj&ZHfD`a*A`#[DDI` *C[Yi!h+a*0`Q-k#8$$i-`jDY4cKj'H,X8E5YBYmZ"4Ch!Bfji"%DV#3!i'C'1,E 0Vd3("-)F'DXphGamal&M(#H*eQ1&)bNMLN2mN!"$hQT!fD9`8qPmqfX!(U)i`58 iG%FF&qAV%4mjPpJ6F*aK(!EGeVqH))'HQ5Xrc`PMq21kP#R"UNT$HA$GR-3*Jfd [%5RH9H$RC@5+!iqQIB`UTUP)Q#ZDclD#G%AGq(hF4IpDFaaAlRR2RdlEKe5'U#, MCUF$qh2HkB0EYQRP(MIKmrMYlNCrR,dqq[ASj@p(@ChM$ir5bVf%aH9mDH5pK@) q)H@l0i1MJ$'NbPkN[!8#h#BN,SZlEmh[(PQ*cqlrAY,8E!DiZ5JhJ@m+CP'qajH '8%F66-$!8,$CREC89,9!q&Q!*Kl5lXf8c$Um4(&hJ-jK9!4MKFMY6Y+1)j,bM+9 %l6L'HrS3K3*h"V%jk,2JiKL4Tai@`0AJ6Zh*KFlXX@H@JEqZ9pBhXimI'hVrRX! 'A-BrmF953F-dCU"JQM%r@3X6lKXHA2-CMNIdia6mVZlG%dK)bJRp%!+KSF,0"&m f'L0"YdLeJc0iY1X3A6B5FjFiEb8p$aLV#L'N+AKb!kE((,kVhF%BbAq3!2cF5fm 6[`PfUNCT--MBAf-aCk4Z,rMR,iqIlTm4PqM3@M!+b'RS'JbESjcB2R+'(FGk95i (bVS5VFjb#$HG9AI`""M+ZZ@*4AXQ0E8T,$JR-5f@$EMZA#GFN!!m'1AK`HRCNpI 2`A(&)1lI-&L"M-R`%LbKVcV%G$3aB$[5FiD$D0,ale(!2h0PB'elHq+&KFRMCA2 K&3NdJ,RlifB$FXPBT!*ZX&IS")*pRFFfUJ%e-TifSHrfY)ZXR*b#@@BF43lF%m" b0FB`44MC"qa9"fS`SdCr$)S1*i`fD(%3J%NK0G$%dZ+6HJ+kJ"jG#45U%S!INij @3TP20U#KE%B,Zr,SI3V")j5*+2VBbd5%NPPQm`e&C0VY-r'LG@X5ZN)d[jq2)UL 61329E*lpIM4[+NP"I9,[#"(eNqV%pG,-V,TDJl2XZLRjjJbCiqHX'fqmAM3PN!" 2N@(Y+S'N3E6RMCDmi5&(i+U-[Q-[jLC4Gf1c#1Cfl3eD8IRr9-Sj4&*!l,("&mG AV*A+dBXRdJ&XHJL46$!Q5Jp69i&BS&+f#9-P1kJM3$XN#fG-KH,Kj-aBD[R9fb3 #'X81-!C!Ap(jB0T[-AfD@-kN&cLf#ZfjZjHS-YfEZF39+#8+j$IAB&*I65VFH'r 6Dd%QX8kr25!0'DE3N!"@m0G@X4`GXh8$m6Y@4+9i4ZHAMbJpCQX'i&3!99,MU#r "[$hGZ6kj,TNeCa#8iRC$h9(FjaDl9cZHcQA!GZ%$CDidRl8!q)jThcB#&h#8J3b 0TSIGh@*@#)m"#aLNrNE31QqYpE62$SBS*#JQdP1Ci6KJYBQSLN%)e@l6XSr"`,3 ALiqNh@eU)pfd9+SF(P[DmCUZISP(U&#a(DTmF[R)Vj,S'SEY`P$jTMME'VAJ0LJ IP@4GTZAFQN(q,rJ-d4FJ6iBjTf(X9`KT$%A-)"raDQG5XNr-V-FL(HJYDlYM0@- ZLPBG21j%J1C`q+[5I%ZYY-jIehblEUL0rH1p3iK#NV#69R(8j6##hA)d`HRakk1 RHkIl*(Kbq0@J("#K6i(elV5CP$%89lZ$@8H4MB(!h-P6L%*H`C4RC04db,GGDVI EQ!8)%b`,RVdF`+6PE!cHRJk("S8M0K3f*qjfd(Dc6XSaRCbj,)qS"4&$@GXkV+[ 5RAj3Q1-R)58``L$4,25$DClK!aQS$Y+0kN4`U$eYqD![V6#EA5ZCcJj$L2PaVrZ "LfeYHYHrY340N!#T(Dl,e(BYcJZBBV`R1RVm@0R&*Dm@Yi8r6N'[3,`ra(Vj[qD 6Z@YD2rkBM+HK3ZERr",R40H*+U9LmG#XY#qa"NmHZXVC-$bJMm2r52EhX!c`*HE ib!rJBGN'!25"BX6pbUm8k"+*dJ8DB0S'FL4Im[6)Ec'lHf2JYFk%-d'*dSl$!1A 5U$&XM"#B$Cqm8Ih9bDrlN!$%(83'[8EcdM$mC(4PUdUQJ-,c3)MZ8DFj`I!mYKA 6B,j%l)qRB,kZ9BdA`-KMkId$+-U9%Zb&*La*BT9*8b*%Ph%3k$S2J63&[5[@FX8 5+[42UEGrQ%"i*J9!&M5*DdVGF,2[IVkA%p6%"fH+,b*&15XD[2N6PB6c`m-e(a1 'T8p+TJbiSMiM3*C`U"G9PF$9RJqb@&0qhA`p1bUQqd&%eqXfk9@AAaQ#4CrV9&) PS62T0KP351mmeQiX5%5,Dd('$E+"IJ`P+-)&43pqE$i!XYNmcLi`&2j-BSCB-l` 9`VYpMZ8jhKAqkNr1@PKq5PF-qiqf8Q9fTV5Rb8#'9$60B*mh,VqE6(YF6cIDpqC 11HSk+j3PEYc8)imqM"'9Y15hj+!P!GP"f'r!,&T3,,dNMZSTIJ)F`FYGemb68M9 &VD9ZPF9EDE2988RQlP2VmrF*9mEZP-q3!,YJRiJlmMZ9h#8hq[RlG#2aX%&kY$( $4QF8rD5L,L5$Xi%r94G#+XD6UpMF'm-B`cXKSN2&#RaD*m3()X9h1bRd[N%YA)r *!R%AVdIPYHi(Xk0FiSPTb!CRA8difaX%V!J,CE59SVZe5YYd(@XL%4&krRbPkjR @%kmpe'JC*,jhm[6J!$ENbF(4h[([eS[2A0`M-#*Z$!f9rk(63eA*$RS3N!#'c!# FPl1@LcmkmeF8X`)a!Nidd$#BDCDhFPE(CX@h5f4$-%dk[XI&!E2'Xk3--N8`91f DFJ4`B@$!V0eFIiB%LM*QXQf-M`JF"!CP6j!!9pN85eUYj9ZFAm[(ZR'h,mlmV+e b@,QACMf$9cj,-9KX16N5&e[I$9*V3GCL(pP$9#j"HRX)CZDlAlkb[9Ub5rHXGD9 4jSQ"K'c'eAiFCF4!(L0rpe2daaR"AE4M2L)XILdadl%)1dM+-6L!e[#T`9LDS0q 3!('0cXAPa,"X9q!R5)BUMDKYcQk-X9TlmH4bd'+G!"$MjN3"*ja03R8*6J+'BM) (S5B!6)#!#h0)SqMDH,`"!FHd'rNRS+RrHlLD*,RT[824*A@F'XCd&&p!--Q4Ehm 8L`$[LQU$0rrN)*[hCBJRI2+BV0'KN!$-fq,p!6%NLBXEaC`8&$F382T+@rdF*(k "G9i1Sr9`AUFHU1dfDI2"P#mPCTqhNCPrj0Q&`b8h0'Z`)DrIS@%iajF$Z)&b2M0 L9XGA$l)PcXbB+08ViVhCJkf`6m$$+1,(BcLrBpM%VI5Zmql0cEIE+`TJLC*[[2r *R'F!S918'$aPdjbXr9DlpMLjIM2hE0BHD+TVm4EF,*dV-md381Ddc-M[kfMNqhm hRElP+cNN$Um$Y54T'Y'%bjNH-0jKAhY1#rKJM-bpMCcB4Y2Bf+#M9L%T"%LB'D- HNe2+,M6'!PQ(YFGLh%R+B1,m3mlDiNl'R%RhHra(RGH9`C@9GD+"Xe8mf#Mh$Zd UAC!!$"me8mPcPc5T$Y*jY@B"1)QfBiba&XdTmRmTi1iX&CD(5-MXX&ED#$4qmk( B5MC0(imHD9Yc5hE(IHdp*imBl2,kZJLiqarIrhf6Ij!!0cPI+T3+PBH8(IEbbrG KYR5M@Shq)bT9Lk9b"0p,'a[ier`V&bZE95La@De9UKZEQqECCUQbq4r4pphjq[m S84GJ24Y0Yc'G$)"GE++'&HAHq@GKZQqC[G`+BUAPaKYfYeX[BaVcP8qI$$GcNrX 849Xh0lRSdbF$#[*VY,NK[jD,9I@fkVqDTNUEZURLPUTE88e&CI@f90Z3!%e&fkU TFPQ2DN0p,@hTTXTU91@DDXS!YLTF#9T@JbaYUkDLLTTqD81h[+hR@pEc,@fTYDV UYeYk[L8pUTUHlkCZUU4'9DlU8HQQ5T8Y[EpkVBUkVQkUY+QE+QVBU1LedY-[e66 NE"IeI2@SDRU#@lUTXPiV[6J'BqRjkP%&8p"E&ZR&+3A!)"B(eLU!($fU8M!U2B9 b5Bp+,dj*!d0*,dijJ"cG9#RBr8eG9fpCT*XUD@!SDFJT"j!!SkGIUZQhqZ#8pH* %qZ#80$#80158DhUYST)Z[+eEVZQ@+hV-&6A"MC)HmkBq[c@pcTXD6pE8U,C+HTh eU+VEHTee8b8eUR*9MbV5G5ZEHRmVZYq5'T9ZUV5KQbV@p2lUY5UV#CCUqZh@YSC R2DUDRZ#@EUUXedS[6K6T(3a'*DB!6HNYLr6LP!*J+1TqbpXDAqQe#NDeTGHUT%G 9dh#PJD'N&kGF$H#US[[91kK"TDbh,0*0P63`P)VE'PrTYG)(Tk5h,0)(Tec@Sp) (Tk5"SD326MQ!R")9hZC4EGEF9jcqT[aD,9ENefK,IDe8G&1PNUUlSCU+DZTYTDM HPMC98p@+(P9*IDeXUUE+96@UkVCU+Y+M+ZY4PF38S19Ye9%N&QF&jUZEdSY6VDQ Q)MfUXKj958qK@YDMdSY6fG"09G5SUYZUU8Jh9GCE9UUT#9E&iL$9TrG)!d1jT#C BeC!!%pA8"#YkbdTE'UldiT6+'Uid-*3ej06diKLQ51q[EPQ[959B+ld,P@!AY[9 mDkUT5%01@8015B0C98q`*#!(4U8KTkc"V+UA,Y*0PI9DPI4D9B1edNe9!K!YDEM 5La0Tb+RSBeA5B&E9Q+'N)DHL)DHX`D`@i"`pUV)H98P2SD+h,0V8r@TJ+1[&U@V )LI5S+RT8*BdCURV,5RTa+KSBbKTbUYX"A'NNSlHXT%'PUNpCT*ZUD'!SDmLTkX@ *p23VqTSSkB06eBY6dJHRSS'KV!p165p1&"(aZ@Q(899I+fAeGA[$I8AF[U(HEZQ QUP[bDkQNQiUf9&1EqQe9098UkP'9pGFYh940MDT8eU1+G0f0,6eI0F&58GF0QYV 56GA+HVjkV5*0R&3dPEZK+EGY6HG80!'jS5Q+E8f,PPe6+cIeZ5)4X[0N`a-R%-% jeL`H&9pSafS@DmJhlJZHDpP!@GD4$86b6@P,0$C69#15AXQT!MU!L'b"qb4E EP'qfC@Xed8"8Nfp8!aAj4MB39H38j*Z5E+#X4L#rP'd$Z'fdBG2QCB4'0@5k"AE NZ&YRKrY(Y''3!*m*0+94fIa8)235rp6iCb2if3aqYY625[$Gi)Rj2a!fG-l2bS, h%F6m[-A25Z*Cq8ir+hHXEpJApE-5I,rVcq,fUVIk@EPPqArrpQTcIeB@[,rYclp GHhMqi4bCXehD01fC-iXrfr46,JBrTH#R22GRT3`4KZIp9'reXj*i9V[6cdVCc2X ,rYbq[Ffj2bX,hYrf*pRHeTeq9ZjBrerIh[DYIPCZ@IlI[,f3!&53!(EH+CjNkk@ h-fQ'QU!2JVXrF9H(GqLL1bR%@aYcIeB-(S[QrQ`Yq0P@2b["pb41[0h25J+(h[B Ra,(PKAKBrmc(b9mICprYCq@11$pj"pbfcTHq!flEhTHq!flcXjAJ#M%'Zr#c-,c &ckHr5+i3cRi1X)8"(V1(CJR0,%aM@i`AbRc10rL-9!NhJi0meAb[QXmeX`iEj[Q @qEi0jjb3!!HdX!&0E#0XQ`,&fH0$l`,&VS+K"L#cL2"C4#JY)U`@%@+,#+p&K0) L(#fDHZ!IJ%FS6`qV9'5$kQeM%4aN4#-dj@[iX,+&4@V8f1B'F%kP)ScIB,J+&#N AXE&+F41+9)[Bf%DT#N@fX,&5ZEb&mmI'bYADjJE1rE[eKl,rQ9+mJ8,cfpVr4*@ 0c4U8f+K9DZ95Z3ElA+f@[p[rI#2l(lI[86k2-82*F60U4,fi0aKGXe'[04XGJ@& pP(QD05GeZjBh[lDLradhq[RZB$U-IQjdZK4l-hSq'!&LDA8`5KFkJh6![r*m#Jm S@XFB8Lh%-4U+8X2p`D66a2a8!*U&b`KY5X%%pRpPrTD0r[1JpCrii'mf62iUP9[ pmQDbm1qC@`p1aM!H6#'%$KXkBhJIp-Q*aj01(leXE$MCL-XHFQEkb2RA""NG9*1 &k2A3Y"(h*k0V6$BrSIVHC`CD3VFRVTlX1XIaEUdK+iC-XIDQCX#A!`U5"LfCMMU Mf!)"1IU#l*)#[+U1%Q@S!iLS"#e"8+9SE,kdA062lM9NdjAHr3-b$XG!5C`Pbkf J,i20ACZ&kF8'#*ZAMAjRh!-lmR'(%b1-$F6``$TM&HE*3-1S-EUQT!qdPKr!@ce B5Ni9)HFR)p$CL-$SB3TGY-hXFBNK"HJjCjIJ),[Z`&bCPH@JK!d`H'pb0%GF(l* FYK%,Hlh'm!'B6&-IIQhCaf)FrA(fmPHScX'TFZE"LrdACr[(abq2IITb#+KUcJa Y*@i`R9SSrZ6emaR&EGR4B0#cNC!!b8`IPjkKb'c@(fI2pNlh9#[5""ZDD`j'SqN 3cEmj3-XIqrrekZAaUCa8"TEIE8+1B6lRM`JCJi1PI6YDJf,XCJAaI2L*bkP&j!U AT4C%DGqQG4IiH!D*b"ZpL2lip!MaD'5Grr"0!E)2RAAke[fT[CD9cA1KaRZ$j,M 8p+!rbBS1P3FN'(6ciAk-2QcSXCBA(QXl+V3'$MmEp[,$VPJPki%M0MGP"K$)B6I bUkLDT*FdFVfZX`B"0F`SE1(&JrMBk"V#%RV"$fG`H,*&0CD2EF`C(@AJVbZ!*Fb ZQ"GX#Ar3ld`bpkP5eJm6b[b`LfI%$FI[TQV"eSB6mIcJk1$NPl4f6Nk2prI-k6T kTM+m8"2lr9B`"Z%-KCh48-JKcTfk(4U5paDa+iJa"A%C%+2$!UH020QYR1NA-C) Ap0p(FkcDhplqZl4C,TC0L9UYZ&NTP8YNredUIUIr[K(parX1e"pmkPa-4d4-m,8 ))**f`rlE%B6Y2MLSR2hap1A4ml0I9[jQ[N'3!&Ah`04"lmjfG$fB4QX3`Val[4E e`F1iB5kVcPp6$&MHlRbJ8-Z3!!,dHXK4@hM@MK!Bjk!a@"HidGP1rSqc9mIlc`r qLf+RVi*RIDXaDUh5)Si[dGhd22lrfI[6aED0C'%!2Aq&TqJSQCL85)UN0PZb2*% PfYC%fbI*m@5l()J%+F3N`3&)DmPN(Z)qlIejDqX&)%K*hV+-G-l%)0"VGA9e9A8 YZPUEkL&je5k-iQ@Mfr'q*!FTR)Ei55%pE-lG00fINk9XJFP[3&AXCrMKP("SEP0 ")IIhC$&EB2)EGf*rj%qNRTP*2@FUTm&S0b5))r40mG6Vb9U)Q,CYr$9CjL4)JT% Y4$mR5ahlXGp2E$(qR3mdQNrUpf5jl(cbAZI8ZKkdE0[i+lr--3CL9UQ#p'UbY*k pqp-TT6FmP0#219rVcZHkmpebIP$!rR"+q1eH%#pMIAPb@ipEm!@EaJIR3cFBiEX Q"bflDDCqHdj"C0k`!IcA(4E`22JDrh9I)mY$lr%KddaR6Trhh&c((5Kk+G*!m5% &ia'pahmcrAId!$VC%A6d#0`[k%Fja#rmN!$p-UHrD)mlT#$)E@14GU(jCZp`Z9j 8rrQ2-UriAE0Ca(KhkJ[pRNXklG-,h5bfDPYiHIKk"aT`QmhVD2Ra@UC8#+qS$df XQm[ejhYR6GSRTZI8@qNrEaJ(TlY(TpL$1`pkkFk$AKM`m"Q`NbEE"p[r2'fmE#+ ,,M)1-l#Zd)G5%lfP$#b8m@+"SfHXVEc9B60''%FJl'--"MK912TSFTf--$-+p5A X2q"&d4"mP4jkDMB'&+NCQH%kF%&`bP40`GH(frYl,`mEZm#EjL1)G1NZ'kcNlY' Edjc9,DV8f%l2GRIFBH([r)A#,aP-D$CEQ0-$rjGjIh4DPqN+NR#l$RlS&bR8-!b !rLSr@9J%GN(@%)-pT+H3!*S8&5rLZKhi,9SJTf2k10Nc0(k+UJUX)5Gl$"*qJ&S AC#+!DH(BYH%!KH@J0F*BNCR&"h4qdcMjpM3$*hmil!8YI+AIR,hD1rbfZH1q!JM [T&(Nm+LjqrVJi2[QEQ0RhahS%6!Jck1iKbc0MMXJGZVf3q$-r(0N5ITK3X%d4"q 4-q$R4bIlfiHmY!$$e"[e9&@[9U[9e+!DJ)NmV*2'fHZ63c-`(0Q"IaAfahf*MS% -@$rSle-`5@$qA#j"4N,,5lH[MB2QIZ1laMi[Zl`f@m4C`&4TpCL@%Q0I6brc*(H j*mH+MZ(4jA1*5*%D,ER21d`"-F0[YNm1p`jIEJ"ifq-@`KRlI30lr96e+Ap92ab %A8ae-KlS'*d8XDNe8TAZ$@-8XD$LZ(PqVE"i449H%,)jlde6U,a+4X#4)a-UV9% 4E)KU&ldXG'P-DHSMim3l'-TG92p@lIq`[Lj!F+)EHa,F@66*NN3,!`G`h(Q"%`8 (+ZMF"X@09!bU3JhcPa8XJ"H4%LfD$aT,&Tm8BI!8G5S%E+h9(hqE@CNY'#j@0*m -JQfTaiU)SMrZMAK9-33&C4hb95Hi9'r$AX4%RV3kIGcAdIN[X(@5#NNf`C@234& +H)+JI((T!b-'DdEV'hLLiq31FX%44hfmpIS@+q%)5bRK`T23i'm$YI0LIr[PkGC mqBL2,Pk0VGU+r$6)Zl8qlf&UU&BdjXJj)Cj#-2"Z--!iAV$Tfd%haNMEVRaA)&A K)e38+Y,5p1!B[#LbUR,@DZVJ"HR99,4-GKA-'T8)F5DA+,d1aGa9m(+@`A2$N!$ PC$di`m"'lD$9meR!69*bip%,#T!!VdrmB4b0)TEqq""JZM*a&Kfp+2Ka&fDTm*p FJQ+,&)Uje!4KfSQ!YlLNc,9B5f4NR15,l421XUBj#PJfI%p(0fcY+djreSrDJ-J `E&M3IKmE+JKi%-rE)9!V,N*m#+R@1hkX@4VXV@Jck&'D,SVT`Ie4RB26R8hUQ@+ !5Irf[%1NejRTL$H+R--)F(,Rq(Z5iN(Dle8Z+NS,iZd)Fd#3!"41%Ip`3Ma8NV! TcjFdK+#!CXmPfCIPS#`rdpal[(CkN!!k3ZRG`8&a+QI&k!(68rN3B`63c-I"p[i qc'Ghlr@"a3[J4AHDhc918JZ2`fd#N!"cX3)rkQr6@GcX%HZFq$51,&2&id,QrPB Z1cZ4r'&RF6A$1Iq`[rHmZEZr6hMaKVCaS["h-Ki1)ijYjFj)PjIKhFTedMXHR55 pf"BBije*kS8-PG@fI$IiP!P,8VPiPTUK[U"!'@IlH-pYAk3HLEQB+[lGYUl`RI4 SeM5[+)'aKI4'0B-V"%CQR1E"`L(03jQ*CeJV61Ka98AQLP)IkkT@JTX*J`NS0*X ib'3BY!VYASq(@Nb"*P[P"1BhUeB1I&*c&%4*$lq*H'%QR6G1&iUj--q8F$!L#h4 (&R*"hb"j-VXQ+D4eZceVR"`L'aA%Jhaij1lmQ4A$[UfB+pl)E"f+C0iB!Z)@r'j lXLLqQbL-BdSAG8Bj-3bpl5c05!(9LZ2E1eQCpQclj'AM$15m*R`XHRM)BSXf9Kj '85EG#`GTHQa#NdS2%c8iYK-U9EJ'Ki@NY))8j"+U6Y6"D2"bBmJ*11X6GE4BRD+ 8NYj1Le",1iZ,R1m-6e5m@-Gc")-"dJ%1I@&M5!Y!XU,EDaP)kP$KZdcmVd"5%[, S`[5&@U'5QeP)--M`1fQL0Xd(KJah2h,H)kci2DQLR!pdK8SI5"9Pd`d4kq1-L5* mBF%&9NeY6RbN+brkZ$PP5Y1Umha6e3eZiIGAfpmeQUm2pf"-U1PhU&ebR5`4f`E d6M)HUDM6DBid'kF,MJGK-QTM+9j4,(MDD(cEj%3bEKeCT*XQ[q4[f4e%G8mElXE 8Vc5pUPTHp$3)hM,,Iajd3ii"(R8iUkA+-"cBbXlV%a032km9RE4K'#A%1ZBfdMM FeBh8h8E%+S'5q&&b+p8!ETMBlRQBDa+-jThGTbFXi(!k-4$UN4V9%CHr1e@pF2! @'MHKA6@$`26&lkQ"hmqNphPXXe4Q0#AID6)0$+rIlI[!H!i,lT9)DAkhXAFi2kY -A3V9TjCU$0TB"-!f@F5p'LR0lahQGCDk#H"#pDQPU,1p`eQGS6BIbjaq2lf)Hie !CB&U65h0XIN5,2GmrlC5c8&`b582'lH@4EQ4#lmiZE8`CR-FFHQ6'8e64Qh6mXl 4V*DT,"HEAJM$`@+C&pXcbP"#15bdrhTkUEkI[-9#"c0DSP$%%fY6Rc8(Z32PH4a 2Ah912dC"[l(XfFRc[G[+5N*H,VjlDp18XjX,[lLeEEe%8*D@500ZqKG*MVk5aCh pF!Ir"l(rjH[err[-pKqef[Ukf(r8DQZVp48m*0I@9eFIl$mqPrd(Qe@8biU1ril I-KD4Mr$E)kdZ9-0a$2a&N!"[$+*jANAB9&,r'2HZe40-$S3@)DLBZkZa#2&I"hl m9QhMe6"@*D98%R9'PkJ*ipa9ld*8KchbNh+B2#SC5`TrF!dm"9XGSNkb2qb&U#& 68$Af"k0Ve$`08,FC[%11L45LG18hKJEL",9,&d%2$6j)l8k@)0"QfqrlA93m+Mm 1k@+%'#mbM%fX+DSH*'P,Mc(2,m-*2R@aHlBDK3BalcdmME9LeXa1GbM34VF*CPU a6`"p2iKE)HDN(X,-4(A(DBbai4jbF#'(fBm$Bf!$3%266U6-[HX5-&qN-p@fYeE jU$-3BD-E1)8DQl*%X($KB'+@E!'-l0`jDZi5NjSjD'qb3P#qXekfeI2$2UYr588 H4b-fjqAQd4jAJdpV"bIJiiPf3rQ)"1eaDi569hlVl5#kl!AY,SFPCTY@+3&FCf[ FeaQM*HVlZ65&+4)#J#KGK)`PqmK)DlFaU,'U9p3f!KBc",%pTa(`Y)deACd"l[B "EbPP!0VYA[#k1%!50Ai+8PMi20#jP5C"!A@@+l`&a"J+eD`#p$MS4fKb6IC+2%6 #5m3J'DYVC89S1E(Kj-rCFdVpJJ@qS6ZK+1kkf8Qa`$GqEp`IK*8@GYUkU!6YXFF E9I*6B"CFIm4QdQ)$6MC3fS`+*S2j8'&FA1$Na8kL#LFF5KTV%m(Sdq8#%S[9+Yf ,2&QYklAP+pA1D,LaY041+N5m"Q'V-JK'5h'RKIr$DTA4&@*IJAVR849,LMr@m+2 5l,lqbRZ(#Y5j!0fGb9HqCV$@CUJEFSh0q,IVRm$fGI0'H(@Z[Mh4!Fh[c0ZmZUB aDZZlaXRThY'KQLHkbQi1fLlG81JFLUa**0j(PZA'aLd'Nr58Blk1lkaYQd0b%,$ G'*1J8A,@*-mG!&XLT`&'8hd8k-cT-L)4q54VG$4)Rb5FNX&6HMhJAC%f*&mhq,d ZE)h449rZX-l4KJK2!&`kpLUJpaFk(@N#mU5RlBhYfDBYlRHFVX@Q[af4k3i'4SH *pc"$@c$8&L&X&-qT88K)pBc&ID&Mlrq`118Rb6(f,j**[GXCAVaL2RZqUF@3!,Y *eK["A4FqZMMPp3KRhI,4B*)G$*ccJ#Q1)!#VXhK!!+8PYX*-J"kQcIi,A"kAR'T )f2jN#%#$K3Jkq$,`@aFd6Jh'-fGpr9i5f88'X&0MY$+`FKaDRXdJk+jC&5VGQk, X+cbJ3iSell!K5GJ2!GCm6+&(43H@T"e'HCdEa8)i5$!E*e2!X)ZNp!,'d%2IQM0 a0+'!ai60RK*S$a*-UB&*DLIG34#hd9FKMFeXc8N*`D'99Z`R&m46i2a`BE!Kiac "#m$%`e@5$6ZUX1"BbH0YB8%q4%-Ib''*PA8K'K(*-hUYB$UcM,DYX'#0k99H3r) 6pJe1$&[`B([J!FR8dqpa'2j01dEjVPdSQSPBal2'%M9diM2"QPImi54X0c(kpb6 k[[CUf-aNTK2l+Ia+A*Fr8YSA3cG"LNR8%C,*['k#d`J0cV%40e%mBKqZ@)H6hZD 0'DhZcCJ&ffR3eNiAAihF&+LCLHJQi"5'ijqC`L$J2@2QJ&aTrL4dGAF52(bpqG) 6B$8[6U#IG'dq3%`[J$i"G'qC*-#QPY6KkrepT%A)jp)ARBdJEleC$mY,6a#"EI3 1Q&aF#6LEA8l6M-ALV'*h$ei2l4GP61ABBdKdI*,NJBGLN!"9+I)'NIaNZJ@#j26 DJXZ8q*63QrXIaZ%l,%9-#&X'U+'I5*[LQ))NL4e36*i&@9D6!BPE1dGQK02QXP& 8+[r@KXk*&HZX@TPP*PE*VT0BZSV9d&5[ZN`Mb#E'lj!!SHD-NI+68k+24q1B"4" -#QUfUE1"MI-6VE(q0GaN8dLQS40(ahMB4L$U,8MjA,3rdZ8&N!!imq[#*pI'GK` 0K`,M))k!I4p0YX6L@G[Z(EHYL(h2S,h*aR,(5%B5IJmGq(KC5l+Qc0N)9ZL$#mm Xc@*M6HG-hFBVIq)a*(QC6PA'I+Y((QH6r&@'XjHC'QlA'DqeR*%a-3)B'ADbKQ& a"(Apa1Dp`VD'D)3H)!I3)Bj#q)BXHS[8B&d@1q-Hei"a4heX56M$[Mm!XS(F0N- lGm+MN8pjHB'Qp%'%)("''N6Ze(M#-KU#NI%Bdh5*U@UBmND8XHL-d,alb3N6K%( Lhk%mN3GLd[VMhLJXMbk3!03MM#ci5T-EAH3dGX2P`m([b%#2M&ZHf1U@'0UD'jl DQY+'HCVDN4[QP8rfP'ZVUmYV6-j,a-I5QKUaMDA,&+Qd#IP3i[AieTaBfH[qHG4 6VTPbBUqRd9p'K)aLa4S@`Uc)4)IL,XMGM[BZCD56DG%9'GY3FC,BLI($H3-6AZ$ pbHae50GUZ%X'b,rK0XaX@'h&C5f-$%4T4#RXKrPS0!Z!0ih*faTHmZ6)C+J&Nc[ 6pR5#+al44mF-MFN,XN2)rMPG`m6)!j2R@9+5Qc+i'N*r5)bcfjaXa+`0RX[j@DY aDhUAAJ@ciB@LD*j&e$4bpUGmLFQH$488#BMiU,S5)(A&+CLBDL"@(H,ll8",YR( dkhBFaE9cXhBpRcaTL)44CNjah-C"i'%L)RE@*lX!G!G'0`DH[(HYNG-Y4&D25FB ['KRNDeK0NL@aQC4m9Ec9ESqXVUPGNVbeF0`m2'Uqf(ppqNSZ9jd[apXRCh[Eqr+ jKSeSJLVkNK*0miIQkIH(1e)-j3DN#hMED&Tb[Z1YUI2P"4!bqfACr8*1TRS#+bL `Ek0q$H&,fG,B[R56(0e%pe"!#3[+L&AX#%l%l(52[RAKiNlAqUk54Yd&%9PFlqh `&E3lr-E*bH'4-E%YeiSjlC%6Dk&FGlmjlZ"BEpRpCYh6kGZ+qmekaG+h9IHEU$K -KfY&K0N*(aPdNfI1"!IaPkES,LVU-1M#2Q)V4)Be(HR%"m2@jc[bGi(lc@l"B8$ D956B60PB6jb`X@%DrAD1$Sj2'UHNRmPEQ1H0dl2Qk6%X3JURDpNLNqdmF8(HH,( pHMp6LTCXD5&p8+-YFaCYAZcYRc91dL0`"r$UpBXA"pZ(cD2$rHq0G8"1li!8ffH 0Pprc($-pBm,08G#p6Z%dhA[I!E%PJfJDG*cA0M2@eiII(Kkp1F3"`J#1Si4&&&P ((3r$*$%PiT[T$+Dc$r0!F$c@YVGDrcHTM5*ED+ZZ%Yd'-b!M4p09c1)'FMPSlb' '*BCA45+BiPC,QR&b'd"HTkQ9D2MM1hiZd*)6!`G$"4`r$hZSQ+-$bDLNRkTDT9U TUe[)kVQIK#f(bF(LfZK,`KLMZ,PJl1qFJ4MP!ZS3")SZqiS('`da$P,9m-"*D68 lSSd5hBYQpQb59a`$1LN!mS5NJ#ZPMQ*+BXUa2'#0Q$FNcJRj,!dNEDkUPG#9#jh dLK4dVSikaEAVf"qN+8+@+jdEUiq'mqIA,VTRI6dUaPRCJ0B0N!$KeN5)'ZN-0e5 r*"PKB9-A6B,b252e*&RK@%*FL#EEaHD+`iYBcYb4Pc35DVl@bPCY,8$T3#j395+ Ml%d+(%Cd!Jk!Gd%T08Q@N@MNI5L$VH!j2)096&aGh`5a-`21TC+NEY9CakXdbLI N@e*6AD$r#B[h32'4(hML[N[a9eAj!Q*25S&1NKKU'JZCU#Ki@iAhMSLH`j!![-X j`D6a$b`5!20*Zk664*F($4IU0ZU(5@#Q3k2@SQl+Hd0-`D"hC)b"0JEXL-)!@bY UJ,VVm[&LcU4i"kM"[BUFjbY1LcUaML8'4jS4#$Z6edDD+"CF%PR%pX1"hHlBQYR aZJT)dZ1qhHQ-b',F+ahcX[56,LdKSr&J$#ZF&PM6ZVC+'T4D$dhXHa#MGTYN%@I 1'iiVMVd*X+`JFm5c+-C8DN%-*K0P0lZUFU*BqAKTfES3#5""GSL18EkV6%E4-'' pM-&U6iF%JYp!'Z9mS,DH,kM4GT!0`Bc83#"J`0,U*$FK-&YU61MJf9,NAp'8 "lb*pPmrAYhb*F#eeLT38IXLk)lc5MZ+@+!aalS,GI+`MYi&hYN%Ia!H8UT!!22Q *h(F$TkM")`Z9d#Q24#-biEQS#hdplMXhif9cKH6HX!$pM8H5TYT9Rmh3U,%kYG@ +BJ4"ljVZ[XAG@&S934(Jd@,aV3"Jp[PZh1T41),-Y-K1XN$&8VjDMlKJ8@%*@G( piA3)@@'bH'e%XM-DB9#`!FfDNaUp4Iic(4HA#96(lPf89QjR3DAeJc0eKT23SM1 D9`B")3JKe-24P*(X4C!!'V#DJTTk!F9*F8qI1d4pLAU+De`bF4XRQJ'k$N)Sk"j B[flZ$T!!IV$c&'kQ3B#3!%35KTjaG'VMN!$IT9L1K!N3Ha-,P%3q0qS5[Q(UZ0- CB9m%k1Gm9Q[kPPU*dS558FE+#KHqBI14iI"*b8KESD1$TE%eZdXYc[89XlNac,P MK'r3P,2U*E[#Y23DrG"q`DL&RHAG6+fmHqH'8-&Pe!b+RR4P#MGUVM`pjGlY#CK TNB"mN`+MT0`EA8--di3ZC"U(0kG1B+dY9H9VATm80HDq0,dTF)GVfZ1H[AL01q# S-$`hdh)*"kHj(6UlB%pdIGbie&(IId[f1hEE@bTV+E0$-[TNLA@HhT*$Y%!BG)@ )lNhG3SE&XrU4%T%VD8#h4l`ieE+"rY+$)S@BIBXlZFF1'T2jiR(2dAfY+1p5QLG Fj'lJ%Ndqi-b9)YqP994KEk#X(XZcGj,B131G)'Sf%@`f)DVZP6MG9&$-3ldemCM -S')4k![1RVD)RqpZbe(LqUQA1#TVlm$Z*BJ!PVU3!0#53elXdNdZPP9Cm@*CQ1X PmK2YE*aC@PQPY-b2f"XQG#-eBR,SMc)@*E!UC1&!Y&jEc*QM!b#V3d9QVpXYH0R `MLbF++0i$)0"!bIL8-@1L!bee'XkU9+UZ9%8`Fl$,1lNqKl%%TC5&X,FrPY4bF! [ZcrC2#'eddXm'H-dR,Fr2BF94C18p1dI,j,GBD54c9TIU))Fc*jcl`a8CJa-6Fp T4L*KpU!PDp58'MiFI@9%m94$GprYV0NXQ9h1qic0-CNa38CqJJCBp),CjBiVTF2 8c$ECE#CjHfp6h22b'MVkGXUU)0PhkDD8&fhYE-!ld",0S$l9,+R4kq')8j0c)pY 1PKp%PqpC*Ke4hYc2Z0Aik+EGVXpIN!$B!qh'(QPk,cS!C1AFS&E+4PTS$-LJN4E Fc0fpKJMlk2S-*G%1PqLJ+pbJFC1BbkDT9CL)BhDZ$9@&cCES+K)0PZ`Z-KGTPZq S9QTr5lN"'IT-(NQe1Yp*99+Ee&Mr-2bBJ+AK0jKqJVUfL2jjp%iEL9RP2%!a)6' Vr)aZmI9KTUrdfCKSh-GpE8mJP'T`@GL+Sf$L(TJE'ik3!$$4'ai9`J4EE5E!2Q4 *J+*!q+SE4@hA1%')QA2i8Ef#9UC51&G@YKCT4GV4q(a8XMB04$r)5c(Qdib-'S6 "CQ9UQ0J!"1'!6EFSA!)E+r0CC4E$Kb1q0CSNX[C`)e3Cd2hc!09+'8"-k#A`R$5 ABZD))%eF`Hj(6cQLNRESe#`1#k*SM*HP1REKG-ZHdS`M%brRe(52IfT3&HaaR#' GRYeXa6`P#Cd0V[i1k4iU0%3a1NUC'(Td,kb&1(K["#@XKNUhiN6dhd&N`HC`mFL mZUaZ2MZ1cH+TF3I&"0#A(0f%Sj!!)'X,F6iL,DUqrCCMRqf6k!+B"FX`FFND+KR E9M0VD(`l6&TqM,BEJ%cMJ9ep)j0BV16&JB+XSR%2UiaZV%&'p&09BcR,k*N)Ye0 @XT3E8PQUB''D)Grp"V#j!")!T!)K2Xm&EqY&CN(#a4-(I+jSfe$@6K'PeHSXIFQ ,4LeXa64J&Sc)YNj8L-1J`#&1q("VYYi1c&*T4*LQehBdi&1`iEl+l"4AQ99RbeB S'I3Y[DH'@pq8Lj+Ep$#bc863PUZGP1BN60)4eJYX@1!6j40fVadJSZQM1ZHQU9K +3Df0("K)c`bBV)jA,UH-!`UT519+3mJ8,94#"#ZcVlbdrQ56ECmZ3jB-A4fm89! ')+R&9S+6QaQ@DMdE*VPbjcX"GkSIF#IJ0[0H+QaC-QX)9EUA&MUMGMD-2Uhl,,9 cjFjDCKkD+*T6'+,*QDYN6JYIrY!)AD*Ie3MZ)J`,BHL+-N8[VH0S!i94KG2)94p kMNQ[*M,pU"h#hQbcdG-8`cqIF`i!H`HLAD8ir9c4-DAZU[$@jG["lkcb&N9h@[2 p)AT[p$H`QZpF[IFGYGiD4ZqRpEBT-IkXHQqd)V5DENI,63hG8p0YGmHReh6EcUa hMmCYk5U&h8C")'jc6&FbFLYaN!$bPUAH22#aJ4ZCF[#iM$Pd4S94R+D)0Q2r3bU LpET+q!pH"'Xqj+b#Tfj6-+FYlDBUQ'P$hdA&I*Z#@63ED@c%cD3hHZTXR+&J4JM G4m8m5m'-EAed&E1H%#Z8$2*E9EH$rVRkCQ%GY8lf2,M`hi88)XDd66TVZP4"8c! mb@MMTif-XRSlYKmRGB8lBY(R@mfCF0mQAJZD#36@-p9BXQ3QD,fdh!R#iA$TDif [*3hkNS5XehVAcQT1++JQG91HdYUT9p%PAE1)B*aQ,Bbq4mi3EC2Y+(hSBN5rb1# Rd)$XXUF[ce*bFeU&P,TVQ04#'PPGLPMmX-V)c4`Y9'kL*&&iHHTpNb4*6%3R3C+ RF[)L'A&AG#Q9)Z%UHbGTC4m,%&BQaT(6[B-6H*r0Ee-111R&)l'+Gi+iVQXSXbD 2VpHdL6SME5EY%HYqc*jKNUd`S!V@"*L#k))8J&P#Bee*XLjMK-9Aejd3k)(2l#J F6MC-2Jf+`PqQ6f3kP()Mk#XqUkaBjDM`EYAJmA)lrEFZB%%'8j*CfFeNc'eGS3T K1VUh!M'MVCUZ4BbdbeXa-aK8K'If0j%MV4mJblQ8&cB#V++fa6+HJQ!jfSQ5A6) mF0JAQ!FciSZ(-A&8f3R"BJ%QJ9#[[6MCe0`iedb&TM[dJE8hGaZ@k086*2!ppBD @JL$&Z,2H-!1ZR*XX6p+MaAKF1r3TMe'B8#b@8SEF5)j*[hR(29+k3`i[@JAYU&V 3$$d4',DMT0eZrAf8ida2ph)kM,LR*YErGS@R+#BQ9'9CjH4GP*icVG9Q*dLESL, PHmGTE8eRKSLP-eFXiVKNG(6ZQK$l*RlFD6FhrjT9GA`0EB1!N6PI&(''-Ei)m0) D)V)hV0`U9[p&e,A1E1kRVNdT'XPU-)1$H8V9ZfK8@3mm@kQDSe'GBDkphAlR$e$ L6eYXbcUP3dME)YR!dB#U4!ZeQi0VI-4$J+l8VGE+p6apc064Trl)dpBDIGka!QX mle2$aK5rAcmF%IiqGE6cJp9V%l+M+FZ!j3)R(SClQdT5'*dalYD0KZ,'FXD+4(% K-dVZMk,DGSbU4CPXHI%`QD+MYPkpjbPA#PEPM+C(rR#lFa)P6(5*fDI9k"+*@pI Rqd&T5$),)+G0MQLM$0X0IBpXVPV891kjeM*#S@080kV(P8TYeC!!+eGAQaQefZG ED&IdF`hq5%[8Sf"$jm&),!$6*Z)C*d2YiMTQIDlV*XRh"0!mM)hXA0)AlmEaPCc 8dZXR53cXZ,6N#U`1!)d%51RBJX53!"l#-H(0c39-MVLJqpQUi9!i2`AQ`$"CJNP KKI3IhAdNrK6`,mQNmH5QEHb*0#B*0DaE*hQP`PC!$b`bGTm#VXF9$)0UXYM46-M ld6C&d%CHelFR%+b&JiPNr5&$FQ'VYhBD9E830"S2JZPAffL2&*ME!"TZMMG9Kl4 [j'I'4L51aaCGI1%TDkkB-4J$d`5+me@!!N1-mY8#j#p+`YD83aHUKe&4V&l"aZJ Mm`q('jqJH"`8b*!!44p4`-eKRJHPAS355STkPp-3eEd*'XCL&"D+NbrlJJfMU"d i@Lk4a4FEV96NUB`0b!b6!%k@2"i`P)ffQ5k)H+-a,J4NAU$P9`%DDbCidTbQ5CR *bp3TR4qfk-ila$M3[02-0'JlL$d-TcKQj`ZcMU,GF8&HQBBi"(#fL$$CS#GfKPJ ALC+)QHS"KE+EN!!YK0e%Hf"a&3p(MMd`a6@,KM(EmQLN6KrL(qr1,-YEqHNG%`l BmD1!3G&S*`ld1fk(VN!V(qCk85HH86YrIBM[aD`MIaCVP-lYppiXN[j,j6Pf3XI HVa81@B29pbRYZ-[GCbrJAAad4%YcdBb18!-*NN1'mLhMDc0jEc@"Uj@-&*!!eM8 6%Xqb2LZP&pXDYC'4@dRc1L)TC)bZdf%Y40H3!$)JjR!P5@!#)$K"a&aJ608j&Gf 6`kNJCkk3!&%1BS9d*e'&8SZM4--*Bq"CJ3'5#mjd!f4i2Q#Kc`$2YSNpfAT& 1+XV`,PQ68k6C&$85bBrFVEI0!$$ED4$ljfKBL&*-G%P5@8DKBHHLE@cp$%a#2Ka dL"&cRC%l1YVK&aMl'pH!&BYLm)*05PC80Qrc@keal,HZ0fec,BU2%3`bMI,"3#V iP2ZACKMirYDCLLc@EQ"NbS(+XT@TrC!!NAH6S"HBl&PTELe+i@fpa14`0!P2FBl 5*jNBfQL6RV3E3MK418b(5mr`bF+@D`Y*1kBklS9aSZ9I3J4D28Bk@5pC5X-`dJU 04iDRc812%PrIbVeJ(!f-K2jkL#FFHr4V2PV6J9*+,fV*2cDblBC-SM!cf6ih*ed "%+Lm58cd81Dr5$%ZKM@%*#551a!eZMIA*pLf,2VqL8'4&"dNHY#A&e%[Y9$DCiG C!)bq5PDj13[+aMQZ1r2N))TT)lAdS62e5#IHF1+B6JF6bMZTbGl*MV'S65"5*PS 5V@DDaD*VVSdJpRYSph$0S*DlUBckL0Bk0MVI5H-R+(QHB+U85MiJ2TSIjScc(L- DCijjc2"qY`2DB3dS6UYl,TrLE3(MG6)+"h*,,RSeP'1-R6m'L6GkHSlh+URPA9f %QmM8fGa%Ta1mlCN3qBKp$3-$(6U+iM",P$5PMl@C&lGek9m6b`S0PKdR3YHm4T6 2*$Z)2'0BCaLqA#fBYG%d84-NI3)BFdPB1"hMbl&e9qS`d[G6lU+eakchbKJHCJ9 iXH%N-L'JqrFi(-P0SI8"01bq)rib%f)0!hS4aeGLTMPMD8U$qR4Hf"2B-F8kPA3 VHZH,)4q(*LB0Zf(3Hd&RC1fh5!%589BjkN)Qlq$ZV6Z*r44QUk,6Q-cA5SjrZf1 cbjT3*TiZ!dPi-RCXji`+,EEhTGV"BBBZa,2U!6,E454p'`4$kq3c'DQ!VRc3QSZ MfBiN,VH)J[iSHdr-mHGF0L)V`c(-lNI`,5,FDUNmJ3J5S#T)BF4Y#m[TdR0PS6R iXfT883QRAlUU9Bd'ZmjYK0K2M5kQ36`[5!e&+3li`))PKZmM%b2-eR5hY$q4e&9 (1VEFUeB+*8$5!'aD9C!!#EP-cC*CM%ZiA5FL0[Qd$C&p0XFq`89j'c,Mj9cJm88 pXH@fS#b[6(L[-`9'&0f%0R(*'8R@D9)8H`khEGKVY*!!i+B+6M3aXE%SESTGeD@ 8`Ce#dd-2&Ufq)DCSG*X2ZCVPhFaB9TTN6,5)53U44+bZm2bFp)k'%kS9Z-Bj1#` $#!D-fD0XTjb@3($q-R&5GPNR8m2K6PLFD)Hmc(%JZqDqPePhh0M-9lNU'Lj#R&r UAP385pR4DiH3!0YZM0`%5"piBf59YAHkCR%YTA9FDFThE#FppB,PrE`)'"rb3Z9 mk0f(eSecE9TH&1mqcKh)E6Fh-qiS8N!@Y6K69EkMB'-HCi1Bij*i2K&G8a*V)KS QAq3*XY1dCKeLQNY5T+&!MMP,fY*"i[P*!-6i@Z`Al%'I(S)jAP0BqcZU5!%MG4` lHc(jANT5GdE%QEf2ld#1ii"SEHlQ1j!!F4h)qJh3*0rAG@!'mIR6kf66kc*G+jZ b*8,&)P%+d5h19VhQk&hpV-QQ#8G,A)rCKq5TE+b6+PRGjc6$15dFN4@%D'3FKkD 8KL89XpEfRh%pqUMUh6b03M&MEA*([F[R9,VNfhSaHV66UK(-Z8hhA[U'%LqT@jc `Ql+hbq96HLQ+PIcC6e1fT("h#SNJE4J&h6'"V$hAQ+pbk`j(LkKTSL1lZTqq$BF @c&N$26D,pYR@ALblVANT1B4VNe!bPKb1dXBF*T5!L6Y4e-MG`G!P*)Y**m6rCYP +T1B``L%bMSH4BkZX3iZN$4aT`PQ%baQqd@E++0+-(CZm1FD2H(MT$LFaD4$0DT[ Y*Gr6d-mB@FQQQ@N3PqMm,YU%A[pVifTSlhV5fj!!$eCEG$fAG%MQB`%jhq*NFQf qFR+Xq0FQG8[[HX*'Vj6[P%)"J6!%B)N-bK%RC0B)3%HVEJ@m@cI!4e#H1"CdV[, %B4cH8hQ5ChNq9AeLY5)c9#)Z-j2PfIii+T&CTR`BcKc$YZCDmQ9-q5E,8JBml6E #FC*'dG#DV8YJ9jj)1BT$,ZE%4ck,1$jPf,QfLi8*GdVDDp&`r'+-*Lk%l-PDb&H eZ+C0*E&ra,"0jNZH*fp4G,kX1#3QRLI#bD)RCipd0B!*pP+qTVL1Q#d164f0ED- fT*ZkIBaP#@iGcG+KrPjRhj!!hm#MhB'r5h''2+'5*2(JAp#-Zb0hV(qUSjl9RPm $Z8Yb,`#d#j0Y6p[+S2b)9mNpiLBcp`'k'Yh"!6+J1#,6dX)RN8`M@HU,UBQZ5mS aBR@LYNc%E'&M)$h)60`@(XF9AqLRKX%hAqiJA)8mjHHMUFbqf8KE$IPb(8HKIY& F(E8m0PK$EU)ZkF#dmI%8mbQ,mcbC-FHLR!N[6r`f9+jr(&bq%c,ITCe8"1-2aha +q)A0T9RS#mQ23UThRCTN3QQEf6KQef"E(l4aXJMl!4XRXfXS@2&lECbmAC2'kSq TfhJIY0DJiG#rHDGb,f2@DL@Pk4["5X%ID5IFQkl[ZT%(rUb82GF68NZ+`,A'`IY k3f)(b01a[P4l4*SiJ(LZjhVCM@*rN!$d`p()aL(*TLFjjkJ,J*HS(3U62Q)DKV0 LQ,@LSFh6Qj2JU)*qE4qmb@irQTc8+1ph1(%I$UEr8FiRiE"[FcHccQE#+kF5)UV Zc3ZBmDEGhrc#E2(Z$5cNJ"-FZSN+KMjQQhEI!(ZB-UXi3MYmG*KbXNq'NZ0CDcN aL3eRUq6M"YY)arJe&i)G'NGK2MkIafVcPqIc4H-X5mN`G4*BIr,UMDlDSFU6HG, Zq1DfEN-pkMcLl'iT-fcZ%fUXGHC,kY(&)kfqepE0G*'@dZ(U'V@,HG5r"YSCf#J aa+)UC9ICdBk2ER`h'qjKdV,C'#6*`Q63RC*Yq3aS*M+K6Y5TR-5kQcUR"UX'N`! q8P85$pXK+U0kepbDd40bSf*pQSi4P4k6hL&1qM'Zh"*IHD*k@&4('VAB,hFD!1@ `KF+8PQHb@3i,J'`6`ZiQDK(BbPlJ3Sk43JN`fG1J1`i6[XV!kaqFHU)+'(3@+qU JY&S$`4TieNb%LE["mF,(248RGNhEEKZ+CY+H[9QN3U')JPp%#E*jll`)hB3D"%@ 08SLdEABJd*b3!,aR%6)k(rP@dm[U2V3k*-LAd#S(aJ4,$-4h'#+eMXAE!BJ2"Fi f26THXZEJN!$PSk(4hL`D980k&pXYc1K4XC*hkJDkHp2UBF*lX3`eHQJ$!d`cLrZ FLihdI@)@)LAebeMX+e@(bKBk$0`1qK-6j,Q0a-``$6i#Uk4%a`JLL$fN-ZQd"AC MfM(F+X$4DEQ5@XqmV@"dFM14A2-MZAJqR52VhL6"D'M03!4i1%FR`dRT`qdp5"Q M,4lZ3HcSMP@%"UemX,L5'2$CDGaI`F5%bKkmJUSGjl5C#N$UR1MH*2cia)66&i2 p*"`iZjIQ4dqJCZ*F"0LNZa-h4SQPV-iAl-P0c10`*CSh5*2bNKi[T6qCl&X@JRX dr(#+JC)'0+$*0Q6@Z)h0,&8V92AC+!T9"PDjaVD,5$b"@Xk%0kj+-!P[ECr%K2- 1d(q$lG`Cr!BBHH$AJlSr8,$HL0f%!$41HQS"a668qfkEZKh'm+ic#3chp0!VAkP 8dU,qi&d35m!M+*!!P%`qF)%+#"V'F$ScDjK6@cY9BKLeRSQq`j%(f(LpT,Na(QE &$MJA8*j5Gi(9r3#&IB+S-4Y%L3ZB2-6SpFTm&8VqpH+FPJqD%XD#!pE5LHQRUf) P-JS`UE0N6qP"jZ12+CeS%"!jJcf6"8-D#TNNBGfEET!!#`JU4PZ&DAjUP`L4QNf $j,S%UX+JR1%LBi(EAY[1SH(%C3rcU0RNBD&N"$H5T)eS5@15Z0b$GMRUP2Aa#i[ A$XepLIA!UCMV#`SrP,!aXV0dBZ%bi233H3Y"30),S8HJXq21K2F%TB)eEH8IV+d mK'X48Z+QP1bc!dZlF+#PfiJ3pHILN!$i9T!!ZECr6qbCQ!d!CQ)f1CM#GmHMB2U "TGZb)`d6SqkE(*Sp*j3q)QiC+Gq'jJ)q'j55Nd")10CXH2aTd#BF5`QH*MBD%lc 4KCXqe1Dc2M1XUMABdVBlG#D5m#!lRkkiMDDLHm-I1AC5aF`b`r"SNT10JNB#L40 3h`PNe0*QD0T#8TrcfFKIBT&LBfRM0L24ckE3dB(Q1"ikFmS6L6A5bhI6M$UGCQB *BHj[*eE3-8(@P6M6-DmYMNNlDbM"5H1ZB3)pFSj4bHjK,&Z&Ui&AqL`hSI[P%-K &!NQd(!GLDd@fBBC`Dmj"0c5TFa1(%$C"T1'RedaRNQDdkL&8#R@BS+`b)p&TSr% Y"c`5&f1G#l0L)RFC4KHMa&X'9c3VfE3-5&2lialR6$F4aYJ8CB6jR'(*%iT)0Ee TiCe,*LJpqLpL$Y+hG#b3!0j6Mh06,cL(e('L`aSV+FUK$X*fJ!&#pFN,KiRFCUD AeY`p5l-Z5H6!%#a3d0UCQdm-k"Ii'1H5h5E-L@Hd[8%h($Lb5(SpG5LZI0TD%Tm rDhQFNMpbB@GbZk#9pX3Nb8Y1EddhZidBA9KJh#+pS)hP,,Tq3L9FINMMI`CRE!j @NiK!%)`A4(G@S"iQ,4e3pe(N*5X`aDlZPaLl6aYRaGZ*aLJ!UMCc*KB22J8pi0K 8h0U(NJ5"'%jT'Vcb3EAcqU3iJaN1SXjG3&4M#YmiHN(k(2F1J$,r!)%LNc6A!TA JBTAMCN1BH([@-(dU1V+kCXB!CjhA(AX3P9bP6@DTL"-P)m4d02ET'T52H("lYbE ce49bqCF&9$f1qp1`1Q9HE$#kKrHCr)R9[&',U%6lGU6QlKbMCNI*bG0PBr+"KB* Th&8+*YI*+1J6f%8V-D%TiUZHNM58lP9R4GF8-@[Y4Cjm[C(9k1,f#(5-(q$`(9[ dfl2Dkc#'8kf!NL!Eb)[bfr#*18SRScdA`qMJLSNMBaq'Kh@MmPlEN!#miJ'+YYK 1#$"i,IXXk`PT)MQjQ-@hS"UPG13r4#Rq3Qp+k4Y8eTEX@4R362Ne+rGm&Brj!#6 6dl)E5p*SRCR#39Xr9LX9NJKreQk(XS2Sk*3ShlSqB4&8`MAR4!4TPN51F(d8k`L SfXe$GUA*4DpEaI,EJjcK8MBlFUfRc%kpN!"X2XQfIqGN"dSkN99e!%fk@%FV-`k QLK%AF*H*`qf'[[bcm&9E'[)&*-mka8,9Z-R!ES4H+G4mNj9X"AeGalI+4IA&&K, KS[T9BfbfC9R*6,e0,[kEf%9h&*I$jU)i"$l'lcAT6C&h4J&U6-HI9Y`#N!!S"hr Jc@hB-a9jS1kYk*+$+i6hFHZ1Q$)$6Gb`@Y6JF4b81Gim)%6Ck"BS0L#)XipdmMB dkk0cf)4@e[%XG0*j-`Sh+5!DG$Y@eAR*c'GJ%N*VLeIJ)f+4fbUYjDhiJc9Fl)( I'GbC492IqC6I$jJ*f(mPK-@M%3I+h#MU41`cXV86"HhlV6K+p,h(*@rQP2Z,H%T jDL'9&a(!%m-L[JZ"MdBj3Naa0bJ&r#ha&*ZcdlrIdE[%2HKPN!$Q@J@DED,P!Zk C@eceQZr[*I-K)h$[CDE$`ldYZPp85*EHE94)qRh2H)qT5kT5lR6[ep!pPQ8@81i Gl2,1+r8P+`IFe5P`afc@Thib(EViA+"#aC)UF,'5P('cVCI)P#EUQ#N9LkBlCpl FNY12LkUQRmcIAIYaNFkG9dRM9JTM$,EBLmVmqGI0`26m#cV08m(aC-@hiYCAqQR +`K9-9kAhQ*q,2c)rTrpmS0DGeA-(HfZRR[FPd2![4*e8D2l3I(ffYppm994IIfe I(aieGemI((cIh'hXl"FjD6DjKKLRJ5EEe2q+k0JHpr[AQlpY)RP(XNjRk[Qifld f4*FBjbp45Z[N#Mh+%AYZ'X5KfcpY$3&R6(B2ZZ#Hp$Jk*MHBp)kmFC[J%@L,3bY i"5-meCSMiJ9P"(L45,``!"!0SCV0&TTrNJRSEfCZr#p#SNP,m3SRrRmIp)F(@VP @U9@@Pfl3f,l5qVq2rJGcA&YC8IqRDL[9@PhKlpVD'[e,jUfeY5U8@&fYVYIVkq[ ,m'iG5[kIqVq([drq"lJNkkl+C69#Umq4*+Y$rFqNri9KD5GP3f5)-)j06$*QBDH SDNqHV*EK2ir92`*r81j&ik&kkBFpbU+cS&j`GKlQJbNfMKX`P22cS1m9DMTDTQ' 3!)*$6P+%b&Zj8*jQlEiTI&P8Aqfe[k)AAfVMZhQHiF@mjq86'[UES$C6#!eZd3( ZdG1ch4d[Z-+@b"#!M%Be2D'M8lDYHp6H0)(3p*2ZMlAUcm!DrqV0NmZ+GFkF,fP QeJhkchpe-[#D&aFPD(fqP'*r8hN*H(0aMIR5&)DClR05Ie@Z3HS8iVXRqQ!GL6Q HbV9LDP6T1UP4N8%-e+Kc$9*%j[IK@*!!8Kr,A#2(3!QU8JeVjmSe9VL''&hRMFU DZR+09Gf(Np"21+2j%Y9)*`BXP0Hia[a[3,LpA#dEBZKhh%DKk,&F*$+RHjKZ!T( AT(qhmIce5rL&mK$K'BcK2%S#I+2NUNDr8e9mbfL'k([6e"qfG"%B'L%R)4jJG+( 24klBr'h+S-4i!Xlp0T3VUIQr*6r"Y&9IC$6%l8+YZ1QF4J!5V@ebT#@k@YD"**c 3$"M3KZr,1r5+U8HKb&UE"8G&MHP&!+cjm+6MZi#(YDHjD2LaQ3BYV%rci23P&52 3QMhlD[Zl"U,+c[(h'Lk!4UhKGB%p",4j2bSAU%951bb3!#8i!m,44La)FIl!,[e 383m'a9Rib4QlC'KFY"eC%CPp%4BABFA%Z@"aNFM2hrrqGaf*F4"(G#FUN@Prdl* iZBcYIl&&8MT-Ne!!jp-I&T)Dc+EZc#3pm&VHE1T6CN)[IK&&!#jIi4FBER96rD+ H8MRebq+L)rE6e*2DMlrmM)0,k[#J!D$U#r,PQA`Sbe"qFeH`5[-a#i3UI9QKk5[ ci3X!-hSrb"X'6A0[Ckp2RKrY0*[%%"Fdj`XIRKqGl'mIlX+RS[V2Iba6I(U`[Em 2Q,QlprUJQ1DAQmhPq[1p-kL"@qk8)Qqc[f8la)MTX,Y)MhXfKJf[GMM["N89[i5 6Z4r+rK`%X*1X#bEZ19+2FC!!pVBkf2jRm`hdFdU0ibmNUIZ0laVlY"qr0-3(@2F IGQ#i4cY%"(5rI@SFGV40rddN3E+(Z1kI3"V@9VjPVCa@Sh6m@&U!6cD$MmrqjK5 PKF2ib)dUY2'B!["G"YJ%qC9d`L[1+mC9+ZU0(k1#EF0pDhaFb!F*43VdIal43,6 H58Pf+hM4jPa0j1b-6L'S5VpTi8m-6F!FJ3B-!1hil%69UJLA@R8"*lN&8keq5q9 `rMfL@46DC$L+#HQXri1`*r#"aB0Q)RK+KSBG'%dADffkl`E"*ErlcGEEe(fC0iV qqk1-m'FbAU#V42lU",A(QhHkB#)(Ma3m-+!M`j!!J)9*D-K0L!rC40(+9G3TDUp e3EQi`,@PK"4L'N@j"hNPL48mTH"E"kHl4kID`)$bJ'(8h[!G"PcUMF+4Rj!!*Zl S905aC["N9EZ!([GbBmMfjG&!he2lC+!VekFN4qSJ'*G4r&CIPBK5cfP(ET6)F[[ SG+R13Id23Y344Td4S,h*b%",,)Ybdf,rm)*H1!SEj9L*`Ul%H'AQ0kPE[04LSrC j5fV5L8!fj!$d2JC2)dFRbjKHq-2KY5C6iejARC1EdTBU`)mLpED!Ei5)3fYl(GJ jeS'Kaa(fBAq"*&D[mYiX8C&%mPVk)lY*QASZT#)bqHMlM3YLGLb(ea9!5p`dMRU Qm8'-4f6J5#aji%pj'2[ZUF)!XA5#5QSGXY4H+)b6LiALeeMf#iIZBf8jCe63Jb@ mT9Qe#$,UIY%pQQK`@(D,6HH"I*YYr'a,Ehl6)CEKkVceG0QI+l+,S9-DP&k3!%- 0P"5a3ViTk'j80BJ@#RD'Lm"k,m)5ijXLr,F&lq&e'@B0``GqpYNcYE)Te5aFL1C -$QaamHH+%"-p01G%TYrk6"B#1)(HmK0Dd,K-a'l6bbi2pX(,mbY126Vr"8202+9 6`BQr$iY#K"BEY1[XRZ5rDHLp#%89EdL@KU#d4hc,J%rj!A5PT`fr*TNA'Cm!b-# P5)E)i@#Xpj%l5&0BeYFCXA!0LiYZafkIcQVJeC6YfEEaQhR5$C6,Xf$#brJqj'- l5B*i9+L#&-$V[%'08FJ2M)mblr)mMNl+F$e%#BRed6c-3A2[mGSXYLC08@([PFp "Q#D[(6TKFjN2BUjXJ`HR1bK3%@0PIUQRF!"AUkJ50@dd,jJk+rihpBA`'VlJ[iD [qaK8(FI+&BSkLL$KiY+#@45p(ZRPN!!0+)-Z&(V43#Jkkf#,ll8[hhFd$#(CNEq j1NN!Z&Pi%VEX8P(qXX'e2Nfe`jj[dj!!%9c0[HBX0FZ3!&-l4'`P6%br"MXqkhX ,9c'MP+bU9V8+,"`G6AD&0H4F1+Fi-GjAI0bQPMrcMJrG5D"6@D6HG0U8Z4c#kAC -N!!T&(QXK9Y33Fq%&Rr+$#a-M$iJ6AEGN3ZTQ6(@0&TB,2KJEIA$hmIqQp$rAha qrIrDZU[rAb(prqV+JrlrXqVr,e$rEk*fQBK3%N4ld!QlipJ)lhqX#`#MrhqcIA+ iGrK5iJbb45$l&5a!R3AMP)jCe0bmPaJRPrh1h5`YQG6XdkI0CL3*'jXc*i[@H45 JY++fAI-k'3jC,T-LJ5C3QAU$`8HJZ8JeQJElaVhQS-EQM4U+6Xi[P3P#m$3CYH& pjH*CjLfUC5IIYUQjCiE4idB2MrJ#S2P+p-*dc)SHGK$KLGS6CE9TLlii6CQ*NC, #BEpBDF&j8h9K0*AN%iCe"q9G8D13!$-d*VA"5jS!ir5KP0N*+FJkCekplTp(2Ek ed5U@P+m6R01YLdhl$D69&pXRq'pRFl)'jb`#!FEjPNL0*,F'XQSNMS1i)*!!QRB C41FTM$fiBJ5YPh%j4@N2%i#["@)9f)3@&HjdcLFK15fbRNYbmAdA*KLSC!IP'PF rjHV&PHRFZ@FUdkHIdc91'X$A(l,a!09%S`(0LR"NF)a)$()ScQUKk2C58[32XIK RNGQ!eVP(M13TQUPk1iJZ"k)Li"L0VJdY)d)r%KMkD26ZlT,GaJY@B$S)CGjCpDD $9cV)R41@Qe)ZTZ*)1)V4-%PGAK"9`*R)+0*+8p3*2-i-aAjmE2G*l[H-!RCbc#E VTl[!TfG(*l#8ci(CqKE[KXcVlE1pRHEC5D0aUQVQpHlhKr)1laCC)iM+"f3Ehj) c"VS5B#*TKCLG9RAZ(6B2YXpfALQeR0*rbX[kkQ2GS-i6bZN"*-dR4CjP+m!NeI$ a5H1dFFDhRY@VHK@AI6,AHDIRGr8"S-04Ch!PFjIG3NGd@5J56P$9k)$rk,5jFl6 E80"TYFUhEmU+UPUb*GR5[RDdqA`p&hEJ,G*G%)+hYP5040k#VE#rII+b-G(-cY( "mIB1LX*&cdRi,"GU52[i#+,0[AeiZUIH"YHA88aqN!#!Im%!Y39Y4h0#T+'j!jM F-rS*IVR!#fU9%rc@PK8Y@)D)$GL#&L8Q)[ZDaMY8RZV*-D)[*ErNSPSmK-fcqiq AamGbRq"8lVZeAFf#@E#MdrU8j9V,&RfcGlKFaclIF'cj*k[UDhP1e1&CqME$EHR FEFNXd(IErpa*VGKh"kI&+5fiBhc42$TZ("B'IMr3-6l%hSU#Na6S#j*)qPC5mrh ceYCDG4kH@U1VV@68amHidprUK&Iif)q6VG9DIEkBRI$f`Gl,l5NMUZA1DIYXqf3 [05NI0J``Ap-QYTVEc-(fcY&TUTNca2#c*P5&Ep-D@jrBB!G['LIIRZ,1J!h6E1+ 9A$0+8!IAE*i(q$Mj(XMfFKeqC9"T2!L[!*'d#3F(@T%eYhJVK`Cr&96@3c@a@8U mDU6Z*3fYrP3d''ca2!pTQmh9kQRMC!pS,03rMX0qX(4mXRG`G$SG#9pN'cNl1Mk Y9kH8pR2ATIQm!B95#h1bGiTVj64cefNkl4FQP@e)i)bblGQ%VXefJQG)8DPQjSe ThbAH1hc3bf'A2ZGPpP2JX8cejFlL0D"#CJV8"1r-f9XeEirD`EVQ+QN((PNdXM4 !`aHG4NAcIa`+BK4EpbYY,Q4'Fk-r&m325f9I6(!2NeAQjh-a!i3SGhQ!N4Gc#-[ QUpa,kE6bePeq4k9l5NFK!J@[bC!!28H1,QdpPZ6IB02KKSI%dbfe@URLaG##qMi DZcPh**qM"2SdNFL`eHG4h--fGe3"Sc3NSk"Gj$D3!!IKNE%Y[fEM6Url`%-',5U eG'HB`1'HRV9M8c*Kk#U[RFCG#j5dC*AkJJ5+C$KR#IJ8a4Y5"L(ji$N3e#4*S`4 EYX#'iiI*MrfKI1`2*cjQ6#ki)("KmUiUPKJTQTVTH%DhGqadDTG#DhY*i'`Yejj (fHLIE#05bV2F5EX5TF9C-eBRcU#aRXQf9Tr@8XU%CA*-ELA(VQShp,Z$+%%C0N9 F8LCL'@Np*!Nl23GM$cBj**%X45NZeQ"T-L6h3+LJ+B'%9e5r!R[l"IdZ&R8,"Ib bqCY6l5cf@d(KLSUVJKR#XkeU8CZCU5Xe@H9G6ThEUZ69UFfZdbUd5MNGd6R@+Yj 5peeZjGU8bKNDRB9R$XcbB*)lkIaC64Q[2@+0KS+F[JVDV'k"#'-6FDhSZYrKfa` (2#G#4JU$-jFScQh,h@l+T!PP,LrbQNMIhaLjm3HkBK!A"rG+4+8F+`S,iYY3IXB Kr)Y&md,h`$FUH1McU'`I,d"DPLlmGMXZTY[$)HFe*pFe"DTL@cXlqEl*$CE88(! +r[h"[Y[m,@hc,cUrMhQ2iZMr*9*HTGp22UIqAbeADbY3SPCGAUfZ9pGA8IqrrQ$ rrhRq[P61XQqSJi269)iE%ahhI"cf+!S#D9cJ#mM!3'edX,6cDh9!N5l8FH8I&I9 $1!"5"e*pjBDH[ZNQBD8G221m9JYNZ%kLYT5(6qIii&@dX,6Ef%'M5Fa+$aq@m0r `DJYcjP5%JKdprmHTG8ZZ41HrP)`q6RkKYbNrGQrJ8+3RX5kQ(iBHL,m@P`$f1C! !&[K#K"jeGLRpJj3Rk9EJV9-AIU'jXrf9DJYGZ['(jqfmf0pqHEUP[LVX`+bI&r% "RekFiZ2a5H0&dI13!-REd2kkPH#+G@NBD"&r',,f$BI6`p[eVb4)aEaU5),QP(H rb6Xdlm%bhP5LhMPdS"m,Aa83[%#LjR+Ea(*Z%jil-MY1Q*pT-Z26eJX(Eh@jNLk cK0%Y2(GQd*MjH9YVZQ#UZG*9VIB1m2N+rS-,N!$BIPUp`"p!"piFX-bB3(X"ZpK F-28h&p#%34e44NPAHeMa(+b$&[5pQALKh1!Y@HA#Fl%45f@qDZbFhS#$PP")rlU B9Y`&qd4hHJG-lme&kUQP,1TI@(brX-KqB6#G'M3lB'D$6LY5*YdHE4CU6fqEqcG Rfh"!HZXF2AG2hk96cpRSpaZNPd,dLI9c4h%V*MK%EV+PQe[(pf#EmEpYrq(hZK( PRDf-VNDIMrqVLrh(bKT`IkYVUhAi@PeHHq$r2XYIV@+bmC!!aBA'!G,d)VN"0Z6 -a*P-&p'f&*a0JH+Jia0Ui4#Y+)D*6c%jY!@&Yrr$qVSUl!IpBG!Vra#q8l8RkqY Xh`'m(LBZak`Q%RabMfrc%``,6cb-#BU,XFfm6*)mLFNDS(LYSd0*5$rI#G8D"m1 Hha)M%-qaXLDMD`P!CL),kq"5i[f!+A[$''!6i[ec+bKj%XJ%HYq9Gqcai$MH,0H reGEd#"TpkHQ8mU"8II@a6[2c"Lr'cCL00`h0L6`9102[)$9NcqQ'dc%(NLc&cdB il%'IXGr6hDR#RL4HF$MrN[SAprr)Z-YJcRD+AiM*,H,cF%5f,fl$h,h(jM!5VBU MGc)N5$P#(J)fHLmQMpMR!9%'a260-!)TQh8H!pcSP"Gi2K*B2DlA6Le#YUE1%ik e10SDRDp8&P0R`dTJ2#bUKp'm1)hTb%Eb)jp'61$)M!)e3BqFPikde,"!(ZIR$Uj D`A$%MK1C!((NqSTb&8AVS4YCF@"#jf62jJGP*eI!VfdTKPi[6U$KLf$Ja)!eUA3 jIk+(bFpem%B*q%9qQ$J9$3aZPR-Q`1JZ4",#A$k8AGe$8r&,R%-#f)SK*A@mpJ$ Q'dB8F($rKcGP6'$H9NdpbbDZl1lNcQAhY$'CGP(i53cpGm%'la@mp,D"rDJm8!h *IE6-U3p4S"cC`'qTf[b,c'L8*2NCMcMHT@HL,LjVc*HiSP3(-$,8d4NTcj3d3CP [qX24GBPbYeVk)b(!X*E'06r@Q1D'b(5R`lK+dI+L34FfKq!laD$VNFY4K3QZ(C6 JCq$(V3Z#Si580"e4J,%iD!8$!c@3!'FMVq1r-pFYcXBJ2iPa3[XC"1Ph2Zc*VXP ST(F@KV[QS*UjSi%[[@Z5`$!FpKP4*2Ed8L4Am@f2a'EfR1U5e08F)T5)mKV(er, 4S)(JSI0rBSZM+&*4Mm#LECjmG0V#'&SBqc3*4f1I5GDl!!J5Q5YNak[T9GLl"Ti D''9#5Ha"Y3#EF"%Cb8TZ1QSm)M#H'+CVP@b5%Xr'Xr&cdaNPd2dYFRHNpB@mp+m 60NpceKp1)$KjDDF6)Q"!Z'i`3(+)`8hTq22PQdQH3e2NG%`!&YXC(F(YJ(caL'B 45SRaSJDX11$er*YV&@#N-RB(06QcB"G*!R$Z&3m-hRq(%`Q&EGH#RR5cj[Nm1dh -KIc4hZ20J2Z2)cUQ5iD*EKQaaTc'jU0G1V4rFh+L8FjU`ZTK(,A(,5BXK+@"jjj h441b#`TbeYe1&KBFJKIJhJ@mU,!Q!#1,PVb8Ij%Ce9ZJmL8RM1k9hY8-&'+$i#6 Z$dh3fN1J)m%3&Y+RS2#da@J3A-mC#N83K&9e$%XY5YS-6!",ck8jCQ`1UVM,a8k r'NYSP"e+3XA,`DGTLHP%-J`#8[eK5'5+))dCb`4mY)UZ34`C#91f-MK22GMF86b LI$@8h"#EFXFKF%RNd#@&M,"`-U`!V4e$RPdRM&f+kIF`'0eeCM[-K#AZ4"0@cm3 bS8L,D*9Tjq(KP@SLZpf*PPdMMJjfq3ZZQh"YZS%&fXBaP)N%Hl-2+mF'%V0`m`E h%jX`h$2fN@E#1(SNKcKKF@@9Z1I*K'dbVB1(j!6ckb@8FKSh4#Z3!)3r1,cc#%r pi*,5%Z*)@8Z)hYMd8ZpU!+YAVcLC$61bJZKALPLUT[B`9`IJ&p%9Mi2D`Ri"2M' 4G5L*&DZIBH3ZSNZG)+r0J+hSp%e!+LdbBA[KM9P91L[)1MIJD"0-p#Q+*Q8b%lY 4bN`V"+I&#`CEDqKI%ai1U$RG[BliadDrh#J15$2a)h1+bdFk6U9a-iH+jjNmpKK PPZ++qi,)M&[LRSe6D%8B1i0pmjaJcQLA'Q'!$b5GeNqA-f4U#UMj#HT9SHc8jD$ dP%ClF-h0Q"0CKdfQb834-,$!+m,B"%q&Rf)HQ3C)MVi8qPSLLL1GmfLG`SPZB'r 31,&eA&2m`Re"CC*15%JaEASQc(b*l3Ae4mieE`+aAk@"eM'KKJf3!$hB$ZG-I(J SR2#$XK!Ca$+RMLc4+aNLep$qEjEL))!30NLQ4VMGSJiX5c#k$'5(dZB+!5@JAUS M142NZc,Ik6SP"@N+0bTh,,K!JKBBZa,S!c93%!"L$V!,Rb*ABX44)b58*!m*jr- bMJBHjT[03lQ)%Fj%T8B2H!&e"TX!3&!a,RRZ%+@C!&N82"VmYhcUpU+4KUp**8L !CHT$'mUcZa3&FK%4D!e`UX4IFkTe!k!hL'*f-a&MKG)*mirZSQ@fMJN3M3$J-BY @iVc(`L2&IiEP-mR!a%UCMU[-&XEC)T9RbC'L-3-T`q4c(8Tk`L&C18Bl-REAe$J GVKkaiJL@[1dr),RDL6K0H`Sj,MSTN!$$`6kC`C)9%m8(RN8b4Th(&H[9(kmT`ei +"H-CDTCS5HJ(8pp4*RQV#c%mII$5'L%+2@iM6i)0DEP#i%%5m(,9GNZE1V(FdI6 fB5@[G21(d8J((-"N,(j,%YpLC#2+MeK+)b$J$Q"Ja126&0i3bArp#dB9Jicck"( ()Y+XIPJ"a1+$Xqh58MJPB#(L#,!!30SMFh2H#`*G)e6lU%`C)II1L4&3F1))fq* -i1%LD$m85SQLDeK#hX%!&lS#3Nr+-aRAIAQNUD,%[9f1#N#CBP%XkBFhHNp1SKC T'C!!*RLTUm!ZVK5[MSiYl1-JN!"fBaT+[8CQjVKbc!I8e3(1&J3P2d5Pc8#b`K% #5Up--Mh[k'dTRE-3Sp*FXNB%"A3FDBcSIGiC*d`&6%1)l5BYPr,iQ-*)(!!B0!a NX6Z1L5mQkM"kT%1(Z(`&`a&&E+B9[M4'4%Z$b!!2VFb`RF5()m[J2'[rG+Zm3() q+SprfK3hIL*XJjpST+3%8m+1`lqe9BhUHka902Nk6'YKBPJD`K)c&%2QNHQKXSm 5cQR9-ab4eCL54S[)"@iHc"%GDZQDp8#L4R!ENk%K@G'AYIV8GiIA3IY1Cd3%ING AZebha0bRmC06[h2LqDRf,,!46-3K!-S##jUNf"*+NJbB+0SE@prGplR3SJcCkED )`8KJ'*3*Lc9L4Xq93Siik)-iL2Y-dd!8$dX10qe-AANDdTJJ%8i4Nc3XE!HqjCK 3Fb-lMBjiCd,%rjcVme,SCbb-'"d*Q,"fi'ii))+ScMf$TQ%P@%kMrXk$#p3lN!$ @8ANZ%jmk(%NcALNU,G``MHV%T1,P3eh6*Me[jHPa)Y(JA59SVGQ8G1jM$S1V3dr 4eQB[1FqdM"9j,l�@('J)JDbq[F$H8V5P5J)`)+bLV2R)8i*NVG*V,KDD3C#X' &)+39&ba`F)!,BFCCT[LNDV))#Zm9-Dhq1E"3HTF3&R5MFh6'+9+1(Na3&3e'T)H L4ADfU8BX@@rP'3e#QRr"*"28*Q23J1!M1Pa%3DX)*!CCHH1"M!(V`kbe%I9PK1N 80f"'ed3PIp'Tf!Q0*LJL-Zj)R9h@Q#L!CJl0c[ZlNY3PIZ))C-+TYL2kbFZ+DGD JNd6R9&%H(jb)qae!*,UN'GLGT2Y`k0C!YfU1"Lf[!Ab8YifR(dVNl-P(L!#E3Ba BD'#XAd0h*X[)"D3l62!I%&9Ve8H%D-TlUbp*%)LSi`H@S)YS`0b*(E+[k[mIS1U -9KD)2T!!HU*kG)E#EL'm*PP45r)#U%Hak!5-q+P(Jm%b%Q*6$9q`2C+eB'b9K&R ZeL&Zf1FCQY(`,-p$*c8+5iZ!M3"19(!4kF",LJ'Q-U$6-R1@2ZG%i)+(Z*+dcdM DTS@%R4(l&!95#`TiNR--($fj%LYfb"q!MNSp0pUN1EXJG8DRNGA+C@PD'X&)1L' RS(0)rVZNBJ[Kq,Nj%PlNVSFe8-a&%G0'ZcaL,45IAb!edLdFABHC8a*B'0ahlHK bX-'U$eVhmi"ZmNJST*!!iV"KDe9,5dNX*pA5QMd!SB(Y$9AeRQpJ3,NGq'qY@[9 fk9pidH#(Q[F#(r$65hkSHDrS!FVXm3-mr81HDTkh6qa04X69BJLZP"Q"+M!c+lZ [##1U9UXEDVY8JiHD206dQjUmU@'Cjk8k206N!FZ8RdN[re3&*P"i%i14aH&lcIR qrF4hVi%LJ"cILHBICD3LDa2aYZS'6E"md6BJUirIJ1+iNVkKV%H-AYc(P21Jj*! !@T010Yd543f!imMX-&IJdCKc*Q"!5JNlam,Ek1G5!RMQbJH!5GbAPKSm34D%qJk Y!rq,-0mPi'qS"[`VhAl2"$Upd(IXZ-CFp"9!d8963SSAd!8K"6eJjbrTSFB2K"5 [0&+mdNLa9eVQeIm(21$@Tl@p$2KF-U`9MjIJCfi`4Y()Tic!p@UDVd@QJcBrCG8 CF&"&BF#)[*Ql1Ya`+kBbdfZq0$"FkP%X(*1Z8&[,9($*)jU-Ap'L1JF"#hjiaK, (c,bKI%2,J@ed9Q0DD@k+fmbjF8CVNq00lLh1rA-1bde(P18K@+['5LD4bN6b9E9 +IGA`680NFUd)Ni)*-X)11f#B&!FUa0R8+QYV13fD#XT,(4Y%$'1SZSH#hq#YR-3 KUUEa(!%C+)6c2+DpFXP$kND8GQf3!09`F201a[D8!'AP!G,)1*)jm6YiDc5L+a- 8#LAh%R,&P%ffi+YjdBh-@`k1#`Q[D+qGm0RS2jK040kc(8Ub0i8hiT)cLNAr5Fk Z%p!0@@F8a(EPK@SK5pKZ-pB4Y620-9jLJ$5GcS[@5)*T54CM[YLA%ji&9ChkEdb JKN8(PNeZ*iaaBNX4FNCm!ab)m-Lk0dUlMEbVE!P+bqV+8h46N!!0pD,YG3rmq#d RbI*q`FrIX0eMh,8Q[AdbXId'jYJIK"8i6%G"kk)5Y-I3l)Nf%%U!j2b)PN3r+c3 KqNHPT0LL5'h$ilrqYBeqRmKr!#bfc58&ZIba*)0!fJ93H)lT8qR4)lAAD$63F@D 3!2MLF`96hA1Q$9#--1[IGlKckXXPG4K9e(,*'i,FYEbmAPjH@3B!r1YIZidAqpY R$@0D"5$'rK#0-@rj+5j84e3ad+mep`J(AQFdh&KDDLF9$XB6YLU$B,38GeVi[pU 6e4UDjhd+r`qb"Phq"$CQYrKrV#hA1Ij6VEDf@PZTiDZeHZh"rZpcr&A1AP%NHQ# ejTqSIiaKYf+iTRQ[F[T+(@iI0$abq2LTl!Va5kN)+5Ek%eBjrIl`k2Kdlp6l-3N #Vl+R3c54*ciQTAGXc(kQ'VZ0djf6[H1c[D0$2#0d(8m(9b,ZAN`Le(!F$e'24B3 X0cfKiEQ&b`&H)2%lF!!"YBHMmehB*S98QHp-8Qe`YNlhMA'q,(RXDXR#hLMSaRM mFTkrh$bpT*Rhk)V@LBG2$*E-5r,B1ZVp($9*`GKG&ZNZPjP4Fr1D'#d4(a4N6d$ cS2IX0Hfi5f1#"K2DUq*9pSpG%UJ21NSK4b+YR2TSV+!9J$V@-jN[8[4ReUjiKBj 9&f*KP*ATaP+R(ZlhrH%M9)ai8CcUkTai($k*d(8`bBZeCG+EHhYbpBPhYM%TCYJ `)j@Y%ipk@@lQ!(JX!*SPMMNQ-Bd$d3ai"5k0#dcP4@'3!-!K&a4ejQ1kLF!K-Zc 1R188+`eC8jf`PTC#mL`M(-K`&6!F6ck[81RH&"@I,Tk1EQiMVkA-lAc5%l+Eld6 IaXJ)Be'cFchJ9pK&+a9JI2")C9Y&&T9L39bf'!&3!!m$jqTe&Zb#aR5RPF*F$Q) f3'f#eiV4T)'Y0'`fDP6,MiI-@J!BHFKSffIGQ@I&8d0PDY3DBr#eG)CAJ0f*#CT '-h,MaE&6YrD+6M3f8PrM*-MX3%mhQZ#+D$HD&UVKU"[MQG&5-Rle$cLT*q2#Q8& jBC)kbkNhUV1,US4SL,A8Ym#h`BN,YBkpLa'GpTHAPj9IS"`'`+d!4*EBLQQ8,2e MppXP+,`%i%L@r''iG1bhhJ*$AmEL&I,M`#&HM2Sp'H0a%,[aqdD4'CiUHBkrhV% rlL&,KQBCL5S-qr,icANR#9U9Faa)CIbfQ*i8i1(1mIDK+M$GZ!J!Hi$)8+IEFHX #Ia`')`bUAN662,3(jSYFi0T`aXcH`(mVV6#TM$Xpj1k@KZ2c*4!LHN[Bq&)I*Jr ,XR4qAHE(*8fPc%2j"jM3JTlb04$,3IkNh5P[9`iUkPXB$5RYR[VpYprdr5k`9`M cCqQ*DNX*hIJT,-dP)LC)De&,,0TjJQV+")G8%aPFRKrpA%*p-'$X8N--,)R[@UL !T!hNJ%l%q90J3lIh6irQ[ImR0M-*UU#!(0%bb[l$Z`(1dFdGilG[b-LQmXZ`9aR iL9rT4Zmm5J[INCL)H'0AdJ+&2iB4aH6+M0Xp%DXFXVrRlFAaY5+b0HXL&Gr)SQf V$B"LR)8jSS`!q%Kc@M*d5PXl)qqVR3C-0NhRR'IHi*`,R,cBm3SR!8f)Q(H-#B0 5-%D9A+f5+2jNYHj5Kf4$18X`RB@Z)JZY#Y3p$k[S9FjMcf'`MIp$6S%k&b#h"r1 9TjTB`L@'ThJXT'J#(q&FM`ebXRJc(Y0iZl%r"+%b@4S#NTK@'E3hm,Y-0XUbp3& YYPqI[6Sk1I8Nhj!!)UlHZfXm6P9)bf4&ZSk`)TXU6*A0L[T%3Z@3!0iQBD,2hlD Dpj0bQ*6Q242i'FkRi)Sf-XRBU$0$dfNr"Z&VG%eRr##L8d9E#4Pd43Y8G4(!"T! !G-UNKB%'fcjXjJ$YlN,52*XGE%Lr-lk+GaV`qCmk3GSKhLBMBbJA9#K6McJY"LA jT6A`ZQJh3pU(1($V9aaIQ5#$mBDa45Xr#4&$G2JLl+P[rG&0ZM+I3P`MFH9&i2R S'Y#5YId+d&rNKAD$m5KTdFRS$plU(,DX03SLj-XZ,h!QNV3*08NpM%*0G`XB4"1 MjZJNZQKZ"`[)-fDf4Bk463qEdEEC!m$,'+eddCi)VC&3cm-BmIT`ljqSM-9JP%3 rF&[$B#YUTk*1SRBA-,AN[DkF9Y3Kc3h+l3XjJ!8l!0Lfm+kP%(2CE`DpIQ83AL" C3k6lDCiZP-LiH8!p22J`[VrmhdrD8E*di,m0N!#@9XkAkjp(rPpGT[J26[l(@R9 pVIiJrhqHq!pk`BQ1%VRjdJE6@Pc%1e9iNbI*%M(SkqT)e[bf6d`rl21G#b$$H'X U'Gr'&!U(U+S0eE95@EfbGbUl8D+1)l3l2YD*ARfeA+IV8jZ4"bfYS58b6")KRX* ILE@8El@DdLehF(cdAIR%"dN6M4`a0Jl*bG$3YGb1YbiLe#bJiV-GXKUHJc53!,( 9'&j4Z'%djNM)6320hlj8#E41MJrP0rmN3PVHj4KGE0[)QH%V8,"F6X&NI@fp@Ur 8!1fr)5qP*)MI"FK(%E3MMR[GMY3mAG591heRAf+)CiARPrBXjlYZ0XGL4T(-'"N klXP9m@JNcPpUV90I[)1MhFEq&Xl,#9G",iZUI&cH8H9[9IQ`V-T[iAm`m@99MZ( T(Ib[Sm(JlHaXREGDbh9[IeFrl$hI'L'HlHpQ@[@1YMJkaTI'2M2"L"me'r(MUm* 4dFL-r!-M+Y!6"MZJ"p(%d,1FTr5--6Y)bBfrX1(M6-Z,EXZ,TZ9&hI+Ldr+Ldr, L4-YeD*MFl+PMZEV3ck5Cecp-042q`)a9SJ6SMfKqENDHkQ$4k@$4l@$4l@$4l@! adm'Lf`%DQ'iSp)R`h+!A'bEZ5LXE1f!1ijF!@V3`N!!*,@Y4IE8!dR3U(XD'MG9 bRaCdc)`0#HjbMlT1-!dE3D&eHbb&k5hUN!!D'aaHTRAr&Yb3!"XE0Za%kel"0bM q6'i!MTNGQp!F'lCbkci"+h,kP5!E-rZeLk"rh''kXjXdX6%fh-ZVff0ec'a84mR B-$1q&h4Q0klMQ'`BU,AH-k$*p'iFU'L3!(`!XMXK46C-%+9lE,mE#mqEQG#FdBB 6i-B''EV('0`)+aZZ9Zr1,Ab*"JQN8Qk0M5YhReaRb"3X%VpYqR4`ZS6(Ikh1r[c Xilp"fTN+r'p$8C5P@T(rV4FT%*(5Rh%8F%!@QEPDT$,(Y@,ZDkMVKQ"+4f"+0EL ,[FPa@m`[PJV!P)Qr0+1Yr()H(Kdc)PI0b4Gi!,B,TIPHK$kp)06raj4d(i'pJ'@ Jf%dEhTF%-BVEC*kae3GZrU2+Ie(mZHjrmFih*Ir9DU[V$r,I(dAq@h$qe1[$XmE T@@2AIAZVb",&mea%Ch*"pbk+5d#L@iPmT%MY[+&BkNL`65HI6q#@*bXd[QT$B42 [4I%1e3DA&Vq@#!1ccmKVA(&G($Bi'M(),EV#9Ud'2dd+%IkCDQ"V'5U*UIYPL+k pNEK@6a2!5+p-#6cUUf[IFQM&X!ZYF!V-4!elBlc`lJ5AkYZL'25LBeMEQ!&K*V@ qhiSMJ4L01cZ`pI4%9MkL`#MjRKFA5c0N4`EQd9#dHJ21f0,fBe3l"Z)mMMB"2Em ,3!NUhFVN(#5TKVh[5*P$"B0hB4`0k%lYAHLVH83L!-lfIK-Y'VE+Zbq1MZB9Ah! %E@j,kQ+b#prQXd+3!+,DFX2$*a4)E6Y&`Ql-Id+A%-H[M95rSDSEkR(em9T*eI# KKNpeI+VMdc)q,H06-'T92+MC22[q'0-XBSX(MZTLJklrmAkhT2SPe5UTRLS3*TF N`RG*ak3TmD9l8B6cRLF#0Xe1BKXTq#eD&AM!8CXP8l9+9DaB54JhjRV`L'S@dI# JX%lFN!#hIF+b1V4[m[c4QQQ932QSVXSrU(,IU!B)H-A8J1DKe$aUKH""P9qUXJm Rq[cNd$bM%l$YH3pDJ6q+9J#h3r-9GT(QR(q3!,M%@iDjrkV!CA8PY$$LDNfpVX` S1SU',c(S6[JZE10e35TY$aP2FL#6'#q'0kBT*@bhlk'2Z&2P59A%ADVGUS@!4KL 'aIYS(Zj8DkUf`GDq6hM2pp!ZT$ZkBpM2HfX6FUIc2KU%h1(HAfY`bkc[VbQi!aJ r6$Y`*h5DSK'ibbl)83EFUFXT#S#lG$P9pVp,jBmKpNXrb%G-NIbG%ML@lC1LqbU Y!TMbFDBL)02q$&f!@h+@1Q"fLe1,2LJ&rP6bIrZAch6rZl+q5[&I9pGAPTGVbe@ 8rkXVD`rbrqmNreH81SMDB5H8+p6f,phK8,fV9kV)`EqSU(p8e#j)G4F4L2[,5lA 9T5GVH-&jpmbrAhkNa,r+5fN9b&pRC*8-j%p0DAB`l3R+b558C,86J1LEmTDLJ+8 rF5hS40[@8Tai[f4%D4hZPNjJ&Li*B0U8++4S*Hi!Z#rGAPjhl!r%RTPN+S5Q4N" %6lC2[QmHEjqpSPlh$RIfAqmfq!9k6@1r&4#,PCm30keY[p(bKh3&fSKl5,E6jL+ IFc+Q9J#Yjb0Sj"ca!K04N[rF5G!2b)1*2EVCTIGT-RcfL),j8&62Te[21%jRGi! 49G&bk%YM*F"a!pM#Ph-b`bM2+EiCQdH6RjHG#9fFkrq$jaqaSCp4kH,-IHY[2ch EG&rml@mrlIjMGqrNEcq*+6"8F+&(&G`AYS,S[ekIRB%)Z[*i,G2rGSm5C'03Q*+ %Ic-b+9N4R!I@YJXK$MJ*-R8FQU"*V*VLj6(6,2'+T5E9f[KTR-66CL"I5BEDfGR UYT!!Ap%LqF("VLSIfGp('@A3T+BP8lG,HLp--T9ZFKN1G)30X%Y[#(II8*U)XSk +@RiM!CA,INbjQYr!*Y&@)cqPdcH8hh"Si$+DGN5i3E"q2dc3H-pjkE'+VF@C)9` EhC,9,b#08%[Icl0UBli&c%&R1+p3kl)PhlLClQ#XGpk-pS!62#jb@eeGfYXl2$h EhYrISSpN%K1BE,cXj!IEkH3!Qjb2qc#!bMc&`B!If0@m%pfbaDDXk'5`iCdFE!' liZh[`J)$T2FVUYbl-4SB93D`42$cp0Af581VC6a%PDf-'%leQ6ajU,MaBa@h!(k 54Q8*%'D*-fl$F&T0INhD,RiX6UCAFA+Vk-3UNPA&TP5aH94d%K@le-,bfc`U6K) 9*h1+NcE&jNba#9-m$hA164QFB9NG9P-8#90j5q%p-B,[A'9T&U0CqFPK0CdIa'c q$6VG8(m$i8#N"LXbS2c`&&C+II@0amP9I'(i6bhVrSej!deaSK0XNZlf6Ldcr3d fKFrm1N-CL2DR$J-b#09KaTK%TXq$LZG9MPmG(Ak[8'E6*`pacLKZdNmF,AC6Y-- TI`2R"39![S+c3ElVB44r'SalU[m@cVRXPjbDlRM6090I%!5bciVk9*eSh#dLKr# X-V`B%cej"K!E@2cNS$Ja3I&GQrE9hK[cjr3Fp8B8q84+,96DpM'bMb3!m3qT+,m k8B4q!GjZirK8EH"Q[3alEBb9M'd9[E!c#2kY#Pm9X%#a924d6N"jih(LT2[crd( rk[2`rr@ejE@*qlre"rr22`Vr$iLJUT8R,E(UV+M6B4M!q9"5DdZepD8RMrr-c$p -EKVc$jq`eJ0lp4GNVpMmp2di,(Vh`'(p[K`@,m*(il!XHb4-dEe2EF'+ch0UI`l pAcpTI5llRqAeLI0rEHAKr2rpl(m1`PBFSDZFfP'VP4V&mmE3!VQ'2Rd(BqjVjR2 Ur3mDd'5K5cG+&,RK`BEQ`feS6N[US+4f5QVrMMBdqm6LYAU''4Y%[DJEUI+fpAC jL9`*pBfmf6,`DRi)c1,,a&LlP)qZR-#5jhjEiN8MNh0`5JZ0l%06Gr*$cajYD2D bKEPdM2R,dL!+Pi)P1&'V9lA9DK9q"dXG2mEB%dX`KlFYpS+DRhJj6lT9XSH6M%m )mRpaU!iXm#MP0B9U4dS5BI&$c3qLFM5FGqcTD#TF[[*JMr1AYmG*h6&2jrJqQF' 1h5I[DE56dm"G$AFQUlk[mFjN5hFei*QXq3Q0H()lqd5'2,Pp[Cma6fj6lf[3Np[ BKaVej$Ekm3al*TYr(q1Hb9EZCH!c@IhZ4Mk6GIqkKMjKafM#,@@GX2j"hakhJ$5 c1H9,(Ejm",ZI8URNP0hm5+Br%kdq@2rmZHar4Kp,r,mprX2UK2p2YEVm)2rrI[) r'HA[U(UPHTYVcqMH)RqjrmIalIPpRANN[-6[kX@$Dj`EpU'(PcU1LmI,M*I(VE# F84RPEA40+Hrp0'SC#aH3!)(Tj6kq4$c8[LH62L'!JH8(-I4r`bhN`GAM`GAM`GA M`GAM`GAM!edpbS%VI(emaipbi&Cpm!2jNmYrPjmYrPpYHA9#rUY9(q5r2m,pVi6 Iqbj-8-Q2EYSV)$$Sqf!-#SYjjH+hQ#NMm10H##r&)LNTCSA(!8Q25aelCA`T`Ha q0l&,rAkA[aQB6VX&CR(-LP0A)%jY,bI+A&1q@CElbq`PiS1%p)F+TfI#)mfi8VY EX$fmS2[!D(ZcQVJeh0k-bZmEEfp'NhF0Z$HML8mFF@pfcjm`j0lXMYm[jYlX0Ym hk0lX9MmdkYlXeMpHf,dCrEa2h,dCcGdYm0k-"ZiHH@p')hF,[6HMJE['hTXeNDQ "mj3befU'Y+CLk5RdT9",4kr20Nb"E#0hL+#Re*e#k(&(,QeI1Rhpr26ldl2'`FE 1dH(TdAlMEQ(fFMV-,FJpTU5Z[#j[NEH8rS42lb0a+H@)A2V(JmceCjIrr0&RN[p !kT[drhQ)rrilbRp[r&%,-a*ArBmGqpffR"rCr5jah6(kqqfKhHm@f"dMZ1I(GMH "h-2NSm4a[j5V8dIip8FI0C+l!p[F31lp6PiJpmi`I,b1rkbUmXe`4C9A33+pK"r 4!-"pj3Cb[fbePKq[SCajfHV4dplcV8[%K2)j(YdfS[Y8dA2VB`LH*"&Z@8R[Jb4 $E'ajDjCXQ"VdqmUd,'AD35pqL,4*MD8'rA(#YhpJl2Eh$YcqND1fIf$)pNmL2DU [[GRafMq&j*M6DIVHk'0(D[riBGSrABcfca'Jr50'CrqJd1`I(*IpJi+bIf"%pXm DMThrABCcBATFpXVdf1b9G(cfDCq@rqLKfe0#T625plUGHdC(d4ck'qYBR`qhGAp 3qBm3!@M54qcM&[P[HD@kD[*r9pIA-2rAmZU$r2GCrL4QbGcF2#lm2(SXQh6FFir QjqRee(6Em2f4jcAqf6MlrVJa0hGijRP'rc6hCZp`pqM0+E`kHremEZl4'r6`Irf m!X@KdRH0Ne2XB`k3!'rCmhC!'TQE8r"Yjr9C3jddYRGK,0YRfr!5IkJh*hYR$Fp leGJq2YhlS6&AUkimAPeI+ke8RkcK%)k26Xj1b5PHQ&`ejHqE'TA5XjP@UXkPN!" Y992r[PQQ8MTRil45+fiTM*54@fV9,G@!dbbhe*TEDQm3MZV0R&,Vf9,0[,BHZk@ 1rGM[ji$MQbGZUC-!$AVcS&TeLjd'Spf3!"c!-*HM@ibKhleTp9!SRlT'G5R@MSE "B(UaC5N@a$%)cP1,V8La6QqFA%`[YLV&C[8*aGDN'#@ARejXABT4$)rTaAJ4K0H HAZb*@f`UGY5VEV'Tk&'[CB[PiNHplKDEZ[6eCEIBe+@[Vk5+A3pDq92J94#1GYS 1rDE1Ui$N55Hmc5fQ9f%BKi04CqTZIkb,M8HYk@YDIb,&ZX'XBXY9+CB%`GXCa@S 'N5l$3AYU-EdA4X"Vc@M0l)@S-iYLVCLaMBC6YM`@ie@iDFcD@&"X,EZQaaLKCU+ BV%)`DJ*&EBiSEfp1Dip6T,NqVG-RGV'5k@0EUGV&QP@XjMh`IaRq,flphqIMrfU VkqZ'reZZej!!rk[A(q*rI4lp[`imma4*8(5C9#kHJAM'-8c9hZj*8aJeA"E2r6d R$hZ(,ilQ$SkqDf`rhfqS[B2MebF0YAqd[AYdZ,1p[kpfpdjhYNpfm5[XaaGlD'( &V*qUP@UPj4*Zdq16SphA1fIbaIQ!j8PH2GJqrAEZZp2QLaGlcG4,Yp#FVR*d1[I Gd@N6*2qQX+&%4I%6XDVI[6KVlZl[bb[J@HPYG@jTLD)@BXTZlhRMjGiKP(LqIl6 cVCSrT5"F,m)HR*HGD"ir5!&6T!V-D(@PX6*2,jH@H[kJ1mDmehZlDNY4RZ['S0X ,NiZ5DPhi-6P(EDNh$2Q51KMh4Q%[a%SpMaXfA5MehIEqkiDDaa(X"NNV$LN`b(a *cHE4IkV16cBJ4qCmD@kH0[p%SEd""EVY(IVp!%YK&a1&MZ+`'d)KE((J&+bdHlf *`XGae"kh4VV"(rDK(#c"4,NG$Yk9c*IQiE2f"F0VTHdHc-`IY10)lINYB0*'Se" pV9k'2Bbqqeh8!hL2*YVE$lTqci5R3h$0MP!(,GUXplUeaZ'ZTrmVLrfG(qFMJr4 l&[Z$T1I,'P@[%$P+UPCIV8Y,q,mr%[dIM$j&m-Flh2qZ9V2f[p@9Y3IrcprVrMF RrZ05R&`04VN")0Iq9`*!U[)2F%6#-I)3#2)K%14$)-L(3*!!Rc-3j%1BhSF`[3r 8qB%k2e$Rrmd`[CpErJ0+q[RZIpGA*q@rj3IjlimLrm(1lejLIQ$J+r*P[`*C#*Z 'i*Q6Ar@ZJ56'i6YX+)lkbXdY9r`6Fb1`1kCa)ee+aAcIM'%Da1q4-d`kI'"r(T* !255"HNJ#pC!!"1SK#G4pq03Tr0pJp(qIMIpEUD20hpV+@R9pH@9PEChXrqS2pRq rQrqApi@j&"k-51GG!A,bc-Z%QA!B#`j&mIX&R[LNi5(Fk!eYS*MhMpi`dl+HA*j E!+F%'[pJ&jcE@X[ab2Q3!0&pS+21,DhIdfrRPYBqF4#)1`rL%mD$Z2-B2XM*jrE Q2p$RjrB12T),d1dGIA52S&Zkr!!(S9YD[THrd#eYhGYpk*EflZ90G%YEph3ZZQf Q3[8RrB6ibf#%`GN(Eq%eP1T4+KjS&'8ki1$,X(BEZQ#1Te&h(-*(kYN0G+%lrB2 l#(hN#(kD4lBH3Bj$N!!m)P$N%3Ib`,ppA2f[4Y@2fmGYqYrk#[(rkrAUf[*+G4P HVDmpj(rpc2irKZD)0ir5lM[LQA0mdN#M6Q8X29fl6R(8Q5Kcm(VrE1mBBp!m11J m11Jm11Jm11Jm11Jm11Jm11Mm)INr[apfIDX#(Sk(RdRr@k[6rAqeZVUb[V*5TIK IYI8(rZrck(qhFGR9-,S-iYI(UR"f8$3UBHp,'q),YF1!+m0"PkkH6VG2eBlkEUf bqRKT[9+YUZ2M(Af0(ZGGl6mQ$ij"'mlN4*e8e,Hp)"`%m3LebS))@bTT$BFY85c 6Lm1Mdl0[GejpL`plKfIUk2KXlf$[K`Bq[$c#raih'XIdqT!!dXh+BrUH'GlY(ae 4XC2Ga[(@Bh`b$cY("r#%&kH(f`F0l"8[Ad#8pEhY%c-d'&LCGNL8P2dB[M4jP&[ !JRSRfiHBbL4E,[B(6[iDr&U1q4iAlpDS1$aXd+bKYrh$h0jkEHrN`(`"i6F!0Z6 Iic!Br9@ZDXd(piT@,ji06LQrlkT5m$bkMF0&,GTE@2GSd9N@p'+Q,QI6"AQ&Lh5 aUj0+161c2AQfc[jKRPk'PVc9a#@2FPZ`Plj80"Ld%9jkBUlZjNlG'SLirHDfNGq aU'8F82#ejF6LZ5hT#dXFX+P+bc,Z2H(JJ4M9!EEEcS8rk!El8GGH41($hq'[![q c0N2`l'lU0V[!9IV!(be8IQaGr!c)dlfa[EADUP,C9#-r9Uh1$IA*qJdSaEpN"24 XKd%rc9MF,XdA-lK8fBTqi3k0AZMaIDPfMi#5RDRGaRlMV+(1AZfG!UJ2'aK8N!! -I$L,V[b6B&$pF&4a,TBfTZPClElIQ2M%G'"U98-10QjA04YmRHL&UFc86L`CfEK If,6FZaC,IMEZUifI[$3aC'[M26AlKPMHB@V1lFJGZV0A(IFDQk-$ReJRdrQYDfd 1M)NfEQD2kB&Grb[`riQII#EplmSbj[qXV9DAepCA-"B`X2r9Y3Iqrr2`rkHj#@# -!6$Dl9++cK'`r@K`p2T`ljrfV,CmIYCS&eSj5[UqfVji&`akF'b%kLQqU0JAheb -4j91q-`6+D5%BXA5MJ+TBNepV8la5#5VNd3,"9[!VaXc9AK@1mH[YpBH9jHVjLf CV'lKU@VX8C!!0lrKQk[6R51+E8@e6hGH0AC&BX"6'*kfprG!XS%(N!!c'UjFFAT fFY!iHGQ`(-(Kd4k'@&I(fbF(Te[2MmjHNELb[3-#5f2R@iACcV$R`b-GeU"aFR* dFY,ijcr9Rjjc0h#FbF22rD[9rYI5Hpd''S0%AVJj-Z$0R(eLLSIH)0%Jd'8ScL) bX2,DZh%#2D*&Bp6[5DRBQQ,Q-28hqP)dEH3*U2+Y1MY#@5(&[J[$2B99[lfa0%p Z@Y2ASQ@4r'#AYN6qbfI$H@V-JH-pkH#YA5eR!fc`rL)jhr$-#-!4QUqUTl6cRi) -C@S8[DF221`$$r[!`rieqEmSU9[Z$hjmT[[r@V9Dir[rYAUpKJ8TrXF$rrGlfIm #[p%1BR9dZP4ABr6$85phGP6Kq#AkR(`L4k`FcbXiMBE+a8G9UI$VYRl5'495T56 !-'HYX"NUJ#99jq-3Q!iIH9NBM3k3!-3(CJRIArKad0E[SBdE-[M&XINUl&-F)P- *[P6)@qjl55q)q5L#%(MP@)lJ#"AKZKbU[j0Kd!Sle`K5+9MZhD!,'[b$(3(iZUh @Sb39cpU*2a,e1kUFH0EbHSeGX0l2bF[kGpRUbqrRdrAPqlPdjI`T')pkXhebZ(I iFN2PPIJ5kVQ'XaIK#*-pRSqlL&e$J"63XbVJAd3C3#lmGa35h+i1eLmIIDNZ,p" MjN[eG%ZYi#)!ViMBA#Kh"P%C&L!FP6Zah`r+-R9D+2a'(&Lj(r5,f"6K'I@1H8) 34i*fleTe`LY!*4Q4HNC$iX`L8!kcQD"M$1*Ud*EeA0a+YqlCa2F!3IB)3b`Trp# +4fLTNhB()ama4T%I8X8`e1i@N[JU*9hIBNk8Ur*[,'9qladFEfQNC@mb6Yk,A+X TP2S"0BVNDaEdVk"r9,M'(Vc%aZ%9E"bj)0P#!F!lJj)M2iBH'r[l@qGqF[%riTf fZhGk4Z(QS)6SR[F1Ga[rG(6Jb(b%hA(-5[#&(rhb6EAmj'I4F+H8hMJ"[pH0F$r f+k-V5B+fV'`H*eXr(GYET8)p8NYTjarPf!+L9$"!qLlkmSVm0+mAU(0X4,raNrl bicAi!!q6,e[jCFrp8IBP$Z&GUp,qqpr0Pc!#kK,iI@aR1%bej(bkQ(aETpGjEl2 YM!HMlSfp!8LraZ&RheaL8+LlZajqXlrEG,h%YLSE+1qPhKA9*M4'"dlQbbD-0GG PFFPe@9abKHRrr!IVb-hCSlQjKB8&+bf5!r1,E8$,A38I(LRU)1`Sib'jLIUI`@3 6a#Y3pD0[U5S2VCF%XmSkA9(j6ZK*j[6L,&I*ZI)hk0pQVq&`9U0i("69Xk9fm'j T-!DD9hrfG3fEXh6+Y+Q3!,fp3HaR-fFZ8Q4R6IA9rbG9$5RD4VS'dc1hI,jYYZ[ (QA%1M@jA'@5YXfpVl4DG!ANJNjCJiEq6LJ,aLD4rNQM"A0SK2mFYc)Ph+&hMcIA ITHrSm1'rQmLQP4e1$BimBcmJ!m#&4`0mr"HYkZIHEIdVJG1a2&$P3$e+PRkU,#e e(p'2*DdXQep+PLS,mcm9+JXr&HFV#dXreCD'Mp46B5$rY3R)NlT4r1UVGqM[U)P X-6AJrpT"dI`qkR6Dj)4GeR1khabicDqqDPIJ8!6ikre(Zq8,h,q9bK*mPQh)aI@ VhJ#2rAm0,p[r-ZmkS@bXAT!!E-h2m`rJA6V)MEJ!fX5mC&,XUkrS!FF"VA6QmGX JS,TbN3T2,hrB1piU2i&'cR"l`[lZh%J02ASP$8h1)MX&'H[894Vjh@4M$JJ+2TJ VAYBUiHT"3G%dPF[Z[LLVMhVGqKiUUYpC0A9h(G5-eQj46D@+T(YaqTlXm2dd9Ql KHrA`ZkUdlUS)G"9Gf@EZVZT5HQc[VI*5kZ(LpRrjrTIBRBqIrHIfq1mVm0,Srr" CVDmrf(pqRVp0Ee1GpP"&ek0mUhcVkb4l"Dl#&3BhbN9[dr1-fp!2UB4"mcrd5$# F#%*1bNA8+-k,2p%Gh)RZjdf8-NbhVN'Zcd[@b5IMcM2TYc2KSc2TMM2KHM29bFC eUh&pCe`('GF,aR&eFGaCA*F9el)rih`bk@3bi8mbi6Nbe8FNkd'3!((rb,TjT2` j(+m0ac2$mEj)H9JiIK6@9b,V$Z(i2H6k0Nak-U5G&KcI"-Ir`2ZITrrjDTj26rr V+m[,D2qr8PqY,GHAmIkRYVUkqN$r2mIIGUr()U$FqT!!HPTVq(3iZQ[Pai&kIAM kqKMTEQ1hJR(2i"A'R2+'FI3ZE(2QEdar6AG#T2$"+``+5f9eh9J)cBRmmHJLXN8 VhZX%ANSHlZJ5K-3`H9Y4alh!6eJ(jlG'fCUFqR0J,Tm5$iqCLk!hY,Qcm5U+ZYG *bk8q6X%I[-8mfTkS'`NEBAcTK",U+4#Bk"XJ6f(Ile*UlfIH(*4AV0eX"a)a$Up eHY'J#r0Xp[e4kk*3,0'jpefBM2fHfPPF9#Z91N(PB&qY9@Ue&[@pLRh6*925Aj0 a`$#Hak%r8#GqL(F26mq4qTp(9prdam0K-1Vjj`N044RM$6-Fl2-i')c#FCqDeFr (F@3+BmlaLp&SZ,'dG(Pj@8NhZ[4IhGY5%R9'Pl$k5hk5"2hchRAPBY6[S4cH'ek %$$)DE(5ZGS&XqbdIaKUGYh[IA)eL(eUV$'i!AUH5aJ2(YNYeG4Ye!rGG(r&)(83 aCICif[EI"Gr%)FT($(8pq'eB8,`p5ja'!EV2mAT2NVrV2V!bb&C,peMD!rK*YZT dP6R!Th-I96X4Aej1Jk(Ec0,0IRLqfqXY8Af"Q9&3meLq$Gk&X,lM([Ecp#hqqLB '$Qa3Z4`RSeiPD)qG+42kl#dG+@iM8A3ReF&!KD2)BRIhCN&ei'cQlH"C26GeHAE G$G6qrqmGqSNqa4q9r3KrI02Uaj9""*2AS*hD'`B53E@h@IRji`!cXQaAe(D-*S, U*Hc&Rm)i$QlQeG1KlhHr'BAY5T!!B1[)@9kV*#4&T'L-5!%A),BJVC%VC`j%pBj f6KR!(lESPJ&MN!$k-E"3kJ5QTTkfQM(mqdd53FH99Xr#ke9dU@rpp-'2fp&b,B8 LhcN$i&)`Bi[(ljjA[2r9mcm,p%pprUp@UfYdrS-JZ&TI@i@[pH@ePBIcrh2m)3d l$hU`@j+S(cMES"fdHX"Zbjk`TpKc3J[2Ha%(ral$`3*LihEb&UMMra[$`3HP0cc [rffSKYqk8+-3QYbM65KCZYPIA2F#hi$eTQrP9F8K!JS8-()3MEXN!F84l%D*NJX R1M$YkRcFk34a%FD`[8(kBMJ(BZc"jkCk`D!lZV$m!AH+V!G9a([kSFm[5,5*!hJ E$)#3!"EQr35S`[9mNAN'S$BFdj8qi0NqA`3bedXLeES)@QqT6fcL2!!)b564I!, k0T-PMNV'"%m!0B#LN!$X865#(dPiJjB(f&$qL*&3iAK!5)b3!&pj!54U3mhr!b! )e($X$hbJY,p%Jr)!52Nim5[`lc2[G(cq#l"['qSNf0$dN!#15diA4ZX,Cb'mIAI qGfmA4#J!Cc3SUITMG36-9Zh*Nc99Hlba[,a4A9EPkPUekRN[KCAb"`P`GPqS`Kj C@!`HMH$I0Urib)+(6#0'+K`p5Y3P,K#XH$3UiBbmAK5p49ic4LDc#'Mc#Sj62k( Q1h"!4jGi%-5`kZ%!aRNCa@rKKH2JjFUI15*T4Rl1#XiCQGU9cVeG$4`HaiBUr,p a00,Qm$02S"*LkhIR+lKRqKLfGDq$#GjUDmJbB`L%4mMTmK[%&@"!T6Ie3Qm,Jc[ !4+Kj["[&6'RcU[$mqM[!&rS-Zmib)Q5P8q)2qp$,GJ)mdR9*FAR!)RbM5jQA23F bm(dIm,Z)$jMlV4[%Nq0b3MlNMd`+Z+hUAZA6j1MdE0,M-dhdc2IEabH"3I,(KQc 'X3qE-!G`A++2c,-C5&(hQGF244DChSrE"cDKHa!J6+j''MSb`D),aaQ6j[JPIj6 4F0bBZimQYD4I0RU`rqk`)CEVe,"TU6!&Q@CZL5Pi`&[MrEI%P,(PJ2[@66&PK$Q EBKUQTRI%P+(*ZRbXrA",,hI"`5a4hmmXb,5"C2E#lcL5c$ki`dKXFepLr+#pMZH 9R62Hbjc`hN(BLL-8d08T62TFT0r$B)4(TGS2hJ8p99-(),DMTDPkGAD`VpiJI') iM9q5,5arI,MhHlMrXr+ID-1klrVq#,!@IRj5q@pjH@fp5['rPpGA3!E%q#qB"qC "r[YFphr15U0Pc$EmJh+#A!#5j$8%aKkNP(CD`8Pb)@D'342XUmGVd&Cq5THeb5b l+01NYA%9U2k#E2@"4Sf!bNlSkdViLLmTbBLHT$eh30!#XqJ6h@%Q""fH'NVYMG3 JJ1PFp[hNVGVD8Y@Vp8kRJr@40QYP*qY6-@@(Rk!@PT+"q',E6AAa0R56I#*QD(P 939qSiM#-8[fRJqh6Jl9DE3I"$","Ne@eZrYYN3DaCc`MU%q3!2Ek239EY0045cq %m15ZfMaHb@k1J8P*Jk1*FbSN`!@0Bhl$M@Y300%4)P!,b5DrhMX'LFD8h95crTB @X'5-#8`B&aD@2(1i(CkIM[b@MD`'3LrpZljQT6IG6DC)'`k[YKU1iKq$C,JS$C@ V2jZ+b5KZZY(#CPGFq4QQYLSIB3&'d9!9iQ"8#Xk(T5!*5d%ErRGqCEPE[`fc'Yf erFGfB-0aFJ'YhV&LVCkTf3l[@R-Y8c1jDmek06[DUl[@"$MDTE[``d&69"Tj99@ kVJ1M(T!!NG'Xa8YAAAD!G)jShE0a(fqVkN#*8p[IZGF9&daam%lGIF!V+`kLY[` "lV"iP+kUTP4e`-4NkFkpVMTJiSe2h6Dai'e9(6!0`PEJlXPEUUj9dh1p"jM@A(6 LeE%VHe[GalQ6[8[9pAU+M!4Z5-IEUMT`NRIElADkDX(ZPL*2V`+-e*!!(`GqRb) U%YPZXA9(jH"SYl'[e)[pl6-2rME4Sk0(apVL#K`+R33$)k*Fd4kEDakrcDjhH'L Jf5SFK%f3!&LET%8XL)-G0L9Ddc5YKfQ2@b28PbBKUMbT4AeaL'j*R6"14[S)aQB +BBFFU9,R%DN3Dj9UK6fR82$!a&Rpk&dJ`brLFDi1Sa(Q0k*l@0'PiR5k8G6@KbN 'KK["'Aq1@E(39'L)*iFCTpM6$*[6U-jkp@*aaC5DYYAV,EF8Y1jX6&YU,G8@lRf R3eXUeGDdAI0i*68ZATr*F8hdQ,H0PM0YTFQ$DHZa@`TKR$ZZ9)r6GY"DUNG8eIS A0TUZ+88pHPlcV2(2Xa`Q)3QkQ1,-mrCHl$CHU-1MeiHlM41+c6'0VaL1chYK5q8 `-YlQEA@iE$J)4ejMrr6f2TV[ddR6lH9`Gqm&lfpbXp`qfhQ9Xhce9BkEHV"h1,A -XLQaIh6dlIDVa[CZTN6"G,&S'PUXB9E8(2"ZfP(UJbaU!FrVaj-c"(CRXMa3PL& $FE1CqACE8pRbh"5$+QHSNiZ3!1U$aY$-+q58XHY!ad,%ZbKSAj@)LZ0aik9B(rT m2Tame`iRhb8jlmk[E)2*q*cl5iBPHcJJ28FBK(k2,RKLFbX5f,4)H$P'EU)d-@6 Q+j263&DeIBAYTBMJPNV+crVq9BSdBUFG9A"Sel-Y5`U+k4DH2GY5p5PJ1amZCXR ZccP$FiSkIGU5V6jca+D8(Fc2b(LEJVri`S9%bB@p3B"R-kDk4pmfB)UAk%VHJJ- (jBr8P-k$PSmAMR,k!8",I-&BYX9!1Jd6AH)mk)D$!BU6)Z`#XE0i%8S3E)6r**a #1hPl$%a#b4eJ+EFPh`'M)ED63-4bL+'maJ@8q)V1qI--%F*8,lS-h9EUdkB$p8# JEMjL,FZMC#F-3r$b#Z1U'"DGHR23BD)PAC)`!0H6MffUamq6R5F1Y,P-$Mkf(%$ U8hkb'&G(q@q5D&LJ#DL*Yph53ea8ZPP(BQbE%F)!*PV%"UL[6G9'CqD&+6-%&(H Cca"&eh1U81!DLaTXj9Ta%U5CfSX!fR,Yjpa4QT1NA*-*#JX!IH'[h#P`N4+JlkE QRVFB1)[+EA#L,T89!0"mU$@ZRcXe4a["!L2KK@(DRUN#ILYLTqM09NL+kZrf,(+ ,PR1+EUM$[Ie0laB%)hlYja`5$p"c$fRSPd`K83VI8NirNe8"0pfMa")mG%JdVkm NR$X9Eq&QBhr&l(!*-P3#KN#-SpPeXbNkPTMF%[K@6TRFkUjF*!dj[10NHh"Q@D6 **AK'!c6ae@QBKj3hS'PN!QQ83f)0fX0lM@1j5jm#A$[3C$mde)N*Qb%$KYMPS,b T3#6%VVL3!(%kF[#BX@F[m!KG&)"A2%'SNMkIk$M5b!e``pJ(q"m,2[1aG8A"U`% [l'j)E6MRp9#rjJ8bEE4$-dQFA#&[[N9ER,#H3!F$AeULS@IBP+GEY6A!iVM[pf$ L99L3!0VDaX6kT-l)QY86rR+M`d#()`+&E@PMiRbdZUXfd$rrkZH5bf!%HVp*!h9 iLRSp,mDEMjjrcMra),2+5ClFMrE&ekbFFHLUD"%3TC%[R84Rhe*Q*Xcqe8,pCcl %EF22C%H$F)bL[TR["!q!G-&hTM8i6`1)fRAC(9L$,lC8G@V,'YP6E+4YrLB0YHS %1TX'[5aS0i46XBLfYE93-(0HC13U&Y%S+()@CQ,53%fFYEfLYA@'b#ZEAXH*B6V 0He35KVbmN8Y!$2jlIa*N!#63CC+,+"l90Mi#IRM%dR9eMRSScX6)NUq0L8-ZXid ADc+c,%%SSArjSj'a$4`2F-hSJXQCjLm$2i0m4$dmVafj013pYhql9I@m[YpU$8K qhcNj`Q292rr`eEchRRf[QEK$"3Ri`"0+"JdkY&&2d*ehc5PDQefdlK5Ycbkkl"4 GRPeda5Qk-V[SUP0dGAE40DISfZbLkdl4pGP&(cY&(mmZqX3TqZ5@*DLkDj!!Xek dMp098XY@Ze-9GrPUp6Y9FCHaYRbR+ZjbePEZ9-9GeTUcVTp[cpe'ZbBBG53kddm 96CSflrI(KbE80a4)(f1PGhi2KXB%p*)9jm`C`Sqh!c6S4B[DK3+ITBi!K4IDKZ@ lde(+ac5I29qiM+%FcAT-8mpF2#IpAQY-1G,)U3*9r#Q)LM[BSakEYq&d5(V%ep` c4jZlM68X#ebb+a%Q`Emcp0",Eaq,C4VQcRBUiIC+ljh*mSc)cSiUi3j,EjrEDbf AF*1PGp$YY9C+Z-r5QqMf@UXPh'TTbM-,$Y858UB88CY4r%RT5EV`iaQ&(jFHT`Z [cbLmAPT2&ekE8ALYY*BZ[$UMm'ST!j!!P4Q&9dSCQ#r2+,aFbLaVI8EKHLQ,1E1 @TC4"cPPV@#e9LAHla&f)BU5YD05M#i9aFY&C+0j#2*`qCh(+hLe8*XaRf!hFFUj EL#,T8HB3TK,9$JIM`20`jfpm+*hF*%)N0(!V431p@l8-VL)KHaGZCm65FNV"jUS R8,LI8Y'4bN%8Gb859J&-ZrS)&jGrcQP2dpqq2aMlD"l&fKeIE(N@PbHe8G4HHdT l#$R@"#jl%j)lL3Zkala9*TFB,AhJ4BmHRb!aa@jY"k-JlSF$,5l`r2(UQ(UhK`p T,3$TBI*@"kG6*,ClTAC[JT%1rPf,ipbeA*iiC8Ca*abm``#9@'PMXSHV8[XUViG mKH2+c!jbf#*S[pUK[iY*(FQrDlAFAPCRpP,Eb+fd0Vf5jkkTV5fUd%Ydq,l-(Zi X55Cq2mK&rV9F4I9DVSEIhS5@#rA&P@*aD8AkTcl4+K&418T'cV8X@4PipU*b'!L p5UBPpY`NB44`E46f9$p--PY0Vbe"C@S6M09F"R!GhEJ%H4QjTq0eVZjjCFT1EiG Par3S[@[a*Z'fR5"D(KVRj1@AHdmb"G([hX"X9,kp(IUdN3ZG01R9""Ie1"Te0cb ,T"3D'&k(H!8Vb-aF+YDMQ!1SmJM)e)EppM)FUT%e%UYF6T%fr2h-hRBK0Jb#5rc YUU'eJ#&LNLf`54[T%L--*#2d-%5BNCjA4XN""ZJD-qbQG5G6GG[Z6Q*Pm4h8kjS %Q#-E@!-ccSdCph[@1('6S!%-#$UD'PAmE1@rR)L`XA'YS%FeM")fIr)6YfMZNQ4 0FfK*c$Spfh,[qNJZR,J@R9$3Z-$,[5QcX(-4d9QrV3aN$ER,A!qPEKAG5a"c0q% 8cVPi-)#rjIiLjrU#,[9EH([ScN'Z)R(@D5E+B4FR%AB@VUU0$m(@(*68bi@l(*r 9"TY)'$6CbN-CejKKp[GKLDb2F`FhpA,TPTZcNQ1&QhY2PP0rPSP!9ZdKY!@2Q+Y HP0X$AL,+Gi4F()c'm3"V&-`q6KN@Q%BmLpN*'AcM8XG`d*1e2-,6QPJ2Fc!lE5j ME'bLS9k2bAHZ,Bjqemjjjr5(4NPlJdkd6C&IF)C$$L[$+QKMYKJQ3Yr9&e$QHia %JbaV*`i#dP1,a6e+92lJ'Yq688r8l`Ga+i66`4m1%bAQNTQf!pfdYMS*-E,@&hC 6mb&@E9q8U[j&DIlPG`I8&hYHi!'9pNR32K,SA&(Qj,TTAiRjNV6PhGhSbYTmjGT Eh@,(e4U1NCPTiE"9MJPAj[Z%pCBhKmC9RABH&d9Q9e%F!JX*F'j3V&FS(aQcQ#c A&B`QLlZleDdMTmY%HF0&`4C4+eAiZj!!mTeH1&6E1qMiJJYUaU10`bE'Bii[,LU QX(#+dEDKQH40R%i1M#d8''F,Yi&C%%-)f!jR`BVhVc-iR0(f2c2c4d*Zj8Grm2m G!9rElD,h)X'K4!XD*%N8EcfZ,MpHmqD-@$*Siq)h`k5*BC1JrLpMS&D`8DLJVHK !%#M56+$`S,0,`0E,"T1FIb0$(EfjZ6N(&bEQPSXk+9$8U`BA""AfG[pNU$!h"`1 EZb-Hh,i1HI#L,QEK$31Y"(J5c-d"EN5pGR2PmGVFh+D$5[$55kp@cCX6BUQU(D4 `p3[6`FlakcddQf91`"!FM)51fE,6L,L4EVHk$'X+Jh%ZY8d$U',5imY@@jP9lAB UkG$Fc#HAh'S$D`a6MG2`2T[rCk[5qX6jReCAkbYCrmpDYIlJrrNjrTB@M#0K#jd rGplAp9-YI*M[*p6r81G2D1)ZhTpB$)Je5"QNN852'`SXLSUB4#X6Hf)p,$aAQKh U[S-p3ZfNBB)jDmBM*eIUMR%JCBqZ,ibM+9DqVkHT@[$)br,,F0$U!DP3mbBSq$b ma3#1(I9Lqm3@H-V5AP+jH)E91PKJqr6J1qp,H%+Gdq(H[UTkjZIV`qhp[CH(MGh QdEI!N!!"FM!h'p0-b2mR&Xi@QAJ+'BNjUR3!*"2B#EfGJ,,25E[EZlY03`+E-)) AV`phF#jk6(RIcDKbH0%mcid[d4QUJqcZZbKX1miJKD,hUrFE"Uj,`Zj!-&Nje,C 3h)5[NqkcVB+AjbeEmLDGCB[[i5hV6I2BrD5p6RCkMrlZhGf[hTaN@k0q`lhNq$L 1YZTLIdYQl'Mch8`lBKI9eeqVJLkp95d@A@N1TG0F4fF(-"kPRl"0e)Z!M[*,E8' [K43#,&@[DY9UmH[U9DIiE'ZYU2kZDQT$9E'Gh"jEQHjqml`T1*6f[mjh[riBhYH r5PaQ3I,EA88fS49iKd'h,VLiMP-'V6'S4C*rIMf#AESJP[$'4Kq0iDfapDBl+T& fTc3dFiBd+[J1FjM55SK3$JDEX`&Nim"0J)TebU2T$JZE%keK8@P!'NiLKER1R1D brKEfpfDfZ33Gd3&"T88N5"cd6VGh6q[hHaUrbbK1F45A'*I-ALQbJME"Y(M8I3A 60&,%cV"c,3(UfJ&6"cM&,J-bLM6Ja8KYH(Bj+JpB!F%Aq'p`TDVLiL3cK5%#5U3 Yf(Q%Y*dN4)-b9',6('@TidUQY#-AMD2,5"a,I6LX+$"GKGa40eM6%h)'2Vphk9m R-1N"R$@Sa0&M8fIaYCc#!rC9aB$#j9fh6a2T,MfKL@eMR#Ab0ilV2`',9YY-Yi+ 5C0T&3fl&mH@dXZcEE-Y1U'dhiEcX556k$aR`jQ3,CJ3e*FVK(fh(2mqUS#BUr,a TcR9Ci$2"3&a"bj`L1rTUqr49%a0ISQVr-8IJ-"H&GG8IpdBKaTd&I+bYQAAH)fH ``%mSmcA+bM&`$m6pfKiS$LEGh`8SQ2VaGAV*Yi'0LdGiNL%aE4*A6)1!BmbZ,4a [pGA(*6@rJq-I4B!p2GJkmAaadda[0b+m[%3fN!#+p-FkNUDB0r3`f0BeheljE'I &(PL'&+(&GBUFi9MJMHX(q'Yq1!Ib#13PqLdc*06r%Tce2Mm2VL-*SBYV*`*$1"L 1N@MS6DB"TZ%03*EF5h3)QJY33!F-,1T#p81Gh0bP+BalhD+,`dmGp#CRRh,+V`G @L5,%Q1E-)V8M"hM5ZL@I6pf0JSh!+6&'4hDXRiTEN!$CArENYjT`*0&[-8NIAKY HkI-Rl)K"YR-B`Cl"05+R5$qaGmF!F&La["S8PC6LNm+KlPMh#&ZZ#XapY`XZa5[ Q)A64(HmC"j!!Ej2`0-D$"'%EG3U'-D&E6V+pU9FdESh63di4@5f#'!%%#Q2'9b! +&,Ke4$e88K-`&mF`MaQQ6Pmi[QMrq8r+Ahb'k9(4Q"kPPiST#8l()$fG%)kaiir eRke*"2i`84JSaVi,!cQCq0kCcQJ5abNk0apXFR(C$Gr44`Pr5pcFfq!k56@'9h( 8%JHpKV*TDPNa"fFpHf`UIq3fTA&lFEQN&PG,UP+TU$'KU2P5Aef[U$H"q$XMb3J (bEL$"f``5$9Q!`Y%!a##!`S2[S,i6+-*NfK!5H08VIiBhe+$R-XCdEQGKYJS-i5 p6ZS!d%GqkL3!FSbDfa5d8XZ()BIl+0afabM5'q"Nb*kiP+SSGPXbSA#TKDL$QSd X2#`3mR&BRbf#2PYE"RZ![-ME[l[8KBlkaC,BFLhD$bR+p4XJ&5TF#QN@!33Pl#+ cDI$Yeep2"P6i-pBP+HDTZ+8kB"2HSM-H$+l92-,UYhRJ"`C"l&0mNQ#%r!U40Z! &b,T)Nk3N&Id+'RT&pSIFNljcAh54FmS#TdkP48-cLiA-898V`YTIBJ4(V18Z2P% m&Y5f40!U#NBie)TPRN++l5bL`!"L$(4'S#PMV3aDiCR&c'(CU8hX*21612N8pAB "Bfc-,AX(EedLR+A#kG*SN!$JP+j0d'`hS"MpI5%1cI3M@hTa-90Hf[kapR04'G1 #56T2(#MYDRrNQ&&3%[Mc31jmfcB5`@JkaHU5d!hi&9G8JBl1Lf!F%bZ8N9"ma+* +dDhpBHG0pRKiMr-Q4HRFSqF1jddZU@-E8Q!-FSLAl*)-EX-fd(2lZq(3C*fQRN$ jamlMp,'6R9apG5hh"-SF1e0Q0SAd,LkDk@KX"!BVrh81&I`c9mq5iBp,$M18cL9 d,Sf$RlG318I3&8Rd9K+A0[Tc45h4d,K"PlCFaYmYjqLQ80H9qQCkF8hBLJUcpVc GR+SG53@Qdq%AlU!Hb0DE)GC2G$&$S$Hl`8[YLF)Gr'f,fN%fM9D!I6PqV89Aedc 5T!(Ydkf--#QUhR3aVE'J6fN*mcFA+I"Q"C(KVa(rYrqfqkk2pi,RrZK6h[pL#,G kp[jhHHhKr[Hcr,8fIZTMfV&DlDIcF2"60XMXdSZH[KlZ!ErVa*apL"Rq&irrM9r HY6j'-Z"Ep[r+kLV'rekY,UmZ,brA1Ijhr5(rifIj-iPmjh'pjle81Yp(mr2cR#c )(rPjDAhKqb22mljVR*aLq6P!T"VmIYAB2MlGqk%a9kZZ2&jGAbXpVMfTjfEYRAC ppddYPE0e@UQk6I3lr5V`QfAhdR9UUC9XHZ$F8UZCT-(jEDe0jK,1+E8qN9miVkh (NdQ(FdSpQ8K%R![9kY6da+PL06GCmI3eUVYjM+FA@hC6(%m[YZ*Q2jjHE09*M$a pcF96Ac+66#qflLC8RPlXXCYTH(Ua*jNdc&1`YMUCRMQ[@'dLCh0ZDr@*6-kjaCD RjRG1&9[*jP61Rm*U*JRdP*QZCC0$jaGE6q@-RVVE(c[CT+H[DIf*NfPk"P@S1PQ SCa5VT6*86be@Gh*AcfKYfHDeRN@a9V**Vr1,V6UjX'HdYTDE*hZLf2TNjZbmeKk RdfP2kr5*NfGlqYK@UNi1lKR&i&LC'`pZMUC[qQr@DP4NCcV0qQDY6N9H"U1A[HM Flk&A5,E)XLkb`eBMD*@B+[I0fJSALFkL&fK[6RD,Q9C@6C($i#UR""4C-c0bHNS A@DFL*d$#TKCj6%9QB0dhke8U-J2M[PPh3*IIdcIV'G$YS0Y,#SQq@@I3FIBNV(r Spi-Ger(lQh8'hAl8!Nc-J3S@@G8GBDPH!a2$GX+JehD+V!%fh)6$@GM`Z'U+(!D A[)JrK-08N4S9SC4)Hi2m)R8U3S$*+i"&PQf4D@0CmIkmr(mbr,6mrdUeAU2mVp9 DGCec!B(mAkdpm2qIiqp,CE1)l@,'-'#VBR8k'VI$#"1'B`C40X`Z+pc1@r1-&r2 `qpK[[I@lJ6Uk(!6aeY19Cpl-ePl+99TE8D*ZDV@%UA2krNKTpQ#e8Ue#-`X,D[G )(4kGUFEZhKRmp1$PfIE*bl2[MaYUrNdi!)krF29iVDKfV`Gq2fb9pm2"@dbh4R+ *UPi"1YAc+Qh[(lrDRP&Y$DTj1bpHE[&%BCjFm53JTd([Li2'kHRfbiDeF+%ljAG qMib1h`DBdSf-jLJM'jX4$3@5R0ckm'$lfdE*YU5$i$@Z+$rVJ64#VS@8&akp+XF $@m%q890UUD0NA5S`J[P+AXR[-BH$2e$*-'LK*4m+G)01f"ecNPqqmS&H"QD%YZl jY5*V%'ehhrGKP48!L9,UA0L4SM&iKG)K"9Fq*[RHZ21JX6Q0A9QJcqHeFKb",)S m5ZXL#PX"CbP1ciQL8q48RGD0+TK-llIM@(&kHl["qEMld9U6d@eI$CdQIr,ZK0' h0rZ'64ZhNhjqkambC'Pl*akeHld2D"jhrh1+(b)N#AiIRa`GUp0@UiQ[N!!dUIP jpc9a$j6`&GjlAqbp8'VqU`)J@A%HlkDQBTTZirRfD81p6S,Q`BXG9Cei5d[Fj,' 'J(cT%NH8UVUj'mCU[[+6DGXYJLP&ihl3$Y%5I&E"-cp'RTb+Q#m6!jXjTYR$ZFY )pVU$+!kD6+'`#pYiHR`lamGEV9iPZ!VJqrEZ,Xm"hUSP$"[IMG65`CPDHV1XPPl q8bdGeGA5,L$$hZ&bICiH$hFEceqrj1FQ[0mpHR-+[lk(`LeTmVE@h#DFPTh@p#r -6DYrk',2AqrYlcBaCkIjM$qDjYIZpiIE"hXlcCf6RHECp[2p"Vr'kapiHV(G5Z# r*r#rA4lbkH[RCbIE1fFmlZrrk4fFl@re`rB%P1#pRCFlMdY%85NjY9$rlHKk#%K GVblV'LHR1eYa+pX0[&9,26MV9USYYG3f68LCUCqIRqiXelI1NaDHFYP'kD-HQ2k 3!(Uh[hIi,G5()q*YYM*r8Qq$H"$dm+i"m!X1a9JHZqe3RQ"Db6#+H[3$$TefVbY Ir2BlIkL,*4FJ$mPce![XNcmHkHE(BC[IYXpEZJ!mYSEb`m!i'CmRemNSk'q)0a8 !"D5Y*6J%,q#ifpK$CfHHM-a$Aj0%jlrm2R0U%F'pkc5'kEPJ&6MYrA&[4!d!!Gq `&1%RT*X9*1FZCX[%PiEYmie"0!L!i+*2kfe%Pmr*pb@jY4NN9eUqMH$Q&(YrFP[ ,*lIT2QiIaA[3dlD3!-!qNd'mZcYU6j!![hX6eZR00MmKKIeJXYQm#pPXIMMCE-i QQmd(XTP(EpU)l,1SjqmbRIFCYL'0Y(mG`RJhiZH`p4qIkH5qQXhE51#8FY1j[8r "NNi-iJlM[$0$HQpQ+iFJh*rcZL-Er(*8I3pHq'-`V*C0a30!dpaFl[U2--LTKm+ IM-9e1,-r*Te,XB1N@AJIIY#GXQ8+8f6qV`)*6CNq+Q-mUC[jC%G%pBj(42@2F%4 8EcmLUTp,Cr%lD"RZ3E6r5)2pH)U3!)pb0MpS4Ik!'S3lR"Kr'8"S5[8*M`a4ZAq b8k0fae1MpNFi0@UhRaUe[r#TNDHErK1F(jp@TIkrH*,mlqQPlh#Ur#@"SURDh8m BM$2Th,-bUF2II,8klECdbRHMdCj9Qc4IXiZi!Y#G5ZTc6mrMCBaK!1G2Sh(F#XM N*,'(iLi$VJQ[dE9l[M8FEVBf@eGAQh&V%k#k'@p'lGlQaI#AcA0rY0Q*iXh1NkT Yh'R9mdk2ATrX0,BU2iPTHk9eVe[RHpfAh&qrZ0XiEJ+YE'l[lMG1YRlbjK"*d&L LFM%[[a"6k-F(b+JI`UNi1)LQdbj`C`0FQk,q-5'qFh4`r*H$1(TFr%("IB+(k&m ,h$Cfk4m3i,XBmeN!EZ14cPi!r$%HKEdrjh,Bb-KrT2AiNm(`*ScqQ2MmmSHpSqE @AaPr`d(R["Heh[iaiEphq1,j[X$IM&4$(9jJ!*l%I6'+Jr3,Zc*rj59N12a4Ph$ Rk$j,L%'[(jD8`I"(AG%Af`mVHZm9rH1bEE#Lqe0Ap#ql(Sb'Ip3&16[CQV*KrV) ,3S2rSkl(kl-(2Q6f#[k"pp2C5D0aqMmPPiShrKpc19iIlK`Gr-Ad-Z2"66Kmd!+ m2`!I`2GKi-1G%lIHUak(GVTre6rZJIh$kl1pr6qpiJEId+99pJVV9H#hJrLf+kb ,cB[KF22LkQVcSVmC$RUERA#cdjkrSi,ji[ee54I[Vm1iH'pCqH,pCB#,pqC@lep 6X2(pp[I&Hql4LrZKedQ3!0cTMM4X4CZYFEajhKpZYR[GcEK9Krq00Xr$`@CV-0U -4jh0EYMCr'ABKIm&p*rj6-Ii,"I-r%0lp6l%BrJ$a[qir-6arfVeeG9Xr)rkH[8 KrXIRq*X4Vq00&,p0KVk3!)4TN6VHE*mFlKfqh%M&kcJk8EZ0rFCC3jfpfMY9Eij 1[MdphYjTU"Glqid[J,Cmh$r2%`+b`8F`jP@E&rU*caM%*MGHL5H[YTkZ2[0qrI9 AllIIIR0HVMJ[2r'3!0qejKh'l!miA)lkY((E'*Brj4JHYZYRS[qV32p2'YZl"id +2(jLqVpFUkdMr9qTVkb[V&GVm,@fXVEq32mrajm1BZ5VSH4FI#Id2HT3h%C*Z3X I4K'PD6S1"U0`h#rEh'ZC(,BF%BK&#JV#dqY'-BK!r3VR9d(qdQYGq)0Zd&lbffe -PA%YBC)SbMY&lI%XrRN8r,ebkRPB2qKdJ'aL$JS-1mRCGj*!KYQL,Q9'Q*+p$f` QCLB[`5KTA2!rEaK(hGM[2dV8H63DpD#PePZ9"%%r`8PLASFS'F&mpQ[PPYqLm%D $%8il'T3SbY$P4GLkm$!e4X!4S&3FB0B-Ra*`A-,"#C1)aNlL`$M!#+-kIY+jRi3 Y,`1BC"J%E@$&%@5`#%MkF4VFcQUj9[fE+P$(q*Vcd[4kejj0iN8CLrY3I)4JHHI (SBr*2Xk$d@83$"6DP!Er(Q232Nj8M*!!+PDm9p%P*X!SF35S-8ESm6'r*V!$kSN EpEI%SCib%-'J8PilMSBkJ58#+*8m@@-8J!BY9k&K9DZ@kc!I2H@#2fKl5G32-0p 83XQ55S""3`bYM`NNXh1,hY(N!DTY!!l-mPV3cL2X+PC8!h18A&!@(Pb!lN8TGq! U'8NU$dSRM5N&S%1[ilG'8C`cK)'2UGadcLI")iRUK@pSadK`j)T(QkX251(hNNM e!er5G%NUS4!J#c2"-)U*55Q5i&)K#LMCD"iPS6`iq'H*d8jK(K0-185*!@Re+HP e,V+H!qVY8DT!$m18A3FMA!hCcc#kLZGK6NbG28bREV[`-Gm4CRRa`aiX4YXXUJ` +`6hdie(B'[ImZ14aMNbB!IB#2#38lkY,$%STJ02e-2YZS6h'e)Ed(N1I!64pMeV cHfk59dNR#)L1#9Z'J+VH(Z@#Sr3b$(3!UH!CP1*N0E3AAKkqKJmP+Nd$Sh5*SmJ EaIiJS5Lq3P@%VR'11G-@d)ENHM$bVbUUm!UVGXDBIFGlMTY+RIJK$0($I"[YmqM UQrji1!a'2ImmUF"qmED(F3J8TrENb@22mlD*a#%!#6[SX0eJ@MD86)UBFC9@dEX BMBBE5dZAPjH9G+0,rp@p,5'lIJNJ@0)lV()ak[HJa8JRT1+H*!mV%T'N6h3A0J% 'YRCQET!!YKh'!5,p0C+eJ@T('aJ&EhrljHR@I2PS@C9hf4QMXU4$V!8HjA%mH[k 2l5eZ-AVJd2iDr0qDjIr@2MRr9kmZebcrYlk1r0pUp8(qrf2`Ik@T$##3!2,hC3, jQ&ChCJ,AXNbJCKcXZF@em%!0fp$d1r)+c*cJ`1$)#4&iEMC4QTU1eJRR84`5ccM "#RH!j`"3GD*a6eJ!$p2*ieQ"ie&`YJb6LMUi9Y%P!#")i&a2,U*,J+jKlMUDSa- @b"pj!LP8XkD6,#!,9U,SRr9UH4N+mjPAIP,Lc(%*"4lP3HS*YD93Yp95pFTkT9j CVQ$XceMei5XbPFL3!,`MrZ5qCcr-GHPiEqp1Klm8m'0!#Fd)'*lQi54r1-NIr[l BqKp"VBr3aqcc[lkm[VDLcrrkkKVTIq$(`rRr1Ik@&S5'*+TF9T1k(HF)l%9`@#F M6X9A+(TU3@(SI*h5f*!!a$Tq`33kF)aHM&4KTdMd8lN%9cfG3R'I3@@XVrQ56Kc !D5pNFT-1!46Ei9J#+4'`G6bL"+Y`"#eKCRTN9Di9jJ9F8($)mPQ[d1GIUiVS21& 3j$ee2$l[K5fe(lD#3B)Ta$'9ijGKCi$j%`q2QUm2GaXRqhZ($Hp,cSBqakNE`d% iQQ[DCr-j"D1jCZURcRYS#T[8NR-&bU*ZhZmGk[I,kEFQ1rfFNlTh8CN+m&`V6VE II$aA5&9B,kU[eArAi44F`S6H2ZC)MG'j0ZTd%Nc%3A#3!'BSjH,Fh&aeEJN6GVF !ER6f!$`a$5GpaCcaZMJj,%2jPIcbr(QL!LCEl!@$ZER(@-d8K-'D,diG5[)),c' e*%"eEUj@afSAJ('SIQY[B&C0bJe2*6'$*PDI`cmDeD88krR!4(&kf`694#1h&fb GXR4#qfYBVi2T2Y6S-T)U1#A+GT'YjII#,Sbi6M"VBeIPITM3@mUDN9X48hNbiXc 9#ALqkNC4@q[91!8QjMYe+aRSc08CF[!GQmIhZNS%R'ZF(5,8@#DJ$8HaC'p(0Zc 5(j!!QT)(iZ)""G6qcSq68a`#i1CD%G"R,[%afA&`IJAYV5(Lf(IY%,#JQRkAi,Z 9p,[c)Eal,1mNcbE)"-J(cmfYeT8cFV&8`9Xp'--UVFU)XhDh*14lGd`DY45kM'- "l&U9F2j)m"`*&b8A5G)L5p#N(K!SiaDUr%KX!Gjb-1kI!dRd*'Nb3!5CB%aU3%S iD3&TJP$09(XPcFN&e%#5M2Y$+LJmH'!bLM1VbjK$D-1cT+&5UZKa8X)f5)65fXF C282$Ba"[!Mm*88Ec1H9!5"24DNc-(4eM#ZH,+!E5fVXZ'I8eULp4hHK6)QSrTN` !2T&CcDLLkVDL6Q%(BTCUGmQ50i`aJ"rZb`-Q+bXVlNXK(LZ2RCI(FI"Z$KIEHAH !blP2p#*Ep)"AqNRGHAmkLNpP)q1YGESCmm8GbEj1mSSIXPe3al9D2GA5e3k5'[R NM[8PE')C9'hCVA-)'pjm@!-"Sd*T(qD&pCU(&peHG0jc6Te5qKL'%U2JDN3iM6P V-iGd'J8@h-e68R[(8D,dcLJ5b8r9hU"@6e&NdNVC*!G48C`m&b'1K9@rrFXBL-r IJJ3%p'L1YM9PaP"a"(X%paa+D-kj8b(#M#1BQaZ1Ni[Hh0q!+$JrfU(c)h&rR&r "M`61mEQ[8J5U42h6&%i#)'eikj!!6bJU8,*e*E*P"*[%j"ZHNl'2,Q+N`,J4X!P NNQ,E%YC[ZrATDJ!cE!@a#'E5cK6DSYVM@'pKh5K+V8!)KkT`(J$!!Mf8!&ZeD6M `D#29q*`$`AldVTFLP!8%4E&%ip6IpF,EEkdVJTC0Nfa65kYRQ6c*cUGd#ZA0e"J XKKH`EqV'[l+Ic5DcRfNp@rdKVUerCGlmdTXcKIIKA0"Y1)95hcIdjh2iE!j@RLa 0dp`c2)H6[+-@G0j[Kr'!CjhBI6-$A#&8GYL%Np*P%L,KP1rBRkQPbC!!-eh%mPl Jca@S(VlJKA,DDd0l1$aRp,X"mV4!445UPrVqi&Si%N3,QJUHkL&b+"dqQFi$j$B d)YTc*@J,lVMcicjPV3C"Pq%-cl#pBD-YTpH4em#`2Fi`LF63V4U$9S-6m+Q!hiV )P1lZRCi9NU,kqj`HRU4*0kA,1D8he1(HrZEFa,VJhXmJ'e1(&2qFrQD3!!JAijI Zh$k1'$S-mCSCAPe&-9-N+C6kcQ45TkCAUI6M@jcYrDVT[Y@$PVd'*6$,ZDlbM1S JhkHcZ[mkP`*-US0R8,bqDGB2L[`f0cHjRZE8bYq'jS$+hiER9pN+cQ'AUB,l&&K UDJfE44"I!25qUZYGkRjPf'PQ(['e(E4LZK'P2$&dHihNl`,2P55baimKimM*mXa e&L9F#!A%VkY33iVT2dAbZ`RLL$pSM@C`"CL*4,)LEHb0F"#N0dXZ`Jk1!ZJi+pH -F&&#UTiqcr5f3eQ%@j*IQ"GU(1LV@qL0MJQrGqPI!b[9`P-80Qr&,"I-hjjU&cd !A'e0)%F)-aJTNlfH--A"RFel,6XM[BJ2cTip(3'mH8,MINTS%eQ-qSD$"`N@bhI )+H)#bFZ+M!&BH,ZhmJRNC2H',Q-5@!4LNfR!PPSS`+[13K&I1RYSXN*!D6TYK3+ qAG4$,pH++@TqLD5h(5*dcUrdUlqG#d9,K&`E-Rij9kj4K4,1c+fPYdT'0RAQ"L3 $6KTF-EYfUFe,,"a*e()80I&jFmTqYUYU6`[KUje2-MUNk6!iDY`CdMp!!V%SEKL +&$ra5hq)Kqq`-4M&em"aRV0!!M`ZR5@4qKAP!2ac1!+$-SDEfY5PN!$UQE@K6ql LU#qfl$,qjcqk%[lT5Yb0,NG,9#5cKh!`$N`h2eBUPCraafqiqi#[,K6-@'#-#2` IlBZ['63r&q&XSK2,l9KprE8UPe18&hU[&MG&@r9+$)(5"JZDlPK'mFbPA%3*%Vb HdJ*Khrm&,mP)94+#G)SL&FZPd$Dfb0[-,FB%%FYKFpM)1Gf1!4k&@QBNR3AY@@B jdHkR)L0(ha5hK`emLAJ-%-SJ-Kc$B5@SP"#1QQ)rI3TS8&6rdH5Zb09E9&di6(l 9GPpTD2-R)#0EDATJZmTUJD5$GLJV+--G`NqpDU3q[)b8+$(jrR%3NEj'XY94`ML #XJ15$D0ke%"c[Z,TJV*[EDf-CQ@LRG"d[4AK94p`A3&Q+bfapR(SKc(Pd'eGYbJ MS+Jd@m#M$[AY9MXL59SYelRG9JX0HY!F#YV!!d[cqXlTijM2,*HTFC95,X(Uqce !$lC5JhBZ5ID2@J"qGH(h'#YCAUG"NAN5DPd!3LMMN!!0R$Y-E)4(LVU[*-#Fa#$ "2(E'M*HYBQ,A$rT4I)e6K@CM2`jkaM`,fYQ[X59@a3'hV2)j@6D9N!#RCBXdIiL jB`GSLdFE"9HJ&j(kc1i0DT@Dj1d"RBCdM+1,%)YJX5X")K#9Vd8jc4h`rL0eQ5M #5&-$dq9CpL)I05pRY--YdXJ'4'@E01)fIiiH0U3V%9,JpZ$1-`l%*LqJKAG0ZpK N6aqaBR-)Ti6[B",IHc*ZBRehK"T(rAG4f!jB1Kd%Z'4#3K,r(Bq`Sr(1@JS#i'( jB1TmJfiXhrKqeUJ&@(11!YKiZ%p84(K31"pUkM9Xpqq8)[fV2A",G#$9mC!!DPe 4b6U8()E$`*6Xc6R(&4pQ8[!lTk$Q8SFXa(+[bkQfIMN2j[B$ree`5*TTqZif`4* #pDTDVGEJIeAQZ+MJ5VUK*021LY11150*q$aR4S'%ZKDGaAk2UUbQ@L5*#N[SqA' 4c!62J52T540BB#dpUX(0R!@q,[&G'TMRFjR4A0LQ,r6[G%YQ&4aKeQ8LD5@"[60 0LY"`1CGKRI5h620TGP0Vl)PM4N66TdaP8MbpMFp#2TP1#D'6XUIj5LKTa@0J&@4 (dIQ6,RDT&6Di,bqL)4'q5$B[l,haN!#S3dAY$B$kMFC!HNIAc14+Np!ce*9@cQ' hL%+SV3V1V3`FFdCU,SS!6aS-26)i0-0%biUSfB@L0fbZ8TlD8#8$VHcU@8lF+K8 -%bNmHqYUXU3Mh+FPLDm+C@FXPZY%YBEc)FdeFhH644+R#252-cm6kLV,`eTlS%m #pXFDFQJ0`kIDYU(ZG"BEK56!8`Z4I%6`ICGHrZ!+9T0Dic*`U[EC+XU`5`%FPRK cHDhH$Y#`4eXI%FCCkC4jVJZm[$3h4A)qk%N`0J9`EM%e0I6pQQiiNBhc1hKd$Y% iT%dfcb)0Fc0SB#2-38Z5V"2VVNiM)2NTQjjf&"$VNE`0Kpa3YEa-c#)1MJjZVGl RSm'2kFL'Sib2Pqa&"#dIAKf`QV1LD1@%TG8QeCSTS8-(3F(@hFKL!$Jkd6LQQ`* X"q6Zj)+iP(-bB1i%0'GVQN6mp$JCSl$*dd&MScK!BbNJ'ZE3P20T&)h3PPLb'60 5R!6$RYr#hb5'`jldbG*F&XA(ffU!lU82jrFmY+b!NLARmm)pBAIY'$L+X-9M#,U ahkE+B[+%a[EQ)"cZ3180[8-dANm)iIBNY#S8V@fb@KFLQhMXk)CepC@T$DqmCmX VQJCmpGMXBk(DZQF5"i2"JAm9pXGp,eep3fU[51h8eidjC*6d59Yp!AqCN3cfJ5@ +c4MUCJbX4'*GL)r0FXN02,V2i31GM95[KHe,2D3H1rU+MNhm@ATcf6%JiadK"h6 r)Cbj)8XPF`X!JSNr(N935j!!!&RI)G%5BAhTeR@S%e2c&UHmf!J'V4F4G@mlGq& bD,,S+"f9,,%mApN4'L"f!hGT5+29Q6C[RE[FRE5C!jF`"b(Ch2%pFSN"!4MI$8C LHk(NdPESD)q1H+e)Z-HP4%SG0%-0L6TD'M9T%Xf94Kj$B&TacX+*ET,`GXh+"#X kbEaCABR,iHJr8JAM2Cj@D&R0b&aDaBYrMTB2rT[5%ZNre+0JL@GEcRd-m"&`2Vh GR#aZP#Thd)`jd*@EP-`G5KUXHET%m`QKipkd-R#RV+[PdfHb,rG@,Gi94@DTpkE MaLb'p%24CjYTM-XKDrP4'a2!EU80EbN2EhICI*BLE0aY'lU8jAk,QVj!0$MmG#Y cIbMd)PeXdkTdk@[kAY&U*$@'E(`B@CPq"qP2ZB2XfM[)Nf#8AR`qPTc2'h,hR&K p1Pei1q55,ZE3kki9!+N&YSp[`KhYHHkGpYcF-"UD@`*jjNYaIQilcqG$ceS2E+" eMAFhrir2C[pC@eQcrKqVGIEr@(l`rrdGl6r6VKd20U$rmcDJqQJ6@p$UqaPE'R2 4cfi[q[k@R'4G+ZDPC#ckB2hjB2hjB2hjB2hjB2hjB2hjel2q[-d#jAr1e#eM6[0 J"AH,&Cca"i*flQclGV[afp`FkkiGF6a(mj+eERU`CAk`CAk`CEk[,I1$NHP(0$+ peHb64hacfE0fU"2d,GF5&DYNPG@j05Gdd6Q+l,[DJUDdk(Nkl3GMdIp0Be&"Y&[ X2eh%Q@P25L@+Rm3q0'ZS*VF`l5YKJp2lNBbEf%b02fE-c6,@C91-bAKV@11aM+f BfFU1I9EU&L*lCApR%bfCKf1NjE3lDD89I&`cVIB-hZc"51["51["51["51X2ED4 &h(+HVFlp6,+SQC8lYI0JJ29JJ29R0F$k!1ZU'6CEGj!!0Kl-VIk)jPDh#+LhQ92 PLUlh4)B(ikN(ikP2Ccceeicr&dD`43+r[d4A!UhKm&2RrkR@eU$%mR*YEA@PYNc jIeDA9arX[cl(RrGP1'MeaL"qc0pdH0dV&r1HKj)5DJ!,4I@VjbQeY+4f)P%*B6K E+UQLFdaKii3Ra4YXpZ+X+,8pZ%Cp89FamipY%(q#-JlA*e'N'l%"#ZaYj1T"mJ! 'AA9[SSlZ*5NSi#m",cFf8#iTEXU)b%!-Em!j)m+)4#dG34GM%Z0e'G*mDVmY,@2 &L#)&Xa&%#883pBKm12qMEPVqk"%@La,84Xfr#RUpU+31SRlrHKlI`*(8S`&`!C! !6*fB[45bYk"qD"iH0AH1$Sj2'UHRHdH(1'66iJ@hU2m*d3rdLh66ZBe'-0)IQVZ 0&pZ[pmr5VAZiMl$Y[8Gp'd)BM63`6("ff*9@,dU#!S04U'N9I[cf%26e)IkV3rm 03IM!-f!frDr"FjEq,kqX20$rcdcrRl,EIZALfE3cSAXMj(eM`cc#qE!"9!4r&3j IlqmA5r#V(l@$3T8HSmY"%cmffd(5LX-Km(2`aIY9rCCUllpZJh6J*0H$9S()*V, %HHd)fE2%c'e5,6LY4d2JAe&MPC!!L@UX&JE!,CE33T8%1lcrL*SiDL@p8jpKdU5 D4HP*5#91NdJR0BArSDSreUSrEqUh#d0m")J#*5qB)U9(2e8IP@Td&D5'I"r#AcC YTc+3!+rj[!X(0#5k,m2A@rVe*VeE'#iZ`VY(m52mrCX+HNQ3!0Z12acQ0J6[dbh jENZ6jH%-6CHrj2,6aRmH$P"0QHVk2e[ZYh4cjlBj1+GI)80!bP'Y3%h&aTrXXk! (q4mlDpfhlZ**CX3&-V[E3Si$9jY3`ki-90rDSM@IJJ9jQ,QPDZlKLPc',2cd4b$ FA"3)%600'54p30-(0"8dEG0bCa(PJe'fHKq8&DUEMiEmeUAKb-pc&8*`*5pP5QC J[q@1!"(Ik6UA18iZSTLcCc3jFjN-3KVVhN!YM&V66`SkIB)Z@P,PH[%12H(e`bM SAUFkdbp[lDpF,k9V5*FH(l"$%!j523G[SdkR)))5@Ml"rd3'`Sr0GKKMTSF5N3@ fX%X2`E4ED"bpb*mIhE4fHY'P)q@*ZTT@jX*2"Sp'R!d%eeD5Aq$9'UR3JML1iST 'J#mX"[cR2qU,3TSqC+J6M%P,F9$CPp!rG'Q%A3CAB6,#1kmHf[k-!S`pBcXkp`R h$*larY"P#icrd)0dQHk8%"-@Te!Y99N%-P6%0KB1Q[il2q`CSUUXeXdaIif,X#Q 'SeKN+FfVM%I05jmbbFNSV3*CGAVMj),j($2)ZHciI[-FkV)p'JAp)3Qa(C5AkBU !C@cDI!1mBNX`HF`@&D$'$H1N2dPI-KKSYKdQ&*d+,a&m@&)0Q#i#TP59(CSHQEX rT`0L%Y(`0T2`M%EE5KeIXp!')$N&EbB3`3$BSX%GX-#GE1S``DBX%Q!(1BZN#kB @2,hH%mYGc'rS0lf8jceBaR08Z0+J#&-9cl-Nrk+e5kpS`G"#qb+pZR+'d&VJdFe G$-r(r@'K9TbJXY9m`NH%1hq4TLp("ZrGFKB-QlGflS$X9`f9J@9CrNdYr"[YHaJ Fq!R[E@61CI9[1k6Z$DEGP&1RT2jG8N#)RN,ah&QNbF,X3HU0CXH)NEV#1'LRZ#[ KS24)U9NZjLbc0$#LdafTUal[X'5,1`Xq`MZ"DM&Rq0dXVZKr&dHT5BhFXje2LLD F6[eSS'@le%Z4mN,8a1A@LGX-M*4NPbRchpb'Z3,'*XY[1F8EYdY6ZH![K#6UmP5 @ba@0T"MiFB%T5`If0BCeqir`H(iEIa%Z)49`bJY&Qcl#+G,PV52PHP,@P2ZN3jh Nf[4Jp*GlG*r,(%l"#jFaqCUlT!D)6N)VSHJC%2[dmhf3!-j,MpN1NXDBfrUY+hD IcQFJ4QD"C`iT(mNrH#!jHb*R)2p0J9lfFH5--rVS#j2EqZql-2P$qKd@*R)A*NS [c'I@rejmd[Xrc[QHe[p@ealbIhdZr5p(1QMUe@jHD"r9e$Y(8@c3)U8T"N3L,A' VjbH1,+Xfe*!!)ba`,A`&T`'rfr$-cX#p`SIDZc"'DehPkS3h8`A9`Th1h-edR9P DYTN9hHXb,(G("F4QE[&EY!M553r"6f-bI$G2pPFMIT'%rX8@+GdhQDIAN!#c+S9 *28*'Km!cjfjeG4UdU'kmB4b0JYBSD'pNLcMDJmh-Tl5m*m)*04DqJiR+XVr!'H! d50!KD,#58Ir+d91C4A!P#UAA9-ZqhQqED84-d9e!56eB38d!#E-SR6K%NbeG9Cq (Qj1ISXP2cTAeelNiiKB`J,p$GBXcZ5fBc65aGc+m0UmbFSFcZHT0AHV1Zia+ffh Li%cZ`9G)i8*UVmQKQGR[PQ0deP8[MU8`19f9c"*,i5cYX5c2C[Vh,I2HXSV[E-8 mS+D+TaI+(8&UJY'p*KK0Q@#8Q@"d[`Q+`8@kjS`C@J-0CiT4GSUSd8+VXkFmel0 RGPrer8%i*"e+cVi!M)5Y%-92RaE5@i(RSUXrK3DrKVlXaY"I8Y8+#jeLTTdcN!# Bcp3lp-P%hkY#"hkrmhZ&GmaiTC!!0Y83&*jX#q&fK[8hTmck$R0,5Ka**fq+I9B fk50KS9rKF53PeDp!Yc3!ePl3LA)[#TA`q[C%[9C)+V)jLq9RHC@j0kephVa6YrQ 8lHipQrSc1fH!3C22FXpZkSZjG+1qGqS8mN"9kKA[fSNCichldI9d9cTd92V[dr( rpD@Ecm(reqZekM+@@+ZZ,bq[S#d)m2reKrK[RbRqQcMh1-(D@K5XEChHAX4`F', -YS1`GB(UTJ&DjB*!hlT3fkGBC,[p$TeUfY"#IiJZHeemqm)IM+,1k&h3K4V,MdY UYEUmTTih6Pif$N[U%$eiVV'FNb@peBmVJdL'Fi`K!IJ1PE-EF-,cNS4h+bNRpKZ EqG(0#1@Fi%"aj&1'rZ+M4,@M&N9li9`JH)H&83D'iaKiC2,&aD`+jpHU'r[NrkF $(h@#S#3aNYj*mJ4a([22dAb`CB!fL%DB8X3I$J%fk*APpbL-@4LBE"j8Pp`-k@Q b,RQ@SCqDRAZU@FlXS*,aF"La@ePUAK9efh*4Z!ld1F'@M&Z@ciNXB%B5i5BCKb2 r21`CVf%(UKTi""@'(r6,!8--P1CpG'5E0f!-VSLQ+DJD`JNB)S6p''&p,6jl6XL p(dl26KVE"mhQ+b1(1Umm3PKP+*-UUjh&4881EKfrC4+M2%,#pNKe*FLIAZV8hAa i([XacH5V[ID'dbE33pS"jHTDZEkUD[@0DR9MG@fa@PHMkfkJ'PG$I[K+$ef,aK6 QB8)iIXSq"pPhl6#D)N-$,$LF9p!Z00rX(5lALpkAC!+L4I$@B05MbZjED3pH#H" 1'fI0jhZ(fbII0`q1GKXN-aEaH#),,I`eL2KP54e*5HL*e-Uh0@21)fCQERL1k,$ `Um0h+HG$J8Z'!ZL[jBTaSN#N#j3F&R9"5Q1%ZkCi(dp+aI#kJPk3!*YTANe*Z#A e(H$#VkN)4M'j9flUGU@bjGQ@PT3UcrScmjPG6-0*PrEiPY#&&0dChPJGUqSh1m0 #&CLJhbDr[pMEEbbScM"9ML8fH,QTFUSi`#6PCdj9HZe@rUmcS&q0L-IU"[l$H(T 3&82$J5`c9)9+pkE)pJ11X8$&Xi%CP0CSX!IY1'&RD5`*M9"0#4R%rR(KJ&XQrdf akj'@G$5#PTm%e!!dbl(c`KJN8%TIic[4qEKa*NYZ1qh!S3`90'`B4(Tm3%KEEhQ )H1M!C-CK`UQ"b!$#E3I(NDJ#E&pZ!SD'mCC+((N*Sk05&Acr3r1JFG"XR*`FR44 Gk#bCCbZ$6klFVlD'h$6M5KDY%1jqaNmJRj&+fjUicFIRmdj"CdPYaaE,dKe18)4 KTXZlMmKD-b%Y3KHMk3-$A(Z"HKmm9''4-4`'Z3S2J2(!,SeIG)Ql69)'@@Lq!Yf iki9REM[3*J2F+PBTY)1LHeD3!(F8Kq5`P'D-V)2E@QD419SNL#q"%mL$2J'@RJH pk(,+`T14K,QU5i%9ljN&F&b#J*`,h1UQ(QXm$CM2fHb0pJJ1[KZq!rSYimB`SZ3 @EhC2"T!!d`G21a'aD!&90b90A$%q4fC#-N+F$eA#XCHi%TDH0[#6J01988!!!RB I&liEQ$KN&+Z92c%aSI4R-398BbprZfimlHcXD!Z2qq55cq%(*YD@2*Fa2CTYLcq EcNaF&D!lbA8b#[U%Fd,@*X`&Q58TC4T-Mq)(*"U(4cS5!6+(F)3`Di[K'*&BS-N 28D!8HNCNl'1$+2"BdA!aIbPGXX0i#iZV4c4M*ENX,k88cPe)V3)HdZ%L$@!eFm# NcR#R#KALmjRi`Aa%,L#6L6aX86b9-0M@$'`fcYT-82L`m2-1SC)qE)6&TjaSe%8 LU)'YQ4eNJLTTZbfPr65jUYea3#EXX#4N"J8[ND--DaDU(&b$FpH*H@'0hb(NLac J3'ZEP&BhP86*YJGINQHHFmY!Nc&m'A"N*A@fS+j+A"4%+2L[AZrXMVe*+VL!*5a 1"4G`YdHG`PQ4p4DT&@,)'YrE4mmH+DhhQM*U1e!c2PhM@AE-AkXV2Fc*mAepaB4 )$mfCc!eVM(42PL2Gf(#i8lFchFe0STi4edPFT,%)dfr3k+ZqZPUdjBM"T(*NEDC I!EffV4LJR5!qfmJ"%[PQ-48'CcSSl``hhZ&AGNk'PFGT`f3hTi$dLUKd4CKa+AE eSr2ZCc4PrURk+!rF-MlZ(4YZFXG6!*dr+"NlG$-),ZQAfreLlHH222BVATkP@i5 #k&j#364E+)KbK))52%3*XHi1DCfSS4NidDM5cH4@[KYK-8A1ChC%AE#S8H*'8`4 qBK4Cr[86MBDERMkHrcU!6&HIB&,[,Z#JJ@&@`$R,F`03C!q1`5kG-$T`V&3VP5I C!rr1`JG,('le6bjmh'AaXZ"&1CZm6eC`8meIR[p8RCm8',M0,kBf5Lh8D9Y@(be 5kFd2Pi2)4($DbQ-jCKPmKA[*"&1k"@MhfAIhPDhqH0#FP1&Q!M92KJ1"r(p'L#1 i4NRf[6kRf'5Cf@FX4p&M#dApBpL+aS141E,F[hE3!rVbimpZY8ej5qmfkErXl10 @r1e18ZEp*8ZDbJc4dM$'GaBY'6K-NqiVBEU!*I%882Y@8A-@XNiE2H'B)IFZGMA *EJ9*X*p01J&iNJlqQ8&5JjQ6iQBZNSSFTT'8,@B+450ir0!mqKC`-B[l9+cT(&C dA,cB1p`lIF8"rJ%3!S#@2XDS%NAJXihTrTbBF9#9"2$H089Z)4k@Y(3fS0ej`1N T`K%HJ@NG(39cF`r@k@M#RH-63hb#AdLD-Vl0DGM#haPET*%(GF6rYMU#-8G,8mP 8bSjL(l#S3QY4-)R-c9!Z[Ld3FCkZLcAB1Uh$Vlr1R!l2URR(Lad'X$E*EB2M'Y! SQYB9Z(ekc$YlZ'$2lbDk*$e2,3TBeJS4cD5ir6febQAB(Pe)FAl1+rUjMP!BdV4 $p%lDUl`eB65Bd'YPMp&FaGD-Xr4pY%fAR0G0&%lKJ1pBSXllkTKi5D+diS&fp&e 869cE#1rkp,k6cNN1+kXTHAThT9-dS6ajQMq(M1TTbRK[ed(09N(PGCh4hPM9%fU H0T@VBYVBJ1VBcP8aVDZLldq0UZUTUm%b$43G[489iNY5$HdhK+4he9BpRD+YZL[ !Ep0CPG59SlDDMMk61U$dHR`CGXJmrZ"dTrPGiq3H`k3"dQ!Gh$#0)icGffe@,1N lGBESGY)+3pRm"R*2RjSZ0fp$hSNahSkm!+-XEf6'A+%M$`C`j4UN24K4r6AM2aR l[qB("J+m,IjIIAh0f2qYVLh$Qj@9kS2phfIjFib2E+3R*bD82lUB-&XL+bAhAFK @V2L5R8p0j-!jdP9Gr&KIA509&8A6QprNpb$Ti$Y-JA9q(H"ESc@()lX`Mi5YdVh 4YJ"S5IC8c9232cL1hX*rSE9jH(F"rqZD3UR`GYEm"CJ3YdN-J8$AK5"SR[ZYYqB b35hJC8,U1Q)!4mE#YA[&J2-TU4[k9dl5JAUQVZ&r0rTh*D8eDp(`JA6UB(cillA libB9TSqR3RUec+K(`0,iG$)`Bl0*-3Z9&+*BK`%cLacl)E(3Sh#&PiA9DP'HLCY rp18MrGXbiA8ZFkIK1ZhI6#erP9XH5%ppH@9eEIhaNkTjbJ$#X14AQrEjH[-KAZ' RSImJ'A9[PJlmY`&+$jmmrlG5bm[V42pVY4A1"9kV9qX2mImqbpr1cPDVjHfmf0p qHET9lRSHVIk'SRmUN9+9bK,m2f$*6FAhjViUl1`8&IbA+K491H+5bP3Sle-09Hl G5'195$IANYEBcM@RYCBUlh&eUH"jE[mEF'kdZBe0XQA'qp2!(m$lZ+r+(4Q,(XV #Iam)a([[IeQ!rr[Nqlqq#J`JP&KGVGA@kQ[VZ2pVkkX2rYqIcrr$E-pb@Hf'#8L 6T,BGBAjFe1XZS@A4e5K'*5hIHmG4Rr`Vk%Em89ZGECr)YGb#9KbTmfXeIabdidK Y9p4fM1'GeF[a+2`TM12J"[LfSHph[aQ&l8U3!$cM$%$q8&`dJ)Pj23L[X)er`!B [pk,a8,hd3e4-2Id&Ihf$29HLZ2YXdJBrDeLIbl6QfH46$TV8'p*DTepCfhY@$Ba KS0kAeJSIIN0r9%!-kFdRYNTQ)rfXeEj)r[RH!0J2q3'J@Eii5VaS(Re,9[VD6"p I+)bZ#Lqj05UF8PqijIY[B6`&q"rGJh1NR'EUC6&9(L$@(Jm,m%r4k$bEcXY8i6' U)0i@1J0E9MAYbe4Cc1+5*)8K#"Xb$#JlmC+QT6d6lMN(!BHZEYI+V,KfVPYD3#H "FC!!X&dkhSTF$`21Pi[jebZ+d8hk2fQm22[qZ$'(GqKcFj`TFYccBpiR0JqkfTD 5C&%dXq6qiEG88$fUF8'%Q9[Jp2X$+9$A,59"r!j'ka6DHA8LKCDj%-SYX)(4qQ3 )6,lIFdXrhpGpVR$Tmel8HTYAFRG2Yl[+*4QR)a"+R&)[pPiFm@cAZ"5qb'YZjqM `M!ZZ6ml&'Gl4cVHRHcmd&"`@&$)4R6P'IYc%I"&"l&(Lk#91PDAcKG(0%8PdL!B reUV9RcHTN!"59HFMQ8%maNri$8SjhmCKfrhdf2R86AfUV6QI8-(lBkdZ[GAU+fj [L($1af@hBZ[LE6,ZFl2iFFAY8+1KI&Ye+b+'C#CC@eehZr@lBH[(0IP@6hel&m3 SmIfSae4I@hC"31dZfiqV,K!b(jqilED$Gj4mdXaRZIiNmcNFZ*qAhGSJLAE#Uap VUk[km`Ve,!ZpbZZ%0b9!Er(%!'53!##5[qSfdRrmp8H$5b5i6k#58[`[hm)%H0I jUcTlq81cmFqcNqfG-c4r+0',rEh6-i@&d+iNE)Rb!,jd%#Tc4bm+"GI$(YA,T"b "%S0Se)R'JhCZ)3ie&ibLeQL1#p!RXL6#lr`6"SkSa#A`U6RLkPLlF6ANE%+T"M* G)!-0QpFYSZY6dK1D"Af%9bAm(aG+083cSKZKZGc*B'X)AIl+pemd%rFrdUjYm#, S$8hAGP$K`)iR98R#lF94Gj16%C+1L**,K1m#$#mD$$!VhU8I8kijT#hC941%3cA 9VfVqTqTm5FeAJ#hLIrfiBKrKAiUZbrGdF[X['KFJE`JiRHJ,'PESIBR$i2`m`%Y 4jC!!FTkC,(N8mE551c,#*j@&,VdYXMZj@d23[&DYVrbX3k0%FBKA)k@3!1)"%0D hKYF&,PVLPLK$"CI$G+jm6m3P@*@'TJb&F+ZkU5bd`Tmh9ELib-DDjVSjeIbLlYb YC5pHm3C+MRSC$V)a4Ej"pl,hj$S3L,jZ688fTTZS+IBAC*Z'B%3!ClIK60K5M!X '`"!iaP%(H"fJ$h&TrQq*fQ!6'!aC#`G9@mfA%!NjUSX'9`TD"PLCaJT1UFADcdA eG`AYrbd"M)01jU%Yr2A6B,k8ZR,ZF#"lpp8%Q!'c4K6kmcGQEh"c'5ZKK!"L+Bi 3JQ'*VQcaMYe#`85CVCS3Pbe"+-QC6"9!LNMM3`Y6S!dA&cHGZ+JYA1"(kP%44(U ELcRp'GCrMV1VQ3#Z-J"j@e5)@,L2l9Ca!#bj'%dm46@8)jNM[(ci&qQK`3YR '0c1lLTZLS`j4JFTJVMMm&aXVM$KFUk`U&`F8UEHArPE&rkbd&6jXQ2r!5Xj*3q9 RShkchrD[5ql[D,"BFepF"hkm@(Y5V@BUAN6M1&8a(*58@b!*@Qjd$!FURX1'LT- fQqd!qGGd8[0JHkHRaifG[HepM!p3+1"rF3NA(P(FA[0lk4(XQr3K9$$!akM4r!0 lBpJ,kY651)0)B([NiS!1[q,8+58i[Y%GHR0FGFl@PGl3r2A46cmp3[XBpa99QV- 4AZF-iD)Vkm90!JHLl"cMe*bb3HYYh`[jIG0hM1,11+clUCPqC-i,LiYf6!+5Z6P hq,S&0aUY(T%f0b'KaS(-C*-1!HAkCT4fN!"1'4iR0d-Jq%dfeQq#-+daF)c[!Z) Jd[`rTQ-qap"Gd-0e01EJdJ291$aU(*k*@AS5pB2,#dU#cSGQ2fbhHrTi$#VGLS+ c'[1q-5QI*h%1lH6SM+5i"lV2HDQ95ReA`pj"&%lPBk`UEEGV+*i`3%V`Fa"F`Lq *@8P[K*rFdT+[P-LN6b!@*rr8*0USmdCbc&j'm%iF"'iaGhfBK'%Y1FST9q62'YQ PKF`hikLLkl)-,%HUUUk[VlTRUYjQNq0`XF#B-P%)Bcl0kAAqRZ@l[UMAeLej$VB A&SDd#BHT,6QdZp%j),!01M2dLi@KDl*-14+Rc+pF+f,$"8Be$,P0U'GSaq3ClKc K,6KX4Lj'miQ,4hV*!'NZ#lAdj[c0'562)qFJNa`2&PDrHC0VBGIK0br0P5XbE2A MENRqE@R@(*lIP9`HKJp[j,&LSLCBZ%J5&)!(IP$iN!"%Qj@arKcq*baV8CYIfV( BeFF@Rh+$aTE)dRcQ6(!m2m*r&KGr,KBRm-X0XSeQY,,Y1C1F-'lp#%F)$,bF4h* UR@R&53p)JR,dNhTc!jZZ40k!(FU!)SkR0!Yf$#q@+&f4d[+GY0YT[cZr!*@FAd$ d4*EFiPdNlq-!44JLkic-j&!#f"#04kP-'%Cm*5"Q*&CKA5LcH$p`D!a2$aGC5kG &EB@)'$r2jShq0Dm#m8%kS)E+rm0"`3DJ`f(Hm@46%`rPfAjZqJmD+dkR(da$a8m 2QCL[pIBf%#Lk0)#)+QdZTZX&EHT,GH(4fRHLQP[E(@rh,[hV"!pic&f)"T!!C0Y *'Um%0Fq`he%Hm9*Qm5-+km2H[klPZE&2eL-#JQD(+d-Vc21X0P$cQ1U3!!`0E,5 $R1(ZG6#p+H9r&SYTR`BMQUqmB6J)#"LS54md1XG"-kM&[VDpCMGLQD-8NFd(hmT 4TicGd@K,mKQUBbbJGM3)q-f5jLS)"'cp6'bK1$ccF#U%cY@IkE[1R1aK9F&Q@(j KcBXLMU6VNrDX9+XA0BH#BLC6QXQ1Z"!9[!`aQADQ-De35l0`C18U5Xi0Pk[,fej cFfCcJ6")54MKm(JQjiC)'i@[CAC&)fP2E9D86*3VQ,Q63UD1!-f19I6+'mkVlI5 l01A*"5`5!32AZmriEdrD8qGUqVcAV(mPCTF`b66!*lSjrI$J+4(KTY01C(AQNQN CT4p,96[XRNCi-Rp*`8AQR-'BJNarb@k*MNLdY#'H)-9cLKC51%$QqZ#iP*8U%6Z $(4!M6`b1dkV`-XbYdHq*GED&PR5C@kB#6)HHMhh+F$SfMaMU,859B0jT'*!!hU( "4bP-QR321fRfb+eQafclCR&N,Vd#I+l43!f&Ql04FmK"L%JFHVl+cD-YX+3IhC2 9aBqr!hZriFKAlLB"mG8(HIGppM+F@(IHbfkAqF+CL6T&D9l)f0kGKAVQR"X`)h[ RX@(h,e0,fKlj@iLfLSDl4Vdm)EA$*Y(kL"@MG%VP8k,"P3a+3$2daZl2A%fBH$H a1c6#-(NE$SGiaeUT'$EDaCJ1'mMTI[LPZ5,8jAjc4(!,V,+-bBLc$SQc!Zf[HBK 65e'LHm)4!*!!ZSl&)ErD2Y`&4ZlL"B@baMI)f*hY(648Cp3[G8ElV&(#,kIIRji e$ZKE-Z*A9[R%fL6J"I,"3fqj$%T(9[GNN!"5bY")S-J1E9MmS@R6bmCKif4[ThR 5f0j9rc%rhjcXR68icL`,bkcJ,UQMimBK`!3fb0lKbj*q,dXPSkpFISma$`'Ahab Gl"Cj@"9ABE9T5Kl!hVl)+GU2"VE3VRppe(N6"'pc#Pi#!jXUQGGBUXbVD*`h105 D1H-+"f2bGCKS+h3'GKS!E@VRP%U#PYY@$i35+LUHYV6`j'eh"UYd&Z'+R0(#*D2 5ei)I!P4keJAFSP)-brHPl'N`-YpTcHPMLCE1+ED$H26+(l4l8NcM5CBqIfPSYq! NASpMr1d%FfZMX-%Iq9F&G`laE2T&2fV,'b1G60rSNiH$S[idVRiYV4BhpH@m5`Y q-f+c5$rD8aNccC(2qp'h,&d)!ijTE)+f6N-iRdha*',Pe[[rfCX&9,#6K)kDGic #6%,Pa(N-*c(,fqp8Y9)61@XHe@@*Mb*#bT-51(4bpka9UT@9R`CBfXTTmkrTVN2 -l*!!MK&NR6q3!"bdJ)cZZa4&201'INLh`AG23-&6E54"Mq+lhk'KFQpL20!35Hh kAN`Iq,2EZCJ36cNQ"PNVNFS!i8kJXGFHHJ8f69iN4JIhXUHIG)X5H#@c4SV83m` !+$Uq&"B@0kM-YFV@4rNcqS[QcXPCXpZ,cSQ%X+'&*1b$PqINKFj5QpAL@-9Q1#K -9fq`3Q*1(hcZZEITI%D&NGB#BKYc#l+3!$UK*j+5ZB81rp3HMe(AiBK*r92pZB6 k2XIMM%[*S5T,$NIeY-V-6dp@R$-(r,5D'imdJjCEfkNU9D3ddd&E3#i#J1lS,rU YkrPTXR'P2jYTifU)4#jk6L3896Gh*)Udr@&"Umeq,XfAHr2Tbe#BFQVPN!"l&I$ S$KBAiBPQD(V)MR0DEaH6[8fdB8CEd$ZE4Y,4`KNhCV23kVDF'eHRf+DlTEPY'Vp &PcafRIJc40%[4+HCJLNP1Q664RA-fKac'bpQLU`[BFf!G'$R,2TXP+9eMa[CPl* M3+lSf164!T!!NS5`T&ATj'&XRKlD#&VFQ"A50%ETCqP&ihEUfJCa&#N6R-#&6NR V2%RKbH5!80eUaV6FiQRhCbdYbERjH["f%&eLrPGXk!ZDP5&p+Ba`$p-(`pSrZre hAr`r+TI,p8rVre'[V9,mrrVb'JEqarMrpGADbS2ppfIare2DdBGZA-MQ@+N$$,) I5VTR%)'kPf4jr),#F`![cTBM`(qB+2a)Rc%##%AU4rqcLI$fiB"E[`!Lrk8kLdM c6YCJm*0XHZNkZGaa-3mrH6Xl@pe@#fZpT($ZH%8AB#LHB0$#i*X8pXC4Bh0iFQr Rq&MF@Ji1GV(6(HGRqFMq2P,PhB2YIcEI20ml1pfUVFK2M*!!YYriVV'rYCkTfi8 5ZihRVemDajQMCI99iIRV-cLBbQq3!--Z[b(p5TP[d42i,B($bRk-RYcP0`")XEa 82k@M8*6IF&bF-ZC4LP"0MI8T*F#Jkla%L1ae9'YB#Di#(5bEMPF-6`TmF8[FaR% Ye0,hUJ)`f@S0!FDd""ak#-Qpa"J#q*dFB%2cj%j6!4DFZi$If-GmTK-+(i'Xj`B 81cRBDJFpcp[ITGADhphIH`k3!0PR9k$pAB%8M0VE1pcCha*NZ!%iG#SA(T8@0b0 [qf3,E@jD82MSq6p1N6m$i69HVPFL%pd#(q-@[HVHK&%PdY%Xi%NL+X(6+!i#,'T !I!1ifS-Ai8!AJ5Hkh1"(A3%H-4+02%SPd`Umk[JJl%HHGpBi2@[++''VK1bAS*f 3!$`2X'($IX#9iNr`j(PaF$i1Hqf01I*MQS1bRLHq6S"3f'S4hD5f6iVUUfr-'qp [e!k)*Y$49`8%(4AEhd9[+J%e1@GKTDIdMJYjPH0A4iIISpdDGQMpTliUR"`8e8+ P$Iq,i(rB2Jm%&MZUG'mmElGaI+SfYU#e5aKbbiqaE,[SKCe"m'p9q+U!"BSPH#( @pI,'%p2k"f,ljcMr%9F"9CGf,[a"0pL2ZUm(m2-6R[mVl2p9ADQZePIA9M$rcfV p`IrVmrKrdL*c'0,DkSBUe*i!4a#V*iq,AKP1dL[9$rTik39diLd@%qa!ema8h4@ X@mh824phNe3PVGSLAS0["p4jf'@KM1[!qAEH#rT8ME6&m0$'-rm#0CLBAXLdMCr 'Ja[5`cCI"U-G$()f)*hShU!6lH&j1k#8P&L-qXH1a4qI6LlEDRSkbc#GY5QciHQ Ai8aUXm'h6%mQPfQT$LfY1#eK,4i,mN[iG%'MiYZe4&8SbVL&4iXDNcbB#!H"*ma )jN1HFS@XRjaC[e4C0`%'qq0d`KDDp'%!)#aJVMNcdkM"0*BR!5+`R33q0BE@#U3 cC0mTQV%!(TS)"KHB18U28-#([%XINbY4[(5rMFf2-2j)2RLV-+lke(&K!'eRB2! pCM0``JH+33G2#cCS)Z@5)ZAh11EL0*BhiD!GA5EPAJJXkX9id-@i8X!*XA,f(I" dT*V$TU%5jkJL3dIEQ-A##m%#r*iB4-6-6Y%iEMQp8R%!EFZCJKNU&@-QliIAKcm drRPmG(+'$T2b+*h`iY$9!GhVmN,SaD(3K'6,(0L2D1BLYAd+HD%AaU"5HJe`kpG AeB[JA0B!-e6&@ZH#V#V2K&(M"i!!EX%MM!+*fEMB3SZM@iC$qLR"MdN,)JQh%P` e[!q3!$9Qi%(M%F8Q!eD0KibaN[Y03UF*b2-Q`ZQT!QkP*EUY#!GNK%-,b2Bp4Hr Kr"pq[!J3Ym9r)*p[12qA9jGA9UTirYHAPpFHc[r2(rrK5-GIm$`J+Dj8JpXq%[S 9TB0#r,"hl*EN%[cI62J)Vp+U4"XklN1jjB4qq'S"UBU4PA$r5Q1H*bmf&*6A`bV QaU)J'FN@mD3*UUQ(1D1Q,H*Kb+Z0ZHa3jLTkGbJX3(5M(e4'9b2p#8ZAHr5e3MA klja5qM(UYGd+TV34ajE1`m%5al3JHHbrKXH3!$VHTprrKYTrk[J2kh"iT2RrqPV e)Il,jp(rIIk`#AH)Qj!!kk$r)E%8K2'DYqj-1rrrpYlmVidFD4aqIX9rKC+G6@` `aMD3!!2(HBD!bIJCVKI)C-k[2mCZ3fpmVGX1)GRmlfmG1V[92JKN-c0iGi,GA5T *T9+T9#T9ECr@6QZ(Tr@cqNreXemiES*m4qi`VplXlG91b!%Vqkcd[*cM%b@DJ#` )mk)0HKV(8F@T1@bfhM8[!M`0QI#"2(a64r0UV[qf'Raihahm`D&CXGK[T*@-"`e jZ[i(A6$$!h)GUYP9Mr+NTG)"NSch5ZIRf""d2'V8G`XJbG#(&pem$QU&Xjr2e'& D+'qD4KNm,-j`A!"hIl%P(h&XFUdQ!IDQ#Ef[le0ZZGFV,41Xi%Xq"N0[%U%M2k[ (BG$Qi&k$50C+S@P"fk5I8ZXl10dG4&)V`ff8p%1MdrrHT''920dqU#@+5de3PSF HFk,k@)qcU[9jfCLm`Xfh%mfe8!PAb5a0pJH8IjAJiEHX54@XC'*qBR%[-Eq2'2a PRbemd)c'fkf@r%E"9HQJf1IFTGSrhEh,lq4IC(mKep1,(p)*hfZINj&Xj526c%G @1kNF$0`Z`-6FQ0Kc+LX*pr*Pk8NZcmm8l5erU2QpS9*pSG`@-UM2(dU+&dXb*Cb J*Z1+Fe88Ei-e1HQ6r#TG`G$r5I+"GJjcB%!@9'd)FM*c)0!lc3&KGc8A5lYjlD) K[cFACK#VDF$A9MSLDcp'6cha8U#[RMS%Yj!!i0YU!Ra9X'ZIirF`Xe5XI@(8MXE 99Ei,0"P,Pl)UI*1qC0AH1hCaP)9S!+@EQ1,k4j1aF4+6Ik466ZqD,`q5i5%Zk2! +!jjQB-b2I`V-UBal31c*GL6UH,[Km9MJk6F&QL3c5akHAc9$bJcGaV#4qTi5mJc K3)1!GX5jMS@L@E+$&mZR&FXTCa5-Ud"6em88(U*Zl@$bFD`0+(4-(,SD&bI2NVi ,2,DZPmRVN!$U)U5*L-P2+XQVN61[3USVNqcDi9k&M(N0C05P4R5`j+$)28VUJN9 @f0h!$9aJhFHmM4Z6erDG`Upj@h+4Hj*+E#pkA6,CZI5VNUS11hq!FSkIG9Nb4Ti dXX@[[,S4p'1A*h8%Pbql3dQ,Ih[31'rfqm%SLmj`fZIr!05c0l#!SaAFk(8Ipm0 cX5,`K96Zl1KQVm0Z0iM%6i0ZYpNIXpqK4YJEN!$KU60!AF4NZEmUA%&02F#dKXK hZpdeUCZ1HmThd@SUH60"3jF-iKXSP)aBU"b('(@NJ3TQGY)"N34)5+@BG(##5md QV0!,mN"XGYPQGS%2bDm9VcZ5Ka!-!"XBAa-F'Ai"Drl44DMFR`$U3CAfj$rDPbc iYX!rfha#V3arfTTXi81Z`XYm&IFfici(QKF(`IKbd-Dm@A54m340X[!,G3rbPH* lMMXR1k[VC@+F3j!!LXT*e-)Rlc(U[m,kUArT[aU+[mV"ec%r`KFABB(c,$4!04p GFq!2ZMj"%emYAN"Ck,Z-)la%*$G'5[f0AY'iM,"l9I)TYc96hT8eHN3,I'Q26F` b6q1M8HIGPUL,)1l6(1Z)8P8XNJHhCfcTKY1F!aaVP"PN3+&mdZKH%lR3UGB@l)` 9$@cV5iU2X%4d`BA$J-B!Pf'Ccke0`861kQjY9M)F5GYUPHYc#&jpH!S5-'Jr*-U c$reX4*5@EArlV,DVD6HTid(!2UCLUfEa4bjV)D%JG)p%mF16h&VCA$'6m,*K+R# $EYTZd1PZ(9,6PV6RTbT6QP,QjeJCADM-%6r8crAFl$qPQGhN,h59%AUcM45% q%B)(G*2ZXb&DR+cSI&J3$fPN&&rpmfPh)X3rRd5#[[ec[6[jjcrK3EP3lNj@R6r UkCEqqDc`V2X"jUalrfd+8q5G&Z96ZBX[ca!AmYFXcGHF+4"6`f&C+5@hC00,BB5 BfFK*criRDV9c!&2`Q1QeK[d82+e4+bBpY'$)KU#`a@@JCR-MR!CRJd0J"pV&`Q+ NH6SQ@,MBI+,&3ZN)&509L12S$NPQbEd")YG'Z@if@LbM1Ybkr(!`(1YhmJbe3I% TkFhJI6!LTkrBQLS&0H@U5N@K(HmPM%C'Dr+8*B1h%[UGa-NSjFZKmHS(DNLbmM1 +3,$FJ4*9&AT!Q,4kr*1%%ZAASdG,Q5QV9(b4ZZYPb+GLI-VFaL)N'B08R5ATiDb )!&f+Q3JVDSH"5a$46qeG9"RVqJ2mUPD0Blc4XP@VDp4UQG!5A56B"m-S,CEfM0f Z(jl96JkhpbQIUpk),1%Z`-FBpQ1L+r43lP&Jpj(MM8IaX53P6@GmAUh5CSU#2I& 2[09"dc1PPL(ZIjBiXJ[00X+el)-QG'kGbkQ6*5FA1dII5&l89PGh2$*U5Hf(21p )-LcTLl[1PTfQC-1b!j)qM"GGNGhRErQ5LmJh)RT06!Ge*VZYp''qBSZhP@Mp%T8 YKY+H+Tmc&TZiNK#lUcDC99@YVPG'9U2H,XQ-ZAJ@4KCUHQKqkV[[,MRd63ZTF@R i"h+'kF9$AN)d%(*CD!rS$`0aNjVpk!T$+*DIrF%`QN*RbVEpcdK&E$a5R4Ar+hk lrL1)mZ+hrKm$q(Il$cc1I*Kh@bbVABTDc6kU-kASBCiV9'q!)ZMabSdSrL(NBaN 8BILbqVMjQ+N+[ej8(hq8Xe!@AB8pmiGbN8YpTRr9l)EA$kU2Ic'PiGHKmf[lF8k &&&!dTHD!5$Kmc,8JYr20X$M%YS5)F8'ej()*6CHTM%%,NRqi1HD"ScL"INQZ0ST KfA#(Tb*0p"h6"STQGp!2a(R3`DfjLVSFckDBTEUCHDL"XfBc!U@BeLfpcMGR(e5 PQ5XQK0c8jmNNMKajXEVX4ETDmL3e6!@YQ[cf6QTR'C-L`ERc)fiPJ@H1UTY-8Fp T-b"TUL$Lj+!$+*GmmqfccB')dFJ(4`5U+kk!E5X0A8C,$@k,&VXaEc28F$#pX+8 #,"RppN8aYf4,RRQ%F+`#9lqe&&`jl@90FSXXqmja(l"GH2'XP%GLj"l)RD"Z6D` j8,d+l#!**#rrZMT*r+286FS3+eYT0j2E5Ip)%FA0CGN["ICJ-RBf"M6T-P*BZ`G j-EBb@j8f(dEa4QBT%H6+hI@S4Fd@#lDBXZbMM%Xc!*dXfFjkDZ@ed0LVVd+bC'Y rdaJJAS(0!I%8T(S3c2'-ZP#G`%2Y4%(+XK2I@XQ-PpI8p8a&&Q9RjGZEYL'I&1E NAJVR3ZVfDHVZLH)AcpSeLH5HD9ilTP)mp"jSkEpKfTc,GQJcC2Sfp9%UR@FZ8ra jj)i(lJILR'pCirr81rlBKKrd!d9&,84ZaVAfTX(D,Yb3!*QYlEY3Jf(fNe!a(SC ,C`#ll6%RPp`$4i3P0jj+YG9h['+H*rCZ+VN9,9YRB&qG5DY**RA2Pa`ak*`,QCJ *1UTBMSF+IdXcLU!!#Vrp`IBBbr3Z5B-NX@`S2VF4kdK'3Ll*i1+D,q6"$0P1V'H U9-Rlf&DpR**'!bp@iNBNQ*frE@)H#TYaCE-b5pBTQ49EJ1h&1$2ed44Y92%k1#h DcVjC#V35#$5L)dXaRYLm65D+KRrJhRreX6AVEH)0Ua++E3P,5mk'CRN)2#d0"eK F[9r51[)3DUhB1bMSaH1ZY'2JphfcHl*'3-D*FNUpYdVp0(HT$eDTRa1P9%396m( !+PLE8M#G'AaB"aE@)aGVE-0QDfF*(H+69M!YrVF#(H$(H52N-#D94Ah!i*XR96Z !K$p#DDb)U8V%Ga4k$BLe@qm&X&FUUU3e8I)@,(%mfIQN853EIdNLZ90epaH)Y6P fX6l%deTT[(!`fP$'**@*BlB0R6X`@`GM)H0'#-SAJ1K4BPX0623%jkkJ@!ibT*) qCSN)@G"f,'MF)'k*,Dpiqb#PUR@kA-QBmk1B,+Z@iUY3#JrBA'A*lU4ZkCm%XA@ kNUiA*a$lp!'VBI-Z93Zfl60*C+q'EUX[C2FB$d56I!@Xc#B,4GqBiIp0&pAZe[q lp'4cXmMqhqAbdbIVj2qpqE4dlrpplrpYqhqECp&eY%B"%$c2-@I(,D6HNmlLk4l KT5IVccD-arM"pXqiM6a%*q4XHI0*,TDeMcHM+%2BG6%[aMhf)"rEIRDG5PafB+" fk9G0bVN-!8hl@(BdC&rS"MVq,"255Kb"&"N8if&,*Y[,5brX9S&p)qR`"00SKAL Y6U,P9Lqha`Q8l8&%,Yd!D,,$k03`5U4E,Xll+UN+IS`VG&rR#L!k0IEUKlZ0hHf cE9MD1qYPEHJP8%#2IrE#8F3L%3m3!FS*#Xk3!,"PV4rqY,eIhfe`C3himDB@Mr! %6G5qaBkVFIC4&M%A,+IQ-iVkkRJRae&B,Xr'3cQEh6pQ"qGaEUANrL`kD2TY%[V F"AGlC5+aX@A(5A*$,Ta*Gp#r"mp9LjCA0Xjq%9@FGP!+G1`,[Xc+M!EDLjYhjmU 2@mA@lc8NhS`6PUf6IlMk%$BFj*,ibG#3!-+D@b,J$l19GjaKe5'`9$%j*+Yp-Nb )X-LU-1kVbVADI5H-jCk51A"JaiLLM%CdGRa&2Ak-@N(6h2X@DaKA%S2RY"A*ZBG !("PhN`mTlAQ#"-&Z&+*aSkI5$L4B8c'QSUL6(qN4iZ#6'q)BPCP)b!00,+#H94` Jd%-530*MhJ"GFT4A"dMjc&ZSfK3`eN8P[HBYU)'R3RMQ3Pecd&X(#TrCJ8@GZIN ARipZ!$MAh6`MM5bYbk$eVN%(Tf5PeqTq,QBdXBeQRc+HXf(,B9lZFMe(aBP$B[H )1,kjY&D`f1l!GhCXp9KjdFpb-2i9aXIVB2bVZ6hfE6NBNc[aDX+j1-*G8,2GGMb ,&lDLaBeIMVR+YS8UAlY'Pc`1bA&bqmhq@@2Rk1$iT(Ck@Mmk0#@X,5l(-28E[rc b'JS2hVRq8PCMe%QHHUBpTBL6mTNE@mk5*XXrM5eY(S15VEki(dEcXSVjqqLi[I@ Lq[Mjiebkb5I*%)#pYITB*P5)'kdmCLUC#URSVb2"2U%`*TK[e3X-EkkRH)%P1kq AGpRG`EZU,I6XJbDFSAQCkmJmDJp!I12a3,9SZ@)3*KaTSTI2M%EFjlE&bJ5+ZP* 9D8UZ`FPi%1Jc-Qb86UETYb$"*!rr!+iX2%k1Y1P#UC+*(DbT0p8BKdbei6NiA'N @ad-*,Y0@3ZVa!qNPPZ,lS9bQlXTh#E0qj"0'b'r,CmRMG5"GNDVd2QeZ%iX@jD& Jl,L+jd,5-#PMeiL2(AFH`1T!LS&jqK'R2S!Rc,Kj@mT6ACeiH15iUmmd&jH8qD& m,NJH5+F,[d1!m&DPI5LpYF5RS6Z6B8h*mZTN1AC44)dIFqj-rC4dZXSZCp8#KS[ 3kQ2PHq8mARXmdcH+(CSa'Dq(2p3+MP%iNUppfLFjC%dl[&"4K8J4qaM'20-BSJ! UHF1p(aalL&ZFa%1jTCQ&81jTjX%SYba&AcH8LdcUqe"'8fYdQUN``BFC-'EhBa- irmKU+2f3!)e"TXYiR)V-*$X-VR4B+CK6q36H1BcdMP-jrF(YMBc,YE`f"iDX4bP j3(GFreHBDciJ9SYc)%[LbRRB5[T-8+i,RQ4Hc!Nh,L0(C#Llq,QqFS6f(G-P(Rl +q%rPqSNp'!q)h)LPDB*3F0U*hkHTMQBHQEF)09#SS@#!Rr13!--9UCEABYT!9DF 2&#cP#hGC+*6T2GEb$JH%%LZLjep*qb4#2rY6(2M)0+44[0#kEfiU'p03m[@0ILk KrXcA2Hp`bI'*,8r6KLK*V4NXiKP",c&HhVKA@Rk4@ERHer),P3,M-)U9c1L8m55 G#[CTTXa*GICN+4(c!*Vcf00c6$r25(fHL6kc@0(2kJ*qE"U5KQ'2Tdr-+XZ2GjE -S2m-SH3AU(0h@,-4(4VBLq!8!8YHGY2%N!#A'j!!"Pr'$E-Bi(2'rmY5@U@ZEI8 CTiX18q2dN5&6PXBThI1VeJQI9j2rKlbHE[P)rPZ*rbK$jRjj(922rd[&pI90L[q f85U[2eerb[%ILrIaRlr+"aK@K8CHA4Ae)ca3d"'))c'KL8'Caj!!kAq5#3[3L#h 1Jh%c6j&h5mr(PhRiprQc2%d9[+DJBYeb#JPPUqDSBlIKG2#3!2-(223(HH0Md01 ch4h-,'(MKZIX"#"mf&eBe3jjPX&)$ipBS$GqN!"L!,FmbKc3(qM!2-,#CG`Ke(N ))1XM0MSJ3f$T5-$"H2%d,Q`TD0k-$28*hZSZ3i'`ZmBpBMXiReaF"#--QrYiM0T h@f)3dAA[I0$Pc'"8UAM!&E@cH%C-Dk"q%[-@9NEfAfUR"2GlLU5I9Il`+*F@GFq !*#Q$hVb[hZbKA98AYjiC&`cY[@(+@EEpqL'X!3k#q%[TX"((XlfrIi6F)d[56e) AFTL,@&YeFcQ,2kMJfFN[HbHeQLNU(f5(1I'*mT!!jAJYJBA`XkP@!Q2IGQU(CbI EqlYe0#mIL'ca3cR)14$3E'M1p[i2YHhGfJP#P$$P#E*+rI(l3$T[0f'$dfh,q1" 0F6VT(jf+$46fM6HPR!i$MJI(TlADMiePfH*f!42q)FqS2Y(VR6FRTK(b!BR`"1h SEHe`e`@("a6`d`pq@MYc`H%"aDI6i0C4"PlTd"PQI[Y$9$18-C!!ic#5G0V4q@G 3,X@1dLLN")XqFj'p`4D1-F`XGAF`0"(NmCcYR+LP3c*+*3MSK0j)f"%9-Fk$YYP Y42+FP)p8"je1&*!!AccPe+-cfLj-f[H"I)ARJcc4CHTD'Ik3!"5+P$SUc!2b"4i )Nh,,3*'rAc+MI9Vh@-'lZJc-pJY2LpZ"XP&J6-N%$A68!V&-$H#B6"Alr&Jh3NE pSL$i1US'aR&X8ZVRM`e!'64lJ[p8BXI3G)4U)'6)l`kTGT6LK4KCAJFD$L**&b+ k`3)[++X4GKbTM1ZJ%h+6JZG(3I!1Qm6)Z&,!"b@EQ2+eA@&N&+J&4c$X*&X@SK+ Y5eKYN`c"f3a-1(EN$--3XB$Y-UiqY3R$02!'hBF#Ama!S#Q8+*qNN4q0h+*ERD) 826k2"RT"389"qY"Bfl&AV!B4B!1$lP9m'+jNA0("1A&fX`0-C6-RSMI)i0'BCi5 TLqkpmDdPE!q02LMaji'&aQQ43@)h'BMX4F)0!`4fda#CG'U`q0$TAML3!%b$ZT- F1(AabD*1)V#3!"`XkiAJ&l"+9+X4SXYC#,#P$Ei6hB!Up03!&03*H9hDQ3[CPd@ D$e(R3ik%8BUmNG))4G9FXXHU*119+&p+XZ4&3%X#6-klS$(aHkGaYdSXL3PBTC( XKm1)&0UA(F"p8B$G+3[%Eq'91qJD4QV8%hBD)PN!EmKE$-@![,B-hP9d`dLSQA' D4-hcX"Z1Vhde@1KNSk!T&DHI@TM)iZI"4GM[@fPYhGCTQB[b,GC6MJ"Jb6HVU,c kEifK@RF6e$*#0X,deIJPL3Ke*RPZ5EF4B)S0!r3N((#@#NTm68&)SRGU,,Rj6X` F)*Ej9E(Bce)dI-1'58[@BXMdiZpL06S"S4q&lcPjM-BIMU@,9mVXK8,a0i6+,'@ *GQD@jM8'iG*ia5&BMC4&`V%b`IU0%L$9fr[`(SBfU%fHXjh4S!II,j5D84'6)AN [pQ&PDi5F%UEj[KQLd#K!86,fe)lf-[)N9'BH*!mTI&Br&%eB%#J5l*EN#YB"a'8 c!NB(65UDS!0HCp,&(#KdcFBqIbM`0PRZm[TMNq6S)KLrZUD)eIhm--ba4-3EKRh T4l8m$0@&d8Nr#Lm3-r[[Q$[2qLMJ83YflI4rBpr8Ppd6Tq#!'[eD!%QZj3e$T-i KBYQ3!'-AI$L[,&DB%llV0eDmJ&NhG3MdD%r9q[P1Z!9j"G3)d(EkP&9Srr59')a 3(bI1`I'p!+@pEcLSJ-'S)i'$k"r#dmX"b"FHa*pcCPQ6CpE5jA,iFmAC-(`3aK% YG&c8T0eDAl*1mXUM8!l["aa#$Z3@aY*6Hd-Fc)Gc"C!!+Ubj&bqHdI2TL+&lJ2L $apQ5ha3V[UJ#IRS5HIl5j,`$V+8RGi+f[(&RJiq6q`$Nj99IX%0q+0EB+5X+i*G `jKY$i+[q!2j$CH0pB*C+1TI'5,#P[2T@cL@[l40%aIqm6%kXj!Y6UGLaA9XP'CZ (5U22T(j6YYk8j4YfJ5aC,P+YNZ8Ke5VChP%-A,D"bcC`13i-M6&1RC+JL%%q&Im VLQ*,803J@D#F,&!bf&kdb[DE9H[95rG9LCaB2fHd1ADDp@qUIC!!lZk3!0f),+Y c`(T-8QFR1`I(@1E`#2k$-V@p0iFlCr@M3f0f5SHC`8qk1Q"4C0dGd'K3YaPI$8a Z$#r2XFV3%H%1S$i0qQ%8[NHYZSV,FS[3K,5*#b212DmU4k!XjD2MTZ95%C86L2# kb&4NiH*R[(%[PT%e0G2E9X`R'`)0T,c%T)+6K4Y8T"%lT[%&&pdkER-*V68FRVq -Af@f[P`'Pf$,3+q5j)&)1b@ErjiF"M9F[K(+UdDVpLdZ*YM62BD'AH!a&QrXK3` 4Q(JmKGr9PH`N+[YHYVV&j1&#kfEaP%Q3!&,dXc$QkeG[pM$jb-l4`3'84F2d"ZD 8i03j(+@%9+DGa-k+mXZShAT@*R!*--hd[cK[$'kYqDB,UPbm6CG1@MQMDr(LVKH Ydk!jDPh+fRC$9M`GY4P$"GQDXSam+RH,%i`UcLPEe*0AcGDl%r)J9%m1QKr`BEA iS3-IfL6eQKr#hU5RYk9ZHkhYk14i%1dTAqSPH88&lBbdcKEcbR+HBiFb-jVSHJe )92Y3U4m(h@k@[+pb'TGUh%X0L6M88ecI63mc5p*hh59)MXmqh+&Gf9$h'mlYB!G @ijBdT3$PKSNaUKqr8+f3!)ZR*!Lq`MEPk4Z3!%HS1*ZK$UqJ8+biMAUT-9+!-,X "kSdG@G1JUETi+-D$UYdLdDV"L#!+LL,2SaU8)*&i!BdeT5A+(#klIJRV3E(P4D& )BAK&[FUVda2Y4Zj'DM*ZB"aLh"#m40jJ+KDF+T8-idIH[l34e'9Aeb[`F(8epl* BbHPE+GPPV'FPc+%Af)I0S[EUTDFV*AkqFFj"&#R)Y(jCjTI&c9LKGIRm5FkkjD* R%Bk@T-0+Q)`#TIK(JFFSK+lRkV41"Zb6$+e,N!!Q5Y,XL,+6dYdYf[X,#VQLc*b 8"3[fpr58PrrcDa&mi&5U6&3dI+V&5S#da&9kJNELKkfYhhr(bfDrril(h+ALFlT QJ)XUjDMP)cd&RPRLdr!e'lB!6qZGH&C9A2KPBP@Bh9NVA#EIR'1(')4khqb'l9` H%@5@M#j1&`KaKFB*Aq"Ze'!k%@!##)hk(&Z)dbhPb@bScV%(8'4NmYPL,@6!Ji* 13V@#YB`VI0C56Z13!+9iR'jN*JkUpBR0CHM,8&&IPk1+ad#CRqaAe0*!8V55XFb e'03-VAU91Fbe!$I'[NUcMQd`M)C0XR,q@Mr1SiPQ-X5N33%XFmhZ9I-k%NA(5+a UTDJKMChGLPdVT6M$*'eSE#55@JC,VYqZQUc3LeG2NGbiDYRTm3!258hA%5)-m&a VTJ%`CTi9-`YN1I([*6#ph4kF"k#)3fpbE&q04cHhSk0C4mA&2aj8(i[(L5"K-[# 9p&k@88ST4)YcGp6i*qZP6SA-XKM*hM9l&4#*cLSLPEjB`-bi1Q!cDec+*iVL3+( a%9Eb*TTVFBK4p&rc09ajT#9*j0K5H)XrfFrC%IPmq'hZ4kdGqG#(P!aHM0ALkBA 3febZ,HhT"[rj@k&QeXc@T(0pJU[Tm(K1JNbL3MaUiLffC$ikU#Nq[@CDdQ-P(P3 pl4Irq3q8chU)M,bDI)Y2l4TIEHq#I%*",$XmrA"R"KY(KILKd8`#chd8&$rr8H) Xl4aSHMZ64e-c@kVAGVQak(*@T,PiMXNLGe#c4pi52LqmM9haN9TUGSNihrkapQG cF*b`Bi+AP$US'+P3jA-3q*9b8)XhK5da[CTCmLirfIQlap@jXYmqmf5$Fe4)(+@ *UZS!Y$qUdM)9UDf@c(j"cbJHqh*89HS,KMXe)A#b8L(+`BjJ5@ZVjLNmC-ZTbR[ *'L[T8&),*$iQK3Xe+G6T@'pNAaAf!`eK3pKQCD1!#UqhU"2i'0BXJGihSeaHEGU M3')lH(0kKQSS$DZ0*4%r@4kSYp#,`d!8-V&c*ecSGB[l!c%F$8$,l*%2Qprq`l3 J"GJ+h8SRmPTM",QMeheJV[M#Me8IEjpX(mJ,epBS-Ki6A'AeC@,m(m6Z1IP#[R8 i0fP'63$!)arTA8TNl9'8kU-(R#kBa)q8eHM,a@*jD(Y%k,0G*2%K%M)B0NG0qk$ Hm@6U"d'E%[PqiA$%`Lb6ji6GX-3B*A`jR(lFhKJZ1ALV-!)826U0iZ*Xe1a(j(9 QmKl61D'9aaMA#NiAR%91S!d4H8J(c5MXSS&4@l2S)S%@iLUqe1#X0k'lQYP*9cl ,Lq'iPl11Yr5ELSS1!fL@%FSp"TXBQ)QmrbP2F`ab5Y-Vdq@0HhBN(CQNM%Sq+Ri SGA)L"MI!Ui!+$Mi%QN2B@M'hKLF918a%kCD5&e9e+B@rZ&FV8UPL'IkZP*ir+f* 4Tkbm0XYPm@K+p8)!JVeRA"lra"SD@JfeLd'TTlUTXAEbC9jGU,cX&!0Ub0!Sa"[ !ik)qhEh$F4`LXDJ2V!EplV9fSIFFJbDc'G99dD-p[8`)ip'jf-GeAeNHQX40AiV -R-RG!*29%)hR*Lf5@43rUJ1"[0ihmplCa'l#Ykr)BC9-CMHSLqEd-VP0lU(AT,m Zmrl,DP-pff%pceqC9!*06A3AEM%Zbpk%Y@l14lF`m0C`hm,3@J0k+i0RKNaiaXH l(RSRD#A9AF`hHA5F*N-FE5T,dJKHaEPC3rYSB''ARDYBMUaZ&q0Vq*5NFrlZH6X A0a1C)jb,%&fNb-ZRHaS%lcLKeaGS$XCd)r@f21U"#9r0&ALDXPfCDH1K,H"9`!B G@Mekf!qprA1F,jEmQdr9Z%G-!bIG`e+L5LXI+--rU0*UA0Sihb`k"C)EZq4Q90G YNV#mjbYQX@CiGk5,i'Z`TRTVD0%EpYD3!#@GZ"G&lBjN)Zr0$(4b6IBVQGPN&Te (hT`jmlHU0@VG9JGMD9K[#fdL$qbYM69C%(6B`e[(bVFflJ#[XK2G&QDb#U)A2*R +EJfY&DAQYRM"#QTc5bMeJP4`,i(03NrVdNSeKCRNNZ-)IBjaS*GbDA4`cpYaXG9 (fQlDDJIrLq6kVf-3,PZ9V+3aZd`fKmHeZXkU51q0NaNkAL5ZL#MIZ"4d,qACFl, S5lBp@dIMPPiS6mK9h4Ji4GTJG-Dda!**Si4ZH,UBY&+QMBr4P'im2McYArKdVY` F"1ILP44bqc8jf4MUV6T'6kSmp$U[ES[Up+G,@X@bic3Q5*NfSYaH0DDqpL9(eG, 2EckU+e2)*eCM)kikPMjY*Gh&&1E3Q[,0H81+lKHqAB5C[V+DP@R#IqiCV%T-Qm8 HMIqrbP1b2BUV%Xhc#3Ue4EXa4rRC3ThQh)#M01(6'-TXqJa(,9PE`DUeYCU03bp PIQ6kGG9l9hNTlZ(pEGUY-p2XeM&lb-hX)&pQ#lPpBmCG'$4ZfDMa,CNTP*2BE$1 C20S`3mf"SffMR$@5[S'd3DdKmSq3!)YAd6j*H@1P2JdmTZRBA9Tjf0h"8dKplff HQ64P)YQRQZRRFNRccDdFmRJ0-hMBilNX5Y$UqLkY0YLJZBIq%C4flQNkJb35Vbh VTJfAM&P*%@DAZ,KpJaI23Q6J-bR#+dQjZqM3iph)a8EH[E4hZ0XifQ[Xedr2m#q jh(%jd33C,BehiUSCFD#"*[T#&UCcMdS"1XHKlT+9r[@,6A`2NL52iI$d9TDe1'Q P91A6a83#e9QB8YJAG992-*N9%HF`Gk-N9LKGA5U-e(@RSG(ULcYA9PBU9Q,G@jN YBZlj)ZjNaTb0VLN+KVc83%aVa(IX4!qRbYk![6EM&cA)5`p6FC!!bT)Ak$e"rJl HHbT@KK&fYGf#"mldNbH+%3F#+SJkZ[h#X!44BSBAC0NTFe)KdfPKdfHL583V&5& (-I&FTBQYq,ErVV1fTekK5CR9m8!,TmhhJ9ReNp0&[Pp%(PM*FbKS[@P[lQA9&fN UjlXel@#m94'6@A)kM`Pmc'c%6#*q)M#F*kL%NaIEm8,5MLSQLlZGN!$AA)d%(F4 -Gk68EcikVC3SGVeA[fDZFV@Q"0DmG+"+[-LYPNbaK#K3pM[[T%XLXb@-aH8**PF Ee*M65&T@E1ALmcRML%q!G)Fc6@m"`,546C0MY#-h)AeN[+QB8lZ+c#,%MMjZDJe `UHqhVYh33K*"Na*)JqBZ"D'-P##ET5H$FDP8ZchTGdD*ZMKd)%BI3%heTqC)HM@ c4bL[4US5ZhCc4e![EGJHYb#(,F,`3lN8[`VUUcA`1kV(2h!IXe&HYmc9Yf&qq5- kaF'm-CYblZ%R,)[,3PHNjGKb@Kd9&4"UfBqH4DGepTR(`jjQIV,AE9kBfa&aNkc eP(!e9'8*prXPDm!ii8*U@r9lEd[jEFTaURrTMjR9@DAKD6Vr@@Xb(%AQkakUEK6 A[qa3P8CdqTN#c(j6Gp,13aJH9"1UhT8-"*VUbC[ZIfaD4jcfK3FrFh6a*[hc(-L QqLcV("C*dqeXY132rqK4CXVePhQ3!*JF!cNRI--F2"0MecJp+G'EpQ6%B9hde-Z ,XM9UHC(GD,"'P(%NaCGES#mIXCTi**l4@McGrAc"RY"k3Q0bHaf+(ce6jq3qjL[ d4KjqheTr2)ITkVVRJPfD+3m@1&fIeK-(MDG(EMAT)f#YJ5[+*6@fT-lA*@ZaRG' Ve&@f+Qk`ALjjJXfZ*,5#p*AEkV+M,d`K63c1e9GY[FQkK@[&cZ*BNM1FDq1A(2S $`G(J881dGlamcm&rZCA(B)T9+R%RBQkV*Mii4FeAUA'fiQHd`[N$YfPAZDQ44Q0 Km'i@Dp36Mmq,j#XBh[bEGFpP$*a5#ec(F'EXM!d#l!mHZIZ$4fREJNIqMB"p-m[ UR#YTr#11-c#05A)CfcSQR)Y(+@9bkZ+U[cE[1-Db%UDeG2@P&5DiQVAM6PK"[bR rD8Vjp-e&qKBT$9HD1%[C5UALm3A60AkPme"#N43Y+$U1Z,HFI6A13hJb*k6f0a( *f)T'FK-ppJCUUhm0A5)a+*+,P`GKP8QEeNN650LV3eCQP#5+T%)N'L1UEZl)fFf IJTkNT03)TS#PE'fVkEYHGAGQ+Pm8k,ja!ddcePlm!Bd-XqC-$"mTB$k+)rV5`+! 2156Sl*)B+TrN'2aGS0aJf2ch*&#*@)FG++8ZQ'"Tj$8C(l`1A&r12TU1,bp@$lC rEVap96mlc9(pGPi[PXkc+HR--#XM,RTa8aL3!&IK1%,GBYLNQ0-[4*&1h)*Z&d- JM"f0KE*bX+fVB(KY@4`1k$LL1@DP4m80dp(34m'r*b'`hM)'%Z&&q@&ldZYG2k5 !U$BU$PR0KMiG#&Y'-mAXD43'%aU)El["f)RP5S&+fMBfPDZfFATf8YXq3+0e3GJ !p6iIHZ4&++15i'`9cI0Sd*d!%DkGXRLLdCa!cqVLA4q$!Y)&E!ZG8N(1"a5A4AF !P6`Rf$LUM&E"0A+e5CI1b4$Lm650XlCdSM)2IUH0XfT)E,)%Ri*-@jT-*2aCk01 h#X+l3mL3!&CKDDfceTk#LV#V0`dFhmUVV996&9a24&VAb-dC&(6Ne[K"'-Dr8K& mC&U#+jTbY+[SF5!bJ"L'j$d%1b$('Je&#YEK(*f8Zc(KZ5JP"U$61'i2aTl65&8 ),AAkCX8ATK0ak'lVdSCm8H5lJVb&D3hDJA-)hqcc'b*19Zm9DG082q*hHBcm3jN 8'!Qq-ac&$h2T1adNVEh68@Gr''3+LC3mjb1KV#+YU@KMP'MDkq9"Hb$T0eMmdNh 3cIFGk4+qkQ28kBVHl20&UAr0S5IUA-*cZajJXZeU2*lFV%P+)E&C$mKL,0M1FSk 'F-lC,8[5p+DaAY*YHEQB1-4f,e!Pf3DjhXAUXFidjkd1%d15ZMjel'*5VqUa!fF A@B'NFbTjmp*XS5KSClMk9qfd54AP`ES)mKFD'@mDEGcc8Y@QU@b#K8D'0R4j&b0 l1`l!dp6M0'r%1GHrP5QhMaG8Yj2apcaR5BiIm4`62+q*P5rP&fqUkiVXEFkmK+S DeL+(lB88TG@U9AL*)LM1*A0),mJNJb@b$*U$IT8jDNUS)%jEGI$!qIH!8X"DNh* hJ(QTmU'B13m68Zc&p2[aFrC06Q"Z4kSLjDRHpDTI%!(&dPZ5ibhM4aBVi3Z*KY2 $,p&&K$PAS*8`&pYK1f%"X[-ae8UBihC0C8410&6PK%2CU9$QD(r1ITJ#NKDjbRa cbPkPB&C*3Ll#jAK$DG&Lb!Q,PG-U`mVLaD#4GUN&f0eB,',9XK,T2V3ZU2"8CEH )-m4a0"Qr)JQIelqhF90-b0KCMB53!&J'1F13!"8,"i"V@BGDEDFlL5kVX)[pjA# RXEIrj[3(PU'abQE2+pe"3UhVRPe3M3IALqIr5l1d62pqY*TCXNjFjq8HICLCA@a rM3S#L`JL)HEb"QhfX)i%4,QaTV`NT*PMTMf(d14Le+HKAC6iDT!!dCA,3E3D'p@ C+ji50!Qj0SrNd6b3!+iHU'JpXX'jh,`,Z$2bUdQjDrMFQ@1U2THmUr'T&FX(V6L 56Q9YJiqM['5T&Y+EreHTLf+,0iN9#`9DQI&Be`d&r*RYi9Bec[Q+`Z*ePRZ0+4T Yii'G&bpT9c+EjSq03DI6F$E1C0QE*`VCAhLAUdG8dLFhrqc6Bk*56Xb`QH4&NG+ 0X%dRhCi4$$Trme&CbXbj5i`Y#Nk)qP*&heJd4JCccBr%K(dUl$A,LD`-0RKql6P 8aa0E%VjKC)kD9kArUBcpSBkKlDUbD(j$RkBSVbeP4'+GUYV*FKR(52')hA#V%L5 (pVq3!%b"613mTM5c$),6$mE*EYm#j1F"H63BE!mN0V3jbXlDU13fdHUSE$,DrkA 4X8m"rY(1kI0R5&SVVC*XbL20[50H&&'H8NhDj$MeML6H#ZM@c%NUQ`F4jH,'`5r cIm"G'$hS$kjFIpEa`*NhI`l4DEFFYkf,(@L[mUUib1QepRr`CAfJP!!Z-5d,Rrf ##r%`Z'j#TU5@($%`R!#U&HTP`T6TC0*Ba'kdU(Z"1ZYBK)Mcq"Tl8cAB&-UAm[0 BHhbSlH%bNq'c%bE@H%&4eXQC%9p*RZZUGNjfL%G4GMATm$*`&Q13!1Eb@MG!UUY &&i2"P*Y&LGL`FlY6rEf1#fkfC(qDCGbLVFQ$p+f4mDj`(0B9)l!$5QD'$iYMXXY 9jR)@-S'8Cj[6l20hmYhRc@+YhjkeAma9&R+INFG8-cef-[+`03&39@N&r&X3H9- hPP8SSRY,5L13!!%6mNT2dIHrTDk!HJ#&PhJekIJd#Krmc)00mU'd6b*I&$1cSrk UL[5934dP3$A3Fe-`jBDq+M(c[VL9ESJdb#q,pH`FLTJfZ!FG,rQ'Va0i2H1HTb3 KdLqrQ$MM+qAbh)Z+D8h46I&UL+RL[-L8VIjJ*pD"4$4VcH%%VFUI6$1@FVYNph( &Lbmp41$!)PDB'Jq)DV@p[&NQr-qCrlRra$rS4,4D+T3+kf[Spc!+cpGk)-G!$+h 4+Pqir2)kB1bIE'b)ra'PM@+T,2"hkFN6qJZIm[Sk2"420SXEaFhbjT-0H&XZEfl mMlJIRE[rV#d,1FjLG4AG3@+H(jK,5NEYRe"qE[)k`rNXVi#*BU'd#E[9F6-[$N! LPjk2,r2`lr0Rq3aR`T5TGd4f*dI2aHZ`LrKq'R5lcIkBS-i55Cp3E35PRj6QPV3 %N!"pS2"VrCM$@(0@bh'S%dSGriLj#FU&iXB&Ll5hBIpAG#I$Lm2iDM`BG#2brc* &bAHZeQq0VSGMkE3QHT2Z1"6["pe*c`3HbR+f)I693@e9TdiL"%IGYV!1!#01rR4 q,3E`JYY9+Ra)&ZEHre!r&I$rl81a[Arm`lEiUACb@Mmk,)MY-hjjHVEpZLD1pX4 ZlDIDrY(aF3fc`qA&kG&"$FSGe`ASfUGR*fpfcYkFe)MZJ'cRKqe$+&Br&(Y[m,R #+aimS)5FiZefr8cXe@UlVlChIK60XHJe`bjC2lkr!LR3`q4Ed#XDlM"#9laZ0"# Air&`DfhYkZUUB%1YSIr3EVHV"-HiaqR4NBb8i)[CSGm199JQG0j$FQ1k,*!!2"1 QriJh(bE[%l(F9NCCHU*"Chc9C0qQi@M`2Q`$T4mhSp8`HXa4dr(FTpR(E'[-a*M 9V$IXXRX9&"d"fedA"2SEiXf2plJ8AB9bQp+F!))4jQNAPlM"kiB8S,p$QXfeD$H a[fJVSRbU''p)@Df`1bS9NQSNZB-G"k0H'+RNUaGB264j2%#%Jci&9CR3PX[ZRDT `1"R"!Nrle,$IkNlSNJXYHD-@D*ZL1B5HFGb)+-mA@!"a&bhY1'$`Ha4S!J24aS! )I@Qlek"S6FlrC@@[k3a`cL&qh#b-3XV,&K(P5`8J2R32TR,B6r552H0NFMRSkLK !`JIBc3TQF0A[H9UfZXf`akBZI(Ne'XJ!'S`H1UA*KpGd%#C"(mB8BJBpB),fT$A 'cJX3(V#Cl3EY#e)`T1SV)84ld*VJF`i-GM@B`2LH5e4!ae%!&-@K`FfTh*4+EeQ Dj@@BN!")@(5#(8a'V8$C!b2Y'ML%VQ'NrPjcK"QfB,FE69UAH5P90*'i5TG5#(` H)2ApT)!bk`@H!S!NE''`jfY&p&(3'lbAqVGX)[%PFT!!E+Xpbi!Y85d(kBpXCQb HI!'I45`PUq"3*&*"l0#mKhm,V6BJTdNrR*b[B9(8')#mDd"'D&+`q[aTFEe8@Jd riJU#jBrI[891ZB4HNK4T#XbFT'1HS26C5Y3cI%GGTiT'Jr0f%,9S4F,l3bUc-bD fD2bJ-p$+RbVTG+24'RBR%IkRGL%2Gak#cKY2%0hiGErq#[(`,!XiTf,KmU%0+EL 5GKCNE4eN,8Ae%2rj6q`j219A5'&+8Ba$bZp`mVbY(kkAmaLj@cBDQ(K!,VED!#c (&C3bi,&a`)l80+6Nd,kFdj+ZeB`SSHciHKKJ4cM3R6KVAXJG8k-K2XQJ"VJU9F4 RSGp8K#jRS*IPeiV-Z+dJf#jV[@5kD0,,%$3c2eRBH0KPI+&RXUZPBKb-h&CMU16 M'#5XP,-U0GXj6`1KmV),ELkPq-(AAA$RpSd(I--&erBbiFHq55Q89GSBjD&X,QC cI,`%$c"m)a*N1%IE0bFYUGMimE*H!#MENHA[$jX!A#e@a@r&r1Ec2mbY2dk9%NI !i$B#5X2L,Bj[+QjaI!55%QBHeYcZNlj)KF[VXEVEcHYBBFa%)dd@25$-*4BXjGG ,XB+$C+-4@PAlImhqT$QkjPT,XF+BMbC@+ck+U+VRciU&3VQiX8&P2NZL9fM!iPQ +6""+0BE5K%2qj9D`brUa$)##bfiNrFmjJ*2@0pa`+LVGAi`&BLeS4#E`KaeSV', hE9Tq6q2d-62TSA@iSN`C$Y0CYUDB)5X@G)l)'ZY)*D-*E#*%+U,L$ebpD&dKSMC pei"6b'9Z2841UL5jf&IFk3Q08+H#[5BX'k$cacpPHCS'e5@`bF3%P53fIS'kQGS %6F''q3JULBS"fdA3$h#%T"STcX-a!8pYQqGb'Q1cErI)HfkcHbV6"L6TeX@9U`F i1!paNi+qFUDX([Cf`pZf85[C84P6BR@pR,lUE%cVUE`dBh,FfKHHN!"4dl%*1jY @hiH3!2Kd1N)r1[HL[G9A(G*)jRZFLq-5BDF90[X!fSG`"MClFXZfaI04TQ#cQF6 *"f"0"cZ$*QIMR+0a9KS!0eqcNad'G%kj,BUQBV-b!,MBe)XdE"ZaVXVe@bA0U%L aCNGFpP[+[4(*d"k3!-fDL(R,1[4Y+CEQb3G6MX(i!ZbKKaMRY909MUm'K[QbTMk 008IQ%0Le+9b`5DB)Ke94NKBEh$Ic9TJZ*NC@'-3X+FXJLeZpB5i986Q"#,APUFK #h9P-JJf2!(KU(F9m%L%ZEN'R1D%&kKS9R-%``#M61"fZSh(3bbaaT59F$6&*Hai i#Vl+*1pdK5Sc+jFjjQZ,jc(A)h(A@HGadb1ccTG+mfHGPl"rYDcc8l1(a[2Uk6' kZd5VhfkDeEN5HbBc%E,Vql4FRTUUhf)fdmbm*jXT29IK0raCqSaDS8j"&5hqG!I !U+cIhSFX9fmma`9S+M`IJ@!,C-Ti&9NbZD1B+a"jkK5rmc$Tmd5k[Sh@rGFLHFm 1)*bB-m*X2reaJ[-'B+SkFpGaQlrGU-fCq40CT)LX@HPJ$9"+8P9Kl9V6mKY-5j3 U(-8m,HR"P15R`YRq*41IcT1YPpebilP8mR)4-U3ak`XG-#NpM5rrQl@-JiIi+iQ RlmVVdHdeqi'5qB6q2,!mGNdjl,BRme@k'h'1DiiRTXSRh+KY3dZb"DBmYF!h@P2 D8-"#YQrhMZ0S2F@l@p(0bCb89h&-2#XPbbJ2"58'DRk#9kE4$kIDVDpiGTJllJc XCSfj,"DS18qV)IU5Sa)T`R'H25p9Y"1b)iCM2TXL(4%2$,1UN!"q)T9$9E(YcNR ETh4C(YG@8pHV@`hL0c0Dhl`1TM2dqaNHXRIR(qY'3C`[)NI+@VSNK(Dfep,4GVR AICi92@Af0Bhlf#ScBU[-ZLH@bSq,hdLEFZmTYCBEhl'Drel)Y&h58S*6jH0dGVf r@q5XLRqQUd5qir[2jL5HrU)&PNrlF3fkpq@lCIp2G1*Uh8BGdrdr0dXE'dr4rh1 M[2&dmqRk1V`Y25dr[IIrr%VqRc61d[X6a-mAHhb5k'@A8XHjL,HIfVhQ464ZKi2 #j8[h%IRFZ-p38hHH'FmFm`6VHkM&aZRClNlQ(mTMMM($Fm,L20@iA9M9#TBh%ZR K%DrZM4mb-MqL@Y9!G[8(bP[Q(m,#4@mX9-EIL13c!NXh%*EA%IUQY45d2)F-PHe kG9GQ+*(($qhJI(*a!9)@&2E(Z+4KJK2#)+,VhMNkZpUH8Y,pmf"lYrEU&kKDeZ` m*NqC$d@+"MrX0XHi[`0!2#6[NjY4h'p+KjE5$LhkLFL@RU`r3eHA4*PibKqVF2b 9b*BhRb4a8("Jd`N6[cJRXMf+-XUrFYBS8N&j+FF8eEGdFZ)6h5(+NB-Nr+fB*3H d#Y9%6eBe)&Njb$N3XCL)!&%+e,j3e"qr$pJSJbSNqJM6f8Uf+8iRrD06XB%5ZI' QC,bmF*G!0cb@PDpC!6l1m+U-Z+BCmJ&bDbP"3(TE1pae`6'`*Tk$qX&2DfFZ1$a !m+)'Y`acH*HTTGbrIrZ$ir8mT,d5L4$M'Zja#aF2+jCR'4*dGrYXZe%ra$q[J,) rLZa'mIQ6eHc'mJB-XJDeL(k`rEUq)b4(kh3U#P!1S31+J19Lb38%NX6`-H#6iLB $DXLprHhA$DX"MD1p2D3339XeRqciS!JXb'9mM'Di#2J-jqE'%aVlQ2Y+0qbr#d" k4@-mB'kH`baiTf0h5RH@q8#Ab6*XAZ%G(VDC#49"U)'(CShif`i1Bc[eYI*"P1D -cS5-BmS6[0P&9EiR4Bfe&5@'`XEmjQ1&2r!NI@U(+V0)TAepTU*CCQZqkG9-H24 a8H#*0L+,Zme#lkb2$4PLPrr%hGCS+fNJT(Qa3iHS-X3[1bq%&+3rF6G4q@Q88&0 A`Ac4''PZ,bV[KcV[*A%`H9-!!d[Y0Zil9k0`2)Cp"1h!pFjH`X9m2-aGD0j39&5 AI$N(h#4NY&ZE,q'`h1"G8p03JC'pBIF(G@R1EJ%lr%KA0PN[0EmMcIl1RM(T"51 ,'T3allBBDX3+'$hB8Vfib'2,*S9X8GITT4Peil59m**+HR#T6Ea&Z)*X&XDfFSI d0lfkre%"G0+3!+2X1M&6!aibR3I84+p(Q1[@Y9l'+5)M#bYrQ-6d`#*dc-'Z,,# DH1HKX$-AFK)MRTZX5GQ1Lp6Z2PF!C,&R$c!q@`M8D3G@TfC2*qP95&YNCfJ8*He ZL9BBRp6dH0#2$E"[I*PFjm%&Y!dQ9"b40[fSc6`#pLeEYh8%DY!jVU!`#,Kd@k+ 6Cq3-58Fk&iaUSapF'B"XEMkjfQf(FKcE)BCkQ!kH5iS#*i(&e0)j'A#+!P1d3jQ jhVN+5meBIHNZJI+QZDLi3,i&$af)iR#HC908rCU0ZM"VKE-QqRa@3d&(Ba34ha! D)(*c8jSl+N2ETK0K*LBk2UlkU'9kVr4VE+"$%bk)a95(h3lLNY3`EFKfZpi13N1 kUNIG,Jk)AU+a"RKL&Q%G,F"$bX9ULP2IV9KfG*(Q@0NRQfd@YXJYGK8QC%jDibL !QMNJTkXL(%R(6(BC5@H45FRB('eXQ8bUT1"EfA@kh@V9cD5MS[lAMa1jB%`KPbC f-Kk,'@I6-Nd%'Dj6e6Q)iXPrTMGEhQ@hH0KT4NAIe#(D80JDKfibC,Bpri*qr#k q9,i3!mQ,L[XmY(klJc)Hf%0LL6Q[!++i13V`Nd-![`#F6@'RbRKj(k9R8cXK-K+ )Bh"a[Y"mE)hG,0+)&d,20+eDUZ%``BK55T[Ub#Bd!`P15!dM4a$H2Z,'NGU9ZY6 mNE2+@V&e$HY3G&dh2+kXBbA-9CHcQPFT(1iFLpY+eFHBUB4FpB+E'@+MXaI0S1m TkLb+b#mUai14RUJafD+jJh&fP84AUL2&$j`U4@qLYX4%5f@Z99CcSCIB,d8aPjK F(HUMBBqmaBdq,2P5(R[-!6UQ6$iVA-I8#6Gp,'l6m8%Dc+Uhpk(VqT2aF$*'9q% ZAaF3qkH[6$iEFUd-hk06JVb&e6qRV9#9[0M,H(UeJDl9Bia@JrNDm3QLBJZIi89 3T(R(#pAp4-GMH-E*6-MRm,`QImJ61&H$#ZSd&$*-$T54m"CRQmK6%R&&lfBB@#h pVQN&eU6I0[k`B18bK[+N6p'-4"mNSN3KqL"5,!l'd[dr%NYG,[Y"2",&$jf1Y6j m%#pI9X8cQi-XMNB&Kb[*mk8#PfApV1U)f#3l@RTHJTB`6AT"$ce%F9aBA@S(dAM 'Z-a#PQ8FX4%bk"FI)G,LUR&9`Z$kUS2fqGDRZ+3V8d36pUch%Hd%Ci0G0KKNKq0 HAKS2FZT'$8$$YRIFUrJ-$2Ep2Ebb5Gh&AcNSXIT5hHh8E)LrAZ+96X0cq'LeLXm -YaRB*+5#BdE-U0$,9+R)CV1UBVc+QK-V)VYHKJA*2"ld9dSjHV&C`MH)&AkrH#& +6h,L2bE(RLi5"DfeXN4&T'"%BCqHPBXEcl!#YpYij4EjqA2QpZ@emQ14[[R+jd0 HI)#ZbXXTH3bk%26EZ8cFT9G"'0jQ5$@JYRd#IZ"'XC*iJ8HE8TpKN!##0"J"%h6 3V'-DNQAd(!e2r+piH(Aq8'b*KmhcKjDa))iPVXe+dF-l1UYDEDc"LY'9*iBTjd$ lE%iF6mi#DS@&Y+Kc&T4YeM%[ip[U4kSjPXQ-BS0,9$KR(,VQ(&Z,r5VR8+[U9AF kj&RS*i'ALP*KAkD@f)1Y!dFcSq8qXSR%ifiN@Hm`Z',hCVaD)eG4GCXYcjDar*a @CMi!PSj,E0A1#j2!f(jm%i4mX51*86kI'f9,"G*M@brkr,`2T#UXjUG4'H,h"-d 8j$Fie2JFVCA,6+p+`YS3lhr&R#9ik6-9!rGh#JSE`'kq$TkR")K+XUPq%b&mmS6 &KPZK5`cch+R&hTP,V`$-8b!9%D2T8,kp&0Q"d(DJ398Skq4C&9P[#Y8CZ&+RXj8 *P#IZkNZr%!,Y0ckEZC2UbPKXGX8-,`Ml3&(%DfkK-*GbcMX%3q,(,8[kqF29KeE cjCM%SHha-V,384eM)#"JS3+&6dIVY2R"31PXm!iKBB)NKaVT#r*EkLLHYVKE3m) #fc`*rU!Dha!Qm,NPA&1%&cT&fhSN%Bel(qQqFYj&R(2%Xm4,*e9QU8(@TCP@V6k M3$RUeh20VhE"re4&19QbR!DlNB3YTF%qU6MY9,Nfp)**6eAZANGDb(I6eeX#mCf 9HS(X8e",+H!`QVC'`$8R$KRP`B(V(,!5imf9HCFb[da9q"`CTkMRR++L4,%cGV- a)VAa16d5DIZRV,HD[&4KNiiEq3e*-#YmKJU*Fj1D9MC8ABj[9,kXaf9"I%m8[R, ajNLH+53@CpmF@kNB3bFeK*XM,-F35M'K"fGaM*TX483#S`ZcpUC$@LiQN!$KB6A aq)eaEX4a5Qrl,m1U"pUCccFIQI@LJc#T6YiFFpR"V,60Qq1c#&SQJR,iMak(rY! q$QTCM#rbLeIia+d`U44m!8UjA&V"5,L1fql$-jF,Ek-2cf*pX%+Jd(bqS9L0LiM i@QK`@bFCVJEZR'BXTe58@"`TAb#!+c6QU#0H8A*[FF-DR@ElmK8ZCjhS,EP%cER d9UT&q9EDPTP((I"5d0ibH05#+CXFheN`V0jN"8jkJ8P4UMFE,Y[CQT0LX,JEU1% XNr3VYJpC!$X[ie1$G5NhSPZS,ElHhcCLDq@rEG5f$R"VZ09LLdjM!J0T6[SBpE9 rQc3hGEKaZqkfXN5B-+Hk@kX[U9IF,ZU%#FbT`UQ$V"P1HbL9YHH`8lIAbS@MRjA bpZl*HmaTc$%U(F+-"X9lNGD`4'qY"LEHZ3fGfiihafH"6MXlfQ6Hif)P&FT1i@i P&8q#@kRLj3[AJpK6K"2lKIh%MMQ4e*8!TJaIE$H2b8*MCV*2F@Z-V1-M1EKJ&qP ,!q0%+ATiS0%*$)(*'@`kl'$Br2H%J1NHDbGAY(`YH*MD!IP[er[KZ)c'&kZi00` Q$,qQBhQaHV$pFq2YUrVCD9l!dmC"lD#aMr(Lmk+BLcN%@9N[2DBNVkQMP,6-HE# N'`m9JPK''lqeRS)peIX*DchG(G9q1@N@E#Z"R(13!'Tj[[NY[LTIc*FEEEr3cPU FejUEQ(-dIh6A8fFkNF*M$q08XrC$lA6S1UfPcVTBA9TUaUfD+F,&kIZR0-mARdc *1hBRRbhZ[bjp2A0YZXh3,dYQbQ*rXEPNXXG&ETSi64NUE`jY8fmbP@Z-E&8T#a0 L%1Sq21,8fERjk@Q5%DFY+FQXa-)5QCrplRba2MXHQrN`k41C-KYIT!e[NU0Xjd% rYKJTipk(mb"*$-KmES9k6dZl@6rVjA`EBIpff#[EFLYKE0Jr*C!!T9$CliBiBi) Y8NJfF@A4)P$0)Q@8QV4iQANV5TY#+58rakD*P"j1bPrr+Zmp-r5Xl(q5*9Xlhmq X+'94PN)rXj!!i*AVF@,MCVQ5qi4ajAijr[-XahSN&ep3CbbQHrA$ZV18hX%bDJN &DpG`HRC5fcl!#qH1S8&0C%T%)+2[p$()A0FaJ@5RY21PG*+`Ti4hjrj0X@f#CDF B,+B*KT5ZIr*a"'8qGFBbPl*rpCplImjmkFQHXp1iM81qQF2K9KcRi0Xm'rb5TS4 priRL2)Bkrr8a(QIMiTIh(l,2bmkaY[Y1qG8e16q&TPSGV@YIG$Yi-QV`9*6ZQak (L58pZ5P4UQfEp23Tc4PM4C3f%UP8dfIMe0'iQFRFRJSq#hGU[I0BUfrH,1p%QGk BkGEX@f`16jE-JLcJ-09mBalcGh,mDeG@M(DAlX-l[`Q-Sda+ZjF-Dkk6"Xrfhh4 ,c+9$'lQH$'k!&q9MVmdEDfl'256McIK[DHFhFPbdP"Dh(elR3KGNQSpK!P)k%FC '@EPJH`QGlM8f5k$1[0'Qe%Uc9K6Xql+9q0BMGV20[e0)fJY6EkXj"beIG1eYEYh -9HP3&a0qa5jp'6!HT'E'V&66Ve(1HEHeNYKGHfkI6aQZY'8@"I4"mb*X#9!#EAQ mJ#af)b1P(r*LA5BHT*-Pl%DRTH9j+`Ui(JVj`HNH-)&3,#b,b4*`*qe*ckBf-iA D$CG(HeQkYECpMHEiJZCmkHM%TZ4d*M@"L$5R*0Y"h!4DcG"+RCYC5R@Z485Kc(# P5(fcVRMAJHNGdPPih(aFAd"+GifDkf6I,C*fM"j$E"fLapl-*DZpUTZqHK4I-P@ )NSrDiFT9dIkZm9m[lclqDkRdG+1-m9q,'mA0mZD6$AT8fVb2rrS9ilpHb[L[&*T -45DI-a*XXcZm6!N&Db)mCRGb[LL2'Fj`'Xqp*E2jY'#,Kk'M14melB-SlpXie0Q mMRp%REeF+'jFX!Ki'k)@RkIF(IKU2-!SU*6L3"HP$'+eIQYd2H38SC5FZcX1"HD UljQX8YPSf1cR+)3m"Z#2*X2K!*-a%i+MEYZ1TSC%iNML'-k6fe8UI%J@cXKm-PB -H%hT[1J1"Zm`&cE4Sh$*"2UKILVJrpZ(BR[rq)GY&E'e),E2q1ATfIEV'ZB$h%9 rMk2MipT"lI!X,dk2$QT3lVJZMNi`rr5ERE-h*c8D'N#fmm2f)45V(iUp0rKFi48 2(P"H22&fZhiQpQUeh9IE1cpLUhV0X%Xh+lkr!LR4`c4Td!PLL6$#G21BfIYb62Q lVkkZ#ME8'JBZh1ef@E#-Hm4X!9+F%V%a[r6E1RUCLJPTjbdRDT)LKaGF+&)k-5A PU$pc8Y,$pq&Sm$j%Ymc(c@JeM"lR66692QE&Bq*Mi-6HX-X*!U$S#2MbZJ$Gle0 +LIHiE&*Z%%TU0!%%)dc8,LiTA@C)QH8kP2EU@V5Ef&Z-pNl*#6'NRiSlMpe4bUr *k3k3!-I"U"G'+T2K"9E2RU5!F0#R4%d65MGKpdj9+01kiND(B`k(+U[0U"@#eY) F3Xmi1e(%Q6i3-@D)ap$aq(X8D!*MZSm-lbfkehRJf20r@5T1Ci#6%[%$fD!!"FZ ,L2)Pc%Z[FYBRHQNR[SrP[+p3MK,eRQG`UpX-Hj`((9pHM3E5)jM4Bj!!C%8qc2q "-!RkC'31+%bX2KUd*be+Fb*!Z[3(9l!6Zb"P5'Uj%N+d"kd*2TITE!B6'0pcL3V S#1TIf-5K`G3F-LA(+2Mh"24#%JKPQ)j)@,4e$5DM9U#FJb1Gh'))AHYhVf%DM@! ,,TV3i%RV-Lm&N!!Q%PIT8JU"c`19q59*#LLcAZ!T!%K#6+6G[&C%(`@p`AZCR%d fNIJ518LfeCjP`*BU8,%6`9[Q3Q*a6(Pr11199,ik01hKhd+V$GKTcJmRjfYB&"8 +S1mDd"(D&+`qIeTF,j9@`imSqV$mmEZhb#UAd%d5)Nf"qV91VBA#CbY4cr!GpCd U'Jh1fd(8)Raf9'5-$p(i3FI8P6ppq3@N'HlKcN2a+4(qZ2(VI[d9iNN')6H3!#S dFaC%EAhR$1K%Gai66ppJA1XFdTHbKH+)mMZF1frVKfMa[3T8I'VJi3(CChK5Q)5 DS,%"Lie*F-Pm2Kc#a)50EQ'-eQ5Dkl2QKE3H0KVL%pRr9'$Hcd+rU3KGcN![bkm Uh,Q#B*mlkk@NLSVV6CZ#1Bi9V-$,@RZ2`mJd+bkN-4KkX+k@LQ8Ah,Q!i!(Ib0% %i!!M1X!TAS0G`p`HqRjKM,)-hiJ%j9QAqH1MS"@2d`Q2B,%$CZr``+*Nl+-)TJ6 dQmpMfH[$C2Ck!VF4B%J2Ih&m%mYIMip!r!!hBmhY2QPT9,Lm(UZlhEb1&BBRDT[ H!m*FBX&5IVd8+cK)0KUK9EAreqa2QV#ITPT,XF)8PX8YM)mLUZVjXf+K8#jZE2c "ZH'Ck,jSX8Ybr$LbQVc(E'HAPNR(*c$*4l"9llI9HJl5cAC1XU1PmLH@eKb$Z(E `)99"MK0jRHNCe`Y5$a8bJ)kKFf,r,UmYR,dpdEji$ZbECVr@X5RLf"E)I[hC#4e 4Q4NLaTF#QB0dQ&J`*KdAE40!61V%B%XQrl'DZ#B*-qBmEPSCe&%#6dep6,DGH2V MP16(GZj&h3E1FNcacDRPe9*H"`c@@HHS%feFjf4b*C1D1*!!UCkc`%+G5GHT428 2eXZJfe'hMf3QRGcXG-cqE'PcjPP@`lGJRQ8Rbh)Q,8@8,fB,mS9pl'8b1[T#Pm6 IHX+Aa%(m)8bXI,bTB8aQBP+K@kDLLJ0j3TUBPbDXLIZ-Blc%-SEENDUP!UGL5q0 )krQ`TAQV,h1KiR"KVLC1'[9ipE(@,[ip3GeFX6!+Z!c&kF'`&cV9*HalZa65[pQ emd9D+5BY+[)j%Xf9P$Xiq83CGI5*e88QDa8Rip+C"10h#K2e-qQR0)!"BLhJKer 5"'@DI9#9&&B2l+6ZEYl+M)V`(SH*KhE2&QQF)a!)-$f0Na!pP6j!18Uf"acM)1- RJik$0BZ*)Fm$4V6pC[qXXA0dF(a51d@V3@l+4%jFjjJeNC0C#IejhMJT1&(Bc3i jT6'a!ppi8caT(UGNSCa96dT2ddrU2GAE9FfE&iff1E2cSNfarf)DbPj3'(mBhkR p9j3hejr'l,rPTqAb[IhhDh`bEfJ1X#'hcFDh2XAk2aq"ETl4GM@II9CGGDCT3G[ 2+CEDM'@UcFpTTSA+$aDabl)PCH!DCKflE'D+B4EU1`h)(+3Y#GbViarI+TZEDj3 !m@JC3k$m@pbJBlEC2TXed#Vf+aSS*6e9CA`dcI,AD5YCk#kP1LLVZ+!&Z($a-5F bV!J55X`6MYF2DDR#M&F&@@%"HkMX-eHABHZ5%rUU"4NN1qiT,0mX0[*M&6EN1$0 !BaAD)%NZXXi(KDr&F$#FG*XMeA'G*[2UmTTc@kQd-%h0-RCkAh8NUHU(9[fUG2I -'l+E[V(j,C2jC6#K1rE+A!9N)5*N,i+aX*4`DG,%$(4NRXN9-TM*'lLhHeiXEES JdXBZXN!Ni&$ArSF@D'U$8Q'MA#D$j(9DKTdQ+Sf["YbY,Bd@kq([VB*iK8E$XE4 85UD3!'TA9-KJLYGSA'JaL51d4j10'rm!2ek-d&ZEKa)GGr4#T2FmbP)ql$D[-Ie TEA[hS&BiqrN-Yc!B'EK4hbhXeRmP43iD%!9bd*QaBIX,P%,*$be4cF#IDYjc'f" dkSplE+$M0E&l2GBC5UJa`j!!%[f-L)CC)N4HTKJNhJi`Ca"5@bicK4D3!2@i'c5 K43%G,r5B9cS`fZG!j%+Q,LjKVb*kfPC*H8KGk8*lXqJk'JHp2"PSkm`ZP#E[-ZM 5K%$9*CU-J*hfQp53!&(`2U4TYdA(9m80GAb9bHaF"Ueh-imbjHee1kiZ#60N 81S0#jXpmrXYp!b&eYqHrSJ6cNYEr8[(TqT1R49cr0pI[chqrbQG*TMe1XFCqrk5 8@9+jdG0!bJ3#B[Be+E+iT-G"eK@)P9lCJI[qb3D$$-i'HqLm4ZYm$-ZQ"MN%e5- *!5"2-NZHa2-1b&-#L5G)Gd#H%3JPh8lTp0-LJ@$#l&33Lh6qQVjr'L2GMYcPf5" -ZP2Dpf(j3pL9lk$d'`8+K%Qh6iNj2&4"N!"099%mjEB"HA+I3[Nqrh2-rqF@T2p -q3mE`+Gaq9pk8VUArep&rLZ,HiS3H`CbcQH)Y8&+"*)`mGJJC3+*'9lFLYB05&T E0ZiPe0HFrr$UIHX@4-#-qEqaZ9QNqEqqZEkqAUEjrq6*q[hmraUIrIUVNqf6AjD @k$MVB5Dc@c[G1DNIRp@2$TFH2ha)MpQqDTXTT$N$hMr1C$,5E@aT#4LT",prU'd IiqART9*aipRQdbIjCkARj8b',D1RC#Y[YV["D,fFUMb9T%9G1XLP3*8CLN,AT(k qAbFSC@e*JpU`SG"ad3ZeD82Ka3Qr5Qa$86LRKNp"M%-e[&,2KMTZ`LlF3il[RpY 3*`%kXIZS@V6"6S2a,RYaS@A+"Q2UAhaXT8YM"#Y,X2BJI38"X(8*&Sa'X%G1"GZ 3!'#GlL5k6!IEP'$6kJ5`*a+-$$hTB%mP'-HG6!9l*Ur*6@HKdR-E,*8lbN8E,*8 pbU8iQ*FrbQ8E,(ASbqXf@1V3PcFFX1Yqbpq&64PBDqS-rEl-Si!b4,N-Hm(8+!a KNc2ZT-lfC`TX-QkPMfRjZ35l#+D"V4FP'&i9R3*@dSad&IEEU@"U,NcC0#+BRJ[ T'dF%fp"Y'`p6TMb#m5KmV%fE@!$f*$kQai1`2dk!b9%)aJf3!+L0-4hPHl!pFd4 c1Dh5jfD`S[5fE460B%d$JfAPhP4aEkV3TSV-rFEPDqRrdI"1pIq0)Zcfir[rTqY 2lrArVr(jKcJ)@k-"ZT',AA6j!,9U*%l(NhBi%-HM!9d!S)Qk+JiTe`kca82iI5b 2`)kZqX'SqQ,MC@BUYYINbiJqEUmQ)8cR26SQhQ025k8HE"D+48#c[#afMm6KdCQ SlGE2i'F'(TjYRl`qqq@i*Kkq$IZJm@Fr2(Z5%l[Ar@B[E+hZKrehBPrZ5d6a!l" 6f9H)EY"-+IB%LQ9fpPjAZD236bji%Y!K9HE"3Hhd&'rER1RJ4'-m&Qef`lES0Gm &I%4l0K$Re%hbH"Y+5[)pUX1$l4pVHB0*(3V@2Y$Cm)&%3Nirj$@)"jD6[LPJ[K% UXGB4FP`+d)+("4mNRU$Li5kIB&m,h0$e1q(&C#6[1eb#-)9DqVU&TZcj0IZLUqX ([5D-XJ!LmBePdp*Zf)HqiqfQi!1GAQl0h@K%TlJV6[5(2Lc(!pL,SSl5ZKb%V5# 5PpIX2X(#ife!@M8LHpl%mfJS1T[(FZRiGS2cbF@YBC1Yfri`Y&$qRTQ,SfHMIFZ qI0Y4cirp5jSXFHq-aZeZp`[3iqarK8N8P8L#hmFR4mILY09Ui#-86H,K3rXaD3r (cI%P2XmmU1m*mI#l,$"ClL%kCkGbQX,aD[Zd*Yj%3H0JEdF8%dpTL"[F9V`ald* `IZ('EMJ5$`ZrDp`f5"epXAY"'qm8638mDij3*bF3r5E4X+PYQYkFH9T5[qJ24N' $*44@BC!!ZqhE16kZYVU&i%-!llGhGlN2m&5Xp3IG`F9!V"fFLE@hkf,YpFpLlDJ XeRD"'I$1bd2kHVKEHrAQ0Ap[`22GSlHRm1XA!'j*P,1`f5JXc"Bfp@Yrhra3B+r He2GhkEU2INehIr5[h9m1Y`rU1ifGNjh'fIDVr4SrhMipq!Qql@fh)[Mh"2lEj5D I[RPeGV+pFmEYrZARc-(CIV8AYK08JZHQAhBrVT!!459N+P$[hIKk#%aG,UkV%LH R1p94+ei02"9VA9MV0SSYXGE@+#4-kZYATc[VjHTje-*9,Sk8AUU'U4I1XrhkiBp 3(X22a![c+r%Z'2@$lRUjJ$C(@"4(mZY&1j6IS&[4F$$SdJpBG0VG#rQQfAlI(#U `k",f3r,lS"ZBEmh*@+'IK'eqfMj[+3$ifKV+(jV'dH5F(8ZfVZ3&JM@3!'C!lfE V%TDlVIVkXbHb-l)I&qp"T3%dJr0rrAIke#+"1fmhKQjIX!LXpXe*Gd`)3)"['BP !pb-++-jYcTBGAaZfclIkJhi!!VHfIeUE*A4jREbTb#e0%EN5mbb"k`'lZEJYqF@ Y@mIX9Ya!RVDP#1ba'2`e"&(B6SLrK39V1YV'(8VB,aDEMAR%CZ2,a@CMZYKXh)Y 0RlaT)l02NjlrPHlFT0PD00,mY36MI-,28ZY[AqRNZKU0@5)`"5jGflX,P664L$R D1EG#ZV#bj4%)LfYHFkV"VmI&'qM#Yk'`'M89&`!PFlhDpEI3b04&i8qQiPUDfEF TjaaeN!#McGa!(l5lE*4#4mcr95LK*01Y+XC*fmbG,4(&1CH)iVH`4"4R,a(&Vf@ cq#pB'4B3fYp5Bfr2%()VDr1p9H3EY#$-X@,mC3LK*08G,KR5j(jRUdCTcP@Mp#f X'UACUdET,laUq'c6Ii,eifj0kRr(PH6[CjHHBeAj5a*&5EAj9jM$A9KJc$NVLcV mc8HVDDHP+Hqe4AYDDE*m63Ha0d"c3DTe6rAMp@J`'BU(Thaa'&e1)V-SlM,K'[# B)MUeKX0+Up,km+%bDP@!UT94CG$Z9Lk(rkUF0mH9cQ"8k6`['Z3@eNcQp1M0b8k Y@[KGZVBA@JZG1LpdAV+iIA'hGY`!@GRBhYf[R94rcb`KNk#c41(bSIc&i3cKaaI X8Ep%8l&i%&fREH*1*lKb4Idf+8i4F[jU&-FE&pmSZ8p`%IeVN9[HerJf#8iKT56 "98-eb9-'!(p-aQ(hccNF8Q0SI9[Mm5HMiFG`m'hbmqYIkdH0kPqCIm0qKc)$IC[ dVarZ[GUAp0FY995("aMA-V)IM%H"qm#-c&pj#*N1hqS3lK`Y-S5GCM5q(e)Q`lF kSR[Epb1km)KqZfSEM1KqkSMqCFH$fI"E(C!!Xj0UbS6jb`i)0IjE(BmhCrGkb23 4r)ERdpP*VAEkYpUAbY[ihqC`[$RF16ViLpPPC($2Hb[!63Pi6li[)ar1R&(V4Z8 iXY2L4ErG"I[A0fIer6qpi3DId+&9r!MV"dSC-1X)kl*b14a@,MpmU&cf+Q'r@qQ %P8lliC`'jXZEfj)ZEfl$Z,caA[RbjRZ!baYVUiZAP0aiXrPpHF-jHVNBHjd%d9a RT'&V8'P04TAchV$5lPj84Udbr$HZR)Ip5UXrVSc'RFT&f+RmDhJ"r`Adcm0BaIK G(M$c$h@VpciH`lFBrq2UMZ-rPcF6mCqIPTrFarri'TmTm6VH$NE[SQ&6LS5d5"e [Ydm1kiH[Yjai(8FRBVHfAcZVFAEDYdFR2jiHEqr8+",p!j!!,EIlb@5N!0RL*6J D0mF2TIc%laM$aKZ[*#-I99pX[Xamq[3TmrRcCq[KK[A`MT[m[[A38Xbq`HCbe+H Y@@eB[mXfh%rAVb(rfd&hH"Q5q-I!,(FHrlRdY&4#q9pDIl+jZEjCT[M2'rIaRlp @r#F9E3M$jq#JVjI2b6%4K2ZUr4'["U-Z"[RC@9N4'i90pbd&D,S-4(Dp[(SHMR- 1+Y'$[3XRkU"`5#T-%SC2`Tb8I8c563NdSN!!)P",!84&'p)SGc%lfV"r3@M4Ce, 8+D-+Ceal')hEV5E'QF&rX6"JSK5jICR8H'G[Ir[eD9@X$L1aHP3@UcYLp8HaHVJ U9Yr"IffaZLj@4r$YDRAB(1'IjJ3Jhql@-MXleFl@lqHYMFhI3G1&,kheFQDrrNT LA0["(`i)qQ0Qd-ZjkK!e8fK1aV$Y`6b3!*P##pe199jM)@![ZC-6Ubhm3TKciVX AQFc4UrmV9C9E)IUTDSmhqN(1@2K0EH2`1cPBi"Hp3m-IL+TFe6X[q9iAdVXMqB- f%[)lEEJ8M[@UJ90Q4rcq8CA)$+R4+eDV9qa@VqK@VeLYAP'YAR&E2D4QVpMYAV( D[@+hHm9UpiV6lL%eI-9!@LeI-5h2!2GX`3MJf18b'IN&Rf#AF[bh,2qZjr6JI8r T"$%lchII`e"diBmeX)K$I2rSdAmbm*CqbJ&q"$8-'E2k@MCI!IprP+&Jd$%6*c& Cld6q`p!8KXhS6Z9rUEa4T[Mr'f9B!YBhRh$mlq+pr2mDRdNrj2aCk1kFb9##i!l Sr*N-bP9-X-Mqjr#18KE#%lUj)80qLkTi60cc@#CIK[H8ZV%$EiijDhNP`eP*i91 P#cJAr)cbRq+cRHDSMFRXmH(`eI8iS-)lPdd'ib6%0KJma34dV3DQjS)h+N0AGM" XrRX5E-NQ9%3i$RT4RK*jEP&p1IdZii[8+9F3I)QTe4Jr9$!F$9T"Hc)+C!ejc*@ (SNbKbmh!Pl(5-H11*,$*!bmr`Y04d1`0iIRr8cmUeJYX"1MB!@BZD`e'R2'p(h` B0m,qPU5DP5jlEBeH3UA$bCM5-(28pII0X%XPN!!B6RTY+$$TRF2Z$k3-TfdQB!S #$,Xq@49K'3r'6BN&amDYPPk+rMRL-E9(R(!Y'SK1Fj3aMFIV#SR@UmB2k#BAP4I 4j@$5E@-#,hb%UBAY(K'D@*F!b`J6LP(33NU8ajYCe4NSBr@'-EMGLI@'qb%ECIH N&eeX5Ak0M6pJk-,b)cMbH3mB"MC*H8VcLTPIq`0qNf&H!EEBLV&*4G&M-"DBUJa (ir`DddKhC3l#L0[`N5E%PM8[+UB0P!"a21#Ab(bS,ZPFi&34)d%bE4R@GdLKN!! 3+9-3a1HI3iRK+(cI9-PDBD(&H*L`Z%Ldh!%+G8R0i'iKE!2P#K%QK[!F8lKG6$$ kH20m-*&*&5RC,T9S4Ud`a2ahS)jK,NZGGb$*Z)a3*5AJ$0FbpED*F4j`+Pr#!lq $dIZJlCd$kLARXCZ-3A!JqDJJU(ff,'dF(MAfpYqFrX#&Uk*BSFHR[acZQ"G98HE (Hm!jpZ0eqEKq@&FSm2%'#C9I'dFrfMddb-p1DYX(MGVK,MmZ5A"SLjA2ebUR#Vk URCie6SpVY9hK)NB8'L#*!`#H-i!REc!$V+T'l0AhcfSREJe9KIq(0hYl"pZ(MD2 $r9r-bl+,'lUhI9ClrB[Z-cHYIVKpmSY0KZh6RAVG3IrQm-I$SlH(%UG#bKQ6#Hi C26hBrVPa8$YSl0GqUZh$8qKE4Ue"LSQb,UGa[Yrc5FH)Zfl3eiX53fAmLiG'66T c&[kpAE45!Fr#5Y2E-NY449!Q"TTj1CjrFf,#l"PCd02(HCQadF+k'#C3Hq20@J` "CeG)GSh5@qGep[58+1*mqHj91)i3Y,I2K3!*B,kipMA%I'3HDlD@k[@"'p"JM@4 K`P)5L*616'h0A65'Fj'NNYDKdQ+B+BR&PiflNq!LdFD-Q2TKDV9eH6fjCT6$%[Y "rf*mU@IJ2%f@1pPEQ(mQmmJ0UHIN*%Nfb-b(VmMlGJ+8C*1m9D@dkmXDm#9Fk8Z lmZIJ5N`AXPLR[9*VQY"5k,bbHjESYQ9d#L&5*(HL@S[4dRVXR5JcjiNURD'mcMV &p-dTGBiRpjMQ1BJQhE(BULBAL,bLNleGjkh`S*09f(1`F@@0p,p%r+Np+FHkiUR 9i*mb#e60La0M$TC)pL!KX,kSh[RCDfT,0#eYiMR0QNE!Y!DVI3aDN!"fpe%AIQc Cjaplp1++J-dhlaYPSEL#1a9#FXFm-+L&cJ-(Uq8mB%c%H5(R!Q30DKj)@R[Q!A4 @Q+N&*'r-!c1,3JkEc3Xj&q$XI[Y@eVN+A+0p)`Q(M&hiqj`dTpVrbf[Y"Kd"R`p (Gf[r,cdYF[lI*kA0cDHP$I))HR,[rr19cRpAEqq6H4"fa)2[fYPA1kpb'IJ(eS2 [XTMXCEGqN[Zp8-JmJ0N9GM+Cfkhf(k+q@a1RY4h-@RVVZ2&8Zc2SGJGAD%Q1!KB MdMUS%[[B*pUpCVpj%E648)XJ5!GSA`'E1FEhD-((j'PYYRbUl$rB"rMCZQcf,`, 4l&qV1XJFL3IPG(J1D'3E#VIFeB`je)%f&iVVYicrq16Srf#-!,d8,AKZHI6Urp! Tl03maE0Dql$E2Y9fMSAMapMkT2IhM*M[@&XrcCc86Q8cm1YZlEKf5-bVRZISX&p #F0,F1MAkTjhpp8hUbHRapNN0AVP2GfYl@!a+(@r[r,Mp@KAk'GkI$d-*+ErY[V+ r+j!!m$cU$HAhmjEe!r[CEJ%p2XJ(rpr*mCRmHPDV[DQElaScI*IIGNp2,6b("h[ ETkT`rE"fTN[J$p1XJrSZrlKYjYJqq`'$Z99&S8)rYNm2c)rMl92cif5([e2B0#! i2U2"3V(c1a$pG`V@$J1jApXqVANK4M+EeqefJT`f5QM04Zq5R`,b+8(AN[FK[b[ MZlTX4pK[G5IYS1,qr2epUbY@IkKDMB8R320@e'-NkiLNda'V`j&BhF`FNb-"2RX $U'bLj1DX5kbq&D[IeE'GB[ArMRmi&+X(Q4100Tb0)l1YS0GLd)N(",r@qb$@VXT Ll@-rXbq,CZUkaJZaqVTrbf1c[Em2XJD`YiTA8V+3!!H(R0l`qS6QTMhRi5'3!*) HUZQIiqmmrh-#G[5$N3VTKNN3HQ1Ilp5AVUZ`X))Ba#ALL&*cRfBb[bP(A%a1qNH QcY5&KrLl@XaX6mB$H%LjpZ$R3I0IJa'mVCBb"f'I[aBcmSB+I&0`G!m(rKk2![2 b&(2'0E[dQ!la%("r(rkP,&Y"Y96F+'Cf3"JISaFSk'rP@!2&Mm&ep%H'XS(fVbQ 6B!EGLRH$U$8+KlLFm30CU&SU&2&rQESmCH3Lqm%&TKiGASr#LmZar(dfDVD$AR2 d,UTQMZ!&1JNJUMi914i0fT2@q0$q%Dp%*M1&mTRIIJLMm@"d[3prSYm[Zj+ZQ%J -QcrTMk[P6(dFp)T9PkrTBDNkFkiNUj!!#FrX+NTZ&5J%J'%VjQF5#`dFArDBJSR 2Bf3lU!L3!1[LMia9HMFF%5&SGaS!p@(F6LCphUa@-cm-S['f1Am'5+A8hE,H48N #ldkT!d8X4CG6HK`HZY1TGdb4%e+2k`a'J!RIR!Gpd2l'j#@!miKG$JBp1cIL+ZC 'P!NJm6&e$c@4F(apkjUFl@4i9bVqcRSCPA`-39S9l"#T1%%"l6,3VJ4UHi(1B+9 (+2i,B10Qe22!BG6+fNNZ`hm"lJ`Q6J,UeBPXf)PUfFLZpID*!A9+h5@A+H#h!UX ahb8Hd`QbpGKZZX3#HSi#CjAR1r2B!`i88q#X,ReR(R[!6hB80+K3'KUIhK9elKH YEh[4mUe2[RAXVlYS`4cJEDRbm09DRYS(iRHjLf0RApQU9rA$hlp68JPGHar)Yr[ +G6YEPpp@j"[@3A0jr8$9RFrE-1JVE"kSZKf3!"086arFmS4&Apr#jA#iPH`Q5h* XXHc5TqpHL-mC,U*pf1FVdKS18iUm8N9i)k@rQ@IVX+ITIjIpIYG#Gj[)B1P*35H A+55rGXh2SiphTM"U&8C"j'[#L@V$L5bcfKQJrrH,@akj1l6r`QMGlIdImA5$l[m 80jpXPNY2f2jE[VrrmhAX[fUErJ+'(eCVQ2m[-rmBMTSA[DDiE)p!@JmcDfZhbDY [6QY[$ZYRfBFk82E$A-8meF&ZRDFQCQAmXBb$'(r-XI6L6rfBC45Mq'-1GH%mY5" [PbMrS2cUJ8TqR3(dQ%+qf@k,*Qp)aJ2D0R3C3&Z0Mj8"1ZK2a12Y0TQ8jF2(KCP h*UI-Ir6BlJ@&mBIaAGrr,QhbrEreTj[&mK-qreQrRrpIih0f'3!M08F"-9QN[Ec 4jaQjlL1P+ZKMj"(lqKmTh["X(6K-RK*Hi*BB14*pl[9HqS+L5i`[Qf24D[E4Ilm lD1,""jeQk$deqReRm%f%6ZTLJ!lqBKR2(K@Q5&Fd`SUDZJEGBZ$A-A5&h0($PP! R$(V'd2A$(A8j-'0Z"NShE6iIMQ523#jK9B`9kj-2-3e$Qp29#dbeiD+AYf@`$Ie fFp61U+Z)cMe%Fl*UiBm#XKq3!''5ai)`MS),d*@"'Mj-2(S-h@3RFl*@%(V3c"b kl0+m&R6M"qHk["T"X)M*1T9KLA-4p!0dR)("L[U2LG+G5CGFp19BJUJ!AEZYQ!" 8KEbL%h`R5+0&1#h%X@qH$pjVUdY8Z,rIr@fGrkYjIHIh[qAp2p6r5L@@rqAb[Ic r1[VIkUeql#2NYkH&BLPcfa8m#$ZSTiU6Sk1c$2k6jQ0`fa@6[CD1Kk$5(&ha9RQ Da#Uh31ra[PYH4U0R$*c-R`52lh&['!0J8k@'Z1dH5'-$QK9T@@G*,5AdVGFQXa* Y'5[(DHl@+k&eCdZSj63M*#rNe#+q*FaLEVrP6Qm*Xa6EEqrp[icm(pfar#q9RMi Y'Iq[$CEr6qrhrrIqArIqAhp4rbqIpjIApq['J8kN#jMI2f`ahc$#j3pbFZmeGZm epUIc'V[h',[h',XrI,rh',[h',[h',[h',[h',[h',YIY1ipaZipaZipa[k'(Q1 cl,pIl[deqrb[9&,qAa[VQa[Nre9H[irrq6Ierp)Q[pKM6MNrKkXBTjEqaVh(p$1 GY-ejqY'8rQ[iQGerrTcRIemHrAQ@r&pr5M'I1IjckHR6G6lrflLArerMmfRjCTr 2Q8rLCKp68MUNR8k'+LT@9q$1DG$(6FUdNKLh51aLT0FGZ9V`"N`'VaC[d-I0@r, QVGAE-C&Yj86TqI1RfL05EYiSqNch9ZUmmDK!T3F$f+D%-[SX1AV3r%DEe'lcI3K VrF&J&)c(SAM4EVi2[Kq&Q2'T!-X3kV-k)(Jb'VJi[Bj`ABVbBUH,JAXM%r6lE*[ #pjTBh#),ZbFFSLdGk&V814ch+FAINj(!FeYfR2#c2B`ZE!AFeQMbiK@Zi"Sk4j& BBI@UQc$%)pMc3KNdYeh!hMmS)-CI6bPQe8R3QKj$f`RJ2$0qYSTMI[2Bf6%-0iL EEEGiGXaXAmKXU`dh#*IYP[k#80Q,K-P@8DFYYPS`4$DckXh$Ba12,K`D1cNEELF XYMX)Aa)6ffE),iL((H2Vp&MB(%'1J,E2-83IG,cCE`9SlK%Y&$!iIAFQm,[h+`L N8a8)RpjPcrJh'PJN#DNKHkF8,8qqVCKRai0Sbdir!)q2qU$!AR!Frl2$`6MXA0I 3YeUqrK9NaTBY316c9j01"`R@()fDeq+hYb"+rN$UU0#M),c'-)S"#aJMbP4Pf92 dr3!%CdFdh,Q+mLL[U",$B$5q&QRYBk&J09pFM8*J)HX*Bk,`I#J9JD)lj!HHGFK $D3Yi($i"UFeD+QQY4cU5l-P1qjdZc#rj+16+ad%If68FjmQ9(f-ZJJ#1e(''c5m deIVXiXra"!XC'ZP%p4*hX$VSBid`"`!qE)hK4a6mHi*Hm-eZ3C`!0HccNib+p#U Z`QjAM*SKAR(SLq"$+b!6E%'mS819db"iKkhTS4mkYP3@'r)8cBK8"0MJ)aC[LJU YCZZ5lMA`e1pHjfh#)(BP$lN5kY29CB$VJL-cP!JR,U06S`QQ1K)JYJ3Hcf$,"fl G&#LBq!d4fPf"PaL)Hc5i*MGp3Gj--"9#@U-eTi%q-"ReHEM-@ZC-G5R61aNK4a( [G&b#!J%b"qU-p99@cl+I+VD'p`6PR9hPS,m+IeD4Vk!p,93&,dL+Aef'V8X'N4C [9IdP-#"9E*Ui*85f*&C&GNFrHN@0AJ1&X18qbqA%XLJ9Li#ZhS%4[Q+X'1J5`m% ALhc0)FDjmR9j-dpYLR8*ABiLmA6cRiV1eJ30D0i5Qh5lJ#jSBVr#AQ"cKMAN)8( a9*V'4JA""j0KT+jR8"UY)63AqB5Zb9!,b"qUM5XL[#FZZ4j-k%S'SQIB,ZCN&Dh ,5ImG$VqDV2BFaV#eHRU&IEbh!Q9KbF9q&8"rM-eNLXd+*-ZfZSHJeqG"H1r"8Nq ai9YGQ9`@[aid2l"+jj%$@Z6(&i1im0I+jqYJ("ZF,9!lXD%NS#IRS"ZN5FKiklH 5(DV!hL8DZf*8m%4M9,XmjbS#*-YS"$Tha@dILUcXqqC)m&T5%A5+X58`AMp(G*A I8M'm4F'BjCM30dD#!M"le1P%`GJ#jX1P,8`!fNj(SQ9(#U&jN8S141SDjka&Zd% V`3EYB,leL#UQa5!F1k*(6@0!!aJ)!ZpG$CYibdQQ+V$QPDF02-@a!V-Q`BkT(Bl B-D!*V)(c#Zp(4ELk`'bmDSldG6G'RSHC2ND&&G#G`ii%)D)#bib)cb!"3d3U9i3 l0HN!S*FR+Ej42`a'X1T'-L25&3Kj3D0+kk'X1dNhB*1`5bK(Z)j'H-G,B`h9LT6 3p)c3(3@dfPQ9kAlNUH2iD"4d33UpakNTT8M!@FaX5XJ'k#kLK)f")*'9N!!D$f6 MCUc`LbjeDRAcG"SA1X"QPMV$Ark9EL(4VjGpZHRM*B#@fAK$!%A`iE)jSH&#SP! AF0G(aQfAp4QhY9"NjPdTdYD*N95c81(hV45kfVBpEkDY&Iij0N2F6jAGTc,Gb,e J6K'Y+&b91)6@a6Am['*!Q,$m,BmM"bXh$aT@8#IM"4DZLZ&iT'i,ahH%"-Rk9c8 adF)qSf!eHJ[rF4$fJbZ8VR*$hPDYXUkY@N,0V444TGFU+d)MQpQB@354!dH0Xbe Ah*2B"M,j`4dh9f%99JmG$+MX`&JBrXGQ*56eIf%m&"&V)*4lR+N1&jNm'JeJmK3 F%HdEK@pJ3"fUcMqN9UmY1mCLBfT(a'r)Y#5q,)Ne&'Xe-RJTH9G6UaH*VCUP0mA JG&%'G'6S&0$8(&@kUj4)5TVR+)q8-G*U+L@5@-c-CADmIA*@heCjbh5bVDqGiSa D@+[Y0REV1fGZjV$DbFRKNB8NZeV+ZAK16Sj1q%eC[YRG2YY@crR0ZRb$UF(d#hU c)GqmHV-AHl-ThmLV0r)Y[RQ5QjD9V5UQ*fA$pp0bXZ(lD5RC&!fqkC4X+KpEif- $&N#b,C00lVGLSI#F6(,%bpJC%LD2q`(+&TdRi(&HQcVMV#'bCAEGHLce&eJq&EJ Tih+Cb*CN'3Fb9XCP@*%YbM*dq%jflQ3p,Rr5d,L0La9c'LIj$6QA#j'fPP+6bpA %e&`Sl%FJXX0@L-TX,qJ0Q(a8b'9iiRFZ*+@mYhRZA+#TS'T#F3E#"5hj8S*#B5V N6K1D*C,Lm!ICpG0hqrEYX-rd`,V[T4rSkehm*2E6ZS1Q5qM,CIU*[PfQRkLEBIU "ZR-'fUjCRKVM83-@25Za45AfGS`'a26AC1pV8)25JCVGm++IrTS-Y1dNN[5%,6B '59)Z(M9JHCm(ELjF)cIRaa6)$Kh%6!-%6)ff*bq)$jCBS(%HMU0ji*6&IJl36[J KD%m(*%kD688#Q`G61Q8D#V$AM0j04d9F0J-%f0Z'X#X#)B%*diiYVHR9PN#0#E1 fdBC)kddYd2kk*S24(ZcU8A*RMrpIRQ(ciT911Z6@d8VNQY69cDMP!2C0@5i%e5! 19CZZL[bMT$b*lj95XM2LjT%c0YNR4bU*PeDeNKRV4N%VLTf-DfM2p&4C1e2UNlN $&m+&H31pk2c&N6D5%C)lPj6mI5QYr@*UU"b+Yd%0+i[L!Y6`T`YFK*`'aFF@lC4 Zi%+KH2Ye-$i)HPP1"CERBXYBbM1,2VC3A%aaY0$6%X!3+`%NNjEKPQIR-QLpbk) 3mQiHNLR+%*3ba(ISUhJKLVLcC'm*0ZbC68a"QRNHXdD4NiI-$al%Ql*c*qf)lmL 5cI'eCIG1fT,Fp(Q)BcAR[flYJ*R!*dHpa*RkXBH"p4,!@HYN"MVmNFZ,)ZfDY'% !5*E0+Z2'LY"Ifq&l85VQi&'TM2q@0cGcC$K&Aa(i86%6KEZ4ecLTJV&dN!$!@J[ 5L`FV)hT9c#[P&L6IBIP+V#"5"Gjb0BQLePY6@2+`*l0MFNqAGq`0,VPbdJUUHS1 (a,MAF2&Ve,c4cZA%LjIZ$UFpN!$&e4$ajcMH,lBdYE+U0hNJpC1FHAF5N!"`5k@ kcYRSNSj@KUcN*eNbak20Mj`51E'UH#plV%RJ*cXd6lfQZ8+@f*!!c[$PBjG8+Vf Z`US,HAT'Y@QI+9R!CP`AJ!beC!CL9a-TF'9[+dB!+)1Z9&1qf24e'lD[1@Hi3,- i-)K("-iakENX6ANcihd6'i5RDm@dC+Jp!)`3kGQ0JX4E#m@h,5hN+Z2*2EUiC(" ahD9NB1*rbm+"@cK$2VJ%q`EP!plbL*qQ5FZY2"K6VrI9kd++`jJDil"r'H"49eZ H[@(Pj'L(VFDrqX(a)&,2#ZSm0UQ&*KZ3!1i[CaV4%GZJ!9hdJhE@mRl,d95hrH% NMTa,NF6aIS`NmIH&"9a%-L,K*+)Xj333D3I#4&NbACjH$NCMi&*4T9(0aJh"HFI dQrFEFRfk`T3ac'+,LBh)qG'CBY,YdEadTSN8+a+)82Md&bUCP`6i,G([&'&&TA) Qkl"eRZXC)hA%DeB9daH@Z[f`'qm'[bMDFKaiDmrK@C4lQU'C`Gch5#AjRUFLLp0 X60154%JAU$NT9R"&bmD*$Dh-+BPVbeYZ#jdqmb#S`FM("dI,ZkQ$E!"Q$E3PiC! !CV%b,q*&c$+m5+0"C-F`8pff(,E8-qBBIHaYFlTQMpJfcF0*mcX$D&kEY91Xppm hZf&E1i%1-F)b'VKcmc4S)Gq#G2lrhMq9q5AKN`V8Pr'rj2jB&5meraVZp8q3!+, L9!pA1HVFYc)0h29Z,lEJ5DA),%MGMMYpj"pM"j!!3c'E,aCb&l%A6eQ)K3U*'bi %$k,"hQM3fjQ-4J'`P5'fD4k64GeSX6ASZjd&dj`lVEkjcA-jaR5LD,IE2-k@#N9 d*ED4i0#[aG!U2q*#dG%XI+k$VQlKJ5LN1M'PVYF-'PqaH5,[6C[PY0,jpJablLf m$[[kNeL*,3AC51Jj4,-2q3f%Fh+LIcp9UEP68BKeq'4K60M&1GH4GBPKj9B3D@D +[4N9*IGc#G'8A*0Y5f(Y3fMpeLV#G%lpBL%DjqVBBM+[M29ah-e@hpRffN@NSDp GLdPrYY,8(H-2fAINEU4B+'`8RfpD0jS@@5pH)5ckFqN9`r#3!$X`I$iL4BTeibU 9-9+%Q2"-[D*lldXr#ZJq"BTlkScZcXZCkep1b2Z(dPY"C&AC94&E)h)mVDG6ad- H0&LPJ,1)JE'APHB6G@T&5I8S6@DJdfmG#9*#Yc`*MBCb+5E)F+)01Q5cD%Y&LJd @"Na,NML-a0SEY$hJ4YRaD!`hR#9T@JP***j#m'rK2NM&S[%I1($qhFCr,fimH@V L[kp6r*q0pI[i$rIahqrM[rq&ilpc,Uei"(JCCrR[%!2H#Ieq(r(plaRarHfZ*qU l@'f*eI(EA5[kqbjDri'X&3apdpMGhdm%DTm5jGe6q)hTB`9jeDC!-JLmM[@1(1# *pqkT)"E$I9UiplBX$GpdH9qiGl'k2lh9cDCB24X#'6q)eGHK&4hqG9qXAYaGG2M f&d@(Md@%[lUVL2$ICQcGdUh'eNA@bEjq8mrp@B,XP[b4i@m@2$GCE'F!qKCI6)l LjH*cp[BMjIlM2VllIAchVaRI2F5-V"l!qa$[hdb)pr[SfII4XrmbdE2r$[Dr,im !2L2qGrR*aK-9rr[TNa,ErdUEprDrVr(*Q!$J9jblh"F!h"XP2(2,SDNaI+'Sdek SfDI`1)'-BBKD29mjPEDe(N98`BJLZ'f%eeY3@[mI)hTGJqC+j5K`+8,KH8c`!E& (C&c6#GmjNKQ'A#5i8jJ%''(YR,21!lVXB#5$LdCV,3jmDJFZk(2m(#iAj6!5d9" TbX,+,*rKD)L6lMM+8e!9LPe$9j)TZN1)X6S(id[6GU9qBY1abE@IDcTG1Q+MKU2 j8*HJP2%8Q%'QU$mjJ`d42X![!*&6!F1SFQPVa1+)$c&JAH%idZRQSFl(N6*6[MS kf6rF26JS%#5GI)FMGfK'"GLXFH-`0cf'-BSi@KSTd3i'%k!8&0-ZKUJ6cHi!+U9 ZU%iK-KAY4[C#C(H1emXEaB1c![F*3jLr(i4Y(G-ST%&dDJZYCNAKH-+a3I-mmK' 2HJMlc&'2hNM&r'%,Ej!!,cr%N55A6"jR4+9(19,Yk`Y83-dSB2K2(S3#XqCp(2f r5Kap+5'ESiX)Gi3B+eQmV4pZ(pI&EVGEJkAdQQimC(qS(jkHE4rZe-4Pf-GVUT- q1b`,B[94d)c3a3DjGcQAqD32AMP1&BC"q(arERRrZIrFIqirpjrlcrhRrR2rZIr FIqirpjrlcrhR#clr2k1@+A!!N!!,!#PY!!!!: --Boundary_(ID_8YOrOjtx39nhzc08iX/V8w)-- From jwblist@olympus.net Sun Aug 5 08:10:36 2001 From: jwblist@olympus.net (John W Baxter) Date: Sun, 5 Aug 2001 00:10:36 -0700 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available In-Reply-To: <20010802220614.A00C6162E14@oratrix.oratrix.nl> References: <20010802220614.A00C6162E14@oratrix.oratrix.nl> Message-ID: >Download the active installer from >http://www.cwi.nl/ftp/jack/python/mac/MacPython211active.bin or the >full installer (8.5MB) from >ftp://www.cwi.nl/ftp/jack/python/mac/MacPython211full.bin . Binhex >files also available, substitute .hqx for .bin. www.cwi.nl does not have name service here at the moment. (Using either our name server or a handy one in Seattle.) Neither does ftp.cwi.nl. Testing will have to be deferred, I fear. -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From jacobkm@cats.ucsc.edu Sun Aug 5 11:02:08 2001 From: jacobkm@cats.ucsc.edu (Jacob Kaplan-Moss) Date: Sun, 5 Aug 2001 11:02:08 +0100 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: References: <20010803234520-r01010700-5e3a1d42-0910-010c@10.0.0.11> Message-ID: >I've attached the sources for zlib I hate to be a nitpicker but... Could you please not post large binaries to the list? Those of us (as in: me) on slow dialups really don't want to have to wait for a file to download when we check our mail. Thanks, Jacob From jwblist@olympus.net Sun Aug 5 16:23:32 2001 From: jwblist@olympus.net (John W Baxter) Date: Sun, 5 Aug 2001 08:23:32 -0700 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available In-Reply-To: References: <20010802220614.A00C6162E14@oratrix.oratrix.nl> Message-ID: At 0:10 -0700 8/5/2001, John W Baxter wrote: >www.cwi.nl does not have name service here at the moment. (Using either >our name server or a handy one in Seattle.) All is well this morning (US West Coast time). Downloading now. --John (Experimentally, downloading in Mac OS X using the wget command, into the top level of my Mac OS 9.1 "pure" volume.) -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From csmith@blakeschool.org Sun Aug 5 20:07:01 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Sun, 05 Aug 2001 14:07:01 -0500 Subject: [Pythonmac-SIG] Re: MacPython 2.1.1 release available In-Reply-To: References: Message-ID: Contents: --Report on installation --question about IDLE in 2.1.1 --note about Profon ==== MacOS 8.5.1 (64 MB memory; virtual memory on). Downloaded 2.1.1 and tried to run the autotest with the factory memory setting and got the following response: Python 2.1.1 (#97, Aug 2 2001, 21:53:31) [CW PPC GUSI2 THREADS] Type "copyright", "credits" or "license" for more information. >>> import test.autotest 90 tests OK. 21 tests failed: test_asynchat test_longexp test_re test_sha test_socket test_sre test_unicode test_unicodedata test_urllib test_urlparse test_userdict test_userlist test_userstring test_wave test_weakref test_winreg test_winsound test_xmllib test_xreadline test_zipfile test_zlib 28 tests skipped: test_al test_bsddb test_cd test_cl test_crypt test_dbm test_dl test_fcntl test_fork1 test_gc test_gl test_grp test_imgfile test_largefile test_linuxaudiodev test_locale test_mmap test_nis test_openpty test_poll test_popen2 test_pty test_pwd test_signal test_socketserver test_sunaudiodev test_sundry test_timing In a window titled Python IDE.out the following appeared: no mem for new parser And in the output window this appeared: XXX killed unknown (crashed?) Python window. There was also an extra Apple; File; Edit; and Help menu at the end of the normal set of OS menus. "About SIOUX" appeared at the top of the 2nd Apple menu. After I increased the minimum memory from 4 MB to 8 MB I got the following response: 103 tests OK. 6 tests failed: test_asynchat test_longexp test_sha test_socket test_unicodedata test_zlib 30 tests skipped: test_winreg test_winsound >>> And then I was then able to reduce the memory back down to 4 MB and generate the same thing (i.e. only 6 failures and no extra menus). ==== When I try to run IDLE (not IDE) I get the following error which did not occur under version 2.1 (I read in the notes that 1.5.2 is needed to run IDLE but since I was able to run it under 2.1 I don't know if I should be able to run it under 2.1.1 or not). Traceback (most recent call last): File "MacintoshHD:Python 2.1.1:Tools:idle:idle.py", line 12, in ? PyShell.main() File "MacintoshHD:Python 2.1.1:Tools:idle:PyShell.py", line 759, in main shell = PyShell(flist) File "MacintoshHD:Python 2.1.1:Tools:idle:PyShell.py", line 319, in __init__ OutputWindow.__init__(self, flist, None, None) File "MacintoshHD:Python 2.1.1:Tools:idle:OutputWindow.py", line 15, in __init__ apply(EditorWindow.__init__, (self,) + args) File "MacintoshHD:Python 2.1.1:Tools:idle:EditorWindow.py", line 152, in __init__ text['font'] = edconf.get('font-name'), edconf.get('font-size') File "MacintoshHD:Python 2.1.1:Tools:idle:IdleConf.py", line 65, in get return self.config.get(self.section, options, raw, vars) File "MacintoshHD:Python 2.1.1:Lib:ConfigParser.py", line 286, in get raise NoOptionError(option, section) ConfigParser.NoOptionError: No option `font-name' in section: EditorWindow ==== Finally, ProFont is a great replacement for Monaco. You can read about it at http://macinsearch.com/infomac2/font/pro-font-22.html. Has anyone considered making this the default font instead of MacPython-Sans? /c From csmith@blakeschool.org Sun Aug 5 20:49:38 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Sun, 05 Aug 2001 14:49:38 -0500 Subject: [Pythonmac-SIG] Working interactively with IDE (refreshing script; namespace updating) Message-ID: After reading the "Up All Night with IDLE" thread http://mail.python.org/pipermail/tutor/2001-January/003082.html and seeing the post by Patrick regarding "Refreshing a script" I came up with the following way to work with IDE: The problem: When you are working on a script in a window and you make changes to an object (variable, function, etc...) name, the old object still exists. This means that you will not always get an "is not defined" error even though you would if you quit and tried to run your script after restarting IDE. Example: ORIGINAL x=2 print "x=",x MODIFIED y=1 print "y=",x ## <--forgot to change the 2nd x # the modified program will print "y= 2" -- even # though the x variable is undefined in the script it is # still remembered by Python in this IDE window and # that is what you told it (inadvertently) to print. A solution: Work with two scripts, one to load your active work and one containing your developing script: # tester.py (this just loads and reloads your work) import mywork reload(mywork) mywork.testmywork() # mywork.py (this is the one that will contain your work def testmywork(): x=2 print "x=",x When you make changes to "mywork.py" and *save* these changes and then run the "tester.py" program as written, you work in "mywork" will be reloaded and if you have a modification like shown above, you will generate an error since x is not defined. When your scipt runs as you want it to, copy the text of "mywork.py", delete the first line, and unindent one level and save under a new name. The one-best-solution (IMO): IDE would automatically do this sort of thing with a script that is being run --not in the interactive window which prompts you with the ">>>" but in the script windows that are created and used to write new scripts. /c From jack@oratrix.nl Sun Aug 5 20:54:23 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sun, 05 Aug 2001 21:54:23 +0200 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: Message by Jacob Kaplan-Moss , Sun, 5 Aug 2001 11:02:08 +0100 , Message-ID: <20010805195428.C02A9162E09@oratrix.oratrix.nl> Recently, Jacob Kaplan-Moss said: > >I've attached the sources for zlib > > I hate to be a nitpicker but... > > Could you please not post large binaries to the list? Those of us > (as in: me) on slow dialups really don't want to have to wait for a > file to download when we check our mail. Oops, sorry, that's partly my mistake. Mailman held Tony's post because it was 200Kb, and I let it through because I tought it wouldn't bother too many people. When this happens again I'll not let big posts through but ask the original poster to put the file on an ftp site somewhere. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Sun Aug 5 21:01:13 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sun, 05 Aug 2001 22:01:13 +0200 Subject: [Pythonmac-SIG] Working interactively with IDE (refreshing script; namespace updating) In-Reply-To: Message by "Christopher Smith" , Sun, 05 Aug 2001 14:49:38 -0500 , Message-ID: <20010805200118.C2FC3162E06@oratrix.oratrix.nl> I think I would categorise this as a bug in IDE, I think it should clear out the namespace of the module before running it again. Or at least there should be an option alongside the "run as __main__", "run profiled", etc. to get this behaviour. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jwblist@olympus.net Sun Aug 5 22:48:19 2001 From: jwblist@olympus.net (John W Baxter) Date: Sun, 5 Aug 2001 14:48:19 -0700 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available In-Reply-To: <20010802220614.A00C6162E14@oratrix.oratrix.nl> References: <20010802220614.A00C6162E14@oratrix.oratrix.nl> Message-ID: At 0:06 +0200 8/3/2001, Jack Jansen wrote: >[Folks: I'm sending this mail to pythonmac-sig only for today. Once I >have a few "it works" reports in I'l advertise it wider] Jack, I don't think it's ready for prime time on Mac OS X. (Which doesn't hurt me, because I have "mainline" Python 2.1 running happily on Mac OS X. I think if you do re-release for Mac OS X, the readme note about clearing the leavings out of /Library/CFMSupport needs to be moved toward the top of the readme. After the installer crashed twice, I did notice, and cleared it out. Then the installer ran, leaving me with a /Library/CFMSupport/PythonCore 2.1.1 which both Finder (not to be trusted) and ls -l insist contains 0 bytes. ConfigurePythonCarbon ran "forever" (shower plus 1/2 hour). I haven't gotten through import test.autotest yet...it has hung after test_grammar, or after test__all__, or crashed in there somewhere. Then I started the IDE in error (clicked wrong file), and it looped early on (or at least showed the spinning color wheel)...I ran Python Interpreter and the tests got as far as printing test_bufio. I'm off for a small venture...will be trying under Mac OS 9.1 (freshly installed on a different partition) when I get back (Monday morning your time). --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From jack@oratrix.nl Sun Aug 5 23:08:07 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 06 Aug 2001 00:08:07 +0200 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available In-Reply-To: Message by John W Baxter , Sun, 5 Aug 2001 14:48:19 -0700 , Message-ID: <20010805220812.E6023162E06@oratrix.oratrix.nl> First: could other people please report OSX success/failure reports? I want to find out quickly whether this is a general problem or a specific one with John's setup. Recently, John W Baxter said: > Jack, I don't think it's ready for prime time on Mac OS X. (Which doesn't > hurt me, because I have "mainline" Python 2.1 running happily on Mac OS X. > > I think if you do re-release for Mac OS X, the readme note about clearing > the leavings out of /Library/CFMSupport needs to be moved toward the top of > the readme. After the installer crashed twice, I did notice, and cleared > it out. John, are you sure you're getting aliases in /Library/CFMSupport? That was a problem with 2.1 beta installers, but I "fixed" it for 2.1 final by always copying and never aliaseing on OSX. So if you're seeing aliases there something funny is happening. > Then the installer ran, leaving me with a /Library/CFMSupport/PythonCore > 2.1.1 which both Finder (not to be trusted) and ls -l insist contains 0 > bytes. This is more serious. You're not running a multiprocessor? So far the only reports off this happening has been on multiprocessors. > ConfigurePythonCarbon ran "forever" (shower plus 1/2 hour). This is the same problem as the previous one, I think. The I/O system somehow hangs. > I haven't gotten through import test.autotest yet...it has hung after > test_grammar, or after test__all__, or crashed in there somewhere. Then I > started the IDE in error (clicked wrong file), and it looped early on (or > at least showed the spinning color wheel)...I ran Python Interpreter and > the tests got as far as printing test_bufio. Again, the same I/O problem. If you have a multiprocessor you should have read the release notes (Python 2.1.1 does not work on OSX multiprocessors), if you don't have a multiprocessor I'm very interested in your Apple System Profiler output. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jwblist@olympus.net Mon Aug 6 01:28:33 2001 From: jwblist@olympus.net (John W Baxter) Date: Sun, 5 Aug 2001 17:28:33 -0700 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available In-Reply-To: <20010805220812.E6023162E06@oratrix.oratrix.nl> References: <20010805220812.E6023162E06@oratrix.oratrix.nl> Message-ID: Hi, Jack... I think you've probably found the problem, and I should have been explicit. (I'm leaving all the context in place below). I do indeed have a dual processor machine: Dual 533. I ran the full install. (Would I have better luck with the "live" installer? I'll find out later.) About to try Mac OS 9.1 on the Dual 533 (where the candidate did fine and I expect this to be fine), and then Mac OS 9.1 on my 7300 (which has an older MacPython installed). /Library/CFMSupport, as viewed now from Mac OS 9.1 on the other volume (which is not the 9.1 which runs Classic) has, according to Mac OS 9.1 Finder, just the zero-length PythonCore 2.1.1 file. No aliases. If it's just Dual processors with the problem, I would think a prominent note to that effect would suffice. It may not be the installer...Mac OS 10.1/Mac OS 9.2 may fix the problem. Next week (ie, the week starting 8/6), I'll have the opportunity to install onto the boss' new "summer 2001" G4 (I'm pretty sure he ordered the 733). That will be a newer Mac OS 10.0.4 build plus Mac OS 9.2. I'll let you know how that goes. At 0:08 +0200 8/6/01, Jack Jansen wrote: >First: could other people please report OSX success/failure reports? I >want to find out quickly whether this is a general problem or a >specific one with John's setup. > >Recently, John W Baxter said: >> Jack, I don't think it's ready for prime time on Mac OS X. (Which doesn't >> hurt me, because I have "mainline" Python 2.1 running happily on Mac OS X. >> >> I think if you do re-release for Mac OS X, the readme note about clearing >> the leavings out of /Library/CFMSupport needs to be moved toward the top of >> the readme. After the installer crashed twice, I did notice, and cleared >> it out. > >John, are you sure you're getting aliases in /Library/CFMSupport? That >was a problem with 2.1 beta installers, but I "fixed" it for 2.1 final >by always copying and never aliaseing on OSX. So if you're seeing >aliases there something funny is happening. > >> Then the installer ran, leaving me with a /Library/CFMSupport/PythonCore >> 2.1.1 which both Finder (not to be trusted) and ls -l insist contains 0 >> bytes. > >This is more serious. You're not running a multiprocessor? So far the >only reports off this happening has been on multiprocessors. > >> ConfigurePythonCarbon ran "forever" (shower plus 1/2 hour). > >This is the same problem as the previous one, I think. The I/O system >somehow hangs. > >> I haven't gotten through import test.autotest yet...it has hung after >> test_grammar, or after test__all__, or crashed in there somewhere. Then I >> started the IDE in error (clicked wrong file), and it looped early on (or >> at least showed the spinning color wheel)...I ran Python Interpreter and >> the tests got as far as printing test_bufio. > >Again, the same I/O problem. If you have a multiprocessor you should >have read the release notes (Python 2.1.1 does not work on OSX >multiprocessors), if you don't have a multiprocessor I'm very >interested in your Apple System Profiler output. >-- >Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ >Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ >www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm > >_______________________________________________ >Pythonmac-SIG maillist - Pythonmac-SIG@python.org >http://mail.python.org/mailman/listinfo/pythonmac-sig -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From jwblist@olympus.net Mon Aug 6 03:57:19 2001 From: jwblist@olympus.net (John W Baxter) Date: Sun, 5 Aug 2001 19:57:19 -0700 Subject: [Pythonmac-SIG] MacPython 2.1.1 release available In-Reply-To: <20010802220614.A00C6162E14@oratrix.oratrix.nl> References: <20010802220614.A00C6162E14@oratrix.oratrix.nl> Message-ID: At 0:06 +0200 8/3/2001, Jack Jansen wrote: >[Folks: I'm sending this mail to pythonmac-sig only for today. Once I >have a few "it works" reports in I'l advertise it wider] OK, now that I have read the "relnotes" file, I know I shouldn't be trying Mac Python 2.1.1 on my Dual 533. Meanwhile, I did run the active installer on Mac OS X on this machine. It had the expected problems after the install--I've tossed the installed stuff. The active installer reported that the file MacPython211-Active-PPC as corrupt...it was happy upon retry. ----------- Over on Mac OS 9.1 on my 7300, "it works." --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From csmith@blakeschool.org Mon Aug 6 07:51:32 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Mon, 06 Aug 2001 01:51:32 -0500 Subject: [Pythonmac-SIG] Re: MacPython 2.1.1 release available In-Reply-To: References: Message-ID: Christopher Smith writes: >Contents: >--Report on installation >--question about IDLE in 2.1.1 [cut] >==== >When I try to run IDLE (not IDE) I get the following error which did not >occur >under version 2.1 (I read in the notes that 1.5.2 is needed to run IDLE >but since >I was able to run it under 2.1 I don't know if I should be able to run it >under >2.1.1 or not). Thanks to BBEdit's "Compare Folders" function I was able to see that the "config-mac.txt" file was missing from the 2.1.1 distribution. Creating a text file named "config-mac.txt" with the following 3 lines and placing it in the IDLE folder, IDLE fires up without errors: [EditorWindow] font-name= monaco font-size= 9 /c From tony@metanet.com Mon Aug 6 15:23:17 2001 From: tony@metanet.com (Tony Lownds) Date: Mon, 06 Aug 2001 07:23:17 -0700 Subject: [Pythonmac-SIG] PIL for OSX/Darwin In-Reply-To: References: <20010803234520-r01010700-5e3a1d42-0910-010c@10.0.0.11> Message-ID: Sorry Jacob! Sorry All! -Tony At 11:02 AM +0100 8/5/01, Jacob Kaplan-Moss wrote: >>I've attached the sources for zlib > >I hate to be a nitpicker but... > >Could you please not post large binaries to the list? Those of us >(as in: me) on slow dialups really don't want to have to wait for a >file to download when we check our mail. > >Thanks, > >Jacob > >_______________________________________________ >Pythonmac-SIG maillist - Pythonmac-SIG@python.org >http://mail.python.org/mailman/listinfo/pythonmac-sig From phf@acm.org Sat Aug 4 23:26:15 2001 From: phf@acm.org (Peter H. Froehlich) Date: Sat, 4 Aug 2001 15:26:15 -0700 Subject: [Pythonmac-SIG] Re: [OT] If in hurry, skip... In-Reply-To: Message-ID: <200108060725.aa06759@gremlin-relay.ics.uci.edu> If you disregard that the basic ideas came from Simula, which was designed in Norway I believe... :-) On Saturday, August 4, 2001, at 02:26 , Dean Draayer wrote: > > How about Smalltalk - purely American? > -- Peter H. Froehlich @ http://www.ics.uci.edu/~pfroehli/ From ryanwilcox@mac.com Mon Aug 6 15:46:25 2001 From: ryanwilcox@mac.com (ryanwilcox@mac.com) Date: Mon, 6 Aug 2001 10:46:25 -0400 Subject: [Pythonmac-SIG] Rated X for (spot) Message-ID: <200108061446.HAA22358@smtpout.mac.com> I'm trying to make a set of scripts that will go back and forth between Classical Mac OS and OS X, using the Carbon Python. Now I have some questions: #1: Is there a way to tell what version of 'mac' I'm on? os.name() doesn't help much... ;) #2: Assuming I'm on X, is there a way to execute command-line programs? I found posix.execve(), but does this work on OS X? From jack@oratrix.nl Mon Aug 6 16:18:19 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 06 Aug 2001 17:18:19 +0200 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: Message by ryanwilcox@mac.com , Mon, 6 Aug 2001 10:46:25 -0400 , <200108061446.HAA22358@smtpout.mac.com> Message-ID: <20010806151819.89BF8303181@snelboot.oratrix.nl> > I'm trying to make a set of scripts that will go back and forth between > Classical Mac OS and OS X, using the Carbon Python. Now I have some > questions: > > #1: Is there a way to tell what version of 'mac' I'm on? os.name() > doesn't help much... ;) gestalt.gestalt is probably your only resort, that's what I use whenever I need to know. > #2: Assuming I'm on X, is there a way to execute command-line programs? > I found posix.execve(), but does this work on OS X? It works in unix-Python on OSX, but not in MacPython. And it never will: it's only available in the BSD libraries and MacPython will be CFM-based for its remaining lifetime. LaunchServices is somewhere on the to-do list, and it may allow you to do this, but it's not very high. So if you want to have a go at it: be my guest:-) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From Benjamin.Schollnick@usa.xerox.com Mon Aug 6 16:29:46 2001 From: Benjamin.Schollnick@usa.xerox.com (Schollnick, Benjamin) Date: Mon, 06 Aug 2001 11:29:46 -0400 Subject: [Pythonmac-SIG] Rated X for (spot) Message-ID: Is there any reason that OS.system() or OS.SPAWNx wouldn't work? My guess would be OS.SYSTEM, to ensure that classic & carbon would work... - Benjamin -----Original Message----- From: Jack Jansen [mailto:jack@oratrix.nl] Sent: Monday, August 06, 2001 11:18 AM To: ryanwilcox@mac.com Cc: pythonmac-sig@python.org Subject: Re: [Pythonmac-SIG] Rated X for (spot) > I'm trying to make a set of scripts that will go back and forth between > Classical Mac OS and OS X, using the Carbon Python. Now I have some > questions: > > #1: Is there a way to tell what version of 'mac' I'm on? os.name() > doesn't help much... ;) gestalt.gestalt is probably your only resort, that's what I use whenever I need to know. > #2: Assuming I'm on X, is there a way to execute command-line programs? > I found posix.execve(), but does this work on OS X? It works in unix-Python on OSX, but not in MacPython. And it never will: it's only available in the BSD libraries and MacPython will be CFM-based for its remaining lifetime. LaunchServices is somewhere on the to-do list, and it may allow you to do this, but it's not very high. So if you want to have a go at it: be my guest:-) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig From jack@oratrix.nl Mon Aug 6 16:36:59 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 06 Aug 2001 17:36:59 +0200 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: Message by "Schollnick, Benjamin" , Mon, 06 Aug 2001 11:29:46 -0400 , Message-ID: <20010806153659.D9873303181@snelboot.oratrix.nl> > Is there any reason that OS.system() or OS.SPAWNx wouldn't work? > > My guess would be OS.SYSTEM, to ensure that classic & carbon would work... Nope, it isn't there under MacPython. MacOS 9 and before have no concept that easily maps to the unix concept of os.system(), and hence Carbon has no such concept, and hence MacPython doesn't have it. Not even on OSX. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Mon Aug 6 16:53:08 2001 From: just@letterror.com (Just van Rossum) Date: Mon, 6 Aug 2001 17:53:08 +0200 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: <20010806151819.89BF8303181@snelboot.oratrix.nl> Message-ID: <20010806175309-r01010700-089ae647-0910-010c@10.0.0.16> Jack Jansen wrote: > It works in unix-Python on OSX, but not in MacPython. And it never will: it's > only available in the BSD libraries and MacPython will be CFM-based for its > remaining lifetime. Is there really no way to get to BSD calls at all? Seems kindof dumb: why wouldn't a Carbon app want to do that under OSX? And vice versa: just today I was thinking about a unix app that would use Carbon to create PICT images... Just From just@letterror.com Mon Aug 6 20:45:39 2001 From: just@letterror.com (Just van Rossum) Date: Mon, 6 Aug 2001 21:45:39 +0200 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: <20010806175309-r01010700-089ae647-0910-010c@10.0.0.16> Message-ID: <20010806214548-r01010700-ff7db40a-0910-010c@10.0.0.16> I wrote: > And vice versa: just today I > was thinking about a unix app that would use Carbon to create PICT images... Hm, since Jack's been busy adding the Mac toolbox modules to the Darwin build, I guess this is no problem at all. Cool stuff: I can do "import Qd" on the command line! Whoohoo. Speaking of which: isn't this the right time to move the Mac modules to a package?! I think it's now or never. It's far too dangerous to have so many generic module names around, especially since we're invading an existing territory... Just From nathan@vividworks.com Tue Aug 7 01:46:31 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Mon, 6 Aug 2001 18:46:31 -0600 (CST) Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: <20010806153659.D9873303181@snelboot.oratrix.nl> Message-ID: But if you don't use MacPYthon and use a compiled-for-OS X UNIX python then you'll have all that. nathan On Mon, 6 Aug 2001, Jack Jansen wrote: > > Is there any reason that OS.system() or OS.SPAWNx wouldn't work? > > > > My guess would be OS.SYSTEM, to ensure that classic & carbon would work... > > Nope, it isn't there under MacPython. MacOS 9 and before have no concept that > easily maps to the unix concept of os.system(), and hence Carbon has no such > concept, and hence MacPython doesn't have it. Not even on OSX. > -- > Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ > www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm > > > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From jwblist@olympus.net Tue Aug 7 03:46:47 2001 From: jwblist@olympus.net (John W Baxter) Date: Mon, 6 Aug 2001 19:46:47 -0700 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: <20010806214548-r01010700-ff7db40a-0910-010c@10.0.0.16> References: <20010806214548-r01010700-ff7db40a-0910-010c@10.0.0.16> Message-ID: At 21:45 +0200 8/6/2001, Just van Rossum wrote: >Speaking of which: isn't this the right time to move the Mac modules to a >package?! I think it's now or never. It's far too dangerous to have so many >generic module names around, especially since we're invading an existing >territory... Seems like a good idea to me (if it can be done without breaking existing code...and maybe even then: we have to learn "from __future__ import xxx" sometime ;-) ). Are we already properly case-conscious in module names? Sooner or later it will become viable to use UFS for at least some of Mac OS X's volumes. --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From just@letterror.com Tue Aug 7 08:47:28 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 7 Aug 2001 09:47:28 +0200 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: Message-ID: <20010807094730-r01010700-df5bed12-0910-010c@10.0.0.17> > At 21:45 +0200 8/6/2001, Just van Rossum wrote: > >Speaking of which: isn't this the right time to move the Mac modules to a > >package?! I think it's now or never. It's far too dangerous to have so many > >generic module names around, especially since we're invading an existing > >territory... John W Baxter wrote: > Seems like a good idea to me (if it can be done without breaking existing > code...and maybe even then: we have to learn "from __future__ import xxx" > sometime ;-) ). Maybe it could almost be as simple as this: Carbon/ __init__.py # empty Evt.so # or Evt.carbon.slb of course Events.py Win.so Res.so Qd.so ..etc... Then either Carbon/ itself is on sys.path (b/w compatible) or the surrounding folder (forcing "from Carbon import Qd") or even both? It's a little tricky as under MacPython some of the Mac modules (Qd, Res, a bunch of others) aren't available as shared libs, but are part of PythonCore, but overall I think it's possible to privide a smooth transition path. Just From jack@oratrix.nl Tue Aug 7 10:33:01 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 11:33:01 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by Just van Rossum , Tue, 7 Aug 2001 09:47:28 +0200 , <20010807094730-r01010700-df5bed12-0910-010c@10.0.0.17> Message-ID: <20010807093302.638A5303181@snelboot.oratrix.nl> I'm all in favor of the idea to put all toolbox modules in a package. Actually, if people don't start yelling NO! NO! NO! right away I might commence with the overhaul this week. > Maybe it could almost be as simple as this: > > Carbon/ > __init__.py # empty > Evt.so # or Evt.carbon.slb of course > Events.py > Win.so > Res.so > Qd.so > ..etc... And will it bother OS9 users that they have to say Carbon.Evt even if they're using classic PPC Python? It wouldn't bother me, but I'm just asking... > Then either Carbon/ itself is on sys.path (b/w compatible) or the surrounding > folder (forcing "from Carbon import Qd") or even both? Yep. > It's a little tricky as under MacPython some of the Mac modules (Qd, Res, a > bunch of others) aren't available as shared libs, but are part of PythonCore, > but overall I think it's possible to privide a smooth transition path. No problem anymore: because I had to fix this for OSX (the WITH_MAC_TOOLBOX_GLUE stuff) we can now put all toolbox modules in their own .slb. The only issue I can see is that I don't know whether it's possible to do the install automatically for OSX unix-Python builds. But that is a minor issue, it might even be a good idea to do the whole toolbox stuff as a separate distutils-based "distribution" (included in the standard distribution). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Tue Aug 7 10:41:30 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 11:41:30 +0200 Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: Message by Just van Rossum , Mon, 6 Aug 2001 17:53:08 +0200 , <20010806175309-r01010700-089ae647-0910-010c@10.0.0.16> Message-ID: <20010807094130.E7B16303181@snelboot.oratrix.nl> > Jack Jansen wrote: > > > It works in unix-Python on OSX, but not in MacPython. And it never will: it's > > only available in the BSD libraries and MacPython will be CFM-based for its > > remaining lifetime. > > Is there really no way to get to BSD calls at all? Seems kindof dumb: why > wouldn't a Carbon app want to do that under OSX? Adding the BSD calls to CFM-based MacPython is doable, but not easy. The BSD calls are only available in Mach-O libraries, so you would have to write stub routines. Doable, but I've never done it. Hmm, this seems to be sort-of similar to what calldll does, maybe someone wants to start hacking up calldll to give us access to macho-libraries from MacPython? The alternative, making MacPython itself Mach-O based, isn't worth the trouble. There's no SIOUX and MSL C library under Macho, so you get to use the gcc libc and lose the console, get unix pathnames, etc. By the time you're done converting MacPython you have something very much resembling unix-Python, so unix-Python is probably a better starting point in the first place. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Tue Aug 7 10:56:04 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 7 Aug 2001 11:56:04 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: <20010807093302.638A5303181@snelboot.oratrix.nl> Message-ID: <20010807115607-r01010700-237dbc93-0910-010c@10.0.0.17> Jack Jansen wrote: > And will it bother OS9 users that they have to say Carbon.Evt even if they're > using classic PPC Python? > > It wouldn't bother me, but I'm just asking... Dunno: I think that at least with MacPython (as in CFM-based) the default might have to remain unpackaged for a while? Even more major: how about :Mac:Lib and other assorted modules? A package named "Mac"? [ ... ] > No problem anymore: because I had to fix this for OSX (the > WITH_MAC_TOOLBOX_GLUE stuff) we can now put all toolbox modules in their own > ..slb. Cool. > The only issue I can see is that I don't know whether it's possible to do the > install automatically for OSX unix-Python builds. But that is a minor issue, > it might even be a good idea to do the whole toolbox stuff as a separate > distutils-based "distribution" (included in the standard distribution). Make under unix already runs a setup.py, so we could perhaps add a "darwin1" switch in it? Btw: since Waste is carbonized, could it be available under Unix, too? Just From jack@oratrix.nl Tue Aug 7 11:26:42 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 12:26:42 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by Just van Rossum , Tue, 7 Aug 2001 11:56:04 +0200 , <20010807115607-r01010700-237dbc93-0910-010c@10.0.0.17> Message-ID: <20010807102643.6BEC7303181@snelboot.oratrix.nl> > Dunno: I think that at least with MacPython (as in CFM-based) the default might > have to remain unpackaged for a while? Yep, for one release. What I'm thinking of doing is putting all the toolbox .slb's and the stuff from lib-toolbox into :Mac:Lib:Carbon. By default :Mac:Lib:Carbon would be on sys.path for 1 release. Actually, I might convert the whole library to use "from Carbon import Res", leave :Mac:Lib:Carbon out of sys.path by default and add a prominent note to the release notes. Comments? > Even more major: how about :Mac:Lib and other assorted modules? A package named > "Mac"? I haven't a clue, really. > > The only issue I can see is that I don't know whether it's possible to do the > > install automatically for OSX unix-Python builds. But that is a minor issue, > > it might even be a good idea to do the whole toolbox stuff as a separate > > distutils-based "distribution" (included in the standard distribution). > > Make under unix already runs a setup.py, so we could perhaps add a "darwin1" > switch in it? Not good enough, at least I can't think of a way to make it work. setup.py installs everything into lib-dynload or something, whereby it becomes available as a toplevel module. That's also what happens to the toolbox modules (as of sunday evening, when I checked in the mods to setup.py). If someone else wants to have a look at installing modules into a package from the core setup.py: be my guest. > Btw: since Waste is carbonized, could it be available under Unix, too? Not yet. I have a Mach-O Waste but it's not for general distribution yet. Or, where I say "I have..." I should say "I may have": Marco Piovanelli pointed me it to me last sunday, but I haven't unpacked it yet or anything. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Tue Aug 7 11:56:04 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 7 Aug 2001 12:56:04 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: <20010807102643.6BEC7303181@snelboot.oratrix.nl> Message-ID: <20010807125609-r01010700-7692aeec-0910-010c@10.0.0.17> Jack Jansen wrote: > Yep, for one release. What I'm thinking of doing is putting all the toolbox > ..slb's and the stuff from lib-toolbox into :Mac:Lib:Carbon. By default > :Mac:Lib:Carbon would be on sys.path for 1 release. > > Actually, I might convert the whole library to use "from Carbon import Res", > leave :Mac:Lib:Carbon out of sys.path by default and add a prominent note to > the release notes. Comments? I think that's too harsh. > > Even more major: how about :Mac:Lib and other assorted modules? A package > > named "Mac"? > > I haven't a clue, really. In what sense? It's a whole bunch of modules, including lib-toolbox, lib-scripting, lib-scriptpackages. "import findertools" becomes "from Mac import findertools". Worth it? Just From jack@oratrix.nl Tue Aug 7 12:33:47 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 13:33:47 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by Just van Rossum , Tue, 7 Aug 2001 12:56:04 +0200 , <20010807125609-r01010700-7692aeec-0910-010c@10.0.0.17> Message-ID: <20010807113348.6251A303181@snelboot.oratrix.nl> > > > Even more major: how about :Mac:Lib and other assorted modules? A package > > > named "Mac"? > > > > I haven't a clue, really. > > In what sense? > > It's a whole bunch of modules, including lib-toolbox, lib-scripting, > lib-scriptpackages. "import findertools" becomes "from Mac import findertools". > Worth it? I that sense: I don't know whether it's worth it. There's really a whole hierarchy of modules like Mac.Carbon.Res, Mac.findertools and Mac.Scripting.Finder, but Python has (so far) had a pretty flat namespace. We could of course stuff what is now :Mac:Lib (including the coming :Mac:Lib:Carbon) into :Lib:Mac, add an __init__.py file and be done with it... -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Tue Aug 7 13:32:43 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 7 Aug 2001 14:32:43 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: <20010807113348.6251A303181@snelboot.oratrix.nl> Message-ID: <20010807143245-r01010700-ff5cf400-0910-010c@10.0.0.17> Jack Jansen wrote: > I that sense: I don't know whether it's worth it. There's really a whole > hierarchy of modules like Mac.Carbon.Res, Mac.findertools and > Mac.Scripting.Finder, but Python has (so far) had a pretty flat namespace. I think it should/could stay fairly flat, eg. Carbon doesn't need to be a subpackage of Mac, but could itself be a top level package. > We could of course stuff what is now :Mac:Lib (including the coming > :Mac:Lib:Carbon) into :Lib:Mac, add an __init__.py file and be done with it... Heh.. We have to do *something*, especially all the constants files that belong to specific Toolbox module should also become part of the Carbon module. Eg. Events.py, Dialogs.py, Fonts.py, Lists.py, TextEdit.py, etc. But things like FrameWork.py and EasyDialogs.py should be part of Mac. Or? Just From jack@oratrix.nl Tue Aug 7 15:00:40 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 16:00:40 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by Just van Rossum , Tue, 7 Aug 2001 14:32:43 +0200 , <20010807143245-r01010700-ff5cf400-0910-010c@10.0.0.17> Message-ID: <20010807140041.67E8C303181@snelboot.oratrix.nl> Just thought of another naming issue. Not all the toolbox modules are technically part of Carbon. For instance, QuickTime is in it's own framework, and CF is in CoreFoundation. Moreover, Waste isn't really part of any framework. On the one hand it is a pretty easy solution to simply dump everything into Carbon. On the other hand we may well make life easier for future Pythonistas if we follow Apple's naming convention. The latter would also mean that at some point we have a Carbon.Carbon module which would be something like from Ctl import * from Controls import * from Dlg import * from Dialogs import * ... Thereby if you see in Apple's documentation that you should #include you know that in Python you do from Carbon.Carbon import * -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From nathan@vividworks.com Tue Aug 7 15:54:05 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Tue, 7 Aug 2001 08:54:05 -0600 (CST) Subject: [Pythonmac-SIG] Rated X for (spot) In-Reply-To: <20010807094730-r01010700-df5bed12-0910-010c@10.0.0.17> Message-ID: Where are these available when using C or Java carbon? It would be nice if the syntax were the same, such as Java: Carbon.Res Py: Carbon.Res ? nathan On Tue, 7 Aug 2001, Just van Rossum wrote: > > At 21:45 +0200 8/6/2001, Just van Rossum wrote: > > >Speaking of which: isn't this the right time to move the Mac modules to a > > >package?! I think it's now or never. It's far too dangerous to have so many > > >generic module names around, especially since we're invading an existing > > >territory... > > John W Baxter wrote: > > Seems like a good idea to me (if it can be done without breaking existing > > code...and maybe even then: we have to learn "from __future__ import xxx" > > sometime ;-) ). > > Maybe it could almost be as simple as this: > > Carbon/ > __init__.py # empty > Evt.so # or Evt.carbon.slb of course > Events.py > Win.so > Res.so > Qd.so > ..etc... > > Then either Carbon/ itself is on sys.path (b/w compatible) or the surrounding > folder (forcing "from Carbon import Qd") or even both? > > It's a little tricky as under MacPython some of the Mac modules (Qd, Res, a > bunch of others) aren't available as shared libs, but are part of PythonCore, > but overall I think it's possible to privide a smooth transition path. > > Just > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From sdm7g@Virginia.EDU Tue Aug 7 17:35:24 2001 From: sdm7g@Virginia.EDU (Steven D. Majewski) Date: Tue, 7 Aug 2001 12:35:24 -0400 (EDT) Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: <20010807140041.67E8C303181@snelboot.oratrix.nl> Message-ID: FYI: I case you've forgotten, what I've had on OSX is a Carbonmodule.c with: #define ADD_MODULE(x) if (-1 == \ PyModule_AddObject( m, (x), PyImport_ImportModule((x)))) return NULL static PyMethodDef CarbonMethods[] = { {NULL, NULL} /* sentinal */ }; initCarbon() { PyObject *m; int status; m = Py_InitModule("Carbon",CarbonMethods ); (void) initWin(); ADD_MODULE("Win"); (void) initMenu(); ADD_MODULE("Menu"); (void) initEvt(); ADD_MODULE("Evt"); (void) initDlg(); ADD_MODULE("Dlg"); (void) initCtl(); ADD_MODULE("Ctl"); (void) initQd(); ADD_MODULE("Qd"); (void) initRes(); ADD_MODULE("Res"); ... etc ... which allows either: import Carbon.Dlg from Carbon import Dlg,Evt,Ctl,Qd or after an initial: import Carbon has been done somewhere to initialize the module, a simple: import Dlg will work, as the ADD_MODULE stuff has added the module names to sys.modules. Everything was stuffed into a single Carbonmodule because I had trouble trying to link them separately because of cross links between the modules. The only problem with this method is that there is a significant initialization delay for importing the Carbonmodule. ( Jack -- have you had any better luck getting the module to link separately on OSX ? ) -- Steve Majewski From steve@spvi.com Tue Aug 7 18:10:26 2001 From: steve@spvi.com (Steve Spicklemire) Date: Tue, 07 Aug 2001 12:10:26 -0500 Subject: [Pythonmac-SIG] ObjC stuff References: Message-ID: <3B702102.34A945E2@spvi.com> Hi Folks, Back in my "Good ol' NeXT" days I played with an ObjC module, I think it was Bill Busomethingicantremember. Is that still kicking around anywhere? I thought it integrated with the IB/PB stuff pretty well. -steve From jack@oratrix.nl Tue Aug 7 21:06:20 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 22:06:20 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by "Steven D. Majewski" , Tue, 7 Aug 2001 12:35:24 -0400 (EDT) , Message-ID: <20010807200625.23A6414B630@oratrix.oratrix.nl> Recently, "Steven D. Majewski" said: > > > > FYI: I case you've forgotten, what I've had on OSX is a Carbonmodule.c > [...] > ( Jack -- have you had any better luck getting the module to > link separately on OSX ? ) No, I hadn't forgotten, I fondly remember it:-) But to answer the second question first: yes, the separate linking problem on OSX is solved, and in a reasonably general way. The core Python shared library contains stub routines for anything exported by the dynamic modules. The stub routine will import the module, whose init routine will replace the stub pointer by a pointer to the real routine. I actually like this scheme so much that I now also use it in MacPython, so the cross-linking between modules is gone there too. And with the OSX linking working your Carbonmodule lost it's main attraction, I think, and in addition there was the added maintainance complexity and use magic. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From sdm7g@Virginia.EDU Tue Aug 7 21:10:01 2001 From: sdm7g@Virginia.EDU (Steven D. Majewski) Date: Tue, 7 Aug 2001 16:10:01 -0400 (EDT) Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: <20010807200625.23A6414B630@oratrix.oratrix.nl> Message-ID: On Tue, 7 Aug 2001, Jack Jansen wrote: > > But to answer the second question first: yes, the separate linking > problem on OSX is solved, and in a reasonably general way. The core > Python shared library contains stub routines for anything exported by > the dynamic modules. The stub routine will import the module, whose > init routine will replace the stub pointer by a pointer to the real > routine. > Where is this stuff ? I thought everything had been merged into the main python sourceforge CVS, but I didn't see anything new in that. Do you have a different branch for testing/development ? -- Steve From jack@oratrix.nl Tue Aug 7 21:54:14 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 22:54:14 +0200 Subject: [Pythonmac-SIG] ObjC stuff In-Reply-To: Message by Steve Spicklemire , Tue, 07 Aug 2001 12:10:26 -0500 , <3B702102.34A945E2@spvi.com> Message-ID: <20010807205419.F380714B630@oratrix.oratrix.nl> Recently, Steve Spicklemire said: > Back in my "Good ol' NeXT" days I played with an ObjC module, I think i > t was > Bill Busomethingicantremember. Is that still kicking around anywhere? I thoug > ht > it integrated with the IB/PB stuff pretty well. I think it's still around, but I haven't looked at it yet. I'd really like it if people could put some effort into this, as I'm going to be busy with various other things wrt. OSX, but in the end Cocoa support is probably going to be the most exciting new thing for Python. What I hope to have finished reasonably soon is - A Python.framework containing the core .dylib, lib directory, etc. - A Python.app using this framework, which would be the basis for both Carbon and Cocoa/ObjC scripts - Most of the MacPython Carbon modules. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Tue Aug 7 21:56:49 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 22:56:49 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by "Steven D. Majewski" , Tue, 7 Aug 2001 16:10:01 -0400 (EDT) , Message-ID: <20010807205654.0108414B630@oratrix.oratrix.nl> Recently, "Steven D. Majewski" said: > Where is this stuff ? I thought everything had been merged into > the main python sourceforge CVS, but I didn't see anything new in > that. Do you have a different branch for testing/development ? It's all in the repository, and has been since April or May. Remember that you have to do "cvs update -d" to see new directories... There's one other thing you need: there's a patch to configure.in that is still sitting in the sourceforge patch manager waiting for someone with more knowledge of autoconf to do a sanity check. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From steve@spvi.com Tue Aug 7 22:02:18 2001 From: steve@spvi.com (Steve Spicklemire) Date: Tue, 7 Aug 2001 16:02:18 -0500 Subject: [Pythonmac-SIG] ObjC stuff In-Reply-To: <20010807205419.F380714B630@oratrix.oratrix.nl> Message-ID: <200108072103.f77L3HE49323@obsidian.spvi.com> So it's in CVS somewhere? I'll do a check-out and see if I can find it. I just ordered CW-6 today so I might be able to pitch in a bit. thanks! -steve On Tuesday, August 7, 2001, at 03:54 PM, Jack Jansen wrote: > > Recently, Steve Spicklemire said: >> Back in my "Good ol' NeXT" days I played with an ObjC module, I >> think i >> t was >> Bill Busomethingicantremember. Is that still kicking around anywhere? >> I thoug >> ht >> it integrated with the IB/PB stuff pretty well. > > I think it's still around, but I haven't looked at it yet. I'd really > like it if people could put some effort into this, as I'm going to be > busy with various other things wrt. OSX, but in the end Cocoa support > is probably going to be the most exciting new thing for Python. > > What I hope to have finished reasonably soon is > - A Python.framework containing the core .dylib, lib directory, etc. > - A Python.app using this framework, which would be the basis for both > Carbon and Cocoa/ObjC scripts > - Most of the MacPython Carbon modules. > -- > Jack Jansen | ++++ stop the execution of Mumia > Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your > sig ++++ > www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg- > l/sigaction.htm > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig From chrishbarker@home.net Tue Aug 7 22:42:45 2001 From: chrishbarker@home.net (Chris Barker) Date: Tue, 07 Aug 2001 14:42:45 -0700 Subject: [Pythonmac-SIG] mmap module References: Message-ID: <3B7060D5.41E2768F@home.net> I just discovered the mmap module (I think it's been in the standard library since 2.0). It does not seem to exist in MacPython. Judging by the facat that the Windows and Unix constructors are different, I imagine a port to the Mac would take some work. I do have a use for it, is there any chance there will be a Mac version some day? -Chris -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------ From jack@oratrix.nl Tue Aug 7 22:42:07 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 23:42:07 +0200 Subject: [Pythonmac-SIG] ObjC stuff In-Reply-To: Message by Steve Spicklemire , Tue, 7 Aug 2001 16:02:18 -0500 , <200108072103.f77L3HE49323@obsidian.spvi.com> Message-ID: <20010807214212.B130014B630@oratrix.oratrix.nl> Recently, Steve Spicklemire said: > So it's in CVS somewhere? I'll do a check-out and see if I can find it. I don't know, Steven Majewski may know (I think he is the one who looked at it). If it isn't in the repository it probably should be, preferrably in the Modules directory (because it is useful for non-Mac users) but if there's objections against that we'll put it in the Mac/Modules dir. > I just ordered CW-6 today so I might be able to pitch in a bit. While very useful for other things (like MacPython development) you don't need it for OSX unix-Python development: this is all make and gcc-based (and you have those on your OSX developer disc). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From steve@spvi.com Tue Aug 7 22:47:24 2001 From: steve@spvi.com (Steve Spicklemire) Date: Tue, 7 Aug 2001 16:47:24 -0500 Subject: [Pythonmac-SIG] ObjC stuff In-Reply-To: <20010807214212.B130014B630@oratrix.oratrix.nl> Message-ID: <200108072148.f77LmNE49650@obsidian.spvi.com> Hi Jack, >> I just ordered CW-6 today so I might be able to pitch in a bit. > > While very useful for other things (like MacPython development) you > don't need it for OSX unix-Python development: this is all make and > gcc-based (and you have those on your OSX developer disc). > -- Good! I was hoping that the Cocoa stuff would not depend on Metrowerks! I wouldn't mind being able to pitch in on the MacPython stuff too. I'd like to update my MMDirector Python "Xtra", and I'm guessing I'll need CWPro for that. Of course, Macromedia has been very quiet about a MacOSX port of Director.. but I'm assuming it will be a Carbon thingy... anyway.. thanks! -steve From jack@oratrix.nl Tue Aug 7 22:49:13 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 07 Aug 2001 23:49:13 +0200 Subject: [Pythonmac-SIG] mmap module In-Reply-To: Message by Chris Barker , Tue, 07 Aug 2001 14:42:45 -0700 , <3B7060D5.41E2768F@home.net> Message-ID: <20010807214918.B872814B630@oratrix.oratrix.nl> Recently, Chris Barker said: > I just discovered the mmap module (I think it's been in the standard > library since 2.0). It does not seem to exist in MacPython. Judging by > the facat that the Windows and Unix constructors are different, I > imagine a port to the Mac would take some work. I do have a use for it, > is there any chance there will be a Mac version some day? It would be nice, but don't count on me doing it. There's a mapped memory API in at least OS9, maybe earlier, that has all the niceties you need like an interface to file refnos and such. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From sdm7g@Virginia.EDU Tue Aug 7 23:26:15 2001 From: sdm7g@Virginia.EDU (Steven D. Majewski) Date: Tue, 7 Aug 2001 18:26:15 -0400 (EDT) Subject: [Pythonmac-SIG] ObjC stuff In-Reply-To: <20010807214212.B130014B630@oratrix.oratrix.nl> Message-ID: On Tue, 7 Aug 2001, Jack Jansen wrote: > Recently, Steve Spicklemire said: > > So it's in CVS somewhere? I'll do a check-out and see if I can find it. > > I don't know, Steven Majewski may know (I think he is the one who looked > at it). If it isn't in the repository it probably should be, > preferrably in the Modules directory (because it is useful for non-Mac > users) but if there's objections against that we'll put it in the > Mac/Modules dir. PyObjC has it's own SourceForge project: There is info about the mailing list on that page. However, the project hasn't been very active lately. There was an initial burst of activity as we got it updated to compile on OSX and figured out how to use it. What we found were a couple of limitations with the current implementation, so we're planning on redoing much of it. If you look in the mailing list archives, there should be a "helloWorld" example app I posted to that list, as well as some discussion about what works and what doesn't. -- Steve Majewski From chrishbarker@home.net Wed Aug 8 00:14:33 2001 From: chrishbarker@home.net (Chris Barker) Date: Tue, 07 Aug 2001 16:14:33 -0700 Subject: [Pythonmac-SIG] mmap module References: <20010807214918.B872814B630@oratrix.oratrix.nl> Message-ID: <3B707659.3C371B26@home.net> Jack Jansen wrote: > Recently, Chris Barker said: > > I just discovered the mmap module (I think it's been in the standard > > library since 2.0). It does not seem to exist in MacPython. Judging by > > the facat that the Windows and Unix constructors are different, I > > imagine a port to the Mac would take some work. I do have a use for it, > > is there any chance there will be a Mac version some day? > > It would be nice, but don't count on me doing it. There's a mapped > memory API in at least OS9, maybe earlier, that has all the niceties > you need like an interface to file refnos and such. Fair enough. If I find I really need it, maybe I'll look into getting it to work, but I'll probably just find a way around it. -Chris -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------ From csmith@blakeschool.org Wed Aug 8 06:48:05 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Wed, 08 Aug 2001 00:48:05 -0500 Subject: [Pythonmac-SIG] cr/lf conversion utilities Message-ID: For those interested in two very nice utilities for doing cr/lf conversion, check out the following free solutions: http://wuarchive.wustl.edu/systems/mac/info-mac/text/text-to-mac-132.hqx [Text-To-Mac 1.32, size=54k] TextToMac is a utility program for Macintosh computers. It converts the end-of-line code of text files between Macintosh, MS-DOS PC, and UNIX formats. Can convert folders and subfolders; allows you to set the creator; has option to overwrite the original or to create a new file with a specified extension. ---- http://www.hf.uib.no/hi/espen/paradigma/Default.html [Paradigma 2.1, size=46k] Paradigma lets you specify [up to 256 literal, non-grep] conversion rules, such as "abc -> xyz", and so will do the same as a word processor's "Find/replace" command, only much faster and several conversions at once. You can create a stand-alone "Droplet" with a given set of rules in it. e.g. a dos/unix->mac joblet would contain two rules: \r\10 -> \r \10 -> \r (This would be an 11k Droplet.) /c From jack@oratrix.nl Wed Aug 8 11:37:21 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 08 Aug 2001 12:37:21 +0200 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files Message-ID: <20010808103722.56E28303181@snelboot.oratrix.nl> Folks, in the CVS repository there are lots of .xml files, which you can use to create your CodeWarrior projects easily if you're building Python. However, as far as I myself am concerned these files need not be in the repository, as I always generate them with :Mac:scripts:genpluginprojects.py. But generating them requires a working Python (I use PythonStandSmall for this), so that's why I put them into the repository in the first place. So here's my question: does anyone actually use these files? Or, in other words, is there anyone who builds MacPython from the CVS repository who does not use genpluginprojects (or fullbuild, which calls it) to rebuild the extension module projects? Note that this is only important for people building from the CVS repository: in source distributions I make sure that the .prj files are included. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From jack@oratrix.nl Wed Aug 8 12:58:40 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 08 Aug 2001 13:58:40 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by Just van Rossum , Tue, 7 Aug 2001 14:32:43 +0200 , <20010807143245-r01010700-ff5cf400-0910-010c@10.0.0.17> Message-ID: <20010808115840.66BE3303181@snelboot.oratrix.nl> The more I think of it the more I like the idea of turning all the Mac specific modules into a package. (after a transition period, of course). One of the big advantages of a package is that it is self-contained, and can easily be installed with distutils. For supporting the MacPython modules under unix-Python on OSX this is a real boon: there would be a lot less new cruft in the unix-Python build process (only the single glue routine) and all of the Mac stuff would be built with a single distutils-based setup.py script. It also means we don't pollute the namespace so much, and that it is immedeately clear to, say, Windows users that a certain script uses Mac-specific features ("from Mac import findertools" is a lot more clear than "import findertools"). I think the added nuisance is probably worth it. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Wed Aug 8 13:04:26 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 08 Aug 2001 14:04:26 +0200 Subject: [Pythonmac-SIG] Packages and module aliasing - A problem? Message-ID: <20010808120427.0960F303181@snelboot.oratrix.nl> If we go with the package scheme (whether only for Carbon or also for all of the Mac modules) we will have an aliasing problem in the transition period. If the folder structure is like this :Mac:Lib: Carbon: __init__.py Res.carbon.slb ... and both :Mac:Lib and :Mac:Lib:Carbon are on sys.path we have some modules referring to Res as "import Res" (old, unconverted modules) and some referring to it as "import Carbon.Res" or "from Res import Carbon" (converted modules). Does anyone know whether this is going to create problems? Does anyone know for sure that it is _not_ going to create problems? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From Benjamin.Schollnick@usa.xerox.com Wed Aug 8 14:27:45 2001 From: Benjamin.Schollnick@usa.xerox.com (Schollnick, Benjamin) Date: Wed, 08 Aug 2001 09:27:45 -0400 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package Message-ID: I would think it would be possible to do this, without a transition period... Well, sort of without a transition period. Create "stub" modules, which contain a 'FROM xxx import *' to mask the fact that it's loading from a different module. Along with that, utilize the new WARNING framework to inform the user of the depreciation of the module naming... - Benjamin -----Original Message----- From: Jack Jansen [mailto:jack@oratrix.nl] Sent: Wednesday, August 08, 2001 7:59 AM To: pythonmac-sig@python.org Subject: Re: [Pythonmac-SIG] Packaging all toolbox modules in a package The more I think of it the more I like the idea of turning all the Mac specific modules into a package. (after a transition period, of course). One of the big advantages of a package is that it is self-contained, and can easily be installed with distutils. For supporting the MacPython modules under unix-Python on OSX this is a real boon: there would be a lot less new cruft in the unix-Python build process (only the single glue routine) and all of the Mac stuff would be built with a single distutils-based setup.py script. It also means we don't pollute the namespace so much, and that it is immedeately clear to, say, Windows users that a certain script uses Mac-specific features ("from Mac import findertools" is a lot more clear than "import findertools"). I think the added nuisance is probably worth it. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig From just@letterror.com Wed Aug 8 13:21:36 2001 From: just@letterror.com (Just van Rossum) Date: Wed, 8 Aug 2001 14:21:36 +0200 Subject: [Pythonmac-SIG] Packages and module aliasing - A problem? In-Reply-To: <20010808120427.0960F303181@snelboot.oratrix.nl> Message-ID: <20010808142158-r01010700-8eaac807-0910-010c@10.0.0.18> Jack Jansen wrote: > If we go with the package scheme (whether only for Carbon or also for all of > the Mac modules) we will have an aliasing problem in the transition period. If > the folder structure is like this > :Mac:Lib: > Carbon: > __init__.py > Res.carbon.slb > ... > and both :Mac:Lib and :Mac:Lib:Carbon are on sys.path we have some modules > referring to Res as "import Res" (old, unconverted modules) and some referring > to it as "import Carbon.Res" or "from Res import Carbon" (converted modules). > > Does anyone know whether this is going to create problems? Does anyone know > for sure that it is _not_ going to create problems? I have no idea, but loading the same slb twice seems scary indeed. How about something this: : Res.py -> does "from Carbon.Res import *" ... ? Just From jack@oratrix.nl Wed Aug 8 14:57:19 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 08 Aug 2001 15:57:19 +0200 Subject: [Pythonmac-SIG] Packaging all toolbox modules in a package In-Reply-To: Message by "Schollnick, Benjamin" , Wed, 08 Aug 2001 09:27:45 -0400 , Message-ID: <20010808135719.B8D0C303181@snelboot.oratrix.nl> > I would think it would be possible to do this, without a transition > period... > > Well, sort of without a transition period. > > Create "stub" modules, which contain a 'FROM xxx import *' > to mask the fact that it's loading from a different module. Hmm, interesting idea! It wouldn't be all that much work to create the stubs, and it would nicely work around the potential aliasing problem. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From mday@mac.com Wed Aug 8 18:15:50 2001 From: mday@mac.com (Mark Day) Date: Wed, 8 Aug 2001 10:15:50 -0700 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files In-Reply-To: <20010808103722.56E28303181@snelboot.oratrix.nl> Message-ID: <03BDB406-8C21-11D5-9CF9-00039303AF92@apple.com> On Wednesday, August 8, 2001, at 03:37 AM, Jack Jansen wrote: > However, as far as I myself am concerned these files need not be in the > repository, as I always generate them with :Mac:scripts:genpluginprojects.py. > But generating them requires a working Python (I use PythonStandSmall for > this), so that's why I put them into the repository in the first place. > So here's my question: does anyone actually use these files? Or, in other > words, is there anyone who builds MacPython from the CVS repository who does > not use genpluginprojects (or fullbuild, which calls it) to rebuild the > extension module projects? The first time I tried to build from CVS (right after 2.2a1 was released), I couldn't figure out how to build the plugins. I already had MacPython 2.1 installed, but didn't realize I needed to copy the interpreter into the :python:dist:src directory. I also hadn't noticed PythonStandSmall.mcp (nor do I have the expat folder it requires ... yet). So I ended up importing some of the .xml files into CodeWarrior by hand (doing only the ones that the IDE complained about, until I got the IDE to launch all the way). The problem was that genpluginprojects.py tries to find the source relative to the running interpreter. If it could find the source relative to the script itself, or if the build instructions were a little clearer (especially for people trying to get started the first time), I think it would be easier to do away with the .xml files. After a couple of hours, I did manage to get an apparently working MacPython 2.2a1 built. No doubt I was missing many of the plugins, but the basic interpreter and IDE came up. Now that I know more, I'll try it again using PythonStandSmall and fullbuild.py/genpluginprojects.py. Thanks for the hint! On a related note, a lot of third party pieces (ICProgKit, GUSI, Waste, etc.) that the CodeWarrior project access paths use are older than versions I could find on the net. I generally downloaded current versions and fixed up the access paths. Would using aliases work? Or will the projects be updated to reflect current versions? (Maybe they already have in tip-of-trunk sources? I had checked out the r22a1 tag.) Any hints on having a single folder with a CVS checkout that can build either the Darwin/Mac OS X or classic/Carbon MacPython? Would you do the CVS checkout with MacCvs to get file types correct? -Mark From billb@mousa.demon.co.uk Wed Aug 8 23:05:53 2001 From: billb@mousa.demon.co.uk (Bill Bedford) Date: Wed, 8 Aug 2001 23:05:53 +0100 Subject: [Pythonmac-SIG] I know this is a stupid question but................ In-Reply-To: <03BDB406-8C21-11D5-9CF9-00039303AF92@apple.com> References: <03BDB406-8C21-11D5-9CF9-00039303AF92@apple.com> Message-ID: How do I get python to print a literal '=A3' -- that's a pound sign, chr \163, unicode \xa3 All I want to do is print the price in may catalogue....... From ryanwilcox@mac.com Thu Aug 9 06:41:43 2001 From: ryanwilcox@mac.com (Ryan Wilcox) Date: Thu, 9 Aug 2001 01:41:43 -0400 Subject: [Pythonmac-SIG] Setting paths (or: getting a script to run on startup with the IDE) In-Reply-To: <03BDB406-8C21-11D5-9CF9-00039303AF92@apple.com> Message-ID: <20010809014144-r01010700-a929d5ec-0910-010c@129.21.139.17> Hi folks, I would really like to keep some of my modules NOT in the python folder, but in my own folder elsewhere. Ok, I think I can do this with python's sys.path functions. The world is good. The clincher is that I often use Python IDE's interactive mode as a kind of shell to execute my scripts. (think shell-style commands... not ones easily translatable into a 'real' GUI so that I could use it from the menu bar) AND I don't want to have to remember to type sys.path.append(myPath) every time I launch the IDE. So, my question is two-fold: #1: Can I set search paths through the IDE? I see 'Scripts Folder' location settings, but I don't think these are search paths... #2: If not, can I specify a command I want the IDE to run on startup? (and if #2 is false, any hints on where in the IDE's code I should start to add this capability? At least _I_ think it would be useful ;-) ) Thanks a bunch for the help, -Ryan Wilcox (*r.out*) From just@letterror.com Thu Aug 9 08:53:53 2001 From: just@letterror.com (Just van Rossum) Date: Thu, 9 Aug 2001 09:53:53 +0200 Subject: [Pythonmac-SIG] I know this is a stupid question but................ In-Reply-To: Message-ID: <20010809095358-r01010700-78b00484-0910-010c@10.0.0.19> Bill Bedford wrote: > How do I get python to print a literal '=A3' -- that's a pound sign,=20 > chr \163, unicode \xa3 >=20 > All I want to do is print the price in may catalogue....... print chr(163) works for me. If it doesn't: maybe the font you're using doesn't contain = a pound symbol? Or do you have unicode string? In which case print s.encode('macr= oman') should work. Just From just@letterror.com Thu Aug 9 09:02:06 2001 From: just@letterror.com (Just van Rossum) Date: Thu, 9 Aug 2001 10:02:06 +0200 Subject: [Pythonmac-SIG] Setting paths (or: getting a script to run on startup with the IDE) In-Reply-To: <20010809014144-r01010700-a929d5ec-0910-010c@129.21.139.17> Message-ID: <20010809100209-r01010700-f06d5d81-0910-010c@10.0.0.19> --5246553-3623878656-3206340129=:9002 Content-Type: text/plain; Charset=US-ASCII Content-Transfer-Encoding: 7bit Ryan Wilcox wrote: > So, my question is two-fold: > > #1: Can I set search paths through the IDE? I see 'Scripts Folder' > location settings, but I don't think these are search paths... They aren't. > #2: If not, can I specify a command I want the IDE to run > on startup? Not the IDE specifically, byt Python in general can do this: create a file called "sitecustomize.py" and place it somewhere on sys.path. I've appended an example, which looks for a folder called "SysPathExtensions" in the Python folder. Inside "SysPathExtensions" it will look for aliases to folders (or folders themselves) and will append the original folders to sys.path. SysPathExtensions effectively becomes a place where you specify additional sys.path items, without having to use EditPythonPrefs. Just --5246553-3623878656-3206340129=:9002 Content-Type: application/octet-stream; Name="sitecustomize.py"; X-Mac-Type="54455854"; X-Mac-Creator="50696465" Content-Transfer-Encoding: base64 Content-Disposition: attachment; Filename="sitecustomize.py" aW1wb3J0IG1hY2ZzDWltcG9ydCBvcw1pbXBvcnQgc3lzDQ0Nc3lzUGF0aEV4dGVu c2lvbnMgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAiU3lzUGF0aEV4 dGVuc2lvbnMiKQ0NZm9yIGFsaWFzRmlsZSBpbiBvcy5saXN0ZGlyKHN5c1BhdGhF eHRlbnNpb25zKToNCWFsaWFzRmlsZSA9IG9zLnBhdGguam9pbihzeXNQYXRoRXh0 ZW5zaW9ucywgYWxpYXNGaWxlKQ0JdHJ5Og0JCWZzcywgaXNGb2xkZXIsIGlzQWxp YXMgPSBtYWNmcy5SZXNvbHZlQWxpYXNGaWxlKGFsaWFzRmlsZSwgMCkNCWV4Y2Vw dCBtYWNmcy5lcnJvcjoNCQljb250aW51ZQ0JaWYgaXNGb2xkZXI6DQkJcGF0aCA9 IGZzcy5hc19wYXRobmFtZSgpDQkJaWYgcGF0aCBub3QgaW4gc3lzLnBhdGg6DQkJ CXN5cy5wYXRoLmFwcGVuZChwYXRoKQ0N --5246553-3623878656-3206340129=:9002-- From billb@mousa.demon.co.uk Thu Aug 9 09:44:22 2001 From: billb@mousa.demon.co.uk (Bill Bedford) Date: Thu, 9 Aug 2001 09:44:22 +0100 Subject: [Pythonmac-SIG] I know this is a stupid question but................ In-Reply-To: <20010809095358-r01010700-78b00484-0910-010c@10.0.0.19> References: <20010809095358-r01010700-78b00484-0910-010c@10.0.0.19> Message-ID: At 9:53 am +0200 09/08/01, Just van Rossum wrote: >Bill Bedford wrote: > >> How do I get python to print a literal '=A3' -- that's a pound sign, >> chr \163, unicode \xa3 >> >> All I want to do is print the price in may catalogue....... > > print chr(163) > >works for me. If it doesn't: maybe the font you're using doesn't >contain a pound >symbol? Or do you have unicode string? In which case print >s.encode('macroman') >should work. Doesn't work >>> x =3D '=A3' >>> x '\xa3' >>> chr(163) '\xa3' >>> x.encode('macroman') '\xa3' >>> x=3D u'=A3' >>> x u'\xa3' >>> x.encode('macroman') '\xa3' Is there some thing in my set up that will prevent it working PM 7200, OS8.6, Carbon Python? From just@letterror.com Thu Aug 9 10:21:53 2001 From: just@letterror.com (Just van Rossum) Date: Thu, 9 Aug 2001 11:21:53 +0200 Subject: [Pythonmac-SIG] I know this is a stupid question but................ In-Reply-To: Message-ID: <20010809112156-r01010700-76e98936-0910-010c@10.0.0.19> Bill Bedford wrote: > Doesn't work >=20 > >>> x =3D '=A3' > >>> x > '\xa3' > >>> chr(163) > '\xa3' > >>> x.encode('macroman') > '\xa3' > >>> x=3D u'=A3' > >>> x > u'\xa3' > >>> x.encode('macroman') > '\xa3' You didn't print (not sure if my email program will do the charset transl= ation correctly): >>> s =3D '=A3' >>> s # this does repr(s) '\xa3' >>> print s # this prints it directly =A3 >>> u =3D unicode(s, 'macroman') >>> u u'\xa3' >>> u.encode('macroman') '\xa3' >>> print _ =A3 (Interesting: the MacRoman code point for the pound sign is the same as i= n Unicode. Must be any of the very few > 127...) > Is there some thing in my set up that will prevent it working PM=20 > 7200, OS8.6, Carbon Python? Not that I know. Just From walterm@cmat.edu.uy Thu Aug 9 19:56:11 2001 From: walterm@cmat.edu.uy (Walter Moreira) Date: Thu, 9 Aug 2001 15:56:11 -0300 Subject: [Pythonmac-SIG] newbie about Mac Message-ID: <20010809155611.A13110@cmat.edu.uy> Hello. Is there some version of MacPython that runs on MacOs 7.6? I have some experience with other systems, but I know nothing about Macs. In the Jack Jansen's site I found older versions for 68k. What is the difference between PPC and 68k? Do they run on MacOs 7.6? Sorry for the too dumb questions. Walter -- -------------- Walter Moreira <> Centro de Matematica <> Universidad de la Republica email: walterm@cmat.edu.uy <> Home Page: http://www.cmat.edu.uy/~walterm +-------------------------------------------------------- /OD\_ | hundred-and-one symptoms of being an internet addict: O o . |_o_o_) | 255. You work for a newspaper and your editor asks | you to write an article about Internet | addiction...in the "first person." --+-- From jack@oratrix.nl Thu Aug 9 21:22:57 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 09 Aug 2001 22:22:57 +0200 Subject: [Pythonmac-SIG] Setting paths (or: getting a script to run on startup with the IDE) In-Reply-To: Message by Just van Rossum , Thu, 9 Aug 2001 10:02:06 +0200 , <20010809100209-r01010700-f06d5d81-0910-010c@10.0.0.19> Message-ID: <20010809202302.749CA14B630@oratrix.oratrix.nl> > > So, my question is two-fold: > > > > #1: Can I set search paths through the IDE? I see 'Scripts Folder' > > location settings, but I don't think these are search paths... I'm not sure that I correctly understand your question, especially after Just's answer. If you just want to change sys.path you can use the EditPythonPrefs applet (from outside the IDE) which sets the system-wide default for sys.path. If you want to do something more compilcated Just's answer may be the correct solution. But something completely different: it would be nice if IDE incorporated the EditPythonPrefs functionality, it's a bit un-mac-like to use a separate program to set prefs. And something even more completely different: about 4 years ago I asked whether anyone would be willing to change the EditPythonPrefs UI, which is truly horrible (the first Mac UI I ever created:-). I even made the split between the UI and the actual prefs handling for that. The request still stands... -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Thu Aug 9 21:30:10 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 09 Aug 2001 22:30:10 +0200 Subject: [Pythonmac-SIG] newbie about Mac In-Reply-To: Message by Walter Moreira , Thu, 9 Aug 2001 15:56:11 -0300 , <20010809155611.A13110@cmat.edu.uy> Message-ID: <20010809203015.9063814B630@oratrix.oratrix.nl> Recently, Walter Moreira said: > Hello. > > Is there some version of MacPython that runs on MacOs 7.6? I have some > experience with other systems, but I know nothing about Macs. In the Jack > Jansen's site I found older versions for 68k. What is the difference between > PPC and 68k? Do they run on MacOs 7.6? I think MacPython 1.5.2 will run fine on 7.6, both PPC and 68K. But: please try it and let me know. And to answer your other question: 68K is the original CPU used in macintoshes, PPC (or PowerPC) is the new one. MacPython 1.5.2 distributions are in the "old" directory on the MacPython page. Mac's like the Classic, II, Quadra, Centris, Performa and most 3-digit numbers are 68K machines. 4-digit numbers and anything made after about 1996 is PowerPC (iMac, iBook, Cube, G3, G4, Anniversary). There are a very few exceptions (there's a Performa 630 that has a PowerPC, for instance). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From erik@letterror.com Fri Aug 10 08:30:36 2001 From: erik@letterror.com (Erik van Blokland) Date: Fri, 10 Aug 2001 08:30:36 +0100 Subject: [Pythonmac-SIG] Setting paths (or: getting a script to run on startup with the IDE) In-Reply-To: <20010809202302.749CA14B630@oratrix.oratrix.nl> Message-ID: <20010810083112-r01010700-43c8bf33-0910-0108@192.168.128.6> jack@oratrix.nl (Jack Jansen): [8/9/01 at 10:22 PM] > And something even more completely different: about 4 years ago I > asked whether anyone would be willing to change the EditPythonPrefs > UI, which is truly horrible (the first Mac UI I ever created:-). I > even made the split between the UI and the actual prefs handling for > that. The request still stands... Just's special Finderfolder for aliases is pretty nifty - totally integrated in the Finder, drag'n'drop (sleur'n'pleur), view by icon or list etc. :) Erik -- www.letterror.com Type & Typography From Shelley@shells.demon.co.uk Fri Aug 10 12:33:23 2001 From: Shelley@shells.demon.co.uk (Shelley Walsh) Date: Fri, 10 Aug 2001 12:33:23 +0100 Subject: [Pythonmac-SIG] Algebraic symbol manipulation program idea Message-ID: I am a mathematics instructor and lately I have been learning Python partly out of fascination with its potential for helping to explain algebra. Yesterday I downloaded a symbol manipulation program called Pythonica and got to thinking that there ought to be an easier way to make such a program. After giving it some thought I think I may have come up with one, but particularly with being relatively new to Python, it would take me a while to work out the details, and right now I don't have the time. I might eventually get around to it, so writing down a sketch of it in this post is partly simply an excuse to get it down so that I don't forget it, but I would like to find out if it has been done before and if not if those of you who are more experienced with Python think it is feasible. You are also more than welcome to use the idea and develop the thing yourself if you think it is a good one, provided you at the very least give me a discount if you sell it. :-) The idea is to have the computer to algebra a bit more like at least I would like for students to do it, by thinking of x as an unknown number and using simple rules one at a time. No expression ever needs to be dealt with as more than a single operation at once. At the outer most level all algebraic expressions are single operations. For simplicity assume for the time being that we are only dealing with expressions that can be made out of one variable, the real numbers, and the four basic arithmetic operations. (I would probably start by leaving out division, but for the present discussion that doesn't matter.) I have just learned about classes, and about the polymorphic nature of Python, so forgive me if I get carried away with both, but it seems that they can both be put to very good use in this project. We define a class of algebraic expressions, call it expr. Through it we can general any algebraic expression we want essentially by only creating one truly new object, the object that corresponds to the variable, and the user can even call it x if they want, x=expr(). x is the only instance that has no attributes. All other instance will have three attributes, left, right, and op. Left and right are the two operands, and op is the operation. You can get any expression this way, because the operands can themselves be instances of the expressions class. They can be expressions or numbers, and the expressions can themselves either have left and rights or the attributeless x. class expr: pass # for now # Among other things define how to do arithmetic operations. # See * below. # a representation method x=expr() a=expr() a.left=x a.op="plus" a.right=1 a represents x+1 b=expr() b.left=x b.op="plus" b.right=2 b represents x+2 c=expr() c.left=a c.op="times" c.right=b c represents (x+1)(x+2) * On the simplest level this would be the way the way the operations would be defined. a+b would be a new object with (a+b).left=a, (a+b).op="plus", and (a+b).right=b, but there would be also rules for applying the field properties to simplify when doing the operations. The rules would effectively define one operation in terms of another so pass to the definition for that case, possible uses of subclasses for this. At the outside level all expressions are single operations, so this needn't be too complicated. You might, for example have a left distributivity rule saying that when multiplying a*b if a.op="plus" a*b=a.left*b+a.right*b. This would then pass the job down to the addition definition again. The buck keeps getting passed until there is nothing more left to do. When no further properties will help, the unsimplified definitions hold. For example once the addition and multiplication rules were defined the forming of c might go something like this. x=expr() c=(x+1)*(x+2) The built in operation priority would be used here so that c would at the outer be a product of two expression, and each of those expressions would be a sum of two simpler expressions. No parsing of the expression would be necessary, because the built in precedence of operations would take care of it. Python would automatically know that the first thing it needs to do is the addition x+1. An addition rule for adding the attributeless expression to a number would apply so that x+1 would become the instance a with dictionary {left:x, op:"plus", right:1}. Then the same would happen for x+2 giving it a dictionary of {left:x, op:"plus", right:2}. Next would be the task of multiplying these two objects, and for that multiplication the program would detect that the left operand had an op of "plus", so a left distributivity rule would kick in converting the operation to x*(x+2)+1*(x+2). For this again the normal precedence of operations would be used, so no programming would be necessary to see that what needs to be done is first do the multiplications and then do the additions. For each of the multiplications a right distributivity would be applied, so they would be converted to x*x+x*2+1*x+1*2. Then there would be a rule for multiplying x by itself that would turn x*x into an object with dictionary {left:x, op:power:, right:2} (Yes, I lied, I want to use powers, at least natural number powers as well as +,-,*,/) For x*2 there would be a rule for putting it in standard order that would turn it into 2*x and then 2*x would be the object with dictionary {left:2, op:"times", right:x}, and similarly with 1*x. 1*2 would just revert to normal arithmetic, and then we would be looking at the sum of four things. Normal precedence says this goes from left to right, so the first thing that is happening is x^2+2*x. Since no simplification rule applies here, this becomes the expression with dictionary {left:x^2, op:"plus", right: 2*x}, which I will call (x^2+2x), and the next task is to add this to the 1x object (or x object if the identity rule has been used, if the identity rule has been used, it would have to be reversed for the next step) For this we need an associativity rule to convert this to x^2+(2x+1x) (some details of when to use it to be filled in). For 2x+1x a reverse distributivity rule would be used to convert it to (2+1)*x, and then the 2+1 would be done according to number arithmetic and then this would finally become the completed object with dictionary {left:3, op:"times", right:x} which would be added to x^2 to make (x^2+3x), bringing us to the finally operation of (x^2+3x)+2. Here we might try a associative rule and see if it produced a further simplification, and when it didn't either leave it that way or bring it back giving as a final answer either (x^2+5x)+6 (dictionary {left:(x^2+3x), op:"plus"}) or x^2+(3x+2) (dictionary {left:(x^2), op:"plus", right:(3x+2)}). Probably the former would be best, since it reflects left to right order, but it may not matter, because in the representation method there might be some kind of rule for getting rid of unnecessary parentheses. One problem with this thinking is that I am kind of thinking in APL, where you can define a function in terms of itself, when I am thinking about it, and I don't think you can do that in Python. But perhaps there is a way around that. I may also have that problem with my ideas for writing a representation method in very simple way, because they seem to depend on it being able to call itself. One goal I would want for this, besides it working would be for it to be object oriented/modularized in a way that would make the code itself understandable to algebra students with little knowledge of python by doing such things as giving the standard mathematical names to the properties being used in the simplifications, so for example one might define a distributivity function and call it when doing the above conversion a*b=a.left*b+a.right*b. I would also be interesting to make this a project that could be gradually built on, and maybe students could build it themselves in the course of their algebra class as an extra credit project, adding new simplification tricks as they learn them. Thank you for listening. -- Shelley Walsh Shelley@shells.demon.co.uk http://homepage.mac.com/shelleywalsh From altis@semi-retired.com Fri Aug 10 20:18:16 2001 From: altis@semi-retired.com (Kevin Altis) Date: Fri, 10 Aug 2001 12:18:16 -0700 Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac In-Reply-To: <3B729436.605@ics.uci.edu> Message-ID: This message is meant as a motivator to help get other people to help with porting wxPython to the Macintosh. We already have a reasonable number of Mac users on the PythonCard mailing list waiting patiently for the day they can run wxPython on the Mac, and given that the wxWindows port seems fairly far along, I'm hoping that day comes soon. Anyway, if you are able to help with the wxPython port, please contact Robin Dunn directly. Since I'm no longer a Mac developer, there is very little direct coding help I can provide; plus I can only pester Robin myself so much each day ;-) For those of you that also have *nix or Windows systems as well as Macs (or if you just want to check out the screenshots), then keep reading and give the PythonCard prototype a try, join the mailing list, and contribute ideas and criticisms and code (we can always use more developers). ka --- PythonCard is a software construction kit (in the spirit of Apple's HyperCard) written in Python. Prototype release 0.3.1 contains ten sample applications to show off the features of the latest PythonCard prototype. Sample screenshots are at: http://pythoncard.sourceforge.net/samples.html Latest release files: http://sourceforge.net/project/showfiles.php?group_id=19015 PythonCard home page http://pythoncard.sourceforge.net/ SoureForge summary page http://sourceforge.net/projects/pythoncard/ Mailing list http://groups.yahoo.com/group/pythoncard 0.3.1 changelog: Fixed line ending problems with PyCrust files that caused 0.3 release to not work correctly on *nix systems. Also, removed the background.gif file from the proof sample which is not needed. 0.3 changelog: Changes: added changelog.txt and readme.txt files menubar is now optional if a 'menubar' key is not found in a Stack's resource file then a menubar won't be created. log.py documented proof.py updated to work with log.py changes MessageEvent was removed from proof.py since message sending between widgets is currently disabled The working directory is changed to the directory of the main resource file such as minimal.rsrc.py when PythonCard starts up to avoid problems with filenames in the .rsrc.py files and any data files used by the application. Property Editor and Shell windows can be overlapped by the main app window Due to a bug, the Message Watcher must still remain on top added getCurrentBackground to PythonCardApp class PythonCard now includes PyCrust (-s on command-line) interactivePrompt renamed to shell, all references changed PyCrustFrame class moved to debug.py along with test for PyCrust import PyCrust shell is version 0.3 PythonCard turned into PythonCardPrototype package All samples changed to use the new package naming All samples can now be run "standalone" so any _standalone.py files in the samples have been removed. __version__.py contains the current release number New cvs tree on SourceForge, the old proto tree is no longer used PythonCard.py renamed to loader.py and loader.py overhauled added deleteWidget method added find, deprecated findByName added turtle graphics sample added a Property Editor (-p on command-line) due to time constraints, the Property Editor is only a property viewer in this release. You can use the set methods for widgets to change values inside the shell if you need to. added gainFocus and loseFocus messages to all widgets added StaticLine widget ComponentSpec and AttributeSpec classes added to enhance parsing of spec.py ka --- Kevin Altis altis@semi-retired.com From nathan@vividworks.com Fri Aug 10 20:39:06 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Fri, 10 Aug 2001 13:39:06 -0600 (CST) Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac In-Reply-To: Message-ID: Will wxPython for OS X have Aqua stuff? nathan On Fri, 10 Aug 2001, Kevin Altis wrote: > This message is meant as a motivator to help get other people to help with > porting wxPython to the Macintosh. We already have a reasonable number of > Mac users on the PythonCard mailing list waiting patiently for the day they > can run wxPython on the Mac, and given that the wxWindows port seems fairly > far along, I'm hoping that day comes soon. Anyway, if you are able to help > with the wxPython port, please contact Robin Dunn > directly. Since I'm no longer a Mac developer, there is very little direct > coding help I can provide; plus I can only pester Robin myself so much each > day ;-) > > For those of you that also have *nix or Windows systems as well as Macs (or > if you just want to check out the screenshots), then keep reading and give > the PythonCard prototype a try, join the mailing list, and contribute ideas > and criticisms and code (we can always use more developers). > > ka > --- > PythonCard is a software construction kit (in the spirit of Apple's > HyperCard) written in Python. > > Prototype release 0.3.1 contains ten sample applications to show off the > features of the latest PythonCard prototype. Sample screenshots are at: > http://pythoncard.sourceforge.net/samples.html > > Latest release files: > http://sourceforge.net/project/showfiles.php?group_id=19015 > > PythonCard home page > http://pythoncard.sourceforge.net/ > > SoureForge summary page > http://sourceforge.net/projects/pythoncard/ > > Mailing list > http://groups.yahoo.com/group/pythoncard > > > 0.3.1 changelog: > Fixed line ending problems with PyCrust files that caused 0.3 release to not > work correctly on *nix systems. Also, removed the background.gif file from > the proof sample which is not needed. > > 0.3 changelog: > Changes: > added changelog.txt and readme.txt files > menubar is now optional > if a 'menubar' key is not found in a Stack's resource file then a > menubar > won't be created. > log.py documented > proof.py updated to work with log.py changes > MessageEvent was removed from proof.py since message sending > between widgets is currently disabled > The working directory is changed to the directory of the main resource file > such as minimal.rsrc.py when PythonCard starts up to avoid problems > with filenames in the .rsrc.py files and any data files used by the > application. > Property Editor and Shell windows can be overlapped by the main app window > Due to a bug, the Message Watcher must still remain on top > added getCurrentBackground to PythonCardApp class > PythonCard now includes PyCrust (-s on command-line) > interactivePrompt renamed to shell, all references changed > PyCrustFrame class moved to debug.py along with test for PyCrust import > PyCrust shell is version 0.3 > PythonCard turned into PythonCardPrototype package > All samples changed to use the new package naming > All samples can now be run "standalone" so any _standalone.py > files in the samples have been removed. > __version__.py contains the current release number > New cvs tree on SourceForge, the old proto tree is no longer used > PythonCard.py renamed to loader.py and loader.py overhauled > added deleteWidget method > added find, deprecated findByName > added turtle graphics sample > added a Property Editor (-p on command-line) > due to time constraints, the Property Editor is only a property viewer > in this release. You can use the set methods for widgets to change > values inside the shell if you need to. > added gainFocus and loseFocus messages to all widgets > added StaticLine widget > ComponentSpec and AttributeSpec classes added to enhance parsing of spec.py > > ka > --- > Kevin Altis > altis@semi-retired.com > > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From robin@alldunn.com Fri Aug 10 21:23:19 2001 From: robin@alldunn.com (Robin Dunn) Date: Fri, 10 Aug 2001 13:23:19 -0700 Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac References: Message-ID: <052601c121da$4cdd6750$6f5cbed8@Rogue> > Will wxPython for OS X have Aqua stuff? > I don't think so. I believe wxWindows for Mac is based on Carbon and if I understand correctly you need to use Cocoa to do the Aqua stuff, right? -- Robin Dunn Software Craftsman robin@AllDunn.com Java give you jitters? http://wxPython.org Relax with wxPython! From just@letterror.com Fri Aug 10 21:29:30 2001 From: just@letterror.com (Just van Rossum) Date: Fri, 10 Aug 2001 22:29:30 +0200 Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac In-Reply-To: <052601c121da$4cdd6750$6f5cbed8@Rogue> Message-ID: <20010810222959-r01010700-d28c96fc-0910-010c@10.0.0.22> Robin Dunn wrote: > > Will wxPython for OS X have Aqua stuff? > > > > I don't think so. I believe wxWindows for Mac is based on Carbon and if I > understand correctly you need to use Cocoa to do the Aqua stuff, right? No: Carbon apps have Aqua controls under OSX. Just From aiobjects4@yahoo.com Fri Aug 10 21:44:38 2001 From: aiobjects4@yahoo.com (Joe Graham) Date: Fri, 10 Aug 2001 13:44:38 -0700 (PDT) Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac In-Reply-To: <20010810222959-r01010700-d28c96fc-0910-010c@10.0.0.22> Message-ID: <20010810204438.73494.qmail@web14602.mail.yahoo.com> Hello, Let's change gears for a moment shall we? First as per this: > No: Carbon apps have Aqua controls under OSX. Carbonized apps can have the "Aqua" l&f under mac classic. However there is a heavy price to pay for "Carbonized" applications. Not sure about what the next release from hell from apple will do for performance there but it's hideous on OSX. As per wxWindows. I have compiled this API and looked at it on Linux, Mac Classic and Win32. It is really sweet to compile and quite fast. However in the spirit of changing gears, has anyone looked at the latest Qt Mac beta from trolltech? (www.trolltech.com) Trolltech is a fantastic API and even though it's C++, there are already Qt bindings for Python and Ruby. Additionall the Kompany (www.thekompany.com) released Black Adder which is a passable IDE for Python, Ruby and Qt. Qt also has a highly polished GUI designer where the wxWindows GUI designer could use some help. On a final note, is everyone using Metroworks to compile Python on the Mac? Does anyone have any issues with grokking some bindings into Metrowork's Power Plant framework? (Hey, it comes with the IDE for free) And the learning code warrior edition is only $50 which also comes with power plant. Hey my cheesy video card costs more than that. :D Sorry if this post is a little off topic but I wanted to throw out some other things I was thinking about along these lines. Any takers? joe graham aiobjects4@yahoo.com --- Just van Rossum wrote: > Robin Dunn wrote: > > > > Will wxPython for OS X have Aqua stuff? > > > > > > > I don't think so. I believe wxWindows for Mac is > based on Carbon and if I > > understand correctly you need to use Cocoa to do > the Aqua stuff, right? > > No: Carbon apps have Aqua controls under OSX. > > Just > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ From dpreston@intersight.com Fri Aug 10 21:47:37 2001 From: dpreston@intersight.com (Donovan Preston) Date: Fri, 10 Aug 2001 13:47:37 -0700 Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac In-Reply-To: <052601c121da$4cdd6750$6f5cbed8@Rogue> Message-ID: <200108102046.QAA12901@lysimachus.hosting.pacbell.net> On Friday, August 10, 2001, at 01:23 PM, Robin Dunn wrote: >> Will wxPython for OS X have Aqua stuff? >> > > I don't think so. I believe wxWindows for Mac is based on Carbon and > if I > understand correctly you need to use Cocoa to do the Aqua stuff, right? No, that's incorrect. Carbon applications aquire the Aqua look automatically. However, there is often the need to resize and move around widgets as Aqua uses different sizing guidelines than most operating systems (widgets are bigger). Donovan From dpreston@intersight.com Fri Aug 10 22:16:18 2001 From: dpreston@intersight.com (Donovan Preston) Date: Fri, 10 Aug 2001 14:16:18 -0700 Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac In-Reply-To: <20010810204438.73494.qmail@web14602.mail.yahoo.com> Message-ID: <200108102115.RAA19458@lysimachus.hosting.pacbell.net> On Friday, August 10, 2001, at 01:44 PM, Joe Graham wrote: > Hello, > Let's change gears for a moment shall we? > First as per this: >> No: Carbon apps have Aqua controls under OSX. > Carbonized apps can have the "Aqua" l&f under mac > classic. However there is a heavy price to pay for > "Carbonized" applications. Not sure about what the > next release from hell from apple will do for > performance there but it's hideous on OSX. While this is true for most Carbon apps, the performance problems are really the fault of old style loop & poll programming in which most Mac apps have been written since 1984. Since pre-Mac OS X was not preemptively multitasking, it made sense for traditional apps to be programmed in this style, since they would only get the processor when they were in the foreground or if they really needed it in the background. However, under a preemptively multitasking OS like X, this breaks down horribly, because all of those carbon apps look like they are doing a ton of work when in reality they are just burning cycles looking for events to process. Since Mac OS X has to decide which application gets the processor by gauging each processes' processor use, if carbon apps were allowed to run amuk, they would burn all the processor time basically doing nothing. To remedy this and make OS X even usable, Apple had to do something. This is *entirely speculation* given my experience with current carbon apps and some process monitoring tools, but it appears that apple basically limited carbon applications to 50% of the processor. This would go a long way towards explaining carbon's current poor performance, as well as X's ability to run background tasks at close to full speed while another process is executing. HOWEVER, there is another solution, which I suspect most Carbon application developers have not pursued yet because it involves a significant amount of rewriting on their part. This solution is the Carbon Event Manager. It is basically an event callback based system, in which your application's main thread of execution is sleeping somewhere deep in the bowels of the system while your application is idling, and then as soon as an event that affects your application occurs, your application receives a callback, gets a chance to process the event, and then goes back to sleep. Once more carbon developers start getting off their lazy butts and rewrite their application's main event loops to behave better in a modern operating environment things will get a lot better. Remember, Apple delayed the release of Rhapsody by quite a few years just to satisfy it's developers and port the Mac OS toolbox to Mac OS X. Microsoft had most of the 1990's and three major releases to port it's win32 api to NT, and while things are better with 2000, there are still a lot of applications that don't run (mostly games and audio software) on Microsoft's "New Technology" OS. Donovan From csmith@blakeschool.org Sat Aug 11 17:41:44 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Sat, 11 Aug 2001 11:41:44 -0500 Subject: [Pythonmac-SIG] Re: Algebraic symbol manipulation program idea Message-ID: Shelley Walsh wrote: | I am a mathematics instructor and lately I have been learning Python | partly out of fascination with its potential for helping to explain | algebra. Yesterday I downloaded a symbol manipulation program called | Pythonica and got to thinking that there ought to be an easier way to I read the whole post and am interested in this sort of thing as well but don't have time to respond much now. Just wanted to note that I, too, just found Pythonica in my search for a symbolic manipulation program and found a bit of a parsing bug. When given 2*3+2^2/3 Pythonica returns: in FullForm: Divide[Plus[Times[2,3],Power[2,2]],3] evaluates to: 3.33333333333 but it should probably be something like: Plus[Times[2,3],Divide[Power[2,2],3]] and evaluate to 7.33333333333 /c From jack@oratrix.nl Sat Aug 11 21:27:03 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sat, 11 Aug 2001 22:27:03 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: Message by Donovan Preston , Fri, 10 Aug 2001 14:16:18 -0700 , <200108102115.RAA19458@lysimachus.hosting.pacbell.net> Message-ID: <20010811202708.8031914B630@oratrix.oratrix.nl> I've changed the subject here, since this has gone off on a tangent. Recently, Donovan Preston said: > HOWEVER, there is another solution, which I suspect most Carbon > application developers have not pursued yet because it involves a > significant amount of rewriting on their part. This solution is the > Carbon Event Manager. It is basically an event callback based system, in > which your application's main thread of execution is sleeping somewhere > deep in the bowels of the system while your application is idling, and > then as soon as an event that affects your application occurs, your > application receives a callback, gets a chance to process the event, and > then goes back to sleep. I would love to use the Carbon Event Manager in MacPython, but I can't work out how to do it. I'd be delighted if we could have a bit of a brainstorm session here. The Python mainloop, i.e. the low-level engine that executes Python bytecodes and thereby lets your Python script run, currently calls out to WaitNextEvent() once in a while, to allow background processes to run, and to allow the user to switch to other programs. This bit could probably be switched to Carbon Events relatively easy. The difficult bit is when Python really blocks, for instance for I/O. This is handled by the GUSI I/O library, which uses asynchronous I/O and lots of nifty tricks, but in the end at the very lowest level it will call the same WaitNextEvent() code mentioned above, with a very small timeout, while it waits for one of the asynchronous I/O completion routines to have been called and set a flag that I/O is done. All this would have to be sort of reverse. Currently Python is in control and occasionally, when it feels like, calls WNE because it has nothgin better to do. In a Carbon Events based program the mainloop would be handled by thesystem (by Carbon Events, to be precise), and it would give MacPython a callback when something interesting has happened. However, the things that Python deems interesting are not only UI events, but also I/O completion. And almost all callbacks will want to fire up the interpreter mainloop again for a while (until it blocks again on I/O). Converting the interpreter mainloop into some sort of a coroutine scheme is going to be far too much work. The alternative that I can think of, having the event loop run in a separate thread, and have the main thread blocked on a semaphore while waiting for I/O, also seems riddled with problems (like that events come in at the event loop thread but will have to be handled by the main thread). Or does the Carbon Event Manager have some magic for this? I would think that MacPython is not unique in having this problem, any program that is not primarily UI-driven will have it. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From Shelley@shells.demon.co.uk Sat Aug 11 23:24:30 2001 From: Shelley@shells.demon.co.uk (Shelley Walsh) Date: Sat, 11 Aug 2001 23:24:30 +0100 Subject: [Pythonmac-SIG] Re: Algebraic symbol manipulation program idea In-Reply-To: Message-ID: on 11/8/01 5:41 pm, Christopher Smith at csmith@blakeschool.org wrote: > Shelley Walsh wrote: > | I am a mathematics instructor and lately I have been learning Python > | partly out of fascination with its potential for helping to explain > | algebra. Yesterday I downloaded a symbol manipulation program called > | Pythonica and got to thinking that there ought to be an easier way to > > > I read the whole post and am interested in this sort of thing as > well but don't have time to respond much now. I'm looking forward to it. For what it's worth, I'm more convinced that I previously was that the basic idea will work, because I just realized that you really can define functions in terms of themselves, which my idea would heavily rely on. For example this way of defining factorial really will work in Python. def f(n): if n==0: return 1 else: return n*f(n-1) >Just wanted to note > that I, too, just found Pythonica in my search for a symbolic > manipulation program and found a bit of a parsing bug. > > When given 2*3+2^2/3 Pythonica returns: > > in FullForm: Divide[Plus[Times[2,3],Power[2,2]],3] > evaluates to: 3.33333333333 > > but it should probably be something like: > > Plus[Times[2,3],Divide[Power[2,2],3]] > > and evaluate to 7.33333333333 It didn't notice that one, but I did notice another, which is that when combining like terms it won't add numbers. Eg. x+1+x+2=2x+1+2 -- Shelley Walsh Shelley@shells.demon.co.uk http://homepage.mac.com/shelleywalsh From mis@creazone.com Sun Aug 12 02:53:32 2001 From: mis@creazone.com (Michal Seta) Date: Sat, 11 Aug 2001 21:53:32 -0400 Subject: [Pythonmac-SIG] FW: screensaver In-Reply-To: Message-ID: Sorry Jack, I just hit a reply on one of the pythonmac-sig messages without looking where it was gonna go... here's the same thing for everyone on the list: Hello, First of all I'm no programming guru... And I used python mostly on Linux... I would like to play with an idea of making a screensaver like app. I've found a way of writing crap to the screen an drawing lines and dots and stuff. However, when I do my little tests in the interpreter all the graphics happen within the interpreter window. How can I get hold of the entire screen? Has anyone done this kind of code. I'd be happy to hack. Thanks. ./MiS ============================ "To be is to do" - Socrates "To do is to be" - Sartre "Do be do be do" - Sinatra "Just do it!" - NIKE "It" - Stephen King From dave@diddlysquat.f2s.com Sun Aug 12 04:47:19 2001 From: dave@diddlysquat.f2s.com (dave@diddlysquat.f2s.com) Date: Sun, 12 Aug 2001 03:47:19 +0000 (GMT) Subject: [Pythonmac-SIG] A problem involving handles Message-ID: <997588039.3b75fc47cfda4@www.freedom2surf.net> Hey all, Well I've been having a _lot_ of problems with this app I'm making. It's = an=20 excuse for me to learn relatively in-depth python programming on the mac=97= though=20 I'm finding Python is not the right choice for this :(. Anyway, I've been= having=20 a problem with the code that I thought people might be able to help with.= For=20 some reason, whenever I click on the text field or the OK button, it call= s the=20 handle. I've included a copy of the short source file (under 100 lines) s= o that I=20 could get some help stopping it from calling the handle. Thanks.=20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D #Year Editor 0.712, last updated 8/11/01 by David Burgis import FrameWork import EasyDialogs import Res import Dlg import sys import socket import string # # Definitions for our resources ID_MAIN=3D128 ID_ABOUT=3D129 ITEM_CURYEAR=3D2 ITEM_OK_BUTTON=3D4 print "Loading... " def main(): try: Res.FSpOpenResFile("yeareditor.rsrc", 1) except Res.Error: EasyDialogs.Message("Cannot open yeareditor.rsrc")=20 Year() class Year(FrameWork.Application): #Application class for Year def __init__(self): # The menu's FrameWork.Application.__init__(self) # The dialog self.main_dialog =3D MyDialog(self) # Open the dialog self.main_dialog.open(ID_MAIN) # The event loop self.mainloop() def makeusermenus(self): self.filemenu =3D m =3D FrameWork.Menu(self.menubar, "File") self.quititem =3D FrameWork.MenuItem(m, "Quit", "Q", self.quit) def quit(self, *args): self._quit() def do_about(self, *args): f =3D Dlg.GetNewDialog(ID_ABOUT, -1) while 1: n =3D Dlg.ModalDialog(None) if n =3D=3D 1: return class MyDialog(FrameWork.DialogWindow): #Main dialog def __init__(self, parent): FrameWork.DialogWindow.__init__(self, parent) self.parent =3D parent def read(self): #Text is entered tp, h, rect =3D self.dlg.GetDialogItem(ITEM_OK_BUTTON) txt =3D Dlg.GetDialogItemText(h, hYear.data) tp, h, rect =3D self.dlg.GetDialogItem(ITEM_CURYEAR) Dlg.SetDialogItemText(h, self.year(txt)) def do_dialog(): #User services until quitting hYear =3D Res.Get1Resource( 'STR ', 128 ) #( 'y=EB=E4=AE', 128 ) print hYear.data =09 my_dlg =3D Dlg.GetNewDialog(ID_MAIN, -1) =09 tp, h, rect =3D my_dlg.GetDialogItem( ITEM_OK_BUTTON ) Dlg.SetDialogItemText(h, hYear.data ) =09 while 1: n =3D Dlg.ModalDialog(None) if n =3D=3D ITEM_OK_BUTTON: tp, h, rect =3D my_dlg.GetDialogItem(ITEM_CURYEAR) txt =3D Dlg.GetDialogItemText(hYear.data) Dlg.SetDialogItemText(hYear.data) =09 main() =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Thanks again. Once somebody points out the boneheaded mistake that I made= , I'm=20 going to have to ask a few questions on dealing with resources. Until the= n... Dave ------------------------------------------------- Everyone should have http://www.freedom2surf.net/ From no137b@hotmail.com Mon Aug 13 02:10:02 2001 From: no137b@hotmail.com (no137) Date: Sun, 12 Aug 2001 19:10:02 -0600 Subject: [Pythonmac-SIG] viewing contents of a font suitecase Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0007_01C12362.638C22A0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable How can you view, change and/or delete the contents of a font suitecase = using MacPython? Mr. ------=_NextPart_000_0007_01C12362.638C22A0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
How can you view, change and/or delete = the contents=20 of a font suitecase using MacPython?
Mr.
------=_NextPart_000_0007_01C12362.638C22A0-- From just@letterror.com Mon Aug 13 07:34:42 2001 From: just@letterror.com (Just van Rossum) Date: Mon, 13 Aug 2001 08:34:42 +0200 Subject: [Pythonmac-SIG] viewing contents of a font suitecase In-Reply-To: Message-ID: <20010813083502-r01010700-49d7f877-0910-010c@10.0.0.23> no137 wrote: > How can you view, change and/or delete the contents of a font suitecase using > MacPython? Using the resource manager, as in the Res module in MacPython. If you'd need to access the actual font data in the suitcase, my FontTools come in handy: http://fonttools.sourceforge.net/ Just From hummelsean@mac.com Mon Aug 13 09:51:03 2001 From: hummelsean@mac.com (Sean Hummel) Date: Mon, 13 Aug 2001 01:51:03 -0700 Subject: [Pythonmac-SIG] mmap module In-Reply-To: <3B707659.3C371B26@home.net> Message-ID: Okay so now it appears that I need this module too, so I am going to write it. However there is an interesting case, for which, I don't know what the reasonable solution is. In particular, FileMapping is only supported on MacOS 9.1 or greater, which means when the module is used on a lesser version of the operating system, it should: 1. be hard linked against the appropriate system libraries, and as a result not load when particular functions are not available. 2. be weak linked, and not initialize the module. 3. be weak linked, initialize the module, but don't give the module any methods. 4. be weak linked, not initialize the module, and raise an error. (Thus importing it would raise an error on non-supported systems.) These are the solutions I can see with this problem, but I wasn't sure which one (if any of these,) is commonly used in such a case. > From: Chris Barker > Date: Tue, 07 Aug 2001 16:14:33 -0700 > Cc: pythonmac-sig@python.org > Subject: Re: [Pythonmac-SIG] mmap module > > Jack Jansen wrote: >> Recently, Chris Barker said: >>> I just discovered the mmap module (I think it's been in the standard >>> library since 2.0). It does not seem to exist in MacPython. Judging by >>> the facat that the Windows and Unix constructors are different, I >>> imagine a port to the Mac would take some work. I do have a use for it, >>> is there any chance there will be a Mac version some day? >> >> It would be nice, but don't count on me doing it. There's a mapped >> memory API in at least OS9, maybe earlier, that has all the niceties >> you need like an interface to file refnos and such. > > Fair enough. If I find I really need it, maybe I'll look into getting it > to work, but I'll probably just find a way around it. > > -Chris > > > > -- > Christopher Barker, > Ph.D. > ChrisHBarker@home.net --- --- --- > http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ > ------@@@ ------@@@ ------@@@ > Oil Spill Modeling ------ @ ------ @ ------ @ > Water Resources Engineering ------- --------- -------- > Coastal and Fluvial Hydrodynamics -------------------------------------- > ------------------------------------------------------------------------ > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig From jack@oratrix.nl Mon Aug 13 10:13:26 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 13 Aug 2001 11:13:26 +0200 Subject: [Pythonmac-SIG] mmap module In-Reply-To: Message by Sean Hummel , Mon, 13 Aug 2001 01:51:03 -0700 , Message-ID: <20010813091326.A5B61303181@snelboot.oratrix.nl> > In particular, FileMapping is only supported on MacOS 9.1 or greater, which > means when the module is used on a lesser version of the operating system, > it should: > > 1. be hard linked against the appropriate system libraries, and as a result > not load when particular functions are not available. > > 2. be weak linked, and not initialize the module. > > 3. be weak linked, initialize the module, but don't give the module any > methods. > > 4. be weak linked, not initialize the module, and raise an error. (Thus > importing it would raise an error on non-supported systems.) I think all 4 of these methods are used in one place or another:-) In this case, if you have really no useful functionality, I would pick method 1 if the resulting error message to the Python user is an ImportError with an understandable message. If the message isn't too clear I would use method 4 and fail with an error like "mmap is only supported from MacOS 9.1 onward". -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From doug@sonosphere.com Tue Aug 14 06:22:30 2001 From: doug@sonosphere.com (Doug Wyatt) Date: Mon, 13 Aug 2001 22:22:30 -0700 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010811202708.8031914B630@oratrix.oratrix.nl> Message-ID: <5B859784-9074-11D5-8CF3-00039301A6E6@> Is MacPython multi-threaded? Is part of the idea here to make it multithreaded? Or just to make it more efficient without completely ripping it apart? Exactly what kinds of events can and should be processed while blocked on an async I/O request, without causing nasty re-entrancy problems? I'm not deeply intimate with Carbon events, or any Python GUIs, but I have done a fair amount of multi-threaded programming on OSX and tons of traditional (pre-Carbon) MacOS programming. I may have some ideas based on answers to the above questions. I do see Matthias N. on campus every so often; maybe he'd have an idea :-) Doug -- Doug Wyatt work: dwyatt@apple.com (CoreAudio) personal: doug@sonosphere.com http://www.sonosphere.com "Premature optimization is the root of all evil." -- Knuth From jack@oratrix.nl Tue Aug 14 12:10:02 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 14 Aug 2001 13:10:02 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: Message by Doug Wyatt , Mon, 13 Aug 2001 22:22:30 -0700 , <5B859784-9074-11D5-8CF3-00039301A6E6@> Message-ID: <20010814111002.877A6303181@snelboot.oratrix.nl> > Is MacPython multi-threaded? Is part of the idea here to make it > multithreaded? Or just to make it more efficient without completely > ripping it apart? The latter. Currently MacPython is a cpu-hog on OSX, and I'd like to make this a bit better. But going the whole way of making it multithreaded is probably too much work (esp since I want to start moving towards unix-Python on OSX). > Exactly what kinds of events can and should be processed while blocked > on an async I/O request, without causing nasty re-entrancy problems? Hmm, interesting. Most of the ones I would need (like clicking to another app) are of course already handled. That would leave only console window redraws, I guess. [thinking out loud] So the reason MacPython uses so many cycles on OSX is probably because the lowlevel I/O wait is a tight loop that calls WNE with a small timeout and then checks a flag to see whether an async I/O completion routine was called while in WNE. So the real problem is that we use small timeouts to WNE, if we could use large timeouts there and have the I/O completion routine somehow wake up WNE that would help a lot.... Any ideas in this area? Can I wake up WNE from an interrupt routine? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From just@letterror.com Tue Aug 14 12:16:56 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 14 Aug 2001 13:16:56 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814111002.877A6303181@snelboot.oratrix.nl> Message-ID: <20010814131659-r01010700-e03f37c1-0910-010c@10.0.0.23> Jack Jansen wrote: > [thinking out loud] So the reason MacPython uses so many cycles on OSX is > probably because the lowlevel I/O wait is a tight loop that calls WNE with a > small timeout and then checks a flag to see whether an async I/O completion > routine was called while in WNE. So the real problem is that we use small > timeouts to WNE, if we could use large timeouts there and have the I/O > completion routine somehow wake up WNE that would help a lot.... [Btw. is this about the interpreter, the IDE, or both?] Just From Benjamin.Schollnick@usa.xerox.com Tue Aug 14 12:43:56 2001 From: Benjamin.Schollnick@usa.xerox.com (Schollnick, Benjamin) Date: Tue, 14 Aug 2001 07:43:56 -0400 Subject: [Pythonmac-SIG] Carbon events Message-ID: Jack, I'm not saying your incorrect, but.... What proof do you have that the Low Level IO/WNE routines are the culprit? May I make a slightly different suggestion? Instead of assuming (but probably a correct assumption), how about "we" generate a profile of MacPython? Take the top 5 CPU cycle wasting routines, and optimize them. See what affect that has, and then take the next 5, etc. I'm just concerned that there maybe hidden areas in MacPython that have just as large impact, that we maybe missing... Certainly in the Low Level IO/WNE routines are easy to optimize, let's do it... But.... And here's a potential KLUDGE.... Check to see if it's the classic environment, or Mac OS X... Assign a value depending on OS to a IO_WAIT_VARIABLE... And then time.sleep (IO_WAIT_VARIABLE).... Thus you can easily have a larger sleep period under Mac OS X... Now please keep in mind, this is *NOT* a fix for the actual problem, but a *cheap* *INEXPENSIVE*, and *KLUDGY* work around... Now the debate is what is a middle ground Mac OS X time for sleeping during the IO wait cycles? - Benjamin -----Original Message----- From: Jack Jansen [mailto:jack@oratrix.nl] Sent: Tuesday, August 14, 2001 7:10 AM To: Doug Wyatt Cc: Pythonmac-SIG@python.org Subject: Re: [Pythonmac-SIG] Carbon events > Is MacPython multi-threaded? Is part of the idea here to make it > multithreaded? Or just to make it more efficient without completely > ripping it apart? The latter. Currently MacPython is a cpu-hog on OSX, and I'd like to make this a bit better. But going the whole way of making it multithreaded is probably too much work (esp since I want to start moving towards unix-Python on OSX). > Exactly what kinds of events can and should be processed while blocked > on an async I/O request, without causing nasty re-entrancy problems? Hmm, interesting. Most of the ones I would need (like clicking to another app) are of course already handled. That would leave only console window redraws, I guess. [thinking out loud] So the reason MacPython uses so many cycles on OSX is probably because the lowlevel I/O wait is a tight loop that calls WNE with a small timeout and then checks a flag to see whether an async I/O completion routine was called while in WNE. So the real problem is that we use small timeouts to WNE, if we could use large timeouts there and have the I/O completion routine somehow wake up WNE that would help a lot.... Any ideas in this area? Can I wake up WNE from an interrupt routine? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig From jack@oratrix.nl Tue Aug 14 13:52:48 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 14 Aug 2001 14:52:48 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: Message by Just van Rossum , Tue, 14 Aug 2001 13:16:56 +0200 , <20010814131659-r01010700-e03f37c1-0910-010c@10.0.0.23> Message-ID: <20010814125256.347DC303181@snelboot.oratrix.nl> > Jack Jansen wrote: > > > [thinking out loud] So the reason MacPython uses so many cycles on OSX is > > probably because the lowlevel I/O wait is a tight loop that calls WNE with a > > small timeout and then checks a flag to see whether an async I/O completion > > routine was called while in WNE. So the real problem is that we use small > > timeouts to WNE, if we could use large timeouts there and have the I/O > > completion routine somehow wake up WNE that would help a lot.... > > [Btw. is this about the interpreter, the IDE, or both?] The interpreter, the IDE is a lot better, because when idling waiting for the user to do something it isn't sitting the the lowlevel I/O wait loop. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Tue Aug 14 13:58:38 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 14 Aug 2001 14:58:38 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: Message by "Schollnick, Benjamin" , Tue, 14 Aug 2001 07:43:56 -0400 , Message-ID: <20010814125838.66DCC303181@snelboot.oratrix.nl> > Jack, > > I'm not saying your incorrect, but.... > > What proof do you have that the Low Level IO/WNE routines are the > culprit? Pure guesswork:-) But: educated guesswork, see my reply to Just's post just now. > May I make a slightly different suggestion? > > Instead of assuming (but probably a correct assumption), how about > "we" generate a profile of MacPython? Take the top 5 CPU cycle > wasting > routines, and optimize them. See what affect that has, and then > take the next 5, etc. I've done this at some point in the past, and if anyone wants to try it again it's real easy: just enable to "profile" option in CodeWarrior and add the profiler libraries to PythonCore. The source has the right calls already, nicely ifdeffed on __profiler or whatever. The bad news is that profiler results are inconclusive in the light of WNE calls. MetroWerks themselves couldn't tell me whether the times returned were "process times" (i.e. time spent in WNE isn't counted) or realtime (time spent in WNE is counted). It may be that WNE time is counted unless you switch out to some other process:-( I haven't tried all this on OSX, but I'm not even sure the MW profiler will work on OSX. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From ryanwilcox@mac.com Tue Aug 14 15:16:10 2001 From: ryanwilcox@mac.com (Ryan Wilcox) Date: Tue, 14 Aug 2001 10:16:10 -0400 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814125838.66DCC303181@snelboot.oratrix.nl> Message-ID: <20010814101612-r01010700-7c7382f3-0910-010c@192.168.42.191> On Tuesday, August 14, 2001, at 2:58 PM, jack@oratrix.nl (Jack Jansen) wrote: > >I haven't tried all this on OSX, but I'm not even sure the MW profiler will >work on OSX. I think some of the X specific developer tools (Sampler) would be a good 'substitute' for the MW Profiler here. I've never played around with Sampler, so I don't know what it can and can't do -r (*r.out*) From just@letterror.com Tue Aug 14 15:23:44 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 14 Aug 2001 16:23:44 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814125256.347DC303181@snelboot.oratrix.nl> Message-ID: <20010814162346-r01010700-ef986995-0910-010c@10.0.0.23> Jack Jansen wrote: > The interpreter, the IDE is a lot better, because when idling waiting for the > user to do something it isn't sitting the the lowlevel I/O wait loop. Ok. What would happen if you don't poll for events while blocked at all? Since OSX has real scheduling, I would guess there's nothing left for the system to do than to put the process asleep. (But I'm way out of my legue here, so please ignore me if this makes no sense ;-) Another idea, if GUSI is indeed the big issue here: couldn't we create some sort of stub thingy which causes MacPython to use GUSI when under OS9, and BSD I/O when under OSX? Or is that so hard it makes more sense to spend that time on UnixPython under OSX? Just From doug@sonosphere.com Tue Aug 14 15:24:50 2001 From: doug@sonosphere.com (Doug Wyatt) Date: Tue, 14 Aug 2001 07:24:50 -0700 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814111002.877A6303181@snelboot.oratrix.nl> Message-ID: <1ED3AB42-90C0-11D5-8CF3-00039301A6E6@> On Tuesday, August 14, 2001, at 04:10 , Jack Jansen wrote: >> Is MacPython multi-threaded? Is part of the idea here to make it >> multithreaded? Or just to make it more efficient without completely >> ripping it apart? > > The latter. Currently MacPython is a cpu-hog on OSX, and I'd like to > make this > a bit better. But going the whole way of making it multithreaded is > probably > too much work (esp since I want to start moving towards unix-Python on > OSX). OK, thanks for catching me up ... :-) >> Exactly what kinds of events can and should be processed while blocked >> on an async I/O request, without causing nasty re-entrancy problems? > > Hmm, interesting. Most of the ones I would need (like clicking to > another app) > are of course already handled. That would leave only console window > redraws, I > guess. > [thinking out loud] So the reason MacPython uses so many cycles on OSX > is > probably because the lowlevel I/O wait is a tight loop that calls WNE > with a > small timeout and then checks a flag to see whether an async I/O > completion > routine was called while in WNE. So the real problem is that we use > small > timeouts to WNE, if we could use large timeouts there and have the I/O > completion routine somehow wake up WNE that would help a lot.... > > Any ideas in this area? Can I wake up WNE from an interrupt routine? What if we send ourselves a user-defined Carbon event from the async completion routine, and hang waiting for it using ReceiveNextEvent, which allows us to specify the exact set of event types we're willing to be woken up for? (repeating disclaimer about having very minimal experience with Carbon events, just knowing where the header files are :-) Doug -- Doug Wyatt work: dwyatt@apple.com (CoreAudio) personal: doug@sonosphere.com http://www.sonosphere.com "The most beautiful thing we can experience is the mysterious. It is the source of all true art and all science. He to whom this emotion is a stranger, who can no longer pause to wonder and stand rapt in awe, is as good as dead: his eyes are closed." --- Albert Einstein From just@letterror.com Tue Aug 14 15:53:01 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 14 Aug 2001 16:53:01 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <1ED3AB42-90C0-11D5-8CF3-00039301A6E6@> Message-ID: <20010814165302-r01010700-54f232ed-0910-010c@10.0.0.23> Doug Wyatt wrote: > [ ... ReceiveNextEvent, ... ] > [ ... ] (repeating disclaimer about having very minimal > experience with Carbon events, just knowing where the header files > are :-) So, where is the header that defines ReceiveNextEvent? I just had BBEdit grind through my entire CW6 folder, and it yielded nothing... Just From dwyatt@apple.com Tue Aug 14 16:42:16 2001 From: dwyatt@apple.com (Doug Wyatt) Date: Tue, 14 Aug 2001 08:42:16 -0700 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814165302-r01010700-54f232ed-0910-010c@10.0.0.23> Message-ID: On Tuesday, August 14, 2001, at 07:53 , Just van Rossum wrote: > So, where is the header that defines ReceiveNextEvent? I just had > BBEdit grind > through my entire CW6 folder, and it yielded nothing... /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox. framework/Versions/A/Headers/CarbonEvents.h but you'd just #include Doug -- Doug Wyatt work: dwyatt@apple.com (CoreAudio) personal: doug@sonosphere.com http://www.sonosphere.com "Music happens when you disrupt space in a secure and confident manner." -- One of the members of the Art Ensemble of Chicago From mday@mac.com Tue Aug 14 16:51:00 2001 From: mday@mac.com (Mark Day) Date: Tue, 14 Aug 2001 08:51:00 -0700 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814111002.877A6303181@snelboot.oratrix.nl> Message-ID: <28A3F4AC-90CC-11D5-8E41-00039303AF92@apple.com> On Tuesday, August 14, 2001, at 04:10 AM, Jack Jansen wrote: > [thinking out loud] So the reason MacPython uses so many cycles on OSX > is > probably because the lowlevel I/O wait is a tight loop that calls WNE > with a > small timeout and then checks a flag to see whether an async I/O > completion > routine was called while in WNE. So the real problem is that we use > small > timeouts to WNE, if we could use large timeouts there and have the I/O > completion routine somehow wake up WNE that would help a lot.... According to Tech Note 1104: Interrupt-Safe Routines, you can call WakeUpProcess from an interrupt. And according to the Carbon documentation, it is supported in Carbon. WakeUpProcess should cause your WaitNextEvent to finish early with a null event. -Mark From just@letterror.com Tue Aug 14 17:01:25 2001 From: just@letterror.com (Just van Rossum) Date: Tue, 14 Aug 2001 18:01:25 +0200 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: Message-ID: <20010814180132-r01010700-cc2d603c-0910-010c@10.0.0.23> Doug Wyatt wrote: > /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox. > framework/Versions/A/Headers/CarbonEvents.h > > but you'd just #include Is it not available under OS9? (I do have a machine running OSX, I'm just wondering.) Just From paulm@avacadcam.com Tue Aug 14 17:26:18 2001 From: paulm@avacadcam.com (Paul Miller) Date: Tue, 14 Aug 2001 17:26:18 +0100 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814180132-r01010700-cc2d603c-0910-010c@10.0.0.23> Message-ID: >> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox. >> framework/Versions/A/Headers/CarbonEvents.h >> >> but you'd just #include > > Is it not available under OS9? (I do have a machine running OSX, I'm just > wondering.) > Yes it is (from Carbon 1.2.5 onwards) - but you'll need to update to a later version of Universal Headers than the ones in CW Pro 6. Use the ones in the latest Carbon SDK. Paul Miller. From dwyatt@apple.com Tue Aug 14 17:33:39 2001 From: dwyatt@apple.com (Doug Wyatt) Date: Tue, 14 Aug 2001 09:33:39 -0700 Subject: [Pythonmac-SIG] Carbon events In-Reply-To: <20010814180132-r01010700-cc2d603c-0910-010c@10.0.0.23> Message-ID: <1DFF4898-90D2-11D5-8CF3-00039301A6E6@> On Tuesday, August 14, 2001, at 09:01 , Just van Rossum wrote: > Doug Wyatt wrote: > >> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox. >> framework/Versions/A/Headers/CarbonEvents.h >> >> but you'd just #include > > Is it not available under OS9? (I do have a machine running OSX, I'm > just > wondering.) Hmm, the afore-mentioned header says the functions are available under 9 with CarbonLib. Perhaps you need to have a separately downloaded Carbon SDK installed? Please forgive my ignorance, I haven't done any development on 9 or with CoreWarrior in about 18 months now. I thought of another possible approach, which would be to run a separate cooperative (not preemptive) thread to do window refreshes and whatever other limited set of tasks can be safely serviced while blocked on I/O (watching for cancellation clicks/keys?), and then just use synchronous I/O in the main thread. Doug -- Doug Wyatt work: dwyatt@apple.com (CoreAudio) personal: doug@sonosphere.com http://www.sonosphere.com "Changing OS's is the corporate equivalent of molting -- you're very vulnerable after you've done it but you have to do it to survive". -- Ray Spears From jjb5@cornell.edu Tue Aug 14 20:12:11 2001 From: jjb5@cornell.edu (Joel Bender) Date: Tue, 14 Aug 2001 15:12:11 -0400 Subject: [Pythonmac-SIG] Announce: PythonCard 0.3.1 - need wxPython on the Mac Message-ID: Joe Graham wrote: >However in the spirit of changing gears, has anyone >looked at the latest Qt Mac beta from trolltech? Is there a way to purchase an developers copy from them for the purpose of developing PythonCard? $2925 is too rich for me (assuming that a dual platform price will be the same for Qt/Unix and Qt/Mac). There are GUI projects that are built on OpenGL, perhaps PythonCard can follow this direction? Can anyone with OpenGL experience on the Mac speak to how easy it is/could be to keep an OpenGL engine cross platform? Joel -- From jack@oratrix.nl Thu Aug 16 13:44:14 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 14:44:14 +0200 Subject: [Pythonmac-SIG] Really final 2.1.1 installer available Message-ID: <20010816124419.63EF614B630@oratrix.oratrix.nl> Folks, the really really really final 2.1.1 installer is available through http://www.cwi.nl/~jack/macpython.html . Actually, it has been available since over a week, but I was too busy to announce it. The only change since the final installer is the addition of the missing Idle config file. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From jack@oratrix.nl Thu Aug 16 13:50:10 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 14:50:10 +0200 Subject: [Pythonmac-SIG] MacOSX Python - framework support working Message-ID: <20010816125015.71D1F14B630@oratrix.oratrix.nl> People using commandline Python on OSX and interested in the ObjC stuff or whatever should check out the latest CVS changs form the repository: Python can now be built as a framework. The configure option to use is "--enable-framework". After the make do a "make frameworkinstall" and a complete Python framework will end up in /Library/Frameworks. There's no build instructions for a ".app" Python package yet, but that's next on the wishlist. setup.py also contains build instructions for most (originally MacPython) toolbox modules, but they're commented out except for a few: there are still issues with sys.path, with resource files and a few other things. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From jack@oratrix.nl Thu Aug 16 14:36:01 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 15:36:01 +0200 Subject: [Pythonmac-SIG] MacOSX Python - framework support working In-Reply-To: Message by Jack Jansen , Thu, 16 Aug 2001 14:50:10 +0200 , <20010816125015.71D1F14B630@oratrix.oratrix.nl> Message-ID: <20010816133606.3626014B630@oratrix.oratrix.nl> On rereading that it looks as though I want to take all the credits, but that's definitely not true: a lot of the work was done by Tony Lownds. We bounced Makefile.pre.in's and configure.in's back and forth on a daily basis. Long live timezones! -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Thu Aug 16 15:16:03 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 16:16:03 +0200 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files In-Reply-To: Message by Mark Day , Wed, 8 Aug 2001 10:15:50 -0700 , <03BDB406-8C21-11D5-9CF9-00039303AF92@apple.com> Message-ID: <20010816141608.13B0314B630@oratrix.oratrix.nl> Recently, Mark Day said: > The first time I tried to build from CVS (right after 2.2a1 was > released), I couldn't figure out how to build the plugins. I already > had MacPython 2.1 installed, but didn't realize I needed to copy the > interpreter into the :python:dist:src directory. I also hadn't noticed > PythonStandSmall.mcp (nor do I have the expat folder it requires ... > yet). So I ended up importing some of the .xml files into CodeWarrior > by hand (doing only the ones that the IDE complained about, until I got > the IDE to launch all the way). I've updated PythonStandSmall.mcp so that it doesn't refer to expat anymore, and I've made the build instructions a bit more clear (and correct:-). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From noon@snow.cit.cornell.edu Thu Aug 16 21:41:56 2001 From: noon@snow.cit.cornell.edu (William Noon) Date: Thu, 16 Aug 2001 16:41:56 -0400 Subject: [Pythonmac-SIG] Python Framework Message-ID: <200108162041.QAA22088@snow.cit.cornell.edu> Jack -- I am mostly coming from the unix side of python and only use the command line tool. I built the framework from cvs (8/15) and it mostly went well. I had been installing with prefix = /usr/local and have a number of c-modules built fine. Building the framework went fine and it passes most of the tests (after bumping the stack limit). When installing, it only copied over the Versions tree and didn't make the symbolic links for Headers, Resources and Python. It also didn't create the bin, lib, include and man directories. I brought these over by hand and made the appropriate links. I need to use the command line version so I made a link from /Library/Frameworks/Version/Current/bin/python.exe -> /usr/local/bin/python Even once the Python.app is set, I think we will need a python in the std bsd PATH somewhere. Python will then run from the prompt fine and seems _almost_ there. It looks like some more magic is needed in Modules/getpath.c to get the sys.path and sys.prefix and sys.executable to point to the right place. sys.path includes the build directories but not the real libs. sys.executable/sys.prefix will try to execute the Python library at Versions/2.2/Python. This specifically shows up when building the mxBase stuff. Other, simple modules (like bsddb3) work fine. Overall, this is an big step towards getting python to play well on OSX. --Bill Noon Cornell University From jack@oratrix.nl Thu Aug 16 21:55:45 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 22:55:45 +0200 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files In-Reply-To: Message by Mark Day , Wed, 8 Aug 2001 10:15:50 -0700 , <03BDB406-8C21-11D5-9CF9-00039303AF92@apple.com> Message-ID: <20010816205550.172FA14B630@oratrix.oratrix.nl> And to address the other issues in your mail from last week: Recently, Mark Day said: > The problem was that genpluginprojects.py tries to find the source > relative to the running interpreter. If it could find the source > relative to the script itself, or if the build instructions were a > little clearer (especially for people trying to get started the first > time), I think it would be easier to do away with the .xml files. I've just updated genpluginprojects and fullbuild, and if you now use fullbuild (the preferred way of calling genpluginprojects) it will use the same directory you selected in the initial fullbuild dialog. If you call genpluginprojects standalone it'll still use the default sys.prefix. > On a related note, a lot of third party pieces (ICProgKit, GUSI, Waste, > etc.) that the CodeWarrior project access paths use are older than > versions I could find on the net. I generally downloaded current > versions and fixed up the access paths. That is probably best. And if someone finds a new version of something that MacPython uses: by all means use the sourceforge patch manager to tell me of the new version and where to find it and I'll update things. It's just that I can't really spend the time hunting for new versions of all those libraries. GUSI is a bit of a special case, as Carbon Python really needs it's own version (until I finally get around to merging the changes and sending the result to Matthias). > Any hints on having a single folder with a CVS checkout that can build > either the Darwin/Mac OS X or classic/Carbon MacPython? Would you do > the CVS checkout with MacCvs to get file types correct? I'm using two source trees. If someone wants to give this a go I'd be interested in hearing the results, but I wouldn't have my hopes too high. MacCVS or MacCVS Pro will get the lineendings on, say, the Makefiles wrong (the C sources should be fine with either line ending), and command-line cvs will not be able to unpack the resource files. That raises another issue: I'm don't know how to tackle the resource files for unix-Python in the first place. What I'd like to do is put the resources into the data fork. That's the preferred way on OSX, and it would also mean they would survive a tar distribution. For the interpreter resources (all the stuff in :Mac:Resources) I could conceivably shadow this whole folder as DFResources and be done. A few scripts to update the datafork resources if the resource-fork-resource files had been edited and that's that. This isn't going o work for the .rsrc files that live elsewhere in the tree, though, and that belong to applets and scripts. If people can let their thoughs go over a solution that 1) works fine with cvs, both unix and Mac variants 2) needs little change in the code of the scripts using the resource files (although something like if Res.GetResource('xxxx', xx): pass # we're running as an applet elif MacOS.runtimemodel == 'macho': Res.OpenResourceFileDataForkOrSo('xxxx.df.rsrc') else: Res.OpenResFile('xxxx.rsrc') is probably okay. 3) has the datafork-based resource files survive tar please let me know. We could probably stuff all the magic in point 2 into a routine macresource.needresources(__file__, resourcetypetocheck, resourceidtocheck) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From nathan@vividworks.com Thu Aug 16 22:09:21 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Thu, 16 Aug 2001 15:09:21 -0600 (CST) Subject: [Pythonmac-SIG] MacOSX Python - framework support working In-Reply-To: <20010816125015.71D1F14B630@oratrix.oratrix.nl> Message-ID: Really cool! I'm a new to developing for OS X but I use python daily - got any demo python apps? nathan On Thu, 16 Aug 2001, Jack Jansen wrote: > People using commandline Python on OSX and interested in the ObjC > stuff or whatever should check out the latest CVS changs form the > repository: Python can now be built as a framework. > > The configure option to use is "--enable-framework". After the make do > a "make frameworkinstall" and a complete Python framework will end up > in /Library/Frameworks. > > There's no build instructions for a ".app" Python package yet, but > that's next on the wishlist. > > setup.py also contains build instructions for most (originally > MacPython) toolbox modules, but they're commented out except for a > few: there are still issues with sys.path, with resource files and a > few other things. > -- > Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ > www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From jack@oratrix.nl Thu Aug 16 22:16:24 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 23:16:24 +0200 Subject: [Pythonmac-SIG] Python Framework In-Reply-To: Message by William Noon , Thu, 16 Aug 2001 16:41:56 -0400 , <200108162041.QAA22088@snow.cit.cornell.edu> Message-ID: <20010816211629.EAB0114B630@oratrix.oratrix.nl> Recently, William Noon said: > When installing, it only copied over the Versions tree and didn't make > the symbolic links for Headers, Resources and Python. It also didn't > create the bin, lib, include and man directories. I brought these > over by hand and made the appropriate links. Did you use "make frameworkinstall"? It should first do "make install" to put a standard Python installation (bin, lib, etc) into /Library/Frameworks/Python.framework/Versions/2.2 and then a "make frameworkinfrastructureinstall" which creates the symlink jungle. > I need to use the command > line version so I made a link from > /Library/Frameworks/Version/Current/bin/python.exe -> /usr/local/bin/python > Even once the Python.app is set, I think we will need a python in > the std bsd PATH somewhere. Yes, we definitely need this too. But: at this point we don't know where the user would like it, as we've overridden $(prefix) to point to the location where we want it. One thing we could do is add an extra target ("make cmdlineinstall"?) and stuff the symlinks into /usr/local. Does anyone have better ideas? > It looks like some more magic is needed in Modules/getpath.c to > get the sys.path and sys.prefix and sys.executable to point to the > right place. sys.path includes the build directories but not the > real libs. This is funny. It may be another symptom of the next problem, or it may be that your framework installation isn't complete. getpath.c looks at /Lib/python2.2/os.py, and if it doesn't exist it assumes it is running with the "skeleton framework" which is created in the build directory. So either it really is doing that (see below) or your /Library/yaddayadda installation is incomplete. > sys.executable/sys.prefix will try to execute the > Python library at Versions/2.2/Python. This specifically shows up when > building the mxBase stuff. Other, simple modules (like bsddb3) work fine. Are you sure sys.prefix is pointing to the local copy too? I always see sys.prefix as /Library/tralala, even when running with the local copy of the framework and sys.path pointing to the build directories. There is some magic here, though. Tony came up with the elegant solution of referring to the framework not by its full /Library/tadidadida path but by a relative path starting with Python.framework/Versions/2.2. Due to the dyld search code this works great in 2 situations: 1) You're running from the build directory, Python hasn't been installed yet and you're trying to run, say, setup.py. 2) Python has been installed, and you're not in the build directory. You now have a third case: 3) You're in the build directory, but Python has been installed and you would like to use that version. However, dyld prefers the Python.framework in the local directory over that in the /Library/Frameworks directory. I'm not sure I understand how sys.prefix can be wrong. And I assume that that's the only one that really matters, or not? Could you pleaee investigate a bit more? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From nathan@vividworks.com Thu Aug 16 22:22:50 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Thu, 16 Aug 2001 15:22:50 -0600 (CST) Subject: [Pythonmac-SIG] Python Framework In-Reply-To: <20010816211629.EAB0114B630@oratrix.oratrix.nl> Message-ID: I'm two steps behind here, but whatever. Does this mean that If I write a OS X app in python with this framework my users will need to install the framework on their machines to run my app? nathan On Thu, 16 Aug 2001, Jack Jansen wrote: > > Recently, William Noon said: > > When installing, it only copied over the Versions tree and didn't make > > the symbolic links for Headers, Resources and Python. It also didn't > > create the bin, lib, include and man directories. I brought these > > over by hand and made the appropriate links. > > Did you use "make frameworkinstall"? It should first do "make install" > to put a standard Python installation (bin, lib, etc) into > /Library/Frameworks/Python.framework/Versions/2.2 and then a "make > frameworkinfrastructureinstall" which creates the symlink jungle. > > > I need to use the command > > line version so I made a link from > > /Library/Frameworks/Version/Current/bin/python.exe -> /usr/local/bin/python > > Even once the Python.app is set, I think we will need a python in > > the std bsd PATH somewhere. > > Yes, we definitely need this too. But: at this point we don't know > where the user would like it, as we've overridden $(prefix) to point > to the location where we want it. > > One thing we could do is add an extra target ("make cmdlineinstall"?) > and stuff the symlinks into /usr/local. Does anyone have better ideas? > > > It looks like some more magic is needed in Modules/getpath.c to > > get the sys.path and sys.prefix and sys.executable to point to the > > right place. sys.path includes the build directories but not the > > real libs. > > This is funny. It may be another symptom of the next problem, or it > may be that your framework installation isn't complete. getpath.c > looks at /Lib/python2.2/os.py, and if it doesn't exist > it assumes it is running with the "skeleton framework" which is > created in the build directory. So either it really is doing that > (see below) or your /Library/yaddayadda installation is incomplete. > > > sys.executable/sys.prefix will try to execute the > > Python library at Versions/2.2/Python. This specifically shows up when > > building the mxBase stuff. Other, simple modules (like bsddb3) work fine. > > Are you sure sys.prefix is pointing to the local copy too? I always > see sys.prefix as /Library/tralala, even when running with the local > copy of the framework and sys.path pointing to the build directories. > > There is some magic here, though. Tony came up with the elegant solution of > referring to the framework not by its full /Library/tadidadida path > but by a relative path starting with > Python.framework/Versions/2.2. Due to the dyld search code this works > great in 2 situations: > 1) You're running from the build directory, Python hasn't been > installed yet and you're trying to run, say, setup.py. > 2) Python has been installed, and you're not in the build directory. > > You now have a third case: > 3) You're in the build directory, but Python has been installed and > you would like to use that version. However, dyld prefers the > Python.framework in the local directory over that in the > /Library/Frameworks directory. > > I'm not sure I understand how sys.prefix can be wrong. And I assume > that that's the only one that really matters, or not? Could you pleaee > investigate a bit more? > -- > Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ > www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From jack@oratrix.nl Thu Aug 16 22:34:52 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 23:34:52 +0200 Subject: [Pythonmac-SIG] MacOSX Python - framework support working In-Reply-To: Message by Nathan Heagy , Thu, 16 Aug 2001 15:09:21 -0600 (CST) , Message-ID: <20010816213457.2282214B630@oratrix.oratrix.nl> Recently, Nathan Heagy said: > Really cool! I'm a new to developing for OS X but I use python daily - got > any demo python apps? Not of specific Mac stuff yet. The framework is step one in a series of things we need (feel free to jump in and help!): 1) Install Python as a framework 2) Create a Python.app that you can drag and drop scripts on from the finder. 3) Use this as a basis for MacPython-like BuildApplet and BuildApplication support. 4) Get the Carbon modules working. 5) Sort out the resource file problem explained in another message today. Once these steps are done we have essentially what MacPython has now. Oh yes, another job: 2a) We need nice 128x128 icons for the interpreter, an applet, a Python source file, a PYC file and the IDE. Any takers? I happen to know that w have a few graphics artists on the list, one of whom even recently (boo! hiss!) designed the icon for the Windows Python installer... Be warned: if it doesn't happen quickly I'll have to do it myself:-) Then the only things that need doing are 6) Getting the ObjC module to work with Cocoa 7) Write the glue code that is needed to make the ObjC interface work with Interface Builder generated things, and convert the IB generated C code (or Java code) to equivalent Python code 8) Convince Apple that Python is a much more sensible language to support in IB than ObjC or Java:-) By then we probably have enough goodies that we can kill both RealBasic and Tkinter with one stone:-) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Thu Aug 16 22:38:29 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 23:38:29 +0200 Subject: [Pythonmac-SIG] Python Framework In-Reply-To: Message by Nathan Heagy , Thu, 16 Aug 2001 15:22:50 -0600 (CST) , Message-ID: <20010816213834.6431614B630@oratrix.oratrix.nl> Recently, Nathan Heagy said: > I'm two steps behind here, but whatever. Does this mean that If I write a > OS X app in python with this framework my users will need to install the > framework on their machines to run my app? That depends. If you write a fully standalone app you can stuff the framework into your app's local Frameworks folder, so install is a simple drag and drop of your app. And if your app is a BSD script (or set of scripts) I think you can tell the Apple OSX installer that it should put the framework into /Library/Frameworks and the rest of the stuff where you want it on $PATH or so. And there are various other possibilities. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Thu Aug 16 22:42:21 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 16 Aug 2001 23:42:21 +0200 Subject: [Pythonmac-SIG] Really final 2.1.1 installer available In-Reply-To: Message by Russell E Owen , Thu, 16 Aug 2001 14:10:00 -0700 , Message-ID: <20010816214226.0676014B630@oratrix.oratrix.nl> Recently, Russell E Owen said: > Might you be able to post the missing config file, for those of us > who already installed 2.1.1? Here it is. Put into :Python:Tools:idle:config-mac.txt [EditorWindow] font-name= monaco font-size= 9 -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From mday@mac.com Fri Aug 17 00:05:16 2001 From: mday@mac.com (Mark Day) Date: Thu, 16 Aug 2001 16:05:16 -0700 Subject: [Pythonmac-SIG] MacOSX Python - framework support working In-Reply-To: <20010816213457.2282214B630@oratrix.oratrix.nl> Message-ID: <27D75BC7-929B-11D5-963C-00039303AF92@apple.com> On Thursday, August 16, 2001, at 02:34 PM, Jack Jansen wrote: > Not of specific Mac stuff yet. The framework is step one in a series > of things we need (feel free to jump in and help!): > 1) Install Python as a framework > 2) Create a Python.app that you can drag and drop scripts on from the > finder. Would that include some form of IDE like what's in the MacPython distribution currently? If not, that would be really nice to have somewhere on the list. For me, the GUI object inspector is probably the best part of the IDE. Next would probably be the ease of editing a script and running it directly (without having to switch between apps, or even saving a file). And of course the GUI interface to the debugger is really handy. I'd like to help in general, but I'm not sure where I can usefully contribute. I'd like to implement some Python interfaces to the File Manager (starting with the HFS Plus APIs, and then the other APIs supported in Carbon). My most immediate desire is to be able to drive all combinations of inputs to those APIs in order to test/debug the File Manager itself. But that's probably more complicated than what the typical Python user needs/wants (so it might not be terribly useful as a mainstream module). -Mark From jack@oratrix.nl Fri Aug 17 08:58:38 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 17 Aug 2001 09:58:38 +0200 Subject: [Pythonmac-SIG] MacOSX Python - framework support working In-Reply-To: Message by Mark Day , Thu, 16 Aug 2001 16:05:16 -0700 , <27D75BC7-929B-11D5-963C-00039303AF92@apple.com> Message-ID: <20010817075839.470D3303181@snelboot.oratrix.nl> > On Thursday, August 16, 2001, at 02:34 PM, Jack Jansen wrote: > > > Not of specific Mac stuff yet. The framework is step one in a series > > of things we need (feel free to jump in and help!): > > 1) Install Python as a framework > > 2) Create a Python.app that you can drag and drop scripts on from the > > finder. > > Would that include some form of IDE like what's in the MacPython > distribution currently? If not, that would be really nice to have > somewhere on the list. Definitely. After step 2 and 3 (porting the Carbon/MacPython modules) the IDE should work. It'll probably need a bit more attention, wtih different lineendings and pathnames such, but not overmuch. > I'd like to implement some Python interfaces to the File Manager > (starting with the HFS Plus APIs, and then the other APIs supported in > Carbon). My most immediate desire is to be able to drive all > combinations of inputs to those APIs in order to test/debug the File > Manager itself. But that's probably more complicated than what the > typical Python user needs/wants (so it might not be terribly useful as a > mainstream module). I've half-heartedly started on the HFS+ API, but done little more than add some minimal support for FSRefs to macfs. And I'm starting to think that this is the wrong solution. The reason macfs is a hand-coded module is really historical, it should really be a bgen-generated interface to Files.h, and stuff like the alias handling should be split out to another module. Note that you needn't worry about something being too complicated: sheer volume is no problem (cf. Quicktime), and if parameters are really strange we can always do a wrapper in Python. The only problem is that bgen is rather complicated to drive. But you might wat to have a look, -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From khk@uiah.fi Fri Aug 17 09:20:46 2001 From: khk@uiah.fi (Kari-Hans Kommonen) Date: Fri, 17 Aug 2001 11:20:46 +0300 Subject: [Pythonmac-SIG] Running Zope/ZODB on MacPython Message-ID: Hi! I am considering to use Zope as a local object database server for a variety of local machine applications, running on Python, Director, Java, etc. - various dev platforms. I have Zope running beautifully on OS X, but since we need to also run OS 9 for some time, I am wondering does anyone have experience running Zope or StandaloneZODB on MacPython? TIA, Kari-Hans Kommonen From Y.Benita@pharm.uu.nl Fri Aug 17 11:21:26 2001 From: Y.Benita@pharm.uu.nl (Yair Benita) Date: Fri, 17 Aug 2001 12:21:26 +0200 Subject: [Pythonmac-SIG] Tkinter in Python Message-ID: Hi All, I wonder why Tkinter does not work. I use python 2.1 Carbon because I switch from MacOS 9.1 to MacOS X often. I know Tkinter does not work in the IDE but it doesn't work for me in the interpreter or as an applet either. The error is: ImportError: No module named Tkinter I checked the paths in the pythons prefs: the lib-tk is there. Is it possible that Tkinter works only for the classic configuration of Python and not for the carbon configuration even if it is in OS 9.1? Thanks, Yair -- Yair Benita Pharmaceutical Proteomics Utrecht University From jack@oratrix.nl Fri Aug 17 13:40:50 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 17 Aug 2001 14:40:50 +0200 Subject: [Pythonmac-SIG] Tkinter in Python In-Reply-To: Message by Yair Benita , Fri, 17 Aug 2001 12:21:26 +0200 , Message-ID: <20010817124158.0780A303181@snelboot.oratrix.nl> Tkinter indeed doesn't work under Carbon, but the error you should have gotten is ImportError: Tkinter not supported under Carbon (yet) Are you running the latest (2.1.1) MacPython? If you are I'd like to know how you are importing Tkinter (the only thing I tried was a simple "import Tkinter" from the PythonInterpreter prompt). > Hi All, > I wonder why Tkinter does not work. I use python 2.1 Carbon because I switch > from MacOS 9.1 to MacOS X often. > I know Tkinter does not work in the IDE but it doesn't work for me in the > interpreter or as an applet either. > The error is: ImportError: No module named Tkinter > I checked the paths in the pythons prefs: the lib-tk is there. > > Is it possible that Tkinter works only for the classic configuration of > Python and not for the carbon configuration even if it is in OS 9.1? > Thanks, > Yair > > -- > Yair Benita > Pharmaceutical Proteomics > Utrecht University > > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From Y.Benita@pharm.uu.nl Fri Aug 17 14:38:32 2001 From: Y.Benita@pharm.uu.nl (Yair Benita) Date: Fri, 17 Aug 2001 15:38:32 +0200 Subject: [Pythonmac-SIG] Tkinter in Python In-Reply-To: <20010817124158.0780A303181@snelboot.oratrix.nl> Message-ID: on 17/8/01 14:40, Jack Jansen at jack@oratrix.nl wrote: > Tkinter indeed doesn't work under Carbon, but the error you should have gotten > is > ImportError: Tkinter not supported under Carbon (yet) > > Are you running the latest (2.1.1) MacPython? If you are I'd like to know how > you are importing Tkinter (the only thing I tried was a simple "import > Tkinter" from the PythonInterpreter prompt). > >> Hi All, >> I wonder why Tkinter does not work. I use python 2.1 Carbon because I switch >> from MacOS 9.1 to MacOS X often. >> I know Tkinter does not work in the IDE but it doesn't work for me in the >> interpreter or as an applet either. >> The error is: ImportError: No module named Tkinter >> I checked the paths in the pythons prefs: the lib-tk is there. >> >> Is it possible that Tkinter works only for the classic configuration of >> Python and not for the carbon configuration even if it is in OS 9.1? >> Thanks, >> Yair >> >> -- >> Yair Benita >> Pharmaceutical Proteomics >> Utrecht University >> >> >> _______________________________________________ >> Pythonmac-SIG maillist - Pythonmac-SIG@python.org >> http://mail.python.org/mailman/listinfo/pythonmac-sig >> > > -- > Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ > www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm > > > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > Hi Jack, I am using python 2.1 and not 2.1.1. I will upgrade today and let you know. I am importing it just like you: import Tkinter Yair -- Yair Benita Pharmaceutical Proteomics Utrecht University From scott@griffitts.com Fri Aug 17 18:21:34 2001 From: scott@griffitts.com (Scott Griffitts) Date: Fri, 17 Aug 2001 12:21:34 -0500 Subject: [Pythonmac-SIG] Re: Tkinter in Python In-Reply-To: Message-ID: I may have misread the docs but I thought that if you installed Carbon and Classic (2.1.1) you could run Tkinter via PythonInterpreterClassic. However, I was getting the "Tkinter not supported under Carbon (yet)" message. I reinstalled Classic only and it works fine now. On a side note, at work I have been able to put my limited knowledge of Python to good use. A printing process that used to take over a week now takes 2 days. It impressed my boss so much that he just gave me a 35% raise. So it pays to know Python (and it pays to know more than your boss does.) -Scott > on 17/8/01 14:40, Jack Jansen at jack@oratrix.nl wrote: > >> Tkinter indeed doesn't work under Carbon, but the error you should have >> gotten >> is >> ImportError: Tkinter not supported under Carbon (yet) >> >> Are you running the latest (2.1.1) MacPython? If you are I'd like to know how >> you are importing Tkinter (the only thing I tried was a simple "import >> Tkinter" from the PythonInterpreter prompt). >> >>> Hi All, >>> I wonder why Tkinter does not work. I use python 2.1 Carbon because I switch >>> from MacOS 9.1 to MacOS X often. >>> I know Tkinter does not work in the IDE but it doesn't work for me in the >>> interpreter or as an applet either. >>> The error is: ImportError: No module named Tkinter >>> I checked the paths in the pythons prefs: the lib-tk is there. >>> >>> Is it possible that Tkinter works only for the classic configuration of >>> Python and not for the carbon configuration even if it is in OS 9.1? >>> Thanks, >>> Yair >>> >>> -- >>> Yair Benita >>> Pharmaceutical Proteomics >>> Utrecht University >>> >>> >>> _______________________________________________ >>> Pythonmac-SIG maillist - Pythonmac-SIG@python.org >>> http://mail.python.org/mailman/listinfo/pythonmac-sig >>> >> >> -- >> Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ >> Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ >> www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm >> >> >> >> _______________________________________________ >> Pythonmac-SIG maillist - Pythonmac-SIG@python.org >> http://mail.python.org/mailman/listinfo/pythonmac-sig >> > Hi Jack, > I am using python 2.1 and not 2.1.1. > I will upgrade today and let you know. > I am importing it just like you: import Tkinter > Yair > -- > Yair Benita > Pharmaceutical Proteomics > Utrecht University From noon@snow.cit.cornell.edu Fri Aug 17 18:46:30 2001 From: noon@snow.cit.cornell.edu (William Noon) Date: Fri, 17 Aug 2001 13:46:30 -0400 Subject: [Pythonmac-SIG] Python Framework In-Reply-To: Your message of "Thu, 16 Aug 2001 23:16:24 +0200." <20010816211629.EAB0114B630@oratrix.oratrix.nl> Message-ID: <200108171746.NAA20894@snow.cit.cornell.edu> Jack -- I didn't do a 'make frameworkinstall'. After zapping the /Library/Frameworks/Python.... tree and making appropriately, all the symbolic links were there. When the dust settles, if the user selected --with-framework, the 'install' target should do the 'frameworkinstall' stuff since it is halfway there already. After this, the sys.executable is still pointing to /Library/Frameworks/Python.framework/Versions/2.2/Python which is the library. Appended are a couple of patches to getpath.c and Makefile.pre.in that fix this and make a couple of other changes. Since the framework is already versioned, the Makefile will create a hardlink from python2.2.exe to python in the ...Versions/2.2/bin directory. getpath.c doesn't know about $(EXE). The .exe extension was only needed to get around the case insensitive problems in the build directory anyway. When an .app wrapper is done, we will need to distinguish between these two binaries. I also make a link from the binary to /usr/local/bin/python$(VERSION) so it will show up in the path. --Bill Noon Cornell University # cvs diff -u Modules/getpath.c Makefile.pre.in Index: Modules/getpath.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/getpath.c,v retrieving revision 1.38 diff -u -r1.38 getpath.c --- Modules/getpath.c 2001/08/15 01:14:40 1.38 +++ Modules/getpath.c 2001/08/17 17:06:09 @@ -392,8 +392,16 @@ strncpy(progpath, prog, MAXPATHLEN); } else { - /* Use the location of the library as the progpath */ - strncpy(progpath, buf, MAXPATHLEN); + /* Use the location of the library as the base for progpath. + ** This has to be adjusted for commandline python + ** and assumes that the program is called 'python' + ** When the python.app wrapper is built, adjustments + ** will have to be made. + */ + strncpy(progpath, buf, MAXPATHLEN); + reduce(progpath); + joinpath(progpath,"bin"); + joinpath(progpath,"python"); } } else { Index: Makefile.pre.in =================================================================== RCS file: /cvsroot/python/python/dist/src/Makefile.pre.in,v retrieving revision 1.51 diff -u -r1.51 Makefile.pre.in --- Makefile.pre.in 2001/08/15 01:26:28 1.51 +++ Makefile.pre.in 2001/08/17 17:06:09 @@ -781,6 +781,12 @@ $(LN) -fs Versions/Current/Headers $(PYTHONFRAMEWORKINSTALLDIR)/Headers $(LN) -fs Versions/Current/Resources $(PYTHONFRAMEWORKINSTALLDIR)/Resources $(INSTALL_DATA) $(LDLIBRARY) $(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY) + -if test -f $(BINDIR)/python; \ + then rm -f $(BINDIR)/python; \ + else true; \ + fi + (cd $(BINDIR); $(LN) python$(VERSION)$(EXE) python) + (cd /usr/local/bin; $(LN) -fs python$(VERSION) $(BINDIR)/python) # Build the toplevel Makefile Makefile.pre: Makefile.pre.in config.status > > Recently, William Noon said: > > When installing, it only copied over the Versions tree and didn't make > > the symbolic links for Headers, Resources and Python. It also didn't > > create the bin, lib, include and man directories. I brought these > > over by hand and made the appropriate links. > > Did you use "make frameworkinstall"? It should first do "make install" > to put a standard Python installation (bin, lib, etc) into > /Library/Frameworks/Python.framework/Versions/2.2 and then a "make > frameworkinfrastructureinstall" which creates the symlink jungle. > > > I need to use the command > > line version so I made a link from > > /Library/Frameworks/Version/Current/bin/python.exe -> /usr/local/bin/python > > Even once the Python.app is set, I think we will need a python in > > the std bsd PATH somewhere. > > Yes, we definitely need this too. But: at this point we don't know > where the user would like it, as we've overridden $(prefix) to point > to the location where we want it. > > One thing we could do is add an extra target ("make cmdlineinstall"?) > and stuff the symlinks into /usr/local. Does anyone have better ideas? > > > It looks like some more magic is needed in Modules/getpath.c to > > get the sys.path and sys.prefix and sys.executable to point to the > > right place. sys.path includes the build directories but not the > > real libs. > > This is funny. It may be another symptom of the next problem, or it > may be that your framework installation isn't complete. getpath.c > looks at /Lib/python2.2/os.py, and if it doesn't exist > it assumes it is running with the "skeleton framework" which is > created in the build directory. So either it really is doing that > (see below) or your /Library/yaddayadda installation is incomplete. > > > sys.executable/sys.prefix will try to execute the > > Python library at Versions/2.2/Python. This specifically shows up when > > building the mxBase stuff. Other, simple modules (like bsddb3) work fine. > > Are you sure sys.prefix is pointing to the local copy too? I always > see sys.prefix as /Library/tralala, even when running with the local > copy of the framework and sys.path pointing to the build directories. > > There is some magic here, though. Tony came up with the elegant solution of > referring to the framework not by its full /Library/tadidadida path > but by a relative path starting with > Python.framework/Versions/2.2. Due to the dyld search code this works > great in 2 situations: > 1) You're running from the build directory, Python hasn't been > installed yet and you're trying to run, say, setup.py. > 2) Python has been installed, and you're not in the build directory. > > You now have a third case: > 3) You're in the build directory, but Python has been installed and > you would like to use that version. However, dyld prefers the > Python.framework in the local directory over that in the > /Library/Frameworks directory. > > I'm not sure I understand how sys.prefix can be wrong. And I assume > that that's the only one that really matters, or not? Could you pleaee > investigate a bit more? > -- > Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ > www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From loredo@astrosun.astro.cornell.edu Fri Aug 17 20:54:22 2001 From: loredo@astrosun.astro.cornell.edu (Tom Loredo) Date: Fri, 17 Aug 2001 15:54:22 -0400 (EDT) Subject: [Pythonmac-SIG] Re: Running Zope/ZODB on MacPython Message-ID: <200108171954.PAA08482@laplace.astro.cornell.edu> Hi Kari-Hans- > I am wondering does anyone have experience > running Zope or StandaloneZODB on MacPython? I've compiled ZODB for MacPython, though I assembled it before StandaloneZODB existed, and have found it easier to update the distribution I created using recent Zope sources than to try to get StandaloneZODB to work directly. I've only tried a couple very simple apps with it, but it seems to work. I could put the shared libraries and the modules in an archive for folks to fool with (no setup.py yet; you'll have to drag and drop...). It hasn't been tested, and I'd be interested to have someone who knows ZODB give it a more thorough test. Also, I'd like to use Catalog with it, but I'm having trouble figuring that out, so that's untested, too. For all I know the most recent StandaloneZODB compiles directly on the Mac. -Tom Loredo From noon@snow.cit.cornell.edu Fri Aug 17 22:05:10 2001 From: noon@snow.cit.cornell.edu (William Noon) Date: Fri, 17 Aug 2001 17:05:10 -0400 Subject: [Pythonmac-SIG] Python Framework In-Reply-To: Your message of "Fri, 17 Aug 2001 13:46:30 EDT." <200108171746.NAA20894@snow.cit.cornell.edu> Message-ID: <200108172105.RAA19846@snow.cit.cornell.edu> After doing another clean install, I found that I reversed the sense on the last link in Makefile.pre.in. Instead of: (cd /usr/local/bin; $(LN) -fs python$(VERSION) $(BINDIR)/python) it should be: (cd /usr/local/bin; $(LN) -fs $(BINDIR)/python python$(VERSION) ) --Bill From bfancher@mac.com Fri Aug 17 22:24:47 2001 From: bfancher@mac.com (bill fancher) Date: Fri, 17 Aug 2001 14:24:47 -0700 Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: <20010816125015.71D1F14B630@oratrix.oratrix.nl> Message-ID: <200108172124.OAA06402@smtpout.mac.com> On Thursday, August 16, 2001, at 05:50 AM, Jack Jansen wrote: > People using commandline Python on OSX and interested in the ObjC > stuff or whatever should check out the latest CVS changs form the > repository: Python can now be built as a framework. I discussed this privately with Tony Lownds a while ago, and expressed the opinion that building as a framework is a bad idea. I should have gone public earlier. I believe Python on Mac OS X should look as much like Python on any other platform as possible. Leave the "special" stuff for Windows and other non-POSIX systems. This would be in keeping with guidelines from Apple, which recommend compiling legacy code as is. Neither TCL nor PERL is a framework. There's a reason for this. A non-standard configuration is just asking for trouble with third party code and should be avoided if at all possible. For example, I have code that includes Python headers. Using the framework, I need to change all my code from e.g. #include to #include And then I need to add /Library/Frameworks as a framework search path. Alternatively, I can ignore the framework and change things to use the include path /Library/Frameworks/Python.framework/Headers The point being: the "framework support" breaks my code, and it will break other people's code as well, requiring a Mac-specific song and dance to get it to work. Now, I suppose I could just build Python as usual (assuming that still works) but I then have to make sure that people who use my code have a standard Python build, instead of a framework build. Having two different installation possibilities is again a bad idea. One "solution" would be to have everything in the "usual" place, but to create symlinks to the various pieces in the framework. Unfortunately, this defeats one of the major benefits of frameworks (that everything related to the framework is in the same folder). OTOH, I think compiling the library as a .dylib is a very, very GOOD idea, and would much like to see this work "out of the box." I did considerable work with Tony towards this end. In closing, one question: What are the benefits that we're supposed to see from a Python framework? -- bill p.s. The "Headers" link in /Library/Frameworks/Python.framework is bad. From jack@oratrix.nl Fri Aug 17 22:28:45 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 17 Aug 2001 23:28:45 +0200 Subject: [Pythonmac-SIG] Re: Tkinter in Python In-Reply-To: Message by Scott Griffitts , Fri, 17 Aug 2001 12:21:34 -0500 , Message-ID: <20010817212850.ABBEA162E09@oratrix.oratrix.nl> Recently, Scott Griffitts said: > I may have misread the docs but I thought that if you installed Carbon and > Classic (2.1.1) you could run Tkinter via PythonInterpreterClassic. > However, I was getting the "Tkinter not supported under Carbon (yet)" > message. I reinstalled Classic only and it works fine now. If you install both Carbon and Classic what gets configured by default is Carbon. To use Tkinter you have to run ConfigurePythonClassic, and then scripts using Tkinter start to work. > On a side note, at work I have been able to put my limited knowledge of > Python to good use. A printing process that used to take over a week now > takes 2 days. It impressed my boss so much that he just gave me a 35% > raise. So it pays to know Python (and it pays to know more than your boss > does.) Well, I won't be asking for my fair share of that 35% :-) but if you're willing to do something back: I suggested recently that it might be possible to create an _tkinter.carbon.slb that is linked against the classic Tkinter libs, InterfaceLib and PythonCoreCarbon. This would allow Carbon Python apps on OS9 to use Tkinter, I think.... -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From nathan@vividworks.com Fri Aug 17 23:05:45 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Fri, 17 Aug 2001 16:05:45 -0600 (CST) Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: <200108172124.OAA06402@smtpout.mac.com> Message-ID: > I believe Python on Mac OS X should look as much like Python on any other > platform as possible. Leave the "special" stuff for Windows and other > non-POSIX systems. I don't consider Darwin/OS X to be POSIX compliant. There is lots of stuff missing. OTOH, I sure wish it were. nathan From tony@metanet.com Fri Aug 17 23:17:16 2001 From: tony@metanet.com (Tony Lownds) Date: Fri, 17 Aug 2001 15:17:16 -0700 Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: <200108172124.OAA06402@smtpout.mac.com> References: <200108172124.OAA06402@smtpout.mac.com> Message-ID: Hi again, Bill! > > >I discussed this privately with Tony Lownds a while ago, and >expressed the opinion that building as a framework is a bad idea. I >should have gone public earlier. I thought your position was that it was hard, but not undesirable... >I believe Python on Mac OS X should look as much like Python on any >other platform as possible. Leave the "special" stuff for Windows >and other non-POSIX systems. > >This would be in keeping with guidelines from Apple, which recommend >compiling legacy code as is. Neither TCL nor PERL is a framework. >There's a reason for this. Again, I understood Tcl and Perl are not frameworks mainly because it would be hard to accomplish. >For example, I have code that includes Python headers. Using the framework, > I need to change all my code from e.g. > >#include > >to > >#include Ouch, really? >OTOH, I think compiling the library as a .dylib is a very, very GOOD idea, > and would much like to see this work "out of the box." I did >considerable work with Tony towards this end. Yep, this was the patch I mentioned on 6/25 on this list. >In closing, one question: What are the benefits that we're supposed >to see from a Python framework? Bill, you specifically have something that embeds python, but want to re-use the installation of python, so you don't have to handle all of that installation in your app. That's one of many cases where frameworks are great. With a framework, you can either include the Python.framework directory and ask people to install it via drag-and-drop, or share the framework that the python distribution installs. You can also put the Python.framework inside your own app's .app or .framework directory, if you want to avoid sharing altogether. -Tony From jack@oratrix.nl Fri Aug 17 23:30:59 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sat, 18 Aug 2001 00:30:59 +0200 Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: Message by bill fancher , Fri, 17 Aug 2001 14:24:47 -0700 , <200108172124.OAA06402@smtpout.mac.com> Message-ID: <20010817223104.4EB51162E09@oratrix.oratrix.nl> Recently, bill fancher said: > I discussed this privately with Tony Lownds a while ago, and expressed the > opinion that building as a framework is a bad idea. I should have gone > public earlier. > > I believe Python on Mac OS X should look as much like Python on any other > platform as possible. Leave the "special" stuff for Windows and other > non-POSIX systems. I'd like to discuss this topic a bit more (anyone with an opinion: please chime in now, this discussion could shape the future:-). First off, let me note that building a framework is optional, and should remain so. There are lots of people who will want Python only for commandline use or CGI scripting or whatever, and a framework-based Python will not have any substantial benefits to them. Second, as the next distribution is going to be an alfa we should start using both the framework and the non-framework version. If it turns out the framework is a bad idea we should drop it. If it turns out it needs to be done differently we should do that. Third, I like to view MacOSX as a new version of MacOS, that happens to have Unix under the hood to make things work more smoothly. (Before I get accused of parochialism: I'm the treasurer of the NLUUG, the dutch sister of Usenix, and I've been using unix happily for the last 24 years!) Viewing OSX as basically a Mac leads to a number of observations (fire away!): - Most users will not want to know about the shell. They will most definitely not want to know about the developer tool CD. - This is probably also true for a large number of Python users. The number of people on this list who have CodeWarrior can be counted on the fingers of 1 or 2 hands. In the time when the standard Mac developer tools were free (MPW) this was also true, so cost is not the only factor. - Mac users expect smooth and troublefree installation and de-installation. - Mac users expect double-click, drag and drop and all that jazz. These observations lead me to think that the standard Python install for MacOSX should be binary and as self-contained as possible, like MacPython is today. An added case for the framework solution is that I see no clear way to get MacPython-style applet support to MacOSX, at least not easily. Applets are essential in a drag and drop world, in my opinion, because it's the only reasonable way to get file arguments to your script. An option that I'd like to explore is to put the framework into the SharedFrameworks of the (to be implemented) Python.app. This might give the advantages without the disadvantages. But Apple's Inside MacOSX has a quick paragraph on shared frameworks where they mumble about a system-wide registry and automatic version tracking and sharing and then quickly moves on to a more safe subject without providing any of the details. Does anyone know more details? > This would be in keeping with guidelines from Apple, which recommend > compiling legacy code as is. Neither TCL nor PERL is a framework. I'm not sure about how Perl is used mainly on the Mac, but I know that Tcl/Tk is in a very sorry state. As far as I know people basically use it to run scripts that were ported over from unix under wish. No toolbox interfaces (a minimal quicktime and applescript one aside), no other mac integration, etc. They have droplets, but they require ResEdit to create last time I looked. You wouldn't stand a chance trying to develop something like GRiNS or Zope in Tcl on the mac. > There's > a reason for this. > > A non-standard configuration is just asking for trouble with third party > code and should be avoided if at all possible. But don't forget that the framework is not a non-standard configuration! It is a perfectly normal Python installation only it happens to live in a very far away place. What is installed at the bottom of the framework jungle is 100% run of the mill, and distutils has absolutely no problems with it (expect for a bug, which I'll address in another mail). > For example, I have code that includes Python headers. Using the framework, > I need to change all my code from e.g. > > #include > > to > > #include Hmm. On the one hand I could say "No, you don't" because distutils will take care of adding sys.prefix+'/include/python2.2' to your search path. On the other hand people could be tempted (if they have no previous unix/python background) to use bare Project Builder and they would indeed start using Python/Python.h paths. Will we be able to steer people writing extensions to use distutils, that's the question, I guess... Hmm, we could (evil grin) not put the Headers symlink in the framework, maybe? > And then I need to add /Library/Frameworks as a framework search path. > Alternatively, I can ignore the framework and change things to use the > include path > > /Library/Frameworks/Python.framework/Headers Again, I don't really think so. Distutils handles this for you, and if you do it yourself you also have to set an include path, Python can live anywhere. On my SGI at work it lives happily in /ufs/jack/src/python/built-and-installed, and if you use the SGI supplied installer it will live in /usr/freeware. There's nothing magic about /usr/local, except that it's the default. I'll skip the rest of the points, because i think I've basically addressed them (but feel free to bring them up again if you think I haven't, or if I've missed the point). > p.s. The "Headers" link in /Library/Frameworks/Python.framework is bad. Thanks, I'll look at it. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Fri Aug 17 23:54:41 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sat, 18 Aug 2001 00:54:41 +0200 Subject: [Pythonmac-SIG] Python Framework In-Reply-To: Message by William Noon , Fri, 17 Aug 2001 13:46:30 -0400 , <200108171746.NAA20894@snow.cit.cornell.edu> Message-ID: <20010817225447.25FBA162E09@oratrix.oratrix.nl> Recently, William Noon said: > Jack -- I didn't do a 'make frameworkinstall'. After zapping the > /Library/Frameworks/Python.... tree and making appropriately, all the > symbolic links were there. When the dust settles, if the user selected > --with-framework, the 'install' target should do the 'frameworkinstall' > stuff since it is halfway there already. Are you really sure? I just zapped everything, rebuilt, and did a "make install" (not a frameworkinstall) and for me no symlinks were created, just a "normal" Python installation in /Library/Frameworks/Python.framework/Versions/2.2/ . Could this be an effect of your Makefile.pre.in mods? > Appended are a couple of patches to getpath.c and Makefile.pre.in that > fix this and make a couple of other changes. I want to have a look into this, or maybe someone in the know can provide some clues. The original NeXT code explicitly set progpath to point to the shared lib. It could be that that is because the code predates sys.executable but I'd have to check. > Since the framework is already > versioned, the Makefile will create a hardlink from python2.2.exe to python > in the ...Versions/2.2/bin directory. getpath.c doesn't know about > $(EXE). The .exe extension was only needed to get around the case insensitiv > e > problems in the build directory anyway. What I'd like is to use the silly extension only in the build directory. That would require a $(BEXE) that is set to ".exe" on OSX (automatically, without the --with-ext option) and to $(EXE) on other machines. But it needs a bit of looking into to see which $(EXT) would have to be replaced by $(BEXT). If anyone feel likes doing the work just put a patch into the sourceforge patchmgr and assign it to me. > When an .app wrapper is done, we will need to distinguish between these two > binaries. I did a quick scan for sys.executable in the Python tree, and except for the references that were (a) wrong or (b) not applicable all but one reference used it to build something to pass to os.system(). So in the .app case we should either have it point to the application within the .app bundle (if that accepts command line args) or to the one in the framework bundle (as your fix does). > I also make a link from the binary to /usr/local/bin/python$(VERSION) so > it will show up in the path. Your the Nth person suggesting this, and I'm somehow a bit reluctant to hard-code a /usr/local/bin path into the Makefile. For one, the current config process allows you to use "configure --enable-framework=/Users/jack/Frameworks" if you don't have admin privileges and everything will work fine. But I also don't know another solution. Folks: can you please come up with ideas, or tap me on the shoulder and say "Nah, Jack, don't worry, put the hard pathnames in and we'll defend you if the Big Bad BDFL comes raining fire and brimstone on you"? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Fri Aug 17 23:58:58 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sat, 18 Aug 2001 00:58:58 +0200 Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: Message by Nathan Heagy , Fri, 17 Aug 2001 16:05:45 -0600 (CST) , Message-ID: <20010817225903.92023162E09@oratrix.oratrix.nl> Recently, Nathan Heagy said: > I don't consider Darwin/OS X to be POSIX compliant. There is lots of stuff > missing. ??!? What is missing, then? I don't know Posix to the letter (especially not the newer incarnations) but I have yet to come across missing features... -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From sdm7g@Virginia.EDU Sat Aug 18 00:12:11 2001 From: sdm7g@Virginia.EDU (Steven D. Majewski) Date: Fri, 17 Aug 2001 19:12:11 -0400 (EDT) Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: <20010817225903.92023162E09@oratrix.oratrix.nl> Message-ID: On Sat, 18 Aug 2001, Jack Jansen wrote: > > Recently, Nathan Heagy said: > > I don't consider Darwin/OS X to be POSIX compliant. There is lots of stuff > > missing. > > ??!? What is missing, then? I don't know Posix to the letter > (especially not the newer incarnations) but I have yet to come across > missing features... ... and last I heard, Apple's position was that Posix complaince was a goal, but they were not going to go thru the certification process (Unless perhaps they ran into a potential big customer who required that particular checkoff). -- Steve From jwblist@olympus.net Sat Aug 18 01:46:28 2001 From: jwblist@olympus.net (John W Baxter) Date: Fri, 17 Aug 2001 17:46:28 -0700 Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: <20010817223104.4EB51162E09@oratrix.oratrix.nl> References: <20010817223104.4EB51162E09@oratrix.oratrix.nl> Message-ID: At the moment, I think I feel this way: If I want a "straight" Python installation in Mac OS X, I'll install one. (In fact I have, but it's only at Python 2.1 presently.) Works fine for my straight Python needs. (I don't do GUI stuff in Python, on our work machines, since we don't run X except to serve the physical consoles now and then...and I'm at the slow end of a 56K frame connection to work anyhow.) If I want MacPython (after waiting for the dual processor issue to be solved) in Mac OS X, I'd like 1. a simple drag and drop installation 2. to have it stay out of the way of the command line or "straight" version. At the same time, I recognize that others' needs differ. --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From bfancher@mac.com Sat Aug 18 03:01:34 2001 From: bfancher@mac.com (bill fancher) Date: Fri, 17 Aug 2001 19:01:34 -0700 Subject: [Pythonmac-SIG] OSA Python (now with Cocoa) Message-ID: <200108180201.TAA25024@smtpout.mac.com> I guess I should toss this into the mix, as it bears on a number of topics recently discussed. I've got an OSA component for Python that's reasonably functional. It's resting at the moment, in anticipation of bug fixes in Mac OS X 10.1. It uses the standard Python distribution compiled as a MachO shared library (using Tony Lownds' dylib patch.) It lets you to edit, run, and "debug" Python scripts in Apple's Script Editor, or any other OSA compliant editor that might come down the pike. It currently adds one built-in function, "App", which returns built-on-the-fly application proxies for IAC. E.g., to have Finder rename a folder: App('Finder').Folder[14].Name = 'NewFolderName' You can use StandardAdditions.osax (or any other scripting addition you might run across): r = App().Display_dialog('Hello, World', Buttons = ('B1', 'B2')) App().Say( 'You chose ' + r.Button_returned ) This provides a bit of easy UI and access to a variety of Mac system services on a fairly vanilla install (Unix distribution + Tony's patch + OSA component). Scripts can be saved from Script Editor as double-clickable applets or droplets. OSA Python can be used in most situations where AppleScript can be used. For instance, you can run Python scripts from application script menus. An unreleased version, running on Mac OS 9.x, allowed Python scripts to be attached, e.g., to Hypercard objects and to send and receive Hypertalk messages. Unfortunately, there are, at present, no applications I'm aware of that support attached scripts under OS X. Presumably this will "just work" when attachable apps become available. Maybe Folder Actions will return soon. Once Apple fixes StandardAdditions.osax, you'll be able to call AppleScript, JavaScript or any other OSA compliant language from Python and vice versa. Again, this was a working feature on 9.x. Additionally, as I've recently discovered, the PyObjC module works with OSA Python (though not without a few quirks). This means you can, in theory at least, create double-clickable Python apps with arbitrary UI. You can get a peek at the Mac OS 9.x version that was ALMOST released at . Many of the specifics mentioned there are "no longer operational", as the last Bush administration used to say, and a number of features have been added, most notably IAC. (BTW, the download link there is dead.) So, it's still something of a toy, there are bugs that won't get fixed right away, you need to get and apply Tony's patch and then build the standard Python distribution, the docs are non-existent, script recording doesn't work yet, and the source code is still not ready for prime time. That being said, if anyone's interested in a binary copy of the component and maybe some example scripts in exchange for feedback, please contact me off-list. -- bill 'Truth unfolds in time through a communal process.' - CQ From nathan@vividworks.com Sat Aug 18 06:28:12 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Fri, 17 Aug 2001 23:28:12 -0600 (CST) Subject: [Pythonmac-SIG] Framework considered harmful In-Reply-To: <20010817225903.92023162E09@oratrix.oratrix.nl> Message-ID: Well adduser and moduser and the rest... a POSIX-compliant cp/mv command (this is being worked on) /proc, IIRC nathan On Sat, 18 Aug 2001, Jack Jansen wrote: > > Recently, Nathan Heagy said: > > I don't consider Darwin/OS X to be POSIX compliant. There is lots of stuff > > missing. > > ??!? What is missing, then? I don't know Posix to the letter > (especially not the newer incarnations) but I have yet to come across > missing features... > -- > Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ > Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ > www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm > From draayer@surfglobal.net Sat Aug 18 21:06:54 2001 From: draayer@surfglobal.net (Dean & Yang Draayer) Date: Sat, 18 Aug 2001 16:06:54 -0400 Subject: [Pythonmac-SIG] IDE error when closing stderr Message-ID: While working in the IDE's interpreter window, I accidently closed sys.stderr. I then repeatedly received a traceback (I think it was a TextWidget (?) not having a _bindings (?) attribute) - when I tried closing the traceback window, it just pops right back up again. I had to Cmd-Opt-Esc to get out of the IDE. Dean From steve@spvi.com Sun Aug 19 02:43:21 2001 From: steve@spvi.com (Steve Spicklemire) Date: Sat, 18 Aug 2001 20:43:21 -0500 Subject: [Pythonmac-SIG] Needed change configure to build python on Puma In-Reply-To: Message-ID: <925FA37D-9443-11D5-AA4A-0050E480B13C@spvi.com> FYI.. if there are any other folks out there getting Puma, I discovered that you need to change the configure script to get python (unix) to build with Apple's updated tools. They've changed default dynamic linking a bit (from flat_namespace to "two-level-namespace") anyway.. if you just change the line in configure that sets ld's flags for darwin from: -bundle -undefined suppress to -flat_namespace -bundle -undefined suppress it builds again. take care, -steve From ybenita@mac.com Sun Aug 19 08:55:10 2001 From: ybenita@mac.com (Yair Benita) Date: Sun, 19 Aug 2001 09:55:10 +0200 Subject: [Pythonmac-SIG] Tkinter in python 2.1.1 Message-ID: Friday I mentioned the problem of importing Tkinter in python 2.1. I got an error: ImportError: No module named Tkinter. I am running it on a Dual processor G4 with carbon python 2.1 under OS 9.1. On my home computer (single processor G4) the error is(for both versions- 2.1 and 2.1.1): ImportError: Tkinter not supported under Carbon (yet). I still have to test the dual processor G4 with the classic python. Does python have known problems with dual processor G4 also under OS 9.1? Yair -- Yair Benita Pharmaceutical Proteomics Utrecht University Netherlands From jack@oratrix.nl Sun Aug 19 20:46:36 2001 From: jack@oratrix.nl (Jack Jansen) Date: Sun, 19 Aug 2001 21:46:36 +0200 Subject: [Pythonmac-SIG] Tkinter in python 2.1.1 In-Reply-To: Message by Yair Benita , Sun, 19 Aug 2001 09:55:10 +0200 , Message-ID: <20010819194641.915B8162E09@oratrix.oratrix.nl> Recently, Yair Benita said: > Does python have known problems with dual processor G4 also under OS 9.1? As far as I know there should be no problems there. But that is mainly because Python, like 99% of the other MacOS9 apps, basically ignores the second processor:-) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Sun Aug 19 23:18:24 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 20 Aug 2001 00:18:24 +0200 Subject: [Pythonmac-SIG] CVS MacPython users - beware! Message-ID: <20010819221829.DD76B162E09@oratrix.oratrix.nl> People using/building MacPython from the CVS repository should take note that I've started on putting all the toolbox modules into a Carbon package. When I've finished checking stuff in everything should work again, but you may have to discard your preference file and rebuild the world. All toolbox modules are now in a package Carbon, which lives in :Mac:Lib. There is a new "flat" folder :Mac:Lib:lib-compat which does te right thing if you import the old names (i.e. the Res.py there contains simply "from Carbon.Res import *"). All other dynamic modules live in :Lib:lib-dynload, as on unix-Pythons. :Mac:Plugins is gone. So is :Mac:Lib:lib-toolbox. The non-generated files and WASTEconst.py (for which I had no better place) have moved to :Mac:Lib, the toolbox constant modules have moved to the Carbon package. Don't try bgen yet (hahahaha:-) the paths haven't been updated. Building should work fine. Just: I've had to temporarily disable the import hook in the IDE, it failed. Could you have a look at this, please? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From just@letterror.com Mon Aug 20 07:44:08 2001 From: just@letterror.com (Just van Rossum) Date: Mon, 20 Aug 2001 08:44:08 +0200 Subject: [Pythonmac-SIG] CVS MacPython users - beware! In-Reply-To: <20010819221829.DD76B162E09@oratrix.oratrix.nl> Message-ID: <20010820084412-r01010700-efadd343-0910-010c@10.0.0.23> Jack Jansen wrote: > Just: I've had to temporarily disable the import hook in the IDE, it > failed. Could you have a look at this, please? I will. I'm not sure if I get to it before I go on holiday, so please bear with me... Just From doug@sonosphere.com Mon Aug 20 14:41:22 2001 From: doug@sonosphere.com (Doug Wyatt) Date: Mon, 20 Aug 2001 06:41:22 -0700 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files In-Reply-To: <20010816205550.172FA14B630@oratrix.oratrix.nl> Message-ID: <0AED8C34-9571-11D5-B598-00039301A6E6@apple.com> On Thursday, August 16, 2001, at 01:55 , Jack Jansen wrote: > This isn't going o work for the .rsrc files that live elsewhere in the > tree, though, and that belong to applets and scripts. > > If people can let their thoughs go over a solution that > 1) works fine with cvs, both unix and Mac variants Derez-ing one's resource files into .r files is a fine way to get them into cvs in a manageable form (i.e. text). > 2) needs little change in the code of the scripts using the resource > files (although something like > if Res.GetResource('xxxx', xx): > pass # we're running as an applet > elif MacOS.runtimemodel == 'macho': > Res.OpenResourceFileDataForkOrSo('xxxx.df.rsrc') > else: > Res.OpenResFile('xxxx.rsrc') > is probably okay. > 3) has the datafork-based resource files survive tar I don't know why a data fork resource file would get mangled by tar ... Doug -- Doug Wyatt work: dwyatt@apple.com (CoreAudio) personal: doug@sonosphere.com http://www.sonosphere.com "Don't negate, create." -- dsw From jack@oratrix.nl Mon Aug 20 16:31:10 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 20 Aug 2001 17:31:10 +0200 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files In-Reply-To: Message by Doug Wyatt , Mon, 20 Aug 2001 06:41:22 -0700 , <0AED8C34-9571-11D5-B598-00039301A6E6@apple.com> Message-ID: <20010820153111.53BF8303181@snelboot.oratrix.nl> > On Thursday, August 16, 2001, at 01:55 , Jack Jansen wrote: > > This isn't going o work for the .rsrc files that live elsewhere in the > > tree, though, and that belong to applets and scripts. > > > > If people can let their thoughs go over a solution that > > 1) works fine with cvs, both unix and Mac variants > > Derez-ing one's resource files into .r files is a fine way to get them > into cvs in a manageable form (i.e. text). Right, but .r form doesn't satisfy requirement 2, that I can easily open the files at runtime. At least: I don't know of an easy way to turn .r files back into resource files without external programs and what-have-you. > > 3) has the datafork-based resource files survive tar > > I don't know why a data fork resource file would get mangled by tar ... Of course, silly me. So there's only 2 conditions. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From doug@sonosphere.com Mon Aug 20 19:23:12 2001 From: doug@sonosphere.com (Doug Wyatt) Date: Mon, 20 Aug 2001 11:23:12 -0700 Subject: [Pythonmac-SIG] CVS repository and :Mac:Build:xxxx.xml files In-Reply-To: <20010820153111.53BF8303181@snelboot.oratrix.nl> Message-ID: <6A1B412C-9598-11D5-B04D-00039301A6E6@apple.com> On Monday, August 20, 2001, at 08:31 , Jack Jansen wrote: >> On Thursday, August 16, 2001, at 01:55 , Jack Jansen wrote: >>> This isn't going o work for the .rsrc files that live elsewhere in the >>> tree, though, and that belong to applets and scripts. >>> >>> If people can let their thoughs go over a solution that >>> 1) works fine with cvs, both unix and Mac variants >> >> Derez-ing one's resource files into .r files is a fine way to get them >> into cvs in a manageable form (i.e. text). > > Right, but .r form doesn't satisfy requirement 2, that I can easily > open the > files at runtime. At least: I don't know of an easy way to turn .r > files back > into resource files without external programs and what-have-you. OK, I guess I was just advocating this because it turns out to be much easier to solve CVS merge conflicts on text files than binary, and your repository tends to not bloat as much with text files. You would have to run Rez as part of the build process, not a big deal because CodeWarrior has a Rez compiler, no? On X, Rez is part of the standard developer package and does have an option to create data-fork-based resource files. Doug -- Doug Wyatt work: dwyatt@apple.com (CoreAudio) personal: doug@sonosphere.com http://www.sonosphere.com "When you discard arrogance, complexity, and a few other things that get in the way, sooner or later you will discover that simple, childlike, and mysterious secret known to those of the Uncarved Block: Life is Fun." -- The Tao of Pooh From lhudson@geminidataloggers.com Tue Aug 21 09:35:37 2001 From: lhudson@geminidataloggers.com (Lawrence Hudson) Date: Tue, 21 Aug 2001 09:35:37 +0100 Subject: [Pythonmac-SIG] ctb module question Message-ID: <9FC702711D39D3118D4900902778ADC8376D85@jupiter.internal.geminidataloggers.com> Hello all, I have a question about serial comms using the ctb module. The documentation on connection objects (http://www.python.org/doc/current/mac/connection-object.html) indicates that timeout values are in seconds. Apple's documentation on the communications toolbox (PDF at http://developer.apple.com/techpubs/macos8/NetworkCommSvcs/CommToolboxUtilit ies/commtoolbox.html) indicates timeouts are in ticks. I can find no translations from seconds to ticks in the source and no native function to do it? I am very new to Mac development (and Macs at all, to be honest) so I may well have missed something obvious! A little script I used to investigate: import time, MacOS import ctb ticks_per_ms = None def ticks_per_millisecond(): global ticks_per_ms if not ticks_per_ms: start = MacOS.GetTicks() time.sleep(1.0) ticks_per_ms = (MacOS.GetTicks()-start) / 1000.0 return ticks_per_ms def timed_read(port, timeout): port.Idle() start = time.time() port.Read(1024, ctb.cmData, timeout*ticks_per_millisecond()) return time.time()-start p = ctb.CMNew('Serial Tool', None) port_name = 'Printer Port USB' baud = 1200 config = 'Baud %d Databits 8 Parity None StopBits 1 Port "%s" Handshake None HoldConnection False RemindDisconnect False' % (baud,port_name,) p.Open(10) p.SetConfig(config) p.Idle() print '%r ticks per millisecond'%ticks_per_millisecond() print 1.0, timed_read(p, 1000) print 2.0, timed_read(p, 2000) print 5.0, timed_read(p, 5000) p.Close(-1,1) Output when run on my iMac (MacOS 9.0.4) 0.060999999999999999 ticks per millisecond 1.0 1.02847003937 2.0 2.04259109497 5.0 5.08227872849 Thanks, Lawrence Hudson From jhrsn@pitt.edu Tue Aug 21 21:27:00 2001 From: jhrsn@pitt.edu (Jim Harrison) Date: Tue, 21 Aug 2001 16:27:00 -0400 Subject: [Pythonmac-SIG] Java-Python Extension Message-ID: Here's something that might have implications for cross-platform GUI development in Python (something recently discussed on the list)... "JPE is a seamless, complete, and efficient integration of Java and standard Python (C Python). JPE provides Java access to Python's native extension, and Java's Swing to Python developers." http://sourceforge.net/projects/jpe/ Jim Harrison Univ. of Pittsburgh From nathan@vividworks.com Tue Aug 21 22:00:40 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Tue, 21 Aug 2001 15:00:40 -0600 (CST) Subject: [Pythonmac-SIG] Java-Python Extension In-Reply-To: Message-ID: Well I wonder why they didn't just use Jython... Nathan On Tue, 21 Aug 2001, Jim Harrison wrote: > Here's something that might have implications for cross-platform GUI > development in Python (something recently discussed on the list)... > > "JPE is a seamless, complete, and efficient integration of Java and standard > Python (C Python). JPE provides Java access to Python's native extension, > and Java's Swing to Python developers." > > http://sourceforge.net/projects/jpe/ > > Jim Harrison > Univ. of Pittsburgh > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From jack@oratrix.nl Tue Aug 21 22:41:31 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 21 Aug 2001 23:41:31 +0200 Subject: [Pythonmac-SIG] Java-Python Extension In-Reply-To: Message by Jim Harrison , Tue, 21 Aug 2001 16:27:00 -0400 , Message-ID: <20010821214136.3C982162E06@oratrix.oratrix.nl> Python-dev-ils: this just came in on the Pythonmac-SIG. Did anyone have a look at this already? Recently, Jim Harrison said: > Here's something that might have implications for cross-platform GUI > development in Python (something recently discussed on the list)... > > "JPE is a seamless, complete, and efficient integration of Java and standard > Python (C Python). JPE provides Java access to Python's native extension, > and Java's Swing to Python developers." > > http://sourceforge.net/projects/jpe/ The mind boggles... This person (at least: there seems to be only one person in the developer group right now) has apparently hung a complete Python interpreter inside a JVM and written all the glue code. I have no time to look into this further, but from a quick inspection of the CVS tree it looks as though it it reasonably complete. It definitely looks a lot better than many of the vaporware 1-person projects you can find on sourceforge... -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From hummelsean@mac.com Wed Aug 22 07:08:07 2001 From: hummelsean@mac.com (Sean Hummel) Date: Tue, 21 Aug 2001 23:08:07 -0700 Subject: [Pythonmac-SIG] ctb module question In-Reply-To: <9FC702711D39D3118D4900902778ADC8376D85@jupiter.internal.geminidataloggers.com> Message-ID: Ticks are 1/60th of a second. No matter which Macintosh you are on, if you are using Classic OS. > From: Lawrence Hudson > Date: Tue, 21 Aug 2001 09:35:37 +0100 > To: "Pythonmac-SIG (E-mail)" > Subject: [Pythonmac-SIG] ctb module question > > Hello all, > > I have a question about serial comms using the ctb module. The > documentation on connection objects > (http://www.python.org/doc/current/mac/connection-object.html) indicates > that timeout values are in seconds. > Apple's documentation on the communications toolbox (PDF at > http://developer.apple.com/techpubs/macos8/NetworkCommSvcs/CommToolboxUtilit > ies/commtoolbox.html) indicates timeouts are in ticks. I can find no > translations from seconds to ticks in the source and no native function to > do it? > > I am very new to Mac development (and Macs at all, to be honest) so I may > well have missed something obvious! > > A little script I used to investigate: > > > import time, MacOS > import ctb > > ticks_per_ms = None > > def ticks_per_millisecond(): > global ticks_per_ms > if not ticks_per_ms: > start = MacOS.GetTicks() > time.sleep(1.0) > ticks_per_ms = (MacOS.GetTicks()-start) / 1000.0 > return ticks_per_ms > > def timed_read(port, timeout): > port.Idle() > start = time.time() > port.Read(1024, ctb.cmData, timeout*ticks_per_millisecond()) > return time.time()-start > > p = ctb.CMNew('Serial Tool', None) > > port_name = 'Printer Port USB' > baud = 1200 > config = 'Baud %d Databits 8 Parity None StopBits 1 Port "%s" Handshake None > HoldConnection False RemindDisconnect False' % (baud,port_name,) > > p.Open(10) > p.SetConfig(config) > p.Idle() > > print '%r ticks per millisecond'%ticks_per_millisecond() > print 1.0, timed_read(p, 1000) > print 2.0, timed_read(p, 2000) > print 5.0, timed_read(p, 5000) > > p.Close(-1,1) > > > Output when run on my iMac (MacOS 9.0.4) > > 0.060999999999999999 ticks per millisecond > 1.0 1.02847003937 > 2.0 2.04259109497 > 5.0 5.08227872849 > > > Thanks, > Lawrence Hudson > > > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig From chrishbarker@home.net Wed Aug 22 19:03:58 2001 From: chrishbarker@home.net (Chris Barker) Date: Wed, 22 Aug 2001 11:03:58 -0700 Subject: [Pythonmac-SIG] Java-Python Extension References: Message-ID: <3B83F40E.501B99EB@home.net> Nathan Heagy wrote: > Well I wonder why they didn't just use Jython... Because: > > JPE provides Java access to Python's native extension, This means that you get all of CPython's compiled extensions (I'm assuming that that would include NumPy, for example, which is one reason Jython is simply not feasable for manyh of us that work with numbers) It sounds like you get all the advantages of both CPython and Jython, except being able to run your code on a JVM. Since "write once, run everywhere" is still somewhat ellusive, this seems like a pretty darn nifty option!! -Chris -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------ From sburr@home.com Thu Aug 23 05:57:16 2001 From: sburr@home.com (Steven Burr) Date: Wed, 22 Aug 2001 21:57:16 -0700 Subject: [Pythonmac-SIG] Python 2.2a2 Breaks Tkinter in XDarwin--My Fix Message-ID: <20010823045418.RHPM3584.femail45.sdc1.sfba.home.com@localhost> I've been running Tkinter in XDarwin with Python 2.1. This evening I downloaded and installed the second alpha of 2.2. When I tried to run one of my Tkinter apps, I got an error message saying that Tkinter.py had attempted to call SchedParams from the module MacOS, but that the module had no such attribute. Tkinter.py binds MacOS to _MacOS. The __init__ method of Tk() attempts to call SchedParams if _MacOS evaluates to true (line 1483 of my version of Tkinter.py). I was able to fix my particular problem by commenting out the section of Tkinter.py that imports MacOS and setting _MacOS to None. I thought this was a pretty safe fix, since on my set up Tkinter is using the X Windows API and not OS X or OS 9. But please let me know if this is a mistake. Just wanted to pass this along in case anyone else encounters a similar problem and to let Jack and the other Python for Mac developers know about it. From jack@oratrix.nl Thu Aug 23 14:19:35 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 23 Aug 2001 15:19:35 +0200 Subject: [Pythonmac-SIG] Python 2.2a2 Breaks Tkinter in XDarwin--My Fix In-Reply-To: Message by Steven Burr , Wed, 22 Aug 2001 21:57:16 -0700 , <20010823045418.RHPM3584.femail45.sdc1.sfba.home.com@localhost> Message-ID: <20010823131940.2B66D14B630@oratrix.oratrix.nl> The fix is easy (and I've put it in the CVS repository already). Replace the line if _MacOS: by if _MacOS and hasattr(MacOS, 'SchedParams'): The call is only needed when using Tkinter from MacPython, but OSX unix-Python now also has the MacOS module. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From H.Nowak@css.nl Thu Aug 23 15:33:22 2001 From: H.Nowak@css.nl (Hans Nowak) Date: Thu, 23 Aug 2001 16:33:22 +0200 Subject: [Pythonmac-SIG] Python on old Mac Message-ID: Howdy y'all, Some time ago, while being in the US, I impulsively bought an old Mac. Chances are that I will relocate to the US Real Soon Now, and I probably will have no computer access there for a while, except for this machine. I obviously would like to run Python on it. Clever as I am, I forgot to write down the specs, so I can only guess what type of Mac it is... I'm pretty sure it's a Performa, 68LC040, but I don't know what OS runs on it (my guess: 7.x?). Since I have never worked with a Macintosh before, I don't know which Python versions work on this one. I think that 2.0 and higher will not work (PPC only?), but what about 1.5.2? Regards, -- Hans Nowak (h.nowak@css.nl) CSS Software Development From jack@oratrix.nl Fri Aug 24 09:12:25 2001 From: jack@oratrix.nl (Jack Jansen) Date: Fri, 24 Aug 2001 10:12:25 +0200 Subject: [Pythonmac-SIG] Python on old Mac In-Reply-To: Message by "Hans Nowak" , Thu, 23 Aug 2001 16:33:22 +0200 , Message-ID: <20010824081225.90DA2303181@snelboot.oratrix.nl> > I obviously would like to run Python on it. Clever as I am, I forgot to write > down the specs, so I can only guess what type of Mac it is... I'm pretty sure > it's a Performa, 68LC040, but I don't know what OS runs on it (my guess: > 7.x?). Since I have never worked with a Macintosh before, I don't know which > Python versions work on this one. I think that 2.0 and higher will not work > (PPC only?), but what about 1.5.2? 1.5.2 should run fine, probably from 7.1 onwards. If this is indeed a 68040 it's one of the latest Performas, so you can probably go as far as MacOS 7.5 without problems. Maybe even further, I think 7.6 dropped only support for the Plus/Classic style 68000 machines, but I guess that's about it. Or are there 680X0 macchines that can run MacOS8, does anyone know? With a lean-and-mean webbrowser and mailreader this is still a pretty useable machine, I would guess. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From python-te@mcwords.com Fri Aug 24 10:07:09 2001 From: python-te@mcwords.com (Martin C Brown) Date: Fri, 24 Aug 2001 10:07:09 +0100 Subject: [Pythonmac-SIG] Python on old Mac In-Reply-To: <20010824081225.90DA2303181@snelboot.oratrix.nl> Message-ID: > 1.5.2 should run fine, probably from 7.1 onwards. If this is indeed a 68040 > it's one of the latest Performas, so you can probably go as far as MacOS 7.5 > without problems. Maybe even further, I think 7.6 dropped only support for the > Plus/Classic style 68000 machines, but I guess that's about it. Or are there > 680X0 macchines that can run MacOS8, does anyone know? You should be able to run 8.1 on 040 based Performas and Quadras. 68K support was only dropped completely after 8.1. 8.1 is reasonably fast on 040 Macs and definitely an improvement over earlier versions. > With a lean-and-mean webbrowser and mailreader this is still a pretty useable > machine, I would guess. Actually, the real limit becomes memory, particularly on Performas, rather than power. But don't expect to run QuickTime movies full screen ;) MC -- Martin 'MC' Brown, mc@mcwords.com http://www.mcwords.com Writer, Author, Consultant 'Life is pain, anyone who says differently is selling something' From Shelley@shells.demon.co.uk Fri Aug 24 17:13:34 2001 From: Shelley@shells.demon.co.uk (Shelley Walsh) Date: Fri, 24 Aug 2001 17:13:34 +0100 Subject: [Pythonmac-SIG] Number format in IDE Message-ID: Is there any way to change the default number format in the IDE? It is disturbing to show students x=5.1, x+2=7.00000000000000000000012 or some such thing. Is it possible to set the default number of decimal places to something like 4, so that things look nicer when using Python as a calculator? -- Shelley Walsh Shelley@shells.demon.co.uk http://homepage.mac.com/shelleywalsh From csmith@blakeschool.org Sat Aug 25 22:50:21 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Sat, 25 Aug 2001 16:50:21 -0500 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: References: Message-ID: > >Is there any way to change the default number format in the IDE? It is >disturbing to show students x=5.1, x+2=7.00000000000000000000012 or some >such thing. Is it possible to set the default number of decimal places to >something like 4, so that things look nicer when using Python as a >calculator? >-- >Shelley Walsh >Shelley@shells.demon.co.uk >http://homepage.mac.com/shelleywalsh > Hmm... I obtain the following results which show that STR() is a kinder presenter than `...` when it comes to showing the numbers. If the IDE could be made to use STR instead of REPR maybe this would help. I don't know how to do that, however. >>> 5.1+2 7.0999999999999996 >>> print str(5.1+2) 7.1 >>> print `5.1+2` 7.0999999999999996 >>> /c From jwblist@olympus.net Sun Aug 26 07:11:54 2001 From: jwblist@olympus.net (John W Baxter) Date: Sat, 25 Aug 2001 23:11:54 -0700 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: References: Message-ID: At 16:50 -0500 8/25/2001, Christopher Smith wrote: >Hmm... I obtain the following results which show that STR() is >a kinder presenter than `...` when it comes to showing the numbers. >If the IDE could be made to use STR instead of REPR maybe this would >help. I don't know how to do that, however. The quick easy way is to revert to an older version of Python. A version old enough to lie to the user about these things. That may not be what you want to do, for other reasons, of course...like teaching the new features. Or teaching the 50 year old fact that floating point can be annoying. --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From jbradley@whiplashmedia.com Sun Aug 26 18:49:41 2001 From: jbradley@whiplashmedia.com (Jon Bradley) Date: Sun, 26 Aug 2001 12:49:41 -0500 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message-ID: Even when using float, the actual representation should be followed by a bunch of zeros - no matter what number represetation is being used. so, 5.1 + 2 = 7.1000000000000000000000. It should not equal anything else, that would be a direct result of incorrect calculation of the number on the languages part. Maybe Jack can take a look at this and get it fixed - or I can make an effort. :) I don't mind the multiple places, since I end up using a custom function to round off to a certain digit anyhow. But, showing the following: >>>> 5.1+2 > 7.0999999999999996 or... >>>> print `5.1+2` > 7.0999999999999996 That's just plain inaccurate. For scientific purposes this is really bad - and should be addressed. Out of curiousity, are these numbers being calculated through the use of NumPy or the default python implementation (I think Numerics are now included in part with the distribution, but I may be wrong). Anyone? Maybe it's possible that, if the default is float, and you type something like x=5.1, the language should automatically convert it to 5.1000000000000. When adding 2 to that, it should then be x + 2 (user types), language sees it as 5.1000000000000 + 2.0000000000000 = blah blah. Then write a function that strips it to a certain amount of digits, hoping that all you're losing in the conversion is a bunch of zeros. Don't know. I'm a farily new user to Python in general, but this does seem very odd to me. Jon Bradley From csmith@blakeschool.org Sun Aug 26 18:23:35 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Sun, 26 Aug 2001 12:23:35 -0500 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: References: Message-ID: >>Is there any way to change the default number format in the IDE? It is >>disturbing to show students x=5.1, x+2=7.00000000000000000000012 or some >>such thing. Is it possible to set the default number of decimal places to >>something like 4, so that things look nicer when using Python as a >>calculator? >Hmm... I obtain the following results which show that STR() is >a kinder presenter than `...` when it comes to showing the numbers. >If the IDE could be made to use STR instead of REPR maybe this would >help. I don't know how to do that, however. > >>>> 5.1+2 >7.0999999999999996 >>>> print str(5.1+2) >7.1 >>>> print `5.1+2` >7.0999999999999996 >>>> OK, so the fix is to explicitly "print" what you want to see rather than letting Python show you the result: Python 2.1.1 (#97, Aug 2 2001, 21:53:31) [CW PPC GUSI2 THREADS] Type "copyright", "credits" or "license" for more information. >>> x=5.1 >>> y=2 >>> print x+y #this is the explicit print and it looks nice 7.1 >>> x+y #this is NOT an explicit print and is ugly as you note 7.0999999999999996 /c From altis@semi-retired.com Sun Aug 26 19:09:43 2001 From: altis@semi-retired.com (Kevin Altis) Date: Sun, 26 Aug 2001 11:09:43 -0700 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message-ID: You probably want to use string formatting to control the output format. http://www.python.org/doc/current/lib/typesseq-strings.html ka > -----Original Message----- > From: pythonmac-sig-admin@python.org > [mailto:pythonmac-sig-admin@python.org]On Behalf Of Christopher Smith > Sent: Sunday, August 26, 2001 10:24 AM > To: pythonmac-sig@python.org > Subject: [Pythonmac-SIG] Re: Number format in IDE > > > >>Is there any way to change the default number format in the IDE? It is > >>disturbing to show students x=5.1, x+2=7.00000000000000000000012 or some > >>such thing. Is it possible to set the default number of decimal > places to > >>something like 4, so that things look nicer when using Python as a > >>calculator? > > >Hmm... I obtain the following results which show that STR() is > >a kinder presenter than `...` when it comes to showing the numbers. > >If the IDE could be made to use STR instead of REPR maybe this would > >help. I don't know how to do that, however. > > > >>>> 5.1+2 > >7.0999999999999996 > >>>> print str(5.1+2) > >7.1 > >>>> print `5.1+2` > >7.0999999999999996 > >>>> > > OK, so the fix is to explicitly "print" what you want to see > rather than letting Python show you the result: > > Python 2.1.1 (#97, Aug 2 2001, 21:53:31) [CW PPC GUSI2 THREADS] > Type "copyright", "credits" or "license" for more information. > >>> x=5.1 > >>> y=2 > >>> print x+y #this is the explicit print and it looks nice > 7.1 > >>> x+y #this is NOT an explicit print and is ugly as you note > 7.0999999999999996 > > > /c > > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From jwblist@olympus.net Sun Aug 26 19:22:31 2001 From: jwblist@olympus.net (John W Baxter) Date: Sun, 26 Aug 2001 11:22:31 -0700 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: References: Message-ID: At 12:49 -0500 8/26/2001, Jon Bradley wrote: >Even when using float, the actual representation should be followed by a >bunch of zeros - no matter what number represetation is being used. so, 5.1 >+ 2 = 7.1000000000000000000000. It should not equal anything else, that >would be a direct result of incorrect calculation of the number on the >languages part. No...first...all those trailing zeros, if true, would be removed. But more importantly, 5.1 is not exactly representable in binary floating point. (There are other representations in which it is exactly representable: decimal floating point, "rational" (a number containing a numerator and denominator...1 and 10 in this case), etc). The 5 is fine...the .1 is an endless beast. The bit pattern used is the one which comes closest to representing 5.1. That's what I meant before by saying that older Python versions (like 1.5.2) lied about this...they rounded to 13(?) places, in that rounding, 5.1 indeed shows as 5.1). This has nothing to do with the precision of the floating point representation (C's long double can't represent 5.1 either, using 128 bits instead of 64), although whether the representation of 5.1 is too high or too low will vary with precision. Not does it have anything to do with what chip is used (the famous Intel division bug was a different issue). It's inherent in trying to find a summation of selected elements of 1/2, 1/4, 1/8, ... which represents the value. 5.5 is easy...1/2 does the job. 5.25 is easy. 5.1 is impossible. I think it's important to let students know about this annoyance early. For instance, it is almost always an error to compare a floating point result to 0.0...you should test whether the value is 'small enough' instead...where 'small enough' varies with the problem at hand. You may find these annoying as well: >>> .1 + .1 + .1 == .3 0 The sum is almost equal to .3's closest representation, but not quite: >>> .1 + .1 + .1 - .3 5.5511151231257827e-17 >>> 5.1 * 100 509.99999999999994 [These happen to have been run in Python 2.1 as installed by me into Mac OS X from the Unix distribution.] --John -- John Baxter jwblist@olympus.net Port Ludlow, WA, USA From altis@semi-retired.com Sun Aug 26 19:40:08 2001 From: altis@semi-retired.com (Kevin Altis) Date: Sun, 26 Aug 2001 11:40:08 -0700 Subject: [Pythonmac-SIG] Floating Point Arithmetic: Issues and Limitations Message-ID: http://python.sourceforge.net/devel-docs/tut/node14.html ka From Shelley@shells.demon.co.uk Sun Aug 26 21:56:27 2001 From: Shelley@shells.demon.co.uk (Shelley Walsh) Date: Sun, 26 Aug 2001 21:56:27 +0100 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message-ID: on 26/8/01 7:09 pm, Kevin Altis at altis@semi-retired.com wrote: > You probably want to use string formatting to control the output format. > > http://www.python.org/doc/current/lib/typesseq-strings.html Okay, I know about this, but it would be nice if there was a way of setting the output default format, so that when you are using it as a desk calculator it doesn't look icky, and then in another circumstance when you don't want to be "lied to" to be able to change it back. Sure it may be instructive for computer science students to see this sort of thing, but math students have too many other things on their mind. Even $20 calculators can do that with their mode buttons. I can't overwrite the repr function for float class can I? I suppose I could create a subclass of floating point that behaved just like normal floating point, but had a different repr, but still that would be a bit of a pain, because you would have to write the class name every time you used it. -- Shelley Walsh Shelley@shells.demon.co.uk http://homepage.mac.com/shelleywalsh From jacobkm@cats.ucsc.edu Mon Aug 27 01:06:44 2001 From: jacobkm@cats.ucsc.edu (Jacob Kaplan-Moss) Date: Mon, 27 Aug 2001 01:06:44 +0100 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: References: Message-ID: >Okay, I know about this, but it would be nice if there was a way of setting >the output default format, so that when you are using it as a desk >calculator it doesn't look icky, and then in another circumstance when you >don't want to be "lied to" to be able to change it back. Sure it may be >instructive for computer science students to see this sort of thing, but >math students have too many other things on their mind. Even $20 calculators >can do that with their mode buttons. I can't overwrite the repr function for >float class can I? I suppose I could create a subclass of floating point >that behaved just like normal floating point, but had a different repr, but >still that would be a bit of a pain, because you would have to write the >class name every time you used it. One thing to try is sys.displayhook (exists in Python 2.1 and later IIRC). I couldn't find much documentation on the displayhook online; PEP 217 is probably your best bet: http://python.sourceforge.net/peps/pep-0217.html Basically, you assign a function to sys.displayhook and subsequent implicit displays (without an explicit "print", that is) get routed through your new display hook. Be careful: sys.displayhook is also responsible for assigning the value of the last expression to _, so if you forget to do this you may be in trouble. Here's a little interactive playing around I did to try to get what you're looking for: Python 2.1 (#92, Apr 24 2001, 23:59:23) [CW PPC GUSI2 THREADS] on mac Type "copyright", "credits" or "license" for more information. >>> import sys >>> import __builtin__ >>> def mydisplayhook(o): ... if type(o) == type(0.1): ... # print a better looking float ... print str(o) ... # remember to assign to _! ... __builtin__._ = o ... else: ... #use the old displayhook in every other case ... sys.__displayhook__(o) ... >>> x = 5.1 >>> x 5.0999999999999996 >>> sys.displayhook = mydisplayhook >>> x 5.1 >>> # wahoo! Hope that helps! Jacob From jack@oratrix.nl Mon Aug 27 10:07:53 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 27 Aug 2001 11:07:53 +0200 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message by Jacob Kaplan-Moss , Mon, 27 Aug 2001 01:06:44 +0100 , Message-ID: <20010827090753.BB411303181@snelboot.oratrix.nl> I think Jacob's solution is probably the best, provide your own displayhook. You can put it into the IDE plugin folder too. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.oratrix.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jacobkm@cats.ucsc.edu Mon Aug 27 12:41:20 2001 From: jacobkm@cats.ucsc.edu (Jacob Kaplan-Moss) Date: Mon, 27 Aug 2001 12:41:20 +0100 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: <20010827090753.BB411303181@snelboot.oratrix.nl> References: <20010827090753.BB411303181@snelboot.oratrix.nl> Message-ID: At 11:07 AM +0200 8/27/01, Jack Jansen wrote: >I think Jacob's solution is probably the best, provide your own displayhook. >You can put it into the IDE plugin folder too. To follow up on my own suggestion, if I wanted this to be the default behavior, I would put the displayhook stuff in site.py to make sure that it gets loaded each time I run the interpreter/IDE. Jacob From jbradley@whiplashmedia.com Mon Aug 27 18:29:29 2001 From: jbradley@whiplashmedia.com (Jon Bradley) Date: Mon, 27 Aug 2001 13:29:29 -0400 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message-ID: > You may find these annoying as well: > >>>> .1 + .1 + .1 == .3 > 0 > The sum is almost equal to .3's closest representation, but not quite: >>>> .1 + .1 + .1 - .3 > 5.5511151231257827e-17 > >>>> 5.1 * 100 > 509.99999999999994 > > > [These happen to have been run in Python 2.1 as installed by me into Mac OS > X from the Unix distribution.] > > --John John, Good points. Maybe it would be ideal if the calculation were (as in typical calculators) rounded off to a pre-set accuracy. As in your example, 5.xxxxxxxe-17 is well within the limits of pretty much any accuracy that a user would set (or an application would set). Maybe including the ability to set an accuracy level would be an idea? It'd still be nice to have a system that would handle it the right way - taking into consideration that the bit representation is wacked out. I do agree though - this can get really annoying. When working with high-precision numbers in 3d applications, this could wreck havoc on a system where a number that should be really zero (by reality) but isn't because of the bit representation would be rounded accordingly. Then the application wouldn't be left spending processor calls on something it should be disregarding (if that were the case). But, in most 3d applications they do use decimal floating point. I wonder how much aspirin the developer of a radiosity Python implementation (can't remember the name at the moment) took while building his application. :) But, pointing the err out to your students is also a good idea. That way, they'll learn early on the ins and outs of computation on computers. I guess there's something to be said for math 'by hand'. :) It'll always be more accurate than a computer. :) cheers! Jon B. From pecora@anvil.nrl.navy.mil Mon Aug 27 18:53:58 2001 From: pecora@anvil.nrl.navy.mil (Louis M. Pecora) Date: Mon, 27 Aug 2001 13:53:58 -0400 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: References: Message-ID: Jon Bradley wrote: >Even when using float, the actual representation should be followed by a >bunch of zeros - no matter what number represetation is being used. so, 5.1 >+ 2 = 7.1000000000000000000000. It should not equal anything else, that >would be a direct result of incorrect calculation of the number on the >languages part. > >Maybe Jack can take a look at this and get it fixed - or I can make an >effort. :) I don't mind the multiple places, since I end up using a custom >function to round off to a certain digit anyhow. > >But, showing the following: > >>>>> 5.1+2 >> 7.0999999999999996 > >or... > >>>>> print `5.1+2` >> 7.0999999999999996 > >That's just plain inaccurate. For scientific purposes this is really bad - >and should be addressed. Out of curiousity, are these numbers being >calculated through the use of NumPy or the default python implementation (I >think Numerics are now included in part with the distribution, but I may be >wrong). > >Anyone? Maybe it's possible that, if the default is float, and you type >something like x=5.1, the language should automatically convert it to >5.1000000000000. When adding 2 to that, it should then be x + 2 (user >types), language sees it as 5.1000000000000 + 2.0000000000000 = blah blah. >Then write a function that strips it to a certain amount of digits, hoping >that all you're losing in the conversion is a bunch of zeros. > >Don't know. I'm a farily new user to Python in general, but this does seem >very odd to me. > >Jon Bradley I'm not so sure that there's a mathematics problem in the sense you say. Yes, the result is inaccruate, but remember base 10 and binary fractions do not translate back and forth easily since a simple finite decimal (maybe like 0.1) might have an infinite, repeating representation in binary "decimal" form. The computer can only store a finite string of 1's and 0's. How can it guess the remaining (infintely many) unstored values? The real question is what algorithm do you use to deal with that problem. I, personally, don't know, but I do see the problem. I suspect it's a well-known floating-point problem. I think your solution is similar to what is done on some calculators. More decimals are calculated than will be displayed, then some algorithm checks out the extra ones and decides how to round off. Cheers, Lou Pecora From mday@mac.com Mon Aug 27 19:17:18 2001 From: mday@mac.com (Mark Day) Date: Mon, 27 Aug 2001 11:17:18 -0700 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message-ID: On Monday, August 27, 2001, at 10:29 AM, Jon Bradley wrote: > Maybe it would be ideal if the calculation were (as in typical > calculators) rounded off to a pre-set accuracy. and > But, in most 3d applications they > do use decimal floating point. I wonder how much aspirin the developer > of a > radiosity Python implementation (can't remember the name at the moment) > took > while building his application. :) This behavior isn't unique to Python. You'd get exactly the same numeric results in a typical C implementation. Python is just using the C implementation for calculations anyway. The interesting difference is that in C you have to decide in advance how much precision to display (which might not be the same as the precision of the underlying calculation...), where Python's repr function defaults to displaying a lot of digits. Python's print statement does some rounding before it displays a float, but it does not replace the float's value with the rounded value it displays (what you see is *not* what you get!). If you round intermediate results, you limit meaningful precision each time you round. If you do that a lot (eg., in a loop), it can make a dramatic difference in the meaningful precision of the end result. I'd say it's important for relatively new students to understand that the issue exists, and that they may need to use a better controlled numeric implementation in some cases. But you could probably leave more of the details and solutions to a numeric computation class. -Mark From jack@oratrix.nl Mon Aug 27 20:35:48 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 27 Aug 2001 21:35:48 +0200 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message by Jon Bradley , Mon, 27 Aug 2001 13:29:29 -0400 , Message-ID: <20010827193553.82FA1B5E00@oratrix.oratrix.nl> People interested in how Python's number system works may be interested in looking over PEP 228 through PEP 242. Guido and Moshe Zadka are thinking about ways to rework the whole way that Python works with numbers, and these documents are the current thoughts on that. You might be able to give feedback and/or influence the way things move. PEPs (Python Enhancement Proposals) can be found via www.python.org. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jbradley@whiplashmedia.com Mon Aug 27 21:47:32 2001 From: jbradley@whiplashmedia.com (Jon Bradley) Date: Mon, 27 Aug 2001 15:47:32 -0500 Subject: [Pythonmac-SIG] embedding issues In-Reply-To: Message-ID: Anyone have any suggestions to trapping exception calls when Python is embedded? I'm having some serious problems if I try to execute a function or call and object that's not defined (or exists). Presently, the embedded interpreter throws an exception and quits both the application and itself. Any thoughts? Any success stories? Jon From jack@oratrix.nl Mon Aug 27 21:18:18 2001 From: jack@oratrix.nl (Jack Jansen) Date: Mon, 27 Aug 2001 22:18:18 +0200 Subject: [Pythonmac-SIG] embedding issues In-Reply-To: Message by Jon Bradley , Mon, 27 Aug 2001 15:47:32 -0500 , Message-ID: <20010827201824.14EA4B5E00@oratrix.oratrix.nl> Recently, Jon Bradley said: > Anyone have any suggestions to trapping exception calls when Python is > embedded? I'm having some serious problems if I try to execute a function > or call and object that's not defined (or exists). Presently, the embedded > interpreter throws an exception and quits both the application and itself. Jon, you'll have to give a few more specifics. For instance, the terms "exception calls", "function", and "not defined" can both refer to Python or C, so it's difficult to answer the question without more knowledge. But, in general, if you're embedding only and you call PyEval_Call() or some such, and a Python exception is raised somewhere in there, Python should definitely not exit, it should simply return NULL. -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From Shelley@shells.demon.co.uk Mon Aug 27 21:23:52 2001 From: Shelley@shells.demon.co.uk (Shelley Walsh) Date: Mon, 27 Aug 2001 21:23:52 +0100 Subject: [Pythonmac-SIG] Re: Number format in IDE In-Reply-To: Message-ID: on 27/8/01 12:41 pm, Jacob Kaplan-Moss at jacobkm@cats.ucsc.edu wrote: > At 11:07 AM +0200 8/27/01, Jack Jansen wrote: >> I think Jacob's solution is probably the best, provide your own displayhook. >> You can put it into the IDE plugin folder too. > > To follow up on my own suggestion, if I wanted this to be the default > behavior, I would put the displayhook stuff in site.py to make sure > that it gets loaded each time I run the interpreter/IDE. > > Jacob > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig Thanks everyone for the help on this. It works great. I even managed to expand on the idea a bit and created a function for changing the default display to a given precision. -- Shelley Walsh Shelley@shells.demon.co.uk http://homepage.mac.com/shelleywalsh From chrishbarker@home.net Mon Aug 27 23:05:53 2001 From: chrishbarker@home.net (Chris Barker) Date: Mon, 27 Aug 2001 15:05:53 -0700 Subject: [Pythonmac-SIG] Re: Number format in IDE References: Message-ID: <3B8AC441.24D89269@home.net> Jon Bradley wrote: > system where a number that should be really zero (by reality) but isn't > because of the bit representation would be rounded accordingly. There is no way for the computer to know what your application's definition of "close enough to zero" would be: I know I don't want the machine to throw away ANY bits unless I ask it to. > But, in most 3d applications they > do use decimal floating point. decimal floating point has all the same limitations, EXCEPT that human's are used to it! We expect this: >>> 1.0/3 0.33333333333333331 but dont expect: >>> 1.0/10 0.10000000000000001 then there is : >>> math.sqrt(2) 1.4142135623730951 which is not representable in finite form in any system! > But, pointing the err out to your students is also a good idea. Absolutely! "Louis M. Pecora" wrote: > I think your solution is similar to what is done on some calculators. More decimals are calculated than will be displayed, then some algorithm checks out the extra ones and decides how to round off. Actually, many calculators use decimal floating point, just to stay compatable with what people used to base ten expect. -Chris -- Christopher Barker, Ph.D. ChrisHBarker@home.net --- --- --- http://members.home.net/barkerlohmann ---@@ -----@@ -----@@ ------@@@ ------@@@ ------@@@ Oil Spill Modeling ------ @ ------ @ ------ @ Water Resources Engineering ------- --------- -------- Coastal and Fluvial Hydrodynamics -------------------------------------- ------------------------------------------------------------------------ From jack@oratrix.nl Tue Aug 28 20:29:05 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 28 Aug 2001 21:29:05 +0200 Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, anyone? Message-ID: <20010828192910.BE5C515F546@oratrix.oratrix.nl> Folks, I'm looking for problems with either I/O or imports in multithreaded MacPython programs. There's the famous Last Bug that needs to be fixed before MacPython 2.2a2 is ready, and I'm looking for more data points. The problem I'm seeing is that test.test_threaded_import either hangs (on my G4) or seriously corrupts the heap and crashes my machine (on my iMac). However, multithreaded debugging is not fun, especially not deep down inside GUSI:-( I think this problem might well be related to MacPython hanging on a multiprocessor OSX machine, and maybe also to the random once-in-a-blue-moon I/O failures if you do really large file copies. If the problem is indeed in the area where I expect it to be the problem has been around since at least 2.1. So I'm inviting you to share even vague "I did this and it didn't work" stories (as long as they're related to MacPython and I/O:-). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From Benjamin.Schollnick@usa.xerox.com Tue Aug 28 20:35:09 2001 From: Benjamin.Schollnick@usa.xerox.com (Schollnick, Benjamin) Date: Tue, 28 Aug 2001 15:35:09 -0400 Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, an yone? Message-ID: Jack, Please be aware, that I have not had a chance to try this on a equivalent Windows NT system... So this maybe a _python_ issue, not a MacPython Issue... When I use httplib, to connect to a Docushare Server, and retrieve the resulting XML file, readlines, or read(-1), doesn't seem to work correctly... readlines should read the entire document and then return... My understanding is the same with read(-1).... Instead I was forced to write a "looping" logic, which reads back "chunks" of data, which I can merge.... Otherwise I get incomplete documents.... I doubt this is any help, but that's the only major problem I've seen with MacPython.... And of course, the lack of a easy API to the clock... But I got around that one with calldll.... (But it's still kludgy!!) - Benjamin -----Original Message----- From: Jack Jansen [mailto:jack@oratrix.nl] Sent: Tuesday, August 28, 2001 3:29 PM To: pythonmac-sig@python.org Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, anyone? Folks, I'm looking for problems with either I/O or imports in multithreaded MacPython programs. There's the famous Last Bug that needs to be fixed before MacPython 2.2a2 is ready, and I'm looking for more data points. The problem I'm seeing is that test.test_threaded_import either hangs (on my G4) or seriously corrupts the heap and crashes my machine (on my iMac). However, multithreaded debugging is not fun, especially not deep down inside GUSI:-( I think this problem might well be related to MacPython hanging on a multiprocessor OSX machine, and maybe also to the random once-in-a-blue-moon I/O failures if you do really large file copies. If the problem is indeed in the area where I expect it to be the problem has been around since at least 2.1. So I'm inviting you to share even vague "I did this and it didn't work" stories (as long as they're related to MacPython and I/O:-). -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig From jack@oratrix.nl Tue Aug 28 21:27:11 2001 From: jack@oratrix.nl (Jack Jansen) Date: Tue, 28 Aug 2001 22:27:11 +0200 Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, an yone? In-Reply-To: Message by "Schollnick, Benjamin" , Tue, 28 Aug 2001 15:35:09 -0400 , Message-ID: <20010828202717.2420715F546@oratrix.oratrix.nl> First, a completely unrelated request to people who have tried installing MacPython on a multiprocessor OSX machine and still have the installer available: could someone please try running Python (or ConfigurePython, or whatever) and checking whether there's any interesting output in the system console window (Applications->Utilities->Console)? I've just noticed some debugging output in mine for the test_threaded_import problem, so here's hoping there's something interesting for the MP problem as well... Recently, "Schollnick, Benjamin" said: > When I use httplib, to connect to a Docushare Server, and retrieve > the > resulting XML file, readlines, or read(-1), doesn't seem to work > correctly... > readlines should read the entire document and then return... My > understanding is the > same with read(-1).... This is another one. I've always said that "it's not a bug", but I'm not so sure anymore. It may well be a bug, in that it is different than what the Python manual says. (I've always said it isn't a bug because it's what the C library does, but that is not important here). But still, if it is a bug I think it is another one. Although hunting it out may help. > I doubt this is any help, but that's the only major problem I've > seen with > MacPython.... And of course, the lack of a easy API to the clock... But I > got around > that one with calldll.... (But it's still kludgy!!) Uhm... What clock? If you've mentioned this one before I've completely forgotten it. I would say there's enough interfaces to various clocks (time.time(), Evt.TickCount(), MacOS.GetTicks()) -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Wed Aug 29 10:45:39 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 29 Aug 2001 11:45:39 +0200 Subject: [Pythonmac-SIG] test_threaded_import problem solved Message-ID: <20010829094539.CD202303181@snelboot.oratrix.nl> Folks, don't worry about the test_threaded_import problem (if you were doing so anyway:-), it appears solved. It turns out the default stack size for threads is 20K with GUSI, much lower than the 64-128K that you get on most unixen, and much too low for Python. At least: I think that this is the problem, I'll need to do a bit more rigourous testing tonight. Oh yes, and this means that this is a completely different problem from the OSX multiprocessor issue:-( -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | ++++ see http://www.xs4all.nl/~tank/ ++++ From Benjamin.Schollnick@usa.xerox.com Wed Aug 29 12:48:40 2001 From: Benjamin.Schollnick@usa.xerox.com (Schollnick, Benjamin) Date: Wed, 29 Aug 2001 07:48:40 -0400 Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, an yone? Message-ID: > > When I use httplib, to connect to a Docushare Server, and retrieve > > the > > resulting XML file, readlines, or read(-1), doesn't seem to work > > correctly... > > readlines should read the entire document and then return... My > > understanding is the > > same with read(-1).... > > This is another one. I've always said that "it's not a bug", but I'm > not so sure anymore. It may well be a bug, in that it is different > than what the Python manual says. (I've always said it isn't a bug > because it's what the C library does, but that is not important > here). But still, if it is a bug I think it is another one. Although > hunting it out may help. If it's what's expected (due to the C library), then it needs to be documented as a variance from the Doc's.... I spent a week trying to figure out why Docushare was returning broken XML... (And why the XML was working on other clients)... And several days trying different methods until I guessed it was a problem with how readlines & read(-1) was working... Honestly, it was a frustrating issue. But it's a major cross-platform issue... If someone uses those commands from a PC written python package, it's not going to perform the same... So we either must document it, or what I would suggest instead, is that we add a small bit of code, that automatically work's around it simulating the proper behavior... > > I doubt this is any help, but that's the only major problem I've > > seen with > > MacPython.... And of course, the lack of a easy API to the clock... But I > > got around > > that one with calldll.... (But it's still kludgy!!) > Uhm... What clock? If you've mentioned this one before I've completely > forgotten it. I would say there's enough interfaces to various clocks > (time.time(), Evt.TickCount(), MacOS.GetTicks()) This isn't anything that I think that going to change, which is one reason I didn't go into more detail... Python has a "read-only" API to the clock, but there is no way to set the system clock.... If you remember, the first major project I got started with MacPython was a time client/server application.... Which requires resyncing the Macintosh clock... What I'd love to see is a platform specific routine to properly set the clock... (In Mac.py?)... But I doubt I'd see this anytime soon.... In my opinion, anything we can read, we should (within limits) be able to set....Unless there is a good reason for it to be "read-only"... It goes back to my days of programming for the "dark side", where DOS has easy interfaces into just about everything if you know the right memory space... Of course my second python project was much more successful, a Macintosh automatic update software package... (Similar to Norton's Live update, or the Macintosh Software Updates control panel).... Using entirely standard internet protocols... - Benjamin From Benjamin.Schollnick@usa.xerox.com Wed Aug 29 13:20:06 2001 From: Benjamin.Schollnick@usa.xerox.com (Schollnick, Benjamin) Date: Wed, 29 Aug 2001 08:20:06 -0400 Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, an yone? Message-ID: Because it's not very generic? if sys.platform == "mac": import calldll macadjustment = 126230400L OSUtils = calldll.getlibrary('InterfaceLib') setmacdatetime = calldll.newcall(OSUtils.SetDateTime, 'None', 'InLong', 'InLong') tempval = timevalue - macadjustment tempval = tempval - time.timezone tempval = int(tempval - 0x100000000L) tempval = int(tempval) templo = int(tempval & 0xffffffff)+86400 temphi = int((tempval >> 32) & 0xfffffff) setmacdatetime(templo, temphi) The timevalue is the value that we have received from the time server... (milliseconds from 1970) MacAdjustment is the amount of time (in milliseconds) from 1970 to the macintosh epoch... (1/1/1974) So I'd suggest two interfaces: 1 -> Time from epoch (milliseconds) 2 -> Time passed via time tuple The first would be functionality equivalent.... The second, would be mostly a interface/def difference... The difference is a mktime call to generate the millisecond based time value... If your interested, I'll try to clean up the code... My major concern is that with Mac OS X, I do not believe that this code would work under X. (Anyone validate this? can CALLDLL be used under X?) And if it's not supported under X, I think we need to decide on a mechanism to support both X & classic. This code was donated: if sys.platform == "posix": t = timetuple cmd = "date %02d%02d%02d%02d%04d.%02d" % (t[1], t[2], t[3], t[4], t[0], t[5]) os.system (cmd) I don't have a system to test this on, and I'm not even sure if the date command works under Mac OS X..... (I suspect it does, but I don't know if the syntax is the same... Anyone able to check the man pages for X? Does X even have man pages?)...... - Benjamin -----Original Message----- From: Jack Jansen [mailto:jack@oratrix.nl] Sent: Wednesday, August 29, 2001 8:03 AM To: Schollnick, Benjamin Subject: Re: [Pythonmac-SIG] Problems with multithreaded I/O or import, an yone? Ah, setting the clock. That's not goint to be high on my priority list. But: if you have code that does it, why not contribute it? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From jack@oratrix.nl Wed Aug 29 13:48:48 2001 From: jack@oratrix.nl (Jack Jansen) Date: Wed, 29 Aug 2001 14:48:48 +0200 Subject: [Pythonmac-SIG] Problems with multithreaded I/O or import, an yone? In-Reply-To: Message by "Schollnick, Benjamin" , Wed, 29 Aug 2001 08:20:06 -0400 , Message-ID: <20010829124848.8E1A3303181@snelboot.oratrix.nl> > Because it's not very generic? Uhm, not all that important. If you just create a module macsettime.py with a settime function that accepts the same thing time.time() would return it sounds general enough. It would also make a neat example of calldll usage. (For your own use you would then still need to convert to/from the unix epoch, but this is difficult, as it involves more than just subtracting a fixed number of seconds as your solution here does: Unix times are in GMT whereas Mac times are localtime) > My major concern is that with Mac OS X, I do not believe that this code > would work under X. > (Anyone validate this? can CALLDLL be used under X?) Calldll should be useable in MacPython under OSX, but I've never tried it. Whether the SetDateTime() call is supported I don't know, but my guess is that it is. Maybe only if you have admin privileges. > This code was donated: > > if sys.platform == "posix": > t = timetuple > cmd = "date %02d%02d%02d%02d%04d.%02d" % (t[1], > t[2], t[3], t[4], t[0], t[5]) > os.system (cmd) The problem is you don't have os.system() under MacPython. It should be possible to create a calldll-like module under OSX that will call routines in Mach-O dynamic libraries. Calldll could be used as a starting point for this, and it would need to be combined with the CFM-MachO bridging stuff from Apple. Anyone interested in pursuing this? -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From simonmagus@earthlink.net Thu Aug 30 05:31:01 2001 From: simonmagus@earthlink.net (Sans Peur) Date: Wed, 29 Aug 2001 21:31:01 -0700 Subject: [Pythonmac-SIG] PyOpenGL Message-ID: Greetings, I am a Python novice. I just installed Python 2.1.1 on my G3 and it's working fine. I want to install PyOpenGL 2.0.0.42 beta but the setup.py script fails. I set the path up ok, but I really don't know where to put the PyOpenGL folder. I put in in Python 2.1.1 folder. Is that right? Does it matter where I put it? After using BBEdit to set up the python file type I ran setup.py with Option-down double-click, I then type install on the command line and the script goes all the way down to line 118 where it fails, looking for Numeric headers. Successfully imported Numeric, but can't find the Numeric headers! Traceback (most recent call last): File "Macintosh HD20:Programming:Python:Python 2.1.1:Lib:site-packages:PyOpenGL:setup.py", line 118, in ? libraries = [('interface_util', {'sources':['src/interface_util/interface_util.c','src/interface_util/platfo rm.c']}),#, 'include_dirs':[get_python_inc()] + include_dirs, 'macros':define_macros}), File "Macintosh HD20:Programming:Python:Python 2.1.1:Lib:distutils:core.py", line 101, in setup _setup_distribution = dist = klass(attrs) File "Macintosh HD20:Programming:Python:Python 2.1.1:Lib:distutils:dist.py", line 213, in __init__ self.finalize_options() File "Macintosh HD20:Programming:Python:Python 2.1.1:Lib:site-packages:PyOpenGL:setup:dist.py", line 102, in finalize_options if self.HAS_NUMERIC: AttributeError: Distribution instance has no attribute 'HAS_NUMERIC' === I didn't install Numeric because it's part of Python 2.1.1 in Lib:site-packages... So, I guess I'm totally lost at this point. Anyone willing to help me out? I need some ideas (or straight to the point instructions...) Thanks.... Bryce From jack@oratrix.nl Thu Aug 30 12:49:16 2001 From: jack@oratrix.nl (Jack Jansen) Date: Thu, 30 Aug 2001 13:49:16 +0200 Subject: [Pythonmac-SIG] PyOpenGL In-Reply-To: Message by Sans Peur , Wed, 29 Aug 2001 21:31:01 -0700 , Message-ID: <20010830114921.84019AB444@oratrix.oratrix.nl> Recently, Sans Peur said: > Greetings, > > I am a Python novice. I just installed Python 2.1.1 on my G3 and it's > working fine. I want to install PyOpenGL 2.0.0.42 beta but the setup.py > script fails. I set the path up ok, but I really don't know where to put > the PyOpenGL folder. I put in in Python 2.1.1 folder. Is that right? Does it > matter where I put it? No, it doesn't really matter where you put it. But: from the stack trace it appears that you've put it into :Lib:site-python, that may be the one location that is not such a good idea, as it is where PyOpenGL will install itself, I think... > After using BBEdit to set up the python file type I > ran setup.py with Option-down double-click, I then type install on the > command line and the script goes all the way down to line 118 where it > fails, looking for Numeric headers. Have you installed the developer optin of MacPython? that's the only option that isn't installed by doing an "easy install", so you need to select it manually. If you've selected it you should have an Include folder in your Python directory (and a Include:Numeric as well). The self.HAS_NUMERIC problem may be related to this, and it may be a bug in the PyOpenGL setup script. I guess you're on your own here, or you should ask the PyOpenGL maintainers. > Anyone willing to help me out? I need some ideas (or straight to the point > instructions...) Distutils on the mac is pretty new, and I've only tried to install a few things with it. So there's a good chance that you'll run into bugs and unsupported features. Just keep asking here... -- Jack Jansen | ++++ stop the execution of Mumia Abu-Jamal ++++ Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++ www.cwi.nl/~jack | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm From csmith@blakeschool.org Thu Aug 30 19:28:19 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Thu, 30 Aug 2001 13:28:19 -0500 Subject: [Pythonmac-SIG] pythonslave In-Reply-To: References: Message-ID: I don't know if there is a newer version of the Pythonslave file than "version 0.2.3, 18 september 1996" but this version has "from Types import *" which does not find the lowercase "type" module. Perhaps this could be changed so it's correct in the next distribution (unless I am missing something here). /c From csmith@blakeschool.org Thu Aug 30 19:42:51 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Thu, 30 Aug 2001 13:42:51 -0500 Subject: [Pythonmac-SIG] Pythonica (symbolic algebra) In-Reply-To: References: Message-ID: joe@strout.net writes: >At 9:29 AM -0500 8/30/01, Christopher Smith wrote: > >>I've been looking for something like Pythonica...glad I found it! >>Thanks for the work that you've done on this. A few comments >>about it and some bugs have been made on the tutor list: >> >>http://mail.python.org/pipermail/tutor/2001-August/subject.html >> >>Look for the subject line containing "algebraic". > >OK. Please feel free to add to this discussion that I don't use >Python much any more, and am looking for someone to take over >maintenance of Pythonica (including fixing those known bugs). It looks like you had made some significant progress on Python and provided some useful tools (I am using the patched editor, for example). Thank you. Do you have a list of errors that have been reported for Pythonica? I passed along your comments to the tutor and mac lists. /c From joe@strout.net Thu Aug 30 20:11:40 2001 From: joe@strout.net (Joseph J. Strout) Date: Thu, 30 Aug 2001 12:11:40 -0700 Subject: [Pythonmac-SIG] Re: Pythonica (symbolic algebra) In-Reply-To: References: Message-ID: At 1:42 PM -0500 8/30/01, Christopher Smith wrote: >It looks like you had made some significant progress >on Python and provided some useful tools (I am using >the patched editor, for example). Thank you. Quite happy to have contributed; Python is great (as is the community). >Do you have a list of errors that have been reported for Pythonica? Sorry, I don't. >I passed along your comments to the tutor and mac lists. Thanks, - Joe -- ,------------------------------------------------------------------. | Joseph J. Strout Check out the Mac Web Directory: | | joe@strout.net http://www.macwebdir.com/ | `------------------------------------------------------------------' From israel@lith.com Thu Aug 30 23:07:22 2001 From: israel@lith.com (Israel Evans) Date: Thu, 30 Aug 2001 15:07:22 -0700 Subject: [Pythonmac-SIG] OS migration... Message-ID: I'm in the process of switching over to the mac and I was wondering what are the things I most need to be aware of when programming Python for the Mac(OS 9 or OS X). Are many of you people who tend to use more than one platform to develop on? Specifically Mac/Win/Linux? Now that Mac OS X is almost a *nix variant, Windows XP is *nix-ish, and Linux is the People's *nix, what are the repercussions to writing for these "more similar than before" platforms. From nathan@vividworks.com Fri Aug 31 16:59:19 2001 From: nathan@vividworks.com (Nathan Heagy) Date: Fri, 31 Aug 2001 09:59:19 -0600 (CST) Subject: [Pythonmac-SIG] OS migration... In-Reply-To: Message-ID: I devel on MacOS X with most of my apps ending up on Linux, *BSD or OS X. The biggest thing for me id making sure the Python installs have the same configuration - readline, ioctl, etc. I don't know what it is about win2000, but it doesn't seem to like any of the Unix-style daemons I write. Nathan On Thu, 30 Aug 2001, Israel Evans wrote: > > > I'm in the process of switching over to the mac and I was wondering what are > the things I most need to be aware of when programming Python for the Mac(OS > 9 or OS X). Are many of you people who tend to use more than one platform > to develop on? Specifically Mac/Win/Linux? > > Now that Mac OS X is almost a *nix variant, Windows XP is *nix-ish, and > Linux is the People's *nix, what are the repercussions to writing for these > "more similar than before" platforms. > > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > From csmith@blakeschool.org Fri Aug 31 17:26:52 2001 From: csmith@blakeschool.org (Christopher Smith) Date: Fri, 31 Aug 2001 11:26:52 -0500 Subject: [Pythonmac-SIG] Tkinter for 2.1 Carbon? Message-ID: I have a non-carbon installation that runs the recon.py program just fine and that program imports Tkinter. I installed python 2.1 (carbon version) under OS 9.1 and recon.py *does not* run here. Basically, I want to know how to get the Tkinter module available on the new system. FWIW, here's what I've tried; -checked "Documentation - start here.html" and the "using python on mac" link -I looked for a Tkinter module but did not find one; I did find two folders named Tkinter and tkinter; the Tkinter has a setup.py file which presents a dialog box with several options, none of which I know what to do with. I also found a plugin _tkinter.carbon.slb -I checked the configuration paths and see a path to Lib:lib-tk but there is no lib-tk in the mac distribution yet. Can anyone tell me how to get up and running with Tkinter? /c From owen@astro.washington.edu Fri Aug 31 18:01:40 2001 From: owen@astro.washington.edu (Russell E Owen) Date: Fri, 31 Aug 2001 10:01:40 -0700 Subject: [Pythonmac-SIG] Tkinter for 2.1 Carbon? In-Reply-To: References: Message-ID: At the moment Tkinter does not work at all with Carbon (and has some issues with Classic). If you are willing to do some programming, you may be able to help the effort to get it "Carbonized". I don't know what's involved nor who might already be working on it. -- Russell >I have a non-carbon installation that runs the recon.py program just fine >and that program imports Tkinter. I installed python 2.1 (carbon version) >under OS 9.1 and recon.py *does not* run here. Basically, I want to >know how to get the Tkinter module available on the new system. >FWIW, here's what I've tried; > >-checked "Documentation - start here.html" and > the "using python on mac" link >-I looked for a Tkinter module but did not find one; I did find two > folders named Tkinter and tkinter; the Tkinter has a setup.py file > which presents a dialog box with several options, none of which > I know what to do with. I also found a plugin _tkinter.carbon.slb >-I checked the configuration paths and see a path to Lib:lib-tk but > there is no lib-tk in the mac distribution yet. > >Can anyone tell me how to get up and running with Tkinter?