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 D705843C0C; Thu, 29 Feb 2024 14:16:28 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 59D56402DC; Thu, 29 Feb 2024 14:16:28 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 1EF48402CD for ; Thu, 29 Feb 2024 14:16:26 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41T7OAfC029089; Thu, 29 Feb 2024 05:16:25 -0800 Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2168.outbound.protection.outlook.com [104.47.55.168]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3wjfay2u10-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 29 Feb 2024 05:16:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nUFTbcQ35gNOMGQdVH3mxanCTyR5AbLDZuDnc2XnnE0PI7mG2m4Ti9Z1jIeNKPcuFE2N+jftpi+P0S8t0YLvqX/y/ekgRsTiGq4uDbqzVWHz4WM57dehCchhc7UcrSxahycLLxU8FsctZd8LpVwkdzxWjQSOrqXie1Xm15I5MuXU+SQ7cP72dWZpltXd7bYFRdiinpDykwpfyzJ7Q7Eo/+F3e4Kf2o/lkcW5ZJuIfPBbrRn81Uo+PWQeFZJm+vwDm/kN1FyXAEt74gzEbCnma9oVbC6pMxhTrr6Xl5HmiXuMIklYiG+dZylnB7/EYGdpT7yX0yU/VM9kpTvAtrpH7A== 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=goDEBuuhqNTq3tyEPg9DDt7SSQKt4LemntRF97K1HdI=; b=JJGuPaXuO7Ngw1VAo1BXN1u73rPmgFLUFZrjhZ5/wNwYjO+1XhbvMzADUNQWpAAmo+48S9LmiN2pYt0UMcXv8/z8FiiLol+uZG4pPpzHkHrpf/gMKclSxV6uIMSPWzIiDJOb34wywoUiuWqQt8+3QLXrl0m7lvbp85JrQLvBm5uQ7Zp5mudmvTh5H14r/aAAJ2tPh/8UeDr2GOFfMMwoPlFjpKoFcrKjhAYweRlBi3XmH1b2xXA3VkK8ERarzf0qLpBOE46bn3rAiYvaQIFki2Gq8zscJnyQJL17Lq5FQ5fiybsLYB7mgjEKu46rjpSfCATzmlyI5/pwgNabTX85RA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=goDEBuuhqNTq3tyEPg9DDt7SSQKt4LemntRF97K1HdI=; b=iMpjV8HWOfCkJ0SS7XsRqgIAy6BRKs86iWI37XLdrf3Mw3ub0lQhaqsbjnOp+v29QA1R7/FLB0wad6g0v2XcSBVyTfka76zVEc7hxnm1w+Ep7xmiyWUpfx3ZbHAEQLlrMRVLXjBG4EkWwHcloZs+lwvW86ZYg3J3b9fJiO3hVOw= Received: from CO1PR18MB4714.namprd18.prod.outlook.com (2603:10b6:303:e9::18) by CO6PR18MB4036.namprd18.prod.outlook.com (2603:10b6:5:353::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.31; Thu, 29 Feb 2024 13:16:21 +0000 Received: from CO1PR18MB4714.namprd18.prod.outlook.com ([fe80::b71d:bd2a:b1a8:7e3c]) by CO1PR18MB4714.namprd18.prod.outlook.com ([fe80::b71d:bd2a:b1a8:7e3c%4]) with mapi id 15.20.7316.037; Thu, 29 Feb 2024 13:16:21 +0000 From: Gowrishankar Muthukrishnan To: fengchengwen , Amit Prakash Shukla , Cheng Jiang CC: "dev@dpdk.org" , Jerin Jacob , Anoob Joseph , Kevin Laatz , Bruce Richardson , Pavan Nikhilesh Bhagavatula Subject: RE: [EXT] Re: [PATCH v10 4/4] app/dma-perf: add SG copy support Thread-Topic: [EXT] Re: [PATCH v10 4/4] app/dma-perf: add SG copy support Thread-Index: AQHaaa69S1iEuIjc7UqT5RxFuNgc27EffoAAgAFzyEA= Date: Thu, 29 Feb 2024 13:16:21 +0000 Message-ID: References: <20240227160031.3931694-1-amitprakashs@marvell.com> <20240227185631.3932799-1-amitprakashs@marvell.com> <8148d7bc-f7a3-ad8c-71bf-c3f9c3c31a01@huawei.com> In-Reply-To: <8148d7bc-f7a3-ad8c-71bf-c3f9c3c31a01@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR18MB4714:EE_|CO6PR18MB4036:EE_ x-ms-office365-filtering-correlation-id: 6eabdfdf-c371-40f1-49ed-08dc39289f67 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Yp0my+cJxGGK0+N/w37yqyWN0f+E/sXbPQDq9F62B8HEZ9xBzz3B7JdUCvvqfZ8GPE7pb0CxTKIPzUqeiqb7CILzvnNTH3nERki8jQHji2GYvIJRlg5nkZiwSQ1SwDXm0JKgJ2ValoM5+DjmswcvIpHxX7EbbzAdSWNSZUTuvjBIEpY+TvyDRJmskqpIZ4E5NDkH0SFVz3Z9P4kjqOSML2Sbhp8/Q04+URVmZMO3NrhIGTn9Ce4t95RaFKSkTCWHcuoytxvw5VPj6jWACkmhDQpe3UdBeKRFGjFxWubcrS1RSv3b4YCc75nqZaIpSKi/1Kess429heGsQ4Y5K3bjyyJR5pBaVhFP01oTXSVsrqWbU39mWcPUl58GpiWuhZANwuagJyuQ6QzLT0MjUk5mMY0ufBHc9xOqlgIHgTMDztrbUxXoWe2pscUwd471XHKyDsOMmKVAlKQiHN+MMSdAwDc4rPtXJVeldaTtwmP56WWPGlkwjWh94GZrFtpjkcukmuH+8hiN/Ics1v5I4P1zknnpp3RLC8ekp7KkHqMeG+ReREFFbGwGO5fcI1FlDC0GDAASwtwndCW8jiJUbr67vSVbKuBCgHRIm67Qjtg6QSmnJ/x5CIDYred1rffupJfVKMX+4UV1nZZRqEIIMNmYxE4MurKT+l2zGCprXPwX7XXmm7Q+DYaDcOv9BbvrR6m4RjnMI0rY8ujp7IgZn/8UpQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO1PR18MB4714.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U3hYOURldkhNSHRzazRCbUI5djM0S2t5OE5HcjVxbXYvcmxya3V4bmpZNm1I?= =?utf-8?B?TXYwL2VLb2pXaVhlNDdmRE5ld1NIelgzZzBuY21rcnEralczb3M0blhDSEFI?= =?utf-8?B?YXJmcmxoRkZYY1FkR01UNXh6cHgrZUU1L0ZxNHFlcmRqd2xEWXdobTAwTXQ4?= =?utf-8?B?QU5ZcStGKzZEdU5PcldGMXFoK0hTREMzbS9ZY3FNOGJ0VnJaZ2RFRkhsclVX?= =?utf-8?B?OFdLbDBSUGlaVENZa2NPbjlnMVJMTmwzM0U1dDNqbWI3T1lWNDFSNXBZQ1FZ?= =?utf-8?B?ckFnK3JEM3F4WXhLVkZBZFZHTjE4MU5qVXEzYVZKcG5iUnh0SVoycXBYLzNW?= =?utf-8?B?NXkwUW1pY3hGdlJackJaVmYwNThnQ0F4eDl2RGdJeWo0OVIxMjZldWl1TERE?= =?utf-8?B?cFVmYTdJZEZSTER4SG40ZDhHOWRJamFxWUNUUCswLzUrNHZBR05kOFhiWGxY?= =?utf-8?B?bXAvTFJKcHkvZThGdzRCVGVXSUF3WXYyRURmNFlXUnZxT3duZTlQZlgvdTlD?= =?utf-8?B?ZGtjRGc4Ymx1L0ZjTzJiSEk0OGNnVW4rRXJubTUyOU90Y2JmT2NXWXZhTTNy?= =?utf-8?B?TGtVdEVJM1MxU0dCVE5KNldCRGdBNGVtYVZYOUN3UjMzaUwyK3U5eFJLY2sz?= =?utf-8?B?ZzBFeWs1QlluNXdkTThJODg3RExHcUlQQnNRRkZwcUkvdCtrVE9PNkpFdmV5?= =?utf-8?B?bXBFVnlocGxJd2kxa0pkeHpWL1huWVhpUFd2YVdZZDg1cG1aamtpY0M4cGVv?= =?utf-8?B?MHpaVlQ4WkhVd1B4aFJNaTJmNmE0SVdjT0J0NHJiYVZxZjlnb3FSeFlFMVdl?= =?utf-8?B?YndVdGp2V1BPelhlQTI1clovRzNuMFJudG9nVmk2NmM0OGlPZTFGOHoySHZp?= =?utf-8?B?SFdMYkc5VFZ4ZFk2bjFRMlNHQ01OT1FrSnBXeE5LeWNYbnhZSEkrT01VMHlZ?= =?utf-8?B?aFFQajFLRHIzWlEvdG5xNGpTUng4RnJ6SUwyemIyTzRlRktCMXl0aDlBRmZw?= =?utf-8?B?R3JBMEtwUmI1S0JsQWNxU2dIaVVXZnZHbUxPT1dTV2MxUENLUitnZkRGdGtE?= =?utf-8?B?S1crV0xuZjllTFRxR0FXVUhucHNnRk95aTZuWUZoWHowZUtzeWJpaVNmNU55?= =?utf-8?B?dWJPVVBXaWc2YU5vUUw3dk9TTi9kT3dLWTkwZGttdndVUVYyOHhPMUY4b0hH?= =?utf-8?B?U3dKdW12Z243YU5kTW9mSEYzeTUyNzJDa0ptV3BNOXZDMTZITmJSMkk5VzZQ?= =?utf-8?B?U0cvYi82ZWJxWmdBR09YYWNWQjhBcU5nSGkzcFZ0Z1VUVDFYV3NUd0Mya2FI?= =?utf-8?B?NE55azNSNlFGWGtGelp4WTQwaFZzdC9vYzRUUmJMYjFrR3JQbkVPeEVVa3NT?= =?utf-8?B?bE5WWGtsZ2lZeHFBc2x5TGpnYm01SmZOVlBBbjlpVHd3WlpWTFZJQ2thcHhZ?= =?utf-8?B?Yy8xaWJ0VDVuSGV6enpJSzFxZ0ROcXB4OXNURHZMZ1VHY2hhRS92SXorWExy?= =?utf-8?B?R01acUd0OXY2WlliY1hUSG81bVg5eGJPWkdzWkZKb3lmQXdSUGU3WTNMMWNa?= =?utf-8?B?U3J6ZzA0anNSbTN4NmM3bVJXZnJ5VVdOa0lNb3g2QnZLTXVRenB2cXNBMFFM?= =?utf-8?B?R3dDYjRnUVRReWdacnp0eHA1RXk2ZzJTZjA2aTBOc2lvU0FJc2U3N3B0WVVS?= =?utf-8?B?MlJVSkNrV2pWRTRXOHlRSGRLZ1Y0RVBJWHhHVkt0TGtla2J2bXpWbHNIbkFz?= =?utf-8?B?bUowemFxaGRZVTBzcDl0WXJNVkcyMHBOQStTa3VvNFZER0FhM1pjYVdMRFdD?= =?utf-8?B?UUVZK3FETGROdm1jNnBYL3FLNU1jaHpxY0VoalIzcW1LT3o3eHRvUnE5YWhl?= =?utf-8?B?YnZENVpJc3l6T1BKM0lkbXJBWW1kbjRRVGppMCtLTE5rSjBySW11VVh5NVhq?= =?utf-8?B?NksyVm4zckxwTHQ2R0pKbEdlaW9iWmRqMFhsWjJxaWcvU0phd1FsOG85V3JC?= =?utf-8?B?UFBNbllQdDdweno2QkJPcFFuaHkxckkwdTdFYVJjc3pHK2Q1REhZcXJYQTlp?= =?utf-8?B?MkkzRDZPVHY0bmk4cmdXMTlUU3dQcUlJVDRQTFRYVnh3WjRFMkNrbnpQcnZk?= =?utf-8?Q?rUgoHxq2jBwww71LDgaszRXlC?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR18MB4714.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6eabdfdf-c371-40f1-49ed-08dc39289f67 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Feb 2024 13:16:21.5351 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /hQ/TRn8seIYScETPieBaMcfRfbn4Ye1cWTX9UrqiG3WYyzgUQJNBE++uMJ/ERhLyCFIS+7xLX379LFOI5nCeAvlU5eYwAfZS4aeIIzZTX0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR18MB4036 X-Proofpoint-ORIG-GUID: Loj5fiPEevr-yythdOfyvS13yU4bmpHx X-Proofpoint-GUID: Loj5fiPEevr-yythdOfyvS13yU4bmpHx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-29_02,2024-02-29_01,2023-05-22_02 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 SGkgRmVuZ2NoZW5nLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGZl bmdjaGVuZ3dlbiA8ZmVuZ2NoZW5nd2VuQGh1YXdlaS5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwg RmVicnVhcnkgMjgsIDIwMjQgMzowMiBQTQ0KPiBUbzogQW1pdCBQcmFrYXNoIFNodWtsYSA8YW1p dHByYWthc2hzQG1hcnZlbGwuY29tPjsgQ2hlbmcgSmlhbmcNCj4gPGhvbmVzdC5qaWFuZ0Bmb3ht YWlsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgSmVyaW4gSmFjb2IgPGplcmluakBtYXJ2ZWxs LmNvbT47IEFub29iIEpvc2VwaA0KPiA8YW5vb2JqQG1hcnZlbGwuY29tPjsgS2V2aW4gTGFhdHog PGtldmluLmxhYXR6QGludGVsLmNvbT47IEJydWNlDQo+IFJpY2hhcmRzb24gPGJydWNlLnJpY2hh cmRzb25AaW50ZWwuY29tPjsgUGF2YW4gTmlraGlsZXNoIEJoYWdhdmF0dWxhDQo+IDxwYmhhZ2F2 YXR1bGFAbWFydmVsbC5jb20+OyBHb3dyaXNoYW5rYXIgTXV0aHVrcmlzaG5hbg0KPiA8Z211dGh1 a3Jpc2huQG1hcnZlbGwuY29tPg0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW1BBVENIIHYxMCA0LzRd IGFwcC9kbWEtcGVyZjogYWRkIFNHIGNvcHkgc3VwcG9ydA0KPiANCj4gRXh0ZXJuYWwgRW1haWwN Cj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gSGkgR293cmlzaGFua2FyLA0KPiANCj4gT24gMjAyNC8y LzI4IDI6NTYsIEFtaXQgUHJha2FzaCBTaHVrbGEgd3JvdGU6DQo+ID4gRnJvbTogR293cmlzaGFu a2FyIE11dGh1a3Jpc2huYW4gPGdtdXRodWtyaXNobkBtYXJ2ZWxsLmNvbT4NCj4gPg0KPiA+IEFk ZCBTRyBjb3B5IHN1cHBvcnQuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBHb3dyaXNoYW5rYXIg TXV0aHVrcmlzaG5hbiA8Z211dGh1a3Jpc2huQG1hcnZlbGwuY29tPg0KPiA+IEFja2VkLWJ5OiBB bm9vYiBKb3NlcGggPGFub29iakBtYXJ2ZWxsLmNvbT4NCj4gPiBBY2tlZC1ieTogQ2hlbmd3ZW4g RmVuZyA8ZmVuZ2NoZW5nd2VuQGh1YXdlaS5jb20+DQo+ID4gLS0tDQo+ID4gdjEwOg0KPiA+IC0g U0cgY29uZmlnIHZhcmlhYmxlcyByZW5hbWVkLg0KPiA+DQo+ID4gIGFwcC90ZXN0LWRtYS1wZXJm L2JlbmNobWFyay5jIHwgMjc4DQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQ0KPiA+ICBhcHAvdGVzdC1kbWEtcGVyZi9jb25maWcuaW5pICB8ICAyNSArKy0NCj4gPiAgYXBw L3Rlc3QtZG1hLXBlcmYvbWFpbi5jICAgICAgfCAgMzQgKysrKy0NCj4gPiAgYXBwL3Rlc3QtZG1h LXBlcmYvbWFpbi5oICAgICAgfCAgIDUgKy0NCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAzMDAgaW5z ZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rl c3QtZG1hLXBlcmYvYmVuY2htYXJrLmMNCj4gPiBiL2FwcC90ZXN0LWRtYS1wZXJmL2JlbmNobWFy ay5jIGluZGV4IDAwNDdlMmY0YjguLjI1ZWQ2ZmE2ZDAgMTAwNjQ0DQo+ID4gLS0tIGEvYXBwL3Rl c3QtZG1hLXBlcmYvYmVuY2htYXJrLmMNCj4gPiArKysgYi9hcHAvdGVzdC1kbWEtcGVyZi9iZW5j aG1hcmsuYw0KPiA+IEBAIC00Niw2ICs0NiwxMCBAQCBzdHJ1Y3QgbGNvcmVfcGFyYW1zIHsNCj4g PiAgCXVpbnQxNl90IHRlc3Rfc2VjczsNCj4gPiAgCXN0cnVjdCBydGVfbWJ1ZiAqKnNyY3M7DQo+ ID4gIAlzdHJ1Y3QgcnRlX21idWYgKipkc3RzOw0KPiA+ICsJc3RydWN0IHJ0ZV9kbWFfc2dlICpz cmNfc2dlczsNCj4gPiArCXN0cnVjdCBydGVfZG1hX3NnZSAqZHN0X3NnZXM7DQo+ID4gKwl1aW50 OF90IHNyY19wdHJzOw0KPiA+ICsJdWludDhfdCBkc3RfcHRyczsNCj4gDQo+IDEuIHNyYy9kc3Rf cHRycyAtPiBzcmMvZHN0X25iX3NnZQ0KQWNrLg0KDQo+IDIuIEhvdyBhYm91dCB3cmFwIHRoZXNl IGZvdXIgZmllbGRzIGFzIGEgc3RydWN0Pw0KQWNrLg0KDQo+IA0KPiA+ICAJdm9sYXRpbGUgc3Ry dWN0IHdvcmtlcl9pbmZvIHdvcmtlcl9pbmZvOyAgfTsNCj4gPg0KPiA+IEBAIC04NiwyMSArOTAs MzEgQEAgY2FsY19yZXN1bHQodWludDMyX3QgYnVmX3NpemUsIHVpbnQzMl90IG5yX2J1ZiwNCj4g PiB1aW50MTZfdCBuYl93b3JrZXJzLCB1aW50MTZfdCB0ZSAgfQ0KPiA+DQo+ID4gIHN0YXRpYyB2 b2lkDQo+ID4gLW91dHB1dF9yZXN1bHQodWludDhfdCBzY2VuYXJpb19pZCwgdWludDMyX3QgbGNv cmVfaWQsIGNoYXIgKmRtYV9uYW1lLA0KPiB1aW50MTZfdCByaW5nX3NpemUsDQo+ID4gLQkJCXVp bnQxNl90IGtpY2tfYmF0Y2gsIHVpbnQ2NF90IGF2ZV9jeWNsZSwgdWludDMyX3QNCj4gYnVmX3Np emUsIHVpbnQzMl90IG5yX2J1ZiwNCj4gPiAtCQkJZmxvYXQgbWVtb3J5LCBmbG9hdCBiYW5kd2lk dGgsIGZsb2F0IG1vcHMsIGJvb2wNCj4gaXNfZG1hKQ0KPiA+ICtvdXRwdXRfcmVzdWx0KHN0cnVj dCB0ZXN0X2NvbmZpZ3VyZSAqY2ZnLCBzdHJ1Y3QgbGNvcmVfcGFyYW1zICpwYXJhLA0KPiA+ICsJ CQl1aW50MTZfdCBraWNrX2JhdGNoLCB1aW50NjRfdCBhdmVfY3ljbGUsIHVpbnQzMl90DQo+IGJ1 Zl9zaXplLA0KPiA+ICsJCQl1aW50MzJfdCBucl9idWYsIGZsb2F0IG1lbW9yeSwgZmxvYXQgYmFu ZHdpZHRoLCBmbG9hdA0KPiBtb3BzKQ0KPiA+ICB7DQo+ID4gLQlpZiAoaXNfZG1hKQ0KPiA+IC0J CXByaW50ZigibGNvcmUgJXUsIERNQSAlcywgRE1BIFJpbmcgU2l6ZTogJXUsIEtpY2sgQmF0Y2gg U2l6ZToNCj4gJXUuXG4iLA0KPiA+IC0JCQkJbGNvcmVfaWQsIGRtYV9uYW1lLCByaW5nX3NpemUs IGtpY2tfYmF0Y2gpOw0KPiA+IC0JZWxzZQ0KPiA+ICsJdWludDE2X3QgcmluZ19zaXplID0gY2Zn LT5yaW5nX3NpemUuY3VyOw0KPiA+ICsJdWludDhfdCBzY2VuYXJpb19pZCA9IGNmZy0+c2NlbmFy aW9faWQ7DQo+ID4gKwl1aW50MzJfdCBsY29yZV9pZCA9IHBhcmEtPmxjb3JlX2lkOw0KPiA+ICsJ Y2hhciAqZG1hX25hbWUgPSBwYXJhLT5kbWFfbmFtZTsNCj4gPiArDQo+ID4gKwlpZiAoY2ZnLT5p c19kbWEpIHsNCj4gPiArCQlwcmludGYoImxjb3JlICV1LCBETUEgJXMsIERNQSBSaW5nIFNpemU6 ICV1LCBLaWNrIEJhdGNoIFNpemU6DQo+ICV1IiwgbGNvcmVfaWQsDQo+ID4gKwkJICAgICAgIGRt YV9uYW1lLCByaW5nX3NpemUsIGtpY2tfYmF0Y2gpOw0KPiA+ICsJCWlmIChjZmctPmlzX3NnKQ0K PiA+ICsJCQlwcmludGYoIiBETUEgc3JjIHB0cnM6ICV1LCBkc3QgcHRyczogJXUiLA0KPiA+ICsJ CQkgICAgICAgcGFyYS0+c3JjX3B0cnMsIHBhcmEtPmRzdF9wdHJzKTsNCj4gDQo+IERNQSBzcmMg c2dlczogJXUgRE1BIGRzdCBzZ2VzOiAldQ0KPiANCj4gSSB0aGluayB3ZSBzaG91bGQgYWRkIGEg Y29sdW1uIHdoaWNoIHRpdGxlIG1heWJlIG1pc2MsIHNvbWUgbGlrZSBzZy1zcmNbNF0tDQo+IGRz dFsxXSwgYW5kIGxhdGVyIHdlIG1heSBhZGQgZmlsbCB0ZXN0LCB0aGVuIHRoaXMgZmllbGQgY291 bGQgYmUgcGF0dGVybi0NCj4gMHgxMjM0NTY3OA0KPiANCj4gQW5kIGluICJbUEFUQ0ggdjEwIDIv NF0gYXBwL2RtYS1wZXJmOiBhZGQgUENJIGRldmljZSBzdXBwb3J0IiBjb21taXQsIGlmDQo+IHRo ZSBETUEgd2FzIHdvcmtlZCBpbiBub24tbWVtMm1lbSBkaXJlY3Rpb24sIHdlIGNvdWxkIGFkZCBz aW1wbGUNCj4gZGVzY3JpcHRvciBvZiBkaXJlY3Rpb24gYW5kIHBjaWUuaW5mbyBpbiB0aGUgYWJv dmUgbWlzYyBjb2x1bW4uDQo+IA0KDQpJIGFtIHNvcnJ5LCBJIGNvdWxkIG5vdCB1bmRlcnN0YW5k IGNvbXBsZXRlIHBpY3R1cmUgaGVyZS4gRG8geW91IG1lYW4gd2UgDQpyZXNlcnZlIGEgY29sdW1u IGFuZCB1c2UgaXQgYXMgcGVyIHRlc3QgdHlwZS4NCg0KRm9yIHBsYWluIG1lbSBjb3B5LCBub3Ro aW5nIGFkZGVkLg0KRm9yIFNHIG1lbSBjb3B5LCBpbnN0ZWFkIG9mIHNob3dpbmcgIkRNQSBzcmMg c2dlczogMSwgZHN0IHNnZXM6IDQiLCBwcmludCAic2ctc3JjWzFdLWRzdFs0XSIuDQpJbiBmdXR1 cmUsIHdoZW4gd2UgYWRkIGZpbGwgdGVzdCBpbiBiZW5jaG1hcmssIHRoaXMgbGluZSBpbnN0ZWFk IGJlICJwYXR0ZXJuLTB4MTIzNDU2NzgiLg0KDQpJcyBteSB1bmRlcnN0YW5kaW5nIGNvcnJlY3Qg b3ZlciBoZXJlID8NCg0KPiA+ICsJCXByaW50ZigiLlxuIik7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ ICAJCXByaW50ZigibGNvcmUgJXVcbiIsIGxjb3JlX2lkKTsNCj4gPiArCX0NCj4gPg0KPiA+ICAJ cHJpbnRmKCJBdmVyYWdlIEN5Y2xlcy9vcDogJSIgUFJJdTY0ICIsIEJ1ZmZlciBTaXplOiAldSBC LCBCdWZmZXINCj4gTnVtYmVyOiAldSwgTWVtb3J5OiAlLjJsZiBNQiwgRnJlcXVlbmN5OiAlLjNs ZiBHaHouXG4iLA0KPiA+ICAJCQlhdmVfY3ljbGUsIGJ1Zl9zaXplLCBucl9idWYsIG1lbW9yeSwN Cj4gcnRlX2dldF90aW1lcl9oeigpLzEwMDAwMDAwMDAuMCk7DQo+ID4gIAlwcmludGYoIkF2ZXJh Z2UgQmFuZHdpZHRoOiAlLjNsZiBHYnBzLCBNT3BzOiAlLjNsZlxuIiwgYmFuZHdpZHRoLA0KPiA+ IG1vcHMpOw0KPiA+DQo+ID4gLQlpZiAoaXNfZG1hKQ0KPiA+ICsJaWYgKGNmZy0+aXNfZG1hKQ0K PiA+ICAJCXNucHJpbnRmKG91dHB1dF9zdHJbbGNvcmVfaWRdLCBNQVhfT1VUUFVUX1NUUl9MRU4s DQo+IENTVl9MSU5FX0RNQV9GTVQsDQo+ID4gIAkJCXNjZW5hcmlvX2lkLCBsY29yZV9pZCwgZG1h X25hbWUsIHJpbmdfc2l6ZSwNCj4ga2lja19iYXRjaCwgYnVmX3NpemUsDQo+ID4gIAkJCW5yX2J1 ZiwgbWVtb3J5LCBhdmVfY3ljbGUsIGJhbmR3aWR0aCwgbW9wcyk7IEBAIC0NCj4gMTY3LDcgKzE4 MSw3IEBADQo+ID4gdmNoYW5fZGF0YV9wb3B1bGF0ZSh1aW50MzJfdCBkZXZfaWQsIHN0cnVjdCBy dGVfZG1hX3ZjaGFuX2NvbmYgKnFjb25mLA0KPiA+DQo+ID4gIC8qIENvbmZpZ3VyYXRpb24gb2Yg ZGV2aWNlLiAqLw0KPiA+ICBzdGF0aWMgdm9pZA0KPiA+IC1jb25maWd1cmVfZG1hZGV2X3F1ZXVl KHVpbnQzMl90IGRldl9pZCwgc3RydWN0IHRlc3RfY29uZmlndXJlICpjZmcpDQo+ID4gK2NvbmZp Z3VyZV9kbWFkZXZfcXVldWUodWludDMyX3QgZGV2X2lkLCBzdHJ1Y3QgdGVzdF9jb25maWd1cmUg KmNmZywNCj4gPiArdWludDhfdCBwdHJzX21heCkNCj4gPiAgew0KPiA+ICAJdWludDE2X3QgdmNo YW4gPSAwOw0KPiA+ICAJc3RydWN0IHJ0ZV9kbWFfaW5mbyBpbmZvOw0KPiA+IEBAIC0xOTAsNiAr MjA0LDEwIEBAIGNvbmZpZ3VyZV9kbWFkZXZfcXVldWUodWludDMyX3QgZGV2X2lkLCBzdHJ1Y3QN Cj4gdGVzdF9jb25maWd1cmUgKmNmZykNCj4gPiAgCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJF cnJvciwgbm8gY29uZmlndXJlZCBxdWV1ZXMgcmVwb3J0ZWQNCj4gb24gZGV2aWNlIGlkLiAldVxu IiwNCj4gPiAgCQkJCWRldl9pZCk7DQo+ID4NCj4gPiArCWlmIChpbmZvLm1heF9zZ2VzIDwgcHRy c19tYXgpDQo+ID4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiRXJyb3IsIERNQSBwdHJzIG1v cmUgdGhhbiBzdXBwb3J0ZWQNCj4gYnkNCj4gPiArZGV2aWNlIGlkICV1LlxuIiwNCj4gDQo+ICJF cnJvciB3aXRoIHVuc3VwcG9ydCBtYXhfc2dlcyBvbiBkZXZpY2UgaWQgJXUuXG4iDQpBY2suDQoN Cj4gDQo+ID4gKwkJCQlkZXZfaWQpOw0KPiA+ICsNCj4gPiAgCWlmIChydGVfZG1hX3N0YXJ0KGRl dl9pZCkgIT0gMCkNCj4gPiAgCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJFcnJvciB3aXRoIGRt YSBzdGFydC5cbiIpOyAgfSBAQCAtDQo+IDIwMiw4DQo+ID4gKzIyMCwxMiBAQCBjb25maWdfZG1h ZGV2cyhzdHJ1Y3QgdGVzdF9jb25maWd1cmUgKmNmZykNCj4gPiAgCXVpbnQzMl90IGk7DQo+ID4g IAlpbnQgZGV2X2lkOw0KPiA+ICAJdWludDE2X3QgbmJfZG1hZGV2cyA9IDA7DQo+ID4gKwl1aW50 OF90IHB0cnNfbWF4ID0gMDsNCj4gDQo+IEl0IGhhcmQgdG8gdW5kZXJzdGFuZCwgaG93IGFib3V0 IG5iX3NnZT8NCg0KQWNrLiBSZW5hbWVkIGl0IHRvIG5iX3NnZXMuDQo+IA0KPiA+ICAJY2hhciAq ZG1hX25hbWU7DQo+ID4NCj4gPiArCWlmIChjZmctPmlzX3NnKQ0KPiA+ICsJCXB0cnNfbWF4ID0g UlRFX01BWChjZmctPnNyY19wdHJzLCBjZmctPmRzdF9wdHJzKTsNCj4gPiArDQo+ID4gIAlmb3Ig KGkgPSAwOyBpIDwgbGRtLT5jbnQ7IGkrKykgew0KPiA+ICAJCWRtYV9uYW1lID0gbGRtLT5kbWFf bmFtZXNbaV07DQo+ID4gIAkJZGV2X2lkID0gcnRlX2RtYV9nZXRfZGV2X2lkX2J5X25hbWUoZG1h X25hbWUpOw0KPiA+IEBAIC0yMTMsNyArMjM1LDcgQEAgY29uZmlnX2RtYWRldnMoc3RydWN0IHRl c3RfY29uZmlndXJlICpjZmcpDQo+ID4gIAkJfQ0KPiA+DQo+ID4gIAkJbGRtLT5kbWFfaWRzW2ld ID0gZGV2X2lkOw0KPiA+IC0JCWNvbmZpZ3VyZV9kbWFkZXZfcXVldWUoZGV2X2lkLCBjZmcpOw0K PiA+ICsJCWNvbmZpZ3VyZV9kbWFkZXZfcXVldWUoZGV2X2lkLCBjZmcsIHB0cnNfbWF4KTsNCj4g PiAgCQkrK25iX2RtYWRldnM7DQo+ID4gIAl9DQo+ID4NCj4gPiBAQCAtMjUzLDcgKzI3NSw3IEBA IGRvX2RtYV9zdWJtaXRfYW5kX3BvbGwodWludDE2X3QgZGV2X2lkLA0KPiB1aW50NjRfdCAqYXN5 bmNfY250LA0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGlubGluZSBpbnQNCj4gPiAtZG9fZG1h X21lbV9jb3B5KHZvaWQgKnApDQo+ID4gK2RvX2RtYV9wbGFpbl9tZW1fY29weSh2b2lkICpwKQ0K PiA+ICB7DQo+ID4gIAlzdHJ1Y3QgbGNvcmVfcGFyYW1zICpwYXJhID0gKHN0cnVjdCBsY29yZV9w YXJhbXMgKilwOw0KPiA+ICAJdm9sYXRpbGUgc3RydWN0IHdvcmtlcl9pbmZvICp3b3JrZXJfaW5m byA9ICYocGFyYS0+d29ya2VyX2luZm8pOw0KPiA+IEBAIC0zMDYsNiArMzI4LDY1IEBAIGRvX2Rt YV9tZW1fY29weSh2b2lkICpwKQ0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICtz dGF0aWMgaW5saW5lIGludA0KPiA+ICtkb19kbWFfc2dfbWVtX2NvcHkodm9pZCAqcCkNCj4gPiAr ew0KPiA+ICsJc3RydWN0IGxjb3JlX3BhcmFtcyAqcGFyYSA9IChzdHJ1Y3QgbGNvcmVfcGFyYW1z ICopcDsNCj4gPiArCXZvbGF0aWxlIHN0cnVjdCB3b3JrZXJfaW5mbyAqd29ya2VyX2luZm8gPSAm KHBhcmEtPndvcmtlcl9pbmZvKTsNCj4gPiArCXN0cnVjdCBydGVfZG1hX3NnZSAqc3JjX3NnZXMg PSBwYXJhLT5zcmNfc2dlczsNCj4gPiArCXN0cnVjdCBydGVfZG1hX3NnZSAqZHN0X3NnZXMgPSBw YXJhLT5kc3Rfc2dlczsNCj4gPiArCWNvbnN0IHVpbnQxNl90IGtpY2tfYmF0Y2ggPSBwYXJhLT5r aWNrX2JhdGNoOw0KPiA+ICsJY29uc3QgdWludDhfdCBzcmNfcHRycyA9IHBhcmEtPnNyY19wdHJz Ow0KPiA+ICsJY29uc3QgdWludDhfdCBkc3RfcHRycyA9IHBhcmEtPmRzdF9wdHJzOw0KPiA+ICsJ Y29uc3QgdWludDE2X3QgZGV2X2lkID0gcGFyYS0+ZGV2X2lkOw0KPiA+ICsJdWludDMyX3QgbnJf YnVmID0gcGFyYS0+bnJfYnVmOw0KPiA+ICsJdWludDY0X3QgYXN5bmNfY250ID0gMDsNCj4gPiAr CXVpbnQzMl90IHBvbGxfY250ID0gMDsNCj4gPiArCXVpbnQxNl90IG5yX2NwbDsNCj4gPiArCXVp bnQzMl90IGksIGo7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCW5yX2J1ZiAvPSBSVEVf TUFYKHNyY19wdHJzLCBkc3RfcHRycyk7DQo+ID4gKwl3b3JrZXJfaW5mby0+c3RvcF9mbGFnID0g ZmFsc2U7DQo+ID4gKwl3b3JrZXJfaW5mby0+cmVhZHlfZmxhZyA9IHRydWU7DQo+ID4gKw0KPiA+ ICsJd2hpbGUgKCF3b3JrZXJfaW5mby0+c3RhcnRfZmxhZykNCj4gPiArCQk7DQo+ID4gKw0KPiA+ ICsJd2hpbGUgKDEpIHsNCj4gPiArCQlqID0gMDsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgbnJf YnVmOyBpKyspIHsNCj4gPiArZG1hX2NvcHk6DQo+ID4gKwkJCXJldCA9IHJ0ZV9kbWFfY29weV9z ZyhkZXZfaWQsIDAsDQo+ID4gKwkJCQkmc3JjX3NnZXNbaSAqIHNyY19wdHJzXSwgJmRzdF9zZ2Vz W2ogKg0KPiBkc3RfcHRyc10sDQo+ID4gKwkJCQlzcmNfcHRycywgZHN0X3B0cnMsIDApOw0KPiA+ ICsJCQlpZiAodW5saWtlbHkocmV0IDwgMCkpIHsNCj4gPiArCQkJCWlmIChyZXQgPT0gLUVOT1NQ Qykgew0KPiA+ICsJCQkJCWRvX2RtYV9zdWJtaXRfYW5kX3BvbGwoZGV2X2lkLA0KPiAmYXN5bmNf Y250LCB3b3JrZXJfaW5mbyk7DQo+ID4gKwkJCQkJZ290byBkbWFfY29weTsNCj4gPiArCQkJCX0g ZWxzZQ0KPiA+ICsJCQkJCWVycm9yX2V4aXQoZGV2X2lkKTsNCj4gPiArCQkJfQ0KPiA+ICsJCQlh c3luY19jbnQrKzsNCj4gPiArCQkJaisrOw0KPiA+ICsNCj4gPiArCQkJaWYgKChhc3luY19jbnQg JSBraWNrX2JhdGNoKSA9PSAwKQ0KPiA+ICsJCQkJZG9fZG1hX3N1Ym1pdF9hbmRfcG9sbChkZXZf aWQsDQo+ICZhc3luY19jbnQsIHdvcmtlcl9pbmZvKTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJ CWlmICh3b3JrZXJfaW5mby0+c3RvcF9mbGFnKQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwlydGVfZG1hX3N1Ym1pdChkZXZfaWQsIDApOw0KPiA+ICsJd2hpbGUgKChhc3lu Y19jbnQgPiAwKSAmJiAocG9sbF9jbnQrKyA8IFBPTExfTUFYKSkgew0KPiA+ICsJCW5yX2NwbCA9 IHJ0ZV9kbWFfY29tcGxldGVkKGRldl9pZCwgMCwgTUFYX0RNQV9DUExfTkIsDQo+IE5VTEwsIE5V TEwpOw0KPiA+ICsJCWFzeW5jX2NudCAtPSBucl9jcGw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbmxpbmUgaW50DQo+ID4gIGRv X2NwdV9tZW1fY29weSh2b2lkICpwKQ0KPiA+ICB7DQo+ID4gQEAgLTM0Nyw4ICs0MjgsOSBAQCBk dW1teV9mcmVlX2V4dF9idWYodm9pZCAqYWRkciwgdm9pZCAqb3BhcXVlKQ0KPiA+ICB9DQo+ID4N Cj4gPiAgc3RhdGljIGludA0KPiA+IC1zZXR1cF9tZW1vcnlfZW52KHN0cnVjdCB0ZXN0X2NvbmZp Z3VyZSAqY2ZnLCBzdHJ1Y3QgcnRlX21idWYgKioqc3JjcywNCj4gPiAtCQkJc3RydWN0IHJ0ZV9t YnVmICoqKmRzdHMpDQo+ID4gK3NldHVwX21lbW9yeV9lbnYoc3RydWN0IHRlc3RfY29uZmlndXJl ICpjZmcsDQo+ID4gKwkJCSBzdHJ1Y3QgcnRlX21idWYgKioqc3Jjcywgc3RydWN0IHJ0ZV9tYnVm ICoqKmRzdHMsDQo+ID4gKwkJCSBzdHJ1Y3QgcnRlX2RtYV9zZ2UgKipzcmNfc2dlcywgc3RydWN0 IHJ0ZV9kbWFfc2dlDQo+ICoqZHN0X3NnZXMpDQo+ID4gIHsNCj4gPiAgCXN0YXRpYyBzdHJ1Y3Qg cnRlX21idWZfZXh0X3NoYXJlZF9pbmZvICpleHRfYnVmX2luZm87DQo+ID4gIAl1bnNpZ25lZCBp bnQgY3VyX2J1Zl9zaXplID0gY2ZnLT5idWZfc2l6ZS5jdXI7DQo+ID4gQEAgLTQwOSw4ICs0OTEs OCBAQCBzZXR1cF9tZW1vcnlfZW52KHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSAqY2ZnLA0KPiBzdHJ1 Y3QgcnRlX21idWYgKioqc3JjcywNCj4gPiAgCX0NCj4gPg0KPiA+ICAJZm9yIChpID0gMDsgaSA8 IG5yX2J1ZjsgaSsrKSB7DQo+ID4gLQkJbWVtc2V0KHJ0ZV9wa3RtYnVmX210b2QoKCpzcmNzKVtp XSwgdm9pZCAqKSwgcnRlX3JhbmQoKSwNCj4gYnVmX3NpemUpOw0KPiA+IC0JCW1lbXNldChydGVf cGt0bWJ1Zl9tdG9kKCgqZHN0cylbaV0sIHZvaWQgKiksIDAsIGJ1Zl9zaXplKTsNCj4gPiArCQlt ZW1zZXQocnRlX3BrdG1idWZfbXRvZCgoKnNyY3MpW2ldLCB2b2lkICopLCBydGVfcmFuZCgpLA0K PiBjdXJfYnVmX3NpemUpOw0KPiA+ICsJCW1lbXNldChydGVfcGt0bWJ1Zl9tdG9kKCgqZHN0cylb aV0sIHZvaWQgKiksIDAsDQo+IGN1cl9idWZfc2l6ZSk7DQo+ID4gIAl9DQo+ID4NCj4gPiAgCWlm IChjZmctPnRyYW5zZmVyX2RpciA9PSBSVEVfRE1BX0RJUl9ERVZfVE9fTUVNIHx8DQo+ID4gQEAg LTQ0NiwyMCArNTI4LDU2IEBAIHNldHVwX21lbW9yeV9lbnYoc3RydWN0IHRlc3RfY29uZmlndXJl ICpjZmcsDQo+IHN0cnVjdCBydGVfbWJ1ZiAqKipzcmNzLA0KPiA+ICAJCX0NCj4gPiAgCX0NCj4g Pg0KPiA+ICsJaWYgKGNmZy0+aXNfc2cpIHsNCj4gPiArCQl1aW50OF90IHNyY19wdHJzID0gY2Zn LT5zcmNfcHRyczsNCj4gPiArCQl1aW50OF90IGRzdF9wdHJzID0gY2ZnLT5kc3RfcHRyczsNCj4g PiArCQl1aW50MzJfdCBzZ2xlbl9zcmMsIHNnbGVuX2RzdDsNCj4gPiArDQo+ID4gKwkJKnNyY19z Z2VzID0gcnRlX3ptYWxsb2MoTlVMTCwgbnJfYnVmICogc2l6ZW9mKHN0cnVjdA0KPiBydGVfZG1h X3NnZSksDQo+ID4gKwkJCQkJUlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ID4gKwkJaWYgKCpzcmNf c2dlcyA9PSBOVUxMKSB7DQo+ID4gKwkJCXByaW50ZigiRXJyb3I6IHNyY19zZ2VzIGFycmF5IG1h bGxvYyBmYWlsZWQuXG4iKTsNCj4gPiArCQkJcmV0dXJuIC0xOw0KPiA+ICsJCX0NCj4gPiArDQo+ ID4gKwkJKmRzdF9zZ2VzID0gcnRlX3ptYWxsb2MoTlVMTCwgbnJfYnVmICogc2l6ZW9mKHN0cnVj dA0KPiBydGVfZG1hX3NnZSksDQo+ID4gKwkJCQkJUlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ID4g KwkJaWYgKCpkc3Rfc2dlcyA9PSBOVUxMKSB7DQo+ID4gKwkJCXByaW50ZigiRXJyb3I6IGRzdF9z Z2VzIGFycmF5IG1hbGxvYyBmYWlsZWQuXG4iKTsNCj4gPiArCQkJcmV0dXJuIC0xOw0KPiA+ICsJ CX0NCj4gPiArDQo+ID4gKwkJc2dsZW5fc3JjID0gY3VyX2J1Zl9zaXplIC8gc3JjX3B0cnM7DQo+ ID4gKwkJc2dsZW5fZHN0ID0gY3VyX2J1Zl9zaXplIC8gZHN0X3B0cnM7DQo+ID4gKw0KPiA+ICsJ CWZvciAoaSA9IDA7IGkgPCBucl9idWY7IGkrKykgew0KPiA+ICsJCQkoKnNyY19zZ2VzKVtpXS5h ZGRyID0gcnRlX3BrdG1idWZfaW92YSgoKnNyY3MpW2ldKTsNCj4gPiArCQkJKCpzcmNfc2dlcylb aV0ubGVuZ3RoID0gc2dsZW5fc3JjOw0KPiA+ICsJCQlpZiAoISgoaSsxKSAlIHNyY19wdHJzKSkN Cj4gPiArCQkJCSgqc3JjX3NnZXMpW2ldLmxlbmd0aCArPSAoY3VyX2J1Zl9zaXplICUNCj4gc3Jj X3B0cnMpOw0KPiA+ICsNCj4gPiArCQkJKCpkc3Rfc2dlcylbaV0uYWRkciA9IHJ0ZV9wa3RtYnVm X2lvdmEoKCpkc3RzKVtpXSk7DQo+ID4gKwkJCSgqZHN0X3NnZXMpW2ldLmxlbmd0aCA9IHNnbGVu X2RzdDsNCj4gPiArCQkJaWYgKCEoKGkrMSkgJSBkc3RfcHRycykpDQo+ID4gKwkJCQkoKmRzdF9z Z2VzKVtpXS5sZW5ndGggKz0gKGN1cl9idWZfc2l6ZSAlDQo+IGRzdF9wdHJzKTsNCj4gPiArCQl9 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICBpbnQN Cj4gPiAtbWVtX2NvcHlfYmVuY2htYXJrKHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSAqY2ZnLCBib29s IGlzX2RtYSkNCj4gPiArbWVtX2NvcHlfYmVuY2htYXJrKHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSAq Y2ZnKQ0KPiA+ICB7DQo+ID4gLQl1aW50MzJfdCBpOw0KPiA+ICsJdWludDMyX3QgaSwgajsNCj4g PiAgCXVpbnQzMl90IG9mZnNldDsNCj4gPiAgCXVuc2lnbmVkIGludCBsY29yZV9pZCA9IDA7DQo+ ID4gIAlzdHJ1Y3QgcnRlX21idWYgKipzcmNzID0gTlVMTCwgKipkc3RzID0gTlVMTCwgKiptID0g TlVMTDsNCj4gPiArCXN0cnVjdCBydGVfZG1hX3NnZSAqc3JjX3NnZXMgPSBOVUxMLCAqZHN0X3Nn ZXMgPSBOVUxMOw0KPiA+ICAJc3RydWN0IGxjb3JlX2RtYV9tYXBfdCAqbGRtID0gJmNmZy0+bGNv cmVfZG1hX21hcDsNCj4gPiArCWNvbnN0IHVpbnQzMl90IG1jb3JlX2lkID0gcnRlX2dldF9tYWlu X2xjb3JlKCk7DQo+ID4gIAl1bnNpZ25lZCBpbnQgYnVmX3NpemUgPSBjZmctPmJ1Zl9zaXplLmN1 cjsNCj4gPiAgCXVpbnQxNl90IGtpY2tfYmF0Y2ggPSBjZmctPmtpY2tfYmF0Y2guY3VyOw0KPiA+ IC0JdWludDMyX3QgbnJfYnVmID0gY2ZnLT5ucl9idWYgPSAoY2ZnLT5tZW1fc2l6ZS5jdXIgKiAx MDI0ICogMTAyNCkgLw0KPiAoY2ZnLT5idWZfc2l6ZS5jdXIgKiAyKTsNCj4gPiAgCXVpbnQxNl90 IG5iX3dvcmtlcnMgPSBsZG0tPmNudDsNCj4gPiAgCXVpbnQxNl90IHRlc3Rfc2VjcyA9IGNmZy0+ dGVzdF9zZWNzOw0KPiA+ICAJZmxvYXQgbWVtb3J5ID0gMDsNCj4gPiBAQCAtNDY3LDEyICs1ODUs MzIgQEAgbWVtX2NvcHlfYmVuY2htYXJrKHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZQ0KPiAqY2ZnLCBi b29sIGlzX2RtYSkNCj4gPiAgCXVpbnQzMl90IGF2Z19jeWNsZXNfdG90YWw7DQo+ID4gIAlmbG9h dCBtb3BzLCBtb3BzX3RvdGFsOw0KPiA+ICAJZmxvYXQgYmFuZHdpZHRoLCBiYW5kd2lkdGhfdG90 YWw7DQo+ID4gKwl1aW50MzJfdCBucl9zZ3NyYyA9IDAsIG5yX3NnZHN0ID0gMDsNCj4gPiArCXVp bnQzMl90IG5yX2J1ZjsNCj4gPiAgCWludCByZXQgPSAwOw0KPiA+DQo+ID4gLQlpZiAoc2V0dXBf bWVtb3J5X2VudihjZmcsICZzcmNzLCAmZHN0cykgPCAwKQ0KPiA+ICsJLyogQWxpZ24gbnVtYmVy IG9mIGJ1ZmZlcnMgYWNjb3JkaW5nIHRvIHdvcmtlcnMgY291bnQgKi8NCj4gPiArCW5yX2J1ZiA9 IChjZmctPm1lbV9zaXplLmN1ciAqIDEwMjQgKiAxMDI0KSAvIChjZmctPmJ1Zl9zaXplLmN1ciAq IDIpOw0KPiA+ICsJbnJfYnVmIC09IChucl9idWYgJSBuYl93b3JrZXJzKTsNCj4gPiArCWlmIChj ZmctPmlzX3NnKSB7DQo+ID4gKwkJbnJfYnVmIC89IG5iX3dvcmtlcnM7DQo+ID4gKwkJbnJfYnVm IC09IG5yX2J1ZiAlIChjZmctPnNyY19wdHJzICogY2ZnLT5kc3RfcHRycyk7DQo+ID4gKwkJbnJf YnVmICo9IG5iX3dvcmtlcnM7DQo+ID4gKw0KPiA+ICsJCWlmIChjZmctPmRzdF9wdHJzID4gY2Zn LT5zcmNfcHRycykgew0KPiA+ICsJCQlucl9zZ3NyYyA9IChucl9idWYgLyBjZmctPmRzdF9wdHJz ICogY2ZnLT5zcmNfcHRycyk7DQo+ID4gKwkJCW5yX3NnZHN0ID0gbnJfYnVmOw0KPiA+ICsJCX0g ZWxzZSB7DQo+ID4gKwkJCW5yX3Nnc3JjID0gbnJfYnVmOw0KPiA+ICsJCQlucl9zZ2RzdCA9IChu cl9idWYgLyBjZmctPnNyY19wdHJzICogY2ZnLT5kc3RfcHRycyk7DQo+ID4gKwkJfQ0KPiA+ICsJ fQ0KPiANCj4gcGxzIG1vdmUgdG8gYSBzdWJmdW5jdGlvbg0KQWNrLg0KDQo+IA0KPiA+ICsNCj4g PiArCWNmZy0+bnJfYnVmID0gbnJfYnVmOw0KPiA+ICsJaWYgKHNldHVwX21lbW9yeV9lbnYoY2Zn LCAmc3JjcywgJmRzdHMsICZzcmNfc2dlcywgJmRzdF9zZ2VzKSA8IDApDQo+ID4gIAkJZ290byBv dXQ7DQo+ID4NCj4gPiAtCWlmIChpc19kbWEpDQo+ID4gKwlpZiAoY2ZnLT5pc19kbWEpDQo+ID4g IAkJaWYgKGNvbmZpZ19kbWFkZXZzKGNmZykgPCAwKQ0KPiA+ICAJCQlnb3RvIG91dDsNCj4gPg0K PiA+IEBAIC00ODYsMTMgKzYyNCwyMyBAQCBtZW1fY29weV9iZW5jaG1hcmsoc3RydWN0IHRlc3Rf Y29uZmlndXJlDQo+ICpjZmcsIGJvb2wgaXNfZG1hKQ0KPiA+DQo+ID4gIAlmb3IgKGkgPSAwOyBp IDwgbmJfd29ya2VyczsgaSsrKSB7DQo+ID4gIAkJbGNvcmVfaWQgPSBsZG0tPmxjb3Jlc1tpXTsN Cj4gPiArCQlpZiAobGNvcmVfaWQgPT0gbWNvcmVfaWQpIHsNCj4gPiArCQkJcHJpbnRmKCJsY29y ZSBwYXJhbWV0ZXJzIGNhbiBub3QgdXNlIG1haW4gY29yZSBpZA0KPiAlZFxuIiwgbWNvcmVfaWQp Ow0KPiA+ICsJCQlnb3RvIG91dDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChydGVfZWFs X2xjb3JlX3JvbGUobGNvcmVfaWQpID09IFJPTEVfT0ZGKSB7DQo+ID4gKwkJCXByaW50ZigibGNv cmUgcGFyYW1ldGVycyBjYW4gbm90IHVzZSBvZmZsaW5lIGNvcmUgaWQNCj4gJWRcbiIsIGxjb3Jl X2lkKTsNCj4gPiArCQkJZ290byBvdXQ7DQo+ID4gKwkJfQ0KPiANCj4gVGhlIGFib3ZlIHR3byBq dWRnZW1lbnQgc2hvdWxkIGluIGEgc2VwZXJhdGUgY29tbWl0Lg0KDQpTb3JyeSwgc29tZWhvdyBp dCBnb3QgbWl4ZWQgZnJvbSBkaWZmZXJlbnQgcGF0Y2ggSSBoYWQgaW4gbXkgbG9jYWwgcmVwby4N Ckl0IHdpbGwgYmUgaW4gZGlmZmVyZW50IGNvbW1pdC4NCg0KPiANCj4gPiArDQo+ID4gIAkJb2Zm c2V0ID0gbnJfYnVmIC8gbmJfd29ya2VycyAqIGk7DQo+ID4gIAkJbGNvcmVzW2ldID0gcnRlX21h bGxvYyhOVUxMLCBzaXplb2Yoc3RydWN0IGxjb3JlX3BhcmFtcyksIDApOw0KPiA+ICAJCWlmIChs Y29yZXNbaV0gPT0gTlVMTCkgew0KPiA+ICAJCQlwcmludGYoImxjb3JlIHBhcmFtZXRlcnMgbWFs bG9jIGZhaWx1cmUgZm9yIGxjb3JlICVkXG4iLA0KPiBsY29yZV9pZCk7DQo+ID4gIAkJCWJyZWFr Ow0KPiA+ICAJCX0NCj4gPiAtCQlpZiAoaXNfZG1hKSB7DQo+ID4gKwkJaWYgKGNmZy0+aXNfZG1h KSB7DQo+ID4gIAkJCWxjb3Jlc1tpXS0+ZG1hX25hbWUgPSBsZG0tPmRtYV9uYW1lc1tpXTsNCj4g PiAgCQkJbGNvcmVzW2ldLT5kZXZfaWQgPSBsZG0tPmRtYV9pZHNbaV07DQo+ID4gIAkJCWxjb3Jl c1tpXS0+a2lja19iYXRjaCA9IGtpY2tfYmF0Y2g7DQo+ID4gQEAgLTUwNiwxMCArNjU0LDIzIEBA IG1lbV9jb3B5X2JlbmNobWFyayhzdHJ1Y3QgdGVzdF9jb25maWd1cmUNCj4gKmNmZywgYm9vbCBp c19kbWEpDQo+ID4gIAkJbGNvcmVzW2ldLT5zY2VuYXJpb19pZCA9IGNmZy0+c2NlbmFyaW9faWQ7 DQo+ID4gIAkJbGNvcmVzW2ldLT5sY29yZV9pZCA9IGxjb3JlX2lkOw0KPiA+DQo+ID4gLQkJaWYg KGlzX2RtYSkNCj4gPiAtCQkJcnRlX2VhbF9yZW1vdGVfbGF1bmNoKGRvX2RtYV9tZW1fY29weSwg KHZvaWQNCj4gKikobGNvcmVzW2ldKSwgbGNvcmVfaWQpOw0KPiA+IC0JCWVsc2UNCj4gPiArCQlp ZiAoY2ZnLT5pc19zZykgew0KPiA+ICsJCQlsY29yZXNbaV0tPnNyY19wdHJzID0gY2ZnLT5zcmNf cHRyczsNCj4gPiArCQkJbGNvcmVzW2ldLT5kc3RfcHRycyA9IGNmZy0+ZHN0X3B0cnM7DQo+ID4g KwkJCWxjb3Jlc1tpXS0+c3JjX3NnZXMgPSBzcmNfc2dlcyArIChucl9zZ3NyYyAvIG5iX3dvcmtl cnMNCj4gKiBpKTsNCj4gPiArCQkJbGNvcmVzW2ldLT5kc3Rfc2dlcyA9IGRzdF9zZ2VzICsgKG5y X3NnZHN0IC8NCj4gbmJfd29ya2VycyAqIGkpOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYg KGNmZy0+aXNfZG1hKSB7DQo+ID4gKwkJCWlmICghY2ZnLT5pc19zZykNCj4gPiArDQo+IAlydGVf ZWFsX3JlbW90ZV9sYXVuY2goZG9fZG1hX3BsYWluX21lbV9jb3B5LCAodm9pZCAqKShsY29yZXNb aV0pLA0KPiA+ICsJCQkJCWxjb3JlX2lkKTsNCj4gPiArCQkJZWxzZQ0KPiA+ICsNCj4gCXJ0ZV9l YWxfcmVtb3RlX2xhdW5jaChkb19kbWFfc2dfbWVtX2NvcHksICh2b2lkICopKGxjb3Jlc1tpXSks DQo+ID4gKwkJCQkJbGNvcmVfaWQpOw0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gIAkJCXJ0ZV9lYWxf cmVtb3RlX2xhdW5jaChkb19jcHVfbWVtX2NvcHksICh2b2lkDQo+ICopKGxjb3Jlc1tpXSksIGxj b3JlX2lkKTsNCj4gPiArCQl9DQo+IA0KPiB0b28gbWFueSBqdWRnZW1lbnQgZm9yIHNlbGVjdGlu ZyB0YXJnZXQgZnVuY3Rpb24sIGhvdyBhYm91dCB3cmFwIGl0DQo+IHN1YmZ1bmN0aW9uOg0KPiBs Y29yZV9mdW5jdGlvbl90IGdldF93b3JrX2Z1bmN0aW9uKHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSAq Y2ZnKQ0KPiB0aGVuIHJ0ZV9lYWxfcmVtb3RlX2xhdW5jaChnZXRfd29ya19mdW5jdGlvbihjZmcp LCAodm9pZCAqKShsY29yZXNbaV0pLA0KPiBsY29yZV9pZCk7DQo+IA0KQWNrLg0KDQo+ID4gIAl9 DQo+ID4NCj4gPiAgCXdoaWxlICgxKSB7DQo+ID4gQEAgLTU0MSwxMyArNzAyLDUzIEBAIG1lbV9j b3B5X2JlbmNobWFyayhzdHJ1Y3QgdGVzdF9jb25maWd1cmUNCj4gKmNmZywgYm9vbCBpc19kbWEp DQo+ID4NCj4gPiAgCXJ0ZV9lYWxfbXBfd2FpdF9sY29yZSgpOw0KPiA+DQo+ID4gLQlmb3IgKGkg PSAwOyBpIDwgKG5yX2J1ZiAvIG5iX3dvcmtlcnMpICogbmJfd29ya2VyczsgaSsrKSB7DQo+ID4g LQkJaWYgKG1lbWNtcChydGVfcGt0bWJ1Zl9tdG9kKHNyY3NbaV0sIHZvaWQgKiksDQo+ID4gLQkJ CSAgIHJ0ZV9wa3RtYnVmX210b2QoZHN0c1tpXSwgdm9pZCAqKSwNCj4gPiAtCQkJICAgY2ZnLT5i dWZfc2l6ZS5jdXIpICE9IDApIHsNCj4gPiAtCQkJcHJpbnRmKCJDb3B5IHZhbGlkYXRpb24gZmFp bHMgZm9yIGJ1ZmZlciBudW1iZXIgJWRcbiIsDQo+IGkpOw0KPiA+IC0JCQlyZXQgPSAtMTsNCj4g PiAtCQkJZ290byBvdXQ7DQo+ID4gKwlpZiAoIWNmZy0+aXNfc2cgJiYgY2ZnLT50cmFuc2Zlcl9k aXIgPT0gUlRFX0RNQV9ESVJfTUVNX1RPX01FTSkNCj4gew0KPiA+ICsJCWZvciAoaSA9IDA7IGkg PCAobnJfYnVmIC8gbmJfd29ya2VycykgKiBuYl93b3JrZXJzOyBpKyspIHsNCj4gPiArCQkJaWYg KG1lbWNtcChydGVfcGt0bWJ1Zl9tdG9kKHNyY3NbaV0sIHZvaWQgKiksDQo+ID4gKwkJCQkJcnRl X3BrdG1idWZfbXRvZChkc3RzW2ldLCB2b2lkICopLA0KPiA+ICsJCQkJCWNmZy0+YnVmX3NpemUu Y3VyKSAhPSAwKSB7DQo+ID4gKwkJCQlwcmludGYoIkNvcHkgdmFsaWRhdGlvbiBmYWlscyBmb3Ig YnVmZmVyIG51bWJlcg0KPiAlZFxuIiwgaSk7DQo+ID4gKwkJCQlyZXQgPSAtMTsNCj4gPiArCQkJ CWdvdG8gb3V0Ow0KPiA+ICsJCQl9DQo+ID4gKwkJfQ0KPiA+ICsJfSBlbHNlIGlmIChjZmctPmlz X3NnICYmIGNmZy0+dHJhbnNmZXJfZGlyID09DQo+IFJURV9ETUFfRElSX01FTV9UT19NRU0pIHsN Cj4gPiArCQlzaXplX3Qgc3JjX3JlbXN6ID0gYnVmX3NpemUgJSBjZmctPnNyY19wdHJzOw0KPiA+ ICsJCXNpemVfdCBkc3RfcmVtc3ogPSBidWZfc2l6ZSAlIGNmZy0+ZHN0X3B0cnM7DQo+ID4gKwkJ c2l6ZV90IHNyY19zeiA9IGJ1Zl9zaXplIC8gY2ZnLT5zcmNfcHRyczsNCj4gPiArCQlzaXplX3Qg ZHN0X3N6ID0gYnVmX3NpemUgLyBjZmctPmRzdF9wdHJzOw0KPiA+ICsJCXVpbnQ4X3Qgc3JjW2J1 Zl9zaXplXSwgZHN0W2J1Zl9zaXplXTsNCj4gPiArCQl1aW50OF90ICpzYnVmLCAqZGJ1ZiwgKnB0 cjsNCj4gPiArDQo+ID4gKwkJZm9yIChpID0gMDsgaSA8IChucl9idWYgLyBSVEVfTUFYKGNmZy0+ c3JjX3B0cnMsIGNmZy0+ZHN0X3B0cnMpKTsNCj4gaSsrKSB7DQo+ID4gKwkJCXNidWYgPSBzcmM7 DQo+ID4gKwkJCWRidWYgPSBkc3Q7DQo+ID4gKwkJCXB0ciA9IE5VTEw7DQo+ID4gKw0KPiA+ICsJ CQlmb3IgKGogPSAwOyBqIDwgY2ZnLT5zcmNfcHRyczsgaisrKSB7DQo+ID4gKwkJCQlwdHIgPSBy dGVfcGt0bWJ1Zl9tdG9kKHNyY3NbaSAqIGNmZy0+c3JjX3B0cnMNCj4gKyBqXSwgdWludDhfdCAq KTsNCj4gPiArCQkJCW1lbWNweShzYnVmLCBwdHIsIHNyY19zeik7DQo+ID4gKwkJCQlzYnVmICs9 IHNyY19zejsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJaWYgKHNyY19yZW1zeikNCj4gPiAr CQkJCW1lbWNweShzYnVmLCBwdHIgKyBzcmNfc3osIHNyY19yZW1zeik7DQo+ID4gKw0KPiA+ICsJ CQlmb3IgKGogPSAwOyBqIDwgY2ZnLT5kc3RfcHRyczsgaisrKSB7DQo+ID4gKwkJCQlwdHIgPSBy dGVfcGt0bWJ1Zl9tdG9kKGRzdHNbaSAqIGNmZy0+ZHN0X3B0cnMNCj4gKyBqXSwgdWludDhfdCAq KTsNCj4gPiArCQkJCW1lbWNweShkYnVmLCBwdHIsIGRzdF9zeik7DQo+ID4gKwkJCQlkYnVmICs9 IGRzdF9zejsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJaWYgKGRzdF9yZW1zeikNCj4gPiAr CQkJCW1lbWNweShkYnVmLCBwdHIgKyBkc3Rfc3osIGRzdF9yZW1zeik7DQo+ID4gKw0KPiA+ICsJ CQlpZiAobWVtY21wKHNyYywgZHN0LCBidWZfc2l6ZSkgIT0gMCkgew0KPiA+ICsJCQkJcHJpbnRm KCJTRyBDb3B5IHZhbGlkYXRpb24gZmFpbHMgZm9yIGJ1ZmZlcg0KPiBudW1iZXIgJWRcbiIsDQo+ ID4gKwkJCQkJaSAqIGNmZy0+c3JjX3B0cnMpOw0KPiA+ICsJCQkJcmV0ID0gLTE7DQo+ID4gKwkJ CQlnb3RvIG91dDsNCj4gPiArCQkJfQ0KPiANCj4gTm93IEkgZG91YnQgdGhlIHZhbHVlIG9mIHZl cmlmeSwgdGhpcyB2ZXJpZnkgY2FuJ3QgZmluZCB0aGUgbWlkZGxlIHJvdW5kIGNvcHkNCj4gZmFp bHVyZSwNCj4gYmVjYXVzZSBhcyBsb25nIGFzIHRoZSBsYXN0IHJvdW5kIGNvcHkgaXMgc3VjY2Vz c2Z1bCwgdGhlIHZhbGlkYXRpb24gd2lsbCBwYXNzLg0KPiANClZhbGlkYXRpb24gaXMgb24gZW50 aXJlIGJ1ZmZlci4gSWYgYW55IG1pZGRsZSBjb3B5IGlzIGEgZmFpbHVyZSwgZW50aXJlIG1lbWNt cA0Kd291bGQgaGF2ZSBmYWlsZWQuIE9yIGRvIEkgbWlzcyBzb21ldGhpbmcgPw0KDQo+IEFuZCBh ZGRpbmcgdmFsaWRhdGF0aW9uIGluIGV2ZXJ5IHJvdW5kIGNvcHkgd2lsbCBpbXBhY3QgcGVyZm9y bWFuY2UuDQo+IA0KVGhpcyB2YWxpZGF0aW9uIGlzIGp1c3QgYWZ0ZXIgd29ya2VyIGZ1bmN0aW9u IGlzIHN0b3BwZWQgbWVhc3VyaW5nIHBlcmYuDQpIb3cgd291bGQgdGhpcyBpbXBhY3QgcGVyZm9y bWFuY2UgPw0KDQo+IEFsc28gYXBwL3Rlc3RfZG1hZGV2IGFscmVhZHkgdmVyaWZ5IGRhdGEuIHNv IEkgdGhpbmsgd2Ugc2hvdWxkIGRyb3AgdGhlDQo+IHZhbGlkYXRpb24gY29tbWl0Lg0KDQpFdmVu IGluIHNvbWUgY29ybmVyIGNhc2VzIG9yIHVua25vd24gaXNzdWVzLCBjb3B5IHdvdWxkIGhhdmUg ZmFpbGVkDQphbmQgdGFraW5nIHBlcmYgY3ljbGVzIHRoZW4gaXMgbWVhbmluZ2xlc3MuIFRoYXQg aXMgdGhlIHJlYXNvbiwgdGhpcyB2YWxpZGF0aW9uDQppcyBhZGRlZCBhZnRlciBwZXJmIGZ1bmN0 aW9uIGRvaW5nIGl0cyBqb2IuDQoNCj4gDQo+ID4gIAkJfQ0KPiA+ICAJfQ0KPiA+DQo+ID4gQEAg LTU1OCwxMCArNzU5LDggQEAgbWVtX2NvcHlfYmVuY2htYXJrKHN0cnVjdCB0ZXN0X2NvbmZpZ3Vy ZSAqY2ZnLA0KPiBib29sIGlzX2RtYSkNCj4gPiAgCQljYWxjX3Jlc3VsdChidWZfc2l6ZSwgbnJf YnVmLCBuYl93b3JrZXJzLCB0ZXN0X3NlY3MsDQo+ID4gIAkJCWxjb3Jlc1tpXS0+d29ya2VyX2lu Zm8udGVzdF9jcGwsDQo+ID4gIAkJCSZtZW1vcnksICZhdmdfY3ljbGVzLCAmYmFuZHdpZHRoLCAm bW9wcyk7DQo+ID4gLQkJb3V0cHV0X3Jlc3VsdChjZmctPnNjZW5hcmlvX2lkLCBsY29yZXNbaV0t Pmxjb3JlX2lkLA0KPiA+IC0JCQkJCWxjb3Jlc1tpXS0+ZG1hX25hbWUsIGNmZy0NCj4gPnJpbmdf c2l6ZS5jdXIsIGtpY2tfYmF0Y2gsDQo+ID4gLQkJCQkJYXZnX2N5Y2xlcywgYnVmX3NpemUsIG5y X2J1ZiAvDQo+IG5iX3dvcmtlcnMsIG1lbW9yeSwNCj4gPiAtCQkJCQliYW5kd2lkdGgsIG1vcHMs IGlzX2RtYSk7DQo+ID4gKwkJb3V0cHV0X3Jlc3VsdChjZmcsIGxjb3Jlc1tpXSwga2lja19iYXRj aCwgYXZnX2N5Y2xlcywgYnVmX3NpemUsDQo+ID4gKwkJCW5yX2J1ZiAvIG5iX3dvcmtlcnMsIG1l bW9yeSwgYmFuZHdpZHRoLCBtb3BzKTsNCj4gPiAgCQltb3BzX3RvdGFsICs9IG1vcHM7DQo+ID4g IAkJYmFuZHdpZHRoX3RvdGFsICs9IGJhbmR3aWR0aDsNCj4gPiAgCQlhdmdfY3ljbGVzX3RvdGFs ICs9IGF2Z19jeWNsZXM7DQo+ID4gQEAgLTYwNCwxMyArODAzLDIwIEBAIG1lbV9jb3B5X2JlbmNo bWFyayhzdHJ1Y3QgdGVzdF9jb25maWd1cmUNCj4gKmNmZywgYm9vbCBpc19kbWEpDQo+ID4gIAly dGVfbWVtcG9vbF9mcmVlKGRzdF9wb29sKTsNCj4gPiAgCWRzdF9wb29sID0gTlVMTDsNCj4gPg0K PiA+ICsJLyogZnJlZSBzZ2VzIGZvciBtYnVmcyAqLw0KPiA+ICsJcnRlX2ZyZWUoc3JjX3NnZXMp Ow0KPiA+ICsJc3JjX3NnZXMgPSBOVUxMOw0KPiA+ICsNCj4gPiArCXJ0ZV9mcmVlKGRzdF9zZ2Vz KTsNCj4gPiArCWRzdF9zZ2VzID0gTlVMTDsNCj4gPiArDQo+ID4gIAkvKiBmcmVlIHRoZSB3b3Jr ZXIgcGFyYW1ldGVycyAqLw0KPiA+ICAJZm9yIChpID0gMDsgaSA8IG5iX3dvcmtlcnM7IGkrKykg ew0KPiA+ICAJCXJ0ZV9mcmVlKGxjb3Jlc1tpXSk7DQo+ID4gIAkJbGNvcmVzW2ldID0gTlVMTDsN Cj4gPiAgCX0NCj4gPg0KPiA+IC0JaWYgKGlzX2RtYSkgew0KPiA+ICsJaWYgKGNmZy0+aXNfZG1h KSB7DQo+ID4gIAkJZm9yIChpID0gMDsgaSA8IG5iX3dvcmtlcnM7IGkrKykgew0KPiA+ICAJCQlw cmludGYoIlN0b3BwaW5nIGRtYWRldiAlZFxuIiwgbGRtLT5kbWFfaWRzW2ldKTsNCj4gPiAgCQkJ cnRlX2RtYV9zdG9wKGxkbS0+ZG1hX2lkc1tpXSk7DQo+ID4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0 LWRtYS1wZXJmL2NvbmZpZy5pbmkgYi9hcHAvdGVzdC1kbWEtcGVyZi9jb25maWcuaW5pDQo+ID4g aW5kZXggOWM4MjIxMDI1ZS4uMjhmNmM5ZDFkYiAxMDA2NDQNCj4gPiAtLS0gYS9hcHAvdGVzdC1k bWEtcGVyZi9jb25maWcuaW5pDQo+ID4gKysrIGIvYXBwL3Rlc3QtZG1hLXBlcmYvY29uZmlnLmlu aQ0KPiA+IEBAIC0zOCw2ICszOCwxNCBAQA0KPiA+DQo+ID4gIDsgInNraXAiIFRvIHNraXAgYSB0 ZXN0LWNhc2Ugc2V0IHNraXAgdG8gMS4NCj4gDQo+IFBsZWFzZSBwbGFjZSBoZXNlIHBhdGNoc2V0 IG5ldyBhZGQgZW50cnlzJyBkZXNjcmlwdGlvbnMgYWJvdmUgdGhlDQo+ICI7IFRvIHNwZWNpZnkg YSBjb25maWd1cmF0aW9uIGZpbGUsIHVzZSB0aGUgIi0tY29uZmlnIiBmbGFnIGZvbGxvd2VkIGJ5 IHRoZSBwYXRoIHRvDQo+IHRoZSBmaWxlLiINCj4gDQo+IGJlY2F1c2Ugb3JpZ2luYWwgY29uZmln LmluaSwgZmlzdCBpcyBwYXJhbWV0ZXJzIGRlc2NyaXB0b3IsIGFuZCB0aGVuIHByb2dyYW0NCj4g YXJnbWVudCBkZXNjcmlwdG9yLCBhbmQgbGFzdCB3YXMgZXhhbXBsZS4NCj4gDQpBY2suDQo+ID4N Cj4gPiArOyBQYXJhbWV0ZXJzIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIFNHIGNvcHk6DQo+IA0KPiBQ YXJhbWV0ZXJzIGZvciBETUEgc2NhdHRlci1nYXRoZXIgbWVtb3J5IGNvcHk6DQo+IA0KQWNrLg0K PiA+ICs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gDQo+IFBs ZWFzZSByZW1vdmUgdGhpcyBsaW5lDQo+IA0KQWNrLg0KPiA+ICs7ICJkbWFfc3JjX3NnZSIgZGVu b3RlcyBudW1iZXIgb2Ygc291cmNlIHNlZ21lbnRzLg0KPiA+ICs7ICJkbWFfZHN0X3NnZSIgZGVu b3RlcyBudW1iZXIgb2YgZGVzdGluYXRpb24gc2VnbWVudHMuDQo+ID4gKzsNCj4gPiArOyBGb3Ig U0cgY29weSwgYm90aCB0aGUgcGFyYW1ldGVycyBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIHRo ZXkgYXJlIHZhbGlkDQo+IG9ubHkNCj4gPiArOyB3aGVuIHR5cGUgaXMgRE1BX01FTV9DT1BZLg0K PiANCj4gRm9yIERNQSBzY2F0dGVyLWdhdGhlciBtZW1vcnkgY29weSwgdGhlIHBhcmFtZXRlcnMg bmVlZCB0byBiZSBjb25maWd1cmVkDQo+IGFuZCB0aGV5IGFyZSB2YWxpZCBvbmx5DQo+IHdoZW4g dHlwZSBpcyBETUFfTUVNX0NPUFkuDQo+IA0KQWNrLg0KPiA+ICs7DQo+ID4gIDsgUGFyYW1ldGVy cyB0byBiZSBjb25maWd1cmVkIGZvciBkYXRhIHRyYW5zZmVycyBmcm9tICJtZW0gdG8gZGV2IiBh bmQNCj4gImRldiB0byBtZW0iOg0KPiA+ICA7DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PT09PT09 PT09DQo+IA0KPiBQbGVhc2UgcmVtb3ZlIHRoaXMgbGluZQ0KPiANCj4gQXMgYW5vdGhlciBjb21t aXQgIlJlOiBbUEFUQ0ggdjJdIGFwcC9kbWEtcGVyZjogc3VwcG9ydCBiaS1kaXJlY3Rpb25hbA0K PiB0cmFuc2ZlciIncyByZXZpZXcgZmVlZGJhY2ssDQo+IHRoZXNlIGRlc2NyaXB0b3Igc2hvdWxk IHBsYWNlIGFmdGVyDQo+ICINCj4gOyBUbyB1c2UgRE1BIGZvciBhIHRlc3QsIHBsZWFzZSBzcGVj aWZ5IHRoZSAibGNvcmVfZG1hIiBwYXJhbWV0ZXIuDQo+IDsgSWYgeW91IGhhdmUgYWxyZWFkeSBz ZXQgdGhlICItbCIgYW5kICItYSIgcGFyYW1ldGVycyB1c2luZyBFQUwsDQo+IDsgbWFrZSBzdXJl IHRoYXQgdGhlIHZhbHVlIG9mICJsY29yZV9kbWEiIGZhbGxzIHdpdGhpbiB0aGVpciByYW5nZSBv ZiB0aGUgdmFsdWVzLg0KPiA7IFdlIGhhdmUgdG8gZW5zdXJlIGEgMToxIG1hcHBpbmcgYmV0d2Vl biB0aGUgY29yZSBhbmQgRE1BIGRldmljZS4NCj4gIg0KPiANCj4gDQo+ID4gIDsgImRpcmVjdGlv biIgZGVub3RlcyB0aGUgZGlyZWN0aW9uIG9mIGRhdGEgdHJhbnNmZXIuIEl0IGNhbiB0YWtlIDMg dmFsdWVzOg0KPiA+IEBAIC02OSw2ICs3NywyMSBAQCBsY29yZV9kbWE9bGNvcmUxMEAwMDAwOjAw OjA0LjIsDQo+IGxjb3JlMTFAMDAwMDowMDowNC4zDQo+ID4gIGVhbF9hcmdzPS0taW4tbWVtb3J5 IC0tZmlsZS1wcmVmaXg9dGVzdA0KPiA+DQo+ID4gIFtjYXNlMl0NCj4gPiArdHlwZT1ETUFfTUVN X0NPUFkNCj4gPiArbWVtX3NpemU9MTANCj4gPiArYnVmX3NpemU9NjQsODE5MiwyLE1VTA0KPiA+ ICtkbWFfcmluZ19zaXplPTEwMjQNCj4gPiArZG1hX3NyY19zZ2U9NA0KPiA+ICtkbWFfZHN0X3Nn ZT0xDQo+ID4gK2tpY2tfYmF0Y2g9MzINCj4gPiArc3JjX251bWFfbm9kZT0wDQo+ID4gK2RzdF9u dW1hX25vZGU9MA0KPiA+ICtjYWNoZV9mbHVzaD0wDQo+ID4gK3Rlc3Rfc2Vjb25kcz0yDQo+ID4g K2xjb3JlX2RtYT1sY29yZTEwQDAwMDA6MDA6MDQuMiwgbGNvcmUxMUAwMDAwOjAwOjA0LjMNCj4g PiArZWFsX2FyZ3M9LS1pbi1tZW1vcnkgLS1maWxlLXByZWZpeD10ZXN0DQo+ID4gKw0KPiA+ICtb Y2FzZTNdDQo+ID4gIHNraXA9MQ0KPiA+ICB0eXBlPURNQV9NRU1fQ09QWQ0KPiA+ICBkaXJlY3Rp b249ZGV2Mm1lbQ0KPiA+IEBAIC04NCw3ICsxMDcsNyBAQCB0ZXN0X3NlY29uZHM9Mg0KPiA+ICBs Y29yZV9kbWE9bGNvcmUxMEAwMDAwOjAwOjA0LjIsIGxjb3JlMTFAMDAwMDowMDowNC4zDQo+ID4g IGVhbF9hcmdzPS0taW4tbWVtb3J5IC0tZmlsZS1wcmVmaXg9dGVzdA0KPiA+DQo+ID4gLVtjYXNl M10NCj4gPiArW2Nhc2U0XQ0KPiA+ICB0eXBlPUNQVV9NRU1fQ09QWQ0KPiA+ICBtZW1fc2l6ZT0x MA0KPiA+ICBidWZfc2l6ZT02NCw4MTkyLDIsTVVMDQo+ID4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0 LWRtYS1wZXJmL21haW4uYyBiL2FwcC90ZXN0LWRtYS1wZXJmL21haW4uYw0KPiA+IGluZGV4IGRm MDViY2Q3ZGYuLmEyN2U0Yzk0MjkgMTAwNjQ0DQo+ID4gLS0tIGEvYXBwL3Rlc3QtZG1hLXBlcmYv bWFpbi5jDQo+ID4gKysrIGIvYXBwL3Rlc3QtZG1hLXBlcmYvbWFpbi5jDQo+ID4gQEAgLTEwOCwx MCArMTA4LDggQEAgcnVuX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdF9jb25maWd1cmUgKmNhc2VfY2Zn KQ0KPiA+DQo+ID4gIAlzd2l0Y2ggKGNhc2VfY2ZnLT50ZXN0X3R5cGUpIHsNCj4gPiAgCWNhc2Ug VEVTVF9UWVBFX0RNQV9NRU1fQ09QWToNCj4gPiAtCQlyZXQgPSBtZW1fY29weV9iZW5jaG1hcmso Y2FzZV9jZmcsIHRydWUpOw0KPiA+IC0JCWJyZWFrOw0KPiA+ICAJY2FzZSBURVNUX1RZUEVfQ1BV X01FTV9DT1BZOg0KPiA+IC0JCXJldCA9IG1lbV9jb3B5X2JlbmNobWFyayhjYXNlX2NmZywgZmFs c2UpOw0KPiA+ICsJCXJldCA9IG1lbV9jb3B5X2JlbmNobWFyayhjYXNlX2NmZyk7DQo+ID4gIAkJ YnJlYWs7DQo+ID4gIAlkZWZhdWx0Og0KPiA+ICAJCXByaW50ZigiVW5rbm93biB0ZXN0IHR5cGUu ICVzXG4iLCBjYXNlX2NmZy0+dGVzdF90eXBlX3N0cik7DQo+ID4gQEAgLTM2NSw3ICszNjMsOCBA QCBsb2FkX2NvbmZpZ3MoY29uc3QgY2hhciAqcGF0aCkNCj4gPiAgCWNvbnN0IGNoYXIgKmNhc2Vf dHlwZTsNCj4gPiAgCWNvbnN0IGNoYXIgKnRyYW5zZmVyX2RpcjsNCj4gPiAgCWNvbnN0IGNoYXIg Kmxjb3JlX2RtYTsNCj4gPiAtCWNvbnN0IGNoYXIgKm1lbV9zaXplX3N0ciwgKmJ1Zl9zaXplX3N0 ciwgKnJpbmdfc2l6ZV9zdHIsDQo+ICpraWNrX2JhdGNoX3N0cjsNCj4gPiArCWNvbnN0IGNoYXIg Km1lbV9zaXplX3N0ciwgKmJ1Zl9zaXplX3N0ciwgKnJpbmdfc2l6ZV9zdHIsDQo+ICpraWNrX2Jh dGNoX3N0ciwNCj4gPiArCQkqc3JjX3B0cnNfc3RyLCAqZHN0X3B0cnNfc3RyOw0KPiA+ICAJY29u c3QgY2hhciAqc2tpcDsNCj4gPiAgCXN0cnVjdCBydGVfa3ZhcmdzICprdmxpc3Q7DQo+ID4gIAlj b25zdCBjaGFyICp2Y2hhbl9kZXY7DQo+ID4gQEAgLTQ2Nyw2ICs0NjYsNyBAQCBsb2FkX2NvbmZp Z3MoY29uc3QgY2hhciAqcGF0aCkNCj4gPiAgCQkJcnRlX2t2YXJnc19mcmVlKGt2bGlzdCk7DQo+ ID4gIAkJfQ0KPiA+DQo+ID4gKwkJdGVzdF9jYXNlLT5pc19kbWEgPSBpc19kbWE7DQo+ID4gIAkJ dGVzdF9jYXNlLT5zcmNfbnVtYV9ub2RlID0NCj4gKGludClhdG9pKHJ0ZV9jZmdmaWxlX2dldF9l bnRyeShjZmdmaWxlLA0KPiA+DQo+IAlzZWN0aW9uX25hbWUsICJzcmNfbnVtYV9ub2RlIikpOw0K PiA+ICAJCXRlc3RfY2FzZS0+ZHN0X251bWFfbm9kZSA9DQo+IChpbnQpYXRvaShydGVfY2ZnZmls ZV9nZXRfZW50cnkoY2ZnZmlsZSwNCj4gPiBAQCAtNTAxLDYgKzUwMSwzMiBAQCBsb2FkX2NvbmZp Z3MoY29uc3QgY2hhciAqcGF0aCkNCj4gPiAgCQkJfSBlbHNlIGlmIChhcmdzX25yID09IDQpDQo+ ID4gIAkJCQluYl92cCsrOw0KPiA+DQo+ID4gKwkJCXNyY19wdHJzX3N0ciA9IHJ0ZV9jZmdmaWxl X2dldF9lbnRyeShjZmdmaWxlLA0KPiBzZWN0aW9uX25hbWUsDQo+ID4gKw0KPiAJImRtYV9zcmNf c2dlIik7DQo+ID4gKwkJCWlmIChzcmNfcHRyc19zdHIgIT0gTlVMTCkgew0KPiA+ICsJCQkJdGVz dF9jYXNlLT5zcmNfcHRycyA9DQo+IChpbnQpYXRvaShydGVfY2ZnZmlsZV9nZXRfZW50cnkoY2Zn ZmlsZSwNCj4gPiArDQo+IAlzZWN0aW9uX25hbWUsICJkbWFfc3JjX3NnZSIpKTsNCj4gPiArCQkJ fQ0KPiA+ICsNCj4gPiArCQkJZHN0X3B0cnNfc3RyID0gcnRlX2NmZ2ZpbGVfZ2V0X2VudHJ5KGNm Z2ZpbGUsDQo+IHNlY3Rpb25fbmFtZSwNCj4gPiArDQo+IAkiZG1hX2RzdF9zZ2UiKTsNCj4gPiAr CQkJaWYgKGRzdF9wdHJzX3N0ciAhPSBOVUxMKSB7DQo+ID4gKwkJCQl0ZXN0X2Nhc2UtPmRzdF9w dHJzID0NCj4gKGludClhdG9pKHJ0ZV9jZmdmaWxlX2dldF9lbnRyeShjZmdmaWxlLA0KPiA+ICsN Cj4gCXNlY3Rpb25fbmFtZSwgImRtYV9kc3Rfc2dlIikpOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ ICsJCQlpZiAoKHNyY19wdHJzX3N0ciAhPSBOVUxMICYmIGRzdF9wdHJzX3N0ciA9PSBOVUxMKSB8 fA0KPiA+ICsJCQkgICAgKHNyY19wdHJzX3N0ciA9PSBOVUxMICYmIGRzdF9wdHJzX3N0ciAhPSBO VUxMKSkgew0KPiANCj4gUGxlYXNlIGFsc28gY2hlY2sgdGVzdF9jYXNlLT5zcmNfcHRycyBhbmQg dGVzdF9jYXNlLT5kc3RfcHRycyB2YWxpZCwgbWFrZSBzdXJlDQo+IHRoZXJlIGFyZSA+MSBhbmQg PD1VSU5UMTZfTUFYDQoNCkF0IHByZXNlbnQsIHRoaXMgaXMgdWludDhfdC4gRG8gd2UgbmVlZCBp dCBtb3JlIHRoYW4gVUlOVDhfTUFYID8NCg0KPiANCj4gPiArCQkJCXByaW50ZigicGFyc2UgZG1h X3NyY19zZ2UsIGRtYV9kc3Rfc2dlIGVycm9yDQo+IGluIGNhc2UgJWQuXG4iLA0KPiA+ICsJCQkJ CWkgKyAxKTsNCj4gPiArCQkJCXRlc3RfY2FzZS0+aXNfdmFsaWQgPSBmYWxzZTsNCj4gPiArCQkJ CWNvbnRpbnVlOw0KPiA+ICsJCQl9IGVsc2UgaWYgKHNyY19wdHJzX3N0ciAhPSBOVUxMICYmIGRz dF9wdHJzX3N0ciAhPSBOVUxMKQ0KPiB7DQo+ID4gKwkJCQl0ZXN0X2Nhc2UtPmlzX3NnID0gdHJ1 ZTsNCj4gPiArCQkJfSBlbHNlIHsNCj4gPiArCQkJCXRlc3RfY2FzZS0+aXNfc2cgPSBmYWxzZTsN Cj4gDQo+IHRoZSBhYm92ZSBjb3VsZCBzaW1wbGUgYnk6IHRlc3RfY2FzZS0+aXNfc2cgPSAoc3Jj X3B0cnNfc3RyICE9IE5VTEwgJiYNCj4gZHN0X3B0cnNfc3RyICE9IE5VTEwpOw0KPiANCkFkZGVk IGNoZWNrIGZvciBuYl8gdmFsaWRhdGlvbiBoZXJlLiBQbGVhc2UgY2hlY2sgaW4gbmV4dCB2ZXJz aW9uIG9mIHBhdGNoLg0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICAJCQlraWNrX2JhdGNoX3N0ciA9 IHJ0ZV9jZmdmaWxlX2dldF9lbnRyeShjZmdmaWxlLA0KPiBzZWN0aW9uX25hbWUsICJraWNrX2Jh dGNoIik7DQo+ID4gIAkJCWFyZ3NfbnIgPSBwYXJzZV9lbnRyeShraWNrX2JhdGNoX3N0ciwgJnRl c3RfY2FzZS0NCj4gPmtpY2tfYmF0Y2gpOw0KPiA+ICAJCQlpZiAoYXJnc19uciA8IDApIHsNCj4g PiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtZG1hLXBlcmYvbWFpbi5oIGIvYXBwL3Rlc3QtZG1hLXBl cmYvbWFpbi5oDQo+ID4gaW5kZXggMTEyM2U3NTI0YS4uYmFmMTQ5YjcyYiAxMDA2NDQNCj4gPiAt LS0gYS9hcHAvdGVzdC1kbWEtcGVyZi9tYWluLmgNCj4gPiArKysgYi9hcHAvdGVzdC1kbWEtcGVy Zi9tYWluLmgNCj4gPiBAQCAtNTMsMTEgKzUzLDE0IEBAIHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSB7 DQo+ID4gIAl1aW50MTZfdCBkc3RfbnVtYV9ub2RlOw0KPiA+ICAJdWludDE2X3Qgb3Bjb2RlOw0K PiA+ICAJYm9vbCBpc19kbWE7DQo+ID4gKwlib29sIGlzX3NnOw0KPiA+ICAJc3RydWN0IGxjb3Jl X2RtYV9tYXBfdCBsY29yZV9kbWFfbWFwOw0KPiA+ICAJc3RydWN0IHRlc3RfY29uZmlndXJlX2Vu dHJ5IG1lbV9zaXplOw0KPiA+ICAJc3RydWN0IHRlc3RfY29uZmlndXJlX2VudHJ5IGJ1Zl9zaXpl Ow0KPiA+ICAJc3RydWN0IHRlc3RfY29uZmlndXJlX2VudHJ5IHJpbmdfc2l6ZTsNCj4gPiAgCXN0 cnVjdCB0ZXN0X2NvbmZpZ3VyZV9lbnRyeSBraWNrX2JhdGNoOw0KPiA+ICsJdWludDhfdCBzcmNf cHRyczsNCj4gPiArCXVpbnQ4X3QgZHN0X3B0cnM7DQo+ID4gIAl1aW50OF90IGNhY2hlX2ZsdXNo Ow0KPiA+ICAJdWludDMyX3QgbnJfYnVmOw0KPiA+ICAJdWludDE2X3QgdGVzdF9zZWNzOw0KPiA+ IEBAIC02Niw2ICs2OSw2IEBAIHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSB7DQo+ID4gIAlzdHJ1Y3Qg dGVzdF92Y2hhbl9kZXZfY29uZmlnIHZjaGFuX2RldjsNCj4gPiAgfTsNCj4gPg0KPiA+IC1pbnQg bWVtX2NvcHlfYmVuY2htYXJrKHN0cnVjdCB0ZXN0X2NvbmZpZ3VyZSAqY2ZnLCBib29sIGlzX2Rt YSk7DQo+ID4gK2ludCBtZW1fY29weV9iZW5jaG1hcmsoc3RydWN0IHRlc3RfY29uZmlndXJlICpj ZmcpOw0KPiA+DQo+ID4gICNlbmRpZiAvKiBNQUlOX0ggKi8NCj4gPg0KDQpUaGFuayB5b3UgZm9y IHlvdXIgcmV2aWV3LiBQbGVhc2UgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNoYW5n ZXMNCmFuZCBJIGhvcGUgbmV4dCB2ZXJzaW9uIGdvZXMgdGhyb3VnaCDwn5iKDQoNClJlZ2FyZHMs DQpHb3dyaXNoYW5rYXINCg==