From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4259CC4346E for ; Tue, 29 Sep 2020 07:30:56 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A56B4206BE for ; Tue, 29 Sep 2020 07:30:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="IMCnb0tY"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="bw8BwZpd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A56B4206BE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=xNZC/q2SauO58p5it5LkgrIUGcspA6GNT7+rDEFCtNA=; b=IMCnb0tYygPAffT0rfJ6ADB+y YKOaP2GIgA8yHZkoLQN9ECb3G38TZ6Q+fgMl/IaaatldcEjeFYtp/mQBQSU0J7kHZ/WuzhyRJbwb6 zRMExgfqOtf4hgf1PyoBzPIQb28ESy36AyRVLTev/vzZWfVtoTxqMbzEmc/yZpIeXYMIdHoZiyxFx +5kcoUDfeZojGzxoYr25JrJ5dKQ4hzX1vojBuIyrFw7u7wblXAWlxcqgiy7wKvYxBWwd3vxQ5NqDh nnjGFbSATp62TW3LOhuCegq28QzYYS8DLtUJuSIt2p4qErX4cjeyVEGOxelNJkZJj+LvY5EHDPhoT iAhVOLXzw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNA4Q-0001rF-Mr; Tue, 29 Sep 2020 07:29:06 +0000 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNA4M-0001qZ-4j for linux-arm-kernel@lists.infradead.org; Tue, 29 Sep 2020 07:29:04 +0000 Received: by mail-wm1-x343.google.com with SMTP id w2so3544077wmi.1 for ; Tue, 29 Sep 2020 00:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:autocrypt:organization:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=BrllMdKndcUtOb93v1cqFnFKMSahOUoK1gZg+6TVZ/g=; b=bw8BwZpdf14bSEOvcQkSWr+6oK7yU4Oi3RJzH0Bz+9PtyBYO4BhXdrR3ovSvuxuHSd OvlAjWzz2uM889KVitQdLR6QryiQbrsyQGTN3V2J/ZSGzg8pZE9BqB1LgzcbGCvFcwNK 6DfabscVFcwb7Dkn7HoSiQP4pINB6m5ZRzlata7qJikLWWMMFwB207EbXqCWrGlxDAi+ vNug9RX8YHCM4+v0eDBwHp7F+DnO6AhFjmJr/YxJTwPsqOx2cWLKQFV9l/JA/w1ksKAG 7W4ng8f9LxkmvcFAsvBCyXpYIRP0J6N9hMkRyeK8SSAoTaG8Q0uZdIRcb7CIlZwwfycF QT7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:autocrypt :organization:message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=BrllMdKndcUtOb93v1cqFnFKMSahOUoK1gZg+6TVZ/g=; b=PELl/Bk2ULjbpIp+9yLMIhpmFVWRZsocnsHmP0zCCYdGQeMqgr6iSLCPqACJhLeZJv EXQgwr6o7cf5WBgQJ+IbVkr6GnD/ObrD+EPEhb17l5E26Tdl4B9cJ76N66FwOTskXPLR Cy5jR33fsId75Wb86vZfqgnXXv4J/Df9oZGI1OJjkTSCsMQmASHuZJWKQ/MazBR3PcML uKBHg/v4bjO3sSYmIINZ5iDMWstZ51OkPjRdR0zvtwSlsx6PwVrnNo7dN3sDDhyvTZ/9 mVVpbYAsm+xbtwn9GRcm9lK16kxR/LjkPjX/quu4PeSLAyzV/hv0EGI4BLDVElUsJA65 ZaIQ== X-Gm-Message-State: AOAM5307TeZzJ0/kpnJxuSgFc0wedjbAIjq6dQ4hkU+SLQYwqz1OoqW4 NhL2lk4yrkoqRgJMytETB3iiPYxe4g9jA7G0 X-Google-Smtp-Source: ABdhPJzg3HUI8GuDsEvprq+T3mG/mQaLw7KRj6WD9BewrSn0L3o/H2T05v50Yfi8NS5+1ToE4fiDpA== X-Received: by 2002:a7b:c210:: with SMTP id x16mr2872668wmi.76.1601364539376; Tue, 29 Sep 2020 00:28:59 -0700 (PDT) Received: from ?IPv6:2a01:e35:2ec0:82b0:d50c:1ee4:fec5:ad12? ([2a01:e35:2ec0:82b0:d50c:1ee4:fec5:ad12]) by smtp.gmail.com with ESMTPSA id v2sm4720716wrm.16.2020.09.29.00.28.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Sep 2020 00:28:58 -0700 (PDT) Subject: Re: [PATCH] Revert "video: fbdev: amba-clcd: Retire elder CLCD driver" To: Peter Collingbourne , Linus Walleij , Eric Anholt References: <20200928200856.1897023-1-pcc@google.com> From: Neil Armstrong Autocrypt: addr=narmstrong@baylibre.com; prefer-encrypt=mutual; keydata= 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 ZaTUOEkgIor5losDrePdPgE= Organization: Baylibre Message-ID: <0dc9f36b-417d-bfad-9eb7-858c3041ff0c@baylibre.com> Date: Tue, 29 Sep 2020 09:28:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200928200856.1897023-1-pcc@google.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200929_032902_344459_2B9D4716 X-CRM114-Status: GOOD ( 31.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Brodsky , Maarten Lankhorst , Russell King , ML dri-devel , John Stultz , Maxime Ripard , Sean Paul , Linux ARM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpPbiAyOC8wOS8yMDIwIDIyOjA4LCBQZXRlciBDb2xsaW5nYm91cm5lIHdyb3RlOgo+IEFs c28gcmV2ZXJ0IHRoZSBmb2xsb3ctdXAgY2hhbmdlICJkcm06IHBsMTExOiBBYnNvcmIgdGhlIGV4 dGVybmFsCj4gcmVnaXN0ZXIgaGVhZGVyIi4KPiAKPiBUaGlzIHJldmVydHMgY29tbWl0cyA3ZTRl NTg5ZGI3NmEzY2Y0YzFmNTM0ZWI1YTA5Y2M2NDIyNzY2YjkzCj4gYW5kIDBmYjgxMjU2MzVlOGVi NTQ4M2ZiMDk1Zjk4ZGNmMDY1MTIwNmE3YjguCj4gCj4gVGhlIGZiZGV2IGRyaXZlciBpcyB1c2Vk IGJ5IEFuZHJvaWQncyBGVlAgY29uZmlndXJhdGlvbi4gVXNpbmcgdGhlCj4gRFJNIGRyaXZlciB0 b2dldGhlciB3aXRoIERSTSdzIGZiZGV2IGVtdWxhdGlvbiByZXN1bHRzIGluIGEgZmFpbHVyZQo+ IHRvIGJvb3QgQW5kcm9pZC4gVGhlIHJvb3QgY2F1c2UgaXMgdGhhdCBBbmRyb2lkJ3MgZ2VuZXJp YyBmYmRldgo+IHVzZXJzcGFjZSBkcml2ZXIgcmVsaWVzIG9uIHRoZSBhYmlsaXR5IHRvIHNldCB0 aGUgcGl4ZWwgZm9ybWF0IHZpYQo+IEZCSU9QVVRfVlNDUkVFTklORk8sIHdoaWNoIGlzIG5vdCBz dXBwb3J0ZWQgYnkgZmJkZXYgZW11bGF0aW9uLgoKQ2FuJ3QgQW5kcm9pZCBGVlAgdXNlIGRybS1o d2NvbXBvc2VyIGluc3RlYWQgPwoKTmVpbAoKPiAKPiBUaGVyZSBoYXZlIGJlZW4gb3RoZXIgbGVz cyBjcml0aWNhbCBiZWhhdmlvcmFsIGRpZmZlcmVuY2VzIGlkZW50aWZpZWQKPiBiZXR3ZWVuIHRo ZSBmYmRldiBkcml2ZXIgYW5kIHRoZSBEUk0gZHJpdmVyIHdpdGggZmJkZXYgZW11bGF0aW9uLiBU aGUKPiBEUk0gZHJpdmVyIGV4cG9zZXMgZGlmZmVyZW50IHZhbHVlcyBmb3IgdGhlIHBhbmVsJ3Mg d2lkdGgsIGhlaWdodCBhbmQKPiByZWZyZXNoIHJhdGUsIGFuZCB0aGUgRFJNIGRyaXZlciBmYWls cyBhIEZCSU9QVVRfVlNDUkVFTklORk8gc3lzY2FsbAo+IHdpdGggeXJlc192aXJ0dWFsIGdyZWF0 ZXIgdGhhbiB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgdmFsdWUgaW5zdGVhZAo+IG9mIGxldHRpbmcg dGhlIHN5c2NhbGwgc3VjY2VlZCBhbmQgc2V0dGluZyB5cmVzX3ZpcnR1YWwgYmFzZWQgb24geXJl cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBDb2xsaW5nYm91cm5lIDxwY2NAZ29vZ2xlLmNv bT4KPiAtLS0KPiBWaWV3IHRoaXMgY2hhbmdlIGluIEdlcnJpdDogaHR0cHM6Ly9saW51eC1yZXZp ZXcuZ29vZ2xlc291cmNlLmNvbS9xL0kyZDdlNTliMGU2OTNkOWZlYzIwNmQ0MGRmMTkwYzVhYTAy ODQ0YjU2Cj4gCj4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kZWJ1Z2ZzLmMgICB8ICAgMSArCj4g IGRyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMgICB8ICAgMSArCj4gIGRyaXZl cnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcm0uaCAgICAgICB8ICA3MyAtLQo+ICBkcml2ZXJzL2dw dS9kcm0vcGwxMTEvcGwxMTFfZHJ2LmMgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0v cGwxMTEvcGwxMTFfdmVyc2F0aWxlLmMgfCAgIDEgKwo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tj b25maWcgICAgICAgICAgICAgfCAgMjAgKwo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L01ha2VmaWxl ICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC5jICAg ICAgICAgfCA5ODYgKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUvbGludXgvYW1i YS9jbGNkLXJlZ3MuaCAgICAgICAgICB8ICA4NyArKysKPiAgaW5jbHVkZS9saW51eC9hbWJhL2Ns Y2QuaCAgICAgICAgICAgICAgIHwgMjkwICsrKysrKysKPiAgMTEgZmlsZXMgY2hhbmdlZCwgMTM5 MyBpbnNlcnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvbGludXgvYW1iYS9jbGNkLXJlZ3MuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9s aW51eC9hbWJhL2NsY2QuaAo+IAo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlO RVJTCj4gaW5kZXggMTkwYzdmYTJlYTAxLi42NzFjMWZhNzllNjQgMTAwNjQ0Cj4gLS0tIGEvTUFJ TlRBSU5FUlMKPiArKysgYi9NQUlOVEFJTkVSUwo+IEBAIC0xNDYwLDYgKzE0NjAsMTEgQEAgUzoJ T2RkIEZpeGVzCj4gIEY6CWRyaXZlcnMvYW1iYS8KPiAgRjoJaW5jbHVkZS9saW51eC9hbWJhL2J1 cy5oCj4gIAo+ICtBUk0gUFJJTUVDRUxMIENMQ0QgUEwxMTAgRFJJVkVSCj4gK006CVJ1c3NlbGwg S2luZyA8bGludXhAYXJtbGludXgub3JnLnVrPgo+ICtTOglPZGQgRml4ZXMKPiArRjoJZHJpdmVy cy92aWRlby9mYmRldi9hbWJhLWNsY2QuKgo+ICsKPiAgQVJNIFBSSU1FQ0VMTCBLTUkgUEwwNTAg RFJJVkVSCj4gIE06CVJ1c3NlbGwgS2luZyA8bGludXhAYXJtbGludXgub3JnLnVrPgo+ICBTOglP ZGQgRml4ZXMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2RlYnVn ZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kZWJ1Z2ZzLmMKPiBpbmRleCAzMTdm NjhhYmYxOGIuLjI2Y2E4Y2RmM2U2MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGwx MTEvcGwxMTFfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Rl YnVnZnMuYwo+IEBAIC0zLDYgKzMsNyBAQAo+ICAgKiAgQ29weXJpZ2h0IMKpIDIwMTcgQnJvYWRj b20KPiAgICovCj4gIAo+ICsjaW5jbHVkZSA8bGludXgvYW1iYS9jbGNkLXJlZ3MuaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+Cj4gIAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kZWJ1Z2Zz Lmg+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGlzcGxheS5jCj4gaW5kZXggYjNlODY5N2Nh ZmNmLi43MDNkZGM4MDNjNTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3Bs MTExX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5 LmMKPiBAQCAtOSw2ICs5LDcgQEAKPiAgICogQ29weXJpZ2h0IChDKSAyMDExIFRleGFzIEluc3Ry dW1lbnRzCj4gICAqLwo+ICAKPiArI2luY2x1ZGUgPGxpbnV4L2FtYmEvY2xjZC1yZWdzLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gICNp bmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9w bDExMS9wbDExMV9kcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcm0uaAo+IGlu ZGV4IDJhNDZiNWJkODU3Ni4uYmEzOTliY2I3OTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9wbDExMS9wbDExMV9kcm0uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDEx MV9kcm0uaAo+IEBAIC0yMyw3OSArMjMsNiBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5o Pgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ICAKPiAtLyoKPiAt ICogQ0xDRCBDb250cm9sbGVyIEludGVybmFsIFJlZ2lzdGVyIGFkZHJlc3Nlcwo+IC0gKi8KPiAt I2RlZmluZSBDTENEX1RJTTAJCTB4MDAwMDAwMDAKPiAtI2RlZmluZSBDTENEX1RJTTEJCTB4MDAw MDAwMDQKPiAtI2RlZmluZSBDTENEX1RJTTIJCTB4MDAwMDAwMDgKPiAtI2RlZmluZSBDTENEX1RJ TTMJCTB4MDAwMDAwMGMKPiAtI2RlZmluZSBDTENEX1VCQVMJCTB4MDAwMDAwMTAKPiAtI2RlZmlu ZSBDTENEX0xCQVMJCTB4MDAwMDAwMTQKPiAtCj4gLSNkZWZpbmUgQ0xDRF9QTDExMF9JRU5CCQkw eDAwMDAwMDE4Cj4gLSNkZWZpbmUgQ0xDRF9QTDExMF9DTlRMCQkweDAwMDAwMDFjCj4gLSNkZWZp bmUgQ0xDRF9QTDExMF9TVEFUCQkweDAwMDAwMDIwCj4gLSNkZWZpbmUgQ0xDRF9QTDExMF9JTlRS CQkweDAwMDAwMDI0Cj4gLSNkZWZpbmUgQ0xDRF9QTDExMF9VQ1VSCQkweDAwMDAwMDI4Cj4gLSNk ZWZpbmUgQ0xDRF9QTDExMF9MQ1VSCQkweDAwMDAwMDJDCj4gLQo+IC0jZGVmaW5lIENMQ0RfUEwx MTFfQ05UTAkJMHgwMDAwMDAxOAo+IC0jZGVmaW5lIENMQ0RfUEwxMTFfSUVOQgkJMHgwMDAwMDAx Ywo+IC0jZGVmaW5lIENMQ0RfUEwxMTFfUklTCQkweDAwMDAwMDIwCj4gLSNkZWZpbmUgQ0xDRF9Q TDExMV9NSVMJCTB4MDAwMDAwMjQKPiAtI2RlZmluZSBDTENEX1BMMTExX0lDUgkJMHgwMDAwMDAy OAo+IC0jZGVmaW5lIENMQ0RfUEwxMTFfVUNVUgkJMHgwMDAwMDAyYwo+IC0jZGVmaW5lIENMQ0Rf UEwxMTFfTENVUgkJMHgwMDAwMDAzMAo+IC0KPiAtI2RlZmluZSBDTENEX1BBTEwJCTB4MDAwMDAy MDAKPiAtI2RlZmluZSBDTENEX1BBTEVUVEUJCTB4MDAwMDAyMDAKPiAtCj4gLSNkZWZpbmUgVElN Ml9QQ0RfTE9fTUFTSwlHRU5NQVNLKDQsIDApCj4gLSNkZWZpbmUgVElNMl9QQ0RfTE9fQklUUwk1 Cj4gLSNkZWZpbmUgVElNMl9DTEtTRUwJCSgxIDw8IDUpCj4gLSNkZWZpbmUgVElNMl9BQ0JfTUFT SwkJR0VOTUFTSygxMCwgNikKPiAtI2RlZmluZSBUSU0yX0lWUwkJKDEgPDwgMTEpCj4gLSNkZWZp bmUgVElNMl9JSFMJCSgxIDw8IDEyKQo+IC0jZGVmaW5lIFRJTTJfSVBDCQkoMSA8PCAxMykKPiAt I2RlZmluZSBUSU0yX0lPRQkJKDEgPDwgMTQpCj4gLSNkZWZpbmUgVElNMl9CQ0QJCSgxIDw8IDI2 KQo+IC0jZGVmaW5lIFRJTTJfUENEX0hJX01BU0sJR0VOTUFTSygzMSwgMjcpCj4gLSNkZWZpbmUg VElNMl9QQ0RfSElfQklUUwk1Cj4gLSNkZWZpbmUgVElNMl9QQ0RfSElfU0hJRlQJMjcKPiAtCj4g LSNkZWZpbmUgQ05UTF9MQ0RFTgkJKDEgPDwgMCkKPiAtI2RlZmluZSBDTlRMX0xDREJQUDEJCSgw IDw8IDEpCj4gLSNkZWZpbmUgQ05UTF9MQ0RCUFAyCQkoMSA8PCAxKQo+IC0jZGVmaW5lIENOVExf TENEQlBQNAkJKDIgPDwgMSkKPiAtI2RlZmluZSBDTlRMX0xDREJQUDgJCSgzIDw8IDEpCj4gLSNk ZWZpbmUgQ05UTF9MQ0RCUFAxNgkJKDQgPDwgMSkKPiAtI2RlZmluZSBDTlRMX0xDREJQUDE2XzU2 NQkoNiA8PCAxKQo+IC0jZGVmaW5lIENOVExfTENEQlBQMTZfNDQ0CSg3IDw8IDEpCj4gLSNkZWZp bmUgQ05UTF9MQ0RCUFAyNAkJKDUgPDwgMSkKPiAtI2RlZmluZSBDTlRMX0xDREJXCQkoMSA8PCA0 KQo+IC0jZGVmaW5lIENOVExfTENEVEZUCQkoMSA8PCA1KQo+IC0jZGVmaW5lIENOVExfTENETU9O TzgJCSgxIDw8IDYpCj4gLSNkZWZpbmUgQ05UTF9MQ0REVUFMCQkoMSA8PCA3KQo+IC0jZGVmaW5l IENOVExfQkdSCQkoMSA8PCA4KQo+IC0jZGVmaW5lIENOVExfQkVCTwkJKDEgPDwgOSkKPiAtI2Rl ZmluZSBDTlRMX0JFUE8JCSgxIDw8IDEwKQo+IC0jZGVmaW5lIENOVExfTENEUFdSCQkoMSA8PCAx MSkKPiAtI2RlZmluZSBDTlRMX0xDRFZDT01QKHgpCSgoeCkgPDwgMTIpCj4gLSNkZWZpbmUgQ05U TF9MRE1BRklGT1RJTUUJKDEgPDwgMTUpCj4gLSNkZWZpbmUgQ05UTF9XQVRFUk1BUksJCSgxIDw8 IDE2KQo+IC0KPiAtLyogU1QgTWljcm9lbGVjdHJvbmljcyB2YXJpYW50IGJpdHMgKi8KPiAtI2Rl ZmluZSBDTlRMX1NUXzFYQlBQXzQ0NAkweDAKPiAtI2RlZmluZSBDTlRMX1NUXzFYQlBQXzU1NTEJ KDEgPDwgMTcpCj4gLSNkZWZpbmUgQ05UTF9TVF8xWEJQUF81NjUJKDEgPDwgMTgpCj4gLSNkZWZp bmUgQ05UTF9TVF9DRFdJRF8xMgkweDAKPiAtI2RlZmluZSBDTlRMX1NUX0NEV0lEXzE2CSgxIDw8 IDE5KQo+IC0jZGVmaW5lIENOVExfU1RfQ0RXSURfMTgJKDEgPDwgMjApCj4gLSNkZWZpbmUgQ05U TF9TVF9DRFdJRF8yNAkoKDEgPDwgMTkpIHwgKDEgPDwgMjApKQo+IC0jZGVmaW5lIENOVExfU1Rf Q0VBRU4JCSgxIDw8IDIxKQo+IC0jZGVmaW5lIENOVExfU1RfTENEQlBQMjRfUEFDS0VECSg2IDw8 IDEpCj4gLQo+ICAjZGVmaW5lIENMQ0RfSVJRX05FWFRCQVNFX1VQREFURSBCSVQoMikKPiAgCj4g IHN0cnVjdCBkcm1fbWlub3I7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9w bDExMV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcnYuYwo+IGluZGV4IDk2 ZTU4ZmRhNzVkOC4uZGEwYzM5ZGFlODc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9w bDExMS9wbDExMV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcnYu Ywo+IEBAIC00Nyw2ICs0Nyw3IEBACj4gICAqLwo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L2FtYmEv YnVzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9hbWJhL2NsY2QtcmVncy5oPgo+ICAjaW5jbHVkZSA8 bGludXgvZG1hLWJ1Zi5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRl IDxsaW51eC9vZi5oPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFf dmVyc2F0aWxlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfdmVyc2F0aWxlLmMKPiBp bmRleCBiZGQ4ODNmNGYwZGEuLjExMjcwODJlOWE2MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vcGwxMTEvcGwxMTFfdmVyc2F0aWxlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGwx MTEvcGwxMTFfdmVyc2F0aWxlLmMKPiBAQCAtOSw2ICs5LDcgQEAKPiAgICogTWFqb3IgY29udHJp YnV0aW9ucyBhbmQgZGlzY292ZXJpZXMgYnkgUnVzc2VsbCBLaW5nLgo+ICAgKi8KPiAgCj4gKyNp bmNsdWRlIDxsaW51eC9hbWJhL2NsY2QtcmVncy5oPgo+ICAjaW5jbHVkZSA8bGludXgvYml0b3Bz Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21mZC9z eXNjb24uaD4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnIGIvZHJp dmVycy92aWRlby9mYmRldi9LY29uZmlnCj4gaW5kZXggYjJjOWRkNGYwY2I1Li40MDJlODU0NTBi YjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnCj4gKysrIGIvZHJp dmVycy92aWRlby9mYmRldi9LY29uZmlnCj4gQEAgLTI3Miw2ICsyNzIsMjYgQEAgY29uZmlnIEZC X1BNMl9GSUZPX0RJU0NPTk5FQ1QKPiAgCWhlbHAKPiAgCSAgU3VwcG9ydCB0aGUgUGVybWVkaWEy IEZJRk8gZGlzY29ubmVjdCBmZWF0dXJlLgo+ICAKPiArY29uZmlnIEZCX0FSTUNMQ0QKPiArCXRy aXN0YXRlICJBUk0gUHJpbWVDZWxsIFBMMTEwIHN1cHBvcnQiCj4gKwlkZXBlbmRzIG9uIEFSTSB8 fCBBUk02NCB8fCBDT01QSUxFX1RFU1QKPiArCWRlcGVuZHMgb24gRkIgJiYgQVJNX0FNQkEgJiYg SEFTX0lPTUVNCj4gKwlzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUCj4gKwlzZWxlY3QgRkJfQ0ZCX0NP UFlBUkVBCj4gKwlzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVAo+ICsJc2VsZWN0IEZCX01PREVfSEVM UEVSUyBpZiBPRgo+ICsJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTIGlmIE9GCj4gKwlzZWxlY3Qg QkFDS0xJR0hUX0NMQVNTX0RFVklDRSBpZiBPRgo+ICsJaGVscAo+ICsJICBUaGlzIGZyYW1lYnVm ZmVyIGRldmljZSBkcml2ZXIgaXMgZm9yIHRoZSBBUk0gUHJpbWVDZWxsIFBMMTEwCj4gKwkgIENv bG91ciBMQ0QgY29udHJvbGxlci4gIEFSTSBQcmltZUNlbGxzIHByb3ZpZGUgdGhlIGJ1aWxkaW5n Cj4gKwkgIGJsb2NrcyBmb3IgU3lzdGVtIG9uIGEgQ2hpcCBkZXZpY2VzLgo+ICsKPiArCSAgSWYg eW91IHdhbnQgdG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlICg9Y29kZSB3aGljaCBjYW4gYmUK PiArCSAgaW5zZXJ0ZWQgaW50byBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCks IHNheSBNCj4gKwkgIGhlcmUgYW5kIHJlYWQgPGZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9k dWxlcy5yc3Q+LiAgVGhlIG1vZHVsZQo+ICsJICB3aWxsIGJlIGNhbGxlZCBhbWJhLWNsY2QuCj4g Kwo+ICBjb25maWcgRkJfQUNPUk4KPiAgCWJvb2wgIkFjb3JuIFZJREMgc3VwcG9ydCIKPiAgCWRl cGVuZHMgb24gKEZCID0geSkgJiYgQVJNICYmIEFSQ0hfQUNPUk4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy92aWRlby9mYmRldi9NYWtlZmlsZSBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvTWFrZWZpbGUK PiBpbmRleCBjYWQ0ZmI2NDQ0MmEuLmEwNzA1Yjk5ZTY0MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9NYWtlZmls ZQo+IEBAIC03NSw2ICs3NSw3IEBAIG9iai0kKENPTkZJR19GQl9ISVQpICAgICAgICAgICAgICAr PSBoaXRmYi5vCj4gIG9iai0kKENPTkZJR19GQl9BVE1FTCkJCSAgKz0gYXRtZWxfbGNkZmIubwo+ ICBvYmotJChDT05GSUdfRkJfUFZSMikgICAgICAgICAgICAgKz0gcHZyMmZiLm8KPiAgb2JqLSQo Q09ORklHX0ZCX1ZPT0RPTzEpICAgICAgICAgICs9IHNzdGZiLm8KPiArb2JqLSQoQ09ORklHX0ZC X0FSTUNMQ0QpCSAgKz0gYW1iYS1jbGNkLm8KPiAgb2JqLSQoQ09ORklHX0ZCX0dPTERGSVNIKSAg ICAgICAgICs9IGdvbGRmaXNoZmIubwo+ICBvYmotJChDT05GSUdfRkJfNjgzMjgpICAgICAgICAg ICAgKz0gNjgzMjhmYi5vCj4gIG9iai0kKENPTkZJR19GQl9HQkUpICAgICAgICAgICAgICArPSBn YmVmYi5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAuLmI3NjgyZGU0MTJkOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC5jCj4gQEAgLTAsMCArMSw5ODYgQEAKPiArLyoK PiArICogIGxpbnV4L2RyaXZlcnMvdmlkZW8vYW1iYS1jbGNkLmMKPiArICoKPiArICogQ29weXJp Z2h0IChDKSAyMDAxIEFSTSBMaW1pdGVkLCBieSBEYXZpZCBBIFJ1c2xpbmcKPiArICogVXBkYXRl ZCB0byAyLjUsIERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUg aXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYwo+ICsgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4g ZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQo+ICsgKiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ ICsgKiAgQVJNIFByaW1lQ2VsbCBQTDExMCBDb2xvciBMQ0QgQ29udHJvbGxlcgo+ICsgKi8KPiAr I2luY2x1ZGUgPGxpbnV4L2FtYmEvYnVzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9hbWJhL2NsY2Qu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xr Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZG1hLW1h cHBpbmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbml0 Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2xpc3Qu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21tLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K PiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2dy YXBoLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zdHJp bmcuaD4KPiArI2luY2x1ZGUgPHZpZGVvL2Rpc3BsYXlfdGltaW5nLmg+Cj4gKyNpbmNsdWRlIDx2 aWRlby9vZl9kaXNwbGF5X3RpbWluZy5oPgo+ICsjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+ Cj4gKwo+ICsjZGVmaW5lIHRvX2NsY2QoaW5mbykJY29udGFpbmVyX29mKGluZm8sIHN0cnVjdCBj bGNkX2ZiLCBmYikKPiArCj4gKy8qIFRoaXMgaXMgbGltaXRlZCB0byAxNiBjaGFyYWN0ZXJzIHdo ZW4gZGlzcGxheWVkIGJ5IFggc3RhcnR1cCAqLwo+ICtzdGF0aWMgY29uc3QgY2hhciAqY2xjZF9u YW1lID0gIkNMQ0QgRkIiOwo+ICsKPiArLyoKPiArICogVW5mb3J0dW5hdGVseSwgdGhlIGVuYWJs ZS9kaXNhYmxlIGZ1bmN0aW9ucyBtYXkgYmUgY2FsbGVkIGVpdGhlciBmcm9tCj4gKyAqIHByb2Nl c3Mgb3IgSVJRIGNvbnRleHQsIGFuZCB3ZSBfbmVlZF8gdG8gZGVsYXkuICBUaGlzIGlzIF9ub3Rf IGdvb2QuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgY2xjZGZiX3NsZWVwKHVuc2lnbmVk IGludCBtcykKPiArewo+ICsJaWYgKGluX2F0b21pYygpKSB7Cj4gKwkJbWRlbGF5KG1zKTsKPiAr CX0gZWxzZSB7Cj4gKwkJbXNsZWVwKG1zKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGlubGlu ZSB2b2lkIGNsY2RmYl9zZXRfc3RhcnQoc3RydWN0IGNsY2RfZmIgKmZiKQo+ICt7Cj4gKwl1bnNp Z25lZCBsb25nIHVzdGFydCA9IGZiLT5mYi5maXguc21lbV9zdGFydDsKPiArCXVuc2lnbmVkIGxv bmcgbHN0YXJ0Owo+ICsKPiArCXVzdGFydCArPSBmYi0+ZmIudmFyLnlvZmZzZXQgKiBmYi0+ZmIu Zml4LmxpbmVfbGVuZ3RoOwo+ICsJbHN0YXJ0ID0gdXN0YXJ0ICsgZmItPmZiLnZhci55cmVzICog ZmItPmZiLmZpeC5saW5lX2xlbmd0aCAvIDI7Cj4gKwo+ICsJd3JpdGVsKHVzdGFydCwgZmItPnJl Z3MgKyBDTENEX1VCQVMpOwo+ICsJd3JpdGVsKGxzdGFydCwgZmItPnJlZ3MgKyBDTENEX0xCQVMp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjbGNkZmJfZGlzYWJsZShzdHJ1Y3QgY2xjZF9mYiAq ZmIpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKwo+ICsJaWYgKGZiLT5ib2FyZC0+ZGlzYWJsZSkKPiAr CQlmYi0+Ym9hcmQtPmRpc2FibGUoZmIpOwo+ICsKPiArCWlmIChmYi0+cGFuZWwtPmJhY2tsaWdo dCkgewo+ICsJCWZiLT5wYW5lbC0+YmFja2xpZ2h0LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BP V0VSRE9XTjsKPiArCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhmYi0+cGFuZWwtPmJhY2tsaWdo dCk7Cj4gKwl9Cj4gKwo+ICsJdmFsID0gcmVhZGwoZmItPnJlZ3MgKyBmYi0+b2ZmX2NudGwpOwo+ ICsJaWYgKHZhbCAmIENOVExfTENEUFdSKSB7Cj4gKwkJdmFsICY9IH5DTlRMX0xDRFBXUjsKPiAr CQl3cml0ZWwodmFsLCBmYi0+cmVncyArIGZiLT5vZmZfY250bCk7Cj4gKwo+ICsJCWNsY2RmYl9z bGVlcCgyMCk7Cj4gKwl9Cj4gKwlpZiAodmFsICYgQ05UTF9MQ0RFTikgewo+ICsJCXZhbCAmPSB+ Q05UTF9MQ0RFTjsKPiArCQl3cml0ZWwodmFsLCBmYi0+cmVncyArIGZiLT5vZmZfY250bCk7Cj4g Kwl9Cj4gKwo+ICsJLyoKPiArCSAqIERpc2FibGUgQ0xDRCBjbG9jayBzb3VyY2UuCj4gKwkgKi8K PiArCWlmIChmYi0+Y2xrX2VuYWJsZWQpIHsKPiArCQlmYi0+Y2xrX2VuYWJsZWQgPSBmYWxzZTsK PiArCQljbGtfZGlzYWJsZShmYi0+Y2xrKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQg Y2xjZGZiX2VuYWJsZShzdHJ1Y3QgY2xjZF9mYiAqZmIsIHUzMiBjbnRsKQo+ICt7Cj4gKwkvKgo+ ICsJICogRW5hYmxlIHRoZSBDTENEIGNsb2NrIHNvdXJjZS4KPiArCSAqLwo+ICsJaWYgKCFmYi0+ Y2xrX2VuYWJsZWQpIHsKPiArCQlmYi0+Y2xrX2VuYWJsZWQgPSB0cnVlOwo+ICsJCWNsa19lbmFi bGUoZmItPmNsayk7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEJyaW5nIHVwIGJ5IGZpcnN0IGVu YWJsaW5nLi4KPiArCSAqLwo+ICsJY250bCB8PSBDTlRMX0xDREVOOwo+ICsJd3JpdGVsKGNudGws IGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsKPiArCj4gKwljbGNkZmJfc2xlZXAoMjApOwo+ICsK PiArCS8qCj4gKwkgKiBhbmQgbm93IGFwcGx5IHBvd2VyLgo+ICsJICovCj4gKwljbnRsIHw9IENO VExfTENEUFdSOwo+ICsJd3JpdGVsKGNudGwsIGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsKPiAr Cj4gKwkvKgo+ICsJICogVHVybiBvbiBiYWNrbGlnaHQKPiArCSAqLwo+ICsJaWYgKGZiLT5wYW5l bC0+YmFja2xpZ2h0KSB7Cj4gKwkJZmItPnBhbmVsLT5iYWNrbGlnaHQtPnByb3BzLnBvd2VyID0g RkJfQkxBTktfVU5CTEFOSzsKPiArCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhmYi0+cGFuZWwt PmJhY2tsaWdodCk7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIGZpbmFsbHksIGVuYWJsZSB0aGUg aW50ZXJmYWNlLgo+ICsJICovCj4gKwlpZiAoZmItPmJvYXJkLT5lbmFibGUpCj4gKwkJZmItPmJv YXJkLT5lbmFibGUoZmIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2NsY2RmYl9zZXRfYml0 ZmllbGRzKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIp Cj4gK3sKPiArCXUzMiBjYXBzOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKGZiLT5wYW5l bC0+Y2FwcyAmJiBmYi0+Ym9hcmQtPmNhcHMpCj4gKwkJY2FwcyA9IGZiLT5wYW5lbC0+Y2FwcyAm IGZiLT5ib2FyZC0+Y2FwczsKPiArCWVsc2Ugewo+ICsJCS8qIE9sZCB3YXkgb2Ygc3BlY2lmeWlu ZyB3aGF0IGNhbiBiZSB1c2VkICovCj4gKwkJY2FwcyA9IGZiLT5wYW5lbC0+Y250bCAmIENOVExf QkdSID8KPiArCQkJQ0xDRF9DQVBfQkdSIDogQ0xDRF9DQVBfUkdCOwo+ICsJCS8qIEJ1dCBtYXNr IG91dCA0NDQgbW9kZXMgYXMgdGhleSB3ZXJlbid0IHN1cHBvcnRlZCAqLwo+ICsJCWNhcHMgJj0g fkNMQ0RfQ0FQXzQ0NDsKPiArCX0KPiArCj4gKwkvKiBPbmx5IFRGVCBwYW5lbHMgY2FuIGRvIFJH Qjg4OC9CR1I4ODggKi8KPiArCWlmICghKGZiLT5wYW5lbC0+Y250bCAmIENOVExfTENEVEZUKSkK PiArCQljYXBzICY9IH5DTENEX0NBUF84ODg7Cj4gKwo+ICsJbWVtc2V0KCZ2YXItPnRyYW5zcCwg MCwgc2l6ZW9mKHZhci0+dHJhbnNwKSk7Cj4gKwo+ICsJdmFyLT5yZWQubXNiX3JpZ2h0ID0gMDsK PiArCXZhci0+Z3JlZW4ubXNiX3JpZ2h0ID0gMDsKPiArCXZhci0+Ymx1ZS5tc2JfcmlnaHQgPSAw Owo+ICsKPiArCXN3aXRjaCAodmFyLT5iaXRzX3Blcl9waXhlbCkgewo+ICsJY2FzZSAxOgo+ICsJ Y2FzZSAyOgo+ICsJY2FzZSA0Ogo+ICsJY2FzZSA4Ogo+ICsJCS8qIElmIHdlIGNhbid0IGRvIDU1 NTEsIHJlamVjdCAqLwo+ICsJCWNhcHMgJj0gQ0xDRF9DQVBfNTU1MTsKPiArCQlpZiAoIWNhcHMp IHsKPiArCQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQl2YXIt PnJlZC5sZW5ndGgJCT0gdmFyLT5iaXRzX3Blcl9waXhlbDsKPiArCQl2YXItPnJlZC5vZmZzZXQJ CT0gMDsKPiArCQl2YXItPmdyZWVuLmxlbmd0aAk9IHZhci0+Yml0c19wZXJfcGl4ZWw7Cj4gKwkJ dmFyLT5ncmVlbi5vZmZzZXQJPSAwOwo+ICsJCXZhci0+Ymx1ZS5sZW5ndGgJPSB2YXItPmJpdHNf cGVyX3BpeGVsOwo+ICsJCXZhci0+Ymx1ZS5vZmZzZXQJPSAwOwo+ICsJCWJyZWFrOwo+ICsKPiAr CWNhc2UgMTY6Cj4gKwkJLyogSWYgd2UgY2FuJ3QgZG8gNDQ0LCA1NTUxIG9yIDU2NSwgcmVqZWN0 ICovCj4gKwkJaWYgKCEoY2FwcyAmIChDTENEX0NBUF80NDQgfCBDTENEX0NBUF81NTUxIHwgQ0xD RF9DQVBfNTY1KSkpIHsKPiArCQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ ICsKPiArCQkvKgo+ICsJCSAqIEdyZWVuIGxlbmd0aCBjYW4gYmUgNCwgNSBvciA2IGRlcGVuZGlu ZyB3aGV0aGVyCj4gKwkJICogd2UncmUgb3BlcmF0aW5nIGluIDQ0NCwgNTU1MSBvciA1NjUgbW9k ZS4KPiArCQkgKi8KPiArCQlpZiAodmFyLT5ncmVlbi5sZW5ndGggPT0gNCAmJiBjYXBzICYgQ0xD RF9DQVBfNDQ0KQo+ICsJCQljYXBzICY9IENMQ0RfQ0FQXzQ0NDsKPiArCQlpZiAodmFyLT5ncmVl bi5sZW5ndGggPT0gNSAmJiBjYXBzICYgQ0xDRF9DQVBfNTU1MSkKPiArCQkJY2FwcyAmPSBDTENE X0NBUF81NTUxOwo+ICsJCWVsc2UgaWYgKHZhci0+Z3JlZW4ubGVuZ3RoID09IDYgJiYgY2FwcyAm IENMQ0RfQ0FQXzU2NSkKPiArCQkJY2FwcyAmPSBDTENEX0NBUF81NjU7Cj4gKwkJZWxzZSB7Cj4g KwkJCS8qCj4gKwkJCSAqIFBMMTEwIG9mZmljaWFsbHkgb25seSBzdXBwb3J0cyBSR0I1NTUsCj4g KwkJCSAqIGJ1dCBtYXkgYmUgd2lyZWQgdXAgdG8gYWxsb3cgUkdCNTY1Lgo+ICsJCQkgKi8KPiAr CQkJaWYgKGNhcHMgJiBDTENEX0NBUF81NjUpIHsKPiArCQkJCXZhci0+Z3JlZW4ubGVuZ3RoID0g NjsKPiArCQkJCWNhcHMgJj0gQ0xDRF9DQVBfNTY1Owo+ICsJCQl9IGVsc2UgaWYgKGNhcHMgJiBD TENEX0NBUF81NTUxKSB7Cj4gKwkJCQl2YXItPmdyZWVuLmxlbmd0aCA9IDU7Cj4gKwkJCQljYXBz ICY9IENMQ0RfQ0FQXzU1NTE7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQl2YXItPmdyZWVuLmxlbmd0 aCA9IDQ7Cj4gKwkJCQljYXBzICY9IENMQ0RfQ0FQXzQ0NDsKPiArCQkJfQo+ICsJCX0KPiArCj4g KwkJaWYgKHZhci0+Z3JlZW4ubGVuZ3RoID49IDUpIHsKPiArCQkJdmFyLT5yZWQubGVuZ3RoID0g NTsKPiArCQkJdmFyLT5ibHVlLmxlbmd0aCA9IDU7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdmFyLT5y ZWQubGVuZ3RoID0gNDsKPiArCQkJdmFyLT5ibHVlLmxlbmd0aCA9IDQ7Cj4gKwkJfQo+ICsJCWJy ZWFrOwo+ICsJY2FzZSAzMjoKPiArCQkvKiBJZiB3ZSBjYW4ndCBkbyA4ODgsIHJlamVjdCAqLwo+ ICsJCWNhcHMgJj0gQ0xDRF9DQVBfODg4Owo+ICsJCWlmICghY2Fwcykgewo+ICsJCQlyZXQgPSAt RUlOVkFMOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCXZhci0+cmVkLmxlbmd0aCA9IDg7 Cj4gKwkJdmFyLT5ncmVlbi5sZW5ndGggPSA4Owo+ICsJCXZhci0+Ymx1ZS5sZW5ndGggPSA4Owo+ ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXQgPSAtRUlOVkFMOwo+ICsJCWJyZWFrOwo+ ICsJfQo+ICsKPiArCS8qCj4gKwkgKiA+PSAxNmJwcCBkaXNwbGF5cyBoYXZlIHNlcGFyYXRlIGNv bG91ciBjb21wb25lbnQgYml0ZmllbGRzCj4gKwkgKiBlbmNvZGVkIGluIHRoZSBwaXhlbCBkYXRh LiAgQ2FsY3VsYXRlIHRoZWlyIHBvc2l0aW9uIGZyb20KPiArCSAqIHRoZSBiaXRmaWVsZCBsZW5n dGggZGVmaW5lZCBhYm92ZS4KPiArCSAqLwo+ICsJaWYgKHJldCA9PSAwICYmIHZhci0+Yml0c19w ZXJfcGl4ZWwgPj0gMTYpIHsKPiArCQlib29sIGJnciwgcmdiOwo+ICsKPiArCQliZ3IgPSBjYXBz ICYgQ0xDRF9DQVBfQkdSICYmIHZhci0+Ymx1ZS5vZmZzZXQgPT0gMDsKPiArCQlyZ2IgPSBjYXBz ICYgQ0xDRF9DQVBfUkdCICYmIHZhci0+cmVkLm9mZnNldCA9PSAwOwo+ICsKPiArCQlpZiAoIWJn ciAmJiAhcmdiKQo+ICsJCQkvKgo+ICsJCQkgKiBUaGUgcmVxdWVzdGVkIGZvcm1hdCB3YXMgbm90 IHBvc3NpYmxlLCB0cnkganVzdAo+ICsJCQkgKiBvdXIgY2FwYWJpbGl0aWVzLiAgT25lIG9mIEJH UiBvciBSR0IgbXVzdCBiZQo+ICsJCQkgKiBzdXBwb3J0ZWQuCj4gKwkJCSAqLwo+ICsJCQliZ3Ig PSBjYXBzICYgQ0xDRF9DQVBfQkdSOwo+ICsKPiArCQlpZiAoYmdyKSB7Cj4gKwkJCXZhci0+Ymx1 ZS5vZmZzZXQgPSAwOwo+ICsJCQl2YXItPmdyZWVuLm9mZnNldCA9IHZhci0+Ymx1ZS5vZmZzZXQg KyB2YXItPmJsdWUubGVuZ3RoOwo+ICsJCQl2YXItPnJlZC5vZmZzZXQgPSB2YXItPmdyZWVuLm9m ZnNldCArIHZhci0+Z3JlZW4ubGVuZ3RoOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXZhci0+cmVkLm9m ZnNldCA9IDA7Cj4gKwkJCXZhci0+Z3JlZW4ub2Zmc2V0ID0gdmFyLT5yZWQub2Zmc2V0ICsgdmFy LT5yZWQubGVuZ3RoOwo+ICsJCQl2YXItPmJsdWUub2Zmc2V0ID0gdmFyLT5ncmVlbi5vZmZzZXQg KyB2YXItPmdyZWVuLmxlbmd0aDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBjbGNkZmJfY2hlY2tfdmFyKHN0cnVjdCBmYl92YXJfc2NyZWVu aW5mbyAqdmFyLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiArewo+ICsJc3RydWN0IGNsY2RfZmIg KmZiID0gdG9fY2xjZChpbmZvKTsKPiArCWludCByZXQgPSAtRUlOVkFMOwo+ICsKPiArCWlmIChm Yi0+Ym9hcmQtPmNoZWNrKQo+ICsJCXJldCA9IGZiLT5ib2FyZC0+Y2hlY2soZmIsIHZhcik7Cj4g Kwo+ICsJaWYgKHJldCA9PSAwICYmCj4gKwkgICAgdmFyLT54cmVzX3ZpcnR1YWwgKiB2YXItPmJp dHNfcGVyX3BpeGVsIC8gOCAqCj4gKwkgICAgdmFyLT55cmVzX3ZpcnR1YWwgPiBmYi0+ZmIuZml4 LnNtZW1fbGVuKQo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwo+ICsJaWYgKHJldCA9PSAwKQo+ICsJ CXJldCA9IGNsY2RmYl9zZXRfYml0ZmllbGRzKGZiLCB2YXIpOwo+ICsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xjZGZiX3NldF9wYXIoc3RydWN0IGZiX2luZm8gKmlu Zm8pCj4gK3sKPiArCXN0cnVjdCBjbGNkX2ZiICpmYiA9IHRvX2NsY2QoaW5mbyk7Cj4gKwlzdHJ1 Y3QgY2xjZF9yZWdzIHJlZ3M7Cj4gKwo+ICsJZmItPmZiLmZpeC5saW5lX2xlbmd0aCA9IGZiLT5m Yi52YXIueHJlc192aXJ0dWFsICoKPiArCQkJCSBmYi0+ZmIudmFyLmJpdHNfcGVyX3BpeGVsIC8g ODsKPiArCj4gKwlpZiAoZmItPmZiLnZhci5iaXRzX3Blcl9waXhlbCA8PSA4KQo+ICsJCWZiLT5m Yi5maXgudmlzdWFsID0gRkJfVklTVUFMX1BTRVVET0NPTE9SOwo+ICsJZWxzZQo+ICsJCWZiLT5m Yi5maXgudmlzdWFsID0gRkJfVklTVUFMX1RSVUVDT0xPUjsKPiArCj4gKwlmYi0+Ym9hcmQtPmRl Y29kZShmYiwgJnJlZ3MpOwo+ICsKPiArCWNsY2RmYl9kaXNhYmxlKGZiKTsKPiArCj4gKwl3cml0 ZWwocmVncy50aW0wLCBmYi0+cmVncyArIENMQ0RfVElNMCk7Cj4gKwl3cml0ZWwocmVncy50aW0x LCBmYi0+cmVncyArIENMQ0RfVElNMSk7Cj4gKwl3cml0ZWwocmVncy50aW0yLCBmYi0+cmVncyAr IENMQ0RfVElNMik7Cj4gKwl3cml0ZWwocmVncy50aW0zLCBmYi0+cmVncyArIENMQ0RfVElNMyk7 Cj4gKwo+ICsJY2xjZGZiX3NldF9zdGFydChmYik7Cj4gKwo+ICsJY2xrX3NldF9yYXRlKGZiLT5j bGssICgxMDAwMDAwMDAwIC8gcmVncy5waXhjbG9jaykgKiAxMDAwKTsKPiArCj4gKwlmYi0+Y2xj ZF9jbnRsID0gcmVncy5jbnRsOwo+ICsKPiArCWNsY2RmYl9lbmFibGUoZmIsIHJlZ3MuY250bCk7 Cj4gKwo+ICsjaWZkZWYgREVCVUcKPiArCXByaW50ayhLRVJOX0lORk8KPiArCSAgICAgICAiQ0xD RDogUmVnaXN0ZXJzIHNldCB0b1xuIgo+ICsJICAgICAgICIgICUwOHggJTA4eCAlMDh4ICUwOHhc biIKPiArCSAgICAgICAiICAlMDh4ICUwOHggJTA4eCAlMDh4XG4iLAo+ICsJCXJlYWRsKGZiLT5y ZWdzICsgQ0xDRF9USU0wKSwgcmVhZGwoZmItPnJlZ3MgKyBDTENEX1RJTTEpLAo+ICsJCXJlYWRs KGZiLT5yZWdzICsgQ0xDRF9USU0yKSwgcmVhZGwoZmItPnJlZ3MgKyBDTENEX1RJTTMpLAo+ICsJ CXJlYWRsKGZiLT5yZWdzICsgQ0xDRF9VQkFTKSwgcmVhZGwoZmItPnJlZ3MgKyBDTENEX0xCQVMp LAo+ICsJCXJlYWRsKGZiLT5yZWdzICsgZmItPm9mZl9pZW5iKSwgcmVhZGwoZmItPnJlZ3MgKyBm Yi0+b2ZmX2NudGwpKTsKPiArI2VuZGlmCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbmxpbmUgdTMyIGNvbnZlcnRfYml0ZmllbGQoaW50IHZhbCwgc3RydWN0IGZiX2JpdGZp ZWxkICpiZikKPiArewo+ICsJdW5zaWduZWQgaW50IG1hc2sgPSAoMSA8PCBiZi0+bGVuZ3RoKSAt IDE7Cj4gKwo+ICsJcmV0dXJuICh2YWwgPj4gKDE2IC0gYmYtPmxlbmd0aCkgJiBtYXNrKSA8PCBi Zi0+b2Zmc2V0Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiAgU2V0IGEgc2luZ2xlIGNvbG9yIHJlZ2lz dGVyLiBUaGUgdmFsdWVzIHN1cHBsaWVkIGhhdmUgYSAxNiBiaXQKPiArICogIG1hZ25pdHVkZS4g IFJldHVybiAhPSAwIGZvciBpbnZhbGlkIHJlZ25vLgo+ICsgKi8KPiArc3RhdGljIGludAo+ICtj bGNkZmJfc2V0Y29scmVnKHVuc2lnbmVkIGludCByZWdubywgdW5zaWduZWQgaW50IHJlZCwgdW5z aWduZWQgaW50IGdyZWVuLAo+ICsJCSB1bnNpZ25lZCBpbnQgYmx1ZSwgdW5zaWduZWQgaW50IHRy YW5zcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gK3sKPiArCXN0cnVjdCBjbGNkX2ZiICpmYiA9 IHRvX2NsY2QoaW5mbyk7Cj4gKwo+ICsJaWYgKHJlZ25vIDwgMTYpCj4gKwkJZmItPmNtYXBbcmVn bm9dID0gY29udmVydF9iaXRmaWVsZCh0cmFuc3AsICZmYi0+ZmIudmFyLnRyYW5zcCkgfAo+ICsJ CQkJICBjb252ZXJ0X2JpdGZpZWxkKGJsdWUsICZmYi0+ZmIudmFyLmJsdWUpIHwKPiArCQkJCSAg Y29udmVydF9iaXRmaWVsZChncmVlbiwgJmZiLT5mYi52YXIuZ3JlZW4pIHwKPiArCQkJCSAgY29u dmVydF9iaXRmaWVsZChyZWQsICZmYi0+ZmIudmFyLnJlZCk7Cj4gKwo+ICsJaWYgKGZiLT5mYi5m aXgudmlzdWFsID09IEZCX1ZJU1VBTF9QU0VVRE9DT0xPUiAmJiByZWdubyA8IDI1Nikgewo+ICsJ CWludCBod19yZWcgPSBDTENEX1BBTEVUVEUgKyAoKHJlZ25vICogMikgJiB+Myk7Cj4gKwkJdTMy IHZhbCwgbWFzaywgbmV3dmFsOwo+ICsKPiArCQluZXd2YWwgID0gKHJlZCA+PiAxMSkgICYgMHgw MDFmOwo+ICsJCW5ld3ZhbCB8PSAoZ3JlZW4gPj4gNikgJiAweDAzZTA7Cj4gKwkJbmV3dmFsIHw9 IChibHVlID4+IDEpICAmIDB4N2MwMDsKPiArCj4gKwkJLyoKPiArCQkgKiAzLjIuMTE6IGlmIHdl J3JlIGNvbmZpZ3VyZWQgZm9yIGJpZyBlbmRpYW4KPiArCQkgKiBieXRlIG9yZGVyLCB0aGUgcGFs ZXR0ZSBlbnRyaWVzIGFyZSBzd2FwcGVkLgo+ICsJCSAqLwo+ICsJCWlmIChmYi0+Y2xjZF9jbnRs ICYgQ05UTF9CRUJPKQo+ICsJCQlyZWdubyBePSAxOwo+ICsKPiArCQlpZiAocmVnbm8gJiAxKSB7 Cj4gKwkJCW5ld3ZhbCA8PD0gMTY7Cj4gKwkJCW1hc2sgPSAweDAwMDBmZmZmOwo+ICsJCX0gZWxz ZSB7Cj4gKwkJCW1hc2sgPSAweGZmZmYwMDAwOwo+ICsJCX0KPiArCj4gKwkJdmFsID0gcmVhZGwo ZmItPnJlZ3MgKyBod19yZWcpICYgbWFzazsKPiArCQl3cml0ZWwodmFsIHwgbmV3dmFsLCBmYi0+ cmVncyArIGh3X3JlZyk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJlZ25vID4gMjU1Owo+ICt9Cj4g Kwo+ICsvKgo+ICsgKiAgQmxhbmsgdGhlIHNjcmVlbiBpZiBibGFua19tb2RlICE9IDAsIGVsc2Ug dW5ibGFuay4gSWYgYmxhbmsgPT0gTlVMTAo+ICsgKiAgdGhlbiB0aGUgY2FsbGVyIGJsYW5rcyBi eSBzZXR0aW5nIHRoZSBDTFVUIChDb2xvciBMb29rIFVwIFRhYmxlKSB0byBhbGwKPiArICogIGJs YWNrLiBSZXR1cm4gMCBpZiBibGFua2luZyBzdWNjZWVkZWQsICE9IDAgaWYgdW4tL2JsYW5raW5n IGZhaWxlZCBkdWUKPiArICogIHRvIGUuZy4gYSB2aWRlbyBtb2RlIHdoaWNoIGRvZXNuJ3Qgc3Vw cG9ydCBpdC4gSW1wbGVtZW50cyBWRVNBIHN1c3BlbmQKPiArICogIGFuZCBwb3dlcmRvd24gbW9k ZXMgb24gaGFyZHdhcmUgdGhhdCBzdXBwb3J0cyBkaXNhYmxpbmcgaHN5bmMvdnN5bmM6Cj4gKyAq ICAgIGJsYW5rX21vZGUgPT0gMjogc3VzcGVuZCB2c3luYwo+ICsgKiAgICBibGFua19tb2RlID09 IDM6IHN1c3BlbmQgaHN5bmMKPiArICogICAgYmxhbmtfbW9kZSA9PSA0OiBwb3dlcmRvd24KPiAr ICovCj4gK3N0YXRpYyBpbnQgY2xjZGZiX2JsYW5rKGludCBibGFua19tb2RlLCBzdHJ1Y3QgZmJf aW5mbyAqaW5mbykKPiArewo+ICsJc3RydWN0IGNsY2RfZmIgKmZiID0gdG9fY2xjZChpbmZvKTsK PiArCj4gKwlpZiAoYmxhbmtfbW9kZSAhPSAwKSB7Cj4gKwkJY2xjZGZiX2Rpc2FibGUoZmIpOwo+ ICsJfSBlbHNlIHsKPiArCQljbGNkZmJfZW5hYmxlKGZiLCBmYi0+Y2xjZF9jbnRsKTsKPiArCX0K PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNsY2RmYl9tbWFwKHN0cnVjdCBm Yl9pbmZvICppbmZvLAo+ICsJCSAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiAr ewo+ICsJc3RydWN0IGNsY2RfZmIgKmZiID0gdG9fY2xjZChpbmZvKTsKPiArCXVuc2lnbmVkIGxv bmcgbGVuLCBvZmYgPSB2bWEtPnZtX3Bnb2ZmIDw8IFBBR0VfU0hJRlQ7Cj4gKwlpbnQgcmV0ID0g LUVJTlZBTDsKPiArCj4gKwlsZW4gPSBpbmZvLT5maXguc21lbV9sZW47Cj4gKwo+ICsJaWYgKG9m ZiA8PSBsZW4gJiYgdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0IDw9IGxlbiAtIG9mZiAmJgo+ ICsJICAgIGZiLT5ib2FyZC0+bW1hcCkKPiArCQlyZXQgPSBmYi0+Ym9hcmQtPm1tYXAoZmIsIHZt YSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBm Yl9vcHMgY2xjZGZiX29wcyA9IHsKPiArCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiArCS5mYl9j aGVja192YXIJPSBjbGNkZmJfY2hlY2tfdmFyLAo+ICsJLmZiX3NldF9wYXIJPSBjbGNkZmJfc2V0 X3BhciwKPiArCS5mYl9zZXRjb2xyZWcJPSBjbGNkZmJfc2V0Y29scmVnLAo+ICsJLmZiX2JsYW5r CT0gY2xjZGZiX2JsYW5rLAo+ICsJLmZiX2ZpbGxyZWN0CT0gY2ZiX2ZpbGxyZWN0LAo+ICsJLmZi X2NvcHlhcmVhCT0gY2ZiX2NvcHlhcmVhLAo+ICsJLmZiX2ltYWdlYmxpdAk9IGNmYl9pbWFnZWJs aXQsCj4gKwkuZmJfbW1hcAk9IGNsY2RmYl9tbWFwLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBj bGNkZmJfcmVnaXN0ZXIoc3RydWN0IGNsY2RfZmIgKmZiKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCS8qCj4gKwkgKiBBUk0gUEwxMTEgYWx3YXlzIGhhcyBJRU5CIGF0IDB4MWM7IGl0J3Mgb25s eSBQTDExMAo+ICsJICogd2hpY2ggaXMgcmV2ZXJzZWQgb24gc29tZSBwbGF0Zm9ybXMuCj4gKwkg Ki8KPiArCWlmIChhbWJhX21hbmYoZmItPmRldikgPT0gMHg0MSAmJiBhbWJhX3BhcnQoZmItPmRl dikgPT0gMHgxMTEpIHsKPiArCQlmYi0+b2ZmX2llbmIgPSBDTENEX1BMMTExX0lFTkI7Cj4gKwkJ ZmItPm9mZl9jbnRsID0gQ0xDRF9QTDExMV9DTlRMOwo+ICsJfSBlbHNlIHsKPiArCQlmYi0+b2Zm X2llbmIgPSBDTENEX1BMMTEwX0lFTkI7Cj4gKwkJZmItPm9mZl9jbnRsID0gQ0xDRF9QTDExMF9D TlRMOwo+ICsJfQo+ICsKPiArCWZiLT5jbGsgPSBjbGtfZ2V0KCZmYi0+ZGV2LT5kZXYsIE5VTEwp Owo+ICsJaWYgKElTX0VSUihmYi0+Y2xrKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoZmItPmNsayk7 Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmUoZmItPmNsayk7 Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZnJlZV9jbGs7Cj4gKwo+ICsJZmItPmZiLmRldmljZQkJ PSAmZmItPmRldi0+ZGV2Owo+ICsKPiArCWZiLT5mYi5maXgubW1pb19zdGFydAk9IGZiLT5kZXYt PnJlcy5zdGFydDsKPiArCWZiLT5mYi5maXgubW1pb19sZW4JPSByZXNvdXJjZV9zaXplKCZmYi0+ ZGV2LT5yZXMpOwo+ICsKPiArCWZiLT5yZWdzID0gaW9yZW1hcChmYi0+ZmIuZml4Lm1taW9fc3Rh cnQsIGZiLT5mYi5maXgubW1pb19sZW4pOwo+ICsJaWYgKCFmYi0+cmVncykgewo+ICsJCXByaW50 ayhLRVJOX0VSUiAiQ0xDRDogdW5hYmxlIHRvIHJlbWFwIHJlZ2lzdGVyc1xuIik7Cj4gKwkJcmV0 ID0gLUVOT01FTTsKPiArCQlnb3RvIGNsa191bnByZXA7Cj4gKwl9Cj4gKwo+ICsJZmItPmZiLmZi b3BzCQk9ICZjbGNkZmJfb3BzOwo+ICsJZmItPmZiLmZsYWdzCQk9IEZCSU5GT19GTEFHX0RFRkFV TFQ7Cj4gKwlmYi0+ZmIucHNldWRvX3BhbGV0dGUJPSBmYi0+Y21hcDsKPiArCj4gKwlzdHJuY3B5 KGZiLT5mYi5maXguaWQsIGNsY2RfbmFtZSwgc2l6ZW9mKGZiLT5mYi5maXguaWQpKTsKPiArCWZi LT5mYi5maXgudHlwZQkJPSBGQl9UWVBFX1BBQ0tFRF9QSVhFTFM7Cj4gKwlmYi0+ZmIuZml4LnR5 cGVfYXV4CT0gMDsKPiArCWZiLT5mYi5maXgueHBhbnN0ZXAJPSAwOwo+ICsJZmItPmZiLmZpeC55 cGFuc3RlcAk9IDA7Cj4gKwlmYi0+ZmIuZml4Lnl3cmFwc3RlcAk9IDA7Cj4gKwlmYi0+ZmIuZml4 LmFjY2VsCT0gRkJfQUNDRUxfTk9ORTsKPiArCj4gKwlmYi0+ZmIudmFyLnhyZXMJCT0gZmItPnBh bmVsLT5tb2RlLnhyZXM7Cj4gKwlmYi0+ZmIudmFyLnlyZXMJCT0gZmItPnBhbmVsLT5tb2RlLnly ZXM7Cj4gKwlmYi0+ZmIudmFyLnhyZXNfdmlydHVhbAk9IGZiLT5wYW5lbC0+bW9kZS54cmVzOwo+ ICsJZmItPmZiLnZhci55cmVzX3ZpcnR1YWwJPSBmYi0+cGFuZWwtPm1vZGUueXJlczsKPiArCWZi LT5mYi52YXIuYml0c19wZXJfcGl4ZWwgPSBmYi0+cGFuZWwtPmJwcDsKPiArCWZiLT5mYi52YXIu Z3JheXNjYWxlCT0gZmItPnBhbmVsLT5ncmF5c2NhbGU7Cj4gKwlmYi0+ZmIudmFyLnBpeGNsb2Nr CT0gZmItPnBhbmVsLT5tb2RlLnBpeGNsb2NrOwo+ICsJZmItPmZiLnZhci5sZWZ0X21hcmdpbgk9 IGZiLT5wYW5lbC0+bW9kZS5sZWZ0X21hcmdpbjsKPiArCWZiLT5mYi52YXIucmlnaHRfbWFyZ2lu CT0gZmItPnBhbmVsLT5tb2RlLnJpZ2h0X21hcmdpbjsKPiArCWZiLT5mYi52YXIudXBwZXJfbWFy Z2luCT0gZmItPnBhbmVsLT5tb2RlLnVwcGVyX21hcmdpbjsKPiArCWZiLT5mYi52YXIubG93ZXJf bWFyZ2luCT0gZmItPnBhbmVsLT5tb2RlLmxvd2VyX21hcmdpbjsKPiArCWZiLT5mYi52YXIuaHN5 bmNfbGVuCT0gZmItPnBhbmVsLT5tb2RlLmhzeW5jX2xlbjsKPiArCWZiLT5mYi52YXIudnN5bmNf bGVuCT0gZmItPnBhbmVsLT5tb2RlLnZzeW5jX2xlbjsKPiArCWZiLT5mYi52YXIuc3luYwkJPSBm Yi0+cGFuZWwtPm1vZGUuc3luYzsKPiArCWZiLT5mYi52YXIudm1vZGUJPSBmYi0+cGFuZWwtPm1v ZGUudm1vZGU7Cj4gKwlmYi0+ZmIudmFyLmFjdGl2YXRlCT0gRkJfQUNUSVZBVEVfTk9XOwo+ICsJ ZmItPmZiLnZhci5ub25zdGQJPSAwOwo+ICsJZmItPmZiLnZhci5oZWlnaHQJPSBmYi0+cGFuZWwt PmhlaWdodDsKPiArCWZiLT5mYi52YXIud2lkdGgJPSBmYi0+cGFuZWwtPndpZHRoOwo+ICsJZmIt PmZiLnZhci5hY2NlbF9mbGFncwk9IDA7Cj4gKwo+ICsJZmItPmZiLm1vbnNwZWNzLmhmbWluCT0g MDsKPiArCWZiLT5mYi5tb25zcGVjcy5oZm1heCAgID0gMTAwMDAwOwo+ICsJZmItPmZiLm1vbnNw ZWNzLnZmbWluCT0gMDsKPiArCWZiLT5mYi5tb25zcGVjcy52Zm1heAk9IDQwMDsKPiArCWZiLT5m Yi5tb25zcGVjcy5kY2xrbWluID0gMTAwMDAwMDsKPiArCWZiLT5mYi5tb25zcGVjcy5kY2xrbWF4 CT0gMTAwMDAwMDAwOwo+ICsKPiArCS8qCj4gKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgYml0Zmll bGRzIGFyZSBzZXQgYXBwcm9wcmlhdGVseS4KPiArCSAqLwo+ICsJY2xjZGZiX3NldF9iaXRmaWVs ZHMoZmIsICZmYi0+ZmIudmFyKTsKPiArCj4gKwkvKgo+ICsJICogQWxsb2NhdGUgY29sb3VybWFw Lgo+ICsJICovCj4gKwlyZXQgPSBmYl9hbGxvY19jbWFwKCZmYi0+ZmIuY21hcCwgMjU2LCAwKTsK PiArCWlmIChyZXQpCj4gKwkJZ290byB1bm1hcDsKPiArCj4gKwkvKgo+ICsJICogRW5zdXJlIGlu dGVycnVwdHMgYXJlIGRpc2FibGVkLgo+ICsJICovCj4gKwl3cml0ZWwoMCwgZmItPnJlZ3MgKyBm Yi0+b2ZmX2llbmIpOwo+ICsKPiArCWZiX3NldF92YXIoJmZiLT5mYiwgJmZiLT5mYi52YXIpOwo+ ICsKPiArCWRldl9pbmZvKCZmYi0+ZGV2LT5kZXYsICIlcyBoYXJkd2FyZSwgJXMgZGlzcGxheVxu IiwKPiArCSAgICAgICAgIGZiLT5ib2FyZC0+bmFtZSwgZmItPnBhbmVsLT5tb2RlLm5hbWUpOwo+ ICsKPiArCXJldCA9IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCZmYi0+ZmIpOwo+ICsJaWYgKHJldCA9 PSAwKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXByaW50ayhLRVJOX0VSUiAiQ0xDRDogY2Fubm90 IHJlZ2lzdGVyIGZyYW1lYnVmZmVyICglZClcbiIsIHJldCk7Cj4gKwo+ICsJZmJfZGVhbGxvY19j bWFwKCZmYi0+ZmIuY21hcCk7Cj4gKyB1bm1hcDoKPiArCWlvdW5tYXAoZmItPnJlZ3MpOwo+ICsg Y2xrX3VucHJlcDoKPiArCWNsa191bnByZXBhcmUoZmItPmNsayk7Cj4gKyBmcmVlX2NsazoKPiAr CWNsa19wdXQoZmItPmNsayk7Cj4gKyBvdXQ6Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsj aWZkZWYgQ09ORklHX09GCj4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX2dldF9kcGlfcGFuZWxfbW9k ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCj4gKwkJc3RydWN0IGNsY2RfcGFuZWwgKmNsY2Rf cGFuZWwpCj4gK3sKPiArCWludCBlcnI7Cj4gKwlzdHJ1Y3QgZGlzcGxheV90aW1pbmcgdGltaW5n Owo+ICsJc3RydWN0IHZpZGVvbW9kZSB2aWRlbzsKPiArCj4gKwllcnIgPSBvZl9nZXRfZGlzcGxh eV90aW1pbmcobm9kZSwgInBhbmVsLXRpbWluZyIsICZ0aW1pbmcpOwo+ICsJaWYgKGVycikgewo+ ICsJCXByX2VycigiJXBPRjogcHJvYmxlbXMgcGFyc2luZyBwYW5lbC10aW1pbmcgKCVkKVxuIiwg bm9kZSwgZXJyKTsKPiArCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCXZpZGVvbW9kZV9mcm9t X3RpbWluZygmdGltaW5nLCAmdmlkZW8pOwo+ICsKPiArCWVyciA9IGZiX3ZpZGVvbW9kZV9mcm9t X3ZpZGVvbW9kZSgmdmlkZW8sICZjbGNkX3BhbmVsLT5tb2RlKTsKPiArCWlmIChlcnIpCj4gKwkJ cmV0dXJuIGVycjsKPiArCj4gKwkvKiBTZXQgdXAgc29tZSBpbnZlcnNpb24gZmxhZ3MgKi8KPiAr CWlmICh0aW1pbmcuZmxhZ3MgJiBESVNQTEFZX0ZMQUdTX1BJWERBVEFfTkVHRURHRSkKPiArCQlj bGNkX3BhbmVsLT50aW0yIHw9IFRJTTJfSVBDOwo+ICsJZWxzZSBpZiAoISh0aW1pbmcuZmxhZ3Mg JiBESVNQTEFZX0ZMQUdTX1BJWERBVEFfUE9TRURHRSkpCj4gKwkJLyoKPiArCQkgKiBUbyBwcmVz ZXJ2ZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIElQQyAoaW52ZXJ0ZWQKPiArCQkgKiBw aXhlbCBjbG9jaykgZmxhZyBuZWVkcyB0byBiZSBzZXQgb24gYW55IGRpc3BsYXkgdGhhdAo+ICsJ CSAqIGRvZXNuJ3QgZXhwbGljaXRseSBzcGVjaWZ5IHRoYXQgdGhlIHBpeGVsIGNsb2NrIGlzCj4g KwkJICogYWN0aXZlIG9uIHRoZSBuZWdhdGl2ZSBvciBwb3NpdGl2ZSBlZGdlLgo+ICsJCSAqLwo+ ICsJCWNsY2RfcGFuZWwtPnRpbTIgfD0gVElNMl9JUEM7Cj4gKwo+ICsJaWYgKHRpbWluZy5mbGFn cyAmIERJU1BMQVlfRkxBR1NfSFNZTkNfTE9XKQo+ICsJCWNsY2RfcGFuZWwtPnRpbTIgfD0gVElN Ml9JSFM7Cj4gKwo+ICsJaWYgKHRpbWluZy5mbGFncyAmIERJU1BMQVlfRkxBR1NfVlNZTkNfTE9X KQo+ICsJCWNsY2RfcGFuZWwtPnRpbTIgfD0gVElNMl9JVlM7Cj4gKwo+ICsJaWYgKHRpbWluZy5m bGFncyAmIERJU1BMQVlfRkxBR1NfREVfTE9XKQo+ICsJCWNsY2RfcGFuZWwtPnRpbTIgfD0gVElN Ml9JT0U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xjZGZiX3Nu cHJpbnRmX21vZGUoY2hhciAqYnVmLCBpbnQgc2l6ZSwgc3RydWN0IGZiX3ZpZGVvbW9kZSAqbW9k ZSkKPiArewo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiV1eCV1QCV1IiwgbW9kZS0+ eHJlcywgbW9kZS0+eXJlcywKPiArCQkJbW9kZS0+cmVmcmVzaCk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgY2xjZGZiX29mX2dldF9iYWNrbGlnaHQoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJ ICAgc3RydWN0IGNsY2RfcGFuZWwgKmNsY2RfcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBiYWNrbGln aHRfZGV2aWNlICpiYWNrbGlnaHQ7Cj4gKwo+ICsJLyogTG9vayB1cCB0aGUgb3B0aW9uYWwgYmFj a2xpZ2h0IGRldmljZSAqLwo+ICsJYmFja2xpZ2h0ID0gZGV2bV9vZl9maW5kX2JhY2tsaWdodChk ZXYpOwo+ICsJaWYgKElTX0VSUihiYWNrbGlnaHQpKQo+ICsJCXJldHVybiBQVFJfRVJSKGJhY2ts aWdodCk7Cj4gKwo+ICsJY2xjZF9wYW5lbC0+YmFja2xpZ2h0ID0gYmFja2xpZ2h0Owo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX2dldF9tb2RlKHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpwYW5lbCwKPiArCQkJICAgICAgc3RydWN0 IGNsY2RfcGFuZWwgKmNsY2RfcGFuZWwpCj4gK3sKPiArCWludCBlcnI7Cj4gKwlzdHJ1Y3QgZmJf dmlkZW9tb2RlICptb2RlOwo+ICsJY2hhciAqbmFtZTsKPiArCWludCBsZW47Cj4gKwo+ICsJLyog T25seSBkaXJlY3RseSBjb25uZWN0ZWQgRFBJIHBhbmVscyBzdXBwb3J0ZWQgZm9yIG5vdyAqLwo+ ICsJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKHBhbmVsLCAicGFuZWwtZHBpIikpCj4gKwkJ ZXJyID0gY2xjZGZiX29mX2dldF9kcGlfcGFuZWxfbW9kZShwYW5lbCwgY2xjZF9wYW5lbCk7Cj4g KwllbHNlCj4gKwkJZXJyID0gLUVOT0VOVDsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsK PiArCW1vZGUgPSAmY2xjZF9wYW5lbC0+bW9kZTsKPiArCj4gKwlsZW4gPSBjbGNkZmJfc25wcmlu dGZfbW9kZShOVUxMLCAwLCBtb2RlKTsKPiArCW5hbWUgPSBkZXZtX2t6YWxsb2MoZGV2LCBsZW4g KyAxLCBHRlBfS0VSTkVMKTsKPiArCWlmICghbmFtZSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwljbGNkZmJfc25wcmludGZfbW9kZShuYW1lLCBsZW4gKyAxLCBtb2RlKTsKPiArCW1vZGUt Pm5hbWUgPSBuYW1lOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNs Y2RmYl9vZl9pbml0X3RmdF9wYW5lbChzdHJ1Y3QgY2xjZF9mYiAqZmIsIHUzMiByMCwgdTMyIGcw LCB1MzIgYjApCj4gK3sKPiArCXN0YXRpYyBzdHJ1Y3Qgewo+ICsJCXVuc2lnbmVkIGludCBwYXJ0 Owo+ICsJCXUzMiByMCwgZzAsIGIwOwo+ICsJCXUzMiBjYXBzOwo+ICsJfSBwYW5lbHNbXSA9IHsK PiArCQl7IDB4MTEwLCAxLCAgNywgMTMsIENMQ0RfQ0FQXzU1NTEgfSwKPiArCQl7IDB4MTEwLCAw LCAgOCwgMTYsIENMQ0RfQ0FQXzg4OCB9LAo+ICsJCXsgMHgxMTAsIDE2LCA4LCAwLCAgQ0xDRF9D QVBfODg4IH0sCj4gKwkJeyAweDExMSwgNCwgMTQsIDIwLCBDTENEX0NBUF80NDQgfSwKPiArCQl7 IDB4MTExLCAzLCAxMSwgMTksIENMQ0RfQ0FQXzQ0NCB8IENMQ0RfQ0FQXzU1NTEgfSwKPiArCQl7 IDB4MTExLCAzLCAxMCwgMTksIENMQ0RfQ0FQXzQ0NCB8IENMQ0RfQ0FQXzU1NTEgfAo+ICsJCQkJ ICAgIENMQ0RfQ0FQXzU2NSB9LAo+ICsJCXsgMHgxMTEsIDAsICA4LCAxNiwgQ0xDRF9DQVBfNDQ0 IHwgQ0xDRF9DQVBfNTU1MSB8Cj4gKwkJCQkgICAgQ0xDRF9DQVBfNTY1IHwgQ0xDRF9DQVBfODg4 IH0sCj4gKwl9Owo+ICsJaW50IGk7Cj4gKwo+ICsJLyogQnlwYXNzIHBpeGVsIGNsb2NrIGRpdmlk ZXIgKi8KPiArCWZiLT5wYW5lbC0+dGltMiB8PSBUSU0yX0JDRDsKPiArCj4gKwkvKiBURlQgZGlz cGxheSwgdmVydC4gY29tcC4gaW50ZXJydXB0IGF0IHRoZSBzdGFydCBvZiB0aGUgYmFjayBwb3Jj aCAqLwo+ICsJZmItPnBhbmVsLT5jbnRsIHw9IENOVExfTENEVEZUIHwgQ05UTF9MQ0RWQ09NUCgx KTsKPiArCj4gKwlmYi0+cGFuZWwtPmNhcHMgPSAwOwo+ICsKPiArCS8qIE1hdGNoIHRoZSBzZXR1 cCB3aXRoIGtub3duIHZhcmlhbnRzICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShw YW5lbHMpICYmICFmYi0+cGFuZWwtPmNhcHM7IGkrKykgewo+ICsJCWlmIChhbWJhX3BhcnQoZmIt PmRldikgIT0gcGFuZWxzW2ldLnBhcnQpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmIChnMCAhPSBw YW5lbHNbaV0uZzApCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmIChyMCA9PSBwYW5lbHNbaV0ucjAg JiYgYjAgPT0gcGFuZWxzW2ldLmIwKQo+ICsJCQlmYi0+cGFuZWwtPmNhcHMgPSBwYW5lbHNbaV0u Y2FwczsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogSWYgd2UgYWN0dWFsbHkgcGh5c2ljYWxseSBj b25uZWN0ZWQgdGhlIFIgbGluZXMgdG8gQiBhbmQKPiArCSAqIHZpY2UgdmVyc2EKPiArCSAqLwo+ ICsJaWYgKHIwICE9IDAgJiYgYjAgPT0gMCkKPiArCQlmYi0+cGFuZWwtPmJncl9jb25uZWN0aW9u ID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gZmItPnBhbmVsLT5jYXBzID8gMCA6IC1FSU5WQUw7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX2luaXRfZGlzcGxheShzdHJ1Y3QgY2xjZF9m YiAqZmIpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9pbnQsICpwYW5lbDsKPiAr CWludCBlcnI7Cj4gKwl1bnNpZ25lZCBpbnQgYnBwOwo+ICsJdTMyIG1heF9iYW5kd2lkdGg7Cj4g Kwl1MzIgdGZ0X3IwYjBnMFszXTsKPiArCj4gKwlmYi0+cGFuZWwgPSBkZXZtX2t6YWxsb2MoJmZi LT5kZXYtPmRldiwgc2l6ZW9mKCpmYi0+cGFuZWwpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZmIt PnBhbmVsKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCS8qCj4gKwkgKiBGZXRjaCB0aGUg cGFuZWwgZW5kcG9pbnQuCj4gKwkgKi8KPiArCWVuZHBvaW50ID0gb2ZfZ3JhcGhfZ2V0X25leHRf ZW5kcG9pbnQoZmItPmRldi0+ZGV2Lm9mX25vZGUsIE5VTEwpOwo+ICsJaWYgKCFlbmRwb2ludCkK PiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlwYW5lbCA9IG9mX2dyYXBoX2dldF9yZW1vdGVf cG9ydF9wYXJlbnQoZW5kcG9pbnQpOwo+ICsJaWYgKCFwYW5lbCkKPiArCQlyZXR1cm4gLUVOT0RF VjsKPiArCj4gKwllcnIgPSBjbGNkZmJfb2ZfZ2V0X2JhY2tsaWdodCgmZmItPmRldi0+ZGV2LCBm Yi0+cGFuZWwpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWVyciA9IGNs Y2RmYl9vZl9nZXRfbW9kZSgmZmItPmRldi0+ZGV2LCBwYW5lbCwgZmItPnBhbmVsKTsKPiArCWlm IChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwllcnIgPSBvZl9wcm9wZXJ0eV9yZWFkX3Uz MihmYi0+ZGV2LT5kZXYub2Zfbm9kZSwgIm1heC1tZW1vcnktYmFuZHdpZHRoIiwKPiArCQkJJm1h eF9iYW5kd2lkdGgpOwo+ICsJaWYgKCFlcnIpIHsKPiArCQkvKgo+ICsJCSAqIG1heF9iYW5kd2lk dGggaXMgaW4gYnl0ZXMgcGVyIHNlY29uZCBhbmQgcGl4Y2xvY2sgaW4KPiArCQkgKiBwaWNvLXNl Y29uZHMsIHNvIHRoZSBtYXhpbXVtIGFsbG93ZWQgYml0cyBwZXIgcGl4ZWwgaXMKPiArCQkgKiAg IDggKiBtYXhfYmFuZHdpZHRoIC8gKFBJQ09TMktIWihwaXhjbG9jaykgKiAxMDAwKQo+ICsJCSAq IFJlYXJyYW5nZSB0aGlzIGNhbGN1bGF0aW9uIHRvIGF2b2lkIG92ZXJmbG93IGFuZCB0aGVuIGVu c3VyZQo+ICsJCSAqIHJlc3VsdCBpcyBhIHZhbGlkIGZvcm1hdC4KPiArCQkgKi8KPiArCQlicHAg PSBtYXhfYmFuZHdpZHRoIC8gKDEwMDAgLyA4KQo+ICsJCQkvIFBJQ09TMktIWihmYi0+cGFuZWwt Pm1vZGUucGl4Y2xvY2spOwo+ICsJCWJwcCA9IHJvdW5kZG93bl9wb3dfb2ZfdHdvKGJwcCk7Cj4g KwkJaWYgKGJwcCA+IDMyKQo+ICsJCQlicHAgPSAzMjsKPiArCX0gZWxzZQo+ICsJCWJwcCA9IDMy Owo+ICsJZmItPnBhbmVsLT5icHAgPSBicHA7Cj4gKwo+ICsjaWZkZWYgQ09ORklHX0NQVV9CSUdf RU5ESUFOCj4gKwlmYi0+cGFuZWwtPmNudGwgfD0gQ05UTF9CRUJPOwo+ICsjZW5kaWYKPiArCWZi LT5wYW5lbC0+d2lkdGggPSAtMTsKPiArCWZiLT5wYW5lbC0+aGVpZ2h0ID0gLTE7Cj4gKwo+ICsJ aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyX2FycmF5KGVuZHBvaW50LAo+ICsJCQkiYXJtLHBsMTF4 LHRmdC1yMGcwYjAtcGFkcyIsCj4gKwkJCXRmdF9yMGIwZzAsIEFSUkFZX1NJWkUodGZ0X3IwYjBn MCkpICE9IDApCj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJcmV0dXJuIGNsY2RmYl9vZl9p bml0X3RmdF9wYW5lbChmYiwgdGZ0X3IwYjBnMFswXSwKPiArCQkJCQl0ZnRfcjBiMGcwWzFdLCAg dGZ0X3IwYjBnMFsyXSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX3ZyYW1fc2V0 dXAoc3RydWN0IGNsY2RfZmIgKmZiKQo+ICt7Cj4gKwlpbnQgZXJyOwo+ICsJc3RydWN0IGRldmlj ZV9ub2RlICptZW1vcnk7Cj4gKwl1NjQgc2l6ZTsKPiArCj4gKwllcnIgPSBjbGNkZmJfb2ZfaW5p dF9kaXNwbGF5KGZiKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwltZW1v cnkgPSBvZl9wYXJzZV9waGFuZGxlKGZiLT5kZXYtPmRldi5vZl9ub2RlLCAibWVtb3J5LXJlZ2lv biIsIDApOwo+ICsJaWYgKCFtZW1vcnkpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJZmIt PmZiLnNjcmVlbl9iYXNlID0gb2ZfaW9tYXAobWVtb3J5LCAwKTsKPiArCWlmICghZmItPmZiLnNj cmVlbl9iYXNlKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWZiLT5mYi5maXguc21lbV9z dGFydCA9IG9mX3RyYW5zbGF0ZV9hZGRyZXNzKG1lbW9yeSwKPiArCQkJb2ZfZ2V0X2FkZHJlc3Mo bWVtb3J5LCAwLCAmc2l6ZSwgTlVMTCkpOwo+ICsJZmItPmZiLmZpeC5zbWVtX2xlbiA9IHNpemU7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX3ZyYW1f bW1hcChzdHJ1Y3QgY2xjZF9mYiAqZmIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICt7 Cj4gKwl1bnNpZ25lZCBsb25nIG9mZiwgdXNlcl9zaXplLCBrZXJuZWxfc2l6ZTsKPiArCj4gKwo+ ICsJb2ZmID0gdm1hLT52bV9wZ29mZiA8PCBQQUdFX1NISUZUOwo+ICsJdXNlcl9zaXplID0gdm1h LT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0Owo+ICsJa2VybmVsX3NpemUgPSBmYi0+ZmIuZml4LnNt ZW1fbGVuOwo+ICsKPiArCWlmIChvZmYgPj0ga2VybmVsX3NpemUgfHwgdXNlcl9zaXplID4gKGtl cm5lbF9zaXplIC0gb2ZmKSkKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsKPiArCXJldHVybiByZW1h cF9wZm5fcmFuZ2Uodm1hLCB2bWEtPnZtX3N0YXJ0LAo+ICsJCQlfX3BoeXNfdG9fcGZuKGZiLT5m Yi5maXguc21lbV9zdGFydCkgKyB2bWEtPnZtX3Bnb2ZmLAo+ICsJCQl1c2VyX3NpemUsCj4gKwkJ CXBncHJvdF93cml0ZWNvbWJpbmUodm1hLT52bV9wYWdlX3Byb3QpKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgY2xjZGZiX29mX3ZyYW1fcmVtb3ZlKHN0cnVjdCBjbGNkX2ZiICpmYikKPiArewo+ ICsJaW91bm1hcChmYi0+ZmIuc2NyZWVuX2Jhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNs Y2RmYl9vZl9kbWFfc2V0dXAoc3RydWN0IGNsY2RfZmIgKmZiKQo+ICt7Cj4gKwl1bnNpZ25lZCBs b25nIGZyYW1lc2l6ZTsKPiArCWRtYV9hZGRyX3QgZG1hOwo+ICsJaW50IGVycjsKPiArCj4gKwll cnIgPSBjbGNkZmJfb2ZfaW5pdF9kaXNwbGF5KGZiKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJu IGVycjsKPiArCj4gKwlmcmFtZXNpemUgPSBQQUdFX0FMSUdOKGZiLT5wYW5lbC0+bW9kZS54cmVz ICogZmItPnBhbmVsLT5tb2RlLnlyZXMgKgo+ICsJCQlmYi0+cGFuZWwtPmJwcCAvIDgpOwo+ICsJ ZmItPmZiLnNjcmVlbl9iYXNlID0gZG1hX2FsbG9jX2NvaGVyZW50KCZmYi0+ZGV2LT5kZXYsIGZy YW1lc2l6ZSwKPiArCQkJJmRtYSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWZiLT5mYi5zY3JlZW5f YmFzZSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlmYi0+ZmIuZml4LnNtZW1fc3RhcnQg PSBkbWE7Cj4gKwlmYi0+ZmIuZml4LnNtZW1fbGVuID0gZnJhbWVzaXplOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNsY2RmYl9vZl9kbWFfbW1hcChzdHJ1Y3QgY2xj ZF9mYiAqZmIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICt7Cj4gKwlyZXR1cm4gZG1h X21tYXBfd2MoJmZiLT5kZXYtPmRldiwgdm1hLCBmYi0+ZmIuc2NyZWVuX2Jhc2UsCj4gKwkJCSAg IGZiLT5mYi5maXguc21lbV9zdGFydCwgZmItPmZiLmZpeC5zbWVtX2xlbik7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGNsY2RmYl9vZl9kbWFfcmVtb3ZlKHN0cnVjdCBjbGNkX2ZiICpmYikKPiAr ewo+ICsJZG1hX2ZyZWVfY29oZXJlbnQoJmZiLT5kZXYtPmRldiwgZmItPmZiLmZpeC5zbWVtX2xl biwKPiArCQkJZmItPmZiLnNjcmVlbl9iYXNlLCBmYi0+ZmIuZml4LnNtZW1fc3RhcnQpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNsY2RfYm9hcmQgKmNsY2RmYl9vZl9nZXRfYm9hcmQoc3Ry dWN0IGFtYmFfZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBjbGNkX2JvYXJkICpib2FyZCA9 IGRldm1fa3phbGxvYygmZGV2LT5kZXYsIHNpemVvZigqYm9hcmQpLAo+ICsJCQlHRlBfS0VSTkVM KTsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+ZGV2Lm9mX25vZGU7Cj4gKwo+ ICsJaWYgKCFib2FyZCkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlib2FyZC0+bmFtZSA9IG9m X25vZGVfZnVsbF9uYW1lKG5vZGUpOwo+ICsJYm9hcmQtPmNhcHMgPSBDTENEX0NBUF9BTEw7Cj4g Kwlib2FyZC0+Y2hlY2sgPSBjbGNkZmJfY2hlY2s7Cj4gKwlib2FyZC0+ZGVjb2RlID0gY2xjZGZi X2RlY29kZTsKPiArCWlmIChvZl9maW5kX3Byb3BlcnR5KG5vZGUsICJtZW1vcnktcmVnaW9uIiwg TlVMTCkpIHsKPiArCQlib2FyZC0+c2V0dXAgPSBjbGNkZmJfb2ZfdnJhbV9zZXR1cDsKPiArCQli b2FyZC0+bW1hcCA9IGNsY2RmYl9vZl92cmFtX21tYXA7Cj4gKwkJYm9hcmQtPnJlbW92ZSA9IGNs Y2RmYl9vZl92cmFtX3JlbW92ZTsKPiArCX0gZWxzZSB7Cj4gKwkJYm9hcmQtPnNldHVwID0gY2xj ZGZiX29mX2RtYV9zZXR1cDsKPiArCQlib2FyZC0+bW1hcCA9IGNsY2RmYl9vZl9kbWFfbW1hcDsK PiArCQlib2FyZC0+cmVtb3ZlID0gY2xjZGZiX29mX2RtYV9yZW1vdmU7Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIGJvYXJkOwo+ICt9Cj4gKyNlbHNlCj4gK3N0YXRpYyBzdHJ1Y3QgY2xjZF9ib2FyZCAq Y2xjZGZiX29mX2dldF9ib2FyZChzdHJ1Y3QgYW1iYV9kZXZpY2UgKmRldikKPiArewo+ICsJcmV0 dXJuIE5VTEw7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICtzdGF0aWMgaW50IGNsY2RmYl9wcm9iZShz dHJ1Y3QgYW1iYV9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGFtYmFfaWQgKmlkKQo+ICt7Cj4g KwlzdHJ1Y3QgY2xjZF9ib2FyZCAqYm9hcmQgPSBkZXZfZ2V0X3BsYXRkYXRhKCZkZXYtPmRldik7 Cj4gKwlzdHJ1Y3QgY2xjZF9mYiAqZmI7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghYm9hcmQp Cj4gKwkJYm9hcmQgPSBjbGNkZmJfb2ZfZ2V0X2JvYXJkKGRldik7Cj4gKwo+ICsJaWYgKCFib2Fy ZCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2Nv aGVyZW50KCZkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdv dG8gb3V0Owo+ICsKPiArCXJldCA9IGFtYmFfcmVxdWVzdF9yZWdpb25zKGRldiwgTlVMTCk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJcHJpbnRrKEtFUk5fRVJSICJDTENEOiB1bmFibGUgdG8gcmVzZXJ2 ZSByZWdzIHJlZ2lvblxuIik7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJZmIgPSBremFs bG9jKHNpemVvZigqZmIpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZmIpIHsKPiArCQlyZXQgPSAt RU5PTUVNOwo+ICsJCWdvdG8gZnJlZV9yZWdpb247Cj4gKwl9Cj4gKwo+ICsJZmItPmRldiA9IGRl djsKPiArCWZiLT5ib2FyZCA9IGJvYXJkOwo+ICsKPiArCWRldl9pbmZvKCZmYi0+ZGV2LT5kZXYs ICJQTCUwM3ggZGVzaWduZXIgJTAyeCByZXYldSBhdCAweCUwOGxseFxuIiwKPiArCQlhbWJhX3Bh cnQoZGV2KSwgYW1iYV9tYW5mKGRldiksIGFtYmFfcmV2KGRldiksCj4gKwkJKHVuc2lnbmVkIGxv bmcgbG9uZylkZXYtPnJlcy5zdGFydCk7Cj4gKwo+ICsJcmV0ID0gZmItPmJvYXJkLT5zZXR1cChm Yik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZnJlZV9mYjsKPiArCj4gKwlyZXQgPSBjbGNkZmJf cmVnaXN0ZXIoZmIpOwo+ICsJaWYgKHJldCA9PSAwKSB7Cj4gKwkJYW1iYV9zZXRfZHJ2ZGF0YShk ZXYsIGZiKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlmYi0+Ym9hcmQtPnJlbW92ZShm Yik7Cj4gKyBmcmVlX2ZiOgo+ICsJa2ZyZWUoZmIpOwo+ICsgZnJlZV9yZWdpb246Cj4gKwlhbWJh X3JlbGVhc2VfcmVnaW9ucyhkZXYpOwo+ICsgb3V0Ogo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsK PiArc3RhdGljIGludCBjbGNkZmJfcmVtb3ZlKHN0cnVjdCBhbWJhX2RldmljZSAqZGV2KQo+ICt7 Cj4gKwlzdHJ1Y3QgY2xjZF9mYiAqZmIgPSBhbWJhX2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJ Y2xjZGZiX2Rpc2FibGUoZmIpOwo+ICsJdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcigmZmItPmZiKTsK PiArCWlmIChmYi0+ZmIuY21hcC5sZW4pCj4gKwkJZmJfZGVhbGxvY19jbWFwKCZmYi0+ZmIuY21h cCk7Cj4gKwlpb3VubWFwKGZiLT5yZWdzKTsKPiArCWNsa191bnByZXBhcmUoZmItPmNsayk7Cj4g KwljbGtfcHV0KGZiLT5jbGspOwo+ICsKPiArCWZiLT5ib2FyZC0+cmVtb3ZlKGZiKTsKPiArCj4g KwlrZnJlZShmYik7Cj4gKwo+ICsJYW1iYV9yZWxlYXNlX3JlZ2lvbnMoZGV2KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhbWJhX2lkIGNsY2RmYl9p ZF90YWJsZVtdID0gewo+ICsJewo+ICsJCS5pZAk9IDB4MDAwNDExMTAsCj4gKwkJLm1hc2sJPSAw eDAwMGZmZmZlLAo+ICsJfSwKPiArCXsgMCwgMCB9LAo+ICt9Owo+ICsKPiArTU9EVUxFX0RFVklD RV9UQUJMRShhbWJhLCBjbGNkZmJfaWRfdGFibGUpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBhbWJh X2RyaXZlciBjbGNkX2RyaXZlciA9IHsKPiArCS5kcnYgCQk9IHsKPiArCQkubmFtZQk9ICJjbGNk LXBsMTF4IiwKPiArCX0sCj4gKwkucHJvYmUJCT0gY2xjZGZiX3Byb2JlLAo+ICsJLnJlbW92ZQkJ PSBjbGNkZmJfcmVtb3ZlLAo+ICsJLmlkX3RhYmxlCT0gY2xjZGZiX2lkX3RhYmxlLAo+ICt9Owo+ ICsKPiArc3RhdGljIGludCBfX2luaXQgYW1iYV9jbGNkZmJfaW5pdCh2b2lkKQo+ICt7Cj4gKwlp ZiAoZmJfZ2V0X29wdGlvbnMoImFtYmFmYiIsIE5VTEwpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsKPiArCXJldHVybiBhbWJhX2RyaXZlcl9yZWdpc3RlcigmY2xjZF9kcml2ZXIpOwo+ICt9Cj4g Kwo+ICttb2R1bGVfaW5pdChhbWJhX2NsY2RmYl9pbml0KTsKPiArCj4gK3N0YXRpYyB2b2lkIF9f ZXhpdCBhbWJhX2NsY2RmYl9leGl0KHZvaWQpCj4gK3sKPiArCWFtYmFfZHJpdmVyX3VucmVnaXN0 ZXIoJmNsY2RfZHJpdmVyKTsKPiArfQo+ICsKPiArbW9kdWxlX2V4aXQoYW1iYV9jbGNkZmJfZXhp dCk7Cj4gKwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFSTSBQcmltZUNlbGwgUEwxMTAgQ0xDRCBj b3JlIGRyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvYW1iYS9jbGNkLXJlZ3MuaCBiL2luY2x1ZGUvbGludXgvYW1iYS9jbGNkLXJl Z3MuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi40MjFiMGZh OTBkNmEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9saW51eC9hbWJhL2NsY2QtcmVn cy5oCj4gQEAgLTAsMCArMSw4NyBAQAo+ICsvKgo+ICsgKiBEYXZpZCBBIFJ1c2xpbmcKPiArICoK PiArICogQ29weXJpZ2h0IChDKSAyMDAxIEFSTSBMaW1pdGVkCj4gKyAqCj4gKyAqIFRoaXMgZmls ZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljCj4gKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFp biBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCj4gKyAqIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Lwo+ICsKPiArI2lmbmRlZiBBTUJBX0NMQ0RfUkVHU19ICj4gKyNkZWZpbmUgQU1CQV9DTENEX1JF R1NfSAo+ICsKPiArLyoKPiArICogQ0xDRCBDb250cm9sbGVyIEludGVybmFsIFJlZ2lzdGVyIGFk ZHJlc3Nlcwo+ICsgKi8KPiArI2RlZmluZSBDTENEX1RJTTAJCTB4MDAwMDAwMDAKPiArI2RlZmlu ZSBDTENEX1RJTTEgCQkweDAwMDAwMDA0Cj4gKyNkZWZpbmUgQ0xDRF9USU0yIAkJMHgwMDAwMDAw OAo+ICsjZGVmaW5lIENMQ0RfVElNMyAJCTB4MDAwMDAwMGMKPiArI2RlZmluZSBDTENEX1VCQVMg CQkweDAwMDAwMDEwCj4gKyNkZWZpbmUgQ0xDRF9MQkFTIAkJMHgwMDAwMDAxNAo+ICsKPiArI2Rl ZmluZSBDTENEX1BMMTEwX0lFTkIJCTB4MDAwMDAwMTgKPiArI2RlZmluZSBDTENEX1BMMTEwX0NO VEwJCTB4MDAwMDAwMWMKPiArI2RlZmluZSBDTENEX1BMMTEwX1NUQVQJCTB4MDAwMDAwMjAKPiAr I2RlZmluZSBDTENEX1BMMTEwX0lOVFIgCTB4MDAwMDAwMjQKPiArI2RlZmluZSBDTENEX1BMMTEw X1VDVVIJCTB4MDAwMDAwMjgKPiArI2RlZmluZSBDTENEX1BMMTEwX0xDVVIJCTB4MDAwMDAwMkMK PiArCj4gKyNkZWZpbmUgQ0xDRF9QTDExMV9DTlRMCQkweDAwMDAwMDE4Cj4gKyNkZWZpbmUgQ0xD RF9QTDExMV9JRU5CCQkweDAwMDAwMDFjCj4gKyNkZWZpbmUgQ0xDRF9QTDExMV9SSVMJCTB4MDAw MDAwMjAKPiArI2RlZmluZSBDTENEX1BMMTExX01JUwkJMHgwMDAwMDAyNAo+ICsjZGVmaW5lIENM Q0RfUEwxMTFfSUNSCQkweDAwMDAwMDI4Cj4gKyNkZWZpbmUgQ0xDRF9QTDExMV9VQ1VSCQkweDAw MDAwMDJjCj4gKyNkZWZpbmUgQ0xDRF9QTDExMV9MQ1VSCQkweDAwMDAwMDMwCj4gKwo+ICsjZGVm aW5lIENMQ0RfUEFMTCAJCTB4MDAwMDAyMDAKPiArI2RlZmluZSBDTENEX1BBTEVUVEUJCTB4MDAw MDAyMDAKPiArCj4gKyNkZWZpbmUgVElNMl9QQ0RfTE9fTUFTSwlHRU5NQVNLKDQsIDApCj4gKyNk ZWZpbmUgVElNMl9QQ0RfTE9fQklUUwk1Cj4gKyNkZWZpbmUgVElNMl9DTEtTRUwJCSgxIDw8IDUp Cj4gKyNkZWZpbmUgVElNMl9BQ0JfTUFTSwkJR0VOTUFTSygxMCwgNikKPiArI2RlZmluZSBUSU0y X0lWUwkJKDEgPDwgMTEpCj4gKyNkZWZpbmUgVElNMl9JSFMJCSgxIDw8IDEyKQo+ICsjZGVmaW5l IFRJTTJfSVBDCQkoMSA8PCAxMykKPiArI2RlZmluZSBUSU0yX0lPRQkJKDEgPDwgMTQpCj4gKyNk ZWZpbmUgVElNMl9CQ0QJCSgxIDw8IDI2KQo+ICsjZGVmaW5lIFRJTTJfUENEX0hJX01BU0sJR0VO TUFTSygzMSwgMjcpCj4gKyNkZWZpbmUgVElNMl9QQ0RfSElfQklUUwk1Cj4gKyNkZWZpbmUgVElN Ml9QQ0RfSElfU0hJRlQJMjcKPiArCj4gKyNkZWZpbmUgQ05UTF9MQ0RFTgkJKDEgPDwgMCkKPiAr I2RlZmluZSBDTlRMX0xDREJQUDEJCSgwIDw8IDEpCj4gKyNkZWZpbmUgQ05UTF9MQ0RCUFAyCQko MSA8PCAxKQo+ICsjZGVmaW5lIENOVExfTENEQlBQNAkJKDIgPDwgMSkKPiArI2RlZmluZSBDTlRM X0xDREJQUDgJCSgzIDw8IDEpCj4gKyNkZWZpbmUgQ05UTF9MQ0RCUFAxNgkJKDQgPDwgMSkKPiAr I2RlZmluZSBDTlRMX0xDREJQUDE2XzU2NQkoNiA8PCAxKQo+ICsjZGVmaW5lIENOVExfTENEQlBQ MTZfNDQ0CSg3IDw8IDEpCj4gKyNkZWZpbmUgQ05UTF9MQ0RCUFAyNAkJKDUgPDwgMSkKPiArI2Rl ZmluZSBDTlRMX0xDREJXCQkoMSA8PCA0KQo+ICsjZGVmaW5lIENOVExfTENEVEZUCQkoMSA8PCA1 KQo+ICsjZGVmaW5lIENOVExfTENETU9OTzgJCSgxIDw8IDYpCj4gKyNkZWZpbmUgQ05UTF9MQ0RE VUFMCQkoMSA8PCA3KQo+ICsjZGVmaW5lIENOVExfQkdSCQkoMSA8PCA4KQo+ICsjZGVmaW5lIENO VExfQkVCTwkJKDEgPDwgOSkKPiArI2RlZmluZSBDTlRMX0JFUE8JCSgxIDw8IDEwKQo+ICsjZGVm aW5lIENOVExfTENEUFdSCQkoMSA8PCAxMSkKPiArI2RlZmluZSBDTlRMX0xDRFZDT01QKHgpCSgo eCkgPDwgMTIpCj4gKyNkZWZpbmUgQ05UTF9MRE1BRklGT1RJTUUJKDEgPDwgMTUpCj4gKyNkZWZp bmUgQ05UTF9XQVRFUk1BUksJCSgxIDw8IDE2KQo+ICsKPiArLyogU1QgTWljcm9lbGVjdHJvbmlj cyB2YXJpYW50IGJpdHMgKi8KPiArI2RlZmluZSBDTlRMX1NUXzFYQlBQXzQ0NAkweDAKPiArI2Rl ZmluZSBDTlRMX1NUXzFYQlBQXzU1NTEJKDEgPDwgMTcpCj4gKyNkZWZpbmUgQ05UTF9TVF8xWEJQ UF81NjUJKDEgPDwgMTgpCj4gKyNkZWZpbmUgQ05UTF9TVF9DRFdJRF8xMgkweDAKPiArI2RlZmlu ZSBDTlRMX1NUX0NEV0lEXzE2CSgxIDw8IDE5KQo+ICsjZGVmaW5lIENOVExfU1RfQ0RXSURfMTgJ KDEgPDwgMjApCj4gKyNkZWZpbmUgQ05UTF9TVF9DRFdJRF8yNAkoKDEgPDwgMTkpfCgxIDw8IDIw KSkKPiArI2RlZmluZSBDTlRMX1NUX0NFQUVOCQkoMSA8PCAyMSkKPiArI2RlZmluZSBDTlRMX1NU X0xDREJQUDI0X1BBQ0tFRAkoNiA8PCAxKQo+ICsKPiArI2VuZGlmIC8qIEFNQkFfQ0xDRF9SRUdT X0ggKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hbWJhL2NsY2QuaCBiL2luY2x1ZGUv bGludXgvYW1iYS9jbGNkLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uYjZlMGNiZWFmNTMzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvbGludXgv YW1iYS9jbGNkLmgKPiBAQCAtMCwwICsxLDI5MCBAQAo+ICsvKgo+ICsgKiBsaW51eC9pbmNsdWRl L2FzbS1hcm0vaGFyZHdhcmUvYW1iYV9jbGNkLmggLS0gSW50ZWdyYXRvciBMQ0QgcGFuZWwuCj4g KyAqCj4gKyAqIERhdmlkIEEgUnVzbGluZwo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDEg QVJNIExpbWl0ZWQKPiArICoKPiArICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZS4g IFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hp dmUKPiArICogZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKyNpbmNsdWRlIDxsaW51eC9mYi5o Pgo+ICsjaW5jbHVkZSA8bGludXgvYW1iYS9jbGNkLXJlZ3MuaD4KPiArCj4gK2VudW0gewo+ICsJ LyogaW5kaXZpZHVhbCBmb3JtYXRzICovCj4gKwlDTENEX0NBUF9SR0I0NDQJCT0gKDEgPDwgMCks Cj4gKwlDTENEX0NBUF9SR0I1NTUxCT0gKDEgPDwgMSksCj4gKwlDTENEX0NBUF9SR0I1NjUJCT0g KDEgPDwgMiksCj4gKwlDTENEX0NBUF9SR0I4ODgJCT0gKDEgPDwgMyksCj4gKwlDTENEX0NBUF9C R1I0NDQJCT0gKDEgPDwgNCksCj4gKwlDTENEX0NBUF9CR1I1NTUxCT0gKDEgPDwgNSksCj4gKwlD TENEX0NBUF9CR1I1NjUJCT0gKDEgPDwgNiksCj4gKwlDTENEX0NBUF9CR1I4ODgJCT0gKDEgPDwg NyksCj4gKwo+ICsJLyogY29ubmVjdGlvbiBsYXlvdXRzICovCj4gKwlDTENEX0NBUF80NDQJCT0g Q0xDRF9DQVBfUkdCNDQ0IHwgQ0xDRF9DQVBfQkdSNDQ0LAo+ICsJQ0xDRF9DQVBfNTU1MQkJPSBD TENEX0NBUF9SR0I1NTUxIHwgQ0xDRF9DQVBfQkdSNTU1MSwKPiArCUNMQ0RfQ0FQXzU2NQkJPSBD TENEX0NBUF9SR0I1NjUgfCBDTENEX0NBUF9CR1I1NjUsCj4gKwlDTENEX0NBUF84ODgJCT0gQ0xD RF9DQVBfUkdCODg4IHwgQ0xDRF9DQVBfQkdSODg4LAo+ICsKPiArCS8qIHJlZC9ibHVlIG9yZGVy aW5nICovCj4gKwlDTENEX0NBUF9SR0IJCT0gQ0xDRF9DQVBfUkdCNDQ0IHwgQ0xDRF9DQVBfUkdC NTU1MSB8Cj4gKwkJCQkgIENMQ0RfQ0FQX1JHQjU2NSB8IENMQ0RfQ0FQX1JHQjg4OCwKPiArCUNM Q0RfQ0FQX0JHUgkJPSBDTENEX0NBUF9CR1I0NDQgfCBDTENEX0NBUF9CR1I1NTUxIHwKPiArCQkJ CSAgQ0xDRF9DQVBfQkdSNTY1IHwgQ0xDRF9DQVBfQkdSODg4LAo+ICsKPiArCUNMQ0RfQ0FQX0FM TAkJPSBDTENEX0NBUF9CR1IgfCBDTENEX0NBUF9SR0IsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZTsKPiArCj4gK3N0cnVjdCBjbGNkX3BhbmVsIHsKPiArCXN0cnVjdCBmYl92 aWRlb21vZGUJbW9kZTsKPiArCXNpZ25lZCBzaG9ydAkJd2lkdGg7CS8qIHdpZHRoIGluIG1tICov Cj4gKwlzaWduZWQgc2hvcnQJCWhlaWdodDsJLyogaGVpZ2h0IGluIG1tICovCj4gKwl1MzIJCQl0 aW0yOwo+ICsJdTMyCQkJdGltMzsKPiArCXUzMgkJCWNudGw7Cj4gKwl1MzIJCQljYXBzOwo+ICsJ dW5zaWduZWQgaW50CQlicHA6OCwKPiArCQkJCWZpeGVkdGltaW5nczoxLAo+ICsJCQkJZ3JheXNj YWxlOjE7Cj4gKwl1bnNpZ25lZCBpbnQJCWNvbm5lY3RvcjsKPiArCXN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlCSpiYWNrbGlnaHQ7Cj4gKwkvKgo+ICsJICogSWYgdGhlIEIvUiBsaW5lcyBhcmUgc3dp dGNoZWQgYmV0d2VlbiB0aGUgQ0xDRAo+ICsJICogYW5kIHRoZSBwYW5lbCB3ZSBuZWVkIHRvIGtu b3cgdGhpcyBhbmQgbm90IHRyeSB0bwo+ICsJICogY29tcGVuc2F0ZSB3aXRoIHRoZSBCR1IgYml0 IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLgo+ICsJICovCj4gKwlib29sCQkJYmdyX2Nvbm5lY3Rp b247Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgY2xjZF9yZWdzIHsKPiArCXUzMgkJCXRpbTA7Cj4gKwl1 MzIJCQl0aW0xOwo+ICsJdTMyCQkJdGltMjsKPiArCXUzMgkJCXRpbTM7Cj4gKwl1MzIJCQljbnRs Owo+ICsJdW5zaWduZWQgbG9uZwkJcGl4Y2xvY2s7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgY2xjZF9m YjsKPiArCj4gKy8qCj4gKyAqIHRoZSBib2FyZC10eXBlIHNwZWNpZmljIHJvdXRpbmVzCj4gKyAq Lwo+ICtzdHJ1Y3QgY2xjZF9ib2FyZCB7Cj4gKwljb25zdCBjaGFyICpuYW1lOwo+ICsKPiArCS8q Cj4gKwkgKiBPcHRpb25hbC4gIEhhcmR3YXJlIGNhcGFiaWxpdHkgZmxhZ3MuCj4gKwkgKi8KPiAr CXUzMgljYXBzOwo+ICsKPiArCS8qCj4gKwkgKiBPcHRpb25hbC4gIENoZWNrIHdoZXRoZXIgdGhl IHZhciBzdHJ1Y3R1cmUgaXMgYWNjZXB0YWJsZQo+ICsJICogZm9yIHRoaXMgZGlzcGxheS4KPiAr CSAqLwo+ICsJaW50CSgqY2hlY2spKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9z Y3JlZW5pbmZvICp2YXIpOwo+ICsKPiArCS8qCj4gKwkgKiBDb21wdWxzb3J5LiAgRGVjb2RlIGZi LT5mYi52YXIgaW50byByZWdzLT4qLiAgSW4gdGhlIGNhc2Ugb2YKPiArCSAqIGZpeGVkIHRpbWlu Zywgc2V0IHJlZ3MtPiogdG8gdGhlIHJlZ2lzdGVyIHZhbHVlcyByZXF1aXJlZC4KPiArCSAqLwo+ ICsJdm9pZAkoKmRlY29kZSkoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgY2xjZF9yZWdzICpy ZWdzKTsKPiArCj4gKwkvKgo+ICsJICogT3B0aW9uYWwuICBEaXNhYmxlIGFueSBleHRyYSBkaXNw bGF5IGhhcmR3YXJlLgo+ICsJICovCj4gKwl2b2lkCSgqZGlzYWJsZSkoc3RydWN0IGNsY2RfZmIg Kik7Cj4gKwo+ICsJLyoKPiArCSAqIE9wdGlvbmFsLiAgRW5hYmxlIGFueSBleHRyYSBkaXNwbGF5 IGhhcmR3YXJlLgo+ICsJICovCj4gKwl2b2lkCSgqZW5hYmxlKShzdHJ1Y3QgY2xjZF9mYiAqKTsK PiArCj4gKwkvKgo+ICsJICogU2V0dXAgcGxhdGZvcm0gc3BlY2lmaWMgcGFydHMgb2YgQ0xDRCBk cml2ZXIKPiArCSAqLwo+ICsJaW50CSgqc2V0dXApKHN0cnVjdCBjbGNkX2ZiICopOwo+ICsKPiAr CS8qCj4gKwkgKiBtbWFwIHRoZSBmcmFtZWJ1ZmZlciBtZW1vcnkKPiArCSAqLwo+ICsJaW50CSgq bW1hcCkoc3RydWN0IGNsY2RfZmIgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwo+ICsKPiAr CS8qCj4gKwkgKiBSZW1vdmUgcGxhdGZvcm0gc3BlY2lmaWMgcGFydHMgb2YgQ0xDRCBkcml2ZXIK PiArCSAqLwo+ICsJdm9pZAkoKnJlbW92ZSkoc3RydWN0IGNsY2RfZmIgKik7Cj4gK307Cj4gKwo+ ICtzdHJ1Y3QgYW1iYV9kZXZpY2U7Cj4gK3N0cnVjdCBjbGs7Cj4gKwo+ICsvKiB0aGlzIGRhdGEg c3RydWN0dXJlIGRlc2NyaWJlcyBlYWNoIGZyYW1lIGJ1ZmZlciBkZXZpY2Ugd2UgZmluZCAqLwo+ ICtzdHJ1Y3QgY2xjZF9mYiB7Cj4gKwlzdHJ1Y3QgZmJfaW5mbwkJZmI7Cj4gKwlzdHJ1Y3QgYW1i YV9kZXZpY2UJKmRldjsKPiArCXN0cnVjdCBjbGsJCSpjbGs7Cj4gKwlzdHJ1Y3QgY2xjZF9wYW5l bAkqcGFuZWw7Cj4gKwlzdHJ1Y3QgY2xjZF9ib2FyZAkqYm9hcmQ7Cj4gKwl2b2lkCQkJKmJvYXJk X2RhdGE7Cj4gKwl2b2lkIF9faW9tZW0JCSpyZWdzOwo+ICsJdTE2CQkJb2ZmX2llbmI7Cj4gKwl1 MTYJCQlvZmZfY250bDsKPiArCXUzMgkJCWNsY2RfY250bDsKPiArCXUzMgkJCWNtYXBbMTZdOwo+ ICsJYm9vbAkJCWNsa19lbmFibGVkOwo+ICt9Owo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGNs Y2RmYl9kZWNvZGUoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgY2xjZF9yZWdzICpyZWdzKQo+ ICt7Cj4gKwlzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciA9ICZmYi0+ZmIudmFyOwo+ICsJ dTMyIHZhbCwgY3BsOwo+ICsKPiArCS8qCj4gKwkgKiBQcm9ncmFtIHRoZSBDTENEIGNvbnRyb2xs ZXIgcmVnaXN0ZXJzIGFuZCBzdGFydCB0aGUgQ0xDRAo+ICsJICovCj4gKwl2YWwgPSAoKHZhci0+ eHJlcyAvIDE2KSAtIDEpIDw8IDI7Cj4gKwl2YWwgfD0gKHZhci0+aHN5bmNfbGVuIC0gMSkgPDwg ODsKPiArCXZhbCB8PSAodmFyLT5yaWdodF9tYXJnaW4gLSAxKSA8PCAxNjsKPiArCXZhbCB8PSAo dmFyLT5sZWZ0X21hcmdpbiAtIDEpIDw8IDI0Owo+ICsJcmVncy0+dGltMCA9IHZhbDsKPiArCj4g Kwl2YWwgPSB2YXItPnlyZXM7Cj4gKwlpZiAoZmItPnBhbmVsLT5jbnRsICYgQ05UTF9MQ0REVUFM KQo+ICsJCXZhbCAvPSAyOwo+ICsJdmFsIC09IDE7Cj4gKwl2YWwgfD0gKHZhci0+dnN5bmNfbGVu IC0gMSkgPDwgMTA7Cj4gKwl2YWwgfD0gdmFyLT5sb3dlcl9tYXJnaW4gPDwgMTY7Cj4gKwl2YWwg fD0gdmFyLT51cHBlcl9tYXJnaW4gPDwgMjQ7Cj4gKwlyZWdzLT50aW0xID0gdmFsOwo+ICsKPiAr CXZhbCA9IGZiLT5wYW5lbC0+dGltMjsKPiArCXZhbCB8PSB2YXItPnN5bmMgJiBGQl9TWU5DX0hP Ul9ISUdIX0FDVCAgPyAwIDogVElNMl9JSFM7Cj4gKwl2YWwgfD0gdmFyLT5zeW5jICYgRkJfU1lO Q19WRVJUX0hJR0hfQUNUID8gMCA6IFRJTTJfSVZTOwo+ICsKPiArCWNwbCA9IHZhci0+eHJlc192 aXJ0dWFsOwo+ICsJaWYgKGZiLT5wYW5lbC0+Y250bCAmIENOVExfTENEVEZUKQkgIC8qIFRGVCAq Lwo+ICsJCS8qIC8gMSAqLzsKPiArCWVsc2UgaWYgKCF2YXItPmdyYXlzY2FsZSkJCSAgLyogU1RO IGNvbG9yICovCj4gKwkJY3BsID0gY3BsICogOCAvIDM7Cj4gKwllbHNlIGlmIChmYi0+cGFuZWwt PmNudGwgJiBDTlRMX0xDRE1PTk84KSAvKiBTVE4gbW9ub2Nocm9tZSwgOGJpdCAqLwo+ICsJCWNw bCAvPSA4Owo+ICsJZWxzZQkJCQkJICAvKiBTVE4gbW9ub2Nocm9tZSwgNGJpdCAqLwo+ICsJCWNw bCAvPSA0Owo+ICsKPiArCXJlZ3MtPnRpbTIgPSB2YWwgfCAoKGNwbCAtIDEpIDw8IDE2KTsKPiAr Cj4gKwlyZWdzLT50aW0zID0gZmItPnBhbmVsLT50aW0zOwo+ICsKPiArCXZhbCA9IGZiLT5wYW5l bC0+Y250bDsKPiArCWlmICh2YXItPmdyYXlzY2FsZSkKPiArCQl2YWwgfD0gQ05UTF9MQ0RCVzsK PiArCj4gKwlpZiAoZmItPnBhbmVsLT5jYXBzICYmIGZiLT5ib2FyZC0+Y2FwcyAmJiB2YXItPmJp dHNfcGVyX3BpeGVsID49IDE2KSB7Cj4gKwkJLyoKPiArCQkgKiBpZiBib2FyZCBhbmQgcGFuZWwg c3VwcGx5IGNhcGFiaWxpdGllcywgd2UgY2FuIHN1cHBvcnQKPiArCQkgKiBjaGFuZ2luZyBCR1Iv UkdCIGRlcGVuZGluZyBvbiBzdXBwbGllZCBwYXJhbWV0ZXJzLiBIZXJlCj4gKwkJICogd2Ugc3dp dGNoIHRvIHdoYXQgdGhlIGZyYW1lYnVmZmVyIGlzIHByb3ZpZGluZyBpZiBuZWVkCj4gKwkJICog YmUsIHNvIGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyBCR1IgYnV0IHRoZSBkaXNwbGF5IGNvbm5lY3Rp b24KPiArCQkgKiBpcyBSR0IgKGZpcnN0IGNhc2UpIHdlIHN3aXRjaCBpdCBhcm91bmQuIFZpY2Ug dmVyc2EgbXV0YXRpcwo+ICsJCSAqIG11dGFuZGlzIGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyBSR0Ig YnV0IHRoZSBkaXNwbGF5IGNvbm5lY3Rpb24KPiArCQkgKiBpcyBCR1IsIHdlIGZsaXAgaXQgYXJv dW5kLgo+ICsJCSAqLwo+ICsJCWlmICh2YXItPnJlZC5vZmZzZXQgPT0gMCkKPiArCQkJdmFsICY9 IH5DTlRMX0JHUjsKPiArCQllbHNlCj4gKwkJCXZhbCB8PSBDTlRMX0JHUjsKPiArCQlpZiAoZmIt PnBhbmVsLT5iZ3JfY29ubmVjdGlvbikKPiArCQkJdmFsIF49IENOVExfQkdSOwo+ICsJfQo+ICsK PiArCXN3aXRjaCAodmFyLT5iaXRzX3Blcl9waXhlbCkgewo+ICsJY2FzZSAxOgo+ICsJCXZhbCB8 PSBDTlRMX0xDREJQUDE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDI6Cj4gKwkJdmFsIHw9IENOVExf TENEQlBQMjsKPiArCQlicmVhazsKPiArCWNhc2UgNDoKPiArCQl2YWwgfD0gQ05UTF9MQ0RCUFA0 Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSA4Ogo+ICsJCXZhbCB8PSBDTlRMX0xDREJQUDg7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIDE2Ogo+ICsJCS8qCj4gKwkJICogUEwxMTAgY2Fubm90IGNob29zZSBi ZXR3ZWVuIDU1NTEgYW5kIDU2NSBtb2RlcyBpbiBpdHMKPiArCQkgKiBjb250cm9sIHJlZ2lzdGVy LiAgSXQgaXMgcG9zc2libGUgdG8gdXNlIDU2NSB3aXRoCj4gKwkJICogY3VzdG9tIGV4dGVybmFs IHdpcmluZy4KPiArCQkgKi8KPiArCQlpZiAoYW1iYV9wYXJ0KGZiLT5kZXYpID09IDB4MTEwIHx8 Cj4gKwkJICAgIHZhci0+Z3JlZW4ubGVuZ3RoID09IDUpCj4gKwkJCXZhbCB8PSBDTlRMX0xDREJQ UDE2Owo+ICsJCWVsc2UgaWYgKHZhci0+Z3JlZW4ubGVuZ3RoID09IDYpCj4gKwkJCXZhbCB8PSBD TlRMX0xDREJQUDE2XzU2NTsKPiArCQllbHNlCj4gKwkJCXZhbCB8PSBDTlRMX0xDREJQUDE2XzQ0 NDsKPiArCQlicmVhazsKPiArCWNhc2UgMzI6Cj4gKwkJdmFsIHw9IENOVExfTENEQlBQMjQ7Cj4g KwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmVncy0+Y250bCA9IHZhbDsKPiArCXJlZ3MtPnBpeGNs b2NrID0gdmFyLT5waXhjbG9jazsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgY2xjZGZi X2NoZWNrKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIp Cj4gK3sKPiArCXZhci0+eHJlc192aXJ0dWFsID0gdmFyLT54cmVzID0gKHZhci0+eHJlcyArIDE1 KSAmIH4xNTsKPiArCXZhci0+eXJlc192aXJ0dWFsID0gdmFyLT55cmVzID0gKHZhci0+eXJlcyAr IDEpICYgfjE7Cj4gKwo+ICsjZGVmaW5lIENIRUNLKGUsbCxoKSAodmFyLT5lIDwgbCB8fCB2YXIt PmUgPiBoKQo+ICsJaWYgKENIRUNLKHJpZ2h0X21hcmdpbiwgKDUrMSksIDI1NikgfHwJLyogYmFj ayBwb3JjaCAqLwo+ICsJICAgIENIRUNLKGxlZnRfbWFyZ2luLCAoNSsxKSwgMjU2KSB8fAkvKiBm cm9udCBwb3JjaCAqLwo+ICsJICAgIENIRUNLKGhzeW5jX2xlbiwgKDUrMSksIDI1NikgfHwKPiAr CSAgICB2YXItPnhyZXMgPiA0MDk2IHx8Cj4gKwkgICAgdmFyLT5sb3dlcl9tYXJnaW4gPiAyNTUg fHwJCS8qIGJhY2sgcG9yY2ggKi8KPiArCSAgICB2YXItPnVwcGVyX21hcmdpbiA+IDI1NSB8fAkJ LyogZnJvbnQgcG9yY2ggKi8KPiArCSAgICB2YXItPnZzeW5jX2xlbiA+IDMyIHx8Cj4gKwkgICAg dmFyLT55cmVzID4gMTAyNCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArI3VuZGVmIENIRUNLCj4g Kwo+ICsJLyogc2luZ2xlIHBhbmVsIG1vZGU6IFBDRCA9IG1heChQQ0QsIDEpICovCj4gKwkvKiBk dWFsIHBhbmVsIG1vZGU6IFBDRCA9IG1heChQQ0QsIDUpICovCj4gKwo+ICsJLyoKPiArCSAqIFlv dSBjYW4ndCBjaGFuZ2UgdGhlIGdyYXlzY2FsZSBzZXR0aW5nLCBhbmQKPiArCSAqIHdlIGNhbiBv bmx5IGRvIG5vbi1pbnRlcmxhY2VkIHZpZGVvLgo+ICsJICovCj4gKwlpZiAodmFyLT5ncmF5c2Nh bGUgIT0gZmItPmZiLnZhci5ncmF5c2NhbGUgfHwKPiArCSAgICAodmFyLT52bW9kZSAmIEZCX1ZN T0RFX01BU0spICE9IEZCX1ZNT0RFX05PTklOVEVSTEFDRUQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICsjZGVmaW5lIENIRUNLKGUpICh2YXItPmUgIT0gZmItPmZiLnZhci5lKQo+ICsJaWYg KGZiLT5wYW5lbC0+Zml4ZWR0aW1pbmdzICYmCj4gKwkgICAgKENIRUNLKHhyZXMpCQl8fAo+ICsJ ICAgICBDSEVDSyh5cmVzKQkJfHwKPiArCSAgICAgQ0hFQ0soYml0c19wZXJfcGl4ZWwpCXx8Cj4g KwkgICAgIENIRUNLKHBpeGNsb2NrKQkJfHwKPiArCSAgICAgQ0hFQ0sobGVmdF9tYXJnaW4pCQl8 fAo+ICsJICAgICBDSEVDSyhyaWdodF9tYXJnaW4pCXx8Cj4gKwkgICAgIENIRUNLKHVwcGVyX21h cmdpbikJfHwKPiArCSAgICAgQ0hFQ0sobG93ZXJfbWFyZ2luKQl8fAo+ICsJICAgICBDSEVDSyho c3luY19sZW4pCQl8fAo+ICsJICAgICBDSEVDSyh2c3luY19sZW4pCQl8fAo+ICsJICAgICBDSEVD SyhzeW5jKSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKyN1bmRlZiBDSEVDSwo+ICsKPiArCXZh ci0+bm9uc3RkID0gMDsKPiArCXZhci0+YWNjZWxfZmxhZ3MgPSAwOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo=