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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 74124C88E77 for ; Wed, 16 Sep 2026 12:43:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xAX2YF2v9f07CbJcYJPzBi08dvfZGBRRlkeya5utIjQ=; b=IqF6mx7G6LIF/x FcVsTF0nsJL0krY4aAd75r6DCk+Q/lUDvY9Jy5F67ZNRgnfN0Z4StFaivt0Ry067sL0qMzA1gT7kN tRlGxhncCZ1+oU2B+0IgrCKsna+VI0JU90foBCM33ZpwdZ0nyWp8FFVHuMrPc1P9yLnAbJMzvjR8x aDTdEgSA5y4VKfo4rmJ2gv4aSIDIGYl6FvFswevOOB6E1kIG46kCoFdVxldwmiKwlSba58/5w7plH gDgzGE/fFccPiGqv/KC3oSUZErxU5CP2MjlQ+kNXApQeYgrFwY+WW+PuSsNDw/KYpttZLcDaYRAXJ Wo+Jqptz189e8DW3vDUA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6oyq-00000009C2m-3FOY; Wed, 16 Sep 2026 12:43:16 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x67Mb-00000003vVe-1bWF for linux-phy@lists.infradead.org; Mon, 14 Sep 2026 14:08:53 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id D7C9C41076; Mon, 14 Sep 2026 14:08:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D17DE1F0089A; Mon, 14 Sep 2026 14:08:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789394932; bh=1JrFAu2BXlgK6ThDDZ42Rj4Ik8g4VA+uAOpXR2liKKM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=DAODyd8Vss1+W+8v+SLJ+oacRIqCkah97s9clsflbd+JdUW1YSV/p6nCsbeg2iAoq 9VL5Ce4hjkBwZG2dNjibACReN3F47ND1gXRBBKmAFuY3twiRydtzJbEfiVekD1Km81 2BAGPTFUkpFxiQP1RaTZSM/ot0UJzdscsYN1kgg/pDHXv1VqAPoDf2bAaiR51OcYro aG8Yqaj9m2Q4c6TOWqf7tRNUNpnwXlaZBfIUH0WLdH8KngT2RpM+ER/SP6TdQiYLuu P1xnkHxwEF3gjsXfkH4nYeeB0angULUR4IYklusad6AhvxIbISzYNDMPg99X71uyhA xyFh7WPQaGnKA== From: Arnd Bergmann To: soc@lists.linux.dev Cc: Arnd Bergmann , Sebastian Hesselbarth , Alexander Clouter , "Jeremy J. Peper" , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas , Vinod Koul , Alexandre Belloni , "Rafael J. Wysocki" , Guenter Roeck , Thomas Weissschuh , linux-pci@vger.kernel.org, linux-phy@lists.infradead.org, linux-rtc@vger.kernel.org, linux-pm@vger.kernel.org, linux-watchdog@vger.kernel.org, linux-sound@vger.kernel.org, Daniel Lezcano , Niklas Cassel , Mark Brown , Ulf Hansson , Linus Walleij , Gregory CLEMENT , Andrew Lunn Subject: [PATCH v2 04/14] ARM: orion/dove/mv78xx0: remove all board files Date: Mon, 14 Sep 2026 16:08:06 +0200 Message-ID: <20260914140821.1805449-5-arnd@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260914140821.1805449-1-arnd@kernel.org> References: <20260914140821.1805449-1-arnd@kernel.org> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 16 Sep 2026 05:43:14 -0700 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org RnJvbTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KClRoZSAnb3Jpb24nIHBsYXRmb3Jt IGlzIHRoZSBwcmVkZWNlc3NvciB0byB3aGF0IGxpbnV4IG5vdyBjYWxscyB0aGUKJ212ZWJ1JyBs aW5lIG9mIE1hcnZlbGwgU29DcywgYW5kIG9yaWdpbmFsbHkgY292ZXJlZCBvcmlvbjV4LAptdjc4 eHgwLCBraXJrd29vZCwgZG92ZSBhbmQgYSBmZXcgb3RoZXJzIHRoYXQgZG8gbm90IGhhdmUgYW55 CnVwc3RyZWFtIHN1cHBvcnQgYXQgdGhlIG1vbWVudC4KCk9ubHkgYSBmZXcgYm9hcmQgZmlsZXMg cmVtYWluIGhlcmUsIHRoZXNlIGFyZSB0aGUgb25lcyBsZWZ0CmluIDIwMjIgYm9hcmQgZmlsZSBw dXJnZSBiZWNhdXNlIHRoZXkgaGFkIHNvbWUgbGV2ZWwgb2Ygc3VwcG9ydAppbiBEZWJpYW4gb3Ig T3BlbldSVCwgbW9zdGx5IGZvciBjb21tZXJjaWFsIE5BUyBvciByb3V0ZXIgYm94ZXMuClRoaXMg ZGlzdHJvIHN1cHBvcnQgaXMgbm93IGdvbmUsIGFuZCBub2JvZHkgaGFzIGNvbnZlcnRlZCB0aGUK Ym9hcmQgZmlsZXMgdG8gZGV2aWNldHJlZSwgdGhvdWdoIHRoZSBvcmlvbjV4IGFuZCBkb3ZlIHBs YXRmb3JtcwphbHNvIGNvbWUgd2l0aCBkZXZpY2V0cmVlIHN1cHBvcnQgZm9yIHNvbWUgb3RoZXIg bWFjaGluZXMuCgpDYzogU2ViYXN0aWFuIEhlc3NlbGJhcnRoIDxzZWJhc3RpYW4uaGVzc2VsYmFy dGhAZ21haWwuY29tPgpDYzogQWxleGFuZGVyIENsb3V0ZXIgPGFsZXhAZGlncml6Lm9yZy51az4K Q2M6IEplcmVteSBKLiBQZXBlciA8amVyZW15QGplcmVteXBlcGVyLmNvbT4KQ2M6IExvcmVuem8g UGllcmFsaXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+CkNjOiAiS3J6eXN6dG9mIFdpbGN6ecWE c2tpIiA8a3dpbGN6eW5za2lAa2VybmVsLm9yZz4KQ2M6IE1hbml2YW5uYW4gU2FkaGFzaXZhbSA8 bWFuaUBrZXJuZWwub3JnPgpDYzogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4KQ2M6IEJq b3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+CkNjOiBWaW5vZCBLb3VsIDx2a291bEBr ZXJuZWwub3JnPgpDYzogQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRyZS5iZWxsb25pQGJvb3Rs aW4uY29tPgpDYzogIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5vcmc+CkNjOiBH dWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CkNjOiBUaG9tYXMgV2Vpc3NzY2h1aCA8 dGhvbWFzLndlaXNzc2NodWhAbGludXRyb25peC5kZT4KQ2M6IGxpbnV4LXBjaUB2Z2VyLmtlcm5l bC5vcmcKQ2M6IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCkNjOiBsaW51eC1ydGNAdmdl ci5rZXJuZWwub3JnCkNjOiBsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LXdhdGNo ZG9nQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgtc291bmRAdmdlci5rZXJuZWwub3JnCkFja2Vk LWJ5OiBEYW5pZWwgTGV6Y2FubyA8ZGFuaWVsLmxlemNhbm9Ab3NzLnF1YWxjb21tLmNvbT4gIyB0 aGVybWFsCkFja2VkLWJ5OiBOaWtsYXMgQ2Fzc2VsIDxjYXNzZWxAa2VybmVsLm9yZz4gIyBhdGEg cGFydHMKQWNrZWQtYnk6IE1hcmsgQnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz4KQWNrZWQtYnk6 IFVsZiBIYW5zc29uIDx1bGZoQGtlcm5lbC5vcmc+ICMgRm9yIE1NQwpBY2tlZC1ieTogTGludXMg V2FsbGVpaiA8bGludXN3QGtlcm5lbC5vcmc+CkFja2VkLWJ5OiBHcmVnb3J5IENMRU1FTlQgPGdy ZWdvcnkuY2xlbWVudEBib290bGluLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBMdW5uIDxhbmRy ZXdAbHVubi5jaD4KU2lnbmVkLW9mZi1ieTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4K LS0tCkkgaGF2ZSBhIGZldyBmb2xsb3ctdXAgcGF0Y2hlcyB0byByZW1vdmUgdGhlIHBsYXRmb3Jt X2RhdGEKaGFuZGxpbmcgaW4gb3Jpb24gc3BlY2lmaWMgZGV2aWNlIGRyaXZlcnMsIHRoZXNlIHdp bGwgYmUKcGFydCBvZiBhIGxhdGVyIHNlcmllcy4KLS0tCiBEb2N1bWVudGF0aW9uL2FyY2gvYXJt L21hcnZlbGwucnN0ICAgICAgICAgICAgfCAgMTMgKy0KIE1BSU5UQUlORVJTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSAtCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgLQogYXJjaC9hcm0vS2NvbmZpZy5kZWJ1ZyAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBhcmNoL2FybS9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgLQogYXJjaC9hcm0vY29uZmlncy9kb3ZlX2RlZmNvbmZp ZyAgICAgICAgICAgICAgIHwgMTM0IC0tLQogYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNv bmZpZyAgICAgICAgICAgIHwgMTIwIC0tLQogYXJjaC9hcm0vbWFjaC1kb3ZlL0tjb25maWcgICAg ICAgICAgICAgICAgICAgIHwgIDMyIC0KIGFyY2gvYXJtL21hY2gtZG92ZS9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICB8ICAgNyAtCiBhcmNoL2FybS9tYWNoLWRvdmUvYnJpZGdlLXJlZ3MuaCAg ICAgICAgICAgICAgfCAgNTAgLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9jbS1hNTEwLmMgICAgICAg ICAgICAgICAgICB8ICA5NCAtLQogYXJjaC9hcm0vbWFjaC1kb3ZlL2NvbW1vbi5jICAgICAgICAg ICAgICAgICAgIHwgNDQ5IC0tLS0tLS0tLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uaCAg ICAgICAgICAgICAgICAgICB8ICA0NiAtCiBhcmNoL2FybS9tYWNoLWRvdmUvZG92ZS5oICAgICAg ICAgICAgICAgICAgICAgfCAxODUgLS0tLQogYXJjaC9hcm0vbWFjaC1kb3ZlL2lycS5jICAgICAg ICAgICAgICAgICAgICAgIHwgIDgxIC0tCiBhcmNoL2FybS9tYWNoLWRvdmUvaXJxcy5oICAgICAg ICAgICAgICAgICAgICAgfCAgODkgLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9tcHAuYyAgICAgICAg ICAgICAgICAgICAgICB8IDE1OSAtLS0tCiBhcmNoL2FybS9tYWNoLWRvdmUvbXBwLmggICAgICAg ICAgICAgICAgICAgICAgfCAxOTcgLS0tLS0KIGFyY2gvYXJtL21hY2gtZG92ZS9wY2llLmMgICAg ICAgICAgICAgICAgICAgICB8IDIyNiAtLS0tLQogYXJjaC9hcm0vbWFjaC1kb3ZlL3BtLmggICAg ICAgICAgICAgICAgICAgICAgIHwgIDU4IC0tCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvS2NvbmZp ZyAgICAgICAgICAgICAgICAgfCAgMjcgLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL01ha2VmaWxl ICAgICAgICAgICAgICAgIHwgICA1IC0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9icmlkZ2UtcmVn cy5oICAgICAgICAgICB8ICAzMSAtCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvYnVmZmFsby13eGwt c2V0dXAuYyAgICAgfCAxODMgLS0tLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2NvbW1vbi5jICAg ICAgICAgICAgICAgIHwgNDQ0IC0tLS0tLS0tLS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9jb21t b24uaCAgICAgICAgICAgICAgICB8ICA1NCAtLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2lycS5j ICAgICAgICAgICAgICAgICAgIHwgIDY5IC0tCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvaXJxcy5o ICAgICAgICAgICAgICAgICAgfCAgODcgLS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9tcHAuYyAg ICAgICAgICAgICAgICAgICB8ICAzNCAtCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvbXBwLmggICAg ICAgICAgICAgICAgICAgfCAzMzcgLS0tLS0tLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL212Nzh4 eDAuaCAgICAgICAgICAgICAgIHwgMTM0IC0tLQogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL3BjaWUu YyAgICAgICAgICAgICAgICAgIHwgMjgwIC0tLS0tLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L0tj b25maWcgICAgICAgICAgICAgICAgIHwgIDk1IC0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvTWFr ZWZpbGUgICAgICAgICAgICAgICAgfCAgMTEgKy0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC9ib2Fy ZC1kMm5ldC5jICAgICAgICAgICB8ICAgMSAtCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvYm9hcmQt ZHQuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC9jb21tb24u YyAgICAgICAgICAgICAgICB8IDIzOCArLS0tLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2NvbW1v bi5oICAgICAgICAgICAgICAgIHwgIDE1IC0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMt c2V0dXAuYyAgICAgICAgICB8IDc1NyAtLS0tLS0tLS0tLS0tLS0tCiBhcmNoL2FybS9tYWNoLW9y aW9uNXgvaXJxLmMgICAgICAgICAgICAgICAgICAgfCAgNTEgLS0KIGFyY2gvYXJtL21hY2gtb3Jp b241eC9pcnFzLmggICAgICAgICAgICAgICAgICB8ICAgOSAtCiBhcmNoL2FybS9tYWNoLW9yaW9u NXgva3Vyb2JveF9wcm8tc2V0dXAuYyAgICAgfCA0MDcgLS0tLS0tLS0tCiBhcmNoL2FybS9tYWNo LW9yaW9uNXgvbXBwLmMgICAgICAgICAgICAgICAgICAgfCAgNDEgLQogYXJjaC9hcm0vbWFjaC1v cmlvbjV4L21wcC5oICAgICAgICAgICAgICAgICAgIHwgMTMwIC0tLQogYXJjaC9hcm0vbWFjaC1v cmlvbjV4L212MjEyMC1zZXR1cC5jICAgICAgICAgIHwgMjU2IC0tLS0tLQogYXJjaC9hcm0vbWFj aC1vcmlvbjV4L25ldDJiaWctc2V0dXAuYyAgICAgICAgIHwgNDQ0IC0tLS0tLS0tLS0KIGFyY2gv YXJtL21hY2gtb3Jpb241eC9wY2kuYyAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiAuLi4vYXJt L21hY2gtb3Jpb241eC90ZXJhc3RhdGlvbl9wcm8yLXNldHVwLmMgfCAzNjYgLS0tLS0tLS0KIGFy Y2gvYXJtL21hY2gtb3Jpb241eC90czIwOS1zZXR1cC5jICAgICAgICAgICB8IDMzMSAtLS0tLS0t CiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM0MDktc2V0dXAuYyAgICAgICAgICAgfCAzMjkgLS0t LS0tLQogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1mcGdhLmggICAgICAgICAgIHwgIDQy IC0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtc2V0dXAuYyAgICAgICAgICB8IDU3NCAt LS0tLS0tLS0tLS0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC90c3gwOS1jb21tb24uYyAgICAgICAg ICB8IDEyOSAtLS0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC90c3gwOS1jb21tb24uaCAgICAgICAg ICB8ICAyMSAtCiBhcmNoL2FybS9tbS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8 ICAgNCArLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9jb21tb24uYyAgICAgICAgICAgICAgICAgIHwg ODI2IC0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9ncGlvLmMgICAgICAg ICAgICAgICAgICAgIHwgNjE2IC0tLS0tLS0tLS0tLS0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5j bHVkZS9wbGF0L2FkZHItbWFwLmggICB8ICA1NCAtLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNs dWRlL3BsYXQvY29tbW9uLmggICAgIHwgMTA0IC0tLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNs dWRlL3BsYXQvaXJxLmggICAgICAgIHwgIDE1IC0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVk ZS9wbGF0L21wcC5oICAgICAgICB8ICAzNCAtCiBhcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUv cGxhdC9vcmlvbi1ncGlvLmggfCAgMzggLQogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3Bs YXQvdGltZS5oICAgICAgIHwgIDIwIC0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vaXJxLmMgICAgICAg ICAgICAgICAgICAgICB8ICAzOSAtCiBhcmNoL2FybS9wbGF0LW9yaW9uL21wcC5jICAgICAgICAg ICAgICAgICAgICAgfCAgODIgLS0KIGFyY2gvYXJtL3BsYXQtb3Jpb24vcGNpZS5jICAgICAgICAg ICAgICAgICAgICB8ICAgMSAtCiBhcmNoL2FybS9wbGF0LW9yaW9uL3RpbWUuYyAgICAgICAgICAg ICAgICAgICAgfCAyMzggLS0tLS0KIGRyaXZlcnMvYXRhL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvcGh5L21hcnZlbGwvS2NvbmZpZyAgICAgICAgICAg ICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ydGMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICstCiBkcml2ZXJzL3NvYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgLQogZHJpdmVycy90aGVybWFsL0tjb25maWcgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBkcml2ZXJzL3dhdGNoZG9nL0tjb25maWcgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNvdW5kL3NvYy9raXJrd29vZC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogNzcgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgOTk2NSBkZWxl dGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9jb25maWdzL2RvdmVfZGVmY29u ZmlnCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vY29uZmlncy9tdjc4eHgwX2RlZmNvbmZp ZwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtZG92ZS9LY29uZmlnCiBkZWxldGUg bW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL01ha2VmaWxlCiBkZWxldGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL2JyaWRnZS1yZWdzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBh cmNoL2FybS9tYWNoLWRvdmUvY20tYTUxMC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0v bWFjaC1kb3ZlL2NvbW1vbi5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3Zl L2NvbW1vbi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL2RvdmUuaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtZG92ZS9pcnEuYwogZGVsZXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtL21hY2gtZG92ZS9pcnFzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybS9tYWNoLWRvdmUvbXBwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLWRv dmUvbXBwLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jCiBk ZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1kb3ZlL3BtLmgKIGRlbGV0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybS9tYWNoLW12Nzh4eDAvS2NvbmZpZwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFy Y2gvYXJtL21hY2gtbXY3OHh4MC9NYWtlZmlsZQogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt L21hY2gtbXY3OHh4MC9icmlkZ2UtcmVncy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0v bWFjaC1tdjc4eHgwL2J1ZmZhbG8td3hsLXNldHVwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybS9tYWNoLW12Nzh4eDAvY29tbW9uLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9t YWNoLW12Nzh4eDAvY29tbW9uLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW12 Nzh4eDAvaXJxLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW12Nzh4eDAvaXJx cy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5jCiBkZWxl dGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5oCiBkZWxldGUgbW9kZSAx MDA2NDQgYXJjaC9hcm0vbWFjaC1tdjc4eHgwL212Nzh4eDAuaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IGFyY2gvYXJtL21hY2gtbXY3OHh4MC9wY2llLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9tYWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9tYWNoLW9yaW9uNXgvaXJxLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW9y aW9uNXgva3Vyb2JveF9wcm8tc2V0dXAuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21h Y2gtb3Jpb241eC9tcHAuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241 eC9tcHAuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241eC9tdjIxMjAt c2V0dXAuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmln LXNldHVwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdGVyYXN0 YXRpb25fcHJvMi1zZXR1cC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlv bjV4L3RzMjA5LXNldHVwLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW9yaW9u NXgvdHM0MDktc2V0dXAuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtb3Jpb241 eC90czc4eHgtZnBnYS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4 L3RzNzh4eC1zZXR1cC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4 L3RzeDA5LWNvbW1vbi5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1vcmlvbjV4 L3RzeDA5LWNvbW1vbi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vcGxhdC1vcmlvbi9j b21tb24uYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3BsYXQtb3Jpb24vZ3Bpby5jCiBk ZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvYWRkci1t YXAuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0 L2NvbW1vbi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRl L3BsYXQvaXJxLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1 ZGUvcGxhdC9tcHAuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5j bHVkZS9wbGF0L29yaW9uLWdwaW8uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3BsYXQt b3Jpb24vaW5jbHVkZS9wbGF0L3RpbWUuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL3Bs YXQtb3Jpb24vaXJxLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9wbGF0LW9yaW9uL21w cC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vcGxhdC1vcmlvbi90aW1lLmMKCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2FyY2gvYXJtL21hcnZlbGwucnN0IGIvRG9jdW1lbnRhdGlv bi9hcmNoL2FybS9tYXJ2ZWxsLnJzdAppbmRleCAzZDM2OWE1NjYwMzguLmViNDUwMDk1MTYxZSAx MDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hcmNoL2FybS9tYXJ2ZWxsLnJzdAorKysgYi9Eb2N1 bWVudGF0aW9uL2FyY2gvYXJtL21hcnZlbGwucnN0CkBAIC0xMTEsMTAgKzExMSw3IEBAIERpc2Nv dmVyeSBmYW1pbHkKICAgQ29yZToKIAlGZXJvY2VvbiA4OGZyNTcxLXZkIEFSTXY1IGNvbXBhdGli bGUKIAotICBMaW51eCBrZXJuZWwgbWFjaCBkaXJlY3Rvcnk6Ci0JYXJjaC9hcm0vbWFjaC1tdjc4 eHgwCi0gIExpbnV4IGtlcm5lbCBwbGF0IGRpcmVjdG9yeToKLQlhcmNoL2FybS9wbGF0LW9yaW9u CisgIChub3Qgc3VwcG9ydGVkIGluIHVwc3RyZWFtIExpbnV4IGtlcm5lbCBhbnkgbW9yZSkKIAog RUJVIEFybWFkYSBmYW1pbHkKIC0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjcsOCArMzI0LDcgQEAg RG92ZSBmYW1pbHkgKGFwcGxpY2F0aW9uIHByb2Nlc3NvcikKIAlBUk12NyBjb21wYXRpYmxlCiAK ICAgRGlyZWN0b3J5OgotCS0gYXJjaC9hcm0vbWFjaC1tdmVidSAoRFQgZW5hYmxlZCBwbGF0Zm9y bXMpCi0gICAgICAgIC0gYXJjaC9hcm0vbWFjaC1kb3ZlIChub24tRFQgZW5hYmxlZCBwbGF0Zm9y bXMpCisJLSBhcmNoL2FybS9tYWNoLW12ZWJ1CiAKIFBYQSAyeHgvM3h4LzkzeC85NXggZmFtaWx5 CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTExLDEwICs1MDcsNyBAQCBnb3QgcmVw bGFjZWQgd2l0aCBsaWNlbnNlZCBBUk0gQ29ydGV4LUEgY29yZXMuCiBMb25nLXRlcm0gcGxhbnMK IC0tLS0tLS0tLS0tLS0tLQogCi0gKiBVbmlmeSB0aGUgbWFjaC1kb3ZlLywgbWFjaC1tdjc4eHgw LywgbWFjaC1vcmlvbjV4LyBpbnRvIHRoZQotICAgbWFjaC1tdmVidS8gdG8gc3VwcG9ydCBhbGwg U29DcyBmcm9tIHRoZSBNYXJ2ZWxsIEVCVSAoRW5naW5lZXJpbmcKLSAgIEJ1c2luZXNzIFVuaXQp IGluIGEgc2luZ2xlIG1hY2gtPGZvbz4gZGlyZWN0b3J5LiBUaGUgcGxhdC1vcmlvbi8KLSAgIHdv dWxkIHRoZXJlZm9yZSBkaXNhcHBlYXIuCisgKiBVbmlmeSBtYWNoLW9yaW9uNXgvIGFuZCBtYWNo LW12ZWJ1Ly4KIAogQ3JlZGl0cwogLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9N QUlOVEFJTkVSUwppbmRleCA0MzgwZDU2NjA0MDIuLjU1OThhZWFhZjM5ZSAxMDA2NDQKLS0tIGEv TUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTMwODYsOCArMzA4Niw2IEBAIEY6CURv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWFydmVsbC9tYXJ2ZWxsLG9yaW9u NXgueWFtbAogRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9kb3ZlLwog RjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9kb3ZlKgogRjoJYXJjaC9hcm0vYm9vdC9kdHMv bWFydmVsbC9vcmlvbjV4KgotRjoJYXJjaC9hcm0vbWFjaC1kb3ZlLwotRjoJYXJjaC9hcm0vbWFj aC1tdjc4eHgwLwogRjoJYXJjaC9hcm0vbWFjaC1vcmlvbjV4LwogRjoJYXJjaC9hcm0vcGxhdC1v cmlvbi8KIEY6CWRyaXZlcnMvYnVzL212ZWJ1LW1idXMuYwpAQCAtMzM2MiwxMyArMzM2MCw2IEBA IFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQv bnhwLHMzMi1kd21hYy55YW1sCiBGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1h Yy9kd21hYy1zMzIuYwogCi1BUk0vT3Jpb24gU29DL1RlY2hub2xvZ2ljIFN5c3RlbXMgVFMtNzh4 eCBwbGF0Zm9ybSBzdXBwb3J0Ci1NOglBbGV4YW5kZXIgQ2xvdXRlciA8YWxleEBkaWdyaXoub3Jn LnVrPgotTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQg Zm9yIG5vbi1zdWJzY3JpYmVycykKLVM6CU1haW50YWluZWQKLVc6CWh0dHA6Ly93d3cuZGlncml6 Lm9yZy51ay90czc4eHgva2VybmVsCi1GOglhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM3OHh4LSoK LQogQVJNL1FVQUxDT01NIENIUk9NRUJPT0sgU1VQUE9SVAogUjoJY3Jvcy1xY29tLWR0cy13YXRj aGVyc0BjaHJvbWl1bS5vcmcKIEY6CWFyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9zYzcxODAqCmRp ZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCBjM2Q2 YjhhYmM4MTUuLmEzNjJlMjYyNzMzNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysg Yi9hcmNoL2FybS9LY29uZmlnCkBAIC00MDcsOCArNDA3LDYgQEAgc291cmNlICJhcmNoL2FybS9t YWNoLW1tcC9LY29uZmlnIgogCiBzb3VyY2UgImFyY2gvYXJtL21hY2gtbXN0YXIvS2NvbmZpZyIK IAotc291cmNlICJhcmNoL2FybS9tYWNoLW12Nzh4eDAvS2NvbmZpZyIKLQogc291cmNlICJhcmNo L2FybS9tYWNoLW12ZWJ1L0tjb25maWciCiAKIHNvdXJjZSAiYXJjaC9hcm0vbWFjaC1teHMvS2Nv bmZpZyIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcuZGVidWcgYi9hcmNoL2FybS9LY29u ZmlnLmRlYnVnCmluZGV4IGYyYTgwOTU1YjdhMC4uMjM3YTJlYTcxN2VkIDEwMDY0NAotLS0gYS9h cmNoL2FybS9LY29uZmlnLmRlYnVnCisrKyBiL2FyY2gvYXJtL0tjb25maWcuZGVidWcKQEAgLTU4 Myw3ICs1ODMsNyBAQCBjaG9pY2UKIAogCWNvbmZpZyBERUJVR19NVkVCVV9VQVJUMF9BTFRFUk5B VEUKIAkJYm9vbCAiS2VybmVsIGxvdy1sZXZlbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdmlhIE1WRUJV IFVBUlQwIChuZXcgYm9vdGxvYWRlcnMpIgotCQlkZXBlbmRzIG9uIEFSQ0hfTVZFQlUgfHwgQVJD SF9ET1ZFIHx8IEFSQ0hfTVY3OFhYMCB8fCBBUkNIX09SSU9ONVgKKwkJZGVwZW5kcyBvbiBBUkNI X01WRUJVIHx8IEFSQ0hfT1JJT041WAogCQlzZWxlY3QgREVCVUdfVUFSVF84MjUwCiAJCWhlbHAK IAkJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IGtlcm5lbCBsb3ctbGV2ZWwgZGVidWdnaW5nIHN1 cHBvcnQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUK aW5kZXggZjViYzlhZDdmNmY1Li41NDIxYTNlYzM4MjUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL01h a2VmaWxlCisrKyBiL2FyY2gvYXJtL01ha2VmaWxlCkBAIC0xNzksNyArMTc5LDYgQEAgbWFjaGlu ZS0kKENPTkZJR19BUkNIX0JFUkxJTikJCSs9IGJlcmxpbgogbWFjaGluZS0kKENPTkZJR19BUkNI X0NMUFM3MTFYKQkJKz0gY2xwczcxMXgKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9EQVZJTkNJKQkJ Kz0gZGF2aW5jaQogbWFjaGluZS0kKENPTkZJR19BUkNIX0RJR0lDT0xPUikJKz0gZGlnaWNvbG9y Ci1tYWNoaW5lLSQoQ09ORklHX0FSQ0hfRE9WRSkJCSs9IGRvdmUKIG1hY2hpbmUtJChDT05GSUdf QVJDSF9FWFlOT1MpCQkrPSBleHlub3MKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9HRU1JTkkpCQkr PSBnZW1pbmkKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9ISUdIQkFOSykJCSs9IGhpZ2hiYW5rCkBA IC0xOTAsNyArMTg5LDYgQEAgbWFjaGluZS0kKENPTkZJR19BUkNIX0xQQzE4WFgpCQkrPSBscGMx OHh4CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfTFBDMzJYWCkJCSs9IGxwYzMyeHgKIG1hY2hpbmUt JChDT05GSUdfQVJDSF9NRVNPTikJCSs9IG1lc29uCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfTU1Q KQkJKz0gbW1wCi1tYWNoaW5lLSQoQ09ORklHX0FSQ0hfTVY3OFhYMCkJCSs9IG12Nzh4eDAKIG1h Y2hpbmUtJChDT05GSUdfQVJDSF9NVkVCVSkJCSs9IG12ZWJ1CiBtYWNoaW5lLSQoQ09ORklHX0FS Q0hfTVhDKQkJKz0gaW14CiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfTUVESUFURUspCQkrPSBtZWRp YXRlawpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9kb3ZlX2RlZmNvbmZpZyBiL2FyY2gv YXJtL2NvbmZpZ3MvZG92ZV9kZWZjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDkxN2E4NjRmZWM3NC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL2NvbmZpZ3MvZG92ZV9k ZWZjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotQ09ORklHX1NZU1ZJUEM9 eQotQ09ORklHX05PX0haX0lETEU9eQotQ09ORklHX0hJR0hfUkVTX1RJTUVSUz15Ci1DT05GSUdf TE9HX0JVRl9TSElGVD0xNAotQ09ORklHX0VYUEVSVD15Ci0jIENPTkZJR19BUkNIX01VTFRJX1Y2 IGlzIG5vdCBzZXQKLUNPTkZJR19BUkNIX01VTFRJX1Y3PXkKLUNPTkZJR19BUkNIX0RPVkU9eQot Q09ORklHX01BQ0hfQ01fQTUxMD15Ci1DT05GSUdfSElHSE1FTT15Ci1DT05GSUdfQVRBR1M9eQot Q09ORklHX0FSTV9BUFBFTkRFRF9EVEI9eQotQ09ORklHX0FSTV9BVEFHX0RUQl9DT01QQVQ9eQot Q09ORklHX1ZGUD15Ci1DT05GSUdfTU9EVUxFUz15Ci1DT05GSUdfTU9EVUxFX1VOTE9BRD15Ci1D T05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXkKLUNPTkZJR19ORVQ9eQotQ09ORklHX1BBQ0tFVD15 Ci1DT05GSUdfVU5JWD15Ci1DT05GSUdfSU5FVD15Ci1DT05GSUdfSVBfTVVMVElDQVNUPXkKLUNP TkZJR19JUF9QTlA9eQotQ09ORklHX0lQX1BOUF9ESENQPXkKLUNPTkZJR19JUF9QTlBfQk9PVFA9 eQotIyBDT05GSUdfSVBWNiBpcyBub3Qgc2V0Ci1DT05GSUdfUENJPXkKLUNPTkZJR19QQ0lfTVNJ PXkKLUNPTkZJR19QQ0lfTVZFQlU9eQotQ09ORklHX0RFVlRNUEZTPXkKLUNPTkZJR19ERVZUTVBG U19NT1VOVD15Ci1DT05GSUdfTVREPXkKLUNPTkZJR19NVERfQ01ETElORV9QQVJUUz15Ci1DT05G SUdfTVREX0JMT0NLPXkKLUNPTkZJR19NVERfQ0ZJPXkKLUNPTkZJR19NVERfSkVERUNQUk9CRT15 Ci1DT05GSUdfTVREX0NGSV9BRFZfT1BUSU9OUz15Ci1DT05GSUdfTVREX0NGSV9HRU9NRVRSWT15 Ci0jIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfNCBpcyBub3Qgc2V0Ci1DT05GSUdfTVREX0NG SV9JTlRFTEVYVD15Ci1DT05GSUdfTVREX0NGSV9TVEFBPXkKLUNPTkZJR19NVERfUEhZU01BUD15 Ci1DT05GSUdfTVREX00yNVA4MD15Ci1DT05GSUdfTVREX1NQSV9OT1I9eQotQ09ORklHX0JMS19E RVZfTE9PUD15Ci1DT05GSUdfQkxLX0RFVl9SQU09eQotQ09ORklHX0JMS19ERVZfUkFNX0NPVU5U PTEKLSMgQ09ORklHX1NDU0lfUFJPQ19GUyBpcyBub3Qgc2V0Ci1DT05GSUdfQkxLX0RFVl9TRD15 Ci0jIENPTkZJR19CTEtfREVWX0JTRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX0xPV0xFVkVM IGlzIG5vdCBzZXQKLUNPTkZJR19BVEE9eQotQ09ORklHX1NBVEFfTVY9eQotQ09ORklHX05FVERF VklDRVM9eQotQ09ORklHX01WNjQzWFhfRVRIPXkKLSMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlz IG5vdCBzZXQKLUNPTkZJR19JTlBVVF9FVkRFVj15Ci0jIENPTkZJR19LRVlCT0FSRF9BVEtCRCBp cyBub3Qgc2V0Ci0jIENPTkZJR19NT1VTRV9QUzIgaXMgbm90IHNldAotIyBDT05GSUdfU0VSSU8g aXMgbm90IHNldAotQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MTYKLUNPTkZJR19TRVJJQUxfODI1 MD15Ci1DT05GSUdfU0VSSUFMXzgyNTBfQ09OU09MRT15Ci1DT05GSUdfU0VSSUFMXzgyNTBfUlVO VElNRV9VQVJUUz0yCi1DT05GSUdfU0VSSUFMX09GX1BMQVRGT1JNPXkKLSMgQ09ORklHX0hXX1JB TkRPTSBpcyBub3Qgc2V0Ci1DT05GSUdfSTJDPXkKLUNPTkZJR19JMkNfQ0hBUkRFVj15Ci1DT05G SUdfSTJDX01WNjRYWFg9eQotQ09ORklHX1NQST15Ci1DT05GSUdfU1BJX09SSU9OPXkKLSMgQ09O RklHX0hXTU9OIGlzIG5vdCBzZXQKLUNPTkZJR19USEVSTUFMPXkKLUNPTkZJR19ET1ZFX1RIRVJN QUw9eQotQ09ORklHX1dBVENIRE9HPXkKLUNPTkZJR19PUklPTl9XQVRDSERPRz15Ci1DT05GSUdf VVNCPXkKLUNPTkZJR19VU0JfWEhDSV9IQ0Q9eQotQ09ORklHX1VTQl9FSENJX0hDRD15Ci1DT05G SUdfVVNCX0VIQ0lfUk9PVF9IVUJfVFQ9eQotQ09ORklHX1VTQl9TVE9SQUdFPXkKLUNPTkZJR19N TUM9eQotQ09ORklHX01NQ19TREhDST15Ci1DT05GSUdfTU1DX1NESENJX1BMVEZNPXkKLUNPTkZJ R19NTUNfU0RIQ0lfRE9WRT15Ci1DT05GSUdfTkVXX0xFRFM9eQotQ09ORklHX0xFRFNfQ0xBU1M9 eQotQ09ORklHX0xFRFNfR1BJTz15Ci1DT05GSUdfTEVEU19UUklHR0VSUz15Ci1DT05GSUdfTEVE U19UUklHR0VSX1RJTUVSPXkKLUNPTkZJR19MRURTX1RSSUdHRVJfSEVBUlRCRUFUPXkKLUNPTkZJ R19MRURTX1RSSUdHRVJfREVGQVVMVF9PTj15Ci1DT05GSUdfUlRDX0NMQVNTPXkKLUNPTkZJR19S VENfRFJWX01WPXkKLUNPTkZJR19ETUFERVZJQ0VTPXkKLUNPTkZJR19NVl9YT1I9eQotQ09ORklH X0VYVDJfRlM9eQotQ09ORklHX0VYVDRfRlM9eQotIyBDT05GSUdfRVhUNF9GU19YQVRUUiBpcyBu b3Qgc2V0Ci1DT05GSUdfSVNPOTY2MF9GUz15Ci1DT05GSUdfSk9MSUVUPXkKLUNPTkZJR19VREZf RlM9bQotQ09ORklHX01TRE9TX0ZTPXkKLUNPTkZJR19WRkFUX0ZTPXkKLUNPTkZJR19UTVBGUz15 Ci1DT05GSUdfSkZGUzJfRlM9eQotQ09ORklHX05GU19GUz15Ci1DT05GSUdfUk9PVF9ORlM9eQot Q09ORklHX05MU19DT0RFUEFHRV80Mzc9eQotQ09ORklHX05MU19DT0RFUEFHRV84NTA9eQotQ09O RklHX05MU19JU084ODU5XzE9eQotQ09ORklHX05MU19JU084ODU5XzI9eQotQ09ORklHX05MU19V VEY4PXkKLUNPTkZJR19USU1FUl9TVEFUUz15Ci1DT05GSUdfQ1JZUFRPX05VTEw9eQotQ09ORklH X0NSWVBUT19CTE9XRklTSD15Ci1DT05GSUdfQ1JZUFRPX1RFQT15Ci1DT05GSUdfQ1JZUFRPX1RX T0ZJU0g9eQotQ09ORklHX0NSWVBUT19FQ0I9bQotQ09ORklHX0NSWVBUT19ITUFDPXkKLUNPTkZJ R19DUllQVE9fTUQ0PXkKLUNPTkZJR19DUllQVE9fU0hBMT15Ci1DT05GSUdfQ1JZUFRPX1NIQTI1 Nj15Ci1DT05GSUdfQ1JZUFRPX1NIQTUxMj15Ci1DT05GSUdfQ1JZUFRPX0RFRkxBVEU9eQotQ09O RklHX0NSWVBUT19MWk89eQotQ09ORklHX0NSWVBUT19ERVZfTUFSVkVMTF9DRVNBPXkKLUNPTkZJ R19QUklOVEtfVElNRT15Ci0jIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKLUNP TkZJR19ERUJVR19JTkZPX0RXQVJGX1RPT0xDSEFJTl9ERUZBVUxUPXkKLUNPTkZJR19NQUdJQ19T WVNSUT15Ci1DT05GSUdfREVCVUdfRlM9eQotIyBDT05GSUdfU0NIRURfREVCVUcgaXMgbm90IHNl dAotQ09ORklHX0RFQlVHX1VTRVI9eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9tdjc4 eHgwX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9kZWZjb25maWcKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzY2M4ZGU3YzFjMi4uMDAwMDAwMDAwMDAwCi0tLSBh L2FyY2gvYXJtL2NvbmZpZ3MvbXY3OHh4MF9kZWZjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwx MjAgKzAsMCBAQAotQ09ORklHX1NZU1ZJUEM9eQotQ09ORklHX05PX0haX0lETEU9eQotQ09ORklH X0hJR0hfUkVTX1RJTUVSUz15Ci1DT05GSUdfUFJFRU1QVD15Ci1DT05GSUdfTE9HX0JVRl9TSElG VD0xNAotQ09ORklHX0VYUEVSVD15Ci1DT05GSUdfS0FMTFNZTVNfQUxMPXkKLUNPTkZJR19QUk9G SUxJTkc9eQotQ09ORklHX0FSQ0hfTVVMVElfVjU9eQotIyBDT05GSUdfQVJDSF9NVUxUSV9WNiBp cyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX01VTFRJX1Y3IGlzIG5vdCBzZXQKLUNPTkZJR19BUkNI X01WNzhYWDA9eQotQ09ORklHX01BQ0hfVEVSQVNUQVRJT05fV1hMPXkKLUNPTkZJR19ISUdITUVN PXkKLUNPTkZJR19BVEFHUz15Ci1DT05GSUdfVkZQPXkKLUNPTkZJR19LUFJPQkVTPXkKLUNPTkZJ R19NT0RVTEVTPXkKLUNPTkZJR19NT0RVTEVfVU5MT0FEPXkKLUNPTkZJR19QQVJUSVRJT05fQURW QU5DRUQ9eQotQ09ORklHX0JTRF9ESVNLTEFCRUw9eQotQ09ORklHX05FVD15Ci1DT05GSUdfUEFD S0VUPXkKLUNPTkZJR19VTklYPXkKLUNPTkZJR19JTkVUPXkKLUNPTkZJR19JUF9NVUxUSUNBU1Q9 eQotQ09ORklHX0lQX1BOUD15Ci1DT05GSUdfSVBfUE5QX0RIQ1A9eQotQ09ORklHX0lQX1BOUF9C T09UUD15Ci0jIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKLUNPTkZJR19ORVRfUEtUR0VOPW0KLUNP TkZJR19NVEQ9eQotQ09ORklHX01URF9DTURMSU5FX1BBUlRTPXkKLUNPTkZJR19NVERfQkxPQ0s9 eQotQ09ORklHX01URF9DRkk9eQotQ09ORklHX01URF9KRURFQ1BST0JFPXkKLUNPTkZJR19NVERf Q0ZJX0FEVl9PUFRJT05TPXkKLUNPTkZJR19NVERfQ0ZJX0dFT01FVFJZPXkKLUNPTkZJR19NVERf Q0ZJX0lOVEVMRVhUPXkKLUNPTkZJR19NVERfQ0ZJX0FNRFNURD15Ci1DT05GSUdfTVREX1BIWVNN QVA9eQotQ09ORklHX01URF9SQVdfTkFORD15Ci1DT05GSUdfTVREX05BTkRfT1JJT049eQotQ09O RklHX0JMS19ERVZfTE9PUD15Ci0jIENPTkZJR19TQ1NJX1BST0NfRlMgaXMgbm90IHNldAotQ09O RklHX0JMS19ERVZfU0Q9eQotQ09ORklHX0JMS19ERVZfU1I9bQotQ09ORklHX0NIUl9ERVZfU0c9 bQotIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAotQ09ORklHX0FUQT15Ci1DT05GSUdf U0FUQV9NVj15Ci1DT05GSUdfTkVUREVWSUNFUz15Ci1DT05GSUdfTUlJPXkKLUNPTkZJR19ORVRf UENJPXkKLUNPTkZJR19NVjY0M1hYX0VUSD15Ci0jIENPTkZJR19JTlBVVF9NT1VTRURFViBpcyBu b3Qgc2V0Ci1DT05GSUdfTUFSVkVMTF9QSFk9eQotQ09ORklHX0lOUFVUX0VWREVWPXkKLSMgQ09O RklHX0lOUFVUX0tFWUJPQVJEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lOUFVUX01PVVNFIGlzIG5v dCBzZXQKLSMgQ09ORklHX1NFUklPIGlzIG5vdCBzZXQKLSMgQ09ORklHX1ZUIGlzIG5vdCBzZXQK LUNPTkZJR19MRUdBQ1lfUFRZX0NPVU5UPTE2Ci1DT05GSUdfU0VSSUFMXzgyNTA9eQotQ09ORklH X1NFUklBTF84MjUwX0NPTlNPTEU9eQotIyBDT05GSUdfU0VSSUFMXzgyNTBfUENJIGlzIG5vdCBz ZXQKLUNPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTIKLSMgQ09ORklHX0hXX1JBTkRP TSBpcyBub3Qgc2V0Ci1DT05GSUdfSTJDPXkKLUNPTkZJR19JMkNfQ0hBUkRFVj15Ci1DT05GSUdf STJDX01WNjRYWFg9eQotQ09ORklHX1VTQj15Ci1DT05GSUdfVVNCX0VIQ0lfSENEPXkKLUNPTkZJ R19VU0JfRUhDSV9ST09UX0hVQl9UVD15Ci1DT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQ9eQot Q09ORklHX1VTQl9QUklOVEVSPXkKLUNPTkZJR19VU0JfU1RPUkFHRT15Ci1DT05GSUdfVVNCX1NU T1JBR0VfREFUQUZBQj15Ci1DT05GSUdfVVNCX1NUT1JBR0VfRlJFRUNPTT15Ci1DT05GSUdfVVNC X1NUT1JBR0VfU0REUjA5PXkKLUNPTkZJR19VU0JfU1RPUkFHRV9TRERSNTU9eQotQ09ORklHX1VT Ql9TVE9SQUdFX0pVTVBTSE9UPXkKLUNPTkZJR19ORVdfTEVEUz15Ci1DT05GSUdfTEVEU19DTEFT Uz15Ci1DT05GSUdfTEVEU19UUklHR0VSUz15Ci1DT05GSUdfTEVEU19UUklHR0VSX1RJTUVSPXkK LUNPTkZJR19MRURTX1RSSUdHRVJfSEVBUlRCRUFUPXkKLUNPTkZJR19SVENfQ0xBU1M9eQotQ09O RklHX1JUQ19EUlZfRFMxMzA3PXkKLUNPTkZJR19SVENfRFJWX1JTNUMzNzI9eQotQ09ORklHX1JU Q19EUlZfTTQxVDgwPXkKLUNPTkZJR19FWFQyX0ZTPXkKLUNPTkZJR19FWFQ0X0ZTPXkKLSMgQ09O RklHX0VYVDRfRlNfWEFUVFIgaXMgbm90IHNldAotQ09ORklHX0lTTzk2NjBfRlM9bQotQ09ORklH X0pPTElFVD15Ci1DT05GSUdfVURGX0ZTPW0KLUNPTkZJR19NU0RPU19GUz15Ci1DT05GSUdfVkZB VF9GUz15Ci1DT05GSUdfVE1QRlM9eQotQ09ORklHX0pGRlMyX0ZTPXkKLUNPTkZJR19DUkFNRlM9 eQotQ09ORklHX05GU19GUz15Ci1DT05GSUdfTkZTX1YzPXkKLUNPTkZJR19ST09UX05GUz15Ci1D T05GSUdfTkxTX0NPREVQQUdFXzQzNz15Ci1DT05GSUdfTkxTX0NPREVQQUdFXzg1MD15Ci1DT05G SUdfTkxTX0lTTzg4NTlfMT15Ci1DT05GSUdfTkxTX0lTTzg4NTlfMj15Ci1DT05GSUdfQ1JZUFRP X0NCQz1tCi1DT05GSUdfQ1JZUFRPX0VDQj1tCi0jIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlz IG5vdCBzZXQKLUNPTkZJR19ERUJVR19JTkZPX0RXQVJGX1RPT0xDSEFJTl9ERUZBVUxUPXkKLUNP TkZJR19NQUdJQ19TWVNSUT15Ci1DT05GSUdfREVCVUdfRlM9eQotQ09ORklHX0RFQlVHX0tFUk5F TD15Ci0jIENPTkZJR19TTFVCX0RFQlVHIGlzIG5vdCBzZXQKLUNPTkZJR19TQ0hFRFNUQVRTPXkK LUNPTkZJR19ERUJVR19VU0VSPXkKLUNPTkZJR19ERUJVR19MTD15CmRpZmYgLS1naXQgYS9hcmNo L2FybS9tYWNoLWRvdmUvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtZG92ZS9LY29uZmlnCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTQ3MTIwZTIyM2UuLjAwMDAwMDAwMDAwMAotLS0g YS9hcmNoL2FybS9tYWNoLWRvdmUvS2NvbmZpZworKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAg QEAKLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLW1lbnVjb25maWcgQVJDSF9E T1ZFCi0JYm9vbCAiTWFydmVsbCBEb3ZlIChERVBSRUNBVEVEKSIgaWYgQVJDSF9NVUxUSV9WNwot CWRlcGVuZHMgb24gQVRBR1MKLQlzZWxlY3QgQ1BVX1BKNAotCXNlbGVjdCBHUElPTElCCi0Jc2Vs ZWN0IE1WRUJVX01CVVMKLQlzZWxlY3QgUElOQ1RSTAotCXNlbGVjdCBQSU5DVFJMX0RPVkUKLQlz ZWxlY3QgUExBVF9PUklPTl9MRUdBQ1kKLQlzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TIGlmIFBN Ci0Jc2VsZWN0IFBDSV9RVUlSS1MgaWYgUENJCi0JaGVscAotCSAgU3VwcG9ydCBmb3IgdGhlIE1h cnZlbGwgRG92ZSBTb0MgODhBUDUxMCB1c2luZyBib2FyZCBmaWxlcy4KLQotCSAgU3VwcG9ydCBm b3IgdGhpcyBtYWNoaW5lIHdpbGwgYmUgcmVtb3ZlZCBpbiBlYXJseSAyMDI3LCB1bmxlc3MKLQkg IHRoZXJlIGlzIGEgc3Ryb25nIHJlYXNvbiB0byBrZWVwIGl0LiBVc2VycyBzaG91bGQgbWlncmF0 ZSB0bwotCSAgdGhlIGRldmljZXRyZWUtZW5hYmxlZCB2ZXJzaW9uIChDT05GSUdfTUFDSF9ET1ZF KSBpbnN0ZWFkLgotCi1pZiBBUkNIX0RPVkUKLQotY29uZmlnIERPVkVfTEVHQUNZCi0JYm9vbAot Ci1jb25maWcgTUFDSF9DTV9BNTEwCi0JYm9vbCAiQ29tcHVMYWIgQ00tQTUxMCBCb2FyZCIKLQlz ZWxlY3QgRE9WRV9MRUdBQ1kKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91 ciBrZXJuZWwgdG8gc3VwcG9ydCB0aGUKLQkgIENvbXB1TGFiIENNLUE1MTAgQm9hcmQuCi0KLWVu ZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvTWFrZWZpbGUgYi9hcmNoL2FybS9t YWNoLWRvdmUvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMzEzOTBi ZTA2OS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtZG92ZS9NYWtlZmlsZQorKysg L2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAotY2NmbGFncy15IDo9IC1JJChzcmN0cmVlKS9hcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1 ZGUKLQotb2JqLXkJCQkJKz0gY29tbW9uLm8KLW9iai0kKENPTkZJR19ET1ZFX0xFR0FDWSkJKz0g aXJxLm8gbXBwLm8KLW9iai0kKENPTkZJR19QQ0kpCQkrPSBwY2llLm8KLW9iai0kKENPTkZJR19N QUNIX0NNX0E1MTApCSs9IGNtLWE1MTAubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kb3Zl L2JyaWRnZS1yZWdzLmggYi9hcmNoL2FybS9tYWNoLWRvdmUvYnJpZGdlLXJlZ3MuaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiYzE1MmQwOTUwLi4wMDAwMDAwMDAwMDAKLS0tIGEv YXJjaC9hcm0vbWFjaC1kb3ZlL2JyaWRnZS1yZWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCAr MCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCi0vKiBN YnVzLUwgdG8gTWJ1cyBCcmlkZ2UgUmVnaXN0ZXJzICovCi0KLSNpZm5kZWYgX19BU01fQVJDSF9C UklER0VfUkVHU19ICi0jZGVmaW5lIF9fQVNNX0FSQ0hfQlJJREdFX1JFR1NfSAotCi0jaW5jbHVk ZSAiZG92ZS5oIgotCi0jZGVmaW5lIENQVV9DT05GSUcJCShCUklER0VfVklSVF9CQVNFICsgMHgw MDAwKQotCi0jZGVmaW5lIENQVV9DT05UUk9MCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4MDEwNCkK LSNkZWZpbmUgIENQVV9DVFJMX1BDSUUwX0xJTksJMHgwMDAwMDAwMQotI2RlZmluZSAgQ1BVX1JF U0VUCQkweDAwMDAwMDAyCi0jZGVmaW5lICBDUFVfQ1RSTF9QQ0lFMV9MSU5LCTB4MDAwMDAwMDgK LQotI2RlZmluZSBSU1RPVVRuX01BU0sJCShCUklER0VfVklSVF9CQVNFICsgMHgwMTA4KQotI2Rl ZmluZSBSU1RPVVRuX01BU0tfUEhZUwkoQlJJREdFX1BIWVNfQkFTRSArIDB4MDEwOCkKLSNkZWZp bmUgIFNPRlRfUkVTRVRfT1VUX0VOCTB4MDAwMDAwMDQKLQotI2RlZmluZSBTWVNURU1fU09GVF9S RVNFVAkoQlJJREdFX1ZJUlRfQkFTRSArIDB4MDEwYykKLSNkZWZpbmUgIFNPRlRfUkVTRVQJCTB4 MDAwMDAwMDEKLQotI2RlZmluZSBCUklER0VfQ0FVU0UJCShCUklER0VfVklSVF9CQVNFICsgMHgw MTEwKQotI2RlZmluZSAgQlJJREdFX0lOVF9USU1FUjFfQ0xSCSh+MHgwMDA0KQotCi0jZGVmaW5l IElSUV9WSVJUX0JBU0UJCShCUklER0VfVklSVF9CQVNFICsgMHgwMjAwKQotI2RlZmluZSBJUlFf Q0FVU0VfTE9XX09GRgkweDAwMDAKLSNkZWZpbmUgSVJRX01BU0tfTE9XX09GRgkweDAwMDQKLSNk ZWZpbmUgRklRX01BU0tfTE9XX09GRgkweDAwMDgKLSNkZWZpbmUgRU5EUE9JTlRfTUFTS19MT1df T0ZGCTB4MDAwYwotI2RlZmluZSBJUlFfQ0FVU0VfSElHSF9PRkYJMHgwMDEwCi0jZGVmaW5lIElS UV9NQVNLX0hJR0hfT0ZGCTB4MDAxNAotI2RlZmluZSBGSVFfTUFTS19ISUdIX09GRgkweDAwMTgK LSNkZWZpbmUgRU5EUE9JTlRfTUFTS19ISUdIX09GRgkweDAwMWMKLSNkZWZpbmUgUENJRV9JTlRF UlJVUFRfTUFTS19PRkYJMHgwMDIwCi0KLSNkZWZpbmUgSVJRX01BU0tfTE9XCQkoSVJRX1ZJUlRf QkFTRSArIElSUV9NQVNLX0xPV19PRkYpCi0jZGVmaW5lIEZJUV9NQVNLX0xPVwkJKElSUV9WSVJU X0JBU0UgKyBGSVFfTUFTS19MT1dfT0ZGKQotI2RlZmluZSBFTkRQT0lOVF9NQVNLX0xPVwkoSVJR X1ZJUlRfQkFTRSArIEVORFBPSU5UX01BU0tfTE9XX09GRikKLSNkZWZpbmUgSVJRX01BU0tfSElH SAkJKElSUV9WSVJUX0JBU0UgKyBJUlFfTUFTS19ISUdIX09GRikKLSNkZWZpbmUgRklRX01BU0tf SElHSAkJKElSUV9WSVJUX0JBU0UgKyBGSVFfTUFTS19ISUdIX09GRikKLSNkZWZpbmUgRU5EUE9J TlRfTUFTS19ISUdICShJUlFfVklSVF9CQVNFICsgRU5EUE9JTlRfTUFTS19ISUdIX09GRikKLSNk ZWZpbmUgUENJRV9JTlRFUlJVUFRfTUFTSwkoSVJRX1ZJUlRfQkFTRSArIFBDSUVfSU5URVJSVVBU X01BU0tfT0ZGKQotCi0jZGVmaW5lIFBPV0VSX01BTkFHRU1FTlQJKEJSSURHRV9WSVJUX0JBU0Ug KyAweDAxMWMpCi0KLSNkZWZpbmUgVElNRVJfVklSVF9CQVNFCQkoQlJJREdFX1ZJUlRfQkFTRSAr IDB4MDMwMCkKLSNkZWZpbmUgVElNRVJfUEhZU19CQVNFICAgICAgICAgKEJSSURHRV9QSFlTX0JB U0UgKyAweDAzMDApCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL2Nt LWE1MTAuYyBiL2FyY2gvYXJtL21hY2gtZG92ZS9jbS1hNTEwLmMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGJlYjUzMjUzN2MyMi4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21h Y2gtZG92ZS9jbS1hNTEwLmMKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1k b3ZlL2NtLWE1MTAuYwotICoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wdUxhYiwgTHRkLgot ICogS29uc3RhbnRpbiBTaW55dWsgPGtvc3R5YXNAY29tcHVsYWIuY28uaWw+Ci0gKgotICogQmFz ZWQgb24gTWFydmVsbCBEQi1NVjg4QVA1MTAtQlAgRGV2ZWxvcG1lbnQgQm9hcmQgU2V0dXAKLSAq LwotCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgot I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9w bGF0Zm9ybS5oPgotI2luY2x1ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVkZSA8bGlu dXgvc3BpL3NwaS5oPgotI2luY2x1ZGUgPGxpbnV4L3NwaS9mbGFzaC5oPgotCi0jaW5jbHVkZSA8 YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0KLSNpbmNsdWRl ICJkb3ZlLmgiCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9l dGhfcGxhdGZvcm1fZGF0YSBjbV9hNTEwX2dlMDBfZGF0YSA9IHsKLQkucGh5X2FkZHIJPSBNVjY0 M1hYX0VUSF9QSFlfQUREUl9ERUZBVUxULAotfTsKLQotc3RhdGljIHN0cnVjdCBtdl9zYXRhX3Bs YXRmb3JtX2RhdGEgY21fYTUxMF9zYXRhX2RhdGEgPSB7Ci0JLm5fcG9ydHMgICAgICAgID0gMSwK LX07Ci0KLS8qCi0gKiBTUEkgRGV2aWNlczoKLSAqIFNQSTA6IDFNIEZsYXNoIFdpbmJvbmQgdzI1 cTMyYnYKLSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBmbGFzaF9wbGF0Zm9ybV9kYXRhIGNtX2E1 MTBfc3BpX2ZsYXNoX2RhdGEgPSB7Ci0JLnR5cGUJCT0gIncyNXEzMmJ2IiwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gX19pbml0ZGF0YSBjbV9hNTEwX3NwaV9mbGFzaF9pbmZv W10gPSB7Ci0JewotCQkubW9kYWxpYXMgICAgICAgPSAibTI1cDgwIiwKLQkJLnBsYXRmb3JtX2Rh dGEgID0gJmNtX2E1MTBfc3BpX2ZsYXNoX2RhdGEsCi0JCS5pcnEgICAgICAgICAgICA9IC0xLAot CQkubWF4X3NwZWVkX2h6ICAgPSAyMDAwMDAwMCwKLQkJLmJ1c19udW0gICAgICAgID0gMCwKLQkJ LmNoaXBfc2VsZWN0ICAgID0gMCwKLQl9LAotfTsKLQotc3RhdGljIGludCBfX2luaXQgY21fYTUx MF9wY2lfaW5pdCh2b2lkKQotewotCWlmIChtYWNoaW5lX2lzX2NtX2E1MTAoKSkKLQkJZG92ZV9w Y2llX2luaXQoMSwgMSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3Vic3lzX2luaXRjYWxsKGNtX2E1 MTBfcGNpX2luaXQpOwotCi0vKiBCb2FyZCBJbml0ICovCi1zdGF0aWMgdm9pZCBfX2luaXQgY21f YTUxMF9pbml0KHZvaWQpCi17Ci0JLyoKLQkgKiBCYXNpYyBEb3ZlIHNldHVwLiBOZWVkcyB0byBi ZSBjYWxsZWQgZWFybHkuCi0JICovCi0JZG92ZV9pbml0KCk7Ci0KLQlkb3ZlX2dlMDBfaW5pdCgm Y21fYTUxMF9nZTAwX2RhdGEpOwotCWRvdmVfZWhjaTBfaW5pdCgpOwotCWRvdmVfZWhjaTFfaW5p dCgpOwotCWRvdmVfc2F0YV9pbml0KCZjbV9hNTEwX3NhdGFfZGF0YSk7Ci0JZG92ZV9zZGlvMF9p bml0KCk7Ci0JZG92ZV9zZGlvMV9pbml0KCk7Ci0JZG92ZV9zcGkwX2luaXQoKTsKLQlkb3ZlX3Nw aTFfaW5pdCgpOwotCWRvdmVfdWFydDBfaW5pdCgpOwotCWRvdmVfdWFydDFfaW5pdCgpOwotCWRv dmVfaTJjX2luaXQoKTsKLQlzcGlfcmVnaXN0ZXJfYm9hcmRfaW5mbyhjbV9hNTEwX3NwaV9mbGFz aF9pbmZvLAotCQkJCUFSUkFZX1NJWkUoY21fYTUxMF9zcGlfZmxhc2hfaW5mbykpOwotfQotCi1N QUNISU5FX1NUQVJUKENNX0E1MTAsICJDb21wdWxhYiBDTS1BNTEwIEJvYXJkIikKLQkuYXRhZ19v ZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IERPVkVfTlJfSVJRUywKLQkuaW5pdF9tYWNoaW5l CT0gY21fYTUxMF9pbml0LAotCS5tYXBfaW8JCT0gZG92ZV9tYXBfaW8sCi0JLmluaXRfZWFybHkJ PSBkb3ZlX2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0gZG92ZV9pbml0X2lycSwKLQkuaW5pdF90 aW1lCT0gZG92ZV90aW1lcl9pbml0LAotCS5yZXN0YXJ0CT0gZG92ZV9yZXN0YXJ0LAotTUFDSElO RV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uYyBiL2FyY2gvYXJt L21hY2gtZG92ZS9jb21tb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlOTc4 NTE0NTkxLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL2NvbW1vbi5jCisr KyAvZGV2L251bGwKQEAgLTEsNDQ5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLWRvdmUvY29tbW9uLmMKLSAqCi0g KiBDb3JlIGZ1bmN0aW9ucyBmb3IgTWFydmVsbCBEb3ZlIDg4QVA1MTAgU3lzdGVtIE9uIENoaXAK LSAqLwotCi0jaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8bGludXgv ZG1hLW1hcHBpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgv aW8uaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL2RtYS1tdl94b3IuaD4KLSNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL3VzYi1laGNpLW9yaW9uLmg+Ci0jaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvc29jL2RvdmUvcG11Lmg+Ci0j aW5jbHVkZSA8YXNtL2hhcmR3YXJlL2NhY2hlLXRhdXJvczIuaD4KLSNpbmNsdWRlIDxhc20vbWFj aC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gv dGltZS5oPgotI2luY2x1ZGUgPHBsYXQvY29tbW9uLmg+Ci0jaW5jbHVkZSA8cGxhdC9pcnEuaD4K LSNpbmNsdWRlIDxwbGF0L3RpbWUuaD4KLSNpbmNsdWRlICJicmlkZ2UtcmVncy5oIgotI2luY2x1 ZGUgInBtLmgiCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0KLS8qIFRoZXNlIGNhbiBnbyBhd2F5IG9u Y2UgRG92ZSB1c2VzIHRoZSBtdmVidS1tYnVzIERUIGJpbmRpbmcgKi8KLSNkZWZpbmUgRE9WRV9N QlVTX1BDSUUwX01FTV9UQVJHRVQgICAgMHg0Ci0jZGVmaW5lIERPVkVfTUJVU19QQ0lFMF9NRU1f QVRUUiAgICAgIDB4ZTgKLSNkZWZpbmUgRE9WRV9NQlVTX1BDSUUwX0lPX1RBUkdFVCAgICAgMHg0 Ci0jZGVmaW5lIERPVkVfTUJVU19QQ0lFMF9JT19BVFRSICAgICAgIDB4ZTAKLSNkZWZpbmUgRE9W RV9NQlVTX1BDSUUxX01FTV9UQVJHRVQgICAgMHg4Ci0jZGVmaW5lIERPVkVfTUJVU19QQ0lFMV9N RU1fQVRUUiAgICAgIDB4ZTgKLSNkZWZpbmUgRE9WRV9NQlVTX1BDSUUxX0lPX1RBUkdFVCAgICAg MHg4Ci0jZGVmaW5lIERPVkVfTUJVU19QQ0lFMV9JT19BVFRSICAgICAgIDB4ZTAKLSNkZWZpbmUg RE9WRV9NQlVTX0NFU0FfVEFSR0VUICAgICAgICAgMHgzCi0jZGVmaW5lIERPVkVfTUJVU19DRVNB X0FUVFIgICAgICAgICAgIDB4MQotI2RlZmluZSBET1ZFX01CVVNfQk9PVFJPTV9UQVJHRVQgICAg ICAweDEKLSNkZWZpbmUgRE9WRV9NQlVTX0JPT1RST01fQVRUUiAgICAgICAgMHhmZAotI2RlZmlu ZSBET1ZFX01CVVNfU0NSQVRDSFBBRF9UQVJHRVQgICAweGQKLSNkZWZpbmUgRE9WRV9NQlVTX1ND UkFUQ0hQQURfQVRUUiAgICAgMHgwCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogSS9PIEFk ZHJlc3MgTWFwcGluZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG1hcF9k ZXNjIF9fbWF5YmVfdW51c2VkIGRvdmVfaW9fZGVzY1tdIF9faW5pdGRhdGEgPSB7Ci0JewotCQku dmlydHVhbAk9ICh1bnNpZ25lZCBsb25nKSBET1ZFX1NCX1JFR1NfVklSVF9CQVNFLAotCQkucGZu CQk9IF9fcGh5c190b19wZm4oRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSksCi0JCS5sZW5ndGgJCT0g RE9WRV9TQl9SRUdTX1NJWkUsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LCB7Ci0JCS52aXJ0 dWFsCT0gKHVuc2lnbmVkIGxvbmcpIERPVkVfTkJfUkVHU19WSVJUX0JBU0UsCi0JCS5wZm4JCT0g X19waHlzX3RvX3BmbihET1ZFX05CX1JFR1NfUEhZU19CQVNFKSwKLQkJLmxlbmd0aAkJPSBET1ZF X05CX1JFR1NfU0laRSwKLQkJLnR5cGUJCT0gTVRfREVWSUNFLAotCX0sCi19OwotCi12b2lkIF9f aW5pdCBkb3ZlX21hcF9pbyh2b2lkKQotewotCWlvdGFibGVfaW5pdChkb3ZlX2lvX2Rlc2MsIEFS UkFZX1NJWkUoZG92ZV9pb19kZXNjKSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICog Q0xLIHRyZWUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIGludCBkb3ZlX3RjbGs7Ci0K LXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soZ2F0aW5nX2xvY2spOwotc3RhdGljIHN0cnVjdCBjbGsg KnRjbGs7Ci0KLXN0YXRpYyBzdHJ1Y3QgY2xrIF9faW5pdCAqZG92ZV9yZWdpc3Rlcl9nYXRlKGNv bnN0IGNoYXIgKm5hbWUsCi0JCQkJCSAgICAgY29uc3QgY2hhciAqcGFyZW50LCB1OCBiaXRfaWR4 KQotewotCXJldHVybiBjbGtfcmVnaXN0ZXJfZ2F0ZShOVUxMLCBuYW1lLCBwYXJlbnQsIDAsCi0J CQkJICh2b2lkIF9faW9tZW0gKilDTE9DS19HQVRJTkdfQ09OVFJPTCwKLQkJCQkgYml0X2lkeCwg MCwgJmdhdGluZ19sb2NrKTsKLX0KLQotc3RhdGljIHZvaWQgX19pbml0IGRvdmVfY2xrX2luaXQo dm9pZCkKLXsKLQlzdHJ1Y3QgY2xrICp1c2IwLCAqdXNiMSwgKnNhdGEsICpwZXgwLCAqcGV4MSwg KnNkaW8wLCAqc2RpbzE7Ci0Jc3RydWN0IGNsayAqbmFuZCwgKmNhbWVyYSwgKmkyczAsICppMnMx LCAqY3J5cHRvLCAqYWM5NywgKnBkbWE7Ci0Jc3RydWN0IGNsayAqeG9yMCwgKnhvcjEsICpnZTsK LQotCXRjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShOVUxMLCAidGNsayIsIE5VTEwsIDAs IGRvdmVfdGNsayk7Ci0KLQl1c2IwID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJ1c2IwIiwgInRjbGsi LCBDTE9DS19HQVRJTkdfQklUX1VTQjApOwotCXVzYjEgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoInVz YjEiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfVVNCMSk7Ci0Jc2F0YSA9IGRvdmVfcmVnaXN0 ZXJfZ2F0ZSgic2F0YSIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9TQVRBKTsKLQlwZXgwID0g ZG92ZV9yZWdpc3Rlcl9nYXRlKCJwZXgwIiwgInRjbGsiLCBDTE9DS19HQVRJTkdfQklUX1BDSUUw KTsKLQlwZXgxID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJwZXgxIiwgInRjbGsiLCBDTE9DS19HQVRJ TkdfQklUX1BDSUUxKTsKLQlzZGlvMCA9IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgic2RpbzAiLCAidGNs ayIsIENMT0NLX0dBVElOR19CSVRfU0RJTzApOwotCXNkaW8xID0gZG92ZV9yZWdpc3Rlcl9nYXRl KCJzZGlvMSIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9TRElPMSk7Ci0JbmFuZCA9IGRvdmVf cmVnaXN0ZXJfZ2F0ZSgibmFuZCIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9OQU5EKTsKLQlj YW1lcmEgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoImNhbWVyYSIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5H X0JJVF9DQU1FUkEpOwotCWkyczAgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoImkyczAiLCAidGNsayIs IENMT0NLX0dBVElOR19CSVRfSTJTMCk7Ci0JaTJzMSA9IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgiaTJz MSIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9JMlMxKTsKLQljcnlwdG8gPSBkb3ZlX3JlZ2lz dGVyX2dhdGUoImNyeXB0byIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9DUllQVE8pOwotCWFj OTcgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUoImFjOTciLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRf QUM5Nyk7Ci0JcGRtYSA9IGRvdmVfcmVnaXN0ZXJfZ2F0ZSgicGRtYSIsICJ0Y2xrIiwgQ0xPQ0tf R0FUSU5HX0JJVF9QRE1BKTsKLQl4b3IwID0gZG92ZV9yZWdpc3Rlcl9nYXRlKCJ4b3IwIiwgInRj bGsiLCBDTE9DS19HQVRJTkdfQklUX1hPUjApOwotCXhvcjEgPSBkb3ZlX3JlZ2lzdGVyX2dhdGUo InhvcjEiLCAidGNsayIsIENMT0NLX0dBVElOR19CSVRfWE9SMSk7Ci0JZG92ZV9yZWdpc3Rlcl9n YXRlKCJnZXBoeSIsICJ0Y2xrIiwgQ0xPQ0tfR0FUSU5HX0JJVF9HSUdBX1BIWSk7Ci0JZ2UgPSBk b3ZlX3JlZ2lzdGVyX2dhdGUoImdlIiwgImdlcGh5IiwgQ0xPQ0tfR0FUSU5HX0JJVF9HQkUpOwot Ci0Jb3Jpb25fY2xrZGV2X2FkZChOVUxMLCAib3Jpb25fc3BpLjAiLCB0Y2xrKTsKLQlvcmlvbl9j bGtkZXZfYWRkKE5VTEwsICJvcmlvbl9zcGkuMSIsIHRjbGspOwotCW9yaW9uX2Nsa2Rldl9hZGQo TlVMTCwgIm9yaW9uX3dkdCIsIHRjbGspOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm12NjR4 eHhfaTJjLjAiLCB0Y2xrKTsKLQotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm9yaW9uLWVoY2ku MCIsIHVzYjApOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm9yaW9uLWVoY2kuMSIsIHVzYjEp OwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgIm12NjQzeHhfZXRoX3BvcnQuMCIsIGdlKTsKLQlv cmlvbl9jbGtkZXZfYWRkKE5VTEwsICJzYXRhX212LjAiLCBzYXRhKTsKLQlvcmlvbl9jbGtkZXZf YWRkKCIwIiwgInBjaWUiLCBwZXgwKTsKLQlvcmlvbl9jbGtkZXZfYWRkKCIxIiwgInBjaWUiLCBw ZXgxKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJzZGhjaS1kb3ZlLjAiLCBzZGlvMCk7Ci0J b3Jpb25fY2xrZGV2X2FkZChOVUxMLCAic2RoY2ktZG92ZS4xIiwgc2RpbzEpOwotCW9yaW9uX2Ns a2Rldl9hZGQoTlVMTCwgIm9yaW9uX25hbmQiLCBuYW5kKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5V TEwsICJjYWZlMTAwMC1jY2ljLjAiLCBjYW1lcmEpOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwg Im12ZWJ1LWF1ZGlvLjAiLCBpMnMwKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJtdmVidS1h dWRpby4xIiwgaTJzMSk7Ci0Jb3Jpb25fY2xrZGV2X2FkZChOVUxMLCAibXZfY3J5cHRvIiwgY3J5 cHRvKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJkb3ZlLWFjOTciLCBhYzk3KTsKLQlvcmlv bl9jbGtkZXZfYWRkKE5VTEwsICJkb3ZlLXBkbWEiLCBwZG1hKTsKLQlvcmlvbl9jbGtkZXZfYWRk KE5VTEwsIE1WX1hPUl9OQU1FICIuMCIsIHhvcjApOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwg TVZfWE9SX05BTUUgIi4xIiwgeG9yMSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICog RUhDSTAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgZG92ZV9laGNpMF9pbml0 KHZvaWQpCi17Ci0Jb3Jpb25fZWhjaV9pbml0KERPVkVfVVNCMF9QSFlTX0JBU0UsIElSUV9ET1ZF X1VTQjAsIEVIQ0lfUEhZX05BKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFSENJ MQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBkb3ZlX2VoY2kxX2luaXQodm9p ZCkKLXsKLQlvcmlvbl9laGNpXzFfaW5pdChET1ZFX1VTQjFfUEhZU19CQVNFLCBJUlFfRE9WRV9V U0IxKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHRTAwCi0gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KLXZvaWQgX19pbml0IGRvdmVfZ2UwMF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9w bGF0Zm9ybV9kYXRhICpldGhfZGF0YSkKLXsKLQlvcmlvbl9nZTAwX2luaXQoZXRoX2RhdGEsIERP VkVfR0UwMF9QSFlTX0JBU0UsCi0JCQlJUlFfRE9WRV9HRTAwX1NVTSwgSVJRX0RPVkVfR0UwMF9F UlIsCi0JCQkxNjAwKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTb0MgUlRDCi0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBkb3ZlX3J0Y19pbml0KHZv aWQpCi17Ci0Jb3Jpb25fcnRjX2luaXQoRE9WRV9SVENfUEhZU19CQVNFLCBJUlFfRE9WRV9SVEMp OwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNBVEEKLSAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotdm9pZCBfX2luaXQgZG92ZV9zYXRhX2luaXQoc3RydWN0IG12X3NhdGFfcGxhdGZvcm1f ZGF0YSAqc2F0YV9kYXRhKQotewotCW9yaW9uX3NhdGFfaW5pdChzYXRhX2RhdGEsIERPVkVfU0FU QV9QSFlTX0JBU0UsIElSUV9ET1ZFX1NBVEEpOwotCi19Ci0KLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogVUFSVDAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgZG92ZV91YXJ0 MF9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fdWFydDBfaW5pdChET1ZFX1VBUlQwX1ZJUlRfQkFTRSwg RE9WRV9VQVJUMF9QSFlTX0JBU0UsCi0JCQkgSVJRX0RPVkVfVUFSVF8wLCB0Y2xrKTsKLX0KLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiBVQVJUMQotICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12 b2lkIF9faW5pdCBkb3ZlX3VhcnQxX2luaXQodm9pZCkKLXsKLQlvcmlvbl91YXJ0MV9pbml0KERP VkVfVUFSVDFfVklSVF9CQVNFLCBET1ZFX1VBUlQxX1BIWVNfQkFTRSwKLQkJCSBJUlFfRE9WRV9V QVJUXzEsIHRjbGspOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFVBUlQyCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IGRvdmVfdWFydDJfaW5pdCh2b2lkKQotewot CW9yaW9uX3VhcnQyX2luaXQoRE9WRV9VQVJUMl9WSVJUX0JBU0UsIERPVkVfVUFSVDJfUEhZU19C QVNFLAotCQkJIElSUV9ET1ZFX1VBUlRfMiwgdGNsayk7Ci19Ci0KLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgotICogVUFSVDMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgZG92ZV91 YXJ0M19pbml0KHZvaWQpCi17Ci0Jb3Jpb25fdWFydDNfaW5pdChET1ZFX1VBUlQzX1ZJUlRfQkFT RSwgRE9WRV9VQVJUM19QSFlTX0JBU0UsCi0JCQkgSVJRX0RPVkVfVUFSVF8zLCB0Y2xrKTsKLX0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTUEkKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot dm9pZCBfX2luaXQgZG92ZV9zcGkwX2luaXQodm9pZCkKLXsKLQlvcmlvbl9zcGlfaW5pdChET1ZF X1NQSTBfUEhZU19CQVNFKTsKLX0KLQotdm9pZCBfX2luaXQgZG92ZV9zcGkxX2luaXQodm9pZCkK LXsKLQlvcmlvbl9zcGlfMV9pbml0KERPVkVfU1BJMV9QSFlTX0JBU0UpOwotfQotCi0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKLSAqIEkyQwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5p dCBkb3ZlX2kyY19pbml0KHZvaWQpCi17Ci0Jb3Jpb25faTJjX2luaXQoRE9WRV9JMkNfUEhZU19C QVNFLCBJUlFfRE9WRV9JMkMsIDEwKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBU aW1lIGhhbmRsaW5nCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IGRvdmVfaW5p dF9lYXJseSh2b2lkKQotewotCW9yaW9uX3RpbWVfc2V0X2Jhc2UoVElNRVJfVklSVF9CQVNFKTsK LQltdmVidV9tYnVzX2luaXQoIm1hcnZlbGwsZG92ZS1tYnVzIiwKLQkJCUJSSURHRV9XSU5TX0JB U0UsIEJSSURHRV9XSU5TX1NaLAotCQkJRE9WRV9NQ19XSU5TX0JBU0UsIERPVkVfTUNfV0lOU19T Wik7Ci19Ci0KLXN0YXRpYyBpbnQgX19pbml0IGRvdmVfZmluZF90Y2xrKHZvaWQpCi17Ci0JcmV0 dXJuIDE2NjY2NjY2NzsKLX0KLQotdm9pZCBfX2luaXQgZG92ZV90aW1lcl9pbml0KHZvaWQpCi17 Ci0JZG92ZV90Y2xrID0gZG92ZV9maW5kX3RjbGsoKTsKLQlvcmlvbl90aW1lX2luaXQoQlJJREdF X1ZJUlRfQkFTRSwgQlJJREdFX0lOVF9USU1FUjFfQ0xSLAotCQkJSVJRX0RPVkVfQlJJREdFLCBk b3ZlX3RjbGspOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFhPUiAwCi0gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBkb3ZlX3hvcjBfaW5pdCh2b2lkKQot ewotCW9yaW9uX3hvcjBfaW5pdChET1ZFX1hPUjBfUEhZU19CQVNFLCBET1ZFX1hPUjBfSElHSF9Q SFlTX0JBU0UsCi0JCQlJUlFfRE9WRV9YT1JfMDAsIElSUV9ET1ZFX1hPUl8wMSk7Ci19Ci0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogWE9SIDEKLSAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3Rh dGljIHZvaWQgX19pbml0IGRvdmVfeG9yMV9pbml0KHZvaWQpCi17Ci0Jb3Jpb25feG9yMV9pbml0 KERPVkVfWE9SMV9QSFlTX0JBU0UsIERPVkVfWE9SMV9ISUdIX1BIWVNfQkFTRSwKLQkJCUlSUV9E T1ZFX1hPUl8xMCwgSVJRX0RPVkVfWE9SXzExKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBTRElPCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB1NjQgc2Rpb19kbWFtYXNr ID0gRE1BX0JJVF9NQVNLKDMyKTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBkb3ZlX3NkaW8w X3Jlc291cmNlc1tdID0gewotCXsKLQkJLnN0YXJ0CT0gRE9WRV9TRElPMF9QSFlTX0JBU0UsCi0J CS5lbmQJPSBET1ZFX1NESU8wX1BIWVNfQkFTRSArIDB4ZmYsCi0JCS5mbGFncwk9IElPUkVTT1VS Q0VfTUVNLAotCX0sIHsKLQkJLnN0YXJ0CT0gSVJRX0RPVkVfU0RJTzAsCi0JCS5lbmQJPSBJUlFf RE9WRV9TRElPMCwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGRvdmVfc2RpbzAgPSB7Ci0JLm5hbWUJCT0gInNkaGNp LWRvdmUiLAotCS5pZAkJPSAwLAotCS5kZXYJCT0gewotCQkuZG1hX21hc2sJCT0gJnNkaW9fZG1h bWFzaywKLQkJLmNvaGVyZW50X2RtYV9tYXNrCT0gRE1BX0JJVF9NQVNLKDMyKSwKLQl9LAotCS5y ZXNvdXJjZQk9IGRvdmVfc2RpbzBfcmVzb3VyY2VzLAotCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlf U0laRShkb3ZlX3NkaW8wX3Jlc291cmNlcyksCi19OwotCi12b2lkIF9faW5pdCBkb3ZlX3NkaW8w X2luaXQodm9pZCkKLXsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmRvdmVfc2RpbzApOwot fQotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIGRvdmVfc2RpbzFfcmVzb3VyY2VzW10gPSB7Ci0J ewotCQkuc3RhcnQJPSBET1ZFX1NESU8xX1BIWVNfQkFTRSwKLQkJLmVuZAk9IERPVkVfU0RJTzFf UEhZU19CQVNFICsgMHhmZiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0JfSwgewotCQku c3RhcnQJPSBJUlFfRE9WRV9TRElPMSwKLQkJLmVuZAk9IElSUV9ET1ZFX1NESU8xLAotCQkuZmxh Z3MJPSBJT1JFU09VUkNFX0lSUSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgZG92ZV9zZGlvMSA9IHsKLQkubmFtZQkJPSAic2RoY2ktZG92ZSIsCi0JLmlkCQk9IDEs Ci0JLmRldgkJPSB7Ci0JCS5kbWFfbWFzawkJPSAmc2Rpb19kbWFtYXNrLAotCQkuY29oZXJlbnRf ZG1hX21hc2sJPSBETUFfQklUX01BU0soMzIpLAotCX0sCi0JLnJlc291cmNlCT0gZG92ZV9zZGlv MV9yZXNvdXJjZXMsCi0JLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKGRvdmVfc2RpbzFfcmVz b3VyY2VzKSwKLX07Ci0KLXZvaWQgX19pbml0IGRvdmVfc2RpbzFfaW5pdCh2b2lkKQotewotCXBs YXRmb3JtX2RldmljZV9yZWdpc3RlcigmZG92ZV9zZGlvMSk7Ci19Ci0KLXZvaWQgX19pbml0IGRv dmVfc2V0dXBfY3B1X3dpbnModm9pZCkKLXsKLQkvKgotCSAqIFRoZSBQQ0llIHdpbmRvd3Mgd2ls bCBubyBsb25nZXIgYmUgc3RhdGljYWxseSBhbGxvY2F0ZWQKLQkgKiBoZXJlIG9uY2UgRG92ZSBp cyBtaWdyYXRlZCB0byB0aGUgcGNpLW12ZWJ1IGRyaXZlci4gVGhlCi0JICogbm9uLVBDSWUgd2lu ZG93cyB3aWxsIG5vIGxvbmdlciBiZSBjcmVhdGVkIGhlcmUgb25jZSBEb3ZlCi0JICogZnVsbHkg bW92ZXMgdG8gRFQuCi0JICovCi0JbXZlYnVfbWJ1c19hZGRfd2luZG93X3JlbWFwX2J5X2lkKERP VkVfTUJVU19QQ0lFMF9JT19UQVJHRVQsCi0JCQkJCSAgRE9WRV9NQlVTX1BDSUUwX0lPX0FUVFIs Ci0JCQkJCSAgRE9WRV9QQ0lFMF9JT19QSFlTX0JBU0UsCi0JCQkJCSAgRE9WRV9QQ0lFMF9JT19T SVpFLAotCQkJCQkgIERPVkVfUENJRTBfSU9fQlVTX0JBU0UpOwotCW12ZWJ1X21idXNfYWRkX3dp bmRvd19yZW1hcF9ieV9pZChET1ZFX01CVVNfUENJRTFfSU9fVEFSR0VULAotCQkJCQkgIERPVkVf TUJVU19QQ0lFMV9JT19BVFRSLAotCQkJCQkgIERPVkVfUENJRTFfSU9fUEhZU19CQVNFLAotCQkJ CQkgIERPVkVfUENJRTFfSU9fU0laRSwKLQkJCQkJICBET1ZFX1BDSUUxX0lPX0JVU19CQVNFKTsK LQltdmVidV9tYnVzX2FkZF93aW5kb3dfYnlfaWQoRE9WRV9NQlVTX1BDSUUwX01FTV9UQVJHRVQs Ci0JCQkJICAgIERPVkVfTUJVU19QQ0lFMF9NRU1fQVRUUiwKLQkJCQkgICAgRE9WRV9QQ0lFMF9N RU1fUEhZU19CQVNFLAotCQkJCSAgICBET1ZFX1BDSUUwX01FTV9TSVpFKTsKLQltdmVidV9tYnVz X2FkZF93aW5kb3dfYnlfaWQoRE9WRV9NQlVTX1BDSUUxX01FTV9UQVJHRVQsCi0JCQkJICAgIERP VkVfTUJVU19QQ0lFMV9NRU1fQVRUUiwKLQkJCQkgICAgRE9WRV9QQ0lFMV9NRU1fUEhZU19CQVNF LAotCQkJCSAgICBET1ZFX1BDSUUxX01FTV9TSVpFKTsKLQltdmVidV9tYnVzX2FkZF93aW5kb3df YnlfaWQoRE9WRV9NQlVTX0NFU0FfVEFSR0VULAotCQkJCSAgICBET1ZFX01CVVNfQ0VTQV9BVFRS LAotCQkJCSAgICBET1ZFX0NFU0FfUEhZU19CQVNFLAotCQkJCSAgICBET1ZFX0NFU0FfU0laRSk7 Ci0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKERPVkVfTUJVU19CT09UUk9NX1RBUkdFVCwK LQkJCQkgICAgRE9WRV9NQlVTX0JPT1RST01fQVRUUiwKLQkJCQkgICAgRE9WRV9CT09UUk9NX1BI WVNfQkFTRSwKLQkJCQkgICAgRE9WRV9CT09UUk9NX1NJWkUpOwotCW12ZWJ1X21idXNfYWRkX3dp bmRvd19ieV9pZChET1ZFX01CVVNfU0NSQVRDSFBBRF9UQVJHRVQsCi0JCQkJICAgIERPVkVfTUJV U19TQ1JBVENIUEFEX0FUVFIsCi0JCQkJICAgIERPVkVfU0NSQVRDSFBBRF9QSFlTX0JBU0UsCi0J CQkJICAgIERPVkVfU0NSQVRDSFBBRF9TSVpFKTsKLX0KLQotc3RhdGljIHN0cnVjdCByZXNvdXJj ZSBvcmlvbl93ZHRfcmVzb3VyY2VbXSA9IHsKLQkJREVGSU5FX1JFU19NRU0oVElNRVJfUEhZU19C QVNFLCAweDA0KSwKLQkJREVGSU5FX1JFU19NRU0oUlNUT1VUbl9NQVNLX1BIWVMsIDB4MDQpLAot fTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fd2R0X2RldmljZSA9IHsK LQkubmFtZQkJPSAib3Jpb25fd2R0IiwKLQkuaWQJCT0gLTEsCi0JLm51bV9yZXNvdXJjZXMJPSBB UlJBWV9TSVpFKG9yaW9uX3dkdF9yZXNvdXJjZSksCi0JLnJlc291cmNlCT0gb3Jpb25fd2R0X3Jl c291cmNlLAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IF9fbWF5YmVfdW51c2VkIG9yaW9uX3dk dF9pbml0KHZvaWQpCi17Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl93ZHRfZGV2 aWNlKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkb3ZlX3BtdV9kb21haW5faW5pdGRhdGEg cG11X2RvbWFpbnNbXSBfX2luaXRjb25zdCA9IHsKLQl7Ci0JCS5wd3JfbWFzayA9IFBNVV9QV1Jf VlBVX1BXUl9EV05fTUFTSywKLQkJLnJzdF9tYXNrID0gUE1VX1NXX1JTVF9WSURFT19NQVNLLAot CQkuaXNvX21hc2sgPSBQTVVfSVNPX1ZJREVPX01BU0ssCi0JCS5uYW1lID0gInZwdS1kb21haW4i LAotCX0sIHsKLQkJLnB3cl9tYXNrID0gUE1VX1BXUl9HUFVfUFdSX0RXTl9NQVNLLAotCQkucnN0 X21hc2sgPSBQTVVfU1dfUlNUX0dQVV9NQVNLLAotCQkuaXNvX21hc2sgPSBQTVVfSVNPX0dQVV9N QVNLLAotCQkubmFtZSA9ICJncHUtZG9tYWluIiwKLQl9LCB7Ci0JCS8qIHNlbnRpbmVsICovCi0J fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZG92ZV9wbXVfaW5pdGRhdGEgcG11X2RhdGEg X19pbml0Y29uc3QgPSB7Ci0JLnBtY19iYXNlID0gRE9WRV9QTVVfVklSVF9CQVNFLAotCS5wbXVf YmFzZSA9IERPVkVfUE1VX1ZJUlRfQkFTRSArIDB4ODAwMCwKLQkuaXJxID0gSVJRX0RPVkVfUE1V LAotCS5pcnFfZG9tYWluX3N0YXJ0ID0gSVJRX0RPVkVfUE1VX1NUQVJULAotCS5kb21haW5zID0g cG11X2RvbWFpbnMsCi19OwotCi12b2lkIF9faW5pdCBkb3ZlX2luaXQodm9pZCkKLXsKLQlwcl9p bmZvKCJEb3ZlIDg4QVA1MTAgU29DLCBUQ0xLID0gJWQgTUh6LlxuIiwKLQkJKGRvdmVfdGNsayAr IDQ5OTk5OSkgLyAxMDAwMDAwKTsKLQotI2lmZGVmIENPTkZJR19DQUNIRV9UQVVST1MyCi0JdGF1 cm9zMl9pbml0KDApOwotI2VuZGlmCi0JZG92ZV9zZXR1cF9jcHVfd2lucygpOwotCi0JLyogU2V0 dXAgcm9vdCBvZiBjbGsgdHJlZSAqLwotCWRvdmVfY2xrX2luaXQoKTsKLQotCS8qIGludGVybmFs IGRldmljZXMgdGhhdCBldmVyeSBib2FyZCBoYXMgKi8KLQlkb3ZlX2luaXRfcG11X2xlZ2FjeSgm cG11X2RhdGEpOwotCWRvdmVfcnRjX2luaXQoKTsKLQlkb3ZlX3hvcjBfaW5pdCgpOwotCWRvdmVf eG9yMV9pbml0KCk7Ci19Ci0KLXZvaWQgZG92ZV9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9k ZSwgY29uc3QgY2hhciAqY21kKQotewotCS8qCi0JICogRW5hYmxlIHNvZnQgcmVzZXQgdG8gYXNz ZXJ0IFJTVE9VVG4uCi0JICovCi0Jd3JpdGVsKFNPRlRfUkVTRVRfT1VUX0VOLCBSU1RPVVRuX01B U0spOwotCi0JLyoKLQkgKiBBc3NlcnQgc29mdCByZXNldC4KLQkgKi8KLQl3cml0ZWwoU09GVF9S RVNFVCwgU1lTVEVNX1NPRlRfUkVTRVQpOwotCi0Jd2hpbGUgKDEpCi0JCTsKLX0KZGlmZiAtLWdp dCBhL2FyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uaCBiL2FyY2gvYXJtL21hY2gtZG92ZS9jb21t b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdlYmM0MTNkNjhjLi4wMDAwMDAw MDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAg LTEsNDYgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAq LwotLyoKLSAqIGFyY2gvYXJtL21hY2gtZG92ZS9jb21tb24uaAotICoKLSAqIENvcmUgZnVuY3Rp b25zIGZvciBNYXJ2ZWxsIERvdmUgODhBUDUxMCBTeXN0ZW0gT24gQ2hpcAotICovCi0KLSNpZm5k ZWYgX19BUkNIX0RPVkVfQ09NTU9OX0gKLSNkZWZpbmUgX19BUkNIX0RPVkVfQ09NTU9OX0gKLQot I2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgotCi1zdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1f ZGF0YTsKLXN0cnVjdCBtdl9zYXRhX3BsYXRmb3JtX2RhdGE7Ci0KLWV4dGVybiB2b2lkIGRvdmVf dGltZXJfaW5pdCh2b2lkKTsKLQotLyoKLSAqIEJhc2ljIERvdmUgaW5pdCBmdW5jdGlvbnMgdXNl ZCBlYXJseSBieSBtYWNoaW5lLXNldHVwLgotICovCi12b2lkIGRvdmVfbWFwX2lvKHZvaWQpOwot dm9pZCBkb3ZlX2luaXQodm9pZCk7Ci12b2lkIGRvdmVfaW5pdF9lYXJseSh2b2lkKTsKLXZvaWQg ZG92ZV9pbml0X2lycSh2b2lkKTsKLXZvaWQgZG92ZV9zZXR1cF9jcHVfd2lucyh2b2lkKTsKLXZv aWQgZG92ZV9nZTAwX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9k YXRhKTsKLXZvaWQgZG92ZV9zYXRhX2luaXQoc3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSAq c2F0YV9kYXRhKTsKLSNpZmRlZiBDT05GSUdfUENJCi12b2lkIGRvdmVfcGNpZV9pbml0KGludCBp bml0X3BvcnQwLCBpbnQgaW5pdF9wb3J0MSk7Ci0jZWxzZQotc3RhdGljIGlubGluZSB2b2lkIGRv dmVfcGNpZV9pbml0KGludCBpbml0X3BvcnQwLCBpbnQgaW5pdF9wb3J0MSkgeyB9Ci0jZW5kaWYK LXZvaWQgZG92ZV9laGNpMF9pbml0KHZvaWQpOwotdm9pZCBkb3ZlX2VoY2kxX2luaXQodm9pZCk7 Ci12b2lkIGRvdmVfdWFydDBfaW5pdCh2b2lkKTsKLXZvaWQgZG92ZV91YXJ0MV9pbml0KHZvaWQp Owotdm9pZCBkb3ZlX3VhcnQyX2luaXQodm9pZCk7Ci12b2lkIGRvdmVfdWFydDNfaW5pdCh2b2lk KTsKLXZvaWQgZG92ZV9zcGkwX2luaXQodm9pZCk7Ci12b2lkIGRvdmVfc3BpMV9pbml0KHZvaWQp Owotdm9pZCBkb3ZlX2kyY19pbml0KHZvaWQpOwotdm9pZCBkb3ZlX3NkaW8wX2luaXQodm9pZCk7 Ci12b2lkIGRvdmVfc2RpbzFfaW5pdCh2b2lkKTsKLXZvaWQgZG92ZV9yZXN0YXJ0KGVudW0gcmVi b290X21vZGUsIGNvbnN0IGNoYXIgKik7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v bWFjaC1kb3ZlL2RvdmUuaCBiL2FyY2gvYXJtL21hY2gtZG92ZS9kb3ZlLmgKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGU1MDU0ZTNiMGI3OC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gv YXJtL21hY2gtZG92ZS9kb3ZlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwotLyogR2VuZXJpYyBkZWZp bml0aW9ucyBmb3IgTWFydmVsbCBEb3ZlIDg4QVA1MTAgU29DICovCi0KLSNpZm5kZWYgX19BU01f QVJDSF9ET1ZFX0gKLSNkZWZpbmUgX19BU01fQVJDSF9ET1ZFX0gKLQotI2luY2x1ZGUgImlycXMu aCIKLQotLyoKLSAqIE1hcnZlbGwgRG92ZSBhZGRyZXNzIG1hcHMuCi0gKgotICogcGh5cwkJdmly dAkJc2l6ZQotICogYzgwMDAwMDAJZmRiMDAwMDAJMU0JQ3J5cHRvZ3JhcGhpYyBTUkFNCi0gKiBl MDAwMDAwMAlAcnVudGltZQkxMjhNCVBDSWUtMCBNZW1vcnkgc3BhY2UKLSAqIGU4MDAwMDAwCUBy dW50aW1lCTEyOE0JUENJZS0xIE1lbW9yeSBzcGFjZQotICogZjEwMDAwMDAJZmVjMDAwMDAJMU0J b24tY2hpcCBzb3V0aC1icmlkZ2UgcmVnaXN0ZXJzCi0gKiBmMTgwMDAwMAlmZTQwMDAwMAk4TQlv bi1jaGlwIG5vcnRoLWJyaWRnZSByZWdpc3RlcnMKLSAqIGYyMDAwMDAwCWZlZTAwMDAwCTFNCVBD SWUtMCBJL08gc3BhY2UKLSAqIGYyMTAwMDAwCWZlZjAwMDAwCTFNCVBDSWUtMSBJL08gc3BhY2UK LSAqLwotCi0jZGVmaW5lIERPVkVfQ0VTQV9QSFlTX0JBU0UJCTB4YzgwMDAwMDAKLSNkZWZpbmUg RE9WRV9DRVNBX1ZJUlRfQkFTRQkJSU9NRU0oMHhmZGIwMDAwMCkKLSNkZWZpbmUgRE9WRV9DRVNB X1NJWkUJCQlTWl8xTQotCi0jZGVmaW5lIERPVkVfUENJRTBfTUVNX1BIWVNfQkFTRQkweGUwMDAw MDAwCi0jZGVmaW5lIERPVkVfUENJRTBfTUVNX1NJWkUJCVNaXzEyOE0KLQotI2RlZmluZSBET1ZF X1BDSUUxX01FTV9QSFlTX0JBU0UJMHhlODAwMDAwMAotI2RlZmluZSBET1ZFX1BDSUUxX01FTV9T SVpFCQlTWl8xMjhNCi0KLSNkZWZpbmUgRE9WRV9CT09UUk9NX1BIWVNfQkFTRQkJMHhmODAwMDAw MAotI2RlZmluZSBET1ZFX0JPT1RST01fU0laRQkJU1pfMTI4TQotCi0jZGVmaW5lIERPVkVfU0NS QVRDSFBBRF9QSFlTX0JBU0UJMHhmMDAwMDAwMAotI2RlZmluZSBET1ZFX1NDUkFUQ0hQQURfVklS VF9CQVNFCUlPTUVNKDB4ZmRkMDAwMDApCi0jZGVmaW5lIERPVkVfU0NSQVRDSFBBRF9TSVpFCQlT Wl8xTQotCi0jZGVmaW5lIERPVkVfU0JfUkVHU19QSFlTX0JBU0UJCTB4ZjEwMDAwMDAKLSNkZWZp bmUgRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRQkJSU9NRU0oMHhmZWMwMDAwMCkKLSNkZWZpbmUgRE9W RV9TQl9SRUdTX1NJWkUJCVNaXzFNCi0KLSNkZWZpbmUgRE9WRV9OQl9SRUdTX1BIWVNfQkFTRQkJ MHhmMTgwMDAwMAotI2RlZmluZSBET1ZFX05CX1JFR1NfVklSVF9CQVNFCQlJT01FTSgweGZlNDAw MDAwKQotI2RlZmluZSBET1ZFX05CX1JFR1NfU0laRQkJU1pfOE0KLQotI2RlZmluZSBET1ZFX1BD SUUwX0lPX1BIWVNfQkFTRQkJMHhmMjAwMDAwMAotI2RlZmluZSBET1ZFX1BDSUUwX0lPX0JVU19C QVNFCQkweDAwMDAwMDAwCi0jZGVmaW5lIERPVkVfUENJRTBfSU9fU0laRQkJU1pfNjRLCi0KLSNk ZWZpbmUgRE9WRV9QQ0lFMV9JT19QSFlTX0JBU0UJCTB4ZjIxMDAwMDAKLSNkZWZpbmUgRE9WRV9Q Q0lFMV9JT19CVVNfQkFTRQkJMHgwMDAxMDAwMAotI2RlZmluZSBET1ZFX1BDSUUxX0lPX1NJWkUJ CVNaXzY0SwotCi0vKgotICogRG92ZSBDb3JlIFJlZ2lzdGVycyBNYXAKLSAqLwotCi0vKiBTUEks IEkyQywgVUFSVCAqLwotI2RlZmluZSBET1ZFX0kyQ19QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19Q SFlTX0JBU0UgKyAweDExMDAwKQotI2RlZmluZSBET1ZFX1VBUlQwX1BIWVNfQkFTRQkoRE9WRV9T Ql9SRUdTX1BIWVNfQkFTRSArIDB4MTIwMDApCi0jZGVmaW5lIERPVkVfVUFSVDBfVklSVF9CQVNF CShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHgxMjAwMCkKLSNkZWZpbmUgRE9WRV9VQVJUMV9Q SFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweDEyMTAwKQotI2RlZmluZSBET1ZF X1VBUlQxX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4MTIxMDApCi0jZGVm aW5lIERPVkVfVUFSVDJfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHgxMjIw MCkKLSNkZWZpbmUgRE9WRV9VQVJUMl9WSVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJUX0JBU0Ug KyAweDEyMjAwKQotI2RlZmluZSBET1ZFX1VBUlQzX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BI WVNfQkFTRSArIDB4MTIzMDApCi0jZGVmaW5lIERPVkVfVUFSVDNfVklSVF9CQVNFCShET1ZFX1NC X1JFR1NfVklSVF9CQVNFICsgMHgxMjMwMCkKLSNkZWZpbmUgRE9WRV9TUEkwX1BIWVNfQkFTRQko RE9WRV9TQl9SRUdTX1BIWVNfQkFTRSArIDB4MTA2MDApCi0jZGVmaW5lIERPVkVfU1BJMV9QSFlT X0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweDE0NjAwKQotCi0vKiBOb3J0aC1Tb3V0 aCBCcmlkZ2UgKi8KLSNkZWZpbmUgQlJJREdFX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRf QkFTRSArIDB4MjAwMDApCi0jZGVmaW5lIEJSSURHRV9QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19Q SFlTX0JBU0UgKyAweDIwMDAwKQotI2RlZmluZSAgQlJJREdFX1dJTlNfQkFTRSAgICAgICAoQlJJ REdFX1BIWVNfQkFTRSkKLSNkZWZpbmUgIEJSSURHRV9XSU5TX1NaICAgICAgICAgKDB4ODApCi0K LS8qIENyeXB0b2dyYXBoaWMgRW5naW5lICovCi0jZGVmaW5lIERPVkVfQ1JZUFRfUEhZU19CQVNF CShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHgzMDAwMCkKLQotLyogUENJZSAwICovCi0jZGVm aW5lIERPVkVfUENJRTBfVklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHg0MDAw MCkKLQotLyogVVNCICovCi0jZGVmaW5lIERPVkVfVVNCMF9QSFlTX0JBU0UJKERPVkVfU0JfUkVH U19QSFlTX0JBU0UgKyAweDUwMDAwKQotI2RlZmluZSBET1ZFX1VTQjFfUEhZU19CQVNFCShET1ZF X1NCX1JFR1NfUEhZU19CQVNFICsgMHg1MTAwMCkKLQotLyogWE9SIDAgRW5naW5lICovCi0jZGVm aW5lIERPVkVfWE9SMF9QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweDYwODAw KQotI2RlZmluZSBET1ZFX1hPUjBfVklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsg MHg2MDgwMCkKLSNkZWZpbmUgRE9WRV9YT1IwX0hJR0hfUEhZU19CQVNFCShET1ZFX1NCX1JFR1Nf UEhZU19CQVNFICsgMHg2MEEwMCkKLSNkZWZpbmUgRE9WRV9YT1IwX0hJR0hfVklSVF9CQVNFCShE T1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHg2MEEwMCkKLQotLyogWE9SIDEgRW5naW5lICovCi0j ZGVmaW5lIERPVkVfWE9SMV9QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweDYw OTAwKQotI2RlZmluZSBET1ZFX1hPUjFfVklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNF ICsgMHg2MDkwMCkKLSNkZWZpbmUgRE9WRV9YT1IxX0hJR0hfUEhZU19CQVNFCShET1ZFX1NCX1JF R1NfUEhZU19CQVNFICsgMHg2MEIwMCkKLSNkZWZpbmUgRE9WRV9YT1IxX0hJR0hfVklSVF9CQVNF CShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHg2MEIwMCkKLQotLyogR2lnYWJpdCBFdGhlcm5l dCAqLwotI2RlZmluZSBET1ZFX0dFMDBfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNF ICsgMHg3MDAwMCkKLQotLyogUENJZSAxICovCi0jZGVmaW5lIERPVkVfUENJRTFfVklSVF9CQVNF CShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHg4MDAwMCkKLQotLyogQ0FGRSAqLwotI2RlZmlu ZSBET1ZFX1NESU8wX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNfQkFTRSArIDB4OTIwMDAp Ci0jZGVmaW5lIERPVkVfU0RJTzFfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsg MHg5MDAwMCkKLSNkZWZpbmUgRE9WRV9DQU1fUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19C QVNFICsgMHg5NDAwMCkKLSNkZWZpbmUgRE9WRV9DQUZFX1dJTl9QSFlTX0JBU0UJKERPVkVfU0Jf UkVHU19QSFlTX0JBU0UgKyAweDk4MDAwKQotCi0vKiBTQVRBICovCi0jZGVmaW5lIERPVkVfU0FU QV9QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweGEwMDAwKQotCi0vKiBJMlMv U1BESUYgKi8KLSNkZWZpbmUgRE9WRV9BVUQwX1BIWVNfQkFTRQkoRE9WRV9TQl9SRUdTX1BIWVNf QkFTRSArIDB4YjAwMDApCi0jZGVmaW5lIERPVkVfQVVEMV9QSFlTX0JBU0UJKERPVkVfU0JfUkVH U19QSFlTX0JBU0UgKyAweGI0MDAwKQotCi0vKiBOQU5EIEZsYXNoIENvbnRyb2xsZXIgKi8KLSNk ZWZpbmUgRE9WRV9ORkNfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsgMHhjMDAw MCkKLQotLyogTVBQLCBHUElPLCBSZXNldCBTYW1wbGluZyAqLwotI2RlZmluZSBET1ZFX01QUF9W SVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJUX0JBU0UgKyAweGQwMjAwKQotI2RlZmluZSBET1ZF X1BNVV9NUFBfR0VORVJBTF9DVFJMIChET1ZFX01QUF9WSVJUX0JBU0UgKyAweDEwKQotI2RlZmlu ZSBET1ZFX1JFU0VUX1NBTVBMRV9MTwkoRE9WRV9NUFBfVklSVF9CQVNFICsgMHgwMTQpCi0jZGVm aW5lIERPVkVfUkVTRVRfU0FNUExFX0hJCShET1ZFX01QUF9WSVJUX0JBU0UgKyAweDAxOCkKLSNk ZWZpbmUgRE9WRV9HUElPX0xPX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4 ZDA0MDApCi0jZGVmaW5lIERPVkVfR1BJT19ISV9WSVJUX0JBU0UJKERPVkVfU0JfUkVHU19WSVJU X0JBU0UgKyAweGQwNDIwKQotI2RlZmluZSBET1ZFX0dQSU8yX1ZJUlRfQkFTRSAgICAoRE9WRV9T Ql9SRUdTX1ZJUlRfQkFTRSArIDB4ZTg0MDApCi0jZGVmaW5lIERPVkVfTVBQX0dFTkVSQUxfVklS VF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHhlODAzYykKLSNkZWZpbmUgIERPVkVf QVUxX1NQRElGT19HUElPX0VOCSgxIDw8IDEpCi0jZGVmaW5lICBET1ZFX05BTkRfR1BJT19FTgkJ KDEgPDwgMCkKLSNkZWZpbmUgRE9WRV9NUFBfQ1RSTDRfVklSVF9CQVNFCShET1ZFX0dQSU9fTE9f VklSVF9CQVNFICsgMHg0MCkKLSNkZWZpbmUgIERPVkVfU1BJX0dQSU9fU0VMCQkoMSA8PCA1KQot I2RlZmluZSAgRE9WRV9VQVJUMV9HUElPX1NFTAkJKDEgPDwgNCkKLSNkZWZpbmUgIERPVkVfQVUx X0dQSU9fU0VMCQkoMSA8PCAzKQotI2RlZmluZSAgRE9WRV9DQU1fR1BJT19TRUwJCSgxIDw8IDIp Ci0jZGVmaW5lICBET1ZFX1NEMV9HUElPX1NFTAkJKDEgPDwgMSkKLSNkZWZpbmUgIERPVkVfU0Qw X0dQSU9fU0VMCQkoMSA8PCAwKQotCi0vKiBQb3dlciBNYW5hZ2VtZW50ICovCi0jZGVmaW5lIERP VkVfUE1VX1ZJUlRfQkFTRQkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4ZDAwMDApCi0jZGVm aW5lIERPVkVfUE1VX1NJR19DVFJMCShET1ZFX1BNVV9WSVJUX0JBU0UgKyAweDgwMmMpCi0KLS8q IFJlYWwgVGltZSBDbG9jayAqLwotI2RlZmluZSBET1ZFX1JUQ19QSFlTX0JBU0UJKERPVkVfU0Jf UkVHU19QSFlTX0JBU0UgKyAweGQ4NTAwKQotCi0vKiBBQzk3ICovCi0jZGVmaW5lIERPVkVfQUM5 N19QSFlTX0JBU0UJKERPVkVfU0JfUkVHU19QSFlTX0JBU0UgKyAweGUwMDAwKQotI2RlZmluZSBE T1ZFX0FDOTdfVklSVF9CQVNFCShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHhlMDAwMCkKLQot LyogUGVyaXBoZXJhbCBETUEgKi8KLSNkZWZpbmUgRE9WRV9QRE1BX1BIWVNfQkFTRQkoRE9WRV9T Ql9SRUdTX1BIWVNfQkFTRSArIDB4ZTQwMDApCi0jZGVmaW5lIERPVkVfUERNQV9WSVJUX0JBU0UJ KERPVkVfU0JfUkVHU19WSVJUX0JBU0UgKyAweGU0MDAwKQotCi0jZGVmaW5lIERPVkVfR0xPQkFM X0NPTkZJR18xCShET1ZFX1NCX1JFR1NfVklSVF9CQVNFICsgMHhlODAyQykKLSNkZWZpbmUgIERP VkVfVFdTSV9FTkFCTEVfT1BUSU9OMQkoMSA8PCA3KQotI2RlZmluZSBET1ZFX0dMT0JBTF9DT05G SUdfMgkoRE9WRV9TQl9SRUdTX1ZJUlRfQkFTRSArIDB4ZTgwMzApCi0jZGVmaW5lICBET1ZFX1RX U0lfRU5BQkxFX09QVElPTjIJKDEgPDwgMjApCi0jZGVmaW5lICBET1ZFX1RXU0lfRU5BQkxFX09Q VElPTjMJKDEgPDwgMjEpCi0jZGVmaW5lICBET1ZFX1RXU0lfT1BUSU9OM19HUElPCQkoMSA8PCAy MikKLSNkZWZpbmUgRE9WRV9TU1BfUEhZU19CQVNFCShET1ZFX1NCX1JFR1NfUEhZU19CQVNFICsg MHhlYzAwMCkKLSNkZWZpbmUgRE9WRV9TU1BfQ1RSTF9TVEFUVVNfMQkoRE9WRV9TQl9SRUdTX1ZJ UlRfQkFTRSArIDB4ZTgwMzQpCi0jZGVmaW5lICBET1ZFX1NTUF9PTl9BVTEJCSgxIDw8IDApCi0j ZGVmaW5lICBET1ZFX1NTUF9DTE9DS19FTkFCTEUJCSgxIDw8IDEpCi0jZGVmaW5lICBET1ZFX1NT UF9CUEJfQ0xPQ0tfU1JDX1NTUAkoMSA8PCAxMSkKLS8qIE1lbW9yeSBDb250cm9sbGVyICovCi0j ZGVmaW5lIERPVkVfTUNfUEhZU19CQVNFICAgICAgIChET1ZFX05CX1JFR1NfUEhZU19CQVNFICsg MHgwMDAwMCkKLSNkZWZpbmUgIERPVkVfTUNfV0lOU19CQVNFICAgICAgKERPVkVfTUNfUEhZU19C QVNFICsgMHgxMDApCi0jZGVmaW5lICBET1ZFX01DX1dJTlNfU1ogICAgICAgICgweDgpCi0jZGVm aW5lIERPVkVfTUNfVklSVF9CQVNFCShET1ZFX05CX1JFR1NfVklSVF9CQVNFICsgMHgwMDAwMCkK LQotLyogTENEIENvbnRyb2xsZXIgKi8KLSNkZWZpbmUgRE9WRV9MQ0RfUEhZU19CQVNFCShET1ZF X05CX1JFR1NfUEhZU19CQVNFICsgMHgxMDAwMCkKLSNkZWZpbmUgRE9WRV9MQ0QxX1BIWVNfQkFT RQkoRE9WRV9OQl9SRUdTX1BIWVNfQkFTRSArIDB4MjAwMDApCi0jZGVmaW5lIERPVkVfTENEMl9Q SFlTX0JBU0UJKERPVkVfTkJfUkVHU19QSFlTX0JBU0UgKyAweDEwMDAwKQotI2RlZmluZSBET1ZF X0xDRF9EQ09OX1BIWVNfQkFTRQkoRE9WRV9OQl9SRUdTX1BIWVNfQkFTRSArIDB4MzAwMDApCi0K LS8qIEdyYXBoaWMgRW5naW5lICovCi0jZGVmaW5lIERPVkVfR1BVX1BIWVNfQkFTRQkoRE9WRV9O Ql9SRUdTX1BIWVNfQkFTRSArIDB4NDAwMDApCi0KLS8qIFZpZGVvIEVuZ2luZSAqLwotI2RlZmlu ZSBET1ZFX1ZQVV9QSFlTX0JBU0UJKERPVkVfTkJfUkVHU19QSFlTX0JBU0UgKyAweDQwMDAwMCkK LQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvaXJxLmMgYi9hcmNoL2Fy bS9tYWNoLWRvdmUvaXJxLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyN2E4Zjg3 YmMyZS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtZG92ZS9pcnEuYworKysgL2Rl di9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLWRvdmUvaXJxLmMKLSAqCi0gKiBEb3ZlIElS USBoYW5kbGluZy4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51 eC9pcnEuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGFzbS9leGNlcHRpb24u aD4KLQotI2luY2x1ZGUgPHBsYXQvaXJxLmg+Ci0jaW5jbHVkZSA8cGxhdC9vcmlvbi1ncGlvLmg+ Ci0KLSNpbmNsdWRlICJwbS5oIgotI2luY2x1ZGUgImJyaWRnZS1yZWdzLmgiCi0jaW5jbHVkZSAi Y29tbW9uLmgiCi0KLXN0YXRpYyBpbnQgX19pbml0ZGF0YSBncGlvMF9pcnFzWzRdID0gewotCUlS UV9ET1ZFX0dQSU9fMF83LAotCUlSUV9ET1ZFX0dQSU9fOF8xNSwKLQlJUlFfRE9WRV9HUElPXzE2 XzIzLAotCUlSUV9ET1ZFX0dQSU9fMjRfMzEsCi19OwotCi1zdGF0aWMgaW50IF9faW5pdGRhdGEg Z3BpbzFfaXJxc1s0XSA9IHsKLQlJUlFfRE9WRV9ISUdIX0dQSU8sCi0JMCwKLQkwLAotCTAsCi19 OwotCi1zdGF0aWMgaW50IF9faW5pdGRhdGEgZ3BpbzJfaXJxc1s0XSA9IHsKLQkwLAotCTAsCi0J MCwKLQkwLAotfTsKLQotc3RhdGljIHZvaWQgX19pb21lbSAqZG92ZV9pcnFfYmFzZSA9IElSUV9W SVJUX0JBU0U7Ci0KLXN0YXRpYyBhc21saW5rYWdlIHZvaWQKLV9fZXhjZXB0aW9uX2lycV9lbnRy eSBkb3ZlX2xlZ2FjeV9oYW5kbGVfaXJxKHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXUzMiBz dGF0OwotCi0Jc3RhdCA9IHJlYWRsX3JlbGF4ZWQoZG92ZV9pcnFfYmFzZSArIElSUV9DQVVTRV9M T1dfT0ZGKTsKLQlzdGF0ICY9IHJlYWRsX3JlbGF4ZWQoZG92ZV9pcnFfYmFzZSArIElSUV9NQVNL X0xPV19PRkYpOwotCWlmIChzdGF0KSB7Ci0JCXVuc2lnbmVkIGludCBod2lycSA9IDEgKyBfX2Zs cyhzdGF0KTsKLQkJaGFuZGxlX0lSUShod2lycSwgcmVncyk7Ci0JCXJldHVybjsKLQl9Ci0Jc3Rh dCA9IHJlYWRsX3JlbGF4ZWQoZG92ZV9pcnFfYmFzZSArIElSUV9DQVVTRV9ISUdIX09GRik7Ci0J c3RhdCAmPSByZWFkbF9yZWxheGVkKGRvdmVfaXJxX2Jhc2UgKyBJUlFfTUFTS19ISUdIX09GRik7 Ci0JaWYgKHN0YXQpIHsKLQkJdW5zaWduZWQgaW50IGh3aXJxID0gMzMgKyBfX2ZscyhzdGF0KTsK LQkJaGFuZGxlX0lSUShod2lycSwgcmVncyk7Ci0JCXJldHVybjsKLQl9Ci19Ci0KLXZvaWQgX19p bml0IGRvdmVfaW5pdF9pcnEodm9pZCkKLXsKLQlvcmlvbl9pcnFfaW5pdCgxLCBJUlFfVklSVF9C QVNFICsgSVJRX01BU0tfTE9XX09GRik7Ci0Jb3Jpb25faXJxX2luaXQoMzMsIElSUV9WSVJUX0JB U0UgKyBJUlFfTUFTS19ISUdIX09GRik7Ci0KLQlzZXRfaGFuZGxlX2lycShkb3ZlX2xlZ2FjeV9o YW5kbGVfaXJxKTsKLQotCS8qCi0JICogSW5pdGlhbGl6ZSBncGlvbGliIGZvciBHUElPcyAwLTcx LgotCSAqLwotCW9yaW9uX2dwaW9faW5pdCgwLCAzMiwgRE9WRV9HUElPX0xPX1ZJUlRfQkFTRSwg MCwKLQkJCUlSUV9ET1ZFX0dQSU9fU1RBUlQsIGdwaW8wX2lycXMpOwotCi0Jb3Jpb25fZ3Bpb19p bml0KDMyLCAzMiwgRE9WRV9HUElPX0hJX1ZJUlRfQkFTRSwgMCwKLQkJCUlSUV9ET1ZFX0dQSU9f U1RBUlQgKyAzMiwgZ3BpbzFfaXJxcyk7Ci0KLQlvcmlvbl9ncGlvX2luaXQoNjQsIDgsIERPVkVf R1BJTzJfVklSVF9CQVNFLCAwLAotCQkJSVJRX0RPVkVfR1BJT19TVEFSVCArIDY0LCBncGlvMl9p cnFzKTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9pcnFzLmggYi9hcmNoL2Fy bS9tYWNoLWRvdmUvaXJxcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDY3MDk4 YzcwNDIuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWRvdmUvaXJxcy5oCisrKyAv ZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seSAqLwotLyogSVJRIGRlZmluaXRpb25zIGZvciBNYXJ2ZWxsIERvdmUgODhBUDUx MCBTb0MgKi8KLQotI2lmbmRlZiBfX0FTTV9BUkNIX0lSUVNfSAotI2RlZmluZSBfX0FTTV9BUkNI X0lSUVNfSAotCi0vKgotICogRG92ZSBMb3cgSW50ZXJydXB0IENvbnRyb2xsZXIKLSAqLwotI2Rl ZmluZSBJUlFfRE9WRV9CUklER0UJCSgxICsgMCkKLSNkZWZpbmUgSVJRX0RPVkVfSDJDCQkoMSAr IDEpCi0jZGVmaW5lIElSUV9ET1ZFX0MySAkJKDEgKyAyKQotI2RlZmluZSBJUlFfRE9WRV9OQU5E CQkoMSArIDMpCi0jZGVmaW5lIElSUV9ET1ZFX1BETUEJCSgxICsgNCkKLSNkZWZpbmUgSVJRX0RP VkVfU1BJMQkJKDEgKyA1KQotI2RlZmluZSBJUlFfRE9WRV9TUEkwCQkoMSArIDYpCi0jZGVmaW5l IElSUV9ET1ZFX1VBUlRfMAkJKDEgKyA3KQotI2RlZmluZSBJUlFfRE9WRV9VQVJUXzEJCSgxICsg OCkKLSNkZWZpbmUgSVJRX0RPVkVfVUFSVF8yCQkoMSArIDkpCi0jZGVmaW5lIElSUV9ET1ZFX1VB UlRfMwkJKDEgKyAxMCkKLSNkZWZpbmUgSVJRX0RPVkVfSTJDCQkoMSArIDExKQotI2RlZmluZSBJ UlFfRE9WRV9HUElPXzBfNwkoMSArIDEyKQotI2RlZmluZSBJUlFfRE9WRV9HUElPXzhfMTUJKDEg KyAxMykKLSNkZWZpbmUgSVJRX0RPVkVfR1BJT18xNl8yMwkoMSArIDE0KQotI2RlZmluZSBJUlFf RE9WRV9QQ0lFMF9FUlIJKDEgKyAxNSkKLSNkZWZpbmUgSVJRX0RPVkVfUENJRTAJCSgxICsgMTYp Ci0jZGVmaW5lIElSUV9ET1ZFX1BDSUUxX0VSUgkoMSArIDE3KQotI2RlZmluZSBJUlFfRE9WRV9Q Q0lFMQkJKDEgKyAxOCkKLSNkZWZpbmUgSVJRX0RPVkVfSTJTMAkJKDEgKyAxOSkKLSNkZWZpbmUg SVJRX0RPVkVfSTJTMF9FUlIJKDEgKyAyMCkKLSNkZWZpbmUgSVJRX0RPVkVfSTJTMQkJKDEgKyAy MSkKLSNkZWZpbmUgSVJRX0RPVkVfSTJTMV9FUlIJKDEgKyAyMikKLSNkZWZpbmUgSVJRX0RPVkVf VVNCX0VSUgkoMSArIDIzKQotI2RlZmluZSBJUlFfRE9WRV9VU0IwCQkoMSArIDI0KQotI2RlZmlu ZSBJUlFfRE9WRV9VU0IxCQkoMSArIDI1KQotI2RlZmluZSBJUlFfRE9WRV9HRTAwX1JYCSgxICsg MjYpCi0jZGVmaW5lIElSUV9ET1ZFX0dFMDBfVFgJKDEgKyAyNykKLSNkZWZpbmUgSVJRX0RPVkVf R0UwMF9NSVNDCSgxICsgMjgpCi0jZGVmaW5lIElSUV9ET1ZFX0dFMDBfU1VNCSgxICsgMjkpCi0j ZGVmaW5lIElSUV9ET1ZFX0dFMDBfRVJSCSgxICsgMzApCi0jZGVmaW5lIElSUV9ET1ZFX0NSWVBU TwkJKDEgKyAzMSkKLQotLyoKLSAqIERvdmUgSGlnaCBJbnRlcnJ1cHQgQ29udHJvbGxlcgotICov Ci0jZGVmaW5lIElSUV9ET1ZFX0FDOTcJCSgxICsgMzIpCi0jZGVmaW5lIElSUV9ET1ZFX1BNVQkJ KDEgKyAzMykKLSNkZWZpbmUgSVJRX0RPVkVfQ0FNCQkoMSArIDM0KQotI2RlZmluZSBJUlFfRE9W RV9TRElPMAkJKDEgKyAzNSkKLSNkZWZpbmUgSVJRX0RPVkVfU0RJTzEJCSgxICsgMzYpCi0jZGVm aW5lIElSUV9ET1ZFX1NESU8wX1dBS0VVUAkoMSArIDM3KQotI2RlZmluZSBJUlFfRE9WRV9TRElP MV9XQUtFVVAJKDEgKyAzOCkKLSNkZWZpbmUgSVJRX0RPVkVfWE9SXzAwCQkoMSArIDM5KQotI2Rl ZmluZSBJUlFfRE9WRV9YT1JfMDEJCSgxICsgNDApCi0jZGVmaW5lIElSUV9ET1ZFX1hPUjBfRVJS CSgxICsgNDEpCi0jZGVmaW5lIElSUV9ET1ZFX1hPUl8xMAkJKDEgKyA0MikKLSNkZWZpbmUgSVJR X0RPVkVfWE9SXzExCQkoMSArIDQzKQotI2RlZmluZSBJUlFfRE9WRV9YT1IxX0VSUgkoMSArIDQ0 KQotI2RlZmluZSBJUlFfRE9WRV9MQ0RfRENPTgkoMSArIDQ1KQotI2RlZmluZSBJUlFfRE9WRV9M Q0QxCQkoMSArIDQ2KQotI2RlZmluZSBJUlFfRE9WRV9MQ0QwCQkoMSArIDQ3KQotI2RlZmluZSBJ UlFfRE9WRV9HUFUJCSgxICsgNDgpCi0jZGVmaW5lIElSUV9ET1ZFX1BFUkZPUk1fTU5UUgkoMSAr IDQ5KQotI2RlZmluZSBJUlFfRE9WRV9WUFJPX0RNQTEJKDEgKyA1MSkKLSNkZWZpbmUgSVJRX0RP VkVfU1NQX1RJTUVSCSgxICsgNTQpCi0jZGVmaW5lIElSUV9ET1ZFX1NTUAkJKDEgKyA1NSkKLSNk ZWZpbmUgSVJRX0RPVkVfTUNfTDJfRVJSCSgxICsgNTYpCi0jZGVmaW5lIElSUV9ET1ZFX0NSWVBU T19FUlIJKDEgKyA1OSkKLSNkZWZpbmUgSVJRX0RPVkVfR1BJT18yNF8zMQkoMSArIDYwKQotI2Rl ZmluZSBJUlFfRE9WRV9ISUdIX0dQSU8JKDEgKyA2MSkKLSNkZWZpbmUgSVJRX0RPVkVfU0FUQQkJ KDEgKyA2MikKLQotLyoKLSAqIERPVkUgR2VuZXJhbCBQdXJwb3NlIFBpbnMKLSAqLwotI2RlZmlu ZSBJUlFfRE9WRV9HUElPX1NUQVJUCTY1Ci0jZGVmaW5lIE5SX0dQSU9fSVJRUwkJNjQKLQotLyoK LSAqIFBNVSBpbnRlcnJ1cHRzCi0gKi8KLSNkZWZpbmUgSVJRX0RPVkVfUE1VX1NUQVJUCShJUlFf RE9WRV9HUElPX1NUQVJUICsgTlJfR1BJT19JUlFTKQotI2RlZmluZSBOUl9QTVVfSVJRUwkJNwot I2RlZmluZSBJUlFfRE9WRV9SVEMJCShJUlFfRE9WRV9QTVVfU1RBUlQgKyA1KQotCi0jZGVmaW5l IERPVkVfTlJfSVJRUwkJKElSUV9ET1ZFX1BNVV9TVEFSVCArIE5SX1BNVV9JUlFTKQotCi0KLSNl bmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL21wcC5jIGIvYXJjaC9hcm0vbWFj aC1kb3ZlL21wcC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDFiZDQ3M2FiZTku LjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWRvdmUvbXBwLmMKKysrIC9kZXYvbnVs bApAQCAtMSwxNTkgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seQotLyoKLSAqIGFyY2gvYXJtL21hY2gtZG92ZS9tcHAuYwotICoKLSAqIE1QUCBmdW5jdGlv bnMgZm9yIE1hcnZlbGwgRG92ZSBTb0NzCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgotI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5o PgotI2luY2x1ZGUgPHBsYXQvbXBwLmg+Ci0jaW5jbHVkZSA8cGxhdC9vcmlvbi1ncGlvLmg+Ci0j aW5jbHVkZSAiZG92ZS5oIgotI2luY2x1ZGUgIm1wcC5oIgotCi1zdHJ1Y3QgZG92ZV9tcHBfZ3Jw IHsKLQlpbnQgc3RhcnQ7Ci0JaW50IGVuZDsKLX07Ci0KLS8qIE1hcCBhIGdyb3VwIHRvIGEgcmFu Z2Ugb2YgR1BJTyBwaW5zIGluIHRoYXQgZ3JvdXAgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZG92 ZV9tcHBfZ3JwIGRvdmVfbXBwX2dycFtdID0gewotCVtNUFBfMjRfMzldID0gewotCQkuc3RhcnQJ PSAyNCwKLQkJLmVuZAk9IDM5LAotCX0sCi0JW01QUF80MF80NV0gPSB7Ci0JCS5zdGFydAk9IDQw LAotCQkuZW5kCT0gNDUsCi0JfSwKLQlbTVBQXzQ2XzUxXSA9IHsKLQkJLnN0YXJ0CT0gNDYsCi0J CS5lbmQJPSA1MSwKLQl9LAotCVtNUFBfNThfNjFdID0gewotCQkuc3RhcnQJPSA1OCwKLQkJLmVu ZAk9IDYxLAotCX0sCi0JW01QUF82Ml82M10gPSB7Ci0JCS5zdGFydAk9IDYyLAotCQkuZW5kCT0g NjMsCi0JfSwKLX07Ci0KLS8qIEVuYWJsZSBncGlvIGZvciBhIHJhbmdlIG9mIHBpbnMuIG1vZGUg c2hvdWxkIGJlIGEgY29tYmluYXRpb24gb2YKLSAgIEdQSU9fT1VUUFVUX09LIHwgR1BJT19JTlBV VF9PSyAqLwotc3RhdGljIHZvaWQgX19pbml0IGRvdmVfbXBwX2dwaW9fbW9kZShpbnQgc3RhcnQs IGludCBlbmQsIGludCBncGlvX21vZGUpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSBzdGFydDsg aSA8PSBlbmQ7IGkrKykKLQkJb3Jpb25fZ3Bpb19zZXRfdmFsaWQoaSwgZ3Bpb19tb2RlKTsKLX0K LQotLyogRHVtcCBhbGwgdGhlIGV4dHJhIE1QUCByZWdpc3RlcnMuIFRoZSBwbGF0Zm9ybSBjb2Rl IHdpbGwgZHVtcCB0aGUKLSAgIHJlZ2lzdGVycyBmb3IgcGlucyAwLTIzLiAqLwotc3RhdGljIHZv aWQgX19pbml0IGRvdmVfbXBwX2R1bXBfcmVncyh2b2lkKQotewotCXByX2RlYnVnKCJQTVVfQ1RS TDRfQ1RSTDogJTA4eFxuIiwKLQkJIHJlYWRsKERPVkVfTVBQX0NUUkw0X1ZJUlRfQkFTRSkpOwot Ci0JcHJfZGVidWcoIlBNVV9NUFBfR0VORVJBTF9DVFJMOiAlMDh4XG4iLAotCQkgcmVhZGwoRE9W RV9QTVVfTVBQX0dFTkVSQUxfQ1RSTCkpOwotCi0JcHJfZGVidWcoIk1QUF9HRU5FUkFMOiAlMDh4 XG4iLCByZWFkbChET1ZFX01QUF9HRU5FUkFMX1ZJUlRfQkFTRSkpOwotfQotCi1zdGF0aWMgdm9p ZCBfX2luaXQgZG92ZV9tcHBfY2ZnX25mYyhpbnQgc2VsKQotewotCXUzMiBtcHBfZ2VuX2NmZyA9 IHJlYWRsKERPVkVfTVBQX0dFTkVSQUxfVklSVF9CQVNFKTsKLQotCW1wcF9nZW5fY2ZnICY9IH4w eDE7Ci0JbXBwX2dlbl9jZmcgfD0gc2VsOwotCXdyaXRlbChtcHBfZ2VuX2NmZywgRE9WRV9NUFBf R0VORVJBTF9WSVJUX0JBU0UpOwotCi0JZG92ZV9tcHBfZ3Bpb19tb2RlKDY0LCA3MSwgR1BJT19P VVRQVVRfT0spOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgZG92ZV9tcHBfY2ZnX2F1MShpbnQg c2VsKQotewotCXUzMiBtcHBfY3RybDQgPSByZWFkbChET1ZFX01QUF9DVFJMNF9WSVJUX0JBU0Up OwotCXUzMiBzc3BfY3RybDEgPSByZWFkbChET1ZFX1NTUF9DVFJMX1NUQVRVU18xKTsKLQl1MzIg bXBwX2dlbl9jdHJsID0gcmVhZGwoRE9WRV9NUFBfR0VORVJBTF9WSVJUX0JBU0UpOwotCXUzMiBn bG9iYWxfY2ZnXzIgPSByZWFkbChET1ZFX0dMT0JBTF9DT05GSUdfMik7Ci0KLQltcHBfY3RybDQg Jj0gfihET1ZFX0FVMV9HUElPX1NFTCk7Ci0Jc3NwX2N0cmwxICY9IH4oRE9WRV9TU1BfT05fQVUx KTsKLQltcHBfZ2VuX2N0cmwgJj0gfihET1ZFX0FVMV9TUERJRk9fR1BJT19FTik7Ci0JZ2xvYmFs X2NmZ18yICY9IH4oRE9WRV9UV1NJX09QVElPTjNfR1BJTyk7Ci0KLQlpZiAoIXNlbCB8fCBzZWwg PT0gMHgyKQotCQlkb3ZlX21wcF9ncGlvX21vZGUoNTIsIDU3LCAwKTsKLQllbHNlCi0JCWRvdmVf bXBwX2dwaW9fbW9kZSg1MiwgNTcsIEdQSU9fT1VUUFVUX09LIHwgR1BJT19JTlBVVF9PSyk7Ci0K LQlpZiAoc2VsICYgMHgxKSB7Ci0JCWdsb2JhbF9jZmdfMiB8PSBET1ZFX1RXU0lfT1BUSU9OM19H UElPOwotCQlkb3ZlX21wcF9ncGlvX21vZGUoNTYsIDU3LCAwKTsKLQl9Ci0JaWYgKHNlbCAmIDB4 MikgewotCQltcHBfZ2VuX2N0cmwgfD0gRE9WRV9BVTFfU1BESUZPX0dQSU9fRU47Ci0JCWRvdmVf bXBwX2dwaW9fbW9kZSg1NywgNTcsIEdQSU9fT1VUUFVUX09LIHwgR1BJT19JTlBVVF9PSyk7Ci0J fQotCWlmIChzZWwgJiAweDQpIHsKLQkJc3NwX2N0cmwxIHw9IERPVkVfU1NQX09OX0FVMTsKLQkJ ZG92ZV9tcHBfZ3Bpb19tb2RlKDUyLCA1NSwgMCk7Ci0JfQotCWlmIChzZWwgJiAweDgpCi0JCW1w cF9jdHJsNCB8PSBET1ZFX0FVMV9HUElPX1NFTDsKLQotCXdyaXRlbChtcHBfY3RybDQsIERPVkVf TVBQX0NUUkw0X1ZJUlRfQkFTRSk7Ci0Jd3JpdGVsKHNzcF9jdHJsMSwgRE9WRV9TU1BfQ1RSTF9T VEFUVVNfMSk7Ci0Jd3JpdGVsKG1wcF9nZW5fY3RybCwgRE9WRV9NUFBfR0VORVJBTF9WSVJUX0JB U0UpOwotCXdyaXRlbChnbG9iYWxfY2ZnXzIsIERPVkVfR0xPQkFMX0NPTkZJR18yKTsKLX0KLQot LyogQ29uZmlndXJlIHRoZSBncm91cCByZWdpc3RlcnMsIGVuYWJsaW5nIEdQSU8gaWYgc2VsIGlu ZGljYXRlcyB0aGUKLSAgIHBpbiBpcyB0byBiZSB1c2VkIGZvciBHUElPICovCi1zdGF0aWMgdm9p ZCBfX2luaXQgZG92ZV9tcHBfY29uZl9ncnAodW5zaWduZWQgaW50ICptcHBfZ3JwX2xpc3QpCi17 Ci0JdTMyIG1wcF9jdHJsNCA9IHJlYWRsKERPVkVfTVBQX0NUUkw0X1ZJUlRfQkFTRSk7Ci0JaW50 IGdwaW9fbW9kZTsKLQotCWZvciAoIDsgKm1wcF9ncnBfbGlzdDsgbXBwX2dycF9saXN0KyspIHsK LQkJdW5zaWduZWQgaW50IG51bSA9IE1QUF9OVU0oKm1wcF9ncnBfbGlzdCk7Ci0JCXVuc2lnbmVk IGludCBzZWwgPSBNUFBfU0VMKCptcHBfZ3JwX2xpc3QpOwotCi0JCWlmIChudW0gPiBNUFBfR1JQ X01BWCkgewotCQkJcHJfZXJyKCJkb3ZlOiBpbnZhbGlkIE1QUCBHUlAgbnVtYmVyICgldSlcbiIs IG51bSk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCW1wcF9jdHJsNCAmPSB+KDB4MSA8PCBudW0p OwotCQltcHBfY3RybDQgfD0gc2VsIDw8IG51bTsKLQotCQlncGlvX21vZGUgPSBzZWwgPyBHUElP X09VVFBVVF9PSyB8IEdQSU9fSU5QVVRfT0sgOiAwOwotCQlkb3ZlX21wcF9ncGlvX21vZGUoZG92 ZV9tcHBfZ3JwW251bV0uc3RhcnQsCi0JCQkJICAgZG92ZV9tcHBfZ3JwW251bV0uZW5kLCBncGlv X21vZGUpOwotCX0KLQl3cml0ZWwobXBwX2N0cmw0LCBET1ZFX01QUF9DVFJMNF9WSVJUX0JBU0Up OwotfQotCi0vKiBDb25maWd1cmUgdGhlIHZhcmlvdXMgTVBQIHBpbnMgb24gRG92ZSAqLwotdm9p ZCBfX2luaXQgZG92ZV9tcHBfY29uZih1bnNpZ25lZCBpbnQgKm1wcF9saXN0LAotCQkJICB1bnNp Z25lZCBpbnQgKm1wcF9ncnBfbGlzdCwKLQkJCSAgdW5zaWduZWQgaW50IGdycF9hdTFfNTJfNTcs Ci0JCQkgIHVuc2lnbmVkIGludCBncnBfbmZjXzY0XzcxKQotewotCWRvdmVfbXBwX2R1bXBfcmVn cygpOwotCi0JLyogVXNlIHBsYXRmb3JtIGNvZGUgZm9yIHBpbnMgMC0yMyAqLwotCW9yaW9uX21w cF9jb25mKG1wcF9saXN0LCAwLCBNUFBfTUFYLCBET1ZFX01QUF9WSVJUX0JBU0UpOwotCi0JZG92 ZV9tcHBfY29uZl9ncnAobXBwX2dycF9saXN0KTsKLQlkb3ZlX21wcF9jZmdfYXUxKGdycF9hdTFf NTJfNTcpOwotCWRvdmVfbXBwX2NmZ19uZmMoZ3JwX25mY182NF83MSk7Ci0KLQlkb3ZlX21wcF9k dW1wX3JlZ3MoKTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9tcHAuaCBiL2Fy Y2gvYXJtL21hY2gtZG92ZS9tcHAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU0 Yjg5Yzg2Y2E4Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL21wcC5oCisr KyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovCi0jaWZuZGVmIF9fQVJDSF9ET1ZFX01QUF9DT0RFRF9ICi0jZGVmaW5lIF9f QVJDSF9ET1ZFX01QUF9DT0RFRF9ICi0KLSNkZWZpbmUgTVBQKF9udW0sIF9zZWwsIF9pbiwgX291 dCkgKCBcCi0JLyogTVBQIG51bWJlciAqLwkJKChfbnVtKSAmIDB4ZmYpIHwgXAotCS8qIE1QUCBz ZWxlY3QgdmFsdWUgKi8JCSgoKF9zZWwpICYgMHhmKSA8PCA4KSB8IFwKLQkvKiBtYXkgYmUgaW5w dXQgc2lnbmFsICovCSgoISEoX2luKSkgPDwgMTIpIHwgXAotCS8qIG1heSBiZSBvdXRwdXQgc2ln bmFsICovCSgoISEoX291dCkpIDw8IDEzKSkKLQotI2RlZmluZSBNUFAwX0dQSU8wCQlNUFAoMCwg MHgwLCAxLCAxKQotI2RlZmluZSBNUFAwX1VBMl9SVFNuCQlNUFAoMCwgMHgyLCAwLCAwKQotI2Rl ZmluZSBNUFAwX1NESU8wX0NECQlNUFAoMCwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAwX0xDRDBf UFdNCQlNUFAoMCwgMHhmLCAwLCAwKQotCi0jZGVmaW5lIE1QUDFfR1BJTzEJCU1QUCgxLCAweDAs IDEsIDEpCi0jZGVmaW5lIE1QUDFfVUEyX0NUU24JCU1QUCgxLCAweDIsIDAsIDApCi0jZGVmaW5l IE1QUDFfU0RJTzBfV1AJCU1QUCgxLCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDFfTENEMV9QV00J CU1QUCgxLCAweGYsIDAsIDApCi0KLSNkZWZpbmUgTVBQMl9HUElPMgkJTVBQKDIsIDB4MCwgMSwg MSkKLSNkZWZpbmUgTVBQMl9TQVRBX1BSRVNFTlQJTVBQKDIsIDB4MSwgMCwgMCkKLSNkZWZpbmUg TVBQMl9VQTJfVFhECQlNUFAoMiwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAyX1NESU8wX0JVU19Q T1dFUglNUFAoMiwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAyX1VBX1JUU24xCQlNUFAoMiwgMHg0 LCAwLCAwKQotCi0jZGVmaW5lIE1QUDNfR1BJTzMJCU1QUCgzLCAweDAsIDEsIDEpCi0jZGVmaW5l IE1QUDNfU0FUQV9BQ1QJCU1QUCgzLCAweDEsIDAsIDApCi0jZGVmaW5lIE1QUDNfVUEyX1JYRAkJ TVBQKDMsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQM19TRElPMF9MRURfQ1RSTAlNUFAoMywgMHgz LCAwLCAwKQotI2RlZmluZSBNUFAzX1VBX0NUU24xCQlNUFAoMywgMHg0LCAwLCAwKQotI2RlZmlu ZSBNUFAzX1NQSV9MQ0RfQ1MxCU1QUCgzLCAweGYsIDAsIDApCi0KLSNkZWZpbmUgTVBQNF9HUElP NAkJTVBQKDQsIDB4MCwgMSwgMSkKLSNkZWZpbmUgTVBQNF9VQTNfUlRTbgkJTVBQKDQsIDB4Miwg MCwgMCkKLSNkZWZpbmUgTVBQNF9TRElPMV9DRAkJTVBQKDQsIDB4MywgMCwgMCkKLSNkZWZpbmUg TVBQNF9TUElfMV9NSVNPCQlNUFAoNCwgMHg0LCAwLCAwKQotCi0jZGVmaW5lIE1QUDVfR1BJTzUJ CU1QUCg1LCAweDAsIDEsIDEpCi0jZGVmaW5lIE1QUDVfVUEzX0NUU24JCU1QUCg1LCAweDIsIDAs IDApCi0jZGVmaW5lIE1QUDVfU0RJTzFfV1AJCU1QUCg1LCAweDMsIDAsIDApCi0jZGVmaW5lIE1Q UDVfU1BJXzFfQ1MJCU1QUCg1LCAweDQsIDAsIDApCi0KLSNkZWZpbmUgTVBQNl9HUElPNgkJTVBQ KDYsIDB4MCwgMSwgMSkKLSNkZWZpbmUgTVBQNl9VQTNfVFhECQlNUFAoNiwgMHgyLCAwLCAwKQot I2RlZmluZSBNUFA2X1NESU8xX0JVU19QT1dFUglNUFAoNiwgMHgzLCAwLCAwKQotI2RlZmluZSBN UFA2X1NQSV8xX01PU0kJCU1QUCg2LCAweDQsIDAsIDApCi0KLSNkZWZpbmUgTVBQN19HUElPNwkJ TVBQKDcsIDB4MCwgMSwgMSkKLSNkZWZpbmUgTVBQN19VQTNfUlhECQlNUFAoNywgMHgyLCAwLCAw KQotI2RlZmluZSBNUFA3X1NESU8xX0xFRF9DVFJMCU1QUCg3LCAweDMsIDAsIDApCi0jZGVmaW5l IE1QUDdfU1BJXzFfU0NLCQlNUFAoNywgMHg0LCAwLCAwKQotCi0jZGVmaW5lIE1QUDhfR1BJTzgJ CU1QUCg4LCAweDAsIDEsIDEpCi0jZGVmaW5lIE1QUDhfV0RfUlNUX09VVAkJTVBQKDgsIDB4MSwg MCwgMCkKLQotI2RlZmluZSBNUFA5X0dQSU85CQlNUFAoOSwgMHgwLCAxLCAxKQotI2RlZmluZSBN UFA5X1BFWDFfQ0xLUkVRbglNUFAoOSwgMHg1LCAwLCAwKQotCi0jZGVmaW5lIE1QUDEwX0dQSU8x MAkJTVBQKDEwLCAweDAsIDEsIDEpCi0jZGVmaW5lIE1QUDEwX1NTUF9TQ0xLCQlNUFAoMTAsIDB4 NSwgMCwgMCkKLQotI2RlZmluZSBNUFAxMV9HUElPMTEJCU1QUCgxMSwgMHgwLCAxLCAxKQotI2Rl ZmluZSBNUFAxMV9TQVRBX1BSRVNFTlQJTVBQKDExLCAweDEsIDAsIDApCi0jZGVmaW5lIE1QUDEx X1NBVEFfQUNUCQlNUFAoMTEsIDB4MiwgMCwgMCkKLSNkZWZpbmUgTVBQMTFfU0RJTzBfTEVEX0NU UkwJTVBQKDExLCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDExX1NESU8xX0xFRF9DVFJMCU1QUCgx MSwgMHg0LCAwLCAwKQotI2RlZmluZSBNUFAxMV9QRVgwX0NMS1JFUW4JTVBQKDExLCAweDUsIDAs IDApCi0KLSNkZWZpbmUgTVBQMTJfR1BJTzEyCQlNUFAoMTIsIDB4MCwgMSwgMSkKLSNkZWZpbmUg TVBQMTJfU0FUQV9BQ1QJCU1QUCgxMiwgMHgxLCAwLCAwKQotI2RlZmluZSBNUFAxMl9VQTJfUlRT bgkJTVBQKDEyLCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDEyX0FEMF9JMlNfRVhUX01DTEsJTVBQ KDEyLCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDEyX1NESU8xX0NECQlNUFAoMTIsIDB4NCwgMCwg MCkKLQotI2RlZmluZSBNUFAxM19HUElPMTMJCU1QUCgxMywgMHgwLCAxLCAxKQotI2RlZmluZSBN UFAxM19VQTJfQ1RTbgkJTVBQKDEzLCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDEzX0FEMV9JMlNf RVhUX01DTEsJTVBQKDEzLCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDEzX1NESU8xV1AJCU1QUCgx MywgMHg0LCAwLCAwKQotI2RlZmluZSBNUFAxM19TU1BfRVhUQ0xLCU1QUCgxMywgMHg1LCAwLCAw KQotCi0jZGVmaW5lIE1QUDE0X0dQSU8xNAkJTVBQKDE0LCAweDAsIDEsIDEpCi0jZGVmaW5lIE1Q UDE0X1VBMl9UWEQJCU1QUCgxNCwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAxNF9TRElPMV9CVVNf UE9XRVIJTVBQKDE0LCAweDQsIDAsIDApCi0jZGVmaW5lIE1QUDE0X1NTUF9SWEQJCU1QUCgxNCwg MHg1LCAwLCAwKQotCi0jZGVmaW5lIE1QUDE1X0dQSU8xNQkJTVBQKDE1LCAweDAsIDEsIDEpCi0j ZGVmaW5lIE1QUDE1X1VBMl9SWEQJCU1QUCgxNSwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAxNV9T RElPMV9MRURfQ1RSTAlNUFAoMTUsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMTVfU1NQX1NGUk0J CU1QUCgxNSwgMHg1LCAwLCAwKQotCi0jZGVmaW5lIE1QUDE2X0dQSU8xNgkJTVBQKDE2LCAweDAs IDEsIDEpCi0jZGVmaW5lIE1QUDE2X1VBM19SVFNuCQlNUFAoMTYsIDB4MiwgMCwgMCkKLSNkZWZp bmUgTVBQMTZfU0RJTzBfQ0QJCU1QUCgxNiwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAxNl9TUElf TENEX0NTMQlNUFAoMTYsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMTZfQUM5N19TREFUQV9JTjEJ TVBQKDE2LCAweDUsIDAsIDApCi0KLSNkZWZpbmUgTVBQMTdfR1BJTzE3CQlNUFAoMTcsIDB4MCwg MSwgMSkKLSNkZWZpbmUgTVBQMTdfQUM5N19TWVNDTEtfT1VUCU1QUCgxNywgMHgxLCAwLCAwKQot I2RlZmluZSBNUFAxN19VQTNfQ1RTbgkJTVBQKDE3LCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDE3 X1NESU8wX1dQCQlNUFAoMTcsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMTdfVFdfU0RBMgkJTVBQ KDE3LCAweDQsIDAsIDApCi0jZGVmaW5lIE1QUDE3X0FDOTdfU0RBVEFfSU4yCU1QUCgxNywgMHg1 LCAwLCAwKQotCi0jZGVmaW5lIE1QUDE4X0dQSU8xOAkJTVBQKDE4LCAweDAsIDEsIDEpCi0jZGVm aW5lIE1QUDE4X1VBM19UWEQJCU1QUCgxOCwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAxOF9TRElP MF9CVVNfUE9XRVIJTVBQKDE4LCAweDMsIDAsIDApCi0jZGVmaW5lIE1QUDE4X0xDRDBfUFdNCQlN UFAoMTgsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMThfQUNfU0RBVEFfSU4zCU1QUCgxOCwgMHg1 LCAwLCAwKQotCi0jZGVmaW5lIE1QUDE5X0dQSU8xOQkJTVBQKDE5LCAweDAsIDEsIDEpCi0jZGVm aW5lIE1QUDE5X1VBM19SWEQJCU1QUCgxOSwgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAxOV9TRElP MF9MRURfQ1RSTAlNUFAoMTksIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMTlfVFdfU0NLMgkJTVBQ KDE5LCAweDQsIDAsIDApCi0KLSNkZWZpbmUgTVBQMjBfR1BJTzIwCQlNUFAoMjAsIDB4MCwgMSwg MSkKLSNkZWZpbmUgTVBQMjBfQUM5N19TWVNDTEtfT1VUCU1QUCgyMCwgMHgxLCAwLCAwKQotI2Rl ZmluZSBNUFAyMF9TUElfTENEX01JU08JTVBQKDIwLCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDIw X1NESU8xX0NECQlNUFAoMjAsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMjBfU0RJTzBfQ0QJCU1Q UCgyMCwgMHg1LCAwLCAwKQotI2RlZmluZSBNUFAyMF9TUElfMV9NSVNPCU1QUCgyMCwgMHg2LCAw LCAwKQotCi0jZGVmaW5lIE1QUDIxX0dQSU8yMQkJTVBQKDIxLCAweDAsIDEsIDEpCi0jZGVmaW5l IE1QUDIxX1VBMV9SVFNuCQlNUFAoMjEsIDB4MSwgMCwgMCkKLSNkZWZpbmUgTVBQMjFfU1BJX0xD RF9DUzAJTVBQKDIxLCAweDIsIDAsIDApCi0jZGVmaW5lIE1QUDIxX1NESU8xX1dQCQlNUFAoMjEs IDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMjFfU1NQX1NGUk0JCU1QUCgyMSwgMHg0LCAwLCAwKQot I2RlZmluZSBNUFAyMV9TRElPMF9XUAkJTVBQKDIxLCAweDUsIDAsIDApCi0jZGVmaW5lIE1QUDIx X1NQSV8xX0NTCQlNUFAoMjEsIDB4NiwgMCwgMCkKLQotI2RlZmluZSBNUFAyMl9HUElPMjIJCU1Q UCgyMiwgMHgwLCAxLCAxKQotI2RlZmluZSBNUFAyMl9VQTFfQ1RTbgkJTVBQKDIyLCAweDEsIDAs IDApCi0jZGVmaW5lIE1QUDIyX1NQSV9MQ0RfTU9TSQlNUFAoMjIsIDB4MiwgMCwgMCkKLSNkZWZp bmUgTVBQMjJfU0RJTzFfQlVTX1BPV0VSCU1QUCgyMiwgMHgzLCAwLCAwKQotI2RlZmluZSBNUFAy Ml9TU1BfVFhECQlNUFAoMjIsIDB4NCwgMCwgMCkKLSNkZWZpbmUgTVBQMjJfU0RJTzBfQlVTX1BP V0VSCU1QUCgyMiwgMHg1LCAwLCAwKQotI2RlZmluZSBNUFAyMl9TUElfMV9NT1NJCU1QUCgyMiwg MHg2LCAwLCAwKQotCi0jZGVmaW5lIE1QUDIzX0dQSU8yMwkJTVBQKDIzLCAweDAsIDEsIDEpCi0j ZGVmaW5lIE1QUDIzX1NQSV9MQ0RfU0NLCU1QUCgyMywgMHgyLCAwLCAwKQotI2RlZmluZSBNUFAy M19TRElPMV9MRURfQ1RSTAlNUFAoMjMsIDB4MywgMCwgMCkKLSNkZWZpbmUgTVBQMjNfU1NQX1ND TEsJCU1QUCgyMywgMHg0LCAwLCAwKQotI2RlZmluZSBNUFAyM19TRElPMF9MRURfQ1RSTAlNUFAo MjMsIDB4NSwgMCwgMCkKLSNkZWZpbmUgTVBQMjNfU1BJXzFfU0NLCQlNUFAoMjMsIDB4NiwgMCwg MCkKLQotI2RlZmluZSBNUFBfTUFYCQkJMjMKLQotI2RlZmluZSBNUFBfR1JQKF9ncnAsIF9tb2Rl KQlNUFAoKF9ncnApLCAoX21vZGUpLCAwLCAwKQotCi0vKiBmb3IgTVBQIGdyb3VwcyBfbnVtIGlz IGEgZ3JvdXAgaW5kZXggKi8KLWVudW0gZG92ZV9tcHBfZ3JwX2lkeCB7Ci0JTVBQXzI0XzM5ID0g MiwKLQlNUFBfNDBfNDUgPSAwLAotCU1QUF80Nl81MSA9IDEsCi0JTVBQXzU4XzYxID0gNSwKLQlN UFBfNjJfNjMgPSA0LAotCU1QUF9HUlBfTUFYID0gNSwKLX07Ci0KLSNkZWZpbmUgTVBQX0dSUF8y NF8zOV9HUElPCQlNUFBfR1JQKE1QUF8yNF8zOSwgMHgxKQotI2RlZmluZSBNUFBfR1JQXzI0XzM5 X0NBTQkJTVBQX0dSUChNUFBfMjRfMzksIDB4MCkKLQotI2RlZmluZSBNUFBfR1JQXzQwXzQ1X0dQ SU8JCU1QUF9HUlAoTVBQXzQwXzQ1LCAweDEpCi0jZGVmaW5lIE1QUF9HUlBfNDBfNDVfU0QwCQlN UFBfR1JQKE1QUF80MF80NSwgMHgwKQotCi0jZGVmaW5lIE1QUF9HUlBfNDZfNTFfR1BJTwkJTVBQ X0dSUChNUFBfNDZfNTEsIDB4MSkKLSNkZWZpbmUgTVBQX0dSUF80Nl81MV9TRDEJCU1QUF9HUlAo TVBQXzQ2XzUxLCAweDApCi0KLSNkZWZpbmUgTVBQX0dSUF81OF82MV9HUElPCQlNUFBfR1JQKE1Q UF81OF82MSwgMHgxKQotI2RlZmluZSBNUFBfR1JQXzU4XzYxX1NQSQkJTVBQX0dSUChNUFBfNThf NjEsIDB4MCkKLQotI2RlZmluZSBNUFBfR1JQXzYyXzYzX0dQSU8JCU1QUF9HUlAoTVBQXzYyXzYz LCAweDEpCi0jZGVmaW5lIE1QUF9HUlBfNjJfNjNfVUExCQlNUFBfR1JQKE1QUF82Ml82MywgMHgw KQotCi0vKiBUaGUgTVBQWzY0OjcxXSBjb250cm9sIGRpZmZlcnMgZnJvbSBvdGhlciBncm91cHMg Ki8KLSNkZWZpbmUgTVBQX0dSUF9ORkNfNjRfNzFfR1BPCQkweDEKLSNkZWZpbmUgTVBQX0dSUF9O RkNfNjRfNzFfTkZDCQkweDAKLQotLyoKLSAqIFRoZSBNUFBbNTI6NTddIGZ1bmN0aW9uYWxpdHkg aXMgZW5jb2RlZCBieSA0IGJpdHMgaW4gZGlmZmVyZW50Ci0gKiByZWdpc3RlcnMuIFRoZSBfbnVt IGZpZWxkIGluIHRoaXMgY2FzZSBlbmNvZGVzIHRob3NlIGJpdHMgaW4KLSAqIGNvcnJlc3BvZGVu Y2Ugd2l0aCBUYWJsZSAxMzUgb2YgODhBUDUxMCBGdW5jdGlvbmFsIHNwZWNpZmljYXRpb24KLSAq LwotI2RlZmluZSBNUFBfR1JQX0FVMV81Ml81N19BVTEJCTB4MAotI2RlZmluZSBNUFBfR1JQX0FV MV81Ml81N19BVTFfR1BJTzU3CTB4MgotI2RlZmluZSBNUFBfR1JQX0FVMV81Ml81N19HUElPCQkw eGEKLSNkZWZpbmUgTVBQX0dSUF9BVTFfNTJfNTdfVFdfR1BJTwkweGIKLSNkZWZpbmUgTVBQX0dS UF9BVTFfNTJfNTdfQVUxX1NTUAkweGMKLSNkZWZpbmUgTVBQX0dSUF9BVTFfNTJfNTdfU1NQX0dQ SU8JMHhlCi0jZGVmaW5lIE1QUF9HUlBfQVUxXzUyXzU3X1NTUF9UVwkweGYKLQotdm9pZCBkb3Zl X21wcF9jb25mKHVuc2lnbmVkIGludCAqbXBwX2xpc3QsCi0JCSAgIHVuc2lnbmVkIGludCAqbXBw X2dycF9saXN0LAotCQkgICB1bnNpZ25lZCBpbnQgZ3JwX2F1MV81Ml81NywKLQkJICAgdW5zaWdu ZWQgaW50IGdycF9uZmNfNjRfNzEpOwotCi0jZW5kaWYJLyogX19BUkNIX0RPVkVfTVBQX0NPREVE X0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZG92ZS9wY2llLmMgYi9hcmNoL2FybS9t YWNoLWRvdmUvcGNpZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDQ0YjdlMDM4 OTAuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jCisrKyAvZGV2 L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jCi0gKgotICogUENJZSBm dW5jdGlvbnMgZm9yIE1hcnZlbGwgRG92ZSA4OEFQNTEwIFNvQwotICovCi0KLSNpbmNsdWRlIDxs aW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9j bGsuaD4KLSNpbmNsdWRlIDx2aWRlby92Z2EuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9wY2kuaD4K LSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNtL3NldHVwLmg+Ci0jaW5j bHVkZSA8YXNtL2RlbGF5Lmg+Ci0jaW5jbHVkZSA8cGxhdC9wY2llLmg+Ci0jaW5jbHVkZSA8cGxh dC9hZGRyLW1hcC5oPgotI2luY2x1ZGUgImlycXMuaCIKLSNpbmNsdWRlICJicmlkZ2UtcmVncy5o IgotI2luY2x1ZGUgImNvbW1vbi5oIgotCi1zdHJ1Y3QgcGNpZV9wb3J0IHsKLQl1OAkJCWluZGV4 OwotCXU4CQkJcm9vdF9idXNfbnI7Ci0Jdm9pZCBfX2lvbWVtCQkqYmFzZTsKLQlzcGlubG9ja190 CQljb25mX2xvY2s7Ci0JY2hhcgkJCW1lbV9zcGFjZV9uYW1lWzE2XTsKLQlzdHJ1Y3QgcmVzb3Vy Y2UJCXJlczsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpZV9wb3J0IHBjaWVfcG9ydFsyXTsKLXN0 YXRpYyBpbnQgbnVtX3BjaWVfcG9ydHM7Ci0KLQotc3RhdGljIGludCBfX2luaXQgZG92ZV9wY2ll X3NldHVwKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKQotewotCXN0cnVjdCBwY2ll X3BvcnQgKnBwOwotCXN0cnVjdCByZXNvdXJjZSByZWFsaW87Ci0KLQlpZiAobnIgPj0gbnVtX3Bj aWVfcG9ydHMpCi0JCXJldHVybiAwOwotCi0JcHAgPSAmcGNpZV9wb3J0W25yXTsKLQlzeXMtPnBy aXZhdGVfZGF0YSA9IHBwOwotCXBwLT5yb290X2J1c19uciA9IHN5cy0+YnVzbnI7Ci0KLQkvKgot CSAqIEdlbmVyaWMgUENJZSB1bml0IHNldHVwLgotCSAqLwotCW9yaW9uX3BjaWVfc2V0X2xvY2Fs X2J1c19ucihwcC0+YmFzZSwgc3lzLT5idXNucik7Ci0KLQlvcmlvbl9wY2llX3NldHVwKHBwLT5i YXNlKTsKLQotCXJlYWxpby5zdGFydCA9IHN5cy0+YnVzbnIgKiBTWl82NEs7Ci0JcmVhbGlvLmVu ZCA9IHJlYWxpby5zdGFydCArIFNaXzY0SyAtIDE7Ci0JcGNpX3JlbWFwX2lvc3BhY2UoJnJlYWxp bywgcHAtPmluZGV4ID09IDAgPyBET1ZFX1BDSUUwX0lPX1BIWVNfQkFTRSA6Ci0JCQkJCQkgICAg RE9WRV9QQ0lFMV9JT19QSFlTX0JBU0UpOwotCi0JLyoKLQkgKiBJT1JFU09VUkNFX01FTQotCSAq LwotCXNucHJpbnRmKHBwLT5tZW1fc3BhY2VfbmFtZSwgc2l6ZW9mKHBwLT5tZW1fc3BhY2VfbmFt ZSksCi0JCSAiUENJZSAlZCBNRU0iLCBwcC0+aW5kZXgpOwotCXBwLT5tZW1fc3BhY2VfbmFtZVtz aXplb2YocHAtPm1lbV9zcGFjZV9uYW1lKSAtIDFdID0gMDsKLQlwcC0+cmVzLm5hbWUgPSBwcC0+ bWVtX3NwYWNlX25hbWU7Ci0JaWYgKHBwLT5pbmRleCA9PSAwKSB7Ci0JCXBwLT5yZXMuc3RhcnQg PSBET1ZFX1BDSUUwX01FTV9QSFlTX0JBU0U7Ci0JCXBwLT5yZXMuZW5kID0gcHAtPnJlcy5zdGFy dCArIERPVkVfUENJRTBfTUVNX1NJWkUgLSAxOwotCX0gZWxzZSB7Ci0JCXBwLT5yZXMuc3RhcnQg PSBET1ZFX1BDSUUxX01FTV9QSFlTX0JBU0U7Ci0JCXBwLT5yZXMuZW5kID0gcHAtPnJlcy5zdGFy dCArIERPVkVfUENJRTFfTUVNX1NJWkUgLSAxOwotCX0KLQlwcC0+cmVzLmZsYWdzID0gSU9SRVNP VVJDRV9NRU07Ci0JaWYgKHJlcXVlc3RfcmVzb3VyY2UoJmlvbWVtX3Jlc291cmNlLCAmcHAtPnJl cykpCi0JCXBhbmljKCJSZXF1ZXN0IFBDSWUgTWVtb3J5IHJlc291cmNlIGZhaWxlZFxuIik7Ci0J cGNpX2FkZF9yZXNvdXJjZV9vZmZzZXQoJnN5cy0+cmVzb3VyY2VzLCAmcHAtPnJlcywgc3lzLT5t ZW1fb2Zmc2V0KTsKLQotCXJldHVybiAxOwotfQotCi1zdGF0aWMgaW50IHBjaWVfdmFsaWRfY29u ZmlnKHN0cnVjdCBwY2llX3BvcnQgKnBwLCBpbnQgYnVzLCBpbnQgZGV2KQotewotCS8qCi0JICog RG9uJ3QgZ28gb3V0IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyBub25leGlzdGluZyBkZXZpY2VzCi0J ICogb24gdGhlIGxvY2FsIGJ1cy4KLQkgKi8KLQlpZiAoYnVzID09IHBwLT5yb290X2J1c19uciAm JiBkZXYgPiAxKQotCQlyZXR1cm4gMDsKLQotCXJldHVybiAxOwotfQotCi1zdGF0aWMgaW50IHBj aWVfcmRfY29uZihzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1MzIgZGV2Zm4sIGludCB3aGVyZSwKLQkJ CWludCBzaXplLCB1MzIgKnZhbCkKLXsKLQlzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMgPSBidXMt PnN5c2RhdGE7Ci0Jc3RydWN0IHBjaWVfcG9ydCAqcHAgPSBzeXMtPnByaXZhdGVfZGF0YTsKLQl1 bnNpZ25lZCBsb25nIGZsYWdzOwotCWludCByZXQ7Ci0KLQlpZiAocGNpZV92YWxpZF9jb25maWco cHAsIGJ1cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXZmbikpID09IDApIHsKLQkJKnZhbCA9IDB4ZmZm ZmZmZmY7Ci0JCXJldHVybiBQQ0lCSU9TX0RFVklDRV9OT1RfRk9VTkQ7Ci0JfQotCi0Jc3Bpbl9s b2NrX2lycXNhdmUoJnBwLT5jb25mX2xvY2ssIGZsYWdzKTsKLQlyZXQgPSBvcmlvbl9wY2llX3Jk X2NvbmYocHAtPmJhc2UsIGJ1cywgZGV2Zm4sIHdoZXJlLCBzaXplLCB2YWwpOwotCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnBwLT5jb25mX2xvY2ssIGZsYWdzKTsKLQotCXJldHVybiByZXQ7Ci19 Ci0KLXN0YXRpYyBpbnQgcGNpZV93cl9jb25mKHN0cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZm biwKLQkJCWludCB3aGVyZSwgaW50IHNpemUsIHUzMiB2YWwpCi17Ci0Jc3RydWN0IHBjaV9zeXNf ZGF0YSAqc3lzID0gYnVzLT5zeXNkYXRhOwotCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gc3lzLT5w cml2YXRlX2RhdGE7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgcmV0OwotCi0JaWYgKHBj aWVfdmFsaWRfY29uZmlnKHBwLCBidXMtPm51bWJlciwgUENJX1NMT1QoZGV2Zm4pKSA9PSAwKQot CQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUo JnBwLT5jb25mX2xvY2ssIGZsYWdzKTsKLQlyZXQgPSBvcmlvbl9wY2llX3dyX2NvbmYocHAtPmJh c2UsIGJ1cywgZGV2Zm4sIHdoZXJlLCBzaXplLCB2YWwpOwotCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnBwLT5jb25mX2xvY2ssIGZsYWdzKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBz dHJ1Y3QgcGNpX29wcyBwY2llX29wcyA9IHsKLQkucmVhZCA9IHBjaWVfcmRfY29uZiwKLQkud3Jp dGUgPSBwY2llX3dyX2NvbmYsCi19OwotCi0vKgotICogVGhlIHJvb3QgY29tcGxleCBoYXMgYSBo YXJkd2lyZWQgY2xhc3Mgb2YgUENJX0NMQVNTX01FTU9SWV9PVEhFUiwgd2hlbiBpdAotICogaXMg b3BlcmF0aW5nIGFzIGEgcm9vdCBjb21wbGV4IHRoaXMgbmVlZHMgdG8gYmUgc3dpdGNoZWQgdG8K LSAqIFBDSV9DTEFTU19CUklER0VfSE9TVCBvciBMaW51eCB3aWxsIGVycmFudGx5IHRyeSB0byBw cm9jZXNzIHRoZSBCQVIncyBvbgotICogdGhlIGRldmljZS4gRGVjb2Rpbmcgc2V0dXAgaXMgaGFu ZGxlZCBieSB0aGUgb3Jpb24gY29kZS4KLSAqLwotc3RhdGljIHZvaWQgcmNfcGNpX2ZpeHVwKHN0 cnVjdCBwY2lfZGV2ICpkZXYpCi17Ci0JaWYgKGRldi0+YnVzLT5wYXJlbnQgPT0gTlVMTCAmJiBk ZXYtPmRldmZuID09IDApIHsKLQkJc3RydWN0IHJlc291cmNlICpyOwotCi0JCWRldi0+Y2xhc3Mg Jj0gMHhmZjsKLQkJZGV2LT5jbGFzcyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsKLQkJ cGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHIpIHsKLQkJCXItPnN0YXJ0ID0gMDsKLQkJ CXItPmVuZCAgID0gMDsKLQkJCXItPmZsYWdzID0gMDsKLQkJfQotCX0KLX0KLURFQ0xBUkVfUENJ X0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX01BUlZFTEwsIFBDSV9BTllfSUQsIHJjX3BjaV9m aXh1cCk7Ci0KLXN0YXRpYyBpbnQgX19pbml0Ci1kb3ZlX3BjaWVfc2Nhbl9idXMoaW50IG5yLCBz dHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2UpCi17Ci0Jc3RydWN0IHBjaV9zeXNfZGF0YSAq c3lzID0gcGNpX2hvc3RfYnJpZGdlX3ByaXYoYnJpZGdlKTsKLQotCWlmIChuciA+PSBudW1fcGNp ZV9wb3J0cykgewotCQlCVUcoKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JbGlzdF9zcGxp Y2VfaW5pdCgmc3lzLT5yZXNvdXJjZXMsICZicmlkZ2UtPndpbmRvd3MpOwotCWJyaWRnZS0+ZGV2 LnBhcmVudCA9IE5VTEw7Ci0JYnJpZGdlLT5zeXNkYXRhID0gc3lzOwotCWJyaWRnZS0+YnVzbnIg PSBzeXMtPmJ1c25yOwotCWJyaWRnZS0+b3BzID0gJnBjaWVfb3BzOwotCi0JcmV0dXJuIHBjaV9z Y2FuX3Jvb3RfYnVzX2JyaWRnZShicmlkZ2UpOwotfQotCi1zdGF0aWMgaW50IF9faW5pdCBkb3Zl X3BjaWVfbWFwX2lycShjb25zdCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1OCBzbG90LCB1OCBwaW4p Ci17Ci0Jc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzID0gZGV2LT5zeXNkYXRhOwotCXN0cnVjdCBw Y2llX3BvcnQgKnBwID0gc3lzLT5wcml2YXRlX2RhdGE7Ci0KLQlyZXR1cm4gcHAtPmluZGV4ID8g SVJRX0RPVkVfUENJRTEgOiBJUlFfRE9WRV9QQ0lFMDsKLX0KLQotc3RhdGljIHN0cnVjdCBod19w Y2kgZG92ZV9wY2kgX19pbml0ZGF0YSA9IHsKLQkubnJfY29udHJvbGxlcnMJPSAyLAotCS5zZXR1 cAkJPSBkb3ZlX3BjaWVfc2V0dXAsCi0JLnNjYW4JCT0gZG92ZV9wY2llX3NjYW5fYnVzLAotCS5t YXBfaXJxCT0gZG92ZV9wY2llX21hcF9pcnEsCi19OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgYWRk X3BjaWVfcG9ydChpbnQgaW5kZXgsIHZvaWQgX19pb21lbSAqYmFzZSkKLXsKLQlwcmludGsoS0VS Tl9JTkZPICJEb3ZlIFBDSWUgcG9ydCAlZDogIiwgaW5kZXgpOwotCi0JaWYgKG9yaW9uX3BjaWVf bGlua191cChiYXNlKSkgewotCQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2llX3BvcnRbbnVt X3BjaWVfcG9ydHMrK107Ci0JCXN0cnVjdCBjbGsgKmNsayA9IGNsa19nZXRfc3lzKCJwY2llIiwg KGluZGV4ID8gIjEiIDogIjAiKSk7Ci0KLQkJaWYgKCFJU19FUlIoY2xrKSkKLQkJCWNsa19wcmVw YXJlX2VuYWJsZShjbGspOwotCi0JCXByaW50ayhLRVJOX0lORk8gImxpbmsgdXBcbiIpOwotCi0J CXBwLT5pbmRleCA9IGluZGV4OwotCQlwcC0+cm9vdF9idXNfbnIgPSAtMTsKLQkJcHAtPmJhc2Ug PSBiYXNlOwotCQlzcGluX2xvY2tfaW5pdCgmcHAtPmNvbmZfbG9jayk7Ci0JCW1lbXNldCgmcHAt PnJlcywgMCwgc2l6ZW9mKHBwLT5yZXMpKTsKLQl9IGVsc2UgewotCQlwcmludGsoS0VSTl9JTkZP ICJsaW5rIGRvd24sIGlnbm9yaW5nXG4iKTsKLQl9Ci19Ci0KLXZvaWQgX19pbml0IGRvdmVfcGNp ZV9pbml0KGludCBpbml0X3BvcnQwLCBpbnQgaW5pdF9wb3J0MSkKLXsKLQl2Z2FfYmFzZSA9IERP VkVfUENJRTBfTUVNX1BIWVNfQkFTRTsKLQotCWlmIChpbml0X3BvcnQwKQotCQlhZGRfcGNpZV9w b3J0KDAsIERPVkVfUENJRTBfVklSVF9CQVNFKTsKLQotCWlmIChpbml0X3BvcnQxKQotCQlhZGRf cGNpZV9wb3J0KDEsIERPVkVfUENJRTFfVklSVF9CQVNFKTsKLQotCXBjaV9jb21tb25faW5pdCgm ZG92ZV9wY2kpOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL3BtLmggYi9hcmNo L2FybS9tYWNoLWRvdmUvcG0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRjM2Fi YTFlMmQwLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL3BtLmgKKysrIC9k ZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5ICovCi0KLSNpZm5kZWYgX19BU01fQVJDSF9QTV9ICi0jZGVmaW5lIF9fQVNNX0FS Q0hfUE1fSAotCi0jaW5jbHVkZSA8YXNtL2Vycm5vLmg+Ci0jaW5jbHVkZSAiaXJxcy5oIgotCi0j ZGVmaW5lIENMT0NLX0dBVElOR19DT05UUk9MCShET1ZFX1BNVV9WSVJUX0JBU0UgKyAweDM4KQot I2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0JJVF9VU0IwCQkwCi0jZGVmaW5lICBDTE9DS19HQVRJTkdf QklUX1VTQjEJCTEKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfR0JFCQkyCi0jZGVmaW5lICBD TE9DS19HQVRJTkdfQklUX1NBVEEJCTMKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfUENJRTAJ CTQKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfUENJRTEJCTUKLSNkZWZpbmUgIENMT0NLX0dB VElOR19CSVRfU0RJTzAJCTgKLSNkZWZpbmUgIENMT0NLX0dBVElOR19CSVRfU0RJTzEJCTkKLSNk ZWZpbmUgIENMT0NLX0dBVElOR19CSVRfTkFORAkJMTAKLSNkZWZpbmUgIENMT0NLX0dBVElOR19C SVRfQ0FNRVJBCTExCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX0kyUzAJCTEyCi0jZGVmaW5l ICBDTE9DS19HQVRJTkdfQklUX0kyUzEJCTEzCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfQklUX0NS WVBUTwkxNQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0JJVF9BQzk3CQkyMQotI2RlZmluZSAgQ0xP Q0tfR0FUSU5HX0JJVF9QRE1BCQkyMgotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0JJVF9YT1IwCQky MwotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0JJVF9YT1IxCQkyNAotI2RlZmluZSAgQ0xPQ0tfR0FU SU5HX0JJVF9HSUdBX1BIWQkzMAotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX1VTQjBfTUFTSwkJKDEg PDwgQ0xPQ0tfR0FUSU5HX0JJVF9VU0IwKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX1VTQjFfTUFT SwkJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9VU0IxKQotI2RlZmluZSAgQ0xPQ0tfR0FUSU5HX0dC RV9NQVNLCQkoMSA8PCBDTE9DS19HQVRJTkdfQklUX0dCRSkKLSNkZWZpbmUgIENMT0NLX0dBVElO R19TQVRBX01BU0sJCSgxIDw8IENMT0NLX0dBVElOR19CSVRfU0FUQSkKLSNkZWZpbmUgIENMT0NL X0dBVElOR19QQ0lFMF9NQVNLCSgxIDw8IENMT0NLX0dBVElOR19CSVRfUENJRTApCi0jZGVmaW5l ICBDTE9DS19HQVRJTkdfUENJRTFfTUFTSwkoMSA8PCBDTE9DS19HQVRJTkdfQklUX1BDSUUxKQot I2RlZmluZSAgQ0xPQ0tfR0FUSU5HX1NESU8wX01BU0sJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9T RElPMCkKLSNkZWZpbmUgIENMT0NLX0dBVElOR19TRElPMV9NQVNLCSgxIDw8IENMT0NLX0dBVElO R19CSVRfU0RJTzEpCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfTkFORF9NQVNLCQkoMSA8PCBDTE9D S19HQVRJTkdfQklUX05BTkQpCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfQ0FNRVJBX01BU0sJKDEg PDwgQ0xPQ0tfR0FUSU5HX0JJVF9DQU1FUkEpCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfSTJTMF9N QVNLCQkoMSA8PCBDTE9DS19HQVRJTkdfQklUX0kyUzApCi0jZGVmaW5lICBDTE9DS19HQVRJTkdf STJTMV9NQVNLCQkoMSA8PCBDTE9DS19HQVRJTkdfQklUX0kyUzEpCi0jZGVmaW5lICBDTE9DS19H QVRJTkdfQ1JZUFRPX01BU0sJKDEgPDwgQ0xPQ0tfR0FUSU5HX0JJVF9DUllQVE8pCi0jZGVmaW5l ICBDTE9DS19HQVRJTkdfQUM5N19NQVNLCQkoMSA8PCBDTE9DS19HQVRJTkdfQklUX0FDOTcpCi0j ZGVmaW5lICBDTE9DS19HQVRJTkdfUERNQV9NQVNLCQkoMSA8PCBDTE9DS19HQVRJTkdfQklUX1BE TUEpCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfWE9SMF9NQVNLCQkoMSA8PCBDTE9DS19HQVRJTkdf QklUX1hPUjApCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfWE9SMV9NQVNLCQkoMSA8PCBDTE9DS19H QVRJTkdfQklUX1hPUjEpCi0jZGVmaW5lICBDTE9DS19HQVRJTkdfR0lHQV9QSFlfTUFTSwkoMSA8 PCBDTE9DS19HQVRJTkdfQklUX0dJR0FfUEhZKQotCi0jZGVmaW5lIFBNVV9JTlRFUlJVUFRfQ0FV U0UJKERPVkVfUE1VX1ZJUlRfQkFTRSArIDB4NTApCi0KLSNkZWZpbmUgIFBNVV9TV19SU1RfVklE RU9fTUFTSwkJQklUKDE2KQotI2RlZmluZSAgUE1VX1NXX1JTVF9HUFVfTUFTSwkJQklUKDE4KQot Ci0jZGVmaW5lICBQTVVfUFdSX0dQVV9QV1JfRFdOX01BU0sJQklUKDIpCi0jZGVmaW5lICBQTVVf UFdSX1ZQVV9QV1JfRFdOX01BU0sJQklUKDMpCi0KLSNkZWZpbmUgIFBNVV9JU09fVklERU9fTUFT SwkJQklUKDApCi0jZGVmaW5lICBQTVVfSVNPX0dQVV9NQVNLCQlCSVQoMSkKLQotI2VuZGlmCmRp ZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gt bXY3OHh4MC9LY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGIzNWY1ZDA1 YmEuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvS2NvbmZpZworKysg L2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seQotbWVudWNvbmZpZyBBUkNIX01WNzhYWDAKLQlib29sICJNYXJ2ZWxsIE1WNzh4 eDAgKERFUFJFQ0FURUQpIgotCWRlcGVuZHMgb24gQVJDSF9NVUxUSV9WNQotCWRlcGVuZHMgb24g Q1BVX0xJVFRMRV9FTkRJQU4KLQlkZXBlbmRzIG9uIEFUQUdTCi0Jc2VsZWN0IENQVV9GRVJPQ0VP TgotCXNlbGVjdCBHUElPTElCCi0Jc2VsZWN0IEdQSU9MSUJfTEVHQUNZCi0Jc2VsZWN0IE1WRUJV X01CVVMKLQlzZWxlY3QgRk9SQ0VfUENJCi0Jc2VsZWN0IFBMQVRfT1JJT05fTEVHQUNZCi0JaGVs cAotCSAgU3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBNYXJ2ZWxsIE1WNzh4eDAgc2VyaWVzIFNv Q3M6Ci0JICBNVjc4MXgwLCBNVjc4MngwLgotCi0JICBUaGlzIHBsYXRmb3JtIGlzIHNjaGVkdWxl ZCBmb3IgcmVtb3ZhbCBpbiBlYXJseSAyMDI3LgotCi1pZiBBUkNIX01WNzhYWDAKLQotY29uZmln IE1BQ0hfVEVSQVNUQVRJT05fV1hMCi0JYm9vbCAiQnVmZmFsbyBXTFggKFRlcmFzdGF0aW9uIER1 bykgTkFTIgotCWhlbHAKLQkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2FudCB5b3VyIGtlcm5lbCB0 byBzdXBwb3J0IHRoZQotCSAgQnVmZmFsbyBXWEwgTmFzLgotCi1lbmRpZgpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1tdjc4eHgwL01ha2VmaWxlIGIvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL01h a2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGVlNmFlNTAxYmIuLjAwMDAw MDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvTWFrZWZpbGUKKysrIC9kZXYvbnVs bApAQCAtMSw1ICswLDAgQEAKLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLWNj ZmxhZ3MteSA6PSAtSSQoc3JjdHJlZSkvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlCi0KLW9i ai15CQkJCSs9IGNvbW1vbi5vIG1wcC5vIGlycS5vIHBjaWUubwotb2JqLSQoQ09ORklHX01BQ0hf VEVSQVNUQVRJT05fV1hMKSArPSBidWZmYWxvLXd4bC1zZXR1cC5vCmRpZmYgLS1naXQgYS9hcmNo L2FybS9tYWNoLW12Nzh4eDAvYnJpZGdlLXJlZ3MuaCBiL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9i cmlkZ2UtcmVncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTdhYzk2N2M0YjMu LjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvYnJpZGdlLXJlZ3MuaAor KysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkgKi8KLQotI2lmbmRlZiBfX0FTTV9BUkNIX0JSSURHRV9SRUdTX0gKLSNk ZWZpbmUgX19BU01fQVJDSF9CUklER0VfUkVHU19ICi0KLSNpbmNsdWRlICJtdjc4eHgwLmgiCi0K LSNkZWZpbmUgQ1BVX0NPTlRST0wJCShCUklER0VfVklSVF9CQVNFICsgMHgwMTA0KQotI2RlZmlu ZSBMMl9XUklURVRIUk9VR0gJCTB4MDAwMjAwMDAKLQotI2RlZmluZSBSU1RPVVRuX01BU0sJCShC UklER0VfVklSVF9CQVNFICsgMHgwMTA4KQotI2RlZmluZSBSU1RPVVRuX01BU0tfUEhZUwkoQlJJ REdFX1BIWVNfQkFTRSArIDB4MDEwOCkKLSNkZWZpbmUgU09GVF9SRVNFVF9PVVRfRU4JMHgwMDAw MDAwNAotCi0jZGVmaW5lIFNZU1RFTV9TT0ZUX1JFU0VUCShCUklER0VfVklSVF9CQVNFICsgMHgw MTBjKQotI2RlZmluZSBTT0ZUX1JFU0VUCQkweDAwMDAwMDAxCi0KLSNkZWZpbmUgQlJJREdFX0lO VF9USU1FUjFfQ0xSCSh+MHgwMDA0KQotCi0jZGVmaW5lIElSUV9WSVJUX0JBU0UJCShCUklER0Vf VklSVF9CQVNFICsgMHgwMjAwKQotI2RlZmluZSBJUlFfQ0FVU0VfRVJSX09GRgkweDAwMDAKLSNk ZWZpbmUgSVJRX0NBVVNFX0xPV19PRkYJMHgwMDA0Ci0jZGVmaW5lIElSUV9DQVVTRV9ISUdIX09G RgkweDAwMDgKLSNkZWZpbmUgSVJRX01BU0tfRVJSX09GRgkweDAwMGMKLSNkZWZpbmUgSVJRX01B U0tfTE9XX09GRgkweDAwMTAKLSNkZWZpbmUgSVJRX01BU0tfSElHSF9PRkYJMHgwMDE0Ci0KLSNk ZWZpbmUgVElNRVJfVklSVF9CQVNFCQkoQlJJREdFX1ZJUlRfQkFTRSArIDB4MDMwMCkKLSNkZWZp bmUgVElNRVJfUEhZU19CQVNFCQkoQlJJREdFX1BIWVNfQkFTRSArIDB4MDMwMCkKLQotI2VuZGlm CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvYnVmZmFsby13eGwtc2V0dXAuYyBi L2FyY2gvYXJtL21hY2gtbXY3OHh4MC9idWZmYWxvLXd4bC1zZXR1cC5jCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzYjJlMzgxYjczODMuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2Fy bS9tYWNoLW12Nzh4eDAvYnVmZmFsby13eGwtc2V0dXAuYworKysgL2Rldi9udWxsCkBAIC0xLDE4 MyArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgot ICogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2J1ZmZhbG8td3hsLXNldHVwLmMKLSAqCi0gKiBCdWZm YWxvIFdYTCAoVGVyYXN0YXRpb24gRHVvKSBTZXR1cCByb3V0aW5lcwotICoKLSAqIHNlYmFzdGll biByZXF1aWVtIDxzZWJhc3RpZW5AcmVxdWllbS5mcj4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgv a2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2luY2x1ZGUg PGxpbnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgotI2luY2x1 ZGUgPGxpbnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8vbGVnYWN5Lmg+Ci0jaW5jbHVk ZSA8bGludXgvZ3Bpb19rZXlzLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KLSNpbmNsdWRl IDxhc20vbWFjaC10eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KLSNpbmNsdWRl ICJtdjc4eHgwLmgiCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0jaW5jbHVkZSAibXBwLmgiCi0KLQot I2RlZmluZSBUU1dYTF9BVVRPX1NXSVRDSAkxNQotI2RlZmluZSBUU1dYTF9VU0JfUE9XRVIxCTMw Ci0jZGVmaW5lIFRTV1hMX1VTQl9QT1dFUjIJMzEKLQotCi0vKiBUaGlzIGFyY2ggaGFzIDIgR2ln YSBFdGhlcm5ldCAqLwotCi1zdGF0aWMgc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEg ZGI3OHgwMF9nZTAwX2RhdGEgPSB7Ci0JLnBoeV9hZGRyCT0gTVY2NDNYWF9FVEhfUEhZX0FERFIo MCksCi19OwotCi1zdGF0aWMgc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgZGI3OHgw MF9nZTAxX2RhdGEgPSB7Ci0JLnBoeV9hZGRyCT0gTVY2NDNYWF9FVEhfUEhZX0FERFIoOCksCi19 OwotCi0KLS8qIDIgU0FUQSBjb250cm9sbGVyIHN1cHBvcnRpbmcgSG90UGx1ZyAqLwotCi1zdGF0 aWMgc3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSBkYjc4eDAwX3NhdGFfZGF0YSA9IHsKLQku bl9wb3J0cwk9IDIsCi19OwotCi1zdGF0aWMgc3RydWN0IGkyY19ib2FyZF9pbmZvIF9faW5pdGRh dGEgZGI3OHgwMF9pMmNfcnRjID0gewotCUkyQ19CT0FSRF9JTkZPKCJyczVjMzcyYSIsIDB4MzIp LAotfTsKLQotCi1zdGF0aWMgdW5zaWduZWQgaW50IHd4bF9tcHBfY29uZmlnW10gX19pbml0ZGF0 YSA9IHsKLQlNUFAwX0dFMV9UWENMSywKLQlNUFAxX0dFMV9UWENUTCwKLQlNUFAyX0dFMV9SWENU TCwKLQlNUFAzX0dFMV9SWENMSywKLQlNUFA0X0dFMV9UWEQwLAotCU1QUDVfR0UxX1RYRDEsCi0J TVBQNl9HRTFfVFhEMiwKLQlNUFA3X0dFMV9UWEQzLAotCU1QUDhfR0UxX1JYRDAsCi0JTVBQOV9H RTFfUlhEMSwKLQlNUFAxMF9HRTFfUlhEMiwKLQlNUFAxMV9HRTFfUlhEMywKLQlNUFAxMl9HUElP LAotCU1QUDEzX0dQSU8sCi0JTVBQMTRfR1BJTywKLQlNUFAxNV9HUElPLAotCU1QUDE2X0dQSU8s Ci0JTVBQMTdfR1BJTywKLQlNUFAxOF9HUElPLAotCU1QUDE5X0dQSU8sCi0JTVBQMjBfR1BJTywK LQlNUFAyMV9HUElPLAotCU1QUDIyX0dQSU8sCi0JTVBQMjNfR1BJTywKLQlNUFAyNF9VQTJfVFhE LAotCU1QUDI1X1VBMl9SWEQsCi0JTVBQMjZfVUEyX0NUU24sCi0JTVBQMjdfVUEyX1JUU24sCi0J TVBQMjhfR1BJTywKLQlNUFAyOV9HUElPLAotCU1QUDMwX0dQSU8sCi0JTVBQMzFfR1BJTywKLQlN UFAzMl9HUElPLAotCU1QUDMzX0dQSU8sCi0JTVBQMzRfR1BJTywKLQlNUFAzNV9HUElPLAotCU1Q UDM2X0dQSU8sCi0JTVBQMzdfR1BJTywKLQlNUFAzOF9HUElPLAotCU1QUDM5X0dQSU8sCi0JTVBQ NDBfR1BJTywKLQlNUFA0MV9HUElPLAotCU1QUDQyX0dQSU8sCi0JTVBQNDNfR1BJTywKLQlNUFA0 NF9HUElPLAotCU1QUDQ1X0dQSU8sCi0JTVBQNDZfR1BJTywKLQlNUFA0N19HUElPLAotCU1QUDQ4 X0dQSU8sCi0JTVBQNDlfR1BJTywKLQkwCi19OwotCi1zdGF0aWMgc3RydWN0IGdwaW9fa2V5c19i dXR0b24gdHN3eGxfYnV0dG9uc1tdID0gewotCXsKLQkJLmNvZGUJICAgPSBLRVlfT1BUSU9OLAot CQkuZ3BpbwkgICA9IFRTV1hMX0FVVE9fU1dJVENILAotCQkuZGVzYwkgICA9ICJQb3dlci1hdXRv IFN3aXRjaCIsCi0JCS5hY3RpdmVfbG93ICAgICA9IDEsCi0JfQotfTsKLQotc3RhdGljIHN0cnVj dCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSB0c3d4bF9idXR0b25fZGF0YSA9IHsKLQkuYnV0dG9u cwk9IHRzd3hsX2J1dHRvbnMsCi0JLm5idXR0b25zICAgICAgID0gQVJSQVlfU0laRSh0c3d4bF9i dXR0b25zKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHRzd3hsX2J1dHRv bl9kZXZpY2UgPSB7Ci0JLm5hbWUJICAgPSAiZ3Bpby1rZXlzIiwKLQkuaWQJICAgICA9IC0xLAot CS5udW1fcmVzb3VyY2VzICA9IDAsCi0JLmRldgkgICAgPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhICA9 ICZ0c3d4bF9idXR0b25fZGF0YSwKLQl9LAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IHd4bF9p bml0KHZvaWQpCi17Ci0JLyoKLQkgKiBCYXNpYyBNVjc4eHgwIHNldHVwLiBOZWVkcyB0byBiZSBj YWxsZWQgZWFybHkuCi0JICovCi0JbXY3OHh4MF9pbml0KCk7Ci0JbXY3OHh4MF9tcHBfY29uZih3 eGxfbXBwX2NvbmZpZyk7Ci0KLQkvKgotCSAqIFBhcnRpdGlvbiBvbi1jaGlwIHBlcmlwaGVyYWxz IGJldHdlZW4gdGhlIHR3byBDUFUgY29yZXMuCi0JICovCi0JbXY3OHh4MF9laGNpMF9pbml0KCk7 Ci0JbXY3OHh4MF9laGNpMV9pbml0KCk7Ci0JbXY3OHh4MF9nZTAwX2luaXQoJmRiNzh4MDBfZ2Uw MF9kYXRhKTsKLQltdjc4eHgwX2dlMDFfaW5pdCgmZGI3OHgwMF9nZTAxX2RhdGEpOwotCW12Nzh4 eDBfc2F0YV9pbml0KCZkYjc4eDAwX3NhdGFfZGF0YSk7Ci0JbXY3OHh4MF91YXJ0MF9pbml0KCk7 Ci0JbXY3OHh4MF91YXJ0MV9pbml0KCk7Ci0JbXY3OHh4MF91YXJ0Ml9pbml0KCk7Ci0JbXY3OHh4 MF91YXJ0M19pbml0KCk7Ci0JbXY3OHh4MF94b3JfaW5pdCgpOwotCW12Nzh4eDBfY3J5cHRvX2lu aXQoKTsKLQltdjc4eHgwX2kyY19pbml0KCk7Ci0JaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwg JmRiNzh4MDBfaTJjX3J0YywgMSk7Ci0KLQkvL2VuYWJsZSBib3RoIHVzYiBwb3J0cwotCWdwaW9f ZGlyZWN0aW9uX291dHB1dChUU1dYTF9VU0JfUE9XRVIxLCAxKTsKLQlncGlvX2RpcmVjdGlvbl9v dXRwdXQoVFNXWExfVVNCX1BPV0VSMiwgMSk7Ci0KLQkvL2VuYWJsZSByZWFyIHN3aXRjaAotCXBs YXRmb3JtX2RldmljZV9yZWdpc3RlcigmdHN3eGxfYnV0dG9uX2RldmljZSk7Ci19Ci0KLXN0YXRp YyBpbnQgX19pbml0IHd4bF9wY2lfaW5pdCh2b2lkKQotewotCWlmIChtYWNoaW5lX2lzX3RlcmFz dGF0aW9uX3d4bCgpICYmIG12Nzh4eDBfY29yZV9pbmRleCgpID09IDApCi0gICAgICAgICAgICAg ICAgbXY3OHh4MF9wY2llX2luaXQoMSwgMSk7Ci0KLQlyZXR1cm4gMDsKLX0KLXN1YnN5c19pbml0 Y2FsbCh3eGxfcGNpX2luaXQpOwotCi1NQUNISU5FX1NUQVJUKFRFUkFTVEFUSU9OX1dYTCwgIkJ1 ZmZhbG8gTmFzIFdYTCIpCi0JLyogTWFpbnRhaW5lcjogU2ViYXN0aWVuIFJlcXVpZW0gPHNlYmFz dGllbkByZXF1aWVtLmZyPiAqLwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0g TVY3OFhYMF9OUl9JUlFTLAotCS5pbml0X21hY2hpbmUJPSB3eGxfaW5pdCwKLQkubWFwX2lvCQk9 IG12Nzh4eDBfbWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gbXY3OHh4MF9pbml0X2Vhcmx5LAotCS5p bml0X2lycQk9IG12Nzh4eDBfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG12Nzh4eDBfdGltZXJf aW5pdCwKLQkucmVzdGFydAk9IG12Nzh4eDBfcmVzdGFydCwKLU1BQ0hJTkVfRU5ECmRpZmYgLS1n aXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvY29tbW9uLmMgYi9hcmNoL2FybS9tYWNoLW12Nzh4 eDAvY29tbW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTc1M2ZjYzBlZi4u MDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9jb21tb24uYworKysgL2Rl di9udWxsCkBAIC0xLDQ0NCArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2NvbW1vbi5jCi0gKgotICog Q29yZSBmdW5jdGlvbnMgZm9yIE1hcnZlbGwgTVY3OHh4MCBTb0NzCi0gKi8KLQotI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51 eC9pby5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxp bnV4L3NlcmlhbF84MjUwLmg+Ci0jaW5jbHVkZSA8bGludXgvYXRhX3BsYXRmb3JtLmg+Ci0jaW5j bHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgot I2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9jYWNoZS1mZXJvY2Vvbi1sMi5oPgotI2luY2x1ZGUgPGFz bS9tYWNoL21hcC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KLSNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kYXRhL3VzYi1laGNpLW9yaW9uLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGF0YS9tdGQtb3Jpb25fbmFuZC5oPgotI2luY2x1ZGUgPHBsYXQvdGltZS5oPgotI2luY2x1 ZGUgPHBsYXQvY29tbW9uLmg+Ci0jaW5jbHVkZSA8cGxhdC9hZGRyLW1hcC5oPgotI2luY2x1ZGUg Im12Nzh4eDAuaCIKLSNpbmNsdWRlICJicmlkZ2UtcmVncy5oIgotI2luY2x1ZGUgImNvbW1vbi5o IgotCi1zdGF0aWMgaW50IGdldF90Y2xrKHZvaWQpOwotCi0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LSAqIENvbW1vbiBiaXRzCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWludCBtdjc4eHgwX2NvcmVf aW5kZXgodm9pZCkKLXsKLQl1MzIgZXh0cmE7Ci0KLQkvKgotCSAqIFJlYWQgRXh0cmEgRmVhdHVy ZXMgcmVnaXN0ZXIuCi0JICovCi0JX19hc21fXygibXJjIHAxNSwgMSwgJTAsIGMxNSwgYzEsIDAi IDogIj1yIiAoZXh0cmEpKTsKLQotCXJldHVybiAhIShleHRyYSAmIDB4MDAwMDQwMDApOwotfQot Ci1zdGF0aWMgaW50IGdldF9oY2xrKHZvaWQpCi17Ci0JaW50IGhjbGs7Ci0KLQkvKgotCSAqIEhD TEsgdGljayByYXRlIGlzIGNvbmZpZ3VyZWQgYnkgREVWX0RbNzo1XSBwaW5zLgotCSAqLwotCXN3 aXRjaCAoKHJlYWRsKFNBTVBMRV9BVF9SRVNFVF9MT1cpID4+IDUpICYgNykgewotCWNhc2UgMDoK LQkJaGNsayA9IDE2NjY2NjY2NzsKLQkJYnJlYWs7Ci0JY2FzZSAxOgotCQloY2xrID0gMjAwMDAw MDAwOwotCQlicmVhazsKLQljYXNlIDI6Ci0JCWhjbGsgPSAyNjY2NjY2Njc7Ci0JCWJyZWFrOwot CWNhc2UgMzoKLQkJaGNsayA9IDMzMzMzMzMzMzsKLQkJYnJlYWs7Ci0JY2FzZSA0OgotCQloY2xr ID0gNDAwMDAwMDAwOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwYW5pYygidW5rbm93biBIQ0xL IFBMTCBzZXR0aW5nOiAlLjh4XG4iLAotCQkJcmVhZGwoU0FNUExFX0FUX1JFU0VUX0xPVykpOwot CX0KLQotCXJldHVybiBoY2xrOwotfQotCi1zdGF0aWMgdm9pZCBnZXRfcGNsa19sMmNsayhpbnQg aGNsaywgaW50IGNvcmVfaW5kZXgsIGludCAqcGNsaywgaW50ICpsMmNsaykKLXsKLQl1MzIgY2Zn OwotCi0JLyoKLQkgKiBDb3JlICMwIFBDTEsvTDJDTEsgaXMgY29uZmlndXJlZCBieSBiaXRzIFsx Mzo4XSwgY29yZSAjMQotCSAqIFBDTEsvTDJDTEsgYnkgYml0cyBbMTk6MTRdLgotCSAqLwotCWlm IChjb3JlX2luZGV4ID09IDApIHsKLQkJY2ZnID0gKHJlYWRsKFNBTVBMRV9BVF9SRVNFVF9MT1cp ID4+IDgpICYgMHgzZjsKLQl9IGVsc2UgewotCQljZmcgPSAocmVhZGwoU0FNUExFX0FUX1JFU0VU X0xPVykgPj4gMTQpICYgMHgzZjsKLQl9Ci0KLQkvKgotCSAqIEJpdHMgWzExOjhdIChbMTc6MTRd IGZvciBjb3JlICMxKSBjb25maWd1cmUgdGhlIFBDTEs6SENMSwotCSAqIHJhdGlvICgxLCAxLjUs IDIsIDIuNSwgMywgMy41LCA0LCA0LjUsIDUsIDUuNSwgNikuCi0JICovCi0JKnBjbGsgPSAoKHU2 NCloY2xrICogKDIgKyAoY2ZnICYgMHhmKSkpID4+IDE7Ci0KLQkvKgotCSAqIEJpdHMgWzEzOjEy XSAoWzE5OjE4XSBmb3IgY29yZSAjMSkgY29uZmlndXJlIHRoZSBQQ0xLOkwyQ0xLCi0JICogcmF0 aW8gKDEsIDIsIDMpLgotCSAqLwotCSpsMmNsayA9ICpwY2xrIC8gKCgoY2ZnID4+IDQpICYgMykg KyAxKTsKLX0KLQotc3RhdGljIGludCBnZXRfdGNsayh2b2lkKQotewotCWludCB0Y2xrX2ZyZXE7 Ci0KLQkvKgotCSAqIFRDTEsgdGljayByYXRlIGlzIGNvbmZpZ3VyZWQgYnkgREVWX0FbMjowXSBz dHJhcCBwaW5zLgotCSAqLwotCXN3aXRjaCAoKHJlYWRsKFNBTVBMRV9BVF9SRVNFVF9ISUdIKSA+ PiA2KSAmIDcpIHsKLQljYXNlIDE6Ci0JCXRjbGtfZnJlcSA9IDE2NjY2NjY2NzsKLQkJYnJlYWs7 Ci0JY2FzZSAzOgotCQl0Y2xrX2ZyZXEgPSAyMDAwMDAwMDA7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6 Ci0JCXBhbmljKCJ1bmtub3duIFRDTEsgUExMIHNldHRpbmc6ICUuOHhcbiIsCi0JCQlyZWFkbChT QU1QTEVfQVRfUkVTRVRfSElHSCkpOwotCX0KLQotCXJldHVybiB0Y2xrX2ZyZXE7Ci19Ci0KLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiBJL08gQWRkcmVzcyBNYXBwaW5nCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbWFwX2Rlc2MgbXY3OHh4MF9pb19kZXNjW10gX19p bml0ZGF0YSA9IHsKLQl7Ci0JCS52aXJ0dWFsCT0gKHVuc2lnbmVkIGxvbmcpIE1WNzhYWDBfQ09S RV9SRUdTX1ZJUlRfQkFTRSwKLQkJLnBmbgkJPSAwLAotCQkubGVuZ3RoCQk9IE1WNzhYWDBfQ09S RV9SRUdTX1NJWkUsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LCB7Ci0JCS52aXJ0dWFsCT0g KHVuc2lnbmVkIGxvbmcpIE1WNzhYWDBfUkVHU19WSVJUX0JBU0UsCi0JCS5wZm4JCT0gX19waHlz X3RvX3BmbihNVjc4WFgwX1JFR1NfUEhZU19CQVNFKSwKLQkJLmxlbmd0aAkJPSBNVjc4WFgwX1JF R1NfU0laRSwKLQkJLnR5cGUJCT0gTVRfREVWSUNFLAotCX0sCi19OwotCi12b2lkIF9faW5pdCBt djc4eHgwX21hcF9pbyh2b2lkKQotewotCXVuc2lnbmVkIGxvbmcgcGh5czsKLQotCS8qCi0JICog TWFwIHRoZSByaWdodCBzZXQgb2YgcGVyLWNvcmUgcmVnaXN0ZXJzIGRlcGVuZGluZyBvbgotCSAq IHdoaWNoIGNvcmUgd2UgYXJlIHJ1bm5pbmcgb24uCi0JICovCi0JaWYgKG12Nzh4eDBfY29yZV9p bmRleCgpID09IDApIHsKLQkJcGh5cyA9IE1WNzhYWDBfQ09SRTBfUkVHU19QSFlTX0JBU0U7Ci0J fSBlbHNlIHsKLQkJcGh5cyA9IE1WNzhYWDBfQ09SRTFfUkVHU19QSFlTX0JBU0U7Ci0JfQotCW12 Nzh4eDBfaW9fZGVzY1swXS5wZm4gPSBfX3BoeXNfdG9fcGZuKHBoeXMpOwotCi0JaW90YWJsZV9p bml0KG12Nzh4eDBfaW9fZGVzYywgQVJSQVlfU0laRShtdjc4eHgwX2lvX2Rlc2MpKTsKLX0KLQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIENMSyB0cmVlCi0gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLXN0YXRpYyBzdHJ1Y3QgY2xrICp0Y2xrOwotCi1zdGF0aWMgdm9pZCBfX2luaXQgY2xrX2lu aXQodm9pZCkKLXsKLQl0Y2xrID0gY2xrX3JlZ2lzdGVyX2ZpeGVkX3JhdGUoTlVMTCwgInRjbGsi LCBOVUxMLCAwLCBnZXRfdGNsaygpKTsKLQotCW9yaW9uX2Nsa2Rldl9pbml0KHRjbGspOwotfQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVIQ0kKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot dm9pZCBfX2luaXQgbXY3OHh4MF9laGNpMF9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fZWhjaV9pbml0 KFVTQjBfUEhZU19CQVNFLCBJUlFfTVY3OFhYMF9VU0JfMCwgRUhDSV9QSFlfTkEpOwotfQotCi0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotICogRUhDSTEKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot dm9pZCBfX2luaXQgbXY3OHh4MF9laGNpMV9pbml0KHZvaWQpCi17Ci0Jb3Jpb25fZWhjaV8xX2lu aXQoVVNCMV9QSFlTX0JBU0UsIElSUV9NVjc4WFgwX1VTQl8xKTsKLX0KLQotCi0vKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKLSAqIEVIQ0kyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0 IG12Nzh4eDBfZWhjaTJfaW5pdCh2b2lkKQotewotCW9yaW9uX2VoY2lfMl9pbml0KFVTQjJfUEhZ U19CQVNFLCBJUlFfTVY3OFhYMF9VU0JfMik7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBHRTAwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBfZ2Uw MF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpldGhfZGF0YSkKLXsKLQlv cmlvbl9nZTAwX2luaXQoZXRoX2RhdGEsCi0JCQlHRTAwX1BIWVNfQkFTRSwgSVJRX01WNzhYWDBf R0UwMF9TVU0sCi0JCQlJUlFfTVY3OFhYMF9HRV9FUlIsCi0JCQlNVjY0M1hYX1RYX0NTVU1fREVG QVVMVF9MSU1JVCk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHRTAxCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBfZ2UwMV9pbml0KHN0cnVjdCBt djY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpldGhfZGF0YSkKLXsKLQlvcmlvbl9nZTAxX2luaXQo ZXRoX2RhdGEsCi0JCQlHRTAxX1BIWVNfQkFTRSwgSVJRX01WNzhYWDBfR0UwMV9TVU0sCi0JCQlN VjY0M1hYX1RYX0NTVU1fREVGQVVMVF9MSU1JVCk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBHRTEwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBf Z2UxMF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpldGhfZGF0YSkKLXsK LQl1MzIgZGV2LCByZXY7Ci0KLQkvKgotCSAqIE9uIHRoZSBaMCwgZ2UxMCBhbmQgZ2UxMSBhcmUg aW50ZXJuYWxseSBjb25uZWN0ZWQgYmFjawotCSAqIHRvIGJhY2ssIGFuZCBub3QgYnJvdWdodCBv dXQuCi0JICovCi0JbXY3OHh4MF9wY2llX2lkKCZkZXYsICZyZXYpOwotCWlmIChkZXYgPT0gTVY3 OFgwMF9aMF9ERVZfSUQpIHsKLQkJZXRoX2RhdGEtPnBoeV9hZGRyID0gTVY2NDNYWF9FVEhfUEhZ X05PTkU7Ci0JCWV0aF9kYXRhLT5zcGVlZCA9IFNQRUVEXzEwMDA7Ci0JCWV0aF9kYXRhLT5kdXBs ZXggPSBEVVBMRVhfRlVMTDsKLQl9Ci0KLQlvcmlvbl9nZTEwX2luaXQoZXRoX2RhdGEsIEdFMTBf UEhZU19CQVNFLCBJUlFfTVY3OFhYMF9HRTEwX1NVTSk7Ci19Ci0KLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0gKiBHRTExCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4 eDBfZ2UxMV9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhICpldGhfZGF0YSkK LXsKLQl1MzIgZGV2LCByZXY7Ci0KLQkvKgotCSAqIE9uIHRoZSBaMCwgZ2UxMCBhbmQgZ2UxMSBh cmUgaW50ZXJuYWxseSBjb25uZWN0ZWQgYmFjawotCSAqIHRvIGJhY2ssIGFuZCBub3QgYnJvdWdo dCBvdXQuCi0JICovCi0JbXY3OHh4MF9wY2llX2lkKCZkZXYsICZyZXYpOwotCWlmIChkZXYgPT0g TVY3OFgwMF9aMF9ERVZfSUQpIHsKLQkJZXRoX2RhdGEtPnBoeV9hZGRyID0gTVY2NDNYWF9FVEhf UEhZX05PTkU7Ci0JCWV0aF9kYXRhLT5zcGVlZCA9IFNQRUVEXzEwMDA7Ci0JCWV0aF9kYXRhLT5k dXBsZXggPSBEVVBMRVhfRlVMTDsKLQl9Ci0KLQlvcmlvbl9nZTExX2luaXQoZXRoX2RhdGEsIEdF MTFfUEhZU19CQVNFLCBJUlFfTVY3OFhYMF9HRTExX1NVTSk7Ci19Ci0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotICogSTJDCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4 eDBfaTJjX2luaXQodm9pZCkKLXsKLQlvcmlvbl9pMmNfaW5pdChJMkNfMF9QSFlTX0JBU0UsIElS UV9NVjc4WFgwX0kyQ18wLCA4KTsKLQlvcmlvbl9pMmNfMV9pbml0KEkyQ18xX1BIWVNfQkFTRSwg SVJRX01WNzhYWDBfSTJDXzEsIDgpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNB VEEKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgbXY3OHh4MF9zYXRhX2luaXQo c3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSAqc2F0YV9kYXRhKQotewotCW9yaW9uX3NhdGFf aW5pdChzYXRhX2RhdGEsIFNBVEFfUEhZU19CQVNFLCBJUlFfTVY3OFhYMF9TQVRBKTsKLX0KLQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIFVBUlQwCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LXZvaWQgX19pbml0IG12Nzh4eDBfdWFydDBfaW5pdCh2b2lkKQotewotCW9yaW9uX3VhcnQwX2lu aXQoVUFSVDBfVklSVF9CQVNFLCBVQVJUMF9QSFlTX0JBU0UsCi0JCQkgSVJRX01WNzhYWDBfVUFS VF8wLCB0Y2xrKTsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFVBUlQxCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBfdWFydDFfaW5pdCh2b2lkKQot ewotCW9yaW9uX3VhcnQxX2luaXQoVUFSVDFfVklSVF9CQVNFLCBVQVJUMV9QSFlTX0JBU0UsCi0J CQkgSVJRX01WNzhYWDBfVUFSVF8xLCB0Y2xrKTsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKLSAqIFVBUlQyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG12Nzh4eDBf dWFydDJfaW5pdCh2b2lkKQotewotCW9yaW9uX3VhcnQyX2luaXQoVUFSVDJfVklSVF9CQVNFLCBV QVJUMl9QSFlTX0JBU0UsCi0JCQkgSVJRX01WNzhYWDBfVUFSVF8yLCB0Y2xrKTsKLX0KLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0gKiBVQVJUMwotICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lk IF9faW5pdCBtdjc4eHgwX3VhcnQzX2luaXQodm9pZCkKLXsKLQlvcmlvbl91YXJ0M19pbml0KFVB UlQzX1ZJUlRfQkFTRSwgVUFSVDNfUEhZU19CQVNFLAotCQkJIElSUV9NVjc4WFgwX1VBUlRfMywg dGNsayk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVGltZSBoYW5kbGluZwotICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBtdjc4eHgwX2luaXRfZWFybHkodm9pZCkK LXsKLQlvcmlvbl90aW1lX3NldF9iYXNlKFRJTUVSX1ZJUlRfQkFTRSk7Ci0JaWYgKG12Nzh4eDBf Y29yZV9pbmRleCgpID09IDApCi0JCW12ZWJ1X21idXNfaW5pdCgibWFydmVsbCxtdjc4eHgwLW1i dXMiLAotCQkJCUJSSURHRV9XSU5TX0NQVTBfQkFTRSwgQlJJREdFX1dJTlNfU1osCi0JCQkJRERS X1dJTkRPV19DUFUwX0JBU0UsIEREUl9XSU5ET1dfQ1BVX1NaKTsKLQllbHNlCi0JCW12ZWJ1X21i dXNfaW5pdCgibWFydmVsbCxtdjc4eHgwLW1idXMiLAotCQkJCUJSSURHRV9XSU5TX0NQVTFfQkFT RSwgQlJJREdFX1dJTlNfU1osCi0JCQkJRERSX1dJTkRPV19DUFUxX0JBU0UsIEREUl9XSU5ET1df Q1BVX1NaKTsKLX0KLQotdm9pZCBfX3JlZiBtdjc4eHgwX3RpbWVyX2luaXQodm9pZCkKLXsKLQlv cmlvbl90aW1lX2luaXQoQlJJREdFX1ZJUlRfQkFTRSwgQlJJREdFX0lOVF9USU1FUjFfQ0xSLAot CQkJSVJRX01WNzhYWDBfVElNRVJfMSwgZ2V0X3RjbGsoKSk7Ci19Ci0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0qIFhPUiBlbmdpbmUKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBt djc4eHgwX3hvcl9pbml0KHZvaWQpCi17Ci0Jb3Jpb25feG9yMF9pbml0KFhPUl9QSFlTX0JBU0Us Ci0JCVhPUl9QSFlTX0JBU0UgKyAweDIwMCwKLQkJSVJRX01WNzhYWDBfWE9SXzAsIElSUV9NVjc4 WFgwX1hPUl8xKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENyeXB0b2dyYXBoaWMg RW5naW5lcyBhbmQgU2VjdXJpdHkgQWNjZWxlcmF0b3IgKENFU0EpCi0qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotdm9pZCBfX2luaXQgbXY3OHh4MF9jcnlwdG9faW5pdCh2b2lkKQotewotCW12ZWJ1X21i dXNfYWRkX3dpbmRvd19ieV9pZChNVjc4WFgwX01CVVNfU1JBTV9UQVJHRVQsCi0JCQkJTVY3OFhY MF9NQlVTX1NSQU1fQVRUUiwKLQkJCQlNVjc4WFgwX1NSQU1fUEhZU19CQVNFLAotCQkJTVY3OFhY MF9TUkFNX1NJWkUpOwotCW9yaW9uX2NyeXB0b19pbml0KENSWVBUT19QSFlTX0JBU0UsIE1WNzhY WDBfU1JBTV9QSFlTX0JBU0UsCi0JCVNaXzhLLCBJUlFfTVY3OFhYMF9DUllQVE8pOwotfQotCi0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotICogR2VuZXJhbAotICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci1zdGF0aWMgY2hhciAqIF9faW5pdCBtdjc4eHgwX2lkKHZvaWQpCi17Ci0JdTMyIGRldiwgcmV2 OwotCi0JbXY3OHh4MF9wY2llX2lkKCZkZXYsICZyZXYpOwotCi0JaWYgKGRldiA9PSBNVjc4WDAw X1owX0RFVl9JRCkgewotCQlpZiAocmV2ID09IE1WNzhYMDBfUkVWX1owKQotCQkJcmV0dXJuICJN Vjc4WDAwLVowIjsKLQkJZWxzZQotCQkJcmV0dXJuICJNVjc4WDAwLVJldi1VbnN1cHBvcnRlZCI7 Ci0JfSBlbHNlIGlmIChkZXYgPT0gTVY3ODEwMF9ERVZfSUQpIHsKLQkJaWYgKHJldiA9PSBNVjc4 MTAwX1JFVl9BMCkKLQkJCXJldHVybiAiTVY3ODEwMC1BMCI7Ci0JCWVsc2UgaWYgKHJldiA9PSBN Vjc4MTAwX1JFVl9BMSkKLQkJCXJldHVybiAiTVY3ODEwMC1BMSI7Ci0JCWVsc2UKLQkJCXJldHVy biAiTVY3ODEwMC1SZXYtVW5zdXBwb3J0ZWQiOwotCX0gZWxzZSBpZiAoZGV2ID09IE1WNzgyMDBf REVWX0lEKSB7Ci0JCWlmIChyZXYgPT0gTVY3ODEwMF9SRVZfQTApCi0JCQlyZXR1cm4gIk1WNzgy MDAtQTAiOwotCQllbHNlCi0JCQlyZXR1cm4gIk1WNzgyMDAtUmV2LVVuc3VwcG9ydGVkIjsKLQl9 IGVsc2UgewotCQlyZXR1cm4gIkRldmljZS1Vbmtub3duIjsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQg X19pbml0IGlzX2wyX3dyaXRldGhyb3VnaCh2b2lkKQotewotCXJldHVybiAhIShyZWFkbChDUFVf Q09OVFJPTCkgJiBMMl9XUklURVRIUk9VR0gpOwotfQotCi12b2lkIF9faW5pdCBtdjc4eHgwX2lu aXQodm9pZCkKLXsKLQlpbnQgY29yZV9pbmRleDsKLQlpbnQgaGNsazsKLQlpbnQgcGNsazsKLQlp bnQgbDJjbGs7Ci0KLQljb3JlX2luZGV4ID0gbXY3OHh4MF9jb3JlX2luZGV4KCk7Ci0JaGNsayA9 IGdldF9oY2xrKCk7Ci0JZ2V0X3BjbGtfbDJjbGsoaGNsaywgY29yZV9pbmRleCwgJnBjbGssICZs MmNsayk7Ci0KLQlwcmludGsoS0VSTl9JTkZPICIlcyAiLCBtdjc4eHgwX2lkKCkpOwotCXByaW50 aygiY29yZSAjJWQsICIsIGNvcmVfaW5kZXgpOwotCXByaW50aygiUENMSyA9ICVkTUh6LCAiLCAo cGNsayArIDQ5OTk5OSkgLyAxMDAwMDAwKTsKLQlwcmludGsoIkwyID0gJWRNSHosICIsIChsMmNs ayArIDQ5OTk5OSkgLyAxMDAwMDAwKTsKLQlwcmludGsoIkhDTEsgPSAlZE1IeiwgIiwgKGhjbGsg KyA0OTk5OTkpIC8gMTAwMDAwMCk7Ci0JcHJpbnRrKCJUQ0xLID0gJWRNSHpcbiIsIChnZXRfdGNs aygpICsgNDk5OTk5KSAvIDEwMDAwMDApOwotCi0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0NBQ0hF X0ZFUk9DRU9OX0wyKSkKLQkJZmVyb2Nlb25fbDJfaW5pdChpc19sMl93cml0ZXRocm91Z2goKSk7 Ci0KLQkvKiBTZXR1cCByb290IG9mIGNsayB0cmVlICovCi0JY2xrX2luaXQoKTsKLX0KLQotdm9p ZCBtdjc4eHgwX3Jlc3RhcnQoZW51bSByZWJvb3RfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpjbWQp Ci17Ci0JLyoKLQkgKiBFbmFibGUgc29mdCByZXNldCB0byBhc3NlcnQgUlNUT1VUbi4KLQkgKi8K LQl3cml0ZWwoU09GVF9SRVNFVF9PVVRfRU4sIFJTVE9VVG5fTUFTSyk7Ci0KLQkvKgotCSAqIEFz c2VydCBzb2Z0IHJlc2V0LgotCSAqLwotCXdyaXRlbChTT0ZUX1JFU0VULCBTWVNURU1fU09GVF9S RVNFVCk7Ci0KLQl3aGlsZSAoMSkKLQkJOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1t djc4eHgwL2NvbW1vbi5oIGIvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL2NvbW1vbi5oCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjFkZmQ1OTUwMDMuLjAwMDAwMDAwMDAwMAotLS0gYS9h cmNoL2FybS9tYWNoLW12Nzh4eDAvY29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww IEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCi0vKgotICog YXJjaC9hcm0vbWFjaC1tdjc4eHgwL2NvbW1vbi5oCi0gKgotICogQ29yZSBmdW5jdGlvbnMgZm9y IE1hcnZlbGwgTVY3OHh4MCBTb0NzCi0gKi8KLQotI2lmbmRlZiBfX0FSQ0hfTVY3OFhYMF9DT01N T05fSAotI2RlZmluZSBfX0FSQ0hfTVY3OFhYMF9DT01NT05fSAotCi0jaW5jbHVkZSA8bGludXgv cmVib290Lmg+Ci0KLXN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0Zm9ybV9kYXRhOwotc3RydWN0IG12 X3NhdGFfcGxhdGZvcm1fZGF0YTsKLQotLyoKLSAqIEJhc2ljIE1WNzh4eDAgaW5pdCBmdW5jdGlv bnMgdXNlZCBlYXJseSBieSBtYWNoaW5lLXNldHVwLgotICovCi1pbnQgbXY3OHh4MF9jb3JlX2lu ZGV4KHZvaWQpOwotdm9pZCBtdjc4eHgwX21hcF9pbyh2b2lkKTsKLXZvaWQgbXY3OHh4MF9pbml0 KHZvaWQpOwotdm9pZCBtdjc4eHgwX2luaXRfZWFybHkodm9pZCk7Ci12b2lkIG12Nzh4eDBfaW5p dF9pcnEodm9pZCk7Ci0KLXZvaWQgbXY3OHh4MF9zZXR1cF9jcHVfbWJ1cyh2b2lkKTsKLXZvaWQg bXY3OHh4MF9zZXR1cF9wY2llX2lvX3dpbihpbnQgd2luZG93LCB1MzIgYmFzZSwgdTMyIHNpemUs Ci0JCQkgICAgICAgaW50IG1haiwgaW50IG1pbik7Ci12b2lkIG12Nzh4eDBfc2V0dXBfcGNpZV9t ZW1fd2luKGludCB3aW5kb3csIHUzMiBiYXNlLCB1MzIgc2l6ZSwKLQkJCQlpbnQgbWFqLCBpbnQg bWluKTsKLQotdm9pZCBtdjc4eHgwX3BjaWVfaWQodTMyICpkZXYsIHUzMiAqcmV2KTsKLQotdm9p ZCBtdjc4eHgwX2VoY2kwX2luaXQodm9pZCk7Ci12b2lkIG12Nzh4eDBfZWhjaTFfaW5pdCh2b2lk KTsKLXZvaWQgbXY3OHh4MF9laGNpMl9pbml0KHZvaWQpOwotdm9pZCBtdjc4eHgwX2dlMDBfaW5p dChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpOwotdm9pZCBtdjc4 eHgwX2dlMDFfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEp Owotdm9pZCBtdjc4eHgwX2dlMTBfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0 YSAqZXRoX2RhdGEpOwotdm9pZCBtdjc4eHgwX2dlMTFfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhf cGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEpOwotdm9pZCBtdjc4eHgwX3BjaWVfaW5pdChpbnQgaW5p dF9wb3J0MCwgaW50IGluaXRfcG9ydDEpOwotdm9pZCBtdjc4eHgwX3NhdGFfaW5pdChzdHJ1Y3Qg bXZfc2F0YV9wbGF0Zm9ybV9kYXRhICpzYXRhX2RhdGEpOwotdm9pZCBtdjc4eHgwX3VhcnQwX2lu aXQodm9pZCk7Ci12b2lkIG12Nzh4eDBfdWFydDFfaW5pdCh2b2lkKTsKLXZvaWQgbXY3OHh4MF91 YXJ0Ml9pbml0KHZvaWQpOwotdm9pZCBtdjc4eHgwX3VhcnQzX2luaXQodm9pZCk7Ci12b2lkIG12 Nzh4eDBfeG9yX2luaXQodm9pZCk7Ci12b2lkIG12Nzh4eDBfY3J5cHRvX2luaXQodm9pZCk7Ci12 b2lkIG12Nzh4eDBfaTJjX2luaXQodm9pZCk7Ci12b2lkIG12Nzh4eDBfcmVzdGFydChlbnVtIHJl Ym9vdF9tb2RlLCBjb25zdCBjaGFyICopOwotCi1leHRlcm4gdm9pZCBtdjc4eHgwX3RpbWVyX2lu aXQodm9pZCk7Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAv aXJxLmMgYi9hcmNoL2FybS9tYWNoLW12Nzh4eDAvaXJxLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDZlNDJmNjQ0NjYzNy4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gt bXY3OHh4MC9pcnEuYworKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLW12Nzh4 eDAvaXJxLmMKLSAqCi0gKiBNVjc4eHgwIElSUSBoYW5kbGluZy4KLSAqLwotI2luY2x1ZGUgPGxp bnV4L2dwaW8vY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRl IDxsaW51eC9pcnEuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGFzbS9leGNl cHRpb24uaD4KLSNpbmNsdWRlIDxwbGF0L29yaW9uLWdwaW8uaD4KLSNpbmNsdWRlIDxwbGF0L2ly cS5oPgotI2luY2x1ZGUgImJyaWRnZS1yZWdzLmgiCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0KLXN0 YXRpYyBpbnQgX19pbml0ZGF0YSBncGlvMF9pcnFzWzRdID0gewotCUlSUV9NVjc4WFgwX0dQSU9f MF83LAotCUlSUV9NVjc4WFgwX0dQSU9fOF8xNSwKLQlJUlFfTVY3OFhYMF9HUElPXzE2XzIzLAot CUlSUV9NVjc4WFgwX0dQSU9fMjRfMzEsCi19OwotCi1zdGF0aWMgdm9pZCBfX2lvbWVtICptdjc4 eHgwX2lycV9iYXNlID0gSVJRX1ZJUlRfQkFTRTsKLQotc3RhdGljIGFzbWxpbmthZ2Ugdm9pZAot X19leGNlcHRpb25faXJxX2VudHJ5IG12Nzh4eDBfbGVnYWN5X2hhbmRsZV9pcnEoc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpCi17Ci0JdTMyIHN0YXQ7Ci0KLQlzdGF0ID0gcmVhZGxfcmVsYXhlZChtdjc4 eHgwX2lycV9iYXNlICsgSVJRX0NBVVNFX0xPV19PRkYpOwotCXN0YXQgJj0gcmVhZGxfcmVsYXhl ZChtdjc4eHgwX2lycV9iYXNlICsgSVJRX01BU0tfTE9XX09GRik7Ci0JaWYgKHN0YXQpIHsKLQkJ dW5zaWduZWQgaW50IGh3aXJxID0gX19mbHMoc3RhdCk7Ci0JCWhhbmRsZV9JUlEoaHdpcnEsIHJl Z3MpOwotCQlyZXR1cm47Ci0JfQotCXN0YXQgPSByZWFkbF9yZWxheGVkKG12Nzh4eDBfaXJxX2Jh c2UgKyBJUlFfQ0FVU0VfSElHSF9PRkYpOwotCXN0YXQgJj0gcmVhZGxfcmVsYXhlZChtdjc4eHgw X2lycV9iYXNlICsgSVJRX01BU0tfSElHSF9PRkYpOwotCWlmIChzdGF0KSB7Ci0JCXVuc2lnbmVk IGludCBod2lycSA9IDMyICsgX19mbHMoc3RhdCk7Ci0JCWhhbmRsZV9JUlEoaHdpcnEsIHJlZ3Mp OwotCQlyZXR1cm47Ci0JfQotCXN0YXQgPSByZWFkbF9yZWxheGVkKG12Nzh4eDBfaXJxX2Jhc2Ug KyBJUlFfQ0FVU0VfRVJSX09GRik7Ci0Jc3RhdCAmPSByZWFkbF9yZWxheGVkKG12Nzh4eDBfaXJx X2Jhc2UgKyBJUlFfTUFTS19FUlJfT0ZGKTsKLQlpZiAoc3RhdCkgewotCQl1bnNpZ25lZCBpbnQg aHdpcnEgPSA2NCArIF9fZmxzKHN0YXQpOwotCQloYW5kbGVfSVJRKGh3aXJxLCByZWdzKTsKLQkJ cmV0dXJuOwotCX0KLX0KLQotdm9pZCBfX2luaXQgbXY3OHh4MF9pbml0X2lycSh2b2lkKQotewot CW9yaW9uX2lycV9pbml0KDAsIElSUV9WSVJUX0JBU0UgKyBJUlFfTUFTS19MT1dfT0ZGKTsKLQlv cmlvbl9pcnFfaW5pdCgzMiwgSVJRX1ZJUlRfQkFTRSArIElSUV9NQVNLX0hJR0hfT0ZGKTsKLQlv cmlvbl9pcnFfaW5pdCg2NCwgSVJRX1ZJUlRfQkFTRSArIElSUV9NQVNLX0VSUl9PRkYpOwotCi0J c2V0X2hhbmRsZV9pcnEobXY3OHh4MF9sZWdhY3lfaGFuZGxlX2lycSk7Ci0KLQkvKgotCSAqIElu aXRpYWxpemUgZ3Bpb2xpYiBmb3IgR1BJT3MgMC0zMS4gIChUaGUgR1BJTyBpbnRlcnJ1cHQgbWFz awotCSAqIHJlZ2lzdGVycyBmb3IgY29yZSAjMSBhcmUgYXQgYW4gb2Zmc2V0IG9mIDB4MTggZnJv bSB0aG9zZSBvZgotCSAqIGNvcmUgIzAuKQotCSAqLwotCW9yaW9uX2dwaW9faW5pdCgwLCAzMiwg R1BJT19WSVJUX0JBU0UsIG12Nzh4eDBfY29yZV9pbmRleCgpID8gMHgxOCA6IDAsCi0JCQlJUlFf TVY3OFhYMF9HUElPX1NUQVJULCBncGlvMF9pcnFzKTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJt L21hY2gtbXY3OHh4MC9pcnFzLmggYi9hcmNoL2FybS9tYWNoLW12Nzh4eDAvaXJxcy5oCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmIzNTdkMzgzZDguLjAwMDAwMDAwMDAwMAotLS0g YS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvaXJxcy5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAs MCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwotLyogSVJR IGRlZmluaXRpb25zIGZvciBNYXJ2ZWxsIE1WNzh4eDAgU29DcyAqLwotCi0jaWZuZGVmIF9fQVNN X0FSQ0hfSVJRU19ICi0jZGVmaW5lIF9fQVNNX0FSQ0hfSVJRU19ICi0KLS8qCi0gKiBNVjc4eHgw IExvdyBJbnRlcnJ1cHQgQ29udHJvbGxlcgotICovCi0jZGVmaW5lIElSUV9NVjc4WFgwX0VSUgkJ MAotI2RlZmluZSBJUlFfTVY3OFhYMF9TUEkJCTEKLSNkZWZpbmUgSVJRX01WNzhYWDBfSTJDXzAJ MgotI2RlZmluZSBJUlFfTVY3OFhYMF9JMkNfMQkzCi0jZGVmaW5lIElSUV9NVjc4WFgwX0lETUFf MAk0Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0lETUFfMQk1Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0lE TUFfMgk2Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0lETUFfMwk3Ci0jZGVmaW5lIElSUV9NVjc4WFgw X1RJTUVSXzAJOAotI2RlZmluZSBJUlFfTVY3OFhYMF9USU1FUl8xCTkKLSNkZWZpbmUgSVJRX01W NzhYWDBfVElNRVJfMgkxMAotI2RlZmluZSBJUlFfTVY3OFhYMF9USU1FUl8zCTExCi0jZGVmaW5l IElSUV9NVjc4WFgwX1VBUlRfMAkxMgotI2RlZmluZSBJUlFfTVY3OFhYMF9VQVJUXzEJMTMKLSNk ZWZpbmUgSVJRX01WNzhYWDBfVUFSVF8yCTE0Ci0jZGVmaW5lIElSUV9NVjc4WFgwX1VBUlRfMwkx NQotI2RlZmluZSBJUlFfTVY3OFhYMF9VU0JfMAkxNgotI2RlZmluZSBJUlFfTVY3OFhYMF9VU0Jf MQkxNwotI2RlZmluZSBJUlFfTVY3OFhYMF9VU0JfMgkxOAotI2RlZmluZSBJUlFfTVY3OFhYMF9D UllQVE8JMTkKLSNkZWZpbmUgSVJRX01WNzhYWDBfU0RJT18wCTIwCi0jZGVmaW5lIElSUV9NVjc4 WFgwX1NESU9fMQkyMQotI2RlZmluZSBJUlFfTVY3OFhYMF9YT1JfMAkyMgotI2RlZmluZSBJUlFf TVY3OFhYMF9YT1JfMQkyMwotI2RlZmluZSBJUlFfTVY3OFhYMF9JMlNfMAkyNAotI2RlZmluZSBJ UlFfTVY3OFhYMF9JMlNfMQkyNQotI2RlZmluZSBJUlFfTVY3OFhYMF9TQVRBCTI2Ci0jZGVmaW5l IElSUV9NVjc4WFgwX1RETUkJMjcKLQotLyoKLSAqIE1WNzh4eDAgSGlnaCBJbnRlcnJ1cHQgQ29u dHJvbGxlcgotICovCi0jZGVmaW5lIElSUV9NVjc4WFgwX1BDSUVfMDAJMzIKLSNkZWZpbmUgSVJR X01WNzhYWDBfUENJRV8wMQkzMwotI2RlZmluZSBJUlFfTVY3OFhYMF9QQ0lFXzAyCTM0Ci0jZGVm aW5lIElSUV9NVjc4WFgwX1BDSUVfMDMJMzUKLSNkZWZpbmUgSVJRX01WNzhYWDBfUENJRV8xMAkz NgotI2RlZmluZSBJUlFfTVY3OFhYMF9QQ0lFXzExCTM3Ci0jZGVmaW5lIElSUV9NVjc4WFgwX1BD SUVfMTIJMzgKLSNkZWZpbmUgSVJRX01WNzhYWDBfUENJRV8xMwkzOQotI2RlZmluZSBJUlFfTVY3 OFhYMF9HRTAwX1NVTQk0MAotI2RlZmluZSBJUlFfTVY3OFhYMF9HRTAwX1JYCTQxCi0jZGVmaW5l IElSUV9NVjc4WFgwX0dFMDBfVFgJNDIKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UwMF9NSVNDCTQz Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dFMDFfU1VNCTQ0Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dF MDFfUlgJNDUKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UwMV9UWAk0NgotI2RlZmluZSBJUlFfTVY3 OFhYMF9HRTAxX01JU0MJNDcKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UxMF9TVU0JNDgKLSNkZWZp bmUgSVJRX01WNzhYWDBfR0UxMF9SWAk0OQotI2RlZmluZSBJUlFfTVY3OFhYMF9HRTEwX1RYCTUw Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dFMTBfTUlTQwk1MQotI2RlZmluZSBJUlFfTVY3OFhYMF9H RTExX1NVTQk1MgotI2RlZmluZSBJUlFfTVY3OFhYMF9HRTExX1JYCTUzCi0jZGVmaW5lIElSUV9N Vjc4WFgwX0dFMTFfVFgJNTQKLSNkZWZpbmUgSVJRX01WNzhYWDBfR0UxMV9NSVNDCTU1Ci0jZGVm aW5lIElSUV9NVjc4WFgwX0dQSU9fMF83CTU2Ci0jZGVmaW5lIElSUV9NVjc4WFgwX0dQSU9fOF8x NQk1NwotI2RlZmluZSBJUlFfTVY3OFhYMF9HUElPXzE2XzIzCTU4Ci0jZGVmaW5lIElSUV9NVjc4 WFgwX0dQSU9fMjRfMzEJNTkKLSNkZWZpbmUgSVJRX01WNzhYWDBfREJfSU4JNjAKLSNkZWZpbmUg SVJRX01WNzhYWDBfREJfT1VUCTYxCi0KLS8qCi0gKiBNVjc4eHgwIEVycm9yIEludGVycnVwdCBD b250cm9sbGVyCi0gKi8KLSNkZWZpbmUgSVJRX01WNzhYWDBfR0VfRVJSCTcwCi0KLS8qCi0gKiBN Vjc4WFgwIEdlbmVyYWwgUHVycG9zZSBQaW5zCi0gKi8KLSNkZWZpbmUgSVJRX01WNzhYWDBfR1BJ T19TVEFSVAk5NgotI2RlZmluZSBOUl9HUElPX0lSUVMJCTMyCi0KLSNkZWZpbmUgTVY3OFhYMF9O Ul9JUlFTCQkoSVJRX01WNzhYWDBfR1BJT19TVEFSVCArIE5SX0dQSU9fSVJRUykKLQotCi0jZW5k aWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9tcHAuYyBiL2FyY2gvYXJtL21h Y2gtbXY3OHh4MC9tcHAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJiZjU5MGQ3 OWZlLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5jCisrKyAv ZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seQotLyoKLSAqIGFyY2gvYXJtL21hY2gtbXY3OHgwMC9tcHAuYwotICoKLSAqIE1Q UCBmdW5jdGlvbnMgZm9yIE1hcnZlbGwgTVY3OHgwMCBTb0NzCi0gKi8KLSNpbmNsdWRlIDxsaW51 eC9ncGlvL2NvbnN1bWVyLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8 bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L2lvLmg+Ci0jaW5jbHVkZSA8cGxhdC9tcHAu aD4KLSNpbmNsdWRlICJtdjc4eHgwLmgiCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0jaW5jbHVkZSAi bXBwLmgiCi0KLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0IG12Nzh4eDBfdmFyaWFudCh2b2lk KQotewotCXUzMiBkZXYsIHJldjsKLQotCW12Nzh4eDBfcGNpZV9pZCgmZGV2LCAmcmV2KTsKLQot CWlmIChkZXYgPT0gTVY3ODEwMF9ERVZfSUQgJiYgcmV2ID49IE1WNzgxMDBfUkVWX0EwKQotCQly ZXR1cm4gTVBQXzc4MTAwX0EwX01BU0s7Ci0KLQlwcmludGsoS0VSTl9FUlIgIk1QUCBzZXR1cDog dW5rbm93biBtdjc4eDAwIHZhcmlhbnQgIgotCQkJIihkZXYgJSN4IHJldiAlI3gpXG4iLCBkZXYs IHJldik7Ci0JcmV0dXJuIDA7Ci19Ci0KLXZvaWQgX19pbml0IG12Nzh4eDBfbXBwX2NvbmYodW5z aWduZWQgaW50ICptcHBfbGlzdCkKLXsKLQlvcmlvbl9tcHBfY29uZihtcHBfbGlzdCwgbXY3OHh4 MF92YXJpYW50KCksCi0JCSAgICAgICBNUFBfTUFYLCBERVZfQlVTX1ZJUlRfQkFTRSk7Ci19CmRp ZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvbXBwLmggYi9hcmNoL2FybS9tYWNoLW12 Nzh4eDAvbXBwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZGI1MmY0NTU0Ni4u MDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9tcHAuaAorKysgL2Rldi9u dWxsCkBAIC0xLDMzNyArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MC1vbmx5ICovCi0vKgotICogbGludXgvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL21wcC5oIC0tIE11 bHRpIFB1cnBvc2UgUGlucwotICoKLSAqIHNlYmFzdGllbiByZXF1aWVtIDxzZWJhc3RpZW5AcmVx dWllbS5mcj4KLSAqLwotCi0jaWZuZGVmIF9fTVY3OFgwMF9NUFBfSAotI2RlZmluZSBfX01WNzhY MDBfTVBQX0gKLQotI2RlZmluZSBNUFAoX251bSwgX3NlbCwgX2luLCBfb3V0LCBfNzgxMDBfQTAp IChcCi0gICAgLyogTVBQIG51bWJlciAqLyAgICAgICAgKChfbnVtKSAmIDB4ZmYpIHwgXAotICAg IC8qIE1QUCBzZWxlY3QgdmFsdWUgKi8gICAgICAgICgoKF9zZWwpICYgMHhmKSA8PCA4KSB8IFwK LSAgICAvKiBtYXkgYmUgaW5wdXQgc2lnbmFsICovICAgICgoISEoX2luKSkgPDwgMTIpIHwgXAot ICAgIC8qIG1heSBiZSBvdXRwdXQgc2lnbmFsICovICAgICgoISEoX291dCkpIDw8IDEzKSB8IFwK LSAgICAvKiBhdmFpbGFibGUgb24gQTAgKi8gICAgKCghIShfNzgxMDBfQTApKSA8PCAxNCkpCi0K LSAgICAgICAgICAgICAgICAvKiAgIG51bSBzZWwgIGkgIG8gIDc4MTAwX0EwICAqLwotCi0jZGVm aW5lIE1QUF83ODEwMF9BMF9NQVNLICAgIE1QUCgwLCAweDAsIDAsIDAsIDEpCi0KLSNkZWZpbmUg TVBQMF9HUElPICAgICAgICBNUFAoMCwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAwX0dFMF9D T0wgICAgICAgIE1QUCgwLCAweDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDBfR0UxX1RYQ0xLICAg ICAgICBNUFAoMCwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFAwX1VOVVNFRCAgICAgICAgTVBQ KDAsIDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAxX0dQSU8gICAgICAgIE1QUCgxLCAweDAs IDEsIDEsIDEpCi0jZGVmaW5lIE1QUDFfR0UwX1JYRVJSICAgICAgICBNUFAoMSwgMHgxLCAwLCAw LCAxKQotI2RlZmluZSBNUFAxX0dFMV9UWENUTCAgICAgICAgTVBQKDEsIDB4MiwgMCwgMCwgMSkK LSNkZWZpbmUgTVBQMV9VTlVTRUQgICAgICAgIE1QUCgxLCAweDMsIDAsIDAsIDEpCi0KLSNkZWZp bmUgTVBQMl9HUElPICAgICAgICBNUFAoMiwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAyX0dF MF9DUlMgICAgICAgIE1QUCgyLCAweDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDJfR0UxX1JYQ1RM ICAgICAgICBNUFAoMiwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFAyX1VOVVNFRCAgICAgICAg TVBQKDIsIDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAzX0dQSU8gICAgICAgIE1QUCgzLCAw eDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDNfR0UwX1RYRVJSICAgICAgICBNUFAoMywgMHgxLCAw LCAwLCAxKQotI2RlZmluZSBNUFAzX0dFMV9SWENMSyAgICAgICAgTVBQKDMsIDB4MiwgMCwgMCwg MSkKLSNkZWZpbmUgTVBQM19VTlVTRUQgICAgICAgIE1QUCgzLCAweDMsIDAsIDAsIDEpCi0KLSNk ZWZpbmUgTVBQNF9HUElPICAgICAgICBNUFAoNCwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFA0 X0dFMF9UWEQ0ICAgICAgICBNUFAoNCwgMHgxLCAwLCAwLCAxKQotI2RlZmluZSBNUFA0X0dFMV9U WEQwICAgICAgICBNUFAoNCwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFA0X1VOVVNFRCAgICAg ICAgTVBQKDQsIDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFA1X0dQSU8gICAgICAgIE1QUCg1 LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDVfR0UwX1RYRDUgICAgICAgIE1QUCg1LCAweDEs IDAsIDAsIDEpCi0jZGVmaW5lIE1QUDVfR0UxX1RYRDEgICAgICAgIE1QUCg1LCAweDIsIDAsIDAs IDEpCi0jZGVmaW5lIE1QUDVfVU5VU0VEICAgICAgICBNUFAoNSwgMHgzLCAwLCAwLCAxKQotCi0j ZGVmaW5lIE1QUDZfR1BJTyAgICAgICAgTVBQKDYsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQ Nl9HRTBfVFhENiAgICAgICAgTVBQKDYsIDB4MSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNl9HRTFf VFhEMiAgICAgICAgTVBQKDYsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNl9VTlVTRUQgICAg ICAgIE1QUCg2LCAweDMsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQN19HUElPICAgICAgICBNUFAo NywgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFA3X0dFMF9UWEQ3ICAgICAgICBNUFAoNywgMHgx LCAwLCAwLCAxKQotI2RlZmluZSBNUFA3X0dFMV9UWEQzICAgICAgICBNUFAoNywgMHgyLCAwLCAw LCAxKQotI2RlZmluZSBNUFA3X1VOVVNFRCAgICAgICAgTVBQKDcsIDB4MywgMCwgMCwgMSkKLQot I2RlZmluZSBNUFA4X0dQSU8gICAgICAgIE1QUCg4LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1Q UDhfR0UwX1JYRDQgICAgICAgIE1QUCg4LCAweDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDhfR0Ux X1JYRDAgICAgICAgIE1QUCg4LCAweDIsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDhfVU5VU0VEICAg ICAgICBNUFAoOCwgMHgzLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDlfR1BJTyAgICAgICAgTVBQ KDksIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQOV9HRTBfUlhENSAgICAgICAgTVBQKDksIDB4 MSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQOV9HRTFfUlhEMSAgICAgICAgTVBQKDksIDB4MiwgMCwg MCwgMSkKLSNkZWZpbmUgTVBQOV9VTlVTRUQgICAgICAgIE1QUCg5LCAweDMsIDAsIDAsIDEpCi0K LSNkZWZpbmUgTVBQMTBfR1BJTyAgICAgICAgTVBQKDEwLCAweDAsIDEsIDEsIDEpCi0jZGVmaW5l IE1QUDEwX0dFMF9SWEQ2ICAgICAgICBNUFAoMTAsIDB4MSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQ MTBfR0UxX1JYRDIgICAgICAgIE1QUCgxMCwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFAxMF9V TlVTRUQgICAgICAgIE1QUCgxMCwgMHgzLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDExX0dQSU8g ICAgICAgIE1QUCgxMSwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAxMV9HRTBfUlhENyAgICAg ICAgTVBQKDExLCAweDEsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDExX0dFMV9SWEQzICAgICAgICBN UFAoMTEsIDB4MiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTFfVU5VU0VEICAgICAgICBNUFAoMTEs IDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAxMl9HUElPICAgICAgICBNUFAoMTIsIDB4MCwg MSwgMSwgMSkKLSNkZWZpbmUgTVBQMTJfTV9CQiAgICAgICAgTVBQKDEyLCAweDMsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDEyX1VBMF9DVFNuICAgICAgICBNUFAoMTIsIDB4NCwgMCwgMCwgMSkKLSNk ZWZpbmUgTVBQMTJfTkFORF9GTEFTSF9SRW4wICAgIE1QUCgxMiwgMHg1LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAxMl9URE0wX1NDU24gICAgICAgIE1QUCgxMiwgMFg2LCAwLCAwLCAxKQotI2RlZmlu ZSBNUFAxMl9VTlVTRUQgICAgICAgIE1QUCgxMiwgMHgxLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1Q UDEzX0dQSU8gICAgICAgIE1QUCgxMywgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAxM19TWVNS U1RfT1VUbiAgICBNUFAoMTMsIDB4MywgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTNfVUEwX1JUU24g ICAgICAgIE1QUCgxMywgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxM19OQU5fRkxBU0hfV0Vu MCAgICBNUFAoMTMsIDB4NSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTNfVERNX1NDTEsgICAgICAg IE1QUCgxMywgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxM19VTlVTRUQgICAgICAgIE1QUCgx MywgMHgxLCAwLCAwLCAxKQotCi0jZGVmaW5lIE1QUDE0X0dQSU8gICAgICAgIE1QUCgxNCwgMHgw LCAxLCAxLCAxKQotI2RlZmluZSBNUFAxNF9TQVRBMV9BQ1RuICAgIE1QUCgxNCwgMHgzLCAwLCAw LCAxKQotI2RlZmluZSBNUFAxNF9VQTFfQ1RTbiAgICAgICAgTVBQKDE0LCAweDQsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDE0X05BTkRfRkxBU0hfUkVuMSAgICBNUFAoMTQsIDB4NSwgMCwgMCwgMSkK LSNkZWZpbmUgTVBQMTRfVERNX1NNT1NJICAgICAgICBNUFAoMTQsIDB4NiwgMCwgMCwgMSkKLSNk ZWZpbmUgTVBQMTRfVU5VU0VEICAgICAgICBNUFAoMTQsIDB4MSwgMCwgMCwgMSkKLQotI2RlZmlu ZSBNUFAxNV9HUElPICAgICAgICBNUFAoMTUsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMTVf U0FUQTBfQUNUbiAgICBNUFAoMTUsIDB4MywgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTVfVUExX1JU U24gICAgICAgIE1QUCgxNSwgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxNV9OQU5EX0ZMQVNI X1dFbjEgICAgTVBQKDE1LCAweDUsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE1X1RETV9TTUlTTyAg ICAgICAgTVBQKDE1LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE1X1VOVVNFRCAgICAgICAg TVBQKDE1LCAweDEsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQMTZfR1BJTyAgICAgICAgTVBQKDE2 LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDE2X1NBVEExX1BSRVNFTlRuICAgIE1QUCgxNiwg MHgzLCAwLCAwLCAxKQotI2RlZmluZSBNUFAxNl9VQTJfVFhEICAgICAgICBNUFAoMTYsIDB4NCwg MCwgMCwgMSkKLSNkZWZpbmUgTVBQMTZfTkFORF9GTEFTSF9SRW4zICAgIE1QUCgxNiwgMHg1LCAw LCAwLCAxKQotI2RlZmluZSBNUFAxNl9URE1fSU5UbiAgICAgICAgTVBQKDE2LCAweDYsIDAsIDAs IDEpCi0jZGVmaW5lIE1QUDE2X1VOVVNFRCAgICAgICAgTVBQKDE2LCAweDEsIDAsIDAsIDEpCi0K LQotI2RlZmluZSBNUFAxN19HUElPICAgICAgICBNUFAoMTcsIDB4MCwgMSwgMSwgMSkKLSNkZWZp bmUgTVBQMTdfU0FUQTBfUFJFU0VOVG4gICAgTVBQKDE3LCAweDMsIDAsIDAsIDEpCi0jZGVmaW5l IE1QUDE3X1VBMl9SWEQgICAgICAgIE1QUCgxNywgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAx N19OQU5EX0ZMQVNIX1dFbjMgICAgTVBQKDE3LCAweDUsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE3 X1RETV9SU1RuICAgICAgICBNUFAoMTcsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMTdfVU5V U0VEICAgICAgICBNUFAoMTcsIDB4MSwgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDE4X0dQSU8g ICAgICAgIE1QUCgxOCwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAxOF9VQTBfQ1RTbiAgICAg ICAgTVBQKDE4LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDE4X0JPT1RfRkxBU0hfUkVuICAg IE1QUCgxOCwgMHg1LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxOF9VTlVTRUQgICAgICAgIE1QUCgx OCwgMHgxLCAwLCAwLCAxKQotCi0KLQotI2RlZmluZSBNUFAxOV9HUElPICAgICAgICBNUFAoMTks IDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMTlfVUEwX0NUU24gICAgICAgIE1QUCgxOSwgMHg0 LCAwLCAwLCAxKQotI2RlZmluZSBNUFAxOV9CT09UX0ZMQVNIX1dFbiAgICBNUFAoMTksIDB4NSwg MCwgMCwgMSkKLSNkZWZpbmUgTVBQMTlfVU5VU0VEICAgICAgICBNUFAoMTksIDB4MSwgMCwgMCwg MSkKLQotCi0jZGVmaW5lIE1QUDIwX0dQSU8gICAgICAgIE1QUCgyMCwgMHgwLCAxLCAxLCAxKQot I2RlZmluZSBNUFAyMF9VQTFfQ1RTcyAgICAgICAgTVBQKDIwLCAweDQsIDAsIDAsIDEpCi0jZGVm aW5lIE1QUDIwX1RETV9QQ0xLICAgICAgICBNUFAoMjAsIDB4NiwgMCwgMCwgMCkKLSNkZWZpbmUg TVBQMjBfVU5VU0VEICAgICAgICBNUFAoMjAsIDB4MSwgMCwgMCwgMSkKLQotCi0KLSNkZWZpbmUg TVBQMjFfR1BJTyAgICAgICAgTVBQKDIxLCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDIxX1VB MV9DVFNzICAgICAgICBNUFAoMjEsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjFfVERNX0ZT WU5DICAgICAgICBNUFAoMjEsIDB4NiwgMCwgMCwgMCkKLSNkZWZpbmUgTVBQMjFfVU5VU0VEICAg ICAgICBNUFAoMjEsIDB4MSwgMCwgMCwgMSkKLQotCi0KLSNkZWZpbmUgTVBQMjJfR1BJTyAgICAg ICAgTVBQKDIyLCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDIyX1VBM19URFggICAgICAgIE1Q UCgyMiwgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAyMl9OQU5EX0ZMQVNIX1JFbjIgICAgTVBQ KDIyLCAweDUsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDIyX1RETV9EUlggICAgICAgIE1QUCgyMiwg MHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAyMl9VTlVTRUQgICAgICAgIE1QUCgyMiwgMHgxLCAw LCAwLCAxKQotCi0KLQotI2RlZmluZSBNUFAyM19HUElPICAgICAgICBNUFAoMjMsIDB4MCwgMSwg MSwgMSkKLSNkZWZpbmUgTVBQMjNfVUEzX1JEWCAgICAgICAgTVBQKDIzLCAweDQsIDAsIDAsIDEp Ci0jZGVmaW5lIE1QUDIzX05BTkRfRkxBU0hfV0VuMiAgICBNUFAoMjMsIDB4NSwgMCwgMCwgMSkK LSNkZWZpbmUgTVBQMjNfVERNX0RUWCAgICAgICAgTVBQKDIzLCAweDYsIDAsIDAsIDEpCi0jZGVm aW5lIE1QUDIzX1VOVVNFRCAgICAgICAgTVBQKDIzLCAweDEsIDAsIDAsIDEpCi0KLQotI2RlZmlu ZSBNUFAyNF9HUElPICAgICAgICBNUFAoMjQsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMjRf VUEyX1RYRCAgICAgICAgTVBQKDI0LCAweDQsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI0X1RETV9J TlRuICAgICAgICBNUFAoMjQsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjRfVU5VU0VEICAg ICAgICBNUFAoMjQsIDB4MSwgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDI1X0dQSU8gICAgICAg IE1QUCgyNSwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAyNV9VQTJfUlhEICAgICAgICBNUFAo MjUsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjVfVERNX1JTVG4gICAgICAgIE1QUCgyNSwg MHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAyNV9VTlVTRUQgICAgICAgIE1QUCgyNSwgMHgxLCAw LCAwLCAxKQotCi0KLSNkZWZpbmUgTVBQMjZfR1BJTyAgICAgICAgTVBQKDI2LCAweDAsIDEsIDEs IDEpCi0jZGVmaW5lIE1QUDI2X1VBMl9DVFNuICAgICAgICBNUFAoMjYsIDB4NCwgMCwgMCwgMSkK LSNkZWZpbmUgTVBQMjZfVERNX1BDTEsgICAgICAgIE1QUCgyNiwgMHg2LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAyNl9VTlVTRUQgICAgICAgIE1QUCgyNiwgMHgxLCAwLCAwLCAxKQotCi0KLSNkZWZp bmUgTVBQMjdfR1BJTyAgICAgICAgTVBQKDI3LCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDI3 X1VBMl9SVFNuICAgICAgICBNUFAoMjcsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjdfVERN X0ZTWU5DICAgICAgICBNUFAoMjcsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjdfVU5VU0VE ICAgICAgICBNUFAoMjcsIDB4MSwgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDI4X0dQSU8gICAg ICAgIE1QUCgyOCwgMHgwLCAxLCAxLCAxKQotI2RlZmluZSBNUFAyOF9VQTNfVFhEICAgICAgICBN UFAoMjgsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMjhfVERNX0RSWCAgICAgICAgTVBQKDI4 LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDI4X1VOVVNFRCAgICAgICAgTVBQKDI4LCAweDEs IDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQMjlfR1BJTyAgICAgICAgTVBQKDI5LCAweDAsIDEsIDEs IDEpCi0jZGVmaW5lIE1QUDI5X1VBM19SWEQgICAgICAgIE1QUCgyOSwgMHg0LCAwLCAwLCAxKQot I2RlZmluZSBNUFAyOV9TWVNSU1RfT1VUbiAgICBNUFAoMjksIDB4NSwgMCwgMCwgMSkKLSNkZWZp bmUgTVBQMjlfVERNX0RUWCAgICAgICAgTVBQKDI5LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1Q UDI5X1VOVVNFRCAgICAgICAgTVBQKDI5LCAweDEsIDAsIDAsIDEpCi0KLSNkZWZpbmUgTVBQMzBf R1BJTyAgICAgICAgTVBQKDMwLCAweDAsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDMwX1VBM19DVFNu ICAgICAgICBNUFAoMzAsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzBfVU5VU0VEICAgICAg ICBNUFAoMzAsIDB4MSwgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAzMV9HUElPICAgICAgICBNUFAo MzEsIDB4MCwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMzFfVUEzX1JUU24gICAgICAgIE1QUCgzMSwg MHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzMV9URE0xX1NDU24gICAgICAgIE1QUCgzMSwgMHg2 LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzMV9VTlVTRUQgICAgICAgIE1QUCgzMSwgMHgxLCAwLCAw LCAxKQotCi0KLSNkZWZpbmUgTVBQMzJfR1BJTyAgICAgICAgTVBQKDMyLCAweDEsIDEsIDEsIDEp Ci0jZGVmaW5lIE1QUDMyX1VBM19URFggICAgICAgIE1QUCgzMiwgMHg0LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAzMl9TWVNSU1RfT1VUbiAgICBNUFAoMzIsIDB4NSwgMCwgMCwgMSkKLSNkZWZpbmUg TVBQMzJfVERNMF9SWFEgICAgICAgIE1QUCgzMiwgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFAz Ml9VTlVTRUQgICAgICAgIE1QUCgzMiwgMHgzLCAwLCAwLCAxKQotCi0KLSNkZWZpbmUgTVBQMzNf R1BJTyAgICAgICAgTVBQKDMzLCAweDEsIDEsIDEsIDEpCi0jZGVmaW5lIE1QUDMzX1VBM19SRFgg ICAgICAgIE1QUCgzMywgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzM19URE0wX1RYUSAgICAg ICAgTVBQKDMzLCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDMzX1VOVVNFRCAgICAgICAgTVBQ KDMzLCAweDMsIDAsIDAsIDEpCi0KLQotCi0jZGVmaW5lIE1QUDM0X0dQSU8gICAgICAgIE1QUCgz NCwgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFAzNF9VQTJfVERYICAgICAgICBNUFAoMzQsIDB4 NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzRfVERNMV9SWFEgICAgICAgIE1QUCgzNCwgMHg2LCAw LCAwLCAxKQotI2RlZmluZSBNUFAzNF9VTlVTRUQgICAgICAgIE1QUCgzNCwgMHgzLCAwLCAwLCAx KQotCi0KLQotI2RlZmluZSBNUFAzNV9HUElPICAgICAgICBNUFAoMzUsIDB4MSwgMSwgMSwgMSkK LSNkZWZpbmUgTVBQMzVfVUEyX1JEWCAgICAgICAgTVBQKDM1LCAweDQsIDAsIDAsIDEpCi0jZGVm aW5lIE1QUDM1X1RETTFfVFhRICAgICAgICBNUFAoMzUsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUg TVBQMzVfVU5VU0VEICAgICAgICBNUFAoMzUsIDB4MywgMCwgMCwgMSkKLQotI2RlZmluZSBNUFAz Nl9HUElPICAgICAgICBNUFAoMzYsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMzZfVUEwX0NU U24gICAgICAgIE1QUCgzNiwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFAzNl9VQTJfVERYICAg ICAgICBNUFAoMzYsIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzZfVERNMF9TQ1NuICAgICAg ICBNUFAoMzYsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzZfVU5VU0VEICAgICAgICBNUFAo MzYsIDB4MywgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDM3X0dQSU8gICAgICAgIE1QUCgzNywg MHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFAzN19VQTBfUlRTbiAgICAgICAgTVBQKDM3LCAweDIs IDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM3X1VBMl9SWEQgICAgICAgIE1QUCgzNywgMHg0LCAwLCAw LCAxKQotI2RlZmluZSBNUFAzN19TWVNSU1RfT1VUbiAgICBNUFAoMzcsIDB4NSwgMCwgMCwgMSkK LSNkZWZpbmUgTVBQMzdfVERNX1NDTEsgICAgICAgIE1QUCgzNywgMHg2LCAwLCAwLCAxKQotI2Rl ZmluZSBNUFAzN19VTlVTRUQgICAgICAgIE1QUCgzNywgMHgzLCAwLCAwLCAxKQotCi0KLQotCi0j ZGVmaW5lIE1QUDM4X0dQSU8gICAgICAgIE1QUCgzOCwgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBN UFAzOF9VQTFfQ1RTbiAgICAgICAgTVBQKDM4LCAweDIsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM4 X1VBM19UWEQgICAgICAgIE1QUCgzOCwgMHg0LCAwLCAwLCAxKQotI2RlZmluZSBNUFAzOF9TWVNS U1RfT1VUbiAgICBNUFAoMzgsIDB4NSwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzhfVERNX1NNT1NJ ICAgICAgICBNUFAoMzgsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzhfVU5VU0VEICAgICAg ICBNUFAoMzgsIDB4MywgMCwgMCwgMSkKLQotCi0KLQotI2RlZmluZSBNUFAzOV9HUElPICAgICAg ICBNUFAoMzksIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQMzlfVUExX1JUU24gICAgICAgIE1Q UCgzOSwgMHgyLCAwLCAwLCAxKQotI2RlZmluZSBNUFAzOV9VQTNfUlhEICAgICAgICBNUFAoMzks IDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQMzlfU1lTUlNUX09VVG4gICAgTVBQKDM5LCAweDUs IDAsIDAsIDEpCi0jZGVmaW5lIE1QUDM5X1RETV9TTUlTTyAgICAgICAgTVBQKDM5LCAweDYsIDAs IDAsIDEpCi0jZGVmaW5lIE1QUDM5X1VOVVNFRCAgICAgICAgTVBQKDM5LCAweDMsIDAsIDAsIDEp Ci0KLQotCi0jZGVmaW5lIE1QUDQwX0dQSU8gICAgICAgIE1QUCg0MCwgMHgxLCAxLCAxLCAxKQot I2RlZmluZSBNUFA0MF9URE1fSU5UbiAgICAgICAgTVBQKDQwLCAweDYsIDAsIDAsIDEpCi0jZGVm aW5lIE1QUDQwX1VOVVNFRCAgICAgICAgTVBQKDQwLCAweDAsIDAsIDAsIDEpCi0KLQotCi0jZGVm aW5lIE1QUDQxX0dQSU8gICAgICAgIE1QUCg0MSwgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFA0 MV9URE1fUlNUbiAgICAgICAgTVBQKDQxLCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDQxX1VO VVNFRCAgICAgICAgTVBQKDQxLCAweDAsIDAsIDAsIDEpCi0KLQotCi0jZGVmaW5lIE1QUDQyX0dQ SU8gICAgICAgIE1QUCg0MiwgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFA0Ml9URE1fUENMSyAg ICAgICAgTVBQKDQyLCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDQyX1VOVVNFRCAgICAgICAg TVBQKDQyLCAweDAsIDAsIDAsIDEpCi0KLQotCi0jZGVmaW5lIE1QUDQzX0dQSU8gICAgICAgIE1Q UCg0MywgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFA0M19URE1fRlNZTkMgICAgICAgIE1QUCg0 MywgMHg2LCAwLCAwLCAxKQotI2RlZmluZSBNUFA0M19VTlVTRUQgICAgICAgIE1QUCg0MywgMHgw LCAwLCAwLCAxKQotCi0KLQotI2RlZmluZSBNUFA0NF9HUElPICAgICAgICBNUFAoNDQsIDB4MSwg MSwgMSwgMSkKLSNkZWZpbmUgTVBQNDRfVERNX0RSWCAgICAgICAgTVBQKDQ0LCAweDYsIDAsIDAs IDEpCi0jZGVmaW5lIE1QUDQ0X1VOVVNFRCAgICAgICAgTVBQKDQ0LCAweDAsIDAsIDAsIDEpCi0K LQotCi0jZGVmaW5lIE1QUDQ1X0dQSU8gICAgICAgIE1QUCg0NSwgMHgxLCAxLCAxLCAxKQotI2Rl ZmluZSBNUFA0NV9TQVRBMF9BQ1RuICAgIE1QUCg0NSwgMHgzLCAwLCAwLCAxKQotI2RlZmluZSBN UFA0NV9URE1fRFJYICAgICAgICBNUFAoNDUsIDB4NiwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNDVf VU5VU0VEICAgICAgICBNUFAoNDUsIDB4MCwgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUDQ2X0dQ SU8gICAgICAgIE1QUCg0NiwgMHgxLCAxLCAxLCAxKQotI2RlZmluZSBNUFA0Nl9URE1fU0NTbiAg ICAgICAgTVBQKDQ2LCAweDYsIDAsIDAsIDEpCi0jZGVmaW5lIE1QUDQ2X1VOVVNFRCAgICAgICAg TVBQKDQ2LCAweDAsIDAsIDAsIDEpCi0KLQotI2RlZmluZSBNUFA0N19HUElPICAgICAgICBNUFAo NDcsIDB4MSwgMSwgMSwgMSkKLSNkZWZpbmUgTVBQNDdfVU5VU0VEICAgICAgICBNUFAoNDcsIDB4 MCwgMCwgMCwgMSkKLQotCi0KLSNkZWZpbmUgTVBQNDhfR1BJTyAgICAgICAgTVBQKDQ4LCAweDEs IDEsIDEsIDEpCi0jZGVmaW5lIE1QUDQ4X1NBVEExX0FDVG4gICAgTVBQKDQ4LCAweDMsIDAsIDAs IDEpCi0jZGVmaW5lIE1QUDQ4X1VOVVNFRCAgICAgICAgTVBQKDQ4LCAweDIsIDAsIDAsIDEpCi0K LQotCi0jZGVmaW5lIE1QUDQ5X0dQSU8gICAgICAgIE1QUCg0OSwgMHgxLCAxLCAxLCAxKQotI2Rl ZmluZSBNUFA0OV9TQVRBMF9BQ1RuICAgIE1QUCg0OSwgMHgzLCAwLCAwLCAxKQotI2RlZmluZSBN UFA0OV9NX0JCICAgICAgICBNUFAoNDksIDB4NCwgMCwgMCwgMSkKLSNkZWZpbmUgTVBQNDlfVU5V U0VEICAgICAgICBNUFAoNDksIDB4MiwgMCwgMCwgMSkKLQotCi0jZGVmaW5lIE1QUF9NQVggICAg ICAgICAgICA0OQotCi12b2lkIG12Nzh4eDBfbXBwX2NvbmYodW5zaWduZWQgaW50ICptcHBfbGlz dCk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL212Nzh4eDAu aCBiL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9tdjc4eHgwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDg4ZWZiMWU0NDE0Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gt bXY3OHh4MC9tdjc4eHgwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwotLyoKLSAqIEdlbmVyaWMgZGVm aW5pdGlvbnMgZm9yIE1hcnZlbGwgTVY3OHh4MCBTb0MgZmxhdm9yczoKLSAqICBNVjc4MXgwIGFu ZCBNVjc4MngwLgotICovCi0KLSNpZm5kZWYgX19BU01fQVJDSF9NVjc4WFgwX0gKLSNkZWZpbmUg X19BU01fQVJDSF9NVjc4WFgwX0gKLQotI2luY2x1ZGUgImlycXMuaCIKLQotLyoKLSAqIE1hcnZl bGwgTVY3OHh4MCBhZGRyZXNzIG1hcHMuCi0gKgotICogcGh5cwotICogYzAwMDAwMDAJUENJZSBN ZW1vcnkgc3BhY2UKLSAqIGYwODAwMDAwCVBDSWUgIzAgSS9PIHNwYWNlCi0gKiBmMDkwMDAwMAlQ Q0llICMxIEkvTyBzcGFjZQotICogZjBhMDAwMDAJUENJZSAjMiBJL08gc3BhY2UKLSAqIGYwYjAw MDAwCVBDSWUgIzMgSS9PIHNwYWNlCi0gKiBmMGMwMDAwMAlQQ0llICM0IEkvTyBzcGFjZQotICog ZjBkMDAwMDAJUENJZSAjNSBJL08gc3BhY2UKLSAqIGYwZTAwMDAwCVBDSWUgIzYgSS9PIHNwYWNl Ci0gKiBmMGYwMDAwMAlQQ0llICM3IEkvTyBzcGFjZQotICogZjEwMDAwMDAJb24tY2hpcCBwZXJp cGhlcmFsIHJlZ2lzdGVycwotICoKLSAqIHZpcnQJCXBoeXMJCXNpemUKLSAqIGZlNDAwMDAwCWYx MDJ4MDAwCTE2Swljb3JlLXNwZWNpZmljIHBlcmlwaGVyYWwgcmVnaXN0ZXJzCi0gKiBmZWUwMDAw MAlmMDgwMDAwMAk2NEsJUENJZSAjMCBJL08gc3BhY2UKLSAqIGZlZTEwMDAwCWYwOTAwMDAwCTY0 SwlQQ0llICMxIEkvTyBzcGFjZQotICogZmVlMjAwMDAJZjBhMDAwMDAJNjRLCVBDSWUgIzIgSS9P IHNwYWNlCi0gKiBmZWUzMDAwMAlmMGIwMDAwMAk2NEsJUENJZSAjMyBJL08gc3BhY2UKLSAqIGZl ZTQwMDAwCWYwYzAwMDAwCTY0SwlQQ0llICM0IEkvTyBzcGFjZQotICogZmVlNTAwMDAJZjBkMDAw MDAJNjRLCVBDSWUgIzUgSS9PIHNwYWNlCi0gKiBmZWU2MDAwMAlmMGUwMDAwMAk2NEsJUENJZSAj NiBJL08gc3BhY2UKLSAqIGZlZTcwMDAwCWYwZjAwMDAwCTY0SwlQQ0llICM3IEkvTyBzcGFjZQot ICogZmVjMDAwMDAJZjEwMDAwMDAJMU0Jb24tY2hpcCBwZXJpcGhlcmFsIHJlZ2lzdGVycwotICov Ci0jZGVmaW5lIE1WNzhYWDBfQ09SRTBfUkVHU19QSFlTX0JBU0UJMHhmMTAyMDAwMAotI2RlZmlu ZSBNVjc4WFgwX0NPUkUxX1JFR1NfUEhZU19CQVNFCTB4ZjEwMjQwMDAKLSNkZWZpbmUgTVY3OFhY MF9DT1JFX1JFR1NfVklSVF9CQVNFCUlPTUVNKDB4ZmU0MDAwMDApCi0jZGVmaW5lIE1WNzhYWDBf Q09SRV9SRUdTX1BIWVNfQkFTRQkweGZlNDAwMDAwCi0jZGVmaW5lIE1WNzhYWDBfQ09SRV9SRUdT X1NJWkUJCVNaXzE2SwotCi0jZGVmaW5lIE1WNzhYWDBfUENJRV9JT19QSFlTX0JBU0UoaSkJKDB4 ZjA4MDAwMDAgKyAoKGkpIDw8IDIwKSkKLSNkZWZpbmUgTVY3OFhYMF9QQ0lFX0lPX1NJWkUJCVNa XzFNCi0KLSNkZWZpbmUgTVY3OFhYMF9SRUdTX1BIWVNfQkFTRQkJMHhmMTAwMDAwMAotI2RlZmlu ZSBNVjc4WFgwX1JFR1NfVklSVF9CQVNFCQlJT01FTSgweGZlYzAwMDAwKQotI2RlZmluZSBNVjc4 WFgwX1JFR1NfU0laRQkJU1pfMU0KLQotI2RlZmluZSBNVjc4WFgwX1NSQU1fUEhZU19CQVNFICAg ICAgICAgICgweGYyMjAwMDAwKQotI2RlZmluZSBNVjc4WFgwX1NSQU1fU0laRSAgICAgICAgICAg ICAgIFNaXzhLCi0KLSNkZWZpbmUgTVY3OFhYMF9QQ0lFX01FTV9QSFlTX0JBU0UJMHhjMDAwMDAw MAotI2RlZmluZSBNVjc4WFgwX1BDSUVfTUVNX1NJWkUJCTB4MzAwMDAwMDAKLQotI2RlZmluZSBN Vjc4WFgwX01CVVNfU1JBTV9UQVJHRVQgICAgICAgMHgwOQotI2RlZmluZSBNVjc4WFgwX01CVVNf U1JBTV9BVFRSICAgICAgICAgMHgwMAotCi0vKgotICogQ29yZS1zcGVjaWZpYyBwZXJpcGhlcmFs IHJlZ2lzdGVycy4KLSAqLwotI2RlZmluZSBCUklER0VfVklSVF9CQVNFCShNVjc4WFgwX0NPUkVf UkVHU19WSVJUX0JBU0UpCi0jZGVmaW5lIEJSSURHRV9QSFlTX0JBU0UJKE1WNzhYWDBfQ09SRV9S RUdTX1BIWVNfQkFTRSkKLSNkZWZpbmUgIEJSSURHRV9XSU5TX0NQVTBfQkFTRSAgKE1WNzhYWDBf Q09SRTBfUkVHU19QSFlTX0JBU0UpCi0jZGVmaW5lICBCUklER0VfV0lOU19DUFUxX0JBU0UgIChN Vjc4WFgwX0NPUkUxX1JFR1NfUEhZU19CQVNFKQotI2RlZmluZSAgQlJJREdFX1dJTlNfU1ogICAg ICAgICAoMHhBMDAwKQotCi0vKgotICogUmVnaXN0ZXIgTWFwCi0gKi8KLSNkZWZpbmUgRERSX1ZJ UlRfQkFTRQkJKE1WNzhYWDBfUkVHU19WSVJUX0JBU0UgKyAweDAwMDAwKQotI2RlZmluZSBERFJf UEhZU19CQVNFICAgICAgICAgICAoTVY3OFhYMF9SRUdTX1BIWVNfQkFTRSArIDB4MDAwMDApCi0j ZGVmaW5lICBERFJfV0lORE9XX0NQVTBfQkFTRQkoRERSX1BIWVNfQkFTRSArIDB4MTUwMCkKLSNk ZWZpbmUgIEREUl9XSU5ET1dfQ1BVMV9CQVNFCShERFJfUEhZU19CQVNFICsgMHgxNTcwKQotI2Rl ZmluZSAgRERSX1dJTkRPV19DUFVfU1ogICAgICAoMHgyMCkKLQotI2RlZmluZSBERVZfQlVTX1BI WVNfQkFTRQkoTVY3OFhYMF9SRUdTX1BIWVNfQkFTRSArIDB4MTAwMDApCi0jZGVmaW5lIERFVl9C VVNfVklSVF9CQVNFCShNVjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHgxMDAwMCkKLSNkZWZpbmUg IFNBTVBMRV9BVF9SRVNFVF9MT1cJKERFVl9CVVNfVklSVF9CQVNFICsgMHgwMDMwKQotI2RlZmlu ZSAgU0FNUExFX0FUX1JFU0VUX0hJR0gJKERFVl9CVVNfVklSVF9CQVNFICsgMHgwMDM0KQotI2Rl ZmluZSAgR1BJT19WSVJUX0JBU0UJCShERVZfQlVTX1ZJUlRfQkFTRSArIDB4MDEwMCkKLSNkZWZp bmUgIEkyQ18wX1BIWVNfQkFTRQkoREVWX0JVU19QSFlTX0JBU0UgKyAweDEwMDApCi0jZGVmaW5l ICBJMkNfMV9QSFlTX0JBU0UJKERFVl9CVVNfUEhZU19CQVNFICsgMHgxMTAwKQotI2RlZmluZSAg VUFSVDBfUEhZU19CQVNFCShERVZfQlVTX1BIWVNfQkFTRSArIDB4MjAwMCkKLSNkZWZpbmUgIFVB UlQwX1ZJUlRfQkFTRQkoREVWX0JVU19WSVJUX0JBU0UgKyAweDIwMDApCi0jZGVmaW5lICBVQVJU MV9QSFlTX0JBU0UJKERFVl9CVVNfUEhZU19CQVNFICsgMHgyMTAwKQotI2RlZmluZSAgVUFSVDFf VklSVF9CQVNFCShERVZfQlVTX1ZJUlRfQkFTRSArIDB4MjEwMCkKLSNkZWZpbmUgIFVBUlQyX1BI WVNfQkFTRQkoREVWX0JVU19QSFlTX0JBU0UgKyAweDIyMDApCi0jZGVmaW5lICBVQVJUMl9WSVJU X0JBU0UJKERFVl9CVVNfVklSVF9CQVNFICsgMHgyMjAwKQotI2RlZmluZSAgVUFSVDNfUEhZU19C QVNFCShERVZfQlVTX1BIWVNfQkFTRSArIDB4MjMwMCkKLSNkZWZpbmUgIFVBUlQzX1ZJUlRfQkFT RQkoREVWX0JVU19WSVJUX0JBU0UgKyAweDIzMDApCi0KLSNkZWZpbmUgR0UxMF9QSFlTX0JBU0UJ CShNVjc4WFgwX1JFR1NfUEhZU19CQVNFICsgMHgzMDAwMCkKLSNkZWZpbmUgR0UxMV9QSFlTX0JB U0UJCShNVjc4WFgwX1JFR1NfUEhZU19CQVNFICsgMHgzNDAwMCkKLQotI2RlZmluZSBQQ0lFMDBf VklSVF9CQVNFCShNVjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHg0MDAwMCkKLSNkZWZpbmUgUENJ RTAxX1ZJUlRfQkFTRQkoTVY3OFhYMF9SRUdTX1ZJUlRfQkFTRSArIDB4NDQwMDApCi0jZGVmaW5l IFBDSUUwMl9WSVJUX0JBU0UJKE1WNzhYWDBfUkVHU19WSVJUX0JBU0UgKyAweDQ4MDAwKQotI2Rl ZmluZSBQQ0lFMDNfVklSVF9CQVNFCShNVjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHg0YzAwMCkK LQotI2RlZmluZSBVU0IwX1BIWVNfQkFTRQkJKE1WNzhYWDBfUkVHU19QSFlTX0JBU0UgKyAweDUw MDAwKQotI2RlZmluZSBVU0IxX1BIWVNfQkFTRQkJKE1WNzhYWDBfUkVHU19QSFlTX0JBU0UgKyAw eDUxMDAwKQotI2RlZmluZSBVU0IyX1BIWVNfQkFTRQkJKE1WNzhYWDBfUkVHU19QSFlTX0JBU0Ug KyAweDUyMDAwKQotCi0jZGVmaW5lIFhPUl9QSFlTX0JBU0UJCShNVjc4WFgwX1JFR1NfUEhZU19C QVNFICsgMHg2MDkwMCkKLQotI2RlZmluZSBHRTAwX1BIWVNfQkFTRQkJKE1WNzhYWDBfUkVHU19Q SFlTX0JBU0UgKyAweDcwMDAwKQotI2RlZmluZSBHRTAxX1BIWVNfQkFTRQkJKE1WNzhYWDBfUkVH U19QSFlTX0JBU0UgKyAweDc0MDAwKQotCi0jZGVmaW5lIFBDSUUxMF9WSVJUX0JBU0UJKE1WNzhY WDBfUkVHU19WSVJUX0JBU0UgKyAweDgwMDAwKQotI2RlZmluZSBQQ0lFMTFfVklSVF9CQVNFCShN Vjc4WFgwX1JFR1NfVklSVF9CQVNFICsgMHg4NDAwMCkKLSNkZWZpbmUgUENJRTEyX1ZJUlRfQkFT RQkoTVY3OFhYMF9SRUdTX1ZJUlRfQkFTRSArIDB4ODgwMDApCi0jZGVmaW5lIFBDSUUxM19WSVJU X0JBU0UJKE1WNzhYWDBfUkVHU19WSVJUX0JBU0UgKyAweDhjMDAwKQotCi0jZGVmaW5lIENSWVBU T19QSFlTX0JBU0UJKE1WNzhYWDBfUkVHU19QSFlTX0JBU0UgKyAweDkwMDAwKQotCi0jZGVmaW5l IFNBVEFfUEhZU19CQVNFCQkoTVY3OFhYMF9SRUdTX1BIWVNfQkFTRSArIDB4YTAwMDApCi0KLS8q Ci0gKiBTdXBwb3J0ZWQgZGV2aWNlcyBhbmQgcmV2aXNpb25zLgotICovCi0jZGVmaW5lIE1WNzhY MDBfWjBfREVWX0lECTB4NjM4MQotI2RlZmluZSBNVjc4WDAwX1JFVl9aMAkJMQotCi0jZGVmaW5l IE1WNzgxMDBfREVWX0lECQkweDc4MTAKLSNkZWZpbmUgTVY3ODEwMF9SRVZfQTAJCTEKLSNkZWZp bmUgTVY3ODEwMF9SRVZfQTEJCTIKLQotI2RlZmluZSBNVjc4MjAwX0RFVl9JRAkJMHg3ODIwCi0j ZGVmaW5lIE1WNzgyMDBfUkVWX0EwCQkxCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0v bWFjaC1tdjc4eHgwL3BjaWUuYyBiL2FyY2gvYXJtL21hY2gtbXY3OHh4MC9wY2llLmMKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzM2NiNzg1Njk0My4uMDAwMDAwMDAwMDAwCi0tLSBh L2FyY2gvYXJtL21hY2gtbXY3OHh4MC9wY2llLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAs MCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQotLyoKLSAqIGFy Y2gvYXJtL21hY2gtbXY3OHh4MC9wY2llLmMKLSAqCi0gKiBQQ0llIGZ1bmN0aW9ucyBmb3IgTWFy dmVsbCBNVjc4eHgwIFNvQ3MKLSAqLwotCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5j bHVkZSA8bGludXgvcGNpLmg+Ci0jaW5jbHVkZSA8bGludXgvbWJ1cy5oPgotI2luY2x1ZGUgPHZp ZGVvL3ZnYS5oPgotI2luY2x1ZGUgPGFzbS9pcnEuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9wY2ku aD4KLSNpbmNsdWRlIDxwbGF0L3BjaWUuaD4KLSNpbmNsdWRlICJtdjc4eHgwLmgiCi0jaW5jbHVk ZSAiY29tbW9uLmgiCi0KLSNkZWZpbmUgTVY3OFhYMF9NQlVTX1BDSUVfTUVNX1RBUkdFVChwb3J0 LCBsYW5lKSAoKHBvcnQpID8gOCA6IDQpCi0jZGVmaW5lIE1WNzhYWDBfTUJVU19QQ0lFX01FTV9B VFRSKHBvcnQsIGxhbmUpICAgKDB4ZjggJiB+KDB4MTAgPDwgKGxhbmUpKSkKLSNkZWZpbmUgTVY3 OFhYMF9NQlVTX1BDSUVfSU9fVEFSR0VUKHBvcnQsIGxhbmUpICAoKHBvcnQpID8gOCA6IDQpCi0j ZGVmaW5lIE1WNzhYWDBfTUJVU19QQ0lFX0lPX0FUVFIocG9ydCwgbGFuZSkgICAgKDB4ZjAgJiB+ KDB4MTAgPDwgKGxhbmUpKSkKLQotc3RydWN0IHBjaWVfcG9ydCB7Ci0JdTgJCQltYWo7Ci0JdTgJ CQltaW47Ci0JdTgJCQlyb290X2J1c19ucjsKLQl2b2lkIF9faW9tZW0JCSpiYXNlOwotCXNwaW5s b2NrX3QJCWNvbmZfbG9jazsKLQljaGFyCQkJbWVtX3NwYWNlX25hbWVbMjBdOwotCXN0cnVjdCBy ZXNvdXJjZQkJcmVzOwotfTsKLQotc3RhdGljIHN0cnVjdCBwY2llX3BvcnQgcGNpZV9wb3J0Wzhd Owotc3RhdGljIGludCBudW1fcGNpZV9wb3J0czsKLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgcGNp ZV9pb19zcGFjZTsKLQotdm9pZCBfX2luaXQgbXY3OHh4MF9wY2llX2lkKHUzMiAqZGV2LCB1MzIg KnJldikKLXsKLQkqZGV2ID0gb3Jpb25fcGNpZV9kZXZfaWQoUENJRTAwX1ZJUlRfQkFTRSk7Ci0J KnJldiA9IG9yaW9uX3BjaWVfcmV2KFBDSUUwMF9WSVJUX0JBU0UpOwotfQotCi11MzIgcGNpZV9w b3J0X3NpemVbOF0gPSB7Ci0JMCwKLQkweDIwMDAwMDAwLAotCTB4MTAwMDAwMDAsCi0JMHgxMDAw MDAwMCwKLQkweDA4MDAwMDAwLAotCTB4MDgwMDAwMDAsCi0JMHgwODAwMDAwMCwKLQkweDA0MDAw MDAwLAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IG12Nzh4eDBfcGNpZV9wcmVpbml0KHZvaWQp Ci17Ci0JaW50IGk7Ci0JdTMyIHNpemVfZWFjaDsKLQl1MzIgc3RhcnQ7Ci0KLQlwY2llX2lvX3Nw YWNlLm5hbWUgPSAiUENJZSBJL08gU3BhY2UiOwotCXBjaWVfaW9fc3BhY2Uuc3RhcnQgPSBNVjc4 WFgwX1BDSUVfSU9fUEhZU19CQVNFKDApOwotCXBjaWVfaW9fc3BhY2UuZW5kID0KLQkJTVY3OFhY MF9QQ0lFX0lPX1BIWVNfQkFTRSgwKSArIE1WNzhYWDBfUENJRV9JT19TSVpFICogOCAtIDE7Ci0J cGNpZV9pb19zcGFjZS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwotCWlmIChyZXF1ZXN0X3Jlc291 cmNlKCZpb21lbV9yZXNvdXJjZSwgJnBjaWVfaW9fc3BhY2UpKQotCQlwYW5pYygiY2FuJ3QgYWxs b2NhdGUgUENJZSBJL08gc3BhY2UiKTsKLQotCWlmIChudW1fcGNpZV9wb3J0cyA+IDcpCi0JCXBh bmljKCJpbnZhbGlkIG51bWJlciBvZiBQQ0llIHBvcnRzIik7Ci0KLQlzaXplX2VhY2ggPSBwY2ll X3BvcnRfc2l6ZVtudW1fcGNpZV9wb3J0c107Ci0KLQlzdGFydCA9IE1WNzhYWDBfUENJRV9NRU1f UEhZU19CQVNFOwotCWZvciAoaSA9IDA7IGkgPCBudW1fcGNpZV9wb3J0czsgaSsrKSB7Ci0JCXN0 cnVjdCBwY2llX3BvcnQgKnBwID0gcGNpZV9wb3J0ICsgaTsKLQotCQlzbnByaW50ZihwcC0+bWVt X3NwYWNlX25hbWUsIHNpemVvZihwcC0+bWVtX3NwYWNlX25hbWUpLAotCQkJIlBDSWUgJWQuJWQg TUVNIiwgcHAtPm1haiwgcHAtPm1pbik7Ci0JCXBwLT5tZW1fc3BhY2VfbmFtZVtzaXplb2YocHAt Pm1lbV9zcGFjZV9uYW1lKSAtIDFdID0gMDsKLQkJcHAtPnJlcy5uYW1lID0gcHAtPm1lbV9zcGFj ZV9uYW1lOwotCQlwcC0+cmVzLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07Ci0JCXBwLT5yZXMuc3Rh cnQgPSBzdGFydDsKLQkJcHAtPnJlcy5lbmQgPSBzdGFydCArIHNpemVfZWFjaCAtIDE7Ci0JCXN0 YXJ0ICs9IHNpemVfZWFjaDsKLQotCQlpZiAocmVxdWVzdF9yZXNvdXJjZSgmaW9tZW1fcmVzb3Vy Y2UsICZwcC0+cmVzKSkKLQkJCXBhbmljKCJjYW4ndCBhbGxvY2F0ZSBQQ0llIE1FTSBzdWItc3Bh Y2UiKTsKLQotCQltdmVidV9tYnVzX2FkZF93aW5kb3dfYnlfaWQoTVY3OFhYMF9NQlVTX1BDSUVf TUVNX1RBUkdFVChwcC0+bWFqLCBwcC0+bWluKSwKLQkJCQkJICAgIE1WNzhYWDBfTUJVU19QQ0lF X01FTV9BVFRSKHBwLT5tYWosIHBwLT5taW4pLAotCQkJCQkgICAgcHAtPnJlcy5zdGFydCwgcmVz b3VyY2Vfc2l6ZSgmcHAtPnJlcykpOwotCQltdmVidV9tYnVzX2FkZF93aW5kb3dfcmVtYXBfYnlf aWQoTVY3OFhYMF9NQlVTX1BDSUVfSU9fVEFSR0VUKHBwLT5tYWosIHBwLT5taW4pLAotCQkJCQkJ ICBNVjc4WFgwX01CVVNfUENJRV9JT19BVFRSKHBwLT5tYWosIHBwLT5taW4pLAotCQkJCQkJICBp ICogU1pfNjRLLCBTWl82NEssIDApOwotCX0KLX0KLQotc3RhdGljIGludCBfX2luaXQgbXY3OHh4 MF9wY2llX3NldHVwKGludCBuciwgc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKQotewotCXN0cnVj dCBwY2llX3BvcnQgKnBwOwotCXN0cnVjdCByZXNvdXJjZSByZWFsaW87Ci0KLQlpZiAobnIgPj0g bnVtX3BjaWVfcG9ydHMpCi0JCXJldHVybiAwOwotCi0JcHAgPSAmcGNpZV9wb3J0W25yXTsKLQlz eXMtPnByaXZhdGVfZGF0YSA9IHBwOwotCXBwLT5yb290X2J1c19uciA9IHN5cy0+YnVzbnI7Ci0K LQkvKgotCSAqIEdlbmVyaWMgUENJZSB1bml0IHNldHVwLgotCSAqLwotCW9yaW9uX3BjaWVfc2V0 X2xvY2FsX2J1c19ucihwcC0+YmFzZSwgc3lzLT5idXNucik7Ci0Jb3Jpb25fcGNpZV9zZXR1cChw cC0+YmFzZSk7Ci0KLQlyZWFsaW8uc3RhcnQgPSBuciAqIFNaXzY0SzsKLQlyZWFsaW8uZW5kID0g cmVhbGlvLnN0YXJ0ICsgU1pfNjRLIC0gMTsKLQlwY2lfcmVtYXBfaW9zcGFjZSgmcmVhbGlvLCBN Vjc4WFgwX1BDSUVfSU9fUEhZU19CQVNFKG5yKSk7Ci0KLQlwY2lfYWRkX3Jlc291cmNlX29mZnNl dCgmc3lzLT5yZXNvdXJjZXMsICZwcC0+cmVzLCBzeXMtPm1lbV9vZmZzZXQpOwotCi0JcmV0dXJu IDE7Ci19Ci0KLXN0YXRpYyBpbnQgcGNpZV92YWxpZF9jb25maWcoc3RydWN0IHBjaWVfcG9ydCAq cHAsIGludCBidXMsIGludCBkZXYpCi17Ci0JLyoKLQkgKiBEb24ndCBnbyBvdXQgd2hlbiB0cnlp bmcgdG8gYWNjZXNzIG5vbmV4aXN0aW5nIGRldmljZXMKLQkgKiBvbiB0aGUgbG9jYWwgYnVzLgot CSAqLwotCWlmIChidXMgPT0gcHAtPnJvb3RfYnVzX25yICYmIGRldiA+IDEpCi0JCXJldHVybiAw OwotCi0JcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyBpbnQgcGNpZV9yZF9jb25mKHN0cnVjdCBwY2lf YnVzICpidXMsIHUzMiBkZXZmbiwgaW50IHdoZXJlLAotCQkJaW50IHNpemUsIHUzMiAqdmFsKQot ewotCXN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cyA9IGJ1cy0+c3lzZGF0YTsKLQlzdHJ1Y3QgcGNp ZV9wb3J0ICpwcCA9IHN5cy0+cHJpdmF0ZV9kYXRhOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0J aW50IHJldDsKLQotCWlmIChwY2llX3ZhbGlkX2NvbmZpZyhwcCwgYnVzLT5udW1iZXIsIFBDSV9T TE9UKGRldmZuKSkgPT0gMCkgewotCQkqdmFsID0gMHhmZmZmZmZmZjsKLQkJcmV0dXJuIFBDSUJJ T1NfREVWSUNFX05PVF9GT1VORDsKLQl9Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmcHAtPmNvbmZf bG9jaywgZmxhZ3MpOwotCXJldCA9IG9yaW9uX3BjaWVfcmRfY29uZihwcC0+YmFzZSwgYnVzLCBk ZXZmbiwgd2hlcmUsIHNpemUsIHZhbCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHAtPmNv bmZfbG9jaywgZmxhZ3MpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBwY2llX3dy X2NvbmYoc3RydWN0IHBjaV9idXMgKmJ1cywgdTMyIGRldmZuLAotCQkJaW50IHdoZXJlLCBpbnQg c2l6ZSwgdTMyIHZhbCkKLXsKLQlzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMgPSBidXMtPnN5c2Rh dGE7Ci0Jc3RydWN0IHBjaWVfcG9ydCAqcHAgPSBzeXMtPnByaXZhdGVfZGF0YTsKLQl1bnNpZ25l ZCBsb25nIGZsYWdzOwotCWludCByZXQ7Ci0KLQlpZiAocGNpZV92YWxpZF9jb25maWcocHAsIGJ1 cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXZmbikpID09IDApCi0JCXJldHVybiBQQ0lCSU9TX0RFVklD RV9OT1RfRk9VTkQ7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmcHAtPmNvbmZfbG9jaywgZmxhZ3Mp OwotCXJldCA9IG9yaW9uX3BjaWVfd3JfY29uZihwcC0+YmFzZSwgYnVzLCBkZXZmbiwgd2hlcmUs IHNpemUsIHZhbCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHAtPmNvbmZfbG9jaywgZmxh Z3MpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHN0cnVjdCBwY2lfb3BzIHBjaWVfb3Bz ID0gewotCS5yZWFkID0gcGNpZV9yZF9jb25mLAotCS53cml0ZSA9IHBjaWVfd3JfY29uZiwKLX07 Ci0KLS8qCi0gKiBUaGUgcm9vdCBjb21wbGV4IGhhcyBhIGhhcmR3aXJlZCBjbGFzcyBvZiBQQ0lf Q0xBU1NfTUVNT1JZX09USEVSLCB3aGVuIGl0Ci0gKiBpcyBvcGVyYXRpbmcgYXMgYSByb290IGNv bXBsZXggdGhpcyBuZWVkcyB0byBiZSBzd2l0Y2hlZCB0bwotICogUENJX0NMQVNTX0JSSURHRV9I T1NUIG9yIExpbnV4IHdpbGwgZXJyYW50bHkgdHJ5IHRvIHByb2Nlc3MgdGhlIEJBUidzIG9uCi0g KiB0aGUgZGV2aWNlLiBEZWNvZGluZyBzZXR1cCBpcyBoYW5kbGVkIGJ5IHRoZSBvcmlvbiBjb2Rl LgotICovCi1zdGF0aWMgdm9pZCByY19wY2lfZml4dXAoc3RydWN0IHBjaV9kZXYgKmRldikKLXsK LQlpZiAoZGV2LT5idXMtPnBhcmVudCA9PSBOVUxMICYmIGRldi0+ZGV2Zm4gPT0gMCkgewotCQlz dHJ1Y3QgcmVzb3VyY2UgKnI7Ci0KLQkJZGV2LT5jbGFzcyAmPSAweGZmOwotCQlkZXYtPmNsYXNz IHw9IFBDSV9DTEFTU19CUklER0VfSE9TVCA8PCA4OwotCQlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291 cmNlKGRldiwgcikgewotCQkJci0+c3RhcnQgPSAwOwotCQkJci0+ZW5kICAgPSAwOwotCQkJci0+ ZmxhZ3MgPSAwOwotCQl9Ci0JfQotfQotREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKFBDSV9WRU5E T1JfSURfTUFSVkVMTCwgUENJX0FOWV9JRCwgcmNfcGNpX2ZpeHVwKTsKLQotc3RhdGljIGludCBf X2luaXQgbXY3OHh4MF9wY2llX3NjYW5fYnVzKGludCBuciwgc3RydWN0IHBjaV9ob3N0X2JyaWRn ZSAqYnJpZGdlKQotewotCXN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cyA9IHBjaV9ob3N0X2JyaWRn ZV9wcml2KGJyaWRnZSk7Ci0KLQlpZiAobnIgPj0gbnVtX3BjaWVfcG9ydHMpIHsKLQkJQlVHKCk7 Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWxpc3Rfc3BsaWNlX2luaXQoJnN5cy0+cmVzb3Vy Y2VzLCAmYnJpZGdlLT53aW5kb3dzKTsKLQlicmlkZ2UtPmRldi5wYXJlbnQgPSBOVUxMOwotCWJy aWRnZS0+c3lzZGF0YSA9IHN5czsKLQlicmlkZ2UtPmJ1c25yID0gc3lzLT5idXNucjsKLQlicmlk Z2UtPm9wcyA9ICZwY2llX29wczsKLQotCXJldHVybiBwY2lfc2Nhbl9yb290X2J1c19icmlkZ2Uo YnJpZGdlKTsKLX0KLQotc3RhdGljIGludCBfX2luaXQgbXY3OHh4MF9wY2llX21hcF9pcnEoY29u c3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwKLQl1OCBwaW4pCi17Ci0Jc3RydWN0IHBj aV9zeXNfZGF0YSAqc3lzID0gZGV2LT5idXMtPnN5c2RhdGE7Ci0Jc3RydWN0IHBjaWVfcG9ydCAq cHAgPSBzeXMtPnByaXZhdGVfZGF0YTsKLQotCXJldHVybiBJUlFfTVY3OFhYMF9QQ0lFXzAwICsg KHBwLT5tYWogPDwgMikgKyBwcC0+bWluOwotfQotCi1zdGF0aWMgc3RydWN0IGh3X3BjaSBtdjc4 eHgwX3BjaSBfX2luaXRkYXRhID0gewotCS5ucl9jb250cm9sbGVycwk9IDgsCi0JLnByZWluaXQJ PSBtdjc4eHgwX3BjaWVfcHJlaW5pdCwKLQkuc2V0dXAJCT0gbXY3OHh4MF9wY2llX3NldHVwLAot CS5zY2FuCQk9IG12Nzh4eDBfcGNpZV9zY2FuX2J1cywKLQkubWFwX2lycQk9IG12Nzh4eDBfcGNp ZV9tYXBfaXJxLAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IGFkZF9wY2llX3BvcnQoaW50IG1h aiwgaW50IG1pbiwgdm9pZCBfX2lvbWVtICpiYXNlKQotewotCXByaW50ayhLRVJOX0lORk8gIk1W Nzh4eDAgUENJZSBwb3J0ICVkLiVkOiAiLCBtYWosIG1pbik7Ci0KLQlpZiAob3Jpb25fcGNpZV9s aW5rX3VwKGJhc2UpKSB7Ci0JCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gJnBjaWVfcG9ydFtudW1f cGNpZV9wb3J0cysrXTsKLQotCQlwcmludGsoImxpbmsgdXBcbiIpOwotCi0JCXBwLT5tYWogPSBt YWo7Ci0JCXBwLT5taW4gPSBtaW47Ci0JCXBwLT5yb290X2J1c19uciA9IC0xOwotCQlwcC0+YmFz ZSA9IGJhc2U7Ci0JCXNwaW5fbG9ja19pbml0KCZwcC0+Y29uZl9sb2NrKTsKLQkJbWVtc2V0KCZw cC0+cmVzLCAwLCBzaXplb2YocHAtPnJlcykpOwotCX0gZWxzZSB7Ci0JCXByaW50aygibGluayBk b3duLCBpZ25vcmluZ1xuIik7Ci0JfQotfQotCi12b2lkIF9faW5pdCBtdjc4eHgwX3BjaWVfaW5p dChpbnQgaW5pdF9wb3J0MCwgaW50IGluaXRfcG9ydDEpCi17Ci0JdmdhX2Jhc2UgPSBNVjc4WFgw X1BDSUVfTUVNX1BIWVNfQkFTRTsKLQotCWlmIChpbml0X3BvcnQwKSB7Ci0JCWFkZF9wY2llX3Bv cnQoMCwgMCwgUENJRTAwX1ZJUlRfQkFTRSk7Ci0JCWlmICghb3Jpb25fcGNpZV94NF9tb2RlKFBD SUUwMF9WSVJUX0JBU0UpKSB7Ci0JCQlhZGRfcGNpZV9wb3J0KDAsIDEsIFBDSUUwMV9WSVJUX0JB U0UpOwotCQkJYWRkX3BjaWVfcG9ydCgwLCAyLCBQQ0lFMDJfVklSVF9CQVNFKTsKLQkJCWFkZF9w Y2llX3BvcnQoMCwgMywgUENJRTAzX1ZJUlRfQkFTRSk7Ci0JCX0KLQl9Ci0KLQlpZiAoaW5pdF9w b3J0MSkgewotCQlhZGRfcGNpZV9wb3J0KDEsIDAsIFBDSUUxMF9WSVJUX0JBU0UpOwotCQlpZiAo IW9yaW9uX3BjaWVfeDRfbW9kZSgodm9pZCBfX2lvbWVtICopUENJRTEwX1ZJUlRfQkFTRSkpIHsK LQkJCWFkZF9wY2llX3BvcnQoMSwgMSwgUENJRTExX1ZJUlRfQkFTRSk7Ci0JCQlhZGRfcGNpZV9w b3J0KDEsIDIsIFBDSUUxMl9WSVJUX0JBU0UpOwotCQkJYWRkX3BjaWVfcG9ydCgxLCAzLCBQQ0lF MTNfVklSVF9CQVNFKTsKLQkJfQotCX0KLQotCXBjaV9jb21tb25faW5pdCgmbXY3OHh4MF9wY2kp OwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L0tjb25maWcgYi9hcmNoL2Fy bS9tYWNoLW9yaW9uNXgvS2NvbmZpZwppbmRleCBjNjE5OTlkMDFjODAuLjc4YjhkNTlkN2NjMSAx MDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L0tjb25maWcKKysrIGIvYXJjaC9hcm0v bWFjaC1vcmlvbjV4L0tjb25maWcKQEAgLTM3LDYwICszNyw2IEBAIGNvbmZpZyBNQUNIX1JEODhG NTE4Ml9EVAogCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1cHBv cnQgdGhlIE1hcnZlbGwKIAkgIE9yaW9uLU5BUyAoODhGNTE4MikgUkQyLCBGbGF0dGVuZWQgRGV2 aWNlIFRyZWUuCiAKLWNvbmZpZyBNQUNIX0tVUk9CT1hfUFJPCi0JYm9vbCAiS3Vyb0JveCBQcm8g KERFUFJFQ0FURUQpIgotCXNlbGVjdCBJMkNfQk9BUkRJTkZPIGlmIEkyQwotCWRlcGVuZHMgb24g QVRBR1MKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8g c3VwcG9ydCB0aGUKLQkgIEt1cm9Cb3ggUHJvIHBsYXRmb3JtLgotCi0JICBTdXBwb3J0IGZvciB0 aGlzIG1hY2hpbmUgd2lsbCBnbyBhd2F5IGluIGVhcmx5IDIwMjcsCi0JICB1bmxlc3MgaXQgZ2V0 cyBjb252ZXJ0ZWQgdG8gZGV2aWNlIHRyZWUuCi0KLWNvbmZpZyBNQUNIX0ROUzMyMwotCWJvb2wg IkQtTGluayBETlMtMzIzIChERVBSRUNBVEVEKSIKLQlzZWxlY3QgSTJDX0JPQVJESU5GTyBpZiBJ MkMKLQlkZXBlbmRzIG9uIEFUQUdTCi0JaGVscAotCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50 IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlCi0JICBELUxpbmsgRE5TLTMyMyBwbGF0Zm9ybS4K LQotCSAgU3VwcG9ydCBmb3IgdGhpcyBtYWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3 LAotCSAgdW5sZXNzIGl0IGdldHMgY29udmVydGVkIHRvIGRldmljZSB0cmVlLgotCi1jb25maWcg TUFDSF9UUzIwOQotCWJvb2wgIlFOQVAgVFMtMTA5L1RTLTIwOSAoREVQUkVDQVRFRCkiCi0JZGVw ZW5kcyBvbiBBVEFHUwotCWhlbHAKLQkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2FudCB5b3VyIGtl cm5lbCB0byBzdXBwb3J0IHRoZQotCSAgUU5BUCBUUy0xMDkvVFMtMjA5IHBsYXRmb3JtLgotCi0J ICBTdXBwb3J0IGZvciB0aGlzIG1hY2hpbmUgd2lsbCBnbyBhd2F5IGluIGVhcmx5IDIwMjcsCi0J ICB1bmxlc3MgaXQgZ2V0cyBjb252ZXJ0ZWQgdG8gZGV2aWNlIHRyZWUuCi0KLWNvbmZpZyBNQUNI X1RFUkFTVEFUSU9OX1BSTzIKLQlib29sICJCdWZmYWxvIFRlcmFzdGF0aW9uIFBybyBJSS9MaXZl IChERVBSRUNBVEVEKSIKLQlkZXBlbmRzIG9uIEFUQUdTCi0JaGVscAotCSAgU2F5ICdZJyBoZXJl IGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlCi0JICBCdWZmYWxvIFRlcmFz dGF0aW9uIFBybyBJSS9MaXZlIHBsYXRmb3JtLgotCi0JICBTdXBwb3J0IGZvciB0aGlzIG1hY2hp bmUgd2lsbCBnbyBhd2F5IGluIGVhcmx5IDIwMjcsCi0JICB1bmxlc3MgaXQgZ2V0cyBjb252ZXJ0 ZWQgdG8gZGV2aWNlIHRyZWUuCi0KLWNvbmZpZyBNQUNIX0xJTktTVEFUSU9OX1BSTwotCWJvb2wg IkJ1ZmZhbG8gTGlua3N0YXRpb24gUHJvL0xpdmUgKERFUFJFQ0FURUQpIgotCWRlcGVuZHMgb24g QVRBR1MKLQlzZWxlY3QgSTJDX0JPQVJESU5GTyBpZiBJMkMKLQloZWxwCi0JICBTYXkgJ1knIGhl cmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8gc3VwcG9ydCB0aGUKLQkgIEJ1ZmZhbG8gTGlu a3N0YXRpb24gUHJvL0xpdmUgcGxhdGZvcm0uIEJvdGggdjEgYW5kCi0JICB2MiBkZXZpY2VzIGFy ZSBzdXBwb3J0ZWQuCi0KLQkgIFN1cHBvcnQgZm9yIHRoaXMgbWFjaGluZSB3aWxsIGdvIGF3YXkg aW4gZWFybHkgMjAyNywKLQkgIHVubGVzcyBpdCBnZXRzIGNvbnZlcnRlZCB0byBkZXZpY2UgdHJl ZS4KLQogY29uZmlnIE1BQ0hfTElOS1NUQVRJT05fTUlOSQogCWJvb2wgIkJ1ZmZhbG8gTGlua3N0 YXRpb24gTWluaSAoRmxhdHRlbmVkIERldmljZSBUcmVlKSIKIAlzZWxlY3QgQVJDSF9PUklPTjVY X0RUCkBAIC05OCwzNiArNDQsNiBAQCBjb25maWcgTUFDSF9MSU5LU1RBVElPTl9NSU5JCiAJICBT YXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8gc3VwcG9ydCB0aGUKIAkgIEJ1 ZmZhbG8gTGlua3N0YXRpb24gTWluaSAoTFMtV1NHTCkgcGxhdGZvcm0uCiAKLWNvbmZpZyBNQUNI X1RTNDA5Ci0JYm9vbCAiUU5BUCBUUy00MDkgKERFUFJFQ0FURUQpIgotCWRlcGVuZHMgb24gQVRB R1MKLQloZWxwCi0JICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8gc3Vw cG9ydCB0aGUKLQkgIFFOQVAgVFMtNDA5IHBsYXRmb3JtLgotCi0JICBTdXBwb3J0IGZvciB0aGlz IG1hY2hpbmUgd2lsbCBnbyBhd2F5IGluIGVhcmx5IDIwMjcsCi0JICB1bmxlc3MgaXQgZ2V0cyBj b252ZXJ0ZWQgdG8gZGV2aWNlIHRyZWUuCi0KLWNvbmZpZyBNQUNIX1RTNzhYWAotCWJvb2wgIlRl Y2hub2xvZ2ljIFN5c3RlbXMgVFMtNzh4eCAoREVQUkVDQVRFRCkiCi0JZGVwZW5kcyBvbiBBVEFH UwotCWhlbHAKLQkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2FudCB5b3VyIGtlcm5lbCB0byBzdXBw b3J0IHRoZQotCSAgVGVjaG5vbG9naWMgU3lzdGVtcyBUUy03OHh4IHBsYXRmb3JtLgotCi0JICBT dXBwb3J0IGZvciB0aGlzIG1hY2hpbmUgd2lsbCBnbyBhd2F5IGluIGVhcmx5IDIwMjcsCi0JICB1 bmxlc3MgaXQgZ2V0cyBjb252ZXJ0ZWQgdG8gZGV2aWNlIHRyZWUuCi0KLWNvbmZpZyBNQUNIX01W MjEyMAotCWJvb2wgIkhQIE1lZGlhIFZhdWx0IG12MjEyMCAoREVQUkVDQVRFRCkiCi0JZGVwZW5k cyBvbiBBVEFHUwotCWhlbHAKLQkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2FudCB5b3VyIGtlcm5l bCB0byBzdXBwb3J0IHRoZQotCSAgSFAgTWVkaWEgVmF1bHQgbXYyMTIwIG9yIG12NTEwMC4KLQot CSAgU3VwcG9ydCBmb3IgdGhpcyBtYWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAot CSAgdW5sZXNzIGl0IGdldHMgY29udmVydGVkIHRvIGRldmljZSB0cmVlLgotCiBjb25maWcgTUFD SF9EMk5FVF9EVAogCWJvb2wgIkxhQ2llIGQyIE5ldHdvcmsgLyBCaWcgRGlzayBOZXR3b3JrIChG bGF0dGVuZWQgRGV2aWNlIFRyZWUpIgogCXNlbGVjdCBBUkNIX09SSU9ONVhfRFQKQEAgLTEzNSwx NyArNTEsNiBAQCBjb25maWcgTUFDSF9EMk5FVF9EVAogCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3 YW50IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlCiAJICBMYUNpZSBkMiBOZXR3b3JrIE5BUy4K IAotY29uZmlnIE1BQ0hfTkVUMkJJRwotCWJvb2wgIkxhQ2llIDJCaWcgTmV0d29yayAoREVQUkVD QVRFRCkiCi0JZGVwZW5kcyBvbiBBVEFHUwotCXNlbGVjdCBJMkNfQk9BUkRJTkZPIGlmIEkyQwot CWhlbHAKLQkgIFNheSAnWScgaGVyZSBpZiB5b3Ugd2FudCB5b3VyIGtlcm5lbCB0byBzdXBwb3J0 IHRoZQotCSAgTGFDaWUgMkJpZyBOZXR3b3JrIE5BUy4KLQotCSAgU3VwcG9ydCBmb3IgdGhpcyBt YWNoaW5lIHdpbGwgZ28gYXdheSBpbiBlYXJseSAyMDI3LAotCSAgdW5sZXNzIGl0IGdldHMgY29u dmVydGVkIHRvIGRldmljZSB0cmVlLgotCiBjb25maWcgTUFDSF9NU1MyX0RUCiAJYm9vbCAiTWF4 dG9yIFNoYXJlZCBTdG9yYWdlIElJIChGbGF0dGVuZWQgRGV2aWNlIFRyZWUpIgogCXNlbGVjdCBB UkNIX09SSU9ONVhfRFQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9NYWtlZmls ZSBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9NYWtlZmlsZQppbmRleCA2ZjU0ZDdmZWYyN2EuLmE4 MDkzMjIxMDAzMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L01ha2VmaWxlCisr KyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9NYWtlZmlsZQpAQCAtMSwxNiArMSw3IEBACiAjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBjY2ZsYWdzLXkgOj0gLUkkKHNyY3RyZWUp L2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZQogCi1vYmoteQkJCQkrPSBjb21tb24ubyBwY2ku byBpcnEubyBtcHAubwotb2JqLSQoQ09ORklHX01BQ0hfS1VST0JPWF9QUk8pCSs9IGt1cm9ib3hf cHJvLXNldHVwLm8KLW9iai0kKENPTkZJR19NQUNIX1RFUkFTVEFUSU9OX1BSTzIpCSs9IHRlcmFz dGF0aW9uX3BybzItc2V0dXAubwotb2JqLSQoQ09ORklHX01BQ0hfTElOS1NUQVRJT05fUFJPKSAr PSBrdXJvYm94X3Byby1zZXR1cC5vCi1vYmotJChDT05GSUdfTUFDSF9ETlMzMjMpCSs9IGRuczMy My1zZXR1cC5vCi1vYmotJChDT05GSUdfTUFDSF9UUzIwOSkJKz0gdHMyMDktc2V0dXAubyB0c3gw OS1jb21tb24ubwotb2JqLSQoQ09ORklHX01BQ0hfVFM0MDkpCSs9IHRzNDA5LXNldHVwLm8gdHN4 MDktY29tbW9uLm8KLW9iai0kKENPTkZJR19NQUNIX1RTNzhYWCkJKz0gdHM3OHh4LXNldHVwLm8K LW9iai0kKENPTkZJR19NQUNIX01WMjEyMCkJKz0gbXYyMTIwLXNldHVwLm8KLW9iai0kKENPTkZJ R19NQUNIX05FVDJCSUcpCSs9IG5ldDJiaWctc2V0dXAubworb2JqLXkJCQkJKz0gY29tbW9uLm8g cGNpLm8KIAogb2JqLSQoQ09ORklHX0FSQ0hfT1JJT041WF9EVCkJCSs9IGJvYXJkLWR0Lm8KIG9i ai0kKENPTkZJR19NQUNIX0QyTkVUX0RUKQkrPSBib2FyZC1kMm5ldC5vCmRpZmYgLS1naXQgYS9h cmNoL2FybS9tYWNoLW9yaW9uNXgvYm9hcmQtZDJuZXQuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241 eC9ib2FyZC1kMm5ldC5jCmluZGV4IDdjZjA5ZGE5ZDllNy4uMGZlNmZkMWZkMGQ5IDEwMDY0NAot LS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYm9hcmQtZDJuZXQuYworKysgYi9hcmNoL2FybS9t YWNoLW9yaW9uNXgvYm9hcmQtZDJuZXQuYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgPGFz bS9tYWNoLXR5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgogI2luY2x1ZGUgPGFz bS9tYWNoL3BjaS5oPgotI2luY2x1ZGUgPHBsYXQvb3Jpb24tZ3Bpby5oPgogI2luY2x1ZGUgImNv bW1vbi5oIgogI2luY2x1ZGUgIm9yaW9uNXguaCIKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFj aC1vcmlvbjV4L2JvYXJkLWR0LmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYm9hcmQtZHQuYwpp bmRleCBiZTQ3NDkyYzY2NDAuLjVjY2ZhMDQ3NzQ5OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFj aC1vcmlvbjV4L2JvYXJkLWR0LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2JvYXJkLWR0 LmMKQEAgLTE3LDggKzE3LDYgQEAKICNpbmNsdWRlIDxhc20vc3lzdGVtX21pc2MuaD4KICNpbmNs dWRlIDxhc20vbWFjaC9hcmNoLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+Ci0jaW5jbHVk ZSA8cGxhdC9pcnEuaD4KLSNpbmNsdWRlIDxwbGF0L3RpbWUuaD4KICNpbmNsdWRlICJvcmlvbjV4 LmgiCiAjaW5jbHVkZSAiYnJpZGdlLXJlZ3MuaCIKICNpbmNsdWRlICJjb21tb24uaCIKQEAgLTM5 LDcgKzM3LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG9yaW9uNXhfZHRfaW5pdCh2b2lkKQogCXUz MiBkZXYsIHJldjsKIAogCW9yaW9uNXhfaWQoJmRldiwgJnJldiwgJmRldl9uYW1lKTsKLQlwcmlu dGsoS0VSTl9JTkZPICJPcmlvbiBJRDogJXMuIFRDTEs9JWQuXG4iLCBkZXZfbmFtZSwgb3Jpb241 eF90Y2xrKTsKKwlwcmludGsoS0VSTl9JTkZPICJPcmlvbiBJRDogJXMuXG4iLCBkZXZfbmFtZSk7 CiAKIAlCVUdfT04obXZlYnVfbWJ1c19kdF9pbml0KGZhbHNlKSk7CiAKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL21hY2gtb3Jpb241eC9jb21tb24uYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9jb21t b24uYwppbmRleCBkZjA1NmQ2MGI2NzUuLjA1MGE5NWFmMmJiZiAxMDA2NDQKLS0tIGEvYXJjaC9h cm0vbWFjaC1vcmlvbjV4L2NvbW1vbi5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9jb21t b24uYwpAQCAtNywyNyArNywxNiBAQAogICogTWFpbnRhaW5lcjogVHphY2hpIFBlcmVsc3RlaW4g PHR6YWNoaUBtYXJ2ZWxsLmNvbT4KICAqLwogCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVk ZSA8bGludXgvaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNs dWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgotI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF84MjUwLmg+ Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4eF9pMmMuaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFfcGxh dGZvcm0uaD4KLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L2Nsay1w cm92aWRlci5oPgotI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgorI2luY2x1ZGUgPGxpbnV4L21idXMu aD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgotI2luY2x1 ZGUgPGFzbS9zeXN0ZW1fbWlzYy5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KICNpbmNs dWRlIDxhc20vbWFjaC9tYXAuaD4KICNpbmNsdWRlIDxhc20vbWFjaC90aW1lLmg+Ci0jaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGF0YS9tdGQtb3Jpb25fbmFuZC5oPgotI2luY2x1ZGUgPGxpbnV4 L3BsYXRmb3JtX2RhdGEvdXNiLWVoY2ktb3Jpb24uaD4KLSNpbmNsdWRlIDxwbGF0L3RpbWUuaD4K LSNpbmNsdWRlIDxwbGF0L2NvbW1vbi5oPgogCiAjaW5jbHVkZSAiYnJpZGdlLXJlZ3MuaCIKICNp bmNsdWRlICJjb21tb24uaCIKQEAgLTU1LDE2NyArNDQsNiBAQCB2b2lkIF9faW5pdCBvcmlvbjV4 X21hcF9pbyh2b2lkKQogCWlvdGFibGVfaW5pdChvcmlvbjV4X2lvX2Rlc2MsIEFSUkFZX1NJWkUo b3Jpb241eF9pb19kZXNjKSk7CiB9CiAKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDTEsg dHJlZQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IGNsayAqdGNsazsKLQot dm9pZCBfX2luaXQgY2xrX2luaXQodm9pZCkKLXsKLQl0Y2xrID0gY2xrX3JlZ2lzdGVyX2ZpeGVk X3JhdGUoTlVMTCwgInRjbGsiLCBOVUxMLCAwLCBvcmlvbjV4X3RjbGspOwotCi0Jb3Jpb25fY2xr ZGV2X2luaXQodGNsayk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRUhDSTAKLSAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgb3Jpb241eF9laGNpMF9pbml0KHZvaWQp Ci17Ci0Jb3Jpb25fZWhjaV9pbml0KE9SSU9ONVhfVVNCMF9QSFlTX0JBU0UsIElSUV9PUklPTjVY X1VTQjBfQ1RSTCwKLQkJCUVIQ0lfUEhZX09SSU9OKTsKLX0KLQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIEVIQ0kxCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG9yaW9u NXhfZWhjaTFfaW5pdCh2b2lkKQotewotCW9yaW9uX2VoY2lfMV9pbml0KE9SSU9ONVhfVVNCMV9Q SFlTX0JBU0UsIElSUV9PUklPTjVYX1VTQjFfQ1RSTCk7Ci19Ci0KLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0gKiBHRTAwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG9yaW9u NXhfZXRoX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRhKQot ewotCW9yaW9uX2dlMDBfaW5pdChldGhfZGF0YSwKLQkJCU9SSU9ONVhfRVRIX1BIWVNfQkFTRSwg SVJRX09SSU9ONVhfRVRIX1NVTSwKLQkJCUlSUV9PUklPTjVYX0VUSF9FUlIsCi0JCQlNVjY0M1hY X1RYX0NTVU1fREVGQVVMVF9MSU1JVCk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0g KiBJMkMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBfX2luaXQgb3Jpb241eF9pMmNfaW5p dCh2b2lkKQotewotCW9yaW9uX2kyY19pbml0KEkyQ19QSFlTX0JBU0UsIElSUV9PUklPTjVYX0ky QywgOCk7Ci0KLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNBVEEKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotdm9pZCBfX2luaXQgb3Jpb241eF9zYXRhX2luaXQoc3RydWN0IG12X3Nh dGFfcGxhdGZvcm1fZGF0YSAqc2F0YV9kYXRhKQotewotCW9yaW9uX3NhdGFfaW5pdChzYXRhX2Rh dGEsIE9SSU9ONVhfU0FUQV9QSFlTX0JBU0UsIElSUV9PUklPTjVYX1NBVEEpOwotfQotCi0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogU1BJCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQg X19pbml0IG9yaW9uNXhfc3BpX2luaXQodm9pZCkKLXsKLQlvcmlvbl9zcGlfaW5pdChTUElfUEhZ U19CQVNFKTsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFVBUlQwCi0gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG9yaW9uNXhfdWFydDBfaW5pdCh2b2lkKQotewot CW9yaW9uX3VhcnQwX2luaXQoVUFSVDBfVklSVF9CQVNFLCBVQVJUMF9QSFlTX0JBU0UsCi0JCQkg SVJRX09SSU9ONVhfVUFSVDAsIHRjbGspOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAq IFVBUlQxCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgX19pbml0IG9yaW9uNXhfdWFydDFf aW5pdCh2b2lkKQotewotCW9yaW9uX3VhcnQxX2luaXQoVUFSVDFfVklSVF9CQVNFLCBVQVJUMV9Q SFlTX0JBU0UsCi0JCQkgSVJRX09SSU9ONVhfVUFSVDEsIHRjbGspOwotfQotCi0vKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKLSAqIFhPUiBlbmdpbmUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCBf X2luaXQgb3Jpb241eF94b3JfaW5pdCh2b2lkKQotewotCW9yaW9uX3hvcjBfaW5pdChPUklPTjVY X1hPUl9QSFlTX0JBU0UsCi0JCQlPUklPTjVYX1hPUl9QSFlTX0JBU0UgKyAweDIwMCwKLQkJCUlS UV9PUklPTjVYX1hPUjAsIElSUV9PUklPTjVYX1hPUjEpOwotfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIENyeXB0b2dyYXBoaWMgRW5naW5lcyBhbmQgU2VjdXJpdHkgQWNjZWxlcmF0b3Ig KENFU0EpCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB2b2lkIF9faW5pdCBvcmlvbjV4 X2NyeXB0b19pbml0KHZvaWQpCi17Ci0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKE9SSU9O X01CVVNfU1JBTV9UQVJHRVQsCi0JCQkJICAgIE9SSU9OX01CVVNfU1JBTV9BVFRSLAotCQkJCSAg ICBPUklPTjVYX1NSQU1fUEhZU19CQVNFLAotCQkJCSAgICBPUklPTjVYX1NSQU1fU0laRSk7Ci0J b3Jpb25fY3J5cHRvX2luaXQoT1JJT041WF9DUllQVE9fUEhZU19CQVNFLCBPUklPTjVYX1NSQU1f UEhZU19CQVNFLAotCQkJICBTWl84SywgSVJRX09SSU9ONVhfQ0VTQSk7Ci19Ci0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogV2F0Y2hkb2cKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGlj IHN0cnVjdCByZXNvdXJjZSBvcmlvbl93ZHRfcmVzb3VyY2VbXSA9IHsKLQkJREVGSU5FX1JFU19N RU0oVElNRVJfUEhZU19CQVNFLCAweDA0KSwKLQkJREVGSU5FX1JFU19NRU0oUlNUT1VUbl9NQVNL X1BIWVMsIDB4MDQpLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25f d2R0X2RldmljZSA9IHsKLQkubmFtZQkJPSAib3Jpb25fd2R0IiwKLQkuaWQJCT0gLTEsCi0JLm51 bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKG9yaW9uX3dkdF9yZXNvdXJjZSksCi0JLnJlc291cmNl CT0gb3Jpb25fd2R0X3Jlc291cmNlLAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IG9yaW9uNXhf d2R0X2luaXQodm9pZCkKLXsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9yaW9uX3dkdF9k ZXZpY2UpOwotfQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVGltZSBoYW5kbGluZwot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCi12b2lkIF9faW5pdCBvcmlvbjV4X2luaXRfZWFybHkodm9p ZCkKLXsKLQl1MzIgcmV2LCBkZXY7Ci0JY29uc3QgY2hhciAqbWJ1c19zb2NfbmFtZTsKLQotCW9y aW9uX3RpbWVfc2V0X2Jhc2UoVElNRVJfVklSVF9CQVNFKTsKLQotCS8qIEluaXRpYWxpemUgdGhl IE1CVVMgZHJpdmVyICovCi0Jb3Jpb241eF9wY2llX2lkKCZkZXYsICZyZXYpOwotCWlmIChkZXYg PT0gTVY4OEY1MjgxX0RFVl9JRCkKLQkJbWJ1c19zb2NfbmFtZSA9ICJtYXJ2ZWxsLG9yaW9uNXgt ODhmNTI4MS1tYnVzIjsKLQllbHNlIGlmIChkZXYgPT0gTVY4OEY1MTgyX0RFVl9JRCkKLQkJbWJ1 c19zb2NfbmFtZSA9ICJtYXJ2ZWxsLG9yaW9uNXgtODhmNTE4Mi1tYnVzIjsKLQllbHNlIGlmIChk ZXYgPT0gTVY4OEY1MTgxX0RFVl9JRCkKLQkJbWJ1c19zb2NfbmFtZSA9ICJtYXJ2ZWxsLG9yaW9u NXgtODhmNTE4MS1tYnVzIjsKLQllbHNlIGlmIChkZXYgPT0gTVY4OEY2MTgzX0RFVl9JRCkKLQkJ bWJ1c19zb2NfbmFtZSA9ICJtYXJ2ZWxsLG9yaW9uNXgtODhmNjE4My1tYnVzIjsKLQllbHNlCi0J CW1idXNfc29jX25hbWUgPSBOVUxMOwotCW12ZWJ1X21idXNfaW5pdChtYnVzX3NvY19uYW1lLCBP UklPTjVYX0JSSURHRV9XSU5TX0JBU0UsCi0JCQlPUklPTjVYX0JSSURHRV9XSU5TX1NaLAotCQkJ T1JJT041WF9ERFJfV0lOU19CQVNFLCBPUklPTjVYX0REUl9XSU5TX1NaKTsKLX0KLQogdm9pZCBv cmlvbjV4X3NldHVwX3dpbnModm9pZCkKIHsKIAkvKgpAQCAtMjQyLDI5ICs3MCw2IEBAIHZvaWQg b3Jpb241eF9zZXR1cF93aW5zKHZvaWQpCiAJCQkJICAgIE9SSU9ONVhfUENJX01FTV9TSVpFKTsK IH0KIAotaW50IG9yaW9uNXhfdGNsazsKLQotc3RhdGljIGludCBfX2luaXQgb3Jpb241eF9maW5k X3RjbGsodm9pZCkKLXsKLQl1MzIgZGV2LCByZXY7Ci0KLQlvcmlvbjV4X3BjaWVfaWQoJmRldiwg JnJldik7Ci0JaWYgKGRldiA9PSBNVjg4RjYxODNfREVWX0lEICYmCi0JICAgIChyZWFkbChNUFBf UkVTRVRfU0FNUExFKSAmIDB4MDAwMDAyMDApID09IDApCi0JCXJldHVybiAxMzMzMzMzMzM7Ci0K LQlyZXR1cm4gMTY2NjY2NjY3OwotfQotCi12b2lkIF9faW5pdCBvcmlvbjV4X3RpbWVyX2luaXQo dm9pZCkKLXsKLQlvcmlvbjV4X3RjbGsgPSBvcmlvbjV4X2ZpbmRfdGNsaygpOwotCi0Jb3Jpb25f dGltZV9pbml0KE9SSU9ONVhfQlJJREdFX1ZJUlRfQkFTRSwgQlJJREdFX0lOVF9USU1FUjFfQ0xS LAotCQkJSVJRX09SSU9ONVhfQlJJREdFLCBvcmlvbjV4X3RjbGspOwotfQotCi0KIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogICogR2VuZXJhbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0zMTAs NDUgKzExNSw2IEBAIHZvaWQgX19pbml0IG9yaW9uNXhfaWQodTMyICpkZXYsIHUzMiAqcmV2LCBj aGFyICoqZGV2X25hbWUpCiAJfQogfQogCi12b2lkIF9faW5pdCBvcmlvbjV4X2luaXQodm9pZCkK LXsKLQljaGFyICpkZXZfbmFtZTsKLQl1MzIgZGV2LCByZXY7Ci0KLQlvcmlvbjV4X2lkKCZkZXYs ICZyZXYsICZkZXZfbmFtZSk7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiT3Jpb24gSUQ6ICVzLiBUQ0xL PSVkLlxuIiwgZGV2X25hbWUsIG9yaW9uNXhfdGNsayk7Ci0KLQkvKgotCSAqIFNldHVwIE9yaW9u IGFkZHJlc3MgbWFwCi0JICovCi0Jb3Jpb241eF9zZXR1cF93aW5zKCk7Ci0KLQkvKiBTZXR1cCBy b290IG9mIGNsayB0cmVlICovCi0JY2xrX2luaXQoKTsKLQotCS8qCi0JICogRG9uJ3QgaXNzdWUg IldhaXQgZm9yIEludGVycnVwdCIgaW5zdHJ1Y3Rpb24gaWYgd2UgYXJlCi0JICogcnVubmluZyBv biBEMCA1MjgxIHNpbGljb24uCi0JICovCi0JaWYgKGRldiA9PSBNVjg4RjUyODFfREVWX0lEICYm IHJldiA9PSBNVjg4RjUyODFfUkVWX0QwKSB7Ci0JCXByaW50ayhLRVJOX0lORk8gIk9yaW9uOiBB cHBseWluZyA1MjgxIEQwIFdGSSB3b3JrYXJvdW5kLlxuIik7Ci0JCWNwdV9pZGxlX3BvbGxfY3Ry bCh0cnVlKTsKLQl9Ci0KLQkvKgotCSAqIFRoZSA1MDgyLzUxODFsLzUxODIvNjA4Mi82MDgybC82 MTgzIGhhdmUgY3J5cHRvCi0JICogd2hpbGUgNTE4MG4vNTE4MS81MjgxIGRvbid0IGhhdmUgY3J5 cHRvLgotCSAqLwotCWlmICgoZGV2ID09IE1WODhGNTE4MV9ERVZfSUQgJiYgcmV2ID49IE1WODhG NTE4MUxfUkVWX0EwKSB8fAotCSAgICBkZXYgPT0gTVY4OEY1MTgyX0RFVl9JRCB8fCBkZXYgPT0g TVY4OEY2MTgzX0RFVl9JRCkKLQkJb3Jpb241eF9jcnlwdG9faW5pdCgpOwotCi0JLyoKLQkgKiBS ZWdpc3RlciB3YXRjaGRvZyBkcml2ZXIKLQkgKi8KLQlvcmlvbjV4X3dkdF9pbml0KCk7Ci19Ci0K IHZvaWQgb3Jpb241eF9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9kZSwgY29uc3QgY2hhciAq Y21kKQogewogCS8qCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvY29tbW9uLmgg Yi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvY29tbW9uLmgKaW5kZXggOGRmNzBlMjNhYTgyLi40ZGM2 YzU5YmRlOTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9jb21tb24uaAorKysg Yi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvY29tbW9uLmgKQEAgLTQsOSArNCw2IEBACiAKICNpbmNs dWRlIDxsaW51eC9yZWJvb3QuaD4KIAotc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGE7 Ci1zdHJ1Y3QgbXZfc2F0YV9wbGF0Zm9ybV9kYXRhOwotCiAjZGVmaW5lIE9SSU9OX01CVVNfUENJ RV9NRU1fVEFSR0VUICAgIDB4MDQKICNkZWZpbmUgT1JJT05fTUJVU19QQ0lFX01FTV9BVFRSICAg ICAgMHg1OQogI2RlZmluZSBPUklPTl9NQlVTX1BDSUVfSU9fVEFSR0VUICAgICAweDA0CkBAIC0z MiwyMSArMjksOSBAQCB2b2lkIG9yaW9uNXhfaW5pdF9lYXJseSh2b2lkKTsKIHZvaWQgb3Jpb241 eF9pbml0X2lycSh2b2lkKTsKIHZvaWQgb3Jpb241eF9pbml0KHZvaWQpOwogdm9pZCBvcmlvbjV4 X2lkKHUzMiAqZGV2LCB1MzIgKnJldiwgY2hhciAqKmRldl9uYW1lKTsKLXZvaWQgY2xrX2luaXQo dm9pZCk7Ci1leHRlcm4gaW50IG9yaW9uNXhfdGNsazsKLWV4dGVybiB2b2lkIG9yaW9uNXhfdGlt ZXJfaW5pdCh2b2lkKTsKIAogdm9pZCBvcmlvbjV4X3NldHVwX3dpbnModm9pZCk7CiAKLXZvaWQg b3Jpb241eF9laGNpMF9pbml0KHZvaWQpOwotdm9pZCBvcmlvbjV4X2VoY2kxX2luaXQodm9pZCk7 Ci12b2lkIG9yaW9uNXhfZXRoX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEg KmV0aF9kYXRhKTsKLXZvaWQgb3Jpb241eF9pMmNfaW5pdCh2b2lkKTsKLXZvaWQgb3Jpb241eF9z YXRhX2luaXQoc3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSAqc2F0YV9kYXRhKTsKLXZvaWQg b3Jpb241eF9zcGlfaW5pdCh2b2lkKTsKLXZvaWQgb3Jpb241eF91YXJ0MF9pbml0KHZvaWQpOwot dm9pZCBvcmlvbjV4X3VhcnQxX2luaXQodm9pZCk7Ci12b2lkIG9yaW9uNXhfeG9yX2luaXQodm9p ZCk7CiB2b2lkIG9yaW9uNXhfcmVzdGFydChlbnVtIHJlYm9vdF9tb2RlLCBjb25zdCBjaGFyICop OwogCiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5j IGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2RuczMyMy1zZXR1cC5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA3YjgxYjA4YjBkZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9t YWNoLW9yaW9uNXgvZG5zMzIzLXNldHVwLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3NTcgKzAsMCBA QAotLyoKLSAqIGFyY2gvYXJtL21hY2gtb3Jpb241eC9kbnMzMjMtc2V0dXAuYwotICoKLSAqIENv cHlyaWdodCAoQykgMjAwNyBIZXJiZXJ0IFZhbGVyaW8gUmllZGVsIDxodnJAZ251Lm9yZz4KLSAq Ci0gKiBTdXBwb3J0IGZvciBIVyBSZXYgQzE6Ci0gKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEJl bmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAqCi0gKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZQotICogTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKi8KLSNpbmNsdWRlIDxsaW51eC9n cGlvL2xlZ2FjeS5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8vbWFjaGluZS5oPgotI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51 eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUg PGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L2lycS5oPgotI2luY2x1ZGUgPGxpbnV4L210 ZC9waHlzbWFwLmg+Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4eF9ldGguaD4KLSNpbmNsdWRlIDxs aW51eC9sZWRzLmg+Ci0jaW5jbHVkZSA8bGludXgvZ3Bpb19rZXlzLmg+Ci0jaW5jbHVkZSA8bGlu dXgvaW5wdXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFf cGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxsaW51eC9waHkuaD4KLSNpbmNsdWRlIDxsaW51eC9tYXJ2 ZWxsX3BoeS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL21h Y2gvYXJjaC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3BjaS5oPgotI2luY2x1ZGUgPGFzbS9zeXN0 ZW1faW5mby5oPgotI2luY2x1ZGUgPHBsYXQvb3Jpb24tZ3Bpby5oPgotI2luY2x1ZGUgIm9yaW9u NXguaCIKLSNpbmNsdWRlICJjb21tb24uaCIKLSNpbmNsdWRlICJtcHAuaCIKLQotLyogUmV2IEEx IGFuZCBCMSAqLwotI2RlZmluZSBETlMzMjNfR1BJT19MRURfUklHSFRfQU1CRVIJMQotI2RlZmlu ZSBETlMzMjNfR1BJT19MRURfTEVGVF9BTUJFUgkyCi0jZGVmaW5lIEROUzMyM19HUElPX1NZU1RF TV9VUAkJMwotI2RlZmluZSBETlMzMjNfR1BJT19MRURfUE9XRVIxCQk0Ci0jZGVmaW5lIEROUzMy M19HUElPX0xFRF9QT1dFUjIJCTUKLSNkZWZpbmUgRE5TMzIzX0dQSU9fT1ZFUlRFTVAJCTYKLSNk ZWZpbmUgRE5TMzIzX0dQSU9fUlRDCQkJNwotI2RlZmluZSBETlMzMjNfR1BJT19QT1dFUl9PRkYJ CTgKLSNkZWZpbmUgRE5TMzIzX0dQSU9fS0VZX1BPV0VSCQk5Ci0jZGVmaW5lIEROUzMyM19HUElP X0tFWV9SRVNFVAkJMTAKLQotLyogUmV2IEMxICovCi0jZGVmaW5lIEROUzMyM0NfR1BJT19LRVlf UE9XRVIJCTEKLSNkZWZpbmUgRE5TMzIzQ19HUElPX1BPV0VSX09GRgkJMgotI2RlZmluZSBETlMz MjNDX0dQSU9fTEVEX1JJR0hUX0FNQkVSCTgKLSNkZWZpbmUgRE5TMzIzQ19HUElPX0xFRF9MRUZU X0FNQkVSCTkKLSNkZWZpbmUgRE5TMzIzQ19HUElPX0xFRF9QT1dFUgkJMTcKLSNkZWZpbmUgRE5T MzIzQ19HUElPX0ZBTl9CSVQxCQkxOAotI2RlZmluZSBETlMzMjNDX0dQSU9fRkFOX0JJVDAJCTE5 Ci0KLS8qIEV4cG9zZWQgdG8gdXNlcnNwYWNlLCBkbyBub3QgY2hhbmdlICovCi1lbnVtIHsKLQlE TlMzMjNfUkVWX0ExLAkvKiAwICovCi0JRE5TMzIzX1JFVl9CMSwJLyogMSAqLwotCUROUzMyM19S RVZfQzEsCS8qIDIgKi8KLX07Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFBDSSBzZXR1 cAotICovCi0KLXN0YXRpYyBpbnQgX19pbml0IGRuczMyM19wY2lfbWFwX2lycShjb25zdCBzdHJ1 Y3QgcGNpX2RldiAqZGV2LCB1OCBzbG90LCB1OCBwaW4pCi17Ci0JaW50IGlycTsKLQotCS8qCi0J ICogQ2hlY2sgZm9yIGRldmljZXMgd2l0aCBoYXJkLXdpcmVkIElSUXMuCi0JICovCi0JaXJxID0g b3Jpb241eF9wY2lfbWFwX2lycShkZXYsIHNsb3QsIHBpbik7Ci0JaWYgKGlycSAhPSAtMSkKLQkJ cmV0dXJuIGlycTsKLQotCXJldHVybiAtMTsKLX0KLQotc3RhdGljIHN0cnVjdCBod19wY2kgZG5z MzIzX3BjaSBfX2luaXRkYXRhID0gewotCS5ucl9jb250cm9sbGVycyA9IDIsCi0JLnNldHVwCQk9 IG9yaW9uNXhfcGNpX3N5c19zZXR1cCwKLQkuc2NhbgkJPSBvcmlvbjV4X3BjaV9zeXNfc2Nhbl9i dXMsCi0JLm1hcF9pcnEJPSBkbnMzMjNfcGNpX21hcF9pcnEsCi19OwotCi1zdGF0aWMgaW50IF9f aW5pdCBkbnMzMjNfcGNpX2luaXQodm9pZCkKLXsKLQkvKiBSZXYgQjEgYW5kIEMxIGRvZXNuJ3Qg cmVhbGx5IHVzZSBpdHMgUENJIGJ1cywgYW5kIGluaXRpYWxpc2luZyBQQ0kKLQkgKiBnZXRzIGlu IHRoZSB3YXkgb2YgaW5pdGlhbGlzaW5nIHRoZSBTQVRBIGNvbnRyb2xsZXIuCi0JICovCi0JaWYg KG1hY2hpbmVfaXNfZG5zMzIzKCkgJiYgc3lzdGVtX3JldiA9PSBETlMzMjNfUkVWX0ExKQotCQlw Y2lfY29tbW9uX2luaXQoJmRuczMyM19wY2kpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN1YnN5c19p bml0Y2FsbChkbnMzMjNfcGNpX2luaXQpOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogOE1p QiBOT1IgZmxhc2ggKFNwYW5zaW9uIFMyOUdMMDY0TTkwVEZJUjQpCi0gKgotICogTGF5b3V0IGFz IHVzZWQgYnkgRC1MaW5rOgotICogIDB4MDAwMDAwMDAtMHgwMDAxMDAwMCA6ICJNVEQxIgotICog IDB4MDAwMTAwMDAtMHgwMDAyMDAwMCA6ICJNVEQyIgotICogIDB4MDAwMjAwMDAtMHgwMDFhMDAw MCA6ICJMaW51eCBLZXJuZWwiCi0gKiAgMHgwMDFhMDAwMC0weDAwN2QwMDAwIDogIkZpbGUgU3lz dGVtIgotICogIDB4MDA3ZDAwMDAtMHgwMDgwMDAwMCA6ICJ1LWJvb3QiCi0gKi8KLQotI2RlZmlu ZSBETlMzMjNfTk9SX0JPT1RfQkFTRSAweGY0MDAwMDAwCi0jZGVmaW5lIEROUzMyM19OT1JfQk9P VF9TSVpFIFNaXzhNCi0KLXN0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBkbnMzMjNfcGFydGl0 aW9uc1tdID0gewotCXsKLQkJLm5hbWUJPSAiTVREMSIsCi0JCS5zaXplCT0gMHgwMDAxMDAwMCwK LQkJLm9mZnNldAk9IDAsCi0JfSwgewotCQkubmFtZQk9ICJNVEQyIiwKLQkJLnNpemUJPSAweDAw MDEwMDAwLAotCQkub2Zmc2V0ID0gMHgwMDAxMDAwMCwKLQl9LCB7Ci0JCS5uYW1lCT0gIkxpbnV4 IEtlcm5lbCIsCi0JCS5zaXplCT0gMHgwMDE4MDAwMCwKLQkJLm9mZnNldAk9IDB4MDAwMjAwMDAs Ci0JfSwgewotCQkubmFtZQk9ICJGaWxlIFN5c3RlbSIsCi0JCS5zaXplCT0gMHgwMDYzMDAwMCwK LQkJLm9mZnNldAk9IDB4MDAxQTAwMDAsCi0JfSwgewotCQkubmFtZQk9ICJ1LWJvb3QiLAotCQku c2l6ZQk9IDB4MDAwMzAwMDAsCi0JCS5vZmZzZXQJPSAweDAwN2QwMDAwLAotCX0sCi19OwotCi1z dGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSBkbnMzMjNfbm9yX2ZsYXNoX2RhdGEgPSB7 Ci0JLndpZHRoCQk9IDEsCi0JLnBhcnRzCQk9IGRuczMyM19wYXJ0aXRpb25zLAotCS5ucl9wYXJ0 cwk9IEFSUkFZX1NJWkUoZG5zMzIzX3BhcnRpdGlvbnMpCi19OwotCi1zdGF0aWMgc3RydWN0IHJl c291cmNlIGRuczMyM19ub3JfZmxhc2hfcmVzb3VyY2UgPSB7Ci0JLmZsYWdzCQk9IElPUkVTT1VS Q0VfTUVNLAotCS5zdGFydAkJPSBETlMzMjNfTk9SX0JPT1RfQkFTRSwKLQkuZW5kCQk9IEROUzMy M19OT1JfQk9PVF9CQVNFICsgRE5TMzIzX05PUl9CT09UX1NJWkUgLSAxLAotfTsKLQotc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgZG5zMzIzX25vcl9mbGFzaCA9IHsKLQkubmFtZQkJPSAi cGh5c21hcC1mbGFzaCIsCi0JLmlkCQk9IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRh CT0gJmRuczMyM19ub3JfZmxhc2hfZGF0YSwKLQl9LAotCS5yZXNvdXJjZQk9ICZkbnMzMjNfbm9y X2ZsYXNoX3Jlc291cmNlLAotCS5udW1fcmVzb3VyY2VzCT0gMSwKLX07Ci0KLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCi0gKiBFdGhlcm5ldAotICovCi0KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhf cGxhdGZvcm1fZGF0YSBkbnMzMjNfZXRoX2RhdGEgPSB7Ci0JLnBoeV9hZGRyID0gTVY2NDNYWF9F VEhfUEhZX0FERFIoOCksCi19OwotCi0vKiBkbnMzMjNfcGFyc2VfaGV4XyooKSB0YWtlbiBmcm9t IHRzeDA5LWNvbW1vbi5jOyBzaG91bGQgYSBjb21tb24gY29weSBvZiB0aGVzZQotICogZnVuY3Rp b25zIGJlIGtlcHQgc29tZXdoZXJlPwotICovCi1zdGF0aWMgaW50IF9faW5pdCBkbnMzMjNfcGFy c2VfaGV4X25pYmJsZShjaGFyIG4pCi17Ci0JaWYgKG4gPj0gJzAnICYmIG4gPD0gJzknKQotCQly ZXR1cm4gbiAtICcwJzsKLQotCWlmIChuID49ICdBJyAmJiBuIDw9ICdGJykKLQkJcmV0dXJuIG4g LSAnQScgKyAxMDsKLQotCWlmIChuID49ICdhJyAmJiBuIDw9ICdmJykKLQkJcmV0dXJuIG4gLSAn YScgKyAxMDsKLQotCXJldHVybiAtMTsKLX0KLQotc3RhdGljIGludCBfX2luaXQgZG5zMzIzX3Bh cnNlX2hleF9ieXRlKGNvbnN0IGNoYXIgKmIpCi17Ci0JaW50IGhpOwotCWludCBsbzsKLQotCWhp ID0gZG5zMzIzX3BhcnNlX2hleF9uaWJibGUoYlswXSk7Ci0JbG8gPSBkbnMzMjNfcGFyc2VfaGV4 X25pYmJsZShiWzFdKTsKLQotCWlmIChoaSA8IDAgfHwgbG8gPCAwKQotCQlyZXR1cm4gLTE7Ci0K LQlyZXR1cm4gKGhpIDw8IDQpIHwgbG87Ci19Ci0KLXN0YXRpYyBpbnQgX19pbml0IGRuczMyM19y ZWFkX21hY19hZGRyKHZvaWQpCi17Ci0JdV9pbnQ4X3QgYWRkcls2XTsKLQlpbnQgaTsKLQljaGFy ICptYWNfcGFnZTsKLQotCS8qIE1BQyBhZGRyZXNzIGlzIHN0b3JlZCBhcyBhIHJlZ3VsYXIgb2wn IHN0cmluZyBpbiAvZGV2L210ZGJsb2NrNAotCSAqICgweDAwN2QwMDAwLTB4MDA4MDAwMDApIHN0 YXJ0aW5nIGF0IG9mZnNldCAxOTY0ODAgKDB4MmZmODApLgotCSAqLwotCW1hY19wYWdlID0gaW9y ZW1hcChETlMzMjNfTk9SX0JPT1RfQkFTRSArIDB4N2QwMDAwICsgMTk2NDgwLCAxMDI0KTsKLQlp ZiAoIW1hY19wYWdlKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCS8qIFNhbml0eSBjaGVjayB0aGUg c3RyaW5nIHdlJ3JlIGxvb2tpbmcgYXQgKi8KLQlmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0J CWlmICgqKG1hY19wYWdlICsgKGkgKiAzKSArIDIpICE9ICc6JykgewotCQkJZ290byBlcnJvcl9m YWlsOwotCQl9Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IDY7IGkrKykJewotCQlpbnQgYnl0ZTsK LQotCQlieXRlID0gZG5zMzIzX3BhcnNlX2hleF9ieXRlKG1hY19wYWdlICsgKGkgKiAzKSk7Ci0J CWlmIChieXRlIDwgMCkgewotCQkJZ290byBlcnJvcl9mYWlsOwotCQl9Ci0KLQkJYWRkcltpXSA9 IGJ5dGU7Ci0JfQotCi0JaW91bm1hcChtYWNfcGFnZSk7Ci0JcHJpbnRrKCJETlMtMzIzOiBGb3Vu ZCBldGhlcm5ldCBNQUMgYWRkcmVzczogJXBNXG4iLCBhZGRyKTsKLQotCW1lbWNweShkbnMzMjNf ZXRoX2RhdGEubWFjX2FkZHIsIGFkZHIsIDYpOwotCi0JcmV0dXJuIDA7Ci0KLWVycm9yX2ZhaWw6 Ci0JaW91bm1hcChtYWNfcGFnZSk7Ci0JcmV0dXJuIC1FSU5WQUw7Ci19Ci0KLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCi0gKiBHUElPIExFRHMgKHNpbXBsZSAtIGRvZXNuJ3QgdXNlIGhhcmR3YXJlIGJs aW5raW5nIHN1cHBvcnQpCi0gKi8KLQotc3RhdGljIHN0cnVjdCBncGlvX2xlZCBkbnMzMjNhYl9s ZWRzW10gPSB7Ci0JewotCQkubmFtZSA9ICJwb3dlcjpibHVlIiwKLQkJLmRlZmF1bHRfdHJpZ2dl ciA9ICJkZWZhdWx0LW9uIiwKLQl9LCB7Ci0JCS5uYW1lID0gInJpZ2h0OmFtYmVyIiwKLQl9LCB7 Ci0JCS5uYW1lID0gImxlZnQ6YW1iZXIiLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IGdwaW9k X2xvb2t1cF90YWJsZSBkbnMzMjNhMV9sZWRzX2dwaW9fdGFibGUgPSB7Ci0JLmRldl9pZCA9ICJs ZWRzLWdwaW8iLAotCS50YWJsZSA9IHsKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIs IEROUzMyM19HUElPX0xFRF9QT1dFUjIsIE5VTEwsCi0JCQkJMCwgR1BJT19BQ1RJVkVfTE9XKSwK LQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIEROUzMyM19HUElPX0xFRF9SSUdIVF9B TUJFUiwgTlVMTCwKLQkJCQkxLCBHUElPX0FDVElWRV9MT1cpLAotCQlHUElPX0xPT0tVUF9JRFgo Im9yaW9uX2dwaW8wIiwgRE5TMzIzX0dQSU9fTEVEX0xFRlRfQU1CRVIsIE5VTEwsCi0JCQkJMiwg R1BJT19BQ1RJVkVfTE9XKSwKLQkJeyB9LAotCX0sCi19OwotCi0vKiBCMSBpcyB0aGUgc2FtZSBi dXQgcG93ZXIgTEVEIGlzIGFjdGl2ZSBoaWdoICovCi1zdGF0aWMgc3RydWN0IGdwaW9kX2xvb2t1 cF90YWJsZSBkbnMzMjNiMV9sZWRzX2dwaW9fdGFibGUgPSB7Ci0JLmRldl9pZCA9ICJsZWRzLWdw aW8iLAotCS50YWJsZSA9IHsKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIEROUzMy M19HUElPX0xFRF9QT1dFUjIsIE5VTEwsCi0JCQkJMCwgR1BJT19BQ1RJVkVfSElHSCksCi0JCUdQ SU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCBETlMzMjNfR1BJT19MRURfUklHSFRfQU1CRVIs IE5VTEwsCi0JCQkJMSwgR1BJT19BQ1RJVkVfTE9XKSwKLQkJR1BJT19MT09LVVBfSURYKCJvcmlv bl9ncGlvMCIsIEROUzMyM19HUElPX0xFRF9MRUZUX0FNQkVSLCBOVUxMLAotCQkJCTIsIEdQSU9f QUNUSVZFX0xPVyksCi0JCXsgfSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvX2xlZCBk bnMzMjNjX2xlZHNbXSA9IHsKLQl7Ci0JCS5uYW1lID0gInBvd2VyOmJsdWUiLAotCQkuZGVmYXVs dF90cmlnZ2VyID0gInRpbWVyIiwKLQl9LCB7Ci0JCS5uYW1lID0gInJpZ2h0OmFtYmVyIiwKLQl9 LCB7Ci0JCS5uYW1lID0gImxlZnQ6YW1iZXIiLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IGdw aW9kX2xvb2t1cF90YWJsZSBkbnMzMjNjX2xlZHNfZ3Bpb190YWJsZSA9IHsKLQkuZGV2X2lkID0g ImxlZHMtZ3BpbyIsCi0JLnRhYmxlID0gewotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8w IiwgRE5TMzIzQ19HUElPX0xFRF9QT1dFUiwgTlVMTCwKLQkJCQkwLCBHUElPX0FDVElWRV9MT1cp LAotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgRE5TMzIzQ19HUElPX0xFRF9SSUdI VF9BTUJFUiwgTlVMTCwKLQkJCQkxLCBHUElPX0FDVElWRV9MT1cpLAotCQlHUElPX0xPT0tVUF9J RFgoIm9yaW9uX2dwaW8wIiwgRE5TMzIzQ19HUElPX0xFRF9MRUZUX0FNQkVSLCBOVUxMLAotCQkJ CTIsIEdQSU9fQUNUSVZFX0xPVyksCi0JCXsgfSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBn cGlvX2xlZF9wbGF0Zm9ybV9kYXRhIGRuczMyM2FiX2xlZF9kYXRhID0gewotCS5udW1fbGVkcwk9 IEFSUkFZX1NJWkUoZG5zMzIzYWJfbGVkcyksCi0JLmxlZHMJCT0gZG5zMzIzYWJfbGVkcywKLQku Z3Bpb19ibGlua19zZXQgPSBvcmlvbl9ncGlvX2xlZF9ibGlua19zZXQsCi19OwotCi1zdGF0aWMg c3RydWN0IGdwaW9fbGVkX3BsYXRmb3JtX2RhdGEgZG5zMzIzY19sZWRfZGF0YSA9IHsKLQkubnVt X2xlZHMJPSBBUlJBWV9TSVpFKGRuczMyM2NfbGVkcyksCi0JLmxlZHMJCT0gZG5zMzIzY19sZWRz LAotCS5ncGlvX2JsaW5rX3NldCA9IG9yaW9uX2dwaW9fbGVkX2JsaW5rX3NldCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGRuczMyM19ncGlvX2xlZHMgPSB7Ci0JLm5hbWUJ CT0gImxlZHMtZ3BpbyIsCi0JLmlkCQk9IC0xLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0 YQk9ICZkbnMzMjNhYl9sZWRfZGF0YSwKLQl9LAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LSAqIEdQSU8gQXR0YWNoZWQgS2V5cwotICovCi0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX2J1 dHRvbiBkbnMzMjNhYl9idXR0b25zW10gPSB7Ci0JewotCQkuY29kZQkJPSBLRVlfUkVTVEFSVCwK LQkJLmdwaW8JCT0gRE5TMzIzX0dQSU9fS0VZX1JFU0VULAotCQkuZGVzYwkJPSAiUmVzZXQgQnV0 dG9uIiwKLQkJLmFjdGl2ZV9sb3cJPSAxLAotCX0sIHsKLQkJLmNvZGUJCT0gS0VZX1BPV0VSLAot CQkuZ3BpbwkJPSBETlMzMjNfR1BJT19LRVlfUE9XRVIsCi0JCS5kZXNjCQk9ICJQb3dlciBCdXR0 b24iLAotCQkuYWN0aXZlX2xvdwk9IDEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19r ZXlzX3BsYXRmb3JtX2RhdGEgZG5zMzIzYWJfYnV0dG9uX2RhdGEgPSB7Ci0JLmJ1dHRvbnMJPSBk bnMzMjNhYl9idXR0b25zLAotCS5uYnV0dG9ucwk9IEFSUkFZX1NJWkUoZG5zMzIzYWJfYnV0dG9u cyksCi19OwotCi1zdGF0aWMgc3RydWN0IGdwaW9fa2V5c19idXR0b24gZG5zMzIzY19idXR0b25z W10gPSB7Ci0JewotCQkuY29kZQkJPSBLRVlfUE9XRVIsCi0JCS5ncGlvCQk9IEROUzMyM0NfR1BJ T19LRVlfUE9XRVIsCi0JCS5kZXNjCQk9ICJQb3dlciBCdXR0b24iLAotCQkuYWN0aXZlX2xvdwk9 IDEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgZG5z MzIzY19idXR0b25fZGF0YSA9IHsKLQkuYnV0dG9ucwk9IGRuczMyM2NfYnV0dG9ucywKLQkubmJ1 dHRvbnMJPSBBUlJBWV9TSVpFKGRuczMyM2NfYnV0dG9ucyksCi19OwotCi1zdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RldmljZSBkbnMzMjNfYnV0dG9uX2RldmljZSA9IHsKLQkubmFtZQkJPSAiZ3Bp by1rZXlzIiwKLQkuaWQJCT0gLTEsCi0JLm51bV9yZXNvdXJjZXMJPSAwLAotCS5kZXYJCT0gewot CQkucGxhdGZvcm1fZGF0YQk9ICZkbnMzMjNhYl9idXR0b25fZGF0YSwKLQl9LAotfTsKLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0gKiBTQVRBCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgbXZfc2F0YV9w bGF0Zm9ybV9kYXRhIGRuczMyM19zYXRhX2RhdGEgPSB7Ci0gICAgICAgLm5fcG9ydHMgICAgICAg ID0gMiwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHZW5lcmFsIFNldHVwCi0gKi8K LXN0YXRpYyB1bnNpZ25lZCBpbnQgZG5zMzIzYV9tcHBfbW9kZXNbXSBfX2luaXRkYXRhID0gewot CU1QUDBfUENJRV9SU1RfT1VUbiwKLQlNUFAxX0dQSU8sCQkvKiByaWdodCBhbWJlciBMRUQgKHNh dGEgY2gwKSAqLwotCU1QUDJfR1BJTywJCS8qIGxlZnQgYW1iZXIgTEVEIChzYXRhIGNoMSkgKi8K LQlNUFAzX1VOVVNFRCwKLQlNUFA0X0dQSU8sCQkvKiBwb3dlciBidXR0b24gTEVEICovCi0JTVBQ NV9HUElPLAkJLyogcG93ZXIgYnV0dG9uIExFRCAqLwotCU1QUDZfR1BJTywJCS8qIEdNVCBHNzUx LTJmIG92ZXJ0ZW1wICovCi0JTVBQN19HUElPLAkJLyogTTQxVDgwIG5JUlEvT1VUL1NRVyAqLwot CU1QUDhfR1BJTywJCS8qIHRyaWdnZXJzIHBvd2VyIG9mZiAqLwotCU1QUDlfR1BJTywJCS8qIHBv d2VyIGJ1dHRvbiBzd2l0Y2ggKi8KLQlNUFAxMF9HUElPLAkJLyogcmVzZXQgYnV0dG9uIHN3aXRj aCAqLwotCU1QUDExX1VOVVNFRCwKLQlNUFAxMl9VTlVTRUQsCi0JTVBQMTNfVU5VU0VELAotCU1Q UDE0X1VOVVNFRCwKLQlNUFAxNV9VTlVTRUQsCi0JTVBQMTZfVU5VU0VELAotCU1QUDE3X1VOVVNF RCwKLQlNUFAxOF9VTlVTRUQsCi0JTVBQMTlfVU5VU0VELAotCTAsCi19OwotCi1zdGF0aWMgdW5z aWduZWQgaW50IGRuczMyM2JfbXBwX21vZGVzW10gX19pbml0ZGF0YSA9IHsKLQlNUFAwX1VOVVNF RCwKLQlNUFAxX0dQSU8sCQkvKiByaWdodCBhbWJlciBMRUQgKHNhdGEgY2gwKSAqLwotCU1QUDJf R1BJTywJCS8qIGxlZnQgYW1iZXIgTEVEIChzYXRhIGNoMSkgKi8KLQlNUFAzX0dQSU8sCQkvKiBz eXN0ZW0gdXAgZmxhZyAqLwotCU1QUDRfR1BJTywJCS8qIHBvd2VyIGJ1dHRvbiBMRUQgKi8KLQlN UFA1X0dQSU8sCQkvKiBwb3dlciBidXR0b24gTEVEICovCi0JTVBQNl9HUElPLAkJLyogR01UIEc3 NTEtMmYgb3ZlcnRlbXAgKi8KLQlNUFA3X0dQSU8sCQkvKiBNNDFUODAgbklSUS9PVVQvU1FXICov Ci0JTVBQOF9HUElPLAkJLyogdHJpZ2dlcnMgcG93ZXIgb2ZmICovCi0JTVBQOV9HUElPLAkJLyog cG93ZXIgYnV0dG9uIHN3aXRjaCAqLwotCU1QUDEwX0dQSU8sCQkvKiByZXNldCBidXR0b24gc3dp dGNoICovCi0JTVBQMTFfVU5VU0VELAotCU1QUDEyX1NBVEFfTEVELAotCU1QUDEzX1NBVEFfTEVE LAotCU1QUDE0X1NBVEFfTEVELAotCU1QUDE1X1NBVEFfTEVELAotCU1QUDE2X1VOVVNFRCwKLQlN UFAxN19VTlVTRUQsCi0JTVBQMThfVU5VU0VELAotCU1QUDE5X1VOVVNFRCwKLQkwLAotfTsKLQot c3RhdGljIHVuc2lnbmVkIGludCBkbnMzMjNjX21wcF9tb2Rlc1tdIF9faW5pdGRhdGEgPSB7Ci0J TVBQMF9HUElPLAkJLyogPyBpbnB1dCAqLwotCU1QUDFfR1BJTywJCS8qIGlucHV0IHBvd2VyIHN3 aXRjaCAoMCA9IHByZXNzZWQpICovCi0JTVBQMl9HUElPLAkJLyogb3V0cHV0IHBvd2VyIG9mZiAq LwotCU1QUDNfVU5VU0VELAkJLyogPyBvdXRwdXQgKi8KLQlNUFA0X1VOVVNFRCwJCS8qID8gb3V0 cHV0ICovCi0JTVBQNV9VTlVTRUQsCQkvKiA/IG91dHB1dCAqLwotCU1QUDZfVU5VU0VELAkJLyog PyBvdXRwdXQgKi8KLQlNUFA3X1VOVVNFRCwJCS8qID8gb3V0cHV0ICovCi0JTVBQOF9HUElPLAkJ LyogaS9vIHJpZ2h0IGFtYmVyIExFRCAqLwotCU1QUDlfR1BJTywJCS8qIGkvbyBsZWZ0IGFtYmVy IExFRCAqLwotCU1QUDEwX0dQSU8sCQkvKiBpbnB1dCAqLwotCU1QUDExX1VOVVNFRCwKLQlNUFAx Ml9TQVRBX0xFRCwKLQlNUFAxM19TQVRBX0xFRCwKLQlNUFAxNF9TQVRBX0xFRCwKLQlNUFAxNV9T QVRBX0xFRCwKLQlNUFAxNl9VTlVTRUQsCi0JTVBQMTdfR1BJTywJCS8qIHBvd2VyIGJ1dHRvbiBM RUQgKi8KLQlNUFAxOF9HUElPLAkJLyogZmFuIHNwZWVkIGJpdCAwICovCi0JTVBQMTlfR1BJTywJ CS8qIGZhbiBzcGVlZCBiaXQgMSAqLwotCTAsCi19OwotCi0vKiBSZXYgQzEgRmFuIHNwZWVkIG5v dGVzOgotICoKLSAqIFRoZSBmYW4gaXMgY29udHJvbGxlZCBieSAyIEdQSU9zIG9uIHRoaXMgYm9h cmQuIFRoZSBzZXR0aW5ncwotICogb2YgdGhlIGJpdHMgaXMgYXMgZm9sbG93OgotICoKLSAqICBH UElPIDE4ICAgIEdQSU8gMTkgICAgRmFuCi0gKgotICogICAgMCAgICAgICAgICAwICAgICAgICBz dG9wcGVkCi0gKiAgICAwICAgICAgICAgIDEgICAgICAgIGxvdyBzcGVlZAotICogICAgMSAgICAg ICAgICAwICAgICAgICBoaWdoIHNwZWVkCi0gKiAgICAxICAgICAgICAgIDEgICAgICAgIGRvbid0 IGRvIHRoYXQgKCopCi0gKgotICogKCopIEkgdGhpbmsgdGhlIHR3byBiaXRzIGNvbnRyb2wgdHdv IGZlZWQtaW4gcmVzaXN0b3JzIGludG8gYSBmaXhlZAotICogICAgIFBXTiBjaXJjdWl0LCBzZXR0 aW5nIGJvdGggYml0cyB3aWxsIGJhc2ljYWxseSBnbyBhICdiaXQnIGZhc3RlcgotICogICAgIHRo YW4gaGlnaCBzcGVlZCwgYnV0IGQtbGluayBkb2Vzbid0IGRvIGl0IGFuZCB5b3UgbWF5IGdldCBv dXQgb2YKLSAqICAgICBIVyBzcGVjIHNvIGRvbid0IGRvIGl0LgotICovCi0KLS8qCi0gKiBPbiB0 aGUgRE5TLTMyMyBBMSBhbmQgQjEgdGhlIGZvbGxvd2luZyBkZXZpY2VzIGFyZSBhdHRhY2hlZCB2 aWEgSTJDOgotICoKLSAqICBpMmMgYWRkciB8IGNoaXAgICAgICAgIHwgZGVzY3JpcHRpb24KLSAq ICAweDNlICAgICB8IEdNVCBHNzYwQWYgIHwgZmFuIHNwZWVkIFBXTSBjb250cm9sbGVyCi0gKiAg MHg0OCAgICAgfCBHTVQgRzc1MS0yZiB8IHRlbXAuIHNlbnNvciBhbmQgdGhlcm0uIHdhdGNoZG9n IChMTTc1IGNvbXBhdGlibGUpCi0gKiAgMHg2OCAgICAgfCBTVCBNNDFUODAgICB8IFJUQyB3LyBh bGFybQotICovCi1zdGF0aWMgc3RydWN0IGkyY19ib2FyZF9pbmZvIF9faW5pdGRhdGEgZG5zMzIz YWJfaTJjX2RldmljZXNbXSA9IHsKLQl7Ci0JCUkyQ19CT0FSRF9JTkZPKCJnNzYwYSIsIDB4M2Up LAotCX0sIHsKLQkJSTJDX0JPQVJEX0lORk8oImxtNzUiLCAweDQ4KSwKLQl9LCB7Ci0JCUkyQ19C T0FSRF9JTkZPKCJtNDF0ODAiLCAweDY4KSwKLQl9LAotfTsKLQotLyoKLSAqIE9uIHRoZSBETlMt MzIzIEMxIHRoZSBmb2xsb3dpbmcgZGV2aWNlcyBhcmUgYXR0YWNoZWQgdmlhIEkyQzoKLSAqCi0g KiAgaTJjIGFkZHIgfCBjaGlwICAgICAgICB8IGRlc2NyaXB0aW9uCi0gKiAgMHg0OCAgICAgfCBH TVQgRzc1MS0yZiB8IHRlbXAuIHNlbnNvciBhbmQgdGhlcm0uIHdhdGNoZG9nIChMTTc1IGNvbXBh dGlibGUpCi0gKiAgMHg2OCAgICAgfCBTVCBNNDFUODAgICB8IFJUQyB3LyBhbGFybQotICovCi1z dGF0aWMgc3RydWN0IGkyY19ib2FyZF9pbmZvIF9faW5pdGRhdGEgZG5zMzIzY19pMmNfZGV2aWNl c1tdID0gewotCXsKLQkJSTJDX0JPQVJEX0lORk8oImxtNzUiLCAweDQ4KSwKLQl9LCB7Ci0JCUky Q19CT0FSRF9JTkZPKCJtNDF0ODAiLCAweDY4KSwKLQl9LAotfTsKLQotLyogRE5TLTMyMyByZXYu IEEgc3BlY2lmaWMgcG93ZXIgb2ZmIG1ldGhvZCAqLwotc3RhdGljIHZvaWQgZG5zMzIzYV9wb3dl cl9vZmYodm9pZCkKLXsKLQlwcl9pbmZvKCJETlMtMzIzOiBUcmlnZ2VyaW5nIHBvd2VyLW9mZi4u LlxuIik7Ci0JZ3Bpb19zZXRfdmFsdWUoRE5TMzIzX0dQSU9fUE9XRVJfT0ZGLCAxKTsKLX0KLQot LyogRE5TLTMyMyByZXYgQiBzcGVjaWZpYyBwb3dlciBvZmYgbWV0aG9kICovCi1zdGF0aWMgdm9p ZCBkbnMzMjNiX3Bvd2VyX29mZih2b2lkKQotewotCXByX2luZm8oIkROUy0zMjM6IFRyaWdnZXJp bmcgcG93ZXItb2ZmLi4uXG4iKTsKLQkvKiBQaW4gaGFzIHRvIGJlIGNoYW5nZWQgdG8gMSBhbmQg YmFjayB0byAwIHRvIGRvIGFjdHVhbCBwb3dlciBvZmYuICovCi0JZ3Bpb19zZXRfdmFsdWUoRE5T MzIzX0dQSU9fUE9XRVJfT0ZGLCAxKTsKLQltZGVsYXkoMTAwKTsKLQlncGlvX3NldF92YWx1ZShE TlMzMjNfR1BJT19QT1dFUl9PRkYsIDApOwotfQotCi0vKiBETlMtMzIzIHJldi4gQyBzcGVjaWZp YyBwb3dlciBvZmYgbWV0aG9kICovCi1zdGF0aWMgdm9pZCBkbnMzMjNjX3Bvd2VyX29mZih2b2lk KQotewotCXByX2luZm8oIkROUy0zMjM6IFRyaWdnZXJpbmcgcG93ZXItb2ZmLi4uXG4iKTsKLQln cGlvX3NldF92YWx1ZShETlMzMjNDX0dQSU9fUE9XRVJfT0ZGLCAxKTsKLX0KLQotc3RhdGljIGlu dCBkbnMzMjNjX3BoeV9maXh1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KQotewotCXBoeS0+ZGV2 X2ZsYWdzIHw9IE1BUlZFTExfUEhZX00xMTE4X0ROUzMyM19MRURTOwotCi0JcmV0dXJuIDA7Ci19 Ci0KLXN0YXRpYyBpbnQgX19pbml0IGRuczMyM19pZGVudGlmeV9yZXYodm9pZCkKLXsKLQl1MzIg ZGV2LCByZXYsIGksIHJlZzsKLQotCXByX2RlYnVnKCJETlMtMzIzOiBJZGVudGlmeWluZyBib2Fy ZCAuLi4gXG4iKTsKLQotCS8qIFJldiBBMSBoYXMgYSA1MTgxICovCi0Jb3Jpb241eF9wY2llX2lk KCZkZXYsICZyZXYpOwotCWlmIChkZXYgPT0gTVY4OEY1MTgxX0RFVl9JRCkgewotCQlwcl9kZWJ1 ZygiRE5TLTMyMzogNTE4MSBmb3VuZCwgYm9hcmQgaXMgQTFcbiIpOwotCQlyZXR1cm4gRE5TMzIz X1JFVl9BMTsKLQl9Ci0JcHJfZGVidWcoIkROUy0zMjM6IDUxODIgZm91bmQsIGJvYXJkIGlzIEIx IG9yIEMxLCBjaGVja2luZyBQSFkuLi5cbiIpOwotCi0JLyogUmV2IEIxIGFuZCBDMSBib3RoIGhh dmUgNTE4MiwgbGV0J3MgcG9rZSBhdCB0aGUgZXRoIFBIWS4gVGhpcyBpcwotCSAqIGEgYml0IGdy b3NzIGJ1dCB3ZSB3YW50IHRvIGRvIHRoYXQgd2l0aG91dCBsaW5rcyBpbnRvIHRoZSBldGgKLQkg KiBkcml2ZXIgc28gbGV0J3MgcG9rZSBhdCBpdCBkaXJlY3RseS4gV2UgZGVmYXVsdCB0byByZXYg QjEgaW4KLQkgKiBjYXNlIHRoZSBhY2Nlc3NlcyBmYWlsCi0JICovCi0KLSNkZWZpbmUgRVRIX1NN SV9SRUcJCShPUklPTjVYX0VUSF9WSVJUX0JBU0UgKyAweDIwMDAgKyAweDAwNCkKLSNkZWZpbmUg IFNNSV9CVVNZCQkweDEwMDAwMDAwCi0jZGVmaW5lICBTTUlfUkVBRF9WQUxJRAkJMHgwODAwMDAw MAotI2RlZmluZSAgU01JX09QQ09ERV9SRUFECTB4MDQwMDAwMDAKLSNkZWZpbmUgIFNNSV9PUENP REVfV1JJVEUJMHgwMDAwMDAwMAotCi0JZm9yIChpID0gMDsgaSA8IDEwMDA7IGkrKykgewotCQly ZWcgPSByZWFkbChFVEhfU01JX1JFRyk7Ci0JCWlmICghKHJlZyAmIFNNSV9CVVNZKSkKLQkJCWJy ZWFrOwotCX0KLQlpZiAoaSA+PSAxMDAwKSB7Ci0JCXByX3dhcm4oIkROUy0zMjM6IFRpbWVvdXQg YWNjZXNzaW5nIFBIWSwgYXNzdW1pbmcgcmV2IEIxXG4iKTsKLQkJcmV0dXJuIEROUzMyM19SRVZf QjE7Ci0JfQotCXdyaXRlbCgoMyA8PCAyMSkJLyogcGh5IElEIHJlZyAqLyB8Ci0JICAgICAgICg4 IDw8IDE2KQkvKiBwaHkgYWRkciAqLyB8Ci0JICAgICAgIFNNSV9PUENPREVfUkVBRCwgRVRIX1NN SV9SRUcpOwotCWZvciAoaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKLQkJcmVnID0gcmVhZGwoRVRI X1NNSV9SRUcpOwotCQlpZiAocmVnICYgU01JX1JFQURfVkFMSUQpCi0JCQlicmVhazsKLQl9Ci0J aWYgKGkgPj0gMTAwMCkgewotCQlwcl93YXJuKCJETlMtMzIzOiBUaW1lb3V0IHJlYWRpbmcgUEhZ LCBhc3N1bWluZyByZXYgQjFcbiIpOwotCQlyZXR1cm4gRE5TMzIzX1JFVl9CMTsKLQl9Ci0JcHJf ZGVidWcoIkROUy0zMjM6IEV0aGVybmV0IFBIWSBJRCAweCV4XG4iLCByZWcgJiAweGZmZmYpOwot Ci0JLyogTm90ZTogdGhlIE1hcnZlbGwgdG9vbHMgbWFzayB0aGUgSUQgd2l0aCAweDNmMCBiZWZv cmUgY29tcGFyaXNvbgotCSAqIGJ1dCBJIGRvbid0IHNlZSB0aGF0IG1ha2luZyBhIGRpZmZlcmVu Y2UgaGVyZSwgYXQgbGVhc3Qgd2l0aAotCSAqIGFueSBrbm93biBNYXJ2ZWxsIFBIWSBJRAotCSAq LwotCXN3aXRjaChyZWcgJiAweGZmZjApIHsKLQljYXNlIDB4MGNjMDogLyogTVY4OEUxMTExICov Ci0JCXJldHVybiBETlMzMjNfUkVWX0IxOwotCWNhc2UgMHgwZTEwOiAvKiBNVjg4RTExMTggKi8K LQkJcmV0dXJuIEROUzMyM19SRVZfQzE7Ci0JZGVmYXVsdDoKLQkJcHJfd2FybigiRE5TLTMyMzog VW5rbm93biBQSFkgSUQgMHglMDR4LCBhc3N1bWluZyByZXYgQjFcbiIsCi0JCQlyZWcgJiAweGZm ZmYpOwotCX0KLQlyZXR1cm4gRE5TMzIzX1JFVl9CMTsKLX0KLQotc3RhdGljIHZvaWQgX19pbml0 IGRuczMyM19pbml0KHZvaWQpCi17Ci0JLyogU2V0dXAgYmFzaWMgT3Jpb24gZnVuY3Rpb25zLiBO ZWVkIHRvIGJlIGNhbGxlZCBlYXJseS4gKi8KLQlvcmlvbjV4X2luaXQoKTsKLQotCS8qIElkZW50 aWZ5IHJldmlzaW9uICovCi0Jc3lzdGVtX3JldiA9IGRuczMyM19pZGVudGlmeV9yZXYoKTsKLQlw cl9pbmZvKCJETlMtMzIzOiBJZGVudGlmaWVkIEhXIHJldmlzaW9uICVjMVxuIiwgJ0EnICsgc3lz dGVtX3Jldik7Ci0KLQkvKiBKdXN0IHRvIGJlIHRyaWNreSwgdGhlIDUxODIgaGFzIGEgY29tcGxl dGVseSBkaWZmZXJlbnQKLQkgKiBzZXQgb2YgTVBQIG1vZGVzIHRvIHRoZSA1MTgxLgotCSAqLwot CXN3aXRjaChzeXN0ZW1fcmV2KSB7Ci0JY2FzZSBETlMzMjNfUkVWX0ExOgotCQlvcmlvbjV4X21w cF9jb25mKGRuczMyM2FfbXBwX21vZGVzKTsKLQkJd3JpdGVsKDAsIE1QUF9ERVZfQ1RSTCk7CQkv KiBERVZfRFszMToxNl0gKi8KLQkJYnJlYWs7Ci0JY2FzZSBETlMzMjNfUkVWX0IxOgotCQlvcmlv bjV4X21wcF9jb25mKGRuczMyM2JfbXBwX21vZGVzKTsKLQkJYnJlYWs7Ci0JY2FzZSBETlMzMjNf UkVWX0MxOgotCQlvcmlvbjV4X21wcF9jb25mKGRuczMyM2NfbXBwX21vZGVzKTsKLQkJYnJlYWs7 Ci0JfQotCi0JLyogc2V0dXAgZmxhc2ggbWFwcGluZwotCSAqIENTMyBob2xkcyBhIDggTUIgU3Bh bnNpb24gUzI5R0wwNjRNOTBURklSNAotCSAqLwotCW12ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9p ZChPUklPTl9NQlVTX0RFVkJVU19CT09UX1RBUkdFVCwKLQkJCQkgICAgT1JJT05fTUJVU19ERVZC VVNfQk9PVF9BVFRSLAotCQkJCSAgICBETlMzMjNfTk9SX0JPT1RfQkFTRSwKLQkJCQkgICAgRE5T MzIzX05PUl9CT09UX1NJWkUpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmZG5zMzIzX25v cl9mbGFzaCk7Ci0KLQkvKiBTb3J0IG91dCBMRURzLCBCdXR0b25zIGFuZCBpMmMgZGV2aWNlcyAq LwotCXN3aXRjaChzeXN0ZW1fcmV2KSB7Ci0JY2FzZSBETlMzMjNfUkVWX0ExOgotCQkvKiBUaGUg NTE4MSBwb3dlciBMRUQgaXMgYWN0aXZlIGxvdyBhbmQgcmVxdWlyZXMKLQkJICogRE5TMzIzX0dQ SU9fTEVEX1BPV0VSMSB0byBhbHNvIGJlIGxvdy4KLQkJICovCi0JCWdwaW9kX2FkZF9sb29rdXBf dGFibGUoJmRuczMyM2ExX2xlZHNfZ3Bpb190YWJsZSk7Ci0JCWdwaW9fcmVxdWVzdChETlMzMjNf R1BJT19MRURfUE9XRVIxLCAiUG93ZXIgTGVkIEVuYWJsZSIpOwotCQlncGlvX2RpcmVjdGlvbl9v dXRwdXQoRE5TMzIzX0dQSU9fTEVEX1BPV0VSMSwgMCk7Ci0JCWkyY19yZWdpc3Rlcl9ib2FyZF9p bmZvKDAsIGRuczMyM2FiX2kyY19kZXZpY2VzLAotCQkJCQlBUlJBWV9TSVpFKGRuczMyM2FiX2ky Y19kZXZpY2VzKSk7Ci0KLQkJYnJlYWs7Ci0JY2FzZSBETlMzMjNfUkVWX0IxOgotCQlncGlvZF9h ZGRfbG9va3VwX3RhYmxlKCZkbnMzMjNiMV9sZWRzX2dwaW9fdGFibGUpOwotCQlpMmNfcmVnaXN0 ZXJfYm9hcmRfaW5mbygwLCBkbnMzMjNhYl9pMmNfZGV2aWNlcywKLQkJCQlBUlJBWV9TSVpFKGRu czMyM2FiX2kyY19kZXZpY2VzKSk7Ci0JCWJyZWFrOwotCWNhc2UgRE5TMzIzX1JFVl9DMToKLQkJ LyogSG9va3VwIExFRHMgJiBCdXR0b25zICovCi0JCWdwaW9kX2FkZF9sb29rdXBfdGFibGUoJmRu czMyM2NfbGVkc19ncGlvX3RhYmxlKTsKLQkJZG5zMzIzX2dwaW9fbGVkcy5kZXYucGxhdGZvcm1f ZGF0YSA9ICZkbnMzMjNjX2xlZF9kYXRhOwotCQlkbnMzMjNfYnV0dG9uX2RldmljZS5kZXYucGxh dGZvcm1fZGF0YSA9ICZkbnMzMjNjX2J1dHRvbl9kYXRhOwotCi0JCS8qIEhvb2t1cCBpMmMgZGV2 aWNlcyBhbmQgZmFuIGRyaXZlciAqLwotCQlpMmNfcmVnaXN0ZXJfYm9hcmRfaW5mbygwLCBkbnMz MjNjX2kyY19kZXZpY2VzLAotCQkJCUFSUkFZX1NJWkUoZG5zMzIzY19pMmNfZGV2aWNlcykpOwot CQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKCJkbnMzMjNjLWZhbiIsIDAsIE5VTEws IDApOwotCi0JCS8qIFJlZ2lzdGVyIGZpeHVwIGZvciB0aGUgUEhZIExFRHMgKi8KLQkJaWYgKCFJ U19CVUlMVElOKENPTkZJR19QSFlMSUIpKQotCQkJYnJlYWs7Ci0JCXBoeV9yZWdpc3Rlcl9maXh1 cF9mb3JfdWlkKE1BUlZFTExfUEhZX0lEXzg4RTExMTgsCi0JCQkJCSAgIE1BUlZFTExfUEhZX0lE X01BU0ssCi0JCQkJCSAgIGRuczMyM2NfcGh5X2ZpeHVwKTsKLQl9Ci0KLQlwbGF0Zm9ybV9kZXZp Y2VfcmVnaXN0ZXIoJmRuczMyM19ncGlvX2xlZHMpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cigmZG5zMzIzX2J1dHRvbl9kZXZpY2UpOwotCi0JLyoKLQkgKiBDb25maWd1cmUgcGVyaXBoZXJh bHMuCi0JICovCi0JaWYgKGRuczMyM19yZWFkX21hY19hZGRyKCkgPCAwKQotCQlwcmludGsoIkRO Uy0zMjM6IEZhaWxlZCB0byByZWFkIE1BQyBhZGRyZXNzXG4iKTsKLQlvcmlvbjV4X2VoY2kwX2lu aXQoKTsKLQlvcmlvbjV4X2V0aF9pbml0KCZkbnMzMjNfZXRoX2RhdGEpOwotCW9yaW9uNXhfaTJj X2luaXQoKTsKLQlvcmlvbjV4X3VhcnQwX2luaXQoKTsKLQotCS8qIFJlbWFpbmluZyBHUElPcyAq LwotCXN3aXRjaChzeXN0ZW1fcmV2KSB7Ci0JY2FzZSBETlMzMjNfUkVWX0ExOgotCQkvKiBQb3dl cm9mZiBHUElPICovCi0JCWlmIChncGlvX3JlcXVlc3QoRE5TMzIzX0dQSU9fUE9XRVJfT0ZGLCAi UE9XRVJPRkYiKSAhPSAwIHx8Ci0JCSAgICBncGlvX2RpcmVjdGlvbl9vdXRwdXQoRE5TMzIzX0dQ SU9fUE9XRVJfT0ZGLCAwKSAhPSAwKQotCQkJcHJfZXJyKCJETlMtMzIzOiBmYWlsZWQgdG8gc2V0 dXAgcG93ZXItb2ZmIEdQSU9cbiIpOwotCQlyZWdpc3Rlcl9wbGF0Zm9ybV9wb3dlcl9vZmYoZG5z MzIzYV9wb3dlcl9vZmYpOwotCQlicmVhazsKLQljYXNlIEROUzMyM19SRVZfQjE6Ci0JCS8qIDUx ODIgYnVpbHQtaW4gU0FUQSBpbml0ICovCi0JCW9yaW9uNXhfc2F0YV9pbml0KCZkbnMzMjNfc2F0 YV9kYXRhKTsKLQotCQkvKiBUaGUgRE5TMzIzIHJldiBCMSBoYXMgZmxhZyB0byBpbmRpY2F0ZSB0 aGUgc3lzdGVtIGlzIHVwLgotCQkgKiBXaXRob3V0IHRoaXMgZmxhZyBzZXQsIHBvd2VyIExFRCB3 aWxsIGZsYXNoIGFuZCBjYW5ub3QgYmUKLQkJICogY29udHJvbGxlZCB2aWEgbGVkcy1ncGlvLgot CQkgKi8KLQkJaWYgKGdwaW9fcmVxdWVzdChETlMzMjNfR1BJT19TWVNURU1fVVAsICJTWVNfUkVB RFkiKSA9PSAwKQotCQkJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KEROUzMyM19HUElPX1NZU1RFTV9V UCwgMSk7Ci0KLQkJLyogUG93ZXJvZmYgR1BJTyAqLwotCQlpZiAoZ3Bpb19yZXF1ZXN0KEROUzMy M19HUElPX1BPV0VSX09GRiwgIlBPV0VST0ZGIikgIT0gMCB8fAotCQkgICAgZ3Bpb19kaXJlY3Rp b25fb3V0cHV0KEROUzMyM19HUElPX1BPV0VSX09GRiwgMCkgIT0gMCkKLQkJCXByX2VycigiRE5T LTMyMzogZmFpbGVkIHRvIHNldHVwIHBvd2VyLW9mZiBHUElPXG4iKTsKLQkJcmVnaXN0ZXJfcGxh dGZvcm1fcG93ZXJfb2ZmKGRuczMyM2JfcG93ZXJfb2ZmKTsKLQkJYnJlYWs7Ci0JY2FzZSBETlMz MjNfUkVWX0MxOgotCQkvKiA1MTgyIGJ1aWx0LWluIFNBVEEgaW5pdCAqLwotCQlvcmlvbjV4X3Nh dGFfaW5pdCgmZG5zMzIzX3NhdGFfZGF0YSk7Ci0KLQkJLyogUG93ZXJvZmYgR1BJTyAqLwotCQlp ZiAoZ3Bpb19yZXF1ZXN0KEROUzMyM0NfR1BJT19QT1dFUl9PRkYsICJQT1dFUk9GRiIpICE9IDAg fHwKLQkJICAgIGdwaW9fZGlyZWN0aW9uX291dHB1dChETlMzMjNDX0dQSU9fUE9XRVJfT0ZGLCAw KSAhPSAwKQotCQkJcHJfZXJyKCJETlMtMzIzOiBmYWlsZWQgdG8gc2V0dXAgcG93ZXItb2ZmIEdQ SU9cbiIpOwotCQlyZWdpc3Rlcl9wbGF0Zm9ybV9wb3dlcl9vZmYoZG5zMzIzY19wb3dlcl9vZmYp OwotCi0JCS8qIE5vdywgLXRoaXMtIHNob3VsZCB0aGVvcmV0aWNhbGx5IGJlIGRvbmUgYnkgdGhl IHNhdGFfbXYgZHJpdmVyCi0JCSAqIG9uY2UgSSBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB0 aGVyZS4gTWF5YmUgdGhlIGJlaGF2aW91cgotCQkgKiBvZiB0aGUgTEVEcyBzaG91bGQgYmUgc29t ZXdoYXQgcGFzc2VkIHZpYSB0aGUgcGxhdGZvcm1fZGF0YS4KLQkJICogZm9yIG5vdywganVzdCB3 aGFjayB0aGUgcmVnaXN0ZXIgYW5kIG1ha2UgdGhlIExFRHMgaGFwcHkKLQkJICoKLQkJICogTm90 ZTogQUZBSUssIHJldiBCMSBuZWVkcyB0aGUgc2FtZSB0cmVhdG1lbnQgYnV0IEknbGwgbGV0Ci0J CSAqIHNvbWVib2R5IGVsc2UgdGVzdCBpdC4KLQkJICovCi0JCXdyaXRlbCgweDUsIE9SSU9ONVhf U0FUQV9WSVJUX0JBU0UgKyAweDJjKTsKLQkJYnJlYWs7Ci0JfQotfQotCi0vKiBXYXJuaW5nOiBE LUxpbmsgdXNlcyBhIHdyb25nIG1hY2gtdHlwZSAoPTUyNikgaW4gdGhlaXIgYm9vdGxvYWRlciAq LwotTUFDSElORV9TVEFSVChETlMzMjMsICJELUxpbmsgRE5TLTMyMyIpCi0JLyogTWFpbnRhaW5l cjogSGVyYmVydCBWYWxlcmlvIFJpZWRlbCA8aHZyQGdudS5vcmc+ICovCi0JLmF0YWdfb2Zmc2V0 CT0gMHgxMDAsCi0JLm5yX2lycXMJPSBPUklPTjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9 IGRuczMyM19pbml0LAotCS5tYXBfaW8JCT0gb3Jpb241eF9tYXBfaW8sCi0JLmluaXRfZWFybHkJ PSBvcmlvbjV4X2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwKLQku aW5pdF90aW1lCT0gb3Jpb241eF90aW1lcl9pbml0LAotCS5maXh1cAkJPSB0YWdfZml4dXBfbWVt MzIsCi0JLnJlc3RhcnQJPSBvcmlvbjV4X3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2lycS5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2ly cS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODliZWMxZWJlODkuLjAwMDAwMDAw MDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvaXJxLmMKKysrIC9kZXYvbnVsbApAQCAt MSw1MSArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0v KgotICogYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2lycS5jCi0gKgotICogQ29yZSBJUlEgZnVuY3Rp b25zIGZvciBNYXJ2ZWxsIE9yaW9uIFN5c3RlbSBPbiBDaGlwCi0gKgotICogTWFpbnRhaW5lcjog VHphY2hpIFBlcmVsc3RlaW4gPHR6YWNoaUBtYXJ2ZWxsLmNvbT4KLSAqLwotI2luY2x1ZGUgPGxp bnV4L2dwaW8vY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRl IDxsaW51eC9pcnEuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPHBsYXQvb3Jp b24tZ3Bpby5oPgotI2luY2x1ZGUgPHBsYXQvaXJxLmg+Ci0jaW5jbHVkZSA8YXNtL2V4Y2VwdGlv bi5oPgotI2luY2x1ZGUgImJyaWRnZS1yZWdzLmgiCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0KLXN0 YXRpYyBpbnQgX19pbml0ZGF0YSBncGlvMF9pcnFzWzRdID0gewotCUlSUV9PUklPTjVYX0dQSU9f MF83LAotCUlSUV9PUklPTjVYX0dQSU9fOF8xNSwKLQlJUlFfT1JJT041WF9HUElPXzE2XzIzLAot CUlSUV9PUklPTjVYX0dQSU9fMjRfMzEsCi19OwotCi1zdGF0aWMgYXNtbGlua2FnZSB2b2lkCi1f X2V4Y2VwdGlvbl9pcnFfZW50cnkgb3Jpb241eF9sZWdhY3lfaGFuZGxlX2lycShzdHJ1Y3QgcHRf cmVncyAqcmVncykKLXsKLQl1MzIgc3RhdDsKLQotCXN0YXQgPSByZWFkbF9yZWxheGVkKE1BSU5f SVJRX0NBVVNFKTsKLQlzdGF0ICY9IHJlYWRsX3JlbGF4ZWQoTUFJTl9JUlFfTUFTSyk7Ci0JaWYg KHN0YXQpIHsKLQkJdW5zaWduZWQgaW50IGh3aXJxID0gMSArIF9fZmxzKHN0YXQpOwotCQloYW5k bGVfSVJRKGh3aXJxLCByZWdzKTsKLQkJcmV0dXJuOwotCX0KLX0KLQotdm9pZCBfX2luaXQgb3Jp b241eF9pbml0X2lycSh2b2lkKQotewotCW9yaW9uX2lycV9pbml0KDEsIE1BSU5fSVJRX01BU0sp OwotCi0Jc2V0X2hhbmRsZV9pcnEob3Jpb241eF9sZWdhY3lfaGFuZGxlX2lycSk7Ci0KLQkvKgot CSAqIEluaXRpYWxpemUgZ3Bpb2xpYiBmb3IgR1BJT3MgMC0zMS4KLQkgKi8KLQlvcmlvbl9ncGlv X2luaXQoMCwgMzIsIEdQSU9fVklSVF9CQVNFLCAwLAotCQkJSVJRX09SSU9ONVhfR1BJT19TVEFS VCwgZ3BpbzBfaXJxcyk7Ci19CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvaXJx cy5oIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2lycXMuaAppbmRleCBhNzBjNDdjZmE2YmMuLmQw YjdjZDRhYjg4YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2lycXMuaAorKysg Yi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvaXJxcy5oCkBAIC00MywxMyArNDMsNCBAQAogI2RlZmlu ZSBJUlFfT1JJT041WF9YT1IwCQkoMSArIDMwKQogI2RlZmluZSBJUlFfT1JJT041WF9YT1IxCQko MSArIDMxKQogCi0vKgotICogT3Jpb24gR2VuZXJhbCBQdXJwb3NlIFBpbnMKLSAqLwotI2RlZmlu ZSBJUlFfT1JJT041WF9HUElPX1NUQVJUCTMzCi0jZGVmaW5lIE5SX0dQSU9fSVJRUwkJMzIKLQot I2RlZmluZSBPUklPTjVYX05SX0lSUVMJCShJUlFfT1JJT041WF9HUElPX1NUQVJUICsgTlJfR1BJ T19JUlFTKQotCi0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2t1 cm9ib3hfcHJvLXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgva3Vyb2JveF9wcm8tc2V0 dXAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxYjlhYjA2OTQzLi4wMDAwMDAw MDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2t1cm9ib3hfcHJvLXNldHVwLmMKKysr IC9kZXYvbnVsbApAQCAtMSw0MDcgKzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb25seQotLyoKLSAqIGFyY2gvYXJtL21hY2gtb3Jpb241eC9rdXJvYm94X3Byby1z ZXR1cC5jCi0gKgotICogTWFpbnRhaW5lcjogUm9uZW4gU2hpdHJpdCA8cnNoaXRyaXRAbWFydmVs bC5jb20+Ci0gKi8KLSNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Ci0jaW5jbHVkZSA8 bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4 L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxp bnV4L2lycS5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvbXRk L3BoeXNtYXAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvcmF3bmFuZC5oPgotI2luY2x1ZGUgPGxp bnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVkZSA8bGludXgvaTJjLmg+Ci0jaW5jbHVkZSA8bGlu dXgvc2VyaWFsX3JlZy5oPgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2luY2x1 ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgotI2luY2x1 ZGUgPGFzbS9tYWNoL3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvbXRkLW9y aW9uX25hbmQuaD4KLSNpbmNsdWRlICJjb21tb24uaCIKLSNpbmNsdWRlICJtcHAuaCIKLSNpbmNs dWRlICJvcmlvbjV4LmgiCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogS1VST0JPWC1QUk8g SW5mbwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiAyNTZLIE5PUiBmbGFzaCBEZXZp Y2UgYnVzIGJvb3QgY2hpcCBzZWxlY3QKLSAqLwotCi0jZGVmaW5lIEtVUk9CT1hfUFJPX05PUl9C T09UX0JBU0UJMHhmNDAwMDAwMAotI2RlZmluZSBLVVJPQk9YX1BST19OT1JfQk9PVF9TSVpFCVNa XzI1NksKLQotLyoKLSAqIDI1Nk0gTkFORCBmbGFzaCBvbiBEZXZpY2UgYnVzIGNoaXAgc2VsZWN0 IDEKLSAqLwotCi0jZGVmaW5lIEtVUk9CT1hfUFJPX05BTkRfQkFTRQkJMHhmYzAwMDAwMAotI2Rl ZmluZSBLVVJPQk9YX1BST19OQU5EX1NJWkUJCVNaXzJNCi0KLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogMjU2TUIgTkFORCBGbGFzaCBvbiBEZXZpY2UgYnVzIENTMAotICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCi0KLXN0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBrdXJvYm94X3Byb19uYW5kX3Bh cnRzW10gPSB7Ci0JewotCQkubmFtZQk9ICJ1SW1hZ2UiLAotCQkub2Zmc2V0CT0gMCwKLQkJLnNp emUJPSBTWl80TSwKLQl9LCB7Ci0JCS5uYW1lCT0gInJvb3RmcyIsCi0JCS5vZmZzZXQJPSBTWl80 TSwKLQkJLnNpemUJPSBTWl82NE0sCi0JfSwgewotCQkubmFtZQk9ICJleHRyYSIsCi0JCS5vZmZz ZXQJPSBTWl80TSArIFNaXzY0TSwKLQkJLnNpemUJPSBTWl8yNTZNIC0gKFNaXzRNICsgU1pfNjRN KSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBrdXJvYm94X3Byb19uYW5kX3Jl c291cmNlID0gewotCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKLQkuc3RhcnQJCT0gS1VST0JP WF9QUk9fTkFORF9CQVNFLAotCS5lbmQJCT0gS1VST0JPWF9QUk9fTkFORF9CQVNFICsgS1VST0JP WF9QUk9fTkFORF9TSVpFIC0gMSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qgb3Jpb25fbmFuZF9kYXRh IGt1cm9ib3hfcHJvX25hbmRfZGF0YSA9IHsKLQkucGFydHMJCT0ga3Vyb2JveF9wcm9fbmFuZF9w YXJ0cywKLQkubnJfcGFydHMJPSBBUlJBWV9TSVpFKGt1cm9ib3hfcHJvX25hbmRfcGFydHMpLAot CS5jbGUJCT0gMCwKLQkuYWxlCQk9IDEsCi0JLndpZHRoCQk9IDgsCi19OwotCi1zdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RldmljZSBrdXJvYm94X3Byb19uYW5kX2ZsYXNoID0gewotCS5uYW1lCQk9 ICJvcmlvbl9uYW5kIiwKLQkuaWQJCT0gLTEsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRh CT0gJmt1cm9ib3hfcHJvX25hbmRfZGF0YSwKLQl9LAotCS5yZXNvdXJjZQk9ICZrdXJvYm94X3By b19uYW5kX3Jlc291cmNlLAotCS5udW1fcmVzb3VyY2VzCT0gMSwKLX07Ci0KLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgotICogMjU2S0IgTk9SIEZsYXNoIG9uIEJPT1QgRGV2aWNlCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLQotc3RhdGljIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2RhdGEga3Vyb2JveF9w cm9fbm9yX2ZsYXNoX2RhdGEgPSB7Ci0JLndpZHRoCQk9IDEsCi19OwotCi1zdGF0aWMgc3RydWN0 IHJlc291cmNlIGt1cm9ib3hfcHJvX25vcl9mbGFzaF9yZXNvdXJjZSA9IHsKLQkuZmxhZ3MJCQk9 IElPUkVTT1VSQ0VfTUVNLAotCS5zdGFydAkJCT0gS1VST0JPWF9QUk9fTk9SX0JPT1RfQkFTRSwK LQkuZW5kCQkJPSBLVVJPQk9YX1BST19OT1JfQk9PVF9CQVNFICsgS1VST0JPWF9QUk9fTk9SX0JP T1RfU0laRSAtIDEsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBrdXJvYm94 X3Byb19ub3JfZmxhc2ggPSB7Ci0JLm5hbWUJCQk9ICJwaHlzbWFwLWZsYXNoIiwKLQkuaWQJCQk9 IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJmt1cm9ib3hfcHJvX25vcl9mbGFz aF9kYXRhLAotCX0sCi0JLm51bV9yZXNvdXJjZXMJCT0gMSwKLQkucmVzb3VyY2UJCT0gJmt1cm9i b3hfcHJvX25vcl9mbGFzaF9yZXNvdXJjZSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICogUENJCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIGludCBfX2luaXQga3Vyb2Jv eF9wcm9fcGNpX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwKLQl1 OCBwaW4pCi17Ci0JaW50IGlycTsKLQotCS8qCi0JICogQ2hlY2sgZm9yIGRldmljZXMgd2l0aCBo YXJkLXdpcmVkIElSUXMuCi0JICovCi0JaXJxID0gb3Jpb241eF9wY2lfbWFwX2lycShkZXYsIHNs b3QsIHBpbik7Ci0JaWYgKGlycSAhPSAtMSkKLQkJcmV0dXJuIGlycTsKLQotCS8qCi0JICogUENJ IGlzbid0IHVzZWQgb24gdGhlIEt1cm8KLQkgKi8KLQlyZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBz dHJ1Y3QgaHdfcGNpIGt1cm9ib3hfcHJvX3BjaSBfX2luaXRkYXRhID0gewotCS5ucl9jb250cm9s bGVycwk9IDIsCi0JLnNldHVwCQk9IG9yaW9uNXhfcGNpX3N5c19zZXR1cCwKLQkuc2NhbgkJPSBv cmlvbjV4X3BjaV9zeXNfc2Nhbl9idXMsCi0JLm1hcF9pcnEJPSBrdXJvYm94X3Byb19wY2lfbWFw X2lycSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IGt1cm9ib3hfcHJvX3BjaV9pbml0KHZvaWQp Ci17Ci0JaWYgKG1hY2hpbmVfaXNfa3Vyb2JveF9wcm8oKSkgewotCQlvcmlvbjV4X3BjaV9kaXNh YmxlKCk7Ci0JCXBjaV9jb21tb25faW5pdCgma3Vyb2JveF9wcm9fcGNpKTsKLQl9Ci0KLQlyZXR1 cm4gMDsKLX0KLQotc3Vic3lzX2luaXRjYWxsKGt1cm9ib3hfcHJvX3BjaV9pbml0KTsKLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0gKiBFdGhlcm5ldAotICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0K LXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSBrdXJvYm94X3Byb19ldGhf ZGF0YSA9IHsKLQkucGh5X2FkZHIJPSBNVjY0M1hYX0VUSF9QSFlfQUREUig4KSwKLX07Ci0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogUlRDIDVDMzcyYSBvbiBJMkMgYnVzCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gX19pbml0ZGF0YSBrdXJv Ym94X3Byb19pMmNfcnRjID0gewotCUkyQ19CT0FSRF9JTkZPKCJyczVjMzcyYSIsIDB4MzIpLAot fTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTQVRBCi0gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLXN0YXRpYyBzdHJ1Y3QgbXZfc2F0YV9wbGF0Zm9ybV9kYXRhIGt1cm9ib3hfcHJvX3NhdGFf ZGF0YSA9IHsKLQkubl9wb3J0cwk9IDIsCi19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAq IEt1cm9ib3ggUHJvIHNwZWNpZmljIHBvd2VyIG9mZiBtZXRob2QgdmlhIFVBUlQxLWF0dGFjaGVk IG1pY3JvY29udHJvbGxlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNkZWZpbmUgVUFSVDFf UkVHKHgpCShVQVJUMV9WSVJUX0JBU0UgKyAoKFVBUlRfIyN4KSA8PCAyKSkKLQotc3RhdGljIGlu dCBrdXJvYm94X3Byb19taWNvbnJlYWQodW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpCi17 Ci0JaW50IGk7Ci0JaW50IHRpbWVvdXQ7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykg ewotCQl0aW1lb3V0ID0gMTA7Ci0KLQkJd2hpbGUgKCEocmVhZGwoVUFSVDFfUkVHKExTUikpICYg VUFSVF9MU1JfRFIpKSB7Ci0JCQlpZiAoLS10aW1lb3V0ID09IDApCi0JCQkJYnJlYWs7Ci0JCQl1 ZGVsYXkoMTAwMCk7Ci0JCX0KLQotCQlpZiAodGltZW91dCA9PSAwKQotCQkJYnJlYWs7Ci0JCWJ1 ZltpXSA9IHJlYWRsKFVBUlQxX1JFRyhSWCkpOwotCX0KLQotCS8qIHJldHVybiByZWFkIGJ5dGVz ICovCi0JcmV0dXJuIGk7Ci19Ci0KLXN0YXRpYyBpbnQga3Vyb2JveF9wcm9fbWljb253cml0ZShj b25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBjb3VudCkKLXsKLQlpbnQgaSA9IDA7Ci0KLQl3 aGlsZSAoY291bnQtLSkgewotCQl3aGlsZSAoIShyZWFkbChVQVJUMV9SRUcoTFNSKSkgJiBVQVJU X0xTUl9USFJFKSkKLQkJCWJhcnJpZXIoKTsKLQkJd3JpdGVsKGJ1ZltpKytdLCBVQVJUMV9SRUco VFgpKTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBrdXJvYm94X3Byb19taWNv bnNlbmQoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGNvdW50KQotewotCWludCBpOwot CXVuc2lnbmVkIGNoYXIgY2hlY2tzdW0gPSAwOwotCXVuc2lnbmVkIGNoYXIgcmVjdl9idWZbNDBd OwotCXVuc2lnbmVkIGNoYXIgc2VuZF9idWZbNDBdOwotCXVuc2lnbmVkIGNoYXIgY29ycmVjdF9h Y2tbM107Ci0JaW50IHJldHJ5ID0gMjsKLQotCS8qIEdlbmVyYXRlIGNoZWNrc3VtICovCi0JZm9y IChpID0gMDsgaSA8IGNvdW50OyBpKyspCi0JCWNoZWNrc3VtIC09ICBkYXRhW2ldOwotCi0JZG8g ewotCQkvKiBTZW5kIGRhdGEgKi8KLQkJa3Vyb2JveF9wcm9fbWljb253cml0ZShkYXRhLCBjb3Vu dCk7Ci0KLQkJLyogc2VuZCBjaGVja3N1bSAqLwotCQlrdXJvYm94X3Byb19taWNvbndyaXRlKCZj aGVja3N1bSwgMSk7Ci0KLQkJaWYgKGt1cm9ib3hfcHJvX21pY29ucmVhZChyZWN2X2J1Ziwgc2l6 ZW9mKHJlY3ZfYnVmKSkgPD0gMykgewotCQkJcHJpbnRrKEtFUk5fRVJSICI+JXM6IHJlY2VpdmUg ZmFpbGVkLlxuIiwgX19mdW5jX18pOwotCi0JCQkvKiBzZW5kIHByZWFtYmxlIHRvIGNsZWFyIHRo ZSByZWNlaXZlIGJ1ZmZlciAqLwotCQkJbWVtc2V0KCZzZW5kX2J1ZiwgMHhmZiwgc2l6ZW9mKHNl bmRfYnVmKSk7Ci0JCQlrdXJvYm94X3Byb19taWNvbndyaXRlKHNlbmRfYnVmLCBzaXplb2Yoc2Vu ZF9idWYpKTsKLQotCQkJLyogbWFrZSBkdW1teSByZWFkcyAqLwotCQkJbWRlbGF5KDEwMCk7Ci0J CQlrdXJvYm94X3Byb19taWNvbnJlYWQocmVjdl9idWYsIHNpemVvZihyZWN2X2J1ZikpOwotCQl9 IGVsc2UgewotCQkJLyogR2VuZXJhdGUgZXhwZWN0ZWQgYWNrICovCi0JCQljb3JyZWN0X2Fja1sw XSA9IDB4MDE7Ci0JCQljb3JyZWN0X2Fja1sxXSA9IGRhdGFbMV07Ci0JCQljb3JyZWN0X2Fja1sy XSA9IDB4MDA7Ci0KLQkJCS8qIGNoZWNrc3VtIENoZWNrICovCi0JCQlpZiAoKHJlY3ZfYnVmWzBd ICsgcmVjdl9idWZbMV0gKyByZWN2X2J1ZlsyXSArCi0JCQkgICAgIHJlY3ZfYnVmWzNdKSAmIDB4 RkYpIHsKLQkJCQlwcmludGsoS0VSTl9FUlIgIj4lczogQ2hlY2tzdW0gRXJyb3IgOiAiCi0JCQkJ CSJSZWNlaXZlZCBkYXRhWyUwMngsICUwMngsICUwMngsICUwMnhdIgotCQkJCQkiXG4iLCBfX2Z1 bmNfXywgcmVjdl9idWZbMF0sCi0JCQkJCXJlY3ZfYnVmWzFdLCByZWN2X2J1ZlsyXSwgcmVjdl9i dWZbM10pOwotCQkJfSBlbHNlIHsKLQkJCQkvKiBDaGVjayBSZWNlaXZlZCBEYXRhICovCi0JCQkJ aWYgKGNvcnJlY3RfYWNrWzBdID09IHJlY3ZfYnVmWzBdICYmCi0JCQkJICAgIGNvcnJlY3RfYWNr WzFdID09IHJlY3ZfYnVmWzFdICYmCi0JCQkJICAgIGNvcnJlY3RfYWNrWzJdID09IHJlY3ZfYnVm WzJdKSB7Ci0JCQkJCS8qIEludGVydmFsIGZvciBuZXh0IGNvbW1hbmQgKi8KLQkJCQkJbWRlbGF5 KDEwKTsKLQotCQkJCQkvKiBSZWNlaXZlIEFDSyAqLwotCQkJCQlyZXR1cm4gMDsKLQkJCQl9Ci0J CQl9Ci0JCQkvKiBSZWNlaXZlZCBOQUsgb3IgaWxsZWdhbCBEYXRhICovCi0JCQlwcmludGsoS0VS Tl9FUlIgIj4lczogRXJyb3IgOiBOQUsgb3IgSWxsZWdhbCBEYXRhICIKLQkJCQkJIlJlY2VpdmVk XG4iLCBfX2Z1bmNfXyk7Ci0JCX0KLQl9IHdoaWxlIChyZXRyeS0tKTsKLQotCS8qIEludGVydmFs IGZvciBuZXh0IGNvbW1hbmQgKi8KLQltZGVsYXkoMTApOwotCi0JcmV0dXJuIC0xOwotfQotCi1z dGF0aWMgdm9pZCBrdXJvYm94X3Byb19wb3dlcl9vZmYodm9pZCkKLXsKLQljb25zdCB1bnNpZ25l ZCBjaGFyIHdhdGNoZG9na2lsbFtdCT0gezB4MDEsIDB4MzUsIDB4MDB9OwotCWNvbnN0IHVuc2ln bmVkIGNoYXIgc2h1dGRvd253YWl0W10JPSB7MHgwMCwgMHgwY307Ci0JY29uc3QgdW5zaWduZWQg Y2hhciBwb3dlcm9mZltdCQk9IHsweDAwLCAweDA2fTsKLQkvKiAzODQwMCBiYXVkIGRpdmlzb3Ig Ki8KLQljb25zdCB1bnNpZ25lZCBkaXZpc29yID0gKChvcmlvbjV4X3RjbGsgKyAoOCAqIDM4NDAw KSkgLyAoMTYgKiAzODQwMCkpOwotCi0JcHJfaW5mbygiJXM6IHRyaWdnZXJpbmcgcG93ZXItb2Zm Li4uXG4iLCBfX2Z1bmNfXyk7Ci0KLQkvKiBoaWphY2sgdWFydDEgYW5kIHJlc2V0IGludG8gc2Fu ZSBzdGF0ZSAoMzg0MDAsOG4xLGV2ZW4gcGFyaXR5KSAqLwotCXdyaXRlbCgweDgzLCBVQVJUMV9S RUcoTENSKSk7Ci0Jd3JpdGVsKGRpdmlzb3IgJiAweGZmLCBVQVJUMV9SRUcoRExMKSk7Ci0Jd3Jp dGVsKChkaXZpc29yID4+IDgpICYgMHhmZiwgVUFSVDFfUkVHKERMTSkpOwotCXdyaXRlbCgweDFi LCBVQVJUMV9SRUcoTENSKSk7Ci0Jd3JpdGVsKDB4MDAsIFVBUlQxX1JFRyhJRVIpKTsKLQl3cml0 ZWwoMHgwNywgVUFSVDFfUkVHKEZDUikpOwotCXdyaXRlbCgweDAwLCBVQVJUMV9SRUcoTUNSKSk7 Ci0KLQkvKiBTZW5kIHRoZSBjb21tYW5kcyB0byBzaHV0ZG93biB0aGUgS3Vyb2JveCBQcm8gKi8K LQlrdXJvYm94X3Byb19taWNvbnNlbmQod2F0Y2hkb2draWxsLCBzaXplb2Yod2F0Y2hkb2draWxs KSkgOwotCWt1cm9ib3hfcHJvX21pY29uc2VuZChzaHV0ZG93bndhaXQsIHNpemVvZihzaHV0ZG93 bndhaXQpKSA7Ci0Ja3Vyb2JveF9wcm9fbWljb25zZW5kKHBvd2Vyb2ZmLCBzaXplb2YocG93ZXJv ZmYpKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHZW5lcmFsIFNldHVwCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQga3Vyb2JveF9wcm9fbXBwX21v ZGVzW10gX19pbml0ZGF0YSA9IHsKLQlNUFAwX1VOVVNFRCwKLQlNUFAxX1VOVVNFRCwKLQlNUFAy X0dQSU8sCQkvKiBHUElPIE1pY29uICovCi0JTVBQM19HUElPLAkJLyogR1BJTyBSdGMgKi8KLQlN UFA0X1VOVVNFRCwKLQlNUFA1X1VOVVNFRCwKLQlNUFA2X05BTkQsCQkvKiBOQU5EIEZsYXNoIFJF biAqLwotCU1QUDdfTkFORCwJCS8qIE5BTkQgRmxhc2ggV0VuICovCi0JTVBQOF9VTlVTRUQsCi0J TVBQOV9VTlVTRUQsCi0JTVBQMTBfVU5VU0VELAotCU1QUDExX1VOVVNFRCwKLQlNUFAxMl9TQVRB X0xFRCwJCS8qIFNBVEEgMCBwcmVzZW5jZSAqLwotCU1QUDEzX1NBVEFfTEVELAkJLyogU0FUQSAx IHByZXNlbmNlICovCi0JTVBQMTRfU0FUQV9MRUQsCQkvKiBTQVRBIDAgYWN0aXZlICovCi0JTVBQ MTVfU0FUQV9MRUQsCQkvKiBTQVRBIDEgYWN0aXZlICovCi0JTVBQMTZfVUFSVCwJCS8qIFVBUlQx IFJYRCAqLwotCU1QUDE3X1VBUlQsCQkvKiBVQVJUMSBUWEQgKi8KLQlNUFAxOF9VQVJULAkJLyog VUFSVDEgQ1RTbiAqLwotCU1QUDE5X1VBUlQsCQkvKiBVQVJUMSBSVFNuICovCi0JMCwKLX07Ci0K LXN0YXRpYyB2b2lkIF9faW5pdCBrdXJvYm94X3Byb19pbml0KHZvaWQpCi17Ci0JLyoKLQkgKiBT ZXR1cCBiYXNpYyBPcmlvbiBmdW5jdGlvbnMuIE5lZWQgdG8gYmUgY2FsbGVkIGVhcmx5LgotCSAq LwotCW9yaW9uNXhfaW5pdCgpOwotCi0Jb3Jpb241eF9tcHBfY29uZihrdXJvYm94X3Byb19tcHBf bW9kZXMpOwotCi0JLyoKLQkgKiBDb25maWd1cmUgcGVyaXBoZXJhbHMuCi0JICovCi0Jb3Jpb241 eF9laGNpMF9pbml0KCk7Ci0Jb3Jpb241eF9laGNpMV9pbml0KCk7Ci0Jb3Jpb241eF9ldGhfaW5p dCgma3Vyb2JveF9wcm9fZXRoX2RhdGEpOwotCW9yaW9uNXhfaTJjX2luaXQoKTsKLQlvcmlvbjV4 X3NhdGFfaW5pdCgma3Vyb2JveF9wcm9fc2F0YV9kYXRhKTsKLQlvcmlvbjV4X3VhcnQwX2luaXQo KTsKLQlvcmlvbjV4X3VhcnQxX2luaXQoKTsKLQlvcmlvbjV4X3hvcl9pbml0KCk7Ci0KLQltdmVi dV9tYnVzX2FkZF93aW5kb3dfYnlfaWQoT1JJT05fTUJVU19ERVZCVVNfQk9PVF9UQVJHRVQsCi0J CQkJICAgIE9SSU9OX01CVVNfREVWQlVTX0JPT1RfQVRUUiwKLQkJCQkgICAgS1VST0JPWF9QUk9f Tk9SX0JPT1RfQkFTRSwKLQkJCQkgICAgS1VST0JPWF9QUk9fTk9SX0JPT1RfU0laRSk7Ci0JcGxh dGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZrdXJvYm94X3Byb19ub3JfZmxhc2gpOwotCi0JaWYgKG1h Y2hpbmVfaXNfa3Vyb2JveF9wcm8oKSkgewotCQltdmVidV9tYnVzX2FkZF93aW5kb3dfYnlfaWQo T1JJT05fTUJVU19ERVZCVVNfVEFSR0VUKDApLAotCQkJCQkgICAgT1JJT05fTUJVU19ERVZCVVNf QVRUUigwKSwKLQkJCQkJICAgIEtVUk9CT1hfUFJPX05BTkRfQkFTRSwKLQkJCQkJICAgIEtVUk9C T1hfUFJPX05BTkRfU0laRSk7Ci0JCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigma3Vyb2JveF9w cm9fbmFuZF9mbGFzaCk7Ci0JfQotCi0JaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwgJmt1cm9i b3hfcHJvX2kyY19ydGMsIDEpOwotCi0JLyogcmVnaXN0ZXIgS3Vyb2JveCBQcm8gc3BlY2lmaWMg cG93ZXItb2ZmIG1ldGhvZCAqLwotCXJlZ2lzdGVyX3BsYXRmb3JtX3Bvd2VyX29mZihrdXJvYm94 X3Byb19wb3dlcl9vZmYpOwotfQotCi0jaWZkZWYgQ09ORklHX01BQ0hfS1VST0JPWF9QUk8KLU1B Q0hJTkVfU1RBUlQoS1VST0JPWF9QUk8sICJCdWZmYWxvL1Jldm9nZWFyIEt1cm9ib3ggUHJvIikK LQkvKiBNYWludGFpbmVyOiBSb25lbiBTaGl0cml0IDxyc2hpdHJpdEBtYXJ2ZWxsLmNvbT4gKi8K LQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IE9SSU9ONVhfTlJfSVJRUywKLQku aW5pdF9tYWNoaW5lCT0ga3Vyb2JveF9wcm9faW5pdCwKLQkubWFwX2lvCQk9IG9yaW9uNXhfbWFw X2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9pbml0X2Vhcmx5LAotCS5pbml0X2lycQk9IG9y aW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG9yaW9uNXhfdGltZXJfaW5pdCwKLQkuZml4 dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0YXJ0CT0gb3Jpb241eF9yZXN0YXJ0LAotTUFD SElORV9FTkQKLSNlbmRpZgotCi0jaWZkZWYgQ09ORklHX01BQ0hfTElOS1NUQVRJT05fUFJPCi1N QUNISU5FX1NUQVJUKExJTktTVEFUSU9OX1BSTywgIkJ1ZmZhbG8gTGlua3N0YXRpb24gUHJvL0xp dmUiKQotCS8qIE1haW50YWluZXI6IEJ5cm9uIEJyYWRsZXkgPGJ5cm9uLmJicmFkbGV5QGdtYWls LmNvbT4gKi8KLQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IE9SSU9ONVhfTlJf SVJRUywKLQkuaW5pdF9tYWNoaW5lCT0ga3Vyb2JveF9wcm9faW5pdCwKLQkubWFwX2lvCQk9IG9y aW9uNXhfbWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9pbml0X2Vhcmx5LAotCS5pbml0 X2lycQk9IG9yaW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG9yaW9uNXhfdGltZXJfaW5p dCwKLQkuZml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0YXJ0CT0gb3Jpb241eF9yZXN0 YXJ0LAotTUFDSElORV9FTkQKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlv bjV4L21wcC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L21wcC5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBiOTg1NWRjZTZiYTAuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9t YWNoLW9yaW9uNXgvbXBwLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vbWFjaC1v cmlvbjV4L21wcC5jCi0gKgotICogTVBQIGZ1bmN0aW9ucyBmb3IgTWFydmVsbCBPcmlvbiA1eCBT b0NzCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPHBsYXQvbXBwLmg+Ci0jaW5j bHVkZSAib3Jpb241eC5oIgotI2luY2x1ZGUgIm1wcC5oIgotI2luY2x1ZGUgImNvbW1vbi5oIgot Ci1zdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdCBvcmlvbjV4X3ZhcmlhbnQodm9pZCkKLXsKLQl1 MzIgZGV2OwotCXUzMiByZXY7Ci0KLQlvcmlvbjV4X3BjaWVfaWQoJmRldiwgJnJldik7Ci0KLQlp ZiAoZGV2ID09IE1WODhGNTE4MV9ERVZfSUQpCi0JCXJldHVybiBNUFBfRjUxODFfTUFTSzsKLQot CWlmIChkZXYgPT0gTVY4OEY1MTgyX0RFVl9JRCkKLQkJcmV0dXJuIE1QUF9GNTE4Ml9NQVNLOwot Ci0JaWYgKGRldiA9PSBNVjg4RjUyODFfREVWX0lEKQotCQlyZXR1cm4gTVBQX0Y1MjgxX01BU0s7 Ci0KLQlwcmludGsoS0VSTl9FUlIgIk1QUCBzZXR1cDogdW5rbm93biBvcmlvbjV4IHZhcmlhbnQg IgotCSAgICAgICAiKGRldiAlI3ggcmV2ICUjeClcbiIsIGRldiwgcmV2KTsKLQlyZXR1cm4gMDsK LX0KLQotdm9pZCBfX2luaXQgb3Jpb241eF9tcHBfY29uZih1bnNpZ25lZCBpbnQgKm1wcF9saXN0 KQotewotCW9yaW9uX21wcF9jb25mKG1wcF9saXN0LCBvcmlvbjV4X3ZhcmlhbnQoKSwKLQkJICAg ICAgIE1QUF9NQVgsIE9SSU9ONVhfREVWX0JVU19WSVJUX0JBU0UpOwotfQpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1vcmlvbjV4L21wcC5oIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L21wcC5o CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTFjNzg2NjMyOTEuLjAwMDAwMDAwMDAw MAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvbXBwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx MzAgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5k ZWYgX19BUkNIX09SSU9ONVhfTVBQX0gKLSNkZWZpbmUgX19BUkNIX09SSU9ONVhfTVBQX0gKLQot I2RlZmluZSBNUFAoX251bSwgX3NlbCwgX2luLCBfb3V0LCBfRjUxODFsLCBfRjUxODIsIF9GNTI4 MSkgKCBcCi0JLyogTVBQIG51bWJlciAqLwkJKChfbnVtKSAmIDB4ZmYpIHwgXAotCS8qIE1QUCBz ZWxlY3QgdmFsdWUgKi8JCSgoKF9zZWwpICYgMHhmKSA8PCA4KSB8IFwKLQkvKiBtYXkgYmUgaW5w dXQgc2lnbmFsICovCSgoISEoX2luKSkgPDwgMTIpIHwgXAotCS8qIG1heSBiZSBvdXRwdXQgc2ln bmFsICovCSgoISEoX291dCkpIDw8IDEzKSB8IFwKLQkvKiBhdmFpbGFibGUgb24gRjUxODFsICov CSgoISEoX0Y1MTgxbCkpIDw8IDE0KSB8IFwKLQkvKiBhdmFpbGFibGUgb24gRjUxODIgKi8JKCgh IShfRjUxODIpKSA8PCAxNSkgfCBcCi0JLyogYXZhaWxhYmxlIG9uIEY1MjgxICovCSgoISEoX0Y1 MjgxKSkgPDwgMTYpKQotCi0JCQkJLyogbnVtIHNlbCAgaSAgbyAgNTE4MSA1MTgyIDUyODEgKi8K LQotI2RlZmluZSBNUFBfRjUxODFfTUFTSwkJTVBQKDAsICAweDAsIDAsIDAsIDEsICAgMCwgICAw KQotI2RlZmluZSBNUFBfRjUxODJfTUFTSwkJTVBQKDAsICAweDAsIDAsIDAsIDAsICAgMSwgICAw KQotI2RlZmluZSBNUFBfRjUyODFfTUFTSwkJTVBQKDAsICAweDAsIDAsIDAsIDAsICAgMCwgICAx KQotCi0jZGVmaW5lIE1QUDBfVU5VU0VECSAgICAgICAgTVBQKDAsICAweDMsIDAsIDAsIDEsICAg MSwgICAxKQotI2RlZmluZSBNUFAwX0dQSU8JCU1QUCgwLCAgMHgzLCAxLCAxLCAxLCAgIDEsICAg MSkKLSNkZWZpbmUgTVBQMF9QQ0lFX1JTVF9PVVRuCU1QUCgwLCAgMHgwLCAwLCAwLCAxLCAgIDEs ICAgMSkKLSNkZWZpbmUgTVBQMF9QQ0lfQVJCICAgICAgICAgICAgTVBQKDAsICAweDIsIDAsIDAs IDEsICAgMSwgICAxKQotCi0jZGVmaW5lIE1QUDFfVU5VU0VECQlNUFAoMSwgIDB4MCwgMCwgMCwg MSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDFfR1BJTwkJTVBQKDEsICAweDAsIDEsIDEsIDEsICAg MSwgICAxKQotI2RlZmluZSBNUFAxX1BDSV9BUkIgICAgICAgICAgICBNUFAoMSwgIDB4MiwgMCwg MCwgMSwgICAxLCAgIDEpCi0KLSNkZWZpbmUgTVBQMl9VTlVTRUQJCU1QUCgyLCAgMHgwLCAwLCAw LCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMl9HUElPCQlNUFAoMiwgIDB4MCwgMSwgMSwgMSwg ICAxLCAgIDEpCi0jZGVmaW5lIE1QUDJfUENJX0FSQiAgICAgICAgICAgIE1QUCgyLCAgMHgyLCAw LCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMl9QQ0lfUE1FbiAgICAgICAgICAgTVBQKDIs ICAweDMsIDAsIDAsIDEsICAgMSwgICAxKQotCi0jZGVmaW5lIE1QUDNfVU5VU0VECQlNUFAoMywg IDB4MCwgMCwgMCwgMSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDNfR1BJTwkJTVBQKDMsICAweDAs IDEsIDEsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAzX1BDSV9BUkIgICAgICAgICAgICBNUFAo MywgIDB4MiwgMCwgMCwgMSwgICAxLCAgIDEpCi0KLSNkZWZpbmUgTVBQNF9VTlVTRUQJCU1QUCg0 LCAgMHgwLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQNF9HUElPCQlNUFAoNCwgIDB4 MCwgMSwgMSwgMSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDRfUENJX0FSQiAgICAgICAgICAgIE1Q UCg0LCAgMHgyLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQNF9OQU5EICAgICAgICAg ICAgICAgTVBQKDQsICAweDQsIDAsIDAsIDAsICAgMSwgICAxKQotI2RlZmluZSBNUFA0X1NBVEFf TEVEICAgICAgICAgICBNUFAoNCwgIDB4NSwgMCwgMCwgMCwgICAxLCAgIDApCi0KLSNkZWZpbmUg TVBQNV9VTlVTRUQJCU1QUCg1LCAgMHgwLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQ NV9HUElPCQlNUFAoNSwgIDB4MCwgMSwgMSwgMSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDVfUENJ X0FSQiAgICAgICAgICAgIE1QUCg1LCAgMHgyLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUg TVBQNV9OQU5EICAgICAgICAgICAgICAgTVBQKDUsICAweDQsIDAsIDAsIDAsICAgMSwgICAxKQot I2RlZmluZSBNUFA1X1NBVEFfTEVEICAgICAgICAgICBNUFAoNSwgIDB4NSwgMCwgMCwgMCwgICAx LCAgIDApCi0KLSNkZWZpbmUgTVBQNl9VTlVTRUQJCU1QUCg2LCAgMHgwLCAwLCAwLCAxLCAgIDEs ICAgMSkKLSNkZWZpbmUgTVBQNl9HUElPCQlNUFAoNiwgIDB4MCwgMSwgMSwgMSwgICAxLCAgIDEp Ci0jZGVmaW5lIE1QUDZfUENJX0FSQiAgICAgICAgICAgIE1QUCg2LCAgMHgyLCAwLCAwLCAxLCAg IDEsICAgMSkKLSNkZWZpbmUgTVBQNl9OQU5EICAgICAgICAgICAgICAgTVBQKDYsICAweDQsIDAs IDAsIDAsICAgMSwgICAxKQotI2RlZmluZSBNUFA2X1BDSV9DTEsgICAgICAgICAgICBNUFAoNiwg IDB4NSwgMCwgMCwgMSwgICAwLCAgIDApCi0jZGVmaW5lIE1QUDZfU0FUQV9MRUQgICAgICAgICAg IE1QUCg2LCAgMHg1LCAwLCAwLCAwLCAgIDEsICAgMCkKLQotI2RlZmluZSBNUFA3X1VOVVNFRAkJ TVBQKDcsICAweDAsIDAsIDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFA3X0dQSU8JCU1QUCg3 LCAgMHgwLCAxLCAxLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQN19QQ0lfQVJCICAgICAgICAg ICAgTVBQKDcsICAweDIsIDAsIDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFA3X05BTkQgICAg ICAgICAgICAgICBNUFAoNywgIDB4NCwgMCwgMCwgMCwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDdf UENJX0NMSyAgICAgICAgICAgIE1QUCg3LCAgMHg1LCAwLCAwLCAxLCAgIDAsICAgMCkKLSNkZWZp bmUgTVBQN19TQVRBX0xFRCAgICAgICAgICAgTVBQKDcsICAweDUsIDAsIDAsIDAsICAgMSwgICAw KQotCi0jZGVmaW5lIE1QUDhfVU5VU0VECQlNUFAoOCwgIDB4MCwgMCwgMCwgMSwgICAxLCAgIDEp Ci0jZGVmaW5lIE1QUDhfR1BJTwkJTVBQKDgsICAweDAsIDEsIDEsIDEsICAgMSwgICAxKQotI2Rl ZmluZSBNUFA4X0dJR0UgICAgICAgICAgICAgICBNUFAoOCwgIDB4MSwgMCwgMCwgMSwgICAxLCAg IDEpCi0KLSNkZWZpbmUgTVBQOV9VTlVTRUQJCU1QUCg5LCAgMHgwLCAwLCAwLCAxLCAgIDEsICAg MSkKLSNkZWZpbmUgTVBQOV9HUElPCQlNUFAoOSwgIDB4MCwgMSwgMSwgMSwgICAxLCAgIDEpCi0j ZGVmaW5lIE1QUDlfR0lHRSAgICAgICAgICAgICAgIE1QUCg5LCAgMHgxLCAwLCAwLCAxLCAgIDEs ICAgMSkKLQotI2RlZmluZSBNUFAxMF9VTlVTRUQJCU1QUCgxMCwgMHgwLCAwLCAwLCAxLCAgIDEs ICAgMSkKLSNkZWZpbmUgTVBQMTBfR1BJTwkJTVBQKDEwLCAweDAsIDEsIDEsIDEsICAgMSwgICAx KQotI2RlZmluZSBNUFAxMF9HSUdFICAgICAgICAgICAgICBNUFAoMTAsIDB4MSwgMCwgMCwgMSwg ICAxLCAgIDEpCi0KLSNkZWZpbmUgTVBQMTFfVU5VU0VECQlNUFAoMTEsIDB4MCwgMCwgMCwgMSwg ICAxLCAgIDEpCi0jZGVmaW5lIE1QUDExX0dQSU8JCU1QUCgxMSwgMHgwLCAxLCAxLCAxLCAgIDEs ICAgMSkKLSNkZWZpbmUgTVBQMTFfR0lHRSAgICAgICAgICAgICAgTVBQKDExLCAweDEsIDAsIDAs IDEsICAgMSwgICAxKQotCi0jZGVmaW5lIE1QUDEyX1VOVVNFRAkJTVBQKDEyLCAweDAsIDAsIDAs IDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAxMl9HUElPCQlNUFAoMTIsIDB4MCwgMSwgMSwgMSwg ICAxLCAgIDEpCi0jZGVmaW5lIE1QUDEyX0dJR0UgICAgICAgICAgICAgIE1QUCgxMiwgMHgxLCAw LCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMTJfTkFORCAgICAgICAgICAgICAgTVBQKDEy LCAweDQsIDAsIDAsIDAsICAgMSwgICAxKQotI2RlZmluZSBNUFAxMl9TQVRBX0xFRCAgICAgICAg ICBNUFAoMTIsIDB4NSwgMCwgMCwgMCwgICAxLCAgIDApCi0KLSNkZWZpbmUgTVBQMTNfVU5VU0VE CQlNUFAoMTMsIDB4MCwgMCwgMCwgMSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDEzX0dQSU8JCU1Q UCgxMywgMHgwLCAxLCAxLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMTNfR0lHRSAgICAgICAg ICAgICAgTVBQKDEzLCAweDEsIDAsIDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAxM19OQU5E ICAgICAgICAgICAgICBNUFAoMTMsIDB4NCwgMCwgMCwgMCwgICAxLCAgIDEpCi0jZGVmaW5lIE1Q UDEzX1NBVEFfTEVEICAgICAgICAgIE1QUCgxMywgMHg1LCAwLCAwLCAwLCAgIDEsICAgMCkKLQot I2RlZmluZSBNUFAxNF9VTlVTRUQJCU1QUCgxNCwgMHgwLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNk ZWZpbmUgTVBQMTRfR1BJTwkJTVBQKDE0LCAweDAsIDEsIDEsIDEsICAgMSwgICAxKQotI2RlZmlu ZSBNUFAxNF9HSUdFICAgICAgICAgICAgICBNUFAoMTQsIDB4MSwgMCwgMCwgMSwgICAxLCAgIDEp Ci0jZGVmaW5lIE1QUDE0X05BTkQgICAgICAgICAgICAgIE1QUCgxNCwgMHg0LCAwLCAwLCAwLCAg IDEsICAgMSkKLSNkZWZpbmUgTVBQMTRfU0FUQV9MRUQgICAgICAgICAgTVBQKDE0LCAweDUsIDAs IDAsIDAsICAgMSwgICAwKQotCi0jZGVmaW5lIE1QUDE1X1VOVVNFRAkJTVBQKDE1LCAweDAsIDAs IDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAxNV9HUElPCQlNUFAoMTUsIDB4MCwgMSwgMSwg MSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDE1X0dJR0UgICAgICAgICAgICAgIE1QUCgxNSwgMHgx LCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMTVfTkFORCAgICAgICAgICAgICAgTVBQ KDE1LCAweDQsIDAsIDAsIDAsICAgMSwgICAxKQotI2RlZmluZSBNUFAxNV9TQVRBX0xFRCAgICAg ICAgICBNUFAoMTUsIDB4NSwgMCwgMCwgMCwgICAxLCAgIDApCi0KLSNkZWZpbmUgTVBQMTZfVU5V U0VECQlNUFAoMTYsIDB4MCwgMCwgMCwgMSwgICAxLCAgIDEpCi0jZGVmaW5lIE1QUDE2X0dQSU8J CU1QUCgxNiwgMHg1LCAxLCAxLCAwLCAgIDEsICAgMCkKLSNkZWZpbmUgTVBQMTZfR0lHRSAgICAg ICAgICAgICAgTVBQKDE2LCAweDEsIDAsIDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAxNl9O QU5EICAgICAgICAgICAgICBNUFAoMTYsIDB4NCwgMCwgMCwgMCwgICAxLCAgIDEpCi0jZGVmaW5l IE1QUDE2X1VBUlQgICAgICAgICAgICAgIE1QUCgxNiwgMHgwLCAwLCAwLCAwLCAgIDEsICAgMSkK LQotI2RlZmluZSBNUFAxN19VTlVTRUQJCU1QUCgxNywgMHgwLCAwLCAwLCAxLCAgIDEsICAgMSkK LSNkZWZpbmUgTVBQMTdfR1BJTwkJTVBQKDE3LCAweDUsIDEsIDEsIDAsICAgMSwgICAwKQotI2Rl ZmluZSBNUFAxN19HSUdFICAgICAgICAgICAgICBNUFAoMTcsIDB4MSwgMCwgMCwgMSwgICAxLCAg IDEpCi0jZGVmaW5lIE1QUDE3X05BTkQgICAgICAgICAgICAgIE1QUCgxNywgMHg0LCAwLCAwLCAw LCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMTdfVUFSVCAgICAgICAgICAgICAgTVBQKDE3LCAweDAs IDAsIDAsIDAsICAgMSwgICAxKQotCi0jZGVmaW5lIE1QUDE4X1VOVVNFRAkJTVBQKDE4LCAweDAs IDAsIDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAxOF9HUElPCQlNUFAoMTgsIDB4NSwgMSwg MSwgMCwgICAxLCAgIDApCi0jZGVmaW5lIE1QUDE4X0dJR0UgICAgICAgICAgICAgIE1QUCgxOCwg MHgxLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMThfVUFSVCAgICAgICAgICAgICAg TVBQKDE4LCAweDAsIDAsIDAsIDAsICAgMSwgICAxKQotCi0jZGVmaW5lIE1QUDE5X1VOVVNFRAkJ TVBQKDE5LCAweDAsIDAsIDAsIDEsICAgMSwgICAxKQotI2RlZmluZSBNUFAxOV9HUElPCQlNUFAo MTksIDB4NSwgMSwgMSwgMCwgICAxLCAgIDApCi0jZGVmaW5lIE1QUDE5X0dJR0UgICAgICAgICAg ICAgIE1QUCgxOSwgMHgxLCAwLCAwLCAxLCAgIDEsICAgMSkKLSNkZWZpbmUgTVBQMTlfVUFSVCAg ICAgICAgICAgICAgTVBQKDE5LCAweDAsIDAsIDAsIDAsICAgMSwgICAxKQotCi0jZGVmaW5lIE1Q UF9NQVgJCQkxOQotCi12b2lkIG9yaW9uNXhfbXBwX2NvbmYodW5zaWduZWQgaW50ICptcHBfbGlz dCk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L212MjEyMC1z ZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L212MjEyMC1zZXR1cC5jCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBiMTVmZTViN2EwZjkuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLW9yaW9uNXgvbXYyMTIwLXNldHVwLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYg KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBIZXJiZXJ0IFZhbGVyaW8gUmllZGVs IDxodnJAZ251Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBNYXJ0aW4gTWljaGxtYXlyIDx0 Ym1AY3lyaXVzLmNvbT4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZQotICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq LwotI2luY2x1ZGUgPGxpbnV4L2dwaW8vbGVnYWN5Lmg+Ci0jaW5jbHVkZSA8bGludXgvZ3Bpby9t YWNoaW5lLmg+Ci0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5p dC5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4 L2lycS5oPgotI2luY2x1ZGUgPGxpbnV4L210ZC9waHlzbWFwLmg+Ci0jaW5jbHVkZSA8bGludXgv bXY2NDN4eF9ldGguaD4KLSNpbmNsdWRlIDxsaW51eC9sZWRzLmg+Ci0jaW5jbHVkZSA8bGludXgv Z3Bpb19rZXlzLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KLSNpbmNsdWRlIDxsaW51eC9p MmMuaD4KLSNpbmNsdWRlIDxsaW51eC9hdGFfcGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxhc20vbWFj aC10eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KLSNpbmNsdWRlICJjb21tb24u aCIKLSNpbmNsdWRlICJtcHAuaCIKLSNpbmNsdWRlICJvcmlvbjV4LmgiCi0KLSNkZWZpbmUgTVYy MTIwX05PUl9CT09UX0JBU0UJMHhmNDAwMDAwMAotI2RlZmluZSBNVjIxMjBfTk9SX0JPT1RfU0la RQlTWl81MTJLCi0KLSNkZWZpbmUgTVYyMTIwX0dQSU9fUlRDX0lSUQkzCi0jZGVmaW5lIE1WMjEy MF9HUElPX0tFWV9SRVNFVAkxNwotI2RlZmluZSBNVjIxMjBfR1BJT19LRVlfUE9XRVIJMTgKLSNk ZWZpbmUgTVYyMTIwX0dQSU9fUE9XRVJfT0ZGCTE5Ci0KLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBFdGhlcm5ldAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG12NjQz eHhfZXRoX3BsYXRmb3JtX2RhdGEgbXYyMTIwX2V0aF9kYXRhID0gewotCS5waHlfYWRkcgk9IE1W NjQzWFhfRVRIX1BIWV9BRERSKDgpLAotfTsKLQotc3RhdGljIHN0cnVjdCBtdl9zYXRhX3BsYXRm b3JtX2RhdGEgbXYyMTIwX3NhdGFfZGF0YSA9IHsKLQkubl9wb3J0cwk9IDIsCi19OwotCi1zdGF0 aWMgc3RydWN0IG10ZF9wYXJ0aXRpb24gbXYyMTIwX3BhcnRpdGlvbnNbXSA9IHsKLQl7Ci0JCS5u YW1lCT0gImZpcm13YXJlIiwKLQkJLnNpemUJPSAweDAwMDgwMDAwLAotCQkub2Zmc2V0CT0gMCwK LQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2RhdGEgbXYyMTIwX25vcl9m bGFzaF9kYXRhID0gewotCS53aWR0aAkJPSAxLAotCS5wYXJ0cwkJPSBtdjIxMjBfcGFydGl0aW9u cywKLQkubnJfcGFydHMJPSBBUlJBWV9TSVpFKG12MjEyMF9wYXJ0aXRpb25zKQotfTsKLQotc3Rh dGljIHN0cnVjdCByZXNvdXJjZSBtdjIxMjBfbm9yX2ZsYXNoX3Jlc291cmNlID0gewotCS5mbGFn cwkJPSBJT1JFU09VUkNFX01FTSwKLQkuc3RhcnQJCT0gTVYyMTIwX05PUl9CT09UX0JBU0UsCi0J LmVuZAkJPSBNVjIxMjBfTk9SX0JPT1RfQkFTRSArIE1WMjEyMF9OT1JfQk9PVF9TSVpFIC0gMSwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG12MjEyMF9ub3JfZmxhc2ggPSB7 Ci0JLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAotCS5pZAkJPSAwLAotCS5kZXYJCT0gewotCQku cGxhdGZvcm1fZGF0YQk9ICZtdjIxMjBfbm9yX2ZsYXNoX2RhdGEsCi0JfSwKLQkucmVzb3VyY2UJ PSAmbXYyMTIwX25vcl9mbGFzaF9yZXNvdXJjZSwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi19Owot Ci1zdGF0aWMgc3RydWN0IGdwaW9fa2V5c19idXR0b24gbXYyMTIwX2J1dHRvbnNbXSA9IHsKLQl7 Ci0JCS5jb2RlCQk9IEtFWV9SRVNUQVJULAotCQkuZ3BpbwkJPSBNVjIxMjBfR1BJT19LRVlfUkVT RVQsCi0JCS5kZXNjCQk9ICJyZXNldCIsCi0JCS5hY3RpdmVfbG93CT0gMSwKLQl9LCB7Ci0JCS5j b2RlCQk9IEtFWV9QT1dFUiwKLQkJLmdwaW8JCT0gTVYyMTIwX0dQSU9fS0VZX1BPV0VSLAotCQku ZGVzYwkJPSAicG93ZXIiLAotCQkuYWN0aXZlX2xvdwk9IDEsCi0JfSwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgbXYyMTIwX2J1dHRvbl9kYXRhID0gewotCS5i dXR0b25zCT0gbXYyMTIwX2J1dHRvbnMsCi0JLm5idXR0b25zCT0gQVJSQVlfU0laRShtdjIxMjBf YnV0dG9ucyksCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBtdjIxMjBfYnV0 dG9uX2RldmljZSA9IHsKLQkubmFtZQkJPSAiZ3Bpby1rZXlzIiwKLQkuaWQJCT0gLTEsCi0JLm51 bV9yZXNvdXJjZXMJPSAwLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZtdjIxMjBf YnV0dG9uX2RhdGEsCi0JfSwKLX07Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdlbmVy YWwgU2V0dXAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHVuc2lnbmVkIGludCBtdjIx MjBfbXBwX21vZGVzW10gX19pbml0ZGF0YSA9IHsKLQlNUFAwX0dQSU8sCQkvKiBTeXMgc3RhdHVz IExFRCAqLwotCU1QUDFfR1BJTywJCS8qIFN5cyBlcnJvciBMRUQgKi8KLQlNUFAyX0dQSU8sCQkv KiBPdmVyVGVtcCBpbnRlcnJ1cHQgKi8KLQlNUFAzX0dQSU8sCQkvKiBSVEMgaW50ZXJydXB0ICov Ci0JTVBQNF9HUElPLAkJLyogVl9MRUQgNVYgKi8KLQlNUFA1X0dQSU8sCQkvKiBWX0xFRCAzLjNW ICovCi0JTVBQNl9VTlVTRUQsCi0JTVBQN19VTlVTRUQsCi0JTVBQOF9HUElPLAkJLyogU0FUQSAw IGZhaWwgTEVEICovCi0JTVBQOV9HUElPLAkJLyogU0FUQSAxIGZhaWwgTEVEICovCi0JTVBQMTBf VU5VU0VELAotCU1QUDExX1VOVVNFRCwKLQlNUFAxMl9TQVRBX0xFRCwJCS8qIFNBVEEgMCBwcmVz ZW5jZSAqLwotCU1QUDEzX1NBVEFfTEVELAkJLyogU0FUQSAxIHByZXNlbmNlICovCi0JTVBQMTRf U0FUQV9MRUQsCQkvKiBTQVRBIDAgYWN0aXZlICovCi0JTVBQMTVfU0FUQV9MRUQsCQkvKiBTQVRB IDEgYWN0aXZlICovCi0JTVBQMTZfVU5VU0VELAotCU1QUDE3X0dQSU8sCQkvKiBSZXNldCBidXR0 b24gKi8KLQlNUFAxOF9HUElPLAkJLyogUG93ZXIgYnV0dG9uICovCi0JTVBQMTlfR1BJTywJCS8q IFBvd2VyIG9mZiAqLwotCTAsCi19OwotCi1zdGF0aWMgc3RydWN0IGkyY19ib2FyZF9pbmZvIF9f aW5pdGRhdGEgbXYyMTIwX2kyY19ydGMgPSB7Ci0JSTJDX0JPQVJEX0lORk8oInBjZjg1NjMiLCAw eDUxKSwKLQkuaXJxCT0gMCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19sZWQgbXYyMTIwX2xl ZF9waW5zW10gPSB7Ci0JewotCQkubmFtZQkJCT0gIm12MjEyMDpibHVlOmhlYWx0aCIsCi0JfSwK LQl7Ci0JCS5uYW1lCQkJPSAibXYyMTIwOnJlZDpoZWFsdGgiLAotCX0sCi0JewotCQkubmFtZQkJ CT0gIm12MjEyMDpsZWQ6YnJpZ2h0IiwKLQkJLmRlZmF1bHRfdHJpZ2dlcgk9ICJkZWZhdWx0LW9u IiwKLQl9LAotCXsKLQkJLm5hbWUJCQk9ICJtdjIxMjA6bGVkOmRpbW1lZCIsCi0JfSwKLQl7Ci0J CS5uYW1lCQkJPSAibXYyMTIwOnJlZDpzYXRhMCIsCi0JfSwKLQl7Ci0JCS5uYW1lCQkJPSAibXYy MTIwOnJlZDpzYXRhMSIsCi0JfSwKLQotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvZF9sb29rdXBf dGFibGUgbXYyMTIwX2xlZHNfZ3Bpb190YWJsZSA9IHsKLQkuZGV2X2lkID0gImxlZHMtZ3BpbyIs Ci0JLnRhYmxlID0gewotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgMCwgTlVMTCwK LQkJCQkwLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlv MCIsIDEsIE5VTEwsCi0JCQkJMSwgR1BJT19BQ1RJVkVfSElHSCksCi0JCUdQSU9fTE9PS1VQX0lE WCgib3Jpb25fZ3BpbzAiLCA0LCBOVUxMLAotCQkJCTIsIEdQSU9fQUNUSVZFX0hJR0gpLAotCQlH UElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgNSwgTlVMTCwKLQkJCQkzLCBHUElPX0FDVElW RV9ISUdIKSwKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIDgsIE5VTEwsCi0JCQkJ NCwgR1BJT19BQ1RJVkVfTE9XKSwKLQkJR1BJT19MT09LVVBfSURYKCJvcmlvbl9ncGlvMCIsIDks IE5VTEwsCi0JCQkJNSwgR1BJT19BQ1RJVkVfTE9XKSwKLQkJeyB9LAotCX0sCi19OwotCi1zdGF0 aWMgc3RydWN0IGdwaW9fbGVkX3BsYXRmb3JtX2RhdGEgbXYyMTIwX2xlZF9kYXRhID0gewotCS5s ZWRzCQk9IG12MjEyMF9sZWRfcGlucywKLQkubnVtX2xlZHMJPSBBUlJBWV9TSVpFKG12MjEyMF9s ZWRfcGlucyksCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBtdjIxMjBfbGVk cyA9IHsKLQkubmFtZQk9ICJsZWRzLWdwaW8iLAotCS5pZAk9IC0xLAotCS5kZXYJPSB7Ci0JCS5w bGF0Zm9ybV9kYXRhCT0gJm12MjEyMF9sZWRfZGF0YSwKLQl9Ci19OwotCi1zdGF0aWMgdm9pZCBt djIxMjBfcG93ZXJfb2ZmKHZvaWQpCi17Ci0JcHJfaW5mbygiJXM6IHRyaWdnZXJpbmcgcG93ZXIt b2ZmLi4uXG4iLCBfX2Z1bmNfXyk7Ci0JZ3Bpb19zZXRfdmFsdWUoTVYyMTIwX0dQSU9fUE9XRVJf T0ZGLCAwKTsKLX0KLQotc3RhdGljIHZvaWQgX19pbml0IG12MjEyMF9pbml0KHZvaWQpCi17Ci0J LyogU2V0dXAgYmFzaWMgT3Jpb24gZnVuY3Rpb25zLiBOZWVkIHRvIGJlIGNhbGxlZCBlYXJseS4g Ki8KLQlvcmlvbjV4X2luaXQoKTsKLQotCW9yaW9uNXhfbXBwX2NvbmYobXYyMTIwX21wcF9tb2Rl cyk7Ci0KLQkvKgotCSAqIENvbmZpZ3VyZSBwZXJpcGhlcmFscy4KLQkgKi8KLQlvcmlvbjV4X2Vo Y2kwX2luaXQoKTsKLQlvcmlvbjV4X2VoY2kxX2luaXQoKTsKLQlvcmlvbjV4X2V0aF9pbml0KCZt djIxMjBfZXRoX2RhdGEpOwotCW9yaW9uNXhfaTJjX2luaXQoKTsKLQlvcmlvbjV4X3NhdGFfaW5p dCgmbXYyMTIwX3NhdGFfZGF0YSk7Ci0Jb3Jpb241eF91YXJ0MF9pbml0KCk7Ci0Jb3Jpb241eF94 b3JfaW5pdCgpOwotCi0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKE9SSU9OX01CVVNfREVW QlVTX0JPT1RfVEFSR0VULAotCQkJCSAgICBPUklPTl9NQlVTX0RFVkJVU19CT09UX0FUVFIsCi0J CQkJICAgIE1WMjEyMF9OT1JfQk9PVF9CQVNFLAotCQkJCSAgICBNVjIxMjBfTk9SX0JPT1RfU0la RSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZtdjIxMjBfbm9yX2ZsYXNoKTsKLQotCXBs YXRmb3JtX2RldmljZV9yZWdpc3RlcigmbXYyMTIwX2J1dHRvbl9kZXZpY2UpOwotCi0JaWYgKGdw aW9fcmVxdWVzdChNVjIxMjBfR1BJT19SVENfSVJRLCAicnRjIikgPT0gMCkgewotCQlpZiAoZ3Bp b19kaXJlY3Rpb25faW5wdXQoTVYyMTIwX0dQSU9fUlRDX0lSUSkgPT0gMCkKLQkJCW12MjEyMF9p MmNfcnRjLmlycSA9IGdwaW9fdG9faXJxKE1WMjEyMF9HUElPX1JUQ19JUlEpOwotCQllbHNlCi0J CQlncGlvX2ZyZWUoTVYyMTIwX0dQSU9fUlRDX0lSUSk7Ci0JfQotCWkyY19yZWdpc3Rlcl9ib2Fy ZF9pbmZvKDAsICZtdjIxMjBfaTJjX3J0YywgMSk7Ci0JZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgm bXYyMTIwX2xlZHNfZ3Bpb190YWJsZSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZtdjIx MjBfbGVkcyk7Ci0KLQkvKiByZWdpc3RlciBtdjIxMjAgc3BlY2lmaWMgcG93ZXItb2ZmIG1ldGhv ZCAqLwotCWlmIChncGlvX3JlcXVlc3QoTVYyMTIwX0dQSU9fUE9XRVJfT0ZGLCAiUE9XRVJPRkYi KSAhPSAwIHx8Ci0JICAgIGdwaW9fZGlyZWN0aW9uX291dHB1dChNVjIxMjBfR1BJT19QT1dFUl9P RkYsIDEpICE9IDApCi0JCXByX2VycigibXYyMTIwOiBmYWlsZWQgdG8gc2V0dXAgcG93ZXItb2Zm IEdQSU9cbiIpOwotCXJlZ2lzdGVyX3BsYXRmb3JtX3Bvd2VyX29mZihtdjIxMjBfcG93ZXJfb2Zm KTsKLX0KLQotLyogV2FybmluZzogSFAgdXNlcyBhIHdyb25nIG1hY2gtdHlwZSAoPTUyNikgaW4g dGhlaXIgYm9vdGxvYWRlciAqLwotTUFDSElORV9TVEFSVChNVjIxMjAsICJIUCBNZWRpYSBWYXVs dCBtdjIxMjAiKQotCS8qIE1haW50YWluZXI6IE1hcnRpbiBNaWNobG1heXIgPHRibUBjeXJpdXMu Y29tPiAqLwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0gT1JJT041WF9OUl9J UlFTLAotCS5pbml0X21hY2hpbmUJPSBtdjIxMjBfaW5pdCwKLQkubWFwX2lvCQk9IG9yaW9uNXhf bWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9pbml0X2Vhcmx5LAotCS5pbml0X2lycQk9 IG9yaW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG9yaW9uNXhfdGltZXJfaW5pdCwKLQku Zml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0YXJ0CT0gb3Jpb241eF9yZXN0YXJ0LAot TUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNl dHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvbmV0MmJpZy1zZXR1cC5jCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBmMDQ1NzFlNzk4MDUuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLW9yaW9uNXgvbmV0MmJpZy1zZXR1cC5jCisrKyAvZGV2L251bGwKQEAgLTEsNDQ0 ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0g KiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvbmV0MmJpZy1zZXR1cC5jCi0gKgotICogTGFDaWUgMkJp ZyBOZXR3b3JrIE5BUyBzZXR1cAotICoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBTaW1vbiBHdWlu b3QgPHNndWlub3RAbGFjaWUuY29tPgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K LSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+Ci0jaW5jbHVkZSA8bGludXgvbXRkL3BoeXNtYXAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdjY0 M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KLSNpbmNsdWRlIDxsaW51eC9ncGlv X2tleXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2luY2x1ZGUgPGxpbnV4L2kyYy5o PgotI2luY2x1ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8v bGVnYWN5Lmg+Ci0jaW5jbHVkZSA8bGludXgvZ3Bpby9tYWNoaW5lLmg+Ci0jaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9t YWNoL2FyY2guaD4KLSNpbmNsdWRlIDxwbGF0L29yaW9uLWdwaW8uaD4KLSNpbmNsdWRlICJjb21t b24uaCIKLSNpbmNsdWRlICJtcHAuaCIKLSNpbmNsdWRlICJvcmlvbjV4LmgiCi0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogTGFDaWUgMkJpZyBOZXR3b3JrIEluZm8KLSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotCi0vKgotICogNTEyS0IgTk9SIGZsYXNoIERldmljZSBidXMgYm9vdCBjaGlwIHNl bGVjdAotICovCi0KLSNkZWZpbmUgTkVUMkJJR19OT1JfQk9PVF9CQVNFCQkweGZmZjgwMDAwCi0j ZGVmaW5lIE5FVDJCSUdfTk9SX0JPT1RfU0laRQkJU1pfNTEySwotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIDUxMktCIE5PUiBGbGFzaCBvbiBCb290IERldmljZQotICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCi0KLS8qCi0gKiBUT0RPOiBDaGVjayB3cml0ZSBzdXBwb3J0IG9uIGZsYXNoIE1YMjlM VjQwMENCVEMtNzBHCi0gKi8KLQotc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIG5ldDJiaWdf cGFydGl0aW9uc1tdID0gewotCXsKLQkJLm5hbWUJCT0gIkZ1bGw1MTJrYiIsCi0JCS5zaXplCQk9 IE1URFBBUlRfU0laX0ZVTEwsCi0JCS5vZmZzZXQJCT0gMHgwMDAwMDAwMCwKLQkJLm1hc2tfZmxh Z3MJPSBNVERfV1JJVEVBQkxFLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxh c2hfZGF0YSBuZXQyYmlnX25vcl9mbGFzaF9kYXRhID0gewotCS53aWR0aAkJPSAxLAotCS5wYXJ0 cwkJPSBuZXQyYmlnX3BhcnRpdGlvbnMsCi0JLm5yX3BhcnRzCT0gQVJSQVlfU0laRShuZXQyYmln X3BhcnRpdGlvbnMpLAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBuZXQyYmlnX25vcl9m bGFzaF9yZXNvdXJjZSA9IHsKLQkuZmxhZ3MJCQk9IElPUkVTT1VSQ0VfTUVNLAotCS5zdGFydAkJ CT0gTkVUMkJJR19OT1JfQk9PVF9CQVNFLAotCS5lbmQJCQk9IE5FVDJCSUdfTk9SX0JPT1RfQkFT RQotCQkJCQkrIE5FVDJCSUdfTk9SX0JPT1RfU0laRSAtIDEsCi19OwotCi1zdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RldmljZSBuZXQyYmlnX25vcl9mbGFzaCA9IHsKLQkubmFtZQkJCT0gInBoeXNt YXAtZmxhc2giLAotCS5pZAkJCT0gMCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAm bmV0MmJpZ19ub3JfZmxhc2hfZGF0YSwKLQl9LAotCS5udW1fcmVzb3VyY2VzCQk9IDEsCi0JLnJl c291cmNlCQk9ICZuZXQyYmlnX25vcl9mbGFzaF9yZXNvdXJjZSwKLX07Ci0KLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgotICogRXRoZXJuZXQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMg c3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgbmV0MmJpZ19ldGhfZGF0YSA9IHsKLQku cGh5X2FkZHIJPSBNVjY0M1hYX0VUSF9QSFlfQUREUig4KSwKLX07Ci0KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgotICogSTJDIGRldmljZXMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICog aTJjIGFkZHIgfCBjaGlwICAgICAgICAgfCBkZXNjcmlwdGlvbgotICogMHgzMiAgICAgfCBSaWNv aCA1QzM3MmIgfCBSVEMKLSAqIDB4NTAgICAgIHwgSFQyNExDMDggICAgIHwgZWVwcm9tICgxa0Ip Ci0gKi8KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gX19pbml0ZGF0YSBuZXQyYmlnX2ky Y19kZXZpY2VzW10gPSB7Ci0JewotCQlJMkNfQk9BUkRfSU5GTygicnM1YzM3MmIiLCAweDMyKSwK LQl9LCB7Ci0JCUkyQ19CT0FSRF9JTkZPKCIyNGMwOCIsIDB4NTApLAotCX0sCi19OwotCi0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLSAqIFNBVEEKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0 aWMgc3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSBuZXQyYmlnX3NhdGFfZGF0YSA9IHsKLQku bl9wb3J0cwk9IDIsCi19OwotCi0jZGVmaW5lIE5FVDJCSUdfR1BJT19TQVRBX1BPV0VSX1JFUQkx OQotI2RlZmluZSBORVQyQklHX0dQSU9fU0FUQTBfUE9XRVIJMjMKLSNkZWZpbmUgTkVUMkJJR19H UElPX1NBVEExX1BPV0VSCTI1Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBuZXQyYmlnX3NhdGFfcG93 ZXJfaW5pdCh2b2lkKQotewotCWludCBlcnI7Ci0KLQkvKiBDb25maWd1cmUgR1BJT3Mgb3ZlciBN UFAgbWF4IG51bWJlci4gKi8KLQlvcmlvbl9ncGlvX3NldF92YWxpZChORVQyQklHX0dQSU9fU0FU QTBfUE9XRVIsIDEpOwotCW9yaW9uX2dwaW9fc2V0X3ZhbGlkKE5FVDJCSUdfR1BJT19TQVRBMV9Q T1dFUiwgMSk7Ci0KLQllcnIgPSBncGlvX3JlcXVlc3QoTkVUMkJJR19HUElPX1NBVEEwX1BPV0VS LCAiU0FUQTAgcG93ZXIgc3RhdHVzIik7Ci0JaWYgKGVyciA9PSAwKSB7Ci0JCWVyciA9IGdwaW9f ZGlyZWN0aW9uX2lucHV0KE5FVDJCSUdfR1BJT19TQVRBMF9QT1dFUik7Ci0JCWlmIChlcnIpCi0J CQlncGlvX2ZyZWUoTkVUMkJJR19HUElPX1NBVEEwX1BPV0VSKTsKLQl9Ci0JaWYgKGVycikgewot CQlwcl9lcnIoIm5ldDJiaWc6IGZhaWxlZCB0byBzZXR1cCBTQVRBMCBwb3dlciBHUElPXG4iKTsK LQkJcmV0dXJuOwotCX0KLQotCWVyciA9IGdwaW9fcmVxdWVzdChORVQyQklHX0dQSU9fU0FUQTFf UE9XRVIsICJTQVRBMSBwb3dlciBzdGF0dXMiKTsKLQlpZiAoZXJyID09IDApIHsKLQkJZXJyID0g Z3Bpb19kaXJlY3Rpb25faW5wdXQoTkVUMkJJR19HUElPX1NBVEExX1BPV0VSKTsKLQkJaWYgKGVy cikKLQkJCWdwaW9fZnJlZShORVQyQklHX0dQSU9fU0FUQTFfUE9XRVIpOwotCX0KLQlpZiAoZXJy KSB7Ci0JCXByX2VycigibmV0MmJpZzogZmFpbGVkIHRvIHNldHVwIFNBVEExIHBvd2VyIEdQSU9c biIpOwotCQlnb3RvIGVycl9mcmVlXzE7Ci0JfQotCi0JZXJyID0gZ3Bpb19yZXF1ZXN0KE5FVDJC SUdfR1BJT19TQVRBX1BPV0VSX1JFUSwgIlNBVEEgcG93ZXIgcmVxdWVzdCIpOwotCWlmIChlcnIg PT0gMCkgewotCQllcnIgPSBncGlvX2RpcmVjdGlvbl9vdXRwdXQoTkVUMkJJR19HUElPX1NBVEFf UE9XRVJfUkVRLCAwKTsKLQkJaWYgKGVycikKLQkJCWdwaW9fZnJlZShORVQyQklHX0dQSU9fU0FU QV9QT1dFUl9SRVEpOwotCX0KLQlpZiAoZXJyKSB7Ci0JCXByX2VycigibmV0MmJpZzogZmFpbGVk IHRvIHNldHVwIFNBVEEgcG93ZXIgcmVxdWVzdCBHUElPXG4iKTsKLQkJZ290byBlcnJfZnJlZV8y OwotCX0KLQotCWlmIChncGlvX2dldF92YWx1ZShORVQyQklHX0dQSU9fU0FUQTBfUE9XRVIpICYm Ci0JCWdwaW9fZ2V0X3ZhbHVlKE5FVDJCSUdfR1BJT19TQVRBMV9QT1dFUikpIHsKLQkJcmV0dXJu OwotCX0KLQotCS8qCi0JICogU0FUQSBwb3dlciB1cCBvbiBib3RoIGRpc2sgaXMgZG9uZSBieSBw dWxsaW5nIGhpZ2ggdGhlIENQTEQgcG93ZXIKLQkgKiByZXF1ZXN0IGxpbmUuIFRoZSAzMDBtcyBk ZWxheSBpcyByZWxhdGVkIHRvIHRoZSBDUExEIGNsb2NrIGFuZCBpcwotCSAqIG5lZWRlZCB0byBi ZSBzdXJlIHRoYXQgdGhlIENQTEQgaGFzIHRha2UgaW50byBhY2NvdW50IHRoZSBsb3cgbGluZQot CSAqIHN0YXR1cy4KLQkgKi8KLQltc2xlZXAoMzAwKTsKLQlncGlvX3NldF92YWx1ZShORVQyQklH X0dQSU9fU0FUQV9QT1dFUl9SRVEsIDEpOwotCXByX2luZm8oIm5ldDJiaWc6IHBvd2VyIHVwIFNB VEEgaGFyZCBkaXNrc1xuIik7Ci0KLQlyZXR1cm47Ci0KLWVycl9mcmVlXzI6Ci0JZ3Bpb19mcmVl KE5FVDJCSUdfR1BJT19TQVRBMV9QT1dFUik7Ci1lcnJfZnJlZV8xOgotCWdwaW9fZnJlZShORVQy QklHX0dQSU9fU0FUQTBfUE9XRVIpOwotCi0JcmV0dXJuOwotfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIEdQSU8gTEVEcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBUaGUg cG93ZXIgZnJvbnQgTEVEcyAoYmx1ZSBhbmQgcmVkKSBhbmQgU0FUQSByZWQgTEVEcyBhcmUgY29u dHJvbGxlZCB2aWEgYQotICogc2luZ2xlIEdQSU8gbGluZSBhbmQgYXJlIGNvbXBhdGlibGUgd2l0 aCB0aGUgbGVkcy1ncGlvIGRyaXZlci4KLSAqCi0gKiBUaGUgU0FUQSBibHVlIExFRHMgaGF2ZSBz b21lIGhhcmR3YXJlIGJsaW5rIGNhcGFiaWxpdGllcyB3aGljaCBhcmUgZGV0YWlsZWQKLSAqIGlu IHRoZSBmb2xsb3dpbmcgYXJyYXk6Ci0gKgotICogU0FUQXggYmx1ZSBMRUQgfCBTQVRBeCBhY3Rp dml0eSB8IExFRCBzdGF0ZQotICogICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8Ci0g KiAgICAgICAwICAgICAgICB8ICAgICAgIDAgICAgICAgIHwgIGJsaW5rIChyYXRlIDMwMG1zKQot ICogICAgICAgMSAgICAgICAgfCAgICAgICAwICAgICAgICB8ICBvZmYKLSAqICAgICAgID8gICAg ICAgIHwgICAgICAgMSAgICAgICAgfCAgb24KLSAqCi0gKiBOb3RlczogVGhlIGJsdWUgYW5kIHRo ZSByZWQgZnJvbnQgTEVEJ3MgY2FuJ3QgYmUgb24gYXQgdGhlIHNhbWUgdGltZS4KLSAqICAgICAg ICBCbHVlIExFRCBoYXZlIHByaW9yaXR5LgotICovCi0KLSNkZWZpbmUgTkVUMkJJR19HUElPX1BX Ul9SRURfTEVECTYKLSNkZWZpbmUgTkVUMkJJR19HUElPX1BXUl9CTFVFX0xFRAkxNgotI2RlZmlu ZSBORVQyQklHX0dQSU9fUFdSX0xFRF9CTElOS19TVE9QCTcKLQotI2RlZmluZSBORVQyQklHX0dQ SU9fU0FUQTBfUkVEX0xFRAkxMQotI2RlZmluZSBORVQyQklHX0dQSU9fU0FUQTFfUkVEX0xFRAkx MAotCi0jZGVmaW5lIE5FVDJCSUdfR1BJT19TQVRBMF9CTFVFX0xFRAkxNwotI2RlZmluZSBORVQy QklHX0dQSU9fU0FUQTFfQkxVRV9MRUQJMTMKLQotc3RhdGljIHN0cnVjdCBncGlvX2xlZCBuZXQy YmlnX2xlZHNbXSA9IHsKLQl7Ci0JCS5uYW1lID0gIm5ldDJiaWc6cmVkOnBvd2VyIiwKLQl9LAot CXsKLQkJLm5hbWUgPSAibmV0MmJpZzpibHVlOnBvd2VyIiwKLQl9LAotCXsKLQkJLm5hbWUgPSAi bmV0MmJpZzpyZWQ6c2F0YTAiLAotCX0sCi0JewotCQkubmFtZSA9ICJuZXQyYmlnOnJlZDpzYXRh MSIsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb2RfbG9va3VwX3RhYmxlIG5ldDJiaWdf bGVkc19ncGlvX3RhYmxlID0gewotCS5kZXZfaWQgPSAibGVkcy1ncGlvIiwKLQkudGFibGUgPSB7 Ci0JCUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCBORVQyQklHX0dQSU9fUFdSX1JFRF9M RUQsIE5VTEwsCi0JCQkJMCwgR1BJT19BQ1RJVkVfSElHSCksCi0JCUdQSU9fTE9PS1VQX0lEWCgi b3Jpb25fZ3BpbzAiLCBORVQyQklHX0dQSU9fUFdSX0JMVUVfTEVELCBOVUxMLAotCQkJCTEsIEdQ SU9fQUNUSVZFX0hJR0gpLAotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgTkVUMkJJ R19HUElPX1NBVEEwX1JFRF9MRUQsIE5VTEwsCi0JCQkJMiwgR1BJT19BQ1RJVkVfSElHSCksCi0J CUdQSU9fTE9PS1VQX0lEWCgib3Jpb25fZ3BpbzAiLCBORVQyQklHX0dQSU9fU0FUQTFfUkVEX0xF RCwgTlVMTCwKLQkJCQkzLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJeyB9LAotCX0sCi19OwotCi1z dGF0aWMgc3RydWN0IGdwaW9fbGVkX3BsYXRmb3JtX2RhdGEgbmV0MmJpZ19sZWRfZGF0YSA9IHsK LQkubnVtX2xlZHMgPSBBUlJBWV9TSVpFKG5ldDJiaWdfbGVkcyksCi0JLmxlZHMgPSBuZXQyYmln X2xlZHMsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuZXQyYmlnX2dwaW9f bGVkcyA9IHsKLQkubmFtZSAgICAgICAgICAgPSAibGVkcy1ncGlvIiwKLQkuaWQgICAgICAgICAg ICAgPSAtMSwKLQkuZGV2ICAgICAgICAgICAgPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhICA9ICZuZXQy YmlnX2xlZF9kYXRhLAotCX0sCi19OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgbmV0MmJpZ19ncGlv X2xlZHNfaW5pdCh2b2lkKQotewotCWludCBlcnI7Ci0KLQkvKiBTdG9wIGluaXRpYWwgQ1BMRCBz bG93IHJlZC9ibHVlIGJsaW5raW5nIG9uIHBvd2VyIExFRC4gKi8KLQllcnIgPSBncGlvX3JlcXVl c3QoTkVUMkJJR19HUElPX1BXUl9MRURfQkxJTktfU1RPUCwKLQkJCSAgICJQb3dlciBMRUQgYmxp bmsgc3RvcCIpOwotCWlmIChlcnIgPT0gMCkgewotCQllcnIgPSBncGlvX2RpcmVjdGlvbl9vdXRw dXQoTkVUMkJJR19HUElPX1BXUl9MRURfQkxJTktfU1RPUCwgMSk7Ci0JCWlmIChlcnIpCi0JCQln cGlvX2ZyZWUoTkVUMkJJR19HUElPX1BXUl9MRURfQkxJTktfU1RPUCk7Ci0JfQotCWlmIChlcnIp Ci0JCXByX2VycigibmV0MmJpZzogZmFpbGVkIHRvIHNldHVwIHBvd2VyIExFRCBibGluayBHUElP XG4iKTsKLQotCS8qCi0JICogQ29uZmlndXJlIFNBVEEwIGFuZCBTQVRBMSBibHVlIExFRHMgdG8g YmxpbmsgaW4gcmVsYXRpb24gd2l0aCB0aGUKLQkgKiBoYXJkIGRpc2sgYWN0aXZpdHkuCi0JICov Ci0JZXJyID0gZ3Bpb19yZXF1ZXN0KE5FVDJCSUdfR1BJT19TQVRBMF9CTFVFX0xFRCwKLQkJCSAg ICJTQVRBMCBibHVlIExFRCBjb250cm9sIik7Ci0JaWYgKGVyciA9PSAwKSB7Ci0JCWVyciA9IGdw aW9fZGlyZWN0aW9uX291dHB1dChORVQyQklHX0dQSU9fU0FUQTBfQkxVRV9MRUQsIDEpOwotCQlp ZiAoZXJyKQotCQkJZ3Bpb19mcmVlKE5FVDJCSUdfR1BJT19TQVRBMF9CTFVFX0xFRCk7Ci0JfQot CWlmIChlcnIpCi0JCXByX2VycigibmV0MmJpZzogZmFpbGVkIHRvIHNldHVwIFNBVEEwIGJsdWUg TEVEIEdQSU9cbiIpOwotCi0JZXJyID0gZ3Bpb19yZXF1ZXN0KE5FVDJCSUdfR1BJT19TQVRBMV9C TFVFX0xFRCwKLQkJCSAgICJTQVRBMSBibHVlIExFRCBjb250cm9sIik7Ci0JaWYgKGVyciA9PSAw KSB7Ci0JCWVyciA9IGdwaW9fZGlyZWN0aW9uX291dHB1dChORVQyQklHX0dQSU9fU0FUQTFfQkxV RV9MRUQsIDEpOwotCQlpZiAoZXJyKQotCQkJZ3Bpb19mcmVlKE5FVDJCSUdfR1BJT19TQVRBMV9C TFVFX0xFRCk7Ci0JfQotCWlmIChlcnIpCi0JCXByX2VycigibmV0MmJpZzogZmFpbGVkIHRvIHNl dHVwIFNBVEExIGJsdWUgTEVEIEdQSU9cbiIpOwotCi0JZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgm bmV0MmJpZ19sZWRzX2dwaW9fdGFibGUpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmbmV0 MmJpZ19ncGlvX2xlZHMpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogR1BJTyBrZXlz Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KLQotI2RlZmluZSBORVQyQklHX0dQSU9fUFVTSF9CVVRU T04JMTgKLSNkZWZpbmUgTkVUMkJJR19HUElPX1BPV0VSX1NXSVRDSF9PTgk4Ci0jZGVmaW5lIE5F VDJCSUdfR1BJT19QT1dFUl9TV0lUQ0hfT0ZGCTkKLQotI2RlZmluZSBORVQyQklHX1NXSVRDSF9Q T1dFUl9PTgkJMHgxCi0jZGVmaW5lIE5FVDJCSUdfU1dJVENIX1BPV0VSX09GRgkweDIKLQotc3Rh dGljIHN0cnVjdCBncGlvX2tleXNfYnV0dG9uIG5ldDJiaWdfYnV0dG9uc1tdID0gewotCXsKLQkJ LnR5cGUJCT0gRVZfU1csCi0JCS5jb2RlCQk9IE5FVDJCSUdfU1dJVENIX1BPV0VSX09GRiwKLQkJ LmdwaW8JCT0gTkVUMkJJR19HUElPX1BPV0VSX1NXSVRDSF9PRkYsCi0JCS5kZXNjCQk9ICJQb3dl ciByb2NrZXIgc3dpdGNoIChhdXRvfG9mZikiLAotCQkuYWN0aXZlX2xvdwk9IDAsCi0JfSwKLQl7 Ci0JCS50eXBlCQk9IEVWX1NXLAotCQkuY29kZQkJPSBORVQyQklHX1NXSVRDSF9QT1dFUl9PTiwK LQkJLmdwaW8JCT0gTkVUMkJJR19HUElPX1BPV0VSX1NXSVRDSF9PTiwKLQkJLmRlc2MJCT0gIlBv d2VyIHJvY2tlciBzd2l0Y2ggKG9ufGF1dG8pIiwKLQkJLmFjdGl2ZV9sb3cJPSAwLAotCX0sCi0J ewotCQkudHlwZQkJPSBFVl9LRVksCi0JCS5jb2RlCQk9IEtFWV9QT1dFUiwKLQkJLmdwaW8JCT0g TkVUMkJJR19HUElPX1BVU0hfQlVUVE9OLAotCQkuZGVzYwkJPSAiRnJvbnQgUHVzaCBCdXR0b24i LAotCQkuYWN0aXZlX2xvdwk9IDAsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlz X3BsYXRmb3JtX2RhdGEgbmV0MmJpZ19idXR0b25fZGF0YSA9IHsKLQkuYnV0dG9ucwk9IG5ldDJi aWdfYnV0dG9ucywKLQkubmJ1dHRvbnMJPSBBUlJBWV9TSVpFKG5ldDJiaWdfYnV0dG9ucyksCi19 OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuZXQyYmlnX2dwaW9fYnV0dG9ucyA9 IHsKLQkubmFtZQkJPSAiZ3Bpby1rZXlzIiwKLQkuaWQJCT0gLTEsCi0JLmRldgkJPSB7Ci0JCS5w bGF0Zm9ybV9kYXRhCT0gJm5ldDJiaWdfYnV0dG9uX2RhdGEsCi0JfSwKLX07Ci0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogR2VuZXJhbCBTZXR1cAotICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0K LXN0YXRpYyB1bnNpZ25lZCBpbnQgbmV0MmJpZ19tcHBfbW9kZXNbXSBfX2luaXRkYXRhID0gewot CU1QUDBfR1BJTywJLyogUmFpZCBtb2RlIChiaXQgMCkgKi8KLQlNUFAxX0dQSU8sCS8qIFVTQiBw b3J0IDIgZnVzZSAoMCA9IEZhaWwsIDEgPSBPaykgKi8KLQlNUFAyX0dQSU8sCS8qIFJhaWQgbW9k ZSAoYml0IDEpICovCi0JTVBQM19HUElPLAkvKiBCb2FyZCBJRCAoYml0IDApICovCi0JTVBQNF9H UElPLAkvKiBGYW4gYWN0aXZpdHkgKDAgPSBPZmYsIDEgPSBPbikgKi8KLQlNUFA1X0dQSU8sCS8q IEZhbiBmYWlsIGRldGVjdGlvbiAqLwotCU1QUDZfR1BJTywJLyogUmVkIGZyb250IExFRCAoMCA9 IE9mZiwgMSA9IE9uKSAqLwotCU1QUDdfR1BJTywJLyogRGlzYWJsZSBpbml0aWFsIGJsaW5raW5n IG9uIGZyb250IExFRCAqLwotCU1QUDhfR1BJTywJLyogUmVhciBwb3dlciBzd2l0Y2ggKG9ufGF1 dG8pICovCi0JTVBQOV9HUElPLAkvKiBSZWFyIHBvd2VyIHN3aXRjaCAoYXV0b3xvZmYpICovCi0J TVBQMTBfR1BJTywJLyogU0FUQSAxIHJlZCBMRUQgKDAgPSBPZmYsIDEgPSBPbikgKi8KLQlNUFAx MV9HUElPLAkvKiBTQVRBIDAgcmVkIExFRCAoMCA9IE9mZiwgMSA9IE9uKSAqLwotCU1QUDEyX0dQ SU8sCS8qIEJvYXJkIElEIChiaXQgMSkgKi8KLQlNUFAxM19HUElPLAkvKiBTQVRBIDEgYmx1ZSBM RUQgYmxpbmsgY29udHJvbCAqLwotCU1QUDE0X1NBVEFfTEVELAotCU1QUDE1X1NBVEFfTEVELAot CU1QUDE2X0dQSU8sCS8qIEJsdWUgZnJvbnQgTEVEIGNvbnRyb2wgKi8KLQlNUFAxN19HUElPLAkv KiBTQVRBIDAgYmx1ZSBMRUQgYmxpbmsgY29udHJvbCAqLwotCU1QUDE4X0dQSU8sCS8qIEZyb250 IGJ1dHRvbiAoMCA9IFJlbGVhc2VkLCAxID0gUHVzaGVkICkgKi8KLQlNUFAxOV9HUElPLAkvKiBT QVRBezAsMX0gcG93ZXIgT24vT2ZmIHJlcXVlc3QgKi8KLQkwLAotCS8qIDIyOiBVU0IgcG9ydCAx IGZ1c2UgKDAgPSBGYWlsLCAxID0gT2spICovCi0JLyogMjM6IFNBVEEgMCBwb3dlciBzdGF0dXMg Ki8KLQkvKiAyNDogQm9hcmQgcG93ZXIgb2ZmICovCi0JLyogMjU6IFNBVEEgMSBwb3dlciBzdGF0 dXMgKi8KLX07Ci0KLSNkZWZpbmUgTkVUMkJJR19HUElPX1BPV0VSX09GRgkJMjQKLQotc3RhdGlj IHZvaWQgbmV0MmJpZ19wb3dlcl9vZmYodm9pZCkKLXsKLQlncGlvX3NldF92YWx1ZShORVQyQklH X0dQSU9fUE9XRVJfT0ZGLCAxKTsKLX0KLQotc3RhdGljIHZvaWQgX19pbml0IG5ldDJiaWdfaW5p dCh2b2lkKQotewotCS8qCi0JICogU2V0dXAgYmFzaWMgT3Jpb24gZnVuY3Rpb25zLiBOZWVkIHRv IGJlIGNhbGxlZCBlYXJseS4KLQkgKi8KLQlvcmlvbjV4X2luaXQoKTsKLQotCW9yaW9uNXhfbXBw X2NvbmYobmV0MmJpZ19tcHBfbW9kZXMpOwotCi0JLyoKLQkgKiBDb25maWd1cmUgcGVyaXBoZXJh bHMuCi0JICovCi0Jb3Jpb241eF9laGNpMF9pbml0KCk7Ci0Jb3Jpb241eF9laGNpMV9pbml0KCk7 Ci0Jb3Jpb241eF9ldGhfaW5pdCgmbmV0MmJpZ19ldGhfZGF0YSk7Ci0Jb3Jpb241eF9pMmNfaW5p dCgpOwotCW9yaW9uNXhfdWFydDBfaW5pdCgpOwotCW9yaW9uNXhfeG9yX2luaXQoKTsKLQotCW5l dDJiaWdfc2F0YV9wb3dlcl9pbml0KCk7Ci0Jb3Jpb241eF9zYXRhX2luaXQoJm5ldDJiaWdfc2F0 YV9kYXRhKTsKLQotCW12ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9pZChPUklPTl9NQlVTX0RFVkJV U19CT09UX1RBUkdFVCwKLQkJCQkgICAgT1JJT05fTUJVU19ERVZCVVNfQk9PVF9BVFRSLAotCQkJ CSAgICBORVQyQklHX05PUl9CT09UX0JBU0UsCi0JCQkJICAgIE5FVDJCSUdfTk9SX0JPT1RfU0la RSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZuZXQyYmlnX25vcl9mbGFzaCk7Ci0KLQlw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm5ldDJiaWdfZ3Bpb19idXR0b25zKTsKLQluZXQyYmln X2dwaW9fbGVkc19pbml0KCk7Ci0KLQlpMmNfcmVnaXN0ZXJfYm9hcmRfaW5mbygwLCBuZXQyYmln X2kyY19kZXZpY2VzLAotCQkJCUFSUkFZX1NJWkUobmV0MmJpZ19pMmNfZGV2aWNlcykpOwotCi0J b3Jpb25fZ3Bpb19zZXRfdmFsaWQoTkVUMkJJR19HUElPX1BPV0VSX09GRiwgMSk7Ci0KLQlpZiAo Z3Bpb19yZXF1ZXN0KE5FVDJCSUdfR1BJT19QT1dFUl9PRkYsICJwb3dlci1vZmYiKSA9PSAwICYm Ci0JICAgIGdwaW9fZGlyZWN0aW9uX291dHB1dChORVQyQklHX0dQSU9fUE9XRVJfT0ZGLCAwKSA9 PSAwKQotCQlyZWdpc3Rlcl9wbGF0Zm9ybV9wb3dlcl9vZmYobmV0MmJpZ19wb3dlcl9vZmYpOwot CWVsc2UKLQkJcHJfZXJyKCJuZXQyYmlnOiBmYWlsZWQgdG8gY29uZmlndXJlIHBvd2VyLW9mZiBH UElPXG4iKTsKLQotCXByX25vdGljZSgibmV0MmJpZzogRmxhc2ggd3JpdGluZyBpcyBub3QgeWV0 IHN1cHBvcnRlZC5cbiIpOwotfQotCi0vKiBXYXJuaW5nOiBMYUNpZSB1c2UgYSB3cm9uZyBtYWNo LXR5cGUgKDB4MjBlPTUyNikgaW4gdGhlaXIgYm9vdGxvYWRlci4gKi8KLU1BQ0hJTkVfU1RBUlQo TkVUMkJJRywgIkxhQ2llIDJCaWcgTmV0d29yayIpCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0J Lm5yX2lycXMJPSBPUklPTjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9IG5ldDJiaWdfaW5p dCwKLQkubWFwX2lvCQk9IG9yaW9uNXhfbWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9p bml0X2Vhcmx5LAotCS5pbml0X2lycQk9IG9yaW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9 IG9yaW9uNXhfdGltZXJfaW5pdCwKLQkuZml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0 YXJ0CT0gb3Jpb241eF9yZXN0YXJ0LAotTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJt L21hY2gtb3Jpb241eC9wY2kuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYwppbmRleCAw NmY1MzIwMDM2YjEuLjNkMWU2YWQwZTE0YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlv bjV4L3BjaS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYwpAQCAtMTUsNyArMTUs NiBAQAogI2luY2x1ZGUgPGFzbS9pcnEuaD4KICNpbmNsdWRlIDxhc20vbWFjaC9wY2kuaD4KICNp bmNsdWRlIDxwbGF0L3BjaWUuaD4KLSNpbmNsdWRlIDxwbGF0L2FkZHItbWFwLmg+CiAjaW5jbHVk ZSAiY29tbW9uLmgiCiAjaW5jbHVkZSAib3Jpb241eC5oIgogCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLW9yaW9uNXgvdGVyYXN0YXRpb25fcHJvMi1zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1v cmlvbjV4L3RlcmFzdGF0aW9uX3BybzItc2V0dXAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYzNkYjMzNzY5NTBhLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlv bjV4L3RlcmFzdGF0aW9uX3BybzItc2V0dXAuYworKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCww IEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgotLyoKLSAq IEJ1ZmZhbG8gVGVyYXN0YXRpb24gUHJvIElJL0xpdmUgQm9hcmQgU2V0dXAKLSAqCi0gKiBNYWlu dGFpbmVyOiBTeWx2ZXIgQnJ1bmVhdSA8c3lsdmVyLmJydW5lYXVAZ29vZ2xlbWFpbC5jb20+Ci0g Ki8KLSNpbmNsdWRlIDxsaW51eC9ncGlvL2xlZ2FjeS5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9pcnEuaD4K LSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L210ZC9waHlzbWFwLmg+ Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4eF9ldGguaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4K LSNpbmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMu aD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvcGNpLmg+ Ci0jaW5jbHVkZSAiY29tbW9uLmgiCi0jaW5jbHVkZSAibXBwLmgiCi0jaW5jbHVkZSAib3Jpb241 eC5oIgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFRlcmFzdGF0aW9uIFBybyAyL0xpdmUg SW5mbwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBUZXJhc3RhdGlvbiBQcm8gMiBo YXJkd2FyZSA6Ci0gKiAtIE1hcnZlbGwgODhGNTI4MS1EMAotICogLSBNYXJ2ZWxsIDg4U1g2MDQy IFNBVEEgY29udHJvbGxlciAoUENJKQotICogLSBNYXJ2ZWxsIDg4RTExMTggR2lnYWJpdCBFdGhl cm5ldCBQSFkKLSAqIC0gMjU2S0IgTk9SIGZsYXNoCi0gKiAtIDEyOE1CIG9mIEREUiBSQU0KLSAq IC0gUENJZSBwb3J0IChub3QgZXF1aXBwZWQpCi0gKi8KLQotLyoKLSAqIDI1NksgTk9SIGZsYXNo IERldmljZSBidXMgYm9vdCBjaGlwIHNlbGVjdAotICovCi0KLSNkZWZpbmUgVFNQMl9OT1JfQk9P VF9CQVNFCTB4ZjQwMDAwMDAKLSNkZWZpbmUgVFNQMl9OT1JfQk9PVF9TSVpFCVNaXzI1NksKLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiAyNTZLQiBOT1IgRmxhc2ggb24gQk9PVCBEZXZpY2UK LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0 YSB0c3AyX25vcl9mbGFzaF9kYXRhID0gewotCS53aWR0aCAgICA9IDEsCi19OwotCi1zdGF0aWMg c3RydWN0IHJlc291cmNlIHRzcDJfbm9yX2ZsYXNoX3Jlc291cmNlID0gewotCS5mbGFncyA9IElP UkVTT1VSQ0VfTUVNLAotCS5zdGFydCA9IFRTUDJfTk9SX0JPT1RfQkFTRSwKLQkuZW5kICAgPSBU U1AyX05PUl9CT09UX0JBU0UgKyBUU1AyX05PUl9CT09UX1NJWkUgLSAxLAotfTsKLQotc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgdHNwMl9ub3JfZmxhc2ggPSB7Ci0JLm5hbWUgICAgICAg ICAgPSAicGh5c21hcC1mbGFzaCIsCi0JLmlkICAgICAgICAgICAgPSAwLAotCS5kZXYgICAgICAg ICAgID0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZ0c3AyX25vcl9mbGFzaF9kYXRhLAotCX0sCi0J Lm51bV9yZXNvdXJjZXMgPSAxLAotCS5yZXNvdXJjZSAgICAgID0gJnRzcDJfbm9yX2ZsYXNoX3Jl c291cmNlLAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBQQ0kKLSAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwotI2RlZmluZSBUU1AyX1BDSV9TTE9UMF9PRkZTCQk3Ci0jZGVmaW5lIFRTUDJf UENJX1NMT1QwX0lSUV9QSU4JCTExCi0KLXN0YXRpYyB2b2lkIF9faW5pdCB0c3AyX3BjaV9wcmVp bml0KHZvaWQpCi17Ci0JaW50IHBpbjsKLQotCS8qCi0JICogQ29uZmlndXJlIFBDSSBHUElPIElS USBwaW5zCi0JICovCi0JcGluID0gVFNQMl9QQ0lfU0xPVDBfSVJRX1BJTjsKLQlpZiAoZ3Bpb19y ZXF1ZXN0KHBpbiwgIlBDSSBJbnQxIikgPT0gMCkgewotCQlpZiAoZ3Bpb19kaXJlY3Rpb25faW5w dXQocGluKSA9PSAwKSB7Ci0JCQlpcnFfc2V0X2lycV90eXBlKGdwaW9fdG9faXJxKHBpbiksIElS UV9UWVBFX0xFVkVMX0xPVyk7Ci0JCX0gZWxzZSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgInRzcDJf cGNpX3ByZWluaXQgZmFpbGVkICIKLQkJCQkJInRvIHNldF9pcnFfdHlwZSBwaW4gJWRcbiIsIHBp bik7Ci0JCQlncGlvX2ZyZWUocGluKTsKLQkJfQotCX0gZWxzZSB7Ci0JCXByaW50ayhLRVJOX0VS UiAidHNwMl9wY2lfcHJlaW5pdCBmYWlsZWQgdG8gIgotCQkJCSJncGlvX3JlcXVlc3QgJWRcbiIs IHBpbik7Ci0JfQotfQotCi1zdGF0aWMgaW50IF9faW5pdCB0c3AyX3BjaV9tYXBfaXJxKGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbikKLXsKLQlpbnQgaXJxOwotCi0J LyoKLQkgKiBDaGVjayBmb3IgZGV2aWNlcyB3aXRoIGhhcmQtd2lyZWQgSVJRcy4KLQkgKi8KLQlp cnEgPSBvcmlvbjV4X3BjaV9tYXBfaXJxKGRldiwgc2xvdCwgcGluKTsKLQlpZiAoaXJxICE9IC0x KQotCQlyZXR1cm4gaXJxOwotCi0JLyoKLQkgKiBQQ0kgSVJRcyBhcmUgY29ubmVjdGVkIHZpYSBH UElPcy4KLQkgKi8KLQlpZiAoc2xvdCA9PSBUU1AyX1BDSV9TTE9UMF9PRkZTKQotCQlyZXR1cm4g Z3Bpb190b19pcnEoVFNQMl9QQ0lfU0xPVDBfSVJRX1BJTik7Ci0KLQlyZXR1cm4gLTE7Ci19Ci0K LXN0YXRpYyBzdHJ1Y3QgaHdfcGNpIHRzcDJfcGNpIF9faW5pdGRhdGEgPSB7Ci0JLm5yX2NvbnRy b2xsZXJzID0gMiwKLQkucHJlaW5pdCAgICAgICAgPSB0c3AyX3BjaV9wcmVpbml0LAotCS5zZXR1 cCAgICAgICAgICA9IG9yaW9uNXhfcGNpX3N5c19zZXR1cCwKLQkuc2NhbiAgICAgICAgICAgPSBv cmlvbjV4X3BjaV9zeXNfc2Nhbl9idXMsCi0JLm1hcF9pcnEgICAgICAgID0gdHNwMl9wY2lfbWFw X2lycSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IHRzcDJfcGNpX2luaXQodm9pZCkKLXsKLQlp ZiAobWFjaGluZV9pc190ZXJhc3RhdGlvbl9wcm8yKCkpCi0JCXBjaV9jb21tb25faW5pdCgmdHNw Ml9wY2kpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN1YnN5c19pbml0Y2FsbCh0c3AyX3BjaV9pbml0 KTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFdGhlcm5ldAotICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCi0KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSB0c3AyX2V0 aF9kYXRhID0gewotCS5waHlfYWRkcgk9IDAsCi19OwotCi0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LSAqIFJUQyA1QzM3MmEgb24gSTJDIGJ1cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNkZWZp bmUgVFNQMl9SVENfR1BJTwk5Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gX19pbml0 ZGF0YSB0c3AyX2kyY19ydGMgPSB7Ci0JSTJDX0JPQVJEX0lORk8oInJzNWMzNzJhIiwgMHgzMiks Ci19OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFRlcmFzdGF0aW9uIFBybyBJSSBzcGVj aWZpYyBwb3dlciBvZmYgbWV0aG9kIHZpYSBVQVJUMS1hdHRhY2hlZAotICogbWljcm9jb250cm9s bGVyCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2RlZmluZSBVQVJUMV9SRUcoeCkJKFVBUlQx X1ZJUlRfQkFTRSArICgoVUFSVF8jI3gpIDw8IDIpKQotCi1zdGF0aWMgaW50IHRzcDJfbWljb25y ZWFkKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KQotewotCWludCBpOwotCWludCB0aW1l b3V0OwotCi0JZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQkJdGltZW91dCA9IDEwOwot Ci0JCXdoaWxlICghKHJlYWRsKFVBUlQxX1JFRyhMU1IpKSAmIFVBUlRfTFNSX0RSKSkgewotCQkJ aWYgKC0tdGltZW91dCA9PSAwKQotCQkJCWJyZWFrOwotCQkJdWRlbGF5KDEwMDApOwotCQl9Ci0K LQkJaWYgKHRpbWVvdXQgPT0gMCkKLQkJCWJyZWFrOwotCQlidWZbaV0gPSByZWFkbChVQVJUMV9S RUcoUlgpKTsKLQl9Ci0KLQkvKiByZXR1cm4gcmVhZCBieXRlcyAqLwotCXJldHVybiBpOwotfQot Ci1zdGF0aWMgaW50IHRzcDJfbWljb253cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGlu dCBjb3VudCkKLXsKLQlpbnQgaSA9IDA7Ci0KLQl3aGlsZSAoY291bnQtLSkgewotCQl3aGlsZSAo IShyZWFkbChVQVJUMV9SRUcoTFNSKSkgJiBVQVJUX0xTUl9USFJFKSkKLQkJCWJhcnJpZXIoKTsK LQkJd3JpdGVsKGJ1ZltpKytdLCBVQVJUMV9SRUcoVFgpKTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0K LQotc3RhdGljIGludCB0c3AyX21pY29uc2VuZChjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBp bnQgY291bnQpCi17Ci0JaW50IGk7Ci0JdW5zaWduZWQgY2hhciBjaGVja3N1bSA9IDA7Ci0JdW5z aWduZWQgY2hhciByZWN2X2J1Zls0MF07Ci0JdW5zaWduZWQgY2hhciBzZW5kX2J1Zls0MF07Ci0J dW5zaWduZWQgY2hhciBjb3JyZWN0X2Fja1szXTsKLQlpbnQgcmV0cnkgPSAyOwotCi0JLyogR2Vu ZXJhdGUgY2hlY2tzdW0gKi8KLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tz dW0gLT0gIGRhdGFbaV07Ci0KLQlkbyB7Ci0JCS8qIFNlbmQgZGF0YSAqLwotCQl0c3AyX21pY29u d3JpdGUoZGF0YSwgY291bnQpOwotCi0JCS8qIHNlbmQgY2hlY2tzdW0gKi8KLQkJdHNwMl9taWNv bndyaXRlKCZjaGVja3N1bSwgMSk7Ci0KLQkJaWYgKHRzcDJfbWljb25yZWFkKHJlY3ZfYnVmLCBz aXplb2YocmVjdl9idWYpKSA8PSAzKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgIj4lczogcmVjZWl2 ZSBmYWlsZWQuXG4iLCBfX2Z1bmNfXyk7Ci0KLQkJCS8qIHNlbmQgcHJlYW1ibGUgdG8gY2xlYXIg dGhlIHJlY2VpdmUgYnVmZmVyICovCi0JCQltZW1zZXQoJnNlbmRfYnVmLCAweGZmLCBzaXplb2Yo c2VuZF9idWYpKTsKLQkJCXRzcDJfbWljb253cml0ZShzZW5kX2J1Ziwgc2l6ZW9mKHNlbmRfYnVm KSk7Ci0KLQkJCS8qIG1ha2UgZHVtbXkgcmVhZHMgKi8KLQkJCW1kZWxheSgxMDApOwotCQkJdHNw Ml9taWNvbnJlYWQocmVjdl9idWYsIHNpemVvZihyZWN2X2J1ZikpOwotCQl9IGVsc2UgewotCQkJ LyogR2VuZXJhdGUgZXhwZWN0ZWQgYWNrICovCi0JCQljb3JyZWN0X2Fja1swXSA9IDB4MDE7Ci0J CQljb3JyZWN0X2Fja1sxXSA9IGRhdGFbMV07Ci0JCQljb3JyZWN0X2Fja1syXSA9IDB4MDA7Ci0K LQkJCS8qIGNoZWNrc3VtIENoZWNrICovCi0JCQlpZiAoKHJlY3ZfYnVmWzBdICsgcmVjdl9idWZb MV0gKyByZWN2X2J1ZlsyXSArCi0JCQkgICAgIHJlY3ZfYnVmWzNdKSAmIDB4RkYpIHsKLQkJCQlw cmludGsoS0VSTl9FUlIgIj4lczogQ2hlY2tzdW0gRXJyb3IgOiAiCi0JCQkJCSJSZWNlaXZlZCBk YXRhWyUwMngsICUwMngsICUwMngsICUwMnhdIgotCQkJCQkiXG4iLCBfX2Z1bmNfXywgcmVjdl9i dWZbMF0sCi0JCQkJCXJlY3ZfYnVmWzFdLCByZWN2X2J1ZlsyXSwgcmVjdl9idWZbM10pOwotCQkJ fSBlbHNlIHsKLQkJCQkvKiBDaGVjayBSZWNlaXZlZCBEYXRhICovCi0JCQkJaWYgKGNvcnJlY3Rf YWNrWzBdID09IHJlY3ZfYnVmWzBdICYmCi0JCQkJICAgIGNvcnJlY3RfYWNrWzFdID09IHJlY3Zf YnVmWzFdICYmCi0JCQkJICAgIGNvcnJlY3RfYWNrWzJdID09IHJlY3ZfYnVmWzJdKSB7Ci0JCQkJ CS8qIEludGVydmFsIGZvciBuZXh0IGNvbW1hbmQgKi8KLQkJCQkJbWRlbGF5KDEwKTsKLQotCQkJ CQkvKiBSZWNlaXZlIEFDSyAqLwotCQkJCQlyZXR1cm4gMDsKLQkJCQl9Ci0JCQl9Ci0JCQkvKiBS ZWNlaXZlZCBOQUsgb3IgaWxsZWdhbCBEYXRhICovCi0JCQlwcmludGsoS0VSTl9FUlIgIj4lczog RXJyb3IgOiBOQUsgb3IgSWxsZWdhbCBEYXRhICIKLQkJCQkJIlJlY2VpdmVkXG4iLCBfX2Z1bmNf Xyk7Ci0JCX0KLQl9IHdoaWxlIChyZXRyeS0tKTsKLQotCS8qIEludGVydmFsIGZvciBuZXh0IGNv bW1hbmQgKi8KLQltZGVsYXkoMTApOwotCi0JcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgdm9pZCB0 c3AyX3Bvd2VyX29mZih2b2lkKQotewotCWNvbnN0IHVuc2lnbmVkIGNoYXIgd2F0Y2hkb2draWxs W10JPSB7MHgwMSwgMHgzNSwgMHgwMH07Ci0JY29uc3QgdW5zaWduZWQgY2hhciBzaHV0ZG93bndh aXRbXQk9IHsweDAwLCAweDBjfTsKLQljb25zdCB1bnNpZ25lZCBjaGFyIHBvd2Vyb2ZmW10JCT0g ezB4MDAsIDB4MDZ9OwotCS8qIDM4NDAwIGJhdWQgZGl2aXNvciAqLwotCWNvbnN0IHVuc2lnbmVk IGRpdmlzb3IgPSAoKG9yaW9uNXhfdGNsayArICg4ICogMzg0MDApKSAvICgxNiAqIDM4NDAwKSk7 Ci0KLQlwcl9pbmZvKCIlczogdHJpZ2dlcmluZyBwb3dlci1vZmYuLi5cbiIsIF9fZnVuY19fKTsK LQotCS8qIGhpamFjayB1YXJ0MSBhbmQgcmVzZXQgaW50byBzYW5lIHN0YXRlICgzODQwMCw4bjEs ZXZlbiBwYXJpdHkpICovCi0Jd3JpdGVsKDB4ODMsIFVBUlQxX1JFRyhMQ1IpKTsKLQl3cml0ZWwo ZGl2aXNvciAmIDB4ZmYsIFVBUlQxX1JFRyhETEwpKTsKLQl3cml0ZWwoKGRpdmlzb3IgPj4gOCkg JiAweGZmLCBVQVJUMV9SRUcoRExNKSk7Ci0Jd3JpdGVsKDB4MWIsIFVBUlQxX1JFRyhMQ1IpKTsK LQl3cml0ZWwoMHgwMCwgVUFSVDFfUkVHKElFUikpOwotCXdyaXRlbCgweDA3LCBVQVJUMV9SRUco RkNSKSk7Ci0Jd3JpdGVsKDB4MDAsIFVBUlQxX1JFRyhNQ1IpKTsKLQotCS8qIFNlbmQgdGhlIGNv bW1hbmRzIHRvIHNodXRkb3duIHRoZSBUZXJhc3RhdGlvbiBQcm8gSUkgKi8KLQl0c3AyX21pY29u c2VuZCh3YXRjaGRvZ2tpbGwsIHNpemVvZih3YXRjaGRvZ2tpbGwpKSA7Ci0JdHNwMl9taWNvbnNl bmQoc2h1dGRvd253YWl0LCBzaXplb2Yoc2h1dGRvd253YWl0KSkgOwotCXRzcDJfbWljb25zZW5k KHBvd2Vyb2ZmLCBzaXplb2YocG93ZXJvZmYpKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBHZW5lcmFsIFNldHVwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB1bnNpZ25l ZCBpbnQgdHNwMl9tcHBfbW9kZXNbXSBfX2luaXRkYXRhID0gewotCU1QUDBfUENJRV9SU1RfT1VU biwKLQlNUFAxX1VOVVNFRCwKLQlNUFAyX1VOVVNFRCwKLQlNUFAzX1VOVVNFRCwKLQlNUFA0X05B TkQsCQkvKiBCT09UIE5BTkQgRmxhc2ggUkVuICovCi0JTVBQNV9OQU5ELAkJLyogQk9PVCBOQU5E IEZsYXNoIFdFbiAqLwotCU1QUDZfTkFORCwJCS8qIEJPT1QgTkFORCBGbGFzaCBIUkVuWzBdICov Ci0JTVBQN19OQU5ELAkJLyogQk9PVCBOQU5EIEZsYXNoIFdFblswXSAqLwotCU1QUDhfR1BJTywJ CS8qIE1JQ09OIGludCAqLwotCU1QUDlfR1BJTywJCS8qIFJUQyBpbnQgKi8KLQlNUFAxMF9VTlVT RUQsCi0JTVBQMTFfR1BJTywJCS8qIFBDSSBJbnQgQSAqLwotCU1QUDEyX1VOVVNFRCwKLQlNUFAx M19HUElPLAkJLyogVVBTIG9uIFVBUlQwIGVuYWJsZSAqLwotCU1QUDE0X0dQSU8sCQkvKiBVUFMg bG93IGJhdHRlcnkgZGV0ZWN0aW9uICovCi0JTVBQMTVfVU5VU0VELAotCU1QUDE2X1VBUlQsCQkv KiBVQVJUMSBSWEQgKi8KLQlNUFAxN19VQVJULAkJLyogVUFSVDEgVFhEICovCi0JTVBQMThfVUFS VCwJCS8qIFVBUlQxIENUU24gKi8KLQlNUFAxOV9VQVJULAkJLyogVUFSVDEgUlRTbiAqLwotCTAs Ci19OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgdHNwMl9pbml0KHZvaWQpCi17Ci0JLyoKLQkgKiBT ZXR1cCBiYXNpYyBPcmlvbiBmdW5jdGlvbnMuIE5lZWQgdG8gYmUgY2FsbGVkIGVhcmx5LgotCSAq LwotCW9yaW9uNXhfaW5pdCgpOwotCi0Jb3Jpb241eF9tcHBfY29uZih0c3AyX21wcF9tb2Rlcyk7 Ci0KLQkvKgotCSAqIENvbmZpZ3VyZSBwZXJpcGhlcmFscy4KLQkgKi8KLQltdmVidV9tYnVzX2Fk ZF93aW5kb3dfYnlfaWQoT1JJT05fTUJVU19ERVZCVVNfQk9PVF9UQVJHRVQsCi0JCQkJICAgIE9S SU9OX01CVVNfREVWQlVTX0JPT1RfQVRUUiwKLQkJCQkgICAgVFNQMl9OT1JfQk9PVF9CQVNFLAot CQkJCSAgICBUU1AyX05PUl9CT09UX1NJWkUpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigm dHNwMl9ub3JfZmxhc2gpOwotCi0Jb3Jpb241eF9laGNpMF9pbml0KCk7Ci0Jb3Jpb241eF9ldGhf aW5pdCgmdHNwMl9ldGhfZGF0YSk7Ci0Jb3Jpb241eF9pMmNfaW5pdCgpOwotCW9yaW9uNXhfdWFy dDBfaW5pdCgpOwotCW9yaW9uNXhfdWFydDFfaW5pdCgpOwotCi0JLyogR2V0IFJUQyBJUlEgYW5k IHJlZ2lzdGVyIHRoZSBjaGlwICovCi0JaWYgKGdwaW9fcmVxdWVzdChUU1AyX1JUQ19HUElPLCAi cnRjIikgPT0gMCkgewotCQlpZiAoZ3Bpb19kaXJlY3Rpb25faW5wdXQoVFNQMl9SVENfR1BJTykg PT0gMCkKLQkJCXRzcDJfaTJjX3J0Yy5pcnEgPSBncGlvX3RvX2lycShUU1AyX1JUQ19HUElPKTsK LQkJZWxzZQotCQkJZ3Bpb19mcmVlKFRTUDJfUlRDX0dQSU8pOwotCX0KLQlpZiAodHNwMl9pMmNf cnRjLmlycSA9PSAwKQotCQlwcl93YXJuKCJ0c3AyX2luaXQ6IGZhaWxlZCB0byBnZXQgUlRDIElS UVxuIik7Ci0JaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwgJnRzcDJfaTJjX3J0YywgMSk7Ci0K LQkvKiByZWdpc3RlciBUZXJhc3RhdGlvbiBQcm8gSUkgc3BlY2lmaWMgcG93ZXItb2ZmIG1ldGhv ZCAqLwotCXJlZ2lzdGVyX3BsYXRmb3JtX3Bvd2VyX29mZih0c3AyX3Bvd2VyX29mZik7Ci19Ci0K LU1BQ0hJTkVfU1RBUlQoVEVSQVNUQVRJT05fUFJPMiwgIkJ1ZmZhbG8gVGVyYXN0YXRpb24gUHJv IElJL0xpdmUiKQotCS8qIE1haW50YWluZXI6ICBTeWx2ZXIgQnJ1bmVhdSA8c3lsdmVyLmJydW5l YXVAZ29vZ2xlbWFpbC5jb20+ICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2lycXMJ PSBPUklPTjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9IHRzcDJfaW5pdCwKLQkubWFwX2lv CQk9IG9yaW9uNXhfbWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9pbml0X2Vhcmx5LAot CS5pbml0X2lycQk9IG9yaW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG9yaW9uNXhfdGlt ZXJfaW5pdCwKLQkuZml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0YXJ0CT0gb3Jpb241 eF9yZXN0YXJ0LAotTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241 eC90czIwOS1zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1Y2Q1MDMwNmM2NS4uMDAwMDAwMDAwMDAwCi0t LSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czIwOS1zZXR1cC5jCisrKyAvZGV2L251bGwKQEAg LTEsMzMxICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxh dGVyCi0vKgotICogUU5BUCBUUy0xMDkvVFMtMjA5IEJvYXJkIFNldHVwCi0gKgotICogTWFpbnRh aW5lcjogQnlyb24gQnJhZGxleSA8Ynlyb24uYmJyYWRsZXlAZ21haWwuY29tPgotICovCi0jaW5j bHVkZSA8bGludXgvZ3Bpby9sZWdhY3kuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNp bmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Ci0jaW5jbHVkZSA8bGludXgvcGNpLmg+Ci0jaW5jbHVkZSA8bGludXgvaXJxLmg+Ci0jaW5jbHVk ZSA8bGludXgvbXRkL3BoeXNtYXAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvcmF3bmFuZC5oPgot I2luY2x1ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVkZSA8bGludXgvZ3Bpb19rZXlz Lmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNp bmNsdWRlIDxsaW51eC9zZXJpYWxfcmVnLmg+Ci0jaW5jbHVkZSA8bGludXgvYXRhX3BsYXRmb3Jt Lmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9hcmNo Lmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvcGNpLmg+Ci0jaW5jbHVkZSAiY29tbW9uLmgiCi0jaW5j bHVkZSAibXBwLmgiCi0jaW5jbHVkZSAib3Jpb241eC5oIgotI2luY2x1ZGUgInRzeDA5LWNvbW1v bi5oIgotCi0jZGVmaW5lIFFOQVBfVFMyMDlfTk9SX0JPT1RfQkFTRSAweGY0MDAwMDAwCi0jZGVm aW5lIFFOQVBfVFMyMDlfTk9SX0JPT1RfU0laRSBTWl84TQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogOE1pQiBOT1IgZmxhc2guIFRoZSBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBpcyBub3QgaW4g dGhlIHNhbWUgb3JkZXIgYXMgdGhlCi0gKiAgICAgcGFydGl0aW9ucyBvbiB0aGUgZGV2aWNlIGJl Y2F1c2Ugd2Ugd2FudCB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aAotICogICAgIGV4aXN0aW5n IFFOQVAgZmlybXdhcmUuCi0gKgotICogTGF5b3V0IGFzIHVzZWQgYnkgUU5BUDoKLSAqICBbMl0g MHgwMDAwMDAwMC0weDAwMjAwMDAwIDogIktlcm5lbCIKLSAqICBbM10gMHgwMDIwMDAwMC0weDAw NjAwMDAwIDogIlJvb3RGUzEiCi0gKiAgWzRdIDB4MDA2MDAwMDAtMHgwMDcwMDAwMCA6ICJSb290 RlMyIgotICogIFs2XSAweDAwNzAwMDAwLTB4MDA3NjAwMDAgOiAiTkFTIENvbmZpZyIgKHJlYWQt b25seSkKLSAqICBbNV0gMHgwMDc2MDAwMC0weDAwNzgwMDAwIDogIlUtQm9vdCBDb25maWciCi0g KiAgWzFdIDB4MDA3ODAwMDAtMHgwMDgwMDAwMCA6ICJVLUJvb3QiIChyZWFkLW9ubHkpCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIHFuYXBfdHMyMDlf cGFydGl0aW9uc1tdID0gewotCXsKLQkJLm5hbWUJCT0gIlUtQm9vdCIsCi0JCS5zaXplCQk9IDB4 MDAwODAwMDAsCi0JCS5vZmZzZXQJCT0gMHgwMDc4MDAwMCwKLQkJLm1hc2tfZmxhZ3MJPSBNVERf V1JJVEVBQkxFLAotCX0sIHsKLQkJLm5hbWUJCT0gIktlcm5lbCIsCi0JCS5zaXplCQk9IDB4MDAy MDAwMDAsCi0JCS5vZmZzZXQJCT0gMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJSb290RlMxIiwKLQkJ LnNpemUJCT0gMHgwMDQwMDAwMCwKLQkJLm9mZnNldAkJPSAweDAwMjAwMDAwLAotCX0sIHsKLQkJ Lm5hbWUJCT0gIlJvb3RGUzIiLAotCQkuc2l6ZQkJPSAweDAwMTAwMDAwLAotCQkub2Zmc2V0CQk9 IDB4MDA2MDAwMDAsCi0JfSwgewotCQkubmFtZQkJPSAiVS1Cb290IENvbmZpZyIsCi0JCS5zaXpl CQk9IDB4MDAwMjAwMDAsCi0JCS5vZmZzZXQJCT0gMHgwMDc2MDAwMCwKLQl9LCB7Ci0JCS5uYW1l CQk9ICJOQVMgQ29uZmlnIiwKLQkJLnNpemUJCT0gMHgwMDA2MDAwMCwKLQkJLm9mZnNldAkJPSAw eDAwNzAwMDAwLAotCQkubWFza19mbGFncwk9IE1URF9XUklURUFCTEUsCi0JfSwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgcGh5c21hcF9mbGFzaF9kYXRhIHFuYXBfdHMyMDlfbm9yX2ZsYXNoX2RhdGEg PSB7Ci0JLndpZHRoCQk9IDEsCi0JLnBhcnRzCQk9IHFuYXBfdHMyMDlfcGFydGl0aW9ucywKLQku bnJfcGFydHMJPSBBUlJBWV9TSVpFKHFuYXBfdHMyMDlfcGFydGl0aW9ucykKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgcmVzb3VyY2UgcW5hcF90czIwOV9ub3JfZmxhc2hfcmVzb3VyY2UgPSB7Ci0JLmZs YWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0JLnN0YXJ0CT0gUU5BUF9UUzIwOV9OT1JfQk9PVF9CQVNF LAotCS5lbmQJPSBRTkFQX1RTMjA5X05PUl9CT09UX0JBU0UgKyBRTkFQX1RTMjA5X05PUl9CT09U X1NJWkUgLSAxLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcW5hcF90czIw OV9ub3JfZmxhc2ggPSB7Ci0JLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAotCS5pZAkJPSAwLAot CS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZxbmFwX3RzMjA5X25vcl9mbGFzaF9kYXRh LAotCX0sCi0JLnJlc291cmNlCT0gJnFuYXBfdHMyMDlfbm9yX2ZsYXNoX3Jlc291cmNlLAotCS5u dW1fcmVzb3VyY2VzCT0gMSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogUENJCi0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KLQotI2RlZmluZSBRTkFQX1RTMjA5X1BDSV9TTE9UMF9PRkZT CTcKLSNkZWZpbmUgUU5BUF9UUzIwOV9QQ0lfU0xPVDBfSVJRX1BJTgk2Ci0jZGVmaW5lIFFOQVBf VFMyMDlfUENJX1NMT1QxX0lSUV9QSU4JNwotCi1zdGF0aWMgdm9pZCBfX2luaXQgcW5hcF90czIw OV9wY2lfcHJlaW5pdCh2b2lkKQotewotCWludCBwaW47Ci0KLQkvKgotCSAqIENvbmZpZ3VyZSBQ Q0kgR1BJTyBJUlEgcGlucwotCSAqLwotCXBpbiA9IFFOQVBfVFMyMDlfUENJX1NMT1QwX0lSUV9Q SU47Ci0JaWYgKGdwaW9fcmVxdWVzdChwaW4sICJQQ0kgSW50MSIpID09IDApIHsKLQkJaWYgKGdw aW9fZGlyZWN0aW9uX2lucHV0KHBpbikgPT0gMCkgewotCQkJaXJxX3NldF9pcnFfdHlwZShncGlv X3RvX2lycShwaW4pLCBJUlFfVFlQRV9MRVZFTF9MT1cpOwotCQl9IGVsc2UgewotCQkJcHJpbnRr KEtFUk5fRVJSICJxbmFwX3RzMjA5X3BjaV9wcmVpbml0IGZhaWxlZCB0byAiCi0JCQkJCSJzZXRf aXJxX3R5cGUgcGluICVkXG4iLCBwaW4pOwotCQkJZ3Bpb19mcmVlKHBpbik7Ci0JCX0KLQl9IGVs c2UgewotCQlwcmludGsoS0VSTl9FUlIgInFuYXBfdHMyMDlfcGNpX3ByZWluaXQgZmFpbGVkIHRv IGdwaW9fcmVxdWVzdCAiCi0JCQkJIiVkXG4iLCBwaW4pOwotCX0KLQotCXBpbiA9IFFOQVBfVFMy MDlfUENJX1NMT1QxX0lSUV9QSU47Ci0JaWYgKGdwaW9fcmVxdWVzdChwaW4sICJQQ0kgSW50MiIp ID09IDApIHsKLQkJaWYgKGdwaW9fZGlyZWN0aW9uX2lucHV0KHBpbikgPT0gMCkgewotCQkJaXJx X3NldF9pcnFfdHlwZShncGlvX3RvX2lycShwaW4pLCBJUlFfVFlQRV9MRVZFTF9MT1cpOwotCQl9 IGVsc2UgewotCQkJcHJpbnRrKEtFUk5fRVJSICJxbmFwX3RzMjA5X3BjaV9wcmVpbml0IGZhaWxl ZCAiCi0JCQkJCSJ0byBzZXRfaXJxX3R5cGUgcGluICVkXG4iLCBwaW4pOwotCQkJZ3Bpb19mcmVl KHBpbik7Ci0JCX0KLQl9IGVsc2UgewotCQlwcmludGsoS0VSTl9FUlIgInFuYXBfdHMyMDlfcGNp X3ByZWluaXQgZmFpbGVkIHRvIGdwaW9fcmVxdWVzdCAiCi0JCQkJIiVkXG4iLCBwaW4pOwotCX0K LX0KLQotc3RhdGljIGludCBfX2luaXQgcW5hcF90czIwOV9wY2lfbWFwX2lycShjb25zdCBzdHJ1 Y3QgcGNpX2RldiAqZGV2LCB1OCBzbG90LAotCXU4IHBpbikKLXsKLQlpbnQgaXJxOwotCi0JLyoK LQkgKiBDaGVjayBmb3IgZGV2aWNlcyB3aXRoIGhhcmQtd2lyZWQgSVJRcy4KLQkgKi8KLQlpcnEg PSBvcmlvbjV4X3BjaV9tYXBfaXJxKGRldiwgc2xvdCwgcGluKTsKLQlpZiAoaXJxICE9IC0xKQot CQlyZXR1cm4gaXJxOwotCi0JLyoKLQkgKiBQQ0kgSVJRcyBhcmUgY29ubmVjdGVkIHZpYSBHUElP cy4KLQkgKi8KLQlzd2l0Y2ggKHNsb3QgLSBRTkFQX1RTMjA5X1BDSV9TTE9UMF9PRkZTKSB7Ci0J Y2FzZSAwOgotCQlyZXR1cm4gZ3Bpb190b19pcnEoUU5BUF9UUzIwOV9QQ0lfU0xPVDBfSVJRX1BJ Tik7Ci0JY2FzZSAxOgotCQlyZXR1cm4gZ3Bpb190b19pcnEoUU5BUF9UUzIwOV9QQ0lfU0xPVDFf SVJRX1BJTik7Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIC0xOwotCX0KLX0KLQotc3RhdGljIHN0cnVj dCBod19wY2kgcW5hcF90czIwOV9wY2kgX19pbml0ZGF0YSA9IHsKLQkubnJfY29udHJvbGxlcnMJ PSAyLAotCS5wcmVpbml0CT0gcW5hcF90czIwOV9wY2lfcHJlaW5pdCwKLQkuc2V0dXAJCT0gb3Jp b241eF9wY2lfc3lzX3NldHVwLAotCS5zY2FuCQk9IG9yaW9uNXhfcGNpX3N5c19zY2FuX2J1cywK LQkubWFwX2lycQk9IHFuYXBfdHMyMDlfcGNpX21hcF9pcnEsCi19OwotCi1zdGF0aWMgaW50IF9f aW5pdCBxbmFwX3RzMjA5X3BjaV9pbml0KHZvaWQpCi17Ci0JaWYgKG1hY2hpbmVfaXNfdHMyMDko KSkKLQkJcGNpX2NvbW1vbl9pbml0KCZxbmFwX3RzMjA5X3BjaSk7Ci0KLQlyZXR1cm4gMDsKLX0K LQotc3Vic3lzX2luaXRjYWxsKHFuYXBfdHMyMDlfcGNpX2luaXQpOwotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAqIFJUQyBTMzUzOTBBIG9uIEkyQyBidXMKLSAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwotCi0jZGVmaW5lIFRTMjA5X1JUQ19HUElPCTMKLQotc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRf aW5mbyBfX2luaXRkYXRhIHFuYXBfdHMyMDlfaTJjX3J0YyA9IHsKLQlJMkNfQk9BUkRfSU5GTygi czM1MzkwYSIsIDB4MzApLAotCS5pcnEJPSAwLAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LSAqIEdQSU8gQXR0YWNoZWQgS2V5cwotICogICAgIFBvd2VyIGJ1dHRvbiBpcyBhdHRhY2hlZCB0 byB0aGUgUElDIG1pY3JvY29udHJvbGxlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNkZWZp bmUgUU5BUF9UUzIwOV9HUElPX0tFWV9NRURJQQkxCi0jZGVmaW5lIFFOQVBfVFMyMDlfR1BJT19L RVlfUkVTRVQJMgotCi1zdGF0aWMgc3RydWN0IGdwaW9fa2V5c19idXR0b24gcW5hcF90czIwOV9i dXR0b25zW10gPSB7Ci0JewotCQkuY29kZQkJPSBLRVlfQ09QWSwKLQkJLmdwaW8JCT0gUU5BUF9U UzIwOV9HUElPX0tFWV9NRURJQSwKLQkJLmRlc2MJCT0gIlVTQiBDb3B5IEJ1dHRvbiIsCi0JCS5h Y3RpdmVfbG93CT0gMSwKLQl9LCB7Ci0JCS5jb2RlCQk9IEtFWV9SRVNUQVJULAotCQkuZ3BpbwkJ PSBRTkFQX1RTMjA5X0dQSU9fS0VZX1JFU0VULAotCQkuZGVzYwkJPSAiUmVzZXQgQnV0dG9uIiwK LQkJLmFjdGl2ZV9sb3cJPSAxLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IGdwaW9fa2V5c19w bGF0Zm9ybV9kYXRhIHFuYXBfdHMyMDlfYnV0dG9uX2RhdGEgPSB7Ci0JLmJ1dHRvbnMJPSBxbmFw X3RzMjA5X2J1dHRvbnMsCi0JLm5idXR0b25zCT0gQVJSQVlfU0laRShxbmFwX3RzMjA5X2J1dHRv bnMpLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcW5hcF90czIwOV9idXR0 b25fZGV2aWNlID0gewotCS5uYW1lCQk9ICJncGlvLWtleXMiLAotCS5pZAkJPSAtMSwKLQkubnVt X3Jlc291cmNlcwk9IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJnFuYXBfdHMy MDlfYnV0dG9uX2RhdGEsCi0JfSwKLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU0FU QQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG12X3NhdGFfcGxhdGZvcm1f ZGF0YSBxbmFwX3RzMjA5X3NhdGFfZGF0YSA9IHsKLQkubl9wb3J0cwk9IDIsCi19OwotCi0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLQotICogR2VuZXJhbCBTZXR1cAotICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi1zdGF0aWMgdW5zaWduZWQgaW50IHRzMjA5X21wcF9tb2Rlc1tdIF9faW5pdGRhdGEgPSB7 Ci0JTVBQMF9VTlVTRUQsCi0JTVBQMV9HUElPLAkJLyogVVNCIGNvcHkgYnV0dG9uICovCi0JTVBQ Ml9HUElPLAkJLyogTG9hZCBkZWZhdWx0cyBidXR0b24gKi8KLQlNUFAzX0dQSU8sCQkvKiBHUElP IFJUQyAqLwotCU1QUDRfVU5VU0VELAotCU1QUDVfVU5VU0VELAotCU1QUDZfR1BJTywJCS8qIFBD SSBJbnQgQSAqLwotCU1QUDdfR1BJTywJCS8qIFBDSSBJbnQgQiAqLwotCU1QUDhfVU5VU0VELAot CU1QUDlfVU5VU0VELAotCU1QUDEwX1VOVVNFRCwKLQlNUFAxMV9VTlVTRUQsCi0JTVBQMTJfU0FU QV9MRUQsCQkvKiBTQVRBIDAgcHJlc2VuY2UgKi8KLQlNUFAxM19TQVRBX0xFRCwJCS8qIFNBVEEg MSBwcmVzZW5jZSAqLwotCU1QUDE0X1NBVEFfTEVELAkJLyogU0FUQSAwIGFjdGl2ZSAqLwotCU1Q UDE1X1NBVEFfTEVELAkJLyogU0FUQSAxIGFjdGl2ZSAqLwotCU1QUDE2X1VBUlQsCQkvKiBVQVJU MSBSWEQgKi8KLQlNUFAxN19VQVJULAkJLyogVUFSVDEgVFhEICovCi0JTVBQMThfR1BJTywJCS8q IFNXX1JTVCAqLwotCU1QUDE5X1VOVVNFRCwKLQkwLAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0 IHFuYXBfdHMyMDlfaW5pdCh2b2lkKQotewotCS8qCi0JICogU2V0dXAgYmFzaWMgT3Jpb24gZnVu Y3Rpb25zLiBOZWVkIHRvIGJlIGNhbGxlZCBlYXJseS4KLQkgKi8KLQlvcmlvbjV4X2luaXQoKTsK LQotCW9yaW9uNXhfbXBwX2NvbmYodHMyMDlfbXBwX21vZGVzKTsKLQotCS8qCi0JICogTVBQWzIw XSBQQ0kgY2xvY2sgMAotCSAqIE1QUFsyMV0gUENJIGNsb2NrIDEKLQkgKiBNUFBbMjJdIFVTQiAw IG92ZXIgY3VycmVudAotCSAqIE1QUFsyMy0yNV0gUmVzZXJ2ZWQKLQkgKi8KLQotCS8qCi0JICog Q29uZmlndXJlIHBlcmlwaGVyYWxzLgotCSAqLwotCW12ZWJ1X21idXNfYWRkX3dpbmRvd19ieV9p ZChPUklPTl9NQlVTX0RFVkJVU19CT09UX1RBUkdFVCwKLQkJCQkgICAgT1JJT05fTUJVU19ERVZC VVNfQk9PVF9BVFRSLAotCQkJCSAgICBRTkFQX1RTMjA5X05PUl9CT09UX0JBU0UsCi0JCQkJICAg IFFOQVBfVFMyMDlfTk9SX0JPT1RfU0laRSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZx bmFwX3RzMjA5X25vcl9mbGFzaCk7Ci0KLQlvcmlvbjV4X2VoY2kwX2luaXQoKTsKLQlvcmlvbjV4 X2VoY2kxX2luaXQoKTsKLQlxbmFwX3RzeDA5X2ZpbmRfbWFjX2FkZHIoUU5BUF9UUzIwOV9OT1Jf Qk9PVF9CQVNFICsKLQkJCQkgcW5hcF90czIwOV9wYXJ0aXRpb25zWzVdLm9mZnNldCwKLQkJCQkg cW5hcF90czIwOV9wYXJ0aXRpb25zWzVdLnNpemUpOwotCW9yaW9uNXhfZXRoX2luaXQoJnFuYXBf dHN4MDlfZXRoX2RhdGEpOwotCW9yaW9uNXhfaTJjX2luaXQoKTsKLQlvcmlvbjV4X3NhdGFfaW5p dCgmcW5hcF90czIwOV9zYXRhX2RhdGEpOwotCW9yaW9uNXhfdWFydDBfaW5pdCgpOwotCW9yaW9u NXhfdWFydDFfaW5pdCgpOwotCW9yaW9uNXhfeG9yX2luaXQoKTsKLQotCXBsYXRmb3JtX2Rldmlj ZV9yZWdpc3RlcigmcW5hcF90czIwOV9idXR0b25fZGV2aWNlKTsKLQotCS8qIEdldCBSVEMgSVJR IGFuZCByZWdpc3RlciB0aGUgY2hpcCAqLwotCWlmIChncGlvX3JlcXVlc3QoVFMyMDlfUlRDX0dQ SU8sICJydGMiKSA9PSAwKSB7Ci0JCWlmIChncGlvX2RpcmVjdGlvbl9pbnB1dChUUzIwOV9SVENf R1BJTykgPT0gMCkKLQkJCXFuYXBfdHMyMDlfaTJjX3J0Yy5pcnEgPSBncGlvX3RvX2lycShUUzIw OV9SVENfR1BJTyk7Ci0JCWVsc2UKLQkJCWdwaW9fZnJlZShUUzIwOV9SVENfR1BJTyk7Ci0JfQot CWlmIChxbmFwX3RzMjA5X2kyY19ydGMuaXJxID09IDApCi0JCXByX3dhcm4oInFuYXBfdHMyMDlf aW5pdDogZmFpbGVkIHRvIGdldCBSVEMgSVJRXG4iKTsKLQlpMmNfcmVnaXN0ZXJfYm9hcmRfaW5m bygwLCAmcW5hcF90czIwOV9pMmNfcnRjLCAxKTsKLQotCS8qIHJlZ2lzdGVyIHRzeDA5IHNwZWNp ZmljIHBvd2VyLW9mZiBtZXRob2QgKi8KLQlyZWdpc3Rlcl9wbGF0Zm9ybV9wb3dlcl9vZmYocW5h cF90c3gwOV9wb3dlcl9vZmYpOwotfQotCi1NQUNISU5FX1NUQVJUKFRTMjA5LCAiUU5BUCBUUy0x MDkvVFMtMjA5IikKLQkvKiBNYWludGFpbmVyOiBCeXJvbiBCcmFkbGV5IDxieXJvbi5iYnJhZGxl eUBnbWFpbC5jb20+ICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2lycXMJPSBPUklP TjVYX05SX0lSUVMsCi0JLmluaXRfbWFjaGluZQk9IHFuYXBfdHMyMDlfaW5pdCwKLQkubWFwX2lv CQk9IG9yaW9uNXhfbWFwX2lvLAotCS5pbml0X2Vhcmx5CT0gb3Jpb241eF9pbml0X2Vhcmx5LAot CS5pbml0X2lycQk9IG9yaW9uNXhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG9yaW9uNXhfdGlt ZXJfaW5pdCwKLQkuZml4dXAJCT0gdGFnX2ZpeHVwX21lbTMyLAotCS5yZXN0YXJ0CT0gb3Jpb241 eF9yZXN0YXJ0LAotTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241 eC90czQwOS1zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MmFjZWYwYjQ1Zi4uMDAwMDAwMDAwMDAwCi0t LSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czQwOS1zZXR1cC5jCisrKyAvZGV2L251bGwKQEAg LTEsMzI5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxh dGVyCi0vKgotICogUU5BUCBUUy00MDkgQm9hcmQgU2V0dXAKLSAqCi0gKiBNYWludGFpbmVyOiBT eWx2ZXIgQnJ1bmVhdSA8c3lsdmVyLmJydW5lYXVAZ21haWwuY29tPgotICoKLSAqIENvcHlyaWdo dCAoQykgMjAwOCAgU3lsdmVyIEJydW5lYXUgPHN5bHZlci5icnVuZWF1QGdtYWlsLmNvbT4KLSAq IENvcHlyaWdodCAoQykgMjAwOCAgTWFydGluIE1pY2hsbWF5ciA8dGJtQGN5cml1cy5jb20+Ci0g Ki8KLSNpbmNsdWRlIDxsaW51eC9ncGlvL2xlZ2FjeS5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8v bWFjaGluZS5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51 eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9pcnEuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvcGh5 c21hcC5oPgotI2luY2x1ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVkZSA8bGludXgv bGVkcy5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW9fa2V5cy5oPgotI2luY2x1ZGUgPGxpbnV4L2lu cHV0Lmg+Ci0jaW5jbHVkZSA8bGludXgvaTJjLmg+Ci0jaW5jbHVkZSA8bGludXgvc2VyaWFsX3Jl Zy5oPgotI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJj aC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3BjaS5oPgotI2luY2x1ZGUgImNvbW1vbi5oIgotI2lu Y2x1ZGUgIm1wcC5oIgotI2luY2x1ZGUgIm9yaW9uNXguaCIKLSNpbmNsdWRlICJ0c3gwOS1jb21t b24uaCIKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBRTkFQIFRTLTQwOSBJbmZvCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIFFOQVAgVFMtNDA5IGhhcmR3YXJlIDoKLSAqIC0g TWFydmVsbCA4OEY1MjgxLUQwCi0gKiAtIE1hcnZlbGwgODhTWDcwNDIgU0FUQSBjb250cm9sbGVy IChQQ0llKQotICogLSBNYXJ2ZWxsIDg4RTExMTggR2lnYWJpdCBFdGhlcm5ldCBQSFkKLSAqIC0g UlRDIFMzNTM5MEEgKEAweDMwKSBvbiBJMkMgYnVzCi0gKiAtIDhNQiBOT1IgZmxhc2gKLSAqIC0g MjU2TUIgb2YgRERSLTIgUkFNCi0gKi8KLQotLyoKLSAqIDhNQiBOT1IgZmxhc2ggRGV2aWNlIGJ1 cyBib290IGNoaXAgc2VsZWN0Ci0gKi8KLQotI2RlZmluZSBRTkFQX1RTNDA5X05PUl9CT09UX0JB U0UgMHhmZjgwMDAwMAotI2RlZmluZSBRTkFQX1RTNDA5X05PUl9CT09UX1NJWkUgU1pfOE0KLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAqIDhNaUIgTk9SIGZsYXNoLiBUaGUgc3RydWN0IG10ZF9w YXJ0aXRpb24gaXMgbm90IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQotICogICAgIHBhcnRpdGlv bnMgb24gdGhlIGRldmljZSBiZWNhdXNlIHdlIHdhbnQgdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdp dGgKLSAqICAgICBleGlzdGluZyBRTkFQIGZpcm13YXJlLgotICoKLSAqIExheW91dCBhcyB1c2Vk IGJ5IFFOQVA6Ci0gKiAgWzJdIDB4MDAwMDAwMDAtMHgwMDIwMDAwMCA6ICJLZXJuZWwiCi0gKiAg WzNdIDB4MDAyMDAwMDAtMHgwMDYwMDAwMCA6ICJSb290RlMxIgotICogIFs0XSAweDAwNjAwMDAw LTB4MDA3MDAwMDAgOiAiUm9vdEZTMiIKLSAqICBbNl0gMHgwMDcwMDAwMC0weDAwNzYwMDAwIDog Ik5BUyBDb25maWciIChyZWFkLW9ubHkpCi0gKiAgWzVdIDB4MDA3NjAwMDAtMHgwMDc4MDAwMCA6 ICJVLUJvb3QgQ29uZmlnIgotICogIFsxXSAweDAwNzgwMDAwLTB4MDA4MDAwMDAgOiAiVS1Cb290 IiAocmVhZC1vbmx5KQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbXRkX3Bh cnRpdGlvbiBxbmFwX3RzNDA5X3BhcnRpdGlvbnNbXSA9IHsKLQl7Ci0JCS5uYW1lCQk9ICJVLUJv b3QiLAotCQkuc2l6ZQkJPSAweDAwMDgwMDAwLAotCQkub2Zmc2V0CQk9IDB4MDA3ODAwMDAsCi0J CS5tYXNrX2ZsYWdzCT0gTVREX1dSSVRFQUJMRSwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJLZXJuZWwi LAotCQkuc2l6ZQkJPSAweDAwMjAwMDAwLAotCQkub2Zmc2V0CQk9IDAsCi0JfSwgewotCQkubmFt ZQkJPSAiUm9vdEZTMSIsCi0JCS5zaXplCQk9IDB4MDA0MDAwMDAsCi0JCS5vZmZzZXQJCT0gMHgw MDIwMDAwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJSb290RlMyIiwKLQkJLnNpemUJCT0gMHgwMDEw MDAwMCwKLQkJLm9mZnNldAkJPSAweDAwNjAwMDAwLAotCX0sIHsKLQkJLm5hbWUJCT0gIlUtQm9v dCBDb25maWciLAotCQkuc2l6ZQkJPSAweDAwMDIwMDAwLAotCQkub2Zmc2V0CQk9IDB4MDA3NjAw MDAsCi0JfSwgewotCQkubmFtZQkJPSAiTkFTIENvbmZpZyIsCi0JCS5zaXplCQk9IDB4MDAwNjAw MDAsCi0JCS5vZmZzZXQJCT0gMHgwMDcwMDAwMCwKLQkJLm1hc2tfZmxhZ3MJPSBNVERfV1JJVEVB QkxFLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSBxbmFwX3Rz NDA5X25vcl9mbGFzaF9kYXRhID0gewotCS53aWR0aAkJPSAxLAotCS5wYXJ0cwkJPSBxbmFwX3Rz NDA5X3BhcnRpdGlvbnMsCi0JLm5yX3BhcnRzCT0gQVJSQVlfU0laRShxbmFwX3RzNDA5X3BhcnRp dGlvbnMpCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIHFuYXBfdHM0MDlfbm9yX2ZsYXNo X3Jlc291cmNlID0gewotCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAotCS5zdGFydAk9IFFOQVBf VFM0MDlfTk9SX0JPT1RfQkFTRSwKLQkuZW5kCT0gUU5BUF9UUzQwOV9OT1JfQk9PVF9CQVNFICsg UU5BUF9UUzQwOV9OT1JfQk9PVF9TSVpFIC0gMSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlIHFuYXBfdHM0MDlfbm9yX2ZsYXNoID0gewotCS5uYW1lCQk9ICJwaHlzbWFwLWZs YXNoIiwKLQkuaWQJCT0gMCwKLQkuZGV2CQk9IHsgLnBsYXRmb3JtX2RhdGEgPSAmcW5hcF90czQw OV9ub3JfZmxhc2hfZGF0YSwgfSwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJlc291cmNlCT0g JnFuYXBfdHM0MDlfbm9yX2ZsYXNoX3Jlc291cmNlLAotfTsKLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBQQ0kKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgaW50IF9faW5pdCBx bmFwX3RzNDA5X3BjaV9tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3Qs Ci0JdTggcGluKQotewotCWludCBpcnE7Ci0KLQkvKgotCSAqIENoZWNrIGZvciBkZXZpY2VzIHdp dGggaGFyZC13aXJlZCBJUlFzLgotCSAqLwotCWlycSA9IG9yaW9uNXhfcGNpX21hcF9pcnEoZGV2 LCBzbG90LCBwaW4pOwotCWlmIChpcnEgIT0gLTEpCi0JCXJldHVybiBpcnE7Ci0KLQkvKgotCSAq IFBDSSBpc24ndCB1c2VkIG9uIHRoZSBUUy00MDkKLQkgKi8KLQlyZXR1cm4gLTE7Ci19Ci0KLXN0 YXRpYyBzdHJ1Y3QgaHdfcGNpIHFuYXBfdHM0MDlfcGNpIF9faW5pdGRhdGEgPSB7Ci0JLm5yX2Nv bnRyb2xsZXJzCT0gMiwKLQkuc2V0dXAJCT0gb3Jpb241eF9wY2lfc3lzX3NldHVwLAotCS5zY2Fu CQk9IG9yaW9uNXhfcGNpX3N5c19zY2FuX2J1cywKLQkubWFwX2lycQk9IHFuYXBfdHM0MDlfcGNp X21hcF9pcnEsCi19OwotCi1zdGF0aWMgaW50IF9faW5pdCBxbmFwX3RzNDA5X3BjaV9pbml0KHZv aWQpCi17Ci0JaWYgKG1hY2hpbmVfaXNfdHM0MDkoKSkKLQkJcGNpX2NvbW1vbl9pbml0KCZxbmFw X3RzNDA5X3BjaSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3Vic3lzX2luaXRjYWxsKHFuYXBfdHM0 MDlfcGNpX2luaXQpOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFJUQyBTMzUzOTBBIG9u IEkyQyBidXMKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jZGVmaW5lIFRTNDA5X1JUQ19HUElP CTEwCi0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gX19pbml0ZGF0YSBxbmFwX3RzNDA5 X2kyY19ydGMgPSB7Ci0JSTJDX0JPQVJEX0lORk8oInMzNTM5MGEiLCAweDMwKSwKLX07Ci0KLS8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogTEVEcyBhdHRhY2hlZCB0byBHUElPCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLQotc3RhdGljIHN0cnVjdCBncGlvX2xlZCB0czQwOV9sZWRfcGluc1tdID0g ewotCXsKLQkJLm5hbWUJCT0gInRzNDA5OnJlZDpzYXRhMSIsCi0JfSwgewotCQkubmFtZQkJPSAi dHM0MDk6cmVkOnNhdGEyIiwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJ0czQwOTpyZWQ6c2F0YTMiLAot CX0sIHsKLQkJLm5hbWUJCT0gInRzNDA5OnJlZDpzYXRhNCIsCi0JfSwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgZ3Bpb2RfbG9va3VwX3RhYmxlIHRzNDA5X2xlZHNfZ3Bpb190YWJsZSA9IHsKLQkuZGV2 X2lkID0gImxlZHMtZ3BpbyIsCi0JLnRhYmxlID0gewotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9u X2dwaW8wIiwgNCwgTlVMTCwKLQkJCQkwLCBHUElPX0FDVElWRV9MT1cpLAotCQlHUElPX0xPT0tV UF9JRFgoIm9yaW9uX2dwaW8wIiwgNSwgTlVMTCwKLQkJCQkxLCBHUElPX0FDVElWRV9MT1cpLAot CQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgNiwgTlVMTCwKLQkJCQkyLCBHUElPX0FD VElWRV9MT1cpLAotCQlHUElPX0xPT0tVUF9JRFgoIm9yaW9uX2dwaW8wIiwgNywgTlVMTCwKLQkJ CQkzLCBHUElPX0FDVElWRV9MT1cpLAotCQl7IH0sCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg Z3Bpb19sZWRfcGxhdGZvcm1fZGF0YSB0czQwOV9sZWRfZGF0YSA9IHsKLQkubGVkcwkJPSB0czQw OV9sZWRfcGlucywKLQkubnVtX2xlZHMJPSBBUlJBWV9TSVpFKHRzNDA5X2xlZF9waW5zKSwKLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHRzNDA5X2xlZHMgPSB7Ci0JLm5hbWUJ PSAibGVkcy1ncGlvIiwKLQkuaWQJPSAtMSwKLQkuZGV2CT0gewotCQkucGxhdGZvcm1fZGF0YQk9 ICZ0czQwOV9sZWRfZGF0YSwKLQl9LAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdQ SU8gQXR0YWNoZWQgS2V5cwotICogICAgIFBvd2VyIGJ1dHRvbiBpcyBhdHRhY2hlZCB0byB0aGUg UElDIG1pY3JvY29udHJvbGxlcgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNkZWZpbmUgUU5B UF9UUzQwOV9HUElPX0tFWV9SRVNFVAkxNAotI2RlZmluZSBRTkFQX1RTNDA5X0dQSU9fS0VZX01F RElBCTE1Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbiBxbmFwX3RzNDA5X2J1dHRv bnNbXSA9IHsKLQl7Ci0JCS5jb2RlCQk9IEtFWV9SRVNUQVJULAotCQkuZ3BpbwkJPSBRTkFQX1RT NDA5X0dQSU9fS0VZX1JFU0VULAotCQkuZGVzYwkJPSAiUmVzZXQgQnV0dG9uIiwKLQkJLmFjdGl2 ZV9sb3cJPSAxLAotCX0sIHsKLQkJLmNvZGUJCT0gS0VZX0NPUFksCi0JCS5ncGlvCQk9IFFOQVBf VFM0MDlfR1BJT19LRVlfTUVESUEsCi0JCS5kZXNjCQk9ICJVU0IgQ29weSBCdXR0b24iLAotCQku YWN0aXZlX2xvdwk9IDEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX3BsYXRm b3JtX2RhdGEgcW5hcF90czQwOV9idXR0b25fZGF0YSA9IHsKLQkuYnV0dG9ucwk9IHFuYXBfdHM0 MDlfYnV0dG9ucywKLQkubmJ1dHRvbnMJPSBBUlJBWV9TSVpFKHFuYXBfdHM0MDlfYnV0dG9ucyks Ci19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBxbmFwX3RzNDA5X2J1dHRvbl9k ZXZpY2UgPSB7Ci0JLm5hbWUJCT0gImdwaW8ta2V5cyIsCi0JLmlkCQk9IC0xLAotCS5udW1fcmVz b3VyY2VzCT0gMCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmcW5hcF90czQwOV9i dXR0b25fZGF0YSwKLQl9LAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHZW5lcmFs IFNldHVwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgdHM0MDlf bXBwX21vZGVzW10gX19pbml0ZGF0YSA9IHsKLQlNUFAwX1VOVVNFRCwKLQlNUFAxX1VOVVNFRCwK LQlNUFAyX1VOVVNFRCwKLQlNUFAzX1VOVVNFRCwKLQlNUFA0X0dQSU8sCQkvKiBIREQgMSBzdGF0 dXMgKi8KLQlNUFA1X0dQSU8sCQkvKiBIREQgMiBzdGF0dXMgKi8KLQlNUFA2X0dQSU8sCQkvKiBI REQgMyBzdGF0dXMgKi8KLQlNUFA3X0dQSU8sCQkvKiBIREQgNCBzdGF0dXMgKi8KLQlNUFA4X1VO VVNFRCwKLQlNUFA5X1VOVVNFRCwKLQlNUFAxMF9HUElPLAkJLyogUlRDIGludCAqLwotCU1QUDEx X1VOVVNFRCwKLQlNUFAxMl9VTlVTRUQsCi0JTVBQMTNfVU5VU0VELAotCU1QUDE0X0dQSU8sCQkv KiBTV19SU1QgKi8KLQlNUFAxNV9HUElPLAkJLyogVVNCIGNvcHkgYnV0dG9uICovCi0JTVBQMTZf VUFSVCwJCS8qIFVBUlQxIFJYRCAqLwotCU1QUDE3X1VBUlQsCQkvKiBVQVJUMSBUWEQgKi8KLQlN UFAxOF9VTlVTRUQsCi0JTVBQMTlfVU5VU0VELAotCTAsCi19OwotCi1zdGF0aWMgdm9pZCBfX2lu aXQgcW5hcF90czQwOV9pbml0KHZvaWQpCi17Ci0JLyoKLQkgKiBTZXR1cCBiYXNpYyBPcmlvbiBm dW5jdGlvbnMuIE5lZWQgdG8gYmUgY2FsbGVkIGVhcmx5LgotCSAqLwotCW9yaW9uNXhfaW5pdCgp OwotCi0Jb3Jpb241eF9tcHBfY29uZih0czQwOV9tcHBfbW9kZXMpOwotCi0JLyoKLQkgKiBDb25m aWd1cmUgcGVyaXBoZXJhbHMuCi0JICovCi0JbXZlYnVfbWJ1c19hZGRfd2luZG93X2J5X2lkKE9S SU9OX01CVVNfREVWQlVTX0JPT1RfVEFSR0VULAotCQkJCSAgICBPUklPTl9NQlVTX0RFVkJVU19C T09UX0FUVFIsCi0JCQkJICAgIFFOQVBfVFM0MDlfTk9SX0JPT1RfQkFTRSwKLQkJCQkgICAgUU5B UF9UUzQwOV9OT1JfQk9PVF9TSVpFKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnFuYXBf dHM0MDlfbm9yX2ZsYXNoKTsKLQotCW9yaW9uNXhfZWhjaTBfaW5pdCgpOwotCXFuYXBfdHN4MDlf ZmluZF9tYWNfYWRkcihRTkFQX1RTNDA5X05PUl9CT09UX0JBU0UgKwotCQkJCSBxbmFwX3RzNDA5 X3BhcnRpdGlvbnNbNV0ub2Zmc2V0LAotCQkJCSBxbmFwX3RzNDA5X3BhcnRpdGlvbnNbNV0uc2l6 ZSk7Ci0Jb3Jpb241eF9ldGhfaW5pdCgmcW5hcF90c3gwOV9ldGhfZGF0YSk7Ci0Jb3Jpb241eF9p MmNfaW5pdCgpOwotCW9yaW9uNXhfdWFydDBfaW5pdCgpOwotCW9yaW9uNXhfdWFydDFfaW5pdCgp OwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZxbmFwX3RzNDA5X2J1dHRvbl9kZXZpY2Up OwotCi0JLyogR2V0IFJUQyBJUlEgYW5kIHJlZ2lzdGVyIHRoZSBjaGlwICovCi0JaWYgKGdwaW9f cmVxdWVzdChUUzQwOV9SVENfR1BJTywgInJ0YyIpID09IDApIHsKLQkJaWYgKGdwaW9fZGlyZWN0 aW9uX2lucHV0KFRTNDA5X1JUQ19HUElPKSA9PSAwKQotCQkJcW5hcF90czQwOV9pMmNfcnRjLmly cSA9IGdwaW9fdG9faXJxKFRTNDA5X1JUQ19HUElPKTsKLQkJZWxzZQotCQkJZ3Bpb19mcmVlKFRT NDA5X1JUQ19HUElPKTsKLQl9Ci0JaWYgKHFuYXBfdHM0MDlfaTJjX3J0Yy5pcnEgPT0gMCkKLQkJ cHJfd2FybigicW5hcF90czQwOV9pbml0OiBmYWlsZWQgdG8gZ2V0IFJUQyBJUlFcbiIpOwotCWky Y19yZWdpc3Rlcl9ib2FyZF9pbmZvKDAsICZxbmFwX3RzNDA5X2kyY19ydGMsIDEpOwotCWdwaW9k X2FkZF9sb29rdXBfdGFibGUoJnRzNDA5X2xlZHNfZ3Bpb190YWJsZSk7Ci0JcGxhdGZvcm1fZGV2 aWNlX3JlZ2lzdGVyKCZ0czQwOV9sZWRzKTsKLQotCS8qIHJlZ2lzdGVyIHRzeDA5IHNwZWNpZmlj IHBvd2VyLW9mZiBtZXRob2QgKi8KLQlyZWdpc3Rlcl9wbGF0Zm9ybV9wb3dlcl9vZmYocW5hcF90 c3gwOV9wb3dlcl9vZmYpOwotfQotCi1NQUNISU5FX1NUQVJUKFRTNDA5LCAiUU5BUCBUUy00MDki KQotCS8qIE1haW50YWluZXI6ICBTeWx2ZXIgQnJ1bmVhdSA8c3lsdmVyLmJydW5lYXVAZ21haWwu Y29tPiAqLwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0gT1JJT041WF9OUl9J UlFTLAotCS5pbml0X21hY2hpbmUJPSBxbmFwX3RzNDA5X2luaXQsCi0JLm1hcF9pbwkJPSBvcmlv bjV4X21hcF9pbywKLQkuaW5pdF9lYXJseQk9IG9yaW9uNXhfaW5pdF9lYXJseSwKLQkuaW5pdF9p cnEJPSBvcmlvbjV4X2luaXRfaXJxLAotCS5pbml0X3RpbWUJPSBvcmlvbjV4X3RpbWVyX2luaXQs Ci0JLmZpeHVwCQk9IHRhZ19maXh1cF9tZW0zMiwKLQkucmVzdGFydAk9IG9yaW9uNXhfcmVzdGFy dCwKLU1BQ0hJTkVfRU5ECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM3OHh4 LWZwZ2EuaCBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtZnBnYS5oCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAyZjRmZTNjYTVjMWEuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLW9yaW9uNXgvdHM3OHh4LWZwZ2EuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICsw LDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCi0jZGVmaW5lIFRT NzgwMF9GUEdBX01BR0lDIDB4MDBiNDgwCi0jZGVmaW5lIEZQR0FJRChfbWFnaWMsIF9yZXYpICgo X21hZ2ljIDw8IDgpICsgX3JldikKLQotLyoKLSAqIGdldCB5ZXIgaWQncyBmcm9tIGh0dHA6Ly90 czc4eHguZGlncml6Lm9yZy51ay8KLSAqIGRvICpub3QqIG1ha2UgdXAgeW91ciBvd24gb3IgJ2Jv cnJvdycgYW55IQotICovCi1lbnVtIGZwZ2FfaWRzIHsKLQkvKiBUZWNobm9sb2dpYyBTeXN0ZW1z ICovCi0JVFM3ODAwX1JFVl8xCT0gRlBHQUlEKFRTNzgwMF9GUEdBX01BR0lDLCAweDAxKSwKLQlU Uzc4MDBfUkVWXzIJPSBGUEdBSUQoVFM3ODAwX0ZQR0FfTUFHSUMsIDB4MDIpLAotCVRTNzgwMF9S RVZfMwk9IEZQR0FJRChUUzc4MDBfRlBHQV9NQUdJQywgMHgwMyksCi0JVFM3ODAwX1JFVl80CT0g RlBHQUlEKFRTNzgwMF9GUEdBX01BR0lDLCAweDA0KSwKLQlUUzc4MDBfUkVWXzUJPSBGUEdBSUQo VFM3ODAwX0ZQR0FfTUFHSUMsIDB4MDUpLAotCVRTNzgwMF9SRVZfNgk9IEZQR0FJRChUUzc4MDBf RlBHQV9NQUdJQywgMHgwNiksCi0JVFM3ODAwX1JFVl83CT0gRlBHQUlEKFRTNzgwMF9GUEdBX01B R0lDLCAweDA3KSwKLQlUUzc4MDBfUkVWXzgJPSBGUEdBSUQoVFM3ODAwX0ZQR0FfTUFHSUMsIDB4 MDgpLAotCVRTNzgwMF9SRVZfOQk9IEZQR0FJRChUUzc4MDBfRlBHQV9NQUdJQywgMHgwOSksCi0K LQkvKiBVbmFmZm9yZGFibGUgJiBFeHBlbnNpdmUgKi8KLQlVQUVfRFVNTVkJPSBGUEdBSUQoMHhm ZmZmZmYsIDB4MDEpLAotfTsKLQotc3RydWN0IGZwZ2FfZGV2aWNlIHsKLQl1bnNpZ25lZAkJcHJl c2VudDoxOwotCXVuc2lnbmVkCQlpbml0OjE7Ci19OwotCi1zdHJ1Y3QgZnBnYV9kZXZpY2VzIHsK LQkvKiBUZWNobm9sb2dpYyBTeXN0ZW1zICovCi0Jc3RydWN0IGZwZ2FfZGV2aWNlCXRzX3J0YzsK LQlzdHJ1Y3QgZnBnYV9kZXZpY2UJdHNfbmFuZDsKLQlzdHJ1Y3QgZnBnYV9kZXZpY2UJdHNfcm5n OwotfTsKLQotc3RydWN0IHRzNzh4eF9mcGdhX2RhdGEgewotCXVuc2lnbmVkIGludAkJaWQ7Ci0J aW50CQkJc3RhdGU7Ci0KLQlzdHJ1Y3QgZnBnYV9kZXZpY2VzCXN1cHBvcnRzOwotfTsKZGlmZiAt LWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtc2V0dXAuYyBiL2FyY2gvYXJtL21h Y2gtb3Jpb241eC90czc4eHgtc2V0dXAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg YWY4MTBlN2NjZDc5Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3Rz Nzh4eC1zZXR1cC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTc0ICswLDAgQEAKLS8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLW9yaW9u NXgvdHM3OHh4LXNldHVwLmMKLSAqCi0gKiBNYWludGFpbmVyOiBBbGV4YW5kZXIgQ2xvdXRlciA8 YWxleEBkaWdyaXoub3JnLnVrPgotICovCi0KLSNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01P RE5BTUUgIjogIiBmbXQKLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgotI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L212NjQzeHhfZXRoLmg+Ci0jaW5jbHVk ZSA8bGludXgvYXRhX3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8bGludXgvbXRkL3BsYXRuYW5kLmg+ Ci0jaW5jbHVkZSA8bGludXgvdGltZXJpb21lbS1ybmcuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC10 eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9t YXAuaD4KLSNpbmNsdWRlICJjb21tb24uaCIKLSNpbmNsdWRlICJtcHAuaCIKLSNpbmNsdWRlICJv cmlvbjV4LmgiCi0jaW5jbHVkZSAidHM3OHh4LWZwZ2EuaCIKLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBUUy03OHh4IEluZm8KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogRlBH QSAtIGxpdmVzIHdoZXJlIHRoZSBQQ0kgYnVzIHdvdWxkIGJlIGF0IE9SSU9ONVhfUENJX01FTV9Q SFlTX0JBU0UKLSAqLwotI2RlZmluZSBUUzc4WFhfRlBHQV9SRUdTX1BIWVNfQkFTRQkweGU4MDAw MDAwCi0jZGVmaW5lIFRTNzhYWF9GUEdBX1JFR1NfVklSVF9CQVNFCUlPTUVNKDB4ZmY5MDAwMDAp Ci0jZGVmaW5lIFRTNzhYWF9GUEdBX1JFR1NfU0laRQkJU1pfMU0KLQotc3RhdGljIHN0cnVjdCB0 czc4eHhfZnBnYV9kYXRhIHRzNzh4eF9mcGdhID0gewotCS5pZAkJPSAwLAotCS5zdGF0ZQkJPSAx LAotLyoJLnN1cHBvcnRzCT0gLi4uIC0gcG9wdWxhdGVkIGJ5IHRzNzh4eF9mcGdhX3N1cHBvcnRz KCkgKi8KLX07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogSS9PIEFkZHJlc3MgTWFwcGlu ZwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IG1hcF9kZXNjIHRzNzh4eF9p b19kZXNjW10gX19pbml0ZGF0YSA9IHsKLQl7Ci0JCS52aXJ0dWFsCT0gKHVuc2lnbmVkIGxvbmcp VFM3OFhYX0ZQR0FfUkVHU19WSVJUX0JBU0UsCi0JCS5wZm4JCT0gX19waHlzX3RvX3BmbihUUzc4 WFhfRlBHQV9SRUdTX1BIWVNfQkFTRSksCi0JCS5sZW5ndGgJCT0gVFM3OFhYX0ZQR0FfUkVHU19T SVpFLAotCQkudHlwZQkJPSBNVF9ERVZJQ0UsCi0JfSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5p dCB0czc4eHhfbWFwX2lvKHZvaWQpCi17Ci0Jb3Jpb241eF9tYXBfaW8oKTsKLQlpb3RhYmxlX2lu aXQodHM3OHh4X2lvX2Rlc2MsIEFSUkFZX1NJWkUodHM3OHh4X2lvX2Rlc2MpKTsKLX0KLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0gKiBFdGhlcm5ldAotICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1z dGF0aWMgc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgdHM3OHh4X2V0aF9kYXRhID0g ewotCS5waHlfYWRkcgk9IE1WNjQzWFhfRVRIX1BIWV9BRERSKDApLAotfTsKLQotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0gKiBTQVRBCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1 Y3QgbXZfc2F0YV9wbGF0Zm9ybV9kYXRhIHRzNzh4eF9zYXRhX2RhdGEgPSB7Ci0JLm5fcG9ydHMJ PSAyLAotfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBSVEMgTTQ4VDg2IC0gbmlja2Vk Xldib3Jyb3dlZCBmcm9tIGFyY2gvYXJtL21hY2gtZXA5M3h4L3RzNzJ4eC5jCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLSNkZWZpbmUgVFNfUlRDX0NUUkwJKFRTNzhYWF9GUEdBX1JFR1NfUEhZU19C QVNFICsgMHg4MDgpCi0jZGVmaW5lIFRTX1JUQ19EQVRBCShUUzc4WFhfRlBHQV9SRUdTX1BIWVNf QkFTRSArIDB4ODBjKQotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIHRzNzh4eF90c19ydGNfcmVz b3VyY2VzW10gPSB7Ci0JREVGSU5FX1JFU19NRU0oVFNfUlRDX0NUUkwsIDB4MDEpLAotCURFRklO RV9SRVNfTUVNKFRTX1JUQ19EQVRBLCAweDAxKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlIHRzNzh4eF90c19ydGNfZGV2aWNlID0gewotCS5uYW1lCQk9ICJydGMtbTQ4dDg2 IiwKLQkuaWQJCT0gLTEsCi0JLnJlc291cmNlCT0gdHM3OHh4X3RzX3J0Y19yZXNvdXJjZXMsCi0J Lm51bV9yZXNvdXJjZXMgCT0gQVJSQVlfU0laRSh0czc4eHhfdHNfcnRjX3Jlc291cmNlcyksCi19 OwotCi1zdGF0aWMgaW50IHRzNzh4eF90c19ydGNfbG9hZCh2b2lkKQotewotCWludCByYzsKLQot CWlmICh0czc4eHhfZnBnYS5zdXBwb3J0cy50c19ydGMuaW5pdCA9PSAwKSB7Ci0JCXJjID0gcGxh dGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZ0czc4eHhfdHNfcnRjX2RldmljZSk7Ci0JCWlmICghcmMp Ci0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19ydGMuaW5pdCA9IDE7Ci0JfSBlbHNlIHsKLQkJ cmMgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKCZ0czc4eHhfdHNfcnRjX2RldmljZSk7Ci0JfQotCi0J aWYgKHJjKQotCQlwcl9pbmZvKCJSVEMgY291bGQgbm90IGJlIHJlZ2lzdGVyZWQ6ICVkXG4iLCBy Yyk7Ci0KLQlyZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyB2b2lkIHRzNzh4eF90c19ydGNfdW5sb2Fk KHZvaWQpCi17Ci0JcGxhdGZvcm1fZGV2aWNlX2RlbCgmdHM3OHh4X3RzX3J0Y19kZXZpY2UpOwot fQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIE5BTkQgRmxhc2gKLSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotI2RlZmluZSBUU19OQU5EX0NUUkwJKFRTNzhYWF9GUEdBX1JFR1NfVklSVF9CQVNF ICsgMHg4MDApCS8qIFZJUlQgKi8KLSNkZWZpbmUgVFNfTkFORF9EQVRBCShUUzc4WFhfRlBHQV9S RUdTX1BIWVNfQkFTRSArIDB4ODA0KQkvKiBQSFlTICovCi0KLS8qCi0gKiBoYXJkd2FyZSBzcGVj aWZpYyBhY2Nlc3MgdG8gY29udHJvbC1saW5lcwotICoKLSAqIGN0cmw6Ci0gKiBOQU5EX05DRTog Yml0IDAgLT4gYml0IDIKLSAqIE5BTkRfQ0xFOiBiaXQgMSAtPiBiaXQgMQotICogTkFORF9BTEU6 IGJpdCAyIC0+IGJpdCAwCi0gKi8KLXN0YXRpYyB2b2lkIHRzNzh4eF90c19uYW5kX2NtZF9jdHJs KHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMsIGludCBjbWQsCi0JCQkJICAgIHVuc2lnbmVkIGludCBj dHJsKQotewotCWlmIChjdHJsICYgTkFORF9DVFJMX0NIQU5HRSkgewotCQl1bnNpZ25lZCBjaGFy IGJpdHM7Ci0KLQkJYml0cyA9IChjdHJsICYgTkFORF9OQ0UpIDw8IDI7Ci0JCWJpdHMgfD0gY3Ry bCAmIE5BTkRfQ0xFOwotCQliaXRzIHw9IChjdHJsICYgTkFORF9BTEUpID4+IDI7Ci0KLQkJd3Jp dGViKChyZWFkYihUU19OQU5EX0NUUkwpICYgfjB4NykgfCBiaXRzLCBUU19OQU5EX0NUUkwpOwot CX0KLQotCWlmIChjbWQgIT0gTkFORF9DTURfTk9ORSkKLQkJd3JpdGViKGNtZCwgdGhpcy0+bGVn YWN5LklPX0FERFJfVyk7Ci19Ci0KLXN0YXRpYyBpbnQgdHM3OHh4X3RzX25hbmRfZGV2X3JlYWR5 KHN0cnVjdCBuYW5kX2NoaXAgKmNoaXApCi17Ci0JcmV0dXJuIHJlYWRiKFRTX05BTkRfQ1RSTCkg JiAweDIwOwotfQotCi1zdGF0aWMgdm9pZCB0czc4eHhfdHNfbmFuZF93cml0ZV9idWYoc3RydWN0 IG5hbmRfY2hpcCAqY2hpcCwKLQkJCQkgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikK LXsKLQl2b2lkIF9faW9tZW0gKmlvX2Jhc2UgPSBjaGlwLT5sZWdhY3kuSU9fQUREUl9XOwotCXVu c2lnbmVkIGxvbmcgb2ZmID0gKCh1bnNpZ25lZCBsb25nKWJ1ZiAmIDMpOwotCWludCBzejsKLQot CWlmIChvZmYpIHsKLQkJc3ogPSBtaW5fdChpbnQsIDQgLSBvZmYsIGxlbik7Ci0JCXdyaXRlc2Io aW9fYmFzZSwgYnVmLCBzeik7Ci0JCWJ1ZiArPSBzejsKLQkJbGVuIC09IHN6OwotCX0KLQotCXN6 ID0gbGVuID4+IDI7Ci0JaWYgKHN6KSB7Ci0JCXUzMiAqYnVmMzIgPSAodTMyICopYnVmOwotCQl3 cml0ZXNsKGlvX2Jhc2UsIGJ1ZjMyLCBzeik7Ci0JCWJ1ZiArPSBzeiA8PCAyOwotCQlsZW4gLT0g c3ogPDwgMjsKLQl9Ci0KLQlpZiAobGVuKQotCQl3cml0ZXNiKGlvX2Jhc2UsIGJ1ZiwgbGVuKTsK LX0KLQotc3RhdGljIHZvaWQgdHM3OHh4X3RzX25hbmRfcmVhZF9idWYoc3RydWN0IG5hbmRfY2hp cCAqY2hpcCwKLQkJCQkgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKQotewotCXZvaWQgX19pb21l bSAqaW9fYmFzZSA9IGNoaXAtPmxlZ2FjeS5JT19BRERSX1I7Ci0JdW5zaWduZWQgbG9uZyBvZmYg PSAoKHVuc2lnbmVkIGxvbmcpYnVmICYgMyk7Ci0JaW50IHN6OwotCi0JaWYgKG9mZikgewotCQlz eiA9IG1pbl90KGludCwgNCAtIG9mZiwgbGVuKTsKLQkJcmVhZHNiKGlvX2Jhc2UsIGJ1Ziwgc3op OwotCQlidWYgKz0gc3o7Ci0JCWxlbiAtPSBzejsKLQl9Ci0KLQlzeiA9IGxlbiA+PiAyOwotCWlm IChzeikgewotCQl1MzIgKmJ1ZjMyID0gKHUzMiAqKWJ1ZjsKLQkJcmVhZHNsKGlvX2Jhc2UsIGJ1 ZjMyLCBzeik7Ci0JCWJ1ZiArPSBzeiA8PCAyOwotCQlsZW4gLT0gc3ogPDwgMjsKLQl9Ci0KLQlp ZiAobGVuKQotCQlyZWFkc2IoaW9fYmFzZSwgYnVmLCBsZW4pOwotfQotCi1zdGF0aWMgc3RydWN0 IG10ZF9wYXJ0aXRpb24gdHM3OHh4X3RzX25hbmRfcGFydHNbXSA9IHsKLQl7Ci0JCS5uYW1lCQk9 ICJtYnIiLAotCQkub2Zmc2V0CQk9IDAsCi0JCS5zaXplCQk9IFNaXzEyOEssCi0JCS5tYXNrX2Zs YWdzCT0gTVREX1dSSVRFQUJMRSwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJrZXJuZWwiLAotCQkub2Zm c2V0CQk9IE1URFBBUlRfT0ZTX0FQUEVORCwKLQkJLnNpemUJCT0gU1pfNE0sCi0JfSwgewotCQku bmFtZQkJPSAiaW5pdHJkIiwKLQkJLm9mZnNldAkJPSBNVERQQVJUX09GU19BUFBFTkQsCi0JCS5z aXplCQk9IFNaXzRNLAotCX0sIHsKLQkJLm5hbWUJCT0gInJvb3RmcyIsCi0JCS5vZmZzZXQJCT0g TVREUEFSVF9PRlNfQVBQRU5ELAotCQkuc2l6ZQkJPSBNVERQQVJUX1NJWl9GVUxMLAotCX0KLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fbmFuZF9kYXRhIHRzNzh4eF90c19uYW5kX2RhdGEg PSB7Ci0JLmNoaXAJPSB7Ci0JCS5ucl9jaGlwcwkJPSAxLAotCQkucGFydGl0aW9ucwkJPSB0czc4 eHhfdHNfbmFuZF9wYXJ0cywKLQkJLm5yX3BhcnRpdGlvbnMJCT0gQVJSQVlfU0laRSh0czc4eHhf dHNfbmFuZF9wYXJ0cyksCi0JCS5jaGlwX2RlbGF5CQk9IDE1LAotCQkuYmJ0X29wdGlvbnMJCT0g TkFORF9CQlRfVVNFX0ZMQVNILAotCX0sCi0JLmN0cmwJPSB7Ci0JCS8qCi0JCSAqIFRoZSBIVyBF Q0Mgb2ZmbG9hZGluZyBmdW5jdGlvbnMsIHVzZWQgdG8gZ2l2ZSBhYm91dCBhIDklCi0JCSAqIHBl cmZvcm1hbmNlIGluY3JlYXNlIGZvciAnZGQgaWY9L2Rldi9tdGRibG9ja1gnIGFuZCA1JSBmb3IK LQkJICogbmFuZGR1bXAuICBUaGlzIGFsbCBob3dldmVyIHdhcyBjaGFuZ2VkIGJ5IGdpdCBjb21t aXQKLQkJICogZTZjZjVkZjE4MzhjMjhiYjA2MGFjNDViNTU4NWU0OGU3MWJiYzc0MCBzbyBub3cg dGhlcmUgaXMKLQkJICogbm8gcGVyZm9ybWFuY2UgYWR2YW50YWdlIHRvIGJlIGhhZCBzbyB3ZSBu byBsb25nZXIgYm90aGVyCi0JCSAqLwotCQkuY21kX2N0cmwJCT0gdHM3OHh4X3RzX25hbmRfY21k X2N0cmwsCi0JCS5kZXZfcmVhZHkJCT0gdHM3OHh4X3RzX25hbmRfZGV2X3JlYWR5LAotCQkud3Jp dGVfYnVmCQk9IHRzNzh4eF90c19uYW5kX3dyaXRlX2J1ZiwKLQkJLnJlYWRfYnVmCQk9IHRzNzh4 eF90c19uYW5kX3JlYWRfYnVmLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIHRz Nzh4eF90c19uYW5kX3Jlc291cmNlcwotCQkJPSBERUZJTkVfUkVTX01FTShUU19OQU5EX0RBVEEs IDQpOwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSB0czc4eHhfdHNfbmFuZF9kZXZp Y2UgPSB7Ci0JLm5hbWUJCT0gImdlbl9uYW5kIiwKLQkuaWQJCT0gLTEsCi0JLmRldgkJPSB7Ci0J CS5wbGF0Zm9ybV9kYXRhCT0gJnRzNzh4eF90c19uYW5kX2RhdGEsCi0JfSwKLQkucmVzb3VyY2UJ PSAmdHM3OHh4X3RzX25hbmRfcmVzb3VyY2VzLAotCS5udW1fcmVzb3VyY2VzCT0gMSwKLX07Ci0K LXN0YXRpYyBpbnQgdHM3OHh4X3RzX25hbmRfbG9hZCh2b2lkKQotewotCWludCByYzsKLQotCWlm ICh0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLmluaXQgPT0gMCkgewotCQlyYyA9IHBsYXRm b3JtX2RldmljZV9yZWdpc3RlcigmdHM3OHh4X3RzX25hbmRfZGV2aWNlKTsKLQkJaWYgKCFyYykK LQkJCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX25hbmQuaW5pdCA9IDE7Ci0JfSBlbHNlCi0JCXJj ID0gcGxhdGZvcm1fZGV2aWNlX2FkZCgmdHM3OHh4X3RzX25hbmRfZGV2aWNlKTsKLQotCWlmIChy YykKLQkJcHJfaW5mbygiTkFORCBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZDogJWRcbiIsIHJjKTsK LQlyZXR1cm4gcmM7Ci19OwotCi1zdGF0aWMgdm9pZCB0czc4eHhfdHNfbmFuZF91bmxvYWQodm9p ZCkKLXsKLQlwbGF0Zm9ybV9kZXZpY2VfZGVsKCZ0czc4eHhfdHNfbmFuZF9kZXZpY2UpOwotfQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIEhXIFJORwotICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci0jZGVmaW5lIFRTX1JOR19EQVRBCShUUzc4WFhfRlBHQV9SRUdTX1BIWVNfQkFTRSB8IDB4MDQ0 KQotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIHRzNzh4eF90c19ybmdfcmVzb3VyY2UKLQkJCT0g REVGSU5FX1JFU19NRU0oVFNfUk5HX0RBVEEsIDQpOwotCi1zdGF0aWMgc3RydWN0IHRpbWVyaW9t ZW1fcm5nX2RhdGEgdHM3OHh4X3RzX3JuZ19kYXRhID0gewotCS5wZXJpb2QJCT0gMTAwMDAwMCwg Lyogb25lIHNlY29uZCAqLwotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgdHM3 OHh4X3RzX3JuZ19kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gInRpbWVyaW9tZW1fcm5nIiwKLQkuaWQJ CT0gLTEsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJnRzNzh4eF90c19ybmdfZGF0 YSwKLQl9LAotCS5yZXNvdXJjZQk9ICZ0czc4eHhfdHNfcm5nX3Jlc291cmNlLAotCS5udW1fcmVz b3VyY2VzCT0gMSwKLX07Ci0KLXN0YXRpYyBpbnQgdHM3OHh4X3RzX3JuZ19sb2FkKHZvaWQpCi17 Ci0JaW50IHJjOwotCi0JaWYgKHRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3JuZy5pbml0ID09IDAp IHsKLQkJcmMgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnRzNzh4eF90c19ybmdfZGV2aWNl KTsKLQkJaWYgKCFyYykKLQkJCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3JuZy5pbml0ID0gMTsK LQl9IGVsc2UKLQkJcmMgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKCZ0czc4eHhfdHNfcm5nX2Rldmlj ZSk7Ci0KLQlpZiAocmMpCi0JCXByX2luZm8oIlJORyBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZDog JWRcbiIsIHJjKTsKLQlyZXR1cm4gcmM7Ci19OwotCi1zdGF0aWMgdm9pZCB0czc4eHhfdHNfcm5n X3VubG9hZCh2b2lkKQotewotCXBsYXRmb3JtX2RldmljZV9kZWwoJnRzNzh4eF90c19ybmdfZGV2 aWNlKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBGUEdBICdob3RwbHVnJyBzdXBw b3J0IGNvZGUKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHZvaWQgdHM3OHh4X2ZwZ2Ff ZGV2aWNlc196ZXJvX2luaXQodm9pZCkKLXsKLQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19ydGMu aW5pdCA9IDA7Ci0JdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfbmFuZC5pbml0ID0gMDsKLQl0czc4 eHhfZnBnYS5zdXBwb3J0cy50c19ybmcuaW5pdCA9IDA7Ci19Ci0KLXN0YXRpYyB2b2lkIHRzNzh4 eF9mcGdhX3N1cHBvcnRzKHZvaWQpCi17Ci0JLyogVE9ETzogcHV0IHRoaXMgJ3RhYmxlJyBpbnRv IHRzNzh4eC1mcGdhLmggKi8KLQlzd2l0Y2ggKHRzNzh4eF9mcGdhLmlkKSB7Ci0JY2FzZSBUUzc4 MDBfUkVWXzE6Ci0JY2FzZSBUUzc4MDBfUkVWXzI6Ci0JY2FzZSBUUzc4MDBfUkVWXzM6Ci0JY2Fz ZSBUUzc4MDBfUkVWXzQ6Ci0JY2FzZSBUUzc4MDBfUkVWXzU6Ci0JY2FzZSBUUzc4MDBfUkVWXzY6 Ci0JY2FzZSBUUzc4MDBfUkVWXzc6Ci0JY2FzZSBUUzc4MDBfUkVWXzg6Ci0JY2FzZSBUUzc4MDBf UkVWXzk6Ci0JCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3J0Yy5wcmVzZW50ID0gMTsKLQkJdHM3 OHh4X2ZwZ2Euc3VwcG9ydHMudHNfbmFuZC5wcmVzZW50ID0gMTsKLQkJdHM3OHh4X2ZwZ2Euc3Vw cG9ydHMudHNfcm5nLnByZXNlbnQgPSAxOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQkvKiBlbmFi bGUgZGV2aWNlcyBpZiBtYWdpYyBtYXRjaGVzICovCi0JCXN3aXRjaCAoKHRzNzh4eF9mcGdhLmlk ID4+IDgpICYgMHhmZmZmZmYpIHsKLQkJY2FzZSBUUzc4MDBfRlBHQV9NQUdJQzoKLQkJCXByX3dh cm4oInVucmVjb2duaXNlZCBGUEdBIHJldmlzaW9uIDB4JS4yeFxuIiwKLQkJCQl0czc4eHhfZnBn YS5pZCAmIDB4ZmYpOwotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcnRjLnByZXNlbnQgPSAx OwotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfbmFuZC5wcmVzZW50ID0gMTsKLQkJCXRzNzh4 eF9mcGdhLnN1cHBvcnRzLnRzX3JuZy5wcmVzZW50ID0gMTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0 OgotCQkJdHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcnRjLnByZXNlbnQgPSAwOwotCQkJdHM3OHh4 X2ZwZ2Euc3VwcG9ydHMudHNfbmFuZC5wcmVzZW50ID0gMDsKLQkJCXRzNzh4eF9mcGdhLnN1cHBv cnRzLnRzX3JuZy5wcmVzZW50ID0gMDsKLQkJfQotCX0KLX0KLQotc3RhdGljIGludCB0czc4eHhf ZnBnYV9sb2FkX2RldmljZXModm9pZCkKLXsKLQlpbnQgdG1wLCByZXQgPSAwOwotCi0JaWYgKHRz Nzh4eF9mcGdhLnN1cHBvcnRzLnRzX3J0Yy5wcmVzZW50ID09IDEpIHsKLQkJdG1wID0gdHM3OHh4 X3RzX3J0Y19sb2FkKCk7Ci0JCWlmICh0bXApCi0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19y dGMucHJlc2VudCA9IDA7Ci0JCXJldCB8PSB0bXA7Ci0JfQotCWlmICh0czc4eHhfZnBnYS5zdXBw b3J0cy50c19uYW5kLnByZXNlbnQgPT0gMSkgewotCQl0bXAgPSB0czc4eHhfdHNfbmFuZF9sb2Fk KCk7Ci0JCWlmICh0bXApCi0JCQl0czc4eHhfZnBnYS5zdXBwb3J0cy50c19uYW5kLnByZXNlbnQg PSAwOwotCQlyZXQgfD0gdG1wOwotCX0KLQlpZiAodHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcm5n LnByZXNlbnQgPT0gMSkgewotCQl0bXAgPSB0czc4eHhfdHNfcm5nX2xvYWQoKTsKLQkJaWYgKHRt cCkKLQkJCXRzNzh4eF9mcGdhLnN1cHBvcnRzLnRzX3JuZy5wcmVzZW50ID0gMDsKLQkJcmV0IHw9 IHRtcDsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgaW50IHRzNzh4eF9mcGdhX3Vu bG9hZF9kZXZpY2VzKHZvaWQpCi17Ci0KLQlpZiAodHM3OHh4X2ZwZ2Euc3VwcG9ydHMudHNfcnRj LnByZXNlbnQgPT0gMSkKLQkJdHM3OHh4X3RzX3J0Y191bmxvYWQoKTsKLQlpZiAodHM3OHh4X2Zw Z2Euc3VwcG9ydHMudHNfbmFuZC5wcmVzZW50ID09IDEpCi0JCXRzNzh4eF90c19uYW5kX3VubG9h ZCgpOwotCWlmICh0czc4eHhfZnBnYS5zdXBwb3J0cy50c19ybmcucHJlc2VudCA9PSAxKQotCQl0 czc4eHhfdHNfcm5nX3VubG9hZCgpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgdHM3 OHh4X2ZwZ2FfbG9hZCh2b2lkKQotewotCXRzNzh4eF9mcGdhLmlkID0gcmVhZGwoVFM3OFhYX0ZQ R0FfUkVHU19WSVJUX0JBU0UpOwotCi0JcHJfaW5mbygiRlBHQSBtYWdpYz0weCUuNngsIHJldj0w eCUuMnhcbiIsCi0JCQkodHM3OHh4X2ZwZ2EuaWQgPj4gOCkgJiAweGZmZmZmZiwKLQkJCXRzNzh4 eF9mcGdhLmlkICYgMHhmZik7Ci0KLQl0czc4eHhfZnBnYV9zdXBwb3J0cygpOwotCi0JaWYgKHRz Nzh4eF9mcGdhX2xvYWRfZGV2aWNlcygpKSB7Ci0JCXRzNzh4eF9mcGdhLnN0YXRlID0gLTE7Ci0J CXJldHVybiAtRUJVU1k7Ci0JfQotCi0JcmV0dXJuIDA7Ci19OwotCi1zdGF0aWMgaW50IHRzNzh4 eF9mcGdhX3VubG9hZCh2b2lkKQotewotCXVuc2lnbmVkIGludCBmcGdhX2lkOwotCi0JZnBnYV9p ZCA9IHJlYWRsKFRTNzhYWF9GUEdBX1JFR1NfVklSVF9CQVNFKTsKLQotCS8qCi0JICogVGhlcmUg ZG9lcyBub3Qgc2VlbSB0byBiZSBhIGZlYXNpYmxlIHdheSB0byBibG9jayBhY2Nlc3MgdG8gdGhl IEdQSU8KLQkgKiBwaW5zIGZyb20gdXNlcnNwYWNlICgvZGV2L21lbSkuICBUaGlzIGlmIGNsYXVz ZSBzaG91bGQgaG9wZWZ1bGx5IHdhcm4KLQkgKiB0aG9zZSBmb29saXNoIGVub3VnaCBub3QgdG8g Zm9sbG93ICdwb2xpY3knIDopCi0JICoKLQkgKiBVckpUQUcgU1ZOIHNpbmNlIHIxMzgxIGNhbiBi ZSB1c2VkIHRvIHJlcHJvZ3JhbSB0aGUgRlBHQQotCSAqLwotCWlmICh0czc4eHhfZnBnYS5pZCAh PSBmcGdhX2lkKSB7Ci0JCXByX2VycigiRlBHQSBtYWdpYy9yZXYgbWlzbWF0Y2hcbiIKLQkJCSJU Uy03OHh4IEZQR0E6IHdhcyAweCUuNngvJS4yeCBidXQgbm93IDB4JS42eC8lLjJ4XG4iLAotCQkJ KHRzNzh4eF9mcGdhLmlkID4+IDgpICYgMHhmZmZmZmYsIHRzNzh4eF9mcGdhLmlkICYgMHhmZiwK LQkJCShmcGdhX2lkID4+IDgpICYgMHhmZmZmZmYsIGZwZ2FfaWQgJiAweGZmKTsKLQkJdHM3OHh4 X2ZwZ2Euc3RhdGUgPSAtMTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0KLQlpZiAodHM3OHh4X2Zw Z2FfdW5sb2FkX2RldmljZXMoKSkgewotCQl0czc4eHhfZnBnYS5zdGF0ZSA9IC0xOwotCQlyZXR1 cm4gLUVCVVNZOwotCX0KLQotCXJldHVybiAwOwotfTsKLQotc3RhdGljIHNzaXplX3QgdHM3OHh4 X2ZwZ2Ffc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKLQkJCXN0cnVjdCBrb2JqX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCWlmICh0czc4eHhfZnBnYS5zdGF0ZSA8IDApCi0JCXJl dHVybiBzcHJpbnRmKGJ1ZiwgImJvcmtlZFxuIik7Ci0KLQlyZXR1cm4gc3ByaW50ZihidWYsICIl c1xuIiwgKHRzNzh4eF9mcGdhLnN0YXRlKSA/ICJvbmxpbmUiIDogIm9mZmxpbmUiKTsKLX0KLQot c3RhdGljIHNzaXplX3QgdHM3OHh4X2ZwZ2Ffc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosCi0J CQlzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IG4p Ci17Ci0JaW50IHZhbHVlLCByZXQ7Ci0KLQlpZiAodHM3OHh4X2ZwZ2Euc3RhdGUgPCAwKSB7Ci0J CXByX2VycigiRlBHQSBib3JrZWQsIHlvdSBtdXN0IHBvd2VyY3ljbGUgQVNBUFxuIik7Ci0JCXJl dHVybiAtRUJVU1k7Ci0JfQotCi0JaWYgKHN0cm5jbXAoYnVmLCAib25saW5lIiwgc2l6ZW9mKCJv bmxpbmUiKSAtIDEpID09IDApCi0JCXZhbHVlID0gMTsKLQllbHNlIGlmIChzdHJuY21wKGJ1Ziwg Im9mZmxpbmUiLCBzaXplb2YoIm9mZmxpbmUiKSAtIDEpID09IDApCi0JCXZhbHVlID0gMDsKLQll bHNlCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKHRzNzh4eF9mcGdhLnN0YXRlID09IHZhbHVl KQotCQlyZXR1cm4gbjsKLQotCXJldCA9ICh0czc4eHhfZnBnYS5zdGF0ZSA9PSAwKQotCQk/IHRz Nzh4eF9mcGdhX2xvYWQoKQotCQk6IHRzNzh4eF9mcGdhX3VubG9hZCgpOwotCi0JaWYgKCEocmV0 IDwgMCkpCi0JCXRzNzh4eF9mcGdhLnN0YXRlID0gdmFsdWU7Ci0KLQlyZXR1cm4gbjsKLX0KLQot c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSB0czc4eHhfZnBnYV9hdHRyID0KLQlfX0FUVFIo dHM3OHh4X2ZwZ2EsIDA2NDQsIHRzNzh4eF9mcGdhX3Nob3csIHRzNzh4eF9mcGdhX3N0b3JlKTsK LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHZW5lcmFsIFNldHVwCi0gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgdHM3OHh4X21wcF9tb2Rlc1tdIF9faW5pdGRh dGEgPSB7Ci0JTVBQMF9VTlVTRUQsCi0JTVBQMV9HUElPLAkJLyogSlRBRyBDbG9jayAqLwotCU1Q UDJfR1BJTywJCS8qIEpUQUcgRGF0YSBJbiAqLwotCU1QUDNfR1BJTywJCS8qIExhdCBFQ1AyIDI1 NiBGUEdBIC0gUEIyQiAqLwotCU1QUDRfR1BJTywJCS8qIEpUQUcgRGF0YSBPdXQgKi8KLQlNUFA1 X0dQSU8sCQkvKiBKVEFHIFRNUyAqLwotCU1QUDZfR1BJTywJCS8qIExhdCBFQ1AyIDI1NiBGUEdB IC0gUEIzMUFfQ0xLNCsgKi8KLQlNUFA3X0dQSU8sCQkvKiBMYXQgRUNQMiAyNTYgRlBHQSAtIFBC MjJCICovCi0JTVBQOF9VTlVTRUQsCi0JTVBQOV9VTlVTRUQsCi0JTVBQMTBfVU5VU0VELAotCU1Q UDExX1VOVVNFRCwKLQlNUFAxMl9VTlVTRUQsCi0JTVBQMTNfVU5VU0VELAotCU1QUDE0X1VOVVNF RCwKLQlNUFAxNV9VTlVTRUQsCi0JTVBQMTZfVUFSVCwKLQlNUFAxN19VQVJULAotCU1QUDE4X1VB UlQsCi0JTVBQMTlfVUFSVCwKLQkvKgotCSAqIE1QUFsyMF0gUENJIENsb2NrIE91dCAxCi0JICog TVBQWzIxXSBQQ0kgQ2xvY2sgT3V0IDAKLQkgKiBNUFBbMjJdIFVudXNlZAotCSAqIE1QUFsyM10g VW51c2VkCi0JICogTVBQWzI0XSBVbnVzZWQKLQkgKiBNUFBbMjVdIFVudXNlZAotCSAqLwotCTAs Ci19OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgdHM3OHh4X2luaXQodm9pZCkKLXsKLQlpbnQgcmV0 OwotCi0JLyoKLQkgKiBTZXR1cCBiYXNpYyBPcmlvbiBmdW5jdGlvbnMuIE5lZWQgdG8gYmUgY2Fs bGVkIGVhcmx5LgotCSAqLwotCW9yaW9uNXhfaW5pdCgpOwotCi0Jb3Jpb241eF9tcHBfY29uZih0 czc4eHhfbXBwX21vZGVzKTsKLQotCS8qCi0JICogQ29uZmlndXJlIHBlcmlwaGVyYWxzLgotCSAq LwotCW9yaW9uNXhfZWhjaTBfaW5pdCgpOwotCW9yaW9uNXhfZWhjaTFfaW5pdCgpOwotCW9yaW9u NXhfZXRoX2luaXQoJnRzNzh4eF9ldGhfZGF0YSk7Ci0Jb3Jpb241eF9zYXRhX2luaXQoJnRzNzh4 eF9zYXRhX2RhdGEpOwotCW9yaW9uNXhfdWFydDBfaW5pdCgpOwotCW9yaW9uNXhfdWFydDFfaW5p dCgpOwotCW9yaW9uNXhfeG9yX2luaXQoKTsKLQotCS8qIEZQR0EgaW5pdCAqLwotCXRzNzh4eF9m cGdhX2RldmljZXNfemVyb19pbml0KCk7Ci0JcmV0ID0gdHM3OHh4X2ZwZ2FfbG9hZCgpOwotCXJl dCA9IHN5c2ZzX2NyZWF0ZV9maWxlKGZpcm13YXJlX2tvYmosICZ0czc4eHhfZnBnYV9hdHRyLmF0 dHIpOwotCWlmIChyZXQpCi0JCXByX2Vycigic3lzZnNfY3JlYXRlX2ZpbGUgZmFpbGVkOiAlZFxu IiwgcmV0KTsKLX0KLQotTUFDSElORV9TVEFSVChUUzc4WFgsICJUZWNobm9sb2dpYyBTeXN0ZW1z IFRTLTc4eHggU0JDIikKLQkvKiBNYWludGFpbmVyOiBBbGV4YW5kZXIgQ2xvdXRlciA8YWxleEBk aWdyaXoub3JnLnVrPiAqLwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0gT1JJ T041WF9OUl9JUlFTLAotCS5pbml0X21hY2hpbmUJPSB0czc4eHhfaW5pdCwKLQkubWFwX2lvCQk9 IHRzNzh4eF9tYXBfaW8sCi0JLmluaXRfZWFybHkJPSBvcmlvbjV4X2luaXRfZWFybHksCi0JLmlu aXRfaXJxCT0gb3Jpb241eF9pbml0X2lycSwKLQkuaW5pdF90aW1lCT0gb3Jpb241eF90aW1lcl9p bml0LAotCS5yZXN0YXJ0CT0gb3Jpb241eF9yZXN0YXJ0LAotTUFDSElORV9FTkQKZGlmZiAtLWdp dCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90c3gwOS1jb21tb24uYyBiL2FyY2gvYXJtL21hY2gt b3Jpb241eC90c3gwOS1jb21tb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5 ZTZmZGZhOGU2Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzeDA5 LWNvbW1vbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCi0vKgotICogUU5BUCBUUy14MDkgQm9hcmRz IGNvbW1vbiBmdW5jdGlvbnMKLSAqCi0gKiBNYWludGFpbmVyczogTGVubmVydCBCdXl0ZW5oZWsg PGJ1eXRlbmhAbWFydmVsbC5jb20+Ci0gKgkJQnlyb24gQnJhZGxleSA8Ynlyb24uYmJyYWRsZXlA Z21haWwuY29tPgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxs aW51eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxp bnV4L3RpbWV4Lmg+Ci0jaW5jbHVkZSA8bGludXgvc2VyaWFsX3JlZy5oPgotI2luY2x1ZGUgIm9y aW9uNXguaCIKLSNpbmNsdWRlICJ0c3gwOS1jb21tb24uaCIKLSNpbmNsdWRlICJjb21tb24uaCIK LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBRTkFQIFRTLXgwOSBzcGVjaWZpYyBwb3dlciBv ZmYgbWV0aG9kIHZpYSBVQVJUMS1hdHRhY2hlZCBQSUMKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot Ci0jZGVmaW5lIFVBUlQxX1JFRyh4KQkoVUFSVDFfVklSVF9CQVNFICsgKChVQVJUXyMjeCkgPDwg MikpCi0KLXZvaWQgcW5hcF90c3gwOV9wb3dlcl9vZmYodm9pZCkKLXsKLQkvKiAxOTIwMCBiYXVk IGRpdmlzb3IgKi8KLQljb25zdCB1bnNpZ25lZCBkaXZpc29yID0gKChvcmlvbjV4X3RjbGsgKyAo OCAqIDE5MjAwKSkgLyAoMTYgKiAxOTIwMCkpOwotCi0JcHJfaW5mbygiJXM6IHRyaWdnZXJpbmcg cG93ZXItb2ZmLi4uXG4iLCBfX2Z1bmNfXyk7Ci0KLQkvKiBoaWphY2sgdWFydDEgYW5kIHJlc2V0 IGludG8gc2FuZSBzdGF0ZSAoMTkyMDAsOG4xKSAqLwotCXdyaXRlbCgweDgzLCBVQVJUMV9SRUco TENSKSk7Ci0Jd3JpdGVsKGRpdmlzb3IgJiAweGZmLCBVQVJUMV9SRUcoRExMKSk7Ci0Jd3JpdGVs KChkaXZpc29yID4+IDgpICYgMHhmZiwgVUFSVDFfUkVHKERMTSkpOwotCXdyaXRlbCgweDAzLCBV QVJUMV9SRUcoTENSKSk7Ci0Jd3JpdGVsKDB4MDAsIFVBUlQxX1JFRyhJRVIpKTsKLQl3cml0ZWwo MHgwMCwgVUFSVDFfUkVHKEZDUikpOwotCXdyaXRlbCgweDAwLCBVQVJUMV9SRUcoTUNSKSk7Ci0K LQkvKiBzZW5kIHRoZSBwb3dlci1vZmYgY29tbWFuZCAnQScgdG8gUElDICovCi0Jd3JpdGVsKCdB JywgVUFSVDFfUkVHKFRYKSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRXRoZXJu ZXQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1f ZGF0YSBxbmFwX3RzeDA5X2V0aF9kYXRhID0gewotCS5waHlfYWRkcgk9IE1WNjQzWFhfRVRIX1BI WV9BRERSKDgpLAotfTsKLQotc3RhdGljIGludCBfX2luaXQgcW5hcF90c3gwOV9wYXJzZV9oZXhf bmliYmxlKGNoYXIgbikKLXsKLQlpZiAobiA+PSAnMCcgJiYgbiA8PSAnOScpCi0JCXJldHVybiBu IC0gJzAnOwotCi0JaWYgKG4gPj0gJ0EnICYmIG4gPD0gJ0YnKQotCQlyZXR1cm4gbiAtICdBJyAr IDEwOwotCi0JaWYgKG4gPj0gJ2EnICYmIG4gPD0gJ2YnKQotCQlyZXR1cm4gbiAtICdhJyArIDEw OwotCi0JcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgaW50IF9faW5pdCBxbmFwX3RzeDA5X3BhcnNl X2hleF9ieXRlKGNvbnN0IGNoYXIgKmIpCi17Ci0JaW50IGhpOwotCWludCBsbzsKLQotCWhpID0g cW5hcF90c3gwOV9wYXJzZV9oZXhfbmliYmxlKGJbMF0pOwotCWxvID0gcW5hcF90c3gwOV9wYXJz ZV9oZXhfbmliYmxlKGJbMV0pOwotCi0JaWYgKGhpIDwgMCB8fCBsbyA8IDApCi0JCXJldHVybiAt MTsKLQotCXJldHVybiAoaGkgPDwgNCkgfCBsbzsKLX0KLQotc3RhdGljIGludCBfX2luaXQgcW5h cF90c3gwOV9jaGVja19tYWNfYWRkcihjb25zdCBjaGFyICphZGRyX3N0cikKLXsKLQl1X2ludDhf dCBhZGRyWzZdOwotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IDY7IGkrKykgewotCQlpbnQg Ynl0ZTsKLQotCQkvKgotCQkgKiBFbmZvcmNlICJ4eDp4eDp4eDp4eDp4eDp4eFxuIiBmb3JtYXQu Ci0JCSAqLwotCQlpZiAoYWRkcl9zdHJbKGkgKiAzKSArIDJdICE9ICgoaSA8IDUpID8gJzonIDog J1xuJykpCi0JCQlyZXR1cm4gLTE7Ci0KLQkJYnl0ZSA9IHFuYXBfdHN4MDlfcGFyc2VfaGV4X2J5 dGUoYWRkcl9zdHIgKyAoaSAqIDMpKTsKLQkJaWYgKGJ5dGUgPCAwKQotCQkJcmV0dXJuIC0xOwot CQlhZGRyW2ldID0gYnl0ZTsKLQl9Ci0KLQlwcmludGsoS0VSTl9JTkZPICJ0c3gwOTogZm91bmQg ZXRoZXJuZXQgbWFjIGFkZHJlc3MgJXBNXG4iLCBhZGRyKTsKLQotCW1lbWNweShxbmFwX3RzeDA5 X2V0aF9kYXRhLm1hY19hZGRyLCBhZGRyLCA2KTsKLQotCXJldHVybiAwOwotfQotCi0vKgotICog VGhlICdOQVMgQ29uZmlnJyBmbGFzaCBwYXJ0aXRpb24gaGFzIGFuIGV4dDIgZmlsZXN5c3RlbSB3 aGljaAotICogY29udGFpbnMgYSBmaWxlIHRoYXQgaGFzIHRoZSBldGhlcm5ldCBNQUMgYWRkcmVz cyBpbiBwbGFpbiB0ZXh0Ci0gKiAoZm9ybWF0ICJ4eDp4eDp4eDp4eDp4eDp4eFxuIikuCi0gKi8K LXZvaWQgX19pbml0IHFuYXBfdHN4MDlfZmluZF9tYWNfYWRkcih1MzIgbWVtX2Jhc2UsIHUzMiBz aXplKQotewotCXVuc2lnbmVkIGxvbmcgYWRkcjsKLQotCWZvciAoYWRkciA9IG1lbV9iYXNlOyBh ZGRyIDwgKG1lbV9iYXNlICsgc2l6ZSk7IGFkZHIgKz0gMTAyNCkgewotCQljaGFyICpub3JfcGFn ZTsKLQkJaW50IHJldCA9IDA7Ci0KLQkJbm9yX3BhZ2UgPSBpb3JlbWFwKGFkZHIsIDEwMjQpOwot CQlpZiAobm9yX3BhZ2UgIT0gTlVMTCkgewotCQkJcmV0ID0gcW5hcF90c3gwOV9jaGVja19tYWNf YWRkcihub3JfcGFnZSk7Ci0JCQlpb3VubWFwKG5vcl9wYWdlKTsKLQkJfQotCi0JCWlmIChyZXQg PT0gMCkKLQkJCWJyZWFrOwotCX0KLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241 eC90c3gwOS1jb21tb24uaCBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC90c3gwOS1jb21tb24uaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJiZWRjNmI4MmZiLi4wMDAwMDAwMDAwMDAK LS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzeDA5LWNvbW1vbi5oCisrKyAvZGV2L251bGwK QEAgLTEsMjEgKzAsMCBAQAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8K LSNpZm5kZWYgX19BUkNIX09SSU9ONVhfVFNYMDlfQ09NTU9OX0gKLSNkZWZpbmUgX19BUkNIX09S SU9ONVhfVFNYMDlfQ09NTU9OX0gKLQotLyoKLSAqIFFOQVAgVFMteDA5IEJvYXJkcyBwb3dlci1v ZmYgZnVuY3Rpb24KLSAqLwotZXh0ZXJuIHZvaWQgcW5hcF90c3gwOV9wb3dlcl9vZmYodm9pZCk7 Ci0KLS8qCi0gKiBRTkFQIFRTLXgwOSBCb2FyZHMgZnVuY3Rpb24gdG8gZmluZCBFdGhlcm5ldCBN QUMgYWRkcmVzcyBpbiBmbGFzaCBtZW1vcnkKLSAqLwotZXh0ZXJuIHZvaWQgX19pbml0IHFuYXBf dHN4MDlfZmluZF9tYWNfYWRkcih1MzIgbWVtX2Jhc2UsIHUzMiBzaXplKTsKLQotLyoKLSAqIFFO QVAgVFMteDA5IEJvYXJkcyBldGhlcm5ldCBkZWNsYXJhdGlvbgotICovCi1leHRlcm4gc3RydWN0 IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgcW5hcF90c3gwOV9ldGhfZGF0YTsKLQotCi0jZW5k aWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL0tjb25maWcgYi9hcmNoL2FybS9tbS9LY29uZmln CmluZGV4IDY1NzQ2NTlkZmI2MS4uYzQwY2RiMjI3NGVhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9t bS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL21tL0tjb25maWcKQEAgLTk4MCw3ICs5ODAsNyBAQCBj b25maWcgQ0FDSEVfQjE1X1JBQwogCiBjb25maWcgQ0FDSEVfRkVST0NFT05fTDIKIAlib29sICJF bmFibGUgdGhlIEZlcm9jZW9uIEwyIGNhY2hlIGNvbnRyb2xsZXIiCi0JZGVwZW5kcyBvbiBBUkNI X01WNzhYWDAgfHwgQVJDSF9NVkVCVQorCWRlcGVuZHMgb24gQVJDSF9NVkVCVQogCWRlZmF1bHQg eQogCXNlbGVjdCBPVVRFUl9DQUNIRQogCWhlbHAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQt b3Jpb24vTWFrZWZpbGUgYi9hcmNoL2FybS9wbGF0LW9yaW9uL01ha2VmaWxlCmluZGV4IGU4Yzc1 ODBkZjhjYS4uYTg4YjlkMGJmZDJhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9yaW9uL01h a2VmaWxlCisrKyBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vTWFrZWZpbGUKQEAgLTQsNiArNCw0IEBA CiAjCiBjY2ZsYWdzLXkgOj0gLUkkKHNyYykvaW5jbHVkZQogCi1vcmlvbi1ncGlvLSQoQ09ORklH X0dQSU9MSUIpICAgICAgKz0gZ3Bpby5vCi1vYmotJChDT05GSUdfUExBVF9PUklPTl9MRUdBQ1kp ICAgKz0gaXJxLm8gcGNpZS5vIHRpbWUubyBjb21tb24ubyBtcHAubwotb2JqLSQoQ09ORklHX1BM QVRfT1JJT05fTEVHQUNZKSAgICs9ICQob3Jpb24tZ3Bpby15KQorb2JqLSQoQ09ORklHX1BMQVRf T1JJT05fTEVHQUNZKSAgICs9IHBjaWUubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vcmlv bi9jb21tb24uYyBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vY29tbW9uLmMKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGNhYmU5ODM4NjI0NS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJt L3BsYXQtb3Jpb24vY29tbW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MjYgKzAsMCBAQAotLyoK LSAqIGFyY2gvYXJtL3BsYXQtb3Jpb24vY29tbW9uLmMKLSAqCi0gKiBNYXJ2ZWxsIE9yaW9uIFNv QyBjb21tb24gc2V0dXAgY29kZSB1c2VkIGJ5IG11bHRpcGxlIG1hY2gtL2NvbW1vbi5jCi0gKgot ICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNpb24gMi4gIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNl ZCAiYXMgaXMiIHdpdGhvdXQgYW55Ci0gKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBl eHByZXNzIG9yIGltcGxpZWQuCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K LSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgotI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF84 MjUwLmg+Ci0jaW5jbHVkZSA8bGludXgvYXRhX3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8bGludXgv Y2xrLmg+Ci0jaW5jbHVkZSA8bGludXgvY2xrZGV2Lmg+Ci0jaW5jbHVkZSA8bGludXgvbXY2NDN4 eF9ldGguaD4KLSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4 L3BsYXRmb3JtX2RhdGEvZG1hLW12X3hvci5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rh dGEvdXNiLWVoY2ktb3Jpb24uaD4KLSNpbmNsdWRlIDxwbGF0L2NvbW1vbi5oPgotI2luY2x1ZGUg PGxpbnV4L3BoeS5oPgotCi0vKiBDcmVhdGUgYSBjbGtkZXYgZW50cnkgZm9yIGEgZ2l2ZW4gZGV2 aWNlL2NsayAqLwotdm9pZCBfX2luaXQgb3Jpb25fY2xrZGV2X2FkZChjb25zdCBjaGFyICpjb25f aWQsIGNvbnN0IGNoYXIgKmRldl9pZCwKLQkJCSAgICAgc3RydWN0IGNsayAqY2xrKQotewotCWNs a2Rldl9jcmVhdGUoY2xrLCBjb25faWQsICIlcyIsIGRldl9pZCk7Ci19Ci0KLS8qIENyZWF0ZSBj bGtkZXYgZW50cmllcyBmb3IgYWxsIG9yaW9uIHBsYXRmb3JtcyBleGNlcHQga2lya3dvb2QuCi0g ICBLaXJrd29vZCBoYXMgZ2F0ZWQgY2xvY2tzIGZvciBzb21lIG9mIGl0cyBwZXJpcGhlcmFscywg c28gY3JlYXRlcwotICAgaXRzIG93biBjbGtkZXYgZW50cmllcy4gRm9yIGFsbCB0aGUgb3RoZXIg b3Jpb24gZGV2aWNlcywgY3JlYXRlCi0gICBjbGtkZXYgZW50cmllcyB0byB0aGUgdGNsay4gKi8K LXZvaWQgX19pbml0IG9yaW9uX2Nsa2Rldl9pbml0KHN0cnVjdCBjbGsgKnRjbGspCi17Ci0Jb3Jp b25fY2xrZGV2X2FkZChOVUxMLCAib3Jpb25fc3BpLjAiLCB0Y2xrKTsKLQlvcmlvbl9jbGtkZXZf YWRkKE5VTEwsICJvcmlvbl9zcGkuMSIsIHRjbGspOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwg TVY2NDNYWF9FVEhfTkFNRSAiLjAiLCB0Y2xrKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsIE1W NjQzWFhfRVRIX05BTUUgIi4xIiwgdGNsayk7Ci0Jb3Jpb25fY2xrZGV2X2FkZChOVUxMLCBNVjY0 M1hYX0VUSF9OQU1FICIuMiIsIHRjbGspOwotCW9yaW9uX2Nsa2Rldl9hZGQoTlVMTCwgTVY2NDNY WF9FVEhfTkFNRSAiLjMiLCB0Y2xrKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsICJvcmlvbl93 ZHQiLCB0Y2xrKTsKLQlvcmlvbl9jbGtkZXZfYWRkKE5VTEwsIE1WNjRYWFhfSTJDX0NUTFJfTkFN RSAiLjAiLCB0Y2xrKTsKLX0KLQotLyogRmlsbCBpbiB0aGUgcmVzb3VyY2VzIHN0cnVjdHVyZSBh bmQgbGluayBpdCBpbnRvIHRoZSBwbGF0Zm9ybQotICAgZGV2aWNlIHN0cnVjdHVyZS4gVGhlcmUg aXMgYWx3YXlzIGEgbWVtb3J5IHJlZ2lvbiwgYW5kIG5lYXJseQotICAgYWx3YXlzIGFuIGludGVy cnVwdC4qLwotc3RhdGljIHZvaWQgZmlsbF9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqZGV2aWNlLAotCQkJICAgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZXMsCi0JCQkgICByZXNv dXJjZV9zaXplX3QgbWFwYmFzZSwKLQkJCSAgIHJlc291cmNlX3NpemVfdCBzaXplKQotewotCWRl dmljZS0+cmVzb3VyY2UgPSByZXNvdXJjZXM7Ci0JZGV2aWNlLT5udW1fcmVzb3VyY2VzID0gMTsK LQlyZXNvdXJjZXNbMF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsKLQlyZXNvdXJjZXNbMF0uc3Rh cnQgPSBtYXBiYXNlOwotCXJlc291cmNlc1swXS5lbmQgPSBtYXBiYXNlICsgc2l6ZTsKLX0KLQot c3RhdGljIHZvaWQgZmlsbF9yZXNvdXJjZXNfaXJxKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRl dmljZSwKLQkJCSAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlcywKLQkJCSAgICAgICBy ZXNvdXJjZV9zaXplX3QgbWFwYmFzZSwKLQkJCSAgICAgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwK LQkJCSAgICAgICB1bnNpZ25lZCBpbnQgaXJxKQotewotCWZpbGxfcmVzb3VyY2VzKGRldmljZSwg cmVzb3VyY2VzLCBtYXBiYXNlLCBzaXplKTsKLQotCWRldmljZS0+bnVtX3Jlc291cmNlcysrOwot CXJlc291cmNlc1sxXS5mbGFncyA9IElPUkVTT1VSQ0VfSVJROwotCXJlc291cmNlc1sxXS5zdGFy dCA9IGlycTsKLQlyZXNvdXJjZXNbMV0uZW5kID0gaXJxOwotfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIFVBUlQKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHVuc2lnbmVkIGxv bmcgX19pbml0IHVhcnRfZ2V0X2Nsa19yYXRlKHN0cnVjdCBjbGsgKmNsaykKLXsKLQljbGtfcHJl cGFyZV9lbmFibGUoY2xrKTsKLQlyZXR1cm4gY2xrX2dldF9yYXRlKGNsayk7Ci19Ci0KLXN0YXRp YyB2b2lkIF9faW5pdCB1YXJ0X2NvbXBsZXRlKAotCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9y aW9uX3VhcnQsCi0Jc3RydWN0IHBsYXRfc2VyaWFsODI1MF9wb3J0ICpkYXRhLAotCXN0cnVjdCBy ZXNvdXJjZSAqcmVzb3VyY2VzLAotCXZvaWQgX19pb21lbSAqbWVtYmFzZSwKLQlyZXNvdXJjZV9z aXplX3QgbWFwYmFzZSwKLQl1bnNpZ25lZCBpbnQgaXJxLAotCXN0cnVjdCBjbGsgKmNsaykKLXsK LQlkYXRhLT5tYXBiYXNlID0gbWFwYmFzZTsKLQlkYXRhLT5tZW1iYXNlID0gbWVtYmFzZTsKLQlk YXRhLT5pcnEgPSBpcnE7Ci0JZGF0YS0+dWFydGNsayA9IHVhcnRfZ2V0X2Nsa19yYXRlKGNsayk7 Ci0Jb3Jpb25fdWFydC0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBkYXRhOwotCi0JZmlsbF9yZXNvdXJj ZXNfaXJxKG9yaW9uX3VhcnQsIHJlc291cmNlcywgbWFwYmFzZSwgMHhmZiwgaXJxKTsKLQlwbGF0 Zm9ybV9kZXZpY2VfcmVnaXN0ZXIob3Jpb25fdWFydCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgotICogVUFSVDAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBwbGF0 X3NlcmlhbDgyNTBfcG9ydCBvcmlvbl91YXJ0MF9kYXRhW10gPSB7Ci0JewotCQkuZmxhZ3MJCT0g VVBGX1NLSVBfVEVTVCB8IFVQRl9CT09UX0FVVE9DT05GLAotCQkuaW90eXBlCQk9IFVQSU9fTUVN LAotCQkucmVnc2hpZnQJPSAyLAotCX0sIHsKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNv dXJjZSBvcmlvbl91YXJ0MF9yZXNvdXJjZXNbMl07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlIG9yaW9uX3VhcnQwID0gewotCS5uYW1lCQkJPSAic2VyaWFsODI1MCIsCi0JLmlkCQkJ PSBQTEFUODI1MF9ERVZfUExBVEZPUk0sCi19OwotCi12b2lkIF9faW5pdCBvcmlvbl91YXJ0MF9p bml0KHZvaWQgX19pb21lbSAqbWVtYmFzZSwKLQkJCSAgICAgcmVzb3VyY2Vfc2l6ZV90IG1hcGJh c2UsCi0JCQkgICAgIHVuc2lnbmVkIGludCBpcnEsCi0JCQkgICAgIHN0cnVjdCBjbGsgKmNsaykK LXsKLQl1YXJ0X2NvbXBsZXRlKCZvcmlvbl91YXJ0MCwgb3Jpb25fdWFydDBfZGF0YSwgb3Jpb25f dWFydDBfcmVzb3VyY2VzLAotCQkgICAgICBtZW1iYXNlLCBtYXBiYXNlLCBpcnEsIGNsayk7Ci19 Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgotICogVUFSVDEKLSAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lwotc3RhdGljIHN0cnVjdCBwbGF0X3NlcmlhbDgyNTBfcG9ydCBvcmlvbl91YXJ0MV9kYXRhW10g PSB7Ci0JewotCQkuZmxhZ3MJCT0gVVBGX1NLSVBfVEVTVCB8IFVQRl9CT09UX0FVVE9DT05GLAot CQkuaW90eXBlCQk9IFVQSU9fTUVNLAotCQkucmVnc2hpZnQJPSAyLAotCX0sIHsKLQl9LAotfTsK LQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl91YXJ0MV9yZXNvdXJjZXNbMl07Ci0KLXN0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX3VhcnQxID0gewotCS5uYW1lCQkJPSAi c2VyaWFsODI1MCIsCi0JLmlkCQkJPSBQTEFUODI1MF9ERVZfUExBVEZPUk0xLAotfTsKLQotdm9p ZCBfX2luaXQgb3Jpb25fdWFydDFfaW5pdCh2b2lkIF9faW9tZW0gKm1lbWJhc2UsCi0JCQkgICAg IHJlc291cmNlX3NpemVfdCBtYXBiYXNlLAotCQkJICAgICB1bnNpZ25lZCBpbnQgaXJxLAotCQkJ ICAgICBzdHJ1Y3QgY2xrICpjbGspCi17Ci0JdWFydF9jb21wbGV0ZSgmb3Jpb25fdWFydDEsIG9y aW9uX3VhcnQxX2RhdGEsIG9yaW9uX3VhcnQxX3Jlc291cmNlcywKLQkJICAgICAgbWVtYmFzZSwg bWFwYmFzZSwgaXJxLCBjbGspOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFVBUlQy Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcGxhdF9zZXJpYWw4MjUwX3Bv cnQgb3Jpb25fdWFydDJfZGF0YVtdID0gewotCXsKLQkJLmZsYWdzCQk9IFVQRl9TS0lQX1RFU1Qg fCBVUEZfQk9PVF9BVVRPQ09ORiwKLQkJLmlvdHlwZQkJPSBVUElPX01FTSwKLQkJLnJlZ3NoaWZ0 CT0gMiwKLQl9LCB7Ci0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fdWFy dDJfcmVzb3VyY2VzWzJdOwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl91 YXJ0MiA9IHsKLQkubmFtZQkJCT0gInNlcmlhbDgyNTAiLAotCS5pZAkJCT0gUExBVDgyNTBfREVW X1BMQVRGT1JNMiwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX3VhcnQyX2luaXQodm9pZCBfX2lv bWVtICptZW1iYXNlLAotCQkJICAgICByZXNvdXJjZV9zaXplX3QgbWFwYmFzZSwKLQkJCSAgICAg dW5zaWduZWQgaW50IGlycSwKLQkJCSAgICAgc3RydWN0IGNsayAqY2xrKQotewotCXVhcnRfY29t cGxldGUoJm9yaW9uX3VhcnQyLCBvcmlvbl91YXJ0Ml9kYXRhLCBvcmlvbl91YXJ0Ml9yZXNvdXJj ZXMsCi0JCSAgICAgIG1lbWJhc2UsIG1hcGJhc2UsIGlycSwgY2xrKTsKLX0KLQotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0gKiBVQVJUMwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgc3Ry dWN0IHBsYXRfc2VyaWFsODI1MF9wb3J0IG9yaW9uX3VhcnQzX2RhdGFbXSA9IHsKLQl7Ci0JCS5m bGFncwkJPSBVUEZfU0tJUF9URVNUIHwgVVBGX0JPT1RfQVVUT0NPTkYsCi0JCS5pb3R5cGUJCT0g VVBJT19NRU0sCi0JCS5yZWdzaGlmdAk9IDIsCi0JfSwgewotCX0sCi19OwotCi1zdGF0aWMgc3Ry dWN0IHJlc291cmNlIG9yaW9uX3VhcnQzX3Jlc291cmNlc1syXTsKLQotc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2Ugb3Jpb25fdWFydDMgPSB7Ci0JLm5hbWUJCQk9ICJzZXJpYWw4MjUwIiwK LQkuaWQJCQk9IDMsCi19OwotCi12b2lkIF9faW5pdCBvcmlvbl91YXJ0M19pbml0KHZvaWQgX19p b21lbSAqbWVtYmFzZSwKLQkJCSAgICAgcmVzb3VyY2Vfc2l6ZV90IG1hcGJhc2UsCi0JCQkgICAg IHVuc2lnbmVkIGludCBpcnEsCi0JCQkgICAgIHN0cnVjdCBjbGsgKmNsaykKLXsKLQl1YXJ0X2Nv bXBsZXRlKCZvcmlvbl91YXJ0Mywgb3Jpb25fdWFydDNfZGF0YSwgb3Jpb25fdWFydDNfcmVzb3Vy Y2VzLAotCQkgICAgICBtZW1iYXNlLCBtYXBiYXNlLCBpcnEsIGNsayk7Ci19Ci0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogU29DIFJUQwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMg c3RydWN0IHJlc291cmNlIG9yaW9uX3J0Y19yZXNvdXJjZVsyXTsKLQotdm9pZCBfX2luaXQgb3Jp b25fcnRjX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgdW5zaWduZWQgbG9uZyBp cnEpCi17Ci0Jb3Jpb25fcnRjX3Jlc291cmNlWzBdLnN0YXJ0ID0gbWFwYmFzZTsKLQlvcmlvbl9y dGNfcmVzb3VyY2VbMF0uZW5kID0gbWFwYmFzZSArIFNaXzMyIC0gMTsKLQlvcmlvbl9ydGNfcmVz b3VyY2VbMF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsKLQlvcmlvbl9ydGNfcmVzb3VyY2VbMV0u c3RhcnQgPSBpcnE7Ci0Jb3Jpb25fcnRjX3Jlc291cmNlWzFdLmVuZCA9IGlycTsKLQlvcmlvbl9y dGNfcmVzb3VyY2VbMV0uZmxhZ3MgPSBJT1JFU09VUkNFX0lSUTsKLQotCXBsYXRmb3JtX2Rldmlj ZV9yZWdpc3Rlcl9zaW1wbGUoInJ0Yy1tdiIsIC0xLCBvcmlvbl9ydGNfcmVzb3VyY2UsIDIpOwot fQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdFCi0gKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LXN0YXRpYyBfX2luaXQgdm9pZCBnZV9jb21wbGV0ZSgKLQlzdHJ1Y3QgbXY2NDN4eF9ldGhfc2hh cmVkX3BsYXRmb3JtX2RhdGEgKm9yaW9uX2dlX3NoYXJlZF9kYXRhLAotCXN0cnVjdCByZXNvdXJj ZSAqb3Jpb25fZ2VfcmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgaXJxLAotCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKm9yaW9uX2dlX3NoYXJlZCwKLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcmlv bl9nZV9tdm1kaW8sCi0Jc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRh LAotCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9yaW9uX2dlKQotewotCW9yaW9uX2dlX3Jlc291 cmNlLT5zdGFydCA9IGlycTsKLQlvcmlvbl9nZV9yZXNvdXJjZS0+ZW5kID0gaXJxOwotCWV0aF9k YXRhLT5zaGFyZWQgPSBvcmlvbl9nZV9zaGFyZWQ7Ci0Jb3Jpb25fZ2UtPmRldi5wbGF0Zm9ybV9k YXRhID0gZXRoX2RhdGE7Ci0KLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIob3Jpb25fZ2Vfc2hh cmVkKTsKLQlpZiAob3Jpb25fZ2VfbXZtZGlvKQotCQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIo b3Jpb25fZ2VfbXZtZGlvKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIob3Jpb25fZ2UpOwot fQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEdFMDAKLSAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lwotc3RhdGljIHN0cnVjdCBtdjY0M3h4X2V0aF9zaGFyZWRfcGxhdGZvcm1fZGF0YSBvcmlvbl9n ZTAwX3NoYXJlZF9kYXRhOwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2dlMDBfc2hh cmVkX3Jlc291cmNlc1tdID0gewotCXsKLQkJLm5hbWUJPSAiZ2UwMCBiYXNlIiwKLQl9LAotfTsK LQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fZ2UwMF9zaGFyZWQgPSB7Ci0J Lm5hbWUJCT0gTVY2NDNYWF9FVEhfU0hBUkVEX05BTUUsCi0JLmlkCQk9IDAsCi0JLmRldgkJPSB7 Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJm9yaW9uX2dlMDBfc2hhcmVkX2RhdGEsCi0JfSwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fZ2VfbXZtZGlvX3Jlc291cmNlc1tdID0gewot CXsKLQkJLm5hbWUJPSAiZ2UwMCBtdm1kaW8gYmFzZSIsCi0JfSwgewotCQkubmFtZQk9ICJnZTAw IG12bWRpbyBlcnIgaXJxIiwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2Ugb3Jpb25fZ2VfbXZtZGlvID0gewotCS5uYW1lCQk9ICJvcmlvbi1tZGlvIiwKLQkuaWQJCT0g LTEsCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2dlMDBfcmVzb3VyY2VzW10g PSB7Ci0JewotCQkubmFtZQk9ICJnZTAwIGlycSIsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJR LAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9nZTAwID0g ewotCS5uYW1lCQk9IE1WNjQzWFhfRVRIX05BTUUsCi0JLmlkCQk9IDAsCi0JLm51bV9yZXNvdXJj ZXMJPSAxLAotCS5yZXNvdXJjZQk9IG9yaW9uX2dlMDBfcmVzb3VyY2VzLAotCS5kZXYJCT0gewot CQkuY29oZXJlbnRfZG1hX21hc2sJPSBETUFfQklUX01BU0soMzIpLAotCX0sCi19OwotCi12b2lk IF9faW5pdCBvcmlvbl9nZTAwX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEg KmV0aF9kYXRhLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICB1bnNpZ25l ZCBsb25nIGlycSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycV9lcnIsCi0JCQkgICAgdW5zaWdu ZWQgaW50IHR4X2NzdW1fbGltaXQpCi17Ci0JZmlsbF9yZXNvdXJjZXMoJm9yaW9uX2dlMDBfc2hh cmVkLCBvcmlvbl9nZTAwX3NoYXJlZF9yZXNvdXJjZXMsCi0JCSAgICAgICBtYXBiYXNlICsgMHgy MDAwLCBTWl8xNksgLSAxKTsKLQlmaWxsX3Jlc291cmNlc19pcnEoJm9yaW9uX2dlX212bWRpbywg b3Jpb25fZ2VfbXZtZGlvX3Jlc291cmNlcywKLQkJCW1hcGJhc2UgKyAweDIwMDQsIDB4ODQgLSAx LCBpcnFfZXJyKTsKLQlvcmlvbl9nZTAwX3NoYXJlZF9kYXRhLnR4X2NzdW1fbGltaXQgPSB0eF9j c3VtX2xpbWl0OwotCWdlX2NvbXBsZXRlKCZvcmlvbl9nZTAwX3NoYXJlZF9kYXRhLAotCQkgICAg b3Jpb25fZ2UwMF9yZXNvdXJjZXMsIGlycSwgJm9yaW9uX2dlMDBfc2hhcmVkLAotCQkgICAgJm9y aW9uX2dlX212bWRpbywKLQkJICAgIGV0aF9kYXRhLCAmb3Jpb25fZ2UwMCk7Ci19Ci0KLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgotICogR0UwMQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMg c3RydWN0IG12NjQzeHhfZXRoX3NoYXJlZF9wbGF0Zm9ybV9kYXRhIG9yaW9uX2dlMDFfc2hhcmVk X2RhdGE7Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fZ2UwMV9zaGFyZWRfcmVzb3Vy Y2VzW10gPSB7Ci0JewotCQkubmFtZQk9ICJnZTAxIGJhc2UiLAotCX0KLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX2dlMDFfc2hhcmVkID0gewotCS5uYW1lCQk9IE1W NjQzWFhfRVRIX1NIQVJFRF9OQU1FLAotCS5pZAkJPSAxLAotCS5kZXYJCT0gewotCQkucGxhdGZv cm1fZGF0YQk9ICZvcmlvbl9nZTAxX3NoYXJlZF9kYXRhLAotCX0sCi19OwotCi1zdGF0aWMgc3Ry dWN0IHJlc291cmNlIG9yaW9uX2dlMDFfcmVzb3VyY2VzW10gPSB7Ci0JewotCQkubmFtZQk9ICJn ZTAxIGlycSIsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAotCX0sCi19OwotCi1zdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9nZTAxID0gewotCS5uYW1lCQk9IE1WNjQzWFhf RVRIX05BTUUsCi0JLmlkCQk9IDEsCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotCS5yZXNvdXJjZQk9 IG9yaW9uX2dlMDFfcmVzb3VyY2VzLAotCS5kZXYJCT0gewotCQkuY29oZXJlbnRfZG1hX21hc2sJ PSBETUFfQklUX01BU0soMzIpLAotCX0sCi19OwotCi12b2lkIF9faW5pdCBvcmlvbl9nZTAxX2lu aXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRhLAotCQkJICAgIHVu c2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycSwKLQkJCSAgICB1 bnNpZ25lZCBpbnQgdHhfY3N1bV9saW1pdCkKLXsKLQlmaWxsX3Jlc291cmNlcygmb3Jpb25fZ2Uw MV9zaGFyZWQsIG9yaW9uX2dlMDFfc2hhcmVkX3Jlc291cmNlcywKLQkJICAgICAgIG1hcGJhc2Ug KyAweDIwMDAsIFNaXzE2SyAtIDEpOwotCW9yaW9uX2dlMDFfc2hhcmVkX2RhdGEudHhfY3N1bV9s aW1pdCA9IHR4X2NzdW1fbGltaXQ7Ci0JZ2VfY29tcGxldGUoJm9yaW9uX2dlMDFfc2hhcmVkX2Rh dGEsCi0JCSAgICBvcmlvbl9nZTAxX3Jlc291cmNlcywgaXJxLCAmb3Jpb25fZ2UwMV9zaGFyZWQs Ci0JCSAgICBOVUxMLAotCQkgICAgZXRoX2RhdGEsICZvcmlvbl9nZTAxKTsKLX0KLQotLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0gKiBHRTEwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBz dHJ1Y3QgbXY2NDN4eF9ldGhfc2hhcmVkX3BsYXRmb3JtX2RhdGEgb3Jpb25fZ2UxMF9zaGFyZWRf ZGF0YTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl9nZTEwX3NoYXJlZF9yZXNvdXJj ZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdlMTAgYmFzZSIsCi0JfQotfTsKLQotc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fZ2UxMF9zaGFyZWQgPSB7Ci0JLm5hbWUJCT0gTVY2 NDNYWF9FVEhfU0hBUkVEX05BTUUsCi0JLmlkCQk9IDIsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9y bV9kYXRhCT0gJm9yaW9uX2dlMTBfc2hhcmVkX2RhdGEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgcmVzb3VyY2Ugb3Jpb25fZ2UxMF9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdl MTAgaXJxIiwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX2dlMTAgPSB7Ci0JLm5hbWUJCT0gTVY2NDNYWF9F VEhfTkFNRSwKLQkuaWQJCT0gMiwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJlc291cmNlCT0g b3Jpb25fZ2UxMF9yZXNvdXJjZXMsCi0JLmRldgkJPSB7Ci0JCS5jb2hlcmVudF9kbWFfbWFzawk9 IERNQV9CSVRfTUFTSygzMiksCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX2dlMTBfaW5p dChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEsCi0JCQkgICAgdW5z aWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxKQotewotCWZpbGxf cmVzb3VyY2VzKCZvcmlvbl9nZTEwX3NoYXJlZCwgb3Jpb25fZ2UxMF9zaGFyZWRfcmVzb3VyY2Vz LAotCQkgICAgICAgbWFwYmFzZSArIDB4MjAwMCwgU1pfMTZLIC0gMSk7Ci0JZ2VfY29tcGxldGUo Jm9yaW9uX2dlMTBfc2hhcmVkX2RhdGEsCi0JCSAgICBvcmlvbl9nZTEwX3Jlc291cmNlcywgaXJx LCAmb3Jpb25fZ2UxMF9zaGFyZWQsCi0JCSAgICBOVUxMLAotCQkgICAgZXRoX2RhdGEsICZvcmlv bl9nZTEwKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBHRTExCi0gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbXY2NDN4eF9ldGhfc2hhcmVkX3BsYXRmb3JtX2Rh dGEgb3Jpb25fZ2UxMV9zaGFyZWRfZGF0YTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlv bl9nZTExX3NoYXJlZF9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gImdlMTEgYmFzZSIs Ci0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX2dlMTFfc2hh cmVkID0gewotCS5uYW1lCQk9IE1WNjQzWFhfRVRIX1NIQVJFRF9OQU1FLAotCS5pZAkJPSAzLAot CS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZvcmlvbl9nZTExX3NoYXJlZF9kYXRhLAot CX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2dlMTFfcmVzb3VyY2VzW10g PSB7Ci0JewotCQkubmFtZQk9ICJnZTExIGlycSIsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJR LAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvcmlvbl9nZTExID0g ewotCS5uYW1lCQk9IE1WNjQzWFhfRVRIX05BTUUsCi0JLmlkCQk9IDMsCi0JLm51bV9yZXNvdXJj ZXMJPSAxLAotCS5yZXNvdXJjZQk9IG9yaW9uX2dlMTFfcmVzb3VyY2VzLAotCS5kZXYJCT0gewot CQkuY29oZXJlbnRfZG1hX21hc2sJPSBETUFfQklUX01BU0soMzIpLAotCX0sCi19OwotCi12b2lk IF9faW5pdCBvcmlvbl9nZTExX2luaXQoc3RydWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEg KmV0aF9kYXRhLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICB1bnNpZ25l ZCBsb25nIGlycSkKLXsKLQlmaWxsX3Jlc291cmNlcygmb3Jpb25fZ2UxMV9zaGFyZWQsIG9yaW9u X2dlMTFfc2hhcmVkX3Jlc291cmNlcywKLQkJICAgICAgIG1hcGJhc2UgKyAweDIwMDAsIFNaXzE2 SyAtIDEpOwotCWdlX2NvbXBsZXRlKCZvcmlvbl9nZTExX3NoYXJlZF9kYXRhLAotCQkgICAgb3Jp b25fZ2UxMV9yZXNvdXJjZXMsIGlycSwgJm9yaW9uX2dlMTFfc2hhcmVkLAotCQkgICAgTlVMTCwK LQkJICAgIGV0aF9kYXRhLCAmb3Jpb25fZ2UxMSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICogSTJDCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgbXY2NHh4eF9p MmNfcGRhdGEgb3Jpb25faTJjX3BkYXRhID0gewotCS5mcmVxX24JCT0gMywKLQkudGltZW91dAk9 IDEwMDAsIC8qIERlZmF1bHQgdGltZW91dCBvZiAxIHNlY29uZCAqLwotfTsKLQotc3RhdGljIHN0 cnVjdCByZXNvdXJjZSBvcmlvbl9pMmNfcmVzb3VyY2VzWzJdOwotCi1zdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RldmljZSBvcmlvbl9pMmMgPSB7Ci0JLm5hbWUJCT0gTVY2NFhYWF9JMkNfQ1RMUl9O QU1FLAotCS5pZAkJPSAwLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZvcmlvbl9p MmNfcGRhdGEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbXY2NHh4eF9pMmNfcGRhdGEgb3Jp b25faTJjXzFfcGRhdGEgPSB7Ci0JLmZyZXFfbgkJPSAzLAotCS50aW1lb3V0CT0gMTAwMCwgLyog RGVmYXVsdCB0aW1lb3V0IG9mIDEgc2Vjb25kICovCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291 cmNlIG9yaW9uX2kyY18xX3Jlc291cmNlc1syXTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2Ugb3Jpb25faTJjXzEgPSB7Ci0JLm5hbWUJCT0gTVY2NFhYWF9JMkNfQ1RMUl9OQU1FLAot CS5pZAkJPSAxLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZvcmlvbl9pMmNfMV9w ZGF0YSwKLQl9LAotfTsKLQotdm9pZCBfX2luaXQgb3Jpb25faTJjX2luaXQodW5zaWduZWQgbG9u ZyBtYXBiYXNlLAotCQkJICAgdW5zaWduZWQgbG9uZyBpcnEsCi0JCQkgICB1bnNpZ25lZCBsb25n IGZyZXFfbSkKLXsKLQlvcmlvbl9pMmNfcGRhdGEuZnJlcV9tID0gZnJlcV9tOwotCWZpbGxfcmVz b3VyY2VzX2lycSgmb3Jpb25faTJjLCBvcmlvbl9pMmNfcmVzb3VyY2VzLCBtYXBiYXNlLAotCQkg ICAgICAgU1pfMzIgLSAxLCBpcnEpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmb3Jpb25f aTJjKTsKLX0KLQotdm9pZCBfX2luaXQgb3Jpb25faTJjXzFfaW5pdCh1bnNpZ25lZCBsb25nIG1h cGJhc2UsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgaXJxLAotCQkJICAgICB1bnNpZ25lZCBsb25n IGZyZXFfbSkKLXsKLQlvcmlvbl9pMmNfMV9wZGF0YS5mcmVxX20gPSBmcmVxX207Ci0JZmlsbF9y ZXNvdXJjZXNfaXJxKCZvcmlvbl9pMmNfMSwgb3Jpb25faTJjXzFfcmVzb3VyY2VzLCBtYXBiYXNl LAotCQkgICAgICAgU1pfMzIgLSAxLCBpcnEpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigm b3Jpb25faTJjXzEpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNQSQotICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX3NwaV9yZXNvdXJj ZXM7Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX3NwaSA9IHsKLQkubmFt ZQkJPSAib3Jpb25fc3BpIiwKLQkuaWQJCT0gMCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3Vy Y2Ugb3Jpb25fc3BpXzFfcmVzb3VyY2VzOwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSBvcmlvbl9zcGlfMSA9IHsKLQkubmFtZQkJPSAib3Jpb25fc3BpIiwKLQkuaWQJCT0gMSwKLX07 Ci0KLS8qIE5vdGU6IFRoZSBTUEkgc2lsaWNvbiBjb3JlIGRvZXMgaGF2ZSBpbnRlcnJ1cHRzLiBI b3dldmVyIHRoZQotICogY3VycmVudCBMaW51eCBzb2Z0d2FyZSBkcml2ZXIgZG9lcyBub3QgdXNl IGludGVycnVwdHMuICovCi0KLXZvaWQgX19pbml0IG9yaW9uX3NwaV9pbml0KHVuc2lnbmVkIGxv bmcgbWFwYmFzZSkKLXsKLQlmaWxsX3Jlc291cmNlcygmb3Jpb25fc3BpLCAmb3Jpb25fc3BpX3Jl c291cmNlcywKLQkJICAgICAgIG1hcGJhc2UsIFNaXzUxMiAtIDEpOwotCXBsYXRmb3JtX2Rldmlj ZV9yZWdpc3Rlcigmb3Jpb25fc3BpKTsKLX0KLQotdm9pZCBfX2luaXQgb3Jpb25fc3BpXzFfaW5p dCh1bnNpZ25lZCBsb25nIG1hcGJhc2UpCi17Ci0JZmlsbF9yZXNvdXJjZXMoJm9yaW9uX3NwaV8x LCAmb3Jpb25fc3BpXzFfcmVzb3VyY2VzLAotCQkgICAgICAgbWFwYmFzZSwgU1pfNTEyIC0gMSk7 Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl9zcGlfMSk7Ci19Ci0KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogWE9SCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB1NjQg b3Jpb25feG9yX2RtYW1hc2sgPSBETUFfQklUX01BU0soMzIpOwotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIFhPUjAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCByZXNv dXJjZSBvcmlvbl94b3IwX3NoYXJlZF9yZXNvdXJjZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gInhv ciAwIGxvdyIsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAotCX0sIHsKLQkJLm5hbWUJPSAi eG9yIDAgaGlnaCIsCi0JCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAotCX0sIHsKLQkJLm5hbWUg ICA9ICJpcnEgY2hhbm5lbCAwIiwKLQkJLmZsYWdzICA9IElPUkVTT1VSQ0VfSVJRLAotCX0sIHsK LQkJLm5hbWUgICA9ICJpcnEgY2hhbm5lbCAxIiwKLQkJLmZsYWdzICA9IElPUkVTT1VSQ0VfSVJR LAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IG12X3hvcl9jaGFubmVsX2RhdGEgb3Jpb25feG9y MF9jaGFubmVsc19kYXRhWzJdOwotCi1zdGF0aWMgc3RydWN0IG12X3hvcl9wbGF0Zm9ybV9kYXRh IG9yaW9uX3hvcjBfcGRhdGEgPSB7Ci0JLmNoYW5uZWxzID0gb3Jpb25feG9yMF9jaGFubmVsc19k YXRhLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25feG9yMF9zaGFy ZWQgPSB7Ci0JLm5hbWUJCT0gTVZfWE9SX05BTUUsCi0JLmlkCQk9IDAsCi0JLm51bV9yZXNvdXJj ZXMJPSBBUlJBWV9TSVpFKG9yaW9uX3hvcjBfc2hhcmVkX3Jlc291cmNlcyksCi0JLnJlc291cmNl CT0gb3Jpb25feG9yMF9zaGFyZWRfcmVzb3VyY2VzLAotCS5kZXYgICAgICAgICAgICA9IHsKLQkJ LmRtYV9tYXNrICAgICAgICAgICAgICAgPSAmb3Jpb25feG9yX2RtYW1hc2ssCi0JCS5jb2hlcmVu dF9kbWFfbWFzayAgICAgID0gRE1BX0JJVF9NQVNLKDMyKSwKLQkJLnBsYXRmb3JtX2RhdGEgICAg ICAgICAgPSAmb3Jpb25feG9yMF9wZGF0YSwKLQl9LAotfTsKLQotdm9pZCBfX2luaXQgb3Jpb25f eG9yMF9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZV9sb3csCi0JCQkgICAgdW5zaWduZWQgbG9u ZyBtYXBiYXNlX2hpZ2gsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnFfMCwKLQkJCSAgICB1bnNp Z25lZCBsb25nIGlycV8xKQotewotCW9yaW9uX3hvcjBfc2hhcmVkX3Jlc291cmNlc1swXS5zdGFy dCA9IG1hcGJhc2VfbG93OwotCW9yaW9uX3hvcjBfc2hhcmVkX3Jlc291cmNlc1swXS5lbmQgPSBt YXBiYXNlX2xvdyArIDB4ZmY7Ci0Jb3Jpb25feG9yMF9zaGFyZWRfcmVzb3VyY2VzWzFdLnN0YXJ0 ID0gbWFwYmFzZV9oaWdoOwotCW9yaW9uX3hvcjBfc2hhcmVkX3Jlc291cmNlc1sxXS5lbmQgPSBt YXBiYXNlX2hpZ2ggKyAweGZmOwotCi0Jb3Jpb25feG9yMF9zaGFyZWRfcmVzb3VyY2VzWzJdLnN0 YXJ0ID0gaXJxXzA7Ci0Jb3Jpb25feG9yMF9zaGFyZWRfcmVzb3VyY2VzWzJdLmVuZCA9IGlycV8w OwotCW9yaW9uX3hvcjBfc2hhcmVkX3Jlc291cmNlc1szXS5zdGFydCA9IGlycV8xOwotCW9yaW9u X3hvcjBfc2hhcmVkX3Jlc291cmNlc1szXS5lbmQgPSBpcnFfMTsKLQotCWRtYV9jYXBfc2V0KERN QV9NRU1DUFksIG9yaW9uX3hvcjBfY2hhbm5lbHNfZGF0YVswXS5jYXBfbWFzayk7Ci0JZG1hX2Nh cF9zZXQoRE1BX1hPUiwgb3Jpb25feG9yMF9jaGFubmVsc19kYXRhWzBdLmNhcF9tYXNrKTsKLQot CWRtYV9jYXBfc2V0KERNQV9NRU1DUFksIG9yaW9uX3hvcjBfY2hhbm5lbHNfZGF0YVsxXS5jYXBf bWFzayk7Ci0JZG1hX2NhcF9zZXQoRE1BX1hPUiwgb3Jpb25feG9yMF9jaGFubmVsc19kYXRhWzFd LmNhcF9tYXNrKTsKLQotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmb3Jpb25feG9yMF9zaGFy ZWQpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFhPUjEKLSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl94b3IxX3NoYXJlZF9yZXNvdXJj ZXNbXSA9IHsKLQl7Ci0JCS5uYW1lCT0gInhvciAxIGxvdyIsCi0JCS5mbGFncwk9IElPUkVTT1VS Q0VfTUVNLAotCX0sIHsKLQkJLm5hbWUJPSAieG9yIDEgaGlnaCIsCi0JCS5mbGFncwk9IElPUkVT T1VSQ0VfTUVNLAotCX0sIHsKLQkJLm5hbWUgICA9ICJpcnEgY2hhbm5lbCAwIiwKLQkJLmZsYWdz ICA9IElPUkVTT1VSQ0VfSVJRLAotCX0sIHsKLQkJLm5hbWUgICA9ICJpcnEgY2hhbm5lbCAxIiwK LQkJLmZsYWdzICA9IElPUkVTT1VSQ0VfSVJRLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IG12 X3hvcl9jaGFubmVsX2RhdGEgb3Jpb25feG9yMV9jaGFubmVsc19kYXRhWzJdOwotCi1zdGF0aWMg c3RydWN0IG12X3hvcl9wbGF0Zm9ybV9kYXRhIG9yaW9uX3hvcjFfcGRhdGEgPSB7Ci0JLmNoYW5u ZWxzID0gb3Jpb25feG9yMV9jaGFubmVsc19kYXRhLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2Ugb3Jpb25feG9yMV9zaGFyZWQgPSB7Ci0JLm5hbWUJCT0gTVZfWE9SX05BTUUs Ci0JLmlkCQk9IDEsCi0JLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKG9yaW9uX3hvcjFfc2hh cmVkX3Jlc291cmNlcyksCi0JLnJlc291cmNlCT0gb3Jpb25feG9yMV9zaGFyZWRfcmVzb3VyY2Vz LAotCS5kZXYgICAgICAgICAgICA9IHsKLQkJLmRtYV9tYXNrICAgICAgICAgICAgICAgPSAmb3Jp b25feG9yX2RtYW1hc2ssCi0JCS5jb2hlcmVudF9kbWFfbWFzayAgICAgID0gRE1BX0JJVF9NQVNL KDMyKSwKLQkJLnBsYXRmb3JtX2RhdGEgICAgICAgICAgPSAmb3Jpb25feG9yMV9wZGF0YSwKLQl9 LAotfTsKLQotdm9pZCBfX2luaXQgb3Jpb25feG9yMV9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFz ZV9sb3csCi0JCQkgICAgdW5zaWduZWQgbG9uZyBtYXBiYXNlX2hpZ2gsCi0JCQkgICAgdW5zaWdu ZWQgbG9uZyBpcnFfMCwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycV8xKQotewotCW9yaW9uX3hv cjFfc2hhcmVkX3Jlc291cmNlc1swXS5zdGFydCA9IG1hcGJhc2VfbG93OwotCW9yaW9uX3hvcjFf c2hhcmVkX3Jlc291cmNlc1swXS5lbmQgPSBtYXBiYXNlX2xvdyArIDB4ZmY7Ci0Jb3Jpb25feG9y MV9zaGFyZWRfcmVzb3VyY2VzWzFdLnN0YXJ0ID0gbWFwYmFzZV9oaWdoOwotCW9yaW9uX3hvcjFf c2hhcmVkX3Jlc291cmNlc1sxXS5lbmQgPSBtYXBiYXNlX2hpZ2ggKyAweGZmOwotCi0Jb3Jpb25f eG9yMV9zaGFyZWRfcmVzb3VyY2VzWzJdLnN0YXJ0ID0gaXJxXzA7Ci0Jb3Jpb25feG9yMV9zaGFy ZWRfcmVzb3VyY2VzWzJdLmVuZCA9IGlycV8wOwotCW9yaW9uX3hvcjFfc2hhcmVkX3Jlc291cmNl c1szXS5zdGFydCA9IGlycV8xOwotCW9yaW9uX3hvcjFfc2hhcmVkX3Jlc291cmNlc1szXS5lbmQg PSBpcnFfMTsKLQotCWRtYV9jYXBfc2V0KERNQV9NRU1DUFksIG9yaW9uX3hvcjFfY2hhbm5lbHNf ZGF0YVswXS5jYXBfbWFzayk7Ci0JZG1hX2NhcF9zZXQoRE1BX1hPUiwgb3Jpb25feG9yMV9jaGFu bmVsc19kYXRhWzBdLmNhcF9tYXNrKTsKLQotCWRtYV9jYXBfc2V0KERNQV9NRU1DUFksIG9yaW9u X3hvcjFfY2hhbm5lbHNfZGF0YVsxXS5jYXBfbWFzayk7Ci0JZG1hX2NhcF9zZXQoRE1BX1hPUiwg b3Jpb25feG9yMV9jaGFubmVsc19kYXRhWzFdLmNhcF9tYXNrKTsKLQotCXBsYXRmb3JtX2Rldmlj ZV9yZWdpc3Rlcigmb3Jpb25feG9yMV9zaGFyZWQpOwotfQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKLSAqIEVIQ0kKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCBvcmlvbl9l aGNpX2RhdGEgb3Jpb25fZWhjaV9kYXRhOwotc3RhdGljIHU2NCBlaGNpX2RtYW1hc2sgPSBETUFf QklUX01BU0soMzIpOwotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRUhDSTAKLSAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl9laGNpX3Jlc291 cmNlc1syXTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fZWhjaSA9IHsK LQkubmFtZQkJPSAib3Jpb24tZWhjaSIsCi0JLmlkCQk9IDAsCi0JLmRldgkJPSB7Ci0JCS5kbWFf bWFzawkJPSAmZWhjaV9kbWFtYXNrLAotCQkuY29oZXJlbnRfZG1hX21hc2sJPSBETUFfQklUX01B U0soMzIpLAotCQkucGxhdGZvcm1fZGF0YQkJPSAmb3Jpb25fZWhjaV9kYXRhLAotCX0sCi19Owot Ci12b2lkIF9faW5pdCBvcmlvbl9laGNpX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJ ICAgIHVuc2lnbmVkIGxvbmcgaXJxLAotCQkJICAgIGVudW0gb3Jpb25fZWhjaV9waHlfdmVyIHBo eV92ZXJzaW9uKQotewotCW9yaW9uX2VoY2lfZGF0YS5waHlfdmVyc2lvbiA9IHBoeV92ZXJzaW9u OwotCWZpbGxfcmVzb3VyY2VzX2lycSgmb3Jpb25fZWhjaSwgb3Jpb25fZWhjaV9yZXNvdXJjZXMs IG1hcGJhc2UsIFNaXzRLIC0gMSwKLQkJICAgICAgIGlycSk7Ci0KLQlwbGF0Zm9ybV9kZXZpY2Vf cmVnaXN0ZXIoJm9yaW9uX2VoY2kpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVI Q0kxCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25f ZWhjaV8xX3Jlc291cmNlc1syXTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jp b25fZWhjaV8xID0gewotCS5uYW1lCQk9ICJvcmlvbi1laGNpIiwKLQkuaWQJCT0gMSwKLQkuZGV2 CQk9IHsKLQkJLmRtYV9tYXNrCQk9ICZlaGNpX2RtYW1hc2ssCi0JCS5jb2hlcmVudF9kbWFfbWFz awk9IERNQV9CSVRfTUFTSygzMiksCi0JCS5wbGF0Zm9ybV9kYXRhCQk9ICZvcmlvbl9laGNpX2Rh dGEsCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX2VoY2lfMV9pbml0KHVuc2lnbmVkIGxv bmcgbWFwYmFzZSwKLQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaXJxKQotewotCWZpbGxfcmVzb3Vy Y2VzX2lycSgmb3Jpb25fZWhjaV8xLCBvcmlvbl9laGNpXzFfcmVzb3VyY2VzLAotCQkgICAgICAg bWFwYmFzZSwgU1pfNEsgLSAxLCBpcnEpOwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZv cmlvbl9laGNpXzEpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVIQ0kyCi0gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3Jpb25fZWhjaV8yX3Jl c291cmNlc1syXTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3Jpb25fZWhjaV8y ID0gewotCS5uYW1lCQk9ICJvcmlvbi1laGNpIiwKLQkuaWQJCT0gMiwKLQkuZGV2CQk9IHsKLQkJ LmRtYV9tYXNrCQk9ICZlaGNpX2RtYW1hc2ssCi0JCS5jb2hlcmVudF9kbWFfbWFzawk9IERNQV9C SVRfTUFTSygzMiksCi0JCS5wbGF0Zm9ybV9kYXRhCQk9ICZvcmlvbl9laGNpX2RhdGEsCi0JfSwK LX07Ci0KLXZvaWQgX19pbml0IG9yaW9uX2VoY2lfMl9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFz ZSwKLQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaXJxKQotewotCWZpbGxfcmVzb3VyY2VzX2lycSgm b3Jpb25fZWhjaV8yLCBvcmlvbl9laGNpXzJfcmVzb3VyY2VzLAotCQkgICAgICAgbWFwYmFzZSwg U1pfNEsgLSAxLCBpcnEpOwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl9laGNp XzIpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFNBVEEKLSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBvcmlvbl9zYXRhX3Jlc291cmNlc1syXSA9 IHsKLQl7Ci0JCS5uYW1lCT0gInNhdGEgYmFzZSIsCi0JfSwgewotCQkubmFtZQk9ICJzYXRhIGly cSIsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9yaW9uX3NhdGEg PSB7Ci0JLm5hbWUJCT0gInNhdGFfbXYiLAotCS5pZAkJPSAwLAotCS5kZXYJCT0gewotCQkuY29o ZXJlbnRfZG1hX21hc2sJPSBETUFfQklUX01BU0soMzIpLAotCX0sCi19OwotCi12b2lkIF9faW5p dCBvcmlvbl9zYXRhX2luaXQoc3RydWN0IG12X3NhdGFfcGxhdGZvcm1fZGF0YSAqc2F0YV9kYXRh LAotCQkJICAgIHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGly cSkKLXsKLQlvcmlvbl9zYXRhLmRldi5wbGF0Zm9ybV9kYXRhID0gc2F0YV9kYXRhOwotCWZpbGxf cmVzb3VyY2VzX2lycSgmb3Jpb25fc2F0YSwgb3Jpb25fc2F0YV9yZXNvdXJjZXMsCi0JCSAgICAg ICBtYXBiYXNlLCAweDUwMDAgLSAxLCBpcnEpOwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVy KCZvcmlvbl9zYXRhKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDcnlwdG9ncmFw aGljIEVuZ2luZXMgYW5kIFNlY3VyaXR5IEFjY2VsZXJhdG9yIChDRVNBKQotICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIG9yaW9uX2NyeXB0b19yZXNvdXJjZXNb XSA9IHsKLQl7Ci0JCS5uYW1lICAgPSAicmVncyIsCi0JfSwgewotCQkubmFtZSAgID0gImNyeXB0 byBpbnRlcnJ1cHQiLAotCX0sIHsKLQkJLm5hbWUgICA9ICJzcmFtIiwKLQkJLmZsYWdzICA9IElP UkVTT1VSQ0VfTUVNLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBv cmlvbl9jcnlwdG8gPSB7Ci0JLm5hbWUgICAgICAgICAgID0gIm12X2NyeXB0byIsCi0JLmlkICAg ICAgICAgICAgID0gLTEsCi19OwotCi12b2lkIF9faW5pdCBvcmlvbl9jcnlwdG9faW5pdCh1bnNp Z25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nIHNyYW1iYXNlLAotCQkJ ICAgICAgdW5zaWduZWQgbG9uZyBzcmFtX3NpemUsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nIGly cSkKLXsKLQlmaWxsX3Jlc291cmNlc19pcnEoJm9yaW9uX2NyeXB0bywgb3Jpb25fY3J5cHRvX3Jl c291cmNlcywKLQkJICAgICAgIG1hcGJhc2UsIDB4ZmZmZiwgaXJxKTsKLQlvcmlvbl9jcnlwdG8u bnVtX3Jlc291cmNlcyA9IDM7Ci0Jb3Jpb25fY3J5cHRvX3Jlc291cmNlc1syXS5zdGFydCA9IHNy YW1iYXNlOwotCW9yaW9uX2NyeXB0b19yZXNvdXJjZXNbMl0uZW5kID0gc3JhbWJhc2UgKyBzcmFt X3NpemUgLSAxOwotCi0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvcmlvbl9jcnlwdG8pOwot fQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9ncGlvLmMgYi9hcmNoL2FybS9wbGF0 LW9yaW9uL2dwaW8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDllMjliNzg5NGEz Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9ncGlvLmMKKysrIC9kZXYv bnVsbApAQCAtMSw2MTYgKzAsMCBAQAotLyoKLSAqIGFyY2gvYXJtL3BsYXQtb3Jpb24vZ3Bpby5j Ci0gKgotICogTWFydmVsbCBPcmlvbiBTb0MgR1BJTyBoYW5kbGluZy4KLSAqCi0gKiBUaGlzIGZp bGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMK LSAqIExpY2Vuc2UgdmVyc2lvbiAyLiAgVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIg d2l0aG91dCBhbnkKLSAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3Ig aW1wbGllZC4KLSAqLwotCi0jZGVmaW5lIERFQlVHCi0KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvaXJxLmg+Ci0jaW5j bHVkZSA8bGludXgvaXJxZG9tYWluLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5j bHVkZSA8bGludXgvc3BpbmxvY2suaD4KLSNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KLSNpbmNs dWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8vZHJpdmVyLmg+Ci0jaW5jbHVk ZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgotI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KLSNpbmNs dWRlIDxsaW51eC9vZi5oPgotI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPgotI2luY2x1ZGUgPGxp bnV4L29mX2FkZHJlc3MuaD4KLSNpbmNsdWRlIDxwbGF0L29yaW9uLWdwaW8uaD4KLQotLyoKLSAq IEdQSU8gdW5pdCByZWdpc3RlciBvZmZzZXRzLgotICovCi0jZGVmaW5lIEdQSU9fT1VUX09GRgkJ MHgwMDAwCi0jZGVmaW5lIEdQSU9fSU9fQ09ORl9PRkYJMHgwMDA0Ci0jZGVmaW5lIEdQSU9fQkxJ TktfRU5fT0ZGCTB4MDAwOAotI2RlZmluZSBHUElPX0lOX1BPTF9PRkYJCTB4MDAwYwotI2RlZmlu ZSBHUElPX0RBVEFfSU5fT0ZGCTB4MDAxMAotI2RlZmluZSBHUElPX0VER0VfQ0FVU0VfT0ZGCTB4 MDAxNAotI2RlZmluZSBHUElPX0VER0VfTUFTS19PRkYJMHgwMDE4Ci0jZGVmaW5lIEdQSU9fTEVW RUxfTUFTS19PRkYJMHgwMDFjCi0KLXN0cnVjdCBvcmlvbl9ncGlvX2NoaXAgewotCXN0cnVjdCBn cGlvX2NoaXAJY2hpcDsKLQlzcGlubG9ja190CQlsb2NrOwotCXZvaWQgX19pb21lbQkJKmJhc2U7 Ci0JdW5zaWduZWQgbG9uZwkJdmFsaWRfaW5wdXQ7Ci0JdW5zaWduZWQgbG9uZwkJdmFsaWRfb3V0 cHV0OwotCWludAkJCW1hc2tfb2Zmc2V0OwotCWludAkJCXNlY29uZGFyeV9pcnFfYmFzZTsKLQlz dHJ1Y3QgaXJxX2RvbWFpbiAgICAgICAqZG9tYWluOwotfTsKLQotc3RhdGljIHZvaWQgX19pb21l bSAqR1BJT19PVVQoc3RydWN0IG9yaW9uX2dwaW9fY2hpcCAqb2NoaXApCi17Ci0JcmV0dXJuIG9j aGlwLT5iYXNlICsgR1BJT19PVVRfT0ZGOwotfQotCi1zdGF0aWMgdm9pZCBfX2lvbWVtICpHUElP X0lPX0NPTkYoc3RydWN0IG9yaW9uX2dwaW9fY2hpcCAqb2NoaXApCi17Ci0JcmV0dXJuIG9jaGlw LT5iYXNlICsgR1BJT19JT19DT05GX09GRjsKLX0KLQotc3RhdGljIHZvaWQgX19pb21lbSAqR1BJ T19CTElOS19FTihzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlwICpvY2hpcCkKLXsKLQlyZXR1cm4gb2No aXAtPmJhc2UgKyBHUElPX0JMSU5LX0VOX09GRjsKLX0KLQotc3RhdGljIHZvaWQgX19pb21lbSAq R1BJT19JTl9QT0woc3RydWN0IG9yaW9uX2dwaW9fY2hpcCAqb2NoaXApCi17Ci0JcmV0dXJuIG9j aGlwLT5iYXNlICsgR1BJT19JTl9QT0xfT0ZGOwotfQotCi1zdGF0aWMgdm9pZCBfX2lvbWVtICpH UElPX0RBVEFfSU4oc3RydWN0IG9yaW9uX2dwaW9fY2hpcCAqb2NoaXApCi17Ci0JcmV0dXJuIG9j aGlwLT5iYXNlICsgR1BJT19EQVRBX0lOX09GRjsKLX0KLQotc3RhdGljIHZvaWQgX19pb21lbSAq R1BJT19FREdFX0NBVVNFKHN0cnVjdCBvcmlvbl9ncGlvX2NoaXAgKm9jaGlwKQotewotCXJldHVy biBvY2hpcC0+YmFzZSArIEdQSU9fRURHRV9DQVVTRV9PRkY7Ci19Ci0KLXN0YXRpYyB2b2lkIF9f aW9tZW0gKkdQSU9fRURHRV9NQVNLKHN0cnVjdCBvcmlvbl9ncGlvX2NoaXAgKm9jaGlwKQotewot CXJldHVybiBvY2hpcC0+YmFzZSArIG9jaGlwLT5tYXNrX29mZnNldCArIEdQSU9fRURHRV9NQVNL X09GRjsKLX0KLQotc3RhdGljIHZvaWQgX19pb21lbSAqR1BJT19MRVZFTF9NQVNLKHN0cnVjdCBv cmlvbl9ncGlvX2NoaXAgKm9jaGlwKQotewotCXJldHVybiBvY2hpcC0+YmFzZSArIG9jaGlwLT5t YXNrX29mZnNldCArIEdQSU9fTEVWRUxfTUFTS19PRkY7Ci19Ci0KLQotc3RhdGljIHN0cnVjdCBv cmlvbl9ncGlvX2NoaXAgb3Jpb25fZ3Bpb19jaGlwc1syXTsKLXN0YXRpYyBpbnQgb3Jpb25fZ3Bp b19jaGlwX2NvdW50OwotCi1zdGF0aWMgaW5saW5lIHZvaWQKLV9fc2V0X2RpcmVjdGlvbihzdHJ1 Y3Qgb3Jpb25fZ3Bpb19jaGlwICpvY2hpcCwgdW5zaWduZWQgcGluLCBpbnQgaW5wdXQpCi17Ci0J dTMyIHU7Ci0KLQl1ID0gcmVhZGwoR1BJT19JT19DT05GKG9jaGlwKSk7Ci0JaWYgKGlucHV0KQot CQl1IHw9IDEgPDwgcGluOwotCWVsc2UKLQkJdSAmPSB+KDEgPDwgcGluKTsKLQl3cml0ZWwodSwg R1BJT19JT19DT05GKG9jaGlwKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fc2V0X2xldmVsKHN0cnVj dCBvcmlvbl9ncGlvX2NoaXAgKm9jaGlwLCB1bnNpZ25lZCBwaW4sIGludCBoaWdoKQotewotCXUz MiB1OwotCi0JdSA9IHJlYWRsKEdQSU9fT1VUKG9jaGlwKSk7Ci0JaWYgKGhpZ2gpCi0JCXUgfD0g MSA8PCBwaW47Ci0JZWxzZQotCQl1ICY9IH4oMSA8PCBwaW4pOwotCXdyaXRlbCh1LCBHUElPX09V VChvY2hpcCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQKLV9fc2V0X2JsaW5raW5nKHN0cnVj dCBvcmlvbl9ncGlvX2NoaXAgKm9jaGlwLCB1bnNpZ25lZCBwaW4sIGludCBibGluaykKLXsKLQl1 MzIgdTsKLQotCXUgPSByZWFkbChHUElPX0JMSU5LX0VOKG9jaGlwKSk7Ci0JaWYgKGJsaW5rKQot CQl1IHw9IDEgPDwgcGluOwotCWVsc2UKLQkJdSAmPSB+KDEgPDwgcGluKTsKLQl3cml0ZWwodSwg R1BJT19CTElOS19FTihvY2hpcCkpOwotfQotCi1zdGF0aWMgaW5saW5lIGludAotb3Jpb25fZ3Bp b19pc192YWxpZChzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlwICpvY2hpcCwgdW5zaWduZWQgcGluLCBp bnQgbW9kZSkKLXsKLQlpZiAocGluID49IG9jaGlwLT5jaGlwLm5ncGlvKQotCQlnb3RvIGVycl9v dXQ7Ci0KLQlpZiAoKG1vZGUgJiBHUElPX0lOUFVUX09LKSAmJiAhdGVzdF9iaXQocGluLCAmb2No aXAtPnZhbGlkX2lucHV0KSkKLQkJZ290byBlcnJfb3V0OwotCi0JaWYgKChtb2RlICYgR1BJT19P VVRQVVRfT0spICYmICF0ZXN0X2JpdChwaW4sICZvY2hpcC0+dmFsaWRfb3V0cHV0KSkKLQkJZ290 byBlcnJfb3V0OwotCi0JcmV0dXJuIDE7Ci0KLWVycl9vdXQ6Ci0JcHJfZGVidWcoIiVzOiBpbnZh bGlkIEdQSU8gJWRcbiIsIF9fZnVuY19fLCBwaW4pOwotCXJldHVybiBmYWxzZTsKLX0KLQotLyoK LSAqIEdQSU8gcHJpbWl0aXZlcy4KLSAqLwotc3RhdGljIGludCBvcmlvbl9ncGlvX3JlcXVlc3Qo c3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgcGluKQotewotCXN0cnVjdCBvcmlvbl9n cGlvX2NoaXAgKm9jaGlwID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7Ci0KLQlpZiAob3Jpb25f Z3Bpb19pc192YWxpZChvY2hpcCwgcGluLCBHUElPX0lOUFVUX09LKSB8fAotCSAgICBvcmlvbl9n cGlvX2lzX3ZhbGlkKG9jaGlwLCBwaW4sIEdQSU9fT1VUUFVUX09LKSkKLQkJcmV0dXJuIDA7Ci0K LQlyZXR1cm4gLUVJTlZBTDsKLX0KLQotc3RhdGljIGludCBvcmlvbl9ncGlvX2RpcmVjdGlvbl9p bnB1dChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBwaW4pCi17Ci0Jc3RydWN0IG9y aW9uX2dwaW9fY2hpcCAqb2NoaXAgPSBncGlvY2hpcF9nZXRfZGF0YShjaGlwKTsKLQl1bnNpZ25l ZCBsb25nIGZsYWdzOwotCi0JaWYgKCFvcmlvbl9ncGlvX2lzX3ZhbGlkKG9jaGlwLCBwaW4sIEdQ SU9fSU5QVVRfT0spKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZv Y2hpcC0+bG9jaywgZmxhZ3MpOwotCV9fc2V0X2RpcmVjdGlvbihvY2hpcCwgcGluLCAxKTsKLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZvY2hpcC0+bG9jaywgZmxhZ3MpOwotCi0JcmV0dXJuIDA7 Ci19Ci0KLXN0YXRpYyBpbnQgb3Jpb25fZ3Bpb19nZXQoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwg dW5zaWduZWQgcGluKQotewotCXN0cnVjdCBvcmlvbl9ncGlvX2NoaXAgKm9jaGlwID0gZ3Bpb2No aXBfZ2V0X2RhdGEoY2hpcCk7Ci0JaW50IHZhbDsKLQotCWlmIChyZWFkbChHUElPX0lPX0NPTkYo b2NoaXApKSAmICgxIDw8IHBpbikpIHsKLQkJdmFsID0gcmVhZGwoR1BJT19EQVRBX0lOKG9jaGlw KSkgXiByZWFkbChHUElPX0lOX1BPTChvY2hpcCkpOwotCX0gZWxzZSB7Ci0JCXZhbCA9IHJlYWRs KEdQSU9fT1VUKG9jaGlwKSk7Ci0JfQotCi0JcmV0dXJuICh2YWwgPj4gcGluKSAmIDE7Ci19Ci0K LXN0YXRpYyBpbnQKLW9yaW9uX2dwaW9fZGlyZWN0aW9uX291dHB1dChzdHJ1Y3QgZ3Bpb19jaGlw ICpjaGlwLCB1bnNpZ25lZCBwaW4sIGludCB2YWx1ZSkKLXsKLQlzdHJ1Y3Qgb3Jpb25fZ3Bpb19j aGlwICpvY2hpcCA9IGdwaW9jaGlwX2dldF9kYXRhKGNoaXApOwotCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Ci0KLQlpZiAoIW9yaW9uX2dwaW9faXNfdmFsaWQob2NoaXAsIHBpbiwgR1BJT19PVVRQVVRf T0spKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZvY2hpcC0+bG9j aywgZmxhZ3MpOwotCV9fc2V0X2JsaW5raW5nKG9jaGlwLCBwaW4sIDApOwotCV9fc2V0X2xldmVs KG9jaGlwLCBwaW4sIHZhbHVlKTsKLQlfX3NldF9kaXJlY3Rpb24ob2NoaXAsIHBpbiwgMCk7Ci0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb2NoaXAtPmxvY2ssIGZsYWdzKTsKLQotCXJldHVybiAw OwotfQotCi1zdGF0aWMgaW50IG9yaW9uX2dwaW9fc2V0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAs IHVuc2lnbmVkIGludCBwaW4sIGludCB2YWx1ZSkKLXsKLQlzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlw ICpvY2hpcCA9IGdwaW9jaGlwX2dldF9kYXRhKGNoaXApOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmb2NoaXAtPmxvY2ssIGZsYWdzKTsKLQlfX3NldF9sZXZl bChvY2hpcCwgcGluLCB2YWx1ZSk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb2NoaXAtPmxv Y2ssIGZsYWdzKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IG9yaW9uX2dwaW9fdG9f aXJxKHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIHBpbikKLXsKLQlzdHJ1Y3Qgb3Jp b25fZ3Bpb19jaGlwICpvY2hpcCA9IGdwaW9jaGlwX2dldF9kYXRhKGNoaXApOwotCi0JcmV0dXJu IGlycV9jcmVhdGVfbWFwcGluZyhvY2hpcC0+ZG9tYWluLAotCQkJCSAgb2NoaXAtPnNlY29uZGFy eV9pcnFfYmFzZSArIHBpbik7Ci19Ci0KLS8qCi0gKiBPcmlvbi1zcGVjaWZpYyBHUElPIEFQSSBl eHRlbnNpb25zLgotICovCi1zdGF0aWMgc3RydWN0IG9yaW9uX2dwaW9fY2hpcCAqb3Jpb25fZ3Bp b19jaGlwX2ZpbmQoaW50IHBpbikKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBvcmlv bl9ncGlvX2NoaXBfY291bnQ7IGkrKykgewotCQlzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlwICpvY2hp cCA9IG9yaW9uX2dwaW9fY2hpcHMgKyBpOwotCQlzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwID0gJm9j aGlwLT5jaGlwOwotCi0JCWlmIChwaW4gPj0gY2hpcC0+YmFzZSAmJiBwaW4gPCBjaGlwLT5iYXNl ICsgY2hpcC0+bmdwaW8pCi0JCQlyZXR1cm4gb2NoaXA7Ci0JfQotCi0JcmV0dXJuIE5VTEw7Ci19 Ci0KLXZvaWQgX19pbml0IG9yaW9uX2dwaW9fc2V0X3VudXNlZCh1bnNpZ25lZCBwaW4pCi17Ci0J c3RydWN0IG9yaW9uX2dwaW9fY2hpcCAqb2NoaXAgPSBvcmlvbl9ncGlvX2NoaXBfZmluZChwaW4p OwotCi0JaWYgKG9jaGlwID09IE5VTEwpCi0JCXJldHVybjsKLQotCXBpbiAtPSBvY2hpcC0+Y2hp cC5iYXNlOwotCi0JLyogQ29uZmlndXJlIGFzIG91dHB1dCwgZHJpdmUgbG93LiAqLwotCV9fc2V0 X2xldmVsKG9jaGlwLCBwaW4sIDApOwotCV9fc2V0X2RpcmVjdGlvbihvY2hpcCwgcGluLCAwKTsK LX0KLQotdm9pZCBfX2luaXQgb3Jpb25fZ3Bpb19zZXRfdmFsaWQodW5zaWduZWQgcGluLCBpbnQg bW9kZSkKLXsKLQlzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlwICpvY2hpcCA9IG9yaW9uX2dwaW9fY2hp cF9maW5kKHBpbik7Ci0KLQlpZiAob2NoaXAgPT0gTlVMTCkKLQkJcmV0dXJuOwotCi0JcGluIC09 IG9jaGlwLT5jaGlwLmJhc2U7Ci0KLQlpZiAobW9kZSA9PSAxKQotCQltb2RlID0gR1BJT19JTlBV VF9PSyB8IEdQSU9fT1VUUFVUX09LOwotCi0JaWYgKG1vZGUgJiBHUElPX0lOUFVUX09LKQotCQlf X3NldF9iaXQocGluLCAmb2NoaXAtPnZhbGlkX2lucHV0KTsKLQllbHNlCi0JCV9fY2xlYXJfYml0 KHBpbiwgJm9jaGlwLT52YWxpZF9pbnB1dCk7Ci0KLQlpZiAobW9kZSAmIEdQSU9fT1VUUFVUX09L KQotCQlfX3NldF9iaXQocGluLCAmb2NoaXAtPnZhbGlkX291dHB1dCk7Ci0JZWxzZQotCQlfX2Ns ZWFyX2JpdChwaW4sICZvY2hpcC0+dmFsaWRfb3V0cHV0KTsKLX0KLQotdm9pZCBvcmlvbl9ncGlv X3NldF9ibGluayh1bnNpZ25lZCBwaW4sIGludCBibGluaykKLXsKLQlzdHJ1Y3Qgb3Jpb25fZ3Bp b19jaGlwICpvY2hpcCA9IG9yaW9uX2dwaW9fY2hpcF9maW5kKHBpbik7Ci0JdW5zaWduZWQgbG9u ZyBmbGFnczsKLQotCWlmIChvY2hpcCA9PSBOVUxMKQotCQlyZXR1cm47Ci0KLQlzcGluX2xvY2tf aXJxc2F2ZSgmb2NoaXAtPmxvY2ssIGZsYWdzKTsKLQlfX3NldF9sZXZlbChvY2hpcCwgcGluICYg MzEsIDApOwotCV9fc2V0X2JsaW5raW5nKG9jaGlwLCBwaW4gJiAzMSwgYmxpbmspOwotCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJm9jaGlwLT5sb2NrLCBmbGFncyk7Ci19Ci1FWFBPUlRfU1lNQk9M KG9yaW9uX2dwaW9fc2V0X2JsaW5rKTsKLQotI2RlZmluZSBPUklPTl9CTElOS19IQUxGX1BFUklP RCAxMDAgLyogbXMgKi8KLQotaW50IG9yaW9uX2dwaW9fbGVkX2JsaW5rX3NldChzdHJ1Y3QgZ3Bp b19kZXNjICpkZXNjLCBpbnQgc3RhdGUsCi0JdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sIHVuc2ln bmVkIGxvbmcgKmRlbGF5X29mZikKLXsKLQl1bnNpZ25lZCBncGlvID0gZGVzY190b19ncGlvKGRl c2MpOwotCi0JaWYgKGRlbGF5X29uICYmIGRlbGF5X29mZiAmJiAhKmRlbGF5X29uICYmICEqZGVs YXlfb2ZmKQotCQkqZGVsYXlfb24gPSAqZGVsYXlfb2ZmID0gT1JJT05fQkxJTktfSEFMRl9QRVJJ T0Q7Ci0KLQlzd2l0Y2ggKHN0YXRlKSB7Ci0JY2FzZSBHUElPX0xFRF9OT19CTElOS19MT1c6Ci0J Y2FzZSBHUElPX0xFRF9OT19CTElOS19ISUdIOgotCQlvcmlvbl9ncGlvX3NldF9ibGluayhncGlv LCAwKTsKLQkJZ3Bpb2Rfc2V0X3Jhd192YWx1ZShkZXNjLCBzdGF0ZSk7Ci0JCWJyZWFrOwotCWNh c2UgR1BJT19MRURfQkxJTks6Ci0JCW9yaW9uX2dwaW9fc2V0X2JsaW5rKGdwaW8sIDEpOwotCX0K LQlyZXR1cm4gMDsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKG9yaW9uX2dwaW9fbGVkX2JsaW5rX3Nl dCk7Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBPcmlvbiBHUElPIElSUQotICoKLSAq IEdQSU9fSU5fUE9MIHJlZ2lzdGVyIGNvbnRyb2xzIHdoZXRoZXIgR1BJT19EQVRBX0lOIHdpbGwg aG9sZCB0aGUgc2FtZQotICogdmFsdWUgb2YgdGhlIGxpbmUgb3IgdGhlIG9wcG9zaXRlIHZhbHVl LgotICoKLSAqIExldmVsIElSUSBoYW5kbGVyczogREFUQV9JTiBpcyB1c2VkIGRpcmVjdGx5IGFz IGNhdXNlIHJlZ2lzdGVyLgotICogICAgICAgICAgICAgICAgICAgICBJbnRlcnJ1cHQgYXJlIG1h c2tlZCBieSBMRVZFTF9NQVNLIHJlZ2lzdGVycy4KLSAqIEVkZ2UgSVJRIGhhbmRsZXJzOiAgQ2hh bmdlIGluIERBVEFfSU4gYXJlIGxhdGNoZWQgaW4gRURHRV9DQVVTRS4KLSAqICAgICAgICAgICAg ICAgICAgICAgSW50ZXJydXB0IGFyZSBtYXNrZWQgYnkgRURHRV9NQVNLIHJlZ2lzdGVycy4KLSAq IEJvdGgtZWRnZSBoYW5kbGVyczogU2ltaWxhciB0byByZWd1bGFyIEVkZ2UgaGFuZGxlcnMsIGJ1 dCBhbHNvIHN3YXBzCi0gKiAgICAgICAgICAgICAgICAgICAgIHRoZSBwb2xhcml0eSB0byBjYXRj aCB0aGUgbmV4dCBsaW5lIHRyYW5zYWN0aW9uLgotICogICAgICAgICAgICAgICAgICAgICBUaGlz IGlzIGEgcmFjZSBjb25kaXRpb24gdGhhdCBtaWdodCBub3QgcGVyZmVjdGx5Ci0gKiAgICAgICAg ICAgICAgICAgICAgIHdvcmsgb24gc29tZSB1c2UgY2FzZXMuCi0gKgotICogRXZlcnkgZWlnaHQg R1BJTyBsaW5lcyBhcmUgZ3JvdXBlZCAoT1InZWQpIGJlZm9yZSBnb2luZyB1cCB0byBtYWluCi0g KiBjYXVzZSByZWdpc3Rlci4KLSAqCi0gKiAgICAgICAgICAgICAgICAgICAgRURHRSAgY2F1c2Ug ICAgbWFzawotICogICAgICAgIGRhdGEtaW4gICAvLS0tLS0tLS18IHwtLS0tLXwgfC0tLS1cCi0g KiAgICAgLS0tLS18IHwtLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tIHRvIG1haW4g Y2F1c2UgcmVnCi0gKiAgICAgICAgICAgWCAgICAgIFwtLS0tLS0tLS0tLS0tLS0tfCB8LS0tLS8K LSAqICAgICAgICBwb2xhcml0eSAgICBMRVZFTCAgICAgICAgICBtYXNrCi0gKgotICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCi0KLXN0YXRpYyBpbnQgZ3Bpb19pcnFfc2V0X3R5cGUoc3RydWN0IGlycV9k YXRhICpkLCB1MzIgdHlwZSkKLXsKLQlzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJpYyAqZ2MgPSBpcnFf ZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsKLQlzdHJ1Y3QgaXJxX2NoaXBfdHlwZSAqY3QgPSBp cnFfZGF0YV9nZXRfY2hpcF90eXBlKGQpOwotCXN0cnVjdCBvcmlvbl9ncGlvX2NoaXAgKm9jaGlw ID0gZ2MtPnByaXZhdGU7Ci0JaW50IHBpbjsKLQl1MzIgdTsKLQotCXBpbiA9IGQtPmh3aXJxIC0g b2NoaXAtPnNlY29uZGFyeV9pcnFfYmFzZTsKLQotCXUgPSByZWFkbChHUElPX0lPX0NPTkYob2No aXApKSAmICgxIDw8IHBpbik7Ci0JaWYgKCF1KSB7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQot CXR5cGUgJj0gSVJRX1RZUEVfU0VOU0VfTUFTSzsKLQlpZiAodHlwZSA9PSBJUlFfVFlQRV9OT05F KQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCS8qIENoZWNrIGlmIHdlIG5lZWQgdG8gY2hhbmdlIGNo aXAgYW5kIGhhbmRsZXIgKi8KLQlpZiAoIShjdC0+dHlwZSAmIHR5cGUpKQotCQlpZiAoaXJxX3Nl dHVwX2FsdF9jaGlwKGQsIHR5cGUpKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkvKgotCSAqIENv bmZpZ3VyZSBpbnRlcnJ1cHQgcG9sYXJpdHkuCi0JICovCi0JaWYgKHR5cGUgPT0gSVJRX1RZUEVf RURHRV9SSVNJTkcgfHwgdHlwZSA9PSBJUlFfVFlQRV9MRVZFTF9ISUdIKSB7Ci0JCXUgPSByZWFk bChHUElPX0lOX1BPTChvY2hpcCkpOwotCQl1ICY9IH4oMSA8PCBwaW4pOwotCQl3cml0ZWwodSwg R1BJT19JTl9QT0wob2NoaXApKTsKLQl9IGVsc2UgaWYgKHR5cGUgPT0gSVJRX1RZUEVfRURHRV9G QUxMSU5HIHx8IHR5cGUgPT0gSVJRX1RZUEVfTEVWRUxfTE9XKSB7Ci0JCXUgPSByZWFkbChHUElP X0lOX1BPTChvY2hpcCkpOwotCQl1IHw9IDEgPDwgcGluOwotCQl3cml0ZWwodSwgR1BJT19JTl9Q T0wob2NoaXApKTsKLQl9IGVsc2UgaWYgKHR5cGUgPT0gSVJRX1RZUEVfRURHRV9CT1RIKSB7Ci0J CXUzMiB2OwotCi0JCXYgPSByZWFkbChHUElPX0lOX1BPTChvY2hpcCkpIF4gcmVhZGwoR1BJT19E QVRBX0lOKG9jaGlwKSk7Ci0KLQkJLyoKLQkJICogc2V0IGluaXRpYWwgcG9sYXJpdHkgYmFzZWQg b24gY3VycmVudCBpbnB1dCBsZXZlbAotCQkgKi8KLQkJdSA9IHJlYWRsKEdQSU9fSU5fUE9MKG9j aGlwKSk7Ci0JCWlmICh2ICYgKDEgPDwgcGluKSkKLQkJCXUgfD0gMSA8PCBwaW47CQkvKiBmYWxs aW5nICovCi0JCWVsc2UKLQkJCXUgJj0gfigxIDw8IHBpbik7CS8qIHJpc2luZyAqLwotCQl3cml0 ZWwodSwgR1BJT19JTl9QT0wob2NoaXApKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2 b2lkIGdwaW9faXJxX2hhbmRsZXIoc3RydWN0IGlycV9kZXNjICpkZXNjKQotewotCXN0cnVjdCBv cmlvbl9ncGlvX2NoaXAgKm9jaGlwID0gaXJxX2Rlc2NfZ2V0X2hhbmRsZXJfZGF0YShkZXNjKTsK LQl1MzIgY2F1c2UsIHR5cGU7Ci0JaW50IGk7Ci0KLQlpZiAob2NoaXAgPT0gTlVMTCkKLQkJcmV0 dXJuOwotCi0JY2F1c2UgPSByZWFkbChHUElPX0RBVEFfSU4ob2NoaXApKSAmIHJlYWRsKEdQSU9f TEVWRUxfTUFTSyhvY2hpcCkpOwotCWNhdXNlIHw9IHJlYWRsKEdQSU9fRURHRV9DQVVTRShvY2hp cCkpICYgcmVhZGwoR1BJT19FREdFX01BU0sob2NoaXApKTsKLQotCWZvciAoaSA9IDA7IGkgPCBv Y2hpcC0+Y2hpcC5uZ3BpbzsgaSsrKSB7Ci0JCWludCBpcnE7Ci0KLQkJaXJxID0gb2NoaXAtPnNl Y29uZGFyeV9pcnFfYmFzZSArIGk7Ci0KLQkJaWYgKCEoY2F1c2UgJiAoMSA8PCBpKSkpCi0JCQlj b250aW51ZTsKLQotCQl0eXBlID0gaXJxX2dldF90cmlnZ2VyX3R5cGUoaXJxKTsKLQkJaWYgKCh0 eXBlICYgSVJRX1RZUEVfU0VOU0VfTUFTSykgPT0gSVJRX1RZUEVfRURHRV9CT1RIKSB7Ci0JCQkv KiBTd2FwIHBvbGFyaXR5IChyYWNlIHdpdGggR1BJTyBsaW5lKSAqLwotCQkJdTMyIHBvbGFyaXR5 OwotCi0JCQlwb2xhcml0eSA9IHJlYWRsKEdQSU9fSU5fUE9MKG9jaGlwKSk7Ci0JCQlwb2xhcml0 eSBePSAxIDw8IGk7Ci0JCQl3cml0ZWwocG9sYXJpdHksIEdQSU9fSU5fUE9MKG9jaGlwKSk7Ci0J CX0KLQkJZ2VuZXJpY19oYW5kbGVfaXJxKGlycSk7Ci0JfQotfQotCi0jaWZkZWYgQ09ORklHX0RF QlVHX0ZTCi0jaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KLQotc3RhdGljIHZvaWQgb3Jpb25f Z3Bpb19kYmdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBncGlvX2NoaXAgKmNoaXAp Ci17Ci0KLQlzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlwICpvY2hpcCA9IGdwaW9jaGlwX2dldF9kYXRh KGNoaXApOwotCXUzMiBvdXQsIGlvX2NvbmYsIGJsaW5rLCBpbl9wb2wsIGRhdGFfaW4sIGNhdXNl LCBlZGdfbXNrLCBsdmxfbXNrOwotCWNvbnN0IGNoYXIgKmxhYmVsOwotCWludCBpOwotCi0Jb3V0 CT0gcmVhZGxfcmVsYXhlZChHUElPX09VVChvY2hpcCkpOwotCWlvX2NvbmYJPSByZWFkbF9yZWxh eGVkKEdQSU9fSU9fQ09ORihvY2hpcCkpOwotCWJsaW5rCT0gcmVhZGxfcmVsYXhlZChHUElPX0JM SU5LX0VOKG9jaGlwKSk7Ci0JaW5fcG9sCT0gcmVhZGxfcmVsYXhlZChHUElPX0lOX1BPTChvY2hp cCkpOwotCWRhdGFfaW4JPSByZWFkbF9yZWxheGVkKEdQSU9fREFUQV9JTihvY2hpcCkpOwotCWNh dXNlCT0gcmVhZGxfcmVsYXhlZChHUElPX0VER0VfQ0FVU0Uob2NoaXApKTsKLQllZGdfbXNrCT0g cmVhZGxfcmVsYXhlZChHUElPX0VER0VfTUFTSyhvY2hpcCkpOwotCWx2bF9tc2sJPSByZWFkbF9y ZWxheGVkKEdQSU9fTEVWRUxfTUFTSyhvY2hpcCkpOwotCi0JZm9yX2VhY2hfcmVxdWVzdGVkX2dw aW8oY2hpcCwgaSwgbGFiZWwpIHsKLQkJdTMyIG1zazsKLQkJYm9vbCBpc19vdXQ7Ci0KLQkJbXNr ID0gMSA8PCBpOwotCQlpc19vdXQgPSAhKGlvX2NvbmYgJiBtc2spOwotCi0JCXNlcV9wcmludGYo cywgIiBncGlvLSUtM2QgKCUtMjAuMjBzKSIsIGNoaXAtPmJhc2UgKyBpLCBsYWJlbCk7Ci0KLQkJ aWYgKGlzX291dCkgewotCQkJc2VxX3ByaW50ZihzLCAiIG91dCAlcyAlc1xuIiwKLQkJCQkgICBz dHJfaGlfbG8ob3V0ICYgbXNrKSwKLQkJCQkgICBibGluayAmIG1zayA/ICIoYmxpbmsgKSIgOiAi Iik7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCXNlcV9wcmludGYocywgIiBpbiAgJXMgKGFjdCAl cykgLSBJUlEiLAotCQkJICAgc3RyX2hpX2xvKChkYXRhX2luIF4gaW5fcG9sKSAmIG1zayksCi0J CQkgICBzdHJfbG9faGkoaW5fcG9sICYgbXNrKSk7Ci0JCWlmICghKChlZGdfbXNrIHwgbHZsX21z aykgJiBtc2spKSB7Ci0JCQlzZXFfcHV0cyhzLCAiIGRpc2FibGVkXG4iKTsKLQkJCWNvbnRpbnVl OwotCQl9Ci0JCWlmIChlZGdfbXNrICYgbXNrKQotCQkJc2VxX3B1dHMocywgIiBlZGdlICIpOwot CQlpZiAobHZsX21zayAmIG1zaykKLQkJCXNlcV9wdXRzKHMsICIgbGV2ZWwiKTsKLQkJc2VxX3By aW50ZihzLCAiICglcylcbiIsIGNhdXNlICYgbXNrID8gInBlbmRpbmciIDogImNsZWFyICAiKTsK LQl9Ci19Ci0jZWxzZQotI2RlZmluZSBvcmlvbl9ncGlvX2RiZ19zaG93IE5VTEwKLSNlbmRpZgot Ci1zdGF0aWMgdm9pZCBvcmlvbl9ncGlvX3VubWFza19pcnEoc3RydWN0IGlycV9kYXRhICpkKQot ewotCXN0cnVjdCBpcnFfY2hpcF9nZW5lcmljICpnYyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9k YXRhKGQpOwotCXN0cnVjdCBpcnFfY2hpcF90eXBlICpjdCA9IGlycV9kYXRhX2dldF9jaGlwX3R5 cGUoZCk7Ci0JdTMyIHJlZ192YWw7Ci0JdTMyIG1hc2sgPSBkLT5tYXNrOwotCi0JZ3VhcmQocmF3 X3NwaW5sb2NrKSgmZ2MtPmxvY2spOwotCXJlZ192YWwgPSBpcnFfcmVnX3JlYWRsKGdjLCBjdC0+ cmVncy5tYXNrKTsKLQlyZWdfdmFsIHw9IG1hc2s7Ci0JaXJxX3JlZ193cml0ZWwoZ2MsIHJlZ192 YWwsIGN0LT5yZWdzLm1hc2spOwotfQotCi1zdGF0aWMgdm9pZCBvcmlvbl9ncGlvX21hc2tfaXJx KHN0cnVjdCBpcnFfZGF0YSAqZCkKLXsKLQlzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJpYyAqZ2MgPSBp cnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsKLQlzdHJ1Y3QgaXJxX2NoaXBfdHlwZSAqY3Qg PSBpcnFfZGF0YV9nZXRfY2hpcF90eXBlKGQpOwotCXUzMiBtYXNrID0gZC0+bWFzazsKLQl1MzIg cmVnX3ZhbDsKLQotCWd1YXJkKHJhd19zcGlubG9jaykoJmdjLT5sb2NrKTsKLQlyZWdfdmFsID0g aXJxX3JlZ19yZWFkbChnYywgY3QtPnJlZ3MubWFzayk7Ci0JcmVnX3ZhbCAmPSB+bWFzazsKLQlp cnFfcmVnX3dyaXRlbChnYywgcmVnX3ZhbCwgY3QtPnJlZ3MubWFzayk7Ci19Ci0KLXZvaWQgX19p bml0IG9yaW9uX2dwaW9faW5pdChpbnQgZ3Bpb19iYXNlLCBpbnQgbmdwaW8sCi0JCQkgICAgdm9p ZCBfX2lvbWVtICpiYXNlLCBpbnQgbWFza19vZmZzZXQsCi0JCQkgICAgaW50IHNlY29uZGFyeV9p cnFfYmFzZSwKLQkJCSAgICBpbnQgaXJxc1s0XSkKLXsKLQlzdHJ1Y3Qgb3Jpb25fZ3Bpb19jaGlw ICpvY2hpcDsKLQlzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJpYyAqZ2M7Ci0Jc3RydWN0IGlycV9jaGlw X3R5cGUgKmN0OwotCWNoYXIgZ2NfbGFiZWxbMTZdOwotCWludCBpOwotCi0JaWYgKG9yaW9uX2dw aW9fY2hpcF9jb3VudCA9PSBBUlJBWV9TSVpFKG9yaW9uX2dwaW9fY2hpcHMpKQotCQlyZXR1cm47 Ci0KLQlzbnByaW50ZihnY19sYWJlbCwgc2l6ZW9mKGdjX2xhYmVsKSwgIm9yaW9uX2dwaW8lZCIs Ci0JCW9yaW9uX2dwaW9fY2hpcF9jb3VudCk7Ci0KLQlvY2hpcCA9IG9yaW9uX2dwaW9fY2hpcHMg KyBvcmlvbl9ncGlvX2NoaXBfY291bnQ7Ci0Jb2NoaXAtPmNoaXAubGFiZWwgPSBrc3RyZHVwKGdj X2xhYmVsLCBHRlBfS0VSTkVMKTsKLQlvY2hpcC0+Y2hpcC5yZXF1ZXN0ID0gb3Jpb25fZ3Bpb19y ZXF1ZXN0OwotCW9jaGlwLT5jaGlwLmRpcmVjdGlvbl9pbnB1dCA9IG9yaW9uX2dwaW9fZGlyZWN0 aW9uX2lucHV0OwotCW9jaGlwLT5jaGlwLmdldCA9IG9yaW9uX2dwaW9fZ2V0OwotCW9jaGlwLT5j aGlwLmRpcmVjdGlvbl9vdXRwdXQgPSBvcmlvbl9ncGlvX2RpcmVjdGlvbl9vdXRwdXQ7Ci0Jb2No aXAtPmNoaXAuc2V0ID0gb3Jpb25fZ3Bpb19zZXQ7Ci0Jb2NoaXAtPmNoaXAudG9faXJxID0gb3Jp b25fZ3Bpb190b19pcnE7Ci0Jb2NoaXAtPmNoaXAuYmFzZSA9IGdwaW9fYmFzZTsKLQlvY2hpcC0+ Y2hpcC5uZ3BpbyA9IG5ncGlvOwotCW9jaGlwLT5jaGlwLmNhbl9zbGVlcCA9IDA7Ci0Jb2NoaXAt PmNoaXAuZGJnX3Nob3cgPSBvcmlvbl9ncGlvX2RiZ19zaG93OwotCi0Jc3Bpbl9sb2NrX2luaXQo Jm9jaGlwLT5sb2NrKTsKLQlvY2hpcC0+YmFzZSA9ICh2b2lkIF9faW9tZW0gKiliYXNlOwotCW9j aGlwLT52YWxpZF9pbnB1dCA9IDA7Ci0Jb2NoaXAtPnZhbGlkX291dHB1dCA9IDA7Ci0Jb2NoaXAt Pm1hc2tfb2Zmc2V0ID0gbWFza19vZmZzZXQ7Ci0Jb2NoaXAtPnNlY29uZGFyeV9pcnFfYmFzZSA9 IHNlY29uZGFyeV9pcnFfYmFzZTsKLQotCWdwaW9jaGlwX2FkZF9kYXRhKCZvY2hpcC0+Y2hpcCwg b2NoaXApOwotCi0JLyoKLQkgKiBNYXNrIGFuZCBjbGVhciBHUElPIGludGVycnVwdHMuCi0JICov Ci0Jd3JpdGVsKDAsIEdQSU9fRURHRV9DQVVTRShvY2hpcCkpOwotCXdyaXRlbCgwLCBHUElPX0VE R0VfTUFTSyhvY2hpcCkpOwotCXdyaXRlbCgwLCBHUElPX0xFVkVMX01BU0sob2NoaXApKTsKLQot CS8qIFNldHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMuIEVhY2ggY2hpcCBjYW4gaGF2ZSB1cCB0 byA0Ci0JICogaW50ZXJydXB0IGhhbmRsZXJzLCB3aXRoIGVhY2ggaGFuZGxlciBkZWFsaW5nIHdp dGggOCBHUElPCi0JICogcGlucy4gKi8KLQotCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKLQkJ aWYgKGlycXNbaV0pIHsKLQkJCWlycV9zZXRfY2hhaW5lZF9oYW5kbGVyX2FuZF9kYXRhKGlycXNb aV0sCi0JCQkJCQkJIGdwaW9faXJxX2hhbmRsZXIsCi0JCQkJCQkJIG9jaGlwKTsKLQkJfQotCX0K LQotCWdjID0gaXJxX2FsbG9jX2dlbmVyaWNfY2hpcCgib3Jpb25fZ3Bpb19pcnEiLCAyLAotCQkJ CSAgICBzZWNvbmRhcnlfaXJxX2Jhc2UsCi0JCQkJICAgIG9jaGlwLT5iYXNlLCBoYW5kbGVfbGV2 ZWxfaXJxKTsKLQlnYy0+cHJpdmF0ZSA9IG9jaGlwOwotCWN0ID0gZ2MtPmNoaXBfdHlwZXM7Ci0J Y3QtPnJlZ3MubWFzayA9IG9jaGlwLT5tYXNrX29mZnNldCArIEdQSU9fTEVWRUxfTUFTS19PRkY7 Ci0JY3QtPnR5cGUgPSBJUlFfVFlQRV9MRVZFTF9ISUdIIHwgSVJRX1RZUEVfTEVWRUxfTE9XOwot CWN0LT5jaGlwLmlycV9tYXNrID0gb3Jpb25fZ3Bpb19tYXNrX2lycTsKLQljdC0+Y2hpcC5pcnFf dW5tYXNrID0gb3Jpb25fZ3Bpb191bm1hc2tfaXJxOwotCWN0LT5jaGlwLmlycV9zZXRfdHlwZSA9 IGdwaW9faXJxX3NldF90eXBlOwotCWN0LT5jaGlwLm5hbWUgPSBvY2hpcC0+Y2hpcC5sYWJlbDsK LQotCWN0Kys7Ci0JY3QtPnJlZ3MubWFzayA9IG9jaGlwLT5tYXNrX29mZnNldCArIEdQSU9fRURH RV9NQVNLX09GRjsKLQljdC0+cmVncy5hY2sgPSBHUElPX0VER0VfQ0FVU0VfT0ZGOwotCWN0LT50 eXBlID0gSVJRX1RZUEVfRURHRV9SSVNJTkcgfCBJUlFfVFlQRV9FREdFX0ZBTExJTkc7Ci0JY3Qt PmNoaXAuaXJxX2FjayA9IGlycV9nY19hY2tfY2xyX2JpdDsKLQljdC0+Y2hpcC5pcnFfbWFzayA9 IG9yaW9uX2dwaW9fbWFza19pcnE7Ci0JY3QtPmNoaXAuaXJxX3VubWFzayA9IG9yaW9uX2dwaW9f dW5tYXNrX2lycTsKLQljdC0+Y2hpcC5pcnFfc2V0X3R5cGUgPSBncGlvX2lycV9zZXRfdHlwZTsK LQljdC0+aGFuZGxlciA9IGhhbmRsZV9lZGdlX2lycTsKLQljdC0+Y2hpcC5uYW1lID0gb2NoaXAt PmNoaXAubGFiZWw7Ci0KLQlpcnFfc2V0dXBfZ2VuZXJpY19jaGlwKGdjLCBJUlFfTVNLKG5ncGlv KSwgSVJRX0dDX0lOSVRfTUFTS19DQUNIRSwKLQkJCSAgICAgICBJUlFfTk9SRVFVRVNULCBJUlFf TEVWRUwgfCBJUlFfTk9QUk9CRSk7Ci0KLQkvKiBTZXR1cCBpcnEgZG9tYWluIG9uIHRvcCBvZiB0 aGUgZ2VuZXJpYyBjaGlwLiAqLwotCW9jaGlwLT5kb21haW4gPSBpcnFfZG9tYWluX2NyZWF0ZV9s ZWdhY3koTlVMTCwKLQkJCQkJCSBvY2hpcC0+Y2hpcC5uZ3BpbywKLQkJCQkJCSBvY2hpcC0+c2Vj b25kYXJ5X2lycV9iYXNlLAotCQkJCQkJIG9jaGlwLT5zZWNvbmRhcnlfaXJxX2Jhc2UsCi0JCQkJ CQkgJmlycV9kb21haW5fc2ltcGxlX29wcywKLQkJCQkJCSBvY2hpcCk7Ci0JaWYgKCFvY2hpcC0+ ZG9tYWluKQotCQlwYW5pYygiJXM6IGNvdWxkbid0IGFsbG9jYXRlIGlycSBkb21haW4gKERUKS5c biIsCi0JCSAgICAgIG9jaGlwLT5jaGlwLmxhYmVsKTsKLQotCW9yaW9uX2dwaW9fY2hpcF9jb3Vu dCsrOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvYWRk ci1tYXAuaCBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L2FkZHItbWFwLmgKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NmMwNjU2OWZlNS4uMDAwMDAwMDAwMDAwCi0t LSBhL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L2FkZHItbWFwLmgKKysrIC9kZXYv bnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRl L3BsYXQvYWRkci1tYXAuaAotICoKLSAqIE1hcnZlbGwgT3Jpb24gU29DIGFkZHJlc3MgbWFwIGhh bmRsaW5nLgotICoKLSAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSB2ZXJzaW9uIDIuICBUaGlzIHByb2dy YW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQotICogd2FycmFudHkgb2YgYW55IGtp bmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICovCi0KLSNpZm5kZWYgX19QTEFUX0FE RFJfTUFQX0gKLSNkZWZpbmUgX19QTEFUX0FERFJfTUFQX0gKLQotZXh0ZXJuIHN0cnVjdCBtYnVz X2RyYW1fdGFyZ2V0X2luZm8gb3Jpb25fbWJ1c19kcmFtX2luZm87Ci0KLXN0cnVjdCBvcmlvbl9h ZGRyX21hcF9jZmcgewotCWNvbnN0IGludCBudW1fd2luczsJLyogVG90YWwgbnVtYmVyIG9mIHdp bmRvd3MgKi8KLQljb25zdCBpbnQgcmVtYXBwYWJsZV93aW5zOwotCXZvaWQgX19pb21lbSAqYnJp ZGdlX3ZpcnRfYmFzZTsKLQlpbnQgaHdfaW9fY29oZXJlbmN5OwotCi0JLyogSWYgTlVMTCwgdGhl IGRlZmF1bHQgY3B1X3dpbl9jYW5fcmVtYXAgd2lsbCBiZSB1c2VkLCB1c2luZwotCSAgIHRoZSB2 YWx1ZSBpbiByZW1hcHBhYmxlX3dpbnMgKi8KLQlpbnQgKCpjcHVfd2luX2Nhbl9yZW1hcCkgKGNv bnN0IHN0cnVjdCBvcmlvbl9hZGRyX21hcF9jZmcgKmNmZywKLQkJCQkgIGNvbnN0IGludCB3aW4p OwotCS8qIElmIE5VTEwsIHRoZSBkZWZhdWx0IHdpbl9jZmdfYmFzZSB3aWxsIGJlIHVzZWQsIHVz aW5nIHRoZQotCSAgIHZhbHVlIGluIGJyaWRnZV92aXJ0X2Jhc2UgKi8KLQl2b2lkIF9faW9tZW0g Kigqd2luX2NmZ19iYXNlKSAoY29uc3Qgc3RydWN0IG9yaW9uX2FkZHJfbWFwX2NmZyAqY2ZnLAot CQkJCSBjb25zdCBpbnQgd2luKTsKLX07Ci0KLS8qCi0gKiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8g c2V0dXAgb25lIGFkZHJlc3MgbWFwcGluZy4KLSAqLwotc3RydWN0IG9yaW9uX2FkZHJfbWFwX2lu Zm8gewotCWNvbnN0IGludCB3aW47Ci0JY29uc3QgdTMyIGJhc2U7Ci0JY29uc3QgdTMyIHNpemU7 Ci0JY29uc3QgdTggdGFyZ2V0OwotCWNvbnN0IHU4IGF0dHI7Ci0JY29uc3QgaW50IHJlbWFwOwot fTsKLQotdm9pZCBfX2luaXQgb3Jpb25fY29uZmlnX3dpbnMoc3RydWN0IG9yaW9uX2FkZHJfbWFw X2NmZyAqY2ZnLAotCQkJICAgICAgY29uc3Qgc3RydWN0IG9yaW9uX2FkZHJfbWFwX2luZm8gKmlu Zm8pOwotCi12b2lkIF9faW5pdCBvcmlvbl9zZXR1cF9jcHVfd2luKGNvbnN0IHN0cnVjdCBvcmlv bl9hZGRyX21hcF9jZmcgKmNmZywKLQkJCQljb25zdCBpbnQgd2luLCBjb25zdCB1MzIgYmFzZSwK LQkJCQljb25zdCB1MzIgc2l6ZSwgY29uc3QgdTggdGFyZ2V0LAotCQkJCWNvbnN0IHU4IGF0dHIs IGNvbnN0IGludCByZW1hcCk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX3NldHVwX2NwdV9tYnVzX3Rh cmdldChjb25zdCBzdHJ1Y3Qgb3Jpb25fYWRkcl9tYXBfY2ZnICpjZmcsCi0JCQkJCWNvbnN0IHZv aWQgX19pb21lbSAqZGRyX3dpbmRvd19jcHVfYmFzZSk7Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L2NvbW1vbi5oIGIvYXJjaC9hcm0vcGxhdC1v cmlvbi9pbmNsdWRlL3BsYXQvY29tbW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQyYWFkOTVkMjBjYi4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5j bHVkZS9wbGF0L2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0g KiBhcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUvcGxhdC9jb21tb24uaAotICoKLSAqIE1hcnZl bGwgT3Jpb24gU29DIGNvbW1vbiBzZXR1cCBjb2RlIHVzZWQgYnkgZGlmZmVyZW50IG1hY2gtL2Nv bW1vbi5jCi0gKgotICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNpb24gMi4gIFRoaXMgcHJvZ3Jh bSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55Ci0gKiB3YXJyYW50eSBvZiBhbnkga2lu ZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKi8KLQotI2lmbmRlZiBfX1BMQVRfQ09N TU9OX0gKLSNpbmNsdWRlIDxsaW51eC9tdjY0M3h4X2V0aC5oPgotI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RhdGEvdXNiLWVoY2ktb3Jpb24uaD4KLQotc3RydWN0IG12X3NhdGFfcGxhdGZvcm1f ZGF0YTsKLQotdm9pZCBfX2luaXQgb3Jpb25fdWFydDBfaW5pdCh2b2lkIF9faW9tZW0gKm1lbWJh c2UsCi0JCQkgICAgIHJlc291cmNlX3NpemVfdCBtYXBiYXNlLAotCQkJICAgICB1bnNpZ25lZCBp bnQgaXJxLAotCQkJICAgICBzdHJ1Y3QgY2xrICpjbGspOwotCi12b2lkIF9faW5pdCBvcmlvbl91 YXJ0MV9pbml0KHZvaWQgX19pb21lbSAqbWVtYmFzZSwKLQkJCSAgICAgcmVzb3VyY2Vfc2l6ZV90 IG1hcGJhc2UsCi0JCQkgICAgIHVuc2lnbmVkIGludCBpcnEsCi0JCQkgICAgIHN0cnVjdCBjbGsg KmNsayk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX3VhcnQyX2luaXQodm9pZCBfX2lvbWVtICptZW1i YXNlLAotCQkJICAgICByZXNvdXJjZV9zaXplX3QgbWFwYmFzZSwKLQkJCSAgICAgdW5zaWduZWQg aW50IGlycSwKLQkJCSAgICAgc3RydWN0IGNsayAqY2xrKTsKLQotdm9pZCBfX2luaXQgb3Jpb25f dWFydDNfaW5pdCh2b2lkIF9faW9tZW0gKm1lbWJhc2UsCi0JCQkgICAgIHJlc291cmNlX3NpemVf dCBtYXBiYXNlLAotCQkJICAgICB1bnNpZ25lZCBpbnQgaXJxLAotCQkJICAgICBzdHJ1Y3QgY2xr ICpjbGspOwotCi12b2lkIF9faW5pdCBvcmlvbl9ydGNfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJh c2UsCi0JCQkgICB1bnNpZ25lZCBsb25nIGlycSk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX2dlMDBf aW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxhdGZvcm1fZGF0YSAqZXRoX2RhdGEsCi0JCQkgICAg dW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxLAotCQkJICAg IHVuc2lnbmVkIGxvbmcgaXJxX2VyciwKLQkJCSAgICB1bnNpZ25lZCBpbnQgdHhfY3N1bV9saW1p dCk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX2dlMDFfaW5pdChzdHJ1Y3QgbXY2NDN4eF9ldGhfcGxh dGZvcm1fZGF0YSAqZXRoX2RhdGEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJ ICAgIHVuc2lnbmVkIGxvbmcgaXJxLAotCQkJICAgIHVuc2lnbmVkIGludCB0eF9jc3VtX2xpbWl0 KTsKLQotdm9pZCBfX2luaXQgb3Jpb25fZ2UxMF9pbml0KHN0cnVjdCBtdjY0M3h4X2V0aF9wbGF0 Zm9ybV9kYXRhICpldGhfZGF0YSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkg ICAgdW5zaWduZWQgbG9uZyBpcnEpOwotCi12b2lkIF9faW5pdCBvcmlvbl9nZTExX2luaXQoc3Ry dWN0IG12NjQzeHhfZXRoX3BsYXRmb3JtX2RhdGEgKmV0aF9kYXRhLAotCQkJICAgIHVuc2lnbmVk IGxvbmcgbWFwYmFzZSwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycSk7Ci0KLXZvaWQgX19pbml0 IG9yaW9uX2kyY19pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgIHVuc2lnbmVkIGxv bmcgaXJxLAotCQkJICAgdW5zaWduZWQgbG9uZyBmcmVxX20pOwotCi12b2lkIF9faW5pdCBvcmlv bl9pMmNfMV9pbml0KHVuc2lnbmVkIGxvbmcgbWFwYmFzZSwKLQkJCSAgICAgdW5zaWduZWQgbG9u ZyBpcnEsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgZnJlcV9tKTsKLQotdm9pZCBfX2luaXQgb3Jp b25fc3BpX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlKTsKLQotdm9pZCBfX2luaXQgb3Jpb25f c3BpXzFfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2UpOwotCi12b2lkIF9faW5pdCBvcmlvbl94 b3IwX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlX2xvdywKLQkJCSAgICB1bnNpZ25lZCBsb25n IG1hcGJhc2VfaGlnaCwKLQkJCSAgICB1bnNpZ25lZCBsb25nIGlycV8wLAotCQkJICAgIHVuc2ln bmVkIGxvbmcgaXJxXzEpOwotCi12b2lkIF9faW5pdCBvcmlvbl94b3IxX2luaXQodW5zaWduZWQg bG9uZyBtYXBiYXNlX2xvdywKLQkJCSAgICB1bnNpZ25lZCBsb25nIG1hcGJhc2VfaGlnaCwKLQkJ CSAgICB1bnNpZ25lZCBsb25nIGlycV8wLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxXzEpOwot Ci12b2lkIF9faW5pdCBvcmlvbl9laGNpX2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJ ICAgIHVuc2lnbmVkIGxvbmcgaXJxLAotCQkJICAgIGVudW0gb3Jpb25fZWhjaV9waHlfdmVyIHBo eV92ZXJzaW9uKTsKLQotdm9pZCBfX2luaXQgb3Jpb25fZWhjaV8xX2luaXQodW5zaWduZWQgbG9u ZyBtYXBiYXNlLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBpcnEpOwotCi12b2lkIF9faW5pdCBv cmlvbl9laGNpXzJfaW5pdCh1bnNpZ25lZCBsb25nIG1hcGJhc2UsCi0JCQkgICAgICB1bnNpZ25l ZCBsb25nIGlycSk7Ci0KLXZvaWQgX19pbml0IG9yaW9uX3NhdGFfaW5pdChzdHJ1Y3QgbXZfc2F0 YV9wbGF0Zm9ybV9kYXRhICpzYXRhX2RhdGEsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBtYXBiYXNl LAotCQkJICAgIHVuc2lnbmVkIGxvbmcgaXJxKTsKLQotdm9pZCBfX2luaXQgb3Jpb25fY3J5cHRv X2luaXQodW5zaWduZWQgbG9uZyBtYXBiYXNlLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBzcmFt YmFzZSwKLQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc3JhbV9zaXplLAotCQkJICAgICAgdW5zaWdu ZWQgbG9uZyBpcnEpOwotCi12b2lkIF9faW5pdCBvcmlvbl9jbGtkZXZfYWRkKGNvbnN0IGNoYXIg KmNvbl9pZCwgY29uc3QgY2hhciAqZGV2X2lkLAotCQkJICAgICBzdHJ1Y3QgY2xrICpjbGspOwot Ci12b2lkIF9faW5pdCBvcmlvbl9jbGtkZXZfaW5pdChzdHJ1Y3QgY2xrICp0Y2xrKTsKLSNlbmRp ZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvaXJxLmggYi9h cmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUvcGxhdC9pcnEuaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggOTZiZTE5ZTliZDkzLi4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vcGxh dC1vcmlvbi9pbmNsdWRlL3BsYXQvaXJxLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBA Ci0vKgotICogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvaXJxLmgKLSAqCi0gKiBN YXJ2ZWxsIE9yaW9uIFNvQyBJUlEgaGFuZGxpbmcuCi0gKgotICogVGhpcyBmaWxlIGlzIGxpY2Vu c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl IHZlcnNpb24gMi4gIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55 Ci0gKiB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0g Ki8KLQotI2lmbmRlZiBfX1BMQVRfSVJRX0gKLSNkZWZpbmUgX19QTEFUX0lSUV9ICi0KLXZvaWQg b3Jpb25faXJxX2luaXQodW5zaWduZWQgaW50IGlycV9zdGFydCwgdm9pZCBfX2lvbWVtICptYXNr YWRkcik7Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9w bGF0L21wcC5oIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvbXBwLmgKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NDU1MmZlZTg4OS4uMDAwMDAwMDAwMDAwCi0tLSBh L2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L21wcC5oCisrKyAvZGV2L251bGwKQEAg LTEsMzQgKzAsMCBAQAotLyoKLSAqIGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L21w cC5oCi0gKgotICogTWFydmVsbCBPcmlvbiBTb0MgTVBQIGhhbmRsaW5nLgotICoKLSAqIFRoaXMg ZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YwotICogTGljZW5zZSB2ZXJzaW9uIDIuICBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlz IiB3aXRob3V0IGFueQotICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBv ciBpbXBsaWVkLgotICovCi0KLSNpZm5kZWYgX19QTEFUX01QUF9ICi0jZGVmaW5lIF9fUExBVF9N UFBfSAotCi0jZGVmaW5lIE1QUF9OVU0oeCkJKCh4KSAmIDB4ZmYpCi0jZGVmaW5lIE1QUF9TRUwo eCkJKCgoeCkgPj4gOCkgJiAweGYpCi0KLS8qIFRoaXMgaXMgdGhlIGdlbmVyaWMgTVBQIG1hY3Jv LCB3aXRob3V0IGFueSB2YXJpYW50IGluZm9ybWF0aW9uLgotICAgRWFjaCBtYWNoaW5lIGFyY2hp dGVjdHVyZSBpcyBleHBlY3RlZCB0byBleHRlbmQgdGhpcyB3aXRoIGZ1cnRoZXIKLSAgIGJpdCBm aWVsZHMgaW5kaWNhdGluZyB3aGljaCBNUFAgY29uZmlndXJhdGlvbnMgYXJlIHZhbGlkIGZvciBh Ci0gICBzcGVjaWZpYyB2YXJpYW50LiAqLwotCi0jZGVmaW5lIEdFTkVSSUNfTVBQKF9udW0sIF9z ZWwsIF9pbiwgX291dCkgKCBcCi0JLyogTVBQIG51bWJlciAqLwkJKChfbnVtKSAmIDB4ZmYpIHwg XAotCS8qIE1QUCBzZWxlY3QgdmFsdWUgKi8JCSgoKF9zZWwpICYgMHhmKSA8PCA4KSB8IFwKLQkv KiBtYXkgYmUgaW5wdXQgc2lnbmFsICovCSgoISEoX2luKSkgPDwgMTIpIHwgXAotCS8qIG1heSBi ZSBvdXRwdXQgc2lnbmFsICovCSgoISEoX291dCkpIDw8IDEzKSkKLQotI2RlZmluZSBNUFBfSU5Q VVRfTUFTSwkJR0VORVJJQ19NUFAoMCwgMHgwLCAxLCAwKQotI2RlZmluZSBNUFBfT1VUUFVUX01B U0sJCUdFTkVSSUNfTVBQKDAsIDB4MCwgMCwgMSkKLQotdm9pZCBfX2luaXQgb3Jpb25fbXBwX2Nv bmYodW5zaWduZWQgaW50ICptcHBfbGlzdCwgdW5zaWduZWQgaW50IHZhcmlhbnRfbWFzaywKLQkJ CSAgIHVuc2lnbmVkIGludCBtcHBfbWF4LCB2b2lkIF9faW9tZW0gKmRldl9idXMpOwotCi0jZW5k aWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L29yaW9uLWdw aW8uaCBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVkZS9wbGF0L29yaW9uLWdwaW8uaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVhMjk2M2UwZTBmLi4wMDAwMDAwMDAwMDAKLS0t IGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvb3Jpb24tZ3Bpby5oCisrKyAvZGV2 L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIGFyY2gvYXJtL3BsYXQtb3Jpb24vaW5jbHVk ZS9wbGF0L29yaW9uLWdwaW8uaAotICoKLSAqIE1hcnZlbGwgT3Jpb24gU29DIEdQSU8gaGFuZGxp bmcuCi0gKgotICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNpb24gMi4gIFRoaXMgcHJvZ3JhbSBp cyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55Ci0gKiB3YXJyYW50eSBvZiBhbnkga2luZCwg d2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKi8KLQotI2lmbmRlZiBfX1BMQVRfR1BJT19I Ci0jZGVmaW5lIF9fUExBVF9HUElPX0gKLQotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L2lycWRvbWFpbi5oPgotCi1zdHJ1 Y3QgZ3Bpb19kZXNjOwotCi0vKgotICogT3Jpb24tc3BlY2lmaWMgR1BJTyBBUEkgZXh0ZW5zaW9u cy4KLSAqLwotdm9pZCBvcmlvbl9ncGlvX3NldF91bnVzZWQodW5zaWduZWQgcGluKTsKLXZvaWQg b3Jpb25fZ3Bpb19zZXRfYmxpbmsodW5zaWduZWQgcGluLCBpbnQgYmxpbmspOwotaW50IG9yaW9u X2dwaW9fbGVkX2JsaW5rX3NldChzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjLCBpbnQgc3RhdGUsCi0J dW5zaWduZWQgbG9uZyAqZGVsYXlfb24sIHVuc2lnbmVkIGxvbmcgKmRlbGF5X29mZik7Ci0KLSNk ZWZpbmUgR1BJT19JTlBVVF9PSwkJKDEgPDwgMCkKLSNkZWZpbmUgR1BJT19PVVRQVVRfT0sJCSgx IDw8IDEpCi12b2lkIG9yaW9uX2dwaW9fc2V0X3ZhbGlkKHVuc2lnbmVkIHBpbiwgaW50IG1vZGUp OwotCi0vKiBJbml0aWFsaXplIGdwaW9saWIuICovCi12b2lkIF9faW5pdCBvcmlvbl9ncGlvX2lu aXQoaW50IGdwaW9fYmFzZSwgaW50IG5ncGlvLAotCQkJICAgIHZvaWQgX19pb21lbSAqYmFzZSwg aW50IG1hc2tfb2Zmc2V0LAotCQkJICAgIGludCBzZWNvbmRhcnlfaXJxX2Jhc2UsCi0JCQkgICAg aW50IGlycVs0XSk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vcmlvbi9p bmNsdWRlL3BsYXQvdGltZS5oIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNsdWRlL3BsYXQvdGlt ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzUyN2U0MTdjNjIuLjAwMDAwMDAw MDAwMAotLS0gYS9hcmNoL2FybS9wbGF0LW9yaW9uL2luY2x1ZGUvcGxhdC90aW1lLmgKKysrIC9k ZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vKgotICogYXJjaC9hcm0vcGxhdC1vcmlvbi9pbmNs dWRlL3BsYXQvdGltZS5oCi0gKgotICogTWFydmVsbCBPcmlvbiBTb0MgdGltZSBoYW5kbGluZy4K LSAqCi0gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgdmVyc2lvbiAyLiAgVGhpcyBwcm9ncmFtIGlzIGxp Y2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKLSAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0 aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqLwotCi0jaWZuZGVmIF9fUExBVF9USU1FX0gKLSNk ZWZpbmUgX19QTEFUX1RJTUVfSAotCi12b2lkIG9yaW9uX3RpbWVfc2V0X2Jhc2Uodm9pZCBfX2lv bWVtICp0aW1lcl9iYXNlKTsKLQotdm9pZCBvcmlvbl90aW1lX2luaXQodm9pZCBfX2lvbWVtICpi cmlkZ2VfYmFzZSwgdTMyIGJyaWRnZV90aW1lcjFfY2xyX21hc2ssCi0JCSAgICAgdW5zaWduZWQg aW50IGlycSwgdW5zaWduZWQgaW50IHRjbGspOwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vcGxhdC1vcmlvbi9pcnEuYyBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vaXJxLmMKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNjNiMjhiMDBhYy4uMDAwMDAwMDAwMDAwCi0tLSBh L2FyY2gvYXJtL3BsYXQtb3Jpb24vaXJxLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBA Ci0vKgotICogYXJjaC9hcm0vcGxhdC1vcmlvbi9pcnEuYwotICoKLSAqIE1hcnZlbGwgT3Jpb24g U29DIElSUSBoYW5kbGluZy4KLSAqCi0gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgdmVyc2lvbiAyLiAg VGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkKLSAqIHdhcnJhbnR5 IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqLwotCi0jaW5jbHVk ZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxp bnV4L2lycS5oPgotI2luY2x1ZGUgPGxpbnV4L2lycWRvbWFpbi5oPgotI2luY2x1ZGUgPGxpbnV4 L2lvLmg+Ci0jaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgotI2luY2x1ZGUgPGxpbnV4L29m X2lycS5oPgotI2luY2x1ZGUgPGFzbS9leGNlcHRpb24uaD4KLSNpbmNsdWRlIDxwbGF0L2lycS5o PgotI2luY2x1ZGUgPHBsYXQvb3Jpb24tZ3Bpby5oPgotCi12b2lkIF9faW5pdCBvcmlvbl9pcnFf aW5pdCh1bnNpZ25lZCBpbnQgaXJxX3N0YXJ0LCB2b2lkIF9faW9tZW0gKm1hc2thZGRyKQotewot CXN0cnVjdCBpcnFfY2hpcF9nZW5lcmljICpnYzsKLQlzdHJ1Y3QgaXJxX2NoaXBfdHlwZSAqY3Q7 Ci0KLQkvKgotCSAqIE1hc2sgYWxsIGludGVycnVwdHMgaW5pdGlhbGx5LgotCSAqLwotCXdyaXRl bCgwLCBtYXNrYWRkcik7Ci0KLQlnYyA9IGlycV9hbGxvY19nZW5lcmljX2NoaXAoIm9yaW9uX2ly cSIsIDEsIGlycV9zdGFydCwgbWFza2FkZHIsCi0JCQkJICAgIGhhbmRsZV9sZXZlbF9pcnEpOwot CWN0ID0gZ2MtPmNoaXBfdHlwZXM7Ci0JY3QtPmNoaXAuaXJxX21hc2sgPSBpcnFfZ2NfbWFza19j bHJfYml0OwotCWN0LT5jaGlwLmlycV91bm1hc2sgPSBpcnFfZ2NfbWFza19zZXRfYml0OwotCWly cV9zZXR1cF9nZW5lcmljX2NoaXAoZ2MsIElSUV9NU0soMzIpLCBJUlFfR0NfSU5JVF9NQVNLX0NB Q0hFLAotCQkJICAgICAgIElSUV9OT1JFUVVFU1QsIElSUV9MRVZFTCB8IElSUV9OT1BST0JFKTsK LX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb3Jpb24vbXBwLmMgYi9hcmNoL2FybS9wbGF0 LW9yaW9uL21wcC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzNlY2VkYzcyMWQu LjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9wbGF0LW9yaW9uL21wcC5jCisrKyAvZGV2L251 bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIGFyY2gvYXJtL3BsYXQtb3Jpb24vbXBwLmMKLSAq Ci0gKiBNUFAgZnVuY3Rpb25zIGZvciBNYXJ2ZWxsIG9yaW9uIFNvQ3MKLSAqCi0gKiBUaGlzIGZp bGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMK LSAqIExpY2Vuc2UgdmVyc2lvbiAyLiAgVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIg d2l0aG91dCBhbnkKLSAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3Ig aW1wbGllZC4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L21idXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5o PgotI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxwbGF0L29yaW9u LWdwaW8uaD4KLSNpbmNsdWRlIDxwbGF0L21wcC5oPgotCi0vKiBBZGRyZXNzIG9mIHRoZSBpdGgg TVBQIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLXN0YXRpYyBfX2luaXQgdm9pZCBfX2lvbWVtICptcHBf Y3RybF9hZGRyKHVuc2lnbmVkIGludCBpLAotCQkJCQkgIHZvaWQgX19pb21lbSAqZGV2X2J1cykK LXsKLQlyZXR1cm4gZGV2X2J1cyArIChpKSAqIDQ7Ci19Ci0KLQotdm9pZCBfX2luaXQgb3Jpb25f bXBwX2NvbmYodW5zaWduZWQgaW50ICptcHBfbGlzdCwgdW5zaWduZWQgaW50IHZhcmlhbnRfbWFz aywKLQkJCSAgIHVuc2lnbmVkIGludCBtcHBfbWF4LCB2b2lkIF9faW9tZW0gKmRldl9idXMpCi17 Ci0JdW5zaWduZWQgaW50IG1wcF9ucl9yZWdzID0gKDEgKyBtcHBfbWF4LzgpOwotCXUzMiBtcHBf Y3RybFs4XTsKLQlpbnQgaTsKLQotCXByaW50ayhLRVJOX0RFQlVHICJpbml0aWFsIE1QUCByZWdz OiIpOwotCWlmIChtcHBfbnJfcmVncyA+IEFSUkFZX1NJWkUobXBwX2N0cmwpKSB7Ci0JCXByaW50 ayhLRVJOX0VSUiAib3Jpb25fbXBwX2NvbmY6IGludmFsaWQgbXBwX21heFxuIik7Ci0JCXJldHVy bjsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbXBwX25yX3JlZ3M7IGkrKykgewotCQltcHBfY3Ry bFtpXSA9IHJlYWRsKG1wcF9jdHJsX2FkZHIoaSwgZGV2X2J1cykpOwotCQlwcmludGsoIiAlMDh4 IiwgbXBwX2N0cmxbaV0pOwotCX0KLQlwcmludGsoIlxuIik7Ci0KLQlmb3IgKCA7ICptcHBfbGlz dDsgbXBwX2xpc3QrKykgewotCQl1bnNpZ25lZCBpbnQgbnVtID0gTVBQX05VTSgqbXBwX2xpc3Qp OwotCQl1bnNpZ25lZCBpbnQgc2VsID0gTVBQX1NFTCgqbXBwX2xpc3QpOwotCQlpbnQgc2hpZnQs IGdwaW9fbW9kZTsKLQotCQlpZiAobnVtID4gbXBwX21heCkgewotCQkJcHJpbnRrKEtFUk5fRVJS ICJvcmlvbl9tcHBfY29uZjogaW52YWxpZCBNUFAgIgotCQkJCQkibnVtYmVyICgldSlcbiIsIG51 bSk7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAodmFyaWFudF9tYXNrICYmICEoKm1wcF9saXN0 ICYgdmFyaWFudF9tYXNrKSkgewotCQkJcHJpbnRrKEtFUk5fV0FSTklORwotCQkJICAgICAgICJv cmlvbl9tcHBfY29uZjogcmVxdWVzdGVkIE1QUCV1IGNvbmZpZyAiCi0JCQkgICAgICAgInVuYXZh aWxhYmxlIG9uIHRoaXMgaGFyZHdhcmVcbiIsIG51bSk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0J CXNoaWZ0ID0gKG51bSAmIDcpIDw8IDI7Ci0JCW1wcF9jdHJsW251bSAvIDhdICY9IH4oMHhmIDw8 IHNoaWZ0KTsKLQkJbXBwX2N0cmxbbnVtIC8gOF0gfD0gc2VsIDw8IHNoaWZ0OwotCi0JCWdwaW9f bW9kZSA9IDA7Ci0JCWlmICgqbXBwX2xpc3QgJiBNUFBfSU5QVVRfTUFTSykKLQkJCWdwaW9fbW9k ZSB8PSBHUElPX0lOUFVUX09LOwotCQlpZiAoKm1wcF9saXN0ICYgTVBQX09VVFBVVF9NQVNLKQot CQkJZ3Bpb19tb2RlIHw9IEdQSU9fT1VUUFVUX09LOwotCi0JCW9yaW9uX2dwaW9fc2V0X3ZhbGlk KG51bSwgZ3Bpb19tb2RlKTsKLQl9Ci0KLQlwcmludGsoS0VSTl9ERUJVRyAiICBmaW5hbCBNUFAg cmVnczoiKTsKLQlmb3IgKGkgPSAwOyBpIDwgbXBwX25yX3JlZ3M7IGkrKykgewotCQl3cml0ZWwo bXBwX2N0cmxbaV0sIG1wcF9jdHJsX2FkZHIoaSwgZGV2X2J1cykpOwotCQlwcmludGsoIiAlMDh4 IiwgbXBwX2N0cmxbaV0pOwotCX0KLQlwcmludGsoIlxuIik7Ci19CmRpZmYgLS1naXQgYS9hcmNo L2FybS9wbGF0LW9yaW9uL3BjaWUuYyBiL2FyY2gvYXJtL3BsYXQtb3Jpb24vcGNpZS5jCmluZGV4 IDhiOGMwNmQyZTljNC4uZTgxN2YyMDQwOWM0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9y aW9uL3BjaWUuYworKysgYi9hcmNoL2FybS9wbGF0LW9yaW9uL3BjaWUuYwpAQCAtMTMsNyArMTMs NiBAQAogI2luY2x1ZGUgPGxpbnV4L21idXMuaD4KICNpbmNsdWRlIDxhc20vbWFjaC9wY2kuaD4K ICNpbmNsdWRlIDxwbGF0L3BjaWUuaD4KLSNpbmNsdWRlIDxwbGF0L2FkZHItbWFwLmg+CiAjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb3Jp b24vdGltZS5jIGIvYXJjaC9hcm0vcGxhdC1vcmlvbi90aW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDUwOWQ0ODI0ZGMxYy4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL3Bs YXQtb3Jpb24vdGltZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLS8qCi0gKiBh cmNoL2FybS9wbGF0LW9yaW9uL3RpbWUuYwotICoKLSAqIE1hcnZlbGwgT3Jpb24gU29DIHRpbWVy IGhhbmRsaW5nLgotICoKLSAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSB2ZXJzaW9uIDIuICBUaGlzIHBy b2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQotICogd2FycmFudHkgb2YgYW55 IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICoKLSAqIFRpbWVyIDAgaXMgdXNl ZCBhcyBmcmVlLXJ1bm5pbmcgY2xvY2tzb3VyY2UsIHdoaWxlIHRpbWVyIDEgaXMKLSAqIHVzZWQg YXMgY2xvY2tfZXZlbnRfZGV2aWNlLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K LSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgotI2luY2x1ZGUgPGxpbnV4L2Nsb2NrY2hpcHMuaD4K LSNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KLSNpbmNsdWRlIDxsaW51eC9pcnEuaD4KLSNp bmNsdWRlIDxsaW51eC9zY2hlZF9jbG9jay5oPgotI2luY2x1ZGUgPHBsYXQvdGltZS5oPgotI2lu Y2x1ZGUgPGFzbS9kZWxheS5oPgotCi0vKgotICogTUJ1cyBicmlkZ2UgYmxvY2sgcmVnaXN0ZXJz LgotICovCi0jZGVmaW5lIEJSSURHRV9DQVVTRV9PRkYJMHgwMTEwCi0jZGVmaW5lIEJSSURHRV9N QVNLX09GRgkJMHgwMTE0Ci0jZGVmaW5lICBCUklER0VfSU5UX1RJTUVSMAkgMHgwMDAyCi0jZGVm aW5lICBCUklER0VfSU5UX1RJTUVSMQkgMHgwMDA0Ci0KLQotLyoKLSAqIFRpbWVyIGJsb2NrIHJl Z2lzdGVycy4KLSAqLwotI2RlZmluZSBUSU1FUl9DVFJMX09GRgkJMHgwMDAwCi0jZGVmaW5lICBU SU1FUjBfRU4JCSAweDAwMDEKLSNkZWZpbmUgIFRJTUVSMF9SRUxPQURfRU4JIDB4MDAwMgotI2Rl ZmluZSAgVElNRVIxX0VOCQkgMHgwMDA0Ci0jZGVmaW5lICBUSU1FUjFfUkVMT0FEX0VOCSAweDAw MDgKLSNkZWZpbmUgVElNRVIwX1JFTE9BRF9PRkYJMHgwMDEwCi0jZGVmaW5lIFRJTUVSMF9WQUxf T0ZGCQkweDAwMTQKLSNkZWZpbmUgVElNRVIxX1JFTE9BRF9PRkYJMHgwMDE4Ci0jZGVmaW5lIFRJ TUVSMV9WQUxfT0ZGCQkweDAwMWMKLQotCi0vKgotICogU29DLXNwZWNpZmljIGRhdGEuCi0gKi8K LXN0YXRpYyB2b2lkIF9faW9tZW0gKmJyaWRnZV9iYXNlOwotc3RhdGljIHUzMiBicmlkZ2VfdGlt ZXIxX2Nscl9tYXNrOwotc3RhdGljIHZvaWQgX19pb21lbSAqdGltZXJfYmFzZTsKLQotCi0vKgot ICogTnVtYmVyIG9mIHRpbWVyIHRpY2tzIHBlciBqaWZmeS4KLSAqLwotc3RhdGljIHUzMiB0aWNr c19wZXJfamlmZnk7Ci0KLQotLyoKLSAqIE9yaW9uJ3Mgc2NoZWRfY2xvY2sgaW1wbGVtZW50YXRp b24uIEl0IGhhcyBhIHJlc29sdXRpb24gb2YKLSAqIGF0IGxlYXN0IDcuNW5zICgxMzNNSHogVENM SykuCi0gKi8KLQotc3RhdGljIHU2NCBub3RyYWNlIG9yaW9uX3JlYWRfc2NoZWRfY2xvY2sodm9p ZCkKLXsKLQlyZXR1cm4gfnJlYWRsKHRpbWVyX2Jhc2UgKyBUSU1FUjBfVkFMX09GRik7Ci19Ci0K LS8qCi0gKiBDbG9ja2V2ZW50IGhhbmRsaW5nLgotICovCi1zdGF0aWMgaW50Ci1vcmlvbl9jbGtl dnRfbmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGRlbHRhLCBzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2 aWNlICpkZXYpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1MzIgdTsKLQotCWlmIChkZWx0 YSA9PSAwKQotCQlyZXR1cm4gLUVUSU1FOwotCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCi0J LyoKLQkgKiBDbGVhciBhbmQgZW5hYmxlIGNsb2NrZXZlbnQgdGltZXIgaW50ZXJydXB0LgotCSAq LwotCXdyaXRlbChicmlkZ2VfdGltZXIxX2Nscl9tYXNrLCBicmlkZ2VfYmFzZSArIEJSSURHRV9D QVVTRV9PRkYpOwotCi0JdSA9IHJlYWRsKGJyaWRnZV9iYXNlICsgQlJJREdFX01BU0tfT0ZGKTsK LQl1IHw9IEJSSURHRV9JTlRfVElNRVIxOwotCXdyaXRlbCh1LCBicmlkZ2VfYmFzZSArIEJSSURH RV9NQVNLX09GRik7Ci0KLQkvKgotCSAqIFNldHVwIG5ldyBjbG9ja2V2ZW50IHRpbWVyIHZhbHVl LgotCSAqLwotCXdyaXRlbChkZWx0YSwgdGltZXJfYmFzZSArIFRJTUVSMV9WQUxfT0ZGKTsKLQot CS8qCi0JICogRW5hYmxlIHRoZSB0aW1lci4KLQkgKi8KLQl1ID0gcmVhZGwodGltZXJfYmFzZSAr IFRJTUVSX0NUUkxfT0ZGKTsKLQl1ID0gKHUgJiB+VElNRVIxX1JFTE9BRF9FTikgfCBUSU1FUjFf RU47Ci0Jd3JpdGVsKHUsIHRpbWVyX2Jhc2UgKyBUSU1FUl9DVFJMX09GRik7Ci0KLQlsb2NhbF9p cnFfcmVzdG9yZShmbGFncyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBvcmlvbl9j bGtldnRfc2h1dGRvd24oc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQotewotCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Ci0JdTMyIHU7Ci0KLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0KLQkv KiBEaXNhYmxlIHRpbWVyICovCi0JdSA9IHJlYWRsKHRpbWVyX2Jhc2UgKyBUSU1FUl9DVFJMX09G Rik7Ci0Jd3JpdGVsKHUgJiB+VElNRVIxX0VOLCB0aW1lcl9iYXNlICsgVElNRVJfQ1RSTF9PRkYp OwotCi0JLyogRGlzYWJsZSB0aW1lciBpbnRlcnJ1cHQgKi8KLQl1ID0gcmVhZGwoYnJpZGdlX2Jh c2UgKyBCUklER0VfTUFTS19PRkYpOwotCXdyaXRlbCh1ICYgfkJSSURHRV9JTlRfVElNRVIxLCBi cmlkZ2VfYmFzZSArIEJSSURHRV9NQVNLX09GRik7Ci0KLQkvKiBBQ0sgcGVuZGluZyB0aW1lciBp bnRlcnJ1cHQgKi8KLQl3cml0ZWwoYnJpZGdlX3RpbWVyMV9jbHJfbWFzaywgYnJpZGdlX2Jhc2Ug KyBCUklER0VfQ0FVU0VfT0ZGKTsKLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKLQotCXJl dHVybiAwOwotfQotCi1zdGF0aWMgaW50IG9yaW9uX2Nsa2V2dF9zZXRfcGVyaW9kaWMoc3RydWN0 IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdTMy IHU7Ci0KLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0KLQkvKiBTZXR1cCB0aW1lciB0byBmaXJl IGF0IDEvSFogaW50ZXJ2YWxzICovCi0Jd3JpdGVsKHRpY2tzX3Blcl9qaWZmeSAtIDEsIHRpbWVy X2Jhc2UgKyBUSU1FUjFfUkVMT0FEX09GRik7Ci0Jd3JpdGVsKHRpY2tzX3Blcl9qaWZmeSAtIDEs IHRpbWVyX2Jhc2UgKyBUSU1FUjFfVkFMX09GRik7Ci0KLQkvKiBFbmFibGUgdGltZXIgaW50ZXJy dXB0ICovCi0JdSA9IHJlYWRsKGJyaWRnZV9iYXNlICsgQlJJREdFX01BU0tfT0ZGKTsKLQl3cml0 ZWwodSB8IEJSSURHRV9JTlRfVElNRVIxLCBicmlkZ2VfYmFzZSArIEJSSURHRV9NQVNLX09GRik7 Ci0KLQkvKiBFbmFibGUgdGltZXIgKi8KLQl1ID0gcmVhZGwodGltZXJfYmFzZSArIFRJTUVSX0NU UkxfT0ZGKTsKLQl3cml0ZWwodSB8IFRJTUVSMV9FTiB8IFRJTUVSMV9SRUxPQURfRU4sIHRpbWVy X2Jhc2UgKyBUSU1FUl9DVFJMX09GRik7Ci0KLQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Ci0K LQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2Ugb3Jpb25f Y2xrZXZ0ID0gewotCS5uYW1lCQkJPSAib3Jpb25fdGljayIsCi0JLmZlYXR1cmVzCQk9IENMT0NL X0VWVF9GRUFUX09ORVNIT1QgfAotCQkJCSAgQ0xPQ0tfRVZUX0ZFQVRfUEVSSU9ESUMsCi0JLnJh dGluZwkJCT0gMzAwLAotCS5zZXRfbmV4dF9ldmVudAkJPSBvcmlvbl9jbGtldnRfbmV4dF9ldmVu dCwKLQkuc2V0X3N0YXRlX3NodXRkb3duCT0gb3Jpb25fY2xrZXZ0X3NodXRkb3duLAotCS5zZXRf c3RhdGVfcGVyaW9kaWMJPSBvcmlvbl9jbGtldnRfc2V0X3BlcmlvZGljLAotCS5zZXRfc3RhdGVf b25lc2hvdAk9IG9yaW9uX2Nsa2V2dF9zaHV0ZG93biwKLQkudGlja19yZXN1bWUJCT0gb3Jpb25f Y2xrZXZ0X3NodXRkb3duLAotfTsKLQotc3RhdGljIGlycXJldHVybl90IG9yaW9uX3RpbWVyX2lu dGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCi17Ci0JLyoKLQkgKiBBQ0sgdGltZXIgaW50 ZXJydXB0IGFuZCBjYWxsIGV2ZW50IGhhbmRsZXIuCi0JICovCi0Jd3JpdGVsKGJyaWRnZV90aW1l cjFfY2xyX21hc2ssIGJyaWRnZV9iYXNlICsgQlJJREdFX0NBVVNFX09GRik7Ci0Jb3Jpb25fY2xr ZXZ0LmV2ZW50X2hhbmRsZXIoJm9yaW9uX2Nsa2V2dCk7Ci0KLQlyZXR1cm4gSVJRX0hBTkRMRUQ7 Ci19Ci0KLXZvaWQgX19pbml0Ci1vcmlvbl90aW1lX3NldF9iYXNlKHZvaWQgX19pb21lbSAqX3Rp bWVyX2Jhc2UpCi17Ci0JdGltZXJfYmFzZSA9IF90aW1lcl9iYXNlOwotfQotCi1zdGF0aWMgdW5z aWduZWQgbG9uZyBvcmlvbl9kZWxheV90aW1lcl9yZWFkKHZvaWQpCi17Ci0JcmV0dXJuIH5yZWFk bCh0aW1lcl9iYXNlICsgVElNRVIwX1ZBTF9PRkYpOwotfQotCi1zdGF0aWMgc3RydWN0IGRlbGF5 X3RpbWVyIG9yaW9uX2RlbGF5X3RpbWVyID0gewotCS5yZWFkX2N1cnJlbnRfdGltZXIgPSBvcmlv bl9kZWxheV90aW1lcl9yZWFkLAotfTsKLQotdm9pZCBfX2luaXQKLW9yaW9uX3RpbWVfaW5pdCh2 b2lkIF9faW9tZW0gKl9icmlkZ2VfYmFzZSwgdTMyIF9icmlkZ2VfdGltZXIxX2Nscl9tYXNrLAot CQl1bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25lZCBpbnQgdGNsaykKLXsKLQl1MzIgdTsKLQotCS8q Ci0JICogU2V0IFNvQy1zcGVjaWZpYyBkYXRhLgotCSAqLwotCWJyaWRnZV9iYXNlID0gX2JyaWRn ZV9iYXNlOwotCWJyaWRnZV90aW1lcjFfY2xyX21hc2sgPSBfYnJpZGdlX3RpbWVyMV9jbHJfbWFz azsKLQotCXRpY2tzX3Blcl9qaWZmeSA9ICh0Y2xrICsgSFovMikgLyBIWjsKLQotCW9yaW9uX2Rl bGF5X3RpbWVyLmZyZXEgPSB0Y2xrOwotCXJlZ2lzdGVyX2N1cnJlbnRfdGltZXJfZGVsYXkoJm9y aW9uX2RlbGF5X3RpbWVyKTsKLQotCS8qCi0JICogU2V0IHNjYWxlIGFuZCB0aW1lciBmb3Igc2No ZWRfY2xvY2suCi0JICovCi0Jc2NoZWRfY2xvY2tfcmVnaXN0ZXIob3Jpb25fcmVhZF9zY2hlZF9j bG9jaywgMzIsIHRjbGspOwotCi0JLyoKLQkgKiBTZXR1cCBmcmVlLXJ1bm5pbmcgY2xvY2tzb3Vy Y2UgdGltZXIgKGludGVycnVwdHMKLQkgKiBkaXNhYmxlZCkuCi0JICovCi0Jd3JpdGVsKDB4ZmZm ZmZmZmYsIHRpbWVyX2Jhc2UgKyBUSU1FUjBfVkFMX09GRik7Ci0Jd3JpdGVsKDB4ZmZmZmZmZmYs IHRpbWVyX2Jhc2UgKyBUSU1FUjBfUkVMT0FEX09GRik7Ci0JdSA9IHJlYWRsKGJyaWRnZV9iYXNl ICsgQlJJREdFX01BU0tfT0ZGKTsKLQl3cml0ZWwodSAmIH5CUklER0VfSU5UX1RJTUVSMCwgYnJp ZGdlX2Jhc2UgKyBCUklER0VfTUFTS19PRkYpOwotCXUgPSByZWFkbCh0aW1lcl9iYXNlICsgVElN RVJfQ1RSTF9PRkYpOwotCXdyaXRlbCh1IHwgVElNRVIwX0VOIHwgVElNRVIwX1JFTE9BRF9FTiwg dGltZXJfYmFzZSArIFRJTUVSX0NUUkxfT0ZGKTsKLQljbG9ja3NvdXJjZV9tbWlvX2luaXQodGlt ZXJfYmFzZSArIFRJTUVSMF9WQUxfT0ZGLCAib3Jpb25fY2xvY2tzb3VyY2UiLAotCQl0Y2xrLCAz MDAsIDMyLCBjbG9ja3NvdXJjZV9tbWlvX3JlYWRsX2Rvd24pOwotCi0JLyoKLQkgKiBTZXR1cCBj bG9ja2V2ZW50IHRpbWVyIChpbnRlcnJ1cHQtZHJpdmVuKS4KLQkgKi8KLQlpZiAocmVxdWVzdF9p cnEoaXJxLCBvcmlvbl90aW1lcl9pbnRlcnJ1cHQsIElSUUZfVElNRVIsICJvcmlvbl90aWNrIiwK LQkJCU5VTEwpKQotCQlwcl9lcnIoIkZhaWxlZCB0byByZXF1ZXN0IGlycSAldSAob3Jpb25fdGlj aylcbiIsIGlycSk7Ci0Jb3Jpb25fY2xrZXZ0LmNwdW1hc2sgPSBjcHVtYXNrX29mKDApOwotCWNs b2NrZXZlbnRzX2NvbmZpZ19hbmRfcmVnaXN0ZXIoJm9yaW9uX2Nsa2V2dCwgdGNsaywgMSwgMHhm ZmZmZmZmZSk7Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9LY29uZmlnIGIvZHJpdmVycy9h dGEvS2NvbmZpZwppbmRleCAyOGNhODU2ZWNjNzUuLjQzNGNjZTNlZmQ5NiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9hdGEvS2NvbmZpZworKysgYi9kcml2ZXJzL2F0YS9LY29uZmlnCkBAIC00NzEsOCAr NDcxLDcgQEAgY29uZmlnIFNBVEFfSElHSEJBTksKIAogY29uZmlnIFNBVEFfTVYKIAl0cmlzdGF0 ZSAiTWFydmVsbCBTQVRBIHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBQQ0kgfHwgQVJDSF9ET1ZFIHx8 IEFSQ0hfTVY3OFhYMCB8fCBcCi0JCSAgIEFSQ0hfTVZFQlUgfHwgQVJDSF9PUklPTjVYIHx8IENP TVBJTEVfVEVTVAorCWRlcGVuZHMgb24gUENJIHx8IEFSQ0hfTVZFQlUgfHwgQVJDSF9PUklPTjVY IHx8IENPTVBJTEVfVEVTVAogCXNlbGVjdCBHRU5FUklDX1BIWQogCXNlbGVjdCBTQVRBX0hPU1QK IAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L0tjb25maWcgYi9kcml2ZXJzL21t Yy9ob3N0L0tjb25maWcKaW5kZXggNGYwNjBkM2U1NjM2Li5kMDY5MDM2MzUzMzUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZworKysgYi9kcml2ZXJzL21tYy9ob3N0L0tjb25m aWcKQEAgLTMzMCw3ICszMzAsNyBAQCBjb25maWcgTU1DX1NESENJX0VTREhDX0lNWAogCiBjb25m aWcgTU1DX1NESENJX0RPVkUKIAl0cmlzdGF0ZSAiU0RIQ0kgc3VwcG9ydCBvbiBNYXJ2ZWxsJ3Mg RG92ZSBTb0MiCi0JZGVwZW5kcyBvbiBBUkNIX0RPVkUgfHwgTUFDSF9ET1ZFIHx8IENPTVBJTEVf VEVTVAorCWRlcGVuZHMgb24gTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24g TU1DX1NESENJX1BMVEZNCiAJc2VsZWN0IE1NQ19TREhDSV9JT19BQ0NFU1NPUlMKIAloZWxwCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcgYi9kcml2ZXJzL3BjaS9j b250cm9sbGVyL0tjb25maWcKaW5kZXggZDI0NmJiZTM3OTQ4Li43ZTU1MGM0NzRiN2EgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZworKysgYi9kcml2ZXJzL3BjaS9j b250cm9sbGVyL0tjb25maWcKQEAgLTE5Nyw3ICsxOTcsNyBAQCBjb25maWcgUENJX0xPT05HU09O CiAKIGNvbmZpZyBQQ0lfTVZFQlUKIAl0cmlzdGF0ZSAiTWFydmVsbCBFQlUgUENJZSBjb250cm9s bGVyIgotCWRlcGVuZHMgb24gQVJDSF9NVkVCVSB8fCBBUkNIX0RPVkUgfHwgQ09NUElMRV9URVNU CisJZGVwZW5kcyBvbiBBUkNIX01WRUJVIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gTVZF QlVfTUJVUwogCWRlcGVuZHMgb24gQVJNCiAJZGVwZW5kcyBvbiBPRgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9waHkvbWFydmVsbC9LY29uZmlnIGIvZHJpdmVycy9waHkvbWFydmVsbC9LY29uZmlnCmlu ZGV4IGJjY2Q3MmRjY2I3Ny4uYzI5ZDJkMjhhZTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9t YXJ2ZWxsL0tjb25maWcKKysrIGIvZHJpdmVycy9waHkvbWFydmVsbC9LY29uZmlnCkBAIC03Nyw3 ICs3Nyw3IEBAIGNvbmZpZyBQSFlfTVZFQlVfQ1AxMTBfVVRNSQogCiBjb25maWcgUEhZX01WRUJV X1NBVEEKIAlkZWZfYm9vbCB5Ci0JZGVwZW5kcyBvbiBBUkNIX0RPVkUgfHwgTUFDSF9ET1ZFIHx8 IE1BQ0hfS0lSS1dPT0QKKwlkZXBlbmRzIG9uIE1BQ0hfRE9WRSB8fCBNQUNIX0tJUktXT09ECiAJ ZGVwZW5kcyBvbiBPRgogCXNlbGVjdCBHRU5FUklDX1BIWQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L3J0Yy9LY29uZmlnIGIvZHJpdmVycy9ydGMvS2NvbmZpZwppbmRleCA3NjdmMTYxNDFiNjcuLjA2 MzZiOWVhZDJjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvS2NvbmZpZworKysgYi9kcml2ZXJz L3J0Yy9LY29uZmlnCkBAIC0xNzAzLDcgKzE3MDMsNyBAQCBjb25maWcgUlRDX0RSVl9TVEFSRklS RQogCiBjb25maWcgUlRDX0RSVl9NVgogCXRyaXN0YXRlICJNYXJ2ZWxsIFNvQyBSVEMiCi0JZGVw ZW5kcyBvbiBBUkNIX0RPVkUgfHwgQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKKwlkZXBlbmRz IG9uIEFSQ0hfTVZFQlUgfHwgQ09NUElMRV9URVNUCiAJaGVscAogCSAgSWYgeW91IHNheSB5ZXMg aGVyZSB5b3Ugd2lsbCBnZXQgc3VwcG9ydCBmb3IgdGhlIGluLWNoaXAgUlRDCiAJICB0aGF0IGNh biBiZSBmb3VuZCBpbiBzb21lIG9mIE1hcnZlbGwncyBTb0MgZGV2aWNlcywgc3VjaCBhcwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9zb2MvTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9NYWtlZmlsZQppbmRl eCBjOWU2ODkwODBjZWIuLjY0MTFiOTZkNTg0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zb2MvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9zb2MvTWFrZWZpbGUKQEAgLTksNyArOSw2IEBAIG9iai0kKENP TkZJR19BUkNIX0FUOTEpCQkrPSBhdG1lbC8KIG9iai15CQkJCSs9IGJjbS8KIG9iai0kKENPTkZJ R19BUkNIX0NBTkFBTikJKz0gY2FuYWFuLwogb2JqLSQoQ09ORklHX0VQOTNYWF9TT0MpICAgICAg ICArPSBjaXJydXMvCi1vYmotJChDT05GSUdfQVJDSF9ET1ZFKQkJKz0gZG92ZS8KIG9iai0kKENP TkZJR19NQUNIX0RPVkUpCQkrPSBkb3ZlLwogb2JqLXkJCQkJKz0gZnNsLwogb2JqLXkJCQkJKz0g ZnVqaXRzdS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnIGIvZHJpdmVycy90 aGVybWFsL0tjb25maWcKaW5kZXggODEwZWVjY2VkZmJhLi44Y2VmOWI2NTgxOTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdGhlcm1hbC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9LY29uZmln CkBAIC0zOTEsNyArMzkxLDcgQEAgY29uZmlnIEtJUktXT09EX1RIRVJNQUwKIAogY29uZmlnIERP VkVfVEhFUk1BTAogCXRyaXN0YXRlICJUZW1wZXJhdHVyZSBzZW5zb3Igb24gTWFydmVsbCBEb3Zl IFNvQ3MiCi0JZGVwZW5kcyBvbiBBUkNIX0RPVkUgfHwgTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVT VAorCWRlcGVuZHMgb24gTUFDSF9ET1ZFIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gSEFT X0lPTUVNCiAJZGVwZW5kcyBvbiBPRgogCWhlbHAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hk b2cvS2NvbmZpZyBiL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZwppbmRleCA0NWJmNjdmMWFlMjgu LmRkZjg4YjA3Y2UzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCisrKyBi L2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZwpAQCAtNjkwLDcgKzY5MCw3IEBAIGNvbmZpZyBLM19S VElfV0FUQ0hET0cKIAogY29uZmlnIE9SSU9OX1dBVENIRE9HCiAJdHJpc3RhdGUgIk9yaW9uIHdh dGNoZG9nIgotCWRlcGVuZHMgb24gQVJDSF9PUklPTjVYIHx8IEFSQ0hfRE9WRSB8fCBNQUNIX0RP VkUgfHwgQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKKwlkZXBlbmRzIG9uIEFSQ0hfT1JJT041 WCB8fCBNQUNIX0RPVkUgfHwgQVJDSF9NVkVCVSB8fCBDT01QSUxFX1RFU1QKIAlkZXBlbmRzIG9u IEFSTQogCXNlbGVjdCBXQVRDSERPR19DT1JFCiAJaGVscApkaWZmIC0tZ2l0IGEvc291bmQvc29j L2tpcmt3b29kL0tjb25maWcgYi9zb3VuZC9zb2Mva2lya3dvb2QvS2NvbmZpZwppbmRleCA5MjQw NzJlNDAyYzguLmQ1OWM1YmIwYjM5MSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2tpcmt3b29kL0tj b25maWcKKysrIGIvc291bmQvc29jL2tpcmt3b29kL0tjb25maWcKQEAgLTMsNyArMyw3IEBAIG1l bnUgIktpcmt3b29kIgogCiBjb25maWcgU05EX0tJUktXT09EX1NPQwogCXRyaXN0YXRlICJTb0Mg QXVkaW8gZm9yIHRoZSBNYXJ2ZWxsIEtpcmt3b29kIGFuZCBEb3ZlIGNoaXBzIgotCWRlcGVuZHMg b24gQVJDSF9ET1ZFIHx8IEFSQ0hfTVZFQlUgfHwgQ09NUElMRV9URVNUCisJZGVwZW5kcyBvbiBB UkNIX01WRUJVIHx8IENPTVBJTEVfVEVTVAogCWhlbHAKIAkgIFNheSBZIG9yIE0gaWYgeW91IHdh bnQgdG8gYWRkIHN1cHBvcnQgZm9yIGNvZGVjcyBhdHRhY2hlZCB0bwogCSAgdGhlIEtpcmt3b29k IEkyUyBpbnRlcmZhY2UuIFlvdSB3aWxsIGFsc28gbmVlZCB0byBzZWxlY3QgdGhlCi0tIAoyLjUz LjAKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1w aHkK