From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50086.outbound.protection.outlook.com [40.107.5.86]) by dpdk.org (Postfix) with ESMTP id A63B54C8E; Mon, 8 Oct 2018 13:21:45 +0200 (CEST) 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=XA3FPR4b+KogFKhQ4fpCpVlT++jnwV2liDKU/+DXTm4=; b=eseySE8Kr8BZevnu4V4OZBlvSd3zOTEJiYilMrTnJBRGDOtZNp3PUSCQIqqeKgZ9Q0PDXDmeefw842zyFfnno2AHtREuyHS3Q43OfTtjJJxlgfQcoNxgD+4SYGWZJpNg/A0Ua4mlzSvJ+GAr9oTEq6nyQ44O1RqRF+Fk6gJHsHw= Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com (10.168.95.140) by HE1PR0801MB1722.eurprd08.prod.outlook.com (10.168.149.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.21; Mon, 8 Oct 2018 11:21:42 +0000 Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20]) by HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20%11]) with mapi id 15.20.1207.024; Mon, 8 Oct 2018 11:21:42 +0000 From: Ola Liljedahl To: Jerin Jacob CC: "dev@dpdk.org" , Honnappa Nagarahalli , "Ananyev, Konstantin" , "Gavin Hu (Arm Technology China)" , Steve Capper , nd , "stable@dpdk.org" Thread-Topic: [PATCH v3 1/3] ring: read tail using atomic load Thread-Index: AQHUTl7o9KT3/H6K10G5NrmKOHANTqUHJ0+AgAjF7gCAAH79gIAAUg2AgAAF3wCAAAI9gIAAGFMAgAAgVICAADHKgIAAAE+AgAAkl4D//+HIgIAAIteAgACY7ICAAOuGgIAAaawAgAE5hICAAHtkgIAAWCoA///pGICAACiyAP//5GMAAAVn6YA= Date: Mon, 8 Oct 2018 11:21:42 +0000 Message-ID: References: <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> <20181006074126.GA16715@jerin> <20181007040243.GA1850@jerin> <7A156041-23EC-4CCB-B129-3607AF34A992@arm.com> <20181008060629.GA5228@jerin> <063A95EC-CFC1-42F7-B864-DFB9C6718AC8@arm.com> <20181008100004.GB11081@jerin> <20181008104653.GC11081@jerin> In-Reply-To: <20181008104653.GC11081@jerin> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/10.11.0.180909 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1722; 6:pKuOx2gJiLduv4km5XNEZ1NUuAi5iqx7eoaWZp7DxR9L+bhzb7R3M928khQgkUmbZYyzRHRqitAugDueqoSFDD+FAwndpVPnlyW39/6SbI0O8yJlnfBrqoq7Sr3Jz5VIw3yF38i7mVLkzOh2yCZ9gueNqA2A8VSvFzXSnkx1vcFxQI6IxDNQMipNpOpQkt+Mn6YqRR+rh2FE3MDrYfaCmfJYnN1NCQLz98ZO03azcOu/Va3YMKHU26QdNC5XtvP970eFiiUHY1q8JLL7g8x9ikpVGcRVxHpzE+2ilchPEEwFGuexGlOO8Rjuet31THnj6hmV9OwzeiFJd2DfEzxXOhfI6Osl3ZdEkdHHyNDi9w7+aHClgiB6dGBXY31Y8FxRcutYvW2xbM5u3K2dqCOO1EMDmLLbthA/WEk1Zqc+YNs02+Ol29+CYjcVOlgaDevnDH5EWJBTthWhU1oMvLtpNA==; 5:yhxan3YeukbBqPQo/5z5HqXCU8KA0RsdpccDQB+ZgEq5fNC2vl+pAQtgrQ8sapWYtqaqkhMo9F8YKb4RSuPZl3aV2LiDt0+wsDkj1WB64Cb0xvlR2uoGrbZGktaF72o2LJUS0LsZb2Asn/EZsFJbVnlztkdMTyPAkGIs8PaC10A=; 7:2QP6Dr2XZmigekPfIQCQXUUoHw+osgbdeJurErCFy10ifDCHOeGmIeM2DqCL1i2yUr+1GOsfX60XKZyocPs9Q0Jw9CpWGdPNoLYJGkTDWXdnfcU7j6fcHnuC1X22B/O3d851GfxEisY038p9GUoCAYQ8dRP8Go7cnQ4iw1eeysDgn4hBpJWowqaK15Fv1GSAG0Xdsd25A0iD8+vvyl1fnbD2e0rA6Epm8ehsipqtcMouJalRceFL2/q9cK8tr1LR x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: bd44274c-4de4-4e03-3d77-08d62d103989 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1722; x-ms-traffictypediagnostic: HE1PR0801MB1722: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(166708455590820)(180628864354917)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051); SRVR:HE1PR0801MB1722; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1722; x-forefront-prvs: 081904387B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(136003)(366004)(376002)(346002)(396003)(189003)(199004)(13464003)(26005)(6436002)(102836004)(6506007)(53546011)(76176011)(7736002)(305945005)(256004)(14444005)(6116002)(186003)(5660300001)(3846002)(6246003)(33656002)(229853002)(19627235002)(83716004)(71190400001)(105586002)(53936002)(8936002)(68736007)(8676002)(81166006)(81156014)(71200400001)(106356001)(4744004)(316002)(54906003)(58126008)(5250100002)(11346002)(2616005)(446003)(6512007)(99286004)(486006)(6916009)(93886005)(6306002)(66066001)(25786009)(2900100001)(72206003)(14454004)(966005)(45080400002)(478600001)(86362001)(82746002)(2906002)(476003)(97736004)(4326008)(36756003)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1722; H:HE1PR0801MB2076.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-microsoft-antispam-message-info: fBE3JpRFm92gCjyukOcO4NVaWeJ6LegJonAQE1amKd9KE/wMhx2shnH3qbKvVIV8bpmSojGhuE7lrg7Q9T0ZKgPXZ+vPhpttO/6z7ApGfeweZI20pItJBAkQEXPOlsjEkGZAyOX50xNr8J6lNS1WxGiFDJAUmsbcb9VU/c77ysfebE5STuMyz/4KTXinKR4alD39xwVmt2jUoDM0lLtPx+4ahG4pO9M9gORIlme1O2sbhZwAT6GeqplmqqegAehpVUW93TIX1Yjh1K2oHYoJRguoag8OHlkvF1YnnY/kVeao8CE/+U/n4m1tgIyToDJ8YfEgjrnx6zvPuXQvRpXBaTJcMGlfDPx8uF23stS1Nzs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd44274c-4de4-4e03-3d77-08d62d103989 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2018 11:21:42.6094 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1722 Subject: Re: [dpdk-dev] [PATCH v3 1/3] ring: read tail using atomic load 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: Mon, 08 Oct 2018 11:21:46 -0000 DQoNCu+7v09uIDA4LzEwLzIwMTgsIDEyOjQ3LCAiSmVyaW4gSmFjb2IiIDxqZXJpbi5qYWNvYkBj YXZpdW1uZXR3b3Jrcy5jb20+IHdyb3RlOg0KDQogICAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCiAgICA+IERhdGU6IE1vbiwgOCBPY3QgMjAxOCAxMDoyNTo0NSArMDAwMA0KICAgID4gRnJv bTogT2xhIExpbGplZGFobCA8T2xhLkxpbGplZGFobEBhcm0uY29tPg0KICAgID4gVG86IEplcmlu IEphY29iIDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQogICAgPiBDQzogImRldkBk cGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQogICAgPiAgPEhv bm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+LCAiQW5hbnlldiwgS29uc3RhbnRpbiINCiAgICA+ ICA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4sICJHYXZpbiBIdSAoQXJtIFRlY2hub2xv Z3kgQ2hpbmEpIg0KICAgID4gIDxHYXZpbi5IdUBhcm0uY29tPiwgU3RldmUgQ2FwcGVyIDxTdGV2 ZS5DYXBwZXJAYXJtLmNvbT4sIG5kIDxuZEBhcm0uY29tPiwNCiAgICA+ICAic3RhYmxlQGRwZGsu b3JnIiA8c3RhYmxlQGRwZGsub3JnPg0KICAgID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAxLzNd IHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gdXNlci1hZ2VudDogTWlj cm9zb2Z0LU1hY091dGxvb2svMTAuMTEuMC4xODA5MDkNCiAgICA+IA0KICAgID4gDQogICAgPiBP biAwOC8xMC8yMDE4LCAxMjowMCwgIkplcmluIEphY29iIiA8amVyaW4uamFjb2JAY2F2aXVtbmV0 d29ya3MuY29tPiB3cm90ZToNCiAgICA+IA0KICAgID4gICAgIC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQogICAgPiAgICAgPiBEYXRlOiBNb24sIDggT2N0IDIwMTggMDk6MjI6MDUgKzAwMDAN CiAgICA+ICAgICA+IEZyb206IE9sYSBMaWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4N CiAgICA+ICAgICA+IFRvOiBKZXJpbiBKYWNvYiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3Mu Y29tPg0KICAgID4gICAgID4gQ0M6ICJkZXZAZHBkay5vcmciIDxkZXZAZHBkay5vcmc+LCBIb25u YXBwYSBOYWdhcmFoYWxsaQ0KICAgID4gICAgID4gIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0u Y29tPiwgIkFuYW55ZXYsIEtvbnN0YW50aW4iDQogICAgPiAgICAgPiAgPGtvbnN0YW50aW4uYW5h bnlldkBpbnRlbC5jb20+LCAiR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKSINCiAgICA+ ICAgICA+ICA8R2F2aW4uSHVAYXJtLmNvbT4sIFN0ZXZlIENhcHBlciA8U3RldmUuQ2FwcGVyQGFy bS5jb20+LCBuZCA8bmRAYXJtLmNvbT4sDQogICAgPiAgICAgPiAgInN0YWJsZUBkcGRrLm9yZyIg PHN0YWJsZUBkcGRrLm9yZz4NCiAgICA+ICAgICA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8z XSByaW5nOiByZWFkIHRhaWwgdXNpbmcgYXRvbWljIGxvYWQNCiAgICA+ICAgICA+IHVzZXItYWdl bnQ6IE1pY3Jvc29mdC1NYWNPdXRsb29rLzEwLjExLjAuMTgwOTA5DQogICAgPiAgICAgPg0KICAg ID4gICAgID4gRXh0ZXJuYWwgRW1haWwNCiAgICA+ICAgICA+DQogICAgPiAgICAgPiBPbiAwOC8x MC8yMDE4LCAwODowNiwgIkplcmluIEphY29iIiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3Mu Y29tPiB3cm90ZToNCiAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCiAgICA+ICAgICA+ICAgICA+IERhdGU6IFN1biwgNyBPY3QgMjAxOCAyMDo0 NDo1NCArMDAwMA0KICAgID4gICAgID4gICAgID4gRnJvbTogT2xhIExpbGplZGFobCA8T2xhLkxp bGplZGFobEBhcm0uY29tPg0KICAgID4gICAgID4gICAgID4gVG86IEplcmluIEphY29iIDxqZXJp bi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQogICAgPiAgICAgPiAgICAgPiBDQzogImRldkBk cGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQogICAgPiAgICAg PiAgICAgPiAgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+LCAiQW5hbnlldiwgS29uc3Rh bnRpbiINCiAgICA+ICAgICA+ICAgICA+ICA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4s ICJHYXZpbiBIdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIg0KICAgID4gICAgID4gICAgID4gIDxH YXZpbi5IdUBhcm0uY29tPiwgU3RldmUgQ2FwcGVyIDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT4sIG5k IDxuZEBhcm0uY29tPiwNCiAgICA+ICAgICA+ICAgICA+ICAic3RhYmxlQGRwZGsub3JnIiA8c3Rh YmxlQGRwZGsub3JnPg0KICAgID4gICAgID4gICAgID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAx LzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gICAgID4gICAgID4g dXNlci1hZ2VudDogTWljcm9zb2Z0LU1hY091dGxvb2svMTAuMTEuMC4xODA5MDkNCiAgICA+ICAg ICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBDb3Vs ZCB5b3UgcGxlYXNlIGZpeCB0aGUgZW1haWwgY2xpZW50IGZvciBpbmxpbmUgcmVwbHkuDQogICAg PiAgICAgPiBTb3JyeSB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSBwb3NzaWJsZSB3aXRoIE91dGxv b2sgZm9yIE1hYyAxNiBvciBPZmZpY2UzNjUuIFRoZSBvZmZpY2lhbCBPZmZpY2UzNjUvT3V0bG9v aw0KICAgID4gICAgID4gZG9jdW1lbnRhdGlvbiBkb2Vzbid0IG1hdGNoIHRoZSBhY3R1YWwgdXNl ciBpbnRlcmZhY2UuLi4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAg ICA+ICAgICA+ICAgICBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL3Y0LjE5LXJjNy9w cm9jZXNzL2VtYWlsLWNsaWVudHMuaHRtbA0KICAgID4gICAgID4NCiAgICA+ICAgICA+DQogICAg PiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gT24gMDcvMTAvMjAxOCwgMDY6MDMsICJK ZXJpbiBKYWNvYiIgPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4gd3JvdGU6DQogICAg PiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgIEluIGFybTY0IGNhc2UsIGl0IHdp bGwgaGF2ZSBBVE9NSUNfUkVMQVhFRCBmb2xsb3dlZCBieSBhc20gdm9sYXRpbGUgKCIiOjo6Im1l bW9yeSIpIG9mIHJ0ZV9wYXVzZSgpLg0KICAgID4gICAgID4gICAgID4gICAgIEkgd291bGQgbid0 IGhhdmUgYW55IGlzc3VlLCBpZiB0aGUgZ2VuZXJhdGVkIGNvZGUgY29kZSBpcyBzYW1lIG9yIGJl dHRlciB0aGFuIHRoZSBleGl0aW5nIGNhc2UuIGJ1dCBpdCBub3QgdGhlIGNhc2UsIFJpZ2h0Pw0K ICAgID4gICAgID4gICAgID4gVGhlIGV4aXN0aW5nIGNhc2UgaXMgYWN0dWFsbHkgbm90IGludGVy ZXN0aW5nIChJTU8pIGFzIGl0IGV4cG9zZXMgdW5kZWZpbmVkIGJlaGF2aW91ciB3aGljaCBhbGxv d3MgdGhlIGNvbXBpbGVyIHRvIGRvIGFueXRoaW5nLiBCdXQgeW91IHNlZW0gdG8gYmUgc2F0aXNm aWVkIHdpdGggIndvcmtzIGZvciBtZSwgcmlnaHQgaGVyZSByaWdodCBub3ciLiBJIHRoaW5rIHRo ZSBjb3N0IG9mIGF2b2lkaW5nIHVuZGVmaW5lZCBiZWhhdmlvdXIgaXMgYWNjZXB0YWJsZSAoYWN0 dWFsbHkgSSBkb24ndCB0aGluayBpdCBldmVuIHdpbGwgYmUgbm90aWNlYWJsZSkuDQogICAgPiAg ICAgPg0KICAgID4gICAgID4gICAgIEkgYW0gbm90IGNvbnZpbmNlZCBiZWNhdXNlIG9mIHVzZSBv ZiB2b2xhdGlsZSBpbiBoZWFkIGFuZCB0YWlsIGluZGV4ZXMuDQogICAgPiAgICAgPiAgICAgRm9y IG1lIHRoYXQgYnJpbmdzIHRoZSBkZWZpbmVkIGJlaGF2aW9yLg0KICAgID4gICAgID4gQXMgbG9u ZyBhcyB5b3UgZG9uJ3QgbWl4IGluIEMxMSBhdG9taWMgYWNjZXNzZXMgKGp1c3QgdXNlICJwbGFp biIgYWNjZXNzZXMgdG8gdm9sYXRpbGUgb2JqZWN0cyksDQogICAgPiAgICAgPiBpdCBpcyBBRkFJ SyBkZWZpbmVkIGJlaGF2aW91ciAoYnV0IG5vdCBuZWNlc3NhcmlseSB1c2luZyBhdG9taWMgbG9h ZHMgYW5kIHN0b3JlcykuIEJ1dCBJIHF1b3RlZA0KICAgID4gICAgID4gdGhlIEMxMSBzcGVjIHdo ZXJlIGl0IGV4cGxpY2l0bHkgbWVudGlvbnMgdGhhdCBtaXhpbmcgYXRvbWljIGFuZCBub24tYXRv bWljIGFjY2Vzc2VzIHRvIHRoZSBzYW1lDQogICAgPiAgICAgPiBvYmplY3QgaXMgdW5kZWZpbmVk IGJlaGF2aW91ci4gRG9uJ3QgYXJndWUgd2l0aCBtZSwgYXJndWUgd2l0aCB0aGUgQzExIHNwZWMu DQogICAgPiAgICAgPiBJZiB5b3Ugd2FudCB0byBkaXNvYmV5IHRoZSBzcGVjLCB0aGlzIHNob3Vs ZCBhdCBsZWFzdCBiZSBjYWxsZWQgb3V0IGZvciBpbiB0aGUgY29kZSB3aXRoIGEgY29tbWVudC4N CiAgICA+IA0KICAgID4gICAgIFRoYXQncyBib2lscyBkb3duIG9ubHkgb25lIHF1ZXN0aW9uLCBz aG91bGQgd2UgZm9sbG93IEMxMSBzcGVjPyBXaHkgbm90IG9ubHkgdGFrZSBsb2FkDQogICAgPiAg ICAgYWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1hbnRpY3Mgb25seSBqdXN0IGxpa2UgTGlu dXgga2VybmVsIGFuZCBGcmVlQlNELg0KICAgID4gQW5kIGludHJvZHVjZSBldmVuIG1vcmUgdW5k ZWZpbmVkIGJlaGF2aW91cj8NCiAgICANCiAgICANCiAgICBZZXMuIFRoZSBhbGwgd29ybGQoTGlu dXggYW5kIEZyZWVic2QpIGlzIHJ1bm5pbmcgd2l0aCB1bmRlZmluZWQgYmVoYXZpb3IgYW5kIHN0 aWxsIGl0IHJ1bnMuDQpBcmUgeW91IHNheWluZyB0aGF0IExpbnV4IGtlcm5lbCBpcyB1c2luZyBH Q0MgX19hdG9taWMgb3IgQzExIF9BdG9taWMvc3RkYXRvbWljLmggZmVhdHVyZXM/DQpJIGNhbid0 IHNlZSBhbnkgdHJhY2VzIG9mIHRoaXMgaW4gZS5nLiBMaW51eCA0LjYuDQoNCkl0IHNlZW1zIGxp a2UgeW91IGRvbid0IHVuZGVyc3RhbmQuIFRoZSB1bmRlZmluZWQgYmVoYXZpb3VyIGNvbWVzIGZy b20gbWl4aW5nIG5vbi1hdG9taWMgYW5kIGF0b21pYyBhY2Nlc3Nlcw0KaW4gdGhlIEMxMSBzb3Vy Y2UgY29kZS4gSXQgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRvIGRvIGFib3V0IGlmIGEgcmVhZCBv ciB3cml0ZSBvZiBhIHZvbGF0aWxlIG9iamVjdCBpcyB0cmFuc2xhdGVkDQp0byBhbiBpbnN0cnVj dGlvbiB0aGF0IG1heSBvciBtYXkgbm90IHByb3ZpZGUgYW4gYXRvbWljIGxvYWQgb3Igc3RvcmUg Zm9yIHNvbWUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHRoYXQNCnlvdSBhcmUgY29tcGlsaW5nIGZv ci4NCg0KU2luY2UgdGhlIExpbnV4IGtlcm5lbCAoQUZBSUspIGRvZXNuJ3QgdXNlIEMxMSBfQXRv bWljIGRhdGF0eXBlcyBvciBHQ0MgX19hdG9taWMgYnVpbHRpbnMsIHRoZXJlIGlzIG5vDQp1bmRl ZmluZWQgYmVoYXZpb3VyIHBlciB0aGUgQzExIHN0YW5kYXJkLiBCdXQgaXQgaXMgcmVseWluZyBv biBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBiZWhhdmlvdXIgKHdoaWNoDQpJIGdyYW50IGlzIG5v dCBzbyBsaWtlbHkgdG8gY2hhbmdlIGR1ZSB0byBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZXF1 aXJlbWVudHMpLg0KDQogICAgDQogICAgDQogICAgDQogICAgPiANCiAgICA+ICAgICBEb2VzIG5v dCBsb29rIGxpa2UgQzExIG1lbW9yeSBtb2RlbCBpcyBzdXBlciBlZmZpY2llbnQgaW4gdGVybSBv ZiBnY2MNCiAgICA+ICAgICBpbXBsZW1lbnRhdGlvbi4NCiAgICA+IFlvdSBhcmUgbWFraW5nIGEg Y2hpY2tlbiBvdXQgb2YgYSBmZWF0aGVyLg0KICAgID4gDQogICAgPiBJIHRoaW5rIHRoaXMgInBy b2JsZW0iIHdpdGggb25lIGFkZGl0aW9uYWwgQUREIGluc3RydWN0aW9uIHdpbGwgb25seSBjb25j ZXJuIF9fYXRvbWljX2xvYWRfbihfX0FUT01JQ19SRUxBWEVEKSBhbmQgX19hdG9taWNfc3RvcmVf bihfX0FUT01JQ19SRUxBWEVEKSBiZWNhdXNlIHRoZSBjb21waWxlciBzZXBhcmF0ZXMgdGhlIGFk ZHJlc3MgZ2VuZXJhdGlvbiAoYWRkIG9mZnNldCBvZiBzdHJ1Y3QgbWVtYmVyKSBmcm9tIHRoZSBs b2FkIG9yIHN0b3JlIGl0c2VsZi4gRm9yIG90aGVyIGF0b21pYyBvcGVyYXRpb25zIGFuZCBtZW1v cnkgb3JkZXJpbmdzIChlLmcuIF9fYXRvbWljX2xvYWRfbihfX0FUT01JQ19BQ1FVSVJFKSwgdGhl IGV4dHJhIEFERCBpbnN0cnVjdGlvbiB3aWxsIGJlIGluY2x1ZGVkIGFueXdheSAoYXMgbG9uZyBh cyB3ZSBhY2Nlc3MgYSBub24tZmlyc3Qgc3RydWN0IG1lbWJlcikgYmVjYXVzZSBlLmcuIExEQVIg b25seSBhY2NlcHRzIGEgYmFzZSByZWdpc3RlciB3aXRoIG5vIG9mZnNldC4NCiAgICA+IA0KICAg ID4gSSBzdWdnZXN0IG1pbmltaXNpbmcgdGhlIGltcG9zZWQgbWVtb3J5IG9yZGVyaW5ncyBjYW4g aGF2ZSBhIG11Y2ggbGFyZ2VyIChwb3NpdGl2ZSkgZWZmZWN0IG9uIHBlcmZvcm1hbmNlIGNvbXBh cmVkIHRvIGF2b2lkaW5nIG9uZSBBREQgaW5zdHJ1Y3Rpb24gKG1lbW9yeSBhY2Nlc3NlcyBhcmUg bXVjaCBzbG93ZXIgdGhhbiBDUFUgQUxVIGluc3RydWN0aW9ucykuDQogICAgPiBVc2luZyBDMTEg bWVtb3J5IG1vZGVsIGFuZCBpZGVudGlmeWluZyBleGFjdGx5IHdoaWNoIG9iamVjdHMgYXJlIHVz ZWQgZm9yIHN5bmNocm9uaXNhdGlvbiBhbmQgd2hldGhlciAoYW55KSB1cGRhdGVzIHRvIHNoYXJl ZCBtZW1vcnkgYXJlIGFjcXVpcmVkIG9yIHJlbGVhc2VkIChubyB1cGRhdGVzIHRvIHNoYXJlZCBt ZW1vcnkgbWVhbnMgcmVsYXhlZCBvcmRlciBjYW4gYmUgdXNlZCkgd2lsbCBwcm92aWRlIG1heGlt dW0gZnJlZWRvbSB0byB0aGUgY29tcGlsZXIgYW5kIGhhcmR3YXJlIHRvIGdldCB0aGUgYmVzdCBy ZXN1bHQuDQogICAgDQogICAgTm8gbW9yZSBjb21tZW50cyBvbiB0aGlzLiBJdCBpcyBub3QgZGF0 YSBkcml2ZW4uDQpOb3cgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCB3b3VsZCBiZSBpbnRlcmVzdGlu ZyB0byBiZW5jaG1hcmsuIEkgZG9uJ3Qga25vdyB0byB3aGF0DQpleHRlbnQgY3VycmVudCBjb21w aWxlcnMgYWN0dWFsbHkgdXRpbGlzZSB0aGUgZnJlZWRvbXMgdG8gb3B0aW1pc2UgbWVtb3J5IGFj Y2Vzc2VzDQphY2NvcmRpbmcgdG8gZS5nLiBhY3F1aXJlIGFuZCByZWxlYXNlIG9yZGVyaW5nIG9m IHN1cnJvdW5kaW5nIGF0b21pYyBvcGVyYXRpb25zLg0KQnV0IEkgd291bGQgbGlrZSB0byBrbm93 IGFuZCB0aGlzIGNvdWxkIHBvc3NpYmx5IGFsc28gbGVhZCB0byBzdWdnZXN0aW9ucyB0byBjb21w aWxlcg0KZGV2ZWxvcGVycy4gSSBkb24ndCB0aGluayB0aGVyZSBhcmUgdG9vIG1hbnkgbXVsdGl0 aHJlYWRlZCBiZW5jaG1hcmtzIGFuZCBldmVuIGZld2VyDQp3aGljaCBkb24ndCB1c2UgbG9ja3Mg YW5kIG90aGVyIHN5bmNocm9uaXNhdGlvbiBtZWNoYW5pc21zIGZyb20gT1MncyBhbmQgbGlicmFy aWVzLg0KQnV0IEkgaGF2ZSBzb21lIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIGFuZCBiZW5j aG1hcmtzLg0KDQoNCiAgICANCiAgICANCiAgICA+IA0KICAgID4gVGhlIEZyZWVCU0QgYW5kIERQ REsgcmluZyBidWZmZXJzIHNob3cgc29tZSBmdW5kYW1lbnRhbCBtaXN1bmRlcnN0YW5kaW5ncyBo ZXJlLiBJbnN0ZWFkIGV4Y2Vzc2l2ZSBvcmRlcmluZ3MgYW5kIGV4cGxpY2l0IGJhcnJpZXJzIGhh dmUgYmVlbiB1c2VkIGFzIGJhbmQtYWlkcywgd2l0aCB1bmtub3duIGVmZmVjdHMgb24gcGVyZm9y bWFuY2UuDQogICAgPiANCiAgICA+IA0KICAgID4gICAgID4NCiAgICA+ICAgICA+DQogICAgPiAg ICAgPiAgICAgVGhhdCB0aGUgcmVhc29uIHdoeSBJIHNoYXJlZA0KICAgID4gICAgID4gICAgIHRo ZSBnZW5lcmF0ZWQgYXNzZW1ibHkgY29kZS4gSWYgeW91IHRoaW5rIG90aGVyIHdheSwgUGljayBh bnkgY29tcGlsZXINCiAgICA+ICAgICA+ICAgICBhbmQgc2VlIGdlbmVyYXRlZCBvdXRwdXQuDQog ICAgPiAgICAgPiBUaGlzIGlzIHdoYXQgb25lIGNvbXBpbGVyIGZvciBvbmUgYXJjaGl0ZWN0dXJl IGdlbmVyYXRlcyB0b2RheS4gVGhlc2UgdGhpbmdzIGNoYW5nZS4gT3RoZXIgdGhpbmdzDQogICAg PiAgICAgPiB0aGF0IHVzZWQgdG8gd29yayBvciB3b3JrZWQgZm9yIHNvbWUgc3BlY2lmaWMgYXJj aGl0ZWN0dXJlIGhhcyBzdG9wcGVkIHdvcmtpbmcgaW4gbmV3ZXIgdmVyc2lvbnMgb2YNCiAgICA+ ICAgICA+IHRoZSBjb21waWxlci4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAg ID4gICAgIEFuZA0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICBGcmVlYnNkIGltcGxlbWVu dGF0aW9uIG9mIHJpbmcgYnVmZmVyKFdoaWNoIERQREsgZGVyaXZlZCBmcm9tKSwgRG9uJ3QgaGF2 ZQ0KICAgID4gICAgID4gICAgIHN1Y2ggbG9naWMsIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZnJl ZWJzZC9mcmVlYnNkL2Jsb2IvbWFzdGVyL3N5cy9zeXMvYnVmX3JpbmcuaCNMMTA4DQogICAgPiAg ICAgPiBJdCBsb29rcyBsaWtlIEZyZWVCU0QgdXNlcyBzb21lIGtpbmQgb2YgQzExIGF0b21pYyBt ZW1vcnkgbW9kZWwtaW5zcGlyZWQgQVBJIGFsdGhvdWdoIEkgZG9uJ3Qgc2VlDQogICAgPiAgICAg PiBleGFjdGx5IGhvdyBlLmcuIGF0b21pY19zdG9yZV9yZWxfaW50KCkgaXMgaW1wbGVtZW50ZWQu IFRoZSBjb2RlIGFsc28gbWl4ZXMgaW4gZXhwbGljaXQgYmFycmllcnMNCiAgICA+ICAgICA+IHNv IGRlZmluaXRpdmVseSBub3QgcHVyZSBDMTEgbWVtb3J5IG1vZGVsIHVzYWdlLiBBbmQgZmluYWxs eSwgaXQgZG9lc24ndCBlc3RhYmxpc2ggdGhlIHByb3Blcg0KICAgID4gICAgID4gbG9hZC1hY3F1 aXJlL3N0b3JlLXJlbGVhc2UgcmVsYXRpb25zaGlwcyAoZS5nLiBzdG9yZS1yZWxlYXNlIGNvbnNf dGFpbCByZXF1aXJlcyBhIGxvYWQtYWNxdWlyZSBjb25zX3RhaWwsDQogICAgPiAgICAgPiBzYW1l IGZvciBwcm9kX3RhaWwpLg0KICAgID4gICAgID4NCiAgICA+ICAgICA+ICIqIG11bHRpLXByb2R1 Y2VyIHNhZmUgbG9jay1mcmVlIHJpbmcgYnVmZmVyIGVucXVldWUiDQogICAgPiAgICAgPiBUaGUg Y29tbWVudCBpcyBhbHNvIHdyb25nLiBUaGlzIGRlc2lnbiBpcyBub3QgbG9jay1mcmVlLCBob3cg Y291bGQgaXQgYmUgd2hlbiB0aGVyZSBpcyBzcGlubmluZw0KICAgID4gICAgID4gKHdhaXRpbmcp IGZvciBvdGhlciB0aHJlYWRzIGluIHRoZSBjb2RlPyBJZiBhIHRocmVhZCBtdXN0IHdhaXQgZm9y IG90aGVyIHRocmVhZHMsIHRoZW4gYnkgZGVmaW5pdGlvbg0KICAgID4gICAgID4gdGhlIGRlc2ln biBpcyBibG9ja2luZy4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPiBTbyB5b3UgYXJlIHNheWlu ZyB0aGF0IGJlY2F1c2UgRnJlZUJTRCBpcyBkb2luZyBpdCB3cm9uZywgRFBESyBjYW4gYWxzbyBk byBpdCB3cm9uZz8NCiAgICA+ICAgICA+DQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgIFNl ZSBiZWxvdyB0b28uDQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ ICAgICA+IFNraXBwaW5nIHRoZSBjb21waWxlciBtZW1vcnkgYmFycmllciBpbiBydGVfcGF1c2Uo KSBwb3RlbnRpYWxseSBhbGxvd3MgZm9yIG9wdGltaXNhdGlvbnMgdGhhdCBwcm92aWRlIG11Y2gg bW9yZSBiZW5lZml0LCBlLmcuIGhpZGluZyBzb21lIGNhY2hlIG1pc3MgbGF0ZW5jeSBmb3IgbGF0 ZXIgbG9hZHMuIFRoZSBEUERLIHJpbmcgYnVmZmVyIGltcGxlbWVudGF0aW9uIGlzIGRlZmluZWQg c28gdG8gZW5hYmxlIGlubGluaW5nIG9mIGVucXVldWUvZGVxdWV1ZSBmdW5jdGlvbnMgaW50byB0 aGUgY2FsbGVyLCBhbnkgY29kZSBjb3VsZCBpbW1lZGlhdGVseSBmb2xsb3cgdGhlc2UgY2FsbHMu DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gRnJvbSBJTlRFUk5BVElPTkFM IFNUQU5EQVJEIMKpSVNPL0lFQyBJU08vSUVDIDk4OTk6MjAxeA0KICAgID4gICAgID4gICAgID4g UHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIOKAlCBDDQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAg ID4gICAgID4gNS4xLjIuNA0KICAgID4gICAgID4gICAgID4gNCBUd28gZXhwcmVzc2lvbiBldmFs dWF0aW9ucyBjb25mbGljdCBpZiBvbmUgb2YgdGhlbSBtb2RpZmllcyBhIG1lbW9yeSBsb2NhdGlv biBhbmQgdGhlIG90aGVyIG9uZSByZWFkcyBvciBtb2RpZmllcyB0aGUgc2FtZSBtZW1vcnkgbG9j YXRpb24uDQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gMjUgVGhlIGV4ZWN1 dGlvbiBvZiBhIHByb2dyYW0gY29udGFpbnMgYSBkYXRhIHJhY2UgaWYgaXQgY29udGFpbnMgdHdv IGNvbmZsaWN0aW5nIGFjdGlvbnMgaW4gZGlmZmVyZW50IHRocmVhZHMsIGF0IGxlYXN0IG9uZSBv ZiB3aGljaCBpcyBub3QgYXRvbWljLCBhbmQgbmVpdGhlciBoYXBwZW5zIGJlZm9yZSB0aGUgb3Ro ZXIuIEFueSBzdWNoIGRhdGEgcmFjZSByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvci4NCiAg ICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgSU1PLCBCb3RoIGNvbmRpdGlvbiB3aWxsIHNhdGlz ZnkgaWYgdGhlIHZhcmlhYmxlIGlzIHZvbGF0aWxlIGFuZCAzMmJpdCByZWFkIHdpbGwgYXRvbWlj DQogICAgPiAgICAgPiAgICAgZm9yIDMyYiBhbmQgNjRiIG1hY2hpbmVzLiBJZiBub3QsIHRoZSBw cm9ibGVtIHBlcnNpc3QgZm9yIGdlbmVyaWMgY2FzZQ0KICAgID4gICAgID4gICAgIGFzIHdlbGwo bGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX2dlbmVyaWMuaCkNCiAgICA+ICAgICA+IFRoZSByZWFk IGZyb20gYSB2b2xhdGlsZSBvYmplY3QgaXMgbm90IGFuIGF0b21pYyBhY2Nlc3MgcGVyIHRoZSBD MTEgc3BlYy4gSXQganVzdCBoYXBwZW5zIHRvDQogICAgPiAgICAgPiBiZSB0cmFuc2xhdGVkIHRv IGFuIGluc3RydWN0aW9uIChvbiB4ODYtNjQgYW5kIEFBcmNoNjQvQTY0KSB0aGF0IGltcGxlbWVu dHMgYW4gYXRvbWljIGxvYWQuDQogICAgPiAgICAgPiBJIGRvbid0IHRoaW5rIGFueSBjb21waWxl ciB3b3VsZCBjaGFuZ2UgdGhpcyBjb2RlIGdlbmVyYXRpb24gYW5kIHN1ZGRlbmx5IGdlbmVyYXRl IHNvbWUNCiAgICA+ICAgICA+IG5vbi1hdG9taWMgbG9hZCBpbnN0cnVjdGlvbiBmb3IgYSBwcm9n cmFtIHRoYXQgKm9ubHkqIHVzZXMgdm9sYXRpbGUgdG8gZG8gImF0b21pYyIgYWNjZXNzZXMuDQog ICAgPiAgICAgPiBCdXQgYSBmdXR1cmUgY29tcGlsZXIgY291bGQgZGV0ZWN0IHRoZSBtaXggb2Yg YXRvbWljIGFuZCBub24tYXRvbWljIGFjY2Vzc2VzIGFuZCBtYXJrIHRoaXMNCiAgICA+ICAgICA+ IGV4cHJlc3Npb24gYXMgY2F1c2luZyB1bmRlZmluZWQgYmVoYXZpb3VyIGFuZCB0aGF0IHdvdWxk IGhhdmUgY29uc2VxdWVuY2VzIGZvciBjb2RlIGdlbmVyYXRpb24uDQogICAgPiAgICAgPg0KICAg ID4gICAgID4NCiAgICA+ICAgICA+ICAgICBJIGFncmVlIHdpdGggeW91IG9uIEMxMSBtZW1vcnkg bW9kZWwgc2VtYW50aWNzIHVzYWdlLiBUaGUgcmVhc29uIHdoeSBJDQogICAgPiAgICAgPiAgICAg cHJvcG9zZSBuYW1lIGZvciB0aGUgZmlsZSBhcyBydGVfcmluZ19jMTFfbWVtLmggYXMgRFBESyBp dCBzZWxmIGRpZCBub3QNCiAgICA+ICAgICA+ICAgICBoYWQgZGVmaW5pdGlvbnMgZm9yIGxvYWQg YWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1hbnRpY3MuDQogICAgPiAgICAgPiAgICAgSSB3 YXMgbG9va2luZyBmb3IgdGFraW5nIGxvYWQgYWNxdWlyZSBhbmQgc3RvcmUgcmVsZWFzZSBzZW1h bnRpY3MNCiAgICA+ICAgICA+ICAgICBmcm9tIEMxMSBpbnN0ZWFkIG9mIGNyZWF0aW5nIG5ldyBB UEkgbGlrZSBMaW51eCBrZXJuZWwgZm9yIEZyZWVCU0QoQVBJcw0KICAgID4gICAgID4gICAgIGxp a2UgIGF0b21pY19sb2FkX2FjcV8zMigpLCBhdG9taWNfc3RvcmVfcmVsXzMyKCkpLiBJZiB0aGUg ZmlsZSBuYW1lIGlzIHlvdXINCiAgICA+ICAgICA+ICAgICBjb25jZXJuIHRoZW4gd2UgY291bGQg Y3JlYXRlIG5ldyBhYnN0cmFjdGlvbnMgYXMgd2VsbC4gVGhhdCB3b3VsZCBoZWxwDQogICAgPiAg ICAgPiAgICAgZXhpdGluZyBLTkkgcHJvYmxlbSBhcyB3ZWxsLg0KICAgID4gICAgID4gSSBhcHBy ZWNpYXRlIHlvdXIgZW1icmFjZSBvZiB0aGUgQzExIG1lbW9yeSBtb2RlbC4gSSB0aGluayBpdCBp cyBiZXR0ZXIgZm9yIGRlc2NyaWJpbmcNCiAgICA+ICAgICA+IChib3RoIHRvIHRoZSBjb21waWxl ciBhbmQgdG8gaHVtYW5zKSB3aGljaCBhbmQgaG93IG9iamVjdHMgYXJlIHVzZWQgZm9yIHN5bmNo cm9uaXNhdGlvbi4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPiBIb3dldmVyLCBJIGRvbid0IHRo aW5rIGFuIEFQSSBhcyB5b3Ugc3VnZ2VzdCAoYW5kIG90aGVycyBoYXZlIHN1Z2dlc3RlZCBiZWZv cmUsIGUuZy4gYXMNCiAgICA+ICAgICA+IGRvbmUgaW4gT0RQKSBpcyBhIGdvb2QgaWRlYS4gVGhl cmUgaXMgYW4gaW5maW5pdGUgYW1vdW50IG9mIHBvc3NpYmxlIGJhc2UgdHlwZXMsIGFuDQogICAg PiAgICAgPiBpbmNyZWFzaW5nIG51bWJlciBvZiBvcGVyYXRpb25zIGFuZCBhIGJ1bmNoIG9mIGRp ZmZlcmVudCBtZW1vcnkgb3JkZXJpbmdzLCBhICJjb21wbGV0ZSINCiAgICA+ICAgICA+IEFQSSB3 b3VsZCBiZSB2ZXJ5IGxhcmdlIGFuZCBkaWZmaWN1bHQgdG8gdGVzdCwgYW5kIG1vc3QgbWVtYmVy cyBvZiB0aGUgQVBJIHdvdWxkIG5ldmVyIGJlIHVzZWQuDQogICAgPiAgICAgPiBHQ0MgYW5kIENs YW5nIGJvdGggc3VwcG9ydCB0aGUgX19hdG9taWMgaW50cmluc2ljcy4gVGhpcyBBUEkgYXZvaWRz IHRoZSBwcm9ibGVtcyBJDQogICAgPiAgICAgPiBkZXNjcmliZWQgYWJvdmUuIE9yIHdlIGNvdWxk IHVzZSB0aGUgb2ZmaWNpYWwgQzExIHN5bnRheCAoc3RkYXRvbWljLmgpLiBCdXQgdGhlbiB3ZQ0K ICAgID4gICAgID4gaGF2ZSB0aGUgcHJvYmxlbSB3aXRoIHVzaW5nIHByZS1DMTEgY29tcGlsZXJz Li4uDQogICAgPiANCiAgICA+ICAgICBJIGhhdmUgbm8gb2JqZWN0aW9uLCBpZiBldmVyeW9uZSBh Z3JlZXMgdG8gbW92ZSBDMTEgbWVtb3J5IG1vZGVsDQogICAgPiAgICAgd2l0aCBfX2F0b21pYyBp bnRyaW5zaWNzLiBCdXQgaWYgd2UgbmVlZCB0byBrZWVwIGJvdGggaGF2ZSB0aGVuDQogICAgPiAg ICAgYXRvbWljX2xvYWRfYWNxXzMyKCkga2luZCBvZiBBUEkgbWFrZSBzZW5zZS4NCiAgICA+IA0K ICAgID4gDQogICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAgICA+DQogICAgPiAgICAg Pg0KICAgID4gICAgID4gICAgIEkgdGhpbmssIGN1cnJlbnRseSBpdCBtaXhlZCB1c2FnZSBiZWNh dXNlLCB0aGUgc2FtZSB2YXJpYWJsZSBkZWNsYXJhdGlvbg0KICAgID4gICAgID4gICAgIHVzZWQg Zm9yIEMxMSB2cyBub24gQzExIHVzYWdlLklkZWFsbHkgd2Ugd29udCBuZWVkICJ2b2xhdGlsZSIg Zm9yIEMxMQ0KICAgID4gICAgID4gICAgIGNhc2UuIEVpdGhlciB3ZSBuZWVkIHRvIGNoYW5nZSBv bmx5IHRvIEMxMSBtb2RlIE9SIGhhdmUgQVBJcyBmb3INCiAgICA+ICAgICA+ICAgICBhdG9taWNf bG9hZF9hY3FfKCkgYW5kIGF0b21pY19zdG9yZV9yZWxfKCkgdG8gYWxsb3cgYm90aCBtb2RlbHMg bGlrZQ0KICAgID4gICAgID4gICAgIExpbnV4IGtlcm5lbCBhbmQgRnJlZUJTRC4NCiAgICA+ICAg ICA+DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gLS0gT2xhDQogICAgPiAg ICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAg ICAgPg0KICAgID4gICAgID4NCiAgICA+IA0KICAgID4gDQogICAgDQoNCg==