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=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B2E8C07E9B for ; Tue, 20 Jul 2021 06:32:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0B0C060FF4 for ; Tue, 20 Jul 2021 06:32:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235503AbhGTFvt (ORCPT ); Tue, 20 Jul 2021 01:51:49 -0400 Received: from mail-eopbgr1410128.outbound.protection.outlook.com ([40.107.141.128]:54928 "EHLO JPN01-OS2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S236186AbhGTFvo (ORCPT ); Tue, 20 Jul 2021 01:51:44 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hv2D4YgJg2SOpDh5JkAdQJtW92bj6/17oi9YGFmseOY7kA3ubIvKDZP6iTlMK+hV5BIGv46M5zT3zC/8x+X59Y5jv//c1IB0FzgUXUCuOsUmpkFprOlfCofkE2Zb7YrpEx49k5zXaVYcXSPR58+oZhP3DVX7F9xiv6hvIdnBrh4rNWFo6YH0luQYkCxWQ3rKG7xP/lmJIGkfWoIOWA/o/s/taG5AbBForIswUJoKODrEcq5z/suE3zr8X3aMtZdqWF1/sGKM+O0jpPG1ZUSRTCzw0wHZ9lWHiF8hyr9lfmWCopOyEi9+tOv8KjIGDVE5VzPcyjCfZkRAlDXq8UPB7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ravL9GV1YrwyFRRDHM12HlZ033dnCwr/33xK0X9Dhis=; b=T93+41eulFweSud0m8c3vSecerOD7N8YZ9PPpXqlv9XWC/fHXWGEVCIQthLZsMH7Gec7yKy7LaNUOtlguEYmWHvi+yFKTnYz+sjgUjk3s1XHBXj9pYGNAJzq2YSnHS1SetUsGoYOZNM4csEbtEUF3ctpcp2TAi78v/KzGzxDp0sEAH/plr1lf3D36BwHwB8H8Y4OHjFPD1wJMIiC58Kn/ZiOvvD7A7B/q/BuYEhL6pyZ0oLlPmB0eduz4KOoKZVvvqeXtNk6EuOs47Z6CHvLwv58LohKuEL74ogx9+xL4TWUVzssn2N4lLsEBd8Zgq2eF1vb1sovyXYYLH+Wujezmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bp.renesas.com; dmarc=pass action=none header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector2-renesasgroup-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ravL9GV1YrwyFRRDHM12HlZ033dnCwr/33xK0X9Dhis=; b=To3rPoSpPYCK3jQaxM4YEfmfpjKcbTzShGHOGSPnbJLBP2ova1hrcpWjS2xZoFTozy+0ds1OvHgxlfK/JINwzZskHqjZYmqfEgJpGk4aBqYkTQQoGFsv77BQ68Iq7UMtTfIHDb4a/kYp0BoZhJJl8DV0hFM20RUCg0I4KSbLGdc= Received: from OS0PR01MB5922.jpnprd01.prod.outlook.com (2603:1096:604:bb::5) by OSAPR01MB4803.jpnprd01.prod.outlook.com (2603:1096:604:68::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21; Tue, 20 Jul 2021 06:32:17 +0000 Received: from OS0PR01MB5922.jpnprd01.prod.outlook.com ([fe80::c6f:e31f:eaa9:60fe]) by OS0PR01MB5922.jpnprd01.prod.outlook.com ([fe80::c6f:e31f:eaa9:60fe%9]) with mapi id 15.20.4331.034; Tue, 20 Jul 2021 06:32:17 +0000 From: Biju Das To: Sergei Shtylyov , "David S. Miller" , Jakub Kicinski CC: Geert Uytterhoeven , Sergey Shtylyov , Adam Ford , Florian Fainelli , Yoshihiro Shimoda , Andrew Gabbasov , Yuusuke Ashizuka , "netdev@vger.kernel.org" , "linux-renesas-soc@vger.kernel.org" , Chris Paterson , Biju Das , Prabhakar Mahadev Lad Subject: RE: [PATCH/RFC 2/2] ravb: Add GbEthernet driver support Thread-Topic: [PATCH/RFC 2/2] ravb: Add GbEthernet driver support Thread-Index: AQHXeMAjAlRFQ0Sz3UilaOpIkkO4q6tKy3mAgACbuEA= Date: Tue, 20 Jul 2021 06:32:16 +0000 Message-ID: References: <20210714145408.4382-1-biju.das.jz@bp.renesas.com> <20210714145408.4382-3-biju.das.jz@bp.renesas.com> <1bb4d076-03cf-96d3-852c-a80aa38fa8e7@gmail.com> In-Reply-To: <1bb4d076-03cf-96d3-852c-a80aa38fa8e7@gmail.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=bp.renesas.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 30d826af-76f7-4d1c-4ee0-08d94b481e80 x-ms-traffictypediagnostic: OSAPR01MB4803: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:517; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xAJgc76dXU8RLTYeVdEvi318JTBK/Uy+kpDvvdMcMiPfe9h/xr7HX+PzXoXy2Hfat64MIdfm7CzG9kt6k4Q9jniazsWvYX+QYueLScSPtHJTrhtUFIgiSeV45Us4qC4jeN9pbp+Pr4LTT+7jHWm0cRuEdLtM1g5zbiqNreeHC+AOkDx7gKAnmHTLA6kZE9s1q/1FzSf5wwOzUbX/QZOv+2scNFKqed7zRAYJzUOM1gZ31oAqTBzISzhRuRahgRfVJPGyiyVt+wIiheXLi7q/zhooQFx52buIWumURfA0WV91Li9ea9r4Qbo5/zVfdEXiFl6MjSBYq9RThbdUVPDFx8T9LU37Ldmli+QyWKKzV9tBx/NBSKtgVqQQhbZZICe+Ak1BHp2MNiwHDbLUPqh68Zm1D2mgs2wEDw0Z+uqKDUL4boubiYBRSHlLmgpp0t7/0m2qsMMNsNaafJsIVO+rC5toaTmT8PgvdJ+/407Uo+H0w/LrK44vVH+DHFX7mVv8SubgnqoNIgODw1vzEUP+OpjkS6c9pYj1rZAM7bihLa51lRze/DzyrbrRavKLspyf0fKbjmlU7XrON1jHgt2vabTcDIiaCUA+pfQwP8m8jTvw/rvlIOvJ2P0a5tOL/TYgfziZzagqa5Fl59j+OyUVcGMrF4NX86rzl/QINYCC/DWfHK4TyJMoaIIEeuwxi4WD7oCQJ17wg1IL5UlL3YRjkg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5922.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(396003)(376002)(39850400004)(346002)(136003)(366004)(71200400001)(30864003)(54906003)(2906002)(38100700002)(55016002)(9686003)(5660300002)(33656002)(26005)(316002)(110136005)(83380400001)(186003)(66476007)(122000001)(8676002)(4326008)(6506007)(7416002)(86362001)(478600001)(64756008)(66556008)(76116006)(107886003)(66946007)(66446008)(52536014)(53546011)(8936002)(7696005)(38070700004)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZFBOUUN2QXVHQTJNVk81SHBGOFlvVHlKMVFlYmE4UDhmbnRIY1RoZDE2aTlH?= =?utf-8?B?TlFXWlNsdkhRaVlxWUVOUWIxNVdVd21SWjBKWVJXOVpnNEs2cWZ6QnFSWlAy?= =?utf-8?B?TVd6TWNGZ1lITUI1R2cxQkZMZGhoaFhCODJtcmxwUzN0Qk1tR0YyaU9oMnlk?= =?utf-8?B?Ui9Gb29ybHVpL0VnQ1kxMnU1VFBFaGhvQ1JTbFd4b2lXcnpWdCszM3VwTVJQ?= =?utf-8?B?UVdPQ0VjUk1oeGlSeE9uSk92QzdJMFhJY05kU2JGenM4S0RDTldGQlNJOEpF?= =?utf-8?B?WUZOaXdITUxNSDRqa09pdEl0eWJBQXhSQ0ZMTlVvZyt2VHMyYmtHeHdoeTBW?= =?utf-8?B?b1N3Qyt4eElmcmtoY0M4UnVKWGdqbjBDQlNLT2pDVVRzZVBmYzNmRE1pNFdo?= =?utf-8?B?bUE4dHd2cDM5cXdBWG0zdk5OWXdEQUJQNVMxS2dGdElqMXBobzk3eGZycGVL?= =?utf-8?B?TU90SHRhZXdXZUFSdGZKT0lheDVtTXlpQXFmbXU0OVVpM3FrWi9qZ0x2RWF3?= =?utf-8?B?Ukt4MnNsaSt2bjlwZnF1TkowSVVrb3FwekhjZEdVZW9GUk9OdkRHWWxZSldw?= =?utf-8?B?aDY4ZUs3QVErNGpzaUZNS0loN0hwYkVKNTVnTmprU0tkdGcya2Y5bmtLNHc2?= =?utf-8?B?bWR4N1Y0WGR6SDg4a0VGemEzYlY0cVJFQjM3MmgvSkxSc3hFZEFpdjNZSlJP?= =?utf-8?B?ajZBMk1GYzhGZVAwVjR1UkdqMEZNVlVhWWZaTUZrelc3b3J2STg1WURZUkg3?= =?utf-8?B?Y2JpWTNnRFZjclA2S251Q1BKVlBNZTQrcHg1Qk4zT0VkaVlNc1E2cGk5bndI?= =?utf-8?B?b0J3cnRYeHRHZDJLaE1GZzM3cWJCQWJ5YUVkQTRqeDhlZlNvRnpNSU9lOUNk?= =?utf-8?B?a1grVjNLUG9JTkdRcEtQaDg0Tm85OEZucGg0OTdaYjAwVVV3UWw1Q2kyS1dH?= =?utf-8?B?UTJ5VTFNdEt4SUhFTUUwZUQ3VFhwRUNWdkR6UWNiWjVvOWliTnlHWng3emVI?= =?utf-8?B?QW5zNlZiOWIwNHcrNFppcHM4aEhlYlVGbFRZaFJDSDd1Q1pjaXlheit0RjYv?= =?utf-8?B?c3dyQlZtSElsaGdMVUpqL3dMNTZ4Q0l1MFNwVXZtcEEvYUR0eFNJTXRCMWRH?= =?utf-8?B?R1JLaEZhWnk4aEtGc1B1MFIzY09EbTBGZ25aRjFDZUxRaUNsK1BLcnlleUlZ?= =?utf-8?B?ZGVVUEcraGZCTysxeEppM2xDZGxaNHM2SExqZzdoc2lWUWY2SlB2MXVSNGpS?= =?utf-8?B?T3BzamlZOGpMNE43dVBzNUNXTDB4clBETGdDR28vN05sRUZHak5TaGM1NWZw?= =?utf-8?B?ZzFLSjVzWU14T2tOQTZSek91Nm9GcnlJaFlQUU1kRFdUZjlBUGtEdDVkT3d1?= =?utf-8?B?WS9lVHU4RG1Jb1JkL1ZXVEVSUVlrdjRaeXhrRlpCN0lVUTVBMkNZKzFvQXlK?= =?utf-8?B?U3FJMTdXaWovK2p0aFJER1ZnWTNmRWJ1U0U2eFJZd283TEttc2Z1eDd4V0l0?= =?utf-8?B?U3h2Z1Z0R1NyellVN3FzZE5yeGRPZzZsRWZodU5jbHE0NThCRTg1Y1ZMeUNL?= =?utf-8?B?MkttbVI3K1pQUWJTZS9EWGFsZ2laZlNMbUliTFZMSFN2NmdFbUhVdkxaaEl2?= =?utf-8?B?eWl4QU1Tb0s5NGd4VThNNG4wZUtJY3k0RjlXTWt3S0VtT0lyeDZDRS9hVWQ0?= =?utf-8?B?ZEUwd0dzbTgxY0RTTnA3MEFqaW9QSzFYY000UERLNGVXcTRzQnVacDJSTWVK?= =?utf-8?Q?2LwnhLoIXoGAwvJ68z8h+33aZmYQI+7JLC1uBry?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5922.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30d826af-76f7-4d1c-4ee0-08d94b481e80 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2021 06:32:16.8859 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: EB5LaOEAM9XBO87ENf0xTAGXxlQ17GnT631hu/S+slaaCG4PF20h1eySeaekSN9cfYOX8GXBpa7KJj+CB07SyCufLOmnidlvb9Cvm+7I+qM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSAPR01MB4803 Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org DQpIaSBTZXJnZWksDQoNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLg0KDQo+IFN1YmplY3Q6IFJl OiBbUEFUQ0gvUkZDIDIvMl0gcmF2YjogQWRkIEdiRXRoZXJuZXQgZHJpdmVyIHN1cHBvcnQNCj4g DQo+IEhlbGxvIQ0KPiANCj4gT24gNy8xNC8yMSA1OjU0IFBNLCBCaWp1IERhcyB3cm90ZToNCj4g DQo+ID4gQWRkIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIHN1cHBvcnQuDQo+ID4NCj4gPiBUaGUg R2lnYWJpdCBFdGhlcm5lciBJUCBjb25zaXN0cyBvZiBFdGhlcm5ldCBjb250cm9sbGVyIChFLU1B QyksDQo+ID4gSW50ZXJuYWwgVENQL0lQIE9mZmxvYWQgRW5naW5lIChUT0UpIGFuZCBEZWRpY2F0 ZWQgRGlyZWN0IG1lbW9yeQ0KPiA+IGFjY2VzcyBjb250cm9sbGVyIChETUFDKS4NCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IEJpanUgRGFzIDxiaWp1LmRhcy5qekBicC5yZW5lc2FzLmNvbT4NCj4g PiAtLS0NCj4gPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiLmggICAgICB8ICA5 MiArKy0NCj4gPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYyB8IDY4 Mw0KPiA+ICsrKysrKysrKysrKysrKysrKysrLS0tDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgNjgy IGluc2VydGlvbnMoKyksIDkzIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yi5oDQo+ID4gYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9yZW5lc2FzL3JhdmIuaA0KPiA+IGluZGV4IDgwZTYyY2EyZTNkMy4uNGU2NTY4M2ZiNDU4 IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yi5oDQo+ ID4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiLmgNCj4gWy4uLl0NCj4g PiBAQCAtMTgxLDI1ICsxODMsMzkgQEAgZW51bSByYXZiX3JlZyB7DQo+ID4NCj4gPiAgCS8qIEUt TUFDIHJlZ2lzdGVycyAqLw0KPiA+ICAJRUNNUgk9IDB4MDUwMCwNCj4gPiArCUNYUjIwCT0gMHgw NTAwLAkvKiBEb2N1bWVudGVkIGZvciBSWi9HMkwgb25seSAqLw0KPiANCj4gICAgVGhpcyBpcyB0 aGUgc2FtZSByZWdpc3RlciBhcyBFQ01SLiBUaG9zZSBjcnlwdGljIENYUjxuPiBuYW1lcyB3ZSBm aXJzdA0KPiBlbmNvdW50ZXJlZCBpbiB0aGUgUi1DYXIgZ2VuMSBTb0NzLiA6LSkNCj4gDQo+ID4g IAlSRkxSCT0gMHgwNTA4LA0KPiA+ICsJQ1hSMkEJPSAweDA1MDgsCS8qIERvY3VtZW50ZWQgZm9y IFJaL0cyTCBvbmx5ICovDQo+IA0KPiAgICBTYW1lIGNvbW1lbnQgLS0gbm8gbmVlZCB0byByZS0j ZGVmaW5lIHRoZSBtYWNyby4NCj4gDQo+IFsuLi5dDQo+ID4gQEAgLTIxNiw2ICsyMzIsNyBAQCBl bnVtIENDQ19CSVQgew0KPiA+ICAJQ0NDX0NTRUxfSFBCCT0gMHgwMDAxMDAwMCwNCj4gPiAgCUND Q19DU0VMX0VUSF9UWAk9IDB4MDAwMjAwMDAsDQo+ID4gIAlDQ0NfQ1NFTF9HTUlJX1JFRiA9IDB4 MDAwMzAwMDAsDQo+ID4gKwlDQ0NfQk9DCQk9IDB4MDAxMDAwMDAsCS8qIERvY3VtZW50ZWQgZm9y IFJaL0cyTCBvbmx5ICovDQo+IA0KPiAgICBIbSwgd2hlcmUgZG8geW91IHVzZSBpdD8gSSdtIG5v dCBzZWVpbmcuLi4NCg0KSXQgd2FzIGZvciBzZXR0aW5nIGJ5dGUgb3JkZXIgd2l0aCBsaXR0bGVf ZW5kaWFuIGNvbXBpbGF0aW9uIGZsYWcuIEkgaGF2ZSByZW1vdmVkIHRoZSBjb2RlDQpzaW5jZSBy ZXNldCB2YWx1ZSBpcyBsaXR0bGUgZW5kaWFuLg0KDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC04MDQs MTYgKzgyMSwyMSBAQCBlbnVtIFRJRF9CSVQgew0KPiA+ICBlbnVtIEVDTVJfQklUIHsNCj4gPiAg CUVDTVJfUFJNCT0gMHgwMDAwMDAwMSwNCj4gPiAgCUVDTVJfRE0JCT0gMHgwMDAwMDAwMiwNCj4g PiArCUNYUjIwX0xQTQk9IDB4MDAwMDAwMTAsCS8qIERvY3VtZW50ZWQgZm9yIFJaL0cyTCBvbmx5 ICovDQo+IA0KPiAgICBQbGVhc2UgdXNlIHRoZSBFQ01SXyBwcmVmaXguDQpPSy4NCj4gDQo+ID4g IAlFQ01SX1RFCQk9IDB4MDAwMDAwMjAsDQo+ID4gIAlFQ01SX1JFCQk9IDB4MDAwMDAwNDAsDQo+ ID4gIAlFQ01SX01QREUJPSAweDAwMDAwMjAwLA0KPiA+ICsJQ1hSMjBfQ0VSCT0gMHgwMDAwMTAw MCwJLyogRG9jdW1lbnRlZCBmb3IgUlovRzJMIG9ubHkgKi8NCj4gDQo+ICAgIERpdHRvLg0KPiAN Cj4gPiAgCUVDTVJfVFhGCT0gMHgwMDAxMDAwMCwJLyogRG9jdW1lbnRlZCBmb3IgUi1DYXIgR2Vu MyBvbmx5ICovDQo+ID4gIAlFQ01SX1JYRgk9IDB4MDAwMjAwMDAsDQo+ID4gIAlFQ01SX1BGUgk9 IDB4MDAwNDAwMDAsDQo+ID4gIAlFQ01SX1pQRgk9IDB4MDAwODAwMDAsCS8qIERvY3VtZW50ZWQg Zm9yIFItQ2FyIEdlbjMgb25seSAqLw0KPiA+ICAJRUNNUl9SWlBGCT0gMHgwMDEwMDAwMCwNCj4g PiAgCUVDTVJfRFBBRAk9IDB4MDAyMDAwMDAsDQo+ID4gKwlDWFIyMF9DWFNFUgk9IDB4MDA0MDAw MDAsCS8qIERvY3VtZW50ZWQgZm9yIFJaL0cyTCBvbmx5ICovDQo+IA0KPiAgICAgRGl0dG8uDQo+ IA0KPiA+ICAJRUNNUl9SQ1NDCT0gMHgwMDgwMDAwMCwNCj4gPiArCUNYUjIwX1RDUFQJPSAweDAx MDAwMDAwLAkvKiBEb2N1bWVudGVkIGZvciBSWi9HMkwgb25seSAqLw0KPiA+ICsJQ1hSMjBfUkNQ VAk9IDB4MDIwMDAwMDAsCS8qIERvY3VtZW50ZWQgZm9yIFJaL0cyTCBvbmx5ICovDQo+IA0KPiAg ICBEaXR0by4NCj4gDQo+IFsuLi5dDQo+ID4gQEAgLTgyMyw2ICs4NDUsNyBAQCBlbnVtIEVDU1Jf QklUIHsNCj4gPiAgCUVDU1JfTVBECT0gMHgwMDAwMDAwMiwNCj4gPiAgCUVDU1JfTENITkcJPSAw eDAwMDAwMDA0LA0KPiA+ICAJRUNTUl9QSFlJCT0gMHgwMDAwMDAwOCwNCj4gPiArCUVDU1JfUkZS SQk9IDB4MDAwMDAwMTAsCS8qIERvY3VtZW50ZWQgZm9yIFJaL0cyTCBvbmx5ICovDQo+IA0KPiAg ICBOb3QgUEZSST8NCj4gICAgQWxzbywgbXkgUi1DYXIgZ2VuMi8zIG1hbnVhbCBkb2NpbWVudCB0 aGUgYml0Lg0KDQpZb3UgYXJlIGNvcnJlY3QsIGl0IGlzIFBGUkkuDQoNCj4gDQo+IFsuLi5dDQo+ ID4gQEAgLTg2Miw2ICs4ODUsMTQgQEAgZW51bSBHRUNNUl9CSVQgew0KPiA+ICAJR0VDTVJfU1BF RURfMTAwMCA9IDB4MDAwMDAwMDEsDQo+ID4gIH07DQo+ID4NCj4gPiArLyogR0VDTVIgKi8NCj4g PiArZW51bSBSR0VUSF9HRUNNUl9CSVQgew0KPiA+ICsJUkdFVEhfR0VDTVJfU1BFRUQJPSAweDAw MDAwMDMwLA0KPiA+ICsJUkdFVEhfR0VDTVJfU1BFRURfMTAJPSAweDAwMDAwMDAwLA0KPiA+ICsJ UkdFVEhfR0VDTVJfU1BFRURfMTAwCT0gMHgwMDAwMDAxMCwNCj4gPiArCVJHRVRIX0dFQ01SX1NQ RUVEXzEwMDAJPSAweDAwMDAwMDIwLA0KPiANCj4gICAgV2h5IG5vdCBwbGFjZSB0aG9zZSB2YWx1 ZXMgaW4gdGhlIGV4aXN0aW5nIEdFQ01SICplbnVtKiB3aXRoIHRoZQ0KPiBuZWNlc3NhcnkgYW5u b3RhdGlvbnM/DQpPSy4NCg0KPiBBbHNvIEkgdGhpbmsgdGhlIHByZWZpeGVzIHNob3VsZCBiZSBH RVRILCBub3QgUkdFVEggLS0gUkFWQiBpcyB0aGUNCj4gRXRoZXJBVkIgZHJpdmVyJ3MgbmFtZSwg bm90IHRoZSBhY3R1YWwgaGFyZHdhcmUuLi4NCk9LLg0KDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC05 NTYsOCArMTAzNSwxMSBAQCBlbnVtIFJBVkJfUVVFVUUgew0KPiA+DQo+ID4gICNkZWZpbmUgUlhf QlVGX1NaCSgyMDQ4IC0gRVRIX0ZDU19MRU4gKyBzaXplb2YoX19zdW0xNikpDQo+ID4NCj4gPiAr I2RlZmluZSBSR0VUSF9SQ1ZfQlVGRl9NQVggODE5Mg0KPiA+ICsjZGVmaW5lIFJHRVRIX1JDVl9E RVNDUklQVE9SX0RBVEFfU0laRSA0MDgwDQo+IA0KPiAgICBQbGVhc2Ugc2hvcnRlbiBERVNDUklQ VE9SIHRvIERFU0MuIEFuZCBSQ1ZfIHNob3VsZCBwcm9iYWJseSBiZSByZW5lbWVkDQo+IHRvIFI/ Li4NCk9LLg0KDQo+IA0KPiBbLi4uXT4gQEAgLTEwNDAsNiArMTEyMywxMSBAQCBzdHJ1Y3QgcmF2 Yl9wcml2YXRlIHsNCj4gPiAgCXVuc2lnbmVkIHR4Y2lkbToxOwkJLyogVFggQ2xvY2sgSW50ZXJu YWwgRGVsYXkgTW9kZSAqLw0KPiA+ICAJdW5zaWduZWQgcmdtaWlfb3ZlcnJpZGU6MTsJLyogRGVw cmVjYXRlZCByZ21paS0qaWQgYmVoYXZpb3IgKi8NCj4gPiAgCWludCBudW1fdHhfZGVzYzsJCS8q IFRYIGRlc2NyaXB0b3JzIHBlciBwYWNrZXQgKi8NCj4gPiArDQo+ID4gKwlpbnQgZHVwbGV4Ow0K PiA+ICsJc3RydWN0IHJhdmJfcnhfZGVzYyAqcmdldGhfcnhfcmluZ1tOVU1fUlhfUVVFVUVdOw0K PiA+ICsJc3RydWN0IHNrX2J1ZmYgKnJ4dG9wX3NrYjsNCj4gPiArCXN0cnVjdCByZXNldF9jb250 cm9sICpyc3RjOw0KPiANCj4gICAgSSdkIGhhdmUgYXByZWNpYXRlZCBzb21lIGNvbW1lbnRzIGhl cmUuLi4gSSBkb24ndCBxdWl0ZSB1bmRlcnN0YW5kIHdoYXQNCj4gdGhlIGZpcnN0IDMgYXJlIGZv ci4uLg0KDQpGb3Igc3VwcG9ydGluZyBoYWxmZHVwbGV4L2Z1bGxfZHVwbGV4LCB0aGUgZGVzY3Jp cHRvci9kYXRhc3RydWN0dXIgZm9yIGhhbmRsaW5nIG5vcm1hbCBkZXNjIGluc3RlYWQgb2YgZXh0 ZW5kZWQgZGVzYyBpbiBSWC4NCg0KPiANCj4gWy4uLl0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYw0KPiA+IGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYw0KPiA+IGluZGV4IDdlNmZlZGE1OWY0YS4uZTI4YTYz ZGU1NTNkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2 Yl9tYWluLmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFp bi5jDQo+IFsuLi5dDQo+ID4gQEAgLTgyLDYgKzgzLDIzIEBAIHN0YXRpYyBpbnQgcmF2Yl9jb25m aWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+ID4gIAlyZXR1cm4gZXJyb3I7DQo+ID4gIH0N Cj4gPg0KPiA+ICtzdGF0aWMgdm9pZCByZ2V0aF9zZXRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAq bmRldikNCj4gDQo+ICAgIFdoYXQgYWJvdXQgcmF2Yl9zZXRfcmF0ZV9yemdsPyBJIHRoaW5rIHdl IHVzZSB0aGlzIGNvbnZlbnRpb24gaW4NCj4gc2hfZXRoLmMuLi4NCk9LLg0KPiANCj4gWy4uLl0N Cj4gPiBAQCAtMjE3LDYgKzIzNSwyOSBAQCBzdGF0aWMgaW50IHJhdmJfdHhfZnJlZShzdHJ1Y3Qg bmV0X2RldmljZSAqbmRldiwNCj4gPiBpbnQgcSwgYm9vbCBmcmVlX3R4ZWRfb25seSkgIH0NCj4g Pg0KPiA+ICAvKiBGcmVlIHNrYidzIGFuZCBETUEgYnVmZmVycyBmb3IgRXRoZXJuZXQgQVZCICov DQo+ID4gK3N0YXRpYyB2b2lkIHJnZXRoX3JpbmdfZnJlZV9leChzdHJ1Y3QgbmV0X2RldmljZSAq bmRldiwgaW50IHEpDQo+IA0KPiAgICBJdCBkZWZpbml0ZWx5IHNob3VsZCBiZSBjYWxsZWQgcmF2 Yl9yeF9yaW5nX2ZyZWVfcmdldGgoKSwgSSB0aGluay4uLg0KT0suIA0KPiANCj4gPiArew0KPiA+ ICsJc3RydWN0IHJhdmJfcHJpdmF0ZSAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiA+ICsJ aW50IHJpbmdfc2l6ZTsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkg PCBwcml2LT5udW1fcnhfcmluZ1txXTsgaSsrKSB7DQo+ID4gKwkJc3RydWN0IHJhdmJfcnhfZGVz YyAqZGVzYyA9ICZwcml2LT5yZ2V0aF9yeF9yaW5nW3FdW2ldOw0KPiA+ICsNCj4gPiArCQlpZiAo IWRtYV9tYXBwaW5nX2Vycm9yKG5kZXYtPmRldi5wYXJlbnQsDQo+ID4gKwkJCQkgICAgICAgbGUz Ml90b19jcHUoZGVzYy0+ZHB0cikpKQ0KPiA+ICsJCQlkbWFfdW5tYXBfc2luZ2xlKG5kZXYtPmRl di5wYXJlbnQsDQo+ID4gKwkJCQkJIGxlMzJfdG9fY3B1KGRlc2MtPmRwdHIpLA0KPiA+ICsJCQkJ CSBSR0VUSF9SQ1ZfQlVGRl9NQVgsDQo+ID4gKwkJCQkJIERNQV9GUk9NX0RFVklDRSk7DQo+ID4g Kwl9DQo+ID4gKwlyaW5nX3NpemUgPSBzaXplb2Yoc3RydWN0IHJhdmJfcnhfZGVzYykgKg0KPiA+ ICsJCSAgICAocHJpdi0+bnVtX3J4X3JpbmdbcV0gKyAxKTsNCj4gPiArCWRtYV9mcmVlX2NvaGVy ZW50KG5kZXYtPmRldi5wYXJlbnQsIHJpbmdfc2l6ZSwgcHJpdi0NCj4gPnJnZXRoX3J4X3Jpbmdb cV0sDQo+ID4gKwkJCSAgcHJpdi0+cnhfZGVzY19kbWFbcV0pOw0KPiA+ICsJcHJpdi0+cmdldGhf cnhfcmluZ1txXSA9IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyB2b2lkIHJhdmJf cmluZ19mcmVlX2V4KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgcSkgIHsNCj4gPiAgCXN0 cnVjdCByYXZiX3ByaXZhdGUgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsgQEAgLTI0Nyw4ICsy ODgsMTIgQEANCj4gPiBzdGF0aWMgdm9pZCByYXZiX3JpbmdfZnJlZShzdHJ1Y3QgbmV0X2Rldmlj ZSAqbmRldiwgaW50IHEpDQo+ID4gIAlpbnQgcmluZ19zaXplOw0KPiA+ICAJaW50IGk7DQo+ID4N Cj4gPiAtCWlmIChwcml2LT5yeF9yaW5nW3FdKSB7DQo+ID4gLQkJcmF2Yl9yaW5nX2ZyZWVfZXgo bmRldiwgcSk7DQo+ID4gKwlpZiAocHJpdi0+Y2hpcF9pZCA9PSBSWl9HMkwpIHsNCj4gPiArCQlp ZiAocHJpdi0+cmdldGhfcnhfcmluZ1txXSkNCj4gPiArCQkJcmdldGhfcmluZ19mcmVlX2V4KG5k ZXYsIHEpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlpZiAocHJpdi0+cnhfcmluZ1txXSkNCj4g PiArCQkJcmF2Yl9yaW5nX2ZyZWVfZXgobmRldiwgcSk7DQo+IA0KPiAgICBJIGRlZmluaXRlbHkg ZG9uJ3QgbGlrZSB0aGF0IF9leCBzdWZmaXguLi4NCk9LLg0KPiANCj4gWy4uLl0NCj4gPiBAQCAt MjgxLDYgKzMyNiwzNiBAQCBzdGF0aWMgdm9pZCByYXZiX3JpbmdfZnJlZShzdHJ1Y3QgbmV0X2Rl dmljZQ0KPiA+ICpuZGV2LCBpbnQgcSkgIH0NCj4gPg0KPiA+ICAvKiBGb3JtYXQgc2tiIGFuZCBk ZXNjcmlwdG9yIGJ1ZmZlciBmb3IgRXRoZXJuZXQgQVZCICovDQo+ID4gK3N0YXRpYyB2b2lkIHJn ZXRoX3JpbmdfZm9ybWF0X2V4KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgcSkNCj4gDQo+ ICAgICBIb3cgYWJvdXQgcmF2Yl9yeF9yaW5nX2Zvcm1hdF9nZXRoKCk/DQpPSy4NCj4gDQo+ID4g K3sNCj4gPiArCXN0cnVjdCByYXZiX3ByaXZhdGUgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsN Cj4gPiArCXN0cnVjdCByYXZiX3J4X2Rlc2MgKnJ4X2Rlc2M7DQo+ID4gKwlpbnQgcnhfcmluZ19z aXplID0gc2l6ZW9mKCpyeF9kZXNjKSAqIHByaXYtPm51bV9yeF9yaW5nW3FdOw0KPiA+ICsJZG1h X2FkZHJfdCBkbWFfYWRkcjsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCW1lbXNldChwcml2 LT5yZ2V0aF9yeF9yaW5nW3FdLCAwLCByeF9yaW5nX3NpemUpOw0KPiA+ICsJLyogQnVpbGQgUlgg cmluZyBidWZmZXIgKi8NCj4gPiArCWZvciAoaSA9IDA7IGkgPCBwcml2LT5udW1fcnhfcmluZ1tx XTsgaSsrKSB7DQo+ID4gKwkJLyogUlggZGVzY3JpcHRvciAqLw0KPiA+ICsJCXJ4X2Rlc2MgPSAm cHJpdi0+cmdldGhfcnhfcmluZ1txXVtpXTsNCj4gPiArCQlyeF9kZXNjLT5kc19jYyA9IGNwdV90 b19sZTE2KFJHRVRIX1JDVl9ERVNDUklQVE9SX0RBVEFfU0laRSk7DQo+IA0KPiAgICAgTWhtLCBJ IHRoaW5rIHdlIHNob3VsZCBmdXJ0aGVyIHBhcmFtZXRyaXplIHRoZSBSWCBkYXRhIGluIG9yZGVy IHRvDQo+IHNhdmUgdGhlIGNvZGUgZHVwbGljYXRpb24uLi4NCg0KQXMgcGVyIEdlZXJ0J3Mgc3Vn Z2VzdGlvbiwgSSBoYXZlIHByb3RvdHlwZWQgZHJpdmVyIHdpdGggc3RydWN0dXJlIHJlcGxhY2lu Zw0KZGF0YSB3aXRoIHZhbHVlcywgZmVhdHVyZXMgYW5kIGZ1bmN0aW9uIHBvaW50ZXJzLg0KDQo+ IA0KPiA+ICsJCWRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobmRldi0+ZGV2LnBhcmVudCwgcHJp di0NCj4gPnJ4X3NrYltxXVtpXS0+ZGF0YSwNCj4gPiArCQkJCQkgIFJHRVRIX1JDVl9CVUZGX01B WCwNCj4gPiArCQkJCQkgIERNQV9GUk9NX0RFVklDRSk7DQo+ID4gKwkJLyogV2UganVzdCBzZXQg dGhlIGRhdGEgc2l6ZSB0byAwIGZvciBhIGZhaWxlZCBtYXBwaW5nIHdoaWNoDQo+ID4gKwkJICog c2hvdWxkIHByZXZlbnQgRE1BIGZyb20gaGFwcGVuaW5nLi4uDQo+ID4gKwkJICovDQo+ID4gKwkJ aWYgKGRtYV9tYXBwaW5nX2Vycm9yKG5kZXYtPmRldi5wYXJlbnQsIGRtYV9hZGRyKSkNCj4gPiAr CQkJcnhfZGVzYy0+ZHNfY2MgPSBjcHVfdG9fbGUxNigwKTsNCj4gPiArCQlyeF9kZXNjLT5kcHRy ID0gY3B1X3RvX2xlMzIoZG1hX2FkZHIpOw0KPiA+ICsJCXJ4X2Rlc2MtPmRpZV9kdCA9IERUX0ZF TVBUWTsNCj4gPiArCX0NCj4gPiArCXJ4X2Rlc2MgPSAmcHJpdi0+cmdldGhfcnhfcmluZ1txXVtp XTsNCj4gPiArCXJ4X2Rlc2MtPmRwdHIgPSBjcHVfdG9fbGUzMigodTMyKXByaXYtPnJ4X2Rlc2Nf ZG1hW3FdKTsNCj4gPiArCXJ4X2Rlc2MtPmRpZV9kdCA9IERUX0xJTktGSVg7IC8qIHR5cGUgKi8g fQ0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQgcmF2Yl9yaW5nX2Zvcm1hdF9leChzdHJ1Y3QgbmV0 X2RldmljZSAqbmRldiwgaW50IHEpICB7DQo+ID4gIAlzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2 ID0gbmV0ZGV2X3ByaXYobmRldik7IEBAIC0zMjYsNyArNDAxLDEwIEBADQo+ID4gc3RhdGljIHZv aWQgcmF2Yl9yaW5nX2Zvcm1hdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IHEpDQo+ID4g IAlwcml2LT5kaXJ0eV90eFtxXSA9IDA7DQo+ID4NCj4gPiAgCS8qIEJ1aWxkIFJYIHJpbmcgYnVm ZmVyICovDQo+ID4gLQlyYXZiX3JpbmdfZm9ybWF0X2V4KG5kZXYsIHEpOw0KPiA+ICsJaWYgKHBy aXYtPmNoaXBfaWQgPT0gUlpfRzJMKQ0KPiA+ICsJCXJnZXRoX3JpbmdfZm9ybWF0X2V4KG5kZXYs IHEpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXJhdmJfcmluZ19mb3JtYXRfZXgobmRldiwgcSk7DQo+ IA0KPiAgICAuLi4gc28gdGhhdCB3ZSBkb24ndCBoYXZlIGFsaWtlIGNvZGUgc25pcHBldHMgYW55 bW9yZS4uLg0KDQpZZXMsIGl0IHdpbGwgYmUgcGFydCBvZiBmdW5jdGlvbiBwb2ludGVycy4NCg0K PiANCj4gWy4uLl0NCj4gPiBAQCAtMzU2LDcgKzQzNCw3IEBAIHN0YXRpYyB2b2lkIHJhdmJfcmlu Z19mb3JtYXQoc3RydWN0IG5ldF9kZXZpY2UNCj4gPiAqbmRldiwgaW50IHEpICBzdGF0aWMgaW50 IHJhdmJfcmluZ19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQNCj4gPiBxKSAgew0K PiA+ICAJc3RydWN0IHJhdmJfcHJpdmF0ZSAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiA+ IC0Jc2l6ZV90IHNrYl9zeiA9IFJYX0JVRl9TWjsNCj4gPiArCXNpemVfdCBza2Jfc3ogPSAocHJp di0+Y2hpcF9pZCA9PSBSWl9HMkwpID8gUkdFVEhfUkNWX0JVRkZfTUFYIDoNCj4gPiArUlhfQlVG X1NaOw0KPiANCj4gICAgIFNob3VsZCBiZSBhbHNvIHBhcmFtZXRyaXplZC4uLg0KWWVzLCBpdCB3 aWxsIGJlIHBhcnQgb2YgdmFsdWVzLg0KPiANCj4gWy4uLl0NCj4gPiBAQCAtNDE0LDYgKzUwMyw0 NSBAQCBzdGF0aWMgaW50IHJhdmJfcmluZ19pbml0KHN0cnVjdCBuZXRfZGV2aWNlDQo+ID4gKm5k ZXYsIGludCBxKSAgfQ0KPiA+DQo+ID4gIC8qIEUtTUFDIGluaXQgZnVuY3Rpb24gKi8NCj4gPiAr c3RhdGljIHZvaWQgcmdldGhfZW1hY19pbml0X2V4KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KSB7 DQo+ID4gKwlzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7DQo+ ID4gKw0KPiA+ICsJLyogUmVjZWl2ZSBmcmFtZSBsaW1pdCBzZXQgcmVnaXN0ZXIgKi8NCj4gPiAr CXJhdmJfd3JpdGUobmRldiwgUkdFVEhfUkNWX0JVRkZfTUFYICsgRVRIX0ZDU19MRU4sIFJGTFIp Ow0KPiA+ICsNCj4gPiArCS8qIFBBVVNFIHByb2hpYml0aW9uICovDQo+ID4gKwlyYXZiX3dyaXRl KG5kZXYsIEVDTVJfWlBGIHwgKHByaXYtPmR1cGxleCA/IEVDTVJfRE0gOiAwKSB8DQo+ID4gKwkJ CSBFQ01SX1RFIHwgRUNNUl9SRSB8IENYUjIwX1JDUFQgfA0KPiA+ICsJCQkgRUNNUl9UWEYgfCBF Q01SX1JYRiB8IEVDTVJfUFJNLCBFQ01SKTsNCj4gPiArDQo+ID4gKwlyZ2V0aF9zZXRfcmF0ZShu ZGV2KTsNCj4gPiArDQo+ID4gKwkvKiBTZXQgTUFDIGFkZHJlc3MgKi8NCj4gPiArCXJhdmJfd3Jp dGUobmRldiwNCj4gPiArCQkgICAobmRldi0+ZGV2X2FkZHJbMF0gPDwgMjQpIHwgKG5kZXYtPmRl dl9hZGRyWzFdIDw8IDE2KSB8DQo+ID4gKwkJICAgKG5kZXYtPmRldl9hZGRyWzJdIDw8IDgpICB8 IChuZGV2LT5kZXZfYWRkclszXSksIE1BSFIpOw0KPiA+ICsJcmF2Yl93cml0ZShuZGV2LA0KPiA+ ICsJCSAgIChuZGV2LT5kZXZfYWRkcls0XSA8PCA4KSAgfCAobmRldi0+ZGV2X2FkZHJbNV0pLCBN QUxSKTsNCj4gPiArDQo+ID4gKwkvKiBFLU1BQyBzdGF0dXMgcmVnaXN0ZXIgY2xlYXIgKi8NCj4g PiArCXJhdmJfd3JpdGUobmRldiwgRUNTUl9JQ0QgfCBFQ1NSX0xDSE5HIHwgRUNTUl9SRlJJLCBF Q1NSKTsNCj4gPiArCXJhdmJfd3JpdGUobmRldiwgQ1NSMF9UUEUgfCBDU1IwX1JQRSwgQ1NSMCk7 DQo+ID4gKw0KPiA+ICsJLyogRS1NQUMgaW50ZXJydXB0IGVuYWJsZSByZWdpc3RlciAqLw0KPiA+ ICsJcmF2Yl93cml0ZShuZGV2LCBFQ1NJUFJfSUNESVAsIEVDU0lQUik7DQo+ID4gKw0KPiA+ICsJ cmF2Yl93cml0ZShuZGV2LCByYXZiX3JlYWQobmRldiwgQ1hSMzEpDQo+ID4gKwkJCSAmIH5DWFIz MV9TRUxfTElOSzEsIENYUjMxKTsNCj4gPiArCWlmIChwcml2LT5waHlfaW50ZXJmYWNlID09IFBI WV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRCkgew0KPiA+ICsJCXJhdmJfd3JpdGUobmRldiwgcmF2 Yl9yZWFkKG5kZXYsIENYUjMxKQ0KPiA+ICsJCQkgfCBDWFIzMV9TRUxfTElOSzAsIENYUjMxKTsN Cj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcmF2Yl93cml0ZShuZGV2LCByYXZiX3JlYWQobmRldiwg Q1hSMzEpDQo+ID4gKwkJCSAmIH5DWFIzMV9TRUxfTElOSzAsIENYUjMxKTsNCj4gPiArCX0NCj4g PiArfQ0KPiANCj4gICAgVGhlIG1vcmUgSSBsb29rIGF0IHlvdXIgcGF0Y2hlcywgdGhlIG1vcmUg SSB0aGluayBHZWVydCdzIHN1Z2dlc3Rpb24gdG8NCj4gbWltaWMgdGhlIHNoX2V0aCdzIGFwcHJv YWNoIHRvIGhhbmRsaW5nIHRoZSBTb0MgZGlmZmVyZW5jaWVzIGlzIHdvcnRoDQo+IHVzaW5nIGlu IHRoaXMgZHJpdmVyIGFzIHdlbGwuLi4NCg0KWWVzIEkgaGF2ZSBpbmNvcnBvcmF0ZWQgR2VlcnQn cyBzdWdnZXN0aW9uIGFuZCB0ZXN0ZWQgdGhlIGNoYW5nZXMgb24gUlovRzJbTSxOXSBhbmQgUlov RzFOLg0KVGhlIGNvZGUgaXMgdW5kZXIgaW50ZXJuYWwgcmV2aWV3IG5vdy4NCg0KPiANCj4gWy4u Ll0NCj4gPiBAQCAtNDQyLDEwICs1NzAsNDEgQEAgc3RhdGljIHZvaWQgcmF2Yl9lbWFjX2luaXRf ZXgoc3RydWN0IG5ldF9kZXZpY2UNCj4gPiAqbmRldikNCj4gWy4uLl0NCj4gPiAgLyogRGV2aWNl IGluaXQgZnVuY3Rpb24gZm9yIEV0aGVybmV0IEFWQiAqLw0KPiA+ICtzdGF0aWMgdm9pZCByZ2V0 aF9kbWFjX2luaXRfZXgoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpIHsNCj4gPiArCS8qIFNldCBB VkIgUlggKi8NCj4gPiArCXJhdmJfd3JpdGUobmRldiwgMHg2MDAwMDAwMCwgUkNSKTsNCj4gDQo+ ICAgIFdoYXQgdGhvc2UgKHVuZG9jdW1lbnRlZD8pIGJpdHMgbWVhbiwgSSB3b25kZXI/DQoNCkl0 IGlzIGJhc2ljYWxseSBzZXRzIHRoZSBzZXR0aW5ncyByZWxhdGVkIHRvIHJlY2VwdGlvbiBmb3Ig dGhlIERNQShSZWNlcHRpb24gRklGTyBjcml0aWNhbCBsZXZlbCkgZGVmYXVsdA0KVmFsdWUgaXMg MHg2MDAwLg0KDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC01NDUsNiArNzA4LDIzIEBAIHN0YXRpYyB2 b2lkIHJhdmJfZ2V0X3R4X3RzdGFtcChzdHJ1Y3QgbmV0X2RldmljZQ0KPiAqbmRldikNCj4gPiAg CX0NCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyB2b2lkIHJnZXRoX3J4X2NzdW0oc3RydWN0IHNr X2J1ZmYgKnNrYikgew0KPiA+ICsJdTggKmh3X2NzdW07DQo+ID4gKw0KPiA+ICsJLyogVGhlIGhh cmR3YXJlIGNoZWNrc3VtIGlzIGNvbnRhaW5lZCBpbiBzaXplb2YoX19zdW0xNikgKDIpIGJ5dGVz DQo+ID4gKwkgKiBhcHBlbmRlZCB0byBwYWNrZXQgZGF0YQ0KPiA+ICsJICovDQo+ID4gKwlpZiAo dW5saWtlbHkoc2tiLT5sZW4gPCBzaXplb2YoX19zdW0xNikpKQ0KPiA+ICsJCXJldHVybjsNCj4g PiArCWh3X2NzdW0gPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBzaXplb2YoX19zdW0xNik7DQo+ ID4gKw0KPiA+ICsJaWYgKCpod19jc3VtID09IDApDQo+ID4gKwkJc2tiLT5pcF9zdW1tZWQgPSBD SEVDS1NVTV9VTk5FQ0VTU0FSWTsNCj4gPiArCWVsc2UNCj4gPiArCQlza2ItPmlwX3N1bW1lZCA9 IENIRUNLU1VNX05PTkU7DQo+ID4gK30NCj4gDQo+ICAgIFNvIGRvZXMgR2JFdGggZGV2aWNlIHN1 bXBwb3J0IGNoZWNrc3VtaW5nIG9yIG5vdD8NCg0KVGhlIFRPRSBibG9jayBjYWxjdWxhdGVzIENo ZWNrc3VtIGJ5IGhhcmR3YXJlLg0KDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC01NjEsNiArNzQxLDE0 MyBAQCBzdGF0aWMgdm9pZCByYXZiX3J4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYikgIH0NCj4g Pg0KPiA+ICAvKiBQYWNrZXQgcmVjZWl2ZSBmdW5jdGlvbiBmb3IgRXRoZXJuZXQgQVZCICovDQo+ ID4gK3N0cnVjdCBza19idWZmICpyZ2V0aF9nZXRfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2 LCBpbnQgcSwgaW50DQo+ID4gK2VudHJ5LA0KPiANCj4gICAgTm90ICpzdGF0aWMqPw0KT0suIFdp bGwgZml4IGl0Lg0KDQo+IA0KPiA+ICsJCQkgICAgICBzdHJ1Y3QgcmF2Yl9yeF9kZXNjICpkZXNj KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2ID0gbmV0ZGV2X3ByaXYo bmRldik7DQo+ID4gKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPiA+ICsNCj4gPiArCXNrYiA9IHBy aXYtPnJ4X3NrYltxXVtlbnRyeV07DQo+ID4gKwlwcml2LT5yeF9za2JbcV1bZW50cnldID0gTlVM TDsNCj4gPiArCWRtYV91bm1hcF9zaW5nbGUobmRldi0+ZGV2LnBhcmVudCwgbGUzMl90b19jcHUo ZGVzYy0+ZHB0ciksDQo+ID4gKwkJCSBBTElHTihSR0VUSF9SQ1ZfQlVGRl9NQVgsIDE2KSwgRE1B X0ZST01fREVWSUNFKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gc2tiOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgYm9vbCByZ2V0aF9yeF9leChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50 ICpxdW90YSwgaW50IHEpIHsNCj4gPiArCXN0cnVjdCByYXZiX3ByaXZhdGUgKnByaXYgPSBuZXRk ZXZfcHJpdihuZGV2KTsNCj4gPiArCWludCBlbnRyeSA9IHByaXYtPmN1cl9yeFtxXSAlIHByaXYt Pm51bV9yeF9yaW5nW3FdOw0KPiA+ICsJaW50IGJvZ3VzY250ID0gcHJpdi0+ZGlydHlfcnhbcV0g KyBwcml2LT5udW1fcnhfcmluZ1txXSAtIHByaXYtDQo+ID5jdXJfcnhbcV07DQo+ID4gKwlzdHJ1 Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHMgPSAmcHJpdi0+c3RhdHNbcV07DQo+ID4gKwlzdHJ1 Y3QgcmF2Yl9yeF9kZXNjICpkZXNjOw0KPiA+ICsJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCj4gPiAr CWRtYV9hZGRyX3QgZG1hX2FkZHI7DQo+ID4gKwl1OCAgZGVzY19zdGF0dXM7DQo+ID4gKwl1OCAg ZGllX2R0Ow0KPiA+ICsJdTE2IHBrdF9sZW47DQo+ID4gKwlpbnQgbGltaXQ7DQo+ID4gKw0KPiA+ ICsJYm9ndXNjbnQgPSBtaW4oYm9ndXNjbnQsICpxdW90YSk7DQo+ID4gKwlsaW1pdCA9IGJvZ3Vz Y250Ow0KPiA+ICsJZGVzYyA9ICZwcml2LT5yZ2V0aF9yeF9yaW5nW3FdW2VudHJ5XTsNCj4gPiAr CXdoaWxlIChkZXNjLT5kaWVfZHQgIT0gRFRfRkVNUFRZKSB7DQo+ID4gKwkJLyogRGVzY3JpcHRv ciB0eXBlIG11c3QgYmUgY2hlY2tlZCBiZWZvcmUgYWxsIG90aGVyIHJlYWRzICovDQo+ID4gKwkJ ZG1hX3JtYigpOw0KPiA+ICsJCWRlc2Nfc3RhdHVzID0gZGVzYy0+bXNjOw0KPiA+ICsJCXBrdF9s ZW4gPSBsZTE2X3RvX2NwdShkZXNjLT5kc19jYykgJiBSWF9EUzsNCj4gPiArDQo+ID4gKwkJaWYg KC0tYm9ndXNjbnQgPCAwKQ0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJLyogV2UgdXNl IDAtYnl0ZSBkZXNjcmlwdG9ycyB0byBtYXJrIHRoZSBETUEgbWFwcGluZyBlcnJvcnMgKi8NCj4g PiArCQlpZiAoIXBrdF9sZW4pDQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsNCj4gPiArCQlpZiAo ZGVzY19zdGF0dXMgJiBNU0NfTUMpDQo+ID4gKwkJCXN0YXRzLT5tdWx0aWNhc3QrKzsNCj4gPiAr DQo+ID4gKwkJaWYgKGRlc2Nfc3RhdHVzICYgKE1TQ19DUkMgfCBNU0NfUkZFIHwgTVNDX1JUU0Yg fCBNU0NfUlRMRiB8DQo+IE1TQ19DRUVGKSkgew0KPiA+ICsJCQlzdGF0cy0+cnhfZXJyb3JzKys7 DQo+ID4gKwkJCWlmIChkZXNjX3N0YXR1cyAmIE1TQ19DUkMpDQo+ID4gKwkJCQlzdGF0cy0+cnhf Y3JjX2Vycm9ycysrOw0KPiA+ICsJCQlpZiAoZGVzY19zdGF0dXMgJiBNU0NfUkZFKQ0KPiA+ICsJ CQkJc3RhdHMtPnJ4X2ZyYW1lX2Vycm9ycysrOw0KPiA+ICsJCQlpZiAoZGVzY19zdGF0dXMgJiAo TVNDX1JUTEYgfCBNU0NfUlRTRikpDQo+ID4gKwkJCQlzdGF0cy0+cnhfbGVuZ3RoX2Vycm9ycysr Ow0KPiA+ICsJCQlpZiAoZGVzY19zdGF0dXMgJiBNU0NfQ0VFRikNCj4gPiArCQkJCXN0YXRzLT5y eF9taXNzZWRfZXJyb3JzKys7DQo+ID4gKwkJfSBlbHNlIHsNCj4gPiArCQkJZGllX2R0ID0gZGVz Yy0+ZGllX2R0ICYgMHhGMDsNCj4gPiArCQkJaWYgKGRpZV9kdCA9PSBEVF9GU0lOR0xFKSB7DQo+ IA0KPiAgICBXaHkgbm90ICpzd2l0Y2gqPw0KPiANCj4gPiArCQkJCXNrYiA9IHJnZXRoX2dldF9z a2IobmRldiwgcSwgZW50cnksIGRlc2MpOw0KPiA+ICsJCQkJc2tiX3B1dChza2IsIHBrdF9sZW4p Ow0KPiA+ICsJCQkJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgbmRldik7DQo+ ID4gKwkJCQlpZiAobmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1JYQ1NVTSkNCj4gPiArCQkJCQly Z2V0aF9yeF9jc3VtKHNrYik7DQo+ID4gKwkJCQluYXBpX2dyb19yZWNlaXZlKCZwcml2LT5uYXBp W3FdLCBza2IpOw0KPiA+ICsJCQkJc3RhdHMtPnJ4X3BhY2tldHMrKzsNCj4gPiArCQkJCXN0YXRz LT5yeF9ieXRlcyArPSBwa3RfbGVuOw0KPiA+ICsJCQl9IGVsc2UgaWYgKGRpZV9kdCA9PSBEVF9G U1RBUlQpIHsNCj4gPiArCQkJCXByaXYtPnJ4dG9wX3NrYiA9IHJnZXRoX2dldF9za2IobmRldiwg cSwgZW50cnksDQo+IGRlc2MpOw0KPiA+ICsJCQkJc2tiX3B1dChwcml2LT5yeHRvcF9za2IsIHBr dF9sZW4pOw0KPiA+ICsJCQl9IGVsc2UgaWYgKGRpZV9kdCA9PSBEVF9GTUlEKSB7DQo+ID4gKwkJ CQlza2IgPSByZ2V0aF9nZXRfc2tiKG5kZXYsIHEsIGVudHJ5LCBkZXNjKTsNCj4gPiArCQkJCXNr Yl9jb3B5X3RvX2xpbmVhcl9kYXRhX29mZnNldChwcml2LT5yeHRvcF9za2IsDQo+ID4gKwkJCQkJ CQkgICAgICAgcHJpdi0+cnh0b3Bfc2tiLT5sZW4sDQo+ID4gKwkJCQkJCQkgICAgICAgc2tiLT5k YXRhLA0KPiA+ICsJCQkJCQkJICAgICAgIHBrdF9sZW4pOw0KPiA+ICsJCQkJc2tiX3B1dChwcml2 LT5yeHRvcF9za2IsIHBrdF9sZW4pOw0KPiA+ICsJCQkJZGV2X2tmcmVlX3NrYihza2IpOw0KPiA+ ICsJCQl9IGVsc2UgaWYgKGRpZV9kdCA9PSBEVF9GRU5EKSB7DQo+ID4gKwkJCQlza2IgPSByZ2V0 aF9nZXRfc2tiKG5kZXYsIHEsIGVudHJ5LCBkZXNjKTsNCj4gPiArCQkJCXNrYl9jb3B5X3RvX2xp bmVhcl9kYXRhX29mZnNldChwcml2LT5yeHRvcF9za2IsDQo+ID4gKwkJCQkJCQkgICAgICAgcHJp di0+cnh0b3Bfc2tiLT5sZW4sDQo+ID4gKwkJCQkJCQkgICAgICAgc2tiLT5kYXRhLA0KPiA+ICsJ CQkJCQkJICAgICAgIHBrdF9sZW4pOw0KPiA+ICsJCQkJc2tiX3B1dChwcml2LT5yeHRvcF9za2Is IHBrdF9sZW4pOw0KPiA+ICsJCQkJZGV2X2tmcmVlX3NrYihza2IpOw0KPiA+ICsJCQkJcHJpdi0+ cnh0b3Bfc2tiLT5wcm90b2NvbCA9DQo+ID4gKwkJCQkJZXRoX3R5cGVfdHJhbnMocHJpdi0+cnh0 b3Bfc2tiLCBuZGV2KTsNCj4gPiArCQkJCWlmIChuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfUlhD U1VNKQ0KPiA+ICsJCQkJCXJnZXRoX3J4X2NzdW0oc2tiKTsNCj4gPiArCQkJCW5hcGlfZ3JvX3Jl Y2VpdmUoJnByaXYtPm5hcGlbcV0sDQo+ID4gKwkJCQkJCSBwcml2LT5yeHRvcF9za2IpOw0KPiA+ ICsJCQkJc3RhdHMtPnJ4X3BhY2tldHMrKzsNCj4gPiArCQkJCXN0YXRzLT5yeF9ieXRlcyArPSBw cml2LT5yeHRvcF9za2ItPmxlbjsNCj4gPiArCQkJfQ0KPiANCj4gICAgU28gd2h5IGl0J3MgbmVj ZXNzYXJ5IHRvIGhhbmRsZSB0aGUgbXVsdGlkZWNyaXB0b3IgcGFja2V0cz8NCg0KT24gUlovRzJM IHdlIGhhdmUgbm9ybWFsIGRlc2NyaXB0b3IgY29tcGFyZWQgdG8gZXh0ZW5kZWQgZGVzY3JpcHRv ciBwYWNrZXRzLg0KDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC02NzgsNyArOTk1LDEwIEBAIHN0YXRp YyBib29sIHJhdmJfcnhfZXgoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQo+ID4gaW50ICpxdW90 YSwgaW50IHEpDQo+ID4NCj4gPiAgc3RhdGljIGJvb2wgcmF2Yl9yeChzdHJ1Y3QgbmV0X2Rldmlj ZSAqbmRldiwgaW50ICpxdW90YSwgaW50IHEpICB7DQo+ID4gLQlyZXR1cm4gcmF2Yl9yeF9leChu ZGV2LCBxdW90YSwgcSk7DQo+ID4gKwlzdHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2ID0gbmV0ZGV2 X3ByaXYobmRldik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIChwcml2LT5jaGlwX2lkID09IFJaX0cy TCkgPw0KPiA+ICsJCXJnZXRoX3J4X2V4KG5kZXYsIHF1b3RhLCBxKSA6IHJhdmJfcnhfZXgobmRl diwgcXVvdGEsIHEpOw0KPiANCj4gICAgRGVmaW5pdGVseSBiZXR0ZXIgd2l0aCB0aGUgcHJlLWlu aXQnZWQgZnVuY3Rpb24gcG9pbnRlcnMgaWYgbmVlZGVkIGF0DQo+IGFsbCkuLi4NCg0KQWdyZWVk Lg0KDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC02OTYsMTEgKzEwMTYsMTUgQEAgc3RhdGljIHZvaWQg cmF2Yl9yY3Zfc25kX2VuYWJsZShzdHJ1Y3QNCj4gPiBuZXRfZGV2aWNlICpuZGV2KQ0KPiA+ICAv KiBmdW5jdGlvbiBmb3Igd2FpdGluZyBkbWEgcHJvY2VzcyBmaW5pc2hlZCAqLyAgc3RhdGljIGlu dA0KPiA+IHJhdmJfc3RvcF9kbWEoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpICB7DQo+ID4gKwlz dHJ1Y3QgcmF2Yl9wcml2YXRlICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7DQo+ID4gIAlpbnQg ZXJyb3I7DQo+ID4NCj4gPiAgCS8qIFdhaXQgZm9yIHN0b3BwaW5nIHRoZSBoYXJkd2FyZSBUWCBw cm9jZXNzICovDQo+ID4gLQllcnJvciA9IHJhdmJfd2FpdChuZGV2LCBUQ0NSLA0KPiA+IC0JCQkg IFRDQ1JfVFNSUTAgfCBUQ0NSX1RTUlExIHwgVENDUl9UU1JRMiB8IFRDQ1JfVFNSUTMsIDApOw0K PiA+ICsJaWYgKHByaXYtPmNoaXBfaWQgPT0gUlpfRzJMKQ0KPiA+ICsJCWVycm9yID0gcmF2Yl93 YWl0KG5kZXYsIFRDQ1IsIFRDQ1JfVFNSUTAsIDApOw0KPiANCj4gICAgT25seSBhIHNpbmdsZSBU WCBxdWV1ZT8NCg0KQ29ycmVjdC4NCg0KPiANCj4gPiArCWVsc2UNCj4gPiArCQllcnJvciA9IHJh dmJfd2FpdChuZGV2LCBUQ0NSLA0KPiA+ICsJCQkJICBUQ0NSX1RTUlEwIHwgVENDUl9UU1JRMSB8 IFRDQ1JfVFNSUTIgfA0KPiBUQ0NSX1RTUlEzLCAwKTsNCj4gDQo+ICAgIFRoaXMgaXMgYmV0dGVy IGV4cHJlc3NlZCB0aHJ1IGEgbWFzayBpbiB0aGUgcHJpdmF0ZSBkYXRhLi4uDQoNClRha2VuIGNh cmUgdXNpbmcgZmVhdHVyZSBiaXQuDQoNCj4gDQo+IFsuLi5dDQo+ID4gQEAgLTgyMywxMSArMTE0 NywxMyBAQCBzdGF0aWMgYm9vbCByYXZiX3F1ZXVlX2ludGVycnVwdChzdHJ1Y3QNCj4gPiBuZXRf ZGV2aWNlICpuZGV2LCBpbnQgcSkNCj4gPg0KPiA+ICBzdGF0aWMgYm9vbCByYXZiX3RpbWVzdGFt cF9pbnRlcnJ1cHQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpICB7DQo+ID4gKwlzdHJ1Y3QgcmF2 Yl9wcml2YXRlICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7DQo+ID4gIAl1MzIgdGlzID0gcmF2 Yl9yZWFkKG5kZXYsIFRJUyk7DQo+ID4NCj4gPiAgCWlmICh0aXMgJiBUSVNfVEZVRikgew0KPiA+ ICAJCXJhdmJfd3JpdGUobmRldiwgfihUSVNfVEZVRiB8IFRJU19SRVNFUlZFRCksIFRJUyk7DQo+ ID4gLQkJcmF2Yl9nZXRfdHhfdHN0YW1wKG5kZXYpOw0KPiA+ICsJCWlmIChwcml2LT5jaGlwX2lk ICE9IFJaX0cyTCkNCj4gPiArCQkJcmF2Yl9nZXRfdHhfdHN0YW1wKG5kZXYpOw0KPiANCj4gICAg U28sIG5vIFRYIHBha2NldCB0aW1lc3RhbWluZz8uLg0KDQpZZXMsIFRoYXQgaXMgY29ycmVjdC4N Cj4gDQo+IFsuLi5dDQo+ID4gQEAgLTg3Miw3ICsxMTk4LDcgQEAgc3RhdGljIGlycXJldHVybl90 IHJhdmJfaW50ZXJydXB0KGludCBpcnEsIHZvaWQNCj4gKmRldl9pZCkNCj4gPiAgCX0NCj4gPg0K PiA+ICAJLyogZ1BUUCBpbnRlcnJ1cHQgc3RhdHVzIHN1bW1hcnkgKi8NCj4gPiAtCWlmIChpc3Mg JiBJU1NfQ0dJUykgew0KPiA+ICsJaWYgKHByaXYtPmNoaXBfaWQgIT0gUlpfRzJMICYmIChpc3Mg JiBJU1NfQ0dJUykpIHsNCj4gDQo+ICAgIC4uLmFuZCBubyBnUFRQIElSUT8NClllcyB0aGF0IGlz IGNvcnJlY3QuDQoNCj4gDQo+ID4gIAkJcmF2Yl9wdHBfaW50ZXJydXB0KG5kZXYpOw0KPiA+ICAJ CXJlc3VsdCA9IElSUV9IQU5ETEVEOw0KPiA+ICAJfQ0KPiA+IEBAIC05NDcsMTIgKzEyNzMsMjAg QEAgc3RhdGljIGludCByYXZiX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLA0KPiBpbnQg YnVkZ2V0KQ0KPiA+ICAJaW50IHEgPSBuYXBpIC0gcHJpdi0+bmFwaTsNCj4gPiAgCWludCBtYXNr ID0gQklUKHEpOw0KPiA+ICAJaW50IHF1b3RhID0gYnVkZ2V0Ow0KPiA+ICsJaW50IGVudHJ5Ow0K PiA+ICsJc3RydWN0IHJhdmJfcnhfZGVzYyAqZGVzYzsNCj4gDQo+ICAgIFRoZSBsaW5lcyB3aXRo IHRoZSBsb2NhbCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNvdHJ0ZWQgYnkgbGVuZ3RoLCB0aGUNCj4g bG9uZ2VyIGdvaW5nIGZpcnN0IChzbyBjYWxlbGQgcmV2ZXJzZSBYbWFzIHRyZWUpLi4uDQo+IA0K T0suDQoNCj4gWy4uLl0NCj4gPiBAQCAtMTA4MiwxNSArMTQ0MCwyMyBAQCBzdGF0aWMgaW50IHJh dmJfcGh5X2luaXQoc3RydWN0IG5ldF9kZXZpY2UNCj4gKm5kZXYpDQo+ID4gIAkJbmV0ZGV2X2lu Zm8obmRldiwgImxpbWl0ZWQgUEhZIHRvIDEwME1iaXQvc1xuIik7DQo+ID4gIAl9DQo+ID4NCj4g PiAtCS8qIDEwQkFTRSwgUGF1c2UgYW5kIEFzeW0gUGF1c2UgaXMgbm90IHN1cHBvcnRlZCAqLw0K PiA+IC0JcGh5X3JlbW92ZV9saW5rX21vZGUocGh5ZGV2LCBFVEhUT09MX0xJTktfTU9ERV8xMGJh c2VUX0hhbGZfQklUKTsNCj4gPiAtCXBoeV9yZW1vdmVfbGlua19tb2RlKHBoeWRldiwgRVRIVE9P TF9MSU5LX01PREVfMTBiYXNlVF9GdWxsX0JJVCk7DQo+ID4gLQlwaHlfcmVtb3ZlX2xpbmtfbW9k ZShwaHlkZXYsIEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCk7DQo+ID4gLQlwaHlfcmVtb3Zl X2xpbmtfbW9kZShwaHlkZXYsIEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklUKTsNCj4g PiArCWlmIChwcml2LT5jaGlwX2lkID09IFJaX0cyTCkgew0KPiANCj4gICBXaHkgbm90ICpzd2l0 Y2gqPw0KDQpUaGlzIHJlcGxhY2VkIHdpdGggZmVhdHVyZSBiaXRzLg0KDQo+IA0KPiBjeHIzNT4g KwkJaWYgKHByaXYtPnBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lE KQ0KPiA+ICsJCQlyYXZiX3dyaXRlKG5kZXYsIHJhdmJfcmVhZChuZGV2LCBDWFIzNSkgfA0KPiBD WFIzNV9TRUxfTU9ESU4sIENYUjM1KTsNCj4gPiArCQllbHNlIGlmIChwcml2LT5waHlfaW50ZXJm YWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkNCj4gPiArCQkJcmF2Yl93cml0ZShuZGV2 LCAweDNFODAwMDAsIENYUjM1KTsNCj4gPiArCX0gZWxzZSB7DQo+ID4NCj4gWy4uLl0NCj4gPiBA QCAtMTEzMyw2ICsxNDk5LDI0IEBAIHN0YXRpYyB2b2lkIHJhdmJfc2V0X21zZ2xldmVsKHN0cnVj dCBuZXRfZGV2aWNlDQo+ICpuZGV2LCB1MzIgdmFsdWUpDQo+ID4gIAlwcml2LT5tc2dfZW5hYmxl ID0gdmFsdWU7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgY29uc3QgY2hhciByZ2V0aF9nc3Ry aW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7DQo+ID4gKwkicnhfcXVldWVfMF9jdXJy ZW50IiwNCj4gPiArCSJ0eF9xdWV1ZV8wX2N1cnJlbnQiLA0KPiA+ICsJInJ4X3F1ZXVlXzBfZGly dHkiLA0KPiA+ICsJInR4X3F1ZXVlXzBfZGlydHkiLA0KPiA+ICsJInJ4X3F1ZXVlXzBfcGFja2V0 cyIsDQo+ID4gKwkidHhfcXVldWVfMF9wYWNrZXRzIiwNCj4gPiArCSJyeF9xdWV1ZV8wX2J5dGVz IiwNCj4gPiArCSJ0eF9xdWV1ZV8wX2J5dGVzIiwNCj4gPiArCSJyeF9xdWV1ZV8wX21jYXN0X3Bh Y2tldHMiLA0KPiA+ICsJInJ4X3F1ZXVlXzBfZXJyb3JzIiwNCj4gPiArCSJyeF9xdWV1ZV8wX2Ny Y19lcnJvcnMiLA0KPiA+ICsJInJ4X3F1ZXVlXzBfZnJhbWVfZXJyb3JzIiwNCj4gPiArCSJyeF9x dWV1ZV8wX2xlbmd0aF9lcnJvcnMiLA0KPiA+ICsJInJ4X3F1ZXVlXzBfY3N1bV9vZmZsb2FkX2Vy cm9ycyIsDQo+ID4gKwkicnhfcXVldWVfMF9vdmVyX2Vycm9ycyIsDQo+ID4gK307DQo+IA0KPiAg ICBJIHRoaW5rIHdlIGNhbiBnZXQgb3V0IHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHN0Z3Jpbmcg YXJyYXlzLi4uDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC0xNjY5LDYgKzIwNzksMjAgQEAgc3RhdGlj IHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzDQo+ICpyYXZiX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2Rl dmljZSAqbmRldikNCj4gPiAgCXN0YXRzMCA9ICZwcml2LT5zdGF0c1tSQVZCX0JFXTsNCj4gPiAg CXN0YXRzMSA9ICZwcml2LT5zdGF0c1tSQVZCX05DXTsNCj4gPg0KPiA+ICsJaWYgKHByaXYtPmNo aXBfaWQgPT0gUlpfRzJMKSB7DQo+ID4gKwkJbnN0YXRzLT50eF9kcm9wcGVkICs9IHJhdmJfcmVh ZChuZGV2LCBUUk9DUik7DQo+ID4gKwkJcmF2Yl93cml0ZShuZGV2LCAwLCBUUk9DUik7CS8qICh3 cml0ZSBjbGVhcikgKi8NCj4gDQo+ICAgIFdoeSBkdXBsaWNhdGVkIHdpdGggUi1DYXIgZ2VuMz8N Cg0KSXQgaXMgYWRkcmVzc2VkIGluIGxhdGVyIHZlcnNpb24gd2l0aCBmZWF0dXJlIGJpdC4NCg0K PiANCj4gPiArCQluc3RhdHMtPmNvbGxpc2lvbnMgKz0gcmF2Yl9yZWFkKG5kZXYsIENEQ1IpOw0K PiA+ICsJCXJhdmJfd3JpdGUobmRldiwgMCwgQ0RDUik7CS8qICh3cml0ZSBjbGVhcikgKi8NCj4g PiArCQluc3RhdHMtPnR4X2NhcnJpZXJfZXJyb3JzICs9IHJhdmJfcmVhZChuZGV2LCBMQ0NSKTsN Cj4gPiArCQlyYXZiX3dyaXRlKG5kZXYsIDAsIExDQ1IpOwkvKiAod3JpdGUgY2xlYXIpICovDQo+ ID4gKw0KPiA+ICsJCW5zdGF0cy0+dHhfY2Fycmllcl9lcnJvcnMgKz0gcmF2Yl9yZWFkKG5kZXYs IENFUkNSKTsNCj4gPiArCQlyYXZiX3dyaXRlKG5kZXYsIDAsIENFUkNSKTsJLyogKHdyaXRlIGNs ZWFyKSAqLw0KPiA+ICsJCW5zdGF0cy0+dHhfY2Fycmllcl9lcnJvcnMgKz0gcmF2Yl9yZWFkKG5k ZXYsIENFRUNSKTsNCj4gPiArCQlyYXZiX3dyaXRlKG5kZXYsIDAsIENFRUNSKTsJLyogKHdyaXRl IGNsZWFyKSAqLw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAgCWlmIChwcml2LT5jaGlwX2lkID09IFJD QVJfR0VOMykgew0KPiANCj4gICAgTXVzdCBiZSBlbHNlIGlmIGhlcmUuLi4NCj4gDQo+IFsuLi5d DQo+ID4gQEAgLTE4OTksNiArMjMyNSw0NCBAQCBzdGF0aWMgaW50IHJhdmJfc2V0X2ZlYXR1cmVz KHN0cnVjdCBuZXRfZGV2aWNlDQo+ICpuZGV2LA0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4g Pg0KPiA+ICtzdGF0aWMgaW50IHJnZXRoX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAq bmRldiwNCj4gPiArCQkJICAgICAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpDQo+ID4gK3sN Cj4gPiArCWludCBlcnJvcjsNCj4gPiArCXVuc2lnbmVkIGludCByZWcgPSAwOw0KPiA+ICsJbmV0 ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IGZlYXR1cmVzIF4gbmRldi0+ZmVhdHVyZXM7DQo+IA0K PiAgICBSZXZlcnNlIFhtYXMgdHJlZSwgcGxlYXNlLg0KT0suDQo+IA0KPiA+ICsNCj4gPiArCXJl ZyA9IHJhdmJfcmVhZChuZGV2LCBDU1IwKTsNCj4gPiArDQo+ID4gKwlyYXZiX3dyaXRlKG5kZXYs IHJhdmJfcmVhZChuZGV2LCBDU1IwKSAmIH4oQ1NSMF9SUEUgfCBDU1IwX1RQRSksDQo+ID4gK0NT UjApOw0KPiANCj4gICAgV2h5IHJlYWQgQ1NSMCB0d2ljZT8NCg0KV2lsbCBmaXggaXQuDQoNCj4g DQo+IFsuLi5dDQo+ID4gQEAgLTE5MzAsNyArMjQwOCwxMCBAQCBzdGF0aWMgaW50IHJhdmJfbWRp b19pbml0KHN0cnVjdCByYXZiX3ByaXZhdGUNCj4gKnByaXYpDQo+ID4gIAkJcmV0dXJuIC1FTk9N RU07DQo+ID4NCj4gPiAgCS8qIEhvb2sgdXAgTUlJIHN1cHBvcnQgZm9yIGV0aHRvb2wgKi8NCj4g PiAtCXByaXYtPm1paV9idXMtPm5hbWUgPSAicmF2Yl9taWkiOw0KPiA+ICsJaWYgKHByaXYtPmNo aXBfaWQgPT0gUlpfRzJMKQ0KPiA+ICsJCXByaXYtPm1paV9idXMtPm5hbWUgPSAicmdldGhfbWlp IjsNCj4gPiArCWVsc2UNCj4gPiArCQlwcml2LT5taWlfYnVzLT5uYW1lID0gInJhdmJfbWlpIjsN Cj4gDQo+ICAgIEhtLi4uIEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0aGlzLg0KDQpOb3cgaXQgaXMg cGFydCBvZiBkYXRhLiBXaWxsIHVzZSAicmF2Yl9taWkiIGZvciBhbGwgU29DJ3MuIA0KDQo+IA0K PiBbLi4uXQ0KPiA+IEBAIC0xOTY1LDYgKzI0NDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZA0KPiByYXZiX21hdGNoX3RhYmxlW10gPSB7DQo+ID4gIAl7IC5jb21wYXRpYmxl ID0gInJlbmVzYXMsZXRoZXJhdmItcmNhci1nZW4yIiwgLmRhdGEgPSAodm9pZA0KPiAqKVJDQVJf R0VOMiB9LA0KPiA+ICAJeyAuY29tcGF0aWJsZSA9ICJyZW5lc2FzLGV0aGVyYXZiLXI4YTc3OTUi LCAuZGF0YSA9ICh2b2lkDQo+ICopUkNBUl9HRU4zIH0sDQo+ID4gIAl7IC5jb21wYXRpYmxlID0g InJlbmVzYXMsZXRoZXJhdmItcmNhci1nZW4zIiwgLmRhdGEgPSAodm9pZA0KPiA+ICopUkNBUl9H RU4zIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gInJlbmVzYXMscnpnMmwtZ2V0aGVyIiwgLmRh dGEgPSAodm9pZCAqKVJaX0cyTCB9LA0KPiANCj4gICAgTWhtLCB3ZSByZXNlcnZlIHRoZSByaWdo dCB0byBjYWxsIHRoZSBoYXJkd2FyZSAiZ2V0aGVyIiB0byB0aGUgdG8gdGhlDQo+IHJkcml2ZXIu Li4NCj4gV291bGQgIHRoZSAicmVuZXNhcyxyemcybC1nYmV0aCIgc3RyaW5nIGZpdD8NCg0KT0su DQoNCj4gDQo+IFsuLi5dDQo+ID4gQEAgLTIwODIsMjAgKzI1NjUsMTEgQEAgc3RhdGljIGludCBy YXZiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+ID4gIAkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gIAl9DQo+ID4NCj4gPiAtCS8qIEdldCBiYXNlIGFkZHJlc3MgKi8NCj4g PiAtCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7 DQo+ID4gLQlpZiAoIXJlcykgew0KPiA+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgImludmFsaWQg cmVzb3VyY2VcbiIpOw0KPiA+IC0JCXJldHVybiAtRUlOVkFMOw0KPiA+IC0JfQ0KPiA+IC0NCj4g PiAgCW5kZXYgPSBhbGxvY19ldGhlcmRldl9tcXMoc2l6ZW9mKHN0cnVjdCByYXZiX3ByaXZhdGUp LA0KPiA+ICAJCQkJICBOVU1fVFhfUVVFVUUsIE5VTV9SWF9RVUVVRSk7DQo+ID4gIAlpZiAoIW5k ZXYpDQo+ID4gIAkJcmV0dXJuIC1FTk9NRU07DQo+ID4NCj4gPiAtCS8qIFRoZSBFdGhlci1zcGVj aWZpYyBlbnRyaWVzIGluIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiAqLw0KPiA+IC0JbmRldi0+YmFz ZV9hZGRyID0gcmVzLT5zdGFydDsNCj4gPg0KPiA+ICAJY2hpcF9pZCA9IChlbnVtIHJhdmJfY2hp cF9pZClvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBkZXYtPmRldik7DQo+ID4NCj4gPiBAQCAt MjEwNCwxMSArMjU3OCwxOSBAQCBzdGF0aWMgaW50IHJhdmJfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZQ0KPiAqcGRldikNCj4gPiAgCXByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gPiAg CXByaXYtPmNoaXBfaWQgPSBjaGlwX2lkOw0KPiA+DQo+ID4gLQluZGV2LT5mZWF0dXJlcyA9IE5F VElGX0ZfUlhDU1VNOw0KPiA+IC0JbmRldi0+aHdfZmVhdHVyZXMgPSBORVRJRl9GX1JYQ1NVTTsN Cj4gPiAtDQo+ID4gLQlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsNCj4gPiAtCXBtX3J1 bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldik7DQo+ID4gKwlpZiAoY2hpcF9pZCA9PSBSWl9HMkwp IHsNCj4gPiArCQluZGV2LT5od19mZWF0dXJlcyB8PSAoTkVUSUZfRl9IV19DU1VNIHwgTkVUSUZf Rl9SWENTVU0pOw0KPiA+ICsJCXByaXYtPnJzdGMgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KCZw ZGV2LT5kZXYsIE5VTEwpOw0KPiA+ICsJCWlmIChJU19FUlIocHJpdi0+cnN0YykpIHsNCj4gPiAr CQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBjcGcgcmVzZXRcbiIpOw0KPiA+ ICsJCQlmcmVlX25ldGRldihuZGV2KTsNCj4gPiArCQkJcmV0dXJuIFBUUl9FUlIocHJpdi0+cnN0 Yyk7DQo+ID4gKwkJfQ0KPiA+ICsJCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocHJpdi0+cnN0Yyk7 DQo+IA0KPiAgICBUaGlzIGFza3MgZm9yIHRoZSBzZXJwYXRlIHBhdGNoLg0KRG9uZSBhbHJlYWR5 Lg0KPiANCj4gWy4uLl0NCj4gPiBAQCAtMjEyMCwxOCArMjYwMiwyNCBAQCBzdGF0aWMgaW50IHJh dmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiAqcGRldikNCj4gPiAgCX0NCj4gPiAg CW5kZXYtPmlycSA9IGlycTsNCj4gPg0KPiA+ICsJcG1fcnVudGltZV9lbmFibGUoJnBkZXYtPmRl dik7DQo+ID4gKwlwbV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5kZXYpOw0KPiA+ICsNCj4gPiAg CXByaXYtPm5kZXYgPSBuZGV2Ow0KPiA+ICAJcHJpdi0+cGRldiA9IHBkZXY7DQo+ID4gIAlwcml2 LT5udW1fdHhfcmluZ1tSQVZCX0JFXSA9IEJFX1RYX1JJTkdfU0laRTsNCj4gPiAgCXByaXYtPm51 bV9yeF9yaW5nW1JBVkJfQkVdID0gQkVfUlhfUklOR19TSVpFOw0KPiA+ICAJcHJpdi0+bnVtX3R4 X3JpbmdbUkFWQl9OQ10gPSBOQ19UWF9SSU5HX1NJWkU7DQo+ID4gIAlwcml2LT5udW1fcnhfcmlu Z1tSQVZCX05DXSA9IE5DX1JYX1JJTkdfU0laRTsNCj4gPiAtCXByaXYtPmFkZHIgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCj4gPiArCXByaXYtPmFkZHIgPSBkZXZt X3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCAmcmVzKTsNCj4gDQo+ ICAgIFNlcGFyYXRlIHBhdGNoLCBwbGVhc2UuDQo+IA0KPiBbLi4uXQ0KPiA+IEBAIC0yMTgxLDMw ICsyNjcxLDM5IEBAIHN0YXRpYyBpbnQgcmF2Yl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl DQo+ID4gKnBkZXYpDQo+IFsuLi5dDQo+ID4gIAkvKiBTZXQgQVZCIGNvbmZpZyBtb2RlICovDQo+ ID4gIAlyYXZiX3NldF9jb25maWdfbW9kZShuZGV2KTsNCj4gPg0KPiA+IC0JLyogU2V0IEdUSSB2 YWx1ZSAqLw0KPiA+IC0JZXJyb3IgPSByYXZiX3NldF9ndGkobmRldik7DQo+ID4gLQlpZiAoZXJy b3IpDQo+ID4gLQkJZ290byBvdXRfZGlzYWJsZV9yZWZjbGs7DQo+ID4gKwlpZiAocHJpdi0+Y2hp cF9pZCAhPSBSWl9HMkwpIHsNCj4gPiArCQkvKiBTZXQgR1RJIHZhbHVlICovDQo+ID4gKwkJZXJy b3IgPSByYXZiX3NldF9ndGkobmRldik7DQo+ID4gKwkJaWYgKGVycm9yKQ0KPiA+ICsJCQlnb3Rv IG91dF9kaXNhYmxlX3JlZmNsazsNCj4gPg0KPiA+IC0JLyogUmVxdWVzdCBHVEkgbG9hZGluZyAq Lw0KPiA+IC0JcmF2Yl9tb2RpZnkobmRldiwgR0NDUiwgR0NDUl9MVEksIEdDQ1JfTFRJKTsNCj4g PiArCQkvKiBSZXF1ZXN0IEdUSSBsb2FkaW5nICovDQo+ID4gKwkJcmF2Yl9tb2RpZnkobmRldiwg R0NDUiwgR0NDUl9MVEksIEdDQ1JfTFRJKTsNCj4gPg0KPiA+IC0JaWYgKHByaXYtPmNoaXBfaWQg PT0gUkNBUl9HRU4zKSB7DQo+ID4gLQkJcmF2Yl9wYXJzZV9kZWxheV9tb2RlKG5wLCBuZGV2KTsN Cj4gPiAtCQlyYXZiX3NldF9kZWxheV9tb2RlKG5kZXYpOw0KPiA+ICsJCWlmIChwcml2LT5jaGlw X2lkID09IFJDQVJfR0VOMykgew0KPiA+ICsJCQlyYXZiX3BhcnNlX2RlbGF5X21vZGUobnAsIG5k ZXYpOw0KPiA+ICsJCQlyYXZiX3NldF9kZWxheV9tb2RlKG5kZXYpOw0KPiA+ICsJCX0NCj4gPiAg CX0NCj4gDQo+ICAgIFVnaC4uLiBuZWVkcyB0byBiZSB1bnRhZ2xlZCB0b28uDQo+IA0KPiAgICBX ZW50IHRocnUgdGhlIGxhcmdlIHBhdGNoIGF0IGxhc3QhIElmIHlvdSBuZWVkIGhlbHAgYWRkcmVz c2luZw0KPiBjb21tZW50cywgSSBjYW4gcHJvYmFibHkgbWFrZSB0aGUgZHJpdmVyIHBhdGNoZXMg dXNpbmcgZGF0YQ0KPiBwYXJhbWV0cml6YXRpb24gdnMgY2hpcF9pZC4NCg0KQXMgcGVyIEdlZXJ0 J3MgcmV2aWV3IGNvbW1lbnQgYXMgd2VsbCBhcyB5b3UgYXJlIGFsc28gYWdyZWVpbmcgYXMgcGVy IHJldmlldyBjb21tZW50DQpUaGUgZHJpdmVyIG5lZWRzIHRvIHJlcGxhY2UgZGF0YSB3aXRoIGEg c3RydWN0dXJlIHdpdGggdmFsdWVzLCBmZWF0dXJlcyBhbmQgZnVuY3Rpb24gcG9pbnRlcnMuDQoN CkkgaGF2ZSBkb25lIHRoZSBjb2RlIGNoYW5nZXMgYW5kIGl0IHRlc3RlZCB0aGUgY2hhbmdlcyBv biBSWi9HMltNLE4sTF0gYW5kIFJaL0cxTi4NClRoZSBjb2RlIGlzIGluIGludGVybmFsIHJldmll dy4gSSBzaG91bGQgYmUgYWJsZSB0byBzZW5kIHRoaXMgcGF0Y2ggd2l0aCBpbiBjb3VwbGUNCk9m IGRheXMgd2l0aCBmaXhpbmcgc29tZSBvZiBleHRyYSBzdWdnZXN0aW9ucyBwb2ludGVkIG91dCBi eSB5b3UuDQoNClRoYW5rcyBmb3IgeW91ciBzdWdnZXN0aW9ucy4NCg0KUmVnYXJkcywNCkJpanUN Cg0KDQo+IA0KPiBbLi4uXQ0KPiANCj4gTUJSLCBTZXJnZWkNCg==