From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([69.77.167.62] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1KSgYt-0004UZ-LY for garchives@archives.gentoo.org; Mon, 11 Aug 2008 23:12:28 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 24E2CE072B; Mon, 11 Aug 2008 23:12:27 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 8FC1EE072B for ; Mon, 11 Aug 2008 23:12:26 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 0F80665880 for ; Mon, 11 Aug 2008 23:12:26 +0000 (UTC) X-Virus-Scanned: amavisd-new at gentoo.org X-Spam-Score: -1.244 X-Spam-Level: X-Spam-Status: No, score=-1.244 required=5.5 tests=[AWL=1.355, BAYES_00=-2.599] Received: from smtp.gentoo.org ([127.0.0.1]) by localhost (smtp.gentoo.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ek1ti3DRfUGf for ; Mon, 11 Aug 2008 23:12:16 +0000 (UTC) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.237]) by smtp.gentoo.org (Postfix) with ESMTP id 72A9C65FEE for ; Mon, 11 Aug 2008 23:12:15 +0000 (UTC) Received: by wr-out-0506.google.com with SMTP id 58so1608638wri.8 for ; Mon, 11 Aug 2008 16:12:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:mime-version:content-type:x-google-sender-auth; bh=S3fJyPJF/RnVqcBcshIY52OX3MQlaNLb3ytD6dC0o7c=; b=k9fsYtIPww10pQTprQ+91diHYicwJILshYx7pkpY8ItnSyOt3YNYVI5WNRS8H6RhOs uY4ZadRT7YUE+IsFeCVrmKoZ2KHbM4oov3Y4bB1uzFFQBczZHV0n38CWgj3pK9fP3z0y x7F5TuIE0m1tN8NSVvb43/yDl5EzvJOXwFt1s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:mime-version:content-type :x-google-sender-auth; b=IOSOx+1qdWITU4GgU/bXlFIlTol7xDB8yJJVjLUAFRojW9xUtWZUtf5CYy9cq/gJlM k3Yb5S4BzCcp0JX5dokPKvftgxjsRZR/14OI0e9Djl16KLWR8SBGn0tO77oL4DdIkL7e 2PH0GFOSVzaYBOSkLPgttRx2OySHyQGSHPHe4= Received: by 10.90.96.15 with SMTP id t15mr11514192agb.8.1218496334487; Mon, 11 Aug 2008 16:12:14 -0700 (PDT) Received: by 10.100.93.4 with HTTP; Mon, 11 Aug 2008 16:12:14 -0700 (PDT) Message-ID: Date: Mon, 11 Aug 2008 18:12:14 -0500 From: "Lucian Poston" Sender: lucian.poston@gmail.com To: gentoo-soc@lists.gentoo.org Subject: [gentoo-soc] Progress Report - Revdep-rebuild Cc: "Marius Mauch" Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-soc@lists.gentoo.org Reply-to: gentoo-soc@lists.gentoo.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_92742_7505003.1218496334459" X-Google-Sender-Auth: def3977f8410fd12 X-Archives-Salt: 311e4ee2-3e5c-44f7-b266-0ee39f383a49 X-Archives-Hash: b8a874ceac9b58c1badf86f3eaff4803 ------=_Part_92742_7505003.1218496334459 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline This week didn't see much movement in the repository due to life happening (moving and lack of internet at new apt). On the plus side, I believe the majority of the work is complete, and I urge everyone to give it a test to help me discover problems. :) I'm happy with the overall results so far. One thing that irks me is the dependence on directory and library masks found in /etc/revdep-rebuild/*. I was really hoping to find a more elegant solution than parsing masks from config files, but all my attempts at a different solution were not successful. Unfortunately, as long as masks are used, there is the potential of false positives for libraries that are not properly masked, which as far as I know is the only major issue. My work over the last week was largely polishing details in docstrings/comments and contemplating final modifications (or future endeavors). During this last week of gsoc, I'm going to (hopefully) improve the performance of LinkageMap and MissingLibraryConsumerSet before the deadline. It was suggested on the gentoo-portage-dev mailing list [1] that efficiency in path comparisons in LinkageMap could be improved by comparing inodes rather than os.path.realpath in python's os.path module, which is what I started to implement recently; however, this appears to require changes outside of the class, which will take time to finalize e.g. during the unmerge process, LinkageMap.rebuild is called after files have been removed but before /var/db/pkg has been correspondingly updated, which is problematic since. I may not get all the kinks worked out of changing LinkageMap before the gsoc deadline, so I'll have something to work on afterwards. :) The attached patches add the library dependency rebuilder as a set, @missing-rebuild, to portage-2.2_rc6. Similar to the --library flag in revdep-rebuild, the user can additionally emerge the set of packages containing consumers of libraries matched by a (python) regular expression; however, until a better solution is found, the regexp must be passed through the LIBRARY environment variable to enable that feature. Attached are patches for /usr/lib/portage/pym/portage/dbapi/vartree.py, /usr/lib/portage/pym/portage/sets/libs.py and /usr/share/portage/config/sets.conf, which can also be found in the repository.[2] After applying the three patches, one can test the set with emerge -p @missing-rebuild. If anyone is brave enough to do so, let me know how it goes! Lucian [1] http://archives.gentoo.org/gentoo-portage-dev/msg_abcbac026ed8670f6dc61bb28be6151e.xml [2] http://repo.or.cz/w/revdep-rebuild-reimplementation.git?a=tree;h=refs/heads/rc1;hb=rc1 ------=_Part_92742_7505003.1218496334459 Content-Type: text/x-patch; name=libs.py.2.2_rc6.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fjrngq6g0 Content-Disposition: attachment; filename=libs.py.2.2_rc6.patch LS0tIGxpYnMucHkuMi4yX3JjNgkyMDA4LTA4LTAxIDE1OjQxOjE0LjAwMDAwMDAwMCAtMDUwMAor KysgcHltL3BvcnRhZ2Uvc2V0cy9saWJzLnB5CTIwMDgtMDgtMTEgMTM6Mzg6MDEuMDAwMDAwMDAw IC0wNTAwCkBAIC0yLDEwICsyLDE4IEBACiAjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIKICMgJElkOiBsaWJzLnB5IDEwNzU5 IDIwMDgtMDYtMjIgMDQ6MDQ6NTBaIHptZWRpY28gJAogCitpbXBvcnQgb3MKK2ltcG9ydCByZQor aW1wb3J0IHRpbWUKK2Zyb20gcG9ydGFnZS5kYmFwaS52YXJ0cmVlIGltcG9ydCBkYmxpbmsKK2Zy b20gcG9ydGFnZS52ZXJzaW9ucyBpbXBvcnQgY2F0c3BsaXQKIGZyb20gcG9ydGFnZS5zZXRzLmJh c2UgaW1wb3J0IFBhY2thZ2VTZXQKIGZyb20gcG9ydGFnZS5zZXRzIGltcG9ydCBnZXRfYm9vbGVh bgogZnJvbSBwb3J0YWdlLnZlcnNpb25zIGltcG9ydCBjYXRwa2dzcGxpdAogCitfX2FsbF9fID0g WyJMaWJyYXJ5Q29uc3VtZXJTZXQiLCAiUHJlc2VydmVkTGlicmFyeUNvbnN1bWVyU2V0IiwKKwkJ Ik1pc3NpbmdMaWJyYXJ5Q29uc3VtZXJTZXQiXQorCiBjbGFzcyBMaWJyYXJ5Q29uc3VtZXJTZXQo UGFja2FnZVNldCk6CiAJX29wZXJhdGlvbnMgPSBbIm1lcmdlIiwgInVubWVyZ2UiXQogCkBAIC00 NSwzICs1MywzMTEgQEAKIAkJZGVidWcgPSBnZXRfYm9vbGVhbihvcHRpb25zLCAiZGVidWciLCBG YWxzZSkKIAkJcmV0dXJuIFByZXNlcnZlZExpYnJhcnlDb25zdW1lclNldCh0cmVlc1sidmFydHJl ZSJdLmRiYXBpLCBkZWJ1ZykKIAlzaW5nbGVCdWlsZGVyID0gY2xhc3NtZXRob2Qoc2luZ2xlQnVp bGRlcikKKworCitjbGFzcyBNaXNzaW5nTGlicmFyeUNvbnN1bWVyU2V0KExpYnJhcnlDb25zdW1l clNldCk6CisKKwkiIiIKKwlUaGlzIGNsYXNzIGlzIHRoZSBzZXQgb2YgcGFja2FnZXMgdG8gZW1l cmdlIGR1ZSB0byBtaXNzaW5nIGxpYnJhcmllcy4KKworCVRoaXMgY2xhc3Mgc2NhbnMgYmluYXJp ZXMgZm9yIG1pc3NpbmcgYW5kIGJyb2tlbiBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMKKwlh bmQgZml4ZXMgdGhlbSBieSBlbWVyZ2luZyB0aGUgcGFja2FnZXMgY29udGFpbmluZyB0aGUgYnJv a2VuIGJpbmFyaWVzLgorCisJVGhlIHVzZXIgbWF5IGFsc28gZW1lcmdlIHBhY2thZ2VzIGNvbnRh aW5pbmcgY29uc3VtZXJzIG9mIHNwZWNpZmllZAorCWxpYnJhcmllcyBieSBwYXNzaW5nIHRoZSBu YW1lIG9yIGEgcHl0aG9uIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aHJvdWdoIHRoZQorCWVudmlyb25t ZW50IHZhcmlhYmxlLCBMSUJSQVJZLiAgRHVlIHRvIGEgbGltaXRhdGlvbiBpbiBwYXNzaW5nIGZs YWdzIHRvCisJcGFja2FnZSBzZXRzIHRocm91Z2ggdGhlIHBvcnRhZ2UgY2xpLCB0aGUgdXNlciBt dXN0IHNldCBlbnZpcm9ubWVudAorCXZhcmlhYmxlcyB0byBtb2RpZnkgdGhlIGJlaGF2aW91ciBv ZiB0aGlzIHBhY2thZ2Ugc2V0LiAgU28gaWYgdGhlCisJZW52aXJvbm1lbnQgdmFyaWFibGUgTElC UkFSWSBpcyBzZXQsIHRoZSBiZWhhdmlvdXIgb2YgdGhpcyBzZXQgY2hhbmdlcy4KKworCSIiIgor CisJZGVzY3JpcHRpb24gPSAiVGhlIHNldCBvZiBwYWNrYWdlcyB0byBlbWVyZ2UgZHVlIHRvIG1p c3NpbmcgbGlicmFyaWVzLiIKKwlfb3BlcmF0aW9ucyA9IFsibWVyZ2UiXQorCisJZGVmIF9faW5p dF9fKHNlbGYsIHZhcmRiYXBpLCBkZWJ1Zz1GYWxzZSk6CisJCXN1cGVyKE1pc3NpbmdMaWJyYXJ5 Q29uc3VtZXJTZXQsIHNlbGYpLl9faW5pdF9fKHZhcmRiYXBpLCBkZWJ1ZykKKwkJIyBGSVhNRSBT aW5jZSB3ZSBjYW4ndCBnZXQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmcm9tIHRoZSB1c2VyLCB0 aGUKKwkJIyBzb25hbWUgY2FuIGJlIHBhc3NlZCB0aHJvdWdoIGFuIGVudmlyb25tZW50IHZhcmlh YmxlIGZvciBub3cuCisJCXNlbGYubGlicmFyeVJlZ2V4cCA9IG9zLmdldGVudigiTElCUkFSWSIp CisJCXNlbGYucm9vdCA9IHNlbGYuZGJhcGkucm9vdAorCQlzZWxmLmxpbmttYXAgPSBzZWxmLmRi YXBpLmxpbmttYXAKKworCWRlZiBsb2FkKHNlbGYpOgorCQkjIGJyb2tlbkRlcGVuZGVuY2llczog b2JqZWN0IC0+IHNldC1vZi11bnNhdGlzZmllZC1kZXBlbmRlbmNpZXMsIHdoZXJlCisJCSMgb2Jq ZWN0IGlzIGFuIGluc3RhbGxlZCBiaW5hcnkvbGlicmFyeSBhbmQKKwkJIyBzZXQtb2YtdW5zYXRp c2ZpZWQtZGVwZW5kZW5jaWVzIGFyZSBzb25hbWVzIG9yIGxpYnJhcmllcyByZXF1aXJlZCBieQor CQkjIHRoZSBvYmplY3QgYnV0IGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJpZXMgdG8gZnVs ZmlsbCB0aGUKKwkJIyBkZXBlbmRlbmN5LgorCQlicm9rZW5EZXBlbmRlbmNpZXMgPSB7fQorCQlh dG9tcyA9IHNldCgpCisKKwkJIyBJZiB0aGUgTElCUkFSWSBlbnZpcm9ubWVudCB2YXJpYWJsZSBp cyBzZXQsIHRoZSByZXN1bHRpbmcgcGFja2FnZSBzZXQKKwkJIyB3aWxsIGJlIHBhY2thZ2VzIGNv bnRhaW5pbmcgY29uc3VtZXJzIG9mIHRoZSBsaWJyYXJpZXMgbWF0Y2hlZCBieSB0aGUKKwkJIyB2 YXJpYWJsZS4KKwkJaWYgc2VsZi5saWJyYXJ5UmVnZXhwOgorCQkJYXRvbXMgPSBzZWxmLmZpbmRB dG9tc09mTGlicmFyeUNvbnN1bWVycyhzZWxmLmxpYnJhcnlSZWdleHApCisJCQlzZWxmLl9zZXRB dG9tcyhhdG9tcykKKwkJCWlmIHNlbGYuZGVidWc6CisJCQkJcHJpbnQKKwkJCQlwcmludCAiYXRv bXMgdG8gYmUgZW1lcmdlZDoiCisJCQkJZm9yIHggaW4gc29ydGVkKGF0b21zKToKKwkJCQkJcHJp bnQgeAorCQkJcmV0dXJuCisKKwkJIyBHZXQgdGhlIGxpc3Qgb2YgYnJva2VuIGRlcGVuZGVuY2ll cyBmcm9tIExpbmthZ2VNYXAuCisJCWlmIHNlbGYuZGVidWc6CisJCQl0aW1lU3RhcnQgPSB0aW1l LnRpbWUoKQorCQlicm9rZW5EZXBlbmRlbmNpZXMgPSBzZWxmLmxpbmttYXAubGlzdEJyb2tlbkJp bmFyaWVzKCkKKwkJaWYgc2VsZi5kZWJ1ZzoKKwkJCXRpbWVMaXN0QnJva2VuQmluYXJpZXMgPSB0 aW1lLnRpbWUoKSAtIHRpbWVTdGFydAorCisJCSMgQWRkIGJyb2tlbiBsaWJ0b29sIGxpYnJhcmll cyBpbnRvIHRoZSBicm9rZW5EZXBlbmRlbmNpZXMgZGljdC4KKwkJaWYgc2VsZi5kZWJ1ZzoKKwkJ CXRpbWVTdGFydCA9IHRpbWUudGltZSgpCisJCWJyb2tlbkRlcGVuZGVuY2llcy51cGRhdGUoc2Vs Zi5saXN0QnJva2VuTGlidG9vbExpYnJhcmllcygpKQorCQlpZiBzZWxmLmRlYnVnOgorCQkJdGlt ZUxpYnRvb2wgPSB0aW1lLnRpbWUoKSAtIHRpbWVTdGFydAorCisJCSMgRklYTUUgVG9vIG1hbnkg YXRvbXMgbWF5IGJlIGVtZXJnZWQgYmVjYXVzZSBsaWJyYXJpZXMgaW4gYmluYXJ5CisJCSMgcGFj a2FnZXMgYXJlIG5vdCBiZWluZyBoYW5kbGVkIHByb3Blcmx5IGVnIG9wZW5vZmZpY2UsIG52aWRp YS1kcml2ZXJzLAorCQkjIHN1bi1qZGsuICBDZXJ0YWluIGJpbmFyaWVzIGFyZSBydW4gaW4gYW4g ZW52aXJvbm1lbnQgd2hlcmUgYWRkaXRpb25hbAorCQkjIGxpYnJhcnkgcGF0aHMgYXJlIGFkZGVk IHZpYSBMRF9MSUJSQVJZX1BBVEguICBTaW5jZSB0aGVzZSBwYXRocyBhcmVuJ3QKKwkJIyByZWdp c3RlcmVkIGluIF9vYmpfcHJvcGVydGllcywgdGhleSBhcHBlYXIgYnJva2VuIChhbmQgYXJlIGlm IG5vdCBydW4KKwkJIyBpbiB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCkuICBJIGhhdmUgdG8gZGV0 ZXJtaW5lIGlmIGxpYnJhcmllcyBhbmQgbGliCisJCSMgcGF0aHMgc2hvdWxkIGJlIG1hc2tlZCB1 c2luZyAvZXRjL3JldmRlcC1yZWJ1aWxkLyogYXMgZG9uZSBpbgorCQkjIHJldmRlcC1yZWJ1aWxk IG9yIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBpZGVudGlmeSBhbmQgZGVhbCB3aXRoCisJ CSMgdGhlc2UgcHJvYmxlbWF0aWMgcGFja2FnZXMgKG9yIGlmIHNvbWV0aGluZyBlbnRpcmVseSBk aWZmZXJlbnQgc2hvdWxkCisJCSMgYmUgZG9uZSkuICBGb3Igbm93IGRpcmVjdG9yeSBhbmQgbGli cmFyeSBtYXNrcyBhcmUgdXNlZC4KKworCQkjIFJlbW92ZSBtYXNrZWQgZGlyZWN0b3JpZXMgYW5k IGxpYnJhcmllcy4KKwkJaWYgc2VsZi5kZWJ1ZzoKKwkJCXRpbWVTdGFydCA9IHRpbWUudGltZSgp CisJCWlmIGJyb2tlbkRlcGVuZGVuY2llczoKKwkJCWJyb2tlbkRlcGVuZGVuY2llcyA9IHNlbGYu cmVtb3ZlTWFza2VkRGVwZW5kZW5jaWVzKGJyb2tlbkRlcGVuZGVuY2llcykKKwkJaWYgc2VsZi5k ZWJ1ZzoKKwkJCXRpbWVNYXNrID0gdGltZS50aW1lKCkgLSB0aW1lU3RhcnQKKworCQkjIERldGVy bWluZSBhdG9tcyB0byBlbWVyZ2UgYmFzZWQgb24gYnJva2VuIG9iamVjdHMgaW4KKwkJIyBicm9r ZW5EZXBlbmRlbmNpZXMuCisJCWlmIHNlbGYuZGVidWc6CisJCQl0aW1lU3RhcnQgPSB0aW1lLnRp bWUoKQorCQlpZiBicm9rZW5EZXBlbmRlbmNpZXM6CisJCQlhdG9tcyA9IHNlbGYubWFwUGF0aHNU b0F0b21zKHNldChicm9rZW5EZXBlbmRlbmNpZXMua2V5cygpKSkKKwkJaWYgc2VsZi5kZWJ1ZzoK KwkJCXRpbWVBdG9tcyA9IHRpbWUudGltZSgpIC0gdGltZVN0YXJ0CisKKwkJIyBEZWJ1ZyBvdXRw dXQKKwkJaWYgc2VsZi5kZWJ1ZzoKKwkJCXByaW50CisJCQlwcmludCBsZW4oYnJva2VuRGVwZW5k ZW5jaWVzKSwgImJyb2tlbkRlcGVuZGVuY2llczoiCisJCQlmb3IgeCBpbiBzb3J0ZWQoYnJva2Vu RGVwZW5kZW5jaWVzLmtleXMoKSk6CisJCQkJcHJpbnQKKwkJCQlwcmludCB4LCAiLT4iCisJCQkJ cHJpbnQgJ1x0JywgYnJva2VuRGVwZW5kZW5jaWVzW3hdCisJCQlwcmludAorCQkJcHJpbnQgImF0 b21zIHRvIGJlIGVtZXJnZWQ6IgorCQkJZm9yIHggaW4gc29ydGVkKGF0b21zKToKKwkJCQlwcmlu dCB4CisJCQlwcmludAorCQkJcHJpbnQgIkJyb2tlbiBiaW5hcmllcyB0aW1lOiIsIHRpbWVMaXN0 QnJva2VuQmluYXJpZXMKKwkJCXByaW50ICJCcm9rZW4gbGlidG9vbCB0aW1lOiIsIHRpbWVMaWJ0 b29sCisJCQlwcmludCAiUmVtb3ZlIG1hc2sgdGltZToiLCB0aW1lTWFzaworCQkJcHJpbnQgIm1h cFBhdGhzVG9BdG9tcyB0aW1lOiIsIHRpbWVBdG9tcworCQkJcHJpbnQKKworCQlzZWxmLl9zZXRB dG9tcyhhdG9tcykKKworCWRlZiByZW1vdmVNYXNrZWREZXBlbmRlbmNpZXMoc2VsZiwgZGVwZW5k ZW5jaWVzKToKKwkJIiIiCisJCVJlbW92ZSBhbGwgbWFza2VkIGRlcGVuZGVuY2llcyBhbmQgcmV0 dXJuIHRoZSB1cGRhdGVkIG1hcHBpbmcuCisKKwkJQHBhcmFtIGRlcGVuZGVuY2llczogZGVwZW5k ZW5jaWVzIGZyb20gd2hpY2ggdG8gcmVtb3ZlZCBtYXNrZWQKKwkJCWRlcGVuZGVuY2llcworCQlA dHlwZSBkZXBlbmRlbmNpZXM6IGRpY3QgKGV4YW1wbGU6IHsnL3Vzci9iaW4vZm9vJzogc2V0KFsn bGliZm9vLnNvJ10pfSkKKwkJQHJ0eXBlOiBkaWN0CisJCUByZXR1cm46IHNoYWxsb3cgY29weSBv ZiBkZXBlbmRlbmNpZXMgd2l0aCBtYXNrZWQgaXRlbXMgcmVtb3ZlZAorCisJCSIiIgorCQlyVmFs dWUgPSBkZXBlbmRlbmNpZXMuY29weSgpCisJCWRpck1hc2ssIGxpYk1hc2sgPSBzZWxmLmdldERl cGVuZGVuY3lNYXNrcygpCisKKwkJIyBSZW1vdmUgZW50cmllcyB0aGF0IGFyZSBtYXNrZWQuCisJ CWlmIGRpck1hc2sgb3IgbGliTWFzazoKKwkJCWlmIHNlbGYuZGVidWc6CisJCQkJcHJpbnQgIlRo ZSBmb2xsb3dpbmcgYXJlIG1hc2tlZDoiCisJCQlmb3IgYmluYXJ5LCBsaWJTZXQgaW4gclZhbHVl Lml0ZW1zKCk6CisJCQkJZm9yIGRpciBpbiBkaXJNYXNrOgorCQkJCQkjIENoZWNrIGlmIHRoZSBi cm9rZW4gYmluYXJ5IGxpZXMgd2l0aGluIHRoZSBtYXNrZWQgZGlyZWN0b3J5IG9yCisJCQkJCSMg aXRzIHN1YmRpcmVjdG9yaWVzLgorCQkJCQkjIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBhbGxvdyBy ZWdleHBzIGFzIG1hc2tzLgorCQkJCQlpZiBiaW5hcnkuc3RhcnRzd2l0aChkaXIpOgorCQkJCQkJ ZGVsIHJWYWx1ZVtiaW5hcnldCisJCQkJCQlpZiBzZWxmLmRlYnVnOgorCQkJCQkJCXByaW50ICJk aXJNYXNrOiIsYmluYXJ5CisJCQkJCQlicmVhaworCQkJCSMgQ2hlY2sgaWYgYWxsIHRoZSByZXF1 aXJlZCBsaWJyYXJpZXMgYXJlIG1hc2tlZC4KKwkJCQlpZiBiaW5hcnkgaW4gclZhbHVlIGFuZCBs aWJTZXQuaXNzdWJzZXQobGliTWFzayk6CisJCQkJCWRlbCByVmFsdWVbYmluYXJ5XQorCQkJCQlp ZiBzZWxmLmRlYnVnOgorCQkJCQkJcHJpbnQgImxpYk1hc2s6IiwgYmluYXJ5LCBsaWJTZXQgJiBs aWJNYXNrCisKKwkJaWYgc2VsZi5kZWJ1ZzoKKwkJCXByaW50CisJCQlwcmludCAiRGlyZWN0b3J5 IG1hc2s6IiwgZGlyTWFzaworCQkJcHJpbnQKKwkJCXByaW50ICJMaWJyYXJ5IG1hc2s6IiwgbGli TWFzaworCisJCXJldHVybiByVmFsdWUKKworCWRlZiBnZXREZXBlbmRlbmN5TWFza3Moc2VsZik6 CisJCSIiIgorCQlSZXR1cm4gYWxsIGRlcGVuZGVuY3kgbWFza3MgYXMgYSB0dXBsZS4KKworCQlA cnR5cGU6IDItdHVwbGUgb2Ygc2V0cyBvZiBzdHJpbmdzCisJCUByZXR1cm46IDItdHVwbGUgaW4g d2hpY2ggdGhlIGZpcnN0IGNvbXBvbmVudCBpcyBhIHNldCBvZiBkaXJlY3RvcnkKKwkJCW1hc2tz IGFuZCB0aGUgc2Vjb25kIGNvbXBvbmVudCBpcyBhIHNldCBvZiBsaWJyYXJ5IG1hc2tzCisKKwkJ IiIiCisJCWRpck1hc2sgPSBzZXQoKQorCQlsaWJNYXNrID0gc2V0KCkKKwkJX2Rpck1hc2tfcmUg PSByZS5jb21waWxlKHInU0VBUkNIX0RJUlNfTUFTS1xzKj1ccyoiKFteIl0qKSInKQorCQlfbGli TWFza19yZSA9IHJlLmNvbXBpbGUocidMRF9MSUJSQVJZX01BU0tccyo9XHMqIihbXiJdKikiJykK KwkJbGluZXMgPSBbXQorCisJCSMgUmVhZHMgdGhlIGNvbnRlbnRzIG9mIC9ldGMvcmV2ZGVwLXJl YnVpbGQvKgorCQlsaWJNYXNrRGlyID0gb3MucGF0aC5qb2luKHNlbGYucm9vdCwgImV0YyIsICJy ZXZkZXAtcmVidWlsZCIpCisJCWlmIG9zLnBhdGguZXhpc3RzKGxpYk1hc2tEaXIpOgorCQkJZm9y IGZpbGUgaW4gb3MubGlzdGRpcihsaWJNYXNrRGlyKToKKwkJCQl0cnk6CisJCQkJCWYgPSBvcGVu KG9zLnBhdGguam9pbihsaWJNYXNrRGlyLCBmaWxlKSwgInIiKQorCQkJCQl0cnk6CisJCQkJCQls aW5lcy5leHRlbmQoZi5yZWFkbGluZXMoKSkKKwkJCQkJZmluYWxseToKKwkJCQkJCWYuY2xvc2Uo KQorCQkJCWV4Y2VwdCBJT0Vycm9yOiAjIE9TRXJyb3I/CisJCQkJCWNvbnRpbnVlCisJCQkjIFRo ZSBmb2xsb3dpbmcgcGFyc2VzIFNFQVJDSF9ESVJTX01BU0sgYW5kIExEX0xJQlJBUllfTUFTSyB2 YXJpYWJsZXMKKwkJCSMgZnJvbSAvZXRjL3JldmRlcC1yZWJ1aWxkLyoKKwkJCWZvciBsaW5lIGlu IGxpbmVzOgorCQkJCW1hdGNoRGlyID0gX2Rpck1hc2tfcmUubWF0Y2gobGluZSkKKwkJCQltYXRj aExpYiA9IF9saWJNYXNrX3JlLm1hdGNoKGxpbmUpCisJCQkJaWYgbWF0Y2hEaXI6CisJCQkJCWRp ck1hc2sudXBkYXRlKHNldChtYXRjaERpci5ncm91cCgxKS5zcGxpdCgpKSkKKwkJCQlpZiBtYXRj aExpYjoKKwkJCQkJbGliTWFzay51cGRhdGUoc2V0KG1hdGNoTGliLmdyb3VwKDEpLnNwbGl0KCkp KQorCisJCSMgVGhlc2UgZGlyZWN0b3JpZXMgY29udGFpbiBzcGVjaWFsbHkgZXZhbHVhdGVkIGxp YnJhcmllcy4KKwkJIyBhcHAtZW11bGF0aW9uL3Ztd2FyZS13b3Jrc3RhdGlvbi02LjAuMS41NTAx NworCQlkaXJNYXNrLmFkZCgnL29wdC92bXdhcmUvd29ya3N0YXRpb24vbGliJykKKwkJIyBhcHAt ZW11bGF0aW9uL3Ztd2FyZS1zZXJ2ZXItY29uc29sZS0xLjAuNi45MTg5MQorCQlkaXJNYXNrLmFk ZCgnL29wdC92bXdhcmUvc2VydmVyL2NvbnNvbGUvbGliJykKKwkJIyB3d3ctY2xpZW50L21vemls bGEtZmlyZWZveC0yLjAuMC4xNQorCQlkaXJNYXNrLmFkZCgnL3Vzci9saWIvbW96aWxsYS1maXJl Zm94L3BsdWdpbnMnKQorCQlkaXJNYXNrLmFkZCgnL3Vzci9saWI2NC9tb3ppbGxhLWZpcmVmb3gv cGx1Z2lucycpCisJCSMgYXBwLW9mZmljZS9vcGVub2ZmaWNlLTIuNC4xCisJCWRpck1hc2suYWRk KCcvb3B0L09wZW5PZmZpY2UnKQorCQlkaXJNYXNrLmFkZCgnL3Vzci9saWIvb3Blbm9mZmljZScp CisJCSMgZGV2LWxpYnMvbGlibWl4LTIuMDUgIGxpYm1peC5zbyBpcyBtaXNzaW5nIHNvbmFtZSBl bnRyeQorCQlsaWJNYXNrLmFkZCgnbGlibWl4LnNvJykKKworCQlyZXR1cm4gKGRpck1hc2ssIGxp Yk1hc2spCisKKwlkZWYgZmluZEF0b21zT2ZMaWJyYXJ5Q29uc3VtZXJzKHNlbGYsIHNlYXJjaFN0 cmluZyk6CisJCSIiIgorCQlSZXR1cm4gYXRvbXMgY29udGFpbmluZyBjb25zdW1lcnMgb2YgbGli cmFyaWVzIG1hdGNoaW5nIHRoZSBhcmd1bWVudC4KKworCQlAcGFyYW0gc2VhcmNoU3RyaW5nOiBh IHN0cmluZyB1c2VkIHRvIHNlYXJjaCBmb3IgbGlicmFyaWVzCisJCUB0eXBlIHNlYXJjaFN0cmlu Zzogc3RyaW5nIHRvIGJlIGNvbXBpbGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uCisJCQkoZXhh bXBsZTogJ2xpYmZvby4qJykKKwkJQHJ0eXBlOiBzZXQgb2Ygc3RyaW5ncworCQlAcmV0dXJuOiB0 aGUgcmV0dXJuZWQgc2V0IG9mIGF0b21zIGFyZSB2YWxpZCB0byBiZSB1c2VkIGJ5IHBhY2thZ2Ug c2V0cworCisJCSIiIgorCQlhdG9tcyA9IHNldCgpCisJCWNvbnN1bWVycyA9IHNldCgpCisJCW1h dGNoZWRMaWJyYXJpZXMgPSBzZXQoKQorCQlsaWJyYXJ5T2JqZWN0cyA9IFtdCisJCV9saWJyYXJ5 U2VhcmNoX3JlID0gcmUuY29tcGlsZShzZWFyY2hTdHJpbmcpCisKKwkJIyBGaW5kIGxpYnJhcmll cyBtYXRjaGluZyBzZWFyY2hTdHJpbmcuCisJCWxpYnJhcnlPYmplY3RzID0gc2VsZi5saW5rbWFw Lmxpc3RMaWJyYXJ5T2JqZWN0cygpCisJCWZvciBsaWJyYXJ5IGluIGxpYnJhcnlPYmplY3RzOgor CQkJbSA9IF9saWJyYXJ5U2VhcmNoX3JlLnNlYXJjaChsaWJyYXJ5KQorCQkJaWYgbToKKwkJCQlt YXRjaGVkTGlicmFyaWVzLmFkZChsaWJyYXJ5KQorCQkJCWNvbnN1bWVycy51cGRhdGUoc2VsZi5s aW5rbWFwLmZpbmRDb25zdW1lcnMobGlicmFyeSkpCisKKwkJaWYgc2VsZi5kZWJ1ZzoKKwkJCXBy aW50CisJCQlwcmludCAiQ29uc3VtZXJzIG9mIHRoZSBmb2xsb3dpbmcgbGlicmFyaWVzIHdpbGwg YmUgZW1lcmdlZDoiCisJCQlmb3IgeCBpbiBtYXRjaGVkTGlicmFyaWVzOgorCQkJCXByaW50IHgK KworCQlpZiBjb25zdW1lcnM6CisJCQkjIFRoZSBmb2xsb3dpbmcgcHJldmVudHMgZW1lcmdpbmcg dGhlIHBhY2thZ2VzIHRoYXQgb3duIHRoZSBtYXRjaGVkCisJCQkjIGxpYnJhcmllcy4gIE5vdGUg dGhhdCB0aGlzIHdpbGwgcHJldmVudCB1cGRhdGluZyB0aGUgcGFja2FnZXMgb3duaW5nCisJCQkj IHRoZSBsaWJyYXJpZXMgaWYgdGhlcmUgYXJlIG5ld2VyIHZlcnNpb25zIGF2YWlsYWJsZSBpbiB0 aGUgaW5zdGFsbGVkCisJCQkjIHNsb3QuICBTZWUgYnVnICMzMDA5NQorCQkJYXRvbXMgPSBzZWxm Lm1hcFBhdGhzVG9BdG9tcyhjb25zdW1lcnMpCisJCQlsaWJyYXJ5T3duZXJzID0gc2VsZi5tYXBQ YXRoc1RvQXRvbXMobWF0Y2hlZExpYnJhcmllcykKKwkJCWF0b21zLmRpZmZlcmVuY2VfdXBkYXRl KGxpYnJhcnlPd25lcnMpCisKKwkJcmV0dXJuIGF0b21zCisKKwlkZWYgbGlzdEJyb2tlbkxpYnRv b2xMaWJyYXJpZXMoc2VsZik6CisJCSIiIgorCQlGaW5kIGJyb2tlbiBsaWJ0b29sIGxpYnJhcmll cyBhbmQgdGhlaXIgbWlzc2luZyBkZXBlbmRlbmNpZXMuCisKKwkJQHJ0eXBlOiBkaWN0IChleGFt cGxlOiB7Jy9saWIvbGliZm9vLmxhJzogc2V0KFsnL2xpYi9saWJiYXIubGEnXSl9KQorCQlAcmV0 dXJuOiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgbGlicmFyeSAtPiBzZXQtb2YtbGlicmFyaWVzIG1h cHBpbmcsIHdoZXJlCisJCQlsaWJyYXJ5IGlzIGEgYnJva2VuIGxpYnJhcnkgYW5kIHRoZSBzZXQg Y29uc2lzdHMgb2YgZGVwZW5kZW5jaWVzCisJCQluZWVkZWQgYnkgbGlicmFyeSB0aGF0IGRvIG5v dCBleGlzdCBvbiB0aGUgZmlsZXN5c3RlbS4KKworCQkiIiIKKwkJclZhbHVlID0ge30KKwkJbGlu ZXMgPSBbXQorCQlkZXBlbmRlbmNpZXMgPSBbXQorCQlfbGFfcmUgPSByZS5jb21waWxlKHIiLipc LmxhJCIpCisJCV9kZXBlbmRlbmN5X2xpYnNfcmUgPSByZS5jb21waWxlKHIiXmRlcGVuZGVuY3lf bGlic1xzKj1ccyonKC4qKSciKQorCisJCSMgTG9vcCBvdmVyIHRoZSBjb250ZW50cyBvZiBhbGwg cGFja2FnZXMuCisJCWZvciBjcHYgaW4gc2VsZi5kYmFwaS5jcHZfYWxsKCk6CisJCQlteXNwbGl0 ID0gY2F0c3BsaXQoY3B2KQorCQkJbGluayA9IGRibGluayhteXNwbGl0WzBdLCBteXNwbGl0WzFd LCBteXJvb3Q9c2VsZi5kYmFwaS5yb290LCBcCisJCQkJCW15c2V0dGluZ3M9c2VsZi5kYmFwaS5z ZXR0aW5ncywgdHJlZXR5cGU9J3ZhcnRyZWUnLCBcCisJCQkJCXZhcnRyZWU9c2VsZi5kYmFwaS52 YXJ0cmVlKQorCQkJZm9yIGZpbGUgaW4gbGluay5nZXRjb250ZW50cygpOgorCQkJCSMgQ2hlY2sg aWYgdGhlIGZpbGUgZW5kcyB3aXRoICcubGEnLgorCQkJCW1hdGNoTGliID0gX2xhX3JlLm1hdGNo KGZpbGUpCisJCQkJaWYgbWF0Y2hMaWI6CisJCQkJCSMgUmVhZCB0aGUgbGluZXMgZnJvbSB0aGUg bGlicmFyeS4KKwkJCQkJbGluZXMgPSBbXQorCQkJCQl0cnk6CisJCQkJCQlmID0gb3BlbihmaWxl LCAiciIpCisJCQkJCQl0cnk6CisJCQkJCQkJbGluZXMuZXh0ZW5kKGYucmVhZGxpbmVzKCkpCisJ CQkJCQlmaW5hbGx5OgorCQkJCQkJCWYuY2xvc2UoKQorCQkJCQlleGNlcHQgSU9FcnJvcjoKKwkJ CQkJCWNvbnRpbnVlCisJCQkJCSMgRmluZCB0aGUgbGluZSBsaXN0aW5nIHRoZSBkZXBlbmRlbmNp ZXMuCisJCQkJCWZvciBsaW5lIGluIGxpbmVzOgorCQkJCQkJbWF0Y2hMaW5lID0gX2RlcGVuZGVu Y3lfbGlic19yZS5tYXRjaChsaW5lKQorCQkJCQkJaWYgbWF0Y2hMaW5lOgorCQkJCQkJCWRlcGVu ZGVuY2llcyA9IG1hdGNoTGluZS5ncm91cCgxKS5zcGxpdCgpCisJCQkJCQkJIyBGb3IgZWFjaCBk ZXBlbmRlbmN5IHRoYXQgaXMgYSBwYXRobmFtZSAoYmVnaW5zIHdpdGgKKwkJCQkJCQkjIG9zLnNl cCksIGNoZWNrIHRoYXQgaXQgZXhpc3RzIG9uIHRoZSBmaWxlc3lzdGVtLiAgSWYgaXQKKwkJCQkJ CQkjIGRvZXMgbm90IGV4aXN0LCB0aGVuIGFkZCB0aGUgbGlicmFyeSBhbmQgdGhlIG1pc3NpbmcK KwkJCQkJCQkjIGRlcGVuZGVuY3kgdG8gclZhbHVlLgorCQkJCQkJCWZvciBkZXBlbmRlbmN5IGlu IGRlcGVuZGVuY2llczoKKwkJCQkJCQkJaWYgZGVwZW5kZW5jeVswXSA9PSBvcy5zZXAgYW5kIFwK KwkJCQkJCQkJCQlub3Qgb3MucGF0aC5pc2ZpbGUoZGVwZW5kZW5jeSk6CisJCQkJCQkJCQlyVmFs dWUuc2V0ZGVmYXVsdChmaWxlLCBzZXQoKSkuYWRkKGRlcGVuZGVuY3kpCisKKwkJcmV0dXJuIHJW YWx1ZQorCisJZGVmIHNpbmdsZUJ1aWxkZXIoc2VsZiwgb3B0aW9ucywgc2V0dGluZ3MsIHRyZWVz KToKKwkJZGVidWcgPSBnZXRfYm9vbGVhbihvcHRpb25zLCAiZGVidWciLCBGYWxzZSkKKwkJcmV0 dXJuIE1pc3NpbmdMaWJyYXJ5Q29uc3VtZXJTZXQodHJlZXNbInZhcnRyZWUiXS5kYmFwaSwgZGVi dWcpCisJc2luZ2xlQnVpbGRlciA9IGNsYXNzbWV0aG9kKHNpbmdsZUJ1aWxkZXIpCg== ------=_Part_92742_7505003.1218496334459 Content-Type: text/x-patch; name=vartree.py.2.2_rc6.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fjrngsfp1 Content-Disposition: attachment; filename=vartree.py.2.2_rc6.patch LS0tIHZhcnRyZWUucHkuMi4yX3JjNgkyMDA4LTA4LTAxIDE1OjQxOjAzLjAwMDAwMDAwMCAtMDUw MAorKysgcHltL3BvcnRhZ2UvZGJhcGkvdmFydHJlZS5weQkyMDA4LTA4LTExIDE1OjQ1OjU1LjAw MDAwMDAwMCAtMDUwMApAQCAtMTczLDggKzE3MywxMCBAQAogCQkJYXJjaCA9IGZpZWxkc1swXQog CQkJb2JqID0gb3MucGF0aC5yZWFscGF0aChmaWVsZHNbMV0pCiAJCQlzb25hbWUgPSBmaWVsZHNb Ml0KLQkJCXBhdGggPSBmaWVsZHNbM10ucmVwbGFjZSgiJHtPUklHSU59Iiwgb3MucGF0aC5kaXJu YW1lKG9iaikpLnJlcGxhY2UoIiRPUklHSU4iLCBvcy5wYXRoLmRpcm5hbWUob2JqKSkuc3BsaXQo IjoiKQotCQkJbmVlZGVkID0gZmllbGRzWzRdLnNwbGl0KCIsIikKKwkJCXBhdGggPSBmaWx0ZXIo Tm9uZSwgZmllbGRzWzNdLnJlcGxhY2UoCisJCQkJIiR7T1JJR0lOfSIsIG9zLnBhdGguZGlybmFt ZShvYmopKS5yZXBsYWNlKAorCQkJCSIkT1JJR0lOIiwgb3MucGF0aC5kaXJuYW1lKG9iaikpLnNw bGl0KCI6IikpCisJCQluZWVkZWQgPSBmaWx0ZXIoTm9uZSwgZmllbGRzWzRdLnNwbGl0KCIsIikp CiAJCQlpZiBzb25hbWU6CiAJCQkJbGlicy5zZXRkZWZhdWx0KHNvbmFtZSwge2FyY2g6IHsicHJv dmlkZXJzIjogW10sICJjb25zdW1lcnMiOiBbXX19KQogCQkJCWxpYnNbc29uYW1lXS5zZXRkZWZh dWx0KGFyY2gsIHsicHJvdmlkZXJzIjogW10sICJjb25zdW1lcnMiOiBbXX0pCkBAIC0xODgsNiAr MTkwLDE1OSBAQAogCQlzZWxmLl9saWJzID0gbGlicwogCQlzZWxmLl9vYmpfcHJvcGVydGllcyA9 IG9ial9wcm9wZXJ0aWVzCiAKKwlkZWYgbGlzdEJyb2tlbkJpbmFyaWVzKHNlbGYpOgorCQkiIiIK KwkJRmluZCBiaW5hcmllcyBhbmQgdGhlaXIgbmVlZGVkIHNvbmFtZXMsIHdoaWNoIGhhdmUgbm8g cHJvdmlkZXJzLgorCisJCUBydHlwZTogZGljdCAoZXhhbXBsZTogeycvdXNyL2Jpbi9mb28nOiBz ZXQoWydsaWJiYXIuc28nXSl9KQorCQlAcmV0dXJuOiBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9i amVjdCAtPiBzZXQtb2Ytc29uYW1lcyBtYXBwaW5nLCB3aGVyZQorCQkJb2JqZWN0IGlzIGEgYnJv a2VuIGJpbmFyeSBhbmQgdGhlIHNldCBjb25zaXN0cyBvZiBzb25hbWVzIG5lZWRlZCBieQorCQkJ b2JqZWN0IHRoYXQgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGxpYnJhcmllcyB0byBmdWxmaWxsIHRo ZSBkZXBlbmRlbmN5LgorCisJCSIiIgorCQljbGFzcyBMaWJyYXJ5Q2FjaGUob2JqZWN0KToKKwor CQkJIiIiCisJCQlDYWNoZXMgc29uYW1lcyBhbmQgcmVhbHBhdGhzIGFzc29jaWF0ZWQgd2l0aCBw YXRocy4KKworCQkJVGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byBwcmV2ZW50IG11bHRp cGxlIGNhbGxzIG9mCisJCQlvcy5wYXRoLnJlYWxwYXRoIGFuZCBvcy5wYXRoLmlzZmlsZSBvbiB0 aGUgc2FtZSBwYXRocy4KKworCQkJIiIiCisKKwkJCWRlZiBfX2luaXRfXyhjYWNoZV9zZWxmKToK KwkJCQljYWNoZV9zZWxmLmNhY2hlID0ge30KKworCQkJZGVmIGdldChjYWNoZV9zZWxmLCBwYXRo KToKKwkJCQkiIiIKKwkJCQlDYWNoZXMgYW5kIHJldHVybnMgdGhlIHNvbmFtZSBhbmQgcmVhbHBh dGggZm9yIGEgcGF0aC4KKworCQkJCUBwYXJhbSBwYXRoOiBhYnNvbHV0ZSBwYXRoIChjYW4gYmUg c3ltbGluaykKKwkJCQlAdHlwZSBwYXRoOiBzdHJpbmcgKGV4YW1wbGU6ICcvdXNyL2xpYi9saWJm b28uc28nKQorCQkJCUBydHlwZTogMy10dXBsZSB3aXRoIHR5cGVzIChzdHJpbmcgb3IgTm9uZSwg c3RyaW5nLCBib29sZWFuKQorCQkJCUByZXR1cm46IDMtdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5n IGNvbXBvbmVudHM6CisJCQkJCTEuIHNvbmFtZSBhcyBhIHN0cmluZyBvciBOb25lIGlmIGl0IGRv ZXMgbm90IGV4aXN0LAorCQkJCQkyLiByZWFscGF0aCBhcyBhIHN0cmluZywKKwkJCQkJMy4gdGhl IHJlc3VsdCBvZiBvcy5wYXRoLmlzZmlsZShyZWFscGF0aCkKKwkJCQkJKGV4YW1wbGU6ICgnbGli Zm9vLnNvLjEnLCAnL3Vzci9saWIvbGliZm9vLnNvLjEuNS4xJywgVHJ1ZSkpCisKKwkJCQkiIiIK KwkJCQlpZiBwYXRoIGluIGNhY2hlX3NlbGYuY2FjaGU6CisJCQkJCXJldHVybiBjYWNoZV9zZWxm LmNhY2hlW3BhdGhdCisJCQkJZWxzZToKKwkJCQkJcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRo KHBhdGgpCisJCQkJCSMgQ2hlY2sgdGhhdCB0aGUgbGlicmFyeSBleGlzdHMgb24gdGhlIGZpbGVz eXN0ZW0uCisJCQkJCWlmIG9zLnBhdGguaXNmaWxlKHJlYWxwYXRoKToKKwkJCQkJCSMgR2V0IHRo ZSBzb25hbWUgZnJvbSBMaW5rYWdlTWFwLl9vYmpfcHJvcGVydGllcyBpZiBpdAorCQkJCQkJIyBl eGlzdHMuIE90aGVyd2lzZSwgTm9uZS4KKwkJCQkJCXNvbmFtZSA9IHNlbGYuX29ial9wcm9wZXJ0 aWVzLmdldChyZWFscGF0aCwgKE5vbmUsKSozKVszXQorCQkJCQkJIyBCb3RoIHBhdGggYW5kIHJl YWxwYXRoIGFyZSBjYWNoZWQgYW5kIHRoZSByZXN1bHQgaXMKKwkJCQkJCSMgcmV0dXJuZWQuCisJ CQkJCQljYWNoZV9zZWxmLmNhY2hlLnNldGRlZmF1bHQocmVhbHBhdGgsIFwKKwkJCQkJCQkJKHNv bmFtZSwgcmVhbHBhdGgsIFRydWUpKQorCQkJCQkJcmV0dXJuIGNhY2hlX3NlbGYuY2FjaGUuc2V0 ZGVmYXVsdChwYXRoLCBcCisJCQkJCQkJCShzb25hbWUsIHJlYWxwYXRoLCBUcnVlKSkKKwkJCQkJ ZWxzZToKKwkJCQkJCSMgcmVhbHBhdGggaXMgbm90IGNhY2hlZCBoZXJlLCBiZWNhdXNlIHRoZSBt YWpvcml0eSBvZiBjYXNlcworCQkJCQkJIyB3aGVyZSByZWFscGF0aCBpcyBub3QgYSBmaWxlLCBw YXRoIGlzIHRoZSBzYW1lIGFzIHJlYWxwYXRoLgorCQkJCQkJIyBUaHVzIHN0b3JpbmcgdHdpY2Ug c2xvd3MgZG93biB0aGUgY2FjaGUgcGVyZm9ybWFuY2UuCisJCQkJCQlyZXR1cm4gY2FjaGVfc2Vs Zi5jYWNoZS5zZXRkZWZhdWx0KHBhdGgsIFwKKwkJCQkJCQkJKE5vbmUsIHJlYWxwYXRoLCBGYWxz ZSkpCisKKwkJZGVidWcgPSBGYWxzZQorCQlyVmFsdWUgPSB7fQorCQljYWNoZSA9IExpYnJhcnlD YWNoZSgpCisJCXByb3ZpZGVycyA9IHNlbGYubGlzdFByb3ZpZGVycygpCisjCQlwcm92aWRlcnMg PSBzZWxmLmxpc3RQcm92aWRlcnNGb3JSZWFjaGFibGVCaW5hcmllcyhzZWxmLmdldEJpbmFyaWVz KCkpCisKKwkJIyBJdGVyYXRlIG92ZXIgYWxsIGJpbmFyaWVzIGFuZCB0aGVpciBwcm92aWRlcnMu CisJCWZvciBvYmosIHNvbmFtZXMgaW4gcHJvdmlkZXJzLml0ZW1zKCk6CisJCQkjIEl0ZXJhdGUg b3ZlciBlYWNoIG5lZWRlZCBzb25hbWUgYW5kIHRoZSBzZXQgb2YgbGlicmFyeSBwYXRocyB0aGF0 CisJCQkjIGZ1bGZpbGwgdGhlIHNvbmFtZSB0byBkZXRlcm1pbmUgaWYgdGhlIGRlcGVuZGVuY3kg aXMgYnJva2VuLgorCQkJZm9yIHNvbmFtZSwgbGlicmFyaWVzIGluIHNvbmFtZXMuaXRlbXMoKToK KwkJCQkjIHZhbGlkTGlicmFyaWVzIGlzIHVzZWQgdG8gc3RvcmUgbGlicmFyaWVzLCB3aGljaCBz YXRpc2Z5IHNvbmFtZSwKKwkJCQkjIHNvIGlmIG5vIHZhbGlkIGxpYnJhcmllcyBhcmUgZm91bmQs IHRoZSBzb25hbWUgaXMgbm90IHNhdGlzZmllZAorCQkJCSMgZm9yIG9iai4gIFRodXMgb2JqIG11 c3QgYmUgZW1lcmdlZC4KKwkJCQl2YWxpZExpYnJhcmllcyA9IHNldCgpCisJCQkJIyBJdCBjb3Vs ZCBiZSB0aGUgY2FzZSB0aGF0IHRoZSBsaWJyYXJ5IHRvIHNhdGlzZnkgdGhlIHNvbmFtZSBpcwor CQkJCSMgbm90IGluIHRoZSBvYmoncyBydW5wYXRoLCBidXQgYSBzeW1saW5rIHRvIHRoZSBsaWJy YXJ5IGlzIChlZworCQkJCSMgbGlibnZpZGlhLXRscy5zby4xIGluIG52aWRpYS1kcml2ZXJzKS4g IEFsc28sIHNpbmNlIExpbmthZ2VNYXAKKwkJCQkjIGRvZXMgbm90IGNhdGFsb2cgc3ltbGlua3Ms IGJyb2tlbiBvciBtaXNzaW5nIHN5bWxpbmtzIG1heSBnbworCQkJCSMgdW5ub3RpY2VkLiAgQXMg YSByZXN1bHQgb2YgdGhlc2UgY2FzZXMsIGNoZWNrIHRoYXQgYSBmaWxlIHdpdGgKKwkJCQkjIHRo ZSBzYW1lIG5hbWUgYXMgdGhlIHNvbmFtZSBleGlzdHMgaW4gb2JqJ3MgcnVucGF0aC4KKwkJCQlw YXRoID0gc2VsZi5fb2JqX3Byb3BlcnRpZXNbb2JqXVsyXSArIHNlbGYuX2RlZnBhdGgKKwkJCQlm b3IgZGlyIGluIHBhdGg6CisJCQkJCWNhY2hlZFNvbmFtZSwgY2FjaGVkUmVhbHBhdGgsIGNhY2hl ZEV4aXN0cyA9IFwKKwkJCQkJCQljYWNoZS5nZXQob3MucGF0aC5qb2luKGRpciwgc29uYW1lKSkK KwkJCQkJIyBDaGVjayB0aGF0IHRoZSB0aGlzIGxpYnJhcnkgcHJvdmlkZXMgdGhlIG5lZWRlZCBz b25hbWUuICBEb2luZworCQkJCQkjIHRoaXMsIGhvd2V2ZXIsIHdpbGwgY2F1c2UgY29uc3VtZXJz IG9mIGxpYnJhcmllcyBtaXNzaW5nCisJCQkJCSMgc29uYW1lcyB0byBiZSB1bm5lY2Vzc2FyaWx5 IGVtZXJnZWQuIChlZyBsaWJtaXguc28pCisJCQkJCWlmIGNhY2hlZFNvbmFtZSA9PSBzb25hbWU6 CisJCQkJCQl2YWxpZExpYnJhcmllcy5hZGQoY2FjaGVkUmVhbHBhdGgpCisJCQkJCQlpZiBkZWJ1 ZyBhbmQgY2FjaGVkUmVhbHBhdGggbm90IGluIGxpYnJhcmllczoKKwkJCQkJCQlwcmludCAiRm91 bmQgcHJvdmlkZXIgb3V0c2lkZSBvZiBmaW5kUHJvdmlkZXJzOiIsIFwKKwkJCQkJCQkJCW9zLnBh dGguam9pbihkaXIsIHNvbmFtZSksICItPiIsIGNhY2hlZFJlYWxwYXRoCisJCQkJCQkjIEEgdmFs aWQgbGlicmFyeSBoYXMgYmVlbiBmb3VuZCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0bworCQkJCQkJ IyBjb250aW51ZS4KKwkJCQkJCWJyZWFrCisJCQkJCWlmIGRlYnVnIGFuZCBjYWNoZWRSZWFscGF0 aCBpbiBzZWxmLl9vYmpfcHJvcGVydGllczoKKwkJCQkJCXByaW50ICJCcm9rZW4gc3ltbGluayBv ciBtaXNzaW5nL2JhZCBzb25hbWU6IiwgXAorCQkJCQkJCQlvcy5wYXRoLmpvaW4oZGlyLCBzb25h bWUpLCAnLT4nLCBjYWNoZWRSZWFscGF0aCwgXAorCQkJCQkJCQkid2l0aCBzb25hbWUiLCBjYWNo ZWRTb25hbWUsICJidXQgZXhwZWN0aW5nIiwgc29uYW1lCisJCQkJIyBUaGlzIGNvbmRpdGlvbmFs IGNoZWNrcyBpZiB0aGVyZSBhcmUgbm8gbGlicmFyaWVzIHRvIHNhdGlzZnkgdGhlCisJCQkJIyBz b25hbWUgKGVtcHR5IHNldCkuCisJCQkJaWYgbm90IHZhbGlkTGlicmFyaWVzOgorCQkJCQlyVmFs dWUuc2V0ZGVmYXVsdChvYmosIHNldCgpKS5hZGQoc29uYW1lKQorCQkJCQkjIElmIG5vIHZhbGlk IGxpYnJhcmllcyBoYXZlIGJlZW4gZm91bmQgYnkgdGhpcyBwb2ludCwgdGhlbgorCQkJCQkjIHRo ZXJlIGFyZSBubyBmaWxlcyBuYW1lZCB3aXRoIHRoZSBzb25hbWUgd2l0aGluIG9iaidzIHJ1bnBh dGgsCisJCQkJCSMgYnV0IGlmIHRoZXJlIGFyZSBsaWJyYXJpZXMgKGZyb20gdGhlIHByb3ZpZGVy cyBtYXBwaW5nKSwgaXQgaXMKKwkJCQkJIyBsaWtlbHkgdGhhdCBzeW1saW5rcyBvciB0aGUgYWN0 dWFsIGxpYnJhcmllcyBhcmUgbWlzc2luZy4KKwkJCQkJIyBUaHVzIHBvc3NpYmxlIHN5bWxpbmtz IGFuZCBtaXNzaW5nIGxpYnJhcmllcyBhcmUgYWRkZWQgdG8KKwkJCQkJIyByVmFsdWUgaW4gb3Jk ZXIgdG8gZW1lcmdlIGNvcnJ1cHQgbGlicmFyeSBwYWNrYWdlcy4KKwkJCQkJZm9yIGxpYiBpbiBs aWJyYXJpZXM6CisJCQkJCQljYWNoZWRTb25hbWUsIGNhY2hlZFJlYWxwYXRoLCBjYWNoZWRFeGlz dHMgPSBjYWNoZS5nZXQobGliKQorCQkJCQkJaWYgbm90IGNhY2hlZEV4aXN0czoKKwkJCQkJCQkj IFRoZSBsaWJyYXJ5J3MgcGFja2FnZSBuZWVkcyB0byBiZSBlbWVyZ2VkIHRvIHJlcGFpciB0aGUK KwkJCQkJCQkjIG1pc3NpbmcgbGlicmFyeS4KKwkJCQkJCQlyVmFsdWUuc2V0ZGVmYXVsdChsaWIs IHNldCgpKS5hZGQoc29uYW1lKQorCQkJCQkJZWxzZToKKwkJCQkJCQkjIEEgbGlicmFyeSBwcm92 aWRpbmcgdGhlIHNvbmFtZSBleGlzdHMgaW4gdGhlIG9iaidzCisJCQkJCQkJIyBydW5wYXRoLCBi dXQgbm8gZmlsZSBuYW1lZCBhcyB0aGUgc29uYW1lIGV4aXN0cywgc28gYWRkCisJCQkJCQkJIyB0 aGUgcGF0aCBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBsaWIncyBkaXJlY3RvcnkgYW5kIHRoZQorCQkJ CQkJCSMgc29uYW1lIHRvIHJWYWx1ZSB0byBmaXggY2FzZXMgb2YgdmFuaXNoaW5nIChvciBtb2Rp ZmllZCkKKwkJCQkJCQkjIHN5bWxpbmtzLiAgVGhpcyBwYXRoIGlzIG5vdCBndWFyYW50ZWVkIHRv IGV4aXN0LCBidXQgaXQKKwkJCQkJCQkjIGZvbGxvd3MgdGhlIHN5bWxpbmsgY29udmVudGlvbiBm b3VuZCBpbiB0aGUgbWFqb3JpdHkgb2YKKwkJCQkJCQkjIHBhY2thZ2VzLgorCQkJCQkJCXJWYWx1 ZS5zZXRkZWZhdWx0KG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGliKSwgXAorCQkJCQkJ CQkJc29uYW1lKSwgc2V0KCkpLmFkZChzb25hbWUpCisJCQkJCQlpZiBkZWJ1ZzoKKwkJCQkJCQlp ZiBub3QgY2FjaGVkRXhpc3RzOgorCQkJCQkJCQlwcmludCAiTWlzc2luZyBsaWJyYXJ5OiIsIGxp YgorCQkJCQkJCWVsc2U6CisJCQkJCQkJCXByaW50ICJQb3NzaWJseSBtaXNzaW5nIHN5bWxpbms6 IiwgXAorCQkJCQkJCQkJCW9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGliKSwgc29uYW1l KQorCisJCXJldHVybiByVmFsdWUKKworCWRlZiBsaXN0UHJvdmlkZXJzKHNlbGYpOgorCQkiIiIK KwkJRmluZCB0aGUgcHJvdmlkZXJzIGZvciBhbGwgYmluYXJpZXMuCisKKwkJQHJ0eXBlOiBkaWN0 IChleGFtcGxlOgorCQkJeycvdXNyL2Jpbi9mb28nOiB7J2xpYmJhci5zbyc6IHNldChbJy9saWIv bGliYmFyLnNvLjEuNSddKX19KQorCQlAcmV0dXJuOiBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9i amVjdCAtPiBwcm92aWRlcnMgbWFwcGluZywgd2hlcmUKKwkJCXByb3ZpZGVycyBpcyBhIG1hcHBp bmcgb2Ygc29uYW1lIC0+IHNldC1vZi1saWJyYXJ5LXBhdGhzIHJldHVybmVkCisJCQlmcm9tIHRo ZSBmaW5kUHJvdmlkZXJzIG1ldGhvZC4KKworCQkiIiIKKwkJclZhbHVlID0ge30KKwkJaWYgbm90 IHNlbGYuX2xpYnM6CisJCQlzZWxmLnJlYnVpbGQoKQorCQkjIEl0ZXJhdGUgb3ZlciBhbGwgYmlu YXJpZXMgd2l0aGluIExpbmthZ2VNYXAuCisJCWZvciBvYmogaW4gc2VsZi5fb2JqX3Byb3BlcnRp ZXMua2V5cygpOgorCQkJclZhbHVlLnNldGRlZmF1bHQob2JqLCBzZWxmLmZpbmRQcm92aWRlcnMo b2JqKSkKKwkJcmV0dXJuIHJWYWx1ZQorCiAJZGVmIGlzTWFzdGVyTGluayhzZWxmLCBvYmopOgog CQliYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob2JqKQogCQlpZiBvYmogbm90IGluIHNlbGYu X29ial9wcm9wZXJ0aWVzOgo= ------=_Part_92742_7505003.1218496334459 Content-Type: text/x-patch; name=sets.conf.2.2_rc6.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fjrngtft2 Content-Disposition: attachment; filename=sets.conf.2.2_rc6.patch LS0tIHNldHMuY29uZi4yLjJfcmM2CTIwMDgtMDgtMDggMTM6NTA6MDQuMDAwMDAwMDAwIC0wNTAw CisrKyAvdXNyL3NoYXJlL3BvcnRhZ2UvY29uZmlnL3NldHMuY29uZgkyMDA4LTA4LTA4IDEzOjQx OjAxLjAwMDAwMDAwMCAtMDUwMApAQCAtNTksMyArNTksOSBAQAogW2Rvd25ncmFkZV0KIGNsYXNz ID0gcG9ydGFnZS5zZXRzLmRiYXBpLkRvd25ncmFkZVNldAogd29ybGQtY2FuZGlkYXRlID0gRmFs c2UKKworIyBQYWNrYWdlcyB0byByZWJ1aWxkIGJyb2tlbiBsaWJyYXJ5IGRlcGVuZGVuY2llcy4K K1ttaXNzaW5nLXJlYnVpbGRdCitjbGFzcyA9IHBvcnRhZ2Uuc2V0cy5saWJzLk1pc3NpbmdMaWJy YXJ5Q29uc3VtZXJTZXQKK3dvcmxkLWNhbmRpZGF0ZSA9IEZhbHNlCitkZWJ1ZyA9IEZhbHNlCg== ------=_Part_92742_7505003.1218496334459--