Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!newsfeed.fsmpi.rwth-aachen.de!newsfeed.kamp.net!newsfeed.kamp.net!feeder1.cambriumusenet.nl!feed.tweaknews.nl!85.12.40.139.MISMATCH!xlned.com!feeder7.xlned.com!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.021 X-Spam-Evidence: '*H*': 0.96; '*S*': 0.00; 'causing': 0.04; 'repository': 0.05; 'received:198': 0.07; '[0]': 0.09; 'git': 0.09; 'grid': 0.09; 'true)': 0.09; 'dictionary,': 0.16; 'filename:fname piece:signature': 0.16; 'foo,': 0.16; 'michael.': 0.16; 'retrieving': 0.16; 'subject:slow': 0.16; 'variable.': 0.16; 'thanks,': 0.17; 'wrote:': 0.18; 'received:10.0.1': 0.19; 'code,': 0.22; 'tests': 0.22; 'header:In-Reply-To:1': 0.27; 'appear': 0.29; 'michael': 0.29; 'kevin': 0.30; 'code': 0.31; 'lines': 0.31; 'file': 0.32; 'class': 0.32; 'this.': 0.32; 'probably': 0.32; 'run': 0.32; "can't": 0.35; 'there': 0.35; 'accessible': 0.36; 'data,': 0.36; "didn't": 0.36; 'thanks': 0.36; "i'll": 0.36; 'received:10.0': 0.36; 'should': 0.36; 'received:10': 0.37; 'button': 0.38; 'to:addr:python-list': 0.38; 'files': 0.38; 'pm,': 0.38; 'rather': 0.38; 'anything': 0.39; 'to:addr:python.org': 0.39; 'skip:u 10': 0.60; 'read': 0.60; 'simply': 0.61; "you're": 0.61; 'first': 0.61; 'you.': 0.62; 'kind': 0.63; 'different': 0.65; 'account': 0.65; 'sample': 0.67; 'url:c': 0.67; 'capability': 0.84; 'mock': 0.84; 'imagine': 0.93 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1410230726; bh=rWgyQz35ZDGYNn50rJq0vhsBxQ97KqhC8jCUJpOPsHw=; h=Date:From:To:Subject:References:In-Reply-To:From; b=EGzzMvxZX58N2JR6/noZU5uNH6YYgVXPTjUnpl1gKhzPOvuW1Y/Y2dSfczoBHLR5k cByKgLaw4a6EikmISyZoaAyjaZ2N1fSv9qdwKpP1Utrlc2UCraUACgNJOtDJ6l7uYU QXfQeiM5K4aprBKYO8p5lh9AD7inBlgtPURlssZw= Date: Tue, 09 Sep 2014 02:45:03 +0000 From: kjs MIME-Version: 1.0 To: python-list@python.org Subject: Re: weakref, memory management and execution slow down in PyQt4 References: <540BFE43.5030006@riseup.net> <540CADDD.3050501@riseup.net> <540CB15C.2060008@gmail.com> <540CC278.4050106@riseup.net> <540E40FD.8030706@gmail.com> In-Reply-To: <540E40FD.8030706@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="Fgww1pd9mn5Vv657aCQBsmmUifxFAQVjR" X-Virus-Scanned: clamav-milter 0.98.4 at mx1 X-Virus-Status: Clean X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 264 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1410230734 news.xs4all.nl 2957 [2001:888:2000:d::a6]:60185 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:77710 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --Fgww1pd9mn5Vv657aCQBsmmUifxFAQVjR Content-Type: multipart/mixed; boundary="------------070303020003080105000301" This is a multi-part message in MIME format. --------------070303020003080105000301 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Thanks for the consideration Michael. If you do get the data, and are able to run the code, let me know if you notice anything interesting. Michael Torrie: > On 09/07/2014 02:39 PM, kjs wrote: >> The code is minimal[0]. The only other widgets are a start button that= >> fires off the plotting and a stop button that calls sys.exit(). >=20 > Unfortunately there are no data files in your git repository so I can't= > run it. The data is available from the internet[0] in the form of 3+GB gziped blobs. In case you don't want to register an account with Kaggle and download 3GB to execute the code, I have uploaded a sample file to a Tahoe LAFS grid accessible via tor. If you're interested in downloading the data, please let me know and I'll share the read capability with you. Additionally, I should write some tests the use mock data. I'll let you know if I get around to this. >=20 >> >> Lines 112-114 appear to be causing the weakref proliferation. >=20 > Is there a reason you are using setattr and getattr instead of a proper= > data structure? both of those calls are rather expensive. Would > probably be cheaper to use some kind of array, dictionary, or other > purpose-built data structure? >=20 You're right, a dictionary can do everything I need and more. This happened to be the first thing I thought of, and I didn't imagine it would be very expensive. I figured it was simply a different way of defining and retrieving a class variable. IE setattr(self, foo, True) =3D= =3D self.foo =3D True. Thanks, Kevin [0] http://www.kaggle.com/c/seizure-prediction/data --------------070303020003080105000301 Content-Type: application/pgp-keys; name="0x8A61431E.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0x8A61431E.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBFMejQkBEACxte4BKdCPoHswqJNJdc6Rqq6vHghTS5z3hhhPUmDtiLimHlhw rQFY2RvViqMkjKqzyn6csAZjk7xpeZQWle+4jRUGkd/yI0EZ4LhHuPeVycENoXur f/l2kFNN8r0pNJBUUzg+nBjJ9lrKzPG0vY8X+jV85iHt/+Lmb6RLgsbLbc+TFxzF uilolLDJKxjLZoYfgjoteYskXYfST6ZVrmHij9j6tZbP/KhU4C8mIL7V43AErkJv 5x7D7qsGyhpy9t9S9rayF1ZtpHOBquHjJ+EW+ISc9w8azguF2hJngyoHJZoiqMSd vJOwfZypRvVw2MoY6+8j90EbtzdLfy7x8hFszFBmMi/vGR+cAMWFvoX/inJ8I97x 2/O3Js6/KhVkSjESMDBKn97te3QtzyayqCXae/3u3ZEYYfdcq8aXlkgQKVUebzHu bszknSZWeT5FPYBgq62va6xolnMvf7vtyBdhoF+9EeXUV6UQdN7a+A5x6gTozeAv +98jwZtSl7b+HaQicPQDaN+1eZci908SmL20Ul1gf5QWaoZTY2KLH3RbaKqB88vR Lp8Fhv+1L5xUae3bl6ka9y4RXITpy5Vp4MY/GWEk2gdcfvOj2+Ol8nwHI0l/M6sy tf7TuCwWKuaCarpzj4PMtzyeFk0svvDeR3bMLBWGd0wzisc19ssE1NrG6QARAQAB tCBLZXZpbiBTY2hpZXNzZXIgPGJmYkByaXNldXAubmV0PokCPQQTAQoAJwUCUx6N CQIbAQUJAQesAAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRD0TkGtimFDHpEy D/9CkkCJHpSfBMM1DAHISBS4xkc7R7cVudkJ4qC2jylO9pj+FBBwh6MfAAxUD72Z auPRq+OKpBpp+ExLNpPnSPqEiYNTrSy8ddwFBIzhpqVbuAUW6VT4iFUpgWhaKody STde2oUb88qDpaBmfByL84BzML5N5eJcZoqSU4uXd4uHSiNgATPdvO3xJ/gQZxGg YZuNOoevaytIdBdxAVAsS9iUAGsk67UuVv/d2H6Ty2fhgcM4WNTyWrWq7uTpBjph rcBF7gn09yPOAZqBkTqKQVlCTkFLctdzDqKXaWYhX49EQ/vBGpfMZSekk3aDNOs6 MCW8bn1GJWt5il19TOY4Uyp+EN3O0izE0qY+pI1ibJG8Fpdwv93kyXXxftixj8rF 9oVTQOWMxkAXJVwa4R9TBw5EM4idKFIQOukYGtUljWlzxKUawNO+jWdzBFj6m33N zZd3Zg9jmwhyraB7So0CAXkh4uxXYVYCJKqsJV18Idmxtli3lGrvb28tT4IOk/Wv lPasrIrnKHjYwUtyzIgvw1hIzh+eghKVNBZyhqhj90fbazoUn3Y0m+Fvh9BbdyMl +CIJ+NDumUYXpmrxbxJmi7ch+3CdFJUKcH7h+NKUOQbhMoBI8OuwU6MFfPA1ObpH 8kZS0009AhkqrTnDjWxuEI8gR1Ucznt10bX5aAoAf5PdR4kCHAQSAQgABgUCVAat dAAKCRBipyw6KxJToGP5D/92+EwN0sbJbzp+y4A+nXsvalLHlE4dxE5+td1NWP2w Q0WdorMPW0viiWI9uY3QV5F8WbvZ6jyRJTSog8UfKyO5DYyinREyLjmae2oOdnt5 0YWlmv3XAh3M2xF5ztKD5qxbEc1ZI4C839Lxxr9UrxgWbMb472GDm0SBedJGargt aWGtNAyg2BbPUPY9AfVBCh6/2rOxiUQ1vFYqSHZmyfZRn+4rJJDEKTkq4PiCGRE2 upIf51WREw3hhZ0JOw8Fb/haH+F++VPGH9c4/po3Ibwv5W8Ub+kTKNZVW1W7uDBA M2NPtCDMymHv3+0eiDa3sFzr065bhTUMOkEapFmJa0syBMv0g0drOPcmucs7o+51 g0ji3YQgKqQXUR3VFkcSBUn1jMzU3i80u06gy/t/6Gurf43CEelp1kLtk3ECqI8o N8M5UhLg6AmfCcemvd87HUWyNOx8Q+nWQYr76zwL34IUSvdztJuPb6i4V+gM5Asj Sc5OkJuOW1iij9V0VDKK829gjFhgaMmhqRaQbGW/pVoosvjqk3vBxGoiXYbjhEHQ 8jNcyBhc9S9WV8dxb5Hzb5ImxQaPzSlCy2NU6PdTtNKfRTkYtc0eTa6pSlRgaye6 JZJVuUNcIE6PfPQNM4YfPahCsi+te2iEs+8DHUi3sfXJOWiJUwf/b3eiskOe+pGa JIkCPQQTAQoAJwIbAQULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCVAbObQUJAeK+ WQAKCRD0TkGtimFDHgqnD/4nIjj0v4pQaql9z/u8t2g7TIs5DGnq6n7fvLEaCYDY d3tqqNRPTxNeyT3+QwJlUhxMnunNpsvvF8Qxzs8+OM8rgXxrHgZ/DPMi1oJu6rZp 8boYiClodiZROVu/4t5jWomV5dwALKl6szQCrv+IMm2PA3CUdyjQ8zzP92RJ2+vM fwbVWE2eKocuYuX6MX0XSgcv2xS3jZp6lRW9Qe7WyPScth43STb03EK2gz+05Uu9 bEb/AaXY1aPNy/CILwgDgGMlMhIWsPn+qSxRDrMU0jf14yx6lydXrvGMkIrAzxcn DwNAjvVI04ULrrS+bd+PhsLzgAU68P4BMips7zO+zQhvqBWCn9k3Y9KvDuqJ8v58 2Ylwn4wiGQSg0oldYAApBt3EQzBkH2BBmQRcV7FYjlsfXbeA1PxkZCYtyPG9SBKS bXksGiGYUhirCQVw9UhpxmWKTWTdzhZZHX5IHDbBSAl5PwBayAaQe8/pDXQjESoc s2cCFvl2IxqS3alyA9eGCOyPYS3qpilkVAzF6btEFBIYk54OGay8fpGUGlL2RJCF 9VGinlzfFNdeHFH0OHCBeH4tDDnV4uFkYTI6tyGir0+voUPJiiQV3UE0L08ZboBB JHKc4ig5Vw+YT/Btv1BNWLdC2ShOf4YLmdtYdUlf/o6nSS9RbJUA7AL5+ItTovR/ ZbkCDQRTHpDUARAAscY/wM/5Vz3RnY5Ri/Sypn55NmEgcw2csvgjl6G3OkqxgMJn SErVOomylKDrXtGmzJmf5mIL4VkaZa3yjUshkxcavX4LT1xZe3lLN4a4plyuqOl+ pekA9StKsbCVw3lqbgeatNfw1pCDX2dyeKlSAEWenJ40kPqlwJVAT3u6z+l+O9+3 l+IlCGm0+7KULFF2Im/Rn7ZkRMpixoULkTMNV9p2gJY+wb4WSMmlDp3YRI/sD48t M06T9NR/Q7D52expCu/CeK0gYOD0ZY7uoWDmYQ23pwbSG99tUFq9OFi7YKfwsS2+ q0ORBO196BwdRHvDZ02HWisdhp1uf8Qsn3v/qkCjMgqm84UBKIr2TXk6dNZstsBM tLVAseyF+COcAARTb7HEa8audRoX/rTEgHptgfULgOa+1aN2rq9ld6SSgofszC3T ILef5tAEbJyvtG95970MUGLWc8YdYLxXKFJylqc8MHw1BEDhZuu6eL0q3LJy8LpY vFcyqkNatOhDh1CdHOi+tDU7jDXsWQJ+ag5F9NtuKhd9ja0Qb/x6YwtHw9FYU6hS cFoSzrTPdtA5QpNK5+L5iqDvo0RiMk8Fb4XvU9sF0S0T6wAzym1TvbZa8YMyVcRl SZZAJNRawzLxEoIJW233MsTeItFnknrjtLZmOhZDft6v7JDXn+B/AaaNwwcAEQEA AYkERAQYAQoADwUCUx6Q1AIbAgUJAOa2gAIpCRD0TkGtimFDHsFdIAQZAQoABgUC Ux6Q1AAKCRBeAjY+7qIDcGD6EACtrS4ucJY1PEd+k/LdQ2J6bxUGS/RzjBmUeoh1 B5/3rHk+3bmh52c2n/z79UlE4nS89GxpnIwJQAta2nQKRVYdTveHVYj/zH9ANHBE Kp+Xzq9KaArVqouPbGoTXoRZ+3jkm+3utbApvQsFxazThpagBsutKOiDy2odGjC2 /K4xQIRVCFrtDP1+MBLXKteqqCLffy/dt0J/b4sx7naUjmSc6kiOj/M/I8zAVCKf jqLSfGu/ykTvI7sPeC70ZqYnPgBeUQISxqk0DVb7OvLmxucplJa2hdy0zsYJzJ/E CadqVsN5+63SosOlSgJi+bh5h69lLvYoCPLgidUqjFGfcimq7vAHJV90F4N6PVIs HsFpuf+ANHnne5NnPBp2awJYVQxqkMrMaoDk0ErbrPC14ZLAeKQmpbup3RAwvmaQ unGQE3sPBVPt/DyimXJZz0ZHt9nvNWMQ8mKALugvC5fb5RANaPX+wo/k7ONCx/nG QddHGcEp5qe/LmPUvB6vvo9+2aUs7CovlR+nQF7amBs4eXURYOievsELlwg/FIAI LUqeJ8zBw6bDKa7SYfkhNTlMY1r1ECmPE/nEmUsBY4BAXZj6ks/jzLqSILmHn1TC SAn0rrGtmi8HTfmTrB4FhMqRrUACUVsYU3LVNiVJwzm8crtwcfnA2zH39+DZXsP+ AD1aPuEOEACwBRMoDLpuhyjM1RwcDbuAHTGlBHlLSuD59Ewwp2v1yHCOEZi+EkH+ U41PLKwYwJ8tS2bIQ78Ohp6U8xC6gNShmkaJyPT0hmDMXtPLeP3vXsYZE0DJIDiS 3Y0+eZtB8PFU75x9N1M9Hv+NW5A2LnIDLID1lNhguxv4Zg7HomfJ+xqSUoHA8zAH Q3VJBxo5UrZ17+iGArn2m/ZdvVkka/PCXxCc8yJmB7U9m5fOxABBNdUlyoSg5d8/ CQ0hAssm0/tYE0BZEwmuq7d/5gE/eyQrm1BibteGqYThHy61nP7qCCSoG8xfo7tY 53OIsZ/7r5mfBjS501JrnefnnLOy1MetGvJoxhMlA/U6bW+NyPXf3xnOI5E9SwGR wvmI48HDk6kEmT3PE6Tab1EhEKJI/s7ckDx+yqF2zsMQpbKnl3M3Ay4co9q9UFPf h/HYKREeL+QWC/Qb4l6Dg9QXo51rfzC5TJhK08xaZQgkZNxIlU3CAFzGWYyywfyN AcstjWitgCUMTm2zXN9rR8DZwPKw9x8l8XhBHAU9cUnE/SWiOQW01BGEA3SHDVr9 Zgh0tfkYu4FY6IoRtYRL+FWu1RJW9Xnpb25Qjd/GwfmwISwP5Vpq001xCKpeaPRk aZVCoU/6ARjYoXg8NYMSvVjv2YI/dqnTQNwiUp1QyiiqJibIRpTFQokERAQYAQoA DwIbAgUCVAbNLQUJAdWKVQIpwV0gBBkBCgAGBQJTHpDUAAoJEF4CNj7uogNwYPoQ AK2tLi5wljU8R36T8t1DYnpvFQZL9HOMGZR6iHUHn/eseT7duaHnZzaf/Pv1SUTi dLz0bGmcjAlAC1radApFVh1O94dViP/Mf0A0cEQqn5fOr0poCtWqi49sahNehFn7 eOSb7e61sCm9CwXFrNOGlqAGy60o6IPLah0aMLb8rjFAhFUIWu0M/X4wEtcq16qo It9/L923Qn9vizHudpSOZJzqSI6P8z8jzMBUIp+OotJ8a7/KRO8juw94LvRmpic+ AF5RAhLGqTQNVvs68ubG5ymUlraF3LTOxgnMn8QJp2pWw3n7rdKiw6VKAmL5uHmH r2Uu9igI8uCJ1SqMUZ9yKaru8AclX3QXg3o9UiwewWm5/4A0eed7k2c8GnZrAlhV DGqQysxqgOTQStus8LXhksB4pCalu6ndEDC+ZpC6cZATew8FU+38PKKZclnPRke3 2e81YxDyYoAu6C8Ll9vlEA1o9f7Cj+Ts40LH+cZB10cZwSnmp78uY9S8Hq++j37Z pSzsKi+VH6dAXtqYGzh5dRFg6J6+wQuXCD8UgAgtSp4nzMHDpsMprtJh+SE1OUxj WvUQKY8T+cSZSwFjgEBdmPqSz+PMupIguYefVMJICfSusa2aLwdN+ZOsHgWEypGt QAJRWxhTctU2JUnDObxyu3Bx+cDbMff34Nlew/4APVo+CRD0TkGtimFDHlq0D/4n BSsmtQCyEkb+nNnKr8RjA9LJHO/sOeSOA+Qp9+NUI5xFPP2Rla2Y2uNuLnmh/bC1 kRlSyZ+yniU8Fppawe0MXwuytHCfAk3bCR3aEYdReN5yUsA1cOahZGpojS5mxVpe NJyzW2pAgcV2v8gVCnNcik67K7PMvVptetAC1fwlHdGpzurV8m1fd+6xocL/ITwh +ibG7GEcWe/1SbLTATZ6OQwmszQZmjaPknPF+ZQugT8P4f0cFcsmiNPL7behRhgz k0ccbad+Y6nlqczp5MDbO8l7G5V7Ez4iwdH0a9OL7N20cfvKrcpRCLqjSIbvXgiD BK69TZmV/5DA1TJ/kxDEewbI00LMZrZKrLoQ2CUCAR+5/EGOPv2K62rDJz9WCLuk VKhfufOMpTLwl1cR60luMWIow4+f4KHNCAkoV1dy1KZ7X1ShNYhzqqK4jm6nO1Xp 6QDsf/i3e+Mtqz6u80/bMXk3fT9hxlcCmOUSchh+vmc9fnL86+xQdSRI9p3x68Ik kP6zsAPjQX2ClseW8FHQPHC3NHsgBrVNKA7iVJDLLRnDHj/6HVicLhPd1zl1xqh2 SpPYdaIr+6tPZc0kxoQ74yno9QLLQxXGnGUMfPDuyK4OBxjNjTkewCfbMeVj/srW UpOfg53vY4eXzVi1CjtY//1JHYFq1WaiVRV7gX3DA7kCDQRTHpHzARAAy3xeAqwC BBafKKl4NaTbMlqGeBG6Xmb5m74CACfOFI9BA2ovepcVfaUM4PketZ21AsGdWRbE O1838f4Pv/BhEPLdIoHt6/b/hb54mk6JUKSDlaHU7ejhFHHFATscdoomgHGj71yp cUX70m+JClRZK2h6LhWiAQJzRXvN37dGVwgPGhbXv8/dn8pPsNKfPXKUkAGe4kcV l9h+qdBQlKLtsuMuo848FwPrcZvrAOhRd2V3p67tHmMICxnpNi8GvfXdkhpHXoYz /VyHlNtTU+zqmGhu6/8DtdY7yRB9hzQ4e+cMSL0fSF7cf7o8PC0ubOGKR/68hiDs MeMHuMMO/OEWEna5IuU9UQTPkuGcQQcYFPiTmroa8UMs6PrRJU6sTXOC9rJ6X4Jh 6CYf/zep+Fy0Ba87TieoZoYNkZYDkEFO9BZV1fqjF3VmgLnLV8JBimE/yODiPSfS RUVzQaA4uDbotKiySr4Sz4xxRs6iWP39y6iMEW3OVCfyCjE65eN0OOtfOyLunhLh J7lnuPLHTM2kRqFfyqXCJN02PFBYzbrq//0KyGZpJQXF7AoG5UTN9ZWa+JSyETw1 1wxxHQXJwg6gGVjlwpj5TYR8boqfB2i7KR1wDlBX2s731ujmt6SAiYGdljUBal5H FAWPyDOn32ySEUlyrch/6QfSDYXaOgwLVgsAEQEAAYkCJQQYAQoADwUCUx6R8wIb DAUJAOa2gAAKCRD0TkGtimFDHngXEAChd/QlcQOyIoZYRRkD447ixONl4b+P3Prv wYDC6t7IOgtueGqylOwXdQMcUjNcPgBFaajocOXw6iBDHoKmvmscBP2rVA5a0ubC hhfwI/RuW1VZJpMJpBUQUEgIcz2OQwd4GCwrDI9dpPgbK3pvzx/9719BLrPdsyNA uNPJcTqfEPFXhap8IJLUhMnmf7zqCb9FVtKR4Nu7A4h2qGorUqn6ckddpSu+GBdW 2Th3Z3oWnkGQ28i9mN436HA/v27OjRcliEc2SwmCHfrg6/CXqjz4A17Fn4osGQOU GaONaF15uVca9yjbrS2wQ0ExskqBNtl9hb/Q7NYo4B5I6jANmQ0Nx0PJu6nYb+vV razZKG9u9flNXjO362zWJLqO1jmCv590YtQ2LuuxEc23WfoQBica61x8BAXXR656 pZbXJBFLSbgl0FG1JRfJVdBkZZg8IcdhtFBZJZJqO2GaFytwcgj8HMsHZywrJtHc 1rgc9tw3mdH07Iksm2sFeuBGEGMZWKmiwJ/Z71p3sLY5He13TVl0SkieGp83oFpa 70+mq2V0l8daeumiR3epWYu0lP1FfwVY3xVAhiKC0YK0U0w7OUpXbEs0MFN07dKg MK2Vqun5C+YHyFZjE4uZ6KWSUK1RfXkLL2VC1MbbxBRLMIMpg3fnhv4hvpB6jmK9 f4aWFz0Pu4kCJQQYAQoADwIbDAUCVAbNYQUJAdWJbAAKCRD0TkGtimFDHnSeEACA UBwukUOPVicwImptFGECohTXRW2NkIDK3gGEYoGk43OmMrKsHWQwrVFFYWKRiAoG /wIIkGjf+oc0jJNegbxfgAi1SgVJXvaI3lMwzc8W04oU5Sg/HIkpTuxxTD0/S6ZQ KfmHCcYJVHAa3et8IrBMtD09KXn/UavzgllpUpYLDqFoeRui/WFLHkFXipq6dJTX SmDB2zfuiZENoFtFmM8rHzonoYRolTPOJTQEZmhSGI6KzOJ55Pwvywd1GC16ZeLV OGV+l8ntnyztTRVlkQEBOcvZrUieavwetCKyOoITUuZTjFHE+iT6BhMVQeDS6gUa 5zDksaSgHBQdK4dX/6jJ0C/RHC4cJ4RMMPO+AN7VPO+CkdZdyJVSSoYNFELLJI3K VPPQcVWlnFFdRGbhKzBZHNPxhwP/0eRjKFadEK6y62ISUFhNB/cuEYTv2sQtIJ1Y TV2ubicZnolwq1GtLrrmyU+P5EjXLIcFVVJn/fZLKERLb+CWY6J76n9bXVjUgcWG bS1Q3dJRSRZaFiN7b6LZnbjuw2YIbi/9JHKi0SuBUwhwAeCRlJ+520RE5O3i3PVG cxWAzRO6TA9VAAaPnaR+oEsUFinbJwbPVRjMlIXsbKf6COW8jr/iGn52lfnYVa67 4Wh39yShCGKROwDLtlnMvSmMk+/ZvFOTCtKwjxn44bkCDQRTHpMIARAAqnarcjtH 3htgGdBZeK91W7auLdWLSBTEFhVvvbw6RZHr4eVFM82WV3xToROQuFMyPpiKNJwT t4skhNjR51wyVqcYCRzmPsldBxvuPqklC7NZWum8glSu2Jm7JG8KiaEBFaRI6PZA AjpGisd8L4UlIucqFl4PdyWaaSCuxrylZinBSHVApRw+m4RkU18pSfe5mEeOwGM4 LU1FAlphrBACpH1N7WElNgPn8v/mEDMHCLajgU3eqMBZAwfa5MJiNB7SxM+itWxe xPHfMuG+1GnPncVgJwXnCsLvn5EAsRo0vYpsICwsELQdWauyd2MJ43ER7iqsYLRz PlXMUgvAkXhY138vhwxfX9JGM2b/vRih0zsICGp4cIvHF9UFEt3lnXJFpI6Q3+gT BrzVkb0HHNKObw68uhxT+hIcPWwHWrSPTiQRyFmICwroBhf2EUR1YFP5QsdrF21A zFCuh/8U5aYdMPTgeIG9AtjLTrnXWxuLrBanRQ252t6EfD3Z84/f6nsvVjBMRoxh NB/FSK/8UwSX9Iv17M/z7wo8ndjqt0gwML/WUgJYxbjSDDy2YGvw82845g7/YdIw A25R/b5bL+o2Sq4pGfDXzh7ZCRetgNIIwlqm9x3ZnATtu/PpZ4trhxM6sgxDnTJI IfqaK6E8KuVjplgWA7FL5kmrLGZlXQ4mi4EAEQEAAYkCJQQYAQoADwUCUx6TCAIb IAUJAOa2gAAKCRD0TkGtimFDHpYzD/wLcmRLW5ixzviky82jF9dAYs+4F8QiM4r7 vgp4V2DQ8Kc1Ia5n/Y5FEs0kEZlFLD5mPFhqh5M/TB5qf+FW90hoZn51Xy/6NDZO PyiFBdLThxbkbCnrjPXj1x/q5Wq600kB6jRNmQQTLxdKeWRd1FzdNgGLileJ8AR/ 5gWo0JPquPvUObiHcs0cq0LLN38XowvzEFC+BZ/B/eHCBkIjStrZ73kL8gm4FjOh vDeckD/FXveHHjqQJyDXid3sbJxr3lb45FjvVyoB2z4/tLV+rBeOU/NeaaMPFBDj Qe9drkRbH8EuLRwuQdOve2OThqHsQjFBDXS2A83yCAbawGiyx92f5UMmwZ2OsBi+ u3nj4INU7/rou7BD+vOhji7iD7JqA9X3Qooo21iIKdEKrMQzxJr1Z1CdutJ3rw6g VBiYV9eecAOcAVYzAtdzIfswxBzETEqrqDjy2Vpi5N/eJqAMa7DigiDFzpxm0E3n QpevV6qvrTg0kVfGw5TcVaUy9pFmlmEGy7gagaXKlHLOH5c60mNot9yZ1/XU3BS7 Zd+E+LCgDRhwKiXSkYsLbiy3cj01LpCvm9U95um9sLIC7kSHoB8Rs54DhnO2z3J1 nYRhHSFy/3nfK9Qdlhf+19nLjA0dAcrnPew0zrYgvqkOOG48KtPOVGt7uO44+qta tl78xnPAdIkCJQQYAQoADwIbIAUCVAbNjAUJAdWIgQAKCRD0TkGtimFDHtIzD/9V Jl8PDA7/Jqr8x93zLCWPbVx6aE5y0WKIh97Jici49SER/LBJEnrzOkXymMnkiYcY nulmEJnKUDqF0O1TJeGGaN9mEvIu0qTn+UlHUBzdvSzrnUaMTDu8H8Rn5DU5bAew PT4cus1nd+QdHVc/Pjs0E6n8YHQCvvTZWgPAN757Vyqb9/R67gzFTNKbxRXtmjAs kZqDD4To7ci75QJ/Lvpd7BuM9Hf0ZxuKj1BHdqdXpqSLW49MTpDl5KLhjQLNMkna E3oE2HF637TD2t5qhqfP+hm2XnACKsCrvTS4/EhVhDbuqKO4zdxFqNJaGTjgQRK1 fL2aqkUAv4DGlygYfsuiLiwTY1lcdYag2aZfIkA7C0AnyOYVMcAEdqg/yMJgbJZU 6QabVtYK38F2tTd8xfq1bBVOXyG+T8T1otd1CWGOeXCoafqJY7l2CTwgR/XWkAha NCzKMpWh4mvGhwwR2b6MGSY3asbblJdYs47eNVER6Z2/16DbXb4F1TJxLY1F/XaU Vw0yaY0IusRbY5h5xoq9A7yVFNO7VlarmJE8z+icpekAnCw+z8biWDRnD8L3sX09 jlBf99IOpFxCyxlz62oToB/7Vigi9thnHsqdEKEokcQ7yCcwWaS1/0cc9HkbbuCt kBVwT5avFGku0x/YE25AdeBVgAylIws3COJxdJ9rYQ=3D=3D =3Dy5+1 -----END PGP PUBLIC KEY BLOCK----- --------------070303020003080105000301-- --Fgww1pd9mn5Vv657aCQBsmmUifxFAQVjR Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJUDmmvAAoJEF4CNj7uogNw788P/2dpR0IivaM+o+W+4+kA2k1B 7YOe0QJ0AVzGv5mNyybR+jBQji0ulmg1k5wxfOHLPsM8Zo+KUWjyN2dK+xpK5IYp 3/cUkZMdHmqc8FNV1aABmH4nI7H0TzxBUZP62+F8trz2486nFiCp6i+xn6RMtsTr RXYk54eYU15AUv/+Bk4qWQLX8iRv4evzU4vSepMmbALeJUEzT7sfwZYwz2XKrs+m TYTyLBi7s4VGpHi0AJNrKy4K00yKBMFSk7TGj63BiYOGgSv7diXpiVlVCTM/Hhd8 Fwly2j89tuF45fXdB5rNGrpKoA9TPcB4xJrwqQqTCDFL3xQI7ry52arPL0G6qO1Z AJXx3ziRyFZKQCHFrj9ZG4Jg1KISWv15WP4Ri7ENec5aAZjxSsNE1tBGks2QcoMm njgJ5dSdfOFrmjzbfQ/qQM+Ua7HVvmYFkamNY6KVMYRsInoeSA1GZrnNAwe59DKY u26LQFoshGd9FeFvUJbKd3elUVXdTPLt/OCN5fLTkmbS1EXPxCwWYEyN5Bt2+zwp Enp5rXsa0BURVRGtCOdszDU4ofVKnLkmHx9j31lfGLTEeJGVXB0Ltvi/k/b7CrF/ vBpMjPQLzQAOxamNHBWAcvHgb533L+9LZGVBCWz8OKcYqqjX/C9BqzmHHLOtVgXZ ZhsBkA7ELVvr4MCoNdCt =oV+n -----END PGP SIGNATURE----- --Fgww1pd9mn5Vv657aCQBsmmUifxFAQVjR--