From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id jKfpD3jy6l91XAAAWB0awg (envelope-from ) for ; Tue, 29 Dec 2020 04:10:16 -0500 Received: by simark.ca (Postfix, from userid 112) id 328AB1F0AA; Tue, 29 Dec 2020 04:10:16 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=FORGED_MUA_MOZILLA, FREEMAIL_FROM,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id BF7291E965 for ; Tue, 29 Dec 2020 04:10:14 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1AB3F38350A5; Tue, 29 Dec 2020 09:10:14 +0000 (GMT) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2026.outbound.protection.outlook.com [40.92.91.26]) by sourceware.org (Postfix) with ESMTPS id 64C51386F411 for ; Tue, 29 Dec 2020 09:10:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 64C51386F411 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=hotmail.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bernd.edlinger@hotmail.de ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nE8G/mFxt4jSn9xCOEGLqbaBlSoeC4ob1+kiHZLgwizVY0hL8JBReJ+IkU6q3fmg1SAI8CZJGWKb4yOVXT9ae7VomYJx6pvJev+FbTt5xlgxswbwb3uahTQMCgtKfseI3uixm3z8EK5iZDPs65oLZB3slqYHIxVqyKKQ+UL2g5xef+DDBvR/nRucjOt0u0v/fUfwHaekooabF0TeIPp3zOLrgu/BQy9fWOOC4X+Dkoj6Hs9RtFCrS8McHiFjAf+c3Nx231sottlBgnaTcSx2nBxcMerY7TftiJ505d8IcwQ2gURaTmher3DRAhc62b1exXNpDKhn09jbayAF7AjR7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7bnPseRKHxClpS0SZbuHKD8oKWo/N3b44Jgv/Io8VUI=; b=GDZeRGD4W36SFSIDAjvy07btzZzClBBWezSWsQ1F9nFOnTZhzyLomBwMYWggWn7UWhCOGvvMm4m91uezrIL3kuw4fBXPZgOJ3YATu5DZ/z5SFeUn5VEequFcWBa39TQg4i2pP75JggLk6i2bWkVaBzJ+lkjz5l2MTVBc5fRvsbsPcHE+II04yq2yVJvT6o5YTicMVKTLH12sOuT06bH6wdrQDJ3AlmQ6flA0altXDWHvik3PvN/1+kBRJz9ldrqAKyy3hi9PKXBa6jjjAtDUWZOeBNzwYV/QIFePeqopSrYvOuGSJmpiohzc694zL6Q2F7DoOszy0Xi6LGJhYPgBNg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from AM6EUR05FT057.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc11::52) by AM6EUR05HT062.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc11::194) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27; Tue, 29 Dec 2020 09:10:06 +0000 Received: from AM0PR0602MB3410.eurprd06.prod.outlook.com (2a01:111:e400:fc11::46) by AM6EUR05FT057.mail.protection.outlook.com (2a01:111:e400:fc11::78) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27 via Frontend Transport; Tue, 29 Dec 2020 09:10:06 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:528174DA910E79C696E0CCDDFCC16441576346E27D7EFB609E87C0F67B1D1EFC; UpperCasedChecksum:16AA12BACC1AA44D2513FF47C6BF8DE1F478412948EC28C8F7940CE447AE69DF; SizeAsReceived:7897; Count:44 Received: from AM0PR0602MB3410.eurprd06.prod.outlook.com ([fe80::60c8:86c2:bdaa:f0d2]) by AM0PR0602MB3410.eurprd06.prod.outlook.com ([fe80::60c8:86c2:bdaa:f0d2%3]) with mapi id 15.20.3721.019; Tue, 29 Dec 2020 09:10:06 +0000 From: Bernd Edlinger Subject: [PATCH v5] Fix range end handling of inlined subroutines To: "gdb-patches@sourceware.org" , Andrew Burgess , Simon Marchi , Joel Brobecker , Tom Tromey , Pedro Alves , Eli Zaretskii Message-ID: Date: Tue, 29 Dec 2020 10:10:04 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Content-Type: multipart/mixed; boundary="------------5F48E69991E6CC0A7F491723" Content-Language: en-US X-TMN: [VL09dJ8TaJd5A7XzpCNqw90RcJmvNfZR] X-ClientProxiedBy: AM4PR0902CA0009.eurprd09.prod.outlook.com (2603:10a6:200:9b::19) To AM0PR0602MB3410.eurprd06.prod.outlook.com (2603:10a6:208:21::24) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.101] (88.68.3.2) by AM4PR0902CA0009.eurprd09.prod.outlook.com (2603:10a6:200:9b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27 via Frontend Transport; Tue, 29 Dec 2020 09:10:05 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 44 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 20e44fc5-5482-4718-28c6-08d8abd988cc X-MS-TrafficTypeDiagnostic: AM6EUR05HT062: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CkpmMlfzaN9yzoJ12USpQPB36WSF1gsHm7EGOisTKLy07WFCC8Wzhm1zG8lmclod+e0wmLUgcE8ZhYU3CUmnYBFfiDpgJ9v3U+J+FRBC+T72DBoPvjGuR4ZKi9Z9LEDoU1XgrmUBkPxaa2zTE2auyw1Ni/E1cn4LzQ49D0/8kHCYiUn2LTBLmLxuX7lRy85tmbUb487gatxdh3Z15O21NsBVwDi+kUTTKLzASQlbGBSwQC2wt4is19u/PDe4nHtnAGP3o3s/tkNHvRziLHHa2kEXPCC+32h7eJNQgJ9HIq8= X-MS-Exchange-AntiSpam-MessageData: PGG5Bka9nz/yLLaAAYXu6BjbtJUPuTaBqW3jUw/1ysyydI+5h0x7pHMlO8Acz3Ahg2/4ml12AlwNxO2EMf7VFnDu5pyKkuyEwUexbt/mB+hslJgdq3rWcC0U9wY08solC/5Py2ycxi3xtVlUodmyIw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Dec 2020 09:10:06.3659 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-Network-Message-Id: 20e44fc5-5482-4718-28c6-08d8abd988cc X-MS-Exchange-CrossTenant-AuthSource: AM6EUR05FT057.eop-eur05.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6EUR05HT062 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" --------------5F48E69991E6CC0A7F491723 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Hi, this is a minor update to the previous version here: https://sourceware.org/pipermail/gdb-patches/2020-November/173614.html The only real change is here: --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -429,7 +429,10 @@ struct block * { m_inline_end_vector.push_back (end_inclusive + 1); if (end_inclusive + 1 == start) - end_inclusive = start; + { + end_inclusive = start; + m_pending_addrmap_interesting = true; + } } if (m_pending_addrmap == nullptr) The test case with an empty inline that triggered this is from PR 25987. It is a real-world code that triggers both an empty inline function and the wrong call-stack immediately after the inline. So I added this test case as well. So this fixes PR 25987 as well as a lot of issues with debugging inlined functions in general. Thanks Bernd. --------------5F48E69991E6CC0A7F491723 Content-Type: text/x-patch; name="0001-Fix-range-end-handling-of-inlined-subroutines.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Fix-range-end-handling-of-inlined-subroutines.patch" RnJvbSAzYzM0NWFiNWY3YzQ5NzE1MWQyMTk0NWNiYTg2NjhlOTFkYjAwZTdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFp bC5kZT4KRGF0ZTogVHVlLCAzIE5vdiAyMDIwIDE4OjQxOjQzICswMTAwClN1YmplY3Q6IFtQQVRD SF0gRml4IHJhbmdlIGVuZCBoYW5kbGluZyBvZiBpbmxpbmVkIHN1YnJvdXRpbmVzCgpUaGlzIGlu dHJvZHVjZXMgYSBuZXcgbGluZSB0YWJsZSBmbGFnIGlzX3dlYWsuClRoZSBsaW5lIGVudHJpZXMg YXQgdGhlIGVuZCBvZiBhIHN1YnJvdXRpbmUgcmFuZ2UsCnVzZSB0aGlzIHRvIGluZGljYXRlIHRo YXQgdGhleSBtYXkgcG9zc2libHkKYmUgcGFydCBvZiB0aGUgcHJldmlvdXMgc3Vicm91dGluZS4K CldoZW4gdGhlcmUgaXMgYSBzZXF1ZW5jZSBvZiBsaW5lIGVudHJpZXMgYXQgdGhlCnNhbWUgYWRk cmVzcyB3aGVyZSBhbiBpbmxpbmUgcmFuZ2UgZW5kcywgYW5kIHRoZQpsYXN0IGl0ZW0gaGFzIGlz X3N0bXQgPSAwLCB3ZSBmb3JjZSBhbGwgcHJldmlvdXMKaXRlbXMgdG8gaGF2ZSBpc193ZWFrID0g MS4KClRoaXMgaXMgYWJvdXQgdGhlIGJlc3Qgd2UgY2FuIGRvIGF0IHRoZSBtb21lbnQsCnVubGVz cyBsb2NhdGlvbiB2aWV3IGluZm9ybWF0aW9uIGFyZSBhZGRlZCB0byB0aGUKYmxvY2sgcmFuZ2Vz IGRlYnVnIGluZm8gc3RydWN0dXJlLCBhbmQgbG9jYXRpb24Kdmlld3MgYXJlIGltcGxlbWVudGVk IGluIGdkYiBpbiBnZW5lcmFsLgoKZ2RiOgoyMDIwLTEyLTI4ICBCZXJuZCBFZGxpbmdlciAgPGJl cm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+CgoJKiBibG9jay5jIChibG9ja3ZlY3Rvcl9mb3JfcGNf c2VjdCk6IEZvciB3ZWFrIGxpbmUgdGFibGUgdmFsdWVzLAoJdXNlIHRoZSBpbmxpbmUgZnJhbWUg YXQgUEMgLSAxIGlmIGl0IGlzIGRlZXBlci4KCSogYnVpbGRzeW0uYyAoYnVpbGRzeW1fY29tcHVu aXQ6OnJlY29yZF9ibG9ja19yYW5nZSk6IFN0b3JlIGlubGluZQoJcmFuZ2UgZW5kIFBDIHZhbHVl cy4gIE1ha2UgZW1wdHkgaW5saW5lIHJhbmdlcyBvbmUgYnl0ZSBsb25nLgoJKGJ1aWxkc3ltX2Nv bXB1bml0OjpyZWNvcmRfbGluZSk6IERlbGV0ZSBwcmV2aW91cyBsaW5lcwoJYXQgdGhlIHNhbWUg UEMgYXMgdGhlIGVuZCBzZXF1ZW5jZSBtYXJrZXIsCglidXQgb25seSBtYXJrIHRoZW0gYXMgd2Vh ayBmb3IgYSBmYWtlIGVuZCBzZXF1ZW5jZSBtYXJrZXIuCgkoYnVpbGRzeW1fY29tcHVuaXQ6OnBh dGNoX2lubGluZV9lbmRfcG9zKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KCShidWlsZHN5bV9jb21w dW5pdDo6ZW5kX3N5bXRhYl93aXRoX2Jsb2NrdmVjdG9yKTogUGF0Y2ggbGluZSB0YWJsZS4KCSog YnVpbGRzeW0uaCAoYnVpbGRzeW1fY29tcHVuaXQ6Om1faW5saW5lX2VuZF92ZWN0b3IpOiBOZXcg ZGF0YSBpdGVtLgoJKiBkd2FyZjIvcmVhZC5jIChkd2FyZjJfcm5nbGlzdHNfcHJvY2VzcywKCWR3 YXJmMl9yYW5nZXNfcHJvY2Vzcyk6IERvbid0IGlnbm9yZSBlbXB0eSByYW5nZXMgaGVyZS4KCShk d2FyZjJfcmFuZ2VzX3JlYWQpOiBJZ25vcmUgZW1wdHkgcmFuZ2VzIGhlcmUuCgkoZHdhcmYyX2dl dF9wY19ib3VuZHMpOiBBbGxvdyBlbXB0eSBpbmxpbmVkIHN1YnJvdXRpbmVzLgoJKHBhcnRpYWxf ZGllX2luZm86OnJlYWQpOiBMaWtld2lzZS4KCShkd2FyZjJfcmVjb3JkX2Jsb2NrX3Jhbmdlcyk6 IE1vdmUgcmFuZ2UgYmVnaW5uaW5nIGF0IERXX0FUX2VudHJ5X3BjCgl0byB0aGUgZmlyc3QgYmxv Y2sgcmFuZ2UuCgkoZHdhcmZfZmluaXNoX2xpbmUpOiBBZGQgbmV3IHBhcmFtZXRlciBlbmRfc2Vx dWVuY2UuCgkobG5wX3N0YXRlX21hY2hpbmU6Om1fbGFzdF9maWxlLCBsbnBfc3RhdGVfbWFjaGlu ZTo6bV9sYXN0X2FkZHJlc3MsCglsbnBfc3RhdGVfbWFjaGluZTo6bV9zdG10X2F0X2FkZHJlc3Mp OiBSZW1vdmUgZGF0YSBpdGVtcy4KCShsbnBfc3RhdGVfbWFjaGluZTo6cmVjb3JkX2xpbmUpOiBE byBub3QgZmlsdGVyIGxpbmUgZW50cmllcyBoZXJlLAoJZXhjZXB0IGZvciBsaW5lID09IDAuICBQ YXNzIGVuZF9zZXF1ZW5jZSB0byBkd2FyZl9maW5pc2hfbGluZS4KCSogaW5mcnVuLmMgKHByb2Nl c3NfZXZlbnRfc3RvcF90ZXN0KTogRG9uJ3Qgc3RvcCBpbiAhaXNfc3RtdCBsaW5lcwoJd2hlbiBz dGVwcGluZyBpbnRvIGlubGluZXMuICBEb24ndCBzdG9wIGF0IHRoZSBjYWxsIHNpdGUgYWdhaW4s IHdoZW4KCXN0ZXBwaW5nIHdpdGhpbiBpbmxpbmVkIHN1YnJvdXRpbmVzIHdpdGggbXVsdGlwbGUg cmFuZ2VzLgoJRG9uJ3QgcmVmcmVzaCB0aGUgc3RlcCBpbmZvIHRoZSB3aGVuIGV4ZWN1dGluZyAh aXNfc3RtdCBsaW5lcyBvZgoJb2YgYSBkaWZmZXJlbnQgaW5saW5lZCBzdWJyb3V0aW5lLgoJKiBq aXQuYyAoaml0X3N5bXRhYl9saW5lX21hcHBpbmdfYWRkX2ltcGwpOiBJbml0aWFsaXplIGlzX3dl YWsuCgkqIHN5bW1pc2MuYyAoZHVtcF9zeW10YWJfMSwKCW1haW50ZW5hbmNlX3ByaW50X29uZV9s aW5lX3RhYmxlKTogSGFuZGxlIGlzX3dlYWsuCgkqIHN5bXRhYi5jIChmaW5kX3BjX3NlY3RfbGlu ZSk6IEhhbmRsZSBpc193ZWFrLgoJKiBzeW10YWIuaCAobGluZXRhYmxlX2VudHJ5Ojppc193ZWFr LAoJc3ltdGFiX2FuZF9saW5lOjppc193ZWFrKTogTmV3IGRhdGEgaXRlbXMuCgkqIHhjb2ZmcmVh ZC5jIChhcnJhbmdlX2xpbmV0YWJsZSk6IEluaXRpYWxpemUgaXNfd2Vhay4KCmdkYi90ZXN0c3Vp dGU6CjIwMjAtMTItMjggIEJlcm5kIEVkbGluZ2VyICA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5k ZT4KCgkqIGdkYi5iYXNlL2VtcHR5LWlubGluZS5leHA6IE5ldyB0ZXN0LgoJKiBnZGIuYmFzZS9l bXB0eS1pbmxpbmUuYzogTmV3IHRlc3QuCgkqIGdkYi5jcC9lbXB0eS1pbmxpbmUuZXhwOiBOZXcg dGVzdC4KCSogZ2RiLmNwL2VtcHR5LWlubGluZS5jYzogTmV3IHRlc3QuCgkqIGdkYi5jcC9zdGVw LWFuZC1uZXh0LWlubGluZS5leHA6IFJlbW92ZSBLRkFJTHMsIGVuaGFuY2UgdGVzdC4KCSogZ2Ri LmNwL3N0ZXAtYW5kLW5leHQtaW5saW5lLmNjOiBXb3JrIGFyb3VuZCBmYWlsdXJlIHdpdGgKCWdj Yy05LjMuMCBmcm9tIHVidW50dSAyMC4wNC4KCSogZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLWJhc2Uu ZXhwOiBBZGp1c3QgdGVzdCwgaGFuZGxlIFdFQUsuCi0tLQogZ2RiL2Jsb2NrLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICsrKy0KIGdkYi9idWlsZHN5bS5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrLS0t LQogZ2RiL2J1aWxkc3ltLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK IGdkYi9kd2FyZjIvcmVhZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5OCArKysr KysrKystLS0tLS0tLS0tLS0tLS0KIGdkYi9pbmZydW4uYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAzMyArKysrKysrKy0KIGdkYi9qaXQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBnZGIvc3ltbWlzYy5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTAgKystCiBnZGIvc3ltdGFiLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTggKystLS0KIGdkYi9zeW10YWIuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNCArCiBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2VtcHR5LWlu bGluZS5jICAgICAgICAgfCAgNDIgKysrKysrKysrKysKIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv ZW1wdHktaW5saW5lLmV4cCAgICAgICB8ICA0OCArKysrKysrKysrKysKIGdkYi90ZXN0c3VpdGUv Z2RiLmNwL2VtcHR5LWlubGluZS5jYyAgICAgICAgICB8ICAzMyArKysrKysrKysKIGdkYi90ZXN0 c3VpdGUvZ2RiLmNwL2VtcHR5LWlubGluZS5leHAgICAgICAgICB8ICA1MSArKysrKysrKysrKysr CiBnZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGVwLWFuZC1uZXh0LWlubGluZS5jYyAgfCAgIDYgKysK IGdkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAtYW5kLW5leHQtaW5saW5lLmV4cCB8ICA5NSArKysr KysrKysrKysrKystLS0tLS0tLS0KIGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2Vz LWJhc2UuZXhwICB8ICAgNiArLQogZ2RiL3hjb2ZmcmVhZC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIDE3IGZpbGVzIGNoYW5nZWQsIDQzNiBpbnNlcnRpb25zKCspLCAx MzEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9lbXB0eS1pbmxpbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZW1wdHktaW5saW5lLmV4cAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2Ri LmNwL2VtcHR5LWlubGluZS5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2Ri LmNwL2VtcHR5LWlubGluZS5leHAKCmRpZmYgLS1naXQgYS9nZGIvYmxvY2suYyBiL2dkYi9ibG9j ay5jCmluZGV4IGZjNmJmYjkuLjZmNjA0NGIgMTAwNjQ0Ci0tLSBhL2dkYi9ibG9jay5jCisrKyBi L2dkYi9ibG9jay5jCkBAIC0yMDUsNyArMjA1LDIwIEBAIHN0cnVjdCBzeW1ib2wgKgogICAgIHJl dHVybiBOVUxMOwogCiAgIGlmIChwYmxvY2spCi0gICAgKnBibG9jayA9IGI7CisgICAgeworICAg ICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwgPSBmaW5kX3BjX3NlY3RfbGluZSAocGMsIHNl Y3Rpb24sIDApOworICAgICAgaWYgKHNhbC5saW5lICE9IDAgJiYgc2FsLnBjID09IHBjICYmIHNh bC5pc193ZWFrKQorCXsKKwkgIGNvbnN0IHN0cnVjdCBibG9jayAqYjIgPSBmaW5kX2Jsb2NrX2lu X2Jsb2NrdmVjdG9yIChibCwgcGMgLSAxKTsKKwkgIGNvbnN0IHN0cnVjdCBibG9jayAqYjAgPSBi OworCSAgd2hpbGUgKEJMT0NLX1NVUEVSQkxPQ0sgKGIwKSAmJiAhQkxPQ0tfRlVOQ1RJT04gKGIw KSkKKwkgICAgYjAgPSBCTE9DS19TVVBFUkJMT0NLIChiMCk7CisJICBpZiAoY29udGFpbmVkX2lu IChiMiwgYjApKQorCSAgICBiID0gYjI7CisJfQorICAgICAgKnBibG9jayA9IGI7CisgICAgfQor CiAgIHJldHVybiBibDsKIH0KIApkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkc3ltLmMgYi9nZGIvYnVp bGRzeW0uYwppbmRleCA5NTI1OTYyLi42ZTc1NWUxIDEwMDY0NAotLS0gYS9nZGIvYnVpbGRzeW0u YworKysgYi9nZGIvYnVpbGRzeW0uYwpAQCAtNDI1LDYgKzQyNSwxNiBAQCBzdHJ1Y3QgYmxvY2sg KgogICAgICAgfHwgZW5kX2luY2x1c2l2ZSArIDEgIT0gQkxPQ0tfRU5EIChibG9jaykpCiAgICAg bV9wZW5kaW5nX2FkZHJtYXBfaW50ZXJlc3RpbmcgPSB0cnVlOwogCisgIGlmIChibG9ja19pbmxp bmVkX3AgKGJsb2NrKSkKKyAgICB7CisgICAgICBtX2lubGluZV9lbmRfdmVjdG9yLnB1c2hfYmFj ayAoZW5kX2luY2x1c2l2ZSArIDEpOworICAgICAgaWYgKGVuZF9pbmNsdXNpdmUgKyAxID09IHN0 YXJ0KQorCXsKKwkgIGVuZF9pbmNsdXNpdmUgPSBzdGFydDsKKwkgIG1fcGVuZGluZ19hZGRybWFw X2ludGVyZXN0aW5nID0gdHJ1ZTsKKwl9CisgICAgfQorCiAgIGlmIChtX3BlbmRpbmdfYWRkcm1h cCA9PSBudWxscHRyKQogICAgIG1fcGVuZGluZ19hZGRybWFwID0gYWRkcm1hcF9jcmVhdGVfbXV0 YWJsZSAoJm1fcGVuZGluZ19hZGRybWFwX29ic3RhY2spOwogCkBAIC02OTIsMTkgKzcwMiwxNiBA QCBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKgogCQkgICAgICAqIHNpemVvZiAoc3RydWN0IGxpbmV0YWJs ZV9lbnRyeSkpKSk7CiAgICAgfQogCi0gIC8qIE5vcm1hbGx5LCB3ZSB0cmVhdCBsaW5lcyBhcyB1 bnNvcnRlZC4gIEJ1dCB0aGUgZW5kIG9mIHNlcXVlbmNlCi0gICAgIG1hcmtlciBpcyBzcGVjaWFs LiAgV2Ugc29ydCBsaW5lIG1hcmtlcnMgYXQgdGhlIHNhbWUgUEMgYnkgbGluZQotICAgICBudW1i ZXIsIHNvIGVuZCBvZiBzZXF1ZW5jZSBtYXJrZXJzICh3aGljaCBoYXZlIGxpbmUgPT0gMCkgYXBw ZWFyCi0gICAgIGZpcnN0LiAgVGhpcyBpcyByaWdodCBpZiB0aGUgbWFya2VyIGVuZHMgdGhlIHBy ZXZpb3VzIGZ1bmN0aW9uLAotICAgICBhbmQgdGhlcmUgaXMgbm8gcGFkZGluZyBiZWZvcmUgdGhl IG5leHQgZnVuY3Rpb24uICBCdXQgaXQgaXMKLSAgICAgd3JvbmcgaWYgdGhlIHByZXZpb3VzIGxp bmUgd2FzIGVtcHR5IGFuZCB3ZSBhcmUgbm93IG1hcmtpbmcgYQotICAgICBzd2l0Y2ggdG8gYSBk aWZmZXJlbnQgc3ViZmlsZS4gIFdlIG11c3QgbGVhdmUgdGhlIGVuZCBvZiBzZXF1ZW5jZQotICAg ICBtYXJrZXIgYXQgdGhlIGVuZCBvZiB0aGlzIGdyb3VwIG9mIGxpbmVzLCBub3Qgc29ydCB0aGUg ZW1wdHkgbGluZQotICAgICB0byBhZnRlciB0aGUgbWFya2VyLiAgVGhlIGVhc2llc3Qgd2F5IHRv IGFjY29tcGxpc2ggdGhpcyBpcyB0bwotICAgICBkZWxldGUgYW55IGVtcHR5IGxpbmVzIGZyb20g b3VyIHRhYmxlLCBpZiB0aGV5IGFyZSBmb2xsb3dlZCBieQotICAgICBlbmQgb2Ygc2VxdWVuY2Ug bWFya2Vycy4gIEFsbCB3ZSBsb3NlIGlzIHRoZSBhYmlsaXR5IHRvIHNldAotICAgICBicmVha3Bv aW50cyBhdCBzb21lIGxpbmVzIHdoaWNoIGNvbnRhaW4gbm8gaW5zdHJ1Y3Rpb25zCi0gICAgIGFu eXdheS4gICovCisgIC8qIFRoZSBlbmQgb2Ygc2VxdWVuY2UgbWFya2VyIGlzIHNwZWNpYWwuICBX ZSBuZWVkIHRvIGRlbGV0ZSBhbnkKKyAgICAgcHJldmlvdXMgbGluZXMgYXQgdGhlIHNhbWUgUEMs IG90aGVyd2lzZSB0aGVzZSBsaW5lcyBtYXkgY2F1c2UKKyAgICAgcHJvYmxlbXMgc2luY2UgdGhl eSBtaWdodCBiZSBhdCB0aGUgc2FtZSBhZGRyZXNzIGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgZnVu Y3Rpb24uICBGb3IgaW5zdGFuY2Ugc3VwcG9zZSBhIGZ1bmN0aW9uIGNhbGxzIGFib3J0IHRoZXJl IGlzIG5vCisgICAgIHJlYXNvbiB0byBlbWl0IGEgcmV0IGFmdGVyIHRoYXQgcG9pbnQgKG5vIGpv a2UpLgorICAgICBTbyB0aGUgbGFiZWwgbWF5IGJlIGF0IHRoZSBzYW1lIGFkZHJlc3Mgd2hlcmUg dGhlIGZvbGxvd2luZworICAgICBmdW5jdGlvbiBiZWdpbnMuICBUaGVyZSBpcyBhbHNvIGEgZmFr ZSBlbmQgb2Ygc2VxdWVuY2UgbWFya2VyICgtMSkKKyAgICAgdGhhdCB3ZSBlbWl0IGludGVybmFs bHkgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQ1VzCisgICAgIEluIHRoaXMgY2Fz ZSwgZHVwbGljYXRlIGxpbmUgdGFibGUgZW50cmllcyBzaGFsbCBub3QgYmUgZGVsZXRlZC4KKyAg ICAgV2Ugc2ltcGx5IHNldCB0aGUgaXNfd2VhayBtYXJrZXIgaW4gdGhpcyBjYXNlLiAgKi8KICAg aWYgKGxpbmUgPT0gMCkKICAgICB7CiAgICAgICB3aGlsZSAoc3ViZmlsZS0+bGluZV92ZWN0b3It Pm5pdGVtcyA+IDApCkBAIC03MTUsMTQgKzcyMiw4MCBAQCBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKgog CSAgc3ViZmlsZS0+bGluZV92ZWN0b3ItPm5pdGVtcy0tOwogCX0KICAgICB9CisgIGVsc2UgaWYg KGxpbmUgPT0gLTEpCisgICAgeworICAgICAgbGluZSA9IDA7CisgICAgICBlID0gc3ViZmlsZS0+ bGluZV92ZWN0b3ItPml0ZW0gKyBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+bml0ZW1zOworICAgICAg d2hpbGUgKGUgPiBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+aXRlbSkKKwl7CisJICBlLS07CisJICBp ZiAoZS0+cGMgIT0gcGMpCisJICAgIGJyZWFrOworCSAgZS0+aXNfd2VhayA9IDE7CisJfQorICAg IH0KIAogICBlID0gc3ViZmlsZS0+bGluZV92ZWN0b3ItPml0ZW0gKyBzdWJmaWxlLT5saW5lX3Zl Y3Rvci0+bml0ZW1zKys7CiAgIGUtPmxpbmUgPSBsaW5lOwogICBlLT5pc19zdG10ID0gaXNfc3Rt dCA/IDEgOiAwOworICBlLT5pc193ZWFrID0gMDsKICAgZS0+cGMgPSBwYzsKIH0KIAogDAorLyog UGF0Y2ggdGhlIGlzX3N0bXQgYml0cyBhdCB0aGUgZ2l2ZW4gaW5saW5lIGVuZCBhZGRyZXNzLgor ICAgVGhlIGxpbmUgdGFibGUgaGFzIHRvIGJlIGFscmVhZHkgc29ydGVkLiAgKi8KKworc3RhdGlj IHZvaWQKK3BhdGNoX2lubGluZV9lbmRfcG9zIChzdHJ1Y3QgbGluZXRhYmxlICp0YWJsZSwgQ09S RV9BRERSIGVuZCkKK3sKKyAgaW50IGEgPSAyLCBiID0gdGFibGUtPm5pdGVtcyAtIDE7CisgIHN0 cnVjdCBsaW5ldGFibGVfZW50cnkgKml0ZW1zID0gdGFibGUtPml0ZW07CisKKyAgLyogV2UgbmVl ZCBhdCBsZWFzdCB0d28gaXRlbXMgd2l0aCBwYyA9IGVuZCBpbiB0aGUgdGFibGUuCisgICAgIFRo ZSBsb3dlc3QgdXNhYmxlIGl0ZW1zIGFyZSBhdCBwb3MgMCBhbmQgMSwgdGhlIGhpZ2hlc3QKKyAg ICAgdXNhYmxlIGl0ZW1zIGFyZSBhdCBwb3MgYiAtIDIgYW5kIGIgLSAxLiAgKi8KKyAgaWYgKGEg PiBiIHx8IGVuZCA8IGl0ZW1zWzFdLnBjIHx8IGVuZCA+IGl0ZW1zW2IgLSAyXS5wYykKKyAgICBy ZXR1cm47CisKKyAgLyogTG9vayBmb3IgdGhlIGZpcnN0IGl0ZW0gd2l0aCBwYyA+IGVuZCBpbiB0 aGUgcmFuZ2UgW2EsYl0uCisgICAgIFRoZSBwcmV2aW91cyBlbGVtZW50IGhhcyBwYyA9IGVuZCBv ciB0aGVyZSBpcyBubyBtYXRjaC4KKyAgICAgV2Ugc2V0IGEgPSAyLCBzaW5jZSB3ZSBuZWVkIGF0 IGxlYXN0IHR3byBjb25zZWN1dGl2ZSBlbGVtZW50cworICAgICB3aXRoIHBjID0gZW5kIHRvIGRv IGFueXRoaW5nIHVzZWZ1bC4KKyAgICAgV2Ugc2V0IGIgPSBuaXRlbXMgLSAxLCBzaW5jZSB3ZSBh cmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIGxhc3QKKyAgICAgZWxlbWVudCB3aGljaCBzaG91bGQg YmUgYW4gZW5kIG9mIHNlcXVlbmNlIG1hcmtlciB3aXRoIGxpbmUgPSAwCisgICAgIGFuZCBpc19z dG10ID0gMS4gICovCisgIHdoaWxlIChhIDwgYikKKyAgICB7CisgICAgICBpbnQgYyA9IChhICsg YikgLyAyOworCisgICAgICBpZiAoZW5kIDwgaXRlbXNbY10ucGMpCisJYiA9IGM7CisgICAgICBl bHNlCisJYSA9IGMgKyAxOworICAgIH0KKworICBhLS07CisgIGlmIChpdGVtc1thXS5wYyAhPSBl bmQgfHwgaXRlbXNbYV0uaXNfc3RtdCkKKyAgICByZXR1cm47CisKKyAgLyogV2hlbiB0aGVyZSBp cyBhIHNlcXVlbmNlIG9mIGxpbmUgZW50cmllcyBhdCB0aGUgc2FtZSBhZGRyZXNzCisgICAgIHdo ZXJlIGFuIGlubGluZSByYW5nZSBlbmRzLCBhbmQgdGhlIGxhc3QgaXRlbSBoYXMgaXNfc3RtdCA9 IDAsCisgICAgIHdlIGZvcmNlIGFsbCBwcmV2aW91cyBpdGVtcyB0byBoYXZlIGlzX3dlYWsgPSAx IGFzIHdlbGwuICAqLworICBkbworICAgIHsKKyAgICAgIC8qIFdlIHN0b3AgYXQgdGhlIGZpcnN0 IGxpbmUgZW50cnkgd2l0aCBhIGRpZmZlcmVudCBhZGRyZXNzLAorCSBvciB3aGVuIHdlIHNlZSBh biBlbmQgb2Ygc2VxdWVuY2UgbWFya2VyLiAgKi8KKyAgICAgIGEtLTsKKyAgICAgIGlmIChpdGVt c1thXS5wYyAhPSBlbmQgfHwgaXRlbXNbYV0ubGluZSA9PSAwKQorCWJyZWFrOworCisgICAgICBp dGVtc1thXS5pc193ZWFrID0gMTsKKyAgICB9CisgIHdoaWxlIChhID4gMCk7Cit9CisKKwwKIC8q IFN1YnJvdXRpbmUgb2YgZW5kX3N5bXRhYiB0byBzaW1wbGlmeSBpdC4gIExvb2sgZm9yIGEgc3Vi ZmlsZSB0aGF0CiAgICBtYXRjaGVzIHRoZSBtYWluIHNvdXJjZSBmaWxlJ3MgYmFzZW5hbWUuICBJ ZiB0aGVyZSBpcyBvbmx5IG9uZSwgYW5kCiAgICBpZiB0aGUgbWFpbiBzb3VyY2UgZmlsZSBkb2Vz bid0IGhhdmUgYW55IHN5bWJvbCBvciBsaW5lIG51bWJlcgpAQCAtOTYwLDYgKzEwMzMsMTAgQEAg c3RydWN0IGNvbXB1bml0X3N5bXRhYiAqCiAJCQkgICAgICBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+ aXRlbQogCQkJICAgICAgKyBzdWJmaWxlLT5saW5lX3ZlY3Rvci0+bml0ZW1zLAogCQkJICAgICAg bHRlX2lzX2xlc3NfdGhhbik7CisKKwkgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9pbmxpbmVfZW5k X3ZlY3Rvci5zaXplICgpOyBpKyspCisJICAgIHBhdGNoX2lubGluZV9lbmRfcG9zIChzdWJmaWxl LT5saW5lX3ZlY3RvciwKKwkJCQkgIG1faW5saW5lX2VuZF92ZWN0b3JbaV0pOwogCX0KIAogICAg ICAgLyogQWxsb2NhdGUgYSBzeW1ib2wgdGFibGUgaWYgbmVjZXNzYXJ5LiAgKi8KZGlmZiAtLWdp dCBhL2dkYi9idWlsZHN5bS5oIGIvZ2RiL2J1aWxkc3ltLmgKaW5kZXggYzc2OGE0Yy4uNGZiZTQ1 YiAxMDA2NDQKLS0tIGEvZ2RiL2J1aWxkc3ltLmgKKysrIGIvZ2RiL2J1aWxkc3ltLmgKQEAgLTM5 Nyw2ICszOTcsOSBAQCBzdHJ1Y3QgYnVpbGRzeW1fY29tcHVuaXQKIAogICAvKiBQZW5kaW5nIHN5 bWJvbHMgdGhhdCBhcmUgbG9jYWwgdG8gdGhlIGxleGljYWwgY29udGV4dC4gICovCiAgIHN0cnVj dCBwZW5kaW5nICptX2xvY2FsX3N5bWJvbHMgPSBudWxscHRyOworCisgIC8qIFBlbmRpbmcgaW5s aW5lIGVuZCByYW5nZSBhZGRyZXNzZXMuICAqLworICBzdGQ6OnZlY3RvcjxDT1JFX0FERFI+IG1f aW5saW5lX2VuZF92ZWN0b3I7CiB9OwogCiAMCmRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQu YyBiL2dkYi9kd2FyZjIvcmVhZC5jCmluZGV4IGVkNDVkNzAuLmJiMDUwZTYgMTAwNjQ0Ci0tLSBh L2dkYi9kd2FyZjIvcmVhZC5jCisrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCkBAIC0xNDQwMiwxMCAr MTQ0MDIsNiBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogCSAgcmV0dXJuIGZhbHNlOwogCX0K IAotICAgICAgLyogRW1wdHkgcmFuZ2UgZW50cmllcyBoYXZlIG5vIGVmZmVjdC4gICovCi0gICAg ICBpZiAocmFuZ2VfYmVnaW5uaW5nID09IHJhbmdlX2VuZCkKLQljb250aW51ZTsKLQogICAgICAg LyogT25seSBEV19STEVfb2Zmc2V0X3BhaXIgbmVlZHMgdGhlIGJhc2UgYWRkcmVzcyBhZGRlZC4g ICovCiAgICAgICBpZiAocmxldCA9PSBEV19STEVfb2Zmc2V0X3BhaXIpCiAJewpAQCAtMTQ1MjQs MTAgKzE0NTIwLDYgQEAgY2xhc3MgcHJvY2Vzc19kaWVfc2NvcGUKIAkgIHJldHVybiAwOwogCX0K IAotICAgICAgLyogRW1wdHkgcmFuZ2UgZW50cmllcyBoYXZlIG5vIGVmZmVjdC4gICovCi0gICAg ICBpZiAocmFuZ2VfYmVnaW5uaW5nID09IHJhbmdlX2VuZCkKLQljb250aW51ZTsKLQogICAgICAg cmFuZ2VfYmVnaW5uaW5nICs9ICpiYXNlOwogICAgICAgcmFuZ2VfZW5kICs9ICpiYXNlOwogCkBA IC0xNDU2Nyw2ICsxNDU1OSwxMCBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogICByZXR2YWwg PSBkd2FyZjJfcmFuZ2VzX3Byb2Nlc3MgKG9mZnNldCwgY3UsIHRhZywKICAgICBbJl0gKENPUkVf QUREUiByYW5nZV9iZWdpbm5pbmcsIENPUkVfQUREUiByYW5nZV9lbmQpCiAgICAgeworICAgICAg LyogRW1wdHkgcmFuZ2UgZW50cmllcyBoYXZlIG5vIGVmZmVjdC4gICovCisgICAgICBpZiAocmFu Z2VfYmVnaW5uaW5nID09IHJhbmdlX2VuZCkKKwlyZXR1cm47CisKICAgICAgIGlmIChyYW5nZXNf cHN0ICE9IE5VTEwpCiAJewogCSAgQ09SRV9BRERSIGxvd3BjOwpAQCAtMTQ2ODEsOCArMTQ2Nzcs OCBAQCBjbGFzcyBwcm9jZXNzX2RpZV9zY29wZQogCXJldHVybiBQQ19CT1VORFNfTk9UX1BSRVNF TlQ7CiAgICAgfQogCi0gIC8qIHBhcnRpYWxfZGllX2luZm86OnJlYWQgaGFzIGFsc28gdGhlIHN0 cmljdCBMT1cgPCBISUdIIHJlcXVpcmVtZW50LiAgKi8KLSAgaWYgKGhpZ2ggPD0gbG93KQorICAv KiBwYXJ0aWFsX2RpZV9pbmZvOjpyZWFkIGhhcyBhbHNvIHRoZSBzYW1lIGxvdyA8IGhpZ2ggcmVx dWlyZW1lbnQuICAqLworICBpZiAobG93ID4gaGlnaCB8fCAobG93ID09IGhpZ2ggJiYgZGllLT50 YWcgIT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSkpCiAgICAgcmV0dXJuIFBDX0JPVU5EU19J TlZBTElEOwogCiAgIC8qIFdoZW4gdXNpbmcgdGhlIEdOVSBsaW5rZXIsIC5nbnUubGlua29uY2Uu IHNlY3Rpb25zIGFyZSB1c2VkIHRvCkBAIC0xNDg0OCw2ICsxNDg0NCwxOCBAQCBjbGFzcyBwcm9j ZXNzX2RpZV9zY29wZQogICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAoYXR0ci0+YXNfdW5z aWduZWQgKCkKIAkJCSAgICAgICsgKG5lZWRfcmFuZ2VzX2Jhc2UgPyBjdS0+cmFuZ2VzX2Jhc2Ug OiAwKSk7CiAKKyAgICAgIENPUkVfQUREUiBlbnRyeV9wYyA9IChDT1JFX0FERFIpIC0xOworICAg ICAgaWYgKGRpZS0+dGFnID09IERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpCisJeworCSAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2VudHJ5X3BjLCBjdSk7CisJICBpZiAoYXR0ciAh PSBudWxscHRyKQorCSAgICB7CisJICAgICAgZW50cnlfcGMgPSBhdHRyLT5hc19hZGRyZXNzICgp OworCSAgICAgIGVudHJ5X3BjICs9IGJhc2VhZGRyOworCSAgICAgIGVudHJ5X3BjID0gZ2RiYXJj aF9hZGp1c3RfZHdhcmYyX2FkZHIgKGdkYmFyY2gsIGVudHJ5X3BjKTsKKwkgICAgfQorCX0KKwog ICAgICAgc3RkOjp2ZWN0b3I8YmxvY2tyYW5nZT4gYmxvY2t2ZWM7CiAgICAgICBkd2FyZjJfcmFu Z2VzX3Byb2Nlc3MgKG9mZnNldCwgY3UsIGRpZS0+dGFnLAogCVsmXSAoQ09SRV9BRERSIHN0YXJ0 LCBDT1JFX0FERFIgZW5kKQpAQCAtMTQ4NTgsNiArMTQ4NjYsOCBAQCBjbGFzcyBwcm9jZXNzX2Rp ZV9zY29wZQogCSAgZW5kID0gZ2RiYXJjaF9hZGp1c3RfZHdhcmYyX2FkZHIgKGdkYmFyY2gsIGVu ZCk7CiAJICBjdS0+Z2V0X2J1aWxkZXIgKCktPnJlY29yZF9ibG9ja19yYW5nZSAoYmxvY2ssIHN0 YXJ0LCBlbmQgLSAxKTsKIAkgIGJsb2NrdmVjLmVtcGxhY2VfYmFjayAoc3RhcnQsIGVuZCk7CisJ ICBpZiAoZW50cnlfcGMgPT0gc3RhcnQgJiYgYmxvY2t2ZWMuc2l6ZSAoKSA+IDEpCisJICAgIHN0 ZDo6c3dhcCAoYmxvY2t2ZWNbMF0sIGJsb2NrdmVjW2Jsb2NrdmVjLnNpemUgKCkgLSAxXSk7CiAJ fSk7CiAKICAgICAgIEJMT0NLX1JBTkdFUyhibG9jaykgPSBtYWtlX2Jsb2NrcmFuZ2VzIChvYmpm aWxlLCBibG9ja3ZlYyk7CkBAIC0xOTg1NSw4ICsxOTg2NSw5IEBAIHN0cnVjdCB0eXBlICoKIAkJ ICAgICBzZWN0X29mZnNldF9zdHIgKHNlY3Rfb2ZmKSwKIAkJICAgICBvYmpmaWxlX25hbWUgKG9i amZpbGUpKTsKIAl9Ci0gICAgICAvKiBkd2FyZjJfZ2V0X3BjX2JvdW5kcyBoYXMgYWxzbyB0aGUg c3RyaWN0IGxvdyA8IGhpZ2ggcmVxdWlyZW1lbnQuICAqLwotICAgICAgZWxzZSBpZiAobG93cGMg Pj0gaGlnaHBjKQorICAgICAgLyogZHdhcmYyX2dldF9wY19ib3VuZHMgaGFzIGFsc28gdGhlIHNh bWUgbG93IDwgaGlnaCByZXF1aXJlbWVudC4gICovCisgICAgICBlbHNlIGlmIChsb3dwYyA+IGhp Z2hwYworCSAgICAgICB8fCAobG93cGMgPT0gaGlnaHBjICYmIHRhZyAhPSBEV19UQUdfaW5saW5l ZF9zdWJyb3V0aW5lKSkKIAl7CiAJICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9vYmpm aWxlLT5vYmpmaWxlOwogCSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBvYmpmaWxlLT5hcmNo ICgpOwpAQCAtMjEyNjQsMjEgKzIxMjc1LDkgQEAgY2xhc3MgbG5wX3N0YXRlX21hY2hpbmUKIAog ICAvKiBBZGRpdGlvbmFsIGJpdHMgb2Ygc3RhdGUgd2UgbmVlZCB0byB0cmFjay4gICovCiAKLSAg LyogVGhlIGxhc3QgZmlsZSB0aGF0IHdlIGNhbGxlZCBkd2FyZjJfc3RhcnRfc3ViZmlsZSBmb3Iu Ci0gICAgIFRoaXMgaXMgb25seSB1c2VkIGZvciBUTExzLiAgKi8KLSAgdW5zaWduZWQgaW50IG1f bGFzdF9maWxlID0gMDsKICAgLyogVGhlIGxhc3QgZmlsZSBhIGxpbmUgbnVtYmVyIHdhcyByZWNv cmRlZCBmb3IuICAqLwogICBzdHJ1Y3Qgc3ViZmlsZSAqbV9sYXN0X3N1YmZpbGUgPSBOVUxMOwog Ci0gIC8qIFRoZSBhZGRyZXNzIG9mIHRoZSBsYXN0IGxpbmUgZW50cnkuICAqLwotICBDT1JFX0FE RFIgbV9sYXN0X2FkZHJlc3M7Ci0KLSAgLyogU2V0IHRvIHRydWUgd2hlbiBhIHByZXZpb3VzIGxp bmUgYXQgdGhlIHNhbWUgYWRkcmVzcyAodXNpbmcKLSAgICAgbV9sYXN0X2FkZHJlc3MpIGhhZCBt X2lzX3N0bXQgdHJ1ZS4gIFRoaXMgaXMgcmVzZXQgdG8gZmFsc2Ugd2hlbiBhCi0gICAgIGxpbmUg ZW50cnkgYXQgYSBuZXcgYWRkcmVzcyAobV9hZGRyZXNzIGRpZmZlcmVudCB0byBtX2xhc3RfYWRk cmVzcykgaXMKLSAgICAgcHJvY2Vzc2VkLiAgKi8KLSAgYm9vbCBtX3N0bXRfYXRfYWRkcmVzcyA9 IGZhbHNlOwotCiAgIC8qIFdoZW4gdHJ1ZSwgcmVjb3JkIHRoZSBsaW5lcyB3ZSBkZWNvZGUuICAq LwogICBib29sIG1fY3VycmVudGx5X3JlY29yZGluZ19saW5lcyA9IGZhbHNlOwogCkBAIC0yMTQz MCw3ICsyMTQyOSw3IEBAIGNsYXNzIGxucF9zdGF0ZV9tYWNoaW5lCiAKIHN0YXRpYyB2b2lkCiBk d2FyZl9maW5pc2hfbGluZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBzdWJmaWxl ICpzdWJmaWxlLAotCQkgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisJCSAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgYm9vbCBlbmRf c2VxdWVuY2UpCiB7CiAgIGlmIChzdWJmaWxlID09IE5VTEwpCiAgICAgcmV0dXJuOwpAQCAtMjE0 NDMsNyArMjE0NDIsOCBAQCBjbGFzcyBsbnBfc3RhdGVfbWFjaGluZQogCQkJICBwYWRkcmVzcyAo Z2RiYXJjaCwgYWRkcmVzcykpOwogICAgIH0KIAotICBkd2FyZl9yZWNvcmRfbGluZV8xIChnZGJh cmNoLCBzdWJmaWxlLCAwLCBhZGRyZXNzLCB0cnVlLCBjdSk7CisgIGR3YXJmX3JlY29yZF9saW5l XzEgKGdkYmFyY2gsIHN1YmZpbGUsIGVuZF9zZXF1ZW5jZSA/IDAgOiAtMSwgYWRkcmVzcywKKwkJ ICAgICAgIHRydWUsIGN1KTsKIH0KIAogdm9pZApAQCAtMjE0NzAsMzcgKzIxNDcwLDE3IEBAIGNs YXNzIGxucF9zdGF0ZV9tYWNoaW5lCiAgIGVsc2UgaWYgKG1fb3BfaW5kZXggPT0gMCB8fCBlbmRf c2VxdWVuY2UpCiAgICAgewogICAgICAgZmUtPmluY2x1ZGVkX3AgPSAxOwotICAgICAgaWYgKG1f cmVjb3JkX2xpbmVzX3ApCi0JewotCSAgLyogV2hlbiB3ZSBzd2l0Y2ggZmlsZXMgd2UgaW5zZXJ0 IGFuIGVuZCBtYWtlciBpbiB0aGUgZmlyc3QgZmlsZSwKLQkgICAgIHN3aXRjaCB0byB0aGUgc2Vj b25kIGZpbGUgYW5kIGFkZCBhIG5ldyBsaW5lIGVudHJ5LiAgVGhlCi0JICAgICBwcm9ibGVtIGlz IHRoYXQgdGhlIGVuZCBtYXJrZXIgaW5zZXJ0ZWQgaW4gdGhlIGZpcnN0IGZpbGUgd2lsbAotCSAg ICAgZGlzY2FyZCBhbnkgcHJldmlvdXMgbGluZSBlbnRyaWVzIGF0IHRoZSBzYW1lIGFkZHJlc3Mu ICBJZiB0aGUKLQkgICAgIGxpbmUgZW50cmllcyBpbiB0aGUgZmlyc3QgZmlsZSBhcmUgbWFya2Vk IGFzIGlzLXN0bXQsIHdoaWxlCi0JICAgICB0aGUgbmV3IGxpbmUgaW4gdGhlIHNlY29uZCBmaWxl IGlzIG5vbi1zdG10LCB0aGVuIHRoaXMgbWVhbnMKLQkgICAgIHRoZSBlbmQgbWFya2VyIHdpbGwg ZGlzY2FyZCBpcy1zdG10IGxpbmVzIHNvIHdlIGNhbiBoYXZlIGEKLQkgICAgIG5vbi1zdG10IGxp bmUuICBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgYXJlIGxlc3MgYWRkcmVzc2VzIGF0Ci0JICAgICB3 aGljaCB0aGUgdXNlciBjYW4gaW5zZXJ0IGEgYnJlYWtwb2ludC4KLQotCSAgICAgVG8gaW1wcm92 ZSB0aGlzIHdlIHRyYWNrIHRoZSBsYXN0IGFkZHJlc3MgaW4gbV9sYXN0X2FkZHJlc3MsCi0JICAg ICBhbmQgd2hldGhlciB3ZSBoYXZlIHNlZW4gYW4gaXMtc3RtdCBhdCB0aGlzIGFkZHJlc3MuICBU aGVuCi0JICAgICB3aGVuIHN3aXRjaGluZyBmaWxlcywgaWYgd2UgaGF2ZSBzZWVuIGEgc3RtdCBh dCB0aGUgY3VycmVudAotCSAgICAgYWRkcmVzcywgYW5kIHdlIGFyZSBzd2l0Y2hpbmcgdG8gY3Jl YXRlIGEgbm9uLXN0bXQgbGluZSwgdGhlbgotCSAgICAgZGlzY2FyZCB0aGUgbmV3IGxpbmUuICAq LwotCSAgYm9vbCBmaWxlX2NoYW5nZWQKLQkgICAgPSBtX2xhc3Rfc3ViZmlsZSAhPSBtX2N1LT5n ZXRfYnVpbGRlciAoKS0+Z2V0X2N1cnJlbnRfc3ViZmlsZSAoKTsKLQkgIGJvb2wgaWdub3JlX3Ro aXNfbGluZQotCSAgID0gKChmaWxlX2NoYW5nZWQgJiYgIWVuZF9zZXF1ZW5jZSAmJiBtX2xhc3Rf YWRkcmVzcyA9PSBtX2FkZHJlc3MKLQkgICAgICAgJiYgIW1faXNfc3RtdCAmJiBtX3N0bXRfYXRf YWRkcmVzcykKLQkgICAgICB8fCAoIWVuZF9zZXF1ZW5jZSAmJiBtX2xpbmUgPT0gMCkpOwotCi0J ICBpZiAoKGZpbGVfY2hhbmdlZCAmJiAhaWdub3JlX3RoaXNfbGluZSkgfHwgZW5kX3NlcXVlbmNl KQorICAgICAgaWYgKG1fcmVjb3JkX2xpbmVzX3AgJiYgKGVuZF9zZXF1ZW5jZSB8fCBtX2xpbmUg IT0gMCkpCisJeworCSAgaWYgKG1fbGFzdF9zdWJmaWxlICE9IG1fY3UtPmdldF9idWlsZGVyICgp LT5nZXRfY3VycmVudF9zdWJmaWxlICgpCisJICAgICAgfHwgZW5kX3NlcXVlbmNlKQogCSAgICB7 CiAJICAgICAgZHdhcmZfZmluaXNoX2xpbmUgKG1fZ2RiYXJjaCwgbV9sYXN0X3N1YmZpbGUsIG1f YWRkcmVzcywKLQkJCQkgbV9jdXJyZW50bHlfcmVjb3JkaW5nX2xpbmVzID8gbV9jdSA6IG51bGxw dHIpOworCQkJCSBtX2N1cnJlbnRseV9yZWNvcmRpbmdfbGluZXMgPyBtX2N1IDogbnVsbHB0ciwK KwkJCQkgZW5kX3NlcXVlbmNlIHx8IG1faXNfc3RtdCk7CiAJICAgIH0KIAotCSAgaWYgKCFlbmRf c2VxdWVuY2UgJiYgIWlnbm9yZV90aGlzX2xpbmUpCisJICBpZiAoIWVuZF9zZXF1ZW5jZSkKIAkg ICAgewogCSAgICAgIGJvb2wgaXNfc3RtdCA9IHByb2R1Y2VyX2lzX2NvZGV3YXJyaW9yIChtX2N1 KSB8fCBtX2lzX3N0bXQ7CiAKQEAgLTIxNTE5LDE1ICsyMTQ5OSw2IEBAIGNsYXNzIGxucF9zdGF0 ZV9tYWNoaW5lCiAJICAgIH0KIAl9CiAgICAgfQotCi0gIC8qIFRyYWNrIHdoZXRoZXIgd2UgaGF2 ZSBzZWVuIGFueSBtX2lzX3N0bXQgdHJ1ZSBhdCBtX2FkZHJlc3MgaW4gY2FzZSB3ZQotICAgICBo YXZlIG11bHRpcGxlIGxpbmUgdGFibGUgZW50cmllcyBhbGwgYXQgbV9hZGRyZXNzLiAgKi8KLSAg aWYgKG1fbGFzdF9hZGRyZXNzICE9IG1fYWRkcmVzcykKLSAgICB7Ci0gICAgICBtX3N0bXRfYXRf YWRkcmVzcyA9IGZhbHNlOwotICAgICAgbV9sYXN0X2FkZHJlc3MgPSBtX2FkZHJlc3M7Ci0gICAg fQotICBtX3N0bXRfYXRfYWRkcmVzcyB8PSBtX2lzX3N0bXQ7CiB9CiAKIGxucF9zdGF0ZV9tYWNo aW5lOjpsbnBfc3RhdGVfbWFjaGluZSAoc3RydWN0IGR3YXJmMl9jdSAqY3UsIGdkYmFyY2ggKmFy Y2gsCkBAIC0yMTU0Nyw5ICsyMTUxOCw2IEBAIGNsYXNzIGxucF9zdGF0ZV9tYWNoaW5lCiAgIG1f YWRkcmVzcyA9IGdkYmFyY2hfYWRqdXN0X2R3YXJmMl9saW5lIChhcmNoLCAwLCAwKTsKICAgbV9p c19zdG10ID0gbGgtPmRlZmF1bHRfaXNfc3RtdDsKICAgbV9kaXNjcmltaW5hdG9yID0gMDsKLQot ICBtX2xhc3RfYWRkcmVzcyA9IG1fYWRkcmVzczsKLSAgbV9zdG10X2F0X2FkZHJlc3MgPSBmYWxz ZTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCmlu ZGV4IGY1MDk0ODEuLmIxNjA0MjcgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZydW4uYworKysgYi9nZGIv aW5mcnVuLmMKQEAgLTY5MzIsNiArNjkzMiwzMSBAQCBzdHJ1Y3Qgd2FpdF9vbmVfZXZlbnQKICAg ICAgIHJldHVybjsKICAgICB9CiAKKyAgLyogSGFuZGxlIHRoZSBjYXNlIHdoZW4gc3Vicm91dGlu ZXMgaGF2ZSBtdWx0aXBsZSByYW5nZXMuCisgICAgIFdoZW4gd2Ugc3RlcCBmcm9tIG9uZSBwYXJ0 IHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIHNhbWUgc3Vicm91dGluZSwKKyAgICAgYWxsIHN1YnJv dXRpbmUgbGV2ZWxzIGFyZSBza2lwcGVkIGFnYWluIHdoaWNoIGJlZ2luIGhlcmUuCisgICAgIENv bXBlbnNhdGUgZm9yIHRoaXMgYnkgcmVtb3ZpbmcgYWxsIHNraXBwZWQgc3Vicm91dGluZXMsCisg ICAgIHdoaWNoIHdlcmUgYWxyZWFkeSBleGVjdXRpbmcgZnJvbSB0aGUgdXNlcidzIHBlcnNwZWN0 aXZlLiAgKi8KKworICBpZiAoZnJhbWVfaWRfZXEgKGdldF9zdGFja19mcmFtZV9pZCAoZ2V0X2N1 cnJlbnRfZnJhbWUgKCkpLAorCQkgICBlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX3N0 YWNrX2ZyYW1lX2lkKQorICAgICAgJiYgaW5saW5lX3NraXBwZWRfZnJhbWVzIChlY3MtPmV2ZW50 X3RocmVhZCkKKyAgICAgICYmIGVjcy0+ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0ZXBfZnJhbWVf aWQuYXJ0aWZpY2lhbF9kZXB0aCA+IDAKKyAgICAgICYmIGVjcy0+ZXZlbnRfdGhyZWFkLT5jb250 cm9sLnN0ZXBfZnJhbWVfaWQuY29kZV9hZGRyX3ApCisgICAgeworICAgICAgY29uc3Qgc3RydWN0 IGJsb2NrICpwcmV2LCAqY3VycjsKKyAgICAgIGludCBkZXB0aCA9IDA7CisgICAgICBwcmV2ID0g YmxvY2tfZm9yX3BjIChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX2ZyYW1lX2lkLmNv ZGVfYWRkcik7CisgICAgICBjdXJyID0gYmxvY2tfZm9yX3BjIChlY3MtPmV2ZW50X3RocmVhZC0+ c3VzcGVuZC5zdG9wX3BjKTsKKyAgICAgIHdoaWxlIChjdXJyICYmIGJsb2NrX2lubGluZWRfcCAo Y3VycikgJiYgIWNvbnRhaW5lZF9pbiAocHJldiwgY3VycikpCisJeworCSAgZGVwdGggKys7CisJ ICBjdXJyID0gQkxPQ0tfU1VQRVJCTE9DSyAoY3Vycik7CisJfQorICAgICAgd2hpbGUgKGlubGlu ZV9za2lwcGVkX2ZyYW1lcyAoZWNzLT5ldmVudF90aHJlYWQpID4gZGVwdGgpCisJc3RlcF9pbnRv X2lubGluZV9mcmFtZSAoZWNzLT5ldmVudF90aHJlYWQpOworICAgIH0KKwogICAvKiBMb29rIGZv ciAiY2FsbHMiIHRvIGlubGluZWQgZnVuY3Rpb25zLCBwYXJ0IG9uZS4gIElmIHRoZSBpbmxpbmUK ICAgICAgZnJhbWUgbWFjaGluZXJ5IGRldGVjdGVkIHNvbWUgc2tpcHBlZCBjYWxsIHNpdGVzLCB3 ZSBoYXZlIGVudGVyZWQKICAgICAgYSBuZXcgaW5saW5lIGZ1bmN0aW9uLiAgKi8KQEAgLTY5OTMs NiArNzAxOCw4IEBAIHN0cnVjdCB3YWl0X29uZV9ldmVudAogICAgICAgaW5mcnVuX2RlYnVnX3By aW50ZiAoInN0ZXBwaW5nIHRocm91Z2ggaW5saW5lZCBmdW5jdGlvbiIpOwogCiAgICAgICBpZiAo ZWNzLT5ldmVudF90aHJlYWQtPmNvbnRyb2wuc3RlcF9vdmVyX2NhbGxzID09IFNURVBfT1ZFUl9B TEwKKwkgIHx8IGVjcy0+ZXZlbnRfdGhyZWFkLT5zdXNwZW5kLnN0b3BfcGMgIT0gc3RvcF9wY19z YWwucGMKKwkgIHx8ICFzdG9wX3BjX3NhbC5pc19zdG10CiAJICB8fCBpbmxpbmVfZnJhbWVfaXNf bWFya2VkX2Zvcl9za2lwIChmYWxzZSwgZWNzLT5ldmVudF90aHJlYWQpKQogCWtlZXBfZ29pbmcg KGVjcyk7CiAgICAgICBlbHNlCkBAIC03MDE1LDggKzcwNDIsOCBAQCBzdHJ1Y3Qgd2FpdF9vbmVf ZXZlbnQKIAkgIGVuZF9zdGVwcGluZ19yYW5nZSAoZWNzKTsKIAkgIHJldHVybjsKIAl9Ci0gICAg ICBlbHNlIGlmIChmcmFtZV9pZF9lcSAoZ2V0X2ZyYW1lX2lkIChnZXRfY3VycmVudF9mcmFtZSAo KSksCi0JCQkgICAgZWNzLT5ldmVudF90aHJlYWQtPmNvbnRyb2wuc3RlcF9mcmFtZV9pZCkpCisg ICAgICBlbHNlIGlmIChmcmFtZV9pZF9lcSAoZ2V0X3N0YWNrX2ZyYW1lX2lkIChnZXRfY3VycmVu dF9mcmFtZSAoKSksCisJCQkgICAgZWNzLT5ldmVudF90aHJlYWQtPmNvbnRyb2wuc3RlcF9zdGFj a19mcmFtZV9pZCkpCiAJewogCSAgLyogV2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGRpZmZlcmVu dCBsaW5lLCBob3dldmVyLCB0aGlzIGxpbmUgaXMKIAkgICAgIG5vdCBtYXJrZWQgYXMgYSBzdGF0 ZW1lbnQsIGFuZCB3ZSBoYXZlIG5vdCBjaGFuZ2VkIGZyYW1lLiAgV2UKQEAgLTcwNDYsNyArNzA3 Myw3IEBAIHN0cnVjdCB3YWl0X29uZV9ldmVudAogICBlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJv bC5zdGVwX3JhbmdlX2VuZCA9IHN0b3BfcGNfc2FsLmVuZDsKICAgZWNzLT5ldmVudF90aHJlYWQt PmNvbnRyb2wubWF5X3JhbmdlX3N0ZXAgPSAxOwogICBpZiAocmVmcmVzaF9zdGVwX2luZm8pCi0g ICAgc2V0X3N0ZXBfaW5mbyAoZWNzLT5ldmVudF90aHJlYWQsIGZyYW1lLCBzdG9wX3BjX3NhbCk7 CisgICAgc2V0X3N0ZXBfaW5mbyAoZWNzLT5ldmVudF90aHJlYWQsIGdldF9jdXJyZW50X2ZyYW1l ICgpLCBzdG9wX3BjX3NhbCk7CiAKICAgaW5mcnVuX2RlYnVnX3ByaW50ZiAoImtlZXAgZ29pbmci KTsKICAga2VlcF9nb2luZyAoZWNzKTsKZGlmZiAtLWdpdCBhL2dkYi9qaXQuYyBiL2dkYi9qaXQu YwppbmRleCBlMzZiM2MzLi45NTJlMzA4IDEwMDY0NAotLS0gYS9nZGIvaml0LmMKKysrIGIvZ2Ri L2ppdC5jCkBAIC00MzgsNiArNDM4LDcgQEAgc3RydWN0IGdkYl9vYmplY3QKICAgICAgIHN0YWIt PmxpbmV0YWJsZS0+aXRlbVtpXS5wYyA9IChDT1JFX0FERFIpIG1hcFtpXS5wYzsKICAgICAgIHN0 YWItPmxpbmV0YWJsZS0+aXRlbVtpXS5saW5lID0gbWFwW2ldLmxpbmU7CiAgICAgICBzdGFiLT5s aW5ldGFibGUtPml0ZW1baV0uaXNfc3RtdCA9IDE7CisgICAgICBzdGFiLT5saW5ldGFibGUtPml0 ZW1baV0uaXNfd2VhayA9IDA7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5j IGIvZ2RiL3N5bW1pc2MuYwppbmRleCBhY2RiYWM2Li4wNmI1NDRkIDEwMDY0NAotLS0gYS9nZGIv c3ltbWlzYy5jCisrKyBiL2dkYi9zeW1taXNjLmMKQEAgLTMxOSw2ICszMTksOCBAQCBzdGF0aWMg dm9pZCBwcmludF9zeW1ib2wgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qgc3ltYm9s ICpzeW1ib2wsCiAJICBmcHV0c19maWx0ZXJlZCAocGFkZHJlc3MgKGdkYmFyY2gsIGwtPml0ZW1b aV0ucGMpLCBvdXRmaWxlKTsKIAkgIGlmIChsLT5pdGVtW2ldLmlzX3N0bXQpCiAJICAgIGZwcmlu dGZfZmlsdGVyZWQgKG91dGZpbGUsICJcdChzdG10KSIpOworCSAgaWYgKGwtPml0ZW1baV0uaXNf d2VhaykKKwkgICAgZnByaW50Zl9maWx0ZXJlZCAob3V0ZmlsZSwgIlx0KHdlYWspIik7CiAJICBm cHJpbnRmX2ZpbHRlcmVkIChvdXRmaWxlLCAiXG4iKTsKIAl9CiAgICAgfQpAQCAtMTAzOSwxMSAr MTA0MSwxMiBAQCBzdGF0aWMgdm9pZCBwcmludF9zeW1ib2wgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCiAgICAgICAvKiBMZWF2ZSBzcGFjZSBmb3IgNiBk aWdpdHMgb2YgaW5kZXggYW5kIGxpbmUgbnVtYmVyLiAgQWZ0ZXIgdGhhdCB0aGUKIAkgdGFibGVz IHdpbGwganVzdCBub3QgZm9ybWF0IGFzIHdlbGwuICAqLwogICAgICAgc3RydWN0IHVpX291dCAq dWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotICAgICAgdWlfb3V0X2VtaXRfdGFibGUgdGFibGVfZW1p dHRlciAodWlvdXQsIDQsIC0xLCAibGluZS10YWJsZSIpOworICAgICAgdWlfb3V0X2VtaXRfdGFi bGUgdGFibGVfZW1pdHRlciAodWlvdXQsIDUsIC0xLCAibGluZS10YWJsZSIpOwogICAgICAgdWlv dXQtPnRhYmxlX2hlYWRlciAoNiwgdWlfbGVmdCwgImluZGV4IiwgXygiSU5ERVgiKSk7CiAgICAg ICB1aW91dC0+dGFibGVfaGVhZGVyICg2LCB1aV9sZWZ0LCAibGluZSIsIF8oIkxJTkUiKSk7CiAg ICAgICB1aW91dC0+dGFibGVfaGVhZGVyICgxOCwgdWlfbGVmdCwgImFkZHJlc3MiLCBfKCJBRERS RVNTIikpOwotICAgICAgdWlvdXQtPnRhYmxlX2hlYWRlciAoMSwgdWlfbGVmdCwgImlzLXN0bXQi LCBfKCJJUy1TVE1UIikpOworICAgICAgdWlvdXQtPnRhYmxlX2hlYWRlciAoNCwgdWlfbGVmdCwg InN0bXQiLCBfKCJTVE1UIikpOworICAgICAgdWlvdXQtPnRhYmxlX2hlYWRlciAoNCwgdWlfbGVm dCwgIndlYWsiLCBfKCJXRUFLIikpOwogICAgICAgdWlvdXQtPnRhYmxlX2JvZHkgKCk7CiAKICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGluZXRhYmxlLT5uaXRlbXM7ICsraSkKQEAgLTEwNTks NyArMTA2Miw4IEBAIHN0YXRpYyB2b2lkIHByaW50X3N5bWJvbCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwKIAkgICAgdWlvdXQtPmZpZWxkX3N0cmluZyAo ImxpbmUiLCBfKCJFTkQiKSk7CiAJICB1aW91dC0+ZmllbGRfY29yZV9hZGRyICgiYWRkcmVzcyIs IG9iamZpbGUtPmFyY2ggKCksCiAJCQkJICBpdGVtLT5wYyk7Ci0JICB1aW91dC0+ZmllbGRfc3Ry aW5nICgiaXMtc3RtdCIsIGl0ZW0tPmlzX3N0bXQgPyAiWSIgOiAiIik7CisJICB1aW91dC0+Zmll bGRfc3RyaW5nICgic3RtdCIsIGl0ZW0tPmlzX3N0bXQgPyAiWSIgOiAiIik7CisJICB1aW91dC0+ ZmllbGRfc3RyaW5nICgid2VhayIsIGl0ZW0tPmlzX3dlYWsgPyAiWSIgOiAiIik7CiAJICB1aW91 dC0+dGV4dCAoIlxuIik7CiAJfQogICAgIH0KZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dk Yi9zeW10YWIuYwppbmRleCAwZDNmYTliLi43ZGExYWE1IDEwMDY0NAotLS0gYS9nZGIvc3ltdGFi LmMKKysrIGIvZ2RiL3N5bXRhYi5jCkBAIC0zMjkzLDcgKzMyOTMsMTEgQEAgc3RydWN0IHN5bXRh Yl9hbmRfbGluZQogCSBzYXZlIHByZXYgaWYgaXQgcmVwcmVzZW50cyB0aGUgZW5kIG9mIGEgZnVu Y3Rpb24gKGkuZS4gbGluZSBudW1iZXIKIAkgMCkgaW5zdGVhZCBvZiBhIHJlYWwgbGluZS4gICov CiAKLSAgICAgIGlmIChwcmV2ICYmIHByZXYtPmxpbmUgJiYgKCFiZXN0IHx8IHByZXYtPnBjID4g YmVzdC0+cGMpKQorICAgICAgaWYgKHByZXYgJiYgcHJldi0+bGluZSAmJiAoIWJlc3QgfHwgcHJl di0+cGMgPiBiZXN0LT5wYworCQkJCSAgICAgICB8fCAocHJldi0+cGMgPT0gYmVzdC0+cGMKKwkJ CQkJICAgJiYgKGJlc3QtPnBjID09IHBjCisJCQkJCSAgICAgICA/ICFiZXN0LT5pc19zdG10CisJ CQkJCSAgICAgICA6IGJlc3QtPmlzX3dlYWspKSkpCiAJewogCSAgYmVzdCA9IHByZXY7CiAJICBi ZXN0X3N5bXRhYiA9IGl0ZXJfczsKQEAgLTMzMTEsNyArMzMxNSw3IEBAIHN0cnVjdCBzeW10YWJf YW5kX2xpbmUKIAkgICAgICB3aGlsZSAodG1wID4gZmlyc3QgJiYgKHRtcCAtIDEpLT5wYyA9PSB0 bXAtPnBjCiAJCSAgICAgJiYgKHRtcCAtIDEpLT5saW5lICE9IDAgJiYgIXRtcC0+aXNfc3RtdCkK IAkJLS10bXA7Ci0JICAgICAgaWYgKHRtcC0+aXNfc3RtdCkKKwkgICAgICBpZiAodG1wLT5pc19z dG10ICYmICh0bXAtPnBjID09IHBjIHx8ICF0bXAtPmlzX3dlYWspKQogCQliZXN0ID0gdG1wOwog CSAgICB9CiAKQEAgLTMzMzQsMTggKzMzMzgsMTQgQEAgc3RydWN0IHN5bXRhYl9hbmRfbGluZQog CSBXZSB1c2VkIHRvIHJldHVybiBhbHQtPmxpbmUgLSAxIGhlcmUsIGJ1dCB0aGF0IGNvdWxkIGJl CiAJIGFueXdoZXJlOyBpZiB3ZSBkb24ndCBoYXZlIGxpbmUgbnVtYmVyIGluZm8gZm9yIHRoaXMg UEMsCiAJIGRvbid0IG1ha2Ugc29tZSB1cC4gICovCi0gICAgICB2YWwucGMgPSBwYzsKLSAgICB9 Ci0gIGVsc2UgaWYgKGJlc3QtPmxpbmUgPT0gMCkKLSAgICB7Ci0gICAgICAvKiBJZiBvdXIgYmVz dCBmaXQgaXMgaW4gYSByYW5nZSBvZiBQQydzIGZvciB3aGljaCBubyBsaW5lCi0JIG51bWJlciBp bmZvIGlzIGF2YWlsYWJsZSAobGluZSBudW1iZXIgaXMgemVybykgdGhlbiB3ZSBkaWRuJ3QKLQkg ZmluZCBhbnkgdmFsaWQgbGluZSBpbmZvcm1hdGlvbi4gICovCisgICAgICBpZiAobm90Y3VycmVu dCkKKwlwYysrOwogICAgICAgdmFsLnBjID0gcGM7CiAgICAgfQogICBlbHNlCiAgICAgewogICAg ICAgdmFsLmlzX3N0bXQgPSBiZXN0LT5pc19zdG10OworICAgICAgdmFsLmlzX3dlYWsgPSBiZXN0 LT5pc193ZWFrOwogICAgICAgdmFsLnN5bXRhYiA9IGJlc3Rfc3ltdGFiOwogICAgICAgdmFsLmxp bmUgPSBiZXN0LT5saW5lOwogICAgICAgdmFsLnBjID0gYmVzdC0+cGM7CmRpZmYgLS1naXQgYS9n ZGIvc3ltdGFiLmggYi9nZGIvc3ltdGFiLmgKaW5kZXggZGQ2N2Y4Ni4uMzU3ZGYyZiAxMDA2NDQK LS0tIGEvZ2RiL3N5bXRhYi5oCisrKyBiL2dkYi9zeW10YWIuaApAQCAtMTMxMSw2ICsxMzExLDgg QEAgc3RydWN0IGxpbmV0YWJsZV9lbnRyeQogCiAgIC8qIFRydWUgaWYgdGhpcyBQQyBpcyBhIGdv b2QgbG9jYXRpb24gdG8gcGxhY2UgYSBicmVha3BvaW50IGZvciBMSU5FLiAgKi8KICAgdW5zaWdu ZWQgaXNfc3RtdCA6IDE7CisgIC8qIFRydWUgaWYgdGhpcyBQQyBpcyBhdCBhIHN1YnJvdXRpbmUg cmFuZ2UgZW5kLiAgKi8KKyAgdW5zaWduZWQgaXNfd2VhayA6IDE7CiAKICAgLyogVGhlIGFkZHJl c3MgZm9yIHRoaXMgZW50cnkuICAqLwogICBDT1JFX0FERFIgcGM7CkBAIC0xODk2LDYgKzE4OTgs OCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lCiAgIC8qIElmIHRoZSBsaW5lIG51bWJlciBpbmZv cm1hdGlvbiBpcyB2YWxpZCwgdGhlbiB0aGlzIGluZGljYXRlcyBpZiB0aGlzCiAgICAgIGxpbmUg dGFibGUgZW50cnkgaGFkIHRoZSBpcy1zdG10IGZsYWcgc2V0IG9yIG5vdC4gICovCiAgIGJvb2wg aXNfc3RtdCA9IGZhbHNlOworICAvKiBUcnVlIGlmIHRoaXMgUEMgaXMgYXQgYSBzdWJyb3V0aW5l IHJhbmdlIGVuZC4gICovCisgIGJvb2wgaXNfd2VhayA9IGZhbHNlOwogCiAgIC8qIFRoZSBwcm9i ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzeW10YWJfYW5kX2xpbmUuICAqLwogICBwcm9iZSAqcHJv YiA9IE5VTEw7CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2VtcHR5LWlubGlu ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9lbXB0eS1pbmxpbmUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjAzYWYxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9lbXB0eS1pbmxpbmUuYwpAQCAtMCwwICsxLDQyIEBACisvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5cmln aHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKworc3RhdGljIGludCB0ZXN0MCAodm9pZCkKK3sKKyAgYXNtICgiIik7 CisgIHJldHVybiAxOyAvKiBsaW5lIDIxICovCit9CisKK2ludCBfX2F0dHJpYnV0ZV9fKChub2lu bGluZSwgbm9jbG9uZSkpCisjaWZkZWYgX19DRVRfXworICBfX2F0dHJpYnV0ZV9fKChub2NmX2No ZWNrKSkKKyNlbmRpZgordGVzdDEgKGludCB4KQoreworICBhc20gKCIiKTsKKyAgcmV0dXJuIHgr MTsgLyogbGluZSAzMSAqLworfQorCitpbnQKKyNpZmRlZiBfX0NFVF9fCisgIF9fYXR0cmlidXRl X18oKG5vY2ZfY2hlY2spKQorI2VuZGlmCittYWluKCkKK3sKKyAgdGVzdDEgKHRlc3QwICgpKTsg LyogbGluZSA0MCovCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9lbXB0eS1pbmxpbmUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9lbXB0eS1p bmxpbmUuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOTI1ZjUKLS0t IC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2VtcHR5LWlubGluZS5leHAK QEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworc3RhbmRhcmRfdGVzdGZpbGUgLmMKKwor aWYgW2dldF9jb21waWxlcl9pbmZvXSB7CisgICAgcmV0dXJuIC0xCit9CisKK2lmIHtbdGVzdF9j b21waWxlcl9pbmZvIGdjYypdICYmICFbc3VwcG9ydHNfc3RhdGVtZW50X2Zyb250aWVyc10gfSB7 CisgICAgcmV0dXJuIC0xCit9CisKK2dsb2JhbCBzcmNmaWxlIHRlc3RmaWxlCisKK3NldCBvcHRp b25zIHtkZWJ1ZyBub3dhcm5pbmdzIG9wdGltaXplPS1PMn0KK2lmIHsgW3N1cHBvcnRzX3N0YXRl bWVudF9mcm9udGllcnNdIH0geworICAgIGxhcHBlbmQgb3B0aW9ucyBhZGRpdGlvbmFsX2ZsYWdz PS1nc3RhdGVtZW50LWZyb250aWVycworfQorCitpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJm YWlsZWQgdG8gcHJlcGFyZSIgJGJpbmZpbGUgXAorICAgICAgJHNyY2ZpbGUgJG9wdGlvbnNdIH0g eworICAgIHJldHVybiAtMQorfQorCitpZiAhW3J1bnRvX21haW5dIHsKKyAgICBmYWlsICJjYW4n dCBydW4gdG8gbWFpbiIKKyAgICByZXR1cm4gLTEKK30KKworZ2RiX3Rlc3QgImZyYW1lIDAiICJc XHMqXFwjMFxccyttYWluLioke3NyY2ZpbGV9OjQwLioiICJpbiBtYWluIgorZ2RiX3Rlc3QgInN0 ZXAiICIuKnRlc3QwLioke3NyY2ZpbGV9OjIxLioiICJzdGVwIGludG8gdGVzdDAiCitnZGJfdGVz dCAiZnJhbWUgMSIgIlxccypcXCMxXFxzK21haW4uKiR7c3JjZmlsZX06NDAuKiIgImZyYW1lMSIK K2dkYl90ZXN0ICJzdGVwIiAiLip0ZXN0MS4qJHtzcmNmaWxlfTozMS4qIiAic3RlcCBpbnRvIHRl c3QxIgorZ2RiX3Rlc3QgImZyYW1lIDEiICJcXHMqXFwjMS4qaW4gbWFpbi4qJHtzcmNmaWxlfTo0 MC4qIiAiZnJhbWUyIgorZ2RiX3Rlc3QgInN0ZXAiICIuKm1haW4uKiR7c3JjZmlsZX06NDEuKiIg InN0ZXAgYmFjayB0byBtYWluIgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZW1w dHktaW5saW5lLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZW1wdHktaW5saW5lLmNjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMTExM2IKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9lbXB0eS1pbmxpbmUuY2MKQEAgLTAsMCArMSwzMyBAQAor LyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKworICAg Q29weXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIFBSIDI1OTg3ICovCitzdHJ1Y3QgTXlDbGFzczsK K3N0cnVjdCBwdHIgeworICAgIE15Q2xhc3MqIGdldCgpIHsgcmV0dXJuIHQ7IH0gICAgIC8qIGxp bmUgMjEgKi8KKyAgICBNeUNsYXNzKiB0OworfTsKK3N0cnVjdCBNeUNsYXNzIHsgdm9pZCBjYWxs KCk7IH07Cit2b2lkIE15Q2xhc3M6OmNhbGwoKSB7CisgICAgKih2b2xhdGlsZSBjaGFyKikobnVs bHB0cikgPSAxOyAgLyogbGluZSAyNiAqLworfQorc3RhdGljIHZvaWQgaW50ZXJtZWRpYXRlKHB0 ciBwKSB7CisgICAgcC5nZXQoKS0+Y2FsbCgpOyAgICAgICAgICAgICAgICAgLyogbGluZSAyOSAq LworfQoraW50IG1haW4oKSB7CisgICAgaW50ZXJtZWRpYXRlKHB0cntuZXcgTXlDbGFzc30pOwor fQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZW1wdHktaW5saW5lLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2VtcHR5LWlubGluZS5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZTY2NTMwZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2VtcHR5LWlubGluZS5leHAKQEAgLTAsMCArMSw1MSBAQAorIyBDb3B5cmlnaHQgMjAy MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwor IyBQUiAyNTk4Nworc3RhbmRhcmRfdGVzdGZpbGUgLmNjCisKK2lmIHtbc2tpcF9jcGx1c190ZXN0 c119IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYgeyFbc3VwcG9ydHNfc3RhdGVtZW50X2Zyb250 aWVyc10gfSB7CisgICAgcmV0dXJuIC0xCit9CisKKyMgQ29tcGlsZSB0aGUgdGVzdCBzb3VyY2Ug d2l0aCBVU0VfTkVYVF9JTkxJTkVfSCBkZWZpbmVkICh3aGVuCisjIHVzZV9oZWFkZXIgaXMgdHJ1 ZSksIG9yIG5vdCBkZWZpbmVkLgorc2V0IG9wdGlvbnMge2MrKyBkZWJ1ZyBub3dhcm5pbmdzIG9w dGltaXplPS1PZ30KK2xhcHBlbmQgb3B0aW9ucyBhZGRpdGlvbmFsX2ZsYWdzPS1nc3RhdGVtZW50 LWZyb250aWVycworaWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUi ICR0ZXN0ZmlsZSBcCisgICAgICAkc3JjZmlsZSAkb3B0aW9uc10gfSB7CisgICAgcmV0dXJuIC0x Cit9CisKK2lmICFbcnVudG9fbWFpbl0geworICAgIGZhaWwgImNhbid0IHJ1biB0byBtYWluIgor ICAgIHJldHVybgorfQorCitnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccyttYWluLioiICJpbiBt YWluIgorI2JyZWFrIGF0IHRoZSBlbXB0eSBpbmxpbmUgZnVuY3Rpb24gcHRyOjpnZXQKK2dkYl90 ZXN0ICJiIGdldCIgIi4qIiAiYnJlYWsgYXQgZ2V0IgorZ2RiX3Rlc3QgImMiICIuKiIgImNvbnRp bnVlIHRvIGdldCIKKyNjYWxsIGZyYW1lIDEgaXMgYXQgbGluZSAyOQorZ2RiX3Rlc3QgImJ0IiAi XFxzKlxcIzBcXHMrcHRyOjpnZXRcW15cclxdKiR7c3JjZmlsZX06MjFcW1xyXG5cXStcXHMqXFwj MVxccytpbnRlcm1lZGlhdGVcW15cclxdKiR7c3JjZmlsZX06MjlcW1xyXG5cXSsuKiIgImF0IGdl dCIKKyNwcmludCBhIGxvY2FsIHZhbHVlIGhlcmUKK2dkYl90ZXN0ICJwIHQiICIuKlxcXCQxID0g XFwoTXlDbGFzcyBcXCpcXCkgMHguKiIgInByaW50IHQiCitnZGJfdGVzdCAiYyIgIi4qU0lHU0VH Vi4qIiAiY29udGludWUgdG8gU0lHU0VHViIKKyNjYWxsIGZyYW1lIDEgaXMgYXQgbGluZSAyOQor Z2RiX3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrTXlDbGFzczo6Y2FsbFxbXlxyXF0qJHtzcmNmaWxl fToyNlxbXHJcblxdK1xccypcXCMxXFxzKzB4XFteXHJcXSoke3NyY2ZpbGV9OjI5XFtcclxuXF0r LioiICJhdCBjYWxsIgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQt bmV4dC1pbmxpbmUuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGVwLWFuZC1uZXh0LWlubGlu ZS5jYwppbmRleCBkOTIzY2M1Li42OThkY2Q3IDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9zdGVwLWFuZC1uZXh0LWlubGluZS5jYworKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9z dGVwLWFuZC1uZXh0LWlubGluZS5jYwpAQCAtNDYsNiArNDYsOSBAQCB0cmVlX2NoZWNrICh0cmVl ICp0LCBpbnQgaSkKICNlbmRpZgkvKiBVU0VfTkVYVF9JTkxJTkVfSCAqLwogCiBpbnQgX19hdHRy aWJ1dGVfXygobm9pbmxpbmUsIG5vY2xvbmUpKQorI2lmZGVmIF9fQ0VUX18KKyAgX19hdHRyaWJ1 dGVfXygobm9jZl9jaGVjaykpCisjZW5kaWYKIGdldF9hbGlhc19zZXQgKHRyZWUgKnQpCiB7CiAg IGlmICh0ICE9IE5VTEwKQEAgLTU5LDYgKzYyLDkgQEAgZ2V0X2FsaWFzX3NldCAodHJlZSAqdCkK IHRyZWUgeHg7CiAKIGludAorI2lmZGVmIF9fQ0VUX18KKyAgX19hdHRyaWJ1dGVfXygobm9jZl9j aGVjaykpCisjZW5kaWYKIG1haW4oKQogewogICBnZXRfYWxpYXNfc2V0ICgmeHgpOwpkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1pbmxpbmUuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1pbmxpbmUuZXhwCmluZGV4IDQzYTcxMDEu LjNkZmY3ZjAgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAtYW5kLW5leHQt aW5saW5lLmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGVwLWFuZC1uZXh0LWlubGlu ZS5leHAKQEAgLTI5LDE2ICsyOSw5IEBAIGlmIHtbdGVzdF9jb21waWxlcl9pbmZvIGdjYypdICYm ICFbc3VwcG9ydHNfc3RhdGVtZW50X2Zyb250aWVyc10gfSB7CiBwcm9jIGRvX3Rlc3QgeyB1c2Vf aGVhZGVyIH0gewogICAgIGdsb2JhbCBzcmNmaWxlIHRlc3RmaWxlCiAKLSAgICBpZiB7ICR1c2Vf aGVhZGVyIH0gewotCSMgVGhpcyB0ZXN0IHdpbGwgbm90IHBhc3MgZHVlIHRvIHBvb3IgZGVidWcg aW5mb3JtYXRpb24KLQkjIGdlbmVyYXRlZCBieSBHQ0MgKGF0IGxlYXN0IHVwdG8gMTAueCkuICBT ZWUKLQkjIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTk0NDc0 Ci0JcmV0dXJuCi0gICAgfQotCiAgICAgc2V0IG9wdGlvbnMge2MrKyBkZWJ1ZyBub3dhcm5pbmdz IG9wdGltaXplPS1PMn0KICAgICBpZiB7IFtzdXBwb3J0c19zdGF0ZW1lbnRfZnJvbnRpZXJzXSB9 IHsKLQlsYXBwZW5kIG9wdGlvbnMgLWdzdGF0ZW1lbnQtZnJvbnRpZXJzCisJbGFwcGVuZCBvcHRp b25zIGFkZGl0aW9uYWxfZmxhZ3M9LWdzdGF0ZW1lbnQtZnJvbnRpZXJzCiAgICAgfQogICAgIGlm IHsgJHVzZV9oZWFkZXIgfSB7CiAJbGFwcGVuZCBvcHRpb25zIGFkZGl0aW9uYWxfZmxhZ3M9LURV U0VfTkVYVF9JTkxJTkVfSApAQCAtNjcsNDEgKzYwLDIwIEBAIHByb2MgZG9fdGVzdCB7IHVzZV9o ZWFkZXIgfSB7CiAgICAgZ2RiX3Rlc3QgInN0ZXAiICIuKiIgInN0ZXAgaW50byBnZXRfYWxpYXNf c2V0IgogICAgIGdkYl90ZXN0ICJidCIgIlxccypcXCMwXFxzK2dldF9hbGlhc19zZXRcW15cclxd KiR7c3JjZmlsZX06LioiIFwKIAkibm90IGluIGlubGluZSAxIgotICAgICMgSXQncyBwb3NzaWJs ZSB0aGF0IHRoaXMgZmlyc3QgZmFpbHVyZSAod2hlbiBub3QgdXNpbmcgYSBoZWFkZXIKLSAgICAj IGZpbGUpIGlzIEdDQydzIGZhdWx0LCB0aG91Z2ggdGhlIHJlbWFpbmluZyBmYWlsdXJlcyB3b3Vs ZCBiZXN0Ci0gICAgIyBiZSBmaXhlZCBieSBhZGRpbmcgbG9jYXRpb24gdmlld3Mgc3VwcG9ydCAo dGhvdWdoIGl0IGNvdWxkIGJlCi0gICAgIyB0aGF0IHNvbWUgZWFzaWVyIGhldXJpc3RpYyBjb3Vs ZCBiZSBmaWd1cmVkIG91dCkuICBTdGlsbCwgaXQgaXMKLSAgICAjIG5vdCBjZXJ0YWluIHRoYXQg dGhlIGZpcnN0IGZhaWx1cmUgd291bGRuJ3QgYWxzbyBiZSBmaXhlZCBieQotICAgICMgaGF2aW5n IGxvY2F0aW9uIHZpZXcgc3VwcG9ydCwgc28gZm9yIG5vdyBpdCBpcyB0YWdnZWQgYXMgc3VjaC4K LSAgICBpZiB7W3Rlc3RfY29tcGlsZXJfaW5mbyBnY2MqXSAmJiAhJHVzZV9oZWFkZXJ9IHsKLQlz ZXR1cF9rZmFpbCAiKi0qLSoiIHN5bXRhYi8yNTUwNwotICAgIH0KICAgICBnZGJfdGVzdCAibmV4 dCIgIi4qVFJFRV9UWVBFLioiICJuZXh0IHN0ZXAgMSIKICAgICBnZGJfdGVzdCAiYnQiICJcXHMq XFwjMFxccytnZXRfYWxpYXNfc2V0XFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBp bmxpbmUgMiIKICAgICBnZGJfdGVzdCAibmV4dCIgIi4qVFJFRV9UWVBFLioiICJuZXh0IHN0ZXAg MiIKICAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRfYWxpYXNfc2V0XFteXHJcXSok e3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxpbmUgMyIKLSAgICBpZiB7W3Rlc3RfY29tcGls ZXJfaW5mbyBnY2MqXSAmJiAhJHVzZV9oZWFkZXJ9IHsKLQlzZXR1cF9rZmFpbCAiKi0qLSoiIHN5 bXRhYi8yNTUwNwotICAgIH0KICAgICBnZGJfdGVzdCAibmV4dCIgIi4qVFJFRV9UWVBFLioiICJu ZXh0IHN0ZXAgMyIKICAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRfYWxpYXNfc2V0 XFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxpbmUgNCIKLSAgICBpZiB7ISR1 c2VfaGVhZGVyfSB7IHNldHVwX2tmYWlsICIqLSotKiIgc3ltdGFiLzI1NTA3IH0KICAgICBnZGJf dGVzdCAibmV4dCIgInJldHVybiAwLioiICJuZXh0IHN0ZXAgNCIKICAgICBnZGJfdGVzdCAiYnQi IFwKIAkiXFxzKlxcIzBcXHMrKG1haW58Z2V0X2FsaWFzX3NldClcW15cclxdKiR7c3JjZmlsZX06 LioiIFwKIAkibm90IGluIGlubGluZSA1IgogCi0gICAgaWYgeyEkdXNlX2hlYWRlcn0gewotCSMg V2l0aCB0aGUgZGVidWcgZnJvbSBHQ0MgMTAueCAoYW5kIGVhcmxpZXIpIEdEQiBpcyBjdXJyZW50 bHkKLQkjIHVuYWJsZSB0byBzdWNjZXNzZnVsbHkgY29tcGxldGUgdGhlIGZvbGxvd2luZyB0ZXN0 cyB3aGVuIHdlCi0JIyBhcmUgbm90IHVzaW5nIGEgaGVhZGVyIGZpbGUuCi0Ja2ZhaWwgc3ltdGFi LzI1NTA3ICJzdGVwcGluZyB0ZXN0cyIKLQlyZXR1cm4KLSAgICB9Ci0KICAgICBjbGVhbl9yZXN0 YXJ0ICR7ZXhlY3V0YWJsZX0KIAogICAgIGlmICFbcnVudG9fbWFpbl0gewpAQCAtMTE5LDIyICs5 MSw3NyBAQCBwcm9jIGRvX3Rlc3QgeyB1c2VfaGVhZGVyIH0gewogICAgIGdkYl90ZXN0ICJzdGVw IiAiLippZiBcXCh0LT54ICE9IGlcXCkuKiIgInN0ZXAgMiIKICAgICBnZGJfdGVzdCAiYnQiICJc XHMqXFwjMFxccytcW15cclxdKnRyZWVfY2hlY2tcW15cclxdKiR7aGRyZmlsZX06LioiIFwKIAki aW4gaW5saW5lIDEgcGFzcyAyIgotICAgIGdkYl90ZXN0ICJzdGVwIiAiLipUUkVFX1RZUEUuKiIg InN0ZXAgMyIKKyAgICBnZGJfdGVzdCAic3RlcCIgIi4qcmV0dXJuIHguKiIgInN0ZXAgMyIKKyAg ICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytcW15cclxdKnRyZWVfY2hlY2tcW15cclxdKiR7 aGRyZmlsZX06LioiIFwKKwkicmV0dXJuIGZyb20gaW5saW5lIDEgcGFzcyAyIgorICAgIGdkYl90 ZXN0ICJzdGVwIiAiLipUUkVFX1RZUEUuKiIgInN0ZXAgNCIKICAgICBnZGJfdGVzdCAiYnQiICJc XHMqXFwjMFxccytnZXRfYWxpYXNfc2V0XFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBp biBpbmxpbmUgMiBwYXNzIDIiCi0gICAgZ2RiX3Rlc3QgInN0ZXAiICIuKmlmIFxcKHQtPnggIT0g aVxcKS4qIiAic3RlcCA0IgorICAgIGdkYl90ZXN0ICJzdGVwIiAiLippZiBcXCh0LT54ICE9IGlc XCkuKiIgInN0ZXAgNSIKICAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytcW15cclxdKnRy ZWVfY2hlY2tcW15cclxdKiR7aGRyZmlsZX06LioiIFwKIAkiaW4gaW5saW5lIDIgcGFzcyAyIgot ICAgIGdkYl90ZXN0ICJzdGVwIiAiLipUUkVFX1RZUEUuKiIgInN0ZXAgNSIKKyAgICBnZGJfdGVz dCAic3RlcCIgIi4qcmV0dXJuIHguKiIgInN0ZXAgNiIKKyAgICBnZGJfdGVzdCAiYnQiICJcXHMq XFwjMFxccytcW15cclxdKnRyZWVfY2hlY2tcW15cclxdKiR7aGRyZmlsZX06LioiIFwKKwkicmV0 dXJuIGZyb20gaW5saW5lIDIgcGFzcyAyIgorICAgIGdkYl90ZXN0ICJzdGVwIiAiLipUUkVFX1RZ UEUuKiIgInN0ZXAgNyIKICAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRfYWxpYXNf c2V0XFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxpbmUgMyBwYXNzIDIiCi0g ICAgZ2RiX3Rlc3QgInN0ZXAiICIuKmlmIFxcKHQtPnggIT0gaVxcKS4qIiAic3RlcCA2IgorICAg IGdkYl90ZXN0ICJzdGVwIiAiLippZiBcXCh0LT54ICE9IGlcXCkuKiIgInN0ZXAgOCIKICAgICBn ZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytcW15cclxdKnRyZWVfY2hlY2tcW15cclxdKiR7aGRy ZmlsZX06LioiIFwKIAkiaW4gaW5saW5lIDMgcGFzcyAyIgotICAgIGdkYl90ZXN0ICJzdGVwIiAi cmV0dXJuIDAuKiIgInN0ZXAgNyIKKyAgICBnZGJfdGVzdCAic3RlcCIgIi4qcmV0dXJuIHguKiIg InN0ZXAgOSIKKyAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytcW15cclxdKnRyZWVfY2hl Y2tcW15cclxdKiR7aGRyZmlsZX06LioiIFwKKwkicmV0dXJuIGZyb20gaW5saW5lIDMgcGFzcyAy IgorICAgIGdkYl90ZXN0ICJzdGVwIiAicmV0dXJuIDAuKiIgInN0ZXAgMTAiCiAgICAgZ2RiX3Rl c3QgImJ0IiBcCiAJIlxccypcXCMwXFxzKyhtYWlufGdldF9hbGlhc19zZXQpXFteXHJcXSoke3Ny Y2ZpbGV9Oi4qIiBcCiAJIm5vdCBpbiBpbmxpbmUgNCBwYXNzIDIiCisKKyAgICBjbGVhbl9yZXN0 YXJ0ICR7ZXhlY3V0YWJsZX0KKworICAgIGlmICFbcnVudG9fbWFpbl0geworCWZhaWwgImNhbid0 IHJ1biB0byBtYWluIHBhc3MgMyIKKwlyZXR1cm4KKyAgICB9CisKKyAgICBnZGJfdGVzdCAiYnQi ICJcXHMqXFwjMFxccyttYWluLioiICJpbiBtYWluIHBhc3MgMyIKKyAgICBnZGJfdGVzdCAic3Rl cCIgIi4qIiAic3RlcCBpbnRvIGdldF9hbGlhc19zZXQgcGFzcyAzIgorICAgIGdkYl90ZXN0ICJi dCIgIlxccypcXCMwXFxzK2dldF9hbGlhc19zZXRcW15cclxdKiR7c3JjZmlsZX06LioiIFwKKwki aW4gZ2V0X2FsaWFzX3NldCBwYXNzIDMiCisgICAgZ2RiX3Rlc3QgInN0ZXAiICIuKlRSRUVfVFlQ RS4qIiAic3RlcCAxIHBhc3MgMyIKKyAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRf YWxpYXNfc2V0XFteXHJcXSoke3NyY2ZpbGV9Oi4qIiBcCisJIm5vdCBpbiBpbmxpbmUgMSBwYXNz IDMiCisgICAgZ2RiX3Rlc3QgInN0ZXAiICIuKmlmIFxcKHQtPnggIT0gaVxcKS4qIiAic3RlcCAy IHBhc3MgMyIKKyAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytcW15cclxdKnRyZWVfY2hl Y2tcW15cclxdKiR7aGRyZmlsZX06LioiIFwKKwkiaW4gaW5saW5lIDEgcGFzcyAzIgorICAgIGdk Yl90ZXN0ICJwIHQtPnggPSAyIiAiLiogPSAyLioiICJjaGFuZ2UgdmFsdWUgcGFzcyAzIgorICAg IGdkYl90ZXN0ICJzdGVwIiAiLiphYm9ydC4qIiAic3RlcCA0LCBwYXNzIDMiCisgICAgZ2RiX3Rl c3QgImJ0IiAiXFxzKlxcIzBcXHMrXFteXHJcXSp0cmVlX2NoZWNrXFteXHJcXSoke2hkcmZpbGV9 Oi4qIiBcCisJImFib3J0IGZyb20gaW5saW5lIDEgcGFzcyAzIgorCisgICAgaWYgIVtydW50b19t YWluXSB7CisJZmFpbCAiY2FuJ3QgcnVuIHRvIG1haW4gcGFzcyA0IgorCXJldHVybgorICAgIH0K KworICAgIGdkYl90ZXN0ICJidCIgIlxccypcXCMwXFxzK21haW4uKiIgImluIG1haW4gcGFzcyA0 IgorICAgIGdkYl90ZXN0ICJza2lwIHRyZWVfY2hlY2siICIuKiIgInNraXAgdHJlZV9jaGVjayBw YXNzIDQiCisgICAgZ2RiX3Rlc3QgInN0ZXAiICIuKiIgInN0ZXAgaW50byBnZXRfYWxpYXNfc2V0 IHBhc3MgNCIKKyAgICBnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccytnZXRfYWxpYXNfc2V0XFte XHJcXSoke3NyY2ZpbGV9Oi4qIiBcCisJImluIGdldF9hbGlhc19zZXQgcGFzcyA0IgorICAgIGdk Yl90ZXN0ICJzdGVwIiAiLipUUkVFX1RZUEUuKiIgInN0ZXAgMSBwYXNzIDQiCisgICAgZ2RiX3Rl c3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxbXlxyXF0qJHtzcmNmaWxlfTouKiIg XAorCSJub3QgaW4gaW5saW5lIDEgcGFzcyA0IgorICAgIGdkYl90ZXN0ICJzdGVwIiAiLipUUkVF X1RZUEUuKiIgInN0ZXAgMiBwYXNzIDQiCisgICAgZ2RiX3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMr Z2V0X2FsaWFzX3NldFxbXlxyXF0qJHtzcmNmaWxlfTouKiIgXAorCSJub3QgaW4gaW5saW5lIDIg cGFzcyA0IgorICAgIGdkYl90ZXN0ICJzdGVwIiAiLipUUkVFX1RZUEUuKiIgInN0ZXAgMyBwYXNz IDQiCisgICAgZ2RiX3Rlc3QgImJ0IiAiXFxzKlxcIzBcXHMrZ2V0X2FsaWFzX3NldFxbXlxyXF0q JHtzcmNmaWxlfTouKiIgXAorCSJub3QgaW4gaW5saW5lIDMgcGFzcyA0IgorICAgIGdkYl90ZXN0 ICJzdGVwIiAicmV0dXJuIDAuKiIgInN0ZXAgNCBwYXNzIDQiCisgICAgZ2RiX3Rlc3QgImJ0IiBc CisJIlxccypcXCMwXFxzKyhtYWlufGdldF9hbGlhc19zZXQpXFteXHJcXSoke3NyY2ZpbGV9Oi4q IiBcCisJIm5vdCBpbiBpbmxpbmUgNCBwYXNzIDQiCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy1iYXNlLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLWJhc2UuZXhwCmluZGV4IDMxNjRhOTAuLmExMTMyZTMg MTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLWJhc2UuZXhw CisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLWJhc2UuZXhwCkBAIC0x NDgsNyArMTQ4LDcgQEAgc2V0IHByZXYgLTEKIHNldCBzZXFfY291bnQgMAogZ2RiX3Rlc3RfbXVs dGlwbGUgIm1haW50IGluZm8gbGluZS10YWJsZSBnZGIuZHdhcmYyL2R3Mi1yYW5nZXMtYmFzZS5j IiBcCiAgICAgImNvdW50IEVORCBtYXJrZXJzIGluIGxpbmUgdGFibGUiIHsKLQktcmUgIl4kZGVj aW1hbFxbIFx0XF0rJGRlY2ltYWxcWyBcdFxdKyRoZXhcKFxbIFx0XF0rWVwpPyAqXHJcbiIgewor CS1yZSAiXiRkZWNpbWFsXFsgXHRcXSskZGVjaW1hbFxbIFx0XF0rJGhleFwoXFsgXHRcXStZXCk/ KFxbIFx0XF0rWVwpPyAqXHJcbiIgewogCSAgICBpZiB7ICRwcmV2ICE9IC0xIH0gewogCQlnZGJf YXNzZXJ0ICIkcHJldiA9PSAxIiBcCiAJCSAgICAicHJldiBvZiBub3JtYWwgZW50cnkgYXQgJHNl cV9jb3VudCBpcyBlbmQgbWFya2VyIgpAQCAtMTU3LDcgKzE1Nyw3IEBAIGdkYl90ZXN0X211bHRp cGxlICJtYWludCBpbmZvIGxpbmUtdGFibGUgZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLWJhc2UuYyIg XAogCSAgICBpbmNyIHNlcV9jb3VudAogCSAgICBleHBfY29udGludWUKIAl9Ci0JLXJlICJeJGRl Y2ltYWxcWyBcdFxdK0VORFxbIFx0XF0rJGhleFwoXFsgXHRcXStZXCk/ICpcclxuIiB7CisJLXJl ICJeJGRlY2ltYWxcWyBcdFxdK0VORFxbIFx0XF0rJGhleFwoXFsgXHRcXStZXCk/XChcWyBcdFxd K1lcKT8gKlxyXG4iIHsKIAkgICAgaWYgeyAkcHJldiAhPSAtMSB9IHsKIAkJZ2RiX2Fzc2VydCAi JHByZXYgPT0gMCIgXAogCQkgICAgInByZXYgb2YgZW5kIG1hcmtlciBhdCAkc2VxX2NvdW50IGlz IG5vcm1hbCBlbnRyeSIKQEAgLTE3Myw3ICsxNzMsNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAibWFp bnQgaW5mbyBsaW5lLXRhYmxlIGdkYi5kd2FyZjIvZHcyLXJhbmdlcy1iYXNlLmMiIFwKIAktcmUg Ii4qbGluZXRhYmxlOiBcXChcXChzdHJ1Y3QgbGluZXRhYmxlIFxcKlxcKSAweDBcXCk6XHJcbk5v IGxpbmUgdGFibGUuXHJcbiIgewogCSAgICBleHBfY29udGludWUKIAl9Ci0JLXJlICIuKmxpbmV0 YWJsZTogXFwoXFwoc3RydWN0IGxpbmV0YWJsZSBcXCpcXCkgJGhleFxcKTpcclxuSU5ERVhcWyBc dFxdK0xJTkVcWyBcdFxdK0FERFJFU1NcWyBcdFxdK0lTLVNUTVQgKlxyXG4iIHsKKwktcmUgIi4q bGluZXRhYmxlOiBcXChcXChzdHJ1Y3QgbGluZXRhYmxlIFxcKlxcKSAkaGV4XFwpOlxyXG5JTkRF WFxbIFx0XF0rTElORVxbIFx0XF0rQUREUkVTU1xbIFx0XF0rU1RNVFxbIFx0XF0rV0VBSyAqXHJc biIgewogCSAgICBleHBfY29udGludWUKIAl9CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2RiL3hjb2Zm cmVhZC5jIGIvZ2RiL3hjb2ZmcmVhZC5jCmluZGV4IDhjMDUwNjAuLmRiNDIyY2QgMTAwNjQ0Ci0t LSBhL2dkYi94Y29mZnJlYWQuYworKysgYi9nZGIveGNvZmZyZWFkLmMKQEAgLTQ0Niw2ICs0NDYs NyBAQCBzdHJ1Y3QgZmluZF90YXJnX3NlY19hcmcKIAkgICAgfQogCSAgZmVudHJ5W2Z1bmN0aW9u X2NvdW50XS5saW5lID0gaWk7CiAJICBmZW50cnlbZnVuY3Rpb25fY291bnRdLmlzX3N0bXQgPSAx OworCSAgZmVudHJ5W2Z1bmN0aW9uX2NvdW50XS5pc193ZWFrID0gMDsKIAkgIGZlbnRyeVtmdW5j dGlvbl9jb3VudF0ucGMgPSBvbGRMaW5lVGItPml0ZW1baWldLnBjOwogCSAgKytmdW5jdGlvbl9j b3VudDsKIAotLSAKMS45LjEKCg== --------------5F48E69991E6CC0A7F491723--