From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dana How" Subject: [PATCH 12/13] rewrite write_pack_file() to write multiple packs Date: Thu, 5 Apr 2007 15:41:06 -0700 Message-ID: <56b7f5510704051541s524480cfgbb73f077e5753168@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_59127_13858161.1175812866422" Cc: git@vger.kernel.org, danahow@gmail.com To: "Junio C Hamano" X-From: git-owner@vger.kernel.org Fri Apr 06 00:41:14 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 1HZadl-0000Sq-Qw for gcvg-git@gmane.org; Fri, 06 Apr 2007 00:41:14 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1767223AbXDEWlK (ORCPT ); Thu, 5 Apr 2007 18:41:10 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1767381AbXDEWlK (ORCPT ); Thu, 5 Apr 2007 18:41:10 -0400 Received: from wx-out-0506.google.com ([66.249.82.229]:8465 "EHLO wx-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1767223AbXDEWlI (ORCPT ); Thu, 5 Apr 2007 18:41:08 -0400 Received: by wx-out-0506.google.com with SMTP id h31so759193wxd for ; Thu, 05 Apr 2007 15:41:07 -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:mime-version:content-type; b=rtHvYEyWRQQO7OrfymHFYDwpbxuUcAGYX6n7aKTp+PwYhvQARVOd165SE5xIkmzBokWFgowxaK/QIydwrFGVhY++AH/JYPYBbgj8TMudtEGwyrHSsuwCCo6tb5w7EiDRkbNpdytXdYQ4EJpGpuTkVFije6ARfcf7sa2wrxJ+BDU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:mime-version:content-type; b=K3Wuierpgj9WmhsRdF0EPEgeOlZ1T8AZS/Q3ZFzKK24kI2FL061+UTGkjiAgeJ24mk4BI44QOS0dhIgomx2r9c/GoXYgXYf8u2K863siH9uslMJTt9Z/FakVW5g9KFJZAkRaSDAtwKXcaGrmRsdnzyNCvMyVSq8nc6QkWx1NU5M= Received: by 10.114.137.2 with SMTP id k2mr946820wad.1175812866465; Thu, 05 Apr 2007 15:41:06 -0700 (PDT) Received: by 10.114.46.4 with HTTP; Thu, 5 Apr 2007 15:41:06 -0700 (PDT) Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: ------=_Part_59127_13858161.1175812866422 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline write_pack_file() now also sets up and sorts written_list for each pack; modify write_one() to update this and write_index_file() to use it. --- builtin-pack-objects.c | 147 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 105 insertions(+), 42 deletions(-) -- Dana L. How danahow@gmail.com +1 650 804 5991 cell ------=_Part_59127_13858161.1175812866422 Content-Type: text/plain; name="0012-rewrite-write_pack_file-to-write-multiple-packs.patch.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0012-rewrite-write_pack_file-to-write-multiple-packs.patch.txt" X-Attachment-Id: f_f05sm66y RnJvbSBjYzY4MDhlMThmYmViMjA0OWUxZDcwNWViN2M3ZjZmOWI4M2IzNDQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5hIEhvdyA8aG93QGRlYXRodmFsbGV5LmNzd2l0Y2guY29t PgpEYXRlOiBUaHUsIDUgQXByIDIwMDcgMTQ6NDM6MzMgLTA3MDAKU3ViamVjdDogW1BBVENIIDEy LzEzXSByZXdyaXRlIHdyaXRlX3BhY2tfZmlsZSgpIHRvIHdyaXRlIG11bHRpcGxlIHBhY2tzCgp3 cml0ZV9wYWNrX2ZpbGUoKSBub3cgYWxzbyBzZXRzIHVwIGFuZCBzb3J0cyB3cml0dGVuX2xpc3QK Zm9yIGVhY2ggcGFjazsgIG1vZGlmeSB3cml0ZV9vbmUoKSB0byB1cGRhdGUgdGhpcyBhbmQKd3Jp dGVfaW5kZXhfZmlsZSgpIHRvIHVzZSBpdC4KLS0tCiBidWlsdGluLXBhY2stb2JqZWN0cy5jIHwg IDE0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2J1aWx0aW4tcGFjay1vYmplY3RzLmMgYi9idWlsdGluLXBhY2stb2JqZWN0cy5jCmlu ZGV4IGFjNjQzZGQuLjMyMjlkZjggMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcGFjay1vYmplY3RzLmMK KysrIGIvYnVpbHRpbi1wYWNrLW9iamVjdHMuYwpAQCAtNTM0LDE0ICs1MzQsMTcgQEAgc3RhdGlj IG9mZl90IHdyaXRlX29uZShzdHJ1Y3Qgc2hhMWZpbGUgKmYsCiAJCSAqIEVuc3VyZSB0aGUgcGFj a2ZpbGUgc2l6ZSBuZXZlciBleGNlZWRzIG9yIG1hdGNoZXMgb2Zmc2V0X2xpbWl0LgogCQkgKiBU aGUgIjIwIiBpcyBmb3IgdGhlIGZpbmFsIFNIQTEuCiAJCSAqLwotCQlpZiAoKHVuc2lnbmVkIGxv bmcpb2Zmc2V0IDwgKHVuc2lnbmVkIGxvbmcpKG9mZnNldF9saW1pdCAtIDIwKSkKKwkJaWYgKCh1 bnNpZ25lZCBsb25nKW9mZnNldCA8ICh1bnNpZ25lZCBsb25nKShvZmZzZXRfbGltaXQgLSAyMCkp IHsKKwkJCSp3cml0dGVuX2xpc3QrKyA9IGU7CiAJCQlyZXR1cm4gb2Zmc2V0OworCQl9CiAJCXdy aXR0ZW4gPSBzYXZlX3dyaXR0ZW4sIHdyaXR0ZW5fZGVsdGEgPSBzYXZlX3dyaXR0ZW5fZGVsdGE7 CiAJCXJldXNlZCA9IHNhdmVfcmV1c2VkLCByZXVzZWRfZGVsdGEgPSBzYXZlX3JldXNlZF9kZWx0 YTsKIAkJc2hhMXVuZG8oZiwgJnBvc24sIG9mZnNldCwgZS0+b2Zmc2V0KTsKIAkJZS0+b2Zmc2V0 ID0gMDsKIAkJcmV0dXJuIDA7CiAJfQorCSp3cml0dGVuX2xpc3QrKyA9IGU7CiAJcmV0dXJuIG9m ZnNldCArIHdyaXRlX29iamVjdChmLCBlKTsKIH0KIApAQCAtNTk3LDUyICs2MDAsMTEyIEBAIHN0 YXRpYyB2b2lkIHdyaXRlX2luZGV4X2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHdyaXRlX3Bh Y2tfZmlsZSh2b2lkKQogewotCXVpbnQzMl90IGk7CisJdWludDMyX3QgaSwgajsKIAlzdHJ1Y3Qg c2hhMWZpbGUgKmY7CiAJb2ZmX3Qgb2Zmc2V0OwogCXN0cnVjdCBwYWNrX2hlYWRlciBoZHI7CiAJ dW5zaWduZWQgbGFzdF9wZXJjZW50ID0gOTk5OwotCWludCBkb19wcm9ncmVzcyA9IHByb2dyZXNz OworCWludCBkb19wcm9ncmVzcyA9IHByb2dyZXNzID4+ICFiYXNlX25hbWU7CisJY2hhciBvbGRu YW1lW1BBVEhfTUFYXTsKKwlpbnQgcGFja19mZDsKKwlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICoqbGlz dDsKKwlTSEFfQ1RYIGN0eDsKKwl1aW50MzJfdCBucl9hY3R1YWwgPSBucl9yZXN1bHQgLSBucl9z a2lwcGVkOwogCi0JaWYgKCFiYXNlX25hbWUpIHsKLQkJZiA9IHNoYTFmZCgxLCAiPHN0ZG91dD4i KTsKLQkJZG9fcHJvZ3Jlc3MgPj49IDE7Ci0JfQotCWVsc2UKLQkJZiA9IHNoYTFjcmVhdGUoIiVz LSVzLiVzIiwgYmFzZV9uYW1lLAotCQkJICAgICAgIHNoYTFfdG9faGV4KG9iamVjdF9saXN0X3No YTEpLCAicGFjayIpOwogCWlmIChkb19wcm9ncmVzcykKLQkJZnByaW50ZihzdGRlcnIsICJXcml0 aW5nICV1IG9iamVjdHMuXG4iLCBucl9yZXN1bHQpOwotCi0JaGRyLmhkcl9zaWduYXR1cmUgPSBo dG9ubChQQUNLX1NJR05BVFVSRSk7Ci0JaGRyLmhkcl92ZXJzaW9uID0gaHRvbmwoUEFDS19WRVJT SU9OKTsKLQloZHIuaGRyX2VudHJpZXMgPSBodG9ubChucl9yZXN1bHQpOwotCXNoYTF3cml0ZShm LCAmaGRyLCBzaXplb2YoaGRyKSk7Ci0Jb2Zmc2V0ID0gc2l6ZW9mKGhkcik7Ci0JaWYgKCFucl9y ZXN1bHQpCi0JCWdvdG8gZG9uZTsKLQlmb3IgKGkgPSAwOyBpIDwgbnJfb2JqZWN0czsgaSsrKSB7 Ci0JCW9mZnNldCA9IHdyaXRlX29uZShmLCBvYmplY3RzICsgaSwgb2Zmc2V0KTsKLQkJaWYgKGRv X3Byb2dyZXNzKSB7Ci0JCQl1bnNpZ25lZCBwZXJjZW50ID0gd3JpdHRlbiAqIDEwMCAvIG5yX3Jl c3VsdDsKLQkJCWlmIChwcm9ncmVzc191cGRhdGUgfHwgcGVyY2VudCAhPSBsYXN0X3BlcmNlbnQp IHsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiU0dSUlICgldS8ldSkgZG9uZVxyIiwKLQkJCQkJcGVy Y2VudCwgd3JpdHRlbiwgbnJfcmVzdWx0KTsKLQkJCQlwcm9ncmVzc191cGRhdGUgPSAwOwotCQkJ CWxhc3RfcGVyY2VudCA9IHBlcmNlbnQ7CisJCWZwcmludGYoc3RkZXJyLCAiV3JpdGluZyAldSBv YmplY3RzLlxuIiwgbnJfYWN0dWFsKTsKKwl3cml0dGVuX2xpc3QgPSBsaXN0ID0geG1hbGxvYyhu cl9vYmplY3RzICogc2l6ZW9mKHN0cnVjdCBvYmplY3RfZW50cnkgKikpOworCisJZm9yIChpID0g MDsgaSA8IG5yX29iamVjdHM7KSB7CisJCWlmICghYmFzZV9uYW1lKSB7CisJCQlmID0gc2hhMWZk KHBhY2tfZmQgPSAxLCAiPHN0ZG91dD4iKTsKKwkJfQorCQllbHNlIHsKKwkJCWludCBsZW4gPSBz bnByaW50ZihvbGRuYW1lLCBzaXplb2Ygb2xkbmFtZSwgIiVzLVhYWFhYWCIsIGJhc2VfbmFtZSk7 CisJCQlpZiAobGVuID49IFBBVEhfTUFYKQorCQkJCWRpZSgiZXhjZXNzaXZlIHBhdGhuYW1lIGxl bmd0aCBmb3IgaW5pdGlhbCBwYWNrZmlsZSBuYW1lIik7CisJCQlwYWNrX2ZkID0gbWtzdGVtcChv bGRuYW1lKTsKKwkJCWlmIChwYWNrX2ZkIDwgMCkKKwkJCQlkaWUoImNhbid0IGNyZWF0ZSAlczog JXMiLCBvbGRuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJZiA9IHNoYTFmZChwYWNrX2ZkLCBv bGRuYW1lKTsKKwkJfQorCisJCWhkci5oZHJfc2lnbmF0dXJlID0gaHRvbmwoUEFDS19TSUdOQVRV UkUpOworCQloZHIuaGRyX3ZlcnNpb24gPSBodG9ubChQQUNLX1ZFUlNJT04pOworCQloZHIuaGRy X2VudHJpZXMgPSBodG9ubCghYmFzZV9uYW1lICYmIG9mZnNldF9saW1pdCA/IDAgOiBucl9hY3R1 YWwpOworCQlzaGExd3JpdGUoZiwgJmhkciwgc2l6ZW9mKGhkcikpOworCQlvZmZzZXQgPSBzaXpl b2YoaGRyKTsKKwkJZm9yICg7IGkgPCBucl9vYmplY3RzOyBpKyspIHsKKwkJCW9mZl90IG9mZnNl dF9vbmUgPSB3cml0ZV9vbmUoZiwgb2JqZWN0cyArIGksIG9mZnNldCk7CisJCQlpZiAoIW9mZnNl dF9vbmUpCisJCQkJYnJlYWs7CisJCQlvZmZzZXQgPSBvZmZzZXRfb25lOworCQkJaWYgKGRvX3By b2dyZXNzKSB7CisJCQkJdW5zaWduZWQgcGVyY2VudCA9IHdyaXR0ZW4gKiAxMDAgLyBucl9hY3R1 YWw7CisJCQkJaWYgKHByb2dyZXNzX3VwZGF0ZSB8fCBwZXJjZW50ICE9IGxhc3RfcGVyY2VudCkg eworCQkJCQlmcHJpbnRmKHN0ZGVyciwgIiU0dSUlICgldS8ldSkgZG9uZVxyIiwKKwkJCQkJCXBl cmNlbnQsIHdyaXR0ZW4sIG5yX2FjdHVhbCk7CisJCQkJCXByb2dyZXNzX3VwZGF0ZSA9IDA7CisJ CQkJCWxhc3RfcGVyY2VudCA9IHBlcmNlbnQ7CisJCQkJfQogCQkJfQogCQl9CisJCW5yX3dyaXR0 ZW4gPSB3cml0dGVuX2xpc3QgLSBsaXN0OworCQl3cml0dGVuX2xpc3QgPSBsaXN0OworCisJCS8q CisJCSAqIFdyaXRlIHRlcm1pbmF0b3IgcmVjb3JkIGhlcmUgaWYgZGVzaXJlZDoKKwkJICogdHlw ZT1PQkpfTk9ORSwgbGVuPTA7ICB0aGlzIGlzIGEgemVybyBieXRlLgorCQkgKi8KKworCQkvKgor CQkgKiBEaWQgd2Ugd3JpdGUgdGhlIHdyb25nICMgZW50cmllcyBpbiB0aGUgaGVhZGVyPworCQkg KiBJZiBzbywgcmV3cml0ZSBpdCBsaWtlIGluIGZhc3QtaW1wb3J0IChnYWNraykuCisJCSAqLwor CQlpZiAoICFiYXNlX25hbWUgfHwgbnJfd3JpdHRlbiA9PSBucl9hY3R1YWwgKSB7CisJCQlzaGEx Y2xvc2UoZiwgcGFja19maWxlX3NoYTEsIDEpOworCQl9IGVsc2UgeworCQkJc2hhMWNsb3NlKGYs IHBhY2tfZmlsZV9zaGExLCAtMSk7CisJCQlmaXh1cF9oZWFkZXJfZm9vdGVyKHBhY2tfZmQsIHBh Y2tfZmlsZV9zaGExLCBvbGRuYW1lLCBucl93cml0dGVuKTsKKwkJfQorCisJCS8qCisJCSAqIGNv bXB1dGUgb2JqZWN0X2xpc3Rfc2hhMSBvZiBzb3J0ZWQgc2hhJ3Mgd2UganVzdCB3cm90ZSBvdXQ7 CisJCSAqIHdlIGFsc28gbWFyayB0aGVzZSBvYmplY3RzIGFzIHdyaXR0ZW4KKwkJICovCisJCWN1 cnJlbnRfc29ydCA9IHNoYTFfc29ydDsKKwkJcXNvcnQobGlzdCwgbnJfd3JpdHRlbiwgc2l6ZW9m KHN0cnVjdCBvYmplY3RfZW50cnkgKiksIHNvcnRfY29tcGFyYXRvcik7CisJCVNIQTFfSW5pdCgm Y3R4KTsKKwkJZm9yIChqID0gMDsgaiA8IG5yX3dyaXR0ZW47IGorKykgeworCQkJc3RydWN0IG9i amVjdF9lbnRyeSAqZW50cnkgPSAqbGlzdCsrOworCQkJZW50cnktPm5vX3dyaXRlID0gMTsKKwkJ CVNIQTFfVXBkYXRlKCZjdHgsIGVudHJ5LT5zaGExLCAyMCk7CisJCX0KKwkJU0hBMV9GaW5hbChv YmplY3RfbGlzdF9zaGExLCAmY3R4KTsKKwkJbGlzdCA9IHdyaXR0ZW5fbGlzdDsKKwkJLyoKKwkJ ICogbm93IHdlIGNhbiByZW5hbWUgdGhlIHBhY2sgY29ycmVjdGx5IGFuZCB3cml0ZSB0aGUgaW5k ZXggZmlsZQorCQkgKi8KKwkJaWYgKGJhc2VfbmFtZSkgeworCQkJY2hhciBuZXduYW1lW1BBVEhf TUFYXTsKKwkJCWludCBsZW4gPSBzbnByaW50ZihuZXduYW1lLCBzaXplb2YgbmV3bmFtZSwgIiVz LSVzLiVzIiwKKwkJCQkJCWJhc2VfbmFtZSwgc2hhMV90b19oZXgob2JqZWN0X2xpc3Rfc2hhMSks ICJwYWNrIik7CisJCQlpZiAobGVuID49IFBBVEhfTUFYKQorCQkJCWRpZSgiZXhjZXNzaXZlIHBh dGhuYW1lIGxlbmd0aCBmb3IgZmluYWwgcGFja2ZpbGUgbmFtZSIpOworCQkJaWYgKHJlbmFtZShv bGRuYW1lLCBuZXduYW1lKSA8IDApCisJCQkJZGllKCJjb3VsZCBub3QgcmVuYW1lIHRoZSBwYWNr IGZpbGUiKTsKKwkJfQorCQlpZiAoIXBhY2tfdG9fc3Rkb3V0KSB7CisJCQl3cml0ZV9pbmRleF9m aWxlKCk7CisJCQlwdXRzKHNoYTFfdG9faGV4KG9iamVjdF9saXN0X3NoYTEpKTsKKwkJfQogCX0K LQlpZiAoZG9fcHJvZ3Jlc3MpCisKKwlmcmVlKHdyaXR0ZW5fbGlzdCk7CisJaWYgKG5yX2FjdHVh bCAmJiBkb19wcm9ncmVzcykKIAkJZnB1dGMoJ1xuJywgc3RkZXJyKTsKLSBkb25lOgotCWlmICh3 cml0dGVuICE9IG5yX3Jlc3VsdCkKLQkJZGllKCJ3cm90ZSAldSBvYmplY3RzIHdoaWxlIGV4cGVj dGluZyAldSIsIHdyaXR0ZW4sIG5yX3Jlc3VsdCk7Ci0Jc2hhMWNsb3NlKGYsIHBhY2tfZmlsZV9z aGExLCAxKTsKLQlpZiAoIXBhY2tfdG9fc3Rkb3V0KSB7Ci0JCXdyaXRlX2luZGV4X2ZpbGUoKTsK LQkJcHV0cyhzaGExX3RvX2hleChvYmplY3RfbGlzdF9zaGExKSk7Ci0JfQorCWlmICh3cml0dGVu ICE9IG5yX2FjdHVhbCkKKwkJZGllKCJ3cm90ZSAldSBvYmplY3RzIHdoaWxlIGV4cGVjdGluZyAl dSIsIHdyaXR0ZW4sIG5yX2FjdHVhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRlX2luZGV4X2Zp bGUodm9pZCkKQEAgLTY1MCw4ICs3MTMsOCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9pbmRleF9maWxl KHZvaWQpCiAJdWludDMyX3QgaTsKIAlzdHJ1Y3Qgc2hhMWZpbGUgKmYgPSBzaGExY3JlYXRlKCIl cy0lcy4lcyIsIGJhc2VfbmFtZSwKIAkJCQkJc2hhMV90b19oZXgob2JqZWN0X2xpc3Rfc2hhMSks ICJpZHgiKTsKLQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICoqbGlzdCA9IHNvcnRlZF9ieV9zaGE7Ci0J c3RydWN0IG9iamVjdF9lbnRyeSAqKmxhc3QgPSBsaXN0ICsgbnJfcmVzdWx0OworCXN0cnVjdCBv YmplY3RfZW50cnkgKipsaXN0ID0gd3JpdHRlbl9saXN0OworCXN0cnVjdCBvYmplY3RfZW50cnkg KipsYXN0ID0gbGlzdCArIG5yX3dyaXR0ZW47CiAJdWludDMyX3QgYXJyYXlbMjU2XTsKIAogCS8q CkBAIC02NjcsNyArNzMwLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVfaW5kZXhfZmlsZSh2b2lkKQog CQkJCWJyZWFrOwogCQkJbmV4dCsrOwogCQl9Ci0JCWFycmF5W2ldID0gaHRvbmwobmV4dCAtIHNv cnRlZF9ieV9zaGEpOworCQlhcnJheVtpXSA9IGh0b25sKG5leHQgLSB3cml0dGVuX2xpc3QpOwog CQlsaXN0ID0gbmV4dDsKIAl9CiAJc2hhMXdyaXRlKGYsIGFycmF5LCAyNTYgKiA0KTsKQEAgLTY3 NSw4ICs3MzgsOCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9pbmRleF9maWxlKHZvaWQpCiAJLyoKIAkg KiBXcml0ZSB0aGUgYWN0dWFsIFNIQTEgZW50cmllcy4uCiAJICovCi0JbGlzdCA9IHNvcnRlZF9i eV9zaGE7Ci0JZm9yIChpID0gMDsgaSA8IG5yX3Jlc3VsdDsgaSsrKSB7CisJbGlzdCA9IHdyaXR0 ZW5fbGlzdDsKKwlmb3IgKGkgPSAwOyBpIDwgbnJfd3JpdHRlbjsgaSsrKSB7CiAJCXN0cnVjdCBv YmplY3RfZW50cnkgKmVudHJ5ID0gKmxpc3QrKzsKIAkJdWludDMyX3Qgb2Zmc2V0ID0gaHRvbmwo ZW50cnktPm9mZnNldCk7CiAJCXNoYTF3cml0ZShmLCAmb2Zmc2V0LCA0KTsKLS0gCjEuNS4xLnJj Mi4xOC5nOWM4OC1kaXJ0eQoK ------=_Part_59127_13858161.1175812866422--