From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Benjamin Sergeant" Subject: Re: git-p4 fails when cloning a p4 depo. Date: Sun, 17 Jun 2007 09:09:00 -0700 Message-ID: <1621f9fa0706170909s779b471fl872c027b8e7b446c@mail.gmail.com> References: <1621f9fa0706080941k67d2878dud8cf06436c67aea0@mail.gmail.com> <1621f9fa0706081113w7bb765ebx74f03a7407b753cb@mail.gmail.com> <466DF32D.802@xs4all.nl> <200706171011.52492.simon@lst.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_46496_22460953.1182096540789" Cc: git@vger.kernel.org To: "Simon Hausmann" X-From: git-owner@vger.kernel.org Sun Jun 17 18:09:16 2007 Return-path: Envelope-to: gcvg-git@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1HzxJT-00065p-38 for gcvg-git@gmane.org; Sun, 17 Jun 2007 18:09:15 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752607AbXFQQJE (ORCPT ); Sun, 17 Jun 2007 12:09:04 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752324AbXFQQJE (ORCPT ); Sun, 17 Jun 2007 12:09:04 -0400 Received: from nz-out-0506.google.com ([64.233.162.234]:50761 "EHLO nz-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751992AbXFQQJC (ORCPT ); Sun, 17 Jun 2007 12:09:02 -0400 Received: by nz-out-0506.google.com with SMTP id n1so1199313nzf for ; Sun, 17 Jun 2007 09:09:01 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=aijUE0i7f78R7IEzp7UShclYwluL/prCW/1wZp5LcEkt8SJmeVBHmUhmDSxAFCA+bbbQyAvBIyIxx4WxIrueuBwazUZmHuXHi4r94C6qOM9+rlp3MnmJA+/7BYbNlyTEEn9g8f2Qh7ETBxo2c8S11Oc8cbvE7uxXhbbQDt18ml4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=TO4oRcLuWeMJZj82VhNqn5jwizZPwXaDTyMBPF20//yHwvdrgekN3IoMCXguEuJI2GSY343qAow08rPIKH5+RTO4BF1GVsfr8b8f1JZegZ2S1ajO+qsWCUaSyzaANNbEm3th93/lolP722SMYUXGMQTmyX7/24oFq5KPL8yIsWw= Received: by 10.142.105.14 with SMTP id d14mr251671wfc.1182096540831; Sun, 17 Jun 2007 09:09:00 -0700 (PDT) Received: by 10.142.108.1 with HTTP; Sun, 17 Jun 2007 09:09:00 -0700 (PDT) In-Reply-To: <200706171011.52492.simon@lst.de> Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: ------=_Part_46496_22460953.1182096540789 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 6/17/07, Simon Hausmann wrote: > On Tuesday 12 June 2007 03:13:17 Han-Wen Nienhuys wrote: > > Benjamin Sergeant escreveu: > > > A perforce command with all the files in the repo is generated to get > > > all the file content. > > > Here is a patch to break it into multiple successive perforce command > > > who uses 4K of parameter max, and collect the output for later. > > > > > > It works, but not for big depos, because the whole perforce depo > > > content is stored in memory in P4Sync.run(), and it looks like mine is > > > bigger than 2 Gigs, so I had to kill the process. > > > > General idea of the patch is ok. some nits: > > > + chunk = '' > > > + filedata = [] > > > + for i in xrange(len(files)): > > > > why not > > > > for f in files: > > > > ? > > It seems 'i' is used a bit later. Is there a nicer way to express this in > python? > > > > + f = files[i] > > > + chunk += '"%s#%s" ' % (f['path'], f['rev']) > > > + if len(chunk) > 4000 or i == len(files)-1: > > > > 4k seems reasonable enough, but can you take the min() with > > os.sysconf('SC_ARG_MAX') ? > > > > Can you address this and resend so we can apply the patch? > > Thanks. > > Since I ran into the very problem of a too long commandline myself yesterday I > took the liberty of adding the SC_ARG_MAX bit to Benjamin's patch and > comitting it then. > Cool. (probably useless but) For what it's worth ; Here is a tar file with 2 patchs: - The original one - The second one that adds the SC_ARG_MAX BTW, doing a += on a string is not supposed to be fast, appending elem to a sequence and then using ' '.join on them to build the big string is said to be faster (I did not timed it thought). (in the second patch also) Thanks, Benjamin. > > Simon > > ------=_Part_46496_22460953.1182096540789 Content-Type: application/x-tar; name=p4-sync-chunks.tar Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7kofd Content-Disposition: attachment; filename="p4-sync-chunks.tar" MDAwMS1TcGxpdC1wNC1wcmludC1jYWxsLWludG8tbXVsdGlwbGUtY2FsbC10by1ub3QtZXhjZWVk LnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDc2 NAAwMDAwNzY0ADAwMDAwMDAzMzE2ADEwNjMyMzExMDAwADAyNDQ1MQAgMAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGJzZXJnZWFuAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAYnNlcmdlYW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG cm9tIDQ1ZjJkYmRiOWE4YzBiM2JlYjAwN2FlODkyNjEzY2RjNGFmYWI4MGEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IEJlbmphbWluIFNlcmdlYW50IDxic2VyZ2VhbkBmbGFuZGVycy4o bm9uZSk+CkRhdGU6IEZyaSwgOCBKdW4gMjAwNyAwOTo1ODo1NyAtMDcwMApTdWJqZWN0OiBbUEFU Q0hdIFNwbGl0IHA0IHByaW50IGNhbGwgaW50byBtdWx0aXBsZSBjYWxsIHRvIG5vdCBleGNlZWQg dGhlIGNvbW1hbmQgbGluZSBsZW5naHQgbWF4aW11bQoKLS0tCiBnaXQtcDQgfCAgIDIxICsrKysr KysrKysrKysrKysrKy0tLQogMSBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dpdC1wNCBiL2dpdC1wNAppbmRleCAzNmZlNjlhLi45 MDZiMTkzIDEwMDc1NQotLS0gYS9naXQtcDQKKysrIGIvZ2l0LXA0CkBAIC03MDMsOSArNzAzLDIy IEBAIGNsYXNzIFA0U3luYyhDb21tYW5kKToKICAgICAgICAgaWYgbm90IGZpbGVzOgogICAgICAg ICAgICAgcmV0dXJuCiAKLSAgICAgICAgZmlsZWRhdGEgPSBwNENtZExpc3QoJ3ByaW50ICVzJyAl ICcgJy5qb2luKFsnIiVzIyVzIicgJSAoZlsncGF0aCddLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmWydyZXYnXSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBp biBmaWxlc10pKQorICAgICAgICAjIFdlIGNhbm5vdCBwdXQgYWxsIHRoZSBmaWxlcyBvbiB0aGUg Y29tbWFuZCBsaW5lCisgICAgICAgICMgT1MgaGF2ZSBsaW1pdGF0aW9ucyBvbiB0aGUgbWF4IGxl bmdodCBvZiBhcmd1bWVudHMKKyAgICAgICAgIyBQT1NJWCBzYXlzIGl0J3MgNDA5NiBieXRlcywg ZGVmYXVsdCBmb3IgTGludXggc2VlbXMgdG8gYmUgMTMwIEsuCisgICAgICAgICMgYW5kIGFsbCBP UyBmcm9tIHRoZSB0YWJsZSBiZWxvdyBzZWVtcyB0byBiZSBoaWdoZXIgdGhhbiBQT1NJWC4KKyAg ICAgICAgIyBTZWUgaHR0cDovL3d3dy5pbi11bG0uZGUvfm1hc2NoZWNrL3ZhcmlvdXMvYXJnbWF4 LworICAgICAgICBjaHVuayA9ICcnCisgICAgICAgIGZpbGVkYXRhID0gW10KKyAgICAgICAgZm9y IGkgaW4geHJhbmdlKGxlbihmaWxlcykpOgorICAgICAgICAgICAgZiA9IGZpbGVzW2ldCisgICAg ICAgICAgICBjaHVuayArPSAnIiVzIyVzIiAnICUgKGZbJ3BhdGgnXSwgZlsncmV2J10pCisgICAg ICAgICAgICBpZiBsZW4oY2h1bmspID4gNDAwMCBvciBpID09IGxlbihmaWxlcyktMToKKyAgICAg ICAgICAgICAgICBkYXRhID0gcDRDbWRMaXN0KCdwcmludCAlcycgJSBjaHVuaykKKyAgICAgICAg ICAgICAgICBpZiAicDRFeGl0Q29kZSIgaW4gZGF0YVswXToKKyAgICAgICAgICAgICAgICAgICAg ZGllKCJQcm9ibGVtcyBleGVjdXRpbmcgcDQuIEVycm9yOiBbJWRdLiIgJSAoZGF0YVswXVsncDRF eGl0Q29kZSddKSk7CisgICAgICAgICAgICAgICAgZmlsZWRhdGEuZXh0ZW5kKGRhdGEpCisgICAg ICAgICAgICAgICAgY2h1bmsgPSAnJwogCiAgICAgICAgIGogPSAwOwogICAgICAgICBjb250ZW50 cyA9IHt9CkBAIC0xNDg2LDMgKzE0OTksNSBAQCBkZWYgbWFpbigpOgogCiBpZiBfX25hbWVfXyA9 PSAnX19tYWluX18nOgogICAgIG1haW4oKQorCisjIHZpbTogc2V0IGZpbGV0eXBlPXB5dGhvbiBz dHM9NCBzdz00IGV0IHNpIDoKLS0gCjEuNS4wLjQKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDIt VXNlLW9zLnN5c2NvbmYtU0NfQVJHX01BWC10by1yZXRyaWV2ZS10aGUtbWF4LXZhbC5wYXRjaAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDA3NjQAMDAw MDc2NAAwMDAwMDAwMzQyMgAxMDYzMjMxMTAwMAAwMjM1MzIAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABic2VyZ2VhbgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAGJzZXJnZWFuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbSBk ZDk5NzU3MDg0MzNlZmVlYzM3YjYwODc1NWY1NGZiZWFlZGYwZjNmIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBCZW5qYW1pbiBTZXJnZWFudCA8YnNlcmdlYW5AZmxhbmRlcnMuKG5vbmUp PgpEYXRlOiBGcmksIDggSnVuIDIwMDcgMTA6MjA6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBV c2Ugb3Muc3lzY29uZignU0NfQVJHX01BWCcpIHRvIHJldHJpZXZlIHRoZSBtYXggdmFsdWUsIGFu ZCBidWlsZCB0aGUgc3RyaW5nIHVzaW5nIGpvaW4gKGZhc3RlcikKCi0tLQogZ2l0LXA0IHwgICAx NyArKysrKysrKysrLS0tLS0tLQogMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dpdC1wNCBiL2dpdC1wNAppbmRleCA5MDZiMTkz Li44ZGMxOTYzIDEwMDc1NQotLS0gYS9naXQtcDQKKysrIGIvZ2l0LXA0CkBAIC03MDUsMjAgKzcw NSwyMyBAQCBjbGFzcyBQNFN5bmMoQ29tbWFuZCk6CiAKICAgICAgICAgIyBXZSBjYW5ub3QgcHV0 IGFsbCB0aGUgZmlsZXMgb24gdGhlIGNvbW1hbmQgbGluZQogICAgICAgICAjIE9TIGhhdmUgbGlt aXRhdGlvbnMgb24gdGhlIG1heCBsZW5naHQgb2YgYXJndW1lbnRzCi0gICAgICAgICMgUE9TSVgg c2F5cyBpdCdzIDQwOTYgYnl0ZXMsIGRlZmF1bHQgZm9yIExpbnV4IHNlZW1zIHRvIGJlIDEzMCBL LgotICAgICAgICAjIGFuZCBhbGwgT1MgZnJvbSB0aGUgdGFibGUgYmVsb3cgc2VlbXMgdG8gYmUg aGlnaGVyIHRoYW4gUE9TSVguCiAgICAgICAgICMgU2VlIGh0dHA6Ly93d3cuaW4tdWxtLmRlL35t YXNjaGVjay92YXJpb3VzL2FyZ21heC8KLSAgICAgICAgY2h1bmsgPSAnJworICAgICAgICBjaHVu a3MgPSBbXQorICAgICAgICBjaHVua0xlbmdodCA9IDAKICAgICAgICAgZmlsZWRhdGEgPSBbXQor ICAgICAgICBtYXhsZW5naHQgPSBtYXgoaW50KG9zLnN5c2NvbmYoJ1NDX0FSR19NQVgnKSAqIDAu OTApLCA0MDAwKQorICAgICAgICBwcmludCBtYXhsZW5naHQKICAgICAgICAgZm9yIGkgaW4geHJh bmdlKGxlbihmaWxlcykpOgogICAgICAgICAgICAgZiA9IGZpbGVzW2ldCi0gICAgICAgICAgICBj aHVuayArPSAnIiVzIyVzIiAnICUgKGZbJ3BhdGgnXSwgZlsncmV2J10pCi0gICAgICAgICAgICBp ZiBsZW4oY2h1bmspID4gNDAwMCBvciBpID09IGxlbihmaWxlcyktMToKLSAgICAgICAgICAgICAg ICBkYXRhID0gcDRDbWRMaXN0KCdwcmludCAlcycgJSBjaHVuaykKKyAgICAgICAgICAgIGNodW5r TGVuZ2h0ICs9IGxlbihmWydwYXRoJ10pICsgbGVuKGZbJ3JldiddKQorICAgICAgICAgICAgY2h1 bmtzLmFwcGVuZCgnIiVzIyVzIiAnICUgKGZbJ3BhdGgnXSwgZlsncmV2J10pKQorICAgICAgICAg ICAgaWYgY2h1bmtMZW5naHQgPiBtYXhsZW5naHQgb3IgaSA9PSBsZW4oZmlsZXMpLTE6CisgICAg ICAgICAgICAgICAgZGF0YSA9IHA0Q21kTGlzdCgncHJpbnQgJXMnICUgJyAnLmpvaW4oY2h1bmtz KSkKICAgICAgICAgICAgICAgICBpZiAicDRFeGl0Q29kZSIgaW4gZGF0YVswXToKICAgICAgICAg ICAgICAgICAgICAgZGllKCJQcm9ibGVtcyBleGVjdXRpbmcgcDQuIEVycm9yOiBbJWRdLiIgJSAo ZGF0YVswXVsncDRFeGl0Q29kZSddKSk7CiAgICAgICAgICAgICAgICAgZmlsZWRhdGEuZXh0ZW5k KGRhdGEpCi0gICAgICAgICAgICAgICAgY2h1bmsgPSAnJworICAgICAgICAgICAgICAgIGNodW5r cyA9IFtdCisgICAgICAgICAgICAgICAgY2h1bmtMZW5naHQgPSAwCiAKICAgICAgICAgaiA9IDA7 CiAgICAgICAgIGNvbnRlbnRzID0ge30KLS0gCjEuNS4wLjQKCgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== ------=_Part_46496_22460953.1182096540789--