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 2B3ECC433EF for ; Wed, 15 Dec 2021 11:20:01 +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:Message-ID:Mime-Version:References: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: List-Owner; bh=ThP5ztmFedB/9/4LBTvs6FYdxgTaIsZsOpuXE9likYQ=; b=SAp0NCH0G2kg26 2t2Hsqx8L1rUIQQpYTTUBR1lUjEGZtBoLZhDvYEDzzWwZuopmNqMj1YQJcTHHugTKyr40xIYAXXuk lCxPk9AwDQl7Z72S2VOmTI93+432Nc5v+kPVoViwJkyyyX6yLdRIlr3Gz8fqu4+jjw+kFkE4dNXV4 WgWhBFcfkVkNiQgiGnPId97jxvHvjzSfmjdr1bfk6yJsH5XEBCL/7d19S0PRiPCwAQuEEbHEntZRj uXjRCUBtrhzaEaQMyryjZjH1WMHo4TGNv/83ds6sXFswZtdY37a1GCOYWnYXQheH+Pwi6qjDLUlbf l1VfXmo4eOIC8kG70S5w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxSKG-000VQT-C3; Wed, 15 Dec 2021 11:20:00 +0000 Received: from regular1.263xmail.com ([211.150.70.204]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxS7d-000P0I-81; Wed, 15 Dec 2021 11:07:01 +0000 Received: from localhost (unknown [192.168.167.16]) by regular1.263xmail.com (Postfix) with ESMTP id DB17B570; Wed, 15 Dec 2021 19:06:46 +0800 (CST) X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-ADDR-CHECKED4: 1 X-SKE-CHECKED: 1 X-ABS-CHECKED: 1 X-ANTISPAM-LEVEL: 2 Received: from hp1216 (unknown [58.22.7.114]) by smtp.263.net (postfix) whith ESMTP id P14355T140412169729792S1639566406096863_; Wed, 15 Dec 2021 19:06:47 +0800 (CST) X-IP-DOMAINF: 1 X-RL-SENDER: zyf@rock-chips.com X-SENDER: zyf@rock-chips.com X-LOGIN-NAME: zyf@rock-chips.com X-FST-TO: jbx6244@gmail.com X-RCPT-COUNT: 15 X-LOCAL-RCPT-COUNT: 3 X-MUTI-DOMAIN-COUNT: 0 X-SENDER-IP: 58.22.7.114 X-ATTACHMENT-NUM: 0 X-UNIQUE-TAG: X-System-Flag: 0 Date: Wed, 15 Dec 2021 19:06:46 +0800 Organization: =?utf-8?B?55Ge6Iqv5b6u55S15a2Q?= From: =?utf-8?B?6LW15Luq5bOw?= To: "Johan Jonker" , =?utf-8?B?SGVpa29TdMO8Ym5lcg==?= Cc: robh+dt , kishon , "Vinod Koul" , "Philipp Zabel" , Kever.Yang , =?utf-8?B?6ZmI5Lqu?= , linux-phy , linux-arm-kernel , linux-rockchip , devicetree , linux-kernel , "Lee Jones" Subject: Re: Re: [RFC PATCH v4 3/4] phy: rockchip: add naneng combo phy for RK3568 References: <20211208185449.16763-1-jbx6244@gmail.com>, <20211208185449.16763-4-jbx6244@gmail.com>, <79ef86db-fc79-0ef1-c5cc-d4b5770b693b@gmail.com> X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7.2.22.188[cn] Mime-Version: 1.0 Message-ID: <2021121519061471710337@rock-chips.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211215_030657_912696_B483EE5C X-CRM114-Status: GOOD ( 22.01 ) 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 SGkgSm9oYW7vvIwKCj5IaSBZaWZlbmcsCj4KPlNvbWUgY29tbWVudHMuLi5IYXZlIGEgbG9vayBp ZiBpdCBpcyB1c2VmdWwuCj4KPlRoZSBrZXkgcXVlc3Rpb24gaXM6IGRvZXMgdGhpcyBSRkMgc2Vy aWUgd29yaz8KPklzIHNvbWVvbmUgYWJsZSB0byBnaXZlIGEgdGVzdCByZXBvcnQ/Cj4KPkNvdWxk IHlvdSBwcm9kdWNlIGEgdmVyc2lvbiA1IHNlcmllPwo+LSBJbmNsdWRlIGxlZS5qb25lc0BsaW5h cm8ub3JnIGZvciBNRkQgc3lzY29uLgo+ICBBZGQgIkFja2VkIGJ5IiB0byBwYXRjaDoKPiAgZHQt YmluZGluZ3M6IG1mZDogc3lzY29uOiBhZGQgbmFuZW5nIGNvbWJvIHBoeSByZWdpc3RlciBjb21w YXRpYmxlCj4KPi0gQ2hhbmdlIGRlc2NyaXB0aW9uIGZvciByb2NrY2hpcCxlbmFibGUtc3NjIGZv ciBQQ0lFLCBTQVRBIGFuZCBVU0IgaW4KPnBhdGNoOgo+ICBkdC1iaW5kaW5nczogcGh5OiByb2Nr Y2hpcDogQWRkIE5hbmVuZyBjb21ibyBQSFkgYmluZGluZ3MKPgo+ICBBZGQgY2hhbmdlIGxvZyBm b3Igcm9iK2R0IGZvciBhIG5ldyByZXZpZXcgdGhhdCBleHBsYWlucyB3aHkgaGlzCj4gICJSZXZp ZXdlZCBieSIgdGFnIHdhcyBub3QgYWRkZWQuCj4KPi0gSWYgeW91IGxpa2UgaW5jbHVkZSBzb21l IGNoYW5nZSBzdWdnZXN0aW9ucyBmcm9tIHZlcnNpb24gNC4KPgo+T24gMTIvOC8yMSA3OjU0IFBN LCBKb2hhbiBKb25rZXIgd3JvdGU6Cj4+IEZyb206IFlpZmVuZyBaaGFvIDx5aWZlbmcuemhhb0By b2NrLWNoaXBzLmNvbT4KPj4gCj4+IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIGNvbWJvIHBoeSBk cml2ZXIgZm9yIFJvY2tjaGlwIFNvQ3MKPj4gd2l0aCBOYU5lbmcgSVAgYmxvY2suIFRoaXMgcGh5 IGNhbiBiZSB1c2VkIGFzIHBjaWUtcGh5LCB1c2IzLXBoeSwKPj4gc2F0YS1waHkgb3Igc2dtaWkt cGh5Lgo+Cj5Gcm9tIFJvY2tjaGlwIFJLMzU2OCBEYXRhc2hlZXQgVjEuMC0yMDIwMTIxMC5wZGYg cGFnZSAxNi0xNzoKPgo+TXVsdGktUEhZMCBzdXBwb3J0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGlu dGVyZmFjZXMKPlVTQjMuMCBPVEcKPlNBVEEwCj4KPk11bHRpLVBIWTEgc3VwcG9ydCBvbmUgb2Yg dGhlIGZvbGxvd2luZyBpbnRlcmZhY2VzCj5VU0IzLjAgSG9zdAo+U0FUQTEKPlFTR01JSS9TR01J SQo+Cj5NdWx0aS1QSFkyIHN1cHBvcnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlcwo+ UENJZTIuMQo+U0FUQTIKPlFTR01JSS9TR01JSQo+Cj49PT0KPgo+VGhpcyBkcml2ZXIgb3IgZG9j dW1lbnRhdGlvbiBuZXZlciBtZW50aW9ucyB0aGUgcGh5IGNvbWJpbmF0aW9ucyB0aGF0Cj5hcmUg cG9zc2libGUgYW5kIHdpdGggd2hpY2ggRFQgcHJvcGVydGllcy4gQW55IHN1Z2dlc3Rpb25zPwo+ Cj49PT0KPk1pc3NpbmcgZ21hYyBTR01JSSBzdXBwb3J0Pwo+Cj5ldGhlcm5ldDogc3RtaWNybzog c3RtbWFjOiBBZGQgU0dNSUkvUVNHTUlJIHN1cHBvcnQgZm9yIFJLMzU2OAo+aHR0cHM6Ly9naXRo dWIuY29tL3JvY2tjaGlwLWxpbnV4L2tlcm5lbC9jb21taXQvMWZjN2NiZmU5ZTIyN2M3MDBjNjky ZjFkZTMxMzc5MTRiM2VhNmNhNgo+Cj5uZXQ6IHN0bW1hYzogZHdtYWMtcms6IFNldCBYUENTIHBv cnQxIHNwZWVkIGZvciBHTUFDMSBTR01JSSBtb2RlCj5odHRwczovL2dpdGh1Yi5jb20vcm9ja2No aXAtbGludXgva2VybmVsL2NvbW1pdC8wYjE1NDhmMjAyNTQ1MzljNGZjYzI0Zjc5YTUwNTgxZGZl MTY0Y2MzCj4KPj09PQo+SXQgbG9va3MgbGlrZSBTR01JSSBjb25uZWN0cyBib3RoIHRvIHBoeTEg YW5kIHBoeTIgPz8KPkhvdyB0byBkbyB0aGF0IGluIERUID8/IEFueSBleGFtcGxlL3N1Z2dlc3Rp b25zID8/Cj4KPglnbWFjMDogZXRoZXJuZXRAZmUyYTAwMDAgewo+Pz8/PyBQSFlfVFlQRV9TR01J SQo+CX0KPgo+CWdtYWMxOiBldGhlcm5ldEBmZTAxMDAwMCB7Cj4/Pz8/IFBIWV9UWVBFX1NHTUlJ Cj4JfQpJIGRvbid0IGtub3cgYWJvdXQgdGhhdC4gCkl0IHdpbGwgYmUgcHJvY2Vzc2VkIHdoZW4g dGhlIHBlcnNvbiBpbiBjaGFyZ2Ugb2YgdGhlIG1vZHVsZSB1cHN0cmVtIHRoZSBjb2RlLgo+Cj4J c2F0YTA6IHNhdGFAZmMwMDAwMDAgewo+CQlwaHlzID0gPCZjb21icGh5MCBQSFlfVFlQRV9TQVRB PjsKPgkJcGh5LW5hbWVzID0gInNhdGEtcGh5IjsKPgl9Cj4Jc2F0YTE6IHNhdGFAZmM0MDAwMDAg ewo+CQlwaHlzID0gPCZjb21icGh5MSBQSFlfVFlQRV9TQVRBPjsKPgkJcGh5LW5hbWVzID0gInNh dGEtcGh5IjsKPgl9Cj4Jc2F0YTI6IHNhdGFAZmM4MDAwMDAgewo+CQlwaHlzID0gPCZjb21icGh5 MiBQSFlfVFlQRV9TQVRBPjsKPgkJcGh5LW5hbWVzID0gInNhdGEtcGh5IjsKPgl9Cj4JdXNiZHJk M18wOiB1c2JAZmNjMDAwMDAgewo+CQlwaHlzID0gPCZ1MnBoeTBfb3RnPiwgPCZjb21icGh5MCBQ SFlfVFlQRV9VU0IzPjsKPgkJcGh5LW5hbWVzID0gInVzYjItcGh5IiwgInVzYjMtcGh5IjsKPgl9 Cj4JdXNiZHJkM18xOiB1c2JAZmQwMDAwMDAgewo+CQlwaHlzID0gPCZ1MnBoeTBfaG9zdD4sIDwm Y29tYnBoeTEgUEhZX1RZUEVfVVNCMz47Cj4JCXBoeS1uYW1lcyA9ICJ1c2IyLXBoeSIsICJ1c2Iz LXBoeSI7Cj4JfQo+CXBjaWUyeDE6IHBjaWVAZmUyNjAwMDAgewo+CQlwaHlzID0gPCZjb21icGh5 MiBQSFlfVFlQRV9QQ0lFPjsKPgkJcGh5LW5hbWVzID0gInBjaWUtcGh5IjsKPgl9Cj4KPj4gCj4+ IFNpZ25lZC1vZmYtYnk6IFlpZmVuZyBaaGFvIDx5aWZlbmcuemhhb0Byb2NrLWNoaXBzLmNvbT4K Pj4gU2lnbmVkLW9mZi1ieTogSm9oYW4gSm9ua2VyIDxqYng2MjQ0QGdtYWlsLmNvbT4KPj4gLS0t Cj4+IAo+PiBURVNUIENPTVBJTEVEIE9OTFkhCj4+IERyaXZlciBub3QgdmVyaWZpZWQgd2l0aCBo YXJkd2FyZSEKPj4gLS0tCj4+IAo+PiBDaGFuZ2VkIFY0Ogo+PiAgIHJlc3R5bGUKPj4gICBhZGQg ZGV2bV9yZXNldF9jb250cm9sX2FycmF5X2dldCgpCj4+ICAgcmVtb3ZlIGNsayBzdHJ1Y3R1cmUK Pj4gICBjaGFuZ2UgcmVmY2xrIERUIHBhcnNlCj4+ICAgY2hhbmdlIGRldl9lcnIgbWVzc2FnZQo+ PiAgIGFkZCBkb3QgdG8gcGhyYXNlCj4+ICAgYWRkIGV4dF9yZWZjbGsgdmFyaWFibGUKPj4gICBh ZGQgZW5hYmxlX3NzYyB2YXJpYWJsZQo+PiAgIHJlbmFtZSByb2NrY2hpcF9jb21icGh5X3BhcmFt X3dyaXRlCj4+ICAgcmVtb3ZlIHBhcmFtX3JlYWQKPj4gICByZXBsYWNlIHJvY2tjaGlwLW5hbmVu Zy1jb21icGh5IGRyaXZlciBuYW1lCj4+IC0tLQo+PiAgZHJpdmVycy9waHkvcm9ja2NoaXAvS2Nv bmZpZyAgICAgICAgICAgICAgICAgIHwgICA4ICsKPj4gIGRyaXZlcnMvcGh5L3JvY2tjaGlwL01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCj4+ICAuLi4vcm9ja2NoaXAvcGh5LXJvY2tj aGlwLW5hbmVuZy1jb21icGh5LmMgICAgfCA2MDggKysrKysrKysrKysrKysrKysrCj4+ICAzIGZp bGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMKPj4gCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9LY29uZmlnIGIvZHJpdmVycy9waHkvcm9j a2NoaXAvS2NvbmZpZwo+PiBpbmRleCBlODEyYWRhZDcuLjkwMjJlMzk1YyAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL3BoeS9yb2Nr Y2hpcC9LY29uZmlnCj4+IEBAIC02Niw2ICs2NiwxNCBAQCBjb25maWcgUEhZX1JPQ0tDSElQX0lO Tk9fRFNJRFBIWQo+PiAgCSAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgUm9ja2NoaXAgTUlQ SS9MVkRTL1RUTCBQSFkgd2l0aAo+PiAgCSAgSW5ub3NpbGljb24gSVAgYmxvY2suCj4+ICAKPj4g K2NvbmZpZyBQSFlfUk9DS0NISVBfTkFORU5HX0NPTUJPX1BIWQo+PiArCXRyaXN0YXRlICJSb2Nr Y2hpcCBOQU5FTkcgQ09NQk8gUEhZIERyaXZlciIKPj4gKwlkZXBlbmRzIG9uIEFSQ0hfUk9DS0NI SVAgJiYgT0YKPj4gKwlzZWxlY3QgR0VORVJJQ19QSFkKPj4gKwloZWxwCj4+ICsJICBFbmFibGUg dGhpcyB0byBzdXBwb3J0IHRoZSBSb2NrY2hpcCBQQ0llL1VTQjMuMC9TQVRBL1FTR01JSQo+PiAr CSAgY29tYm8gUEhZIHdpdGggTmFOZW5nIElQIGJsb2NrLgo+PiArCj4+ICBjb25maWcgUEhZX1JP Q0tDSElQX1BDSUUKPj4gIAl0cmlzdGF0ZSAiUm9ja2NoaXAgUENJZSBQSFkgRHJpdmVyIgo+PiAg CWRlcGVuZHMgb24gKEFSQ0hfUk9DS0NISVAgJiYgT0YpIHx8IENPTVBJTEVfVEVTVAo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9yb2Nr Y2hpcC9NYWtlZmlsZQo+PiBpbmRleCBmMGVlYzIxMmIuLmE1MDQxZWZiNSAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvTWFrZWZpbGUKPj4gKysrIGIvZHJpdmVycy9waHkvcm9j a2NoaXAvTWFrZWZpbGUKPj4gQEAgLTYsNiArNiw3IEBAIG9iai0kKENPTkZJR19QSFlfUk9DS0NI SVBfSU5OT19DU0lEUEhZKQkrPSBwaHktcm9ja2NoaXAtaW5uby1jc2lkcGh5Lm8KPj4gIG9iai0k KENPTkZJR19QSFlfUk9DS0NISVBfSU5OT19EU0lEUEhZKQkrPSBwaHktcm9ja2NoaXAtaW5uby1k c2lkcGh5Lm8KPj4gIG9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfSU5OT19IRE1JKQkrPSBwaHkt cm9ja2NoaXAtaW5uby1oZG1pLm8KPj4gIG9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfSU5OT19V U0IyKQkrPSBwaHktcm9ja2NoaXAtaW5uby11c2IyLm8KPj4gK29iai0kKENPTkZJR19QSFlfUk9D S0NISVBfTkFORU5HX0NPTUJPX1BIWSkJKz0gcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5Lm8K Pj4gIG9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfUENJRSkJCSs9IHBoeS1yb2NrY2hpcC1wY2ll Lm8KPj4gIG9iai0kKENPTkZJR19QSFlfUk9DS0NISVBfVFlQRUMpCSs9IHBoeS1yb2NrY2hpcC10 eXBlYy5vCj4+ICBvYmotJChDT05GSUdfUEhZX1JPQ0tDSElQX1VTQikJCSs9IHBoeS1yb2NrY2hp cC11c2Iubwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlw LW5hbmVuZy1jb21icGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFu ZW5nLWNvbWJwaHkuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAu LjU2YWFlZWQ2Mgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlw L3BoeS1yb2NrY2hpcC1uYW5lbmctY29tYnBoeS5jCj4+IEBAIC0wLDAgKzEsNjA4IEBACj4+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+PiArLyoKPj4gKyAqIFJvY2tjaGlw IFBJUEUgVVNCMy4wIFBDSUUgU0FUQSBjb21icGh5IGRyaXZlcgo+PiArICoKPj4gKyAqIENvcHly aWdodCAoQykgMjAyMSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby4sIEx0ZC4KPj4gKyAqLwo+PiAr Cj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4K Pj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNj b24uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9kZXZpY2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4+ICsjaW5jbHVkZSA8 bGludXgvcmVnbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPj4gKyNpbmNsdWRl IDxkdC1iaW5kaW5ncy9waHkvcGh5Lmg+Cj4+ICsKPj4gKyNkZWZpbmUgQklUX1dSSVRFQUJMRV9T SElGVAkJMTYKPj4gKyNkZWZpbmUgUkVGX0NMT0NLXzI0TUh6CQkJMjQwMDAwMDAKPj4gKyNkZWZp bmUgUkVGX0NMT0NLXzI1TUh6CQkJMjUwMDAwMDAKPj4gKyNkZWZpbmUgUkVGX0NMT0NLXzEwME1I egkJMTAwMDAwMDAwCj4+ICsvKiBSSzM1NjggVDIyIENPTUJPIFBIWSBSRUcgKi8KPj4gKyNkZWZp bmUgUkszNTY4X1QyMl9QSFlSRUc1CQkweDE0Cj4+ICsjZGVmaW5lIFQyMl9QSFlSRUc1X1BMTF9E SVZfTUFTSwlHRU5NQVNLKDcsIDYpCj4+ICsjZGVmaW5lIFQyMl9QSFlSRUc1X1BMTF9ESVZfU0hJ RlQJNgo+PiArI2RlZmluZSBUMjJfUEhZUkVHNV9QTExfRElWXzIJCTEKPj4gKwo+PiArI2RlZmlu ZSBSSzM1NjhfVDIyX1BIWVJFRzYJCTB4MTgKPj4gKyNkZWZpbmUgVDIyX1BIWVJFRzZfVFhfUlRF Uk1fTUFTSwlHRU5NQVNLKDcsIDQpCj4+ICsjZGVmaW5lIFQyMl9QSFlSRUc2X1RYX1JURVJNX1NI SUZUCTQKPj4gKyNkZWZpbmUgVDIyX1BIWVJFRzZfVFhfUlRFUk1fNTBPSE0JMHg4Cj4+ICsjZGVm aW5lIFQyMl9QSFlSRUc2X1JYX1JURVJNX01BU0sJR0VOTUFTSygzLCAwKQo+PiArI2RlZmluZSBU MjJfUEhZUkVHNl9SWF9SVEVSTV9TSElGVAkwCj4+ICsjZGVmaW5lIFQyMl9QSFlSRUc2X1JYX1JU RVJNXzQ0T0hNCTB4Rgo+PiArCj4+ICsjZGVmaW5lIFJLMzU2OF9UMjJfUEhZUkVHNwkJMHgxQwo+ PiArI2RlZmluZSBUMjJfUEhZUkVHN19TU0NfRU4JCUJJVCg0KQo+PiArCj4+ICsjZGVmaW5lIFJL MzU2OF9UMjJfUEhZUkVHMTAJCTB4MjgKPj4gKyNkZWZpbmUgVDIyX1BIWVJFRzEwX1NVX1RSSU1f MF83CTB4RjAKPj4gKwo+PiArI2RlZmluZSBSSzM1NjhfVDIyX1BIWVJFRzExCQkweDJDCj4+ICsj ZGVmaW5lIFQyMl9QSFlSRUcxMV9QTExfTFBGX0FESgkweDQKPj4gKwo+PiArI2RlZmluZSBSSzM1 NjhfVDIyX1BIWVJFRzEyCQkweDMwCj4+ICsjZGVmaW5lIFQyMl9QSFlSRUcxMl9SRVNJU1RFUl9N QVNLCUdFTk1BU0soNSwgNCkKPj4gKyNkZWZpbmUgVDIyX1BIWVJFRzEyX1JFU0lTVEVSX1NISUZU CTB4NAo+PiArI2RlZmluZSBUMjJfUEhZUkVHMTJfUkVTSVNURVJfSElHSF9aCTB4Mwo+PiArI2Rl ZmluZSBUMjJfUEhZUkVHMTJfQ0tSQ1ZfQU1QMAkJQklUKDcpCj4+ICsKPj4gKyNkZWZpbmUgUksz NTY4X1QyMl9QSFlSRUcxMwkJMHgzNAo+PiArI2RlZmluZSBUMjJfUEhZUkVHMTNfQ0tSQ1ZfQU1Q MQkJQklUKDApCj4+ICsKPj4gKyNkZWZpbmUgUkszNTY4X1QyMl9QSFlSRUcxNAkJMHgzOAo+PiAr I2RlZmluZSBUMjJfUEhZUkVHMTRfQ1RMRV9FTgkJQklUKDApCj4+ICsjZGVmaW5lIFQyMl9QSFlS RUcxNF9TU0NfQ05UX01BU0sJR0VOTUFTSyg3LCA2KQo+PiArI2RlZmluZSBUMjJfUEhZUkVHMTRf U1NDX0NOVF9TSElGVAk2Cj4+ICsjZGVmaW5lIFQyMl9QSFlSRUcxNF9TU0NfQ05UX1ZBTFVFCTB4 MQo+PiArCj4+ICsjZGVmaW5lIFJLMzU2OF9UMjJfUEhZUkVHMTUJCTB4M0MKPj4gKyNkZWZpbmUg VDIyX1BIWVJFRzE1X1NTQ19DTlRfVkFMVUUJMHg1Zgo+PiArCj4+ICsjZGVmaW5lIFJLMzU2OF9U MjJfUEhZUkVHMTcJCTB4NDQKPj4gKyNkZWZpbmUgVDIyX1BIWVJFRzE3X1BMTF9MT09QCQkweDMy Cj4+ICsKCj4KPj4gKyNkZWZpbmUgUkszNTY4X1QyMl9QSFlSRUczMQkJMHg3Qwo+PiArI2RlZmlu ZSBUMjJfUEhZUkVHMzFfU1NDX01BU0sJCUdFTk1BU0soNywgNCkKPj4gKyNkZWZpbmUgVDIyX1BI WVJFRzMxX1NTQ19ESVJfU0hJRlQJNAo+PiArI2RlZmluZSBUMjJfUEhZUkVHMzFfU1NDX1VQV0FS RAkJMAo+PiArI2RlZmluZSBUMjJfUEhZUkVHMzFfU1NDX0RPV05XQVJECTEKPj4gKyNkZWZpbmUg VDIyX1BIWVJFRzMxX1NTQ19PRkZTRVRfU0hJRlQJNgo+PiArI2RlZmluZSBUMjJfUEhZUkVHMzFf U1NDX09GRlNFVF81MDBQUE0JMQoKPgoKPldoZXJlIGluIHRoZSBUUk0gY2FuIEkgZmluZCB0aGlz IHJlZyBkZXNjcmlwdGlvbj8KCj5DYW4ndCBmaW5kIG1hdGNoaW5nIGJpdHM/Pz8KCj4KCj5Sb2Nr Y2hpcCBSSzM1NjggVFJNIFBhcnQyIFYxLjAtMjAyMTAxMTEucGRmCgo+cGFnZSAxOTY1ID8/PwoK PgoKPk11bHRpLVBIWV9SZWdpc3RlcjAzMgoKPkFkZHJlc3M6IE9wZXJhdGlvbmFsIEJhc2UgKyBv ZmZzZXQgKDB4MDA3QykKCj4KCj5SRVNbNzowXQoKPlswXTogYnlwYXNzIHRoZSBtb2RlIG9mIHBk X2NrMTAwbSBjb250cm9sbGluZyBDS0RSVgoKPjEnYjA6IENLRFJWIGlzIG9uIG9ubHkgaW4gUENJ RSBtb2RlCgo+MSdiMTogQ0tEUlYgaXMgY29udHJvbGxlZCBieSBja3JlZl9zcmNbMTowXTsKCj5b MV06IHNlbGVjdCBzaWduYWwgb2YgcGxsX2xvY2sgdG8gVFgvUlgKCj4xJ2IwOiBwbGxfbG9jayBp cyBjb250cm9sbGVkIGJ5IHJhdGVbMTowXQoKPjEnYjE6IHBsbF9sb2NrIGlzIG5vdCBjb250cm9s bGVkIGJ5IHJhdGVbMTowXQoKPlsyXTogYnlwYXNzIHRoZSBtb2RlIG9mIHJhdGVbMTowXSBjb250 cm9sbGluZyBwbGxfbG9ja19wY3MKCj4xJ2IwOiBwbGxfbG9ja19wY3MgaXMgY29udHJvbGxlZCBi eSByYXRlWzE6MF0KCj4xJ2IxOiBwbGxfbG9ja19wY3MgaXMgbm90IGNvbnRyb2xsZWQgYnkgcmF0 ZVsxOjBdCgo+Wzc6M106IFJlc2VydmVkCgpUaGUgSVAgZG9jdW1lbnQgaGFzIGJlZW4gdXBkYXRl ZCB3aXRoIG5ldyBpbmZvcm1hdGlvbiBhcyBmb2xsb3dzOgpbM106IDUwb2htIHRlcm1pbmF0aW9u IGRpc2FibGUgc2lnbmFsIGluIENLUkVQL04gVFggbW9kZSwgMDogbm90IGRpc2FibGUsIDE6CmRp c2FibGUgbW9kZQpbNTo0XTogc2VsZWN0IHNpZ25hbCBvZiBTU0MgZGVyZWN0aW9uOiAwMDogdXB3 YXJkIHNwcmVhZCBzcGVjdHJ1bTsgMDE6IGRvd253YXJkCnNwcmVhZCBzcGVjdHJ1bSwgMTA6IG5v IHNwcmVhZCBzcGVjdHJ1bSwgMTE6IGlsbGVnYWwKWzc6Nl06IFNTQyBvZmZzZXQgY29tcGVuc2F0 aW9uLiAwMDogMHBwbTsgMDE6ICs1MDBwcG07IDEwLzExOiAtNTAwcHBtCgo+PiArCj4+ICsjZGVm aW5lIFJLMzU2OF9UMjJfUEhZUkVHMzIJCTB4ODAKPj4gKyNkZWZpbmUgVDIyX1BIWVJFRzMyX1BM TF9LVkNPX01BU0sJR0VOTUFTSyg0LCAyKQo+PiArI2RlZmluZSBUMjJfUEhZUkVHMzJfUExMX0tW Q09fU0hJRlQJMgo+PiArI2RlZmluZSBUMjJfUEhZUkVHMzJfUExMX0tWQ09fVkFMVUUJMgo+PiAr Cj4+ICtzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2Owo+PiArCj4+ICtzdHJ1Y3QgY29tYnBo eV9yZWcgewo+PiArCXUxNiBvZmZzZXQ7Cj4+ICsJdTE2IGJpdGVuZDsKPj4gKwl1MTYgYml0c3Rh cnQ7Cj4+ICsJdTE2IGRpc2FibGU7Cj4+ICsJdTE2IGVuYWJsZTsKPj4gK307Cj4+ICsKPj4gK3N0 cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyB7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIHBj aWVfbW9kZV9zZXQ7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIHVzYl9tb2RlX3NldDsKPj4gKwlz dHJ1Y3QgY29tYnBoeV9yZWcgc2dtaWlfbW9kZV9zZXQ7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVn IHFzZ21paV9tb2RlX3NldDsKPj4gKwlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9yeHRlcm1fc2V0 Owo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3R4ZWxlY19zZXQ7Cj4+ICsJc3RydWN0IGNv bWJwaHlfcmVnIHBpcGVfdHhjb21wX3NldDsKPj4gKwlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9j bGtfMjVtOwo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX2Nsa18xMDBtOwo+PiArCXN0cnVj dCBjb21icGh5X3JlZyBwaXBlX3BoeW1vZGVfc2VsOwo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBw aXBlX3JhdGVfc2VsOwo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3J4dGVybV9zZWw7Cj4+ ICsJc3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfdHhlbGVjX3NlbDsKPj4gKwlzdHJ1Y3QgY29tYnBo eV9yZWcgcGlwZV90eGNvbXBfc2VsOwo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX2Nsa19l eHQ7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIHBpcGVfc2VsX3VzYjsKPj4gKwlzdHJ1Y3QgY29t YnBoeV9yZWcgcGlwZV9zZWxfcXNnbWlpOwo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3Bo eV9zdGF0dXM7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIGNvbjBfZm9yX3BjaWU7Cj4+ICsJc3Ry dWN0IGNvbWJwaHlfcmVnIGNvbjFfZm9yX3BjaWU7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIGNv bjJfZm9yX3BjaWU7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIGNvbjNfZm9yX3BjaWU7Cj4+ICsJ c3RydWN0IGNvbWJwaHlfcmVnIGNvbjBfZm9yX3NhdGE7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVn IGNvbjFfZm9yX3NhdGE7Cj4+ICsJc3RydWN0IGNvbWJwaHlfcmVnIGNvbjJfZm9yX3NhdGE7Cj4+ ICsJc3RydWN0IGNvbWJwaHlfcmVnIGNvbjNfZm9yX3NhdGE7Cj4+ICsJc3RydWN0IGNvbWJwaHlf cmVnIHBpcGVfY29uMF9mb3Jfc2F0YTsKPj4gKwlzdHJ1Y3QgY29tYnBoeV9yZWcgcGlwZV9zZ21p aV9tYWNfc2VsOwo+PiArCXN0cnVjdCBjb21icGh5X3JlZyBwaXBlX3hwY3NfcGh5X3JlYWR5Owo+ PiArCXN0cnVjdCBjb21icGh5X3JlZyB1M290ZzBfcG9ydF9lbjsKPj4gKwlzdHJ1Y3QgY29tYnBo eV9yZWcgdTNvdGcxX3BvcnRfZW47Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3Qgcm9ja2NoaXBfY29t YnBoeV9jZmcgewo+PiArCWNvbnN0IHN0cnVjdCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyAqZ3Jm Y2ZnOwo+PiArCWludCAoKmNvbWJwaHlfY2ZnKShzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2 ICpwcml2KTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgewo+ PiArCXU4IG1vZGU7Cj4+ICsJdm9pZCBfX2lvbWVtICptbWlvOwo+PiArCWludCBudW1fY2xrczsK Pj4gKwlzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrczsKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7 Cj4+ICsJc3RydWN0IHJlZ21hcCAqcGlwZV9ncmY7Cj4+ICsJc3RydWN0IHJlZ21hcCAqcGh5X2dy ZjsKPj4gKwlzdHJ1Y3QgcGh5ICpwaHk7Cj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnBoeV9y c3Q7Cj4+ICsJY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfY2ZnICpjZmc7Cj4+ICsJYm9v bCBlbmFibGVfc3NjOwo+PiArCWJvb2wgZXh0X3JlZmNsazsKPj4gKwlzdHJ1Y3QgY2xrICpyZWZj bGs7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IHJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3Jp dGUoc3RydWN0IHJlZ21hcCAqYmFzZSwKPj4gKwkJCQkJY29uc3Qgc3RydWN0IGNvbWJwaHlfcmVn ICpyZWcsIGJvb2wgZW4pCj4+ICt7Cj4+ICsJdTMyIHZhbCwgbWFzaywgdG1wOwo+PiArCj4+ICsJ dG1wID0gZW4gPyByZWctPmVuYWJsZSA6IHJlZy0+ZGlzYWJsZTsKPj4gKwltYXNrID0gR0VOTUFT SyhyZWctPmJpdGVuZCwgcmVnLT5iaXRzdGFydCk7Cj4+ICsJdmFsID0gKHRtcCA8PCByZWctPmJp dHN0YXJ0KSB8IChtYXNrIDw8IEJJVF9XUklURUFCTEVfU0hJRlQpOwo+PiArCj4+ICsJcmV0dXJu IHJlZ21hcF93cml0ZShiYXNlLCByZWctPm9mZnNldCwgdmFsKTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIHUzMiByb2NrY2hpcF9jb21icGh5X2lzX3JlYWR5KHN0cnVjdCByb2NrY2hpcF9jb21icGh5 X3ByaXYgKnByaXYpCj4+ICt7Cj4+ICsJY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3Jm Y2ZnICpjZmcgPSBwcml2LT5jZmctPmdyZmNmZzsKPj4gKwl1MzIgbWFzaywgdmFsOwo+PiArCj4+ ICsJbWFzayA9IEdFTk1BU0soY2ZnLT5waXBlX3BoeV9zdGF0dXMuYml0ZW5kLAo+PiArCQkgICAg ICAgY2ZnLT5waXBlX3BoeV9zdGF0dXMuYml0c3RhcnQpOwo+PiArCj4+ICsJcmVnbWFwX3JlYWQo cHJpdi0+cGh5X2dyZiwgY2ZnLT5waXBlX3BoeV9zdGF0dXMub2Zmc2V0LCAmdmFsKTsKPj4gKwl2 YWwgPSAodmFsICYgbWFzaykgPj4gY2ZnLT5waXBlX3BoeV9zdGF0dXMuYml0c3RhcnQ7Cj4+ICsK Pj4gKwlyZXR1cm4gdmFsOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJvY2tjaGlwX2NvbWJw aHlfc2V0X21vZGUoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdikKPj4gK3sKPj4g KwlpbnQgcmV0ID0gMDsKPj4gKwo+PiArCXN3aXRjaCAocHJpdi0+bW9kZSkgewo+PiArCWNhc2Ug UEhZX1RZUEVfUENJRToKPj4gKwljYXNlIFBIWV9UWVBFX1VTQjM6Cj4+ICsJY2FzZSBQSFlfVFlQ RV9TQVRBOgo+PiArCWNhc2UgUEhZX1RZUEVfU0dNSUk6Cj4+ICsJY2FzZSBQSFlfVFlQRV9RU0dN SUk6Cj4+ICsJCWlmIChwcml2LT5jZmctPmNvbWJwaHlfY2ZnKQo+PiArCQkJcmV0ID0gcHJpdi0+ Y2ZnLT5jb21icGh5X2NmZyhwcml2KTsKPj4gKwkJYnJlYWs7Cj4+ICsJZGVmYXVsdDoKPj4gKwkJ ZGV2X2Vycihwcml2LT5kZXYsICJpbmNvbXBhdGlibGUgUEhZIHR5cGVcbiIpOwo+PiArCQlyZXR1 cm4gLUVJTlZBTDsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAocmV0KQo+PiArCQlkZXZfZXJyKHByaXYt PmRldiwgImZhaWxlZCB0byBpbml0IHBoeSBmb3IgcGh5IG1vZGUgJXhcbiIsIHByaXYtPm1vZGUp Owo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCByb2NrY2hp cF9jb21icGh5X2luaXQoc3RydWN0IHBoeSAqcGh5KQo+PiArewo+PiArCXN0cnVjdCByb2NrY2hp cF9jb21icGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPj4gKwljb25zdCBz dHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9ncmZjZmcgKmNmZyA9IHByaXYtPmNmZy0+Z3JmY2ZnOwo+ PiArCXUzMiB2YWw7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9IGNsa19idWxrX3ByZXBh cmVfZW5hYmxlKHByaXYtPm51bV9jbGtzLCBwcml2LT5jbGtzKTsKPj4gKwlpZiAocmV0KSB7Cj4+ ICsJCWRldl9lcnIocHJpdi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbGtzXG4iKTsKPj4gKwkJ cmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwlyZXQgPSByb2NrY2hpcF9jb21icGh5X3NldF9t b2RlKHByaXYpOwo+PiArCWlmIChyZXQpCj4+ICsJCWdvdG8gZXJyX2NsazsKPj4gKwo+PiArCXJl dCA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocHJpdi0+cGh5X3JzdCk7Cj4+ICsJaWYgKHJldCkK Pj4gKwkJZ290byBlcnJfY2xrOwo+PiArCj4+ICsJaWYgKHByaXYtPm1vZGUgPT0gUEhZX1RZUEVf VVNCMykgewo+PiArCQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXRfYXRvbWljKHJvY2tjaGlwX2Nv bWJwaHlfaXNfcmVhZHksCj4+ICsJCQkJCQlwcml2LCB2YWwsCj4+ICsJCQkJCQl2YWwgPT0gY2Zn LT5waXBlX3BoeV9zdGF0dXMuZW5hYmxlLAo+PiArCQkJCQkJMTAsIDEwMDApOwo+PiArCQlpZiAo cmV0KQo+PiArCQkJZGV2X3dhcm4ocHJpdi0+ZGV2LCAid2FpdCBwaHkgc3RhdHVzIHJlYWR5IHRp bWVvdXRcbiIpOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiArCj4+ICtlcnJfY2xrOgo+ PiArCWNsa19idWxrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPm51bV9jbGtzLCBwcml2LT5jbGtz KTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm9ja2No aXBfY29tYnBoeV9leGl0KHN0cnVjdCBwaHkgKnBoeSkKPj4gK3sKPj4gKwlzdHJ1Y3Qgcm9ja2No aXBfY29tYnBoeV9wcml2ICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4+ICsKPj4gKwlj bGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5udW1fY2xrcywgcHJpdi0+Y2xrcyk7Cj4+ ICsJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0+cGh5X3JzdCk7Cj4+ICsKPj4gKwlyZXR1cm4g MDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIHJvY2hjaGlwX2Nv bWJwaHlfb3BzID0gewo+PiArCS5pbml0ID0gcm9ja2NoaXBfY29tYnBoeV9pbml0LAo+PiArCS5l eGl0ID0gcm9ja2NoaXBfY29tYnBoeV9leGl0LAo+PiArCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBwaHkgKnJvY2tjaGlwX2NvbWJwaHlfeGxhdGUo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzICphcmdzKQo+PiArewo+ PiArCXN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKPj4gKwo+PiArCWlmIChhcmdzLT5hcmdzX2NvdW50ICE9IDEpIHsKPj4gKwkJZGV2X2Vy cihkZXYsICJpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHNcbiIpOwo+PiArCQlyZXR1cm4gRVJS X1BUUigtRUlOVkFMKTsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAocHJpdi0+bW9kZSAhPSBQSFlfTk9O RSAmJiBwcml2LT5tb2RlICE9IGFyZ3MtPmFyZ3NbMF0pCj4+ICsJCWRldl93YXJuKGRldiwgInBo eSB0eXBlIHNlbGVjdCAlZCBvdmVyd3JpdGluZyB0eXBlICVkXG4iLAo+PiArCQkJIGFyZ3MtPmFy Z3NbMF0sIHByaXYtPm1vZGUpOwo+PiArCj4+ICsJcHJpdi0+bW9kZSA9IGFyZ3MtPmFyZ3NbMF07 Cj4+ICsKPj4gKwlyZXR1cm4gcHJpdi0+cGh5Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJv Y2tjaGlwX2NvbWJwaHlfcGFyc2VfZHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgcm9ja2No aXBfY29tYnBoeV9wcml2ICpwcml2KQo+PiArewo+PiArCWNvbnN0IHN0cnVjdCByb2NrY2hpcF9j b21icGh5X2NmZyAqcGh5X2NmZyA9IHByaXYtPmNmZzsKPj4gKwlpbnQgbWFjX2lkOwo+PiArCWlu dCBpOwo+PiArCj4+ICsJcHJpdi0+bnVtX2Nsa3MgPSBkZXZtX2Nsa19idWxrX2dldF9hbGwoZGV2 LCAmcHJpdi0+Y2xrcyk7Cj4+ICsJaWYgKHByaXYtPm51bV9jbGtzIDwgMSkKPj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4+ICsKPj4gKwlwcml2LT5yZWZjbGsgPSBOVUxMOwo+PiArCWZvciAoaSA9IDA7 IGkgPCBwcml2LT5udW1fY2xrczsgaSsrKSB7Cj4+ICsJCWlmICghc3RybmNtcChwcml2LT5jbGtz W2ldLmlkLCAicmVmIiwgMykpIHsKPj4gKwkJCXByaXYtPnJlZmNsayA9IHByaXYtPmNsa3NbaV0u Y2xrOwo+PiArCQkJYnJlYWs7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlpZiAoIXByaXYtPnJl ZmNsaykgewo+PiArCQlkZXZfZXJyKGRldiwgIm5vIHJlZmNsayBmb3VuZFxuIik7Cj4+ICsJCXJl dHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXByaXYtPnBpcGVfZ3JmID0gc3lzY29uX3Jl Z21hcF9sb29rdXBfYnlfcGhhbmRsZShkZXYtPm9mX25vZGUsICJyb2NrY2hpcCxwaXBlLWdyZiIp Owo+PiArCWlmIChJU19FUlIocHJpdi0+cGlwZV9ncmYpKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAi ZmFpbGVkIHRvIGZpbmQgcGVyaV9jdHJsIHBpcGUtZ3JmIHJlZ21hcFxuIik7Cj4+ICsJCXJldHVy biBQVFJfRVJSKHByaXYtPnBpcGVfZ3JmKTsKPj4gKwl9Cj4+ICsKPj4gKwlwcml2LT5waHlfZ3Jm ID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShkZXYtPm9mX25vZGUsICJyb2NrY2hp cCxwaXBlLXBoeS1ncmYiKTsKPj4gKwlpZiAoSVNfRVJSKHByaXYtPnBoeV9ncmYpKSB7Cj4+ICsJ CWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGZpbmQgcGVyaV9jdHJsIHBpcGUtcGh5LWdyZiByZWdt YXBcbiIpOwo+PiArCQlyZXR1cm4gUFRSX0VSUihwcml2LT5waHlfZ3JmKTsKPj4gKwl9Cj4+ICsK Cj4KPj4gKwlpZiAoZGV2aWNlX3Byb3BlcnR5X3ByZXNlbnQoZGV2LCAicm9ja2NoaXAsZGlzLXUz b3RnMC1wb3J0IikpCj4+ICsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGlw ZV9ncmYsICZwaHlfY2ZnLT5ncmZjZmctPnUzb3RnMF9wb3J0X2VuLAo+PiArCQkJCQkgICAgIGZh bHNlKTsKPj4gKwo+PiArCWlmIChkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsICJyb2NrY2hp cCxkaXMtdTNvdGcxLXBvcnQiKSkKPj4gKwkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShw cml2LT5waXBlX2dyZiwgJnBoeV9jZmctPmdyZmNmZy0+dTNvdGcxX3BvcnRfZW4sCj4+ICsJCQkJ CSAgICAgZmFsc2UpOwo+PiArCj4+ICsJcHJpdi0+ZW5hYmxlX3NzYyA9IGRldmljZV9wcm9wZXJ0 eV9wcmVzZW50KGRldiwgInJvY2tjaGlwLGVuYWJsZS1zc2MiKTsKPj4gKwo+PiArCXByaXYtPmV4 dF9yZWZjbGsgPSBkZXZpY2VfcHJvcGVydHlfcHJlc2VudChkZXYsICJyb2NrY2hpcCxleHQtcmVm Y2xrIik7Cj4+ICsKPj4gKwlpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICJyb2Nr Y2hpcCxzZ21paS1tYWMtc2VsIiwgJm1hY19pZCkgJiYKPj4gKwkgICAgKG1hY19pZCA+IDApKQo+ PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBpcGVfZ3JmLCAmcGh5X2Nm Zy0+Z3JmY2ZnLT5waXBlX3NnbWlpX21hY19zZWwsCj4+ICsJCQkJCSAgICAgdHJ1ZSk7Cj4+ICsJ ZWxzZQo+PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBpcGVfZ3JmLCAm cGh5X2NmZy0+Z3JmY2ZnLT5waXBlX3NnbWlpX21hY19zZWwsCj4+ICsJCQkJCSAgICAgZmFsc2Up Owo+Cj5XaGVuIGEgbW9kdWxlIGlzIHJlbG9hZGVkIG9yIHdoZW4gYml0cyBhcmUgcHJldmlvdXNs eSBzZXQgYnkgdS1ib290IGl0Cj5kb2Vzbid0IGdhcmFudGVlIHRoYXQgdGhleSBhcmUgaW4gZGVm YXVsdCBzdGF0ZSwgZG9lcyBpdD8KPk1heWJlIGFsd2F5cyBzZXQgdGhlbSByZWdhcmRsZXNzIGlm IHRoZSBwcm9wZXJ0eSBpcyBwcmVzZW50IHRvIGRlZmF1bHQKPm9yIGEgdmFsdWUuCj4KPnZhbCA9 IGNvbmRpdGlvbiA/IHRydWUgOiBmYWxzZTsKPgo+cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0 ZShwcml2LT5waXBlX2dyZiwKPiZwaHlfY2ZnLT5ncmZjZmctPnBpcGVfc2dtaWlfbWFjX3NlbCwK PnZhbCk7Cj4KPj4+ICs+PiArCXByaXYtPnBoeV9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfYXJy YXlfZ2V0KGRldiwgZmFsc2UsIGZhbHNlKTsKPgo+RG9lcyB0aGlzIHdvcms/CgpZZXMsIHRoaXMg Y29kZSBjYW4gd29yaywgYnV0IGl0IGFsc28gcmVzZXQgYXBiX3Jlc2V0IHRvZ2V0aGVyLCB3aGlj aCB3aWxsIGFmZmVjdCB0aGUgY29uZmlndXJhdGlvbiBvZiBzb21lIHJlZ2lzdGVycy4KSSByZW9t dmUgYXBiX3Jlc2V0IHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSB1c2VkIGluIERUUyB0byBmaXgg aXQuCgo+PiArCWlmIChJU19FUlIocHJpdi0+cGh5X3JzdCkpPj4gKwkJcmV0dXJuIGRldl9lcnJf cHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtPnBoeV9yc3QpLCAiZmFpbGVkIHRvIGdldCBwaHkgcmVz ZXRcbiIpOz4+ICs+PiArCXJldHVybiAwOz4+ICt9Pj4gKz4+ICtzdGF0aWMgaW50IHJvY2tjaGlw X2NvbWJwaHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik+PiArez4+ICsJc3Ry dWN0IHBoeV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOz4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0g JnBkZXYtPmRldjs+PiArCXN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXY7Pj4gKwlj b25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9jZmcgKnBoeV9jZmc7Pj4gKwlzdHJ1Y3QgcmVz b3VyY2UgKnJlczs+PiArCWludCByZXQ7Pj4gKz4+ICsJcGh5X2NmZyA9IG9mX2RldmljZV9nZXRf bWF0Y2hfZGF0YShkZXYpOz4+ICsJaWYgKCFwaHlfY2ZnKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAi bm8gT0YgbWF0Y2ggZGF0YSBwcm92aWRlZFxuIik7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiAr CX0KPj4gKwo+PiArCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBf S0VSTkVMKTsKPj4gKwlpZiAoIXByaXYpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJ cHJpdi0+bW1pbyA9IGRldm1fcGxhdGZvcm1fZ2V0X2FuZF9pb3JlbWFwX3Jlc291cmNlKHBkZXYs IDAsICZyZXMpOwo+PiArCWlmIChJU19FUlIocHJpdi0+bW1pbykpIHsKPj4gKwkJcmV0ID0gUFRS X0VSUihwcml2LT5tbWlvKTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwlwcml2 LT5kZXYgPSBkZXY7Cj4+ICsJcHJpdi0+bW9kZSA9IFBIWV9OT05FOwo+PiArCXByaXYtPmNmZyA9 IHBoeV9jZmc7Cj4+ICsKPj4gKwlyZXQgPSByb2NrY2hpcF9jb21icGh5X3BhcnNlX2R0KGRldiwg cHJpdik7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCXJldCA9IHJl c2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtPnBoeV9yc3QpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJ ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVzZXQgcGh5XG4iKTsKPj4gKwkJcmV0dXJuIHJldDsK Pj4gKwl9Cj4+ICsKPj4gKwlwcml2LT5waHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAm cm9jaGNoaXBfY29tYnBoeV9vcHMpOwo+PiArCWlmIChJU19FUlIocHJpdi0+cGh5KSkgewo+PiAr CQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgY29tYnBoeVxuIik7Cj4+ICsJCXJldHVy biBQVFJfRVJSKHByaXYtPnBoeSk7Cj4+ICsJfQo+PiArCj4+ICsJZGV2X3NldF9kcnZkYXRhKGRl diwgcHJpdik7Cj4+ICsJcGh5X3NldF9kcnZkYXRhKHByaXYtPnBoeSwgcHJpdik7Cj4+ICsKPj4g KwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIHJvY2tj aGlwX2NvbWJwaHlfeGxhdGUpOwo+PiArCj4+ICsJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhwaHlf cHJvdmlkZXIpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJrMzU2OF9jb21icGh5X2NmZyhz dHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KQo+PiArewo+PiArCWNvbnN0IHN0cnVj dCByb2NrY2hpcF9jb21icGh5X2dyZmNmZyAqY2ZnID0gcHJpdi0+Y2ZnLT5ncmZjZmc7Cj4+ICsJ dW5zaWduZWQgbG9uZyByYXRlOwo+PiArCXUzMiB2YWw7Cj4+ICsKPj4gKwlzd2l0Y2ggKHByaXYt Pm1vZGUpIHsKPj4gKwljYXNlIFBIWV9UWVBFX1BDSUU6Cj4+ICsJCS8qIFNldCBTU0MgZG93bndh cmQgc3ByZWFkIHNwZWN0cnVtLiAqLwo+PiArCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUksz NTY4X1QyMl9QSFlSRUczMSk7Cj4+ICsJCXZhbCAmPSB+VDIyX1BIWVJFRzMxX1NTQ19NQVNLOwo+ PiArCQl2YWwgfD0gVDIyX1BIWVJFRzMxX1NTQ19ET1dOV0FSRCA8PCBUMjJfUEhZUkVHMzFfU1ND X0RJUl9TSElGVDsKPj4gKwkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZ UkVHMzEpOwo+PiArCj4+ICsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5 X2dyZiwgJmNmZy0+Y29uMF9mb3JfcGNpZSwgdHJ1ZSk7Cj4+ICsJCXJvY2tjaGlwX2NvbWJwaHlf cGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+Y29uMV9mb3JfcGNpZSwgdHJ1ZSk7Cj4+ ICsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+Y29u Ml9mb3JfcGNpZSwgdHJ1ZSk7Cj4+ICsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJp di0+cGh5X2dyZiwgJmNmZy0+Y29uM19mb3JfcGNpZSwgdHJ1ZSk7Cj4+ICsJCWJyZWFrOwo+PiAr CWNhc2UgUEhZX1RZUEVfVVNCMzoKPj4gKwkJLyogU2V0IFNTQyBkb3dud2FyZCBzcHJlYWQgc3Bl Y3RydW0uICovCj4+ICsJCXZhbCA9IHJlYWRsKHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJF RzMxKTsKPj4gKwkJdmFsICY9IH5UMjJfUEhZUkVHMzFfU1NDX01BU0s7Cj4+ICsJCXZhbCB8PSBU MjJfUEhZUkVHMzFfU1NDX0RPV05XQVJEIDw8IFQyMl9QSFlSRUczMV9TU0NfRElSX1NISUZUOwo+ PiArCQl3cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1QyMl9QSFlSRUczMSk7Cj4+ICsK Pj4gKwkJLyogRW5hYmxlIGFkYXB0aXZlIENUTEUgZm9yIFVTQjMuMCBSeC4gKi8KPj4gKwkJdmFs ID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVHMTQpOwo+PiArCQl2YWwgfD0g VDIyX1BIWVJFRzE0X0NUTEVfRU47Cj4+ICsJCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBSSzM1 NjhfVDIyX1BIWVJFRzE0KTsKPj4gKwo+PiArCQkvKiBTZXQgUExMIEtWQ08gZmluZSB0dW5pbmcg c2lnbmFscy4gKi8KPj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZ UkVHMzIpOwo+PiArCQl2YWwgJj0gflQyMl9QSFlSRUczMl9QTExfS1ZDT19NQVNLOwo+PiArCQl2 YWwgfD0gVDIyX1BIWVJFRzMyX1BMTF9LVkNPX1ZBTFVFIDw8IFQyMl9QSFlSRUczMl9QTExfS1ZD T19TSElGVDsKPj4gKwkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVH MzIpOwo+PiArCj4+ICsJCS8qIEVuYWJsZSBjb250cm9sbGluZyByYW5kb20gaml0dGVyLiAqLwo+ PiArCQl3cml0ZWwoVDIyX1BIWVJFRzExX1BMTF9MUEZfQURKLCBwcml2LT5tbWlvICsgUkszNTY4 X1QyMl9QSFlSRUcxMSk7Cj4+ICsKPj4gKwkJLyogU2V0IFBMTCBpbnB1dCBjbG9jayBkaXZpZGVy IDEvMi4gKi8KPj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVH NSk7Cj4+ICsJCXZhbCAmPSB+VDIyX1BIWVJFRzVfUExMX0RJVl9NQVNLOwo+PiArCQl2YWwgfD0g VDIyX1BIWVJFRzVfUExMX0RJVl8yIDw8IFQyMl9QSFlSRUc1X1BMTF9ESVZfU0hJRlQ7Cj4+ICsJ CXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJFRzUpOwo+PiArCj4+ICsJ CXdyaXRlbChUMjJfUEhZUkVHMTdfUExMX0xPT1AsIHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BI WVJFRzE3KTsKPj4gKwkJd3JpdGVsKFQyMl9QSFlSRUcxMF9TVV9UUklNXzBfNywgcHJpdi0+bW1p byArIFJLMzU2OF9UMjJfUEhZUkVHMTApOwo+PiArCj4+ICsJCXJvY2tjaGlwX2NvbWJwaHlfcGFy YW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cGlwZV9zZWxfdXNiLCB0cnVlKTsKPj4gKwkJ cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX3R4 Y29tcF9zZWwsIGZhbHNlKTsKPj4gKwkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2 LT5waHlfZ3JmLCAmY2ZnLT5waXBlX3R4ZWxlY19zZWwsIGZhbHNlKTsKPj4gKwkJcm9ja2NoaXBf Y29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT51c2JfbW9kZV9zZXQsIHRy dWUpOwo+PiArCQlicmVhazsKPj4gKwljYXNlIFBIWV9UWVBFX1NBVEE6Cj4+ICsJCS8qIEVuYWJs ZSBhZGFwdGl2ZSBDVExFIGZvciBTQVRBIFJ4LiAqLwo+PiArCQl2YWwgPSByZWFkbChwcml2LT5t bWlvICsgUkszNTY4X1QyMl9QSFlSRUcxNCk7Cj4+ICsJCXZhbCB8PSBUMjJfUEhZUkVHMTRfQ1RM RV9FTjsKPj4gKwkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVHMTQp Owo+PiArCQkvKgo+PiArCQkgKiBTZXQgdHhfcnRlcm09NTBvaG0gYW5kIHJ4X3J0ZXJtPTQ0b2ht IGZvciBTQVRBLgo+PiArCQkgKiAwOiA2MG9obSwgODogNTBvaG0gMTU6IDQ0b2htIChieSBzdGVw IGFib3J0IDFvaG0pCj4+ICsJCSAqLwo+PiArCQl2YWwgPSBUMjJfUEhZUkVHNl9UWF9SVEVSTV81 ME9ITSA8PCBUMjJfUEhZUkVHNl9UWF9SVEVSTV9TSElGVDsKPj4gKwkJdmFsIHw9IFQyMl9QSFlS RUc2X1JYX1JURVJNXzQ0T0hNIDw8IFQyMl9QSFlSRUc2X1JYX1JURVJNX1NISUZUOwo+PiArCQl3 cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1QyMl9QSFlSRUc2KTsKPj4gKwo+PiArCQly b2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPmNvbjBfZm9y X3NhdGEsIHRydWUpOwo+PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBo eV9ncmYsICZjZmctPmNvbjFfZm9yX3NhdGEsIHRydWUpOwo+PiArCQlyb2NrY2hpcF9jb21icGh5 X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPmNvbjJfZm9yX3NhdGEsIHRydWUpOwo+ PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPmNv bjNfZm9yX3NhdGEsIHRydWUpOwo+PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHBy aXYtPnBpcGVfZ3JmLCAmY2ZnLT5waXBlX2NvbjBfZm9yX3NhdGEsIHRydWUpOwo+PiArCQlicmVh azsKPj4gKwljYXNlIFBIWV9UWVBFX1NHTUlJOgo+PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFt X3dyaXRlKHByaXYtPnBpcGVfZ3JmLCAmY2ZnLT5waXBlX3hwY3NfcGh5X3JlYWR5LCB0cnVlKTsK Pj4gKwkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5w aXBlX3BoeW1vZGVfc2VsLCB0cnVlKTsKPj4gKwkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0 ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX3NlbF9xc2dtaWksIHRydWUpOwo+PiArCQlyb2Nr Y2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPnNnbWlpX21vZGVf c2V0LCB0cnVlKTsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBQSFlfVFlQRV9RU0dNSUk6Cj4+ICsJ CXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGlwZV9ncmYsICZjZmctPnBpcGVf eHBjc19waHlfcmVhZHksIHRydWUpOwo+PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRl KHByaXYtPnBoeV9ncmYsICZjZmctPnBpcGVfcGh5bW9kZV9zZWwsIHRydWUpOwo+PiArCQlyb2Nr Y2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPnBpcGVfcmF0ZV9z ZWwsIHRydWUpOwo+PiArCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9n cmYsICZjZmctPnBpcGVfc2VsX3FzZ21paSwgdHJ1ZSk7Cj4+ICsJCXJvY2tjaGlwX2NvbWJwaHlf cGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cXNnbWlpX21vZGVfc2V0LCB0cnVlKTsK Pj4gKwkJYnJlYWs7Cj4+ICsJZGVmYXVsdDoKPj4gKwkJZGV2X2Vycihwcml2LT5kZXYsICJpbmNv bXBhdGlibGUgUEhZIHR5cGVcbiIpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4+ICsK Pj4gKwlyYXRlID0gY2xrX2dldF9yYXRlKHByaXYtPnJlZmNsayk7Cj4+ICsKPj4gKwlzd2l0Y2gg KHJhdGUpIHsKPj4gKwljYXNlIFJFRl9DTE9DS18yNE1IejoKPj4gKwkJaWYgKHByaXYtPm1vZGUg PT0gUEhZX1RZUEVfVVNCMyB8fCBwcml2LT5tb2RlID09IFBIWV9UWVBFX1NBVEEpIHsKPj4gKwkJ CS8qIFNldCBzc2NfY250Wzk6MF09MDEwMTExMTEwMSAmIDMxLjVLSHouICovCj4+ICsJCQl2YWwg PSByZWFkbChwcml2LT5tbWlvICsgUkszNTY4X1QyMl9QSFlSRUcxNCk7Cj4+ICsJCQl2YWwgJj0g flQyMl9QSFlSRUcxNF9TU0NfQ05UX01BU0s7Cj4+ICsJCQl2YWwgfD0gVDIyX1BIWVJFRzE0X1NT Q19DTlRfVkFMVUUgPDwgVDIyX1BIWVJFRzE0X1NTQ19DTlRfU0hJRlQ7Cj4+ICsJCQl3cml0ZWwo dmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1QyMl9QSFlSRUcxNCk7Cj4+ICsJCQl3cml0ZWwoVDIy X1BIWVJFRzE1X1NTQ19DTlRfVkFMVUUsIHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJFRzE1 KTsKPj4gKwkJfQo+PiArCQlicmVhazsKPj4gKwljYXNlIFJFRl9DTE9DS18yNU1IejoKPj4gKwkJ cm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX2Ns a18yNW0sIHRydWUpOwo+PiArCQlicmVhazsKPj4gKwljYXNlIFJFRl9DTE9DS18xMDBNSHo6Cj4+ ICsJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cGlw ZV9jbGtfMTAwbSwgdHJ1ZSk7Cj4+ICsJCWlmIChwcml2LT5tb2RlID09IFBIWV9UWVBFX1BDSUUp IHsKPj4gKwkJCS8qIFBMTCBLVkNPICBmaW5lIHR1bmluZy4gKi8KPj4gKwkJCXZhbCA9IHJlYWRs KHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJFRzMyKTsKPj4gKwkJCXZhbCAmPSB+VDIyX1BI WVJFRzMyX1BMTF9LVkNPX01BU0s7Cj4+ICsJCQl2YWwgfD0gVDIyX1BIWVJFRzMyX1BMTF9LVkNP X1ZBTFVFIDw8IFQyMl9QSFlSRUczMl9QTExfS1ZDT19TSElGVDsKPj4gKwkJCXdyaXRlbCh2YWws IHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJFRzMyKTsKPj4gKwo+PiArCQkJLyogRW5hYmxl IGNvbnRyb2xsaW5nIHJhbmRvbSBqaXR0ZXIuICovCj4+ICsJCQl3cml0ZWwoVDIyX1BIWVJFRzEx X1BMTF9MUEZfQURKLCBwcml2LT5tbWlvICsgUkszNTY4X1QyMl9QSFlSRUcxMSk7Cj4+ICsKPj4g KwkJCXZhbCA9IHJlYWRsKHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJFRzUpOwo+PiArCQkJ dmFsICY9IH5UMjJfUEhZUkVHNV9QTExfRElWX01BU0s7Cj4+ICsJCQl2YWwgfD0gVDIyX1BIWVJF RzVfUExMX0RJVl8yIDw8IFQyMl9QSFlSRUc1X1BMTF9ESVZfU0hJRlQ7Cj4+ICsJCQl3cml0ZWwo dmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1QyMl9QSFlSRUc1KTsKPj4gKwo+PiArCQkJd3JpdGVs KFQyMl9QSFlSRUcxN19QTExfTE9PUCwgcHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVHMTcp Owo+PiArCQkJd3JpdGVsKFQyMl9QSFlSRUcxMF9TVV9UUklNXzBfNywgcHJpdi0+bW1pbyArIFJL MzU2OF9UMjJfUEhZUkVHMTApOwo+PiArCQl9IGVsc2UgaWYgKHByaXYtPm1vZGUgPT0gUEhZX1RZ UEVfU0FUQSkgewo+PiArCQkJLyogZG93bndhcmQgc3ByZWFkIHNwZWN0cnVtICs1MDBwcG0gKi8K Pj4gKwkJCXZhbCA9IHJlYWRsKHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJFRzMxKTsKPj4g KwkJCXZhbCAmPSB+VDIyX1BIWVJFRzMxX1NTQ19NQVNLOwo+PiArCQkJdmFsIHw9IFQyMl9QSFlS RUczMV9TU0NfRE9XTldBUkQgPDwgVDIyX1BIWVJFRzMxX1NTQ19ESVJfU0hJRlQ7Cj4+ICsJCQl2 YWwgfD0gVDIyX1BIWVJFRzMxX1NTQ19PRkZTRVRfNTAwUFBNIDw8IFQyMl9QSFlSRUczMV9TU0Nf T0ZGU0VUX1NISUZUOwo+PiArCQkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9UMjJf UEhZUkVHMzEpOwo+PiArCQl9Cj4+ICsJCWJyZWFrOwo+PiArCWRlZmF1bHQ6Cj4+ICsJCWRldl9l cnIocHJpdi0+ZGV2LCAidW5zdXBwb3J0ZWQgcmF0ZTogJWx1XG4iLCByYXRlKTsKPj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHByaXYtPmV4dF9yZWZjbGspIHsKPj4g KwkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBl X2Nsa19leHQsIHRydWUpOwo+PiArCQlpZiAocHJpdi0+bW9kZSA9PSBQSFlfVFlQRV9QQ0lFICYm IHJhdGUgPT0gUkVGX0NMT0NLXzEwME1Ieikgewo+PiArCQkJdmFsID0gcmVhZGwocHJpdi0+bW1p byArIFJLMzU2OF9UMjJfUEhZUkVHMTIpOwo+PiArCQkJdmFsICY9IH5UMjJfUEhZUkVHMTJfUkVT SVNURVJfTUFTSzsKPj4gKwkJCXZhbCB8PSBUMjJfUEhZUkVHMTJfUkVTSVNURVJfSElHSF9aIDw8 IFQyMl9QSFlSRUcxMl9SRVNJU1RFUl9TSElGVDsKPj4gKwkJCXZhbCB8PSBUMjJfUEhZUkVHMTJf Q0tSQ1ZfQU1QMDsKPj4gKwkJCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BI WVJFRzEyKTsKPj4gKwo+PiArCQkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9UMjJf UEhZUkVHMTMpOwo+PiArCQkJdmFsIHw9IFQyMl9QSFlSRUcxM19DS1JDVl9BTVAxOwo+PiArCQkJ d3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVHMTMpOwo+PiArCQl9Cj4+ ICsJfQo+PiArCj4+ICsJaWYgKHByaXYtPmVuYWJsZV9zc2MpIHsKPj4gKwkJdmFsID0gcmVhZGwo cHJpdi0+bW1pbyArIFJLMzU2OF9UMjJfUEhZUkVHNyk7Cj4+ICsJCXZhbCB8PSBUMjJfUEhZUkVH N19TU0NfRU47Cj4+ICsJCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBSSzM1NjhfVDIyX1BIWVJF RzcpOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfZ3JmY2ZnIHJrMzU2OF9jb21icGh5X2dyZmNmZ3Mg PSB7Cj4+ICsJLyogcGlwZS1waHktZ3JmICovCj4+ICsJLnBjaWVfbW9kZV9zZXQJCT0geyAweDAw MDAsIDUsIDAsIDB4MDAsIDB4MTEgfSwKPj4gKwkudXNiX21vZGVfc2V0CQk9IHsgMHgwMDAwLCA1 LCAwLCAweDAwLCAweDA0IH0sCj4+ICsJLnNnbWlpX21vZGVfc2V0CQk9IHsgMHgwMDAwLCA1LCAw LCAweDAwLCAweDAxIH0sCj4+ICsJLnFzZ21paV9tb2RlX3NldAk9IHsgMHgwMDAwLCA1LCAwLCAw eDAwLCAweDIxIH0sCj4+ICsJLnBpcGVfcnh0ZXJtX3NldAk9IHsgMHgwMDAwLCAxMiwgMTIsIDB4 MDAsIDB4MDEgfSwKPj4gKwkucGlwZV90eGVsZWNfc2V0CT0geyAweDAwMDQsIDEsIDEsIDB4MDAs IDB4MDEgfSwKPj4gKwkucGlwZV90eGNvbXBfc2V0CT0geyAweDAwMDQsIDQsIDQsIDB4MDAsIDB4 MDEgfSwKPj4gKwkucGlwZV9jbGtfMjVtCQk9IHsgMHgwMDA0LCAxNCwgMTMsIDB4MDAsIDB4MDEg fSwKPj4gKwkucGlwZV9jbGtfMTAwbQkJPSB7IDB4MDAwNCwgMTQsIDEzLCAweDAwLCAweDAyIH0s Cj4+ICsJLnBpcGVfcGh5bW9kZV9zZWwJPSB7IDB4MDAwOCwgMSwgMSwgMHgwMCwgMHgwMSB9LAo+ PiArCS5waXBlX3JhdGVfc2VsCQk9IHsgMHgwMDA4LCAyLCAyLCAweDAwLCAweDAxIH0sCj4+ICsJ LnBpcGVfcnh0ZXJtX3NlbAk9IHsgMHgwMDA4LCA4LCA4LCAweDAwLCAweDAxIH0sCj4+ICsJLnBp cGVfdHhlbGVjX3NlbAk9IHsgMHgwMDA4LCAxMiwgMTIsIDB4MDAsIDB4MDEgfSwKPj4gKwkucGlw ZV90eGNvbXBfc2VsCT0geyAweDAwMDgsIDE1LCAxNSwgMHgwMCwgMHgwMSB9LAo+PiArCS5waXBl X2Nsa19leHQJCT0geyAweDAwMGMsIDksIDgsIDB4MDIsIDB4MDEgfSwKPj4gKwkucGlwZV9zZWxf dXNiCQk9IHsgMHgwMDBjLCAxNCwgMTMsIDB4MDAsIDB4MDEgfSwKPj4gKwkucGlwZV9zZWxfcXNn bWlpCT0geyAweDAwMGMsIDE1LCAxMywgMHgwMCwgMHgwNyB9LAo+PiArCS5waXBlX3BoeV9zdGF0 dXMJPSB7IDB4MDAzNCwgNiwgNiwgMHgwMSwgMHgwMCB9LAo+PiArCS5jb24wX2Zvcl9wY2llCQk9 IHsgMHgwMDAwLCAxNSwgMCwgMHgwMCwgMHgxMDAwIH0sCj4+ICsJLmNvbjFfZm9yX3BjaWUJCT0g eyAweDAwMDQsIDE1LCAwLCAweDAwLCAweDAwMDAgfSwKPj4gKwkuY29uMl9mb3JfcGNpZQkJPSB7 IDB4MDAwOCwgMTUsIDAsIDB4MDAsIDB4MDEwMSB9LAo+PiArCS5jb24zX2Zvcl9wY2llCQk9IHsg MHgwMDBjLCAxNSwgMCwgMHgwMCwgMHgwMjAwIH0sCj4+ICsJLmNvbjBfZm9yX3NhdGEJCT0geyAw eDAwMDAsIDE1LCAwLCAweDAwLCAweDAxMTkgfSwKPj4gKwkuY29uMV9mb3Jfc2F0YQkJPSB7IDB4 MDAwNCwgMTUsIDAsIDB4MDAsIDB4MDA0MCB9LAo+PiArCS5jb24yX2Zvcl9zYXRhCQk9IHsgMHgw MDA4LCAxNSwgMCwgMHgwMCwgMHg4MGMzIH0sCj4+ICsJLmNvbjNfZm9yX3NhdGEJCT0geyAweDAw MGMsIDE1LCAwLCAweDAwLCAweDQ0MDcgfSwKPj4gKwkvKiBwaXBlLWdyZiAqLwo+PiArCS5waXBl X2NvbjBfZm9yX3NhdGEJPSB7IDB4MDAwMCwgMTUsIDAsIDB4MDAsIDB4MjIyMCB9LAo+PiArCS5w aXBlX3NnbWlpX21hY19zZWwJPSB7IDB4MDA0MCwgMSwgMSwgMHgwMCwgMHgwMSB9LAo+PiArCS5w aXBlX3hwY3NfcGh5X3JlYWR5CT0geyAweDAwNDAsIDIsIDIsIDB4MDAsIDB4MDEgfSwKPj4gKwku dTNvdGcwX3BvcnRfZW4JCT0geyAweDAxMDQsIDE1LCAwLCAweDAxODEsIDB4MTEwMCB9LAo+PiAr CS51M290ZzFfcG9ydF9lbgkJPSB7IDB4MDE0NCwgMTUsIDAsIDB4MDE4MSwgMHgxMTAwIH0sCj4+ ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfY2ZnIHJr MzU2OF9jb21icGh5X2NmZ3MgPSB7Cj4+ICsJLmdyZmNmZwkJPSAmcmszNTY4X2NvbWJwaHlfZ3Jm Y2ZncywKPj4gKwkuY29tYnBoeV9jZmcJPSByazM1NjhfY29tYnBoeV9jZmcsCj4+ICt9Owo+PiAr Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByb2NrY2hpcF9jb21icGh5X29m X21hdGNoW10gPSB7Cj4+ICsJewo+PiArCQkuY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazM1Njgt bmFuZW5nLWNvbWJwaHkiLAo+PiArCQkuZGF0YSA9ICZyazM1NjhfY29tYnBoeV9jZmdzLAo+PiAr CX0sCj4+ICsJeyB9LAo+PiArfTsKPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJvY2tjaGlw X2NvbWJwaHlfb2ZfbWF0Y2gpOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZl ciByb2NrY2hpcF9jb21icGh5X2RyaXZlciA9IHsKPj4gKwkucHJvYmUJPSByb2NrY2hpcF9jb21i cGh5X3Byb2JlLAo+PiArCS5kcml2ZXIgPSB7Cj4+ICsJCS5uYW1lID0gInJvY2tjaGlwLW5hbmVu Zy1jb21icGh5IiwKPj4gKwkJLm9mX21hdGNoX3RhYmxlID0gcm9ja2NoaXBfY29tYnBoeV9vZl9t YXRjaCwKPj4gKwl9LAo+PiArfTsKPj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocm9ja2NoaXBf Y29tYnBoeV9kcml2ZXIpOwo+PiArCj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlJvY2tjaGlwIE5B TkVORyBDT01CUEhZIGRyaXZlciIpOwo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+PiAK Ci0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=