From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70081.outbound.protection.outlook.com [40.107.7.81]) by dpdk.org (Postfix) with ESMTP id D4DD923D for ; Thu, 11 Oct 2018 10:48:08 +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=UDs+CWJq6uC2xd70XQcKizOim0NGxV2QWjhqRJtpiqc=; b=T05UQD2QSu/2uE9Z3cA7UVspt04dKbE3XEwZybfPzHMXwUPyAZBqgNCodSdlO3ku88FBr5U+ShrIJqONeWcRbFOyTpIgDi3BFabgFDCotey1p7IOH+zox1BtH6ld3qNtyXrn/7/uN/VmjsNtVvNP7SNHEGD38kERbGHONNo+Tuo= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.187.142) by AM4PR05MB1603.eurprd05.prod.outlook.com (10.165.245.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.26; Thu, 11 Oct 2018 08:48:05 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::fdeb:3890:f0f0:2202]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::fdeb:3890:f0f0:2202%4]) with mapi id 15.20.1207.029; Thu, 11 Oct 2018 08:48:05 +0000 From: Ori Kam To: Adrien Mazarguil CC: Andrew Rybchenko , Ferruh Yigit , "stephen@networkplumber.org" , Declan Doherty , "dev@dpdk.org" , Dekel Peled , Thomas Monjalon , =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= , Yongseok Koh , Shahaf Shuler , Ori Kam Thread-Topic: [PATCH v3 0/3] ethdev: add generic L2/L3 tunnel encapsulation actions Thread-Index: AQHUXj17J8xRsVbRkUC9nhuj/0sKpaUXIzyAgADp24CAAB8FgIAAOYqAgAAG5YCAAD5vgIAA6owQ Date: Thu, 11 Oct 2018 08:48:05 +0000 Message-ID: References: <1537995646-95260-1-git-send-email-orika@mellanox.com> <1538917054-68283-1-git-send-email-orika@mellanox.com> <9760f054-bbe9-2036-dd5d-d39edd906496@intel.com> <1165fc19-c68b-f13c-e2a6-eeb3f6937922@solarflare.com> <20181010120207.GM18937@6wind.com> <20181010161015.GN18937@6wind.com> In-Reply-To: <20181010161015.GN18937@6wind.com> 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=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR05MB1603; 6:DFg+C0/HL3NhSIhOsvKZlhszw9pZ8ZmJbTvWW1XDG3SJ8ktmaBaLg+1SeJ6fu7VdREaD/9gNhofp6Mh4UXwmykSOYX/g4wF05v4fSw7phMEnOtL5yCBwb50lDcLOYHVdfjAMP+OxZypsNhEnF8kRFf3L3g6AS5xNQXwLpQpS5MR2jGKPq0AY02Q71cXwS4kv5TrsRvawE8EkLBDOpnKcb4Ih/Cu6P/srDFcc0Drk44jXrG4AXNR+YLv/C/7FGd3PSJ1iia2vsNEwZfYDHiAqXeDW4/YTJV7PfeDbbip1dIR6+InY8HzShe1FNHDFDz7W1jvK2jnMIDwpG4Sf6YF8Eg8EktfyNvO3KZBk8UAX6ymEMFgSOdwEiTL0B5Y7o55PNTsrNhwlqKsphiL/XJ53/gJRdyzzBnDmakK1m4IEoQZvgi7zfO7xAn66XG8WLLOsKQ2+JptPBDOPZjeZuAmdsQ==; 5:9qD58V/43xA84f3SIvpkkWjPvqvTpXMJPHvwbO+MsOpt/C5Rz5EA6avCChXTzonYx+1q/gsmG0RKx9vHKMsH7aFlHn1vimDtmZ7j0OgRGjnzHsJu1SVUwHoxf1DXIObvSWTWE9yf8pHVAjJbYtqrF+1cyw7061sENVGyT+Q6P5M=; 7:E8eM2S4EovGYMQcZDIhjTF9rJeg1UCuVStPPpoklLI3xA3esABUf8cKi+zp7qWXzFKdYC+29RyeKqqyW1Stk0Ubp3U5KYOBwJPy+HU/FPAjwRspOcKnmOhpPIoNQzIEXluR+pIM85xLP1ABKvIgkAld3XpxhpzQ149LBousLo5zcI+m/QaJol1sKQ7ham6fUoDFEjZ6MPAEjqUPuZjup4cTxu5XOSC1llcopJiumbpl1jPRd4akbRC+Xl6d4XFOP x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: e8ffde1b-7ab4-4c9e-6609-08d62f5642f7 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:AM4PR05MB1603; x-ms-traffictypediagnostic: AM4PR05MB1603: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(244540007438412)(45079756050767)(189930954265078)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231355)(944501410)(4982022)(52105095)(93006095)(93001095)(3002001)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991055); SRVR:AM4PR05MB1603; BCL:0; PCL:0; RULEID:; SRVR:AM4PR05MB1603; x-forefront-prvs: 08220FA8D6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(346002)(39860400002)(396003)(366004)(13464003)(199004)(189003)(54906003)(186003)(561944003)(9686003)(6306002)(55016002)(6436002)(53936002)(33656002)(66066001)(53946003)(14454004)(2900100001)(45080400002)(8936002)(74316002)(97736004)(966005)(81166006)(478600001)(106356001)(105586002)(53546011)(7736002)(81156014)(26005)(107886003)(6506007)(5250100002)(8676002)(102836004)(54075001)(305945005)(76176011)(316002)(71190400001)(71200400001)(7696005)(66574009)(4744004)(11346002)(446003)(5660300001)(86362001)(575784001)(93886005)(229853002)(68736007)(256004)(4326008)(99286004)(6116002)(3846002)(476003)(486006)(14444005)(2906002)(6246003)(25786009)(6916009)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB1603; H:AM4PR05MB3425.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: SBHs07CH2zLiTizyl0R4Z62hqnigIBgFIwwIpcqeY/7vL7paRpMU+mr37bHwyJxa8Mvw8z/Oye/a2bWEMF3hRp9fmQsSGjekMQzb1Svjh11sIySlNeF2TZ3LZdXFnuTWIYbHbGzlaFnaZWR2jVjSXKOwNkUvC+E5TrvYwWxKojzVRctMQmGVg3BXEnpbI9SaIPqwXdhijsn7EX5k2MfxqYm4WnJGd//9T98Lzi/EXRUqWrPbA61Cb+TTKSqyJ30/0N6Xucgk1rAsvhz0RHtYqPKMFef9SePgn8uwE/nI3hs/ZfTQ08q+cmNarigf6a5AFhW1HzDoCvUsCAi/zoTbt6lQJG2lsSidi5wbTMIxuAY= 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: e8ffde1b-7ab4-4c9e-6609-08d62f5642f7 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2018 08:48:05.5925 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB1603 Subject: Re: [dpdk-dev] [PATCH v3 0/3] ethdev: add generic L2/L3 tunnel encapsulation actions 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: Thu, 11 Oct 2018 08:48:09 -0000 SGkgQWRyaWFuLA0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMgcGxlYXNlIHNlZSBteSBhbnN3 ZXIgYmVsb3cgYW5kIGlubGluZS4NCg0KRHVlIHRvIGEgdmVyeSBzaG9ydCB0aW1lIGxpbWl0IGFu ZCB0aGUgZmFjdCB0aGF0IHdlIGhhdmUgbW9yZSB0aGFuDQo0IHBhdGNoZXMgdGhhdCBhcmUgYmFz ZWQgb24gdGhpcyB3ZSBuZWVkIHRvIGNsb3NlIGl0IGZhc3QuDQoNCkFzIEkgY2FuIHNlZSB0aGVy ZSBhcmUgbnVtYmVyIG9mIG9wdGlvbnM6DQoqIHRoZSBvbGQgYXBwcm9hY2ggdGhhdCBuZWl0aGVy IG9mIHVzIGxpa2UuIEFuZCB3aGljaCBtZWFuIHRoYXQgZm9yIA0KICAgZXZlcnkgdHVubmVsIHdl IGNyZWF0ZSBhIG5ldyBjb21tYW5kLg0KKiBNeSBwcm9wb3NlZCBzdWdnZXN0aW9uIGFzIGlzLiBX aGljaCBpcyBlYXNpZXIgZm9yIGF0IGxlYXN0IG51bWJlciBvZiBhcHBsaWNhdGlvbg0KICAgdG8g aW1wbGVtZW50IGFuZCBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4NCiogTXkgc3VnZ2VzdGlvbiB3aXRo IGRpZmZlcmVudCBuYW1lLCBidXQgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgYWxzbyBhIG5hbWUNCiAg IGZvciB0aGUgZGVjYXAgYW5kIGFsc28gYSBuYW1lIGZvciBkZWNhcF9sMy4gVGhpcyBhcHByb2Fj aCBpcyBhbHNvIHByb2JsZW1hdGljDQogICBzaW5jZSB3ZSBoYXZlIDIgQVBJIHRoYXQgYXJlIGRv aW5nIHRoZSBzYW1lIHRoaWcuIEZvciBleGFtcGxlIGluIHRlc3QtcG1kIGVuY2FwDQogICB2eGxh biBpbiB3aGljaCBBUEkgc2hlbGwgd2UgdXNlPw0KKiBDb21iaW5lIGJldHdlZW4gbXkgc3VnZ2Vz dGlvbiBhbmQgdGhlIGN1cnJlbnQgb25lIGJ5IHJlcGxhY2luZyB0aGUgcmF3DQogICBidWZmZXIg d2l0aCBsaXN0IG9mIGl0ZW1zLiBMZXNzIGNvZGUgZHVwbGljYXRpb24gZWFzaWVyIG9uIHRoZSB2 YWxpZGF0aW9uICggdGhhdCANCiAgIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhl IGVuY2FwIGRhdGEpIGJ1dCB3ZSBsb3NzIGluc2VydGlvbiByYXRlLg0KKiB5b3VyIHN1Z2dlc3Rp b24gb2YgIGxpc3Qgb2YgYWN0aW9uIHRoYXQgZWFjaCBhY3Rpb24gaXMgb25lIGl0ZW0uIE1haW4g cHJvYmxlbQ0KICAgaXMgc3BlZWQuICBDb21wbGV4aXR5IGZvcm0gdGhlIGFwcGxpY2F0aW9uIHNp ZGUgYW5kIHRpbWUgdG8gaW1wbGVtZW50Lg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IEFkcmllbiBNYXphcmd1aWwgPGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tPg0K PiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMTAsIDIwMTggNzoxMCBQTQ0KPiBUbzogT3JpIEth bSA8b3Jpa2FAbWVsbGFub3guY29tPg0KPiBDYzogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5r b0Bzb2xhcmZsYXJlLmNvbT47IEZlcnJ1aCBZaWdpdA0KPiA8ZmVycnVoLnlpZ2l0QGludGVsLmNv bT47IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnOyBEZWNsYW4gRG9oZXJ0eQ0KPiA8ZGVjbGFu LmRvaGVydHlAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBEZWtlbCBQZWxlZA0KPiA8ZGVrZWxw QG1lbGxhbm94LmNvbT47IFRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IE7D qWxpbw0KPiBMYXJhbmplaXJvIDxuZWxpby5sYXJhbmplaXJvQDZ3aW5kLmNvbT47IFlvbmdzZW9r IEtvaA0KPiA8eXNrb2hAbWVsbGFub3guY29tPjsgU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxs YW5veC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMC8zXSBldGhkZXY6IGFkZCBnZW5l cmljIEwyL0wzIHR1bm5lbCBlbmNhcHN1bGF0aW9uDQo+IGFjdGlvbnMNCj4gDQo+IE9uIFdlZCwg T2N0IDEwLCAyMDE4IGF0IDAxOjE3OjAxUE0gKzAwMDAsIE9yaSBLYW0gd3JvdGU6DQo+IDxzbmlw Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEFkcmllbiBN YXphcmd1aWwgPGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tPg0KPiA8c25pcD4NCj4gPiA+IE9u IFdlZCwgT2N0IDEwLCAyMDE4IGF0IDA5OjAwOjUyQU0gKzAwMDAsIE9yaSBLYW0gd3JvdGU6DQo+ ID4gPiA8c25pcD4NCj4gPiA+ID4gPiBPbiAxMC83LzIwMTggMTo1NyBQTSwgT3JpIEthbSB3cm90 ZToNCj4gPHNuaXA+DQo+ID4gPiA+ID4gSW4gYWRkdGlvbiB0aGUgcGFyYW1ldGVyIHRvIHRvIHRo ZSBlbmNhcCBhY3Rpb24gaXMgYSBsaXN0IG9mIHJ0ZSBpdGVtcywNCj4gPiA+ID4gPiB0aGlzIHJl c3VsdHMgaW4gMiBleHRyYSB0cmFuc2xhdGlvbiwgYmV0d2VlbiB0aGUgYXBwbGljYXRpb24gdG8g dGhlIGFjdGlvbg0KPiA+ID4gPiA+IGFuZCBmcm9tIHRoZSBhY3Rpb24gdG8gdGhlIE5JQy4gVGhp cyByZXN1bHRzIGluIG5lZ2V0aXZlIGltcGFjdCBvbiB0aGUNCj4gPiA+ID4gPiBpbnNlcnRpb24g cGVyZm9ybWFuY2UuDQo+ID4gPg0KPiA+ID4gTm90IHN1cmUgaXQncyBhIHZhbGlkIGNvbmNlcm4g c2luY2UgaW4gdGhpcyBwcm9wb3NhbCwgUE1EIGlzIHN0aWxsIGV4cGVjdGVkDQo+ID4gPiB0byBp bnRlcnByZXQgdGhlIG9wYXF1ZSBidWZmZXIgY29udGVudHMgcmVnYXJkbGVzcyBmb3IgdmFsaWRh dGlvbiBhbmQgdG8NCj4gPiA+IGNvbnZlcnQgaXQgdG8gaXRzIGludGVybmFsIGZvcm1hdC4NCj4g PiA+DQo+ID4gVGhpcyBpcyB0aGUgYWN0aW9uIHRvIHRha2UsIHdlIHNob3VsZCBhc3N1bWUNCj4g PiB0aGF0IHRoZSBwYXR0ZXJuIGlzIHZhbGlkIGFuZCBub3QgcGFyc2UgaXQgYXQgYWxsLg0KPiA+ IEFub3RoZXIgaXNzdWUsIHdlIGhhdmUgYSBsb3Qgb2YgY29tcGxhaW5zIGFib3V0IHRoZSB0aW1l IHdlIHRha2UNCj4gPiBmb3IgdmFsaWRhdGlvbiwgSSBrbm93IHRoYXQgY3VycmVudGx5IHdlIG11 c3QgdmFsaWRhdGUgdGhlIHJ1bGUgd2hlbiBjcmVhdGluZw0KPiBpdCwNCj4gPiBidXQgdGhpcyBj YW4gY2hhbmdlLCB3aHkgc2hvdWxkIGEgcnVsZSB0aGF0IHdhcyB2YWxpZGF0ZSBhbmQgdGhlIG9u bHkgY2hhbmdlDQo+ID4gaXMgdGhlIElQIGRlc3Qgb2YgdGhlIGVuY2FwIGRhdGE/DQo+ID4gdmly dHVhbCBzd2l0Y2ggYWZ0ZXIgY3JlYXRpbmcgdGhlIGZpcnN0IGZsb3cgYXJlIGp1c3QgbW9kaWZ5 aW5nIGl0IHNvIHdoeSBmb3JjZQ0KPiA+IHRoZW0gaW50byByZXZhbGlkYXRpbmcgaXQ/IChidXQg dGhpcyBpc3N1ZSBpcyBhIGRpZmZlcmVudCB0b3BpYykNCj4gDQo+IERpZCB5b3UgbWVhc3VyZSB3 aGF0IHByb3BvcnRpb24gb2YgdGltZSBpcyBzcGVudCBvbiB2YWxpZGF0aW9uIHdoZW4gY3JlYXRp bmcNCj4gYSBmbG93IHJ1bGU/DQo+IA0KPiBCYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBt bHg0L21seDUsIGNyZWF0aW9uIHVzZWQgdG8gaW52b2x2ZSBhIG51bWJlcg0KPiBvZiBleHBlbnNp dmUgc3lzdGVtIGNhbGxzIHdoaWxlIHZhbGlkYXRpb24gd2FzIGJhc2ljYWxseSBhIHNpbmdsZSBs b2dpYyBsb29wDQo+IGNoZWNraW5nIGluZGl2aWR1YWwgaXRlbXMvYWN0aW9ucyB3aGlsZSBwZXJm b3JtaW5nIGNvbnZlcnNpb24gdG8gSFcNCj4gZm9ybWF0IChtYW5kYXRvcnkgZm9yIGNyZWF0aW9u KS4gQ29udGV4dCBzd2l0Y2hlcyByZWxhdGVkIHRvIGtlcm5lbA0KPiBpbnZvbHZlbWVudCBhcmUg dGhlIHRydWUgcGVyZm9ybWFuY2Uga2lsbGVycy4NCj4gDQoNCkknbSBzb3JyeSB0byBzYXkgSSBk b24ndCBoYXZlIHRoZSBudW1iZXJzLCBidXQgSSBjYW4gdGVsbCB5b3UNCnRoYXQgaW4gdGhlIG5l dyBBUEkgaW4gbW9zdCBjYXNlcyB0aGVyZSB3aWxsIGJlIGp1c3Qgb25lIHN5c3RlbSBjYWxsLg0K SW4gYWRkaXRpb24gYW55IGV4dHJhIHRpbWUgaXMgYSB3YXN0ZWQgdGltZSwgYWdhaW4gdGhpcyBp cyBhIHJlcXVlc3Qgd2UgZ290IGZyb20gbnVtYmVyDQpvZiBjdXN0b21lcnMuDQoNCj4gSSdtIG5v dCBzdXJlIHRoaXMgaXMgYSB2YWxpZCBhcmd1bWVudCBpbiBmYXZvciBvZiB0aGlzIGFwcHJvYWNo IHNpbmNlIGZsb3cNCj4gcnVsZSB2YWxpZGF0aW9uIHN0aWxsIG5lZWRzIHRvIGhhcHBlbiByZWdh cmRsZXNzLg0KPiANCj4gQnkgdGhlIHdheSwgYXBwbGljYXRpb25zIGFyZSBub3Qgc3VwcG9zZWQg dG8gY2FsbCBydGVfZmxvd192YWxpZGF0ZSgpIGJlZm9yZQ0KPiBydGVfZmxvd19jcmVhdGUoKS4g VGhlIGZvcm1lciBjYW4gYmUgaGVscGZ1bCBpbiBzb21lIGNhc2VzIChlLmcuIHRvIGdldCBhDQo+ IHJvdWdoIGlkZWEgb2YgUE1EIGNhcGFiaWxpdGllcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24pIGJ1 dCB0aGV5IHNob3VsZCBpbg0KPiBwcmFjdGljZSBvbmx5IHJlbHkgb24gcnRlX2Zsb3dfY3JlYXRl KCksIHRoZW4gZmFsbCBiYWNrIHRvIHNvZnR3YXJlDQo+IHByb2Nlc3NpbmcgaWYgdGhhdCBmYWls cy4NCj4gDQpGaXJzdCBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIGVuY2Fw c3VsYXRpb24gZGF0YSBpZiB0aGUgZGF0YSBpcyB3cm9uZyANCnRoZW4gdGhlcmUgd2lsbCB0aGUg cGFja2V0IHdpbGwgYmUgZHJvcHBlZC4gSnVzdCBsaWtlIHlvdSBhcmUgc2F5aW5nIHdpdGggdGhl IHJlc3RyaWNhdGlvbg0Kb2YgdGhlIGZsb3cgaXRlbXMgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5 IG9mIHRoZSBhcHBsaWNhdGlvbi4NCkFsc28gSSBzYWlkIHRoZXJlIGlzIGEgZGVtYW5kIGZvciBj b3N0dW1lcnMgYW5kIHRoZXJlIGlzIG5vIHJlYXNvbiBub3QgdG8gZG8gaXQNCmJ1dCBpbiBhbnkg Y2FzZSB0aGlzIGlzIG5vdCByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgcGF0Y2guDQoNCj4gPiA+ IFdvcnNlLCBpdCB3aWxsIHJlcXVpcmUgYSBwYWNrZXQgcGFyc2VyIHRvIGl0ZXJhdGUgb3ZlciBl bmNsb3NlZCBoZWFkZXJzDQo+ID4gPiBpbnN0ZWFkIG9mIGEgbGlzdCBvZiBjb252ZW5pZW50IHJ0 ZV9mbG93X3doYXRldmVyIG9iamVjdHMuIEl0IHdvbid0IGJlDQo+ID4gPiBmYXN0ZXIgd2l0aG91 dCB0aGUgY29udmVuaWVuY2Ugb2YgcG9pbnRlcnMgdG8gcHJvcGVybHkgYWxpZ25lZCBzdHJ1Y3R1 cmVzDQo+ID4gPiB0aGF0IG9ubHkgY29udGFpbiByZWxldmFudCBkYXRhIGZpZWxkcy4NCj4gPiA+ DQo+ID4gQWxzbyBpbiB0aGUgcnRlX2l0ZW0gd2UgYXJlIG5vdCBhbGlnbmVkIHNvIHRoZXJlIGlz IG5vIGRpZmZlcmVuY2UgaW4NCj4gcGVyZm9ybWFuY2UsDQo+ID4gYmV0d2VlbiB0aGUgdHdvIGFw cHJvYWNoZXMsIEluIHRoZSBydGVfaXRlbSBhY3R1YWxseSB3ZSBoYXZlIHVudXNlZA0KPiBwb2lu dGVyIHdoaWNoDQo+ID4gYXJlIGp1c3QgYSB3YXN0ZS4NCj4gDQo+IFJlZ2FyZGluZyB1bnVzZWQg cG9pbnRlcnM6IHJpZ2h0LCBWWExBTi9OVkdSRSBlbmNhcCBhY3Rpb25zIHNob3VsZG4ndCBoYXZl DQo+IHJlbGllZCBvbiBfcGF0dGVybiBpdGVtXyBzdHJ1Y3R1cmVzLCB0aGUgcm9vbSBmb3IgdGhl aXIgImxhc3QiIHBvaW50ZXIgaXMNCj4gYXJndWFibHkgd2FzdGVkLiBPbiB0aGUgb3RoZXIgaGFu ZCwgdGhlICJtYXNrIiBwb2ludGVyIGFsbG93cyBtYXNraW5nDQo+IHJlbGV2YW50IGZpZWxkcyB0 aGF0IG1hdHRlciB0byB0aGUgYXBwbGljYXRpb24gKGUuZy4gc291cmNlL2Rlc3RpbmF0aW9uDQo+ IGFkZHJlc3NlcyBhcyBvcHBvc2VkIHRvIElQdjQgbGVuZ3RoLCB2ZXJzaW9uIGFuZCBvdGhlciBp cnJlbGV2YW50IGZpZWxkcyBmb3INCj4gZW5jYXApLg0KPiANCkF0IGxlYXN0IGFjY29yZGluZyB0 byBteSB0ZXN0aW5nIHRoZSBOSUMgY2FuJ3QgdXNlcyBtYXNrcyBhbmQgYW5kIGl0IGlzIHdvcmtp bmcgYmFzZWQNCm9uIHRoZSBvZmZsb2FkaW5nIGNvbmZpZ3VyZWQgdG8gYW55IHBhY2tldCAobGlr ZSBjaGVja3N1bSApDQoNCj4gTm90IHN1cmUgd2h5IHlvdSB0aGluayBpdCdzIG5vdCBhbGlnbmVk LiBXZSdyZSBjb21wYXJpbmcgYW4gYXJyYXkgb2YNCj4gcnRlX2Zsb3dfaXRlbSBvYmplY3RzIHdp dGggcmF3IHBhY2tldCBkYXRhLiBUaGUgbGF0dGVyIHJlcXVpcmVzDQo+IGludGVycHJldGF0aW9u IG9mIGVhY2ggcHJvdG9jb2wgaGVhZGVyIHRvIGp1bXAgdG8gdGhlIG5leHQgb2Zmc2V0LiBUaGlz IGlzDQo+IG1vcmUgY29tcGxleCBvbiBib3RoIHNpZGVzOiB0byBidWlsZCBzdWNoIGEgYnVmZmVy IGZvciB0aGUgYXBwbGljYXRpb24sIHRoZW4NCj4gdG8gaGF2ZSBpdCBwcm9jZXNzZWQgYnkgdGhl IFBNRC4NCj4gDQpNYXliZSBJIG1pc3Npbmcgc29tZXRoaW5nIGJ1dCB0aGUgaW4gYSBidWZmZXIg YXBwcm9hY2ggbGlrZWx5IGFsbCB0aGUgZGF0YSB3aWxsIGJlIGluIHRoZQ0KY2FjaGUgYW5kIHdp bGwgaWYgYWxsb2NhdGVkIHdpbGwgYWxzbyBiZSBhbGlnbmVkLiAgT24gdGhlIG90aGVyIGhhbmQg dGhlIHJ0ZV9pdGVtcw0KYWxzbyBhcmUgbm90IGd1YXJhbnRlZSB0byBiZSBpbiB0aGUgc2FtZSBj YWNoZSBsaW5lIGVhY2ggYWNjZXNzIHRvIGl0ZW0gbWF5IHJlc3VsdA0KaW4gYSBjYWNoZSBtaXNz LiBBbHNvIGFjY2Vzc2luZyBpbmRpdmlkdWFsIG1lbWJlcnMgYXJlIGp1c3QgYXMgYWNjZXNzaW5n IHRoZW0gaW4NCnJhdyBidWZmZXIuDQoNCj4gPiBBbHNvIG5lZWRzIHRvIGNvbnNpZGVyIGhvdyBh cHBsaWNhdGlvbiBhcmUgdXNpbmcgaXQuIFRoZXkgYXJlIGFscmVhZHkgaGF2ZSBpdA0KPiBpbiBy YXcgYnVmZmVyDQo+ID4gc28gaXQgc2F2ZXMgdGhlIGNvbnZlcnNhdGlvbiB0aW1lIGZvciB0aGUg YXBwbGljYXRpb24uDQo+IA0KPiBJIGRvbid0IHRoaW5rIHNvLiBBcHBsaWNhdGlvbnMgdHlwaWNh bGx5IGtub3cgd2hlcmUgc29tZSB0cmFmZmljIGlzIHN1cHBvc2VkDQo+IHRvIGdvIGFuZCB3aGF0 IFZOSSBpdCBzaG91bGQgdXNlLiBUaGV5IGRvbid0IGhhdmUgYSBwcmVmYWJyaWNhdGVkIHBhY2tl dA0KPiBoYW5keSB0byBwcmVwZW5kIHRvIG91dGdvaW5nIHRyYWZmaWMuIElmIHRoYXQgd2FzIHRo ZSBjYXNlIHRoZXknZCBtb3N0DQo+IGxpa2VseSBkbyBzbyB0aGVtc2VsdmVzIHRocm91Z2ggYSBl eHRyYSBwYWNrZXQgc2VnbWVudCBhbmQgbm90IGJvdGhlciB3aXRoDQo+IFBNRCBvZmZsb2Fkcy4N Cj4gDQpDb250cmFpbCBWLVJvdXRlciBoYXMgc3VjaCBhIGJ1ZmZlciBhbmQgaXQganVzdCBjaGFu Z2VzIHRoZSBzcGVjaWZpYyBmaWVsZHMuDQpUaGlzIGlzIG9uZSBvZiB0aGUgdGhpbmcgd2Ugd2Fu dHMgdG8gb2ZmbG9hZCwgZnJvbSBteSBsYXN0IGNoZWNrIGFsc28gT1ZTIHVzZXMNCnN1Y2ggYnVm ZmVyLg0KDQo+IDxzbmlwPg0KPiA+ID4gRnJvbSBhIHVzYWJpbGl0eSBzdGFuZHBvaW50IEknbSBu b3QgYSBmYW4gb2YgdGhlIGN1cnJlbnQgaW50ZXJmYWNlIHRvDQo+ID4gPiBwZXJmb3JtIE5WR1JF L1ZYTEFOIGVuY2FwLCBob3dldmVyIHRoaXMgcHJvcG9zYWwgYWRkcyBhbm90aGVyIGxheWVyIG9m DQo+ID4gPiBvcGFxdWVuZXNzIGluIHRoZSBuYW1lIG9mIG1ha2luZyB0aGluZ3MgbW9yZSBnZW5l cmljIHRoYW4gcnRlX2Zsb3cNCj4gYWxyZWFkeQ0KPiA+ID4gaXMuDQo+ID4gPg0KPiA+IEknbSBz b3JyeSBidXQgSSBkb24ndCB1bmRlcnN0YW5kIHdoeSBpdCBpcyBtb3JlIG9wYXF1ZW5lc3MsIGFz IEkgc2VlIGl0IGlzIHZlcnkNCj4gc2ltcGxlDQo+ID4ganVzdCBnaXZlIHRoZSBlbmNhcHN1bGF0 aW9uIGRhdGEgYW5kIHRoYXQncyBpdC4gRm9yIGV4YW1wbGUgb24gc3lzdGVtIHRoYXQNCj4gc3Vw cG9ydCBudW1iZXIgb2YNCj4gPiBlbmNhcHN1bGF0aW9ucyB0aGV5IGRvbid0IG5lZWQgdG8gY2Fs bCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbiBqdXN0IHRvIGNoYW5nZQ0KPiB0aGUgYnVmZmVyLg0K PiANCj4gSSdtIHNheWluZyBpdCdzIG9wYXF1ZSBmcm9tIGFuIEFQSSBzdGFuZHBvaW50IGlmIHlv dSBleHBlY3QgdGhlIFBNRCB0bw0KPiBpbnRlcnByZXQgdGhhdCBidWZmZXIncyBjb250ZW50cyBp biBvcmRlciB0byBwcmVwZW5kIGl0IGluIGEgc21hcnQgd2F5Lg0KPiANCj4gU2luY2UgdGhpcyBn ZW5lcmljIGVuY2FwIGRvZXMgbm90IHN1cHBvcnQgbWFza3MsIHRoZXJlIGlzIG5vIHdheSBmb3Ig YW4NCj4gYXBwbGljYXRpb24gdG8gYXQgbGVhc3QgdGVsbCBhIFBNRCB3aGF0IGRhdGEgbWF0dGVy cyBhbmQgd2hhdCBkb2Vzbid0IGluIHRoZQ0KPiBwcm92aWRlZCBidWZmZXIuIFRoaXMgbWVhbnMg aW52YWxpZCBjaGVja3N1bXMsIGxlbmd0aHMgYW5kIHNvIG9uIG11c3QgYmUNCj4gc2VudCBhcyBp cyB0byB0aGUgd2lyZS4gV2hhdCdzIHRoZSB1c2UgY2FzZSBmb3Igc3VjaCBhIGJlaGF2aW9yPw0K PiANClRoZSBOSUMgdHJlYXRzIHRoZSBwYWNrZXQgYXMgbm9ybWFsIHBhY2tldCB0aGF0IGdvZXMg dGhyb3cgYWxsIG5vcm1hbCBvZmZsb2FkaW5nLg0KDQoNCj4gPiA+IEFzc3VtaW5nIHRoZXkgYXJl IG5vdCB0byBiZSBpbnRlcnByZXRlZCBieSBQTURzLCBtYXliZSB0aGVyZSdzIGEgY2FzZSBmb3IN Cj4gPiA+IHByZXBlbmRpbmcgYXJiaXRyYXJ5IGJ1ZmZlcnMgdG8gb3V0Z29pbmcgdHJhZmZpYyBh bmQgcmVtb3ZpbmcgdGhlbSBmcm9tDQo+ID4gPiBpbmNvbWluZyB0cmFmZmljLiBIb3dldmVyIHRo aXMgZmVhdHVyZSBzaG91bGQgbm90IGJlIG5hbWVkICJnZW5lcmljIHR1bm5lbA0KPiA+ID4gZW5j YXAvZGVjYXAiIGFzIGl0J3MgbWlzbGVhZGluZy4NCj4gPiA+DQo+ID4gPiBTb21ldGhpbmcgbGlr ZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9IRUFERVJfKFBVU0h8UE9QKSB3b3VsZCBiZQ0KPiA+ID4g bW9yZQ0KPiA+ID4gYXBwcm9wcmlhdGUuIEkgdGhpbmsgb24gdGhlICJwb3AiIHNpZGUsIG9ubHkg dGhlIHNpemUgd291bGQgbWF0dGVyLg0KPiA+ID4NCj4gPiBNYXliZSB0aGUgbmFtZSBjYW4gYmUg Y2hhbmdlIGJ1dCBhZ2FpbiB0aGUgYXBwbGljYXRpb24gZG9lcyBlbmNhcHN1bGF0aW9uDQo+IHNv IGl0IHdpbGwNCj4gPiBiZSBtb3JlIGludHVpdGl2ZSBmb3IgaXQuDQo+ID4NCj4gPiA+IEFub3Ro ZXIgcHJvYmxlbSBpcyB0aGF0IHlvdSBtdXN0IG5vdCByZXF1aXJlIGFjdGlvbnMgdG8gcmVseSBv biBzcGVjaWZpYw0KPiA+ID4gcGF0dGVybiBjb250ZW50Og0KPiA+ID4NCj4gPiBJIGRvbid0IHRo aW5rIHRoaXMgY2FuIGJlIHRydWUgYW55bW9yZSBzaW5jZSBmb3IgZXhhbXBsZSB3aGF0IGRvIHlv dSBleHBlY3QNCj4gPiB0byBoYXBwZW4gd2hlbiB5b3UgcGxhY2UgYW4gYWN0aW9uIGZvciBleGFt cGxlIG1vZGlmeSBpcCB0byBwYWNrZXQgd2l0aCBubw0KPiBpcD8NCj4gPg0KPiA+IFRoaXMgbWF5 IHJhaXNlIGlzc3VlcyBpbiB0aGUgTklDLg0KPiA+IFNhbWUgZ29lcyBmb3IgZGVjYXAgYWZ0ZXIg dGhlIGZsb3cgaXMgaW4gdGhlIE5JQyBoZSBtdXN0IGFzc3VtZSB0aGF0IGhlIGNhbg0KPiByZW1v dmUgb3RoZXJ3aXNlDQo+ID4gcmVhbGx5IHVuZXhwZWN0ZWQgYmVhdmVyIGNhbiBhY2NvcmQuDQo+ IA0KPiBSaWdodCwgdGhhdCdzIHdoeSBpdCBtdXN0IGJlIGRvY3VtZW50ZWQgYXMgdW5kZWZpbmVk IGJlaGF2aW9yLiBUaGUgQVBJIGlzDQo+IG5vdCBzdXBwb3NlZCB0byBlbmZvcmNlIHRoZSByZWxh dGlvbnNoaXAuIEEgUE1EIG1heSByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZg0KPiBzb21lIHBhdHRl cm4gaXRlbSBpbiBvcmRlciB0byBwZXJmb3JtIHNvbWUgYWN0aW9uLCBidXQgdGhpcyBpcyBhIFBN RA0KPiBsaW1pdGF0aW9uLCBub3QgYSBsaW1pdGF0aW9uIG9mIHRoZSBBUEkgaXRzZWxmLg0KPiAN Cg0KQWdyZWUNCg0KPiA8c25pcD4NCj4gPiBGb3IgbWF4aW11bSBmbGV4aWJpbGl0eSwgYWxsIGFj dGlvbnMgc2hvdWxkIGJlIHVzYWJsZSBvbiB0aGVpciBvd24gb24gZW1wdHkNCj4gPiA+IHBhdHRl cm4uIE9uIHRoZSBvdGhlciBoYW5kLCB5b3UgY2FuIGRvY3VtZW50IHVuZGVmaW5lZCBiZWhhdmlv ciB3aGVuDQo+ID4gPiBwZXJmb3JtaW5nIHNvbWUgYWN0aW9uIG9uIHRyYWZmaWMgdGhhdCBkb2Vz bid0IGNvbnRhaW4gc29tZXRoaW5nLg0KPiA+ID4NCj4gPg0KPiA+IExpa2UgSSBzYWlkIGFuZCBs aWtlIGl0IGlzIGFscmVhZHkgZGVmaW5lZCBmb3IgVlhMQU5fZW5hY3AgIHdlIG11c3Qga25vdw0K PiA+IHRoZSBwYXR0ZXJuIG90aGVyd2lzZSB0aGUgcnVsZSBjYW4gYmUgZGVjbGluZWQgaW4gS2Vy bmVsIC8gY3Jhc2ggd2hlbiB0cnlpbmcNCj4gdG8gZGVjYXANCj4gPiBwYWNrZXQgd2l0aG91dCBv dXRlciB0dW5uZWwuDQo+IA0KPiBSaWdodCwgUE1EIGxpbWl0YXRpb24gdGhlbi4gWW91IGFyZSBm cmVlIHRvIGRvY3VtZW50IGl0IGluIHRoZSBQTUQuDQo+IA0KDQpBZ3JlZQ0KDQo+IDxzbmlwPg0K PiA+ID4gTXkgb3BpbmlvbiBpcyB0aGF0IHRoZSBiZXN0IGdlbmVyaWMgYXBwcm9hY2ggdG8gcGVy Zm9ybSBlbmNhcC9kZWNhcCB3aXRoDQo+ID4gPiBydGVfZmxvdyB3b3VsZCB1c2Ugb25lIGRlZGlj YXRlZCBhY3Rpb24gcGVyIHByb3RvY29sIGhlYWRlciB0bw0KPiA+ID4gYWRkL3JlbW92ZS9tb2Rp ZnkuIFRoaXMgaXMgdGhlIHN1Z2dlc3Rpb24gSSBvcmlnaW5hbGx5IG1hZGUgZm9yDQo+ID4gPiBW WExBTi9OVkdSRSBbMl0gYW5kIHRoaXMgaXMgb25lIG9mIHRoZSByZWFzb25zIHRoZSBvcmRlciBv ZiBhY3Rpb25zIG5vdw0KPiA+ID4gbWF0dGVycyBbM10uDQo+ID4NCj4gPiBJIGFncmVlIHRoYXQg eW91ciBhcHByb2FjaCBtYWtlIGEgbG90IG9mIHNlbnNlLCBidXQgdGhlcmUgYXJlIG51bWJlciBv Zg0KPiBpc3N1ZXMgd2l0aCBpdA0KPiA+ICogaXQgaXMgaGFyZGVyIGFuZCB0YWtlcyBtb3JlIHRp bWUgZnJvbSB0aGUgYXBwbGljYXRpb24gcG9pbnQgb2Ygdmlldy4NCj4gPiAqIGl0IGlzIHNsb3dl ciB3aGVuIGNvbXBhcmVkIHRvIHRoZSByYXcgYnVmZmVyLg0KPiANCj4gSSdtIGNvbnZpbmNlZCBv ZiB0aGUgb3Bwb3NpdGUgOikgV2UgY291bGQgdHJ5IHRvIGltcGxlbWVudCB5b3VyIHJhdyBidWZm ZXINCj4gYXBwcm9hY2ggYXMgd2VsbCBhcyBtaW5lIGluIHRlc3RwbWQgKG9uZSBhY3Rpb24gcGVy IGxheWVyLCBub3QgdGhlIGN1cnJlbnQNCj4gVlhMQU4vTlZHUkUgZW5jYXAgbWVzcyBtaW5kIHlv dSkgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBtb3N0DQo+IGNvbnZlbmllbnQg b24gdGhlIGFwcGxpY2F0aW9uIHNpZGUuDQo+IA0KDQpUaGVyZSBhcmUgMiBkaWZmZXJlbnQgaW1w bGVtZW50YXRpb25zIG9uZSBmb3IgdGVzdC1wbWQgYW5kIG9uZSBmb3Igbm9ybWFsIGFwcGxpY2F0 aW9uLg0KV3JpdGluZyB0aGUgY29kZSBpbiB0ZXN0LXBtZCBpbiByYXcgYnVmZmVyIGlzIHNpbXBs ZXIgYnV0IGxlc3MgZmxleGlibGUNCndyaXRpbmcgdGhlIGNvZGUgaW4gYSByZWFsIGFwcGxpY2F0 aW9uIEkgdGhpbmsgaXMgc2ltcGxlciBpbiB0aGUgYnVmZmVyIGFwcHJvYWNoLg0KU2luY2UgdGhl eSBhbHJlYWR5IGhhdmUgYSBidWZmZXIuDQoNCj4gPHNuaXA+DQo+ID4gPiBFeGNlcHQgZm9yIHJh dyBwdXNoL3BvcCBvZiB1bmludGVycHJldGVkIGhlYWRlcnMsIHR1bm5lbCBlbmNhcHN1bGF0aW9u cw0KPiBub3QNCj4gPiA+IGV4cGxpY2l0bHkgc3VwcG9ydGVkIGJ5IHJ0ZV9mbG93IHNob3VsZG4n dCBiZSBwb3NzaWJsZS4gV2hvIHdpbGwgZXhwZWN0DQo+ID4gPiBzb21ldGhpbmcgdGhhdCBpc24n dCBkZWZpbmVkIGJ5IHRoZSBBUEkgdG8gd29yayBhbmQgcmVseSBvbiBpdCBpbiB0aGVpcg0KPiA+ ID4gYXBwbGljYXRpb24/IEkgZG9uJ3Qgc2VlIGl0IGhhcHBlbmluZy4NCj4gPiA+DQo+ID4gU29t ZSBvZiBvdXIgY3VzdG9tZXJzIGFyZSB3b3JraW5nIHdpdGggcHJpdmF0ZSB0dW5uZWwgdHlwZSwg YW5kIHRoZXkgY2FuDQo+IGNvbmZpZ3VyZSBpdCB1c2luZyBrZXJuZWwNCj4gPiBvciBqdXN0IG5l dyBGVyB0aGlzIGlzIGEgcmVhbCB1c2UgY2FzZS4NCj4gDQo+IFlvdSBjYW4gYWxyZWFkeSB1c2Ug bmVnYXRpdmUgdHlwZXMgdG8gcXVpY2tseSBhZGRyZXNzIEhXIGFuZA0KPiBjdXN0b21lci1zcGVj aWZpYyBuZWVkcyBieSB0aGUgd2F5LiBDb3VsZCB0aGlzIFs2XSBwZXJoYXBzIGFkZHJlc3MgdGhl DQo+IGlzc3VlPw0KPiANCj4gUE1EcyBjYW4gZXhwb3NlIHB1YmxpYyBBUElzLiBZb3UgY291bGQg ZGV2aXNlIG9uZSB0aGF0IHNwaXRzIG5ldyBuZWdhdGl2ZQ0KPiBpdGVtL2FjdGlvbiB0eXBlcyBi YXNlZCBvbiBzb21lIGRhdGEsIHRvIGJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IGZsb3cNCj4gcnVs ZXMgd2l0aCB0aGF0IFBNRCBvbmx5Lg0KPiANCj4gPiA+IENvbWUgb24sIGFkZGluZyBuZXcgZW5j YXAvZGVjYXAgYWN0aW9ucyB0byBEUERLIGlzIHNob3VsZG4ndCBiZSBzdWNoIGENCj4gcGFpbg0K PiA+ID4gdGhhdCB0aGUgb25seSBhbHRlcm5hdGl2ZSBpcyBhIGdlbmVyaWMgQVBJIHRvIHdvcmsg YXJvdW5kIG1lIDopDQo+ID4gPg0KPiA+DQo+ID4gWWVzIGJ1dCBsaWtlIEkgc2FpZCB3aGVuIGEg Y29zdHVtZXIgYXNrcyBmb3IgYSBlY25hcCBhbmQgSSBjYW4gZ2l2ZSBpdCB0byBoaW0NCj4gd2h5 IHdhaXQgZm9yIHRoZSBEUERLIG5leHQgcmVsZWFzZT8NCj4gDQo+IEkgZG9uJ3Qga25vdywgaXMg cnRlX2Zsb3cgaGVsZCB0byBhIHNwZWNpYWwgc3RhbmRhcmQgY29tcGFyZWQgdG8gb3RoZXIgRFBE Sw0KPiBmZWF0dXJlcyBpbiB0aGlzIHJlZ2FyZD8gRW5naW5lZXJpbmcgcGF0Y2hlcyBjYW4gYWx3 YXlzIGJlIHByb3ZpZGVkLA0KPiBiYWNrcG9ydGVkIGFuZCB3aGF0bm90Lg0KPiANCj4gQ3VzdG9t ZXIgYXBwbGljYXRpb25zIHdpbGwgaGF2ZSB0byBiZSBtb2RpZmllZCBhbmQgcmVjb21waWxlZCB0 byBiZW5lZml0DQo+IGZyb20gYW55IG5ldyBGVyBjYXBhYmlsaXRpZXMgcmVnYXJkbGVzcywgaXQn cyBleHRyZW1lbHkgdW5saWtlbHkgdG8gYmUganVzdA0KPiBhIG1hdHRlciBvZiBpbnN0YWxsaW5n IGEgbmV3IEZXIGltYWdlLg0KPiANCg0KSW4gc29tZSBjYXNlcyB0aGlzIGlzIHdoYXQncyBoYXBw ZW4g8J+Yig0KDQo+IDxzbmlwPg0KPiA+ID4gUGF0dGVybiBkb2VzIG5vdCBuZWNlc3NhcmlseSBt YXRjaCB0aGUgZnVsbCBzdGFjayBvZiBvdXRlciBsYXllcnMuDQo+ID4gPg0KPiA+ID4gRGVjYXAg YWN0aW9uIG11c3QgYmUgYWJsZSB0byBkZXRlcm1pbmUgd2hhdCB0byBkbyBvbiBpdHMgb3duLCBw b3NzaWJseSBpbg0KPiA+ID4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBhY3Rpb25zIGluIHRoZSBs aXN0IGJ1dCB0aGF0J3MgYWxsLg0KPiA+ID4NCj4gPiBEZWNhcCByZW1vdmVzIHRoZSBvdXRlciBo ZWFkZXJzLg0KPiA+IFNvbWUgdHVubmVscyBkb24ndCBoYXZlIGlubmVyIEwyIGFuZCBpdCBtdXN0 IGJlIGFkZGVkIGFmdGVyIHRoZSBkZWNhcA0KPiA+IHRoaXMgaXMgd2hhdCBMMyBkZWNhcCBtZWFu cywgYW5kIHRoZSB1c2VyIG11c3Qgc3VwcGx5IHRoZSB2YWxpZCBMMiBoZWFkZXIuDQo+IA0KPiBN eSBwb2ludCBpcyB0aGF0IGFueSBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gZGVjYXAgbXVzdCBi ZSBwcm92aWRlZCBieSB0aGUNCj4gZGVjYXAgYWN0aW9uIGl0c2VsZiwgbm90IHRocm91Z2ggYSBw YXR0ZXJuIGl0ZW0sIHdob3NlIG9ubHkgcHVycG9zZSBpcyB0bw0KPiBmaWx0ZXIgdHJhZmZpYyBh bmQgbWF5IG5vdCBiZSBwcmVzZW50LiBQcmVjaXNlbHkgd2hhdCB5b3UgZGlkIGZvciBMMyBkZWNh cC4NCj4gDQpBZ3JlZSB3ZSByZW1vdmUgdGhlIGxpbWl0YXRpb24gYW5kIGp1c3Qgc2F5IHVucHJl ZGljdGVkIHJlc3VsdCBtYXkgYWNjb3JkLg0KDQo+IDxzbmlwPg0KPiA+ID4gPiBJIHRoaW5rIHRo ZSByZWFzb25zIEkgZ2F2ZSBhcmUgdmVyeSBnb29kIG1vdGl2YXRpb24gdG8gY2hhbmdlIHRoZQ0K PiBhcHByb2FjaA0KPiA+ID4gPiBwbGVhc2UgYWxzbyBjb25zaWRlciB0aGF0IHRoZXJlIGlzIG5v IGltcGxlbWVudGF0aW9uIHlldCB0aGF0IHN1cHBvcnRzIHRoZQ0KPiA+ID4gPiBvbGQgYXBwcm9h Y2guDQo+ID4gPg0KPiA+ID4gV2VsbCwgYWx0aG91Z2ggdGhlIGV4aXN0aW5nIEFQSSBtYWRlIHRo aXMgcGFpbmZ1bCwgSSBkaWQgc3VibWl0IG9uZSBbNF0gYW5kDQo+ID4gPiB0aGVyZSdzIGFuIHVw ZGF0ZWQgdmVyc2lvbiBmcm9tIFNsYXZhIFs1XSBmb3IgbWx4NS4NCj4gPiA+DQo+ID4gPiA+IHdo aWxlIHdlIGRvIGhhdmUgY29kZSB0aGF0IHVzZXMgdGhlIG5ldyBhcHByb2FjaC4NCj4gPiA+DQo+ ID4gPiBJZiB5b3UgbmVlZCB0aGUgYWJpbGl0eSB0byBwcmVwZW5kIGEgcmF3IGJ1ZmZlciwgcGxl YXNlIGNvbnNpZGVyIGEgZGlmZmVyZW50DQo+ID4gPiBuYW1lIGZvciB0aGUgcmVsYXRlZCBhY3Rp b25zLCByZWRlZmluZSB0aGVtIHdpdGhvdXQgcmVsaWFuY2Ugb24gc3BlY2lmaWMNCj4gPiA+IHBh dHRlcm4gaXRlbXMgYW5kIGxlYXZlIE5WR1JFL1ZYTEFOIGVuY2FwL2RlY2FwIGFzIGlzIGZvciB0 aGUgdGltZQ0KPiA+ID4gYmVpbmcuIFRoZXkgY2FuIGRlcHJlY2F0ZWQgYW55dGltZSB3aXRob3V0 IEFCSSBpbXBhY3QuDQo+ID4gPg0KPiA+ID4gT24gdGhlIG90aGVyIGhhbmQgaWYgdGhhdCByYXcg YnVmZmVyIGlzIHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBQTUQgZm9yDQo+ID4gPiBtb3JlIGlu dGVsbGlnZW50IHR1bm5lbCBlbmNhcC9kZWNhcCBoYW5kbGluZywgSSBkbyBub3QgYWdyZWUgd2l0 aCB0aGUNCj4gPiA+IHByb3Bvc2VkIGFwcHJvYWNoIGZvciB1c2FiaWxpdHkgcmVhc29ucy4NCj4g DQo+IEknbSBzdGlsbCBub3QgY29udmluY2VkIGJ5IHlvdXIgYXBwcm9hY2guIElmIHRoZXNlIG5l dyBhY3Rpb25zICptdXN0KiBiZQ0KPiBpbmNsdWRlZCB1bm1vZGlmaWVkIHJpZ2h0IG5vdyB0byBw cmV2ZW50IHNvbWUgY3VzdG9tZXIgY2F0YWNseXNtLCB0aGVuIGZpbmUNCj4gYXMgYW4gZXhwZXJp bWVudCBidXQgcGxlYXNlIGxlYXZlIFZYTEFOL05WR1JFIGVuY2FwcyBhbG9uZSBmb3IgdGhlIHRp bWUNCj4gYmVpbmcuDQo+IA0KPiA+ID4gWzJdIFtQQVRDSCB2MyAyLzRdIGV0aGRldjogQWRkIHR1 bm5lbCBlbmNhcC9kZWNhcCBhY3Rpb25zDQo+ID4gPg0KPiA+ID4NCj4gaHR0cHM6Ly9lbWVhMDEu c2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRm1haWxz LmQNCj4gPiA+IHBkay5vcmclMkZhcmNoaXZlcyUyRmRldiUyRjIwMTgtDQo+ID4gPg0KPiBBcHJp bCUyRjA5NjQxOC5odG1sJmFtcDtkYXRhPTAyJTdDMDElN0NvcmlrYSU0MG1lbGxhbm94LmNvbSU3 QzdiOQ0KPiA+ID4NCj4gOWM1Zjc4MTQyNGJhNzk1MDYwOGQ2MmVhODNlZmElN0NhNjUyOTcxYzdk MmU0ZDliYTZhNGQxNDkyNTZmNDYxYiUNCj4gPiA+DQo+IDdDMCU3QzAlN0M2MzY3NDc2OTc0ODkw NDg5MDUmYW1wO3NkYXRhPXByQUJsWWl4R0FrZG55WjJjZXRwZ3o1JTJGDQo+ID4gPiB2a01taUM2 NlQzWk5FJTJGZXdrUTQlM0QmYW1wO3Jlc2VydmVkPTANCj4gPiA+DQo+ID4gPiBbM10gZXRoZGV2 OiBhbHRlciBiZWhhdmlvciBvZiBmbG93IEFQSSBhY3Rpb25zDQo+ID4gPg0KPiA+ID4NCj4gaHR0 cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUz QSUyRiUyRmdpdC5kcGRrDQo+ID4gPg0KPiAub3JnJTJGZHBkayUyRmNvbW1pdCUyRiUzRmlkJTNE Y2MxN2ZlYjkwNDEzJmFtcDtkYXRhPTAyJTdDMDElN0MNCj4gPiA+DQo+IG9yaWthJTQwbWVsbGFu b3guY29tJTdDN2I5OWM1Zjc4MTQyNGJhNzk1MDYwOGQ2MmVhODNlZmElN0NhNjUyOTcxDQo+ID4g Pg0KPiBjN2QyZTRkOWJhNmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2MzY3NDc2OTc0ODkwNTg5 MTUmYW1wO3NkYXRhDQo+ID4gPg0KPiA9VmF2c0hYZVEzU2dNemFUbGtsQldka0tTRUJqRUxNcDlo d1VIQmxMUWxWQSUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPiA+ID4NCj4gPiA+IFs0XSBuZXQvbWx4NTog YWRkIFZYTEFOIGVuY2FwIHN1cHBvcnQgdG8gc3dpdGNoIGZsb3cgcnVsZXMNCj4gPiA+DQo+ID4g Pg0KPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHBzJTNBJTJGJTJGbWFpbHMuZA0KPiA+ID4gcGRrLm9yZyUyRmFyY2hpdmVzJTJGZGV2JTJG MjAxOC0NCj4gPiA+DQo+IEF1Z3VzdCUyRjExMDU5OC5odG1sJmFtcDtkYXRhPTAyJTdDMDElN0Nv cmlrYSU0MG1lbGxhbm94LmNvbSU3QzdiDQo+ID4gPg0KPiA5OWM1Zjc4MTQyNGJhNzk1MDYwOGQ2 MmVhODNlZmElN0NhNjUyOTcxYzdkMmU0ZDliYTZhNGQxNDkyNTZmNDYxYg0KPiA+ID4NCj4gJTdD MCU3QzAlN0M2MzY3NDc2OTc0ODkwNTg5MTUmYW1wO3NkYXRhPWxwZkRXcDlvQk44QUZOWVo2Vkw1 QmpJDQo+ID4gPiAzOFNERnQ5MWl1VTdwdmhiQyUyRjBFJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4g Pg0KPiA+ID4gWzVdIG5ldC9tbHg1OiBlLXN3aXRjaCBWWExBTiBmbG93IHZhbGlkYXRpb24gcm91 dGluZQ0KPiA+ID4NCj4gPiA+DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9u Lm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZtYWlscy5kDQo+ID4gPiBwZGsub3JnJTJG YXJjaGl2ZXMlMkZkZXYlMkYyMDE4LQ0KPiA+ID4NCj4gT2N0b2JlciUyRjExMzc4Mi5odG1sJmFt cDtkYXRhPTAyJTdDMDElN0NvcmlrYSU0MG1lbGxhbm94LmNvbSU3QzcNCj4gPiA+DQo+IGI5OWM1 Zjc4MTQyNGJhNzk1MDYwOGQ2MmVhODNlZmElN0NhNjUyOTcxYzdkMmU0ZDliYTZhNGQxNDkyNTZm NDYxDQo+ID4gPg0KPiBiJTdDMCU3QzAlN0M2MzY3NDc2OTc0ODkwNTg5MTUmYW1wO3NkYXRhPThH Q2JZazZ1QjJhaFphSGFxV1g0DQo+ID4gPiBPT3ElMkI3Wkx3eGlBcGNzJTJGeVJBVDlxT3clM0Qm YW1wO3Jlc2VydmVkPTANCj4gDQo+IFs2XSAiOS4yLjkuIE5lZ2F0aXZlIHR5cGVzIg0KPiANCj4g aHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRw JTNBJTJGJTJGZG9jLmRwZGsNCj4gLm9yZyUyRmd1aWRlcy0xOC4wOCUyRnByb2dfZ3VpZGUlMkZy dGVfZmxvdy5odG1sJTIzbmVnYXRpdmUtDQo+IHR5cGVzJmFtcDtkYXRhPTAyJTdDMDElN0Nvcmlr YSU0MG1lbGxhbm94LmNvbSU3QzUyYTdiNjZkODg4ZjQ3YTAyDQo+IGZhMzA4ZDYyZWNhZTk3MSU3 Q2E2NTI5NzFjN2QyZTRkOWJhNmE0ZDE0OTI1NmY0NjFiJTdDMCU3QzAlN0M2Mw0KPiA2NzQ3ODQ2 Mzk4NTE5NjI3JmFtcDtzZGF0YT1SbjFzNUZnUUI4cFNnakx2czNLMk00clglMkJWYks1VHhpNTlp eQ0KPiBRJTJGYnNVcVElM0QmYW1wO3Jlc2VydmVkPTANCj4gDQo+IE9uIGFuIHVucmVsYXRlZCBu b3RlLCBpcyB0aGVyZSBhIHdheSB0byBwcmV2ZW50IE91dGxvb2sgZnJvbSBtYW5nbGluZyBVUkxz DQo+IG9uIHlvdXIgc2lkZT8gKHRob3NlIGVtZWEwMS5zYWZlbGlua3MgdGhpbmdzKQ0KPiANCkkg IHdpbGwgdHJ5IHRvIGZpbmQgYSBzb2x1dGlvbi4gSSBkaWRuJ3QgZmluZCBvbmUgc28gZmFyLg0K DQo+IC0tDQo+IEFkcmllbiBNYXphcmd1aWwNCj4gNldJTkQNCg==