From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#55338: Symbols with position are sometimes not symbols Date: Mon, 9 May 2022 10:25:42 -0700 Organization: UCLA Computer Science Department Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------xBRccH2fCdTPMnhb0RWzxg98" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25340"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Cc: Alan Mackenzie To: 55338@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon May 09 19:26:13 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1no79A-0006RT-Pv for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 09 May 2022 19:26:13 +0200 Original-Received: from localhost ([::1]:38418 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1no799-0004jT-FJ for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 09 May 2022 13:26:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43630) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1no790-0004jJ-U1 for bug-gnu-emacs@gnu.org; Mon, 09 May 2022 13:26:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37200) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1no790-0008Cd-5W for bug-gnu-emacs@gnu.org; Mon, 09 May 2022 13:26:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1no790-0005Uq-1W for bug-gnu-emacs@gnu.org; Mon, 09 May 2022 13:26:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 May 2022 17:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 55338 X-GNU-PR-Package: emacs X-Debbugs-Original-To: Emacs bug reports and feature requests Original-Received: via spool by submit@debbugs.gnu.org id=B.165211715821112 (code B ref -1); Mon, 09 May 2022 17:26:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 9 May 2022 17:25:58 +0000 Original-Received: from localhost ([127.0.0.1]:59330 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1no78u-0005UQ-4F for submit@debbugs.gnu.org; Mon, 09 May 2022 13:25:57 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:47500) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1no78r-0005UG-7E for submit@debbugs.gnu.org; Mon, 09 May 2022 13:25:54 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43612) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1no78q-0004ix-RT for bug-gnu-emacs@gnu.org; Mon, 09 May 2022 13:25:53 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:60150) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1no78m-0008Ai-RN for bug-gnu-emacs@gnu.org; Mon, 09 May 2022 13:25:52 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 91E911600CC; Mon, 9 May 2022 10:25:46 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id JrQZ1GR9a2g5; Mon, 9 May 2022 10:25:43 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 795C31600D1; Mon, 9 May 2022 10:25:43 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id bwWmWnbTKM88; Mon, 9 May 2022 10:25:43 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-172-91-119-151.socal.res.rr.com [172.91.119.151]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 42EC01600CC; Mon, 9 May 2022 10:25:43 -0700 (PDT) Content-Language: en-US Received-SPF: pass client-ip=131.179.128.68; envelope-from=eggert@cs.ucla.edu; helo=zimbra.cs.ucla.edu X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:231768 Archived-At: This is a multi-part message in MIME format. --------------xBRccH2fCdTPMnhb0RWzxg98 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit While looking into another issue I saw the code added a few months ago for symbols with position, and noticed what looked to me to be a bug: although (read-positioning-symbols "xyz") returns a symbol, (symbolp (read-positioning-symbols "xyz")) returns nil. It seems that symbols with positions are symbols only if symbols-with-pos-enabled is t; otherwise, they are not symbols. Unfortunately this leads to confusing behavior such as the above. As I understand it, the symbols-with-pos-enabled variable is present for performance reasons only. If this understanding is correct, I suggest removing the variable and having symbols with positions always be symbols. This would avoid the confusion. I think this could be done without hurting CPU performance compared to the master branch when symbols-with-pos-enabled is nil; see attached patch, which is relative to master commit 6fc54786c3bb797068675d7eb7b500fb990bd04a. (The patch is incomplete, as src/comp.c would need to be updated to match, but that's merely turning the crank.) Even if this patch is completed I have qualms about performance and correctness of symbols with positions. How about a new build-time flag --disable-symbols-with-pos that would disable the feature, for people who don't want performance degraded compared to Emacs 28, or who are unsure of the correctness implications of the new feature? That should be easy to add, and I can look into adding it unless there's objection. Also, there should be a NEWS item about symbols with positions. --------------xBRccH2fCdTPMnhb0RWzxg98 Content-Type: text/x-patch; charset=UTF-8; name="0001-Always-enable-symbols-with-position.patch" Content-Disposition: attachment; filename="0001-Always-enable-symbols-with-position.patch" Content-Transfer-Encoding: base64 RnJvbSBkNmFiOWRjYmUxODgwMzU0M2QyM2JkMmJjMTYzOWZkNTg0ZGQxYjJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBNb24sIDkgTWF5IDIwMjIgMDk6NTM6MzAgLTA3MDAKU3ViamVjdDogW1BBVENI XSBBbHdheXMgZW5hYmxlIHN5bWJvbHMgd2l0aCBwb3NpdGlvbgpNSU1FLVZlcnNpb246IDEu MApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAoKUmVtb3ZlIHRoZSB2YXJpYWJsZSBzeW1ib2xzLXdpdGgt cG9zLWVuYWJsZWQsIHdoaWNoIGxlZCB0bwpjb25mdXNpbmcgc2VtYW50aWNzLiAgSW5zdGVh ZCwgdXNlIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIHRoYXQKc2hvdWxkIGJlIGF0IGxl YXN0IGFzIGZhc3QgYXMgdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiBldmVuIHdpdGgKc3ltYm9s cy13aXRoLXBvcy1lbmFibGVkIHNldCB0byBuaWwuCiogc3JjL2FsbG9jLmMgKHNldF9zeW1i b2xfbmFtZSk6IFJlbW92ZS4KKiBzcmMvYWxsb2MuYyAoaW5pdF9zeW1ib2wsIGxpdmVfc3lt Ym9sX2hvbGRpbmcpCihwcm9jZXNzX21hcmtfc3RhY2ssIGJ1aWxkX3N5bWJvbF93aXRoX3Bv cyk6Ciogc3JjL2RhdGEuYyAoRnR5cGVfb2YsIEZiYXJlX3N5bWJvbF9wLCBGYmFyZV9zeW1i b2wpCihGc3ltYm9sX3dpdGhfcG9zX3BvcywgRnJlbW92ZV9wb3NfZnJvbV9zeW1ib2wsIEZw b3NpdGlvbl9zeW1ib2wpCiogc3JjL2Zucy5jIChpbnRlcm5hbF9lcXVhbCwgaGFzaGZuX2Vx LCBzeGhhc2hfb2JqKToKKiBzcmMvbGlzcC5oIChTWU1CT0xQLCBTWU1CT0xfV0lUSF9QT1Nf UCwgU1lNQk9MX1dJVEhfUE9TX1BPUyk6Ciogc3JjL3BkdW1wZXIuYyAoZHVtcF9zeW1ib2ws IGR1bXBfdmVjdG9ybGlrZSk6Ciogc3JjL3ByaW50LmMgKHByaW50X3ZlY3Rvcmxpa2UsIHBy aW50X29iamVjdCk6CkFkYXB0IHRvIG5ldyBzdHJ1Y3QgTGlzcF9TeW1ib2wgbGF5b3V0LgpB IHN5bWJvbCB3aXRoIHBvc2l0aW9uIGlzIG5vdyBhIHN5bWJvbCBpbnN0ZWFkIG9mIGEgcHNl dWRvdmVjdG9yLgoqIHNyYy9kYXRhLmMgKHN5bWJvbHMtd2l0aC1wb3MtZW5hYmxlZCk6IFJl bW92ZS4KQWxsIHVzZXMgcmVtb3ZlZDsgdGhpcyBmZWF0dXJlIGlzIGFsd2F5cyBlbmFibGVk IG5vdy4KKiBzcmMvbGlzcC5oIChQU0VVRE9WRUNUT1JQLCBFUSwgU1lNQk9MX1dJVEhfUE9T X1ApOgpOb3cgZnVuY3Rpb25zIGluc3RlYWQgb2YgbWFjcm9zLCBzaW5jZSB0aGV5IHVzZXMg YXJncyBtb3JlIHRoYW4Kb25jZSBhbmQgd2UgZG9u4oCZdCB3YW50IGNhbGxlcnMgdG8gd29y cnkgYWJvdXQgZG91YmxlIGV2YWx1YXRpb24uCihTWU1CT0xQKTogR28gYmFjayB0byBiZWlu ZyBhIG1hY3JvLCBzaW5jZSBpdCBubyBsb25nZXIKbmVlZHMgdG8gZXZhbCBpdHMgYXJndW1l bnQgbW9yZSB0aGFuIG9uY2UuICBTaW1wbGlmeS4KKEJBUkVfU1lNQk9MX1AsIFBWRUNfU1lN Qk9MX1dJVEhfUE9TLCBTWU1CT0xfV0lUSF9QT1NfU1lNKToKUmVtb3ZlLiAgQWxsIHVzZXMg cmVtb3ZlZC4KKHN0cnVjdCBMaXNwX1N5bWJvbC5zeW0pOiBOZXcgbWVtYmVyLgooWFNZTUJP TCk6IFNpbXBsaWZ5IGJ5IHVzaW5nIG5ldyBtZW1iZXIuCihsaXNwX2hfMlRBR0dFRFApOiBO ZXcgbWFjcm8uCihFUSk6IEJvb3N0IHBlcmZvcm1hbmNlIGJ5IHVzaW5nIGl0LgooU1lNQk9M X0hBU19QT1MsIFNZTUJPTF9TQU5TX1BPUyk6IE5ldyBmdW5jdGlvbnMuCi0tLQogZG9jL2xp c3ByZWYvc3ltYm9scy50ZXhpICAgIHwgIDE0ICstCiBsaXNwL2VtYWNzLWxpc3AvYnl0ZWNv bXAuZWwgfCAgIDYgKy0KIGxpc3AvZW1hY3MtbGlzcC9jb21wLmVsICAgICB8ICAgMSAtCiBs aXNwL2VtYWNzLWxpc3AvbWFjcm9leHAuZWwgfCAgIDYgKy0KIHNyYy9hbGxvYy5jICAgICAg ICAgICAgICAgICB8ICAzNiArKystLQogc3JjL2RhdGEuYyAgICAgICAgICAgICAgICAgIHwg IDM1ICsrLS0tCiBzcmMvZm5zLmMgICAgICAgICAgICAgICAgICAgfCAgMjMgKystLQogc3Jj L2tleWJvYXJkLmMgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9saXNwLmggICAgICAgICAg ICAgICAgICB8IDI2OCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNy Yy9wZHVtcGVyLmMgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL3ByaW50LmMgICAgICAg ICAgICAgICAgIHwgIDM5ICsrLS0tLQogMTEgZmlsZXMgY2hhbmdlZCwgMTgwIGluc2VydGlv bnMoKyksIDI1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9zeW1i b2xzLnRleGkgYi9kb2MvbGlzcHJlZi9zeW1ib2xzLnRleGkKaW5kZXggMzM2ZmE5YzkxOC4u MjlmMTU5MzQ0MCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvc3ltYm9scy50ZXhpCisrKyBi L2RvYy9saXNwcmVmL3N5bWJvbHMudGV4aQpAQCAtNzcxLDI1ICs3NzEsMTUgQEAgU3ltYm9s cyB3aXRoIFBvc2l0aW9uCiBvcGVyYXRpb24uICBUaGUgYnl0ZSBjb21waWxlciBkb2VzIHRo aXMgYmVmb3JlIHdyaXRpbmcgaXRzIG91dHB1dCB0bwogdGhlIGNvbXBpbGVkIExpc3AgZmls ZS4KIAotRm9yIG1vc3QgcHVycG9zZXMsIHdoZW4gdGhlIGZsYWcgdmFyaWFibGUKLUBjb2Rl e3N5bWJvbHMtd2l0aC1wb3MtZW5hYmxlZH0gaXMgbm9uLUBjb2Rle25pbH0sIHN5bWJvbHMg d2l0aAorRm9yIG1vc3QgcHVycG9zZXMsIHN5bWJvbHMgd2l0aAogcG9zaXRpb25zIGJlaGF2 ZSBqdXN0IGFzIGJhcmUgc3ltYm9scyBkby4gIEZvciBleGFtcGxlLCBAc2FtcHsoZXEKLSM8 c3ltYm9sIGZvbyBhdCAxMjM0NT4gZm9vKX0gaGFzIGEgdmFsdWUgQGNvZGV7dH0gd2hlbiB0 aGF0IHZhcmlhYmxlCi1pcyBzZXQgKGJ1dCBAY29kZXtuaWx9IHdoZW4gaXQgaXNuJ3Qgc2V0 KS4gIE1vc3Qgb2YgdGhlIHRpbWUgaW4gRW1hY3MgdGhpcwotdmFyaWFibGUgaXMgQGNvZGV7 bmlsfSwgYnV0IHRoZSBieXRlIGNvbXBpbGVyIGJpbmRzIGl0IHRvIEBjb2Rle3R9Ci13aGVu IGl0IHJ1bnMuCisjPHN5bWJvbCBmb28gYXQgMTIzNDU+IGZvbyl9IGhhcyBhIHZhbHVlIEBj b2Rle3R9LgogCiBUeXBpY2FsbHksIHN5bWJvbHMgd2l0aCBwb3NpdGlvbiBhcmUgY3JlYXRl ZCBieSB0aGUgYnl0ZSBjb21waWxlcgogY2FsbGluZyB0aGUgcmVhZGVyIGZ1bmN0aW9uIEBj b2Rle3JlYWQtcG9zaXRpb25pbmctc3ltYm9sc30KIChAcHhyZWZ7SW5wdXQgRnVuY3Rpb25z fSkuICBPbmUgY2FuIGFsc28gYmUgY3JlYXRlZCB3aXRoIHRoZSBmdW5jdGlvbgogQGNvZGV7 cG9zaXRpb24tc3ltYm9sfS4KIAotQGRlZnZhciBzeW1ib2xzLXdpdGgtcG9zLWVuYWJsZWQK LVdoZW4gdGhpcyB2YXJpYWJsZSBpcyBub24tQGNvZGV7bmlsfSwgc3ltYm9scyB3aXRoIHBv c2l0aW9uIGJlaGF2ZQotbGlrZSB0aGUgY29udGFpbmVkIGJhcmUgc3ltYm9sLiAgRW1hY3Mg cnVucyBhIGxpdHRsZSBtb3JlIHNsb3dseSBpbgotdGhpcyBjYXNlLgotQGVuZCBkZWZ2YXIK LQogQGRlZnZhciBwcmludC1zeW1ib2xzLWJhcmUKIFdoZW4gYm91bmQgdG8gbm9uLW5pbCwg dGhlIExpc3AgcHJpbnRlciBwcmludHMgb25seSB0aGUgYmFyZSBzeW1ib2wgb2YKIGEgc3lt Ym9sIHdpdGggcG9zaXRpb24sIGlnbm9yaW5nIHRoZSBwb3NpdGlvbi4KZGlmZiAtLWdpdCBh L2xpc3AvZW1hY3MtbGlzcC9ieXRlY29tcC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9ieXRlY29t cC5lbAppbmRleCBjMGRmZmU1NDRjLi5kMjdiZDRiOWYxIDEwMDY0NAotLS0gYS9saXNwL2Vt YWNzLWxpc3AvYnl0ZWNvbXAuZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2J5dGVjb21wLmVs CkBAIC0xMjI2LDggKzEyMjYsNyBAQCBieXRlLWNvbXBpbGUtd2FybmluZy1wcmVmaXgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkLWZpbGUtbmFtZSBkaXIp KSkKIAkJICAgICAodCAiIikpKQogICAgICAgICAgKG9mZnNldCAoYnl0ZS1jb21waWxlLS13 YXJuaW5nLXNvdXJjZS1vZmZzZXQpKQotCSAocG9zIChpZiAoYW5kIGJ5dGUtY29tcGlsZS1j dXJyZW50LWZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgKG9yIG9mZnNldCAobm90IHN5 bWJvbHMtd2l0aC1wb3MtZW5hYmxlZCkpKQorCSAocG9zIChpZiAoYW5kIGJ5dGUtY29tcGls ZS1jdXJyZW50LWZpbGUgb2Zmc2V0KQogCQkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ5dGUt Y29tcGlsZS1jdXJyZW50LWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAobGV0IChuZXct bCBuZXctYykKICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KQEAgLTIy MTMsNyArMjIxMiw2IEBAIGNvbXBpbGUtZGVmdW4KIAkgICAoYnl0ZS1jb21waWxlLWN1cnJl bnQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAJICAgKHN0YXJ0LXJlYWQtcG9zaXRpb24g KHBvaW50KSkKIAkgICAoYnl0ZS1jb21waWxlLWxhc3Qtd2FybmVkLWZvcm0gJ25vdGhpbmcp Ci0gICAgICAgICAgIChzeW1ib2xzLXdpdGgtcG9zLWVuYWJsZWQgdCkKIAkgICAodmFsdWUg KGV2YWwKIAkJICAgKGRpc3BsYXlpbmctYnl0ZS1jb21waWxlLXdhcm5pbmdzCiAJCSAgICAo Ynl0ZS1jb21waWxlLXNleHAKQEAgLTIyNTEsNyArMjI0OSw3IEBAIGJ5dGUtY29tcGlsZS1m cm9tLWJ1ZmZlcgogCShieXRlLWNvbXBpbGUtb3V0cHV0IG5pbCkKIAk7OwkgICMjIyMgVGhp cyBpcyBib3VuZCBpbiBiLWMtY2xvc2UtdmFyaWFibGVzLgogCTs7CSAgKGJ5dGUtY29tcGls ZS13YXJuaW5ncyBieXRlLWNvbXBpbGUtd2FybmluZ3MpCi0gICAgICAgIChzeW1ib2xzLXdp dGgtcG9zLWVuYWJsZWQgdCkpCisJKQogICAgIChieXRlLWNvbXBpbGUtY2xvc2UtdmFyaWFi bGVzCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyCiAgICAgICAgICAoc2V0cSBieXRlLWNv bXBpbGUtLW91dGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL2NvbXAuZWwg Yi9saXNwL2VtYWNzLWxpc3AvY29tcC5lbAppbmRleCAyMzdkZTUyODg0Li4wNDUyMjY5Yjk1 IDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3AvY29tcC5lbAorKysgYi9saXNwL2VtYWNz LWxpc3AvY29tcC5lbApAQCAtNDAxOSw3ICs0MDE5LDYgQEAgY29tcC0tbmF0aXZlLWNvbXBp bGUKICAgICAgICAgICAgKGRhdGEgZnVuY3Rpb24tb3ItZmlsZSkKICAgICAgICAgICAgKGNv bXAtbmF0aXZlLWNvbXBpbGluZyB0KQogICAgICAgICAgICAoYnl0ZS1uYXRpdmUtcXVhbGl0 aWVzIG5pbCkKLSAgICAgICAgICAgKHN5bWJvbHMtd2l0aC1wb3MtZW5hYmxlZCB0KQogICAg ICAgICAgICA7OyBIYXZlIGJ5dGUgY29tcGlsZXIgc2lnbmFsIGFuIGVycm9yIHdoZW4gY29t cGlsYXRpb24gZmFpbHMuCiAgICAgICAgICAgIChieXRlLWNvbXBpbGUtZGVidWcgdCkKICAg ICAgICAgICAgKGNvbXAtY3R4dCAobWFrZS1jb21wLWN0eHQgOm91dHB1dCBvdXRwdXQKZGlm ZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9tYWNyb2V4cC5lbCBiL2xpc3AvZW1hY3MtbGlz cC9tYWNyb2V4cC5lbAppbmRleCA1MWM2ZThlMGNhLi45ZjAyZDBhMThlIDEwMDY0NAotLS0g YS9saXNwL2VtYWNzLWxpc3AvbWFjcm9leHAuZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL21h Y3JvZXhwLmVsCkBAIC0xMDcsOCArMTA3LDcgQEAgbWFjcm9leHAtLWFsbC1jbGF1c2VzCiAK IChkZWZ1biBtYWNyb2V4cC0tY29tcGlsZXItbWFjcm8gKGhhbmRsZXIgZm9ybSkKICAgKGNv bmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlcnIKLSAgICAgIChsZXQgKChzeW1ib2xzLXdp dGgtcG9zLWVuYWJsZWQgdCkpCi0gICAgICAgIChhcHBseSBoYW5kbGVyIGZvcm0gKGNkciBm b3JtKSkpCisgICAgICAoYXBwbHkgaGFuZGxlciBmb3JtIChjZHIgZm9ybSkpCiAgICAgKGVy cm9yCiAgICAgIChtZXNzYWdlICJDb21waWxlci1tYWNybyBlcnJvciBmb3IgJVM6IEhhbmRs ZXI6ICVTXG4lUyIgKGNhciBmb3JtKSBoYW5kbGVyIGVycikKICAgICAgZm9ybSkpKQpAQCAt NzMxLDggKzczMCw3IEBAIG1hY3JvZXhwLS1kZWJ1Zy1lYWdlcgogCiAoZGVmdW4gaW50ZXJu YWwtbWFjcm9leHBhbmQtZm9yLWxvYWQgKGZvcm0gZnVsbC1wKQogICA7OyBDYWxsZWQgZnJv bSB0aGUgZWFnZXItbWFjcm9leHBhbnNpb24gaW4gcmVhZGV2YWxsb29wLgotICAobGV0ICgo c3ltYm9scy13aXRoLXBvcy1lbmFibGVkIHQpCi0gICAgICAgIChwcmludC1zeW1ib2xzLWJh cmUgdCkpCisgIChsZXQgKChwcmludC1zeW1ib2xzLWJhcmUgdCkpCiAgICAgKGNvbmQKICAg ICAgOzsgRG9uJ3QgcmVwZWF0IHRoZSBzYW1lIHdhcm5pbmcgZm9yIGV2ZXJ5IHRvcC1sZXZl bCBlbGVtZW50LgogICAgICAoKGVxICdza2lwIChjYXIgbWFjcm9leHAtLXBlbmRpbmctZWFn ZXItbG9hZHMpKSBmb3JtKQpkaWZmIC0tZ2l0IGEvc3JjL2FsbG9jLmMgYi9zcmMvYWxsb2Mu YwppbmRleCA0M2ZiYmI3OWJlLi5hYTlmZWI1NGNhIDEwMDY0NAotLS0gYS9zcmMvYWxsb2Mu YworKysgYi9zcmMvYWxsb2MuYwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHBvaW50ZXJfYWxpZ24g KHZvaWQgKnB0ciwgaW50IGFsaWdubWVudCkKIHN0YXRpYyBBVFRSSUJVVEVfTk9fU0FOSVRJ WkVfVU5ERUZJTkVEIHZvaWQgKgogWFBOVFIgKExpc3BfT2JqZWN0IGEpCiB7Ci0gIHJldHVy biAoQkFSRV9TWU1CT0xfUCAoYSkKKyAgcmV0dXJuIChTWU1CT0xQIChhKQogCSAgPyAoY2hh ciAqKSBsaXNwc3ltICsgKFhMSSAoYSkgLSBMSVNQX1dPUkRfVEFHIChMaXNwX1N5bWJvbCkp CiAJICA6IChjaGFyICopIFhMUCAoYSkgLSAoWExJIChhKSAmIH5WQUxNQVNLKSk7CiB9CkBA IC0zNjE2LDEzICszNjE2LDE1IEBAIHNldF9zeW1ib2xfbmFtZSAoTGlzcF9PYmplY3Qgc3lt LCBMaXNwX09iamVjdCBuYW1lKQogdm9pZAogaW5pdF9zeW1ib2wgKExpc3BfT2JqZWN0IHZh bCwgTGlzcF9PYmplY3QgbmFtZSkKIHsKKyAgZWFzc2VydCAoU1RSSU5HUCAobmFtZSkpOwog ICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnAgPSBYQkFSRV9TWU1CT0wgKHZhbCk7CisgIHAtPnUu cy5zeW0gPSBwOwogICBzZXRfc3ltYm9sX25hbWUgKHZhbCwgbmFtZSk7Ci0gIHNldF9zeW1i b2xfcGxpc3QgKHZhbCwgUW5pbCk7CisgIHAtPnUucy5wbGlzdCA9IFFuaWw7CiAgIHAtPnUu cy5yZWRpcmVjdCA9IFNZTUJPTF9QTEFJTlZBTDsKICAgU0VUX1NZTUJPTF9WQUwgKHAsIFF1 bmJvdW5kKTsKLSAgc2V0X3N5bWJvbF9mdW5jdGlvbiAodmFsLCBRbmlsKTsKLSAgc2V0X3N5 bWJvbF9uZXh0ICh2YWwsIE5VTEwpOworICBwLT51LnMuZnVuY3Rpb24gPSBRbmlsOworICBw LT51LnMubmV4dCA9IE5VTEw7CiAgIHAtPnUucy5nY21hcmtiaXQgPSBmYWxzZTsKICAgcC0+ dS5zLmludGVybmVkID0gU1lNQk9MX1VOSU5URVJORUQ7CiAgIHAtPnUucy50cmFwcGVkX3dy aXRlID0gU1lNQk9MX1VOVFJBUFBFRF9XUklURTsKQEAgLTM2ODMsMTQgKzM2ODUsMTAgQEAg bWFrZV9taXNjX3B0ciAodm9pZCAqYSkKIExpc3BfT2JqZWN0CiBidWlsZF9zeW1ib2xfd2l0 aF9wb3MgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgcG9zaXRpb24pCiB7Ci0g IExpc3BfT2JqZWN0IHZhbDsKLSAgc3RydWN0IExpc3BfU3ltYm9sX1dpdGhfUG9zICpwCi0g ICAgPSAoc3RydWN0IExpc3BfU3ltYm9sX1dpdGhfUG9zICopIGFsbG9jYXRlX3ZlY3RvciAo Mik7Ci0gIFhTRVRWRUNUT1IgKHZhbCwgcCk7Ci0gIFhTRVRQVkVDVFlQRVNJWkUgKFhWRUNU T1IgKHZhbCksIFBWRUNfU1lNQk9MX1dJVEhfUE9TLCAyLCAwKTsKLSAgcC0+c3ltID0gc3lt Ym9sOwotICBwLT5wb3MgPSBwb3NpdGlvbjsKLQorICBMaXNwX09iamVjdCB2YWwgPSBGbWFr ZV9zeW1ib2wgKFNZTUJPTF9OQU1FIChzeW1ib2wpKTsKKyAgc3RydWN0IExpc3BfU3ltYm9s ICpzeW0gPSBYQkFSRV9TWU1CT0wgKHZhbCk7CisgIHN5bS0+dS5zLnN5bSA9IFhCQVJFX1NZ TUJPTCAoc3ltYm9sKTsKKyAgc3ltLT51LnMudmFsLnZhbHVlID0gcG9zaXRpb247CiAgIHJl dHVybiB2YWw7CiB9CiAKQEAgLTQ2MzksNiArNDYzNyw3IEBAIGxpdmVfc3ltYm9sX2hvbGRp bmcgKHN0cnVjdCBtZW1fbm9kZSAqbSwgdm9pZCAqcCkKIAkgIHx8IG9mZiA9PSBvZmZzZXRv ZiAoc3RydWN0IExpc3BfU3ltYm9sLCB1LnMudmFsKQogCSAgfHwgb2ZmID09IG9mZnNldG9m IChzdHJ1Y3QgTGlzcF9TeW1ib2wsIHUucy5mdW5jdGlvbikKIAkgIHx8IG9mZiA9PSBvZmZz ZXRvZiAoc3RydWN0IExpc3BfU3ltYm9sLCB1LnMucGxpc3QpCisJICB8fCBvZmYgPT0gb2Zm c2V0b2YgKHN0cnVjdCBMaXNwX1N5bWJvbCwgdS5zLnN5bSkKIAkgIHx8IG9mZiA9PSBvZmZz ZXRvZiAoc3RydWN0IExpc3BfU3ltYm9sLCB1LnMubmV4dCkpCiAJewogCSAgc3RydWN0IExp c3BfU3ltYm9sICpzID0gcCA9IGNwIC09IG9mZjsKQEAgLTUyMzgsNyArNTIzNyw3IEBAIHZh bGlkX2xpc3Bfb2JqZWN0X3AgKExpc3BfT2JqZWN0IG9iaikKICAgaWYgKFBVUkVfUCAocCkp CiAgICAgcmV0dXJuIDE7CiAKLSAgaWYgKEJBUkVfU1lNQk9MX1AgKG9iaikgJiYgY19zeW1i b2xfcCAocCkpCisgIGlmIChTWU1CT0xQIChvYmopICYmIGNfc3ltYm9sX3AgKHApKQogICAg IHJldHVybiAoKGNoYXIgKikgcCAtIChjaGFyICopIGxpc3BzeW0pICUgc2l6ZW9mIGxpc3Bz eW1bMF0gPT0gMDsKIAogICBpZiAocCA9PSAmYnVmZmVyX2RlZmF1bHRzIHx8IHAgPT0gJmJ1 ZmZlcl9sb2NhbF9zeW1ib2xzKQpAQCAtNTY3MCw3ICs1NjY5LDcgQEAgcHVyZWNvcHkgKExp c3BfT2JqZWN0IG9iaikKIAlwaW5fc3RyaW5nICh2ZWMtPmNvbnRlbnRzWzFdKTsKICAgICAg IFhTRVRWRUNUT1IgKG9iaiwgdmVjKTsKICAgICB9Ci0gIGVsc2UgaWYgKEJBUkVfU1lNQk9M X1AgKG9iaikpCisgIGVsc2UgaWYgKFNZTUJPTFAgKG9iaikpCiAgICAgewogICAgICAgaWYg KCFYQkFSRV9TWU1CT0wgKG9iaiktPnUucy5waW5uZWQgJiYgIWNfc3ltYm9sX3AgKFhCQVJF X1NZTUJPTCAob2JqKSkpCiAJeyAvKiBXZSBjYW4ndCBwdXJpZnkgdGhlbSwgYnV0IHRoZXkg YXBwZWFyIGluIG1hbnkgcHVyZSBvYmplY3RzLgpAQCAtNjMxMywxMCArNjMxMiw3IEBAIERF RlVOICgiZ2FyYmFnZS1jb2xsZWN0IiwgRmdhcmJhZ2VfY29sbGVjdCwgU2dhcmJhZ2VfY29s bGVjdCwgMCwgMCwgIiIsCiAgIGlmIChnYXJiYWdlX2NvbGxlY3Rpb25faW5oaWJpdGVkKQog ICAgIHJldHVybiBRbmlsOwogCi0gIHNwZWNwZGxfcmVmIGNvdW50ID0gU1BFQ1BETF9JTkRF WCAoKTsKLSAgc3BlY2JpbmQgKFFzeW1ib2xzX3dpdGhfcG9zX2VuYWJsZWQsIFFuaWwpOwog ICBnYXJiYWdlX2NvbGxlY3QgKCk7Ci0gIHVuYmluZF90byAoY291bnQsIFFuaWwpOwogICBz dHJ1Y3QgZ2NzdGF0IGdjc3QgPSBnY3N0YXQ7CiAKICAgTGlzcF9PYmplY3QgdG90YWxbXSA9 IHsKQEAgLTY0NjQsOCArNjQ2MCw4IEBAIG1hcmtfY2hhcl90YWJsZSAoc3RydWN0IExpc3Bf VmVjdG9yICpwdHIsIGVudW0gcHZlY190eXBlIHB2ZWN0eXBlKQogICAgIHsKICAgICAgIExp c3BfT2JqZWN0IHZhbCA9IHB0ci0+Y29udGVudHNbaV07CiAKLSAgICAgIGlmIChGSVhOVU1Q ICh2YWwpIHx8Ci0gICAgICAgICAgKEJBUkVfU1lNQk9MX1AgKHZhbCkgJiYgc3ltYm9sX21h cmtlZF9wIChYQkFSRV9TWU1CT0wgKHZhbCkpKSkKKyAgICAgIGlmIChGSVhOVU1QICh2YWwp CisJICB8fCAoU1lNQk9MUCAodmFsKSAmJiBzeW1ib2xfbWFya2VkX3AgKFhCQVJFX1NZTUJP TCAodmFsKSkpKQogCWNvbnRpbnVlOwogICAgICAgaWYgKFNVQl9DSEFSX1RBQkxFX1AgKHZh bCkpCiAJewpAQCAtNjkzMSw2ICs2OTI3LDggQEAgI2RlZmluZSBDSEVDS19BTExPQ0FURURf QU5EX0xJVkVfU1lNQk9MKCkJCSgodm9pZCkgMCkKIAkgICAgc2V0X3N5bWJvbF9tYXJrZWQg KHB0cik7CiAJICAgIC8qIEF0dGVtcHQgdG8gY2F0Y2ggYm9ndXMgb2JqZWN0cy4gICovCiAJ ICAgIGVhc3NlcnQgKHZhbGlkX2xpc3Bfb2JqZWN0X3AgKHB0ci0+dS5zLmZ1bmN0aW9uKSk7 CisJICAgIGlmIChwdHItPnUucy5zeW0gIT0gcHRyKQorCSAgICAgIG1hcmtfc3RhY2tfcHVz aF92YWx1ZSAobWFrZV9saXNwX3N5bWJvbCAocHRyLT51LnMuc3ltKSk7CiAJICAgIG1hcmtf c3RhY2tfcHVzaF92YWx1ZSAocHRyLT51LnMuZnVuY3Rpb24pOwogCSAgICBtYXJrX3N0YWNr X3B1c2hfdmFsdWUgKHB0ci0+dS5zLnBsaXN0KTsKIAkgICAgc3dpdGNoIChwdHItPnUucy5y ZWRpcmVjdCkKZGlmZiAtLWdpdCBhL3NyYy9kYXRhLmMgYi9zcmMvZGF0YS5jCmluZGV4IDcy ZGNmNmY4NzguLjRiOTFiMzhiNzIgMTAwNjQ0Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIvc3Jj L2RhdGEuYwpAQCAtMjAyLDcgKzIwMiw3IEBAIERFRlVOICgidHlwZS1vZiIsIEZ0eXBlX29m LCBTdHlwZV9vZiwgMSwgMSwgMCwKICAgICAgIHJldHVybiBRaW50ZWdlcjsKIAogICAgIGNh c2UgTGlzcF9TeW1ib2w6Ci0gICAgICByZXR1cm4gUXN5bWJvbDsKKyAgICAgIHJldHVybiBT WU1CT0xfSEFTX1BPUyAob2JqZWN0KSA/IFFzeW1ib2xfd2l0aF9wb3MgOiBRc3ltYm9sOwog CiAgICAgY2FzZSBMaXNwX1N0cmluZzoKICAgICAgIHJldHVybiBRc3RyaW5nOwpAQCAtMjE3 LDcgKzIxNyw2IEBAIERFRlVOICgidHlwZS1vZiIsIEZ0eXBlX29mLCBTdHlwZV9vZiwgMSwg MSwgMCwKICAgICAgICAgY2FzZSBQVkVDX05PUk1BTF9WRUNUT1I6IHJldHVybiBRdmVjdG9y OwogCWNhc2UgUFZFQ19CSUdOVU06IHJldHVybiBRaW50ZWdlcjsKIAljYXNlIFBWRUNfTUFS S0VSOiByZXR1cm4gUW1hcmtlcjsKLQljYXNlIFBWRUNfU1lNQk9MX1dJVEhfUE9TOiByZXR1 cm4gUXN5bWJvbF93aXRoX3BvczsKIAljYXNlIFBWRUNfT1ZFUkxBWTogcmV0dXJuIFFvdmVy bGF5OwogCWNhc2UgUFZFQ19GSU5BTElaRVI6IHJldHVybiBRZmluYWxpemVyOwogCWNhc2Ug UFZFQ19VU0VSX1BUUjogcmV0dXJuIFF1c2VyX3B0cjsKQEAgLTMyNSw3ICszMjQsNyBAQCBE RUZVTiAoImJhcmUtc3ltYm9sLXAiLCBGYmFyZV9zeW1ib2xfcCwgU2JhcmVfc3ltYm9sX3As IDEsIDEsIDAsCiAgICAgICAgYXR0cmlidXRlczogY29uc3QpCiAgIChMaXNwX09iamVjdCBv YmplY3QpCiB7Ci0gIGlmIChCQVJFX1NZTUJPTF9QIChvYmplY3QpKQorICBpZiAoU1lNQk9M UCAob2JqZWN0KSAmJiAhU1lNQk9MX0hBU19QT1MgKG9iamVjdCkpCiAgICAgcmV0dXJuIFF0 OwogICByZXR1cm4gUW5pbDsKIH0KQEAgLTc4MSwxNyArNzgwLDE1IEBAIERFRlVOICgiYmFy ZS1zeW1ib2wiLCBGYmFyZV9zeW1ib2wsIFNiYXJlX3N5bWJvbCwgMSwgMSwgMCwKICAgICAg ICBkb2M6IC8qIEV4dHJhY3QsIGlmIG5lZWQgYmUsIHRoZSBiYXJlIHN5bWJvbCBmcm9tIFNZ TSwgYSBzeW1ib2wuICAqLykKICAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bSkKIHsKLSAg aWYgKEJBUkVfU1lNQk9MX1AgKHN5bSkpCi0gICAgcmV0dXJuIHN5bTsKLSAgLyogVHlwZSBj aGVja2luZyBpcyBkb25lIGluIHRoZSBmb2xsb3dpbmcgbWFjcm8uICovCi0gIHJldHVybiBT WU1CT0xfV0lUSF9QT1NfU1lNIChzeW0pOworICBDSEVDS19TWU1CT0wgKHN5bSk7CisgIHJl dHVybiBTWU1CT0xfU0FOU19QT1MgKHN5bSk7CiB9CiAKIERFRlVOICgic3ltYm9sLXdpdGgt cG9zLXBvcyIsIEZzeW1ib2xfd2l0aF9wb3NfcG9zLCBTc3ltYm9sX3dpdGhfcG9zX3Bvcywg MSwgMSwgMCwKICAgICAgICBkb2M6IC8qIEV4dHJhY3QgdGhlIHBvc2l0aW9uIGZyb20gYSBz eW1ib2wgd2l0aCBwb3NpdGlvbi4gICovKQogICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbHMp CiB7Ci0gIC8qIFR5cGUgY2hlY2tpbmcgaXMgZG9uZSBpbiB0aGUgZm9sbG93aW5nIG1hY3Jv LiAqLworICBDSEVDS19UWVBFIChTWU1CT0xfV0lUSF9QT1NfUCAobHMpLCBRc3ltYm9sX3dp dGhfcG9zX3AsIGxzKTsKICAgcmV0dXJuIFNZTUJPTF9XSVRIX1BPU19QT1MgKGxzKTsKIH0K IApAQCAtODAxLDkgKzc5OCw3IEBAIERFRlVOICgicmVtb3ZlLXBvcy1mcm9tLXN5bWJvbCIs IEZyZW1vdmVfcG9zX2Zyb21fc3ltYm9sLAogT3RoZXJ3aXNlLCByZXR1cm4gQVJHIHVuY2hh bmdlZC4gIENvbXBhcmUgd2l0aCBgYmFyZS1zeW1ib2wnLiAgKi8pCiAgIChyZWdpc3RlciBM aXNwX09iamVjdCBhcmcpCiB7Ci0gIGlmIChTWU1CT0xfV0lUSF9QT1NfUCAoYXJnKSkKLSAg ICByZXR1cm4gKFNZTUJPTF9XSVRIX1BPU19TWU0gKGFyZykpOwotICByZXR1cm4gYXJnOwor ICByZXR1cm4gU1lNQk9MUCAoYXJnKSA/IFNZTUJPTF9TQU5TX1BPUyAoYXJnKSA6IGFyZzsK IH0KIAogREVGVU4gKCJwb3NpdGlvbi1zeW1ib2wiLCBGcG9zaXRpb25fc3ltYm9sLCBTcG9z aXRpb25fc3ltYm9sLCAyLCAyLCAwLApAQCAtODEzLDIwICs4MDgsMTQgQEAgREVGVU4gKCJw b3NpdGlvbi1zeW1ib2wiLCBGcG9zaXRpb25fc3ltYm9sLCBTcG9zaXRpb25fc3ltYm9sLCAy LCAyLCAwLAogdGhlIHBvc2l0aW9uIHdpbGwgYmUgdGFrZW4uICAqLykKICAgICAgKHJlZ2lz dGVyIExpc3BfT2JqZWN0IHN5bSwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcG9zKQogewotICBM aXNwX09iamVjdCBiYXJlOworICBDSEVDS19TWU1CT0wgKHN5bSk7CisgIExpc3BfT2JqZWN0 IGJhcmUgPSBTWU1CT0xfU0FOU19QT1MgKHN5bSk7CiAgIExpc3BfT2JqZWN0IHBvc2l0aW9u OwogCi0gIGlmIChCQVJFX1NZTUJPTF9QIChzeW0pKQotICAgIGJhcmUgPSBzeW07Ci0gIGVs c2UgaWYgKFNZTUJPTF9XSVRIX1BPU19QIChzeW0pKQotICAgIGJhcmUgPSBYU1lNQk9MX1dJ VEhfUE9TIChzeW0pLT5zeW07Ci0gIGVsc2UKLSAgICB3cm9uZ190eXBlX2FyZ3VtZW50IChR c3ltYm9scCwgc3ltKTsKLQogICBpZiAoRklYTlVNUCAocG9zKSkKICAgICBwb3NpdGlvbiA9 IHBvczsKICAgZWxzZSBpZiAoU1lNQk9MX1dJVEhfUE9TX1AgKHBvcykpCi0gICAgcG9zaXRp b24gPSBYU1lNQk9MX1dJVEhfUE9TIChwb3MpLT5wb3M7CisgICAgcG9zaXRpb24gPSBTWU1C T0xfV0lUSF9QT1NfUE9TIChwb3MpOwogICBlbHNlCiAgICAgd3JvbmdfdHlwZV9hcmd1bWVu dCAoUWZpeG51bV9vcl9zeW1ib2xfd2l0aF9wb3NfcCwgcG9zKTsKIApAQCAtNDQwMSwxMiAr NDM5MCw2IEBAICNkZWZpbmUgUFVUX0VSUk9SKHN5bSwgdGFpbCwgbXNnKQkJCVwKICAgVm1v c3RfbmVnYXRpdmVfZml4bnVtID0gbWFrZV9maXhudW0gKE1PU1RfTkVHQVRJVkVfRklYTlVN KTsKICAgbWFrZV9zeW1ib2xfY29uc3RhbnQgKGludGVybl9jX3N0cmluZyAoIm1vc3QtbmVn YXRpdmUtZml4bnVtIikpOwogCi0gIERFRlNZTSAoUXN5bWJvbHNfd2l0aF9wb3NfZW5hYmxl ZCwgInN5bWJvbHMtd2l0aC1wb3MtZW5hYmxlZCIpOwotICBERUZWQVJfQk9PTCAoInN5bWJv bHMtd2l0aC1wb3MtZW5hYmxlZCIsIHN5bWJvbHNfd2l0aF9wb3NfZW5hYmxlZCwKLSAgICAg ICAgICAgICAgIGRvYzogLyogTm9uLW5pbCB3aGVuICJzeW1ib2xzIHdpdGggcG9zaXRpb24i IGNhbiBiZSB1c2VkIGFzIHN5bWJvbHMuCi1CaW5kIHRoaXMgdG8gbm9uLW5pbCBpbiBhcHBs aWNhdGlvbnMgc3VjaCBhcyB0aGUgYnl0ZSBjb21waWxlci4gICovKTsKLSAgc3ltYm9sc193 aXRoX3Bvc19lbmFibGVkID0gZmFsc2U7Ci0KICAgREVGU1lNIChRd2F0Y2hlcnMsICJ3YXRj aGVycyIpOwogICBERUZTWU0gKFFtYWt1bmJvdW5kLCAibWFrdW5ib3VuZCIpOwogICBERUZT WU0gKFF1bmxldCwgInVubGV0Iik7CmRpZmYgLS1naXQgYS9zcmMvZm5zLmMgYi9zcmMvZm5z LmMKaW5kZXggMmMyMDZjNjJiMi4uNTQ1NWYzZmViOCAxMDA2NDQKLS0tIGEvc3JjL2Zucy5j CisrKyBiL3NyYy9mbnMuYwpAQCAtMjUxMiwyMCArMjUxMiwxOSBAQCBpbnRlcm5hbF9lcXVh bCAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2JqZWN0IG8yLCBlbnVtIGVxdWFsX2tpbmQgZXF1 YWxfa2luZCwKIAl9CiAgICAgfQogCi0gIC8qIEEgc3ltYm9sIHdpdGggcG9zaXRpb24gY29t cGFyZXMgdGhlIGNvbnRhaW5lZCBzeW1ib2wsIGFuZCBpcwotICAgICBgZXF1YWwnIHRvIHRo ZSBjb3JyZXNwb25kaW5nIG9yZGluYXJ5IHN5bWJvbC4gICovCi0gIGlmIChTWU1CT0xfV0lU SF9QT1NfUCAobzEpKQotICAgIG8xID0gU1lNQk9MX1dJVEhfUE9TX1NZTSAobzEpOwotICBp ZiAoU1lNQk9MX1dJVEhfUE9TX1AgKG8yKSkKLSAgICBvMiA9IFNZTUJPTF9XSVRIX1BPU19T WU0gKG8yKTsKLQotICBpZiAoRVEgKG8xLCBvMikpCisKKyAgaWYgKEJBU0VfRVEgKG8xLCBv MikpCiAgICAgcmV0dXJuIHRydWU7CiAgIGlmIChYVFlQRSAobzEpICE9IFhUWVBFIChvMikp CiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIHN3aXRjaCAoWFRZUEUgKG8xKSkKICAgICB7Cisg ICAgY2FzZSBMaXNwX1N5bWJvbDoKKyAgICAgIC8qIEEgc3ltYm9sIHdpdGggcG9zaXRpb24g Y29tcGFyZXMgdGhlIGNvbnRhaW5lZCBzeW1ib2wsIGFuZCBlcXVhbHMKKwkgdGhlIGNvcnJl c3BvbmRpbmcgb3JkaW5hcnkgc3ltYm9sLiAgKi8KKyAgICAgIHJldHVybiBYU1lNQk9MIChv MSkgPT0gWFNZTUJPTCAobzIpOworCiAgICAgY2FzZSBMaXNwX0Zsb2F0OgogICAgICAgcmV0 dXJuIHNhbWVfZmxvYXQgKG8xLCBvMik7CiAKQEAgLTQxNDgsOCArNDE0Nyw4IEBAIGNtcGZu X3VzZXJfZGVmaW5lZCAoTGlzcF9PYmplY3Qga2V5MSwgTGlzcF9PYmplY3Qga2V5MiwKIHN0 YXRpYyBMaXNwX09iamVjdAogaGFzaGZuX2VxIChMaXNwX09iamVjdCBrZXksIHN0cnVjdCBM aXNwX0hhc2hfVGFibGUgKmgpCiB7Ci0gIGlmIChzeW1ib2xzX3dpdGhfcG9zX2VuYWJsZWQg JiYgU1lNQk9MX1dJVEhfUE9TX1AgKGtleSkpCi0gICAga2V5ID0gU1lNQk9MX1dJVEhfUE9T X1NZTSAoa2V5KTsKKyAgaWYgKFNZTUJPTFAgKGtleSkpCisgICAga2V5ID0gU1lNQk9MX1NB TlNfUE9TIChrZXkpOwogICByZXR1cm4gbWFrZV91Zml4bnVtIChYSEFTSCAoa2V5KSBeIFhU WVBFIChrZXkpKTsKIH0KIApAQCAtNDgyNSw3ICs0ODI0LDcgQEAgc3hoYXNoX29iaiAoTGlz cF9PYmplY3Qgb2JqLCBpbnQgZGVwdGgpCiAgICAgICByZXR1cm4gWFVGSVhOVU0gKG9iaik7 CiAKICAgICBjYXNlIExpc3BfU3ltYm9sOgotICAgICAgcmV0dXJuIFhIQVNIIChvYmopOwor ICAgICAgcmV0dXJuIFhIQVNIIChTWU1CT0xfU0FOU19QT1MgKG9iaikpOwogCiAgICAgY2Fz ZSBMaXNwX1N0cmluZzoKICAgICAgIHJldHVybiBzeGhhc2hfc3RyaW5nIChTU0RBVEEgKG9i aiksIFNCWVRFUyAob2JqKSk7CkBAIC00ODY1LDggKzQ4NjQsNiBAQCBzeGhhc2hfb2JqIChM aXNwX09iamVjdCBvYmosIGludCBkZXB0aCkKIAkgICAgaGFzaCA9IHN4aGFzaF9jb21iaW5l IChoYXNoLCBzeGhhc2hfb2JqIChYT1ZFUkxBWSAob2JqKS0+cGxpc3QsIGRlcHRoKSk7CiAJ ICAgIHJldHVybiBTWEhBU0hfUkVEVUNFIChoYXNoKTsKIAkgIH0KLQllbHNlIGlmIChzeW1i b2xzX3dpdGhfcG9zX2VuYWJsZWQgJiYgcHZlY190eXBlID09IFBWRUNfU1lNQk9MX1dJVEhf UE9TKQotCSAgcmV0dXJuIHN4aGFzaF9vYmogKFhTWU1CT0xfV0lUSF9QT1MgKG9iaiktPnN5 bSwgZGVwdGggKyAxKTsKIAllbHNlCiAJICAvKiBPdGhlcnMgYXJlICdlcXVhbCcgaWYgdGhl eSBhcmUgJ2VxJywgc28gdGFrZSB0aGVpcgogCSAgICAgYWRkcmVzcyBhcyBoYXNoLiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggZThm NTFmOGE2Zi4uZjVjNGYxNjI0NSAxMDA2NDQKLS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIv c3JjL2tleWJvYXJkLmMKQEAgLTY5Miw3ICs2OTIsNiBAQCByZWN1cnNpdmVfZWRpdF8xICh2 b2lkKQogICAgIHsKICAgICAgIHNwZWNiaW5kIChRc3RhbmRhcmRfb3V0cHV0LCBRdCk7CiAg ICAgICBzcGVjYmluZCAoUXN0YW5kYXJkX2lucHV0LCBRdCk7Ci0gICAgICBzcGVjYmluZCAo UXN5bWJvbHNfd2l0aF9wb3NfZW5hYmxlZCwgUW5pbCk7CiAgICAgICBzcGVjYmluZCAoUXBy aW50X3N5bWJvbHNfYmFyZSwgUW5pbCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvbGlz cC5oIGIvc3JjL2xpc3AuaAppbmRleCAxYWQ4OWZjNDY4Li42NmIwNTliMWEzIDEwMDY0NAot LS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTM1Niw0MSArMzU2LDE4IEBA ICNkZWZpbmUgTElTUF9XT1JEU19BUkVfUE9JTlRFUlMgKEVNQUNTX0lOVF9NQVggPT0gSU5U UFRSX01BWCkKICMgZGVmaW5lIGxpc3BfaF9RbmlsIHswfQogI2VuZGlmCiAKLSNkZWZpbmUg bGlzcF9oX1BTRVVET1ZFQ1RPUlAoYSxjb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gIChsaXNwX2hfVkVDVE9STElLRVAoKGEpKSAmJiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgKChYVU5UQUcgKChhKSwgTGlzcF9WZWN0b3JsaWtlLCB1 bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciktPnNpemUgICAgIFwKLSAgICAgJiAoUFNFVURPVkVD VE9SX0ZMQUcgfCBQVkVDX1RZUEVfTUFTSykpICAgICAgICAgICAgICAgICAgICBcCi0gICAg PT0gKFBTRVVET1ZFQ1RPUl9GTEFHIHwgKChjb2RlKSA8PCBQU0VVRE9WRUNUT1JfQVJFQV9C SVRTKSkpKQotCiAjZGVmaW5lIGxpc3BfaF9DSEVDS19GSVhOVU0oeCkgQ0hFQ0tfVFlQRSAo RklYTlVNUCAoeCksIFFmaXhudW1wLCB4KQogI2RlZmluZSBsaXNwX2hfQ0hFQ0tfU1lNQk9M KHgpIENIRUNLX1RZUEUgKFNZTUJPTFAgKHgpLCBRc3ltYm9scCwgeCkKICNkZWZpbmUgbGlz cF9oX0NIRUNLX1RZUEUob2ssIHByZWRpY2F0ZSwgeCkgXAogICAgKChvaykgPyAodm9pZCkg MCA6IHdyb25nX3R5cGVfYXJndW1lbnQgKHByZWRpY2F0ZSwgeCkpCiAjZGVmaW5lIGxpc3Bf aF9DT05TUCh4KSBUQUdHRURQICh4LCBMaXNwX0NvbnMpCiAjZGVmaW5lIGxpc3BfaF9CQVNF X0VRKHgsIHkpIChYTEkgKHgpID09IFhMSSAoeSkpCi0KLS8qIEZJWE1FOiBEbyB3ZSByZWFs bHkgbmVlZCB0byBpbmxpbmUgdGhlIHdob2xlIHRoaW5nPwotICogV2hhdCBhYm91dCBrZWVw aW5nIHRoZSBwYXJ0IGFmdGVyIGBzeW1ib2xzX3dpdGhfcG9zX2VuYWJsZWRgIGluCi0gKiBh IHNlcGFyYXRlIGZ1bmN0aW9uPyAgKi8KLSNkZWZpbmUgbGlzcF9oX0VRKHgsIHkpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChYTEkgKCh4KSkgPT0gWExJ ICgoeSkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHx8IChzeW1i b2xzX3dpdGhfcG9zX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAmJiAoU1lNQk9MX1dJVEhfUE9TX1AgKCh4KSkgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgPyAoQkFSRV9TWU1CT0xfUCAoKHkpKSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgPyBYTEkgKFhTWU1CT0xfV0lUSF9QT1Mo KHgpKS0+c3ltKSA9PSBYTEkgKHkpIFwKLSAgICAgICAgICAgICAgOiBTWU1CT0xfV0lUSF9Q T1NfUCgoeSkpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAmJiAo WExJIChYU1lNQk9MX1dJVEhfUE9TKCh4KSktPnN5bSkgICAgICAgIFwKLSAgICAgICAgICAg ICAgICAgICAgPT0gWExJIChYU1lNQk9MX1dJVEhfUE9TKCh5KSktPnN5bSkpKSAgIFwKLSAg ICAgICAgICAgOiAoU1lNQk9MX1dJVEhfUE9TX1AgKCh5KSkgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgJiYgQkFSRV9TWU1CT0xfUCAoKHgpKSAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgJiYgKFhMSSAoeCkgPT0gWExJICgoWFNZ TUJPTF9XSVRIX1BPUyAoKHkpKSktPnN5bSkpKSkpKQotCiAjZGVmaW5lIGxpc3BfaF9GSVhO VU1QKHgpIFwKICAgICghICgoKHVuc2lnbmVkKSAoWExJICh4KSA+PiAoVVNFX0xTQl9UQUcg PyAwIDogRklYTlVNX0JJVFMpKSBcCiAJLSAodW5zaWduZWQpIChMaXNwX0ludDAgPj4gIVVT RV9MU0JfVEFHKSkgXAogICAgICAgICYgKCgxIDw8IElOVFRZUEVCSVRTKSAtIDEpKSkKICNk ZWZpbmUgbGlzcF9oX0ZMT0FUUCh4KSBUQUdHRURQICh4LCBMaXNwX0Zsb2F0KQotI2RlZmlu ZSBsaXNwX2hfTklMUCh4KSAgQkFTRV9FUSAoeCwgUW5pbCkKKyNkZWZpbmUgbGlzcF9oX05J TFAoeCkgQkFTRV9FUSAoeCwgUW5pbCkKICNkZWZpbmUgbGlzcF9oX1NFVF9TWU1CT0xfVkFM KHN5bSwgdikgXAogICAgKGVhc3NlcnQgKChzeW0pLT51LnMucmVkaXJlY3QgPT0gU1lNQk9M X1BMQUlOVkFMKSwgXAogICAgIChzeW0pLT51LnMudmFsLnZhbHVlID0gKHYpKQpAQCAtMzk5 LDE0ICszNzYsMTcgQEAgI2RlZmluZSBsaXNwX2hfU1lNQk9MX0NPTlNUQU5UX1Aoc3ltKSBc CiAjZGVmaW5lIGxpc3BfaF9TWU1CT0xfVFJBUFBFRF9XUklURV9QKHN5bSkgKFhTWU1CT0wg KHN5bSktPnUucy50cmFwcGVkX3dyaXRlKQogI2RlZmluZSBsaXNwX2hfU1lNQk9MX1ZBTChz eW0pIFwKICAgIChlYXNzZXJ0ICgoc3ltKS0+dS5zLnJlZGlyZWN0ID09IFNZTUJPTF9QTEFJ TlZBTCksIChzeW0pLT51LnMudmFsLnZhbHVlKQotI2RlZmluZSBsaXNwX2hfU1lNQk9MX1dJ VEhfUE9TX1AoeCkgUFNFVURPVkVDVE9SUCAoKHgpLCBQVkVDX1NZTUJPTF9XSVRIX1BPUykK LSNkZWZpbmUgbGlzcF9oX0JBUkVfU1lNQk9MX1AoeCkgVEFHR0VEUCAoKHgpLCBMaXNwX1N5 bWJvbCkKLSNkZWZpbmUgbGlzcF9oX1NZTUJPTFAoeCkgKChCQVJFX1NZTUJPTF9QICgoeCkp IHx8ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW1i b2xzX3dpdGhfcG9zX2VuYWJsZWQgJiYgKFNZTUJPTF9XSVRIX1BPU19QICgoeCkpKSkpKQor I2RlZmluZSBsaXNwX2hfU1lNQk9MUCh4KSBUQUdHRURQICh4LCBMaXNwX1N5bWJvbCkKICNk ZWZpbmUgbGlzcF9oX1RBR0dFRFAoYSwgdGFnKSBcCiAgICAoISAoKCh1bnNpZ25lZCkgKFhM SSAoYSkgPj4gKFVTRV9MU0JfVEFHID8gMCA6IFZBTEJJVFMpKSBcCiAJLSAodW5zaWduZWQp ICh0YWcpKSBcCiAgICAgICAgJiAoKDEgPDwgR0NUWVBFQklUUykgLSAxKSkpCisjZGVmaW5l IGxpc3BfaF8yVEFHR0VEUChhLCBiLCB0YWcpIFwKKyAgICghICgoKCh1bnNpZ25lZCkgKFhM SSAoYSkgPj4gKFVTRV9MU0JfVEFHID8gMCA6IFZBTEJJVFMpKSBcCisJIC0gKHVuc2lnbmVk KSAodGFnKSkgXAorCXwgKCh1bnNpZ25lZCkgKFhMSSAoYikgPj4gKFVTRV9MU0JfVEFHID8g MCA6IFZBTEJJVFMpKSBcCisJICAgLSAodW5zaWduZWQpICh0YWcpKSkgXAorICAgICAgICYg KCgxIDw8IEdDVFlQRUJJVFMpIC0gMSkpKQogI2RlZmluZSBsaXNwX2hfVkVDVE9STElLRVAo eCkgVEFHR0VEUCAoeCwgTGlzcF9WZWN0b3JsaWtlKQogI2RlZmluZSBsaXNwX2hfWENBUihj KSBYQ09OUyAoYyktPnUucy5jYXIKICNkZWZpbmUgbGlzcF9oX1hDRFIoYykgWENPTlMgKGMp LT51LnMudS5jZHIKQEAgLTQ0Nyw3ICs0MjcsNiBAQCAjZGVmaW5lIGxpc3BfaF9YSEFTSChh KSBYVUZJWE5VTV9SQVcgKGEpCiAjIGRlZmluZSBYTEkobykgbGlzcF9oX1hMSSAobykKICMg ZGVmaW5lIFhJTChpKSBsaXNwX2hfWElMIChpKQogIyBkZWZpbmUgWExQKG8pIGxpc3BfaF9Y TFAgKG8pCi0jIGRlZmluZSBCQVJFX1NZTUJPTF9QKHgpIGxpc3BfaF9CQVJFX1NZTUJPTF9Q ICh4KQogIyBkZWZpbmUgQ0hFQ0tfRklYTlVNKHgpIGxpc3BfaF9DSEVDS19GSVhOVU0gKHgp CiAjIGRlZmluZSBDSEVDS19TWU1CT0woeCkgbGlzcF9oX0NIRUNLX1NZTUJPTCAoeCkKICMg ZGVmaW5lIENIRUNLX1RZUEUob2ssIHByZWRpY2F0ZSwgeCkgbGlzcF9oX0NIRUNLX1RZUEUg KG9rLCBwcmVkaWNhdGUsIHgpCkBAIC00NjAsNyArNDM5LDcgQEAgI2RlZmluZSBsaXNwX2hf WEhBU0goYSkgWFVGSVhOVU1fUkFXIChhKQogIyBkZWZpbmUgU1lNQk9MX0NPTlNUQU5UX1Ao c3ltKSBsaXNwX2hfU1lNQk9MX0NPTlNUQU5UX1AgKHN5bSkKICMgZGVmaW5lIFNZTUJPTF9U UkFQUEVEX1dSSVRFX1Aoc3ltKSBsaXNwX2hfU1lNQk9MX1RSQVBQRURfV1JJVEVfUCAoc3lt KQogIyBkZWZpbmUgU1lNQk9MX1ZBTChzeW0pIGxpc3BfaF9TWU1CT0xfVkFMIChzeW0pCi0v KiAjIGRlZmluZSBTWU1CT0xQKHgpIGxpc3BfaF9TWU1CT0xQICh4KSAqLyAvKiBYIGlzIGFj Y2Vzc2VkIG1vcmUgdGhhbiBvbmNlLiAqLworIyBkZWZpbmUgU1lNQk9MUCh4KSBsaXNwX2hf U1lNQk9MUCAoeCkKICMgZGVmaW5lIFRBR0dFRFAoYSwgdGFnKSBsaXNwX2hfVEFHR0VEUCAo YSwgdGFnKQogIyBkZWZpbmUgVkVDVE9STElLRVAoeCkgbGlzcF9oX1ZFQ1RPUkxJS0VQICh4 KQogIyBkZWZpbmUgWENBUihjKSBsaXNwX2hfWENBUiAoYykKQEAgLTYxOSw3ICs1OTgsNiBA QCAjZGVmaW5lIEVOVU1fQkYoVFlQRSkgZW51bSBUWVBFCiBleHRlcm4gdm9pZCBjaGFyX3Rh YmxlX3NldCAoTGlzcF9PYmplY3QsIGludCwgTGlzcF9PYmplY3QpOwogCiAvKiBEZWZpbmVk IGluIGRhdGEuYy4gICovCi1leHRlcm4gYm9vbCBzeW1ib2xzX3dpdGhfcG9zX2VuYWJsZWQ7 CiBleHRlcm4gQVZPSUQgYXJnc19vdXRfb2ZfcmFuZ2VfMyAoTGlzcF9PYmplY3QsIExpc3Bf T2JqZWN0LCBMaXNwX09iamVjdCk7CiBleHRlcm4gQVZPSUQgd3JvbmdfdHlwZV9hcmd1bWVu dCAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiBMaXNwX09iamVjdCBkZWZh dWx0X3ZhbHVlIChMaXNwX09iamVjdCBzeW1ib2wpOwpAQCAtODM1LDEwICs4MTMsMTAgQEAg I2RlZmluZSBYVU5UQUcoYSwgdHlwZSwgY3R5cGUpICgoY3R5cGUgKikgXAogICAgICAgYm9v bF9iZiBnY21hcmtiaXQgOiAxOwogCiAgICAgICAvKiBJbmRpY2F0ZXMgd2hlcmUgdGhlIHZh bHVlIGNhbiBiZSBmb3VuZDoKLQkgMCA6IGl0J3MgYSBwbGFpbiB2YXIsIHRoZSB2YWx1ZSBp cyBpbiB0aGUgYHZhbHVlJyBmaWVsZC4KLQkgMSA6IGl0J3MgYSB2YXJhbGlhcywgdGhlIHZh bHVlIGlzIHJlYWxseSBpbiB0aGUgYGFsaWFzJyBzeW1ib2wuCi0JIDIgOiBpdCdzIGEgbG9j YWxpemVkIHZhciwgdGhlIHZhbHVlIGlzIGluIHRoZSBgYmx2JyBvYmplY3QuCi0JIDMgOiBp dCdzIGEgZm9yd2FyZGluZyB2YXJpYWJsZSwgdGhlIHZhbHVlIGlzIGluIGBmb3J3YXJkJy4g ICovCisJIFNZTUJPTF9QTEFJTlZBTCA6IGl0J3MgYSBwbGFpbiB2YXI7IHNlZSB2YWwudmFs dWUuCisJIFNZTUJPTF9WQVJBTElBUyA6IGl0J3MgYSB2YXJhbGlhczsgc2VlIHZhbC5hbGlh cy4KKwkgU1lNQk9MX0xPQ0FMSVpFRCA6IGl0J3MgYSBsb2NhbGl6ZWQgdmFyOyBzZWUgdmFs LmJsdi4KKwkgU1lNQk9MX0ZPUldBUkRFRCA6IGl0J3MgYSBmb3J3YXJkaW5nIHZhcmlhYmxl OyBzZWUgdmFsLmZ3ZC4gICovCiAgICAgICBFTlVNX0JGIChzeW1ib2xfcmVkaXJlY3QpIHJl ZGlyZWN0IDogMzsKIAogICAgICAgLyogMCA6IG5vcm1hbCBjYXNlLCBqdXN0IHNldCB0aGUg dmFsdWUKQEAgLTg1Nyw2ICs4MzUsMTMgQEAgI2RlZmluZSBYVU5UQUcoYSwgdHlwZSwgY3R5 cGUpICgoY3R5cGUgKikgXAogICAgICAgLyogVHJ1ZSBpZiBwb2ludGVkIHRvIGZyb20gcHVy ZXNwYWNlIGFuZCBoZW5jZSBjYW4ndCBiZSBHQydkLiAgKi8KICAgICAgIGJvb2xfYmYgcGlu bmVkIDogMTsKIAorICAgICAgLyogT3JkaW5hcmlseSBhIHNlbGYtcG9pbnRlci4gIEJ1dCBp biBhIHN5bWJvbCB3aXRoIHBvc2l0aW9uCisJIHRoaXMgcG9pbnRzIHRvIHRoZSBhY3R1YWwg c3ltYm9sLCBhbmQgdGhlIG9ubHkgb3RoZXIgcG9zc2libHkKKwkgbm9uemVybyBvciBub24t bmlsIG1lbWJlcnMgb2YgdGhpcyBzdHJ1Y3QgYXJlIGdjbWFya2JpdCwKKwkgcmVkaXJlY3Qg KHdoaWNoIG11c3QgYmUgU1lNQk9MX1BMQUlOVkFMKSwgcGlubmVkLCBuYW1lICh3aGljaAor CSBtdXN0ID09IHN5bS0+cy51LnMubmFtZSksIGFuZCB2YWwudmFsdWUgKHRoZSBwb3NpdGlv biwgYSBmaXhudW0pLiAgKi8KKyAgICAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOworCiAg ICAgICAvKiBUaGUgc3ltYm9sJ3MgbmFtZSwgYXMgYSBMaXNwIHN0cmluZy4gICovCiAgICAg ICBMaXNwX09iamVjdCBuYW1lOwogCkBAIC0xMDA2LDEyICs5OTEsNjMgQEAgI2RlZmluZSBS T1VORFVQKHgsIHkpIChQT1dFUl9PRl8yICh5KQkJCQkJXAogICAgIHB0cmRpZmZfdCBzaXpl OwogICB9OwogCi1zdHJ1Y3QgTGlzcF9TeW1ib2xfV2l0aF9Qb3MKK0lOTElORSBib29sCiso U1lNQk9MUCkgKExpc3BfT2JqZWN0IHgpCiB7Ci0gIHVuaW9uIHZlY3Rvcmxpa2VfaGVhZGVy IGhlYWRlcjsKLSAgTGlzcF9PYmplY3Qgc3ltOyAgICAgICAgICAgICAgLyogQSBzeW1ib2wg Ki8KLSAgTGlzcF9PYmplY3QgcG9zOyAgICAgICAgICAgICAgLyogQSBmaXhudW0gKi8KLX0g R0NBTElHTkVEX1NUUlVDVDsKKyAgcmV0dXJuIGxpc3BfaF9TWU1CT0xQICh4KTsKK30KKwor SU5MSU5FIHN0cnVjdCBMaXNwX1N5bWJvbCAqIEFUVFJJQlVURV9OT19TQU5JVElaRV9VTkRF RklORUQKK1hCQVJFX1NZTUJPTCAoTGlzcF9PYmplY3Qgc3ltKQoreworICBlYXNzZXJ0IChT WU1CT0xQIChzeW0pKTsKKyAgaW50cHRyX3QgaSA9IChpbnRwdHJfdCkgWFVOVEFHIChzeW0s IExpc3BfU3ltYm9sLCBzdHJ1Y3QgTGlzcF9TeW1ib2wpOworICB2b2lkICpwID0gKGNoYXIg KikgbGlzcHN5bSArIGk7CisgIHJldHVybiBwOworfQorCitJTkxJTkUgc3RydWN0IExpc3Bf U3ltYm9sICogQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRAorWFNZTUJPTCAoTGlz cF9PYmplY3Qgc3ltKQoreworICByZXR1cm4gWEJBUkVfU1lNQk9MIChzeW0pLT51LnMuc3lt OworfQorCitJTkxJTkUgTGlzcF9PYmplY3QKK21ha2VfbGlzcF9zeW1ib2wgKHN0cnVjdCBM aXNwX1N5bWJvbCAqc3ltKQoreworICAvKiBHQ0MgNyB4ODYtNjQgZ2VuZXJhdGVzIGZhc3Rl ciBjb2RlIGlmIGxpc3BzeW0gaXMKKyAgICAgY2FzdCB0byBjaGFyICogcmF0aGVyIHRoYW4g dG8gaW50cHRyX3QuICAqLworICBjaGFyICpzeW1vZmZzZXQgPSAoY2hhciAqKSAoKGNoYXIg Kikgc3ltIC0gKGNoYXIgKikgbGlzcHN5bSk7CisgIExpc3BfT2JqZWN0IGEgPSBUQUdfUFRS IChMaXNwX1N5bWJvbCwgc3ltb2Zmc2V0KTsKKyAgZWFzc2VydCAoWEJBUkVfU1lNQk9MIChh KSA9PSBzeW0pOworICByZXR1cm4gYTsKK30KKworSU5MSU5FIExpc3BfT2JqZWN0CitidWls dGluX2xpc3Bfc3ltYm9sIChpbnQgaW5kZXgpCit7CisgIHJldHVybiBtYWtlX2xpc3Bfc3lt Ym9sICgmbGlzcHN5bVtpbmRleF0pOworfQorCitJTkxJTkUgYm9vbAorY19zeW1ib2xfcCAo c3RydWN0IExpc3BfU3ltYm9sICpzeW0pCit7CisgIGNoYXIgKmJwID0gKGNoYXIgKikgbGlz cHN5bTsKKyAgY2hhciAqc3AgPSAoY2hhciAqKSBzeW07CisgIGlmIChQVFJESUZGX01BWCA8 IElOVFBUUl9NQVgpCisgICAgcmV0dXJuIGJwIDw9IHNwICYmIHNwIDwgYnAgKyBzaXplb2Yg bGlzcHN5bTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBzcCAt IGJwOworICAgICAgcmV0dXJuIDAgPD0gb2Zmc2V0ICYmIG9mZnNldCA8IHNpemVvZiBsaXNw c3ltOworICAgIH0KK30KKworSU5MSU5FIHZvaWQKKyhDSEVDS19TWU1CT0wpIChMaXNwX09i amVjdCB4KQoreworICBsaXNwX2hfQ0hFQ0tfU1lNQk9MICh4KTsKK30KIAogLyogSW4gdGhl IHNpemUgd29yZCBvZiBhIHZlY3RvciwgdGhpcyBiaXQgbWVhbnMgdGhlIHZlY3RvciBoYXMg YmVlbiBtYXJrZWQuICAqLwogCkBAIC0xMDM2LDcgKzEwNzIsNiBAQCBERUZJTkVfR0RCX1NZ TUJPTF9FTkQgKFBTRVVET1ZFQ1RPUl9GTEFHKQogICBQVkVDX01BUktFUiwKICAgUFZFQ19P VkVSTEFZLAogICBQVkVDX0ZJTkFMSVpFUiwKLSAgUFZFQ19TWU1CT0xfV0lUSF9QT1MsCiAg IFBWRUNfTUlTQ19QVFIsCiAgIFBWRUNfVVNFUl9QVFIsCiAgIFBWRUNfUFJPQ0VTUywKQEAg LTEwOTYsOTIgKzExMzEsNiBAQCBERUZJTkVfR0RCX1NZTUJPTF9FTkQgKFBTRVVET1ZFQ1RP Ul9GTEFHKQogICAgdmFsdWVzLiAgVGhleSBhcmUgbWFjcm9zIGZvciB1c2UgaW4gI2lmIGFu ZCBzdGF0aWMgaW5pdGlhbGl6ZXJzLiAgKi8KICNkZWZpbmUgTU9TVF9QT1NJVElWRV9GSVhO VU0gKEVNQUNTX0lOVF9NQVggPj4gSU5UVFlQRUJJVFMpCiAjZGVmaW5lIE1PU1RfTkVHQVRJ VkVfRklYTlVNICgtMSAtIE1PU1RfUE9TSVRJVkVfRklYTlVNKQotDAotSU5MSU5FIGJvb2wK LVBTRVVET1ZFQ1RPUlAgKExpc3BfT2JqZWN0IGEsIGludCBjb2RlKQotewotICByZXR1cm4g bGlzcF9oX1BTRVVET1ZFQ1RPUlAgKGEsIGNvZGUpOwotfQotCi1JTkxJTkUgYm9vbAotKEJB UkVfU1lNQk9MX1ApIChMaXNwX09iamVjdCB4KQotewotICByZXR1cm4gbGlzcF9oX0JBUkVf U1lNQk9MX1AgKHgpOwotfQotCi1JTkxJTkUgYm9vbAotKFNZTUJPTF9XSVRIX1BPU19QKSAo TGlzcF9PYmplY3QgeCkKLXsKLSAgcmV0dXJuIGxpc3BfaF9TWU1CT0xfV0lUSF9QT1NfUCAo eCk7Ci19Ci0KLUlOTElORSBib29sCi0oU1lNQk9MUCkgKExpc3BfT2JqZWN0IHgpCi17Ci0g IHJldHVybiBsaXNwX2hfU1lNQk9MUCAoeCk7Ci19Ci0KLUlOTElORSBzdHJ1Y3QgTGlzcF9T eW1ib2xfV2l0aF9Qb3MgKgotWFNZTUJPTF9XSVRIX1BPUyAoTGlzcF9PYmplY3QgYSkKLXsK LSAgICBlYXNzZXJ0IChTWU1CT0xfV0lUSF9QT1NfUCAoYSkpOwotICAgIHJldHVybiBYVU5U QUcgKGEsIExpc3BfVmVjdG9ybGlrZSwgc3RydWN0IExpc3BfU3ltYm9sX1dpdGhfUG9zKTsK LX0KLQotSU5MSU5FIHN0cnVjdCBMaXNwX1N5bWJvbCAqIEFUVFJJQlVURV9OT19TQU5JVEla RV9VTkRFRklORUQKLShYQkFSRV9TWU1CT0wpIChMaXNwX09iamVjdCBhKQotewotICBlYXNz ZXJ0IChCQVJFX1NZTUJPTF9QIChhKSk7Ci0gIGludHB0cl90IGkgPSAoaW50cHRyX3QpIFhV TlRBRyAoYSwgTGlzcF9TeW1ib2wsIHN0cnVjdCBMaXNwX1N5bWJvbCk7Ci0gIHZvaWQgKnAg PSAoY2hhciAqKSBsaXNwc3ltICsgaTsKLSAgcmV0dXJuIHA7Ci19Ci0KLUlOTElORSBzdHJ1 Y3QgTGlzcF9TeW1ib2wgKiBBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5ERUZJTkVECi0oWFNZ TUJPTCkgKExpc3BfT2JqZWN0IGEpCi17Ci0gIGVhc3NlcnQgKFNZTUJPTFAgKChhKSkpOwot ICBpZiAoIXN5bWJvbHNfd2l0aF9wb3NfZW5hYmxlZCB8fCBCQVJFX1NZTUJPTF9QIChhKSkK LSAgICByZXR1cm4gWEJBUkVfU1lNQk9MIChhKTsKLSAgcmV0dXJuIFhCQVJFX1NZTUJPTCAo WFNZTUJPTF9XSVRIX1BPUyAoYSktPnN5bSk7Ci19Ci0KLUlOTElORSBMaXNwX09iamVjdAot bWFrZV9saXNwX3N5bWJvbCAoc3RydWN0IExpc3BfU3ltYm9sICpzeW0pCi17Ci0gIC8qIEdD QyA3IHg4Ni02NCBnZW5lcmF0ZXMgZmFzdGVyIGNvZGUgaWYgbGlzcHN5bSBpcwotICAgICBj YXN0IHRvIGNoYXIgKiByYXRoZXIgdGhhbiB0byBpbnRwdHJfdC4gICovCi0gIGNoYXIgKnN5 bW9mZnNldCA9IChjaGFyICopICgoY2hhciAqKSBzeW0gLSAoY2hhciAqKSBsaXNwc3ltKTsK LSAgTGlzcF9PYmplY3QgYSA9IFRBR19QVFIgKExpc3BfU3ltYm9sLCBzeW1vZmZzZXQpOwot ICBlYXNzZXJ0IChYU1lNQk9MIChhKSA9PSBzeW0pOwotICByZXR1cm4gYTsKLX0KLQotSU5M SU5FIExpc3BfT2JqZWN0Ci1idWlsdGluX2xpc3Bfc3ltYm9sIChpbnQgaW5kZXgpCi17Ci0g IHJldHVybiBtYWtlX2xpc3Bfc3ltYm9sICgmbGlzcHN5bVtpbmRleF0pOwotfQotCi1JTkxJ TkUgYm9vbAotY19zeW1ib2xfcCAoc3RydWN0IExpc3BfU3ltYm9sICpzeW0pCi17Ci0gIGNo YXIgKmJwID0gKGNoYXIgKikgbGlzcHN5bTsKLSAgY2hhciAqc3AgPSAoY2hhciAqKSBzeW07 Ci0gIGlmIChQVFJESUZGX01BWCA8IElOVFBUUl9NQVgpCi0gICAgcmV0dXJuIGJwIDw9IHNw ICYmIHNwIDwgYnAgKyBzaXplb2YgbGlzcHN5bTsKLSAgZWxzZQotICAgIHsKLSAgICAgIHB0 cmRpZmZfdCBvZmZzZXQgPSBzcCAtIGJwOwotICAgICAgcmV0dXJuIDAgPD0gb2Zmc2V0ICYm IG9mZnNldCA8IHNpemVvZiBsaXNwc3ltOwotICAgIH0KLX0KLQotSU5MSU5FIHZvaWQKLShD SEVDS19TWU1CT0wpIChMaXNwX09iamVjdCB4KQotewotICBsaXNwX2hfQ0hFQ0tfU1lNQk9M ICh4KTsKLX0KIAogLyogVHJ1ZSBpZiB0aGUgcG9zc2libHktdW5zaWduZWQgaW50ZWdlciBJ IGRvZXNuJ3QgZml0IGluIGEgZml4bnVtLiAgKi8KIApAQCAtMTMyMiw5ICsxMjcxLDExIEBA IG1ha2VfZml4ZWRfbmF0bnVtIChFTUFDU19JTlQgbikKIC8qIFJldHVybiB0cnVlIGlmIFgg YW5kIFkgYXJlIHRoZSBzYW1lIG9iamVjdCwgcmVja29uaW5nIGEgc3ltYm9sIHdpdGgKICAg IHBvc2l0aW9uIGFzIGJlaW5nIHRoZSBzYW1lIGFzIHRoZSBiYXJlIHN5bWJvbC4gICovCiBJ TkxJTkUgYm9vbAotKEVRKSAoTGlzcF9PYmplY3QgeCwgTGlzcF9PYmplY3QgeSkKK0VRIChM aXNwX09iamVjdCB4LCBMaXNwX09iamVjdCB5KQogewotICByZXR1cm4gbGlzcF9oX0VRICh4 LCB5KTsKKyAgcmV0dXJuIChCQVNFX0VRICh4LCB5KQorCSAgfHwgKGxpc3BfaF8yVEFHR0VE UCAoeCwgeSwgTGlzcF9TeW1ib2wpCisJICAgICAgJiYgWFNZTUJPTCAoeCkgPT0gWFNZTUJP TCAoeSkpKTsKIH0KIAogSU5MSU5FIGludG1heF90CkBAIC0xNzk1LDYgKzE3NDYsMjEgQEAg UFNFVURPVkVDVE9SX1RZUEVQIChjb25zdCB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciAqYSwg ZW51bSBwdmVjX3R5cGUgY29kZSkKIAkgID09IChQU0VVRE9WRUNUT1JfRkxBRyB8IChjb2Rl IDw8IFBTRVVET1ZFQ1RPUl9BUkVBX0JJVFMpKSk7CiB9CiAKKy8qIFRydWUgaWYgQSBpcyBh IHBzZXVkb3ZlY3RvciB3aG9zZSBjb2RlIGlzIENPREUuICAqLworSU5MSU5FIGJvb2wKK1BT RVVET1ZFQ1RPUlAgKExpc3BfT2JqZWN0IGEsIGludCBjb2RlKQoreworICBpZiAoISBWRUNU T1JMSUtFUCAoYSkpCisgICAgcmV0dXJuIGZhbHNlOworICBlbHNlCisgICAgeworICAgICAg LyogQ29udmVydGluZyB0byB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciAqIGF2b2lkcyBhbGlh c2luZyBpc3N1ZXMuICAqLworICAgICAgcmV0dXJuIFBTRVVET1ZFQ1RPUl9UWVBFUCAoWFVO VEFHIChhLCBMaXNwX1ZlY3Rvcmxpa2UsCisJCQkJCSB1bmlvbiB2ZWN0b3JsaWtlX2hlYWRl ciksCisJCQkJIGNvZGUpOworICAgIH0KK30KKwogLyogQSBib29sdmVjdG9yIGlzIGEga2lu ZCBvZiB2ZWN0b3JsaWtlLCB3aXRoIGNvbnRlbnRzIGxpa2UgYSBzdHJpbmcuICAqLwogCiBz dHJ1Y3QgTGlzcF9Cb29sX1ZlY3RvcgpAQCAtMjMwNyw3ICsyMjczLDMzIEBAIFNFVF9TWU1C T0xfRldEIChzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bSwgdm9pZCBjb25zdCAqdikKIElOTElO RSBMaXNwX09iamVjdAogU1lNQk9MX05BTUUgKExpc3BfT2JqZWN0IHN5bSkKIHsKLSAgcmV0 dXJuIFhTWU1CT0wgKHN5bSktPnUucy5uYW1lOworICByZXR1cm4gWEJBUkVfU1lNQk9MIChz eW0pLT51LnMubmFtZTsKK30KKworSU5MSU5FIGJvb2wKK1NZTUJPTF9IQVNfUE9TIChMaXNw X09iamVjdCBzeW0pCit7CisgIHN0cnVjdCBMaXNwX1N5bWJvbCAqcyA9IFhCQVJFX1NZTUJP TCAoc3ltKTsKKyAgcmV0dXJuIHMtPnUucy5zeW0gIT0gczsKK30KKworSU5MSU5FIGJvb2wK K1NZTUJPTF9XSVRIX1BPU19QIChMaXNwX09iamVjdCBhKQoreworICByZXR1cm4gU1lNQk9M UCAoYSkgJiYgU1lNQk9MX0hBU19QT1MgKGEpOworfQorCitJTkxJTkUgTGlzcF9PYmplY3QK K1NZTUJPTF9XSVRIX1BPU19QT1MgKExpc3BfT2JqZWN0IHN5bSkKK3sKKyAgZWFzc2VydCAo U1lNQk9MX1dJVEhfUE9TX1AgKHN5bSkpOworICByZXR1cm4gWEJBUkVfU1lNQk9MIChzeW0p LT51LnMudmFsLnZhbHVlOworfQorCitJTkxJTkUgTGlzcF9PYmplY3QKK1NZTUJPTF9TQU5T X1BPUyAoTGlzcF9PYmplY3Qgc3ltKQoreworICByZXR1cm4gbWFrZV9saXNwX3N5bWJvbCAo WFNZTUJPTCAoc3ltKSk7CiB9CiAKIC8qIFZhbHVlIGlzIHRydWUgaWYgU1lNIGlzIGFuIGlu dGVybmVkIHN5bWJvbC4gICovCkBAIC0yNzE3LDIyICsyNzA5LDYgQEAgWE9WRVJMQVkgKExp c3BfT2JqZWN0IGEpCiAgIHJldHVybiBYVU5UQUcgKGEsIExpc3BfVmVjdG9ybGlrZSwgc3Ry dWN0IExpc3BfT3ZlcmxheSk7CiB9CiAKLUlOTElORSBMaXNwX09iamVjdAotU1lNQk9MX1dJ VEhfUE9TX1NZTSAoTGlzcF9PYmplY3QgYSkKLXsKLSAgaWYgKCFTWU1CT0xfV0lUSF9QT1Nf UCAoYSkpCi0gICAgd3JvbmdfdHlwZV9hcmd1bWVudCAoUXN5bWJvbF93aXRoX3Bvc19wLCBh KTsKLSAgcmV0dXJuIFhTWU1CT0xfV0lUSF9QT1MgKGEpLT5zeW07Ci19Ci0KLUlOTElORSBM aXNwX09iamVjdAotU1lNQk9MX1dJVEhfUE9TX1BPUyAoTGlzcF9PYmplY3QgYSkKLXsKLSAg aWYgKCFTWU1CT0xfV0lUSF9QT1NfUCAoYSkpCi0gICAgd3JvbmdfdHlwZV9hcmd1bWVudCAo UXN5bWJvbF93aXRoX3Bvc19wLCBhKTsKLSAgcmV0dXJuIFhTWU1CT0xfV0lUSF9QT1MgKGEp LT5wb3M7Ci19Ci0KIElOTElORSBib29sCiBVU0VSX1BUUlAgKExpc3BfT2JqZWN0IHgpCiB7 CmRpZmYgLS1naXQgYS9zcmMvcGR1bXBlci5jIGIvc3JjL3BkdW1wZXIuYwppbmRleCA1OTIz ZDliMWQ4Li44NzIxOWM5N2VkIDEwMDY0NAotLS0gYS9zcmMvcGR1bXBlci5jCisrKyBiL3Ny Yy9wZHVtcGVyLmMKQEAgLTI0MTIsNyArMjQxMiw3IEBAIGR1bXBfc3ltYm9sIChzdHJ1Y3Qg ZHVtcF9jb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgTGlzcF9PYmplY3Qgb2JqZWN0LAog ICAgICAgICAgICAgIGR1bXBfb2ZmIG9mZnNldCkKIHsKLSNpZiBDSEVDS19TVFJVQ1RTICYm ICFkZWZpbmVkIEhBU0hfTGlzcF9TeW1ib2xfOTk5REMyNkRFQworI2lmIENIRUNLX1NUUlVD VFMgJiYgIWRlZmluZWQgSEFTSF9MaXNwX1N5bWJvbF83ODI1QTUxMDk1CiAjIGVycm9yICJM aXNwX1N5bWJvbCBjaGFuZ2VkLiBTZWUgQ0hFQ0tfU1RSVUNUUyBjb21tZW50IGluIGNvbmZp Zy5oLiIKICNlbmRpZgogI2lmIENIRUNLX1NUUlVDVFMgJiYgIWRlZmluZWQgKEhBU0hfc3lt Ym9sX3JlZGlyZWN0X0FEQjRGNUIxMTMpCkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBkdW1wX3N5 bWJvbCAoc3RydWN0IGR1bXBfY29udGV4dCAqY3R4LAogICAgICAgcmV0dXJuIG9mZnNldDsK ICAgICB9CiAKLSAgc3RydWN0IExpc3BfU3ltYm9sICpzeW1ib2wgPSBYU1lNQk9MIChvYmpl Y3QpOworICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bWJvbCA9IFhCQVJFX1NZTUJPTCAob2Jq ZWN0KTsKICAgc3RydWN0IExpc3BfU3ltYm9sIG91dDsKICAgZHVtcF9vYmplY3Rfc3RhcnQg KGN0eCwgJm91dCwgc2l6ZW9mIChvdXQpKTsKICAgZWFzc2VydCAoc3ltYm9sLT51LnMuZ2Nt YXJrYml0ID09IDApOwpAQCAtMjQ1MCw2ICsyNDUwLDggQEAgZHVtcF9zeW1ib2wgKHN0cnVj dCBkdW1wX2NvbnRleHQgKmN0eCwKICAgRFVNUF9GSUVMRF9DT1BZICgmb3V0LCBzeW1ib2ws IHUucy5pbnRlcm5lZCk7CiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMu ZGVjbGFyZWRfc3BlY2lhbCk7CiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1 LnMucGlubmVkKTsKKyAgZHVtcF9maWVsZF9sdl9yYXdwdHIgKGN0eCwgJm91dCwgc3ltYm9s LCAmc3ltYm9sLT51LnMuc3ltLCBMaXNwX1N5bWJvbCwKKwkJCVdFSUdIVF9OT1JNQUwpOwog ICBkdW1wX2ZpZWxkX2x2IChjdHgsICZvdXQsIHN5bWJvbCwgJnN5bWJvbC0+dS5zLm5hbWUs IFdFSUdIVF9TVFJPTkcpOwogICBzd2l0Y2ggKHN5bWJvbC0+dS5zLnJlZGlyZWN0KQogICAg IHsKQEAgLTI5NDksNyArMjk1MSw3IEBAIGR1bXBfdmVjdG9ybGlrZSAoc3RydWN0IGR1bXBf Y29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICBMaXNwX09iamVjdCBsdiwKICAgICAg ICAgICAgICAgICAgZHVtcF9vZmYgb2Zmc2V0KQogewotI2lmIENIRUNLX1NUUlVDVFMgJiYg IWRlZmluZWQgSEFTSF9wdmVjX3R5cGVfQUZGNkZFRDVCRAorI2lmIENIRUNLX1NUUlVDVFMg JiYgIWRlZmluZWQgSEFTSF9wdmVjX3R5cGVfMTlGNkNGNTE2OQogIyBlcnJvciAicHZlY190 eXBlIGNoYW5nZWQuIFNlZSBDSEVDS19TVFJVQ1RTIGNvbW1lbnQgaW4gY29uZmlnLmguIgog I2VuZGlmCiAgIGNvbnN0IHN0cnVjdCBMaXNwX1ZlY3RvciAqdiA9IFhWRUNUT1IgKGx2KTsK QEAgLTMwMzMsOCArMzAzNSw2IEBAIGR1bXBfdmVjdG9ybGlrZSAoc3RydWN0IGR1bXBfY29u dGV4dCAqY3R4LAogICAgICAgZXJyb3JfdW5zdXBwb3J0ZWRfZHVtcF9vYmplY3QgKGN0eCwg bHYsICJzcWxpdGUiKTsKICAgICBjYXNlIFBWRUNfTU9EVUxFX0ZVTkNUSU9OOgogICAgICAg ZXJyb3JfdW5zdXBwb3J0ZWRfZHVtcF9vYmplY3QgKGN0eCwgbHYsICJtb2R1bGUgZnVuY3Rp b24iKTsKLSAgICBjYXNlIFBWRUNfU1lNQk9MX1dJVEhfUE9TOgotICAgICAgZXJyb3JfdW5z dXBwb3J0ZWRfZHVtcF9vYmplY3QgKGN0eCwgbHYsICJzeW1ib2wgd2l0aCBwb3MiKTsKICAg ICBkZWZhdWx0OgogICAgICAgZXJyb3JfdW5zdXBwb3J0ZWRfZHVtcF9vYmplY3QoY3R4LCBs diwgIndlaXJkIHBzZXVkb3ZlY3RvciIpOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9wcmlu dC5jIGIvc3JjL3ByaW50LmMKaW5kZXggZDc1ODMyODJiNi4uZWRkMDQ2YjYyOSAxMDA2NDQK LS0tIGEvc3JjL3ByaW50LmMKKysrIGIvc3JjL3ByaW50LmMKQEAgLTE2NjYsMzAgKzE2NjYs NiBAQCBwcmludF92ZWN0b3JsaWtlIChMaXNwX09iamVjdCBvYmosIExpc3BfT2JqZWN0IHBy aW50Y2hhcmZ1biwgYm9vbCBlc2NhcGVmbGFnLAogICAgICAgcHJpbnRjaGFyICgnPicsIHBy aW50Y2hhcmZ1bik7CiAgICAgICBicmVhazsKIAotICAgIGNhc2UgUFZFQ19TWU1CT0xfV0lU SF9QT1M6Ci0gICAgICB7Ci0gICAgICAgIHN0cnVjdCBMaXNwX1N5bWJvbF9XaXRoX1BvcyAq c3AgPSBYU1lNQk9MX1dJVEhfUE9TIChvYmopOwotICAgICAgICBpZiAocHJpbnRfc3ltYm9s c19iYXJlKQotICAgICAgICAgIHByaW50X29iamVjdCAoc3AtPnN5bSwgcHJpbnRjaGFyZnVu LCBlc2NhcGVmbGFnKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAg IHByaW50X2Nfc3RyaW5nICgiIzxzeW1ib2wgIiwgcHJpbnRjaGFyZnVuKTsKLSAgICAgICAg ICAgIGlmIChCQVJFX1NZTUJPTF9QIChzcC0+c3ltKSkKLSAgICAgICAgICAgICAgcHJpbnRf b2JqZWN0IChzcC0+c3ltLCBwcmludGNoYXJmdW4sIGVzY2FwZWZsYWcpOwotICAgICAgICAg ICAgZWxzZQotICAgICAgICAgICAgICBwcmludF9jX3N0cmluZyAoIk5PVCBBIFNZTUJPTCEh IiwgcHJpbnRjaGFyZnVuKTsKLSAgICAgICAgICAgIGlmIChGSVhOVU1QIChzcC0+cG9zKSkK LSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHByaW50X2Nfc3RyaW5nICgiIGF0 ICIsIHByaW50Y2hhcmZ1bik7Ci0gICAgICAgICAgICAgICAgcHJpbnRfb2JqZWN0IChzcC0+ cG9zLCBwcmludGNoYXJmdW4sIGVzY2FwZWZsYWcpOwotICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHByaW50X2Nfc3RyaW5nICgiIE5PVCBBIFBP U0lUSU9OISEiLCBwcmludGNoYXJmdW4pOwotICAgICAgICAgICAgcHJpbnRjaGFyICgnPics IHByaW50Y2hhcmZ1bik7Ci0gICAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0K ICAgICBjYXNlIFBWRUNfT1ZFUkxBWToKICAgICAgIHByaW50X2Nfc3RyaW5nICgiIzxvdmVy bGF5ICIsIHByaW50Y2hhcmZ1bik7CiAgICAgICBpZiAoISBYTUFSS0VSIChPVkVSTEFZX1NU QVJUIChvYmopKS0+YnVmZmVyKQpAQCAtMjE5MCw2ICsyMTY2LDkgQEAgcHJpbnRfb2JqZWN0 IChMaXNwX09iamVjdCBvYmosIExpc3BfT2JqZWN0IHByaW50Y2hhcmZ1biwgYm9vbCBlc2Nh cGVmbGFnKQogCiAgICAgY2FzZSBMaXNwX1N5bWJvbDoKICAgICAgIHsKKwlpZiAoIXByaW50 X3N5bWJvbHNfYmFyZSAmJiBTWU1CT0xfSEFTX1BPUyAob2JqKSkKKwkgIHByaW50X2Nfc3Ry aW5nICgiIzxzeW1ib2wgIiwgcHJpbnRjaGFyZnVuKTsKKwogCUxpc3BfT2JqZWN0IG5hbWUg PSBTWU1CT0xfTkFNRSAob2JqKTsKIAlwdHJkaWZmX3Qgc2l6ZV9ieXRlID0gU0JZVEVTIChu YW1lKTsKIApAQCAtMjIxMSwxMCArMjE5MCw3IEBAIHByaW50X29iamVjdCAoTGlzcF9PYmpl Y3Qgb2JqLCBMaXNwX09iamVjdCBwcmludGNoYXJmdW4sIGJvb2wgZXNjYXBlZmxhZykKIAkg ICAgJiYgIVNZTUJPTF9JTlRFUk5FRF9JTl9JTklUSUFMX09CQVJSQVlfUCAob2JqKSkKIAkg IHByaW50X2Nfc3RyaW5nICgiIzoiLCBwcmludGNoYXJmdW4pOwogCWVsc2UgaWYgKHNpemVf Ynl0ZSA9PSAwKQotCSAgewotCSAgICBwcmludF9jX3N0cmluZyAoIiMjIiwgcHJpbnRjaGFy ZnVuKTsKLQkgICAgYnJlYWs7Ci0JICB9CisJICBwcmludF9jX3N0cmluZyAoIiMjIiwgcHJp bnRjaGFyZnVuKTsKIAogCXB0cmRpZmZfdCBpID0gMDsKIAlmb3IgKHB0cmRpZmZfdCBpX2J5 dGUgPSAwOyBpX2J5dGUgPCBzaXplX2J5dGU7ICkKQEAgLTIyMzksNiArMjIxNSwxMyBAQCBw cmludF9vYmplY3QgKExpc3BfT2JqZWN0IG9iaiwgTGlzcF9PYmplY3QgcHJpbnRjaGFyZnVu LCBib29sIGVzY2FwZWZsYWcpCiAJICAgICAgfQogCSAgICBwcmludGNoYXIgKGMsIHByaW50 Y2hhcmZ1bik7CiAJICB9CisKKwlpZiAoIXByaW50X3N5bWJvbHNfYmFyZSAmJiBTWU1CT0xf SEFTX1BPUyAob2JqKSkKKwkgIHsKKwkgICAgcHJpbnRfY19zdHJpbmcgKCIgYXQgIiwgcHJp bnRjaGFyZnVuKTsKKwkgICAgcHJpbnRfb2JqZWN0IChTWU1CT0xfV0lUSF9QT1NfUE9TIChv YmopLCBwcmludGNoYXJmdW4sIGVzY2FwZWZsYWcpOworCSAgICBwcmludGNoYXIgKCc+Jywg cHJpbnRjaGFyZnVuKTsKKwkgIH0KICAgICAgIH0KICAgICAgIGJyZWFrOwogCi0tIAoyLjM1 LjMKCg== --------------xBRccH2fCdTPMnhb0RWzxg98--