Received: by 10.223.185.116 with SMTP id b49csp2372100wrg; Thu, 15 Feb 2018 10:34:27 -0800 (PST) X-Google-Smtp-Source: AH8x224JWyYiiwIPgPOa49IKYxsFojV4Jpdk6DUGiXJk2BWzXqgIR0u2CRwyt1QybFZO3J6Yjmaw X-Received: by 10.99.171.10 with SMTP id p10mr2912522pgf.176.1518719667456; Thu, 15 Feb 2018 10:34:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518719667; cv=none; d=google.com; s=arc-20160816; b=kF1M9ZeRfkEBpy9fsBwserrpO8L/ATWK2u8MrxT7Z3E5U2jadd+ofTPNOyiJBdN9hF /xoNoAud50kiA4GbFm/XzLOSoprehQlRsjvbZntw803rTSVbySuzItSgum57nKbcZS7k RtabgAIKIapiL7dU3na6pMjYQYuH6W3OihW7O68z/xYjtCiPnXCY5xj8DYwOak0/RWMY 4eptRJB9WV5WqXBFYgCGFvYv8WV4PYBpaHq4TG1Dqbh8szGm36tz9OYjrCBFraCM5/Kf QYohenca+JgcKWz6cxwgk4nt1WKsXlO5rMJBb+bpAFyod3jQZWd5b+FpiSMiTK0wtdY+ RwxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=HzoGc4DECENdi1fDnm4CbKPRdVcMBuEuGplTF6N2rIs=; b=ZV1Cv5NORhgPfk0KKAtGAl+FlyZ/d6yWReSmui5F2B9ShiwIQdIODjq5v16NLCzM6d G79VVyY+8Lj9AGfLNlI7WyLG9QLhVcvTlHg8MGCSBPvS20lwVo3wDJn13IDH/mCKBpRO H01mHVdmbFSS909AP/IS7gk2RnbGAUuOForoLH1L/FfjXT7/mjEzPRO1M7OxOHX0t4ki nnhm57DL2/V5q8l9j9B350FE+NamsKMTmTdsr3AC2sMeKbM+gaUqsm0k1idwu3A1eypP +ElbemE+2eMM+oVbmNKVME7so7cBny4gWVtiCjVHop0yFR7g+LIXdFdGxC8NW9Ue1wwO g3Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cnexlabs.onmicrosoft.com header.s=selector1-cnexlabs-com header.b=qNE6jfMx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c9-v6si5744069pli.257.2018.02.15.10.34.12; Thu, 15 Feb 2018 10:34:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@cnexlabs.onmicrosoft.com header.s=selector1-cnexlabs-com header.b=qNE6jfMx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946213AbeBOSdI (ORCPT + 99 others); Thu, 15 Feb 2018 13:33:08 -0500 Received: from mail-bl2nam02on0045.outbound.protection.outlook.com ([104.47.38.45]:63165 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1163120AbeBOSdB (ORCPT ); Thu, 15 Feb 2018 13:33:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cnexlabs.onmicrosoft.com; s=selector1-cnexlabs-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=HzoGc4DECENdi1fDnm4CbKPRdVcMBuEuGplTF6N2rIs=; b=qNE6jfMxBfs/0moOZOgvHS4JldY1WFz1ujJ8iHe22gQVU1LzuogJwin5+/V80I4MxLxwTTiR4Z96UH/HZ2GJPguHLUIIHEIIy4ZHQDFzUTQSuGBh/w6fEZJmrjN9sPWL1hK2f6MUuyADGgyc65S93se/OL8sZPunZtczqKc3BC8= Received: from BN6PR06MB2626.namprd06.prod.outlook.com (10.173.145.22) by BN6PR06MB2609.namprd06.prod.outlook.com (10.173.145.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.485.10; Thu, 15 Feb 2018 18:32:55 +0000 Received: from BN6PR06MB2626.namprd06.prod.outlook.com ([10.173.145.22]) by BN6PR06MB2626.namprd06.prod.outlook.com ([10.173.145.22]) with mapi id 15.20.0485.019; Thu, 15 Feb 2018 18:32:55 +0000 From: Javier Gonzalez To: =?utf-8?B?TWF0aWFzIEJqw7hybGluZw==?= CC: =?utf-8?B?SmF2aWVyIEdvbnrDoWxleg==?= , "linux-block@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-nvme@lists.infradead.org" Subject: Re: [PATCH 1/8] lightnvm: exposed generic geometry to targets Thread-Topic: [PATCH 1/8] lightnvm: exposed generic geometry to targets Thread-Index: AQHTpNPVC3TEMr33jESz0KsElVS7H6OlQaiAgACLemQ= Date: Thu, 15 Feb 2018 18:32:55 +0000 Message-ID: References: <1518530768-20956-1-git-send-email-javier@cnexlabs.com> <1518530768-20956-2-git-send-email-javier@cnexlabs.com>,<58e5f836-ccaf-59b8-855b-7fd99290b436@lightnvm.io> In-Reply-To: <58e5f836-ccaf-59b8-855b-7fd99290b436@lightnvm.io> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=javier@cnexlabs.com; x-originating-ip: [212.27.16.237] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BN6PR06MB2609;7:j9BeuW5jTUsPmL6l/7o3c39MzBeWVgK5NPDU0ZWq/taSgbbBK3aq+3bCZvaA4qxz4wU4Hwrg3UWaSS1mxc9T/ueVmE0CQ6BBE5YP94nWrKHau9haAhtaQIl2VocPoX8NtarhudDxHaUbKtfEDguBVczB+RhYEjqyw8J0+1XElODXV82XvJ6y4rOQmGpUhf8943woRXShJaX4OAsKENk+EBuJ0IOQjlHnwZuW5yTPHQytKiIt8wUwNMxR1oe/QKoo x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 7f3304f6-cad4-4d56-2bb4-08d574a287d3 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020);SRVR:BN6PR06MB2609; x-ms-traffictypediagnostic: BN6PR06MB2609: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(20558992708506); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040501)(2401047)(5005006)(8121501046)(3231101)(944501161)(93006095)(93001095)(3002001)(10201501046)(6041288)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(6072148)(201708071742011);SRVR:BN6PR06MB2609;BCL:0;PCL:0;RULEID:;SRVR:BN6PR06MB2609; x-forefront-prvs: 058441C12A x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39840400004)(376002)(396003)(366004)(346002)(39380400002)(199004)(189003)(305945005)(186003)(77096007)(26005)(102836004)(82746002)(7736002)(229853002)(97736004)(36756003)(6916009)(54906003)(6246003)(66066001)(2900100001)(4326008)(5660300001)(25786009)(59450400001)(53546011)(6506007)(478600001)(83716003)(14454004)(316002)(76176011)(2950100002)(99286004)(86362001)(53936002)(16200700003)(53946003)(575784001)(6512007)(2906002)(105586002)(6436002)(33656002)(68736007)(6486002)(8676002)(106356001)(8936002)(3846002)(3280700002)(81166006)(81156014)(3660700001)(6116002)(41533002)(31153001)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR06MB2609;H:BN6PR06MB2626.namprd06.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:3;MX:1;LANG:en; received-spf: None (protection.outlook.com: cnexlabs.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: /IkVUlKpywYuIf6PuZhBqN7OZ0XdpuBw5Uth+pN8KDvtpwCMJsjjXvX2MYnPkEZ5aXwba1Q/i4fS4T1h5KT1Vw== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cnexlabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f3304f6-cad4-4d56-2bb4-08d574a287d3 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Feb 2018 18:32:55.2736 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: e40dfc2e-c6c1-463a-a598-38602b2c3cff X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR06MB2609 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQo+IE9uIDE1IEZlYiAyMDE4LCBhdCAwMi4xMywgTWF0aWFzIEJqw7hybGluZyA8bWJAbGlnaHRu dm0uaW8+IHdyb3RlOg0KPiANCj4+IE9uIDAyLzEzLzIwMTggMDM6MDYgUE0sIEphdmllciBHb256 w6FsZXogd3JvdGU6DQo+PiBXaXRoIHRoZSBpbmNsdXNpb24gb2YgMi4wIHN1cHBvcnQsIHdlIG5l ZWQgYSBnZW5lcmljIGdlb21ldHJ5IHRoYXQNCj4+IGRlc2NyaWJlcyB0aGUgT0NTU0QgaW5kZXBl bmRlbnRseSBvZiB0aGUgc3BlY2lmaWNhdGlvbiB0aGF0IGl0DQo+PiBpbXBsZW1lbnRzLiBPdGhl cndpc2UsIGdlb21ldHJ5IHNwZWNpZmljIGNvZGUgaXMgcmVxdWlyZWQsIHdoaWNoDQo+PiBjb21w bGljYXRlcyB0YXJnZXRzIGFuZCBtYWtlcyBtYWludGVuYW5jZSBtdWNoIG1vcmUgZGlmZmljdWx0 Lg0KPj4gVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIGlkZW50aWZ5IHBhdGggYW5kIHBvcHVsYXRl cyBhIGdlbmVyaWMgZ2VvbWV0cnkNCj4+IHRoYXQgaXMgdGhlbiBnaXZlbiB0byB0aGUgdGFyZ2V0 cyBvbiBjcmVhdGlvbi4gU2luY2UgdGhlIDIuMCBnZW9tZXRyeSBpcw0KPj4gbXVjaCBtb3JlIGFi c3RyYWN0IHRoYXQgMS4yLCB0aGUgZ2VuZXJpYyBnZW9tZXRyeSByZXNlbWJsZXMgMi4wLCBidXQg aXQNCj4+IGlzIG5vdCBpZGVudGljYWwsIGFzIGl0IG5lZWRzIHRvIHVuZGVyc3RhbmQgMS4yIGFi c3RyYWN0aW9ucyB0b28uDQo+PiBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgR29uesOhbGV6IDxqYXZp ZXJAY25leGxhYnMuY29tPg0KPj4gLS0tDQo+PiAgZHJpdmVycy9saWdodG52bS9jb3JlLmMgICAg ICAgICAgfCAxNDMgKysrKysrLS0tLS0tLS0tDQo+PiAgZHJpdmVycy9saWdodG52bS9wYmxrLWNv cmUuYyAgICAgfCAgMTYgKy0NCj4+ICBkcml2ZXJzL2xpZ2h0bnZtL3BibGstZ2MuYyAgICAgICB8 ICAgMiArLQ0KPj4gIGRyaXZlcnMvbGlnaHRudm0vcGJsay1pbml0LmMgICAgIHwgMTQ5ICsrKysr KysrLS0tLS0tLQ0KPj4gIGRyaXZlcnMvbGlnaHRudm0vcGJsay1yZWFkLmMgICAgIHwgICAyICst DQo+PiAgZHJpdmVycy9saWdodG52bS9wYmxrLXJlY292ZXJ5LmMgfCAgMTQgKy0NCj4+ICBkcml2 ZXJzL2xpZ2h0bnZtL3BibGstcmwuYyAgICAgICB8ICAgMiArLQ0KPj4gIGRyaXZlcnMvbGlnaHRu dm0vcGJsay1zeXNmcy5jICAgIHwgIDM5ICsrLS0NCj4+ICBkcml2ZXJzL2xpZ2h0bnZtL3BibGst d3JpdGUuYyAgICB8ICAgMiArLQ0KPj4gIGRyaXZlcnMvbGlnaHRudm0vcGJsay5oICAgICAgICAg IHwgMTA1ICsrKysrLS0tLS0tDQo+PiAgZHJpdmVycy9udm1lL2hvc3QvbGlnaHRudm0uYyAgICAg fCAzNzkgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tDQo+PiAgaW5jbHVk ZS9saW51eC9saWdodG52bS5oICAgICAgICAgfCAyMjAgKysrKysrKysrKysrKy0tLS0tLS0tLS0N Cj4+ICAxMiBmaWxlcyBjaGFuZ2VkLCA1ODYgaW5zZXJ0aW9ucygrKSwgNDg3IGRlbGV0aW9ucygt KQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGlnaHRudm0vY29yZS5jIGIvZHJpdmVycy9saWdo dG52bS9jb3JlLmMNCj4+IGluZGV4IDliMTI1NWIzZTA1ZS4uODA0OTJmYTZlZTc2IDEwMDY0NA0K Pj4gLS0tIGEvZHJpdmVycy9saWdodG52bS9jb3JlLmMNCj4+ICsrKyBiL2RyaXZlcnMvbGlnaHRu dm0vY29yZS5jDQo+PiBAQCAtMTExLDYgKzExMSw3IEBAIHN0YXRpYyB2b2lkIG52bV9yZWxlYXNl X2x1bnNfZXJyKHN0cnVjdCBudm1fZGV2ICpkZXYsIGludCBsdW5fYmVnaW4sDQo+PiAgc3RhdGlj IHZvaWQgbnZtX3JlbW92ZV90Z3RfZGV2KHN0cnVjdCBudm1fdGd0X2RldiAqdGd0X2RldiwgaW50 IGNsZWFyKQ0KPj4gIHsNCj4+ICAgICAgc3RydWN0IG52bV9kZXYgKmRldiA9IHRndF9kZXYtPnBh cmVudDsNCj4+ICsgICAgc3RydWN0IG52bV9kZXZfZ2VvICpkZXZfZ2VvID0gJmRldi0+ZGV2X2dl bzsNCj4+ICAgICAgc3RydWN0IG52bV9kZXZfbWFwICpkZXZfbWFwID0gdGd0X2Rldi0+bWFwOw0K Pj4gICAgICBpbnQgaSwgajsNCj4+ICBAQCAtMTIyLDcgKzEyMyw3IEBAIHN0YXRpYyB2b2lkIG52 bV9yZW1vdmVfdGd0X2RldihzdHJ1Y3QgbnZtX3RndF9kZXYgKnRndF9kZXYsIGludCBjbGVhcikN Cj4+ICAgICAgICAgIGlmIChjbGVhcikgew0KPj4gICAgICAgICAgICAgIGZvciAoaiA9IDA7IGog PCBjaF9tYXAtPm5yX2x1bnM7IGorKykgew0KPj4gICAgICAgICAgICAgICAgICBpbnQgbHVuID0g aiArIGx1bl9vZmZzW2pdOw0KPj4gLSAgICAgICAgICAgICAgICBpbnQgbHVuaWQgPSAoY2ggKiBk ZXYtPmdlby5ucl9sdW5zKSArIGx1bjsNCj4+ICsgICAgICAgICAgICAgICAgaW50IGx1bmlkID0g KGNoICogZGV2X2dlby0+bnVtX2x1bikgKyBsdW47DQo+PiAgICAgICAgICAgICAgICAgICAgV0FS Tl9PTighdGVzdF9hbmRfY2xlYXJfYml0KGx1bmlkLA0KPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXYtPmx1bl9tYXApKTsNCj4+IEBAIC0xNDMsMTkgKzE0NCwyMCBAQCBzdGF0aWMg c3RydWN0IG52bV90Z3RfZGV2ICpudm1fY3JlYXRlX3RndF9kZXYoc3RydWN0IG52bV9kZXYgKmRl diwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBsdW5fYmVnaW4sIHUxNiBsdW5f ZW5kLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdTE2IG9wKQ0KPj4gIHsNCj4+ICsg ICAgc3RydWN0IG52bV9kZXZfZ2VvICpkZXZfZ2VvID0gJmRldi0+ZGV2X2dlbzsNCj4+ICAgICAg c3RydWN0IG52bV90Z3RfZGV2ICp0Z3RfZGV2ID0gTlVMTDsNCj4+ICAgICAgc3RydWN0IG52bV9k ZXZfbWFwICpkZXZfcm1hcCA9IGRldi0+cm1hcDsNCj4+ICAgICAgc3RydWN0IG52bV9kZXZfbWFw ICpkZXZfbWFwOw0KPj4gICAgICBzdHJ1Y3QgcHBhX2FkZHIgKmx1bnM7DQo+PiAgICAgIGludCBu cl9sdW5zID0gbHVuX2VuZCAtIGx1bl9iZWdpbiArIDE7DQo+PiAgICAgIGludCBsdW5zX2xlZnQg PSBucl9sdW5zOw0KPj4gLSAgICBpbnQgbnJfY2hubHMgPSBucl9sdW5zIC8gZGV2LT5nZW8ubnJf bHVuczsNCj4+IC0gICAgaW50IG5yX2NobmxzX21vZCA9IG5yX2x1bnMgJSBkZXYtPmdlby5ucl9s dW5zOw0KPj4gLSAgICBpbnQgYmNoID0gbHVuX2JlZ2luIC8gZGV2LT5nZW8ubnJfbHVuczsNCj4+ IC0gICAgaW50IGJsdW4gPSBsdW5fYmVnaW4gJSBkZXYtPmdlby5ucl9sdW5zOw0KPj4gKyAgICBp bnQgbnJfY2hubHMgPSBucl9sdW5zIC8gZGV2X2dlby0+bnVtX2x1bjsNCj4+ICsgICAgaW50IG5y X2NobmxzX21vZCA9IG5yX2x1bnMgJSBkZXZfZ2VvLT5udW1fbHVuOw0KPj4gKyAgICBpbnQgYmNo ID0gbHVuX2JlZ2luIC8gZGV2X2dlby0+bnVtX2x1bjsNCj4+ICsgICAgaW50IGJsdW4gPSBsdW5f YmVnaW4gJSBkZXZfZ2VvLT5udW1fbHVuOw0KPj4gICAgICBpbnQgbHVuaWQgPSAwOw0KPj4gICAg ICBpbnQgbHVuX2JhbGFuY2VkID0gMTsNCj4+IC0gICAgaW50IHByZXZfbnJfbHVuczsNCj4+ICsg ICAgaW50IHNlY19wZXJfbHVuLCBwcmV2X25yX2x1bnM7DQo+PiAgICAgIGludCBpLCBqOw0KPj4g ICAgICAgIG5yX2NobmxzID0gKG5yX2NobmxzX21vZCA9PSAwKSA/IG5yX2NobmxzIDogbnJfY2hu bHMgKyAxOw0KPj4gQEAgLTE3MywxNSArMTc1LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtX3RndF9k ZXYgKm52bV9jcmVhdGVfdGd0X2RldihzdHJ1Y3QgbnZtX2RldiAqZGV2LA0KPj4gICAgICBpZiAo IWx1bnMpDQo+PiAgICAgICAgICBnb3RvIGVycl9sdW5zOw0KPj4gIC0gICAgcHJldl9ucl9sdW5z ID0gKGx1bnNfbGVmdCA+IGRldi0+Z2VvLm5yX2x1bnMpID8NCj4+IC0gICAgICAgICAgICAgICAg ICAgIGRldi0+Z2VvLm5yX2x1bnMgOiBsdW5zX2xlZnQ7DQo+PiArICAgIHByZXZfbnJfbHVucyA9 IChsdW5zX2xlZnQgPiBkZXZfZ2VvLT5udW1fbHVuKSA/DQo+PiArICAgICAgICAgICAgICAgICAg ICBkZXZfZ2VvLT5udW1fbHVuIDogbHVuc19sZWZ0Ow0KPj4gICAgICBmb3IgKGkgPSAwOyBpIDwg bnJfY2hubHM7IGkrKykgew0KPj4gICAgICAgICAgc3RydWN0IG52bV9jaF9tYXAgKmNoX3JtYXAg PSAmZGV2X3JtYXAtPmNobmxzW2kgKyBiY2hdOw0KPj4gICAgICAgICAgaW50ICpsdW5fcm9mZnMg PSBjaF9ybWFwLT5sdW5fb2ZmczsNCj4+ICAgICAgICAgIHN0cnVjdCBudm1fY2hfbWFwICpjaF9t YXAgPSAmZGV2X21hcC0+Y2hubHNbaV07DQo+PiAgICAgICAgICBpbnQgKmx1bl9vZmZzOw0KPj4g LSAgICAgICAgaW50IGx1bnNfaW5fY2hubCA9IChsdW5zX2xlZnQgPiBkZXYtPmdlby5ucl9sdW5z KSA/DQo+PiAtICAgICAgICAgICAgICAgICAgICBkZXYtPmdlby5ucl9sdW5zIDogbHVuc19sZWZ0 Ow0KPj4gKyAgICAgICAgaW50IGx1bnNfaW5fY2hubCA9IChsdW5zX2xlZnQgPiBkZXZfZ2VvLT5u dW1fbHVuKSA/DQo+PiArICAgICAgICAgICAgICAgICAgICBkZXZfZ2VvLT5udW1fbHVuIDogbHVu c19sZWZ0Ow0KPj4gICAgICAgICAgICBpZiAobHVuX2JhbGFuY2VkICYmIHByZXZfbnJfbHVucyAh PSBsdW5zX2luX2NobmwpDQo+PiAgICAgICAgICAgICAgbHVuX2JhbGFuY2VkID0gMDsNCj4+IEBA IC0yMTUsMTggKzIxNywyMyBAQCBzdGF0aWMgc3RydWN0IG52bV90Z3RfZGV2ICpudm1fY3JlYXRl X3RndF9kZXYoc3RydWN0IG52bV9kZXYgKmRldiwNCj4+ICAgICAgaWYgKCF0Z3RfZGV2KQ0KPj4g ICAgICAgICAgZ290byBlcnJfY2g7DQo+PiAgLSAgICBtZW1jcHkoJnRndF9kZXYtPmdlbywgJmRl di0+Z2VvLCBzaXplb2Yoc3RydWN0IG52bV9nZW8pKTsNCj4+ICAgICAgLyogVGFyZ2V0IGRldmlj ZSBvbmx5IG93bnMgYSBwb3J0aW9uIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2UgKi8NCj4+IC0gICAg dGd0X2Rldi0+Z2VvLm5yX2NobmxzID0gbnJfY2hubHM7DQo+PiArICAgIHRndF9kZXYtPmdlby5u dW1fY2ggPSBucl9jaG5sczsNCj4+ICsgICAgdGd0X2Rldi0+Z2VvLm51bV9sdW4gPSAobHVuX2Jh bGFuY2VkKSA/IHByZXZfbnJfbHVucyA6IC0xOw0KPj4gICAgICB0Z3RfZGV2LT5nZW8uYWxsX2x1 bnMgPSBucl9sdW5zOw0KPj4gLSAgICB0Z3RfZGV2LT5nZW8ubnJfbHVucyA9IChsdW5fYmFsYW5j ZWQpID8gcHJldl9ucl9sdW5zIDogLTE7DQo+PiArICAgIHRndF9kZXYtPmdlby5hbGxfY2h1bmtz ID0gbnJfbHVucyAqIGRldl9nZW8tPmMubnVtX2NoazsNCj4+ICsNCj4+ICsgICAgdGd0X2Rldi0+ Z2VvLm1heF9ycV9zaXplID0gZGV2LT5vcHMtPm1heF9waHlzX3NlY3QgKiBkZXZfZ2VvLT5jLmNz ZWNzOw0KPj4gICAgICB0Z3RfZGV2LT5nZW8ub3AgPSBvcDsNCj4+IC0gICAgdGd0X2Rldi0+dG90 YWxfc2VjcyA9IG5yX2x1bnMgKiB0Z3RfZGV2LT5nZW8uc2VjX3Blcl9sdW47DQo+PiArDQo+PiAr ICAgIHNlY19wZXJfbHVuID0gZGV2X2dlby0+Yy5jbGJhICogZGV2X2dlby0+Yy5udW1fY2hrOw0K Pj4gKyAgICB0Z3RfZGV2LT5nZW8udG90YWxfc2VjcyA9IG5yX2x1bnMgKiBzZWNfcGVyX2x1bjsN Cj4+ICsNCj4+ICsgICAgdGd0X2Rldi0+Z2VvLmMgPSBkZXZfZ2VvLT5jOw0KPj4gKw0KPj4gICAg ICB0Z3RfZGV2LT5xID0gZGV2LT5xOw0KPj4gICAgICB0Z3RfZGV2LT5tYXAgPSBkZXZfbWFwOw0K Pj4gICAgICB0Z3RfZGV2LT5sdW5zID0gbHVuczsNCj4+IC0gICAgbWVtY3B5KCZ0Z3RfZGV2LT5p ZGVudGl0eSwgJmRldi0+aWRlbnRpdHksIHNpemVvZihzdHJ1Y3QgbnZtX2lkKSk7DQo+PiAtDQo+ PiAgICAgIHRndF9kZXYtPnBhcmVudCA9IGRldjsNCj4+ICAgICAgICByZXR1cm4gdGd0X2RldjsN Cj4+IEBAIC0yNjgsMTIgKzI3NSwxMiBAQCBzdGF0aWMgc3RydWN0IG52bV90Z3RfdHlwZSAqbnZt X2ZpbmRfdGFyZ2V0X3R5cGUoY29uc3QgY2hhciAqbmFtZSkNCj4+ICAgICAgcmV0dXJuIHR0Ow0K Pj4gIH0NCj4+ICAtc3RhdGljIGludCBudm1fY29uZmlnX2NoZWNrX2x1bnMoc3RydWN0IG52bV9n ZW8gKmdlbywgaW50IGx1bl9iZWdpbiwNCj4+ICtzdGF0aWMgaW50IG52bV9jb25maWdfY2hlY2tf bHVucyhzdHJ1Y3QgbnZtX2Rldl9nZW8gKmRldl9nZW8sIGludCBsdW5fYmVnaW4sDQo+PiAgICAg ICAgICAgICAgICAgICBpbnQgbHVuX2VuZCkNCj4+ICB7DQo+PiAtICAgIGlmIChsdW5fYmVnaW4g PiBsdW5fZW5kIHx8IGx1bl9lbmQgPj0gZ2VvLT5hbGxfbHVucykgew0KPj4gKyAgICBpZiAobHVu X2JlZ2luID4gbHVuX2VuZCB8fCBsdW5fZW5kID49IGRldl9nZW8tPmFsbF9sdW5zKSB7DQo+PiAg ICAgICAgICBwcl9lcnIoIm52bTogbHVuIG91dCBvZiBib3VuZCAoJXU6JXUgPiAldSlcbiIsDQo+ PiAtICAgICAgICAgICAgbHVuX2JlZ2luLCBsdW5fZW5kLCBnZW8tPmFsbF9sdW5zIC0gMSk7DQo+ PiArICAgICAgICAgICAgbHVuX2JlZ2luLCBsdW5fZW5kLCBkZXZfZ2VvLT5hbGxfbHVucyAtIDEp Ow0KPj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiAgICAgIH0NCj4+ICBAQCAtMjgzLDI0 ICsyOTAsMjQgQEAgc3RhdGljIGludCBudm1fY29uZmlnX2NoZWNrX2x1bnMoc3RydWN0IG52bV9n ZW8gKmdlbywgaW50IGx1bl9iZWdpbiwNCj4+ICBzdGF0aWMgaW50IF9fbnZtX2NvbmZpZ19zaW1w bGUoc3RydWN0IG52bV9kZXYgKmRldiwNCj4+ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG52 bV9pb2N0bF9jcmVhdGVfc2ltcGxlICpzKQ0KPj4gIHsNCj4+IC0gICAgc3RydWN0IG52bV9nZW8g KmdlbyA9ICZkZXYtPmdlbzsNCj4+ICsgICAgc3RydWN0IG52bV9kZXZfZ2VvICpkZXZfZ2VvID0g JmRldi0+ZGV2X2dlbzsNCj4+ICAgICAgICBpZiAocy0+bHVuX2JlZ2luID09IC0xICYmIHMtPmx1 bl9lbmQgPT0gLTEpIHsNCj4+ICAgICAgICAgIHMtPmx1bl9iZWdpbiA9IDA7DQo+PiAtICAgICAg ICBzLT5sdW5fZW5kID0gZ2VvLT5hbGxfbHVucyAtIDE7DQo+PiArICAgICAgICBzLT5sdW5fZW5k ID0gZGV2X2dlby0+YWxsX2x1bnMgLSAxOw0KPj4gICAgICB9DQo+PiAgLSAgICByZXR1cm4gbnZt X2NvbmZpZ19jaGVja19sdW5zKGdlbywgcy0+bHVuX2JlZ2luLCBzLT5sdW5fZW5kKTsNCj4+ICsg ICAgcmV0dXJuIG52bV9jb25maWdfY2hlY2tfbHVucyhkZXZfZ2VvLCBzLT5sdW5fYmVnaW4sIHMt Pmx1bl9lbmQpOw0KPj4gIH0NCj4+ICAgIHN0YXRpYyBpbnQgX19udm1fY29uZmlnX2V4dGVuZGVk KHN0cnVjdCBudm1fZGV2ICpkZXYsDQo+PiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnZtX2lv Y3RsX2NyZWF0ZV9leHRlbmRlZCAqZSkNCj4+ICB7DQo+PiAtICAgIHN0cnVjdCBudm1fZ2VvICpn ZW8gPSAmZGV2LT5nZW87DQo+PiArICAgIHN0cnVjdCBudm1fZGV2X2dlbyAqZGV2X2dlbyA9ICZk ZXYtPmRldl9nZW87DQo+PiAgICAgICAgaWYgKGUtPmx1bl9iZWdpbiA9PSAweEZGRkYgJiYgZS0+ bHVuX2VuZCA9PSAweEZGRkYpIHsNCj4+ICAgICAgICAgIGUtPmx1bl9iZWdpbiA9IDA7DQo+PiAt ICAgICAgICBlLT5sdW5fZW5kID0gZGV2LT5nZW8uYWxsX2x1bnMgLSAxOw0KPj4gKyAgICAgICAg ZS0+bHVuX2VuZCA9IGRldl9nZW8tPmFsbF9sdW5zIC0gMTsNCj4+ICAgICAgfQ0KPj4gICAgICAg IC8qIG9wIG5vdCBzZXQgZmFsbHMgaW50byB0YXJnZXQncyBkZWZhdWx0ICovDQo+PiBAQCAtMzEz LDcgKzMyMCw3IEBAIHN0YXRpYyBpbnQgX19udm1fY29uZmlnX2V4dGVuZGVkKHN0cnVjdCBudm1f ZGV2ICpkZXYsDQo+PiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICAgICAgfQ0KPj4gIC0g ICAgcmV0dXJuIG52bV9jb25maWdfY2hlY2tfbHVucyhnZW8sIGUtPmx1bl9iZWdpbiwgZS0+bHVu X2VuZCk7DQo+PiArICAgIHJldHVybiBudm1fY29uZmlnX2NoZWNrX2x1bnMoZGV2X2dlbywgZS0+ bHVuX2JlZ2luLCBlLT5sdW5fZW5kKTsNCj4+ICB9DQo+PiAgICBzdGF0aWMgaW50IG52bV9jcmVh dGVfdGd0KHN0cnVjdCBudm1fZGV2ICpkZXYsIHN0cnVjdCBudm1faW9jdGxfY3JlYXRlICpjcmVh dGUpDQo+PiBAQCAtNDk2LDYgKzUwMyw3IEBAIHN0YXRpYyBpbnQgbnZtX3JlbW92ZV90Z3Qoc3Ry dWN0IG52bV9kZXYgKmRldiwgc3RydWN0IG52bV9pb2N0bF9yZW1vdmUgKnJlbW92ZSkNCj4+ICAg IHN0YXRpYyBpbnQgbnZtX3JlZ2lzdGVyX21hcChzdHJ1Y3QgbnZtX2RldiAqZGV2KQ0KPj4gIHsN Cj4+ICsgICAgc3RydWN0IG52bV9kZXZfZ2VvICpkZXZfZ2VvID0gJmRldi0+ZGV2X2dlbzsNCj4+ ICAgICAgc3RydWN0IG52bV9kZXZfbWFwICpybWFwOw0KPj4gICAgICBpbnQgaSwgajsNCj4+ICBA QCAtNTAzLDE1ICs1MTEsMTUgQEAgc3RhdGljIGludCBudm1fcmVnaXN0ZXJfbWFwKHN0cnVjdCBu dm1fZGV2ICpkZXYpDQo+PiAgICAgIGlmICghcm1hcCkNCj4+ICAgICAgICAgIGdvdG8gZXJyX3Jt YXA7DQo+PiAgLSAgICBybWFwLT5jaG5scyA9IGtjYWxsb2MoZGV2LT5nZW8ubnJfY2hubHMsIHNp emVvZihzdHJ1Y3QgbnZtX2NoX21hcCksDQo+PiArICAgIHJtYXAtPmNobmxzID0ga2NhbGxvYyhk ZXZfZ2VvLT5udW1fY2gsIHNpemVvZihzdHJ1Y3QgbnZtX2NoX21hcCksDQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsNCj4+ICAgICAgaWYgKCFybWFwLT5j aG5scykNCj4+ICAgICAgICAgIGdvdG8gZXJyX2NobmxzOw0KPj4gIC0gICAgZm9yIChpID0gMDsg aSA8IGRldi0+Z2VvLm5yX2NobmxzOyBpKyspIHsNCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IGRl dl9nZW8tPm51bV9jaDsgaSsrKSB7DQo+PiAgICAgICAgICBzdHJ1Y3QgbnZtX2NoX21hcCAqY2hf cm1hcDsNCj4+ICAgICAgICAgIGludCAqbHVuX3JvZmZzOw0KPj4gLSAgICAgICAgaW50IGx1bnNf aW5fY2hubCA9IGRldi0+Z2VvLm5yX2x1bnM7DQo+PiArICAgICAgICBpbnQgbHVuc19pbl9jaG5s ID0gZGV2X2dlby0+bnVtX2x1bjsNCj4+ICAgICAgICAgICAgY2hfcm1hcCA9ICZybWFwLT5jaG5s c1tpXTsNCj4+ICBAQCAtNTQyLDEwICs1NTAsMTEgQEAgc3RhdGljIGludCBudm1fcmVnaXN0ZXJf bWFwKHN0cnVjdCBudm1fZGV2ICpkZXYpDQo+PiAgICBzdGF0aWMgdm9pZCBudm1fdW5yZWdpc3Rl cl9tYXAoc3RydWN0IG52bV9kZXYgKmRldikNCj4+ICB7DQo+PiArICAgIHN0cnVjdCBudm1fZGV2 X2dlbyAqZGV2X2dlbyA9ICZkZXYtPmRldl9nZW87DQo+PiAgICAgIHN0cnVjdCBudm1fZGV2X21h cCAqcm1hcCA9IGRldi0+cm1hcDsNCj4+ICAgICAgaW50IGk7DQo+PiAgLSAgICBmb3IgKGkgPSAw OyBpIDwgZGV2LT5nZW8ubnJfY2hubHM7IGkrKykNCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IGRl dl9nZW8tPm51bV9jaDsgaSsrKQ0KPj4gICAgICAgICAga2ZyZWUocm1hcC0+Y2hubHNbaV0ubHVu X29mZnMpOw0KPj4gICAgICAgIGtmcmVlKHJtYXAtPmNobmxzKTsNCj4+IEBAIC02NzQsNyArNjgz LDcgQEAgc3RhdGljIGludCBudm1fc2V0X3JxZF9wcGFsaXN0KHN0cnVjdCBudm1fdGd0X2RldiAq dGd0X2Rldiwgc3RydWN0IG52bV9ycSAqcnFkLA0KPj4gICAgICBpbnQgaSwgcGxhbmVfY250LCBw bF9pZHg7DQo+PiAgICAgIHN0cnVjdCBwcGFfYWRkciBwcGE7DQo+PiAgLSAgICBpZiAoZ2VvLT5w bGFuZV9tb2RlID09IE5WTV9QTEFORV9TSU5HTEUgJiYgbnJfcHBhcyA9PSAxKSB7DQo+PiArICAg IGlmIChnZW8tPmMucGxuX21vZGUgPT0gTlZNX1BMQU5FX1NJTkdMRSAmJiBucl9wcGFzID09IDEp IHsNCj4+ICAgICAgICAgIHJxZC0+bnJfcHBhcyA9IG5yX3BwYXM7DQo+PiAgICAgICAgICBycWQt PnBwYV9hZGRyID0gcHBhc1swXTsNCj4+ICBAQCAtNjg4LDcgKzY5Nyw3IEBAIHN0YXRpYyBpbnQg bnZtX3NldF9ycWRfcHBhbGlzdChzdHJ1Y3QgbnZtX3RndF9kZXYgKnRndF9kZXYsIHN0cnVjdCBu dm1fcnEgKnJxZCwNCj4+ICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4gICAgICB9DQo+PiAg LSAgICBwbGFuZV9jbnQgPSBnZW8tPnBsYW5lX21vZGU7DQo+PiArICAgIHBsYW5lX2NudCA9IGdl by0+Yy5wbG5fbW9kZTsNCj4+ICAgICAgcnFkLT5ucl9wcGFzICo9IHBsYW5lX2NudDsNCj4+ICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfcHBhczsgaSsrKSB7DQo+PiBAQCAtODExLDE4ICs4MjAs MTggQEAgRVhQT1JUX1NZTUJPTChudm1fZW5kX2lvKTsNCj4+ICAgKi8NCj4+ICBpbnQgbnZtX2Ji X3RibF9mb2xkKHN0cnVjdCBudm1fZGV2ICpkZXYsIHU4ICpibGtzLCBpbnQgbnJfYmxrcykNCj4+ ICB7DQo+PiAtICAgIHN0cnVjdCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87DQo+PiArICAgIHN0 cnVjdCBudm1fZGV2X2dlbyAqZGV2X2dlbyA9ICZkZXYtPmRldl9nZW87DQo+PiAgICAgIGludCBi bGssIG9mZnNldCwgcGwsIGJsa3R5cGU7DQo+PiAgLSAgICBpZiAobnJfYmxrcyAhPSBnZW8tPm5y X2Noa3MgKiBnZW8tPnBsYW5lX21vZGUpDQo+PiArICAgIGlmIChucl9ibGtzICE9IGRldl9nZW8t PmMubnVtX2NoayAqIGRldl9nZW8tPmMucGxuX21vZGUpDQo+PiAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCj4+ICAtICAgIGZvciAoYmxrID0gMDsgYmxrIDwgZ2VvLT5ucl9jaGtzOyBibGsrKykg ew0KPj4gLSAgICAgICAgb2Zmc2V0ID0gYmxrICogZ2VvLT5wbGFuZV9tb2RlOw0KPj4gKyAgICBm b3IgKGJsayA9IDA7IGJsayA8IGRldl9nZW8tPmMubnVtX2NoazsgYmxrKyspIHsNCj4+ICsgICAg ICAgIG9mZnNldCA9IGJsayAqIGRldl9nZW8tPmMucGxuX21vZGU7DQo+PiAgICAgICAgICBibGt0 eXBlID0gYmxrc1tvZmZzZXRdOw0KPj4gICAgICAgICAgICAvKiBCYWQgYmxvY2tzIG9uIGFueSBw bGFuZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgdHlwZXMgKi8NCj4+IC0gICAgICAgIGZv ciAocGwgPSAwOyBwbCA8IGdlby0+cGxhbmVfbW9kZTsgcGwrKykgew0KPj4gKyAgICAgICAgZm9y IChwbCA9IDA7IHBsIDwgZGV2X2dlby0+Yy5wbG5fbW9kZTsgcGwrKykgew0KPj4gICAgICAgICAg ICAgIGlmIChibGtzW29mZnNldCArIHBsXSAmDQo+PiAgICAgICAgICAgICAgICAgICAgICAoTlZN X0JMS19UX0JBRHxOVk1fQkxLX1RfR1JXTl9CQUQpKSB7DQo+PiAgICAgICAgICAgICAgICAgIGJs a3R5cGUgPSBibGtzW29mZnNldCArIHBsXTsNCj4+IEBAIC04MzMsNyArODQyLDcgQEAgaW50IG52 bV9iYl90YmxfZm9sZChzdHJ1Y3QgbnZtX2RldiAqZGV2LCB1OCAqYmxrcywgaW50IG5yX2Jsa3Mp DQo+PiAgICAgICAgICBibGtzW2Jsa10gPSBibGt0eXBlOw0KPj4gICAgICB9DQo+PiAgLSAgICBy ZXR1cm4gZ2VvLT5ucl9jaGtzOw0KPj4gKyAgICByZXR1cm4gZGV2X2dlby0+Yy5udW1fY2hrOw0K Pj4gIH0NCj4+ICBFWFBPUlRfU1lNQk9MKG52bV9iYl90YmxfZm9sZCk7DQo+PiAgQEAgLTg1MCw0 NCArODU5LDEwIEBAIEVYUE9SVF9TWU1CT0wobnZtX2dldF90Z3RfYmJfdGJsKTsNCj4+ICAgIHN0 YXRpYyBpbnQgbnZtX2NvcmVfaW5pdChzdHJ1Y3QgbnZtX2RldiAqZGV2KQ0KPj4gIHsNCj4+IC0g ICAgc3RydWN0IG52bV9pZCAqaWQgPSAmZGV2LT5pZGVudGl0eTsNCj4+IC0gICAgc3RydWN0IG52 bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsNCj4+ICsgICAgc3RydWN0IG52bV9kZXZfZ2VvICpkZXZf Z2VvID0gJmRldi0+ZGV2X2dlbzsNCj4+ICAgICAgaW50IHJldDsNCj4+ICAtICAgIG1lbWNweSgm Z2VvLT5wcGFmLCAmaWQtPnBwYWYsIHNpemVvZihzdHJ1Y3QgbnZtX2FkZHJfZm9ybWF0KSk7DQo+ PiAtDQo+PiAtICAgIGlmIChpZC0+bXR5cGUgIT0gMCkgew0KPj4gLSAgICAgICAgcHJfZXJyKCJu dm06IG1lbW9yeSB0eXBlIG5vdCBzdXBwb3J0ZWRcbiIpOw0KPj4gLSAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+PiAtICAgIH0NCj4+IC0NCj4+IC0gICAgLyogV2hvbGUgZGV2aWNlIHZhbHVlcyAq Lw0KPj4gLSAgICBnZW8tPm5yX2NobmxzID0gaWQtPm51bV9jaDsNCj4+IC0gICAgZ2VvLT5ucl9s dW5zID0gaWQtPm51bV9sdW47DQo+PiAtDQo+PiAtICAgIC8qIEdlbmVyaWMgZGV2aWNlIGdlb21l dHJ5IHZhbHVlcyAqLw0KPj4gLSAgICBnZW8tPndzX21pbiA9IGlkLT53c19taW47DQo+PiAtICAg IGdlby0+d3Nfb3B0ID0gaWQtPndzX29wdDsNCj4+IC0gICAgZ2VvLT53c19zZXEgPSBpZC0+d3Nf c2VxOw0KPj4gLSAgICBnZW8tPndzX3Blcl9jaGsgPSBpZC0+d3NfcGVyX2NoazsNCj4+IC0gICAg Z2VvLT5ucl9jaGtzID0gaWQtPm51bV9jaGs7DQo+PiAtICAgIGdlby0+c2VjX3NpemUgPSBpZC0+ Y3NlY3M7DQo+PiAtICAgIGdlby0+b29iX3NpemUgPSBpZC0+c29zOw0KPj4gLSAgICBnZW8tPm1j Y2FwID0gaWQtPm1jY2FwOw0KPj4gLSAgICBnZW8tPm1heF9ycV9zaXplID0gZGV2LT5vcHMtPm1h eF9waHlzX3NlY3QgKiBnZW8tPnNlY19zaXplOw0KPj4gLQ0KPj4gLSAgICBnZW8tPnNlY19wZXJf Y2hrID0gaWQtPmNsYmE7DQo+PiAtICAgIGdlby0+c2VjX3Blcl9sdW4gPSBnZW8tPnNlY19wZXJf Y2hrICogZ2VvLT5ucl9jaGtzOw0KPj4gLSAgICBnZW8tPmFsbF9sdW5zID0gZ2VvLT5ucl9sdW5z ICogZ2VvLT5ucl9jaG5sczsNCj4+IC0NCj4+IC0gICAgLyogMS4yIHNwZWMgZGV2aWNlIGdlb21l dHJ5IHZhbHVlcyAqLw0KPj4gLSAgICBnZW8tPnBsYW5lX21vZGUgPSAxIDw8IGdlby0+d3Nfc2Vx Ow0KPj4gLSAgICBnZW8tPm5yX3BsYW5lcyA9IGdlby0+d3Nfb3B0IC8gZ2VvLT53c19taW47DQo+ PiAtICAgIGdlby0+c2VjX3Blcl9wZyA9IGdlby0+d3NfbWluOw0KPj4gLSAgICBnZW8tPnNlY19w ZXJfcGwgPSBnZW8tPnNlY19wZXJfcGcgKiBnZW8tPm5yX3BsYW5lczsNCj4+IC0NCj4+IC0gICAg ZGV2LT50b3RhbF9zZWNzID0gZ2VvLT5hbGxfbHVucyAqIGdlby0+c2VjX3Blcl9sdW47DQo+PiAt ICAgIGRldi0+bHVuX21hcCA9IGtjYWxsb2MoQklUU19UT19MT05HUyhnZW8tPmFsbF9sdW5zKSwN Cj4+ICsgICAgZGV2LT5sdW5fbWFwID0ga2NhbGxvYyhCSVRTX1RPX0xPTkdTKGRldl9nZW8tPmFs bF9sdW5zKSwNCj4+ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1bnNpZ25lZCBsb25nKSwg R0ZQX0tFUk5FTCk7DQo+PiAgICAgIGlmICghZGV2LT5sdW5fbWFwKQ0KPj4gICAgICAgICAgcmV0 dXJuIC1FTk9NRU07DQo+PiBAQCAtOTAxLDcgKzg3Niw3IEBAIHN0YXRpYyBpbnQgbnZtX2NvcmVf aW5pdChzdHJ1Y3QgbnZtX2RldiAqZGV2KQ0KPj4gICAgICBpZiAocmV0KQ0KPj4gICAgICAgICAg Z290byBlcnJfZm10eXBlOw0KPj4gIC0gICAgYmxrX3F1ZXVlX2xvZ2ljYWxfYmxvY2tfc2l6ZShk ZXYtPnEsIGdlby0+c2VjX3NpemUpOw0KPj4gKyAgICBibGtfcXVldWVfbG9naWNhbF9ibG9ja19z aXplKGRldi0+cSwgZGV2X2dlby0+Yy5jc2Vjcyk7DQo+PiAgICAgIHJldHVybiAwOw0KPj4gIGVy cl9mbXR5cGU6DQo+PiAgICAgIGtmcmVlKGRldi0+bHVuX21hcCk7DQo+PiBAQCAtOTIzLDE5ICs4 OTgsMTcgQEAgc3RhdGljIHZvaWQgbnZtX2ZyZWUoc3RydWN0IG52bV9kZXYgKmRldikNCj4+ICAg IHN0YXRpYyBpbnQgbnZtX2luaXQoc3RydWN0IG52bV9kZXYgKmRldikNCj4+ICB7DQo+PiAtICAg IHN0cnVjdCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87DQo+PiArICAgIHN0cnVjdCBudm1fZGV2 X2dlbyAqZGV2X2dlbyA9ICZkZXYtPmRldl9nZW87DQo+PiAgICAgIGludCByZXQgPSAtRUlOVkFM Ow0KPj4gIC0gICAgaWYgKGRldi0+b3BzLT5pZGVudGl0eShkZXYsICZkZXYtPmlkZW50aXR5KSkg ew0KPj4gKyAgICBpZiAoZGV2LT5vcHMtPmlkZW50aXR5KGRldikpIHsNCj4+ICAgICAgICAgIHBy X2VycigibnZtOiBkZXZpY2UgY291bGQgbm90IGJlIGlkZW50aWZpZWRcbiIpOw0KPj4gICAgICAg ICAgZ290byBlcnI7DQo+PiAgICAgIH0NCj4+ICAtICAgIGlmIChkZXYtPmlkZW50aXR5LnZlcl9p ZCAhPSAxICYmIGRldi0+aWRlbnRpdHkudmVyX2lkICE9IDIpIHsNCj4+IC0gICAgICAgIHByX2Vy cigibnZtOiBkZXZpY2UgdmVyX2lkICVkIG5vdCBzdXBwb3J0ZWQgYnkga2VybmVsLlxuIiwNCj4+ IC0gICAgICAgICAgICAgICAgZGV2LT5pZGVudGl0eS52ZXJfaWQpOw0KPj4gLSAgICAgICAgZ290 byBlcnI7DQo+PiAtICAgIH0NCj4+ICsgICAgcHJfZGVidWcoIm52bTogdmVyOiV1LiV1IG52bV92 ZW5kb3I6JXhcbiIsDQo+PiArICAgICAgICAgICAgICAgIGRldl9nZW8tPm1ham9yX3Zlcl9pZCwg ZGV2X2dlby0+bWlub3JfdmVyX2lkLA0KPj4gKyAgICAgICAgICAgICAgICBkZXZfZ2VvLT5jLnZt bnQpOw0KPj4gICAgICAgIHJldCA9IG52bV9jb3JlX2luaXQoZGV2KTsNCj4+ICAgICAgaWYgKHJl dCkgew0KPj4gQEAgLTk0MywxMCArOTE2LDEwIEBAIHN0YXRpYyBpbnQgbnZtX2luaXQoc3RydWN0 IG52bV9kZXYgKmRldikNCj4+ICAgICAgICAgIGdvdG8gZXJyOw0KPj4gICAgICB9DQo+PiAgLSAg ICBwcl9pbmZvKCJudm06IHJlZ2lzdGVyZWQgJXMgWyV1LyV1LyV1LyV1LyV1LyV1XVxuIiwNCj4+ IC0gICAgICAgICAgICBkZXYtPm5hbWUsIGdlby0+c2VjX3Blcl9wZywgZ2VvLT5ucl9wbGFuZXMs DQo+PiAtICAgICAgICAgICAgZ2VvLT53c19wZXJfY2hrLCBnZW8tPm5yX2Noa3MsDQo+PiAtICAg ICAgICAgICAgZ2VvLT5hbGxfbHVucywgZ2VvLT5ucl9jaG5scyk7DQo+PiArICAgIHByX2luZm8o Im52bTogcmVnaXN0ZXJlZCAlcyBbJXUvJXUvJXUvJXUvJXVdXG4iLA0KPj4gKyAgICAgICAgICAg IGRldi0+bmFtZSwgZGV2X2dlby0+Yy53c19taW4sIGRldl9nZW8tPmMud3Nfb3B0LA0KPj4gKyAg ICAgICAgICAgIGRldl9nZW8tPmMubnVtX2NoaywgZGV2X2dlby0+YWxsX2x1bnMsDQo+PiArICAg ICAgICAgICAgZGV2X2dlby0+bnVtX2NoKTsNCj4+ICAgICAgcmV0dXJuIDA7DQo+PiAgZXJyOg0K Pj4gICAgICBwcl9lcnIoIm52bTogZmFpbGVkIHRvIGluaXRpYWxpemUgbnZtXG4iKTsNCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstY29yZS5jIGIvZHJpdmVycy9saWdodG52 bS9wYmxrLWNvcmUuYw0KPj4gaW5kZXggMjJlNjFjZDRmODAxLi41MTlhZjhiOWVhYjcgMTAwNjQ0 DQo+PiAtLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstY29yZS5jDQo+PiArKysgYi9kcml2ZXJz L2xpZ2h0bnZtL3BibGstY29yZS5jDQo+PiBAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQg cGJsa19saW5lX3N1Ym1pdF9lbWV0YV9pbyhzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtf bGluZSAqbGluZSwNCj4+ICAgICAgbWVtc2V0KCZycWQsIDAsIHNpemVvZihzdHJ1Y3QgbnZtX3Jx KSk7DQo+PiAgICAgICAgcnFfcHBhcyA9IHBibGtfY2FsY19zZWNzKHBibGssIGxlZnRfcHBhcywg MCk7DQo+PiAtICAgIHJxX2xlbiA9IHJxX3BwYXMgKiBnZW8tPnNlY19zaXplOw0KPj4gKyAgICBy cV9sZW4gPSBycV9wcGFzICogZ2VvLT5jLmNzZWNzOw0KPj4gICAgICAgIGJpbyA9IHBibGtfYmlv X21hcF9hZGRyKHBibGssIGVtZXRhX2J1ZiwgcnFfcHBhcywgcnFfbGVuLA0KPj4gICAgICAgICAg ICAgICAgICAgICAgbF9tZy0+ZW1ldGFfYWxsb2NfdHlwZSwgR0ZQX0tFUk5FTCk7DQo+PiBAQCAt NzIyLDcgKzcyMiw3IEBAIHU2NCBwYmxrX2xpbmVfc21ldGFfc3RhcnQoc3RydWN0IHBibGsgKnBi bGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUpDQo+PiAgICAgIGlmIChiaXQgPj0gbG0tPmJsa19w ZXJfbGluZSkNCj4+ICAgICAgICAgIHJldHVybiAtMTsNCj4+ICAtICAgIHJldHVybiBiaXQgKiBn ZW8tPnNlY19wZXJfcGw7DQo+PiArICAgIHJldHVybiBiaXQgKiBnZW8tPmMud3Nfb3B0Ow0KPj4g IH0NCj4+ICAgIHN0YXRpYyBpbnQgcGJsa19saW5lX3N1Ym1pdF9zbWV0YV9pbyhzdHJ1Y3QgcGJs ayAqcGJsaywgc3RydWN0IHBibGtfbGluZSAqbGluZSwNCj4+IEBAIC0xMDM1LDE5ICsxMDM1LDE5 IEBAIHN0YXRpYyBpbnQgcGJsa19saW5lX2luaXRfYmIoc3RydWN0IHBibGsgKnBibGssIHN0cnVj dCBwYmxrX2xpbmUgKmxpbmUsDQo+PiAgICAgIC8qIENhcHR1cmUgYmFkIGJsb2NrIGluZm9ybWF0 aW9uIG9uIGxpbmUgbWFwcGluZyBiaXRtYXBzICovDQo+PiAgICAgIHdoaWxlICgoYml0ID0gZmlu ZF9uZXh0X2JpdChsaW5lLT5ibGtfYml0bWFwLCBsbS0+YmxrX3Blcl9saW5lLA0KPj4gICAgICAg ICAgICAgICAgICAgICAgYml0ICsgMSkpIDwgbG0tPmJsa19wZXJfbGluZSkgew0KPj4gLSAgICAg ICAgb2ZmID0gYml0ICogZ2VvLT5zZWNfcGVyX3BsOw0KPj4gKyAgICAgICAgb2ZmID0gYml0ICog Z2VvLT5jLndzX29wdDsNCj4+ICAgICAgICAgIGJpdG1hcF9zaGlmdF9sZWZ0KGxfbWctPmJiX2F1 eCwgbF9tZy0+YmJfdGVtcGxhdGUsIG9mZiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG0tPnNlY19wZXJfbGluZSk7DQo+PiAgICAgICAgICBiaXRtYXBfb3IobGluZS0+bWFwX2Jp dG1hcCwgbGluZS0+bWFwX2JpdG1hcCwgbF9tZy0+YmJfYXV4LA0KPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsbS0+c2VjX3Blcl9saW5lKTsNCj4+IC0gICAgICAgIGxpbmUtPnNlY19p bl9saW5lIC09IGdlby0+c2VjX3Blcl9jaGs7DQo+PiArICAgICAgICBsaW5lLT5zZWNfaW5fbGlu ZSAtPSBnZW8tPmMuY2xiYTsNCj4+ICAgICAgICAgIGlmIChiaXQgPj0gbG0tPmVtZXRhX2JiKQ0K Pj4gICAgICAgICAgICAgIG5yX2JiKys7DQo+PiAgICAgIH0NCj4+ICAgICAgICAvKiBNYXJrIHNt ZXRhIG1ldGFkYXRhIHNlY3RvcnMgYXMgYmFkIHNlY3RvcnMgKi8NCj4+ICAgICAgYml0ID0gZmlu ZF9maXJzdF96ZXJvX2JpdChsaW5lLT5ibGtfYml0bWFwLCBsbS0+YmxrX3Blcl9saW5lKTsNCj4+ IC0gICAgb2ZmID0gYml0ICogZ2VvLT5zZWNfcGVyX3BsOw0KPj4gKyAgICBvZmYgPSBiaXQgKiBn ZW8tPmMud3Nfb3B0Ow0KPj4gICAgICBiaXRtYXBfc2V0KGxpbmUtPm1hcF9iaXRtYXAsIG9mZiwg bG0tPnNtZXRhX3NlYyk7DQo+PiAgICAgIGxpbmUtPnNlY19pbl9saW5lIC09IGxtLT5zbWV0YV9z ZWM7DQo+PiAgICAgIGxpbmUtPnNtZXRhX3NzZWMgPSBvZmY7DQo+PiBAQCAtMTA2NiwxMCArMTA2 NiwxMCBAQCBzdGF0aWMgaW50IHBibGtfbGluZV9pbml0X2JiKHN0cnVjdCBwYmxrICpwYmxrLCBz dHJ1Y3QgcGJsa19saW5lICpsaW5lLA0KPj4gICAgICBlbWV0YV9zZWNzID0gbG0tPmVtZXRhX3Nl Y1swXTsNCj4+ICAgICAgb2ZmID0gbG0tPnNlY19wZXJfbGluZTsNCj4+ICAgICAgd2hpbGUgKGVt ZXRhX3NlY3MpIHsNCj4+IC0gICAgICAgIG9mZiAtPSBnZW8tPnNlY19wZXJfcGw7DQo+PiArICAg ICAgICBvZmYgLT0gZ2VvLT5jLndzX29wdDsNCj4+ICAgICAgICAgIGlmICghdGVzdF9iaXQob2Zm LCBsaW5lLT5pbnZhbGlkX2JpdG1hcCkpIHsNCj4+IC0gICAgICAgICAgICBiaXRtYXBfc2V0KGxp bmUtPmludmFsaWRfYml0bWFwLCBvZmYsIGdlby0+c2VjX3Blcl9wbCk7DQo+PiAtICAgICAgICAg ICAgZW1ldGFfc2VjcyAtPSBnZW8tPnNlY19wZXJfcGw7DQo+PiArICAgICAgICAgICAgYml0bWFw X3NldChsaW5lLT5pbnZhbGlkX2JpdG1hcCwgb2ZmLCBnZW8tPmMud3Nfb3B0KTsNCj4+ICsgICAg ICAgICAgICBlbWV0YV9zZWNzIC09IGdlby0+Yy53c19vcHQ7DQo+PiAgICAgICAgICB9DQo+PiAg ICAgIH0NCj4+ICBkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLWdjLmMgYi9kcml2 ZXJzL2xpZ2h0bnZtL3BibGstZ2MuYw0KPj4gaW5kZXggMzIwZjk5YWY5OWU5Li4xNmFmZWEzZjU1 NDEgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstZ2MuYw0KPj4gKysrIGIv ZHJpdmVycy9saWdodG52bS9wYmxrLWdjLmMNCj4+IEBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2 b2lkIHBibGtfZ2NfbGluZV93cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+PiAgICAgICAg dXAoJmdjLT5nY19zZW0pOw0KPj4gIC0gICAgZ2NfcnEtPmRhdGEgPSB2bWFsbG9jKGdjX3JxLT5u cl9zZWNzICogZ2VvLT5zZWNfc2l6ZSk7DQo+PiArICAgIGdjX3JxLT5kYXRhID0gdm1hbGxvYyhn Y19ycS0+bnJfc2VjcyAqIGdlby0+Yy5jc2Vjcyk7DQo+PiAgICAgIGlmICghZ2NfcnEtPmRhdGEp IHsNCj4+ICAgICAgICAgIHByX2VycigicGJsazogY291bGQgbm90IEdDIGxpbmU6JWQgKCVkLyVk KVxuIiwNCj4+ICAgICAgICAgICAgICAgICAgICAgIGxpbmUtPmlkLCAqbGluZS0+dnNjLCBnY19y cS0+bnJfc2Vjcyk7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQu YyBiL2RyaXZlcnMvbGlnaHRudm0vcGJsay1pbml0LmMNCj4+IGluZGV4IDg2YTk0YTdmYWE5Ni4u NzJiNzkwMmU1ZDFjIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQu Yw0KPj4gKysrIGIvZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQuYw0KPj4gQEAgLTgwLDcgKzgw LDcgQEAgc3RhdGljIHNpemVfdCBwYmxrX3RyYW5zX21hcF9zaXplKHN0cnVjdCBwYmxrICpwYmxr KQ0KPj4gIHsNCj4+ICAgICAgaW50IGVudHJ5X3NpemUgPSA4Ow0KPj4gIC0gICAgaWYgKHBibGst PnBwYWZfYml0c2l6ZSA8IDMyKQ0KPj4gKyAgICBpZiAocGJsay0+YWRkcmZfbGVuIDwgMzIpDQo+ PiAgICAgICAgICBlbnRyeV9zaXplID0gNDsNCj4+ICAgICAgICByZXR1cm4gZW50cnlfc2l6ZSAq IHBibGstPnJsLm5yX3NlY3M7DQo+PiBAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBpbnQgcGJs a19yd2JfaW5pdChzdHJ1Y3QgcGJsayAqcGJsaykNCj4+ICAgICAgICAgIHJldHVybiAtRU5PTUVN Ow0KPj4gICAgICAgIHBvd2VyX3NpemUgPSBnZXRfY291bnRfb3JkZXIobnJfZW50cmllcyk7DQo+ PiAtICAgIHBvd2VyX3NlZ19zeiA9IGdldF9jb3VudF9vcmRlcihnZW8tPnNlY19zaXplKTsNCj4+ ICsgICAgcG93ZXJfc2VnX3N6ID0gZ2V0X2NvdW50X29yZGVyKGdlby0+Yy5jc2Vjcyk7DQo+PiAg ICAgICAgcmV0dXJuIHBibGtfcmJfaW5pdCgmcGJsay0+cndiLCBlbnRyaWVzLCBwb3dlcl9zaXpl LCBwb3dlcl9zZWdfc3opOw0KPj4gIH0NCj4+IEBAIC0xNTQsNDcgKzE1NCw2MyBAQCBzdGF0aWMg aW50IHBibGtfcndiX2luaXQoc3RydWN0IHBibGsgKnBibGspDQo+PiAgLyogTWluaW11bSBwYWdl cyBuZWVkZWQgd2l0aGluIGEgbHVuICovDQo+PiAgI2RlZmluZSBBRERSX1BPT0xfU0laRSA2NA0K Pj4gIC1zdGF0aWMgaW50IHBibGtfc2V0X3BwYWYoc3RydWN0IHBibGsgKnBibGspDQo+PiArc3Rh dGljIGludCBwYmxrX3NldF9hZGRyZl8xMihzdHJ1Y3QgbnZtX2dlbyAqZ2VvLA0KPj4gKyAgICAg ICAgICAgICAgICAgc3RydWN0IG52bV9hZGRyX2Zvcm1hdF8xMiAqZHN0KQ0KPj4gIHsNCj4+IC0g ICAgc3RydWN0IG52bV90Z3RfZGV2ICpkZXYgPSBwYmxrLT5kZXY7DQo+PiAtICAgIHN0cnVjdCBu dm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87DQo+PiAtICAgIHN0cnVjdCBudm1fYWRkcl9mb3JtYXQg cHBhZiA9IGdlby0+cHBhZjsNCj4+ICsgICAgc3RydWN0IG52bV9hZGRyX2Zvcm1hdF8xMiAqc3Jj ID0NCj4+ICsgICAgICAgICAgICAgICAgKHN0cnVjdCBudm1fYWRkcl9mb3JtYXRfMTIgKikmZ2Vv LT5jLmFkZHJmOw0KPj4gICAgICBpbnQgcG93ZXJfbGVuOw0KPj4gICAgICAgIC8qIFJlLWNhbGN1 bGF0ZSBjaGFubmVsIGFuZCBsdW4gZm9ybWF0IHRvIGFkYXB0IHRvIGNvbmZpZ3VyYXRpb24gKi8N Cj4+IC0gICAgcG93ZXJfbGVuID0gZ2V0X2NvdW50X29yZGVyKGdlby0+bnJfY2hubHMpOw0KPj4g LSAgICBpZiAoMSA8PCBwb3dlcl9sZW4gIT0gZ2VvLT5ucl9jaG5scykgew0KPj4gKyAgICBwb3dl cl9sZW4gPSBnZXRfY291bnRfb3JkZXIoZ2VvLT5udW1fY2gpOw0KPj4gKyAgICBpZiAoMSA8PCBw b3dlcl9sZW4gIT0gZ2VvLT5udW1fY2gpIHsNCj4+ICAgICAgICAgIHByX2VycigicGJsazogc3Vw cG9ydHMgb25seSBwb3dlci1vZi10d28gY2hhbm5lbCBjb25maWcuXG4iKTsNCj4+ICAgICAgICAg IHJldHVybiAtRUlOVkFMOw0KPj4gICAgICB9DQo+PiAtICAgIHBwYWYuY2hfbGVuID0gcG93ZXJf bGVuOw0KPj4gKyAgICBkc3QtPmNoX2xlbiA9IHBvd2VyX2xlbjsNCj4+ICAtICAgIHBvd2VyX2xl biA9IGdldF9jb3VudF9vcmRlcihnZW8tPm5yX2x1bnMpOw0KPj4gLSAgICBpZiAoMSA8PCBwb3dl cl9sZW4gIT0gZ2VvLT5ucl9sdW5zKSB7DQo+PiArICAgIHBvd2VyX2xlbiA9IGdldF9jb3VudF9v cmRlcihnZW8tPm51bV9sdW4pOw0KPj4gKyAgICBpZiAoMSA8PCBwb3dlcl9sZW4gIT0gZ2VvLT5u dW1fbHVuKSB7DQo+PiAgICAgICAgICBwcl9lcnIoInBibGs6IHN1cHBvcnRzIG9ubHkgcG93ZXIt b2YtdHdvIExVTiBjb25maWcuXG4iKTsNCj4+ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4g ICAgICB9DQo+PiAtICAgIHBwYWYubHVuX2xlbiA9IHBvd2VyX2xlbjsNCj4+ICsgICAgZHN0LT5s dW5fbGVuID0gcG93ZXJfbGVuOw0KPj4gIC0gICAgcGJsay0+cHBhZi5zZWNfb2Zmc2V0ID0gMDsN Cj4+IC0gICAgcGJsay0+cHBhZi5wbG5fb2Zmc2V0ID0gcHBhZi5zZWN0X2xlbjsNCj4+IC0gICAg cGJsay0+cHBhZi5jaF9vZmZzZXQgPSBwYmxrLT5wcGFmLnBsbl9vZmZzZXQgKyBwcGFmLnBsbl9s ZW47DQo+PiAtICAgIHBibGstPnBwYWYubHVuX29mZnNldCA9IHBibGstPnBwYWYuY2hfb2Zmc2V0 ICsgcHBhZi5jaF9sZW47DQo+PiAtICAgIHBibGstPnBwYWYucGdfb2Zmc2V0ID0gcGJsay0+cHBh Zi5sdW5fb2Zmc2V0ICsgcHBhZi5sdW5fbGVuOw0KPj4gLSAgICBwYmxrLT5wcGFmLmJsa19vZmZz ZXQgPSBwYmxrLT5wcGFmLnBnX29mZnNldCArIHBwYWYucGdfbGVuOw0KPj4gLSAgICBwYmxrLT5w cGFmLnNlY19tYXNrID0gKDFVTEwgPDwgcHBhZi5zZWN0X2xlbikgLSAxOw0KPj4gLSAgICBwYmxr LT5wcGFmLnBsbl9tYXNrID0gKCgxVUxMIDw8IHBwYWYucGxuX2xlbikgLSAxKSA8PA0KPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYmxrLT5wcGFmLnBsbl9vZmZzZXQ7DQo+PiAtICAg IHBibGstPnBwYWYuY2hfbWFzayA9ICgoMVVMTCA8PCBwcGFmLmNoX2xlbikgLSAxKSA8PA0KPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYmxrLT5wcGFmLmNoX29mZnNldDsNCj4+IC0g ICAgcGJsay0+cHBhZi5sdW5fbWFzayA9ICgoMVVMTCA8PCBwcGFmLmx1bl9sZW4pIC0gMSkgPDwN Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJsay0+cHBhZi5sdW5fb2Zmc2V0Ow0K Pj4gLSAgICBwYmxrLT5wcGFmLnBnX21hc2sgPSAoKDFVTEwgPDwgcHBhZi5wZ19sZW4pIC0gMSkg PDwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJsay0+cHBhZi5wZ19vZmZzZXQ7 DQo+PiAtICAgIHBibGstPnBwYWYuYmxrX21hc2sgPSAoKDFVTEwgPDwgcHBhZi5ibGtfbGVuKSAt IDEpIDw8DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBibGstPnBwYWYuYmxrX29m ZnNldDsNCj4+ICsgICAgZHN0LT5ibGtfbGVuID0gc3JjLT5ibGtfbGVuOw0KPj4gKyAgICBkc3Qt PnBnX2xlbiA9IHNyYy0+cGdfbGVuOw0KPj4gKyAgICBkc3QtPnBsbl9sZW4gPSBzcmMtPnBsbl9s ZW47DQo+PiArICAgIGRzdC0+c2VjX2xlbiA9IHNyYy0+c2VjX2xlbjsNCj4+ICAtICAgIHBibGst PnBwYWZfYml0c2l6ZSA9IHBibGstPnBwYWYuYmxrX29mZnNldCArIHBwYWYuYmxrX2xlbjsNCj4+ ICsgICAgZHN0LT5zZWNfb2Zmc2V0ID0gMDsNCj4+ICsgICAgZHN0LT5wbG5fb2Zmc2V0ID0gZHN0 LT5zZWNfbGVuOw0KPj4gKyAgICBkc3QtPmNoX29mZnNldCA9IGRzdC0+cGxuX29mZnNldCArIGRz dC0+cGxuX2xlbjsNCj4+ICsgICAgZHN0LT5sdW5fb2Zmc2V0ID0gZHN0LT5jaF9vZmZzZXQgKyBk c3QtPmNoX2xlbjsNCj4+ICsgICAgZHN0LT5wZ19vZmZzZXQgPSBkc3QtPmx1bl9vZmZzZXQgKyBk c3QtPmx1bl9sZW47DQo+PiArICAgIGRzdC0+YmxrX29mZnNldCA9IGRzdC0+cGdfb2Zmc2V0ICsg ZHN0LT5wZ19sZW47DQo+PiArDQo+PiArICAgIGRzdC0+c2VjX21hc2sgPSAoKDFVTEwgPDwgZHN0 LT5zZWNfbGVuKSAtIDEpIDw8IGRzdC0+c2VjX29mZnNldDsNCj4+ICsgICAgZHN0LT5wbG5fbWFz ayA9ICgoMVVMTCA8PCBkc3QtPnBsbl9sZW4pIC0gMSkgPDwgZHN0LT5wbG5fb2Zmc2V0Ow0KPj4g KyAgICBkc3QtPmNoX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5jaF9sZW4pIC0gMSkgPDwgZHN0LT5j aF9vZmZzZXQ7DQo+PiArICAgIGRzdC0+bHVuX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5sdW5fbGVu KSAtIDEpIDw8IGRzdC0+bHVuX29mZnNldDsNCj4+ICsgICAgZHN0LT5wZ19tYXNrID0gKCgxVUxM IDw8IGRzdC0+cGdfbGVuKSAtIDEpIDw8IGRzdC0+cGdfb2Zmc2V0Ow0KPj4gKyAgICBkc3QtPmJs a19tYXNrID0gKCgxVUxMIDw8IGRzdC0+YmxrX2xlbikgLSAxKSA8PCBkc3QtPmJsa19vZmZzZXQ7 DQo+PiArDQo+PiArICAgIHJldHVybiBkc3QtPmJsa19vZmZzZXQgKyBzcmMtPmJsa19sZW47DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgcGJsa19zZXRfYWRkcmYoc3RydWN0IHBibGsgKnBi bGspDQo+PiArew0KPj4gKyAgICBzdHJ1Y3QgbnZtX3RndF9kZXYgKmRldiA9IHBibGstPmRldjsN Cj4+ICsgICAgc3RydWN0IG52bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsNCj4+ICsgICAgaW50IG1v ZDsNCj4+ICsNCj4+ICsgICAgZGl2X3U2NF9yZW0oZ2VvLT5jLmNsYmEsIHBibGstPm1pbl93cml0 ZV9wZ3MsICZtb2QpOw0KPj4gKyAgICBpZiAobW9kKSB7DQo+PiArICAgICAgICBwcl9lcnIoInBi bGs6IGJhZCBjb25maWd1cmF0aW9uIG9mIHNlY3RvcnMvcGFnZXNcbiIpOw0KPj4gKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgcGJsay0+YWRkcmZfbGVu ID0gcGJsa19zZXRfYWRkcmZfMTIoZ2VvLCAodm9pZCAqKSZwYmxrLT5hZGRyZik7DQo+PiAgICAg ICAgcmV0dXJuIDA7DQo+PiAgfQ0KPj4gQEAgLTI1Myw4ICsyNjksNyBAQCBzdGF0aWMgaW50IHBi bGtfY29yZV9pbml0KHN0cnVjdCBwYmxrICpwYmxrKQ0KPj4gICAgICBzdHJ1Y3QgbnZtX3RndF9k ZXYgKmRldiA9IHBibGstPmRldjsNCj4+ICAgICAgc3RydWN0IG52bV9nZW8gKmdlbyA9ICZkZXYt PmdlbzsNCj4+ICAtICAgIHBibGstPnBnc19pbl9idWZmZXIgPSBOVk1fTUVNX1BBR0VfV1JJVEUg KiBnZW8tPnNlY19wZXJfcGcgKg0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGdlby0+bnJf cGxhbmVzICogZ2VvLT5hbGxfbHVuczsNCj4+ICsgICAgcGJsay0+cGdzX2luX2J1ZmZlciA9IGdl by0+Yy5td19jdW5pdHMgKiBnZW8tPmMud3Nfb3B0ICogZ2VvLT5hbGxfbHVuczsNCj4+ICAgICAg ICBpZiAocGJsa19pbml0X2dsb2JhbF9jYWNoZXMocGJsaykpDQo+PiAgICAgICAgICByZXR1cm4g LUVOT01FTTsNCj4+IEBAIC0zMDUsNyArMzIwLDcgQEAgc3RhdGljIGludCBwYmxrX2NvcmVfaW5p dChzdHJ1Y3QgcGJsayAqcGJsaykNCj4+ICAgICAgaWYgKCFwYmxrLT5yX2VuZF93cSkNCj4+ICAg ICAgICAgIGdvdG8gZnJlZV9iYl93cTsNCj4+ICAtICAgIGlmIChwYmxrX3NldF9wcGFmKHBibGsp KQ0KPj4gKyAgICBpZiAocGJsa19zZXRfYWRkcmYocGJsaykpDQo+PiAgICAgICAgICBnb3RvIGZy ZWVfcl9lbmRfd3E7DQo+PiAgICAgICAgaWYgKHBibGtfcndiX2luaXQocGJsaykpDQo+PiBAQCAt NDM0LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkICpwYmxrX2JiX2dldF9sb2coc3RydWN0IHBibGsg KnBibGspDQo+PiAgICAgIGludCBpLCBucl9ibGtzLCBibGtfcGVyX2x1bjsNCj4+ICAgICAgaW50 IHJldDsNCj4+ICAtICAgIGJsa19wZXJfbHVuID0gZ2VvLT5ucl9jaGtzICogZ2VvLT5wbGFuZV9t b2RlOw0KPj4gKyAgICBibGtfcGVyX2x1biA9IGdlby0+Yy5udW1fY2hrICogZ2VvLT5jLnBsbl9t b2RlOw0KPj4gICAgICBucl9ibGtzID0gYmxrX3Blcl9sdW4gKiBnZW8tPmFsbF9sdW5zOw0KPj4g ICAgICAgIGxvZyA9IGttYWxsb2MobnJfYmxrcywgR0ZQX0tFUk5FTCk7DQo+PiBAQCAtNDg0LDcg KzQ5OSw3IEBAIHN0YXRpYyBpbnQgcGJsa19sdW5zX2luaXQoc3RydWN0IHBibGsgKnBibGssIHN0 cnVjdCBwcGFfYWRkciAqbHVucykNCj4+ICAgICAgaW50IGk7DQo+PiAgICAgICAgLyogVE9ETzog SW1wbGVtZW50IHVuYmFsYW5jZWQgTFVOIHN1cHBvcnQgKi8NCj4+IC0gICAgaWYgKGdlby0+bnJf bHVucyA8IDApIHsNCj4+ICsgICAgaWYgKGdlby0+bnVtX2x1biA8IDApIHsNCj4+ICAgICAgICAg IHByX2VycigicGJsazogdW5iYWxhbmNlZCBMVU4gY29uZmlnLlxuIik7DQo+PiAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsNCj4+ICAgICAgfQ0KPj4gQEAgLTQ5Niw5ICs1MTEsOSBAQCBzdGF0aWMg aW50IHBibGtfbHVuc19pbml0KHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgcHBhX2FkZHIgKmx1 bnMpDQo+PiAgICAgICAgZm9yIChpID0gMDsgaSA8IGdlby0+YWxsX2x1bnM7IGkrKykgew0KPj4g ICAgICAgICAgLyogU3RyaXBlIGFjcm9zcyBjaGFubmVscyAqLw0KPj4gLSAgICAgICAgaW50IGNo ID0gaSAlIGdlby0+bnJfY2hubHM7DQo+PiAtICAgICAgICBpbnQgbHVuX3JhdyA9IGkgLyBnZW8t Pm5yX2NobmxzOw0KPj4gLSAgICAgICAgaW50IGx1bmlkID0gbHVuX3JhdyArIGNoICogZ2VvLT5u cl9sdW5zOw0KPj4gKyAgICAgICAgaW50IGNoID0gaSAlIGdlby0+bnVtX2NoOw0KPj4gKyAgICAg ICAgaW50IGx1bl9yYXcgPSBpIC8gZ2VvLT5udW1fY2g7DQo+PiArICAgICAgICBpbnQgbHVuaWQg PSBsdW5fcmF3ICsgY2ggKiBnZW8tPm51bV9sdW47DQo+PiAgICAgICAgICAgIHJsdW4gPSAmcGJs ay0+bHVuc1tpXTsNCj4+ICAgICAgICAgIHJsdW4tPmJwcGEgPSBsdW5zW2x1bmlkXTsNCj4+IEBA IC01NTIsMTggKzU2NywxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGNhbGNfZW1ldGFfbGVuKHN0 cnVjdCBwYmxrICpwYmxrKQ0KPj4gICAgICAvKiBSb3VuZCB0byBzZWN0b3Igc2l6ZSBzbyB0aGF0 IGxiYV9saXN0IHN0YXJ0cyBvbiBpdHMgb3duIHNlY3RvciAqLw0KPj4gICAgICBsbS0+ZW1ldGFf c2VjWzFdID0gRElWX1JPVU5EX1VQKA0KPj4gICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbGlu ZV9lbWV0YSkgKyBsbS0+YmxrX2JpdG1hcF9sZW4gKw0KPj4gLSAgICAgICAgICAgIHNpemVvZihz dHJ1Y3Qgd2FfY291bnRlcnMpLCBnZW8tPnNlY19zaXplKTsNCj4+IC0gICAgbG0tPmVtZXRhX2xl blsxXSA9IGxtLT5lbWV0YV9zZWNbMV0gKiBnZW8tPnNlY19zaXplOw0KPj4gKyAgICAgICAgICAg IHNpemVvZihzdHJ1Y3Qgd2FfY291bnRlcnMpLCBnZW8tPmMuY3NlY3MpOw0KPj4gKyAgICBsbS0+ ZW1ldGFfbGVuWzFdID0gbG0tPmVtZXRhX3NlY1sxXSAqIGdlby0+Yy5jc2VjczsNCj4+ICAgICAg ICAvKiBSb3VuZCB0byBzZWN0b3Igc2l6ZSBzbyB0aGF0IHZzY19saXN0IHN0YXJ0cyBvbiBpdHMg b3duIHNlY3RvciAqLw0KPj4gICAgICBsbS0+ZHNlY19wZXJfbGluZSA9IGxtLT5zZWNfcGVyX2xp bmUgLSBsbS0+ZW1ldGFfc2VjWzBdOw0KPj4gICAgICBsbS0+ZW1ldGFfc2VjWzJdID0gRElWX1JP VU5EX1VQKGxtLT5kc2VjX3Blcl9saW5lICogc2l6ZW9mKHU2NCksDQo+PiAtICAgICAgICAgICAg Z2VvLT5zZWNfc2l6ZSk7DQo+PiAtICAgIGxtLT5lbWV0YV9sZW5bMl0gPSBsbS0+ZW1ldGFfc2Vj WzJdICogZ2VvLT5zZWNfc2l6ZTsNCj4+ICsgICAgICAgICAgICBnZW8tPmMuY3NlY3MpOw0KPj4g KyAgICBsbS0+ZW1ldGFfbGVuWzJdID0gbG0tPmVtZXRhX3NlY1syXSAqIGdlby0+Yy5jc2VjczsN Cj4+ICAgICAgICBsbS0+ZW1ldGFfc2VjWzNdID0gRElWX1JPVU5EX1VQKGxfbWctPm5yX2xpbmVz ICogc2l6ZW9mKHUzMiksDQo+PiAtICAgICAgICAgICAgZ2VvLT5zZWNfc2l6ZSk7DQo+PiAtICAg IGxtLT5lbWV0YV9sZW5bM10gPSBsbS0+ZW1ldGFfc2VjWzNdICogZ2VvLT5zZWNfc2l6ZTsNCj4+ ICsgICAgICAgICAgICBnZW8tPmMuY3NlY3MpOw0KPj4gKyAgICBsbS0+ZW1ldGFfbGVuWzNdID0g bG0tPmVtZXRhX3NlY1szXSAqIGdlby0+Yy5jc2VjczsNCj4+ICAgICAgICBsbS0+dnNjX2xpc3Rf bGVuID0gbF9tZy0+bnJfbGluZXMgKiBzaXplb2YodTMyKTsNCj4+ICBAQCAtNTk0LDEzICs2MDks MTMgQEAgc3RhdGljIHZvaWQgcGJsa19zZXRfcHJvdmlzaW9uKHN0cnVjdCBwYmxrICpwYmxrLCBs b25nIG5yX2ZyZWVfYmxrcykNCj4+ICAgICAgICogb24gdXNlciBjYXBhY2l0eSBjb25zaWRlciBv bmx5IHByb3Zpc2lvbmVkIGJsb2Nrcw0KPj4gICAgICAgKi8NCj4+ICAgICAgcGJsay0+cmwudG90 YWxfYmxvY2tzID0gbnJfZnJlZV9ibGtzOw0KPj4gLSAgICBwYmxrLT5ybC5ucl9zZWNzID0gbnJf ZnJlZV9ibGtzICogZ2VvLT5zZWNfcGVyX2NoazsNCj4+ICsgICAgcGJsay0+cmwubnJfc2VjcyA9 IG5yX2ZyZWVfYmxrcyAqIGdlby0+Yy5jbGJhOw0KPj4gICAgICAgIC8qIENvbnNpZGVyIHNlY3Rv cnMgdXNlZCBmb3IgbWV0YWRhdGEgKi8NCj4+ICAgICAgc2VjX21ldGEgPSAobG0tPnNtZXRhX3Nl YyArIGxtLT5lbWV0YV9zZWNbMF0pICogbF9tZy0+bnJfZnJlZV9saW5lczsNCj4+IC0gICAgYmxr X21ldGEgPSBESVZfUk9VTkRfVVAoc2VjX21ldGEsIGdlby0+c2VjX3Blcl9jaGspOw0KPj4gKyAg ICBibGtfbWV0YSA9IERJVl9ST1VORF9VUChzZWNfbWV0YSwgZ2VvLT5jLmNsYmEpOw0KPj4gIC0g ICAgcGJsay0+Y2FwYWNpdHkgPSAocHJvdmlzaW9uZWQgLSBibGtfbWV0YSkgKiBnZW8tPnNlY19w ZXJfY2hrOw0KPj4gKyAgICBwYmxrLT5jYXBhY2l0eSA9IChwcm92aXNpb25lZCAtIGJsa19tZXRh KSAqIGdlby0+Yy5jbGJhOw0KPj4gICAgICAgIGF0b21pY19zZXQoJnBibGstPnJsLmZyZWVfYmxv Y2tzLCBucl9mcmVlX2Jsa3MpOw0KPj4gICAgICBhdG9taWNfc2V0KCZwYmxrLT5ybC5mcmVlX3Vz ZXJfYmxvY2tzLCBucl9mcmVlX2Jsa3MpOw0KPj4gQEAgLTcxMSwxMCArNzI2LDEwIEBAIHN0YXRp YyBpbnQgcGJsa19saW5lc19pbml0KHN0cnVjdCBwYmxrICpwYmxrKQ0KPj4gICAgICB2b2lkICpj aHVua19sb2c7DQo+PiAgICAgIHVuc2lnbmVkIGludCBzbWV0YV9sZW4sIGVtZXRhX2xlbjsNCj4+ ICAgICAgbG9uZyBucl9iYWRfYmxrcyA9IDAsIG5yX2ZyZWVfYmxrcyA9IDA7DQo+PiAtICAgIGlu dCBiYl9kaXN0YW5jZSwgbWF4X3dyaXRlX3BwYXMsIG1vZDsNCj4+ICsgICAgaW50IGJiX2Rpc3Rh bmNlLCBtYXhfd3JpdGVfcHBhczsNCj4+ICAgICAgaW50IGksIHJldDsNCj4+ICAtICAgIHBibGst Pm1pbl93cml0ZV9wZ3MgPSBnZW8tPnNlY19wZXJfcGwgKiAoZ2VvLT5zZWNfc2l6ZSAvIFBBR0Vf U0laRSk7DQo+PiArICAgIHBibGstPm1pbl93cml0ZV9wZ3MgPSBnZW8tPmMud3Nfb3B0ICogKGdl by0+Yy5jc2VjcyAvIFBBR0VfU0laRSk7DQo+PiAgICAgIG1heF93cml0ZV9wcGFzID0gcGJsay0+ bWluX3dyaXRlX3BncyAqIGdlby0+YWxsX2x1bnM7DQo+PiAgICAgIHBibGstPm1heF93cml0ZV9w Z3MgPSAobWF4X3dyaXRlX3BwYXMgPCBudm1fbWF4X3BoeXNfc2VjdHMoZGV2KSkgPw0KPj4gICAg ICAgICAgICAgICAgICBtYXhfd3JpdGVfcHBhcyA6IG52bV9tYXhfcGh5c19zZWN0cyhkZXYpOw0K Pj4gQEAgLTcyNSwxOSArNzQwLDEzIEBAIHN0YXRpYyBpbnQgcGJsa19saW5lc19pbml0KHN0cnVj dCBwYmxrICpwYmxrKQ0KPj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiAgICAgIH0NCj4+ ICAtICAgIGRpdl91NjRfcmVtKGdlby0+c2VjX3Blcl9jaGssIHBibGstPm1pbl93cml0ZV9wZ3Ms ICZtb2QpOw0KPj4gLSAgICBpZiAobW9kKSB7DQo+PiAtICAgICAgICBwcl9lcnIoInBibGs6IGJh ZCBjb25maWd1cmF0aW9uIG9mIHNlY3RvcnMvcGFnZXNcbiIpOw0KPj4gLSAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+PiAtICAgIH0NCj4+IC0NCj4+IC0gICAgbF9tZy0+bnJfbGluZXMgPSBnZW8t Pm5yX2Noa3M7DQo+PiArICAgIGxfbWctPm5yX2xpbmVzID0gZ2VvLT5jLm51bV9jaGs7DQo+PiAg ICAgIGxfbWctPmxvZ19saW5lID0gbF9tZy0+ZGF0YV9saW5lID0gTlVMTDsNCj4+ICAgICAgbF9t Zy0+bF9zZXFfbnIgPSBsX21nLT5kX3NlcV9uciA9IDA7DQo+PiAgICAgIGxfbWctPm5yX2ZyZWVf bGluZXMgPSAwOw0KPj4gICAgICBiaXRtYXBfemVybygmbF9tZy0+bWV0YV9iaXRtYXAsIFBCTEtf REFUQV9MSU5FUyk7DQo+PiAgLSAgICBsbS0+c2VjX3Blcl9saW5lID0gZ2VvLT5zZWNfcGVyX2No ayAqIGdlby0+YWxsX2x1bnM7DQo+PiArICAgIGxtLT5zZWNfcGVyX2xpbmUgPSBnZW8tPmMuY2xi YSAqIGdlby0+YWxsX2x1bnM7DQo+PiAgICAgIGxtLT5ibGtfcGVyX2xpbmUgPSBnZW8tPmFsbF9s dW5zOw0KPj4gICAgICBsbS0+YmxrX2JpdG1hcF9sZW4gPSBCSVRTX1RPX0xPTkdTKGdlby0+YWxs X2x1bnMpICogc2l6ZW9mKGxvbmcpOw0KPj4gICAgICBsbS0+c2VjX2JpdG1hcF9sZW4gPSBCSVRT X1RPX0xPTkdTKGxtLT5zZWNfcGVyX2xpbmUpICogc2l6ZW9mKGxvbmcpOw0KPj4gQEAgLTc1MSw4 ICs3NjAsOCBAQCBzdGF0aWMgaW50IHBibGtfbGluZXNfaW5pdChzdHJ1Y3QgcGJsayAqcGJsaykN Cj4+ICAgICAgICovDQo+PiAgICAgIGkgPSAxOw0KPj4gIGFkZF9zbWV0YV9wYWdlOg0KPj4gLSAg ICBsbS0+c21ldGFfc2VjID0gaSAqIGdlby0+c2VjX3Blcl9wbDsNCj4+IC0gICAgbG0tPnNtZXRh X2xlbiA9IGxtLT5zbWV0YV9zZWMgKiBnZW8tPnNlY19zaXplOw0KPj4gKyAgICBsbS0+c21ldGFf c2VjID0gaSAqIGdlby0+Yy53c19vcHQ7DQo+PiArICAgIGxtLT5zbWV0YV9sZW4gPSBsbS0+c21l dGFfc2VjICogZ2VvLT5jLmNzZWNzOw0KPj4gICAgICAgIHNtZXRhX2xlbiA9IHNpemVvZihzdHJ1 Y3QgbGluZV9zbWV0YSkgKyBsbS0+bHVuX2JpdG1hcF9sZW47DQo+PiAgICAgIGlmIChzbWV0YV9s ZW4gPiBsbS0+c21ldGFfbGVuKSB7DQo+PiBAQCAtNzY1LDggKzc3NCw4IEBAIHN0YXRpYyBpbnQg cGJsa19saW5lc19pbml0KHN0cnVjdCBwYmxrICpwYmxrKQ0KPj4gICAgICAgKi8NCj4+ICAgICAg aSA9IDE7DQo+PiAgYWRkX2VtZXRhX3BhZ2U6DQo+PiAtICAgIGxtLT5lbWV0YV9zZWNbMF0gPSBp ICogZ2VvLT5zZWNfcGVyX3BsOw0KPj4gLSAgICBsbS0+ZW1ldGFfbGVuWzBdID0gbG0tPmVtZXRh X3NlY1swXSAqIGdlby0+c2VjX3NpemU7DQo+PiArICAgIGxtLT5lbWV0YV9zZWNbMF0gPSBpICog Z2VvLT5jLndzX29wdDsNCj4+ICsgICAgbG0tPmVtZXRhX2xlblswXSA9IGxtLT5lbWV0YV9zZWNb MF0gKiBnZW8tPmMuY3NlY3M7DQo+PiAgICAgICAgZW1ldGFfbGVuID0gY2FsY19lbWV0YV9sZW4o cGJsayk7DQo+PiAgICAgIGlmIChlbWV0YV9sZW4gPiBsbS0+ZW1ldGFfbGVuWzBdKSB7DQo+PiBA QCAtNzc5LDcgKzc4OCw3IEBAIHN0YXRpYyBpbnQgcGJsa19saW5lc19pbml0KHN0cnVjdCBwYmxr ICpwYmxrKQ0KPj4gICAgICBsbS0+bWluX2Jsa19saW5lID0gMTsNCj4+ICAgICAgaWYgKGdlby0+ YWxsX2x1bnMgPiAxKQ0KPj4gICAgICAgICAgbG0tPm1pbl9ibGtfbGluZSArPSBESVZfUk9VTkRf VVAobG0tPnNtZXRhX3NlYyArDQo+PiAtICAgICAgICAgICAgICAgICAgICBsbS0+ZW1ldGFfc2Vj WzBdLCBnZW8tPnNlY19wZXJfY2hrKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgIGxtLT5lbWV0 YV9zZWNbMF0sIGdlby0+Yy5jbGJhKTsNCj4+ICAgICAgICBpZiAobG0tPm1pbl9ibGtfbGluZSA+ IGxtLT5ibGtfcGVyX2xpbmUpIHsNCj4+ICAgICAgICAgIHByX2VycigicGJsazogY29uZmlnLiBu b3Qgc3VwcG9ydGVkLiBNaW4uIExVTiBpbiBsaW5lOiVkXG4iLA0KPj4gQEAgLTgwMyw5ICs4MTIs OSBAQCBzdGF0aWMgaW50IHBibGtfbGluZXNfaW5pdChzdHJ1Y3QgcGJsayAqcGJsaykNCj4+ICAg ICAgICAgIGdvdG8gZmFpbF9mcmVlX2JiX3RlbXBsYXRlOw0KPj4gICAgICB9DQo+PiAgLSAgICBi Yl9kaXN0YW5jZSA9IChnZW8tPmFsbF9sdW5zKSAqIGdlby0+c2VjX3Blcl9wbDsNCj4+ICsgICAg YmJfZGlzdGFuY2UgPSAoZ2VvLT5hbGxfbHVucykgKiBnZW8tPmMud3Nfb3B0Ow0KPj4gICAgICBm b3IgKGkgPSAwOyBpIDwgbG0tPnNlY19wZXJfbGluZTsgaSArPSBiYl9kaXN0YW5jZSkNCj4+IC0g ICAgICAgIGJpdG1hcF9zZXQobF9tZy0+YmJfdGVtcGxhdGUsIGksIGdlby0+c2VjX3Blcl9wbCk7 DQo+PiArICAgICAgICBiaXRtYXBfc2V0KGxfbWctPmJiX3RlbXBsYXRlLCBpLCBnZW8tPmMud3Nf b3B0KTsNCj4+ICAgICAgICBJTklUX0xJU1RfSEVBRCgmbF9tZy0+ZnJlZV9saXN0KTsNCj4+ICAg ICAgSU5JVF9MSVNUX0hFQUQoJmxfbWctPmNvcnJ1cHRfbGlzdCk7DQo+PiBAQCAtOTgyLDkgKzk5 MSwxNSBAQCBzdGF0aWMgdm9pZCAqcGJsa19pbml0KHN0cnVjdCBudm1fdGd0X2RldiAqZGV2LCBz dHJ1Y3QgZ2VuZGlzayAqdGRpc2ssDQo+PiAgICAgIHN0cnVjdCBwYmxrICpwYmxrOw0KPj4gICAg ICBpbnQgcmV0Ow0KPj4gIC0gICAgaWYgKGRldi0+aWRlbnRpdHkuZG9tICYgTlZNX1JTUF9MMlAp IHsNCj4+ICsgICAgaWYgKGdlby0+Yy52ZXJzaW9uICE9IE5WTV9PQ1NTRF9TUEVDXzEyKSB7DQo+ PiArICAgICAgICBwcl9lcnIoInBibGs6IE9DU1NEIHZlcnNpb24gbm90IHN1cHBvcnRlZCAoJXUp XG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW8tPmMudmVyc2lvbik7DQo+ PiArICAgICAgICByZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4g KyAgICBpZiAoZ2VvLT5jLnZlcnNpb24gPT0gTlZNX09DU1NEX1NQRUNfMTIgJiYgZ2VvLT5jLmRv bSAmIE5WTV9SU1BfTDJQKSB7DQo+PiAgICAgICAgICBwcl9lcnIoInBibGs6IGhvc3Qtc2lkZSBM MlAgdGFibGUgbm90IHN1cHBvcnRlZC4gKCV4KVxuIiwNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGV2LT5pZGVudGl0eS5kb20pOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZW8tPmMuZG9tKTsNCj4+ICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOw0K Pj4gICAgICB9DQo+PiAgQEAgLTEwOTIsNyArMTEwNyw3IEBAIHN0YXRpYyB2b2lkICpwYmxrX2lu aXQoc3RydWN0IG52bV90Z3RfZGV2ICpkZXYsIHN0cnVjdCBnZW5kaXNrICp0ZGlzaywNCj4+ICAg ICAgICBibGtfcXVldWVfd3JpdGVfY2FjaGUodHF1ZXVlLCB0cnVlLCBmYWxzZSk7DQo+PiAgLSAg ICB0cXVldWUtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0gZ2VvLT5zZWNfcGVyX2NoayAq IGdlby0+c2VjX3NpemU7DQo+PiArICAgIHRxdWV1ZS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBnZW8tPmMuY2xiYSAqIGdlby0+Yy5jc2VjczsNCj4+ICAgICAgdHF1ZXVlLT5saW1pdHMu ZGlzY2FyZF9hbGlnbm1lbnQgPSAwOw0KPj4gICAgICBibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2Vj dG9ycyh0cXVldWUsIFVJTlRfTUFYID4+IDkpOw0KPj4gICAgICBxdWV1ZV9mbGFnX3NldF91bmxv Y2tlZChRVUVVRV9GTEFHX0RJU0NBUkQsIHRxdWV1ZSk7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9saWdodG52bS9wYmxrLXJlYWQuYyBiL2RyaXZlcnMvbGlnaHRudm0vcGJsay1yZWFkLmMNCj4+ IGluZGV4IDJmNzYxMjgzZjQzZS4uZWJiNmJhZTNhM2I4IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVy cy9saWdodG52bS9wYmxrLXJlYWQuYw0KPj4gKysrIGIvZHJpdmVycy9saWdodG52bS9wYmxrLXJl YWQuYw0KPj4gQEAgLTU2Myw3ICs1NjMsNyBAQCBpbnQgcGJsa19zdWJtaXRfcmVhZF9nYyhzdHJ1 Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtfZ2NfcnEgKmdjX3JxKQ0KPj4gICAgICBpZiAoIShn Y19ycS0+c2Vjc190b19nYykpDQo+PiAgICAgICAgICBnb3RvIG91dDsNCj4+ICAtICAgIGRhdGFf bGVuID0gKGdjX3JxLT5zZWNzX3RvX2djKSAqIGdlby0+c2VjX3NpemU7DQo+PiArICAgIGRhdGFf bGVuID0gKGdjX3JxLT5zZWNzX3RvX2djKSAqIGdlby0+Yy5jc2VjczsNCj4+ICAgICAgYmlvID0g cGJsa19iaW9fbWFwX2FkZHIocGJsaywgZ2NfcnEtPmRhdGEsIGdjX3JxLT5zZWNzX3RvX2djLCBk YXRhX2xlbiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBQQkxLX1ZNQUxMT0NfTUVUQSwg R0ZQX0tFUk5FTCk7DQo+PiAgICAgIGlmIChJU19FUlIoYmlvKSkgew0KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbGlnaHRudm0vcGJsay1yZWNvdmVyeS5jIGIvZHJpdmVycy9saWdodG52bS9wYmxr LXJlY292ZXJ5LmMNCj4+IGluZGV4IGU3NWExYWYyZWViZS4uYmVhY2VmMTQxMmEyIDEwMDY0NA0K Pj4gLS0tIGEvZHJpdmVycy9saWdodG52bS9wYmxrLXJlY292ZXJ5LmMNCj4+ICsrKyBiL2RyaXZl cnMvbGlnaHRudm0vcGJsay1yZWNvdmVyeS5jDQo+PiBAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRp YyBpbnQgcGJsa19jYWxjX3NlY19pbl9saW5lKHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgcGJs a19saW5lICpsaW5lKQ0KPj4gICAgICBpbnQgbnJfYmIgPSBiaXRtYXBfd2VpZ2h0KGxpbmUtPmJs a19iaXRtYXAsIGxtLT5ibGtfcGVyX2xpbmUpOw0KPj4gICAgICAgIHJldHVybiBsbS0+c2VjX3Bl cl9saW5lIC0gbG0tPnNtZXRhX3NlYyAtIGxtLT5lbWV0YV9zZWNbMF0gLQ0KPj4gLSAgICAgICAg ICAgICAgICBucl9iYiAqIGdlby0+c2VjX3Blcl9jaGs7DQo+PiArICAgICAgICAgICAgICAgIG5y X2JiICogZ2VvLT5jLmNsYmE7DQo+PiAgfQ0KPj4gICAgc3RydWN0IHBibGtfcmVjb3ZfYWxsb2Mg ew0KPj4gQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgaW50IHBibGtfcmVjb3ZfcmVhZF9vb2Io c3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsDQo+PiAgICAgIHJxX3Bw YXMgPSBwYmxrX2NhbGNfc2VjcyhwYmxrLCBsZWZ0X3BwYXMsIDApOw0KPj4gICAgICBpZiAoIXJx X3BwYXMpDQo+PiAgICAgICAgICBycV9wcGFzID0gcGJsay0+bWluX3dyaXRlX3BnczsNCj4+IC0g ICAgcnFfbGVuID0gcnFfcHBhcyAqIGdlby0+c2VjX3NpemU7DQo+PiArICAgIHJxX2xlbiA9IHJx X3BwYXMgKiBnZW8tPmMuY3NlY3M7DQo+PiAgICAgICAgYmlvID0gYmlvX21hcF9rZXJuKGRldi0+ cSwgZGF0YSwgcnFfbGVuLCBHRlBfS0VSTkVMKTsNCj4+ICAgICAgaWYgKElTX0VSUihiaW8pKQ0K Pj4gQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgaW50IHBibGtfcmVjb3ZfcGFkX29vYihzdHJ1 Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtfbGluZSAqbGluZSwNCj4+ICAgICAgaWYgKCFwYWRf cnEpDQo+PiAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICAtICAgIGRhdGEgPSB2emFsbG9j KHBibGstPm1heF93cml0ZV9wZ3MgKiBnZW8tPnNlY19zaXplKTsNCj4+ICsgICAgZGF0YSA9IHZ6 YWxsb2MocGJsay0+bWF4X3dyaXRlX3BncyAqIGdlby0+Yy5jc2Vjcyk7DQo+PiAgICAgIGlmICgh ZGF0YSkgew0KPj4gICAgICAgICAgcmV0ID0gLUVOT01FTTsNCj4+ICAgICAgICAgIGdvdG8gZnJl ZV9ycTsNCj4+IEBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIGludCBwYmxrX3JlY292X3BhZF9v b2Ioc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsDQo+PiAgICAgICAg ICBnb3RvIGZhaWxfZnJlZV9wYWQ7DQo+PiAgICAgIH0NCj4+ICAtICAgIHJxX2xlbiA9IHJxX3Bw YXMgKiBnZW8tPnNlY19zaXplOw0KPj4gKyAgICBycV9sZW4gPSBycV9wcGFzICogZ2VvLT5jLmNz ZWNzOw0KPj4gICAgICAgIG1ldGFfbGlzdCA9IG52bV9kZXZfZG1hX2FsbG9jKGRldi0+cGFyZW50 LCBHRlBfS0VSTkVMLCAmZG1hX21ldGFfbGlzdCk7DQo+PiAgICAgIGlmICghbWV0YV9saXN0KSB7 DQo+PiBAQCAtNTEzLDcgKzUxMyw3IEBAIHN0YXRpYyBpbnQgcGJsa19yZWNvdl9zY2FuX2FsbF9v b2Ioc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsDQo+PiAgICAgIHJx X3BwYXMgPSBwYmxrX2NhbGNfc2VjcyhwYmxrLCBsZWZ0X3BwYXMsIDApOw0KPj4gICAgICBpZiAo IXJxX3BwYXMpDQo+PiAgICAgICAgICBycV9wcGFzID0gcGJsay0+bWluX3dyaXRlX3BnczsNCj4+ IC0gICAgcnFfbGVuID0gcnFfcHBhcyAqIGdlby0+c2VjX3NpemU7DQo+PiArICAgIHJxX2xlbiA9 IHJxX3BwYXMgKiBnZW8tPmMuY3NlY3M7DQo+PiAgICAgICAgYmlvID0gYmlvX21hcF9rZXJuKGRl di0+cSwgZGF0YSwgcnFfbGVuLCBHRlBfS0VSTkVMKTsNCj4+ICAgICAgaWYgKElTX0VSUihiaW8p KQ0KPj4gQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgaW50IHBibGtfcmVjb3Zfc2Nhbl9vb2Io c3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsDQo+PiAgICAgIHJxX3Bw YXMgPSBwYmxrX2NhbGNfc2VjcyhwYmxrLCBsZWZ0X3BwYXMsIDApOw0KPj4gICAgICBpZiAoIXJx X3BwYXMpDQo+PiAgICAgICAgICBycV9wcGFzID0gcGJsay0+bWluX3dyaXRlX3BnczsNCj4+IC0g ICAgcnFfbGVuID0gcnFfcHBhcyAqIGdlby0+c2VjX3NpemU7DQo+PiArICAgIHJxX2xlbiA9IHJx X3BwYXMgKiBnZW8tPmMuY3NlY3M7DQo+PiAgICAgICAgYmlvID0gYmlvX21hcF9rZXJuKGRldi0+ cSwgZGF0YSwgcnFfbGVuLCBHRlBfS0VSTkVMKTsNCj4+ICAgICAgaWYgKElTX0VSUihiaW8pKQ0K Pj4gQEAgLTc0OSw3ICs3NDksNyBAQCBzdGF0aWMgaW50IHBibGtfcmVjb3ZfbDJwX2Zyb21fb29i KHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lKQ0KPj4gICAgICBwcGFf bGlzdCA9ICh2b2lkICopKG1ldGFfbGlzdCkgKyBwYmxrX2RtYV9tZXRhX3NpemU7DQo+PiAgICAg IGRtYV9wcGFfbGlzdCA9IGRtYV9tZXRhX2xpc3QgKyBwYmxrX2RtYV9tZXRhX3NpemU7DQo+PiAg LSAgICBkYXRhID0ga2NhbGxvYyhwYmxrLT5tYXhfd3JpdGVfcGdzLCBnZW8tPnNlY19zaXplLCBH RlBfS0VSTkVMKTsNCj4+ICsgICAgZGF0YSA9IGtjYWxsb2MocGJsay0+bWF4X3dyaXRlX3Bncywg Z2VvLT5jLmNzZWNzLCBHRlBfS0VSTkVMKTsNCj4+ICAgICAgaWYgKCFkYXRhKSB7DQo+PiAgICAg ICAgICByZXQgPSAtRU5PTUVNOw0KPj4gICAgICAgICAgZ290byBmcmVlX21ldGFfbGlzdDsNCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstcmwuYyBiL2RyaXZlcnMvbGlnaHRu dm0vcGJsay1ybC5jDQo+PiBpbmRleCAwZDQ1N2IxNjJmMjMuLmJjYWIyMDM0NzdlYyAxMDA2NDQN Cj4+IC0tLSBhL2RyaXZlcnMvbGlnaHRudm0vcGJsay1ybC5jDQo+PiArKysgYi9kcml2ZXJzL2xp Z2h0bnZtL3BibGstcmwuYw0KPj4gQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIHBibGtfcmxfaW5p dChzdHJ1Y3QgcGJsa19ybCAqcmwsIGludCBidWRnZXQpDQo+PiAgICAgICAgLyogQ29uc2lkZXIg c2VjdG9ycyB1c2VkIGZvciBtZXRhZGF0YSAqLw0KPj4gICAgICBzZWNfbWV0YSA9IChsbS0+c21l dGFfc2VjICsgbG0tPmVtZXRhX3NlY1swXSkgKiBsX21nLT5ucl9mcmVlX2xpbmVzOw0KPj4gLSAg ICBibGtfbWV0YSA9IERJVl9ST1VORF9VUChzZWNfbWV0YSwgZ2VvLT5zZWNfcGVyX2Noayk7DQo+ PiArICAgIGJsa19tZXRhID0gRElWX1JPVU5EX1VQKHNlY19tZXRhLCBnZW8tPmMuY2xiYSk7DQo+ PiAgICAgICAgcmwtPmhpZ2ggPSBwYmxrLT5vcF9ibGtzIC0gYmxrX21ldGEgLSBsbS0+YmxrX3Bl cl9saW5lOw0KPj4gICAgICBybC0+aGlnaF9wdyA9IGdldF9jb3VudF9vcmRlcihybC0+aGlnaCk7 DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLXN5c2ZzLmMgYi9kcml2ZXJz L2xpZ2h0bnZtL3BibGstc3lzZnMuYw0KPj4gaW5kZXggZDkzZTliMWYwODNhLi5kM2I1MDc0MWI2 OTEgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstc3lzZnMuYw0KPj4gKysr IGIvZHJpdmVycy9saWdodG52bS9wYmxrLXN5c2ZzLmMNCj4+IEBAIC0xMTMsMjYgKzExMywzMSBA QCBzdGF0aWMgc3NpemVfdCBwYmxrX3N5c2ZzX3BwYWYoc3RydWN0IHBibGsgKnBibGssIGNoYXIg KnBhZ2UpDQo+PiAgew0KPj4gICAgICBzdHJ1Y3QgbnZtX3RndF9kZXYgKmRldiA9IHBibGstPmRl djsNCj4+ICAgICAgc3RydWN0IG52bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsNCj4+ICsgICAgc3Ry dWN0IG52bV9hZGRyX2Zvcm1hdF8xMiAqcHBhZjsNCj4+ICsgICAgc3RydWN0IG52bV9hZGRyX2Zv cm1hdF8xMiAqZ2VvX3BwYWY7DQo+PiAgICAgIHNzaXplX3Qgc3ogPSAwOw0KPj4gIC0gICAgc3og PSBzbnByaW50ZihwYWdlLCBQQUdFX1NJWkUgLSBzeiwNCj4+IC0gICAgICAgICJnOihiOiVkKWJs azolZC8lZCxwZzolZC8lZCxsdW46JWQvJWQsY2g6JWQvJWQscGw6JWQvJWQsc2VjOiVkLyVkXG4i LA0KPj4gLSAgICAgICAgcGJsay0+cHBhZl9iaXRzaXplLA0KPj4gLSAgICAgICAgcGJsay0+cHBh Zi5ibGtfb2Zmc2V0LCBnZW8tPnBwYWYuYmxrX2xlbiwNCj4+IC0gICAgICAgIHBibGstPnBwYWYu cGdfb2Zmc2V0LCBnZW8tPnBwYWYucGdfbGVuLA0KPj4gLSAgICAgICAgcGJsay0+cHBhZi5sdW5f b2Zmc2V0LCBnZW8tPnBwYWYubHVuX2xlbiwNCj4+IC0gICAgICAgIHBibGstPnBwYWYuY2hfb2Zm c2V0LCBnZW8tPnBwYWYuY2hfbGVuLA0KPj4gLSAgICAgICAgcGJsay0+cHBhZi5wbG5fb2Zmc2V0 LCBnZW8tPnBwYWYucGxuX2xlbiwNCj4+IC0gICAgICAgIHBibGstPnBwYWYuc2VjX29mZnNldCwg Z2VvLT5wcGFmLnNlY3RfbGVuKTsNCj4+ICsgICAgcHBhZiA9IChzdHJ1Y3QgbnZtX2FkZHJfZm9y bWF0XzEyICopJnBibGstPmFkZHJmOw0KPj4gKyAgICBnZW9fcHBhZiA9IChzdHJ1Y3QgbnZtX2Fk ZHJfZm9ybWF0XzEyICopJmdlby0+Yy5hZGRyZjsNCj4+ICsNCj4+ICsgICAgc3ogPSBzbnByaW50 ZihwYWdlLCBQQUdFX1NJWkUsDQo+PiArICAgICAgICAicGJsazooczolZCljaDolZC8lZCxsdW46 JWQvJWQsYmxrOiVkLyVkLHBnOiVkLyVkLHBsOiVkLyVkLHNlYzolZC8lZFxuIiwNCj4+ICsgICAg ICAgICAgICBwYmxrLT5hZGRyZl9sZW4sDQo+PiArICAgICAgICAgICAgcHBhZi0+Y2hfb2Zmc2V0 LCBwcGFmLT5jaF9sZW4sDQo+PiArICAgICAgICAgICAgcHBhZi0+bHVuX29mZnNldCwgcHBhZi0+ bHVuX2xlbiwNCj4+ICsgICAgICAgICAgICBwcGFmLT5ibGtfb2Zmc2V0LCBwcGFmLT5ibGtfbGVu LA0KPj4gKyAgICAgICAgICAgIHBwYWYtPnBnX29mZnNldCwgcHBhZi0+cGdfbGVuLA0KPj4gKyAg ICAgICAgICAgIHBwYWYtPnBsbl9vZmZzZXQsIHBwYWYtPnBsbl9sZW4sDQo+PiArICAgICAgICAg ICAgcHBhZi0+c2VjX29mZnNldCwgcHBhZi0+c2VjX2xlbik7DQo+PiAgICAgICAgc3ogKz0gc25w cmludGYocGFnZSArIHN6LCBQQUdFX1NJWkUgLSBzeiwNCj4+IC0gICAgICAgICJkOmJsazolZC8l ZCxwZzolZC8lZCxsdW46JWQvJWQsY2g6JWQvJWQscGw6JWQvJWQsc2VjOiVkLyVkXG4iLA0KPj4g LSAgICAgICAgZ2VvLT5wcGFmLmJsa19vZmZzZXQsIGdlby0+cHBhZi5ibGtfbGVuLA0KPj4gLSAg ICAgICAgZ2VvLT5wcGFmLnBnX29mZnNldCwgZ2VvLT5wcGFmLnBnX2xlbiwNCj4+IC0gICAgICAg IGdlby0+cHBhZi5sdW5fb2Zmc2V0LCBnZW8tPnBwYWYubHVuX2xlbiwNCj4+IC0gICAgICAgIGdl by0+cHBhZi5jaF9vZmZzZXQsIGdlby0+cHBhZi5jaF9sZW4sDQo+PiAtICAgICAgICBnZW8tPnBw YWYucGxuX29mZnNldCwgZ2VvLT5wcGFmLnBsbl9sZW4sDQo+PiAtICAgICAgICBnZW8tPnBwYWYu c2VjdF9vZmZzZXQsIGdlby0+cHBhZi5zZWN0X2xlbik7DQo+PiArICAgICAgICAiZGV2aWNlOmNo OiVkLyVkLGx1bjolZC8lZCxibGs6JWQvJWQscGc6JWQvJWQscGw6JWQvJWQsc2VjOiVkLyVkXG4i LA0KPj4gKyAgICAgICAgICAgIGdlb19wcGFmLT5jaF9vZmZzZXQsIGdlb19wcGFmLT5jaF9sZW4s DQo+PiArICAgICAgICAgICAgZ2VvX3BwYWYtPmx1bl9vZmZzZXQsIGdlb19wcGFmLT5sdW5fbGVu LA0KPj4gKyAgICAgICAgICAgIGdlb19wcGFmLT5ibGtfb2Zmc2V0LCBnZW9fcHBhZi0+YmxrX2xl biwNCj4+ICsgICAgICAgICAgICBnZW9fcHBhZi0+cGdfb2Zmc2V0LCBnZW9fcHBhZi0+cGdfbGVu LA0KPj4gKyAgICAgICAgICAgIGdlb19wcGFmLT5wbG5fb2Zmc2V0LCBnZW9fcHBhZi0+cGxuX2xl biwNCj4+ICsgICAgICAgICAgICBnZW9fcHBhZi0+c2VjX29mZnNldCwgZ2VvX3BwYWYtPnNlY19s ZW4pOw0KPj4gICAgICAgIHJldHVybiBzejsNCj4+ICB9DQo+PiBAQCAtMjg4LDcgKzI5Myw3IEBA IHN0YXRpYyBzc2l6ZV90IHBibGtfc3lzZnNfbGluZXNfaW5mbyhzdHJ1Y3QgcGJsayAqcGJsaywg Y2hhciAqcGFnZSkNCj4+ICAgICAgICAgICAgICAgICAgImJsa19saW5lOiVkLCBzZWNfbGluZTol ZCwgc2VjX2JsazolZFxuIiwNCj4+ICAgICAgICAgICAgICAgICAgICAgIGxtLT5ibGtfcGVyX2xp bmUsDQo+PiAgICAgICAgICAgICAgICAgICAgICBsbS0+c2VjX3Blcl9saW5lLA0KPj4gLSAgICAg ICAgICAgICAgICAgICAgZ2VvLT5zZWNfcGVyX2Noayk7DQo+PiArICAgICAgICAgICAgICAgICAg ICBnZW8tPmMuY2xiYSk7DQo+PiAgICAgICAgcmV0dXJuIHN6Ow0KPj4gIH0NCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstd3JpdGUuYyBiL2RyaXZlcnMvbGlnaHRudm0vcGJs ay13cml0ZS5jDQo+PiBpbmRleCBhYWU4NmVkNjBiOTguLmM0OWIyNzUzOWQ1YSAxMDA2NDQNCj4+ IC0tLSBhL2RyaXZlcnMvbGlnaHRudm0vcGJsay13cml0ZS5jDQo+PiArKysgYi9kcml2ZXJzL2xp Z2h0bnZtL3BibGstd3JpdGUuYw0KPj4gQEAgLTMzMyw3ICszMzMsNyBAQCBpbnQgcGJsa19zdWJt aXRfbWV0YV9pbyhzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtfbGluZSAqbWV0YV9saW5l KQ0KPj4gICAgICBtX2N0eCA9IG52bV9ycV90b19wZHUocnFkKTsNCj4+ICAgICAgbV9jdHgtPnBy aXZhdGUgPSBtZXRhX2xpbmU7DQo+PiAgLSAgICBycV9sZW4gPSBycV9wcGFzICogZ2VvLT5zZWNf c2l6ZTsNCj4+ICsgICAgcnFfbGVuID0gcnFfcHBhcyAqIGdlby0+Yy5jc2VjczsNCj4+ICAgICAg ZGF0YSA9ICgodm9pZCAqKWVtZXRhLT5idWYpICsgZW1ldGEtPm1lbTsNCj4+ICAgICAgICBiaW8g PSBwYmxrX2Jpb19tYXBfYWRkcihwYmxrLCBkYXRhLCBycV9wcGFzLCBycV9sZW4sDQo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLmggYi9kcml2ZXJzL2xpZ2h0bnZtL3BibGsu aA0KPj4gaW5kZXggMjgyZGZjODc4MGU4Li40NmIyOWE0OTJmNzQgMTAwNjQ0DQo+PiAtLS0gYS9k cml2ZXJzL2xpZ2h0bnZtL3BibGsuaA0KPj4gKysrIGIvZHJpdmVycy9saWdodG52bS9wYmxrLmgN Cj4+IEBAIC01NTEsMjEgKzU1MSw2IEBAIHN0cnVjdCBwYmxrX2xpbmVfbWV0YSB7DQo+PiAgICAg IHVuc2lnbmVkIGludCBtZXRhX2Rpc3RhbmNlOyAgICAvKiBEaXN0YW5jZSBiZXR3ZWVuIGRhdGEg YW5kIG1ldGFkYXRhICovDQo+PiAgfTsNCj4+ICAtc3RydWN0IHBibGtfYWRkcl9mb3JtYXQgew0K Pj4gLSAgICB1NjQgICAgY2hfbWFzazsNCj4+IC0gICAgdTY0ICAgIGx1bl9tYXNrOw0KPj4gLSAg ICB1NjQgICAgcGxuX21hc2s7DQo+PiAtICAgIHU2NCAgICBibGtfbWFzazsNCj4+IC0gICAgdTY0 ICAgIHBnX21hc2s7DQo+PiAtICAgIHU2NCAgICBzZWNfbWFzazsNCj4+IC0gICAgdTggICAgY2hf b2Zmc2V0Ow0KPj4gLSAgICB1OCAgICBsdW5fb2Zmc2V0Ow0KPj4gLSAgICB1OCAgICBwbG5fb2Zm c2V0Ow0KPj4gLSAgICB1OCAgICBibGtfb2Zmc2V0Ow0KPj4gLSAgICB1OCAgICBwZ19vZmZzZXQ7 DQo+PiAtICAgIHU4ICAgIHNlY19vZmZzZXQ7DQo+PiAtfTsNCj4+IC0NCj4+ICBlbnVtIHsNCj4+ ICAgICAgUEJMS19TVEFURV9SVU5OSU5HID0gMCwNCj4+ICAgICAgUEJMS19TVEFURV9TVE9QUElO RyA9IDEsDQo+PiBAQCAtNTg1LDggKzU3MCw4IEBAIHN0cnVjdCBwYmxrIHsNCj4+ICAgICAgc3Ry dWN0IHBibGtfbGluZV9tZ210IGxfbWc7ICAgICAgICAvKiBMaW5lIG1hbmFnZW1lbnQgKi8NCj4+ ICAgICAgc3RydWN0IHBibGtfbGluZV9tZXRhIGxtOyAgICAgICAgLyogTGluZSBtZXRhZGF0YSAq Lw0KPj4gIC0gICAgaW50IHBwYWZfYml0c2l6ZTsNCj4+IC0gICAgc3RydWN0IHBibGtfYWRkcl9m b3JtYXQgcHBhZjsNCj4+ICsgICAgc3RydWN0IG52bV9hZGRyX2Zvcm1hdCBhZGRyZjsNCj4+ICsg ICAgaW50IGFkZHJmX2xlbjsNCj4+ICAgICAgICBzdHJ1Y3QgcGJsa19yYiByd2I7DQo+PiAgQEAg LTk0MSwxNCArOTI2LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBibGtfbGluZV92c2Moc3RydWN0 IHBibGtfbGluZSAqbGluZSkNCj4+ICAgICAgcmV0dXJuIGxlMzJfdG9fY3B1KCpsaW5lLT52c2Mp Ow0KPj4gIH0NCj4+ICAtI2RlZmluZSBOVk1fTUVNX1BBR0VfV1JJVEUgKDgpDQo+PiAtDQo+PiAg c3RhdGljIGlubGluZSBpbnQgcGJsa19wYWRfZGlzdGFuY2Uoc3RydWN0IHBibGsgKnBibGspDQo+ PiAgew0KPj4gICAgICBzdHJ1Y3QgbnZtX3RndF9kZXYgKmRldiA9IHBibGstPmRldjsNCj4+ICAg ICAgc3RydWN0IG52bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsNCj4+ICAtICAgIHJldHVybiBOVk1f TUVNX1BBR0VfV1JJVEUgKiBnZW8tPmFsbF9sdW5zICogZ2VvLT5zZWNfcGVyX3BsOw0KPj4gKyAg ICByZXR1cm4gZ2VvLT5jLm13X2N1bml0cyAqIGdlby0+YWxsX2x1bnMgKiBnZW8tPmMud3Nfb3B0 Ow0KPj4gIH0NCj4+ICAgIHN0YXRpYyBpbmxpbmUgaW50IHBibGtfcHBhX3RvX2xpbmUoc3RydWN0 IHBwYV9hZGRyIHApDQo+PiBAQCAtOTU4LDIxICs5NDEsMjMgQEAgc3RhdGljIGlubGluZSBpbnQg cGJsa19wcGFfdG9fbGluZShzdHJ1Y3QgcHBhX2FkZHIgcCkNCj4+ICAgIHN0YXRpYyBpbmxpbmUg aW50IHBibGtfcHBhX3RvX3BvcyhzdHJ1Y3QgbnZtX2dlbyAqZ2VvLCBzdHJ1Y3QgcHBhX2FkZHIg cCkNCj4+ICB7DQo+PiAtICAgIHJldHVybiBwLmcubHVuICogZ2VvLT5ucl9jaG5scyArIHAuZy5j aDsNCj4+ICsgICAgcmV0dXJuIHAuZy5sdW4gKiBnZW8tPm51bV9jaCArIHAuZy5jaDsNCj4+ICB9 DQo+PiAgICBzdGF0aWMgaW5saW5lIHN0cnVjdCBwcGFfYWRkciBhZGRyX3RvX2dlbl9wcGEoc3Ry dWN0IHBibGsgKnBibGssIHU2NCBwYWRkciwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg IHU2NCBsaW5lX2lkKQ0KPj4gIHsNCj4+ICsgICAgc3RydWN0IG52bV9hZGRyX2Zvcm1hdF8xMiAq cHBhZiA9DQo+PiArICAgICAgICAgICAgICAgIChzdHJ1Y3QgbnZtX2FkZHJfZm9ybWF0XzEyICop JnBibGstPmFkZHJmOw0KPj4gICAgICBzdHJ1Y3QgcHBhX2FkZHIgcHBhOw0KPj4gICAgICAgIHBw YS5wcGEgPSAwOw0KPj4gICAgICBwcGEuZy5ibGsgPSBsaW5lX2lkOw0KPj4gLSAgICBwcGEuZy5w ZyA9IChwYWRkciAmIHBibGstPnBwYWYucGdfbWFzaykgPj4gcGJsay0+cHBhZi5wZ19vZmZzZXQ7 DQo+PiAtICAgIHBwYS5nLmx1biA9IChwYWRkciAmIHBibGstPnBwYWYubHVuX21hc2spID4+IHBi bGstPnBwYWYubHVuX29mZnNldDsNCj4+IC0gICAgcHBhLmcuY2ggPSAocGFkZHIgJiBwYmxrLT5w cGFmLmNoX21hc2spID4+IHBibGstPnBwYWYuY2hfb2Zmc2V0Ow0KPj4gLSAgICBwcGEuZy5wbCA9 IChwYWRkciAmIHBibGstPnBwYWYucGxuX21hc2spID4+IHBibGstPnBwYWYucGxuX29mZnNldDsN Cj4+IC0gICAgcHBhLmcuc2VjID0gKHBhZGRyICYgcGJsay0+cHBhZi5zZWNfbWFzaykgPj4gcGJs ay0+cHBhZi5zZWNfb2Zmc2V0Ow0KPj4gKyAgICBwcGEuZy5wZyA9IChwYWRkciAmIHBwYWYtPnBn X21hc2spID4+IHBwYWYtPnBnX29mZnNldDsNCj4+ICsgICAgcHBhLmcubHVuID0gKHBhZGRyICYg cHBhZi0+bHVuX21hc2spID4+IHBwYWYtPmx1bl9vZmZzZXQ7DQo+PiArICAgIHBwYS5nLmNoID0g KHBhZGRyICYgcHBhZi0+Y2hfbWFzaykgPj4gcHBhZi0+Y2hfb2Zmc2V0Ow0KPj4gKyAgICBwcGEu Zy5wbCA9IChwYWRkciAmIHBwYWYtPnBsbl9tYXNrKSA+PiBwcGFmLT5wbG5fb2Zmc2V0Ow0KPj4g KyAgICBwcGEuZy5zZWMgPSAocGFkZHIgJiBwcGFmLT5zZWNfbWFzaykgPj4gcHBhZi0+c2VjX29m ZnNldDsNCj4+ICAgICAgICByZXR1cm4gcHBhOw0KPj4gIH0NCj4+IEBAIC05ODAsMTMgKzk2NSwx NSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBwcGFfYWRkciBhZGRyX3RvX2dlbl9wcGEoc3RydWN0 IHBibGsgKnBibGssIHU2NCBwYWRkciwNCj4+ICBzdGF0aWMgaW5saW5lIHU2NCBwYmxrX2Rldl9w cGFfdG9fbGluZV9hZGRyKHN0cnVjdCBwYmxrICpwYmxrLA0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcHBhX2FkZHIgcCkNCj4+ICB7DQo+PiArICAgIHN0cnVjdCBudm1f YWRkcl9mb3JtYXRfMTIgKnBwYWYgPQ0KPj4gKyAgICAgICAgICAgICAgICAoc3RydWN0IG52bV9h ZGRyX2Zvcm1hdF8xMiAqKSZwYmxrLT5hZGRyZjsNCj4+ICAgICAgdTY0IHBhZGRyOw0KPj4gIC0g ICAgcGFkZHIgPSAodTY0KXAuZy5wZyA8PCBwYmxrLT5wcGFmLnBnX29mZnNldDsNCj4+IC0gICAg cGFkZHIgfD0gKHU2NClwLmcubHVuIDw8IHBibGstPnBwYWYubHVuX29mZnNldDsNCj4+IC0gICAg cGFkZHIgfD0gKHU2NClwLmcuY2ggPDwgcGJsay0+cHBhZi5jaF9vZmZzZXQ7DQo+PiAtICAgIHBh ZGRyIHw9ICh1NjQpcC5nLnBsIDw8IHBibGstPnBwYWYucGxuX29mZnNldDsNCj4+IC0gICAgcGFk ZHIgfD0gKHU2NClwLmcuc2VjIDw8IHBibGstPnBwYWYuc2VjX29mZnNldDsNCj4+ICsgICAgcGFk ZHIgPSAodTY0KXAuZy5jaCA8PCBwcGFmLT5jaF9vZmZzZXQ7DQo+PiArICAgIHBhZGRyIHw9ICh1 NjQpcC5nLmx1biA8PCBwcGFmLT5sdW5fb2Zmc2V0Ow0KPj4gKyAgICBwYWRkciB8PSAodTY0KXAu Zy5wZyA8PCBwcGFmLT5wZ19vZmZzZXQ7DQo+PiArICAgIHBhZGRyIHw9ICh1NjQpcC5nLnBsIDw8 IHBwYWYtPnBsbl9vZmZzZXQ7DQo+PiArICAgIHBhZGRyIHw9ICh1NjQpcC5nLnNlYyA8PCBwcGFm LT5zZWNfb2Zmc2V0Ow0KPj4gICAgICAgIHJldHVybiBwYWRkcjsNCj4+ICB9DQo+PiBAQCAtMTAw MywxOCArOTkwLDE1IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBwYV9hZGRyIHBibGtfcHBhMzJf dG9fcHBhNjQoc3RydWN0IHBibGsgKnBibGssIHUzMiBwcGEzMikNCj4+ICAgICAgICAgIHBwYTY0 LmMubGluZSA9IHBwYTMyICYgKCh+MFUpID4+IDEpOw0KPj4gICAgICAgICAgcHBhNjQuYy5pc19j YWNoZWQgPSAxOw0KPj4gICAgICB9IGVsc2Ugew0KPj4gLSAgICAgICAgcHBhNjQuZy5ibGsgPSAo cHBhMzIgJiBwYmxrLT5wcGFmLmJsa19tYXNrKSA+Pg0KPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYmxrLT5wcGFmLmJsa19vZmZzZXQ7DQo+PiAtICAgICAgICBwcGE2NC5nLnBnID0g KHBwYTMyICYgcGJsay0+cHBhZi5wZ19tYXNrKSA+Pg0KPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYmxrLT5wcGFmLnBnX29mZnNldDsNCj4+IC0gICAgICAgIHBwYTY0LmcubHVuID0g KHBwYTMyICYgcGJsay0+cHBhZi5sdW5fbWFzaykgPj4NCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGJsay0+cHBhZi5sdW5fb2Zmc2V0Ow0KPj4gLSAgICAgICAgcHBhNjQuZy5jaCA9 IChwcGEzMiAmIHBibGstPnBwYWYuY2hfbWFzaykgPj4NCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGJsay0+cHBhZi5jaF9vZmZzZXQ7DQo+PiAtICAgICAgICBwcGE2NC5nLnBsID0g KHBwYTMyICYgcGJsay0+cHBhZi5wbG5fbWFzaykgPj4NCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGJsay0+cHBhZi5wbG5fb2Zmc2V0Ow0KPj4gLSAgICAgICAgcHBhNjQuZy5zZWMg PSAocHBhMzIgJiBwYmxrLT5wcGFmLnNlY19tYXNrKSA+Pg0KPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYmxrLT5wcGFmLnNlY19vZmZzZXQ7DQo+PiArICAgICAgICBzdHJ1Y3QgbnZt X2FkZHJfZm9ybWF0XzEyICpwcGFmID0NCj4+ICsgICAgICAgICAgICAgICAgKHN0cnVjdCBudm1f YWRkcl9mb3JtYXRfMTIgKikmcGJsay0+YWRkcmY7DQo+PiArDQo+PiArICAgICAgICBwcGE2NC5n LmNoID0gKHBwYTMyICYgcHBhZi0+Y2hfbWFzaykgPj4gcHBhZi0+Y2hfb2Zmc2V0Ow0KPj4gKyAg ICAgICAgcHBhNjQuZy5sdW4gPSAocHBhMzIgJiBwcGFmLT5sdW5fbWFzaykgPj4gcHBhZi0+bHVu X29mZnNldDsNCj4+ICsgICAgICAgIHBwYTY0LmcuYmxrID0gKHBwYTMyICYgcHBhZi0+YmxrX21h c2spID4+IHBwYWYtPmJsa19vZmZzZXQ7DQo+PiArICAgICAgICBwcGE2NC5nLnBnID0gKHBwYTMy ICYgcHBhZi0+cGdfbWFzaykgPj4gcHBhZi0+cGdfb2Zmc2V0Ow0KPj4gKyAgICAgICAgcHBhNjQu Zy5wbCA9IChwcGEzMiAmIHBwYWYtPnBsbl9tYXNrKSA+PiBwcGFmLT5wbG5fb2Zmc2V0Ow0KPj4g KyAgICAgICAgcHBhNjQuZy5zZWMgPSAocHBhMzIgJiBwcGFmLT5zZWNfbWFzaykgPj4gcHBhZi0+ c2VjX29mZnNldDsNCj4+ICAgICAgfQ0KPj4gICAgICAgIHJldHVybiBwcGE2NDsNCj4+IEBAIC0x MDMwLDEyICsxMDE0LDE1IEBAIHN0YXRpYyBpbmxpbmUgdTMyIHBibGtfcHBhNjRfdG9fcHBhMzIo c3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwcGFfYWRkciBwcGE2NCkNCj4+ICAgICAgICAgIHBw YTMyIHw9IHBwYTY0LmMubGluZTsNCj4+ICAgICAgICAgIHBwYTMyIHw9IDFVIDw8IDMxOw0KPj4g ICAgICB9IGVsc2Ugew0KPj4gLSAgICAgICAgcHBhMzIgfD0gcHBhNjQuZy5ibGsgPDwgcGJsay0+ cHBhZi5ibGtfb2Zmc2V0Ow0KPj4gLSAgICAgICAgcHBhMzIgfD0gcHBhNjQuZy5wZyA8PCBwYmxr LT5wcGFmLnBnX29mZnNldDsNCj4+IC0gICAgICAgIHBwYTMyIHw9IHBwYTY0LmcubHVuIDw8IHBi bGstPnBwYWYubHVuX29mZnNldDsNCj4+IC0gICAgICAgIHBwYTMyIHw9IHBwYTY0LmcuY2ggPDwg cGJsay0+cHBhZi5jaF9vZmZzZXQ7DQo+PiAtICAgICAgICBwcGEzMiB8PSBwcGE2NC5nLnBsIDw8 IHBibGstPnBwYWYucGxuX29mZnNldDsNCj4+IC0gICAgICAgIHBwYTMyIHw9IHBwYTY0Lmcuc2Vj IDw8IHBibGstPnBwYWYuc2VjX29mZnNldDsNCj4+ICsgICAgICAgIHN0cnVjdCBudm1fYWRkcl9m b3JtYXRfMTIgKnBwYWYgPQ0KPj4gKyAgICAgICAgICAgICAgICAoc3RydWN0IG52bV9hZGRyX2Zv cm1hdF8xMiAqKSZwYmxrLT5hZGRyZjsNCj4+ICsNCj4+ICsgICAgICAgIHBwYTMyIHw9IHBwYTY0 LmcuY2ggPDwgcHBhZi0+Y2hfb2Zmc2V0Ow0KPj4gKyAgICAgICAgcHBhMzIgfD0gcHBhNjQuZy5s dW4gPDwgcHBhZi0+bHVuX29mZnNldDsNCj4+ICsgICAgICAgIHBwYTMyIHw9IHBwYTY0LmcuYmxr IDw8IHBwYWYtPmJsa19vZmZzZXQ7DQo+PiArICAgICAgICBwcGEzMiB8PSBwcGE2NC5nLnBnIDw8 IHBwYWYtPnBnX29mZnNldDsNCj4+ICsgICAgICAgIHBwYTMyIHw9IHBwYTY0LmcucGwgPDwgcHBh Zi0+cGxuX29mZnNldDsNCj4+ICsgICAgICAgIHBwYTMyIHw9IHBwYTY0Lmcuc2VjIDw8IHBwYWYt PnNlY19vZmZzZXQ7DQo+PiAgICAgIH0NCj4+ICAgICAgICByZXR1cm4gcHBhMzI7DQo+PiBAQCAt MTA0Niw3ICsxMDMzLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcHBhX2FkZHIgcGJsa190cmFu c19tYXBfZ2V0KHN0cnVjdCBwYmxrICpwYmxrLA0KPj4gIHsNCj4+ICAgICAgc3RydWN0IHBwYV9h ZGRyIHBwYTsNCj4+ICAtICAgIGlmIChwYmxrLT5wcGFmX2JpdHNpemUgPCAzMikgew0KPj4gKyAg ICBpZiAocGJsay0+YWRkcmZfbGVuIDwgMzIpIHsNCj4+ICAgICAgICAgIHUzMiAqbWFwID0gKHUz MiAqKXBibGstPnRyYW5zX21hcDsNCj4+ICAgICAgICAgICAgcHBhID0gcGJsa19wcGEzMl90b19w cGE2NChwYmxrLCBtYXBbbGJhXSk7DQo+PiBAQCAtMTA2Miw3ICsxMDQ5LDcgQEAgc3RhdGljIGlu bGluZSBzdHJ1Y3QgcHBhX2FkZHIgcGJsa190cmFuc19tYXBfZ2V0KHN0cnVjdCBwYmxrICpwYmxr LA0KPj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBwYmxrX3RyYW5zX21hcF9zZXQoc3RydWN0IHBibGsg KnBibGssIHNlY3Rvcl90IGxiYSwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cHBhX2FkZHIgcHBhKQ0KPj4gIHsNCj4+IC0gICAgaWYgKHBibGstPnBwYWZfYml0c2l6ZSA8IDMy KSB7DQo+PiArICAgIGlmIChwYmxrLT5hZGRyZl9sZW4gPCAzMikgew0KPj4gICAgICAgICAgdTMy ICptYXAgPSAodTMyICopcGJsay0+dHJhbnNfbWFwOw0KPj4gICAgICAgICAgICBtYXBbbGJhXSA9 IHBibGtfcHBhNjRfdG9fcHBhMzIocGJsaywgcHBhKTsNCj4+IEBAIC0xMTUzLDcgKzExNDAsNyBA QCBzdGF0aWMgaW5saW5lIGludCBwYmxrX3NldF9wcm9ncl9tb2RlKHN0cnVjdCBwYmxrICpwYmxr LCBpbnQgdHlwZSkNCj4+ICAgICAgc3RydWN0IG52bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsNCj4+ ICAgICAgaW50IGZsYWdzOw0KPj4gIC0gICAgZmxhZ3MgPSBnZW8tPnBsYW5lX21vZGUgPj4gMTsN Cj4+ICsgICAgZmxhZ3MgPSBnZW8tPmMucGxuX21vZGUgPj4gMTsNCj4+ICAgICAgICBpZiAodHlw ZSA9PSBQQkxLX1dSSVRFKQ0KPj4gICAgICAgICAgZmxhZ3MgfD0gTlZNX0lPX1NDUkFNQkxFX0VO QUJMRTsNCj4+IEBAIC0xMTc0LDcgKzExNjEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwYmxrX3Nl dF9yZWFkX21vZGUoc3RydWN0IHBibGsgKnBibGssIGludCB0eXBlKQ0KPj4gICAgICAgIGZsYWdz ID0gTlZNX0lPX1NVU1BFTkQgfCBOVk1fSU9fU0NSQU1CTEVfRU5BQkxFOw0KPj4gICAgICBpZiAo dHlwZSA9PSBQQkxLX1JFQURfU0VRVUVOVElBTCkNCj4+IC0gICAgICAgIGZsYWdzIHw9IGdlby0+ cGxhbmVfbW9kZSA+PiAxOw0KPj4gKyAgICAgICAgZmxhZ3MgfD0gZ2VvLT5jLnBsbl9tb2RlID4+ IDE7DQo+PiAgICAgICAgcmV0dXJuIGZsYWdzOw0KPj4gIH0NCj4+IEBAIC0xMjI3LDEyICsxMjE0 LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBibGtfYm91bmRhcnlfcHBhX2NoZWNrcyhzdHJ1Y3Qg bnZtX3RndF9kZXYgKnRndF9kZXYsDQo+PiAgICAgICAgICBwcGEgPSAmcHBhc1tpXTsNCj4+ICAg ICAgICAgICAgaWYgKCFwcGEtPmMuaXNfY2FjaGVkICYmDQo+PiAtICAgICAgICAgICAgICAgIHBw YS0+Zy5jaCA8IGdlby0+bnJfY2hubHMgJiYNCj4+IC0gICAgICAgICAgICAgICAgcHBhLT5nLmx1 biA8IGdlby0+bnJfbHVucyAmJg0KPj4gLSAgICAgICAgICAgICAgICBwcGEtPmcucGwgPCBnZW8t Pm5yX3BsYW5lcyAmJg0KPj4gLSAgICAgICAgICAgICAgICBwcGEtPmcuYmxrIDwgZ2VvLT5ucl9j aGtzICYmDQo+PiAtICAgICAgICAgICAgICAgIHBwYS0+Zy5wZyA8IGdlby0+d3NfcGVyX2NoayAm Jg0KPj4gLSAgICAgICAgICAgICAgICBwcGEtPmcuc2VjIDwgZ2VvLT5zZWNfcGVyX3BnKQ0KPj4g KyAgICAgICAgICAgICAgICBwcGEtPmcuY2ggPCBnZW8tPm51bV9jaCAmJg0KPj4gKyAgICAgICAg ICAgICAgICBwcGEtPmcubHVuIDwgZ2VvLT5udW1fbHVuICYmDQo+PiArICAgICAgICAgICAgICAg IHBwYS0+Zy5wbCA8IGdlby0+Yy5udW1fcGxuICYmDQo+PiArICAgICAgICAgICAgICAgIHBwYS0+ Zy5ibGsgPCBnZW8tPmMubnVtX2NoayAmJg0KPj4gKyAgICAgICAgICAgICAgICBwcGEtPmcucGcg PCBnZW8tPmMubnVtX3BnICYmDQo+PiArICAgICAgICAgICAgICAgIHBwYS0+Zy5zZWMgPCBnZW8t PmMud3NfbWluKQ0KPj4gICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gICAgICAgICAgICBwcmlu dF9wcGEocHBhLCAiYm91bmRhcnkiLCBpKTsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUv aG9zdC9saWdodG52bS5jIGIvZHJpdmVycy9udm1lL2hvc3QvbGlnaHRudm0uYw0KPj4gaW5kZXgg YTE5ZTg1ZjBjYmFlLi45NzczOWU2Njg2MDIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL252bWUv aG9zdC9saWdodG52bS5jDQo+PiArKysgYi9kcml2ZXJzL252bWUvaG9zdC9saWdodG52bS5jDQo+ PiBAQCAtMTUyLDggKzE1Miw4IEBAIHN0cnVjdCBudm1lX252bV9pZDEyX2FkZHJmIHsNCj4+ICAg ICAgX191OCAgICAgICAgICAgIGJsa19sZW47DQo+PiAgICAgIF9fdTggICAgICAgICAgICBwZ19v ZmZzZXQ7DQo+PiAgICAgIF9fdTggICAgICAgICAgICBwZ19sZW47DQo+PiAtICAgIF9fdTggICAg ICAgICAgICBzZWN0X29mZnNldDsNCj4+IC0gICAgX191OCAgICAgICAgICAgIHNlY3RfbGVuOw0K Pj4gKyAgICBfX3U4ICAgICAgICAgICAgc2VjX29mZnNldDsNCj4+ICsgICAgX191OCAgICAgICAg ICAgIHNlY19sZW47DQo+PiAgICAgIF9fdTggICAgICAgICAgICByZXNbNF07DQo+PiAgfSBfX3Bh Y2tlZDsNCj4+ICBAQCAtMTcwLDYgKzE3MCwxMiBAQCBzdHJ1Y3QgbnZtZV9udm1faWQxMiB7DQo+ PiAgICAgIF9fdTggICAgICAgICAgICByZXN2MlsyODgwXTsNCj4+ICB9IF9fcGFja2VkOw0KPj4g ICsvKiBHZW5lcmljIGlkZW50aWZpY2F0aW9uIHN0cnVjdHVyZSAqLw0KPj4gK3N0cnVjdCBudm1l X252bV9pZCB7DQo+PiArICAgIF9fdTggICAgICAgICAgICB2ZXJfaWQ7DQo+PiArICAgIF9fdTgg ICAgICAgICAgICByZXN2WzQwOTVdOw0KPj4gK30gX19wYWNrZWQ7DQo+PiArDQo+PiAgc3RydWN0 IG52bWVfbnZtX2JiX3RibCB7DQo+PiAgICAgIF9fdTggICAgdGJsaWRbNF07DQo+PiAgICAgIF9f bGUxNiAgICB2ZXJpZDsNCj4+IEBAIC0yNTQsMTIxICsyNjAsMTk1IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBfbnZtZV9udm1fY2hlY2tfc2l6ZSh2b2lkKQ0KPj4gICAgICBCVUlMRF9CVUdfT04oc2l6 ZW9mKHN0cnVjdCBudm1lX252bV9pZDIwKSAhPSBOVk1FX0lERU5USUZZX0RBVEFfU0laRSk7DQo+ PiAgfQ0KPj4gIC1zdGF0aWMgaW50IGluaXRfZ3JwKHN0cnVjdCBudm1faWQgKm52bV9pZCwgc3Ry dWN0IG52bWVfbnZtX2lkMTIgKmlkMTIpDQo+PiArc3RhdGljIHZvaWQgbnZtZV9udm1fc2V0X2Fk ZHJfMTIoc3RydWN0IG52bV9hZGRyX2Zvcm1hdF8xMiAqZHN0LA0KPj4gKyAgICAgICAgICAgICAg ICAgc3RydWN0IG52bWVfbnZtX2lkMTJfYWRkcmYgKnNyYykNCj4+ICB7DQo+PiArICAgIGRzdC0+ Y2hfbGVuID0gc3JjLT5jaF9sZW47DQo+PiArICAgIGRzdC0+bHVuX2xlbiA9IHNyYy0+bHVuX2xl bjsNCj4+ICsgICAgZHN0LT5ibGtfbGVuID0gc3JjLT5ibGtfbGVuOw0KPj4gKyAgICBkc3QtPnBn X2xlbiA9IHNyYy0+cGdfbGVuOw0KPj4gKyAgICBkc3QtPnBsbl9sZW4gPSBzcmMtPnBsbl9sZW47 DQo+PiArICAgIGRzdC0+c2VjX2xlbiA9IHNyYy0+c2VjX2xlbjsNCj4+ICsNCj4+ICsgICAgZHN0 LT5jaF9vZmZzZXQgPSBzcmMtPmNoX29mZnNldDsNCj4+ICsgICAgZHN0LT5sdW5fb2Zmc2V0ID0g c3JjLT5sdW5fb2Zmc2V0Ow0KPj4gKyAgICBkc3QtPmJsa19vZmZzZXQgPSBzcmMtPmJsa19vZmZz ZXQ7DQo+PiArICAgIGRzdC0+cGdfb2Zmc2V0ID0gc3JjLT5wZ19vZmZzZXQ7DQo+PiArICAgIGRz dC0+cGxuX29mZnNldCA9IHNyYy0+cGxuX29mZnNldDsNCj4+ICsgICAgZHN0LT5zZWNfb2Zmc2V0 ID0gc3JjLT5zZWNfb2Zmc2V0Ow0KPj4gKw0KPj4gKyAgICBkc3QtPmNoX21hc2sgPSAoKDFVTEwg PDwgZHN0LT5jaF9sZW4pIC0gMSkgPDwgZHN0LT5jaF9vZmZzZXQ7DQo+PiArICAgIGRzdC0+bHVu X21hc2sgPSAoKDFVTEwgPDwgZHN0LT5sdW5fbGVuKSAtIDEpIDw8IGRzdC0+bHVuX29mZnNldDsN Cj4+ICsgICAgZHN0LT5ibGtfbWFzayA9ICgoMVVMTCA8PCBkc3QtPmJsa19sZW4pIC0gMSkgPDwg ZHN0LT5ibGtfb2Zmc2V0Ow0KPj4gKyAgICBkc3QtPnBnX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5w Z19sZW4pIC0gMSkgPDwgZHN0LT5wZ19vZmZzZXQ7DQo+PiArICAgIGRzdC0+cGxuX21hc2sgPSAo KDFVTEwgPDwgZHN0LT5wbG5fbGVuKSAtIDEpIDw8IGRzdC0+cGxuX29mZnNldDsNCj4+ICsgICAg ZHN0LT5zZWNfbWFzayA9ICgoMVVMTCA8PCBkc3QtPnNlY19sZW4pIC0gMSkgPDwgZHN0LT5zZWNf b2Zmc2V0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IG52bWVfbnZtX3NldHVwXzEyKHN0 cnVjdCBudm1lX252bV9pZCAqZ2VuX2lkLA0KPj4gKyAgICAgICAgICAgICAgICAgc3RydWN0IG52 bV9kZXZfZ2VvICpkZXZfZ2VvKQ0KPj4gK3sNCj4+ICsgICAgc3RydWN0IG52bWVfbnZtX2lkMTIg KmlkID0gKHN0cnVjdCBudm1lX252bV9pZDEyICopZ2VuX2lkOw0KPj4gICAgICBzdHJ1Y3QgbnZt ZV9udm1faWQxMl9ncnAgKnNyYzsNCj4+ICAgICAgaW50IHNlY19wZXJfcGcsIHNlY19wZXJfcGws IHBnX3Blcl9ibGs7DQo+PiAgLSAgICBpZiAoaWQxMi0+Y2dycHMgIT0gMSkNCj4+ICsgICAgaWYg KGlkLT5jZ3JwcyAhPSAxKQ0KPj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiAgLSAgICBz cmMgPSAmaWQxMi0+Z3JwOw0KPj4gKyAgICBzcmMgPSAmaWQtPmdycDsNCj4+ICAtICAgIG52bV9p ZC0+bXR5cGUgPSBzcmMtPm10eXBlOw0KPj4gLSAgICBudm1faWQtPmZtdHlwZSA9IHNyYy0+Zm10 eXBlOw0KPj4gKyAgICBpZiAoc3JjLT5tdHlwZSAhPSAwKSB7DQo+PiArICAgICAgICBwcl9lcnIo Im52bTogbWVtb3J5IHR5cGUgbm90IHN1cHBvcnRlZFxuIik7DQo+PiArICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICAvKiAxLjIgc3BlYy4gb25seSByZXBv cnRzIGEgc2luZ2xlIHZlcnNpb24gaWQgLSB1bmZvbGQgKi8NCj4+ICsgICAgZGV2X2dlby0+bWFq b3JfdmVyX2lkID0gMTsNCj4+ICsgICAgZGV2X2dlby0+bWlub3JfdmVyX2lkID0gMjsNCj4+ICsN Cj4+ICsgICAgLyogU2V0IGNvbXBhY3RlZCB2ZXJzaW9uIGZvciB1cHBlciBsYXllcnMgKi8NCj4+ ICsgICAgZGV2X2dlby0+Yy52ZXJzaW9uID0gTlZNX09DU1NEX1NQRUNfMTI7DQo+PiAgLSAgICBu dm1faWQtPm51bV9jaCA9IHNyYy0+bnVtX2NoOw0KPj4gLSAgICBudm1faWQtPm51bV9sdW4gPSBz cmMtPm51bV9sdW47DQo+PiArICAgIGRldl9nZW8tPm51bV9jaCA9IHNyYy0+bnVtX2NoOw0KPj4g KyAgICBkZXZfZ2VvLT5udW1fbHVuID0gc3JjLT5udW1fbHVuOw0KPj4gKyAgICBkZXZfZ2VvLT5h bGxfbHVucyA9IGRldl9nZW8tPm51bV9jaCAqIGRldl9nZW8tPm51bV9sdW47DQo+PiAgLSAgICBu dm1faWQtPm51bV9jaGsgPSBsZTE2X3RvX2NwdShzcmMtPm51bV9jaGspOw0KPj4gLSAgICBudm1f aWQtPmNzZWNzID0gbGUxNl90b19jcHUoc3JjLT5jc2Vjcyk7DQo+PiAtICAgIG52bV9pZC0+c29z ID0gbGUxNl90b19jcHUoc3JjLT5zb3MpOw0KPj4gKyAgICBkZXZfZ2VvLT5jLm51bV9jaGsgPSBs ZTE2X3RvX2NwdShzcmMtPm51bV9jaGspOw0KPj4gKyAgICBkZXZfZ2VvLT5jLmNzZWNzID0gbGUx Nl90b19jcHUoc3JjLT5jc2Vjcyk7DQo+PiArICAgIGRldl9nZW8tPmMuc29zID0gbGUxNl90b19j cHUoc3JjLT5zb3MpOw0KPj4gICAgICAgIHBnX3Blcl9ibGsgPSBsZTE2X3RvX2NwdShzcmMtPm51 bV9wZyk7DQo+PiAtICAgIHNlY19wZXJfcGcgPSBsZTE2X3RvX2NwdShzcmMtPmZwZ19zeikgLyBu dm1faWQtPmNzZWNzOw0KPj4gKyAgICBzZWNfcGVyX3BnID0gbGUxNl90b19jcHUoc3JjLT5mcGdf c3opIC8gZGV2X2dlby0+Yy5jc2VjczsNCj4+ICAgICAgc2VjX3Blcl9wbCA9IHNlY19wZXJfcGcg KiBzcmMtPm51bV9wbG47DQo+PiAtICAgIG52bV9pZC0+Y2xiYSA9IHNlY19wZXJfcGwgKiBwZ19w ZXJfYmxrOw0KPj4gLSAgICBudm1faWQtPndzX3Blcl9jaGsgPSBwZ19wZXJfYmxrOw0KPj4gLQ0K Pj4gLSAgICBudm1faWQtPm1wb3MgPSBsZTMyX3RvX2NwdShzcmMtPm1wb3MpOw0KPj4gLSAgICBu dm1faWQtPmNwYXIgPSBsZTE2X3RvX2NwdShzcmMtPmNwYXIpOw0KPj4gLSAgICBudm1faWQtPm1j Y2FwID0gbGUzMl90b19jcHUoc3JjLT5tY2NhcCk7DQo+PiAtDQo+PiAtICAgIG52bV9pZC0+d3Nf b3B0ID0gbnZtX2lkLT53c19taW4gPSBzZWNfcGVyX3BnOw0KPj4gLSAgICBudm1faWQtPndzX3Nl cSA9IE5WTV9JT19TTkdMX0FDQ0VTUzsNCj4+IC0NCj4+IC0gICAgaWYgKG52bV9pZC0+bXBvcyAm IDB4MDIwMjAyKSB7DQo+PiAtICAgICAgICBudm1faWQtPndzX3NlcSA9IE5WTV9JT19EVUFMX0FD Q0VTUzsNCj4+IC0gICAgICAgIG52bV9pZC0+d3Nfb3B0IDw8PSAxOw0KPj4gLSAgICB9IGVsc2Ug aWYgKG52bV9pZC0+bXBvcyAmIDB4MDQwNDA0KSB7DQo+PiAtICAgICAgICBudm1faWQtPndzX3Nl cSA9IE5WTV9JT19RVUFEX0FDQ0VTUzsNCj4+IC0gICAgICAgIG52bV9pZC0+d3Nfb3B0IDw8PSAy Ow0KPj4gLSAgICB9DQo+PiArICAgIGRldl9nZW8tPmMuY2xiYSA9IHNlY19wZXJfcGwgKiBwZ19w ZXJfYmxrOw0KPj4gKw0KPj4gKyAgICBkZXZfZ2VvLT5jLndzX21pbiA9IHNlY19wZXJfcGc7DQo+ PiArICAgIGRldl9nZW8tPmMud3Nfb3B0ID0gc2VjX3Blcl9wZzsNCj4+ICsgICAgZGV2X2dlby0+ Yy5td19jdW5pdHMgPSA4OyAgICAgICAgLyogZGVmYXVsdCB0byBNTEMgc2FmZSB2YWx1ZXMgKi8N Cj4+ICsgICAgZGV2X2dlby0+Yy5tYXhvYyA9IGRldl9nZW8tPmFsbF9sdW5zOyAgICAvKiBkZWZh dWx0IHRvIDEgY2h1bmsgcGVyIExVTiAqLw0KPj4gKyAgICBkZXZfZ2VvLT5jLm1heG9jcHUgPSAx OyAgICAgICAgICAgIC8qIGRlZmF1bHQgdG8gMSBjaHVuayBwZXIgTFVOICovDQo+PiAgLSAgICBu dm1faWQtPnRyZHQgPSBsZTMyX3RvX2NwdShzcmMtPnRyZHQpOw0KPj4gLSAgICBudm1faWQtPnRy ZG0gPSBsZTMyX3RvX2NwdShzcmMtPnRyZG0pOw0KPj4gLSAgICBudm1faWQtPnRwcnQgPSBsZTMy X3RvX2NwdShzcmMtPnRwcnQpOw0KPj4gLSAgICBudm1faWQtPnRwcm0gPSBsZTMyX3RvX2NwdShz cmMtPnRwcm0pOw0KPj4gLSAgICBudm1faWQtPnRiZXQgPSBsZTMyX3RvX2NwdShzcmMtPnRiZXQp Ow0KPj4gLSAgICBudm1faWQtPnRiZW0gPSBsZTMyX3RvX2NwdShzcmMtPnRiZW0pOw0KPj4gKyAg ICBkZXZfZ2VvLT5jLm1jY2FwID0gbGUzMl90b19jcHUoc3JjLT5tY2NhcCk7DQo+PiArDQo+PiAr ICAgIGRldl9nZW8tPmMudHJkdCA9IGxlMzJfdG9fY3B1KHNyYy0+dHJkdCk7DQo+PiArICAgIGRl dl9nZW8tPmMudHJkbSA9IGxlMzJfdG9fY3B1KHNyYy0+dHJkbSk7DQo+PiArICAgIGRldl9nZW8t PmMudHBydCA9IGxlMzJfdG9fY3B1KHNyYy0+dHBydCk7DQo+PiArICAgIGRldl9nZW8tPmMudHBy bSA9IGxlMzJfdG9fY3B1KHNyYy0+dHBybSk7DQo+PiArICAgIGRldl9nZW8tPmMudGJldCA9IGxl MzJfdG9fY3B1KHNyYy0+dGJldCk7DQo+PiArICAgIGRldl9nZW8tPmMudGJlbSA9IGxlMzJfdG9f Y3B1KHNyYy0+dGJlbSk7DQo+PiAgICAgICAgLyogMS4yIGNvbXBhdGliaWxpdHkgKi8NCj4+IC0g ICAgbnZtX2lkLT5udW1fcGxuID0gc3JjLT5udW1fcGxuOw0KPj4gLSAgICBudm1faWQtPm51bV9w ZyA9IGxlMTZfdG9fY3B1KHNyYy0+bnVtX3BnKTsNCj4+IC0gICAgbnZtX2lkLT5mcGdfc3ogPSBs ZTE2X3RvX2NwdShzcmMtPmZwZ19zeik7DQo+PiArICAgIGRldl9nZW8tPmMudm1udCA9IGlkLT52 bW50Ow0KPj4gKyAgICBkZXZfZ2VvLT5jLmNhcCA9IGxlMzJfdG9fY3B1KGlkLT5jYXApOw0KPj4g KyAgICBkZXZfZ2VvLT5jLmRvbSA9IGxlMzJfdG9fY3B1KGlkLT5kb20pOw0KPj4gKw0KPj4gKyAg ICBkZXZfZ2VvLT5jLm10eXBlID0gc3JjLT5tdHlwZTsNCj4+ICsgICAgZGV2X2dlby0+Yy5mbXR5 cGUgPSBzcmMtPmZtdHlwZTsNCj4+ICsNCj4+ICsgICAgZGV2X2dlby0+Yy5jcGFyID0gbGUxNl90 b19jcHUoc3JjLT5jcGFyKTsNCj4+ICsgICAgZGV2X2dlby0+Yy5tcG9zID0gbGUzMl90b19jcHUo c3JjLT5tcG9zKTsNCj4+ICsNCj4+ICsgICAgZGV2X2dlby0+Yy5wbG5fbW9kZSA9IE5WTV9QTEFO RV9TSU5HTEU7DQo+PiArDQo+PiArICAgIGlmIChkZXZfZ2VvLT5jLm1wb3MgJiAweDAyMDIwMikg ew0KPj4gKyAgICAgICAgZGV2X2dlby0+Yy5wbG5fbW9kZSA9IE5WTV9QTEFORV9ET1VCTEU7DQo+ PiArICAgICAgICBkZXZfZ2VvLT5jLndzX29wdCA8PD0gMTsNCj4+ICsgICAgfSBlbHNlIGlmIChk ZXZfZ2VvLT5jLm1wb3MgJiAweDA0MDQwNCkgew0KPj4gKyAgICAgICAgZGV2X2dlby0+Yy5wbG5f bW9kZSA9IE5WTV9QTEFORV9RVUFEOw0KPj4gKyAgICAgICAgZGV2X2dlby0+Yy53c19vcHQgPDw9 IDI7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgZGV2X2dlby0+Yy5udW1fcGxuID0gc3JjLT5u dW1fcGxuOw0KPj4gKyAgICBkZXZfZ2VvLT5jLm51bV9wZyA9IGxlMTZfdG9fY3B1KHNyYy0+bnVt X3BnKTsNCj4+ICsgICAgZGV2X2dlby0+Yy5mcGdfc3ogPSBsZTE2X3RvX2NwdShzcmMtPmZwZ19z eik7DQo+PiArDQo+PiArICAgIG52bWVfbnZtX3NldF9hZGRyXzEyKChzdHJ1Y3QgbnZtX2FkZHJf Zm9ybWF0XzEyICopJmRldl9nZW8tPmMuYWRkcmYsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmaWQtPnBwYWYpOw0KPj4gICAgICAgIHJldHVybiAwOw0KPj4gIH0NCj4+ICAt c3RhdGljIGludCBudm1lX252bV9zZXR1cF8xMihzdHJ1Y3QgbnZtX2RldiAqbnZtZGV2LCBzdHJ1 Y3QgbnZtX2lkICpudm1faWQsDQo+PiAtICAgICAgICBzdHJ1Y3QgbnZtZV9udm1faWQxMiAqaWQp DQo+PiArc3RhdGljIHZvaWQgbnZtZV9udm1fc2V0X2FkZHJfMjAoc3RydWN0IG52bV9hZGRyX2Zv cm1hdCAqZHN0LA0KPj4gKyAgICAgICAgICAgICAgICAgc3RydWN0IG52bWVfbnZtX2lkMjBfYWRk cmYgKnNyYykNCj4+ICB7DQo+PiAtICAgIG52bV9pZC0+dmVyX2lkID0gaWQtPnZlcl9pZDsNCj4+ IC0gICAgbnZtX2lkLT52bW50ID0gaWQtPnZtbnQ7DQo+PiAtICAgIG52bV9pZC0+Y2FwID0gbGUz Ml90b19jcHUoaWQtPmNhcCk7DQo+PiAtICAgIG52bV9pZC0+ZG9tID0gbGUzMl90b19jcHUoaWQt PmRvbSk7DQo+PiAtICAgIG1lbWNweSgmbnZtX2lkLT5wcGFmLCAmaWQtPnBwYWYsDQo+PiAtICAg ICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IG52bV9hZGRyX2Zvcm1hdCkpOw0KPj4gLQ0K Pj4gLSAgICByZXR1cm4gaW5pdF9ncnAobnZtX2lkLCBpZCk7DQo+PiArICAgIGRzdC0+Y2hfbGVu ID0gc3JjLT5ncnBfbGVuOw0KPj4gKyAgICBkc3QtPmx1bl9sZW4gPSBzcmMtPnB1X2xlbjsNCj4+ ICsgICAgZHN0LT5jaGtfbGVuID0gc3JjLT5jaGtfbGVuOw0KPj4gKyAgICBkc3QtPnNlY19sZW4g PSBzcmMtPmxiYV9sZW47DQo+PiArDQo+PiArICAgIGRzdC0+c2VjX29mZnNldCA9IDA7DQo+PiAr ICAgIGRzdC0+Y2hrX29mZnNldCA9IGRzdC0+c2VjX2xlbjsNCj4+ICsgICAgZHN0LT5sdW5fb2Zm c2V0ID0gZHN0LT5jaGtfb2Zmc2V0ICsgZHN0LT5jaGtfbGVuOw0KPj4gKyAgICBkc3QtPmNoX29m ZnNldCA9IGRzdC0+bHVuX29mZnNldCArIGRzdC0+bHVuX2xlbjsNCj4+ICsNCj4+ICsgICAgZHN0 LT5jaF9tYXNrID0gKCgxVUxMIDw8IGRzdC0+Y2hfbGVuKSAtIDEpIDw8IGRzdC0+Y2hfb2Zmc2V0 Ow0KPj4gKyAgICBkc3QtPmx1bl9tYXNrID0gKCgxVUxMIDw8IGRzdC0+bHVuX2xlbikgLSAxKSA8 PCBkc3QtPmx1bl9vZmZzZXQ7DQo+PiArICAgIGRzdC0+Y2hrX21hc2sgPSAoKDFVTEwgPDwgZHN0 LT5jaGtfbGVuKSAtIDEpIDw8IGRzdC0+Y2hrX29mZnNldDsNCj4+ICsgICAgZHN0LT5zZWNfbWFz ayA9ICgoMVVMTCA8PCBkc3QtPnNlY19sZW4pIC0gMSkgPDwgZHN0LT5zZWNfb2Zmc2V0Ow0KPj4g IH0NCj4+ICAtc3RhdGljIGludCBudm1lX252bV9zZXR1cF8yMChzdHJ1Y3QgbnZtX2RldiAqbnZt ZGV2LCBzdHJ1Y3QgbnZtX2lkICpudm1faWQsDQo+PiAtICAgICAgICBzdHJ1Y3QgbnZtZV9udm1f aWQyMCAqaWQpDQo+PiArc3RhdGljIGludCBudm1lX252bV9zZXR1cF8yMChzdHJ1Y3QgbnZtZV9u dm1faWQgKmdlbl9pZCwNCj4+ICsgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1fZGV2X2dlbyAq ZGV2X2dlbykNCj4+ICB7DQo+PiAtICAgIG52bV9pZC0+dmVyX2lkID0gaWQtPm1qcjsNCj4+ICsg ICAgc3RydWN0IG52bWVfbnZtX2lkMjAgKmlkID0gKHN0cnVjdCBudm1lX252bV9pZDIwICopZ2Vu X2lkOw0KPj4gIC0gICAgbnZtX2lkLT5udW1fY2ggPSBsZTE2X3RvX2NwdShpZC0+bnVtX2dycCk7 DQo+PiAtICAgIG52bV9pZC0+bnVtX2x1biA9IGxlMTZfdG9fY3B1KGlkLT5udW1fcHUpOw0KPj4g LSAgICBudm1faWQtPm51bV9jaGsgPSBsZTMyX3RvX2NwdShpZC0+bnVtX2Noayk7DQo+PiAtICAg IG52bV9pZC0+Y2xiYSA9IGxlMzJfdG9fY3B1KGlkLT5jbGJhKTsNCj4+ICsgICAgZGV2X2dlby0+ bWFqb3JfdmVyX2lkID0gaWQtPm1qcjsNCj4+ICsgICAgZGV2X2dlby0+bWlub3JfdmVyX2lkID0g aWQtPm1ucjsNCj4+ICAtICAgIG52bV9pZC0+d3NfbWluID0gbGUzMl90b19jcHUoaWQtPndzX21p bik7DQo+PiAtICAgIG52bV9pZC0+d3Nfb3B0ID0gbGUzMl90b19jcHUoaWQtPndzX29wdCk7DQo+ PiAtICAgIG52bV9pZC0+bXdfY3VuaXRzID0gbGUzMl90b19jcHUoaWQtPm13X2N1bml0cyk7DQo+ PiArICAgIC8qIFNldCBjb21wYWN0ZWQgdmVyc2lvbiBmb3IgdXBwZXIgbGF5ZXJzICovDQo+PiAr ICAgIGRldl9nZW8tPmMudmVyc2lvbiA9IE5WTV9PQ1NTRF9TUEVDXzIwOw0KPj4gIC0gICAgbnZt X2lkLT50cmR0ID0gbGUzMl90b19jcHUoaWQtPnRyZHQpOw0KPj4gLSAgICBudm1faWQtPnRyZG0g PSBsZTMyX3RvX2NwdShpZC0+dHJkbSk7DQo+PiAtICAgIG52bV9pZC0+dHBydCA9IGxlMzJfdG9f Y3B1KGlkLT50d3J0KTsNCj4+IC0gICAgbnZtX2lkLT50cHJtID0gbGUzMl90b19jcHUoaWQtPnR3 cm0pOw0KPj4gLSAgICBudm1faWQtPnRiZXQgPSBsZTMyX3RvX2NwdShpZC0+dGNyc3QpOw0KPj4g LSAgICBudm1faWQtPnRiZW0gPSBsZTMyX3RvX2NwdShpZC0+dGNyc20pOw0KPj4gKyAgICBpZiAo IShkZXZfZ2VvLT5tYWpvcl92ZXJfaWQgPT0gMiAmJiBkZXZfZ2VvLT5taW5vcl92ZXJfaWQgPT0g MCkpIHsNCj4+ICsgICAgICAgIHByX2VycigibnZtOiBPQ1NTRCB2ZXJzaW9uIG5vdCBzdXBwb3J0 ZWQgKHYlZC4lZClcbiIsDQo+PiArICAgICAgICAgICAgICAgIGRldl9nZW8tPm1ham9yX3Zlcl9p ZCwgZGV2X2dlby0+bWlub3JfdmVyX2lkKTsNCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0K Pj4gKyAgICB9DQo+PiAgLSAgICAvKiBjYWxjdWxhdGVkIHZhbHVlcyAqLw0KPj4gLSAgICBudm1f aWQtPndzX3Blcl9jaGsgPSBudm1faWQtPmNsYmEgLyBudm1faWQtPndzX21pbjsNCj4+ICsgICAg ZGV2X2dlby0+bnVtX2NoID0gbGUxNl90b19jcHUoaWQtPm51bV9ncnApOw0KPj4gKyAgICBkZXZf Z2VvLT5udW1fbHVuID0gbGUxNl90b19jcHUoaWQtPm51bV9wdSk7DQo+PiArICAgIGRldl9nZW8t PmFsbF9sdW5zID0gZGV2X2dlby0+bnVtX2NoICogZGV2X2dlby0+bnVtX2x1bjsNCj4+ICAtICAg IC8qIDEuMiBjb21wYXRpYmlsaXR5ICovDQo+PiAtICAgIG52bV9pZC0+d3Nfc2VxID0gTlZNX0lP X1NOR0xfQUNDRVNTOw0KPj4gKyAgICBkZXZfZ2VvLT5jLm51bV9jaGsgPSBsZTMyX3RvX2NwdShp ZC0+bnVtX2Noayk7DQo+PiArICAgIGRldl9nZW8tPmMuY2xiYSA9IGxlMzJfdG9fY3B1KGlkLT5j bGJhKTsNCj4+ICsgICAgZGV2X2dlby0+Yy5jc2VjcyA9IC0xOyAgICAgICAgLyogU2V0IGJ5IG52 bWUgaWRlbnRpZnkgKi8NCj4+ICsgICAgZGV2X2dlby0+Yy5zb3MgPSAtMTsgICAgICAgIC8qIFNl dCBidSBudm1lIGlkZW50aWZ5ICovDQo+PiArDQo+PiArICAgIGRldl9nZW8tPmMud3NfbWluID0g bGUzMl90b19jcHUoaWQtPndzX21pbik7DQo+PiArICAgIGRldl9nZW8tPmMud3Nfb3B0ID0gbGUz Ml90b19jcHUoaWQtPndzX29wdCk7DQo+PiArICAgIGRldl9nZW8tPmMubXdfY3VuaXRzID0gbGUz Ml90b19jcHUoaWQtPm13X2N1bml0cyk7DQo+PiArICAgIGRldl9nZW8tPmMubWF4b2MgPSBsZTMy X3RvX2NwdShpZC0+bWF4b2MpOw0KPj4gKyAgICBkZXZfZ2VvLT5jLm1heG9jcHUgPSBsZTMyX3Rv X2NwdShpZC0+bWF4b2NwdSk7DQo+PiArDQo+PiArICAgIGRldl9nZW8tPmMubWNjYXAgPSBsZTMy X3RvX2NwdShpZC0+bWNjYXApOw0KPj4gKw0KPj4gKyAgICBkZXZfZ2VvLT5jLnRyZHQgPSBsZTMy X3RvX2NwdShpZC0+dHJkdCk7DQo+PiArICAgIGRldl9nZW8tPmMudHJkbSA9IGxlMzJfdG9fY3B1 KGlkLT50cmRtKTsNCj4+ICsgICAgZGV2X2dlby0+Yy50cHJ0ID0gbGUzMl90b19jcHUoaWQtPnR3 cnQpOw0KPj4gKyAgICBkZXZfZ2VvLT5jLnRwcm0gPSBsZTMyX3RvX2NwdShpZC0+dHdybSk7DQo+ PiArICAgIGRldl9nZW8tPmMudGJldCA9IGxlMzJfdG9fY3B1KGlkLT50Y3JzdCk7DQo+PiArICAg IGRldl9nZW8tPmMudGJlbSA9IGxlMzJfdG9fY3B1KGlkLT50Y3JzbSk7DQo+PiArDQo+PiArICAg IG52bWVfbnZtX3NldF9hZGRyXzIwKCZkZXZfZ2VvLT5jLmFkZHJmLCAmaWQtPmxiYWYpOw0KPj4g ICAgICAgIHJldHVybiAwOw0KPj4gIH0NCj4+ICAtc3RhdGljIGludCBudm1lX252bV9pZGVudGl0 eShzdHJ1Y3QgbnZtX2RldiAqbnZtZGV2LCBzdHJ1Y3QgbnZtX2lkICpudm1faWQpDQo+PiArc3Rh dGljIGludCBudm1lX252bV9pZGVudGl0eShzdHJ1Y3QgbnZtX2RldiAqbnZtZGV2KQ0KPj4gIHsN Cj4+ICAgICAgc3RydWN0IG52bWVfbnMgKm5zID0gbnZtZGV2LT5xLT5xdWV1ZWRhdGE7DQo+PiAt ICAgIHN0cnVjdCBudm1lX252bV9pZDEyICppZDsNCj4+ICsgICAgc3RydWN0IG52bWVfbnZtX2lk ICpudm1lX252bV9pZDsNCj4+ICAgICAgc3RydWN0IG52bWVfbnZtX2NvbW1hbmQgYyA9IHt9Ow0K Pj4gICAgICBpbnQgcmV0Ow0KPj4gICAgICAgIGMuaWRlbnRpdHkub3Bjb2RlID0gbnZtZV9udm1f YWRtaW5faWRlbnRpdHk7DQo+PiAgICAgIGMuaWRlbnRpdHkubnNpZCA9IGNwdV90b19sZTMyKG5z LT5oZWFkLT5uc19pZCk7DQo+PiAgLSAgICBpZCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBudm1l X252bV9pZDEyKSwgR0ZQX0tFUk5FTCk7DQo+PiAtICAgIGlmICghaWQpDQo+PiArICAgIG52bWVf bnZtX2lkID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG52bWVfbnZtX2lkKSwgR0ZQX0tFUk5FTCk7 DQo+PiArICAgIGlmICghbnZtZV9udm1faWQpDQo+PiAgICAgICAgICByZXR1cm4gLUVOT01FTTsN Cj4+ICAgICAgICByZXQgPSBudm1lX3N1Ym1pdF9zeW5jX2NtZChucy0+Y3RybC0+YWRtaW5fcSwg KHN0cnVjdCBudm1lX2NvbW1hbmQgKikmYywNCj4+IC0gICAgICAgICAgICAgICAgaWQsIHNpemVv ZihzdHJ1Y3QgbnZtZV9udm1faWQxMikpOw0KPj4gKyAgICAgICAgICAgICAgICBudm1lX252bV9p ZCwgc2l6ZW9mKHN0cnVjdCBudm1lX252bV9pZCkpOw0KPj4gICAgICBpZiAocmV0KSB7DQo+PiAg ICAgICAgICByZXQgPSAtRUlPOw0KPj4gICAgICAgICAgZ290byBvdXQ7DQo+PiBAQCAtMzc4LDIy ICs0NTgsMjEgQEAgc3RhdGljIGludCBudm1lX252bV9pZGVudGl0eShzdHJ1Y3QgbnZtX2RldiAq bnZtZGV2LCBzdHJ1Y3QgbnZtX2lkICpudm1faWQpDQo+PiAgICAgICAqIFRoZSAxLjIgYW5kIDIu MCBzcGVjaWZpY2F0aW9ucyBzaGFyZSB0aGUgZmlyc3QgYnl0ZSBpbiB0aGVpciBnZW9tZXRyeQ0K Pj4gICAgICAgKiBjb21tYW5kIHRvIG1ha2UgaXQgcG9zc2libGUgdG8ga25vdyB3aGF0IHZlcnNp b24gYSBkZXZpY2UgaW1wbGVtZW50cy4NCj4+ICAgICAgICovDQo+PiAtICAgIHN3aXRjaCAoaWQt PnZlcl9pZCkgew0KPj4gKyAgICBzd2l0Y2ggKG52bWVfbnZtX2lkLT52ZXJfaWQpIHsNCj4+ICAg ICAgY2FzZSAxOg0KPj4gLSAgICAgICAgcmV0ID0gbnZtZV9udm1fc2V0dXBfMTIobnZtZGV2LCBu dm1faWQsIGlkKTsNCj4+ICsgICAgICAgIHJldCA9IG52bWVfbnZtX3NldHVwXzEyKG52bWVfbnZt X2lkLCAmbnZtZGV2LT5kZXZfZ2VvKTsNCj4+ICAgICAgICAgIGJyZWFrOw0KPj4gICAgICBjYXNl IDI6DQo+PiAtICAgICAgICByZXQgPSBudm1lX252bV9zZXR1cF8yMChudm1kZXYsIG52bV9pZCwN Cj4+IC0gICAgICAgICAgICAgICAgKHN0cnVjdCBudm1lX252bV9pZDIwICopaWQpOw0KPj4gKyAg ICAgICAgcmV0ID0gbnZtZV9udm1fc2V0dXBfMjAobnZtZV9udm1faWQsICZudm1kZXYtPmRldl9n ZW8pOw0KPj4gICAgICAgICAgYnJlYWs7DQo+PiAgICAgIGRlZmF1bHQ6DQo+PiAtICAgICAgICBk ZXZfZXJyKG5zLT5jdHJsLT5kZXZpY2UsDQo+PiAtICAgICAgICAgICAgIk9DU1NEIHJldmlzaW9u IG5vdCBzdXBwb3J0ZWQgKCVkKVxuIiwNCj4+IC0gICAgICAgICAgICBudm1faWQtPnZlcl9pZCk7 DQo+PiArICAgICAgICBkZXZfZXJyKG5zLT5jdHJsLT5kZXZpY2UsICJPQ1NTRCByZXZpc2lvbiBu b3Qgc3VwcG9ydGVkICglZClcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG52 bWVfbnZtX2lkLT52ZXJfaWQpOw0KPj4gICAgICAgICAgcmV0ID0gLUVJTlZBTDsNCj4+ICAgICAg fQ0KPj4gKw0KPj4gIG91dDoNCj4+IC0gICAga2ZyZWUoaWQpOw0KPj4gKyAgICBrZnJlZShudm1l X252bV9pZCk7DQo+PiAgICAgIHJldHVybiByZXQ7DQo+PiAgfQ0KPj4gIEBAIC00MDEsMTIgKzQ4 MCwxMiBAQCBzdGF0aWMgaW50IG52bWVfbnZtX2dldF9iYl90Ymwoc3RydWN0IG52bV9kZXYgKm52 bWRldiwgc3RydWN0IHBwYV9hZGRyIHBwYSwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHU4ICpibGtzKQ0KPj4gIHsNCj4+ICAgICAgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEg PSBudm1kZXYtPnE7DQo+PiAtICAgIHN0cnVjdCBudm1fZ2VvICpnZW8gPSAmbnZtZGV2LT5nZW87 DQo+PiArICAgIHN0cnVjdCBudm1fZGV2X2dlbyAqZGV2X2dlbyA9ICZudm1kZXYtPmRldl9nZW87 DQo+PiAgICAgIHN0cnVjdCBudm1lX25zICpucyA9IHEtPnF1ZXVlZGF0YTsNCj4+ICAgICAgc3Ry dWN0IG52bWVfY3RybCAqY3RybCA9IG5zLT5jdHJsOw0KPj4gICAgICBzdHJ1Y3QgbnZtZV9udm1f Y29tbWFuZCBjID0ge307DQo+PiAgICAgIHN0cnVjdCBudm1lX252bV9iYl90YmwgKmJiX3RibDsN Cj4+IC0gICAgaW50IG5yX2Jsa3MgPSBnZW8tPm5yX2Noa3MgKiBnZW8tPnBsYW5lX21vZGU7DQo+ PiArICAgIGludCBucl9ibGtzID0gZGV2X2dlby0+Yy5udW1fY2hrICogZGV2X2dlby0+Yy5udW1f cGxuOw0KPj4gICAgICBpbnQgdGJsc3ogPSBzaXplb2Yoc3RydWN0IG52bWVfbnZtX2JiX3RibCkg KyBucl9ibGtzOw0KPj4gICAgICBpbnQgcmV0ID0gMDsNCj4+ICBAQCAtNDQ3LDcgKzUyNiw3IEBA IHN0YXRpYyBpbnQgbnZtZV9udm1fZ2V0X2JiX3RibChzdHJ1Y3QgbnZtX2RldiAqbnZtZGV2LCBz dHJ1Y3QgcHBhX2FkZHIgcHBhLA0KPj4gICAgICAgICAgZ290byBvdXQ7DQo+PiAgICAgIH0NCj4+ ICAtICAgIG1lbWNweShibGtzLCBiYl90YmwtPmJsaywgZ2VvLT5ucl9jaGtzICogZ2VvLT5wbGFu ZV9tb2RlKTsNCj4+ICsgICAgbWVtY3B5KGJsa3MsIGJiX3RibC0+YmxrLCBkZXZfZ2VvLT5jLm51 bV9jaGsgKiBkZXZfZ2VvLT5jLm51bV9wbG4pOw0KPj4gIG91dDoNCj4+ICAgICAga2ZyZWUoYmJf dGJsKTsNCj4+ICAgICAgcmV0dXJuIHJldDsNCj4+IEBAIC04MTcsOSArODk2LDEwIEBAIGludCBu dm1lX252bV9pb2N0bChzdHJ1Y3QgbnZtZV9ucyAqbnMsIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln bmVkIGxvbmcgYXJnKQ0KPj4gIHZvaWQgbnZtZV9udm1fdXBkYXRlX252bV9pbmZvKHN0cnVjdCBu dm1lX25zICpucykNCj4+ICB7DQo+PiAgICAgIHN0cnVjdCBudm1fZGV2ICpuZGV2ID0gbnMtPm5k ZXY7DQo+PiArICAgIHN0cnVjdCBudm1fZGV2X2dlbyAqZGV2X2dlbyA9ICZuZGV2LT5kZXZfZ2Vv Ow0KPj4gIC0gICAgbmRldi0+aWRlbnRpdHkuY3NlY3MgPSBuZGV2LT5nZW8uc2VjX3NpemUgPSAx IDw8IG5zLT5sYmFfc2hpZnQ7DQo+PiAtICAgIG5kZXYtPmlkZW50aXR5LnNvcyA9IG5kZXYtPmdl by5vb2Jfc2l6ZSA9IG5zLT5tczsNCj4+ICsgICAgZGV2X2dlby0+Yy5jc2VjcyA9IDEgPDwgbnMt PmxiYV9zaGlmdDsNCj4+ICsgICAgZGV2X2dlby0+Yy5zb3MgPSBucy0+bXM7DQo+PiAgfQ0KPj4g ICAgaW50IG52bWVfbnZtX3JlZ2lzdGVyKHN0cnVjdCBudm1lX25zICpucywgY2hhciAqZGlza19u YW1lLCBpbnQgbm9kZSkNCj4+IEBAIC04NTIsMjMgKzkzMiwyNCBAQCBzdGF0aWMgc3NpemVfdCBu dm1fZGV2X2F0dHJfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgew0KPj4gICAgICBzdHJ1 Y3QgbnZtZV9ucyAqbnMgPSBudm1lX2dldF9uc19mcm9tX2RldihkZXYpOw0KPj4gICAgICBzdHJ1 Y3QgbnZtX2RldiAqbmRldiA9IG5zLT5uZGV2Ow0KPj4gLSAgICBzdHJ1Y3QgbnZtX2lkICppZDsN Cj4+ICsgICAgc3RydWN0IG52bV9kZXZfZ2VvICpkZXZfZ2VvID0gJm5kZXYtPmRldl9nZW87DQo+ PiAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7DQo+PiAgICAgICAgaWYgKCFuZGV2KQ0KPj4g ICAgICAgICAgcmV0dXJuIDA7DQo+PiAgLSAgICBpZCA9ICZuZGV2LT5pZGVudGl0eTsNCj4+ICAg ICAgYXR0ciA9ICZkYXR0ci0+YXR0cjsNCj4+ICAgICAgICBpZiAoc3RyY21wKGF0dHItPm5hbWUs ICJ2ZXJzaW9uIikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQ QUdFX1NJWkUsICIldVxuIiwgaWQtPnZlcl9pZCk7DQo+PiArICAgICAgICByZXR1cm4gc2NucHJp bnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1LiV1XG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGRldl9nZW8tPm1ham9yX3Zlcl9pZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBk ZXZfZ2VvLT5taW5vcl92ZXJfaWQpOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5u YW1lLCAiY2FwYWJpbGl0aWVzIikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50 ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPmNhcCk7DQo+PiArICAgICAgICByZXR1cm4g c2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBkZXZfZ2VvLT5jLmNhcCk7DQo+PiAg ICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJyZWFkX3R5cCIpID09IDApIHsNCj4+ IC0gICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT50 cmR0KTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVc biIsIGRldl9nZW8tPmMudHJkdCk7DQo+PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5h bWUsICJyZWFkX21heCIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVybiBzY25wcmludGYocGFn ZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT50cmRtKTsNCj4+ICsgICAgICAgIHJldHVybiBzY25w cmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8tPmMudHJkbSk7DQo+PiAgICAg IH0gZWxzZSB7DQo+PiAgICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsDQo+PiAgICAgICAg ICAgICAgICAgICBQQUdFX1NJWkUsDQo+PiBAQCAtODc3LDc2ICs5NTgsODAgQEAgc3RhdGljIHNz aXplX3QgbnZtX2Rldl9hdHRyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KPj4gICAgICB9DQo+ PiAgfQ0KPj4gICtzdGF0aWMgc3NpemVfdCBudm1fZGV2X2F0dHJfc2hvd19wcGFmKHN0cnVjdCBu dm1fYWRkcl9mb3JtYXRfMTIgKnBwYWYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgY2hhciAq cGFnZSkNCj4+ICt7DQo+PiArICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLA0K Pj4gKyAgICAgICAgIjB4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUw MnglMDJ4XG4iLA0KPj4gKyAgICAgICAgICAgICAgICBwcGFmLT5jaF9vZmZzZXQsIHBwYWYtPmNo X2xlbiwNCj4+ICsgICAgICAgICAgICAgICAgcHBhZi0+bHVuX29mZnNldCwgcHBhZi0+bHVuX2xl biwNCj4+ICsgICAgICAgICAgICAgICAgcHBhZi0+cGxuX29mZnNldCwgcHBhZi0+cGxuX2xlbiwN Cj4+ICsgICAgICAgICAgICAgICAgcHBhZi0+YmxrX29mZnNldCwgcHBhZi0+YmxrX2xlbiwNCj4+ ICsgICAgICAgICAgICAgICAgcHBhZi0+cGdfb2Zmc2V0LCBwcGFmLT5wZ19sZW4sDQo+PiArICAg ICAgICAgICAgICAgIHBwYWYtPnNlY19vZmZzZXQsIHBwYWYtPnNlY19sZW4pOw0KPj4gK30NCj4+ ICsNCj4+ICBzdGF0aWMgc3NpemVfdCBudm1fZGV2X2F0dHJfc2hvd18xMihzdHJ1Y3QgZGV2aWNl ICpkZXYsDQo+PiAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGF0dHIsIGNoYXIg KnBhZ2UpDQo+PiAgew0KPj4gICAgICBzdHJ1Y3QgbnZtZV9ucyAqbnMgPSBudm1lX2dldF9uc19m cm9tX2RldihkZXYpOw0KPj4gICAgICBzdHJ1Y3QgbnZtX2RldiAqbmRldiA9IG5zLT5uZGV2Ow0K Pj4gLSAgICBzdHJ1Y3QgbnZtX2lkICppZDsNCj4+ICsgICAgc3RydWN0IG52bV9kZXZfZ2VvICpk ZXZfZ2VvID0gJm5kZXYtPmRldl9nZW87DQo+PiAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7 DQo+PiAgICAgICAgaWYgKCFuZGV2KQ0KPj4gICAgICAgICAgcmV0dXJuIDA7DQo+PiAgLSAgICBp ZCA9ICZuZGV2LT5pZGVudGl0eTsNCj4+ICAgICAgYXR0ciA9ICZkYXR0ci0+YXR0cjsNCj4+ICAg ICAgICBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJ2ZW5kb3Jfb3Bjb2RlIikgPT0gMCkgew0KPj4g LSAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPnZt bnQpOw0KPj4gKyAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxu IiwgZGV2X2dlby0+Yy52bW50KTsNCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFt ZSwgImRldmljZV9tb2RlIikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50Zihw YWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPmRvbSk7DQo+PiArICAgICAgICByZXR1cm4gc2Nu cHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBkZXZfZ2VvLT5jLmRvbSk7DQo+PiAgICAg IC8qIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkgKi8NCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAo YXR0ci0+bmFtZSwgIm1lZGlhX21hbmFnZXIiKSA9PSAwKSB7DQo+PiAgICAgICAgICByZXR1cm4g c2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiVzXG4iLCAiZ2VubnZtIik7DQo+PiAgICAgIH0g ZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJwcGFfZm9ybWF0IikgPT0gMCkgew0KPj4gLSAg ICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsDQo+PiAtICAgICAgICAgICAg IjB4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4XG4iLA0K Pj4gLSAgICAgICAgICAgIGlkLT5wcGFmLmNoX29mZnNldCwgaWQtPnBwYWYuY2hfbGVuLA0KPj4g LSAgICAgICAgICAgIGlkLT5wcGFmLmx1bl9vZmZzZXQsIGlkLT5wcGFmLmx1bl9sZW4sDQo+PiAt ICAgICAgICAgICAgaWQtPnBwYWYucGxuX29mZnNldCwgaWQtPnBwYWYucGxuX2xlbiwNCj4+IC0g ICAgICAgICAgICBpZC0+cHBhZi5ibGtfb2Zmc2V0LCBpZC0+cHBhZi5ibGtfbGVuLA0KPj4gLSAg ICAgICAgICAgIGlkLT5wcGFmLnBnX29mZnNldCwgaWQtPnBwYWYucGdfbGVuLA0KPj4gLSAgICAg ICAgICAgIGlkLT5wcGFmLnNlY3Rfb2Zmc2V0LCBpZC0+cHBhZi5zZWN0X2xlbik7DQo+PiArICAg ICAgICByZXR1cm4gbnZtX2Rldl9hdHRyX3Nob3dfcHBhZigodm9pZCAqKSZkZXZfZ2VvLT5jLmFk ZHJmLCBwYWdlKTsNCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgIm1lZGlh X3R5cGUiKSA9PSAwKSB7ICAgIC8qIHU4ICovDQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRm KHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+bXR5cGUpOw0KPj4gKyAgICAgICAgcmV0dXJu IHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy5tdHlwZSk7DQo+ PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJmbGFzaF9tZWRpYV90eXBlIikg PT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIl dVxuIiwgaWQtPmZtdHlwZSk7DQo+PiArICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBB R0VfU0laRSwgIiV1XG4iLCBkZXZfZ2VvLT5jLmZtdHlwZSk7DQo+PiAgICAgIH0gZWxzZSBpZiAo c3RyY21wKGF0dHItPm5hbWUsICJudW1fY2hhbm5lbHMiKSA9PSAwKSB7DQo+PiAtICAgICAgICBy ZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+bnVtX2NoKTsNCj4+ ICsgICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9n ZW8tPm51bV9jaCk7DQo+PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJudW1f bHVucyIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9T SVpFLCAiJXVcbiIsIGlkLT5udW1fbHVuKTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYo cGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8tPm51bV9sdW4pOw0KPj4gICAgICB9IGVs c2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAibnVtX3BsYW5lcyIpID09IDApIHsNCj4+IC0gICAg ICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT5udW1fcGxu KTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIs IGRldl9nZW8tPmMubnVtX3Bsbik7DQo+PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5h bWUsICJudW1fYmxvY2tzIikgPT0gMCkgeyAgICAvKiB1MTYgKi8NCj4+IC0gICAgICAgIHJldHVy biBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT5udW1fY2hrKTsNCj4+ICsg ICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8t PmMubnVtX2Noayk7DQo+PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJudW1f cGFnZXMiKSA9PSAwKSB7DQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0Vf U0laRSwgIiV1XG4iLCBpZC0+bnVtX3BnKTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYo cGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8tPmMubnVtX3BnKTsNCj4+ICAgICAgfSBl bHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgInBhZ2Vfc2l6ZSIpID09IDApIHsNCj4+IC0gICAg ICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT5mcGdfc3op Ow0KPj4gKyAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwg ZGV2X2dlby0+Yy5mcGdfc3opOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1l LCAiaHdfc2VjdG9yX3NpemUiKSA9PSAwKSB7DQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRm KHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+Y3NlY3MpOw0KPj4gKyAgICAgICAgcmV0dXJu IHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy5jc2Vjcyk7DQo+ PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJvb2Jfc2VjdG9yX3NpemUiKSA9 PSAwKSB7LyogdTMyICovDQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0Vf U0laRSwgIiV1XG4iLCBpZC0+c29zKTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYocGFn ZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8tPmMuc29zKTsNCj4+ICAgICAgfSBlbHNlIGlm IChzdHJjbXAoYXR0ci0+bmFtZSwgInByb2dfdHlwIikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0 dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPnRwcnQpOw0KPj4gKyAg ICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+ Yy50cHJ0KTsNCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgInByb2dfbWF4 IikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUs ICIldVxuIiwgaWQtPnRwcm0pOw0KPj4gKyAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQ QUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy50cHJtKTsNCj4+ICAgICAgfSBlbHNlIGlmIChz dHJjbXAoYXR0ci0+bmFtZSwgImVyYXNlX3R5cCIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVy biBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT50YmV0KTsNCj4+ICsgICAg ICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8tPmMu dGJldCk7DQo+PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJlcmFzZV9tYXgi KSA9PSAwKSB7DQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwg IiV1XG4iLCBpZC0+dGJlbSk7DQo+PiArICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBB R0VfU0laRSwgIiV1XG4iLCBkZXZfZ2VvLT5jLnRiZW0pOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0 cmNtcChhdHRyLT5uYW1lLCAibXVsdGlwbGFuZV9tb2RlcyIpID09IDApIHsNCj4+IC0gICAgICAg IHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiMHglMDh4XG4iLCBpZC0+bXBvcyk7 DQo+PiArICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIjB4JTA4eFxu IiwgZGV2X2dlby0+Yy5tcG9zKTsNCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFt ZSwgIm1lZGlhX2NhcGFiaWxpdGllcyIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVybiBzY25w cmludGYocGFnZSwgUEFHRV9TSVpFLCAiMHglMDh4XG4iLCBpZC0+bWNjYXApOw0KPj4gKyAgICAg ICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIweCUwOHhcbiIsIGRldl9nZW8t PmMubWNjYXApOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAibWF4X3Bo eXNfc2VjcyIpID09IDApIHsNCj4+ICAgICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFH RV9TSVpFLCAiJXVcbiIsDQo+PiAgICAgICAgICAgICAgICAgIG5kZXYtPm9wcy0+bWF4X3BoeXNf c2VjdCk7DQo+PiAgICAgIH0gZWxzZSB7DQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBh Z2UsDQo+PiAtICAgICAgICAgICAgICAgICBQQUdFX1NJWkUsDQo+PiAtICAgICAgICAgICAgICAg ICAiVW5oYW5kbGVkIGF0dHIoJXMpIGluIGBudm1fZGV2X2F0dHJfc2hvd18xMmBcbiIsDQo+PiAt ICAgICAgICAgICAgICAgICBhdHRyLT5uYW1lKTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmlu dGYocGFnZSwgUEFHRV9TSVpFLA0KPj4gKyAgICAgICAgICAgICJVbmhhbmRsZWQgYXR0ciglcykg aW4gYG52bV9kZXZfYXR0cl9zaG93XzEyYFxuIiwNCj4+ICsgICAgICAgICAgICBhdHRyLT5uYW1l KTsNCj4+ICAgICAgfQ0KPj4gIH0NCj4+ICBAQCAtOTU1LDQyICsxMDQwLDQwIEBAIHN0YXRpYyBz c2l6ZV90IG52bV9kZXZfYXR0cl9zaG93XzIwKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+ICB7DQo+ PiAgICAgIHN0cnVjdCBudm1lX25zICpucyA9IG52bWVfZ2V0X25zX2Zyb21fZGV2KGRldik7DQo+ PiAgICAgIHN0cnVjdCBudm1fZGV2ICpuZGV2ID0gbnMtPm5kZXY7DQo+PiAtICAgIHN0cnVjdCBu dm1faWQgKmlkOw0KPj4gKyAgICBzdHJ1Y3QgbnZtX2Rldl9nZW8gKmRldl9nZW8gPSAmbmRldi0+ ZGV2X2dlbzsNCj4+ICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsNCj4+ICAgICAgICBpZiAo IW5kZXYpDQo+PiAgICAgICAgICByZXR1cm4gMDsNCj4+ICAtICAgIGlkID0gJm5kZXYtPmlkZW50 aXR5Ow0KPj4gICAgICBhdHRyID0gJmRhdHRyLT5hdHRyOw0KPj4gICAgICAgIGlmIChzdHJjbXAo YXR0ci0+bmFtZSwgImdyb3VwcyIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVybiBzY25wcmlu dGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT5udW1fY2gpOw0KPj4gKyAgICAgICAgcmV0 dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+bnVtX2NoKTsN Cj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgInB1bml0cyIpID09IDApIHsN Cj4+IC0gICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlk LT5udW1fbHVuKTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpF LCAiJXVcbiIsIGRldl9nZW8tPm51bV9sdW4pOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0cmNtcChh dHRyLT5uYW1lLCAiY2h1bmtzIikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50 ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPm51bV9jaGspOw0KPj4gKyAgICAgICAgcmV0 dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy5udW1fY2hr KTsNCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgImNsYmEiKSA9PSAwKSB7 DQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBp ZC0+Y2xiYSk7DQo+PiArICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwg IiV1XG4iLCBkZXZfZ2VvLT5jLmNsYmEpOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0cmNtcChhdHRy LT5uYW1lLCAid3NfbWluIikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50Zihw YWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPndzX21pbik7DQo+PiArICAgICAgICByZXR1cm4g c2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBkZXZfZ2VvLT5jLndzX21pbik7DQo+ PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJ3c19vcHQiKSA9PSAwKSB7DQo+ PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBpZC0+ d3Nfb3B0KTsNCj4+ICsgICAgICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAi JXVcbiIsIGRldl9nZW8tPmMud3Nfb3B0KTsNCj4+ICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXR0 ci0+bmFtZSwgIm13X2N1bml0cyIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVybiBzY25wcmlu dGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT5td19jdW5pdHMpOw0KPj4gKyAgICAgICAg cmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy5td19j dW5pdHMpOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAid3JpdGVfdHlw IikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUs ICIldVxuIiwgaWQtPnRwcnQpOw0KPj4gKyAgICAgICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQ QUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy50cHJ0KTsNCj4+ICAgICAgfSBlbHNlIGlmIChz dHJjbXAoYXR0ci0+bmFtZSwgIndyaXRlX21heCIpID09IDApIHsNCj4+IC0gICAgICAgIHJldHVy biBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGlkLT50cHJtKTsNCj4+ICsgICAg ICAgIHJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGRldl9nZW8tPmMu dHBybSk7DQo+PiAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJyZXNldF90eXAi KSA9PSAwKSB7DQo+PiAtICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwg IiV1XG4iLCBpZC0+dGJldCk7DQo+PiArICAgICAgICByZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBB R0VfU0laRSwgIiV1XG4iLCBkZXZfZ2VvLT5jLnRiZXQpOw0KPj4gICAgICB9IGVsc2UgaWYgKHN0 cmNtcChhdHRyLT5uYW1lLCAicmVzZXRfbWF4IikgPT0gMCkgew0KPj4gLSAgICAgICAgcmV0dXJu IHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgaWQtPnRiZW0pOw0KPj4gKyAgICAg ICAgcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZGV2X2dlby0+Yy50 YmVtKTsNCj4+ICAgICAgfSBlbHNlIHsNCj4+IC0gICAgICAgIHJldHVybiBzY25wcmludGYocGFn ZSwNCj4+IC0gICAgICAgICAgICAgICAgIFBBR0VfU0laRSwNCj4+IC0gICAgICAgICAgICAgICAg ICJVbmhhbmRsZWQgYXR0ciglcykgaW4gYG52bV9kZXZfYXR0cl9zaG93XzIwYFxuIiwNCj4+IC0g ICAgICAgICAgICAgICAgIGF0dHItPm5hbWUpOw0KPj4gKyAgICAgICAgcmV0dXJuIHNjbnByaW50 ZihwYWdlLCBQQUdFX1NJWkUsDQo+PiArICAgICAgICAgICAgIlVuaGFuZGxlZCBhdHRyKCVzKSBp biBgbnZtX2Rldl9hdHRyX3Nob3dfMjBgXG4iLA0KPj4gKyAgICAgICAgICAgIGF0dHItPm5hbWUp Ow0KPj4gICAgICB9DQo+PiAgfQ0KPj4gIEBAIC0xMTA5LDEwICsxMTkyLDEzIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG52bV9kZXZfYXR0cl9ncm91cF8yMCA9IHsNCj4+ ICAgIGludCBudm1lX252bV9yZWdpc3Rlcl9zeXNmcyhzdHJ1Y3QgbnZtZV9ucyAqbnMpDQo+PiAg ew0KPj4gLSAgICBpZiAoIW5zLT5uZGV2KQ0KPj4gKyAgICBzdHJ1Y3QgbnZtX2RldiAqbmRldiA9 IG5zLT5uZGV2Ow0KPj4gKyAgICBzdHJ1Y3QgbnZtX2Rldl9nZW8gKmRldl9nZW8gPSAmbmRldi0+ ZGV2X2dlbzsNCj4+ICsNCj4+ICsgICAgaWYgKCFuZGV2KQ0KPj4gICAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+PiAgLSAgICBzd2l0Y2ggKG5zLT5uZGV2LT5pZGVudGl0eS52ZXJfaWQpIHsNCj4+ ICsgICAgc3dpdGNoIChkZXZfZ2VvLT5tYWpvcl92ZXJfaWQpIHsNCj4+ICAgICAgY2FzZSAxOg0K Pj4gICAgICAgICAgcmV0dXJuIHN5c2ZzX2NyZWF0ZV9ncm91cCgmZGlza190b19kZXYobnMtPmRp c2spLT5rb2JqLA0KPj4gICAgICAgICAgICAgICAgICAgICAgJm52bV9kZXZfYXR0cl9ncm91cF8x Mik7DQo+PiBAQCAtMTEyNiw3ICsxMjEyLDEwIEBAIGludCBudm1lX252bV9yZWdpc3Rlcl9zeXNm cyhzdHJ1Y3QgbnZtZV9ucyAqbnMpDQo+PiAgICB2b2lkIG52bWVfbnZtX3VucmVnaXN0ZXJfc3lz ZnMoc3RydWN0IG52bWVfbnMgKm5zKQ0KPj4gIHsNCj4+IC0gICAgc3dpdGNoIChucy0+bmRldi0+ aWRlbnRpdHkudmVyX2lkKSB7DQo+PiArICAgIHN0cnVjdCBudm1fZGV2ICpuZGV2ID0gbnMtPm5k ZXY7DQo+PiArICAgIHN0cnVjdCBudm1fZGV2X2dlbyAqZGV2X2dlbyA9ICZuZGV2LT5kZXZfZ2Vv Ow0KPj4gKw0KPj4gKyAgICBzd2l0Y2ggKGRldl9nZW8tPm1ham9yX3Zlcl9pZCkgew0KPj4gICAg ICBjYXNlIDE6DQo+PiAgICAgICAgICBzeXNmc19yZW1vdmVfZ3JvdXAoJmRpc2tfdG9fZGV2KG5z LT5kaXNrKS0+a29iaiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICZudm1fZGV2X2F0dHJfZ3Jv dXBfMTIpOw0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGlnaHRudm0uaCBiL2luY2x1 ZGUvbGludXgvbGlnaHRudm0uaA0KPj4gaW5kZXggYjcxN2MwMDBiNzEyLi42YTU2N2JkMTliNzMg MTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmgNCj4+ICsrKyBiL2luY2x1 ZGUvbGludXgvbGlnaHRudm0uaA0KPj4gQEAgLTIzLDYgKzIzLDExIEBAIGVudW0gew0KPj4gICNk ZWZpbmUgTlZNX0xVTl9CSVRTICg4KQ0KPj4gICNkZWZpbmUgTlZNX0NIX0JJVFMgICg3KQ0KPj4g ICtlbnVtIHsNCj4+ICsgICAgTlZNX09DU1NEX1NQRUNfMTIgPSAxMiwNCj4+ICsgICAgTlZNX09D U1NEX1NQRUNfMjAgPSAyMCwNCj4+ICt9Ow0KPj4gKw0KPj4gIHN0cnVjdCBwcGFfYWRkciB7DQo+ PiAgICAgIC8qIEdlbmVyaWMgc3RydWN0dXJlIGZvciBhbGwgYWRkcmVzc2VzICovDQo+PiAgICAg IHVuaW9uIHsNCj4+IEBAIC01MCw3ICs1NSw3IEBAIHN0cnVjdCBudm1faWQ7DQo+PiAgc3RydWN0 IG52bV9kZXY7DQo+PiAgc3RydWN0IG52bV90Z3RfZGV2Ow0KPj4gIC10eXBlZGVmIGludCAobnZt X2lkX2ZuKShzdHJ1Y3QgbnZtX2RldiAqLCBzdHJ1Y3QgbnZtX2lkICopOw0KPj4gK3R5cGVkZWYg aW50IChudm1faWRfZm4pKHN0cnVjdCBudm1fZGV2ICopOw0KPj4gIHR5cGVkZWYgaW50IChudm1f b3BfYmJfdGJsX2ZuKShzdHJ1Y3QgbnZtX2RldiAqLCBzdHJ1Y3QgcHBhX2FkZHIsIHU4ICopOw0K Pj4gIHR5cGVkZWYgaW50IChudm1fb3Bfc2V0X2JiX2ZuKShzdHJ1Y3QgbnZtX2RldiAqLCBzdHJ1 Y3QgcHBhX2FkZHIgKiwgaW50LCBpbnQpOw0KPj4gIHR5cGVkZWYgaW50IChudm1fc3VibWl0X2lv X2ZuKShzdHJ1Y3QgbnZtX2RldiAqLCBzdHJ1Y3QgbnZtX3JxICopOw0KPj4gQEAgLTE1NCw2MiAr MTU5LDExMyBAQCBzdHJ1Y3QgbnZtX2lkX2xwX3RibCB7DQo+PiAgICAgIHN0cnVjdCBudm1faWRf bHBfbWxjIG1sYzsNCj4+ICB9Ow0KPj4gIC1zdHJ1Y3QgbnZtX2FkZHJfZm9ybWF0IHsNCj4+IC0g ICAgdTggICAgY2hfb2Zmc2V0Ow0KPj4gK3N0cnVjdCBudm1fYWRkcl9mb3JtYXRfMTIgew0KPj4g ICAgICB1OCAgICBjaF9sZW47DQo+PiAtICAgIHU4ICAgIGx1bl9vZmZzZXQ7DQo+PiAgICAgIHU4 ICAgIGx1bl9sZW47DQo+PiAtICAgIHU4ICAgIHBsbl9vZmZzZXQ7DQo+PiArICAgIHU4ICAgIGJs a19sZW47DQo+PiArICAgIHU4ICAgIHBnX2xlbjsNCj4+ICAgICAgdTggICAgcGxuX2xlbjsNCj4+ ICsgICAgdTggICAgc2VjX2xlbjsNCj4+ICsNCj4+ICsgICAgdTggICAgY2hfb2Zmc2V0Ow0KPj4g KyAgICB1OCAgICBsdW5fb2Zmc2V0Ow0KPj4gICAgICB1OCAgICBibGtfb2Zmc2V0Ow0KPj4gLSAg ICB1OCAgICBibGtfbGVuOw0KPj4gICAgICB1OCAgICBwZ19vZmZzZXQ7DQo+PiAtICAgIHU4ICAg IHBnX2xlbjsNCj4+IC0gICAgdTggICAgc2VjdF9vZmZzZXQ7DQo+PiAtICAgIHU4ICAgIHNlY3Rf bGVuOw0KPj4gKyAgICB1OCAgICBwbG5fb2Zmc2V0Ow0KPj4gKyAgICB1OCAgICBzZWNfb2Zmc2V0 Ow0KPj4gKw0KPj4gKyAgICB1NjQgICAgY2hfbWFzazsNCj4+ICsgICAgdTY0ICAgIGx1bl9tYXNr Ow0KPj4gKyAgICB1NjQgICAgYmxrX21hc2s7DQo+PiArICAgIHU2NCAgICBwZ19tYXNrOw0KPj4g KyAgICB1NjQgICAgcGxuX21hc2s7DQo+PiArICAgIHU2NCAgICBzZWNfbWFzazsNCj4+ICt9Ow0K Pj4gKw0KPj4gK3N0cnVjdCBudm1fYWRkcl9mb3JtYXQgew0KPj4gKyAgICB1OCAgICBjaF9sZW47 DQo+PiArICAgIHU4ICAgIGx1bl9sZW47DQo+PiArICAgIHU4ICAgIGNoa19sZW47DQo+PiArICAg IHU4ICAgIHNlY19sZW47DQo+PiArICAgIHU4ICAgIHJzdl9sZW5bMl07DQo+PiArDQo+PiArICAg IHU4ICAgIGNoX29mZnNldDsNCj4+ICsgICAgdTggICAgbHVuX29mZnNldDsNCj4+ICsgICAgdTgg ICAgY2hrX29mZnNldDsNCj4+ICsgICAgdTggICAgc2VjX29mZnNldDsNCj4+ICsgICAgdTggICAg cnN2X29mZlsyXTsNCj4+ICsNCj4+ICsgICAgdTY0ICAgIGNoX21hc2s7DQo+PiArICAgIHU2NCAg ICBsdW5fbWFzazsNCj4+ICsgICAgdTY0ICAgIGNoa19tYXNrOw0KPj4gKyAgICB1NjQgICAgc2Vj X21hc2s7DQo+PiArICAgIHU2NCAgICByc3ZfbWFza1syXTsNCj4+ICB9Ow0KPj4gIC1zdHJ1Y3Qg bnZtX2lkIHsNCj4+IC0gICAgdTggICAgdmVyX2lkOw0KPj4gKy8qIERldmljZSBjb21tb24gZ2Vv bWV0cnkgKi8NCj4+ICtzdHJ1Y3QgbnZtX2NvbW1vbl9nZW8gew0KPj4gKyAgICAvKiBrZXJuZWwg c2hvcnQgdmVyc2lvbiAqLw0KPj4gKyAgICB1OCAgICB2ZXJzaW9uOw0KPj4gKw0KPj4gKyAgICAv KiBjaHVuayBnZW9tZXRyeSAqLw0KPj4gKyAgICB1MzIgICAgbnVtX2NoazsgICAgLyogY2h1bmtz IHBlciBsdW4gKi8NCj4+ICsgICAgdTMyICAgIGNsYmE7ICAgICAgICAvKiBzZWN0b3JzIHBlciBj aHVuayAqLw0KPj4gKyAgICB1MTYgICAgY3NlY3M7ICAgICAgICAvKiBzZWN0b3Igc2l6ZSAqLw0K Pj4gKyAgICB1MTYgICAgc29zOyAgICAgICAgLyogb3V0LW9mLWJhbmQgYXJlYSBzaXplICovDQo+ PiArDQo+PiArICAgIC8qIGRldmljZSB3cml0ZSBjb25zdHJhaW5zICovDQo+PiArICAgIHUzMiAg ICB3c19taW47ICAgICAgICAvKiBtaW5pbXVtIHdyaXRlIHNpemUgKi8NCj4+ICsgICAgdTMyICAg IHdzX29wdDsgICAgICAgIC8qIG9wdGltYWwgd3JpdGUgc2l6ZSAqLw0KPj4gKyAgICB1MzIgICAg bXdfY3VuaXRzOyAgICAvKiBkaXN0YW5jZSByZXF1aXJlZCBmb3Igc3VjY2Vzc2Z1bCByZWFkICov DQo+PiArICAgIHUzMiAgICBtYXhvYzsgICAgICAgIC8qIG1heGltdW0gb3BlbiBjaHVua3MgKi8N Cj4+ICsgICAgdTMyICAgIG1heG9jcHU7ICAgIC8qIG1heGltdW0gb3BlbiBjaHVua3MgcGVyIHBh cmFsbGVsIHVuaXQgKi8NCj4+ICsNCj4+ICsgICAgLyogZGV2aWNlIGNhcGFiaWxpdGllcyAqLw0K Pj4gKyAgICB1MzIgICAgbWNjYXA7DQo+PiArDQo+PiArICAgIC8qIGRldmljZSB0aW1pbmdzICov DQo+PiArICAgIHUzMiAgICB0cmR0OyAgICAgICAgLyogQXZnLiBUcmVhZCAobnMpICovDQo+PiAr ICAgIHUzMiAgICB0cmRtOyAgICAgICAgLyogTWF4IFRyZWFkIChucykgKi8NCj4+ICsgICAgdTMy ICAgIHRwcnQ7ICAgICAgICAvKiBBdmcuIFRwcm9nIChucykgKi8NCj4+ICsgICAgdTMyICAgIHRw cm07ICAgICAgICAvKiBNYXggVHByb2cgKG5zKSAqLw0KPj4gKyAgICB1MzIgICAgdGJldDsgICAg ICAgIC8qIEF2Zy4gVGVyYXNlIChucykgKi8NCj4+ICsgICAgdTMyICAgIHRiZW07ICAgICAgICAv KiBNYXggVGVyYXNlIChucykgKi8NCj4+ICsNCj4+ICsgICAgLyogZ2VuZXJpYyBhZGRyZXNzIGZv cm1hdCAqLw0KPj4gKyAgICBzdHJ1Y3QgbnZtX2FkZHJfZm9ybWF0IGFkZHJmOw0KPj4gKw0KPj4g KyAgICAvKiAxLjIgY29tcGF0aWJpbGl0eSAqLw0KPj4gICAgICB1OCAgICB2bW50Ow0KPj4gICAg ICB1MzIgICAgY2FwOw0KPj4gICAgICB1MzIgICAgZG9tOw0KPj4gIC0gICAgc3RydWN0ICAgIG52 bV9hZGRyX2Zvcm1hdCBwcGFmOw0KPj4gLQ0KPj4gLSAgICB1OCAgICBudW1fY2g7DQo+PiAtICAg IHU4ICAgIG51bV9sdW47DQo+PiAtICAgIHUxNiAgICBudW1fY2hrOw0KPj4gLSAgICB1MTYgICAg Y2xiYTsNCj4+IC0gICAgdTE2ICAgIGNzZWNzOw0KPj4gLSAgICB1MTYgICAgc29zOw0KPj4gLQ0K Pj4gLSAgICB1MzIgICAgd3NfbWluOw0KPj4gLSAgICB1MzIgICAgd3Nfb3B0Ow0KPj4gLSAgICB1 MzIgICAgbXdfY3VuaXRzOw0KPj4gLQ0KPj4gLSAgICB1MzIgICAgdHJkdDsNCj4+IC0gICAgdTMy ICAgIHRyZG07DQo+PiAtICAgIHUzMiAgICB0cHJ0Ow0KPj4gLSAgICB1MzIgICAgdHBybTsNCj4+ IC0gICAgdTMyICAgIHRiZXQ7DQo+PiAtICAgIHUzMiAgICB0YmVtOw0KPj4gLSAgICB1MzIgICAg bXBvczsNCj4+IC0gICAgdTMyICAgIG1jY2FwOw0KPj4gLSAgICB1MTYgICAgY3BhcjsNCj4+IC0N Cj4+IC0gICAgLyogY2FsY3VsYXRlZCB2YWx1ZXMgKi8NCj4+IC0gICAgdTE2ICAgIHdzX3NlcTsN Cj4+IC0gICAgdTE2ICAgIHdzX3Blcl9jaGs7DQo+PiAtDQo+PiAtICAgIC8qIDEuMiBjb21wYXRp YmlsaXR5ICovDQo+PiAgICAgIHU4ICAgIG10eXBlOw0KPj4gICAgICB1OCAgICBmbXR5cGU7DQo+ PiAgKyAgICB1MTYgICAgY3BhcjsNCj4+ICsgICAgdTMyICAgIG1wb3M7DQo+PiArDQo+PiAgICAg IHU4ICAgIG51bV9wbG47DQo+PiArICAgIHU4ICAgIHBsbl9tb2RlOw0KPj4gICAgICB1MTYgICAg bnVtX3BnOw0KPj4gICAgICB1MTYgICAgZnBnX3N6Ow0KPj4gLX0gX19wYWNrZWQ7DQo+PiArfTsN Cj4+ICsNCj4+ICsvKiBEZXZpY2UgaWRlbnRpZmllZCBnZW9tZXRyeSAqLw0KPj4gK3N0cnVjdCBu dm1fZGV2X2dlbyB7DQo+PiArICAgIC8qIGRldmljZSByZXBvcnRlZCB2ZXJzaW9uICovDQo+PiAr ICAgIHU4ICAgIG1ham9yX3Zlcl9pZDsNCj4+ICsgICAgdTggICAgbWlub3JfdmVyX2lkOw0KPj4g Kw0KPj4gKyAgICAvKiBmdWxsIGRldmljZSBnZW9tZXRyeSAqLw0KPj4gKyAgICB1MTYgICAgbnVt X2NoOw0KPj4gKyAgICB1MTYgICAgbnVtX2x1bjsNCj4+ICsNCj4+ICsgICAgLyogY2FsY3VsYXRl ZCB2YWx1ZXMgKi8NCj4+ICsgICAgdTE2ICAgIGFsbF9sdW5zOw0KPj4gKw0KPj4gKyAgICBzdHJ1 Y3QgbnZtX2NvbW1vbl9nZW8gYzsNCj4+ICt9Ow0KPj4gICAgc3RydWN0IG52bV90YXJnZXQgew0K Pj4gICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+PiBAQCAtMjc0LDM4ICszMzAsMjMgQEAg ZW51bSB7DQo+PiAgICAgIE5WTV9CTEtfU1RfQkFEID0gICAgMHg4LCAgICAvKiBCYWQgYmxvY2sg Ki8NCj4+ICB9Ow0KPj4gIC0NCj4+IC0vKiBEZXZpY2UgZ2VuZXJpYyBpbmZvcm1hdGlvbiAqLw0K Pj4gKy8qIEluc3RhbmNlIGdlb21ldHJ5ICovDQo+PiAgc3RydWN0IG52bV9nZW8gew0KPj4gLSAg ICAvKiBnZW5lcmljIGdlb21ldHJ5ICovDQo+PiAtICAgIGludCBucl9jaG5sczsNCj4+IC0gICAg aW50IGFsbF9sdW5zOyAvKiBhY3Jvc3MgY2hhbm5lbHMgKi8NCj4+IC0gICAgaW50IG5yX2x1bnM7 IC8qIHBlciBjaGFubmVsICovDQo+PiAtICAgIGludCBucl9jaGtzOyAvKiBwZXIgbHVuICovDQo+ PiAtDQo+PiAtICAgIGludCBzZWNfc2l6ZTsNCj4+IC0gICAgaW50IG9vYl9zaXplOw0KPj4gLSAg ICBpbnQgbWNjYXA7DQo+PiAtDQo+PiAtICAgIGludCBzZWNfcGVyX2NoazsNCj4+IC0gICAgaW50 IHNlY19wZXJfbHVuOw0KPj4gLQ0KPj4gLSAgICBpbnQgd3NfbWluOw0KPj4gLSAgICBpbnQgd3Nf b3B0Ow0KPj4gLSAgICBpbnQgd3Nfc2VxOw0KPj4gLSAgICBpbnQgd3NfcGVyX2NoazsNCj4+ICsg ICAgLyogaW5zdGFuY2Ugc3BlY2lmaWMgZ2VvbWV0cnkgKi8NCj4+ICsgICAgaW50IG51bV9jaDsN Cj4+ICsgICAgaW50IG51bV9sdW47ICAgICAgICAvKiBwZXIgY2hhbm5lbCAqLw0KPj4gICAgICAg IGludCBtYXhfcnFfc2l6ZTsNCj4+IC0NCj4+ICAgICAgaW50IG9wOw0KPj4gIC0gICAgc3RydWN0 IG52bV9hZGRyX2Zvcm1hdCBwcGFmOw0KPj4gKyAgICAvKiBjb21tb24gZ2VvbWV0cnkgKi8NCj4+ ICsgICAgc3RydWN0IG52bV9jb21tb25fZ2VvIGM7DQo+PiAgLSAgICAvKiBMZWdhY3kgMS4yIHNw ZWNpZmljIGdlb21ldHJ5ICovDQo+PiAtICAgIGludCBwbGFuZV9tb2RlOyAvKiBkcml2ZSBkZXZp Y2UgaW4gc2luZ2xlLCBkb3VibGUgb3IgcXVhZCBtb2RlICovDQo+PiAtICAgIGludCBucl9wbGFu ZXM7DQo+PiAtICAgIGludCBzZWNfcGVyX3BnOyAvKiBvbmx5IHNlY3RvcnMgZm9yIGEgc2luZ2xl IHBhZ2UgKi8NCj4+IC0gICAgaW50IHNlY19wZXJfcGw7IC8qIGFsbCBzZWN0b3JzIGFjcm9zcyBw bGFuZXMgKi8NCj4+ICsgICAgLyogY2FsY3VsYXRlZCB2YWx1ZXMgKi8NCj4+ICsgICAgaW50IGFs bF9sdW5zOyAgICAgICAgLyogYWNyb3NzIGNoYW5uZWxzICovDQo+PiArICAgIGludCBhbGxfY2h1 bmtzOyAgICAgICAgLyogYWNyb3NzIGNoYW5uZWxzICovDQo+PiArDQo+PiArICAgIHNlY3Rvcl90 IHRvdGFsX3NlY3M7ICAgIC8qIGFjcm9zcyBjaGFubmVscyAqLw0KPj4gIH07DQo+PiAgICAvKiBz dWItZGV2aWNlIHN0cnVjdHVyZSAqLw0KPj4gQEAgLTMxNiw5ICszNTcsNiBAQCBzdHJ1Y3QgbnZt X3RndF9kZXYgew0KPj4gICAgICAvKiBCYXNlIHBwYXMgZm9yIHRhcmdldCBMVU5zICovDQo+PiAg ICAgIHN0cnVjdCBwcGFfYWRkciAqbHVuczsNCj4+ICAtICAgIHNlY3Rvcl90IHRvdGFsX3NlY3M7 DQo+PiAtDQo+PiAtICAgIHN0cnVjdCBudm1faWQgaWRlbnRpdHk7DQo+PiAgICAgIHN0cnVjdCBy ZXF1ZXN0X3F1ZXVlICpxOw0KPj4gICAgICAgIHN0cnVjdCBudm1fZGV2ICpwYXJlbnQ7DQo+PiBA QCAtMzMxLDE1ICszNjksMTEgQEAgc3RydWN0IG52bV9kZXYgew0KPj4gICAgICBzdHJ1Y3QgbGlz dF9oZWFkIGRldmljZXM7DQo+PiAgICAgICAgLyogRGV2aWNlIGluZm9ybWF0aW9uICovDQo+PiAt ICAgIHN0cnVjdCBudm1fZ2VvIGdlbzsNCj4+IC0NCj4+IC0gICAgdW5zaWduZWQgbG9uZyB0b3Rh bF9zZWNzOw0KPj4gKyAgICBzdHJ1Y3QgbnZtX2Rldl9nZW8gZGV2X2dlbzsNCj4+ICAgICAgICB1 bnNpZ25lZCBsb25nICpsdW5fbWFwOw0KPj4gICAgICB2b2lkICpkbWFfcG9vbDsNCj4+ICAtICAg IHN0cnVjdCBudm1faWQgaWRlbnRpdHk7DQo+PiAtDQo+PiAgICAgIC8qIEJhY2tlbmQgZGV2aWNl ICovDQo+PiAgICAgIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOw0KPj4gICAgICBjaGFyIG5hbWVb RElTS19OQU1FX0xFTl07DQo+PiBAQCAtMzU5LDE0ICszOTMsMTYgQEAgc3RhdGljIGlubGluZSBz dHJ1Y3QgcHBhX2FkZHIgZ2VuZXJpY190b19kZXZfYWRkcihzdHJ1Y3QgbnZtX3RndF9kZXYgKnRn dF9kZXYsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHBhX2FkZHIgcikN Cj4+ICB7DQo+PiAgICAgIHN0cnVjdCBudm1fZ2VvICpnZW8gPSAmdGd0X2Rldi0+Z2VvOw0KPj4g KyAgICBzdHJ1Y3QgbnZtX2FkZHJfZm9ybWF0XzEyICpwcGFmID0NCj4+ICsgICAgICAgICAgICAg ICAgKHN0cnVjdCBudm1fYWRkcl9mb3JtYXRfMTIgKikmZ2VvLT5jLmFkZHJmOw0KPj4gICAgICBz dHJ1Y3QgcHBhX2FkZHIgbDsNCj4+ICAtICAgIGwucHBhID0gKCh1NjQpci5nLmJsaykgPDwgZ2Vv LT5wcGFmLmJsa19vZmZzZXQ7DQo+PiAtICAgIGwucHBhIHw9ICgodTY0KXIuZy5wZykgPDwgZ2Vv LT5wcGFmLnBnX29mZnNldDsNCj4+IC0gICAgbC5wcGEgfD0gKCh1NjQpci5nLnNlYykgPDwgZ2Vv LT5wcGFmLnNlY3Rfb2Zmc2V0Ow0KPj4gLSAgICBsLnBwYSB8PSAoKHU2NClyLmcucGwpIDw8IGdl by0+cHBhZi5wbG5fb2Zmc2V0Ow0KPj4gLSAgICBsLnBwYSB8PSAoKHU2NClyLmcubHVuKSA8PCBn ZW8tPnBwYWYubHVuX29mZnNldDsNCj4+IC0gICAgbC5wcGEgfD0gKCh1NjQpci5nLmNoKSA8PCBn ZW8tPnBwYWYuY2hfb2Zmc2V0Ow0KPj4gKyAgICBsLnBwYSA9ICgodTY0KXIuZy5jaCkgPDwgcHBh Zi0+Y2hfb2Zmc2V0Ow0KPj4gKyAgICBsLnBwYSB8PSAoKHU2NClyLmcubHVuKSA8PCBwcGFmLT5s dW5fb2Zmc2V0Ow0KPj4gKyAgICBsLnBwYSB8PSAoKHU2NClyLmcuYmxrKSA8PCBwcGFmLT5ibGtf b2Zmc2V0Ow0KPj4gKyAgICBsLnBwYSB8PSAoKHU2NClyLmcucGcpIDw8IHBwYWYtPnBnX29mZnNl dDsNCj4+ICsgICAgbC5wcGEgfD0gKCh1NjQpci5nLnBsKSA8PCBwcGFmLT5wbG5fb2Zmc2V0Ow0K Pj4gKyAgICBsLnBwYSB8PSAoKHU2NClyLmcuc2VjKSA8PCBwcGFmLT5zZWNfb2Zmc2V0Ow0KPj4g ICAgICAgIHJldHVybiBsOw0KPj4gIH0NCj4+IEBAIC0zNzUsMjQgKzQxMSwxOCBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBwcGFfYWRkciBkZXZfdG9fZ2VuZXJpY19hZGRyKHN0cnVjdCBudm1fdGd0 X2RldiAqdGd0X2RldiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwcGFf YWRkciByKQ0KPj4gIHsNCj4+ICAgICAgc3RydWN0IG52bV9nZW8gKmdlbyA9ICZ0Z3RfZGV2LT5n ZW87DQo+PiArICAgIHN0cnVjdCBudm1fYWRkcl9mb3JtYXRfMTIgKnBwYWYgPQ0KPj4gKyAgICAg ICAgICAgICAgICAoc3RydWN0IG52bV9hZGRyX2Zvcm1hdF8xMiAqKSZnZW8tPmMuYWRkcmY7DQo+ PiAgICAgIHN0cnVjdCBwcGFfYWRkciBsOw0KPj4gICAgICAgIGwucHBhID0gMDsNCj4+IC0gICAg LyoNCj4+IC0gICAgICogKHIucHBhIDw8IFggb2Zmc2V0KSAmIFggbGVuIGJpdG1hc2suIFggZXEu IGJsaywgcGcsIGV0Yy4NCj4+IC0gICAgICovDQo+PiAtICAgIGwuZy5ibGsgPSAoci5wcGEgPj4g Z2VvLT5wcGFmLmJsa19vZmZzZXQpICYNCj4+IC0gICAgICAgICAgICAgICAgICAgICgoKDEgPDwg Z2VvLT5wcGFmLmJsa19sZW4pIC0gMSkpOw0KPj4gLSAgICBsLmcucGcgfD0gKHIucHBhID4+IGdl by0+cHBhZi5wZ19vZmZzZXQpICYNCj4+IC0gICAgICAgICAgICAgICAgICAgICgoKDEgPDwgZ2Vv LT5wcGFmLnBnX2xlbikgLSAxKSk7DQo+PiAtICAgIGwuZy5zZWMgfD0gKHIucHBhID4+IGdlby0+ cHBhZi5zZWN0X29mZnNldCkgJg0KPj4gLSAgICAgICAgICAgICAgICAgICAgKCgoMSA8PCBnZW8t PnBwYWYuc2VjdF9sZW4pIC0gMSkpOw0KPj4gLSAgICBsLmcucGwgfD0gKHIucHBhID4+IGdlby0+ cHBhZi5wbG5fb2Zmc2V0KSAmDQo+PiAtICAgICAgICAgICAgICAgICAgICAoKCgxIDw8IGdlby0+ cHBhZi5wbG5fbGVuKSAtIDEpKTsNCj4+IC0gICAgbC5nLmx1biB8PSAoci5wcGEgPj4gZ2VvLT5w cGFmLmx1bl9vZmZzZXQpICYNCj4+IC0gICAgICAgICAgICAgICAgICAgICgoKDEgPDwgZ2VvLT5w cGFmLmx1bl9sZW4pIC0gMSkpOw0KPj4gLSAgICBsLmcuY2ggfD0gKHIucHBhID4+IGdlby0+cHBh Zi5jaF9vZmZzZXQpICYNCj4+IC0gICAgICAgICAgICAgICAgICAgICgoKDEgPDwgZ2VvLT5wcGFm LmNoX2xlbikgLSAxKSk7DQo+PiArDQo+PiArICAgIGwuZy5jaCA9IChyLnBwYSAmIHBwYWYtPmNo X21hc2spID4+IHBwYWYtPmNoX29mZnNldDsNCj4+ICsgICAgbC5nLmx1biA9IChyLnBwYSAmIHBw YWYtPmx1bl9tYXNrKSA+PiBwcGFmLT5sdW5fb2Zmc2V0Ow0KPj4gKyAgICBsLmcuYmxrID0gKHIu cHBhICYgcHBhZi0+YmxrX21hc2spID4+IHBwYWYtPmJsa19vZmZzZXQ7DQo+PiArICAgIGwuZy5w ZyA9IChyLnBwYSAmIHBwYWYtPnBnX21hc2spID4+IHBwYWYtPnBnX29mZnNldDsNCj4+ICsgICAg bC5nLnBsID0gKHIucHBhICYgcHBhZi0+cGxuX21hc2spID4+IHBwYWYtPnBsbl9vZmZzZXQ7DQo+ PiArICAgIGwuZy5zZWMgPSAoci5wcGEgJiBwcGFmLT5zZWNfbWFzaykgPj4gcHBhZi0+c2VjX29m ZnNldDsNCj4+ICAgICAgICByZXR1cm4gbDsNCj4+ICB9DQo+IA0KPiBUaGlzIGNvZGUgbG9va3Mg bGlrZSBhIGxvdCBvZiBzaHVmZmxpbmcgYXJvdW5kIGZvciBsaXR0bGUgZ2Fpbi4NCg0KVGhlIGdh aW4gaXMgdGhhdCB3ZSBtb3ZlIGZyb20gYSBzcGVjLiBjZW50cmljIGdlb21ldHJ5IHRvIGFuIGFi c3RyYWN0IGdlb21ldHJ5IHRoYXQgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRp b24gZm9yIHRhcmdldHMgdG8gdXNlIGRyaXZlLiBUaGlzIGdvZXMgYmV5b25kIDEuMiBhbmQgMi4w LCBzbyBhcyBJIHNlZSBpdCBpdCBpcyBhIGJpZyBnYWluLiBUaGluayB0aGF0IHVwcGVyIGxheWVy cyAoYmV5b25kIHBibGspIGNhbiBldmVudHVhbGx5IHVzZSB0aGlzIGdlb21ldHJ5IHRvIGFjY2Vz cyB0aGUgZGV2aWNlLiANCj4gDQo+IEluc3RlYWQgb2YgZ29pbmcgZnJvbSB0aGUgYmFzZSBhc3N1 bXB0aW9uIHRoYXQgaXMNCj4gDQo+IGJhc2UNCj4gICAgLT4gMS4yDQo+ICAgIC0+IDIuMA0KPiAN Cj4gZ28gd2l0aA0KPiANCj4gYmFzZSAyLjANCj4gICAgIC0+IDEuMg0KPiANCj4gVGhhdCBzaW1w bGlmaWVzIHdoZXJlIHRoZSBjb2RlIGlzIGdvaW5nLCBhbmQgd2hlcmUgaXQgd2lsbCBiZSBpbiB0 aGUgZnV0dXJlLiBJdCBpcyBtb3JlIGNvbXBsZXggdG8gbWFpbnRhaW4gdGhlIGFib3ZlLCB3aGVu IG5ldyB0YXJnZXRzIGluIHRoZSBmdXR1cmUgbW9zdCBwcm9wZXJseSB3aWxsIG9ubHkgY29uc2lk ZXIgb25seSAyLjAgaW1wbGVtZW50YXRpb25zLg0KDQpXZSBoYXZlIDEuMiBhbmQgMi4wIGF0IHRo ZSBzdWJzeXN0ZW0gbGV2ZWwsIG5vdCBhdCB0aGUgdGFyZ2V0IGxldmVsLCBzbyB0aGVyZSBpcyBu byBiYXNlLCB0aGV5IGFyZSBqdXN0IHNlcGFyYXRlLiANCg0KSeKAmWQgcmF0aGVyIGtlZXAgdGhl bSBzZXBhcmF0ZWQgaW5zdGVhZCBvZiBkZXJpdmluZyAxLjIgZnJvbSAyLjAgc28gdGhhdCB3ZSBr YW4ga2VlcCBwYXRocyBjbGVhbi4gT3RoZXJ3aXNlIHdlIGVuZCB1cCBkb2luZyBjYXN0aW5ncyB0 aGF0IHdpbGwgbWFrZSB0aGUgY29kIHZlcnkgZGlmZmljdWx0IHRvIG1haW50YWluIGFzIHdlIGFk ZCByZXZpc2lvbnMgdG8gdGhlIDIuMCBzcGVjLiANCg0KPiANCj4gVGhlIHBhdGNoIGRvZXMgYSBs b3Qgb2YgdGhpbmdzIGF0IHRoZSBzYW1lIHRpbWUuIEUuZywuDQo+IA0KPiAxKSBBZGRpbmcgMS4y IHZlcnNpb24gY2hlY2sgaW4gcGJsa19pbml0LmMuIFRoaXMgc2hvdWxkIGJlIGEgc2VwYXJhdGUg cGF0Y2guDQo+IDIpIEludHJvZHVjZXMgY29uc3RhbnRzIGZvciBzcGVjIHZlcnNpb25zLiAgVGhp cyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaC4NCj4gMykgUmVmYWN0b3JzIG52bV9nZW8gaW50 byBudm1fZGV2X2dlby4gS2VlcCBpdCBhcyBudm1fZ2VvIGFuZCBtYWtlIHBibGsgdXNlIHRoYXQg c3RydWN0dXJlIGJ5IGRlZmF1bHQuIEl0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGZvciBwYmxr IHRvIGtub3cgYWJvdXQgdGhlIDEuMiBkYXRhIHN0cnVjdHVyZXMuIEZvciB0aGUgc3BlY2lhbCBj YXNlIGdldC9zZXQgYW5kIGFkZHJlc3NpbmcsIGl0IGNhbiB1c2UgdGhlIDEuMiB2YXJpYWJsZXMg aW4gdGhlIG52bV9nZW8gaWYgbmVjZXNzYXJ5LiBXZSBjYW4gYWxzbyBwdXQgaXQgaW4gbGlnaHRu dm0gY29yZSwgYnV0IGl0IGlzIHByb3Blcmx5IG5vdCB3b3J0aCB0byBkby4NCg0KVGhlIHJlYXNv biB0byBkbyB0aGlzIGlzIHRvIGhhdmUgaGUgZ2VvX2NvbW1vbiBzdHJ1Y3R1cmUgaW4gb25lIHBs YWNlIHNvIHRoYXQgdGFyZ2V0cyByZXVzZSB0aGUgc2FtZSBnZW9tZXRyeSBpbiBjYXNlIHRoZSBk ZXZpY2UgaXMgcGFydGl0aW9uZWQuIEkgdGhpbmsgaXQgc2ltcGxpZmllcyB0aGUgZ2VvbWV0cnkg YXMgd2UgZG8gbm90IGRvIHRoZSDigJxoYWNr4oCdIG9mIGNoYW5naW5nIHRoZSBudW1iZXIgb2Yg Y2hhbm5lbHMgYW5kIExVTnMgYXQgYSBwZXIgaW5zdGFuY2UgbGV2ZWwgZm9yIGVhY2ggZGlmZmVy ZW50IHBhcnRpdGlvbnMuIA0KDQpQYmxrIG5lZWRzIHRoZSAxLjIgdG8gZm9ybSAxLjIgYWRkcmVz c2VzLiBXZSBjYW5ub3QgYXNzdW1lIHRoYXQgMS4yIHBhZ2UvcGxhbmUvc2VjdG9yIGlzIGNvbnRp bnVvdXMgaW4gdGhlIHBwYSBmb3JtYXQgLSBpdCBpcyB0aGlzIHdheSBmb3IgQ05FWCBXZXN0bGFr ZSwgYnV0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0aGlzIHdheSBmb3Igb3RoZXIgMS4yIGNvbnRy b2xsZXJzIG91dCB0aGVyZS4gQmVsaWV2ZSBtZSwgSSB3b3VsZCByZWFsbHkgd2FudCB0byBnZXQg cmlkIG9mIGl0Li4uDQoNCj4gNCkgbWF4b2MgLyBtYXhvY3B1LCBJIGRpZCBub3QgYWRkIHRoZW0g aW4gdGhlIGVhcmx5IHBhdGNoZXMsIGFzIHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIHRoYXQg d2lsbCB1c2UgaXQuIFdoZW4gaXQgaXMgaW1wbGVtZW50ZWQsIGl0IGNhbiBiZSBhZGRlZC4gQXQg bGVhc3QgaXQgc2hvdWxkIGdvIGludG8gYSBzZXBhcmF0ZSBwYXRjaC4NCg0KV2UgdXNlIGl0LiBJ 4oCZbGwgc2VwYXJhdGUgaXQuIEkgYW0gbWlzc2luZyBzdXBwb3J0IGluIHBibGssIGJ1dCB0aGF0 IHdpbGwgY29tZSBpbiBmdXR1cmUgcGF0Y2hlcy4gDQoNCj4gNSkgdGhlIHJlbmFtZSBvZiBwcGFm IC0+IGFkZHJmIC8gcHBhZl9iaXRzaXplIC0+YWRkcmZfbGVuIHNob3VsZCBiZSBpbiBhIHNlcGFy YXRlIHBhdGNoLg0KPiA2KSByZW5hbWUgc2VjX29mZnNldC9zZWNfbGVuIC0+IGdvIGludG8gYSBz ZXBhcmF0ZSBwYXRjaCBvciBrZWVwIGFzIGlzLg0KPiA3KSBhZGRpdGlvbiBvZiBudm1lX252bV9p ZCBkYXRhIHN0cnVjdHVyZSwgSSBjYW4gc2VlIHdoZXJlIHlvdSBhcmUgZ29pbmcgd2l0aCB0aGlz LCBidXQgaXQgZG9lcyBub3QgaGF2ZSBhbnl0aGluZyB0byB3aXRoIHdoYXQgdGhlIHBhdGNoIGRl c2NyaWJlcy4gSXQgc2hvdWxkIGdvIGludG8gYSBzZXBhcmF0ZSBwYXRjaC4gSG93ZXZlciwgSSBy YXRoZXIganVzdCBoYXZlIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBmb3IgaWRlbnRpZnlp bmcgMS4yLzIuMC4NCg0KVGhlIG9ubHkgcG9pbnQgaGVyZSBpcyB0byBoYXZlIGl0IHNwZWMtYWdu b3N0aWMuIExldCBtZSBzZXBhcmF0ZSB0aGUgcGF0Y2ggYW5kIHRoZW4gd2Ugc2VlIHdoYXTigJlz IGJlc3QuIFRoaXMgaXMgbW9yZSBhIGNsZWFuaW5nIHVwIHRoYW4gZnVuY3Rpb25hbCBwYXRjaC4g DQoNCj4gOCkgSWYgeW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBpZGVudGlmeSBkYXRhIHN0cnVjdHVy ZSBpbiBudm1fZ2VvLCBtYWtlIGl0IGluIGFub3RoZXIgcGF0Y2guDQoNCkZhaXIgZW5vdWdoLiBJ IHdhbnRlZCB0byBrZWVwIHRoaW5ncyB0b2dldGhlciBhcyB0aGV5IGFyZSBhbGwgcmVsYXRlZC4g QnV0IEkgc2VlIHRoZSBwb2ludC4gDQoNCknigJlsbCBzZXBhcmF0ZSB0aGUgcGF0Y2hlcyBhbmQg dGhlbiB3ZSBjYW4gdGFrZSBvbmUgYXQgYSB0aW1lLiANCg0KSmF2aWVy