From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80079.outbound.protection.outlook.com [40.107.8.79]) by dpdk.org (Postfix) with ESMTP id 87BEA4C99; Mon, 27 Aug 2018 17:30:36 +0200 (CEST) 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=7J8Lt+lV5daYyehc8i0JEPLIzGG8ENC9o0Si1HSoVt8=; b=NbcZ1Szyg7HscO5QQerGYgf7j9OlP419lDlHdmdwJVEV4g1uOuD6ydNH31TUmf1VfTdm4sxo8sLjg0tRmORFofTFCXLc/Ki3qYOhjDHGdxju7uY7pGbJ+GslbXL/NQdRtWODn+hcG0iqXAWYwL1Sls8CwSTm87IqiCS+hD/8nsM= Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com (52.133.41.11) by AM0PR0502MB3811.eurprd05.prod.outlook.com (52.133.47.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Mon, 27 Aug 2018 15:30:34 +0000 Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::88fa:4498:85a5:9e5a]) by AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::88fa:4498:85a5:9e5a%3]) with mapi id 15.20.1080.015; Mon, 27 Aug 2018 15:30:34 +0000 From: Matan Azrad To: Chas Williams <3chas3@gmail.com> CC: Eric Kinzie , "bluca@debian.org" , "dev@dpdk.org" , Declan Doherty , Chas Williams , "stable@dpdk.org" Thread-Topic: [dpdk-dev] [dpdk-stable] [PATCH v4] net/bonding: per-slave intermediate rx ring Thread-Index: AQHUOj+hWaQ4YaZC0UCW7VMjN5ENnaTM70pggACOagCABChIMIAB93YAgAAULXA= Date: Mon, 27 Aug 2018 15:30:34 +0000 Message-ID: References: <20180816125202.15980-1-bluca@debian.org> <20180816133208.26566-1-bluca@debian.org> <1534933159.5764.107.camel@debian.org> <20180822174316.GA29821@roosta> In-Reply-To: Accept-Language: en-US, he-IL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR0502MB3811; 6:dRxmy4i9z7iC5iDwjznNsjSAJfXd3BMjNgOBJN1aCjn7kIDlmVgp2c03CJVhh+h+xQGr6HGkvBogF85P054zvYicS9q4lXIxI4oNHa5zYFhJEXgdbcsaCReVQvrGcqssbKOlzzOgf8bMnkUMJ9Q1vVjIyhjWub+DCa30OLdT6M5vT4fLW9Ufk1dUxwf48qcPOJOCpifZWn89TcAwRRmjLVkBpoN80R2v0ZDgUJdzAPGc68MC5g2eiYHqDHNflnDGrYsAhH0TQiyjhQiestwDqc3ygxQpxT3qpgIv+bGQJl2gwx6dNqyayAFfBHdIu8HhKb00b+fSdCmd/e5ShXD1S5Lgok1b2Qs5x6VEaIoxDDBmp0lzQmlsHKPS46VQ3KUcpPbXiX3rCevlZc8w0B6lAwtAwR+Vu+H9kwVQJMGJvucmwSyZ/JAwYDD1fejHZrGHJnTnEfZoIywmPulR+V+rOw==; 5:qQmRpAFgYnNaUZD5ALyZkSLACZXOKTno3P7cRnODN/p6s6WHw0klbr/V4C3QRtZThy5xerz/nI/OpBx2sP3+5w+TsPgblUVqcYXfzLNJoj2Te7LvdVvioPqULkRm08b2FmpBvZPo9FIvWS4WeLJ4kcuS5el+3mKY3rAJ/PFMRx4=; 7:T6qTGY37zJ0/EhH7vK0MXpMd5qxZrBrnP4UCbPlsAN9dYOpZy1iko7jsGyDmCsgnncJ9WSo42i/3D49V6QecNUU0BEyvkJ8q+w+V/8+A/h4uXx/pP2a5Ziya9TQZf2VMX1Z0rbWiURl9cfvDToqzMmqZFzSc4YRsxy9gIz1ByJ0zKd37biwMhdgMieXmuSQDLh1BQzCQ2bhxoctkAEjA/7k+axoaJ1uDi/u1vZPs51i/8CC6Zw0DUtUy6YAgcNyv x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 12a3788f-ee10-453b-9601-08d60c320875 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM0PR0502MB3811; x-ms-traffictypediagnostic: AM0PR0502MB3811: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(20558992708506)(278428928389397)(189930954265078)(85827821059158)(45079756050767); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231311)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:AM0PR0502MB3811; BCL:0; PCL:0; RULEID:; SRVR:AM0PR0502MB3811; x-forefront-prvs: 07778E4001 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(396003)(39860400002)(366004)(376002)(346002)(199004)(189003)(66066001)(5660300001)(6116002)(3846002)(53546011)(6916009)(68736007)(305945005)(7736002)(74316002)(33656002)(102836004)(6436002)(476003)(486006)(6306002)(9686003)(55016002)(229853002)(2906002)(6506007)(186003)(26005)(106356001)(11346002)(446003)(53936002)(4326008)(6246003)(86362001)(39060400002)(478600001)(8936002)(25786009)(81156014)(105586002)(8676002)(2900100001)(81166006)(1411001)(256004)(5250100002)(14454004)(7696005)(551984002)(76176011)(99286004)(93886005)(316002)(54906003)(97736004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR0502MB3811; H:AM0PR0502MB4019.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: +IfcK5PXt8OE06IiV/uHTjUEK6BjIzy1zm5ES2mgB8VI+/kOwuVhJMEQ2eGYsHaljlZu5l/ajQ+DcsedPcpR7ZGkh3akblMRfuXE9Sg1UZ5rcWVgTB6zVkYAD82hdpdpyV7PxSh9EOiBkpdnkPUU7yF7O550b9KahG3KqnkJaWyjp+IkRLE6AFXeZYFuUvS6Hz+5QgRMoQGcBLCFmTK+AtewmPQ7caVtNeatL5mCtwvp71GJ5jWLpfeit50Tek7pDER9dZ1cmlNxlZLUXMaaMyODIVbmGwrkoYuLzDznhYdxH4dgrF1k+/dwkAM5vbKeoXRZZCAiCWZTF/R60RkaQXJeeJUJop6eot0Xsf+FeXg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM 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: 12a3788f-ee10-453b-9601-08d60c320875 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2018 15:30:34.7763 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3811 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v4] net/bonding: per-slave intermediate rx ring 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, 27 Aug 2018 15:30:36 -0000 SGkgQ2hhcw0KDQpGcm9tOiBDaGFzIFdpbGxpYW1zIDwzY2hhczNAZ21haWwuY29tPiANCj5PbiBT dW4sIEF1ZyAyNiwgMjAxOCBhdCAzOjQwIEFNIE1hdGFuIEF6cmFkIDxtYWlsdG86bWF0YW5AbWVs bGFub3guY29tPiB3cm90ZToNCj4NCj5Gcm9tOiBDaGFzIFdpbGxpYW1zIDxtYWlsdG86M2NoYXMz QGdtYWlsLmNvbT4gDQo+Pk9uIFRodSwgQXVnIDIzLCAyMDE4IGF0IDM6MjggQU0gTWF0YW4gQXpy YWQgPG1haWx0bzptYWlsdG86bWF0YW5AbWVsbGFub3guY29tPiB3cm90ZToNCj4+SGkNCj4+DQo+ PkZyb206IEVyaWMgS2luemllDQo+Pj4gT24gV2VkIEF1ZyAyMiAxMTo0MjozNyArMDAwMCAyMDE4 LCBNYXRhbiBBenJhZCB3cm90ZToNCj4+PiA+IEhpIEx1Y2ENCj4+PiA+DQo+Pj4gPiBGcm9tOiBM dWNhIEJvY2Nhc3NpDQo+Pj4gPiA+IE9uIFdlZCwgMjAxOC0wOC0yMiBhdCAwNzowOSArMDAwMCwg TWF0YW4gQXpyYWQgd3JvdGU6DQo+Pj4gPiA+ID4gSGkgQ2hhcw0KPj4+ID4gPiA+DQo+Pj4gPiA+ ID4gRnJvbTogQ2hhcyBXaWxsaWFtcw0KPj4+ID4gPiA+ID4gT24gVHVlLCBBdWcgMjEsIDIwMTgg YXQgMTE6NDMgQU0gTWF0YW4gQXpyYWQNCj4+PiA+ID4gPiA+IDxtYWlsdG86bWFpbHRvOm1haWx0 bzptYXRhbkBtZWxsYW5veCAuY29tPiB3cm90ZToNCj4+PiA+ID4gPiA+IEhpIENoYXMNCj4+PiA+ ID4gPiA+DQo+Pj4gPiA+ID4gPiBGcm9tOiBDaGFzIFdpbGxpYW1zDQo+Pj4gPiA+ID4gPiA+IE9u IFR1ZSwgQXVnIDIxLCAyMDE4IGF0IDY6NTYgQU0gTWF0YW4gQXpyYWQNCj4+PiA+ID4gPiA+ID4g PG1haWx0bzptYWlsdG86bWFpbHRvOm1hdGFuQG1lbGxhbm8gaHR0cHM6Ly9lbWVhMDEuc2FmZWxp bmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJGeC5jb20mZGF0YT0w MiU3QzAxJTdDbWF0YW4lNDBtZWxsYW5veC5jb20lN0M3ZWUwMTFiZjE5MjI0Y2IxN2Q5YTA4ZDYw YzIwMjM3OSU3Q2E2NTI5NzFjN2QyZTRkOWJhNmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2MzY3 MDk3Mjk1MDc1MjU2MTMmc2RhdGE9VGlXYVJxOEElMkZ2VWFxUElUNmFqZkpkY1k3ZUlBR1BxQiUy QmlIcHBjRmRaSm8lM0QmcmVzZXJ2ZWQ9MD4NCj4+PiA+ID4gPiA+ID4gd3JvdGU6DQo+Pj4gPiA+ ID4gPiA+IEhpDQo+Pj4gPiA+ID4gPiA+DQo+Pj4gPiA+ID4gPiA+IEZyb206IENoYXMgV2lsbGlh bXMNCj4+PiA+ID4gPiA+ID4gPiBUaGlzIHdpbGwgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBmb3Ig c29tZSBvZiB0aGUgb3RoZXIgUlgNCj4+PiA+ID4gPiA+ID4gPiBidXJzdCBtZXRob2RzIGF0IHNv bWUgcG9pbnQgZm9yIG90aGVyIG1vZGVzIHRvIHNlZSB0aGlzDQo+Pj4gPiA+ID4gPiA+ID4gcGVy Zm9ybWFuY2UgaW1wcm92ZW1lbnQgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBhY3RpdmUtYmFja3Vw KS4NCj4+PiA+ID4gPiA+ID4NCj4+PiA+ID4gPiA+ID4gWWVzLCBJIHRoaW5rIGl0IHNob3VsZCBi ZSBkb25lIGF0IGxlYXN0IHRvDQo+Pj4gPiA+ID4gPiA+IGJvbmRfZXRoZGV2X3J4X2J1cnN0Xzgw MjNhZF9mYXN0X3F1ZXVlIChzaG91bGQgYmUgZWFzeSkgZm9yDQo+Pj4gbm93Lg0KPj4+ID4gPiA+ ID4gPg0KPj4+ID4gPiA+ID4gPiBUaGVyZSBpcyBzb21lIGR1cGxpY2F0ZWQgY29kZSBiZXR3ZWVu IHRoZSB2YXJpb3VzIFJYIHBhdGhzLg0KPj4+ID4gPiA+ID4gPiBJIHdvdWxkIGxpa2UgdG8gZWxp bWluYXRlIHRoYXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgc28gSSB3YXMNCj4+PiA+ID4gPiA+ID4g Z29pbmcgdG8gZ2l2ZSB0aGF0IHNvbWUgdGhvdWdodCBmaXJzdC4NCj4+PiA+ID4gPiA+DQo+Pj4g PiA+ID4gPiBUaGVyZSBpcyBubyByZWFzb24gdG8gc3RheSB0aGlzIGZ1bmN0aW9uIGFzIGlzIHdo aWxlIGl0cyB0d2luIGlzDQo+Pj4gPiA+ID4gPiBjaGFuZ2VkLg0KPj4+ID4gPiA+ID4NCj4+PiA+ ID4gPiA+IFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgYWxsIHRoZSBwYXRjaCBJIGhhdmUgYXQgdGhp cyB0aW1lLg0KPj4+ID4gPiA+ID4NCj4+PiA+ID4gPiA+DQo+Pj4gPiA+ID4gPiA+DQo+Pj4gPiA+ ID4gPiA+DQo+Pj4gPiA+ID4gPiA+ID4gT24gVGh1LCBBdWcgMTYsIDIwMTggYXQgOTozMiBBTSBM dWNhIEJvY2Nhc3NpDQo+Pj4gPiA+ID4gPiA+ID4gPG1haWx0bzptYWlsdG86bWFpbHRvOmJsdWNh QGRlYiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHAlM0ElMkYlMkZpYW4ub3JnJmRhdGE9MDIlN0MwMSU3Q21hdGFuJTQwbWVsbGFub3guY29t JTdDN2VlMDExYmYxOTIyNGNiMTdkOWEwOGQ2MGMyMDIzNzklN0NhNjUyOTcxYzdkMmU0ZDliYTZh NGQxNDkyNTZmNDYxYiU3QzAlN0MwJTdDNjM2NzA5NzI5NTA3NTI1NjEzJnNkYXRhPTBBTG1nTiUy QjZYbnJsM2tLZWVvSlJHVGxKbWVMWmxtY0p3c09UY25jTVVXRSUzRCZyZXNlcnZlZD0wPiB3cm90 ZToNCj4+PiA+ID4gPiA+ID4gPg0KPj4+ID4gPiA+ID4gPiA+ID4gRHVyaW5nIGJvbmQgODAyLjNh ZCByZWNlaXZlLCBhIGJ1cnN0IG9mIHBhY2tldHMgaXMgZmV0Y2hlZA0KPj4+ID4gPiA+ID4gPiA+ ID4gZnJvbSBlYWNoIHNsYXZlIGludG8gYSBsb2NhbCBhcnJheSBhbmQgYXBwZW5kZWQgdG8NCj4+ PiA+ID4gPiA+ID4gPiA+IHBlci1zbGF2ZSByaW5nIGJ1ZmZlci4NCj4+PiA+ID4gPiA+ID4gPiA+ IFBhY2tldHMgYXJlIHRha2VuIGZyb20gdGhlIGhlYWQgb2YgdGhlIHJpbmcgYnVmZmVyIGFuZA0K Pj4+ID4gPiA+ID4gPiA+ID4gcmV0dXJuZWQgdG8gdGhlIGNhbGxlci7CoCBUaGUgbnVtYmVyIG9m IG1idWZzIHByb3ZpZGVkIHRvDQo+Pj4gPiA+ID4gPiA+ID4gPiBlYWNoIHNsYXZlIGlzIHN1ZmZp Y2llbnQgdG8gbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZQ0KPj4+ID4gPiA+ID4gPiA+ID4g aXhnYmUgdmVjdG9yIHJlY2VpdmUuDQo+Pj4gPiA+ID4gPiA+DQo+Pj4gPiA+ID4gPiA+IEx1Y2Es DQo+Pj4gPiA+ID4gPiA+DQo+Pj4gPiA+ID4gPiA+IENhbiB5b3UgZXhwbGFpbiB0aGVzZSByZXF1 aXJlbWVudHMgb2YgaXhnYmU/DQo+Pj4gPiA+ID4gPiA+DQo+Pj4gPiA+ID4gPiA+IFRoZSBpeGdi ZSAoYW5kIHNvbWUgb3RoZXIgSW50ZWwgUE1EcykgaGF2ZSB2ZWN0b3JpemVkIFJYDQo+Pj4gPiA+ ID4gPiA+IHJvdXRpbmVzIHRoYXQgYXJlIG1vcmUgZWZmaWNpZW50IChpZiBub3QgZmFzdGVyKSB0 YWtpbmcNCj4+PiA+ID4gPiA+ID4gYWR2YW50YWdlIG9mIHNvbWUgYWR2YW5jZWQgQ1BVIGluc3Ry dWN0aW9ucy7CoCBJIHRoaW5rIHlvdSBuZWVkDQo+Pj4gPiA+ID4gPiA+IHRvIGJlIHJlY2Vpdmlu ZyBhdCBsZWFzdCAzMiBwYWNrZXRzIG9yIG1vcmUuDQo+Pj4gPiA+ID4gPg0KPj4+ID4gPiA+ID4g U28sIHdoeSB0byBkbyBpdCBpbiBib25kIHdoaWNoIGlzIGEgZ2VuZXJpYyBkcml2ZXIgZm9yIGFs bCB0aGUNCj4+PiA+ID4gPiA+IHZlbmRvcnMgUE1EcywgSWYgZm9yIGl4Z2JlIGFuZCBvdGhlciBJ bnRlbCBuaWNzIGl0IGlzIGJldHRlciB5b3UNCj4+PiA+ID4gPiA+IGNhbiBmb3JjZSB0aG9zZSBQ TURzIHRvIHJlY2VpdmUgYWx3YXlzIDMyIHBhY2tldHMgYW5kIHRvIG1hbmFnZQ0KPj4+ID4gPiA+ ID4gYSByaW5nIGJ5IHRoZW1zZWx2ZXMuDQo+Pj4gPiA+ID4gPg0KPj4+ID4gPiA+ID4gVGhlIGRy YXdiYWNrIG9mIHRoZSByaW5nIGlzIHNvbWUgYWRkaXRpb25hbCBsYXRlbmN5IG9uIHRoZQ0KPj4+ ID4gPiA+ID4gcmVjZWl2ZSBwYXRoLg0KPj4+ID4gPiA+ID4gSW4gdGVzdGluZywgdGhlIGFkZGl0 aW9uYWwgbGF0ZW5jeSBoYXNuJ3QgYmVlbiBhbiBpc3N1ZSBmb3IgYm9uZGluZy4NCj4+PiA+ID4g Pg0KPj4+ID4gPiA+IFdoZW4gYm9uZGluZyBkb2VzIHByb2Nlc3Npbmcgc2xvd2VyIGl0IG1heSBi ZSBhIGJvdHRsZW5lY2sgZm9yIHRoZQ0KPj4+ID4gPiA+IHBhY2tldCBwcm9jZXNzaW5nIGZvciBz b21lIGFwcGxpY2F0aW9uLg0KPj4+ID4gPiA+DQo+Pj4gPiA+ID4gPiBUaGUgYm9uZGluZyBQTUQg aGFzIGEgZmFpciBiaXQgb2Ygb3ZlcmhlYWQgYXNzb2NpYXRlZCB3aXRoIHRoZQ0KPj4+ID4gPiA+ ID4gUlggYW5kIFRYIHBhdGggY2FsY3VsYXRpb25zLsKgIE1vc3QgYXBwbGljYXRpb25zIGNhbiBq dXN0IGFycmFuZ2UNCj4+PiA+ID4gPiA+IHRvIGNhbGwgdGhlIFJYIHBhdGggd2l0aCBhIHN1ZmZp Y2llbnRseSBsYXJnZSByZWNlaXZlLsKgIEJvbmRpbmcNCj4+PiA+ID4gPiA+IGNhbid0IGRvIHRo aXMuDQo+Pj4gPiA+ID4NCj4+PiA+ID4gPiBJIGRpZG4ndCB0YWxrIG9uIGFwcGxpY2F0aW9uIEkg dGFsa2VkIG9uIHRoZSBzbGF2ZSBQTURzLCBUaGUgc2xhdmUNCj4+PiA+ID4gPiBQTUQgY2FuIG1h bmFnZSBhIHJpbmcgYnkgaXRzZWxmIGlmIGl0IGhlbHBzIGZvciBpdHMgb3duIHBlcmZvcm1hbmNl Lg0KPj4+ID4gPiA+IFRoZSBib25kaW5nIHNob3VsZCBub3QgYmUgb3JpZW50ZWQgdG8gc3BlY2lm aWMgUE1Ecy4NCj4+PiA+ID4NCj4+PiA+ID4gVGhlIGlzc3VlIHRob3VnaCBpcyB0aGF0IHRoZSBw ZXJmb3JtYW5jZSBwcm9ibGVtIGlzIG5vdCB3aXRoIHRoZQ0KPj4+ID4gPiBpbmRpdmlkdWFsIFBN RHMgLSBpdCdzIHdpdGggYm9uZGluZy4gVGhlcmUgd2VyZSBubyByZXBvcnRzIHJlZ2FyZGluZw0K Pj4+ID4gPiB0aGUgaW5kaXZpZHVhbCBQTURzLg0KPj4+ID4gPiBUaGlzIGNvbWVzIGZyb20gcmVw b3J0cyBmcm9tIGN1c3RvbWVycyBmcm9tIHJlYWwgd29ybGQgcHJvZHVjdGlvbg0KPj4+ID4gPiBk ZXBsb3ltZW50cyAtIHRoZSBpc3N1ZSBvZiBib25kaW5nIGJlaW5nIHRvbyBzbG93IHdhcyByYWlz ZWQgbXVsdGlwbGUNCj4+PiB0aW1lcy4NCj4+PiA+ID4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhv c2UgaXNzdWVzLCBhZ2FpbiBpbiBwcm9kdWN0aW9uIGRlcGxveW1lbnRzLA0KPj4+ID4gPiB3aGVy ZSBpdCdzIGJlZW4gdXNlZCBmb3IgeWVhcnMsIHRvIHVzZXJzIGFuZCBjdXN0b21lcnMgc2F0aXNm YWN0aW9uLg0KPj4+ID4NCj4+PiA+IEZyb20gQ2hhcyBJIHVuZGVyc3Rvb2QgdGhhdCB1c2luZyBi dXJzdCBvZiAzMiBoZWxwcyBmb3Igc29tZSBzbGF2ZSBQTURzDQo+Pj4gcGVyZm9ybWFuY2Ugd2hp Y2ggbWFrZXMgc2Vuc2UuDQo+Pj4gPiBJIGNhbid0IHVuZGVyc3RhbmQgaG93IHRoZSBleHRyYSBj b3B5IHBoYXNlcyBpbXByb3ZlcyB0aGUgYm9uZGluZyBpdHNlbGYNCj4+PiBwZXJmb3JtYW5jZToN Cj4+PiA+DQo+Pj4gPiBZb3UgYWRkZWQgMiBjb3B5IHBoYXNlcyBpbiB0aGUgYm9uZGluZyBSWCBm dW5jdGlvbjoNCj4+PiA+IDEuIEdldCBwYWNrZXRzIGZyb20gdGhlIHNsYXZlIHRvIGEgbG9jYWwg YXJyYXkuDQo+Pj4gPiAyLiBDb3B5IHBhY2tldCBwb2ludGVycyBmcm9tIGEgbG9jYWwgYXJyYXkg dG8gdGhlIHJpbmcgYXJyYXkuDQo+Pj4gPiAzLiBDb3B5IHBhY2tldCBwb2ludGVycyBmcm9tIHRo ZSByaW5nIGFycmF5IHRvIHRoZSBhcHBsaWNhdGlvbiBhcnJheS4NCj4+PiA+DQo+Pj4gPiBFYWNo IHBhY2tldCBhcnJpdmluZyB0byB0aGUgYXBwbGljYXRpb24gbXVzdCBwYXNzIHRoZSBhYm92ZSAz IHBoYXNlcyhpbiBhDQo+Pj4gc3BlY2lmaWMgY2FsbCBvciBpbiBwcmV2aW91cyBjYWxscykuDQo+ Pj4gPg0KPj4+ID4gV2l0aG91dCB0aGlzIHBhdGNoIHdlIGhhdmUgb25seSAtDQo+Pj4gPiBHZXQg cGFja2V0cyBmcm9tIHRoZSBzbGF2ZSB0byB0aGUgYXBwbGljYXRpb24gYXJyYXkuDQo+Pj4gPg0K Pj4+ID4gQ2FuIHlvdSBleHBsYWluIGhvdyB0aGUgZXh0cmEgY29waWVzIGltcHJvdmVzIHRoZSBi b25kaW5nIHBlcmZvcm1hbmNlPw0KPj4+ID4NCj4+PiA+IExvb2tzIGxpa2UgaXQgaW1wcm92ZXMg dGhlIHNsYXZlcyBQTURzIGFuZCBiZWNhdXNlIG9mIHRoYXQgdGhlIGJvbmRpbmcNCj4+PiBQTUQg cGVyZm9ybWFuY2UgYmVjb21lcyBiZXR0ZXIuDQo+Pj4gDQo+Pj4gSSdtIG5vdCBzdXJlIHRoYXQg YWRkaW5nIG1vcmUgYnVmZmVyIG1hbmFnZW1lbnQgdG8gdGhlIHZlY3RvciBQTURzIHdpbGwNCj4+ PiBpbXByb3ZlIHRoZSBkcml2ZXJzJyBwZXJmb3JtYW5jZTsgaXQncyBqdXN0IHRoYXQgY2FsbGlu ZyB0aGUgcnggZnVuY3Rpb24gaW4gc3VjaA0KPj4+IGEgd2F5IHRoYXQgaXQgcmV0dXJucyBubyBk YXRhIHdhc3RlcyB0aW1lLg0KPj4NCj4+U29ycnksIEkgZG9uJ3QgZnVsbHkgdW5kZXJzdGFuZCB3 aGF0IHlvdSBzYWlkIGhlcmUsIHBsZWFzZSByZXBocmFzZS4NCj4+DQo+Pj7CoCBUaGUgYm9uZGlu ZyBkcml2ZXIgaXMgYWxyZWFkeSBhbiBleGVyY2lzZSBpbiBidWZmZXIgbWFuYWdlbWVudCBzbyBh ZGRpbmcgdGhpcyBsYXllciBvZiBpbmRpcmVjdGlvbiBoZXJlIG1ha2VzDQo+Pj4gc2Vuc2UgaW4g bXkgb3BpbmlvbiwgYXMgZG9lcyBoaWRpbmcgdGhlIGRldGFpbHMgb2YgdGhlIGNvbnNpdHVlbnQg aW50ZXJmYWNlcyB3aGVyZSBwb3NzaWJsZS4NCj4+DQo+PkNhbiB5b3UgZXhwbGFpbiBob3cgdGhp cyBuZXcgYnVmZmVyIG1hbmFnZW1lbnQgd2l0aCB0aGUgZXh0cmEgcG9pbnRlciBjb3BpZXMgaW1w cm92ZXMgdGhlIGJvbmRpbmcgaXRzZWxmIHBlcmZvcm1hbmNlPw0KPj5Mb29rcyByZWFsbHkgc3Ry YW5nZSB0byBtZS4NCj4+DQo+PkJlY2F1c2UgcmluZ3MgYXJlIGdlbmVyYWxseSBxdWl0ZSBlZmZp Y2llbnQuDQo+DQo+QnV0IHlvdSBhcmUgdXNpbmcgYSByaW5nIGluIGFkZGl0aW9uIHRvIHJlZ3Vs YXIgYXJyYXkgbWFuYWdlbWVudCwgaXQgbXVzdCBodXJ0IHBlcmZvcm1hbmNlIG9mIHRoZSBib25k aW5nIFBNRA0KPihtZWFucyB0aGUgYm9uZGluZyBpdHNlbGYgLSBub3QgdGhlIHNsYXZlcyBQTURz IHdoaWNoIGFyZSBjYWxsZWQgZnJvbSB0aGUgYm9uZGluZykNCj4NCj4+DQo+PkJvbmRpbmcgaXMg aW4gYSBtaWRkbGUgZ3JvdW5kIGJldHdlZW4gYXBwbGljYXRpb24gYW5kIFBNRC4NCj5ZZXMuDQo+ PldoYXQgYm9uZGluZyBpcyBkb2luZywgbWF5IG5vdCBpbXByb3ZlIGFsbCBhcHBsaWNhdGlvbnMu DQo+WWVzLCBidXQgaXQgY2FuIGJlIHNvbHZlZCB1c2luZyBzb21lIGJvbmRpbmcgbW9kZXMuDQo+ PiBJZiB1c2luZyBhIHJpbmcgdG8gYnVmZmVyIHRoZSB2ZWN0b3JpemVkIHJlY2VpdmUgcm91dGlu ZXMsIGltcHJvdmVzIHlvdXIgcGFydGljdWxhciBhcHBsaWNhdGlvbiwNCj4+dGhhdCdzIGdyZWF0 LsKgDQo+SXQgbWF5IGJlIG5vdCBncmVhdCBhbmQgZXZlbiBiYWQgZm9yIHNvbWUgb3RoZXIgUE1E cyB3aGljaCBhcmUgbm90IHZlY3Rvcm9yaXplZC4NCj4NCj4+IEhvd2V2ZXIsIEkgZG9uJ3QgdGhp bmsgSSBjYW4gc2F5IHRoYXQgaXQgd291bGQgaGVscCBhbGwNCj4+YXBwbGljYXRpb25zLsKgIEFz IHlvdSBwb2ludCBvdXQsIHRoZXJlIGlzIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aA0KPj5hIHJp bmcuDQo+WWVzLg0KPj5Cb25kaW5nJ3MgcmVjZWl2ZSBidXJzdCBpc24ndCBlc3BlY2lhbGx5IGVm ZmljaWVudCAoaW4gbW9kZSA0KS4NCj4NCj5XaHk/DQo+DQo+SXQgbWFrZXMgYSBjb3B5IG9mIHRo ZSBzbGF2ZXMsIGhhcyBhIGZhaXIgYml0IG9mIHN0YWNrIHVzYWdlLCANCj5uZWVkcyB0byBjaGVj ayB0aGUgc2xhdmUgc3RhdHVzLCBhbmQgbmVlZHMgdG8gZXhhbWluZSBlYWNoDQo+cGFja2V0IHRv IHNlZSBpZiBpdCBpcyBhIHNsb3cgcHJvdG9jb2wgcGFja2V0LsKgIFNvIGVhY2gNCj5wYWNrZXQg aXMgZXNzZW50aWFsbHkgcmVhZCB0d2ljZS7CoCBUaGUgZmFzdCBxdWV1ZSBjb2RlIGZvciBtb2Rl IDQNCj5hdm9pZHMgc29tZSBvZiB0aGlzIChhbmQgcHJvYmFibHkgaWdub3JlcyBjaGVja2luZyBj b2xsZWN0aW5nDQo+aW5jb3JyZWN0bHkpLsKgIElmIHlvdSBmaW5kIGEgc2xvdyBwcm90b2NvbCBw YWNrZXQsIHlvdSBuZWVkIHRvDQo+Y2hvcCBpdCBvdXQgb2YgdGhlIGFycmF5IHdpdGggbWVtbW92 ZSBkdWUgdG8gb3ZlcmxhcC4NCg0KQWdyZWUuDQpTbyB0byBpbXByb3ZlIHRoZSBib25kaW5nIHBl cmZvcm1hbmNlIHlvdSBuZWVkIHRvIG9wdGltaXplIHRoZSBhYm92ZXMgcHJvYmxlbXMuDQpUaGVy ZSBpcyBubyBjb25uZWN0aW9uIHRvIHRoZSByaW5nLg0KwqANCj4+IEJvbmRpbmcgYmVuZWZpdHMg ZnJvbSBiZWluZyBhYmxlIHRvIHJlYWQgYXMgbXVjaCBhcyBwb3NzaWJsZSAod2l0aGluIGxpbWl0 cyBvZg0KPj5jb3Vyc2UsIGxhcmdlIHJlYWRzIHdvdWxkIGJsb3cgb3V0IGNhY2hlcykgZnJvbSBl YWNoIHNsYXZlLg0KPg0KPlRoZSBzbGF2ZXMgUE1EcyBjYW4gYmVuZWZpdHMgaW4gdGhlIHNhbWUg d2F5Lg0KPg0KPj5JdCBjYW4ndCByZXR1cm4gYWxsIHRoYXQgZGF0YSB0aG91Z2ggYmVjYXVzZSBh cHBsaWNhdGlvbnMgdGVuZCB0byB1c2UgdGhlwqANCj4+YnVyc3Qgc2l6ZSB0aGF0IHdvdWxkIGJl IGVmZmljaWVudCBmb3IgYSB0eXBpY2FsIFBNRC4NCj4NCj5XaGF0IGlzIHRoZSBwcmVmZXJyZWQg YnVyc3Qgc2l6ZSBvZiB0aGUgYm9uZGluZz8gTWF5YmUgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCB1 c2UgaXQgd2hlbiB0aGV5IGFyZSB1c2luZyBib25kaW5nLg0KPg0KPlRoZSBwcmVmZXJyZWQgYnVy c3Qgc2l6ZSBmb3IgYm9uZGluZyB3b3VsZCBiZSB0aGUgc3VtIG9mIGFsbCB0aGUNCj5zbGF2ZXMg aWRlYWwgcmVhZCBzaXplLsKgIEhvd2V2ZXIsIHRoYXQncyBub3QgbGlrZWx5IHRvIGJlIHNpbXBs ZQ0KPnNpbmNlIG1vc3QgYXBwbGljYXRpb25zIGRlY2lkZSBlYXJseSB0aGUgc2l6ZSBmb3IgdGhl IHJlYWQvd3JpdGUNCj5idXJzdCBvcGVyYXRpb25zLg0KPsKgDQo+PkFuIGFsdGVybmF0aXZlIG1p Z2h0IGJlIHRvIGFzayBib25kaW5nIGFwcGxpY2F0aW9ucyB0byBzaW1wbHkgaXNzdWUgbGFyZ2Vy IHJlYWRzIGZvcg0KPj5jZXJ0YWluIG1vZGVzLsKgIFRoYXQncyBwcm9iYWJseSBub3QgYXMgZWFz eSBhcyBpdCBzb3VuZHMgZ2l2ZW4gdGhlDQo+PndheSB0aGF0IHRoZSBidXJzdCBsZW5ndGggZWZm ZWN0cyBtdWx0aXBsZXhpbmcuDQo+DQo+Q2FuIHlvdSBleHBsYWluIGl0IG1vcmU/DQo+DQo+QSBs b25nZXIgYnVyc3Qgc2l6ZSBvbiBvbmUgUE1EIHdpbGwgdGVuZCB0byBmYXZvciB0aGF0IFBNRA0K Pm92ZXIgb3RoZXJzLsKgIEl0IHdpbGwgZmlsbCB5b3VyIGludGVybmFsIHF1ZXVlcyB3aXRoIG1v cmXCoA0KPm9mIGl0cyBwYWNrZXRzLg0KDQpBZ3JlZSwgaXQncyBhYm91dCBmYWlybmVzcy4NCsKg DQo+DQo+PkFub3RoZXIgc29sdXRpb24gbWlnaHQgYmUganVzdCBhbHRlcm5hdGl2ZWx5IHBvbGwg dGhlIGluZGl2aWR1YWwNCj4+c2xhdmVzIG9uIGVhY2ggcnggYnVyc3QuwqAgQnV0IHRoYXQgbWVh bnMgeW91IG5lZWQgdG8gcG9sbCBhdCBhDQo+PmZhc3RlciByYXRlLsKgIERlcGVuZGluZyBvbiB5 b3VyIGFwcGxpY2F0aW9uLCB5b3UgbWlnaHQgbm90IGJlDQo+PmFibGUgdG8gZG8gdGhhdC4NCg0K PkFnYWluLCBjYW4geW91IGJlIG1vcmUgcHJlY2lzZSBpbiB0aGUgYWJvdmUgZXhwbGFuYXRpb24/ DQo+DQo+SWYgdGhlIGFwcGxpY2F0aW9uIGtub3dzIHRoYXQgdGhlcmUgYXJlIHR3byBzbGF2ZXMg YmFja2luZw0KPmEgYm9uZGluZyBpbnRlcmZhY2UsIHRoZSBhcHBsaWNhdGlvbiBjb3VsZCBqdXN0 IHJlYWQgdHdpY2UNCj5mcm9tIHRoZSBib25kaW5nIGludGVyZmFjZSwga25vd2luZyB0aGF0IHRo ZSBib25kaW5nwqANCj5pbnRlcmZhY2UgaXMgZ29pbmcgdG8gYWx0ZXJuYXRlIGJldHdlZW4gdGhl IHNsYXZlcy7CoCBCdXQNCj50aGlzIHJlcXVpcmVzIHRoZSBhcHBsaWNhdGlvbiB0byBrbm93IHRo aW5ncyBhYm91dCB0aGUgYm9uZGluZw0KPlBNRCwgbGlrZSB0aGUgbnVtYmVyIG9mIHNsYXZlcy4N Cg0KV2h5IHNob3VsZCB0aGUgYXBwbGljYXRpb24gcG9sbCB0d2ljZT8NClBvbGwgc2xhdmUgMCwg dGhhbiBwcm9jZXNzIGl0J3MgcGFja2V0cywgcG9sbCBzbGF2ZSAxIHRoYW4gcHJvY2VzcyBpdHMg cGFja2V0cy4uLg0KV2hhdCBpcyB0aGUgcHJvYmxlbT8NCg0KPj7CoCBXZSBjYW4gYXZvaWQgdGhp cyBzY2hlZHVsaW5nIG92ZXJoZWFkIGJ5IGp1c3QNCj4+ZG9pbmcgdGhlIGV4dHJhIHJlYWRzIGlu IGJvbmRpbmcgYW5kIGJ1ZmZlcmluZyBpbiBhIHJpbmcuDQo+Pg0KPj5TaW5jZSBib25kaW5nIGlz IGdvaW5nIHRvIGJlIGJ1ZmZlcmluZyBldmVyeXRoaW5nIGluIGEgcmluZywNCj4NCj4/IEkgZG9u J3QgZmFtaWxpYXIgd2l0aCBpdC4gRm9yIG5vdyBJIGRvbid0IHRoaW5rIHdlIG5lZWQgYSByaW5n Lg0KPg0KPldlIGhhdmUgc29tZSBlbXBpcmljYWwgdGVzdGluZyB0aGF0IHNob3dzIHBlcmZvcm1h bmNlIGltcHJvdmVtZW50cy4NCj5Ib3cgZG8geW91IGV4cGxhaW4gdGhpcz/CoCANCg0KWW91IGFy ZSB1c2luZyBhIGhhY2sgaW4gYm9uZGluZyB3aGljaCBodXJ0IHRoZSBib25kaW5nIGJ1dCBpbXBy b3ZlcyB0aGUgdmVjdG9yaXplZCBQTUQgeW91IHVzZS4NCg0KPlJpbmdzIGFyZW4ndCBpbmVmZmlj aWVudC4NCg0KT25seSB3aGVuIHRoZXJlIGlzIGEgbmVlZCB0byB1c2UgaXQuDQoNCj5UaGVyZSdz IHNpZ25pZmljYW50IG92ZXJoZWFkIG9mIGNhbGxpbmcgdGhlIHJ4IGJ1cnN0IHJvdXRpbmUgb24g YW55IFBNRC4NCj5Zb3UgbmVlZCB0byBnZXQgdGhlIFBNRCBkYXRhIHN0cnVjdHVyZXMgaW50byBs b2NhbCBtZW1vcnkuDQoNClllcy4NCg0KPlJlYWRpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZSBtYWtl cyBzZW5zZS4NCg0KQWdyZWUuDQoNCj4gQ291bGQgeW91IGdlbmVyYWxseSBkbyB0aGlzIGZvciBh bGwgUE1Ecz/CoCBZZXMsIGJ1dCB0aGUgcmluZyBhZGRzIGxhdGVuY3kuwqAgTGF0ZW5jeQ0KPnRo YXQgaXNuJ3QgYW4gaXNzdWUgZm9yIHRoZSBib25kaW5nIFBNRCBiZWNhdXNlIG9mIGFsbCB0aGUN Cj5vdGhlciBpbmVmZmljaWVuY2llcyAoZm9yIG1vZGUgNCkuDQoNCkVubGFyZ2luZyB0aGUgYm9u ZGluZyBsYXRlbmN5IGJ5IHRoYXQgd2F5IG1ha2VzIHNvbWUgdmVjdG9yaXplZCBzbGF2ZSBQTURz IGhhcHB5IGFuZCBtYWtlcyB0aGUgYm9uZGluZyB3b3JzdCANCmZvciBvdGhlciBzbGF2ZXMgUE1E cyAtIHRoaXMgaXMgbm90IGEgZ29vZCBpZGVhIHRvIHB1dCBpdCB1cHN0cmVhbS4NCg0KSW1wcm92 aW5nIHRoZSBvdGhlciBwcm9ibGVtcyBpbiB0aGUgYm9uZGluZyhyZWR1Y2UgdGhlIGJvbmRpbmcg bGF0ZW5jeSkgd2lsbCBkbyB0aGUgam9iIGZvciB5b3UgYW5kIGZvciBvdGhlcnMuDQoNCj7CoD5p dCBtYWtlcyBzZW5zZSB0byBqdXN0IHJlYWQgYXMgbXVjaCBhcyBpcyBhcyBlZmZpY2llbnRseSBw b3NzaWJsZS7CoCBGb3IgdGhlDQo+PkludGVsIGFkYXB0ZXJzLCB0aGlzIG1lYW5zIHVzaW5nIGEg cmVhZCBiaWcgZW5vdWdoIHRyaWdnZXIgdGhlIHZlY3Rvcml6ZWQNCj4+dmVyc2lvbnMuDQo+Pj4g PiA+IFNvIEknZCBsaWtlIHRvIHNoYXJlIHRoaXMgaW1wcm92ZW1lbnQgcmF0aGVyIHRoYW4ga2Vl cGluZyBpdCBwcml2YXRlDQo+Pj4gPiA+IC0gYmVjYXVzZSBJJ20gbmljZSB0aGF0IHdheSA6LVAN Cj4+PiA+ID4NCj4+PiA+ID4gPiA+ID4gRGlkIHlvdSBjaGVjayBmb3Igb3RoZXIgdmVuZG9yIFBN RHM/IEl0IG1heSBodXJ0IHBlcmZvcm1hbmNlDQo+Pj4gPiA+ID4gPiA+IHRoZXJlLi4NCj4+PiA+ ID4gPiA+ID4NCj4+PiA+ID4gPiA+ID4gSSBkb24ndCBrbm93LCBidXQgSSBzdXNwZWN0IHByb2Jh Ymx5IG5vdC7CoCBGb3IgdGhlIG1vc3QgcGFydA0KPj4+ID4gPiA+ID4gPiB5b3UgYXJlIHR5cGlj YWxseSByZWFkaW5nIGFsbW9zdCB1cCB0byB0aGUgdmVjdG9yIHJlcXVpcmVtZW50Lg0KPj4+ID4g PiA+ID4gPiBCdXQgaWYgb25lIHNsYXZlIGhhcyBqdXN0IGEgc2luZ2xlIHBhY2tldCwgdGhlbiB5 b3UgY2FuJ3QNCj4+PiA+ID4gPiA+ID4gdmVjdG9yaXplIG9uIHRoZSBuZXh0IHNsYXZlLg0KPj4+ ID4gPiA+ID4gPg0KPj4+ID4gPiA+ID4NCj4+PiA+ID4gPiA+IEkgZG9uJ3QgdGhpbmsgdGhhdCB0 aGUgcmluZyBvdmVyaGVhZCBpcyBiZXR0ZXIgZm9yIFBNRHMgd2hpY2gNCj4+PiA+ID4gPiA+IGFy ZSBub3QgdXNpbmcgdGhlIHZlY3Rvcml6ZWQgaW5zdHJ1Y3Rpb25zLg0KPj4+ID4gPiA+ID4NCj4+ PiA+ID4gPiA+IFRoZSBub24tdmVjdG9yaXplZCBQTURzIGFyZSB1c3VhbGx5IHF1aXRlIHNsb3cu wqAgVGhlIGFkZGl0aW9uYWwNCj4+PiA+ID4gPiA+IG92ZXJoZWFkIGRvZXNuJ3QgbWFrZSBhIGRp ZmZlcmVuY2UgaW4gdGhlaXIgcGVyZm9ybWFuY2UuDQo+Pj4gPiA+ID4NCj4+PiA+ID4gPiBXZSBz aG91bGQgbm90IGRvIHRoaW5ncyB3b3JzZSB0aGFuIHRoZXkgYXJlLg0KPj4+ID4gPg0KPj4+ID4g PiBUaGVyZSB3ZXJlIG5vIHJlcG9ydHMgdGhhdCB0aGlzIG1hZGUgdGhpbmdzIHdvcnNlLiBUaGUg ZmVlZGJhY2sgZnJvbQ0KPj4+ID4gPiBwcm9kdWN0aW9uIHdhcyB0aGF0IGl0IG1hZGUgdGhpbmdz IGJldHRlci4NCj4+PiA+DQo+Pj4gPiBZZXMsIEl0IG1heSBiZSBnb29kIGZvciBzcGVjaWZpYyBz bGF2ZXMgZHJpdmVycyBidXQgaHVydCBhbm90aGVyDQo+Pj4gPiBzbGF2ZXMgZHJpdmVycywgU28g bWF5YmUgaXQgc2hvdWxkIHN0YXkgcHJpdmF0ZSB0byBzcGVjaWZpYyBjb3N0dW1lcnMgdXNpbmcN Cj4+PiBzcGVjaWZpYyBuaWNzLg0KPj4+ID4NCj4+PiA+IEFnYWluLCBJIGNhbiB1bmRlcnN0YW5k IGhvdyB0aGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIHNvbWUNCj4+PiA+IFBNRHMg dGhlcmVmb3JlIEkgdGhpbmsgdGhlIGJvbmRpbmcgaXMgbm90IHRoZSBwbGFjZSB0byBhZGQgaXQg YnV0IG1heWJlDQo+Pj4gc29tZSBQTURzLg0KPj4NCj4NCg==