From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <xiao.w.wang@intel.com>
Received: from mga11.intel.com (mga11.intel.com [192.55.52.93])
 by dpdk.org (Postfix) with ESMTP id 79C5F1B117
 for <dev@dpdk.org>; Wed, 12 Dec 2018 07:51:32 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga003.fm.intel.com ([10.253.24.29])
 by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 11 Dec 2018 22:51:31 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.56,343,1539673200"; d="scan'208";a="117916196"
Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205])
 by FMSMGA003.fm.intel.com with ESMTP; 11 Dec 2018 22:51:31 -0800
Received: from fmsmsx118.amr.corp.intel.com (10.18.116.18) by
 fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Tue, 11 Dec 2018 22:51:30 -0800
Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by
 fmsmsx118.amr.corp.intel.com (10.18.116.18) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Tue, 11 Dec 2018 22:51:30 -0800
Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.201]) by
 shsmsx102.ccr.corp.intel.com ([169.254.2.182]) with mapi id 14.03.0415.000;
 Wed, 12 Dec 2018 14:51:28 +0800
From: "Wang, Xiao W" <xiao.w.wang@intel.com>
To: "Bie, Tiwei" <tiwei.bie@intel.com>
CC: "maxime.coquelin@redhat.com" <maxime.coquelin@redhat.com>, "dev@dpdk.org"
 <dev@dpdk.org>, "Wang, Zhihong" <zhihong.wang@intel.com>, "Ye, Xiaolong"
 <xiaolong.ye@intel.com>
Thread-Topic: [PATCH 2/9] vhost: provide helpers for virtio ring relay
Thread-Index: AQHUhwC1vh0++Ujj+UWp0gldVdzC3aVtn2eAgA0IHWA=
Date: Wed, 12 Dec 2018 06:51:28 +0000
Message-ID: <B7F2E978279D1D49A3034B7786DACF407A4B5FA5@SHSMSX101.ccr.corp.intel.com>
References: <20181128094607.106173-1-xiao.w.wang@intel.com>
 <20181128094607.106173-3-xiao.w.wang@intel.com>
 <20181204062241.GA19852@btwcube1>
In-Reply-To: <20181204062241.GA19852@btwcube1>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ctpclassification: CTP_NT
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNWExM2I4OTAtODFjNi00ZTI3LTg5ODQtZDY2MThmNjJjNDZkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiKzJGbVwva1NiUHBrc2NsVWYyXC9lK2xqcUhtdWVMM2l4V2pDMVJzUnVMSjltQzdtWlFJN3Nmc2NtdXoxWG9OK3k4In0=
dlp-product: dlpe-windows
dlp-version: 11.0.400.15
dlp-reaction: no-action
x-originating-ip: [10.239.127.40]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH 2/9] vhost: provide helpers for virtio ring
	relay
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 12 Dec 2018 06:51:33 -0000

SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmllLCBUaXdlaQ0K
PiBTZW50OiBNb25kYXksIERlY2VtYmVyIDMsIDIwMTggMTA6MjMgUE0NCj4gVG86IFdhbmcsIFhp
YW8gVyA8eGlhby53LndhbmdAaW50ZWwuY29tPg0KPiBDYzogbWF4aW1lLmNvcXVlbGluQHJlZGhh
dC5jb207IGRldkBkcGRrLm9yZzsgV2FuZywgWmhpaG9uZw0KPiA8emhpaG9uZy53YW5nQGludGVs
LmNvbT47IFllLCBYaWFvbG9uZyA8eGlhb2xvbmcueWVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBS
ZTogW1BBVENIIDIvOV0gdmhvc3Q6IHByb3ZpZGUgaGVscGVycyBmb3IgdmlydGlvIHJpbmcgcmVs
YXkNCj4gDQo+IE9uIFdlZCwgTm92IDI4LCAyMDE4IGF0IDA1OjQ2OjAwUE0gKzA4MDAsIFhpYW8g
V2FuZyB3cm90ZToNCj4gWy4uLl0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0K
PiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlv
ciBub3RpY2UNCj4gPiArICoNCj4gPiArICogU3luY2hyb25pemUgdGhlIGF2YWlsYWJsZSByaW5n
IGZyb20gZ3Vlc3QgdG8gbWVkaWF0ZSByaW5nLCBoZWxwIHRvDQo+ID4gKyAqIGNoZWNrIGRlc2Mg
dmFsaWRpdHkgdG8gcHJvdGVjdCBhZ2FpbnN0IG1hbGljaW91cyBndWVzdCBkcml2ZXIuDQo+ID4g
KyAqDQo+ID4gKyAqIEBwYXJhbSB2aWQNCj4gPiArICogIHZob3N0IGRldmljZSBpZA0KPiA+ICsg
KiBAcGFyYW0gcWlkDQo+ID4gKyAqICB2aG9zdCBxdWV1ZSBpZA0KPiA+ICsgKiBAcGFyYW0gbV92
cmluZw0KPiA+ICsgKiAgbWVkaWF0ZSB2aXJ0aW8gcmluZyBwb2ludGVyDQo+ID4gKyAqIEByZXR1
cm4NCj4gPiArICogIG51bWJlciBvZiBzeW5jZWQgYXZhaWxhYmxlIGVudHJpZXMgb24gc3VjY2Vz
cywgLTEgb24gZmFpbHVyZQ0KPiA+ICsgKi8NCj4gPiAraW50IF9fcnRlX2V4cGVyaW1lbnRhbA0K
PiA+ICtydGVfdmRwYV9yZWxheV9hdmFpbF9yaW5nKGludCB2aWQsIGludCBxaWQsIHN0cnVjdCB2
cmluZyAqbV92cmluZyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiAr
ICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90
aWNlDQo+ID4gKyAqDQo+ID4gKyAqIFN5bmNocm9uaXplIHRoZSB1c2VkIHJpbmcgZnJvbSBtZWRp
YXRlIHJpbmcgdG8gZ3Vlc3QsIGxvZyBkaXJ0eQ0KPiA+ICsgKiBwYWdlIGZvciBlYWNoIFJ4IGJ1
ZmZlciB1c2VkLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gdmlkDQo+ID4gKyAqICB2aG9zdCBk
ZXZpY2UgaWQNCj4gPiArICogQHBhcmFtIHFpZA0KPiA+ICsgKiAgdmhvc3QgcXVldWUgaWQNCj4g
PiArICogQHBhcmFtIG1fdnJpbmcNCj4gPiArICogIG1lZGlhdGUgdmlydGlvIHJpbmcgcG9pbnRl
cg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICBudW1iZXIgb2Ygc3luY2VkIHVzZWQgZW50cmll
cyBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlDQo+ID4gKyAqLw0KPiA+ICtpbnQgX19ydGVfZXhw
ZXJpbWVudGFsDQo+ID4gK3J0ZV92ZHBhX3JlbGF5X3VzZWRfcmluZyhpbnQgdmlkLCBpbnQgcWlk
LCBzdHJ1Y3QgdnJpbmcgKm1fdnJpbmcpOw0KPiANCj4gQWJvdmUgQVBJcyBhcmUgc3BsaXQgcmlu
ZyBzcGVjaWZpYy4gV2UgYWxzbyBuZWVkIHRvIHRha2UNCj4gcGFja2VkIHJpbmcgaW50byBjb25z
aWRlcmF0aW9uLg0KDQpBZnRlciBzb21lIHN0dWR5IG9uIHRoZSBjdXJyZW50IHBhY2tlZCByaW5n
IGRlc2NyaXB0aW9uLCBzZXZlcmFsIGlkZWFzOg0KMS4gVGhlc2UgQVBJcyBhcmUgdXNlZCBhcyBo
ZWxwZXJzIHRvIHNldHVwIGEgbWVkaWF0ZSByZWxheSBsYXllciB0byBoZWxwIGRvIGRpcnR5IHBh
Z2UgbG9nZ2luZywgd2UgbWF5IG5vdCBuZWVkDQogdGhpcyBraW5kIG9mIHJpbmcgcmVsYXkgZm9y
IHBhY2tlZCByaW5nIGF0IGFsbC4gVGhlIHRhcmdldCBvZiBhIG1lZGlhdGUgU1cgbGF5ZXIgaXMg
dG8gaGVscCBkZXZpY2UgZG8gZGlydHkgcGFnZQ0KIGxvZ2dpbmcsIHNvIHRoaXMgU1ctYXNzaXN0
ZWQgVkRQQSB0cmllcyB0byBmaW5kIGEgd2F5IHRvIGludGVyY2VwdCB0aGUgZnJvbnRlbmQtYmFj
a2VuZCBjb21tdW5pY2F0aW9uLCBhcyB5b3UNCiBjYW4gc2VlIGluIHRoaXMgcGF0Y2ggc2V0LCBT
VyBjYXB0dXJlcyB0aGUgZGV2aWNlIGludGVycnVwdCBhbmQgdGhlbiBwYXJzZSB0aGUgdnJpbmcg
YW5kIGxvZyBkaXJ0eSBwYWdlDQogYWZ0ZXJ3YXJkcy4gV2Ugc2V0IHVwIHRoaXMgbWVkaWF0ZSB2
cmluZyB0byBtYWtlIHN1cmUgdGhlIHJlbGF5IFNXIGNhbiBpbnRlcmNlcHQgdGhlIGRldmljZSBp
bnRlcnJ1cHQsIGFzIHlvdQ0KIGtub3csIHRoaXMgd2F5IHdlIGNhbiBjb250cm9sIHRoZSBtZWRp
YXRlIHZyaW5nJ3MgaW50ZXJydXB0IHN1cHByZXNzaW9uIHN0cnVjdHVyZS4NCg0KMi5PbmUgbmV3
IHBvaW50IGFib3V0IHRoZSBwYWNrZWQgcmluZyBpcyB0aGF0IGl0IHNlcGFyYXRlcyBvdXQgdGhl
IGV2ZW50IHN1cHByZXNzaW9uIHN0cnVjdHVyZSBmcm9tIHRoZQ0KZGVzY3JpcHRpb24gcmluZy4g
U28gaW4gdGhpcyBjYXNlLCB3ZSBjYW4ganVzdCBzZXQgdXAgYSBtZWRpYXRlIGV2ZW50IHN1cHBy
ZXNzaW9uIHN0cnVjdHVyZSB0byBpbnRlcmNlcHQgZXZlbnQNCiBub3RpZmljYXRpb24uDQoNCkJU
VywgSSBmaW5kIG9uZSB0cm91Ymxlc29tZSBwb2ludCBhYm91dCB0aGUgcGFja2VkIHJpbmcgaXMg
dGhhdCBpdCdzIGhhcmQgZm9yIGEgbWVkaWF0ZSBTVyB0byBxdWlja2x5IGhhbmRsZSB0aGUNCiAi
YnVmZmVyIGlkIiwgZ3Vlc3QgdmlydGlvIGRyaXZlciB1bmRlcnN0YW5kcyB0aGlzIGlkIHdlbGws
IGl0IGtlZXBzIHNvbWUgaW50ZXJuYWwgaW5mbyBhYm91dCBlYWNoIGlkLCBlLmcuIGNoYWluIGxp
c3QNCiBsZW5ndGgsIGJ1dCB0aGUgcmVsYXkgU1cgaGFzIHRvIHBhcnNlIHRoZSBwYWNrZWQgcmlu
ZyBhZ2Fpbiwgd2hpY2ggaXMgbm90IGVmZmljaWVudC4NCg0KMy4gSW4gdGhlIHNwbGl0IHZyaW5n
LCByZWxheSBTVyByZXVzZXMgdGhlIGd1ZXN0IGRlc2MgdnJpbmcsIGFuZCBkZXNjIGlzIG5vdCB3
cml0ZWQgYnkgRE1BLCBzbyBubyBsb2cgZm9yIHRoZSBkZXNjLg0KIEJ1dCBpbiB0aGUgcGFja2Vk
IHZyaW5nLCBkZXNjIGlzIHdyaXRlZCBieSBETUEsIGRlc2MgcmluZydzIGxvZ2dpbmcgaXMgYSBu
ZXcgdGhpbmcuDQpQYWNrZWQgcmluZyBpcyBxdWl0ZSBkaWZmZXJlbnQsIGl0IGNvdWxkIGJlIGEg
dmVyeSBkaWZmZXJlbnQgbWVjaGFuaXNtLCBvdGhlciB0aGFuIGZvbGxvd2luZyBhIHZyaW5nIHJl
bGF5IEFQSS4gQWxzbw0KIGZyb20gdGVzdGluZyBwb2ludCBvZiB2aWV3LCBpZiB3ZSBjb21lIG91
dCB3aXRoIGEgbmV3IGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBmb3IgcGFja2VkIHJpbmcgVkRQ
QSwgaXQncyBoYXJkIHRvDQogdGVzdCBpdCB3aXRoIEhXLiBUZXN0aW5nIG5lZWQgYSBIVyBzdXBw
b3J0aW5nIHBhY2tlZCByaW5nIERNQSBhbmQgdGhlIGdldF92cmluZ19iYXNlL3NldF92cmluZ19i
YXNlDQogaW50ZXJmYWNlLg0KDQo+IA0KPiA+ICAjZW5kaWYgLyogX1JURV9WRFBBX0hfICovDQo+
IFsuLi5dDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3QvdmRwYS5jIGIvbGliL2xp
YnJ0ZV92aG9zdC92ZHBhLmMNCj4gPiBpbmRleCBlN2Q4NDllZTAuLmU0MTExNzc3NiAxMDA2NDQN
Cj4gPiAtLS0gYS9saWIvbGlicnRlX3Zob3N0L3ZkcGEuYw0KPiA+ICsrKyBiL2xpYi9saWJydGVf
dmhvc3QvdmRwYS5jDQo+ID4gQEAgLTEyMiwzICsxMjIsMTc2IEBAIHJ0ZV92ZHBhX2dldF9kZXZp
Y2VfbnVtKHZvaWQpDQo+ID4gIHsNCj4gPiAgCXJldHVybiB2ZHBhX2RldmljZV9udW07DQo+ID4g
IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiAraW52YWxpZF9kZXNjX2NoZWNrKHN0cnVj
dCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiA+ICsJCXVp
bnQ2NF90IGRlc2NfaW92YSwgdWludDY0X3QgZGVzY19sZW4sIHVpbnQ4X3QgcGVybSkNCj4gPiAr
ew0KPiA+ICsJdWludDY0X3QgZGVzY19hZGRyLCBkZXNjX2NodW5ja19sZW47DQo+ID4gKw0KPiA+
ICsJd2hpbGUgKGRlc2NfbGVuKSB7DQo+ID4gKwkJZGVzY19jaHVuY2tfbGVuID0gZGVzY19sZW47
DQo+ID4gKwkJZGVzY19hZGRyID0gdmhvc3RfaW92YV90b192dmEoZGV2LCB2cSwNCj4gPiArCQkJ
CWRlc2NfaW92YSwNCj4gPiArCQkJCSZkZXNjX2NodW5ja19sZW4sDQo+ID4gKwkJCQlwZXJtKTsN
Cj4gPiArDQo+ID4gKwkJaWYgKCFkZXNjX2FkZHIpDQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiAr
DQo+ID4gKwkJZGVzY19sZW4gLT0gZGVzY19jaHVuY2tfbGVuOw0KPiA+ICsJCWRlc2NfaW92YSAr
PSBkZXNjX2NodW5ja19sZW47DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4g
K30NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtydGVfdmRwYV9yZWxheV9hdmFpbF9yaW5nKGludCB2
aWQsIGludCBxaWQsIHN0cnVjdCB2cmluZyAqbV92cmluZykNCj4gPiArew0KPiA+ICsJc3RydWN0
IHZpcnRpb19uZXQgKmRldiA9IGdldF9kZXZpY2UodmlkKTsNCj4gPiArCXVpbnQxNl90IGlkeCwg
aWR4X20sIGRlc2NfaWQ7DQo+ID4gKwlzdHJ1Y3QgdnJpbmdfZGVzYyBkZXNjOw0KPiA+ICsJc3Ry
dWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7DQo+ID4gKwlzdHJ1Y3QgdnJpbmdfZGVzYyAqZGVzY19y
aW5nOw0KPiA+ICsJc3RydWN0IHZyaW5nX2Rlc2MgKmlkZXNjID0gTlVMTDsNCj4gPiArCXVpbnQ2
NF90IGRsZW47DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWlmICghZGV2KQ0KPiA+ICsJ
CXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwl2cSA9IGRldi0+dmlydHF1ZXVlW3FpZF07DQo+IA0K
PiBCZXR0ZXIgdG8gYWxzbyB2YWxpZGF0ZSBxaWQuDQo+IA0KPiA+ICsJaWR4ID0gdnEtPmF2YWls
LT5pZHg7DQo+ID4gKwlpZHhfbSA9IG1fdnJpbmctPmF2YWlsLT5pZHg7DQo+ID4gKwlyZXQgPSBp
ZHggLSBpZHhfbTsNCj4gDQo+IE5lZWQgdG8gY2FzdCAoaWR4IC0gaWR4X20pIHRvIHVpbnQxNl90
Lg0KPiANCj4gPiArDQo+ID4gKwl3aGlsZSAoaWR4X20gIT0gaWR4KSB7DQo+ID4gKwkJLyogYXZh
aWwgZW50cnkgY29weSAqLw0KPiA+ICsJCWRlc2NfaWQgPSB2cS0+YXZhaWwtPnJpbmdbaWR4X20g
JSB2cS0+c2l6ZV07DQo+IA0KPiBpZHhfbSAmICh2cS0+c2l6ZSAtIDEpIHNob3VsZCBiZSBmYXN0
ZXIuDQo+IA0KPiA+ICsJCW1fdnJpbmctPmF2YWlsLT5yaW5nW2lkeF9tICUgdnEtPnNpemVdID0g
ZGVzY19pZDsNCj4gPiArCQlkZXNjX3JpbmcgPSB2cS0+ZGVzYzsNCj4gPiArDQo+ID4gKwkJaWYg
KHZxLT5kZXNjW2Rlc2NfaWRdLmZsYWdzICYgVlJJTkdfREVTQ19GX0lORElSRUNUKSB7DQo+ID4g
KwkJCWRsZW4gPSB2cS0+ZGVzY1tkZXNjX2lkXS5sZW47DQo+ID4gKwkJCWRlc2NfcmluZyA9IChz
dHJ1Y3QgdnJpbmdfZGVzYyAqKSh1aW50cHRyX3QpDQo+ID4gKwkJCXZob3N0X2lvdmFfdG9fdnZh
KGRldiwgdnEsIHZxLT5kZXNjW2Rlc2NfaWRdLmFkZHIsDQo+IA0KPiBUaGUgaW5kZW50IG5lZWRz
IHRvIGJlIGZpeGVkLg0KPiANCj4gPiArCQkJCQkJJmRsZW4sDQo+ID4gKwkJCQkJCVZIT1NUX0FD
Q0VTU19STyk7DQo+ID4gKwkJCWlmICh1bmxpa2VseSghZGVzY19yaW5nKSkNCj4gPiArCQkJCXJl
dHVybiAtMTsNCj4gPiArDQo+ID4gKwkJCWlmICh1bmxpa2VseShkbGVuIDwgdnEtPmRlc2NbaWR4
XS5sZW4pKSB7DQo+ID4gKwkJCQlpZGVzYyA9IGFsbG9jX2NvcHlfaW5kX3RhYmxlKGRldiwgdnEs
DQo+ID4gKwkJCQkJdnEtPmRlc2NbaWR4XS5hZGRyLCB2cS0+ZGVzY1tpZHhdLmxlbik7DQo+ID4g
KwkJCQlpZiAodW5saWtlbHkoIWlkZXNjKSkNCj4gPiArCQkJCQlyZXR1cm4gLTE7DQo+ID4gKw0K
PiA+ICsJCQkJZGVzY19yaW5nID0gaWRlc2M7DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCWRl
c2NfaWQgPSAwOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJLyogY2hlY2sgaWYgdGhlIGJ1ZiBh
ZGRyIGlzIHdpdGhpbiB0aGUgZ3Vlc3QgbWVtb3J5ICovDQo+ID4gKwkJZG8gew0KPiA+ICsJCQlk
ZXNjID0gZGVzY19yaW5nW2Rlc2NfaWRdOw0KPiA+ICsJCQlpZiAoaW52YWxpZF9kZXNjX2NoZWNr
KGRldiwgdnEsIGRlc2MuYWRkciwgZGVzYy5sZW4sDQo+ID4gKwkJCQkJCVZIT1NUX0FDQ0VTU19S
VykpDQo+IA0KPiBTaG91bGQgY2hlY2sgd2l0aCA8IDAsIG90aGVyd2lzZSBzaG91bGQgcmV0dXJu
IGJvb2wuDQo+IA0KPiBXZSBtYXkganVzdCBoYXZlIFJPIGFjY2Vzcy4NCg0KVGhlIGRlc2MgbWF5
IHJlZmVycyB0byBhIHRyYW5zbWl0IGJ1ZmZlciBhcyB3ZWxsIGFzIHJlY2VpdmUgYnVmZmVyLiBB
Z3JlZSBvbiB0aGUgY29tbWVudHMgYW5kIG5pY2UgY2F0Y2hlcyBlbHNld2hlcmUgYWJvdmUsIHdp
bGwgc2VuZCBuZXcgdmVyc2lvbi4NCg0KWy4uLl0NCg0KQlJzLA0KWGlhbw0K