From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8302 invoked by alias); 9 Jan 2018 13:25:13 -0000 Mailing-List: contact cygwin-apps-help@cygwin.com; run by ezmlm Precedence: bulk Sender: cygwin-apps-owner@cygwin.com List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps@cygwin.com Received: (qmail 8279 invoked by uid 89); 9 Jan 2018 13:25:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=massage, reinstall, to_string, sk:solutio X-HELO: out3-smtp.messagingengine.com Received: from out3-smtp.messagingengine.com (HELO out3-smtp.messagingengine.com) (66.111.4.27) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 09 Jan 2018 13:25:10 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 7261C20BBE for ; Tue, 9 Jan 2018 08:25:08 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute6.internal (MEProxy); Tue, 09 Jan 2018 08:25:08 -0500 X-ME-Sender: Received: from [192.168.1.102] (host86-179-112-242.range86-179.btcentralplus.com [86.179.112.242]) by mail.messagingengine.com (Postfix) with ESMTPA id E638C7E322 for ; Tue, 9 Jan 2018 08:25:07 -0500 (EST) Subject: Re: [PATCH setup 00/14] Use libsolv, solve all our problems... (WIP) To: cygwin-apps@cygwin.com References: <20170531105015.162228-1-jon.turney@dronecode.org.uk> <488ba627-de58-ddc7-7f69-696adae76b8a@cornell.edu> <7a173f99-a2e1-a07c-a9df-5bebcf377957@cornell.edu> <87poau9znx.fsf@Rainer.invalid> <050204e5-0ed3-8e47-3825-58ec6a10f44f@cornell.edu> <87ingltcn0.fsf@Rainer.invalid> <4ed6c549-dddd-fc45-3ed8-f7339548d7cd@cornell.edu> <1ec0f4de-380f-c6d1-59e7-03570f36b80b@cornell.edu> <87609alczj.fsf@Rainer.invalid> <31df6cf0-1abd-9cb0-a5c3-3c2b0a7d069c@cornell.edu> From: Jon Turney Message-ID: <87e4ba12-ed92-1959-d8ae-ab51986f7036@dronecode.org.uk> Date: Tue, 09 Jan 2018 13:25:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------6B93A5C74D2AEE7EBD9E0DC2" X-SW-Source: 2018-01/txt/msg00013.txt.bz2 This is a multi-part message in MIME format. --------------6B93A5C74D2AEE7EBD9E0DC2 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-length: 1899 On 24/12/2017 15:00, Ken Brown wrote: > On 12/13/2017 5:31 PM, Ken Brown wrote: >> On 12/13/2017 1:05 PM, Achim Gratz wrote: >>> Ken Brown writes: >>>> 1. Uninstall A. >>>> 2. Don't uninstall B. >>>> >>>> On the surface, it would seem that libsolv chose 2 by default, because >>>> it returned an empty transaction list.  This was reflected in the log >>>> and was also clear when I selected 'Back'. Yeah, I think what is actually happening here is that the solver returns a partial solution, without the problematic transaction. But yeah, there's no real concept of a default solution, so (lacking a UI to choose, which I think is a bit out of scope for the moment), it's up to us to define one. >>> I don't think there is a default in this case.  I also see in zypper >>> that the order of the proposed solutions (there can be way more than two >>> if the dependencies are more complicated) is not always the same, so >>> there is no preference implied by the order as well. >>> >>>> Maybe we have to deal with this situation ourselves.  Whenever a >>>> problem involves a missing dependency, we could choose as default >>>> solution the one that installs/keeps the dependent package, as is >>>> currently done. >>> >>> That solution unfortunately isn't always the one that causes the least >>> amount of transactions or even the least amount of breakage. >> >> That may be true, but I still think it's a reasonable default.  The >> user doesn't have to accept it.  Also, it's consistent with what setup >> currently does, so it won't surprise anyone. >> >> The attached patch attempts to implement my suggestion. I came up with a slightly different solution of just picking the first solution as a default. After solving problems we also need to consider the 'install source for everything I install' flag, which unfortunately requires quite a bit of refactoring. See attached. --------------6B93A5C74D2AEE7EBD9E0DC2 Content-Type: text/plain; charset=UTF-8; name="0001-Apply-default-solution-s.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Apply-default-solution-s.patch" Content-length: 15226 RnJvbSBhNjBiYmQxOWFhNTUwNGUwZTdkYTY3MjJkYzdmM2I4MWFjM2FmZDZi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gVHVybmV5IDxq b24udHVybmV5QGRyb25lY29kZS5vcmcudWs+CkRhdGU6IFdlZCwgNiBEZWMg MjAxNyAxNzo1Mjo0NSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggc2V0dXBdIEFw cGx5IGRlZmF1bHQgc29sdXRpb24ocykKClJlZmFjdG9yaW5nIG9mIFNvbHZl clNvbHV0aW9uOjp1cGRhdGUoKSBzbyB3ZSBjYW4gYXBwbHkgdGhlIGRlZmF1 bHQKc29sdXRpb24uCgpBbHNvOgoKQnJlYWsgb3V0IGxvZ2dpbmcgb2YgdGhl IHRhc2sgbGlzdCwgc28gd2UgY2FuIHNob3cgaXQgaW4gdGhlICJkZXBlbmRl bmN5CnByb2JsZW1zIGV4aXN0cywgYnV0IGRvbid0IHVzZSB0aGUgZGVmYXVs dCBzb2x1dGlvbiwganVzdCBkbyB3aGF0IEkgYXNrIgpjYXNlLgoKQnJlYWsg b3V0ICdpbmNsdWRlLXNvdXJjZScgcHJvY2Vzcywgc28gaXQgY2FuIGhhdmUg ZWZmZWN0IGluIHRoZSBjYXNlIHdoZXJlCmRlcGVuZGVuY3kgcHJvYmxlbXMg ZXhpc3QuCi0tLQogbGlic29sdi5jYyAgICB8IDgzICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiBsaWJzb2x2LmggICAgIHwgMTEgKysrKysrLS0KIHBhY2thZ2VfZGIuY2Mg fCAgMiArLQogcHJlcmVxLmNjICAgICB8IDI4ICsrKysrKysrKysrKysrKyst LS0tCiBwcmVyZXEuaCAgICAgIHwgIDQgKysrCiA1IGZpbGVzIGNoYW5nZWQs IDk5IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2xpYnNvbHYuY2MgYi9saWJzb2x2LmNjCmluZGV4IDBmYjM5YzcuLjM0 YWY1MGIgMTAwNjQ0Ci0tLSBhL2xpYnNvbHYuY2MKKysrIGIvbGlic29sdi5j YwpAQCAtNTQ0LDYgKzU0NCw3IEBAIFNvbHZlclRhc2tzOjpzZXRUYXNrcygp CiB7CiAgIC8vIGdvIHRocm91Z2ggYWxsIHBhY2thZ2VzLCBhZGRpbmcgY2hh bmdlZCBvbmVzIHRvIHRoZSBzb2x2ZXIgdGFzayBsaXN0CiAgIHBhY2thZ2Vk YiBkYjsKKyAgdGFza3MuY2xlYXIoKTsKIAogICBmb3IgKHBhY2thZ2VkYjo6 cGFja2FnZWNvbGxlY3Rpb246Oml0ZXJhdG9yIHAgPSBkYi5wYWNrYWdlcy5i ZWdpbiAoKTsKICAgICAgICBwICE9IGRiLnBhY2thZ2VzLmVuZCAoKTsgKytw KQpAQCAtNjAyLDYgKzYwMywxMSBAQCBTb2x2ZXJQb29sOjp1c2VfdGVzdF9w YWNrYWdlcyhib29sIHVzZV90ZXN0X3BhY2thZ2VzKQogLy8gQSB3cmFwcGVy IGFyb3VuZCB0aGUgbGlic29sdiBzb2x2ZXIKIC8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogCitTb2x2ZXJTb2x1dGlvbjo6U29sdmVyU29s dXRpb24oU29sdmVyUG9vbCAmX3Bvb2wpIDogcG9vbChfcG9vbCksIHNvbHYo TlVMTCkKK3sKKyAgcXVldWVfaW5pdCgmam9iKTsKK30KKwogU29sdmVyU29s dXRpb246On5Tb2x2ZXJTb2x1dGlvbigpCiB7CiAgIGNsZWFyKCk7CkBAIC02 MTUsNiArNjIxLDcgQEAgU29sdmVyU29sdXRpb246OmNsZWFyKCkKICAgICAg IHNvbHZlcl9mcmVlKHNvbHYpOwogICAgICAgc29sdiA9IE5VTEw7CiAgICAg fQorICBxdWV1ZV9mcmVlKCZqb2IpOwogfQogCiB2b2lkCkBAIC03MTMsMTgg KzcyMCw5IEBAIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJl YW0gJnN0cmVhbSwKICAgcmV0dXJuIHN0cmVhbTsKIH0KIAotYm9vbAotU29s dmVyU29sdXRpb246OnVwZGF0ZShTb2x2ZXJUYXNrcyAmdGFza3MsIHVwZGF0 ZU1vZGUgdXBkYXRlLCBib29sIHVzZV90ZXN0X3BhY2thZ2VzLCBib29sIGlu Y2x1ZGVfc291cmNlKQordm9pZAorU29sdmVyU29sdXRpb246OnRhc2tzVG9K b2JzKFNvbHZlclRhc2tzICZ0YXNrcywgdXBkYXRlTW9kZSB1cGRhdGUsIFF1 ZXVlICZqb2IpCiB7Ci0gIExvZyAoTE9HX1BMQUlOKSA8PCAic29sdmluZzog IiA8PCB0YXNrcy50YXNrcy5zaXplKCkgPDwgIiB0YXNrcywiIDw8Ci0gICAg IiB1cGRhdGU6ICIgPDwgKHVwZGF0ZSA/ICJ5ZXMiIDogIm5vIikgPDwgIiwi IDw8Ci0gICAgIiB1c2UgdGVzdCBwYWNrYWdlczogIiA8PCAodXNlX3Rlc3Rf cGFja2FnZXMgPyAieWVzIiA6ICJubyIpIDw8ICIsIiA8PAotICAgICIgaW5j bHVkZV9zb3VyY2U6ICIgPDwgKGluY2x1ZGVfc291cmNlID8gInllcyIgOiAi bm8iKSA8PCBlbmRMb2c7Ci0KLSAgcG9vbC51c2VfdGVzdF9wYWNrYWdlcyh1 c2VfdGVzdF9wYWNrYWdlcyk7Ci0KLSAgUXVldWUgam9iOwotICBxdWV1ZV9p bml0KCZqb2IpOwogICAvLyBzb2x2ZXIgYWNjZXB0cyBhIHF1ZXVlIGNvbnRh aW5pbmcgcGFpcnMgb2YgKGNtZCwgaWQpIHRhc2tzCiAgIC8vIGNtZCBpcyBq b2IgYW5kIHNlbGVjdGlvbiBmbGFncyBPUmVkIHRvZ2V0aGVyCiAgIGZvciAo U29sdmVyVGFza3M6OnRhc2tMaXN0Ojpjb25zdF9pdGVyYXRvciBpID0gdGFz a3MudGFza3MuYmVnaW4oKTsKQEAgLTc0NSwxMSArNzQzLDExIEBAIFNvbHZl clNvbHV0aW9uOjp1cGRhdGUoU29sdmVyVGFza3MgJnRhc2tzLCB1cGRhdGVN b2RlIHVwZGF0ZSwgYm9vbCB1c2VfdGVzdF9wYWNrCiAgICAgICAgICAgLy8g d2UgZG9uJ3Qga25vdyBob3cgdG8gYXNrIHNvbHZlciBmb3IgdGhpcywgc28g d2UganVzdCBhZGQgdGhlIGVyYXNlCiAgICAgICAgICAgLy8gYW5kIGluc3Rh bGwgbGF0ZXIKICAgICAgICAgICBicmVhazsKLQljYXNlIFNvbHZlclRhc2tz Ojp0YXNrS2VlcDoKLQkgIHF1ZXVlX3B1c2gyKCZqb2IsIFNPTFZFUl9MT0NL IHwgU09MVkVSX1NPTFZBQkxFLCBzdi5pZCk7Ci0JICBicmVhazsKLQljYXNl IFNvbHZlclRhc2tzOjp0YXNrU2tpcDoKLQkgIHF1ZXVlX3B1c2gyKCZqb2Is IFNPTFZFUl9MT0NLIHwgU09MVkVSX1NPTFZBQkxFX05BTUUsIHN2Lm5hbWVf aWQoKSk7CisgICAgICAgIGNhc2UgU29sdmVyVGFza3M6OnRhc2tLZWVwOgor ICAgICAgICAgIHF1ZXVlX3B1c2gyKCZqb2IsIFNPTFZFUl9MT0NLIHwgU09M VkVSX1NPTFZBQkxFLCBzdi5pZCk7CisgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgU29sdmVyVGFza3M6OnRhc2tTa2lwOgorICAgICAgICAgIHF1 ZXVlX3B1c2gyKCZqb2IsIFNPTFZFUl9MT0NLIHwgU09MVkVSX1NPTFZBQkxF X05BTUUsIHN2Lm5hbWVfaWQoKSk7CiAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgTG9nIChMT0dfUExBSU4pIDw8ICJ1 bmtub3duIHRhc2sgIiA8PCAoKmkpLnNlY29uZCA8PCBlbmRMb2c7CkBAIC03 NzYsNiArNzc0LDE5IEBAIFNvbHZlclNvbHV0aW9uOjp1cGRhdGUoU29sdmVy VGFza3MgJnRhc2tzLCB1cGRhdGVNb2RlIHVwZGF0ZSwgYm9vbCB1c2VfdGVz dF9wYWNrCiAKICAgLy8gQXNrIHNvbHZlciB0byBjaGVjayBkZXBlbmRlbmNp ZXMgb2YgaW5zdGFsbGVkIHBhY2thZ2VzLgogICBxdWV1ZV9wdXNoMigmam9i LCBTT0xWRVJfVkVSSUZZIHwgU09MVkVSX1NPTFZBQkxFX0FMTCwgMCk7Cit9 CisKK2Jvb2wKK1NvbHZlclNvbHV0aW9uOjp1cGRhdGUoU29sdmVyVGFza3Mg JnRhc2tzLCB1cGRhdGVNb2RlIHVwZGF0ZSwgYm9vbCB1c2VfdGVzdF9wYWNr YWdlcykKK3sKKyAgTG9nIChMT0dfUExBSU4pIDw8ICJzb2x2aW5nOiAiIDw8 IHRhc2tzLnRhc2tzLnNpemUoKSA8PCAiIHRhc2tzLCIgPDwKKyAgICAiIHVw ZGF0ZTogIiA8PCAodXBkYXRlID8gInllcyIgOiAibm8iKSA8PCAiLCIgPDwK KyAgICAiIHVzZSB0ZXN0IHBhY2thZ2VzOiAiIDw8ICh1c2VfdGVzdF9wYWNr YWdlcyA/ICJ5ZXMiIDogIm5vIikgPDwgIiwiIDw8IGVuZExvZzsKKworICBw b29sLnVzZV90ZXN0X3BhY2thZ2VzKHVzZV90ZXN0X3BhY2thZ2VzKTsKKwor ICBxdWV1ZV9mcmVlKCZqb2IpOworICB0YXNrc1RvSm9icyh0YXNrcywgdXBk YXRlLCBqb2IpOwogCiAgIGlmICghc29sdikKICAgICBzb2x2ID0gc29sdmVy X2NyZWF0ZShwb29sLnBvb2wpOwpAQCAtNzg1LDExICs3OTYsMTggQEAgU29s dmVyU29sdXRpb246OnVwZGF0ZShTb2x2ZXJUYXNrcyAmdGFza3MsIHVwZGF0 ZU1vZGUgdXBkYXRlLCBib29sIHVzZV90ZXN0X3BhY2sKICAgc29sdmVyX3Nl dF9mbGFnKHNvbHYsIFNPTFZFUl9GTEFHX0RVUF9BTExPV19WRU5ET1JDSEFO R0UsIDEpOwogICBzb2x2ZXJfc2V0X2ZsYWcoc29sdiwgU09MVkVSX0ZMQUdf RFVQX0FMTE9XX0RPV05HUkFERSwgMSk7CiAgIHNvbHZlcl9zb2x2ZShzb2x2 LCAmam9iKTsKLSAgcXVldWVfZnJlZSgmam9iKTsKIAogICBpbnQgcGNudCA9 IHNvbHZlcl9wcm9ibGVtX2NvdW50KHNvbHYpOwogICBzb2x2ZXJfcHJpbnRk ZWNpc2lvbnMoc29sdik7CiAKKyAgc29sdXRpb25Ub1RyYW5zYWN0aW9uTGlz dCgpOworCisgIHJldHVybiAocGNudCA9PSAwKTsKK30KKwordm9pZAorU29s dmVyU29sdXRpb246OnNvbHV0aW9uVG9UcmFuc2FjdGlvbkxpc3QoKQorewog ICAvLyBnZXQgdHJhbnNhY3Rpb25zIGZvciBzb2x1dGlvbgogICBUcmFuc2Fj dGlvbiAqdCA9IHNvbHZlcl9jcmVhdGVfdHJhbnNhY3Rpb24oc29sdik7CiAg IHRyYW5zYWN0aW9uX29yZGVyKHQsIDApOwpAQCAtNzk3LDcgKzgxNSw2IEBA IFNvbHZlclNvbHV0aW9uOjp1cGRhdGUoU29sdmVyVGFza3MgJnRhc2tzLCB1 cGRhdGVNb2RlIHVwZGF0ZSwgYm9vbCB1c2VfdGVzdF9wYWNrCiAKICAgLy8g bWFzc2FnZSBpbnRvIFNvbHZlclRyYW5zYWN0aW9ucyBmb3JtCiAgIHRyYW5z LmNsZWFyKCk7Ci0KICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0LT5zdGVwcy5j b3VudDsgaSsrKQogICAgIHsKICAgICAgIElkIGlkID0gdC0+c3RlcHMuZWxl bWVudHNbaV07CkBAIC04MDYsNiArODIzLDE0IEBAIFNvbHZlclNvbHV0aW9u Ojp1cGRhdGUoU29sdmVyVGFza3MgJnRhc2tzLCB1cGRhdGVNb2RlIHVwZGF0 ZSwgYm9vbCB1c2VfdGVzdF9wYWNrCiAgICAgICAgIHRyYW5zLnB1c2hfYmFj ayhTb2x2ZXJUcmFuc2FjdGlvbihTb2x2YWJsZVZlcnNpb24oaWQsIHBvb2wu cG9vbCksIHR0KSk7CiAgICAgfQogCisgIHRyYW5zYWN0aW9uX2ZyZWUodCk7 CisKKyAgZHVtcFRyYW5zYWN0aW9uTGlzdCgpOworfQorCit2b2lkCitTb2x2 ZXJTb2x1dGlvbjo6YXVnbWVudFRhc2tzKFNvbHZlclRhc2tzICZ0YXNrcykK K3sKICAgLy8gYWRkIGluc3RhbGwgYW5kIHJlbW92ZSB0YXNrcyBmb3IgYW55 dGhpbmcgbWFya2VkIGFzIHJlaW5zdGFsbAogICBmb3IgKFNvbHZlclRhc2tz Ojp0YXNrTGlzdDo6Y29uc3RfaXRlcmF0b3IgaSA9IHRhc2tzLnRhc2tzLmJl Z2luKCk7CiAgICAgICAgaSAhPSB0YXNrcy50YXNrcy5lbmQoKTsKQEAgLTgy MSw3ICs4NDYsMTEgQEAgU29sdmVyU29sdXRpb246OnVwZGF0ZShTb2x2ZXJU YXNrcyAmdGFza3MsIHVwZGF0ZU1vZGUgdXBkYXRlLCBib29sIHVzZV90ZXN0 X3BhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU29sdmVyVHJhbnNhY3Rpb246OnRyYW5zSW5zdGFsbCkpOwogICAg ICAgICB9CiAgICAgfQorfQogCit2b2lkCitTb2x2ZXJTb2x1dGlvbjo6YWRk U291cmNlKGJvb2wgaW5jbHVkZV9zb3VyY2UpCit7CiAgIC8vIGlmIGluY2x1 ZGVfc291cmNlIG1vZGUgaXMgb24sIGFsc28gaW5zdGFsbCBzb3VyY2UgZm9y IGV2ZXJ5dGhpbmcgd2UgYXJlCiAgIC8vIGluc3RhbGxpbmcKICAgaWYgKGlu Y2x1ZGVfc291cmNlKQpAQCAtODQwLDExICs4NjksMTUgQEAgU29sdmVyU29s dXRpb246OnVwZGF0ZShTb2x2ZXJUYXNrcyAmdGFza3MsIHVwZGF0ZU1vZGUg dXBkYXRlLCBib29sIHVzZV90ZXN0X3BhY2sKICAgICAgICAgICAgIH0KICAg ICAgICAgfQogICAgIH0KK30KIAordm9pZAorU29sdmVyU29sdXRpb246OmR1 bXBUcmFuc2FjdGlvbkxpc3QoKSBjb25zdAorewogICBpZiAodHJhbnMuc2l6 ZSgpKQogICAgIHsKICAgICAgIExvZyAoTE9HX1BMQUlOKSA8PCAiQXVnbWVu dGVkIFRyYW5zYWN0aW9uIExpc3Q6IiA8PCBlbmRMb2c7Ci0gICAgICBmb3Ig KFNvbHZlclRyYW5zYWN0aW9uTGlzdDo6aXRlcmF0b3IgaSA9IHRyYW5zLmJl Z2luICgpOworICAgICAgZm9yIChTb2x2ZXJUcmFuc2FjdGlvbkxpc3Q6OmNv bnN0X2l0ZXJhdG9yIGkgPSB0cmFucy5iZWdpbiAoKTsKICAgICAgICAgICAg aSAhPSB0cmFucy5lbmQgKCk7CiAgICAgICAgICAgICsraSkKICAgICAgICAg ewpAQCAtODU0LDEwICs4ODcsMTcgQEAgU29sdmVyU29sdXRpb246OnVwZGF0 ZShTb2x2ZXJUYXNrcyAmdGFza3MsIHVwZGF0ZU1vZGUgdXBkYXRlLCBib29s IHVzZV90ZXN0X3BhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg c3RkOjpzZXR3KDIwKSA8PCBpLT52ZXJzaW9uLkNhbm9uaWNhbF92ZXJzaW9u KCkgPDwgZW5kTG9nOwogICAgICAgICB9CiAgICAgfQorICBlbHNlCisgICAg TG9nIChMT0dfUExBSU4pIDw8ICJBdWdtZW50ZWQgVHJhbnNhY3Rpb24gTGlz dDogaXMgZW1wdHkiIDw8IGVuZExvZzsKK30KIAotICB0cmFuc2FjdGlvbl9m cmVlKHQpOwordm9pZCBTb2x2ZXJTb2x1dGlvbjo6YXBwbHlEZWZhdWx0UHJv YmxlbVNvbHV0aW9ucygpCit7CisgIGludCBwY250ID0gc29sdmVyX3Byb2Js ZW1fY291bnQoc29sdik7CisgIGZvciAoSWQgcHJvYmxlbSA9IDE7IHByb2Js ZW0gPD0gcGNudDsgcHJvYmxlbSsrKQorICAgIHNvbHZlcl90YWtlX3NvbHV0 aW9uKHNvbHYsIHByb2JsZW0sIDEsICZqb2IpOwogCi0gIHJldHVybiAocGNu dCA9PSAwKTsKKyAgc29sdXRpb25Ub1RyYW5zYWN0aW9uTGlzdCgpOwogfQog CiBjb25zdCBTb2x2ZXJUcmFuc2FjdGlvbkxpc3QgJgpAQCAtODkxLDYgKzkz MSw3IEBAIFNvbHZlclNvbHV0aW9uOjpyZXBvcnQoKSBjb25zdAogICAgICAg Zm9yIChJZCBzb2x1dGlvbiA9IDE7IHNvbHV0aW9uIDw9IHNjbnQ7IHNvbHV0 aW9uKyspCiAgICAgICAgIHsKICAgICAgICAgICByICs9ICJTb2x1dGlvbiAi ICsgc3RkOjp0b19zdHJpbmcoc29sdXRpb24pICsgIi8iICsgc3RkOjp0b19z dHJpbmcoc2NudCk7CisgICAgICAgICAgaWYgKHNvbHV0aW9uID09IDEpIHIg Kz0gIiAoZGVmYXVsdCkiOwogICAgICAgICAgIHIgKz0gIlxuIjsKIAogICAg ICAgICAgIElkIHAsIHJwLCBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvbGlic29s di5oIGIvbGlic29sdi5oCmluZGV4IGNkZGY3NmYuLjc4YjY4ODEgMTAwNjQ0 Ci0tLSBhL2xpYnNvbHYuaAorKysgYi9saWJzb2x2LmgKQEAgLTIzNiw3ICsy MzYsNyBAQCB0eXBlZGVmIHN0ZDo6dmVjdG9yPFNvbHZlclRyYW5zYWN0aW9u PiBTb2x2ZXJUcmFuc2FjdGlvbkxpc3Q7CiBjbGFzcyBTb2x2ZXJTb2x1dGlv bgogewogIHB1YmxpYzoKLSAgU29sdmVyU29sdXRpb24oU29sdmVyUG9vbCAm X3Bvb2wpIDogcG9vbChfcG9vbCksIHNvbHYoTlVMTCkge307CisgIFNvbHZl clNvbHV0aW9uKFNvbHZlclBvb2wgJl9wb29sKTsKICAgflNvbHZlclNvbHV0 aW9uKCk7CiAgIHZvaWQgY2xlYXIoKTsKIApAQCAtMjUyLDE2ICsyNTIsMjMg QEAgY2xhc3MgU29sdmVyU29sdXRpb24KICAgICB1cGRhdGVCZXN0LCAgLy8g dXBkYXRlIHRvIGJlc3QgdmVyc2lvbgogICAgIHVwZGF0ZUZvcmNlLCAvLyBk aXN0dXBkYXRlOiBkb3duZ3JhZGUgaWYgbmVjZXNzYXJ5IHRvIGJlc3QgdmVy c2lvbiBpbiByZXBvCiAgIH07Ci0gIGJvb2wgdXBkYXRlKFNvbHZlclRhc2tz ICZ0YXNrcywgdXBkYXRlTW9kZSB1cGRhdGUsIGJvb2wgdXNlX3Rlc3RfcGFj a2FnZXMsIGJvb2wgaW5jbHVkZV9zb3VyY2UpOworICBib29sIHVwZGF0ZShT b2x2ZXJUYXNrcyAmdGFza3MsIHVwZGF0ZU1vZGUgdXBkYXRlLCBib29sIHVz ZV90ZXN0X3BhY2thZ2VzKTsKKyAgdm9pZCBhdWdtZW50VGFza3MoU29sdmVy VGFza3MgJnRhc2tzKTsKKyAgdm9pZCBhZGRTb3VyY2UoYm9vbCBpbmNsdWRl X3NvdXJjZSk7CisgIHZvaWQgYXBwbHlEZWZhdWx0UHJvYmxlbVNvbHV0aW9u cygpOwogICBzdGQ6OnN0cmluZyByZXBvcnQoKSBjb25zdDsKIAogICBjb25z dCBTb2x2ZXJUcmFuc2FjdGlvbkxpc3QgJnRyYW5zYWN0aW9ucygpIGNvbnN0 OworICB2b2lkIGR1bXBUcmFuc2FjdGlvbkxpc3QoKSBjb25zdDsKIAogIHBy aXZhdGU6CiAgIHN0YXRpYyBTb2x2ZXJUcmFuc2FjdGlvbjo6dHJhbnNUeXBl IHR5cGUoVHJhbnNhY3Rpb24gKnRyYW5zLCBpbnQgcG9zKTsKKyAgdm9pZCB0 YXNrc1RvSm9icyhTb2x2ZXJUYXNrcyAmdGFza3MsIHVwZGF0ZU1vZGUgdXBk YXRlLCBRdWV1ZSAmam9iKTsKKyAgdm9pZCBzb2x1dGlvblRvVHJhbnNhY3Rp b25MaXN0KCk7CiAKICAgU29sdmVyUG9vbCAmcG9vbDsKICAgU29sdmVyICpz b2x2OworICBRdWV1ZSBqb2I7CiAgIFNvbHZlclRyYW5zYWN0aW9uTGlzdCB0 cmFuczsKIH07CiAKZGlmZiAtLWdpdCBhL3BhY2thZ2VfZGIuY2MgYi9wYWNr YWdlX2RiLmNjCmluZGV4IDkyZmU0ZjkuLmUyNDQzYmYgMTAwNjQ0Ci0tLSBh L3BhY2thZ2VfZGIuY2MKKysrIGIvcGFja2FnZV9kYi5jYwpAQCAtNjAyLDcg KzYwMiw3IEBAIHBhY2thZ2VkYjo6ZmlsbE1pc3NpbmdDYXRlZ29yeSAoKQog dm9pZAogcGFja2FnZWRiOjpkZWZhdWx0VHJ1c3QgKFNvbHZlclRhc2tzICZx LCBTb2x2ZXJTb2x1dGlvbjo6dXBkYXRlTW9kZSBtb2RlLCBib29sIHRlc3Qp CiB7Ci0gIHNvbHV0aW9uLnVwZGF0ZShxLCBtb2RlLCB0ZXN0LCBGQUxTRSk7 CisgIHNvbHV0aW9uLnVwZGF0ZShxLCBtb2RlLCB0ZXN0KTsKIAogICAvLyBy ZWZsZWN0IHRoYXQgdGFzayBsaXN0IGludG8gcGFja2FnZWRiCiAgIHNvbHV0 aW9uLnRyYW5zMmRiKCk7CmRpZmYgLS1naXQgYS9wcmVyZXEuY2MgYi9wcmVy ZXEuY2MKaW5kZXggYmY3NjYxYS4uNWIzZTc4NSAxMDA2NDQKLS0tIGEvcHJl cmVxLmNjCisrKyBiL3ByZXJlcS5jYwpAQCAtOTAsNiArOTAsNyBAQCBsb25n CiBQcmVyZXFQYWdlOjpPbk5leHQgKCkKIHsKICAgSFdORCBoID0gR2V0SFdO RCAoKTsKKyAgcGFja2FnZWRiIGRiOwogCiAgIGlmICghSXNEbGdCdXR0b25D aGVja2VkIChoLCBJRENfUFJFUkVRX0NIRUNLKSkKICAgICB7CkBAIC0xMDks MTAgKzExMCwxNiBAQCBQcmVyZXFQYWdlOjpPbk5leHQgKCkKICAgICAgICAg ICAgICJOT1RFISAgVXNlciByZWZ1c2VkIHRoZSBkZWZhdWx0IHNvbHV0aW9u cyEgICIKICAgICAgICAgICAgICJFeHBlY3Qgc29tZSBwYWNrYWdlcyB0byBn aXZlIGVycm9ycyBvciBub3QgZnVuY3Rpb24gYXQgYWxsLiIgPDwgZW5kTG9n OwogCSAgLy8gQ2hhbmdlIHRoZSBzb2x2ZXIncyB0cmFuc2FjdGlvbiBsaXN0 IHRvIHJlZmxlY3QgdGhlIHVzZXIncyBjaG9pY2VzLgotCSAgcGFja2FnZWRi IGRiOwogCSAgZGIuc29sdXRpb24uZGIydHJhbnMoKTsKIAl9CiAgICAgfQor ICBlbHNlCisgICAgeworICAgICAgZGIuc29sdXRpb24uYXBwbHlEZWZhdWx0 UHJvYmxlbVNvbHV0aW9ucygpOworICAgIH0KKworICBQcmVyZXFDaGVja2Vy IHA7CisgIHAuZmluYWxpemUoKTsKIAogICByZXR1cm4gd2hhdE5leHQoKTsK IH0KQEAgLTE1Nyw4ICsxNjQsOSBAQCBQcmVyZXFQYWdlOjpPblVuYXR0ZW5k ZWQgKCkKIC8vIGltcGxlbWVudHMgY2xhc3MgUHJlcmVxQ2hlY2tlcgogLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8vIGluc3RhbnRp YXRlIHRoZSBzdGF0aWMgbWVtYmVyCisvLyBpbnN0YW50aWF0ZSB0aGUgc3Rh dGljIG1lbWJlcnMKIGJvb2wgUHJlcmVxQ2hlY2tlcjo6dXNlX3Rlc3RfcGFj a2FnZXM7CitTb2x2ZXJUYXNrcyBQcmVyZXFDaGVja2VyOjpxOwogCiBib29s CiBQcmVyZXFDaGVja2VyOjppc01ldCAoKQpAQCAtMTcwLDExICsxNzgsMTkg QEAgUHJlcmVxQ2hlY2tlcjo6aXNNZXQgKCkKICAgUHJvZ3Jlc3MuU2V0VGV4 dDMgKCIiKTsKIAogICAvLyBDcmVhdGUgdGFzayBsaXN0IGNvcnJlc3BvbmRp bmcgdG8gY3VycmVudCBzdGF0ZSBvZiBwYWNrYWdlIGRhdGFiYXNlCi0gIFNv bHZlclRhc2tzIHE7CiAgIHEuc2V0VGFza3MoKTsKIAotICAvLyBhcHBseSBz b2x2ZXIgdG8gdGhvc2UgdGFza3MgYW5kIGdsb2JhbCBzdGF0ZSAodXNlIHRl c3QsIGluY2x1ZGUgc291cmNlKQotICByZXR1cm4gZGIuc29sdXRpb24udXBk YXRlKHEsIFNvbHZlclNvbHV0aW9uOjprZWVwLCB1c2VfdGVzdF9wYWNrYWdl cywgSW5jbHVkZVNvdXJjZSk7CisgIC8vIGFwcGx5IHNvbHZlciB0byB0aG9z ZSB0YXNrcyBhbmQgZ2xvYmFsIHN0YXRlICh1c2UgdGVzdCBvciBub3QpCisg IHJldHVybiBkYi5zb2x1dGlvbi51cGRhdGUocSwgU29sdmVyU29sdXRpb246 OmtlZXAsIHVzZV90ZXN0X3BhY2thZ2VzKTsKK30KKwordm9pZAorUHJlcmVx Q2hlY2tlcjo6ZmluYWxpemUgKCkKK3sKKyAgcGFja2FnZWRiIGRiOworICBk Yi5zb2x1dGlvbi5hdWdtZW50VGFza3MocSk7CisgIGRiLnNvbHV0aW9uLmFk ZFNvdXJjZShJbmNsdWRlU291cmNlKTsKKyAgZGIuc29sdXRpb24uZHVtcFRy YW5zYWN0aW9uTGlzdCgpOwogfQogCiAvKiBGb3JtYXRzIHByb2JsZW1zIGFu ZCBzb2x1dGlvbnMgYXMgYSBzdHJpbmcgZm9yIGRpc3BsYXkgdG8gdGhlIHVz ZXIuICAqLwpAQCAtMjA1LDYgKzIyMSw4IEBAIGRvX3ByZXJlcV9jaGVja190 aHJlYWQoSElOU1RBTkNFIGgsIEhXTkQgb3duZXIpCiAKICAgaWYgKHAuaXNN ZXQgKCkpCiAgICAgeworICAgICAgcC5maW5hbGl6ZSgpOworCiAgICAgICBp ZiAoc291cmNlID09IElEQ19TT1VSQ0VfTE9DQUxESVIpCiAJUHJvZ3Jlc3Mu U2V0QWN0aXZhdGVUYXNrIChXTV9BUFBfU1RBUlRfSU5TVEFMTCk7ICAvLyBp bnN0YWxsCiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9wcmVyZXEuaCBiL3By ZXJlcS5oCmluZGV4IDVhZTkzMjMuLmYxNTYxZmEgMTAwNjQ0Ci0tLSBhL3By ZXJlcS5oCisrKyBiL3ByZXJlcS5oCkBAIC00MCwxMCArNDAsMTQgQEAgcHVi bGljOgogICAvLyBmb3JtYXRzICd1bm1ldCcgYXMgYSBzdHJpbmcgZm9yIGRp c3BsYXkKICAgdm9pZCBnZXRVbm1ldFN0cmluZyAoc3RkOjpzdHJpbmcgJnMp OwogCisgIC8vIGZpbmlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gbGlzdAorICB2 b2lkIGZpbmFsaXplICgpOworCiAgIHN0YXRpYyB2b2lkIHNldFRlc3RQYWNr YWdlcyAoYm9vbCB0KSB7IHVzZV90ZXN0X3BhY2thZ2VzID0gdDsgfTsKIAog cHJpdmF0ZToKICAgc3RhdGljIGJvb2wgdXNlX3Rlc3RfcGFja2FnZXM7Cisg IHN0YXRpYyBTb2x2ZXJUYXNrcyBxOwogfTsKIAogI2VuZGlmIC8qIFNFVFVQ X1BSRVJFUV9IICovCi0tIAoyLjE1LjEKCg== --------------6B93A5C74D2AEE7EBD9E0DC2--