From afu@altek.com.my Thu Jun 3 03:44:37 1999 From: afu@altek.com.my (Feisal Umar) Date: Wed, 02 Jun 1999 18:44:37 -0800 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error Message-ID: <3755EC15.EF5AA949@altek.com.my> Hi. {This problem was actually posted at mailman-users lists, but I didn't get any responses .. so I think I'll try here :) } My MailMan v1.0rc1 is working excellently except for one small nagging problem. Whenever I am trying to access my public archive, I get an error message .. the normal "denied access error". A quick file permission check shows that the *.txt.gz file has a chmod 600 permission (hence denied access). However, previous week's archives are OK (automatically chmod 644), the anomaly only affects the current week's archive. Help .. please ... anyone? This is my 3rd installation (using combinations of GIDs) but to no avail. Please ... just when I thought I could make do without MajorDomo .. :( Kudos to the MailMan Developers anyway Thanks in advance -- Feisal Umar Huge, Friendly and Entertaining http://altavista.skali.com Skali Multimedia Applications Centre http://www.altek.com.my/smac From tomaz.borstnar@over.net Wed Jun 2 17:17:38 1999 From: tomaz.borstnar@over.net (Tomaz Borstnar) Date: Wed, 02 Jun 1999 18:17:38 +0200 Subject: [Mailman-Developers] Fwd: Re: Fwd: [Mailman-Users] smtplib Message-ID: <4.2.0.56.19990602181633.00a6f100@193.189.189.100> This mail might help making Mailman more standards compliant. We all want that, right? >X-From_: mea@nic.funet.fi Wed Jun 2 15:15:26 1999 >Subject: Re: Fwd: [Mailman-Users] smtplib >From: Matti Aarnio >To: tomaz.borstnar@over.net (Tomaz Borstnar) >Date: Wed, 2 Jun 1999 16:14:20 +0300 (EET DST) > > > Yes ? > >If mailman really does that, then it is as bad as M$ WinCE, which does >same incorrect SMTP address productionn, but I don't recall having seen >that problem. (a bit of web-browsing -- to locate the Mailman homepages, >etc..) > >Ok, I pulled in the current Mailman 1.0rc1 source, and found >following at it (Mailman/pythonlib/smtplib.py): > > def mail(self,sender,options=[]): > """SMTP 'mail' command -- begins mail xfer session.""" > optionlist = '' > if options and self.does_esmtp: > optionlist = string.join(options, ' ') > self.putcmd("mail", "FROM:%s %s" % (quoteaddr(sender) ,optionlist)) > return self.getreply() > > def rcpt(self,recip,options=[]): > """SMTP 'rcpt' command -- indicates 1 recipient for this mail.""" > optionlist = '' > if options and self.does_esmtp: > optionlist = ' ' + string.join(options, ' ') > self.putcmd("rcpt","TO:%s%s" % (quoteaddr(recip),optionlist)) > return self.getreply() > > >Ok, the problem can be at how the quoteaddr() works, does it >*always* yield addresses *with* "<...>" around them, or can it >sometimes yield those without the wrappers ? > >I would suggest it to always yield the target address *without* >the "<..>" angle brackets, and then always to print those explicitely. >That way there won't be some mystic cases where failures happen. > > >Another problem I have seen reports about are due to putcmd() >function misbehaviour (belief that "all the world is Sendmail"): > > def putcmd(self, cmd, args=""): > """Send a command to the server.""" > str = '%s %s%s' % (cmd, args, CRLF) > self.send(str) > >That FORCES extra space in case the 'args' does not exist for some >command (e.g. "DATA"). It should not. > >The more I read the mailman documents, the more I am convinced that >its coders use 'sendmail' as standard for how the RFC-821 can be >ignored/abused. You really should have somebody running e.g. ZMailer >in 'strict' mode, which will quickly weed out any protocol non-compliance. > >OTOH: For ZMailer there are also better ways to submit a message, than > doing it thru SMTP port. Methods that are way faster, and easily > codable in Python (I have a sample in PERL, and in C, of course.) > > /Matti Aarnio > > > >X-From_: mailman-users-admin@python.org Tue Jun 1 19:08:56 1999 > > >Date: Tue, 1 Jun 1999 12:13:26 -0400 (EDT) > > >From: Dave Sill > > >To: mailman-users@python.org > > >Subject: [Mailman-Users] smtplib > > >X-Mailer: VM 6.71 under 21.1 "20 Minutes to Nikko" XEmacs Lucid (patch 2) > > >Organization: Oak Ridge National Lab, Oak Ridge, Tenn., USA > > >X-Face: > > >"p~Q]mg{;e*}YR|)&Q/&Q\*~5UWfZX34;5M c%YX > > >$E6]%1jvk:,"f*jA|?~Cxb?WJ5gt}L?qsMAjROM~rHbK27yx=t,L/?IHb8@|cYg8"Y)~0Ip > U~J. > > >^w,VW)u?M3q-AS{f`@RZ]Wll > > >X-Disclaimer: My opinions do not necessarily represent those of my > employer > > >Sender: mailman-users-admin@python.org > > >X-Mailman-Version: 1.0rc1 > > >List-Id: Mailman mailing list management users > > >X-BeenThere: mailman-users@python.org > > > > > >It looks like Mailman does: > > > > > > MAIL FROM:mailman-owner@sws1.ctd.ornl.gov > > > > > >instead of: > > > > > > MAIL FROM: > > > > > >I wonder what other SMTP corners were cut. > > > > > >-Dave > > > > > >------------------------------------------------------ > > >Mailman-Users maillist - Mailman-Users@python.org > > >http://www.python.org/mailman/listinfo/mailman-users > > > > ---- > > Tomaz Borstnar > > "Love is the answer to the final question you ask" - Unknown > > ---- Tomaz Borstnar "Love is the answer to the final question you ask" - Unknown From Harald.Meland@usit.uio.no Wed Jun 2 17:40:42 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 02 Jun 1999 18:40:42 +0200 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error In-Reply-To: Feisal Umar's message of "Wed, 02 Jun 1999 18:44:37 -0800" References: <3755EC15.EF5AA949@altek.com.my> Message-ID: --=-=-= [Feisal Umar] > Hi. {This problem was actually posted at mailman-users lists, but I didn't > get any responses .. so I think I'll try here :) } Sure -- I'm trying to catch up with mailman-users, but unfortunately I'm still pretty far behind... > Whenever I am trying to access my public archive, I get an error message .. > the normal "denied access error". A quick file permission check shows that > the *.txt.gz file has a chmod 600 permission (hence denied access). Small oversight in the archiving code, I believe. Please try this patch: --=-=-= Content-Disposition: attachment Content-Description: Patch to create gzipped text archives with correct mode Index: HyperArch.py =================================================================== RCS file: /export/public/cvsroot/mailman/Mailman/Archiver/HyperArch.py,v retrieving revision 1.13 diff -u -r1.13 HyperArch.py --- HyperArch.py 1998/11/22 02:06:09 1.13 +++ HyperArch.py 1999/06/02 16:31:32 @@ -884,7 +884,11 @@ archz = gzip.open(oldgzip) except (IOError, RuntimeError, os.error): pass - newz = gzip.open(gzipfile, 'w') + try: + ou = os.umask(002) + newz = gzip.open(gzipfile, 'w') + finally: + os.umask(ou) if archz : newz.write(archz.read()) archz.close() --=-=-= If this fixes your problem, let me know, and I'll commit the change. -- Harald --=-=-=-- From Harald.Meland@usit.uio.no Wed Jun 2 17:48:27 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 02 Jun 1999 18:48:27 +0200 Subject: [Mailman-Developers] Fwd: Re: Fwd: [Mailman-Users] smtplib In-Reply-To: Tomaz Borstnar's message of "Wed, 02 Jun 1999 18:17:38 +0200" References: <4.2.0.56.19990602181633.00a6f100@193.189.189.100> Message-ID: [Tomaz Borstnar] > This mail might help making Mailman more standards compliant. We all > want that, right? Yup, but the Right Way to fix Mailman's SMTP interaction is by fixing the distributed-with-python smtplib.py (which Mailman includes an up-to-date copy of (in Mailman/pythonlib), for the benefit of those using old(er) Python installations). -- Harald From afu@altek.com.my Thu Jun 3 21:22:02 1999 From: afu@altek.com.my (Feisal Umar) Date: Thu, 03 Jun 1999 12:22:02 -0800 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error References: <3755EC15.EF5AA949@altek.com.my> Message-ID: <3756E3EA.AA4C67C2@altek.com.my> Harald, Unfortunately .. it didn't work :( I am using Redhat 6.0, Mailman v1.0rc1, users' umask is 022, using qmail 1.03 and I didn't install mailman as root I tried manually changing the file permissions to chmod 644, but Mailman reverts it back to chmod 600 the next time I posted something to the list. I am getting desperate here .. :) PS: MY installation can be viewed at http://listserv.mysmac.com/ Harald Meland wrote: > > [Feisal Umar] > > > Hi. {This problem was actually posted at mailman-users lists, but I didn't > > get any responses .. so I think I'll try here :) } > > Sure -- I'm trying to catch up with mailman-users, but unfortunately > I'm still pretty far behind... > > > Whenever I am trying to access my public archive, I get an error message .. > > the normal "denied access error". A quick file permission check shows that > > the *.txt.gz file has a chmod 600 permission (hence denied access). > > Small oversight in the archiving code, I believe. Please try this > patch: > > ---------------------------------------------------------------------------- > > Part 1.2 Type: Plain Text (text/plain) > Description: Patch to create gzipped text archives with correct mode > > ---------------------------------------------------------------------------- > > If this fixes your problem, let me know, and I'll commit the change. > -- > Harald -- Feisal Umar, Project Manager Huge, Friendly and Entertaining http://altavista.skali.com Skali Multimedia Applications Centre http://www.altek.com.my/smac From schaefer@zanshin.com Fri Jun 4 00:34:47 1999 From: schaefer@zanshin.com (Bart Schaefer) Date: Thu, 03 Jun 1999 16:34:47 -0700 Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful Message-ID: <37571117.6CC5DC0D@zanshin.com> I just received my first "mailing list memberships reminder" from a mailman list. I asked the list admin about it, and he replied: > Each mailman installation optionally sends a single message covering > all the mailing lists controlled by that installation, once per > month. The option is controlled by the list administrators, though; > not by the individual users. I could turn it off, but then I'd have > to turn it off for everyone. I strongly suggest that this become a per-subscriber configurable item. Consider the possibility that I, unaware that this is going to take place, subscribe an address that represents a local exploder. At some later time everyone on that local list is going to be given my password, possibly without my personally being aware it has happened (if I don't happen to be on the list myself). That sort of information should never be mailed to someone who hasn't explicitly asked for it and verified in some way that he's eligible to receive it. From dragondm@integral.org Fri Jun 4 07:51:16 1999 From: dragondm@integral.org (The Dragon De Monsyne) Date: Fri, 4 Jun 1999 01:51:16 -0500 (CDT) Subject: [Mailman-Developers] Fwd: Re: Fwd: [Mailman-Users] smtplib In-Reply-To: <4.2.0.56.19990602181633.00a6f100@193.189.189.100> Message-ID: On Wed, 2 Jun 1999, Tomaz Borstnar wrote: >> >Ok, the problem can be at how the quoteaddr() works, does it > >*always* yield addresses *with* "<...>" around them, or can it > >sometimes yield those without the wrappers ? it will yield a bare address with the <>'s added unless the address cannot be parsed. It will pass the address verbatim _IF_ and _ONLY_ if rfc822.parseaddr() cannot parse it. this is the proper behavior, IMHO, as if the address cannot be parsed, it is probably syntacticly invalid, and thus the SMTP server will complain anyway. If rfc822.parseaddr() is cronking on a syntacticly valid address, the rfc822 module needs to be fixed. > > > >I would suggest it to always yield the target address *without* > >the "<..>" angle brackets, and then always to print those explicitely. > >That way there won't be some mystic cases where failures happen. Creating a syntactically valid path according to rfc821 is that function's purpose is. According to the RFC the path includes the <>'s if the addressis bogus to begin with, then failure is the 'correcxt' thing to happen, because it means that something is pasing in mangled address, or that someone needs to submit a bug report on the rfc822 module. > >Another problem I have seen reports about are due to putcmd() > >function misbehaviour (belief that "all the world is Sendmail"): > > No, this is a bug. It will be fixed. > > def putcmd(self, cmd, args=""): > > """Send a command to the server.""" > > str = '%s %s%s' % (cmd, args, CRLF) > > self.send(str) > > > >That FORCES extra space in case the 'args' does not exist for some > >command (e.g. "DATA"). It should not. > > > > >OTOH: For ZMailer there are also better ways to submit a message, than > > doing it thru SMTP port. Methods that are way faster, and easily > > codable in Python (I have a sample in PERL, and in C, of course.) True, but SMTP is the most portable way. -The Dragon De Monsyne From afu@altek.com.my Sat Jun 5 03:44:49 1999 From: afu@altek.com.my (Feisal Umar) Date: Fri, 04 Jun 1999 18:44:49 -0800 Subject: [Mailman-Developers] Archiving Automatically Message-ID: <37588F21.FFD250DB@altek.com.my> Earlier I had a problem where whenever I tried to access the "Downloadable version" version of my list's archive. (The xxx.txt.gz has permission 600) I managed to fix it via manually running $prefix/bin/arch archives/private/.mbox/.mbox Shouldn't the bin/arch function be run automatically for each of my list? My list works fine in all other aspect (fingers crossed) except for 'downloadable archive'. Did I miss a step elsewhere? Thanks in advance -- Feisal Umar, Project Manager Huge, Friendly and Entertaining http://altavista.skali.com Skali Multimedia Applications Centre http://www.altek.com.my/smac From Harald.Meland@usit.uio.no Fri Jun 4 16:36:59 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 17:36:59 +0200 Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Bart Schaefer's message of "Thu, 03 Jun 1999 16:34:47 -0700" References: <37571117.6CC5DC0D@zanshin.com> Message-ID: [Bart Schaefer] > I just received my first "mailing list memberships reminder" from a > mailman list. I asked the list admin about it, and he replied: > > > Each mailman installation optionally sends a single message covering > > all the mailing lists controlled by that installation, once per > > month. The option is controlled by the list administrators, though; > > not by the individual users. I could turn it off, but then I'd have > > to turn it off for everyone. > > I strongly suggest that this become a per-subscriber configurable > item. I think it probably will -- but not until after v1.0 is out. > Consider the possibility that I, unaware that this is going to take > place, subscribe an address that represents a local exploder. At > some later time everyone on that local list is going to be given my > password, possibly without my personally being aware it has happened > (if I don't happen to be on the list myself). If you're adding other people's addresses, then how would they be able to unsubscribe later -- unless they have som way for getting at the password. I think the correct solution to this problem is for you _not_ to use "your" password unless it really is one of "your" addresses you're adding. -- Harald From schaefer@zanshin.com Fri Jun 4 16:50:25 1999 From: schaefer@zanshin.com (Bart Schaefer) Date: Fri, 4 Jun 1999 08:50:25 -0700 (PDT) Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Message-ID: On 4 Jun 1999, Harald Meland wrote: > [Bart Schaefer] > > > Consider the possibility that I, unaware that this is going to take > > place, subscribe an address that represents a local exploder. At > > some later time everyone on that local list is going to be given my > > password > > If you're adding other people's addresses, then how would they be able > to unsubscribe later Because my "local exploder" is a news gateway and they simply use their newsreader to subscribe/unsubscribe the newsgroup. Or because my exploder is another mailing list manager so they can subscribe/unsubscribe from the local list. Neither of these is an uncommon situation. From Harald.Meland@usit.uio.no Fri Jun 4 17:05:09 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 18:05:09 +0200 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error In-Reply-To: Feisal Umar's message of "Thu, 03 Jun 1999 12:22:02 -0800" References: <3755EC15.EF5AA949@altek.com.my> <3756E3EA.AA4C67C2@altek.com.my> Message-ID: [Feisal Umar] > Harald, > > Unfortunately .. it didn't work :( > > I am using Redhat 6.0, Mailman v1.0rc1, users' umask is 022, using qmail > 1.03 and I didn't install mailman as root > > I tried manually changing the file permissions to chmod 644, but Mailman > reverts it back to chmod 600 the next time I posted something to the list. Bummer... > PS: MY installation can be viewed at http://listserv.mysmac.com/ I tried this, but got redirected to your Mailman "listinfo" page -- which doesn't give me much relevant info. [Feisal Umar] > Earlier I had a problem where whenever I tried to access the "Downloadable > version" version of my list's archive. (The xxx.txt.gz has permission 600) > > I managed to fix it via manually running $prefix/bin/arch > archives/private/.mbox/.mbox You mean, after running bin/arch, the archive's permissions _stay_ correct? _Very_ strange -- the guts of bin/arch are, as far as I can see, identical to the guts of Mailman.Archiver.ArchiveMail(). The latter is the function that Mailman.MailList.Post() calls to update archives. > Shouldn't the bin/arch function be run automatically for each of my > list? No, not as such -- but the bin/arch and the builtin archiving invokes Mailman's archiving engine in the same way. > My list works fine in all other aspect (fingers crossed) except for > 'downloadable archive'. I'm confused -- are you saying that the permission problem is gone or not? -- Harald From Harald.Meland@usit.uio.no Fri Jun 4 18:00:17 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 19:00:17 +0200 Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Bart Schaefer's message of "Fri, 4 Jun 1999 08:50:25 -0700 (PDT)" References: Message-ID: [Bart Schaefer] > On 4 Jun 1999, Harald Meland wrote: > > > [Bart Schaefer] > > > > > Consider the possibility that I, unaware that this is going to take > > > place, subscribe an address that represents a local exploder. At > > > some later time everyone on that local list is going to be given my > > > password > > > > If you're adding other people's addresses, then how would they be able > > to unsubscribe later > > Because my "local exploder" is a news gateway and they simply use their > newsreader to subscribe/unsubscribe the newsgroup. Or because my exploder > is another mailing list manager so they can subscribe/unsubscribe from the > local list. Neither of these is an uncommon situation. I have no problem seeing the usefulness of adding non-personal addresses to mailing lists. I was merely stating that you shouldn't be using a very "private" password when doing so (i.e. don't use passwords that are used for other subscriptions as well). [ Even if the automatic reminders are turned off, people can still go to the list's member page (if it is open), click on some member address, and click on the "Send me my password now" button to have Mailman distribute the password to the member (which could be an exploder). ] In cases like these, there _will be_ loopholes in Mailman's "security mechanisms", unless you introduce some new concepts -- e.g. a "member owner address" that receives all administrative requests regarding it's associated member. The umbrella list feature of Mailman solves these things for lists where _all_ the member are exploders, but not for lists with both user and list members. I have been thinking about implementing a more general solution after 1.0 is out, but the list of post-1.0 things to do is getting pretty long... :) -- Harald From Harald.Meland@usit.uio.no Fri Jun 4 19:35:09 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 20:35:09 +0200 Subject: [Mailman-Developers] Change to speed up mass subscription committed -- testers welcome Message-ID: I have just committed a change to speed up the web interface "mass subscription" greatly (it saves the list configuration only once, as opposed to once per member added before). I have (of course) tested this change on my system, but as I have other non-committed changes here as well, and as the change is pretty low level, I'd really appreciate it if some people would try it out and let me know whether things work/don't work for them. Cheers, -- Harald From schaefer@zanshin.com Fri Jun 4 20:34:47 1999 From: schaefer@zanshin.com (Bart Schaefer) Date: Fri, 4 Jun 1999 12:34:47 -0700 (PDT) Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Message-ID: On 4 Jun 1999, Harald Meland wrote: > I have no problem seeing the usefulness of adding non-personal > addresses to mailing lists. I was merely stating that you shouldn't > be using a very "private" password when doing so (i.e. don't use > passwords that are used for other subscriptions as well). It doesn't matter how personal the password is; the point is that any person using the local exploder could go to the member page and unsubscribe, thus cutting off everyone else who relies on the exploder. They might even be misled into doing so, thinking that they were unsubscribing themselves only. > [ Even if the automatic reminders are turned off, people can still go > to the list's member page (if it is open), click on some member > address, and click on the "Send me my password now" button to have > Mailman distribute the password to the member (which could be an > exploder). ] True, but there's a difference between having to actively go looking for a password and having that password sent to you unsolicited. I understand if there's a technical reason this can't be made a personal preference before the release, but please consider at least making the installation default be to NOT send these messages, and include some kind of warning to the list admin about why he might not want to turn it on. From linnkarik@yahoo.com Fri Jun 4 21:14:35 1999 From: linnkarik@yahoo.com (Feisal Umar) Date: Fri, 4 Jun 1999 13:14:35 -0700 (PDT) Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error Message-ID: <19990604201435.19261.rocketmail@web109.yahoomail.com> Harald, if u don't mind, please go to http://listserv.mysmac.com/pipermail/demo-users/ On the "Downloadable Version" column: archive 19990604 is the problem I'm having now (and still do), archive 19990602 is what I will get if I run ~prefix/bin/arch whatever whatever I don't see anyone else having this problem ... so far. From your previous analysis, archive 19990602 "downloadable version" is what I should get everytime a post is sent to the list .... why isn't it happening here? Thank you for your efforts so far :) _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com From troy@akropolys.com Fri Jun 4 21:29:01 1999 From: troy@akropolys.com (Troy Morrison) Date: Fri, 4 Jun 1999 13:29:01 -0700 (PDT) Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Message-ID: > I understand if there's a technical reason this can't be made a personal > preference before the release, but please consider at least making the > installation default be to NOT send these messages, and include some kind > of warning to the list admin about why he might not want to turn it on. Forgive me for butting in, and please realize I'm not trying to argue the merits of this solution, but it just occured to me that one way to solve this might be to configure the local exploder *not* to pass along mail from 'mailman-owner' (or whatever address the monthly reminder comes from, I forget right now) and to instead forward it to it's local administrator. That's how I would do it, I think. Troy From ricardo@miss-janet.com Tue Jun 8 21:14:13 1999 From: ricardo@miss-janet.com (Ricardo Kustner) Date: Tue, 08 Jun 1999 22:14:13 +0200 (CEST) Subject: [Mailman-Developers] performance again... Message-ID: Hi, well, it happened again last night that the system load jumped to abnormal levels on our server when some messages where being approved in admindb so I had to try to telnet to it again and issue a shutdown to the machine... It's getting really unworkable like this... :( recently, one of the people who use the moderating page told me that she often moderates by selecting several messages to approve on 1 page and then press the submit button (to be honest i didnt even know that was possible myself) -- i guess that's what can cause things going wrong: too many messages are being send at the same time and mailman goes bezerk... does anybody have idea how i can fix this? or is this a bug in mailman? i really need to fix it soon... there are other things running on that server too and it needs to be up 24h a day... if i happen to be online i usually fix it in 30-60 mins (telnetting to a server with 60+ systemload can take a while) but if i'm not around it can be down all night :( Thanks, Ricardo. -- From jwm@plain.co.nz Thu Jun 10 07:14:42 1999 From: jwm@plain.co.nz (John Morton) Date: Thu, 10 Jun 1999 18:14:42 +1200 (NZST) Subject: [Mailman-Developers] Cookie security hole in admin interface Message-ID: <14175.22482.412218.700661@antares.plain.co.nz> [Didn't see this problem discussed in the recent archive messages, so...] I was looking at the code for the admin cgi in search of a good cookie authentication system, and found out that it was doing this, c = Cookie.Cookie( os.environ['HTTP_COOKIE'] ) if c.has_key(list_name + "-admin"): if c[list_name + "-admin"].value == `hash(list_name)`: return 1 ...to authenticate based on a cookie. This code is from 1.0b8, but it only took a couple of minutes to set the appropriate wafer in my junkbuster configuration, and point netscape at the admin page for mailman-developers. I'll leave the replication of this exploit as an exercise for the readers. Possible solutions: Lock down that url with whatever security features your web server has. This sucks as a long term solution, but it should protect from disgruntled script kiddies that you just chucked off your lists. Make the value based on a hash of some slow changing system variable. Something that changes with the frequency of your desired expire time, for example. Maybe a cron job to set a key based on some fast changing system stats every hour or so. Use SSL for the admin interface and save the name and password in the cookie. Any better suggestions? John. From jwm@plain.co.nz Thu Jun 10 07:37:15 1999 From: jwm@plain.co.nz (John Morton) Date: Thu, 10 Jun 1999 18:37:15 +1200 (NZST) Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: <14175.22482.412218.700661@antares.plain.co.nz> References: <14175.22482.412218.700661@antares.plain.co.nz> Message-ID: <14175.23835.29300.892948@antares.plain.co.nz> John Morton writes: > I was looking at the code for the admin cgi in search of a good cookie > authentication system, and found out that it was doing this, [etc] > Any better suggestions? A quick glance at the WWW security FAQ suggests a good solution: http://www.w3.org/Security/Faq/wwwsf7.html#Q66 John. From starback@ling.uu.se Thu Jun 10 21:37:10 1999 From: starback@ling.uu.se (Per Starback) Date: 10 Jun 1999 22:37:10 +0200 Subject: [Mailman-Developers] listinfo.html Message-ID: There are some html errors in the default listinfo.html, including some none-nesting tags. In this mail is a version that fixes most of them. As can be seen I have edited revision 1.19 (which is in 1.0rc1). (While fixing the errors I changed the indentation to be more consistent, so if you want to check exactly what is changed you might want to use diff -b or -w.) If you add at the start of this there are still two errors left than a validator finds. That's the HEIGHT attribute to TABLE which is a netscapism, and the COLS attribute which is an explorerism. (Maybe they should be eliminated too.) -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- <MM-List-Name> Info Page

--

 

About

To see the collection of prior postings to the list, visit the Archives.

Using
To post a message to all the list members, send email to .

You can subscribe to the list, or change your existing subscription, in the sections below.

Subscribing to

Subscribe to by filling out the following form.

Your email address:  
You must enter a privacy password. This provides only mild security, but should prevent others from messing with your subscription. Do not use valuable passwords!
Pick a password:  
Reenter password to confirm:  
Would you like to receive list mail batched in a daily digest? No Yes
Subscribers

From claw@varesearch.com Thu Jun 10 22:42:27 1999 From: claw@varesearch.com (J C Lawrence) Date: Thu, 10 Jun 1999 14:42:27 -0700 Subject: [Mailman-Developers] Performance problems and MailMan Message-ID: I believe I've found out how to reliably reproduce the performance problemsI've noticed here at VA and at Kanga.Nu, and which Barry and another (forget name, sorry) have observed as well: 1) Create a moderated list. 2) Subscribe 200 addresses to the list (can be bogus addresses but the local MTA must accept them) 3) Post at least 30 messages of an average of at least 2K size to the list. 4) Go to the moderation page, approve every message, and hit submit. 5) Watch your system load peg and stay there for an obscenely long time. -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From starback@ling.uu.se Fri Jun 11 14:33:07 1999 From: starback@ling.uu.se (Per Starback) Date: 11 Jun 1999 15:33:07 +0200 Subject: [Mailman-Developers] Various In-Reply-To: J C Lawrence's message of "Thu, 10 Jun 1999 14:42:27 -0700" Message-ID: Various things I, as a new Mailman user, have wished was different. These are not bug reports, but rather design issues. * Privacy Options I don't like the combined meanings of the fields A = "Restrict posting privilege to list members?" and B = "Addresses of members accepted for posting to this list without implicit approval requirement". The current functionality is: If A is No, and B isn't set, then anyone is allowed to post. If A is No, and B is set, then *only* users listed in B are allowed to post. If A is Yes, then members *and* users listed in B are allowed to post. My usual setting is the last one. Only members and some special addresses are allowed to post to the list. But sometimes when I go away for some time I would like to open up the list a little to make it work more seamlessly while I can't be there to administrate it. Now I can't just turn switch A to do that, but instead I have to remove all addresses from B as well. Of course that's not very much problematic to do, but nevertheless it seems illogical. Perhaps it would be better if A had three possible values: Noone, Members only, Anyone. And then B always is a list of *additional* addresses besides what option A states? * Digest-member options "Header added to every digest" is empty as the default value. I would prefer if the whole Send xxx maillist submissions to [...] When replying, please [...] "Re: Contents of xxx digest...") blurb was there instead, so all of that could be edited. (By the way, that blurb ends with an unmatched ")". That's an error in Digester.py.) * List-specific programs Something I'm missing from Smartlist which I have been using since before is the possibility there of adjusting everything for a particular list by making a special version of the list programs for that list. In this way it would great if I could just put a changed Digester.pyc (for example) in the directory for a particular list to have that list use that one instead of the default one. This wouldn't be needed for most lists, or course, but still such a minor(?) change would make it *possible* to do almost anything, including stuff that there probably will be support for in the future but that someone could need to fix "by hand" for one particular list right now, and specialized stuff for which there never will be generalized support. From Harald.Meland@usit.uio.no Fri Jun 11 16:33:56 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 11 Jun 1999 17:33:56 +0200 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error In-Reply-To: Feisal Umar's message of "Fri, 4 Jun 1999 13:14:35 -0700 (PDT)" References: <19990604201435.19261.rocketmail@web109.yahoomail.com> Message-ID: [Feisal Umar] > Harald, > > if u don't mind, please go to > http://listserv.mysmac.com/pipermail/demo-users/ > > On the "Downloadable Version" column: > archive 19990604 is the problem I'm having now > (and still do), > archive 19990602 is what I will get if I run > ~prefix/bin/arch whatever whatever I got a chance to observe that the problem was there some time ago, but now I'm no longer allowed to view the URL mentioned above. However, I can only find one place in the Mailman code where a gzipped file is being created -- and that's the one I fixed by my first patch to solve this problem (line 889 of current CVS HyperArch.py). Neither can I find no likely chmod() calls to cause the problems you're seeing. So, unless anyone else speaks up and tells me they have similar problems, I'm going to have to assume that the problem is specific to your system (in some way -- without having a closer look at the system from within, I'm unable to pinpoint the problem further). Sorry, -- Harald From starback@ling.uu.se Fri Jun 11 18:05:24 1999 From: starback@ling.uu.se (Per Starback) Date: 11 Jun 1999 19:05:24 +0200 Subject: [Mailman-Developers] Envelope from, sender, from, etc. In-Reply-To: Greg Connor's message of "Mon, 24 May 1999 22:10:22 -0700" Message-ID: In 1.0rc1 USE_ENVELOPE_SENDER = 0 by default, but still it didn't work for me. After investigating it turned out that the documentation misled me. I think the documentation or the function should be changed, preferrably the latter. According to the section in NEWS where USE_ENVELOPE_SENDER is added: # With this variable set to true, the envelope sender (e.g. Unix # "From_" header) is used to match addresses, otherwise the From: # header is used. The FAQ also speaks about the difference being between using envelope from and From:. The comments in Defaults.py indicate that this is perhaps not the whole truth as they say # The envelope sender is set by the SMTP delivery and is thus less easily # spoofed than the sender, which is typically just taken from the From: header "Typically" is the key word here. The actual code uses GetSender which prefers to use Sender: but uses From: if there is no Sender:. So my messages which said From: starback@ling.uu.se Sender: starback@objekt.ling.uu.se where rejected when only "starback@ling.uu.se" was a subscriber. Am I missing something here? It seems to me that the point of USE_ENVELOPE_SENDER=0 is that we are willing to accept the lesser security we get when we just accept who the sender says they are and don't insist that the "technical stuff" (envelope from) has to match. Why then refuse because of a Sender: header that probably echoes what was in envelope from? -- Per Starback "Life is but a gamble! Let flipism chart your ramble!" From Harald.Meland@usit.uio.no Fri Jun 11 19:40:11 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 11 Jun 1999 20:40:11 +0200 Subject: [Mailman-Developers] Cookie security hole in admin interface References: <14175.22482.412218.700661@antares.plain.co.nz> <14175.23835.29300.892948@antares.plain.co.nz> Message-ID: [John Morton] > John Morton writes: > > I was looking at the code for the admin cgi in search of a good cookie > > authentication system, and found out that it was doing this, Thanks for letting us know -- this certainly gave me some incentive to have a look at what those pesky cookies really are all about. I guess Barry'll have to whip up a new release (1.0rc2?) shortly... > > Any better suggestions? > > A quick glance at the WWW security FAQ suggests a good solution: > > http://www.w3.org/Security/Faq/wwwsf7.html#Q66 As the extra complexity added by having to save session state on the server side (i.e. have Mailman keep track of session IDs) is rather large, and as Mailman isn't safe from package sniffing anyway (unless you're running things on a SSL server, in which case cookie sniffing shouldn't be of any trouble anyway), I settled for slightly less. I have just commited a fix to CVS, based on these two new SecurityManager functions: def MakeCookie(self): client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' issued = int(time.time()) expires = issued + mm_cfg.ADMIN_COOKIE_LIFE secret = self.password mac = hash(secret + client_ip + `issued` + `expires`) return [client_ip, issued, expires, mac] def CheckCookie(self, cookie): if type(cookie) <> type([]): return 0 if len(cookie) <> 4: return 0 client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' [for_ip, issued, expires, received_mac] = cookie if for_ip <> client_ip: return 0 now = time.time() if not issued < now < expires: return 0 secret = self.password mac = hash(secret + client_ip + `issued` + `expires`) if mac <> received_mac: return 0 return 1 Hopefully, this new cookie scheme will suffice -- if anyone do see flaws in it, don't hesitate to get in touch. -- Harald From gossamer@tertius.net.au Sat Jun 12 01:05:45 1999 From: gossamer@tertius.net.au (Bek Oberin) Date: Sat, 12 Jun 1999 10:05:45 +1000 Subject: [Mailman-Developers] Re: Various In-Reply-To: ; from Per Starback on Fri, Jun 11, 1999 at 03:33:07PM +0200 References: Message-ID: <19990612100545.A28510@tertius.net.au> Per Starback wrote: > Perhaps it would be better if A had three possible values: > Noone, Members only, Anyone. And then B always is a list of > *additional* addresses besides what option A states? I'd appreciate this too, as I do the same thing. bekj -- : --Hacker-Neophile-Eclectic-Geek-Grrl-Queer-Disabled-Boychick-- : gossamer@tertius.net.au http://www.tertius.net.au/~gossamer/ : A weird imagination is most useful to gain full advantage of all : the features -- manpage for amd(8) From Harald.Meland@usit.uio.no Sun Jun 13 17:17:57 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 13 Jun 1999 18:17:57 +0200 Subject: [Mailman-Developers] Re: Mailman feature request In-Reply-To: Dave Cinege's message of "Sun, 13 Jun 1999 11:50:24 -0400" References: <19990410093058.A898@kcbbs.gen.nz> <3763D340.F97C24D7@psychosis.com> Message-ID: I'm Cc:ing mailman-developers, as either that or the Jitterbug database is where feature requests belong. [Dave Cinege] > I'd like an unsubscribe (or mass unsubscribe) field added to the > memebership management section. The pages with check boxes are cute > and everything, but cut&paste is much faster. I tend to agree -- and would additionally like to have a "Unsubscribe all" button (with some added safety pins to avoid blasting away your entire list by mistake). > Also I'd like to see a nice big 'unsubscribe' title at the bottom of > the list info page. I've already had 5 mentally challenged people > mail me that I had to point that out. Here's a patch that makes > things more obvious: I guess that the listinfo page could mention how to unsubscribe in larger writing -- but I don't want to scare users from changing their (other) subscription options, either. I think I'll have to ponder on how this best could be done a little while. > --- listinfo.html.orig Sun Jun 13 11:42:01 1999 > +++ listinfo.html Sun Jun 13 11:48:33 1999 > @@ -103,18 +103,18 @@ > > > > - Subscribers > + Subscribers (Unsubscribe) > > > > > + > + > + > +

> > > > -

> - > - > - > > > -- Harald From jwm@plain.co.nz Mon Jun 14 01:43:30 1999 From: jwm@plain.co.nz (John Morton) Date: Mon, 14 Jun 1999 12:43:30 +1200 (NZST) Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: References: <14175.22482.412218.700661@antares.plain.co.nz> <14175.23835.29300.892948@antares.plain.co.nz> Message-ID: <14180.20530.133448.516252@antares.plain.co.nz> Harald Meland writes: > As the extra complexity added by having to save session state on the > server side (i.e. have Mailman keep track of session IDs) is rather > large, and as Mailman isn't safe from package sniffing anyway (unless > you're running things on a SSL server, in which case cookie sniffing > shouldn't be of any trouble anyway), I settled for slightly less. True. Though stealing a cookie via packet sniffing will still require the thief to be on the same IP as the original cookie owner, or it will require them to fake their IP as well. This definitely makes the list vulnerable to only an extremely determined attacker. [Note, I'm not a python hacker, so bear with me :-) ] Do add the domain that this mailman for this list is supposed to be under (or the browser will send this cookie to every site you connect to!) and restrict the scripts that it is sent to to /mailman/ at worst, /mailman/admin and /mailman/admindb separately at best (allowing separate passwords for those two scripts is a needed feature for a proper distinction between list admins and moderators, anyway). Of course, you could already be doing this and I just missed it :-) > I have just commited a fix to CVS, based on these two new > SecurityManager functions: > > def MakeCookie(self): > client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' > issued = int(time.time()) > expires = issued + mm_cfg.ADMIN_COOKIE_LIFE > secret = self.password I'd prefer to grab the secret from a file that's refreshed via a cronjob every 24hrs or so. Generate it from something like a CRC32 of some /dev/urandom output (on a linux box, anyway) would do the trick. > mac = hash(secret + client_ip + `issued` + `expires`) Is the hash() function one way? How about: import md5 import base64 mac = base64.encodestring(md5.new(secret + client_ip + `issued` + `expires`).digest()) The FAQ talks about doing a second round of MD5 hashing to '...avoid an attack in which additional data is appended to the end of the cookie and a new hash recalculated by the attacker.', but I don't really understand why that's necessary. With any luck, someone will have implemented an HMAC (see RFC 2104, http://www.it.kth.se/docs/rfc/rfcs/rfc2104.txt) module for python that we could use. > return [client_ip, issued, expires, mac] > > def CheckCookie(self, cookie): > if type(cookie) <> type([]): > return 0 > if len(cookie) <> 4: > return 0 > client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' > [for_ip, issued, expires, received_mac] = cookie > if for_ip <> client_ip: > return 0 > now = time.time() > if not issued < now < expires: > return 0 Should we check that expires - issued = mm_cfg.ADMIN_COOKIE_LIFE ? > secret = self.password > mac = hash(secret + client_ip + `issued` + `expires`) See above. > if mac <> received_mac: > return 0 > return 1 > > Hopefully, this new cookie scheme will suffice -- if anyone do see > flaws in it, don't hesitate to get in touch. The combination of a cryptographic hashing function and a secret key that's regenerated on a 24hour cycle makes an attack by constructing a cookie infeasible (at least, within the useful lifetime of whatever hashing function we're using). Remaining sources of attacks are: Packet sniffing: They could steal the cookie this way. But they'd just steal the password, anyway, so it's a moot point. Use SSL if you're that paranoid. Stealing the cookie: Presumably by some method other than packet sniffing or direct access to your terminal; maybe a broken browser could be distributing the cookie to every site it meets. The attacker will need to fake your IP to the web server _and_ get the response back, which is rather hard. Getting access to your terminal: The short expiry time is supposed to help defeat this problem. The price to pay for the convenience of not having to type the password in every time. Perhaps having an option to turn off the use of cookies will keep the paranoid happy and allow admins to use their servers native authentication methods. Perhaps modules to interface between mailman and the various different web servers is a direction someone would like to go in? John. From tabbott@intekom.com Mon Jun 14 09:08:48 1999 From: tabbott@intekom.com (Tony Abbott) Date: Mon, 14 Jun 1999 10:08:48 +0200 Subject: [Mailman-Developers] Re: [Mailman-Users] Envelope from, sender, from, etc. References: Message-ID: <3764B890.BD9F7930@intekom.com> Per Starback wrote: > "Typically" is the key word here. The actual code uses GetSender > which prefers to use Sender: but uses From: if there is no Sender:. > So my messages which said > > From: starback@ling.uu.se > Sender: starback@objekt.ling.uu.se > > where rejected when only "starback@ling.uu.se" was a subscriber. According to my understanding of RFC822, GetSender should be the other way around, using Sender: as a fallback to From:. In fact, I had to patch it this way to enable me to subscribe to my mailing lists using Communicator, which was using "Sender: tony" (which is also incorrect, but that's besides the point. all other mailing list software works with From:) MailMan was trying to send the confirmation requests to the Sender: address, which was not working. In fact, for the purpose of sending such replies, it should actually be looking for a Reply-To: first. I don't really know the code, but I think this would require creating a separate GetSender for a) authorizing postings to a closed list, and b) generating replies to administrative requests. -t -- Tony Abbott tabbott@intekom.co.za Systems Administrator, Intekom Tel: +27-11-266-7800 http://www.intekom.co.za Fax: +27-11-315-0707 The information in this email and in any attachments is confidential and intended solely for the attention and use of the named addressee(s). This information may be subject to attorney and client or other privilege. It must not be disclosed to any person without Intekom's permission. From gonter@maestria.wu-wien.ac.at Mon Jun 14 09:20:30 1999 From: gonter@maestria.wu-wien.ac.at (Gerhard Gonter) Date: Mon, 14 Jun 1999 10:20:30 +0200 (MES) Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: <14180.20530.133448.516252@antares.plain.co.nz> from John Morton at "Jun 14, 99 12:43:30 pm" Message-ID: <199906140820.KAA27206@maestria.wu-wien.ac.at> Harald Meland writes: > As the extra complexity added by having to save session state on the > server side (i.e. have Mailman keep track of session IDs) is rather > large, and [...] In a local CGI application, we are storing cookies in an LDAP server which would be an excellent supplement for Mailman anyway. User database and some other things might be stored there. I toyed around with that idea in conjunction with our old Listprocessor but gave up on that because the Listprocessor is such a mess. +gg -- Gerhard.Gonter@wu-wien.ac.at Fax: +43/1/31336/702 g.gonter@ieee.org Zentrum fuer Informatikdienste, Wirtschaftsuniversitaet Wien, Austria From Harald.Meland@usit.uio.no Mon Jun 14 10:52:18 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 14 Jun 1999 11:52:18 +0200 Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: Gerhard Gonter's message of "Mon, 14 Jun 1999 10:20:30 +0200 (MES)" References: <199906140820.KAA27206@maestria.wu-wien.ac.at> Message-ID: [Gerhard Gonter] > Harald Meland writes: > > As the extra complexity added by having to save session state on the > > server side (i.e. have Mailman keep track of session IDs) is rather > > large, and [...] > > In a local CGI application, we are storing cookies in an LDAP server > which would be an excellent supplement for Mailman anyway. True -- I was only saying that for fixing the hole, such a major job would take too much time. For post-1.0 LDAP support might at some time be nice (although it would have to be a purely optional thing, of course). > User database and some other things might be stored there. I toyed > around with that idea in conjunction with our old Listprocessor but > gave up on that because the Listprocessor is such a mess. Maybe generalizing the interface for storing state in Mailman is something to think about. If we had such a thing, we could have a "marshal-dump to/from local file" subclass, an "LDAP-query" subclass, and so on... I think many of the other things we have put off until after 1.0 will have priority, though. -- Harald From Harald.Meland@usit.uio.no Mon Jun 14 12:59:43 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 14 Jun 1999 13:59:43 +0200 Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: John Morton's message of "Mon, 14 Jun 1999 12:43:30 +1200 (NZST)" References: <14175.22482.412218.700661@antares.plain.co.nz> <14175.23835.29300.892948@antares.plain.co.nz> <14180.20530.133448.516252@antares.plain.co.nz> Message-ID: [John Morton] > Harald Meland writes: > > As the extra complexity added by having to save session state on the > > server side (i.e. have Mailman keep track of session IDs) is rather > > large, and as Mailman isn't safe from package sniffing anyway (unless > > you're running things on a SSL server, in which case cookie sniffing > > shouldn't be of any trouble anyway), I settled for slightly less. > > True. Though stealing a cookie via packet sniffing will still require > the thief to be on the same IP as the original cookie owner, or it > will require them to fake their IP as well. I wasn't really thinking of cookie stealing, but rather on plain text password sniffing... and to remove that vulnerability, one would have to use SSL or somesuch. > [Note, I'm not a python hacker, so bear with me :-) ] > > Do add the domain that this mailman for this list is supposed to be > under (or the browser will send this cookie to every site you connect > to!) RFC 2109 has this to say: 4.3 User Agent Role 4.3.1 Interpreting Set-Cookie The user agent keeps separate track of state information that arrives via Set-Cookie response headers from each origin server (as distinguished by name or IP address and port). The user agent applies these defaults for optional attributes that are missing: [...] Domain Defaults to the request-host. (Note that there is no dot at the beginning of request-host.) ... so I think that the current behaviour of not specifying the cookie's domain at all is correct. > and restrict the scripts that it is sent to to /mailman/ at worst, > /mailman/admin and /mailman/admindb separately at best (allowing > separate passwords for those two scripts is a needed feature for a > proper distinction between list admins and moderators, anyway). Current behaviour is to restrict to /mailman (well, the code is really using path part of mm_cfg.DEFAULT_URL) -- to allow the same cookie to authenticate against both admin and admindb pages. If a separate admindb password is implemented, it won't be a problem to issue a cookie with a different name for authentication with that password (e.g. use the 'listname:admin' cookie for access to both admin and admindb, and also test for 'listname:admindb' if the first fails on admindb access). > I'd prefer to grab the secret from a file that's refreshed via a > cronjob every 24hrs or so. Uhm, then anyone getting their cookie just before the secret is refreshed will have to re-enter their password before their cookie should have expired. Do we really want that? > > mac = hash(secret + client_ip + `issued` + `expires`) > > Is the hash() function one way? Yup, at least for now (and I believe it wouldn't be of much use as a hashing function if it wasn't). > The FAQ talks about doing a second round of MD5 hashing to '...avoid > an attack in which additional data is appended to the end of the > cookie and a new hash recalculated by the attacker.', but I don't > really understand why that's necessary. Neither did I -- but I believe the FAQ answer made the assumption that the server stores more session state than Mailman does. > Should we check that expires - issued = mm_cfg.ADMIN_COOKIE_LIFE ? Depends on whether you want cookies issued directly before the site admin changes ADMIN_COOKIE_LIFE to go dead immediately or not until after they were set to expire on creation. > The combination of a cryptographic hashing function and a secret key > that's regenerated on a 24hour cycle makes an attack by constructing > a cookie infeasible (at least, within the useful lifetime of > whatever hashing function we're using). I'm hoping that using the list's encrypted admin password as secret, in combination with a relatively short expire time, is sufficient -- but I'm no cryptography expert. I _am_ trying to keep the applied security mechanisms within reason, though -- if you want a completely bullet-proof Mailman, use an SSL-enabled server. > Remaining sources of attacks are: > > Packet sniffing: They could steal the cookie this way. But they'd > just steal the password, anyway, so it's a moot point. Use SSL if > you're that paranoid. Exactly. > Stealing the cookie: Presumably by some method other than packet > sniffing or direct access to your terminal; maybe a broken browser > could be distributing the cookie to every site it meets. The > attacker will need to fake your IP to the web server _and_ get the > response back, which is rather hard. Hmmmm... how do proxies (e.g. web cache servers) enter into this picture? > Getting access to your terminal: The short expiry time is supposed > to help defeat this problem. I was wondering whether Mailman should re-issue a new cookie on each successful cookie authentication, but decided against it -- partly due to this possible problem, partly because it would annoy people who have their web browser warn them before accepting new cookies, and partly because anyone struggling with Mailman's web admin interface to a single list for more than (the default) three hours probably is such a humble person that having to enter the admin password once more won't be a big problem :) > The price to pay for the convenience of not having to type the > password in every time. Indeed. > Perhaps having an option to turn off the use of cookies will keep > the paranoid happy and allow admins to use their servers native > authentication methods. Perhaps modules to interface between mailman > and the various different web servers is a direction someone would > like to go in? An option to disable cookie authentication altogether is easily implemented (have a look at SecurityManager.WebAuthenticate()) -- but I don't know anything about "native authentication methods", so I think I'll put it off until I understand the issues better. -- Harald From claw@varesearch.com Tue Jun 15 19:08:54 1999 From: claw@varesearch.com (J C Lawrence) Date: Tue, 15 Jun 1999 11:08:54 -0700 Subject: [Mailman-Developers] Unsubscribed users still getting monthly reminders Message-ID: I have Mailman v 1.0b8 running at Kanga.Nu (yes, I know its old, I'll upgrade tonight), and have two list members complaining that they are no longer subscribed to a list and yet receive monthly password reminders. When I check the web interfaces, they are in fact unsubscribed. Ideas? -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From jcrey@uma.es Tue Jun 22 14:04:53 1999 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Tue, 22 Jun 1999 15:04:53 +0200 Subject: [Mailman-Developers] Mailman internationalization. Report from the trenches. VERY LONG Message-ID: <376F89F5.E098EA7A@uma.es> By the time being, we have made important progress for internationalizing mailman. Juan Carlos Rey has prepared a functional demo version of our proposed way to do it. This demos has the new ideas, with messages in english and spanish for the pages. All proposed ideas in our message dated Fri, 21 May 1999 14:57:39 +0200 with the subject: Re: [Mailman-Developers] features suggestion: languages have been implemented and work as described there. We have not translated, yet, the hardcoded message strings, but the code need to change their values depending on language is ready to be used. Now we are trying to reconciliate our chages with a CVS tree we have downloaded this morning. (Yes, we didn't know how to use CVS when we started). You can test the web interface at: http://joker.sci.uma.es/mailman/listinfo/test The list main language is spanish (espaņol) The admin password is "ejemplo" (be gentle, please :) We have concentrated on function, not on aspect, so it is a bit crude. The use of a message catalog in different languages will have a big impact on main Mailman development, so we would need your input on such an issue. We have found two ways for doing this: Using GNU gettext (which does not work completely in python and has some other implications, see attached conversation) our KISS approach: python modules with the messages in them. Like this: --- BEGIN es.py --- ErrorInvalidPasswd = 'Error: clave incorrecta' ListNotFound = 'la lista no se encuentra: %s' DEFAULT_MSG_FOOTER = """_______________________________________________ lista de distribucion %(real_name)s - %(real_name)s@%(host_name)s %(web_page_url)slistinfo/%(_internal_name)s """ --- END es.py --- To use the message catalog: import Catalog Msg = Catalog.MsgLang('es') print Msg.get('ErrorInvalidPasswd') Attached conversation with Dan Ohnesorg, who is interested in working in the project. ------ START -------- > > Acording with the article, there are many parts to consider: > - Character Sets > - Message Output > - Locales > - Character Input and display > - Documentation > > I think the areas we should consider are: > - Messages output to end user > - Character set Sure. I agree. > GNU gettext: > * advantages > - Easy to mantain, once parsed with 'xgettext', and compiled to .mo > file, with 'tupdate' is easy to update the catalog - new version of software can run with old catalogs and only some part of meesages is not translated - for developper of software is gettext clean to undestand a simple to include > * disadvantages > - A little complicated to generate. It must be, parsed, and > installed. It also > must be updated 'at hand' if catalog changes. > - At the moment, it is not fully operational for python It is the biggest problem. > - Take into account locales, mailman will be executed on the server, > language s a parameter in a form. Your software can switch locales indepently of server. For example in midnight commander are locales switched before parsing any output of sub processes > Catalog in lang.py > * disadvantages > - More difficult to mantain up to date. - More works for mailman developers > * advantages > - It's very easy to create messages we need (multilines) > - No need to be generated, once modified source files, it is ready > for use. Changes are in effect once saved the file. > - We can abstract inside lang.py operations we need for some > languages, whenever it gives the apropiate value to messages. > > I have given a glimpse to 'wstring' and 'intl' modules. I really don't > know how to use 'wstring' for our purpose. Please, if you know how to > use it, let me know too. I dont know how to use unicode in mail. I think it is not that what we now need. Unicode is fine in databses, printing etc, but mail with unicode charset is probably unredable by any client. intl module is probaly good. I will look on it and i will say more later. Your modules are working, but I am not sure, If they are acceptable for mailman developers. ---END--- -- ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de informática | | Universidad de Málaga - Espaņa | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From rfrancis@dti.net Wed Jun 23 19:24:13 1999 From: rfrancis@dti.net (Rob Francis) Date: Wed, 23 Jun 1999 14:24:13 -0400 (EDT) Subject: [Mailman-Developers] Viewing anyone's options w/o a password Message-ID: It seems kind of odd to me that if I know someone's email address on a list that I can go to the Info page and enter their email address, and then w/o a password see what options they have set. Granted, I can't change the options, but why even let someone get to see the options a person has selected? Just wondering if this was a decision made on purpose, or perhaps an oversight. -rob rfrancis@dti.net From claw@varesearch.com Wed Jun 23 20:54:25 1999 From: claw@varesearch.com (J C Lawrence) Date: Wed, 23 Jun 1999 12:54:25 -0700 Subject: [Mailman-Developers] Cooki e problem with current CVS tree Message-ID: I just revved a 1.0rc1 installation to the current CVS tree. Cookies no longer track properly -- you are asked to re-authenticate on every page and nothing gets done. Known fix? -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From ricardo@miss-janet.com Wed Jun 23 21:13:31 1999 From: ricardo@miss-janet.com (Ricardo Kustner) Date: Wed, 23 Jun 1999 22:13:31 +0200 (CEST) Subject: [Mailman-Developers] config.db Message-ID: Hi, Yesterday i was looking where mailman stores the pending-for-moderation messages ... it took a while before I found out... cause i'd never suspect it to be inside config.db ? what's the philosophy on that... it seems kinda weird to keep it in the configuration database... Ricardo. -- From troy@akropolys.com Tue Jun 22 21:20:51 1999 From: troy@akropolys.com (Troy Morrison) Date: Tue, 22 Jun 1999 13:20:51 -0700 (PDT) Subject: [Mailman-Developers] config.db In-Reply-To: Message-ID: > Yesterday i was looking where mailman stores the pending-for-moderation > messages ... it took a while before I found out... cause i'd never suspect it > to be inside config.db ? what's the philosophy on that... it seems kinda weird > to keep it in the configuration database... How interesting... I did the exact same thing. Someone sent a 1MB message to the list (picture attached) and I wanted to extract the picture, shrink it, and then let it go through (the reduced picture was 50k, and we allow attachments up to 100k on the list). It would have been nice if there had been a "forward to:" option on the managment page that would send the message to me. (I know, I know, that's not generally what the listadmin would want to do, but I thought I'd put in my $0.02). As it was, I copied config.db to another file, hacked it into my mailbox, and was able to get at it that way, but it was kind of annoying :). Troy From ricardo@miss-janet.com Wed Jun 23 22:17:06 1999 From: ricardo@miss-janet.com (Ricardo Kustner) Date: Wed, 23 Jun 1999 23:17:06 +0200 (CEST) Subject: [Mailman-Developers] config.db In-Reply-To: Message-ID: Hi, On 22-Jun-99 Troy Morrison wrote: > How interesting... I did the exact same thing. Someone sent a 1MB message > to the list (picture attached) and I wanted to extract the picture, shrink > it, and then let it go through (the reduced picture was 50k, and we allow > attachments up to 100k on the list). It would have been nice if there had > been a "forward to:" option on the managment page that would send the > message to me. (I know, I know, that's not generally what the listadmin > would want to do, but I thought I'd put in my $0.02). Very interesting indeed :) i had the same thing yesterday so i'll add $0.02 to that. > As it was, I copied > config.db to another file, hacked it into my mailbox, and was able to get > at it that way, but it was kind of annoying :). I could find hacks for getting it out there too but that's quite a hassle and some of my moderators are windows users and they can't do neat things like us :) actually one weird thing with one of our moderators is that if she approves a lot of mail on the list in the admindb interface, it often happens that some of the fastcgi scripts on our erver crash (well, we all the the system load tends to go sky high with the current version of mailman :( ) and at the same time the windows PC of the moderator totally freezes up... the only connection i think of is that the mail is being delivered to the moderator's mailbox at the same time as Netscape Mail tries to check POP mail from there... but it's still kinda weird to me... oh well let's just blame it on windows ;) Ricardo. -- From claw@varesearch.com Wed Jun 23 22:43:27 1999 From: claw@varesearch.com (J C Lawrence) Date: Wed, 23 Jun 1999 14:43:27 -0700 Subject: [Mailman-Developers] Setting Reply-To Message-ID: A peculiar need: I need to set Reply-To on a list to something OTHER than the list address. Specifically I need to set Reply-To to the address of another list. Can do? -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From lindsey@ncsa.uiuc.edu Wed Jun 23 22:57:49 1999 From: lindsey@ncsa.uiuc.edu (Christopher Lindsey) Date: Wed, 23 Jun 1999 16:57:49 -0500 (CDT) Subject: [Mailman-Developers] config.db In-Reply-To: from "Troy Morrison" at Jun 22, 99 01:20:51 pm Message-ID: <199906232157.QAA17665@ferret.ncsa.uiuc.edu> > How interesting... I did the exact same thing. Someone sent a 1MB message > to the list (picture attached) and I wanted to extract the picture, shrink > it, and then let it go through (the reduced picture was 50k, and we allow > attachments up to 100k on the list). It would have been nice if there had > been a "forward to:" option on the managment page that would send the > message to me. (I know, I know, that's not generally what the listadmin > would want to do, but I thought I'd put in my $0.02). As it was, I copied > config.db to another file, hacked it into my mailbox, and was able to get > at it that way, but it was kind of annoying :). Rupa Schomaker posted a patch to forward held messages to the listowner on May 30, 1999. I plan on adding an option (either personally or virtually through a co-worker :) to forward to another address entered via textbox -- this is useful when you've got multiple admins and don't want to spam them all with a held message. Anyhow, Rupa's patch should be in the mailman-users archive for May, 1999. Chris From gorgo@caesar.elte.hu Thu Jun 24 14:57:30 1999 From: gorgo@caesar.elte.hu (Gergely Madarasz) Date: Thu, 24 Jun 1999 15:57:30 +0200 (METDST) Subject: [Mailman-Developers] Re: Bug#40101: mailman: unexpected mailman error In-Reply-To: Message-ID: On Thu, 24 Jun 1999, Christoph Lameter wrote: > Package: mailman > Version: 1.0rc2-4 > Severity: normal > > Got this strange message send to me. Seems to be due to a cron job someone who is already subscribed tried to subscribe again. mailman should catch this exception and reply politely, I'm forwarding this upstream. > Date: Thu, 24 Jun 1999 06:39:05 -0700 > From: pptp-admin@opensource.captech.com > To: pptp-admin@opensource.captech.com > Subject: Unexpected Mailman error > > An unexpected Mailman error has occurred in > MailCommandHandler.ParseMailCommands(). Here is the traceback: > > Traceback (innermost last): > File "/var/lib/mailman/Mailman/MailCommandHandler.py", line 204, in ParseMailCommands > self.__dispatch[cmd](args, line, msg) > File "/var/lib/mailman/Mailman/MailCommandHandler.py", line 583, in ProcessConfirmCmd > self.ProcessConfirmation(cookie) > File "/var/lib/mailman/Mailman/MailList.py", line 1013, in ProcessConfirmation > self.ApprovedAddMember(email_addr, password, digest) > File "/var/lib/mailman/Mailman/MailList.py", line 905, in ApprovedAddMember > raise e, v > MMAlreadyAMember -- Madarasz Gergely gorgo@caesar.elte.hu gorgo@linux.rulez.org It's practically impossible to look at a penguin and feel angry. Egy pingvinre gyakorlatilag lehetetlen haragosan nezni. HuLUG: http://mlf.linux.rulez.org/ From klm@digicool.com Thu Jun 24 16:06:23 1999 From: klm@digicool.com (Ken Manheimer) Date: Thu, 24 Jun 1999 11:06:23 -0400 Subject: [Mailman-Developers] Re: Viewing anyone's options w/o a password References: <199906240500.BAA26239@python.org> Message-ID: <004b01bebe53$20898900$5a57a4d8@erols.com> On Wed, 23 Jun, Rob Francis wrote: > It seems kind of odd to me that if I know someone's email address on a > list that I can go to the Info page and enter their email address, and > then w/o a password see what options they have set. Granted, I can't > change the options, but why even let someone get to see the options a > person has selected? > > Just wondering if this was a decision made on purpose, or perhaps an > oversight. I'd actually say it's somewhere in between. Originally all the settings pages - admin and admindb, as well as the user options pages - were like the user options pages, not hidden behind a password. The others were moved behind the cookie wall, and i expect it would have been easy enough to hide the user options page, too, except that then you'd prevent users missing their password from getting at the "send me my password" option! Kinda defeats the purpose. The proper answer would be to make the user options page two tier, with the "send me my password" button in front of the cookie password, and the rest behind. Evidentally this extra elaboration was high enough effort to exceed the attention threshold available for the cookie-protection switchover, and nobody's revisited it since. And in truth, most of the telling information about the options is revealed on the roster page - the membership on the list, whether or not they're digest subscribers, and whether or not their delivery is disabled. There are many such rough edges - some for simple expediency, and some that would require more infrastructure to be properly addressed. (An example of the latter is holding messages for approval directly in the config.db - we should have at least a basic catalog mechanism in which the mailing lists can store and retrieve such messages. This would take yet more overhead effort than the simple accommodation we could make for cookies around the user options page...) Ken Manheimer klm@digicool.com From rfrancis@dti.net Thu Jun 24 16:52:23 1999 From: rfrancis@dti.net (Rob Francis) Date: Thu, 24 Jun 1999 11:52:23 -0400 (EDT) Subject: [Mailman-Developers] Re: Viewing anyone's options w/o a password In-Reply-To: <004b01bebe53$20898900$5a57a4d8@erols.com> Message-ID: > There are many such rough edges - some for simple expediency, and some that > would require more infrastructure to be properly addressed. (An example of > the latter is holding messages for approval directly in the config.db - we > should have at least a basic catalog mechanism in which the mailing lists > can store and retrieve such messages. This would take yet more overhead > effort than the simple accommodation we could make for cookies around the > user options page...) I kind of figured that was the case. Thanks for the very informative reply. I figured I'd at least get a vote in for moving all option type stuff behind a password. Seems to make sense to me, but hindsight, as they say, is 20/20. Thanks again, -rob From hebble@ncsa.uiuc.edu Thu Jun 24 22:54:31 1999 From: hebble@ncsa.uiuc.edu (Paul Hebble) Date: Thu, 24 Jun 1999 16:54:31 -0500 (CDT) Subject: [Mailman-Developers] Kerberos, AFS Patch Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---559023410-851401618-930261271=:13396 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello Mailman developers, Attached to this post please find a patch against the current Mailman CVS tree which adds support for Kerberos and AFS. Users who do not enable the Kerberos or AFS functionality will not experience any change in the functionality of their server vs. the current CVS tree. To enable support for Kerberos, first install Mailman on a system with a Kerberized httpd (such as Stronghold, or use mod_auth_kerb). You can then use the following configuration variables in mm_cfg.py to enable it: ADMIN_USERS = [] # A list of usernames which should be # considered site adminstrators when # authenticated via Kerberos. This is to # be used in place of the old "site admin # password" on a Kerberized server. KERBERIZED_SERVERS = [] # A list denoting which servers should be # considered Kerberized. Each entry # should consist of the preferred alias # for that machine concatenated with a ':' # and the port, to allow Kerberized and # non-Kerberized servers to co-exist on a # single machine. NONE_KERBERIZED = 0 # Boolean value which disables Kerberos on # all servers. This overrides # KERBERIZED_SERVERS. ALL_KERBERIZED = 0 # Boolean value to enable Kerberos on all # servers. This overrides NONE_KERBERIZED # and KERBERIZED_SERVERS. Of course there are some limitations to the Kerberos functionality. The Kerberized httpds I know of only support one Kerberos realm at a time. If you use Kerberos without SSL, you're crazy (your password will go in the clear). This patch has only been tested with Kerberos V5, but I see no reason it should not work with V4, because the httpd handles those differences anyway, I believe (you should upgrade to V5 anyway, though :). Kerberized servers should interoperate, including sharing lists, cleanly with non-Kerberized servers. Cookies and passwords (apart from Kerberos passwords) are now only used by non-Kerberized servers. In theory it should be possible to substitute other authentication methods in place of Kerberos, but this has not been tested. To enable support for AFS, use some or all of the following command-line arguments to `configure': --with-mail-preauth=COMMAND --with-mail-postauth=COMMAND --with-www-preauth=COMMAND --with-www-postauth=COMMAND --with-cron-preauth=COMMAND --with-cron-postauth=COMMAND These tell Mailman which commands to execute to get and destroy an AFS token before and after it performs mail-driven, web-based, and cron tasks. Different commands are available because your web server may have a different keytab file than your mail server, and who knows which server you might use to run the cron jobs. Of course non-AFS commands could be used instead, but this was added for AFS compatibility. As indicated by Christopher Lindsey in a previous post, we at NCSA are hoping to migrate to Mailman soon, and we need these changes to do so. We hope that this patch will be integrated into the main distribution so we don't have to maintain a parallel patch. Thank you for a useful product, and for reading all of that, -- Paul Hebble NCSA ---559023410-851401618-930261271=:13396 Content-Type: APPLICATION/octet-stream; name="patch-mailman.afs.kerberos.gz" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: H4sICCSVcjcAA3BhdGNoLW1haWxtYW4uYWZzLmtlcmJlcm9zAMxce3ebyJL/ 2/4UPcQZ5JGEhd5S4uw4tpPxHdvJsZ2Z3U1yNBi1JNYIdAHZ1s3ku29VNaAG gYQfdzfOOZEE1dXdVdW/enTD0BqNWPXcm7Nqld+b9nzI9w//uJR+nRk3fGTZ XLpkeq4TGNea5UgXp9OBORprs4U2tPxAuvELXDOl39ovWjCdyexcZ2SNtV/Y 1LDsqeHsnYWfh2NrzxhOLQc4RDer54eXB5kU29VqdS2LrTPXYf+YO0xvslqv X2v0mzWm93q97XK5vJn/1tWcU/N6nel6v97utxqi+a+/smq9Xq90WFl8/Prr Nsv+U5jhsLljDG+5F1g+HzIbpFVh7ow7zGCfLk6Zb00t2/BY4LJgYvlKHqty 3o2SwlyHV9j1PGB3VjABvuqeCh0PgSFnL33skjnGlDNjBv0O+VB7PXujbFdz GL5kpRL3PNcjHgoy8azxJGDKLoOLirK7u10u1nal3UMnp7D33OGeYZPgmOWM XG9qBBao1gTRXnM2cufQkwG9VPKYnFrOTUkRgkAOL30FB6pqGsjpF/YpsGxf e8+Dc473x6f8ltul3YpQdK9FiqYPWdE4ELbP3sFHyfYDbH/BbRjaLb80PWsW gHJLKlmTGk186JrawXB4EvBpCdvDZaEFawTTCfjY9RZsf5+pYzFptS8EnXeb hOy4AcMBfPL579y75p7rl3b7y4ECzczw/ak/huEqYC//5c5JeObEcMacLdy5 x5DizvXIZDwwpsB1td3QFrnt81x+CkmpUSMpiQ+U0nYso3jC70hzH2aoPP+S m/hZiqZVwSns/p/IIzGoQ+4E3AvH9jEUwmUwH41KuzSc1SYKLp7d7eGPDqV8 CGAQTO21aCoR5QKqRLN1NZkLTAUobfZbrX6jXQBTZQ5/AggSrDaIQ6Nf7y1h tVOvtFkZ/tf1eLG9EB+/XZ2dCjWBwrQTxwr+MDy/hGsa9RTZBf5Oq768BXqb wdrkg6ERGGC2yd9l9gVokEGppN5Aw0GEFBqOWq0wNUIhvIjmwCL+bO5zz1cB LUIOgoErzDxuH5p9sukn0RTQVEwRh88dmtIAO9plb5guWW48agLzfRYTfta/ JuyblSLSChOMwOASc+6TuPVaA5etXutK4BZ4C6lPc2xFQoOv2juL27A+XM8Y 85IE5+HQI2rthi9A9CD7hJMBKlydMdXE8AdAGcLk7E7d7Sc9y+YGyyWfofi0 I2CI2Oox+qc+QxiczmHB+fPZzF6QsyS2Ehi6DE2Xke2qq+xkPEca4Zy037gx BFBp5DqkvD+Jx0lg2JZZEmrSKdjQ9U4F1l1WtCEPRH098d6oKVebwvDoj3Sd GQeQOA8RX7zpAUolAsdYx59jJXzVbg17zsGOt2gNIDyvVfHW1tZT+IvJrOei piUQ/R2S10M0KYlYLOqvklxfFRRqBg/AXj4LGBmRr52dvTWGUafCsLK7lS3v xDFdzwMPmLI3MDFSd1uou1OrdGNtZ4UOdCNqPAC/YiMqSEZ0hZdgmVZXCZHZ hXtX+qweowfcZP19tRJDbN5qK289uQu2RRqWphDJ9q17L9nQ192syS87/HMC 8TUENszwOIjO4eCbbiC0C2MeX9M0QOWM7i7n11MreDsPAghOVJ9+IX6L66Hx +DSAHz4AgLEObY6uyF8bAyTpcsOAJBllV2eQt6D77vQhQ2q2CkQCKSZyjlXr t2p9XcqxIOSGMKCMH00pqAQLpHgsQhZl7oCeFBnuIb3yRJIAEeonvO1DSH7N pZwntOMUp9mdIrugfKLibuejZzmQGfhzO/BLSux0xpAnpENvl82XY9VEmLnE nVUEz0bv2R3MGof8mYYagifC5arkwvkKWM1vGANuTKZmeMMo+grxGKObGI4x SqpA0yynjH/U8IjbPOBnfAqSDFsod/yamdOhkvZnKRQ+hfbnLsjZGC7C2KYu zEevdyP7yf1TQZPWyBKJsQq5IXYeIyy3VwTnYpqEqlLkECfLXNSYNBXebCZ+ so35M25ao0XSzLRHGdUGxZLVJEYv++y0+FZkIgzrSX0kTHQDp5XYYL01rZhL UtxX4NZEccJn5hz8uhNANEm6nTuU5Rq2tsl+obcDYfhhECECgZYIBPSsuA+t IylWh9+hQDeRodNAurQVPUXzGzX+CE0/p4aXbciDZzQpHquL4QlhhwN8QKQv Woc6iOdHpaZaE/VcruuNCvjBtYhFfzhw8KThBMIo4sjyMRYCLAUP4y3kmht0 anJIYvfZmAfQMZkCXoEIJ5PXobh9KXwSpbDLGg3+ZTrIoTUu4kdDsqejnEjf jIQjDWtbURouL79VMy9kjjRc2SDDiSXtXFAJS38829jUH2LmaUg5sD3EryML AtaAD1PCRGFtbPvJGcatf/hwN67ZrIt1JaLcQFei2bo0AohyFxig1lr9Wrtf 6xWIcmUOUr2r1us3mv16Zxni6l2R6sGHhPAehzTU5FPwJP5n9fV0WoXlABlU VZjzG/VrWPzRREHsgu6KEhNcQUMpxdHLC3bkUurF72eG4wOJJqxfziiJ2UfD 8/mVMfZLarr+JY8oqv6vzQSfyjxaAev4ZFbqUsyiJBmhg2YsJEbi+eEtOkKv dQa9pMm15yVJRtJWpHwrMUhtitX7Ndma9TY6rjJ+1vWEA1N9HggskbLps8Uy oc6zfCkjql5TWi7Mv7TkPZWWQpS5UzPsSsr+sNJaze5FDK06u6teu/eiA5nr JYfAjlMJIgT4PEbUbxE+83VcXHtYhIe7jgfEJ1UE+Y1coqgxh48pvE8xXlFo mTsxjN6rvhRP+ImJlpaOOW/OcuqQRKJpNhQ9h7azuDxQ1VksHqTnLAYPVnIW k8dpOHM+G9Ur4psH6DZyBIW0qKoFNZVDmNZHDtmq1HMIsyWb1/kG4UUll2It RemyEFbGYlfXpzEqpsVsumDUgCX6Q32RC2g2Ki3wAC09rF2/5tM3L/3Xe/Ch qSrWVswZBq+ZW8sZEjR8Xp15HFrc8mEVW8bSWIlipukIIbULtyaKycGOp3LP CmNW+GRtGKbDmJwg5ocPYUTgujaCiUlyA5iYgsKPgxnELx1Wh/Cj0W/UC8Qv y/bRkSCITiB8aXT6za4cvjQrPYxempVG5r6LtE/wFqACD7rgKYiXzPDGsZY8 Hsw9B9thoiz9+6F1dcRHBubVuZqSCDL1JN2Pg0S9hSmP3u43NiVNidbhEYN6 Exj0a/V+Uz531W3jCQH8CBOmsN5xZk15jCP7rIt5j8hdPZ+5jr3YZhnVDKDU 23h64ODo7OR88Ony+OISrn3+CldOTwe/H1+8Pb44+e/jI7hY2y6ffzg/Xrm4 /D2A5n/EHCD1OD25vBocHVwdDI5OLrb2mQsTNIKJ9j+u5ZQ+Xhy/O/lPCFER DygCxk3JtZSz+bVtmQPCiB988ZNbt4LFmeEY4zUIsEqXaV6rZMujKB1cy81O nIrkWlkWk+QGVD1xGqXeFbYWHo6wpjPXC8CM3BuLb7OR507Z3LNniOTRzeh3 TC1Eu10Of3p8DH4TbeMFu3p71MeiMR77owz9GsyV2a4ptq7wHAde9a2Ax7Wt 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 hxIlEoJSFy9P/+PkOiWvMuOLw4/3lgG2vOBTB6j+MYpdtL0Iz9bRDi9YoNjg sNueWbNFIqLpQUuzAl4ctcrBKGMdDJVMUEuhEjwfflygCwkRiUmcXs0UMP+u CNEYRKtU5FTKIUhOOOeBZMcKmIBYptdl5cjZZGGaRtCjEqRpFCBGzFUukdeM cIuiRLIk6UjXyCtGmJN0tHsU2GH5/nYaZDIteqgYEaUyJwRGkYNOt9W86Z8f hqttpxnLgcpv5Kp09Zx94gcQHJzvlYtx6C8//5IC0rFAjM37IoZJmchzyhJx sRo0J5GQErCRV43ioyhaz0hecwNOCgyTsdLrj8xLsP4hZvKKYW7yyrHs5OU+ P/mLZzJUyppMws5SPujPI+CsZKZUUWWlXLCKkVBvI4WU6q9lolyXk+D29jag jVIlmX1SxQjmSaXIOunxSxi3gSKWCtGJESqg9ayLVEOlZC3zNlFCuUEy9gVU kFJa1UC5WoiD8fonF3s8/DLtkzOBEzFRi0lYVQCtZKJcMxBYyyWrmIgVN1JB ucFaJiqVOSF8HkVUAUYdd9vXAS2V6/hdoDDk2mJyL72lMluug8yWnyOYvaVg oFYnByQl+ptUJDZR7NDMXSSkBEIRqdpq0Xqx2ES5lRYJBSOg3ozQqn4rFWOE xwPjSc9KGBHyIwzFSgGSzIXyIl6EBBopEJvAl3wh8kbMbDfLdDJ0DMyVhaEw TQ0dDfAkcTorv3DY7WrAB8fCmQv3yZ3ad9vEtNdkuSCIRIOfctAoea1jhjql clRijN8iwZw9Vh6IVl8+Yw81Y3Mr6Gogy6CAQUkhKrMCepQstSL3nvTo1iNy T6/8wQlgLjCDgbtYDtkiDJvMvLfnFhspj61HXIZZ2HQ7Pz90z09yxk9MJyN+ m9/o3vAJurN7QIbW1H7cI+R9jo/8WD5uoVSteFN2B94JD3Rxf02yB4AovXC2 R6FU+yYJJrgFEMa2jj+4fU/lhopfhKzhEmdKXucpaYVMoUJPMKziHyJHkPKC 3mAzB9bNnQnmVHCpoKkfXHNRS4cu6KU9+mRh1hAaTFROEhBfRWGYFmPb7PQN QEmiqCUtOMMQghKjsLoW9DHRLSnO/PCsweXFUY+u7IK5x79BK/EXfxLtWJtE ylfSqpHKp2t6IuXzXtcZ9nv3jW3c6cDTnci/tnm3di7bZ4OT1tHNWYak/h2X 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 BgRybM0AAA== ---559023410-851401618-930261271=:13396-- From che@debian.org Sat Jun 26 00:02:19 1999 From: che@debian.org (Ben Gertzfield) Date: 25 Jun 1999 16:02:19 -0700 Subject: [Mailman-Developers] Bug in GatewayManager.py, 1.0rc2 Message-ID: I'm not subscribed to this list, so please Cc: me on any replies. I hope this is the right place to send bug reports. Anyway, the bug looks like a think-o in GatewayManager.py: == 8< cut here 8< == Bug in Mailman version 1.0rc2 We're sorry, we hit a bug! If you would like to help us identify the problem, please email a copy of this page to the webmaster for this site with a description of what happened. Thanks! Traceback: Traceback (innermost last): File "/var/lib/mailman/scripts/driver", line 112, in run_main main() File "/usr/lib/mailman/Mailman/Cgi/admindb.py", line 112, in main HandleRequests(doc) File "/usr/lib/mailman/Mailman/Cgi/admindb.py", line 200, in HandleRequests list.HandleRequest(request, v, form[comment_key].value) File "/usr/lib/mailman/Mailman/ListAdmin.py", line 122, in HandleRequest self.HandlePostRequest(request_data[2:], value, comment) File "/usr/lib/mailman/Mailman/ListAdmin.py", line 131, in HandlePostRequest self.Post(msg, 1) File "/usr/lib/mailman/Mailman/MailList.py", line 1285, in Post self.SendMailToNewsGroup(msg) File "/usr/lib/mailman/Mailman/GatewayManager.py", line 143, in SendMailToNewsGroup msg.SetHeader('Subject', '%s(no subject)' % prefix) NameError: prefix ------------------------------------------------------------------------ Environment variables: Variable Value DOCUMENT_ROOT /var/www/sluglug UNIQUE_ID N3QIwYByMfAAAC2oPIw HTTP_ACCEPT_ENCODINGgzip CONTENT_LENGTH 315 CONTENT_TYPE application/x-www-form-urlencoded PATH_TRANSLATED /var/www/sluglug/sluglug REMOTE_ADDR 198.4.83.36 GATEWAY_INTERFACE CGI/1.1 HTTP_COOKIE sluglug:admin="(lp0\012S'198.4.83.36'\012p1\012aI930351160\012aI930361960\012aI-1683555072\012a." SERVER_PROTOCOL HTTP/1.0 HTTP_ACCEPT_LANGUAGEen REMOTE_PORT 4012 SERVER_PORT 80 HTTP_CONNECTION Keep-Alive HTTP_USER_AGENT Mozilla/4.5 [en] (X11; I; Linux 2.2.10 i586) HTTP_ACCEPT_CHARSET iso-8859-1,*,utf-8 HTTP_ACCEPT image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* REQUEST_URI /mailman/admindb/sluglug PATH /bin:/usr/bin:/sbin:/usr/sbin QUERY_STRING SCRIPT_FILENAME /usr/lib/mailman/cgi-bin/admindb PATH_INFO /sluglug HTTP_HOST sluglug.ucsc.edu REQUEST_METHOD POST SERVER_SIGNATURE SCRIPT_NAME /mailman/admindb SERVER_ADMIN ben@cse.ucsc.edu SERVER_SOFTWARE Apache/1.3.3 (Unix) Debian/GNU PYTHONPATH /var/lib/mailman HTTP_REFERER http://sluglug.ucsc.edu/mailman/admindb/sluglug SERVER_NAME sluglug.ucsc.edu Content-type: text/html Database Updated... ------------------------------------------------------------------------ Administrative requests for 'Sluglug' mailing list View or edit the list configuration information There are no pending requests. ------------------------------------------------------------------------ Sluglug list run by che@debian.org [Delivered by Mailman] v 1.0rc2 == 8< cut here 8< == Here's a patch that might fix this. I'm not sure, but at a quick glance this might solve the problem: --- GatewayManager.py.orig Fri Jun 25 15:56:06 1999 +++ GatewayManager.py Fri Jun 25 15:56:52 1999 @@ -140,7 +140,7 @@ if not re.match('(re:? *)?' + re.escape(subjpref), subj, re.I): msg.SetHeader('Subject', '%s%s' % (subjpref, subj)) else: - msg.SetHeader('Subject', '%s(no subject)' % prefix) + msg.SetHeader('Subject', '%s(no subject)' % subjpref) if self.reply_goes_to_list: del msg['reply-to'] msg.headers.append('Reply-To: %s\n' % self.GetListEmail()) Ben Gertzfield -- Brought to you by the letters S and D and the number 2. "Sculch is junk." Debian GNU/Linux maintainer of Gimp and GTK+ -- http://www.debian.org/ From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Sun Jun 27 22:27:27 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Sun, 27 Jun 1999 17:27:27 -0400 (EDT) Subject: [Mailman-Developers] forwarded message from David Thiessen Message-ID: <14198.38719.23553.585277@anthem.cnri.reston.va.us> --xVf5QvoNib Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Resending to the list since I just got back from vacation and am too swamped to look at this right now... -Barry --xVf5QvoNib Content-Type: message/rfc822 Content-Description: forwarded message Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_72982e8a_72b50c1b$3f22a4" Received: from cnri.reston.va.us (ns.cnri.reston.va.us [132.151.1.1]) by newcnri.cnri.reston.va.us (8.9.1a/8.9.1) with SMTP id WAA03151 for ; Wed, 23 Jun 1999 22:26:08 -0400 (EDT) Received: from python.org (parrot [132.151.1.90]) by cnri.reston.va.us (8.9.1a/8.9.1) with ESMTP id WAA26351 for ; Wed, 23 Jun 1999 22:26:05 -0400 (EDT) Received: from hotmail.com (law2-f101.hotmail.com [216.32.181.101]) by python.org (8.9.1a/8.9.1) with SMTP id WAA24477 for ; Wed, 23 Jun 1999 22:25:49 -0400 (EDT) Received: (qmail 55590 invoked by uid 0); 24 Jun 1999 02:25:13 -0000 Received: from 203.61.155.3 by www.hotmail.com with HTTP; Wed, 23 Jun 1999 19:25:10 PDT Message-ID: <19990624022513.55589.qmail@hotmail.com> From: David Thiessen To: bwarsaw@python.org Subject: Documentation for Mailman Date: Thu, 24 Jun 1999 12:25:10 EST X-Originating-IP: [203.61.155.3] This is a multi-part message in MIME format. ------=_NextPart_000_72982e8a_72b50c1b$3f22a4 Content-Type: text/plain; format=flowed To whom it may concern: I have recently installed Mailman on a system where I work and I have found it to be a fantastic software package. But to use it here, the people need documentation and so I have written some. I was not quite sure where to send it, so I grabbed your email address. It is just a general users guide that I needed and thought you may be able to use. Please do with it what you wish. It is not 100% of the way there, but as I said, I thought it might help. It has been written using MS Word 97 (apologies), so if there are any problems reading it or if you would like me to do some changes to it, just drop me a note. And to repeat myself one more time, Mailman is a fantastic program which I hope the use of will continue to expand. If it is successful where I work, you may be able to add the company name to your current users list - and trust me it will look good. By the way, when is the date for a final release. Regards, David Thiessen ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com ------=_NextPart_000_72982e8a_72b50c1b$3f22a4 Content-Type: application/msword; name="Mailman Documentation.doc" Content-Disposition: attachment; filename="Mailman Documentation.doc" Content-Transfer-Encoding: base64 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAC AAAAxwAAAAAAAAAAEAAAyQAAAAEAAAD+////AAAAAMUAAADGAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////////spcEAWQAJBAAACBK/AAAAAAAAEAAAAAAABAAA 64wAAA4AYmpiavNX81cAAAAAAAAAAAAAAAAAAAAAAAAJBBYAHsgAAJE9AQCR PQEA2ogAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAAAAAA AAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAF0AAAAAADoEAAAA AAAAOgQAADoEAAAAAAAAOgQAAAAAAAA6BAAAAAAAADoEAAAAAAAAOgQAABQA AAAAAAAAAAAAAE4EAAAAAAAATgQAAAAAAABOBAAAAAAAAE4EAAA4AAAAhgQA ABwAAACiBAAApAAAAE4EAAAAAAAAAiIAACoBAAB6BQAAJAEAAJ4GAAAWAAAA tAYAAAAAAAC0BgAAAAAAALQGAAAAAAAAtAYAAKoBAABeCAAAfAAAANoIAABA AAAAxyEAAAIAAADJIQAAAAAAAMkhAAAAAAAAySEAAAAAAADJIQAAAAAAAMkh AAAAAAAAySEAACQAAAAsIwAA9AEAACAlAACKAAAA7SEAABUAAAAAAAAAAAAA AAAAAAAAAAAAOgQAAAAAAAAaCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BgAA AAAAALQGAAAAAAAAGgkAAAAAAAAaCQAAAAAAAO0hAAAAAAAAFhIAAAAAAAA6 BAAAAAAAADoEAAAAAAAAtAYAAAAAAAAAAAAAAAAAALQGAAAAAAAAegUAAAAA AAAWEgAAAAAAABYSAAAAAAAAFhIAAAAAAAAaCQAAnAQAADoEAAAAAAAAtAYA AAAAAAA6BAAAAAAAALQGAAAAAAAAxyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA TgQAAAAAAABOBAAAAAAAADoEAAAAAAAAOgQAAAAAAAA6BAAAAAAAADoEAAAA AAAAGgkAAAAAAADHIQAAAAAAABYSAAAeBgAAFhIAAAAAAAA0GAAAhgIAALcf AADQAQAAOgQAAAAAAAA6BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuyEAAAwAAAC0BgAA AAAAAEYFAAA0AAAA4GTJvee9vgFOBAAAAAAAAE4EAAAAAAAAtg0AAGAEAACH IQAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAADU1haWxtYW4gVXNlciBNYW51YWwNDQ0BDQ0NDQ0NDQ0NRWRpdGVk IGJ5DURhdmlkIFRoaWVzc2VuDQ0NDQ0NDVRhYmxlIG9mIENvbnRlbnRzOg0N EyBUT0MgXG8gIjEtMiIgFA1JbnRyb2R1Y3Rpb24JEyBQQUdFUkVGIF9Ub2M0 NTQ4NTkzNDUgXGggARQzFQ1TdWJzY3JpcHRpb24JEyBQQUdFUkVGIF9Ub2M0 NTQ4NTkzNDYgXGggARQzFQ1TdWJzY3JpcHRpb24gUGFnZQkTIFBBR0VSRUYg X1RvYzQ1NDg1OTM0NyBcaCABFDMVDVN1YnNjcmlwdGlvbiBDb25mb3JtYXRp b24JEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNDggXGggARQ0FQ1WaWV3aW5nIFN1 YnNjcmliZXJzIExpc3QJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNDkgXGggARQ1 FQ1TdWJzY3JpYmVyIE9wdGlvbnMJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNTAg XGggARQ1FQ1BZG1pbmlzdHJhdGlvbgkTIFBBR0VSRUYgX1RvYzQ1NDg1OTM1 MSBcaCABFDYVDUdlbmVyYWwgT3B0aW9ucwkTIFBBR0VSRUYgX1RvYzQ1NDg1 OTM1MiBcaCABFDcVDU1lbWJlcnNoaXAgTWFuYWdlbWVudAkTIFBBR0VSRUYg X1RvYzQ1NDg1OTM1MyBcaCABFDExFQ1Qcml2YWN5IE9wdGlvbnMJEyBQQUdF UkVGIF9Ub2M0NTQ4NTkzNTQgXGggARQxMhUNUmVndWxhci1tZW1iZXIgKG5v bi1kaWdlc3QpIE9wdGlvbnMJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNTUgXGgg ARQxNRUNRGlnZXN0LW1lbWJlciBPcHRpb25zCRMgUEFHRVJFRiBfVG9jNDU0 ODU5MzU2IFxoIAEUMTYVDUJvdW5jZSBPcHRpb25zCRMgUEFHRVJFRiBfVG9j NDU0ODU5MzU3IFxoIAEUMTgVDUFyY2hpdmFsIE9wdGlvbnMJEyBQQUdFUkVG IF9Ub2M0NTQ4NTkzNTggXGggARQxOBUNTWFpbC1OZXdzIGFuZCBOZXdzLU1h aWwgZ2F0ZXdheXMJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNTkgXGggARQxORUN FQ0MSW50cm9kdWN0aW9uDQ1UaGUgTWFpbG1hbiBwcm9ncmFtIGlzIGEgd2Vi IGJhc2VkIG1haWxpbmcgbGlzdCB1dGlsaXR5IHRoYXQgYWxsb3dzIGRpc2N1 c3Npb24gZ3JvdXBzIHRvIGJlIHNldCB1cCB3aXRoIG9ubGluZSBhY2Nlc3Mu IE1haWxtYW4gaGFzIGFsbCBvZiB0aGUgZmVhdHVyZXMgeW91IGV4cGVjdCBm cm9tIHN1Y2ggYSBwcm9kdWN0LCBwbHVzIGludGVncmF0ZWQgc3VwcG9ydCBm b3IgdGhlIHdlYiAoaW5jbHVkaW5nIHdlYiBiYXNlZCBhcmNoaXZpbmcpLCBh dXRvbWF0ZWQgYm91bmNlIGhhbmRsaW5nIGFuZCBpbnRlZ3JhdGVkIHNwYW0g cHJldmVudGlvbi4gVW5saWtlIG1vc3Qgc2ltaWxhciBwcm9kdWN0cywgTWFp bG1hbiBnaXZlcyBlYWNoIG1haWxpbmcgbGlzdCBhIHdlYiBwYWdlIGFuZCBh bGxvd3MgdXNlcnMgdG8gc3Vic2NyaWJlLCB1bnN1YnNjcmliZSBhbmQgc2V0 IG9wdGlvbnMgb3ZlciB0aGUgd2ViLiBFdmVuIHRoZSBsaXN0IG1hbmFnZXIg Y2FuIGFkbWluaXN0ZXIgaGlzIG9yIGhlciBsaXN0IGVudGlyZWx5IGZyb20g dGhlIHdlYi4gTWFpbG1hbiBhbHNvIGludGVncmF0ZXMgbW9zdCBmdW5jdGlv bnMgcGVvcGxlIHdhbnQgdG8gZG8gd2l0aCBtYWlsaW5nIGxpc3RzLCBpbmNs dWRpbmcgYXJjaGl2aW5nLCBtYWlsLXRvLW5ld3MgZ2F0ZXdheXMsIGFuZCBh dXRvbWF0aWMgd2ViIHBhZ2UgY3JlYXRpb24gZm9yIG5ldyBtYWlsaW5nIGxp c3RzLiBTdWJzY3JpcHRpb24gdG8gam9pbiBhIG1haWxpbmcgbGlzdCBpcyBz aW1wbHkgZG9uZSBieSBjaG9vc2luZyB0aGUgbGlzdCB5b3Ugd291bGQgbGlr ZSB0byBzdWJzY3JpYmUgdG8gYW5kIHRoZW4gYWRkaW5nIHlvdXIgZS1tYWls IHRvIHRoZSBsaXN0LiBBZG1pbmlzdHJhdGlvbiBvZiB0aGUgbWFpbGluZyBs aXN0IGlzIGFsc28gd2ViIGJhc2VkIGFuZCB0aGVyZWZvcmUgbWVhbnMgdGhh dCBsaXN0IGNhbiBiZSBhZG1pbmlzdGVyZWQgZnJvbSBhbnkgbG9jYXRpb24g d2l0aCBpbnRlcm5ldCBhY2Nlc3MgdG8gbWFpbGluZyBsaXN0IHdlYiBwYWdl Lg1NYWlsbWFuIGlzIGZyZWUgc29mdHdhcmUuIEl0IGlzIGRpc3RyaWJ1dGVk IHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4NDQ0NU3Vi c2NyaXB0aW9uDQ1TdWJzY3JpcHRpb24gUGFnZQ0NU3Vic2NyaXB0aW9uIHRv IG1haWxpbmcgbGlzdCBpcyBzaW1wbHkgYWNoaWV2ZWQgYnkgZ29pbmcgdG8g dGhlIFVSTCB3aGVyZSB0aGUgTWFpbG1hbiBwcm9ncmFtIGlzIGxvY2F0ZWQg YW5kIHRoZW4gY2hvb3NpbmcgZnJvbSB0aGUgYXZhaWxhYmxlIGxpc3RzIHRv IGpvaW4uIFRoaXMgkUxpc3RpbmZvkiBwYWdlIGRpc3BsYXlzIHRoZSBsaXN0 IG9mIGF2YWlsYWJsZSBtYWlsaW5nIGxpc3RzIHdoaWNoIGFyZSBzaG93biBp biBhbHBoYWJldGljIG9yZGVyIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxpc3Qg Zm9sbG93ZWQgYnkgYSBvbmUtbGluZSBkZXNjcmlwdGlvbi4gRnVydGhlciBp bmZvcm1hdGlvbiBvbiBhIHBhcnRpY3VsYXIgbWFpbGluZyBsaXN0IG9yIHN1 YnNjcmlwdGlvbiB0byBhIGxpc3QgY2FuIGJlIGZvdW5kIGJ5IHNlbGVjdGlu ZyB0aGUgbmFtZSBvZiB0aGUgbWFpbGluZyBsaXN0IGRlc2lyZWQuDQ1PbmNl IGEgbWFpbGluZyBsaXN0IGlzIHNlbGVjdGVkIGZyb20gdGhlIExpc3RpbmZv IHBhZ2UsIHVzZXJzIGNhbiBnZXQgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgbGlzdCBvbiBhIGxpc3Qgc3VtbWFyeSBwYWdlLiBUaGlzIHBhZ2Ug aW5jbHVkZXMgYSBzaG9ydCBibHVyYiBvbiB0aGUgbGlzdCBpdHNlbGYsIHN1 Y2ggYXMgdGhlIG1haW4gdG9waWMgb2YgZGlzY3Vzc2lvbiBvZiB0aGUgbWFp bGluZyBsaXN0LCB0YXJnZXQgYXVkaWVuY2UsIGFwcHJveGltYXRlIGZyZXF1 ZW5jeSBvZiBvZmZpY2lhbCBtYWlsLW91dHMgYW5kIGV4YW1wbGVzIG9mIHRo ZSB0eXBlIG9mIGNvbnRlbnQgb25lIGNhbiBleHBlY3QgZnJvbSB0aGVpciBz dWJzY3JpcHRpb24uIFRoZSB3ZWIgcGFnZSBhbHNvIGluY2x1ZGVzIGluZm9y bWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yIG9m IGEgbGlzdCBpZiB5b3UgaGF2ZSBhIHBhcnRpY3VsYXIgcXVlc3Rpb24gYXMg d2VsbCBhcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYWN0dWFsbHkgc3Vic2Ny aWJlIHRvIHRoZSBtYWlsaW5nIGxpc3QuDQ1TdWJzY3JpcHRpb24gdG8gYSBs aXN0IGlzIGEgdmVyeSBzaW1wbGUgdGFzayBvZiBlbnRlcmluZyBhIGRlc3Rp bmF0aW9uIGVtYWlsIGFkZHJlc3MgYW5kIHBhc3N3b3JkIHRvIGFzc29jaWF0 ZSB3aXRoIHRoaXMgYWRkcmVzcy4gVXNlcnMgY2FuIGFsc28gY2hvb3NlIHRv IHJlY2VpdmUgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbGluZyBsaXN0IGluIGEg ZGlnZXN0IGZvcm0uIFRoaXMgYmFzaWNhbGx5IG1lYW5zIHRoYXQgaW5zdGVh ZCBvZiByZWNlaXZpbmcgZXZlcnkgbWVzc2FnZSBzZW50IGZyb20gdGhlIG1h aWxpbmcgbGlzdCBzZXBhcmF0ZWx5IHRoZXkgd2lsbCBiZSBidW5kbGVkIHRv Z2V0aGVyIGFuZCBzZW50IG91dCB0byB5b3UgaW4gZGFpbHkuIFRoZSBtZXNz YWdlcyByZWNlaXZlZCBieSB0aGUgbGlzdCBvdmVyIGEgc2V0IHBlcmlvZCBv ZiB0aW1lIGFyZSBjb21iaW5lZCBpbnRvIG9uZSBtZXNzYWdlIGFuZCBzZW50 IHRvIHRoZSB1c2VyIGluIHRoaXMgZm9ybWF0Lg0NVGhlIG90aGVyIGZhY2ls aXR5IHdoaWNoIGlzIGF2YWlsYWJsZSB0byB1c2VycyB3aG8gYXJlIGFscmVh ZHkgbWVtYmVycyBvZiBhIHNwZWNpZmljIG1haWxpbmcgbGlzdCwgaXMgdGhh dCB0aGV5IGNhbiBjaGFuZ2UgY2VydGFpbiBvcHRpb25zIGZvciBhIHNwZWNp ZmljIG1haWxpbmcgbGlzdC4gVGhpcyBpcyBhY2hlaXZlZCB2aWEgdGhlaXIg ZGV0YWlscyBwYWdlIHdoaWNoIGlzIGFjY2Vzc2libGUgYnkgZWl0aGVyIHNl bGVjdGluZyB0aGVpciBuYW1lIGZyb20gdGhlIHN1YnNjcmliZXIgbGlzdCBh dmFpbGFibGUgYnkgcHJlc3Npbmcgk1ZpZXcgU3Vic2NyaWJlciBMaXN0lCBv ciBhbHRlcm5hdGl2ZWx5IGJ5IGVudGVyaW5nIGluIHRoZWlyIGVtYWlsIGFk ZHJlc3MgYW5kIHByZXNzaW5nIJNFZGl0IE9wdGlvbnOULg0NDVN1YnNjcmlw dGlvbiBDb25mb3JtYXRpb24NDU9uY2UgYW4gZW1haWwgYWRkcmVzcyBhbmQg cGFzc3dvcmQgaGFzIGJlZW4gZW50ZXJlZCwgYW4gZW1haWwgaXMgc2VudCB0 byB0aGUgYWRkcmVzcyBnaXZlbi4gVGhpcyBpcyBhIGNvbmZvcm1hdGlvbiBl bWFpbCB0aGF0IHN0b3BzIHVzZXJzIHN1YnNjcmliaW5nIG90aGVyIHBlb3Bs ZSB3aXRob3V0IHRoZWlyIGtub3dsZWRnZSB0byBhIG1haWxpbmcgbGlzdC4g SXQgaXMgYWxzbyB1c2VmdWwgaWYgdGhlIGluY29ycmVjdCBlbWFpbCBhZGRy ZXNzIGhhcyBiZWVuIHR5cGVkLiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFp bCBpbmNsdWRlIHRoZSBJUCBhZGRyZXNzIHRoZSBjb21wdXRlciB3aGVyZSB0 aGUgc3Vic2NyaXB0aW9uIHdhcyBpbml0aWF0ZWQsIHRoZSBlbWFpbCBhZGRy ZXNzIHNwZWNpZmllZCwgdGhlIGxpc3Qgc3Vic2NyaWJlZCB0byBhbmQgaW5z dHJ1Y3Rpb25zIG9uIGhvdyB0byBjb25maXJtIHlvdXIgc3Vic2NyaXB0aW9u Lg0NVGhlIGFjdHVhbCBjb25mb3JtYXRpb24gb2YgdGhlIHN1YnNjcmlwdGlv biBpcyBjb21wbGV0ZWQgYnkgc2ltcGx5IHJlcGx5aW5nIHRoZSBlbWFpbCBy ZWNlaXZlZC4gU3BlY2lmaWMgZGV0YWlscyBmb3IgdGhlIHJlcGx5IGFyZSBn aXZlbiBpbiB0aGUgbWVzc2FnZS4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHNp bXBseSBzZWxlY3QgkVJlcGx5kiBpbiB5b3VyIGVtYWlsIHByb2dyYW0gYW5k IHNlbmRpbmcgaXQgd2l0aG91dCBhbnkgY2hhbmdlcyB0byB0aGUgY29udGVu dCBvZiB0aGUgbWFpbC4gT3RoZXJ3aXNlIGl0IGlzIHNpbXBseSBhIGNhc2Ug b2YgcmVwbHlpbmcgdG8gdGhlIGNvcnJlY3QgYWRkcmVzcyB3aXRoIJFjb25m aXJtkiBhcyB3ZWxsIGFzIHRoZSByZXF1ZXN0IG51bWJlciBnaXZlbiBpbiB0 aGUgkVN1YmplY3Q6kiBhcmVhIG9mIHlvdXIgcmVwbHkuIEZvciBleGFtcGxl IJFjb25maXJtIDkxMzQ1MpIuDQ1UaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1w bGUgb2YgdGhlIHR5cGUgb2YgZW1haWwgdGhhdCBtYXkgYmUgcmVjZWl2ZWQg cmVxdWVzdGluZyBjb25maXJtYXRpb246DU1lc3NhZ2UgZnJvbSBNYWlsbWFu IHRvIFN1YnNjcmliZXI6DQ1Gcm9tOiAgbmV3c19saXN0LXJlcXVlc3RAbWFp bG1hbi5zb21ld2hlcmUuY29tDVRvOiAgICBhbnkucGVyc29uQHRoZWlyLmVt YWlsLmFkZHJlc3MNDVN1YmplY3Q6IE5ld3NfTGlzdCAtLSBjb25maXJtYXRp b24gb2Ygc3Vic2NyaXB0aW9uIC0tIHJlcXVlc3QgOTEzNDUyDQ1XZSBoYXZl IHJlY2VpdmVkIGEgcmVxdWVzdCBmcm9tIDI1NS4yNTUuMjU1LjI1NSBmb3Ig c3Vic2NyaXB0aW9uIG9mDXlvdXIgZW1haWwgYWRkcmVzcywgPCBhbnkucGVy c29uQHRoZWlyLmVtYWlsLmFkZHJlc3MgPiwgdG8gdGhlDW5ld3NfbGlzdEBt YWlsbWFuLnNvbWV3aGVyZS5jb20gbWFpbGluZyBsaXN0LiAgVG8gY29uZmly bSB0aGUNcmVxdWVzdCwgcGxlYXNlIHNlbmQgYSBtZXNzYWdlIHRvIG5ld3Nf bGlzdC1yZXF1ZXN0QG1haWxtYW4uc29tZXdoZXJlLmNvbSwgYW5kIGVpdGhl cjoNDS0gbWFpbnRhaW4gdGhlIHN1YmplY3QgbGluZSBhcyBpcyAodGhlIHJl cGx5J3MgYWRkaXRpb25hbCAiUmU6IiBpcw1vayksDQ0tIG9yIGluY2x1ZGUg dGhlIGZvbGxvd2luZyBsaW5lIC0gYW5kIG9ubHkgdGhlIGZvbGxvd2luZyBs aW5lIC0gaW4gdGhlIG1lc3NhZ2UgYm9keTogDQ1jb25maXJtIDkxMzQ1Mg0N KFNpbXBseSBzZW5kaW5nIGEgJ3JlcGx5JyB0byB0aGlzIG1lc3NhZ2Ugc2hv dWxkIHdvcmsgZnJvbSBtb3N0IGVtYWlsDWludGVyZmFjZXMsIHNpbmNlIHRo YXQgdXN1YWxseSBsZWF2ZXMgdGhlIHN1YmplY3QgbGluZSBpbiB0aGUgcmln aHQNZm9ybS4pDQ1JZiB5b3UgZG8gbm90IHdpc2ggdG8gc3Vic2NyaWJlIHRv IHRoaXMgbGlzdCwgcGxlYXNlIHNpbXBseSBkaXNyZWdhcmQNdGhpcyBtZXNz YWdlLiAgU2VuZCBxdWVzdGlvbnMgdG8gbmV3c19saXN0LWFkbWluQG1haWxt YW4uc29tZXdoZXJlLmNvbS4NDQ1Ob3RlOiBUbyBjYW5jZWwgeW91ciBzdWJz Y3JpcHRpb24gYXQgdGhpcyBwb2ludCwgc2ltcGx5IGRvIG5vdCByZXBseSB0 byB0aGUgZS1tYWlsLiANDUlmIHRoZSBzdWJzY3JpcHRpb24gaXMgY29tcGxl dGVkLCBhIHNlY29uZCBtZXNzYWdlIGlzIHdpbGwgYmUgcmVjZWl2ZWQgY29u ZmlybWluZyB5b3VyIGFjY2VwdGFuY2UgdG8gdGhlIG1haWxpbmcgbGlzdC4g VGhpcyBlbWFpbCB3aWxsIGluY2x1ZGUgYSB3ZWxjb21lIG5vdGUsIHdlYiBh ZGRyZXNzZXMgZm9yIGFsdGVyaW5nIHlvdXIgcGVyc29uYWwgZGV0YWlscywg YWRtaW5pc3RyYXRpdmUgZW1haWwgYWRkcmVzc2VzIGFuZCB5b3VyIHBhc3N3 b3JkLiBJdCBpcyBnb29kIGlkZWEgdG8gcmVjb3JkIHlvdXIgcGFzc3dvcmQg YXQgdGhpcyBzdGFnZSwgaWYgaG93ZXZlciBpdCBpcyBmb3Jnb3R0ZW4gb3Ig bWlzcGxhY2VkLCBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIHRoZSBNYWlsbWFu IHN5c3RlbSBzZW5kIHBhc3N3b3JkIHJlbWluZGVycyB2aWEgYW4gZW1haWwg bWVzc2FnZSBmcm9tIHRoZSBtYWlsaW5nIGxpc3QsIHRvIHRoZSBzdG9yZWQg YWRkcmVzcy4NDQ1WaWV3aW5nIFN1YnNjcmliZXJzIExpc3QNDUFzIG1lbnRp b25lZCBicmllZmx5IGFib3ZlLCBpdCBpcyBwb3NzaWJsZSB0byB2aWV3IHRo ZSBjb21wbGV0ZSBsaXN0IG9mIGV4aXN0aW5nIHN1YnNjcmliZXJzIHRvIGEg c3BlY2lmaWMgbWFpbGluZyBsaXN0LiBUaGlzIGlzIGF2YWlsYWJsZSBieSBz ZWxlY3RpbmcgkVZpZXcgU3Vic2NyaWJlciBMaXN0kiBmcm9tIHRoZSBtYWls aW5nIGxpc3QgaW5mb3JtYXRpb24gcGFnZS4gVGhlIFN1YnNjcmliZXJzIExp c3QgcGFnZSBzaG93cyB0aGUgcmVnaXN0ZXIgb2YgYWxsIGV4aXN0aW5nIHN1 YnNjcmliZXJzIHRvIHRoYXQgbWFpbGluZyBsaXN0IGFuZCBhbHNvIGluY2x1 ZGVzIHdoZXRoZXIgdGhlIHVzZXIgcmVjZWl2ZXMgdGhlaXIgc3Vic2NyaXB0 aW9uIGluIGRpZ2VzdCBvciBub24tZGlnZXN0IGZvcm1hdC4gSXQgaXMgcG9z c2libGUgdG8gaGlkZSB0aGUgbmFtZSBvZiBhIHN1YnNjcmliZXIgZnJvbSB0 aGlzIGxpc3QgaWYgdGhpcyBpcyBkZXNpcmVkLiBUaGlzIGlzIGRvbmUgYnkg Z29pbmcgaW50byB0aGUgkVN1YnNjcmliZXIgRGV0YWlsc5Igc2VjdGlvbiBh bmQgY2hvb3Npbmcgk1llc5QgdW5kZXIgdGhlIGNob2ljZSCRQ29uY2VhbCB5 b3Vyc2VsZiBmcm9tIHN1YnNjcmliZXIgbGlzdD+SLg0NRm9yIGxpc3RlZCBu YW1lcywgaXQgaXMgcG9zc2libGUgdG8gZW50ZXIgdGhlIGVkaXRpbmcgc2Vj dGlvbiBvZiBTdWJzY3JpYmVycyBEZXRhaWxzIGJ5IGNsaWNraW5nIG9uIHRo ZSBkZXNpcmVkIG5hbWUuIE5vdGUgdGhhdCBvbmx5IHVzZXJzIHdpdGggdGhl IGNvcnJlY3QgcGFzc3dvcmQgY2FuIG1ha2UgYW55IGNoYW5nZXMgdG8gYSBz cGVjaWZpYyBlbWFpbCBhZGRyZXNzLg0NDVN1YnNjcmliZXIgT3B0aW9ucw0N T25lIG9mIHRoZSBmZWF0dXJlcyBpbmNsdWRlZCBpbiB0aGUgTWFpbG1hbiBz eXN0ZW0gaXMgdGhlIGFiaWxpdHkgZm9yIHVzZXJzIHRvIGNoYW5nZSBtYWls IHNldHRpbmdzIHdpdGggcmVnYXJkIHRvIHRoZWlyIHN1YnNjcmlwdGlvbiB0 byBhIG1haWxpbmcgbGlzdC4gVGhlIGVkaXRpbmcgcGFnZSBmb3IgY2hhbmdp bmcgYSBzdWJzY3JpYmVyknMgZGV0YWlscyBjYW4gYmUgZW50ZXJlZCBieSB0 eXBpbmcgaW4gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHN1YnNjcmliZXIg dG8gYmUgY2hhbmdlZCwgb24gdGhlIG1haWxpbmcgbGlzdCBpbmZvcm1hdGlv biBwYWdlIHVuZGVyIHRoZSBoZWFkaW5nIJFTdWJzY3JpYmVyc5IuICBCeSBz ZWxlY3RpbmcgkUNoYW5nZSB5b3VyIHN1YnNjcmlwdGlvbpIgaXQgaXMgcG9z c2libGUgdG8gZW50ZXIgdGhlIHNwZWNpZmljIGVtYWlsIGFkZHJlc3MgYW5k IHRoZW4gcHJlc3MgkUVkaXQgT3B0aW9uc5IuIFRoaXMgd2lsbCB0YWtlIHlv dSBkaXJlY3RseSB0byB0aGUgb3B0aW9ucyBwYWdlIGZvciB0aGF0IGVtYWls IGFkZHJlc3MuIEFsdGVybmF0aXZlbHksIHRoaXMgcG9pbnQgY2FuIGJlIHJl YWNoZWQgdmlhIHRoZSCRVmlldyBTdWJzY3JpYmVycyBMaXN0kiBidXR0b24s IHRoZW4gYnkgY2hvb3NpbmcgdGhlIHNwZWNpZmljIGVtYWlsIGFkZHJlc3Mg ZnJvbSB0aGUgbGlzdCBvZiBleGlzdGluZyBzdWJzY3JpYmVycywgdGhlIHNh bWUgZWRpdGluZyBwYWdlIGNhbiBiZSByZWFjaGVkLg0NVGhlcmUgYXJlIGZp dmUgbWFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBhbHRlcmVkIG9uIHRoZSBT dWJzY3JpYmVyIENvbmZpZ3VyYXRpb24gcGFnZS4gVGhlc2UgaW5jbHVkZSBV bnN1YnNjcmliZSwgTGlzdCBPdGhlciBTdWJzY3JpcHRpb25zLCBGb3Jnb3R0 ZW4gUGFzc3dvcmQgUmVtaW5kZXIsIENoYW5nZSBQYXNzd29yZHMgYW5kIG90 aGVyIHNwZWNpZmljIG1haWxpbmcgbGlzdCBvcHRpb25zLiBUaGUgb3B0aW9u cyBhbmQgYSBkZXNjcmlwdGlvbiBhcmUgYXMgZm9sbG93czoNDVVuc3Vic2Ny aWJlOiBhbGxvd3MgdXNlcnMgdG8gdW5zdWJzY3JpYmUgZnJvbSBhIG1haWxp bmcgbGlzdC4gVGhpcyBpcyBhY2hpZXZlZCBieSBlbnRlcmluZyB0aGUgY29y cmVjdCBwYXNzd29yZCBmb3IgdGhlIGdpdmVuIGUtbWFpbCBhZGRyZXNzIGFu ZCB0aGVuIHByZXNzaW5nIHRoZSCRVW5zdWJzY3JpYmWSIGJ1dHRvbi4gVGhl IHVzZXIgaXMgdGhlbiBubyBsb25nZXIgc3Vic2NyaWJlZCB0byB0aGF0IG1h aWxpbmcgbGlzdC4gU3Vic2NyaXB0aW9ucyB0byBvdGhlciBtYWlsaW5nIGxp c3RzIHJlbWFpbi4NTGlzdCBPdGhlciBTdWJzY3JpcHRpb25zOiBhbHNvIHJl cXVpcmVzIHRoZSBjb3JyZWN0IHBhc3N3b3JkIHRvIGJlIGVudGVyZWQgYmVm b3JlIGNvbnRpbnVpbmcuIEl0IGRpc3BsYXlzIGFsbCBvdGhlciBtYWlsaW5n IGxpc3RzIHRoYXQgYSBzcGVjaWZpYyBlbWFpbCBhZGRyZXNzIGlzIHJlZ2lz dGVyZWQgdG8uDUZvcmdvdHRlbiBQYXNzd29yZDogd2lsbCBlbWFpbCB0aGUg cGFzc3dvcmQgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBlbWFpbCBh ZGRyZXNzIHRvIHRoYXQgZW1haWwgYWRkcmVzcy4gT3RoZXIgdXNlcnMgdHJ5 aW5nIHRvIGdldCB5b3VyIHBhc3N3b3JkIHdpbGwgYmUgdW5hYmxlIGR1ZSB0 byB0aGUgZmFjdCB0aGF0IHRoZSBwYXNzd29yZCBpcyBvbmx5IHNlbnQgdG8g dGhlIG9yaWdpbmFsIHVzZXIsIGV2ZW4gaWYgdGhlIJFGb3Jnb3R0ZW4gUGFz c3dvcmSSIGJ1dHRvbiBpcyBwcmVzc2VkLg1DaGFuZ2UgUGFzc3dvcmQ6IGFs bG93cyB1c2VycyB0byBjaGFuZ2UgdGhlaXIgcGFzc3dvcmQgYXQgYW55IHRp bWUuIFRvIGRvIHNvLCB0aGUgb2xkIHBhc3N3b3JkIG5lZWRzIHRvIGJlIGVu dGVyZWQsIGZvbGxvd2VkIGJ5IHRoZSBuZXcgcGFzc3dvcmQuIFRoZSBuZXcg cGFzc3dvcmQgaXMgZW50ZXJlZCBhIHNlY29uZCB0aW1lIHRvIGNvbmZpcm0g dGhlIGNoYW5nZSBhbmQgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaGFzIGVudGVy ZWQgdGhlIGRlc2lyZWQgcGFzc3dvcmQgY29ycmVjdGx5Lg1PdGhlciBPcHRp b25zOiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgZXh0cmEgb3B0aW9ucyBhdmFp bGFibGUgdG8gYmUgc2V0IGJ5IGVhY2ggdXNlciBmb3IgZWFjaCBtYWlsaW5n IGxpc3QuIFRvIHN1Ym1pdCBhbnkgb2YgdGhlIGNoYW5nZXMgc2VsZWN0ZWQs IHRoZSBjb3JyZWN0IHBhc3N3b3JkIG11c3QgYmUgZW50ZXJlZC4NRGlzYWJs ZSBtYWlsIGRlbGl2ZXJ5PyAgICAgICAgICAgICAgICBPZmYgLyBPbg1UdXJu IHRoaXMgb24gaWYgeW91IGRvIG5vdCB3YW50IG1haWwgdG8gYmUgZGVsaXZl cmVkIHRvIHlvdSBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4NDSBTZXQg RGlnZXN0IE1vZGU/ICAgICAgICAgICAgICAgIE9mZiAvIE9uDUlmIHlvdSB0 dXJuIGRpZ2VzdCBtb2RlIG9uLCB5b3Ugd2lsbCBnZXQgcG9zdHMgYnVuZGxl ZCB0b2dldGhlciBvbmNlIGEgZGF5IGluc3RlYWQgc2luZ2x5LCB3aGVuIHRo ZXkgYXJlIHNlbnQgZnJvbSB0aGUgTWFpbG1hbiBwcm9ncmFtLiBJZiBkaWdl c3QgbW9kZSBpcyBjaGFuZ2VkIGZyb20gb24gdG8gb2ZmLCB5b3Ugd2lsbCBy ZWNlaXZlIG9uZSBsYXN0IGRpZ2VzdC4NDSBHZXQgTUlNRSBvciBQbGFpbiBU ZXh0IERpZ2VzdHM/ICAgICAgIE1JTUUgIC8gIFBsYWluIFRleHQNSWYgeW91 IGhhdmUgYW55IHByb2JsZW1zIHdpdGggTUlNRSBkaWdlc3RzLCBzZWxlY3Qg cGxhaW4gdGV4dC4gDQ0gUmVjZWl2ZSBwb3N0cyB5b3Ugc2VuZCB0byB0aGUg bGlzdD8gICAgICBZZXMgLyBObyANQW55IHBvc3RzIHlvdSBzZW5kIHRvIHRo ZSBtYWlsaW5nIGxpc3QgZm9yIGRpc3RyaWJ1dGlvbiB0byB0aGUgbGlzdCB3 aWxsIGFsc28gYmUgc2VudCB0byB5b3Vyc2VsZiBpZiCRWWVzkiBpcyBzZWxl Y3RlZC4NDSBSZWNlaXZlIGFja25vd2xlZGdtZW50IG1haWwgd2hlbiB5b3Ug c2VuZCBtYWlsIHRvIHRoZSBsaXN0PyAgICAgIE5vIC8gWWVzIA0NIENvbmNl YWwgeW91cnNlbGYgZnJvbSBzdWJzY3JpYmVyIGxpc3Q/ICAgICAgIFllcyAv IE5vDVRoaXMgbWVhbnMgeW91ciBlbWFpbCBhZGRyZXNzIHdpbGwgbm90IGJl IHB1YmxpY2x5IHNob3duIG9uIHRoZSBsaXN0IG9mIHN1YnNjcmliZXJzLg0N DQ1BZG1pbmlzdHJhdGlvbg0NT25jZSBhIG1haWxpbmcgbGlzdCBoYXMgYmVl biBjcmVhdGVkIG9uIGEgc2VydmVyLCBhZG1pbmlzdHJhdGlvbiB0YXNrcyBj YW4gYmUgY29tcGxldGVkIHJlbW90ZWx5IGZyb20gYW55IGNvbXB1dGVyIHRo YXQgaGFzIGFjY2VzcyB0byB0aGUgTWFpbG1hbiB3ZWIgcGFnZS4gVGhlcmUg Y2FuIGJlIGFueSBudW1iZXIgb2Ygb2ZmaWNpYWwgYWRtaW5pc3RyYXRvcnMg Zm9yIGEgZ2l2ZW4gbWFpbGluZyBsaXN0LCBidXQgYWNjZXNzIHRvIGFkbWlu aXN0cmF0aXZlIGNvbnRyb2xzIGlzIGF2YWlsYWJsZSB0byBhbnlvbmUgd2l0 aCB0aGUgcGFzc3dvcmQgZm9yIGEgZ2l2ZW4gbGlzdC4gVGhlIG1haW4gcm9s ZSBvZiBhbiBhZG1pbmlzdHJhdG9yIGlzIHRvIG1vbml0b3IgdGhlIG1haWxp bmcgbGlzdCBhbmQgdGhlIGFzc29jaWF0ZWQgbGlzdCBvZiBzdWJzY3JpYmVy cy4gVGhlIGFkbWluaXN0cmF0b3IgaGFzIG1hbnkgb3B0aW9ucyBhdmFpbGFi bGUgdGhhdCBjYW4gYmUgc2V0IGZvciBlYWNoIGluZGl2aWR1YWwgd2ViIHBh Z2UuIFRoaXMgaW5jbHVkZXMgZ2VuZXJhbCBsaXN0IG9wdGlvbnMsIG1lbWJl ciBtYW5hZ2VtZW50IGFuZCBwcml2YWN5IHNldHRpbmdzLiBUaGUgc2V0dGlu Z3MgZXZlbiBhbGxvdyB0aGUgYWRtaW5pc3RyYXRvciB0byByZS1jb2RlIHRo ZSBIVE1MIGNvZGUgZm9yIHRoZSB2YXJpb3VzIHBhZ2VzIGZvciB0aGF0IGxp c3QgdmlhIHRoZSB3ZWIgcGFnZSBpbnRlcmZhY2UuIA0NDQ1HZW5lcmFsIE9w dGlvbnMNDVRoZSBHZW5lcmFsIE9wdGlvbnMgcGFnZSBpcyB0aGUgbWFpbiBj b250cm9sIGFyZWEgZm9yIHRoZSBhbHRlcmluZyB0aGUgbW9zdCByZWd1bGFy bHkgdXNlZCBvcHRpb25zIHdpdGggcmVnYXJkIHRvIG1haWxpbmcgbGlzdHMu IEl0ZW1zIHN1Y2ggYXMgbGlzdCBkZXNjcmlwdGlvbnMsIGxpc3QgYWRtaW5p c3RyYXRvcnMgYW5kIGxpc3Qgc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9uIGlz IGNoYW5nZWQgZnJvbSB0aGlzIHBhZ2UuDQ0xLiAgVGhlIHB1YmxpYyBuYW1l IG9mIHRoaXMgbGlzdDoNDQlUaGUgcHVibGljIG5hbWUgb2YgdGhlIGxpc3Qg aXMgdGhlIG5hbWUgdGhhdCB5b3Ugd2lzaCB0byBhcHBlYXIgaW4gdGhlIExp c3RpbmZvIHBhZ2UsIHdoaWNoIGRpc3BsYXlzIHRoZSBsaXN0IG9mIGF2YWls YWJsZSBtYWlsaW5nIGxpc3RzLiBUaGUgcmVzdHJpY3Rpb24gaXMgdGhhdCBp dCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBs aXN0LCBpdCBpcyBvbmx5IGEgY2hhbmdlIGluIHRoZSBjYXBpdGFsaXNhdGlv biBvZiB0aGUgbmFtZSB0aGF0IGNhbiBiZSBtYWRlLCB0byBtYWtlIGl0IG1v cmUgcHJlc2VudGFibGUgb3IgZWFzaWVyIHRvIHJlYWQuIFRoZSBuYW1lIHdp bGwgYmUgYWR2ZXJ0aXNlZCBhcyB0aGUgZW1haWwgYWRkcmVzcyAoZS5nLiwg aW4gc3Vic2NyaWJlIGNvbmZpcm1hdGlvbiBub3RpY2VzKSwgc28gaXQgc2hv dWxkIG5vdCBiZSBvdGhlcndpc2UgYWx0ZXJlZC4gDQ1FeGFtcGxlczoNCQlu ZXdzX2xpc3QgICAgKCAgICAgICAgTmV3c19MaXN0ICAgICA9ICAgICBDT1JS RUNUDQluZXdzX2xpc3QgICAgKCAgICAgICAgTkVXU19MSVNUICAgICA9ICAg ICBDT1JSRUNUDQkJbmV3c19saXN0ICAgICggICAgICAgIE5ld3MgTGlzdCAg ICAgPSAgICAgSU5DT1JSRUNUDQluZXdzX2xpc3QgICAgKCAgICAgICAgTmV3 c19MaXN0cyAgICA9ICAgICBJTkNPUlJFQ1QNDTIuICBUaGUgbGlzdCBhZG1p bmlzdHJhdG9yJ3MgZW1haWwgYWRkcmVzczoNDVRoaXMgY2F0ZWdvcnkgaXMg Zm9yIGxpc3RpbmcgYWxsIHVzZXJzIHdobyBuZWVkIHRvIGJlIGFkbWluaXN0 cmF0b3JzIG9mIGEgbWFpbGluZyBsaXN0LiBBcyBtZW50aW9uZWQgYWJvdmUs IHlvdSBkbyBub3QgbmVlZCB0byBiZSBsaXN0ZWQgYXMgYW4gYWRtaW5pc3Ry YXRvciB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgb3B0aW9ucyBwYWdlcywg eW91IHNpbXBseSBuZWVkIHRoZSBjb3JyZWN0IHBhc3N3b3JkIGZvciB0aGUg bWFpbGluZyBsaXN0LiBBZG1pbmlzdHJhdGl2ZSBsaXN0aW5nIHNpbXBseSBt ZWFucyB0aGF0IHlvdSB3aWxsIHJlY2VpdmUgYW55IGZhdWx0IGRlc2NyaXB0 aW9ucyBtYWlsZWQgYnkgdGhlIE1haWxtYW4gcHJvZ3JhbSBvciBzdWJzY3Jp cHRpb24gcmVxdWVzdHMuDQ1UbyBhZGQgbmV3IGFkbWluaXN0cmF0b3JzIHRv IGEgc3BlY2lmaWMgcGFnZSwgb25lIHNpbXBseSB3cml0ZXMgb25lIGVtYWls IGFkZHJlc3MgcGVyIGxpbmUgaW4gdGhlIGF2YWlsYWJsZSBmaWVsZC4gTm8g b3RoZXIgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCB0byBzZXBh cmF0ZSBhZGRyZXNzZXMuDQ0zLiBBIHRlcnNlIHBocmFzZSBpZGVudGlmeWlu ZyB0aGlzIGxpc3QuDQ1UaGlzIGlzIGEgb25lLWxpbmUgZGVzY3JpcHRpb24g Zm9yIHRoZSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QgdGhhdCB3aWxsIGJlIGRp c3BsYXllZCBvbiB0aGUgTGlzdGluZm8gcGFnZS4gVGhpcyB3aWxsIGdpdmUg dXNlciBhIHNob3J0IHN1bW1hcnkgb2YgdGhlIHNwZWNpZmljIG1haWxpbmcg bGlzdCwgc28gdGhhdCBpZiB0aGlzIGlzIHRoZWlyIGFyZWEgb2YgaW50ZXJl c3QsIHRoZXkgbWF5IHNlbGVjdCB0aGUgbGlzdCBmb3IgYSBtb3JlIGRldGFp bGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBtYWlsaW5nIGxpc3QgYW5kIHN1YnNj cmlwdGlvbiBpbmZvcm1hdGlvbi4NDTQuIEFuIGludHJvZHVjdG9yeSBkZXNj cmlwdGlvbjoNIA1UaGUgaW50cm9kdWN0b3J5IGRlc2NyaXB0aW9uIGlzIG1h ZGUgdXAgb2YgYSBmZXcgcGFyYWdyYXBocyBkZXNjcmliaW5nIHRoZSBtYWls aW5nIGxpc3QuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSBkaXNwbGF5ZWQg aW4gdGhlIHN1bW1hcnkgcGFnZSBmb3IgdGhlIG1haWxpbmcgbGlzdCwgd2hp Y2ggYWxyZWFkeSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3Vi c2NyaWJlLiBUaGUgcGFyYWdyYXBocyBzaG91bGQgZGV0YWlsIGl0ZW1zIHN1 Y2ggYXMgdGhlIG1haW4gdG9waWMgb3IgdGhlbWUgb2YgdGhlIG1haWxpbmcg bGlzdCwgdGFyZ2V0IGF1ZGllbmNlLCBmcmVxdWVuY3kgb2YgbWFpbC1vdXRz IGFuZCBleGFtcGxlcyBvZiB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB0aGF0 IHdpbGwgYmUgcmVjZWl2ZWQuDQ1UaGUgZGVzY3JpcHRpb24gd2lsbCB0aGVu IGJlIGluY2x1ZGVkIGFzIGh0bWwgY29kZSBhdCB0aGUgdG9wIG9mIHRoZSBM aXN0aW5mbyBwYWdlLiBUaGUgdGV4dCB3aWxsIGJlIHRyZWF0ZWQgYXMgaHRt bCBleGNlcHQgdGhhdCCRbmV3IGxpbmVzkiB3aWxsIGJlIHRyYW5zbGF0ZWQg dG8gPGJyPiAtIHNvIHlvdSBjYW4gdXNlIGxpbmtzLCBwcmVmb3JtYXR0ZWQg dGV4dCwgZXRjLCBidXQgZG9uJ3QgcHV0IGluIGNhcnJpYWdlIHJldHVybnMg ZXhjZXB0IHdoZXJlIHlvdSBtZWFuIHRvIHNlcGFyYXRlIHBhcmFncmFwaHMu IA0NT25lIG11c3QgZW5zdXJlIHRoYXQgYW55IGNoYW5nZXMgdG8gdGhlIGRl c2NyaXB0aW9uIGFyZSBjaGVja2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkg YXJlIHN1Ym1pdHRlZC4gVGhpcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGVy ZSBhcmUgbm8gZXJyb3JzIGluIHRoZSB0ZXh0IHN1Y2ggYXMgdW50ZXJtaW5h dGVkIEhUTUwgY29uc3RydWN0cywgd2hpY2ggY2FuIHByZXZlbnQgZGlzcGxh eSBvZiB0aGUgZW50aXJlIExpc3RpbmZvIHBhZ2UuDQ01LiBQcmVmaXggZm9y IHN1YmplY3QgbGluZSBvZiBsaXN0IHBvc3RpbmdzDQ1UaGUgcHJlZml4IHRl eHQgaXMgdGV4dCB0aGF0IHdpbGwgYmUgcHJlcGVuZGVkIHRvIHN1YmplY3Qg bGluZXMgb2YgbWVzc2FnZXMgcG9zdGVkIHRvIHRoZSBsaXN0LiBUaGlzIHRo ZW4gYWxsb3dzIHVzZXJzIHRvIGRpc3Rpbmd1aXNoIG1haWxpbmcgbGlzdCBt ZXNzYWdlcyBpbiB0aGVpciBtYWlsYm94IHN1bW1hcmllcy4gQnJldml0eSBp cyBhIHByZW1pdW0gaGVyZSBhbmQgc28gaXQgaXMgcmVjb21tZW5kZWQgdGhh dCBtYWlsaW5nIGxpc3QgbmFtZXMgYmUgYXMgc2hvcnQgYXMgcG9zc2libGUs IGFzIGxvbmcgYXMgaXQgc3RpbGwgaWRlbnRpZmllcyB0aGUgbWFpbGluZyBs aXN0Lg0NNi4gTGlzdC1zcGVjaWZpYyB0ZXh0IHByZXBlbmRlZCB0byBuZXct c3Vic2NyaWJlciB3ZWxjb21lIG1lc3NhZ2UNDVdoZW4gdXNlcnMgc3Vic2Ny aWJlIHRvIGEgbWFpbGluZyBsaXN0LCBhIG5ldy1zdWJzY3JpYmVyIHdlbGNv bWUgbWVzc2FnZSBpcyBzZW50LiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRv IGFkZCBhIHNtYWxsIHNlY3Rpb24gb2YgdGV4dCB0byB0aGUgdG9wIG9mIHRo ZSB3ZWxjb21lIG1lc3NhZ2Ugc3VjaCBhcyB0aGUgbWFpbGluZyBsaXN0IGRl c2NyaXB0aW9uIGFnYWluIG9yIHJlY2VudCBhZG1pbmlzdHJhdGl2ZSBuZXdz IHdpdGggcmVnYXJkIHRvIHRoaXMgbGlzdC4gVGhlIHJlc3Qgb2YgdGhlIHdl bGNvbWUgbWVzc2FnZSBpcyBwcmUtc2V0IHRvIGRlc2NyaWJlIGltcG9ydGFu dCBhZGRyZXNzZXMgYW5kIFVSTHMgZm9yIHRoZSBtYWlsaW5nIGxpc3QsIHNv IHRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBpbmNsdWRlZC4gSXQgc2hvdWxk IGhvd2V2ZXIsIGNvbnRhaW4gbWlzc2lvbiBzcGVjaWZpYyBpbmZvcm1hdGlv biwgbGlrZSBldGlxdWV0dGUgcG9saWNpZXMgb3IgdGVhbSBvcmllbnRhdGlv bi4NDTcuIFRleHQgc2VudCB0byBwZW9wbGUgbGVhdmluZyB0aGUgbGlzdC4g DQ1UaGlzIGNhdGVnb3J5IGFsbG93cyB5b3UgdG8gZW50ZXIgYW4gZXh0cmEg dGV4dCBtZXNzYWdlIHRvIGJlIHNlbnQgdG8gbWVtYmVycyB1bnN1YnNjcmli aW5nIGZyb20gYSBtYWlsaW5nIGxpc3QuIElmIHRoaXMgZmllbGQgaXMgbGVm dCBlbXB0eSwgbm8gc3BlY2lhbCB0ZXh0IHdpbGwgYmUgYWRkZWQgdG8gdGhl IHVuc3Vic2NyaWJlIG1lc3NhZ2UuDQ04LiBBcmUgcmVwbGllcyB0byBhIHBv c3QgZGlyZWN0ZWQgdG8gdGhlIG9yaWdpbmFsIHBvc3RlciBvciB0byB0aGUg bGlzdD8NDVRoZSBNYWlsbWFuIHByb2dyYW0gYWxsb3dzIGZvciB1c2VycyB0 byByZXBseSB0byBtZXNzYWdlcyBzZW50IHRocm91Z2ggdGhlIG1haWxpbmcg bGlzdC4gVGhpcyBvcHRpb24gaXMgdG8gc2V0IHdoZXRoZXIgdGhlc2UgcmVw bGllcyBhcmUgc2VudCBkaXJlY3RseSB0byB0aGUgb3JpZ2luYWwgcG9zdGVy IG9mIGEgbWVzc2FnZSBmcm9tIHRoZSBtYWlsaW5nIGxpc3QsIG9yIHRvIGFs bCBtZW1iZXJzIG9mIHRoZSBtYWlsaW5nIGxpc3QuIEl0IGlzIHN0cm9uZ2x5 IHJlY29tbWVuZGVkIHRoYXQgcmVwbGllcyBiZSBzZW50IHRvIHRoZSBvcmln aW5hbCBwb3N0ZXIuDQ05LiAoQWRtaW5pc3RyaXZpYSBmaWx0ZXIpIENoZWNr IHBvc3RpbmdzIGFuZCBpbnRlcmNlcHQgb25lcyB0aGF0IHNlZW0gdG8gYmUg YWRtaW5pc3RyYXRpdmUgcmVxdWVzdHM/DQ1BZG1pbmlzdHJpdmlhIHRlc3Rz IHdpbGwgY2hlY2sgcG9zdGluZ3MgdG8gc2VlIHdoZXRoZXIgaXQncyByZWFs bHkgbWVhbnQgYXMgYW4gYWRtaW5pc3RyYXRpdmUgcmVxdWVzdCBzdWNoIGFz IHN1YnNjcmliZSwgdW5zdWJzY3JpYmUsIGV0YywgYW5kIHdpbGwgYWRkIGl0 IHRvIHRoZSBhZG1pbmlzdHJhdGl2ZSByZXF1ZXN0cyBxdWV1ZSwgbm90aWZ5 aW5nIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBuZXcgcmVxdWVzdCwgaW4g dGhlIHByb2Nlc3MuDQ0xMC4gU2VuZCBwYXNzd29yZCByZW1pbmRlcnMgdG8s IGVnLCAiLW93bmVyIiBhZGRyZXNzIGluc3RlYWQgb2YgZGlyZWN0bHkgdG8g dXNlcjoNDVRoaXMgY2F0ZWdvcnkgYWxsb3dzIGZvciBwYXNzd29yZCByZW1p bmRlcnMgdG8gYmUgc2VudCB0byBhbiBhbHRlcm5hdGUgYWRkcmVzcyBpbnN0 ZWFkIG9mIGRpcmVjdGx5IHRvIHRoZSB1c2VyLiBTZXQgdGhpcyB0byB5ZXMg d2hlbiB0aGlzIGxpc3QgaXMgaW50ZW5kZWQgdG8gY2FzY2FkZSBvbmx5IHRv IG90aGVyIG1haWxpbmcgbGlzdHMuIFdoZW4gc2V0IHRvIJFtZXRhkiwgbm90 aWNlcyBsaWtlIGNvbmZpcm1hdGlvbnMgYW5kIHBhc3N3b3JkIHJlbWluZGVy cyB3aWxsIGJlIGRpcmVjdGVkIHRvIGFuIGFkZHJlc3MgZGVyaXZlZCBmcm9t IHRoZSBtZW1iZXIncyBhZGRyZXNzLiBOb3RlOiBpdCB3aWxsIGhhdmUgdGhl IHZhbHVlIG9mICJ1bWJyZWxsYV9tZW1iZXJfc3VmZml4IiBhcHBlbmRlZCB0 byB0aGUgbWVtYmVyJ3MgYWNjb3VudCBuYW1lLg0NDTExLiBTdWZmaXggZm9y IHVzZSB3aGVuIHRoaXMgbGlzdCBpcyBhbiB1bWJyZWxsYSBmb3Igb3RoZXIg bGlzdHMsIGFjY29yZGluZyB0byBzZXR0aW5nIG9mIHByZXZpb3VzICJ1bWJy ZWxsYV9saXN0IiBzZXR0aW5nOg0NV2hlbiAidW1icmVsbGFfbGlzdCIgaXMg c2V0IHRvIGluZGljYXRlIHRoYXQgdGhpcyBsaXN0IGhhcyBvdGhlciBtYWls aW5nIGxpc3RzIGFzIG1lbWJlcnMsIHRoZW4gYWRtaW5pc3RyYXRpdmUgbm90 aWNlcyBsaWtlIGNvbmZpcm1hdGlvbnMgYW5kIHBhc3N3b3JkIHJlbWluZGVy cyBuZWVkIHRvIG5vdCBiZSBzZW50IHRvIHRoZSBtZW1iZXIgbGlzdCBhZGRy ZXNzZXMsIGJ1dCByYXRoZXIgdG8gdGhlIG93bmVyIG9mIHRob3NlIG1lbWJl ciBsaXN0cy4gSW4gdGhhdCBjYXNlLCB0aGUgdmFsdWUgb2YgdGhpcyBzZXR0 aW5nIGlzIGFwcGVuZGVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50IG5hbWUg Zm9yIHN1Y2ggbm90aWNlcy4gJy1vd25lcicgaXMgdGhlIHR5cGljYWwgY2hv aWNlLiBUaGlzIHNldHRpbmcgaGFzIG5vIGVmZmVjdCB3aGVuICJ1bWJyZWxs YV9saXN0IiBpcyAiTm8iLg0NMTIuIFNlbmQgbW9udGhseSBwYXNzd29yZCBy ZW1pbmRlcnMgb3Igbm8/DQ1UaGUgTWFpbG1hbiBwcm9ncmFtIGdpdmVzIHRo ZSBvcHRpb24gb2Ygc2VuZGluZyBtb250aGx5IHBhc3N3b3JkIHJlbWluZGVy cyB0byBzdWJzY3JpYmVycy4gVGhpcyB0aGVuIGludml0ZXMgdXNlcnMgdG8g Y2hhbmdlIHRoZWlyIHBhc3N3b3JkcyBhbmQgdGhlcmVieSBtaW5pbWlzZSB0 aGUgcG9zc2liaWxpdHkgb2YgYWNjb3VudCBpbnRydXNpb24gYnkgb3RoZXIg cGVvcGxlLiBIYXZpbmcgdGhpcyBvcHRpb24gc2V0IHRvIJFOb5Igd2lsbCBv dmVycmlkZSB0aGUgYWJvdmUgdHdvIG9wdGlvbnMuDQ0xMy4gU2VuZCB3ZWxj b21lIG1lc3NhZ2Ugd2hlbiBwZW9wbGUgc3Vic2NyaWJlPw0NV2hlbiB1c2Vy cyBzdWJzY3JpYmUgdG8gYSBtYWlsaW5nIGxpc3QgYW5kIGNvbmZpcm1hdGlv biBoYXMgYmVlbiBjb21wbGV0ZWQsIHNlbmQgdGhlIHVzZXIgYSB3ZWxjb21l IG1lc3NhZ2UuIFR1cm4gdGhpcyBvbiBvbmx5IGlmIHlvdSBwbGFuIG9uIHN1 YnNjcmliaW5nIHBlb3BsZSBtYW51YWxseSBhbmQgZG9uJ3Qgd2FudCB0aGVt IHRvIGtub3cgdGhhdCB5b3UgZGlkIHNvLiBUaGlzIG9wdGlvbiBpcyBtb3N0 IHVzZWZ1bCBmb3IgdHJhbnNwYXJlbnRseSBtaWdyYXRpbmcgbGlzdHMgZnJv bSBzb21lIG90aGVyIG1haWxpbmcgbGlzdCBtYW5hZ2VyIHRvIE1haWxtYW4u DQ0xNC4gCVNob3VsZCBhZG1pbmlzdHJhdG9yIGdldCBpbW1lZGlhdGUgbm90 aWNlIG9mIG5ldyByZXF1ZXN0cywgYXMgd2VsbCBhcyBkYWlseSBub3RpY2Vz IGFib3V0IGNvbGxlY3RlZCBvbmVzPw0NTGlzdCBhZG1pbmlzdHJhdG9ycyBh cmUgc2VudCBkYWlseSByZW1pbmRlcnMgb2YgcGVuZGluZyBhZG1pbiBhcHBy b3ZhbCByZXF1ZXN0cywgc3VjaCBhcyBzdWJzY3JpcHRpb25zIHRvIGEgbW9k ZXJhdGVkIGxpc3Qgb3IgcG9zdGluZ3MgdGhhdCBhcmUgYmVpbmcgaGVsZCBm b3Igb25lIHJlYXNvbiBvciBhbm90aGVyLiBTZXR0aW5nIHRoaXMgb3B0aW9u IGNhdXNlcyBub3RpY2VzIHRvIGJlIHNlbnQgaW1tZWRpYXRlbHkgb24gdGhl IGFycml2YWwgb2YgbmV3IHJlcXVlc3RzLCBhcyB3ZWxsLg0NMTUuIFNob3Vs ZCBhZG1pbmlzdHJhdG9yIGdldCBub3RpY2VzIG9mIHN1YnNjcmliZXMvdW5z dWJzY3JpYmVzPw0NVGhpcyBvcHRpb24gd2lsbCBhbGxvdyB0aGUgYWRtaW5p c3RyYXRvciBvZiBhIG1haWxpbmcgbGlzdCB0byByZWNlaXZlIGltbWVkaWF0 ZSBpbmZvcm1hdGlvbiBvZiBuZXcgbWVtYmVycyB0byB0aGUgbGlzdCBvciBt ZW1iZXJzIHRoYXQgaGF2ZSBleGl0ZWQgdGhlIG1haWxpbmcgbGlzdC4NDTE2 LiBTZW5kIG1haWwgdG8gcG9zdGVyIHdoZW4gdGhlaXIgcG9zdGluZyBpcyBo ZWxkIGZvciBhcHByb3ZhbD8NDU5vdGljZXMgdGhhdCBhcmUgc2VudCB0byB0 aGUgbWFpbGluZyBsaXN0IGZvciBkaXN0cmlidXRpb24gY2FuIGJlIGhlbGQg Zm9yIGFwcHJvdmFsLiBBcHByb3ZhbCBub3RpY2VzIGFyZSBzZW50IHdoZW4g bWFpbCB0cmlnZ2VycyBjZXJ0YWluIG9mIHRoZSBsaW1pdHMsIGV4Y2VwdCBy b3V0aW5lIGxpc3QgbW9kZXJhdGlvbiBhbmQgc3BhbSBmaWx0ZXJzLCBmb3Ig d2hpY2ggbm90aWNlcyBhcmUgbm90IHNlbnQuIFRoaXMgb3B0aW9uIG92ZXJy aWRlcyBldmVyIHNlbmRpbmcgdGhlIG5vdGljZS4NDTE3LiBNYXhpbXVtIGxl bmd0aCBpbiBLYiBvZiBhIG1lc3NhZ2UgYm9keToNDVRvIGVuc3VyZSBtZXNz YWdlcyB0aGF0IGFyZSBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3QgZnJvbSBt ZW1iZXJzIGFyZSBub3QgdG9vIGxhcmdlLCBhIG1heGltdW0gbGltaXQgY2Fu IGJlIHNldCBmb3IgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlLiBVc2UgMCBm b3Igbm8gbGltaXQuDQ0xOC4gTnVtYmVyIG9mIG91dGdvaW5nIGNvbm5lY3Rp b25zIHRvIG9wZW4gYXQgb25jZSAoZXhwZXJ0IHVzZXJzIG9ubHkpOg0NVGhp cyBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiYXRjaGVzIGlu dG8gd2hpY2ggYSBtYXNzIHBvc3Rpbmcgd2lsbCBiZSBkaXZpZGVkLg0NMTku IEhvc3QgbmFtZSB0aGlzIGxpc3QgcHJlZmVyczoNDQlUaGUgaG9zdF9uYW1l IGlzIHRoZSBwcmVmZXJyZWQgbmFtZSBmb3IgZW1haWwgdG8gTWFpbG1hbi1y ZWxhdGVkIGFkZHJlc3NlcyBvbiB0aGlzIGhvc3QgYW5kIGdlbmVyYWxseSBz aG91bGQgYmUgdGhlIG1haWwgaG9zdCdzIGV4Y2hhbmdlciBhZGRyZXNzLCBp ZiBhbnkuIFRoaXMgc2V0dGluZyBjYW4gYmUgdXNlZnVsIGZvciBzZWxlY3Rp bmcgYW1vbmcgYWx0ZXJuYXRpdmUgbmFtZXMgb2YgYSBob3N0IHRoYXQgaGFz IG11bHRpcGxlIGFkZHJlc3Nlcy4NDTIwLiBCYXNlIFVSTCBmb3IgTWFpbG1h biB3ZWIgaW50ZXJmYWNlDQ1UaGlzIGlzIHRoZSBjb21tb24gcm9vdCBmb3Ig YWxsIE1haWxtYW4gVVJMcyBjb25jZXJuaW5nIHRoaXMgbGlzdC4gSXQgaXMg YWxzbyB1c2VkIGluIHRoZSBMaXN0aW5mbyBvdmVydmlldyBvZiBtYWlsaW5n IGxpc3RzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90IHRoaXMgbGlzdCBy ZXNpZGVzIG9uIHRoZSB2aXJ0dWFsIGhvc3QgaWRlbnRpZmllZCBieSB0aGUg b3ZlcnZpZXcgVVJMLiBJZiB0aGlzIHZhbHVlIGlzIGZvdW5kIGFueXdoZXJl IGluIHRoZSBVUkwsIHRoZW4gdGhpcyBsaXN0IGlzIGNvbnNpZGVyZWQgdG8g YmUgb24gdGhhdCB2aXJ0dWFsIGhvc3QsIGFuZCBpZiBub3QsIHRoZW4gaXQg aXMgZXhjbHVkZWQgZnJvbSB0aGUgbGlzdGluZy4gTm90ZSB0aGF0IHlvdSBz aG91bGQgdXNlIHRoZSAnYWR2ZXJ0aXNlZCcgcHJpdmFjeSBvcHRpb24gdG8g aW5oaWJpdCBhbnkgbGlzdGluZyBvZiB0aGUgaG9zdC4NDQ1NZW1iZXJzaGlw IE1hbmFnZW1lbnQgDQ1UaGUgbWVtYmVyc2hpcCBtYW5hZ2VtZW50IHBhZ2Ug YWxsb3dzIGFkbWluaXN0cmF0b3JzIHRvIGNoZWNrIHRoZSBjdXJyZW50IG1l bWJlcnNoaXAgbGlzdCBvZiB0aGUgbWFpbGluZyBsaXN0LiBGcm9tIHRoaXMg cGFnZSwgZWFjaCBtZW1iZXIgYW5kIHRoZWlyIHNwZWNpZmljIG9wdGlvbnMg Zm9yIHRoZSBsaXN0IGNhbiBiZSBzZWVuLiBOZXcgbWVtYmVycyBjYW4gYWxz byBiZSBhZGRlZCBhbmQgcmVtb3ZlZC4NDTEuIE1lbWJlcnNoaXAgTGlzdDoN DURpc3BsYXlzIHRoZSBjdXJyZW50IG1lbWJlcnNoaXAgbGlzdCBvZiB0aGUg c3BlY2lmaWMgbWFpbGluZyBsaXN0LiBPbmx5IDMwIG1lbWJlcnMgYXJlIHNo b3duIGF0IGEgdGltZSBhbmQgaWYgdGhlIGxpc3QgaXMgZ3JlYXRlciB0aGFu IDMwLCB0aGVuIGxpbmtzIGFyZSBjcmVhdGVkIGp1c3QgYmVsb3cgdGhpcyBs aXN0IHRvIHRoZSBvdGhlciBncm91cHMgb2YgdGhpcnR5IG1lbWJlcnMgb2Yg dGhlIGxpc3QuIEZvciBlYWNoIHBlcnNvbiBkaXNwbGF5ZWQgb24gdGhlIGlu ZGl2aWR1YWwgbGlzdCwgaXQgYWxzbyByZXBvcnRzIHRoYXQgcGVyc29uknMg b3B0aW9ucyBzZXR0aW5ncy4gVGhlIGFkbWluaXN0cmF0b3IgY2FuIGNoYW5n ZSB0aGVzZSBvcHRpb25zIGJ5IHNpbXBseSBhZGRpbmcgb3IgcmVtb3Zpbmcg dGhlIHRpY2sgZnJvbSB0aGUgYXNzb2NpYXRlZCBib3guIFRoZSBtZW1iZXKS cyBvcHRpb25zIGFyZSBhcyBmb2xsb3dzOg0Nc3Vic2NyIAktIElzIHRoZSBt ZW1iZXIgc3Vic2NyaWJlZD8gDWhpZGUgCS0gSXMgdGhlIG1lbWJlcidzIGFk ZHJlc3MgY29uY2VhbGVkIG9uIHRoZSBsaXN0IG9mIHN1YnNjcmliZXJzPyAN bm9tYWlsIAktIElzIGRlbGl2ZXJ5IHRvIHRoZSBtZW1iZXIgZGlzYWJsZWQ/ IA1hY2sgCS0gRG9lcyB0aGUgbWVtYmVyIGdldCBhY2tub3dsZWRnbWVudHMg b2YgdGhlaXIgcG9zdHM/IA1ub3QgbWV0b28gCS0gRG9lcyB0aGUgbWVtYmVy IGF2b2lkIGNvcGllcyBvZiB0aGVpciBvd24gcG9zdHM/IA1kaWdlc3QgCS0g RG9lcyB0aGUgbWVtYmVyIGdldCBtZXNzYWdlcyBpbiBkaWdlc3RzPyAob3Ro ZXJ3aXNlLCBpbmRpdmlkdWFsIG1lc3NhZ2VzKSANcGxhaW4gCS0gSWYgZ2V0 dGluZyBkaWdlc3RzLCBkb2VzIHRoZSBtZW1iZXIgZ2V0IHBsYWluIHRleHQg ZGlnZXN0cz8gKG90aGVyd2lzZSwgTUlNRSkNDQ1Ob3RlOiBCeSByZW1vdmlu ZyB0aGUgdGljayBpbiB0aGUgbWVtYmVyknMgkXN1YnNjcpIgY2F0ZWdvcnks IHRoZSBtZW1iZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3QuDQ0y LiBNYXNzIFN1YnNjcmliZSBNZW1iZXJzDQ1UaGUgbWFzcyBzdWJzY3JpcHRp b24gb3B0aW9uIGFsbG93cyBhZG1pbmlzdHJhdG9ycyB0byBhZGQgYSBsaXN0 IG9mIG5ldyBtZW1iZXJzIGluIG9uZSBzdGVwLiBTaW1wbHkgYnkgZW50ZXJp bmcgbmV3IG1lbWJlciBlbWFpbCBhZGRyZXNzZXMgaW4gdGhlIHRleHQgZmll bGQsIG9uZSBsaW5lIHBlciBhZGRyZXNzLCBhbiBhZG1pbmlzdHJhdG9yIGNh biBhZGQgYXMgbWFueSB1c2VycyBhcyB0aGV5IGxpa2UgdG8gdGhlIGxpc3Qu DQ1BbiBvcHRpb24gdGhhdCBzaG91bGQgYmUgbm90ZWQgaW4gdGhpcyBjYXRl Z29yeSBpcyB0aGUgYWJpbGl0eSB0byBkaXNhYmxlIHdlbGNvbWUgbWVzc2Fn ZXMuIFRoaXMgc3RvcHMgdGhlIHByb2dyYW0gZnJvbSBzZW5kaW5nIHdlbGNv bWUgbWVzc2FnZXMgdG8gYWxsIG5ldyB1c2VycyBhZGRlZCB0byBhIG1haWxp bmcgbGlzdC4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpZiBtaWdyYXRp bmcgYW4gZXhpc3RpbmcgbWFpbGluZyBsaXN0IHRvIHRoZSBtYWlsbWFuIHBy b2dyYW0uDQ0NUHJpdmFjeSBPcHRpb25zIA0NVGhlIHByaXZhY3kgb3B0aW9u cyBwYWdlIGlzIGZvciBjb250cm9sbGluZyBsaXN0IGFjY2VzcyBwb2xpY2ll cywgaW5jbHVkaW5nIGFudGktc3BhbSBtZWFzdXJlcyBjb3ZlcmluZyBtZW1i ZXJzIGFuZCBvdXRzaWRlcnMuDQ0NU3Vic2NyaWJpbmcNMS4gQWR2ZXJ0aXNl IHRoaXMgbGlzdCB3aGVuIHBlb3BsZSBhc2sgd2hhdCBsaXN0cyBhcmUgb24g dGhpcyBtYWNoaW5lPyANDUNoYW5naW5nIHRoaXMgb3B0aW9uIHRvIJFOb5Ig d2lsbCByZW1vdmUgdGhlIG1haWxpbmcgbGlzdCBmcm9tIHRoZSBsaXN0IG9m IGF2YWlsYWJsZSB3ZWIgc2l0ZXMgb24gYm90aCB0aGUgTGlzdGluZm8gcGFn ZSBhbmQgb24gdGhlIEFkbWluIHBhZ2UuIFRoaXMgd2lsbCBtZWFuIHRoYXQg dGhlIG9ubHkgd2F5IHRvIGdldCB0byBhIGxpc3QgaXMgdmlhIHRoZSBjb3Jy ZWN0IFVSTC4NDTIuIFdoYXQgc3RlcHMgYXJlIHJlcXVpcmVkIGZvciBzdWJz Y3JpcHRpb24/DQ1UaGlzIHNlY3Rpb24gaXMgd2l0aCByZWdhcmQgdG8gdGhl IGNvbmZpcm1hdGlvbiBwcm9jZXNzIHRoYXQgdXNlcnMgbXVzdCBjb21wbGV0 ZSB0byBiZSBhZG1pdHRlZCB0byBhIG1haWxpbmcgbGlzdC4gVGhlcmUgYXJl IHRocmVlIGRpZmZlcmVudCBwb3NzaWJsZSBvcHRpb25zIGZvciBtYWlsaW5n IGxpc3QgY29uZmlybWF0aW9uIHByb2Nlc3NlczoNY29uZmlybSCWIHJlcGx5 IHdpdGggYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgZW1haWwgdGhl IGFkZHJlc3MgZ2l2ZW4uIFRvIGNvbmZpcm0gdGhlIHVzZXIgbXVzdCByZXBs eSB3aXRoIHRoZSBjb3JyZWN0IGluZm9ybWF0aW9uIGdpdmVuIGluIHRoZSBt ZXNzYWdlLg1yZXF1aXJlIGFwcHJvdmFsIJYgc3Vic2NyaXB0aW9uIHJlcXVl c3RzIG11c3QgYmUgYXBwcm92ZWQgYnkgdGhlIGxpc3QgYWRtaW5pc3RyYXRv ci4NY29uZmlybSthcHByb3ZhbCCWIHVzZXJzIHJlcXVlc3Rpbmcgc3Vic2Ny aXB0aW9uIHJlY2VpdmUgYW4gZW1haWwgd2hpY2ggdGhleSBtdXN0IHJlcGx5 IHRvLCB0byBjb25maXJtIHRoZWlyIHJlcXVlc3QgYW5kIHRoZW4gbXVzdCBi ZSBhcHByb3ZlZCBieSB0aGUgYWRtaW5pc3RyYXRvci4NDVRoZSBlbWFpbCBy ZXBsaWVzIGFyZSB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIGNyZWF0aW5nIHN1 YnNjcmlwdGlvbnMgZm9yIG90aGVycyB3aXRob3V0IHRoZWlyIGNvbnNlbnQu DQ0NTWVtYmVyc2hpcCBleHBvc3VyZQ0zLiBXaG8gY2FuIHZpZXcgc3Vic2Ny aXB0aW9uIGxpc3Q/DQ1UaGVyZSBhcmUgdGhyZWUgb3B0aW9ucyBoZXJlIHRv IHJlc3RyaWN0IHdobyBtYXkgc2VlIHRoZSBpbmRleCBvZiBzdWJzY3JpYmVy cyB0byBhIHNwZWNpZmljIG1haWxpbmcgbGlzdCwgdGhleSBhcmUgcmVzdHJp Y3RpbmcgaXQgdG86DUFueW9uZQ1MaXN0IE1lbWJlcnMgb25seQ1MaXN0IEFk bWluaXN0cmF0b3JzIG9ubHkNDVdoZW4gc2V0LCB0aGUgbGlzdCBvZiBzdWJz Y3JpYmVycyBpcyBwcm90ZWN0ZWQgYnkgbWVtYmVyIG9yIGFkbWluIHBhc3N3 b3JkIGF1dGhlbnRpY2F0aW9uLg0NNC4gU2hvdyBtZW1iZXIgYWRkcmVzc2Vz IHNvIHRoZXkncmUgbm90IGRpcmVjdGx5IHJlY29nbmlzYWJsZSBhcyBlbWFp bCBhZGRyZXNzZXM/DQ1TZXR0aW5nIHRoaXMgb3B0aW9uIGNhdXNlcyBtZW1i ZXIgZW1haWwgYWRkcmVzc2VzIHRvIGJlIHRyYW5zZm9ybWVkIHdoZW4gdGhl eSBhcmUgcHJlc2VudGVkIG9uIG1lbWJlcpJzIGxpc3Qgd2ViIHBhZ2VzIChi b3RoIGluIHRleHQgYW5kIGFzIGxpbmtzKSwgc28gdGhleSdyZSBub3QgdHJp dmlhbGx5IHJlY29nbmlzYWJsZSBhcyBlbWFpbCBhZGRyZXNzZXMuIFRoZSBp bnRlbnRpb24gaXMgdG8gcHJldmVudCB0aGUgYWRkcmVzc2VzIGZyb20gYmVp bmcgkXNuYXJmZWSSIHVwIGJ5IGF1dG9tYXRlZCB3ZWIgc2Nhbm5lcnMgZm9y IHVzZSBieSBzcGFtbWVycy4NDQ1HZW5lcmFsIHBvc3RpbmcgZmlsdGVycw01 LiBNdXN0IHBvc3RzIGJlIGFwcHJvdmVkIGJ5IGFuIGFkbWluaXN0cmF0b3I/ DQ1UaGlzIG9wdGlvbiBtZWFucyB0aGF0IGFueSBwb3N0aW5ncyB0byB0aGUg bWFpbGluZyBsaXN0IG11c3QgYmUgYXBwcm92ZWQgYnkgdGhlIGFkbWluaXN0 cmF0b3IsIGlmIHNldCwgYmVmb3JlIGJlaW5nIHRyYW5zbWl0dGVkIHRvIHRo ZSByZXN0IG9mIHRoZSBtYWlsaW5nIGxpc3QuDQ02LiBSZXN0cmljdCBwb3N0 aW5nIHByaXZpbGVnZSB0byBsaXN0IG1lbWJlcnM/DQ1Vc2UgdGhpcyBvcHRp b24gaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgcG9zdGluZyB0byBvbmx5IG1l bWJlcnMgb2YgdGhlIG1haWxpbmcgbGlzdC4gSWYgeW91IHdhbnQgbGlzdCBt ZW1iZXJzIHRvIGJlIGFibGUgdG8gcG9zdCwgcGx1cyBhIGhhbmRmdWwgb2Yg b3RoZXIgcG9zdGVycywgc2VlIHRoZSBwb3N0ZXJzIHNldHRpbmcgYmVsb3cu DShOb3RlOiBUaGlzIGlzIHJlZmVycmVkIHRvIGFzIHRoZSCRbWVtYmVyX3Bv c3Rpbmdfb25seZIgb3B0aW9uKQ0NNy4gQWRkcmVzc2VzIG9mIG1lbWJlcnMg YWNjZXB0ZWQgZm9yIHBvc3RpbmcgdG8gdGhpcyBsaXN0IHdpdGhvdXQgaW1w bGljaXQgYXBwcm92YWwgcmVxdWlyZW1lbnQ6DQ1BZGRpbmcgZW50cmllcyBo ZXJlIHdpbGwgaGF2ZSBvbmUgb2YgdHdvIGVmZmVjdHMsIGFjY29yZGluZyB0 byB3aGV0aGVyIGFub3RoZXIgb3B0aW9uIHJlc3RyaWN0cyBwb3N0aW5nIHRv IG1lbWJlcnMuIChTZWUgIjYuIFJlc3RyaWN0IHBvc3RpbmcgcHJpdmlsZWdl IHRvIGxpc3QgbWVtYmVycz8iIGZvciB3aGV0aGVyIG9yIG5vdCB0aGlzIGlz IGluIGFkZGl0aW9uIHRvIGFsbG93aW5nIHBvc3RpbmcgYnkgbGlzdCBtZW1i ZXJzKQ0NSWYgbWVtYmVyX3Bvc3Rpbmdfb25seSBvcHRpb24gaXM6DVllczog IHRoZW4gZW50cmllcyBhZGRlZCBoZXJlIHdpbGwgaGF2ZSBwb3N0aW5nIHBy aXZpbGVnZSBpbiBhZGRpdGlvbiB0byBsaXN0IG1lbWJlcnMuDU5vOiAgdGhl biBvbmx5IHRoZSBwb3N0ZXJzIGxpc3RlZCBoZXJlIHdpbGwgYmUgYWJsZSB0 byBwb3N0IHdpdGhvdXQgYWRtaW4gYXBwcm92YWwuDQ0NU3BhbS1zcGVjaWZp YyBwb3N0aW5nIGZpbHRlcnMNOC4gTXVzdCBwb3N0cyBoYXZlIGxpc3QgbmFt ZWQgaW4gZGVzdGluYXRpb24gKHRvLCBjYykgZmllbGQgKG9yIGJlIGFtb25n IHRoZSBhY2NlcHRhYmxlIGFsaWFzIG5hbWVzLCBzcGVjaWZpZWQgYmVsb3cp Pw0NTWFueSAoaW4gZmFjdCwgbW9zdCkgc3BhbXMgZG8gbm90IGV4cGxpY2l0 bHkgbmFtZSB0aGVpciBteXJpYWQgZGVzdGluYXRpb25zIGluIHRoZSBleHBs aWNpdCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMuIEluIGZhY3QsIG9mdGVuIHRo ZSCRVG86kiBmaWVsZCBoYXMgYSB0b3RhbGx5IGJvZ3VzIGFkZHJlc3MgZm9y IG9iZnVzY2F0aW9uLiBUaGUgY29uc3RyYWludCBhcHBsaWVzIG9ubHkgdG8g dGhlIGluZm9ybWF0aW9uIGluIHRoZSBhZGRyZXNzIGJlZm9yZSB0aGUgJ0An IHNpZ24sIGJ1dCBzdGlsbCBjYXRjaGVzIGFsbCBzdWNoIHNwYW1zLg0NVGhl IGNvc3QgaXMgdGhhdCB0aGUgbGlzdCB3aWxsIG5vdCBhY2NlcHQgdW5oaW5k ZXJlZCBhbnkgcG9zdGluZ3MgcmVsYXllZCBmcm9tIG90aGVyIGFkZHJlc3Nl cywgdW5sZXNzOg0xLiBUaGUgcmVsYXlpbmcgYWRkcmVzcyBoYXMgdGhlIHNh bWUgbmFtZSwgb3IgDTIuIFRoZSByZWxheWluZyBhZGRyZXNzIG5hbWUgaXMg aW5jbHVkZWQgb24gdGhlIG9wdGlvbnMgdGhhdCBzcGVjaWZ5IGFjY2VwdGFi bGUgYWxpYXNlcyBmb3IgdGhlIGxpc3QuDQ05LiBBbGlhcyBuYW1lcyAocmVn ZXhwcykgd2hpY2ggcXVhbGlmeSBhcyBleHBsaWNpdCCRVG86kiBvciCRQ2M6 kiBkZXN0aW5hdGlvbiBuYW1lcyBmb3IgdGhpcyBsaXN0Og0NQWx0ZXJuYXRl IGxpc3QgbmFtZXMgKHRleHQgYmVmb3JlIHRoZSAnQCcgaW4gYW4gZW1haWwg YWRkcmVzcykgdGhhdCBhcmUgdG8gYmUgYWNjZXB0ZWQgd2hlbiB0aGUgZXhw bGljaXQtZGVzdGluYXRpb24gY29uc3RyYWludCAoYSBwcmlvciBvcHRpb24p IGlzIGFjdGl2ZS4gVGhpcyBlbmFibGVzIHRoaW5ncyBsaWtlIGNhc2NhZGlu ZyBtYWlsaW5nIGxpc3RzIGFuZCByZWxheXMsIHdoaWxlIHRoZSBjb25zdHJh aW50IGlzIHN0aWxsIHByZXZlbnRpbmcgcmFuZG9tIHNwYW1zLg0NMTAuIENl aWxpbmcgb24gYWNjZXB0YWJsZSBudW1iZXIgb2YgcmVjaXBpZW50cyBmb3Ig YSBwb3N0aW5nOg0NSWYgYSBtZXNzYWdlIHRvIHRoZSBtYWlsaW5nIGxpc3Qg aGFzIGEgbnVtYmVyIG9mIHJlY2lwaWVudHMgZXF1YWwgdG8gb3IgZ3JlYXRl ciB0aGFuIHRoZSBudW1iZXIgc3RhdGVkLCBpdCBpcyB0byBiZSBoZWxkIGZv ciBhZG1pbmlzdHJhdGlvbiBhcHByb3ZhbC4gU2V0dGluZyB0aGlzIG51bWJl ciB0byAwIHdpbGwgbWVhbiB0aGF0IG5vIG1heGltdW0gbnVtYmVyIG9mIHJl Y2lwaWVudHMgaXMgc2V0Lg0NMTEuIEFkZHJlc3NlcyB3aG9zZSBwb3N0aW5n cyBhcmUgYWx3YXlzIGhlbGQgZm9yIGFwcHJvdmFsOg0NRW1haWwgYWRkcmVz c2VzIHdob3NlIHBvc3RzIHNob3VsZCBhbHdheXMgYmUgaGVsZCBmb3IgYXBw cm92YWwsIG5vIG1hdHRlciB3aGF0IG90aGVyIG9wdGlvbnMgYXJlIHNldC4g U2VlIGFsc28gdGhlIHN1YnNlcXVlbnQgb3B0aW9uLCB3aGljaCBhcHBsaWVz IHRvIGFyYml0cmFyeSBjb250ZW50IG9mIGFyYml0cmFyeSBoZWFkZXJzLg0N MTIuIEhvbGQgcG9zdHMgd2l0aCBoZWFkZXIgdmFsdWUgbWF0Y2hpbmcgYSBz cGVjaWZpZWQgcmVnZXhwOg0NVXNlIHRoaXMgb3B0aW9uIHRvIHByb2hpYml0 IHBvc3RzIGFjY29yZGluZyB0byBzcGVjaWZpYyBoZWFkZXIgdmFsdWVzLiBU aGUgdGFyZ2V0IHZhbHVlIGlzIGEgcmVndWxhci1leHByZXNzaW9uIGZvciBt YXRjaGluZyBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgaGVhZGVyLiBUaGUgbWF0 Y2ggaXMgZG9uZSBkaXNyZWdhcmRpbmcgbGV0dGVyIGNhc2UuIExpbmVzIGJl Z2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZCBhcyBjb21tZW50cy4NDUZv ciBleGFtcGxlOg0NdG86IC4qQHB1YmxpYy5jb20NDU1lYW5zIHRvIGhvbGQg YWxsIHBvc3RpbmdzIHdpdGggYSCRVG86kiBtYWlsIGhlYWRlciBjb250YWlu aW5nICdAcHVibGljLmNvbScgYW55d2hlcmUgYW1vbmcgdGhlIGFkZHJlc3Nl cy4NDU90aGVyIGV4YW1wbGVzIGluY2x1ZGU6DQ1tZXNzYWdlLWlkOiByZWxh eS5jb21hbmNoZS5kZW5tYXJrLmV1DWZyb206IGxpc3RAbGlzdG1lLmNvbQ1m cm9tOiAuKkB1cGxpbmtwcm8uY29tDQ1Ob3RlIHRoYXQgbGVhZGluZyB3aGl0 ZXNwYWNlIGlzIHRyaW1tZWQgZnJvbSB0aGUgcmVnZXhwLiBUaGlzIGNhbiBi ZSBjaXJjdW12ZW50ZWQgaW4gYSBudW1iZXIgb2Ygd2F5cywgZm9yIGV4YW1w bGUsIGJ5IGVzY2FwaW5nIG9yIGJyYWNrZXRpbmcgaXQuDQ1TZWUgYWxzbyB0 aGUgZm9yYmlkZGVuX3Bvc3RlcnMgb3B0aW9uIGZvciBhIHJlbGF0ZWQgbWVj aGFuaXNtLg0NMTMuIEhpZGUgdGhlIHNlbmRlciBvZiBhIG1lc3NhZ2UsIHJl cGxhY2luZyBpdCB3aXRoIHRoZSBsaXN0IGFkZHJlc3M6DQ1UaGlzIG9wdGlv biByZW1vdmVzIHRoZSBmaWVsZHM6IEZyb20sIFNlbmRlciBhbmQgUmVwbHkt VG8sIGZyb20gYW4gZW1haWwgbWVzc2FnZSBhbmQgcmVwbGFjZXMgdGhlbSB3 aXRoIHRoZSBtYWlsaW5nIGxpc3QgbmFtZS4NDQ1SZWd1bGFyLW1lbWJlciAo bm9uLWRpZ2VzdCkgT3B0aW9ucyANDVRoZSByZWd1bGFyLW1lbWJlciAobm9u LWRpZ2VzdCkgb3B0aW9ucyBhcmUgZm9yIHNldHRpbmcgcG9saWNpZXMgY29u Y2VybmluZyBpbW1lZGlhdGVseSBkZWxpdmVyZWQgbGlzdCB0cmFmZmljLg0N MS4gQ2FuIHN1YnNjcmliZXJzIGNob29zZSB0byByZWNlaXZlIG1haWwgaW1t ZWRpYXRlbHksIHJhdGhlciB0aGFuIGluIGJhdGNoZWQgZGlnZXN0cz8NDTIu IEhlYWRlciBhZGRlZCB0byBtYWlsIHNlbnQgdG8gcmVndWxhciBsaXN0IG1l bWJlcnM6DQ1UaGlzIG9wdGlvbiBhbGxvd3MgZm9yIHRleHQgdG8gYmUgcHJl cGVuZGVkIHRvIHRoZSB0b3Agb2YgZXZlcnkgaW1tZWRpYXRlbHktZGVsaXZl cnkgbWVzc2FnZS4gVGhpcyB0ZXh0IGNhbiBpbmNsdWRlICUoZmllbGQpcyBm b3JtYXQgc3RyaW5ncyB3aGljaCBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUg bGlzdCdzIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChfX2RpY3RfXykuIA0NU29t ZSB1c2VmdWwgZmllbGRzIGFyZTogDQ1yZWFsX25hbWU6CVRoZSAicHJldHR5 IiBuYW1lIG9mIHRoZSBsaXN0LCB3aXRoIGNhcGl0YWxpc2F0aW9uLiANX2lu dGVybmFsX25hbWU6CVRoZSBuYW1lIGJ5IHdoaWNoIHRoZSBsaXN0IGlzIGlk ZW50aWZpZWQgaW4gVVJMcywgd2hlcmUgY2FzZSBpcyBnZXJtYW5lLiANaG9z dF9uYW1lOglUaGUgZG9tYWluLXF1YWxpZmllZCBob3N0IG5hbWUgd2hlcmUg dGhlIGxpc3Qgc2VydmVyIHJ1bnMuIA13ZWJfcGFnZV91cmw6CVRoZSBtYWls bWFuIHJvb3QgVVJMIHRvIHdoaWNoLCBlZywgJ2xpc3RpbmZvLyUoX2ludGVy bmFsX25hbWUpcyBjYW4gYmUgYXBwZW5kZWQgdG8geWllbGQgdGhlIGxpc3Rp bmZvIHBhZ2UgZm9yIHRoZSBsaXN0LiANZGVzY3JpcHRpb246CVRoZSBicmll ZiBkZXNjcmlwdGlvbiBvZiB0aGUgbGlzdC4gDWluZm86CVRoZSBsZXNzIGJy aWVmIGxpc3QgZGVzY3JpcHRpb24uDQ0zLiBGb290ZXIgYWRkZWQgdG8gbWFp bCBzZW50IHRvIHJlZ3VsYXIgbGlzdCBtZW1iZXJzOg0NVGhpcyBvcHRpb24g YWxsb3dzIGZvciB0ZXh0IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBib3R0b20g b2YgZXZlcnkgaW1tZWRpYXRlbHktZGVsaXZlcnkgbWVzc2FnZS4gVGhpcyB0 ZXh0IGNhbiBpbmNsdWRlICUoZmllbGQpcyBmb3JtYXQgc3RyaW5ncyB3aGlj aCBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgbGlzdCdzIGF0dHJpYnV0ZSBk aWN0aW9uYXJ5IChfX2RpY3RfXykuIA0NU29tZSB1c2VmdWwgZmllbGRzIGFy ZTogDQ1yZWFsX25hbWU6CVRoZSAicHJldHR5IiBuYW1lIG9mIHRoZSBsaXN0 LCB3aXRoIGNhcGl0YWxpc2F0aW9uLiANX2ludGVybmFsX25hbWU6CVRoZSBu YW1lIGJ5IHdoaWNoIHRoZSBsaXN0IGlzIGlkZW50aWZpZWQgaW4gVVJMcywg d2hlcmUgY2FzZSBpcyBnZXJtYW5lLiANaG9zdF9uYW1lOglUaGUgZG9tYWlu LXF1YWxpZmllZCBob3N0IG5hbWUgd2hlcmUgdGhlIGxpc3Qgc2VydmVyIHJ1 bnMuIA13ZWJfcGFnZV91cmw6CVRoZSBtYWlsbWFuIHJvb3QgVVJMIHRvIHdo aWNoLCBlZywgJ2xpc3RpbmZvLyUoX2ludGVybmFsX25hbWUpcyBjYW4gYmUg YXBwZW5kZWQgdG8geWllbGQgdGhlIGxpc3RpbmZvIHBhZ2UgZm9yIHRoZSBs aXN0LiANZGVzY3JpcHRpb246CVRoZSBicmllZiBkZXNjcmlwdGlvbiBvZiB0 aGUgbGlzdC4gDWluZm86CVRoZSBsZXNzIGJyaWVmIGxpc3QgZGVzY3JpcHRp b24uDQ0NRGlnZXN0LW1lbWJlciBPcHRpb25zIA0NVGhlIERpZ2VzdC1tZW1i ZXIgb3B0aW9ucyBhcmUgZm9yIHRoZSBiYXRjaGVkLWRlbGl2ZXJ5IGRpZ2Vz dCBjaGFyYWN0ZXJpc3RpY3MgYW5kIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcg Y2hvaWNlcy4NDTEuIENhbiBsaXN0IG1lbWJlcnMgY2hvb3NlIHRvIHJlY2Vp dmUgbGlzdCB0cmFmZmljIGJ1bmNoZWQgaW4gZGlnZXN0cz8NDVNldHRpbmcg dGhpcyBvcHRpb24gdG8gkU5vkiB3aWxsIHJlbW92ZSB0aGUgYWJpbGl0eSBv ZiB0aGUgc3Vic2NyaWJlcnMgdG8gY2hvb3NlIHRvIHJlY2VpdmUgdGhlIG1l c3NhZ2VzIGluIGRpZ2VzdHMuIEluIHRoZSBpbml0aWFsIHN1YnNjcmlwdGlv biBzY3JlZW4sIHRoZSBjaG9pY2UgYm94ZXMgd2lsbCBzaW1wbHkgbm90IGFw cGVhciBhbmQgaW4gdGhlIHVzZXKScyBwZXJzb25hbCBvcHRpb25zIHNlY3Rp b24sIHRoZSBwcm9ncmFtIHdpbGwgcmV0dXJuIHRoYXQgdGhpcyBvcHRpb24g aXMgbm90IGF2YWlsYWJsZS4NDTIuIFdoaWNoIGRlbGl2ZXJ5IG1vZGUgaXMg dGhlIGRlZmF1bHQgZm9yIG5ldyB1c2Vycz8NDVRoZSBjaG9pY2VzIGhlcmUg YXJlIHRvIGhhdmUgdGhlIGRlZmF1bHQgc2V0dGluZyBhcyCRUmVndWxhcpIg b3IgkURpZ2VzdJIgZm9yIHdoZW4gYSBzdWJzY3JpYmVyIGlzIGluaXRpYWxs eSBzdWJzY3JpYmluZyB0byBhIG1haWxpbmcgbGlzdC4NDTMuIFdoZW4gcmVj ZWl2aW5nIGRpZ2VzdHMsIHdoaWNoIGZvcm1hdCBpcyBkZWZhdWx0Pw0NVGhl IGNob2ljZXMgaGVyZSBhcmUgdG8gaGF2ZSB0aGUgZGVmYXVsdCBzZXR0aW5n IGFzIJFNSU1FkiBvciCRUGxhaW6SIGZvciB3aGVuIGEgc3Vic2NyaWJlciBp cyBpbml0aWFsbHkgc3Vic2NyaWJpbmcgdG8gYSBtYWlsaW5nIGxpc3QgYW5k IHNldHRpbmcgdGhlaXIgbWFpbCBmb3JtYXQuDQ00LiBIb3cgYmlnIGluIEti IHNob3VsZCBhIGRpZ2VzdCBiZSBiZWZvcmUgaXQgZ2V0cyBzZW50IG91dD8N DVRoaXMgb3B0aW9uIHNldHMgdGhlIG1heGltdW0gc2l6ZSBpbiBLaWxvYnl0 ZXMgYSBkaWdlc3QgY2FuIGdldCBiZWZvcmUgaXQgaXMgc2VudCBvdXQuIFRo ZSBkaWdlc3QgbWF5IHN0aWxsIGJlIHNlbnQgb3V0IGF0IHRoZSBlbmQgb2Yg dGhlIGRheSBpZiB0aGlzIHRvdGFsIGlzIG5vdCByZWFjaGVkLiBJZiB0aGUg dG90YWwgaXMgcmVhY2hlZCwgdGhlbiB0aGVyZSBtYXkgYmUgbW9yZSB0aGFu IG9uZSBkaWdlc3Qgc2VudCBvdXQgZHVyaW5nIGEgZGF5Lg0NNS4gU2hvdWxk IGEgZGlnZXN0IGJlIGRpc3BhdGNoZWQgZGFpbHkgd2hlbiB0aGUgc2l6ZSB0 aHJlc2hvbGQgaXNuJ3QgcmVhY2hlZD8NDUlmIHRoaXMgb3B0aW9uIGlzIHNl dCB0aGVuIGRpZ2VzdHMgd2lsbCBiZSBzZW50IG91dCB3aGVuIHRoZSB0b3Rh bCBhYm92ZSBpcyByZWFjaGVkIGFuZCBtYXkgYWxzbyBiZSBzZW50IG91dCBh dCB0aGUgZW5kIG9mIHRoZSBkYXkgaWYgbW9yZSBtYWlsIGlzIHJlY2VpdmVk IGFmdGVyIHRoZSB0aHJlc2hvbGQgc2l6ZSBkaWdlc3QgaXMgc2VudC4gVGhl IGRpZ2VzdCB3aWxsIGFsc28gYmUgc2VudCBvdXQgYXQgdGhlIGVuZCBvZiB0 aGUgZGF5IGlmIHRoaXMgdG90YWwgaXMgbm90IHJlYWNoZWQuIA0NNi4gSGVh ZGVyIGFkZGVkIHRvIGV2ZXJ5IGRpZ2VzdDoNDVRoaXMgb3B0aW9uIGFsbG93 cyBmb3IgdGV4dCB0byBiZSBhdHRhY2hlZCAoYXMgYW4gaW5pdGlhbCBtZXNz YWdlLCBiZWZvcmUgdGhlIHRhYmxlIG9mIGNvbnRlbnRzKSB0byB0aGUgdG9w IG9mIGRpZ2VzdHMuIFRoaXMgdGV4dCBjYW4gaW5jbHVkZSAlKGZpZWxkKXMg Zm9ybWF0IHN0cmluZ3Mgd2hpY2ggYXJlIHJlc29sdmVkIGFnYWluc3QgdGhl IGxpc3QncyBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoX19kaWN0X18pLiANDVNv bWUgdXNlZnVsIGZpZWxkcyBhcmU6IA0NcmVhbF9uYW1lOglUaGUgInByZXR0 eSIgbmFtZSBvZiB0aGUgbGlzdCwgd2l0aCBjYXBpdGFsaXNhdGlvbi4gDV9p bnRlcm5hbF9uYW1lOglUaGUgbmFtZSBieSB3aGljaCB0aGUgbGlzdCBpcyBp ZGVudGlmaWVkIGluIFVSTHMsIHdoZXJlIGNhc2UgaXMgZ2VybWFuZS4gDWhv c3RfbmFtZToJVGhlIGRvbWFpbi1xdWFsaWZpZWQgaG9zdCBuYW1lIHdoZXJl IHRoZSBsaXN0IHNlcnZlciBydW5zLiANd2ViX3BhZ2VfdXJsOglUaGUgbWFp bG1hbiByb290IFVSTCB0byB3aGljaCwgZWcsICdsaXN0aW5mby8lKF9pbnRl cm5hbF9uYW1lKXMgY2FuIGJlIGFwcGVuZGVkIHRvIHlpZWxkIHRoZSBsaXN0 aW5mbyBwYWdlIGZvciB0aGUgbGlzdC4gDWRlc2NyaXB0aW9uOglUaGUgYnJp ZWYgZGVzY3JpcHRpb24gb2YgdGhlIGxpc3QuIA1pbmZvOglUaGUgbGVzcyBi cmllZiBsaXN0IGRlc2NyaXB0aW9uLg0NNy4gRm9vdGVyIGFkZGVkIHRvIGV2 ZXJ5IGRpZ2VzdDoNDVRoaXMgb3B0aW9uIGFsbG93cyBmb3IgdGV4dCB0byBi ZSBhdHRhY2hlZCAoYXMgYSBmaW5hbCBtZXNzYWdlKSB0byB0aGUgYm90dG9t IG9mIGRpZ2VzdHMuIFRoaXMgdGV4dCBjYW4gaW5jbHVkZSAlKGZpZWxkKXMg Zm9ybWF0IHN0cmluZ3Mgd2hpY2ggYXJlIHJlc29sdmVkIGFnYWluc3QgdGhl IGxpc3QncyBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoX19kaWN0X18pLiANDVNv bWUgdXNlZnVsIGZpZWxkcyBhcmU6IA0NcmVhbF9uYW1lOglUaGUgInByZXR0 eSIgbmFtZSBvZiB0aGUgbGlzdCwgd2l0aCBjYXBpdGFsaXNhdGlvbi4gDV9p bnRlcm5hbF9uYW1lOglUaGUgbmFtZSBieSB3aGljaCB0aGUgbGlzdCBpcyBp ZGVudGlmaWVkIGluIFVSTHMsIHdoZXJlIGNhc2UgaXMgZ2VybWFuZS4gDWhv c3RfbmFtZToJVGhlIGRvbWFpbi1xdWFsaWZpZWQgaG9zdCBuYW1lIHdoZXJl IHRoZSBsaXN0IHNlcnZlciBydW5zLiANd2ViX3BhZ2VfdXJsOglUaGUgbWFp bG1hbiByb290IFVSTCB0byB3aGljaCwgZWcsICdsaXN0aW5mby8lKF9pbnRl cm5hbF9uYW1lKXMgY2FuIGJlIGFwcGVuZGVkIHRvIHlpZWxkIHRoZSBsaXN0 aW5mbyBwYWdlIGZvciB0aGUgbGlzdC4gDWRlc2NyaXB0aW9uOglUaGUgYnJp ZWYgZGVzY3JpcHRpb24gb2YgdGhlIGxpc3QuIA1pbmZvOglUaGUgbGVzcyBi cmllZiBsaXN0IGRlc2NyaXB0aW9uLg0NDUZvciBleGFtcGxlOg1fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0lKHJl YWxfbmFtZSlzIG1haWxsaXN0ICAtICAlKHJlYWxfbmFtZSlzQCUoaG9zdF9u YW1lKXMNJSh3ZWJfcGFnZV91cmwpc2xpc3RpbmZvLyUoX2ludGVybmFsX25h bWUpcw0NQm91bmNlIE9wdGlvbnMgDQ1Cb3VuY2Ugb3B0aW9ucyBhcmUgZm9y IHNldHRpbmcgcG9saWNpZXMgcmVnYXJkaW5nIHN5c3RlbWF0aWMgcHJvY2Vz c2luZyBvZiBib3VuY2UgbWVzc2FnZXMsIHRvIGhlbHAgYXV0b21hdGUgcmVj b2duaXRpb24gYW5kIGhhbmRsaW5nIG9mIGRlZnVuY3QgYWRkcmVzc2VzLg0N MS4gVHJ5IHRvIGZpZ3VyZSBvdXQgZXJyb3IgbWVzc2FnZXMgYXV0b21hdGlj YWxseT8NDTIuIE1pbmltdW0gbnVtYmVyIG9mIGRheXMgYW4gYWRkcmVzcyBo YXMgYmVlbiBub24tZmF0YWxseSBiYWQgYmVmb3JlIHdlIHRha2UgYWN0aW9u Lg0NMy4gTWluaW11bSBudW1iZXIgb2YgcG9zdHMgdG8gdGhlIGxpc3Qgc2lu Y2UgbWVtYmVycyBmaXJzdCBib3VuY2UgYmVmb3JlIHdlIGNvbnNpZGVyIHJl bW92aW5nIHRoZW0gZnJvbSB0aGUgbGlzdC4NDTQuIE1heGltdW0gbnVtYmVy IG9mIG1lc3NhZ2VzIHlvdXIgbGlzdCBnZXRzIGluIGFuIGhvdXIuIChCb3Vu Y2UgZGV0ZWN0aW9uIGZpbmRzIHRoaXMgaW5mb3JtYXRpb24gdXNlZnVsKQ0N NS4gQWN0aW9uIHdoZW4gY3JpdGljYWwgb3IgZXhjZXNzaXZlIGJvdW5jZXMg YXJlIGRldGVjdGVkLg0NVGhlIG9wdGlvbnMgYXZhaWxhYmxlIHdpdGggdGhp cyBjYXRlZ29yeSBhcmU6DURvIE5vdGhpbmc6CUFzIGl0IHNheXMuDURpc2Fi bGUgYW5kIE5vdGlmeSBNZToJRGlzYWJsZSB1c2VyIGZyb20gbWFpbGluZyBs aXN0IGFuZCBub3RpZnkgYWRtaW5pc3RyYXRvciBvZiB0aGUgZGV0YWlscy4N RGlzYWJsZSBhbmQgRG9uknQgTm90aWZ5IE1lOglEaXNhYmxlIHVzZXIgZnJv bSBtYWlsaW5nIGxpc3QgYW5kIGRvIG5vdCBub3RpZnkgdGhlIGFkbWluaXN0 cmF0b3Igb2YgdGhlIGZhdWx0Lg1SZW1vdmUgYW5kIE5vdGlmeSBNZToJUmVt b3ZlIHVzZXIgZnJvbSBtYWlsaW5nIGxpc3QgYW5kIG5vdGlmeSB0aGUgYWRt aW5pc3RyYXRvci4NDQ1BcmNoaXZhbCBPcHRpb25zIA0NQXJjaGl2YWwgb3B0 aW9ucyBjb3ZlciBwb2xpY2llcyByZWdhcmRpbmcgdGhlIGFyY2hpdmluZyBv ZiBtZXNzYWdlcyBzZW50IGZyb20gdGhlIG1haWxpbmcgbGlzdC4NDTEuIEFy Y2hpdmUgbWVzc2FnZXM/DQ1UaGlzIG9wdGlvbnMgc2V0cyB3aGV0aGVyIG1l c3NhZ2VzIHNlbnQgdG8gb3IgZnJvbSB0aGUgbWFpbGluZyBsaXN0IHNob3Vs ZCBiZSBhcmNoaXZlZC4NDTIuIElzIGFyY2hpdmUgZmlsZSBzb3VyY2UgZm9y IHB1YmxpYyBvciBwcml2YXRlIGFyY2hpdmFsPw0NV2hlbiB0aGUgb3B0aW9u IGlzIHNldCB0byBwdWJsaWMsIHRoZW4gYW55b25lIG1heSBsb29rIGF0IHRo ZSBhcmNoaXZlLiBIb3dldmVyLCBpZiB0aGUgb3B0aW9uIGlzIHNldCB0byBw cml2YXRlLCB0aGVuIG9ubHkgbGlzdCBtZW1iZXJzIGFuZCBhZG1pbmlzdHJh dG9ycyBtYXkgdmlldyB0aGUgYXJjaGl2ZS4NDTMuIFNldCBkYXRlIGluIGFy Y2hpdmUgdG8gd2hlbiB0aGUgbWFpbCBpcyBjbGFpbWVkIHRvIGhhdmUgYmVl biBzZW50IG9yIHRvIHRoZSB0aW1lIHdlIHJlc2VuZCBpdD8NDTQuIEhvdyBv ZnRlbiBzaG91bGQgYSBuZXcgYXJjaGl2ZSB2b2x1bWUgYmUgc3RhcnRlZD8N DVRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3IgaG93IG9mdGVuIGEgbmV3IGFy Y2hpdmUgc2hvdWxkIGJlIHN0YXJ0ZWQgYXJlIHllYXJseSwgbW9udGhseSwg cXVhcnRlcmx5LCB3ZWVrbHkgYW5kIGRhaWx5Lg0NDU1haWwtTmV3cyBhbmQg TmV3cy1NYWlsIGdhdGV3YXlzDQ1UaGlzIHNlY3Rpb24gaXMgaW5jbHVkZWQg Zm9yIHNwZWNpZnlpbmcgTWFpbC10by1OZXdzIGFuZCBOZXdzLXRvLU1haWwg Z2F0ZXdheSBzZXJ2aWNlcy4NDTEuIFRoZSBJbnRlcm5ldCBhZGRyZXNzIG9m IHRoZSBtYWNoaW5lIHlvdXIgTmV3cyBzZXJ2ZXIgaXMgcnVubmluZyBvbjoN DVRoZSBOZXdzIHNlcnZlciBpcyBub3QgcGFydCBvZiBNYWlsbWFuIHByb3Bl ci4gVGhlcmVmb3JlLCB5b3UgaGF2ZSB0byBhbHJlYWR5IGhhdmUgYWNjZXNz IHRvIGEgTk5UUCBzZXJ2ZXIsIGFuZCB0aGF0IE5OVFAgc2VydmVyIGhhcyB0 byByZWNvZ25pc2UgdGhlIG1hY2hpbmUgdGhpcyBtYWlsaW5nIGxpc3QgcnVu cyBvbiBhcyBhIG1hY2hpbmUgY2FwYWJsZSBvZiByZWFkaW5nIGFuZCBwb3N0 aW5nIG5ld3MuDQ0yLiBUaGUgbmFtZSBvZiB0aGUgVXNlbmV0IGdyb3VwIHRv IGdhdGV3YXkgdG8gYW5kL29yIGZyb20uDQ0zLiBTaG91bGQgcG9zdHMgdG8g dGhlIG1haWxpbmcgbGlzdCBiZSByZXNlbnQgdG8gdGhlIG5ld3Nncm91cD8N DTQuIFNob3VsZCBuZXdzZ3JvdXAgcG9zdHMgbm90IHNlbnQgZnJvbSB0aGUg bGlzdCBiZSByZXNlbnQgdG8gdGhlIGxpc3Q/DQ0NCQkTIFBBR0UgFDE5FQ0N DQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAQAAAEEAAAVBAAAFwQAABgEAAAZBAAAVAQAAFUEAABjBAAA ZAQAAHIEAABzBAAAjQQAAI4EAACPBAAAkAQAAJEEAACfBAAAoAQAALoEAAC7 BAAAvAQAAL0EAAC+BAAA0QQAANIEAADsBAAA7QQAAO4EAADvBAAA8AQAAAsF AAAMBQAAJgUAACcFAAAoBQAAKQUAACoFAABEBQAARQUAAF8FAABgBQAAYQUA AGIFAABjBQAAdwUAAHgFAACSBQAAkwUAAJQFAACVBQAAlgUAAKYFAACnBQAA wQUAAMIFAADDBQAAxAUAAMUFAADWBQAA1wUAAP0A/fb9AO3p7ebf5tXf5t/m 3+bL3+bf5t/mwd/m3+bf5rff5t/m3+at3+bf5t/mo9/m3+bf5pnf5t/m3wAA EwIIgQNqG3UAAAYIAVUIAW1IAAQTAgiBA2qedAAABggBVQgBbUgABBMCCIED aiF0AAAGCAFVCAFtSAAEEwIIgQNqpHMAAAYIAVUIAW1IAAQTAgiBA2oncwAA BggBVQgBbUgABBMCCIEDaqpyAAAGCAFVCAFtSAAEEwIIgQNqLXIAAAYIAVUI AW1IAAQNA2oAAAAAVQgBbUgABARtSAAEAAdoCABuSAkEEANqAAAAAFUIAWgI AG5ICQQADQNqAAAAAENKJABVCAEEQ0okADwABAAAAQQAABUEAAAWBAAAFwQA ABkEAAAaBAAAGwQAABwEAAAdBAAAHgQAAB8EAAAgBAAAIQQAACsEAAA6BAAA OwQAADwEAAA9BAAAPgQAAD8EAABABAAAUwQAAFQEAABlBAAAkgQAAL8EAADx BAAA/QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAA AAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkA AAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPYAAAAAAAAA AAAAAAD2AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAA AAAAAAAA9AAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA 7gAAAAAAAAAAAAAAAO4AAAAAAAAAAAAAAADoAAAAAAAAAAAAAAAAAAAFFAAN xgUAAWggAgAFFQANxgUAAWggAgABAQADAAADJAEAAQAAAAETAAABDwAAGwAE AAABBAAAFQQAABYEAAAXBAAAGQQAABoEAAAbBAAAHAQAAB0EAAAeBAAAHwQA ACAEAAAhBAAAKwQAADoEAAA7BAAAPAQAAD0EAAA+BAAAPwQAAEAEAABTBAAA VAQAAGUEAACPBAAAkAQAAJIEAAC8BAAAvQQAAL8EAADuBAAA7wQAAPEEAAAo BQAAKQUAACsFAABhBQAAYgUAAGQFAACUBQAAlQUAAJcFAADDBQAAxAUAAMYF AADzBQAA9AUAAPYFAAApBgAAKwYAAC0GAABaBgAAXAYAAF4GAACfBgAAoQYA AKMGAADWBgAA2AYAANoGAAAGBwAACAcAAAoHAAA4BwAAOgcAADwHAAB6BwAA fAcAAH4HAACABwAAjgcAAI8HAACLCwAA3QsAAN4LAADfCwAA4AsAAO0LAADu CwAAAAwAAAEMAADNDQAAzg0AAAcQAAAIEAAA+hEAAPsRAACVEwAAlhMAAJcT AACxEwAAshMAAJAVAACRFQAAYxcAAGQXAAD9+/39/QAAAAAAAAAAAAAAAAAA AAD4AAD29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb2 9vb29vYA+AAAAAAAAPgA8wAAAAAAAAAAAADzAAAAAAAAAAUCAgAFAQIBAQAF AgEABQADAhMAAwIPAABg8QQAACsFAABkBQAAlwUAAMYFAAD2BQAALQYAAF4G AACjBgAA2gYAAAoHAAA8BwAAfgcAAIAHAACOBwAAjwcAAIsLAADdCwAA3gsA AN8LAADgCwAA7QsAAO4LAAAADAAAAQwAAM0NAADODQAABxAAAPkAAAAAAAAA AAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAA AAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA +QAAAAAAAAAAAAAAAPEAAAAAAAAAAAAAAADvAAAAAAAAAAAAAAAA8QAAAAAA AAAAAAAAAPEAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAA APEAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAAAPEAAAAA AAAAAAAAAADtAAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAPEAAAAAAAAAAAAA AADxAAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAB AQAAAQAAAAUVAA3GBQABaCACAAUUAA3GBQABaCACABvXBQAA8QUAAPIFAADz BQAA9AUAAPUFAAAMBgAADQYAACcGAAAoBgAAKQYAACsGAAAsBgAAPQYAAD4G AABYBgAAWQYAAFoGAABcBgAAXQYAAIIGAACDBgAAnQYAAJ4GAACfBgAAoQYA AKIGAAC5BgAAugYAANQGAADVBgAA1gYAANgGAADZBgAA6QYAAOoGAAAEBwAA BQcAAAYHAAAIBwAACQcAABsHAAAcBwAANgcAADcHAAA4BwAAOgcAADsHAABd BwAAXgcAAHgHAAB5BwAAegcAAHwHAAB9BwAAfgcAAH8HAABSFwAAYBcAAOgX AAD98+z97P3s/eLs/ez97P3Y7P3s/ez9zuz97P3s/cTs/ez97P267P3s/ez9 sOz97P3s/abs/ez9nQCYAAAAAAAACE9KAwBRSgMAABADagAAAABVCAFoCABu SAkEABMCCIEDagN5AAAGCAFVCAFtSAAEEwIIgQNqhngAAAYIAVUIAW1IAAQT AgiBA2oJeAAABggBVQgBbUgABBMCCIEDaox3AAAGCAFVCAFtSAAEEwIIgQNq D3cAAAYIAVUIAW1IAAQTAgiBA2qSdgAABggBVQgBbUgABBMCCIEDahV2AAAG CAFVCAFtSAAEDQNqAAAAAFUIAW1IAAQTAgiBA2qYdQAABggBVQgBbUgABARt SAAEOwcQAAAIEAAA+hEAAPsRAACVEwAAlhMAAJcTAACxEwAAshMAAJAVAACR FQAAYxcAAGQXAADDFwAA5xcAAOgXAAAXGAAAPRgAAD4YAACDGAAAhBgAAMgY AAAHGQAARRkAAJwZAACdGQAA4BkAAOUZAADmGQAAPBoAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA/QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAA AAAAAAAAAAABAwAAAQIAAAEAAAAdZBcAAMMXAADnFwAA6BcAABcYAAA9GAAA PhgAAIMYAACEGAAAyBgAAAcZAABFGQAAnBkAAJ0ZAADgGQAA5RkAAOYZAAA8 GgAAPRoAAEwaAABNGgAAkxoAANcaAADeGgAA3xoAACUbAABtGwAAbhsAAG8b AADEGwAAxRsAAK0dAACuHQAArx0AAMgdAADJHQAAOiAAADsgAAASIQAAEyEA ABQhAAAnIQAAKCEAABgkAAAZJAAAKiUAACslAABNJgAA/yYAAB0oAAA0KQAA 7CkAABsqAABzKgAAdCoAAJ4qAAByKwAAcysAAK4rAADuKwAA7ysAACMsAACb LAAAnCwAAOgsAADpLAAAIC0AAHUtAAB2LQAAdy0AAHgtAACHLQAAiC0AAGYw AABnMAAAaDAAAGkwAAB5MAAAejAAAG0xAABuMQAAkDEAAJExAABiMwAAYzMA AG0zAAChMwAA1DMAAAo0AAA/NAAAQDQAAGw0AABtNAAA9jUAAAD8AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkAAAAAAAD5AAAAAAD29vb29vPx APPvAPPvAPPxAPMA8/Hx8fHs8fHx8fH58fHx/PHx8fHx8fHx8fzx8QAAAAUC AQAFAAMCEgADAhEABQgCAAkBBQgBAAkBBQICAAUBBQIDAAUCAF3oFwAARxgA AHwYAACCGAAA3RgAAPwYAAAHGQAAJhkAAGcZAACOGQAARRoAAEsaAABGGwAA axsAAGwbAABtGwAAbxsAACslAAA2JQAATSYAAGUmAAD/JgAAEScAABInAAAT JwAAHSgAACwoAAAtKAAALigAADQpAABBKQAAbzMAAHwzAAB9MwAAhDMAAKEz AACiMwAArzMAALAzAAC3MwAA1TMAANYzAADjMwAA5DMAAOszAAAKNAAACzQA ABg0AAAZNAAAIDQAAD80AACkSgAApUoAAOVaAADxWgAAC18AAB9fAADsYQAA BGIAADFmAABPZgAA2G0AAOptAABwbgAAwm4AADeDAADJgwAA3IwAAN2MAADj jAAA5IwAAOaMAADnjAAA64wAAPnt+e357fnt+e357fnt4d4A3ADcANwA3ADc ANwA3AD51t75APnW3vkA+dbe+QD51t75ANQA3ADcANwA3AD5APkA+QDNys3F zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDBKHwBtSAAEAAQwSh8AAA0D agAAAAAwSh8AVQgBAzUIgQoJagEA3vBDShIAAAM2CIEEQ0oSAAAWQioBQ0oS AE9KAgBRSgIAaAgAbkgJBAAWQioBQ0oSAE9KAwBRSgMAaAgAbkgJBAAMQ0oS AE9KAwBRSgMASTwaAAA9GgAATBoAAE0aAACTGgAA1xoAAN4aAADfGgAAJRsA AG0bAABuGwAAbxsAAMQbAADFGwAArR0AAK4dAACvHQAAyB0AAMkdAAA6IAAA OyAAABIhAAATIQAAFCEAACchAAAoIQAAGCQAABkkAAAqJQAAKyUAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA/QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAAAAAAAAAAAQIAAAEAAAAdKyUAAE0mAAD/JgAAHSgAADQp AADsKQAAGyoAAHMqAAB0KgAAnioAAHIrAABzKwAArisAAO4rAADvKwAAIywA AJssAACcLAAA6CwAAOksAAAgLQAAdS0AAHYtAAB3LQAAeC0AAIctAAD6AAAA AAAAAAAAAAAA+gAAAAAAAAAAAAAAAPoAAAAAAAAAAAAAAAD6AAAAAAAAAAAA AAAA+gAAAAAAAAAAAAAAAO0AAAAAAAAAAAAAAADpAAAAAAAAAAAAAAAA4wAA AAAAAAAAAAAAAO0AAAAAAAAAAAAAAADhAAAAAAAAAAAAAAAA4wAAAAAAAAAA AAAAAO0AAAAAAAAAAAAAAADhAAAAAAAAAAAAAAAA4wAAAAAAAAAAAAAAAO0A AAAAAAAAAAAAAADpAAAAAAAAAAAAAAAA4wAAAAAAAAAAAAAAAO0AAAAAAAAA AAAAAADjAAAAAAAAAAAAAAAA7QAAAAAAAAAAAAAAAOkAAAAAAAAAAAAAAADp AAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAN0AAAAAAAAAAAAAAADbAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAEBAAADEQAPhAAAAAESAAAFAAAPhOEDEYQK/gAD EQAPhPwEAAwAAAomAAtGAgAPhOEDEYQK/g3GBAFoAQAFAAAKJgALRgEAABmH LQAAiC0AAGYwAABnMAAAaDAAAGkwAAB5MAAAejAAAG0xAABuMQAAkDEAAJEx AABiMwAAYzMAAG0zAAChMwAA1DMAAAo0AAA/NAAAQDQAAGw0AABtNAAA9jUA APc1AACqNgAAqzYAANQ2AADVNgAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAA AAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD5AAAA AAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD7AAAAAAAAAAAA AAAA9wAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA8wAA AAAAAAAAAAAAAPMAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA7QAAAAAAAAAA AAAAAPMAAAAAAAAAAAAAAADtAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAPcA AAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAPMAAAAAAAAA AAAAAADzAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABREAD4TFAhGECwAAAxEAD4TFAgAB AwAAAQIAAAMRAA+EAAAAG/Y1AAD3NQAAqjYAAKs2AADUNgAA1TYAABc4AAAY OAAAODgAADo4AADXOQAA2DkAAAE7AAACOwAA/zsAAAA8AAAsPAAALTwAAHo9 AAB7PQAAvT0AAL49AADBPwAAwj8AAOw/AADtPwAAtUAAALZAAAD/QAAAAEEA AEFCAABCQgAAp0IAAKhCAACpQwAAqkMAAPxDAAD9QwAAqEUAAKlFAACqRQAA JkYAACdGAADlRwAA5kcAABFIAAASSAAALkkAAC9JAABfSQAAYEkAAKVKAACm SgAAFUsAABZLAAAvTAAAMEwAAHFMAAByTAAAF00AABhNAABZTQAAWk0AAHNO AAB0TgAAoE4AAKFOAABDTwAARE8AAIxPAACNTwAA5k8AAOdPAAAIUAAACVAA AA1RAAAOUQAANVEAADZRAAAIUwAACVMAAApTAAAhUwAAIlMAAA1UAAAOVAAA IlQAACNUAAD+VQAA/1UAACRWAABrVgAAmlYAANZWAAAVVwAAalcAAMFXAAD9 /f36/f39+v39/f39/f36/f39+v39/fr9/f36/f39+v39/fr9/f39+v39/fr9 /f36/f39+v39/fr9/f36/f39+v39/fr9/f36/f39+v39/f33/f39+v39/fLy 8vLy8vIIAhEACA0ACQEABQICAAUBBQIDAAUCAwIRAABg1TYAABc4AAAYOAAA ODgAADo4AADXOQAA2DkAAAE7AAACOwAA/zsAAAA8AAAsPAAALTwAAHo9AAB7 PQAAvT0AAL49AADBPwAAwj8AAOw/AADtPwAAtUAAALZAAAD/QAAAAEEAAEFC AABCQgAAp0IAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA9QAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcAAAAAAAAA AAAAAAD1AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3 AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7AAAAAAAA AAAAAAAA9wAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA +wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA9wAAAAAA AAAAAAAAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAFAwAPhBwBEYTk/gABAwAAAxEAD4QAAAADEQAP hMUCABunQgAAqEIAAKlDAACqQwAA/EMAAP1DAACoRQAAqUUAAKpFAAAmRgAA J0YAAOVHAADmRwAAEUgAABJIAAAuSQAAL0kAAF9JAABgSQAApUoAAKZKAAAV SwAAFksAAC9MAAAwTAAAcUwAAHJMAAAXTQAA+wAAAAAAAAAAAAAAAPcAAAAA AAAAAAAAAAD7AAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAA AAD3AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADxAAAA AAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7AAAAAAAAAAAA AAAA7wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA+wAA AAAAAAAAAAAAAO8AAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA9wAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAAAPsAAAAAAAAA AAAAAAD3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAAFAwAPhKoB EYRW/gADEQAPhMUCAAMRAA+EAAAAGxdNAAAYTQAAWU0AAFpNAABzTgAAdE4A AKBOAAChTgAAQ08AAERPAACMTwAAjU8AAOZPAADnTwAACFAAAAlQAAANUQAA DlEAADVRAAA2UQAACFMAAAlTAAAKUwAAIVMAACJTAAANVAAADlQAACJUAAAj VAAA+wAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+wAA AAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9QAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPUA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPkAAAAAAAAA AAAAAAD1AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD1AAAAAAAA AAAAAAAA9QAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA 9QAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9QAAAAAA AAAAAAAAAAAAAAAAAAABAgAAAxEAD4QAAAABAwAAAxEAD4TFAgAcI1QAAP5V AAD/VQAAJFYAAGtWAACaVgAA1lYAABVXAABqVwAAwVcAAMJXAADDVwAAK1gA ACxYAABGWAAAR1gAADxZAAA9WQAAUFoAAFFaAABSWgAAY1oAAGRaAADjWgAA 5FoAAOVaAADxWgAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADrAAAAAAAA AAAAAAAA6wAAAAAAAAAAAAAAAOsAAAAAAAAAAAAAAADrAAAAAAAAAAAAAAAA 6wAAAAAAAAAAAAAAAOsAAAAAAAAAAAAAAADrAAAAAAAAAAAAAAAA+wAAAAAA AAAAAAAAAPsAAAAAAAAAAAAAAADlAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAA AOMAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAA AAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAA AADhAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD7AAAA AAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAAAAAAAAAECAAAB AwAABREAD4Q3AhGEyf0ADxEACiYAC0YNAA+ETwgRhJz5DcYKAWgBAsUCwQcA AAADEQAPhAAAABrBVwAAwlcAAMNXAAArWAAALFgAAEZYAABHWAAAPFkAAD1Z AABQWgAAUVoAAFJaAABjWgAAZFoAAONaAADkWgAA5VoAAPFaAAA5WwAAOlsA ABRcAAAVXAAAQlwAAENcAAAKXQAAqF0AAP1dAACiXgAAo14AAAlfAAAKXwAA C18AAB9fAABCXwAAQ18AAMlfAADQXwAA4l8AAPtfAAD8XwAAV2AAAFhgAACq YAAAq2AAAOphAADrYQAA7GEAAARiAAAzYgAANGIAANViAADWYgAABWMAAAZj AADIYwAACGQAAAlkAABqZAAAa2QAAGFlAABiZQAAhGUAANtlAAAvZgAAMGYA ADFmAABPZgAAxmYAAMdmAAD7ZwAA/GcAAGRoAACTaAAA+WgAAPpoAABdaQAA XmkAAG5qAABvagAArWoAAK5qAACUawAAlWsAANBrAADRawAAkGwAAJFsAADP bAAA0GwAAMltAADKbQAA120AANhtAAD9/f39+v39/f39/ff9/f39/fr9/f36 /f3y8vL9/f39/fr9/e3t7f39/fr9/f39/fr9/f36/f39/fr9/f396Oj9/f36 /f39/f39/fr9/f36/f39+v39/fr9/f39/QgCEQAIEQAJAQAIAhEACBAACQEA CAIRAAgPAAkBAAUCAgAFAQUCAwAFAgMCEQAAXPFaAAA5WwAAOlsAABRcAAAV XAAAQlwAAENcAAAKXQAAqF0AAP1dAACiXgAAo14AAAlfAAAKXwAAC18AAB9f AABCXwAAQ18AAMlfAADQXwAA4l8AAPtfAAD8XwAAV2AAAFhgAACqYAAA/QAA AAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAOkA AAAAAAAAAAAAAADpAAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAPUAAAAAAAAA AAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD1AAAAAAAA AAAAAAAA5AAAAAAAAAAAAAAAAOQAAAAAAAAAAAAAAADkAAAAAAAAAAAAAAAA +QAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA3gAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAwAPhBwBEYTk/gURAAomAAtGEAAM EQAKJgALRg8AD4SKBQ3GBwFoAQGKBQAAAxEAD4TFAgADEQAPhAAAAAEDAAAZ qmAAAKtgAADqYQAA62EAAOxhAAAEYgAAM2IAADRiAADVYgAA1mIAAAVjAAAG YwAAyGMAAAhkAAAJZAAAamQAAGtkAABhZQAAYmUAAIRlAADbZQAAL2YAADBm AAAxZgAAT2YAAMZmAADHZgAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3 AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD1AAAAAAAA AAAAAAAA9wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA 9QAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAA AAAAAAAAAPcAAAAAAAAAAAAAAADvAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAA APsAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAOEAAAAA AAAAAAAAAADhAAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAA AAD3AAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAAAAAAA DhEACiYAC0YRAA+EGAYRhO78DcYHAWgBAW4EAAAFAwAPhBwBEYTk/gABAwAA AxEAD4QAAAADEQAPhMUCABrHZgAA+2cAAPxnAABkaAAAk2gAAPloAAD6aAAA XWkAAF5pAABuagAAb2oAAK1qAACuagAAlGsAAJVrAADQawAA0WsAAJBsAACR bAAAz2wAANBsAADJbQAAym0AANdtAADYbQAA6m0AAOttAAD7AAAAAAAAAAAA AAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA9QAA AAAAAAAAAAAAAPEAAAAAAAAAAAAAAADrAAAAAAAAAAAAAAAA8QAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAPsA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAOkAAAAAAAAA AAAAAADxAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADp AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD7AAAAAAAA AAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADlAAAAAAAAAAAAAAAA 5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEQAPhPwEAAEDAAAFAwAPhBwB EYTk/gADEQAPhAAAAAURAA+E/AQRhOX+AAMRAA+ExQIAGthtAADqbQAA620A AFZuAABXbgAAb24AAHBuAACWbgAArG4AAMNuAADEbgAAVm8AAFdvAACWbwAA l28AAN1vAADebwAAXXAAAF5wAABfcAAAhHAAAIVwAAD1cAAA9nAAAE1xAABO cQAAhHEAAIVxAABacgAAW3IAAHRyAAB1cgAAtXIAAA9zAABWcwAA3nMAAA90 AAA2dAAAN3QAAG10AABudAAARXUAAEZ1AABfdQAAYHUAAKB1AAD6dQAAQXYA AMl2AAD6dgAAIXcAACJ3AAAjdwAAOncAADt3AACtdwAArncAAPV3AAD2dwAA HnkAAB95AABUeQAAVXkAAOF5AADieQAAFnoAABd6AAC9egAAvnoAAPt6AAD8 egAA/3sAAAB8AABOfAAAT3wAAGp9AABrfQAAjH0AAI19AAB8fgAAfX4AAJZ+ AACXfgAA134AADF/AAB4fwAAAIAAADGAAABYgAAAWYAAAHqAAAB7gAAATIEA AE2BAABmgQAAZ4EAAKeBAAD9/f39/f39/f39/f39/fr9/f399/39/fr9+v39 /f398vLy8vLy/fr9/f39/fLy8vLy8v399/39/fr9/f36/f39+v39/fr9/f36 /f39+v39/f398vLy8vLy/fr9/f39/fIIAhEACBIACQEABQICAAUBBQIDAAUC AwIRAABg620AAFZuAABXbgAAb24AAHBuAACWbgAArG4AAMNuAADEbgAAVm8A AFdvAACWbwAAl28AAN1vAADebwAAXXAAAF5wAABfcAAAhHAAAIVwAAD1cAAA 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 AAAA3wAAAAAAAAAAAAAAANcAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAA1wAA AAAAAAAAAAAAANcAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAAAAAHEQAPhMUC DcYFAAGGCgAABREADcYFAAGGCgAAAxEAD4TFAgABAwAAAxEAD4QAAAAPEQAK JgALRhIAD4SGChGEP/gNxgoBaAEC4QOGCgYAABmngQAAAYIAAEiCAADQggAA AYMAACiDAAApgwAAKoMAADeDAABngwAAnoMAAMqDAADLgwAA24MAANyDAAB4 hAAAeYQAAKyEAACthAAAAoUAAAOFAAB1hQAAdoUAAOCFAADhhQAAHIYAAB2G AABLhgAAY4YAAMKGAAAwhwAAgocAAIOHAACEhwAAlocAAJeHAAD3hwAA+IcA AA2IAAAOiAAAZogAAGeIAAChiAAAoogAAFOJAABUiQAAtokAALeJAADsiQAA 7YkAAGOKAABkigAAZYoAAIaKAACHigAA34oAAOCKAAAniwAAKIsAABKMAAAT jAAATowAAE+MAACPjAAAkIwAANiMAADZjAAA2owAANyMAADdjAAA44wAAOSM AADmjAAA54wAAOiMAADpjAAA6owAAOuMAAD7+/v7+/n5+fn5+fn2+fn58/nz +fP58/nz+fnu7u7u+fn2+fn58/n5+fP5+fnzAPP5+fn59vn5+fP5+fnz+fP5 8/n57Ozs7Ozs7Ozs+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAgEBAAgCEQAIEAAJAQAFAgMABQIFAgIABQEDAhEACAIRAAgSAAkB TcqDAADLgwAA24MAANyDAAB4hAAAeYQAAKyEAACthAAAAoUAAAOFAAB1hQAA doUAAOCFAADhhQAAHIYAAB2GAABLhgAAY4YAAMKGAAAwhwAAgocAAIOHAACE hwAA+wAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAA AAAAAAAAAAAAAPsAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA7QAAAAAAAAAA AAAAAPMAAAAAAAAAAAAAAADtAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAO0A AAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA7QAAAAAAAAAAAAAAAPMAAAAAAAAA AAAAAADrAAAAAAAAAAAAAAAA4QAAAAAAAAAAAAAAANEAAAAAAAAAAAAAAADR AAAAAAAAAAAAAAAAwQAAAAAAAAAAAAAAAMEAAAAAAAAAAAAAAAD7AAAAAAAA AAAAAAAA+wAAAAAAAAAAAAAAAAAAAAAAAAAAEBEACiYAC0YQAA+EgQ8RhETz DcYLAAPhA4EPYhMAAAAADxEACiYAC0YQAA+EgQ8RhETzDcYKAQwHAuEDgQ8A AAAJEQAPhIEPEYRE8w3GBQAB4QMAAAERAAAFEQAPhBwBEYTk/gAFAwAPhBwB EYTk/gABAgAAAxEAD4QAAAAWhIcAAJaHAACXhwAA94cAAPiHAAANiAAADogA AGaIAABniAAAoYgAAKKIAABTiQAAVIkAALaJAAC3iQAA7IkAAO2JAABjigAA ZIoAAGWKAACGigAAh4oAAN+KAADgigAAJ4sAACiLAAASjAAAE4wAAP0AAAAA AAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAA AAD3AAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD5AAAA AAAAAAAAAAAA9wAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAADzAAAAAAAAAAAA AAAA+QAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA9wAA AAAAAAAAAAAAAPkAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA+QAAAAAAAAAA AAAAAPkAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkA AAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAO8AAAAAAAAA AAAAAADzAAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABEQAAAQAAAAMRAA+ExQIAAQMAAAMRAA+EAAAAAQIAABsTjAAATowAAE+M AACPjAAAkIwAANiMAADZjAAA2owAAOiMAADpjAAA6owAAOuMAAD9AAAAAAAA AAAAAAAA+QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA /QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9wAAAAAA AAAAAAAAAPUAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABHgAAAxEAD4QA AAABAwAACxwAH7CCLiCwxkEhsAgHIrAIByOQoAUkkKAFJbAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALXIAAEQAZABgApABAAAAAAAAAAAA AAAAAAAAAIAvQB+rAqsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAPAATwegAAALIECvAIAAAAAQQAAAAKAABjAAvwVgAAAARBAQAAAAXBMgAA AAYBAgAAAIEBEQAAEL8BAAAQAP8BAAAIAEgAOgBcAEQAbwB3AG4AbABvAGEA ZABzAFwAbQBhAGkAbABtAGEAbgAuAGoAcABnAAAAAAAQ8AQAAAAAAACAUgAH 8F9xAAAFBRoN1MVk5ONAQ17x+Lj2yxn/ADtxAAABAAAARAAAAAAAQwGgRh3w M3EAABoN1MVk5ONAQ17x+Lj2yxn//9j/4AAQSkZJRgABAgEASABIAAD/7RAg UGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEAAQBIAAAAAQABOEJJ TQPzAAAAAAAIAAAAAAAAAAA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgAB AAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEA oZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAA AAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/ ////////////////////////////A+gAAAAA//////////////////////// /////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAA AAAQAAAAAQAAAkAAAAJAAAAAADhCSU0ECQAAAAAOrwAAAAEAAACAAAAAVAAA AYAAAH4AAAAOkwAYAAH/2P/gABBKRklGAAECAQBIAEgAAP/+ACdGaWxlIHdy aXR0ZW4gYnkgQWRvYmUgUGhvdG9zaG9wqCA0LjAA/+4ADkFkb2JlAGSAAAAA Af/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4O DhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM /8AAEQgAVACAAwEiAAIRAQMRAf/dAAQACP/EAT8AAAEFAQEBAQEBAAAAAAAA AAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAAB BAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIz NHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieU pIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKS Q1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE 1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A 9QSSSSUpJJJJSkkxewGC4A+CTnta3cToPDVJVFdJBOUzsCfPQJ25LCYd7CeP BDij3XcEt6SpJSAJJAHxSkATIjxlFapJIkASSAPGdEtBoSBPEpKUkkCCYBBP gCmlupkQOdQkpdJLtI1B4KSSn//Q9QSSSSUxssZVW+2xwZXW0ue48BrRuc4r jP8Ax1vq9dknGxa8mwFwZXcK2w+Ttaa6n2Mu9/5m9m//AINdqW7muBAcCCCD wZHBXhnTfqV1G3JdaHnEGO/cNA8na7d+g2O9+zb7URinkB4Om/1R7kYEcT69 iZtWXjsyap2WCQHiHSDtcHt/NcmyiH41rddWGC0kGY02lv5yxfqzRm4+LFuS y3HD7Q2kUlhDg+C9ttlj7du5r/ZYtfJk49u1vqO2OLWTG5wEsbuH0dzlUmSJ GN7Ej7G9DWIkRuAXJHULKs92Pst+1XZLMZlRaSHMLaZ6luj2sxabL67f+G9J U6TVg4WG3IyLKRlWuOSzI9ewvpYbGXeg2uuz0r7L7a3/AOD/AJj9GpsxLG1W 1HEymPtqcTcL7HkOHvZVW97/AFWss3WN2oteDRj3usYMuyHVhpsstfDHt23O r32O99X7/wDPVqT3Qw+zKv5fg6T67LWY1txtGRRaKrGMLmgvEt3WV1+19Nzf 0nuTdO6VTT0fDuD8h2VY6u20vse5xcW7Xtsa47vT/wCDXMWVuv6rj9Ixasmv 9Kx2fczIuLiHe2vGdbv3fo2O9azf7F0eT0bFqptx6GZL2vpdbvFthebmbW1V /aPU9T3s3fo3+xSA0AxkXI/j5rYdbcXomDWwZDsq0C5zrC9xNrqbLrG27vzH el+d+es+zNdn4X2CtmQK66KLciA8Pq32Ut/Zu9vudYxlmQ+38/0fRVizo1Xr ua2rL9Frq/0rsm8lzHj9LtZ6u7fW/YjZ/S66zj0Y9GRbQwPc99eRaywOOo9z X/pX2Od9K1DjCfbKOvIbj9Xfj1XOtOK0eniuba+3eC67OD77Geg+t+Jb6Vf6 X/AVf4VSf6hzmYrBY2lzK3497nuZuJuuc7Hssd+9RWx9P/bP+FQGYRbh2VDB ygHt3R9os9Uvb9Fpt3/zO1v0d6avDrZe7bgZF5DWS26+121tn0nN9Ulm9m1n vp/SVpe4Fe0Xc+rBpHTPY5xddfkWS8kkzda0bd35rWBnsWusbplQpxPQFPoV 0ve2thJJLdxPqOc//S/zislzm6tJafJNOWui4Yb60//R9QQsvKpw8W7LyDtp x2OssPeGjdp/KRV51/jS+tD6Z6DjEbdjbc0j6RM+pRj/ANX6Ntv/AFpNnLhF /Z5piLLhdf8ArVldbza7rHHHbj7vQrpe5rqw/bub6jC31LH7P0lrv7DFLonU q32ZFXUMh9Vb27WXPIIc7/DMfp/PNa6vZb9NcfjW5D/5kt9Rx1e48f1WrsOk Z2PV0fF6WzHJzKsr7RXl2ECsl52vqu3+/ZY36b0zl4z4yJZeESHD84geP9FO SUQAeATrWuHiHD+k9T0/rmA61uHjEuqqYIyP8FP+h9R3u9X85apyoVzAx+kZ 2PdS3Ha2IZfUQCASNw2n85rln3/Umnd+qZd+Owaitljg0fBsoT5ejV0RuCzQ 5qxZFjpwo8jqFdbQ6yxtbSYBeQ0E+A3LPyev4WOHH12WWtBLKWO3Oc781ntn 6S0aPqLjHIF2fe/N2iGC474B/dlauP8AVno2MZqx2j5BIYB1P2KPMnpH7Wl9 U+n/AGHpzs7LP6xeTde8+Lvc7/yLVbryNwkaA6x8VDr9z6WUYzBtpdLnR3Lf os/78qFOTHJTcs9eEdF2DH6eI626u+e6W4qqy4FGD5UVs1M5SBKjuCRcAgpJ uVbqHUcPp+O7JzbRVUNBOrnO7V1Vt99ljv3GJ3XAd1l20UdU+smHRawPZh0u tJOsOtcGs/6NLk+A4pAFZkPBEyD/AP/S9QETqvDvrX0TrL+rdSvscMm6p9l+ RtDgdm4e/Z7tlbWvZ+d9Be4qh10Mb0Tqb4a1xxL9z4E6Vv8ApfvbUDw0SY8R A9OtcMlC7FGhfq03D4X+xnXH1KD6bj4cH4pzi9Zra5hZuHAe1w7/AJ2vuWp9 Xf2h1NxxunY7sl9LQbANA0fRbue5dC76j/WvJbIZRR4Cyw/+i2q7mxclMiUi Ad/Q1Mc+ajoBY/rPZ/VCvA/YlFuIWutsY37U4O3u9Ro2ubbqdrm/uraXi+f0 T62fUm+jqz7a2Nuv2CzHedu8g2+lkMcG+pXa1j1610Tq1HWel0dQo0Frfezu 140srP8AVcqZlcpDx0/rR7tsCojy/FvJJJJKaPWcR2VhO2DdbV72DuY+k3+0 1cczqVfrCmym+h5O2bKyGz52N3MXd3m8VE47WPt7NsJa0/2mhyx8u/qgosGV 0YXMIIJx7Wvdr+c1lja0yeOMtTuyQyyhoNrcuu9zTBVzEya7rzQbNhY0PeY3 EAn2+2Wrmcrrd2OCw9OyvWGgDqnAfFzo/wC/LLx7/rJjZFnVa/p3QH0XtLGO AH5lzdzWfuemooYjfrGjNkzivQbPd9O+y0Oa307yC7RrnAFpMfQLRsc139pU 8mnOrIb6e7cYD2mWD+VY76VbG/vPaubz/rTY3ouHW1go6l1V9bm1PdIprZY3 1Mm1zP33t9Gj/tz/AAKN9YvrhV0wP6PiGzK6iAKrNojdY9vn9Ldu/RUV/wDX FIcMD0ryYo55jx8231HqfSsD0cbNyqKs62Wllj7awXg+3btqutbV/Z9P/rnp o/1Qp9bJyuoTY8WQwPsEA7Pb+rhzWX/Z/wBx2T+neqf1X+rmdbk2dS69W12T a1ojna1o2sqG79xq7Kuuutu2toa0dgniIGwAWGcjoZEv/9Pf+tf+MD9h9Qs6 ZjYrbr62Mc+6x5DGl437PSrbvftZt/wla4LrX186/wBaDsH1i5l2hxMRm0OB /wAG7bvvsb/JdYtvC+p1/wBZvrn1x/WHW1YmHkPBDfa6wvc44rWu/wBF9ibU /wD7ZXofSfq50Xo1YZ03DroI5s2y8/1rHe5NnC5H1Hh09I/FMZUNte7hf4tf q5ldE6NZdnM9PNz3+q+s8sYBtqrd/KXWpHzP3lRdZW0S57WjzcAnIcz609HH Wvq/m9OA/S2V78c+F1f6aj/wRi87/wAX31rp6Tc+rPf6WBkj9ISCfTub7W+1 o3/pP5pepO6hgV/TyqWRzusaP+/Lh8v6l/UC7rFmfd1ZjK7XutOE3KrYz1HH e9zXbvVa1276FaZIAyjK64Tr/d/SCuMAEWNfzek6P9bumdZ6jbgYVd5NNfqu ue0NZEhgbG421ufu9nq1sW2uf6b1D6kdFxzj9Ny8PGqe7c8V2BznO/ess3Ps sf8A1kZ31z+qzeeo1n+q17v+oY5PlOF6ERHiVgmANZC/sdpJYD/r39VWCRmF 39Wq0/8AotCf/jB+rbTAfc74VOHz9+1M9yH7w+1Xu4/34/a9E9jHiHtDviq+ bb07CwbrMx1ePiBpba90AQ72/wBpYB/xkfV8DSrKceAPTaNR/WsWV1r67fVr q1FePl4mW+mqxl4ZurYHOYfYy33u3M/kpe7j/eCDnxD9IOJf+yMzqwdn1ZGP XYG10ZTaXO9emsfoX41H/aTL/wAH6lPq/wDFssXb/VjAosyc7qt+D6WTZa1t N99cWmttbGe0v9zfc1Yeb/jD6L1DHOLkdJffQ4Rtc9gj9303N+hx9JiH0L68 dD6TScVmBk1Y737i83faHbj/AMcWu/6aXuw7q97H+9+D6EksbA+uP1azyG05 9ddh/wAHcfSdPG39Lta7+w5bDXNcA5pDmnggyPwTgQdja8SB1BB8n//U9Js+ z7W+pviPb9Pj5Ks/9kbf0m6P5XqfxXzUkh9iD9H6Lf8A81Y/S+l/bn/v6B/2 B7ju+w7u+7ZPz3L57SQ+xB/wX6Fb/wAw59v2CfLYoW/+N9/hPsH/AEf4L59S S+xX2Pu9v/jY67vsc99u6fL6KzMr/wAbCTt9Td/wHqLxtJNl/gf4Sye3+T/w 31h3/jca7v2h5/TlN/67bSft/wD015Qko/8Awli/8IfXMf8A8bL1B6v2qO3r +ptn+yul6b/430j7F9i3/wAuN3/g3uXz8kpMf+B/gMuL/qf/AFN+nR+zIG37 PHaNkJH9mRr9njvOxfMSSlZvtfpG/wD5ra+v9h859NXcL7D6A+wen6H5vpRt +W1fMKSCOr//2QA4QklNBAYAAAAAAAcAAQEBAAEBAP/+ACdGaWxlIHdyaXR0 ZW4gYnkgQWRvYmUgUGhvdG9zaG9wqCA0LjAA/+4AIUFkb2JlAGSAAAAAAQMA EAMCAwYAAAAAAAAAAAAAAAD/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgT ExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsL DQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDP/CABEIAZACYAMBIgACEQEDEQH/xADnAAEAAQUB AQAAAAAAAAAAAAAABQECAwQGBwgBAQADAQEAAAAAAAAAAAAAAAABAgMEBRAA AQQCAgAFAwQBAwQDAAAAAQACAwQRBRIGEDAhExQgQAcxIhUWMkEjM1BwNBeQ JTURAAIBAgMEAwgOBgkCBQUAAAECAwARIRIEMUEiE1FxMhBhgZFCUmIjIDBA 8KGxwXKCktIzFAXRorLCQ1PhY3ODk6OzJDTiw1Dx8tMGkONUFTUSAAECBAQF AwMDAwUAAAAAAAEAESExQQIQIDBRQGGREjJxIgOBoXJQsUJw0ZLhUoKisv/a AAwDAQECEQMRAAAA9PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAUxyytbHau6jrLRKI7arbOpWkgAAAAAAAAA AAAAAAAAAAAAAAAAAADFK/Ho01pI3xiEojb4nf0Lo29c9LcN42Glsa0zMOHK +5SO3kbG7EaWd+rRm5nbOjLKzLIrATiE2SSRVhMOdmzOj8RKoOaLmlqku5vd JdFapPtahtIrCTaOxEshtU6NZeAAAAAAAAAAACNtGxoYL+zDLXGlkWIX220t FdLbxzEBK6VOLo1ZTJr2rMefdLDZXjpORlNqaeHk+9yvdngei6sYPne30eTb Hx3aYomOmukyHn+LoIUiPRdaeOWyScYRU7E4idit6MOPmMnTmngy80dRO890 xx03iiy/Q6CLN7i+95w7rfx5AAAAAAAAAAapTz7gI7TLudnz/Lrj6ZKeZzWk ekXaextORYLqW0mLsd1kxGxMvocHTJV5uMpbekrMxm6aCj7Rty/nuSs9JPYN HSs3BzvJkpkW4adhjasxCwM5DnT7cXZaFIGdrPE+g+fb5o9hwPoied6rjexh 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 nJByyuS5LksolEqUjjSYBvOx3otZc3mt+dS6s101SbYx2uy9yqxwS0oYm1tL VZBX7Xbk2W71dpuz02keaVtzRI1uI37GrD73bh/9P1OhFNSh18UamrxujirM j3HdGh1nS6+IwxwtYN1G10FWNh1HWb0N2J8Vmludtcra3W0Yjd0HUYWyWrtW KZ/b9kaGq6I9+vu79hq2Kc7LFaeONu67tck11SJ1Pc6t0pMEeBpeiQNfDBGG M+12W21uqr778tPco/yZ2JzYfyHJiDv2qeKnaNLakDsrKyFkLkiUSpD+2l/+ 3+Rhyg6ps/majdbaClF0aWW12TvX/LU5TNcxjYYOi0Y36rUw6qPctdVvVJWy RTRB7LcxbY7b/wDkdM/8EfpO9rWBwdt+5nFrTTltZ99xk3O09oVnH+F6/eND s1ieCOPtu2kvyaxnDrXU3e3PT/e/d6CHdPZ1WqxbSNk1XrmwlZC713H5Bby1 /U78mun7Dq5J68Ug/guhzBkMEzHs+02t8a3Wb7f395sPcTZU2Vy1GvvbWero rdW1Sm9ysCsrK5LPhKQGa8F2675Wlli11ifUSbjZybNnTaUtfY96hkcer1nu XddxsKtpnYex4i7J2QS3qkOw1/X7UrYfdjA2c0r912qJ0mn6g/2qRnYGzyjj Dl227nBI6bWzNZWrSOfs+7veyxrmPdooaEj7l/e2I4adK1btUoyNFoveZZtP ZR10e97HI5267K0dO2t+/JsIna7awTNl2veonOomg2aloNqbdbd2eC6R/wAA kdE2rbEjQQfs79aO3Sv1Z6VzJQKY5dKt+xduTXXS6Ow10Y+q/K5kbuyaqCA9 u1b3bbf1LT9c6pTvz9s1MaZ2/Ul8ncdTh3adbI6nYrX7eq2ms11Wft+tWw7P SbU1nYqTab+5aRp/uOtc5/bdO5tHswm2b9vXgkm7bqWJnb9WXf2/TJ/cdThv b9MLM3b9aC/tOq4a6Zmxgp7rV0Kcvb9aVH2/SBsvbtc9bXf0po2tqsdP2rVR hvbtWXxdx0Mkb+3a152PZK0rpDNRt3dnrJZOjj/YAyI4xG4TyhG1MvlTAs2L wmXoXJsjH+c44b+T4IWdix4ArRScbrtcx7NN2TTVJYOw6SdNeHN8M+E8Albs uvRzuPVW5o6AQPfrQ+La6SnVb/VmlWdPRrPj6wzMVerqal7TwWWSdTaXVers Y+/qIWVGa1li1T6oJRH01qrUKWnUmvq7Gre6jXYKvVa1uD+mtC/poR6hFGHd NYVF1BjTrtR7Mez67FZEnTmk/wBOaEzqTVS6yyF413KLYdVhlf8A09mR1EEf 09uaHWmwP/ixJDc6pXfLp9U2oPAoooooSyN86U4j7wwSbV1CFwbqRMWaWV0s HU7qtddtxx0OpPssj6MQ6rE6KDP0Te97X9n2Yq1NzN8u3NsmSazb/JO/mtQQ a5rHN7HC06XXtPLfy2q1HXyB7re22MGzobh/ye4798s+osysuapkb4Yo2Fr4 mub1HmNVsm2zF16dlutt9h8Jw22ygudnltnX6vZ7CWVoa4La7faVNn/Ztg+F 9uSar/LW6tjc7SzQiG/v1zPPM+tJtrtKS5sIoK+y3u01df8AmWwVJ9xt6bW2 hcqVeyXrS116SzCiiinIo+dIMs7vrrH8kGyLUa2wXw6WEvjsHVv3cuvn1GiJ 9gFAoFZ8ZpWwxYbJqnmNt576GdSXVr++2Nd9DT3608nYNjCaGp2NeebsN+E6 3U7GrNZt2Ipd1v8AZV6VsGR1qqwSbDUwBtKIgNu7arSk6tsIWwXttVqHrWwr xt39uMOiqVmWr8clnR63bUC9rmuGVubETt2YQ6rNPG9lxlHlduN+Df8AYZp7 cxkrXo9e+PE81La7IT6S1r23akLNVjWOZrq1O5TE0UULRnwKKKKPnEgDsskM 0raUDxVibGYHLaUpLR7PRjis6yIRwtcECgUD6ZWUTlOoxmX4MWHa+ItOrhJm gEjY9fHG6eISsj18cbpYhIyLXsY+1DE6PcWDft0tXM6HW6R5mq1/aqtOHTME rBqomyOiDojqY+b4I3xDWxhMY2Nj9fG50TGxNyrVdllnwIl8CLkdXE4R6+KO KKlHEyGhFEDrIyq9JldlzW3Jn6ut7bZNfG51esyESauF8kEQhbnwJ8Cj5vYd u3S6WHuvZGTVvybunMj7brb7ZRJA+htYbLon5F+fZ6p1O3Z2UkOGNaSmu9OQ WVkrKyEXIuRei4lOcEZEXFc1zAQeF2HY+zBrKpkfqaOBTqMYHtwx7uMoeFkL KJWfTKyFyCyFlcllEolZWVlZWSixhQwECgfHPiSiUfM7N2uloIt33Xa7qj7V aJry+UcHA1djZqiN/wDJugu7Sk2/bsbZlGu2FjXJr8JrkH4Qcua5Be4uZKLk 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 AAAPAAAADwAAABIAAAAABAAA1wUAAOgXAADrjAAARwAAAEsAAABOAAAAAAQA APEEAAAHEAAAPBoAACslAACHLQAA1TYAAKdCAAAXTQAAI1QAAPFaAACqYAAA x2YAAOttAABbcgAArXcAAJd+AADKgwAAhIcAABOMAADrjAAASAAAAEoAAABM AAAATwAAAFAAAABRAAAAUwAAAFQAAABVAAAAVgAAAFgAAABZAAAAWgAAAFwA AABdAAAAXgAAAF8AAABhAAAAYgAAAGMAAAAABAAAZBcAAPY1AADBVwAA2G0A AKeBAADrjAAASQAAAE0AAABSAAAAVwAAAFsAAABgAAAAVAAAAGMAAAByAAAA jgAAAJAAAACfAAAAuwAAAL0AAADRAAAA7QAAAO8AAAALAQAAJwEAACkBAABE AQAAYAEAAGIBAAB3AQAAkwEAAJUBAACmAQAAwgEAAMQBAADWAQAA8gEAAPQB AAAMAgAAKAIAACsCAAA9AgAAWQIAAFwCAACCAgAAngIAAKECAAC5AgAA1QIA ANgCAADpAgAABQMAAAgDAAAbAwAANwMAADoDAABdAwAAeQMAAHwDAAB+AwAA 64gAABMN1P8TJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcAT JdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/ lcATJdT/lcCVjAIAAAAJAAAADAAAABIAAAATIZT/lYD//w8AAAANAF8AVABv AGMANAA1ADQAOAA1ADkAMwA0ADUADQBfAFQAbwBjADQANQA0ADgANQA5ADMA NAA2AA0AXwBUAG8AYwA0ADUANAA4ADUAOQAzADQANwANAF8AVABvAGMANAA1 ADQAOAA1ADkAMwA0ADgADQBfAFQAbwBjADQANQA0ADgANQA5ADMANAA5AA0A XwBUAG8AYwA0ADUANAA4ADUAOQAzADUAMAANAF8AVABvAGMANAA1ADQAOAA1 ADkAMwA1ADEADQBfAFQAbwBjADQANQA0ADgANQA5ADMANQAyAA0AXwBUAG8A YwA0ADUANAA4ADUAOQAzADUAMwANAF8AVABvAGMANAA1ADQAOAA1ADkAMwA1 ADQADQBfAFQAbwBjADQANQA0ADgANQA5ADMANQA1AA0AXwBUAG8AYwA0ADUA NAA4ADUAOQAzADUANgANAF8AVABvAGMANAA1ADQAOAA1ADkAMwA1ADcADQBf AFQAbwBjADQANQA0ADgANQA5ADMANQA4AA0AXwBUAG8AYwA0ADUANAA4ADUA OQAzADUAOQCBAwAA4AcAAO4HAACXDwAArxkAABQdAAB4KQAAaSwAAApPAABS VgAAX2wAACNzAADLfwAAhIMAAGWGAADsiAAAAAAAAAEAAAACAAAAAwAAAAQA AAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAAjQMA AOwHAAD/BwAAsA8AAMcZAAAmHQAAhikAAHgsAAAfTwAAYVYAAIJsAAA4cwAA 2X8AAJSDAACFhgAA7IgAAAAAAAByAAAAkQAAAJ8AAAC+AAAA0QAAAPAAAAAL AQAAKgEAAEQBAABjAQAAdwEAAJYBAACmAQAAxQEAANYBAAD1AQAADAIAACwC AAA9AgAAXQIAAIICAACiAgAAuQIAANkCAADpAgAACQMAABsDAAA7AwAAXQMA AH0DAACrDgAAsw4AAB4UAAA8FAAARxQAAFAUAADeFAAA/BQAABAvAAATLwAA by8AAHgvAACFLwAAji8AAKIvAACrLwAA1i8AAN8vAAALMAAAFDAAACEwAAAr MAAAATYAAAU2AABINgAATDYAAHw2AAB+NgAARj4AAFM+AACoPgAAtT4AAM1A AADRQAAAaUEAAH9BAAAOQgAAG0IAAC1CAAA6QgAAzUMAANpDAABjSAAAb0gA AA5MAAAXTAAA/1EAAAVSAABrUgAAcVIAAJpSAACdUgAA2lIAAN9SAADvUwAA 9VMAAP1ZAAANWgAAr10AALZdAADgXQAA6F0AAOtfAAD+XwAAZWEAAHhhAADc YgAA4WIAAPRjAAD5YwAACmUAABFlAABnZgAAbGYAAMdoAADNaAAAfGoAAJVq AAD1agAA+2oAAGRrAAB1awAAUG4AAFRuAAB1bgAAfm4AALZuAADDbgAAD28A ABhvAABWbwAAYm8AAIhvAACQbwAAlG8AAKFvAADBbwAAyW8AADtxAAA/cQAA YHEAAGlxAAChcQAArnEAAPpxAAADcgAAQXIAAE1yAABzcgAAe3IAAH9yAACM cgAArHIAALRyAAByegAAdnoAAJd6AACgegAA2HoAAOV6AAAxewAAOnsAAHh7 AACEewAAqnsAALJ7AAC2ewAAw3sAAON7AADrewAAQn0AAEZ9AABnfQAAcH0A AKh9AAC1fQAAAX4AAAp+AABIfgAAVH4AAHp+AACCfgAAhn4AAJN+AACzfgAA u34AAGl/AAByfwAAdX8AAH1/AACEfwAAjX8AAJJ/AACbfwAAoH8AAKx/AACt fwAAtn8AALp/AADHfwAA2YgAANqIAADciAAA54gAAOmIAADsiAAABwAHAAcA BwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAH AAcABwAHAAcABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwA BwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAH ABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcA HAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAc AAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwA BwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAH ABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcA HAAHABwABwAcAAcAHAAHAAIABwAHAAcAAgAAAAAAcgAAAJEAAACfAAAAvgAA ANEAAADwAAAACwEAACoBAABEAQAAYwEAAHcBAACWAQAApgEAAMUBAADWAQAA 9QEAAAwCAAAsAgAAPQIAAF0CAACCAgAAogIAALkCAADZAgAA6QIAAAkDAAAb AwAAOwMAAF0DAAB9AwAAiAQAAIoEAAAFDgAAEw4AAL4OAADFDgAAyBQAAMwU AAAHFQAACxUAAEUVAABMFQAAnxUAAKcVAADgFQAA4hUAAOgVAADqFQAAPRYA AEQWAACTFgAAnRYAANcWAADbFgAAJRcAACkXAAA3HAAAORwAAG8vAABzLwAA oi8AAKYvAADWLwAA2i8AAAswAAAPMAAAzUAAANFAAACOQwAAlEMAAP9RAAAF UgAAJFIAAChSAABrUgAAcVIAAJpSAACdUgAA1lIAANlSAAAVUwAAG1MAAGpT AABvUwAAmVUAAKNVAAAVVgAAHlYAAApZAAARWQAAqFkAAK9ZAAD9WQAABFoA AKtbAACsWwAADF4AADFeAACEYQAA2mEAANthAAAuYgAA2GkAANppAABwagAA emoAAJZqAACaagAArGoAALBqAAAAbgAAAm4AAHVuAAB5bgAAtm4AAL5uAAAP bwAAE28AAFZvAABZbwAA3m8AAOlvAAAPcAAAE3AAAOtwAADtcAAAYHEAAGRx AAChcQAAqXEAAPpxAAD+cQAAQXIAAERyAADJcgAA1HIAAPpyAAD+cgAATXMA AJVzAAAiegAAJHoAAJd6AACbegAA2HoAAOB6AAAxewAANXsAAHh7AAB7ewAA AHwAAAt8AAAxfAAANXwAAPJ8AAD0fAAAZ30AAGt9AACofQAAsH0AAAF+AAAF fgAASH4AAEt+AADQfgAA234AAAF/AAAFfwAAaX8AAG1/AACgfwAAo38AAG+C AAB1ggAAzoIAANOCAAA7gwAAQYMAAHyFAACYhQAA2YgAANqIAADciAAA54gA AOmIAADsiAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcA BwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAaAAcAGgAHABoABwAaAAcAGgAH ABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcA GgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAa AAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoA BwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAH ABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcA GgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAa AAcAGgAHABoABwACAAcABwAHAAIA//8UAAAADQBFAHIAaQBjAHMAcwBvAG4A IABVAHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAAYQBk AGEAdABoACQAXABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0AGEA dABpAG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0 AGkAbwBuAC4AZABvAGMADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQByADYA QwA6AFwAVABFAE0AUABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAAcwBh AHYAZQAgAG8AZgAgAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQA YQB0AGkAbwBuAC4AYQBzAGQADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQBy AEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAAYQBkAGEAdABoACQA XABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgBc AE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4A ZABvAGMADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQByAEUAXABcAGUAYQB1 AGIAcgBuAHQAMAAwADQAXABlAHAAYQBkAGEAdABoACQAXABNAGEAaQBsAG0A YQBuAFwARABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgBcAE0AYQBpAGwAbQBh AG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4AZABvAGMADQBFAHIA aQBjAHMAcwBvAG4AIABVAHMAZQByADYAQwA6AFwAVABFAE0AUABcAEEAdQB0 AG8AUgBlAGMAbwB2AGUAcgB5ACAAcwBhAHYAZQAgAG8AZgAgAE0AYQBpAGwA bQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4AYQBzAGQADQBF AHIAaQBjAHMAcwBvAG4AIABVAHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQA MAAwADQAXABlAHAAYQBkAGEAdABoACQAXABNAGEAaQBsAG0AYQBuAFwARABv AGMAdQBtAGUAbgB0AGEAdABpAG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8A YwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4AZABvAGMADQBFAHIAaQBjAHMAcwBv AG4AIABVAHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAA YQBkAGEAdABoACQAXABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0 AGEAdABpAG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQA YQB0AGkAbwBuAC4AZABvAGMADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQBy ADYAQwA6AFwAVABFAE0AUABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAA cwBhAHYAZQAgAG8AZgAgAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBu AHQAYQB0AGkAbwBuAC4AYQBzAGQADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMA ZQByADYAQwA6AFwAVABFAE0AUABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5 ACAAcwBhAHYAZQAgAG8AZgAgAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0A ZQBuAHQAYQB0AGkAbwBuAC4AYQBzAGQADQBFAHIAaQBjAHMAcwBvAG4AIABV AHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAAYQBkAGEA dABoACQAXABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0AGEAdABp AG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkA bwBuAC4AZABvAGMAFwB8////MNYyuP8P/w//D/8P/w//D/8P/w//DwEAff// /5Cyqjn/D/8P/w//D/8P/w//D/8P/w8BAH7///9MeiC+/w//D/8P/w//D/8P /w//D/8PAQB/////JpM4Sv8P/w//D/8P/w//D/8P/w//DwEAgP///0ZFXNn/ D/8P/w//D/8P/w//D/8P/w8BAIH///9ELTCT/w//D/8P/w//D/8P/w//D/8P AQCC////ShbCHf8P/w//D/8P/w//D/8P/w//DwEAg////xhYYsn/D/8P/w// D/8P/w//D/8P/w8BAIj///+UYjry/w//D/8P/w//D/8P/w//D/8PAQCJ//// MJ0unf8P/w//D/8P/w//D/8P/w//DwEAWmZODwUACQT/DwAAAAAAAAAAAAAA AAAAAAABACVz7hUPAAkE/w//D/8P/w//D/8P/w//D/8PAQCBeX0ZDwAJBP8P AAAAAAAAAAAAAAAAAAAAAAEAri2mHQUACQT/DwAAAAAAAAAAAAAAAAAAAAAB AOkZxDcFAAkE/w8AAAAAAAAAAAAAAAAAAAAAAQAMaFI8AQAJBP8PAAAAAAAA AAAAAAAAAAAAAAEA7gQISQ8ACQT/D/8P/w//D/8P/w//D/8P/w8BAKAiblEN AAkE/w8AAAAAAAAAAAAAAAAAAAAAAQCfQ1NjBQAJBP8PAAAAAAAAAAAAAAAA AAAAAAEAFUkzZDbM6M3/D/8P/w//D/8P/w//D/8P/w8BACA5VG8FAAkE/w8A AAAAAAAAAAAAAAAAAAAAAQAoAdZ4BQAJBP8PAAAAAAAAAAAAAAAAAAAAAAEA 9jBPeQ8ACQT/D/8P/w//D/8P/w//D/8P/w8BAAEAAAAAAAEAAAAAAAAAAAAA AAAAAAAAAAAQAAAPhAgHEYSY/hXGBQABCAcGAgAAAC4AAQAAAAAAAQAAAAAA AAAAAAAAAAAAAAAAABAAAA+EoAURhJj+FcYFAAGgBQYCAAAALgABAAAAAAAB AAAAAAAAAAAAAAAAAAAAAAAAEAAAD4Q4BBGEmP4VxgUAATgEBgIAAAAuAAEA AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAQAAAPhNACEYSY/hXGBQAB0AIGAgAA AC4AAQAAABcAAAAAAAAAAAAAAAAAAAAAAAAACxAAAA+ECAcRhJj+FcYFAAEI BwZPSgEAUUoBAG8oAAEAt/ABAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAALEAAA D4SgBRGEmP4VxgUAAaAFBk9KAQBRSgEAbygAAQC38AEAAAAXAAAAAAAAAAAA AAAAAAAAAAAAAAsQAAAPhDgEEYSY/hXGBQABOAQGT0oBAFFKAQBvKAABALfw AQAAABcAAAAAAAAAAAAAAAAAAAAAAAAACxAAAA+E0AIRhJj+FcYFAAHQAgZP SgEAUUoBAG8oAAEAt/ABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAEAAAD4Ro ARGEmP4VxgUAAWgBBgIAAAAuAAEAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAsQ AAAPhGgBEYSY/hXGBQABaAEGT0oBAFFKAQBvKAABALfwAQAAABcAAAAAAAAA AAAAAAAAAAAAAAAACxAAAA+EaAERhJj+FcYFAAFoAQZPSgQAUUoEAG8oAAEA p/ABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAADEAAAD4RoARGEmP4VxgUAAWgB Bm8oAAIAAAAuAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAQAAAPhGgBEYSY /hXGBQABaAEGAgAAAC4AAQAAABcAAAAAAAAAAAAAAAAAAAAAAAAACxAAAA+E aAERhJj+FcYFAAFoAQZPSgQAUUoEAG8oAAEAp/ABAAAAFwAAAAAAAAAAAAAA AAAAAAAAAAALEAAAD4RoARGEmP4VxgUAAWgBBk9KBABRSgQAbygAAQCn8AEA AAAXAAAAAAAAAAAAAAAAAAAAAAAAAAsQAAAPhGgBEYSY/hXGBQABaAEGT0oB AFFKAQBvKAABALfwAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAxAAAA+EaAER hJj+FcYFAAFoAQZvKAACAAAALgABAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAL EAAAD4RoARGEmP4VxgUAAWgBBk9KBABRSgQAbygAAQD88AEAAAAXAAAAAAAA AAAAAAAAAAAAAAAAAAsQAAAPhGgBEYSY/hXGBQABaAEGT0oEAFFKBABvKAAB AKfwAwAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAxAAAA+EDAcRhJj+FcYFAAEM BwZvKAABAC0AAQAAABcAAAAAAAAAAAAAAAAAAAAAAAAACxAAAA+EaAERhJj+ FcYFAAFoAQZPSgQAUUoEAG8oAAEAp/ABAAAAFwAAAAAAAAAAAAAAAAAAAAAA AAALEAAAD4RoARGEmP4VxgUAAWgBBk9KBABRSgQAbygAAQCn8AEAAAAAAAEA AAAAAAAAAAAAAAAAAAAAAAMQAAAPhGgBEYSY/hXGBQABaAEGbygAAgAAAC4A FwAAAAxoUjwAAAAAAAAAAAAAAAAgOVRvAAAAAAAAAAAAAAAAif///wAAAAAA AAAAAAAAAIP///8AAAAAAAAAAAAAAACC////AAAAAAAAAAAAAAAAgf///wAA AAAAAAAAAAAAAID///8AAAAAAAAAAAAAAACI////AAAAAAAAAAAAAAAAf/// /wAAAAAAAAAAAAAAAH7///8AAAAAAAAAAAAAAAB9////AAAAAAAAAAAAAAAA fP///wAAAAAAAAAAAAAAAOkZxDcAAAAAAAAAAAAAAACgIm5RAAAAAAAAAAAA AAAAWmZODwAAAAAAAAAAAAAAABVJM2QAAAAAAAAAAAAAAACfQ1NjAAAAAAAA AAAAAAAAKAHWeAAAAAAAAAAAAAAAAPYwT3kAAAAAAAAAAAAAAACBeX0ZAAAA AAAAAAAAAAAAJXPuFQAAAAAAAAAAAAAAAK4tph0AAAAAAAAAAAAAAADuBAhJ AAAAAAAAAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////xcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEACQwBAggA/0AAgAEAAAAAAAAA AAA8g8wAAQABAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAADriAAAQAAACABA AAAFAAAARxaQAQAAAgIGAwUEBQIDBIcCAAAAAAAAAAAAAAAAAACfAAAAAAAA AFQAaQBtAGUAcwAgAE4AZQB3ACAAUgBvAG0AYQBuAAAANRaQAQIABQUBAgEH BgIFBwAAAAAAAAAQAAAAAAAAAAAAAACAAAAAAFMAeQBtAGIAbwBsAAAAMyaQ AQAAAgsGBAICAgICBIcCAAAAAAAAAAAAAAAAAACfAAAAAAAAAEEAcgBpAGEA bAAAADcxkAEAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABD AG8AdQByAGkAZQByAAAAOwaQAQIABQAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA AAAAAACAAAAAAFcAaQBuAGcAZABpAG4AZwBzAAAAIgAEADEIiBgAANACAABo AQAAAADAkzamEcM2hvnCNoY1AEgCAADlFQAAe20AAAEAEgEAAAQAAxAgAwAA URYAAJVvAAABABgBAAAwAwAAAAAAACEDAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKUGwAe0ALQAgAASMAAAEAAZAGQA AAAZAAAARZkAAOaFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAD//xIAAAAAAAAA FQBNAGEAaQBsAG0AYQBuACAARABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgAA AAAAAAAOAEQAYQB2AGkAZAAgAFQAaABpAGUAcwBzAGUAbgANAEUAcgBpAGMA cwBzAG8AbgAgAFUAcwBlAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAEAAIAAAAA AAAAAAAAAAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAAAIwBAAARAAAA AQAAAJAAAAACAAAAmAAAAAMAAAC4AAAABAAAAMQAAAAFAAAA3AAAAAcAAADo AAAACAAAAPwAAAAJAAAAFAEAABIAAAAgAQAACgAAADwBAAALAAAASAEAAAwA AABUAQAADQAAAGABAAAOAAAAbAEAAA8AAAB0AQAAEAAAAHwBAAATAAAAhAEA AAIAAADkBAAAHgAAABYAAABNYWlsbWFuIERvY3VtZW50YXRpb24AOAAeAAAA AQAAAABhaWweAAAADwAAAERhdmlkIFRoaWVzc2VuAHQeAAAAAQAAAABhdmke AAAACwAAAE5vcm1hbC5kb3QAcx4AAAAOAAAARXJpY3Nzb24gVXNlcgAAdB4A AAADAAAANTMAYx4AAAATAAAATWljcm9zb2Z0IFdvcmQgOC4wAG9AAAAAALB3 lVEAAABAAAAAAP7F2OS9vgFAAAAAAIjiake5vgFAAAAAAHYHpOe9vgEDAAAA AQAAAAMAAADlFQAAAwAAAHttAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABAACAAAA AAAAAAAAAAAAAAAAAAACAAAAAtXN1ZwuGxCTlwgAKyz5rkQAAAAF1c3VnC4b EJOXCAArLPmuQAEAAPwAAAAMAAAAAQAAAGgAAAAPAAAAcAAAAAUAAAB8AAAA BgAAAIQAAAARAAAAjAAAABcAAACUAAAACwAAAJwAAAAQAAAApAAAABMAAACs AAAAFgAAALQAAAANAAAAvAAAAAwAAADeAAAAAgAAAOQEAAAeAAAAAQAAAAAA dwADAAAAIAMAAAMAAAASAQAAAwAAAEWZAAADAAAA6BAIAAsAAAAAAAAACwAA AAAAAAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAAWAAAATWFpbG1hbiBEb2N1 bWVudGF0aW9uAAwQAAACAAAAHgAAAAYAAABUaXRsZQADAAAAAQAAACgBAAAE AAAAAAAAACgAAAABAAAAUgAAAAIAAABaAAAAAwAAALIAAAACAAAAAgAAAAoA AABfUElEX0dVSUQAAwAAAAwAAABfUElEX0hMSU5LUwACAAAA5AQAAEEAAABO AAAAewA0AEUARgA1AEEAQgA1ADIALQAyADUAMwBCAC0AMQAxAEQAMwAtAEEA MwBDADgALQAwADgAMAAwADIAQgAzAEUAQQA3AEQAOQB9AAAAAABBAAAAbAAA AAYAAAADAAAAUABdAAMAAAAXBAAAAwAAAAEEAAADAAAAAQAAAB8AAAAZAAAA SAA6AFwARABvAHcAbgBsAG8AYQBkAHMAXABtAGEAaQBsAG0AYQBuAC4AagBw AGcAAAAAAB8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAD AAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4A AAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAA ABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAA JQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAw AAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsA AAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAA AEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAA UgAAAFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABd AAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAP7///9mAAAAZwAAAGgA AABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAA AHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAA fwAAAIAAAACBAAAAggAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACK AAAAiwAAAIwAAACNAAAAjgAAAI8AAACQAAAAkQAAAJIAAACTAAAAlAAAAJUA AACWAAAAlwAAAJgAAACZAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAA AKEAAAD+////owAAAKQAAAClAAAApgAAAKcAAACoAAAAqQAAAKoAAACrAAAA rAAAAK0AAACuAAAArwAAALAAAACxAAAAsgAAALMAAAC0AAAA/v///7YAAAC3 AAAAuAAAALkAAAC6AAAAuwAAALwAAAD+////vgAAAL8AAADAAAAAwQAAAMIA AADDAAAAxAAAAP7////9/////f///8gAAAD+/////v////7///////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkA AAAAAAAAAAAAAAAAYQAhAAABCABDAGgAZQBjAGsAZQBkACAAYgB5AAAAQwAW AAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAADk4zGgS7m+ASAF cL7nvb4BygAAAIAAAAB0AAAARABhAHQAYQAAAG4AYQB0AGkAbwBuAAAARABp AHMAcABvAHMAaQB0AGkAbwBuAAAARABpAHYAaQBzAGkAbwBuAAoAAgH///// //////////90ACAAbgB1AG0AYgBlAHIAAABFAGQAaQB0AG8AcgAAAEYAbwBl AAAAgHkAAGQAIAAxAFQAYQBiAGwAZQAAAHAAAABMAGEAbgBnAHUAYQBnAGUA AABNAGEAaQBsAHMAdABvAHAAAABNAGEAdAB0AGUADgACAAEAAAD///////// /wAATwB3AG4AZQByAAAAUAByAG8AagBlAGMAdAAAAFAAdQBiAKIAAACqJQAA ZQByAFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAAaQB2AGUAZAAgAGYAcgBv AG0AAABSAGUAYwBvAHIAZABlAGQAIAAaAAIBBgAAAAUAAAD/////ZABlAGQA IABkAGEAdABlAAAAUgBlAGYAZQByAGUAbgBjAGUAAAAAAB7IAAByAGMABQBT AHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAHUAbQBiAGUA cgAAAFQAeQBwAGkAcwB0ACgAAgH///////////////8AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1AAAAABAAAAAAAAAFAEQAbwBjAHUA bQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAA AAAAAAAAAAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAL0AAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIAagAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAIIAAAEIAAAAAAAAAAAACgAAAAAA AAASAAIBAgAAAAcAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAGoAAAAAAAAATwBiAGoAZQBjAHQAUABvAG8AbAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAQD/ //////////////8AAAAAAAAAAAAAAAAAAAAAAAAAACAFcL7nvb4BIAVwvue9 vgEAAAAAAAAAAAAAAAABAAAA/v////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////////////////wEA/v8DCgAA/////wYJ AgAAAAAAwAAAAAAAAEYYAAAATWljcm9zb2Z0IFdvcmQgRG9jdW1lbnQACgAA AE1TV29yZERvYwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA ------=_NextPart_000_72982e8a_72b50c1b$3f22a4-- --xVf5QvoNib-- From rob@ideal.net.au Wed Jun 30 01:19:13 1999 From: rob@ideal.net.au (Rob Wise) Date: Wed, 30 Jun 1999 10:19:13 +1000 (EST) Subject: [Mailman-Developers] Subject prefix bug. Message-ID: Hi, This message is in refrence to Jitterbug ID incoming/64. I was just wondering if anyone had a patch or other fix I could use to resolve the problem until it is fixed officially in mailman. Thanks, Rob From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Wed Jun 30 01:40:57 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Tue, 29 Jun 1999 20:40:57 -0400 (EDT) Subject: [Mailman-Developers] Performance problems and MailMan References: Message-ID: <14201.26521.848925.327481@anthem.cnri.reston.va.us> --YhIK0mKoxU Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit >>>>> "JCL" == J C Lawrence writes: JCL> I believe I've found out how to reliably reproduce the JCL> performance problemsI've noticed here at VA and at Kanga.Nu, JCL> and which Barry and another (forget name, sorry) have JCL> observed as well: JCL> 1) Create a moderated list. JCL> 2) Subscribe 200 addresses to the list (can be bogus JCL> addresses but the local MTA must accept them) JCL> 3) Post at least 30 messages of an average of at least 2K JCL> size to the list. JCL> 4) Go to the moderation page, approve every message, and hit JCL> submit. JCL> 5) Watch your system load peg and stay there for an JCL> obscenely long time. Just a quick note 'cause I have very little time. I'm currently seeing python.org massively pegged, and Guido and I were talking about some Python tools we'd like to develop that would help debug situations like this. What I wanted was something like gdb's ability to attach to and print stack traces of running external programs. We got into some brainstorming and came up with A Certified Very Cool Trick[1]. This yielded a traceback for where at least two pegged processes are spinning. Seems to make sense, but I'm not very familar with the archiving guts, so I post this traceback to spur some discussion. Maybe Scott or Harald can craft a fix. Here's the traceback: --YhIK0mKoxU Content-Type: application/octet-stream Content-Disposition: attachment; filename="foo2" Content-Transfer-Encoding: base64 ICBGaWxlICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9zY3JpcHRzL3Bvc3QiLCBsaW5lIDcz LCBpbiA/CiAgICBtbGlzdC5Qb3N0KG1zZywgYXBwcm92ZWQ9ZnJvbXVzZW5ldCkKICBGaWxl ICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFuL01haWxMaXN0LnB5IiwgbGluZSAx MjgzLCBpbiBQb3N0CiAgICBzZWxmLkFyY2hpdmVNYWlsKG1zZykKICBGaWxlICIvZXhwb3J0 L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFuL0FyY2hpdmVyL0FyY2hpdmVyLnB5IiwgbGluZSAy MTAsIGluIEFyY2hpdmVNYWlsCiAgICBoLmNsb3NlKCkKICBGaWxlICIvZXhwb3J0L3BhcnJv dC9tYWlsbWFsdC9NYWlsbWFuL0FyY2hpdmVyL0h5cGVyQXJjaC5weSIsIGxpbmUgOTA2LCBp biBjbG9zZQogICAgc2VsZi51cGRhdGVfZGlydHlfYXJjaGl2ZXMoKSMgVXBkYXRlIGFsbCBj aGFuZ2VkIGFyY2hpdmVzCiAgRmlsZSAiL2V4cG9ydC9wYXJyb3QvbWFpbG1hbHQvTWFpbG1h bi9BcmNoaXZlci9IeXBlckFyY2gucHkiLCBsaW5lIDg3MSwgaW4gdXBkYXRlX2RpcnR5X2Fy Y2hpdmVzCiAgICBzZWxmLnVwZGF0ZV9hcmNoaXZlKGkpCiAgRmlsZSAiL2V4cG9ydC9wYXJy b3QvbWFpbG1hbHQvTWFpbG1hbi9BcmNoaXZlci9waXBlcm1haWwucHkiLCBsaW5lIDMzMCwg aW4gdXBkYXRlX2FyY2hpdmUKICAgIHNlbGYud3JpdGVfaW5kZXhfaGVhZGVyKCkKICBGaWxl ICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFuL0FyY2hpdmVyL0h5cGVyQXJjaC5w eSIsIGxpbmUgNzM4LCBpbiB3cml0ZV9pbmRleF9oZWFkZXIKICAgIHNlbGYudXBkYXRlVGhy ZWFkZWRJbmRleCgpCiAgRmlsZSAiL2V4cG9ydC9wYXJyb3QvbWFpbG1hbHQvTWFpbG1hbi9B cmNoaXZlci9waXBlcm1haWwucHkiLCBsaW5lIDI1OCwgaW4gdXBkYXRlVGhyZWFkZWRJbmRl eAogICAgc2VsZi5kYXRhYmFzZS5jbGVhckluZGV4KHNlbGYuYXJjaGl2ZSwgJ3RocmVhZCcp CiAgRmlsZSAiL2V4cG9ydC9wYXJyb3QvbWFpbG1hbHQvTWFpbG1hbi9BcmNoaXZlci9IeXBl ckRhdGFiYXNlLnB5IiwgbGluZSAzMDUsIGluIGNsZWFySW5kZXgKICAgIGRlbCBzZWxmLnRo cmVhZEluZGV4W2tleV0KICBGaWxlICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFu L0FyY2hpdmVyL0h5cGVyRGF0YWJhc2UucHkiLCBsaW5lIDg1LCBpbiBfX2RlbGl0ZW1fXwog ICAgc2VsZi5zb3J0ZWQuc29ydCgpCiAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDEsIGluID8K --YhIK0mKoxU Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Looks like the archiver is doing way too much work for every message it has to process. When python.org came back up today, it got slammed with incoming mail for a bazillion lists. Each message spins in this HyperDatabase.clearIndex() loop. -Barry [1] CVCT: Use gdb to attach to the running Python program, then type this at the gdb prompt: (gdb) call PyRun_SimpleString("import sys, traceback; sys.stderr=open('/tmp/tb','w',0); traceback.print_stack()") Sitting in /tmp/tb will be the stack trace of where the Python program was when you stopped it. There's reason to believe this will not always work, but it likely will, and you can even detach the program and let it continue on. --YhIK0mKoxU-- From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Wed Jun 30 17:56:14 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Wed, 30 Jun 1999 12:56:14 -0400 (EDT) Subject: [Mailman-Developers] patch candidate for MailList.Save() Message-ID: <14202.19502.341621.221263@anthem.cnri.reston.va.us> A number of people have experienced corruption of config.db files when the disk gets full. While I was away on vacation, we experienced the same thing on python.org. The ugly thing is that when the disk gets full, enough of config.db can be written so that it is a valid marshal of an empty dictionary. This means that lists with corrupt config.db files will still load, but will start having very cryptic errors such as attributes missing on the MailList objects, etc. The fix in those cases is to free up space on the disk and then copy config.db.last to config.db for all the corrupted lists. I think this is suboptimal. I'd rather have config.db /only/ be changed if we can guarantee (as best as possible) that the marshal was written completely and successfully. Attached is a patch to do this. I am not checking it into the CVS tree at the moment because it's such a critical section of code. I want to stress it a little more myself, but I would greatly appreciate comments, or testing by y'all. You might want to use a non-production, or well backed up installation. I feel pretty confident about the change, but still, get this wrong and your lists are toast. The idea is that the marshal is first written to a temp file called config.db.tmp.. If this succeeds completely, then 1) config.db.last is unlinked 2) a hard link config.db.last -> config.db is created 3) a hard link config.db -> config.db.tmp. is created 4) config.db.tmp. is unlinked Comments? -Barry Index: MailList.py =================================================================== RCS file: /projects/cvsroot/mailman/Mailman/MailList.py,v retrieving revision 1.126 diff -c -r1.126 MailList.py *** MailList.py 1999/06/15 07:50:54 1.126 --- MailList.py 1999/06/30 15:52:16 *************** *** 743,765 **** # pretty hosed. That's a good reason to make this a daemon not a # program. self.IsListInitialized() ! fname = os.path.join(self._full_path, 'config.db') ! fname_last = fname + ".last" ! file = aside_new(fname, fname_last, reopen=1) ! dict = {} for key, value in self.__dict__.items(): if key[0] <> '_': dict[key] = value try: ! marshal.dump(dict, file) ! file.close() ! except IOError, status: ! # Darn - try to resurrect the old config.db. ! file = aside_new(fname_last, fname, reopen=0) ! self.LogMsg("error", ! "Failed config file write '%s'," ! " old config resurrected." % `status.args`) ! Utils.reraise() self.CheckHTMLArchiveDir() def Load(self, check_version = 1): --- 743,780 ---- # pretty hosed. That's a good reason to make this a daemon not a # program. self.IsListInitialized() ! # copy all public attributes to marshalable dictionary ! dict = {} for key, value in self.__dict__.items(): if key[0] <> '_': dict[key] = value + # we want to write this dict in a marshal, but be especially paranoid + # about how we write the config.db, so we'll be as robust as possible + # in the face of, e.g. disk full errors. The idea is that we want to + # guarantee that config.db is always valid. The old way had the bad + # habit of writing an incomplete file, which happened to be a valid + # (but bogus) marshal. + fname = os.path.join(self._full_path, 'config.db') + fname_tmp = fname + '.tmp.' + `os.getpid()` + fname_last = fname + ".last" + omask = os.umask(007) try: ! try: ! fp = open(fname_tmp, 'w') ! marshal.dump(dict, fp) ! fp.close() ! except IOError, status: ! os.unlink(fname_tmp) ! self.LogMsg('error', ! 'Failed config.db file write, retaining old state' ! '\n %s' % `status.args`) ! Utils.reraise() ! # now move config.db -> config.db.last ! # then move config.db.tmp.xxx -> config.db ! aside_new(fname, fname_last) ! aside_new(fname_tmp, fname) ! finally: ! os.umask(omask) self.CheckHTMLArchiveDir() def Load(self, check_version = 1): From fabio@conectiva.com.br Wed Jun 30 22:42:40 1999 From: fabio@conectiva.com.br (Fabio Dorival Victorelli) Date: Wed, 30 Jun 1999 18:42:40 -0300 (EST) Subject: [Mailman-Developers] Re: i18n In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---876084556-1663948829-930778960=:28151 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello all, > We've made today the i18n just for one file "bin/newlist" and toke > some minutes. It's too simple. > You just must apply the attached file "newlist.path.i18n" for > bin/newlist and generate "mailman.mo" file, like: > msgfmt -o mailman.mo mailman.po > After, You just copy to /usr/share/locale/$LANG/mailman.mo > for LANG=pt_BR: > cp mailman.mo /usr/share/locale/pt_BR/LC_MESSAGES/mailman.mo > > It's working fine. I'd like to know if there are somebody working in i18n? thks fabio@conectiva.com.br ---876084556-1663948829-930778960=:28151 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="newlist.path.i18n" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="newlist.path.i18n" LS0tIG5ld2xpc3Qub3JpZwlUdWUgSnVuIDIyIDEyOjA0OjI2IDE5OTkNCisr KyBuZXdsaXN0CVdlZCBKdW4gMzAgMTY6NTQ6NDAgMTk5OQ0KQEAgLTMyLDYg KzMyLDE2IEBADQogaW1wb3J0IHN5cywgb3MsIHN0cmluZw0KIGltcG9ydCB0 aW1lDQogaW1wb3J0IHBhdGhzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIHBhdGggaGFja2luZw0KKyMgaW50bA0KKyMgZmFiaW9A Y29uZWN0aXZhLmNvbS5icg0KKyMgcXVhIGp1biAzMCAxNjoyMDo1NSBFU1Qg MTk5OQ0KKw0KK2ltcG9ydCBpbnRsDQorDQorXz1pbnRsLmdldHRleHQNCitp bnRsLnRleHRkb21haW4oIm1haWxtYW4iKQ0KK2ludGwuYmluZHRleHRkb21h aW4oIm1haWxtYW4iLCIvdXNyL3NoYXJlL2xvY2FsZSIpICAgICAgICANCisN CiB0cnk6DQogICAgIGltcG9ydCBnZXRwYXNzDQogZXhjZXB0IEltcG9ydEVy cm9yOg0KQEAgLTU4LDcgKzY4LDcgQEANCiAgICAgaWYgbGVuKGFyZ3YpID4g MToNCiAJbGlzdF9uYW1lID0gYXJndlsxXQ0KICAgICBlbHNlOg0KLQlsaXN0 X25hbWUgPSByYXdfaW5wdXQoIkVudGVyIHRoZSBuYW1lIG9mIHRoZSBsaXN0 OiAiKQ0KKwlsaXN0X25hbWUgPSByYXdfaW5wdXQoXygiRW50ZXIgdGhlIG5h bWUgb2YgdGhlIGxpc3Q6ICIpKQ0KICAgICBsaXN0X25hbWUgPSBzdHJpbmcu bG93ZXIobGlzdF9uYW1lKQ0KIA0KICAgICBpZiAnQCcgaW4gbGlzdF9uYW1l Og0KQEAgLTc0LDEyICs4NCwxMiBAQA0KICAgICBpZiBsZW4oYXJndikgPiAy Og0KIAlvd25lcl9tYWlsID0gYXJndlsyXQ0KICAgICBlbHNlOg0KLQlvd25l cl9tYWlsID0gcmF3X2lucHV0KA0KLQkgICAgIkVudGVyIHRoZSBlbWFpbCBv ZiB0aGUgcGVyc29uIHJ1bm5pbmcgdGhlIGxpc3Q6ICIpDQorCW93bmVyX21h aWwgPSByYXdfaW5wdXQoXygNCisJICAgICJFbnRlciB0aGUgZW1haWwgb2Yg dGhlIHBlcnNvbiBydW5uaW5nIHRoZSBsaXN0OiAiKSkNCiAgICAgaWYgbGVu KGFyZ3YpID4gMzoNCiAJbGlzdF9wdyA9IGFyZ3ZbM10NCiAgICAgZWxzZToN Ci0gICAgICAgIGxpc3RfcHcgPSBnZXRwYXNzLmdldHBhc3MoIkluaXRpYWwg JXMgcGFzc3dvcmQ6ICIgJSBsaXN0X25hbWUpDQorICAgICAgICBsaXN0X3B3 ID0gZ2V0cGFzcy5nZXRwYXNzKF8oIkluaXRpYWwgJXMgcGFzc3dvcmQ6ICIp ICUgbGlzdF9uYW1lKQ0KIA0KICAgICBuZXdsaXN0ID0gTWFpbExpc3QuTWFp bExpc3QoKQ0KICAgICBwdyA9IGNyeXB0KGxpc3RfcHcgLCBVdGlscy5HZXRS YW5kb21TZWVkKCkpDQpAQCAtOTQsNyArMTA0LDcgQEANCiANCiAgICAgIyMj b3Muc3lzdGVtKCclcyAlcycgJSAoQUREQUxJQVNFU19DTUQsIGxpc3RfbmFt ZSkpDQogICAgIHByaW50ICcnJw0KLUVudHJ5IGZvciBhbGlhc2VzIGZpbGU6 DQorXygiRW50cnkgZm9yIGFsaWFzZXMgZmlsZToiKQ0KIA0KICMjICUobGlz dG5hbWUpcyBtYWlsaW5nIGxpc3QNCiAjIyBjcmVhdGVkOiAlKGRhdGUpcyAl KHVzZXIpcw0KQEAgLTExNSw3ICsxMjUsNyBAQA0KICAgICAgICB9DQogDQog ICAgIGlmIGxlbihhcmd2KSA8IDU6DQotCXByaW50ICgiSGl0IGVudGVyIHRv IGNvbnRpbnVlIHdpdGggJXMgb3duZXIgbm90aWZpY2F0aW9uLi4uIg0KKwlw cmludCAoXygiSGl0IGVudGVyIHRvIGNvbnRpbnVlIHdpdGggJXMgb3duZXIg bm90aWZpY2F0aW9uLi4uIikNCiAJICAgICAgICUgbGlzdF9uYW1lKSwNCiAJ c3lzLnN0ZGluLnJlYWRsaW5lKCkNCiAgICAgc2VuZG5vdGljZShuZXdsaXN0 LCBsaXN0X25hbWUsIG93bmVyX21haWwsIGxpc3RfcHcpDQpAQCAtMTMyLDcg KzE0Miw3IEBADQogICAgICAgICAgJ3JlcXVlc3RhZGRyJyA6ICIlcy1yZXF1 ZXN0QCVzIiAlIChsaXN0X25hbWUsIG5ld2xpc3QuaG9zdF9uYW1lKSwNCiAg ICAgICAgICAnaG9zdG5hbWUnICAgIDogbmV3bGlzdC5ob3N0X25hbWUsDQog ICAgICAgICAgfSkNCi0gICAgbmV3bGlzdC5TZW5kVGV4dFRvVXNlcihzdWJq ZWN0PSJZb3VyIG5ldyBtYWlsaW5nIGxpc3QiLA0KKyAgICBuZXdsaXN0LlNl bmRUZXh0VG9Vc2VyKHN1YmplY3Q9XygiWW91ciBuZXcgbWFpbGluZyBsaXN0 ICIpLA0KIAkJCSAgIHJlY2lwaWVudD1vd25lcl9tYWlsLA0KIAkJCSAgIHNl bmRlcj0nbWFpbG1hbi1vd25lckAlcycgJSBuZXdsaXN0Lmhvc3RfbmFtZSwg DQogCQkJICAgdGV4dD10ZXh0KQ0K ---876084556-1663948829-930778960=:28151 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; name="mailman.po" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="mailman.po" bXNnaWQgIiINCm1zZ3N0ciAiIg0KIkRhdGU6IDE5OTgtMDEtMjIgMTU6MjM6 MTYtMDIwMFxuIg0KIkZyb206IHJvb3QgPHJvb3RAcGV0dW5pYS5jb25lY3Rp dmEuY29tLmJyPlxuIg0KIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD1cbiINCiJYZ2V0dGV4dC1PcHRpb25zOiAtLWRlZmF1bHQtZG9tYWlu PW1haWxtYW4gLS1hZGQtY29tbWVudHMgLS1rZXl3b3JkPV8gIg0KIi0ta2V5 d29yZD1OX1xuIg0KIkZpbGVzOiAuLi9uZXdsaXN0XG4iDQoNCm1zZ2lkICJZ b3VyIG5ldyBtYWlsaW5nIGxpc3QgIg0KbXNnc3RyICJTdWEgbm92YSBsaXN0 YSBkZSBlbWFpbCAiDQoNCm1zZ2lkICJFbnRlciB0aGUgbmFtZSBvZiB0aGUg bGlzdDogIg0KbXNnc3RyICJFbnRyZSBvIG5vbWUgZGEgbGlzdGE6ICINCg0K DQptc2dpZCAiRW50ZXIgdGhlIGVtYWlsIG9mIHRoZSBwZXJzb24gcnVubmlu ZyB0aGUgbGlzdDogIg0KbXNnc3RyICJFbnRyZSBvIGVtYWlsIGRhIHBlc3Nv YSBhZG1pbmlzdHJhbmRvIGEgbGlzdGE6ICINCg0KbXNnaWQgIkluaXRpYWwg JXMgcGFzc3dvcmQ6ICINCm1zZ3N0ciAiU2VuaGEgJXMgaW5pY2lhbDogIg0K DQptc2dpZCAiRW50cnkgZm9yIGFsaWFzZXMgZmlsZToiDQptc2dzdHIgIkVu dHJhZGEgcGFyYSBvIGFycXVpdm8gYWxpYXNlczoiDQoNCm1zZ2lkICJIaXQg ZW50ZXIgdG8gY29udGludWUgd2l0aCAlcyBvd25lciBub3RpZmljYXRpb24u Li4iDQptc2dzdHIgIlRlY2xlIGVudGVyIHBhcmEgY29udGludWFyIGNvbSBh cyBub3RpZmljYef1ZXMgcHLzcHJpYXMgZGEgbGlzdGEgJXMuLi4iDQo= ---876084556-1663948829-930778960=:28151-- From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Wed Jun 30 23:27:04 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Wed, 30 Jun 1999 18:27:04 -0400 (EDT) Subject: [Mailman-Developers] Performance problems and MailMan References: Message-ID: <14202.39352.251397.642429@anthem.cnri.reston.va.us> I think I have identified at least one performance bottleneck with Mailman. Hopefully, /the/ only bottleneck :) I think the culprit is in HyperDatabase.py, namely the DumbBTree class. This stuff is the interface b/w Mailman and Pipermail, and as such I am really quite unfamilar with this code, but using the trick I outlined in a previous message, I found that most of the time when I printed the stack trace, I found myself in HyperDatabase.clearIndex(). I think the algorithm of using key=dumbtree.next(); del dumbtree[key] is extremely inefficient. Take a look at DumbBTree.__delitem__() to get the picture. So here's an experimental patch to add a clear() method to the DumbBTree class, which clearIndex() will use if available, falling back to the old approach, which I assume is some API standard for bsddb btrees -- which Mailman doesn't use currently. Near as I can tell, this doesn't break anything, archive threads still get created properly, and while I haven't tested it live on python.org, it ought to speed at least this part up a lot. We'll see if this fixes the problem some of us have seen. I'm going to try to test this some more before I check it in. I may install it on python.org to see what happens. I'd love some feedback. Does it solve the performance problems? Does anything break because of this patch? Do we need to investigate further? -Barry -------------------- snip snip -------------------- Index: HyperDatabase.py =================================================================== RCS file: /projects/cvsroot/mailman/Mailman/Archiver/HyperDatabase.py,v retrieving revision 1.3 diff -c -r1.3 HyperDatabase.py *** HyperDatabase.py 1998/11/04 23:49:03 1.3 --- HyperDatabase.py 1999/06/30 22:12:24 *************** *** 88,95 **** else: self.current_index = self.current_index + 1 ! ! def first(self): if not self.sorted: --- 88,97 ---- else: self.current_index = self.current_index + 1 ! def clear(self): ! # bulk clearing much faster than deleting each item, esp. with the ! # implementation of __delitem__() above :( ! self.dict = {} def first(self): if not self.sorted: *************** *** 296,302 **** def newArchive(self, archive): pass def clearIndex(self, archive, index): self.__openIndices(archive) ! index=getattr(self, index+'Index') finished=0 try: key, msgid=self.threadIndex.first() --- 298,307 ---- def newArchive(self, archive): pass def clearIndex(self, archive, index): self.__openIndices(archive) ! ## index=getattr(self, index+'Index') ! if hasattr(self.threadIndex, 'clear'): ! self.threadIndex.clear() ! return finished=0 try: key, msgid=self.threadIndex.first() From afu@altek.com.my Thu Jun 3 03:44:37 1999 From: afu@altek.com.my (Feisal Umar) Date: Wed, 02 Jun 1999 18:44:37 -0800 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error Message-ID: <3755EC15.EF5AA949@altek.com.my> Hi. {This problem was actually posted at mailman-users lists, but I didn't get any responses .. so I think I'll try here :) } My MailMan v1.0rc1 is working excellently except for one small nagging problem. Whenever I am trying to access my public archive, I get an error message .. the normal "denied access error". A quick file permission check shows that the *.txt.gz file has a chmod 600 permission (hence denied access). However, previous week's archives are OK (automatically chmod 644), the anomaly only affects the current week's archive. Help .. please ... anyone? This is my 3rd installation (using combinations of GIDs) but to no avail. Please ... just when I thought I could make do without MajorDomo .. :( Kudos to the MailMan Developers anyway Thanks in advance -- Feisal Umar Huge, Friendly and Entertaining http://altavista.skali.com Skali Multimedia Applications Centre http://www.altek.com.my/smac From tomaz.borstnar@over.net Wed Jun 2 17:17:38 1999 From: tomaz.borstnar@over.net (Tomaz Borstnar) Date: Wed, 02 Jun 1999 18:17:38 +0200 Subject: [Mailman-Developers] Fwd: Re: Fwd: [Mailman-Users] smtplib Message-ID: <4.2.0.56.19990602181633.00a6f100@193.189.189.100> This mail might help making Mailman more standards compliant. We all want that, right? >X-From_: mea@nic.funet.fi Wed Jun 2 15:15:26 1999 >Subject: Re: Fwd: [Mailman-Users] smtplib >From: Matti Aarnio >To: tomaz.borstnar@over.net (Tomaz Borstnar) >Date: Wed, 2 Jun 1999 16:14:20 +0300 (EET DST) > > > Yes ? > >If mailman really does that, then it is as bad as M$ WinCE, which does >same incorrect SMTP address productionn, but I don't recall having seen >that problem. (a bit of web-browsing -- to locate the Mailman homepages, >etc..) > >Ok, I pulled in the current Mailman 1.0rc1 source, and found >following at it (Mailman/pythonlib/smtplib.py): > > def mail(self,sender,options=[]): > """SMTP 'mail' command -- begins mail xfer session.""" > optionlist = '' > if options and self.does_esmtp: > optionlist = string.join(options, ' ') > self.putcmd("mail", "FROM:%s %s" % (quoteaddr(sender) ,optionlist)) > return self.getreply() > > def rcpt(self,recip,options=[]): > """SMTP 'rcpt' command -- indicates 1 recipient for this mail.""" > optionlist = '' > if options and self.does_esmtp: > optionlist = ' ' + string.join(options, ' ') > self.putcmd("rcpt","TO:%s%s" % (quoteaddr(recip),optionlist)) > return self.getreply() > > >Ok, the problem can be at how the quoteaddr() works, does it >*always* yield addresses *with* "<...>" around them, or can it >sometimes yield those without the wrappers ? > >I would suggest it to always yield the target address *without* >the "<..>" angle brackets, and then always to print those explicitely. >That way there won't be some mystic cases where failures happen. > > >Another problem I have seen reports about are due to putcmd() >function misbehaviour (belief that "all the world is Sendmail"): > > def putcmd(self, cmd, args=""): > """Send a command to the server.""" > str = '%s %s%s' % (cmd, args, CRLF) > self.send(str) > >That FORCES extra space in case the 'args' does not exist for some >command (e.g. "DATA"). It should not. > >The more I read the mailman documents, the more I am convinced that >its coders use 'sendmail' as standard for how the RFC-821 can be >ignored/abused. You really should have somebody running e.g. ZMailer >in 'strict' mode, which will quickly weed out any protocol non-compliance. > >OTOH: For ZMailer there are also better ways to submit a message, than > doing it thru SMTP port. Methods that are way faster, and easily > codable in Python (I have a sample in PERL, and in C, of course.) > > /Matti Aarnio > > > >X-From_: mailman-users-admin@python.org Tue Jun 1 19:08:56 1999 > > >Date: Tue, 1 Jun 1999 12:13:26 -0400 (EDT) > > >From: Dave Sill > > >To: mailman-users@python.org > > >Subject: [Mailman-Users] smtplib > > >X-Mailer: VM 6.71 under 21.1 "20 Minutes to Nikko" XEmacs Lucid (patch 2) > > >Organization: Oak Ridge National Lab, Oak Ridge, Tenn., USA > > >X-Face: > > >"p~Q]mg{;e*}YR|)&Q/&Q\*~5UWfZX34;5M c%YX > > >$E6]%1jvk:,"f*jA|?~Cxb?WJ5gt}L?qsMAjROM~rHbK27yx=t,L/?IHb8@|cYg8"Y)~0Ip > U~J. > > >^w,VW)u?M3q-AS{f`@RZ]Wll > > >X-Disclaimer: My opinions do not necessarily represent those of my > employer > > >Sender: mailman-users-admin@python.org > > >X-Mailman-Version: 1.0rc1 > > >List-Id: Mailman mailing list management users > > >X-BeenThere: mailman-users@python.org > > > > > >It looks like Mailman does: > > > > > > MAIL FROM:mailman-owner@sws1.ctd.ornl.gov > > > > > >instead of: > > > > > > MAIL FROM: > > > > > >I wonder what other SMTP corners were cut. > > > > > >-Dave > > > > > >------------------------------------------------------ > > >Mailman-Users maillist - Mailman-Users@python.org > > >http://www.python.org/mailman/listinfo/mailman-users > > > > ---- > > Tomaz Borstnar > > "Love is the answer to the final question you ask" - Unknown > > ---- Tomaz Borstnar "Love is the answer to the final question you ask" - Unknown From Harald.Meland@usit.uio.no Wed Jun 2 17:40:42 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 02 Jun 1999 18:40:42 +0200 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error In-Reply-To: Feisal Umar's message of "Wed, 02 Jun 1999 18:44:37 -0800" References: <3755EC15.EF5AA949@altek.com.my> Message-ID: --=-=-= [Feisal Umar] > Hi. {This problem was actually posted at mailman-users lists, but I didn't > get any responses .. so I think I'll try here :) } Sure -- I'm trying to catch up with mailman-users, but unfortunately I'm still pretty far behind... > Whenever I am trying to access my public archive, I get an error message .. > the normal "denied access error". A quick file permission check shows that > the *.txt.gz file has a chmod 600 permission (hence denied access). Small oversight in the archiving code, I believe. Please try this patch: --=-=-= Content-Disposition: attachment Content-Description: Patch to create gzipped text archives with correct mode Index: HyperArch.py =================================================================== RCS file: /export/public/cvsroot/mailman/Mailman/Archiver/HyperArch.py,v retrieving revision 1.13 diff -u -r1.13 HyperArch.py --- HyperArch.py 1998/11/22 02:06:09 1.13 +++ HyperArch.py 1999/06/02 16:31:32 @@ -884,7 +884,11 @@ archz = gzip.open(oldgzip) except (IOError, RuntimeError, os.error): pass - newz = gzip.open(gzipfile, 'w') + try: + ou = os.umask(002) + newz = gzip.open(gzipfile, 'w') + finally: + os.umask(ou) if archz : newz.write(archz.read()) archz.close() --=-=-= If this fixes your problem, let me know, and I'll commit the change. -- Harald --=-=-=-- From Harald.Meland@usit.uio.no Wed Jun 2 17:48:27 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 02 Jun 1999 18:48:27 +0200 Subject: [Mailman-Developers] Fwd: Re: Fwd: [Mailman-Users] smtplib In-Reply-To: Tomaz Borstnar's message of "Wed, 02 Jun 1999 18:17:38 +0200" References: <4.2.0.56.19990602181633.00a6f100@193.189.189.100> Message-ID: [Tomaz Borstnar] > This mail might help making Mailman more standards compliant. We all > want that, right? Yup, but the Right Way to fix Mailman's SMTP interaction is by fixing the distributed-with-python smtplib.py (which Mailman includes an up-to-date copy of (in Mailman/pythonlib), for the benefit of those using old(er) Python installations). -- Harald From afu@altek.com.my Thu Jun 3 21:22:02 1999 From: afu@altek.com.my (Feisal Umar) Date: Thu, 03 Jun 1999 12:22:02 -0800 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error References: <3755EC15.EF5AA949@altek.com.my> Message-ID: <3756E3EA.AA4C67C2@altek.com.my> Harald, Unfortunately .. it didn't work :( I am using Redhat 6.0, Mailman v1.0rc1, users' umask is 022, using qmail 1.03 and I didn't install mailman as root I tried manually changing the file permissions to chmod 644, but Mailman reverts it back to chmod 600 the next time I posted something to the list. I am getting desperate here .. :) PS: MY installation can be viewed at http://listserv.mysmac.com/ Harald Meland wrote: > > [Feisal Umar] > > > Hi. {This problem was actually posted at mailman-users lists, but I didn't > > get any responses .. so I think I'll try here :) } > > Sure -- I'm trying to catch up with mailman-users, but unfortunately > I'm still pretty far behind... > > > Whenever I am trying to access my public archive, I get an error message .. > > the normal "denied access error". A quick file permission check shows that > > the *.txt.gz file has a chmod 600 permission (hence denied access). > > Small oversight in the archiving code, I believe. Please try this > patch: > > ---------------------------------------------------------------------------- > > Part 1.2 Type: Plain Text (text/plain) > Description: Patch to create gzipped text archives with correct mode > > ---------------------------------------------------------------------------- > > If this fixes your problem, let me know, and I'll commit the change. > -- > Harald -- Feisal Umar, Project Manager Huge, Friendly and Entertaining http://altavista.skali.com Skali Multimedia Applications Centre http://www.altek.com.my/smac From schaefer@zanshin.com Fri Jun 4 00:34:47 1999 From: schaefer@zanshin.com (Bart Schaefer) Date: Thu, 03 Jun 1999 16:34:47 -0700 Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful Message-ID: <37571117.6CC5DC0D@zanshin.com> I just received my first "mailing list memberships reminder" from a mailman list. I asked the list admin about it, and he replied: > Each mailman installation optionally sends a single message covering > all the mailing lists controlled by that installation, once per > month. The option is controlled by the list administrators, though; > not by the individual users. I could turn it off, but then I'd have > to turn it off for everyone. I strongly suggest that this become a per-subscriber configurable item. Consider the possibility that I, unaware that this is going to take place, subscribe an address that represents a local exploder. At some later time everyone on that local list is going to be given my password, possibly without my personally being aware it has happened (if I don't happen to be on the list myself). That sort of information should never be mailed to someone who hasn't explicitly asked for it and verified in some way that he's eligible to receive it. From dragondm@integral.org Fri Jun 4 07:51:16 1999 From: dragondm@integral.org (The Dragon De Monsyne) Date: Fri, 4 Jun 1999 01:51:16 -0500 (CDT) Subject: [Mailman-Developers] Fwd: Re: Fwd: [Mailman-Users] smtplib In-Reply-To: <4.2.0.56.19990602181633.00a6f100@193.189.189.100> Message-ID: On Wed, 2 Jun 1999, Tomaz Borstnar wrote: >> >Ok, the problem can be at how the quoteaddr() works, does it > >*always* yield addresses *with* "<...>" around them, or can it > >sometimes yield those without the wrappers ? it will yield a bare address with the <>'s added unless the address cannot be parsed. It will pass the address verbatim _IF_ and _ONLY_ if rfc822.parseaddr() cannot parse it. this is the proper behavior, IMHO, as if the address cannot be parsed, it is probably syntacticly invalid, and thus the SMTP server will complain anyway. If rfc822.parseaddr() is cronking on a syntacticly valid address, the rfc822 module needs to be fixed. > > > >I would suggest it to always yield the target address *without* > >the "<..>" angle brackets, and then always to print those explicitely. > >That way there won't be some mystic cases where failures happen. Creating a syntactically valid path according to rfc821 is that function's purpose is. According to the RFC the path includes the <>'s if the addressis bogus to begin with, then failure is the 'correcxt' thing to happen, because it means that something is pasing in mangled address, or that someone needs to submit a bug report on the rfc822 module. > >Another problem I have seen reports about are due to putcmd() > >function misbehaviour (belief that "all the world is Sendmail"): > > No, this is a bug. It will be fixed. > > def putcmd(self, cmd, args=""): > > """Send a command to the server.""" > > str = '%s %s%s' % (cmd, args, CRLF) > > self.send(str) > > > >That FORCES extra space in case the 'args' does not exist for some > >command (e.g. "DATA"). It should not. > > > > >OTOH: For ZMailer there are also better ways to submit a message, than > > doing it thru SMTP port. Methods that are way faster, and easily > > codable in Python (I have a sample in PERL, and in C, of course.) True, but SMTP is the most portable way. -The Dragon De Monsyne From afu@altek.com.my Sat Jun 5 03:44:49 1999 From: afu@altek.com.my (Feisal Umar) Date: Fri, 04 Jun 1999 18:44:49 -0800 Subject: [Mailman-Developers] Archiving Automatically Message-ID: <37588F21.FFD250DB@altek.com.my> Earlier I had a problem where whenever I tried to access the "Downloadable version" version of my list's archive. (The xxx.txt.gz has permission 600) I managed to fix it via manually running $prefix/bin/arch archives/private/.mbox/.mbox Shouldn't the bin/arch function be run automatically for each of my list? My list works fine in all other aspect (fingers crossed) except for 'downloadable archive'. Did I miss a step elsewhere? Thanks in advance -- Feisal Umar, Project Manager Huge, Friendly and Entertaining http://altavista.skali.com Skali Multimedia Applications Centre http://www.altek.com.my/smac From Harald.Meland@usit.uio.no Fri Jun 4 16:36:59 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 17:36:59 +0200 Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Bart Schaefer's message of "Thu, 03 Jun 1999 16:34:47 -0700" References: <37571117.6CC5DC0D@zanshin.com> Message-ID: [Bart Schaefer] > I just received my first "mailing list memberships reminder" from a > mailman list. I asked the list admin about it, and he replied: > > > Each mailman installation optionally sends a single message covering > > all the mailing lists controlled by that installation, once per > > month. The option is controlled by the list administrators, though; > > not by the individual users. I could turn it off, but then I'd have > > to turn it off for everyone. > > I strongly suggest that this become a per-subscriber configurable > item. I think it probably will -- but not until after v1.0 is out. > Consider the possibility that I, unaware that this is going to take > place, subscribe an address that represents a local exploder. At > some later time everyone on that local list is going to be given my > password, possibly without my personally being aware it has happened > (if I don't happen to be on the list myself). If you're adding other people's addresses, then how would they be able to unsubscribe later -- unless they have som way for getting at the password. I think the correct solution to this problem is for you _not_ to use "your" password unless it really is one of "your" addresses you're adding. -- Harald From schaefer@zanshin.com Fri Jun 4 16:50:25 1999 From: schaefer@zanshin.com (Bart Schaefer) Date: Fri, 4 Jun 1999 08:50:25 -0700 (PDT) Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Message-ID: On 4 Jun 1999, Harald Meland wrote: > [Bart Schaefer] > > > Consider the possibility that I, unaware that this is going to take > > place, subscribe an address that represents a local exploder. At > > some later time everyone on that local list is going to be given my > > password > > If you're adding other people's addresses, then how would they be able > to unsubscribe later Because my "local exploder" is a news gateway and they simply use their newsreader to subscribe/unsubscribe the newsgroup. Or because my exploder is another mailing list manager so they can subscribe/unsubscribe from the local list. Neither of these is an uncommon situation. From Harald.Meland@usit.uio.no Fri Jun 4 17:05:09 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 18:05:09 +0200 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error In-Reply-To: Feisal Umar's message of "Thu, 03 Jun 1999 12:22:02 -0800" References: <3755EC15.EF5AA949@altek.com.my> <3756E3EA.AA4C67C2@altek.com.my> Message-ID: [Feisal Umar] > Harald, > > Unfortunately .. it didn't work :( > > I am using Redhat 6.0, Mailman v1.0rc1, users' umask is 022, using qmail > 1.03 and I didn't install mailman as root > > I tried manually changing the file permissions to chmod 644, but Mailman > reverts it back to chmod 600 the next time I posted something to the list. Bummer... > PS: MY installation can be viewed at http://listserv.mysmac.com/ I tried this, but got redirected to your Mailman "listinfo" page -- which doesn't give me much relevant info. [Feisal Umar] > Earlier I had a problem where whenever I tried to access the "Downloadable > version" version of my list's archive. (The xxx.txt.gz has permission 600) > > I managed to fix it via manually running $prefix/bin/arch > archives/private/.mbox/.mbox You mean, after running bin/arch, the archive's permissions _stay_ correct? _Very_ strange -- the guts of bin/arch are, as far as I can see, identical to the guts of Mailman.Archiver.ArchiveMail(). The latter is the function that Mailman.MailList.Post() calls to update archives. > Shouldn't the bin/arch function be run automatically for each of my > list? No, not as such -- but the bin/arch and the builtin archiving invokes Mailman's archiving engine in the same way. > My list works fine in all other aspect (fingers crossed) except for > 'downloadable archive'. I'm confused -- are you saying that the permission problem is gone or not? -- Harald From Harald.Meland@usit.uio.no Fri Jun 4 18:00:17 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 19:00:17 +0200 Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Bart Schaefer's message of "Fri, 4 Jun 1999 08:50:25 -0700 (PDT)" References: Message-ID: [Bart Schaefer] > On 4 Jun 1999, Harald Meland wrote: > > > [Bart Schaefer] > > > > > Consider the possibility that I, unaware that this is going to take > > > place, subscribe an address that represents a local exploder. At > > > some later time everyone on that local list is going to be given my > > > password > > > > If you're adding other people's addresses, then how would they be able > > to unsubscribe later > > Because my "local exploder" is a news gateway and they simply use their > newsreader to subscribe/unsubscribe the newsgroup. Or because my exploder > is another mailing list manager so they can subscribe/unsubscribe from the > local list. Neither of these is an uncommon situation. I have no problem seeing the usefulness of adding non-personal addresses to mailing lists. I was merely stating that you shouldn't be using a very "private" password when doing so (i.e. don't use passwords that are used for other subscriptions as well). [ Even if the automatic reminders are turned off, people can still go to the list's member page (if it is open), click on some member address, and click on the "Send me my password now" button to have Mailman distribute the password to the member (which could be an exploder). ] In cases like these, there _will be_ loopholes in Mailman's "security mechanisms", unless you introduce some new concepts -- e.g. a "member owner address" that receives all administrative requests regarding it's associated member. The umbrella list feature of Mailman solves these things for lists where _all_ the member are exploders, but not for lists with both user and list members. I have been thinking about implementing a more general solution after 1.0 is out, but the list of post-1.0 things to do is getting pretty long... :) -- Harald From Harald.Meland@usit.uio.no Fri Jun 4 19:35:09 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 04 Jun 1999 20:35:09 +0200 Subject: [Mailman-Developers] Change to speed up mass subscription committed -- testers welcome Message-ID: I have just committed a change to speed up the web interface "mass subscription" greatly (it saves the list configuration only once, as opposed to once per member added before). I have (of course) tested this change on my system, but as I have other non-committed changes here as well, and as the change is pretty low level, I'd really appreciate it if some people would try it out and let me know whether things work/don't work for them. Cheers, -- Harald From schaefer@zanshin.com Fri Jun 4 20:34:47 1999 From: schaefer@zanshin.com (Bart Schaefer) Date: Fri, 4 Jun 1999 12:34:47 -0700 (PDT) Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Message-ID: On 4 Jun 1999, Harald Meland wrote: > I have no problem seeing the usefulness of adding non-personal > addresses to mailing lists. I was merely stating that you shouldn't > be using a very "private" password when doing so (i.e. don't use > passwords that are used for other subscriptions as well). It doesn't matter how personal the password is; the point is that any person using the local exploder could go to the member page and unsubscribe, thus cutting off everyone else who relies on the exploder. They might even be misled into doing so, thinking that they were unsubscribing themselves only. > [ Even if the automatic reminders are turned off, people can still go > to the list's member page (if it is open), click on some member > address, and click on the "Send me my password now" button to have > Mailman distribute the password to the member (which could be an > exploder). ] True, but there's a difference between having to actively go looking for a password and having that password sent to you unsolicited. I understand if there's a technical reason this can't be made a personal preference before the release, but please consider at least making the installation default be to NOT send these messages, and include some kind of warning to the list admin about why he might not want to turn it on. From linnkarik@yahoo.com Fri Jun 4 21:14:35 1999 From: linnkarik@yahoo.com (Feisal Umar) Date: Fri, 4 Jun 1999 13:14:35 -0700 (PDT) Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error Message-ID: <19990604201435.19261.rocketmail@web109.yahoomail.com> Harald, if u don't mind, please go to http://listserv.mysmac.com/pipermail/demo-users/ On the "Downloadable Version" column: archive 19990604 is the problem I'm having now (and still do), archive 19990602 is what I will get if I run ~prefix/bin/arch whatever whatever I don't see anyone else having this problem ... so far. From your previous analysis, archive 19990602 "downloadable version" is what I should get everytime a post is sent to the list .... why isn't it happening here? Thank you for your efforts so far :) _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com From troy@akropolys.com Fri Jun 4 21:29:01 1999 From: troy@akropolys.com (Troy Morrison) Date: Fri, 4 Jun 1999 13:29:01 -0700 (PDT) Subject: [Mailman-Developers] Monthly reminder sent by mailman-owner considered harmful In-Reply-To: Message-ID: > I understand if there's a technical reason this can't be made a personal > preference before the release, but please consider at least making the > installation default be to NOT send these messages, and include some kind > of warning to the list admin about why he might not want to turn it on. Forgive me for butting in, and please realize I'm not trying to argue the merits of this solution, but it just occured to me that one way to solve this might be to configure the local exploder *not* to pass along mail from 'mailman-owner' (or whatever address the monthly reminder comes from, I forget right now) and to instead forward it to it's local administrator. That's how I would do it, I think. Troy From ricardo@miss-janet.com Tue Jun 8 21:14:13 1999 From: ricardo@miss-janet.com (Ricardo Kustner) Date: Tue, 08 Jun 1999 22:14:13 +0200 (CEST) Subject: [Mailman-Developers] performance again... Message-ID: Hi, well, it happened again last night that the system load jumped to abnormal levels on our server when some messages where being approved in admindb so I had to try to telnet to it again and issue a shutdown to the machine... It's getting really unworkable like this... :( recently, one of the people who use the moderating page told me that she often moderates by selecting several messages to approve on 1 page and then press the submit button (to be honest i didnt even know that was possible myself) -- i guess that's what can cause things going wrong: too many messages are being send at the same time and mailman goes bezerk... does anybody have idea how i can fix this? or is this a bug in mailman? i really need to fix it soon... there are other things running on that server too and it needs to be up 24h a day... if i happen to be online i usually fix it in 30-60 mins (telnetting to a server with 60+ systemload can take a while) but if i'm not around it can be down all night :( Thanks, Ricardo. -- From jwm@plain.co.nz Thu Jun 10 07:14:42 1999 From: jwm@plain.co.nz (John Morton) Date: Thu, 10 Jun 1999 18:14:42 +1200 (NZST) Subject: [Mailman-Developers] Cookie security hole in admin interface Message-ID: <14175.22482.412218.700661@antares.plain.co.nz> [Didn't see this problem discussed in the recent archive messages, so...] I was looking at the code for the admin cgi in search of a good cookie authentication system, and found out that it was doing this, c = Cookie.Cookie( os.environ['HTTP_COOKIE'] ) if c.has_key(list_name + "-admin"): if c[list_name + "-admin"].value == `hash(list_name)`: return 1 ...to authenticate based on a cookie. This code is from 1.0b8, but it only took a couple of minutes to set the appropriate wafer in my junkbuster configuration, and point netscape at the admin page for mailman-developers. I'll leave the replication of this exploit as an exercise for the readers. Possible solutions: Lock down that url with whatever security features your web server has. This sucks as a long term solution, but it should protect from disgruntled script kiddies that you just chucked off your lists. Make the value based on a hash of some slow changing system variable. Something that changes with the frequency of your desired expire time, for example. Maybe a cron job to set a key based on some fast changing system stats every hour or so. Use SSL for the admin interface and save the name and password in the cookie. Any better suggestions? John. From jwm@plain.co.nz Thu Jun 10 07:37:15 1999 From: jwm@plain.co.nz (John Morton) Date: Thu, 10 Jun 1999 18:37:15 +1200 (NZST) Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: <14175.22482.412218.700661@antares.plain.co.nz> References: <14175.22482.412218.700661@antares.plain.co.nz> Message-ID: <14175.23835.29300.892948@antares.plain.co.nz> John Morton writes: > I was looking at the code for the admin cgi in search of a good cookie > authentication system, and found out that it was doing this, [etc] > Any better suggestions? A quick glance at the WWW security FAQ suggests a good solution: http://www.w3.org/Security/Faq/wwwsf7.html#Q66 John. From starback@ling.uu.se Thu Jun 10 21:37:10 1999 From: starback@ling.uu.se (Per Starback) Date: 10 Jun 1999 22:37:10 +0200 Subject: [Mailman-Developers] listinfo.html Message-ID: There are some html errors in the default listinfo.html, including some none-nesting tags. In this mail is a version that fixes most of them. As can be seen I have edited revision 1.19 (which is in 1.0rc1). (While fixing the errors I changed the indentation to be more consistent, so if you want to check exactly what is changed you might want to use diff -b or -w.) If you add at the start of this there are still two errors left than a validator finds. That's the HEIGHT attribute to TABLE which is a netscapism, and the COLS attribute which is an explorerism. (Maybe they should be eliminated too.) -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- <MM-List-Name> Info Page

--

 

About

To see the collection of prior postings to the list, visit the Archives.

Using
To post a message to all the list members, send email to .

You can subscribe to the list, or change your existing subscription, in the sections below.

Subscribing to

Subscribe to by filling out the following form.

Your email address:  
You must enter a privacy password. This provides only mild security, but should prevent others from messing with your subscription. Do not use valuable passwords!
Pick a password:  
Reenter password to confirm:  
Would you like to receive list mail batched in a daily digest? No Yes
Subscribers

From claw@varesearch.com Thu Jun 10 22:42:27 1999 From: claw@varesearch.com (J C Lawrence) Date: Thu, 10 Jun 1999 14:42:27 -0700 Subject: [Mailman-Developers] Performance problems and MailMan Message-ID: I believe I've found out how to reliably reproduce the performance problemsI've noticed here at VA and at Kanga.Nu, and which Barry and another (forget name, sorry) have observed as well: 1) Create a moderated list. 2) Subscribe 200 addresses to the list (can be bogus addresses but the local MTA must accept them) 3) Post at least 30 messages of an average of at least 2K size to the list. 4) Go to the moderation page, approve every message, and hit submit. 5) Watch your system load peg and stay there for an obscenely long time. -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From starback@ling.uu.se Fri Jun 11 14:33:07 1999 From: starback@ling.uu.se (Per Starback) Date: 11 Jun 1999 15:33:07 +0200 Subject: [Mailman-Developers] Various In-Reply-To: J C Lawrence's message of "Thu, 10 Jun 1999 14:42:27 -0700" Message-ID: Various things I, as a new Mailman user, have wished was different. These are not bug reports, but rather design issues. * Privacy Options I don't like the combined meanings of the fields A = "Restrict posting privilege to list members?" and B = "Addresses of members accepted for posting to this list without implicit approval requirement". The current functionality is: If A is No, and B isn't set, then anyone is allowed to post. If A is No, and B is set, then *only* users listed in B are allowed to post. If A is Yes, then members *and* users listed in B are allowed to post. My usual setting is the last one. Only members and some special addresses are allowed to post to the list. But sometimes when I go away for some time I would like to open up the list a little to make it work more seamlessly while I can't be there to administrate it. Now I can't just turn switch A to do that, but instead I have to remove all addresses from B as well. Of course that's not very much problematic to do, but nevertheless it seems illogical. Perhaps it would be better if A had three possible values: Noone, Members only, Anyone. And then B always is a list of *additional* addresses besides what option A states? * Digest-member options "Header added to every digest" is empty as the default value. I would prefer if the whole Send xxx maillist submissions to [...] When replying, please [...] "Re: Contents of xxx digest...") blurb was there instead, so all of that could be edited. (By the way, that blurb ends with an unmatched ")". That's an error in Digester.py.) * List-specific programs Something I'm missing from Smartlist which I have been using since before is the possibility there of adjusting everything for a particular list by making a special version of the list programs for that list. In this way it would great if I could just put a changed Digester.pyc (for example) in the directory for a particular list to have that list use that one instead of the default one. This wouldn't be needed for most lists, or course, but still such a minor(?) change would make it *possible* to do almost anything, including stuff that there probably will be support for in the future but that someone could need to fix "by hand" for one particular list right now, and specialized stuff for which there never will be generalized support. From Harald.Meland@usit.uio.no Fri Jun 11 16:33:56 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 11 Jun 1999 17:33:56 +0200 Subject: [Mailman-Developers] [NEWBIE] ... Help! File permission error In-Reply-To: Feisal Umar's message of "Fri, 4 Jun 1999 13:14:35 -0700 (PDT)" References: <19990604201435.19261.rocketmail@web109.yahoomail.com> Message-ID: [Feisal Umar] > Harald, > > if u don't mind, please go to > http://listserv.mysmac.com/pipermail/demo-users/ > > On the "Downloadable Version" column: > archive 19990604 is the problem I'm having now > (and still do), > archive 19990602 is what I will get if I run > ~prefix/bin/arch whatever whatever I got a chance to observe that the problem was there some time ago, but now I'm no longer allowed to view the URL mentioned above. However, I can only find one place in the Mailman code where a gzipped file is being created -- and that's the one I fixed by my first patch to solve this problem (line 889 of current CVS HyperArch.py). Neither can I find no likely chmod() calls to cause the problems you're seeing. So, unless anyone else speaks up and tells me they have similar problems, I'm going to have to assume that the problem is specific to your system (in some way -- without having a closer look at the system from within, I'm unable to pinpoint the problem further). Sorry, -- Harald From starback@ling.uu.se Fri Jun 11 18:05:24 1999 From: starback@ling.uu.se (Per Starback) Date: 11 Jun 1999 19:05:24 +0200 Subject: [Mailman-Developers] Envelope from, sender, from, etc. In-Reply-To: Greg Connor's message of "Mon, 24 May 1999 22:10:22 -0700" Message-ID: In 1.0rc1 USE_ENVELOPE_SENDER = 0 by default, but still it didn't work for me. After investigating it turned out that the documentation misled me. I think the documentation or the function should be changed, preferrably the latter. According to the section in NEWS where USE_ENVELOPE_SENDER is added: # With this variable set to true, the envelope sender (e.g. Unix # "From_" header) is used to match addresses, otherwise the From: # header is used. The FAQ also speaks about the difference being between using envelope from and From:. The comments in Defaults.py indicate that this is perhaps not the whole truth as they say # The envelope sender is set by the SMTP delivery and is thus less easily # spoofed than the sender, which is typically just taken from the From: header "Typically" is the key word here. The actual code uses GetSender which prefers to use Sender: but uses From: if there is no Sender:. So my messages which said From: starback@ling.uu.se Sender: starback@objekt.ling.uu.se where rejected when only "starback@ling.uu.se" was a subscriber. Am I missing something here? It seems to me that the point of USE_ENVELOPE_SENDER=0 is that we are willing to accept the lesser security we get when we just accept who the sender says they are and don't insist that the "technical stuff" (envelope from) has to match. Why then refuse because of a Sender: header that probably echoes what was in envelope from? -- Per Starback "Life is but a gamble! Let flipism chart your ramble!" From Harald.Meland@usit.uio.no Fri Jun 11 19:40:11 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 11 Jun 1999 20:40:11 +0200 Subject: [Mailman-Developers] Cookie security hole in admin interface References: <14175.22482.412218.700661@antares.plain.co.nz> <14175.23835.29300.892948@antares.plain.co.nz> Message-ID: [John Morton] > John Morton writes: > > I was looking at the code for the admin cgi in search of a good cookie > > authentication system, and found out that it was doing this, Thanks for letting us know -- this certainly gave me some incentive to have a look at what those pesky cookies really are all about. I guess Barry'll have to whip up a new release (1.0rc2?) shortly... > > Any better suggestions? > > A quick glance at the WWW security FAQ suggests a good solution: > > http://www.w3.org/Security/Faq/wwwsf7.html#Q66 As the extra complexity added by having to save session state on the server side (i.e. have Mailman keep track of session IDs) is rather large, and as Mailman isn't safe from package sniffing anyway (unless you're running things on a SSL server, in which case cookie sniffing shouldn't be of any trouble anyway), I settled for slightly less. I have just commited a fix to CVS, based on these two new SecurityManager functions: def MakeCookie(self): client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' issued = int(time.time()) expires = issued + mm_cfg.ADMIN_COOKIE_LIFE secret = self.password mac = hash(secret + client_ip + `issued` + `expires`) return [client_ip, issued, expires, mac] def CheckCookie(self, cookie): if type(cookie) <> type([]): return 0 if len(cookie) <> 4: return 0 client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' [for_ip, issued, expires, received_mac] = cookie if for_ip <> client_ip: return 0 now = time.time() if not issued < now < expires: return 0 secret = self.password mac = hash(secret + client_ip + `issued` + `expires`) if mac <> received_mac: return 0 return 1 Hopefully, this new cookie scheme will suffice -- if anyone do see flaws in it, don't hesitate to get in touch. -- Harald From gossamer@tertius.net.au Sat Jun 12 01:05:45 1999 From: gossamer@tertius.net.au (Bek Oberin) Date: Sat, 12 Jun 1999 10:05:45 +1000 Subject: [Mailman-Developers] Re: Various In-Reply-To: ; from Per Starback on Fri, Jun 11, 1999 at 03:33:07PM +0200 References: Message-ID: <19990612100545.A28510@tertius.net.au> Per Starback wrote: > Perhaps it would be better if A had three possible values: > Noone, Members only, Anyone. And then B always is a list of > *additional* addresses besides what option A states? I'd appreciate this too, as I do the same thing. bekj -- : --Hacker-Neophile-Eclectic-Geek-Grrl-Queer-Disabled-Boychick-- : gossamer@tertius.net.au http://www.tertius.net.au/~gossamer/ : A weird imagination is most useful to gain full advantage of all : the features -- manpage for amd(8) From Harald.Meland@usit.uio.no Sun Jun 13 17:17:57 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 13 Jun 1999 18:17:57 +0200 Subject: [Mailman-Developers] Re: Mailman feature request In-Reply-To: Dave Cinege's message of "Sun, 13 Jun 1999 11:50:24 -0400" References: <19990410093058.A898@kcbbs.gen.nz> <3763D340.F97C24D7@psychosis.com> Message-ID: I'm Cc:ing mailman-developers, as either that or the Jitterbug database is where feature requests belong. [Dave Cinege] > I'd like an unsubscribe (or mass unsubscribe) field added to the > memebership management section. The pages with check boxes are cute > and everything, but cut&paste is much faster. I tend to agree -- and would additionally like to have a "Unsubscribe all" button (with some added safety pins to avoid blasting away your entire list by mistake). > Also I'd like to see a nice big 'unsubscribe' title at the bottom of > the list info page. I've already had 5 mentally challenged people > mail me that I had to point that out. Here's a patch that makes > things more obvious: I guess that the listinfo page could mention how to unsubscribe in larger writing -- but I don't want to scare users from changing their (other) subscription options, either. I think I'll have to ponder on how this best could be done a little while. > --- listinfo.html.orig Sun Jun 13 11:42:01 1999 > +++ listinfo.html Sun Jun 13 11:48:33 1999 > @@ -103,18 +103,18 @@ > > > > - Subscribers > + Subscribers (Unsubscribe) > > > > > + > + > + > +

> > > > -

> - > - > - > > > -- Harald From jwm@plain.co.nz Mon Jun 14 01:43:30 1999 From: jwm@plain.co.nz (John Morton) Date: Mon, 14 Jun 1999 12:43:30 +1200 (NZST) Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: References: <14175.22482.412218.700661@antares.plain.co.nz> <14175.23835.29300.892948@antares.plain.co.nz> Message-ID: <14180.20530.133448.516252@antares.plain.co.nz> Harald Meland writes: > As the extra complexity added by having to save session state on the > server side (i.e. have Mailman keep track of session IDs) is rather > large, and as Mailman isn't safe from package sniffing anyway (unless > you're running things on a SSL server, in which case cookie sniffing > shouldn't be of any trouble anyway), I settled for slightly less. True. Though stealing a cookie via packet sniffing will still require the thief to be on the same IP as the original cookie owner, or it will require them to fake their IP as well. This definitely makes the list vulnerable to only an extremely determined attacker. [Note, I'm not a python hacker, so bear with me :-) ] Do add the domain that this mailman for this list is supposed to be under (or the browser will send this cookie to every site you connect to!) and restrict the scripts that it is sent to to /mailman/ at worst, /mailman/admin and /mailman/admindb separately at best (allowing separate passwords for those two scripts is a needed feature for a proper distinction between list admins and moderators, anyway). Of course, you could already be doing this and I just missed it :-) > I have just commited a fix to CVS, based on these two new > SecurityManager functions: > > def MakeCookie(self): > client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' > issued = int(time.time()) > expires = issued + mm_cfg.ADMIN_COOKIE_LIFE > secret = self.password I'd prefer to grab the secret from a file that's refreshed via a cronjob every 24hrs or so. Generate it from something like a CRC32 of some /dev/urandom output (on a linux box, anyway) would do the trick. > mac = hash(secret + client_ip + `issued` + `expires`) Is the hash() function one way? How about: import md5 import base64 mac = base64.encodestring(md5.new(secret + client_ip + `issued` + `expires`).digest()) The FAQ talks about doing a second round of MD5 hashing to '...avoid an attack in which additional data is appended to the end of the cookie and a new hash recalculated by the attacker.', but I don't really understand why that's necessary. With any luck, someone will have implemented an HMAC (see RFC 2104, http://www.it.kth.se/docs/rfc/rfcs/rfc2104.txt) module for python that we could use. > return [client_ip, issued, expires, mac] > > def CheckCookie(self, cookie): > if type(cookie) <> type([]): > return 0 > if len(cookie) <> 4: > return 0 > client_ip = os.environ.get('REMOTE_ADDR') or '0.0.0.0' > [for_ip, issued, expires, received_mac] = cookie > if for_ip <> client_ip: > return 0 > now = time.time() > if not issued < now < expires: > return 0 Should we check that expires - issued = mm_cfg.ADMIN_COOKIE_LIFE ? > secret = self.password > mac = hash(secret + client_ip + `issued` + `expires`) See above. > if mac <> received_mac: > return 0 > return 1 > > Hopefully, this new cookie scheme will suffice -- if anyone do see > flaws in it, don't hesitate to get in touch. The combination of a cryptographic hashing function and a secret key that's regenerated on a 24hour cycle makes an attack by constructing a cookie infeasible (at least, within the useful lifetime of whatever hashing function we're using). Remaining sources of attacks are: Packet sniffing: They could steal the cookie this way. But they'd just steal the password, anyway, so it's a moot point. Use SSL if you're that paranoid. Stealing the cookie: Presumably by some method other than packet sniffing or direct access to your terminal; maybe a broken browser could be distributing the cookie to every site it meets. The attacker will need to fake your IP to the web server _and_ get the response back, which is rather hard. Getting access to your terminal: The short expiry time is supposed to help defeat this problem. The price to pay for the convenience of not having to type the password in every time. Perhaps having an option to turn off the use of cookies will keep the paranoid happy and allow admins to use their servers native authentication methods. Perhaps modules to interface between mailman and the various different web servers is a direction someone would like to go in? John. From tabbott@intekom.com Mon Jun 14 09:08:48 1999 From: tabbott@intekom.com (Tony Abbott) Date: Mon, 14 Jun 1999 10:08:48 +0200 Subject: [Mailman-Developers] Re: [Mailman-Users] Envelope from, sender, from, etc. References: Message-ID: <3764B890.BD9F7930@intekom.com> Per Starback wrote: > "Typically" is the key word here. The actual code uses GetSender > which prefers to use Sender: but uses From: if there is no Sender:. > So my messages which said > > From: starback@ling.uu.se > Sender: starback@objekt.ling.uu.se > > where rejected when only "starback@ling.uu.se" was a subscriber. According to my understanding of RFC822, GetSender should be the other way around, using Sender: as a fallback to From:. In fact, I had to patch it this way to enable me to subscribe to my mailing lists using Communicator, which was using "Sender: tony" (which is also incorrect, but that's besides the point. all other mailing list software works with From:) MailMan was trying to send the confirmation requests to the Sender: address, which was not working. In fact, for the purpose of sending such replies, it should actually be looking for a Reply-To: first. I don't really know the code, but I think this would require creating a separate GetSender for a) authorizing postings to a closed list, and b) generating replies to administrative requests. -t -- Tony Abbott tabbott@intekom.co.za Systems Administrator, Intekom Tel: +27-11-266-7800 http://www.intekom.co.za Fax: +27-11-315-0707 The information in this email and in any attachments is confidential and intended solely for the attention and use of the named addressee(s). This information may be subject to attorney and client or other privilege. It must not be disclosed to any person without Intekom's permission. From gonter@maestria.wu-wien.ac.at Mon Jun 14 09:20:30 1999 From: gonter@maestria.wu-wien.ac.at (Gerhard Gonter) Date: Mon, 14 Jun 1999 10:20:30 +0200 (MES) Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: <14180.20530.133448.516252@antares.plain.co.nz> from John Morton at "Jun 14, 99 12:43:30 pm" Message-ID: <199906140820.KAA27206@maestria.wu-wien.ac.at> Harald Meland writes: > As the extra complexity added by having to save session state on the > server side (i.e. have Mailman keep track of session IDs) is rather > large, and [...] In a local CGI application, we are storing cookies in an LDAP server which would be an excellent supplement for Mailman anyway. User database and some other things might be stored there. I toyed around with that idea in conjunction with our old Listprocessor but gave up on that because the Listprocessor is such a mess. +gg -- Gerhard.Gonter@wu-wien.ac.at Fax: +43/1/31336/702 g.gonter@ieee.org Zentrum fuer Informatikdienste, Wirtschaftsuniversitaet Wien, Austria From Harald.Meland@usit.uio.no Mon Jun 14 10:52:18 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 14 Jun 1999 11:52:18 +0200 Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: Gerhard Gonter's message of "Mon, 14 Jun 1999 10:20:30 +0200 (MES)" References: <199906140820.KAA27206@maestria.wu-wien.ac.at> Message-ID: [Gerhard Gonter] > Harald Meland writes: > > As the extra complexity added by having to save session state on the > > server side (i.e. have Mailman keep track of session IDs) is rather > > large, and [...] > > In a local CGI application, we are storing cookies in an LDAP server > which would be an excellent supplement for Mailman anyway. True -- I was only saying that for fixing the hole, such a major job would take too much time. For post-1.0 LDAP support might at some time be nice (although it would have to be a purely optional thing, of course). > User database and some other things might be stored there. I toyed > around with that idea in conjunction with our old Listprocessor but > gave up on that because the Listprocessor is such a mess. Maybe generalizing the interface for storing state in Mailman is something to think about. If we had such a thing, we could have a "marshal-dump to/from local file" subclass, an "LDAP-query" subclass, and so on... I think many of the other things we have put off until after 1.0 will have priority, though. -- Harald From Harald.Meland@usit.uio.no Mon Jun 14 12:59:43 1999 From: Harald.Meland@usit.uio.no (Harald Meland) Date: 14 Jun 1999 13:59:43 +0200 Subject: [Mailman-Developers] Cookie security hole in admin interface In-Reply-To: John Morton's message of "Mon, 14 Jun 1999 12:43:30 +1200 (NZST)" References: <14175.22482.412218.700661@antares.plain.co.nz> <14175.23835.29300.892948@antares.plain.co.nz> <14180.20530.133448.516252@antares.plain.co.nz> Message-ID: [John Morton] > Harald Meland writes: > > As the extra complexity added by having to save session state on the > > server side (i.e. have Mailman keep track of session IDs) is rather > > large, and as Mailman isn't safe from package sniffing anyway (unless > > you're running things on a SSL server, in which case cookie sniffing > > shouldn't be of any trouble anyway), I settled for slightly less. > > True. Though stealing a cookie via packet sniffing will still require > the thief to be on the same IP as the original cookie owner, or it > will require them to fake their IP as well. I wasn't really thinking of cookie stealing, but rather on plain text password sniffing... and to remove that vulnerability, one would have to use SSL or somesuch. > [Note, I'm not a python hacker, so bear with me :-) ] > > Do add the domain that this mailman for this list is supposed to be > under (or the browser will send this cookie to every site you connect > to!) RFC 2109 has this to say: 4.3 User Agent Role 4.3.1 Interpreting Set-Cookie The user agent keeps separate track of state information that arrives via Set-Cookie response headers from each origin server (as distinguished by name or IP address and port). The user agent applies these defaults for optional attributes that are missing: [...] Domain Defaults to the request-host. (Note that there is no dot at the beginning of request-host.) ... so I think that the current behaviour of not specifying the cookie's domain at all is correct. > and restrict the scripts that it is sent to to /mailman/ at worst, > /mailman/admin and /mailman/admindb separately at best (allowing > separate passwords for those two scripts is a needed feature for a > proper distinction between list admins and moderators, anyway). Current behaviour is to restrict to /mailman (well, the code is really using path part of mm_cfg.DEFAULT_URL) -- to allow the same cookie to authenticate against both admin and admindb pages. If a separate admindb password is implemented, it won't be a problem to issue a cookie with a different name for authentication with that password (e.g. use the 'listname:admin' cookie for access to both admin and admindb, and also test for 'listname:admindb' if the first fails on admindb access). > I'd prefer to grab the secret from a file that's refreshed via a > cronjob every 24hrs or so. Uhm, then anyone getting their cookie just before the secret is refreshed will have to re-enter their password before their cookie should have expired. Do we really want that? > > mac = hash(secret + client_ip + `issued` + `expires`) > > Is the hash() function one way? Yup, at least for now (and I believe it wouldn't be of much use as a hashing function if it wasn't). > The FAQ talks about doing a second round of MD5 hashing to '...avoid > an attack in which additional data is appended to the end of the > cookie and a new hash recalculated by the attacker.', but I don't > really understand why that's necessary. Neither did I -- but I believe the FAQ answer made the assumption that the server stores more session state than Mailman does. > Should we check that expires - issued = mm_cfg.ADMIN_COOKIE_LIFE ? Depends on whether you want cookies issued directly before the site admin changes ADMIN_COOKIE_LIFE to go dead immediately or not until after they were set to expire on creation. > The combination of a cryptographic hashing function and a secret key > that's regenerated on a 24hour cycle makes an attack by constructing > a cookie infeasible (at least, within the useful lifetime of > whatever hashing function we're using). I'm hoping that using the list's encrypted admin password as secret, in combination with a relatively short expire time, is sufficient -- but I'm no cryptography expert. I _am_ trying to keep the applied security mechanisms within reason, though -- if you want a completely bullet-proof Mailman, use an SSL-enabled server. > Remaining sources of attacks are: > > Packet sniffing: They could steal the cookie this way. But they'd > just steal the password, anyway, so it's a moot point. Use SSL if > you're that paranoid. Exactly. > Stealing the cookie: Presumably by some method other than packet > sniffing or direct access to your terminal; maybe a broken browser > could be distributing the cookie to every site it meets. The > attacker will need to fake your IP to the web server _and_ get the > response back, which is rather hard. Hmmmm... how do proxies (e.g. web cache servers) enter into this picture? > Getting access to your terminal: The short expiry time is supposed > to help defeat this problem. I was wondering whether Mailman should re-issue a new cookie on each successful cookie authentication, but decided against it -- partly due to this possible problem, partly because it would annoy people who have their web browser warn them before accepting new cookies, and partly because anyone struggling with Mailman's web admin interface to a single list for more than (the default) three hours probably is such a humble person that having to enter the admin password once more won't be a big problem :) > The price to pay for the convenience of not having to type the > password in every time. Indeed. > Perhaps having an option to turn off the use of cookies will keep > the paranoid happy and allow admins to use their servers native > authentication methods. Perhaps modules to interface between mailman > and the various different web servers is a direction someone would > like to go in? An option to disable cookie authentication altogether is easily implemented (have a look at SecurityManager.WebAuthenticate()) -- but I don't know anything about "native authentication methods", so I think I'll put it off until I understand the issues better. -- Harald From claw@varesearch.com Tue Jun 15 19:08:54 1999 From: claw@varesearch.com (J C Lawrence) Date: Tue, 15 Jun 1999 11:08:54 -0700 Subject: [Mailman-Developers] Unsubscribed users still getting monthly reminders Message-ID: I have Mailman v 1.0b8 running at Kanga.Nu (yes, I know its old, I'll upgrade tonight), and have two list members complaining that they are no longer subscribed to a list and yet receive monthly password reminders. When I check the web interfaces, they are in fact unsubscribed. Ideas? -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From jcrey@uma.es Tue Jun 22 14:04:53 1999 From: jcrey@uma.es (Juan Carlos Rey Anaya) Date: Tue, 22 Jun 1999 15:04:53 +0200 Subject: [Mailman-Developers] Mailman internationalization. Report from the trenches. VERY LONG Message-ID: <376F89F5.E098EA7A@uma.es> By the time being, we have made important progress for internationalizing mailman. Juan Carlos Rey has prepared a functional demo version of our proposed way to do it. This demos has the new ideas, with messages in english and spanish for the pages. All proposed ideas in our message dated Fri, 21 May 1999 14:57:39 +0200 with the subject: Re: [Mailman-Developers] features suggestion: languages have been implemented and work as described there. We have not translated, yet, the hardcoded message strings, but the code need to change their values depending on language is ready to be used. Now we are trying to reconciliate our chages with a CVS tree we have downloaded this morning. (Yes, we didn't know how to use CVS when we started). You can test the web interface at: http://joker.sci.uma.es/mailman/listinfo/test The list main language is spanish (espaņol) The admin password is "ejemplo" (be gentle, please :) We have concentrated on function, not on aspect, so it is a bit crude. The use of a message catalog in different languages will have a big impact on main Mailman development, so we would need your input on such an issue. We have found two ways for doing this: Using GNU gettext (which does not work completely in python and has some other implications, see attached conversation) our KISS approach: python modules with the messages in them. Like this: --- BEGIN es.py --- ErrorInvalidPasswd = 'Error: clave incorrecta' ListNotFound = 'la lista no se encuentra: %s' DEFAULT_MSG_FOOTER = """_______________________________________________ lista de distribucion %(real_name)s - %(real_name)s@%(host_name)s %(web_page_url)slistinfo/%(_internal_name)s """ --- END es.py --- To use the message catalog: import Catalog Msg = Catalog.MsgLang('es') print Msg.get('ErrorInvalidPasswd') Attached conversation with Dan Ohnesorg, who is interested in working in the project. ------ START -------- > > Acording with the article, there are many parts to consider: > - Character Sets > - Message Output > - Locales > - Character Input and display > - Documentation > > I think the areas we should consider are: > - Messages output to end user > - Character set Sure. I agree. > GNU gettext: > * advantages > - Easy to mantain, once parsed with 'xgettext', and compiled to .mo > file, with 'tupdate' is easy to update the catalog - new version of software can run with old catalogs and only some part of meesages is not translated - for developper of software is gettext clean to undestand a simple to include > * disadvantages > - A little complicated to generate. It must be, parsed, and > installed. It also > must be updated 'at hand' if catalog changes. > - At the moment, it is not fully operational for python It is the biggest problem. > - Take into account locales, mailman will be executed on the server, > language s a parameter in a form. Your software can switch locales indepently of server. For example in midnight commander are locales switched before parsing any output of sub processes > Catalog in lang.py > * disadvantages > - More difficult to mantain up to date. - More works for mailman developers > * advantages > - It's very easy to create messages we need (multilines) > - No need to be generated, once modified source files, it is ready > for use. Changes are in effect once saved the file. > - We can abstract inside lang.py operations we need for some > languages, whenever it gives the apropiate value to messages. > > I have given a glimpse to 'wstring' and 'intl' modules. I really don't > know how to use 'wstring' for our purpose. Please, if you know how to > use it, let me know too. I dont know how to use unicode in mail. I think it is not that what we now need. Unicode is fine in databses, printing etc, but mail with unicode charset is probably unredable by any client. intl module is probaly good. I will look on it and i will say more later. Your modules are working, but I am not sure, If they are acceptable for mailman developers. ---END--- -- ___ / F \ [[[]]]] ( O O ) #----------------0000--(_)--0000---------------# | Juan Carlos Rey Anaya (jcrey@uma.es) | | Servicio Central de informática | | Universidad de Málaga - Espaņa | #----------------------------------------------# # Solo se que cada vez se menos :-| # #----------------------------------------------# From rfrancis@dti.net Wed Jun 23 19:24:13 1999 From: rfrancis@dti.net (Rob Francis) Date: Wed, 23 Jun 1999 14:24:13 -0400 (EDT) Subject: [Mailman-Developers] Viewing anyone's options w/o a password Message-ID: It seems kind of odd to me that if I know someone's email address on a list that I can go to the Info page and enter their email address, and then w/o a password see what options they have set. Granted, I can't change the options, but why even let someone get to see the options a person has selected? Just wondering if this was a decision made on purpose, or perhaps an oversight. -rob rfrancis@dti.net From claw@varesearch.com Wed Jun 23 20:54:25 1999 From: claw@varesearch.com (J C Lawrence) Date: Wed, 23 Jun 1999 12:54:25 -0700 Subject: [Mailman-Developers] Cooki e problem with current CVS tree Message-ID: I just revved a 1.0rc1 installation to the current CVS tree. Cookies no longer track properly -- you are asked to re-authenticate on every page and nothing gets done. Known fix? -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From ricardo@miss-janet.com Wed Jun 23 21:13:31 1999 From: ricardo@miss-janet.com (Ricardo Kustner) Date: Wed, 23 Jun 1999 22:13:31 +0200 (CEST) Subject: [Mailman-Developers] config.db Message-ID: Hi, Yesterday i was looking where mailman stores the pending-for-moderation messages ... it took a while before I found out... cause i'd never suspect it to be inside config.db ? what's the philosophy on that... it seems kinda weird to keep it in the configuration database... Ricardo. -- From troy@akropolys.com Tue Jun 22 21:20:51 1999 From: troy@akropolys.com (Troy Morrison) Date: Tue, 22 Jun 1999 13:20:51 -0700 (PDT) Subject: [Mailman-Developers] config.db In-Reply-To: Message-ID: > Yesterday i was looking where mailman stores the pending-for-moderation > messages ... it took a while before I found out... cause i'd never suspect it > to be inside config.db ? what's the philosophy on that... it seems kinda weird > to keep it in the configuration database... How interesting... I did the exact same thing. Someone sent a 1MB message to the list (picture attached) and I wanted to extract the picture, shrink it, and then let it go through (the reduced picture was 50k, and we allow attachments up to 100k on the list). It would have been nice if there had been a "forward to:" option on the managment page that would send the message to me. (I know, I know, that's not generally what the listadmin would want to do, but I thought I'd put in my $0.02). As it was, I copied config.db to another file, hacked it into my mailbox, and was able to get at it that way, but it was kind of annoying :). Troy From ricardo@miss-janet.com Wed Jun 23 22:17:06 1999 From: ricardo@miss-janet.com (Ricardo Kustner) Date: Wed, 23 Jun 1999 23:17:06 +0200 (CEST) Subject: [Mailman-Developers] config.db In-Reply-To: Message-ID: Hi, On 22-Jun-99 Troy Morrison wrote: > How interesting... I did the exact same thing. Someone sent a 1MB message > to the list (picture attached) and I wanted to extract the picture, shrink > it, and then let it go through (the reduced picture was 50k, and we allow > attachments up to 100k on the list). It would have been nice if there had > been a "forward to:" option on the managment page that would send the > message to me. (I know, I know, that's not generally what the listadmin > would want to do, but I thought I'd put in my $0.02). Very interesting indeed :) i had the same thing yesterday so i'll add $0.02 to that. > As it was, I copied > config.db to another file, hacked it into my mailbox, and was able to get > at it that way, but it was kind of annoying :). I could find hacks for getting it out there too but that's quite a hassle and some of my moderators are windows users and they can't do neat things like us :) actually one weird thing with one of our moderators is that if she approves a lot of mail on the list in the admindb interface, it often happens that some of the fastcgi scripts on our erver crash (well, we all the the system load tends to go sky high with the current version of mailman :( ) and at the same time the windows PC of the moderator totally freezes up... the only connection i think of is that the mail is being delivered to the moderator's mailbox at the same time as Netscape Mail tries to check POP mail from there... but it's still kinda weird to me... oh well let's just blame it on windows ;) Ricardo. -- From claw@varesearch.com Wed Jun 23 22:43:27 1999 From: claw@varesearch.com (J C Lawrence) Date: Wed, 23 Jun 1999 14:43:27 -0700 Subject: [Mailman-Developers] Setting Reply-To Message-ID: A peculiar need: I need to set Reply-To on a list to something OTHER than the list address. Specifically I need to set Reply-To to the address of another list. Can do? -- J C Lawrence Home: claw@kanga.nu ---------(*) Linux/IA64 - Work: claw@varesearch.com ... Beware of cromagnons wearing chewing gum and palm pilots ... From lindsey@ncsa.uiuc.edu Wed Jun 23 22:57:49 1999 From: lindsey@ncsa.uiuc.edu (Christopher Lindsey) Date: Wed, 23 Jun 1999 16:57:49 -0500 (CDT) Subject: [Mailman-Developers] config.db In-Reply-To: from "Troy Morrison" at Jun 22, 99 01:20:51 pm Message-ID: <199906232157.QAA17665@ferret.ncsa.uiuc.edu> > How interesting... I did the exact same thing. Someone sent a 1MB message > to the list (picture attached) and I wanted to extract the picture, shrink > it, and then let it go through (the reduced picture was 50k, and we allow > attachments up to 100k on the list). It would have been nice if there had > been a "forward to:" option on the managment page that would send the > message to me. (I know, I know, that's not generally what the listadmin > would want to do, but I thought I'd put in my $0.02). As it was, I copied > config.db to another file, hacked it into my mailbox, and was able to get > at it that way, but it was kind of annoying :). Rupa Schomaker posted a patch to forward held messages to the listowner on May 30, 1999. I plan on adding an option (either personally or virtually through a co-worker :) to forward to another address entered via textbox -- this is useful when you've got multiple admins and don't want to spam them all with a held message. Anyhow, Rupa's patch should be in the mailman-users archive for May, 1999. Chris From gorgo@caesar.elte.hu Thu Jun 24 14:57:30 1999 From: gorgo@caesar.elte.hu (Gergely Madarasz) Date: Thu, 24 Jun 1999 15:57:30 +0200 (METDST) Subject: [Mailman-Developers] Re: Bug#40101: mailman: unexpected mailman error In-Reply-To: Message-ID: On Thu, 24 Jun 1999, Christoph Lameter wrote: > Package: mailman > Version: 1.0rc2-4 > Severity: normal > > Got this strange message send to me. Seems to be due to a cron job someone who is already subscribed tried to subscribe again. mailman should catch this exception and reply politely, I'm forwarding this upstream. > Date: Thu, 24 Jun 1999 06:39:05 -0700 > From: pptp-admin@opensource.captech.com > To: pptp-admin@opensource.captech.com > Subject: Unexpected Mailman error > > An unexpected Mailman error has occurred in > MailCommandHandler.ParseMailCommands(). Here is the traceback: > > Traceback (innermost last): > File "/var/lib/mailman/Mailman/MailCommandHandler.py", line 204, in ParseMailCommands > self.__dispatch[cmd](args, line, msg) > File "/var/lib/mailman/Mailman/MailCommandHandler.py", line 583, in ProcessConfirmCmd > self.ProcessConfirmation(cookie) > File "/var/lib/mailman/Mailman/MailList.py", line 1013, in ProcessConfirmation > self.ApprovedAddMember(email_addr, password, digest) > File "/var/lib/mailman/Mailman/MailList.py", line 905, in ApprovedAddMember > raise e, v > MMAlreadyAMember -- Madarasz Gergely gorgo@caesar.elte.hu gorgo@linux.rulez.org It's practically impossible to look at a penguin and feel angry. Egy pingvinre gyakorlatilag lehetetlen haragosan nezni. HuLUG: http://mlf.linux.rulez.org/ From klm@digicool.com Thu Jun 24 16:06:23 1999 From: klm@digicool.com (Ken Manheimer) Date: Thu, 24 Jun 1999 11:06:23 -0400 Subject: [Mailman-Developers] Re: Viewing anyone's options w/o a password References: <199906240500.BAA26239@python.org> Message-ID: <004b01bebe53$20898900$5a57a4d8@erols.com> On Wed, 23 Jun, Rob Francis wrote: > It seems kind of odd to me that if I know someone's email address on a > list that I can go to the Info page and enter their email address, and > then w/o a password see what options they have set. Granted, I can't > change the options, but why even let someone get to see the options a > person has selected? > > Just wondering if this was a decision made on purpose, or perhaps an > oversight. I'd actually say it's somewhere in between. Originally all the settings pages - admin and admindb, as well as the user options pages - were like the user options pages, not hidden behind a password. The others were moved behind the cookie wall, and i expect it would have been easy enough to hide the user options page, too, except that then you'd prevent users missing their password from getting at the "send me my password" option! Kinda defeats the purpose. The proper answer would be to make the user options page two tier, with the "send me my password" button in front of the cookie password, and the rest behind. Evidentally this extra elaboration was high enough effort to exceed the attention threshold available for the cookie-protection switchover, and nobody's revisited it since. And in truth, most of the telling information about the options is revealed on the roster page - the membership on the list, whether or not they're digest subscribers, and whether or not their delivery is disabled. There are many such rough edges - some for simple expediency, and some that would require more infrastructure to be properly addressed. (An example of the latter is holding messages for approval directly in the config.db - we should have at least a basic catalog mechanism in which the mailing lists can store and retrieve such messages. This would take yet more overhead effort than the simple accommodation we could make for cookies around the user options page...) Ken Manheimer klm@digicool.com From rfrancis@dti.net Thu Jun 24 16:52:23 1999 From: rfrancis@dti.net (Rob Francis) Date: Thu, 24 Jun 1999 11:52:23 -0400 (EDT) Subject: [Mailman-Developers] Re: Viewing anyone's options w/o a password In-Reply-To: <004b01bebe53$20898900$5a57a4d8@erols.com> Message-ID: > There are many such rough edges - some for simple expediency, and some that > would require more infrastructure to be properly addressed. (An example of > the latter is holding messages for approval directly in the config.db - we > should have at least a basic catalog mechanism in which the mailing lists > can store and retrieve such messages. This would take yet more overhead > effort than the simple accommodation we could make for cookies around the > user options page...) I kind of figured that was the case. Thanks for the very informative reply. I figured I'd at least get a vote in for moving all option type stuff behind a password. Seems to make sense to me, but hindsight, as they say, is 20/20. Thanks again, -rob From hebble@ncsa.uiuc.edu Thu Jun 24 22:54:31 1999 From: hebble@ncsa.uiuc.edu (Paul Hebble) Date: Thu, 24 Jun 1999 16:54:31 -0500 (CDT) Subject: [Mailman-Developers] Kerberos, AFS Patch Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---559023410-851401618-930261271=:13396 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello Mailman developers, Attached to this post please find a patch against the current Mailman CVS tree which adds support for Kerberos and AFS. Users who do not enable the Kerberos or AFS functionality will not experience any change in the functionality of their server vs. the current CVS tree. To enable support for Kerberos, first install Mailman on a system with a Kerberized httpd (such as Stronghold, or use mod_auth_kerb). You can then use the following configuration variables in mm_cfg.py to enable it: ADMIN_USERS = [] # A list of usernames which should be # considered site adminstrators when # authenticated via Kerberos. This is to # be used in place of the old "site admin # password" on a Kerberized server. KERBERIZED_SERVERS = [] # A list denoting which servers should be # considered Kerberized. Each entry # should consist of the preferred alias # for that machine concatenated with a ':' # and the port, to allow Kerberized and # non-Kerberized servers to co-exist on a # single machine. NONE_KERBERIZED = 0 # Boolean value which disables Kerberos on # all servers. This overrides # KERBERIZED_SERVERS. ALL_KERBERIZED = 0 # Boolean value to enable Kerberos on all # servers. This overrides NONE_KERBERIZED # and KERBERIZED_SERVERS. Of course there are some limitations to the Kerberos functionality. The Kerberized httpds I know of only support one Kerberos realm at a time. If you use Kerberos without SSL, you're crazy (your password will go in the clear). This patch has only been tested with Kerberos V5, but I see no reason it should not work with V4, because the httpd handles those differences anyway, I believe (you should upgrade to V5 anyway, though :). Kerberized servers should interoperate, including sharing lists, cleanly with non-Kerberized servers. Cookies and passwords (apart from Kerberos passwords) are now only used by non-Kerberized servers. In theory it should be possible to substitute other authentication methods in place of Kerberos, but this has not been tested. To enable support for AFS, use some or all of the following command-line arguments to `configure': --with-mail-preauth=COMMAND --with-mail-postauth=COMMAND --with-www-preauth=COMMAND --with-www-postauth=COMMAND --with-cron-preauth=COMMAND --with-cron-postauth=COMMAND These tell Mailman which commands to execute to get and destroy an AFS token before and after it performs mail-driven, web-based, and cron tasks. Different commands are available because your web server may have a different keytab file than your mail server, and who knows which server you might use to run the cron jobs. Of course non-AFS commands could be used instead, but this was added for AFS compatibility. As indicated by Christopher Lindsey in a previous post, we at NCSA are hoping to migrate to Mailman soon, and we need these changes to do so. We hope that this patch will be integrated into the main distribution so we don't have to maintain a parallel patch. Thank you for a useful product, and for reading all of that, -- Paul Hebble NCSA ---559023410-851401618-930261271=:13396 Content-Type: APPLICATION/octet-stream; name="patch-mailman.afs.kerberos.gz" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: H4sICCSVcjcAA3BhdGNoLW1haWxtYW4uYWZzLmtlcmJlcm9zAMxce3ebyJL/ 2/4UPcQZ5JGEhd5S4uw4tpPxHdvJsZ2Z3U1yNBi1JNYIdAHZ1s3ku29VNaAG gYQfdzfOOZEE1dXdVdW/enTD0BqNWPXcm7Nqld+b9nzI9w//uJR+nRk3fGTZ XLpkeq4TGNea5UgXp9OBORprs4U2tPxAuvELXDOl39ovWjCdyexcZ2SNtV/Y 1LDsqeHsnYWfh2NrzxhOLQc4RDer54eXB5kU29VqdS2LrTPXYf+YO0xvslqv X2v0mzWm93q97XK5vJn/1tWcU/N6nel6v97utxqi+a+/smq9Xq90WFl8/Prr Nsv+U5jhsLljDG+5F1g+HzIbpFVh7ow7zGCfLk6Zb00t2/BY4LJgYvlKHqty 3o2SwlyHV9j1PGB3VjABvuqeCh0PgSFnL33skjnGlDNjBv0O+VB7PXujbFdz GL5kpRL3PNcjHgoy8azxJGDKLoOLirK7u10u1nal3UMnp7D33OGeYZPgmOWM XG9qBBao1gTRXnM2cufQkwG9VPKYnFrOTUkRgkAOL30FB6pqGsjpF/YpsGxf e8+Dc473x6f8ltul3YpQdK9FiqYPWdE4ELbP3sFHyfYDbH/BbRjaLb80PWsW gHJLKlmTGk186JrawXB4EvBpCdvDZaEFawTTCfjY9RZsf5+pYzFptS8EnXeb hOy4AcMBfPL579y75p7rl3b7y4ECzczw/ak/huEqYC//5c5JeObEcMacLdy5 x5DizvXIZDwwpsB1td3QFrnt81x+CkmpUSMpiQ+U0nYso3jC70hzH2aoPP+S m/hZiqZVwSns/p/IIzGoQ+4E3AvH9jEUwmUwH41KuzSc1SYKLp7d7eGPDqV8 CGAQTO21aCoR5QKqRLN1NZkLTAUobfZbrX6jXQBTZQ5/AggSrDaIQ6Nf7y1h tVOvtFkZ/tf1eLG9EB+/XZ2dCjWBwrQTxwr+MDy/hGsa9RTZBf5Oq768BXqb wdrkg6ERGGC2yd9l9gVokEGppN5Aw0GEFBqOWq0wNUIhvIjmwCL+bO5zz1cB LUIOgoErzDxuH5p9sukn0RTQVEwRh88dmtIAO9plb5guWW48agLzfRYTfta/ JuyblSLSChOMwOASc+6TuPVaA5etXutK4BZ4C6lPc2xFQoOv2juL27A+XM8Y 85IE5+HQI2rthi9A9CD7hJMBKlydMdXE8AdAGcLk7E7d7Sc9y+YGyyWfofi0 I2CI2Oox+qc+QxiczmHB+fPZzF6QsyS2Ehi6DE2Xke2qq+xkPEca4Zy037gx BFBp5DqkvD+Jx0lg2JZZEmrSKdjQ9U4F1l1WtCEPRH098d6oKVebwvDoj3Sd GQeQOA8RX7zpAUolAsdYx59jJXzVbg17zsGOt2gNIDyvVfHW1tZT+IvJrOei piUQ/R2S10M0KYlYLOqvklxfFRRqBg/AXj4LGBmRr52dvTWGUafCsLK7lS3v xDFdzwMPmLI3MDFSd1uou1OrdGNtZ4UOdCNqPAC/YiMqSEZ0hZdgmVZXCZHZ hXtX+qweowfcZP19tRJDbN5qK289uQu2RRqWphDJ9q17L9nQ192syS87/HMC 8TUENszwOIjO4eCbbiC0C2MeX9M0QOWM7i7n11MreDsPAghOVJ9+IX6L66Hx +DSAHz4AgLEObY6uyF8bAyTpcsOAJBllV2eQt6D77vQhQ2q2CkQCKSZyjlXr t2p9XcqxIOSGMKCMH00pqAQLpHgsQhZl7oCeFBnuIb3yRJIAEeonvO1DSH7N pZwntOMUp9mdIrugfKLibuejZzmQGfhzO/BLSux0xpAnpENvl82XY9VEmLnE nVUEz0bv2R3MGof8mYYagifC5arkwvkKWM1vGANuTKZmeMMo+grxGKObGI4x SqpA0yynjH/U8IjbPOBnfAqSDFsod/yamdOhkvZnKRQ+hfbnLsjZGC7C2KYu zEevdyP7yf1TQZPWyBKJsQq5IXYeIyy3VwTnYpqEqlLkECfLXNSYNBXebCZ+ so35M25ao0XSzLRHGdUGxZLVJEYv++y0+FZkIgzrSX0kTHQDp5XYYL01rZhL UtxX4NZEccJn5hz8uhNANEm6nTuU5Rq2tsl+obcDYfhhECECgZYIBPSsuA+t IylWh9+hQDeRodNAurQVPUXzGzX+CE0/p4aXbciDZzQpHquL4QlhhwN8QKQv Woc6iOdHpaZaE/VcruuNCvjBtYhFfzhw8KThBMIo4sjyMRYCLAUP4y3kmht0 anJIYvfZmAfQMZkCXoEIJ5PXobh9KXwSpbDLGg3+ZTrIoTUu4kdDsqejnEjf jIQjDWtbURouL79VMy9kjjRc2SDDiSXtXFAJS38829jUH2LmaUg5sD3EryML AtaAD1PCRGFtbPvJGcatf/hwN67ZrIt1JaLcQFei2bo0AohyFxig1lr9Wrtf 6xWIcmUOUr2r1us3mv16Zxni6l2R6sGHhPAehzTU5FPwJP5n9fV0WoXlABlU VZjzG/VrWPzRREHsgu6KEhNcQUMpxdHLC3bkUurF72eG4wOJJqxfziiJ2UfD 8/mVMfZLarr+JY8oqv6vzQSfyjxaAev4ZFbqUsyiJBmhg2YsJEbi+eEtOkKv dQa9pMm15yVJRtJWpHwrMUhtitX7Ndma9TY6rjJ+1vWEA1N9HggskbLps8Uy oc6zfCkjql5TWi7Mv7TkPZWWQpS5UzPsSsr+sNJaze5FDK06u6teu/eiA5nr JYfAjlMJIgT4PEbUbxE+83VcXHtYhIe7jgfEJ1UE+Y1coqgxh48pvE8xXlFo mTsxjN6rvhRP+ImJlpaOOW/OcuqQRKJpNhQ9h7azuDxQ1VksHqTnLAYPVnIW k8dpOHM+G9Ur4psH6DZyBIW0qKoFNZVDmNZHDtmq1HMIsyWb1/kG4UUll2It RemyEFbGYlfXpzEqpsVsumDUgCX6Q32RC2g2Ki3wAC09rF2/5tM3L/3Xe/Ch qSrWVswZBq+ZW8sZEjR8Xp15HFrc8mEVW8bSWIlipukIIbULtyaKycGOp3LP CmNW+GRtGKbDmJwg5ocPYUTgujaCiUlyA5iYgsKPgxnELx1Wh/Cj0W/UC8Qv y/bRkSCITiB8aXT6za4cvjQrPYxempVG5r6LtE/wFqACD7rgKYiXzPDGsZY8 Hsw9B9thoiz9+6F1dcRHBubVuZqSCDL1JN2Pg0S9hSmP3u43NiVNidbhEYN6 Exj0a/V+Uz531W3jCQH8CBOmsN5xZk15jCP7rIt5j8hdPZ+5jr3YZhnVDKDU 23h64ODo7OR88Ony+OISrn3+CldOTwe/H1+8Pb44+e/jI7hY2y6ffzg/Xrm4 /D2A5n/EHCD1OD25vBocHVwdDI5OLrb2mQsTNIKJ9j+u5ZQ+Xhy/O/lPCFER DygCxk3JtZSz+bVtmQPCiB988ZNbt4LFmeEY4zUIsEqXaV6rZMujKB1cy81O nIrkWlkWk+QGVD1xGqXeFbYWHo6wpjPXC8CM3BuLb7OR507Z3LNniOTRzeh3 TC1Eu10Of3p8DH4TbeMFu3p71MeiMR77owz9GsyV2a4ptq7wHAde9a2Ax7Wt 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 hxIlEoJSFy9P/+PkOiWvMuOLw4/3lgG2vOBTB6j+MYpdtL0Iz9bRDi9YoNjg sNueWbNFIqLpQUuzAl4ctcrBKGMdDJVMUEuhEjwfflygCwkRiUmcXs0UMP+u CNEYRKtU5FTKIUhOOOeBZMcKmIBYptdl5cjZZGGaRtCjEqRpFCBGzFUukdeM cIuiRLIk6UjXyCtGmJN0tHsU2GH5/nYaZDIteqgYEaUyJwRGkYNOt9W86Z8f hqttpxnLgcpv5Kp09Zx94gcQHJzvlYtx6C8//5IC0rFAjM37IoZJmchzyhJx sRo0J5GQErCRV43ioyhaz0hecwNOCgyTsdLrj8xLsP4hZvKKYW7yyrHs5OU+ P/mLZzJUyppMws5SPujPI+CsZKZUUWWlXLCKkVBvI4WU6q9lolyXk+D29jag jVIlmX1SxQjmSaXIOunxSxi3gSKWCtGJESqg9ayLVEOlZC3zNlFCuUEy9gVU kFJa1UC5WoiD8fonF3s8/DLtkzOBEzFRi0lYVQCtZKJcMxBYyyWrmIgVN1JB ucFaJiqVOSF8HkVUAUYdd9vXAS2V6/hdoDDk2mJyL72lMluug8yWnyOYvaVg oFYnByQl+ptUJDZR7NDMXSSkBEIRqdpq0Xqx2ES5lRYJBSOg3ozQqn4rFWOE xwPjSc9KGBHyIwzFSgGSzIXyIl6EBBopEJvAl3wh8kbMbDfLdDJ0DMyVhaEw TQ0dDfAkcTorv3DY7WrAB8fCmQv3yZ3ad9vEtNdkuSCIRIOfctAoea1jhjql clRijN8iwZw9Vh6IVl8+Yw81Y3Mr6Gogy6CAQUkhKrMCepQstSL3nvTo1iNy T6/8wQlgLjCDgbtYDtkiDJvMvLfnFhspj61HXIZZ2HQ7Pz90z09yxk9MJyN+ m9/o3vAJurN7QIbW1H7cI+R9jo/8WD5uoVSteFN2B94JD3Rxf02yB4AovXC2 R6FU+yYJJrgFEMa2jj+4fU/lhopfhKzhEmdKXucpaYVMoUJPMKziHyJHkPKC 3mAzB9bNnQnmVHCpoKkfXHNRS4cu6KU9+mRh1hAaTFROEhBfRWGYFmPb7PQN QEmiqCUtOMMQghKjsLoW9DHRLSnO/PCsweXFUY+u7IK5x79BK/EXfxLtWJtE ylfSqpHKp2t6IuXzXtcZ9nv3jW3c6cDTnci/tnm3di7bZ4OT1tHNWYak/h2X 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 BgRybM0AAA== ---559023410-851401618-930261271=:13396-- From che@debian.org Sat Jun 26 00:02:19 1999 From: che@debian.org (Ben Gertzfield) Date: 25 Jun 1999 16:02:19 -0700 Subject: [Mailman-Developers] Bug in GatewayManager.py, 1.0rc2 Message-ID: I'm not subscribed to this list, so please Cc: me on any replies. I hope this is the right place to send bug reports. Anyway, the bug looks like a think-o in GatewayManager.py: == 8< cut here 8< == Bug in Mailman version 1.0rc2 We're sorry, we hit a bug! If you would like to help us identify the problem, please email a copy of this page to the webmaster for this site with a description of what happened. Thanks! Traceback: Traceback (innermost last): File "/var/lib/mailman/scripts/driver", line 112, in run_main main() File "/usr/lib/mailman/Mailman/Cgi/admindb.py", line 112, in main HandleRequests(doc) File "/usr/lib/mailman/Mailman/Cgi/admindb.py", line 200, in HandleRequests list.HandleRequest(request, v, form[comment_key].value) File "/usr/lib/mailman/Mailman/ListAdmin.py", line 122, in HandleRequest self.HandlePostRequest(request_data[2:], value, comment) File "/usr/lib/mailman/Mailman/ListAdmin.py", line 131, in HandlePostRequest self.Post(msg, 1) File "/usr/lib/mailman/Mailman/MailList.py", line 1285, in Post self.SendMailToNewsGroup(msg) File "/usr/lib/mailman/Mailman/GatewayManager.py", line 143, in SendMailToNewsGroup msg.SetHeader('Subject', '%s(no subject)' % prefix) NameError: prefix ------------------------------------------------------------------------ Environment variables: Variable Value DOCUMENT_ROOT /var/www/sluglug UNIQUE_ID N3QIwYByMfAAAC2oPIw HTTP_ACCEPT_ENCODINGgzip CONTENT_LENGTH 315 CONTENT_TYPE application/x-www-form-urlencoded PATH_TRANSLATED /var/www/sluglug/sluglug REMOTE_ADDR 198.4.83.36 GATEWAY_INTERFACE CGI/1.1 HTTP_COOKIE sluglug:admin="(lp0\012S'198.4.83.36'\012p1\012aI930351160\012aI930361960\012aI-1683555072\012a." SERVER_PROTOCOL HTTP/1.0 HTTP_ACCEPT_LANGUAGEen REMOTE_PORT 4012 SERVER_PORT 80 HTTP_CONNECTION Keep-Alive HTTP_USER_AGENT Mozilla/4.5 [en] (X11; I; Linux 2.2.10 i586) HTTP_ACCEPT_CHARSET iso-8859-1,*,utf-8 HTTP_ACCEPT image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* REQUEST_URI /mailman/admindb/sluglug PATH /bin:/usr/bin:/sbin:/usr/sbin QUERY_STRING SCRIPT_FILENAME /usr/lib/mailman/cgi-bin/admindb PATH_INFO /sluglug HTTP_HOST sluglug.ucsc.edu REQUEST_METHOD POST SERVER_SIGNATURE SCRIPT_NAME /mailman/admindb SERVER_ADMIN ben@cse.ucsc.edu SERVER_SOFTWARE Apache/1.3.3 (Unix) Debian/GNU PYTHONPATH /var/lib/mailman HTTP_REFERER http://sluglug.ucsc.edu/mailman/admindb/sluglug SERVER_NAME sluglug.ucsc.edu Content-type: text/html Database Updated... ------------------------------------------------------------------------ Administrative requests for 'Sluglug' mailing list View or edit the list configuration information There are no pending requests. ------------------------------------------------------------------------ Sluglug list run by che@debian.org [Delivered by Mailman] v 1.0rc2 == 8< cut here 8< == Here's a patch that might fix this. I'm not sure, but at a quick glance this might solve the problem: --- GatewayManager.py.orig Fri Jun 25 15:56:06 1999 +++ GatewayManager.py Fri Jun 25 15:56:52 1999 @@ -140,7 +140,7 @@ if not re.match('(re:? *)?' + re.escape(subjpref), subj, re.I): msg.SetHeader('Subject', '%s%s' % (subjpref, subj)) else: - msg.SetHeader('Subject', '%s(no subject)' % prefix) + msg.SetHeader('Subject', '%s(no subject)' % subjpref) if self.reply_goes_to_list: del msg['reply-to'] msg.headers.append('Reply-To: %s\n' % self.GetListEmail()) Ben Gertzfield -- Brought to you by the letters S and D and the number 2. "Sculch is junk." Debian GNU/Linux maintainer of Gimp and GTK+ -- http://www.debian.org/ From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Sun Jun 27 22:27:27 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Sun, 27 Jun 1999 17:27:27 -0400 (EDT) Subject: [Mailman-Developers] forwarded message from David Thiessen Message-ID: <14198.38719.23553.585277@anthem.cnri.reston.va.us> --xVf5QvoNib Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Resending to the list since I just got back from vacation and am too swamped to look at this right now... -Barry --xVf5QvoNib Content-Type: message/rfc822 Content-Description: forwarded message Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_72982e8a_72b50c1b$3f22a4" Received: from cnri.reston.va.us (ns.cnri.reston.va.us [132.151.1.1]) by newcnri.cnri.reston.va.us (8.9.1a/8.9.1) with SMTP id WAA03151 for ; Wed, 23 Jun 1999 22:26:08 -0400 (EDT) Received: from python.org (parrot [132.151.1.90]) by cnri.reston.va.us (8.9.1a/8.9.1) with ESMTP id WAA26351 for ; Wed, 23 Jun 1999 22:26:05 -0400 (EDT) Received: from hotmail.com (law2-f101.hotmail.com [216.32.181.101]) by python.org (8.9.1a/8.9.1) with SMTP id WAA24477 for ; Wed, 23 Jun 1999 22:25:49 -0400 (EDT) Received: (qmail 55590 invoked by uid 0); 24 Jun 1999 02:25:13 -0000 Received: from 203.61.155.3 by www.hotmail.com with HTTP; Wed, 23 Jun 1999 19:25:10 PDT Message-ID: <19990624022513.55589.qmail@hotmail.com> From: David Thiessen To: bwarsaw@python.org Subject: Documentation for Mailman Date: Thu, 24 Jun 1999 12:25:10 EST X-Originating-IP: [203.61.155.3] This is a multi-part message in MIME format. ------=_NextPart_000_72982e8a_72b50c1b$3f22a4 Content-Type: text/plain; format=flowed To whom it may concern: I have recently installed Mailman on a system where I work and I have found it to be a fantastic software package. But to use it here, the people need documentation and so I have written some. I was not quite sure where to send it, so I grabbed your email address. It is just a general users guide that I needed and thought you may be able to use. Please do with it what you wish. It is not 100% of the way there, but as I said, I thought it might help. It has been written using MS Word 97 (apologies), so if there are any problems reading it or if you would like me to do some changes to it, just drop me a note. And to repeat myself one more time, Mailman is a fantastic program which I hope the use of will continue to expand. If it is successful where I work, you may be able to add the company name to your current users list - and trust me it will look good. By the way, when is the date for a final release. Regards, David Thiessen ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com ------=_NextPart_000_72982e8a_72b50c1b$3f22a4 Content-Type: application/msword; name="Mailman Documentation.doc" Content-Disposition: attachment; filename="Mailman Documentation.doc" Content-Transfer-Encoding: base64 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAC AAAAxwAAAAAAAAAAEAAAyQAAAAEAAAD+////AAAAAMUAAADGAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////////spcEAWQAJBAAACBK/AAAAAAAAEAAAAAAABAAA 64wAAA4AYmpiavNX81cAAAAAAAAAAAAAAAAAAAAAAAAJBBYAHsgAAJE9AQCR PQEA2ogAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAAAAAA AAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAF0AAAAAADoEAAAA AAAAOgQAADoEAAAAAAAAOgQAAAAAAAA6BAAAAAAAADoEAAAAAAAAOgQAABQA AAAAAAAAAAAAAE4EAAAAAAAATgQAAAAAAABOBAAAAAAAAE4EAAA4AAAAhgQA ABwAAACiBAAApAAAAE4EAAAAAAAAAiIAACoBAAB6BQAAJAEAAJ4GAAAWAAAA tAYAAAAAAAC0BgAAAAAAALQGAAAAAAAAtAYAAKoBAABeCAAAfAAAANoIAABA AAAAxyEAAAIAAADJIQAAAAAAAMkhAAAAAAAAySEAAAAAAADJIQAAAAAAAMkh AAAAAAAAySEAACQAAAAsIwAA9AEAACAlAACKAAAA7SEAABUAAAAAAAAAAAAA AAAAAAAAAAAAOgQAAAAAAAAaCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BgAA AAAAALQGAAAAAAAAGgkAAAAAAAAaCQAAAAAAAO0hAAAAAAAAFhIAAAAAAAA6 BAAAAAAAADoEAAAAAAAAtAYAAAAAAAAAAAAAAAAAALQGAAAAAAAAegUAAAAA AAAWEgAAAAAAABYSAAAAAAAAFhIAAAAAAAAaCQAAnAQAADoEAAAAAAAAtAYA AAAAAAA6BAAAAAAAALQGAAAAAAAAxyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA TgQAAAAAAABOBAAAAAAAADoEAAAAAAAAOgQAAAAAAAA6BAAAAAAAADoEAAAA AAAAGgkAAAAAAADHIQAAAAAAABYSAAAeBgAAFhIAAAAAAAA0GAAAhgIAALcf AADQAQAAOgQAAAAAAAA6BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuyEAAAwAAAC0BgAA AAAAAEYFAAA0AAAA4GTJvee9vgFOBAAAAAAAAE4EAAAAAAAAtg0AAGAEAACH IQAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAADU1haWxtYW4gVXNlciBNYW51YWwNDQ0BDQ0NDQ0NDQ0NRWRpdGVk IGJ5DURhdmlkIFRoaWVzc2VuDQ0NDQ0NDVRhYmxlIG9mIENvbnRlbnRzOg0N EyBUT0MgXG8gIjEtMiIgFA1JbnRyb2R1Y3Rpb24JEyBQQUdFUkVGIF9Ub2M0 NTQ4NTkzNDUgXGggARQzFQ1TdWJzY3JpcHRpb24JEyBQQUdFUkVGIF9Ub2M0 NTQ4NTkzNDYgXGggARQzFQ1TdWJzY3JpcHRpb24gUGFnZQkTIFBBR0VSRUYg X1RvYzQ1NDg1OTM0NyBcaCABFDMVDVN1YnNjcmlwdGlvbiBDb25mb3JtYXRp b24JEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNDggXGggARQ0FQ1WaWV3aW5nIFN1 YnNjcmliZXJzIExpc3QJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNDkgXGggARQ1 FQ1TdWJzY3JpYmVyIE9wdGlvbnMJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNTAg XGggARQ1FQ1BZG1pbmlzdHJhdGlvbgkTIFBBR0VSRUYgX1RvYzQ1NDg1OTM1 MSBcaCABFDYVDUdlbmVyYWwgT3B0aW9ucwkTIFBBR0VSRUYgX1RvYzQ1NDg1 OTM1MiBcaCABFDcVDU1lbWJlcnNoaXAgTWFuYWdlbWVudAkTIFBBR0VSRUYg X1RvYzQ1NDg1OTM1MyBcaCABFDExFQ1Qcml2YWN5IE9wdGlvbnMJEyBQQUdF UkVGIF9Ub2M0NTQ4NTkzNTQgXGggARQxMhUNUmVndWxhci1tZW1iZXIgKG5v bi1kaWdlc3QpIE9wdGlvbnMJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNTUgXGgg ARQxNRUNRGlnZXN0LW1lbWJlciBPcHRpb25zCRMgUEFHRVJFRiBfVG9jNDU0 ODU5MzU2IFxoIAEUMTYVDUJvdW5jZSBPcHRpb25zCRMgUEFHRVJFRiBfVG9j NDU0ODU5MzU3IFxoIAEUMTgVDUFyY2hpdmFsIE9wdGlvbnMJEyBQQUdFUkVG IF9Ub2M0NTQ4NTkzNTggXGggARQxOBUNTWFpbC1OZXdzIGFuZCBOZXdzLU1h aWwgZ2F0ZXdheXMJEyBQQUdFUkVGIF9Ub2M0NTQ4NTkzNTkgXGggARQxORUN FQ0MSW50cm9kdWN0aW9uDQ1UaGUgTWFpbG1hbiBwcm9ncmFtIGlzIGEgd2Vi IGJhc2VkIG1haWxpbmcgbGlzdCB1dGlsaXR5IHRoYXQgYWxsb3dzIGRpc2N1 c3Npb24gZ3JvdXBzIHRvIGJlIHNldCB1cCB3aXRoIG9ubGluZSBhY2Nlc3Mu IE1haWxtYW4gaGFzIGFsbCBvZiB0aGUgZmVhdHVyZXMgeW91IGV4cGVjdCBm cm9tIHN1Y2ggYSBwcm9kdWN0LCBwbHVzIGludGVncmF0ZWQgc3VwcG9ydCBm b3IgdGhlIHdlYiAoaW5jbHVkaW5nIHdlYiBiYXNlZCBhcmNoaXZpbmcpLCBh dXRvbWF0ZWQgYm91bmNlIGhhbmRsaW5nIGFuZCBpbnRlZ3JhdGVkIHNwYW0g cHJldmVudGlvbi4gVW5saWtlIG1vc3Qgc2ltaWxhciBwcm9kdWN0cywgTWFp bG1hbiBnaXZlcyBlYWNoIG1haWxpbmcgbGlzdCBhIHdlYiBwYWdlIGFuZCBh bGxvd3MgdXNlcnMgdG8gc3Vic2NyaWJlLCB1bnN1YnNjcmliZSBhbmQgc2V0 IG9wdGlvbnMgb3ZlciB0aGUgd2ViLiBFdmVuIHRoZSBsaXN0IG1hbmFnZXIg Y2FuIGFkbWluaXN0ZXIgaGlzIG9yIGhlciBsaXN0IGVudGlyZWx5IGZyb20g dGhlIHdlYi4gTWFpbG1hbiBhbHNvIGludGVncmF0ZXMgbW9zdCBmdW5jdGlv bnMgcGVvcGxlIHdhbnQgdG8gZG8gd2l0aCBtYWlsaW5nIGxpc3RzLCBpbmNs dWRpbmcgYXJjaGl2aW5nLCBtYWlsLXRvLW5ld3MgZ2F0ZXdheXMsIGFuZCBh dXRvbWF0aWMgd2ViIHBhZ2UgY3JlYXRpb24gZm9yIG5ldyBtYWlsaW5nIGxp c3RzLiBTdWJzY3JpcHRpb24gdG8gam9pbiBhIG1haWxpbmcgbGlzdCBpcyBz aW1wbHkgZG9uZSBieSBjaG9vc2luZyB0aGUgbGlzdCB5b3Ugd291bGQgbGlr ZSB0byBzdWJzY3JpYmUgdG8gYW5kIHRoZW4gYWRkaW5nIHlvdXIgZS1tYWls IHRvIHRoZSBsaXN0LiBBZG1pbmlzdHJhdGlvbiBvZiB0aGUgbWFpbGluZyBs aXN0IGlzIGFsc28gd2ViIGJhc2VkIGFuZCB0aGVyZWZvcmUgbWVhbnMgdGhh dCBsaXN0IGNhbiBiZSBhZG1pbmlzdGVyZWQgZnJvbSBhbnkgbG9jYXRpb24g d2l0aCBpbnRlcm5ldCBhY2Nlc3MgdG8gbWFpbGluZyBsaXN0IHdlYiBwYWdl Lg1NYWlsbWFuIGlzIGZyZWUgc29mdHdhcmUuIEl0IGlzIGRpc3RyaWJ1dGVk IHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4NDQ0NU3Vi c2NyaXB0aW9uDQ1TdWJzY3JpcHRpb24gUGFnZQ0NU3Vic2NyaXB0aW9uIHRv IG1haWxpbmcgbGlzdCBpcyBzaW1wbHkgYWNoaWV2ZWQgYnkgZ29pbmcgdG8g dGhlIFVSTCB3aGVyZSB0aGUgTWFpbG1hbiBwcm9ncmFtIGlzIGxvY2F0ZWQg YW5kIHRoZW4gY2hvb3NpbmcgZnJvbSB0aGUgYXZhaWxhYmxlIGxpc3RzIHRv IGpvaW4uIFRoaXMgkUxpc3RpbmZvkiBwYWdlIGRpc3BsYXlzIHRoZSBsaXN0 IG9mIGF2YWlsYWJsZSBtYWlsaW5nIGxpc3RzIHdoaWNoIGFyZSBzaG93biBp biBhbHBoYWJldGljIG9yZGVyIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxpc3Qg Zm9sbG93ZWQgYnkgYSBvbmUtbGluZSBkZXNjcmlwdGlvbi4gRnVydGhlciBp bmZvcm1hdGlvbiBvbiBhIHBhcnRpY3VsYXIgbWFpbGluZyBsaXN0IG9yIHN1 YnNjcmlwdGlvbiB0byBhIGxpc3QgY2FuIGJlIGZvdW5kIGJ5IHNlbGVjdGlu ZyB0aGUgbmFtZSBvZiB0aGUgbWFpbGluZyBsaXN0IGRlc2lyZWQuDQ1PbmNl IGEgbWFpbGluZyBsaXN0IGlzIHNlbGVjdGVkIGZyb20gdGhlIExpc3RpbmZv IHBhZ2UsIHVzZXJzIGNhbiBnZXQgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgbGlzdCBvbiBhIGxpc3Qgc3VtbWFyeSBwYWdlLiBUaGlzIHBhZ2Ug aW5jbHVkZXMgYSBzaG9ydCBibHVyYiBvbiB0aGUgbGlzdCBpdHNlbGYsIHN1 Y2ggYXMgdGhlIG1haW4gdG9waWMgb2YgZGlzY3Vzc2lvbiBvZiB0aGUgbWFp bGluZyBsaXN0LCB0YXJnZXQgYXVkaWVuY2UsIGFwcHJveGltYXRlIGZyZXF1 ZW5jeSBvZiBvZmZpY2lhbCBtYWlsLW91dHMgYW5kIGV4YW1wbGVzIG9mIHRo ZSB0eXBlIG9mIGNvbnRlbnQgb25lIGNhbiBleHBlY3QgZnJvbSB0aGVpciBz dWJzY3JpcHRpb24uIFRoZSB3ZWIgcGFnZSBhbHNvIGluY2x1ZGVzIGluZm9y bWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yIG9m IGEgbGlzdCBpZiB5b3UgaGF2ZSBhIHBhcnRpY3VsYXIgcXVlc3Rpb24gYXMg d2VsbCBhcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYWN0dWFsbHkgc3Vic2Ny aWJlIHRvIHRoZSBtYWlsaW5nIGxpc3QuDQ1TdWJzY3JpcHRpb24gdG8gYSBs aXN0IGlzIGEgdmVyeSBzaW1wbGUgdGFzayBvZiBlbnRlcmluZyBhIGRlc3Rp bmF0aW9uIGVtYWlsIGFkZHJlc3MgYW5kIHBhc3N3b3JkIHRvIGFzc29jaWF0 ZSB3aXRoIHRoaXMgYWRkcmVzcy4gVXNlcnMgY2FuIGFsc28gY2hvb3NlIHRv IHJlY2VpdmUgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbGluZyBsaXN0IGluIGEg ZGlnZXN0IGZvcm0uIFRoaXMgYmFzaWNhbGx5IG1lYW5zIHRoYXQgaW5zdGVh ZCBvZiByZWNlaXZpbmcgZXZlcnkgbWVzc2FnZSBzZW50IGZyb20gdGhlIG1h aWxpbmcgbGlzdCBzZXBhcmF0ZWx5IHRoZXkgd2lsbCBiZSBidW5kbGVkIHRv Z2V0aGVyIGFuZCBzZW50IG91dCB0byB5b3UgaW4gZGFpbHkuIFRoZSBtZXNz YWdlcyByZWNlaXZlZCBieSB0aGUgbGlzdCBvdmVyIGEgc2V0IHBlcmlvZCBv ZiB0aW1lIGFyZSBjb21iaW5lZCBpbnRvIG9uZSBtZXNzYWdlIGFuZCBzZW50 IHRvIHRoZSB1c2VyIGluIHRoaXMgZm9ybWF0Lg0NVGhlIG90aGVyIGZhY2ls aXR5IHdoaWNoIGlzIGF2YWlsYWJsZSB0byB1c2VycyB3aG8gYXJlIGFscmVh ZHkgbWVtYmVycyBvZiBhIHNwZWNpZmljIG1haWxpbmcgbGlzdCwgaXMgdGhh dCB0aGV5IGNhbiBjaGFuZ2UgY2VydGFpbiBvcHRpb25zIGZvciBhIHNwZWNp ZmljIG1haWxpbmcgbGlzdC4gVGhpcyBpcyBhY2hlaXZlZCB2aWEgdGhlaXIg ZGV0YWlscyBwYWdlIHdoaWNoIGlzIGFjY2Vzc2libGUgYnkgZWl0aGVyIHNl bGVjdGluZyB0aGVpciBuYW1lIGZyb20gdGhlIHN1YnNjcmliZXIgbGlzdCBh dmFpbGFibGUgYnkgcHJlc3Npbmcgk1ZpZXcgU3Vic2NyaWJlciBMaXN0lCBv ciBhbHRlcm5hdGl2ZWx5IGJ5IGVudGVyaW5nIGluIHRoZWlyIGVtYWlsIGFk ZHJlc3MgYW5kIHByZXNzaW5nIJNFZGl0IE9wdGlvbnOULg0NDVN1YnNjcmlw dGlvbiBDb25mb3JtYXRpb24NDU9uY2UgYW4gZW1haWwgYWRkcmVzcyBhbmQg cGFzc3dvcmQgaGFzIGJlZW4gZW50ZXJlZCwgYW4gZW1haWwgaXMgc2VudCB0 byB0aGUgYWRkcmVzcyBnaXZlbi4gVGhpcyBpcyBhIGNvbmZvcm1hdGlvbiBl bWFpbCB0aGF0IHN0b3BzIHVzZXJzIHN1YnNjcmliaW5nIG90aGVyIHBlb3Bs ZSB3aXRob3V0IHRoZWlyIGtub3dsZWRnZSB0byBhIG1haWxpbmcgbGlzdC4g SXQgaXMgYWxzbyB1c2VmdWwgaWYgdGhlIGluY29ycmVjdCBlbWFpbCBhZGRy ZXNzIGhhcyBiZWVuIHR5cGVkLiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFp bCBpbmNsdWRlIHRoZSBJUCBhZGRyZXNzIHRoZSBjb21wdXRlciB3aGVyZSB0 aGUgc3Vic2NyaXB0aW9uIHdhcyBpbml0aWF0ZWQsIHRoZSBlbWFpbCBhZGRy ZXNzIHNwZWNpZmllZCwgdGhlIGxpc3Qgc3Vic2NyaWJlZCB0byBhbmQgaW5z dHJ1Y3Rpb25zIG9uIGhvdyB0byBjb25maXJtIHlvdXIgc3Vic2NyaXB0aW9u Lg0NVGhlIGFjdHVhbCBjb25mb3JtYXRpb24gb2YgdGhlIHN1YnNjcmlwdGlv biBpcyBjb21wbGV0ZWQgYnkgc2ltcGx5IHJlcGx5aW5nIHRoZSBlbWFpbCBy ZWNlaXZlZC4gU3BlY2lmaWMgZGV0YWlscyBmb3IgdGhlIHJlcGx5IGFyZSBn aXZlbiBpbiB0aGUgbWVzc2FnZS4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHNp bXBseSBzZWxlY3QgkVJlcGx5kiBpbiB5b3VyIGVtYWlsIHByb2dyYW0gYW5k IHNlbmRpbmcgaXQgd2l0aG91dCBhbnkgY2hhbmdlcyB0byB0aGUgY29udGVu dCBvZiB0aGUgbWFpbC4gT3RoZXJ3aXNlIGl0IGlzIHNpbXBseSBhIGNhc2Ug b2YgcmVwbHlpbmcgdG8gdGhlIGNvcnJlY3QgYWRkcmVzcyB3aXRoIJFjb25m aXJtkiBhcyB3ZWxsIGFzIHRoZSByZXF1ZXN0IG51bWJlciBnaXZlbiBpbiB0 aGUgkVN1YmplY3Q6kiBhcmVhIG9mIHlvdXIgcmVwbHkuIEZvciBleGFtcGxl IJFjb25maXJtIDkxMzQ1MpIuDQ1UaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1w bGUgb2YgdGhlIHR5cGUgb2YgZW1haWwgdGhhdCBtYXkgYmUgcmVjZWl2ZWQg cmVxdWVzdGluZyBjb25maXJtYXRpb246DU1lc3NhZ2UgZnJvbSBNYWlsbWFu IHRvIFN1YnNjcmliZXI6DQ1Gcm9tOiAgbmV3c19saXN0LXJlcXVlc3RAbWFp bG1hbi5zb21ld2hlcmUuY29tDVRvOiAgICBhbnkucGVyc29uQHRoZWlyLmVt YWlsLmFkZHJlc3MNDVN1YmplY3Q6IE5ld3NfTGlzdCAtLSBjb25maXJtYXRp b24gb2Ygc3Vic2NyaXB0aW9uIC0tIHJlcXVlc3QgOTEzNDUyDQ1XZSBoYXZl IHJlY2VpdmVkIGEgcmVxdWVzdCBmcm9tIDI1NS4yNTUuMjU1LjI1NSBmb3Ig c3Vic2NyaXB0aW9uIG9mDXlvdXIgZW1haWwgYWRkcmVzcywgPCBhbnkucGVy c29uQHRoZWlyLmVtYWlsLmFkZHJlc3MgPiwgdG8gdGhlDW5ld3NfbGlzdEBt YWlsbWFuLnNvbWV3aGVyZS5jb20gbWFpbGluZyBsaXN0LiAgVG8gY29uZmly bSB0aGUNcmVxdWVzdCwgcGxlYXNlIHNlbmQgYSBtZXNzYWdlIHRvIG5ld3Nf bGlzdC1yZXF1ZXN0QG1haWxtYW4uc29tZXdoZXJlLmNvbSwgYW5kIGVpdGhl cjoNDS0gbWFpbnRhaW4gdGhlIHN1YmplY3QgbGluZSBhcyBpcyAodGhlIHJl cGx5J3MgYWRkaXRpb25hbCAiUmU6IiBpcw1vayksDQ0tIG9yIGluY2x1ZGUg dGhlIGZvbGxvd2luZyBsaW5lIC0gYW5kIG9ubHkgdGhlIGZvbGxvd2luZyBs aW5lIC0gaW4gdGhlIG1lc3NhZ2UgYm9keTogDQ1jb25maXJtIDkxMzQ1Mg0N KFNpbXBseSBzZW5kaW5nIGEgJ3JlcGx5JyB0byB0aGlzIG1lc3NhZ2Ugc2hv dWxkIHdvcmsgZnJvbSBtb3N0IGVtYWlsDWludGVyZmFjZXMsIHNpbmNlIHRo YXQgdXN1YWxseSBsZWF2ZXMgdGhlIHN1YmplY3QgbGluZSBpbiB0aGUgcmln aHQNZm9ybS4pDQ1JZiB5b3UgZG8gbm90IHdpc2ggdG8gc3Vic2NyaWJlIHRv IHRoaXMgbGlzdCwgcGxlYXNlIHNpbXBseSBkaXNyZWdhcmQNdGhpcyBtZXNz YWdlLiAgU2VuZCBxdWVzdGlvbnMgdG8gbmV3c19saXN0LWFkbWluQG1haWxt YW4uc29tZXdoZXJlLmNvbS4NDQ1Ob3RlOiBUbyBjYW5jZWwgeW91ciBzdWJz Y3JpcHRpb24gYXQgdGhpcyBwb2ludCwgc2ltcGx5IGRvIG5vdCByZXBseSB0 byB0aGUgZS1tYWlsLiANDUlmIHRoZSBzdWJzY3JpcHRpb24gaXMgY29tcGxl dGVkLCBhIHNlY29uZCBtZXNzYWdlIGlzIHdpbGwgYmUgcmVjZWl2ZWQgY29u ZmlybWluZyB5b3VyIGFjY2VwdGFuY2UgdG8gdGhlIG1haWxpbmcgbGlzdC4g VGhpcyBlbWFpbCB3aWxsIGluY2x1ZGUgYSB3ZWxjb21lIG5vdGUsIHdlYiBh ZGRyZXNzZXMgZm9yIGFsdGVyaW5nIHlvdXIgcGVyc29uYWwgZGV0YWlscywg YWRtaW5pc3RyYXRpdmUgZW1haWwgYWRkcmVzc2VzIGFuZCB5b3VyIHBhc3N3 b3JkLiBJdCBpcyBnb29kIGlkZWEgdG8gcmVjb3JkIHlvdXIgcGFzc3dvcmQg YXQgdGhpcyBzdGFnZSwgaWYgaG93ZXZlciBpdCBpcyBmb3Jnb3R0ZW4gb3Ig bWlzcGxhY2VkLCBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIHRoZSBNYWlsbWFu IHN5c3RlbSBzZW5kIHBhc3N3b3JkIHJlbWluZGVycyB2aWEgYW4gZW1haWwg bWVzc2FnZSBmcm9tIHRoZSBtYWlsaW5nIGxpc3QsIHRvIHRoZSBzdG9yZWQg YWRkcmVzcy4NDQ1WaWV3aW5nIFN1YnNjcmliZXJzIExpc3QNDUFzIG1lbnRp b25lZCBicmllZmx5IGFib3ZlLCBpdCBpcyBwb3NzaWJsZSB0byB2aWV3IHRo ZSBjb21wbGV0ZSBsaXN0IG9mIGV4aXN0aW5nIHN1YnNjcmliZXJzIHRvIGEg c3BlY2lmaWMgbWFpbGluZyBsaXN0LiBUaGlzIGlzIGF2YWlsYWJsZSBieSBz ZWxlY3RpbmcgkVZpZXcgU3Vic2NyaWJlciBMaXN0kiBmcm9tIHRoZSBtYWls aW5nIGxpc3QgaW5mb3JtYXRpb24gcGFnZS4gVGhlIFN1YnNjcmliZXJzIExp c3QgcGFnZSBzaG93cyB0aGUgcmVnaXN0ZXIgb2YgYWxsIGV4aXN0aW5nIHN1 YnNjcmliZXJzIHRvIHRoYXQgbWFpbGluZyBsaXN0IGFuZCBhbHNvIGluY2x1 ZGVzIHdoZXRoZXIgdGhlIHVzZXIgcmVjZWl2ZXMgdGhlaXIgc3Vic2NyaXB0 aW9uIGluIGRpZ2VzdCBvciBub24tZGlnZXN0IGZvcm1hdC4gSXQgaXMgcG9z c2libGUgdG8gaGlkZSB0aGUgbmFtZSBvZiBhIHN1YnNjcmliZXIgZnJvbSB0 aGlzIGxpc3QgaWYgdGhpcyBpcyBkZXNpcmVkLiBUaGlzIGlzIGRvbmUgYnkg Z29pbmcgaW50byB0aGUgkVN1YnNjcmliZXIgRGV0YWlsc5Igc2VjdGlvbiBh bmQgY2hvb3Npbmcgk1llc5QgdW5kZXIgdGhlIGNob2ljZSCRQ29uY2VhbCB5 b3Vyc2VsZiBmcm9tIHN1YnNjcmliZXIgbGlzdD+SLg0NRm9yIGxpc3RlZCBu YW1lcywgaXQgaXMgcG9zc2libGUgdG8gZW50ZXIgdGhlIGVkaXRpbmcgc2Vj dGlvbiBvZiBTdWJzY3JpYmVycyBEZXRhaWxzIGJ5IGNsaWNraW5nIG9uIHRo ZSBkZXNpcmVkIG5hbWUuIE5vdGUgdGhhdCBvbmx5IHVzZXJzIHdpdGggdGhl IGNvcnJlY3QgcGFzc3dvcmQgY2FuIG1ha2UgYW55IGNoYW5nZXMgdG8gYSBz cGVjaWZpYyBlbWFpbCBhZGRyZXNzLg0NDVN1YnNjcmliZXIgT3B0aW9ucw0N T25lIG9mIHRoZSBmZWF0dXJlcyBpbmNsdWRlZCBpbiB0aGUgTWFpbG1hbiBz eXN0ZW0gaXMgdGhlIGFiaWxpdHkgZm9yIHVzZXJzIHRvIGNoYW5nZSBtYWls IHNldHRpbmdzIHdpdGggcmVnYXJkIHRvIHRoZWlyIHN1YnNjcmlwdGlvbiB0 byBhIG1haWxpbmcgbGlzdC4gVGhlIGVkaXRpbmcgcGFnZSBmb3IgY2hhbmdp bmcgYSBzdWJzY3JpYmVyknMgZGV0YWlscyBjYW4gYmUgZW50ZXJlZCBieSB0 eXBpbmcgaW4gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHN1YnNjcmliZXIg dG8gYmUgY2hhbmdlZCwgb24gdGhlIG1haWxpbmcgbGlzdCBpbmZvcm1hdGlv biBwYWdlIHVuZGVyIHRoZSBoZWFkaW5nIJFTdWJzY3JpYmVyc5IuICBCeSBz ZWxlY3RpbmcgkUNoYW5nZSB5b3VyIHN1YnNjcmlwdGlvbpIgaXQgaXMgcG9z c2libGUgdG8gZW50ZXIgdGhlIHNwZWNpZmljIGVtYWlsIGFkZHJlc3MgYW5k IHRoZW4gcHJlc3MgkUVkaXQgT3B0aW9uc5IuIFRoaXMgd2lsbCB0YWtlIHlv dSBkaXJlY3RseSB0byB0aGUgb3B0aW9ucyBwYWdlIGZvciB0aGF0IGVtYWls IGFkZHJlc3MuIEFsdGVybmF0aXZlbHksIHRoaXMgcG9pbnQgY2FuIGJlIHJl YWNoZWQgdmlhIHRoZSCRVmlldyBTdWJzY3JpYmVycyBMaXN0kiBidXR0b24s IHRoZW4gYnkgY2hvb3NpbmcgdGhlIHNwZWNpZmljIGVtYWlsIGFkZHJlc3Mg ZnJvbSB0aGUgbGlzdCBvZiBleGlzdGluZyBzdWJzY3JpYmVycywgdGhlIHNh bWUgZWRpdGluZyBwYWdlIGNhbiBiZSByZWFjaGVkLg0NVGhlcmUgYXJlIGZp dmUgbWFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBhbHRlcmVkIG9uIHRoZSBT dWJzY3JpYmVyIENvbmZpZ3VyYXRpb24gcGFnZS4gVGhlc2UgaW5jbHVkZSBV bnN1YnNjcmliZSwgTGlzdCBPdGhlciBTdWJzY3JpcHRpb25zLCBGb3Jnb3R0 ZW4gUGFzc3dvcmQgUmVtaW5kZXIsIENoYW5nZSBQYXNzd29yZHMgYW5kIG90 aGVyIHNwZWNpZmljIG1haWxpbmcgbGlzdCBvcHRpb25zLiBUaGUgb3B0aW9u cyBhbmQgYSBkZXNjcmlwdGlvbiBhcmUgYXMgZm9sbG93czoNDVVuc3Vic2Ny aWJlOiBhbGxvd3MgdXNlcnMgdG8gdW5zdWJzY3JpYmUgZnJvbSBhIG1haWxp bmcgbGlzdC4gVGhpcyBpcyBhY2hpZXZlZCBieSBlbnRlcmluZyB0aGUgY29y cmVjdCBwYXNzd29yZCBmb3IgdGhlIGdpdmVuIGUtbWFpbCBhZGRyZXNzIGFu ZCB0aGVuIHByZXNzaW5nIHRoZSCRVW5zdWJzY3JpYmWSIGJ1dHRvbi4gVGhl IHVzZXIgaXMgdGhlbiBubyBsb25nZXIgc3Vic2NyaWJlZCB0byB0aGF0IG1h aWxpbmcgbGlzdC4gU3Vic2NyaXB0aW9ucyB0byBvdGhlciBtYWlsaW5nIGxp c3RzIHJlbWFpbi4NTGlzdCBPdGhlciBTdWJzY3JpcHRpb25zOiBhbHNvIHJl cXVpcmVzIHRoZSBjb3JyZWN0IHBhc3N3b3JkIHRvIGJlIGVudGVyZWQgYmVm b3JlIGNvbnRpbnVpbmcuIEl0IGRpc3BsYXlzIGFsbCBvdGhlciBtYWlsaW5n IGxpc3RzIHRoYXQgYSBzcGVjaWZpYyBlbWFpbCBhZGRyZXNzIGlzIHJlZ2lz dGVyZWQgdG8uDUZvcmdvdHRlbiBQYXNzd29yZDogd2lsbCBlbWFpbCB0aGUg cGFzc3dvcmQgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBlbWFpbCBh ZGRyZXNzIHRvIHRoYXQgZW1haWwgYWRkcmVzcy4gT3RoZXIgdXNlcnMgdHJ5 aW5nIHRvIGdldCB5b3VyIHBhc3N3b3JkIHdpbGwgYmUgdW5hYmxlIGR1ZSB0 byB0aGUgZmFjdCB0aGF0IHRoZSBwYXNzd29yZCBpcyBvbmx5IHNlbnQgdG8g dGhlIG9yaWdpbmFsIHVzZXIsIGV2ZW4gaWYgdGhlIJFGb3Jnb3R0ZW4gUGFz c3dvcmSSIGJ1dHRvbiBpcyBwcmVzc2VkLg1DaGFuZ2UgUGFzc3dvcmQ6IGFs bG93cyB1c2VycyB0byBjaGFuZ2UgdGhlaXIgcGFzc3dvcmQgYXQgYW55IHRp bWUuIFRvIGRvIHNvLCB0aGUgb2xkIHBhc3N3b3JkIG5lZWRzIHRvIGJlIGVu dGVyZWQsIGZvbGxvd2VkIGJ5IHRoZSBuZXcgcGFzc3dvcmQuIFRoZSBuZXcg cGFzc3dvcmQgaXMgZW50ZXJlZCBhIHNlY29uZCB0aW1lIHRvIGNvbmZpcm0g dGhlIGNoYW5nZSBhbmQgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaGFzIGVudGVy ZWQgdGhlIGRlc2lyZWQgcGFzc3dvcmQgY29ycmVjdGx5Lg1PdGhlciBPcHRp b25zOiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgZXh0cmEgb3B0aW9ucyBhdmFp bGFibGUgdG8gYmUgc2V0IGJ5IGVhY2ggdXNlciBmb3IgZWFjaCBtYWlsaW5n IGxpc3QuIFRvIHN1Ym1pdCBhbnkgb2YgdGhlIGNoYW5nZXMgc2VsZWN0ZWQs IHRoZSBjb3JyZWN0IHBhc3N3b3JkIG11c3QgYmUgZW50ZXJlZC4NRGlzYWJs ZSBtYWlsIGRlbGl2ZXJ5PyAgICAgICAgICAgICAgICBPZmYgLyBPbg1UdXJu IHRoaXMgb24gaWYgeW91IGRvIG5vdCB3YW50IG1haWwgdG8gYmUgZGVsaXZl cmVkIHRvIHlvdSBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4NDSBTZXQg RGlnZXN0IE1vZGU/ICAgICAgICAgICAgICAgIE9mZiAvIE9uDUlmIHlvdSB0 dXJuIGRpZ2VzdCBtb2RlIG9uLCB5b3Ugd2lsbCBnZXQgcG9zdHMgYnVuZGxl ZCB0b2dldGhlciBvbmNlIGEgZGF5IGluc3RlYWQgc2luZ2x5LCB3aGVuIHRo ZXkgYXJlIHNlbnQgZnJvbSB0aGUgTWFpbG1hbiBwcm9ncmFtLiBJZiBkaWdl c3QgbW9kZSBpcyBjaGFuZ2VkIGZyb20gb24gdG8gb2ZmLCB5b3Ugd2lsbCBy ZWNlaXZlIG9uZSBsYXN0IGRpZ2VzdC4NDSBHZXQgTUlNRSBvciBQbGFpbiBU ZXh0IERpZ2VzdHM/ICAgICAgIE1JTUUgIC8gIFBsYWluIFRleHQNSWYgeW91 IGhhdmUgYW55IHByb2JsZW1zIHdpdGggTUlNRSBkaWdlc3RzLCBzZWxlY3Qg cGxhaW4gdGV4dC4gDQ0gUmVjZWl2ZSBwb3N0cyB5b3Ugc2VuZCB0byB0aGUg bGlzdD8gICAgICBZZXMgLyBObyANQW55IHBvc3RzIHlvdSBzZW5kIHRvIHRo ZSBtYWlsaW5nIGxpc3QgZm9yIGRpc3RyaWJ1dGlvbiB0byB0aGUgbGlzdCB3 aWxsIGFsc28gYmUgc2VudCB0byB5b3Vyc2VsZiBpZiCRWWVzkiBpcyBzZWxl Y3RlZC4NDSBSZWNlaXZlIGFja25vd2xlZGdtZW50IG1haWwgd2hlbiB5b3Ug c2VuZCBtYWlsIHRvIHRoZSBsaXN0PyAgICAgIE5vIC8gWWVzIA0NIENvbmNl YWwgeW91cnNlbGYgZnJvbSBzdWJzY3JpYmVyIGxpc3Q/ICAgICAgIFllcyAv IE5vDVRoaXMgbWVhbnMgeW91ciBlbWFpbCBhZGRyZXNzIHdpbGwgbm90IGJl IHB1YmxpY2x5IHNob3duIG9uIHRoZSBsaXN0IG9mIHN1YnNjcmliZXJzLg0N DQ1BZG1pbmlzdHJhdGlvbg0NT25jZSBhIG1haWxpbmcgbGlzdCBoYXMgYmVl biBjcmVhdGVkIG9uIGEgc2VydmVyLCBhZG1pbmlzdHJhdGlvbiB0YXNrcyBj YW4gYmUgY29tcGxldGVkIHJlbW90ZWx5IGZyb20gYW55IGNvbXB1dGVyIHRo YXQgaGFzIGFjY2VzcyB0byB0aGUgTWFpbG1hbiB3ZWIgcGFnZS4gVGhlcmUg Y2FuIGJlIGFueSBudW1iZXIgb2Ygb2ZmaWNpYWwgYWRtaW5pc3RyYXRvcnMg Zm9yIGEgZ2l2ZW4gbWFpbGluZyBsaXN0LCBidXQgYWNjZXNzIHRvIGFkbWlu aXN0cmF0aXZlIGNvbnRyb2xzIGlzIGF2YWlsYWJsZSB0byBhbnlvbmUgd2l0 aCB0aGUgcGFzc3dvcmQgZm9yIGEgZ2l2ZW4gbGlzdC4gVGhlIG1haW4gcm9s ZSBvZiBhbiBhZG1pbmlzdHJhdG9yIGlzIHRvIG1vbml0b3IgdGhlIG1haWxp bmcgbGlzdCBhbmQgdGhlIGFzc29jaWF0ZWQgbGlzdCBvZiBzdWJzY3JpYmVy cy4gVGhlIGFkbWluaXN0cmF0b3IgaGFzIG1hbnkgb3B0aW9ucyBhdmFpbGFi bGUgdGhhdCBjYW4gYmUgc2V0IGZvciBlYWNoIGluZGl2aWR1YWwgd2ViIHBh Z2UuIFRoaXMgaW5jbHVkZXMgZ2VuZXJhbCBsaXN0IG9wdGlvbnMsIG1lbWJl ciBtYW5hZ2VtZW50IGFuZCBwcml2YWN5IHNldHRpbmdzLiBUaGUgc2V0dGlu Z3MgZXZlbiBhbGxvdyB0aGUgYWRtaW5pc3RyYXRvciB0byByZS1jb2RlIHRo ZSBIVE1MIGNvZGUgZm9yIHRoZSB2YXJpb3VzIHBhZ2VzIGZvciB0aGF0IGxp c3QgdmlhIHRoZSB3ZWIgcGFnZSBpbnRlcmZhY2UuIA0NDQ1HZW5lcmFsIE9w dGlvbnMNDVRoZSBHZW5lcmFsIE9wdGlvbnMgcGFnZSBpcyB0aGUgbWFpbiBj b250cm9sIGFyZWEgZm9yIHRoZSBhbHRlcmluZyB0aGUgbW9zdCByZWd1bGFy bHkgdXNlZCBvcHRpb25zIHdpdGggcmVnYXJkIHRvIG1haWxpbmcgbGlzdHMu IEl0ZW1zIHN1Y2ggYXMgbGlzdCBkZXNjcmlwdGlvbnMsIGxpc3QgYWRtaW5p c3RyYXRvcnMgYW5kIGxpc3Qgc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9uIGlz IGNoYW5nZWQgZnJvbSB0aGlzIHBhZ2UuDQ0xLiAgVGhlIHB1YmxpYyBuYW1l IG9mIHRoaXMgbGlzdDoNDQlUaGUgcHVibGljIG5hbWUgb2YgdGhlIGxpc3Qg aXMgdGhlIG5hbWUgdGhhdCB5b3Ugd2lzaCB0byBhcHBlYXIgaW4gdGhlIExp c3RpbmZvIHBhZ2UsIHdoaWNoIGRpc3BsYXlzIHRoZSBsaXN0IG9mIGF2YWls YWJsZSBtYWlsaW5nIGxpc3RzLiBUaGUgcmVzdHJpY3Rpb24gaXMgdGhhdCBp dCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBs aXN0LCBpdCBpcyBvbmx5IGEgY2hhbmdlIGluIHRoZSBjYXBpdGFsaXNhdGlv biBvZiB0aGUgbmFtZSB0aGF0IGNhbiBiZSBtYWRlLCB0byBtYWtlIGl0IG1v cmUgcHJlc2VudGFibGUgb3IgZWFzaWVyIHRvIHJlYWQuIFRoZSBuYW1lIHdp bGwgYmUgYWR2ZXJ0aXNlZCBhcyB0aGUgZW1haWwgYWRkcmVzcyAoZS5nLiwg aW4gc3Vic2NyaWJlIGNvbmZpcm1hdGlvbiBub3RpY2VzKSwgc28gaXQgc2hv dWxkIG5vdCBiZSBvdGhlcndpc2UgYWx0ZXJlZC4gDQ1FeGFtcGxlczoNCQlu ZXdzX2xpc3QgICAgKCAgICAgICAgTmV3c19MaXN0ICAgICA9ICAgICBDT1JS RUNUDQluZXdzX2xpc3QgICAgKCAgICAgICAgTkVXU19MSVNUICAgICA9ICAg ICBDT1JSRUNUDQkJbmV3c19saXN0ICAgICggICAgICAgIE5ld3MgTGlzdCAg ICAgPSAgICAgSU5DT1JSRUNUDQluZXdzX2xpc3QgICAgKCAgICAgICAgTmV3 c19MaXN0cyAgICA9ICAgICBJTkNPUlJFQ1QNDTIuICBUaGUgbGlzdCBhZG1p bmlzdHJhdG9yJ3MgZW1haWwgYWRkcmVzczoNDVRoaXMgY2F0ZWdvcnkgaXMg Zm9yIGxpc3RpbmcgYWxsIHVzZXJzIHdobyBuZWVkIHRvIGJlIGFkbWluaXN0 cmF0b3JzIG9mIGEgbWFpbGluZyBsaXN0LiBBcyBtZW50aW9uZWQgYWJvdmUs IHlvdSBkbyBub3QgbmVlZCB0byBiZSBsaXN0ZWQgYXMgYW4gYWRtaW5pc3Ry YXRvciB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgb3B0aW9ucyBwYWdlcywg eW91IHNpbXBseSBuZWVkIHRoZSBjb3JyZWN0IHBhc3N3b3JkIGZvciB0aGUg bWFpbGluZyBsaXN0LiBBZG1pbmlzdHJhdGl2ZSBsaXN0aW5nIHNpbXBseSBt ZWFucyB0aGF0IHlvdSB3aWxsIHJlY2VpdmUgYW55IGZhdWx0IGRlc2NyaXB0 aW9ucyBtYWlsZWQgYnkgdGhlIE1haWxtYW4gcHJvZ3JhbSBvciBzdWJzY3Jp cHRpb24gcmVxdWVzdHMuDQ1UbyBhZGQgbmV3IGFkbWluaXN0cmF0b3JzIHRv IGEgc3BlY2lmaWMgcGFnZSwgb25lIHNpbXBseSB3cml0ZXMgb25lIGVtYWls IGFkZHJlc3MgcGVyIGxpbmUgaW4gdGhlIGF2YWlsYWJsZSBmaWVsZC4gTm8g b3RoZXIgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCB0byBzZXBh cmF0ZSBhZGRyZXNzZXMuDQ0zLiBBIHRlcnNlIHBocmFzZSBpZGVudGlmeWlu ZyB0aGlzIGxpc3QuDQ1UaGlzIGlzIGEgb25lLWxpbmUgZGVzY3JpcHRpb24g Zm9yIHRoZSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QgdGhhdCB3aWxsIGJlIGRp c3BsYXllZCBvbiB0aGUgTGlzdGluZm8gcGFnZS4gVGhpcyB3aWxsIGdpdmUg dXNlciBhIHNob3J0IHN1bW1hcnkgb2YgdGhlIHNwZWNpZmljIG1haWxpbmcg bGlzdCwgc28gdGhhdCBpZiB0aGlzIGlzIHRoZWlyIGFyZWEgb2YgaW50ZXJl c3QsIHRoZXkgbWF5IHNlbGVjdCB0aGUgbGlzdCBmb3IgYSBtb3JlIGRldGFp bGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBtYWlsaW5nIGxpc3QgYW5kIHN1YnNj cmlwdGlvbiBpbmZvcm1hdGlvbi4NDTQuIEFuIGludHJvZHVjdG9yeSBkZXNj cmlwdGlvbjoNIA1UaGUgaW50cm9kdWN0b3J5IGRlc2NyaXB0aW9uIGlzIG1h ZGUgdXAgb2YgYSBmZXcgcGFyYWdyYXBocyBkZXNjcmliaW5nIHRoZSBtYWls aW5nIGxpc3QuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSBkaXNwbGF5ZWQg aW4gdGhlIHN1bW1hcnkgcGFnZSBmb3IgdGhlIG1haWxpbmcgbGlzdCwgd2hp Y2ggYWxyZWFkeSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3Vi c2NyaWJlLiBUaGUgcGFyYWdyYXBocyBzaG91bGQgZGV0YWlsIGl0ZW1zIHN1 Y2ggYXMgdGhlIG1haW4gdG9waWMgb3IgdGhlbWUgb2YgdGhlIG1haWxpbmcg bGlzdCwgdGFyZ2V0IGF1ZGllbmNlLCBmcmVxdWVuY3kgb2YgbWFpbC1vdXRz IGFuZCBleGFtcGxlcyBvZiB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB0aGF0 IHdpbGwgYmUgcmVjZWl2ZWQuDQ1UaGUgZGVzY3JpcHRpb24gd2lsbCB0aGVu IGJlIGluY2x1ZGVkIGFzIGh0bWwgY29kZSBhdCB0aGUgdG9wIG9mIHRoZSBM aXN0aW5mbyBwYWdlLiBUaGUgdGV4dCB3aWxsIGJlIHRyZWF0ZWQgYXMgaHRt bCBleGNlcHQgdGhhdCCRbmV3IGxpbmVzkiB3aWxsIGJlIHRyYW5zbGF0ZWQg dG8gPGJyPiAtIHNvIHlvdSBjYW4gdXNlIGxpbmtzLCBwcmVmb3JtYXR0ZWQg dGV4dCwgZXRjLCBidXQgZG9uJ3QgcHV0IGluIGNhcnJpYWdlIHJldHVybnMg ZXhjZXB0IHdoZXJlIHlvdSBtZWFuIHRvIHNlcGFyYXRlIHBhcmFncmFwaHMu IA0NT25lIG11c3QgZW5zdXJlIHRoYXQgYW55IGNoYW5nZXMgdG8gdGhlIGRl c2NyaXB0aW9uIGFyZSBjaGVja2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkg YXJlIHN1Ym1pdHRlZC4gVGhpcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGVy ZSBhcmUgbm8gZXJyb3JzIGluIHRoZSB0ZXh0IHN1Y2ggYXMgdW50ZXJtaW5h dGVkIEhUTUwgY29uc3RydWN0cywgd2hpY2ggY2FuIHByZXZlbnQgZGlzcGxh eSBvZiB0aGUgZW50aXJlIExpc3RpbmZvIHBhZ2UuDQ01LiBQcmVmaXggZm9y IHN1YmplY3QgbGluZSBvZiBsaXN0IHBvc3RpbmdzDQ1UaGUgcHJlZml4IHRl eHQgaXMgdGV4dCB0aGF0IHdpbGwgYmUgcHJlcGVuZGVkIHRvIHN1YmplY3Qg bGluZXMgb2YgbWVzc2FnZXMgcG9zdGVkIHRvIHRoZSBsaXN0LiBUaGlzIHRo ZW4gYWxsb3dzIHVzZXJzIHRvIGRpc3Rpbmd1aXNoIG1haWxpbmcgbGlzdCBt ZXNzYWdlcyBpbiB0aGVpciBtYWlsYm94IHN1bW1hcmllcy4gQnJldml0eSBp cyBhIHByZW1pdW0gaGVyZSBhbmQgc28gaXQgaXMgcmVjb21tZW5kZWQgdGhh dCBtYWlsaW5nIGxpc3QgbmFtZXMgYmUgYXMgc2hvcnQgYXMgcG9zc2libGUs IGFzIGxvbmcgYXMgaXQgc3RpbGwgaWRlbnRpZmllcyB0aGUgbWFpbGluZyBs aXN0Lg0NNi4gTGlzdC1zcGVjaWZpYyB0ZXh0IHByZXBlbmRlZCB0byBuZXct c3Vic2NyaWJlciB3ZWxjb21lIG1lc3NhZ2UNDVdoZW4gdXNlcnMgc3Vic2Ny aWJlIHRvIGEgbWFpbGluZyBsaXN0LCBhIG5ldy1zdWJzY3JpYmVyIHdlbGNv bWUgbWVzc2FnZSBpcyBzZW50LiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRv IGFkZCBhIHNtYWxsIHNlY3Rpb24gb2YgdGV4dCB0byB0aGUgdG9wIG9mIHRo ZSB3ZWxjb21lIG1lc3NhZ2Ugc3VjaCBhcyB0aGUgbWFpbGluZyBsaXN0IGRl c2NyaXB0aW9uIGFnYWluIG9yIHJlY2VudCBhZG1pbmlzdHJhdGl2ZSBuZXdz IHdpdGggcmVnYXJkIHRvIHRoaXMgbGlzdC4gVGhlIHJlc3Qgb2YgdGhlIHdl bGNvbWUgbWVzc2FnZSBpcyBwcmUtc2V0IHRvIGRlc2NyaWJlIGltcG9ydGFu dCBhZGRyZXNzZXMgYW5kIFVSTHMgZm9yIHRoZSBtYWlsaW5nIGxpc3QsIHNv IHRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBpbmNsdWRlZC4gSXQgc2hvdWxk IGhvd2V2ZXIsIGNvbnRhaW4gbWlzc2lvbiBzcGVjaWZpYyBpbmZvcm1hdGlv biwgbGlrZSBldGlxdWV0dGUgcG9saWNpZXMgb3IgdGVhbSBvcmllbnRhdGlv bi4NDTcuIFRleHQgc2VudCB0byBwZW9wbGUgbGVhdmluZyB0aGUgbGlzdC4g DQ1UaGlzIGNhdGVnb3J5IGFsbG93cyB5b3UgdG8gZW50ZXIgYW4gZXh0cmEg dGV4dCBtZXNzYWdlIHRvIGJlIHNlbnQgdG8gbWVtYmVycyB1bnN1YnNjcmli aW5nIGZyb20gYSBtYWlsaW5nIGxpc3QuIElmIHRoaXMgZmllbGQgaXMgbGVm dCBlbXB0eSwgbm8gc3BlY2lhbCB0ZXh0IHdpbGwgYmUgYWRkZWQgdG8gdGhl IHVuc3Vic2NyaWJlIG1lc3NhZ2UuDQ04LiBBcmUgcmVwbGllcyB0byBhIHBv c3QgZGlyZWN0ZWQgdG8gdGhlIG9yaWdpbmFsIHBvc3RlciBvciB0byB0aGUg bGlzdD8NDVRoZSBNYWlsbWFuIHByb2dyYW0gYWxsb3dzIGZvciB1c2VycyB0 byByZXBseSB0byBtZXNzYWdlcyBzZW50IHRocm91Z2ggdGhlIG1haWxpbmcg bGlzdC4gVGhpcyBvcHRpb24gaXMgdG8gc2V0IHdoZXRoZXIgdGhlc2UgcmVw bGllcyBhcmUgc2VudCBkaXJlY3RseSB0byB0aGUgb3JpZ2luYWwgcG9zdGVy IG9mIGEgbWVzc2FnZSBmcm9tIHRoZSBtYWlsaW5nIGxpc3QsIG9yIHRvIGFs bCBtZW1iZXJzIG9mIHRoZSBtYWlsaW5nIGxpc3QuIEl0IGlzIHN0cm9uZ2x5 IHJlY29tbWVuZGVkIHRoYXQgcmVwbGllcyBiZSBzZW50IHRvIHRoZSBvcmln aW5hbCBwb3N0ZXIuDQ05LiAoQWRtaW5pc3RyaXZpYSBmaWx0ZXIpIENoZWNr IHBvc3RpbmdzIGFuZCBpbnRlcmNlcHQgb25lcyB0aGF0IHNlZW0gdG8gYmUg YWRtaW5pc3RyYXRpdmUgcmVxdWVzdHM/DQ1BZG1pbmlzdHJpdmlhIHRlc3Rz IHdpbGwgY2hlY2sgcG9zdGluZ3MgdG8gc2VlIHdoZXRoZXIgaXQncyByZWFs bHkgbWVhbnQgYXMgYW4gYWRtaW5pc3RyYXRpdmUgcmVxdWVzdCBzdWNoIGFz IHN1YnNjcmliZSwgdW5zdWJzY3JpYmUsIGV0YywgYW5kIHdpbGwgYWRkIGl0 IHRvIHRoZSBhZG1pbmlzdHJhdGl2ZSByZXF1ZXN0cyBxdWV1ZSwgbm90aWZ5 aW5nIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBuZXcgcmVxdWVzdCwgaW4g dGhlIHByb2Nlc3MuDQ0xMC4gU2VuZCBwYXNzd29yZCByZW1pbmRlcnMgdG8s IGVnLCAiLW93bmVyIiBhZGRyZXNzIGluc3RlYWQgb2YgZGlyZWN0bHkgdG8g dXNlcjoNDVRoaXMgY2F0ZWdvcnkgYWxsb3dzIGZvciBwYXNzd29yZCByZW1p bmRlcnMgdG8gYmUgc2VudCB0byBhbiBhbHRlcm5hdGUgYWRkcmVzcyBpbnN0 ZWFkIG9mIGRpcmVjdGx5IHRvIHRoZSB1c2VyLiBTZXQgdGhpcyB0byB5ZXMg d2hlbiB0aGlzIGxpc3QgaXMgaW50ZW5kZWQgdG8gY2FzY2FkZSBvbmx5IHRv IG90aGVyIG1haWxpbmcgbGlzdHMuIFdoZW4gc2V0IHRvIJFtZXRhkiwgbm90 aWNlcyBsaWtlIGNvbmZpcm1hdGlvbnMgYW5kIHBhc3N3b3JkIHJlbWluZGVy cyB3aWxsIGJlIGRpcmVjdGVkIHRvIGFuIGFkZHJlc3MgZGVyaXZlZCBmcm9t IHRoZSBtZW1iZXIncyBhZGRyZXNzLiBOb3RlOiBpdCB3aWxsIGhhdmUgdGhl IHZhbHVlIG9mICJ1bWJyZWxsYV9tZW1iZXJfc3VmZml4IiBhcHBlbmRlZCB0 byB0aGUgbWVtYmVyJ3MgYWNjb3VudCBuYW1lLg0NDTExLiBTdWZmaXggZm9y IHVzZSB3aGVuIHRoaXMgbGlzdCBpcyBhbiB1bWJyZWxsYSBmb3Igb3RoZXIg bGlzdHMsIGFjY29yZGluZyB0byBzZXR0aW5nIG9mIHByZXZpb3VzICJ1bWJy ZWxsYV9saXN0IiBzZXR0aW5nOg0NV2hlbiAidW1icmVsbGFfbGlzdCIgaXMg c2V0IHRvIGluZGljYXRlIHRoYXQgdGhpcyBsaXN0IGhhcyBvdGhlciBtYWls aW5nIGxpc3RzIGFzIG1lbWJlcnMsIHRoZW4gYWRtaW5pc3RyYXRpdmUgbm90 aWNlcyBsaWtlIGNvbmZpcm1hdGlvbnMgYW5kIHBhc3N3b3JkIHJlbWluZGVy cyBuZWVkIHRvIG5vdCBiZSBzZW50IHRvIHRoZSBtZW1iZXIgbGlzdCBhZGRy ZXNzZXMsIGJ1dCByYXRoZXIgdG8gdGhlIG93bmVyIG9mIHRob3NlIG1lbWJl ciBsaXN0cy4gSW4gdGhhdCBjYXNlLCB0aGUgdmFsdWUgb2YgdGhpcyBzZXR0 aW5nIGlzIGFwcGVuZGVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50IG5hbWUg Zm9yIHN1Y2ggbm90aWNlcy4gJy1vd25lcicgaXMgdGhlIHR5cGljYWwgY2hv aWNlLiBUaGlzIHNldHRpbmcgaGFzIG5vIGVmZmVjdCB3aGVuICJ1bWJyZWxs YV9saXN0IiBpcyAiTm8iLg0NMTIuIFNlbmQgbW9udGhseSBwYXNzd29yZCBy ZW1pbmRlcnMgb3Igbm8/DQ1UaGUgTWFpbG1hbiBwcm9ncmFtIGdpdmVzIHRo ZSBvcHRpb24gb2Ygc2VuZGluZyBtb250aGx5IHBhc3N3b3JkIHJlbWluZGVy cyB0byBzdWJzY3JpYmVycy4gVGhpcyB0aGVuIGludml0ZXMgdXNlcnMgdG8g Y2hhbmdlIHRoZWlyIHBhc3N3b3JkcyBhbmQgdGhlcmVieSBtaW5pbWlzZSB0 aGUgcG9zc2liaWxpdHkgb2YgYWNjb3VudCBpbnRydXNpb24gYnkgb3RoZXIg cGVvcGxlLiBIYXZpbmcgdGhpcyBvcHRpb24gc2V0IHRvIJFOb5Igd2lsbCBv dmVycmlkZSB0aGUgYWJvdmUgdHdvIG9wdGlvbnMuDQ0xMy4gU2VuZCB3ZWxj b21lIG1lc3NhZ2Ugd2hlbiBwZW9wbGUgc3Vic2NyaWJlPw0NV2hlbiB1c2Vy cyBzdWJzY3JpYmUgdG8gYSBtYWlsaW5nIGxpc3QgYW5kIGNvbmZpcm1hdGlv biBoYXMgYmVlbiBjb21wbGV0ZWQsIHNlbmQgdGhlIHVzZXIgYSB3ZWxjb21l IG1lc3NhZ2UuIFR1cm4gdGhpcyBvbiBvbmx5IGlmIHlvdSBwbGFuIG9uIHN1 YnNjcmliaW5nIHBlb3BsZSBtYW51YWxseSBhbmQgZG9uJ3Qgd2FudCB0aGVt IHRvIGtub3cgdGhhdCB5b3UgZGlkIHNvLiBUaGlzIG9wdGlvbiBpcyBtb3N0 IHVzZWZ1bCBmb3IgdHJhbnNwYXJlbnRseSBtaWdyYXRpbmcgbGlzdHMgZnJv bSBzb21lIG90aGVyIG1haWxpbmcgbGlzdCBtYW5hZ2VyIHRvIE1haWxtYW4u DQ0xNC4gCVNob3VsZCBhZG1pbmlzdHJhdG9yIGdldCBpbW1lZGlhdGUgbm90 aWNlIG9mIG5ldyByZXF1ZXN0cywgYXMgd2VsbCBhcyBkYWlseSBub3RpY2Vz IGFib3V0IGNvbGxlY3RlZCBvbmVzPw0NTGlzdCBhZG1pbmlzdHJhdG9ycyBh cmUgc2VudCBkYWlseSByZW1pbmRlcnMgb2YgcGVuZGluZyBhZG1pbiBhcHBy b3ZhbCByZXF1ZXN0cywgc3VjaCBhcyBzdWJzY3JpcHRpb25zIHRvIGEgbW9k ZXJhdGVkIGxpc3Qgb3IgcG9zdGluZ3MgdGhhdCBhcmUgYmVpbmcgaGVsZCBm b3Igb25lIHJlYXNvbiBvciBhbm90aGVyLiBTZXR0aW5nIHRoaXMgb3B0aW9u IGNhdXNlcyBub3RpY2VzIHRvIGJlIHNlbnQgaW1tZWRpYXRlbHkgb24gdGhl IGFycml2YWwgb2YgbmV3IHJlcXVlc3RzLCBhcyB3ZWxsLg0NMTUuIFNob3Vs ZCBhZG1pbmlzdHJhdG9yIGdldCBub3RpY2VzIG9mIHN1YnNjcmliZXMvdW5z dWJzY3JpYmVzPw0NVGhpcyBvcHRpb24gd2lsbCBhbGxvdyB0aGUgYWRtaW5p c3RyYXRvciBvZiBhIG1haWxpbmcgbGlzdCB0byByZWNlaXZlIGltbWVkaWF0 ZSBpbmZvcm1hdGlvbiBvZiBuZXcgbWVtYmVycyB0byB0aGUgbGlzdCBvciBt ZW1iZXJzIHRoYXQgaGF2ZSBleGl0ZWQgdGhlIG1haWxpbmcgbGlzdC4NDTE2 LiBTZW5kIG1haWwgdG8gcG9zdGVyIHdoZW4gdGhlaXIgcG9zdGluZyBpcyBo ZWxkIGZvciBhcHByb3ZhbD8NDU5vdGljZXMgdGhhdCBhcmUgc2VudCB0byB0 aGUgbWFpbGluZyBsaXN0IGZvciBkaXN0cmlidXRpb24gY2FuIGJlIGhlbGQg Zm9yIGFwcHJvdmFsLiBBcHByb3ZhbCBub3RpY2VzIGFyZSBzZW50IHdoZW4g bWFpbCB0cmlnZ2VycyBjZXJ0YWluIG9mIHRoZSBsaW1pdHMsIGV4Y2VwdCBy b3V0aW5lIGxpc3QgbW9kZXJhdGlvbiBhbmQgc3BhbSBmaWx0ZXJzLCBmb3Ig d2hpY2ggbm90aWNlcyBhcmUgbm90IHNlbnQuIFRoaXMgb3B0aW9uIG92ZXJy aWRlcyBldmVyIHNlbmRpbmcgdGhlIG5vdGljZS4NDTE3LiBNYXhpbXVtIGxl bmd0aCBpbiBLYiBvZiBhIG1lc3NhZ2UgYm9keToNDVRvIGVuc3VyZSBtZXNz YWdlcyB0aGF0IGFyZSBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3QgZnJvbSBt ZW1iZXJzIGFyZSBub3QgdG9vIGxhcmdlLCBhIG1heGltdW0gbGltaXQgY2Fu IGJlIHNldCBmb3IgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlLiBVc2UgMCBm b3Igbm8gbGltaXQuDQ0xOC4gTnVtYmVyIG9mIG91dGdvaW5nIGNvbm5lY3Rp b25zIHRvIG9wZW4gYXQgb25jZSAoZXhwZXJ0IHVzZXJzIG9ubHkpOg0NVGhp cyBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiYXRjaGVzIGlu dG8gd2hpY2ggYSBtYXNzIHBvc3Rpbmcgd2lsbCBiZSBkaXZpZGVkLg0NMTku IEhvc3QgbmFtZSB0aGlzIGxpc3QgcHJlZmVyczoNDQlUaGUgaG9zdF9uYW1l IGlzIHRoZSBwcmVmZXJyZWQgbmFtZSBmb3IgZW1haWwgdG8gTWFpbG1hbi1y ZWxhdGVkIGFkZHJlc3NlcyBvbiB0aGlzIGhvc3QgYW5kIGdlbmVyYWxseSBz aG91bGQgYmUgdGhlIG1haWwgaG9zdCdzIGV4Y2hhbmdlciBhZGRyZXNzLCBp ZiBhbnkuIFRoaXMgc2V0dGluZyBjYW4gYmUgdXNlZnVsIGZvciBzZWxlY3Rp bmcgYW1vbmcgYWx0ZXJuYXRpdmUgbmFtZXMgb2YgYSBob3N0IHRoYXQgaGFz IG11bHRpcGxlIGFkZHJlc3Nlcy4NDTIwLiBCYXNlIFVSTCBmb3IgTWFpbG1h biB3ZWIgaW50ZXJmYWNlDQ1UaGlzIGlzIHRoZSBjb21tb24gcm9vdCBmb3Ig YWxsIE1haWxtYW4gVVJMcyBjb25jZXJuaW5nIHRoaXMgbGlzdC4gSXQgaXMg YWxzbyB1c2VkIGluIHRoZSBMaXN0aW5mbyBvdmVydmlldyBvZiBtYWlsaW5n IGxpc3RzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90IHRoaXMgbGlzdCBy ZXNpZGVzIG9uIHRoZSB2aXJ0dWFsIGhvc3QgaWRlbnRpZmllZCBieSB0aGUg b3ZlcnZpZXcgVVJMLiBJZiB0aGlzIHZhbHVlIGlzIGZvdW5kIGFueXdoZXJl IGluIHRoZSBVUkwsIHRoZW4gdGhpcyBsaXN0IGlzIGNvbnNpZGVyZWQgdG8g YmUgb24gdGhhdCB2aXJ0dWFsIGhvc3QsIGFuZCBpZiBub3QsIHRoZW4gaXQg aXMgZXhjbHVkZWQgZnJvbSB0aGUgbGlzdGluZy4gTm90ZSB0aGF0IHlvdSBz aG91bGQgdXNlIHRoZSAnYWR2ZXJ0aXNlZCcgcHJpdmFjeSBvcHRpb24gdG8g aW5oaWJpdCBhbnkgbGlzdGluZyBvZiB0aGUgaG9zdC4NDQ1NZW1iZXJzaGlw IE1hbmFnZW1lbnQgDQ1UaGUgbWVtYmVyc2hpcCBtYW5hZ2VtZW50IHBhZ2Ug YWxsb3dzIGFkbWluaXN0cmF0b3JzIHRvIGNoZWNrIHRoZSBjdXJyZW50IG1l bWJlcnNoaXAgbGlzdCBvZiB0aGUgbWFpbGluZyBsaXN0LiBGcm9tIHRoaXMg cGFnZSwgZWFjaCBtZW1iZXIgYW5kIHRoZWlyIHNwZWNpZmljIG9wdGlvbnMg Zm9yIHRoZSBsaXN0IGNhbiBiZSBzZWVuLiBOZXcgbWVtYmVycyBjYW4gYWxz byBiZSBhZGRlZCBhbmQgcmVtb3ZlZC4NDTEuIE1lbWJlcnNoaXAgTGlzdDoN DURpc3BsYXlzIHRoZSBjdXJyZW50IG1lbWJlcnNoaXAgbGlzdCBvZiB0aGUg c3BlY2lmaWMgbWFpbGluZyBsaXN0LiBPbmx5IDMwIG1lbWJlcnMgYXJlIHNo b3duIGF0IGEgdGltZSBhbmQgaWYgdGhlIGxpc3QgaXMgZ3JlYXRlciB0aGFu IDMwLCB0aGVuIGxpbmtzIGFyZSBjcmVhdGVkIGp1c3QgYmVsb3cgdGhpcyBs aXN0IHRvIHRoZSBvdGhlciBncm91cHMgb2YgdGhpcnR5IG1lbWJlcnMgb2Yg dGhlIGxpc3QuIEZvciBlYWNoIHBlcnNvbiBkaXNwbGF5ZWQgb24gdGhlIGlu ZGl2aWR1YWwgbGlzdCwgaXQgYWxzbyByZXBvcnRzIHRoYXQgcGVyc29uknMg b3B0aW9ucyBzZXR0aW5ncy4gVGhlIGFkbWluaXN0cmF0b3IgY2FuIGNoYW5n ZSB0aGVzZSBvcHRpb25zIGJ5IHNpbXBseSBhZGRpbmcgb3IgcmVtb3Zpbmcg dGhlIHRpY2sgZnJvbSB0aGUgYXNzb2NpYXRlZCBib3guIFRoZSBtZW1iZXKS cyBvcHRpb25zIGFyZSBhcyBmb2xsb3dzOg0Nc3Vic2NyIAktIElzIHRoZSBt ZW1iZXIgc3Vic2NyaWJlZD8gDWhpZGUgCS0gSXMgdGhlIG1lbWJlcidzIGFk ZHJlc3MgY29uY2VhbGVkIG9uIHRoZSBsaXN0IG9mIHN1YnNjcmliZXJzPyAN bm9tYWlsIAktIElzIGRlbGl2ZXJ5IHRvIHRoZSBtZW1iZXIgZGlzYWJsZWQ/ IA1hY2sgCS0gRG9lcyB0aGUgbWVtYmVyIGdldCBhY2tub3dsZWRnbWVudHMg b2YgdGhlaXIgcG9zdHM/IA1ub3QgbWV0b28gCS0gRG9lcyB0aGUgbWVtYmVy IGF2b2lkIGNvcGllcyBvZiB0aGVpciBvd24gcG9zdHM/IA1kaWdlc3QgCS0g RG9lcyB0aGUgbWVtYmVyIGdldCBtZXNzYWdlcyBpbiBkaWdlc3RzPyAob3Ro ZXJ3aXNlLCBpbmRpdmlkdWFsIG1lc3NhZ2VzKSANcGxhaW4gCS0gSWYgZ2V0 dGluZyBkaWdlc3RzLCBkb2VzIHRoZSBtZW1iZXIgZ2V0IHBsYWluIHRleHQg ZGlnZXN0cz8gKG90aGVyd2lzZSwgTUlNRSkNDQ1Ob3RlOiBCeSByZW1vdmlu ZyB0aGUgdGljayBpbiB0aGUgbWVtYmVyknMgkXN1YnNjcpIgY2F0ZWdvcnks IHRoZSBtZW1iZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3QuDQ0y LiBNYXNzIFN1YnNjcmliZSBNZW1iZXJzDQ1UaGUgbWFzcyBzdWJzY3JpcHRp b24gb3B0aW9uIGFsbG93cyBhZG1pbmlzdHJhdG9ycyB0byBhZGQgYSBsaXN0 IG9mIG5ldyBtZW1iZXJzIGluIG9uZSBzdGVwLiBTaW1wbHkgYnkgZW50ZXJp bmcgbmV3IG1lbWJlciBlbWFpbCBhZGRyZXNzZXMgaW4gdGhlIHRleHQgZmll bGQsIG9uZSBsaW5lIHBlciBhZGRyZXNzLCBhbiBhZG1pbmlzdHJhdG9yIGNh biBhZGQgYXMgbWFueSB1c2VycyBhcyB0aGV5IGxpa2UgdG8gdGhlIGxpc3Qu DQ1BbiBvcHRpb24gdGhhdCBzaG91bGQgYmUgbm90ZWQgaW4gdGhpcyBjYXRl Z29yeSBpcyB0aGUgYWJpbGl0eSB0byBkaXNhYmxlIHdlbGNvbWUgbWVzc2Fn ZXMuIFRoaXMgc3RvcHMgdGhlIHByb2dyYW0gZnJvbSBzZW5kaW5nIHdlbGNv bWUgbWVzc2FnZXMgdG8gYWxsIG5ldyB1c2VycyBhZGRlZCB0byBhIG1haWxp bmcgbGlzdC4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpZiBtaWdyYXRp bmcgYW4gZXhpc3RpbmcgbWFpbGluZyBsaXN0IHRvIHRoZSBtYWlsbWFuIHBy b2dyYW0uDQ0NUHJpdmFjeSBPcHRpb25zIA0NVGhlIHByaXZhY3kgb3B0aW9u cyBwYWdlIGlzIGZvciBjb250cm9sbGluZyBsaXN0IGFjY2VzcyBwb2xpY2ll cywgaW5jbHVkaW5nIGFudGktc3BhbSBtZWFzdXJlcyBjb3ZlcmluZyBtZW1i ZXJzIGFuZCBvdXRzaWRlcnMuDQ0NU3Vic2NyaWJpbmcNMS4gQWR2ZXJ0aXNl IHRoaXMgbGlzdCB3aGVuIHBlb3BsZSBhc2sgd2hhdCBsaXN0cyBhcmUgb24g dGhpcyBtYWNoaW5lPyANDUNoYW5naW5nIHRoaXMgb3B0aW9uIHRvIJFOb5Ig d2lsbCByZW1vdmUgdGhlIG1haWxpbmcgbGlzdCBmcm9tIHRoZSBsaXN0IG9m IGF2YWlsYWJsZSB3ZWIgc2l0ZXMgb24gYm90aCB0aGUgTGlzdGluZm8gcGFn ZSBhbmQgb24gdGhlIEFkbWluIHBhZ2UuIFRoaXMgd2lsbCBtZWFuIHRoYXQg dGhlIG9ubHkgd2F5IHRvIGdldCB0byBhIGxpc3QgaXMgdmlhIHRoZSBjb3Jy ZWN0IFVSTC4NDTIuIFdoYXQgc3RlcHMgYXJlIHJlcXVpcmVkIGZvciBzdWJz Y3JpcHRpb24/DQ1UaGlzIHNlY3Rpb24gaXMgd2l0aCByZWdhcmQgdG8gdGhl IGNvbmZpcm1hdGlvbiBwcm9jZXNzIHRoYXQgdXNlcnMgbXVzdCBjb21wbGV0 ZSB0byBiZSBhZG1pdHRlZCB0byBhIG1haWxpbmcgbGlzdC4gVGhlcmUgYXJl IHRocmVlIGRpZmZlcmVudCBwb3NzaWJsZSBvcHRpb25zIGZvciBtYWlsaW5n IGxpc3QgY29uZmlybWF0aW9uIHByb2Nlc3NlczoNY29uZmlybSCWIHJlcGx5 IHdpdGggYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgZW1haWwgdGhl IGFkZHJlc3MgZ2l2ZW4uIFRvIGNvbmZpcm0gdGhlIHVzZXIgbXVzdCByZXBs eSB3aXRoIHRoZSBjb3JyZWN0IGluZm9ybWF0aW9uIGdpdmVuIGluIHRoZSBt ZXNzYWdlLg1yZXF1aXJlIGFwcHJvdmFsIJYgc3Vic2NyaXB0aW9uIHJlcXVl c3RzIG11c3QgYmUgYXBwcm92ZWQgYnkgdGhlIGxpc3QgYWRtaW5pc3RyYXRv ci4NY29uZmlybSthcHByb3ZhbCCWIHVzZXJzIHJlcXVlc3Rpbmcgc3Vic2Ny aXB0aW9uIHJlY2VpdmUgYW4gZW1haWwgd2hpY2ggdGhleSBtdXN0IHJlcGx5 IHRvLCB0byBjb25maXJtIHRoZWlyIHJlcXVlc3QgYW5kIHRoZW4gbXVzdCBi ZSBhcHByb3ZlZCBieSB0aGUgYWRtaW5pc3RyYXRvci4NDVRoZSBlbWFpbCBy ZXBsaWVzIGFyZSB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIGNyZWF0aW5nIHN1 YnNjcmlwdGlvbnMgZm9yIG90aGVycyB3aXRob3V0IHRoZWlyIGNvbnNlbnQu DQ0NTWVtYmVyc2hpcCBleHBvc3VyZQ0zLiBXaG8gY2FuIHZpZXcgc3Vic2Ny aXB0aW9uIGxpc3Q/DQ1UaGVyZSBhcmUgdGhyZWUgb3B0aW9ucyBoZXJlIHRv IHJlc3RyaWN0IHdobyBtYXkgc2VlIHRoZSBpbmRleCBvZiBzdWJzY3JpYmVy cyB0byBhIHNwZWNpZmljIG1haWxpbmcgbGlzdCwgdGhleSBhcmUgcmVzdHJp Y3RpbmcgaXQgdG86DUFueW9uZQ1MaXN0IE1lbWJlcnMgb25seQ1MaXN0IEFk bWluaXN0cmF0b3JzIG9ubHkNDVdoZW4gc2V0LCB0aGUgbGlzdCBvZiBzdWJz Y3JpYmVycyBpcyBwcm90ZWN0ZWQgYnkgbWVtYmVyIG9yIGFkbWluIHBhc3N3 b3JkIGF1dGhlbnRpY2F0aW9uLg0NNC4gU2hvdyBtZW1iZXIgYWRkcmVzc2Vz IHNvIHRoZXkncmUgbm90IGRpcmVjdGx5IHJlY29nbmlzYWJsZSBhcyBlbWFp bCBhZGRyZXNzZXM/DQ1TZXR0aW5nIHRoaXMgb3B0aW9uIGNhdXNlcyBtZW1i ZXIgZW1haWwgYWRkcmVzc2VzIHRvIGJlIHRyYW5zZm9ybWVkIHdoZW4gdGhl eSBhcmUgcHJlc2VudGVkIG9uIG1lbWJlcpJzIGxpc3Qgd2ViIHBhZ2VzIChi b3RoIGluIHRleHQgYW5kIGFzIGxpbmtzKSwgc28gdGhleSdyZSBub3QgdHJp dmlhbGx5IHJlY29nbmlzYWJsZSBhcyBlbWFpbCBhZGRyZXNzZXMuIFRoZSBp bnRlbnRpb24gaXMgdG8gcHJldmVudCB0aGUgYWRkcmVzc2VzIGZyb20gYmVp bmcgkXNuYXJmZWSSIHVwIGJ5IGF1dG9tYXRlZCB3ZWIgc2Nhbm5lcnMgZm9y IHVzZSBieSBzcGFtbWVycy4NDQ1HZW5lcmFsIHBvc3RpbmcgZmlsdGVycw01 LiBNdXN0IHBvc3RzIGJlIGFwcHJvdmVkIGJ5IGFuIGFkbWluaXN0cmF0b3I/ DQ1UaGlzIG9wdGlvbiBtZWFucyB0aGF0IGFueSBwb3N0aW5ncyB0byB0aGUg bWFpbGluZyBsaXN0IG11c3QgYmUgYXBwcm92ZWQgYnkgdGhlIGFkbWluaXN0 cmF0b3IsIGlmIHNldCwgYmVmb3JlIGJlaW5nIHRyYW5zbWl0dGVkIHRvIHRo ZSByZXN0IG9mIHRoZSBtYWlsaW5nIGxpc3QuDQ02LiBSZXN0cmljdCBwb3N0 aW5nIHByaXZpbGVnZSB0byBsaXN0IG1lbWJlcnM/DQ1Vc2UgdGhpcyBvcHRp b24gaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgcG9zdGluZyB0byBvbmx5IG1l bWJlcnMgb2YgdGhlIG1haWxpbmcgbGlzdC4gSWYgeW91IHdhbnQgbGlzdCBt ZW1iZXJzIHRvIGJlIGFibGUgdG8gcG9zdCwgcGx1cyBhIGhhbmRmdWwgb2Yg b3RoZXIgcG9zdGVycywgc2VlIHRoZSBwb3N0ZXJzIHNldHRpbmcgYmVsb3cu DShOb3RlOiBUaGlzIGlzIHJlZmVycmVkIHRvIGFzIHRoZSCRbWVtYmVyX3Bv c3Rpbmdfb25seZIgb3B0aW9uKQ0NNy4gQWRkcmVzc2VzIG9mIG1lbWJlcnMg YWNjZXB0ZWQgZm9yIHBvc3RpbmcgdG8gdGhpcyBsaXN0IHdpdGhvdXQgaW1w bGljaXQgYXBwcm92YWwgcmVxdWlyZW1lbnQ6DQ1BZGRpbmcgZW50cmllcyBo ZXJlIHdpbGwgaGF2ZSBvbmUgb2YgdHdvIGVmZmVjdHMsIGFjY29yZGluZyB0 byB3aGV0aGVyIGFub3RoZXIgb3B0aW9uIHJlc3RyaWN0cyBwb3N0aW5nIHRv IG1lbWJlcnMuIChTZWUgIjYuIFJlc3RyaWN0IHBvc3RpbmcgcHJpdmlsZWdl IHRvIGxpc3QgbWVtYmVycz8iIGZvciB3aGV0aGVyIG9yIG5vdCB0aGlzIGlz IGluIGFkZGl0aW9uIHRvIGFsbG93aW5nIHBvc3RpbmcgYnkgbGlzdCBtZW1i ZXJzKQ0NSWYgbWVtYmVyX3Bvc3Rpbmdfb25seSBvcHRpb24gaXM6DVllczog IHRoZW4gZW50cmllcyBhZGRlZCBoZXJlIHdpbGwgaGF2ZSBwb3N0aW5nIHBy aXZpbGVnZSBpbiBhZGRpdGlvbiB0byBsaXN0IG1lbWJlcnMuDU5vOiAgdGhl biBvbmx5IHRoZSBwb3N0ZXJzIGxpc3RlZCBoZXJlIHdpbGwgYmUgYWJsZSB0 byBwb3N0IHdpdGhvdXQgYWRtaW4gYXBwcm92YWwuDQ0NU3BhbS1zcGVjaWZp YyBwb3N0aW5nIGZpbHRlcnMNOC4gTXVzdCBwb3N0cyBoYXZlIGxpc3QgbmFt ZWQgaW4gZGVzdGluYXRpb24gKHRvLCBjYykgZmllbGQgKG9yIGJlIGFtb25n IHRoZSBhY2NlcHRhYmxlIGFsaWFzIG5hbWVzLCBzcGVjaWZpZWQgYmVsb3cp Pw0NTWFueSAoaW4gZmFjdCwgbW9zdCkgc3BhbXMgZG8gbm90IGV4cGxpY2l0 bHkgbmFtZSB0aGVpciBteXJpYWQgZGVzdGluYXRpb25zIGluIHRoZSBleHBs aWNpdCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMuIEluIGZhY3QsIG9mdGVuIHRo ZSCRVG86kiBmaWVsZCBoYXMgYSB0b3RhbGx5IGJvZ3VzIGFkZHJlc3MgZm9y IG9iZnVzY2F0aW9uLiBUaGUgY29uc3RyYWludCBhcHBsaWVzIG9ubHkgdG8g dGhlIGluZm9ybWF0aW9uIGluIHRoZSBhZGRyZXNzIGJlZm9yZSB0aGUgJ0An IHNpZ24sIGJ1dCBzdGlsbCBjYXRjaGVzIGFsbCBzdWNoIHNwYW1zLg0NVGhl IGNvc3QgaXMgdGhhdCB0aGUgbGlzdCB3aWxsIG5vdCBhY2NlcHQgdW5oaW5k ZXJlZCBhbnkgcG9zdGluZ3MgcmVsYXllZCBmcm9tIG90aGVyIGFkZHJlc3Nl cywgdW5sZXNzOg0xLiBUaGUgcmVsYXlpbmcgYWRkcmVzcyBoYXMgdGhlIHNh bWUgbmFtZSwgb3IgDTIuIFRoZSByZWxheWluZyBhZGRyZXNzIG5hbWUgaXMg aW5jbHVkZWQgb24gdGhlIG9wdGlvbnMgdGhhdCBzcGVjaWZ5IGFjY2VwdGFi bGUgYWxpYXNlcyBmb3IgdGhlIGxpc3QuDQ05LiBBbGlhcyBuYW1lcyAocmVn ZXhwcykgd2hpY2ggcXVhbGlmeSBhcyBleHBsaWNpdCCRVG86kiBvciCRQ2M6 kiBkZXN0aW5hdGlvbiBuYW1lcyBmb3IgdGhpcyBsaXN0Og0NQWx0ZXJuYXRl IGxpc3QgbmFtZXMgKHRleHQgYmVmb3JlIHRoZSAnQCcgaW4gYW4gZW1haWwg YWRkcmVzcykgdGhhdCBhcmUgdG8gYmUgYWNjZXB0ZWQgd2hlbiB0aGUgZXhw bGljaXQtZGVzdGluYXRpb24gY29uc3RyYWludCAoYSBwcmlvciBvcHRpb24p IGlzIGFjdGl2ZS4gVGhpcyBlbmFibGVzIHRoaW5ncyBsaWtlIGNhc2NhZGlu ZyBtYWlsaW5nIGxpc3RzIGFuZCByZWxheXMsIHdoaWxlIHRoZSBjb25zdHJh aW50IGlzIHN0aWxsIHByZXZlbnRpbmcgcmFuZG9tIHNwYW1zLg0NMTAuIENl aWxpbmcgb24gYWNjZXB0YWJsZSBudW1iZXIgb2YgcmVjaXBpZW50cyBmb3Ig YSBwb3N0aW5nOg0NSWYgYSBtZXNzYWdlIHRvIHRoZSBtYWlsaW5nIGxpc3Qg aGFzIGEgbnVtYmVyIG9mIHJlY2lwaWVudHMgZXF1YWwgdG8gb3IgZ3JlYXRl ciB0aGFuIHRoZSBudW1iZXIgc3RhdGVkLCBpdCBpcyB0byBiZSBoZWxkIGZv ciBhZG1pbmlzdHJhdGlvbiBhcHByb3ZhbC4gU2V0dGluZyB0aGlzIG51bWJl ciB0byAwIHdpbGwgbWVhbiB0aGF0IG5vIG1heGltdW0gbnVtYmVyIG9mIHJl Y2lwaWVudHMgaXMgc2V0Lg0NMTEuIEFkZHJlc3NlcyB3aG9zZSBwb3N0aW5n cyBhcmUgYWx3YXlzIGhlbGQgZm9yIGFwcHJvdmFsOg0NRW1haWwgYWRkcmVz c2VzIHdob3NlIHBvc3RzIHNob3VsZCBhbHdheXMgYmUgaGVsZCBmb3IgYXBw cm92YWwsIG5vIG1hdHRlciB3aGF0IG90aGVyIG9wdGlvbnMgYXJlIHNldC4g U2VlIGFsc28gdGhlIHN1YnNlcXVlbnQgb3B0aW9uLCB3aGljaCBhcHBsaWVz IHRvIGFyYml0cmFyeSBjb250ZW50IG9mIGFyYml0cmFyeSBoZWFkZXJzLg0N MTIuIEhvbGQgcG9zdHMgd2l0aCBoZWFkZXIgdmFsdWUgbWF0Y2hpbmcgYSBz cGVjaWZpZWQgcmVnZXhwOg0NVXNlIHRoaXMgb3B0aW9uIHRvIHByb2hpYml0 IHBvc3RzIGFjY29yZGluZyB0byBzcGVjaWZpYyBoZWFkZXIgdmFsdWVzLiBU aGUgdGFyZ2V0IHZhbHVlIGlzIGEgcmVndWxhci1leHByZXNzaW9uIGZvciBt YXRjaGluZyBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgaGVhZGVyLiBUaGUgbWF0 Y2ggaXMgZG9uZSBkaXNyZWdhcmRpbmcgbGV0dGVyIGNhc2UuIExpbmVzIGJl Z2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZCBhcyBjb21tZW50cy4NDUZv ciBleGFtcGxlOg0NdG86IC4qQHB1YmxpYy5jb20NDU1lYW5zIHRvIGhvbGQg YWxsIHBvc3RpbmdzIHdpdGggYSCRVG86kiBtYWlsIGhlYWRlciBjb250YWlu aW5nICdAcHVibGljLmNvbScgYW55d2hlcmUgYW1vbmcgdGhlIGFkZHJlc3Nl cy4NDU90aGVyIGV4YW1wbGVzIGluY2x1ZGU6DQ1tZXNzYWdlLWlkOiByZWxh eS5jb21hbmNoZS5kZW5tYXJrLmV1DWZyb206IGxpc3RAbGlzdG1lLmNvbQ1m cm9tOiAuKkB1cGxpbmtwcm8uY29tDQ1Ob3RlIHRoYXQgbGVhZGluZyB3aGl0 ZXNwYWNlIGlzIHRyaW1tZWQgZnJvbSB0aGUgcmVnZXhwLiBUaGlzIGNhbiBi ZSBjaXJjdW12ZW50ZWQgaW4gYSBudW1iZXIgb2Ygd2F5cywgZm9yIGV4YW1w bGUsIGJ5IGVzY2FwaW5nIG9yIGJyYWNrZXRpbmcgaXQuDQ1TZWUgYWxzbyB0 aGUgZm9yYmlkZGVuX3Bvc3RlcnMgb3B0aW9uIGZvciBhIHJlbGF0ZWQgbWVj aGFuaXNtLg0NMTMuIEhpZGUgdGhlIHNlbmRlciBvZiBhIG1lc3NhZ2UsIHJl cGxhY2luZyBpdCB3aXRoIHRoZSBsaXN0IGFkZHJlc3M6DQ1UaGlzIG9wdGlv biByZW1vdmVzIHRoZSBmaWVsZHM6IEZyb20sIFNlbmRlciBhbmQgUmVwbHkt VG8sIGZyb20gYW4gZW1haWwgbWVzc2FnZSBhbmQgcmVwbGFjZXMgdGhlbSB3 aXRoIHRoZSBtYWlsaW5nIGxpc3QgbmFtZS4NDQ1SZWd1bGFyLW1lbWJlciAo bm9uLWRpZ2VzdCkgT3B0aW9ucyANDVRoZSByZWd1bGFyLW1lbWJlciAobm9u LWRpZ2VzdCkgb3B0aW9ucyBhcmUgZm9yIHNldHRpbmcgcG9saWNpZXMgY29u Y2VybmluZyBpbW1lZGlhdGVseSBkZWxpdmVyZWQgbGlzdCB0cmFmZmljLg0N MS4gQ2FuIHN1YnNjcmliZXJzIGNob29zZSB0byByZWNlaXZlIG1haWwgaW1t ZWRpYXRlbHksIHJhdGhlciB0aGFuIGluIGJhdGNoZWQgZGlnZXN0cz8NDTIu IEhlYWRlciBhZGRlZCB0byBtYWlsIHNlbnQgdG8gcmVndWxhciBsaXN0IG1l bWJlcnM6DQ1UaGlzIG9wdGlvbiBhbGxvd3MgZm9yIHRleHQgdG8gYmUgcHJl cGVuZGVkIHRvIHRoZSB0b3Agb2YgZXZlcnkgaW1tZWRpYXRlbHktZGVsaXZl cnkgbWVzc2FnZS4gVGhpcyB0ZXh0IGNhbiBpbmNsdWRlICUoZmllbGQpcyBm b3JtYXQgc3RyaW5ncyB3aGljaCBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUg bGlzdCdzIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChfX2RpY3RfXykuIA0NU29t ZSB1c2VmdWwgZmllbGRzIGFyZTogDQ1yZWFsX25hbWU6CVRoZSAicHJldHR5 IiBuYW1lIG9mIHRoZSBsaXN0LCB3aXRoIGNhcGl0YWxpc2F0aW9uLiANX2lu dGVybmFsX25hbWU6CVRoZSBuYW1lIGJ5IHdoaWNoIHRoZSBsaXN0IGlzIGlk ZW50aWZpZWQgaW4gVVJMcywgd2hlcmUgY2FzZSBpcyBnZXJtYW5lLiANaG9z dF9uYW1lOglUaGUgZG9tYWluLXF1YWxpZmllZCBob3N0IG5hbWUgd2hlcmUg dGhlIGxpc3Qgc2VydmVyIHJ1bnMuIA13ZWJfcGFnZV91cmw6CVRoZSBtYWls bWFuIHJvb3QgVVJMIHRvIHdoaWNoLCBlZywgJ2xpc3RpbmZvLyUoX2ludGVy bmFsX25hbWUpcyBjYW4gYmUgYXBwZW5kZWQgdG8geWllbGQgdGhlIGxpc3Rp bmZvIHBhZ2UgZm9yIHRoZSBsaXN0LiANZGVzY3JpcHRpb246CVRoZSBicmll ZiBkZXNjcmlwdGlvbiBvZiB0aGUgbGlzdC4gDWluZm86CVRoZSBsZXNzIGJy aWVmIGxpc3QgZGVzY3JpcHRpb24uDQ0zLiBGb290ZXIgYWRkZWQgdG8gbWFp bCBzZW50IHRvIHJlZ3VsYXIgbGlzdCBtZW1iZXJzOg0NVGhpcyBvcHRpb24g YWxsb3dzIGZvciB0ZXh0IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBib3R0b20g b2YgZXZlcnkgaW1tZWRpYXRlbHktZGVsaXZlcnkgbWVzc2FnZS4gVGhpcyB0 ZXh0IGNhbiBpbmNsdWRlICUoZmllbGQpcyBmb3JtYXQgc3RyaW5ncyB3aGlj aCBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgbGlzdCdzIGF0dHJpYnV0ZSBk aWN0aW9uYXJ5IChfX2RpY3RfXykuIA0NU29tZSB1c2VmdWwgZmllbGRzIGFy ZTogDQ1yZWFsX25hbWU6CVRoZSAicHJldHR5IiBuYW1lIG9mIHRoZSBsaXN0 LCB3aXRoIGNhcGl0YWxpc2F0aW9uLiANX2ludGVybmFsX25hbWU6CVRoZSBu YW1lIGJ5IHdoaWNoIHRoZSBsaXN0IGlzIGlkZW50aWZpZWQgaW4gVVJMcywg d2hlcmUgY2FzZSBpcyBnZXJtYW5lLiANaG9zdF9uYW1lOglUaGUgZG9tYWlu LXF1YWxpZmllZCBob3N0IG5hbWUgd2hlcmUgdGhlIGxpc3Qgc2VydmVyIHJ1 bnMuIA13ZWJfcGFnZV91cmw6CVRoZSBtYWlsbWFuIHJvb3QgVVJMIHRvIHdo aWNoLCBlZywgJ2xpc3RpbmZvLyUoX2ludGVybmFsX25hbWUpcyBjYW4gYmUg YXBwZW5kZWQgdG8geWllbGQgdGhlIGxpc3RpbmZvIHBhZ2UgZm9yIHRoZSBs aXN0LiANZGVzY3JpcHRpb246CVRoZSBicmllZiBkZXNjcmlwdGlvbiBvZiB0 aGUgbGlzdC4gDWluZm86CVRoZSBsZXNzIGJyaWVmIGxpc3QgZGVzY3JpcHRp b24uDQ0NRGlnZXN0LW1lbWJlciBPcHRpb25zIA0NVGhlIERpZ2VzdC1tZW1i ZXIgb3B0aW9ucyBhcmUgZm9yIHRoZSBiYXRjaGVkLWRlbGl2ZXJ5IGRpZ2Vz dCBjaGFyYWN0ZXJpc3RpY3MgYW5kIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcg Y2hvaWNlcy4NDTEuIENhbiBsaXN0IG1lbWJlcnMgY2hvb3NlIHRvIHJlY2Vp dmUgbGlzdCB0cmFmZmljIGJ1bmNoZWQgaW4gZGlnZXN0cz8NDVNldHRpbmcg dGhpcyBvcHRpb24gdG8gkU5vkiB3aWxsIHJlbW92ZSB0aGUgYWJpbGl0eSBv ZiB0aGUgc3Vic2NyaWJlcnMgdG8gY2hvb3NlIHRvIHJlY2VpdmUgdGhlIG1l c3NhZ2VzIGluIGRpZ2VzdHMuIEluIHRoZSBpbml0aWFsIHN1YnNjcmlwdGlv biBzY3JlZW4sIHRoZSBjaG9pY2UgYm94ZXMgd2lsbCBzaW1wbHkgbm90IGFw cGVhciBhbmQgaW4gdGhlIHVzZXKScyBwZXJzb25hbCBvcHRpb25zIHNlY3Rp b24sIHRoZSBwcm9ncmFtIHdpbGwgcmV0dXJuIHRoYXQgdGhpcyBvcHRpb24g aXMgbm90IGF2YWlsYWJsZS4NDTIuIFdoaWNoIGRlbGl2ZXJ5IG1vZGUgaXMg dGhlIGRlZmF1bHQgZm9yIG5ldyB1c2Vycz8NDVRoZSBjaG9pY2VzIGhlcmUg YXJlIHRvIGhhdmUgdGhlIGRlZmF1bHQgc2V0dGluZyBhcyCRUmVndWxhcpIg b3IgkURpZ2VzdJIgZm9yIHdoZW4gYSBzdWJzY3JpYmVyIGlzIGluaXRpYWxs eSBzdWJzY3JpYmluZyB0byBhIG1haWxpbmcgbGlzdC4NDTMuIFdoZW4gcmVj ZWl2aW5nIGRpZ2VzdHMsIHdoaWNoIGZvcm1hdCBpcyBkZWZhdWx0Pw0NVGhl IGNob2ljZXMgaGVyZSBhcmUgdG8gaGF2ZSB0aGUgZGVmYXVsdCBzZXR0aW5n IGFzIJFNSU1FkiBvciCRUGxhaW6SIGZvciB3aGVuIGEgc3Vic2NyaWJlciBp cyBpbml0aWFsbHkgc3Vic2NyaWJpbmcgdG8gYSBtYWlsaW5nIGxpc3QgYW5k IHNldHRpbmcgdGhlaXIgbWFpbCBmb3JtYXQuDQ00LiBIb3cgYmlnIGluIEti IHNob3VsZCBhIGRpZ2VzdCBiZSBiZWZvcmUgaXQgZ2V0cyBzZW50IG91dD8N DVRoaXMgb3B0aW9uIHNldHMgdGhlIG1heGltdW0gc2l6ZSBpbiBLaWxvYnl0 ZXMgYSBkaWdlc3QgY2FuIGdldCBiZWZvcmUgaXQgaXMgc2VudCBvdXQuIFRo ZSBkaWdlc3QgbWF5IHN0aWxsIGJlIHNlbnQgb3V0IGF0IHRoZSBlbmQgb2Yg dGhlIGRheSBpZiB0aGlzIHRvdGFsIGlzIG5vdCByZWFjaGVkLiBJZiB0aGUg dG90YWwgaXMgcmVhY2hlZCwgdGhlbiB0aGVyZSBtYXkgYmUgbW9yZSB0aGFu IG9uZSBkaWdlc3Qgc2VudCBvdXQgZHVyaW5nIGEgZGF5Lg0NNS4gU2hvdWxk IGEgZGlnZXN0IGJlIGRpc3BhdGNoZWQgZGFpbHkgd2hlbiB0aGUgc2l6ZSB0 aHJlc2hvbGQgaXNuJ3QgcmVhY2hlZD8NDUlmIHRoaXMgb3B0aW9uIGlzIHNl dCB0aGVuIGRpZ2VzdHMgd2lsbCBiZSBzZW50IG91dCB3aGVuIHRoZSB0b3Rh bCBhYm92ZSBpcyByZWFjaGVkIGFuZCBtYXkgYWxzbyBiZSBzZW50IG91dCBh dCB0aGUgZW5kIG9mIHRoZSBkYXkgaWYgbW9yZSBtYWlsIGlzIHJlY2VpdmVk IGFmdGVyIHRoZSB0aHJlc2hvbGQgc2l6ZSBkaWdlc3QgaXMgc2VudC4gVGhl IGRpZ2VzdCB3aWxsIGFsc28gYmUgc2VudCBvdXQgYXQgdGhlIGVuZCBvZiB0 aGUgZGF5IGlmIHRoaXMgdG90YWwgaXMgbm90IHJlYWNoZWQuIA0NNi4gSGVh ZGVyIGFkZGVkIHRvIGV2ZXJ5IGRpZ2VzdDoNDVRoaXMgb3B0aW9uIGFsbG93 cyBmb3IgdGV4dCB0byBiZSBhdHRhY2hlZCAoYXMgYW4gaW5pdGlhbCBtZXNz YWdlLCBiZWZvcmUgdGhlIHRhYmxlIG9mIGNvbnRlbnRzKSB0byB0aGUgdG9w IG9mIGRpZ2VzdHMuIFRoaXMgdGV4dCBjYW4gaW5jbHVkZSAlKGZpZWxkKXMg Zm9ybWF0IHN0cmluZ3Mgd2hpY2ggYXJlIHJlc29sdmVkIGFnYWluc3QgdGhl IGxpc3QncyBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoX19kaWN0X18pLiANDVNv bWUgdXNlZnVsIGZpZWxkcyBhcmU6IA0NcmVhbF9uYW1lOglUaGUgInByZXR0 eSIgbmFtZSBvZiB0aGUgbGlzdCwgd2l0aCBjYXBpdGFsaXNhdGlvbi4gDV9p bnRlcm5hbF9uYW1lOglUaGUgbmFtZSBieSB3aGljaCB0aGUgbGlzdCBpcyBp ZGVudGlmaWVkIGluIFVSTHMsIHdoZXJlIGNhc2UgaXMgZ2VybWFuZS4gDWhv c3RfbmFtZToJVGhlIGRvbWFpbi1xdWFsaWZpZWQgaG9zdCBuYW1lIHdoZXJl IHRoZSBsaXN0IHNlcnZlciBydW5zLiANd2ViX3BhZ2VfdXJsOglUaGUgbWFp bG1hbiByb290IFVSTCB0byB3aGljaCwgZWcsICdsaXN0aW5mby8lKF9pbnRl cm5hbF9uYW1lKXMgY2FuIGJlIGFwcGVuZGVkIHRvIHlpZWxkIHRoZSBsaXN0 aW5mbyBwYWdlIGZvciB0aGUgbGlzdC4gDWRlc2NyaXB0aW9uOglUaGUgYnJp ZWYgZGVzY3JpcHRpb24gb2YgdGhlIGxpc3QuIA1pbmZvOglUaGUgbGVzcyBi cmllZiBsaXN0IGRlc2NyaXB0aW9uLg0NNy4gRm9vdGVyIGFkZGVkIHRvIGV2 ZXJ5IGRpZ2VzdDoNDVRoaXMgb3B0aW9uIGFsbG93cyBmb3IgdGV4dCB0byBi ZSBhdHRhY2hlZCAoYXMgYSBmaW5hbCBtZXNzYWdlKSB0byB0aGUgYm90dG9t IG9mIGRpZ2VzdHMuIFRoaXMgdGV4dCBjYW4gaW5jbHVkZSAlKGZpZWxkKXMg Zm9ybWF0IHN0cmluZ3Mgd2hpY2ggYXJlIHJlc29sdmVkIGFnYWluc3QgdGhl IGxpc3QncyBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoX19kaWN0X18pLiANDVNv bWUgdXNlZnVsIGZpZWxkcyBhcmU6IA0NcmVhbF9uYW1lOglUaGUgInByZXR0 eSIgbmFtZSBvZiB0aGUgbGlzdCwgd2l0aCBjYXBpdGFsaXNhdGlvbi4gDV9p bnRlcm5hbF9uYW1lOglUaGUgbmFtZSBieSB3aGljaCB0aGUgbGlzdCBpcyBp ZGVudGlmaWVkIGluIFVSTHMsIHdoZXJlIGNhc2UgaXMgZ2VybWFuZS4gDWhv c3RfbmFtZToJVGhlIGRvbWFpbi1xdWFsaWZpZWQgaG9zdCBuYW1lIHdoZXJl IHRoZSBsaXN0IHNlcnZlciBydW5zLiANd2ViX3BhZ2VfdXJsOglUaGUgbWFp bG1hbiByb290IFVSTCB0byB3aGljaCwgZWcsICdsaXN0aW5mby8lKF9pbnRl cm5hbF9uYW1lKXMgY2FuIGJlIGFwcGVuZGVkIHRvIHlpZWxkIHRoZSBsaXN0 aW5mbyBwYWdlIGZvciB0aGUgbGlzdC4gDWRlc2NyaXB0aW9uOglUaGUgYnJp ZWYgZGVzY3JpcHRpb24gb2YgdGhlIGxpc3QuIA1pbmZvOglUaGUgbGVzcyBi cmllZiBsaXN0IGRlc2NyaXB0aW9uLg0NDUZvciBleGFtcGxlOg1fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0lKHJl YWxfbmFtZSlzIG1haWxsaXN0ICAtICAlKHJlYWxfbmFtZSlzQCUoaG9zdF9u YW1lKXMNJSh3ZWJfcGFnZV91cmwpc2xpc3RpbmZvLyUoX2ludGVybmFsX25h bWUpcw0NQm91bmNlIE9wdGlvbnMgDQ1Cb3VuY2Ugb3B0aW9ucyBhcmUgZm9y IHNldHRpbmcgcG9saWNpZXMgcmVnYXJkaW5nIHN5c3RlbWF0aWMgcHJvY2Vz c2luZyBvZiBib3VuY2UgbWVzc2FnZXMsIHRvIGhlbHAgYXV0b21hdGUgcmVj b2duaXRpb24gYW5kIGhhbmRsaW5nIG9mIGRlZnVuY3QgYWRkcmVzc2VzLg0N MS4gVHJ5IHRvIGZpZ3VyZSBvdXQgZXJyb3IgbWVzc2FnZXMgYXV0b21hdGlj YWxseT8NDTIuIE1pbmltdW0gbnVtYmVyIG9mIGRheXMgYW4gYWRkcmVzcyBo YXMgYmVlbiBub24tZmF0YWxseSBiYWQgYmVmb3JlIHdlIHRha2UgYWN0aW9u Lg0NMy4gTWluaW11bSBudW1iZXIgb2YgcG9zdHMgdG8gdGhlIGxpc3Qgc2lu Y2UgbWVtYmVycyBmaXJzdCBib3VuY2UgYmVmb3JlIHdlIGNvbnNpZGVyIHJl bW92aW5nIHRoZW0gZnJvbSB0aGUgbGlzdC4NDTQuIE1heGltdW0gbnVtYmVy IG9mIG1lc3NhZ2VzIHlvdXIgbGlzdCBnZXRzIGluIGFuIGhvdXIuIChCb3Vu Y2UgZGV0ZWN0aW9uIGZpbmRzIHRoaXMgaW5mb3JtYXRpb24gdXNlZnVsKQ0N NS4gQWN0aW9uIHdoZW4gY3JpdGljYWwgb3IgZXhjZXNzaXZlIGJvdW5jZXMg YXJlIGRldGVjdGVkLg0NVGhlIG9wdGlvbnMgYXZhaWxhYmxlIHdpdGggdGhp cyBjYXRlZ29yeSBhcmU6DURvIE5vdGhpbmc6CUFzIGl0IHNheXMuDURpc2Fi bGUgYW5kIE5vdGlmeSBNZToJRGlzYWJsZSB1c2VyIGZyb20gbWFpbGluZyBs aXN0IGFuZCBub3RpZnkgYWRtaW5pc3RyYXRvciBvZiB0aGUgZGV0YWlscy4N RGlzYWJsZSBhbmQgRG9uknQgTm90aWZ5IE1lOglEaXNhYmxlIHVzZXIgZnJv bSBtYWlsaW5nIGxpc3QgYW5kIGRvIG5vdCBub3RpZnkgdGhlIGFkbWluaXN0 cmF0b3Igb2YgdGhlIGZhdWx0Lg1SZW1vdmUgYW5kIE5vdGlmeSBNZToJUmVt b3ZlIHVzZXIgZnJvbSBtYWlsaW5nIGxpc3QgYW5kIG5vdGlmeSB0aGUgYWRt aW5pc3RyYXRvci4NDQ1BcmNoaXZhbCBPcHRpb25zIA0NQXJjaGl2YWwgb3B0 aW9ucyBjb3ZlciBwb2xpY2llcyByZWdhcmRpbmcgdGhlIGFyY2hpdmluZyBv ZiBtZXNzYWdlcyBzZW50IGZyb20gdGhlIG1haWxpbmcgbGlzdC4NDTEuIEFy Y2hpdmUgbWVzc2FnZXM/DQ1UaGlzIG9wdGlvbnMgc2V0cyB3aGV0aGVyIG1l c3NhZ2VzIHNlbnQgdG8gb3IgZnJvbSB0aGUgbWFpbGluZyBsaXN0IHNob3Vs ZCBiZSBhcmNoaXZlZC4NDTIuIElzIGFyY2hpdmUgZmlsZSBzb3VyY2UgZm9y IHB1YmxpYyBvciBwcml2YXRlIGFyY2hpdmFsPw0NV2hlbiB0aGUgb3B0aW9u IGlzIHNldCB0byBwdWJsaWMsIHRoZW4gYW55b25lIG1heSBsb29rIGF0IHRo ZSBhcmNoaXZlLiBIb3dldmVyLCBpZiB0aGUgb3B0aW9uIGlzIHNldCB0byBw cml2YXRlLCB0aGVuIG9ubHkgbGlzdCBtZW1iZXJzIGFuZCBhZG1pbmlzdHJh dG9ycyBtYXkgdmlldyB0aGUgYXJjaGl2ZS4NDTMuIFNldCBkYXRlIGluIGFy Y2hpdmUgdG8gd2hlbiB0aGUgbWFpbCBpcyBjbGFpbWVkIHRvIGhhdmUgYmVl biBzZW50IG9yIHRvIHRoZSB0aW1lIHdlIHJlc2VuZCBpdD8NDTQuIEhvdyBv ZnRlbiBzaG91bGQgYSBuZXcgYXJjaGl2ZSB2b2x1bWUgYmUgc3RhcnRlZD8N DVRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3IgaG93IG9mdGVuIGEgbmV3IGFy Y2hpdmUgc2hvdWxkIGJlIHN0YXJ0ZWQgYXJlIHllYXJseSwgbW9udGhseSwg cXVhcnRlcmx5LCB3ZWVrbHkgYW5kIGRhaWx5Lg0NDU1haWwtTmV3cyBhbmQg TmV3cy1NYWlsIGdhdGV3YXlzDQ1UaGlzIHNlY3Rpb24gaXMgaW5jbHVkZWQg Zm9yIHNwZWNpZnlpbmcgTWFpbC10by1OZXdzIGFuZCBOZXdzLXRvLU1haWwg Z2F0ZXdheSBzZXJ2aWNlcy4NDTEuIFRoZSBJbnRlcm5ldCBhZGRyZXNzIG9m IHRoZSBtYWNoaW5lIHlvdXIgTmV3cyBzZXJ2ZXIgaXMgcnVubmluZyBvbjoN DVRoZSBOZXdzIHNlcnZlciBpcyBub3QgcGFydCBvZiBNYWlsbWFuIHByb3Bl ci4gVGhlcmVmb3JlLCB5b3UgaGF2ZSB0byBhbHJlYWR5IGhhdmUgYWNjZXNz IHRvIGEgTk5UUCBzZXJ2ZXIsIGFuZCB0aGF0IE5OVFAgc2VydmVyIGhhcyB0 byByZWNvZ25pc2UgdGhlIG1hY2hpbmUgdGhpcyBtYWlsaW5nIGxpc3QgcnVu cyBvbiBhcyBhIG1hY2hpbmUgY2FwYWJsZSBvZiByZWFkaW5nIGFuZCBwb3N0 aW5nIG5ld3MuDQ0yLiBUaGUgbmFtZSBvZiB0aGUgVXNlbmV0IGdyb3VwIHRv IGdhdGV3YXkgdG8gYW5kL29yIGZyb20uDQ0zLiBTaG91bGQgcG9zdHMgdG8g dGhlIG1haWxpbmcgbGlzdCBiZSByZXNlbnQgdG8gdGhlIG5ld3Nncm91cD8N DTQuIFNob3VsZCBuZXdzZ3JvdXAgcG9zdHMgbm90IHNlbnQgZnJvbSB0aGUg bGlzdCBiZSByZXNlbnQgdG8gdGhlIGxpc3Q/DQ0NCQkTIFBBR0UgFDE5FQ0N DQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAQAAAEEAAAVBAAAFwQAABgEAAAZBAAAVAQAAFUEAABjBAAA ZAQAAHIEAABzBAAAjQQAAI4EAACPBAAAkAQAAJEEAACfBAAAoAQAALoEAAC7 BAAAvAQAAL0EAAC+BAAA0QQAANIEAADsBAAA7QQAAO4EAADvBAAA8AQAAAsF AAAMBQAAJgUAACcFAAAoBQAAKQUAACoFAABEBQAARQUAAF8FAABgBQAAYQUA AGIFAABjBQAAdwUAAHgFAACSBQAAkwUAAJQFAACVBQAAlgUAAKYFAACnBQAA wQUAAMIFAADDBQAAxAUAAMUFAADWBQAA1wUAAP0A/fb9AO3p7ebf5tXf5t/m 3+bL3+bf5t/mwd/m3+bf5rff5t/m3+at3+bf5t/mo9/m3+bf5pnf5t/m3wAA EwIIgQNqG3UAAAYIAVUIAW1IAAQTAgiBA2qedAAABggBVQgBbUgABBMCCIED aiF0AAAGCAFVCAFtSAAEEwIIgQNqpHMAAAYIAVUIAW1IAAQTAgiBA2oncwAA BggBVQgBbUgABBMCCIEDaqpyAAAGCAFVCAFtSAAEEwIIgQNqLXIAAAYIAVUI AW1IAAQNA2oAAAAAVQgBbUgABARtSAAEAAdoCABuSAkEEANqAAAAAFUIAWgI AG5ICQQADQNqAAAAAENKJABVCAEEQ0okADwABAAAAQQAABUEAAAWBAAAFwQA ABkEAAAaBAAAGwQAABwEAAAdBAAAHgQAAB8EAAAgBAAAIQQAACsEAAA6BAAA OwQAADwEAAA9BAAAPgQAAD8EAABABAAAUwQAAFQEAABlBAAAkgQAAL8EAADx BAAA/QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAA AAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkA AAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPYAAAAAAAAA AAAAAAD2AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAA AAAAAAAA9AAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA 7gAAAAAAAAAAAAAAAO4AAAAAAAAAAAAAAADoAAAAAAAAAAAAAAAAAAAFFAAN xgUAAWggAgAFFQANxgUAAWggAgABAQADAAADJAEAAQAAAAETAAABDwAAGwAE AAABBAAAFQQAABYEAAAXBAAAGQQAABoEAAAbBAAAHAQAAB0EAAAeBAAAHwQA ACAEAAAhBAAAKwQAADoEAAA7BAAAPAQAAD0EAAA+BAAAPwQAAEAEAABTBAAA VAQAAGUEAACPBAAAkAQAAJIEAAC8BAAAvQQAAL8EAADuBAAA7wQAAPEEAAAo BQAAKQUAACsFAABhBQAAYgUAAGQFAACUBQAAlQUAAJcFAADDBQAAxAUAAMYF AADzBQAA9AUAAPYFAAApBgAAKwYAAC0GAABaBgAAXAYAAF4GAACfBgAAoQYA AKMGAADWBgAA2AYAANoGAAAGBwAACAcAAAoHAAA4BwAAOgcAADwHAAB6BwAA fAcAAH4HAACABwAAjgcAAI8HAACLCwAA3QsAAN4LAADfCwAA4AsAAO0LAADu CwAAAAwAAAEMAADNDQAAzg0AAAcQAAAIEAAA+hEAAPsRAACVEwAAlhMAAJcT AACxEwAAshMAAJAVAACRFQAAYxcAAGQXAAD9+/39/QAAAAAAAAAAAAAAAAAA AAD4AAD29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb2 9vb29vYA+AAAAAAAAPgA8wAAAAAAAAAAAADzAAAAAAAAAAUCAgAFAQIBAQAF AgEABQADAhMAAwIPAABg8QQAACsFAABkBQAAlwUAAMYFAAD2BQAALQYAAF4G AACjBgAA2gYAAAoHAAA8BwAAfgcAAIAHAACOBwAAjwcAAIsLAADdCwAA3gsA AN8LAADgCwAA7QsAAO4LAAAADAAAAQwAAM0NAADODQAABxAAAPkAAAAAAAAA AAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAA AAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA +QAAAAAAAAAAAAAAAPEAAAAAAAAAAAAAAADvAAAAAAAAAAAAAAAA8QAAAAAA AAAAAAAAAPEAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAA APEAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAAAPEAAAAA AAAAAAAAAADtAAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAPEAAAAAAAAAAAAA AADxAAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAB AQAAAQAAAAUVAA3GBQABaCACAAUUAA3GBQABaCACABvXBQAA8QUAAPIFAADz BQAA9AUAAPUFAAAMBgAADQYAACcGAAAoBgAAKQYAACsGAAAsBgAAPQYAAD4G AABYBgAAWQYAAFoGAABcBgAAXQYAAIIGAACDBgAAnQYAAJ4GAACfBgAAoQYA AKIGAAC5BgAAugYAANQGAADVBgAA1gYAANgGAADZBgAA6QYAAOoGAAAEBwAA BQcAAAYHAAAIBwAACQcAABsHAAAcBwAANgcAADcHAAA4BwAAOgcAADsHAABd BwAAXgcAAHgHAAB5BwAAegcAAHwHAAB9BwAAfgcAAH8HAABSFwAAYBcAAOgX AAD98+z97P3s/eLs/ez97P3Y7P3s/ez9zuz97P3s/cTs/ez97P267P3s/ez9 sOz97P3s/abs/ez9nQCYAAAAAAAACE9KAwBRSgMAABADagAAAABVCAFoCABu SAkEABMCCIEDagN5AAAGCAFVCAFtSAAEEwIIgQNqhngAAAYIAVUIAW1IAAQT AgiBA2oJeAAABggBVQgBbUgABBMCCIEDaox3AAAGCAFVCAFtSAAEEwIIgQNq D3cAAAYIAVUIAW1IAAQTAgiBA2qSdgAABggBVQgBbUgABBMCCIEDahV2AAAG CAFVCAFtSAAEDQNqAAAAAFUIAW1IAAQTAgiBA2qYdQAABggBVQgBbUgABARt SAAEOwcQAAAIEAAA+hEAAPsRAACVEwAAlhMAAJcTAACxEwAAshMAAJAVAACR FQAAYxcAAGQXAADDFwAA5xcAAOgXAAAXGAAAPRgAAD4YAACDGAAAhBgAAMgY AAAHGQAARRkAAJwZAACdGQAA4BkAAOUZAADmGQAAPBoAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA/QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAA AAAAAAAAAAABAwAAAQIAAAEAAAAdZBcAAMMXAADnFwAA6BcAABcYAAA9GAAA PhgAAIMYAACEGAAAyBgAAAcZAABFGQAAnBkAAJ0ZAADgGQAA5RkAAOYZAAA8 GgAAPRoAAEwaAABNGgAAkxoAANcaAADeGgAA3xoAACUbAABtGwAAbhsAAG8b AADEGwAAxRsAAK0dAACuHQAArx0AAMgdAADJHQAAOiAAADsgAAASIQAAEyEA ABQhAAAnIQAAKCEAABgkAAAZJAAAKiUAACslAABNJgAA/yYAAB0oAAA0KQAA 7CkAABsqAABzKgAAdCoAAJ4qAAByKwAAcysAAK4rAADuKwAA7ysAACMsAACb LAAAnCwAAOgsAADpLAAAIC0AAHUtAAB2LQAAdy0AAHgtAACHLQAAiC0AAGYw AABnMAAAaDAAAGkwAAB5MAAAejAAAG0xAABuMQAAkDEAAJExAABiMwAAYzMA AG0zAAChMwAA1DMAAAo0AAA/NAAAQDQAAGw0AABtNAAA9jUAAAD8AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkAAAAAAAD5AAAAAAD29vb29vPx APPvAPPvAPPxAPMA8/Hx8fHs8fHx8fH58fHx/PHx8fHx8fHx8fzx8QAAAAUC AQAFAAMCEgADAhEABQgCAAkBBQgBAAkBBQICAAUBBQIDAAUCAF3oFwAARxgA AHwYAACCGAAA3RgAAPwYAAAHGQAAJhkAAGcZAACOGQAARRoAAEsaAABGGwAA axsAAGwbAABtGwAAbxsAACslAAA2JQAATSYAAGUmAAD/JgAAEScAABInAAAT JwAAHSgAACwoAAAtKAAALigAADQpAABBKQAAbzMAAHwzAAB9MwAAhDMAAKEz AACiMwAArzMAALAzAAC3MwAA1TMAANYzAADjMwAA5DMAAOszAAAKNAAACzQA ABg0AAAZNAAAIDQAAD80AACkSgAApUoAAOVaAADxWgAAC18AAB9fAADsYQAA BGIAADFmAABPZgAA2G0AAOptAABwbgAAwm4AADeDAADJgwAA3IwAAN2MAADj jAAA5IwAAOaMAADnjAAA64wAAPnt+e357fnt+e357fnt4d4A3ADcANwA3ADc ANwA3AD51t75APnW3vkA+dbe+QD51t75ANQA3ADcANwA3AD5APkA+QDNys3F zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDBKHwBtSAAEAAQwSh8AAA0D agAAAAAwSh8AVQgBAzUIgQoJagEA3vBDShIAAAM2CIEEQ0oSAAAWQioBQ0oS AE9KAgBRSgIAaAgAbkgJBAAWQioBQ0oSAE9KAwBRSgMAaAgAbkgJBAAMQ0oS AE9KAwBRSgMASTwaAAA9GgAATBoAAE0aAACTGgAA1xoAAN4aAADfGgAAJRsA AG0bAABuGwAAbxsAAMQbAADFGwAArR0AAK4dAACvHQAAyB0AAMkdAAA6IAAA OyAAABIhAAATIQAAFCEAACchAAAoIQAAGCQAABkkAAAqJQAAKyUAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA/QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAAAAAAAAAAAQIAAAEAAAAdKyUAAE0mAAD/JgAAHSgAADQp AADsKQAAGyoAAHMqAAB0KgAAnioAAHIrAABzKwAArisAAO4rAADvKwAAIywA AJssAACcLAAA6CwAAOksAAAgLQAAdS0AAHYtAAB3LQAAeC0AAIctAAD6AAAA AAAAAAAAAAAA+gAAAAAAAAAAAAAAAPoAAAAAAAAAAAAAAAD6AAAAAAAAAAAA AAAA+gAAAAAAAAAAAAAAAO0AAAAAAAAAAAAAAADpAAAAAAAAAAAAAAAA4wAA AAAAAAAAAAAAAO0AAAAAAAAAAAAAAADhAAAAAAAAAAAAAAAA4wAAAAAAAAAA AAAAAO0AAAAAAAAAAAAAAADhAAAAAAAAAAAAAAAA4wAAAAAAAAAAAAAAAO0A AAAAAAAAAAAAAADpAAAAAAAAAAAAAAAA4wAAAAAAAAAAAAAAAO0AAAAAAAAA AAAAAADjAAAAAAAAAAAAAAAA7QAAAAAAAAAAAAAAAOkAAAAAAAAAAAAAAADp AAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAN0AAAAAAAAAAAAAAADbAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAEBAAADEQAPhAAAAAESAAAFAAAPhOEDEYQK/gAD EQAPhPwEAAwAAAomAAtGAgAPhOEDEYQK/g3GBAFoAQAFAAAKJgALRgEAABmH LQAAiC0AAGYwAABnMAAAaDAAAGkwAAB5MAAAejAAAG0xAABuMQAAkDEAAJEx AABiMwAAYzMAAG0zAAChMwAA1DMAAAo0AAA/NAAAQDQAAGw0AABtNAAA9jUA APc1AACqNgAAqzYAANQ2AADVNgAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAA AAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD5AAAA AAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD7AAAAAAAAAAAA AAAA9wAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA8wAA AAAAAAAAAAAAAPMAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA7QAAAAAAAAAA AAAAAPMAAAAAAAAAAAAAAADtAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAPcA AAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAPMAAAAAAAAA AAAAAADzAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABREAD4TFAhGECwAAAxEAD4TFAgAB AwAAAQIAAAMRAA+EAAAAG/Y1AAD3NQAAqjYAAKs2AADUNgAA1TYAABc4AAAY OAAAODgAADo4AADXOQAA2DkAAAE7AAACOwAA/zsAAAA8AAAsPAAALTwAAHo9 AAB7PQAAvT0AAL49AADBPwAAwj8AAOw/AADtPwAAtUAAALZAAAD/QAAAAEEA AEFCAABCQgAAp0IAAKhCAACpQwAAqkMAAPxDAAD9QwAAqEUAAKlFAACqRQAA JkYAACdGAADlRwAA5kcAABFIAAASSAAALkkAAC9JAABfSQAAYEkAAKVKAACm SgAAFUsAABZLAAAvTAAAMEwAAHFMAAByTAAAF00AABhNAABZTQAAWk0AAHNO AAB0TgAAoE4AAKFOAABDTwAARE8AAIxPAACNTwAA5k8AAOdPAAAIUAAACVAA AA1RAAAOUQAANVEAADZRAAAIUwAACVMAAApTAAAhUwAAIlMAAA1UAAAOVAAA IlQAACNUAAD+VQAA/1UAACRWAABrVgAAmlYAANZWAAAVVwAAalcAAMFXAAD9 /f36/f39+v39/f39/f36/f39+v39/fr9/f36/f39+v39/fr9/f39+v39/fr9 /f36/f39+v39/fr9/f36/f39+v39/fr9/f36/f39+v39/f33/f39+v39/fLy 8vLy8vIIAhEACA0ACQEABQICAAUBBQIDAAUCAwIRAABg1TYAABc4AAAYOAAA ODgAADo4AADXOQAA2DkAAAE7AAACOwAA/zsAAAA8AAAsPAAALTwAAHo9AAB7 PQAAvT0AAL49AADBPwAAwj8AAOw/AADtPwAAtUAAALZAAAD/QAAAAEEAAEFC AABCQgAAp0IAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA9QAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcAAAAAAAAA AAAAAAD1AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3 AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7AAAAAAAA AAAAAAAA9wAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA +wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA9wAAAAAA AAAAAAAAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAFAwAPhBwBEYTk/gABAwAAAxEAD4QAAAADEQAP hMUCABunQgAAqEIAAKlDAACqQwAA/EMAAP1DAACoRQAAqUUAAKpFAAAmRgAA J0YAAOVHAADmRwAAEUgAABJIAAAuSQAAL0kAAF9JAABgSQAApUoAAKZKAAAV SwAAFksAAC9MAAAwTAAAcUwAAHJMAAAXTQAA+wAAAAAAAAAAAAAAAPcAAAAA AAAAAAAAAAD7AAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAA AAD3AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADxAAAA AAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7AAAAAAAAAAAA AAAA7wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA+wAA AAAAAAAAAAAAAO8AAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA9wAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPcA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAAAPsAAAAAAAAA AAAAAAD3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAAFAwAPhKoB EYRW/gADEQAPhMUCAAMRAA+EAAAAGxdNAAAYTQAAWU0AAFpNAABzTgAAdE4A AKBOAAChTgAAQ08AAERPAACMTwAAjU8AAOZPAADnTwAACFAAAAlQAAANUQAA DlEAADVRAAA2UQAACFMAAAlTAAAKUwAAIVMAACJTAAANVAAADlQAACJUAAAj VAAA+wAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+wAA AAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9QAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPUA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPkAAAAAAAAA AAAAAAD1AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD1AAAAAAAA AAAAAAAA9QAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA 9QAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9QAAAAAA AAAAAAAAAAAAAAAAAAABAgAAAxEAD4QAAAABAwAAAxEAD4TFAgAcI1QAAP5V AAD/VQAAJFYAAGtWAACaVgAA1lYAABVXAABqVwAAwVcAAMJXAADDVwAAK1gA ACxYAABGWAAAR1gAADxZAAA9WQAAUFoAAFFaAABSWgAAY1oAAGRaAADjWgAA 5FoAAOVaAADxWgAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADrAAAAAAAA AAAAAAAA6wAAAAAAAAAAAAAAAOsAAAAAAAAAAAAAAADrAAAAAAAAAAAAAAAA 6wAAAAAAAAAAAAAAAOsAAAAAAAAAAAAAAADrAAAAAAAAAAAAAAAA+wAAAAAA AAAAAAAAAPsAAAAAAAAAAAAAAADlAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAA AOMAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAA AAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAA AADhAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD7AAAA AAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAAAAAAAAAECAAAB AwAABREAD4Q3AhGEyf0ADxEACiYAC0YNAA+ETwgRhJz5DcYKAWgBAsUCwQcA AAADEQAPhAAAABrBVwAAwlcAAMNXAAArWAAALFgAAEZYAABHWAAAPFkAAD1Z AABQWgAAUVoAAFJaAABjWgAAZFoAAONaAADkWgAA5VoAAPFaAAA5WwAAOlsA ABRcAAAVXAAAQlwAAENcAAAKXQAAqF0AAP1dAACiXgAAo14AAAlfAAAKXwAA C18AAB9fAABCXwAAQ18AAMlfAADQXwAA4l8AAPtfAAD8XwAAV2AAAFhgAACq YAAAq2AAAOphAADrYQAA7GEAAARiAAAzYgAANGIAANViAADWYgAABWMAAAZj AADIYwAACGQAAAlkAABqZAAAa2QAAGFlAABiZQAAhGUAANtlAAAvZgAAMGYA ADFmAABPZgAAxmYAAMdmAAD7ZwAA/GcAAGRoAACTaAAA+WgAAPpoAABdaQAA XmkAAG5qAABvagAArWoAAK5qAACUawAAlWsAANBrAADRawAAkGwAAJFsAADP bAAA0GwAAMltAADKbQAA120AANhtAAD9/f39+v39/f39/ff9/f39/fr9/f36 /f3y8vL9/f39/fr9/e3t7f39/fr9/f39/fr9/f36/f39/fr9/f396Oj9/f36 /f39/f39/fr9/f36/f39+v39/fr9/f39/QgCEQAIEQAJAQAIAhEACBAACQEA CAIRAAgPAAkBAAUCAgAFAQUCAwAFAgMCEQAAXPFaAAA5WwAAOlsAABRcAAAV XAAAQlwAAENcAAAKXQAAqF0AAP1dAACiXgAAo14AAAlfAAAKXwAAC18AAB9f AABCXwAAQ18AAMlfAADQXwAA4l8AAPtfAAD8XwAAV2AAAFhgAACqYAAA/QAA AAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAAAOkA AAAAAAAAAAAAAADpAAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAPUAAAAAAAAA AAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5 AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD1AAAAAAAA AAAAAAAA5AAAAAAAAAAAAAAAAOQAAAAAAAAAAAAAAADkAAAAAAAAAAAAAAAA +QAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA3gAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAwAPhBwBEYTk/gURAAomAAtGEAAM EQAKJgALRg8AD4SKBQ3GBwFoAQGKBQAAAxEAD4TFAgADEQAPhAAAAAEDAAAZ qmAAAKtgAADqYQAA62EAAOxhAAAEYgAAM2IAADRiAADVYgAA1mIAAAVjAAAG YwAAyGMAAAhkAAAJZAAAamQAAGtkAABhZQAAYmUAAIRlAADbZQAAL2YAADBm AAAxZgAAT2YAAMZmAADHZgAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3 AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD1AAAAAAAA AAAAAAAA9wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA 9QAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAA AAAAAAAAAPcAAAAAAAAAAAAAAADvAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAA APsAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAOEAAAAA AAAAAAAAAADhAAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAA AAD3AAAAAAAAAAAAAAAA7wAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAAAAAAA DhEACiYAC0YRAA+EGAYRhO78DcYHAWgBAW4EAAAFAwAPhBwBEYTk/gABAwAA AxEAD4QAAAADEQAPhMUCABrHZgAA+2cAAPxnAABkaAAAk2gAAPloAAD6aAAA XWkAAF5pAABuagAAb2oAAK1qAACuagAAlGsAAJVrAADQawAA0WsAAJBsAACR bAAAz2wAANBsAADJbQAAym0AANdtAADYbQAA6m0AAOttAAD7AAAAAAAAAAAA AAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA9QAA AAAAAAAAAAAAAPEAAAAAAAAAAAAAAADrAAAAAAAAAAAAAAAA8QAAAAAAAAAA AAAAAPsAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAPsA AAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA8QAAAAAAAAAAAAAAAOkAAAAAAAAA AAAAAADxAAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADp AAAAAAAAAAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAAD7AAAAAAAA AAAAAAAA+wAAAAAAAAAAAAAAAPsAAAAAAAAAAAAAAADlAAAAAAAAAAAAAAAA 5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEQAPhPwEAAEDAAAFAwAPhBwB EYTk/gADEQAPhAAAAAURAA+E/AQRhOX+AAMRAA+ExQIAGthtAADqbQAA620A AFZuAABXbgAAb24AAHBuAACWbgAArG4AAMNuAADEbgAAVm8AAFdvAACWbwAA l28AAN1vAADebwAAXXAAAF5wAABfcAAAhHAAAIVwAAD1cAAA9nAAAE1xAABO cQAAhHEAAIVxAABacgAAW3IAAHRyAAB1cgAAtXIAAA9zAABWcwAA3nMAAA90 AAA2dAAAN3QAAG10AABudAAARXUAAEZ1AABfdQAAYHUAAKB1AAD6dQAAQXYA AMl2AAD6dgAAIXcAACJ3AAAjdwAAOncAADt3AACtdwAArncAAPV3AAD2dwAA HnkAAB95AABUeQAAVXkAAOF5AADieQAAFnoAABd6AAC9egAAvnoAAPt6AAD8 egAA/3sAAAB8AABOfAAAT3wAAGp9AABrfQAAjH0AAI19AAB8fgAAfX4AAJZ+ AACXfgAA134AADF/AAB4fwAAAIAAADGAAABYgAAAWYAAAHqAAAB7gAAATIEA AE2BAABmgQAAZ4EAAKeBAAD9/f39/f39/f39/f39/fr9/f399/39/fr9+v39 /f398vLy8vLy/fr9/f39/fLy8vLy8v399/39/fr9/f36/f39+v39/fr9/f36 /f39+v39/f398vLy8vLy/fr9/f39/fIIAhEACBIACQEABQICAAUBBQIDAAUC AwIRAABg620AAFZuAABXbgAAb24AAHBuAACWbgAArG4AAMNuAADEbgAAVm8A AFdvAACWbwAAl28AAN1vAADebwAAXXAAAF5wAABfcAAAhHAAAIVwAAD1cAAA 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 AAAA3wAAAAAAAAAAAAAAANcAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAA1wAA AAAAAAAAAAAAANcAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAAAAAHEQAPhMUC DcYFAAGGCgAABREADcYFAAGGCgAAAxEAD4TFAgABAwAAAxEAD4QAAAAPEQAK JgALRhIAD4SGChGEP/gNxgoBaAEC4QOGCgYAABmngQAAAYIAAEiCAADQggAA AYMAACiDAAApgwAAKoMAADeDAABngwAAnoMAAMqDAADLgwAA24MAANyDAAB4 hAAAeYQAAKyEAACthAAAAoUAAAOFAAB1hQAAdoUAAOCFAADhhQAAHIYAAB2G AABLhgAAY4YAAMKGAAAwhwAAgocAAIOHAACEhwAAlocAAJeHAAD3hwAA+IcA AA2IAAAOiAAAZogAAGeIAAChiAAAoogAAFOJAABUiQAAtokAALeJAADsiQAA 7YkAAGOKAABkigAAZYoAAIaKAACHigAA34oAAOCKAAAniwAAKIsAABKMAAAT jAAATowAAE+MAACPjAAAkIwAANiMAADZjAAA2owAANyMAADdjAAA44wAAOSM AADmjAAA54wAAOiMAADpjAAA6owAAOuMAAD7+/v7+/n5+fn5+fn2+fn58/nz +fP58/nz+fnu7u7u+fn2+fn58/n5+fP5+fnzAPP5+fn59vn5+fP5+fnz+fP5 8/n57Ozs7Ozs7Ozs+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAgEBAAgCEQAIEAAJAQAFAgMABQIFAgIABQEDAhEACAIRAAgSAAkB TcqDAADLgwAA24MAANyDAAB4hAAAeYQAAKyEAACthAAAAoUAAAOFAAB1hQAA doUAAOCFAADhhQAAHIYAAB2GAABLhgAAY4YAAMKGAAAwhwAAgocAAIOHAACE hwAA+wAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA+wAA AAAAAAAAAAAAAPsAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA7QAAAAAAAAAA AAAAAPMAAAAAAAAAAAAAAADtAAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAO0A AAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA7QAAAAAAAAAAAAAAAPMAAAAAAAAA AAAAAADrAAAAAAAAAAAAAAAA4QAAAAAAAAAAAAAAANEAAAAAAAAAAAAAAADR AAAAAAAAAAAAAAAAwQAAAAAAAAAAAAAAAMEAAAAAAAAAAAAAAAD7AAAAAAAA AAAAAAAA+wAAAAAAAAAAAAAAAAAAAAAAAAAAEBEACiYAC0YQAA+EgQ8RhETz DcYLAAPhA4EPYhMAAAAADxEACiYAC0YQAA+EgQ8RhETzDcYKAQwHAuEDgQ8A AAAJEQAPhIEPEYRE8w3GBQAB4QMAAAERAAAFEQAPhBwBEYTk/gAFAwAPhBwB EYTk/gABAgAAAxEAD4QAAAAWhIcAAJaHAACXhwAA94cAAPiHAAANiAAADogA AGaIAABniAAAoYgAAKKIAABTiQAAVIkAALaJAAC3iQAA7IkAAO2JAABjigAA ZIoAAGWKAACGigAAh4oAAN+KAADgigAAJ4sAACiLAAASjAAAE4wAAP0AAAAA AAAAAAAAAAD5AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAA AAD3AAAAAAAAAAAAAAAA8wAAAAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD5AAAA AAAAAAAAAAAA9wAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAADzAAAAAAAAAAAA AAAA+QAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAADxAAAAAAAAAAAAAAAA9wAA AAAAAAAAAAAAAPkAAAAAAAAAAAAAAADzAAAAAAAAAAAAAAAA+QAAAAAAAAAA AAAAAPkAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAPkA AAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAO8AAAAAAAAA AAAAAADzAAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABEQAAAQAAAAMRAA+ExQIAAQMAAAMRAA+EAAAAAQIAABsTjAAATowAAE+M AACPjAAAkIwAANiMAADZjAAA2owAAOiMAADpjAAA6owAAOuMAAD9AAAAAAAA AAAAAAAA+QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA /QAAAAAAAAAAAAAAAPkAAAAAAAAAAAAAAAD5AAAAAAAAAAAAAAAA9wAAAAAA AAAAAAAAAPUAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA+QAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABHgAAAxEAD4QA AAABAwAACxwAH7CCLiCwxkEhsAgHIrAIByOQoAUkkKAFJbAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALXIAAEQAZABgApABAAAAAAAAAAAA AAAAAAAAAIAvQB+rAqsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAPAATwegAAALIECvAIAAAAAQQAAAAKAABjAAvwVgAAAARBAQAAAAXBMgAA AAYBAgAAAIEBEQAAEL8BAAAQAP8BAAAIAEgAOgBcAEQAbwB3AG4AbABvAGEA ZABzAFwAbQBhAGkAbABtAGEAbgAuAGoAcABnAAAAAAAQ8AQAAAAAAACAUgAH 8F9xAAAFBRoN1MVk5ONAQ17x+Lj2yxn/ADtxAAABAAAARAAAAAAAQwGgRh3w M3EAABoN1MVk5ONAQ17x+Lj2yxn//9j/4AAQSkZJRgABAgEASABIAAD/7RAg UGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEAAQBIAAAAAQABOEJJ TQPzAAAAAAAIAAAAAAAAAAA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgAB AAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEA oZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAA AAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/ ////////////////////////////A+gAAAAA//////////////////////// /////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAA AAAQAAAAAQAAAkAAAAJAAAAAADhCSU0ECQAAAAAOrwAAAAEAAACAAAAAVAAA AYAAAH4AAAAOkwAYAAH/2P/gABBKRklGAAECAQBIAEgAAP/+ACdGaWxlIHdy aXR0ZW4gYnkgQWRvYmUgUGhvdG9zaG9wqCA0LjAA/+4ADkFkb2JlAGSAAAAA Af/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4O DhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM /8AAEQgAVACAAwEiAAIRAQMRAf/dAAQACP/EAT8AAAEFAQEBAQEBAAAAAAAA AAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAAB BAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIz NHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieU pIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKS Q1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE 1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A 9QSSSSUpJJJJSkkxewGC4A+CTnta3cToPDVJVFdJBOUzsCfPQJ25LCYd7CeP BDij3XcEt6SpJSAJJAHxSkATIjxlFapJIkASSAPGdEtBoSBPEpKUkkCCYBBP gCmlupkQOdQkpdJLtI1B4KSSn//Q9QSSSSUxssZVW+2xwZXW0ue48BrRuc4r jP8Ax1vq9dknGxa8mwFwZXcK2w+Ttaa6n2Mu9/5m9m//AINdqW7muBAcCCCD wZHBXhnTfqV1G3JdaHnEGO/cNA8na7d+g2O9+zb7URinkB4Om/1R7kYEcT69 iZtWXjsyap2WCQHiHSDtcHt/NcmyiH41rddWGC0kGY02lv5yxfqzRm4+LFuS y3HD7Q2kUlhDg+C9ttlj7du5r/ZYtfJk49u1vqO2OLWTG5wEsbuH0dzlUmSJ GN7Ej7G9DWIkRuAXJHULKs92Pst+1XZLMZlRaSHMLaZ6luj2sxabL67f+G9J U6TVg4WG3IyLKRlWuOSzI9ewvpYbGXeg2uuz0r7L7a3/AOD/AJj9GpsxLG1W 1HEymPtqcTcL7HkOHvZVW97/AFWss3WN2oteDRj3usYMuyHVhpsstfDHt23O r32O99X7/wDPVqT3Qw+zKv5fg6T67LWY1txtGRRaKrGMLmgvEt3WV1+19Nzf 0nuTdO6VTT0fDuD8h2VY6u20vse5xcW7Xtsa47vT/wCDXMWVuv6rj9Ixasmv 9Kx2fczIuLiHe2vGdbv3fo2O9azf7F0eT0bFqptx6GZL2vpdbvFthebmbW1V /aPU9T3s3fo3+xSA0AxkXI/j5rYdbcXomDWwZDsq0C5zrC9xNrqbLrG27vzH el+d+es+zNdn4X2CtmQK66KLciA8Pq32Ut/Zu9vudYxlmQ+38/0fRVizo1Xr ua2rL9Frq/0rsm8lzHj9LtZ6u7fW/YjZ/S66zj0Y9GRbQwPc99eRaywOOo9z X/pX2Od9K1DjCfbKOvIbj9Xfj1XOtOK0eniuba+3eC67OD77Geg+t+Jb6Vf6 X/AVf4VSf6hzmYrBY2lzK3497nuZuJuuc7Hssd+9RWx9P/bP+FQGYRbh2VDB ygHt3R9os9Uvb9Fpt3/zO1v0d6avDrZe7bgZF5DWS26+121tn0nN9Ulm9m1n vp/SVpe4Fe0Xc+rBpHTPY5xddfkWS8kkzda0bd35rWBnsWusbplQpxPQFPoV 0ve2thJJLdxPqOc//S/zislzm6tJafJNOWui4Yb60//R9QQsvKpw8W7LyDtp x2OssPeGjdp/KRV51/jS+tD6Z6DjEbdjbc0j6RM+pRj/ANX6Ntv/AFpNnLhF /Z5piLLhdf8ArVldbza7rHHHbj7vQrpe5rqw/bub6jC31LH7P0lrv7DFLonU q32ZFXUMh9Vb27WXPIIc7/DMfp/PNa6vZb9NcfjW5D/5kt9Rx1e48f1WrsOk Z2PV0fF6WzHJzKsr7RXl2ECsl52vqu3+/ZY36b0zl4z4yJZeESHD84geP9FO SUQAeATrWuHiHD+k9T0/rmA61uHjEuqqYIyP8FP+h9R3u9X85apyoVzAx+kZ 2PdS3Ha2IZfUQCASNw2n85rln3/Umnd+qZd+Owaitljg0fBsoT5ejV0RuCzQ 5qxZFjpwo8jqFdbQ6yxtbSYBeQ0E+A3LPyev4WOHH12WWtBLKWO3Oc781ntn 6S0aPqLjHIF2fe/N2iGC474B/dlauP8AVno2MZqx2j5BIYB1P2KPMnpH7Wl9 U+n/AGHpzs7LP6xeTde8+Lvc7/yLVbryNwkaA6x8VDr9z6WUYzBtpdLnR3Lf os/78qFOTHJTcs9eEdF2DH6eI626u+e6W4qqy4FGD5UVs1M5SBKjuCRcAgpJ uVbqHUcPp+O7JzbRVUNBOrnO7V1Vt99ljv3GJ3XAd1l20UdU+smHRawPZh0u tJOsOtcGs/6NLk+A4pAFZkPBEyD/AP/S9QETqvDvrX0TrL+rdSvscMm6p9l+ RtDgdm4e/Z7tlbWvZ+d9Be4qh10Mb0Tqb4a1xxL9z4E6Vv8ApfvbUDw0SY8R A9OtcMlC7FGhfq03D4X+xnXH1KD6bj4cH4pzi9Zra5hZuHAe1w7/AJ2vuWp9 Xf2h1NxxunY7sl9LQbANA0fRbue5dC76j/WvJbIZRR4Cyw/+i2q7mxclMiUi Ad/Q1Mc+ajoBY/rPZ/VCvA/YlFuIWutsY37U4O3u9Ro2ubbqdrm/uraXi+f0 T62fUm+jqz7a2Nuv2CzHedu8g2+lkMcG+pXa1j1610Tq1HWel0dQo0Frfezu 140srP8AVcqZlcpDx0/rR7tsCojy/FvJJJJKaPWcR2VhO2DdbV72DuY+k3+0 1cczqVfrCmym+h5O2bKyGz52N3MXd3m8VE47WPt7NsJa0/2mhyx8u/qgosGV 0YXMIIJx7Wvdr+c1lja0yeOMtTuyQyyhoNrcuu9zTBVzEya7rzQbNhY0PeY3 EAn2+2Wrmcrrd2OCw9OyvWGgDqnAfFzo/wC/LLx7/rJjZFnVa/p3QH0XtLGO AH5lzdzWfuemooYjfrGjNkzivQbPd9O+y0Oa307yC7RrnAFpMfQLRsc139pU 8mnOrIb6e7cYD2mWD+VY76VbG/vPaubz/rTY3ouHW1go6l1V9bm1PdIprZY3 1Mm1zP33t9Gj/tz/AAKN9YvrhV0wP6PiGzK6iAKrNojdY9vn9Ldu/RUV/wDX FIcMD0ryYo55jx8231HqfSsD0cbNyqKs62Wllj7awXg+3btqutbV/Z9P/rnp o/1Qp9bJyuoTY8WQwPsEA7Pb+rhzWX/Z/wBx2T+neqf1X+rmdbk2dS69W12T a1ojna1o2sqG79xq7Kuuutu2toa0dgniIGwAWGcjoZEv/9Pf+tf+MD9h9Qs6 ZjYrbr62Mc+6x5DGl437PSrbvftZt/wla4LrX186/wBaDsH1i5l2hxMRm0OB /wAG7bvvsb/JdYtvC+p1/wBZvrn1x/WHW1YmHkPBDfa6wvc44rWu/wBF9ibU /wD7ZXofSfq50Xo1YZ03DroI5s2y8/1rHe5NnC5H1Hh09I/FMZUNte7hf4tf q5ldE6NZdnM9PNz3+q+s8sYBtqrd/KXWpHzP3lRdZW0S57WjzcAnIcz609HH Wvq/m9OA/S2V78c+F1f6aj/wRi87/wAX31rp6Tc+rPf6WBkj9ISCfTub7W+1 o3/pP5pepO6hgV/TyqWRzusaP+/Lh8v6l/UC7rFmfd1ZjK7XutOE3KrYz1HH e9zXbvVa1276FaZIAyjK64Tr/d/SCuMAEWNfzek6P9bumdZ6jbgYVd5NNfqu ue0NZEhgbG421ufu9nq1sW2uf6b1D6kdFxzj9Ny8PGqe7c8V2BznO/ess3Ps sf8A1kZ31z+qzeeo1n+q17v+oY5PlOF6ERHiVgmANZC/sdpJYD/r39VWCRmF 39Wq0/8AotCf/jB+rbTAfc74VOHz9+1M9yH7w+1Xu4/34/a9E9jHiHtDviq+ bb07CwbrMx1ePiBpba90AQ72/wBpYB/xkfV8DSrKceAPTaNR/WsWV1r67fVr q1FePl4mW+mqxl4ZurYHOYfYy33u3M/kpe7j/eCDnxD9IOJf+yMzqwdn1ZGP XYG10ZTaXO9emsfoX41H/aTL/wAH6lPq/wDFssXb/VjAosyc7qt+D6WTZa1t N99cWmttbGe0v9zfc1Yeb/jD6L1DHOLkdJffQ4Rtc9gj9303N+hx9JiH0L68 dD6TScVmBk1Y737i83faHbj/AMcWu/6aXuw7q97H+9+D6EksbA+uP1azyG05 9ddh/wAHcfSdPG39Lta7+w5bDXNcA5pDmnggyPwTgQdja8SB1BB8n//U9Js+ z7W+pviPb9Pj5Ks/9kbf0m6P5XqfxXzUkh9iD9H6Lf8A81Y/S+l/bn/v6B/2 B7ju+w7u+7ZPz3L57SQ+xB/wX6Fb/wAw59v2CfLYoW/+N9/hPsH/AEf4L59S S+xX2Pu9v/jY67vsc99u6fL6KzMr/wAbCTt9Td/wHqLxtJNl/gf4Sye3+T/w 31h3/jca7v2h5/TlN/67bSft/wD015Qko/8Awli/8IfXMf8A8bL1B6v2qO3r +ptn+yul6b/430j7F9i3/wAuN3/g3uXz8kpMf+B/gMuL/qf/AFN+nR+zIG37 PHaNkJH9mRr9njvOxfMSSlZvtfpG/wD5ra+v9h859NXcL7D6A+wen6H5vpRt +W1fMKSCOr//2QA4QklNBAYAAAAAAAcAAQEBAAEBAP/+ACdGaWxlIHdyaXR0 ZW4gYnkgQWRvYmUgUGhvdG9zaG9wqCA0LjAA/+4AIUFkb2JlAGSAAAAAAQMA EAMCAwYAAAAAAAAAAAAAAAD/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgT ExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsL DQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDP/CABEIAZACYAMBIgACEQEDEQH/xADnAAEAAQUB AQAAAAAAAAAAAAAABQECAwQGBwgBAQADAQEAAAAAAAAAAAAAAAABAgMEBRAA AQQCAgAFAwQBAwQDAAAAAQACAwQRBRIGEDAhExQgQAcxIhUWMkEjM1BwNBeQ JTURAAIBAgMEAwgOBgkCBQUAAAECAwARIRIEMUEiE1FxMhBhgZFCUmIjIDBA 8KGxwXKCktIzFAXRorLCQ1PhY3ODk6OzJDTiw1Dx8tMGkONUFTUSAAECBAQF AwMDAwUAAAAAAAEAESExQQIQIDBRQGGREjJxIgOBoXJQsUJw0ZLhUoKisv/a AAwDAQECEQMRAAAA9PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAUxyytbHau6jrLRKI7arbOpWkgAAAAAAAAA AAAAAAAAAAAAAAAAAADFK/Ho01pI3xiEojb4nf0Lo29c9LcN42Glsa0zMOHK +5SO3kbG7EaWd+rRm5nbOjLKzLIrATiE2SSRVhMOdmzOj8RKoOaLmlqku5vd JdFapPtahtIrCTaOxEshtU6NZeAAAAAAAAAAACNtGxoYL+zDLXGlkWIX220t FdLbxzEBK6VOLo1ZTJr2rMefdLDZXjpORlNqaeHk+9yvdngei6sYPne30eTb Hx3aYomOmukyHn+LoIUiPRdaeOWyScYRU7E4idit6MOPmMnTmngy80dRO890 xx03iiy/Q6CLN7i+95w7rfx5AAAAAAAAAAapTz7gI7TLudnz/Lrj6ZKeZzWk ekXaextORYLqW0mLsd1kxGxMvocHTJV5uMpbekrMxm6aCj7Rty/nuSs9JPYN HSs3BzvJkpkW4adhjasxCwM5DnT7cXZaFIGdrPE+g+fb5o9hwPoied6rjexh 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 nJByyuS5LksolEqUjjSYBvOx3otZc3mt+dS6s101SbYx2uy9yqxwS0oYm1tL VZBX7Xbk2W71dpuz02keaVtzRI1uI37GrD73bh/9P1OhFNSh18UamrxujirM j3HdGh1nS6+IwxwtYN1G10FWNh1HWb0N2J8Vmludtcra3W0Yjd0HUYWyWrtW KZ/b9kaGq6I9+vu79hq2Kc7LFaeONu67tck11SJ1Pc6t0pMEeBpeiQNfDBGG M+12W21uqr778tPco/yZ2JzYfyHJiDv2qeKnaNLakDsrKyFkLkiUSpD+2l/+ 3+Rhyg6ps/majdbaClF0aWW12TvX/LU5TNcxjYYOi0Y36rUw6qPctdVvVJWy RTRB7LcxbY7b/wDkdM/8EfpO9rWBwdt+5nFrTTltZ99xk3O09oVnH+F6/eND s1ieCOPtu2kvyaxnDrXU3e3PT/e/d6CHdPZ1WqxbSNk1XrmwlZC713H5Bby1 /U78mun7Dq5J68Ug/guhzBkMEzHs+02t8a3Wb7f395sPcTZU2Vy1GvvbWero rdW1Sm9ysCsrK5LPhKQGa8F2675Wlli11ifUSbjZybNnTaUtfY96hkcer1nu XddxsKtpnYex4i7J2QS3qkOw1/X7UrYfdjA2c0r912qJ0mn6g/2qRnYGzyjj Dl227nBI6bWzNZWrSOfs+7veyxrmPdooaEj7l/e2I4adK1btUoyNFoveZZtP ZR10e97HI5267K0dO2t+/JsIna7awTNl2veonOomg2aloNqbdbd2eC6R/wAA kdE2rbEjQQfs79aO3Sv1Z6VzJQKY5dKt+xduTXXS6Ow10Y+q/K5kbuyaqCA9 u1b3bbf1LT9c6pTvz9s1MaZ2/Ul8ncdTh3adbI6nYrX7eq2ms11Wft+tWw7P SbU1nYqTab+5aRp/uOtc5/bdO5tHswm2b9vXgkm7bqWJnb9WXf2/TJ/cdThv b9MLM3b9aC/tOq4a6Zmxgp7rV0Kcvb9aVH2/SBsvbtc9bXf0po2tqsdP2rVR hvbtWXxdx0Mkb+3a152PZK0rpDNRt3dnrJZOjj/YAyI4xG4TyhG1MvlTAs2L wmXoXJsjH+c44b+T4IWdix4ArRScbrtcx7NN2TTVJYOw6SdNeHN8M+E8Albs uvRzuPVW5o6AQPfrQ+La6SnVb/VmlWdPRrPj6wzMVerqal7TwWWSdTaXVers Y+/qIWVGa1li1T6oJRH01qrUKWnUmvq7Gre6jXYKvVa1uD+mtC/poR6hFGHd NYVF1BjTrtR7Mez67FZEnTmk/wBOaEzqTVS6yyF413KLYdVhlf8A09mR1EEf 09uaHWmwP/ixJDc6pXfLp9U2oPAoooooSyN86U4j7wwSbV1CFwbqRMWaWV0s HU7qtddtxx0OpPssj6MQ6rE6KDP0Te97X9n2Yq1NzN8u3NsmSazb/JO/mtQQ a5rHN7HC06XXtPLfy2q1HXyB7re22MGzobh/ye4798s+osysuapkb4Yo2Fr4 mub1HmNVsm2zF16dlutt9h8Jw22ygudnltnX6vZ7CWVoa4La7faVNn/Ztg+F 9uSar/LW6tjc7SzQiG/v1zPPM+tJtrtKS5sIoK+y3u01df8AmWwVJ9xt6bW2 hcqVeyXrS116SzCiiinIo+dIMs7vrrH8kGyLUa2wXw6WEvjsHVv3cuvn1GiJ 9gFAoFZ8ZpWwxYbJqnmNt576GdSXVr++2Nd9DT3608nYNjCaGp2NeebsN+E6 3U7GrNZt2Ipd1v8AZV6VsGR1qqwSbDUwBtKIgNu7arSk6tsIWwXttVqHrWwr xt39uMOiqVmWr8clnR63bUC9rmuGVubETt2YQ6rNPG9lxlHlduN+Df8AYZp7 cxkrXo9e+PE81La7IT6S1r23akLNVjWOZrq1O5TE0UULRnwKKKKPnEgDsskM 0raUDxVibGYHLaUpLR7PRjis6yIRwtcECgUD6ZWUTlOoxmX4MWHa+ItOrhJm gEjY9fHG6eISsj18cbpYhIyLXsY+1DE6PcWDft0tXM6HW6R5mq1/aqtOHTME rBqomyOiDojqY+b4I3xDWxhMY2Nj9fG50TGxNyrVdllnwIl8CLkdXE4R6+KO KKlHEyGhFEDrIyq9JldlzW3Jn6ut7bZNfG51esyESauF8kEQhbnwJ8Cj5vYd u3S6WHuvZGTVvybunMj7brb7ZRJA+htYbLon5F+fZ6p1O3Z2UkOGNaSmu9OQ WVkrKyEXIuRei4lOcEZEXFc1zAQeF2HY+zBrKpkfqaOBTqMYHtwx7uMoeFkL KJWfTKyFyCyFlcllEolZWVlZWSixhQwECgfHPiSiUfM7N2uloIt33Xa7qj7V aJry+UcHA1djZqiN/wDJugu7Sk2/bsbZlGu2FjXJr8JrkH4Qcua5Be4uZKLk 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 AAAPAAAADwAAABIAAAAABAAA1wUAAOgXAADrjAAARwAAAEsAAABOAAAAAAQA APEEAAAHEAAAPBoAACslAACHLQAA1TYAAKdCAAAXTQAAI1QAAPFaAACqYAAA x2YAAOttAABbcgAArXcAAJd+AADKgwAAhIcAABOMAADrjAAASAAAAEoAAABM AAAATwAAAFAAAABRAAAAUwAAAFQAAABVAAAAVgAAAFgAAABZAAAAWgAAAFwA AABdAAAAXgAAAF8AAABhAAAAYgAAAGMAAAAABAAAZBcAAPY1AADBVwAA2G0A AKeBAADrjAAASQAAAE0AAABSAAAAVwAAAFsAAABgAAAAVAAAAGMAAAByAAAA jgAAAJAAAACfAAAAuwAAAL0AAADRAAAA7QAAAO8AAAALAQAAJwEAACkBAABE AQAAYAEAAGIBAAB3AQAAkwEAAJUBAACmAQAAwgEAAMQBAADWAQAA8gEAAPQB AAAMAgAAKAIAACsCAAA9AgAAWQIAAFwCAACCAgAAngIAAKECAAC5AgAA1QIA ANgCAADpAgAABQMAAAgDAAAbAwAANwMAADoDAABdAwAAeQMAAHwDAAB+AwAA 64gAABMN1P8TJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcAT JdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/lcATJdT/ lcATJdT/lcCVjAIAAAAJAAAADAAAABIAAAATIZT/lYD//w8AAAANAF8AVABv AGMANAA1ADQAOAA1ADkAMwA0ADUADQBfAFQAbwBjADQANQA0ADgANQA5ADMA NAA2AA0AXwBUAG8AYwA0ADUANAA4ADUAOQAzADQANwANAF8AVABvAGMANAA1 ADQAOAA1ADkAMwA0ADgADQBfAFQAbwBjADQANQA0ADgANQA5ADMANAA5AA0A XwBUAG8AYwA0ADUANAA4ADUAOQAzADUAMAANAF8AVABvAGMANAA1ADQAOAA1 ADkAMwA1ADEADQBfAFQAbwBjADQANQA0ADgANQA5ADMANQAyAA0AXwBUAG8A YwA0ADUANAA4ADUAOQAzADUAMwANAF8AVABvAGMANAA1ADQAOAA1ADkAMwA1 ADQADQBfAFQAbwBjADQANQA0ADgANQA5ADMANQA1AA0AXwBUAG8AYwA0ADUA NAA4ADUAOQAzADUANgANAF8AVABvAGMANAA1ADQAOAA1ADkAMwA1ADcADQBf AFQAbwBjADQANQA0ADgANQA5ADMANQA4AA0AXwBUAG8AYwA0ADUANAA4ADUA OQAzADUAOQCBAwAA4AcAAO4HAACXDwAArxkAABQdAAB4KQAAaSwAAApPAABS VgAAX2wAACNzAADLfwAAhIMAAGWGAADsiAAAAAAAAAEAAAACAAAAAwAAAAQA AAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAAjQMA AOwHAAD/BwAAsA8AAMcZAAAmHQAAhikAAHgsAAAfTwAAYVYAAIJsAAA4cwAA 2X8AAJSDAACFhgAA7IgAAAAAAAByAAAAkQAAAJ8AAAC+AAAA0QAAAPAAAAAL AQAAKgEAAEQBAABjAQAAdwEAAJYBAACmAQAAxQEAANYBAAD1AQAADAIAACwC AAA9AgAAXQIAAIICAACiAgAAuQIAANkCAADpAgAACQMAABsDAAA7AwAAXQMA AH0DAACrDgAAsw4AAB4UAAA8FAAARxQAAFAUAADeFAAA/BQAABAvAAATLwAA by8AAHgvAACFLwAAji8AAKIvAACrLwAA1i8AAN8vAAALMAAAFDAAACEwAAAr MAAAATYAAAU2AABINgAATDYAAHw2AAB+NgAARj4AAFM+AACoPgAAtT4AAM1A AADRQAAAaUEAAH9BAAAOQgAAG0IAAC1CAAA6QgAAzUMAANpDAABjSAAAb0gA AA5MAAAXTAAA/1EAAAVSAABrUgAAcVIAAJpSAACdUgAA2lIAAN9SAADvUwAA 9VMAAP1ZAAANWgAAr10AALZdAADgXQAA6F0AAOtfAAD+XwAAZWEAAHhhAADc YgAA4WIAAPRjAAD5YwAACmUAABFlAABnZgAAbGYAAMdoAADNaAAAfGoAAJVq AAD1agAA+2oAAGRrAAB1awAAUG4AAFRuAAB1bgAAfm4AALZuAADDbgAAD28A ABhvAABWbwAAYm8AAIhvAACQbwAAlG8AAKFvAADBbwAAyW8AADtxAAA/cQAA YHEAAGlxAAChcQAArnEAAPpxAAADcgAAQXIAAE1yAABzcgAAe3IAAH9yAACM cgAArHIAALRyAAByegAAdnoAAJd6AACgegAA2HoAAOV6AAAxewAAOnsAAHh7 AACEewAAqnsAALJ7AAC2ewAAw3sAAON7AADrewAAQn0AAEZ9AABnfQAAcH0A AKh9AAC1fQAAAX4AAAp+AABIfgAAVH4AAHp+AACCfgAAhn4AAJN+AACzfgAA u34AAGl/AAByfwAAdX8AAH1/AACEfwAAjX8AAJJ/AACbfwAAoH8AAKx/AACt fwAAtn8AALp/AADHfwAA2YgAANqIAADciAAA54gAAOmIAADsiAAABwAHAAcA BwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAH AAcABwAHAAcABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwA BwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAH ABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcA HAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAc AAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwA BwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAH ABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAcAAcA HAAHABwABwAcAAcAHAAHAAIABwAHAAcAAgAAAAAAcgAAAJEAAACfAAAAvgAA ANEAAADwAAAACwEAACoBAABEAQAAYwEAAHcBAACWAQAApgEAAMUBAADWAQAA 9QEAAAwCAAAsAgAAPQIAAF0CAACCAgAAogIAALkCAADZAgAA6QIAAAkDAAAb AwAAOwMAAF0DAAB9AwAAiAQAAIoEAAAFDgAAEw4AAL4OAADFDgAAyBQAAMwU AAAHFQAACxUAAEUVAABMFQAAnxUAAKcVAADgFQAA4hUAAOgVAADqFQAAPRYA AEQWAACTFgAAnRYAANcWAADbFgAAJRcAACkXAAA3HAAAORwAAG8vAABzLwAA oi8AAKYvAADWLwAA2i8AAAswAAAPMAAAzUAAANFAAACOQwAAlEMAAP9RAAAF UgAAJFIAAChSAABrUgAAcVIAAJpSAACdUgAA1lIAANlSAAAVUwAAG1MAAGpT AABvUwAAmVUAAKNVAAAVVgAAHlYAAApZAAARWQAAqFkAAK9ZAAD9WQAABFoA AKtbAACsWwAADF4AADFeAACEYQAA2mEAANthAAAuYgAA2GkAANppAABwagAA emoAAJZqAACaagAArGoAALBqAAAAbgAAAm4AAHVuAAB5bgAAtm4AAL5uAAAP bwAAE28AAFZvAABZbwAA3m8AAOlvAAAPcAAAE3AAAOtwAADtcAAAYHEAAGRx AAChcQAAqXEAAPpxAAD+cQAAQXIAAERyAADJcgAA1HIAAPpyAAD+cgAATXMA AJVzAAAiegAAJHoAAJd6AACbegAA2HoAAOB6AAAxewAANXsAAHh7AAB7ewAA AHwAAAt8AAAxfAAANXwAAPJ8AAD0fAAAZ30AAGt9AACofQAAsH0AAAF+AAAF fgAASH4AAEt+AADQfgAA234AAAF/AAAFfwAAaX8AAG1/AACgfwAAo38AAG+C AAB1ggAAzoIAANOCAAA7gwAAQYMAAHyFAACYhQAA2YgAANqIAADciAAA54gA AOmIAADsiAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcA BwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAaAAcAGgAHABoABwAaAAcAGgAH ABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcA GgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAa AAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoA BwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAH ABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcA GgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAa AAcAGgAHABoABwACAAcABwAHAAIA//8UAAAADQBFAHIAaQBjAHMAcwBvAG4A IABVAHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAAYQBk AGEAdABoACQAXABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0AGEA dABpAG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0 AGkAbwBuAC4AZABvAGMADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQByADYA QwA6AFwAVABFAE0AUABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAAcwBh AHYAZQAgAG8AZgAgAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQA YQB0AGkAbwBuAC4AYQBzAGQADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQBy AEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAAYQBkAGEAdABoACQA XABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgBc AE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4A ZABvAGMADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQByAEUAXABcAGUAYQB1 AGIAcgBuAHQAMAAwADQAXABlAHAAYQBkAGEAdABoACQAXABNAGEAaQBsAG0A YQBuAFwARABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgBcAE0AYQBpAGwAbQBh AG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4AZABvAGMADQBFAHIA aQBjAHMAcwBvAG4AIABVAHMAZQByADYAQwA6AFwAVABFAE0AUABcAEEAdQB0 AG8AUgBlAGMAbwB2AGUAcgB5ACAAcwBhAHYAZQAgAG8AZgAgAE0AYQBpAGwA bQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4AYQBzAGQADQBF AHIAaQBjAHMAcwBvAG4AIABVAHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQA MAAwADQAXABlAHAAYQBkAGEAdABoACQAXABNAGEAaQBsAG0AYQBuAFwARABv AGMAdQBtAGUAbgB0AGEAdABpAG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8A YwB1AG0AZQBuAHQAYQB0AGkAbwBuAC4AZABvAGMADQBFAHIAaQBjAHMAcwBv AG4AIABVAHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAA YQBkAGEAdABoACQAXABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0 AGEAdABpAG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQA YQB0AGkAbwBuAC4AZABvAGMADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMAZQBy ADYAQwA6AFwAVABFAE0AUABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAA cwBhAHYAZQAgAG8AZgAgAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBu AHQAYQB0AGkAbwBuAC4AYQBzAGQADQBFAHIAaQBjAHMAcwBvAG4AIABVAHMA ZQByADYAQwA6AFwAVABFAE0AUABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5 ACAAcwBhAHYAZQAgAG8AZgAgAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0A ZQBuAHQAYQB0AGkAbwBuAC4AYQBzAGQADQBFAHIAaQBjAHMAcwBvAG4AIABV AHMAZQByAEUAXABcAGUAYQB1AGIAcgBuAHQAMAAwADQAXABlAHAAYQBkAGEA dABoACQAXABNAGEAaQBsAG0AYQBuAFwARABvAGMAdQBtAGUAbgB0AGEAdABp AG8AbgBcAE0AYQBpAGwAbQBhAG4AIABEAG8AYwB1AG0AZQBuAHQAYQB0AGkA bwBuAC4AZABvAGMAFwB8////MNYyuP8P/w//D/8P/w//D/8P/w//DwEAff// /5Cyqjn/D/8P/w//D/8P/w//D/8P/w8BAH7///9MeiC+/w//D/8P/w//D/8P /w//D/8PAQB/////JpM4Sv8P/w//D/8P/w//D/8P/w//DwEAgP///0ZFXNn/ D/8P/w//D/8P/w//D/8P/w8BAIH///9ELTCT/w//D/8P/w//D/8P/w//D/8P AQCC////ShbCHf8P/w//D/8P/w//D/8P/w//DwEAg////xhYYsn/D/8P/w// D/8P/w//D/8P/w8BAIj///+UYjry/w//D/8P/w//D/8P/w//D/8PAQCJ//// MJ0unf8P/w//D/8P/w//D/8P/w//DwEAWmZODwUACQT/DwAAAAAAAAAAAAAA AAAAAAABACVz7hUPAAkE/w//D/8P/w//D/8P/w//D/8PAQCBeX0ZDwAJBP8P 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 AAAAWmZODwAAAAAAAAAAAAAAABVJM2QAAAAAAAAAAAAAAACfQ1NjAAAAAAAA AAAAAAAAKAHWeAAAAAAAAAAAAAAAAPYwT3kAAAAAAAAAAAAAAACBeX0ZAAAA AAAAAAAAAAAAJXPuFQAAAAAAAAAAAAAAAK4tph0AAAAAAAAAAAAAAADuBAhJ AAAAAAAAAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////xcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEACQwBAggA/0AAgAEAAAAAAAAA AAA8g8wAAQABAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAADriAAAQAAACABA AAAFAAAARxaQAQAAAgIGAwUEBQIDBIcCAAAAAAAAAAAAAAAAAACfAAAAAAAA AFQAaQBtAGUAcwAgAE4AZQB3ACAAUgBvAG0AYQBuAAAANRaQAQIABQUBAgEH BgIFBwAAAAAAAAAQAAAAAAAAAAAAAACAAAAAAFMAeQBtAGIAbwBsAAAAMyaQ AQAAAgsGBAICAgICBIcCAAAAAAAAAAAAAAAAAACfAAAAAAAAAEEAcgBpAGEA bAAAADcxkAEAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABD AG8AdQByAGkAZQByAAAAOwaQAQIABQAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA AAAAAACAAAAAAFcAaQBuAGcAZABpAG4AZwBzAAAAIgAEADEIiBgAANACAABo AQAAAADAkzamEcM2hvnCNoY1AEgCAADlFQAAe20AAAEAEgEAAAQAAxAgAwAA URYAAJVvAAABABgBAAAwAwAAAAAAACEDAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKUGwAe0ALQAgAASMAAAEAAZAGQA AAAZAAAARZkAAOaFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAD//xIAAAAAAAAA FQBNAGEAaQBsAG0AYQBuACAARABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgAA AAAAAAAOAEQAYQB2AGkAZAAgAFQAaABpAGUAcwBzAGUAbgANAEUAcgBpAGMA cwBzAG8AbgAgAFUAcwBlAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAEAAIAAAAA AAAAAAAAAAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAAAIwBAAARAAAA AQAAAJAAAAACAAAAmAAAAAMAAAC4AAAABAAAAMQAAAAFAAAA3AAAAAcAAADo AAAACAAAAPwAAAAJAAAAFAEAABIAAAAgAQAACgAAADwBAAALAAAASAEAAAwA AABUAQAADQAAAGABAAAOAAAAbAEAAA8AAAB0AQAAEAAAAHwBAAATAAAAhAEA AAIAAADkBAAAHgAAABYAAABNYWlsbWFuIERvY3VtZW50YXRpb24AOAAeAAAA AQAAAABhaWweAAAADwAAAERhdmlkIFRoaWVzc2VuAHQeAAAAAQAAAABhdmke AAAACwAAAE5vcm1hbC5kb3QAcx4AAAAOAAAARXJpY3Nzb24gVXNlcgAAdB4A AAADAAAANTMAYx4AAAATAAAATWljcm9zb2Z0IFdvcmQgOC4wAG9AAAAAALB3 lVEAAABAAAAAAP7F2OS9vgFAAAAAAIjiake5vgFAAAAAAHYHpOe9vgEDAAAA AQAAAAMAAADlFQAAAwAAAHttAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABAACAAAA AAAAAAAAAAAAAAAAAAACAAAAAtXN1ZwuGxCTlwgAKyz5rkQAAAAF1c3VnC4b EJOXCAArLPmuQAEAAPwAAAAMAAAAAQAAAGgAAAAPAAAAcAAAAAUAAAB8AAAA BgAAAIQAAAARAAAAjAAAABcAAACUAAAACwAAAJwAAAAQAAAApAAAABMAAACs AAAAFgAAALQAAAANAAAAvAAAAAwAAADeAAAAAgAAAOQEAAAeAAAAAQAAAAAA dwADAAAAIAMAAAMAAAASAQAAAwAAAEWZAAADAAAA6BAIAAsAAAAAAAAACwAA AAAAAAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAAWAAAATWFpbG1hbiBEb2N1 bWVudGF0aW9uAAwQAAACAAAAHgAAAAYAAABUaXRsZQADAAAAAQAAACgBAAAE AAAAAAAAACgAAAABAAAAUgAAAAIAAABaAAAAAwAAALIAAAACAAAAAgAAAAoA AABfUElEX0dVSUQAAwAAAAwAAABfUElEX0hMSU5LUwACAAAA5AQAAEEAAABO AAAAewA0AEUARgA1AEEAQgA1ADIALQAyADUAMwBCAC0AMQAxAEQAMwAtAEEA MwBDADgALQAwADgAMAAwADIAQgAzAEUAQQA3AEQAOQB9AAAAAABBAAAAbAAA AAYAAAADAAAAUABdAAMAAAAXBAAAAwAAAAEEAAADAAAAAQAAAB8AAAAZAAAA SAA6AFwARABvAHcAbgBsAG8AYQBkAHMAXABtAGEAaQBsAG0AYQBuAC4AagBw AGcAAAAAAB8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAD AAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4A AAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAA ABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAA JQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAw AAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsA AAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAA AEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAA UgAAAFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABd AAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAP7///9mAAAAZwAAAGgA AABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAA AHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAA fwAAAIAAAACBAAAAggAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACK AAAAiwAAAIwAAACNAAAAjgAAAI8AAACQAAAAkQAAAJIAAACTAAAAlAAAAJUA AACWAAAAlwAAAJgAAACZAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAA AKEAAAD+////owAAAKQAAAClAAAApgAAAKcAAACoAAAAqQAAAKoAAACrAAAA rAAAAK0AAACuAAAArwAAALAAAACxAAAAsgAAALMAAAC0AAAA/v///7YAAAC3 AAAAuAAAALkAAAC6AAAAuwAAALwAAAD+////vgAAAL8AAADAAAAAwQAAAMIA AADDAAAAxAAAAP7////9/////f///8gAAAD+/////v////7///////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkA AAAAAAAAAAAAAAAAYQAhAAABCABDAGgAZQBjAGsAZQBkACAAYgB5AAAAQwAW AAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAADk4zGgS7m+ASAF cL7nvb4BygAAAIAAAAB0AAAARABhAHQAYQAAAG4AYQB0AGkAbwBuAAAARABp AHMAcABvAHMAaQB0AGkAbwBuAAAARABpAHYAaQBzAGkAbwBuAAoAAgH///// //////////90ACAAbgB1AG0AYgBlAHIAAABFAGQAaQB0AG8AcgAAAEYAbwBl AAAAgHkAAGQAIAAxAFQAYQBiAGwAZQAAAHAAAABMAGEAbgBnAHUAYQBnAGUA AABNAGEAaQBsAHMAdABvAHAAAABNAGEAdAB0AGUADgACAAEAAAD///////// /wAATwB3AG4AZQByAAAAUAByAG8AagBlAGMAdAAAAFAAdQBiAKIAAACqJQAA ZQByAFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAAaQB2AGUAZAAgAGYAcgBv AG0AAABSAGUAYwBvAHIAZABlAGQAIAAaAAIBBgAAAAUAAAD/////ZABlAGQA IABkAGEAdABlAAAAUgBlAGYAZQByAGUAbgBjAGUAAAAAAB7IAAByAGMABQBT AHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAHUAbQBiAGUA cgAAAFQAeQBwAGkAcwB0ACgAAgH///////////////8AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1AAAAABAAAAAAAAAFAEQAbwBjAHUA bQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAA AAAAAAAAAAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAL0AAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIAagAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAIIAAAEIAAAAAAAAAAAACgAAAAAA AAASAAIBAgAAAAcAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAGoAAAAAAAAATwBiAGoAZQBjAHQAUABvAG8AbAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAQD/ //////////////8AAAAAAAAAAAAAAAAAAAAAAAAAACAFcL7nvb4BIAVwvue9 vgEAAAAAAAAAAAAAAAABAAAA/v////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////////////////wEA/v8DCgAA/////wYJ AgAAAAAAwAAAAAAAAEYYAAAATWljcm9zb2Z0IFdvcmQgRG9jdW1lbnQACgAA AE1TV29yZERvYwAQAAAAV29yZC5Eb2N1bWVudC44APQ5snEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA ------=_NextPart_000_72982e8a_72b50c1b$3f22a4-- --xVf5QvoNib-- From rob@ideal.net.au Wed Jun 30 01:19:13 1999 From: rob@ideal.net.au (Rob Wise) Date: Wed, 30 Jun 1999 10:19:13 +1000 (EST) Subject: [Mailman-Developers] Subject prefix bug. Message-ID: Hi, This message is in refrence to Jitterbug ID incoming/64. I was just wondering if anyone had a patch or other fix I could use to resolve the problem until it is fixed officially in mailman. Thanks, Rob From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Wed Jun 30 01:40:57 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Tue, 29 Jun 1999 20:40:57 -0400 (EDT) Subject: [Mailman-Developers] Performance problems and MailMan References: Message-ID: <14201.26521.848925.327481@anthem.cnri.reston.va.us> --YhIK0mKoxU Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit >>>>> "JCL" == J C Lawrence writes: JCL> I believe I've found out how to reliably reproduce the JCL> performance problemsI've noticed here at VA and at Kanga.Nu, JCL> and which Barry and another (forget name, sorry) have JCL> observed as well: JCL> 1) Create a moderated list. JCL> 2) Subscribe 200 addresses to the list (can be bogus JCL> addresses but the local MTA must accept them) JCL> 3) Post at least 30 messages of an average of at least 2K JCL> size to the list. JCL> 4) Go to the moderation page, approve every message, and hit JCL> submit. JCL> 5) Watch your system load peg and stay there for an JCL> obscenely long time. Just a quick note 'cause I have very little time. I'm currently seeing python.org massively pegged, and Guido and I were talking about some Python tools we'd like to develop that would help debug situations like this. What I wanted was something like gdb's ability to attach to and print stack traces of running external programs. We got into some brainstorming and came up with A Certified Very Cool Trick[1]. This yielded a traceback for where at least two pegged processes are spinning. Seems to make sense, but I'm not very familar with the archiving guts, so I post this traceback to spur some discussion. Maybe Scott or Harald can craft a fix. Here's the traceback: --YhIK0mKoxU Content-Type: application/octet-stream Content-Disposition: attachment; filename="foo2" Content-Transfer-Encoding: base64 ICBGaWxlICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9zY3JpcHRzL3Bvc3QiLCBsaW5lIDcz LCBpbiA/CiAgICBtbGlzdC5Qb3N0KG1zZywgYXBwcm92ZWQ9ZnJvbXVzZW5ldCkKICBGaWxl ICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFuL01haWxMaXN0LnB5IiwgbGluZSAx MjgzLCBpbiBQb3N0CiAgICBzZWxmLkFyY2hpdmVNYWlsKG1zZykKICBGaWxlICIvZXhwb3J0 L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFuL0FyY2hpdmVyL0FyY2hpdmVyLnB5IiwgbGluZSAy MTAsIGluIEFyY2hpdmVNYWlsCiAgICBoLmNsb3NlKCkKICBGaWxlICIvZXhwb3J0L3BhcnJv dC9tYWlsbWFsdC9NYWlsbWFuL0FyY2hpdmVyL0h5cGVyQXJjaC5weSIsIGxpbmUgOTA2LCBp biBjbG9zZQogICAgc2VsZi51cGRhdGVfZGlydHlfYXJjaGl2ZXMoKSMgVXBkYXRlIGFsbCBj aGFuZ2VkIGFyY2hpdmVzCiAgRmlsZSAiL2V4cG9ydC9wYXJyb3QvbWFpbG1hbHQvTWFpbG1h bi9BcmNoaXZlci9IeXBlckFyY2gucHkiLCBsaW5lIDg3MSwgaW4gdXBkYXRlX2RpcnR5X2Fy Y2hpdmVzCiAgICBzZWxmLnVwZGF0ZV9hcmNoaXZlKGkpCiAgRmlsZSAiL2V4cG9ydC9wYXJy b3QvbWFpbG1hbHQvTWFpbG1hbi9BcmNoaXZlci9waXBlcm1haWwucHkiLCBsaW5lIDMzMCwg aW4gdXBkYXRlX2FyY2hpdmUKICAgIHNlbGYud3JpdGVfaW5kZXhfaGVhZGVyKCkKICBGaWxl ICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFuL0FyY2hpdmVyL0h5cGVyQXJjaC5w eSIsIGxpbmUgNzM4LCBpbiB3cml0ZV9pbmRleF9oZWFkZXIKICAgIHNlbGYudXBkYXRlVGhy ZWFkZWRJbmRleCgpCiAgRmlsZSAiL2V4cG9ydC9wYXJyb3QvbWFpbG1hbHQvTWFpbG1hbi9B cmNoaXZlci9waXBlcm1haWwucHkiLCBsaW5lIDI1OCwgaW4gdXBkYXRlVGhyZWFkZWRJbmRl eAogICAgc2VsZi5kYXRhYmFzZS5jbGVhckluZGV4KHNlbGYuYXJjaGl2ZSwgJ3RocmVhZCcp CiAgRmlsZSAiL2V4cG9ydC9wYXJyb3QvbWFpbG1hbHQvTWFpbG1hbi9BcmNoaXZlci9IeXBl ckRhdGFiYXNlLnB5IiwgbGluZSAzMDUsIGluIGNsZWFySW5kZXgKICAgIGRlbCBzZWxmLnRo cmVhZEluZGV4W2tleV0KICBGaWxlICIvZXhwb3J0L3BhcnJvdC9tYWlsbWFsdC9NYWlsbWFu L0FyY2hpdmVyL0h5cGVyRGF0YWJhc2UucHkiLCBsaW5lIDg1LCBpbiBfX2RlbGl0ZW1fXwog ICAgc2VsZi5zb3J0ZWQuc29ydCgpCiAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDEsIGluID8K --YhIK0mKoxU Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Looks like the archiver is doing way too much work for every message it has to process. When python.org came back up today, it got slammed with incoming mail for a bazillion lists. Each message spins in this HyperDatabase.clearIndex() loop. -Barry [1] CVCT: Use gdb to attach to the running Python program, then type this at the gdb prompt: (gdb) call PyRun_SimpleString("import sys, traceback; sys.stderr=open('/tmp/tb','w',0); traceback.print_stack()") Sitting in /tmp/tb will be the stack trace of where the Python program was when you stopped it. There's reason to believe this will not always work, but it likely will, and you can even detach the program and let it continue on. --YhIK0mKoxU-- From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Wed Jun 30 17:56:14 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Wed, 30 Jun 1999 12:56:14 -0400 (EDT) Subject: [Mailman-Developers] patch candidate for MailList.Save() Message-ID: <14202.19502.341621.221263@anthem.cnri.reston.va.us> A number of people have experienced corruption of config.db files when the disk gets full. While I was away on vacation, we experienced the same thing on python.org. The ugly thing is that when the disk gets full, enough of config.db can be written so that it is a valid marshal of an empty dictionary. This means that lists with corrupt config.db files will still load, but will start having very cryptic errors such as attributes missing on the MailList objects, etc. The fix in those cases is to free up space on the disk and then copy config.db.last to config.db for all the corrupted lists. I think this is suboptimal. I'd rather have config.db /only/ be changed if we can guarantee (as best as possible) that the marshal was written completely and successfully. Attached is a patch to do this. I am not checking it into the CVS tree at the moment because it's such a critical section of code. I want to stress it a little more myself, but I would greatly appreciate comments, or testing by y'all. You might want to use a non-production, or well backed up installation. I feel pretty confident about the change, but still, get this wrong and your lists are toast. The idea is that the marshal is first written to a temp file called config.db.tmp.. If this succeeds completely, then 1) config.db.last is unlinked 2) a hard link config.db.last -> config.db is created 3) a hard link config.db -> config.db.tmp. is created 4) config.db.tmp. is unlinked Comments? -Barry Index: MailList.py =================================================================== RCS file: /projects/cvsroot/mailman/Mailman/MailList.py,v retrieving revision 1.126 diff -c -r1.126 MailList.py *** MailList.py 1999/06/15 07:50:54 1.126 --- MailList.py 1999/06/30 15:52:16 *************** *** 743,765 **** # pretty hosed. That's a good reason to make this a daemon not a # program. self.IsListInitialized() ! fname = os.path.join(self._full_path, 'config.db') ! fname_last = fname + ".last" ! file = aside_new(fname, fname_last, reopen=1) ! dict = {} for key, value in self.__dict__.items(): if key[0] <> '_': dict[key] = value try: ! marshal.dump(dict, file) ! file.close() ! except IOError, status: ! # Darn - try to resurrect the old config.db. ! file = aside_new(fname_last, fname, reopen=0) ! self.LogMsg("error", ! "Failed config file write '%s'," ! " old config resurrected." % `status.args`) ! Utils.reraise() self.CheckHTMLArchiveDir() def Load(self, check_version = 1): --- 743,780 ---- # pretty hosed. That's a good reason to make this a daemon not a # program. self.IsListInitialized() ! # copy all public attributes to marshalable dictionary ! dict = {} for key, value in self.__dict__.items(): if key[0] <> '_': dict[key] = value + # we want to write this dict in a marshal, but be especially paranoid + # about how we write the config.db, so we'll be as robust as possible + # in the face of, e.g. disk full errors. The idea is that we want to + # guarantee that config.db is always valid. The old way had the bad + # habit of writing an incomplete file, which happened to be a valid + # (but bogus) marshal. + fname = os.path.join(self._full_path, 'config.db') + fname_tmp = fname + '.tmp.' + `os.getpid()` + fname_last = fname + ".last" + omask = os.umask(007) try: ! try: ! fp = open(fname_tmp, 'w') ! marshal.dump(dict, fp) ! fp.close() ! except IOError, status: ! os.unlink(fname_tmp) ! self.LogMsg('error', ! 'Failed config.db file write, retaining old state' ! '\n %s' % `status.args`) ! Utils.reraise() ! # now move config.db -> config.db.last ! # then move config.db.tmp.xxx -> config.db ! aside_new(fname, fname_last) ! aside_new(fname_tmp, fname) ! finally: ! os.umask(omask) self.CheckHTMLArchiveDir() def Load(self, check_version = 1): From fabio@conectiva.com.br Wed Jun 30 22:42:40 1999 From: fabio@conectiva.com.br (Fabio Dorival Victorelli) Date: Wed, 30 Jun 1999 18:42:40 -0300 (EST) Subject: [Mailman-Developers] Re: i18n In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---876084556-1663948829-930778960=:28151 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello all, > We've made today the i18n just for one file "bin/newlist" and toke > some minutes. It's too simple. > You just must apply the attached file "newlist.path.i18n" for > bin/newlist and generate "mailman.mo" file, like: > msgfmt -o mailman.mo mailman.po > After, You just copy to /usr/share/locale/$LANG/mailman.mo > for LANG=pt_BR: > cp mailman.mo /usr/share/locale/pt_BR/LC_MESSAGES/mailman.mo > > It's working fine. I'd like to know if there are somebody working in i18n? thks fabio@conectiva.com.br ---876084556-1663948829-930778960=:28151 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="newlist.path.i18n" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="newlist.path.i18n" LS0tIG5ld2xpc3Qub3JpZwlUdWUgSnVuIDIyIDEyOjA0OjI2IDE5OTkNCisr KyBuZXdsaXN0CVdlZCBKdW4gMzAgMTY6NTQ6NDAgMTk5OQ0KQEAgLTMyLDYg KzMyLDE2IEBADQogaW1wb3J0IHN5cywgb3MsIHN0cmluZw0KIGltcG9ydCB0 aW1lDQogaW1wb3J0IHBhdGhzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIHBhdGggaGFja2luZw0KKyMgaW50bA0KKyMgZmFiaW9A Y29uZWN0aXZhLmNvbS5icg0KKyMgcXVhIGp1biAzMCAxNjoyMDo1NSBFU1Qg MTk5OQ0KKw0KK2ltcG9ydCBpbnRsDQorDQorXz1pbnRsLmdldHRleHQNCitp bnRsLnRleHRkb21haW4oIm1haWxtYW4iKQ0KK2ludGwuYmluZHRleHRkb21h aW4oIm1haWxtYW4iLCIvdXNyL3NoYXJlL2xvY2FsZSIpICAgICAgICANCisN CiB0cnk6DQogICAgIGltcG9ydCBnZXRwYXNzDQogZXhjZXB0IEltcG9ydEVy cm9yOg0KQEAgLTU4LDcgKzY4LDcgQEANCiAgICAgaWYgbGVuKGFyZ3YpID4g MToNCiAJbGlzdF9uYW1lID0gYXJndlsxXQ0KICAgICBlbHNlOg0KLQlsaXN0 X25hbWUgPSByYXdfaW5wdXQoIkVudGVyIHRoZSBuYW1lIG9mIHRoZSBsaXN0 OiAiKQ0KKwlsaXN0X25hbWUgPSByYXdfaW5wdXQoXygiRW50ZXIgdGhlIG5h bWUgb2YgdGhlIGxpc3Q6ICIpKQ0KICAgICBsaXN0X25hbWUgPSBzdHJpbmcu bG93ZXIobGlzdF9uYW1lKQ0KIA0KICAgICBpZiAnQCcgaW4gbGlzdF9uYW1l Og0KQEAgLTc0LDEyICs4NCwxMiBAQA0KICAgICBpZiBsZW4oYXJndikgPiAy Og0KIAlvd25lcl9tYWlsID0gYXJndlsyXQ0KICAgICBlbHNlOg0KLQlvd25l cl9tYWlsID0gcmF3X2lucHV0KA0KLQkgICAgIkVudGVyIHRoZSBlbWFpbCBv ZiB0aGUgcGVyc29uIHJ1bm5pbmcgdGhlIGxpc3Q6ICIpDQorCW93bmVyX21h aWwgPSByYXdfaW5wdXQoXygNCisJICAgICJFbnRlciB0aGUgZW1haWwgb2Yg dGhlIHBlcnNvbiBydW5uaW5nIHRoZSBsaXN0OiAiKSkNCiAgICAgaWYgbGVu KGFyZ3YpID4gMzoNCiAJbGlzdF9wdyA9IGFyZ3ZbM10NCiAgICAgZWxzZToN Ci0gICAgICAgIGxpc3RfcHcgPSBnZXRwYXNzLmdldHBhc3MoIkluaXRpYWwg JXMgcGFzc3dvcmQ6ICIgJSBsaXN0X25hbWUpDQorICAgICAgICBsaXN0X3B3 ID0gZ2V0cGFzcy5nZXRwYXNzKF8oIkluaXRpYWwgJXMgcGFzc3dvcmQ6ICIp ICUgbGlzdF9uYW1lKQ0KIA0KICAgICBuZXdsaXN0ID0gTWFpbExpc3QuTWFp bExpc3QoKQ0KICAgICBwdyA9IGNyeXB0KGxpc3RfcHcgLCBVdGlscy5HZXRS YW5kb21TZWVkKCkpDQpAQCAtOTQsNyArMTA0LDcgQEANCiANCiAgICAgIyMj b3Muc3lzdGVtKCclcyAlcycgJSAoQUREQUxJQVNFU19DTUQsIGxpc3RfbmFt ZSkpDQogICAgIHByaW50ICcnJw0KLUVudHJ5IGZvciBhbGlhc2VzIGZpbGU6 DQorXygiRW50cnkgZm9yIGFsaWFzZXMgZmlsZToiKQ0KIA0KICMjICUobGlz dG5hbWUpcyBtYWlsaW5nIGxpc3QNCiAjIyBjcmVhdGVkOiAlKGRhdGUpcyAl KHVzZXIpcw0KQEAgLTExNSw3ICsxMjUsNyBAQA0KICAgICAgICB9DQogDQog ICAgIGlmIGxlbihhcmd2KSA8IDU6DQotCXByaW50ICgiSGl0IGVudGVyIHRv IGNvbnRpbnVlIHdpdGggJXMgb3duZXIgbm90aWZpY2F0aW9uLi4uIg0KKwlw cmludCAoXygiSGl0IGVudGVyIHRvIGNvbnRpbnVlIHdpdGggJXMgb3duZXIg bm90aWZpY2F0aW9uLi4uIikNCiAJICAgICAgICUgbGlzdF9uYW1lKSwNCiAJ c3lzLnN0ZGluLnJlYWRsaW5lKCkNCiAgICAgc2VuZG5vdGljZShuZXdsaXN0 LCBsaXN0X25hbWUsIG93bmVyX21haWwsIGxpc3RfcHcpDQpAQCAtMTMyLDcg KzE0Miw3IEBADQogICAgICAgICAgJ3JlcXVlc3RhZGRyJyA6ICIlcy1yZXF1 ZXN0QCVzIiAlIChsaXN0X25hbWUsIG5ld2xpc3QuaG9zdF9uYW1lKSwNCiAg ICAgICAgICAnaG9zdG5hbWUnICAgIDogbmV3bGlzdC5ob3N0X25hbWUsDQog ICAgICAgICAgfSkNCi0gICAgbmV3bGlzdC5TZW5kVGV4dFRvVXNlcihzdWJq ZWN0PSJZb3VyIG5ldyBtYWlsaW5nIGxpc3QiLA0KKyAgICBuZXdsaXN0LlNl bmRUZXh0VG9Vc2VyKHN1YmplY3Q9XygiWW91ciBuZXcgbWFpbGluZyBsaXN0 ICIpLA0KIAkJCSAgIHJlY2lwaWVudD1vd25lcl9tYWlsLA0KIAkJCSAgIHNl bmRlcj0nbWFpbG1hbi1vd25lckAlcycgJSBuZXdsaXN0Lmhvc3RfbmFtZSwg DQogCQkJICAgdGV4dD10ZXh0KQ0K ---876084556-1663948829-930778960=:28151 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; name="mailman.po" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="mailman.po" bXNnaWQgIiINCm1zZ3N0ciAiIg0KIkRhdGU6IDE5OTgtMDEtMjIgMTU6MjM6 MTYtMDIwMFxuIg0KIkZyb206IHJvb3QgPHJvb3RAcGV0dW5pYS5jb25lY3Rp dmEuY29tLmJyPlxuIg0KIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD1cbiINCiJYZ2V0dGV4dC1PcHRpb25zOiAtLWRlZmF1bHQtZG9tYWlu PW1haWxtYW4gLS1hZGQtY29tbWVudHMgLS1rZXl3b3JkPV8gIg0KIi0ta2V5 d29yZD1OX1xuIg0KIkZpbGVzOiAuLi9uZXdsaXN0XG4iDQoNCm1zZ2lkICJZ b3VyIG5ldyBtYWlsaW5nIGxpc3QgIg0KbXNnc3RyICJTdWEgbm92YSBsaXN0 YSBkZSBlbWFpbCAiDQoNCm1zZ2lkICJFbnRlciB0aGUgbmFtZSBvZiB0aGUg bGlzdDogIg0KbXNnc3RyICJFbnRyZSBvIG5vbWUgZGEgbGlzdGE6ICINCg0K DQptc2dpZCAiRW50ZXIgdGhlIGVtYWlsIG9mIHRoZSBwZXJzb24gcnVubmlu ZyB0aGUgbGlzdDogIg0KbXNnc3RyICJFbnRyZSBvIGVtYWlsIGRhIHBlc3Nv YSBhZG1pbmlzdHJhbmRvIGEgbGlzdGE6ICINCg0KbXNnaWQgIkluaXRpYWwg JXMgcGFzc3dvcmQ6ICINCm1zZ3N0ciAiU2VuaGEgJXMgaW5pY2lhbDogIg0K DQptc2dpZCAiRW50cnkgZm9yIGFsaWFzZXMgZmlsZToiDQptc2dzdHIgIkVu dHJhZGEgcGFyYSBvIGFycXVpdm8gYWxpYXNlczoiDQoNCm1zZ2lkICJIaXQg ZW50ZXIgdG8gY29udGludWUgd2l0aCAlcyBvd25lciBub3RpZmljYXRpb24u Li4iDQptc2dzdHIgIlRlY2xlIGVudGVyIHBhcmEgY29udGludWFyIGNvbSBh cyBub3RpZmljYef1ZXMgcHLzcHJpYXMgZGEgbGlzdGEgJXMuLi4iDQo= ---876084556-1663948829-930778960=:28151-- From bwarsaw@cnri.reston.va.us (Barry A. Warsaw) Wed Jun 30 23:27:04 1999 From: bwarsaw@cnri.reston.va.us (Barry A. Warsaw) (Barry A. Warsaw) Date: Wed, 30 Jun 1999 18:27:04 -0400 (EDT) Subject: [Mailman-Developers] Performance problems and MailMan References: Message-ID: <14202.39352.251397.642429@anthem.cnri.reston.va.us> I think I have identified at least one performance bottleneck with Mailman. Hopefully, /the/ only bottleneck :) I think the culprit is in HyperDatabase.py, namely the DumbBTree class. This stuff is the interface b/w Mailman and Pipermail, and as such I am really quite unfamilar with this code, but using the trick I outlined in a previous message, I found that most of the time when I printed the stack trace, I found myself in HyperDatabase.clearIndex(). I think the algorithm of using key=dumbtree.next(); del dumbtree[key] is extremely inefficient. Take a look at DumbBTree.__delitem__() to get the picture. So here's an experimental patch to add a clear() method to the DumbBTree class, which clearIndex() will use if available, falling back to the old approach, which I assume is some API standard for bsddb btrees -- which Mailman doesn't use currently. Near as I can tell, this doesn't break anything, archive threads still get created properly, and while I haven't tested it live on python.org, it ought to speed at least this part up a lot. We'll see if this fixes the problem some of us have seen. I'm going to try to test this some more before I check it in. I may install it on python.org to see what happens. I'd love some feedback. Does it solve the performance problems? Does anything break because of this patch? Do we need to investigate further? -Barry -------------------- snip snip -------------------- Index: HyperDatabase.py =================================================================== RCS file: /projects/cvsroot/mailman/Mailman/Archiver/HyperDatabase.py,v retrieving revision 1.3 diff -c -r1.3 HyperDatabase.py *** HyperDatabase.py 1998/11/04 23:49:03 1.3 --- HyperDatabase.py 1999/06/30 22:12:24 *************** *** 88,95 **** else: self.current_index = self.current_index + 1 ! ! def first(self): if not self.sorted: --- 88,97 ---- else: self.current_index = self.current_index + 1 ! def clear(self): ! # bulk clearing much faster than deleting each item, esp. with the ! # implementation of __delitem__() above :( ! self.dict = {} def first(self): if not self.sorted: *************** *** 296,302 **** def newArchive(self, archive): pass def clearIndex(self, archive, index): self.__openIndices(archive) ! index=getattr(self, index+'Index') finished=0 try: key, msgid=self.threadIndex.first() --- 298,307 ---- def newArchive(self, archive): pass def clearIndex(self, archive, index): self.__openIndices(archive) ! ## index=getattr(self, index+'Index') ! if hasattr(self.threadIndex, 'clear'): ! self.threadIndex.clear() ! return finished=0 try: key, msgid=self.threadIndex.first()