Received: by 2002:a05:7412:3210:b0:e2:908c:2ebd with SMTP id eu16csp424069rdb; Thu, 31 Aug 2023 13:32:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGqKwSaLRBVOTmsK4UN4n8XO/hUgEpyba0citCXIYPJxDfXf6typ+23sCtcaRucdg/8ts1S X-Received: by 2002:a17:90a:cb07:b0:267:eeee:ab17 with SMTP id z7-20020a17090acb0700b00267eeeeab17mr414675pjt.45.1693513936179; Thu, 31 Aug 2023 13:32:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693513936; cv=none; d=google.com; s=arc-20160816; b=HBeSmUbFHixbChyxnf8TX4tGxMyfdwtOSpNsjLJnco/dTo0Jbxm/dCjaClvuHHvS3D wcAop9COdMuMovAXSFuLR23ZIc8CfvrM2oSY/i8XllzMa1NqJLWTTB4BHqBAkcW187AL UtqHJhZyn9cerWy/J/ftbQtwrKexKDfOFDMiZnE95PxFKrrmq4lTp9T1j2TIrioDYVJT Fif/xj4gKi5KKRLcF05QSOmqeQxpuDMdSHkUqUeHo1maytq66JngbMkTbncHJ/ndJNqe iubhvCXBKjaKU6uthnuuHYF5icI/DJqRmqpaNPdEYMin4Do4kq1lf+1JZMgSUV/Q9EpG fyiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-language:accept-language :in-reply-to:references:message-id:date:thread-index:thread-topic :subject:cc:to:from:authenticated-by; bh=0w+ngADPN+0NfISSHszhmnaxLmRGB5XPnyvySzLKXYQ=; fh=34NFzZONG70YhJbfVlMvPxLuPQMIGLWuE0qmohLdg0c=; b=n4rmHfV20rCo9j6UnR66OLdSIipEz/Q69fwzl2rlXeiIEzB/ZYf9KTu9MKUFJ6OotR S73Jqq7wNLFBAH+zpIHyLcg8R5sDSzzx1IiuK5gBGz96/I6TjqgiL1QpmgprX65PKpgQ fxvKRnltYoZpZevkdRw/YeI1evBkFKwiK2WnO+OB+CBU7YG8PTDvFDLAp9zuju9uHbeu /wj7WC/fVE1A0uaWkct1LGYjINdyrNUuc9ighUN1ZG5xBbO9KWefcl1rEiwfoT6MkBVh M9tO5Llj+a8eAMMIDdWhNRCBgZorDDXrokER2EHbdcazX3afTS2rvgXZLV54C4v7IRrl unig== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o5-20020a17090ad20500b002691e659560si4278951pju.163.2023.08.31.13.32.03; Thu, 31 Aug 2023 13:32:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242939AbjHaHru (ORCPT + 80 others); Thu, 31 Aug 2023 03:47:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230314AbjHaHrt (ORCPT ); Thu, 31 Aug 2023 03:47:49 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 74A891A3; Thu, 31 Aug 2023 00:47:40 -0700 (PDT) Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.77 with qID 37V7kvifF001937, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36506.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.81/5.90) with ESMTPS id 37V7kvifF001937 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 31 Aug 2023 15:46:57 +0800 Received: from RTEXDAG02.realtek.com.tw (172.21.6.101) by RTEXH36506.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.17; Thu, 31 Aug 2023 15:47:23 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXDAG02.realtek.com.tw (172.21.6.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Thu, 31 Aug 2023 15:47:22 +0800 Received: from RTEXMBS04.realtek.com.tw ([fe80::7445:d92b:d0b3:f79c]) by RTEXMBS04.realtek.com.tw ([fe80::7445:d92b:d0b3:f79c%5]) with mapi id 15.01.2375.007; Thu, 31 Aug 2023 15:47:23 +0800 From: =?utf-8?B?SnlhbiBDaG91IFvlkajoirflrold?= To: Ben Chuang CC: "adrian.hunter@intel.com" , "ulf.hansson@linaro.org" , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH] mmc: Add Synopsys DesignWare mmc cmdq host driver Thread-Topic: [PATCH] mmc: Add Synopsys DesignWare mmc cmdq host driver Thread-Index: AQHZ2u7HZPZa6nsQ8020UOdAb07ii7ADGZ2AgADnnLA= Date: Thu, 31 Aug 2023 07:47:23 +0000 Message-ID: References: <20230830030503.13349-1-jyanchou@realtek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [172.21.190.236] x-kse-serverinfo: RTEXDAG02.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: multipart/mixed; boundary="_002_d171e2279da847fa81022f6fd23869fbrealtekcom_" MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --_002_d171e2279da847fa81022f6fd23869fbrealtekcom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQmVuLA0KVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24uDQoNCj4gVGhlIHBhdGNoIGluY2x1 ZGVzIHR3byBwYXJ0czogYSBkd19tbWNfY3FlIGRyaXZlciBhbmQgZHdfbW1jX2NxZS1ydGsgZHJp dmVyLg0KPiBBZHJpYW4gYW5kIFVsZidzIGNvbW1lbnRzWzFdWzJdIGRvbid0IHNlZW0gdG8gYmUg YWRkcmVzc2VkLg0KDQpbMV0gVGhlIHJlYXNvbiB3aHkgd2UgYWRkZWQgbWFueSBjaGFuZ2VzIHdh cyBiZWNhdXNlIHdlIGZvdW5kDQpvdXQgdGhhdCBzeW5vcHN5cyBJUCBkYXRhIGJvb2sncyByZWdp c3RlciBhbmQgdXNlciBndWlkZSB3aXRoIGNtZHENCnN1cHBvcnQgd2VyZSBkaWZmZXJlbnQgZnJv bSBub24gY21kcSdzICwgc28gd2UgcmVmZXJyZWQgdG8gZHdfbW1jLmMgDQpjb2Rpbmcgc3R5bGUg YW5kIHB1c2ggZHdfbW1jX2NxZS5jIHRvIHN1cHBvcnQgdmVyc2lvbiBhZnRlciA1LjEgSkVERUMg U3RhbmRhcmQuDQoNClsyXSBIZWxsbyBVbGYsIA0KDQpEdWUgdG8gU3lub3BzeXMgaXAgYm9vaydz IGxpbWl0YXRpb24sIGl0IGhhZCAxMjhNQiBETUEgYm91bmRhcnkgaXNzdWUuIA0KV2UgdGhvdWdo dCB0aGF0IGFkZGluZyBhIGNhbGwgYmFjayBmdW5jdGlvbiBpbiBjcWhjaV9wcmVwX3RyYW5fZGVz YyANCmNvdWxkIG1ha2UgaXQgY29tcGF0aWJsZSB0byBkaWZmZXJlbnQgSVAgZGVzaWduLiANCkRp ZCBpdCBhYnVzZSB0aGUgaW50ZXJmYWNlcy9BUElzIGZyb20gdGhlIGNvcmUgb3IgbWF5YmUgd2Ug bmVlZGVkIHRvIA0KYWRkIGl0IHNvbWV3aGVyZSBlbHNlPw0KDQpPbmUgbW9yZSBxdWVzdGlvbiB3 ZSB3b3VsZCBsaWtlIHRvIGFzayBmb3IgeW91ciBkZXZpY2Ugd2FzIGR1ZSB0byANCnRoZSBkZXNp Z24gYm9vaywgYWJvcnQgY29tbWFuZCBzZXF1ZW5jZSdzIGZsb3cgd291bGQgc2VuZCBjbWQgMTMg DQphZnRlciBjbWQxMiwgdGhpcyBmbG93IHNlZW1zIHNwZWNpZmljIGluIHN5bm9wc3lzIGhvc3Qg ZHJpdmVyLiANCkRpZCB3ZSBhZGQgdGhlIGZsb3cgaW4gdGhlIHdyb25nIHdheT8NCg0KVGhhbmtz IGEgbG90Lg0KDQorc3RhdGljIGludCBkd19tY2lfY3FlX3dhaXRfc3RhdHVzKHN0cnVjdCBkd19t Y2kgKmhvc3QsIHN0cnVjdCBtbWNfY29tbWFuZCAqY21kLCB1MzIgKnN0YXR1cykNCit7DQorCXN0 cnVjdCBtbWNfY29tbWFuZCB3YWl0Ow0KKwl1MzIgY21kcjsNCisJdTMyIGN1cl9zdGF0ZTsNCisJ dW5zaWduZWQgbG9uZyB0aW1lZW5kOw0KKwlpbnQgZXJyID0gMDsNCisNCisJLyogQWNjb3JkaW5n IHRvIFN5bm9wc3lzIHVzZXJndWlkZSwgd2UgbmVlZCB0byBzZW5kIHdhaXQgY29tbWFuZCBhZnRl cg0KKwkgKiBzdG9wIGNtZCB0byBjaGVjayBjdXJyZW50IHN0YXR1cw0KKwkgKi8NCisNCisJd2Fp dCA9IGhvc3QtPnN0YXRfcmVhZHk7DQorCW1lbXNldCgmd2FpdCwgMCwgc2l6ZW9mKHN0cnVjdCBt bWNfY29tbWFuZCkpOw0KKw0KKwl0aW1lZW5kID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMo NTAwKTsNCisJZG8gew0KKwkJd2FpdC5vcGNvZGUgPSBNTUNfU0VORF9TVEFUVVM7DQorCQl3YWl0 LmFyZyA9IDEgPDwgMTY7DQorCQl3YWl0LmZsYWdzID0gTU1DX1JTUF9TUElfUjIgfCBNTUNfUlNQ X1IxIHwgTU1DX0NNRF9BQzsNCisJCXdhaXQuZGF0YSA9IE5VTEw7DQorCQljbWRyID0gKHdhaXQu b3Bjb2RlIDw8IDgpIHwgU0RNTUNfUkVTUF9MRU5fNDggfA0KKwkJCVNETU1DX0NNRF9DSEtfUkVT UF9DUkMgfCBTRE1NQ19DTURfSURYX0NIS19FTkFCTEU7DQoNCg0KQmVzdCByZWdhcmRzLA0KSnlh bg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogQmVuIENodWFuZyA8YmVuY2h1 YW5nZ2xpQGdtYWlsLmNvbT4gDQpTZW50OiBUaHVyc2RheSwgQXVndXN0IDMxLCAyMDIzIDk6MzEg QU0NClRvOiBKeWFuIENob3UgW+WRqOiKt+WuiV0gPGp5YW5jaG91QHJlYWx0ZWsuY29tPg0KQ2M6 IGFkcmlhbi5odW50ZXJAaW50ZWwuY29tOyB1bGYuaGFuc3NvbkBsaW5hcm8ub3JnOyBsaW51eC1t bWNAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQpTdWJqZWN0 OiBSZTogW1BBVENIXSBtbWM6IEFkZCBTeW5vcHN5cyBEZXNpZ25XYXJlIG1tYyBjbWRxIGhvc3Qg ZHJpdmVyDQoNCg0KRXh0ZXJuYWwgbWFpbC4NCg0KDQoNCkhpIEp5YW4sDQoNClRoZSBwYXRjaCBp bmNsdWRlcyB0d28gcGFydHM6IGEgZHdfbW1jX2NxZSBkcml2ZXIgYW5kIGR3X21tY19jcWUtcnRr IGRyaXZlci4NCkFkcmlhbiBhbmQgVWZmaWUncyBjb21tZW50c1sxXVsyXSBkb24ndCBzZWVtIHRv IGJlIGFkZHJlc3NlZC4NCllvdSBzaG91bGQgZGlzY3VzcyB5b3VyIGNvbW1lbnRzIHdpdGggdGhl IHJldmlld2VycyBiZWZvcmUgbWFraW5nIHRoZQ0KbmV4dCB2ZXJzaW9uLg0KDQpbMV0gQWRyaWFu IGNvbW1lbnRlZCBvbiBKdW4gMjAgLQ0KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsL2NhN2Fi MGMyLTJiNGEtMjgwYi03MWU1LTViMzQxMjVkNGEzZUBpbnRlbC5jb20vDQpbMl0gVWZmZSBjb21t ZW50ZWQgb24gSnVuIDMwIC0NCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC9DQVBEeUtGcDk2 Tj1uVVNfOGFMUWNKeWQwRForeWNlNDJ4cEh0enlQTW4weTdoU3RqYmdAbWFpbC5nbWFpbC5jb20v DQoNCkJlc3QgcmVnYXJkcywNCkJlbiBDaHVhbmcNCg0KT24gV2VkLCBBdWcgMzAsIDIwMjMgYXQg MTI6MDHigK9QTSBKeWFuIENob3UgPGp5YW5jaG91QHJlYWx0ZWsuY29tPiB3cm90ZToNCj4NCj4g V2UgaW1wbGVtZW50ZWQgY21kcSBmZWF0dXJlIG9uIFN5bm9wc3lzIERlc2lnbldhcmUgbW1jIGRy aXZlciwNCj4gYW5kIGZvdW5kIG91dCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRpc3RpbnQgdmVy c2lvbiBvZiBzeW5vcHN5cycNCj4gZGF0YSBib29rIGFuZCB1c2VyIGd1aWRlLiBBbHNvLCB3ZSBh ZGQgb3VyIFJlYWx0ZWsgbW1jIGRyaXZlcg0KPiB0aGF0IG1ha2UgZ29vZCB1c2Ugb2YgaXQuDQo+ DQo+IER1ZSB0byBzeW5vcHN5cyBkYXRhIGJvb2sncyBkZXNjcmlwdGlvbiwgaXQgaGFkIGEgbGlt aXRhdGlvbg0KPiB3aGlsZSB1c2luZyBETUEgdGhhdCBidWZmZXIgc2l6ZSBhbmQgc3RhcnQgYWRk cmVzcyBtdXN0IG5vdA0KPiBleGNlZWQgMTI4IE1CLiBXZSBtb2RpZmllZCBjcWhjaS1jb3JlLmMg dG8gYWRkIGFuIG9wdGlvbg0KPiBmbGV4aWJsZXkgdXNlIHRvIHNldCB1cCB0cmFuX2Rlc2MuDQo+ DQo+IFNpZ25lZC1vZmYtYnk6IEp5YW4gQ2hvdSA8anlhbmNob3VAcmVhbHRlay5jb20+DQo+IC0t LQ0KPiAgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnICAgICAgICAgIHwgICAyMiArDQo+ICBkcml2 ZXJzL21tYy9ob3N0L2NxaGNpLWNvcmUuYyAgICAgfCAgICA1ICsNCj4gIGRyaXZlcnMvbW1jL2hv c3QvY3FoY2kuaCAgICAgICAgICB8ICAgIDIgKw0KPiAgZHJpdmVycy9tbWMvaG9zdC9kd19tbWNf Y3FlLXJ0ay5jIHwgIDk5OSArKysrKysrKysrKysrKysrKysNCj4gIGRyaXZlcnMvbW1jL2hvc3Qv ZHdfbW1jX2NxZS1ydGsuaCB8ICAxNjAgKysrDQo+ICBkcml2ZXJzL21tYy9ob3N0L2R3X21tY19j cWUuYyAgICAgfCAxNjMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBkcml2ZXJz L21tYy9ob3N0L2R3X21tY19jcWUuaCAgICAgfCAgNDQyICsrKysrKysrDQo+ICA3IGZpbGVzIGNo YW5nZWQsIDMyNjMgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bW1jL2hvc3QvZHdfbW1jX2NxZS1ydGsuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bW1jL2hvc3QvZHdfbW1jX2NxZS1ydGsuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bW1jL2hvc3QvZHdfbW1jX2NxZS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tbWMv aG9zdC9kd19tbWNfY3FlLmgNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvS2Nv bmZpZyBiL2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZw0KPiBpbmRleCAxNTlhM2U5NDkwYWUuLjUw NWYxNTM2YTM0NyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnDQo+ICsr KyBiL2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZw0KPiBAQCAtNzYyLDYgKzc2MiwxOSBAQCBjb25m aWcgTU1DX0RXX1BMVEZNDQo+DQo+ICAgICAgICAgICBJZiB1bnN1cmUsIHNheSBZLg0KPg0KPiAr Y29uZmlnIE1NQ19EV19DUUUNCj4gKyAgICAgICB0cmlzdGF0ZSAiU3lub3BzeXMgRGVzaWduV2Fy ZSBNZW1vcnkgQ2FyZCB3aXRoIENRRSBJbnRlcmZhY2UiDQo+ICsgICAgICAgZGVwZW5kcyBvbiBB UkMgfHwgQVJNIHx8IEFSTTY0IHx8IE1JUFMgfHwgQ09NUElMRV9URVNUDQo+ICsgICAgICAgc2Vs ZWN0IE1NQ19DUUhDSQ0KPiArICAgICAgIGhlbHANCj4gKyAgICAgICAgIFRoaXMgc2VsZWN0cyBz dXBwb3J0IGZvciB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNb2JpbGUgU3RvcmFnZSBJUA0KPiAr ICAgICAgICAgYmxvY2sgYWZ0ZXIgSkVERUMgU3RhbmRhcmQgdmVyc2lvbiA1LjEuIFNlbGVjdCB0 aGlzIG9wdGlvbiBmb3IgU0QgYW5kDQo+ICsgICAgICAgICBNTUMgaW50ZXJmYWNlcyB0aGF0IHVz ZSBjb21tYW5kIHF1ZXVlLg0KPiArDQo+ICsgICAgICAgICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xs ZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLg0KPiArDQo+ICsgICAgICAg ICBJZiB1bnN1cmUsIHNheSBZLg0KPiArDQo+ICBjb25maWcgTU1DX0RXX0JMVUVGSUVMRA0KPiAg ICAgICAgIHRyaXN0YXRlICJCbHVlRmllbGQgc3BlY2lmaWMgZXh0ZW5zaW9ucyBmb3IgU3lub3Bz eXMgRFcgTWVtb3J5IENhcmQgSW50ZXJmYWNlIg0KPiAgICAgICAgIGRlcGVuZHMgb24gTU1DX0RX DQo+IEBAIC04MjgsNiArODQxLDE1IEBAIGNvbmZpZyBNTUNfRFdfU1RBUkZJVkUNCj4gICAgICAg ICAgIFN5bm9wc3lzIERlc2lnbldhcmUgTWVtb3J5IENhcmQgSW50ZXJmYWNlIGRyaXZlci4gU2Vs ZWN0IHRoaXMgb3B0aW9uDQo+ICAgICAgICAgICBmb3IgcGxhdGZvcm1zIGJhc2VkIG9uIFN0YXJG aXZlIEpINzExMCBTb0MuDQo+DQo+ICtjb25maWcgTU1DX0RXX0NRRV9SVEsNCj4gKyAgICAgICB0 cmlzdGF0ZSAiUmVhbHRlayBTb2MncyBzcGVjaWZpYyBleHRlbnNpb25zIGZvciBTeW5vcHN5cyBE VyBNZW1vcnkgQ2FyZCBJbnRlcmZhY2UiDQo+ICsgICAgICAgZGVwZW5kcyBvbiBNTUNfRFdfQ1FF DQo+ICsgICAgICAgc2VsZWN0IFJFR1VMQVRPUl9GSVhFRF9WT0xUQUdFDQo+ICsgICAgICAgaGVs cA0KPiArICAgICAgICAgIFRoaXMgc2VsZWN0cyBzdXBwb3J0IGZvciBSZWFsdGVrIFNvQyBzcGVj aWZpYyBleHRlbnNpb25zIHRvIHRoZQ0KPiArICAgICAgICAgIFN5bm9wc3lzIERlc2lnbldhcmUg TWVtb3J5IENhcmQgSW50ZXJmYWNlIGRyaXZlci4gU2VsZWN0IHRoaXMgb3B0aW9uDQo+ICsgICAg ICAgICAgZm9yIHBsYXRmb3JtcyBhZnRlciBSVEQxNnh4YiBTb0Mncy4NCj4gKw0KPiAgY29uZmln IE1NQ19TSF9NTUNJRg0KPiAgICAgICAgIHRyaXN0YXRlICJTdXBlckggSW50ZXJuYWwgTU1DSUYg c3VwcG9ydCINCj4gICAgICAgICBkZXBlbmRzIG9uIFNVUEVSSCB8fCBBUkNIX1JFTkVTQVMgfHwg Q09NUElMRV9URVNUDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L2NxaGNpLWNvcmUu YyBiL2RyaXZlcnMvbW1jL2hvc3QvY3FoY2ktY29yZS5jDQo+IGluZGV4IGIzZDdkNmQ4ZDY1NC4u NGQ2ZmIyMjhhMjFlIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21tYy9ob3N0L2NxaGNpLWNvcmUu Yw0KPiArKysgYi9kcml2ZXJzL21tYy9ob3N0L2NxaGNpLWNvcmUuYw0KPiBAQCAtNTE2LDYgKzUx NiwxMSBAQCBzdGF0aWMgaW50IGNxaGNpX3ByZXBfdHJhbl9kZXNjKHN0cnVjdCBtbWNfcmVxdWVz dCAqbXJxLA0KPg0KPiAgICAgICAgIGRlc2MgPSBnZXRfdHJhbnNfZGVzYyhjcV9ob3N0LCB0YWcp Ow0KPg0KPiArICAgICAgIGlmIChjcV9ob3N0LT5vcHMtPnNldHVwX3RyYW5fZGVzYykgew0KPiAr ICAgICAgICAgICAgICAgY3FfaG9zdC0+b3BzLT5zZXR1cF90cmFuX2Rlc2MoZGF0YSwgY3FfaG9z dCwgZGVzYywgc2dfY291bnQpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAg ICAgfQ0KPiArDQo+ICAgICAgICAgZm9yX2VhY2hfc2coZGF0YS0+c2csIHNnLCBzZ19jb3VudCwg aSkgew0KPiAgICAgICAgICAgICAgICAgYWRkciA9IHNnX2RtYV9hZGRyZXNzKHNnKTsNCj4gICAg ICAgICAgICAgICAgIGxlbiA9IHNnX2RtYV9sZW4oc2cpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tbWMvaG9zdC9jcWhjaS5oIGIvZHJpdmVycy9tbWMvaG9zdC9jcWhjaS5oDQo+IGluZGV4IDFh MTJlNDBhMDJlNi4uY2IzZGZiMTYxYzU0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21tYy9ob3N0 L2NxaGNpLmgNCj4gKysrIGIvZHJpdmVycy9tbWMvaG9zdC9jcWhjaS5oDQo+IEBAIC0yODksNiAr Mjg5LDggQEAgc3RydWN0IGNxaGNpX2hvc3Rfb3BzIHsNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdTY0ICpkYXRhKTsNCj4gICAgICAgICB2b2lkICgqcHJlX2VuYWJsZSkoc3Ry dWN0IG1tY19ob3N0ICptbWMpOw0KPiAgICAgICAgIHZvaWQgKCpwb3N0X2Rpc2FibGUpKHN0cnVj dCBtbWNfaG9zdCAqbW1jKTsNCj4gKyAgICAgICB2b2lkICgqc2V0dXBfdHJhbl9kZXNjKShzdHJ1 Y3QgbW1jX2RhdGEgKmRhdGEsDQo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgY3FoY2lfaG9zdCAq Y3FfaG9zdCwgdTggKmRlc2MsIGludCBzZ19jb3VudCk7DQo+ICAjaWZkZWYgQ09ORklHX01NQ19D UllQVE8NCj4gICAgICAgICBpbnQgKCpwcm9ncmFtX2tleSkoc3RydWN0IGNxaGNpX2hvc3QgKmNx X2hvc3QsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaW9uIGNxaGNpX2Ny eXB0b19jZmdfZW50cnkgKmNmZywgaW50IHNsb3QpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t bWMvaG9zdC9kd19tbWNfY3FlLXJ0ay5jIGIvZHJpdmVycy9tbWMvaG9zdC9kd19tbWNfY3FlLXJ0 ay5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjJhNDBk YWVmMWEyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9tbWMvaG9zdC9kd19tbWNf Y3FlLXJ0ay5jDQo+IEBAIC0wLDAgKzEsOTk5IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vci1sYXRlcg0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBS ZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4NCj4gKyAqDQo+ICsgKi8NCj4gKw0KPiArDQo+ICsj aW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW1jL2NvcmUu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tbWMvaG9zdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21t Yy9tbWMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9udm1lbS1jb25zdW1lci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4g KyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvc2xhYi5oPg0KPiArDQo+ICsjaW5jbHVkZSAiZHdfbW1jX2NxZS5oIg0KPiAr I2luY2x1ZGUgImR3X21tY19jcWUtcnRrLmgiDQo+ICsNCj4gKyNkZWZpbmUgRFdfTUNJX1RJTUVP VVQgICAgICAgICAgMjAwMDAwDQo+ICsjZGVmaW5lIEhTNDAwX1dJTkRPV19BTExfUEFTUyAgMHhm ZmZmDQo+ICsjZGVmaW5lIEhTMjAwX1dJTkRPV19BTExfUEFTUyAgMHhmZmZmZmZmZg0KPiArI2Rl ZmluZSBoczQwMF9kcXNfZGVsYXlfdmFsICAgIDB4ODgNCj4gKw0KPiArc3RhdGljIHZvaWQgZHdf bWNpX3J0a19oczQwMF9jb21wbGV0ZShzdHJ1Y3QgbW1jX2hvc3QgKm1tYyk7DQo+ICtzdGF0aWMg aW50IGR3X21jaV9ydGtfZXhlY3V0ZV90dW5pbmcoc3RydWN0IGR3X21jaV9zbG90ICpzbG90LCB1 MzIgb3Bjb2RlKTsNCj4gKw0KPiArc3RhdGljIHZvaWQgcmVzZXRfZmlmbyhzdHJ1Y3QgZHdfbWNp ICpob3N0KQ0KPiArew0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgT1RIRVIxLCBtY3FfcmVh ZGwoaG9zdCwgT1RIRVIxKSAmICh+U0RNTUNfVE9QX1JTVF9OX0ZJRk8pKTsNCj4gKyAgICAgICB1 ZGVsYXkoMSk7DQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBPVEhFUjEsIG1jcV9yZWFkbCho b3N0LCBPVEhFUjEpIHwgU0RNTUNfVE9QX1JTVF9OX0ZJRk8pOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IGR3X21jaV9ydGtfc2V0X3BpbnN0YXRlcyhzdHJ1Y3QgZHdfbWNpX3J0a2VtbWNfaG9z dCAqcHJpdiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgdGltaW5nKQ0KPiArew0KPiArICAgICAgIHN3aXRjaCAodGltaW5nKSB7DQo+ICsg ICAgICAgY2FzZSBNTUNfVElNSU5HX1VIU19TRFI1MDoNCj4gKyAgICAgICAgICAgICAgIHJldHVy biBwaW5jdHJsX3NlbGVjdF9zdGF0ZShwcml2LT5waW5jdHJsLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnBpbnNfc2RyNTApOw0KPiArDQo+ICsg ICAgICAgY2FzZSBNTUNfVElNSU5HX1VIU19ERFI1MDoNCj4gKyAgICAgICAgICAgICAgIHJldHVy biBwaW5jdHJsX3NlbGVjdF9zdGF0ZShwcml2LT5waW5jdHJsLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnBpbnNfZGRyNTApOw0KPiArICAgICAg IGNhc2UgTU1DX1RJTUlOR19NTUNfSFMyMDA6DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcGlu Y3RybF9zZWxlY3Rfc3RhdGUocHJpdi0+cGluY3RybCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5waW5zX2hzMjAwKTsNCj4gKw0KPiArICAgICAg IGNhc2UgTU1DX1RJTUlOR19NTUNfSFM0MDA6DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcGlu Y3RybF9zZWxlY3Rfc3RhdGUocHJpdi0+cGluY3RybCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5waW5zX2hzNDAwKTsNCj4gKyAgICAgICBkZWZh dWx0Og0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHBpbmN0cmxfc2VsZWN0X3N0YXRlKHByaXYt PnBpbmN0cmwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpdi0+cGluc19kZWZhdWx0KTsNCj4gKyAgICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGRxc19kZWxheV90YXBfc2V0dGluZyhzdHJ1Y3QgZHdfbWNpICpob3N0LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGRxc19kbHkpDQo+ICt7DQo+ICsgICAgICAg dTMyIHJlZ3M7DQo+ICsNCj4gKyAgICAgICByZWdzID0gbWNxX3JlYWRsKGhvc3QsIERRU19DVFJM MSkgJiB+U0RNTUNfRldfRU47DQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBEUVNfQ1RSTDEs IHJlZ3MpOw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgRFFTX0NUUkwxLCBkcXNfZGx5KTsN Cj4gKw0KPiArICAgICAgIHJlZ3MgPSBkcXNfZGx5IHwgU0RNTUNfRldfRU47DQo+ICsgICAgICAg bWNxX3dyaXRlbChob3N0LCBEUVNfQ1RSTDEsIHJlZ3MpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg dm9pZCBjbWRfZGVsYXlfdGFwX3NldHRpbmcoc3RydWN0IGR3X21jaSAqaG9zdCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBjbWRfZGx5X3RhcGUpDQo+ICt7DQo+ICsg ICAgICAgdTMyIHJlZ3M7DQo+ICsNCj4gKyAgICAgICByZWdzID0gbWNxX3JlYWRsKGhvc3QsIFdD TURfQ1RSTCkgJiB+U0RNTUNfRldfU0VUX0VOOw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwg V0NNRF9DVFJMLCByZWdzKTsNCj4gKw0KPiArICAgICAgIGlmIChjbWRfZGx5X3RhcGUgPT0gMCkN Cj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9z dCwgV0NNRF9DVFJMLCBjbWRfZGx5X3RhcGUpOw0KPiArDQo+ICsgICAgICAgcmVncyA9IGNtZF9k bHlfdGFwZSB8IFNETU1DX0ZXX1NFVF9FTjsNCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIFdD TURfQ1RSTCwgcmVncyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGRhdGFfZGVsYXlfdGFw X3NldHRpbmcoc3RydWN0IGR3X21jaSAqaG9zdCkNCj4gK3sNCj4gKyAgICAgICB1MzIgcmVnczsN Cj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX3J0a2VtbWNfaG9zdCAqcHJpdiA9IGhvc3QtPnByaXY7 DQo+ICsNCj4gKyAgICAgICByZWdzID0gbWNxX3JlYWRsKGhvc3QsIFJEUV9DVFJMMCkgJiAoflNE TU1DX0ZXX1NFVCk7DQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBSRFFfQ1RSTDAsIHJlZ3Mp Ow0KPiArDQo+ICsgICAgICAgaWYgKHByaXYtPnJkcV9jdHJsID09IDApDQo+ICsgICAgICAgICAg ICAgICByZXR1cm47DQo+ICsNCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIFJEUV9DVFJMMCwg cHJpdi0+cmRxX2N0cmwpOw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgUkRRX0NUUkwxLCBw cml2LT5yZHFfY3RybCk7DQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBSRFFfQ1RSTDIsIHBy aXYtPnJkcV9jdHJsKTsNCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIFJEUV9DVFJMMywgcHJp di0+cmRxX2N0cmwpOw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgUkRRX0NUUkw0LCBwcml2 LT5yZHFfY3RybCk7DQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBSRFFfQ1RSTDUsIHByaXYt PnJkcV9jdHJsKTsNCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIFJEUV9DVFJMNiwgcHJpdi0+ cmRxX2N0cmwpOw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgUkRRX0NUUkw3LCBwcml2LT5y ZHFfY3RybCk7DQo+ICsNCj4gKyAgICAgICByZWdzID0gbWNxX3JlYWRsKGhvc3QsIFJEUV9DVFJM MCkgfCBTRE1NQ19GV19TRVQ7DQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBSRFFfQ1RSTDAs IHJlZ3MpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBzZXR1cF9jbGtfZGl2KHN0cnVjdCBk d19tY2lfc2xvdCAqc2xvdCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpICpob3N0ID0g c2xvdC0+aG9zdDsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgY2xvY2sgPSBzbG90LT5jbG9jazsN Cj4gKyAgICAgICB1MzIgZGl2ID0gMDsNCj4gKw0KPiArICAgICAgIHNsb3QtPm1tYy0+YWN0dWFs X2Nsb2NrID0gMDsNCj4gKw0KPiArICAgICAgIGlmIChjbG9jayAhPSBob3N0LT5jdXJyZW50X3Nw ZWVkKSB7DQo+ICsgICAgICAgICAgICAgICBkaXYgPSBob3N0LT5idXNfaHogLyBjbG9jazsNCj4g KyAgICAgICAgICAgICAgIGlmIChob3N0LT5idXNfaHogJSBjbG9jaykNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZGl2ICs9IDE7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChjbG9jayAh PSBzbG90LT5fX2Nsa19vbGQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogU2lsZW50 IHRoZSB2ZXJib3NlIGxvZyBpZiBjYWxsaW5nIGZyb20gUE0gY29udGV4dCAqLw0KPiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfaW5mbygmc2xvdC0+bW1jLT5jbGFzc19kZXYsICJCdXMgc3Bl ZWQgKHNsb3QgJWQpID0gJWRIeiAoc2xvdCByZXEgJWRIeiwgYWN0dWFsICVkSFogZGl2ID0gJWQp XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QtPmlkLCBob3N0LT5i dXNfaHosIGNsb2NrLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QtPmJ1 c19oeiAvIGRpdiwgZGl2KTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAg ICAgICAgc2xvdC0+X19jbGtfb2xkID0gY2xvY2s7DQo+ICsgICAgICAgICAgICAgICBzbG90LT5t bWMtPmFjdHVhbF9jbG9jayA9IGhvc3QtPmJ1c19oeiAvIGRpdjsNCj4gKw0KPiArICAgICAgICAg ICAgICAgLypJbiBSZWFsVGVrIFN0YXJrIHBsYXRmb3JtLCB0aGV5IG9ubHkgc3VwcG9ydCBkaXYg MSw0LCBhbmQgNTEyKi8NCj4gKyAgICAgICAgICAgICAgIGlmIChkaXYgPiA0KQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICBkaXYgPSAgNTEyOw0KPiArDQo+ICsgICAgICAgICAgICAgICBzd2l0 Y2ggKGRpdikgew0KPiArICAgICAgICAgICAgICAgY2FzZSBTRE1NQ19DTEtfRElWMToNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgbWNxX3dyaXRlbChob3N0LCBDS0dFTl9DVEwsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWNxX3JlYWRsKGhvc3QsIENLR0VOX0NUTCkgJiAo flNETU1DX0NSQ19DTEtfRElWX0VOKSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Ow0KPiArICAgICAgICAgICAgICAgY2FzZSBTRE1NQ19DTEtfRElWNDoNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgbWNxX3dyaXRlbChob3N0LCBDS0dFTl9DVEwsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWNxX3JlYWRsKGhvc3QsIENLR0VOX0NUTCkgfCBTRE1NQ19DTEtf SU5WX0RJVl9TRUwpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBtY3Ffd3JpdGVsKGhvc3Qs IENLR0VOX0NUTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtY3FfcmVhZGwo aG9zdCwgQ0tHRU5fQ1RMKSB8IFNETU1DX0NSQ19DTEtfRElWX0VOKTsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBjYXNlIFNETU1DX0NMS19ESVY1 MTI6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1jcV93cml0ZWwoaG9zdCwgQ0tHRU5fQ1RM LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jcV9yZWFkbChob3N0LCBDS0dF Tl9DVEwpICYgKH5TRE1NQ19DTEtfSU5WX0RJVl9TRUwpKTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgbWNxX3dyaXRlbChob3N0LCBDS0dFTl9DVEwsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWNxX3JlYWRsKGhvc3QsIENLR0VOX0NUTCkgfCBTRE1NQ19DUkNfQ0xLX0RJ Vl9FTik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAg ICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2luZm8oJnNsb3QtPm1t Yy0+Y2xhc3NfZGV2LCAiZGVmYXVsdCBjYXNlIGRpdiA9ICVkXG4iLCBkaXYpOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICBpZiAoZGl2ICE9IDApDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWNxX3dyaXRlbChob3N0LCBDS0dFTl9DVEwsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtY3FfcmVhZGwoaG9zdCwgQ0tHRU5fQ1RMKSAmICh+U0RN TUNfQ1JDX0NMS19ESVZfRU4pKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaG9zdC0+Y3Vy cmVudF9zcGVlZCA9IGNsb2NrOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19tY2lfcnRr X3BoYXNlX3R1bmluZyhzdHJ1Y3QgZHdfbWNpICpob3N0LA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdTMyIHR4X3BoYXNlLCB1MzIgcnhfcGhhc2UpDQo+ICt7DQo+ ICsgICAgICAgc3RydWN0IGR3X21jaV9ydGtlbW1jX2hvc3QgKnByaXYgPSBob3N0LT5wcml2Ow0K PiArICAgICAgIHUzMiB0MSA9IDEwOw0KPiArICAgICAgIHUzMiB0MiA9IDM7DQo+ICsgICAgICAg aW50IHJldDsNCj4gKyAgICAgICB1MzIgc3RhdHVzOw0KPiArDQo+ICsgICAgICAgY2xrX2Rpc2Fi bGUoaG9zdC0+Y2l1X2Nsayk7DQo+ICsgICAgICAgdWRlbGF5KHQxKTsNCj4gKw0KPiArICAgICAg IG1jcV93cml0ZWwoaG9zdCwgT1RIRVIxLCBtY3FfcmVhZGwoaG9zdCwgT1RIRVIxKSB8IFNETU1D X0NMS19ESVZfUlNUKTsNCj4gKw0KPiArICAgICAgIGlmICghSVNfRVJSKHByaXYtPnZwMCkgJiYg IUlTX0VSUihwcml2LT52cDEpKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAodHhfcGhhc2UgIT0g MHhmZikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xrX3NldF9waGFzZShwcml2LT52cDAs ICAodHhfcGhhc2UqMzYwKS8zMik7DQo+ICsgICAgICAgICAgICAgICBpZiAocnhfcGhhc2UgIT0g MHhmZikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xrX3NldF9waGFzZShwcml2LT52cDEs IChyeF9waGFzZSozNjApLzMyKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICB1ZGVsYXko dDIpOw0KPiArDQo+ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBPVEhFUjEsIG1jcV9yZWFkbCho b3N0LCBPVEhFUjEpICYgflNETU1DX0NMS19ESVZfUlNUKTsNCj4gKw0KPiArICAgICAgIGNsa19l bmFibGUoaG9zdC0+Y2l1X2Nsayk7DQo+ICsNCj4gKyAgICAgICByZXQgPSByZWFkbF9wb2xsX3Rp bWVvdXQoaG9zdC0+cmVncyArIFNETU1DX0NMS19DVFJMX1IsIHN0YXR1cywNCj4gKyAgICAgICAg ICAgICAgIChzdGF0dXMgJiBTRE1NQ19JTlRFUk5BTF9DTEtfTVNLKSA9PSAweDMsIDEwLCBEV19N Q0lfVElNRU9VVCk7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIGRldl9l cnIoaG9zdC0+ZGV2LCAiVGltZW91dCB3YWl0aW5nIGVtbWMgcGhhc2UgdHVuaW5nLlxuIik7DQo+ ICsNCj4gKyAgICAgICBtY3Ffd3JpdGViKGhvc3QsIFNXX1JTVF9SLCBTRE1NQ19SU1RfQ01EIHwg U0RNTUNfUlNUX0RBVCk7DQo+ICsNCj4gKyAgICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQo aG9zdC0+cmVncyArIFNETU1DX0NMS19DVFJMX1IsIHN0YXR1cywNCj4gKyAgICAgICAgICAgICAg IChzdGF0dXMgJiBTV19SU1RfQk9USF9ET05FKSA9PSAweDAsIDEwLCBEV19NQ0lfVElNRU9VVCk7 DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2 LCAiVGltZW91dCB3YWl0aW5nIHBoYXNlIHR1bmluZyBzdyByZXN0XG4iKTsNCj4gKw0KPiArICAg ICAgIHJlc2V0X2ZpZm8oaG9zdCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGFkanVzdF93 aW5kb3coc3RydWN0IGR3X21jaV9ydGtlbW1jX2hvc3QgKnByaXYsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd190eXBlLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsb29wX2NudCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2luZG93KQ0KPiArew0KPiArICAgICAgIHN3 aXRjaCAobG9vcF9jbnQpIHsNCj4gKyAgICAgICBjYXNlIDEwOg0KPiArICAgICAgICAgICAgICAg cHJfZXJyKCJ0cnkgcGFkIGRyaXZpbmcgMzogJXMgPSAweCUwOHhcbiIsIHdfdHlwZSwgd2luZG93 KTsNCj4gKyAgICAgICAgICAgICAgIHBpbmN0cmxfc2VsZWN0X3N0YXRlKHByaXYtPnBpbmN0cmws IHByaXYtPnBpbnNfdHVuZTMpOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAg Y2FzZSAyMDoNCj4gKyAgICAgICAgICAgICAgIHByX2VycigidHJ5IHBhZCBkcml2aW5nIDI6ICVz ID0gMHglMDh4XG4iLCB3X3R5cGUsIHdpbmRvdyk7DQo+ICsgICAgICAgICAgICAgICBwaW5jdHJs X3NlbGVjdF9zdGF0ZShwcml2LT5waW5jdHJsLCBwcml2LT5waW5zX3R1bmUyKTsNCj4gKyAgICAg ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGNhc2UgMzA6DQo+ICsgICAgICAgICAgICAgICBw cl9lcnIoInRyeSBwYWQgZHJpdmluZyAxOiAlcyA9IDB4JTA4eFxuIiwgd190eXBlLCB3aW5kb3cp Ow0KPiArICAgICAgICAgICAgICAgcGluY3RybF9zZWxlY3Rfc3RhdGUocHJpdi0+cGluY3RybCwg cHJpdi0+cGluc190dW5lMSk7DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBj YXNlIDQwOg0KPiArICAgICAgICAgICAgICAgcHJfZXJyKCJ0cnkgcGFkIGRyaXZpbmcgMDogJXMg PSAweCUwOHhcbiIsIHdfdHlwZSwgd2luZG93KTsNCj4gKyAgICAgICAgICAgICAgIHBpbmN0cmxf c2VsZWN0X3N0YXRlKHByaXYtPnBpbmN0cmwsIHByaXYtPnBpbnNfdHVuZTApOw0KPiArICAgICAg ICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgY2FzZSA2MDoNCj4gKyAgICAgICAgICAgICAgIHBy X2VycigibG9vcCBjbnQgJWQ6ICVzID0gMHglMDh4LCBjYW5ub3QgZmluZCBhIHByb3BlciBwaGFz ZVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbG9vcF9jbnQsIHdfdHlwZSwgd2luZG93 KTsNCj4gKyAgICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAg ICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHNlYXJjaF9iZXN0KHUzMiB3aW5kb3csIHUz MiByYW5nZSkNCj4gK3sNCj4gKyAgICAgICBpbnQgaSA9IDAsIGogPSAxLCBrID0gMCwgbWF4ID0g MDsNCj4gKyAgICAgICBpbnQgd2luZG93X3RlbXBbMzJdOw0KPiArICAgICAgIGludCB3aW5kb3df c3RhcnRbMzJdOw0KPiArICAgICAgIGludCB3aW5kb3dfZW5kWzMyXTsNCj4gKyAgICAgICBpbnQg d2luZG93X21heCA9IDA7DQo+ICsgICAgICAgaW50IHdpbmRvd19iZXN0ID0gMDsNCj4gKyAgICAg ICBpbnQgcGFyc2VfZW5kID0gMTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCAweDIw OyBpKyspIHsNCj4gKyAgICAgICAgICAgICAgIHdpbmRvd190ZW1wW2ldID0gMDsNCj4gKyAgICAg ICAgICAgICAgIHdpbmRvd19zdGFydFtpXSA9IDA7DQo+ICsgICAgICAgICAgICAgICB3aW5kb3df ZW5kW2ldID0gLTE7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaSA9IDA7DQo+ICsNCj4g KyAgICAgICB3aGlsZSAoKGkgPCAocmFuZ2UgLSAxKSkgJiYgKGsgPCAocmFuZ2UgLSAxKSkpIHsN Cj4gKyAgICAgICAgICAgICAgIHBhcnNlX2VuZCA9IDA7DQo+ICsgICAgICAgICAgICAgICBmb3Ig KGkgPSB3aW5kb3dfZW5kW2ogLSAxXSArIDE7IGkgPCByYW5nZTsgaSsrKSB7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlmICgoKHdpbmRvdyA+PiBpKSAmIDEpID09IDEpIHsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dfc3RhcnRbal0gPSBpOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICBpZiAoaSA9PSByYW5n ZSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIGZvciAoayA9IHdpbmRvd19zdGFydFtqXSArIDE7IGsgPCByYW5nZTsgaysrKSB7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmICgoKHdpbmRvdyA+PiBrKSAmIDEpID09IDApIHsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dfZW5kW2pdID0gay0xOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2VuZCA9IDE7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IH0NCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgICAgaWYgKHBhcnNl X2VuZCA9PSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dfZW5kW2pdID0gcmFu Z2UgLSAxOw0KPiArICAgICAgICAgICAgICAgaisrOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAg ICAgIGZvciAoaSA9IDE7IGkgPCBqOyBpKyspDQo+ICsgICAgICAgICAgICAgICB3aW5kb3dfdGVt cFtpXSA9IHdpbmRvd19lbmRbaV0gLSB3aW5kb3dfc3RhcnRbaV0gKyAxOw0KPiArDQo+ICsgICAg ICAgaWYgKCgoKHdpbmRvdykgJiAxKSA9PSAxKSAmJiAoKCh3aW5kb3cgPj4gKHJhbmdlIC0gMSkp ICYgMSkgPT0gMSkpIHsNCj4gKyAgICAgICAgICAgICAgIHdpbmRvd190ZW1wWzFdID0gd2luZG93 X3RlbXBbMV0gKyB3aW5kb3dfdGVtcFtqIC0gMV07DQo+ICsgICAgICAgICAgICAgICB3aW5kb3df c3RhcnRbMV0gPSB3aW5kb3dfc3RhcnRbaiAtIDFdOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAg ICAgIGZvciAoaSA9IDE7IGkgPCBqOyBpKyspIHsNCj4gKyAgICAgICAgICAgICAgIGlmICh3aW5k b3dfdGVtcFtpXSA+IHdpbmRvd19tYXgpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgd2lu ZG93X21heCA9IHdpbmRvd190ZW1wW2ldOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBtYXgg PSBpOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGlm ICh3aW5kb3cgPT0gfjBVTCkNCj4gKyAgICAgICAgICAgICAgIHdpbmRvd19iZXN0ID0gMHgxMDsN Cj4gKyAgICAgICBlbHNlIGlmICgod2luZG93ID09IEhTNDAwX1dJTkRPV19BTExfUEFTUykgJiYg KHJhbmdlID09IDB4MTApKQ0KPiArICAgICAgICAgICAgICAgd2luZG93X2Jlc3QgPSAweDg7DQo+ ICsgICAgICAgZWxzZSBpZiAoKCgod2luZG93ICYgMSkgPT0gMSkgJiYgKCgod2luZG93ID4+IChy YW5nZSAtIDEpKSAmIDEpID09IDEpKSAmJiAobWF4ID09IDEpKQ0KPiArICAgICAgICAgICAgICAg d2luZG93X2Jlc3QgPSAoKCh3aW5kb3dfc3RhcnRbbWF4XSArIHdpbmRvd19lbmRbbWF4XSArDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UpIC8gMikgJiAocmFuZ2UgLSAx KSk7DQo+ICsgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgd2luZG93X2Jlc3QgPSAoKHdp bmRvd19zdGFydFttYXhdICsgd2luZG93X2VuZFttYXhdKSAvIDIpICYgMHgxZjsNCj4gKw0KPiAr ICAgICAgIC8qV2Ugc2V0IGEgY3JpdGVyaWEgZm9yIDYgY29udGludW91cyBwb2ludHMqLw0KPiAr ICAgICAgIGlmICh3aW5kb3dfbWF4ID4gNikNCj4gKyAgICAgICAgICAgICAgIHJldHVybiB3aW5k b3dfYmVzdDsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMHhmZjsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfcnRrX3NlbmRfdHVuaW5nKHN0cnVjdCBt bWNfaG9zdCAqbW1jLCB1MzIgb3Bjb2RlLCB1MzIgYXJnLCBpbnQgc2l6ZSkNCj4gK3sNCj4gKyAg ICAgICBzdHJ1Y3QgbW1jX3JlcXVlc3QgbXJxID0ge307DQo+ICsgICAgICAgc3RydWN0IG1tY19j b21tYW5kIGNtZCA9IHt9Ow0KPiArICAgICAgIHN0cnVjdCBtbWNfZGF0YSBkYXRhID0ge307DQo+ ICsgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0IHNnOw0KPiArICAgICAgIGludCBpLCBlcnIgPSAw Ow0KPiArICAgICAgIHU4ICpkYXRhX2J1ZiA9IE5VTEw7DQo+ICsNCj4gKyAgICAgICBjbWQub3Bj b2RlID0gb3Bjb2RlOw0KPiArICAgICAgIGNtZC5hcmcgPSBhcmc7DQo+ICsNCj4gKyAgICAgICBp ZiAob3Bjb2RlID09IE1NQ19TRU5EX1NUQVRVUykNCj4gKyAgICAgICAgICAgICAgIGNtZC5mbGFn cyA9IE1NQ19SU1BfU1BJX1IyIHwgTU1DX1JTUF9SMSB8IE1NQ19DTURfQUM7DQo+ICsgICAgICAg ZWxzZQ0KPiArICAgICAgICAgICAgICAgY21kLmZsYWdzID0gTU1DX1JTUF9SMSB8IE1NQ19DTURf QURUQzsNCj4gKw0KPiArICAgICAgIG1ycS5jbWQgPSAmY21kOw0KPiArICAgICAgIG1ycS5kYXRh ID0gTlVMTDsNCj4gKw0KPiArICAgICAgIGlmIChvcGNvZGUgPT0gTU1DX1dSSVRFX01VTFRJUExF X0JMT0NLIHx8IG9wY29kZSA9PSBNTUNfUkVBRF9NVUxUSVBMRV9CTE9DSykgew0KPiArICAgICAg ICAgICAgICAgZGF0YV9idWYgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOw0KPiArICAgICAg ICAgICAgICAgaWYgKCFkYXRhX2J1ZikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07DQo+ICsNCj4gKyAgICAgICAgICAgICAgIG1ycS5kYXRhID0gJmRhdGE7DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gTU1DX1dSSVRFX01VTFRJUExFX0JMT0NL KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplLzQ7IGkr KykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHUzMiAqKShkYXRhX2J1ZiAr IGkqNCkgPSBpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZsYWdzID0gTU1DX0RB VEFfV1JJVEU7DQo+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAg ICAgICAgICBkYXRhLmZsYWdzID0gTU1DX0RBVEFfUkVBRDsNCj4gKyAgICAgICAgICAgICAgIH0N Cj4gKw0KPiArICAgICAgICAgICAgICAgZGF0YS5ibGtzeiA9IDUxMjsNCj4gKyAgICAgICAgICAg ICAgIGRhdGEuYmxvY2tzID0gc2l6ZSAvIGRhdGEuYmxrc3o7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIGRhdGEudGltZW91dF9ucyA9IDE1MCAqIE5TRUNfUEVSX01TRUM7DQo+ICsNCj4gKyAgICAg ICAgICAgICAgIGRhdGEuc2cgPSAmc2c7DQo+ICsgICAgICAgICAgICAgICBkYXRhLnNnX2xlbiA9 IDE7DQo+ICsgICAgICAgICAgICAgICBzZ19pbml0X29uZSgmc2csIGRhdGFfYnVmLCBzaXplKTsN Cj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBtbWNfd2FpdF9mb3JfcmVxKG1tYywgJm1ycSk7 DQo+ICsNCj4gKyAgICAgICBpZiAoY21kLmVycm9yKSB7DQo+ICsgICAgICAgICAgICAgICBlcnIg PSBjbWQuZXJyb3I7DQo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgICB9DQo+ ICsNCj4gKyAgICAgICBpZiAoZGF0YS5lcnJvcikgew0KPiArICAgICAgICAgICAgICAgZXJyID0g ZGF0YS5lcnJvcjsNCj4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiArICAgICAgIH0NCj4g Kw0KPiArb3V0Og0KPiArICAgICAgIHJldHVybiBlcnI7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgZHdfbWNpX3J0a19leGVjdXRlX3R1bmluZyhzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNsb3QsIHUz MiBvcGNvZGUpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaSAqaG9zdCA9IHNsb3QtPmhv c3Q7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaV9ydGtlbW1jX2hvc3QgKnByaXYgPSBob3N0LT5w cml2Ow0KPiArICAgICAgIHN0cnVjdCBtbWNfaG9zdCAqbW1jID0gc2xvdC0+bW1jOw0KPiArICAg ICAgIHUzMiB0eF93aW5kb3cgPSAwLCByeF93aW5kb3cgPSAwOw0KPiArICAgICAgIHUzMiB0eF9i ZXN0ID0gMCwgcnhfYmVzdCA9IDA7DQo+ICsgICAgICAgdTMyIHR4X3JhbmdlLCByeF9yYW5nZSA9 IDB4MjA7DQo+ICsgICAgICAgdW5zaWduZWQgaW50IGJpdG1hcCA9IDA7DQo+ICsgICAgICAgdW5z aWduZWQgaW50IG1heCA9IDA7DQo+ICsgICAgICAgdW5zaWduZWQgaW50IGxvb3BfY250ID0gMDsN Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmVnOw0KPiArICAgICAgIGludCBpLCBqLCByZXQgPSAw LCByc3AgPSAwOw0KPiArICAgICAgIGJvb2wgZmFpbCA9IGZhbHNlOw0KPiArICAgICAgIGJvb2wg ZHFzX3JldHJ5ID0gZmFsc2U7DQo+ICsNCj4gKyAgICAgICBpZiAobW1jLT5kb2luZ19yZXR1bmUg PT0gMSkgew0KPiArICAgICAgICAgICAgICAgZGV2X2VycihtbWNfZGV2KG1tYyksICJSZXR1bmUg Y2FzZSAhISFcbiIpOw0KPiArICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ICsgICAgICAgfQ0K PiArDQo+ICsgICAgICAgcmV0ID0gZHdfbWNpX3J0a19zZXRfcGluc3RhdGVzKHByaXYsIG1tYy0+ aW9zLnRpbWluZyk7DQo+ICsgICAgICAgaWYgKHJldCkgew0KPiArICAgICAgICAgICAgICAgZGV2 X2VycihtbWNfZGV2KG1tYyksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8g c2V0IHBpbnN0YXRlIGVycj0lZFxuIiwgcmV0KTsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IC1F Tk9ERVY7DQo+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgICB9DQo+ICsNCj4g KyAgICAgICBob3N0LT50dW5pbmcgPSAxOw0KPiArDQo+ICsgICAgICAgZG8gew0KPiArICAgICAg ICAgICAgICAgaWYgKG1tYy0+aW9zLnRpbWluZyA9PSBNTUNfVElNSU5HX01NQ19IUzQwMCkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgbG9vcF9jbnQgPSAwOw0KPiArICAgICAgICAgICAgICAg ZWxzZSBpZiAobW1jLT5pb3MudGltaW5nID09IE1NQ19USU1JTkdfTU1DX0hTMjAwKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICBsb29wX2NudCA9IDIwOw0KPiArICAgICAgICAgICAgICAgZWxz ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBsb29wX2NudCA9IDMwOw0KPiArDQo+ICsgICAg ICAgICAgICAgICAvKiByeCB0dW5pbmcgKi8NCj4gKyAgICAgICAgICAgICAgIGRvIHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJ4X3JhbmdlOyBpKyspIHsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd19tY2lfcnRrX3BoYXNlX3R1bmluZyho b3N0LCAweGZmLCBpKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChtbWMtPmlvcy50aW1pbmcgPT0gTU1DX1RJTUlOR19NTUNfSFMyMDApDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3AgPSBtbWNfc2VuZF90dW5pbmcobW1jLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTUNfU0VO RF9UVU5JTkdfQkxPQ0tfSFMyMDAsIE5VTEwpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJz cCA9IGR3X21jaV9ydGtfc2VuZF90dW5pbmcobW1jLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNTUNfU0VORF9TVEFUVVMsIDB4MTAwMDAsIDApOw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyc3ApDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeF93aW5kb3cgPSByeF93aW5kb3cgJiB+QklU KGkpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X3dpbmRvdyA9IHJ4X3dpbmRvdyB8IEJJ VChpKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmIChyeF93aW5kb3cgPT0gMCkgew0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldl9lcnIobW1jX2RldihtbWMpLCAicnhfd2luZG93ID0gMCwgY2Fubm90IGZp bmQgYSBwcm9wZXIgcnggcGhhc2VcbiIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldCA9IC1FRkFVTFQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocnhfd2luZG93ID09 IEhTMjAwX1dJTkRPV19BTExfUEFTUykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvb3BfY250Kys7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0 X3dpbmRvdyhwcml2LCAicnhfd2luZG93IiwgbG9vcF9jbnQsIHJ4X3dpbmRvdyk7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIH0gd2hpbGUgKHJ4X3dpbmRv dyA9PSBIUzQwMF9XSU5ET1dfQUxMX1BBU1MgJiYgbG9vcF9jbnQgPCA2MCk7DQo+ICsNCj4gKyAg ICAgICAgICAgICAgIHJ4X2Jlc3QgPSBzZWFyY2hfYmVzdChyeF93aW5kb3csIHJ4X3JhbmdlKTsN Cj4gKyAgICAgICAgICAgICAgIGlmIChyeF9iZXN0ID09IDB4ZmYpIHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZGV2X2VycihtbWNfZGV2KG1tYyksICJubyA2IGNvbnRpbnVvdXMgcG9pbnRz IGZvciByeCBwaGFzZVxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FRkFV TFQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiArICAgICAgICAgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICBkd19tY2lfcnRrX3BoYXNlX3R1bmluZyhob3N0 LCAweGZmLCByeF9iZXN0KTsNCj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKG1tY19kZXYobW1j KSwgInJ4X3dpbmRvdyA9IDB4JXgsIHJ4X2Jlc3QgPSAweCV4XG4iLCByeF93aW5kb3csIHJ4X2Jl c3QpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAvKmRxcyB0dW5pbmcgaW4gSFM0MDAgbW9kZSov DQo+ICsgICAgICAgICAgICAgICBpZiAobW1jLT5pb3MudGltaW5nID09IE1NQ19USU1JTkdfTU1D X0hTNDAwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsID09IHRydWUpDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluY3RybF9zZWxlY3Rfc3RhdGUocHJp di0+cGluY3RybCwgcHJpdi0+cGluc190dW5lNCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5jdHJsX3NlbGVjdF9z dGF0ZShwcml2LT5waW5jdHJsLCBwcml2LT5waW5zX2hzNDAwKTsNCj4gKw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAvKnJlc2V0IHRoZSBiaXRtYXAsIG1heCwgYW5kIGogZm9yIGVhY2ggd2Nt ZF9ydHkqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXAgPSAwOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICBtYXggPSAwOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBqID0g MDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMHgyMDsg aSsrKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypjcml0ZXJpYSBpcyBt b3JlIHRoYW4gNSBjb250aW51b3VzIHRhcCBzYW1wbGUgcG9pbnQqLw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChqID49IDUpDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYXggPSBqOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qZmluZCB0aGUgbWF4IHRhcCBsZW5ndGgqLw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChqID09IDAgJiYgbWF4ICE9IDApDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRxc19kZWxheV90YXBfc2V0dGluZyhob3N0LCAoaSA8PCAxKSk7DQo+ICsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHdfbWNpX3J0a19zZW5kX3R1bmlu ZyhtbWMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTUNfUkVB RF9NVUxUSVBMRV9CTE9DSywgMHgxMDAsIDEwMjQpICE9IDApIHsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAwOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBqKys7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRt YXAgfD0gQklUKGkpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlm IChtYXggPT0gMCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWls ID09IGZhbHNlKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXZfZXJyKG1tY19kZXYobW1jKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkRRU19SRVRSWTogZHFzIHRhcCBiaXRtYXA9IDB4JXhcbiIsIGJpdG1h cCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1 ZTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRxc19yZXRyeSA9 IHRydWU7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJy KG1tY19kZXYobW1jKSwgInRyeSBwYWQgZHJpdmluZyA3XG4iKTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBpbmN0cmxfc2VsZWN0X3N0YXRlKHByaXYtPnBpbmN0 cmwsIHByaXYtPnBpbnNfdHVuZTQpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQg PSAtRUZBVUxUOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2 X2VycihtbWNfZGV2KG1tYyksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJObyBwcm9wZXIgd2luZG93LGRxcyB0YXAgYml0bWFwPTB4JXggIVxuIiwg Yml0bWFwKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g b3V0Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWcgPSBtY3FfcmVhZGwoaG9zdCwgRFFTX0NUUkwxKSAtIDIgLSAoKG1heCAvIDIpICogMik7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzZXQgdGhlIGRxcyBkbHkgdGFwZSov DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHFzX2RlbGF5X3RhcF9zZXR0aW5n KGhvc3QsIHJlZyk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHFzX3JldHJ5 ID0gZmFsc2U7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2luZm8obW1j X2RldihtbWMpLCAibWF4IHNhbXBsZSBwb2ludCA9ICVkLCBiaXRtYXAgPSAweCV4LCBEUVMgPSAw eCV4XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LCBi aXRtYXAsIG1jcV9yZWFkbChob3N0LCBEUVNfQ1RSTDEpKTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgfQ0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0gd2hpbGUgKGRxc19yZXRy eSA9PSB0cnVlKTsNCj4gKw0KPiArICAgICAgIC8qdHggdHVuaW5nICovDQo+ICsgICAgICAgaWYg KG1tYy0+aW9zLnRpbWluZyA9PSBNTUNfVElNSU5HX01NQ19IUzQwMCkgew0KPiArICAgICAgICAg ICAgICAgdHhfcmFuZ2UgPSAweDEwOw0KPiArICAgICAgICAgICAgICAgbG9vcF9jbnQgPSAwOw0K PiArICAgICAgICAgICAgICAgaWYgKGZhaWwgPT0gdHJ1ZSkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgcGluY3RybF9zZWxlY3Rfc3RhdGUocHJpdi0+cGluY3RybCwgcHJpdi0+cGluc190dW5l NCk7DQo+ICsgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHBp bmN0cmxfc2VsZWN0X3N0YXRlKHByaXYtPnBpbmN0cmwsIHByaXYtPnBpbnNfaHM0MDApOw0KPiAr ICAgICAgIH0gZWxzZSBpZiAobW1jLT5pb3MudGltaW5nID09IE1NQ19USU1JTkdfTU1DX0hTMjAw KSB7DQo+ICsgICAgICAgICAgICAgICB0eF9yYW5nZSA9IDB4MjA7DQo+ICsgICAgICAgICAgICAg ICBsb29wX2NudCA9IDIwOw0KPiArICAgICAgICAgICAgICAgaWYgKGZhaWwgPT0gdHJ1ZSkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcGluY3RybF9zZWxlY3Rfc3RhdGUocHJpdi0+cGluY3Ry bCwgcHJpdi0+cGluc190dW5lNCk7DQo+ICsgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHBpbmN0cmxfc2VsZWN0X3N0YXRlKHByaXYtPnBpbmN0cmwsIHByaXYt PnBpbnNfaHMyMDApOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICB0eF9y YW5nZSA9IDB4MTA7DQo+ICsgICAgICAgICAgICAgICBsb29wX2NudCA9IDMwOw0KPiArICAgICAg IH0NCj4gKw0KPiArICAgICAgIGRvIHsNCj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCB0eF9yYW5nZTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGR3X21jaV9ydGtf cGhhc2VfdHVuaW5nKGhvc3QsIGksIDB4ZmYpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBp ZiAoZHdfbWNpX3J0a19zZW5kX3R1bmluZyhtbWMsIE1NQ19XUklURV9NVUxUSVBMRV9CTE9DSywg MHhmZSwgMTAyNCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHhfd2luZG93 ID0gdHhfd2luZG93ICYgfkJJVChpKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4X3dpbmRvdyA9IHR4X3dpbmRvdyB8 IEJJVChpKTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgICAgaWYg KHR4X3dpbmRvdyA9PSAwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIobW1j X2RldihtbWMpLCAidHhfd2luZG93ID0gMCwgY2Fubm90IGZpbmQgYSBwcm9wZXIgdHggcGhhc2Vc biIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo KHR4X3dpbmRvdyA9PSBIUzQwMF9XSU5ET1dfQUxMX1BBU1MgJiYNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtbWMtPmlvcy50aW1pbmcgPT0gTU1DX1RJTUlOR19NTUNfSFM0MDAp IHx8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR4X3dpbmRvdyA9PSBIUzIw MF9XSU5ET1dfQUxMX1BBU1MgJiYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt bWMtPmlvcy50aW1pbmcgPT0gTU1DX1RJTUlOR19NTUNfSFMyMDApKSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGxvb3BfY250Kys7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFkanVz dF93aW5kb3cocHJpdiwgInR4X3dpbmRvdyIsIGxvb3BfY250LCB0eF93aW5kb3cpOw0KPiArICAg ICAgICAgICAgICAgfQ0KPiArICAgICAgIH0gd2hpbGUgKCgodHhfd2luZG93ID09IEhTNDAwX1dJ TkRPV19BTExfUEFTUyAmJiBtbWMtPmlvcy50aW1pbmcgPT0gTU1DX1RJTUlOR19NTUNfSFM0MDAp IHx8DQo+ICsgICAgICAgICAgICAgICAodHhfd2luZG93ID09IEhTMjAwX1dJTkRPV19BTExfUEFT UyAmJg0KPiArICAgICAgICAgICAgICAgICAgICAgICBtbWMtPmlvcy50aW1pbmcgPT0gTU1DX1RJ TUlOR19NTUNfSFMyMDApKSAmJiBsb29wX2NudCA8IDYwKTsNCj4gKw0KPiArICAgICAgIGlmIChm YWlsID09IHRydWUpDQo+ICsgICAgICAgICAgICAgICBwaW5jdHJsX3NlbGVjdF9zdGF0ZShwcml2 LT5waW5jdHJsLCBwcml2LT5waW5zX3R1bmU0KTsNCj4gKyAgICAgICBlbHNlIGlmIChtbWMtPmlv cy50aW1pbmcgPT0gTU1DX1RJTUlOR19NTUNfSFM0MDApDQo+ICsgICAgICAgICAgICAgICBwaW5j dHJsX3NlbGVjdF9zdGF0ZShwcml2LT5waW5jdHJsLCBwcml2LT5waW5zX2hzNDAwKTsNCj4gKyAg ICAgICBlbHNlIGlmIChtbWMtPmlvcy50aW1pbmcgPT0gTU1DX1RJTUlOR19NTUNfSFMyMDApDQo+ ICsgICAgICAgICAgICAgICBwaW5jdHJsX3NlbGVjdF9zdGF0ZShwcml2LT5waW5jdHJsLCBwcml2 LT5waW5zX2hzMjAwKTsNCj4gKw0KPiArICAgICAgIHR4X2Jlc3QgPSBzZWFyY2hfYmVzdCh0eF93 aW5kb3csIHR4X3JhbmdlKTsNCj4gKyAgICAgICBpZiAodHhfYmVzdCA9PSAweGZmKSB7DQo+ICsg ICAgICAgICAgICAgICBkZXZfZXJyKG1tY19kZXYobW1jKSwgIm5vIDYgY29udGludW91cyBwb2lu dHMgZm9yIHR4IHBoYXNlXG4iKTsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7DQo+ ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBk d19tY2lfcnRrX3BoYXNlX3R1bmluZyhob3N0LCB0eF9iZXN0LCAweGZmKTsNCj4gKyAgICAgICBk ZXZfaW5mbyhtbWNfZGV2KG1tYyksICJ0eF93aW5kb3cgPSAweCV4LCB0eF9iZXN0ID0gMHgleFxu IiwgdHhfd2luZG93LCB0eF9iZXN0KTsNCj4gKw0KPiArb3V0Og0KPiArICAgICAgIC8qIFdlIHNl bmQgY21kIDEzIGFnYWluIGJlY2F1c2UgdGhlIGVNTUMgaGFuZGxpbmcgbWlnaHQgc2VuZCBjb21t YW5kIDEyIG1vcmUgdGhhbiB0d2ljZS4NCj4gKyAgICAgICAgKiBBZnRlciBrZXJuZWwgNS40LCBz eXN0ZW0gbWlnaHQgc2VuZCBjbWQxMyBmaXJzdCBiZWZvcmUgaXNzdWluZyBhbnkgY29tbWFuZCwN Cj4gKyAgICAgICAgKiB1c2VyIHdpbGwgc2VlIHRoZSBpbGxlZ2FsIGNvbW1hbmQgc3RhdHVzIGJl Y2F1c2UgdGhlIGVtbWMgdHVuaW5nIGVycm9yIGhhbmRsaW5nDQo+ICsgICAgICAgICovDQo+ICsN Cj4gKyAgICAgICBkd19tY2lfcnRrX3NlbmRfdHVuaW5nKG1tYywgTU1DX1NFTkRfU1RBVFVTLCAw eDEwMDAwLCAwKTsNCj4gKyAgICAgICBob3N0LT50dW5pbmcgPSAwOw0KPiArDQo+ICsgICAgICAg cmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZHdfbWNpX3J0a19zZXRfaW9z KHN0cnVjdCBkd19tY2lfc2xvdCAqc2xvdCwgc3RydWN0IG1tY19pb3MgKmlvcykNCj4gK3sNCj4g KyAgICAgICBzdHJ1Y3QgZHdfbWNpICpob3N0ID0gc2xvdC0+aG9zdDsNCj4gKyAgICAgICBpbnQg cmV0Ow0KPiArICAgICAgIHUzMiBzdGF0dXM7DQo+ICsNCj4gKyAgICAgICBjbGtfZGlzYWJsZSho b3N0LT5jaXVfY2xrKTsNCj4gKyAgICAgICB1ZGVsYXkoMTApOw0KPiArDQo+ICsgICAgICAgcmV0 ID0gY2xrX3NldF9yYXRlKGhvc3QtPmNpdV9jbGssIGlvcy0+Y2xvY2spOw0KPiArDQo+ICsgICAg ICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIGRldl93YXJuKGhvc3QtPmRldiwgImZhaWxl ZCB0byBzZXQgcmF0ZSAldUh6XG4iLCBpb3MtPmNsb2NrKTsNCj4gKw0KPiArICAgICAgIGhvc3Qt PmJ1c19oeiA9IGNsa19nZXRfcmF0ZShob3N0LT5jaXVfY2xrKTsNCj4gKw0KPiArICAgICAgIHVk ZWxheSgxMCk7DQo+ICsgICAgICAgY2xrX2VuYWJsZShob3N0LT5jaXVfY2xrKTsNCj4gKw0KPiAr ICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChob3N0LT5yZWdzICsgU0RNTUNfQ0xLX0NU UkxfUiwgc3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAoc3RhdHVzICYgU0RNTUNf SU5URVJOQUxfQ0xLX01TSykgPT0gMHgzLCAxMCwgRFdfTUNJX1RJTUVPVVQpOw0KPiArICAgICAg IGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldiwgIldhaXRpbmcg ZW1tYyBzZXRfaW9zIHRpbWVvdXRcbiIpOw0KPiArDQo+ICsgICAgICAgbWNxX3dyaXRlYihob3N0 LCBTV19SU1RfUiwgU0RNTUNfUlNUX0NNRHxTRE1NQ19SU1RfREFUKTsNCj4gKw0KPiArICAgICAg IHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChob3N0LT5yZWdzICsgU0RNTUNfQ0xLX0NUUkxfUiwg c3RhdHVzLA0KPiArICAgICAgICAgICAgICAgKHN0YXR1cyAmIFNXX1JTVF9CT1RIX0RPTkUpID09 IDB4MCwgMTAsIERXX01DSV9USU1FT1VUKTsNCj4gKyAgICAgICBpZiAocmV0KQ0KPiArICAgICAg ICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJXYWl0aW5nIHN3IHJlc2V0IHRpbWVvdXRcbiIp Ow0KPiArDQo+ICsgICAgICAgY2xrX2Rpc2FibGUoaG9zdC0+Y2l1X2Nsayk7DQo+ICsgICAgICAg dWRlbGF5KDYpOw0KPiArDQo+ICsgICAgICAgc2V0dXBfY2xrX2RpdihzbG90KTsNCj4gKw0KPiAr ICAgICAgIG1jcV93cml0ZWwoaG9zdCwgQ0tHRU5fQ1RMLCBtY3FfcmVhZGwoaG9zdCwgQ0tHRU5f Q1RMKSAmIH5TRE1NQ19DTEtfRElWX1NFTCk7DQo+ICsgICAgICAgdWRlbGF5KDYpOw0KPiArDQo+ ICsgICAgICAgY2xrX2VuYWJsZShob3N0LT5jaXVfY2xrKTsNCj4gKyAgICAgICB1ZGVsYXkoNik7 DQo+ICsNCj4gKyAgICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaG9zdC0+cmVncyArIFNE TU1DX0NMS19DVFJMX1IsIHN0YXR1cywNCj4gKyAgICAgICAgICAgICAgIChzdGF0dXMgJiBTRE1N Q19JTlRFUk5BTF9DTEtfTVNLKSA9PSAweDMsIDEwLCBEV19NQ0lfVElNRU9VVCk7DQo+ICsgICAg ICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAiV2FpdGlu ZyBlbW1jIHNldF9pb3MgdGltZW91dFxuIik7DQo+ICsNCj4gKyAgICAgICBtY3Ffd3JpdGViKGhv c3QsIFNXX1JTVF9SLCBTRE1NQ19SU1RfQ01EIHwgU0RNTUNfUlNUX0RBVCk7DQo+ICsNCj4gKyAg ICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaG9zdC0+cmVncyArIFNETU1DX0NMS19DVFJM X1IsIHN0YXR1cywNCj4gKyAgICAgICAgICAgICAgIChzdGF0dXMgJiBTV19SU1RfQk9USF9ET05F KSA9PSAweDAsIDEwLCBEV19NQ0lfVElNRU9VVCk7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAg ICAgICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAiV2FpdGluZyBzdyByZXNldCB0aW1lb3V0 XG4iKTsNCj4gKw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgT1RIRVIxLCBtY3FfcmVhZGwo aG9zdCwgT1RIRVIxKSAmICh+U0RNTUNfVE9QX1JTVF9OX0ZJRk8pKTsNCj4gKyAgICAgICB1ZGVs YXkoMTApOw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgT1RIRVIxLCBtY3FfcmVhZGwoaG9z dCwgT1RIRVIxKSB8IFNETU1DX1RPUF9SU1RfTl9GSUZPKTsNCj4gKyAgICAgICB1ZGVsYXkoMTAp Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGR3X21jaV9ydGtfcHJlcGFyZV9oczQwMF90dW5p bmcoc3RydWN0IGR3X21jaSAqaG9zdCwgc3RydWN0IG1tY19pb3MgKmlvcykNCj4gK3sNCj4gKyAg ICAgICBkcXNfZGVsYXlfdGFwX3NldHRpbmcoaG9zdCwgaHM0MDBfZHFzX2RlbGF5X3ZhbCk7DQo+ ICsNCj4gKyAgICAgICBkYXRhX2RlbGF5X3RhcF9zZXR0aW5nKGhvc3QpOw0KPiArDQo+ICsgICAg ICAgY21kX2RlbGF5X3RhcF9zZXR0aW5nKGhvc3QsIDApOw0KPiArDQo+ICsgICAgICAgcmV0dXJu IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9ydGtfaHM0MDBfY29tcGxldGUo c3RydWN0IG1tY19ob3N0ICptbWMpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaV9zbG90 ICpzbG90ID0gbW1jX3ByaXYobW1jKTsNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpICpob3N0ID0g c2xvdC0+aG9zdDsNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWNpX2Rydl9kYXRhICpkcnZf ZGF0YSA9IGhvc3QtPmRydl9kYXRhOw0KPiArICAgICAgIHN0cnVjdCBkd19tY2lfcnRrZW1tY19o b3N0ICpwcml2ID0gaG9zdC0+cHJpdjsNCj4gKyAgICAgICBpbnQgZXJyID0gLUVJTlZBTDsNCj4g Kw0KPiArICAgICAgIGlmIChkcnZfZGF0YSAmJiBkcnZfZGF0YS0+ZXhlY3V0ZV90dW5pbmcpDQo+ ICsgICAgICAgICAgICAgICBlcnIgPSBkcnZfZGF0YS0+ZXhlY3V0ZV90dW5pbmcoc2xvdCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgTU1DX1NFTkRfVFVOSU5HX0JMT0NLX0hTMjAwKTsNCj4g Kw0KPiArICAgICAgIGlmIChlcnIgIT0gMCkgew0KPiArICAgICAgICAgICAgICAgZGV2X2Vyciht bWNfZGV2KG1tYyksICJIUzQwMCB0dW5pbmcgZmFpbGVkIGFuZCBkb3duIHNwZWVkIHRvIGhzMjAw LCBlcnI9JWRcbiIsIGVycik7DQo+ICsgICAgICAgICAgICAgICBob3N0LT5wZGF0YS0+Y2FwcyAm PSB+TU1DX0NBUF8xXzhWX0REUjsNCj4gKyAgICAgICAgICAgICAgIGhvc3QtPnBkYXRhLT5jYXBz MiAmPSB+TU1DX0NBUDJfSFM0MDBfMV84VjsNCj4gKyAgICAgICAgICAgICAgIG1tYy0+Y2FyZC0+ bW1jX2F2YWlsX3R5cGUgJj0gfkVYVF9DU0RfQ0FSRF9UWVBFX0hTNDAwXzFfOFY7DQo+ICsgICAg ICAgICAgICAgICBwcml2LT5lbW1jX21vZGUgPSAyOw0KPiArICAgICAgICAgICAgICAgbW1jX2h3 X3Jlc2V0KG1tYyk7DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19t Y2lfcnRrX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfY2FyZCAq Y2FyZCkNCj4gK3sNCj4gKyAgICAgICAvKiBJbiBSZWFsdGVrIFBsYXRmb3JtLCB3ZSBuZWVkIHRv IGF0dGFjaCBlTU1DIGNhcmQgb250byBtbWMgaG9zdA0KPiArICAgICAgICAqIGR1cmluZyBlTU1D IGluaXRpYWxpemF0aW9uIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyByZWFzb246DQo+ICsgICAg ICAgICogV2hlbiBzeXN0ZW0gY2Fubm90IHJ1biB0aGUgaHM0MDAsIHdlIG5lZWQgdG8gZG93biBz cGVlZCB0byBoczIwMA0KPiArICAgICAgICAqIGFuZCBjYWxsIG1tY19od19yZXNldCBhbmQgbW9k aWZ5IHRoZSBtbWMgY2FyZCBhdHRyaWJ1dGUgdGhyb3VnaCBtbWMgaG9zdC4NCj4gKyAgICAgICAg KiBBdCB0aGlzIG1vbWVudCwgc3lzdGVtIHdpbGwgc2hvdyBlcnJvcnMgaWYgaG9zdC0+Y2FyZCA9 IE5VTEwuDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgaG9zdC0+Y2FyZCA9IGNhcmQ7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQgZHdfbWNpX3J0a19wYXJzZV9kdChzdHJ1Y3QgZHdfbWNpICpo b3N0KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBkd19tY2lfcnRrZW1tY19ob3N0ICpwcml2Ow0K PiArICAgICAgIGNvbnN0IHUzMiAqcHJvcDsNCj4gKyAgICAgICBpbnQgc2l6ZTsNCj4gKw0KPiAr ICAgICAgIHByaXYgPSBkZXZtX2t6YWxsb2MoaG9zdC0+ZGV2LCBzaXplb2Yoc3RydWN0IGR3X21j aV9ydGtlbW1jX2hvc3QpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIXByaXYpDQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgICAgIHByaXYtPnBpbmN0 cmwgPSBkZXZtX3BpbmN0cmxfZ2V0KGhvc3QtPmRldik7DQo+ICsgICAgICAgaWYgKElTX0VSUihw cml2LT5waW5jdHJsKSkNCj4gKyAgICAgICAgICAgICAgIGRldl9kYmcoaG9zdC0+ZGV2LCAibm8g cGluY3RybFxuIik7DQo+ICsNCj4gKyAgICAgICBwcml2LT5waW5zX2RlZmF1bHQgPSBwaW5jdHJs X2xvb2t1cF9zdGF0ZShwcml2LT5waW5jdHJsLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUElOQ1RSTF9TVEFURV9ERUZBVUxUKTsNCj4gKyAgICAgICBpZiAoSVNf RVJSKHByaXYtPnBpbnNfZGVmYXVsdCkpDQo+ICsgICAgICAgICAgICAgICBkZXZfd2Fybihob3N0 LT5kZXYsICJjb3VsZCBub3QgZ2V0IGRlZmF1bHQgc3RhdGVcbiIpOw0KPiArDQo+ICsgICAgICAg cHJpdi0+cGluc19zZHI1MCA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKHByaXYtPnBpbmN0cmwsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZHI1MCIp Ow0KPiArICAgICAgIGlmIChJU19FUlIocHJpdi0+cGluc19zZHI1MCkpDQo+ICsgICAgICAgICAg ICAgICBkZXZfd2Fybihob3N0LT5kZXYsICJjb3VsZCBub3QgZ2V0IHNkcjUwIHN0YXRlXG4iKTsN Cj4gKw0KPiArICAgICAgIHByaXYtPnBpbnNfaHMyMDAgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShw cml2LT5waW5jdHJsLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiaHMyMDAiKTsNCj4gKyAgICAgICBpZiAoSVNfRVJSKHByaXYtPnBpbnNfaHMyMDAp KQ0KPiArICAgICAgICAgICAgICAgZGV2X3dhcm4oaG9zdC0+ZGV2LCAiY291bGQgbm90IGdldCBo czIwMCBzdGF0ZVxuIik7DQo+ICsNCj4gKyAgICAgICBwcml2LT5waW5zX2hzNDAwID0gcGluY3Ry bF9sb29rdXBfc3RhdGUocHJpdi0+cGluY3RybCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImhzNDAwIik7DQo+ICsgICAgICAgaWYgKElTX0VSUihw cml2LT5waW5zX2hzNDAwKSkNCj4gKyAgICAgICAgICAgICAgIGRldl93YXJuKGhvc3QtPmRldiwg ImNvdWxkIG5vdCBnZXQgaHM0MDAgc3RhdGVcbiIpOw0KPiArDQo+ICsgICAgICAgcHJpdi0+cGlu c190dW5lMCA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKHByaXYtPnBpbmN0cmwsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dW5lMCIpOw0KPiArICAg ICAgIGlmIChJU19FUlIocHJpdi0+cGluc190dW5lMCkpDQo+ICsgICAgICAgICAgICAgICBkZXZf d2Fybihob3N0LT5kZXYsICJjb3VsZCBub3QgZ2V0IHR1bmUwIHN0YXRlXG4iKTsNCj4gKw0KPiAr ICAgICAgIHByaXYtPnBpbnNfdHVuZTEgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShwcml2LT5waW5j dHJsLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi dHVuZTEiKTsNCj4gKyAgICAgICBpZiAoSVNfRVJSKHByaXYtPnBpbnNfdHVuZTEpKQ0KPiArICAg ICAgICAgICAgICAgZGV2X3dhcm4oaG9zdC0+ZGV2LCAiY291bGQgbm90IGdldCB0dW5lMSBzdGF0 ZVxuIik7DQo+ICsNCj4gKyAgICAgICBwcml2LT5waW5zX3R1bmUyID0gcGluY3RybF9sb29rdXBf c3RhdGUocHJpdi0+cGluY3RybCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInR1bmUyIik7DQo+ICsgICAgICAgaWYgKElTX0VSUihwcml2LT5waW5z X3R1bmUyKSkNCj4gKyAgICAgICAgICAgICAgIGRldl93YXJuKGhvc3QtPmRldiwgImNvdWxkIG5v dCBnZXQgdHVuZTIgc3RhdGVcbiIpOw0KPiArDQo+ICsgICAgICAgcHJpdi0+cGluc190dW5lMyA9 IHBpbmN0cmxfbG9va3VwX3N0YXRlKHByaXYtPnBpbmN0cmwsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dW5lMyIpOw0KPiArICAgICAgIGlmIChJ U19FUlIocHJpdi0+cGluc190dW5lMykpDQo+ICsgICAgICAgICAgICAgICBkZXZfd2Fybihob3N0 LT5kZXYsICJjb3VsZCBub3QgZ2V0IHR1bmUzIHN0YXRlXG4iKTsNCj4gKw0KPiArICAgICAgIHBy aXYtPnBpbnNfdHVuZTQgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShwcml2LT5waW5jdHJsLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVuZTQiKTsN Cj4gKw0KPiArICAgICAgIGlmIChJU19FUlIocHJpdi0+cGluc190dW5lNCkpDQo+ICsgICAgICAg ICAgICAgICBkZXZfd2Fybihob3N0LT5kZXYsICJjb3VsZCBub3QgZ2V0IHR1bmU0IHN0YXRlXG4i KTsNCj4gKw0KPiArICAgICAgIHByaXYtPnZwMCA9IGRldm1fY2xrX2dldChob3N0LT5kZXYsICJ2 cDAiKTsNCj4gKyAgICAgICBpZiAoSVNfRVJSKHByaXYtPnZwMCkpDQo+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKGhvc3QtPmRldiwgImNvdWxkIG5vdCBnZXQgdnAwIGNsa1xuIik7DQo+ICsNCj4g KyAgICAgICBwcml2LT52cDEgPSBkZXZtX2Nsa19nZXQoaG9zdC0+ZGV2LCAidnAxIik7DQo+ICsg ICAgICAgaWYgKElTX0VSUihwcml2LT52cDEpKQ0KPiArICAgICAgICAgICAgICAgZGV2X2Vyciho b3N0LT5kZXYsICJjb3VsZCBub3QgZ2V0IHZwMSBjbGtcbiIpOw0KPiArDQo+ICsgICAgICAgcHJp di0+ZW1tY19tb2RlID0gMDsNCj4gKyAgICAgICBwcm9wID0gb2ZfZ2V0X3Byb3BlcnR5KGhvc3Qt PmRldi0+b2Zfbm9kZSwgInNwZWVkLXN0ZXAiLCAmc2l6ZSk7DQo+ICsgICAgICAgaWYgKHByb3Ap IHsNCj4gKyAgICAgICAgICAgICAgIHByaXYtPmVtbWNfbW9kZSA9IG9mX3JlYWRfbnVtYmVyKHBy b3AsIDEpOw0KPiArICAgICAgICAgICAgICAgZGV2X2luZm8oaG9zdC0+ZGV2LCAiZW1tYyBtb2Rl IDogJWRcbiIsIHByaXYtPmVtbWNfbW9kZSk7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAg ICAgICAgICAgIGRldl9pbmZvKGhvc3QtPmRldiwgInVzZSBkZWZhdWx0IGVtbWMgc2RyNTAgbW9k ZSAhXG4iKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKw0KPiArICAgICAgIHByaXYtPmlzX2NxZSA9 IDA7DQo+ICsgICAgICAgcHJvcCA9IG9mX2dldF9wcm9wZXJ0eShob3N0LT5kZXYtPm9mX25vZGUs ICJjcWUiLCAmc2l6ZSk7DQo+ICsgICAgICAgaWYgKHByb3ApIHsNCj4gKyAgICAgICAgICAgICAg IHByaXYtPmlzX2NxZSA9IG9mX3JlYWRfbnVtYmVyKHByb3AsIDEpOw0KPiArICAgICAgICAgICAg ICAgZGV2X2luZm8oaG9zdC0+ZGV2LCAiY21kcSBtb2RlIDogJWRcbiIsIHByaXYtPmlzX2NxZSk7 DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGhvc3QtPmRl diwgInVzZSBkZWZhdWx0IGVNTUMgbGVnYWN5IG1vZGUgIVxuIik7DQo+ICsgICAgICAgfQ0KPiAr DQo+ICsgICAgICAgcHJvcCA9IG9mX2dldF9wcm9wZXJ0eShob3N0LT5kZXYtPm9mX25vZGUsICJy ZHEtY3RybCIsICZzaXplKTsNCj4gKyAgICAgICBpZiAocHJvcCkgew0KPiArICAgICAgICAgICAg ICAgcHJpdi0+cmRxX2N0cmwgPSBvZl9yZWFkX251bWJlcihwcm9wLCAxKTsNCj4gKyAgICAgICAg ICAgICAgIGRldl9pbmZvKGhvc3QtPmRldiwgImdldCByZHEtY3RybCA6ICV1XG4iLCBwcml2LT5y ZHFfY3RybCk7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIHByaXYtPnJk cV9jdHJsID0gMDsNCj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGhvc3QtPmRldiwgIm5vIGRx c19kbHlfdGFwZSBzd2l0Y2ggbm9kZSwgdXNlIGRlZmF1bHQgMHgwICEhXG4iKTsNCj4gKyAgICAg ICB9DQo+ICsNCj4gKyAgICAgICBwcml2LT5tMnRteCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5 X3BoYW5kbGUoaG9zdC0+ZGV2LT5vZl9ub2RlLCAicmVhbHRlayxtMnRteCIpOw0KPiArICAgICAg IGlmIChJU19FUlJfT1JfTlVMTChwcml2LT5tMnRteCkpDQo+ICsgICAgICAgICAgICAgICBkZXZf ZXJyKGhvc3QtPmRldiwgImNhbiBub3QgZ2V0IG0ybXR4IG5vZGUuXG4iKTsNCj4gKw0KPiArICAg ICAgIGhvc3QtPnByaXYgPSBwcml2Ow0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgZHdfbWNpX3J0a19pbml0KHN0cnVjdCBkd19tY2kgKmhvc3QpDQo+ ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaV9ydGtlbW1jX2hvc3QgKnByaXYgPSBob3N0LT5w cml2Ow0KPiArDQo+ICsgICAgICAgaG9zdC0+cGRhdGEtPmNhcHMyID0gTU1DX0NBUDJfTk9fU0RJ TyB8IE1NQ19DQVAyX05PX1NEOw0KPiArDQo+ICsgICAgICAgaWYgKHByaXYtPmVtbWNfbW9kZSA+ PSAyKQ0KPiArICAgICAgICAgICAgICAgaG9zdC0+cGRhdGEtPmNhcHMyIHw9IE1NQ19DQVAyX0hT MjAwXzFfOFZfU0RSOw0KPiArICAgICAgIGlmIChwcml2LT5lbW1jX21vZGUgPj0gMykgew0KPiAr ICAgICAgICAgICAgICAgaG9zdC0+cGRhdGEtPmNhcHMgfD0gTU1DX0NBUF8xXzhWX0REUjsNCj4g KyAgICAgICAgICAgICAgIGhvc3QtPnBkYXRhLT5jYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF8xXzhW Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGlmIChwcml2LT5pc19jcWUgPiAwKQ0KPiAr ICAgICAgICAgICAgICAgaG9zdC0+cGRhdGEtPmNhcHMyIHw9IChNTUNfQ0FQMl9DUUV8TU1DX0NB UDJfQ1FFX0RDTUQpOw0KPiArDQo+ICsNCj4gKyAgICAgICAvKkluIFJlYWx0ZWsgUGxhdGZvcm0s IG9ubHkgdXNpbmcgMzJiaXQgRE1BKi8NCj4gKyAgICAgICBob3N0LT5kbWFfNjRiaXRfYWRkcmVz cyA9IDA7DQo+ICsNCj4gKyAgICAgICAvKkluIFJlYWx0ZWsgUGxhdGZvcm0sIGRvIG5vdCB1c2Ug UElPIG1vZGUgYnkgZGVmYXVsdCovDQo+ICsgICAgICAgaG9zdC0+dXNlX2RtYSA9IFRSQU5TX01P REVfRE1BOw0KPiArDQo+ICsgICAgICAgaG9zdC0+aXJxX2ZsYWdzID0gSVJRRl9TSEFSRUQ7DQo+ ICsNCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIENQLCAweDApOw0KPiArDQo+ICsgICAgICAg LypFbmFibGUgTDQgZ2F0ZWQqLw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgT1RIRVIxLCBt Y3FfcmVhZGwoaG9zdCwgT1RIRVIxKQ0KPiArICAgICAgICAgICAgICAgJiB+KFNETU1DX0w0X0dB VEVEX0RJUyB8IFNETU1DX0w0X0dBVEVEX0RJUzEpKTsNCj4gKw0KPiArICAgICAgIG1jcV93cml0 ZWwoaG9zdCwgT1RIRVIxLCBtY3FfcmVhZGwoaG9zdCwgT1RIRVIxKQ0KPiArICAgICAgICAgICAg ICAgJiAofihTRE1NQ19EUVNfQ1RSTF9HQVRFX0RJU3xTRE1NQ19EQlVTX01BU19HQVRJTkdfRElT KSkpOw0KPiArDQo+ICsgICAgICAgLypTZXQgdGhlIGVNTUMgd3JhcHBlciBsaXR0bGUgRW5kaWFu Ki8NCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIEFIQiwgbWNxX3JlYWRsKGhvc3QsIEFIQil8 U0RNTUNfQUhCX0JJRyk7DQo+ICsNCj4gKyAgICAgICBtY3Ffd3JpdGVsKGhvc3QsIE9USEVSMSwN Cj4gKyAgICAgICAgICAgICAgIG1jcV9yZWFkbChob3N0LCBPVEhFUjEpIHwgU0RNTUNfU1RBUktf Q0FSRF9TVE9QX0VOQUJMRSk7DQo+ICsNCj4gKyAgICAgICAvKnNldCBlTU1DIGluc3RlYWQgb2Yg bmFuZCovDQo+ICsgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzX2Jhc2UocHJpdi0+bTJ0bXgsIFNE TU1DX05BTkRfRE1BX1NFTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRE1N Q19TUkFNX0RNQV9TRUwsIFNETU1DX1NSQU1fRE1BX1NFTCwgTlVMTCwgZmFsc2UsIHRydWUpOw0K PiArDQo+ICsgICAgICAgLypTZXQgdGhlIGNsayBpbml0aWFsIHBoYXNlKi8NCj4gKyAgICAgICBk d19tY2lfcnRrX3BoYXNlX3R1bmluZyhob3N0LCAwLCAwKTsNCj4gKw0KPiArICAgICAgIHJldHVy biAwOw0KPiArfQ0KPiArDQo+ICsjaWZkZWYgQ09ORklHX1BNDQo+ICtzdGF0aWMgaW50IGR3X21j aV9ydGtfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0 IGR3X21jaSAqaG9zdCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArICAgICAgIGludCByZXQg PSAwOw0KPiArDQo+ICsgICAgICAgcmV0ID0gZHdfbWNpX2NxZV9ydW50aW1lX3N1c3BlbmQoZGV2 KTsNCj4gKw0KPiArICAgICAgIG1jcV93cml0ZWwoaG9zdCwgQUhCLCAwKTsNCj4gKyAgICAgICBk ZXZfaW5mbyhkZXYsICJBSEI9MHgleCwgZHdfbWNpX2NxZV9zdXNwZW5kIHJldD0lZFxuIiwNCj4g KyAgICAgICAgICAgICAgIG1jcV9yZWFkbChob3N0LCBBSEIpLCByZXQpOw0KPiArDQo+ICsgICAg ICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfcnRrX3Jlc3Vt ZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaSAqaG9z dCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArICAgICAgIGludCByZXQgPSAwOw0KPiArDQo+ ICsgICAgICAgbWNxX3dyaXRlbChob3N0LCBBSEIsIG1jcV9yZWFkbChob3N0LCBBSEIpfFNETU1D X0FIQl9CSUcpOw0KPiArDQo+ICsgICAgICAgcmV0ID0gZHdfbWNpX2NxZV9ydW50aW1lX3Jlc3Vt ZShkZXYpOw0KPiArDQo+ICsgICAgICAgZGV2X2luZm8oZGV2LCAiQUhCPTB4JXgsIGR3X21jaV9j cWVfcmVzdW1lIHJldD0lZFxuIiwNCj4gKyAgICAgICAgICAgICAgIG1jcV9yZWFkbChob3N0LCBB SEIpLCByZXQpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKyNlbHNlDQo+ ICtzdGF0aWMgaW50IGR3X21jaV9ydGtfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7 DQo+ICsgICAgICAgZGV2X2VycihkZXYsICJVc2VyIHNob3VsZCBlbmFibGUgQ09ORklHX1BNIGtl cm5lbCBjb25maWdcbiIpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICtzdGF0 aWMgaW50IGR3X21jaV9ydGtfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKyAg ICAgICBkZXZfZXJyKGRldiwgIlVzZXIgc2hvdWxkIGVuYWJsZSBDT05GSUdfUE0ga2VybmVsIGNv bmZpZ1xuIik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKyNlbmRpZiAvKkNP TkZJR19QTSovDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgcnRrX2Rldl9wbV9v cHMgPSB7DQo+ICsgICAgICAgU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoZHdfbWNpX3J0a19zdXNw ZW5kLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3X21jaV9ydGtfcmVzdW1l KQ0KPiArICAgICAgIFNFVF9SVU5USU1FX1BNX09QUyhkd19tY2lfY3FlX3J1bnRpbWVfc3VzcGVu ZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZHdfbWNpX2NxZV9ydW50aW1lX3Jlc3Vt ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkNCj4gK307DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIGR3X21jaV9ydGtfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCj4gK3sNCj4gKyAgICAgICBkZXZfaW5mbygmcGRldi0+ZGV2LCAiW2VNTUNdIFNodXRkb3du XG4iKTsNCj4gKyAgICAgICBkd19tY2lfY3FlX3J1bnRpbWVfcmVzdW1lKCZwZGV2LT5kZXYpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBkd19tY2lfcnRrX2R3bW1jX2NhcHNb MV0gPSB7DQo+ICsgICAgICAgTU1DX0NBUF80X0JJVF9EQVRBIHwgTU1DX0NBUF84X0JJVF9EQVRB IHwNCj4gKyAgICAgICBNTUNfQ0FQX1NEX0hJR0hTUEVFRCB8IE1NQ19DQVBfTU1DX0hJR0hTUEVF RCB8DQo+ICsgICAgICAgTU1DX0NBUF9OT05SRU1PVkFCTEUgfCBNTUNfQ0FQX0NNRDIzLA0KPiAr fTsNCj4gKw0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR3X21jaV9kcnZfZGF0YSBydGtf ZHJ2X2RhdGEgPSB7DQo+ICsgICAgICAgLmNhcHMgICAgICAgICAgICAgICAgICAgPSBkd19tY2lf cnRrX2R3bW1jX2NhcHMsDQo+ICsgICAgICAgLm51bV9jYXBzICAgICAgICAgICAgICAgPSBBUlJB WV9TSVpFKGR3X21jaV9ydGtfZHdtbWNfY2FwcyksDQo+ICsgICAgICAgLnNldF9pb3MgICAgICAg ICAgICAgICAgPSBkd19tY2lfcnRrX3NldF9pb3MsDQo+ICsgICAgICAgLmV4ZWN1dGVfdHVuaW5n ICAgICAgICAgPSBkd19tY2lfcnRrX2V4ZWN1dGVfdHVuaW5nLA0KPiArICAgICAgIC5wYXJzZV9k dCAgICAgICAgICAgICAgID0gZHdfbWNpX3J0a19wYXJzZV9kdCwNCj4gKyAgICAgICAuaW5pdCAg ICAgICAgICAgICAgICAgICA9IGR3X21jaV9ydGtfaW5pdCwNCj4gKyAgICAgICAucHJlcGFyZV9o czQwMF90dW5pbmcgICA9IGR3X21jaV9ydGtfcHJlcGFyZV9oczQwMF90dW5pbmcsDQo+ICsgICAg ICAgLmhzNDAwX2NvbXBsZXRlICAgICAgICAgPSBkd19tY2lfcnRrX2hzNDAwX2NvbXBsZXRlLA0K PiArICAgICAgIC5pbml0X2NhcmQgICAgICAgICAgICAgID0gZHdfbWNpX3J0a19pbml0X2NhcmQs DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd19tY2lf cnRrX21hdGNoW10gPSB7DQo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZC1k dy1jcWUtZW1tYyIsDQo+ICsgICAgICAgICAgICAgICAuZGF0YSA9ICZydGtfZHJ2X2RhdGEgfSwN Cj4gKyAgICAgICB7fSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd19tY2lf cnRrX21hdGNoKTsNCj4gKw0KPiAraW50IGR3X21jaV9jcWVfcGx0Zm1fcmVnaXN0ZXIoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZHdfbWNpX2Rydl9kYXRhICpkcnZfZGF0YSkNCj4gK3sNCj4gKyAgICAgICBzdHJ1 Y3QgZHdfbWNpICpob3N0Ow0KPiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVnczsNCj4gKw0K PiArICAgICAgIGhvc3QgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKHN0cnVjdCBk d19tY2kpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIWhvc3QpDQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgICAgIGhvc3QtPmlycSA9IHBsYXRmb3Jt X2dldF9pcnEocGRldiwgMCk7DQo+ICsgICAgICAgaWYgKGhvc3QtPmlycSA8IDApDQo+ICsgICAg ICAgICAgICAgICByZXR1cm4gaG9zdC0+aXJxOw0KPiArDQo+ICsgICAgICAgaG9zdC0+ZHJ2X2Rh dGEgPSBkcnZfZGF0YTsNCj4gKyAgICAgICBob3N0LT5wZGV2ID0gcGRldjsNCj4gKyAgICAgICBo b3N0LT5kZXYgPSAmcGRldi0+ZGV2Ow0KPiArICAgICAgIGhvc3QtPmlycV9mbGFncyA9IDA7DQo+ ICsgICAgICAgaG9zdC0+cGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsNCj4gKw0KPiAr ICAgICAgIHJlZ3MgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOw0KPiArICAgICAgIGhvc3QtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYt PmRldiwgcmVncyk7DQo+ICsgICAgICAgaWYgKElTX0VSUihob3N0LT5yZWdzKSkNCj4gKyAgICAg ICAgICAgICAgIHJldHVybiBQVFJfRVJSKGhvc3QtPnJlZ3MpOw0KPiArDQo+ICsgICAgICAgLyog R2V0IHJlZ2lzdGVycycgcGh5c2ljYWwgYmFzZSBhZGRyZXNzICovDQo+ICsgICAgICAgaG9zdC0+ cGh5X3JlZ3MgPSByZWdzLT5zdGFydDsNCj4gKw0KPiArICAgICAgIHBsYXRmb3JtX3NldF9kcnZk YXRhKHBkZXYsIGhvc3QpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIGR3X21jaV9jcWVfcHJvYmUo aG9zdCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZHdfbWNpX3J0a19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBkd19t Y2lfZHJ2X2RhdGEgKmRydl9kYXRhOw0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgKm1hdGNoOw0KPiArDQo+ICsgICAgICAgaWYgKCFwZGV2LT5kZXYub2Zfbm9kZSkNCj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPiArDQo+ICsgICAgICAgbWF0Y2ggPSBvZl9t YXRjaF9ub2RlKGR3X21jaV9ydGtfbWF0Y2gsIHBkZXYtPmRldi5vZl9ub2RlKTsNCj4gKyAgICAg ICBkcnZfZGF0YSA9IG1hdGNoLT5kYXRhOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIGR3X21jaV9j cWVfcGx0Zm1fcmVnaXN0ZXIocGRldiwgZHJ2X2RhdGEpOw0KPiArfQ0KPiArDQo+ICtpbnQgZHdf bWNpX3J0a19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKyAg ICAgICBzdHJ1Y3QgZHdfbWNpICpob3N0ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ ICsNCj4gKyAgICAgICBkd19tY2lfY3FlX3JlbW92ZShob3N0KTsNCj4gKyAgICAgICByZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdfbWNpX3J0 a19wbHRmbV9kcml2ZXIgPSB7DQo+ICsgICAgICAgLnByb2JlICAgICAgICAgID0gZHdfbWNpX3J0 a19wcm9iZSwNCj4gKyAgICAgICAucmVtb3ZlICAgICAgICAgPSBkd19tY2lfcnRrX3JlbW92ZSwN Cj4gKyAgICAgICAuZHJpdmVyICAgICAgICAgPSB7DQo+ICsgICAgICAgICAgICAgICAubmFtZSAg ICAgICAgICAgPSAiZHdtbWNfY3FlX3J0ayIsDQo+ICsgICAgICAgICAgICAgICAub2ZfbWF0Y2hf dGFibGUgPSBkd19tY2lfcnRrX21hdGNoLA0KPiArICAgICAgICAgICAgICAgLnBtICAgICAgICAg ICAgID0gJnJ0a19kZXZfcG1fb3BzLA0KPiArICAgICAgIH0sDQo+ICsgICAgICAgLnNodXRkb3du ICAgPSBkd19tY2lfcnRrX3NodXRkb3duLA0KPiArfTsNCj4gKw0KPiArbW9kdWxlX3BsYXRmb3Jt X2RyaXZlcihkd19tY2lfcnRrX3BsdGZtX2RyaXZlcik7DQo+ICsNCj4gK01PRFVMRV9BVVRIT1Io IjxqeWFuY2hvdUByZWFsdGVrLmNvbT4iKTsNCj4gK01PRFVMRV9ERVNDUklQVElPTigiIFNwZWNp ZmljIERyaXZlciBFeHRlbnNpb24iKTsNCj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06ZHdtbWNf Y3FlX3J0ayIpOw0KPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tbWMvaG9zdC9kd19tbWNfY3FlLXJ0ay5oIGIvZHJpdmVycy9tbWMvaG9zdC9kd19tbWNf Y3FlLXJ0ay5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4u Zjc0MzBiNTk3ZjU0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9tbWMvaG9zdC9k d19tbWNfY3FlLXJ0ay5oDQo+IEBAIC0wLDAgKzEsMTYwIEBADQo+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLw0KPiArLyoNCj4gKyAqICBDb3B5cmlnaHQg KEMpIDIwMTMgUmVhbHRlayBTZW1pY29uZHVjdG9ycywgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCj4g KyAqDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX0RXX1JUS19NTUNfQ1FFX0gNCj4gKyNkZWZp bmUgX19EV19SVEtfTU1DX0NRRV9IDQo+ICsNCj4gKyNkZWZpbmUgU0RNTUNfQ1AgICAgICAgICAg ICAgICAgICAgICAgICAgMHg0MWMNCj4gKyNkZWZpbmUgU0RNTUNfT1RIRVIxICAgICAgICAgICAg ICAgICAgICAgMHg0MjANCj4gKyNkZWZpbmUgU0RNTUNfRFVNTVlfU1lTICAgICAgICAgICAgICAg ICAgMHg0MmMNCj4gKyNkZWZpbmUgU0RNTUNfQUhCICAgICAgICAgICAgICAgICAgICAgICAgMHg0 MzANCj4gKyNkZWZpbmUgU0RNTUNfQ0tHRU5fQ1RMICAgICAgICAgICAgICAgICAgMHg0NzgNCj4g KyNkZWZpbmUgU0RNTUNfRFFTX0NUUkwxICAgICAgICAgICAgICAgICAgMHg0OTgNCj4gKyNkZWZp bmUgU0RNTUNfSVBfREVTQzAgICAgICAgICAgICAgICAgICAgMHg0YTANCj4gKyNkZWZpbmUgU0RN TUNfSVBfREVTQzEgICAgICAgICAgICAgICAgICAgMHg0YTQNCj4gKyNkZWZpbmUgU0RNTUNfSVBf REVTQzIgICAgICAgICAgICAgICAgICAgMHg0YTgNCj4gKyNkZWZpbmUgU0RNTUNfSVBfREVTQzMg ICAgICAgICAgICAgICAgICAgMHg0YWMNCj4gKyNkZWZpbmUgU0RNTUNfRFFfQ1RSTF9TRVQgICAg ICAgICAgICAgICAgMHg1MGMNCj4gKyNkZWZpbmUgU0RNTUNfV0RRX0NUUkwwICAgICAgICAgICAg ICAgICAgMHg1MTANCj4gKyNkZWZpbmUgU0RNTUNfV0RRX0NUUkwxICAgICAgICAgICAgICAgICAg MHg1MTQNCj4gKyNkZWZpbmUgU0RNTUNfV0RRX0NUUkwyICAgICAgICAgICAgICAgICAgMHg1MTgN Cj4gKyNkZWZpbmUgU0RNTUNfV0RRX0NUUkwzICAgICAgICAgICAgICAgICAgMHg1MWMNCj4gKyNk ZWZpbmUgU0RNTUNfV0RRX0NUUkw0ICAgICAgICAgICAgICAgICAgMHg1MjANCj4gKyNkZWZpbmUg U0RNTUNfV0RRX0NUUkw1ICAgICAgICAgICAgICAgICAgMHg1MjQNCj4gKyNkZWZpbmUgU0RNTUNf V0RRX0NUUkw2ICAgICAgICAgICAgICAgICAgMHg1MjgNCj4gKyNkZWZpbmUgU0RNTUNfV0RRX0NU Ukw3ICAgICAgICAgICAgICAgICAgMHg1MmMNCj4gKyNkZWZpbmUgU0RNTUNfUkRRX0NUUkwwICAg ICAgICAgICAgICAgICAgMHg1MzANCj4gKyNkZWZpbmUgU0RNTUNfUkRRX0NUUkwxICAgICAgICAg ICAgICAgICAgMHg1MzQNCj4gKyNkZWZpbmUgU0RNTUNfUkRRX0NUUkwyICAgICAgICAgICAgICAg ICAgMHg1MzgNCj4gKyNkZWZpbmUgU0RNTUNfUkRRX0NUUkwzICAgICAgICAgICAgICAgICAgMHg1 M2MNCj4gKyNkZWZpbmUgU0RNTUNfUkRRX0NUUkw0ICAgICAgICAgICAgICAgICAgMHg1NDANCj4g KyNkZWZpbmUgU0RNTUNfUkRRX0NUUkw1ICAgICAgICAgICAgICAgICAgMHg1NDQNCj4gKyNkZWZp bmUgU0RNTUNfUkRRX0NUUkw2ICAgICAgICAgICAgICAgICAgMHg1NDgNCj4gKyNkZWZpbmUgU0RN TUNfUkRRX0NUUkw3ICAgICAgICAgICAgICAgICAgMHg1NGMNCj4gKyNkZWZpbmUgU0RNTUNfQ01E X0NUUkxfU0VUICAgICAgICAgICAgICAgMHg1NTANCj4gKyNkZWZpbmUgU0RNTUNfV0NNRF9DVFJM ICAgICAgICAgICAgICAgICAgMHg1NTQNCj4gKyNkZWZpbmUgU0RNTUNfUkNNRF9DVFJMICAgICAg ICAgICAgICAgICAgMHg1NTgNCj4gKyNkZWZpbmUgU0RNTUNfUExMX1NUQVRVUyAgICAgICAgICAg ICAgICAgMHg1NWMNCj4gKw0KPiArI2RlZmluZSBTRE1NQ19OQU5EX0RNQV9TRUwgICAgICAgICAg ICAgICAweDU0DQo+ICsjZGVmaW5lIFNETU1DX1NSQU1fRE1BX1NFTCAgICAgICAgICAgICAgIEJJ VCgwKQ0KPiArDQo+ICsjZGVmaW5lIFNETU1DX0NMS19PX0lDR19FTiAgICAgICAgICAgICAgIEJJ VCgzKQ0KPiArI2RlZmluZSBTRE1NQ19DQVJEX1NUT1BfRU5BQkxFICAgICAgICAgICBCSVQoMjMp DQo+ICsjZGVmaW5lIFNETU1DX1NUQVJLX0NBUkRfU1RPUF9FTkFCTEUgICAgIEJJVCgxMSkNCj4g KyNkZWZpbmUgU0RNTUNfVE9QX1JTVF9OX0ZJRk8gICAgICAgICAgICAgQklUKDMpDQo+ICsNCj4g KyNkZWZpbmUgU0RNTUNfRldfU0VUICAgICAgICAgICAgICAgICAgICAgQklUKDcpDQo+ICsjZGVm aW5lIFNETU1DX0ZXX1NFVF9DTURfVyAgICAgICAgICAgICAgIEJJVCgwKQ0KPiArDQo+ICsjZGVm aW5lIFNETU1DX0NMSzRNICAgICAgICAgICAgICAgICAgICAgICgoQklUKDApfEJJVCgxKXxCSVQo MikpPDxFTU1DX0NSQ19DTEtfQ0hBTkdFX1NISUZUKQ0KPiArI2RlZmluZSBTRE1NQ19DUkNfQ0xL X0RJViAgICAgICAgICAgICAgICAoQklUKDApfEJJVCgxKXxCSVQoMil8QklUKDMpfEJJVCg0KXxC SVQoNSl8QklUKDYpfEJJVCg3KSkNCj4gKyNkZWZpbmUgU0RNTUNfQ1JDX0NMS19ESVZfTUFTSyAg ICAgICAgICAgKH5TRE1NQ19DUkNfQ0xLX0RJVikNCj4gKyNkZWZpbmUgU0RNTUNfQ1JDX0NMS19E SVZfRU4gICAgICAgICAgICAgQklUKDgpDQo+ICsjZGVmaW5lIFNETU1DX0NMS19JTlZfRElWX1NF TCAgICAgICAgICAgIEJJVCg5KQ0KPiArI2RlZmluZSBTRE1NQ19TU0NfQ0xLX0RJVl9TRUwgICAg ICAgICAgICAoQklUKDE5KXxCSVQoMjApKQ0KPiArDQo+ICsjZGVmaW5lIFNETU1DX0NMS19ESVY1 MTIgICAgICAgICAgICAgICAoMHgyMDApDQo+ICsjZGVmaW5lIFNETU1DX0NMS19ESVY0ICAgICAg ICAgICAgICAgICAoMHg0KQ0KPiArI2RlZmluZSBTRE1NQ19DTEtfRElWMSAgICAgICAgICAgICAg ICAgKDB4MSkNCj4gKyNkZWZpbmUgU0RNTUNfSU5URVJOQUxfQ0xLX01TSyAgICAgICAgICgweDMp DQo+ICsNCj4gKy8qMHgyQyBDTEtfQ1RSTF9SKi8NCj4gKyNkZWZpbmUgU0RNTUNfSU5URVJOQUxf Q0xLX1NUQUJMRSAgICAgIEJJVCgxKQ0KPiArI2RlZmluZSBTRE1NQ19JTlRFUk5BTF9DTEtfRU4g ICAgICAgICAgQklUKDApDQo+ICsNCj4gKy8qMHgyZiBTV19SU1RfUiovDQo+ICsjZGVmaW5lIFNE TU1DX1JTVF9EQVQgICAgICAgICAgICAgICAgICBCSVQoMikNCj4gKyNkZWZpbmUgU0RNTUNfUlNU X0NNRCAgICAgICAgICAgICAgICAgIEJJVCgxKQ0KPiArDQo+ICsvKjB4NDIwIE9USEVSMSovDQo+ ICsjZGVmaW5lIFNETU1DX0RCVVNfTUFTX0dBVElOR19ESVMgICAgICBCSVQoMTMpDQo+ICsjZGVm aW5lIFNETU1DX0RRU19DVFJMX0dBVEVfRElTICAgICAgICAgICAgICAgIEJJVCgxMikNCj4gKyNk ZWZpbmUgU0RNTUNfQ0xLX0RJVl9SU1QgICAgICAgICAgICAgIEJJVCgxMCkNCj4gKyNkZWZpbmUg U0RNTUNfTDRfR0FURURfRElTMSAgICAgICAgICAgIEJJVCgyKQ0KPiArI2RlZmluZSBTRE1NQ19M NF9HQVRFRF9ESVMgICAgICAgICAgICAgQklUKDApDQo+ICsNCj4gKy8qMHg0MzAgKi8NCj4gKyNk ZWZpbmUgU0RNTUNfQUhCX0JJRyAgICAgICAgICAgICAgICAgIEJJVCgyKQ0KPiArDQo+ICsvKjB4 NDc4ICovDQo+ICsjZGVmaW5lIFNETU1DX0NMS19ESVZfU0VMICAgICAgICAgICAgICBCSVQoMjAp DQo+ICsNCj4gKy8qMHg0OTggKi8NCj4gKyNkZWZpbmUgU0RNTUNfRldfRU4gICAgICAgICAgICAg ICAgICAgIEJJVCg4KQ0KPiArDQo+ICsvKjB4NTU0ICovDQo+ICsjZGVmaW5lIFNETU1DX0ZXX1NF VF9FTiAgICAgICAgICAgICAgICAgICAgICAgIEJJVCg3KQ0KPiArDQo+ICtzdHJ1Y3QgYmFja3Vw UmVncyB7DQo+ICsgICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgc2RtYXNhX3I7ICAgICAg ICAgICAgICAgLyoweDAwMCovDQo+ICsgICAgICAgdTE2ICAgICAgICAgICAgICAgICAgICAgYmxv Y2tzaXplX3I7ICAgICAgICAgICAgLyoweDAwNCovDQo+ICsgICAgICAgdTE2ICAgICAgICAgICAg ICAgICAgICAgYmxvY2tjb3VudF9yOyAgICAgICAgICAgLyoweDAwNiovDQo+ICsgICAgICAgdTE2 ICAgICAgICAgICAgICAgICAgICAgeGZlcl9tb2RlX3I7ICAgICAgICAgICAgLyoweDAwYyovDQo+ ICsgICAgICAgdTggICAgICAgICAgICAgICAgICAgICAgaG9zdF9jdHJsMV9yOyAgICAgICAgICAg LyoweDAyOCovDQo+ICsgICAgICAgdTggICAgICAgICAgICAgICAgICAgICAgcHdyX2N0cmxfcjsg ICAgICAgICAgICAgLyoweDAyOSovDQo+ICsgICAgICAgdTggICAgICAgICAgICAgICAgICAgICAg YmdhcF9jdHJsX3I7ICAgICAgICAgICAgLyoweDAyYSovDQo+ICsgICAgICAgdTE2ICAgICAgICAg ICAgICAgICAgICAgY2xrX2N0cmxfcjsgICAgICAgICAgICAgLyoweDAyYyovDQo+ICsgICAgICAg dTggICAgICAgICAgICAgICAgICAgICAgdG91dF9jdHJsX3I7ICAgICAgICAgICAgLyoweDAyZSov DQo+ICsNCj4gKyAgICAgICB1MTYgICAgICAgICAgICAgICAgICAgICBub3JtYWxfaW50X3N0YXRf ZW5fcjsgICAvKjB4MDM0Ki8NCj4gKyAgICAgICB1MTYgICAgICAgICAgICAgICAgICAgICBlcnJv cl9pbnRfc3RhdF9lbl9yOyAgICAvKjB4MDM2Ki8NCj4gKyAgICAgICB1MTYgICAgICAgICAgICAg ICAgICAgICBub3JtYWxfaW50X3NpZ25hbF9lbl9yOyAvKjB4MDM4Ki8NCj4gKyAgICAgICB1MTYg ICAgICAgICAgICAgICAgICAgICBlcnJvcl9pbnRfc2lnbmFsX2VuX3I7ICAvKjB4MDNhKi8NCj4g KyAgICAgICB1MTYgICAgICAgICAgICAgICAgICAgICBhdXRvX2NtZF9zdGF0X3I7ICAgICAgICAv KjB4MDNjKi8NCj4gKyAgICAgICB1MTYgICAgICAgICAgICAgICAgICAgICBob3N0X2N0cmwyX3I7 ICAgICAgICAgICAvKjB4MDNlKi8NCj4gKyAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICBh ZG1hX3NhX2xvd19yOyAgICAgICAgICAvKjB4MDU4Ki8NCj4gKyAgICAgICB1OCAgICAgICAgICAg ICAgICAgICAgICBtc2hjX2N0cmxfcjsgICAgICAgICAgICAvKjB4MjA4Ki8NCj4gKyAgICAgICB1 OCAgICAgICAgICAgICAgICAgICAgICBjdHJsX3I7ICAgICAgICAgICAgICAgICAvKjB4MjJjKi8N Cj4gKyAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICBvdGhlcjE7ICAgICAgICAgICAgICAg ICAvKjB4NDIwKi8NCj4gKyAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICBkdW1teV9zeXM7 ICAgICAgICAgICAgICAvKjB4NDJjKi8NCj4gKyAgICAgICB1MzIgICAgICAgICAgICAgICAgICAg ICBkcXNfY3RybDE7ICAgICAgICAgICAgICAvKjB4NDk4Ki8NCj4gKyAgICAgICB1MzIgICAgICAg ICAgICAgICAgICAgICB3Y21kX2N0cmw7ICAgICAgICAgICAgICAvKjB4NTU0Ki8NCj4gKw0KPiAr ICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHJkcV9jdHJsMDsgICAgICAgICAgICAgIC8q MHg1MzAqLw0KPiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHJkcV9jdHJsMTsgICAg ICAgICAgICAgIC8qMHg1MzQqLw0KPiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHJk cV9jdHJsMjsgICAgICAgICAgICAgIC8qMHg1MzgqLw0KPiArICAgICAgIHUzMiAgICAgICAgICAg ICAgICAgICAgIHJkcV9jdHJsMzsgICAgICAgICAgICAgIC8qMHg1M2MqLw0KPiArICAgICAgIHUz MiAgICAgICAgICAgICAgICAgICAgIHJkcV9jdHJsNDsgICAgICAgICAgICAgIC8qMHg1NDAqLw0K PiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHJkcV9jdHJsNTsgICAgICAgICAgICAg IC8qMHg1NDQqLw0KPiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHJkcV9jdHJsNjsg ICAgICAgICAgICAgIC8qMHg1NDgqLw0KPiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAg IHJkcV9jdHJsNzsgICAgICAgICAgICAgIC8qMHg1NGMqLw0KPiArICAgICAgIHUzMiAgICAgICAg ICAgICAgICAgICAgIGRxX2N0cmxfc2V0OyAgICAgICAgICAgIC8qMHg1MGMqLw0KPiArICAgICAg IHUzMiAgICAgICAgICAgICAgICAgICAgIGFoYjsNCj4gKyAgICAgICB1MzIgICAgICAgICAgICAg ICAgICAgICBja2dlbl9jdGw7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZHdfbWNpX3J0a2VtbWNf aG9zdCB7DQo+ICsgICAgICAgc3RydWN0IHBpbmN0cmwgICAgICAgICAgKnBpbmN0cmw7DQo+ICsg ICAgICAgc3RydWN0IHBpbmN0cmxfc3RhdGUgICAgKnBpbnNfZGVmYXVsdDsNCj4gKyAgICAgICBz dHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAqcGluc19zZHI1MDsNCj4gKyAgICAgICBzdHJ1Y3QgcGlu Y3RybF9zdGF0ZSAgICAqcGluc19kZHI1MDsNCj4gKyAgICAgICBzdHJ1Y3QgcGluY3RybF9zdGF0 ZSAgICAqcGluc19oczIwMDsNCj4gKyAgICAgICBzdHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAqcGlu c19oczQwMDsNCj4gKyAgICAgICBzdHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAqcGluc190dW5lMDsN Cj4gKyAgICAgICBzdHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAqcGluc190dW5lMTsNCj4gKyAgICAg ICBzdHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAqcGluc190dW5lMjsNCj4gKyAgICAgICBzdHJ1Y3Qg cGluY3RybF9zdGF0ZSAgICAqcGluc190dW5lMzsNCj4gKyAgICAgICBzdHJ1Y3QgcGluY3RybF9z dGF0ZSAgICAqcGluc190dW5lNDsNCj4gKyAgICAgICBzdHJ1Y3QgcmVnbWFwICAgICAgICAgICAq bTJ0bXg7DQo+ICsgICAgICAgc3RydWN0IGNsayAgICAgICAgICAgICAgKnZwMDsNCj4gKyAgICAg ICBzdHJ1Y3QgY2xrICAgICAgICAgICAgICAqdnAxOw0KPiArICAgICAgIHN0cnVjdCBiYWNrdXBS ZWdzICAgICAgIGdSZWdUYmw7DQo+ICsgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZW1t Y19tb2RlOw0KPiArICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHJkcV9jdHJsOw0KPiAr ICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGlzX2NxZTsNCj4gK307DQo+ICsNCj4gK2lu dCBtbWNfY21kcV9lbmFibGUoc3RydWN0IG1tY19jYXJkICpjYXJkKTsNCj4gK2ludCBtbWNfY21k cV9kaXNhYmxlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCk7DQo+ICtpbnQgbW1jX3N3aXRjaChzdHJ1 Y3QgbW1jX2NhcmQgKmNhcmQsIHU4IHNldCwgdTggaW5kZXgsIHU4IHZhbHVlLA0KPiArICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMpOw0KPiAraW50IG1tY19od19yZXNldChz dHJ1Y3QgbW1jX2hvc3QgKmhvc3QpOw0KPiAraW50IF9fbW1jX2NsYWltX2hvc3Qoc3RydWN0IG1t Y19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX2N0eCAqY3R4LA0KPiArICAgICAgICAgICAgICAgICAg ICBhdG9taWNfdCAqYWJvcnQpOw0KPiArdm9pZCBtbWNfcmVsZWFzZV9ob3N0KHN0cnVjdCBtbWNf aG9zdCAqaG9zdCk7DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMv aG9zdC9kd19tbWNfY3FlLmMgYi9kcml2ZXJzL21tYy9ob3N0L2R3X21tY19jcWUuYw0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQyNTk0MjU3MTQ5OQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbW1jL2hvc3QvZHdfbW1jX2NxZS5jDQo+IEBA IC0wLDAgKzEsMTYzMyBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b3ItbGF0ZXINCj4gKy8qDQo+ICsgKiBTeW5vcHN5cyBEZXNpZ25XYXJlIE11bHRpbWVkaWEgQ2Fy ZCBJbnRlcmZhY2UgZHJpdmVyIHdpdGggQ01EUSBzdXBwb3J0DQo+ICsgKiAgKEJhc2VkIG9uIFN5 bm9wc3lzIERlc2lnbldhcmUgTXVsdGltZWRpYSBDYXJkIEludGVyZmFjZSBkcml2ZXIpDQo+ICsg Kg0KPiArICogQ29weXJpZ2h0IChjKSAyMDIzIFJlYWx0ZWsgU2VtaWNvbmR1Y3RvciBDb3JwDQo+ ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L2Jsa2Rldi5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L2RlYnVnZnMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiArI2luY2x1ZGUg PGxpbnV4L2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvZXJyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L21tYy9jYXJkLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW1jL2hv c3QuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tbWMvbW1jLmg+DQo+ICsjaW5jbHVkZSA8bGludXgv bW1jL3NkLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW1jL3NkaW8uaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9tbWMvc2xvdC1ncGlvLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcG1f cnVudGltZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc3RhdC5oPg0K PiArDQo+ICsjaW5jbHVkZSAiZHdfbW1jX2NxZS5oIg0KPiArI2luY2x1ZGUgImNxaGNpLmgiDQo+ ICsNCj4gKyNkZWZpbmUgRFdfTUNJX0ZSRVFfTUFYICAgICAgICAyMDAwMDAwMDAgICAgICAgLyog dW5pdDogSFogKi8NCj4gKyNkZWZpbmUgRFdfTUNJX0ZSRVFfTUlOICAgICAgICAxMDAwMDAgICAg ICAgICAgLyogdW5pdDogSFogKi8NCj4gKyNkZWZpbmUgRFdfTUNJX0NNRFFfRElTQUJMRUQgICAw eDMwZjAwMDENCj4gKyNkZWZpbmUgRFdfTUNJX0NNRFFfRU5BQkxFRCAgICAweDMwZjAxMDENCj4g KyNkZWZpbmUgRFdfTUNJX1BPV0VST0ZGICAgICAgICAgICAgICAgIDB4MzIyMDMwMQ0KPiArI2Rl ZmluZSBEV19NQ0lfREVTQ19MRU4gICAgICAgICAgICAgICAgMHgxMDAwMDANCj4gKyNkZWZpbmUg RFdfTUNJX01BWF9TQ1JJUFRfQkxLICAxMjgNCj4gKyNkZWZpbmUgRFdfTUNJX1RJTUVPVVRfTXMg ICAgICAyMDANCj4gKyNkZWZpbmUgRFdfTUNJX1RJTUVPVVQgICAgICAgICAyMDAwMDANCj4gKyNk ZWZpbmUgVFVOSU5HX0VSUiAgICAgICAgICAgICA1MzENCj4gKyNkZWZpbmUgRFdfTUNJX05PVF9S RUFEWSAgICAgICA5OTk5DQo+ICsNCj4gK0RFQ0xBUkVfQ09NUExFVElPTihkd19tY2lfd2FpdCk7 DQo+ICsNCj4gKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykNCj4gK3N0YXRpYyBpbnQgZHdf bWNpX2NxZV9yZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpDQo+ICt7DQo+ICsg ICAgICAgc3RydWN0IGR3X21jaV9zbG90ICpzbG90ID0gcy0+cHJpdmF0ZTsNCj4gKyAgICAgICBz dHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycTsNCj4gKyAgICAgICBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNt ZDsNCj4gKyAgICAgICBzdHJ1Y3QgbW1jX2NvbW1hbmQgKnN0b3A7DQo+ICsgICAgICAgc3RydWN0 IG1tY19kYXRhICpkYXRhOw0KPiArDQo+ICsgICAgICAgLyogTWFrZSBzdXJlIHdlIGdldCBhIGNv bnNpc3RlbnQgc25hcHNob3QgKi8NCj4gKyAgICAgICBzcGluX2xvY2tfYmgoJnNsb3QtPmhvc3Qt PmxvY2spOw0KPiArICAgICAgIG1ycSA9IHNsb3QtPm1ycTsNCj4gKw0KPiArICAgICAgIGlmICht cnEpIHsNCj4gKyAgICAgICAgICAgICAgIGNtZCA9IG1ycS0+Y21kOw0KPiArICAgICAgICAgICAg ICAgZGF0YSA9IG1ycS0+ZGF0YTsNCj4gKyAgICAgICAgICAgICAgIHN0b3AgPSBtcnEtPnN0b3A7 DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChjbWQpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHNlcV9wcmludGYocywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Q01EJXUoMHgleCkgZmxnICV4IHJzcCAleCAleCAleCAleCBlcnIgJWRcbiIsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kLT5vcGNvZGUsIGNtZC0+YXJnLCBjbWQtPmZs YWdzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZC0+cmVzcFswXSwg Y21kLT5yZXNwWzFdLCBjbWQtPnJlc3BbMl0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY21kLT5yZXNwWzJdLCBjbWQtPmVycm9yKTsNCj4gKyAgICAgICAgICAgICAgIGlm IChkYXRhKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBzZXFfcHJpbnRmKHMsICJEQVRBICV1 IC8gJXUgKiAldSBmbGcgJXggZXJyICVkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGEtPmJ5dGVzX3hmZXJlZCwgZGF0YS0+YmxvY2tzLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmJsa3N6LCBkYXRhLT5mbGFncywgZGF0YS0+ ZXJyb3IpOw0KPiArICAgICAgICAgICAgICAgaWYgKHN0b3ApDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHNlcV9wcmludGYocywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ01EJXUoMHgleCkgZmxnICV4IHJzcCAleCAleCAleCAleCBlcnIgJWRcbiIsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC0+b3Bjb2RlLCBzdG9wLT5hcmcsIHN0 b3AtPmZsYWdzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AtPnJl c3BbMF0sIHN0b3AtPnJlc3BbMV0sIHN0b3AtPnJlc3BbMl0sDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RvcC0+cmVzcFsyXSwgc3RvcC0+ZXJyb3IpOw0KPiArICAgICAg IH0NCj4gKw0KPiArICAgICAgIHNwaW5fdW5sb2NrX2JoKCZzbG90LT5ob3N0LT5sb2NrKTsNCj4g Kw0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArREVGSU5FX1NIT1dfQVRUUklCVVRFKGR3 X21jaV9jcWVfcmVxKTsNCj4gKyNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgKi8N Cj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfY3FlX3JlZ3Nfc2hvdyhzdHJ1Y3QgZHdfbWNpICpo b3N0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbWNfY29tbWFu ZCAqY21kLCB1MzIgY21kX2ZsYWdzKQ0KPiArew0KPiArICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2 LCAib3Bjb2RlID0gJWQsIGFyZyA9IDB4JXgsIGNtZGZsYWdzID0gMHgleFxuIiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQtPm9wY29kZSwgY21kLT5hcmcsIGNtZF9mbGFn cyk7DQo+ICsgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJzdGF0dXNfaW50ID0gMHgleFxuIiwg aG9zdC0+bm9ybWFsX2ludGVycnVwdCk7DQo+ICsgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJl cnJvcl9pbnQgPSAweCV4XG4iLCBob3N0LT5lcnJvcl9pbnRlcnJ1cHQpOw0KPiArICAgICAgIGRl dl9lcnIoaG9zdC0+ZGV2LCAiYXV0b19lcnJvcl9pbnQgPSAweCV4XG4iLCBob3N0LT5hdXRvX2Vy cm9yX2ludGVycnVwdCk7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiAr c3RhdGljIHZvaWQgZHdfbWNpX2NxZV9kdW1wcmVncyhzdHJ1Y3QgbW1jX2hvc3QgKm1tYykNCj4g K3sNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNsb3QgPSBtbWNfcHJpdihtbWMpOw0K PiArICAgICAgIHN0cnVjdCBkd19tY2kgKmhvc3QgPSBzbG90LT5ob3N0Ow0KPiArDQo+ICsgICAg ICAgZGV2X2luZm8oaG9zdC0+ZGV2LCAiJXM6IGNtZCBpZHggMHglMDh4XG4iLCBfX2Z1bmNfXywg bWNxX3JlYWR3KGhvc3QsIENNRF9SKSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21j aV9jcWVfc2V0X3RyYW5fZGVzYyh1OCAqZGVzYywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgYWRkciwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBsZW4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGVuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgZG1hNjQpDQo+ICt7DQo+ICsgICAgICAgX19sZTMyICphdHRyID0gKF9f bGUzMiBfX2ZvcmNlICopZGVzYzsNCj4gKw0KPiArICAgICAgICphdHRyID0gKENRSENJX1ZBTElE KDEpIHwNCj4gKyAgICAgICAgICAgICAgICBDUUhDSV9FTkQoZW5kID8gMSA6IDApIHwNCj4gKyAg ICAgICAgICAgICAgICBDUUhDSV9JTlQoMCkgfA0KPiArICAgICAgICAgICAgICAgIENRSENJX0FD VCgweDQpIHwNCj4gKyAgICAgICAgICAgICAgICBDUUhDSV9EQVRfTEVOR1RIKGxlbikpOw0KPiAr DQo+ICsgICAgICAgaWYgKGRtYTY0KSB7DQo+ICsgICAgICAgICAgICAgICBfX2xlNjQgKmRhdGFk ZHIgPSAoX19sZTY0IF9fZm9yY2UgKikoZGVzYyArIDQpOw0KPiArDQo+ICsgICAgICAgICAgICAg ICBkYXRhZGRyWzBdID0gY3B1X3RvX2xlNjQoYWRkcik7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4g KyAgICAgICAgICAgICAgIF9fbGUzMiAqZGF0YWRkciA9IChfX2xlMzIgX19mb3JjZSAqKShkZXNj ICsgNCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGRhdGFkZHJbMF0gPSBjcHVfdG9fbGUzMihh ZGRyKTsNCj4gKyAgICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9jcWVf c2V0dXBfdHJhbl9kZXNjKHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3FoY2lfaG9zdCAqY3FfaG9zdCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqZGVzYywNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2dfY291bnQpDQo+ICt7DQo+ICsgICAg ICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsNCj4gKyAgICAgICB1MzIgY3VyX2Jsa19jbnQsIHJl bWFpbl9ibGtfY250Ow0KPiArICAgICAgIHVuc2lnbmVkIGludCBiZWdpbiwgZW5kOw0KPiArICAg ICAgIGludCBpLCBsZW47DQo+ICsgICAgICAgYm9vbCBsYXN0ID0gZmFsc2U7DQo+ICsgICAgICAg Ym9vbCBkbWE2NCA9IGNxX2hvc3QtPmRtYTY0Ow0KPiArICAgICAgIGRtYV9hZGRyX3QgYWRkcjsN Cj4gKw0KPiArICAgICAgIGZvcl9lYWNoX3NnKGRhdGEtPnNnLCBzZywgc2dfY291bnQsIGkpIHsN Cj4gKyAgICAgICAgICAgICAgIGFkZHIgPSBzZ19kbWFfYWRkcmVzcyhzZyk7DQo+ICsgICAgICAg ICAgICAgICBsZW4gPSBzZ19kbWFfbGVuKHNnKTsNCj4gKyAgICAgICAgICAgICAgIHJlbWFpbl9i bGtfY250ICA9IGxlbiA+PiA5Ow0KPiArDQo+ICsgICAgICAgICAgICAgICB3aGlsZSAocmVtYWlu X2Jsa19jbnQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLypEV19NQ0lfTUFYX1NDUklQ VF9CTEsgaXMgdGhhIG1heCBmb3IgZWFjaCBkZXNjcmlwdG9yIHJlY29yZCovDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlmIChyZW1haW5fYmxrX2NudCA+IERXX01DSV9NQVhfU0NSSVBUX0JM SykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfYmxrX2NudCA9IERXX01D SV9NQVhfU0NSSVBUX0JMSzsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9ibGtfY250ID0gcmVtYWluX2Jsa19jbnQ7 DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogSW4gU3lub3BzeXMgRGVzaWduV2Fy ZSBEYXRhYm9vayBQYWdlIDg0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGV5IG1l bnRpb25lZCB0aGUgRE1BIDEyOE1CIHJlc3RyaWN0aW9uDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGFkZHIgLyBTWl8xMjhN Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSAoYWRkciArIGN1cl9ibGtfY250ICog U1pfNTEyKSAvIFNaXzEyOE07DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJl Z2luICE9IGVuZCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfYmxrX2Nu dCA9IChlbmQgKiBTWl8xMjhNIC0gYWRkcikgLyBTWl81MTI7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKChpKzEpID09IHNnX2NvdW50ICYmIChyZW1haW5fYmxrX2NudCA9PSBj dXJfYmxrX2NudCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHRy dWU7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZHdfbWNpX2NxZV9zZXRfdHJhbl9k ZXNjKGRlc2MsIGFkZHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY3VyX2Jsa19jbnQgPDwgOSksIGxhc3QsIGRtYTY0KTsNCj4gKw0KPiArICAgICAgICAgICAg ICAgICAgICAgICBhZGRyID0gYWRkciArIChjdXJfYmxrX2NudCA8PCA5KTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmVtYWluX2Jsa19jbnQgLT0gY3VyX2Jsa19jbnQ7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGRlc2MgKz0gY3FfaG9zdC0+dHJhbnNfZGVzY19sZW47DQo+ICsgICAg ICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19t Y2lfY3FlX2VuYWJsZShzdHJ1Y3QgbW1jX2hvc3QgKm1tYykNCj4gK3sNCj4gKyAgICAgICBzdHJ1 Y3QgZHdfbWNpX3Nsb3QgKnNsb3QgPSBtbWNfcHJpdihtbWMpOw0KPiArICAgICAgIHN0cnVjdCBk d19tY2kgKmhvc3QgPSBzbG90LT5ob3N0Ow0KPiArDQo+ICsgICAgICAgLypjbGVhciBkYXRhIHBh dGggU1dfUlNUX1IuU1dfUlNUX0RBVCA9IDEqLw0KPiArICAgICAgIG1jcV93cml0ZWIoaG9zdCwg U1dfUlNUX1IsIFNETU1DX1JTVF9EQVQpOw0KPiArICAgICAgIC8qMHg5ODAxMjAwYyovDQo+ICsg ICAgICAgbWNxX3dyaXRldyhob3N0LCBYRkVSX01PREVfUiwNCj4gKyAgICAgICAgICAgICAgICgo MSA8PCBTRE1NQ19NVUxUSV9CTEtfU0VMKSB8IFNETU1DX0JMT0NLX0NPVU5UX0VOQUJMRSB8IFNE TU1DX0RNQV9FTkFCTEUpKTsNCj4gKw0KPiArICAgICAgIC8qU2V0IERNQV9TRUwgdG8gQURNQTIg b25seSBtb2RlIGluIHRoZSBIT1NUX0NUUkwxX1IqLw0KPiArICAgICAgIG1jcV93cml0ZWIoaG9z dCwgSE9TVF9DVFJMMV9SLA0KPiArICAgICAgICAgICAgICAgKG1jcV9yZWFkYihob3N0LCBIT1NU X0NUUkwxX1IpICYgMHhlNykgfCAoU0RNTUNfQURNQTJfMzIgPDwgU0RNTUNfRE1BX1NFTCkpOw0K PiArICAgICAgIG1jcV93cml0ZXcoaG9zdCwgQkxPQ0tTSVpFX1IsIDB4MjAwKTsNCj4gKyAgICAg ICBtY3Ffd3JpdGV3KGhvc3QsIEJMT0NLQ09VTlRfUiwgMCk7DQo+ICsNCj4gKyAgICAgICAvKlNl dCBTRE1BU0FfUiAod2hpbGUgdXNpbmcgMzIgYml0cykgdG8gMCovDQo+ICsgICAgICAgbWNxX3dy aXRlbChob3N0LCBTRE1BU0FfUiwgMCk7DQo+ICsgICAgICAgLyp3ZSBzZXQgdGhpcyByZWdpc3Rl ciBhZGRpdGlvbmFsbHkgdG8gZW5oYW5jZSB0aGUgSU8gcGVyb2ZybWFuY2UqLw0KPiArDQo+ICsg ICAgICAgY3FoY2lfd3JpdGVsKGhvc3QtPmNxZSwgMHgxMCwgQ1FIQ0lfU1NDMSk7DQo+ICsgICAg ICAgY3FoY2lfd3JpdGVsKGhvc3QtPmNxZSwgMCwgQ1FIQ0lfQ1RMKTsNCj4gKw0KPiArICAgICAg IGlmIChjcWhjaV9yZWFkbChob3N0LT5jcWUsIENRSENJX0NUTCkgJiYgQ1FIQ0lfSEFMVCkgew0K PiArICAgICAgICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICIlczogY3FoY2k6IENRRSBmYWls ZWQgdG8gZXhpdCBoYWx0IHN0YXRlXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBtbWNf aG9zdG5hbWUobW1jKSk7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgLypjbWRxIGludGVy cnVwdCBtb2RlKi8NCj4gKyAgICAgICBkd19tY2lfY2xyX3NpZ25hbF9pbnQoaG9zdCk7DQo+ICsg ICAgICAgZHdfbWNpX2VuX2NxZV9pbnQoaG9zdCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgY3FoY2lfaG9zdF9vcHMgZHdfbWNpX2NxaGNpX2hvc3Rfb3BzID0gew0KPiArICAg ICAgIC5lbmFibGUgPSBkd19tY2lfY3FlX2VuYWJsZSwNCj4gKyAgICAgICAuZHVtcHJlZ3MgPSBk d19tY2lfY3FlX2R1bXByZWdzLA0KPiArICAgICAgIC5zZXR1cF90cmFuX2Rlc2MgPSBkd19tY2lf Y3FlX3NldHVwX3RyYW5fZGVzYywNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9j cWVfcmVzZXQoc3RydWN0IGR3X21jaSAqaG9zdCkNCj4gK3sNCj4gKyAgICAgICBpbnQgcmV0Ow0K PiArICAgICAgIHUzMiBzdGF0dXM7DQo+ICsgICAgICAgLypjaGVjayB0aGUgY21kIGxpbmUqLw0K PiArICAgICAgIGlmIChtY3FfcmVhZHcoaG9zdCwgRVJST1JfSU5UX1NUQVRfUikgJiBTRE1NQ19D TURfRVJSKSB7DQo+ICsgICAgICAgICAgICAgICAvKlBlcmZvcm0gYSBzb2Z0d2FyZSByZXNldCov DQo+ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGViKGhvc3QsIFNXX1JTVF9SLCBTRE1NQ19SU1Rf Q01EKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGhv c3QtPnJlZ3MgKyBTRE1NQ19DTEtfQ1RSTF9SLCBzdGF0dXMsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIChzdGF0dXMgJiBTV19SU1RfQ01EX0RPTkUpID09IDB4MCwgMTAsIERXX01DSV9USU1F T1VUKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAiVGltZW91dCByZXNldHRpbmcgQ01EIGxpbmVcbiIpOw0K PiArICAgICAgIH0NCj4gKyAgICAgICAvKmNoZWNrIGRhdGEgbGluZSovDQo+ICsgICAgICAgaWYg KG1jcV9yZWFkdyhob3N0LCBFUlJPUl9JTlRfU1RBVF9SKSAmIFNETU1DX0RBVEFfRVJSKSB7DQo+ ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGViKGhvc3QsIFNXX1JTVF9SLCBTRE1NQ19SU1RfREFU KTsNCj4gKw0KPiArICAgICAgICAgICAgICAgcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGhvc3Qt PnJlZ3MgKyBTRE1NQ19DTEtfQ1RSTF9SLCBzdGF0dXMsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIChzdGF0dXMgJiBTV19SU1RfREFUQV9ET05FKSA9PSAweDAsIDEwLCBEV19NQ0lfVElNRU9V VCk7DQo+ICsgICAgICAgICAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGhvc3QtPmRldiwgIlRpbWVvdXQgcmVzZXR0aW5nIERBVEEgbGluZVxuIik7DQo+ ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19tY2lfY3FlX3JlYWRfcnNw KHN0cnVjdCBkd19tY2kgKmhvc3QsIHN0cnVjdCBtbWNfY29tbWFuZCAqY21kLCB1MzIgKnJzcCkN Cj4gK3sNCj4gKyAgICAgICBpZiAoY21kLT5mbGFncyAmIE1NQ19SU1BfUFJFU0VOVCkgew0KPiAr ICAgICAgICAgICAgICAgaWYgKGNtZC0+ZmxhZ3MgJiBNTUNfUlNQXzEzNikgew0KPiArICAgICAg ICAgICAgICAgICAgICAgICAvKlIyIGxvbmcgcmVzcG9uc2UqLw0KPiArICAgICAgICAgICAgICAg ICAgICAgICB1MzIgcnNwX3RtcFs0XTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICBy c3BfdG1wWzNdID0gbWNxX3JlYWRsKGhvc3QsIFJFU1AwMV9SKTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcnNwX3RtcFsyXSA9IG1jcV9yZWFkbChob3N0LCBSRVNQMjNfUik7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJzcF90bXBbMV0gPSBtY3FfcmVhZGwoaG9zdCwgUkVTUDQ1X1Ip Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICByc3BfdG1wWzBdID0gbWNxX3JlYWRsKGhvc3Qs IFJFU1A2N19SKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAvKiBkd19tbWNfZGF0 YWJvb2sgc2hpZnQgUmVzcG9uc2UgZmllbGQgdG8gMDggLSAxMzkgYml0cyovDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJzcFszXSA9IChyc3BfdG1wWzNdICYgMHgwMGZmZmZmZikgPDwgODsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcnNwWzJdID0gKChyc3BfdG1wWzJdICYgMHgwMGZm ZmZmZikgPDwgOCkgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocnNwX3Rt cFszXSAmIDB4ZmYwMDAwMDApID4+IDI0KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcnNw WzFdID0gKChyc3BfdG1wWzFdICYgMHgwMGZmZmZmZikgPDwgOCkgfA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgocnNwX3RtcFsyXSAmIDB4ZmYwMDAwMDApID4+IDI0KTsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcnNwWzBdID0gKChyc3BfdG1wWzBdICYgMHgwMGZmZmZm ZikgPDwgOCkgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocnNwX3RtcFsx XSAmIDB4ZmYwMDAwMDApID4+IDI0KTsNCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIC8qU2hvcnQgcmVzcG9uc2UqLw0KPiArICAgICAgICAgICAg ICAgICAgICAgICByc3BbMF0gPSByc3BbMV0gPSByc3BbMl0gPSByc3BbM10gPSAwOw0KPiArICAg ICAgICAgICAgICAgICAgICAgICByc3BbMF0gPSBtY3FfcmVhZGwoaG9zdCwgUkVTUDAxX1IpOw0K PiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIHUz MiBkd19tY2lfY3FlX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgc3RydWN0 IG1tY19jb21tYW5kICpjbWQpDQo+ICt7DQo+ICsgICAgICAgdTMyIGNtZHI7DQo+ICsNCj4gKyAg ICAgICBjbWQtPmVycm9yID0gLUVJTlBST0dSRVNTOw0KPiArICAgICAgIGNtZHIgPSAoY21kLT5v cGNvZGUgPDwgOCk7DQo+ICsNCj4gKyAgICAgICBpZiAoY21kLT5mbGFncyAmIE1NQ19SU1BfUFJF U0VOVCkgew0KPiArICAgICAgICAgICAgICAgaWYgKGNtZC0+ZmxhZ3MgJiBNTUNfUlNQXzEzNikN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgY21kciB8PSBTRE1NQ19SRVNQX0xFTl8xMzY7DQo+ ICsgICAgICAgICAgICAgICBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNt ZC0+ZmxhZ3MgJiBNTUNfUlNQX0JVU1kpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY21kciB8PSBTRE1NQ19SRVNQX0xFTl80OEI7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRyIHw9IFNETU1DX1JF U1BfTEVOXzQ4Ow0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAg ICAgIGNtZHIgfD0gU0RNTUNfQ01EX0NIS19SRVNQX0NSQzsNCj4gKyAgICAgICBpZiAoY21kLT5v cGNvZGUgPT0gTU1DX0dPX0lETEVfU1RBVEUgfHwNCj4gKyAgICAgICAgICBjbWQtPm9wY29kZSA9 PSBNTUNfU0VORF9PUF9DT05EIHx8DQo+ICsgICAgICAgICAgKGNtZC0+b3Bjb2RlID09IE1NQ19T RUxFQ1RfQ0FSRCAmJiBjbWQtPmZsYWdzID09IChNTUNfUlNQX05PTkUgfCBNTUNfQ01EX0FDKSkp DQo+ICsgICAgICAgICAgICAgICBjbWRyICY9IH5TRE1NQ19DTURfQ0hLX1JFU1BfQ1JDOw0KPiAr DQo+ICsgICAgICAgY21kciB8PSBTRE1NQ19DTURfSURYX0NIS19FTkFCTEU7DQo+ICsgICAgICAg aWYgKGNtZC0+b3Bjb2RlID09IE1NQ19HT19JRExFX1NUQVRFIHx8DQo+ICsgICAgICAgICAgY21k LT5vcGNvZGUgPT0gTU1DX1NFTkRfT1BfQ09ORCB8fA0KPiArICAgICAgICAgIGNtZC0+b3Bjb2Rl ID09IE1NQ19TRU5EX0NTRCB8fA0KPiArICAgICAgICAgIGNtZC0+b3Bjb2RlID09IE1NQ19TRU5E X0NJRCB8fA0KPiArICAgICAgICAgIGNtZC0+b3Bjb2RlID09IE1NQ19BTExfU0VORF9DSUQgfHwN Cj4gKyAgICAgICAgICAoY21kLT5vcGNvZGUgPT0gTU1DX1NFTEVDVF9DQVJEICYmIGNtZC0+Zmxh Z3MgPT0gKE1NQ19SU1BfTk9ORSB8IE1NQ19DTURfQUMpKSkNCj4gKyAgICAgICAgICAgICAgIGNt ZHIgJj0gflNETU1DX0NNRF9JRFhfQ0hLX0VOQUJMRTsNCj4gKw0KPiArICAgICAgIGlmIChjbWQt PmRhdGEpDQo+ICsgICAgICAgICAgICAgICBjbWRyIHw9IFNETU1DX0RBVEE7DQo+ICsNCj4gKyAg ICAgICBpZiAoY21kLT5vcGNvZGUgPT0gTU1DX1NUT1BfVFJBTlNNSVNTSU9OKQ0KPiArICAgICAg ICAgICAgICAgY21kciB8PSAoU0RNTUNfQUJPUlRfQ01EIDw8IDYpOw0KPiArDQo+ICsgICAgICAg cmV0dXJuIGNtZHI7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZHdfbWNpX2NxZV9zdGFydF9j b21tYW5kKHN0cnVjdCBkd19tY2kgKmhvc3QsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBtbWNfY29tbWFuZCAqY21kLCB1MzIgY21kX2ZsYWdzKQ0KPiArew0KPiAr ICAgICAgIGludCBlcnIgPSAwOw0KPiArICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kID0gMDsNCj4g KyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArICAgICAgIGJvb2wgeGZlcl9mbGFnID0g ZmFsc2U7DQo+ICsgICAgICAgaW50IHJldDsNCj4gKyAgICAgICB1MzIgc3RhdHVzOw0KPiArDQo+ ICsgICAgICAgaG9zdC0+Y21kID0gY21kOw0KPiArDQo+ICsgICAgICAgc3dpdGNoIChjbWQtPm9w Y29kZSkgew0KPiArICAgICAgIGNhc2UgTU1DX1JFQURfU0lOR0xFX0JMT0NLOg0KPiArICAgICAg IGNhc2UgTU1DX1JFQURfTVVMVElQTEVfQkxPQ0s6DQo+ICsgICAgICAgY2FzZSBNTUNfV1JJVEVf QkxPQ0s6DQo+ICsgICAgICAgY2FzZSBNTUNfV1JJVEVfTVVMVElQTEVfQkxPQ0s6DQo+ICsgICAg ICAgY2FzZSBNTUNfU0VORF9FWFRfQ1NEOg0KPiArICAgICAgIGNhc2UgTU1DX0dFTl9DTUQ6DQo+ ICsgICAgICAgY2FzZSBNTUNfU0xFRVBfQVdBS0U6DQo+ICsgICAgICAgY2FzZSBNTUNfU1dJVENI Og0KPiArICAgICAgIGNhc2UgTU1DX1NFVF9XUklURV9QUk9UOg0KPiArICAgICAgIGNhc2UgTU1D X0NMUl9XUklURV9QUk9UOg0KPiArICAgICAgIGNhc2UgTU1DX1NFTkRfV1JJVEVfUFJPVDoNCj4g KyAgICAgICBjYXNlIE1NQ19FUkFTRToNCj4gKyAgICAgICBjYXNlIE1NQ19TRU5EX1RVTklOR19C TE9DS19IUzIwMDoNCj4gKyAgICAgICAgICAgICAgIHhmZXJfZmxhZyA9IHRydWU7DQo+ICsgICAg ICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgICAg eGZlcl9mbGFnID0gZmFsc2U7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaG9zdC0+aW50 X3dhaXRpbmcgPSAmZHdfbWNpX3dhaXQ7DQo+ICsgICAgICAgZW5kID0gamlmZmllcyArIG1zZWNz X3RvX2ppZmZpZXMoRFdfTUNJX1RJTUVPVVRfTXMpOw0KPiArICAgICAgIG1vZF90aW1lcigmaG9z dC0+dGltZXIsIGVuZCk7DQo+ICsNCj4gKyAgICAgICBpZiAoaG9zdC0+aW50X3dhaXRpbmcpIHsN Cj4gKyAgICAgICAgICAgICAgIGR3X21jaV9jbHJfc2lnbmFsX2ludChob3N0KTsNCj4gKyAgICAg ICAgICAgICAgIGR3X21jaV9jbHJfaW50KGhvc3QpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAv KmNvbW1hbmQgd2l0aCBkYXRhLCByMWIgY2FzZSovDQo+ICsgICAgICAgICAgICAgICBpZiAoeGZl cl9mbGFnID09IDEpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGR3X21jaV9lbl94ZmVyX2lu dChob3N0KTsNCj4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZHdfbWNpX2VuX2NkX2ludChob3N0KTsNCj4gKw0KPiArICAgICAgICAgICAgICAgLypJZiB3 ZSB1c2UgY21kMjMsIHdlIGNhbm5vdCBzZW5kIGF1dG8gc3RvcCBjb21tYW5kKi8NCj4gKyAgICAg ICAgICAgICAgIGlmIChjbWQtPm9wY29kZSA9PSBNTUNfV1JJVEVfTVVMVElQTEVfQkxPQ0sgfHwN Cj4gKyAgICAgICAgICAgICAgICAgICBjbWQtPm9wY29kZSA9PSBNTUNfUkVBRF9NVUxUSVBMRV9C TE9DSykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaG9zdC0+aXNfc2JjKSB7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWNxX3dyaXRldyhob3N0LCBYRkVSX01P REVfUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jcV9yZWFk dyhob3N0LCBYRkVSX01PREVfUikgJiB+QklUKFNETU1DX0FVVE9fQ01EX0VOQUJMRSkpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC0+aXNfc2JjID0gMDsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgICAgICAgICBob3N0LT5vcGNvZGUgPSBjbWQtPm9wY29kZTsNCj4gKyAgICAgICAg ICAgICAgIGhvc3QtPmFyZyA9IGNtZC0+YXJnOw0KPiArDQo+ICsgICAgICAgICAgICAgICBzcGlu X2xvY2tfaXJxc2F2ZSgmaG9zdC0+aXJxX2xvY2ssIGZsYWdzKTsNCj4gKyAgICAgICAgICAgICAg IG1jcV93cml0ZXcoaG9zdCwgQ01EX1IsIGNtZF9mbGFncyk7DQo+ICsgICAgICAgICAgICAgICBz cGluX3VubG9ja19pcnFyZXN0b3JlKCZob3N0LT5pcnFfbG9jaywgZmxhZ3MpOw0KPiArDQo+ICsg ICAgICAgICAgICAgICB3YWl0X2Zvcl9jb21wbGV0aW9uKGhvc3QtPmludF93YWl0aW5nKTsNCj4g Kw0KPiArICAgICAgICAgICAgICAgaWYgKHhmZXJfZmxhZyA9PSAxKSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChob3N0LT5yZWdzICsgU0RNTUNf Tk9STUFMX0lOVF9TVEFUX1IsIHN0YXR1cywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc3RhdHVzICYgU0RNTUNfWEZFUl9DT01QTEVURSkgPT0gU0RNTUNfWEZFUl9DT01QTEVU RSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLCBEV19NQ0lf VElNRU9VVCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKmVycm9yIGludGVycnVwdCBkZXRlY3RlZCovDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtY3FfcmVhZHcoaG9zdCwgTk9S TUFMX0lOVF9TVEFUX1IpICYgU0RNTUNfRVJSX0lOVEVSUlVQVCkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYmIChob3N0LT50dW5pbmcgPT0gMSkpDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfaW5mbyhob3N0LT5kZXYsICJU dW5pbmcgZXJyb3IgLi4uIGtlZXAgdHVuaW5nXG4iKTsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGhvc3QtPmRldiwgIlRpbWVvdXQgd2FpdGluZyB4ZmVyIGNvbXBsZXRlLHN0YXR1 cyA9IDB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzdGF0dXMgJiAweGZmZmYpKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0K PiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 ID0gcmVhZGxfcG9sbF90aW1lb3V0KGhvc3QtPnJlZ3MgKyBTRE1NQ19OT1JNQUxfSU5UX1NUQVRf Uiwgc3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0dXMgJiBT RE1NQ19DTURfQ09NUExFVEUpID09IFNETU1DX0NNRF9DT01QTEVURSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLCBEV19NQ0lfVElNRU9VVCk7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJUaW1lb3V0IHdhaXRpbmcgY21kIHJlcXVlc3QgY29t cGxldGVcbiIpOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICBp ZiAoaG9zdC0+bm9ybWFsX2ludGVycnVwdCAmIFNETU1DX0VSUl9JTlRFUlJVUFQpIHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGhvc3QtPnR1bmluZyAhPSAxKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR3X21jaV9jcWVfcmVnc19zaG93KGhvc3QsIGNtZCwgY21k X2ZsYWdzKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLTE7DQo+ICsgICAgICAg ICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuIGVycjsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgZHdfbWNpX2NxZV9wcmVwX3N0b3BfYWJvcnQoc3RydWN0IGR3 X21jaSAqaG9zdCwgc3RydWN0IG1tY19jb21tYW5kICpjbWQpDQo+ICt7DQo+ICsNCj4gKyAgICAg ICBzdHJ1Y3QgbW1jX2NvbW1hbmQgc3RvcDsNCj4gKyAgICAgICB1MzIgY21kcjsNCj4gKyAgICAg ICAvKlN0b3AgY29tbWFuZCBvbmx5IHVzZSBhZnRlciBkYXRhIGNvbW1hbmQqLw0KPiArICAgICAg IGlmICghY21kLT5kYXRhKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAg ICAgbWVtc2V0KCZzdG9wLCAwLCBzaXplb2Yoc3RydWN0IG1tY19jb21tYW5kKSk7DQo+ICsNCj4g KyAgICAgICBpZiAoY21kLT5vcGNvZGUgPT0gTU1DX1JFQURfU0lOR0xFX0JMT0NLIHx8DQo+ICsg ICAgICAgICAgIGNtZC0+b3Bjb2RlID09IE1NQ19SRUFEX01VTFRJUExFX0JMT0NLIHx8DQo+ICsg ICAgICAgICAgIGNtZC0+b3Bjb2RlID09IE1NQ19XUklURV9CTE9DSyB8fA0KPiArICAgICAgICAg ICBjbWQtPm9wY29kZSA9PSBNTUNfV1JJVEVfTVVMVElQTEVfQkxPQ0sgfHwNCj4gKyAgICAgICAg ICAgY21kLT5vcGNvZGUgPT0gTU1DX1NFTkRfVFVOSU5HX0JMT0NLIHx8DQo+ICsgICAgICAgICAg IGNtZC0+b3Bjb2RlID09IE1NQ19TRU5EX1RVTklOR19CTE9DS19IUzIwMCkgew0KPiArICAgICAg ICAgICAgICAgc3RvcC5vcGNvZGUgPSBNTUNfU1RPUF9UUkFOU01JU1NJT047DQo+ICsgICAgICAg ICAgICAgICBzdG9wLmFyZyA9IDA7DQo+ICsgICAgICAgICAgICAgICBzdG9wLmZsYWdzID0gTU1D X1JTUF9SMSB8IE1NQ19DTURfQUM7DQo+ICsgICAgICAgfSBlbHNlIGlmIChjbWQtPm9wY29kZSA9 PSBTRF9JT19SV19FWFRFTkRFRCkgew0KPiArICAgICAgICAgICAgICAgc3RvcC5vcGNvZGUgPSBT RF9JT19SV19ESVJFQ1Q7DQo+ICsgICAgICAgICAgICAgICBzdG9wLmFyZyB8PSAoMSA8PCAzMSkg fCAoMCA8PCAyOCkgfCAoU0RJT19DQ0NSX0FCT1JUIDw8IDkpIHwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoY21kLT5hcmcgPj4gMjgpICYgMHg3KTsNCj4gKyAgICAgICAgICAgICAg IHN0b3AuZmxhZ3MgPSBNTUNfUlNQX1NQSV9SNSB8IE1NQ19SU1BfUjUgfCBNTUNfQ01EX0FDOw0K PiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ICsgICAgICAg fQ0KPiArDQo+ICsgICAgICAgY21kciA9IChzdG9wLm9wY29kZSA8PCA4KSB8IFNETU1DX1JFU1Bf TEVOXzQ4IHwNCj4gKyAgICAgICAgICAgICAgIFNETU1DX0NNRF9DSEtfUkVTUF9DUkMgfCBTRE1N Q19DTURfSURYX0NIS19FTkFCTEU7DQo+ICsgICAgICAgY21kciB8PSAoU0RNTUNfQUJPUlRfQ01E IDw8IDYpOw0KPiArICAgICAgIG1jcV93cml0ZXcoaG9zdCwgWEZFUl9NT0RFX1IsIDApOw0KPiAr ICAgICAgIG1jcV93cml0ZWwoaG9zdCwgQVJHVU1FTlRfUiwgc3RvcC5hcmcpOw0KPiArICAgICAg IGR3X21jaV9jcWVfc3RhcnRfY29tbWFuZChob3N0LCAmc3RvcCwgY21kcik7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgZHdfbWNpX2NxZV93YWl0X3N0YXR1cyhzdHJ1Y3QgZHdfbWNpICpob3N0 LCBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCwgdTMyICpzdGF0dXMpDQo+ICt7DQo+ICsgICAgICAg c3RydWN0IG1tY19jb21tYW5kIHdhaXQ7DQo+ICsgICAgICAgdTMyIGNtZHI7DQo+ICsgICAgICAg dTMyIGN1cl9zdGF0ZTsNCj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVlbmQ7DQo+ICsgICAg ICAgaW50IGVyciA9IDA7DQo+ICsNCj4gKyAgICAgICAvKiBBY2NvcmRpbmcgdG8gU3lub3BzeXMg dXNlcmd1aWRlLCB3ZSBuZWVkIHRvIHNlbmQgd2FpdCBjb21tYW5kIGFmdGVyDQo+ICsgICAgICAg ICogc3RvcCBjbWQgdG8gY2hlY2sgY3VycmVudCBzdGF0dXMNCj4gKyAgICAgICAgKi8NCj4gKw0K PiArICAgICAgIHdhaXQgPSBob3N0LT5zdGF0X3JlYWR5Ow0KPiArICAgICAgIG1lbXNldCgmd2Fp dCwgMCwgc2l6ZW9mKHN0cnVjdCBtbWNfY29tbWFuZCkpOw0KPiArDQo+ICsgICAgICAgdGltZWVu ZCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDUwMCk7DQo+ICsgICAgICAgZG8gew0KPiAr ICAgICAgICAgICAgICAgd2FpdC5vcGNvZGUgPSBNTUNfU0VORF9TVEFUVVM7DQo+ICsgICAgICAg ICAgICAgICB3YWl0LmFyZyA9IDEgPDwgMTY7DQo+ICsgICAgICAgICAgICAgICB3YWl0LmZsYWdz ID0gTU1DX1JTUF9TUElfUjIgfCBNTUNfUlNQX1IxIHwgTU1DX0NNRF9BQzsNCj4gKyAgICAgICAg ICAgICAgIHdhaXQuZGF0YSA9IE5VTEw7DQo+ICsgICAgICAgICAgICAgICBjbWRyID0gKHdhaXQu b3Bjb2RlIDw8IDgpIHwgU0RNTUNfUkVTUF9MRU5fNDggfA0KPiArICAgICAgICAgICAgICAgICAg ICAgICBTRE1NQ19DTURfQ0hLX1JFU1BfQ1JDIHwgU0RNTUNfQ01EX0lEWF9DSEtfRU5BQkxFOw0K PiArDQo+ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGV3KGhvc3QsIFhGRVJfTU9ERV9SLCAwKTsN Cj4gKyAgICAgICAgICAgICAgIG1jcV93cml0ZWwoaG9zdCwgQVJHVU1FTlRfUiwgd2FpdC5hcmcp Ow0KPiArICAgICAgICAgICAgICAgZXJyID0gZHdfbWNpX2NxZV9zdGFydF9jb21tYW5kKGhvc3Qs ICZ3YWl0LCBjbWRyKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChlcnIpIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZHdfbWNpX2NxZV9yZXNldChob3N0KTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIGR3X21jaV9jcWVfcmVhZF9yc3AoaG9zdCwgJndhaXQsIHdhaXQucmVzcCk7DQo+ICsgICAg ICAgICAgICAgICAqc3RhdHVzID0gd2FpdC5yZXNwWzBdOw0KPiArICAgICAgICAgICAgICAgY3Vy X3N0YXRlID0gUjFfQ1VSUkVOVF9TVEFURSh3YWl0LnJlc3BbMF0pOw0KPiArICAgICAgICAgICAg ICAgZXJyID0gLURXX01DSV9OT1RfUkVBRFk7DQo+ICsgICAgICAgICAgICAgICBpZiAoY3VyX3N0 YXRlID09IFIxX1NUQVRFX1RSQU4pIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdh aXQucmVzcFswXSAmIFIxX1JFQURZX0ZPUl9EQVRBKSB7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXJyID0gMDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgfQ0K PiArICAgICAgIH0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVlbmQpKTsNCj4gKw0K PiArICAgICAgIHJldHVybiBlcnI7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9j cWVfc3RvcF9kbWEoc3RydWN0IGR3X21jaSAqaG9zdCwgc3RydWN0IG1tY19kYXRhICpkYXRhKQ0K PiArew0KPiArICAgICAgIHUzMiBkaXIgPSAwOw0KPiArDQo+ICsgICAgICAgaWYgKGRhdGEtPmZs YWdzICYgTU1DX0RBVEFfUkVBRCkNCj4gKyAgICAgICAgICAgICAgIGRpciA9IERNQV9GUk9NX0RF VklDRTsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICBkaXIgPSBETUFfVE9fREVW SUNFOw0KPiArDQo+ICsgICAgICAgZG1hX3VubWFwX3NnKG1tY19kZXYoaG9zdC0+c2xvdC0+bW1j KSwgZGF0YS0+c2csIGRhdGEtPnNnX2xlbiwgZGlyKTsNCj4gKyAgICAgICBob3N0LT5zZyA9IE5V TEw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9jcWVfcHJlcGFyZV9kZXNjNjQo c3RydWN0IGR3X21jaSAqaG9zdCwgc3RydWN0IG1tY19kYXRhICpkYXRhLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZykNCj4g K3sNCj4gKyAgICAgICBkZXZfaW5mbyhob3N0LT5kZXYsICJDdXJyZW50bHksIHRoZSA2NGJpdCBE TUEgbW9kZSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LlxuIik7DQo+ICt9DQo+ICsNCj4gKw0KPiAr c3RhdGljIHZvaWQgZHdfbWNpX2NxZV9wcmVwYXJlX2Rlc2MzMihzdHJ1Y3QgZHdfbWNpICpob3N0 LCBzdHJ1Y3QgbW1jX2RhdGEgKmRhdGEsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQ0KPiArew0KPiArICAgICAgIHUzMiAg YmxrX2NudCwgY3VyX2Jsa19jbnQsIHJlbWFpbl9ibGtfY250Ow0KPiArICAgICAgIHUzMiAgdG1w X3ZhbDsNCj4gKyAgICAgICB1MzIgKmRlc2NfYmFzZSA9IGhvc3QtPnNnX2NwdTsNCj4gKyAgICAg ICB1MzIgIGRtYV9sZW4gPSAwOw0KPiArICAgICAgIHUzMiAgZG1hX2FkZHI7DQo+ICsgICAgICAg dTMyICBpOw0KPiArICAgICAgIHVuc2lnbmVkIGludCBiZWdpbiwgZW5kOw0KPiArDQo+ICsgICAg ICAgZm9yIChpID0gMDsgaSA8IGhvc3QtPmRtYV9uZW50czsgaSsrLCBzZysrKSB7DQo+ICsgICAg ICAgICAgICAgICBkbWFfbGVuID0gc2dfZG1hX2xlbihzZyk7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIC8qYmxrX2NudCBtdXN0IGJlIHRoZSBtdWx0aXBsZSBvZiA1MTIoMHgyMDApKi8NCj4gKyAg ICAgICAgICAgICAgIGlmIChkbWFfbGVuIDwgU1pfNTEyKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICBibGtfY250ID0gMTsNCj4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgYmxrX2NudCAgPSBkbWFfbGVuID4+IDk7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIHJlbWFpbl9ibGtfY250ICA9IGJsa19jbnQ7DQo+ICsgICAgICAgICAgICAgICBkbWFfYWRk ciA9IHNnX2RtYV9hZGRyZXNzKHNnKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgd2hpbGUgKHJl bWFpbl9ibGtfY250KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qRFdfTUNJX01BWF9T Q1JJUFRfQkxLIGlzIHRoZSBtYXgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogZm9yIGVh Y2ggZGVzY3JpcHRvciByZWNvcmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5fYmxrX2NudCA+IERXX01DSV9NQVhfU0NS SVBUX0JMSykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfYmxrX2NudCA9 IERXX01DSV9NQVhfU0NSSVBUX0JMSzsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9ibGtfY250ID0gcmVtYWluX2Js a19jbnQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogSW4gU3lub3BzeXMgRGVz aWduV2FyZSBEYXRhYm9vayBQYWdlIDg0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBU aGV5IG1lbnRpb25lZCB0aGUgRE1BIDEyOE1CIHJlc3RyaWN0aW9uDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGRtYV9hZGRy IC8gU1pfMTI4TTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gKGRtYV9hZGRyICsg Y3VyX2Jsa19jbnQgKiBTWl81MTIpIC8gU1pfMTI4TTsNCj4gKw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAvKklmIGJlZ2luIGFuZCBlbmQgaW4gdGhlIGRpZmZlcmVudCAxMjhNQiBtZW1vcnkg em9uZSovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZWdpbiAhPSBlbmQpDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2Jsa19jbnQgPSAoZW5kICogU1pfMTI4 TSAtIGRtYV9hZGRyKSAvIFNaXzUxMjsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICBp ZiAoZG1hX2xlbiA8IFNaXzUxMikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 bXBfdmFsID0gKChkbWFfbGVuKSA8PCAxNikgfCBWQUxJRCgweDEpIHwgQUNUKDB4NCk7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0bXBfdmFsID0gKChjdXJfYmxrX2NudCAmIDB4N2YpIDw8IDI1KSB8IFZBTElEKDB4MSkg fCBBQ1QoMHg0KTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAvKkxhc3QgZGVzY3Jp cHRvciovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGhvc3QtPmRtYV9uZW50 cyAtIDEgJiYgcmVtYWluX2Jsa19jbnQgPT0gY3VyX2Jsa19jbnQpDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG1wX3ZhbCB8PSBUSEVfRU5EKDB4MSk7DQo+ICsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZGVzY19iYXNlWzBdID0gIHRtcF92YWw7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGRlc2NfYmFzZVsxXSA9ICBkbWFfYWRkcjsNCj4gKw0KPiArICAgICAgICAg ICAgICAgICAgICAgICBkbWFfYWRkciA9IGRtYV9hZGRyICsgKGN1cl9ibGtfY250IDw8IDkpOw0K PiArICAgICAgICAgICAgICAgICAgICAgICByZW1haW5fYmxrX2NudCAtPSBjdXJfYmxrX2NudDsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGVzY19iYXNlICs9IDI7DQo+ICsgICAgICAgICAg ICAgICB9DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGR3X21jaV9jcWVf Z2V0X2NkKHN0cnVjdCBtbWNfaG9zdCAqbW1jKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBkd19t Y2lfc2xvdCAqc2xvdCA9IG1tY19wcml2KG1tYyk7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaSAq aG9zdCA9IHNsb3QtPmhvc3Q7DQo+ICsgICAgICAgaW50IGdwaW9fY2QgPSBtbWNfZ3Bpb19nZXRf Y2QobW1jKTsNCj4gKyAgICAgICBpbnQgcHJlc2VudCA9IC0xOw0KPiArDQo+ICsgICAgICAgLyog VXNlIHBsYXRmb3JtIGdldF9jZCBmdW5jdGlvbiwgZWxzZSB0cnkgb25ib2FyZCBjYXJkIGRldGVj dCAqLw0KPiArICAgICAgIGlmICgoKG1tYy0+Y2FwcyAmIE1NQ19DQVBfTkVFRFNfUE9MTCkNCj4g KyAgICAgICAgICAgICAgIHx8ICFtbWNfY2FyZF9pc19yZW1vdmFibGUobW1jKSkpIHsNCj4gKyAg ICAgICAgICAgICAgIHByZXNlbnQgPSAxOw0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAoIXRl c3RfYml0KERXX01NQ19DQVJEX1BSRVNFTlQsICZzbG90LT5mbGFncykpIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgaWYgKG1tYy0+Y2FwcyAmIE1NQ19DQVBfTkVFRFNfUE9MTCkgew0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9pbmZvKCZtbWMtPmNsYXNzX2RldiwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYXJkIGlzIHBvbGxp bmcuXG4iKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZfaW5mbygmbW1jLT5jbGFzc19kZXYsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FyZCBpcyBub24tcmVtb3ZhYmxl LlxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgc2V0X2JpdChEV19NTUNfQ0FSRF9QUkVTRU5ULCAmc2xvdC0+ZmxhZ3MpOw0KPiArICAg ICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcHJlc2VudDsNCj4g KyAgICAgICB9IGVsc2UgaWYgKGdwaW9fY2QgPj0gMCkgew0KPiArICAgICAgICAgICAgICAgcHJl c2VudCA9IGdwaW9fY2Q7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIC8q U0QgY2FyZCBkZXRlY3QgdXNpbmcgSVAgcmVncyBpcyB0b2RvKi8NCj4gKyAgICAgICAgICAgICAg IGRldl9lcnIoJm1tYy0+Y2xhc3NfZGV2LCAiU0QgY2FyZCBkZXRlY3QgdXNpbmcgSVAgcmVncyBp cyBUb0RvLlxuIik7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgc3Bpbl9sb2NrX2JoKCZo b3N0LT5sb2NrKTsNCj4gKw0KPiArICAgICAgIGlmIChwcmVzZW50ICYmICF0ZXN0X2FuZF9zZXRf Yml0KERXX01NQ19DQVJEX1BSRVNFTlQsICZzbG90LT5mbGFncykpDQo+ICsgICAgICAgICAgICAg ICBkZXZfZGJnKCZtbWMtPmNsYXNzX2RldiwgImNhcmQgaXMgcHJlc2VudFxuIik7DQo+ICsgICAg ICAgZWxzZSBpZiAoIXByZXNlbnQgJiYNCj4gKyAgICAgICAgICAgICAgICF0ZXN0X2FuZF9jbGVh cl9iaXQoRFdfTU1DX0NBUkRfUFJFU0VOVCwgJnNsb3QtPmZsYWdzKSkNCj4gKyAgICAgICAgICAg ICAgIGRldl9kYmcoJm1tYy0+Y2xhc3NfZGV2LCAiY2FyZCBpcyBub3QgcHJlc2VudFxuIik7DQo+ ICsNCj4gKyAgICAgICBzcGluX3VubG9ja19iaCgmaG9zdC0+bG9jayk7DQo+ICsNCj4gKyAgICAg ICByZXR1cm4gcHJlc2VudDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZHdfbWNpX2NxZV9z dWJtaXRfZGF0YV9kbWEoc3RydWN0IGR3X21jaSAqaG9zdCkNCj4gK3sNCj4gKyAgICAgICBpZiAo aG9zdC0+ZG1hXzY0Yml0X2FkZHJlc3MgPT0gMSkNCj4gKyAgICAgICAgICAgICAgIGR3X21jaV9j cWVfcHJlcGFyZV9kZXNjNjQoaG9zdCwgaG9zdC0+ZGF0YSwgaG9zdC0+c2cpOw0KPiArICAgICAg IGVsc2UNCj4gKyAgICAgICAgICAgICAgIGR3X21jaV9jcWVfcHJlcGFyZV9kZXNjMzIoaG9zdCwg aG9zdC0+ZGF0YSwgaG9zdC0+c2cpOw0KPiArDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3 X21jaV9jcWVfc3VibWl0X2RhdGEoc3RydWN0IGR3X21jaSAqaG9zdCwgc3RydWN0IG1tY19kYXRh ICpkYXRhKQ0KPiArew0KPiArICAgICAgIHUzMiBkaXIgPSAwOw0KPiArDQo+ICsgICAgICAgaG9z dC0+c2cgPSBOVUxMOw0KPiArICAgICAgIGhvc3QtPmRhdGEgPSBkYXRhOw0KPiArDQo+ICsgICAg ICAgaWYgKGRhdGEtPmZsYWdzICYgTU1DX0RBVEFfUkVBRCkNCj4gKyAgICAgICAgICAgICAgIGRp ciA9IERNQV9GUk9NX0RFVklDRTsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICBk aXIgPSBETUFfVE9fREVWSUNFOw0KPiArDQo+ICsgICAgICAgaG9zdC0+ZG1hX25lbnRzID0gZG1h X21hcF9zZyhtbWNfZGV2KGhvc3QtPnNsb3QtPm1tYyksDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZywgZGF0YS0+c2dfbGVuLCBkaXIpOw0KPiArICAg ICAgIGhvc3QtPnNnID0gZGF0YS0+c2c7DQo+ICsNCj4gKyAgICAgICBob3N0LT51c2luZ19kbWEg PSAxOw0KPiArDQo+ICsgICAgICAgZHdfbWNpX2NxZV9zdWJtaXRfZGF0YV9kbWEoaG9zdCk7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9jcWVfc2V0dXBfYnVzKHN0cnVjdCBkd19t Y2lfc2xvdCAqc2xvdCwgYm9vbCBmb3JjZV9jbGtpbml0KQ0KPiArew0KPiArICAgICAgIHN0cnVj dCBkd19tY2kgKmhvc3QgPSBzbG90LT5ob3N0Ow0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBkd19t Y2lfZHJ2X2RhdGEgKmRydl9kYXRhID0gaG9zdC0+ZHJ2X2RhdGE7DQo+ICsgICAgICAgdW5zaWdu ZWQgaW50IGNsb2NrID0gc2xvdC0+Y2xvY2s7DQo+ICsgICAgICAgdTMyIGRpdiA9IDA7DQo+ICsN Cj4gKyAgICAgICBzbG90LT5tbWMtPmFjdHVhbF9jbG9jayA9IDA7DQo+ICsNCj4gKyAgICAgICBp ZiAoY2xvY2sgIT0gaG9zdC0+Y3VycmVudF9zcGVlZCB8fCBmb3JjZV9jbGtpbml0KSB7DQo+ICsg ICAgICAgICAgICAgICBkaXYgPSBob3N0LT5idXNfaHogLyBjbG9jazsNCj4gKyAgICAgICAgICAg ICAgIGlmIChob3N0LT5idXNfaHogJSBjbG9jaykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ZGl2ICs9IDE7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChjbG9jayAhPSBzbG90LT5fX2Ns a19vbGQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogU2lsZW50IHRoZSB2ZXJib3Nl IGxvZyBpZiBjYWxsaW5nIGZyb20gUE0gY29udGV4dCAqLw0KPiArICAgICAgICAgICAgICAgICAg ICAgICBkZXZfaW5mbygmc2xvdC0+bW1jLT5jbGFzc19kZXYsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkJ1cyBzcGVlZCAoc2xvdCAlZCkgPSAlZEh6IChzbG90IHJlcSAlZEh6 LCBhY3R1YWwgJWRIWiBkaXYgPSAlZClcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2xvdC0+aWQsIGhvc3QtPmJ1c19oeiwgY2xvY2ssIGhvc3QtPmJ1c19oeiAvIGRpdiwg ZGl2KTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgICAgc2xvdC0+ X19jbGtfb2xkID0gY2xvY2s7DQo+ICsgICAgICAgICAgICAgICBzbG90LT5tbWMtPmFjdHVhbF9j bG9jayA9IGhvc3QtPmJ1c19oeiAvIGRpdjsNCj4gKw0KPiArICAgICAgICAgICAgICAgaWYgKGRy dl9kYXRhICYmIGRydl9kYXRhLT5zZXRfaW9zKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBk cnZfZGF0YS0+c2V0X2lvcyhzbG90LCAmc2xvdC0+bW1jLT5pb3MpOw0KPiArICAgICAgIH0NCj4g K30NCj4gKw0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19tY2lfY3FlX2Vycl9oYW5kbGUoc3RydWN0 IGR3X21jaSAqaG9zdCwgc3RydWN0IG1tY19jb21tYW5kICpjbWQpDQo+ICt7DQo+ICsgICAgICAg dTMyIHN0YXR1cyA9IDA7DQo+ICsgICAgICAgaW50IHBzdGF0X3J0eSA9IDA7DQo+ICsgICAgICAg aW50IHJldDsNCj4gKyAgICAgICBpbnQgZXJyID0gMDsNCj4gKyAgICAgICBpbnQgcnR5X2NudCA9 IDA7DQo+ICsNCj4gKyAgICAgICBkbyB7DQo+ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGV3KGhv c3QsIEVSUk9SX0lOVF9TVEFUX1IsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1jcV9yZWFk dyhob3N0LCBFUlJPUl9JTlRfU1RBVF9SKSAmIDB4ZmZmZik7DQo+ICsgICAgICAgICAgICAgICAv KnN5bmNocm9ub3VzIGFib3J0OiBzdG9wIGhvc3QgZG1hKi8NCj4gKyAgICAgICAgICAgICAgIG1j cV93cml0ZWIoaG9zdCwgQkdBUF9DVFJMX1IsIFNETU1DX1NUT1BfQkdfUkVRKTsNCj4gKw0KPiAr ICAgICAgICAgICAgICAgcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGhvc3QtPnJlZ3MgKyBTRE1N Q19OT1JNQUxfSU5UX1NUQVRfUiwgc3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAo c3RhdHVzICYgU0RNTUNfWEZFUl9DT01QTEVURSkgPT0gU0RNTUNfWEZFUl9DT01QTEVURSwgMTAs IERXX01DSV9USU1FT1VUKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKChtY3FfcmVhZHcoaG9zdCwgTk9STUFMX0lOVF9TVEFUX1Ip ICYgU0RNTUNfRVJSX0lOVEVSUlVQVCkgIT0gMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXZfaW5mbyhob3N0LT5kZXYsICJzdGF0dXMgPSAweCV4XG4iLCAoc3RhdHVzICYg MHhmZmZmKSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldiwgIlRpbWVvdXQgd2FpdGluZyBl cnJfaGFuZGxlIHhmZXIgY29tcGxldGVcbiIpOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGV3KGhvc3QsIE5PUk1BTF9JTlRfU1RBVF9SLCBTRE1N Q19YRkVSX0NPTVBMRVRFKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgaWYgKGNtZC0+b3Bjb2Rl ICE9IE1NQ19TRU5EX1RVTklOR19CTE9DS19IUzIwMCkgew0KPiArICAgICAgICAgICAgICAgICAg ICAgICBkd19tY2lfY3FlX3ByZXBfc3RvcF9hYm9ydChob3N0LCBjbWQpOw0KPiArICAgICAgICAg ICAgICAgICAgICAgICBtZGVsYXkoMSk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ZXJyID0gZHdfbWNpX2NxZV93YWl0X3N0YXR1cyhob3N0LCBjbWQsICZzdGF0dXMpOw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0eV9jbnQrKzsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAocnR5X2NudCA+IDEwMCkgew0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA9PSAtRFdfTUNJX05PVF9SRUFEWSkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vyciho b3N0LT5kZXYsICJzdGF0dXMgY2hlY2sgZmFpbGVkLCBlcnIgPSAlZCwgc3RhdHVzID0gMHgleFxu IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlcnIsIHN0YXR1cyk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICBtY3Ffd3Jp dGViKGhvc3QsIFNXX1JTVF9SLCBTRE1NQ19SU1RfQ01EIHwgU0RNTUNfUlNUX0RBVCk7DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChob3N0LT5yZWdzICsg U0RNTUNfQ0xLX0NUUkxfUiwgc3RhdHVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdGF0dXMgJiBTV19SU1RfQk9USF9ET05FKSA9PSAweDAsIDEwLCBEV19NQ0lfVElNRU9V VCk7DQo+ICsgICAgICAgICAgICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaG9zdC0+cmVn cyArIFNETU1DX1BTVEFURV9SRUcsIHN0YXR1cywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RhdHVzICYgMHgzKSA9PSAweDAsIDEwLCBEV19NQ0lfVElNRU9VVCk7DQo+ICsg ICAgICAgICAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJy KGhvc3QtPmRldiwgIldhaXRpbmcgZXJyb3IgaGFuZGxpbmcgZG9uZSB0aW1lb3V0XG4iKTsNCj4g Kw0KPiArICAgICAgICAgICAgICAgdWRlbGF5KDQwKTsNCj4gKw0KPiArICAgICAgICAgICAgICAg cHN0YXRfcnR5Kys7DQo+ICsgICAgICAgICAgICAgICBpZiAocHN0YXRfcnR5ID4gNTAwMCkgew0K PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldiwgIndhaXQgcHN0YXRl IHJlZ2lzdGVyIGRhdGEgbGluZSByZWFkeSB0aW1lb3V0XG4iKTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfSB3aGlsZSAo KG1jcV9yZWFkbChob3N0LCBQU1RBVEVfUkVHKSAmIDB4ZjAwMDAwKSAhPSAweGYwMDAwMCB8fA0K PiArICAgICAgICAgICAgICAgKG1jcV9yZWFkbChob3N0LCBQU1RBVEVfUkVHKSAmIDB4ZjApICE9 IDB4ZjApOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19tY2lfY3FlX3NlbmRfc3RvcF9h Ym9ydChzdHJ1Y3QgZHdfbWNpICpob3N0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNsb3QsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBtbWNfY29tbWFuZCAqY21kKQ0KPiArew0KPiArICAgICAgIGR3X21jaV9jcWVf cmVzZXQoaG9zdCk7DQo+ICsNCj4gKyAgICAgICBpZiAoY21kLT5kYXRhKQ0KPiArICAgICAgICAg ICAgICAgZHdfbWNpX2NxZV9lcnJfaGFuZGxlKGhvc3QsIGNtZCk7DQo+ICsgICAgICAgZWxzZQ0K PiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdTMyIGR3X21j aV9jcWVfcHJlcGFyZV9kYXRhX2ZsYWdzKHN0cnVjdCBtbWNfY29tbWFuZCAqY21kKQ0KPiArew0K PiArICAgICAgIHUzMiBkYXRhZmxhZ3M7DQo+ICsgICAgICAgaW50IHJlYWRfZmxhZyA9IDE7DQo+ ICsgICAgICAgaW50IG11bF9ibGtfZmxhZyA9IDA7DQo+ICsgICAgICAgaW50IGF1dG9fc3RvcF9m bGFnID0gMDsNCj4gKw0KPiArICAgICAgIGlmIChjbWQtPm9wY29kZSA9PSBNTUNfV1JJVEVfQkxP Q0sgfHwNCj4gKyAgICAgICAgICBjbWQtPm9wY29kZSA9PSBNTUNfV1JJVEVfTVVMVElQTEVfQkxP Q0sgfHwNCj4gKyAgICAgICAgICBjbWQtPm9wY29kZSA9PSBNTUNfTE9DS19VTkxPQ0sgfHwNCj4g KyAgICAgICAgICAoY21kLT5vcGNvZGUgPT0gTU1DX0dFTl9DTUQgJiYgY21kLT5hcmcgPT0gMCkp DQo+ICsgICAgICAgICAgICAgICByZWFkX2ZsYWcgPSAwOw0KPiArDQo+ICsgICAgICAgaWYgKGNt ZC0+b3Bjb2RlID09IE1NQ19XUklURV9NVUxUSVBMRV9CTE9DSyB8fA0KPiArICAgICAgICAgIGNt ZC0+b3Bjb2RlID09IE1NQ19SRUFEX01VTFRJUExFX0JMT0NLKSB7DQo+ICsgICAgICAgICAgICAg ICBtdWxfYmxrX2ZsYWcgPSAxOw0KPiArICAgICAgICAgICAgICAgYXV0b19zdG9wX2ZsYWcgPSAx Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGRhdGFmbGFncyA9IChtdWxfYmxrX2ZsYWcg PDwgU0RNTUNfTVVMVElfQkxLX1NFTCkgfA0KPiArICAgICAgICAgICAgICAgICAgIChyZWFkX2Zs YWcgPDwgU0RNTUNfREFUQV9YRkVSX0RJUikgfA0KPiArICAgICAgICAgICAgICAgICAgIChhdXRv X3N0b3BfZmxhZyA8PCBTRE1NQ19BVVRPX0NNRF9FTkFCTEUpIHwNCj4gKyAgICAgICAgICAgICAg ICAgICAoU0RNTUNfQkxPQ0tfQ09VTlRfRU5BQkxFKSB8DQo+ICsgICAgICAgICAgICAgICAgICAg KFNETU1DX0RNQV9FTkFCTEUpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIGRhdGFmbGFnczsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfY3FlX2NvbW1hbmRfY29tcGxldGUoc3RydWN0 IGR3X21jaSAqaG9zdCwgdTE2IGludGVycnVwdCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqY21kX2Vycm9yKQ0KPiArew0KPiArICAgICAgIGlmIChpbnRl cnJ1cHQgJiAoU0RNTUNfQ01EX0lEWF9FUlIgfCBTRE1NQ19DTURfRU5EX0JJVF9FUlINCj4gKyAg ICAgICAgICAgICAgIHwgU0RNTUNfQ01EX0NSQ19FUlIpKSB7DQo+ICsgICAgICAgICAgICAgICBp ZiAoaG9zdC0+dHVuaW5nKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAqY21kX2Vycm9yID0g LVRVTklOR19FUlI7DQo+ICsgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICpjbWRfZXJyb3IgPSAtRUlMU0VROw0KPiArICAgICAgIH0gZWxzZSBpZiAoaW50ZXJy dXB0ICYgU0RNTUNfQ01EX1RPVVRfRVJSKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoaG9zdC0+ dHVuaW5nKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAqY21kX2Vycm9yID0gLVRVTklOR19F UlI7DQo+ICsgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICpj bWRfZXJyb3IgPSAtRVRJTUVET1VUOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAg ICAgICAqY21kX2Vycm9yID0gMDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4g KmNtZF9lcnJvcjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfY3FlX2RhdGFfY29t cGxldGUoc3RydWN0IGR3X21jaSAqaG9zdCwgdTE2IGludGVycnVwdCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZGF0YV9lcnJvcikNCj4gK3sNCj4gKyAg ICAgICBpZiAoaW50ZXJydXB0ICYgKFNETU1DX0RBVEFfRU5EX0JJVF9FUlIgfCBTRE1NQ19EQVRB X0NSQ19FUlIpKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoaG9zdC0+dHVuaW5nKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAqZGF0YV9lcnJvciA9IC1UVU5JTkdfRVJSOw0KPiArICAgICAg ICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAqZGF0YV9lcnJvciA9IC1F SUxTRVE7DQo+ICsgICAgICAgfSBlbHNlIGlmIChpbnRlcnJ1cHQgJiBTRE1NQ19EQVRBX1RPVVRf RVJSKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoaG9zdC0+dHVuaW5nKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAqZGF0YV9lcnJvciA9IC1UVU5JTkdfRVJSOw0KPiArICAgICAgICAgICAg ICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAqZGF0YV9lcnJvciA9IC1FVElNRURP VVQ7DQo+ICsgICAgICAgfSBlbHNlIGlmIChpbnRlcnJ1cHQgJiBTRE1NQ19BRE1BX0VSUikgew0K PiArICAgICAgICAgICAgICAgKmRhdGFfZXJyb3IgPSAtRUlPOw0KPiArICAgICAgIH0gZWxzZSB7 DQo+ICsgICAgICAgICAgICAgICAqZGF0YV9lcnJvciA9IDA7DQo+ICsgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgcmV0dXJuICpkYXRhX2Vycm9yOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBf X2R3X21jaV9jcWVfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHdfbWNpICpob3N0LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkd19tY2lfc2xvdCAqc2xvdCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNt ZCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgbW1jX2RhdGEgKmRhdGE7DQo+ICsgICAgICAgdTMy IGNtZGZsYWdzOw0KPiArICAgICAgIHUzMiBkYXRhZmxhZ3M7DQo+ICsgICAgICAgaW50IHJldCA9 IDA7DQo+ICsNCj4gKyAgICAgICBkYXRhID0gY21kLT5kYXRhOw0KPiArDQo+ICsgICAgICAgaWYg KGRhdGEpIHsNCj4gKyAgICAgICAgICAgICAgIG1jcV93cml0ZXcoaG9zdCwgQkxPQ0tDT1VOVF9S LCBkYXRhLT5ibG9ja3MpOw0KPiArICAgICAgICAgICAgICAgbWNxX3dyaXRlbChob3N0LCBCTE9D S1NJWkVfUiwgZGF0YS0+Ymxrc3opOw0KPiArICAgICAgICAgICAgICAgbWNxX3dyaXRlbChob3N0 LCBBRE1BX1NBX0xPV19SLCBob3N0LT5zZ19kbWEpOw0KPiArDQo+ICsgICAgICAgICAgICAgICBk YXRhZmxhZ3MgPSBkd19tY2lfY3FlX3ByZXBhcmVfZGF0YV9mbGFncyhjbWQpOw0KPiArDQo+ICsg ICAgICAgICAgICAgICBtY3Ffd3JpdGV3KGhvc3QsIFhGRVJfTU9ERV9SLCBkYXRhZmxhZ3MpOw0K PiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoY21kLT5vcGNvZGUgPT0g TU1DX1NFVF9CTE9DS19DT1VOVCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaG9zdC0+aXNf c2JjID0gMTsNCj4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgaG9zdC0+aXNfc2JjID0gMDsNCj4gKw0KPiArICAgICAgICAgICAgICAgbWNxX3dyaXRldyho b3N0LCBYRkVSX01PREVfUiwgMCk7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgbWNxX3dy aXRlbChob3N0LCBBUkdVTUVOVF9SLCBjbWQtPmFyZyk7DQo+ICsNCj4gKyAgICAgICBjbWRmbGFn cyA9IGR3X21jaV9jcWVfcHJlcGFyZV9jb21tYW5kKHNsb3QtPm1tYywgY21kKTsNCj4gKw0KPiAr ICAgICAgIGlmIChkYXRhKSB7DQo+ICsgICAgICAgICAgICAgICBkYXRhLT5ieXRlc194ZmVyZWQg PSAwOw0KPiArICAgICAgICAgICAgICAgaWYgKGhvc3QtPnVzZV9kbWEgPT0gVFJBTlNfTU9ERV9E TUEpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZHdfbWNpX2NxZV9zdWJtaXRfZGF0YSho b3N0LCBkYXRhKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgd21iKCk7IC8qIGRyYWluIHdy aXRlYnVmZmVyICovDQo+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAg ICAgICAgICAgICAvKlVzaW5nIFBJTyBtb2RlKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ZGV2X2Vycihob3N0LT5kZXYsICJwaW8gbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGN1cnJlbnRseVxu Iik7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0 ID0gZHdfbWNpX2NxZV9zdGFydF9jb21tYW5kKGhvc3QsIGNtZCwgY21kZmxhZ3MpOw0KPiArDQo+ ICsgICAgICAgaWYgKHJldCA9PSAwKSB7DQo+ICsgICAgICAgICAgICAgICBkd19tY2lfY3FlX3Jl YWRfcnNwKGhvc3QsIGNtZCwgY21kLT5yZXNwKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgaWYg KGRhdGEpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmJ5dGVzX3hmZXJlZCArPSAo ZGF0YS0+YmxvY2tzICogZGF0YS0+Ymxrc3opOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAg IGR3X21jaV9jcWVfY29tbWFuZF9jb21wbGV0ZShob3N0LCBob3N0LT5lcnJvcl9pbnRlcnJ1cHQs ICZjbWQtPmVycm9yKTsNCj4gKyAgICAgICBpZiAoZGF0YSkgew0KPiArICAgICAgICAgICAgICAg ZHdfbWNpX2NxZV9kYXRhX2NvbXBsZXRlKGhvc3QsIGhvc3QtPmVycm9yX2ludGVycnVwdCwgJmRh dGEtPmVycm9yKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChob3N0LT51c2VfZG1hID09IFRSQU5T X01PREVfRE1BKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBkd19tY2lfY3FlX3N0b3BfZG1h KGhvc3QsIGRhdGEpOw0KPiArICAgICAgICAgICAgICAgZWxzZSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIC8qVXNpbmcgUElPIG1vZGUqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICBk ZXZfZXJyKGhvc3QtPmRldiwgInBpbyBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgY3VycmVudGx5XG4i KTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBpZiAo cmV0ICE9IDApDQo+ICsgICAgICAgICAgICAgICBkd19tY2lfY3FlX3NlbmRfc3RvcF9hYm9ydCho b3N0LCBzbG90LCBjbWQpOw0KPiArDQo+ICsgICAgICAgaWYgKGNtZC0+b3Bjb2RlID09IFNEX1NX SVRDSF9WT0xUQUdFKSB7DQo+ICsgICAgICAgICAgICAgICAvKg0KPiArICAgICAgICAgICAgICAg ICogSWYgY21kMTEgbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBzcGVjaWFsbHksIHB1dCBpbiBoZXJl Lg0KPiArICAgICAgICAgICAgICAgICovDQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZCBkd19tY2lfY3FlX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IGR3X21jaSAqaG9zdCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR3X21jaV9zbG90ICpzbG90 KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxID0gc2xvdC0+bXJxOw0K PiArDQo+ICsgICAgICAgaWYgKG1ycS0+c2JjKQ0KPiArICAgICAgICAgICAgICAgX19kd19tY2lf Y3FlX3N0YXJ0X3JlcXVlc3QoaG9zdCwgc2xvdCwgbXJxLT5zYmMpOw0KPiArDQo+ICsgICAgICAg aWYgKG1ycS0+Y21kKQ0KPiArICAgICAgICAgICAgICAgX19kd19tY2lfY3FlX3N0YXJ0X3JlcXVl c3QoaG9zdCwgc2xvdCwgbXJxLT5jbWQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19t Y2lfY3FlX3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfcmVxdWVzdCAq bXJxKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBkd19tY2lfc2xvdCAqc2xvdCA9IG1tY19wcml2 KG1tYyk7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaSAqaG9zdCA9IHNsb3QtPmhvc3Q7DQo+ICsN Cj4gKyAgICAgICBXQVJOX09OKHNsb3QtPm1ycSk7DQo+ICsNCj4gKyAgICAgICAvKg0KPiArICAg ICAgICAqIFRoZSBjaGVjayBmb3IgY2FyZCBwcmVzZW5jZSBhbmQgcXVldWVpbmcgb2YgdGhlIHJl cXVlc3QgbXVzdCBiZQ0KPiArICAgICAgICAqIGF0b21pYywgb3RoZXJ3aXNlIHRoZSBjYXJkIGNv dWxkIGJlIHJlbW92ZWQgaW4gYmV0d2VlbiBhbmQgdGhlDQo+ICsgICAgICAgICogcmVxdWVzdCB3 b3VsZG4ndCBmYWlsIHVudGlsIGFub3RoZXIgY2FyZCB3YXMgaW5zZXJ0ZWQuDQo+ICsgICAgICAg ICovDQo+ICsNCj4gKyAgICAgICBpZiAoIWR3X21jaV9jcWVfZ2V0X2NkKG1tYykpIHsNCj4gKyAg ICAgICAgICAgICAgIG1ycS0+Y21kLT5lcnJvciA9IC1FTk9NRURJVU07DQo+ICsgICAgICAgICAg ICAgICBtbWNfcmVxdWVzdF9kb25lKG1tYywgbXJxKTsNCj4gKyAgICAgICAgICAgICAgIHJldHVy bjsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBkb3duX3dyaXRlKCZob3N0LT5jcl9yd19z ZW0pOw0KPiArDQo+ICsgICAgICAgLypjbWRxIGNhc2UgbmVlZHMgZXh0cmEgY2hlY2sqLw0KPiAr ICAgICAgIGlmIChob3N0LT5wZGF0YSAmJiAoaG9zdC0+cGRhdGEtPmNhcHMyICYgTU1DX0NBUDJf Q1FFKSkgew0KPiArICAgICAgICAgICAgICAgaWYgKChob3N0LT5jcWUpID09IE5VTEwpIHsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJkd19tY2lfcmVxdWVz dF9jcWUgbm90IGRvbmUgeWV0XG4iKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWRlbGF5 KDIpOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAobW1j LT5jcWVfb24gPT0gZmFsc2UgJiYgaG9zdC0+Y3FlLT5hY3RpdmF0ZWQgPT0gdHJ1ZSkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgY3FoY2lfZGVhY3RpdmF0ZShtbWMpOw0KPiArDQo+ICsgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgc2xvdC0+bXJxID0gbXJxOw0KPiArICAgICAgIGhvc3QtPm1y cSA9IG1ycTsNCj4gKw0KPiArICAgICAgIGR3X21jaV9jcWVfc3RhcnRfcmVxdWVzdChob3N0LCBz bG90KTsNCj4gKw0KPiArICAgICAgIHRhc2tsZXRfc2NoZWR1bGUoJmhvc3QtPnRhc2tsZXQpOw0K PiArDQo+ICsgICAgICAgdXBfd3JpdGUoJmhvc3QtPmNyX3J3X3NlbSk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyB2b2lkIGR3X21jaV9jcWVfc2V0X2lvcyhzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgc3Ry dWN0IG1tY19pb3MgKmlvcykNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNs b3QgPSBtbWNfcHJpdihtbWMpOw0KPiArICAgICAgIHN0cnVjdCBkd19tY2kgKmhvc3QgPSBzbG90 LT5ob3N0Ow0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBkd19tY2lfZHJ2X2RhdGEgKmRydl9kYXRh ID0gc2xvdC0+aG9zdC0+ZHJ2X2RhdGE7DQo+ICsNCj4gKyAgICAgICBzd2l0Y2ggKGlvcy0+dGlt aW5nKSB7DQo+ICsgICAgICAgY2FzZSBNTUNfVElNSU5HX01NQ19IUzQwMDoNCj4gKyAgICAgICAg ICAgICAgIG1jcV93cml0ZXcoaG9zdCwgSE9TVF9DVFJMMl9SLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAobWNxX3JlYWR3KGhvc3QsIEhPU1RfQ1RSTDJfUikNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmIFNETU1DX1VIU19NT0RFX1NFTF9NQVNLKSB8IFNETU1DX0hTNDAw KTsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGNhc2UgTU1DX1RJTUlOR19N TUNfSFMyMDA6DQo+ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGV3KGhvc3QsIEhPU1RfQ1RSTDJf UiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKG1jcV9yZWFkdyhob3N0LCBIT1NUX0NUUkwy X1IpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBTRE1NQ19VSFNfTU9ERV9T RUxfTUFTSykgfCBTRE1NQ19IUzIwMCk7DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAg ICAgICBjYXNlIE1NQ19USU1JTkdfTU1DX0hTOg0KPiArICAgICAgICAgICAgICAgbWNxX3dyaXRl dyhob3N0LCBIT1NUX0NUUkwyX1IsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIChtY3FfcmVh ZHcoaG9zdCwgSE9TVF9DVFJMMl9SKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICYgU0RNTUNfVUhTX01PREVfU0VMX01BU0spIHwgU0RNTUNfU0RSKTsNCj4gKyAgICAgICAgICAg ICAgIGJyZWFrOw0KPiArICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICAvKk1NQ19U SU1JTkdfTEVHQUNZIGNhc2UqLw0KPiArICAgICAgICAgICAgICAgbWNxX3dyaXRldyhob3N0LCBI T1NUX0NUUkwyX1IsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIChtY3FfcmVhZHcoaG9zdCwg SE9TVF9DVFJMMl9SKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgU0RNTUNf VUhTX01PREVfU0VMX01BU0spIHwgU0RNTUNfTEVHQUNZKTsNCj4gKyAgICAgICB9DQo+ICsNCj4g KyAgICAgICBzbG90LT5jbG9jayA9IGlvcy0+Y2xvY2s7DQo+ICsNCj4gKyAgICAgICBpZiAoZHJ2 X2RhdGEgJiYgZHJ2X2RhdGEtPnNldF9pb3MpDQo+ICsgICAgICAgICAgICAgICBkcnZfZGF0YS0+ c2V0X2lvcyhzbG90LCBpb3MpOw0KPiArDQo+ICsgICAgICAgc3dpdGNoIChpb3MtPmJ1c193aWR0 aCkgew0KPiArICAgICAgIGNhc2UgTU1DX0JVU19XSURUSF80Og0KPiArICAgICAgICAgICAgICAg bWNxX3dyaXRlYihob3N0LCBIT1NUX0NUUkwxX1IsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg IChtY3FfcmVhZGIoaG9zdCwgSE9TVF9DVFJMMV9SKSAmDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIChTRE1NQ19FWFRfREFUX1hGRVJfTUFTSyAmIFNETU1DX0RBVF9YRkVSX1dJRFRIX01BU0sp KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxTRE1NQ19CVVNfV0lEVEhfNCk7 DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBjYXNlIE1NQ19CVVNfV0lEVEhf ODoNCj4gKyAgICAgICAgICAgICAgIG1jcV93cml0ZWIoaG9zdCwgSE9TVF9DVFJMMV9SLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAobWNxX3JlYWRiKGhvc3QsIEhPU1RfQ1RSTDFfUikgJg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETU1DX0VYVF9EQVRfWEZFUl9NQVNL KSB8IFNETU1DX0JVU19XSURUSF84KTsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAg ICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICAvKiBzZXQgZGVmYXVsdCAxIGJpdCBtb2Rl ICovDQo+ICsgICAgICAgICAgICAgICBtY3Ffd3JpdGViKGhvc3QsIEhPU1RfQ1RSTDFfUiwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgKG1jcV9yZWFkYihob3N0LCBIT1NUX0NUUkwxX1IpICYN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0RNTUNfRVhUX0RBVF9YRkVSX01B U0sgJg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETU1DX0RBVF9YRkVSX1dJ RFRIX01BU0spKSB8IFNETU1DX0JVU19XSURUSF8xKTsNCj4gKyAgICAgICB9DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgZHdfbWNpX2NxZV9zd2l0Y2hfdm9sdGFnZShzdHJ1Y3QgbW1jX2hvc3Qg Km1tYywgc3RydWN0IG1tY19pb3MgKmlvcykNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNp X3Nsb3QgKnNsb3QgPSBtbWNfcHJpdihtbWMpOw0KPiArICAgICAgIHN0cnVjdCBkd19tY2kgKmhv c3QgPSBzbG90LT5ob3N0Ow0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBkd19tY2lfZHJ2X2RhdGEg KmRydl9kYXRhID0gaG9zdC0+ZHJ2X2RhdGE7DQo+ICsNCj4gKyAgICAgICBpZiAoZHJ2X2RhdGEg JiYgZHJ2X2RhdGEtPnN3aXRjaF92b2x0YWdlKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGRy dl9kYXRhLT5zd2l0Y2hfdm9sdGFnZShtbWMsIGlvcyk7DQo+ICsNCj4gKyAgICAgICByZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfY3FlX2dldF9ybyhzdHJ1Y3QgbW1j X2hvc3QgKm1tYykNCj4gK3sNCj4gKyAgICAgICBpbnQgcmVhZF9vbmx5ID0gMDsNCj4gKyAgICAg ICBpbnQgZ3Bpb19ybzsNCj4gKw0KPiArICAgICAgIGdwaW9fcm8gPSBtbWNfZ3Bpb19nZXRfcm8o bW1jKTsNCj4gKw0KPiArICAgICAgIC8qIFVzZSBwbGF0Zm9ybSBnZXRfcm8gZnVuY3Rpb24sIGVs c2UgdHJ5IG9uIGJvYXJkIHdyaXRlIHByb3RlY3QgKi8NCj4gKyAgICAgICBpZiAoZ3Bpb19ybyA+ PSAwKQ0KPiArICAgICAgICAgICAgICAgcmVhZF9vbmx5ID0gZ3Bpb19ybzsNCj4gKyAgICAgICBl bHNlDQo+ICsgICAgICAgICAgICAgICAvKk5lZWQgdG8gcmVhZCB0aGUgSVAgcmVnaXN0ZXIgdG8g anVkZ2UgaWYgcm8qLw0KPiArICAgICAgICAgICAgICAgZGV2X2VycigmbW1jLT5jbGFzc19kZXYs ICJJUCBnZXRfcm8gZmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgY3VycmVudGx5LlxuIik7DQo+ ICsNCj4gKyAgICAgICBkZXZfZGJnKCZtbWMtPmNsYXNzX2RldiwgImNhcmQgaXMgJXNcbiIsDQo+ ICsgICAgICAgICAgICAgICByZWFkX29ubHkgPyAicmVhZC1vbmx5IiA6ICJyZWFkLXdyaXRlIik7 DQo+ICsNCj4gKyAgICAgICByZXR1cm4gcmVhZF9vbmx5Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50IGR3X21jaV9jcWVfZXhlY3V0ZV90dW5pbmcoc3RydWN0IG1tY19ob3N0ICptbWMsIHUzMiBv cGNvZGUpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaV9zbG90ICpzbG90ID0gbW1jX3By aXYobW1jKTsNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpICpob3N0ID0gc2xvdC0+aG9zdDsNCj4g KyAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWNpX2Rydl9kYXRhICpkcnZfZGF0YSA9IGhvc3QtPmRy dl9kYXRhOw0KPiArICAgICAgIGludCBlcnIgPSAtRUlOVkFMOw0KPiArDQo+ICsgICAgICAgaWYg KGRydl9kYXRhICYmIGRydl9kYXRhLT5leGVjdXRlX3R1bmluZykNCj4gKyAgICAgICAgICAgICAg IGVyciA9IGRydl9kYXRhLT5leGVjdXRlX3R1bmluZyhzbG90LCBvcGNvZGUpOw0KPiArICAgICAg IHJldHVybiBlcnI7DQo+ICsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBkd19tY2lfY3FlX3By ZXBhcmVfaHM0MDBfdHVuaW5nKHN0cnVjdCBtbWNfaG9zdCAqbW1jLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1jX2lvcyAqaW9zKQ0KPiArew0KPiAr ICAgICAgIHN0cnVjdCBkd19tY2lfc2xvdCAqc2xvdCA9IG1tY19wcml2KG1tYyk7DQo+ICsgICAg ICAgc3RydWN0IGR3X21jaSAqaG9zdCA9IHNsb3QtPmhvc3Q7DQo+ICsgICAgICAgY29uc3Qgc3Ry dWN0IGR3X21jaV9kcnZfZGF0YSAqZHJ2X2RhdGEgPSBob3N0LT5kcnZfZGF0YTsNCj4gKw0KPiAr ICAgICAgIGlmIChkcnZfZGF0YSAmJiBkcnZfZGF0YS0+cHJlcGFyZV9oczQwMF90dW5pbmcpDQo+ ICsgICAgICAgICAgICAgICByZXR1cm4gZHJ2X2RhdGEtPnByZXBhcmVfaHM0MDBfdHVuaW5nKGhv c3QsIGlvcyk7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgZHdfbWNpX2NxZV9oczQwMF9jb21wbGV0ZShzdHJ1Y3QgbW1jX2hvc3QgKm1tYykNCj4g K3sNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNsb3QgPSBtbWNfcHJpdihtbWMpOw0K PiArICAgICAgIHN0cnVjdCBkd19tY2kgKmhvc3QgPSBzbG90LT5ob3N0Ow0KPiArICAgICAgIGNv bnN0IHN0cnVjdCBkd19tY2lfZHJ2X2RhdGEgKmRydl9kYXRhID0gaG9zdC0+ZHJ2X2RhdGE7DQo+ ICsNCj4gKyAgICAgICBpZiAoZHJ2X2RhdGEgJiYgZHJ2X2RhdGEtPmhzNDAwX2NvbXBsZXRlKQ0K PiArICAgICAgICAgICAgICAgZHJ2X2RhdGEtPmhzNDAwX2NvbXBsZXRlKG1tYyk7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB2b2lkIGR3X21jaV9jcWVfaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAq bW1jLCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21j aV9zbG90ICpzbG90ID0gbW1jX3ByaXYobW1jKTsNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpICpo b3N0ID0gc2xvdC0+aG9zdDsNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWNpX2Rydl9kYXRh ICpkcnZfZGF0YSA9IGhvc3QtPmRydl9kYXRhOw0KPiArDQo+ICsgICAgICAgLyoNCj4gKyAgICAg ICAgKiBBZGQgYW55IHF1aXJrcyBmb3IgdGhpcyBzeW5vcHN5cyBJUCBoZXJlIG9yDQo+ICsgICAg ICAgICogZGVhbCB3aXRoIHNvbWV0aGluZyBzcGVjaWFsIGZvciBzb21lIHNwZWNpZmljDQo+ICsg ICAgICAgICogdmVuZG9ycycgU09DIHBsYXRmb3JtIGJ5IGNhbGxpbmcgZHJ2X2RhdGEtPmluaXRf Y2FyZCgpLg0KPiArICAgICAgICAqLw0KPiArICAgICAgIGlmIChkcnZfZGF0YSAmJiBkcnZfZGF0 YS0+aW5pdF9jYXJkKQ0KPiArICAgICAgICAgICAgICAgZHJ2X2RhdGEtPmluaXRfY2FyZChtbWMs IGNhcmQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19ob3N0X29wcyBk d19tY2lfb3BzID0gew0KPiArICAgICAgIC5yZXF1ZXN0ICAgICAgICAgICAgICAgID0gZHdfbWNp X2NxZV9yZXF1ZXN0LA0KPiArICAgICAgIC5zZXRfaW9zICAgICAgICAgICAgICAgID0gZHdfbWNp X2NxZV9zZXRfaW9zLA0KPiArICAgICAgIC5nZXRfcm8gICAgICAgICAgICAgICAgID0gZHdfbWNp X2NxZV9nZXRfcm8sDQo+ICsgICAgICAgLmdldF9jZCAgICAgICAgICAgICAgICAgPSBkd19tY2lf Y3FlX2dldF9jZCwNCj4gKyAgICAgICAuZXhlY3V0ZV90dW5pbmcgICAgICAgICA9IGR3X21jaV9j cWVfZXhlY3V0ZV90dW5pbmcsDQo+ICsgICAgICAgLnN0YXJ0X3NpZ25hbF92b2x0YWdlX3N3aXRj aCA9IGR3X21jaV9jcWVfc3dpdGNoX3ZvbHRhZ2UsDQo+ICsgICAgICAgLmluaXRfY2FyZCAgICAg ICAgICAgICAgPSBkd19tY2lfY3FlX2luaXRfY2FyZCwNCj4gKyAgICAgICAucHJlcGFyZV9oczQw MF90dW5pbmcgICA9IGR3X21jaV9jcWVfcHJlcGFyZV9oczQwMF90dW5pbmcsDQo+ICsgICAgICAg LmhzNDAwX2NvbXBsZXRlICAgICAgICAgPSBkd19tY2lfY3FlX2hzNDAwX2NvbXBsZXRlLA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIHZvaWQgZHdfbWNpX2NxZV90YXNrbGV0X2Z1bmModW5zaWduZWQg bG9uZyBwcml2KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBkd19tY2kgKmhvc3QgPSAoc3RydWN0 IGR3X21jaSAqKXByaXY7DQo+ICsgICAgICAgc3RydWN0IG1tY19ob3N0ICpwcmV2X21tYyA9IGhv c3QtPnNsb3QtPm1tYzsNCj4gKyAgICAgICBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycTsNCj4gKyAg ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiArDQo+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNh dmUoJmhvc3QtPmlycV9sb2NrLCBmbGFncyk7DQo+ICsNCj4gKyAgICAgICBob3N0LT5jbWQgPSBO VUxMOw0KPiArICAgICAgIGhvc3QtPmRhdGEgPSBOVUxMOw0KPiArICAgICAgIG1ycSA9IGhvc3Qt Pm1ycTsNCj4gKyAgICAgICBob3N0LT5zbG90LT5tcnEgPSBOVUxMOw0KPiArICAgICAgIGhvc3Qt Pm1ycSA9IE5VTEw7DQo+ICsNCj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZob3N0 LT5pcnFfbG9jaywgZmxhZ3MpOw0KPiArDQo+ICsgICAgICAgbW1jX3JlcXVlc3RfZG9uZShwcmV2 X21tYywgbXJxKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlycXJldHVybl90IGR3X21jaV9jcWVf aW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qg ZHdfbWNpICpob3N0ID0gZGV2X2lkOw0KPiArICAgICAgIHN0cnVjdCBtbWNfaG9zdCAqbW1jID0g aG9zdC0+c2xvdC0+bW1jOw0KPiArICAgICAgIHN0cnVjdCBjcWhjaV9ob3N0ICpjcV9ob3N0ID0g TlVMTDsNCj4gKyAgICAgICBpbnQgY21kX2Vycm9yID0gMCwgZGF0YV9lcnJvciA9IDA7DQo+ICsN Cj4gKyAgICAgICBpZiAoaG9zdC0+cGRhdGEgJiYgKGhvc3QtPnBkYXRhLT5jYXBzMiAmIE1NQ19D QVAyX0NRRSkpDQo+ICsgICAgICAgICAgICAgICBjcV9ob3N0ID0gbW1jLT5jcWVfcHJpdmF0ZTsN Cj4gKw0KPiArICAgICAgIGR3X21jaV9nZXRfaW50KGhvc3QpOw0KPiArDQo+ICsgICAgICAgaWYg KGhvc3QtPnBkYXRhICYmIChob3N0LT5wZGF0YS0+Y2FwczIgJiBNTUNfQ0FQMl9DUUUpKSB7DQo+ ICsgICAgICAgICAgICAgICBpZiAobW1jLT5jcWVfb24gPT0gZmFsc2UgJiYgY3FfaG9zdC0+YWN0 aXZhdGVkID09IGZhbHNlKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBkd19tY2lfY2xyX3Np Z25hbF9pbnQoaG9zdCk7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIGR3 X21jaV9jbHJfc2lnbmFsX2ludChob3N0KTsNCj4gKyAgICAgICB9DQo+ICsgICAgICAgLyppZiBy dW4gdGhlIGNtZHEgbW9kZSovDQo+ICsgICAgICAgaWYgKGhvc3QtPnBkYXRhICYmIChob3N0LT5w ZGF0YS0+Y2FwczIgJiBNTUNfQ0FQMl9DUUUpICYmDQo+ICsgICAgICAgICAgICAgICBtbWMtPmNx ZV9vbiA9PSB0cnVlICYmIGNxX2hvc3QtPmFjdGl2YXRlZCA9PSB0cnVlKSB7DQo+ICsgICAgICAg ICAgICAgICBpZiAoaG9zdC0+bm9ybWFsX2ludGVycnVwdCAmIFNETU1DX0VSUl9JTlRFUlJVUFQp IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJjbWRxIGVy cm9yOiBpbnRlcnJ1cHQgc3RhdHVzPSUwOHgsIGVycm9yIGludGVycnVwdD0weCUwOHgsIENRSVM9 MHgleCwgQ1FUQ049MHgleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo b3N0LT5ub3JtYWxfaW50ZXJydXB0LCBob3N0LT5lcnJvcl9pbnRlcnJ1cHQsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGwoaG9zdC0+Y3FlLT5tbWlvICsgQ1FIQ0lfSVMp LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsKGhvc3QtPmNxZS0+bW1p byArIENRSENJX1RDTikpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGR3X21jaV9j cWVfY29tbWFuZF9jb21wbGV0ZShob3N0LCBob3N0LT5lcnJvcl9pbnRlcnJ1cHQsICZjbWRfZXJy b3IpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBkd19tY2lfY3FlX2RhdGFfY29tcGxldGUo aG9zdCwgaG9zdC0+ZXJyb3JfaW50ZXJydXB0LCAmZGF0YV9lcnJvcik7DQo+ICsgICAgICAgICAg ICAgICB9DQo+ICsgICAgICAgICAgICAgICBjcWhjaV9pcnEobW1jLCAodTMyKShob3N0LT5ub3Jt YWxfaW50ZXJydXB0KSwgY21kX2Vycm9yLCBkYXRhX2Vycm9yKTsNCj4gKyAgICAgICAgICAgICAg IGR3X21jaV9jbHJfaW50KGhvc3QpOw0KPiArDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gSVJR X0hBTkRMRUQ7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaWYgKGhvc3QtPmludF93YWl0 aW5nKSB7DQo+ICsgICAgICAgICAgICAgICBkZWxfdGltZXIoJmhvc3QtPnRpbWVyKTsNCj4gKyAg ICAgICAgICAgICAgIGNvbXBsZXRlKGhvc3QtPmludF93YWl0aW5nKTsNCj4gKyAgICAgICB9DQo+ ICsNCj4gKyAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ICsNCj4gK30NCj4gKw0KPiArc3Rh dGljIHZvaWQgZHdfbWNpX2NxZV9zZXR1cChzdHJ1Y3QgZHdfbWNpICpob3N0KQ0KPiArew0KPiAr ICAgICAgIG1jcV93cml0ZWIoaG9zdCwgU1dfUlNUX1IsIChTRE1NQ19SU1RfQUxMfFNETU1DX1JT VF9DTUR8U0RNTUNfUlNUX0RBVCkpOw0KPiArICAgICAgIG1jcV93cml0ZWIoaG9zdCwgVE9VVF9D VFJMX1IsIDB4ZSk7DQo+ICsgICAgICAgbWNxX3dyaXRldyhob3N0LCBIT1NUX0NUUkwyX1IsIFNE TU1DX0hPU1RfVkVSNF9FTkFCTEV8U0RNTUNfU0lHTkFMSU5HX0VOKTsNCj4gKyAgICAgICBtY3Ff d3JpdGV3KGhvc3QsIE5PUk1BTF9JTlRfU1RBVF9FTl9SLCAweGZmZmYpOw0KPiArICAgICAgIG1j cV93cml0ZXcoaG9zdCwgRVJST1JfSU5UX1NUQVRfRU5fUiwgU0RNTUNfQUxMX0VSUl9TVEFUX0VO KTsNCj4gKyAgICAgICAvKkNhcmQgZGV0ZWN0IHdpbGwgYmUgZW5hYmxlZCBpbiB0aGUgbGFzdCov DQo+ICsgICAgICAgbWNxX3dyaXRldyhob3N0LCBOT1JNQUxfSU5UX1NJR05BTF9FTl9SLCAofihT RE1NQ19DQVJEX0lOU0VSVElPTl9TSUdOQUxfRU4gfA0KPiArICAgICAgICAgICAgICAgU0RNTUNf Q0FSRF9SRU1PVkFMX1NJR05BTF9FTiB8IFNETU1DX0NBUkRfSU5URVJSVVBUX1NJR05BTF9FTikg JiAweGZmZmYpKTsNCj4gKyAgICAgICBtY3Ffd3JpdGV3KGhvc3QsIEVSUk9SX0lOVF9TSUdOQUxf RU5fUiwgU0RNTUNfQUxMX0VSUl9TSUdOQUxfRU4pOw0KPiArICAgICAgIG1jcV93cml0ZWIoaG9z dCwgQ1RSTF9SLCBTRE1NQ19SU1RfTl9PRXxTRE1NQ19SU1RfTnxTRE1NQ19DQVJEX0lTX0VNTUMp Ow0KPiArICAgICAgIG1jcV93cml0ZWIoaG9zdCwgSE9TVF9DVFJMMV9SLA0KPiArICAgICAgICAg ICAgICAgKG1jcV9yZWFkYihob3N0LCBIT1NUX0NUUkwxX1IpJjB4ZTcpIHwgKFNETU1DX0FETUEy XzMyIDw8IFNETU1DX0RNQV9TRUwpKTsNCj4gKyAgICAgICBtY3Ffd3JpdGViKGhvc3QsIE1TSENf Q1RSTF9SLCBtY3FfcmVhZGIoaG9zdCwgTVNIQ19DVFJMX1IpICYgKH5TRE1NQ19DTURfQ09ORkxJ Q1RfQ0hFQ0spKTsNCj4gKyAgICAgICBtY3Ffd3JpdGV3KGhvc3QsIENMS19DVFJMX1IsIG1jcV9y ZWFkdyhob3N0LCBDTEtfQ1RSTF9SKXxTRE1NQ19JTlRFUk5BTF9DTEtfRU4pOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IGR3X21jaV9jcWVfaW5pdF9zbG90X2NhcHMoc3RydWN0IGR3X21jaV9z bG90ICpzbG90KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBkd19tY2kgKmhvc3QgPSBzbG90LT5o b3N0Ow0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBkd19tY2lfZHJ2X2RhdGEgKmRydl9kYXRhID0g aG9zdC0+ZHJ2X2RhdGE7DQo+ICsgICAgICAgc3RydWN0IG1tY19ob3N0ICptbWMgPSBzbG90LT5t bWM7DQo+ICsgICAgICAgaW50IGN0cmxfaWQ7DQo+ICsNCj4gKyAgICAgICBpZiAoaG9zdC0+cGRh dGEtPmNhcHMpDQo+ICsgICAgICAgICAgICAgICBtbWMtPmNhcHMgPSBob3N0LT5wZGF0YS0+Y2Fw czsNCj4gKw0KPiArICAgICAgIGlmIChob3N0LT5wZGF0YS0+cG1fY2FwcykNCj4gKyAgICAgICAg ICAgICAgIG1tYy0+cG1fY2FwcyA9IGhvc3QtPnBkYXRhLT5wbV9jYXBzOw0KPiArDQo+ICsgICAg ICAgaWYgKGhvc3QtPmRldi0+b2Zfbm9kZSkgew0KPiArICAgICAgICAgICAgICAgY3RybF9pZCA9 IG9mX2FsaWFzX2dldF9pZChob3N0LT5kZXYtPm9mX25vZGUsICJtc2hjIik7DQo+ICsgICAgICAg ICAgICAgICBpZiAoY3RybF9pZCA8IDApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGN0cmxf aWQgPSAwOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICBjdHJsX2lkID0g dG9fcGxhdGZvcm1fZGV2aWNlKGhvc3QtPmRldiktPmlkOw0KPiArICAgICAgIH0NCj4gKw0KPiAr ICAgICAgIGlmIChkcnZfZGF0YSAmJiBkcnZfZGF0YS0+Y2Fwcykgew0KPiArICAgICAgICAgICAg ICAgaWYgKGN0cmxfaWQgPj0gZHJ2X2RhdGEtPm51bV9jYXBzKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAiaW52YWxpZCBjb250cm9sbGVyIGlkICVkXG4i LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxfaWQpOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgICAgICAgICAgIH0NCj4g KyAgICAgICAgICAgICAgIG1tYy0+Y2FwcyB8PSBkcnZfZGF0YS0+Y2Fwc1tjdHJsX2lkXTsNCj4g KyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBpZiAoaG9zdC0+cGRhdGEtPmNhcHMyKQ0KPiArICAg ICAgICAgICAgICAgbW1jLT5jYXBzMiA9IGhvc3QtPnBkYXRhLT5jYXBzMjsNCj4gKw0KPiArICAg ICAgIG1tYy0+Zl9taW4gPSBEV19NQ0lfRlJFUV9NSU47DQo+ICsgICAgICAgaWYgKCFtbWMtPmZf bWF4KQ0KPiArICAgICAgICAgICAgICAgbW1jLT5mX21heCA9IERXX01DSV9GUkVRX01BWDsNCj4g Kw0KPiArICAgICAgIC8qIFByb2Nlc3MgU0RJTyBJUlFzIHRocm91Z2ggdGhlIHNkaW9faXJxX3dv cmsuICovDQo+ICsgICAgICAgaWYgKG1tYy0+Y2FwcyAmIE1NQ19DQVBfU0RJT19JUlEpDQo+ICsg ICAgICAgICAgICAgICBtbWMtPmNhcHMyIHw9IE1NQ19DQVAyX1NESU9fSVJRX05PVEhSRUFEOw0K PiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZHdfbWNp X2NxZV9pbml0X3Nsb3Qoc3RydWN0IGR3X21jaSAqaG9zdCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1 Y3QgbW1jX2hvc3QgKm1tYzsNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNsb3Q7DQo+ ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIG1tYyA9IG1tY19hbGxvY19ob3N0KHNp emVvZihzdHJ1Y3QgZHdfbWNpX3Nsb3QpLCBob3N0LT5kZXYpOw0KPiArICAgICAgIGlmICghbW1j KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKyAgICAgICBzbG90 ID0gbW1jX3ByaXYobW1jKTsNCj4gKyAgICAgICBzbG90LT5pZCA9IDA7DQo+ICsgICAgICAgc2xv dC0+c2Rpb19pZCA9IGhvc3QtPnNkaW9faWQwICsgc2xvdC0+aWQ7DQo+ICsgICAgICAgc2xvdC0+ bW1jID0gbW1jOw0KPiArICAgICAgIHNsb3QtPmhvc3QgPSBob3N0Ow0KPiArICAgICAgIGhvc3Qt PnNsb3QgPSBzbG90Ow0KPiArDQo+ICsgICAgICAgbW1jLT5vcHMgPSAmZHdfbWNpX29wczsNCj4g Kw0KPiArICAgICAgIC8qaWYgdGhlcmUgYXJlIGV4dGVybmFsIHJlZ3VsYXRvcnMsIGdldCB0aGVt Ki8NCj4gKyAgICAgICByZXQgPSBtbWNfcmVndWxhdG9yX2dldF9zdXBwbHkobW1jKTsNCj4gKyAg ICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZ290byBlcnJfaG9zdF9hbGxvY2F0ZWQ7 DQo+ICsNCj4gKyAgICAgICBpZiAoIW1tYy0+b2NyX2F2YWlsKQ0KPiArICAgICAgICAgICAgICAg bW1jLT5vY3JfYXZhaWwgPSBNTUNfVkREXzMyXzMzIHwgTU1DX1ZERF8zM18zNDsNCj4gKw0KPiAr ICAgICAgIGRldl9pbmZvKGhvc3QtPmRldiwgInJlZ3VsYXRvciBzdXBwb3J0IHZvbGFnZSBvY3Jf YXZhaWw9MHgleFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbW1jLT5vY3JfYXZhaWwp Ow0KPiArDQo+ICsgICAgICAgcmV0ID0gbW1jX29mX3BhcnNlKG1tYyk7DQo+ICsgICAgICAgaWYg KHJldCkNCj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2hvc3RfYWxsb2NhdGVkOw0KPiArDQo+ ICsgICAgICAgcmV0ID0gZHdfbWNpX2NxZV9pbml0X3Nsb3RfY2FwcyhzbG90KTsNCj4gKyAgICAg ICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZ290byBlcnJfaG9zdF9hbGxvY2F0ZWQ7DQo+ ICsNCj4gKyAgICAgICAvKiBVc2VmdWwgZGVmYXVsdHMgaWYgcGxhdGZvcm0gZGF0YSBpcyB1bnNl dC4gKi8NCj4gKyAgICAgICBpZiAoaG9zdC0+dXNlX2RtYSA9PSBUUkFOU19NT0RFX0RNQSkgew0K PiArICAgICAgICAgICAgICAgbW1jLT5tYXhfc2VncyA9IDI1NjsNCj4gKyAgICAgICAgICAgICAg IG1tYy0+bWF4X2Jsa19zaXplID0gNTEyOw0KPiArICAgICAgICAgICAgICAgbW1jLT5tYXhfc2Vn X3NpemUgPSAweDEwMDA7DQo+ICsgICAgICAgICAgICAgICBtbWMtPm1heF9yZXFfc2l6ZSA9IG1t Yy0+bWF4X3NlZ19zaXplICogbW1jLT5tYXhfc2VnczsNCj4gKyAgICAgICAgICAgICAgIG1tYy0+ bWF4X2Jsa19jb3VudCA9IG1tYy0+bWF4X3JlcV9zaXplIC8gNTEyOw0KPiArICAgICAgIH0gZWxz ZSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfaW5mbyhob3N0LT5kZXYsICJkdy1tbWMtY3FlIHBp byBtb2RlIGlzIFRvRG8uXG4iKTsNCj4gKyAgICAgICAgICAgICAgIC8qIFRvIERPLCBUUkFOU19N T0RFX1BJTyAqLw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGR3X21jaV9jcWVfZ2V0X2Nk KG1tYyk7DQo+ICsNCj4gKyAgICAgICByZXQgPSBtbWNfYWRkX2hvc3QobW1jKTsNCj4gKyAgICAg ICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZ290byBlcnJfaG9zdF9hbGxvY2F0ZWQ7DQo+ ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArZXJyX2hvc3RfYWxsb2NhdGVkOg0KPiAr ICAgICAgIG1tY19mcmVlX2hvc3QobW1jKTsNCj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiArfQ0K PiArDQo+ICtzdGF0aWMgdm9pZCBkd19tY2lfY3FlX2NsZWFudXBfc2xvdChzdHJ1Y3QgZHdfbWNp X3Nsb3QgKnNsb3QpDQo+ICt7DQo+ICsgICAgICAgLyogRGVidWdmcyBzdHVmZiBpcyBjbGVhbmVk IHVwIGJ5IG1tYyBjb3JlICovDQo+ICsgICAgICAgbW1jX3JlbW92ZV9ob3N0KHNsb3QtPm1tYyk7 DQo+ICsgICAgICAgc2xvdC0+aG9zdC0+c2xvdCA9IE5VTEw7DQo+ICsgICAgICAgbW1jX2ZyZWVf aG9zdChzbG90LT5tbWMpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBkd19tY2lfY3FlX2lu aXRfZG1hKHN0cnVjdCBkd19tY2kgKmhvc3QpDQo+ICt7DQo+ICsgICAgICAgaG9zdC0+dXNlX2Rt YSA9IFRSQU5TX01PREVfRE1BOw0KPiArDQo+ICsgICAgICAgLyogRGV0ZXJtaW5lIHdoaWNoIERN QSBpbnRlcmZhY2UgdG8gdXNlICovDQo+ICsgICAgICAgLyogdXNpbmcgMzJiaXQgRE1BIGJ5IGRl ZmF1bHQsDQo+ICsgICAgICAgICogdXNlciBjYW4gbW9kaWZ5IHRoaXMgc2V0dGluZyBieSBkcnZf ZGF0YS0+aW5pdCgpDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgaWYgKGhvc3QtPnVzZV9kbWEg PT0gVFJBTlNfTU9ERV9ETUEpIHsNCj4gKyAgICAgICAgICAgICAgIGhvc3QtPmRtYV82NGJpdF9h ZGRyZXNzID0gMDsNCj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGhvc3QtPmRldiwgIklETUFD IHN1cHBvcnRzIDMyLWJpdCBhZGRyZXNzIG1vZGUuXG4iKTsNCj4gKyAgICAgICB9DQo+ICsNCj4g KyAgICAgICAvKiBBbGxvYyBtZW1vcnkgZm9yIHNnIHRyYW5zbGF0aW9uICovDQo+ICsgICAgICAg aG9zdC0+c2dfY3B1ID0gZG1hX2FsbG9jX2NvaGVyZW50KGhvc3QtPmRldiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdfTUNJX0RFU0NfTEVOLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG9zdC0+ c2dfZG1hLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIWhvc3QtPnNnX2NwdSkgew0KPiAr ICAgICAgICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICIlczogY291bGQgbm90IGFsbG9jIERNQSBtZW1vcnlcbiIsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIF9fZnVuY19fKTsNCj4gKyAgICAgICAgICAgICAgIGdvdG8gbm9fZG1hOw0KPiAr ICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldHVybjsNCj4gKw0KPiArbm9fZG1hOg0KPiArICAg ICAgIGRldl9pbmZvKGhvc3QtPmRldiwgIlVzaW5nIFBJTyBtb2RlLlxuIik7DQo+ICsgICAgICAg aG9zdC0+dXNlX2RtYSA9IFRSQU5TX01PREVfUElPOw0KPiArfQ0KPiArDQo+ICsjaWZkZWYgQ09O RklHX09GDQo+ICtzdGF0aWMgc3RydWN0IGR3X21jaV9ib2FyZCAqZHdfbWNpX2NxZV9wYXJzZV9k dChzdHJ1Y3QgZHdfbWNpICpob3N0KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBkd19tY2lfYm9h cmQgKnBkYXRhOw0KPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGhvc3QtPmRldjsNCj4g KyAgICAgICBjb25zdCBzdHJ1Y3QgZHdfbWNpX2Rydl9kYXRhICpkcnZfZGF0YSA9IGhvc3QtPmRy dl9kYXRhOw0KPiArICAgICAgIGludCByZXQ7DQo+ICsgICAgICAgdTMyIGNsb2NrX2ZyZXF1ZW5j eTsNCj4gKw0KPiArICAgICAgIHBkYXRhID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwZGF0 YSksIEdGUF9LRVJORUwpOw0KPiArICAgICAgIGlmICghcGRhdGEpDQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4gKw0KPiArICAgICAgIC8qIGZpbmQgcmVzZXQg Y29udHJvbGxlciB3aGVuIGV4aXN0ICovDQo+ICsgICAgICAgcGRhdGEtPnJzdGMgPSBkZXZtX3Jl c2V0X2NvbnRyb2xfZ2V0X29wdGlvbmFsKGRldiwgInJlc2V0Iik7DQo+ICsgICAgICAgaWYgKElT X0VSUihwZGF0YS0+cnN0YykpIHsNCj4gKyAgICAgICAgICAgICAgIGlmIChQVFJfRVJSKHBkYXRh LT5yc3RjKSA9PSAtRVBST0JFX0RFRkVSKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBk ZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAiY2FyZC1kZXRlY3QtZGVsYXkiLA0KPiArICAg ICAgICAgICAgICAgJnBkYXRhLT5kZXRlY3RfZGVsYXlfbXMpOw0KPiArDQo+ICsgICAgICAgaWYg KCFkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAiY2xvY2stZnJlcXVlbmN5IiwgJmNsb2Nr X2ZyZXF1ZW5jeSkpDQo+ICsgICAgICAgICAgICAgICBwZGF0YS0+YnVzX2h6ID0gY2xvY2tfZnJl cXVlbmN5Ow0KPiArDQo+ICsgICAgICAgaWYgKGRydl9kYXRhICYmIGRydl9kYXRhLT5wYXJzZV9k dCkgew0KPiArICAgICAgICAgICAgICAgcmV0ID0gZHJ2X2RhdGEtPnBhcnNlX2R0KGhvc3QpOw0K PiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEVSUl9QVFIocmV0KTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4gcGRh dGE7DQo+ICt9DQo+ICsNCj4gKyNlbHNlIC8qIENPTkZJR19PRiAqLw0KPiArc3RhdGljIHN0cnVj dCBkd19tY2lfYm9hcmQgKmR3X21jaV9jcWVfcGFyc2VfZHQoc3RydWN0IGR3X21jaSAqaG9zdCkN Cj4gK3sNCj4gKyAgICAgICByZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCj4gK30NCj4gKyNlbmRp ZiAvKiBDT05GSUdfT0YgKi8NCj4gKw0KPiArc3RhdGljIHZvaWQgZHdfbWNpX2NxZV9jdG9fdGlt ZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGR3X21jaSAq aG9zdCA9IGZyb21fdGltZXIoaG9zdCwgdCwgdGltZXIpOw0KPiArDQo+ICsgICAgICAgaWYgKGhv c3QtPmludF93YWl0aW5nKSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldiwg ImZpcmVkLCBvcGNvZGU9JWQsIGFyZz0weCV4LCBpcnEgc3RhdHVzPTB4JXgsIGVyciBpcnE9MHgl eCwgYXV0byBlcnIgaXJxPTB4JXhcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaG9zdC0+b3Bjb2RlLCBob3N0LT5hcmcsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGhv c3QtPm5vcm1hbF9pbnRlcnJ1cHQsIGhvc3QtPmVycm9yX2ludGVycnVwdCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgaG9zdC0+YXV0b19lcnJvcl9pbnRlcnJ1cHQpOw0KPiArDQo+ICsgICAg ICAgICAgICAgICBkd19tY2lfY2xyX3NpZ25hbF9pbnQoaG9zdCk7DQo+ICsgICAgICAgICAgICAg ICBkd19tY2lfZ2V0X2ludChob3N0KTsNCj4gKw0KPiArICAgICAgICAgICAgICAgY29tcGxldGUo aG9zdC0+aW50X3dhaXRpbmcpOw0KPiArICAgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQgZHdfbWNpX2NxaGNpX2luaXQoc3RydWN0IGR3X21jaSAqaG9zdCkNCj4gK3sNCj4gKyAgICAg ICBpZiAoaG9zdC0+cGRhdGEgJiYgKGhvc3QtPnBkYXRhLT5jYXBzMiAmIE1NQ19DQVAyX0NRRSkp IHsNCj4gKyAgICAgICAgICAgICAgIGhvc3QtPmNxZSA9IGNxaGNpX3BsdGZtX2luaXQoaG9zdC0+ cGRldik7DQo+ICsgICAgICAgICAgICAgICBpZiAoUFRSX0VSUihob3N0LT5jcWUpID09IC1FSU5W QUwgfHwNCj4gKyAgICAgICAgICAgICAgICAgIFBUUl9FUlIoaG9zdC0+Y3FlKSA9PSAtRU5PTUVN IHx8DQo+ICsgICAgICAgICAgICAgICAgICBQVFJfRVJSKGhvc3QtPmNxZSkgPT0gLUVCVVNZKSB7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAiVW5hYmxlIHRv IGdldCB0aGUgY21kcSByZWxhdGVkIGF0dHJpYnV0ZSxlcnIgPSAlbGRcbiIsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUFRSX0VSUihob3N0LT5jcWUpKTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgaG9zdC0+Y3FlID0gMDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg aG9zdC0+cGRhdGEtPmNhcHMyICY9IH4oTU1DX0NBUDJfQ1FFfE1NQ19DQVAyX0NRRV9EQ01EKTsN Cj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGhv c3QtPmNxZS0+b3BzID0gJmR3X21jaV9jcWhjaV9ob3N0X29wczsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgY3FoY2lfaW5pdChob3N0LT5jcWUsIGhvc3QtPnNsb3QtPm1tYywgMCk7DQo+ICsg ICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtpbnQgZHdfbWNpX2Nx ZV9wcm9iZShzdHJ1Y3QgZHdfbWNpICpob3N0KQ0KPiArew0KPiArICAgICAgIGNvbnN0IHN0cnVj dCBkd19tY2lfZHJ2X2RhdGEgKmRydl9kYXRhID0gaG9zdC0+ZHJ2X2RhdGE7DQo+ICsgICAgICAg aW50IHJldCA9IDA7DQo+ICsNCj4gKyAgICAgICBpZiAoIWhvc3QtPnBkYXRhKSB7DQo+ICsgICAg ICAgICAgICAgICBob3N0LT5wZGF0YSA9IGR3X21jaV9jcWVfcGFyc2VfZHQoaG9zdCk7DQo+ICsg ICAgICAgICAgICAgICBpZiAoUFRSX0VSUihob3N0LT5wZGF0YSkgPT0gLUVQUk9CRV9ERUZFUikg ew0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9ERUZFUjsNCj4gKyAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfRVJSKGhvc3QtPnBkYXRhKSkgew0KPiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldiwgInBsYXRmb3JtIGRhdGEgbm90IGF2 YWlsYWJsZVxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGhvc3QtPmJp dV9jbGsgPSBkZXZtX2Nsa19nZXQoaG9zdC0+ZGV2LCAiYml1Iik7DQo+ICsgICAgICAgaWYgKElT X0VSUihob3N0LT5iaXVfY2xrKSkgew0KPiArICAgICAgICAgICAgICAgZGV2X2RiZyhob3N0LT5k ZXYsICJiaXUgY2xvY2sgbm90IGF2YWlsYWJsZVxuIik7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4g KyAgICAgICAgICAgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShob3N0LT5iaXVfY2xrKTsN Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ZGV2X2Vycihob3N0LT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIGJpdSBjbG9ja1xuIik7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgICAgICAgICAgICB9DQo+ ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgaG9zdC0+Y2l1X2NsayA9IGRldm1fY2xrX2dldCho b3N0LT5kZXYsICJjaXUiKTsNCj4gKyAgICAgICBpZiAoSVNfRVJSKGhvc3QtPmNpdV9jbGspKSB7 DQo+ICsgICAgICAgICAgICAgICBkZXZfZGJnKGhvc3QtPmRldiwgImNpdSBjbG9jayBub3QgYXZh aWxhYmxlXG4iKTsNCj4gKyAgICAgICAgICAgICAgIGhvc3QtPmJ1c19oeiA9IGhvc3QtPnBkYXRh LT5idXNfaHo7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShob3N0LT5jaXVfY2xrKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChy ZXQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJmYWls ZWQgdG8gZW5hYmxlIGNpdSBjbG9ja1xuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXJyX2Nsa19iaXU7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIGlmIChob3N0LT5wZGF0YS0+YnVzX2h6KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldCA9IGNsa19zZXRfcmF0ZShob3N0LT5jaXVfY2xrLCBob3N0LT5wZGF0YS0+YnVzX2h6KTsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXZfd2Fybihob3N0LT5kZXYsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHNldCBidXMgcmF0ZSB0byAldUh6XG4iLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QtPnBkYXRhLT5i dXNfaHopOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgaG9zdC0+YnVz X2h6ID0gY2xrX2dldF9yYXRlKGhvc3QtPmNpdV9jbGspOw0KPiArICAgICAgIH0NCj4gKw0KPiAr ICAgICAgIGlmICghaG9zdC0+YnVzX2h6KSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhv c3QtPmRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIlBsYXRmb3JtIGRhdGEgbXVzdCBz dXBwbHkgYnVzIHNwZWVkXG4iKTsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FTk9ERVY7DQo+ ICsgICAgICAgICAgICAgICBnb3RvIGVycl9jbGtfY2l1Ow0KPiArICAgICAgIH0NCj4gKw0KPiAr ICAgICAgIGlmICghSVNfRVJSKGhvc3QtPnBkYXRhLT5yc3RjKSkgew0KPiArICAgICAgICAgICAg ICAgcmVzZXRfY29udHJvbF9hc3NlcnQoaG9zdC0+cGRhdGEtPnJzdGMpOw0KPiArICAgICAgICAg ICAgICAgdXNsZWVwX3JhbmdlKDEwLCA1MCk7DQo+ICsgICAgICAgICAgICAgICByZXNldF9jb250 cm9sX2RlYXNzZXJ0KGhvc3QtPnBkYXRhLT5yc3RjKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAg ICAgICB0aW1lcl9zZXR1cCgmaG9zdC0+dGltZXIsIGR3X21jaV9jcWVfY3RvX3RpbWVyLCAwKTsN Cj4gKw0KPiArICAgICAgIHNwaW5fbG9ja19pbml0KCZob3N0LT5sb2NrKTsNCj4gKyAgICAgICBz cGluX2xvY2tfaW5pdCgmaG9zdC0+aXJxX2xvY2spOw0KPiArICAgICAgIGluaXRfcndzZW0oJmhv c3QtPmNyX3J3X3NlbSk7DQo+ICsgICAgICAgdGFza2xldF9pbml0KCZob3N0LT50YXNrbGV0LCBk d19tY2lfY3FlX3Rhc2tsZXRfZnVuYywgKHVuc2lnbmVkIGxvbmcpaG9zdCk7DQo+ICsNCj4gKyAg ICAgICAvKnBpbyBtb2RlJ3MgcGFyYW1ldGVycyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgaGVyZSov DQo+ICsNCj4gKyAgICAgICAvKkluaXRpYWxpemUgdGhlIGVNTUMgSVAgcmVsYXRlZCBhdHRyaWJ1 dGUqLw0KPiArICAgICAgIGR3X21jaV9jcWVfc2V0dXAoaG9zdCk7DQo+ICsNCj4gKyAgICAgICBk d19tY2lfY3FlX2luaXRfZG1hKGhvc3QpOw0KPiArDQo+ICsgICAgICAgLyogVGhpcyBmbGFnIHdp bGwgYmUgc2V0IDEgd2hlbiBkb2luZyB0dW5pbmcsDQo+ICsgICAgICAgICogd2UgYWRkIHRoaXMg ZmxhZyBiZWNhdXNlDQo+ICsgICAgICAgICogc29tZSB2ZW5kb3JzIG1pZ2h0IHVzZSBvdGhlciBj bWQgaW5zdGVhZCBvZiAyMQ0KPiArICAgICAgICAqIHRvIHR1bmUgcGhhc2UgdW5kZXIgaGlnaCBz cGVlZCBpbnRlcmZhY2UuDQo+ICsgICAgICAgICogd2UgdXNlIHRoaXMgZmxhZyB0byByZWNvZ25p emUgaWYgdGhlIHN5c3RlbSBpcyB1bmRlciB0dW5pbmcgc3RhZ2UuDQo+ICsgICAgICAgICovDQo+ ICsgICAgICAgaG9zdC0+dHVuaW5nID0gMDsNCj4gKw0KPiArICAgICAgIC8qVGltaW5nX3NldHRp bmcgaXMgdG8gYXZvaWQgc2VuZGluZyBjb21tYW5kDQo+ICsgICAgICAgICpiZWZvcmUgc2V0dGlu ZyBwaGFzZSBpbiBoczIwMCwgaHM0MDANCj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBob3N0LT5j dXJyZW50X3NwZWVkID0gMDsNCj4gKw0KPiArICAgICAgIC8qRG8gdGhlIHJlc3Qgb2YgaW5pdCBm b3Igc3BlY2lmaWMqLw0KPiArICAgICAgIGlmIChkcnZfZGF0YSAmJiBkcnZfZGF0YS0+aW5pdCkg ew0KPiArICAgICAgICAgICAgICAgcmV0ID0gZHJ2X2RhdGEtPmluaXQoaG9zdCk7DQo+ICsgICAg ICAgICAgICAgICBpZiAocmV0KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIo aG9zdC0+ZGV2LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBsZW1lbnRh dGlvbiBzcGVjaWZpYyBpbml0IGZhaWxlZFxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gZXJyX2RtYXVubWFwOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4g Kw0KPiArICAgICAgIHJldCA9IGR3X21jaV9jcWVfaW5pdF9zbG90KGhvc3QpOw0KPiArICAgICAg IGlmIChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAic2xvdCAw IGluaXQgZmFpbGVkXG4iKTsNCj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2RtYXVubWFwOw0K PiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldCA9IGRldm1fcmVxdWVzdF9pcnEoaG9zdC0+ ZGV2LCBob3N0LT5pcnEsIGR3X21jaV9jcWVfaW50ZXJydXB0LA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhvc3QtPmlycV9mbGFncywgImR3LW1jaS1jcWUiLCBob3N0KTsNCj4g KyAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZ290byBlcnJfZG1hdW5tYXA7DQo+ ICsNCj4gKyAgICAgICAvKkFmdGVyIHRoZSBzbG90IGluaXRpYWxpemF0aW9uLA0KPiArICAgICAg ICAqbm93IHdlIGhhdmUgbW1jIGRhdGEgYW5kIGNhbiBpbml0aWFsaXplIGNtZHEgaWYgdXNlciBl bmFibGVkDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgZHdfbWNpX2NxaGNpX2luaXQoaG9zdCk7 DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArZXJyX2RtYXVubWFwOg0KPiArICAg ICAgIGlmICghSVNfRVJSKGhvc3QtPnBkYXRhLT5yc3RjKSkNCj4gKyAgICAgICAgICAgICAgIHJl c2V0X2NvbnRyb2xfYXNzZXJ0KGhvc3QtPnBkYXRhLT5yc3RjKTsNCj4gK2Vycl9jbGtfY2l1Og0K PiArICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShob3N0LT5jaXVfY2xrKTsNCj4gKw0KPiAr ZXJyX2Nsa19iaXU6DQo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhvc3QtPmJpdV9j bGspOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0wo ZHdfbWNpX2NxZV9wcm9iZSk7DQo+ICsNCj4gK3ZvaWQgZHdfbWNpX2NxZV9yZW1vdmUoc3RydWN0 IGR3X21jaSAqaG9zdCkNCj4gK3sNCj4gKyAgICAgICBkZXZfZGJnKGhvc3QtPmRldiwgInJlbW92 ZSBzbG90XG4iKTsNCj4gKyAgICAgICBpZiAoaG9zdC0+c2xvdCkNCj4gKyAgICAgICAgICAgICAg IGR3X21jaV9jcWVfY2xlYW51cF9zbG90KGhvc3QtPnNsb3QpOw0KPiArDQo+ICsgICAgICAgaWYg KCFJU19FUlIoaG9zdC0+cGRhdGEtPnJzdGMpKQ0KPiArICAgICAgICAgICAgICAgcmVzZXRfY29u dHJvbF9hc3NlcnQoaG9zdC0+cGRhdGEtPnJzdGMpOw0KPiArDQo+ICsgICAgICAgY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKGhvc3QtPmNpdV9jbGspOw0KPiArICAgICAgIGNsa19kaXNhYmxlX3VucHJl cGFyZShob3N0LT5iaXVfY2xrKTsNCj4gKw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTChkd19tY2lf Y3FlX3JlbW92ZSk7DQo+ICsNCj4gKyNpZmRlZiBDT05GSUdfUE0NCj4gK2ludCBkd19tY2lfY3Fl X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgICAgICAgc3Ry dWN0IGR3X21jaSAqaG9zdCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArICAgICAgIGludCBy ZXQgPSAwOw0KPiArDQo+ICsgICAgICAgaWYgKGhvc3QtPnBkYXRhICYmIChob3N0LT5wZGF0YS0+ Y2FwczIgJiBNTUNfQ0FQMl9DUUUpKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoaG9zdC0+c2xv dCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfaW5mbyhob3N0LT5kZXYsICJjcWUg c3VzcGVuZFxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGNxaGNpX3N1c3Bl bmQoaG9zdC0+c2xvdC0+bW1jKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkg ew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoaG9zdC0+ZGV2LCAi Y3FlIHN1c3BlbmQgZmFpbGVkXG4iKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAg ICAgICB9DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGhvc3QtPmNpdV9jbGspOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gK0VY UE9SVF9TWU1CT0woZHdfbWNpX2NxZV9ydW50aW1lX3N1c3BlbmQpOw0KPiArDQo+ICtpbnQgZHdf bWNpX2NxZV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgICAg ICAgc3RydWN0IGR3X21jaSAqaG9zdCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArICAgICAg IGNvbnN0IHN0cnVjdCBkd19tY2lfZHJ2X2RhdGEgKmRydl9kYXRhID0gaG9zdC0+ZHJ2X2RhdGE7 DQo+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ICsNCj4gKyAgICAgICBjbGtfcHJlcGFyZV9lbmFi bGUoaG9zdC0+Y2l1X2Nsayk7DQo+ICsNCj4gKyAgICAgICBkd19tY2lfY3FlX3NldHVwKGhvc3Qp Ow0KPiArICAgICAgIGlmIChkcnZfZGF0YSAmJiBkcnZfZGF0YS0+aW5pdCkgew0KPiArICAgICAg ICAgICAgICAgcmV0ID0gZHJ2X2RhdGEtPmluaXQoaG9zdCk7DQo+ICsgICAgICAgICAgICAgICBp ZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGhvc3QtPmRldiwgImlt cGxlbWVudGF0aW9uIHNwZWNpZmljIGluaXQgZmFpbGVkXG4iKTsNCj4gKyAgICAgICB9DQo+ICsN Cj4gKyAgICAgICBpbml0X2NvbXBsZXRpb24oaG9zdC0+aW50X3dhaXRpbmcpOw0KPiArDQo+ICsg ICAgICAgaWYgKGhvc3QtPnBkYXRhICYmIChob3N0LT5wZGF0YS0+Y2FwczIgJiBNTUNfQ0FQMl9D UUUpKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoaG9zdC0+c2xvdCkgew0KPiArICAgICAgICAg ICAgICAgICAgICAgICBkZXZfaW5mbyhob3N0LT5kZXYsICJjcWUgcmVzdW1lXG4iKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gY3FoY2lfcmVzdW1lKGhvc3QtPnNsb3QtPm1tYyk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV2X2Vycihob3N0LT5kZXYsICJjcWUgcmVzdW1lIGZhaWxlZFxuIik7 DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgZHdfbWNp X2NxZV9zZXR1cF9idXMoaG9zdC0+c2xvdCwgdHJ1ZSk7DQo+ICsNCj4gKyAgICAgICByZXR1cm4g cmV0Ow0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTChkd19tY2lfY3FlX3J1bnRpbWVfcmVzdW1lKTsN Cj4gKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8NCj4gKw0KPiArc3RhdGljIGludCBfX2luaXQgZHdf bWNpX2NxZV9pbml0KHZvaWQpDQo+ICt7DQo+ICsgICAgICAgcHJfaW5mbygiU3lub3BzeXMgRGVz aWdud2FyZSBNdWx0aW1lZGlhIENhcmQgSW50ZXJmYWNlIERyaXZlclxuIik7DQo+ICsgICAgICAg cmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9fZXhpdCBkd19tY2lfY3FlX2V4 aXQodm9pZCkNCj4gK3sNCj4gK30NCj4gKw0KPiArbW9kdWxlX2luaXQoZHdfbWNpX2NxZV9pbml0 KTsNCj4gK21vZHVsZV9leGl0KGR3X21jaV9jcWVfZXhpdCk7DQo+ICsNCj4gK01PRFVMRV9ERVND UklQVElPTigiRFcgTXVsdGltZWRpYSBDYXJkIENNRFEgSW50ZXJmYWNlIGRyaXZlciIpOw0KPiAr TU9EVUxFX0FVVEhPUigiPGp5YW5jaG91QHJlYWx0ZWsuY29tPiIpOw0KPiArTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9kd19tbWNfY3FlLmgg Yi9kcml2ZXJzL21tYy9ob3N0L2R3X21tY19jcWUuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMDAuLjFjODRmNDUzMzcwMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL2RyaXZlcnMvbW1jL2hvc3QvZHdfbW1jX2NxZS5oDQo+IEBAIC0wLDAgKzEsNDQyIEBADQo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLw0KPiArLyoN Cj4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMjMgUmVhbHRlayBTZW1pY29uZHVjdG9ycywgQWxsIFJp Z2h0cyBSZXNlcnZlZC4NCj4gKyAqDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX0RXX01NQ19D UUVfSA0KPiArI2RlZmluZSBfX0RXX01NQ19DUUVfSA0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgv ZG1hZW5naW5lLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvbW1jL2NvcmUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+DQo+ICsNCj4gK3N0cnVjdCBkd19tY2kgew0KPiAr ICAgICAgIHNwaW5sb2NrX3QgICAgICAgICAgICAgIGxvY2s7DQo+ICsgICAgICAgc3BpbmxvY2tf dCAgICAgICAgICAgICAgaXJxX2xvY2s7DQo+ICsgICAgICAgc3RydWN0IHRhc2tsZXRfc3RydWN0 ICAgdGFza2xldDsNCj4gKyAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlICAgICBjcl9yd19zZW07 DQo+ICsNCj4gKyAgICAgICB2b2lkIF9faW9tZW0gICAgICAgICAgICAqcmVnczsNCj4gKyAgICAg ICByZXNvdXJjZV9zaXplX3QgICAgICAgICBwaHlfcmVnczsNCj4gKw0KPiArICAgICAgIHN0cnVj dCBtbWNfcmVxdWVzdCAgICAgICptcnE7DQo+ICsgICAgICAgc3RydWN0IG1tY19jb21tYW5kICAg ICAgKmNtZDsNCj4gKyAgICAgICBzdHJ1Y3QgbW1jX2NvbW1hbmQgICAgICBzdG9wX2Fib3J0Ow0K PiArICAgICAgIHN0cnVjdCBtbWNfY29tbWFuZCAgICAgIHN0YXRfcmVhZHk7DQo+ICsgICAgICAg c3RydWN0IG1tY19kYXRhICAgICAgICAgKmRhdGE7DQo+ICsNCj4gKyAgICAgICBzdHJ1Y3QgY2xr ICAgICAgICAgICAgICAqYml1X2NsazsNCj4gKyAgICAgICBzdHJ1Y3QgY2xrICAgICAgICAgICAg ICAqY2l1X2NsazsNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX3Nsb3QgICAgICAqc2xvdDsNCj4g KyAgICAgICBzdHJ1Y3QgdGltZXJfbGlzdCAgICAgICB0aW1lcjsNCj4gKyAgICAgICBzdHJ1Y3Qg Y29tcGxldGlvbiAgICAgICAqaW50X3dhaXRpbmc7DQo+ICsNCj4gKyAgICAgICB1bnNpZ25lZCBp bnQgICAgICAgICAgICAqZGVzY192YWRkcjsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgICAgICAg ICAgICAqc2dfY3B1Ow0KPiArICAgICAgIGRtYV9hZGRyX3QgICAgICAgICAgICAgIHNnX2RtYTsN Cj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICB1c2VfZG1hOw0KPiArDQo+ICsgICAg ICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAgKnBkZXY7DQo+ICsgICAgICAgc3RydWN0IGRldmlj ZSAgICAgICAgICAgKmRldjsNCj4gKyAgICAgICBzdHJ1Y3QgZHdfbWNpX2JvYXJkICAgICAqcGRh dGE7DQo+ICsgICAgICAgY29uc3Qgc3RydWN0IGR3X21jaV9kcnZfZGF0YSAgICAqZHJ2X2RhdGE7 DQo+ICsgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgKnByaXY7DQo+ICsNCj4gKyAgICAg ICB1MzIgICAgICAgICAgICAgICAgICAgICBvcGNvZGU7DQo+ICsgICAgICAgdTMyICAgICAgICAg ICAgICAgICAgICAgYXJnOw0KPiArICAgICAgIHUxNiAgICAgICAgICAgICAgICAgICAgIG5vcm1h bF9pbnRlcnJ1cHQ7DQo+ICsgICAgICAgdTE2ICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaW50 ZXJydXB0Ow0KPiArICAgICAgIHUxNiAgICAgICAgICAgICAgICAgICAgIGF1dG9fZXJyb3JfaW50 ZXJydXB0Ow0KPiArDQo+ICsgICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgYnVzX2h6Ow0K PiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc3BlZWQ7DQo+ICsgICAg ICAgdTMyICAgICAgICAgICAgICAgICAgICAgc3RvcF9jbWRyOw0KPiArICAgICAgIGJvb2wgICAg ICAgICAgICAgICAgICAgIGlzX3NiYzsNCj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAg ICBkbWFfNjRiaXRfYWRkcmVzczsNCj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICB1 c2luZ19kbWE7DQo+ICsNCj4gKyAgICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICBpcnFfZmxh Z3M7IC8qIElSUSBmbGFncyAqLw0KPiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGly cTsNCj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBzZGlvX2lkMDsNCj4gKw0KPiAr ICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAgICAgICpzZzsNCj4gKyAgICAgICB1MzIgICAgICAg ICAgICAgICAgICAgICBkbWFfbmVudHM7DQo+ICsNCj4gKyAgICAgICB1OCAgICAgICAgICAgICAg ICAgICAgICB0dW5pbmc7DQo+ICsgICAgICAgc3RydWN0IGNxaGNpX2hvc3QgICAgICAgKmNxZTsN Cj4gK307DQo+ICsNCj4gK2VudW0gew0KPiArICAgICAgIFRSQU5TX01PREVfUElPID0gMCwNCj4g KyAgICAgICBUUkFOU19NT0RFX0RNQSwNCj4gK307DQo+ICsNCj4gK2VudW0gZHdfbWNpX2Nvb2tp ZSB7DQo+ICsgICAgICAgQ09PS0lFX1VOTUFQUEVELA0KPiArICAgICAgIENPT0tJRV9QUkVfTUFQ UEVELCAgICAgIC8qIG1hcHBlZCBieSBwcmVfcmVxKCkgb2YgZHdtbWMgKi8NCj4gKyAgICAgICBD T09LSUVfTUFQUEVELCAgICAgICAgICAvKiBtYXBwZWQgYnkgcHJlcGFyZV9kYXRhKCkgb2YgZHdt bWMgKi8NCj4gK307DQo+ICsvKiBlTU1DIGNvbnRyb2wgcmVnaXN0ZXIgZGVmaW5pdGlvbiAqLw0K PiArI2RlZmluZSBTRE1NQ19TRE1BU0FfUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMA0K PiArI2RlZmluZSBTRE1NQ19CTE9DS1NJWkVfUiAgICAgICAgICAgICAgICAgICAgICAweDAwNA0K PiArI2RlZmluZSBTRE1NQ19CTE9DS0NPVU5UX1IgICAgICAgICAgICAgICAgICAgICAweDAwNg0K PiArI2RlZmluZSBTRE1NQ19BUkdVTUVOVF9SICAgICAgICAgICAgICAgICAgICAgICAweDAwOA0K PiArI2RlZmluZSBTRE1NQ19YRkVSX01PREVfUiAgICAgICAgICAgICAgICAgICAgICAweDAwYw0K PiArI2RlZmluZSBTRE1NQ19DTURfUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwZQ0K PiArI2RlZmluZSBTRE1NQ19SRVNQMDFfUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAxMA0K PiArI2RlZmluZSBTRE1NQ19SRVNQMjNfUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAxNA0K PiArI2RlZmluZSBTRE1NQ19SRVNQNDVfUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAxOA0K PiArI2RlZmluZSBTRE1NQ19SRVNQNjdfUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAxYw0K PiArI2RlZmluZSBTRE1NQ19CVUZfREFUQV9SICAgICAgICAgICAgICAgICAgICAgICAweDAyMA0K PiArI2RlZmluZSBTRE1NQ19QU1RBVEVfUkVHICAgICAgICAgICAgICAgICAgICAgICAweDAyNA0K PiArI2RlZmluZSBTRE1NQ19IT1NUX0NUUkwxX1IgICAgICAgICAgICAgICAgICAgICAweDAyOA0K PiArI2RlZmluZSBTRE1NQ19QV1JfQ1RSTF9SICAgICAgICAgICAgICAgICAgICAgICAweDAyOQ0K PiArI2RlZmluZSBTRE1NQ19CR0FQX0NUUkxfUiAgICAgICAgICAgICAgICAgICAgICAweDAyYQ0K PiArI2RlZmluZSBTRE1NQ19DTEtfQ1RSTF9SICAgICAgICAgICAgICAgICAgICAgICAweDAyYw0K PiArI2RlZmluZSBTRE1NQ19UT1VUX0NUUkxfUiAgICAgICAgICAgICAgICAgICAgICAweDAyZQ0K PiArI2RlZmluZSBTRE1NQ19TV19SU1RfUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAyZg0K PiArI2RlZmluZSBTRE1NQ19OT1JNQUxfSU5UX1NUQVRfUiAgICAgICAgICAgICAgICAgICAgICAg IDB4MDMwDQo+ICsjZGVmaW5lIFNETU1DX0VSUk9SX0lOVF9TVEFUX1IgICAgICAgICAgICAgICAg IDB4MDMyDQo+ICsjZGVmaW5lIFNETU1DX05PUk1BTF9JTlRfU1RBVF9FTl9SICAgICAgICAgICAg IDB4MDM0DQo+ICsjZGVmaW5lIFNETU1DX0VSUk9SX0lOVF9TVEFUX0VOX1IgICAgICAgICAgICAg IDB4MDM2DQo+ICsjZGVmaW5lIFNETU1DX05PUk1BTF9JTlRfU0lHTkFMX0VOX1IgICAgICAgICAg IDB4MDM4DQo+ICsjZGVmaW5lIFNETU1DX0VSUk9SX0lOVF9TSUdOQUxfRU5fUiAgICAgICAgICAg IDB4MDNhDQo+ICsjZGVmaW5lIFNETU1DX0FVVE9fQ01EX1NUQVRfUiAgICAgICAgICAgICAgICAg IDB4MDNjDQo+ICsjZGVmaW5lIFNETU1DX0hPU1RfQ1RSTDJfUiAgICAgICAgICAgICAgICAgICAg IDB4MDNlDQo+ICsjZGVmaW5lIFNETU1DX0FETUFfRVJSX1NUQVRfUiAgICAgICAgICAgICAgICAg IDB4MDU0DQo+ICsjZGVmaW5lIFNETU1DX0FETUFfU0FfTE9XX1IgICAgICAgICAgICAgICAgICAg IDB4MDU4DQo+ICsNCj4gKyNkZWZpbmUgU0RNTUNfTVNIQ19DVFJMX1IgICAgICAgICAgICAgICAg ICAgICAgMHgyMDgNCj4gKyNkZWZpbmUgU0RNTUNfQ1RSTF9SICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgyMmMNCj4gKw0KPiArI2RlZmluZSBTRE1NQ19DTURfQ09ORkxJQ1RfQ0hFQ0sgICAg ICAgICAgICAgICBCSVQoMCkNCj4gKyNkZWZpbmUgQ01EX0lEWF9NQVNLKHgpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoKHggPj4gOCkmMHgzZikNCj4gKw0KPiArLyoweGMqLw0KPiAr I2RlZmluZSBTRE1NQ19NVUxUSV9CTEtfU0VMICAgICAgICAgICAgICAgICAgICA1DQo+ICsjZGVm aW5lIFNETU1DX0RBVEFfWEZFUl9ESVIgICAgICAgICAgICAgICAgICAgIDQNCj4gKyNkZWZpbmUg U0RNTUNfQkxPQ0tfQ09VTlRfRU5BQkxFICAgICAgICAgICAgICAgQklUKDEpDQo+ICsjZGVmaW5l IFNETU1DX0RNQV9FTkFCTEUgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPiArI2RlZmlu ZSBTRE1NQ19BVVRPX0NNRF9FTkFCTEUgICAgICAgICAgICAgICAgICAyDQo+ICsjZGVmaW5lIFNE TU1DX0FVVE9fQ01EX0RJU0FCTEVEICAgICAgICAgICAgICAgICAgICAgICAgMHgwDQo+ICsjZGVm aW5lIFNETU1DX0FVVE9fQ01EMTJfRU5BQkxFRCAgICAgICAgICAgICAgIDB4MQ0KPiArI2RlZmlu ZSBTRE1NQ19BVVRPX0NNRDIzX0VOQUJMRUQgICAgICAgICAgICAgICAweDINCj4gKyNkZWZpbmUg U0RNTUNfQVVUT19DTURfU0VMICAgICAgICAgICAgICAgICAgICAgMHgzDQo+ICsNCj4gKy8qMHhl Ki8NCj4gKyNkZWZpbmUgU0RNTUNfUkVTUF9UWVBFX1NFTEVDVCAgICAgICAgICAgICAgICAgMA0K PiArI2RlZmluZSBTRE1NQ19DTURfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgICA2DQo+ICsj ZGVmaW5lIFNETU1DX05PX1JFU1AgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MA0KPiArI2Rl ZmluZSBTRE1NQ19SRVNQX0xFTl8xMzYgICAgICAgICAgICAgICAgICAgICAweDENCj4gKyNkZWZp bmUgU0RNTUNfUkVTUF9MRU5fNDggICAgICAgICAgICAgICAgICAgICAgMHgyDQo+ICsjZGVmaW5l IFNETU1DX1JFU1BfTEVOXzQ4QiAgICAgICAgICAgICAgICAgICAgIDB4Mw0KPiArI2RlZmluZSBT RE1NQ19DTURfQ0hLX1JFU1BfQ1JDICAgICAgICAgICAgICAgICBCSVQoMykNCj4gKyNkZWZpbmUg U0RNTUNfQ01EX0lEWF9DSEtfRU5BQkxFICAgICAgICAgICAgICAgQklUKDQpDQo+ICsjZGVmaW5l IFNETU1DX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCg1KQ0KPiArI2RlZmlu ZSBTRE1NQ19BQk9SVF9DTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Mw0KPiAr I2RlZmluZSBTRE1NQ19SRVNVTUVfQ01EICAgICAgICAgICAgICAgICAgICAgICAweDINCj4gKyNk ZWZpbmUgU0RNTUNfU1VTUEVORF9DTUQgICAgICAgICAgICAgICAgICAgICAgMHgxDQo+ICsjZGVm aW5lIFNETU1DX05PUk1BTF9DTUQgICAgICAgICAgICAgICAgICAgICAgIDB4MA0KPiArDQo+ICsv KjB4MjQgUFNUQVRFKi8NCj4gKyNkZWZpbmUgU0RNTUNfQ01EX0lOSElCSVQgICAgICAgICAgICAg ICAgICAgICAgQklUKDApDQo+ICsjZGVmaW5lIFNETU1DX0NNRF9JTkhJQklUX0RBVCAgICAgICAg ICAgICAgICAgIEJJVCgxKQ0KPiArI2RlZmluZSBTRE1NQ19EQVRfM18wICAgICAgICAgICAgICAg ICAgICAgICAgICAoMHhmIDw8IDIwKQ0KPiArI2RlZmluZSBTRE1NQ19EQVRfN180ICAgICAgICAg ICAgICAgICAgICAgICAgICAoMHhmIDw8IDQpDQo+ICsNCj4gKy8qMHgyOCovDQo+ICsjZGVmaW5l IFNETU1DX0RNQV9TRUwgICAgICAgICAgICAgICAgICAgICAgICAgIDMNCj4gKyNkZWZpbmUgU0RN TUNfU0RNQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MCkNCj4gKyNkZWZpbmUgU0RN TUNfQURNQTJfMzIgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MikNCj4gKyNkZWZpbmUgU0RN TUNfQURNQTJfNjQgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MykNCj4gKyNkZWZpbmUgU0RN TUNfRVhUX0RBVF9YRkVSICAgICAgICAgICAgICAgICAgICAgQklUKDUpDQo+ICsjZGVmaW5lIFNE TU1DX0VYVF9EQVRfWEZFUl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgKH5TRE1NQ19FWFRf REFUX1hGRVIgJiAweGZmKQ0KPiArI2RlZmluZSBTRE1NQ19ISUdIX1NQRUVEX0VOICAgICAgICAg ICAgICAgICAgICBCSVQoMikNCj4gKyNkZWZpbmUgU0RNTUNfSElHSF9TUEVFRF9NQVNLICAgICAg ICAgICAgICAgICAgKCh+QklUKDIpKSAmIDB4ZmYpDQo+ICsjZGVmaW5lIFNETU1DX1VIU19NT0RF X1NFTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgKCh+KEJJVCgwKXxCSVQoMSl8QklUKDIp KSkgJiAweGZmZmYpDQo+ICsjZGVmaW5lIFNETU1DX0RBVF9YRkVSX1dJRFRIICAgICAgICAgICAg ICAgICAgIEJJVCgxKQ0KPiArI2RlZmluZSBTRE1NQ19EQVRfWEZFUl9XSURUSF9NQVNLICAgICAg ICAgICAgICAoflNETU1DX0RBVF9YRkVSX1dJRFRIICYgMHhmZikNCj4gKyNkZWZpbmUgU0RNTUNf QlVTX1dJRFRIXzggICAgICAgICAgICAgICAgICAgICAgU0RNTUNfRVhUX0RBVF9YRkVSDQo+ICsj ZGVmaW5lIFNETU1DX0JVU19XSURUSF80ICAgICAgICAgICAgICAgICAgICAgIFNETU1DX0RBVF9Y RkVSX1dJRFRIDQo+ICsjZGVmaW5lIFNETU1DX0JVU19XSURUSF8xICAgICAgICAgICAgICAgICAg ICAgIDANCj4gKyNkZWZpbmUgU0RNTUNfRE1BX1NFTF9DTFIgICAgICAgICAgICAgICAgICAgICAg KDB4ZmYgJiAofigweDM8PFNETU1DX0RNQV9TRUwpKSkNCj4gKyNkZWZpbmUgU0RNTUNfREFUQV9Y RkVSX0NMUiAgICAgICAgICAgICAgICAgICAgKCgweGZmICYgKH5TRE1NQ19FWFRfREFUX1hGRVIp KSBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiAoflNETU1DX0RBVF9YRkVSX1dJRFRIKSkNCj4gKw0KPiArLyoweDJhKi8NCj4gKyNk ZWZpbmUgU0RNTUNfU1RPUF9CR19SRVEgICAgICAgICAgICAgICAgICAgICAgQklUKDApDQo+ICsN Cj4gKy8qMHgyZiBTV19SU1RfUiovDQo+ICsjZGVmaW5lIFNETU1DX1JTVF9EQVQgICAgICAgICAg ICAgICAgICBCSVQoMikNCj4gKyNkZWZpbmUgU0RNTUNfUlNUX0NNRCAgICAgICAgICAgICAgICAg IEJJVCgxKQ0KPiArI2RlZmluZSBTRE1NQ19SU1RfQUxMICAgICAgICAgICAgICAgICAgQklUKDAp DQo+ICsNCj4gKy8qMHgzMCBzdGF0dXMgYml0bWFwKi8NCj4gKyNkZWZpbmUgU0RNTUNfU1RBVFVT X0FMTCAgICAgICAgICAgICAgICAgICAgICAgMHhmZmZmDQo+ICsjZGVmaW5lIFNETU1DX0VSUl9J TlRFUlJVUFQgICAgICAgICAgICAgICAgICAgIEJJVCgxNSkNCj4gKyNkZWZpbmUgU0RNTUNfQ1FF X0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMTQpDQo+ICsjZGVmaW5l IFNETU1DX0ZYX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxMykNCj4gKyNkZWZp bmUgU0RNTUNfUkVfVFVORV9FVkVOVCAgICAgICAgICAgICAgICAgICAgQklUKDEyKQ0KPiArI2Rl ZmluZSBTRE1NQ19JTlRfQyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMTEpDQo+ICsj ZGVmaW5lIFNETU1DX0lOVF9CICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxMCkNCj4g KyNkZWZpbmUgU0RNTUNfSU5UX0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKDkpDQo+ ICsjZGVmaW5lIFNETU1DX0NBUkRfSU5URVJSVVBUICAgICAgICAgICAgICAgICAgIEJJVCg4KQ0K PiArI2RlZmluZSBTRE1NQ19DQVJEX1JFTU9WQUwgICAgICAgICAgICAgICAgICAgICBCSVQoNykN Cj4gKyNkZWZpbmUgU0RNTUNfQ0FSRF9JTlNFUlRJT04gICAgICAgICAgICAgICAgICAgQklUKDYp DQo+ICsjZGVmaW5lIFNETU1DX0JVRl9SRF9SRUFEWSAgICAgICAgICAgICAgICAgICAgIEJJVCg1 KQ0KPiArI2RlZmluZSBTRE1NQ19CVUZfV1JfUkVBRFkgICAgICAgICAgICAgICAgICAgICBCSVQo NCkNCj4gKyNkZWZpbmUgU0RNTUNfRE1BX0lOVEVSUlBUICAgICAgICAgICAgICAgICAgICAgQklU KDMpDQo+ICsjZGVmaW5lIFNETU1DX0JHQVBfRVZFTlQgICAgICAgICAgICAgICAgICAgICAgIEJJ VCgyKQ0KPiArI2RlZmluZSBTRE1NQ19YRkVSX0NPTVBMRVRFICAgICAgICAgICAgICAgICAgICBC SVQoMSkNCj4gKyNkZWZpbmUgU0RNTUNfQ01EX0NPTVBMRVRFICAgICAgICAgICAgICAgICAgICAg QklUKDApDQo+ICsNCj4gKy8qMHgzMiBlcnJvciBiaXRtYXAqLw0KPiArI2RlZmluZSBTRE1NQ19W RU5ET1JfRVJSMyAgICAgICAgICAgICAgICAgICAgICBCSVQoMTUpDQo+ICsjZGVmaW5lIFNETU1D X1ZFTkRPUl9FUlIyICAgICAgICAgICAgICAgICAgICAgIEJJVCgxNCkNCj4gKyNkZWZpbmUgU0RN TUNfVkVORE9SX0VSUjEgICAgICAgICAgICAgICAgICAgICAgQklUKDEzKQ0KPiArI2RlZmluZSBT RE1NQ19CT09UX0FDS19FUlIgICAgICAgICAgICAgICAgICAgICBCSVQoMTIpDQo+ICsjZGVmaW5l IFNETU1DX1JFU1BfRVJSICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxMSkNCj4gKyNkZWZp bmUgU0RNTUNfVFVOSU5HX0VSUiAgICAgICAgICAgICAgICAgICAgICAgQklUKDEwKQ0KPiArI2Rl ZmluZSBTRE1NQ19BRE1BX0VSUiAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoOSkNCj4gKyNk ZWZpbmUgU0RNTUNfQVVUT19DTURfRVJSICAgICAgICAgICAgICAgICAgICAgQklUKDgpDQo+ICsj ZGVmaW5lIFNETU1DX0NVUl9MTVRfRVJSICAgICAgICAgICAgICAgICAgICAgIEJJVCg3KQ0KPiAr I2RlZmluZSBTRE1NQ19EQVRBX0VORF9CSVRfRVJSICAgICAgICAgICAgICAgICBCSVQoNikNCj4g KyNkZWZpbmUgU0RNTUNfREFUQV9DUkNfRVJSICAgICAgICAgICAgICAgICAgICAgQklUKDUpDQo+ ICsjZGVmaW5lIFNETU1DX0RBVEFfVE9VVF9FUlIgICAgICAgICAgICAgICAgICAgIEJJVCg0KQ0K PiArI2RlZmluZSBTRE1NQ19DTURfSURYX0VSUiAgICAgICAgICAgICAgICAgICAgICBCSVQoMykN Cj4gKyNkZWZpbmUgU0RNTUNfQ01EX0VORF9CSVRfRVJSICAgICAgICAgICAgICAgICAgQklUKDIp DQo+ICsjZGVmaW5lIFNETU1DX0NNRF9DUkNfRVJSICAgICAgICAgICAgICAgICAgICAgIEJJVCgx KQ0KPiArI2RlZmluZSBTRE1NQ19DTURfVE9VVF9FUlIgICAgICAgICAgICAgICAgICAgICBCSVQo MCkNCj4gKyNkZWZpbmUgU0RNTUNfQ01EX0VSUiAgICAgICAgICAgICAgICAgICAgICAgICAgIChT RE1NQ19BVVRPX0NNRF9FUlJ8U0RNTUNfQ01EX0lEWF9FUlJ8IFwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RNTUNfQ01EX0VORF9CSVRfRVJSfFNE TU1DX0NNRF9DUkNfRVJSfCBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNETU1DX0NNRF9UT1VUX0VSUikNCj4gKyNkZWZpbmUgU0RNTUNfREFUQV9F UlIgICAgICAgICAgICAgICAgICAgICAgICAgKFNETU1DX0FETUFfRVJSfFNETU1DX0RBVEFfRU5E X0JJVF9FUlJ8IFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0RNTUNfREFUQV9DUkNfRVJSfFNETU1DX0RBVEFfVE9VVF9FUlIpDQo+ICsNCj4gKy8q MHgzNCBzdGF0dXMgZW5hYmxlIGJpdG1hcCovDQo+ICsjZGVmaW5lIFNETU1DX0NRRV9FVkVOVF9T VEFUX0VOICAgICAgICAgICAgICAgICAgICAgICAgQklUKDE0KQ0KPiArI2RlZmluZSBTRE1NQ19G WF9FVkVOVF9TVEFUX0VOICAgICAgICAgICAgICAgICBCSVQoMTMpDQo+ICsjZGVmaW5lIFNETU1D X1JFX1RVTkVfRVZFTlRfU1RBVF9FTiAgICAgICAgICAgIEJJVCgxMikNCj4gKyNkZWZpbmUgU0RN TUNfSU5UX0NfU1RBVF9FTiAgICAgICAgICAgICAgICAgICAgQklUKDExKQ0KPiArI2RlZmluZSBT RE1NQ19JTlRfQl9TVEFUX0VOICAgICAgICAgICAgICAgICAgICBCSVQoMTApDQo+ICsjZGVmaW5l IFNETU1DX0lOVF9BX1NUQVRfRU4gICAgICAgICAgICAgICAgICAgIEJJVCg5KQ0KPiArI2RlZmlu ZSBTRE1NQ19DQVJEX0lOVEVSUlVQVF9TVEFUX0VOICAgICAgICAgICBCSVQoOCkNCj4gKyNkZWZp bmUgU0RNTUNfQ0FSRF9SRU1PVkFMX1NUQVRfRU4gICAgICAgICAgICAgQklUKDcpDQo+ICsjZGVm aW5lIFNETU1DX0NBUkRfSU5TRVJUSU9OX1NUQVRfRU4gICAgICAgICAgIEJJVCg2KQ0KPiArI2Rl ZmluZSBTRE1NQ19CVUZfUkRfUkVBRFlfU1RBVF9FTiAgICAgICAgICAgICBCSVQoNSkNCj4gKyNk ZWZpbmUgU0RNTUNfQlVGX1dSX1JFQURZX1NUQVRfRU4gICAgICAgICAgICAgQklUKDQpDQo+ICsj ZGVmaW5lIFNETU1DX0RNQV9JTlRFUlJQVF9TVEFUX0VOICAgICAgICAgICAgIEJJVCgzKQ0KPiAr I2RlZmluZSBTRE1NQ19CR0FQX0VWRU5UX1NUQVRfRU4gICAgICAgICAgICAgICBCSVQoMikNCj4g KyNkZWZpbmUgU0RNTUNfWEZFUl9DT01QTEVURV9TVEFUX0VOICAgICAgICAgICAgQklUKDEpDQo+ ICsjZGVmaW5lIFNETU1DX0NNRF9DT01QTEVURV9TVEFUX0VOICAgICAgICAgICAgIEJJVCgwKQ0K PiArDQo+ICsvKjB4MzYgZXJyb3Igc3RhdHVzIGVuYWJsZSBiaXRtYXAqLw0KPiArI2RlZmluZSBT RE1NQ19WRU5ET1JfRVJSX1NUQVRfRU4zICAgICAgICAgICAgICBCSVQoMTUpDQo+ICsjZGVmaW5l IFNETU1DX1ZFTkRPUl9FUlJfU1RBVF9FTjIgICAgICAgICAgICAgIEJJVCgxNCkNCj4gKyNkZWZp bmUgU0RNTUNfVkVORE9SX0VSUl9TVEFUX0VOMSAgICAgICAgICAgICAgQklUKDEzKQ0KPiArI2Rl ZmluZSBTRE1NQ19CT09UX0FDS19FUlJfU1RBVF9FTiAgICAgICAgICAgICBCSVQoMTIpDQo+ICsj ZGVmaW5lIFNETU1DX1JFU1BfRVJSX1NUQVRfRU4gICAgICAgICAgICAgICAgIEJJVCgxMSkNCj4g KyNkZWZpbmUgU0RNTUNfVFVOSU5HX0VSUl9TVEFUX0VOICAgICAgICAgICAgICAgQklUKDEwKQ0K PiArI2RlZmluZSBTRE1NQ19BRE1BX0VSUl9TVEFUX0VOICAgICAgICAgICAgICAgICBCSVQoOSkN Cj4gKyNkZWZpbmUgU0RNTUNfQVVUT19DTURfRVJSX1NUQVRfRU4gICAgICAgICAgICAgQklUKDgp DQo+ICsjZGVmaW5lIFNETU1DX0NVUl9MTVRfRVJSX1NUQVRfRU4gICAgICAgICAgICAgIEJJVCg3 KQ0KPiArI2RlZmluZSBTRE1NQ19EQVRBX0VORF9CSVRfRVJSX1NUQVRfRU4gICAgICAgICBCSVQo NikNCj4gKyNkZWZpbmUgU0RNTUNfREFUQV9DUkNfRVJSX1NUQVRfRU4gICAgICAgICAgICAgQklU KDUpDQo+ICsjZGVmaW5lIFNETU1DX0RBVEFfVE9VVF9FUlJfU1RBVF9FTiAgICAgICAgICAgIEJJ VCg0KQ0KPiArI2RlZmluZSBTRE1NQ19DTURfSURYX0VSUl9TVEFUX0VOICAgICAgICAgICAgICBC SVQoMykNCj4gKyNkZWZpbmUgU0RNTUNfQ01EX0VORF9CSVRfRVJSX1NUQVRfRU4gICAgICAgICAg QklUKDIpDQo+ICsjZGVmaW5lIFNETU1DX0NNRF9DUkNfRVJSX1NUQVRfRU4gICAgICAgICAgICAg IEJJVCgxKQ0KPiArI2RlZmluZSBTRE1NQ19DTURfVE9VVF9FUlJfU1RBVF9FTiAgICAgICAgICAg ICBCSVQoMCkNCj4gKw0KPiArLyoweDM4IHNpZ25hbCBpbnRlcnJ1cHQgZW5hYmxlKi8NCj4gKyNk ZWZpbmUgU0RNTUNfQ1FFX0VWRU5UX1NJR05BTF9FTiAgICAgICAgICAgICAgQklUKDE0KQ0KPiAr I2RlZmluZSBTRE1NQ19GWF9FVkVOVF9TSUdOQUxfRU4gICAgICAgICAgICAgICBCSVQoMTMpDQo+ ICsjZGVmaW5lIFNETU1DX1JFX1RVTkVfRVZFTlRfU0lHTkFMX0VOICAgICAgICAgIEJJVCgxMikN Cj4gKyNkZWZpbmUgU0RNTUNfSU5UX0NfU0lHTkFMX0VOICAgICAgICAgICAgICAgICAgQklUKDEx KQ0KPiArI2RlZmluZSBTRE1NQ19JTlRfQl9TSUdOQUxfRU4gICAgICAgICAgICAgICAgICBCSVQo MTApDQo+ICsjZGVmaW5lIFNETU1DX0lOVF9BX1NJR05BTF9FTiAgICAgICAgICAgICAgICAgIEJJ VCg5KQ0KPiArI2RlZmluZSBTRE1NQ19DQVJEX0lOVEVSUlVQVF9TSUdOQUxfRU4gICAgICAgICBC SVQoOCkNCj4gKyNkZWZpbmUgU0RNTUNfQ0FSRF9SRU1PVkFMX1NJR05BTF9FTiAgICAgICAgICAg QklUKDcpDQo+ICsjZGVmaW5lIFNETU1DX0NBUkRfSU5TRVJUSU9OX1NJR05BTF9FTiAgICAgICAg IEJJVCg2KQ0KPiArI2RlZmluZSBTRE1NQ19CVUZfUkRfUkVBRFlfU0lHTkFMX0VOICAgICAgICAg ICBCSVQoNSkNCj4gKyNkZWZpbmUgU0RNTUNfQlVGX1dSX1JFQURZX1NJR05BTF9FTiAgICAgICAg ICAgQklUKDQpDQo+ICsjZGVmaW5lIFNETU1DX0RNQV9JTlRFUlJQVF9TSUdOQUxfRU4gICAgICAg ICAgIEJJVCgzKQ0KPiArI2RlZmluZSBTRE1NQ19CR0FQX0VWRU5UX1NJR05BTF9FTiAgICAgICAg ICAgICBCSVQoMikNCj4gKyNkZWZpbmUgU0RNTUNfWEZFUl9DT01QTEVURV9TSUdOQUxfRU4gICAg ICAgICAgQklUKDEpDQo+ICsjZGVmaW5lIFNETU1DX0NNRF9DT01QTEVURV9TSUdOQUxfRU4gICAg ICAgICAgIEJJVCgwKQ0KPiArI2RlZmluZSBTRE1NQ19OT1JNQUxfSU5UX1NJR05BTF9DTURfRU5f UiAgICAgICAofihCSVQoNikgfCBCSVQoNykgfCBCSVQoOCkgfCBCSVQoMSkpICYgMHhmZmZmKQ0K PiArI2RlZmluZSBTRE1NQ19OT1JNQUxfSU5UX1NJR05BTF9EQVRfRU5fUiAgICAgICAofihCSVQo NikgfCBCSVQoNykgfCBCSVQoOCkgfCBCSVQoMCkpICYgMHhmZmZmKQ0KPiArI2RlZmluZSBTRE1N Q19OT1JNQUxfSU5UX1NJR05BTF9DUUVfRU5fUiAgICAgICAofihCSVQoNikgfCBCSVQoNykgfCBC SVQoOCkgfCBCSVQoMSkgfCBCSVQoMCkpIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiAweGZmZmYpDQo+ICsNCj4gKy8qMHgzYSBlcnJvciBzc2ln bmFsIGVuYWJsZSBiaXRtYXAqLw0KPiArI2RlZmluZSBTRE1NQ19WRU5ET1JfRVJSX1NJR05BTF9F TjMgICAgICAgICAgICBCSVQoMTUpDQo+ICsjZGVmaW5lIFNETU1DX1ZFTkRPUl9FUlJfU0lHTkFM X0VOMiAgICAgICAgICAgIEJJVCgxNCkNCj4gKyNkZWZpbmUgU0RNTUNfVkVORE9SX0VSUl9TSUdO QUxfRU4xICAgICAgICAgICAgQklUKDEzKQ0KPiArI2RlZmluZSBTRE1NQ19CT09UX0FDS19FUlJf U0lHTkFMX0VOICAgICAgICAgICBCSVQoMTIpDQo+ICsjZGVmaW5lIFNETU1DX1JFU1BfRVJSX1NJ R05BTF9FTiAgICAgICAgICAgICAgIEJJVCgxMSkNCj4gKyNkZWZpbmUgU0RNTUNfVFVOSU5HX0VS Ul9TSUdOQUxfRU4gICAgICAgICAgICAgQklUKDEwKQ0KPiArI2RlZmluZSBTRE1NQ19BRE1BX0VS Ul9TSUdOQUxfRU4gICAgICAgICAgICAgICBCSVQoOSkNCj4gKyNkZWZpbmUgU0RNTUNfQVVUT19D TURfRVJSX1NJR05BTF9FTiAgICAgICAgICAgQklUKDgpDQo+ICsjZGVmaW5lIFNETU1DX0NVUl9M TVRfRVJSX1NJR05BTF9FTiAgICAgICAgICAgIEJJVCg3KQ0KPiArI2RlZmluZSBTRE1NQ19EQVRB X0VORF9CSVRfRVJSX1NJR05BTF9FTiAgICAgICBCSVQoNikNCj4gKyNkZWZpbmUgU0RNTUNfREFU QV9DUkNfRVJSX1NJR05BTF9FTiAgICAgICAgICAgQklUKDUpDQo+ICsjZGVmaW5lIFNETU1DX0RB VEFfVE9VVF9FUlJfU0lHTkFMX0VOICAgICAgICAgIEJJVCg0KQ0KPiArI2RlZmluZSBTRE1NQ19D TURfSURYX0VSUl9TSUdOQUxfRU4gICAgICAgICAgICBCSVQoMykNCj4gKyNkZWZpbmUgU0RNTUNf Q01EX0VORF9CSVRfRVJSX1NJR05BTF9FTiAgICAgICAgICAgICAgICBCSVQoMikNCj4gKyNkZWZp bmUgU0RNTUNfQ01EX0NSQ19FUlJfU0lHTkFMX0VOICAgICAgICAgICAgQklUKDEpDQo+ICsjZGVm aW5lIFNETU1DX0NNRF9UT1VUX0VSUl9TVEFUX0VOICAgICAgICAgICAgIEJJVCgwKQ0KPiArDQo+ ICsjZGVmaW5lIFNETU1DX0FMTF9OT1JNQUxfU1RBVF9FTiAgICAgICAgICAgICAgICgweGZlZmYp DQo+ICsjZGVmaW5lIFNETU1DX0FMTF9FUlJfU1RBVF9FTiAgICAgICAgICAgICAgICAgICgweGZm ZmYpDQo+ICsjZGVmaW5lIFNETU1DX0FMTF9TSUdOQUxfU1RBVF9FTiAgICAgICAgICAgICAgICAo MHhmZWZmKQ0KPiArI2RlZmluZSBTRE1NQ19BTExfRVJSX1NJR05BTF9FTiAgICAgICAgICAgICAg ICAgICAgICAgICgweGZmZmYpDQo+ICsNCj4gKy8qMHgzZSovDQo+ICsjZGVmaW5lIFNETU1DX0xF R0FDWSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MA0KPiArI2RlZmluZSBTRE1NQ19TRFIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCj4gKyNkZWZpbmUgU0RNTUNfSFMyMDAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzDQo+ICsjZGVmaW5lIFNETU1DX0REUiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NA0KPiArI2RlZmluZSBTRE1NQ19IUzQwMCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDcNCj4gKyNkZWZpbmUgU0RNTUNfSE9TVF9WRVI0X0VO QUJMRSAgICAgICAgICAgICAgICAgQklUKDEyKQ0KPiArI2RlZmluZSBTRE1NQ19TSUdOQUxJTkdf RU4gICAgICAgICAgICAgICAgICAgICBCSVQoMykNCj4gKw0KPiArLyoweDIyYyovDQo+ICsjZGVm aW5lIFNETU1DX1JTVF9OX09FICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgzKQ0KPiArI2Rl ZmluZSBTRE1NQ19SU1RfTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMikNCj4gKyNk ZWZpbmUgU0RNTUNfQ0FSRF9JU19FTU1DICAgICAgICAgICAgICAgICAgICAgQklUKDApDQo+ICsN Cj4gKyNkZWZpbmUgU0RNTUNfSU5URVJOQUxfQ0xLX0VOICAgICAgICAgICAgICAgICAgQklUKDAp DQo+ICsjZGVmaW5lIFNETU1DX1BMTF9VU0FCTEUgICAgICAgICAgICAgICAgICAgICAgIEJJVCgw KQ0KPiArDQo+ICsjZGVmaW5lIFZBTElEKHgpICAgICAgICAgICAgICAgICAgICAgICAoKHggJiAx KSA8PCAwKQ0KPiArI2RlZmluZSBUSEVfRU5EKHgpICAgICAgICAgICAgICAgICAgICAgKCh4ICYg MSkgPDwgMSkNCj4gKyNkZWZpbmUgSU5UKHgpICAgICAgICAgICAgICAgICAgICAgICAgICgoeCAm IDEpIDw8IDIpDQo+ICsjZGVmaW5lIEFDVCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAoKHgg JiAweDcpIDw8IDMpDQo+ICsjZGVmaW5lIERBVF9MRU5HVEgoeCkgICAgICAgICAgICAgICAgICAo KHggJiAweEZGRkYpIDw8IDE2KQ0KPiArDQo+ICsjZGVmaW5lIFNXX1JTVF9DTURfRE9ORSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwDQo+ICsjZGVmaW5lIFNXX1JTVF9E QVRBX0RPTkUgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMA0KPiArI2RlZmluZSBTV19S U1RfQk9USF9ET05FICAgICAgICAgICAgICAgICAgICAgICAgMHg2MDAwMDAwDQo+ICsNCj4gKy8q IFJlZ2lzdGVyIGFjY2VzcyBtYWNyb3MgKi8NCj4gKyNkZWZpbmUgbWNxX3JlYWRsKGRldiwgcmVn KSAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICByZWFkbF9yZWxheGVkKChkZXYpLT5y ZWdzICsgU0RNTUNfIyNyZWcpDQo+ICsjZGVmaW5lIG1jcV93cml0ZWwoZGV2LCByZWcsIHZhbHVl KSAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICB3cml0ZWxfcmVsYXhlZCgodmFsdWUp LCAoZGV2KS0+cmVncyArIFNETU1DXyMjcmVnKQ0KPiArDQo+ICsjZGVmaW5lIG1jcV9yZWFkdyhk ZXYsIHJlZykgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgcmVhZHdfcmVsYXhlZCgo ZGV2KS0+cmVncyArIFNETU1DXyMjcmVnKQ0KPiArI2RlZmluZSBtY3Ffd3JpdGV3KGRldiwgcmVn LCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgd3JpdGV3X3JlbGF4ZWQo KHZhbHVlKSwgKGRldiktPnJlZ3MgKyBTRE1NQ18jI3JlZykNCj4gKw0KPiArI2RlZmluZSBtY3Ff cmVhZGIoZGV2LCByZWcpICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIHJlYWRiX3Jl bGF4ZWQoKGRldiktPnJlZ3MgKyBTRE1NQ18jI3JlZykNCj4gKyNkZWZpbmUgbWNxX3dyaXRlYihk ZXYsIHJlZywgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIHdyaXRlYl9y ZWxheGVkKCh2YWx1ZSksIChkZXYpLT5yZWdzICsgU0RNTUNfIyNyZWcpDQo+ICsNCj4gKyNkZWZp bmUgZHdfbWNpX2dldF9pbnQoZGV2KSAgICBcDQo+ICsgICAgICAgZG8geyAgICBcDQo+ICsgICAg ICAgICAgICAgICBkZXYtPm5vcm1hbF9pbnRlcnJ1cHQgPSBtY3FfcmVhZHcoZGV2LCBOT1JNQUxf SU5UX1NUQVRfUik7ICAgXA0KPiArICAgICAgICAgICAgICAgZGV2LT5lcnJvcl9pbnRlcnJ1cHQg PSBtY3FfcmVhZHcoZGV2LCBFUlJPUl9JTlRfU1RBVF9SKTsgICBcDQo+ICsgICAgICAgICAgICAg ICBkZXYtPmF1dG9fZXJyb3JfaW50ZXJydXB0ID0gbWNxX3JlYWR3KGRldiwgQVVUT19DTURfU1RB VF9SKTsgICAgIFwNCj4gKyAgICAgICB9IHdoaWxlICgwKQ0KPiArDQo+ICsvKmNsZWFyIHN0YXR1 cyByZWdpc3Rlciwgd2UgYWx3YXlzIGtlZXAgdGhlIGNhcmQgaW50ZXJydXB0Ki8NCj4gKyNkZWZp bmUgZHdfbWNpX2Nscl9pbnQoZGV2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAg ICAgICAgICAgIG1jcV93cml0ZXcoZGV2LCBFUlJPUl9JTlRfU1RBVF9SLCBtY3FfcmVhZHcoZGV2 LCBFUlJPUl9JTlRfU1RBVF9SKSAmIDB4ZmZmZik7IFwNCj4gKyAgICAgICAgICAgICAgIG1jcV93 cml0ZXcoZGV2LCBOT1JNQUxfSU5UX1NUQVRfUiwgbWNxX3JlYWR3KGRldiwgTk9STUFMX0lOVF9T VEFUX1IpICYgMHhmZmZmKTsgXA0KPiArICAgICAgIH0gd2hpbGUgKDApDQo+ICsNCj4gKy8qbWFz ayBhbGwgZW1tYyBpbnRlcnJ1cHRzKi8NCj4gKyNkZWZpbmUgZHdfbWNpX2Nscl9zaWduYWxfaW50 KGRldikgICAgXA0KPiArICAgICAgIGRvIHsgICAgICBcDQo+ICsgICAgICAgICAgICAgICBtY3Ff d3JpdGV3KGRldiwgTk9STUFMX0lOVF9TSUdOQUxfRU5fUiwgbWNxX3JlYWR3KGRldiwgTk9STUFM X0lOVF9TSUdOQUxfRU5fUikgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAmIChCSVQoNil8 QklUKDcpKSk7IFwNCj4gKyAgICAgICAgICAgICAgIG1jcV93cml0ZXcoZGV2LCBFUlJPUl9JTlRf U0lHTkFMX0VOX1IsIDApOyBcDQo+ICsgICAgICAgfSB3aGlsZSAoMCkNCj4gKw0KPiArLypmb3Ig Y21kcSwgd2UgZG8gbm90IG5lZWQgY21kIGFuZCB4ZmVyIGRvbmUsIG9ubHkgY3FlIGV2ZW50Ki8N Cj4gKyNkZWZpbmUgZHdfbWNpX2VuX2NxZV9pbnQoZGV2KSAgXA0KPiArICAgICAgIGRvIHsgXA0K PiArICAgICAgICAgICAgICAgbWNxX3dyaXRldyhkZXYsIE5PUk1BTF9JTlRfU0lHTkFMX0VOX1Is IG1jcV9yZWFkdyhkZXYsIE5PUk1BTF9JTlRfU0lHTkFMX0VOX1IpfCBcDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIFNETU1DX05PUk1BTF9JTlRfU0lHTkFMX0NRRV9FTl9SKTsgXA0KPiArICAg ICAgICAgICAgICAgbWNxX3dyaXRldyhkZXYsIEVSUk9SX0lOVF9TSUdOQUxfRU5fUiwgU0RNTUNf QUxMX0VSUl9TSUdOQUxfRU4pOyBcDQo+ICsgICAgICAgfSB3aGlsZSAoMCkNCj4gKw0KPiArLyp1 c2VkIGZvciBkYXRhLCByMWIgY2FzZSwgd2UgbWFzayBjbWQgZG9uZSBpbnRlcnJ1cHQqLw0KPiAr I2RlZmluZSBkd19tY2lfZW5feGZlcl9pbnQoZGV2KSAgXA0KPiArICAgICAgIGRvIHsgIFwNCj4g KyAgICAgICAgICAgICAgIG1jcV93cml0ZXcoZGV2LCBOT1JNQUxfSU5UX1NJR05BTF9FTl9SLCBc DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1jcV9yZWFkdyhkZXYsIE5PUk1BTF9JTlRfU0lH TkFMX0VOX1IpfFNETU1DX05PUk1BTF9JTlRfU0lHTkFMX0RBVF9FTl9SKTsgXA0KPiArICAgICAg ICAgICAgICAgbWNxX3dyaXRldyhkZXYsIEVSUk9SX0lOVF9TSUdOQUxfRU5fUiwgU0RNTUNfQUxM X0VSUl9TSUdOQUxfRU4pOyBcDQo+ICsgICAgICAgfSB3aGlsZSAoMCkNCj4gKw0KPiArLyp1c2Vk IGZvciBub25lLXN0cmVhbSBjYXNlIChjbWQgdy93by8gcmVzcCkqLw0KPiArI2RlZmluZSBkd19t Y2lfZW5fY2RfaW50KGRldikgIFwNCj4gKyAgICAgICBkbyB7ICAgIFwNCj4gKyAgICAgICAgICAg ICAgIG1jcV93cml0ZXcoZGV2LCBOT1JNQUxfSU5UX1NJR05BTF9FTl9SLCBcDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIG1jcV9yZWFkdyhkZXYsIE5PUk1BTF9JTlRfU0lHTkFMX0VOX1IpfFNE TU1DX05PUk1BTF9JTlRfU0lHTkFMX0NNRF9FTl9SKTsgXA0KPiArICAgICAgICAgICAgICAgbWNx X3dyaXRldyhkZXYsIEVSUk9SX0lOVF9TSUdOQUxfRU5fUiwgU0RNTUNfQUxMX0VSUl9TSUdOQUxf RU4pOyBcDQo+ICsgICAgICAgfSB3aGlsZSAoMCkNCj4gKw0KPiArZXh0ZXJuIGludCBkd19tY2lf Y3FlX3Byb2JlKHN0cnVjdCBkd19tY2kgKmhvc3QpOw0KPiArZXh0ZXJuIHZvaWQgZHdfbWNpX2Nx ZV9yZW1vdmUoc3RydWN0IGR3X21jaSAqaG9zdCk7DQo+ICsjaWZkZWYgQ09ORklHX1BNDQo+ICtl eHRlcm4gaW50IGR3X21jaV9jcWVfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmlj ZSk7DQo+ICtleHRlcm4gaW50IGR3X21jaV9jcWVfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2aWNlKTsNCj4gKyNlbmRpZg0KPiAraXJxcmV0dXJuX3QgY3FoY2lfaXJxKHN0cnVjdCBt bWNfaG9zdCAqbW1jLCB1MzIgaW50bWFzaywgaW50IGNtZF9lcnJvciwgaW50IGRhdGFfZXJyb3Ip Ow0KPiArDQo+ICsvKiBCb2FyZCBwbGF0Zm9ybSBkYXRhICovDQo+ICtzdHJ1Y3QgZHdfbWNpX2Jv YXJkIHsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgYnVzX2h6OyAvKiBDbG9jayBzcGVlZCBhdCB0 aGUgY2Nsa19pbiBwYWQgKi8NCj4gKyAgICAgICB1MzIgY2FwczsgICAgICAgLyogQ2FwYWJpbGl0 aWVzICovDQo+ICsgICAgICAgdTMyIGNhcHMyOyAgICAgIC8qIE1vcmUgY2FwYWJpbGl0aWVzICov DQo+ICsgICAgICAgdTMyIHBtX2NhcHM7ICAgIC8qIFBNIGNhcGFiaWxpdGllcyAqLw0KPiArDQo+ ICsgICAgICAgLyogZGVsYXkgaW4gbVMgYmVmb3JlIGRldGVjdGluZyBjYXJkcyBhZnRlciBpbnRl cnJ1cHQgKi8NCj4gKyAgICAgICB1MzIgZGV0ZWN0X2RlbGF5X21zOw0KPiArDQo+ICsgICAgICAg c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdGM7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZHdfbWNp X3Nsb3Qgew0KPiArICAgICAgIHN0cnVjdCBtbWNfaG9zdCAgICAgICAgICptbWM7DQo+ICsgICAg ICAgc3RydWN0IGR3X21jaSAgICAgICAgICAgKmhvc3Q7DQo+ICsNCj4gKyAgICAgICBzdHJ1Y3Qg bW1jX3JlcXVlc3QgICAgICAqbXJxOw0KPiArDQo+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAg ICAgICAgY2xvY2s7DQo+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgX19jbGtfb2xk Ow0KPiArDQo+ICsgICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgZmxhZ3M7DQo+ICsjZGVm aW5lIERXX01NQ19DQVJEX1BSRVNFTlQgICAgIDENCj4gKyAgICAgICBpbnQgICAgICAgICAgICAg ICAgICAgICBpZDsNCj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBzZGlvX2lkOw0K PiArICAgICAgIHU4ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaF9wYXJ0aXRpb247DQo+ICt9 Ow0KPiArDQo+ICtzdHJ1Y3QgZHdfbWNpX2Rydl9kYXRhIHsNCj4gKyAgICAgICB1bnNpZ25lZCBs b25nICAgKmNhcHM7DQo+ICsgICAgICAgdTMyICAgICAgICAgICAgIG51bV9jYXBzOw0KPiArICAg ICAgIGludCAgICAgICAgICAgICAoKmluaXQpKHN0cnVjdCBkd19tY2kgKmhvc3QpOw0KPiArICAg ICAgIHZvaWQgICAgICAgICAgICAoKnNldF9pb3MpKHN0cnVjdCBkd19tY2lfc2xvdCAqc2xvdCwg c3RydWN0IG1tY19pb3MgKmlvcyk7DQo+ICsgICAgICAgaW50ICAgICAgICAgICAgICgqcGFyc2Vf ZHQpKHN0cnVjdCBkd19tY2kgKmhvc3QpOw0KPiArICAgICAgIGludCAgICAgICAgICAgICAoKmV4 ZWN1dGVfdHVuaW5nKShzdHJ1Y3QgZHdfbWNpX3Nsb3QgKnNsb3QsIHUzMiBvcGNvZGUpOw0KPiAr ICAgICAgIGludCAgICAgICAgICAgICAoKnByZXBhcmVfaHM0MDBfdHVuaW5nKShzdHJ1Y3QgZHdf bWNpICpob3N0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG1tY19pb3MgKmlvcyk7DQo+ICsgICAgICAgaW50ICAgICAgICAgICAgICgqc3dpdGNoX3Zv bHRhZ2UpKHN0cnVjdCBtbWNfaG9zdCAqbW1jLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IG1tY19pb3MgKmlvcyk7DQo+ICsgICAgICAgdm9pZCAgICAg ICAgICAgICgqaHM0MDBfY29tcGxldGUpKHN0cnVjdCBtbWNfaG9zdCAqbW1jKTsNCj4gKyAgICAg ICB2b2lkICAgICAgICAgICAgKCppbml0X2NhcmQpKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbWNfY2FyZCAq Y2FyZCk7DQo+ICsgICAgICAgdm9pZCAgICAgICAgICAgICgqc2hpZnRfcnNwKShzdHJ1Y3QgZHdf bWNpICpob3N0LCBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCwgdTMyICpyc3ApOw0KPiArfTsNCj4g Kw0KPiArdm9pZCBkd19tY2lfY3FlX3dhaXRfZG9uZShzdHJ1Y3QgZHdfbWNpICpob3N0LCB1MzIg KmFkZHIsIHUzMiBtYXNrLCB1MzIgdmFsdWUpOw0KPiArI2VuZGlmDQoNCg0KDQoNCg0KDQo+IC0t DQo+IDIuNDIuMA0KPg0KDQotLS0tLS1QbGVhc2UgY29uc2lkZXIgdGhlIGVudmlyb25tZW50IGJl Zm9yZSBwcmludGluZyB0aGlzIGUtbWFpbC4NCg0K --_002_d171e2279da847fa81022f6fd23869fbrealtekcom_ Content-Type: image/png; name="13.PNG" Content-Description: 13.PNG Content-Disposition: attachment; filename="13.PNG"; size=19250; creation-date="Thu, 31 Aug 2023 07:34:15 GMT"; modification-date="Thu, 31 Aug 2023 07:34:15 GMT" Content-Transfer-Encoding: base64 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 --_002_d171e2279da847fa81022f6fd23869fbrealtekcom_--