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 45A69430F0; Thu, 24 Aug 2023 14:47:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3686040EE1; Thu, 24 Aug 2023 14:47:02 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id EC84A40150 for ; Thu, 24 Aug 2023 14:47:00 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id AE955206BB; Thu, 24 Aug 2023 14:47:00 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v11 06/16] eal: use prefetch intrinsics Date: Thu, 24 Aug 2023 14:46:54 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D87B32@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v11 06/16] eal: use prefetch intrinsics Thread-Index: AdnWg28NY4C4PNmoS8+tkTg9qNXFXgAA1CJQ References: <1680558751-17931-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-1-git-send-email-roretzla@linux.microsoft.com> <1691781658-32520-7-git-send-email-roretzla@linux.microsoft.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "David Marchand" , "Tyler Retzlaff" , "Maxime Coquelin" Cc: , "Bruce Richardson" , "Konstantin Ananyev" , "Ciara Power" , 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 PiBGcm9tOiBEYXZpZCBNYXJjaGFuZCBbbWFpbHRvOmRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb21d DQo+IFNlbnQ6IFRodXJzZGF5LCAyNCBBdWd1c3QgMjAyMyAxNC4wNg0KPiANCj4gT24gRnJpLCBB dWcgMTEsIDIwMjMgYXQgOToyMeKAr1BNIFR5bGVyIFJldHpsYWZmDQo+IDxyb3JldHpsYUBsaW51 eC5taWNyb3NvZnQuY29tPiB3cm90ZToNCj4gPg0KPiA+IElubGluZSBhc3NlbWJseSBpcyBub3Qg c3VwcG9ydGVkIGZvciBNU1ZDIHg2NCBpbnN0ZWFkIHVzZSBfbW1fcHJlZmV0Y2gNCj4gPiBhbmQg X21tX2NsZGVtb3RlIGludHJpbnNpY3MuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBUeWxlciBS ZXR6bGFmZiA8cm9yZXR6bGFAbGludXgubWljcm9zb2Z0LmNvbT4NCj4gPiBBY2tlZC1ieTogQnJ1 Y2UgUmljaGFyZHNvbiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4gQWNrZWQtYnk6 IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+ID4gQWNrZWQtYnk6 IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi52LmFuYW55ZXZAeWFuZGV4LnJ1Pg0KPiA+ IC0tLQ0KPiA+ICBsaWIvZWFsL3g4Ni9pbmNsdWRlL3J0ZV9wcmVmZXRjaC5oIHwgMjUgKysrKysr KysrKysrKysrKysrKysrLS0tLQ0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvZWFsL3g4Ni9pbmNs dWRlL3J0ZV9wcmVmZXRjaC5oDQo+IGIvbGliL2VhbC94ODYvaW5jbHVkZS9ydGVfcHJlZmV0Y2gu aA0KPiA+IGluZGV4IDdmZDAxYzQuLjdhNjk4OGUgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2VhbC94 ODYvaW5jbHVkZS9ydGVfcHJlZmV0Y2guaA0KPiA+ICsrKyBiL2xpYi9lYWwveDg2L2luY2x1ZGUv cnRlX3ByZWZldGNoLmgNCj4gPiBAQCAtOSwzMCArOSwzOCBAQA0KPiA+ICBleHRlcm4gIkMiIHsN Cj4gPiAgI2VuZGlmDQo+ID4NCj4gPiArI2luY2x1ZGUgPGVtbWludHJpbi5oPg0KPiA+ICsNCj4g PiAgI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4NCj4gPiAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4N Cj4gPiAgI2luY2x1ZGUgImdlbmVyaWMvcnRlX3ByZWZldGNoLmgiDQo+ID4NCj4gPiArI3ByYWdt YSBHQ0MgZGlhZ25vc3RpYyBwdXNoDQo+ID4gKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl ZCAiLVdjYXN0LXF1YWwiDQo+ID4gKw0KPiA+ICBzdGF0aWMgaW5saW5lIHZvaWQgcnRlX3ByZWZl dGNoMChjb25zdCB2b2xhdGlsZSB2b2lkICpwKQ0KPiA+ICB7DQo+ID4gLSAgICAgICBhc20gdm9s YXRpbGUgKCJwcmVmZXRjaHQwICVbcF0iIDogOiBbcF0gIm0iICgqKGNvbnN0IHZvbGF0aWxlIGNo YXINCj4gKilwKSk7DQo+ID4gKyAgICAgICBfbW1fcHJlZmV0Y2goKGNvbnN0IHZvaWQgKilwLCBf TU1fSElOVF9UMCk7DQo+ID4gIH0NCj4gPg0KPiANCj4gUXVpdGUgc3VycHJpc2luZ2x5LCB0aGlz IHBhcnQgKGV4YWN0bHkpIGJyZWFrcyAzMmJpdHMgYnVpbGQgaW4gdGhlDQo+IHZob3N0IGxpYnJh cnk6DQo+IA0KPiBjY2FjaGUgY2MgLUlsaWIvbGlicnRlX3Zob3N0LmEucCAtSWxpYg0KPiAtSS4u Ly4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIgLUlsaWIvdmhvc3QNCj4gLUkuLi8uLi8u Li9naXQvcHViL2RwZGsub3JnL21haW4vbGliL3Zob3N0IC1JLg0KPiAtSS4uLy4uLy4uL2dpdC9w dWIvZHBkay5vcmcvbWFpbiAtSWNvbmZpZw0KPiAtSS4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcv bWFpbi9jb25maWcgLUlsaWIvZWFsL2luY2x1ZGUNCj4gLUkuLi8uLi8uLi9naXQvcHViL2RwZGsu b3JnL21haW4vbGliL2VhbC9pbmNsdWRlDQo+IC1JbGliL2VhbC9saW51eC9pbmNsdWRlDQo+IC1J Li4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi9lYWwvbGludXgvaW5jbHVkZQ0KPiAt SWxpYi9lYWwveDg2L2luY2x1ZGUNCj4gLUkuLi8uLi8uLi9naXQvcHViL2RwZGsub3JnL21haW4v bGliL2VhbC94ODYvaW5jbHVkZSAtSWxpYi9lYWwvY29tbW9uDQo+IC1JLi4vLi4vLi4vZ2l0L3B1 Yi9kcGRrLm9yZy9tYWluL2xpYi9lYWwvY29tbW9uIC1JbGliL2VhbA0KPiAtSS4uLy4uLy4uL2dp dC9wdWIvZHBkay5vcmcvbWFpbi9saWIvZWFsIC1JbGliL2t2YXJncw0KPiAtSS4uLy4uLy4uL2dp dC9wdWIvZHBkay5vcmcvbWFpbi9saWIva3ZhcmdzIC1JbGliL2xvZw0KPiAtSS4uLy4uLy4uL2dp dC9wdWIvZHBkay5vcmcvbWFpbi9saWIvbG9nIC1JbGliL21ldHJpY3MNCj4gLUkuLi8uLi8uLi9n aXQvcHViL2RwZGsub3JnL21haW4vbGliL21ldHJpY3MgLUlsaWIvdGVsZW1ldHJ5DQo+IC1JLi4v Li4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi90ZWxlbWV0cnkgLUlsaWIvZXRoZGV2DQo+ IC1JLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi9ldGhkZXYgLUlsaWIvbmV0DQo+ IC1JLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi9uZXQgLUlsaWIvbWJ1Zg0KPiAt SS4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvbWJ1ZiAtSWxpYi9tZW1wb29sDQo+ IC1JLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi9tZW1wb29sIC1JbGliL3JpbmcN Cj4gLUkuLi8uLi8uLi9naXQvcHViL2RwZGsub3JnL21haW4vbGliL3JpbmcgLUlsaWIvbWV0ZXIN Cj4gLUkuLi8uLi8uLi9naXQvcHViL2RwZGsub3JnL21haW4vbGliL21ldGVyIC1JbGliL2NyeXB0 b2Rldg0KPiAtSS4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvY3J5cHRvZGV2IC1J bGliL3JjdQ0KPiAtSS4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvcmN1IC1JbGli L2hhc2gNCj4gLUkuLi8uLi8uLi9naXQvcHViL2RwZGsub3JnL21haW4vbGliL2hhc2ggLUlsaWIv cGNpDQo+IC1JLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi9wY2kgLUlsaWIvZG1h ZGV2DQo+IC1JLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi9kbWFkZXYgLWZkaWFn bm9zdGljcy1jb2xvcj1hbHdheXMNCj4gLURfRklMRV9PRkZTRVRfQklUUz02NCAtV2FsbCAtV2lu dmFsaWQtcGNoIC1XZXh0cmEgLVdlcnJvciAtc3RkPWMxMQ0KPiAtTzIgLWcgLWluY2x1ZGUgcnRl X2NvbmZpZy5oIC1XY2FzdC1xdWFsIC1XZGVwcmVjYXRlZCAtV2Zvcm1hdA0KPiAtV2Zvcm1hdC1u b25saXRlcmFsIC1XZm9ybWF0LXNlY3VyaXR5IC1XbWlzc2luZy1kZWNsYXJhdGlvbnMNCj4gLVdt aXNzaW5nLXByb3RvdHlwZXMgLVduZXN0ZWQtZXh0ZXJucyAtV29sZC1zdHlsZS1kZWZpbml0aW9u DQo+IC1XcG9pbnRlci1hcml0aCAtV3NpZ24tY29tcGFyZSAtV3N0cmljdC1wcm90b3R5cGVzIC1X dW5kZWYNCj4gLVd3cml0ZS1zdHJpbmdzIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIC1X bm8tcGFja2VkLW5vdC1hbGlnbmVkDQo+IC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMg LVduby16ZXJvLWxlbmd0aC1ib3VuZHMNCj4gLVduby1wb2ludGVyLXRvLWludC1jYXN0IC1EX0dO VV9TT1VSQ0UgLW0zMiAtZlBJQyAtbWFyY2g9bmF0aXZlIC1tcnRtDQo+IC1EQUxMT1dfRVhQRVJJ TUVOVEFMX0FQSSAtREFMTE9XX0lOVEVSTkFMX0FQSSAtV25vLWZvcm1hdC10cnVuY2F0aW9uDQo+ IC1EVkhPU1RfR0NDX1VOUk9MTF9QUkFHTUEgLWZuby1zdHJpY3QtYWxpYXNpbmcgLURWSE9TVF9I QVNfVkRVU0UNCj4gLURSVEVfTE9HX0RFRkFVTFRfTE9HVFlQRT1saWIudmhvc3QgLU1EIC1NUQ0K PiBsaWIvbGlicnRlX3Zob3N0LmEucC92aG9zdF92aXJ0aW9fbmV0LmMubyAtTUYNCj4gbGliL2xp YnJ0ZV92aG9zdC5hLnAvdmhvc3RfdmlydGlvX25ldC5jLm8uZCAtbw0KPiBsaWIvbGlicnRlX3Zo b3N0LmEucC92aG9zdF92aXJ0aW9fbmV0LmMubyAtYw0KPiAuLi8uLi8uLi9naXQvcHViL2RwZGsu b3JnL21haW4vbGliL3Zob3N0L3ZpcnRpb19uZXQuYw0KPiBJbiBmdW5jdGlvbiDigJhtYnVmX3Rv X2Rlc2PigJksDQo+ICAgICBpbmxpbmVkIGZyb20g4oCYdmhvc3RfZW5xdWV1ZV9hc3luY19wYWNr ZWTigJkgYXQNCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi92aG9zdC92aXJ0 aW9fbmV0LmM6MTk0ODo2LA0KPiAgICAgaW5saW5lZCBmcm9tIOKAmHZpcnRpb19kZXZfcnhfYXN5 bmNfcGFja2Vk4oCZIGF0DQo+IC4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvdmhv c3QvdmlydGlvX25ldC5jOjE5NjU6NiwNCj4gICAgIGlubGluZWQgZnJvbSDigJh2aXJ0aW9fZGV2 X3J4X2FzeW5jX3N1Ym1pdF9wYWNrZWTigJkgYXQNCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9y Zy9tYWluL2xpYi92aG9zdC92aXJ0aW9fbmV0LmM6MjEyNzo3Og0KPiAuLi8uLi8uLi9naXQvcHVi L2RwZGsub3JnL21haW4vbGliL3Zob3N0L3ZpcnRpb19uZXQuYzoxMjMwOjE4OiBlcnJvcjoNCj4g 4oCYYnVmX3ZlY1swXS5idWZfYWRkcuKAmSBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkDQo+IFst V2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdDQo+ICAxMjMwIHwgICAgICAgICBidWZfYWRkciA9 IGJ1Zl92ZWNbdmVjX2lkeF0uYnVmX2FkZHI7DQo+ICAgICAgIHwgICAgICAgICB+fn5+fn5+fn5e fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9t YWluL2xpYi92aG9zdC92aXJ0aW9fbmV0LmM6IEluIGZ1bmN0aW9uDQo+IOKAmHZpcnRpb19kZXZf cnhfYXN5bmNfc3VibWl0X3BhY2tlZOKAmToNCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9t YWluL2xpYi92aG9zdC92aXJ0aW9fbmV0LmM6MTk2MzoyNzogbm90ZToNCj4g4oCYYnVmX3ZlY+KA mSBkZWNsYXJlZCBoZXJlDQo+ICAxOTYzIHwgICAgICAgICBzdHJ1Y3QgYnVmX3ZlY3RvciBidWZf dmVjW0JVRl9WRUNUT1JfTUFYXTsNCj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn5+fn4NCj4gSW4gZnVuY3Rpb24g4oCYbWJ1Zl90b19kZXNj4oCZLA0KPiAgICAgaW5saW5l ZCBmcm9tIOKAmHZob3N0X2VucXVldWVfYXN5bmNfcGFja2Vk4oCZIGF0DQo+IC4uLy4uLy4uL2dp dC9wdWIvZHBkay5vcmcvbWFpbi9saWIvdmhvc3QvdmlydGlvX25ldC5jOjE5NDg6NiwNCj4gICAg IGlubGluZWQgZnJvbSDigJh2aXJ0aW9fZGV2X3J4X2FzeW5jX3BhY2tlZOKAmSBhdA0KPiAuLi8u Li8uLi9naXQvcHViL2RwZGsub3JnL21haW4vbGliL3Zob3N0L3ZpcnRpb19uZXQuYzoxOTY1OjYs DQo+ICAgICBpbmxpbmVkIGZyb20g4oCYdmlydGlvX2Rldl9yeF9hc3luY19zdWJtaXRfcGFja2Vk 4oCZIGF0DQo+IC4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvdmhvc3QvdmlydGlv X25ldC5jOjIxMjc6NzoNCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9tYWluL2xpYi92aG9z dC92aXJ0aW9fbmV0LmM6MTIzMToxODogZXJyb3I6DQo+IOKAmGJ1Zl92ZWNbMF0uYnVmX2lvdmHi gJkgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZA0KPiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxp emVkXQ0KPiAgMTIzMSB8ICAgICAgICAgYnVmX2lvdmEgPSBidWZfdmVjW3ZlY19pZHhdLmJ1Zl9p b3ZhOw0KPiAgICAgICB8ICAgICAgICAgfn5+fn5+fn5+Xn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+DQo+IC4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvdmhvc3QvdmlydGlvX25l dC5jOiBJbiBmdW5jdGlvbg0KPiDigJh2aXJ0aW9fZGV2X3J4X2FzeW5jX3N1Ym1pdF9wYWNrZWTi gJk6DQo+IC4uLy4uLy4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvdmhvc3QvdmlydGlvX25l dC5jOjE5NjM6Mjc6IG5vdGU6DQo+IOKAmGJ1Zl92ZWPigJkgZGVjbGFyZWQgaGVyZQ0KPiAgMTk2 MyB8ICAgICAgICAgc3RydWN0IGJ1Zl92ZWN0b3IgYnVmX3ZlY1tCVUZfVkVDVE9SX01BWF07DQo+ ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+DQo+IEluIGZ1bmN0aW9u IOKAmG1idWZfdG9fZGVzY+KAmSwNCj4gICAgIGlubGluZWQgZnJvbSDigJh2aG9zdF9lbnF1ZXVl X2FzeW5jX3BhY2tlZOKAmSBhdA0KPiAuLi8uLi8uLi9naXQvcHViL2RwZGsub3JnL21haW4vbGli L3Zob3N0L3ZpcnRpb19uZXQuYzoxOTQ4OjYsDQo+ICAgICBpbmxpbmVkIGZyb20g4oCYdmlydGlv X2Rldl9yeF9hc3luY19wYWNrZWTigJkgYXQNCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRrLm9yZy9t YWluL2xpYi92aG9zdC92aXJ0aW9fbmV0LmM6MTk2NTo2LA0KPiAgICAgaW5saW5lZCBmcm9tIOKA mHZpcnRpb19kZXZfcnhfYXN5bmNfc3VibWl0X3BhY2tlZOKAmSBhdA0KPiAuLi8uLi8uLi9naXQv cHViL2RwZGsub3JnL21haW4vbGliL3Zob3N0L3ZpcnRpb19uZXQuYzoyMTI3Ojc6DQo+IC4uLy4u Ly4uL2dpdC9wdWIvZHBkay5vcmcvbWFpbi9saWIvdmhvc3QvdmlydGlvX25ldC5jOjEyMzI6MzU6 IGVycm9yOg0KPiDigJhidWZfdmVjWzBdLmJ1Zl9sZW7igJkgbWF5IGJlIHVzZWQgdW5pbml0aWFs aXplZA0KPiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQ0KPiAgMTIzMiB8ICAgICAgICAg YnVmX2xlbiA9IGJ1Zl92ZWNbdmVjX2lkeF0uYnVmX2xlbjsNCj4gICAgICAgfCAgICAgICAgICAg ICAgICAgICB+fn5+fn5+fn5+fn5+fn5+Xn5+fn5+fn4NCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRr Lm9yZy9tYWluL2xpYi92aG9zdC92aXJ0aW9fbmV0LmM6IEluIGZ1bmN0aW9uDQo+IOKAmHZpcnRp b19kZXZfcnhfYXN5bmNfc3VibWl0X3BhY2tlZOKAmToNCj4gLi4vLi4vLi4vZ2l0L3B1Yi9kcGRr Lm9yZy9tYWluL2xpYi92aG9zdC92aXJ0aW9fbmV0LmM6MTk2MzoyNzogbm90ZToNCj4g4oCYYnVm X3ZlY+KAmSBkZWNsYXJlZCBoZXJlDQo+ICAxOTYzIHwgICAgICAgICBzdHJ1Y3QgYnVmX3ZlY3Rv ciBidWZfdmVjW0JVRl9WRUNUT1JfTUFYXTsNCj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgIF5+fn5+fn4NCj4gY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJv cnMNCj4gbmluamE6IGJ1aWxkIHN0b3BwZWQ6IHN1YmNvbW1hbmQgZmFpbGVkLg0KPiANCj4gSSBo YWQgYSBsb29rIGF0IHRoZSB2aG9zdCBsaWJyYXJ5IGFuZCBJIHRoaW5rIHRoZSBjb21waWxlciB0 aGlua3Mgc2l6ZSBtYXkgYmUNCj4gMC4NCg0KSW4gMzIgYml0IGFyY2hpdGVjdHVyZSwgInNpemUi IGNvdWxkIGJlIHplcm8sIHJlZi4gbGluZSAxOTA5Og0KDQp1aW50NjRfdCBzaXplID0gcGt0LT5w a3RfbGVuICsgc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fbmV0X2hkcl9tcmdfcnhidWYpOw0KDQpUaGUg dmFsdWVzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFkZGl0aW9uIGFyZSAzMiBiaXQgdW5zaWduZWQs IHNvIHRoZSBhZGRpdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBhcyAzMiBiaXQgdW5zaWduZWQsIGFu ZCB0aGUgcmVzdWx0IGNvdWxkIGluIHRoZW9yeSBiZSAwLiBDYXN0aW5nIG9uZSBvZiB0aGVtIHRv IDY0IGJpdCwgZS5nLiAodWludDY0X3Qpc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fbmV0X2hkcl9tcmdf cnhidWYpLCBtaWdodCBmaXggdGhlIHdhcm5pbmcgaWYgdGhlIGNvbXBpbGVyIGlzIGNsZXZlciBl bm91Z2ggdG8ga25vdyB0aGF0IGFkZGluZyBhIG5vbi16ZXJvIDY0IGJpdCB2YWx1ZSB0byBhbnkg MzIgYml0IHZhbHVlIGNhbm5vdCBnaXZlIHplcm8gYXMgdGhlIHJlc3VsdC4NCg0KU2lkZSBub3Rl LCBvZmYgdHJhY2s6IFdoeSBpcyAic2l6ZSIgdWludDY0X3QsIHdvdWxkbid0IHVpbnQzMl90IHN1 ZmZpY2U/DQoNCj4gQ2hhbmdpbmcgdGhlIGxvb3Agb24gc2l6ZSB3aXRoIGEgZG8geyB9IHdoaWxl IChzaXplID4gMCk7IHJlc29sdmVzIHRoZQ0KPiB3YXJuaW5nLg0KPiBJIGNhbiBwb3N0IGEgY2hh bmdlIGZvciB0aGlzLCBhcyB3ZSBoaXQgYSBzaW1pbGFyIGlzc3VlIGluIHRoZSBwYXN0DQo+IGFu ZCB0aGUgY29kZSBkb2VzIG5vdCBtYWtlIHNlbnNlIGNvbXBhcmluZyBzaXplIG9uIHRoZSBmaXJz dCBpdGVyYXRpb24NCj4gb2YgdGhpcyBsb29wLg0KPiANCj4gSG93ZXZlciwgSSBhbSBhIGJpdCBw dXp6bGVkIHdoeSB0aGUgcHJlZmV0Y2ggY2hhbmdlIG1ha2VzIHRoZSBjb21waWxlcg0KPiBjb25z aWRlciB0aGlzIGxvb3AgZGlmZmVyZW50bHkuDQo+IFdlIGhhdmUgdGhlIHNhbWUgY29uc3RydWN0 cyBldmVyeXdoZXJlIGluIHRoaXMgbGlicmFyeSBhbmQgeDg2XzY0DQo+IGJ1aWxkcyBhcmUgZmlu ZS4uLg0KDQpUaGF0IGlzIGluZGVlZCB0aGUgcmVsZXZhbnQgcXVlc3Rpb24gaGVyZSENCg0KUGVy aGFwcyB0aGUgY29tcGlsZXIgc29tZWhvdyBpZ25vcmVzIHRoZSAiY29uc3QiIHBhcnQgb2YgdGhl IHBhcmFtZXRlciBnaXZlbiB0byB0aGUgImFzbSIgKGluIHJ0ZV9wcmVmZXRjaDAoKSkgZm9yIDY0 IGJpdCBhcmNoLCBidXQgbm90IGZvciAzMiBiaXQgYXJjaD8NCg0KPiANCj4gDQo+IA0KPiAtLQ0K PiBEYXZpZCBNYXJjaGFuZA0KDQo=