From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59335C2D0E7 for ; Wed, 25 Mar 2020 23:14:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1A58820772 for ; Wed, 25 Mar 2020 23:14:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="mJRqTPBz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727537AbgCYXN5 (ORCPT ); Wed, 25 Mar 2020 19:13:57 -0400 Received: from mailgw01.mediatek.com ([216.200.240.184]:56392 "EHLO mailgw01.mediatek.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727389AbgCYXN5 (ORCPT ); Wed, 25 Mar 2020 19:13:57 -0400 X-Greylist: delayed 301 seconds by postgrey-1.27 at vger.kernel.org; Wed, 25 Mar 2020 19:13:56 EDT X-UUID: b439e49a007d41b4b341523e08f872ec-20200325 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=Dbph2QdkGB9v/7fOd6SwtLCWAnmMbcWZXZeUDFh9xKk=; b=mJRqTPBzSr0POGeLpIbQnO8Kx0ymGxNtgscZeRFpJKm/043i2s5Np03n1IW3Hwj2IvxGz9Cj9smoBtZZaLH9JCAorDOxb4Ya8BNZwqq0pQd0KGgpMOnIFSZbKrtSB3IopFdtNo7ucaijy9zpsd2RpXaGRSQoQ6nglBCX7Zqjbx4=; X-UUID: b439e49a007d41b4b341523e08f872ec-20200325 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 829830410; Wed, 25 Mar 2020 15:08:49 -0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 25 Mar 2020 16:05:35 -0700 Received: from [172.21.77.4] (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 26 Mar 2020 07:05:32 +0800 Message-ID: <1585177534.26117.4.camel@mtksdaap41> Subject: Re: [PATCH v12 4/5] soc / drm: mediatek: Move routing control to mmsys device From: CK Hu To: Matthias Brugger CC: Enric Balletbo i Serra , , , , , , , , , "Allison Randal" , Matthias Brugger , , , , , , Greg Kroah-Hartman , Kate Stewart , , Thomas Gleixner , Weiyi Lu , Seiya Wang , Andrew-CT Chen , , , Daniel Vetter , , , "Minghsiu Tsai" , , , Mauro Carvalho Chehab , Collabora Kernel ML , Houlong Wei , , mtk01761 , Richard Fontana Date: Thu, 26 Mar 2020 07:05:34 +0800 In-Reply-To: <02290a21-7392-a2cf-576c-215091ec05e8@suse.com> References: <20200311165322.1594233-1-enric.balletbo@collabora.com> <20200311165322.1594233-5-enric.balletbo@collabora.com> <02290a21-7392-a2cf-576c-215091ec05e8@suse.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org SGksIE1hdHRoaWFzOg0KDQpPbiBXZWQsIDIwMjAtMDMtMjUgYXQgMTc6MTYgKzAxMDAsIE1hdHRo aWFzIEJydWdnZXIgd3JvdGU6DQo+IA0KPiBPbiAxMS8wMy8yMDIwIDE3OjUzLCBFbnJpYyBCYWxs ZXRibyBpIFNlcnJhIHdyb3RlOg0KPiA+IFByb3ZpZGUgYSBtdGtfbW1zeXNfZGRwX2Nvbm5lY3Qo KSBhbmQgbXRrX21tc3lzX2Rpc2Nvbm5lY3QoKSBmdW5jdGlvbnMgdG8NCj4gPiByZXBsYWNlIG10 a19kZHBfYWRkX2NvbXBfdG9fcGF0aCgpIGFuZCBtdGtfZGRwX3JlbW92ZV9jb21wX2Zyb21fcGF0 aCgpLg0KPiA+IFRob3NlIGZ1bmN0aW9ucyB3aWxsIGFsbG93IERSTSBkcml2ZXIgYW5kIG90aGVy cyB0byBjb250cm9sIHRoZSBkYXRhDQo+ID4gcGF0aCByb3V0aW5nLg0KPiA+IA0KPiA+IFNpZ25l ZC1vZmYtYnk6IEVucmljIEJhbGxldGJvIGkgU2VycmEgPGVucmljLmJhbGxldGJvQGNvbGxhYm9y YS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIEJydWdnZXIgPG1hdHRoaWFzLmJnZ0Bn bWFpbC5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+DQo+ ID4gQWNrZWQtYnk6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+DQo+IA0KPiBUaGlzIHBhdGNo IGRvZXMgbm90IGFwcGx5IGFnYWluc3QgdjUuNi1yYzEuDQo+IFBsZWFzZSByZWJhc2UgYXMgdGhp cyBpcyBhIHF1aXRlIGJpZyBwYXRjaCBhbmQgaXQgd29uJ3QgYmUgZWFzeSB0byBkbyB0aGF0IGJ5 IGhhbmQuDQoNCkkgdGhpbmsgdGhpcyBwYXRjaCBkZXBlbmRzIG9uIFsxXSB3aGljaCBoYXMgYmVl biBhY2tlZCBieSBtZSBhbmQgSSBoYXZlDQpub3QgcGlja2VkIGl0LiBUaGUgc2ltcGxlIHdheSBp cyB0aGF0IHlvdSBwaWNrIFsxXSBmaXJzdCBhbmQgdGhlbiBwaWNrDQp0aGlzIHNlcmllcy4NCg0K WzFdIA0KaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTQwNjIyNy8NCg0KUmVn YXJkcywNCkNLDQoNCj4gDQo+IFJlZ2FyZHMsDQo+IE1hdHRoaWFzDQo+IA0KPiA+IC0tLQ0KPiA+ IA0KPiA+IENoYW5nZXMgaW4gdjEyOiBOb25lDQo+ID4gQ2hhbmdlcyBpbiB2MTA6DQo+ID4gLSBT ZWxlY3QgQ09ORklHX01US19NTVNZUyAoQ0spDQo+ID4gLSBQYXNzIGRldmljZSBwb2ludGVyIG9m IG1tc3lzIGRldmljZSBpbnN0ZWFkIG9mIGNvbmZpZyByZWdzIChDSykNCj4gPiANCj4gPiBDaGFu Z2VzIGluIHY5Og0KPiA+IC0gSW50cm9kdWNlZCBhIG5ldyBwYXRjaCB0byBtb3ZlIHJvdXRpbmcg Y29udHJvbCBpbnRvIG1tc3lzIGRyaXZlci4NCj4gPiAtIFJlbW92ZWQgdGhlIHBhdGNoIHRvIHVz ZSByZWdtYXAgYXMgaXMgbm90IG5lZWRlZCBhbnltb3JlLg0KPiA+IA0KPiA+IENoYW5nZXMgaW4g djg6IE5vbmUNCj4gPiBDaGFuZ2VzIGluIHY3OiBOb25lDQo+ID4gDQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9LY29uZmlnICAgICAgICB8ICAgMSArDQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYyB8ICAxOSArLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kZHAuYyAgfCAyNTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuaCAgfCAgIDcgLQ0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAgfCAgMTQgKy0NCj4gPiAgZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggIHwgICAyICstDQo+ID4gIGRyaXZl cnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jICAgICAgICB8IDI3OSArKysrKysrKysrKysrKysr KysrKysrKysNCj4gPiAgaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmggIHwg IDIwICsrDQo+ID4gIDggZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDI4MiBkZWxl dGlvbnMoLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc29jL21lZGlh dGVrL210ay1tbXN5cy5oDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL0tjb25maWcNCj4gPiBp bmRleCBmYTVmZmM0ZmU4MjMuLmM0MjBmNWEzZDMzYiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9LY29uZmlnDQo+ID4gQEAgLTExLDYgKzExLDcgQEAgY29uZmlnIERSTV9NRURJQVRFSw0K PiA+ICAJc2VsZWN0IERSTV9NSVBJX0RTSQ0KPiA+ICAJc2VsZWN0IERSTV9QQU5FTA0KPiA+ICAJ c2VsZWN0IE1FTU9SWQ0KPiA+ICsJc2VsZWN0IE1US19NTVNZUw0KPiA+ICAJc2VsZWN0IE1US19T TUkNCj4gPiAgCXNlbGVjdCBWSURFT01PREVfSEVMUEVSUw0KPiA+ICAJaGVscA0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMNCj4gPiBpbmRleCAwZTA1NjgzZDdiNTMu LjU3OWE1YTVkNDQ3MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9jcnRjLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9jcnRjLmMNCj4gPiBAQCAtNiw2ICs2LDcgQEANCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5o Pg0KPiA+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPiA+ICAjaW5jbHVkZSA8bGlu dXgvc29jL21lZGlhdGVrL210ay1jbWRxLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zb2MvbWVk aWF0ZWsvbXRrLW1tc3lzLmg+DQo+ID4gIA0KPiA+ICAjaW5jbHVkZSA8YXNtL2JhcnJpZXIuaD4N Cj4gPiAgI2luY2x1ZGUgPHNvYy9tZWRpYXRlay9zbWkuaD4NCj4gPiBAQCAtMjgsNyArMjksNyBA QA0KPiA+ICAgKiBAZW5hYmxlZDogcmVjb3JkcyB3aGV0aGVyIGNydGNfZW5hYmxlIHN1Y2NlZWRl ZA0KPiA+ICAgKiBAcGxhbmVzOiBhcnJheSBvZiA0IGRybV9wbGFuZSBzdHJ1Y3R1cmVzLCBvbmUg Zm9yIGVhY2ggb3ZlcmxheSBwbGFuZQ0KPiA+ICAgKiBAcGVuZGluZ19wbGFuZXM6IHdoZXRoZXIg YW55IHBsYW5lIGhhcyBwZW5kaW5nIGNoYW5nZXMgdG8gYmUgYXBwbGllZA0KPiA+IC0gKiBAY29u ZmlnX3JlZ3M6IG1lbW9yeSBtYXBwZWQgbW1zeXMgY29uZmlndXJhdGlvbiByZWdpc3RlciBzcGFj ZQ0KPiA+ICsgKiBAbW1zeXNfZGV2OiBwb2ludGVyIHRvIHRoZSBtbXN5cyBkZXZpY2UgZm9yIGNv bmZpZ3VyYXRpb24gcmVnaXN0ZXJzDQo+ID4gICAqIEBtdXRleDogaGFuZGxlIHRvIG9uZSBvZiB0 aGUgdGVuIGRpc3BfbXV0ZXggc3RyZWFtcw0KPiA+ICAgKiBAZGRwX2NvbXBfbnI6IG51bWJlciBv ZiBjb21wb25lbnRzIGluIGRkcF9jb21wDQo+ID4gICAqIEBkZHBfY29tcDogYXJyYXkgb2YgcG9p bnRlcnMgdGhlIG10a19kZHBfY29tcCBzdHJ1Y3R1cmVzIHVzZWQgYnkgdGhpcyBjcnRjDQo+ID4g QEAgLTUwLDcgKzUxLDcgQEAgc3RydWN0IG10a19kcm1fY3J0YyB7DQo+ID4gIAl1MzIJCQkJY21k cV9ldmVudDsNCj4gPiAgI2VuZGlmDQo+ID4gIA0KPiA+IC0Jdm9pZCBfX2lvbWVtCQkJKmNvbmZp Z19yZWdzOw0KPiA+ICsJc3RydWN0IGRldmljZQkJCSptbXN5c19kZXY7DQo+ID4gIAlzdHJ1Y3Qg bXRrX2Rpc3BfbXV0ZXgJCSptdXRleDsNCj4gPiAgCXVuc2lnbmVkIGludAkJCWRkcF9jb21wX25y Ow0KPiA+ICAJc3RydWN0IG10a19kZHBfY29tcAkJKipkZHBfY29tcDsNCj4gPiBAQCAtMjk2LDkg KzI5Nyw5IEBAIHN0YXRpYyBpbnQgbXRrX2NydGNfZGRwX2h3X2luaXQoc3RydWN0IG10a19kcm1f Y3J0YyAqbXRrX2NydGMpDQo+ID4gIAl9DQo+ID4gIA0KPiA+ICAJZm9yIChpID0gMDsgaSA8IG10 a19jcnRjLT5kZHBfY29tcF9uciAtIDE7IGkrKykgew0KPiA+IC0JCW10a19kZHBfYWRkX2NvbXBf dG9fcGF0aChtdGtfY3J0Yy0+Y29uZmlnX3JlZ3MsDQo+ID4gLQkJCQkJIG10a19jcnRjLT5kZHBf Y29tcFtpXS0+aWQsDQo+ID4gLQkJCQkJIG10a19jcnRjLT5kZHBfY29tcFtpICsgMV0tPmlkKTsN Cj4gPiArCQltdGtfbW1zeXNfZGRwX2Nvbm5lY3QobXRrX2NydGMtPm1tc3lzX2RldiwNCj4gPiAr CQkJCSAgICAgIG10a19jcnRjLT5kZHBfY29tcFtpXS0+aWQsDQo+ID4gKwkJCQkgICAgICBtdGtf Y3J0Yy0+ZGRwX2NvbXBbaSArIDFdLT5pZCk7DQo+ID4gIAkJbXRrX2Rpc3BfbXV0ZXhfYWRkX2Nv bXAobXRrX2NydGMtPm11dGV4LA0KPiA+ICAJCQkJCW10a19jcnRjLT5kZHBfY29tcFtpXS0+aWQp Ow0KPiA+ICAJfQ0KPiA+IEBAIC0zNTUsOSArMzU2LDkgQEAgc3RhdGljIHZvaWQgbXRrX2NydGNf ZGRwX2h3X2Zpbmkoc3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMpDQo+ID4gIAkJCQkJICAg bXRrX2NydGMtPmRkcF9jb21wW2ldLT5pZCk7DQo+ID4gIAltdGtfZGlzcF9tdXRleF9kaXNhYmxl KG10a19jcnRjLT5tdXRleCk7DQo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgbXRrX2NydGMtPmRkcF9j b21wX25yIC0gMTsgaSsrKSB7DQo+ID4gLQkJbXRrX2RkcF9yZW1vdmVfY29tcF9mcm9tX3BhdGgo bXRrX2NydGMtPmNvbmZpZ19yZWdzLA0KPiA+IC0JCQkJCSAgICAgIG10a19jcnRjLT5kZHBfY29t cFtpXS0+aWQsDQo+ID4gLQkJCQkJICAgICAgbXRrX2NydGMtPmRkcF9jb21wW2kgKyAxXS0+aWQp Ow0KPiA+ICsJCW10a19tbXN5c19kZHBfZGlzY29ubmVjdChtdGtfY3J0Yy0+bW1zeXNfZGV2LA0K PiA+ICsJCQkJCSBtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0tPmlkLA0KPiA+ICsJCQkJCSBtdGtfY3J0 Yy0+ZGRwX2NvbXBbaSArIDFdLT5pZCk7DQo+ID4gIAkJbXRrX2Rpc3BfbXV0ZXhfcmVtb3ZlX2Nv bXAobXRrX2NydGMtPm11dGV4LA0KPiA+ICAJCQkJCSAgIG10a19jcnRjLT5kZHBfY29tcFtpXS0+ aWQpOw0KPiA+ICAJfQ0KPiA+IEBAIC03NjEsNyArNzYyLDcgQEAgaW50IG10a19kcm1fY3J0Y19j cmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsDQo+ID4gIAlpZiAoIW10a19jcnRjKQ0K PiA+ICAJCXJldHVybiAtRU5PTUVNOw0KPiA+ICANCj4gPiAtCW10a19jcnRjLT5jb25maWdfcmVn cyA9IHByaXYtPmNvbmZpZ19yZWdzOw0KPiA+ICsJbXRrX2NydGMtPm1tc3lzX2RldiA9IHByaXYt Pm1tc3lzX2RldjsNCj4gPiAgCW10a19jcnRjLT5kZHBfY29tcF9uciA9IHBhdGhfbGVuOw0KPiA+ ICAJbXRrX2NydGMtPmRkcF9jb21wID0gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbXRrX2NydGMt PmRkcF9jb21wX25yLA0KPiA+ICAJCQkJCQlzaXplb2YoKm10a19jcnRjLT5kZHBfY29tcCksDQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5jIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMNCj4gPiBpbmRleCBiODg1ZjYw ZjQ3NGMuLjAxNGMxYmJlMWRmMiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RybV9kZHAuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2RkcC5jDQo+ID4gQEAgLTEzLDI2ICsxMyw2IEBADQo+ID4gICNpbmNsdWRlICJtdGtf ZHJtX2RkcC5oIg0KPiA+ICAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIg0KPiA+ICANCj4g PiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9PVkwwX01PVVRfRU4JMHgwNDANCj4gPiAt I2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9PVkwxX01PVVRfRU4JMHgwNDQNCj4gPiAtI2Rl ZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9PRF9NT1VUX0VOCQkweDA0OA0KPiA+IC0jZGVmaW5l IERJU1BfUkVHX0NPTkZJR19ESVNQX0dBTU1BX01PVVRfRU4JMHgwNGMNCj4gPiAtI2RlZmluZSBE SVNQX1JFR19DT05GSUdfRElTUF9VRk9FX01PVVRfRU4JMHgwNTANCj4gPiAtI2RlZmluZSBESVNQ X1JFR19DT05GSUdfRElTUF9DT0xPUjBfU0VMX0lOCTB4MDg0DQo+ID4gLSNkZWZpbmUgRElTUF9S RUdfQ09ORklHX0RJU1BfQ09MT1IxX1NFTF9JTgkweDA4OA0KPiA+IC0jZGVmaW5lIERJU1BfUkVH X0NPTkZJR19EU0lFX1NFTF9JTgkJMHgwYTQNCj4gPiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdf RFNJT19TRUxfSU4JCTB4MGE4DQo+ID4gLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RQSV9TRUxf SU4JCTB4MGFjDQo+ID4gLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVAkJ MHgwYjgNCj4gPiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VUX0VOCTB4 MGM0DQo+ID4gLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTgkweDBj OA0KPiA+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19NTVNZU19DR19DT04wCQkweDEwMA0KPiA+ IC0NCj4gPiAtI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9PVkxfTU9VVF9FTgkweDAzMA0K PiA+IC0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19PVVRfU0VMCQkJMHgwNGMNCj4gPiAtI2RlZmlu ZSBESVNQX1JFR19DT05GSUdfRFNJX1NFTAkJCTB4MDUwDQo+ID4gLSNkZWZpbmUgRElTUF9SRUdf Q09ORklHX0RQSV9TRUwJCQkweDA2NA0KPiA+IC0NCj4gPiAgI2RlZmluZSBNVDI3MDFfRElTUF9N VVRFWDBfTU9EMAkJCTB4MmMNCj4gPiAgI2RlZmluZSBNVDI3MDFfRElTUF9NVVRFWDBfU09GMAkJ CTB4MzANCj4gPiAgDQo+ID4gQEAgLTk0LDQ4ICs3NCw2IEBADQo+ID4gICNkZWZpbmUgTVVURVhf U09GX0RTSTIJCQk1DQo+ID4gICNkZWZpbmUgTVVURVhfU09GX0RTSTMJCQk2DQo+ID4gIA0KPiA+ IC0jZGVmaW5lIE9WTDBfTU9VVF9FTl9DT0xPUjAJCTB4MQ0KPiA+IC0jZGVmaW5lIE9EX01PVVRf RU5fUkRNQTAJCTB4MQ0KPiA+IC0jZGVmaW5lIE9EMV9NT1VUX0VOX1JETUExCQlCSVQoMTYpDQo+ ID4gLSNkZWZpbmUgVUZPRV9NT1VUX0VOX0RTSTAJCTB4MQ0KPiA+IC0jZGVmaW5lIENPTE9SMF9T RUxfSU5fT1ZMMAkJMHgxDQo+ID4gLSNkZWZpbmUgT1ZMMV9NT1VUX0VOX0NPTE9SMQkJMHgxDQo+ ID4gLSNkZWZpbmUgR0FNTUFfTU9VVF9FTl9SRE1BMQkJMHgxDQo+ID4gLSNkZWZpbmUgUkRNQTBf U09VVF9EUEkwCQkJMHgyDQo+ID4gLSNkZWZpbmUgUkRNQTBfU09VVF9EUEkxCQkJMHgzDQo+ID4g LSNkZWZpbmUgUkRNQTBfU09VVF9EU0kxCQkJMHgxDQo+ID4gLSNkZWZpbmUgUkRNQTBfU09VVF9E U0kyCQkJMHg0DQo+ID4gLSNkZWZpbmUgUkRNQTBfU09VVF9EU0kzCQkJMHg1DQo+ID4gLSNkZWZp bmUgUkRNQTFfU09VVF9EUEkwCQkJMHgyDQo+ID4gLSNkZWZpbmUgUkRNQTFfU09VVF9EUEkxCQkJ MHgzDQo+ID4gLSNkZWZpbmUgUkRNQTFfU09VVF9EU0kxCQkJMHgxDQo+ID4gLSNkZWZpbmUgUkRN QTFfU09VVF9EU0kyCQkJMHg0DQo+ID4gLSNkZWZpbmUgUkRNQTFfU09VVF9EU0kzCQkJMHg1DQo+ ID4gLSNkZWZpbmUgUkRNQTJfU09VVF9EUEkwCQkJMHgyDQo+ID4gLSNkZWZpbmUgUkRNQTJfU09V VF9EUEkxCQkJMHgzDQo+ID4gLSNkZWZpbmUgUkRNQTJfU09VVF9EU0kxCQkJMHgxDQo+ID4gLSNk ZWZpbmUgUkRNQTJfU09VVF9EU0kyCQkJMHg0DQo+ID4gLSNkZWZpbmUgUkRNQTJfU09VVF9EU0kz CQkJMHg1DQo+ID4gLSNkZWZpbmUgRFBJMF9TRUxfSU5fUkRNQTEJCTB4MQ0KPiA+IC0jZGVmaW5l IERQSTBfU0VMX0lOX1JETUEyCQkweDMNCj4gPiAtI2RlZmluZSBEUEkxX1NFTF9JTl9SRE1BMQkJ KDB4MSA8PCA4KQ0KPiA+IC0jZGVmaW5lIERQSTFfU0VMX0lOX1JETUEyCQkoMHgzIDw8IDgpDQo+ ID4gLSNkZWZpbmUgRFNJMF9TRUxfSU5fUkRNQTEJCTB4MQ0KPiA+IC0jZGVmaW5lIERTSTBfU0VM X0lOX1JETUEyCQkweDQNCj4gPiAtI2RlZmluZSBEU0kxX1NFTF9JTl9SRE1BMQkJMHgxDQo+ID4g LSNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTIJCTB4NA0KPiA+IC0jZGVmaW5lIERTSTJfU0VMX0lO X1JETUExCQkoMHgxIDw8IDE2KQ0KPiA+IC0jZGVmaW5lIERTSTJfU0VMX0lOX1JETUEyCQkoMHg0 IDw8IDE2KQ0KPiA+IC0jZGVmaW5lIERTSTNfU0VMX0lOX1JETUExCQkoMHgxIDw8IDE2KQ0KPiA+ IC0jZGVmaW5lIERTSTNfU0VMX0lOX1JETUEyCQkoMHg0IDw8IDE2KQ0KPiA+IC0jZGVmaW5lIENP TE9SMV9TRUxfSU5fT1ZMMQkJMHgxDQo+ID4gLQ0KPiA+IC0jZGVmaW5lIE9WTF9NT1VUX0VOX1JE TUEJCTB4MQ0KPiA+IC0jZGVmaW5lIEJMU19UT19EU0lfUkRNQTFfVE9fRFBJMQkweDgNCj4gPiAt I2RlZmluZSBCTFNfVE9fRFBJX1JETUExX1RPX0RTSQkJMHgyDQo+ID4gLSNkZWZpbmUgRFNJX1NF TF9JTl9CTFMJCQkweDANCj4gPiAtI2RlZmluZSBEUElfU0VMX0lOX0JMUwkJCTB4MA0KPiA+IC0j ZGVmaW5lIERTSV9TRUxfSU5fUkRNQQkJCTB4MQ0KPiA+ICANCj4gPiAgc3RydWN0IG10a19kaXNw X211dGV4IHsNCj4gPiAgCWludCBpZDsNCj4gPiBAQCAtMjQ2LDIwMCArMTg0LDYgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfZGRwX2RhdGEgbXQ4MTczX2RkcF9kcml2ZXJfZGF0YSA9IHsNCj4g PiAgCS5tdXRleF9zb2ZfcmVnID0gTVQyNzAxX0RJU1BfTVVURVgwX1NPRjAsDQo+ID4gIH07DQo+ ID4gIA0KPiA+IC1zdGF0aWMgdW5zaWduZWQgaW50IG10a19kZHBfbW91dF9lbihlbnVtIG10a19k ZHBfY29tcF9pZCBjdXIsDQo+ID4gLQkJCQkgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCwN Cj4gPiAtCQkJCSAgICB1bnNpZ25lZCBpbnQgKmFkZHIpDQo+ID4gLXsNCj4gPiAtCXVuc2lnbmVk IGludCB2YWx1ZTsNCj4gPiAtDQo+ID4gLQlpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAm JiBuZXh0ID09IEREUF9DT01QT05FTlRfQ09MT1IwKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JF R19DT05GSUdfRElTUF9PVkwwX01PVVRfRU47DQo+ID4gLQkJdmFsdWUgPSBPVkwwX01PVVRfRU5f Q09MT1IwOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYmIG5l eHQgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCkgew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09O RklHX0RJU1BfT1ZMX01PVVRfRU47DQo+ID4gLQkJdmFsdWUgPSBPVkxfTU9VVF9FTl9SRE1BOw0K PiA+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PRDAgJiYgbmV4dCA9PSBERFBf Q09NUE9ORU5UX1JETUEwKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9P RF9NT1VUX0VOOw0KPiA+IC0JCXZhbHVlID0gT0RfTU9VVF9FTl9SRE1BMDsNCj4gPiAtCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfVUZPRSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRf RFNJMCkgew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfVUZPRV9NT1VUX0VO Ow0KPiA+IC0JCXZhbHVlID0gVUZPRV9NT1VUX0VOX0RTSTA7DQo+ID4gLQl9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX09WTDEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMSkg ew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOOw0KPiA+ IC0JCXZhbHVlID0gT1ZMMV9NT1VUX0VOX0NPTE9SMTsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09 IEREUF9DT01QT05FTlRfR0FNTUEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX1JETUExKSB7DQo+ ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VOOw0KPiA+IC0J CXZhbHVlID0gR0FNTUFfTU9VVF9FTl9SRE1BMTsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IERE UF9DT01QT05FTlRfT0QxICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSkgew0KPiA+IC0J CSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT0RfTU9VVF9FTjsNCj4gPiAtCQl2YWx1ZSA9 IE9EMV9NT1VUX0VOX1JETUExOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVO VF9SRE1BMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KPiA+IC0JCSphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiAtCQl2YWx1ZSA9IFJETUEw X1NPVVRfRFBJMDsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAg JiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTEpIHsNCj4gPiAtCQkqYWRkciA9IERJU1BfUkVH X0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQo+ID4gLQkJdmFsdWUgPSBSRE1BMF9TT1VUX0RQ STE7DQo+ID4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdf RElTUF9SRE1BMF9TT1VUX0VOOw0KPiA+IC0JCXZhbHVlID0gUkRNQTBfU09VVF9EU0kxOw0KPiA+ IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfRFNJMikgew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRN QTBfU09VVF9FTjsNCj4gPiAtCQl2YWx1ZSA9IFJETUEwX1NPVVRfRFNJMjsNCj4gPiAtCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5U X0RTSTMpIHsNCj4gPiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRf RU47DQo+ID4gLQkJdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTM7DQo+ID4gLQl9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7 DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+ IC0JCXZhbHVlID0gUkRNQTFfU09VVF9EU0kxOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQ X0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0KPiA+IC0J CSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiAtCQl2YWx1 ZSA9IFJETUExX1NPVVRfRFNJMjsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCj4gPiAtCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQo+ID4gLQkJdmFsdWUgPSBSRE1B MV9TT1VUX0RTSTM7DQo+ID4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEx ICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JF R19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+IC0JCXZhbHVlID0gUkRNQTFfU09VVF9E UEkwOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfRFBJMSkgew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklH X0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiAtCQl2YWx1ZSA9IFJETUExX1NPVVRfRFBJMTsNCj4g PiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBf Q09NUE9ORU5UX0RQSTApIHsNCj4gPiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JE TUEyX1NPVVQ7DQo+ID4gLQkJdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTA7DQo+ID4gLQl9IGVsc2Ug aWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9E UEkxKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMl9TT1VUOw0K PiA+IC0JCXZhbHVlID0gUkRNQTJfU09VVF9EUEkxOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0g RERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KPiA+ IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiAtCQl2YWx1 ZSA9IFJETUEyX1NPVVRfRFNJMTsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPiAtCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQ7DQo+ID4gLQkJdmFsdWUgPSBSRE1BMl9T T1VUX0RTSTI7DQo+ID4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYm IG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19D T05GSUdfRElTUF9SRE1BMl9TT1VUOw0KPiA+IC0JCXZhbHVlID0gUkRNQTJfU09VVF9EU0kzOw0K PiA+IC0JfSBlbHNlIHsNCj4gPiAtCQl2YWx1ZSA9IDA7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+IC0J cmV0dXJuIHZhbHVlOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC1zdGF0aWMgdW5zaWduZWQgaW50IG10 a19kZHBfc2VsX2luKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPiAtCQkJCSAgIGVudW0g bXRrX2RkcF9jb21wX2lkIG5leHQsDQo+ID4gLQkJCQkgICB1bnNpZ25lZCBpbnQgKmFkZHIpDQo+ ID4gLXsNCj4gPiAtCXVuc2lnbmVkIGludCB2YWx1ZTsNCj4gPiAtDQo+ID4gLQlpZiAoY3VyID09 IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfQ09MT1IwKSB7DQo+ ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xPUjBfU0VMX0lOOw0KPiA+IC0J CXZhbHVlID0gQ09MT1IwX1NFTF9JTl9PVkwwOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQ X0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KPiA+IC0J CSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4gLQkJdmFsdWUgPSBEUEkw X1NFTF9JTl9SRE1BMTsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRN QTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTEpIHsNCj4gPiAtCQkqYWRkciA9IERJU1Bf UkVHX0NPTkZJR19EUElfU0VMX0lOOw0KPiA+IC0JCXZhbHVlID0gRFBJMV9TRUxfSU5fUkRNQTE7 DQo+ID4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0g RERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJ RV9TRUxfSU47DQo+ID4gLQkJdmFsdWUgPSBEU0kwX1NFTF9JTl9SRE1BMTsNCj4gPiAtCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5U X0RTSTEpIHsNCj4gPiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTjsNCj4g PiAtCQl2YWx1ZSA9IERTSTFfU0VMX0lOX1JETUExOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIgPT0g RERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0KPiA+ IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KPiA+IC0JCXZhbHVlID0g RFNJMl9TRUxfSU5fUkRNQTE7DQo+ID4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQo+ID4gLQkJKmFkZHIgPSBE SVNQX1JFR19DT05GSUdfRFNJT19TRUxfSU47DQo+ID4gLQkJdmFsdWUgPSBEU0kzX1NFTF9JTl9S RE1BMTsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4 dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPiAtCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19EUElfU0VMX0lOOw0KPiA+IC0JCXZhbHVlID0gRFBJMF9TRUxfSU5fUkRNQTI7DQo+ID4gLQl9 IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9EUEkxKSB7DQo+ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTjsN Cj4gPiAtCQl2YWx1ZSA9IERQSTFfU0VMX0lOX1JETUEyOw0KPiA+IC0JfSBlbHNlIGlmIChjdXIg PT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0K PiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KPiA+IC0JCXZhbHVl ID0gRFNJMF9TRUxfSU5fUkRNQTI7DQo+ID4gLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gLQkJKmFkZHIg PSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxfSU47DQo+ID4gLQkJdmFsdWUgPSBEU0kxX1NFTF9J Tl9SRE1BMjsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYg bmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPiAtCQkqYWRkciA9IERJU1BfUkVHX0NP TkZJR19EU0lFX1NFTF9JTjsNCj4gPiAtCQl2YWx1ZSA9IERTSTJfU0VMX0lOX1JETUEyOw0KPiA+ IC0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfRFNJMykgew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VM X0lOOw0KPiA+IC0JCXZhbHVlID0gRFNJM19TRUxfSU5fUkRNQTI7DQo+ID4gLQl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX09WTDEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9S MSkgew0KPiA+IC0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IxX1NFTF9JTjsN Cj4gPiAtCQl2YWx1ZSA9IENPTE9SMV9TRUxfSU5fT1ZMMTsNCj4gPiAtCX0gZWxzZSBpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQo+ ID4gLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJX1NFTDsNCj4gPiAtCQl2YWx1ZSA9IERT SV9TRUxfSU5fQkxTOw0KPiA+IC0JfSBlbHNlIHsNCj4gPiAtCQl2YWx1ZSA9IDA7DQo+ID4gLQl9 DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIHZhbHVlOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC1zdGF0aWMg dm9pZCBtdGtfZGRwX3NvdXRfc2VsKHZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3MsDQo+ID4gLQkJ CSAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+IC0JCQkgICAgIGVudW0gbXRrX2Rk cF9jb21wX2lkIG5leHQpDQo+ID4gLXsNCj4gPiAtCWlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9C TFMgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsNCj4gPiAtCQl3cml0ZWxfcmVsYXhl ZChCTFNfVE9fRFNJX1JETUExX1RPX0RQSTEsDQo+ID4gLQkJCSAgICAgICBjb25maWdfcmVncyAr IERJU1BfUkVHX0NPTkZJR19PVVRfU0VMKTsNCj4gPiAtCX0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gLQkJd3Jp dGVsX3JlbGF4ZWQoQkxTX1RPX0RQSV9SRE1BMV9UT19EU0ksDQo+ID4gLQkJCSAgICAgICBjb25m aWdfcmVncyArIERJU1BfUkVHX0NPTkZJR19PVVRfU0VMKTsNCj4gPiAtCQl3cml0ZWxfcmVsYXhl ZChEU0lfU0VMX0lOX1JETUEsDQo+ID4gLQkJCSAgICAgICBjb25maWdfcmVncyArIERJU1BfUkVH X0NPTkZJR19EU0lfU0VMKTsNCj4gPiAtCQl3cml0ZWxfcmVsYXhlZChEUElfU0VMX0lOX0JMUywN Cj4gPiAtCQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX0RQSV9TRUwpOw0K PiA+IC0JfQ0KPiA+IC19DQo+ID4gLQ0KPiA+IC12b2lkIG10a19kZHBfYWRkX2NvbXBfdG9fcGF0 aCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiA+IC0JCQkgICAgICBlbnVtIG10a19kZHBf Y29tcF9pZCBjdXIsDQo+ID4gLQkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpDQo+ ID4gLXsNCj4gPiAtCXVuc2lnbmVkIGludCBhZGRyLCB2YWx1ZSwgcmVnOw0KPiA+IC0NCj4gPiAt CXZhbHVlID0gbXRrX2RkcF9tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOw0KPiA+IC0JaWYgKHZh bHVlKSB7DQo+ID4gLQkJcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpIHwg dmFsdWU7DQo+ID4gLQkJd3JpdGVsX3JlbGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFkZHIpOw0K PiA+IC0JfQ0KPiA+IC0NCj4gPiAtCW10a19kZHBfc291dF9zZWwoY29uZmlnX3JlZ3MsIGN1ciwg bmV4dCk7DQo+ID4gLQ0KPiA+IC0JdmFsdWUgPSBtdGtfZGRwX3NlbF9pbihjdXIsIG5leHQsICZh ZGRyKTsNCj4gPiAtCWlmICh2YWx1ZSkgew0KPiA+IC0JCXJlZyA9IHJlYWRsX3JlbGF4ZWQoY29u ZmlnX3JlZ3MgKyBhZGRyKSB8IHZhbHVlOw0KPiA+IC0JCXdyaXRlbF9yZWxheGVkKHJlZywgY29u ZmlnX3JlZ3MgKyBhZGRyKTsNCj4gPiAtCX0NCj4gPiAtfQ0KPiA+IC0NCj4gPiAtdm9pZCBtdGtf ZGRwX3JlbW92ZV9jb21wX2Zyb21fcGF0aCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiA+ IC0JCQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+IC0JCQkJICAgZW51bSBtdGtf ZGRwX2NvbXBfaWQgbmV4dCkNCj4gPiAtew0KPiA+IC0JdW5zaWduZWQgaW50IGFkZHIsIHZhbHVl LCByZWc7DQo+ID4gLQ0KPiA+IC0JdmFsdWUgPSBtdGtfZGRwX21vdXRfZW4oY3VyLCBuZXh0LCAm YWRkcik7DQo+ID4gLQlpZiAodmFsdWUpIHsNCj4gPiAtCQlyZWcgPSByZWFkbF9yZWxheGVkKGNv bmZpZ19yZWdzICsgYWRkcikgJiB+dmFsdWU7DQo+ID4gLQkJd3JpdGVsX3JlbGF4ZWQocmVnLCBj b25maWdfcmVncyArIGFkZHIpOw0KPiA+IC0JfQ0KPiA+IC0NCj4gPiAtCXZhbHVlID0gbXRrX2Rk cF9zZWxfaW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+ID4gLQlpZiAodmFsdWUpIHsNCj4gPiAtCQly ZWcgPSByZWFkbF9yZWxheGVkKGNvbmZpZ19yZWdzICsgYWRkcikgJiB+dmFsdWU7DQo+ID4gLQkJ d3JpdGVsX3JlbGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFkZHIpOw0KPiA+IC0JfQ0KPiA+IC19 DQo+ID4gLQ0KPiA+ICBzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm10a19kaXNwX211dGV4X2dldChz dHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZCkNCj4gPiAgew0KPiA+ICAJc3RydWN0 IG10a19kZHAgKmRkcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuaCBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2RkcC5oDQo+ID4gaW5kZXggODI3YmU0MjRhMTQ4Li42YjY5MWE1N2Jl NGEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRw LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuaA0KPiA+ IEBAIC0xMiwxMyArMTIsNiBAQCBzdHJ1Y3QgcmVnbWFwOw0KPiA+ICBzdHJ1Y3QgZGV2aWNlOw0K PiA+ICBzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXg7DQo+ID4gIA0KPiA+IC12b2lkIG10a19kZHBfYWRk X2NvbXBfdG9fcGF0aCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiA+IC0JCQkgICAgICBl bnVtIG10a19kZHBfY29tcF9pZCBjdXIsDQo+ID4gLQkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21w X2lkIG5leHQpOw0KPiA+IC12b2lkIG10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKHZvaWQg X19pb21lbSAqY29uZmlnX3JlZ3MsDQo+ID4gLQkJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBj dXIsDQo+ID4gLQkJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KTsNCj4gPiAtDQo+ID4g IHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXRrX2Rpc3BfbXV0ZXhfZ2V0KHN0cnVjdCBkZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IGlkKTsNCj4gPiAgaW50IG10a19kaXNwX211dGV4X3ByZXBhcmUo c3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCk7DQo+ID4gIHZvaWQgbXRrX2Rpc3BfbXV0ZXhf YWRkX2NvbXAoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCwNCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kcnYuYw0KPiA+IGluZGV4IDhlMmQzY2I2MmFkNS4uMjA4ZjljNTI1 NmVmIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMNCj4g PiBAQCAtMTAsNiArMTAsNyBAQA0KPiA+ICAjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0K PiA+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4 L3BtX3J1bnRpbWUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1z eXMuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+DQo+ID4gIA0KPiA+ICAj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4gPiBAQCAtNDI1LDcgKzQyNiw2IEBAIHN0YXRp YyBpbnQgbXRrX2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICB7 DQo+ID4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICAJc3RydWN0IG10 a19kcm1fcHJpdmF0ZSAqcHJpdmF0ZTsNCj4gPiAtCXN0cnVjdCByZXNvdXJjZSAqbWVtOw0KPiA+ ICAJc3RydWN0IGRldmljZV9ub2RlICpub2RlOw0KPiA+ICAJc3RydWN0IGNvbXBvbmVudF9tYXRj aCAqbWF0Y2ggPSBOVUxMOw0KPiA+ICAJaW50IHJldDsNCj4gPiBAQCAtNDM2LDE0ICs0MzYsMTAg QEAgc3RhdGljIGludCBtdGtfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp DQo+ID4gIAkJcmV0dXJuIC1FTk9NRU07DQo+ID4gIA0KPiA+ICAJcHJpdmF0ZS0+ZGF0YSA9IG9m X2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOw0KPiA+IC0NCj4gPiAtCW1lbSA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4gLQlwcml2YXRlLT5j b25maWdfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7DQo+ID4gLQlpZiAo SVNfRVJSKHByaXZhdGUtPmNvbmZpZ19yZWdzKSkgew0KPiA+IC0JCXJldCA9IFBUUl9FUlIocHJp dmF0ZS0+Y29uZmlnX3JlZ3MpOw0KPiA+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGlvcmVt YXAgbW1zeXMtY29uZmlnIHJlc291cmNlOiAlZFxuIiwNCj4gPiAtCQkJcmV0KTsNCj4gPiAtCQly ZXR1cm4gcmV0Ow0KPiA+ICsJcHJpdmF0ZS0+bW1zeXNfZGV2ID0gZGV2LT5wYXJlbnQ7DQo+ID4g KwlpZiAoIXByaXZhdGUtPm1tc3lzX2Rldikgew0KPiA+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGdldCBNTVNZUyBkZXZpY2VcbiIpOw0KPiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICAJ fQ0KPiA+ICANCj4gPiAgCS8qIEl0ZXJhdGUgb3ZlciBzaWJsaW5nIERJU1AgZnVuY3Rpb24gYmxv Y2tzICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgNCj4gPiBpbmRl eCAxN2JjOTliOWY1ZDQuLmI1YmU2M2U1MzE3NiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+ID4gQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IG10a19k cm1fcHJpdmF0ZSB7DQo+ID4gIA0KPiA+ICAJc3RydWN0IGRldmljZV9ub2RlICptdXRleF9ub2Rl Ow0KPiA+ICAJc3RydWN0IGRldmljZSAqbXV0ZXhfZGV2Ow0KPiA+IC0Jdm9pZCBfX2lvbWVtICpj b25maWdfcmVnczsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKm1tc3lzX2RldjsNCj4gPiAgCXN0cnVj dCBkZXZpY2Vfbm9kZSAqY29tcF9ub2RlW0REUF9DT01QT05FTlRfSURfTUFYXTsNCj4gPiAgCXN0 cnVjdCBtdGtfZGRwX2NvbXAgKmRkcF9jb21wW0REUF9DT01QT05FTlRfSURfTUFYXTsNCj4gPiAg CWNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgKmRhdGE7DQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jIGIvZHJpdmVycy9zb2MvbWVkaWF0 ZWsvbXRrLW1tc3lzLmMNCj4gPiBpbmRleCBkYmRmZWRkMzAyZmEuLjRiMjg2YjUyNWNkMyAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYw0KPiA+ICsrKyBi L2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jDQo+ID4gQEAgLTUsOCArNSw3NiBAQA0K PiA+ICAgKi8NCj4gPiAgDQo+ID4gICNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4NCj4g PiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvb2ZfZGV2 aWNlLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaD4NCj4gPiArDQo+ID4gKyNpbmNs dWRlICIuLi8uLi9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgiDQo+ID4gKyNpbmNsdWRl ICIuLi8uLi9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaCINCj4gPiArDQo+ID4g KyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMF9NT1VUX0VOCTB4MDQwDQo+ID4gKyNk ZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOCTB4MDQ0DQo+ID4gKyNkZWZp bmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT0RfTU9VVF9FTgkJMHgwNDgNCj4gPiArI2RlZmluZSBE SVNQX1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VOCTB4MDRjDQo+ID4gKyNkZWZpbmUgRElT UF9SRUdfQ09ORklHX0RJU1BfVUZPRV9NT1VUX0VOCTB4MDUwDQo+ID4gKyNkZWZpbmUgRElTUF9S RUdfQ09ORklHX0RJU1BfQ09MT1IwX1NFTF9JTgkweDA4NA0KPiA+ICsjZGVmaW5lIERJU1BfUkVH X0NPTkZJR19ESVNQX0NPTE9SMV9TRUxfSU4JMHgwODgNCj4gPiArI2RlZmluZSBESVNQX1JFR19D T05GSUdfRFNJRV9TRUxfSU4JCTB4MGE0DQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RT SU9fU0VMX0lOCQkweDBhOA0KPiA+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lO CQkweDBhYw0KPiA+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQJCTB4 MGI4DQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTgkweDBj NA0KPiA+ICsjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU4JMHgwYzgN Cj4gPiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfTU1TWVNfQ0dfQ09OMAkJMHgxMDANCj4gPiAr DQo+ID4gKyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMX01PVVRfRU4JMHgwMzANCj4g PiArI2RlZmluZSBESVNQX1JFR19DT05GSUdfT1VUX1NFTAkJCTB4MDRjDQo+ID4gKyNkZWZpbmUg RElTUF9SRUdfQ09ORklHX0RTSV9TRUwJCQkweDA1MA0KPiA+ICsjZGVmaW5lIERJU1BfUkVHX0NP TkZJR19EUElfU0VMCQkJMHgwNjQNCj4gPiArDQo+ID4gKyNkZWZpbmUgT1ZMMF9NT1VUX0VOX0NP TE9SMAkJCTB4MQ0KPiA+ICsjZGVmaW5lIE9EX01PVVRfRU5fUkRNQTAJCQkweDENCj4gPiArI2Rl ZmluZSBPRDFfTU9VVF9FTl9SRE1BMQkJCUJJVCgxNikNCj4gPiArI2RlZmluZSBVRk9FX01PVVRf RU5fRFNJMAkJCTB4MQ0KPiA+ICsjZGVmaW5lIENPTE9SMF9TRUxfSU5fT1ZMMAkJCTB4MQ0KPiA+ ICsjZGVmaW5lIE9WTDFfTU9VVF9FTl9DT0xPUjEJCQkweDENCj4gPiArI2RlZmluZSBHQU1NQV9N T1VUX0VOX1JETUExCQkJMHgxDQo+ID4gKyNkZWZpbmUgUkRNQTBfU09VVF9EUEkwCQkJCTB4Mg0K PiA+ICsjZGVmaW5lIFJETUEwX1NPVVRfRFBJMQkJCQkweDMNCj4gPiArI2RlZmluZSBSRE1BMF9T T1VUX0RTSTEJCQkJMHgxDQo+ID4gKyNkZWZpbmUgUkRNQTBfU09VVF9EU0kyCQkJCTB4NA0KPiA+ ICsjZGVmaW5lIFJETUEwX1NPVVRfRFNJMwkJCQkweDUNCj4gPiArI2RlZmluZSBSRE1BMV9TT1VU X0RQSTAJCQkJMHgyDQo+ID4gKyNkZWZpbmUgUkRNQTFfU09VVF9EUEkxCQkJCTB4Mw0KPiA+ICsj ZGVmaW5lIFJETUExX1NPVVRfRFNJMQkJCQkweDENCj4gPiArI2RlZmluZSBSRE1BMV9TT1VUX0RT STIJCQkJMHg0DQo+ID4gKyNkZWZpbmUgUkRNQTFfU09VVF9EU0kzCQkJCTB4NQ0KPiA+ICsjZGVm aW5lIFJETUEyX1NPVVRfRFBJMAkJCQkweDINCj4gPiArI2RlZmluZSBSRE1BMl9TT1VUX0RQSTEJ CQkJMHgzDQo+ID4gKyNkZWZpbmUgUkRNQTJfU09VVF9EU0kxCQkJCTB4MQ0KPiA+ICsjZGVmaW5l IFJETUEyX1NPVVRfRFNJMgkJCQkweDQNCj4gPiArI2RlZmluZSBSRE1BMl9TT1VUX0RTSTMJCQkJ MHg1DQo+ID4gKyNkZWZpbmUgRFBJMF9TRUxfSU5fUkRNQTEJCQkweDENCj4gPiArI2RlZmluZSBE UEkwX1NFTF9JTl9SRE1BMgkJCTB4Mw0KPiA+ICsjZGVmaW5lIERQSTFfU0VMX0lOX1JETUExCQkJ KDB4MSA8PCA4KQ0KPiA+ICsjZGVmaW5lIERQSTFfU0VMX0lOX1JETUEyCQkJKDB4MyA8PCA4KQ0K PiA+ICsjZGVmaW5lIERTSTBfU0VMX0lOX1JETUExCQkJMHgxDQo+ID4gKyNkZWZpbmUgRFNJMF9T RUxfSU5fUkRNQTIJCQkweDQNCj4gPiArI2RlZmluZSBEU0kxX1NFTF9JTl9SRE1BMQkJCTB4MQ0K PiA+ICsjZGVmaW5lIERTSTFfU0VMX0lOX1JETUEyCQkJMHg0DQo+ID4gKyNkZWZpbmUgRFNJMl9T RUxfSU5fUkRNQTEJCQkoMHgxIDw8IDE2KQ0KPiA+ICsjZGVmaW5lIERTSTJfU0VMX0lOX1JETUEy CQkJKDB4NCA8PCAxNikNCj4gPiArI2RlZmluZSBEU0kzX1NFTF9JTl9SRE1BMQkJCSgweDEgPDwg MTYpDQo+ID4gKyNkZWZpbmUgRFNJM19TRUxfSU5fUkRNQTIJCQkoMHg0IDw8IDE2KQ0KPiA+ICsj ZGVmaW5lIENPTE9SMV9TRUxfSU5fT1ZMMQkJCTB4MQ0KPiA+ICsNCj4gPiArI2RlZmluZSBPVkxf TU9VVF9FTl9SRE1BCQkJMHgxDQo+ID4gKyNkZWZpbmUgQkxTX1RPX0RTSV9SRE1BMV9UT19EUEkx CQkweDgNCj4gPiArI2RlZmluZSBCTFNfVE9fRFBJX1JETUExX1RPX0RTSQkJCTB4Mg0KPiA+ICsj ZGVmaW5lIERTSV9TRUxfSU5fQkxTCQkJCTB4MA0KPiA+ICsjZGVmaW5lIERQSV9TRUxfSU5fQkxT CQkJCTB4MA0KPiA+ICsjZGVmaW5lIERTSV9TRUxfSU5fUkRNQQkJCQkweDENCj4gPiAgDQo+ID4g IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgew0KPiA+ICAJY29uc3QgY2hhciAqY2xrX2Ry aXZlcjsNCj4gPiBAQCAtMTYsMTAgKzg0LDIyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19t bXN5c19kcml2ZXJfZGF0YSBtdDgxNzNfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQo+ID4gIAkuY2xr X2RyaXZlciA9ICJjbGstbXQ4MTczLW1tIiwNCj4gPiAgfTsNCj4gPiAgDQo+ID4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgbXRrX21tc3lzX2RkcF9tb3V0X2VuKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1 ciwNCj4gPiArCQkJCQkgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQsDQo+ID4gKwkJCQkJICB1 bnNpZ25lZCBpbnQgKmFkZHIpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGludCB2YWx1ZTsNCj4g PiArDQo+ID4gKwlpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfQ09MT1IwKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9P VkwwX01PVVRfRU47DQo+ID4gKwkJdmFsdWUgPSBPVkwwX01PVVRfRU5fQ09MT1IwOw0KPiA+ICsJ fSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9SRE1BMCkgew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMX01P VVRfRU47DQo+ID4gKwkJdmFsdWUgPSBPVkxfTU9VVF9FTl9SRE1BOw0KPiA+ICsJfSBlbHNlIGlm IChjdXIgPT0gRERQX0NPTVBPTkVOVF9PRDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX1JETUEw KSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PRF9NT1VUX0VOOw0KPiA+ ICsJCXZhbHVlID0gT0RfTU9VVF9FTl9SRE1BMDsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IERE UF9DT01QT05FTlRfVUZPRSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+ICsJ CSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfVUZPRV9NT1VUX0VOOw0KPiA+ICsJCXZhbHVl ID0gVUZPRV9NT1VUX0VOX0RTSTA7DQo+ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX09WTDEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMSkgew0KPiA+ICsJCSphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOOw0KPiA+ICsJCXZhbHVlID0gT1ZM MV9NT1VUX0VOX0NPTE9SMTsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRf R0FNTUEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX1JETUExKSB7DQo+ID4gKwkJKmFkZHIgPSBE SVNQX1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VOOw0KPiA+ICsJCXZhbHVlID0gR0FNTUFf TU9VVF9FTl9SRE1BMTsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT0Qx ICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSkgew0KPiA+ICsJCSphZGRyID0gRElTUF9S RUdfQ09ORklHX0RJU1BfT0RfTU9VVF9FTjsNCj4gPiArCQl2YWx1ZSA9IE9EMV9NT1VUX0VOX1JE TUExOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklH X0RJU1BfUkRNQTBfU09VVF9FTjsNCj4gPiArCQl2YWx1ZSA9IFJETUEwX1NPVVRfRFBJMDsNCj4g PiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBf Q09NUE9ORU5UX0RQSTEpIHsNCj4gPiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JE TUEwX1NPVVRfRU47DQo+ID4gKwkJdmFsdWUgPSBSRE1BMF9TT1VUX0RQSTE7DQo+ID4gKwl9IGVs c2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVO VF9EU0kxKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VU X0VOOw0KPiA+ICsJCXZhbHVlID0gUkRNQTBfU09VVF9EU0kxOw0KPiA+ICsJfSBlbHNlIGlmIChj dXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikg ew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9FTjsNCj4g PiArCQl2YWx1ZSA9IFJETUEwX1NPVVRfRFNJMjsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IERE UF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCj4gPiAr CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQo+ID4gKwkJdmFs dWUgPSBSRE1BMF9TT1VUX0RTSTM7DQo+ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ID4gKwkJKmFkZHIg PSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KPiA+ICsJCXZhbHVlID0gUkRN QTFfU09VVF9EU0kxOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1B MSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMikgew0KPiA+ICsJCSphZGRyID0gRElTUF9S RUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCj4gPiArCQl2YWx1ZSA9IFJETUExX1NPVVRf RFNJMjsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4 dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCj4gPiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19ESVNQX1JETUExX1NPVVRfRU47DQo+ID4gKwkJdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTM7DQo+ ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9EUEkwKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9S RE1BMV9TT1VUX0VOOw0KPiA+ICsJCXZhbHVlID0gUkRNQTFfU09VVF9EUEkwOw0KPiA+ICsJfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFBJMSkgew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09V VF9FTjsNCj4gPiArCQl2YWx1ZSA9IFJETUExX1NPVVRfRFBJMTsNCj4gPiArCX0gZWxzZSBpZiAo Y3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTAp IHsNCj4gPiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQ7DQo+ID4g KwkJdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTA7DQo+ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gKwkJ KmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMl9TT1VUOw0KPiA+ICsJCXZhbHVlID0g UkRNQTJfU09VVF9EUEkxOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9S RE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KPiA+ICsJCSphZGRyID0gRElT UF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCj4gPiArCQl2YWx1ZSA9IFJETUEyX1NPVVRf RFNJMTsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4 dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19ESVNQX1JETUEyX1NPVVQ7DQo+ID4gKwkJdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTI7DQo+ID4g Kwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NP TVBPTkVOVF9EU0kzKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1B Ml9TT1VUOw0KPiA+ICsJCXZhbHVlID0gUkRNQTJfU09VVF9EU0kzOw0KPiA+ICsJfSBlbHNlIHsN Cj4gPiArCQl2YWx1ZSA9IDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHZhbHVlOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10a19tbXN5c19kZHBfc2Vs X2luKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCj4gPiArCQkJCQkgZW51bSBtdGtfZGRwX2Nv bXBfaWQgbmV4dCwNCj4gPiArCQkJCQkgdW5zaWduZWQgaW50ICphZGRyKQ0KPiA+ICt7DQo+ID4g Kwl1bnNpZ25lZCBpbnQgdmFsdWU7DQo+ID4gKw0KPiA+ICsJaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX09WTDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMCkgew0KPiA+ICsJCSphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IwX1NFTF9JTjsNCj4gPiArCQl2YWx1ZSA9IENP TE9SMF9TRUxfSU5fT1ZMMDsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRf UkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPiArCQkqYWRkciA9IERJ U1BfUkVHX0NPTkZJR19EUElfU0VMX0lOOw0KPiA+ICsJCXZhbHVlID0gRFBJMF9TRUxfSU5fUkRN QTE7DQo+ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdf RFBJX1NFTF9JTjsNCj4gPiArCQl2YWx1ZSA9IERQSTFfU0VMX0lOX1JETUExOw0KPiA+ICsJfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFNJMCkgew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0K PiA+ICsJCXZhbHVlID0gRFNJMF9TRUxfSU5fUkRNQTE7DQo+ID4gKwl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQo+ ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxfSU47DQo+ID4gKwkJdmFsdWUg PSBEU0kxX1NFTF9JTl9SRE1BMTsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCj4gPiArCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPiArCQl2YWx1ZSA9IERTSTJfU0VMX0lO X1JETUExOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFNJMykgew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09O RklHX0RTSU9fU0VMX0lOOw0KPiA+ICsJCXZhbHVlID0gRFNJM19TRUxfSU5fUkRNQTE7DQo+ID4g Kwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NP TVBPTkVOVF9EUEkwKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9J TjsNCj4gPiArCQl2YWx1ZSA9IERQSTBfU0VMX0lOX1JETUEyOw0KPiA+ICsJfSBlbHNlIGlmIChj dXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkg ew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxfSU47DQo+ID4gKwkJdmFs dWUgPSBEUEkxX1NFTF9JTl9SRE1BMjsNCj4gPiArCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01Q T05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsNCj4gPiArCQkqYWRk ciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPiArCQl2YWx1ZSA9IERTSTBfU0VM X0lOX1JETUEyOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAm JiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KPiA+ICsJCSphZGRyID0gRElTUF9SRUdf Q09ORklHX0RTSU9fU0VMX0lOOw0KPiA+ICsJCXZhbHVlID0gRFNJMV9TRUxfSU5fUkRNQTI7DQo+ ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9EU0kyKSB7DQo+ID4gKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9T RUxfSU47DQo+ID4gKwkJdmFsdWUgPSBEU0kyX1NFTF9JTl9SRE1BMjsNCj4gPiArCX0gZWxzZSBp ZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RT STMpIHsNCj4gPiArCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCj4gPiAr CQl2YWx1ZSA9IERTSTNfU0VMX0lOX1JETUEyOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQ X0NPTVBPTkVOVF9PVkwxICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9DT0xPUjEpIHsNCj4gPiAr CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX0NPTE9SMV9TRUxfSU47DQo+ID4gKwkJdmFs dWUgPSBDT0xPUjFfU0VMX0lOX09WTDE7DQo+ID4gKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09N UE9ORU5UX0JMUyAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+ICsJCSphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RTSV9TRUw7DQo+ID4gKwkJdmFsdWUgPSBEU0lfU0VMX0lOX0JM UzsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJdmFsdWUgPSAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCXJldHVybiB2YWx1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgbXRrX21t c3lzX2RkcF9zb3V0X3NlbCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiA+ICsJCQkJICAg ZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICsJCQkJICAgZW51bSBtdGtfZGRwX2NvbXBf aWQgbmV4dCkNCj4gPiArew0KPiA+ICsJaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX0JMUyAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KPiA+ICsJCXdyaXRlbF9yZWxheGVkKEJMU19U T19EU0lfUkRNQTFfVE9fRFBJMSwNCj4gPiArCQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9S RUdfQ09ORklHX09VVF9TRUwpOw0KPiA+ICsJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVO VF9CTFMgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCj4gPiArCQl3cml0ZWxfcmVs YXhlZChCTFNfVE9fRFBJX1JETUExX1RPX0RTSSwNCj4gPiArCQkJICAgICAgIGNvbmZpZ19yZWdz ICsgRElTUF9SRUdfQ09ORklHX09VVF9TRUwpOw0KPiA+ICsJCXdyaXRlbF9yZWxheGVkKERTSV9T RUxfSU5fUkRNQSwNCj4gPiArCQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklH X0RTSV9TRUwpOw0KPiA+ICsJCXdyaXRlbF9yZWxheGVkKERQSV9TRUxfSU5fQkxTLA0KPiA+ICsJ CQkgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfRFBJX1NFTCk7DQo+ID4gKwl9 DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgbXRrX21tc3lzX2RkcF9jb25uZWN0KHN0cnVjdCBk ZXZpY2UgKmRldiwNCj4gPiArCQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICsJ CQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KQ0KPiA+ICt7DQo+ID4gKwl2b2lkIF9faW9t ZW0gKmNvbmZpZ19yZWdzID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKwl1bnNpZ25lZCBp bnQgYWRkciwgdmFsdWUsIHJlZzsNCj4gPiArDQo+ID4gKwl2YWx1ZSA9IG10a19tbXN5c19kZHBf bW91dF9lbihjdXIsIG5leHQsICZhZGRyKTsNCj4gPiArCWlmICh2YWx1ZSkgew0KPiA+ICsJCXJl ZyA9IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3MgKyBhZGRyKSB8IHZhbHVlOw0KPiA+ICsJCXdy aXRlbF9yZWxheGVkKHJlZywgY29uZmlnX3JlZ3MgKyBhZGRyKTsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwltdGtfbW1zeXNfZGRwX3NvdXRfc2VsKGNvbmZpZ19yZWdzLCBjdXIsIG5leHQpOw0KPiA+ ICsNCj4gPiArCXZhbHVlID0gbXRrX21tc3lzX2RkcF9zZWxfaW4oY3VyLCBuZXh0LCAmYWRkcik7 DQo+ID4gKwlpZiAodmFsdWUpIHsNCj4gPiArCQlyZWcgPSByZWFkbF9yZWxheGVkKGNvbmZpZ19y ZWdzICsgYWRkcikgfCB2YWx1ZTsNCj4gPiArCQl3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19y ZWdzICsgYWRkcik7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgbXRrX21tc3lz X2RkcF9kaXNjb25uZWN0KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArCQkJICAgICAgZW51bSBt dGtfZGRwX2NvbXBfaWQgY3VyLA0KPiA+ICsJCQkgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBu ZXh0KQ0KPiA+ICt7DQo+ID4gKwl2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQo+ID4gKwl1bnNpZ25lZCBpbnQgYWRkciwgdmFsdWUsIHJlZzsNCj4gPiAr DQo+ID4gKwl2YWx1ZSA9IG10a19tbXN5c19kZHBfbW91dF9lbihjdXIsIG5leHQsICZhZGRyKTsN Cj4gPiArCWlmICh2YWx1ZSkgew0KPiA+ICsJCXJlZyA9IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3Jl Z3MgKyBhZGRyKSAmIH52YWx1ZTsNCj4gPiArCQl3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19y ZWdzICsgYWRkcik7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdmFsdWUgPSBtdGtfbW1zeXNfZGRw X3NlbF9pbihjdXIsIG5leHQsICZhZGRyKTsNCj4gPiArCWlmICh2YWx1ZSkgew0KPiA+ICsJCXJl ZyA9IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3MgKyBhZGRyKSAmIH52YWx1ZTsNCj4gPiArCQl3 cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdzICsgYWRkcik7DQo+ID4gKwl9DQo+ID4gK30N Cj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgbXRrX21tc3lzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ID4gIHsNCj4gPiAgCWNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVy X2RhdGEgKmRhdGE7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqY2xrczsNCj4gPiArCXZvaWQgX19pb21lbSAqY29u ZmlnX3JlZ3M7DQo+ID4gKwlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsNCj4gPiArCWludCByZXQ7DQo+ ID4gKw0KPiA+ICsJbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAwKTsNCj4gPiArCWNvbmZpZ19yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg bWVtKTsNCj4gPiArCWlmIChJU19FUlIoY29uZmlnX3JlZ3MpKSB7DQo+ID4gKwkJcmV0ID0gUFRS X0VSUihjb25maWdfcmVncyk7DQo+ID4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW9yZW1h cCBtbXN5cy1jb25maWcgcmVzb3VyY2U6ICVkXG4iLA0KPiA+ICsJCQlyZXQpOw0KPiA+ICsJCXJl dHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl diwgY29uZmlnX3JlZ3MpOw0KPiA+ICANCj4gPiAgCWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNo X2RhdGEoJnBkZXYtPmRldik7DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaCBiL2luY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210 ay1tbXN5cy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjdiYWI1ZDlhM2QzMQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9pbmNsdWRlL2xp bnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMuaA0KPiA+IEBAIC0wLDAgKzEsMjAgQEANCj4gPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPiA+ICsvKg0KPiA+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTUgTWVkaWFUZWsgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX19NVEtfTU1TWVNfSA0KPiA+ICsjZGVmaW5lIF9fTVRLX01NU1lTX0gNCj4g PiArDQo+ID4gK2VudW0gbXRrX2RkcF9jb21wX2lkOw0KPiA+ICtzdHJ1Y3QgZGV2aWNlOw0KPiA+ ICsNCj4gPiArdm9pZCBtdGtfbW1zeXNfZGRwX2Nvbm5lY3Qoc3RydWN0IGRldmljZSAqZGV2LA0K PiA+ICsJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsDQo+ID4gKwkJCSAgIGVudW0gbXRr X2RkcF9jb21wX2lkIG5leHQpOw0KPiA+ICsNCj4gPiArdm9pZCBtdGtfbW1zeXNfZGRwX2Rpc2Nv bm5lY3Qoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ICsJCQkgICAgICBlbnVtIG10a19kZHBfY29t cF9pZCBjdXIsDQo+ID4gKwkJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpOw0KPiA+ ICsNCj4gPiArI2VuZGlmIC8qIF9fTVRLX01NU1lTX0ggKi8NCj4gPiANCg0K