From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 359DE42677; Wed, 4 Oct 2023 23:12:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 027CF402AB; Wed, 4 Oct 2023 23:12:06 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 87C344029A for ; Wed, 4 Oct 2023 23:12:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1696453923; x=1727989923; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=U4n5v35sCBALkUX8AKG8hhxKOBboI1NjMeTapdA6S20=; b=MVyHxzK6uynzpcJf8ZxomV8fvFPZkcwJzU9lXIsV3vcmLDj31AIDX6zQ wqepviD/ou5+1UTyhUoPfs0G9wqM3TOeXFjmteMy96fnWPEWCY88Px56h DQoUnV7HeWwdouU4m6AJtpkmIVEDSIWAs7UIp7O5z4DthtXZGjFAiqDuk mlXGNFTRmiGoXWxqMZ9m5lyWJKGS/OwpQsYiLKzsLDH3x4fnO9DdolCel hNpfovNl/BE1bmVAhqGJ4/qqKuv6aB8yfufs9BW+Pb87/8u+EagqTAlwa 8Wjs/5UGv6VvWM29TTfhtG67bhY2FGamUVmgGSOLqsQzYX60YiDOHdxWv Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10853"; a="383210654" X-IronPort-AV: E=Sophos;i="6.03,201,1694761200"; d="scan'208";a="383210654" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Oct 2023 14:11:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10853"; a="895144120" X-IronPort-AV: E=Sophos;i="6.03,201,1694761200"; d="scan'208";a="895144120" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 04 Oct 2023 14:10:24 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 4 Oct 2023 14:11:51 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 4 Oct 2023 14:11:51 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Wed, 4 Oct 2023 14:11:51 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.42) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Wed, 4 Oct 2023 14:11:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I0njK1acH/ardYvN61WlyA49S0jActPbm1F9oyEJd6l5fubnswMt7ulYRqWMaJLTMqo6lCEQcBbe6IlpO/Oam63XD3qxW3brc9BF2su50UUusNE6NykPIFxSoVaHa+5WDY1sXWPhbWOvlQfCjsOxZZA8u2y+2LDq0Uog7xXoUuTjp3tmk/KCXgDOJjQ0ldw1ve4zVMHyATBM0gansEKbbZucmKMVmNwGAX2tUOyDgFddw0wpPPM/wNrdSBCw/xA5Tb0I1FE3FE7k8xiMu2N5AnXBf0Ws2uCymNSN79+t8g0xJJu/hM3IZnpmhnOO3tfxQ6ydwj+YLeDj32z9t/qeMQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=U4n5v35sCBALkUX8AKG8hhxKOBboI1NjMeTapdA6S20=; b=VzJGoTaXrmw6dvFORJUA7K8CoB/p3+8snWJAHA3HV1eAQNp/k/ePCPy0WqYthdq2Q8W/26VppdbI8I6ukQ9OBkkcKcfQ9EqQj0rt9eDG8JCVO4EyXelod/Mocypa2Zal62w0fxEvtBPjmj33b7q7cDg8adh+v36h+FKOQkNMPn9bWnp0ewB3rqLHKXvKPrEGO0X9rd9+9LcRpwLJXgReaJCIDCQ14M6DngH4JoUThEVlyd7S/HC2jrlVsFLi50Vi88ri8k1NqNcJFYISJHtHiBHDelQzwIpBxfcMbOWdgZQ/IY9EKczpYvyp0UwsNUsQgNEBZxyTE/g6iLsv8yxfxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM6PR11MB4457.namprd11.prod.outlook.com (2603:10b6:5:203::22) by SA1PR11MB5874.namprd11.prod.outlook.com (2603:10b6:806:229::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.26; Wed, 4 Oct 2023 21:11:45 +0000 Received: from DM6PR11MB4457.namprd11.prod.outlook.com ([fe80::3207:2893:cd81:30a7]) by DM6PR11MB4457.namprd11.prod.outlook.com ([fe80::3207:2893:cd81:30a7%3]) with mapi id 15.20.6838.033; Wed, 4 Oct 2023 21:11:45 +0000 From: "Chautru, Nicolas" To: Maxime Coquelin , "dev@dpdk.org" CC: "hemant.agrawal@nxp.com" , "david.marchand@redhat.com" , "Vargas, Hernan" Subject: RE: [PATCH v3 08/12] baseband/acc: add FEC capabilities for the VRB2 variant Thread-Topic: [PATCH v3 08/12] baseband/acc: add FEC capabilities for the VRB2 variant Thread-Index: AQHZ8vNWd5JG5nPAdEONtFa4eF2QlbA4JdaAgAIB57A= Date: Wed, 4 Oct 2023 21:11:44 +0000 Message-ID: References: <20230929163516.3636499-1-nicolas.chautru@intel.com> <20230929163516.3636499-9-nicolas.chautru@intel.com> <0d8df35b-7a4e-ccf4-c9f5-8fc378c3190d@redhat.com> In-Reply-To: <0d8df35b-7a4e-ccf4-c9f5-8fc378c3190d@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR11MB4457:EE_|SA1PR11MB5874:EE_ x-ms-office365-filtering-correlation-id: 56d228e3-9e57-4c41-813f-08dbc51e8358 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yoMuU0Kp0v4GqeD5a+GVv4S6tD2OwmVHXILjycAtvcZZufW1okfXlO5bZZgfDkGXgagmhDR8OFyBPanRJP7iBjAMAz9/uDg3N3W7UYATlhtLDGb2nQWiEvmyBrTA/TKJBbMjMklL1LzJ669ExoGQwWUcB6DQ5m9Ue7mSSIuxzRsF1W5CYhvAUOIuJPrK7CBpeVTRHPyIZJq7HX+CO1yfaIEKvApjKPVtSMXge1KX1lIT7Y0DOgB8aRv9XYBHUccNnKQSPNTfiKblYqCad3Sj3k/naG3EAwactQZqm0aPz0gLJpSInVegSMIhIyBxnRmpLwvbcMLvOtXGYn9H9cP47kJCMtNhr8iLXSzypSXNnotfMwcEc9/0+WQcxlTLCWqLmvwRvYf9EvHSwsVBSzgbJfrwMiYqqxZAiqDEEM4A9wbzBJBlBOLHdZXsk2UsEQihONAvti1p+TraBL3t27Cxa562TGLtQhvoIb2TaQx21Ll4QTwkpJkA7FwNt655wEmn2wwBsUheJWdHqqQxX9/qlmAbzP75wdKvYm1XJ1NZP2TWPHcM37ezu8xqLztWeP6R7Ko2/VodMSSQTRbPqXquP6qGaVC6SwthGuUwTW9lytnWlTGbhRGUVWwhoXbdM5l0 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB4457.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(39860400002)(376002)(366004)(396003)(136003)(230922051799003)(451199024)(1800799009)(64100799003)(186009)(478600001)(53546011)(9686003)(6506007)(7696005)(107886003)(8936002)(83380400001)(316002)(64756008)(30864003)(52536014)(26005)(66476007)(66946007)(71200400001)(66446008)(110136005)(2906002)(66556008)(5660300002)(76116006)(55016003)(54906003)(4326008)(86362001)(38070700005)(8676002)(41300700001)(82960400001)(122000001)(38100700002)(33656002)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RFhhWUdSNVNvL0J1YlZDU2Z6cFRJSmtVWHg2QmdudkNSTE9hRWJma1JGaVhy?= =?utf-8?B?ZE1IdVExN0IzK1NSaEVkRzZremZzSGVlZ3c1UTdIRHFrSExlY2hYSHpGb29G?= =?utf-8?B?bUZkZStocVZDK1BGb1dkQ0NjTld3SkxYRjcvNGxaNyswQnFuZ0gyZ1ZwMTZp?= =?utf-8?B?NStaSGc3VGsycW5UNnVjRWgwaFQwd3FDc1dUcmJkUThmZ2NiVkhSOC9IRjlu?= =?utf-8?B?OEkwNkhhUGtHclNhTHdDOFJoeTBUaGxwbnUyY3dPNjJlLzJ2bTBITitJbVM1?= =?utf-8?B?U1kzOG44enVkYm5TcGZvUEJZVnYrc3cyUlVhZ2p4QVhkUGZBelpNbkZDK21N?= =?utf-8?B?OEw0QTRabjJCeDdNUWgyRlhzaGZpL3JFYXlnbGpSZ1RyZzZRNHhyeTMrZTVF?= =?utf-8?B?WXgxOGhyaFpCRGN3blZSU1c4UkFyZDU2Rjk5NGJENy82L3Y4bWhiYVRSOGNW?= =?utf-8?B?a2VDajF1U0VVSFhTVXNOdmNPY2gwVjdCYXBYQ0h5Mml6TTFFVGdtL0RjSmJj?= =?utf-8?B?SEVjOGwzRjlqajlTWms4UWJ2RnkycHNlSzdpZE84b2F1WW8xNEV6QTdUcFl2?= =?utf-8?B?dzRYdk9pakZtSHRWYjhOVjRoaTVnVWZlRUxta0hicG4xdVBMVnp4bnlSSGVt?= =?utf-8?B?bXNkYnYrODJyN0FBWGdQZzJia0tIY21Bbm1MK0lTYUFtZ3RlQnhWZy8wczdL?= =?utf-8?B?MzFSZFI3bE05ZkNBSVFNVjEwMnM5RzZ2NFl3MEltWEdPZ05VOGl4V1orWlM0?= =?utf-8?B?Y3FSOHQ2Y0xVd1hXKzUzQkhnMWQrcU1QbGFVTnFhVlhYNkxkakhCN01wRllj?= =?utf-8?B?ZUo0RVlCNWl1c0VjTXFKTHJIcW5KZFpLYVNkajFMOEs5WnJ6Q1BhR2VieHlM?= =?utf-8?B?YU5jZ3VLUytRZkQ3eFg4dGcycnBFczhJT1B1cmhoVEtMZEFHZ0pLZFhLeVFE?= =?utf-8?B?OC81QVo1WDhxNE1ZajZrMW5OcXVpT2FDOFhlUlBrOExhMHFHWVF5Y0RVbGtj?= =?utf-8?B?cVZhSFJlZkpCL1RSb0ZHV2hZcTFRV21IYTU0QjQ5RkI3dHQzTTVjUjdkeVd5?= =?utf-8?B?ZUM4cCt5c3dFcWRtVlZFdG42cENaakliTEVoZGlRU2Q4MkMwZDhBMjYycHY2?= =?utf-8?B?ZkdvT1BmUGxUa2J3OWRSallROGFWV21kL1VaenZrRVZWMFNmTVNyYm9yOWd6?= =?utf-8?B?aU1QdjlobEF4M2xzOFhLQVA4ZE85NWhKcS8vNzNkTWYvTzJORmIxQzJ6cnZI?= =?utf-8?B?aVQ4THBudDJvNGpBMDloeC9zcXpJRldNU203OTNuQTJ0L25yOStYWFdtak8v?= =?utf-8?B?T0dVRTRabTcwcVJXTDRjSzdmdEtmWTZ6KytqSk00ckxsaHZOdzhmbnpyV2xi?= =?utf-8?B?VjhNOU95WHBDSmpLVWZHd2xZSTZ4enpZMS8raW8vaGhHNkp0T2dDc29rMFRQ?= =?utf-8?B?Q2prSFZSQ3VGenZtWElNN0V3MndzaGJ3OC9LM3ljcXJ4aXF1VzN2UWNjSHR1?= =?utf-8?B?ZU1lTTh3VVFWVjgwRmt6SFMyLzUvY3RTRHFJMzdQbEtPdlQzd0VzY2RDZ0Qy?= =?utf-8?B?Y2ZyazBqV21BTk9rTS9sQVZmR3RRbnBIUDhEUnBHaG9EZU9VS0FmdHovNGxw?= =?utf-8?B?amxBbkRtVFRURWxFUmxrK1dVZ0NpNUZlajE3cytWN29xL0tVajZsZ3U4ZDdW?= =?utf-8?B?SEQrbnJiWTZZaThjcU9ma3lJYUJ5eFFyS0VpdHMxa0lvdmlMd3NYTXhSRDhG?= =?utf-8?B?YjJId3ZPSUNVMnBJNzc2ZXVTVWxUYWlvdjNGRGFrVzF6UlJjRzNWV3Q2a1Vy?= =?utf-8?B?aGJFK2dLT1I3ZTUvTUZZMlI2U2JONGI4eVk2Q2d6ZmhuSjFTMlFYS3VGUk5r?= =?utf-8?B?cVc0bFAzbU1ZNThCU2x3UXoxSTYySkZES2NBZlpUb05KNWtJUE9LNjVERm9i?= =?utf-8?B?WWI2NHZNWTFyVzNCc3luYUg5LzFzcE1jNWd5SmNzZ3d1RmdBbEVBZzJ2cVVp?= =?utf-8?B?UGR0TDNRR3hmMzZLV2hrSVpkQ1Y5REdoWWM0NUptZmw3T2F1QitOSUJtaFJi?= =?utf-8?B?emhRc093dUFNMVlpNUpVd1l6NFJFeUdvTG5ndElMWk14YTRaYWNOM0FzRVY3?= =?utf-8?Q?OORqXh/a5Bl6MOEJ5y1mFon5p?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4457.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56d228e3-9e57-4c41-813f-08dbc51e8358 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2023 21:11:44.6192 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /xPrydZTYULyPwUxYEUrvYu8nNHuTtrq+Jhi/lz2pTwuI6MR86l0xQS+IMsOHUs5R0w+JG2ST8aPCCfXhSnzSi6abveNZkdmAlHp3NMG5DI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB5874 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgTWF4aW1lLCANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhp bWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBUdWVzZGF5 LCBPY3RvYmVyIDMsIDIwMjMgNzoyOCBBTQ0KPiBUbzogQ2hhdXRydSwgTmljb2xhcyA8bmljb2xh cy5jaGF1dHJ1QGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogaGVtYW50LmFncmF3YWxA bnhwLmNvbTsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsgVmFyZ2FzLCBIZXJuYW4NCj4gPGhl cm5hbi52YXJnYXNAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDA4LzEyXSBi YXNlYmFuZC9hY2M6IGFkZCBGRUMgY2FwYWJpbGl0aWVzIGZvciB0aGUgVlJCMg0KPiB2YXJpYW50 DQo+IA0KPiANCj4gDQo+IE9uIDkvMjkvMjMgMTg6MzUsIE5pY29sYXMgQ2hhdXRydSB3cm90ZToN Cj4gPiBOZXcgaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgb2YgdGhlIEZFQyBmZWF0dXJlcyBzcGVj aWZpYyB0byB0aGUgVlJCMg0KPiA+IHZhcmlhbnQuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBO aWNvbGFzIENoYXV0cnUgPG5pY29sYXMuY2hhdXRydUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4g ICBkcml2ZXJzL2Jhc2ViYW5kL2FjYy9ydGVfdnJiX3BtZC5jIHwgNTY3DQo+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKystDQo+ID4gICAxIGZpbGUgY2hhbmdlZCwgNTQ4IGluc2VydGlvbnMo KyksIDE5IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZWJh bmQvYWNjL3J0ZV92cmJfcG1kLmMNCj4gPiBiL2RyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV92cmJf cG1kLmMNCj4gPiBpbmRleCA0OGU3NzljZTc3Li45M2FkZDgyOTQ3IDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV92cmJfcG1kLmMNCj4gPiArKysgYi9kcml2ZXJzL2Jh c2ViYW5kL2FjYy9ydGVfdnJiX3BtZC5jDQo+ID4gQEAgLTEyMzUsNiArMTIzNSw5NCBAQCB2cmJf ZGV2X2luZm9fZ2V0KHN0cnVjdCBydGVfYmJkZXYgKmRldiwgc3RydWN0DQo+IHJ0ZV9iYmRldl9k cml2ZXJfaW5mbyAqZGV2X2luZm8pDQo+ID4gICAJfTsNCj4gPg0KPiA+ICAgCXN0YXRpYyBjb25z dCBzdHJ1Y3QgcnRlX2JiZGV2X29wX2NhcCB2cmIyX2JiZGV2X2NhcGFiaWxpdGllc1tdID0gew0K PiA+ICsJCXsNCj4gPiArCQkJLnR5cGUgPSBSVEVfQkJERVZfT1BfVFVSQk9fREVDLA0KPiA+ICsJ CQkuY2FwLnR1cmJvX2RlYyA9IHsNCj4gPiArCQkJCS5jYXBhYmlsaXR5X2ZsYWdzID0NCj4gPiAr DQo+IAlSVEVfQkJERVZfVFVSQk9fU1VCQkxPQ0tfREVJTlRFUkxFQVZFIHwNCj4gPiArCQkJCQlS VEVfQkJERVZfVFVSQk9fQ1JDX1RZUEVfMjRCIHwNCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9f REVDX0NSQ18yNEJfRFJPUCB8DQo+ID4gKwkJCQkJUlRFX0JCREVWX1RVUkJPX0VRVUFMSVpFUiB8 DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX1NPRlRfT1VUX1NBVFVSQVRFIHwNCj4gPiArDQo+ IAlSVEVfQkJERVZfVFVSQk9fSEFMRl9JVEVSQVRJT05fRVZFTiB8DQo+ID4gKw0KPiAJUlRFX0JC REVWX1RVUkJPX0NPTlRJTlVFX0NSQ19NQVRDSCB8DQo+ID4gKwkJCQkJUlRFX0JCREVWX1RVUkJP X1NPRlRfT1VUUFVUIHwNCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fRUFSTFlfVEVSTUlOQVRJ T04gfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19ERUNfSU5URVJSVVBUUyB8DQo+ID4gKw0K PiAJUlRFX0JCREVWX1RVUkJPX05FR19MTFJfMV9CSVRfSU4gfA0KPiA+ICsNCj4gCVJURV9CQkRF Vl9UVVJCT19ORUdfTExSXzFfQklUX1NPRlRfT1VUIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVS Qk9fTUFQX0RFQyB8DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX0RFQ19UQl9DUkNfMjRCX0tF RVAgfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19ERUNfU0NBVFRFUl9HQVRIRVIsDQo+ID4g KwkJCQkubWF4X2xscl9tb2R1bHVzID0gSU5UOF9NQVgsDQo+ID4gKwkJCQkubnVtX2J1ZmZlcnNf c3JjID0NCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJ CQkJLm51bV9idWZmZXJzX2hhcmRfb3V0ID0NCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fTUFY X0NPREVfQkxPQ0tTLA0KPiA+ICsJCQkJLm51bV9idWZmZXJzX3NvZnRfb3V0ID0NCj4gPiArDQo+ IAlSVEVfQkJERVZfVFVSQk9fTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQl9DQo+ID4gKwkJfSwN Cj4gPiArCQl7DQo+ID4gKwkJCS50eXBlID0gUlRFX0JCREVWX09QX1RVUkJPX0VOQywNCj4gPiAr CQkJLmNhcC50dXJib19lbmMgPSB7DQo+ID4gKwkJCQkuY2FwYWJpbGl0eV9mbGFncyA9DQo+ID4g Kw0KPiAJUlRFX0JCREVWX1RVUkJPX0NSQ18yNEJfQVRUQUNIIHwNCj4gPiArDQo+IAlSVEVfQkJE RVZfVFVSQk9fUlZfSU5ERVhfQllQQVNTIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fUkFU RV9NQVRDSCB8DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX0VOQ19JTlRFUlJVUFRTIHwNCj4g PiArDQo+IAlSVEVfQkJERVZfVFVSQk9fRU5DX1NDQVRURVJfR0FUSEVSLA0KPiA+ICsJCQkJLm51 bV9idWZmZXJzX3NyYyA9DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX01BWF9DT0RFX0JMT0NL UywNCj4gPiArCQkJCS5udW1fYnVmZmVyc19kc3QgPQ0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJC T19NQVhfQ09ERV9CTE9DS1MsDQo+ID4gKwkJCX0NCj4gPiArCQl9LA0KPiA+ICsJCXsNCj4gPiAr CQkJLnR5cGUgICA9IFJURV9CQkRFVl9PUF9MRFBDX0VOQywNCj4gPiArCQkJLmNhcC5sZHBjX2Vu YyA9IHsNCj4gPiArCQkJCS5jYXBhYmlsaXR5X2ZsYWdzID0NCj4gPiArCQkJCQlSVEVfQkJERVZf TERQQ19SQVRFX01BVENIIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfTERQQ19DUkNfMjRCX0FUVEFD SA0KPiB8DQo+ID4gKw0KPiAJUlRFX0JCREVWX0xEUENfSU5URVJMRUFWRVJfQllQQVNTIHwNCj4g PiArCQkJCQlSVEVfQkJERVZfTERQQ19FTkNfSU5URVJSVVBUUw0KPiB8DQo+ID4gKw0KPiAJUlRF X0JCREVWX0xEUENfRU5DX1NDQVRURVJfR0FUSEVSIHwNCj4gPiArDQo+IAlSVEVfQkJERVZfTERQ Q19FTkNfQ09OQ0FURU5BVElPTiwNCj4gPiArCQkJCS5udW1fYnVmZmVyc19zcmMgPQ0KPiA+ICsN Cj4gCVJURV9CQkRFVl9MRFBDX01BWF9DT0RFX0JMT0NLUywNCj4gPiArCQkJCS5udW1fYnVmZmVy c19kc3QgPQ0KPiA+ICsNCj4gCVJURV9CQkRFVl9MRFBDX01BWF9DT0RFX0JMT0NLUywNCj4gPiAr CQkJfQ0KPiA+ICsJCX0sDQo+ID4gKwkJew0KPiA+ICsJCQkudHlwZSAgID0gUlRFX0JCREVWX09Q X0xEUENfREVDLA0KPiA+ICsJCQkuY2FwLmxkcGNfZGVjID0gew0KPiA+ICsJCQkuY2FwYWJpbGl0 eV9mbGFncyA9DQo+ID4gKwkJCQlSVEVfQkJERVZfTERQQ19DUkNfVFlQRV8yNEJfQ0hFQ0sgfA0K PiA+ICsJCQkJUlRFX0JCREVWX0xEUENfQ1JDX1RZUEVfMjRCX0RST1AgfA0KPiA+ICsJCQkJUlRF X0JCREVWX0xEUENfQ1JDX1RZUEVfMjRBX0NIRUNLIHwNCj4gPiArCQkJCVJURV9CQkRFVl9MRFBD X0NSQ19UWVBFXzE2X0NIRUNLIHwNCj4gPiArCQkJCVJURV9CQkRFVl9MRFBDX0hRX0NPTUJJTkVf SU5fRU5BQkxFDQo+IHwNCj4gPiArDQo+IAlSVEVfQkJERVZfTERQQ19IUV9DT01CSU5FX09VVF9F TkFCTEUgfA0KPiA+ICsJCQkJUlRFX0JCREVWX0xEUENfSVRFUkFUSU9OX1NUT1BfRU5BQkxFDQo+ IHwNCj4gPiArCQkJCVJURV9CQkRFVl9MRFBDX0RFSU5URVJMRUFWRVJfQllQQVNTIHwNCj4gPiAr CQkJCVJURV9CQkRFVl9MRFBDX0RFQ19TQ0FUVEVSX0dBVEhFUiB8DQo+ID4gKw0KPiAJUlRFX0JC REVWX0xEUENfSEFSUV82QklUX0NPTVBSRVNTSU9OIHwNCj4gPiArDQo+IAlSVEVfQkJERVZfTERQ Q19IQVJRXzRCSVRfQ09NUFJFU1NJT04gfA0KPiA+ICsJCQkJUlRFX0JCREVWX0xEUENfTExSX0NP TVBSRVNTSU9OIHwNCj4gPiArCQkJCVJURV9CQkRFVl9MRFBDX1NPRlRfT1VUX0VOQUJMRSB8DQo+ ID4gKwkJCQlSVEVfQkJERVZfTERQQ19TT0ZUX09VVF9STV9CWVBBU1MgfA0KPiA+ICsNCj4gCVJU RV9CQkRFVl9MRFBDX1NPRlRfT1VUX0RFSU5URVJMRUFWRVJfQllQQVNTIHwNCj4gPiArCQkJCVJU RV9CQkRFVl9MRFBDX0RFQ19JTlRFUlJVUFRTLA0KPiA+ICsJCQkubGxyX3NpemUgPSA4LA0KPiA+ ICsJCQkubGxyX2RlY2ltYWxzID0gMiwNCj4gPiArCQkJLm51bV9idWZmZXJzX3NyYyA9DQo+ID4g Kw0KPiAJUlRFX0JCREVWX0xEUENfTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQkubnVtX2J1ZmZl cnNfaGFyZF9vdXQgPQ0KPiA+ICsNCj4gCVJURV9CQkRFVl9MRFBDX01BWF9DT0RFX0JMT0NLUywN Cj4gPiArCQkJLm51bV9idWZmZXJzX3NvZnRfb3V0ID0gMCwNCj4gPiArCQkJfQ0KPiA+ICsJCX0s DQo+ID4gICAJCVJURV9CQkRFVl9FTkRfT0ZfQ0FQQUJJTElUSUVTX0xJU1QoKQ0KPiA+ICAgCX07 DQo+ID4NCj4gPiBAQCAtMTc3NCw2ICsxODYyLDE0MSBAQCB2cmIxX2RtYV9kZXNjX2xkX2ZpbGwo c3RydWN0IHJ0ZV9iYmRldl9kZWNfb3ANCj4gKm9wLA0KPiA+ICAgCXJldHVybiAwOw0KPiA+ICAg fQ0KPiA+DQo+ID4gKy8qIEZpbGwgaW4gYSBmcmFtZSBjb250cm9sIHdvcmQgZm9yIExEUEMgZGVj b2RpbmcuICovIHN0YXRpYyBpbmxpbmUNCj4gPiArdm9pZCB2cmIyX2Zjd19sZF9maWxsKHN0cnVj dCBydGVfYmJkZXZfZGVjX29wICpvcCwgc3RydWN0IGFjY19mY3dfbGQNCj4gPiArKmZjdywNCj4g PiArCQl1bmlvbiBhY2NfaGFycV9sYXlvdXRfZGF0YSAqaGFycV9sYXlvdXQpIHsNCj4gPiArCXVp bnQxNl90IGhhcnFfb3V0X2xlbmd0aCwgaGFycV9pbl9sZW5ndGgsIG5jYl9wLCBrMF9wLCBwYXJp dHlfb2Zmc2V0Ow0KPiA+ICsJdWludDMyX3QgaGFycV9pbmRleDsNCj4gPiArCXVpbnQzMl90IGw7 DQo+IA0KPiANCj4gVGhpcyBpcyBzbyBzaW1pbGFyIHdpdGggdnJiMV9mY3dfbGRfZmlsbCgpIHRo YXQgaXQgZG9lcyBub3QgbWFrZSBzZW5zZQ0KPiB0byBkdXBsaWNhdGUgc28gbXVjaCBjb2RlLg0K PiANCj4gRG8geW91IGNvbmZpcm0gdGhlcmUgYXJlIG5vIG90aGVyIGRpZmZlcmVuY2UgdGhhbiB0 aGUgU09GVF9PVVQgc3R1ZmYsDQo+IGFuZCByZXVzaW5nIHZyYjJfZmN3X2xkX2ZpbGwgb24gVlJC MSB3b3VsZCBqdXN0IHdvcmsgYXMgdGhlIG9wX2ZsYWdzIGFyZQ0KPiBjaGVja2VkIChhbmQgdGhl eSBzaG91bGQgbm90IGJlIHNldCBpZiBjYXBhYmlsaXR5IGlzIG5vdCBhZHZlcnRpemVkKT8NCg0K VGhlcmUgYXJlIHF1aXRlIG9mIGxvdCBvZiBkaWZmZXJlbmNlIHRvIHRoZSBmdW5kYW1lbnRhbCB1 bmRlcmx5aW5nIElQLCB0aGUgIElQIGRlY29kZXIgaXMgZGlmZmVyZW50IHdpdGggZGlmZmVyZW50 IHR1bmluZyBwb2ludCwgdGhlIFNPIGFuZCBIQVJRIHN1cHBvcnQgYXJlIGRpZmZlcmVudC4gDQpT dGlsbCBJIGJlbGlldmUgd2UgY2FuIHN1cHBvcnQgYm90aCBpbiB0aGUgc2FtZSBmdW5jdGlvbiB3 aXRob3V0IGJlaW5nIGEgdG9vIG11Y2ggYSBwcm9ibGVtIG1vdmluZyBmb3J3YXJkLiBEb2luZyB0 aGlzIGluIHY0LiANCg0KDQo+IA0KPiA+ICsJZmN3LT5xbSA9IG9wLT5sZHBjX2RlYy5xX207DQo+ ID4gKwlmY3ctPm5maWxsZXIgPSBvcC0+bGRwY19kZWMubl9maWxsZXI7DQo+ID4gKwlmY3ctPkJH ID0gKG9wLT5sZHBjX2RlYy5iYXNlZ3JhcGggLSAxKTsNCj4gPiArCWZjdy0+WmMgPSBvcC0+bGRw Y19kZWMuel9jOw0KPiA+ICsJZmN3LT5uY2IgPSBvcC0+bGRwY19kZWMubl9jYjsNCj4gPiArCWZj dy0+azAgPSBnZXRfazAoZmN3LT5uY2IsIGZjdy0+WmMsIG9wLT5sZHBjX2RlYy5iYXNlZ3JhcGgs DQo+ID4gKwkJCW9wLT5sZHBjX2RlYy5ydl9pbmRleCk7DQo+ID4gKwlpZiAob3AtPmxkcGNfZGVj LmNvZGVfYmxvY2tfbW9kZSA9PSBSVEVfQkJERVZfQ09ERV9CTE9DSykNCj4gPiArCQlmY3ctPnJt X2UgPSBvcC0+bGRwY19kZWMuY2JfcGFyYW1zLmU7DQo+ID4gKwllbHNlDQo+ID4gKwkJZmN3LT5y bV9lID0gKG9wLT5sZHBjX2RlYy50Yl9wYXJhbXMuciA8DQo+ID4gKwkJCQlvcC0+bGRwY19kZWMu dGJfcGFyYW1zLmNhYikgPw0KPiA+ICsJCQkJCQlvcC0+bGRwY19kZWMudGJfcGFyYW1zLmVhIDoN Cj4gPiArCQkJCQkJb3AtPmxkcGNfZGVjLnRiX3BhcmFtcy5lYjsNCj4gPiArDQo+ID4gKwlpZiAo dW5saWtlbHkoY2hlY2tfYml0KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gPiArCQkJUlRFX0JC REVWX0xEUENfSFFfQ09NQklORV9JTl9FTkFCTEUpICYmDQo+ID4gKwkJCShvcC0+bGRwY19kZWMu aGFycV9jb21iaW5lZF9pbnB1dC5sZW5ndGggPT0gMCkpKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xv ZyhXQVJOSU5HLCAiTnVsbCBIQVJRIGlucHV0IHNpemUgcHJvdmlkZWQiKTsNCj4gPiArCQkvKiBE aXNhYmxlIEhBUlEgaW5wdXQgaW4gdGhhdCBjYXNlIHRvIGNhcnJ5IGZvcndhcmQuICovDQo+ID4g KwkJb3AtPmxkcGNfZGVjLm9wX2ZsYWdzIF49DQo+IFJURV9CQkRFVl9MRFBDX0hRX0NPTUJJTkVf SU5fRU5BQkxFOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHVubGlrZWx5KGZjdy0+cm1fZSA9PSAwKSkg ew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coV0FSTklORywgIk51bGwgRSBpbnB1dCBwcm92aWRlZCIp Ow0KPiA+ICsJCWZjdy0+cm1fZSA9IDI7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZmN3LT5oY2lu X2VuID0gY2hlY2tfYml0KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gPiArCQkJUlRFX0JCREVW X0xEUENfSFFfQ09NQklORV9JTl9FTkFCTEUpOw0KPiA+ICsJZmN3LT5oY291dF9lbiA9IGNoZWNr X2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJCVJURV9CQkRFVl9MRFBDX0hRX0NP TUJJTkVfT1VUX0VOQUJMRSk7DQo+ID4gKwlmY3ctPmNyY19zZWxlY3QgPSBjaGVja19iaXQob3At PmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiA+ICsJCQlSVEVfQkJERVZfTERQQ19DUkNfVFlQRV8yNEJf Q0hFQ0spOw0KPiA+ICsJZmN3LT5zb19lbiA9IGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxh Z3MsDQo+IFJURV9CQkRFVl9MRFBDX1NPRlRfT1VUX0VOQUJMRSk7DQo+ID4gKwlmY3ctPnNvX2J5 cGFzc19pbnRsdiA9IGNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ID4gKw0KPiAJ UlRFX0JCREVWX0xEUENfU09GVF9PVVRfREVJTlRFUkxFQVZFUl9CWVBBU1MpOw0KPiA+ICsJZmN3 LT5zb19ieXBhc3Nfcm0gPSBjaGVja19iaXQob3AtPmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVf QkJERVZfTERQQ19TT0ZUX09VVF9STV9CWVBBU1MpOw0KPiA+ICsJZmN3LT5ieXBhc3NfZGVjID0g MDsNCj4gPiArCWZjdy0+YnlwYXNzX2ludGx2ID0gY2hlY2tfYml0KG9wLT5sZHBjX2RlYy5vcF9m bGFncywNCj4gPiArCQkJUlRFX0JCREVWX0xEUENfREVJTlRFUkxFQVZFUl9CWVBBU1MpOw0KPiA+ ICsJaWYgKG9wLT5sZHBjX2RlYy5xX20gPT0gMSkgew0KPiA+ICsJCWZjdy0+YnlwYXNzX2ludGx2 ID0gMTsNCj4gPiArCQlmY3ctPnFtID0gMjsNCj4gPiArCX0NCj4gPiArCWlmIChjaGVja19iaXQo b3AtPmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19IQVJRXzZCSVRfQ09NUFJF U1NJT04pKSB7DQo+ID4gKwkJZmN3LT5oY2luX2RlY29tcF9tb2RlID0gMTsNCj4gPiArCQlmY3ct Pmhjb3V0X2NvbXBfbW9kZSA9IDE7DQo+ID4gKwl9IGVsc2UgaWYgKGNoZWNrX2JpdChvcC0+bGRw Y19kZWMub3BfZmxhZ3MsDQo+IFJURV9CQkRFVl9MRFBDX0hBUlFfNEJJVF9DT01QUkVTU0lPTikp IHsNCj4gPiArCQlmY3ctPmhjaW5fZGVjb21wX21vZGUgPSA0Ow0KPiA+ICsJCWZjdy0+aGNvdXRf Y29tcF9tb2RlID0gNDsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJZmN3LT5oY2luX2RlY29tcF9t b2RlID0gMDsNCj4gPiArCQlmY3ctPmhjb3V0X2NvbXBfbW9kZSA9IDA7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJZmN3LT5sbHJfcGFja19tb2RlID0gY2hlY2tfYml0KG9wLT5sZHBjX2RlYy5vcF9m bGFncywNCj4gPiArCQkJUlRFX0JCREVWX0xEUENfTExSX0NPTVBSRVNTSU9OKTsNCj4gPiArCWhh cnFfaW5kZXggPSBocV9pbmRleChvcC0+bGRwY19kZWMuaGFycV9jb21iaW5lZF9vdXRwdXQub2Zm c2V0KTsNCj4gPiArCWlmIChmY3ctPmhjaW5fZW4gPiAwKSB7DQo+ID4gKwkJaGFycV9pbl9sZW5n dGggPSBvcC0+bGRwY19kZWMuaGFycV9jb21iaW5lZF9pbnB1dC5sZW5ndGg7DQo+ID4gKwkJaWYg KGZjdy0+aGNpbl9kZWNvbXBfbW9kZSA9PSAxKQ0KPiA+ICsJCQloYXJxX2luX2xlbmd0aCA9IGhh cnFfaW5fbGVuZ3RoICogOCAvIDY7DQo+ID4gKwkJZWxzZSBpZiAoZmN3LT5oY2luX2RlY29tcF9t b2RlID09IDQpDQo+ID4gKwkJCWhhcnFfaW5fbGVuZ3RoID0gaGFycV9pbl9sZW5ndGggKiAyOw0K PiA+ICsJCWhhcnFfaW5fbGVuZ3RoID0gUlRFX01JTihoYXJxX2luX2xlbmd0aCwgb3AtPmxkcGNf ZGVjLm5fY2INCj4gPiArCQkJCS0gb3AtPmxkcGNfZGVjLm5fZmlsbGVyKTsNCj4gPiArCQloYXJx X2luX2xlbmd0aCA9IFJURV9BTElHTl9DRUlMKGhhcnFfaW5fbGVuZ3RoLCA2NCk7DQo+ID4gKwkJ ZmN3LT5oY2luX3NpemUwID0gaGFycV9pbl9sZW5ndGg7DQo+ID4gKwkJZmN3LT5oY2luX29mZnNl dCA9IDA7DQo+ID4gKwkJZmN3LT5oY2luX3NpemUxID0gMDsNCj4gPiArCX0gZWxzZSB7DQo+ID4g KwkJZmN3LT5oY2luX3NpemUwID0gMDsNCj4gPiArCQlmY3ctPmhjaW5fb2Zmc2V0ID0gMDsNCj4g PiArCQlmY3ctPmhjaW5fc2l6ZTEgPSAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWZjdy0+aXRt YXggPSBvcC0+bGRwY19kZWMuaXRlcl9tYXg7DQo+ID4gKwlmY3ctPnNvX2l0ID0gb3AtPmxkcGNf ZGVjLml0ZXJfbWF4Ow0KPiA+ICsJZmN3LT5pdHN0b3AgPSBjaGVja19iaXQob3AtPmxkcGNfZGVj Lm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19JVEVSQVRJT05fU1RPUF9FTkFCTEUpOw0KPiA+ ICsJZmN3LT5jbnVfYWxnbyA9IEFDQ19BTEdPX01TQTsNCj4gPiArCWZjdy0+c3luZF9wcmVjb2Rl ciA9IGZjdy0+aXRzdG9wOw0KPiA+ICsNCj4gPiArCWZjdy0+bWluc3VtX29mZnNldCA9IDE7DQo+ ID4gKwlmY3ctPmRlY19sbHJjbGlwICAgPSAyOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBU aGVzZSBhcmUgYWxsIGltcGxpY2l0bHkgc2V0DQo+ID4gKwkgKiBmY3ctPnN5bmRfcG9zdCA9IDA7 DQo+ID4gKwkgKiBmY3ctPmRlY19jb252bGxyID0gMDsNCj4gPiArCSAqIGZjdy0+aGNvdXRfY29u dmxsciA9IDA7DQo+ID4gKwkgKiBmY3ctPmhjb3V0X3NpemUxID0gMDsNCj4gPiArCSAqIGZjdy0+ aGNvdXRfb2Zmc2V0ID0gMDsNCj4gPiArCSAqIGZjdy0+bmVnc3RvcF90aCA9IDA7DQo+ID4gKwkg KiBmY3ctPm5lZ3N0b3BfaXQgPSAwOw0KPiA+ICsJICogZmN3LT5uZWdzdG9wX2VuID0gMDsNCj4g PiArCSAqIGZjdy0+Z2Fpbl9pID0gMTsNCj4gPiArCSAqIGZjdy0+Z2Fpbl9oID0gMTsNCj4gPiAr CSAqLw0KPiA+ICsJaWYgKGZjdy0+aGNvdXRfZW4gPiAwKSB7DQo+ID4gKwkJcGFyaXR5X29mZnNl dCA9IChvcC0+bGRwY19kZWMuYmFzZWdyYXBoID09IDEgPyAyMCA6IDgpDQo+ID4gKwkJCSogb3At PmxkcGNfZGVjLnpfYyAtIG9wLT5sZHBjX2RlYy5uX2ZpbGxlcjsNCj4gPiArCQlrMF9wID0gKGZj dy0+azAgPiBwYXJpdHlfb2Zmc2V0KSA/DQo+ID4gKwkJCQlmY3ctPmswIC0gb3AtPmxkcGNfZGVj Lm5fZmlsbGVyIDogZmN3LT5rMDsNCj4gPiArCQluY2JfcCA9IGZjdy0+bmNiIC0gb3AtPmxkcGNf ZGVjLm5fZmlsbGVyOw0KPiA+ICsJCWwgPSBrMF9wICsgZmN3LT5ybV9lOw0KPiA+ICsJCWhhcnFf b3V0X2xlbmd0aCA9ICh1aW50MTZfdCkgZmN3LT5oY2luX3NpemUwOw0KPiA+ICsJCWhhcnFfb3V0 X2xlbmd0aCA9IFJURV9NSU4oUlRFX01BWChoYXJxX291dF9sZW5ndGgsIGwpLA0KPiBuY2JfcCk7 DQo+ID4gKwkJaGFycV9vdXRfbGVuZ3RoID0gUlRFX0FMSUdOX0NFSUwoaGFycV9vdXRfbGVuZ3Ro LCA2NCk7DQo+ID4gKwkJZmN3LT5oY291dF9zaXplMCA9IGhhcnFfb3V0X2xlbmd0aDsNCj4gPiAr CQlmY3ctPmhjb3V0X3NpemUxID0gMDsNCj4gPiArCQlmY3ctPmhjb3V0X29mZnNldCA9IDA7DQo+ ID4gKwkJaGFycV9sYXlvdXRbaGFycV9pbmRleF0ub2Zmc2V0ID0gZmN3LT5oY291dF9vZmZzZXQ7 DQo+ID4gKwkJaGFycV9sYXlvdXRbaGFycV9pbmRleF0uc2l6ZTAgPSBmY3ctPmhjb3V0X3NpemUw Ow0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlmY3ctPmhjb3V0X3NpemUwID0gMDsNCj4gPiArCQlm Y3ctPmhjb3V0X3NpemUxID0gMDsNCj4gPiArCQlmY3ctPmhjb3V0X29mZnNldCA9IDA7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJZmN3LT50Yl9jcmNfc2VsZWN0ID0gMDsNCj4gPiArCWlmIChjaGVj a19iaXQob3AtPmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19DUkNfVFlQRV8y NEFfQ0hFQ0spKQ0KPiA+ICsJCWZjdy0+dGJfY3JjX3NlbGVjdCA9IDI7DQo+ID4gKwlpZiAoY2hl Y2tfYml0KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gUlRFX0JCREVWX0xEUENfQ1JDX1RZUEVf MTZfQ0hFQ0spKQ0KPiA+ICsJCWZjdy0+dGJfY3JjX3NlbGVjdCA9IDE7DQo+ID4gK30NCj4gPiAr DQo+ID4gICBzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiAgIHZyYl9kbWFfZGVzY19sZF91cGRhdGUo c3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLA0KPiA+ICAgCQlzdHJ1Y3QgYWNjX2RtYV9yZXFf ZGVzYyAqZGVzYywNCj4gPiBAQCAtMTgxNyw2ICsyMDQwLDEzOSBAQCB2cmJfZG1hX2Rlc2NfbGRf dXBkYXRlKHN0cnVjdA0KPiBydGVfYmJkZXZfZGVjX29wICpvcCwNCj4gPiAgIAlkZXNjLT5vcF9h ZGRyID0gb3A7DQo+ID4gICB9DQo+ID4NCj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArdnJi Ml9kbWFfZGVzY19sZF9maWxsKHN0cnVjdCBydGVfYmJkZXZfZGVjX29wICpvcCwNCj4gPiArCQlz dHJ1Y3QgYWNjX2RtYV9yZXFfZGVzYyAqZGVzYywNCj4gPiArCQlzdHJ1Y3QgcnRlX21idWYgKipp bnB1dCwgc3RydWN0IHJ0ZV9tYnVmICpoX291dHB1dCwNCj4gPiArCQl1aW50MzJfdCAqaW5fb2Zm c2V0LCB1aW50MzJfdCAqaF9vdXRfb2Zmc2V0LA0KPiA+ICsJCXVpbnQzMl90ICpoX291dF9sZW5n dGgsIHVpbnQzMl90ICptYnVmX3RvdGFsX2xlZnQsDQo+ID4gKwkJdWludDMyX3QgKnNlZ190b3Rh bF9sZWZ0LCBzdHJ1Y3QgYWNjX2Zjd19sZCAqZmN3KQ0KPiA+ICt7DQo+IFNhbWUgaGVyZS4NCj4g DQo+IEkgY29tcGFyZWQgd2l0aCB2cmIxX2RtYV9kZXNjX2xkX2ZpbGwoKSwgYW5kIEkgZG9uJ3Qg c2VlIHdoeSB3ZSBuZWVkIHR3bw0KPiBmdW5jdGlvbnMuDQo+IA0KPiBUaGUgb25seSBkaWZmZXJl bmNlcyBhcmUgZWl0aGVyIGJhY2tlZCBieSBjYXBhYmlsaXR5IGNoZWNrcywgYW5kIHZyYjENCj4g YWxyZWFkeSBzZXRzIGZjdy0+aGNpbl9kZWNvbXBfbW9kZSwgc28gdGhpcyBjb2RlIHNob3VsZCB3 b3JrIGFzLWlzIG9uDQo+IHZyYjEgaWYgSSdtIG5vdCBtaXN0YWtlbi4NCg0KWWVzIGZhaXIgZW5v dWdoLCBkb2luZyB0aGlzIGluIHYzLiANCg0KPiANCj4gPiArCXN0cnVjdCBydGVfYmJkZXZfb3Bf bGRwY19kZWMgKmRlYyA9ICZvcC0+bGRwY19kZWM7DQo+ID4gKwlpbnQgbmV4dF90cmlwbGV0ID0g MTsgLyogRkNXIGFscmVhZHkgZG9uZS4gKi8NCj4gPiArCXVpbnQzMl90IGlucHV0X2xlbmd0aDsN Cj4gPiArCXVpbnQxNl90IG91dHB1dF9sZW5ndGgsIGNyYzI0X292ZXJsYXAgPSAwOw0KPiA+ICsJ dWludDE2X3Qgc3lzX2NvbHMsIEssIGhfcF9zaXplLCBoX25wX3NpemU7DQo+ID4gKw0KPiA+ICsJ YWNjX2hlYWRlcl9pbml0KGRlc2MpOw0KPiA+ICsNCj4gPiArCWlmIChjaGVja19iaXQob3AtPmxk cGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19DUkNfVFlQRV8yNEJfRFJPUCkpDQo+ ID4gKwkJY3JjMjRfb3ZlcmxhcCA9IDI0Ow0KPiA+ICsNCj4gPiArCS8qIENvbXB1dGUgc29tZSBM RFBDIEJHIGxlbmd0aHMuICovDQo+ID4gKwlpbnB1dF9sZW5ndGggPSBmY3ctPnJtX2U7DQo+ID4g KwlpZiAoY2hlY2tfYml0KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gUlRFX0JCREVWX0xEUENf TExSX0NPTVBSRVNTSU9OKSkNCj4gPiArCQlpbnB1dF9sZW5ndGggPSAoaW5wdXRfbGVuZ3RoICog MyArIDMpIC8gNDsNCj4gPiArCXN5c19jb2xzID0gKGRlYy0+YmFzZWdyYXBoID09IDEpID8gMjIg OiAxMDsNCj4gPiArCUsgPSBzeXNfY29scyAqIGRlYy0+el9jOw0KPiA+ICsJb3V0cHV0X2xlbmd0 aCA9IEsgLSBkZWMtPm5fZmlsbGVyIC0gY3JjMjRfb3ZlcmxhcDsNCj4gPiArDQo+ID4gKwlpZiAo dW5saWtlbHkoKCptYnVmX3RvdGFsX2xlZnQgPT0gMCkgfHwgKCptYnVmX3RvdGFsX2xlZnQgPA0K PiBpbnB1dF9sZW5ndGgpKSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJ Ik1pc21hdGNoIGJldHdlZW4gbWJ1ZiBsZW5ndGggYW5kIGluY2x1ZGVkDQo+IENCIHNpemVzOiBt YnVmIGxlbiAldSwgY2IgbGVuICV1IiwNCj4gPiArCQkJCSptYnVmX3RvdGFsX2xlZnQsIGlucHV0 X2xlbmd0aCk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW5leHRf dHJpcGxldCA9IGFjY19kbWFfZmlsbF9ibGtfdHlwZV9pbihkZXNjLCBpbnB1dCwNCj4gPiArCQkJ aW5fb2Zmc2V0LCBpbnB1dF9sZW5ndGgsDQo+ID4gKwkJCXNlZ190b3RhbF9sZWZ0LCBuZXh0X3Ry aXBsZXQsDQo+ID4gKwkJCWNoZWNrX2JpdChvcC0+bGRwY19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJ CVJURV9CQkRFVl9MRFBDX0RFQ19TQ0FUVEVSX0dBVEhFUikpOw0KPiA+ICsNCj4gPiArCWlmICh1 bmxpa2VseShuZXh0X3RyaXBsZXQgPCAwKSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0K PiA+ICsJCQkJIk1pc21hdGNoIGJldHdlZW4gZGF0YSB0byBwcm9jZXNzIGFuZCBtYnVmDQo+IGRh dGEgbGVuZ3RoIGluIGJiZGV2X29wOiAlcCIsDQo+ID4gKwkJCQlvcCk7DQo+ID4gKwkJcmV0dXJu IC0xOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChjaGVja19iaXQob3AtPmxkcGNfZGVjLm9w X2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19IUV9DT01CSU5FX0lOX0VOQUJMRSkpIHsNCj4gPiAr CQlpZiAob3AtPmxkcGNfZGVjLmhhcnFfY29tYmluZWRfaW5wdXQuZGF0YSA9PSAwKSB7DQo+ID4g KwkJCXJ0ZV9iYmRldl9sb2coRVJSLCAiSEFSUSBpbnB1dCBpcyBub3QgZGVmaW5lZCIpOw0KPiA+ ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWhfcF9zaXplID0gZmN3LT5oY2luX3Np emUwICsgZmN3LT5oY2luX3NpemUxOw0KPiA+ICsJCWlmIChmY3ctPmhjaW5fZGVjb21wX21vZGUg PT0gMSkNCj4gPiArCQkJaF9wX3NpemUgPSAoaF9wX3NpemUgKiAzICsgMykgLyA0Ow0KPiA+ICsJ CWVsc2UgaWYgKGZjdy0+aGNpbl9kZWNvbXBfbW9kZSA9PSA0KQ0KPiA+ICsJCQloX3Bfc2l6ZSA9 IGhfcF9zaXplIC8gMjsNCj4gPiArCQlpZiAob3AtPmxkcGNfZGVjLmhhcnFfY29tYmluZWRfaW5w dXQuZGF0YSA9PSAwKSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLCAiSEFSUSBpbnB1dCBp cyBub3QgZGVmaW5lZCIpOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWFj Y19kbWFfZmlsbF9ibGtfdHlwZSgNCj4gPiArCQkJCWRlc2MsDQo+ID4gKwkJCQlvcC0+bGRwY19k ZWMuaGFycV9jb21iaW5lZF9pbnB1dC5kYXRhLA0KPiA+ICsJCQkJb3AtPmxkcGNfZGVjLmhhcnFf Y29tYmluZWRfaW5wdXQub2Zmc2V0LA0KPiA+ICsJCQkJaF9wX3NpemUsDQo+ID4gKwkJCQluZXh0 X3RyaXBsZXQsDQo+ID4gKwkJCQlBQ0NfRE1BX0JMS0lEX0lOX0hBUlEpOw0KPiA+ICsJCW5leHRf dHJpcGxldCsrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWRlc2MtPmRhdGFfcHRyc1tuZXh0X3Ry aXBsZXQgLSAxXS5sYXN0ID0gMTsNCj4gPiArCWRlc2MtPm0yZGxlbiA9IG5leHRfdHJpcGxldDsN Cj4gPiArCSptYnVmX3RvdGFsX2xlZnQgLT0gaW5wdXRfbGVuZ3RoOw0KPiA+ICsNCj4gPiArCW5l eHRfdHJpcGxldCA9IGFjY19kbWFfZmlsbF9ibGtfdHlwZShkZXNjLCBoX291dHB1dCwNCj4gPiAr CQkJKmhfb3V0X29mZnNldCwgb3V0cHV0X2xlbmd0aCA+PiAzLCBuZXh0X3RyaXBsZXQsDQo+ID4g KwkJCUFDQ19ETUFfQkxLSURfT1VUX0hBUkQpOw0KPiA+ICsNCj4gPiArCWlmIChjaGVja19iaXQo b3AtPmxkcGNfZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfTERQQ19TT0ZUX09VVF9FTkFCTEUp KSB7DQo+ID4gKwkJaWYgKG9wLT5sZHBjX2RlYy5zb2Z0X291dHB1dC5kYXRhID09IDApIHsNCj4g PiArCQkJcnRlX2JiZGV2X2xvZyhFUlIsICJTb2Z0IG91dHB1dCBpcyBub3QgZGVmaW5lZCIpOw0K PiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWRlYy0+c29mdF9vdXRwdXQubGVu Z3RoID0gZmN3LT5ybV9lOw0KPiA+ICsJCWFjY19kbWFfZmlsbF9ibGtfdHlwZShkZXNjLCBkZWMt PnNvZnRfb3V0cHV0LmRhdGEsIGRlYy0NCj4gPnNvZnRfb3V0cHV0Lm9mZnNldCwNCj4gPiArCQkJ CWZjdy0+cm1fZSwgbmV4dF90cmlwbGV0LA0KPiBBQ0NfRE1BX0JMS0lEX09VVF9TT0ZUKTsNCj4g PiArCQluZXh0X3RyaXBsZXQrKzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoY2hlY2tfYml0 KG9wLT5sZHBjX2RlYy5vcF9mbGFncywNCj4gPiArDQo+IAlSVEVfQkJERVZfTERQQ19IUV9DT01C SU5FX09VVF9FTkFCTEUpKSB7DQo+ID4gKwkJaWYgKG9wLT5sZHBjX2RlYy5oYXJxX2NvbWJpbmVk X291dHB1dC5kYXRhID09IDApIHsNCj4gPiArCQkJcnRlX2JiZGV2X2xvZyhFUlIsICJIQVJRIG91 dHB1dCBpcyBub3QgZGVmaW5lZCIpOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ ICsNCj4gPiArCQkvKiBQcnVuZWQgc2l6ZSBvZiB0aGUgSEFSUSAqLw0KPiA+ICsJCWhfcF9zaXpl ID0gZmN3LT5oY291dF9zaXplMCArIGZjdy0+aGNvdXRfc2l6ZTE7DQo+ID4gKwkJLyogTm9uLVBy dW5lZCBzaXplIG9mIHRoZSBIQVJRICovDQo+ID4gKwkJaF9ucF9zaXplID0gZmN3LT5oY291dF9v ZmZzZXQgPiAwID8NCj4gPiArCQkJCWZjdy0+aGNvdXRfb2Zmc2V0ICsgZmN3LT5oY291dF9zaXpl MSA6DQo+ID4gKwkJCQloX3Bfc2l6ZTsNCj4gPiArCQlpZiAoZmN3LT5oY2luX2RlY29tcF9tb2Rl ID09IDEpIHsNCj4gPiArCQkJaF9ucF9zaXplID0gKGhfbnBfc2l6ZSAqIDMgKyAzKSAvIDQ7DQo+ ID4gKwkJCWhfcF9zaXplID0gKGhfcF9zaXplICogMyArIDMpIC8gNDsNCj4gPiArCQl9IGVsc2Ug aWYgKGZjdy0+aGNpbl9kZWNvbXBfbW9kZSA9PSA0KSB7DQo+ID4gKwkJCWhfbnBfc2l6ZSA9IGhf bnBfc2l6ZSAvIDI7DQo+ID4gKwkJCWhfcF9zaXplID0gaF9wX3NpemUgLyAyOw0KPiA+ICsJCX0N Cj4gPiArCQlkZWMtPmhhcnFfY29tYmluZWRfb3V0cHV0Lmxlbmd0aCA9IGhfbnBfc2l6ZTsNCj4g PiArCQlhY2NfZG1hX2ZpbGxfYmxrX3R5cGUoDQo+ID4gKwkJCQlkZXNjLA0KPiA+ICsJCQkJZGVj LT5oYXJxX2NvbWJpbmVkX291dHB1dC5kYXRhLA0KPiA+ICsJCQkJZGVjLT5oYXJxX2NvbWJpbmVk X291dHB1dC5vZmZzZXQsDQo+ID4gKwkJCQloX3Bfc2l6ZSwNCj4gPiArCQkJCW5leHRfdHJpcGxl dCwNCj4gPiArCQkJCUFDQ19ETUFfQkxLSURfT1VUX0hBUlEpOw0KPiA+ICsNCj4gPiArCQluZXh0 X3RyaXBsZXQrKzsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkqaF9vdXRfbGVuZ3RoID0gb3V0cHV0 X2xlbmd0aCA+PiAzOw0KPiA+ICsJZGVjLT5oYXJkX291dHB1dC5sZW5ndGggKz0gKmhfb3V0X2xl bmd0aDsNCj4gPiArCSpoX291dF9vZmZzZXQgKz0gKmhfb3V0X2xlbmd0aDsNCj4gPiArCWRlc2Mt PmRhdGFfcHRyc1tuZXh0X3RyaXBsZXQgLSAxXS5sYXN0ID0gMTsNCj4gPiArCWRlc2MtPmQybWxl biA9IG5leHRfdHJpcGxldCAtIGRlc2MtPm0yZGxlbjsNCj4gPiArDQo+ID4gKwlkZXNjLT5vcF9h ZGRyID0gb3A7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gICAv KiBFbnF1ZXVlIG9uZSBlbmNvZGUgb3BlcmF0aW9ucyBmb3IgZGV2aWNlIGluIENCIG1vZGUuICov DQo+ID4gICBzdGF0aWMgaW5saW5lIGludA0KPiA+ICAgZW5xdWV1ZV9lbmNfb25lX29wX2NiKHN0 cnVjdCBhY2NfcXVldWUgKnEsIHN0cnVjdCBydGVfYmJkZXZfZW5jX29wDQo+ICpvcCwNCj4gPiBA QCAtMTg3Nyw2ICsyMjMzLDcgQEAgZW5xdWV1ZV9sZHBjX2VuY19uX29wX2NiKHN0cnVjdCBhY2Nf cXVldWUgKnEsDQo+IHN0cnVjdCBydGVfYmJkZXZfZW5jX29wICoqb3BzLA0KPiA+ICAgCS8qKiBU aGlzIGNvdWxkIGJlIGRvbmUgYXQgcG9sbGluZy4gKi8NCj4gPiAgIAlhY2NfaGVhZGVyX2luaXQo JmRlc2MtPnJlcSk7DQo+ID4gICAJZGVzYy0+cmVxLm51bUNCcyA9IG51bTsNCj4gPiArCWRlc2Mt PnJlcS5kbHRiID0gMDsNCj4gPg0KPiA+ICAgCWluX2xlbmd0aF9pbl9ieXRlcyA9IG9wc1swXS0+ bGRwY19lbmMuaW5wdXQuZGF0YS0+ZGF0YV9sZW47DQo+ID4gICAJb3V0X2xlbmd0aCA9IChlbmMt PmNiX3BhcmFtcy5lICsgNykgPj4gMzsNCj4gPiBAQCAtMjEwMiw2ICsyNDU5LDEwNSBAQCB2cmIx X2VucXVldWVfbGRwY19lbmNfb25lX29wX3RiKHN0cnVjdA0KPiBhY2NfcXVldWUgKnEsIHN0cnVj dCBydGVfYmJkZXZfZW5jX29wICpvcA0KPiA+ICAgCXJldHVybiByZXR1cm5fZGVzY3M7DQo+ID4g ICB9DQo+ID4NCj4gPiArLyogRmlsbCBpbiBhIGZyYW1lIGNvbnRyb2wgd29yZCBmb3IgTERQQyBl bmNvZGluZy4gKi8NCj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK3ZyYjJfZmN3X2xldGJf ZmlsbChjb25zdCBzdHJ1Y3QgcnRlX2JiZGV2X2VuY19vcCAqb3AsIHN0cnVjdCBhY2NfZmN3X2xl DQo+ICpmY3cpDQo+ID4gK3sNCj4gPiArCWZjdy0+cW0gPSBvcC0+bGRwY19lbmMucV9tOw0KPiA+ ICsJZmN3LT5uZmlsbGVyID0gb3AtPmxkcGNfZW5jLm5fZmlsbGVyOw0KPiA+ICsJZmN3LT5CRyA9 IChvcC0+bGRwY19lbmMuYmFzZWdyYXBoIC0gMSk7DQo+ID4gKwlmY3ctPlpjID0gb3AtPmxkcGNf ZW5jLnpfYzsNCj4gPiArCWZjdy0+bmNiID0gb3AtPmxkcGNfZW5jLm5fY2I7DQo+ID4gKwlmY3ct PmswID0gZ2V0X2swKGZjdy0+bmNiLCBmY3ctPlpjLCBvcC0+bGRwY19lbmMuYmFzZWdyYXBoLA0K PiA+ICsJCQlvcC0+bGRwY19lbmMucnZfaW5kZXgpOw0KPiA+ICsJZmN3LT5ybV9lID0gb3AtPmxk cGNfZW5jLnRiX3BhcmFtcy5lYTsNCj4gPiArCWZjdy0+cm1fZV9iID0gb3AtPmxkcGNfZW5jLnRi X3BhcmFtcy5lYjsNCj4gPiArCWZjdy0+Y3JjX3NlbGVjdCA9IGNoZWNrX2JpdChvcC0+bGRwY19l bmMub3BfZmxhZ3MsDQo+ID4gKwkJCVJURV9CQkRFVl9MRFBDX0NSQ18yNEJfQVRUQUNIKTsNCj4g PiArCWZjdy0+YnlwYXNzX2ludGx2ID0gMDsNCj4gPiArCWlmIChvcC0+bGRwY19lbmMudGJfcGFy YW1zLmMgPiAxKSB7DQo+ID4gKwkJZmN3LT5tY2JfY291bnQgPSAwOw0KPiA+ICsJCWZjdy0+QyA9 IG9wLT5sZHBjX2VuYy50Yl9wYXJhbXMuYzsNCj4gPiArCQlmY3ctPkNhYiA9IG9wLT5sZHBjX2Vu Yy50Yl9wYXJhbXMuY2FiOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlmY3ctPm1jYl9jb3VudCA9 IDE7DQo+ID4gKwkJZmN3LT5DID0gMDsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyog RW5xdWV1ZSBvbmUgZW5jb2RlIG9wZXJhdGlvbnMgZm9yIGRldmljZSBpbiBUQiBtb2RlLg0KPiA+ ICsgKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVzY3MgdXNlZC4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBpbmxpbmUgaW50DQo+ID4gK3ZyYjJfZW5xdWV1ZV9sZHBjX2VuY19vbmVfb3BfdGIoc3Ry dWN0IGFjY19xdWV1ZSAqcSwgc3RydWN0DQo+IHJ0ZV9iYmRldl9lbmNfb3AgKm9wLA0KPiA+ICsJ CXVpbnQxNl90IGVucV9kZXNjcykNCj4gPiArew0KPiA+ICsJdW5pb24gYWNjX2RtYV9kZXNjICpk ZXNjID0gTlVMTDsNCj4gPiArCXVpbnQzMl90IGluX29mZnNldCwgb3V0X29mZnNldCwgb3V0X2xl bmd0aCwgc2VnX3RvdGFsX2xlZnQ7DQo+ID4gKwlzdHJ1Y3QgcnRlX21idWYgKmlucHV0LCAqb3V0 cHV0X2hlYWQsICpvdXRwdXQ7DQo+ID4gKw0KPiA+ICsJdWludDE2X3QgZGVzY19pZHggPSAoKHEt PnN3X3JpbmdfaGVhZCArIGVucV9kZXNjcykgJiBxLQ0KPiA+c3dfcmluZ193cmFwX21hc2spOw0K PiA+ICsJZGVzYyA9IHEtPnJpbmdfYWRkciArIGRlc2NfaWR4Ow0KPiANCj4gVXNlIGFjY19kZXNj KCk/DQoNCnRoYW5rcw0KDQo+IA0KPiA+ICsJdnJiMl9mY3dfbGV0Yl9maWxsKG9wLCAmZGVzYy0+ cmVxLmZjd19sZSk7DQo+ID4gKwlzdHJ1Y3QgcnRlX2JiZGV2X29wX2xkcGNfZW5jICplbmMgPSAm b3AtPmxkcGNfZW5jOw0KPiA+ICsJaW50IG5leHRfdHJpcGxldCA9IDE7IC8qIEZDVyBhbHJlYWR5 IGRvbmUgKi8NCj4gPiArCXVpbnQzMl90IGluX2xlbmd0aF9pbl9ieXRlczsNCj4gPiArCXVpbnQx Nl90IEssIGluX2xlbmd0aF9pbl9iaXRzOw0KPiA+ICsNCj4gPiArCWlucHV0ID0gZW5jLT5pbnB1 dC5kYXRhOw0KPiA+ICsJb3V0cHV0X2hlYWQgPSBvdXRwdXQgPSBlbmMtPm91dHB1dC5kYXRhOw0K PiA+ICsJaW5fb2Zmc2V0ID0gZW5jLT5pbnB1dC5vZmZzZXQ7DQo+ID4gKwlvdXRfb2Zmc2V0ID0g ZW5jLT5vdXRwdXQub2Zmc2V0Ow0KPiA+ICsJc2VnX3RvdGFsX2xlZnQgPSBydGVfcGt0bWJ1Zl9k YXRhX2xlbihlbmMtPmlucHV0LmRhdGEpIC0gaW5fb2Zmc2V0Ow0KPiA+ICsNCj4gPiArCWFjY19o ZWFkZXJfaW5pdCgmZGVzYy0+cmVxKTsNCj4gPiArCUsgPSAoZW5jLT5iYXNlZ3JhcGggPT0gMSA/ IDIyIDogMTApICogZW5jLT56X2M7DQo+ID4gKwlpbl9sZW5ndGhfaW5fYml0cyA9IEsgLSBlbmMt Pm5fZmlsbGVyOw0KPiA+ICsJaWYgKChlbmMtPm9wX2ZsYWdzICYgUlRFX0JCREVWX0xEUENfQ1JD XzI0QV9BVFRBQ0gpIHx8DQo+ID4gKwkJCShlbmMtPm9wX2ZsYWdzICYNCj4gUlRFX0JCREVWX0xE UENfQ1JDXzI0Ql9BVFRBQ0gpKQ0KPiA+ICsJCWluX2xlbmd0aF9pbl9iaXRzIC09IDI0Ow0KPiA+ ICsJaW5fbGVuZ3RoX2luX2J5dGVzID0gKGluX2xlbmd0aF9pbl9iaXRzID4+IDMpICogZW5jLT50 Yl9wYXJhbXMuYzsNCj4gPiArDQo+ID4gKwluZXh0X3RyaXBsZXQgPSBhY2NfZG1hX2ZpbGxfYmxr X3R5cGVfaW4oJmRlc2MtPnJlcSwgJmlucHV0LA0KPiAmaW5fb2Zmc2V0LA0KPiA+ICsJCQlpbl9s ZW5ndGhfaW5fYnl0ZXMsICZzZWdfdG90YWxfbGVmdCwgbmV4dF90cmlwbGV0LA0KPiA+ICsJCQlj aGVja19iaXQoZW5jLT5vcF9mbGFncywNCj4gUlRFX0JCREVWX0xEUENfRU5DX1NDQVRURVJfR0FU SEVSKSk7DQo+ID4gKwlpZiAodW5saWtlbHkobmV4dF90cmlwbGV0IDwgMCkpIHsNCj4gPiArCQly dGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJNaXNtYXRjaCBiZXR3ZWVuIGRhdGEgdG8gcHJv Y2VzcyBhbmQgbWJ1Zg0KPiBkYXRhIGxlbmd0aCBpbiBiYmRldl9vcDogJXAiLA0KPiA+ICsJCQkJ b3ApOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0 cnNbbmV4dF90cmlwbGV0IC0gMV0ubGFzdCA9IDE7DQo+ID4gKwlkZXNjLT5yZXEubTJkbGVuID0g bmV4dF90cmlwbGV0Ow0KPiA+ICsNCj4gPiArCS8qIFNldCBvdXRwdXQgbGVuZ3RoICovDQo+ID4g KwkvKiBJbnRlZ2VyIHJvdW5kIHVwIGRpdmlzaW9uIGJ5IDggKi8NCj4gPiArCW91dF9sZW5ndGgg PSAoZW5jLT50Yl9wYXJhbXMuZWEgKiBlbmMtPnRiX3BhcmFtcy5jYWIgKw0KPiA+ICsJCQllbmMt PnRiX3BhcmFtcy5lYiAqIChlbmMtPnRiX3BhcmFtcy5jIC0gZW5jLQ0KPiA+dGJfcGFyYW1zLmNh YikgICsgNykgPj4gMzsNCj4gPiArDQo+ID4gKwluZXh0X3RyaXBsZXQgPSBhY2NfZG1hX2ZpbGxf YmxrX3R5cGUoJmRlc2MtPnJlcSwgb3V0cHV0LCBvdXRfb2Zmc2V0LA0KPiA+ICsJCQlvdXRfbGVu Z3RoLCBuZXh0X3RyaXBsZXQsIEFDQ19ETUFfQkxLSURfT1VUX0VOQyk7DQo+ID4gKwllbmMtPm91 dHB1dC5sZW5ndGggPSBvdXRfbGVuZ3RoOw0KPiA+ICsJb3V0X29mZnNldCArPSBvdXRfbGVuZ3Ro Ow0KPiA+ICsJZGVzYy0+cmVxLmRhdGFfcHRyc1tuZXh0X3RyaXBsZXQgLSAxXS5sYXN0ID0gMTsN Cj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbbmV4dF90cmlwbGV0IC0gMV0uZG1hX2V4dCA9IDA7 DQo+ID4gKwlkZXNjLT5yZXEuZDJtbGVuID0gbmV4dF90cmlwbGV0IC0gZGVzYy0+cmVxLm0yZGxl bjsNCj4gPiArCWRlc2MtPnJlcS5udW1DQnMgPSBlbmMtPnRiX3BhcmFtcy5jOw0KPiA+ICsJaWYg KGRlc2MtPnJlcS5udW1DQnMgPiAxKQ0KPiA+ICsJCWRlc2MtPnJlcS5kbHRiID0gMTsNCj4gPiAr CWRlc2MtPnJlcS5vcF9hZGRyID0gb3A7DQo+ID4gKw0KPiA+ICsJaWYgKG91dF9sZW5ndGggPCBB Q0NfTUFYX0VfTUJVRikNCj4gPiArCQltYnVmX2FwcGVuZChvdXRwdXRfaGVhZCwgb3V0cHV0LCBv dXRfbGVuZ3RoKTsNCj4gPiArDQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0JCREVWX0RFQlVHDQo+ ID4gKwlydGVfbWVtZHVtcChzdGRlcnIsICJGQ1ciLCAmZGVzYy0+cmVxLmZjd19sZSwgc2l6ZW9m KGRlc2MtDQo+ID5yZXEuZmN3X2xlKSk7DQo+ID4gKwlydGVfbWVtZHVtcChzdGRlcnIsICJSZXEg RGVzYy4iLCBkZXNjLCBzaXplb2YoKmRlc2MpKTsNCj4gPiArI2VuZGlmDQo+ID4gKwkvKiBPbmUg Q0IgKG9uZSBvcCkgd2FzIHN1Y2Nlc3NmdWxseSBwcmVwYXJlZCB0byBlbnF1ZXVlICovDQo+ID4g KwlyZXR1cm4gMTsNCj4gDQo+IFRoaXMgZnVuY3Rpb24gaXMgcXVpdGUgZGlmZmVyZW50IGZyb20g dGhlIFZSQjEgdmFyaWFudC4NCj4gSXMgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY29tcGxldGVs eSBkaWZmZXJlbnQsIG9yIGp1c3QgYSBkaWZmZXJlbnQNCj4gaW1wbGVtZW50YXRpb24/DQoNClRo ZSB1bmRlcmx5aW5nIEhXIGlzIGRpZmZlcmVudCBpbiB0aGlzIG1vZGUgb2Ygb3BlcmF0aW9uLCBu b3RhYmx5IGFzIGl0DQpzdXBwb3J0cyBSVEVfQkJERVZfTERQQ19FTkNfQ09OQ0FURU5BVElPTiBo ZW5jZSBtb3JlIG9mIHRydWUgVEINCmltcGxlbWVudGF0aW9uLiANCktlcHQgc2VwYXJhdGUgb24g cHVycG9zZS4gDQoNCj4gDQo+ID4gK30NCj4gPiArDQo+ID4gICAvKiogRW5xdWV1ZSBvbmUgZGVj b2RlIG9wZXJhdGlvbnMgZm9yIGRldmljZSBpbiBDQiBtb2RlLiAqLw0KPiA+ICAgc3RhdGljIGlu bGluZSBpbnQNCj4gPiAgIGVucXVldWVfZGVjX29uZV9vcF9jYihzdHJ1Y3QgYWNjX3F1ZXVlICpx LCBzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcA0KPiAqb3AsDQo+ID4gQEAgLTIyMTUsMTAgKzI2NzEs MTYgQEAgdnJiX2VucXVldWVfbGRwY19kZWNfb25lX29wX2NiKHN0cnVjdA0KPiBhY2NfcXVldWUg KnEsIHN0cnVjdCBydGVfYmJkZXZfZGVjX29wICpvcCwNCj4gPiAgIAkJZWxzZQ0KPiA+ICAgCQkJ c2VnX3RvdGFsX2xlZnQgPSBmY3ctPnJtX2U7DQo+ID4NCj4gPiAtCQlyZXQgPSB2cmIxX2RtYV9k ZXNjX2xkX2ZpbGwob3AsICZkZXNjLT5yZXEsICZpbnB1dCwgaF9vdXRwdXQsDQo+ID4gLQkJCQkm aW5fb2Zmc2V0LCAmaF9vdXRfb2Zmc2V0LA0KPiA+IC0JCQkJJmhfb3V0X2xlbmd0aCwgJm1idWZf dG90YWxfbGVmdCwNCj4gPiAtCQkJCSZzZWdfdG90YWxfbGVmdCwgZmN3KTsNCj4gPiArCQlpZiAo cS0+ZC0+ZGV2aWNlX3ZhcmlhbnQgPT0gVlJCMV9WQVJJQU5UKQ0KPiA+ICsJCQlyZXQgPSB2cmIx X2RtYV9kZXNjX2xkX2ZpbGwob3AsICZkZXNjLT5yZXEsICZpbnB1dCwNCj4gaF9vdXRwdXQsDQo+ ID4gKwkJCQkJJmluX29mZnNldCwgJmhfb3V0X29mZnNldCwNCj4gPiArCQkJCQkmaF9vdXRfbGVu Z3RoLCAmbWJ1Zl90b3RhbF9sZWZ0LA0KPiA+ICsJCQkJCSZzZWdfdG90YWxfbGVmdCwgZmN3KTsN Cj4gPiArCQllbHNlDQo+ID4gKwkJCXJldCA9IHZyYjJfZG1hX2Rlc2NfbGRfZmlsbChvcCwgJmRl c2MtPnJlcSwgJmlucHV0LA0KPiBoX291dHB1dCwNCj4gPiArCQkJCQkmaW5fb2Zmc2V0LCAmaF9v dXRfb2Zmc2V0LA0KPiA+ICsJCQkJCSZoX291dF9sZW5ndGgsICZtYnVmX3RvdGFsX2xlZnQsDQo+ ID4gKwkJCQkJJnNlZ190b3RhbF9sZWZ0LCBmY3cpOw0KPiA+ICAgCQlpZiAodW5saWtlbHkocmV0 IDwgMCkpDQo+ID4gICAJCQlyZXR1cm4gcmV0Ow0KPiA+ICAgCX0NCj4gPiBAQCAtMjMwOCwxMSAr Mjc3MCwxOCBAQCB2cmJfZW5xdWV1ZV9sZHBjX2RlY19vbmVfb3BfdGIoc3RydWN0DQo+IGFjY19x dWV1ZSAqcSwgc3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLA0KPiA+ICAgCQlydGVfbWVtY3B5 KCZkZXNjLT5yZXEuZmN3X2xkLCAmZGVzY19maXJzdC0+cmVxLmZjd19sZCwNCj4gQUNDX0ZDV19M RF9CTEVOKTsNCj4gPiAgIAkJZGVzYy0+cmVxLmZjd19sZC50Yl90cmFpbGVyX3NpemUgPSAoYyAt IHIgLSAxKSAqIHRyYWlsX2xlbjsNCj4gPg0KPiA+IC0JCXJldCA9IHZyYjFfZG1hX2Rlc2NfbGRf ZmlsbChvcCwgJmRlc2MtPnJlcSwgJmlucHV0LA0KPiA+IC0JCQkJaF9vdXRwdXQsICZpbl9vZmZz ZXQsICZoX291dF9vZmZzZXQsDQo+ID4gLQkJCQkmaF9vdXRfbGVuZ3RoLA0KPiA+IC0JCQkJJm1i dWZfdG90YWxfbGVmdCwgJnNlZ190b3RhbF9sZWZ0LA0KPiA+IC0JCQkJJmRlc2MtPnJlcS5mY3df bGQpOw0KPiA+ICsJCWlmIChxLT5kLT5kZXZpY2VfdmFyaWFudCA9PSBWUkIxX1ZBUklBTlQpDQo+ ID4gKwkJCXJldCA9IHZyYjFfZG1hX2Rlc2NfbGRfZmlsbChvcCwgJmRlc2MtPnJlcSwgJmlucHV0 LA0KPiA+ICsJCQkJCWhfb3V0cHV0LCAmaW5fb2Zmc2V0LCAmaF9vdXRfb2Zmc2V0LA0KPiA+ICsJ CQkJCSZoX291dF9sZW5ndGgsDQo+ID4gKwkJCQkJJm1idWZfdG90YWxfbGVmdCwgJnNlZ190b3Rh bF9sZWZ0LA0KPiA+ICsJCQkJCSZkZXNjLT5yZXEuZmN3X2xkKTsNCj4gPiArCQllbHNlDQo+ID4g KwkJCXJldCA9IHZyYjJfZG1hX2Rlc2NfbGRfZmlsbChvcCwgJmRlc2MtPnJlcSwgJmlucHV0LA0K PiA+ICsJCQkJCWhfb3V0cHV0LCAmaW5fb2Zmc2V0LCAmaF9vdXRfb2Zmc2V0LA0KPiA+ICsJCQkJ CSZoX291dF9sZW5ndGgsDQo+ID4gKwkJCQkJJm1idWZfdG90YWxfbGVmdCwgJnNlZ190b3RhbF9s ZWZ0LA0KPiA+ICsJCQkJCSZkZXNjLT5yZXEuZmN3X2xkKTsNCj4gPg0KPiA+ICAgCQlpZiAodW5s aWtlbHkocmV0IDwgMCkpDQo+ID4gICAJCQlyZXR1cm4gcmV0Ow0KPiA+IEBAIC0yNTc2LDE0ICsz MDQ1LDIyIEBAIHZyYl9lbnF1ZXVlX2xkcGNfZW5jX3RiKHN0cnVjdA0KPiBydGVfYmJkZXZfcXVl dWVfZGF0YSAqcV9kYXRhLA0KPiA+ICAgCWludCBkZXNjc191c2VkOw0KPiA+DQo+ID4gICAJZm9y IChpID0gMDsgaSA8IG51bTsgKytpKSB7DQo+ID4gLQkJY2JzX2luX3RiID0gZ2V0X251bV9jYnNf aW5fdGJfbGRwY19lbmMoJm9wc1tpXS0+bGRwY19lbmMpOw0KPiA+IC0JCS8qIENoZWNrIGlmIHRo ZXJlIGFyZSBhdmFpbGFibGUgc3BhY2UgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gKi8NCj4gPiAt CQlpZiAodW5saWtlbHkoKGF2YWlsIC0gY2JzX2luX3RiIDwgMCkgfHwgKGNic19pbl90YiA9PSAw KSkpIHsNCj4gPiAtCQkJYWNjX2VucXVldWVfcmluZ19mdWxsKHFfZGF0YSk7DQo+ID4gLQkJCWJy ZWFrOw0KPiA+ICsJCWlmIChxLT5kLT5kZXZpY2VfdmFyaWFudCA9PSBWUkIxX1ZBUklBTlQpIHsN Cj4gPiArCQkJY2JzX2luX3RiID0gZ2V0X251bV9jYnNfaW5fdGJfbGRwY19lbmMoJm9wc1tpXS0N Cj4gPmxkcGNfZW5jKTsNCj4gPiArCQkJLyogQ2hlY2sgaWYgdGhlcmUgYXJlIGF2YWlsYWJsZSBz cGFjZSBmb3IgZnVydGhlcg0KPiBwcm9jZXNzaW5nLiAqLw0KPiA+ICsJCQlpZiAodW5saWtlbHko KGF2YWlsIC0gY2JzX2luX3RiIDwgMCkgfHwgKGNic19pbl90YiA9PSAwKSkpIHsNCj4gPiArCQkJ CWFjY19lbnF1ZXVlX3JpbmdfZnVsbChxX2RhdGEpOw0KPiA+ICsJCQkJYnJlYWs7DQo+ID4gKwkJ CX0NCj4gPiArCQkJZGVzY3NfdXNlZCA9IHZyYjFfZW5xdWV1ZV9sZHBjX2VuY19vbmVfb3BfdGIo cSwNCj4gb3BzW2ldLA0KPiA+ICsJCQkJCWVucXVldWVkX2Rlc2NzLCBjYnNfaW5fdGIpOw0KPiA+ ICsJCX0gZWxzZSB7DQo+ID4gKwkJCWlmICh1bmxpa2VseShhdmFpbCA8IDEpKSB7DQo+ID4gKwkJ CQlhY2NfZW5xdWV1ZV9yaW5nX2Z1bGwocV9kYXRhKTsNCj4gPiArCQkJCWJyZWFrOw0KPiA+ICsJ CQl9DQo+ID4gKwkJCWRlc2NzX3VzZWQgPSB2cmIyX2VucXVldWVfbGRwY19lbmNfb25lX29wX3Ri KHEsDQo+IG9wc1tpXSwgZW5xdWV1ZWRfZGVzY3MpOw0KPiA+ICAgCQl9DQo+ID4gLQ0KPiA+IC0J CWRlc2NzX3VzZWQgPSB2cmIxX2VucXVldWVfbGRwY19lbmNfb25lX29wX3RiKHEsIG9wc1tpXSwN Cj4gZW5xdWV1ZWRfZGVzY3MsIGNic19pbl90Yik7DQo+ID4gICAJCWlmIChkZXNjc191c2VkIDwg MCkgew0KPiA+ICAgCQkJYWNjX2VucXVldWVfaW52YWxpZChxX2RhdGEpOw0KPiA+ICAgCQkJYnJl YWs7DQo+ID4gQEAgLTI4NjUsNiArMzM0Miw1MiBAQCB2cmJfZGVxdWV1ZV9lbmNfb25lX29wX2Ni KHN0cnVjdCBhY2NfcXVldWUNCj4gKnEsIHN0cnVjdCBydGVfYmJkZXZfZW5jX29wICoqcmVmX29w LA0KPiA+ICAgCXJldHVybiBkZXNjLT5yZXEubnVtQ0JzOw0KPiA+ICAgfQ0KPiA+DQo+ID4gKy8q IERlcXVldWUgb25lIExEUEMgZW5jb2RlIG9wZXJhdGlvbnMgZnJvbSBWUkIyIGRldmljZSBpbiBU QiBtb2RlLiAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ICt2cmIyX2RlcXVldWVfbGRw Y19lbmNfb25lX29wX3RiKHN0cnVjdCBhY2NfcXVldWUgKnEsIHN0cnVjdA0KPiBydGVfYmJkZXZf ZW5jX29wICoqcmVmX29wLA0KPiA+ICsJCXVpbnQxNl90ICpkZXF1ZXVlZF9vcHMsIHVpbnQzMl90 ICphcV9kZXF1ZXVlZCwNCj4gPiArCQl1aW50MTZfdCAqZGVxdWV1ZWRfZGVzY3MpDQo+ID4gK3sN Cj4gPiArCXVuaW9uIGFjY19kbWFfZGVzYyAqZGVzYywgYXRvbV9kZXNjOw0KPiA+ICsJdW5pb24g YWNjX2RtYV9yc3BfZGVzYyByc3A7DQo+ID4gKwlzdHJ1Y3QgcnRlX2JiZGV2X2VuY19vcCAqb3A7 DQo+ID4gKwlpbnQgZGVzY19pZHggPSAoKHEtPnN3X3JpbmdfdGFpbCArICpkZXF1ZXVlZF9kZXNj cykgJiBxLQ0KPiA+c3dfcmluZ193cmFwX21hc2spOw0KPiA+ICsNCj4gPiArCWRlc2MgPSBxLT5y aW5nX2FkZHIgKyBkZXNjX2lkeDsNCj4gPiArCWF0b21fZGVzYy5hdG9tX2hkciA9IF9fYXRvbWlj X2xvYWRfbigodWludDY0X3QgKilkZXNjLA0KPiBfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiArDQo+ ID4gKwkvKiBDaGVjayBmZG9uZSBiaXQuICovDQo+ID4gKwlpZiAoIShhdG9tX2Rlc2MucnNwLnZh bCAmIEFDQ19GRE9ORSkpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCXJzcC52YWwg PSBhdG9tX2Rlc2MucnNwLnZhbDsNCj4gPiArCXJ0ZV9iYmRldl9sb2dfZGVidWcoIlJlc3AuIGRl c2MgJXA6ICV4IiwgZGVzYywgcnNwLnZhbCk7DQo+ID4gKw0KPiA+ICsJLyogRGVxdWV1ZS4gKi8N Cj4gPiArCW9wID0gZGVzYy0+cmVxLm9wX2FkZHI7DQo+ID4gKw0KPiA+ICsJLyogQ2xlYXJpbmcg c3RhdHVzLCBpdCB3aWxsIGJlIHNldCBiYXNlZCBvbiByZXNwb25zZS4gKi8NCj4gPiArCW9wLT5z dGF0dXMgPSAwOw0KPiA+ICsJb3AtPnN0YXR1cyB8PSByc3AuaW5wdXRfZXJyIDw8IFJURV9CQkRF Vl9EQVRBX0VSUk9SOw0KPiA+ICsJb3AtPnN0YXR1cyB8PSByc3AuZG1hX2VyciA8PCBSVEVfQkJE RVZfRFJWX0VSUk9SOw0KPiA+ICsJb3AtPnN0YXR1cyB8PSByc3AuZmN3X2VyciA8PCBSVEVfQkJE RVZfRFJWX0VSUk9SOw0KPiA+ICsJb3AtPnN0YXR1cyB8PSByc3AuZW5naW5lX2h1bmcgPDwgUlRF X0JCREVWX0VOR0lORV9FUlJPUjsNCj4gPiArDQo+ID4gKwlpZiAoZGVzYy0+cmVxLmxhc3RfZGVz Y19pbl9iYXRjaCkgew0KPiA+ICsJCSgqYXFfZGVxdWV1ZWQpKys7DQo+ID4gKwkJZGVzYy0+cmVx Lmxhc3RfZGVzY19pbl9iYXRjaCA9IDA7DQo+ID4gKwl9DQo+ID4gKwlkZXNjLT5yc3AudmFsID0g QUNDX0RNQV9ERVNDX1RZUEU7DQo+ID4gKwlkZXNjLT5yc3AuYWRkX2luZm9fMCA9IDA7IC8qIFJl c2VydmVkIGJpdHMuICovDQo+ID4gKwlkZXNjLT5yc3AuYWRkX2luZm9fMSA9IDA7IC8qIFJlc2Vy dmVkIGJpdHMuICovDQo+ID4gKw0KPiA+ICsJLyogT25lIG9wIHdhcyBzdWNjZXNzZnVsbHkgZGVx dWV1ZWQgKi8NCj4gPiArCXJlZl9vcFswXSA9IG9wOw0KPiA+ICsJKCpkZXF1ZXVlZF9kZXNjcykr KzsNCj4gPiArCSgqZGVxdWV1ZWRfb3BzKSsrOw0KPiA+ICsJcmV0dXJuIDE7DQo+ID4gK30NCj4g PiArDQo+ID4gICAvKiBEZXF1ZXVlIG9uZSBMRFBDIGVuY29kZSBvcGVyYXRpb25zIGZyb20gZGV2 aWNlIGluIFRCIG1vZGUuDQo+ID4gICAgKiBUaGF0IG9wZXJhdGlvbiBtYXkgY292ZXIgbXVsdGlw bGUgZGVzY3JpcHRvcnMuDQo+ID4gICAgKi8NCj4gPiBAQCAtMzE4OSw5ICszNzEyLDE0IEBAIHZy Yl9kZXF1ZXVlX2xkcGNfZW5jKHN0cnVjdA0KPiBydGVfYmJkZXZfcXVldWVfZGF0YSAqcV9kYXRh LA0KPiA+DQo+ID4gICAJZm9yIChpID0gMDsgaSA8IGF2YWlsOyBpKyspIHsNCj4gPiAgIAkJaWYg KGNibSA9PSBSVEVfQkJERVZfVFJBTlNQT1JUX0JMT0NLKQ0KPiA+IC0JCQlyZXQgPSB2cmJfZGVx dWV1ZV9lbmNfb25lX29wX3RiKHEsDQo+ICZvcHNbZGVxdWV1ZWRfb3BzXSwNCj4gPiAtCQkJCQkm ZGVxdWV1ZWRfb3BzLCAmYXFfZGVxdWV1ZWQsDQo+ID4gLQkJCQkJJmRlcXVldWVkX2Rlc2NzLCBu dW0pOw0KPiA+ICsJCQlpZiAocS0+ZC0+ZGV2aWNlX3ZhcmlhbnQgPT0gVlJCMV9WQVJJQU5UKQ0K PiA+ICsJCQkJcmV0ID0gdnJiX2RlcXVldWVfZW5jX29uZV9vcF90YihxLA0KPiAmb3BzW2RlcXVl dWVkX29wc10sDQo+ID4gKwkJCQkJCSZkZXF1ZXVlZF9vcHMsDQo+ICZhcV9kZXF1ZXVlZCwNCj4g PiArCQkJCQkJJmRlcXVldWVkX2Rlc2NzLCBudW0pOw0KPiA+ICsJCQllbHNlDQo+ID4gKwkJCQly ZXQgPSB2cmIyX2RlcXVldWVfbGRwY19lbmNfb25lX29wX3RiKHEsDQo+ICZvcHNbZGVxdWV1ZWRf b3BzXSwNCj4gPiArCQkJCQkJJmRlcXVldWVkX29wcywNCj4gJmFxX2RlcXVldWVkLA0KPiA+ICsJ CQkJCQkmZGVxdWV1ZWRfZGVzY3MpOw0KPiA+ICAgCQllbHNlDQo+ID4gICAJCQlyZXQgPSB2cmJf ZGVxdWV1ZV9lbmNfb25lX29wX2NiKHEsDQo+ICZvcHNbZGVxdWV1ZWRfb3BzXSwNCj4gPiAgIAkJ CQkJJmRlcXVldWVkX29wcywgJmFxX2RlcXVldWVkLA0KPiA+IEBAIC0zNTM2LDYgKzQwNjQsNyBA QCB2cmJfYmJkZXZfaW5pdChzdHJ1Y3QgcnRlX2JiZGV2ICpkZXYsIHN0cnVjdA0KPiBydGVfcGNp X2RyaXZlciAqZHJ2KQ0KPiA+ICAgCX0gZWxzZSB7DQo+ID4gICAJCWQtPmRldmljZV92YXJpYW50 ID0gVlJCMl9WQVJJQU5UOw0KPiA+ICAgCQlkLT5xdWV1ZV9vZmZzZXQgPSB2cmIyX3F1ZXVlX29m ZnNldDsNCj4gPiArCQlkLT5mY3dfbGRfZmlsbCA9IHZyYjJfZmN3X2xkX2ZpbGw7DQo+ID4gICAJ CWQtPm51bV9xZ3JvdXBzID0gVlJCMl9OVU1fUUdSUFM7DQo+ID4gICAJCWQtPm51bV9hcXMgPSBW UkIyX05VTV9BUVM7DQo+ID4gICAJCWlmIChkLT5wZl9kZXZpY2UpDQo+IA0KPiANCj4gSXQgbG9v a3MgbGlrZSBtb3N0ICg2MCUrKSBvZiB0aGUgY29kZSBpbiB0aGlzIHBhdGNoIGNvdWxkIGJlIHJl bW92ZWQgaWYNCj4gZHVwbGljYXRpb24gd2FzIGF2b2lkZWQuDQo+IA0KPiBUaGFua3MsDQo+IE1h eGltZQ0KDQo=