From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id ABC25A04A5; Wed, 17 Jun 2020 13:04:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A81091252; Wed, 17 Jun 2020 13:04:12 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50073.outbound.protection.outlook.com [40.107.5.73]) by dpdk.org (Postfix) with ESMTP id D03631023 for ; Wed, 17 Jun 2020 13:04:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XLcaGYYMp9xUtWo/nB16fHzZOuNYMtG5ZfgdbOefrT6LOg9fNd/5Rb+3WUe1hIhp7KlYRuf6lL796TCNmeNHDtAhQbUxzMfOv3DbAqag/EqIqu7NN1LkatnimIZDliTeYu2Fn1JTYPl6wCfolCQCBcRX0rBDRubBx2BWKYeZBnVPNYn54UGQZb5YdpGYtKiq7JHjgSJJCRFy90Kn1cNQpkWqu83x8KDhpg2lokxGTBUGe971U0t+wxkH5WoMjKIGjMD7SzatOMJ94tg2SPdf9LUTLF7+rd1//YS/qPcQxdy/Aiz7NSqjg5RIkbuIYviqLCWo7gDknjNBLT2h+OPP5Q== 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-SenderADCheck; bh=MRVuSfZle9ao59uHXEbnEQaZTg/VXUOMvR6JCvWRuQ8=; b=h0SJ14fq6i8CYMxv1PiJ9NoH9aWlMQegKzzyhfNzLPo8F5p4a4wQKAJbjym/xfq+Jab9iX5+iF7JS2rspNa/PpqMtyhwoZvNvxBaM0c6HiETuQUYAixy/ZC2hT07ZAKRAYB/80b4oUGTM/Megal/qkZ4MMHLWyJ4E7lzD1ZeBDEDLd5aSAHpW6+1Md4xtSCJXuEdbhhUdS8oH6wsnNbTR+2lcQyto6oQwyArCKPMZV5DnGdbTi6xxGZtjKRoW+c1UBMkUGr5brpQHfDCY50Z69268RN9moYFjZNSCgVVz1Qj6N6Dsewn5C1lbfE8t3JxsiJcaCN92u4U9XQLJK8yhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MRVuSfZle9ao59uHXEbnEQaZTg/VXUOMvR6JCvWRuQ8=; b=PZiKsYYU3rvVQ8U+e8ajHOD+Ljxlp9zwccLH/SlPvkBmWHi8gNpgIQOHDCvErTajlFBhHEOMV6EH+8sqHOAwGGuv85sKTcMTZTf+lNupNCBlZ7Zh0A7SvKFe5WwYA0qPnvFdkKnSP8Rk5hbcp63+4CPrarH/d5qzFSiObJ28a3g= Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com (2603:10a6:208:f::11) by AM0PR0502MB4066.eurprd05.prod.outlook.com (2603:10a6:208:12::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Wed, 17 Jun 2020 11:04:10 +0000 Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::b189:d782:4c74:7998]) by AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::b189:d782:4c74:7998%7]) with mapi id 15.20.3088.028; Wed, 17 Jun 2020 11:04:10 +0000 From: Matan Azrad To: Maxime Coquelin , "xiaolong.ye@intel.com" , Shahaf Shuler , "amorenoz@redhat.com" , "xiao.w.wang@intel.com" , Slava Ovsiienko , "dev@dpdk.org" CC: "jasowang@redhat.com" , "lulu@redhat.com" Thread-Topic: [PATCH 9/9] vhost: only use vDPA config workaround if needed Thread-Index: AQHWKcYg67JP6PpHo0+Nx4qLJ7aEAqjNF8jQgAF0CICAAAZssIABlDsAgAAdIjCAAG4bgIAHGTHQgAT4CgCAABLc4A== Date: Wed, 17 Jun 2020 11:04:09 +0000 Message-ID: References: <20200514080218.1435344-1-maxime.coquelin@redhat.com> <20200514080218.1435344-10-maxime.coquelin@redhat.com> <0216165f-aedd-06c7-5a90-2cd0d238b143@redhat.com> <97528794-aa14-37da-a5bb-1e1d46e9127a@redhat.com> <64c59e91-79ef-bc55-bc64-1995cfb03c84@redhat.com> <095af180-bb29-e890-5197-8bfbb8ea4c41@redhat.com> In-Reply-To: <095af180-bb29-e890-5197-8bfbb8ea4c41@redhat.com> Accept-Language: en-US, he-IL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [77.124.38.174] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6dc79f70-14ca-4c30-e3da-08d812ae297a x-ms-traffictypediagnostic: AM0PR0502MB4066: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 04371797A5 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: omaFgjUo9RDulXb/dGbnvEfKZjHcRlEyR6K3Y6lNr/SnittkBOLfRK/aFsbIkPrXLoaoD5qxEATBBWV0Rw0MciGt1ZpV0u9YzTnASlQ1F01+3TwcpUYwr0MuSGinXydK2X5dGnVRqUfg83JfWyZFAd78X1JrNewDKHcDb46+Y6SZ1K7Nz2auCbFHVhFYBTO2ccQA4CTfyIUdVSRmU0nJy1cpcZgPcTP1+t2y+Tk6k76sexpZHcRvhIPrSkdk+2gyOd+jHbJeBvG4yMnZAUUMtiHTgmS9OCns3pU3Wk+VeLTNOFdCnk6hSquOL4MiOAinIMI+hOLzX8tQ5bnyms0KlsCSrcQu/7FIWEiJWcC3ZcEWVAzJ4P1//BQOBs0+L/59us5lfTFo8eL9l5zhbBcmcw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0502MB4019.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(396003)(346002)(366004)(376002)(136003)(83380400001)(186003)(30864003)(86362001)(83080400001)(8936002)(26005)(8676002)(2906002)(66556008)(478600001)(66446008)(64756008)(66476007)(66946007)(7696005)(5660300002)(966005)(33656002)(52536014)(9686003)(76116006)(316002)(54906003)(110136005)(71200400001)(55016002)(6506007)(45080400002)(4326008)(53546011); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: OkPmJB4X873sRl0R1Xs4wGjogSknyOEQggYqpRkuY4GDp2vIaS802OX9mzojp9XiSemIheCTyVv/SD9OlQ3qe3+v4xfVP2/x5obM+zmda89iX0hCX2wdLIiGuuD4Wd7Du8Z93PE4GOa1aRyyGXdzkb73hgDny2fP7cJxoAdRVy9YFCntpG+Uj/NZ1s5r4HCGgBpfBUaNMO+PW9Pww+tvlzfTBOYt9CzqT/+3nJy9m6nvaFLdH8hL6xz2DE+XF7LOpT5W1/b97OkyaFfZWtTQD1kYxWy5Jmxa1gyFdLBTfXD0CvFAM5iaJoiyoyortwQOlcbj7XfE61wCWgAWo+cTBbAziWwu/bGb5Iw9nlGA7eu1bijY1AsWgbM94PEh9G3+09wL5se2Fk87m9/Al7X/kN5MVRBG9sDwFHEI+vFCacag8LcSf3+NK3BA3ootBcePPruiSOFR4IuytBvIEED6KmT0wZFPQWFpftJKZEl0CPdZbV0Cbr6lKc3AbZ1V4BkG Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6dc79f70-14ca-4c30-e3da-08d812ae297a X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jun 2020 11:04:10.1514 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qHNpCSLbaM5PaR42It8T9JJ4go6z1QWMPj7Kmu1t+k/6kT0i1X+n/oa6tMcKLnBoMEgabcI9J24W2jidDNQsiQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB4066 Subject: Re: [dpdk-dev] [PATCH 9/9] vhost: only use vDPA config workaround if needed 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTWF4aW1lDQoNCkZyb206IE1heGltZSBDb3F1ZWxpbjoNCj4gSGkgTWF0YW4sDQo+IA0KPiBP biA2LzE0LzIwIDg6MDggQU0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+IEhpIE1heGltZQ0KPiA+ DQo+ID4gRnJvbTogTWF4aW1lIENvcXVlbGluOg0KPiA+PiBPbiA2LzkvMjAgMTowOSBQTSwgTWF0 YW4gQXpyYWQgd3JvdGU6DQo+ID4+PiBIaSBNYXhpbWUNCj4gPj4+DQo+ID4+PiBGcm9tOiBNYXhp bWUgQ29xdWVsaW4NCj4gPj4+PiBIaSBNYXRhbiwNCj4gPj4+Pg0KPiA+Pj4+IE9uIDYvOC8yMCAx MToxOSBBTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4+Pj4+IEhpIE1heGltZQ0KPiA+Pj4+Pg0K PiA+Pj4+PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW46DQo+ID4+Pj4+PiBIaSBNYXRhbiwNCj4gPj4+ Pj4+DQo+ID4+Pj4+PiBPbiA2LzcvMjAgMTI6MzggUE0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+ Pj4+Pj4+IEhpIE1heGltZQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhhbmtzIGZvciB0aGUgaHVn ZSB3b3JrLg0KPiA+Pj4+Pj4+IFBsZWFzZSBzZWUgYSBzdWdnZXN0aW9uIGlubGluZS4NCj4gPj4+ Pj4+Pg0KPiA+Pj4+Pj4+IEZyb206IE1heGltZSBDb3F1ZWxpbjoNCj4gPj4+Pj4+Pj4gU2VudDog VGh1cnNkYXksIE1heSAxNCwgMjAyMCAxMTowMiBBTQ0KPiA+Pj4+Pj4+PiBUbzogeGlhb2xvbmcu eWVAaW50ZWwuY29tOyBTaGFoYWYgU2h1bGVyDQo+ID4+IDxzaGFoYWZzQG1lbGxhbm94LmNvbT47 DQo+ID4+Pj4+Pj4+IE1hdGFuIEF6cmFkIDxtYXRhbkBtZWxsYW5veC5jb20+OyBhbW9yZW5vekBy ZWRoYXQuY29tOw0KPiA+Pj4+Pj4+PiB4aWFvLncud2FuZ0BpbnRlbC5jb207IFNsYXZhIE92c2lp ZW5rbw0KPiA+Pj4+IDx2aWFjaGVzbGF2b0BtZWxsYW5veC5jb20+Ow0KPiA+Pj4+Pj4+PiBkZXZA ZHBkay5vcmcNCj4gPj4+Pj4+Pj4gQ2M6IGphc293YW5nQHJlZGhhdC5jb207IGx1bHVAcmVkaGF0 LmNvbTsgTWF4aW1lIENvcXVlbGluDQo+ID4+Pj4+Pj4+IDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0 LmNvbT4NCj4gPj4+Pj4+Pj4gU3ViamVjdDogW1BBVENIIDkvOV0gdmhvc3Q6IG9ubHkgdXNlIHZE UEEgY29uZmlnIHdvcmthcm91bmQgaWYNCj4gPj4+Pj4+Pj4gbmVlZGVkDQo+ID4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+IE5vdyB0aGF0IHdlIGhhdmUgVmlydGlvIGRldmljZSBzdGF0dXMgc3VwcG9ydCwg bGV0J3Mgb25seSB1c2UNCj4gPj4+Pj4+Pj4gdGhlIHZEUEEgd29ya2Fyb3VuZCBpZiBpdCBpcyBu b3Qgc3VwcG9ydGVkLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBUaGlzIHBhdGNoIGFsc28gZG9j dW1lbnQgd2h5IFZpcnRpbyBkZXZpY2Ugc3RhdHVzIHByb3RvY29sDQo+ID4+Pj4+Pj4+IGZlYXR1 cmUgc3VwcG9ydCBpcyBzdHJvbmdseSBhZHZpc2VkLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBT aWduZWQtb2ZmLWJ5OiBNYXhpbWUgQ29xdWVsaW4NCj4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQu Y29tPg0KPiA+Pj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pj4gIGxpYi9saWJydGVfdmhvc3Qvdmhvc3Rf dXNlci5jIHwgMTYgKysrKysrKysrKysrKystLQ0KPiA+Pj4+Pj4+PiAgMSBmaWxlIGNoYW5nZWQs IDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+Pj4+Pj4+PiBi L2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdXNlci5jIGluZGV4IGU1YTQ0YmU1OGQuLjY3ZTk2YTg3 MmENCj4gPj4+Pj4+Pj4gMTAwNjQ0DQo+ID4+Pj4+Pj4+IC0tLSBhL2xpYi9saWJydGVfdmhvc3Qv dmhvc3RfdXNlci5jDQo+ID4+Pj4+Pj4+ICsrKyBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdXNl ci5jDQo+ID4+Pj4+Pj4+IEBAIC0yODQ3LDggKzI4NDcsMjAgQEAgdmhvc3RfdXNlcl9tc2dfaGFu ZGxlcihpbnQgdmlkLCBpbnQNCj4gZmQpDQo+ID4+Pj4+Pj4+ICAJaWYgKCF2ZHBhX2RldikNCj4g Pj4+Pj4+Pj4gIAkJZ290byBvdXQ7DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IC0JaWYgKCEoZGV2 LT5mbGFncyAmIFZJUlRJT19ERVZfVkRQQV9DT05GSUdVUkVEKSAmJg0KPiA+Pj4+Pj4+PiAtCQkJ cmVxdWVzdCA9PSBWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMKQ0KPiA+PiB7DQo+ID4+Pj4+Pj4+ ICsJaWYgKCEoZGV2LT5mbGFncyAmIFZJUlRJT19ERVZfVkRQQV9DT05GSUdVUkVEKSkgew0KPiA+ Pj4+Pj4+PiArCQkvKg0KPiA+Pj4+Pj4+PiArCQkgKiBXb3JrYXJvdW5kIHdoZW4gVmlydGlvIGRl dmljZSBzdGF0dXMgcHJvdG9jb2wNCj4gPj4+Pj4+Pj4gKwkJICogZmVhdHVyZSBpcyBub3Qgc3Vw cG9ydGVkLCB3YWl0IGZvcg0KPiA+PiBTRVRfVlJJTkdfQ0FMTA0KPiA+Pj4+Pj4+PiArCQkgKiBy ZXF1ZXN0LiBUaGlzIGlzIG5vdCBpZGVhbCBhcyBzb21lIGZyb250ZW5kcyBsaWtlDQo+ID4+Pj4+ Pj4+ICsJCSAqIFZpcnRpby11c2VyIG1heSBub3Qgc2VuZCB0aGlzIHJlcXVlc3QsIHNvIHZEUEEN Cj4gPj4gZGV2aWNlDQo+ID4+Pj4+Pj4+ICsJCSAqIG1heSBuZXZlciBiZSBjb25maWd1cmVkLiBW aXJ0aW8gZGV2aWNlIHN0YXR1cw0KPiA+PiBzdXBwb3J0DQo+ID4+Pj4+Pj4+ICsJCSAqIG9uIGZy b250ZW5kIHNpZGUgaXMgc3Ryb25nbHkgYWR2aXNlZC4NCj4gPj4+Pj4+Pj4gKwkJICovDQo+ID4+ Pj4+Pj4+ICsJCWlmICghKGRldi0+cHJvdG9jb2xfZmVhdHVyZXMgJg0KPiA+Pj4+Pj4+PiArCQkJ CSgxVUxMIDw8DQo+ID4+Pj4+Pj4+IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9TVEFUVVMpKSAmJg0K PiA+Pj4+Pj4+PiArCQkJCShyZXF1ZXN0ICE9DQo+ID4+Pj4+Pj4+IFZIT1NUX1VTRVJfU0VUX1ZS SU5HX0NBTEwpKQ0KPiA+Pj4+Pj4+PiArCQkJZ290byBvdXQ7DQo+ID4+Pj4+Pj4+ICsNCj4gPj4+ Pj4+Pg0KPiA+Pj4+Pj4+IFdoZW4gc3RhdHVzIHByb3RvY29sIGZlYXR1cmUgaXMgbm90IHN1cHBv cnRlZCwgaW4gdGhlIGN1cnJlbnQNCj4gPj4+Pj4+PiBjb2RlLCB0aGUNCj4gPj4+Pj4+IHZEUEEg Y29uZmlndXJhdGlvbiB0cmlnZ2VyaW5nIGRlcGVuZHMgaW46DQo+ID4+Pj4+Pj4gMS4gRGV2aWNl IGlzIHJlYWR5IC0gYWxsIHRoZSBxdWV1ZXMgYXJlIGNvbmZpZ3VyZWQgKGRhdGFwYXRoDQo+ID4+ Pj4+Pj4gYWRkcmVzc2VzLA0KPiA+Pj4+Pj4gY2FsbGZkIGFuZCBraWNrZmQpIC4NCj4gPj4+Pj4+ PiAyLiBsYXN0IGNvbW1hbmQgaXMgY2FsbGZkLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4NCj4gPj4+ Pj4+PiBUaGUgY29kZSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRoYXQgc29tZSBxdWV1ZXMg bWF5IHN0YXkNCj4gPj4gZGlzYWJsZWQuDQo+ID4+Pj4+Pj4gTWF5YmUgdGhlIGNvcnJlY3QgdGlt aW5nIGlzOg0KPiA+Pj4+Pj4+IDEuIERldmljZSBpcyByZWFkeSAtIGFsbCB0aGUgZW5hYmxlZCBx dWV1ZXMgYXJlIGNvbmZpZ3VyZWQgYW5kDQo+ID4+Pj4+Pj4gTUVNIHRhYmxlIGlzDQo+ID4+Pj4+ PiBjb25maWd1cmVkLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEkgdGhpbmsgY3VycmVudCB2aXJ0aW9f aXNfcmVhZHkoKSBhbHJlYWR5IGFzc3VtZXMgdGhlIG1lbSB0YWJsZQ0KPiA+Pj4+Pj4gaXMgY29u ZmlndXJlZCwgb3RoZXJ3aXNlIHdlIHdvdWxkIG5vdCBoYXZlIHZxLT5kZXNjLCB2cS0+dXNlZCBh bmQNCj4gPj4+Pj4+IHZxLT5hdmFpbCBiZWluZyBzZXQgYXMgaXQgbmVlZHMgdG8gYmUgdHJhbnNs YXRlZCB1c2luZyB0aGUgbWVtIHRhYmxlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4gWWVzLCBidXQgaWYg eW91IGRvbid0IGV4cGVjdCB0byBjaGVjayB0aGVtIGZvciBkaXNhYmxlZCBxdWV1ZXMgeW91DQo+ ID4+Pj4+IG5lZWQgdG8NCj4gPj4+PiBjaGVjayBtZW0gdGFibGUgdG8gYmUgc3VyZSBpdCB3YXMg c2V0Lg0KPiA+Pj4+DQo+ID4+Pj4gRXZlbiBkaXNhYmxlZCBxdWV1ZXMgc2hvdWxkIGJlIGFsbG9j YXRlZC9jb25maWd1cmVkIGJ5IHRoZSBndWVzdA0KPiBkcml2ZXIuDQo+ID4+PiBJcyBpdCBieSBz cGVjPw0KPiA+Pg0KPiA+PiBTb3JyeSwgdGhhdCB3YXMgYSBtaXN1bmRlcnN0YW5kaW5nIGZyb20g bXkgc2lkZS4NCj4gPj4gVGhlIG51bWJlciBvZiBxdWV1ZXMgc2V0IGJ5IHRoZSBkcml2ZXIgdXNp bmcgTVFfVlFfUEFJUlNfU0VUIGNvbnRyb2wNCj4gPj4gbWVzc2FnZSBoYXZlIHRvIGJlIGFsbG9j YXRlZCBhbmQgY29uZmlndXJlZCBieSB0aGUgZHJpdmVyOg0KPiA+Pg0KPiBodHRwczovL2V1cjAz LnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRmRvY3MN Cj4gPj4gLm8NCj4gPj4gYXNpcy1vcGVuLm9yZyUyRnZpcnRpbyUyRnZpcnRpbyUyRnYxLjAlMkZj czA0JTJGdmlydGlvLXYxLjAtDQo+ID4+IGNzMDQuaHRtbCUyM3gxLQ0KPiA+Pg0KPiAxOTQwMDAx JmFtcDtkYXRhPTAyJTdDMDElN0NtYXRhbiU0MG1lbGxhbm94LmNvbSU3Q2JlZDVkMzYxZmJmZg0K PiA+Pg0KPiA0N2FiNzY2MDA4ZDgwYzk5Y2M1MyU3Q2E2NTI5NzFjN2QyZTRkOWJhNmE0ZDE0OTI1 NmY0NjFiJTdDMCU3QzAlDQo+ID4+DQo+IDdDNjM3MjczMjAxOTg0Njg0NTEzJmFtcDtzZGF0YT16 YkJMY2x6YTM5Rmk1UWVuRnRSeCUyRjFUMjlEZ2o0dyUyDQo+ID4+IEZ1ZEo2b2JwNVJ4WW8lM0Qm YW1wO3Jlc2VydmVkPTANCj4gPj4NCj4gPg0KPiA+IERvIHlvdSBtZWFuIHRvIHRoZSBzZW50ZW5j ZToNCj4gPiAiVGhlIGRyaXZlciBNVVNUIGNvbmZpZ3VyZSB0aGUgdmlydHF1ZXVlcyBiZWZvcmUg ZW5hYmxpbmcgdGhlbSB3aXRoIHRoZQ0KPiBWSVJUSU9fTkVUX0NUUkxfTVFfVlFfUEFJUlNfU0VU IGNvbW1hbmQuIiA/DQo+ID4NCj4gPiBNYXliZSBJIG1pc3MgRW5nbGlzaCB1bmRlcnN0YW5kaW5n IGhlcmUgYnV0IGl0IGxvb2tzIGxpa2UgdGhpcyBzZW50ZW5jZQ0KPiBkb2Vzbid0IHNheSBpZiB0 aGUgZHJpdmVyIHNob3VsZCBkbyBjb25maWd1cmF0aW9uIGZvciBxdWV1ZXMgdGhhdCB3aWxsIG5v dCBiZQ0KPiBlbmFibGVkIGJ5IHRoZSB2aXJ0aW8gZHJpdmVyIChzdGF5IGRpc2FibGVkIGZvcmV2 ZXIpLg0KPiA+DQo+ID4NCj4gPj4+IFdlIHNhdyB0aGF0IHdpbmRvd3MgdmlydGlvIGd1ZXN0IGRy aXZlciBkb2Vzbid0IGNvbmZpZ3VyZSBkaXNhYmxlZA0KPiA+PiBxdWV1ZXMuDQo+ID4+PiBJcyBp dCBidWcgaW4gd2luZG93cyBndWVzdD8NCj4gPj4+IFlvdSBwcm9iYWJseSBjYW4gdGFrZSBhIGxv b2sgaGVyZToNCj4gPj4+DQo+IGh0dHBzOi8vZXVyMDMuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0 bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmdpDQo+ID4+PiB0aA0KPiA+Pj4gdWIuY29tJTJG dmlydGlvLXdpbiUyRmt2bS1ndWVzdC1kcml2ZXJzLQ0KPiA+PiB3aW5kb3dzJmFtcDtkYXRhPTAy JTdDMDElN0NtYXQNCj4gPj4+DQo+ID4+DQo+IGFuJTQwbWVsbGFub3guY29tJTdDYmVkNWQzNjFm YmZmNDdhYjc2NjAwOGQ4MGM5OWNjNTMlN0NhNjUyOTcxYzdkDQo+ID4+IDJlNGQ5DQo+ID4+Pg0K PiA+Pg0KPiBiYTZhNGQxNDkyNTZmNDYxYiU3QzAlN0MwJTdDNjM3MjczMjAxOTg0Njg0NTEzJmFt cDtzZGF0YT0lMkJxUGYNCj4gPj4gbXl2VHcxVA0KPiA+Pj4gUkZpZjl3b2VSJTJCc25kVUV1bmZS NU85RWVnSmZpbERJMCUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPiA+Pj4NCj4gPj4NCj4gPj4gSW5kZWVk IGl0IGxpbWl0cyB0aGUgbnVtYmVyIG9mIHF1ZXVlIHBhaXJzIHRvIHRoZSBudW1iZXIgb2YgQ1BV cy4NCj4gPj4gVGhpcyBpcyBkb25lIGhlcmU6DQo+ID4+IGh0dHBzOi8vZXVyMDMuc2FmZWxpbmtz LnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmdpdA0KPiA+PiBodQ0K PiA+PiBiLmNvbSUyRnZpcnRpby13aW4lMkZrdm0tZ3Vlc3QtZHJpdmVycy0NCj4gPj4NCj4gd2lu ZG93cyUyRmJsb2IlMkZlZGRhM2Y1MGExNzAxNWFhYjE0NTBjYTA5ZTMyNjNjNzQwOWU0MDAxJTJG TmV0Sw0KPiA+Pg0KPiBWTSUyRkNvbW1vbiUyRlBhcmFOZGlzX0NvbW1vbi5jcHAlMjNMOTU2JmFt cDtkYXRhPTAyJTdDMDElDQo+ID4+DQo+IDdDbWF0YW4lNDBtZWxsYW5veC5jb20lN0NiZWQ1ZDM2 MWZiZmY0N2FiNzY2MDA4ZDgwYzk5Y2M1MyU3Q2E2NTINCj4gPj4NCj4gOTcxYzdkMmU0ZDliYTZh NGQxNDkyNTZmNDYxYiU3QzAlN0MwJTdDNjM3MjczMjAxOTg0Njg0NTEzJmFtcDtzDQo+ID4+DQo+ IGRhdGE9WFhGSWtWSldGYWNVTVpMSndzS3lveTYlMkJjcWtuNWY2MGZFQzlybU1wYU5JJTNEJmFt cDtyZXMNCj4gPj4gZXJ2ZWQ9MA0KPiA+Pg0KPiA+PiBMaW51eCBkb2VzIHRoZSBzYW1lIGJ5IHRo ZSB3YXk6DQo+ID4+DQo+IGh0dHBzOi8vZXVyMDMuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9v ay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmVsaXhpci4NCj4gPj4NCj4gYm9vdGxpbi5jb20lMkZs aW51eCUyRmxhdGVzdCUyRnNvdXJjZSUyRmRyaXZlcnMlMkZuZXQlMkZ2aXJ0aW9fbmV0LmMNCj4g Pj4NCj4gJTIzTDMwOTImYW1wO2RhdGE9MDIlN0MwMSU3Q21hdGFuJTQwbWVsbGFub3guY29tJTdD YmVkNWQzNjFmYmYNCj4gPj4NCj4gZjQ3YWI3NjYwMDhkODBjOTljYzUzJTdDYTY1Mjk3MWM3ZDJl NGQ5YmE2YTRkMTQ5MjU2ZjQ2MWIlN0MwJTdDMA0KPiA+Pg0KPiAlN0M2MzcyNzMyMDE5ODQ2ODQ1 MTMmYW1wO3NkYXRhPWVmNktKTEhra2FHZjVkNlY4JTJCSThOMVdzSTBRM3gNCj4gPj4gWDMxanoy WThvVVNlTkUlM0QmYW1wO3Jlc2VydmVkPTANCj4gPg0KPiA+IFllcywgSSB0aGluayBpdCBtYWtl cyBzZW5zZS4NCj4gPg0KPiA+PiBXZSByYXJlbHkgZmFjZSB0aGlzIGlzc3VlIGJlY2F1c2UgYnkg ZGVmYXVsdCwgdGhlIG1hbmFnZW1lbnQgbGF5ZXJzDQo+ID4+IHVzdWFsbHkgc2V0IHRoZSBudW1i ZXIgb2YgcXVldWUgcGFpcnMgdG8gdGhlIG51bWJlciBvZiB2Q1BVcyBpZg0KPiA+PiBtdWx0aXF1 ZXVlIGlzIGVuYWJsZWQuIEJ1dCB0aGUgcHJvYmxlbSBpcyByZWFsLg0KPiA+Pg0KPiA+PiBJbiBt eSBvcGluaW9uLCB0aGUgcHJvYmxlbSBpcyBtb3JlIG9uIFZob3N0LXVzZXIgc3BlYyBzaWRlIGFu ZC9vcg0KPiA+PiBWaG9zdC0gdXNlciBiYWNrZW5kLg0KPiA+Pg0KPiA+PiBUaGUgRFBESyBiYWNr ZW5kIGFsbG9jYXRlcyBxdWV1ZSBwYWlycyBmb3IgZXZlcnkgdGltZSBpdCByZWNlaXZlcyBhDQo+ ID4+IFZob3N0LSB1c2VyIG1lc3NhZ2Ugc2V0dGluZyBhIG5ldyBxdWV1ZSAoY2FsbGZkLCBraWNr ZmQsIGVuYWJsZSwuLi4NCj4gPj4gc2VlIHZob3N0X3VzZXJfY2hlY2tfYW5kX2FsbG9jX3F1ZXVl X3BhaXIoKSkuIEFuZCB0aGVuDQo+ID4+IHZpcnRpb19pc19yZWFkeSgpIHdhaXRzIGZvciBhbGwg dGhlIGFsbG9jYXRlZCBxdWV1ZSBwYWlycyB0byBiZSBpbml0aWFsaXplZC4NCj4gPj4NCj4gPj4g VGhlIHByb2JsZW0gaXMgdGhhdCBRRU1VIHNlbmRzIHNvbWUgaWYgdGhlc2UgbWVzc2FnZXMgZXZl biBmb3INCj4gcXVldWVzDQo+ID4+IHRoYXQgYXJlbid0IChvciB3b24ndCBiZSkgaW5pdGlhbGl6 ZWQsIGFzIHlvdSBjYW4gc2VlIGluIGJlbG93IGxvZw0KPiA+PiB3aGVyZSBJIHJlcHJvZHVjZWQg dGhlIGlzc3VlIHdpdGggV2luZG93cyAxMDoNCj4gPj4NCj4gaHR0cHM6Ly9ldXIwMy5zYWZlbGlu a3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGcGFzDQo+ID4+IHRl DQo+IGJpbi5jb20lMkZZWUNmVzlZMyZhbXA7ZGF0YT0wMiU3QzAxJTdDbWF0YW4lNDBtZWxsYW5v eC5jb20lN0MNCj4gPj4NCj4gYmVkNWQzNjFmYmZmNDdhYjc2NjAwOGQ4MGM5OWNjNTMlN0NhNjUy OTcxYzdkMmU0ZDliYTZhNGQxNDkyNTZmNDYxDQo+ID4+DQo+IGIlN0MwJTdDMCU3QzYzNzI3MzIw MTk4NDY4NDUxMyZhbXA7c2RhdGE9TUJHMDl2NEJzY3BYNSUyQmYlMkJsDQo+ID4+IDdFT3doSmNy cHZvSDdXbzNJU1RMT3hDNkxrJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4+DQo+ID4+IEkgZG9uJ3Qg c2VlIGhvdyB0aGUgYmFja2VuZCBjb3VsZCBrbm93IHRoZSBndWVzdCBkcml2ZXIgaXMgZG9uZSB3 aXRoDQo+ID4+IGN1cnJlbnRseSByZWNlaXZlZCBpbmZvcm1hdGlvbiBmcm9tIFFlbXUgYXMgaXQg c2VlbXMgdG8gaGltIHNvbWUNCj4gPj4gcXVldWVzIGFyZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQg KGNhbGxmZCBpcyBzZXQpLg0KPiA+DQo+ID4gRG9u4oCZdCB5b3UgdGhpbmsgdGhhdCBvbmx5IGVu YWJsZWQgcXVldWVzIG11c3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbg0KPiB0aGVpciBzdGF0 dXMgaXMgY2hhbmdlZCBmcm9tIGRpc2FibGVkIHRvIGVuYWJsZWQ/DQo+ID4gU28sIHlvdSBjYW4g YXNzdW1lIHRoYXQgZGlzYWJsZWQgcXVldWVzIGNhbiBzdGF5ICJub3QgZnVsbHkgaW5pdGlhbGl6 ZWQiLi4uDQo+IA0KPiBUaGF0IG1heSB3b3JrIGJ1dCBtaWdodCBub3QgYmUgZm9sbG93aW5nIHRo ZSBWaXJ0aW8gc3BlYyBhcyB3aXRoIDEuMCB3ZQ0KPiBzaG91bGRuJ3QgcHJvY2VzcyB0aGUgcmlu Z3MgYmVmb3JlIERSSVZFUl9PSyBpcyBzZXQgKGJ1dCB3ZSBjYW5ub3QgYmUgc3VyZQ0KPiB3ZSBm b2xsb3cgaXQgYW55d2F5IHdpdGhvdXQgU0VUX1NUQVRVUyBzdXBwb3J0KS4NCj4gDQo+IEkgcHJv cG9zZSB0byBjb29rIGEgcGF0Y2ggZG9pbmcgdGhlIGZvbGxvd2luZzoNCj4gMS4gdmlydGlvX2lz X3JlYWR5KCkgd2lsbCBvbmx5IGVuc3VyZSB0aGUgZmlyc3QgcXVldWUgcGFpciBpcyByZWFkeSAo aS5lLiBlbmFibGVkDQo+IGFuZCBjb25maWd1cmVkKS4gTWVhbmluZyB0aGF0IGFwcCdzIG5ld19k ZXZpY2UgY2FsbGJhY2sgYW5kIHZEUEEgZHJpdmVycw0KPiBkZXZfY29uZiBjYWxsYmFjayB3aWxs IGJlIGNhbGxlZCB3aXRoIG9ubHkgdGhlIGZpcnN0IHF1ZXVlIHBhaXIgY29uZmlndXJlZCBhbmQN Cj4gZW5hYmxlZC4NCj4gDQo+IDIuIEJlZm9yZSBoYW5kbGluZyBhIG5ldyB2aG9zdC11c2VyIHJl cXVlc3QsIGl0IHNhdmVzIHRoZSByZWFkeSBzdGF0dXMgZm9yDQo+IGV2ZXJ5IHF1ZXVlIHBhaXIu DQo+IA0KPiAzLiBTYW1lIGhhbmRsaW5nIG9mIHRoZSByZXF1ZXN0cywgZXhjZXB0IHRoYXQgd2Ug d29uJ3Qgbm90aWZ5IHRoZSB2ZHBhDQo+IGRyaXZlciBhbmQgdGhlIGFwcGxpY2F0aW9uIG9mIHZy aW5nIHN0YXRlIGNoYW5nZXMgaW4gdGhlDQo+IFZIT1NUX1VTRVJfU0VUX1ZSSU5HX0VOQUJMRSBo YW5kbGVyLg0KPiANCj4gNC4gT25jZSB0aGUgVmhvc3QtdXNlciByZXF1ZXN0IGlzIGhhbmRsZWQs IGl0IGNvbXBhcmVzIHRoZSBuZXcgcmVhZHkgc3RhdHVzDQo+IGZvZSBldmVyeSBxdWV1ZXMgd2l0 aCB0aGUgb2xkIG9uZSBhbmQgc2VuZCBxdWV1ZSBzdGF0ZSBldmVudCBjaGFuZ2VzDQo+IGFjY29y ZGluZ2x5Lg0KDQpMb29rcyB2ZXJ5IG5pY2UgdG8gbWUuDQoNCk1vcmUgcG9pbnRzOg0KQnkgdGhp cyBtZXRob2Qgc29tZSBxdWV1ZXMgbWF5IGJlIGNvbmZpZ3VyZWQgYnkgdGhlIHNldF92cmluZ19z dGF0ZSBvcGVyYXRpb24gc28gdGhlIG5leHQgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGJlIGNhbGxl ZCBmb3IgZWFjaCBxdWV1ZSBieSB0aGUgZHJpdmVyIGZyb20gdGhlIHNldF92cmluZ19zdGF0ZSBj YWxsYmFjayA6DQoxLiBydGVfdmhvc3RfZW5hYmxlX2d1ZXN0X25vdGlmaWNhdGlvbg0KCVRoaXMg b25lIHRha2VzIGRhdGFwYXRoIGxvY2sgc28gd2UgbmVlZCB0byBiZSBzdXJlIHRoYXQgZGF0YXBh dGggbG9jayBpcyBub3QgbG9ja2VkIG9uIHRoaXMgcXVldWUgZnJvbSB0aGUgc2FtZSBjYWxsZXIg dGhyZWFkIChtYXliZSB0byBub3QgdGFrZXMgZGF0YXBhdGggbG9ja3Mgd2hlbiB2ZHBhIGlzIGNv bmZpZ3VyZWQgYXQgYWxsKS4NCjIuIHJ0ZV92aG9zdF9ob3N0X25vdGlmaWVyX2N0cmwNCglUaGlz IGZ1bmN0aW9uIEFQSSBpcyBwZXIgZGV2aWNlIGFuZCBub3QgcGVyIHF1ZXVlLCBtYXliZSB3ZSBu ZWVkIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIHRvIGJlIHBlciBxdWV1ZSAoYWRkIG5ldyBmb3Ig bm93IGFuZCBkZXByZWNhdGUgdGhlIG9sZCBvbmUgaW4gMjAuMTEpLg0KDQozLiBOZWVkIHRvIGJl IHN1cmUgdGhhdCBpZiByZWFkeSBxdWV1ZSBjb25maWd1cmF0aW9uIGlzIGNoYW5nZWQgYWZ0ZXIg ZGV2X2NvbmYsIHdlIHNob3VsZCBub3RpZnkgaXQgdG8gdGhlIGRyaXZlci4gKG1heWJlIGJ5IHNl dF92cmluZ19zdGF0ZShkaXNhYmwpIGFuZCBzZXRfdnJpbmdfc3RhdGUoZW5hYmxlKSkuDQoNCg0K PiBJdCBpcyBsaWtlbHkgdG8gbmVlZCBjaGFuZ2VzIGluIHRoZSAuZGV2X2NvbmYgYW5kIC5zZXRf dnJpbmdfc3RhdGUNCj4gaW1wbGVtZW50YXRpb25zIGJ5IHRoZSBkcml2ZXJzLg0KDQpZZXMsIGZv ciBNZWxsYW5veCBpdCBpcyB2ZXJ5IGVhc3kgY2hhbmdlLg0KSW50ZWw/DQoNCiANCj4gPg0KPiA+ PiBXaXRoIFZIT1NUX1VTRVJfU0VUX1NUQVRVUywgd2Ugd2lsbCBiZSBhYmxlIHRvIGhhbmRsZSB0 aGlzIHByb3Blcmx5LA0KPiA+PiBhcyB0aGUgYmFja2VuZCBjYW4gYmUgc3VyZSB0aGUgZ3Vlc3Qg d29uJ3QgaW5pdGlhbGl6ZSBtb3JlIHF1ZXVlcyBhcw0KPiA+PiBzb29uIGFzIERSSVZFUl9PSyBW aXJ0aW8gc3RhdHVzIGJpdCBpcyBzZXQuIEluIG15IHYyLCBJIGNhbiBhZGQgb25lDQo+ID4+IHBh dGNoIHRvIGhhbmRsZSB0aGlzIGNhc2UgcHJvcGVybHksIGJ5ICJkZXN0b3J5aW5nIiBxdWV1ZXMg bWV0YWRhdGENCj4gPj4gYXMgc29vbiBhcyBEUklWRVJfT0sgaXMgcmVjZWl2ZWQuDQo+ID4+DQo+ ID4+IE5vdGUgdGhhdCBpdCB3YXMgdGhlIGV4YWN0IHJlYXNvbiB3aHkgSSBmaXJzdCB0cmllZCB0 byBhZGQgc3VwcG9ydA0KPiA+PiBmb3IgVkhPU1RfVVNFUl9TRVRfU1RBVFVTIG1vcmUgdGhhbiB0 d28geWVhcnMgYWdvLi4uOg0KPiA+PiBodHRwczovL2V1cjAzLnNhZmVsaW5rcy5wcm90ZWN0aW9u Lm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZsaXMNCj4gPj4gdHMuZw0KPiA+PiBudS5v cmclMkZhcmNoaXZlJTJGaHRtbCUyRnFlbXUtZGV2ZWwlMkYyMDE4LQ0KPiA+Pg0KPiAwMiUyRm1z ZzA0NTYwLmh0bWwmYW1wO2RhdGE9MDIlN0MwMSU3Q21hdGFuJTQwbWVsbGFub3guY29tJTdDDQo+ ID4+DQo+IGJlZDVkMzYxZmJmZjQ3YWI3NjYwMDhkODBjOTljYzUzJTdDYTY1Mjk3MWM3ZDJlNGQ5 YmE2YTRkMTQ5MjU2ZjQ2MQ0KPiA+Pg0KPiBiJTdDMCU3QzAlN0M2MzcyNzMyMDE5ODQ2ODQ1MTMm YW1wO3NkYXRhPUtHSmpkRXRFTjU0ZHVOdTQxcmhCSXcNCj4gPj4gbzR0bWRXbjZRRDR5dmRSM3pl TEk4JTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4+DQo+ID4+IFdoYXQgZG8geW91IHRoaW5rPw0KPiA+ DQo+ID4gWWVzLCBJIGFncmVlIGl0IG1heSBiZSBzb2x2ZWQgYnkgVkhPU1RfVVNFUl9TRVRfU1RB VFVTIChhbmQgcHJvYmFibHkgYQ0KPiA+IGxvdCBvZiBvdGhlciBpc3N1ZXMpLCBCdXQgSSB0aGlu ayB3ZSBuZWVkIHN1cHBvcnQgYWxzbyBsZWdhY3kgUUVNVSB2ZXJzaW9ucw0KPiBpZiB3ZSBjYW4u Li4NCj4gDQo+IEkgdGhpbmsgdGhlIFNFVF9TVEFUVVMgc3VwcG9ydCBpcyBpbXBvcnRhbnQgdG8g YmUgY29tcGxpYW50IHdpdGggdGhlIFZpcnRpbw0KPiBzcGVjaWZpY3RhdGlvbi4NCj4gDQo+ID4g RG9uJ3QgeW91IHRoaW5rIHNvPw0KDQpZZXMsIEkgYWdyZWUuDQoNCj4gDQo+IFdlIGNhbiB0cnkg dGhhdC4NCj4gSSB3aWxsIHRyeSB0byBjb29rIHNvbWV0aGluZyB0aGlzIHdlZWssIGJ1dCBpdCB3 aWxsIHJlcXVpcmUgdmFsaWRhdGlvbiB3aXRoIE9WUw0KPiB0byBiZSBzdXJlIHdlIGRvbid0IGJy ZWFrIG11bHRpcXVldWUuIEkgd2lsbCBzZW5kIGl0IGFzIFJGQywgYW5kIGNvdW50IG9uIHlvdQ0K PiB0byB0cnkgaXQgd2l0aCB5b3VyIG1seDUgdkRQQSBkcml2ZXIuDQo+IA0KPiBEb2VzIGl0IHdv cmsgZm9yIHlvdT8gKG5vdGUgSSdsbCBiZSBvbiB2YWNhdGlvbiBmcm9tIEp1bHkgMXN0IHRvIDE3 dGgpDQoNClN1cmUsDQpEbyB5b3UgaGF2ZSBjYXBhY2l0eSB0byBkbyBpdCB0aGlzIHdlZWs/DQpJ IGNhbiBoZWxwLi4uLi4gDQoNCk1hdGFuDQoNCg0KPiANCj4gVGhhbmtzLA0KPiBNYXhpbWUNCj4g DQo+ID4+IFJlZ2FyZHMsDQo+ID4+IE1heGltZQ0KPiA+DQoNCg==