From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130052.outbound.protection.outlook.com [40.107.13.52]) by dpdk.org (Postfix) with ESMTP id A34C31B4F3 for ; Sat, 2 Feb 2019 00:11:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0665OHesiv9kxRsUpIFdW4aKu6xjrPYV413NlxBGSq8=; b=Ec46CdgMFs0Acb0/MOcSS18qClfZtoiYold2W39/JgxzkCmo+h6VPy8tCokMv7kUCHoreBRLXUsvRRu7WdsjMwhb/X8XdOizarhf0K4lqs+BeN3xkdDR91fDA2kF68LKoUmixomAuPizEiI7DyI4WD3sCzfy8ORpmwBgp8xHaRM= Received: from DB6PR0801MB2071.eurprd08.prod.outlook.com (10.168.87.14) by DB6PR0801MB1719.eurprd08.prod.outlook.com (10.169.226.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.20; Fri, 1 Feb 2019 23:11:57 +0000 Received: from DB6PR0801MB2071.eurprd08.prod.outlook.com ([fe80::a532:5e16:e4eb:4e5c]) by DB6PR0801MB2071.eurprd08.prod.outlook.com ([fe80::a532:5e16:e4eb:4e5c%9]) with mapi id 15.20.1580.019; Fri, 1 Feb 2019 23:11:57 +0000 From: Ola Liljedahl To: "gage.eads@intel.com" , "dev@dpdk.org" CC: "jerinj@marvell.com" , "chaozhu@linux.vnet.ibm.com" , nd , "bruce.richardson@intel.com" , "konstantin.ananyev@intel.com" , "hemant.agrawal@nxp.com" , "olivier.matz@6wind.com" , "arybchenko@solarflare.com" , "Gavin Hu (Arm Technology China)" , Honnappa Nagarahalli Thread-Topic: [dpdk-dev] [PATCH 1/1] eal: add 128-bit cmpset (x86-64 only) Thread-Index: AQHUty7+Hx+p+KOLIUunsbjUPnO+E6XFTIWAgAXPcGCAADbYgIAAAOuAgAAK5QCAAAyOIIAALZQA Date: Fri, 1 Feb 2019 23:11:57 +0000 Message-ID: <1549062730.20325.67.camel@arm.com> References: <20190128172945.27251-1-gage.eads@intel.com> <20190128172945.27251-2-gage.eads@intel.com> <1548716507.11472.96.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE1FE@FMSMSX108.amr.corp.intel.com> <1549047709.20325.35.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE2CE@FMSMSX108.amr.corp.intel.com> <1549050246.20325.45.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE38D@FMSMSX108.amr.corp.intel.com> In-Reply-To: <9184057F7FC11744A2107296B6B8EB1E541CE38D@FMSMSX108.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.18.5.2-0ubuntu3.2 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [158.174.8.16] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0801MB1719; 6:LcI0FL9pkun2f6Umn3cqyj4qZiMqiFsjOuldeU0BOlTR9UEVzRQW5SbiIxFXwKLBQ7W9wSyG3GUojbL5Eg8RSxwNs4OME02urf0UgmissXurWv9o1se+wEspW5T/ips/2x2+IlgFRrJ889ogiddW5O9sVh4yPEBVsO8FS6KoLgXF1HYoMglGhTA2Hf1/MxTwGXU60wE7Vk0+d/VYFbrN5nq1KOt/FE2sMTlnVwkgD6b4QY2zR/ajKpYxc2boQf0GiZH/4ALeB8uPY98S00wBUBw/cQezPmT6h2MOu5BpXQRrGZqAdIyw7U6Enz7aP8NFFXmj22lzyu0gSeNF/gXmYRq20+AMZLgU7IIpA2Wn4qDE4EI8cbwAuUMywQGM5ChqNJOVo21K8zcound41zPSUSrIupygo4mOIQGFTa85E6AI55Vrl6V/XzIbj3GdztLg0hAqKZN/x8YJRGiEFtq+mg==; 5:7n9sm/OTwz+6Jl/I30Jn55IF8+Olv9ZfSQQkQ3ojKuvp4KLuCQFZeaGgy9dq7pEV+FSId4u0d/DUS5KMm27ZMsGPEE5ZHiLFZdRC4FwPXmU0I+NhaK1pF7RWL+n6gPQ3PQURmxsyL2LPwqN+WfUbVF2Iufm5IaLWyRDNbr4Ddrr7nPD0YcSIBaoULbfAGGrodf0SNzGvFoqoehMkZP7h5g==; 7:ZOSmSS5UzrJ3TlLjeXuOHP/mLY4FHhv4W5Pjo8O9XFWK2l2fq06tQpnfFiev3sgmQe8rMXawswl6cN6f0Wa8vuxL5qGag3HenWXErfZ9Sj7tvLILGofKjhgi2n8Wv8Dq8jV0Q6A6bJLlgClIfIXAYg== x-ms-office365-filtering-correlation-id: 5895fbae-8fce-4ee8-33dd-08d6889aa9d1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0801MB1719; x-ms-traffictypediagnostic: DB6PR0801MB1719: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 09352FD734 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(136003)(376002)(366004)(396003)(39860400002)(13464003)(189003)(199004)(3846002)(7736002)(50226002)(81156014)(6486002)(105586002)(966005)(6436002)(72206003)(86362001)(6116002)(110136005)(478600001)(81166006)(6506007)(8936002)(8676002)(102836004)(2501003)(26005)(53546011)(305945005)(6512007)(54906003)(14454004)(11346002)(446003)(2616005)(476003)(6306002)(66066001)(486006)(229853002)(186003)(6246003)(103116003)(25786009)(2906002)(97736004)(36756003)(93886005)(68736007)(4326008)(53936002)(316002)(71190400001)(71200400001)(106356001)(76176011)(256004)(99286004)(14444005)(99106002)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0801MB1719; H:DB6PR0801MB2071.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: CcRu3vbHl5Qtp1BK9fY4/0+S0wiH4jqbUNEGjCw6NfxFvSQ4EbkdEfEqduMFFwRN591yyoHLw35Avb3dWiykHdkD2s0P/eeP/TNiSu038wg31gbLAk3PoJm7Yhewgy+Jk5lzHtHavEyEJR8rTzB7VgwFKeGhPpkgOnP3b2vLn3Vv9nZAvF84mm4PzgkjfSk1+PXdoxsbVpaNxDMdEgBywQzGg5XF32E2p0ExKdZVvLh7ZyLT+LhpDf7XtzG/LP62XDTOPA+siRCLhEYprp8UHWyyt24rfFTa75r+twtBDxOnWEGYYPGw6JtLY0L1cnXTqczh/0x0nZmfoXyoknw1W0SUEjyrBMoDTWfHzSq1NujiLV/7iaLNp7d1iwSh8dd3C1PV7qln7OAPJe4OerwI5Agasq9laaRm/3+vKMJq2EI= Content-Type: text/plain; charset="utf-8" Content-ID: <6255A68F714D7049BBA424A7734DC5A3@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5895fbae-8fce-4ee8-33dd-08d6889aa9d1 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2019 23:11:57.4234 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1719 Subject: Re: [dpdk-dev] [PATCH 1/1] eal: add 128-bit cmpset (x86-64 only) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Feb 2019 23:12:00 -0000 T24gRnJpLCAyMDE5LTAyLTAxIGF0IDIxOjA1ICswMDAwLCBFYWRzLCBHYWdlIHdyb3RlOg0KPiAN Cj4gPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE9sYSBMaWxq ZWRhaGwgW21haWx0bzpPbGEuTGlsamVkYWhsQGFybS5jb21dDQo+ID4gU2VudDogRnJpZGF5LCBG ZWJydWFyeSAxLCAyMDE5IDE6NDQgUE0NCj4gPiBUbzogRWFkcywgR2FnZSA8Z2FnZS5lYWRzQGlu dGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+IENjOiBqZXJpbmpAbWFydmVsbC5jb207IGNoYW96 aHVAbGludXgudm5ldC5pYm0uY29tOyBuZCA8bmRAYXJtLmNvbT47DQo+ID4gUmljaGFyZHNvbiwg QnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0K PiA+IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgaGVtYW50LmFncmF3YWxAbnhwLmNv bTsNCj4gPiBvbGl2aWVyLm1hdHpANndpbmQuY29tOyBhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29t OyBHYXZpbiBIdSAoQXJtDQo+ID4gVGVjaG5vbG9neSBDaGluYSkgPEdhdmluLkh1QGFybS5jb20+ OyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29t Pg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAxLzFdIGVhbDogYWRkIDEyOC1i aXQgY21wc2V0ICh4ODYtNjQgb25seSkNCj4gPiANCj4gPiBPbiBGcmksIDIwMTktMDItMDEgYXQg MTk6MjggKzAwMDAsIEVhZHMsIEdhZ2Ugd3JvdGU6DQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gPiAN Cj4gPiA+ID4gDQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZy b206IE9sYSBMaWxqZWRhaGwgW21haWx0bzpPbGEuTGlsamVkYWhsQGFybS5jb21dDQo+ID4gPiA+ IFNlbnQ6IEZyaWRheSwgRmVicnVhcnkgMSwgMjAxOSAxOjAyIFBNDQo+ID4gPiA+IFRvOiBFYWRz LCBHYWdlIDxnYWdlLmVhZHNAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4gPiA+IENjOiBq ZXJpbmpAbWFydmVsbC5jb207IGNoYW96aHVAbGludXgudm5ldC5pYm0uY29tOyBuZCA8bmRAYXJt LmNvbT47DQo+ID4gPiA+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGludGVs LmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiA+ID4gPGtvbnN0YW50aW4uYW5hbnlldkBp bnRlbC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOw0KPiA+ID4gPiBvbGl2aWVyLm1hdHpA NndpbmQuY29tOyBhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tOyBHYXZpbiBIdSAoQXJtDQo+ID4g PiA+IFRlY2hub2xvZ3kgQ2hpbmEpIDxHYXZpbi5IdUBhcm0uY29tPjsgSG9ubmFwcGEgTmFnYXJh aGFsbGkNCj4gPiA+ID4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gPiA+IFN1 YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAxLzFdIGVhbDogYWRkIDEyOC1iaXQgY21wc2V0 ICh4ODYtNjQNCj4gPiA+ID4gb25seSkNCj4gPiA+ID4gDQo+ID4gPiA+IE9uIEZyaSwgMjAxOS0w Mi0wMSBhdCAxNzowNiArMDAwMCwgRWFkcywgR2FnZSB3cm90ZToNCj4gPiA+ID4gPiANCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBG cm9tOiBPbGEgTGlsamVkYWhsIFttYWlsdG86T2xhLkxpbGplZGFobEBhcm0uY29tXQ0KPiA+ID4g PiA+ID4gU2VudDogTW9uZGF5LCBKYW51YXJ5IDI4LCAyMDE5IDU6MDIgUE0NCj4gPiA+ID4gPiA+ IFRvOiBFYWRzLCBHYWdlIDxnYWdlLmVhZHNAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4g PiA+ID4gPiBDYzogYXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbTsgamVyaW5qQG1hcnZlbGwuY29t Ow0KPiA+ID4gPiA+ID4gY2hhb3podUBsaW51eC52bmV0LmlibS5jb207IG5kIDxuZEBhcm0uY29t PjsgUmljaGFyZHNvbiwgQnJ1Y2UNCj4gPiA+ID4gPiA+IDxicnVjZS5yaWNoYXJkc29uQGludGVs LmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiA+ID4gPiA+IDxrb25zdGFudGluLmFuYW55 ZXZAaW50ZWwuY29tPjsgaGVtYW50LmFncmF3YWxAbnhwLmNvbTsNCj4gPiA+ID4gPiA+IG9saXZp ZXIubWF0ekA2d2luZC5jb207IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ID4gPiA+ID4gPiA8SG9u bmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IEdhdmluIEh1IChBcm0gVGVjaG5vbG9neSBDaGlu YSkNCj4gPiA+ID4gPiA+IDxHYXZpbi5IdUBhcm0uY29tPg0KPiA+ID4gPiA+ID4gU3ViamVjdDog UmU6IFtkcGRrLWRldl0gW1BBVENIIDEvMV0gZWFsOiBhZGQgMTI4LWJpdCBjbXBzZXQNCj4gPiA+ ID4gPiA+ICh4ODYtNjQNCj4gPiA+ID4gPiA+IG9ubHkpDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+IE9uIE1vbiwgMjAxOS0wMS0yOCBhdCAxMToyOSAtMDYwMCwgR2FnZSBFYWRzIHdyb3RlOg0K PiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiBUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCBmb3Igbm9uLWJsb2NraW5nIGFsZ29yaXRo bXMsIHN1Y2gNCj4gPiA+ID4gPiA+ID4gYXMgYSBub24tYmxvY2tpbmcgc3RhY2sgb3IgcmluZy4N Cj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEdhZ2UgRWFkcyA8 Z2FnZS5lYWRzQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+IMKg Li4uL2NvbW1vbi9pbmNsdWRlL2FyY2gveDg2L3J0ZV9hdG9taWNfNjQuaMKgwqDCoMKgwqDCoMKg wqB8IDMxDQo+ID4gPiA+ID4gPiA+ICsrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+IMKgbGliL2xp YnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvZ2VuZXJpYy9ydGVfYXRvbWljLmggfCA2NQ0KPiA+ID4g PiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+IMKgMiBmaWxlcyBj aGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBk aWZmIC0tZ2l0DQo+ID4gPiA+ID4gPiA+IGEvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUv YXJjaC94ODYvcnRlX2F0b21pY182NC5oDQo+ID4gPiA+ID4gPiA+IGIvbGliL2xpYnJ0ZV9lYWwv Y29tbW9uL2luY2x1ZGUvYXJjaC94ODYvcnRlX2F0b21pY182NC5oDQo+ID4gPiA+ID4gPiA+IGlu ZGV4IGZkMmVjOWM1My4uYjdiOTBiODNlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiAtLS0gYS9saWIv bGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9hcmNoL3g4Ni9ydGVfYXRvbWljXzY0LmgNCj4gPiA+ ID4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvYXJjaC94ODYvcnRl X2F0b21pY182NC5oDQo+ID4gPiA+ID4gPiA+IEBAIC0zNCw2ICszNCw3IEBADQo+ID4gPiA+ID4g PiA+IMKgLyoNCj4gPiA+ID4gPiA+ID4gwqAgKiBJbnNwaXJlZCBmcm9tIEZyZWVCU0Qgc3JjL3N5 cy9hbWQ2NC9pbmNsdWRlL2F0b21pYy5oDQo+ID4gPiA+ID4gPiA+IMKgICogQ29weXJpZ2h0IChj KSAxOTk4IERvdWcgUmFic29uDQo+ID4gPiA+ID4gPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkg SW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ID4gPiA+ID4gwqAgKiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiA+ID4gPiA+ID4gPiDCoCAqLw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gQEAg LTQ2LDYgKzQ3LDcgQEANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IMKgI2luY2x1ZGUg PHN0ZGludC5oPg0KPiA+ID4gPiA+ID4gPiDCoCNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4g PiA+ID4gPiA+ICsjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPg0KPiA+ID4gPiA+ID4gPiDCoCNpbmNs dWRlIDxydGVfYXRvbWljLmg+DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiDCoC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA2NCBiaXQgYXRvbWljIG9wZXJhdGlvbnMNCj4gPiA+ID4g PiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0qLyBAQCAtMjA4LDQgKzIxMCwzMyBAQCBz dGF0aWMNCj4gPiA+ID4gPiA+ID4gaW5saW5lIHZvaWQgcnRlX2F0b21pYzY0X2NsZWFyKHJ0ZV9h dG9taWM2NF90ICp2KQ0KPiA+ID4gPiA+ID4gPiDCoH0NCj4gPiA+ID4gPiA+ID4gwqAjZW5kaWYN Cj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW5saW5lIGludCBfX3J0ZV9l eHBlcmltZW50YWwNCj4gPiA+ID4gPiA+IF9fcnRlX2Fsd2F5c19pbmxpbmU/DQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+ID4gK3J0ZV9hdG9taWMxMjhfY21wc2V0KHZvbGF0aWxlIHJ0ZV9pbnQxMjhfdCAqZHN0 LA0KPiA+ID4gPiA+ID4gTm8gbmVlZCB0byBkZWNsYXJlIHRoZSBsb2NhdGlvbiB2b2xhdGlsZS4g Vm9sYXRpbGUgZG9lc24ndCBkbw0KPiA+ID4gPiA+ID4gd2hhdCB5b3UgdGhpbmsgaXQgZG9lcy4N Cj4gPiA+ID4gPiA+IGh0dHBzOi8veW91dHUuYmUvbGtnc3prUG5WOGc/dD0xMDI3DQo+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiBJIG1hZGUgdGhpcyB2b2xhdGlsZSB0byBtYXRjaCB0aGUgZXhpc3Rp bmcgcnRlX2F0b21pY05fY21wc2V0DQo+ID4gPiA+ID4gZGVmaW5pdGlvbnMsIHdoaWNoIHByZXN1 bWFibHkgaGF2ZSBhIGdvb2QgcmVhc29uIGZvciB1c2luZyB0aGUNCj4gPiA+ID4gPiBrZXl3b3Jk LiBNYWludGFpbmVycywgYW55IGlucHV0IGhlcmU/DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gKwkJwqDCoMKg wqDCoHJ0ZV9pbnQxMjhfdCAqZXhwLA0KPiA+ID4gPiA+ID4gSSB3b3VsZCBkZWNsYXJlICdleHAn IGNvbnN0IGFzIHdlbGwgYW5kIGRvY3VtZW50IHRoYXQgJ2V4cCcgaXMNCj4gPiA+ID4gPiA+IG5v dCB1cGRhdGVkICh3aXRoIHRoZSBvbGQgdmFsdWUpIGZvciBhIGZhaWx1cmUuIFRoZSByZWFzb24g YmVpbmcNCj4gPiA+ID4gPiA+IHRoYXQNCj4gPiA+ID4gPiA+IEFSTXY4LjAvQUFyY2g2NCBjYW5u b3QgYXRvbWljYWxseSByZWFkIHRoZSBvbGQgdmFsdWUgd2l0aG91dA0KPiA+ID4gPiA+ID4gYWxz byB3cml0aW5nIHRoZSBsb2NhdGlvbiBhbmQgdGhhdCBpcyBiYWQgZm9yIHBlcmZvcm1hbmNlDQo+ ID4gPiA+ID4gPiAodW5uZWNlc3Nhcnkgd3JpdGVzIGxlYWRzIHRvIHVubmVjZXNzYXJ5IGNvbnRl bnRpb24gYW5kIHdvcnNlDQo+ID4gPiA+ID4gPiBzY2FsYWJpbGl0eSkuIEFuZCB0aGUgdXNlciBt dXN0IGFueXdheSByZWFkIHRoZSBsb2NhdGlvbiAoaW4gdGhlDQo+ID4gPiA+ID4gPiBzdGFydCBv ZiB0aGUgY3JpdGljYWwNCj4gPiA+ID4gPiA+IHNlY3Rpb24pIHVzaW5nIGUuZy4gbm9uLWF0b21p YyA2NC1iaXQgcmVhZHMgc28gdGhlcmUgaXNuJ3QNCj4gPiA+ID4gPiA+IGFjdHVhbGx5IGFueSBy ZXF1aXJlbWVudCBmb3IgYW4gYXRvbWljIDEyOC1iaXQgcmVhZCBvZiB0aGUgbG9jYXRpb24uDQo+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiBXaWxsIGNoYW5nZSBpbiB2Mi4NCj4gPiA+ID4gPiANCj4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gwqBydGVfaW50MTI4 X3QgKnNyYywNCj4gPiA+ID4gPiA+IGNvbnN0IHJ0ZV9pbnQxMjhfdCAqc3JjPw0KPiA+ID4gPiA+ IFN1cmUsIEkgZG9uJ3Qgc2VlIGFueSBoYXJtIGluIHVzaW5nIGNvbnN0Lg0KPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiBCdXQgd2h5IGFyZSB3ZSBub3QgcGFzc2luZyAnZXhwJyBhbmQgJ3NyYycgYnkg dmFsdWU/IFRoYXQgd29ya3MNCj4gPiA+ID4gPiA+IGdyZWF0LCBldmVuIHdpdGggc3RydWN0cy4g UGFzc2luZyBieSB2YWx1ZSBzaW1wbGlmaWVzIHRoZQ0KPiA+ID4gPiA+ID4gY29tcGlsZXIncyBs aWZlLCBlc3BlY2lhbGx5IGlmIHRoZSBjYWxsIGlzIGlubGluZWQuIEFzayBhIGNvbXBpbGVyDQo+ ID4gPiA+ID4gPiBkZXZlbG9wZXIuDQo+ID4gPiA+ID4gSSByYW4gb2JqZHVtcCBvbiB0aGUgbmJf c3RhY2sgY29kZSB3aXRoIGJvdGggYXBwcm9hY2hlcywgYW5kDQo+ID4gPiA+ID4gcGFzcy1ieS1y ZWZlcmVuY2UgcmVzdWx0ZWQgaW4gZmV3ZXIgb3ZlcmFsbCB4ODZfNjQgYXNzZW1ibHkgb3BzLg0K PiA+ID4gPiA+IFBCVjogMTAwIG9wcyBmb3IgcHVzaCwgOTcgb3BzIGZvciBwb3ANCj4gPiA+ID4g PiBQQlI6IDkyIG9wcyBmb3IgcHVzaCwgODQgb3BzIGZvciBwb3ANCj4gPiA+ID4gT0sgSSBoYXZl IG5ldmVyIGNoZWNrZWQgeDg2XzY0IGNvZGUgZ2VuZXJhdGlvbi4uLiBJIGhhdmUgZ29vZA0KPiA+ ID4gPiBleHBlcmllbmNlcyB3aXRoIEFSTS9BQXJjaDY0LCBldmVyeXRoaW5nIHNlZW1zIHRvIGJl IGRvbmUgdXNpbmcNCj4gPiA+ID4gcmVnaXN0ZXJzLiBJIGFtIHN1cnByaXNlZCB0aGVyZSBpcyBh IGRpZmZlcmVuY2UuDQo+ID4gPiA+IA0KPiA+ID4gPiBEaWQgYSBxdWljayBjaGVjayB3aXRoIGxm cmluZywgcGFzc2luZyAnc3JjJyAodGhpcmQgcGFyYW0pIGJ5DQo+ID4gPiA+IHJlZmVyZW5jZSBh bmQgYnkgdmFsdWUuIE5vIGRpZmZlcmVuY2UgaW4gY29kZSBnZW5lcmF0aW9uIG9uIHg4Nl82NC4N Cj4gPiA+ID4gDQo+ID4gPiA+IEJ1dCBpZiB5b3UgaW5zaXN0IGxldCdzIGdvIHdpdGggUEJSLg0K PiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiAo VXNpbmcgdGhlIGluLXByb2dyZXNzIHY1IG5iX3N0YWNrIGNvZGUpDQo+ID4gPiA+ID4gDQo+ID4g PiA+ID4gQW5vdGhlciBmYWN0b3IgLS0gdGhvdWdoIG11Y2ggbGVzcyBjb21wZWxsaW5nIC0tIGlz IHRoYXQgd2l0aA0KPiA+ID4gPiA+IHBhc3MtYnktIHJlZmVyZW5jZSwgdGhlIHVzZXIgY2FuIGNy ZWF0ZSBhIDE2QiBzdHJ1Y3R1cmUgYW5kIGNhc3QNCj4gPiA+ID4gPiBpdCB0byBydGVfaW50MTI4 X3Qgd2hlbiB0aGV5IGNhbGwgcnRlX2F0b21pYzEyOF9jbXBzZXQsIHdoZXJlYXMNCj4gPiA+ID4g PiB3aXRoIHBhc3MtYnktdmFsdWUgdGhleSBuZWVkIHRvIHB1dCB0aGF0IHN0cnVjdCBpbiBhIHVu aW9uIHdpdGgNCj4gPiBydGVfaW50MTI4X3QuDQo+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+IFdo aWNoIGlzIHdoYXQgSSBhbHdheXMgZG8gbm93YWRheXMuLi4gVHJ5aW5nIHRvIHVzZSBhcyBmZXcg Y2FzdHMgYXMNCj4gPiA+ID4gcG9zc2libGUgYW5kIGxpZSB0byB0aGUgY29tcGlsZXIgYXMgc2Vs ZG9tIGFzIHBvc3NpYmxlLiBCdXQgSSBjYW4NCj4gPiA+ID4gc2VlIHRoZSBmcmVlZG9tIHByb3Zp ZGVkIGJ5IHRha2luZyBhIHBvaW50ZXIgdG8gc29tZXRoaW5nIGFuZCBjYXN0DQo+ID4gPiA+IGl0 IGl0IHJ0ZV9pbnQxMjhfdCBwdHIgaW4gdGhlIGNhbGwgdG/CoHJ0ZV9hdG9taWMxMjhfY21wc2V0 KCkuDQo+ID4gPiA+IA0KPiA+ID4gPiBXb3VsZCBwcmVmZXIgYSBuYW1lIHRoYXQgaXMgbW9yZSBz aW1pbGFyIHRvIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoKS4NCj4gPiA+ID4gRS5nLg0KPiA+ ID4gPiBydGVfYXRvbWljMTI4X2NvbXBhcmVfZXhjaGFuZ2UoKSAob3IgcGVyaGFwcyBqdXN0DQo+ ID4gcnRlX2F0b21pYzEyOF9jbXB4Y2hnKT8NCj4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4gQWxs IHRoZSBydGVfYXRvbWljWFhfY21wc2V0KCkgZnVuY3Rpb25zIGRvIG5vdCB0YWtlIGFueSBtZW1v cnkgb3JkZXINCj4gPiA+ID4gcGFyYW1ldGVycy4NCj4gPiA+ID4gRnJvbSBhbiBBcm0gcGVyc3Bl Y3RpdmUsIHdlIGFyZSBub3QgaGFwcHkgd2l0aCB0aGF0Lg0KPiA+ID4gU2luY2UgdGhlIGZ1bmN0 aW9uIHJldHVybnMgYSBib29sZWFuIHN1Y2Nlc3MgdmFsdWUsIGlzbid0DQo+ID4gPiBjb21wYXJl LWFuZC1zZXQgdGhlIGFwcHJvcHJpYXRlIHRlcm0/DQo+ID4gSSB3YXMgdGhpbmtpbmcgb2YgdGhl IG1lbW9yeSBvcmRlcmluZyBwYXJhbWV0ZXJzIHRoYXQgX19hdG9taWNfeHh4IGJ1aWx0aW5zDQo+ ID4gaGF2ZSBhbmQgd2Ugd2FudCAoZnJvbSBhbiBBcm0gcGVyc3BlY3RpdmUpLg0KPiA+IA0KPiA+ IEdDQyBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlIGFsc28gcmV0dXJucyBhIGJvb2xlYW4uDQo+ ID4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9fMDA1Zl8wMDVmYXRvbWljLUJ1 aWx0aW5zLmh0bWwNCj4gPiBib29sIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbiAodHlwZSAq cHRyLCB0eXBlICpleHBlY3RlZCwgdHlwZSBkZXNpcmVkLA0KPiA+IGJvb2wgd2VhaywgaW50IHN1 Y2Nlc3NfbWVtb3JkZXIsIGludCBmYWlsdXJlX21lbW9yZGVyKSBib29sDQo+ID4gX19hdG9taWNf Y29tcGFyZV9leGNoYW5nZSAodHlwZSAqcHRyLCB0eXBlICpleHBlY3RlZCwgdHlwZSAqZGVzaXJl ZCwgYm9vbA0KPiA+IHdlYWssIGludCBzdWNjZXNzX21lbW9yZGVyLCBpbnQgZmFpbHVyZV9tZW1v cmRlcikNCj4gPiANCj4gPiBydGVfYXRvbWljMTI4X2NvbXBhcmVfZXhjaGFuZ2UocnRlX2ludDEy OF90ICpkc3QsIGNvbnN0IHJ0ZV9pbnQxMjhfdCAqZXhwLA0KPiA+IGNvbnN0IHJ0ZV9pbnQxODJf dCAqc3JjLCBib29sIHdlYWssIGludCBtb19zdWNjZXNzLCBpbnQgbW9fZmFpbHVyZSk7DQo+ID4g DQo+IEkgYXNzdW1lZCBHQ0MgY2hvc2UgdGhlIG5hbWUgImV4Y2hhbmdlIiBiZWNhdXNlIHRoZSBi dWlsdGluIG1vZGlmaWVzICdleHAnIG9uDQo+IGZhaWx1cmUsIGJ1dCBJIGNvdWxkIGJlIHdyb25n Lg0KWW91IGFyZSBwcm9iYWJseSByaWdodC4gQnV0IGV4Y2hhbmdlIGRvZXNuJ3QgbmVjZXNzYXJ5 IG1lYW4gdGhhdCB0aGUgb2xkIHZhbHVlDQppcyByZXR1cm5lZCwganVzdCB0aGF0IGl0IGlzIHJl cGxhY2VkIHdpdGggYSBkaWZmZXJlbnQgdmFsdWU/DQpIb3dldmVyIF9fYXRvbWljX2V4Y2hhbmdl KCkgKHVuY29uZGl0aW9uYWxseSkgcmV0dXJucyB0aGUgb2xkIHZhbHVlIHNvIHRoZXJlIGlzDQpz b21lIHByZWNlZGVudCBmb3IgcmV0dW5ybmluZyB0aGUgb2xkIHZhbHVlLiBBbmQgaXQgY2FuIGJl IGRvbmUsIGp1c3Qgbm90DQpndWFyYW50ZWVkIHRvIGJlIGF0b21pYy4gUGVyaGFwcyB0aGVyZSBp cyBhIHdheSB0byBib3RoIGVhdCBhbmQgaGF2ZSB0aGUgY2FrZT8NCg0KUmUtdXNlIHRoZSBwcm90 b3R5cGUgb2YgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV8xNigpIHNvIG11c3QgcmV0dXJuIGEg dmFsdWUgaWYNCnRoZSBjb21wYXJpc29uIGZhaWxzLiBCdXQgZGVwZW5kaW5nIG9uIHRoZSAnd2Vh aycgZmxhZywgd2UgZm9yIHdlYWs9ZmFsc2UNCnJlcXVpcmUgYW4gYXRvbWljIHJlYWQgd2hpY2gg b24gQVJNdjguMCBtdXN0IGJlIGFjY29tcGxpc2hlZCBieSB3cml0aW5nIGJhY2sgdGhlDQpvbGQg dmFsdWUgKGlmIHRoZSBjb21wYXJpc29uIGZhaWxzKS4gT3IgZm9yIHdlYWs9dHJ1ZSB3ZSBhbGxv dyBib3RoIHNwdXJpb3VzDQpMTC9TQyBmYWlsdXJlcyAodGhpcyBpcyB3aGF0IHRoZSB3ZWFrIHBh cmFtZXRlciBpcyBmb3IpIGFuZCBub24tYXRvbWljIHJlYWQgb2YNCnRoZSBvbGQgdmFsdWUgKHRo aXMgaXMgbXkgJ2ZyYWlsJyBhdG9taWMgY29tcGFyZSBhbmQgZXhjaGFuZ2UgaW4gbGZyaW5nKS4N Cg0KVGhlIEdDQyBkb2N1bWVudGF0aW9uIHNheXMgdGhpczoNCiJJZiB0aGV5IGFyZSBub3QgZXF1 YWwsIHRoZSBvcGVyYXRpb24gaXMgYSByZWFkIGFuZCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBw dHINCmFyZSB3cml0dGVuIGludG8gZXhwZWN0ZWQuIg0KV2UgZm9sbG93IHRoaXMgYnV0IGp1c3Qg ZG9uJ3QgZ3VhcmFudGVlIGFuIGF0b21pYyByZWFkIChmb3Igd2Vhaz10cnVlKS4NCg0KYm9vbA0K cnRlX2F0b21pYzEyOF9jb21wYXJlX2V4Y2hhbmdlKHJ0ZV9pbnQxMjhfdCAqZHN0LA0KwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBydGVfaW50MTI4X3QgKmV4 cCwgLy9Ob3RlIG5vIGNvbnN0IG5vdw0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBjb25zdCBydGVfaW50MTI4X3QgKnNyYywNCsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYm9vbCB3ZWFrLA0KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnQgbW9fc3VjY2VzcywNCsKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW50IG1vX2ZhaWx1cmUpOw0K DQoNCj4gIEknbSBmaW5lIHdpdGggZWl0aGVyIG5hbWUuIEFueW9uZSBlbHNlIGhhdmUgYSBwcmVm ZXJlbmNlPw0KDQo+IA0KPiA8c25pcD4NCi0tIA0KT2xhIExpbGplZGFobCwgTmV0d29ya2luZyBT eXN0ZW0gQXJjaGl0ZWN0LCBBcm0NClBob25lICs0NjcwNjg2NjM3MywgU2t5cGUgb2xhLmxpbGpl ZGFobA0KDQo=