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 8AC6DA0032; Mon, 11 Jul 2022 12:53:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 482F540684; Mon, 11 Jul 2022 12:53:30 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2073.outbound.protection.outlook.com [40.107.21.73]) by mails.dpdk.org (Postfix) with ESMTP id 8429340223; Mon, 11 Jul 2022 12:53:28 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rfg50C2cZwTT4r8gh9sq0jJx/wC0iT0zSA28Hqf3wK3bQDoyvKS4QOsIbNZxPBHUXdqO+e4flLn1ETdmCAdSBimKb+FG6XeyFcnCqsfWpvIaXoZ5UbhhexBqef6ZIg8oyPiWiaLIwEwuoFkXHWoSbw6dS7IN2Cas/xR9s/82mR0KKIvGhu46y2fzX8zpwzfVdYsU+/MA95DVCfUVS7pN4wsDbtdwKgzEMl54DboPYOuK+OAbXndnYDsuyiwZSr20C7dds2KDr5tOcIlY50rSqvWJXBR3jZXm9KhMKRsjNmfSvn5kcHCURWY1uiksU/fYz1idtBXRFBCApMcyIP2c+A== 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=6fvKnL1L9S1+4eHWLyW3zzsoXlZRHotVqx8o+plEbo8=; b=GZQmz0H26C6GTl2wZBci49wIoEQlfGNytGbFd6zbGuQKwKCZKdZ/FhTwH3yf7exG9u7dju6TjBTvGHlphBXYosXuqCcUmFSw6Pvnf5MS8lXyjwaxKRS/gYPzFScKc/j95yW0ob5PPruT9bUM7N9rOOfufyqOISN34Vc3w4zqItplA8uf6M17LZ+SheN5sIOUDRlqkTnKddDE0bYO/kj7UW0Y+5oR2V62XqUbQSiY2INz9W3Oqjzt17gZGxhVs1Zdo0SatOexulxhMBkaeFv/zmH1CbNgpfgIsWAvDHhLRkinaH/bmSROnugAeDi5CAORIZhrxOtaeSQ2FfbZjtGsdw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6fvKnL1L9S1+4eHWLyW3zzsoXlZRHotVqx8o+plEbo8=; b=iILYGSnChXvt/marzlcVSkTospHXkLAtU1iYmTJIkiYAVX/Oz/ukkFwVQFOXA6uJO3BBriHQp/dhsshK3BmLDvgIRLpCO2+tpBNH7s3BWSCJDP2uiqxEEJsRZhdCPtErbO3Wp/+qWzgHuGAc3CBO1O6NlDg/TmJjUGGaxeWQx/4= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by AM0PR07MB6450.eurprd07.prod.outlook.com (2603:10a6:20b:15e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.11; Mon, 11 Jul 2022 10:53:27 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::45fc:aa82:15fd:875f]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::45fc:aa82:15fd:875f%7]) with mapi id 15.20.5417.023; Mon, 11 Jul 2022 10:53:27 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: Olivier Matz CC: Emil Berg , "bruce.richardson@intel.com" , "stephen@networkplumber.org" , "stable@dpdk.org" , "bugzilla@dpdk.org" , "dev@dpdk.org" , Onar Olsen , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= Subject: Re: [PATCH v2 2/2] net: have checksum routines accept unaligned data Thread-Topic: [PATCH v2 2/2] net: have checksum routines accept unaligned data Thread-Index: AQHYksp8+PgObQjM1EmdC1vwmwcmvq148nQAgAAQ3gA= Date: Mon, 11 Jul 2022 10:53:27 +0000 Message-ID: <466bcfdd-3eb0-839c-0689-52c2e269d195@ericsson.com> References: <6839721a-8050-0e11-0c66-0f735ec8c56d@ericsson.com> <20220708125608.24532-1-mattias.ronnblom@ericsson.com> <20220708125608.24532-2-mattias.ronnblom@ericsson.com> In-Reply-To: Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ericsson.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 77e9b557-37c9-4e9e-2fdf-08da632b95cc x-ms-traffictypediagnostic: AM0PR07MB6450:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: LiOi7+Gqt6nZHXVfC/zMoj+gTi2u4TNSlI0DdZB/B+3sge4HtTKyUmt6Ne6qk3hyruNVnMYWzUVpoNEO4+mqMHfXQk38C16DO9niTsHNhDxCWcOJQvYkH2AdLSWOGkl8ygmHjEXVoP9ibWU0OEl5nynxx7e1Bb4wVIwser4zIjyADrTFP/RmqUj2L42L9ExNV00nGKV7b/Sl5dfPyJ9mgY5NQXTO7edDGtig0myjlPYnDyMOpTqfcvBuOC/6OgKmj2CJqrPmeXObTAw+cVh1Pu6qtIcjligrLGJFkDqzzlMUWuYbbkx1d3zSkDyicD3ErH2Gs09D01fVRonS+RAnUi8cc+DSe6qddoT2LmRYDTGnc6By5yEJIzU5413oTu6EWI1jqSOO88Ov0bN0QX81+x/0pN0iqYkq6upG6LcQC0XxQEiPKw5gpcD6xV9PRBNSyN2gL+XTjK1lx/9uQ7b55wrenOdUCGvGKDH6Dpy/WdRl0TChLopuurKHA5HwAsuyB5XrgPijeU8c/6DQ/XIHkXcDngVTC0shC9W4K2th+Cor13b5/mA1iSDI4jG4e6AU/lILSaa7Wo68mWpQKIPfT2nKJg/XbhptprAsVrn0A682KPvV8UaB1Io6CEXHDxWj3XmxgJ8103wXXXllaCs7N0LTaAZ/Avnc3GXGO4dHqfvD5ZwJ/4GDYNYO4IgbTe/h3s0+OIBsXl8kUaDolB+4EYnV1fH56CZ3YbfsRyH9SJqInN3qdeqUeXC/arLo+PAJiv7s+hJxyyH8sdMthGIfT+cfzG17TNO0AQo2bm8bsG7reso1OLRnoobe4gG3HT9V5VCxLZmdViVAN9ieRunAZhfhktcUL3fhT9jlYs98M2llB+bVel2nSWF/NgLndm4w x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR07MB5978.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(396003)(376002)(136003)(366004)(39860400002)(8936002)(478600001)(186003)(5660300002)(122000001)(71200400001)(82960400001)(66574015)(6486002)(53546011)(2616005)(26005)(41300700001)(2906002)(86362001)(83380400001)(6512007)(31696002)(6506007)(38070700005)(38100700002)(76116006)(66556008)(66446008)(91956017)(66476007)(31686004)(316002)(66946007)(64756008)(6916009)(85202003)(8676002)(4326008)(36756003)(85182001)(54906003)(43740500002)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ejZqbE1wdUZpc1kyNmpwZWs3YVdPaU5wTjdZRklUeGVTVEIrQjZHQU5FN0ZZ?= =?utf-8?B?Mm9kemUxV015aWFpM1UxUFNoenFSOXpZWlVsaHBqYURsQUtnZjE1T2VQZEpv?= =?utf-8?B?ajlzaVFqU3N1YkZuSlJVTlU5Rkx6UGlBWnNSNHpPTWIyRHdTVXN3d2VXOEZT?= =?utf-8?B?Z3NRd3laV3FUeFl1VDIxR3orUHUybE5iOWJtamQxYnFEbjRhOUkrTmNqOFdR?= =?utf-8?B?U0ozT2ZzM2x2Q1FMenlHdXZEUW8yNitScXBmaDBVM2dXbWxGT255c3Nld3lN?= =?utf-8?B?Wkt6UUdFcE9mZVdUNG9qVGFWSjR0czZlRGFPNThYM2M0NC9HNytvWGFhNE5K?= =?utf-8?B?eDBiUk9KU2s2S0c1ZmFpREZIL1JVcTNWdUZZbjRobWRVKzhoVWtYN010cVpG?= =?utf-8?B?ek1nRlU3OWJhRmJDaVpGN2lzbGtTbWFvaHVlRklBc0pieE1PeW9HUVloR3Fo?= =?utf-8?B?NklzYW55ODFWU3krZDR4WHVIWFFXRHNJUTVJMHJVZHdYbE5Md1pxbzNEVzV4?= =?utf-8?B?eVhtV2lJUUxRL3hHTFlLVklVZUVVN09UTURwRStCbDZZNGJRcHptaU9ybGRi?= =?utf-8?B?UDh2QXRWa0Y2Wlo5empiKzBEU2haUGdheFBpVERhcWxGSnVseW5zclpQVFRL?= =?utf-8?B?c1M3VFN3VmNUbk1jdCs1Qnh2NlpTSEllbFRmSEFwYitwbGhJaEpQbHlQakw3?= =?utf-8?B?U2VyalhGWHZVUkdBQkQySGVKRGtSbGdCRDNhM3l3cjBLZXdYKzMzVGlaQVBs?= =?utf-8?B?aVg3SkgxRlNYNTdhZHJjdUlTRUhHVWdrUUFva0VOS2ZkeG5RbzVNb2Z1VEdo?= =?utf-8?B?Rk9ybTVUZm0zUWlCd0N6RzZaTlNpZ0M4ZGJZUEh1dC9SNVo4QUdycHVDMlpr?= =?utf-8?B?V21HKzY2QXlsd3U0SENQVzIxWGhOdE5zMTNLWDgzakN6VW5LSWRuVWh6NGtp?= =?utf-8?B?Wmp5eFJaL1pjaE1GMFZtNDJLYlZaQWZkamN0Q2cvMUNhRXExRzBEeS9lc2F1?= =?utf-8?B?a01PR2FscUpKSld2dEtycUVia2Q2VjhSU05KRDZqcFhwcWF2MDFmVlBUV0Qx?= =?utf-8?B?ckFnTURNTVJ1ZVV5WlNFVTdSaVhrQi9Cbm1BQnI0Z1FqNFFremIzWXNoNUNj?= =?utf-8?B?aEVwSmc3cDRwWkRvaHR4WHhHbmg0OXBtRFR0NEVabllGUUtsa2JWemdUdlFh?= =?utf-8?B?U2N2dmVnNnZPU0swQ3VObkNQbjdlS2lScm50Y05BWE5BTnhQaWhCNldEZnJQ?= =?utf-8?B?ZDB5cjcxQ2JtKzY5cVhOd3FJOVBHMS9MV2hLWHJsaXU5Rlc0ZmY1enpEMEEw?= =?utf-8?B?ZEdiMVJvT0ZNNjM2Z2hEMnRrbFVSdVMxa0NGYTRLSVkzMWNBTGhPbFlYalp4?= =?utf-8?B?QjRBWWZuUEhCNysvdm1JMmVmSkQvblBaWWtTQ3ZhbDVhYmRlN2N2cEJrRFRh?= =?utf-8?B?S2pSM0lhVWQ1SEU5M3ZRUXo5RGFLT3p0S1BwcjMvRnVSNktPSmprdDFnRE44?= =?utf-8?B?dXN0VlJPdGR1Q0RMR2lVNklLM05NdGVQK2xSa3NaVGZvYmZUa1Myb0c5UHp6?= =?utf-8?B?aG43bmRLRWc4azlHMFZLT2NwTUkyNWM3anpKaXpHN0dKL01ZZnRnNnlNNENT?= =?utf-8?B?L3pneWlELzlIK2gwQjY5a2hsN283cTUzZHlLU3R5Wis5T2hQb05hWmNjaXVi?= =?utf-8?B?SklHMWF4cTJrL3RDVUV4aGcxbTI3ZHZpMDhJek01K005NlkvUFhuK29nd1Rr?= =?utf-8?B?TzNRVmVOeG1xczdHQW1ZODNkSVVIMVNXaktYbEJ2QWNpcVFIT0hZU1BkY1Iv?= =?utf-8?B?OXFnMkpBZWk3cVV5OXEvN1FCdzZyUkx3bnpsMUFmR2xIcittTE9MS0hLaERl?= =?utf-8?B?cXMxS1NtSWhHN2VMRXVLeFpjd1BCcXlOYStLRzZIM0o4Wk5NVTFOZ0tHVnVj?= =?utf-8?B?QTZZQ1VicklQd2RtTG1PWURhR21tOC9XOW5jdTZoZkVCV1hWY2JWTWQ2VWFY?= =?utf-8?B?ZlJDVTBmeGdXZFJuR1FYRURnTGhDU0hMVFRhZmpXem9RaVJEQmt0Yjg4amlt?= =?utf-8?B?OHlEdmRzNmtIMkFBQjVMQlg3K2hkR1lmeVlsMjc5Wk1TNU0xL2d0Q2VNY2xN?= =?utf-8?B?QWE0NFZIYVRYb3RSdWlCYlhPWVd4MStPenc3ME9DbzIrQ3hzdWJYTE4zQWdG?= =?utf-8?B?M1E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB7PR07MB5978.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77e9b557-37c9-4e9e-2fdf-08da632b95cc X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jul 2022 10:53:27.4120 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Qv+6+aomFMYVPfiXaWOTLiCtZ+Bye1czJpJrtXDD86iH160LXMkhdR070Eiw2DyvSbcLbe86CM8HbA6SNypOovYCXclkeX2lNXLCVbSnIhc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR07MB6450 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 T24gMjAyMi0wNy0xMSAxMTo1MywgT2xpdmllciBNYXR6IHdyb3RlOg0KPiBIaSwNCj4gDQo+IE9u IEZyaSwgSnVsIDA4LCAyMDIyIGF0IDAyOjU2OjA4UE0gKzAyMDAsIE1hdHRpYXMgUsO2bm5ibG9t IHdyb3RlOg0KPj4gX19ydGVfcmF3X2Nrc3VtKCkgKHVzZWQgYnkgcnRlX3Jhd19ja3N1bSgpIGFt b25nIG90aGVycykgYWNjZXNzZWQgaXRzDQo+PiBkYXRhIHRocm91Z2ggYW4gdWludDE2X3QgcG9p bnRlciwgd2hpY2ggYWxsb3dlZCB0aGUgY29tcGlsZXIgdG8gYXNzdW1lDQo+PiB0aGUgZGF0YSB3 YXMgMTYtYml0IGFsaWduZWQuIFRoaXMgaW4gdHVybiB3b3VsZCwgd2l0aCBjZXJ0YWluDQo+PiBh cmNoaXRlY3R1cmVzIGFuZCBjb21waWxlciBmbGFnIGNvbWJpbmF0aW9ucywgcmVzdWx0IGluIGNv ZGUgd2l0aCBTSU1EDQo+PiBsb2FkIG9yIHN0b3JlIGluc3RydWN0aW9ucyB3aXRoIHJlc3RyaWN0 aW9ucyBvbiBkYXRhIGFsaWdubWVudC4NCj4+DQo+PiBUaGlzIHBhdGNoIGtlZXBzIHRoZSBvbGQg YWxnb3JpdGhtLCBidXQgZGF0YSBpcyByZWFkIHVzaW5nIG1lbWNweSgpDQo+PiBpbnN0ZWFkIG9m IGRpcmVjdCBwb2ludGVyIGFjY2VzcywgZm9yY2luZyB0aGUgY29tcGlsZXIgdG8gYWx3YXlzDQo+ PiBnZW5lcmF0ZSBjb2RlIHRoYXQgaGFuZGxlcyB1bmFsaWduZWQgaW5wdXQuIFRoZSBfX21heV9h bGlhc19fIEdDQw0KPj4gYXR0cmlidXRlIGlzIG5vIGxvbmdlciBuZWVkZWQuDQo+Pg0KPj4gVGhl IGRhdGEgb24gd2hpY2ggdGhlIEludGVybmV0IGNoZWNrc3VtIGZ1bmN0aW9ucyBvcGVyYXRlcyBh cmUgYWxtb3N0DQo+PiBhbHdheXMgMTYtYml0IGFsaWduZWQsIGJ1dCB0aGVyZSBhcmUgZXhjZXB0 aW9ucy4gSW4gcGFydGljdWxhciwgdGhlDQo+PiBQRENQIHByb3RvY29sIGhlYWRlciBtYXkgKGxp dGVyYWxseSkgaGF2ZSBhbiBvZGQgc2l6ZS4NCj4+DQo+PiBQZXJmb3JtYW5jZSBpbXBhY3Qgc2Vl bXMgdG8gcmFuZ2UgZnJvbSBub25lIHRvIGEgdmVyeSBzbGlnaHQNCj4+IHJlZ3Jlc3Npb24uDQo+ Pg0KPj4gQnVnemlsbGEgSUQ6IDEwMzUNCj4+IENjOiBzdGFibGVAZHBkay5vcmcNCj4+DQo+PiAt LS0NCj4gDQo+IFVzaW5nIG1lbWNweSgpIGxvb2tzIHRvIGJlIGEgZ29vZCBzb2x1dGlvbiBmaXgg dGhlIGlzc3VlLCB3aGlsZSBhdm9pZGluZyBhDQo+IGJyYW5jaCBhbmQgdGhlIF9fbWF5X2FsaWFz X18uDQo+IA0KPiBJIGp1c3QgaGF2ZSBvbmUgbWlub3IgY29tbWVudCBiZWxvdy4NCj4gDQo+Pg0K Pj4gdjI6DQo+PiAgICAqIFNpbXBsaWZpZWQgdGhlIG9kZC1sZW5ndGggY29uZGl0aW9uYWwgKE1v cnRlbiBCcsO4cnVwKS4NCj4+DQo+PiBSZXZpZXdlZC1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNt YXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBNYXR0aWFzIFLDtm5u YmxvbSA8bWF0dGlhcy5yb25uYmxvbUBlcmljc3Nvbi5jb20+DQo+PiAtLS0NCj4+ICAgbGliL25l dC9ydGVfaXAuaCB8IDE3ICsrKysrKysrKystLS0tLS0tDQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCAx MCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9saWIv bmV0L3J0ZV9pcC5oIGIvbGliL25ldC9ydGVfaXAuaA0KPj4gaW5kZXggYjUwMjQ4MTY3MC4uYTAz MzRkOTMxZSAxMDA2NDQNCj4+IC0tLSBhL2xpYi9uZXQvcnRlX2lwLmgNCj4+ICsrKyBiL2xpYi9u ZXQvcnRlX2lwLmgNCj4+IEBAIC0xNjAsMTggKzE2MCwyMSBAQCBydGVfaXB2NF9oZHJfbGVuKGNv bnN0IHN0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyKQ0KPj4gICBzdGF0aWMgaW5saW5lIHVp bnQzMl90DQo+PiAgIF9fcnRlX3Jhd19ja3N1bShjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4s IHVpbnQzMl90IHN1bSkNCj4+ICAgew0KPj4gLQkvKiBleHRlbmQgc3RyaWN0LWFsaWFzaW5nIHJ1 bGVzICovDQo+PiAtCXR5cGVkZWYgdWludDE2X3QgX19hdHRyaWJ1dGVfXygoX19tYXlfYWxpYXNf XykpIHUxNl9wOw0KPj4gLQljb25zdCB1MTZfcCAqdTE2X2J1ZiA9IChjb25zdCB1MTZfcCAqKWJ1 ZjsNCj4+IC0JY29uc3QgdTE2X3AgKmVuZCA9IHUxNl9idWYgKyBsZW4gLyBzaXplb2YoKnUxNl9i dWYpOw0KPj4gKwljb25zdCB2b2lkICplbmQ7DQo+PiAgIA0KPj4gLQlmb3IgKDsgdTE2X2J1ZiAh PSBlbmQ7ICsrdTE2X2J1ZikNCj4+IC0JCXN1bSArPSAqdTE2X2J1ZjsNCj4+ICsJZm9yIChlbmQg PSBSVEVfUFRSX0FERChidWYsIChsZW4vc2l6ZW9mKHVpbnQxNl90KSkgKiBzaXplb2YodWludDE2 X3QpKTsNCj4gDQo+IFdoYXQgZG8geW91IHRoaW5rIGFib3V0IHRoaXMgZm9ybToNCj4gDQo+IAlm b3IgKGVuZCA9IFJURV9QVFJfQUREKGJ1ZiwgUlRFX0FMSUdOX0ZMT09SKGxlbiwgc2l6ZW9mKHVp bnQxNl90KSkpOw0KPiANCj4gVGhpcyBhbHNvIGhhcyB0aGUgZ29vZCBwcm9wZXJ0eSB0byBzb2x2 ZSB0aGUgZGViYXRlIGFib3V0IHRoZQ0KPiBzcGFjZXMgYXJvdW5kIHRoZSAnLycgOikNCj4gDQoN ClNob3J0ZXIsIG1vcmUgcmVhZGFibGUuIExvb2tzIGdvb2QgdG8gbWUuDQoNClRoYW5rcy4NCg0K PiANCj4+ICsJICAgICBidWYgIT0gZW5kOyBidWYgPSBSVEVfUFRSX0FERChidWYsIHNpemVvZih1 aW50MTZfdCkpKSB7DQo+PiArCQl1aW50MTZfdCB2Ow0KPj4gKw0KPj4gKwkJbWVtY3B5KCZ2LCBi dWYsIHNpemVvZih1aW50MTZfdCkpOw0KPj4gKwkJc3VtICs9IHY7DQo+PiArCX0NCj4+ICAgDQo+ PiAgIAkvKiBpZiBsZW5ndGggaXMgb2RkLCBrZWVwaW5nIGl0IGJ5dGUgb3JkZXIgaW5kZXBlbmRl bnQgKi8NCj4+ICAgCWlmICh1bmxpa2VseShsZW4gJSAyKSkgew0KPj4gICAJCXVpbnQxNl90IGxl ZnQgPSAwOw0KPj4gLQkJKih1bnNpZ25lZCBjaGFyICopJmxlZnQgPSAqKGNvbnN0IHVuc2lnbmVk IGNoYXIgKillbmQ7DQo+PiArDQo+PiArCQltZW1jcHkoJmxlZnQsIGVuZCwgMSk7DQo+PiAgIAkJ c3VtICs9IGxlZnQ7DQo+PiAgIAl9DQo+PiAgIA0KPj4gLS0gDQo+PiAyLjI1LjENCj4+DQoNCg==