From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0048.outbound.protection.outlook.com [104.47.38.48]) by dpdk.org (Postfix) with ESMTP id 275452BD0 for ; Mon, 20 Nov 2017 06:11:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=bC1aNZ1HhAqvz6KkhiKthNj9Es4d/tICQBGS6aViUQI=; b=jS42/xvdng+7c/cQX9D5zwb9F7Ilj0ShFTfkjgXwTpuZ68MkF0HubEXiamytE+mMQHHb1p02eF5SytBgINOhqfG/tk1nkeMiKlsGB1bVVWyC+lW7/GsqSGzSPyfvBw+TCR7ok6blHkJ8pXqys/FpeNPC1xd9R8fGvQrRPcvG0Lk= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by BY1PR0701MB1112.namprd07.prod.outlook.com (10.160.104.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.218.12; Mon, 20 Nov 2017 05:11:09 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::7d50:7509:ac28:c238]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::7d50:7509:ac28:c238%18]) with mapi id 15.20.0218.015; Mon, 20 Nov 2017 05:11:03 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Challa, Mahipal" , "Verma, Shally" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdNRkjwE1ZjDhxTcR46UpkXBh0QrkQAdnT0wA+0Y/XA= Date: Mon, 20 Nov 2017 05:11:03 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; x-originating-ip: [223.237.61.11] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BY1PR0701MB1112; 6:4Mw4vVDWwNal7wHx9/+cJATF4JPZWG5FV7AZtTzPcr6hboIk9ZpYp4oPzSW99OUZAObnK0j/fanc9CKjrZPtNhy3OtSRa+bjg6kL14mZSf/B8pCMrmQiO7H1fmPa0NjMMZFCeSrBcKrrzm1Rmqueohi7cXAs5hesAb53+j8vW8kNL8V5BEa8CaI53ARGHfsr+K7qJH+ezOuRwhIsCryov3T5ACmmpDg+Ye5N6ZV58fTY351oS1POwT0EEap5HxPvlLQD/dr1KQT2k4W4pLovefxUwReqfr7l6NQ63EUsmk9JLU1E0bZWqMQZae7tBj5e5WCBUcsgRPoy+FveVAdj0t6Kwq/TL739ghIUq7wlzfs=; 5:RCvhskcg1+I2stFV3aS9nzOUOOmAKkUTTeoPWjfHTU1u6vgoTj2D9yhMekGr0AZq+eFKKYyZnDkc56xMk/J5gCZDC/bsMLN1ji1ADuB9/caYGquMAzluNGjsE0A/iBeQKF4kvcUlPQgm0Lr7vOe20RCq1d0XXu4TErzkgkae6gw=; 24:cGJCx4Kr/yDKYGMKpN8gBJRgUI8z8ue5G/fusVU9iM1Q76c18GyxlMuI1u2uivz3OytGdwLBSM6SGx2PCY66E1/pYi1sV1JsNdx7ZUGYVcw=; 7:pPD0teYfpeyZM7LDAcOuI3bYqLqIGneZBgIvilkYVZLEism7or6KbXiPyixkJ4XZFerNkbzuB0/6KHUcvdiVrMC/U8RlJ+EMl14I7iqLLiptjuDxUky6gCCugh0LAiq9qSmrAC/lmAVQPDiCzEjiENXXHdDPiIs54XnjEKroWUMABH13gPT+qx2/6vUDI1A040WP6WA/gOM3ZIPEVC/IShelLs1lMgxjejUDBA2ff2LmfpeX1UZEP2zUfnyctVXM x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(189002)(199003)(13464003)(5250100002)(99286004)(478600001)(14454004)(105586002)(106356001)(66066001)(8936002)(72206003)(966005)(50986999)(25786009)(68736007)(6436002)(101416001)(3846002)(76176999)(5890100001)(2501003)(6116002)(6506006)(7736002)(54906003)(102836003)(2950100002)(5660300001)(53546010)(53376002)(74316002)(316002)(53936002)(189998001)(229853002)(53366004)(3660700001)(33656002)(6246003)(561944003)(97736004)(110136005)(2900100001)(2906002)(305945005)(9686003)(3280700002)(4326008)(107886003)(81166006)(55016002)(54356999)(86362001)(81156014)(7696004)(6306002)(8676002)(10090945008); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1112; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: b11882bd-c818-41fc-5f3b-08d52fd5191b x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603258); SRVR:BY1PR0701MB1112; x-ms-traffictypediagnostic: BY1PR0701MB1112: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(3231022)(93006095)(93001095)(3002001)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY1PR0701MB1112; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY1PR0701MB1112; x-forefront-prvs: 04976078F0 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: b11882bd-c818-41fc-5f3b-08d52fd5191b X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2017 05:11:03.7306 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1112 Subject: Re: [dpdk-dev] [RFC v1] doc compression API for DPDK 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, 20 Nov 2017 05:11:13 -0000 UGluZy4gQXdhaXRpbmcgZmVlZGJhY2svY29tbWVudHMuDQoNClRoYW5rcw0KU2hhbGx5DQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5j ZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBWZXJtYSwgU2hhbGx5DQo+IFNlbnQ6IDMxIE9jdG9i ZXIgMjAxNyAxNzowOQ0KPiBUbzogZGV2QGRwZGsub3JnOyBUcmFoZSwgRmlvbmEgPGZpb25hLnRy YWhlQGludGVsLmNvbT47IEF0aHJleWEsDQo+IE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFz YWQuQXRocmV5YUBjYXZpdW0uY29tPjsgQ2hhbGxhLCBNYWhpcGFsDQo+IDxNYWhpcGFsLkNoYWxs YUBjYXZpdW0uY29tPg0KPiBTdWJqZWN0OiBbZHBkay1kZXZdIFtSRkMgdjFdIGRvYyBjb21wcmVz c2lvbiBBUEkgZm9yIERQREsNCj4gDQo+IFtUaGlzIHNlbmRlciBmYWlsZWQgb3VyIGZyYXVkIGRl dGVjdGlvbiBjaGVja3MgYW5kIG1heSBub3QgYmUgd2hvIHRoZXkNCj4gYXBwZWFyIHRvIGJlLiBM ZWFybiBhYm91dCBzcG9vZmluZyBhdCBodHRwOi8vYWthLm1zL0xlYXJuQWJvdXRTcG9vZmluZ10N Cj4gDQo+IEhJIEZpb25hDQo+IA0KPiBUaGlzIGlzIGFuIFJGQyBkb2N1bWVudCB0byBicmllZiBv dXIgdW5kZXJzdGFuZGluZyBhbmQgcmVxdWlyZW1lbnRzIG9uDQo+IGNvbXByZXNzaW9uIEFQSSBw cm9wb3NhbCBpbiBEUERLLiBJdCBpcyBiYXNlZCBvbiAiW1JGQ10gQ29tcHJlc3Npb24gQVBJIGlu DQo+IERQREsgaHR0cDovL2RwZGsub3JnL21sL2FyY2hpdmVzL2Rldi8yMDE3LU9jdG9iZXIvMDc5 Mzc3Lmh0bWwiLg0KPiBJbnRlbnRpb24gb2YgdGhpcyBkb2N1bWVudCBpcyB0byBhbGlnbiBvbiBj b25jZXB0cyBidWlsdCBpbnRvIGNvbXByZXNzaW9uIEFQSSwNCj4gaXRzIHVzYWdlIGFuZCBpZGVu dGlmeSBmdXJ0aGVyIHJlcXVpcmVtZW50cy4NCj4gDQo+IEdvaW5nIGZ1cnRoZXIgaXQgY291bGQg YmUgYSBiYXNlIHRvIENvbXByZXNzaW9uIE1vZHVsZSBQcm9ncmFtbWVyIEd1aWRlLg0KPiANCj4g Q3VycmVudCBzY29wZSBpcyBsaW1pdGVkIHRvDQo+IC0gZGVmaW5pdGlvbiBvZiB0aGUgdGVybWlu b2xvZ3kgd2hpY2ggbWFrZXMgdXAgZm91bmRhdGlvbiBvZiBjb21wcmVzc2lvbg0KPiBBUEkNCj4g LSB0eXBpY2FsIEFQSSBmbG93IGV4cGVjdGVkIHRvIHVzZSBieSBhcHBsaWNhdGlvbnMNCj4gDQo+ IE92ZXJ2aWV3DQo+IH5+fn5+fn5+DQo+IEEuIE5vdGlvbiBvZiBhIHNlc3Npb24gaW4gY29tcHJl c3Npb24gQVBJDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gQSBTZXNz aW9uIGlzIHBlciBkZXZpY2UgbG9naWNhbCBlbnRpdHkgd2hpY2ggaXMgc2V0dXAgd2l0aCBjaGFp bmVkLXhmb3JtcyB0byBiZQ0KPiBwZXJmb3JtZWQgb24gYnVyc3Qgb3BlcmF0aW9ucyB3aGVyZSBp bmRpdmlkdWFsIGVudHJ5IGNvbnRhaW5zIG9wZXJhdGlvbg0KPiB0eXBlIChkZWNvbXByZXNzL2Nv bXByZXNzKSBhbmQgcmVsYXRlZCBwYXJhbWV0ZXIuDQo+IEEgdHlwaWNhbCBTZXNzaW9uIHBhcmFt ZXRlciBpbmNsdWRlczoNCj4gLSBjb21wcmVzcyAvIGRlY29tcHJlc3MNCj4gLSBkZXZfaWQNCj4g LSBjb21wcmVzc2lvbiBhbGdvcml0aG0gYW5kIG90aGVyIHJlbGF0ZWQgcGFyYW1ldGVycw0KPiAt IG1lbXBvb2wgLSBmb3IgdXNlIGJ5IHNlc3Npb24gZm9yIHJ1bnRpbWUgcmVxdWlyZW1lbnQNCj4g LSBhbmQgYW55IG90aGVyIGFzc29jaWF0ZWQgcHJpdmF0ZSBkYXRhIG1haW50YWluZWQgYnkgc2Vz c2lvbg0KPiANCj4gQXBwbGljYXRpb24gY2FuIHNldHVwIG11bHRpcGxlIHNlc3Npb25zIG9uIGEg ZGV2aWNlIGFzIGRpY3RhdGVkIGJ5DQo+IGRldl9pbmZvLm5iX3Nlc3Npb25zIG9yIG5iX3Nlc3Np b25fcGVyX3FwLg0KPiANCj4gQi4gTm90aW9uIG9mIGJ1cnN0IG9wZXJhdGlvbnMgaW4gY29tcHJl c3Npb24gQVBJDQo+ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g c3RydWN0IHJ0ZV9jb21wX29wIGRlZmluZXMgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBvcGVy YXRpb25hbA0KPiBwYXJhbWV0ZXIgYW5kIG1ha2VzIHVwIG9uZSBzaW5nbGUgZWxlbWVudCBvZiBi dXJzdC4gVGhpcyBpcyBib3RoIGFuDQo+IGlucHV0L291dHB1dCBwYXJhbWV0ZXIuDQo+IFBNRCBn ZXRzIHNvdXJjZSwgZGVzdGluYXRpb24gYW5kIGNoZWNrc3VtIGluZm9ybWF0aW9uIGF0IGlucHV0 IGFuZA0KPiB1cGRhdGVkIGl0IHdpdGggYnl0ZXMgY29uc3VtZWQgYW5kIHByb2R1Y2VkIGF0IG91 dHB1dC4NCj4gT25jZSBlbnF1ZXVlZCBmb3IgcHJvY2Vzc2luZywgcnRlX2NvbXBfb3AgKmNhbm5v dCBiZSByZXVzZWQqIHVudGlsIGl0cw0KPiBzdGF0dXMgaXMgc2V0IHRvIFJURV9DT01QX09QX0ZB SUxVUkUgb3INCj4gUlRFX0NPTVBfT1BfU1RBVFVTX1NVQ0NFU1MuDQo+IA0KPiBDLiBTZXNzaW9u IGFuZCBydGVfY29tcF9vcA0KPiAgPT09PT09PT09PT09PT09PT09PT09PT0NCj4gRXZlcnkgb3Bl cmF0aW9uIGluIGEgYnVyc3QgaXMgdGllZCB0byBhIFNlc3Npb24uIE1vcmUgdG8gY292ZXIgb24g dGhpcyB1bmRlcg0KPiBTdGF0ZWxlc3MgVnMgU3RhdGVmdWwgc2VjdGlvbi4NCj4gDQo+IEQuIFN0 YXRlbGVzcyBWcyBTdGF0ZWZ1bA0KPiA9PT09PT09PT09PT09PT09PT09DQo+IENvbXByZXNzaW9u IEFQSSBwcm92aWRlIFJURV9DT01QX0ZGX1NUQVRFRlVMIGZlYXR1cmUgZmxhZyBmb3IgUE1EIHRv DQo+IHJlZmxlY3QgaXRzIHN1cHBvcnQgZm9yIFN0YXRlZnVsIG9wZXJhdGlvbi4NCj4gDQo+IEQu MSBDb21wcmVzc2lvbiBBUEkgU3RhdGVsZXNzIG9wZXJhdGlvbg0KPiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gQSBTdGF0ZWxlc3Mgb3Bl cmF0aW9uIG1lYW5zIGFsbCBlbnF1ZXVlZCBwYWNrZXRzIGFyZSBpbmRlcGVuZGVudCBvZiBlYWNo DQo+IG90aGVyIGkuZS4gRWFjaCBwYWNrZXQgaGFzDQo+IC0gICAgICAgICAgICAgIFRoZWlyIGZs dXNoIHZhbHVlIGlzIHNldCB0byBSVEVfRkxVU0hfRlVMTCBvciBSVEVfRkxVU0hfRklOQUwNCj4g KHJlcXVpcmVkIG9ubHkgb24gY29tcHJlc3Npb24gc2lkZSksDQo+IC0gICAgICAgICAgICAgIEFs bC1vZiB0aGUgcmVxdWlyZWQgaW5wdXQgYW5kIHN1ZmZpY2llbnQgbGFyZ2UgYnVmZmVyIHNpemUg dG8gc3RvcmUNCj4gb3V0cHV0IGkuZS4gT1VUX09GX1NQQUNFIGNhbiBuZXZlciBvY2N1ciAocmVx dWlyZWQgZHVyaW5nIGJvdGgNCj4gY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24pDQo+IA0K PiBJbiBzdWNoIGNhc2UsIFBNRCBpbml0aWF0ZXMgc3RhdGVsZXNzIHByb2Nlc3NpbmcgYW5kIHJl bGVhc2VzIGFjcXVpcmVkDQo+IHJlc291cmNlcyBhZnRlciBwcm9jZXNzaW5nIG9mIGN1cnJlbnQg b3BlcmF0aW9uIGlzIGNvbXBsZXRlIGkuZS4gZnVsbCBpbnB1dA0KPiBjb25zdW1lZCBhbmQgZnVs bCBvdXRwdXQgd3JpdHRlbi4NCj4gQXBwbGljYXRpb24gY2FuIGF0dGFjaCBzYW1lIG9yIGRpZmZl cmVudCBzZXNzaW9uIHRvIGVhY2ggcGFja2V0IGFuZCBjYW4gbWFrZQ0KPiBjb25zZWN1dGl2ZSBl bnF1ZV9idXJzdCgpIGNhbGxzIGkuZS4gRm9sbG93aW5nIGlzIHJlbGV2YW50IHVzYWdlOg0KPiAN Cj4gZW5xdWV1ZWQgPSBydGVfY29tcF9lbnF1ZV9idXJzdCAoZGV2X2lkLCBxcF9pZCwgb3BzMSwg bmJfb3BzKTsNCj4gZW5xdWV1ZWQgPSBydGVfY29tcF9lbnF1ZV9idXJzdChkZXZfaWQsIHFwX2lk LCBvcHMyLCBuYl9vcHMpOw0KPiBlbnF1ZXVlZCA9IHJ0ZV9jb21wX2VucXVlX2J1cnN0KGRldl9p ZCwgcXBfaWQsIG9wczMsIG5iX29wcyk7DQo+IA0KPiAqTm90ZSDigJMgRXZlcnkgY2FsbCBoYXMg ZGlmZmVyZW50IG9wcyBhcnJheSBpLmUuICBzYW1lIHJ0ZV9jb21wX29wIGFycmF5DQo+ICpjYW5u b3QgYmUgcmV1c2VkKiB0byBxdWV1ZSBuZXh0IGJhdGNoIG9mIGRhdGEgdW50aWwgcHJldmlvdXMg b25lcyBhcmUNCj4gY29tcGxldGVseSBwcm9jZXNzZWQuDQo+IA0KPiBBbHNvIGlmIG11bHRpcGxl IHRocmVhZHMgY2FsbHMgZW5xdWV1ZV9idXJzdCgpIG9uIHNhbWUgcXVldWUgcGFpciB0aGVuIGl0 4oCZcw0KPiBhcHBsaWNhdGlvbiBvbnVzIHRvIHVzZSBwcm9wZXIgbG9ja2luZyBtZWNoYW5pc20g dG8gZW5zdXJlIHNlcmlhbGl6ZWQNCj4gZW5xdWV1aW5nIG9mIG9wZXJhdGlvbnMuDQo+IA0KPiBQ bGVhc2Ugbm90ZSBhbnkgdGltZSBvdXRwdXQgYnVmZmVyIHJhbiBvdXQgb2Ygc3BhY2UgZHVyaW5n IHdyaXRlIHRoZW4NCj4gb3BlcmF0aW9uIHdpbGwgdHVybiDigJxTdGF0ZWZ1bOKAnS4gIFNlZSBt b3JlIG9uIFN0YXRlZnVsIHVuZGVyIHJlc3BlY3RpdmUNCj4gc2VjdGlvbi4NCj4gDQo+ICBUeXBp Y2FsIEFQSShmbG93LXdpc2UpIHRvIHNldHVwIGZvciBzdGF0ZWxlc3Mgb3BlcmF0aW9uOg0KPiAx LiBydGVfY29tcF9zZXNzaW9uICpzZXNzID0gcnRlX2NvbXBfc2Vzc2lvbl9jcmVhdGUocnRlX21l bXBvb2wNCj4gKnBvb2wpOw0KPiAyLiBydGVfY29tcF9zZXNzaW9uX2luaXQgKGludCBkZXZfaWQs IHJ0ZV9jb21wX3Nlc3Npb24gKnNlc3MsDQo+IHJ0ZV9jb21wX3hmb3JtICp4Zm9ybSwgcnRlX21l bXBvb2wgKnNlc3NfcG9vbCk7DQo+IDMuIHJ0ZV9jb21wX29wX3Bvb2xfY3JlYXRlKHJ0ZV9tZW1w b29sIC4uKQ0KPiA0LiBydGVfY29tcF9vcF9idWxrX2FsbG9jIChzdHJ1Y3QgcnRlX21lbXBvb2wg Km1lbXBvb2wsIHN0cnVjdA0KPiBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QgbmJfb3BzKTsN Cj4gNS4gZm9yIGV2ZXJ5IHJ0ZV9jb21wX29wIGluIG9wc1tdLA0KPiAgICAgNS4xIHJ0ZV9jb21w X29wX2F0dGFjaF9zZXNzaW9uKHJ0ZV9jb21wX29wICpvcCwgcnRlX2NvbXBfc2Vzc2lvbg0KPiAq c2Vzcyk7DQo+ICAgICA1LjIgc2V0IHVwIHdpdGggc3JjL2RzdCBidWZmZXINCj4gNi4gZW5xID0g cnRlX2NvbXBkZXZfZW5xdWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQs DQo+IHN0cnVjdCBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QgbmJfb3BzKTsNCj4gNy4gZHF1 ID0gcnRlX2NvbXBkZXZfZGVxdWV1ZV9idXJzdChkZXZfaWQsIHFwX2lkLCBvcHMsIGVucSk7DQo+ IDguIHJlcGVhdCA3IHdoaWxlIChkcXUgPCBlbnEpIC8vIFdhaXQgdGlsbCBhbGwgb2YgZW5xdWV1 ZWQgYXJlIGRlcXVldWVkDQo+IDkuIFJlcGVhdCA1LjIgZm9yIG5leHQgYmF0Y2ggb2YgZGF0YQ0K PiAxMC4gcnRlX2NvbXBfc2Vzc2lvbl9jbGVhciAoKSAvLyBvbmx5IHJlc2V0IHByaXZhdGUgZGF0 YSBtZW1vcnkgYXJlYSBhbmQNCj4gKm5vdCogdGhlIHhmb3JtIGFuZCBkZXZpZCBpbmZvcm1hdGlv bi4gSW4gY2FzZSwgeW91IHdhbnQgdG8gcmUtdXNlIHNlc3Npb24uDQo+IDExLiBydGVfY29tcF9z ZXNzaW9uX2ZyZWUocmV0X2NvbXBfc2VzcyAqc2Vzc2lvbikNCj4gDQo+IEQuMS4yIFJlcXVpcmVt ZW50IGZvciBTdGF0ZWxlc3MNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiBTaW5jZSBvcGVyYXRpb24gY2FuIGNvbXBsZXRlIG91dC1vZi1vcmRlci4gVGhl cmUgc2hvdWxkIGJlIG9uZSAodm9pZA0KPiAqdXNlcikgcGVyIHJ0ZV9jb21wX29wIHRvIGVuYWJs ZSBhcHBsaWNhdGlvbiB0byBtYXAgZGVxdWV1ZWQgb3AgdG8NCj4gZW5xdWV1ZWQgb3AuDQo+IA0K PiBELjIgQ29tcHJlc3Npb24gQVBJIFN0YXRlZnVsIG9wZXJhdGlvbg0KPiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBBIFN0YXRl ZnVsIG9wZXJhdGlvbiBtZWFucyBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gLSBBUEkgcmFuIGlu dG8gb3V0X29mX3NwYWNlIHNpdHVhdGlvbiBkdXJpbmcgcHJvY2Vzc2luZyBvZiBpbnB1dC4gRXhh bXBsZSwNCj4gc3RhdGVsZXNzIGNvbXByZXNzZWQgc3RyZWFtIGZlZCBmdWxseSB0byBkZWNvbXBy ZXNzb3IgYnV0IG91dHB1dCBidWZmZXIgaXMNCj4gbm90IGxhcmdlIGVub3VnaCB0byBob2xkIG91 dHB1dC4NCj4gLSBBUEkgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCB0byBwcm9kdWNlIG91dHB1dC4g RXhhbXBsZSwgc3RhdGVsZXNzDQo+IGNvbXByZXNzZWQgc3RyZWFtIGZlZCBwYXJ0aWFsbHkgdG8g ZGVjb21wcmVzc29yLg0KPiAtIEFQSSBpcyBkZXBlbmRlbnQgb24gcHJldmlvdXMgb3BlcmF0aW9u IGZvciBmdXJ0aGVyDQo+IGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24NCj4gDQo+IEluIGNhc2Ug b2YgZWl0aGVyIG9uZSBvciBhbGwgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgUE1EIGlzIHJlcXVp cmVkIHRvDQo+IG1haW50YWluIGNvbnRleHQgb2Ygb3BlcmF0aW9ucyBhY3Jvc3MgZW5xdWVfYnVy c3QoKSBjYWxscywgdW50aWwgYSBwYWNrZXQgd2l0aA0KPiBSVEVfRkxVU0hfRlVMTC9GSU5BTCBh bmQgc3VmZmljaWVudCBpbnB1dC9vdXRwdXQgYnVmZmVycyBpcyByZWNlaXZlZCBhbmQNCj4gcHJv Y2Vzc2VkLg0KPiANCj4gRC4yLjEgQ29tcHJlc3Npb24gQVBJIHJlcXVpcmVtZW50IGZvciBTdGF0 ZWZ1bA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gDQo+IEQuMi4xLjEgU2xpZGluZyBXaW5kb3cgU2l6ZQ0KPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gTWF4aW11bSBsZW5ndGggb2YgU2xp ZGluZyBXaW5kb3cgaW4gYnl0ZXMuIFByZXZpb3VzIGRhdGEgbG9va3VwIHdpbGwgYmUNCj4gcGVy Zm9ybWVkIHVwIHRvIHRoaXMgbGVuZ3RoLiBUbyBiZSBhZGRlZCBhcyBhbGdvcml0aG0gY2FwYWJp bGl0eSBwYXJhbWV0ZXINCj4gYW5kIHNldCBieSBQTUQuDQo+IA0KPiBELjIuMS4yIFN0YXRlZnVs IG9wZXJhdGlvbiBzdGF0ZSBtYWludGVuYW5jZQ0KPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUaGlzIHNlY3Rpb24gc3Rh cnRzIHdpdGggZGVzY3JpcHRpb24gb2Ygb3VyIHVuZGVyc3RhbmRpbmcgYWJvdXQgY29tcHJlc3Np b24NCj4gQVBJIHN1cHBvcnQgZm9yIHN0YXRlZnVsLiBEZXBlbmRpbmcgdXBvbiB1bmRlcnN0YW5k aW5nIGJ1aWxkIHVwb24gdGhlc2UNCj4gY29uY2VwdHMsIHdlIHdpbGwgaWRlbnRpZnkgcmVxdWly ZWQgZGF0YSBzdHJ1Y3R1cmUvcGFyYW0gdG8gbWFpbnRhaW4gaW4tDQo+IHByb2dyZXNzIG9wZXJh dGlvbiBjb250ZXh0IGJ5IFBNRC4NCj4gDQo+IEZvciBzdGF0ZWZ1bCBjb21wcmVzc2lvbiwgYmF0 Y2ggb2YgZGVwZW5kZW50IHBhY2tldHMgc3RhcnRzIGF0IGEgcGFja2V0DQo+IGhhdmluZyBSVEVf Tk9fRkxVU0gvUlRFX1NZTkNfRkxVU0ggZmx1c2ggdmFsdWUgYW5kIGVuZCBhdCBwYWNrZXQNCj4g aGF2aW5nIFJURV9GVUxMX0ZMVVNIL0ZJTkFMX0ZMVVNILiBpLmUuIGFycmF5IG9mIG9wZXJhdGlv bnMgd2lsbCBjYXJyeQ0KPiBzdHJ1Y3R1cmUgbGlrZSB0aGlzOg0KPiANCj4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+IHxvcDEubm9fZmx1c2ggfCBvcDIubm9fZmx1c2ggfCBvcDMubm9f Zmx1c2ggfCBvcDQuZnVsbF9mbHVzaHwNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ IA0KPiBGb3Igc2FrZSBvZiBzaW1wbGljaXR5LCB3ZSB3aWxsIHVzZSB0ZXJtICJzdHJlYW0iIHRv IGlkZW50aWZ5IHN1Y2ggcmVsYXRlZCBzZXQNCj4gb2Ygb3BlcmF0aW9uIGluIGZvbGxvd2luZyBk ZXNjcmlwdGlvbi4NCj4gDQo+IFN0cmVhbSBwcm9jZXNzaW5nIGltcG9zZSBmb2xsb3dpbmcgbGlt aXRhdGlvbnMgb24gdXNhZ2Ugb2YgZW5xdWVfYnVyc3QoKQ0KPiBBUEkNCj4gLSAgICAgICAgICAg ICAgQWxsIGRlcGVuZGVudCBwYWNrZXRzIGluIGEgc3RyZWFtIHNob3VsZCBjYXJyeSBzYW1lIHNl c3Npb24NCj4gLSAgICAgICAgICAgICAgaWYgc3RyZWFtIGlzIGJyb2tlbiBpbnRvIG11bHRpcGxl IGVucXVldWVfYnVyc3QoKSBjYWxsLCB0aGVuIG5leHQNCj4gZW5xdWV1ZV9idXJzdCgpIGNhbm5v dCBiZSBjYWxsZWQgdW50aWwgcHJldmlvdXMgb25lIGhhcyBmdWxseSBwcm9jZXNzZWQuIEkuRS4N Cj4gDQo+ICAgICAgICAgICAgICAgIENvbnNpZGVyIGZvciBleGFtcGxlLCBhIHN0cmVhbSB3aXRo IG9wczEgLi5vcHM3LCAgVGhpcyBpcyAqbm90Kg0KPiBhbGxvd2VkDQo+IA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0t LQ0KPiAgICAgICAgICAgICAgICAgZW5xdWVfYnVyc3QofG9wMS5ub19mbHVzaCB8IG9wMi5ub19m bHVzaCB8IG9wMy5ub19mbHVzaCB8DQo+IG9wNC5ub19mbHVzaHwpDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tDQo+ IA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAg ICAgICAgICAgICAgIGVucXVlX2J1cnN0KHxvcDUubm9fZmx1c2ggfCBvcDYubm9fZmx1c2ggfCBv cDcuZmx1c2hfZmluYWwgfCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gDQo+ICAgICAgICAgICAgICAgVGhpcyAqaXMqIGFsbG93ZWQNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0t LS0tLS0tLS0NCj4gICAgICAgICAgICAgICAgZW5xdWVfYnVyc3QofG9wMS5ub19mbHVzaCB8IG9w Mi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8DQo+IG9wNC5ub19mbHVzaHwpDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0t LS0tDQo+IA0KPiAgICAgICAgICAgICAgICAgZGVxdWVfYnVyc3Qob3BzMSAuLm9wczQpDQo+IA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAgICAg ICAgICAgICAgIGVucXVlX2J1cnN0KHxvcDUubm9fZmx1c2ggfCBvcDYubm9fZmx1c2ggfCBvcDcu Zmx1c2hfZmluYWwgfCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gDQo+IC0gICAgICAgICAgICAgIEEgc2luZ2xlIGVucXVlX2J1cnN0KCkgY2Fu IGNhcnJ5IG9ubHkgb25lIHN0cmVhbS4gSS5FLiBUaGlzIGlzICpub3QqDQo+IGFsbG93ZWQNCj4g DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgICAgICAgICAgICAgIGVu cXVlX2J1cnN0ICh8b3AxLm5vX2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLmZsdXNoX2ZpbmFs IHwNCj4gb3A0Lm5vX2ZsdXNoIHwgb3A1Lm5vX2ZsdXNoIHwpDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IElmIGEgc3RyZWFtIGlzIGJyb2tlbiBpbiB0byBzZXZl cmFsIGVucXVldWVfYnVyc3QoKSBjYWxscywgdGhlbiBjb21wcmVzcyBBUEkNCj4gbmVlZCB0byBt YWludGFpbiBvcGVyYXRpb25hbCBzdGF0ZSBiZXR3ZWVuIGNhbGxzLiBGb3IgdGhpcywgY29uY2Vw dCBvZg0KPiBydGVfY29tcF9zdHJlYW0gaXMgZW5hYmxlZCBpbiB0byBjb21wcmVzc2lvbiBBUEku DQo+IEhlcmXigJlyZSB0aGUgcHJvcG9zZWQgY2hhbmdlcyB0byBleGlzdGluZyBkZXNpZ246DQo+ IA0KPiAxLiBBZGQgcnRlX2NvbXBfb3BfdHlwZQ0KPiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uDQo+IGVudW0gcnRlX2NvbXBfb3BfdHlwZSB7DQo+IFJURV9DT01QX09Q X1NUQVRFTEVTUywNCj4gUlRFX0NPTVBfT1BfU1RBVEVGVUwNCj4gfQ0KPiANCj4gMi4gQWRkIG5l dyBkYXRhIHR5cGUgcnRlX2NvbXBfc3RyZWFtIHRvIG1haW50YWluIHN0cmVhbSBzdGF0ZQ0KPiAu Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KPiBydGVfY29t cF9zdHJlYW0gaXMgYW4gb3BhcXVlIGRhdGEgc3RydWN0dXJlIHRvIGFwcGxpY2F0aW9uIHdoaWNo IGlzDQo+IGV4Y2hhbmdlZCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGFwcGxpY2F0aW9uIGFuZCBQ TUQgZHVyaW5nIHN0YXRlZnVsDQo+IGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24uDQo+IEl0IHNo b3VsZCBiZSBhbGxvY2F0ZWQgcGVyIHN0cmVhbSBBTkQgYmVmb3JlIGJlZ2lubmluZyBvZiBzdGF0 ZWZ1bA0KPiBvcGVyYXRpb24uIElmIHN0cmVhbSBpcyBicm9rZW4gaW50byBtdWx0aXBsZSBlbnF1 ZXVlX2J1cnN0KCkgdGhlbiBlYWNoDQo+IHJlc3BlY3RpdmUgZW5xdWV1ZV9idXJzdCgpIG11c3Qg Y2Fycnkgc2FtZSBydGVfY29tcF9zdHJlYW0gcG9pbnRlci4gSXQgaXMNCj4gbWFuZGF0b3J5IGlu cHV0IGZvciBzdGF0ZWZ1bCBvcGVyYXRpb25zLg0KPiBydGVfY29tcF9zdHJlYW0gY2FuIGJlIGNs ZWFyZWQgYW5kIHJldXNlZCB2aWEgY29tcHJlc3Npb24gQVBJDQo+IHJ0ZV9jb21wX3N0cmVhbV9j bGVhcigpIGFuZCBmcmVlIHZpYSBydGVfY29tcF9zdHJlYW1fZnJlZSgpLiBDbGVhci9mcmVlDQo+ IHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gaXQgaXMgaW4gdXNlLg0KPiANCj4gVGhpcyBlbmFi bGVzIHNoYXJpbmcgb2YgYSBzZXNzaW9uIGJ5IG11bHRpcGxlIHRocmVhZHMgaGFuZGxpbmcgZGlm ZmVyZW50DQo+IHN0cmVhbXMgYXMgZWFjaCBidWxrIG9wcyBjYXJyeSBpdHMgb3duIGNvbnRleHQu IFRoaXMgY2FuIGFsc28gYmUgdXNlZCBieSBQTUQNCj4gdG8gaGFuZGxlIE9VVF9PRl9TUEFDRSBz aXR1YXRpb24uDQo+IA0KPiAzLiBBZGQgc3RyZWFtIGFsbG9jYXRlLCBjbGVhciBhbmQgZnJlZSBB UEkNCj4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLg0KPiAzLjEuIHJ0ZV9jb21wX29wX3N0cmVhbV9hbGxvYyhydGVfbWVt cG9vbCAqcG9vbCwgcnRlX2NvbXBfb3BfdHlwZQ0KPiB0eXBlLCBydGVfY29tcF9zdHJlYW0gKipz dHJlYW0pOw0KPiAzLjIuIHJ0ZV9jb21wX29wX3N0cmVhbV9jbGVhcihydGVfY29tcF9zdHJlYW0g KnN0cmVhbSk7IC8vIGluIHRoaXMgY2FzZQ0KPiBzdHJlYW0gd2lsbCBiZSB1c2VhYmxlIGZvciBu ZXcgc3RhdGVmdWwgYmF0Y2gNCj4gMy4zLiBydGVfY29tcF9vcF9zdHJlYW1fZnJlZShydGVfY29t cF9zdHJlYW0gKnN0cmVhbSk7IC8vIHRvIGZyZWUNCj4gY29udGV4dA0KPiANCj4gNC4gQWRkIG5l dyBBUEkgcnRlX2NvbXBkZXZfZW5xdWV1ZV9zdHJlYW0oKQ0KPiAuLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uDQo+ICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJ0ZV9jb21wZGV2X2VucXVldWVfc3RyZWFt KHVpbnQ4X3QgZGV2X2lkLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDE2X3QgcXBfaWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBuYl9v cHMsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0 ZV9jb21wX3N0cmVhbSAqc3RyZWFtKTsgLy90byBiZSBwYXNzZWQgd2l0aA0KPiBlYWNoIGNhbGwN Cj4gDQo+IEFwcGxpY2F0aW9uIHNob3VsZCBjYWxsIHRoaXMgQVBJIHRvIHByb2Nlc3MgZGVwZW5k ZW50IHNldCBvZiBkYXRhIE9SIHdoZW4NCj4gb3V0cHV0IGJ1ZmZlciBzaXplIGlzIHVua25vd24u DQo+IA0KPiBydGVfY29tcF9vcF9wb29sX2NyZWF0ZSgpIHNob3VsZCBjcmVhdGUgbWVtcG9vbCBs YXJnZSBlbm91Z2ggdG8NCj4gYWNjb21tb2RhdGUgb3BlcmF0aW9uYWwgc3RhdGUgKG1haW50YWlu ZWQgYnkgcnRlX2NvbXBfc3RyZWFtKSBiYXNlZCBvbg0KPiBydGVfY29tcF9vcF90eXBlLiBTaW5j ZSBydGVfY29tcF9zdHJlYW0gd291bGQgYmUgbWFpbnRhaW5lZCBieSBQTUQsDQo+IHRodXMgYWxs b2NhdGluZyBpdCBmcm9tIFBNRCBtYW5hZ2VkIHBvb2wgb2ZmZXJzIHBlcmZvcm1hbmNlIGdhaW5z Lg0KPiANCj4gQVBJIGZsb3c6IHJ0ZV9jb21wX29wX3Bvb2xfY3JlYXRlKCkgLeKGkiBydGVfY29t cF9vcF9idWxrX2FsbG9jKCkgLS0tPg0KPiBydGVfY29tcF9vcF9zdHJlYW1fYWxsb2MoKSDihpIg ZW5xdWVfc3RyZWFtKC4ub3BzLCAuLiwgc3RyZWFtKQ0KPiANCj4gRC4yLjEuMyBIaXN0b3J5IGJ1 ZmZlcg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBXaWxsIGJlIG1haW50YWlu ZWQgYnkgUE1EIHdpdGggaW4gcnRlX2NvbXBfc3RyZWFtDQo+IA0KPiBUaGFua3MNCj4gU2hhbGx5 DQoNCg==