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=-5.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,URIBL_DBL_ABUSE_MALW, USER_AGENT_SANE_2 autolearn=ham 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 A37ADC2D0DB for ; Mon, 27 Jan 2020 15:52:14 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 732E024658 for ; Mon, 27 Jan 2020 15:52:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="F4Ga1Mdl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 732E024658 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=iJAohbfk2XCicBcJidX1bl1p4JTywbjDw/Zgc63o2sk=; b=F4Ga1MdlHuT4vE 7l/rYo71EXogsEx1Aze4xIvdNdZB4tzmhuDrsGcudfhc4u8L5uoE1loAtmmrIa9HqtWEmoFgbhSi1 da8tVJHz1wuInN5cGo/04KhHPJPJm1pteUb1wpkm/HVpff7NYEnFql7174mbleqwq2Y+13PS711wE NiGfA0QJ7dpyC1q2ZQLns9G3VaWFSvmgQm2wUBd75grRY1kjvBYZEzRyESa8SD9PqUeWy1N5zjyCO LIo8eH/2bRh84TnNv2oddiLJVavwC3FVNEmLVypTykddzjEiP2aD47d8eX1AxJSzrbNIPGGOGB0je x/5qwOtSumHQJESQDglA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iw6gD-0002CT-8q; Mon, 27 Jan 2020 15:52:01 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iw6g8-0002Bg-Rw for linux-mtd@lists.infradead.org; Mon, 27 Jan 2020 15:51:59 +0000 X-Originating-IP: 90.76.211.102 Received: from xps13 (lfbn-tou-1-1151-102.w90-76.abo.wanadoo.fr [90.76.211.102]) (Authenticated sender: miquel.raynal@bootlin.com) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 9DD5B1C0007; Mon, 27 Jan 2020 15:51:49 +0000 (UTC) Date: Mon, 27 Jan 2020 16:51:48 +0100 From: Miquel Raynal To: Yoshio Furuyama Subject: Re: [PATCH] mtd: nand: Rename Toshiba Memory to Kioxia Message-ID: <20200127165148.1f8ef0f7@xps13> In-Reply-To: <1579766643-4983-1-git-send-email-ytc-mb-yfuruyama7@kioxia.com> References: <1579766643-4983-1-git-send-email-ytc-mb-yfuruyama7@kioxia.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200127_075157_182429_445F718A X-CRM114-Status: GOOD ( 25.91 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Weinberger , Boris Brezillon , linux-mtd@lists.infradead.org, vigneshr@ti.com, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgWW9zaGlvLAoKWW9zaGlvIEZ1cnV5YW1hIDx5dGMtbWIteWZ1cnV5YW1hN0BraW94aWEuY29t PiB3cm90ZSBvbiBUaHUsIDIzIEphbgoyMDIwIDE3OjA0OjAzICswOTAwOgoKPiBSZW5hbWUgVG9z aGliYSBNZW1vcnkgdG8gS2lveGlhIHNpbmNlIHRoZSBjb21wYW55IG5hbWUgaGFzIGNoYW5nZWQu CgpJIHdvbmRlciBob3cgbXVjaCB0aGlzIGlzIGEgbm9pc3kgY2hhbmdlIGNvbXBhcmVkIHRvIGl0 cyBiZW5lZml0cwoKSSB3b3VsZCBsaWtlIG1vcmUgZmVlZGJhY2suIFJpY2hhcmQsIEJvcmlzLCBp cyB0aGlzIHRoZSBmaXJzdCBuYW1lIHdlCnJ1biBpbnRvIHRoaXMgc2l0dWF0aW9uPyBIbyB3YXMg dGhpcyBoYW5kbGVkIGluIHRoZSBwYXN0PwoKClRoYW5rcywKTWlxdcOobAoKCj4gCj4gU2lnbmVk LW9mZi1ieTogWW9zaGlvIEZ1cnV5YW1hIDx5dGMtbWIteWZ1cnV5YW1hN0BraW94aWEuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9NYWtlZmlsZSAgICAgICB8ICAgMiArLQo+ICBk cml2ZXJzL210ZC9uYW5kL3Jhdy9pbnRlcm5hbHMuaCAgICB8ICAgNCArLQo+ICBkcml2ZXJzL210 ZC9uYW5kL3Jhdy9uYW5kX2lkcy5jICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jh dy9uYW5kX2tpb3hpYS5jICB8IDE1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg ZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF90b3NoaWJhLmMgfCAxNTkgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvc3BpL01ha2VmaWxlICAgICAgIHwg ICAyICstCj4gIGRyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYyAgICAgICAgIHwgICAyICstCj4g IGRyaXZlcnMvbXRkL25hbmQvc3BpL2tpb3hpYS5jICAgICAgIHwgMTg4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL210ZC9uYW5kL3NwaS90b3NoaWJhLmMg ICAgICB8IDE4OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgaW5jbHVk ZS9saW51eC9tdGQvc3BpbmFuZC5oICAgICAgICAgfCAgIDIgKy0KPiAgMTAgZmlsZXMgY2hhbmdl ZCwgMzU0IGluc2VydGlvbnMoKyksIDM1NCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfa2lveGlhLmMKPiAgZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfdG9zaGliYS5jCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL210ZC9uYW5kL3NwaS9raW94aWEuYwo+ICBkZWxldGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tdGQvbmFuZC9zcGkvdG9zaGliYS5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bXRkL25hbmQvcmF3L01ha2VmaWxlIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvTWFrZWZpbGUKPiBp bmRleCAyZDEzNmIxLi5lN2ViM2I1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3 L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvTWFrZWZpbGUKPiBAQCAtNjgs NCArNjgsNCBAQCBuYW5kLW9ianMgKz0gbmFuZF9oeW5peC5vCj4gIG5hbmQtb2JqcyArPSBuYW5k X21hY3Jvbml4Lm8KPiAgbmFuZC1vYmpzICs9IG5hbmRfbWljcm9uLm8KPiAgbmFuZC1vYmpzICs9 IG5hbmRfc2Ftc3VuZy5vCj4gLW5hbmQtb2JqcyArPSBuYW5kX3Rvc2hpYmEubwo+ICtuYW5kLW9i anMgKz0gbmFuZF9raW94aWEubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9p bnRlcm5hbHMuaCBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L2ludGVybmFscy5oCj4gaW5kZXggY2Jh NmZlNy4uMjUwNTRmZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbnRlcm5h bHMuaAo+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L2ludGVybmFscy5oCj4gQEAgLTMwLDcg KzMwLDcgQEAKPiAgI2RlZmluZSBOQU5EX01GUl9TQU1TVU5HCTB4ZWMKPiAgI2RlZmluZSBOQU5E X01GUl9TQU5ESVNLCTB4NDUKPiAgI2RlZmluZSBOQU5EX01GUl9TVE1JQ1JPCTB4MjAKPiAtI2Rl ZmluZSBOQU5EX01GUl9UT1NISUJBCTB4OTgKPiArI2RlZmluZSBOQU5EX01GUl9LSU9YSUEJCTB4 OTgKPiAgI2RlZmluZSBOQU5EX01GUl9XSU5CT05ECTB4ZWYKPiAgCj4gIC8qKgo+IEBAIC03Miw3 ICs3Miw3IEBAIHN0cnVjdCBuYW5kX21hbnVmYWN0dXJlciB7Cj4gIGV4dGVybiBjb25zdCBzdHJ1 Y3QgbmFuZF9tYW51ZmFjdHVyZXJfb3BzIG1hY3Jvbml4X25hbmRfbWFudWZfb3BzOwo+ICBleHRl cm4gY29uc3Qgc3RydWN0IG5hbmRfbWFudWZhY3R1cmVyX29wcyBtaWNyb25fbmFuZF9tYW51Zl9v cHM7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmFuZF9tYW51ZmFjdHVyZXJfb3BzIHNhbXN1bmdf bmFuZF9tYW51Zl9vcHM7Cj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmFuZF9tYW51ZmFjdHVyZXJf b3BzIHRvc2hpYmFfbmFuZF9tYW51Zl9vcHM7Cj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgbmFuZF9t YW51ZmFjdHVyZXJfb3BzIGtpb3hpYV9uYW5kX21hbnVmX29wczsKPiAgCj4gIC8qIENvcmUgZnVu Y3Rpb25zICovCj4gIGNvbnN0IHN0cnVjdCBuYW5kX21hbnVmYWN0dXJlciAqbmFuZF9nZXRfbWFu dWZhY3R1cmVyKHU4IGlkKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFu ZF9pZHMuYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfaWRzLmMKPiBpbmRleCBiYTI3OTAy Li4yNGM4YmIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfaWRzLmMK PiArKysgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2lkcy5jCj4gQEAgLTE4MSw3ICsxODEs NyBAQCBzdHJ1Y3QgbmFuZF9mbGFzaF9kZXYgbmFuZF9mbGFzaF9pZHNbXSA9IHsKPiAgCXtOQU5E X01GUl9TQU1TVU5HLCAiU2Ftc3VuZyIsICZzYW1zdW5nX25hbmRfbWFudWZfb3BzfSwKPiAgCXtO QU5EX01GUl9TQU5ESVNLLCAiU2FuRGlzayJ9LAo+ICAJe05BTkRfTUZSX1NUTUlDUk8sICJTVCBN aWNybyJ9LAo+IC0Je05BTkRfTUZSX1RPU0hJQkEsICJUb3NoaWJhIiwgJnRvc2hpYmFfbmFuZF9t YW51Zl9vcHN9LAo+ICsJe05BTkRfTUZSX0tJT1hJQSwgIktpb3hpYSIsICZraW94aWFfbmFuZF9t YW51Zl9vcHN9LAo+ICAJe05BTkRfTUZSX1dJTkJPTkQsICJXaW5ib25kIn0sCj4gIH07Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2tpb3hpYS5jIGIvZHJpdmVy cy9tdGQvbmFuZC9yYXcvbmFuZF9raW94aWEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uYWU4NWU3MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL210ZC9u YW5kL3Jhdy9uYW5kX2tpb3hpYS5jCj4gQEAgLTAsMCArMSwxNTkgQEAKPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPiArLyoKPiArICogQ29weXJpZ2h0IChD KSAyMDE3IEZyZWUgRWxlY3Ryb25zCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNyBOZXh0VGhpbmcg Q28KPiArICoKPiArICogQXV0aG9yOiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBm cmVlLWVsZWN0cm9ucy5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImludGVybmFscy5oIgo+ ICsKPiArLyogQml0IGZvciBkZXRlY3RpbmcgQkVOQU5EICovCj4gKyNkZWZpbmUgS0lPWElBX05B TkRfSUQ0X0lTX0JFTkFORAkJQklUKDcpCj4gKwo+ICsvKiBSZWNvbW1lbmRlZCB0byByZXdyaXRl IGZvciBCRU5BTkQgKi8KPiArI2RlZmluZSBLSU9YSUFfTkFORF9TVEFUVVNfUkVXUklURV9SRUNP TU1FTkRFRAlCSVQoMykKPiArCj4gK3N0YXRpYyBpbnQga2lveGlhX25hbmRfYmVuYW5kX2VjY3N0 YXR1cyhzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10 ZCA9IG5hbmRfdG9fbXRkKGNoaXApOwo+ICsJaW50IHJldDsKPiArCXVuc2lnbmVkIGludCBtYXhf Yml0ZmxpcHMgPSAwOwo+ICsJdTggc3RhdHVzOwo+ICsKPiArCS8qIENoZWNrIFN0YXR1cyAqLwo+ ICsJcmV0ID0gbmFuZF9zdGF0dXNfb3AoY2hpcCwgJnN0YXR1cyk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJaWYgKHN0YXR1cyAmIE5BTkRfU1RBVFVTX0ZBSUwpIHsKPiAr CQkvKiB1bmNvcnJlY3RlZCAqLwo+ICsJCW10ZC0+ZWNjX3N0YXRzLmZhaWxlZCsrOwo+ICsJfSBl bHNlIGlmIChzdGF0dXMgJiBLSU9YSUFfTkFORF9TVEFUVVNfUkVXUklURV9SRUNPTU1FTkRFRCkg ewo+ICsJCS8qIGNvcnJlY3RlZCAqLwo+ICsJCW1heF9iaXRmbGlwcyA9IG10ZC0+Yml0ZmxpcF90 aHJlc2hvbGQ7Cj4gKwkJbXRkLT5lY2Nfc3RhdHMuY29ycmVjdGVkICs9IG1heF9iaXRmbGlwczsK PiArCX0KPiArCj4gKwlyZXR1cm4gbWF4X2JpdGZsaXBzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 Cj4gK2tpb3hpYV9uYW5kX3JlYWRfcGFnZV9iZW5hbmQoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwg dWludDhfdCAqYnVmLAo+ICsJCQkgICAgIGludCBvb2JfcmVxdWlyZWQsIGludCBwYWdlKQo+ICt7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IG5hbmRfcmVhZF9wYWdlX3JhdyhjaGlwLCBidWYs IG9vYl9yZXF1aXJlZCwgcGFnZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICsJcmV0dXJuIGtpb3hpYV9uYW5kX2JlbmFuZF9lY2NzdGF0dXMoY2hpcCk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQKPiAra2lveGlhX25hbmRfcmVhZF9zdWJwYWdlX2JlbmFuZChzdHJ1Y3QgbmFu ZF9jaGlwICpjaGlwLCB1aW50MzJfdCBkYXRhX29mZnMsCj4gKwkJCQl1aW50MzJfdCByZWFkbGVu LCB1aW50OF90ICpidWZwb2ksIGludCBwYWdlKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJl dCA9IG5hbmRfcmVhZF9wYWdlX29wKGNoaXAsIHBhZ2UsIGRhdGFfb2ZmcywKPiArCQkJCWJ1ZnBv aSArIGRhdGFfb2ZmcywgcmVhZGxlbik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4g Kwo+ICsJcmV0dXJuIGtpb3hpYV9uYW5kX2JlbmFuZF9lY2NzdGF0dXMoY2hpcCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGtpb3hpYV9uYW5kX2JlbmFuZF9pbml0KHN0cnVjdCBuYW5kX2NoaXAg KmNoaXApCj4gK3sKPiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQoY2hpcCk7 Cj4gKwo+ICsJLyoKPiArCSAqIE9uIEJFTkFORCwgdGhlIGVudGlyZSBPT0IgcmVnaW9uIGNhbiBi ZSB1c2VkIGJ5IHRoZSBNVEQgdXNlci4KPiArCSAqIFRoZSBjYWxjdWxhdGVkIEVDQyBieXRlcyBh cmUgc3RvcmVkIGludG8gb3RoZXIgaXNvbGF0ZWQKPiArCSAqIGFyZWEgd2hpY2ggaXMgbm90IGFj Y2Vzc2libGUgdG8gdXNlcnMuCj4gKwkgKiBUaGlzIGlzIHdoeSBjaGlwLT5lY2MuYnl0ZXMgPSAw Lgo+ICsJICovCj4gKwljaGlwLT5lY2MuYnl0ZXMgPSAwOwo+ICsJY2hpcC0+ZWNjLnNpemUgPSA1 MTI7Cj4gKwljaGlwLT5lY2Muc3RyZW5ndGggPSA4Owo+ICsJY2hpcC0+ZWNjLnJlYWRfcGFnZSA9 IGtpb3hpYV9uYW5kX3JlYWRfcGFnZV9iZW5hbmQ7Cj4gKwljaGlwLT5lY2MucmVhZF9zdWJwYWdl ID0ga2lveGlhX25hbmRfcmVhZF9zdWJwYWdlX2JlbmFuZDsKPiArCWNoaXAtPmVjYy53cml0ZV9w YWdlID0gbmFuZF93cml0ZV9wYWdlX3JhdzsKPiArCWNoaXAtPmVjYy5yZWFkX3BhZ2VfcmF3ID0g bmFuZF9yZWFkX3BhZ2VfcmF3X25vdHN1cHA7Cj4gKwljaGlwLT5lY2Mud3JpdGVfcGFnZV9yYXcg PSBuYW5kX3dyaXRlX3BhZ2VfcmF3X25vdHN1cHA7Cj4gKwo+ICsJY2hpcC0+b3B0aW9ucyB8PSBO QU5EX1NVQlBBR0VfUkVBRDsKPiArCj4gKwltdGRfc2V0X29vYmxheW91dChtdGQsICZuYW5kX29v YmxheW91dF9scF9vcHMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBraW94aWFfbmFuZF9kZWNv ZGVfaWQoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkKPiArewo+ICsJc3RydWN0IG10ZF9pbmZvICpt dGQgPSBuYW5kX3RvX210ZChjaGlwKTsKPiArCXN0cnVjdCBuYW5kX21lbW9yeV9vcmdhbml6YXRp b24gKm1lbW9yZzsKPiArCj4gKwltZW1vcmcgPSBuYW5kZGV2X2dldF9tZW1vcmcoJmNoaXAtPmJh c2UpOwo+ICsKPiArCW5hbmRfZGVjb2RlX2V4dF9pZChjaGlwKTsKPiArCj4gKwkvKgo+ICsJICog VG9zaGliYSAyNG5tIHJhdyBTTEMgKGkuZS4sIG5vdCBCRU5BTkQpIGhhdmUgMzJCIE9PQiBwZXIK PiArCSAqIDUxMkIgcGFnZS4gRm9yIFRvc2hpYmEgU0xDLCB3ZSBkZWNvZGUgdGhlIDV0aC82dGgg Ynl0ZSBhcwo+ICsJICogZm9sbG93czoKPiArCSAqIC0gSUQgYnl0ZSA2LCBiaXRzWzI6MF06IDEw MGIgLT4gNDNubSwgMTAxYiAtPiAzMm5tLAo+ICsJICogICAgICAgICAgICAgICAgICAgICAgICAg MTEwYiAtPiAyNG5tCj4gKwkgKiAtIElEIGJ5dGUgNSwgYml0WzddOiAgICAxIC0+IEJFTkFORCwg MCAtPiByYXcgU0xDCj4gKwkgKi8KPiArCWlmIChjaGlwLT5pZC5sZW4gPj0gNiAmJiBuYW5kX2lz X3NsYyhjaGlwKSAmJgo+ICsJICAgIChjaGlwLT5pZC5kYXRhWzVdICYgMHg3KSA9PSAweDYgLyog MjRubSAqLyAmJgo+ICsJICAgICEoY2hpcC0+aWQuZGF0YVs0XSAmIDB4ODApIC8qICFCRU5BTkQg Ki8pIHsKPiArCQltZW1vcmctPm9vYnNpemUgPSAzMiAqIG1lbW9yZy0+cGFnZXNpemUgPj4gOTsK PiArCQltdGQtPm9vYnNpemUgPSBtZW1vcmctPm9vYnNpemU7Cj4gKwl9Cj4gKwo+ICsJLyoKPiAr CSAqIEV4dHJhY3QgRUNDIHJlcXVpcmVtZW50cyBmcm9tIDZ0aCBpZCBieXRlLgo+ICsJICogRm9y IFRvc2hpYmEgU0xDLCBlY2MgcmVxdXJlbWVudHMgYXJlIGFzIGZvbGxvd3M6Cj4gKwkgKiAgLSA0 M25tOiAxIGJpdCBFQ0MgZm9yIGVhY2ggNTEyQnl0ZSBpcyByZXF1aXJlZC4KPiArCSAqICAtIDMy bm06IDQgYml0IEVDQyBmb3IgZWFjaCA1MTJCeXRlIGlzIHJlcXVpcmVkLgo+ICsJICogIC0gMjRu bTogOCBiaXQgRUNDIGZvciBlYWNoIDUxMkJ5dGUgaXMgcmVxdWlyZWQuCj4gKwkgKi8KPiArCWlm IChjaGlwLT5pZC5sZW4gPj0gNiAmJiBuYW5kX2lzX3NsYyhjaGlwKSkgewo+ICsJCWNoaXAtPmJh c2UuZWNjcmVxLnN0ZXBfc2l6ZSA9IDUxMjsKPiArCQlzd2l0Y2ggKGNoaXAtPmlkLmRhdGFbNV0g JiAweDcpIHsKPiArCQljYXNlIDB4NDoKPiArCQkJY2hpcC0+YmFzZS5lY2NyZXEuc3RyZW5ndGgg PSAxOwo+ICsJCQlicmVhazsKPiArCQljYXNlIDB4NToKPiArCQkJY2hpcC0+YmFzZS5lY2NyZXEu c3RyZW5ndGggPSA0Owo+ICsJCQlicmVhazsKPiArCQljYXNlIDB4NjoKPiArCQkJY2hpcC0+YmFz ZS5lY2NyZXEuc3RyZW5ndGggPSA4Owo+ICsJCQlicmVhazsKPiArCQlkZWZhdWx0Ogo+ICsJCQlX QVJOKDEsICJDb3VsZCBub3QgZ2V0IEVDQyBpbmZvIik7Cj4gKwkJCWNoaXAtPmJhc2UuZWNjcmVx LnN0ZXBfc2l6ZSA9IDA7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3Rh dGljIGludCBraW94aWFfbmFuZF9pbml0KHN0cnVjdCBuYW5kX2NoaXAgKmNoaXApCj4gK3sKPiAr CWlmIChuYW5kX2lzX3NsYyhjaGlwKSkKPiArCQljaGlwLT5vcHRpb25zIHw9IE5BTkRfQkJNX0ZJ UlNUUEFHRSB8IE5BTkRfQkJNX1NFQ09ORFBBR0U7Cj4gKwo+ICsJLyogQ2hlY2sgdGhhdCBjaGlw IGlzIEJFTkFORCBhbmQgRUNDIG1vZGUgaXMgb24tZGllICovCj4gKwlpZiAobmFuZF9pc19zbGMo Y2hpcCkgJiYgY2hpcC0+ZWNjLm1vZGUgPT0gTkFORF9FQ0NfT05fRElFICYmCj4gKwkgICAgY2hp cC0+aWQuZGF0YVs0XSAmIEtJT1hJQV9OQU5EX0lENF9JU19CRU5BTkQpCj4gKwkJa2lveGlhX25h bmRfYmVuYW5kX2luaXQoY2hpcCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2NvbnN0 IHN0cnVjdCBuYW5kX21hbnVmYWN0dXJlcl9vcHMga2lveGlhX25hbmRfbWFudWZfb3BzID0gewo+ ICsJLmRldGVjdCA9IGtpb3hpYV9uYW5kX2RlY29kZV9pZCwKPiArCS5pbml0ID0ga2lveGlhX25h bmRfaW5pdCwKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF90 b3NoaWJhLmMgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX3Rvc2hpYmEuYwo+IGRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDljMDNmYmIuLjAwMDAwMDAKPiAtLS0gYS9kcml2ZXJz L210ZC9uYW5kL3Jhdy9uYW5kX3Rvc2hpYmEuYwo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwxNTkg KzAsMCBAQAo+IC0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgo+ IC0vKgo+IC0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBFbGVjdHJvbnMKPiAtICogQ29weXJp Z2h0IChDKSAyMDE3IE5leHRUaGluZyBDbwo+IC0gKgo+IC0gKiBBdXRob3I6IEJvcmlzIEJyZXpp bGxvbiA8Ym9yaXMuYnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4KPiAtICovCj4gLQo+IC0j aW5jbHVkZSAiaW50ZXJuYWxzLmgiCj4gLQo+IC0vKiBCaXQgZm9yIGRldGVjdGluZyBCRU5BTkQg Ki8KPiAtI2RlZmluZSBUT1NISUJBX05BTkRfSUQ0X0lTX0JFTkFORAkJQklUKDcpCj4gLQo+IC0v KiBSZWNvbW1lbmRlZCB0byByZXdyaXRlIGZvciBCRU5BTkQgKi8KPiAtI2RlZmluZSBUT1NISUJB X05BTkRfU1RBVFVTX1JFV1JJVEVfUkVDT01NRU5ERUQJQklUKDMpCj4gLQo+IC1zdGF0aWMgaW50 IHRvc2hpYmFfbmFuZF9iZW5hbmRfZWNjc3RhdHVzKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXApCj4g LXsKPiAtCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQoY2hpcCk7Cj4gLQlpbnQg cmV0Owo+IC0JdW5zaWduZWQgaW50IG1heF9iaXRmbGlwcyA9IDA7Cj4gLQl1OCBzdGF0dXM7Cj4g LQo+IC0JLyogQ2hlY2sgU3RhdHVzICovCj4gLQlyZXQgPSBuYW5kX3N0YXR1c19vcChjaGlwLCAm c3RhdHVzKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlpZiAoc3RhdHVz ICYgTkFORF9TVEFUVVNfRkFJTCkgewo+IC0JCS8qIHVuY29ycmVjdGVkICovCj4gLQkJbXRkLT5l Y2Nfc3RhdHMuZmFpbGVkKys7Cj4gLQl9IGVsc2UgaWYgKHN0YXR1cyAmIFRPU0hJQkFfTkFORF9T VEFUVVNfUkVXUklURV9SRUNPTU1FTkRFRCkgewo+IC0JCS8qIGNvcnJlY3RlZCAqLwo+IC0JCW1h eF9iaXRmbGlwcyA9IG10ZC0+Yml0ZmxpcF90aHJlc2hvbGQ7Cj4gLQkJbXRkLT5lY2Nfc3RhdHMu Y29ycmVjdGVkICs9IG1heF9iaXRmbGlwczsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gbWF4X2JpdGZs aXBzOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50Cj4gLXRvc2hpYmFfbmFuZF9yZWFkX3BhZ2VfYmVu YW5kKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIHVpbnQ4X3QgKmJ1ZiwKPiAtCQkJICAgICAgaW50 IG9vYl9yZXF1aXJlZCwgaW50IHBhZ2UpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQo+IC0JcmV0ID0g bmFuZF9yZWFkX3BhZ2VfcmF3KGNoaXAsIGJ1Ziwgb29iX3JlcXVpcmVkLCBwYWdlKTsKPiAtCWlm IChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlyZXR1cm4gdG9zaGliYV9uYW5kX2JlbmFu ZF9lY2NzdGF0dXMoY2hpcCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQKPiAtdG9zaGliYV9uYW5k X3JlYWRfc3VicGFnZV9iZW5hbmQoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwgdWludDMyX3QgZGF0 YV9vZmZzLAo+IC0JCQkJIHVpbnQzMl90IHJlYWRsZW4sIHVpbnQ4X3QgKmJ1ZnBvaSwgaW50IHBh Z2UpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQo+IC0JcmV0ID0gbmFuZF9yZWFkX3BhZ2Vfb3AoY2hp cCwgcGFnZSwgZGF0YV9vZmZzLAo+IC0JCQkJYnVmcG9pICsgZGF0YV9vZmZzLCByZWFkbGVuKTsK PiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlyZXR1cm4gdG9zaGliYV9uYW5k X2JlbmFuZF9lY2NzdGF0dXMoY2hpcCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHRvc2hpYmFf bmFuZF9iZW5hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwKQo+IC17Cj4gLQlzdHJ1Y3Qg bXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKGNoaXApOwo+IC0KPiAtCS8qCj4gLQkgKiBPbiBC RU5BTkQsIHRoZSBlbnRpcmUgT09CIHJlZ2lvbiBjYW4gYmUgdXNlZCBieSB0aGUgTVREIHVzZXIu Cj4gLQkgKiBUaGUgY2FsY3VsYXRlZCBFQ0MgYnl0ZXMgYXJlIHN0b3JlZCBpbnRvIG90aGVyIGlz b2xhdGVkCj4gLQkgKiBhcmVhIHdoaWNoIGlzIG5vdCBhY2Nlc3NpYmxlIHRvIHVzZXJzLgo+IC0J ICogVGhpcyBpcyB3aHkgY2hpcC0+ZWNjLmJ5dGVzID0gMC4KPiAtCSAqLwo+IC0JY2hpcC0+ZWNj LmJ5dGVzID0gMDsKPiAtCWNoaXAtPmVjYy5zaXplID0gNTEyOwo+IC0JY2hpcC0+ZWNjLnN0cmVu Z3RoID0gODsKPiAtCWNoaXAtPmVjYy5yZWFkX3BhZ2UgPSB0b3NoaWJhX25hbmRfcmVhZF9wYWdl X2JlbmFuZDsKPiAtCWNoaXAtPmVjYy5yZWFkX3N1YnBhZ2UgPSB0b3NoaWJhX25hbmRfcmVhZF9z dWJwYWdlX2JlbmFuZDsKPiAtCWNoaXAtPmVjYy53cml0ZV9wYWdlID0gbmFuZF93cml0ZV9wYWdl X3JhdzsKPiAtCWNoaXAtPmVjYy5yZWFkX3BhZ2VfcmF3ID0gbmFuZF9yZWFkX3BhZ2VfcmF3X25v dHN1cHA7Cj4gLQljaGlwLT5lY2Mud3JpdGVfcGFnZV9yYXcgPSBuYW5kX3dyaXRlX3BhZ2VfcmF3 X25vdHN1cHA7Cj4gLQo+IC0JY2hpcC0+b3B0aW9ucyB8PSBOQU5EX1NVQlBBR0VfUkVBRDsKPiAt Cj4gLQltdGRfc2V0X29vYmxheW91dChtdGQsICZuYW5kX29vYmxheW91dF9scF9vcHMpOwo+IC19 Cj4gLQo+IC1zdGF0aWMgdm9pZCB0b3NoaWJhX25hbmRfZGVjb2RlX2lkKHN0cnVjdCBuYW5kX2No aXAgKmNoaXApCj4gLXsKPiAtCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQoY2hp cCk7Cj4gLQlzdHJ1Y3QgbmFuZF9tZW1vcnlfb3JnYW5pemF0aW9uICptZW1vcmc7Cj4gLQo+IC0J bWVtb3JnID0gbmFuZGRldl9nZXRfbWVtb3JnKCZjaGlwLT5iYXNlKTsKPiAtCj4gLQluYW5kX2Rl Y29kZV9leHRfaWQoY2hpcCk7Cj4gLQo+IC0JLyoKPiAtCSAqIFRvc2hpYmEgMjRubSByYXcgU0xD IChpLmUuLCBub3QgQkVOQU5EKSBoYXZlIDMyQiBPT0IgcGVyCj4gLQkgKiA1MTJCIHBhZ2UuIEZv ciBUb3NoaWJhIFNMQywgd2UgZGVjb2RlIHRoZSA1dGgvNnRoIGJ5dGUgYXMKPiAtCSAqIGZvbGxv d3M6Cj4gLQkgKiAtIElEIGJ5dGUgNiwgYml0c1syOjBdOiAxMDBiIC0+IDQzbm0sIDEwMWIgLT4g MzJubSwKPiAtCSAqICAgICAgICAgICAgICAgICAgICAgICAgIDExMGIgLT4gMjRubQo+IC0JICog LSBJRCBieXRlIDUsIGJpdFs3XTogICAgMSAtPiBCRU5BTkQsIDAgLT4gcmF3IFNMQwo+IC0JICov Cj4gLQlpZiAoY2hpcC0+aWQubGVuID49IDYgJiYgbmFuZF9pc19zbGMoY2hpcCkgJiYKPiAtCSAg ICAoY2hpcC0+aWQuZGF0YVs1XSAmIDB4NykgPT0gMHg2IC8qIDI0bm0gKi8gJiYKPiAtCSAgICAh KGNoaXAtPmlkLmRhdGFbNF0gJiAweDgwKSAvKiAhQkVOQU5EICovKSB7Cj4gLQkJbWVtb3JnLT5v b2JzaXplID0gMzIgKiBtZW1vcmctPnBhZ2VzaXplID4+IDk7Cj4gLQkJbXRkLT5vb2JzaXplID0g bWVtb3JnLT5vb2JzaXplOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBFeHRyYWN0IEVDQyByZXF1 aXJlbWVudHMgZnJvbSA2dGggaWQgYnl0ZS4KPiAtCSAqIEZvciBUb3NoaWJhIFNMQywgZWNjIHJl cXVyZW1lbnRzIGFyZSBhcyBmb2xsb3dzOgo+IC0JICogIC0gNDNubTogMSBiaXQgRUNDIGZvciBl YWNoIDUxMkJ5dGUgaXMgcmVxdWlyZWQuCj4gLQkgKiAgLSAzMm5tOiA0IGJpdCBFQ0MgZm9yIGVh Y2ggNTEyQnl0ZSBpcyByZXF1aXJlZC4KPiAtCSAqICAtIDI0bm06IDggYml0IEVDQyBmb3IgZWFj aCA1MTJCeXRlIGlzIHJlcXVpcmVkLgo+IC0JICovCj4gLQlpZiAoY2hpcC0+aWQubGVuID49IDYg JiYgbmFuZF9pc19zbGMoY2hpcCkpIHsKPiAtCQljaGlwLT5iYXNlLmVjY3JlcS5zdGVwX3NpemUg PSA1MTI7Cj4gLQkJc3dpdGNoIChjaGlwLT5pZC5kYXRhWzVdICYgMHg3KSB7Cj4gLQkJY2FzZSAw eDQ6Cj4gLQkJCWNoaXAtPmJhc2UuZWNjcmVxLnN0cmVuZ3RoID0gMTsKPiAtCQkJYnJlYWs7Cj4g LQkJY2FzZSAweDU6Cj4gLQkJCWNoaXAtPmJhc2UuZWNjcmVxLnN0cmVuZ3RoID0gNDsKPiAtCQkJ YnJlYWs7Cj4gLQkJY2FzZSAweDY6Cj4gLQkJCWNoaXAtPmJhc2UuZWNjcmVxLnN0cmVuZ3RoID0g ODsKPiAtCQkJYnJlYWs7Cj4gLQkJZGVmYXVsdDoKPiAtCQkJV0FSTigxLCAiQ291bGQgbm90IGdl dCBFQ0MgaW5mbyIpOwo+IC0JCQljaGlwLT5iYXNlLmVjY3JlcS5zdGVwX3NpemUgPSAwOwo+IC0J CQlicmVhazsKPiAtCQl9Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgdG9zaGliYV9uYW5k X2luaXQoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkKPiAtewo+IC0JaWYgKG5hbmRfaXNfc2xjKGNo aXApKQo+IC0JCWNoaXAtPm9wdGlvbnMgfD0gTkFORF9CQk1fRklSU1RQQUdFIHwgTkFORF9CQk1f U0VDT05EUEFHRTsKPiAtCj4gLQkvKiBDaGVjayB0aGF0IGNoaXAgaXMgQkVOQU5EIGFuZCBFQ0Mg bW9kZSBpcyBvbi1kaWUgKi8KPiAtCWlmIChuYW5kX2lzX3NsYyhjaGlwKSAmJiBjaGlwLT5lY2Mu bW9kZSA9PSBOQU5EX0VDQ19PTl9ESUUgJiYKPiAtCSAgICBjaGlwLT5pZC5kYXRhWzRdICYgVE9T SElCQV9OQU5EX0lENF9JU19CRU5BTkQpCj4gLQkJdG9zaGliYV9uYW5kX2JlbmFuZF9pbml0KGNo aXApOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1jb25zdCBzdHJ1Y3QgbmFuZF9tYW51 ZmFjdHVyZXJfb3BzIHRvc2hpYmFfbmFuZF9tYW51Zl9vcHMgPSB7Cj4gLQkuZGV0ZWN0ID0gdG9z aGliYV9uYW5kX2RlY29kZV9pZCwKPiAtCS5pbml0ID0gdG9zaGliYV9uYW5kX2luaXQsCj4gLX07 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL01ha2VmaWxlIGIvZHJpdmVycy9t dGQvbmFuZC9zcGkvTWFrZWZpbGUKPiBpbmRleCA5NjYyYjljLi44MjBjODNmIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9tdGQvbmFu ZC9zcGkvTWFrZWZpbGUKPiBAQCAtMSwzICsxLDMgQEAKPiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMAo+IC1zcGluYW5kLW9ianMgOj0gY29yZS5vIGdpZ2FkZXZpY2UubyBtYWNy b25peC5vIG1pY3Jvbi5vIHBhcmFnb24ubyB0b3NoaWJhLm8gd2luYm9uZC5vCj4gK3NwaW5hbmQt b2JqcyA6PSBjb3JlLm8gZ2lnYWRldmljZS5vIG1hY3Jvbml4Lm8gbWljcm9uLm8gcGFyYWdvbi5v IGtpb3hpYS5vIHdpbmJvbmQubwo+ICBvYmotJChDT05GSUdfTVREX1NQSV9OQU5EKSArPSBzcGlu YW5kLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jIGIvZHJpdmVy cy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gaW5kZXggODlmNmJlZS4uNWM4MGVlNyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL210ZC9uYW5kL3NwaS9jb3JlLmMKPiArKysgYi9kcml2ZXJzL210ZC9uYW5k L3NwaS9jb3JlLmMKPiBAQCAtNzU4LDcgKzc1OCw3IEBAIHN0YXRpYyBpbnQgc3BpbmFuZF9jcmVh dGVfZGlybWFwcyhzdHJ1Y3Qgc3BpbmFuZF9kZXZpY2UgKnNwaW5hbmQpCj4gIAkmbWFjcm9uaXhf c3BpbmFuZF9tYW51ZmFjdHVyZXIsCj4gIAkmbWljcm9uX3NwaW5hbmRfbWFudWZhY3R1cmVyLAo+ ICAJJnBhcmFnb25fc3BpbmFuZF9tYW51ZmFjdHVyZXIsCj4gLQkmdG9zaGliYV9zcGluYW5kX21h bnVmYWN0dXJlciwKPiArCSZraW94aWFfc3BpbmFuZF9tYW51ZmFjdHVyZXIsCj4gIAkmd2luYm9u ZF9zcGluYW5kX21hbnVmYWN0dXJlciwKPiAgfTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bXRkL25hbmQvc3BpL2tpb3hpYS5jIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkva2lveGlhLmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjQ0ZmQ5YzMKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkva2lveGlhLmMKPiBAQCAtMCwwICsxLDE4 OCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMTggZXhjZWV0IGVsZWN0cm9uaWNzIEdtYkgKPiArICogQ29weXJpZ2h0 IChjKSAyMDE4IEtvbnRyb24gRWxlY3Ryb25pY3MgR21iSAo+ICsgKgo+ICsgKiBBdXRob3I6IEZy aWVkZXIgU2NocmVtcGYgPGZyaWVkZXIuc2NocmVtcGZAa29udHJvbi5kZT4KPiArICovCj4gKwo+ ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K PiArI2luY2x1ZGUgPGxpbnV4L210ZC9zcGluYW5kLmg+Cj4gKwo+ICsjZGVmaW5lIFNQSU5BTkRf TUZSX0tJT1hJQQkJCTB4OTgKPiArI2RlZmluZSBLSU9YSUFfU1RBVFVTX0VDQ19IQVNfQklURkxJ UFNfVAkoMyA8PCA0KQo+ICsKPiArc3RhdGljIFNQSU5BTkRfT1BfVkFSSUFOVFMocmVhZF9jYWNo ZV92YXJpYW50cywKPiArCQlTUElOQU5EX1BBR0VfUkVBRF9GUk9NX0NBQ0hFX1g0X09QKDAsIDEs IE5VTEwsIDApLAo+ICsJCVNQSU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfWDJfT1AoMCwgMSwg TlVMTCwgMCksCj4gKwkJU1BJTkFORF9QQUdFX1JFQURfRlJPTV9DQUNIRV9PUCh0cnVlLCAwLCAx LCBOVUxMLCAwKSwKPiArCQlTUElOQU5EX1BBR0VfUkVBRF9GUk9NX0NBQ0hFX09QKGZhbHNlLCAw LCAxLCBOVUxMLCAwKSk7Cj4gKwo+ICtzdGF0aWMgU1BJTkFORF9PUF9WQVJJQU5UUyh3cml0ZV9j YWNoZV92YXJpYW50cywKPiArCQlTUElOQU5EX1BST0dfTE9BRCh0cnVlLCAwLCBOVUxMLCAwKSk7 Cj4gKwo+ICtzdGF0aWMgU1BJTkFORF9PUF9WQVJJQU5UUyh1cGRhdGVfY2FjaGVfdmFyaWFudHMs Cj4gKwkJU1BJTkFORF9QUk9HX0xPQUQoZmFsc2UsIDAsIE5VTEwsIDApKTsKPiArCj4gK3N0YXRp YyBpbnQgdGM1OGN4Z3hzeF9vb2JsYXlvdXRfZWNjKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQg c2VjdGlvbiwKPiArCQkJCSAgICBzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKnJlZ2lvbikKPiArewo+ ICsJaWYgKHNlY3Rpb24gPiAwKQo+ICsJCXJldHVybiAtRVJBTkdFOwo+ICsKPiArCXJlZ2lvbi0+ b2Zmc2V0ID0gbXRkLT5vb2JzaXplIC8gMjsKPiArCXJlZ2lvbi0+bGVuZ3RoID0gbXRkLT5vb2Jz aXplIC8gMjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0YzU4Y3hn eHN4X29vYmxheW91dF9mcmVlKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwKPiAr CQkJCSAgICAgc3RydWN0IG10ZF9vb2JfcmVnaW9uICpyZWdpb24pCj4gK3sKPiArCWlmIChzZWN0 aW9uID4gMCkKPiArCQlyZXR1cm4gLUVSQU5HRTsKPiArCj4gKwkvKiAyIGJ5dGVzIHJlc2VydmVk IGZvciBCQk0gKi8KPiArCXJlZ2lvbi0+b2Zmc2V0ID0gMjsKPiArCXJlZ2lvbi0+bGVuZ3RoID0g KG10ZC0+b29ic2l6ZSAvIDIpIC0gMjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBtdGRfb29ibGF5b3V0X29wcyB0YzU4Y3hneHN4X29vYmxheW91dCA9 IHsKPiArCS5lY2MgPSB0YzU4Y3hneHN4X29vYmxheW91dF9lY2MsCj4gKwkuZnJlZSA9IHRjNThj eGd4c3hfb29ibGF5b3V0X2ZyZWUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHRjNThjeGd4c3hf ZWNjX2dldF9zdGF0dXMoc3RydWN0IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kLAo+ICsJCQkJICAg ICB1OCBzdGF0dXMpCj4gK3sKPiArCXN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCA9IHNwaW5hbmRf dG9fbmFuZChzcGluYW5kKTsKPiArCXU4IG1iZiA9IDA7Cj4gKwlzdHJ1Y3Qgc3BpX21lbV9vcCBv cCA9IFNQSU5BTkRfR0VUX0ZFQVRVUkVfT1AoMHgzMCwgJm1iZik7Cj4gKwo+ICsJc3dpdGNoIChz dGF0dXMgJiBTVEFUVVNfRUNDX01BU0spIHsKPiArCWNhc2UgU1RBVFVTX0VDQ19OT19CSVRGTElQ UzoKPiArCQlyZXR1cm4gMDsKPiArCj4gKwljYXNlIFNUQVRVU19FQ0NfVU5DT1JfRVJST1I6Cj4g KwkJcmV0dXJuIC1FQkFETVNHOwo+ICsKPiArCWNhc2UgU1RBVFVTX0VDQ19IQVNfQklURkxJUFM6 Cj4gKwljYXNlIEtJT1hJQV9TVEFUVVNfRUNDX0hBU19CSVRGTElQU19UOgo+ICsJCS8qCj4gKwkJ ICogTGV0J3MgdHJ5IHRvIHJldHJpZXZlIHRoZSByZWFsIG1heGltdW0gbnVtYmVyIG9mIGJpdGZs aXBzCj4gKwkJICogaW4gb3JkZXIgdG8gYXZvaWQgZm9yY2luZyB0aGUgd2Vhci1sZXZlbGluZyBs YXllciB0byBtb3ZlCj4gKwkJICogZGF0YSBhcm91bmQgaWYgaXQncyBub3QgbmVjZXNzYXJ5Lgo+ ICsJCSAqLwo+ICsJCWlmIChzcGlfbWVtX2V4ZWNfb3Aoc3BpbmFuZC0+c3BpbWVtLCAmb3ApKQo+ ICsJCQlyZXR1cm4gbmFuZC0+ZWNjcmVxLnN0cmVuZ3RoOwo+ICsKPiArCQltYmYgPj49IDQ7Cj4g Kwo+ICsJCWlmIChXQVJOX09OKG1iZiA+IG5hbmQtPmVjY3JlcS5zdHJlbmd0aCB8fCAhbWJmKSkK PiArCQkJcmV0dXJuIG5hbmQtPmVjY3JlcS5zdHJlbmd0aDsKPiArCj4gKwkJcmV0dXJuIG1iZjsK PiArCj4gKwlkZWZhdWx0Ogo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCXJldHVybiAtRUlOVkFM Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNwaW5hbmRfaW5mbyBraW94aWFfc3Bp bmFuZF90YWJsZVtdID0gewo+ICsJLyogMy4zViAxR2IgKi8KPiArCVNQSU5BTkRfSU5GTygiVEM1 OENWRzBTMyIsIDB4QzIsCj4gKwkJICAgICBOQU5EX01FTU9SRygxLCAyMDQ4LCAxMjgsIDY0LCAx MDI0LCAyMCwgMSwgMSwgMSksCj4gKwkJICAgICBOQU5EX0VDQ1JFUSg4LCA1MTIpLAo+ICsJCSAg ICAgU1BJTkFORF9JTkZPX09QX1ZBUklBTlRTKCZyZWFkX2NhY2hlX3ZhcmlhbnRzLAo+ICsJCQkJ CSAgICAgICZ3cml0ZV9jYWNoZV92YXJpYW50cywKPiArCQkJCQkgICAgICAmdXBkYXRlX2NhY2hl X3ZhcmlhbnRzKSwKPiArCQkgICAgIDAsCj4gKwkJICAgICBTUElOQU5EX0VDQ0lORk8oJnRjNThj eGd4c3hfb29ibGF5b3V0LAo+ICsJCQkJICAgICB0YzU4Y3hneHN4X2VjY19nZXRfc3RhdHVzKSks Cj4gKwkvKiAzLjNWIDJHYiAqLwo+ICsJU1BJTkFORF9JTkZPKCJUQzU4Q1ZHMVMzIiwgMHhDQiwK PiArCQkgICAgIE5BTkRfTUVNT1JHKDEsIDIwNDgsIDEyOCwgNjQsIDIwNDgsIDQwLCAxLCAxLCAx KSwKPiArCQkgICAgIE5BTkRfRUNDUkVRKDgsIDUxMiksCj4gKwkJICAgICBTUElOQU5EX0lORk9f T1BfVkFSSUFOVFMoJnJlYWRfY2FjaGVfdmFyaWFudHMsCj4gKwkJCQkJICAgICAgJndyaXRlX2Nh Y2hlX3ZhcmlhbnRzLAo+ICsJCQkJCSAgICAgICZ1cGRhdGVfY2FjaGVfdmFyaWFudHMpLAo+ICsJ CSAgICAgMCwKPiArCQkgICAgIFNQSU5BTkRfRUNDSU5GTygmdGM1OGN4Z3hzeF9vb2JsYXlvdXQs Cj4gKwkJCQkgICAgIHRjNThjeGd4c3hfZWNjX2dldF9zdGF0dXMpKSwKPiArCS8qIDMuM1YgNEdi ICovCj4gKwlTUElOQU5EX0lORk8oIlRDNThDVkcyUzAiLCAweENELAo+ICsJCSAgICAgTkFORF9N RU1PUkcoMSwgNDA5NiwgMjU2LCA2NCwgMjA0OCwgNDAsIDEsIDEsIDEpLAo+ICsJCSAgICAgTkFO RF9FQ0NSRVEoOCwgNTEyKSwKPiArCQkgICAgIFNQSU5BTkRfSU5GT19PUF9WQVJJQU5UUygmcmVh ZF9jYWNoZV92YXJpYW50cywKPiArCQkJCQkgICAgICAmd3JpdGVfY2FjaGVfdmFyaWFudHMsCj4g KwkJCQkJICAgICAgJnVwZGF0ZV9jYWNoZV92YXJpYW50cyksCj4gKwkJICAgICAwLAo+ICsJCSAg ICAgU1BJTkFORF9FQ0NJTkZPKCZ0YzU4Y3hneHN4X29vYmxheW91dCwKPiArCQkJCSAgICAgdGM1 OGN4Z3hzeF9lY2NfZ2V0X3N0YXR1cykpLAo+ICsJLyogMS44ViAxR2IgKi8KPiArCVNQSU5BTkRf SU5GTygiVEM1OENZRzBTMyIsIDB4QjIsCj4gKwkJICAgICBOQU5EX01FTU9SRygxLCAyMDQ4LCAx MjgsIDY0LCAxMDI0LCAyMCwgMSwgMSwgMSksCj4gKwkJICAgICBOQU5EX0VDQ1JFUSg4LCA1MTIp LAo+ICsJCSAgICAgU1BJTkFORF9JTkZPX09QX1ZBUklBTlRTKCZyZWFkX2NhY2hlX3ZhcmlhbnRz LAo+ICsJCQkJCSAgICAgICZ3cml0ZV9jYWNoZV92YXJpYW50cywKPiArCQkJCQkgICAgICAmdXBk YXRlX2NhY2hlX3ZhcmlhbnRzKSwKPiArCQkgICAgIDAsCj4gKwkJICAgICBTUElOQU5EX0VDQ0lO Rk8oJnRjNThjeGd4c3hfb29ibGF5b3V0LAo+ICsJCQkJICAgICB0YzU4Y3hneHN4X2VjY19nZXRf c3RhdHVzKSksCj4gKwkvKiAxLjhWIDJHYiAqLwo+ICsJU1BJTkFORF9JTkZPKCJUQzU4Q1lHMVMz IiwgMHhCQiwKPiArCQkgICAgIE5BTkRfTUVNT1JHKDEsIDIwNDgsIDEyOCwgNjQsIDIwNDgsIDQw LCAxLCAxLCAxKSwKPiArCQkgICAgIE5BTkRfRUNDUkVRKDgsIDUxMiksCj4gKwkJICAgICBTUElO QU5EX0lORk9fT1BfVkFSSUFOVFMoJnJlYWRfY2FjaGVfdmFyaWFudHMsCj4gKwkJCQkJICAgICAg JndyaXRlX2NhY2hlX3ZhcmlhbnRzLAo+ICsJCQkJCSAgICAgICZ1cGRhdGVfY2FjaGVfdmFyaWFu dHMpLAo+ICsJCSAgICAgMCwKPiArCQkgICAgIFNQSU5BTkRfRUNDSU5GTygmdGM1OGN4Z3hzeF9v b2JsYXlvdXQsCj4gKwkJCQkgICAgIHRjNThjeGd4c3hfZWNjX2dldF9zdGF0dXMpKSwKPiArCS8q IDEuOFYgNEdiICovCj4gKwlTUElOQU5EX0lORk8oIlRDNThDWUcyUzAiLCAweEJELAo+ICsJCSAg ICAgTkFORF9NRU1PUkcoMSwgNDA5NiwgMjU2LCA2NCwgMjA0OCwgNDAsIDEsIDEsIDEpLAo+ICsJ CSAgICAgTkFORF9FQ0NSRVEoOCwgNTEyKSwKPiArCQkgICAgIFNQSU5BTkRfSU5GT19PUF9WQVJJ QU5UUygmcmVhZF9jYWNoZV92YXJpYW50cywKPiArCQkJCQkgICAgICAmd3JpdGVfY2FjaGVfdmFy aWFudHMsCj4gKwkJCQkJICAgICAgJnVwZGF0ZV9jYWNoZV92YXJpYW50cyksCj4gKwkJICAgICAw LAo+ICsJCSAgICAgU1BJTkFORF9FQ0NJTkZPKCZ0YzU4Y3hneHN4X29vYmxheW91dCwKPiArCQkJ CSAgICAgdGM1OGN4Z3hzeF9lY2NfZ2V0X3N0YXR1cykpLAo+ICt9Owo+ICsKPiArc3RhdGljIGlu dCBraW94aWFfc3BpbmFuZF9kZXRlY3Qoc3RydWN0IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kKQo+ ICt7Cj4gKwl1OCAqaWQgPSBzcGluYW5kLT5pZC5kYXRhOwo+ICsJaW50IHJldDsKPiArCj4gKwkv Kgo+ICsJICogVG9zaGliYSBTUEkgTkFORCByZWFkIElEIG5lZWRzIGEgZHVtbXkgYnl0ZSwKPiAr CSAqIHNvIHRoZSBmaXJzdCBieXRlIGluIGlkIGlzIGdhcmJhZ2UuCj4gKwkgKi8KPiArCWlmIChp ZFsxXSAhPSBTUElOQU5EX01GUl9LSU9YSUEpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0ID0g c3BpbmFuZF9tYXRjaF9hbmRfaW5pdChzcGluYW5kLCBraW94aWFfc3BpbmFuZF90YWJsZSwKPiAr CQkJCSAgICAgQVJSQVlfU0laRShraW94aWFfc3BpbmFuZF90YWJsZSksCj4gKwkJCQkgICAgIGlk WzJdKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlcl9vcHMga2lv eGlhX3NwaW5hbmRfbWFudWZfb3BzID0gewo+ICsJLmRldGVjdCA9IGtpb3hpYV9zcGluYW5kX2Rl dGVjdCwKPiArfTsKPiArCj4gK2NvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJlciBraW94 aWFfc3BpbmFuZF9tYW51ZmFjdHVyZXIgPSB7Cj4gKwkuaWQgPSBTUElOQU5EX01GUl9LSU9YSUEs Cj4gKwkubmFtZSA9ICJLaW94aWEiLAo+ICsJLm9wcyA9ICZraW94aWFfc3BpbmFuZF9tYW51Zl9v cHMsCj4gK307Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL3Rvc2hpYmEuYyBi L2RyaXZlcnMvbXRkL25hbmQvc3BpL3Rvc2hpYmEuYwo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDFjYjM3NjAuLjAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3NwaS90 b3NoaWJhLmMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMTg4ICswLDAgQEAKPiAtLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiAtLyoKPiAtICogQ29weXJpZ2h0IChjKSAyMDE4 IGV4Y2VldCBlbGVjdHJvbmljcyBHbWJICj4gLSAqIENvcHlyaWdodCAoYykgMjAxOCBLb250cm9u IEVsZWN0cm9uaWNzIEdtYkgKPiAtICoKPiAtICogQXV0aG9yOiBGcmllZGVyIFNjaHJlbXBmIDxm cmllZGVyLnNjaHJlbXBmQGtvbnRyb24uZGU+Cj4gLSAqLwo+IC0KPiAtI2luY2x1ZGUgPGxpbnV4 L2RldmljZS5oPgo+IC0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gLSNpbmNsdWRlIDxsaW51 eC9tdGQvc3BpbmFuZC5oPgo+IC0KPiAtI2RlZmluZSBTUElOQU5EX01GUl9UT1NISUJBCQkweDk4 Cj4gLSNkZWZpbmUgVE9TSF9TVEFUVVNfRUNDX0hBU19CSVRGTElQU19UCSgzIDw8IDQpCj4gLQo+ IC1zdGF0aWMgU1BJTkFORF9PUF9WQVJJQU5UUyhyZWFkX2NhY2hlX3ZhcmlhbnRzLAo+IC0JCVNQ SU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfWDRfT1AoMCwgMSwgTlVMTCwgMCksCj4gLQkJU1BJ TkFORF9QQUdFX1JFQURfRlJPTV9DQUNIRV9YMl9PUCgwLCAxLCBOVUxMLCAwKSwKPiAtCQlTUElO QU5EX1BBR0VfUkVBRF9GUk9NX0NBQ0hFX09QKHRydWUsIDAsIDEsIE5VTEwsIDApLAo+IC0JCVNQ SU5BTkRfUEFHRV9SRUFEX0ZST01fQ0FDSEVfT1AoZmFsc2UsIDAsIDEsIE5VTEwsIDApKTsKPiAt Cj4gLXN0YXRpYyBTUElOQU5EX09QX1ZBUklBTlRTKHdyaXRlX2NhY2hlX3ZhcmlhbnRzLAo+IC0J CVNQSU5BTkRfUFJPR19MT0FEKHRydWUsIDAsIE5VTEwsIDApKTsKPiAtCj4gLXN0YXRpYyBTUElO QU5EX09QX1ZBUklBTlRTKHVwZGF0ZV9jYWNoZV92YXJpYW50cywKPiAtCQlTUElOQU5EX1BST0df TE9BRChmYWxzZSwgMCwgTlVMTCwgMCkpOwo+IC0KPiAtc3RhdGljIGludCB0YzU4Y3hneHN4X29v YmxheW91dF9lY2Moc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBzZWN0aW9uLAo+IC0JCQkJICAg ICBzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKnJlZ2lvbikKPiAtewo+IC0JaWYgKHNlY3Rpb24gPiAw KQo+IC0JCXJldHVybiAtRVJBTkdFOwo+IC0KPiAtCXJlZ2lvbi0+b2Zmc2V0ID0gbXRkLT5vb2Jz aXplIC8gMjsKPiAtCXJlZ2lvbi0+bGVuZ3RoID0gbXRkLT5vb2JzaXplIC8gMjsKPiAtCj4gLQly ZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCB0YzU4Y3hneHN4X29vYmxheW91dF9mcmVl KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwKPiAtCQkJCSAgICAgIHN0cnVjdCBt dGRfb29iX3JlZ2lvbiAqcmVnaW9uKQo+IC17Cj4gLQlpZiAoc2VjdGlvbiA+IDApCj4gLQkJcmV0 dXJuIC1FUkFOR0U7Cj4gLQo+IC0JLyogMiBieXRlcyByZXNlcnZlZCBmb3IgQkJNICovCj4gLQly ZWdpb24tPm9mZnNldCA9IDI7Cj4gLQlyZWdpb24tPmxlbmd0aCA9IChtdGQtPm9vYnNpemUgLyAy KSAtIDI7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg bXRkX29vYmxheW91dF9vcHMgdGM1OGN4Z3hzeF9vb2JsYXlvdXQgPSB7Cj4gLQkuZWNjID0gdGM1 OGN4Z3hzeF9vb2JsYXlvdXRfZWNjLAo+IC0JLmZyZWUgPSB0YzU4Y3hneHN4X29vYmxheW91dF9m cmVlLAo+IC19Owo+IC0KPiAtc3RhdGljIGludCB0YzU4Y3hneHN4X2VjY19nZXRfc3RhdHVzKHN0 cnVjdCBzcGluYW5kX2RldmljZSAqc3BpbmFuZCwKPiAtCQkJCSAgICAgIHU4IHN0YXR1cykKPiAt ewo+IC0Jc3RydWN0IG5hbmRfZGV2aWNlICpuYW5kID0gc3BpbmFuZF90b19uYW5kKHNwaW5hbmQp Owo+IC0JdTggbWJmID0gMDsKPiAtCXN0cnVjdCBzcGlfbWVtX29wIG9wID0gU1BJTkFORF9HRVRf RkVBVFVSRV9PUCgweDMwLCAmbWJmKTsKPiAtCj4gLQlzd2l0Y2ggKHN0YXR1cyAmIFNUQVRVU19F Q0NfTUFTSykgewo+IC0JY2FzZSBTVEFUVVNfRUNDX05PX0JJVEZMSVBTOgo+IC0JCXJldHVybiAw Owo+IC0KPiAtCWNhc2UgU1RBVFVTX0VDQ19VTkNPUl9FUlJPUjoKPiAtCQlyZXR1cm4gLUVCQURN U0c7Cj4gLQo+IC0JY2FzZSBTVEFUVVNfRUNDX0hBU19CSVRGTElQUzoKPiAtCWNhc2UgVE9TSF9T VEFUVVNfRUNDX0hBU19CSVRGTElQU19UOgo+IC0JCS8qCj4gLQkJICogTGV0J3MgdHJ5IHRvIHJl dHJpZXZlIHRoZSByZWFsIG1heGltdW0gbnVtYmVyIG9mIGJpdGZsaXBzCj4gLQkJICogaW4gb3Jk ZXIgdG8gYXZvaWQgZm9yY2luZyB0aGUgd2Vhci1sZXZlbGluZyBsYXllciB0byBtb3ZlCj4gLQkJ ICogZGF0YSBhcm91bmQgaWYgaXQncyBub3QgbmVjZXNzYXJ5Lgo+IC0JCSAqLwo+IC0JCWlmIChz cGlfbWVtX2V4ZWNfb3Aoc3BpbmFuZC0+c3BpbWVtLCAmb3ApKQo+IC0JCQlyZXR1cm4gbmFuZC0+ ZWNjcmVxLnN0cmVuZ3RoOwo+IC0KPiAtCQltYmYgPj49IDQ7Cj4gLQo+IC0JCWlmIChXQVJOX09O KG1iZiA+IG5hbmQtPmVjY3JlcS5zdHJlbmd0aCB8fCAhbWJmKSkKPiAtCQkJcmV0dXJuIG5hbmQt PmVjY3JlcS5zdHJlbmd0aDsKPiAtCj4gLQkJcmV0dXJuIG1iZjsKPiAtCj4gLQlkZWZhdWx0Ogo+ IC0JCWJyZWFrOwo+IC0JfQo+IC0KPiAtCXJldHVybiAtRUlOVkFMOwo+IC19Cj4gLQo+IC1zdGF0 aWMgY29uc3Qgc3RydWN0IHNwaW5hbmRfaW5mbyB0b3NoaWJhX3NwaW5hbmRfdGFibGVbXSA9IHsK PiAtCS8qIDMuM1YgMUdiICovCj4gLQlTUElOQU5EX0lORk8oIlRDNThDVkcwUzMiLCAweEMyLAo+ IC0JCSAgICAgTkFORF9NRU1PUkcoMSwgMjA0OCwgMTI4LCA2NCwgMTAyNCwgMjAsIDEsIDEsIDEp LAo+IC0JCSAgICAgTkFORF9FQ0NSRVEoOCwgNTEyKSwKPiAtCQkgICAgIFNQSU5BTkRfSU5GT19P UF9WQVJJQU5UUygmcmVhZF9jYWNoZV92YXJpYW50cywKPiAtCQkJCQkgICAgICAmd3JpdGVfY2Fj aGVfdmFyaWFudHMsCj4gLQkJCQkJICAgICAgJnVwZGF0ZV9jYWNoZV92YXJpYW50cyksCj4gLQkJ ICAgICAwLAo+IC0JCSAgICAgU1BJTkFORF9FQ0NJTkZPKCZ0YzU4Y3hneHN4X29vYmxheW91dCwK PiAtCQkJCSAgICAgdGM1OGN4Z3hzeF9lY2NfZ2V0X3N0YXR1cykpLAo+IC0JLyogMy4zViAyR2Ig Ki8KPiAtCVNQSU5BTkRfSU5GTygiVEM1OENWRzFTMyIsIDB4Q0IsCj4gLQkJICAgICBOQU5EX01F TU9SRygxLCAyMDQ4LCAxMjgsIDY0LCAyMDQ4LCA0MCwgMSwgMSwgMSksCj4gLQkJICAgICBOQU5E X0VDQ1JFUSg4LCA1MTIpLAo+IC0JCSAgICAgU1BJTkFORF9JTkZPX09QX1ZBUklBTlRTKCZyZWFk X2NhY2hlX3ZhcmlhbnRzLAo+IC0JCQkJCSAgICAgICZ3cml0ZV9jYWNoZV92YXJpYW50cywKPiAt CQkJCQkgICAgICAmdXBkYXRlX2NhY2hlX3ZhcmlhbnRzKSwKPiAtCQkgICAgIDAsCj4gLQkJICAg ICBTUElOQU5EX0VDQ0lORk8oJnRjNThjeGd4c3hfb29ibGF5b3V0LAo+IC0JCQkJICAgICB0YzU4 Y3hneHN4X2VjY19nZXRfc3RhdHVzKSksCj4gLQkvKiAzLjNWIDRHYiAqLwo+IC0JU1BJTkFORF9J TkZPKCJUQzU4Q1ZHMlMwIiwgMHhDRCwKPiAtCQkgICAgIE5BTkRfTUVNT1JHKDEsIDQwOTYsIDI1 NiwgNjQsIDIwNDgsIDQwLCAxLCAxLCAxKSwKPiAtCQkgICAgIE5BTkRfRUNDUkVRKDgsIDUxMiks Cj4gLQkJICAgICBTUElOQU5EX0lORk9fT1BfVkFSSUFOVFMoJnJlYWRfY2FjaGVfdmFyaWFudHMs Cj4gLQkJCQkJICAgICAgJndyaXRlX2NhY2hlX3ZhcmlhbnRzLAo+IC0JCQkJCSAgICAgICZ1cGRh dGVfY2FjaGVfdmFyaWFudHMpLAo+IC0JCSAgICAgMCwKPiAtCQkgICAgIFNQSU5BTkRfRUNDSU5G TygmdGM1OGN4Z3hzeF9vb2JsYXlvdXQsCj4gLQkJCQkgICAgIHRjNThjeGd4c3hfZWNjX2dldF9z dGF0dXMpKSwKPiAtCS8qIDEuOFYgMUdiICovCj4gLQlTUElOQU5EX0lORk8oIlRDNThDWUcwUzMi LCAweEIyLAo+IC0JCSAgICAgTkFORF9NRU1PUkcoMSwgMjA0OCwgMTI4LCA2NCwgMTAyNCwgMjAs IDEsIDEsIDEpLAo+IC0JCSAgICAgTkFORF9FQ0NSRVEoOCwgNTEyKSwKPiAtCQkgICAgIFNQSU5B TkRfSU5GT19PUF9WQVJJQU5UUygmcmVhZF9jYWNoZV92YXJpYW50cywKPiAtCQkJCQkgICAgICAm d3JpdGVfY2FjaGVfdmFyaWFudHMsCj4gLQkJCQkJICAgICAgJnVwZGF0ZV9jYWNoZV92YXJpYW50 cyksCj4gLQkJICAgICAwLAo+IC0JCSAgICAgU1BJTkFORF9FQ0NJTkZPKCZ0YzU4Y3hneHN4X29v YmxheW91dCwKPiAtCQkJCSAgICAgdGM1OGN4Z3hzeF9lY2NfZ2V0X3N0YXR1cykpLAo+IC0JLyog MS44ViAyR2IgKi8KPiAtCVNQSU5BTkRfSU5GTygiVEM1OENZRzFTMyIsIDB4QkIsCj4gLQkJICAg ICBOQU5EX01FTU9SRygxLCAyMDQ4LCAxMjgsIDY0LCAyMDQ4LCA0MCwgMSwgMSwgMSksCj4gLQkJ ICAgICBOQU5EX0VDQ1JFUSg4LCA1MTIpLAo+IC0JCSAgICAgU1BJTkFORF9JTkZPX09QX1ZBUklB TlRTKCZyZWFkX2NhY2hlX3ZhcmlhbnRzLAo+IC0JCQkJCSAgICAgICZ3cml0ZV9jYWNoZV92YXJp YW50cywKPiAtCQkJCQkgICAgICAmdXBkYXRlX2NhY2hlX3ZhcmlhbnRzKSwKPiAtCQkgICAgIDAs Cj4gLQkJICAgICBTUElOQU5EX0VDQ0lORk8oJnRjNThjeGd4c3hfb29ibGF5b3V0LAo+IC0JCQkJ ICAgICB0YzU4Y3hneHN4X2VjY19nZXRfc3RhdHVzKSksCj4gLQkvKiAxLjhWIDRHYiAqLwo+IC0J U1BJTkFORF9JTkZPKCJUQzU4Q1lHMlMwIiwgMHhCRCwKPiAtCQkgICAgIE5BTkRfTUVNT1JHKDEs IDQwOTYsIDI1NiwgNjQsIDIwNDgsIDQwLCAxLCAxLCAxKSwKPiAtCQkgICAgIE5BTkRfRUNDUkVR KDgsIDUxMiksCj4gLQkJICAgICBTUElOQU5EX0lORk9fT1BfVkFSSUFOVFMoJnJlYWRfY2FjaGVf dmFyaWFudHMsCj4gLQkJCQkJICAgICAgJndyaXRlX2NhY2hlX3ZhcmlhbnRzLAo+IC0JCQkJCSAg ICAgICZ1cGRhdGVfY2FjaGVfdmFyaWFudHMpLAo+IC0JCSAgICAgMCwKPiAtCQkgICAgIFNQSU5B TkRfRUNDSU5GTygmdGM1OGN4Z3hzeF9vb2JsYXlvdXQsCj4gLQkJCQkgICAgIHRjNThjeGd4c3hf ZWNjX2dldF9zdGF0dXMpKSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBpbnQgdG9zaGliYV9zcGluYW5k X2RldGVjdChzdHJ1Y3Qgc3BpbmFuZF9kZXZpY2UgKnNwaW5hbmQpCj4gLXsKPiAtCXU4ICppZCA9 IHNwaW5hbmQtPmlkLmRhdGE7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCS8qCj4gLQkgKiBUb3NoaWJh IFNQSSBOQU5EIHJlYWQgSUQgbmVlZHMgYSBkdW1teSBieXRlLAo+IC0JICogc28gdGhlIGZpcnN0 IGJ5dGUgaW4gaWQgaXMgZ2FyYmFnZS4KPiAtCSAqLwo+IC0JaWYgKGlkWzFdICE9IFNQSU5BTkRf TUZSX1RPU0hJQkEpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JcmV0ID0gc3BpbmFuZF9tYXRjaF9h bmRfaW5pdChzcGluYW5kLCB0b3NoaWJhX3NwaW5hbmRfdGFibGUsCj4gLQkJCQkgICAgIEFSUkFZ X1NJWkUodG9zaGliYV9zcGluYW5kX3RhYmxlKSwKPiAtCQkJCSAgICAgaWRbMl0pOwo+IC0JaWYg KHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJldHVybiAxOwo+IC19Cj4gLQo+IC1zdGF0 aWMgY29uc3Qgc3RydWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyX29wcyB0b3NoaWJhX3NwaW5hbmRf bWFudWZfb3BzID0gewo+IC0JLmRldGVjdCA9IHRvc2hpYmFfc3BpbmFuZF9kZXRlY3QsCj4gLX07 Cj4gLQo+IC1jb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgdG9zaGliYV9zcGluYW5k X21hbnVmYWN0dXJlciA9IHsKPiAtCS5pZCA9IFNQSU5BTkRfTUZSX1RPU0hJQkEsCj4gLQkubmFt ZSA9ICJUb3NoaWJhIiwKPiAtCS5vcHMgPSAmdG9zaGliYV9zcGluYW5kX21hbnVmX29wcywKPiAt fTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oIGIvaW5jbHVkZS9s aW51eC9tdGQvc3BpbmFuZC5oCj4gaW5kZXggNGVhNTU4Yi4uZjhjMmFmOCAxMDA2NDQKPiAtLS0g YS9pbmNsdWRlL2xpbnV4L210ZC9zcGluYW5kLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L210ZC9z cGluYW5kLmgKPiBAQCAtMjI4LDcgKzIyOCw3IEBAIHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJl ciB7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgbWFjcm9uaXhf c3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51 ZmFjdHVyZXIgbWljcm9uX3NwaW5hbmRfbWFudWZhY3R1cmVyOwo+ICBleHRlcm4gY29uc3Qgc3Ry dWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyIHBhcmFnb25fc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4g LWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3BpbmFuZF9tYW51ZmFjdHVyZXIgdG9zaGliYV9zcGluYW5k X21hbnVmYWN0dXJlcjsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGluYW5kX21hbnVmYWN0dXJl ciBraW94aWFfc3BpbmFuZF9tYW51ZmFjdHVyZXI7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3Bp bmFuZF9tYW51ZmFjdHVyZXIgd2luYm9uZF9zcGluYW5kX21hbnVmYWN0dXJlcjsKPiAgCj4gIC8q KgoKCgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=