From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: michael.d.kinney@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Mon, 13 May 2019 11:20:17 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 May 2019 11:20:16 -0700 X-ExtLoop1: 1 Received: from orsmsx101.amr.corp.intel.com ([10.22.225.128]) by orsmga006.jf.intel.com with ESMTP; 13 May 2019 11:20:16 -0700 Received: from orsmsx153.amr.corp.intel.com (10.22.226.247) by ORSMSX101.amr.corp.intel.com (10.22.225.128) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 13 May 2019 11:20:16 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.231]) by ORSMSX153.amr.corp.intel.com ([169.254.12.163]) with mapi id 14.03.0415.000; Mon, 13 May 2019 11:20:16 -0700 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "sean.brogan@microsoft.com" , "Kinney, Michael D" Subject: Re: [edk2-devel] RFC for Edk2-Library Thread-Topic: [edk2-devel] RFC for Edk2-Library Thread-Index: AQHVBR1gzyAh0v7/oEeSRuZO3ilWVqZhc3aAgAGit7CAAMmKAP//mb8QgAXjxoCAAAFWgA== Date: Mon, 13 May 2019 18:20:15 +0000 Message-ID: References: <24030.1557264917803034398@groups.io> <46700279-e217-0a45-8637-9c24cb5cc4eb@redhat.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.22.254.139] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvLA0KDQpPbiBXaW5kb3dzIGJ1aWxkIHN5c3RlbXMsIHdlIGhhdmUgdG8gaW5zdGFsbCBP cGVuU1NMIGNvbW1hbmQgbGluZQ0KdXRpbGl0aWVzLiAgRm9yIGFsbCBob3N0IHN5c3RlbXMsIHRo ZSBPcGVuU1NMIGNvbW1hbmQgbGluZQ0KdXRpbGl0aWVzIG5lZWQgdG8gYmUgaW4gdGhlIHN5c3Rl bSBwYXRoLiAgTXkgcG9pbnQgaXMgdGhhdCB0aGlzIA0KaXMgc2ltaWxhciB0byBvdGhlciBkZXBl bmRlbmNpZXMgbGlrZSBpQVNMIGFuZCBOQVNNLg0KDQpGb3IgdGhlIHBhdGNoIGRpc2N1c3Npb24s IEkgZGlkIG5vdCBtZWFuIHRvIGNvbmZ1c2UgdGhpbmdzLiAgRnJvbQ0Kb25lIHBlcnNwZWN0aXZl LCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIHBhdGNoIHN1Ym1pc3Npb25zLiAgU2luZ2xlDQpjb21t aXQgKG5vIHNlcmllcykgYW5kIG11bHRpcGxlIGNvbW1pdHMgKHBhdGNoIHNlcmllcykuICBUaGUg c3F1YXNoDQptZXJnZSBvZiBhIFBSIHdvcmtzIGp1c3QgZmluZSBmb3IgdGhlIHNpbmdsZSBjb21t aXQgKG5vIHNlcmllcykgdHlwZS4NClRoZXJlIG1heSBiZSBmZWVkYmFjay9jb21tZW50cyB0aGF0 IHJlcXVpcmUgY29kZSBjaGFuZ2VzIGFuZCBvbmNlIHRoZSANClBSIGlzIGFjY2VwdGVkLCB0aGUg aGlzdG9yeSBpbiB0aGUgcmVwb3NpdG9yeSBzaG93cyBhIHNpbmdsZSBjb21taXQuDQpBcyB0aGUg UFIgZXZvbHZlcywgY29tbWl0cyBhcmUgbWFkZSBvbiB0aGUgUFIgdG8gYWRkcmVzcyBlYWNoIHBp ZWNlDQpvZiBmZWVkYmFjay4gIFNxdWFzaGluZyBhbGwgb2YgdGhlc2UgdG9nZXRoZXIgYXQgdGhl IHRpbWUgdGhlIFBSIGlzDQphY2NlcHRlZCBpcyB0aGUgY29ycmVjdCBhY3Rpb24gYW5kIG1hdGNo ZXMgd2hhdCB3ZSBkbyB0aGUgZm9yIGVtYWlsDQpiYXNlZCByZXZpZXcgcHJvY2Vzcy4gIFRoZSBm aW5hbCByZXN1bHQgZm9yIGJvdGggUFIgYW5kIGVtYWlsIGlzIGENCnNpbmdsZSBjb21taXQgd2l0 aCBhIGNsZWFuZWQgdXAgY29tbWl0IG1lc3NhZ2UuDQoNCllvdSBtYXkgY29uc2lkZXIgdGhlIHNp bmdsZSBjb21taXQgKG5vIHNlcmllcykgdHlwZSBtb3JlIHJhcmUgdGhhbiB0aGUNCm11bHRpcGxl IGNvbW1pdCAocGF0Y2ggc2VyaWVzKSB0eXBlLiAgSG93ZXZlciwgdGhlcmUgbWF5IGJlIGNhc2Vz IHdoZXJlDQphIG11bHRpcGxlIGNvbW1pdCAocGF0Y2ggc2VyaWVzKSB3YXMgdXNlZCB3aGVyZSB0 aGUgY2hhbmdlcyBjb3VsZCBoYXZlDQpiZWVuIHN1Ym1pdHRlZCBhcyBhIHNldCBvZiBzaW5nbGUg Y29tbWl0IChubyBzZXJpZXMpIGNoYW5nZXMuDQoNCkJlc3QgcmVnYXJkcywNCg0KTWlrZQ0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlv IFttYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dDQo+IE9uIEJlaGFsZiBPZiBMYXN6bG8gRXJz ZWsNCj4gU2VudDogTW9uZGF5LCBNYXkgMTMsIDIwMTkgMzo0NiBBTQ0KPiBUbzogS2lubmV5LCBN aWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRrMi5ncm91 cHMuaW87IHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBSRkMgZm9yIEVkazItTGlicmFyeQ0KPiANCj4gT24gMDUvMTAvMTkgMDI6MDEsIEtpbm5l eSwgTWljaGFlbCBEIHdyb3RlOg0KPiA+IExhc3psbywNCj4gPg0KPiA+IDEpIFdlIGFsc28gdXNl IE9wZW5TU0wgY29tbWFuZCBsaW5lIHRvb2wgdG8gbG9jYWxseQ0KPiBzaWduDQo+ID4gICAgY2Fw c3VsZXMgYW5kIHJlY292ZXJ5IGltYWdlcyBmb3IgbG9jYWwgdGVzdGluZy4gIFNvDQo+IGJvdGgN Cj4gPiAgICB0b29sIGRlcGVuZGVuY3kgYW5kIHNvdXJjZSBkZXBlbmRlbmN5IGFwcGx5IHRvIHRo ZQ0KPiBPcGVuU1NMDQo+ID4gICAgY29udGVudC4NCj4gDQo+IEkgaGF2ZW4ndCB1c2VkIHRoZSB0 b29scyB5ZXQgdGhhdCB5b3UgcmVmZXIgdG8sIHNvIEknbQ0KPiB1bnN1cmUgaG93DQo+IGV4YWN0 bHkgdGhleSBpbnZva2UgdGhlICJvcGVuc3NsIiB1dGlsaXR5LiBJZiB0aGV5IGp1c3QNCj4gcmVs eSBvbiB0aGUgUEFUSA0KPiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlbiB3aGF0IHRoZXkgaW52 b2tlIGNvbWVzIGZyb20NCj4gdGhlIHN5c3RlbS13aWRlDQo+IG9wZW5zc2wgcGFja2FnZS4NCj4g DQo+ID4NCj4gPiAyKSBJZiBhIGRldiBzdWJtaXRzIGEgUFIsIGFuZCB0aGVyZSBhcmUgbWFueSBy ZXZpZXcNCj4gY29tbWVudHMNCj4gPiAgICB0aGF0IHJlcXVpcmUgY29kZSBjaGFuZ2VzLCB0aGVu IHRob3NlIGNvZGUgY2hhbmdlcw0KPiBhcmUNCj4gPiAgICBhZGRlZCB0byB0aGF0IFBSIHVudGls IGFsbCBmZWVkYmFjayBpcyBhZGRyZXNzZWQuDQo+IA0KPiBJIGRvbid0IHVuZGVyc3RhbmQgaG93 LiBMZXQncyBzYXkgdGhlIHB1bGwgcmVxdWVzdCByZWZlcnMNCj4gdG8gYSBicmFuY2gNCj4gd2l0 aCB0aHJlZSBjb21taXRzLCBhbmQgdGhlIG1ham9yaXR5IG9mIHRoZSByZXZpZXcNCj4gY29tbWVu dHMgcmVxdWVzdA0KPiB1cGRhdGVzIGZvciBwYXRjaCAjMiAoaS5lLiwgaW4gdGhlIG1pZGRsZSku IEhvdyBjYW4gdGhlDQo+IHN1Ym1pdHRlciAiYWRkDQo+IGNoYW5nZXMgdG8gdGhlIFBSIj8gSXQg aXMgcGF0Y2ggIzIgdGhhdCBuZWVkcyB0byBiZQ0KPiByZXdvcmtlZCwgd2hpY2ggd2lsbA0KPiBy ZXF1aXJlIHJlYmFzZXMsIGFuZCBzbyB0aGUgaGFzaCBvZiB0aGUgSEVBRCBjb21taXQgb2YNCj4g dGhlIHRvcGljIGJyYW5jaA0KPiAocGF0Y2ggIzMpIHdpbGwgY2hhbmdlIGFzIHdlbGwuDQo+IA0K PiA+ICAgIEF0IHRoYXQNCj4gPiAgICBwb2ludCwgaWYgdGhlIGNoYW5nZSBpcyBzb21ldGhpbmcg dGhhdCBzaG91bGQgYmUgaW4NCj4gYSBzaW5nbGUNCj4gPiAgICBjb21taXQsIHRoZW4gZG9pbmcg YSBzcXVhc2ggbWVyZ2Ugd2l0aCBhIGNsZWFuZWQgdXANCj4gY29tbWl0DQo+ID4gICAgbWVzc2Fn ZSB3b3VsZCBiZSBhcHByb3ByaWF0ZS4NCj4gDQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCAtLSB3ZSBt b2RpZnkgb25seSBwYXRjaCAjMiwgeWVzLCB0bw0KPiBhZGRyZXNzIHJldmlldw0KPiBjb21tZW50 cywgYnV0IHdoeSBkb2VzIHRoYXQganVzdGlmeSBzcXVhc2hpbmcgIzEgdGhyb3VnaA0KPiAjMyBp bnRvIGENCj4gc2luZ2xlIGNvbW1pdD8NCj4gDQo+ID4gICAgQW5kIHRoZSBoaXN0b3J5IG9mIGFs bCB0aGUNCj4gPiAgICByZXZpZXcgZmVlZGJhY2sgcHJlc2VydmVkIGluIHRoZSBQUi4NCj4gDQo+ IFRoYXQncyBnb29kIChidXQgaXQgY291bGQgYmUgYmV0dGVyIC0tIHNlZSB0aGUgbGFja2luZw0K PiBlbWFpbA0KPiBpbnRlZ3JhdGlvbi4gQW55d2F5IHRoaXMgaXMgbm90IHN0cmljdGx5IHRpZWQg dG8gbXkNCj4gY29uY2VybiB3aXRoDQo+IHNxdWFzaC1vbi1tZXJnZSkuDQo+IA0KPiA+DQo+ID4g ICAgSWYgd2UgY3JlYXRlIGEgMm5kIFBSIHdpdGggdGhlIGNsZWFuZWQgdXAgY29udGVudCwNCj4g dGhlbiB0aGUNCj4gPiAgICBjb25uZWN0aW9uIHRvIHRoZSAxc3QgUFIgZmVlZGJhY2sgbWF5IGJl IGxvc3QuICBJDQo+IGFncmVlIHRoaXMNCj4gPiAgICBtYXRjaGVzIHdoYXQgd2UgZG8gaW4gZW1h aWwgcmV2aWV3cyB0byBjcmVhdGUgYSBWMg0KPiBwYXRjaCBzZXJpZXMuDQo+ID4gICAgVGhlIFYx IGFuZCBWMiB0aHJlYWRzIGFyZSBpbiB0aGUgZW1haWwgYXJjaGl2ZS4NCj4gDQo+IEluZGVlZC4g QW5kIHRoZSBibHVyYiBmb3IgYm90aCB0aHJlYWRzIHJlZmVyZW5jZSB0aGUNCj4gYnVnemlsbGEs IGFuZCB0aGUNCj4gYnVnemlsbGEgaGFzIChpZiB0aGUgc3VibWl0dGVyIGlzIGNhcmVmdWwpIGNv bW1lbnRzDQo+IGxpbmtpbmcgdGhlIHYxIGFuZA0KPiB2MiB0aHJlYWRzIGZyb20gdGhlIGVtYWls IGFyY2hpdmUuDQo+IA0KPiA+ICAgIEkgd29uZGVyIGlmDQo+ID4gICAgdGhlcmUgaXMgYSB3YXkg dG8gbGluayBhIDJuZCBQUiB0byB0aGUgMXN0IFBSIGFuZA0KPiBndWFyYW50ZWUNCj4gPiAgICB0 aGF0IGJvdGggUFJzIGFyZSBwcmVzZXJ2ZWQ/ICBUaGlzIHdvdWxkIGFsc28gYWxsb3cNCj4gdGhl IDJuZA0KPiA+ICAgIGNsZWFuZWQgdXAgUFIgdG8gY29udGFpbiBhIHNlcmllcywgYW5kIGlmIHRo ZXJlIHdhcw0KPiBhIHdheSB0bw0KPiA+ICAgIG1ha2UgdGhlIHNxdWFzaCBtZXJnZSBvcHRpb25h bCwgdGhlbiB0aGUgZGV2ZWxvcGVyDQo+IGNhbiBjaG9vc2UNCj4gPiAgICB0aGUgd2F5IHRoZSBw YXRjaGVzIGFyZSBjb21taXR0ZWQuDQo+IA0KPiBUaGlzIHNvdW5kcyBncmVhdCEgSSB0aGluayBi b3RoIFBScyBjYW4gcmVmZXJlbmNlIHRoZQ0KPiBidWd6aWxsYSB0aWNrZXQsDQo+IGFuZCB0aGUg YnVnemlsbGEgdGlja2V0IGNhbiByZWZlcmVuY2UgYm90aCBQUnMgdG9vIChhcw0KPiBjb21tZW50 cykuIFRoZQ0KPiBmaXJzdCBQUiBjYW4gYmUgcmVqZWN0ZWQgJiBjbG9zZWQgd2hlbiB0aGUgc2Vj b25kIG9uZSBpcw0KPiBzdWJtaXR0ZWQuDQo+IA0KPiA+ICAgIEp1c3QgYSBmZXcgaWRlYXMgdG8g ZXhwbG9yZS4uLlBlcmhhcHMgU2VhbiBjYW4NCj4gcHJvdmlkZSBzb21lDQo+ID4gICAgYWRkaXRp b25hbCBpZGVhcyB0byBtYW5hZ2UgY29tcGxleCBjaGFuZ2VzIGluIFBScy4NCj4gDQo+IFRoYW5r cyENCj4gTGFzemxvDQo+IA0KPiA+DQo+ID4gQmVzdCByZWdhcmRzLA0KPiA+DQo+ID4gTWlrZQ0K PiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IExhc3psbyBF cnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiA+PiBTZW50OiBUaHVyc2RheSwgTWF5 IDksIDIwMTkgMzo1NiBQTQ0KPiA+PiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPjsNCj4gPj4gZGV2ZWxAZWRrMi5ncm91cHMuaW87IHNlYW4uYnJvZ2Fu QG1pY3Jvc29mdC5jb20NCj4gPj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBSRkMgZm9yIEVk azItTGlicmFyeQ0KPiA+Pg0KPiA+PiBPbiAwNS8wOS8xOSAyMDowNiwgS2lubmV5LCBNaWNoYWVs IEQgd3JvdGU6DQo+ID4+PiBIZWxsbywNCj4gPj4+DQo+ID4+PiBJdCBpcyBkaWZmaWN1bHQgdG8g dGVsbCBpZiB0aGUgcmVwbyBuYW1lIGVkazItbGlicmFyeQ0KPiA+PiBpcyBmb3IgZmlybXdhcmUN Cj4gPj4+IG9yIHRvb2xzLCBzbyBJIHJlY29tbWVuZCB3ZSB3b3JrIG9uIGEgbmFtZSB0aGF0DQo+ IGNsZWFybHkNCj4gPj4gaWRlbnRpZmllcw0KPiA+Pj4gdGhhdCB0aGlzIHJlcG8gaXMgcmVsYXRl ZCB0byB0b29scy4NCj4gPj4NCj4gPj4gR29vZCBpZGVhLg0KPiA+Pg0KPiA+Pj4gRm9yIHRoZSBw aXAgZGVwZW5kZW5jaWVzLCBpcyB0aGUgY29uY2VybiB0aGF0IGENCj4gPj4gcGxhdGZvcm0gdGhh dCBkZXBlbmRzDQo+ID4+PiBvbiB0aGVzZSB0b29scyB3aWxsIG5vdCBiZSBidWlsZGFibGUgd2l0 aG91dCBydW5uaW5nDQo+IGENCj4gPj4gInBpcCBpbnN0YWxsIg0KPiA+Pj4gY29tbWFuZCB0aGF0 IHB1bGxzIGNvbnRlbnQgZnJvbSB0aGUgbmV0d29yaz8NCj4gPj4NCj4gPj4gQWxtb3N0LiBOb3Qg ZXhhY3RseS4NCj4gPj4NCj4gPj4gRmlyc3QsIHRoZSBjb25jZXJuIGlzIG5vdCBzcGVjaWZpYyB0 byBhbnkgZ2l2ZW4NCj4gcGxhdGZvcm0uDQo+ID4+IE15DQo+ID4+IHVuZGVyc3RhbmRpbmcgaXMg dGhhdCB0aGUgZXh0cmFjdGlvbiB3b3VsZCB0YXJnZXQsIGluDQo+IHRoZQ0KPiA+PiBsb25nZXIg dGVybSwNCj4gPj4gZ2VuZXJhbCBCYXNlVG9vbHMgZnVuY3Rpb25hbGl0eS4gVGhhdCB3b3VsZCBp bXBhY3QgYWxsDQo+ID4+IHBsYXRmb3JtcyB0aGF0DQo+ID4+IGNvbnN1bWUgJiBidWlsZCBhZ2Fp bnN0IGVkazIuDQo+ID4+DQo+ID4+IFNlY29uZCwgaXQncyBub3QgdGhlIG5ldHdvcmsgYWNjZXNz IHRoYXQncyBjb25jZXJuaW5nDQo+IHBlcg0KPiA+PiBzZS4gSXQncyB0aGUNCj4gPj4gY29tcGF0 aWJpbGl0eSAvIGludGVyb3BlcmF0aW9uIHdpdGggYW55IGdpdmVuIExpbnV4DQo+ID4+IGRpc3Ry aWJ1dGlvbidzIG93bg0KPiA+PiAobmF0aXZlKSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtLiBT dWNoIGEgcGFja2FnZQ0KPiA+PiBtYW5hZ2VtZW50IHN5c3RlbSBpcw0KPiA+PiBnZW5lcmFsbHkg bm90IHVzZWQgb24gV2luZG93cywgdGhlcmVmb3JlIFdpbmRvd3MgdXNlcnMNCj4gPj4gYXJlIGFj Y3VzdG9tZWQgdG8NCj4gPj4gaW5zdGFsbGluZyBzb2Z0d2FyZSBwYWNrYWdlcyBmcm9tIGEgYm9h dGxvYWQgb2YNCj4gdmVuZG9ycy4NCj4gPj4gVGhpcyBpcyBub3QgdGhlDQo+ID4+IGNhc2Ugb24g TGludXggZGlzdHJvcyAtLSB5b3VyIGRpc3RybyB2ZW5kb3Igb2ZmZXJzIGENCj4gPj4gY3VyYXRl ZCBzZXQgb2YNCj4gPj4gcGFja2FnZXMsIHN1Y2ggdGhhdCBldmVyeXRoaW5nIGludGVyb3BlcmF0 ZXMgd2l0aA0KPiA+PiBldmVyeXRoaW5nIChpZGVhbGx5KSwNCj4gPj4gdGhlcmUgYXJlIG5vIGZp bGUgY29uZmxpY3RzLCB2ZXJzaW9uIGRlcGVuZGVuY2llcyBhcmUNCj4gPj4gaGFuZGxlZA0KPiA+ PiBhdXRvbWF0aWNhbGx5IChlLmcuIGlmIHlvdSBpbnN0YWxsIGEgaGlnaC1sZXZlbA0KPiBwYWNr YWdlLA0KPiA+PiBpdHMNCj4gPj4gZGVwZW5kZW5jaWVzIGFyZSBwdWxsZWQgaW4gYXV0b21hdGlj YWxseSksIGFuZCBzbyBvbi4NCj4gPj4NCj4gPj4gQ2xlYXJseSB0aGUgZGlzdHJvIHZlbmRvciBk b2VzIG5vdCAqYXV0aG9yKiBhbGwgdGhpcw0KPiA+PiBzb2Z0d2FyZSAoYWx0aG91Z2gNCj4gPj4g dGhleSBhcmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byBjb250cmlidXRlIHRvIHRoZQ0KPiA+PiB1 cHN0cmVhbSBzb2Z0d2FyZQ0KPiA+PiBwcm9qZWN0cyB0aGV5IHBhY2thZ2UgYW5kIHNoaXApLiBU aGUgZGlzdHJvIHZlbmRvciBpcw0KPiA+PiByZXNwb25zaWJsZSBmb3INCj4gPj4gdGhlIGludGVn cmF0aW9uIG9mIGFsbCB0aGVzZSBwYWNrYWdlcyBpbnRvIGENCj4gY29uc2lzdGVudA0KPiA+PiBP UywgaW50bw0KPiA+PiBjb25zaXN0ZW50IGZlYXR1cmUgc2V0cywgYW5kIHNvIG9uLg0KPiA+Pg0K PiA+PiAicGlwIiBhbmQgc2ltaWxhciB0b29scyBhcmUgZ2VuZXJhbGx5IHVuZml0IGZvciB0aGlz DQo+ID4+IGFwcHJvYWNoLCBiZWNhdXNlDQo+ID4+IHRoZXkgaW1wbGVtZW50IGEgcGFyYWxsZWwg cGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSwNCj4gdG8NCj4gPj4gbXkNCj4gPj4gdW5kZXJzdGFu ZGluZy4gSWYgdGhleSBhcmUgY2FyZWZ1bGx5IHVzZWQgaW4gYSB1c2VyJ3MNCj4gPj4gaG9tZSBk aXJlY3RvcnksDQo+ID4+IHRoZXkgbWlnaHQgd29yay4gSWYgcGFja2FnZXMgd2VyZSBpbnN0YWxs ZWQgd2l0aCAicGlwIg0KPiA+PiBzeXN0ZW0td2lkZSwgdGhleQ0KPiA+PiB3b3VsZCBhbG1vc3Qg Y2VydGFpbmx5IGJyZWFrIChjb25mbGljdCB3aXRoKSB0aGUNCj4gZGlzdHJvLQ0KPiA+PiBwcm92 aWRlZA0KPiA+PiBwYWNrYWdlcy4NCj4gPj4NCj4gPj4gVGhlcmVmb3JlLCB3aGVuIHVzZXJzIHdv dWxkIGxpa2UgdG8gZ2V0IGEgbmV3IHBpZWNlIG9mDQo+ID4+IHNvZnR3YXJlDQo+ID4+IHBhY2th Z2VkLCBvciBhbiBleGlzdGVudCBwYWNrYWdlIHJlZnJlc2hlZCAodG8gYSBtb3JlDQo+ID4+IHJl Y2VudCB1cHN0cmVhbQ0KPiA+PiB2ZXJzaW9uKSwgdGhleSBmaWxlIGEgZmVhdHVyZSByZXF1c3Qg d2l0aCB0aGVpciBkaXN0cm8NCj4gPj4gdmVuZG9yICh1bmxlc3MNCj4gPj4gdGhlIGRpc3RybyB2 ZW5kb3IgYWxyZWFkeSB0cmFja3MgdGhlIHVwc3RyZWFtIHByb2plY3QNCj4gPj4gY2xvc2VseSBh bmQNCj4gPj4gcGVyZm9ybXMgcGVyaW9kaWMgcmViYXNlcyBhbnl3YXkpLiBUaGVuIHRoZSBkaXN0 cm8NCj4gdmVuZG9yDQo+ID4+IHNoaXBzIGEgbmV3DQo+ID4+IChvciByZWZyZXNoZWQpIHBhY2th Z2UsIGFnYWluIG5pY2VseSBpbnRlZ3JhdGVkIHdpdGgNCj4gdGhlDQo+ID4+IHJlc3Qgb2YgdGhl DQo+ID4+IHN5c3RlbS4NCj4gPj4NCj4gPj4+IFdlIGFscmVhZHkgaGF2ZSB0byBwdWxsIGNvbnRl bnQgdG8gZ2V0IHRoZSBzb3VyY2VzDQo+IGFuZA0KPiA+PiBwb3RlbnRpYWxseQ0KPiA+Pj4gb3Ro ZXIgZGVwZW5kZW50IHRvb2xzIChOQVNNLCBpQVNMLCBvcGVuc3NsKS4NCj4gPj4NCj4gPj4gWWVz LCB0aGVzZSBhcmUgZ29vZCBleGFtcGxlcyB0byBkZW1vbnN0cmF0ZSB0aGUNCj4gPj4gZGlmZmVy ZW5jZS4gQ29uc2lkZXINCj4gPj4gTkFTTS4gSWYgYSBXaW5kb3dzIHVzZXIgd291bGQgbGlrZSB0 byBpbnN0YWxsIE5BU00sDQo+IHRoZXkNCj4gPj4gZ29vZ2xlICJOQVNNDQo+ID4+IGZvciBXaW5k b3dzIiwgdGhlbiBnbyB0bzoNCj4gPj4NCj4gPj4NCj4gaHR0cHM6Ly93d3cubmFzbS51cy9wdWIv bmFzbS9yZWxlYXNlYnVpbGRzLzIuMTQuMDIvd2luNjQvDQo+ID4+DQo+ID4+IGRvd25sb2FkIHRo ZSBaSVAgZmlsZSBvciBFWEUgZmlsZSwgYW5kIGluc3RhbGwgaXQuDQo+ID4+DQo+ID4+IEluIGNv bXBhcmlzb24sIGEgRmVkb3JhIHVzZXIgcnVucw0KPiA+Pg0KPiA+PiAgIGRuZiBpbnN0YWxsIG5h c20NCj4gPj4NCj4gPj4gYW5kIHRoZXkgZ2V0IHRoZSBwYWNrYWdlIGZyb20gdGhlIEZlZG9yYSBw YWNrYWdlDQo+ID4+IHJlcG9zaXRvcnkuIEEgRGViaWFuDQo+ID4+IHVzZXIgd291bGQgcnVuDQo+ ID4+DQo+ID4+ICAgYXB0LWdldCBpbnN0YWxsIG5hc20NCj4gPj4NCj4gPj4gYW5kIHRoZXkgd291 bGQgZ2V0IHRoZSBwYWNrYWdlICh3aGljaCB3b3VsZCBiZQ0KPiBlbnRpcmVseQ0KPiA+PiBpbmRl cGVuZGVudCBvZg0KPiA+PiBGZWRvcmEncykgZnJvbSB0aGUgRGViaWFuIHBhY2thZ2UgcmVwb3Np dG9yeS4NCj4gPj4NCj4gPj4gVGhlIHZhcmlvdXMgKkJTRHMgd291bGQgcnVuIGEgdmFyaWFudCBv Zg0KPiA+Pg0KPiA+PiAgIHBrZ19hZGQgbmFzbQ0KPiA+Pg0KPiA+PiBJIGJlbGlldmUuDQo+ID4+ DQo+ID4+IFRoZSBzYW1lIGFwcGxpZXMgdG8gaUFTTC4NCj4gPj4NCj4gPj4NCj4gPj4gT3BlblNT TCBpcyBhIHNwZWNpYWwgY2FzZS4gSXQgaXMgZGlmZmVyZW50IGZyb20gTkFTTQ0KPiBhbmQNCj4g Pj4gaUFTTC4gTkFTTSBhbmQNCj4gPj4gaUFTTCBhcmUgbmF0aXZlIChob3N0ZWQpIGFwcGxpY2F0 aW9ucywgc28gYW55IExpbnV4DQo+ID4+IGRpc3RybyBjYW4gZWFzaWx5DQo+ID4+IGJ1aWxkIHRo ZW0gKGZvciBpdHNlbGYpLCBhbmQgdGhlIGJpbmFyaWVzIGNhbiBiZQ0KPiBzaGlwcGVkDQo+ID4+ IHRvIHVzZXJzLCByZWFkeQ0KPiA+PiB0byBydW4uIEJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGVk azIsIE9wZW5TU0wgaXMgbm90DQo+ID4+IG5lZWRlZCBhcyBhIG5hdGl2ZQ0KPiA+PiAoaG9zdGVk KSB1dGlsaXR5LCBsaWtlIE5BU00gYW5kIGlBU0wgLS0gaXQgaXMgbmVlZGVkDQo+IGFzIGENCj4g Pj4gKmNyb3NzLWJ1aWx0Kg0KPiA+PiBzdGF0aWMgbGlicmFyeSwgdGFyZ2V0aW5nIHRoZSBmaXJt d2FyZSBhcmNoaXRlY3R1cmUNCj4gKG5vdA0KPiA+PiB0aGUgaG9zdA0KPiA+PiBhcmNoaXRlY3R1 cmUpLiBVbmZvcnR1bmF0ZWx5LCBPcGVuU1NMICh0aGUgdXBzdHJlYW0NCj4gPj4gcHJvamVjdCkg ZG9lcyBub3QNCj4gPj4gZnVsbHkgc3VwcG9ydCB0aGlzIHVzZSBjYXNlIHlldCwgdGhlcmVmb3Jl IExpbnV4DQo+IGRpc3Ryb3MNCj4gPj4gY2Fubm90IGp1c3QNCj4gPj4gY3Jvc3MtY29tcGlsZSBP cGVuU1NMIGZvciBlZGsyLCBhbmQgb2ZmZXIgc3RhdGljDQo+IGxpYnJhcnkNCj4gPj4gcGFja2Fn ZXMuIFRoaXMNCj4gPj4gaXMgd2h5IHVwc3RyZWFtIGVkazIgY29uc3VtZXMgT3BlblNTTCB0aHJv dWdoIGEgZ2l0DQo+ID4+IHN1Ym1vZHVsZSwgaW4gc291cmNlDQo+ID4+IGZvcm0uDQo+ID4+DQo+ ID4+ICpIb3dldmVyKjogY29uY2VwdHVhbGx5LCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlLiBJbg0K PiA+PiBGZWRvcmEgYW5kIFJIRUwsIHdlDQo+ID4+IGRvbid0IGJ1aWxkIE9WTUYgYWdhaW5zdCB1 cHN0cmVhbSBPcGVuU1NMLiBXZSBidWlsZCBpdA0KPiA+PiBhZ2FpbnN0IHRoZQ0KPiA+PiBkb3du c3RyZWFtIE9wZW5TU0wgc291cmNlIGNvZGUuIFNvIHVsdGltYXRlbHkgdGhlcmUgaXMNCj4gbm8N Cj4gPj4gZGlmZmVyZW5jZSBpbg0KPiA+PiB0aGUgZGlzdHJvIHZlbmRvcidzIGFwcHJvYWNoIC0t IHRoZSBzb3VyY2VzIGFuZCB0aGUNCj4gPj4gYmluYXJpZXMgY29tZSBmcm9tDQo+ID4+IHRoZSBk aXN0cm8gdmVuZG9yLg0KPiA+Pg0KPiA+Pg0KPiA+PiBTbyB3aGF0IGZvbGxvd3MgZnJvbSB0aGlz PyBJdCBtZWFucyB0aGF0LCBmb3IgdXNpbmcNCj4gPj4gQmFzZVRvb2xzIG9uIGEgTGludXgNCj4g Pj4gZGlzdHJvLCB1c2VycyB3aWxsIGhhdmUgdG8gaW5zdGFsbCBzb21lIGV4dHJhIFB5dGhvbg0K PiA+PiBwYWNrYWdlcywgaW4NCj4gPj4gYWRkaXRpb24gdG8gTkFTTSBhbmQgaUFTTCwgZnJvbSB0 aGVpciB2ZW5kb3Incw0KPiA+PiByZXBvc2l0b3J5LiBJbiBvdGhlcg0KPiA+PiB3b3JkcywgdGhl ICJlZGsyLWxpYnJhcnkiIChvciAiZWRrMi10b29scyIpIHByb2plY3QNCj4gPj4gc2hvdWxkIGRv IHVwc3RyZWFtDQo+ID4+IHJlbGVhc2VzLCBzbyB0aGF0IExpbnV4IGRpc3Ryb3MgY2FuIHBhY2th Z2UgdGhlbSBpbg0KPiB0aGVpcg0KPiA+PiBuYXRpdmUgcGFja2FnZQ0KPiA+PiBzeXN0ZW1zLiBB bmQgc29tZSBjb2xsYWJvcmF0aW9uIGJldHdlZW4gdXBzdHJlYW0gYW5kDQo+ID4+IGRvd25zdHJl YW1zIGlzDQo+ID4+IGV4cGVjdGVkIGZvciB0aGlzLiAoRXhhY3RseSBhcyBpdCBvY2N1cnMgd2l0 aCB0aGUgaUFTTA0KPiA+PiBhbmQgTkFTTSB1cHN0cmVhbQ0KPiA+PiBwcm9qZWN0cy4pDQo+ID4+ DQo+ID4+PiBDYW4gd2UgbGltaXQgdGhlIGluaXRpYWwgc2NvcGUgdG8gdG9vbHMgdGhhdCBsYXll ciBvbg0KPiA+PiB0b3Agb2YgZWRrMiwgYW5kDQo+ID4+PiBhIGRpZmZlcmVudCBmdXR1cmUgUkZD IHdvdWxkIGJlIHJlcXVpcmVkIGlmIHRoZXJlIGlzDQo+IGENCj4gPj4gcHJvcG9zYWwgZm9yDQo+ ID4+PiB0aGUgZWRrMiByZXBvIHRvIGRlcGVuZCBvbiBhbm90aGVyIHJlcG8/DQo+ID4+DQo+ID4+ IFllcywgdGhhdCB3b3VsZCBiZSB2ZXJ5IG5pY2UuDQo+ID4+DQo+ID4+PiBJZiB3ZSBhY2NlcHQg dGhpcyBsaW1pdGVkIHNjb3BlLCBhcmUgdGhlcmUgc3RpbGwNCj4gPj4gY29uY2VybnMgYWJvdXQN Cj4gPj4+IGluaXRpYWxseSB1c2luZyBzcXVhc2ggY29tbWl0cyBmb3IgY2hhbmdlcyB0byB0aGVz ZQ0KPiA+PiB0b29scy4NCj4gPj4NCj4gPj4gWWVzLCBJIHN0aWxsIGhhdmUgdGhlIHNhbWUgY29u Y2VybiAtLSBhbHRob3VnaCBpdCdzIGENCj4gPj4gbWlsZGVyIGNvbmNlcm4sDQo+ID4+IGRlcGVu ZGVudCBvbiBob3cgbG9uZyBzcXVhc2ggbWVyZ2VzIGFyZSB0b2xlcmF0ZWQuDQo+ID4+DQo+ID4+ IEFzc3VtZSB0aGF0IGEgc2Vjb25kLCBzZXBhcmF0ZSBSRkMgZ2V0cyBwb3N0ZWQgZG93bg0KPiB0 aGUNCj4gPj4gcm9hZCwgbGV0J3Mgc2F5DQo+ID4+IGEgeWVhciBpbiwgd2hpY2ggcHJvcG9zZXMg dG8gcmVwbGFjZSB0aGUgaW4tbGluZQ0KPiA+PiBjb21wb25lbnQgRm9vQmFyIG9mDQo+ID4+IEJh c2VUb29scywgd2l0aCB0aGUgZXh0ZXJuYWwgcHJvamVjdCAiZWRrMi1saWJyYXJ5Ig0KPiAob3IN Cj4gPj4gImVkazItdG9vbHMiKS4NCj4gPj4gQXQgdGhhdCBwb2ludCwgdGhlIGdpdCBoaXN0b3J5 IGFjY3J1ZWQgdGh1cyBmYXIsIGluDQo+IGVkazItDQo+ID4+IHRvb2xzLCB3b3VsZA0KPiA+PiBz dWRkZW5seSBiZSBpbmhlcml0ZWQgYnkgYWxsIEJhc2VUb29scyB1c2Vycy4gQW5kIHRoYXQNCj4g Pj4gaGlzdG9yeSB3b3VsZG4ndA0KPiA+PiBiZSByZWFsbHkgaGVscGZ1bC4NCj4gPj4NCj4gPj4g Rm9yIGFuIGV4YW1wbGUsIHdlIG5lZWQgbm90IGxvb2sgcGFzdCB0aGUgZWRrMg0KPiByZXBvc2l0 b3J5DQo+ID4+IGl0c2VsZi4gTGV0J3MNCj4gPj4gc2F5IEknZCBsaWtlIHRvIGxlYXJuIGFib3V0 IHRoZSBpbXBsZW1lbnRhdGlvbiBoaXN0b3J5DQo+IG9mDQo+ID4+IHRoZQ0KPiA+PiBIYW5kbGVQ cm90b2NvbCgpIGJvb3Qgc2VydmljZSwgaW4gZWRrMi4gU28gSSBydW46DQo+ID4+DQo+ID4+ICQg Z2l0IGJsYW1lIG1hc3RlciAtLQ0KPiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUu Yw0KPiA+Pg0KPiA+PiBhbmQgSSBsb29rIHVwIHRoZSBDb3JlSGFuZGxlUHJvdG9jb2woKSBmdW5j dGlvbiwgYW5kDQo+IGZpbmQNCj4gPj4gdGhpczoNCj4gPj4NCj4gPj4+IDI4YTAwMjk3MTg5YzMg TWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAgICAg ICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTMxKQ0KPiA+PiBFRklfU1RBVFVTDQo+ID4+ PiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ID4+ ICh5c2hhbmcxICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzMikNCj4gRUZJ QVBJDQo+ID4+PiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRs ZS5jDQo+ID4+ICh5c2hhbmcxICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkz MykNCj4gPj4gQ29yZUhhbmRsZVByb3RvY29sICgNCj4gPj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9k dWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAgICAgICAgMjAw Ny0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTM0KSAgIElODQo+ID4+IEVGSV9IQU5ETEUgICAgICAg VXNlckhhbmRsZSwNCj4gPj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hh bmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCAr MDAwMCAgOTM1KSAgIElODQo+ID4+IEVGSV9HVUlEICAgICAgICAgKlByb3RvY29sLA0KPiA+Pj4g MjhhMDAyOTcxODljMyBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiA+PiAo eXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEwOjUxOjU0ICswMDAwICA5MzYpDQo+IE9VVA0K PiA+PiBWT0lEICAgICAgICAgICAgKipJbnRlcmZhY2UNCj4gPj4+IDI4YTAwMjk3MTg5YzMgTWRl TW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAgICAgICAg MjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTM3KSAgICkNCj4gPj4+IDI4YTAwMjk3MTg5YzMg TWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAgICAg ICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTM4KSB7DQo+ID4+PiAyOGEwMDI5NzE4OWMz IE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ID4+ICh5c2hhbmcxICAgICAg ICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzOSkNCj4gPj4gcmV0dXJuIENvcmVPcGVu UHJvdG9jb2wgKA0KPiA+Pj4gMDIyYzZkNDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFu ZC9IYW5kbGUuYw0KPiA+PiAocWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0OjQ1ICsw MDAwICA5NDApDQo+ID4+IFVzZXJIYW5kbGUsDQo+ID4+PiAwMjJjNmQ0NWVmNzg2IE1kZU1vZHVs ZVBrZy9Db3JlL0R4ZS9IYW5kL0hhbmRsZS5jDQo+ID4+IChxaHVhbmc4ICAgICAgICAgIDIwMDgt MDctMjQgMDI6NTQ6NDUgKzAwMDAgIDk0MSkNCj4gPj4gUHJvdG9jb2wsDQo+ID4+PiAwMjJjNmQ0 NWVmNzg2IE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL0hhbmRsZS5jDQo+ID4+IChxaHVhbmc4 ICAgICAgICAgIDIwMDgtMDctMjQgMDI6NTQ6NDUgKzAwMDAgIDk0MikNCj4gPj4gSW50ZXJmYWNl LA0KPiA+Pj4gMDIyYzZkNDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUu Yw0KPiA+PiAocWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0OjQ1ICswMDAwICA5NDMp DQo+ID4+IGdEeGVDb3JlSW1hZ2VIYW5kbGUsDQo+ID4+PiAwMjJjNmQ0NWVmNzg2IE1kZU1vZHVs ZVBrZy9Db3JlL0R4ZS9IYW5kL0hhbmRsZS5jDQo+ID4+IChxaHVhbmc4ICAgICAgICAgIDIwMDgt MDctMjQgMDI6NTQ6NDUgKzAwMDAgIDk0NCkNCj4gPj4gTlVMTCwNCj4gPj4+IDI4YTAwMjk3MTg5 YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAg ICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTQ1KQ0KPiA+PiBFRklfT1BFTl9QUk9U T0NPTF9CWV9IQU5ETEVfUFJPVE9DT0wNCj4gPj4+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtn L0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gPj4gKHlzaGFuZzEgICAgICAgICAgMjAwNy0wNy0w NCAxMDo1MTo1NCArMDAwMCAgOTQ2KQ0KPiA+PiApOw0KPiA+Pj4gMjhhMDAyOTcxODljMyBNZGVN b2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiA+PiAoeXNoYW5nMSAgICAgICAgICAy MDA3LTA3LTA0IDEwOjUxOjU0ICswMDAwICA5NDcpIH0NCj4gPj4NCj4gPj4gSW50ZXJlc3Rpbmcs IGl0IHNlZW1zIGxpa2UgdGhlIGZ1bmN0aW9uIHdhcyBvcmlnaW5hbGx5DQo+ID4+IGFkZGVkIGlu IGNvbW1pdA0KPiA+PiAyOGEwMDI5NzE4OWMzLCBhbmQgdGhlbiB0aGUgYXJndW1lbnQgbGlzdCB3 YXMgbW9kaWZpZWQNCj4gaW4NCj4gPj4gY29tbWl0DQo+ID4+IDAyMmM2ZDQ1ZWY3ODYsIGEgeWVh ciBsYXRlci4gU28gbGV0J3MgY2hlY2sgb3V0IHRoZQ0KPiA+PiByYXRpb25hbGUgZm9yIHRoYXQN Cj4gPj4gYXJndW1lbnQgbGlzdCB1cGRhdGU6DQo+ID4+DQo+ID4+ICQgZ2l0IHNob3cgLS1jb2xv ciAwMjJjNmQ0NWVmNzg2DQo+ID4+DQo+ID4+IFdlbGwuLi4gVGhlIGNvbW1pdCBtZXNzYWdlIHNh eXMsICJDb2RlIFNjcnViIGZvciBEeGUNCj4gPj4gQ29yZSIuIFRoYXQncyBhbGwuDQo+ID4+IFdl IGFsc28gbGVhcm4gaXQgY29tZXMgZnJvbSBTVk4gcmV2aXNpb24gNTU2MC4gQW5kIHRoZQ0KPiA+ PiBkaWZmc3RhdCBmb3IgdGhlDQo+ID4+IHBhdGNoIGlzOg0KPiA+Pg0KPiA+Pj4gIDM4IGZpbGVz IGNoYW5nZWQsIDI0OTkgaW5zZXJ0aW9ucygrKSwgMjUwNA0KPiBkZWxldGlvbnMoLQ0KPiA+PiAp DQo+ID4+DQo+ID4+IEl0IGlzIG5vdCBvdmVybHkgaGVscGZ1bC4NCj4gPj4NCj4gPj4gQ2xlYXJs eSwgQ29yZUhhbmRsZVByb3RvY29sKCkgaXMgYSBzdXBlci1yb2J1c3QsDQo+IHN1cGVyLQ0KPiA+ PiBtYXR1cmUgZnVuY3Rpb24sDQo+ID4+IHNvIHdlIGRvbid0IHJlYWxseSBjYXJlIGZvciBpdHMg ZGV2ZWxvcG1lbnQgaGlzdG9yeQ0KPiA+PiB0b2RheS4NCj4gPj4NCj4gPj4gSSBiZWxpZXZlIHRo ZSBzYW1lIHdvdWxkIG5vdCBhcHBseSB0byB0aGUgImVkazItDQo+IGxpYnJhcnkiDQo+ID4+IChv cg0KPiA+PiAiZWRrMi10b29scyIpIHByb2plY3QuIFdoZW4gaXQgcmVwbGFjZWQgdGhlIGluLWxp bmUNCj4gPj4gY29tcG9uZW50IEZvb0JhciBvZg0KPiA+PiBCYXNlVG9vbHMsIGl0J3MgcGxhdXNp YmxlIGl0IHdvdWxkIGJlIHN1ZGRlbmx5IGV4cG9zZWQNCj4gdG8NCj4gPj4gYSBsYXJnZXINCj4g Pj4gdXNlcmJhc2UuIE5ldyBpc3N1ZXMgd291bGQgYmUgZW5jb3VudGVyZWQsIGFuZCBwZW9wbGUN Cj4gPj4gbWlnaHQgd2FudCB0byBsb29rDQo+ID4+IGF0IHRoZSBnaXQgaGlzdG9yeSAtLSBpZiBm b3Igbm90aGluZyBlbHNlLCB0aGVuDQo+IHJhdGlvbmFsZQ0KPiA+PiAoY29tbWl0DQo+ID4+IG1l c3NhZ2VzKSBvbiBzbWFsbCBwYXJ0cyBvZiB0aGUgY29kZS4NCj4gPj4NCj4gPj4NCj4gPj4gSSBj YW4gYWxzbyBuYW1lIG1vcmUgcmVjZW50IGV4YW1wbGVzLiBJJ20gbm90IGENCj4gZnJlcXVlbnQN Cj4gPj4gQmFzZVRvb2xzDQo+ID4+IGNvbnRyaWJ1dG9yLCBidXQgaXQgaGFzIGhhcHBlbmVkIG9j Y2FzaW9uYWxseS4gKEkndmUNCj4gZ290DQo+ID4+IDQxIHBhdGNoZXMgaW4NCj4gPj4gdGhlIGVk azIgZ2l0IGhpc3RvcnkgdGhhdCB0b3VjaGVkIEJhc2VUb29scy8sIGFzIG9mDQo+ID4+IGNvbW1p dA0KPiA+PiAwYTUwNmZjN2FiOGIuKQ0KPiA+Pg0KPiA+PiAqIEZvcg0KPiA+PiA8aHR0cHM6Ly9i dWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTQwMjQ0PiwNCj4gSQ0KPiA+PiBw dXNoZWQNCj4gPj4gICA1KzEgcGF0Y2hlczoNCj4gPj4NCj4gPj4gICAgIDY3OTgzNDg0YTQ0MyBC YXNlVG9vbHMvZm9vdGVyLm1ha2VmaWxlOiBleHBhbmQNCj4gPj4gQlVJTERfQ0ZMQUdTIGxhc3Qg Zm9yIEMgZmlsZXMgdG9vDQo+ID4+ICAgICAwMzI1MmFlMjg3YzQgQmFzZVRvb2xzL2hlYWRlci5t YWtlZmlsZTogcmVtb3ZlICItDQo+IGMiDQo+ID4+IGZyb20gQlVJTERfQ0ZMQUdTDQo+ID4+ICAg ICBiOGE2NjE3MDI2NDMgQmFzZVRvb2xzL1NvdXJjZS9DOiBzcGxpdCAiLU8yIiB0bw0KPiA+PiBC VUlMRF9PUFRGTEFHUw0KPiA+PiAgICAgYjBjYTVkYWU3OGZmIEJhc2VUb29scy9Tb3VyY2UvQzog dGFrZQ0KPiBFWFRSQV9PUFRGTEFHUw0KPiA+PiBmcm9tIHRoZSBjYWxsZXINCj4gPj4gICAgIDgx NTAyY2VlMjBhYyBCYXNlVG9vbHMvU291cmNlL0M6IHRha2UNCj4gRVhUUkFfTERGTEFHUw0KPiA+ PiBmcm9tIHRoZSBjYWxsZXINCj4gPj4gICAgICsNCj4gPj4gICAgIGFhNGUwZGYxZjBjNyBCYXNl VG9vbHMvVmZyQ29tcGlsZTogaG9ub3INCj4gPj4gRVhUUkFfTERGTEFHUw0KPiA+Pg0KPiA+PiAq IEZvcg0KPiA+PiA8aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9p ZD0xMzc3PiwNCj4gSQ0KPiA+PiBwdXNoZWQgMjYNCj4gPj4gICBwYXRjaGVzOg0KPiA+Pg0KPiA+ PiAgICAgOGZmMTIyMTE5OTQxIEVtdWxhdG9yUGtnOiByZXF1aXJlIEdDQzQ4IG9yIGxhdGVyDQo+ ID4+ICAgICA4ZDdjZGZhZThjYjggT3ZtZlBrZzogcmVxdWlyZSBHQ0M0OCBvciBsYXRlcg0KPiA+ PiAgICAgZmQxNTg0MzdkY2NlIFZsdjJUYmx0RGV2aWNlUGtnOiBhc3N1bWUgR0NDNDggb3INCj4g bGF0ZXINCj4gPj4gICAgIDdhOWRiZjJjOTRkMSBCYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVt cGxhdGU6DQo+IGRyb3ANCj4gPj4gQVJNL0FBUkNIIHN1cHBvcnQgZnJvbSBHQ0M0Ni9HQ0M0Nw0K PiA+PiAgICAgNDhlNjQ0OThjOTYxIEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6IGZpeCB1 cA0KPiBMRi0NCj4gPj4gb25seSBsaW5lIHRlcm1pbmF0b3INCj4gPj4gICAgIDczODFhNjYyN2E2 NiBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOiBzdHJpcA0KPiA+PiB0cmFpbGluZyB3aGl0 ZXNwYWNlDQo+ID4+ICAgICA5YmJmMTU2ZmFhYWQgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0 ZTogcmVtb3ZlDQo+ID4+IEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiBkZWFkLWVuZA0KPiA+ PiAgICAgM2M1NjEzYzU5MzJjIEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6IHJlbW92ZQ0K PiA+PiBHQ0M0NyBsZWFmIGRlZmluaXRpb25zDQo+ID4+ICAgICBmYzg3YjhkN2Y0MTEgQmFzZVRv b2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4gcHJvcGFnYXRlDQo+ID4+IGxvc3Mgb2YgR0NDNDcg cmVmZXJlbmNlcw0KPiA+PiAgICAgOTFhNjdlMGYxMTFlIEJhc2VUb29scy90b29sc19kZWYudGVt cGxhdGU6IHJlbW92ZQ0KPiA+PiBHQ0M0NyBkb2N1bWVudGF0aW9uDQo+ID4+ICAgICAwZjIzNGZi OGE2NjIgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogcmVtb3ZlDQo+ID4+IEdDQzQ2IGxl YWYgZGVmaW5pdGlvbnMNCj4gPj4gICAgIDgzYThmMzEzODg0YSBCYXNlVG9vbHMvdG9vbHNfZGVm LnRlbXBsYXRlOg0KPiBwcm9wYWdhdGUNCj4gPj4gbG9zcyBvZiBHQ0M0NiByZWZlcmVuY2VzDQo+ ID4+ICAgICBiZTM1OWZhN2NlZWMgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogcmVtb3Zl DQo+ID4+IEdDQzQ2IGRvY3VtZW50YXRpb24NCj4gPj4gICAgIDE0NThhZjBjYmNlMCBCYXNlVG9v bHMvdG9vbHNfZGVmLnRlbXBsYXRlOiByZW1vdmUNCj4gPj4gR0NDNDUgbGVhZiBkZWZpbml0aW9u cw0KPiA+PiAgICAgMDI0NTc2ODk2ZDQyIEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6DQo+ IHByb3BhZ2F0ZQ0KPiA+PiBsb3NzIG9mIEdDQzQ1IHJlZmVyZW5jZXMNCj4gPj4gICAgIDNlNzdk MjBmNWNiMyBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOiByZW1vdmUNCj4gPj4gR0NDNDUg ZG9jdW1lbnRhdGlvbg0KPiA+PiAgICAgZTA0NmRjNjBmYjg5IEJhc2VUb29scy90b29sc19kZWYu dGVtcGxhdGU6IHJlbW92ZQ0KPiA+PiBHQ0M0NCBsZWFmIGRlZmluaXRpb25zDQo+ID4+ICAgICAz OGM1NzBlZmVkZTAgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZToNCj4gcHJvcGFnYXRlDQo+ ID4+IGxvc3Mgb2YgR0NDNDQgcmVmZXJlbmNlcw0KPiA+PiAgICAgMzgzZDI5MDk2ODQ2IEJhc2VU b29scy90b29sc19kZWYudGVtcGxhdGU6IHJlbmFtZQ0KPiA+PiBHQ0M0NF9BTExfQ0NfRkxBR1Mg dG8gR0NDNDhfQUxMX0NDX0ZMQUdTDQo+ID4+ICAgICAwZGI5MWRhZjUyMjggQmFzZVRvb2xzL3Rv b2xzX2RlZi50ZW1wbGF0ZToNCj4gZWxpbWluYXRlDQo+ID4+IEdDQzQ0X0lBMzJfWDY0X0RMSU5L X0ZMQUdTDQo+ID4+ICAgICA4NGQyMWFiZjRlMzYgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0 ZTogcmVuYW1lDQo+ID4+IEdDQzQ0X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiB0bw0KPiA+PiBHQ0M0 OF9JQTMyX1g2NF9ETElOS19DT01NT04NCj4gPj4gICAgIDVjNmNjZDUzMjQ0YiBCYXNlVG9vbHMv dG9vbHNfZGVmLnRlbXBsYXRlOiByZW1vdmUNCj4gPj4gY29tbWVudCBhYm91dCBHQ0M0NCArIEx6 bWFGODZDb21wcmVzcw0KPiA+PiAgICAgM2JjNjUzMjZkNmVkIEJhc2VUb29scy90b29sc19kZWYu dGVtcGxhdGU6IHJlbW92ZQ0KPiA+PiBHQ0M0NCBkb2N1bWVudGF0aW9uDQo+ID4+ICAgICBmNzI4 MjAyM2U3NTggQXJtUGtnL0FybVNvZnRGbG9hdExpYjogZHJvcCBidWlsZA0KPiBmbGFncw0KPiA+ PiBzcGVjaWZpYyB0byBHQ0M0Ni9HQ0M0Nw0KPiA+PiAgICAgMzAwYjhjNWYxNTBjIENyeXB0b1Br Zy9CYXNlQ3J5cHRMaWI6IGRyb3AgYnVpbGQNCj4gZmxhZ3MNCj4gPj4gc3BlY2lmaWMgdG8gR0ND NDQNCj4gPj4gICAgIDc0MjNiYTlkNDk5YiBSZXZlcnQgIk1kZVBrZzogYXZvaWQNCj4gPj4gX19i dWlsdGluX3VucmVhY2hhYmxlKCkgb24gR0NDIHY0LjQiDQo+ID4+DQo+ID4+ICAgKE5vdGUsIGZy b20gdGhpcyBsaXN0LCA3YTlkYmYyYzk0ZDEgd2FzIGF1dGhvcmVkIGJ5DQo+ID4+IEFyZCwgSSBq dXN0DQo+ID4+ICAgaW5jbHVkZWQgaXQgYXQgdGhlIHJpZ2h0IHNwb3QuKQ0KPiA+Pg0KPiA+PiBB bGwgb2YgdGhlc2UgcGF0Y2ggc2VyaWVzIHdlcmUgY2FyZWZ1bGx5IHN0cnVjdHVyZWQsDQo+IGFu ZA0KPiA+PiBjYXJlZnVsbHkNCj4gPj4gZG9jdW1lbnRlZCAoaW4gdGhlIGNvbW1pdCBtZXNzYWdl cykuIEkgd291bGQgaGF2ZSBiZWVuDQo+ID4+IGRldmFzdGF0ZWQsIGhhZA0KPiA+PiB0aGV5IGJl ZW4gc3F1YXNoZWQuDQo+ID4+DQo+ID4+IChBbmQgaXQgd291bGQgaGF2ZSBiZWVuIHF1ZXN0aW9u YWJsZSB0byBzcXVhc2ggQXJkJ3MNCj4gPj4gcGF0Y2ggd2l0aCBwYXRjaGVzDQo+ID4+IGF1dGhv cmVkIGJ5IG1lLikNCj4gPj4NCj4gPj4NCj4gPj4+IElzIHRoZXJlIGEgd2F5IGZvciBHaXRIdWIg dG8gc3VwcG9ydCBib3RoIHNxdWFzaA0KPiA+PiBjb21taXRzIGZvciBzb21lIFBScw0KPiA+Pj4g YW5kIHByZXNlcnZlIGEgcGF0Y2ggc2VyaWVzIGZvciBvdGhlciBQUnM/DQo+ID4+DQo+ID4+IEkg ZG9uJ3Qga25vdy4NCj4gPj4NCj4gPj4gQnV0IGhvbmVzdGx5LCB3aGF0IGlzIHRoZSBwdXJwb3Nl IG9mIHNxdWFzaCBtZXJnZXM/DQo+IERvbid0DQo+ID4+IHdlIGV4cGVjdA0KPiA+PiAqYWxsKiBj b250cmlidXRpb25zIGluIHdlbGwgc3RydWN0dXJlZCBwYXRjaCBzZXJpZXM/DQo+ID4+DQo+ID4+ IElmIHJldmlldyBkaXNjb3ZlcnMgYW4gaXNzdWUgd2l0aCB0aGUgc3RydWN0dXJlIG9mIHRoZQ0K PiA+PiBzZXJpZXMgKGZvcg0KPiA+PiBleGFtcGxlLCBub3QgYnVpbGRhYmxlIGluIHRoZSBtaWRk bGUsIG9yIHRoZSBzdGVwcyBhcmUNCj4gPj4gbm90IGxvZ2ljYWwgaW4NCj4gPj4gdGhhdCBvcmRl ciwgb3Igc29tZSBwYXRjaGVzIGRvIHRvbyBtYW55IHRoaW5ncyBhdCBvbmNlDQo+ID4+IGFuZCBz aG91bGQgYmUNCj4gPj4gc3BsaXQgdXAsIG9yIGEgcGF0Y2ggaW4gdGhlIG1pZGRsZSBoYXMgYSB0 eXBvKSwgdGhlDQo+IGZpeGVzDQo+ID4+IHNob3VsZG4ndCBiZQ0KPiA+PiBqdXN0IGhlYXBlZCBv biB0b3AuIFRoZSBzdWJtaXR0ZXIgc2hvdWxkIHJlc3RydWN0dXJlDQo+ID4+IChyZWJhc2UpIHRo ZQ0KPiA+PiBzZXJpZXMsIGFuZCBzdWJtaXQgdGhlIHJld29ya2VkIHNlcmllcyBvbiBhIG5ldyB0 b3BpYw0KPiA+PiBicmFuY2ggLyBwdWxsDQo+ID4+IHJlcXVlc3QuDQo+ID4+DQo+ID4+IElzbid0 IHRoaXMgdGhlIGNvbnRyaWJ1dGlvbiBwYXR0ZXJuIHdlJ2QgbGlrZSB0byBzZWUNCj4gaW4NCj4g Pj4gYWxsDQo+ID4+IHN1Yi1wcm9qZWN0cywgd2hlcmUgd2UgKHRoZSBUaWFub0NvcmUgY29tbXVu aXR5KSBoYXZlDQo+ID4+IHJldmlld2VyIC8NCj4gPj4gbWFpbnRhaW5lciByZXNwb25zaWJpbGl0 aWVzPw0KPiA+Pg0KPiA+PiBUaGFua3MsDQo+ID4+IExhc3psbw0KPiA+Pg0KPiA+Pj4gVGhhbmtz LA0KPiA+Pj4NCj4gPj4+IE1pa2UNCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPj4+PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBbbWFpbHRvOmRl dmVsQGVkazIuZ3JvdXBzLmlvXQ0KPiA+Pj4+IE9uIEJlaGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4g Pj4+PiBTZW50OiBXZWRuZXNkYXksIE1heSA4LCAyMDE5IDI6NTYgQU0NCj4gPj4+PiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20NCj4gPj4+PiBTdWJq ZWN0OiBSZTogW2VkazItZGV2ZWxdIFJGQyBmb3IgRWRrMi1MaWJyYXJ5DQo+ID4+Pj4NCj4gPj4+ PiBPbiAwNS8wNy8xOSAyMzozNSwgU2VhbiB2aWEgR3JvdXBzLklvIHdyb3RlOg0KPiA+Pj4+PiBS RkMgIEVkazItTGlicmFyeSBjcmVhdGlvbg0KPiA+Pj4+Pg0KPiA+Pj4+PiBDcmVhdGUgYSBuZXcg dGlhbm9jb3JlIG93bmVkIHJlcG9zaXRvcnkgdG8gaG9zdCBhDQo+ID4+Pj4gcHl0aG9uIGxpYnJh cnkNCj4gPj4+Pj4gcGFja2FnZSBpbiBzdXBwb3J0IG9mIFVFRkkgZGV2ZWxvcG1lbnQuICBUaGlz DQo+IHBhY2thZ2UNCj4gPj4+PiB3aWxsIGFsbG93IGVhc3kNCj4gPj4+Pj4gc2hhcmluZyBvZiBw eXRob24gbGlicmFyeSBjb2RlIHRvIGZhY2lsaXRhdGUgcmV1c2UuDQo+ID4+Pj4gSW5jbHVzaW9u IG9mIHRoaXMNCj4gPj4+Pj4gcGFja2FnZSBhbmQgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IHNob3Vs ZCBiZSBtYW5hZ2VkDQo+ID4+Pj4gdXNpbmcgUGlwL1B5cGkuIFRvDQo+ID4+Pj4+IHN0YXJ0IHRo aXMgaXMgYSBzdXBwbGVtZW50YWwgcGFja2FnZSBhbmQgaXMgbm90DQo+ID4+Pj4gcmVxdWlyZWQg dG8gYmUgdXNlZA0KPiA+Pj4+PiBmb3IgZWRrMiBidWlsZHMuDQo+ID4+Pj4NCj4gPj4+PiBbMV0N Cj4gPj4+Pg0KPiA+Pj4+PiBFeGFtcGxlcyBvZiBjb250ZW50IGhlcmUNCj4gPj4+Pj4NCj4gPj4+ Pj4gKiBFZGsyIGZpbGUgdHlwZSBwYXJzaW5nDQo+ID4+Pj4+ICogVUVGSSBzdHJ1Y3R1cmUgZW5j b2RlL2RlY29kZSBpbiBweXRob24NCj4gPj4+Pj4gKiBQYWNrYWdpbmcgdG9vbHMgKENhcHN1bGVz IGdlbmVyYXRpb24sIHNpZ25pbmcsDQo+IElORg0KPiA+Pj4+IGdlbiwgQ2F0IGdlbikNCj4gPj4+ Pj4gKiBUUE0gc3VwcG9ydCBjb2RlDQo+ID4+Pj4+ICogUG90ZW50aWFsbHkgbW92ZSBjb250ZW50 IGZyb20NCj4gPj4+PiBiYXNldG9vbHMvc291cmNlL3B5dGhvbi9jb21tb24vKg0KPiA+Pj4+DQo+ ID4+Pj4gWzJdDQo+ID4+Pj4NCj4gPj4+Pj4gKiBObyBjb21tYW5kIGxpbmUgdG9vbHMvaW50ZXJm YWNlDQo+ID4+Pj4+DQo+ID4+Pj4+IE1haW50YWluZXJzDQo+ID4+Pj4+DQo+ID4+Pj4+ICogU2Vh biBCcm9nYW4NCj4gPj4+Pj4gKiBCcmV0IEJhcmtlbGV3DQo+ID4+Pj4+ICogUGxhY2Vob2xkZXIg Zm9yIGV4aXN0aW5nIG1haW50YWluZXIgZnJvbSB0aGUNCj4gPj4+PiBiYXNldG9vbHMNCj4gPj4+ Pj4NCj4gPj4+Pj4gTGljZW5zZQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAqIEJTRCArIFBhdGVudCAoZWRr MiBhbGlnbmVkKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBDb250cmlidXRpb24gcHJvY2VzcyBhbmQgaXNz dWUgdHJhY2tpbmcNCj4gPj4+Pj4NCj4gPj4+Pj4gKiBGb2xsb3cgR2l0aHViIFBSIHByb2Nlc3Mg Zm9yIGNvbnRyaWJ1dGlvbnMgYW5kDQo+ID4+IGlzc3VlDQo+ID4+Pj4gdHJhY2tpbmcNCj4gPj4+ Pj4gKiBDb250cmlidXRvciBmb3JrcyByZXBvIGluIGdpdGh1Yg0KPiA+Pj4+PiAqIENvbnRyaWJ1 dG9yIGNyZWF0ZXMgYnJhbmNoIGZvciB3b3JrDQo+ID4+Pj4+ICogQ29udHJpYnV0b3IgdXBkYXRl cyByZWxlYXNlIG5vdGVzIHRvIGluZGljYXRlDQo+ID4+IGNoYW5nZQ0KPiA+Pj4+IChpZiBuZWNl c3NhcnkpDQo+ID4+Pj4+ICogQ29udHJpYnV0b3Igc3VibWl0cyBQUiB0byBtYXN0ZXIgYnJhbmNo IG9mDQo+ID4+Pj4gdGlhbm9jb3JlL0VkazItTGlicmFyeQ0KPiA+Pj4+PiAgIHJlcG8NCj4gPj4+ Pj4gKiBSZXZpZXcgZmVlZGJhY2sgaXMgZ2l2ZW4gaW4gUFINCj4gPj4+Pj4gKiBQeXRob24gVGVz dHMgYXJlIHJ1biBvbiB0aGUgcmVwbyAobmV3DQo+IGNvbnRyaWJ1dGlvbnMNCj4gPj4+PiBuZWVk IHVuaXQgdGVzdHMpDQo+ID4+Pj4+ICogUHl0aG9uIFN0eWxlIChmbGFrZTgpIG11c3QgcGFzcw0K PiA+Pj4+PiAqIEFsbCByZXZpZXcgZmVlZGJhY2sgbXVzdCBiZSBjb21wbGV0ZWQsDQo+IG1haW50 YWluZXJzDQo+ID4+Pj4gYXBwcm92ZWQsIGFuZA0KPiA+Pj4+PiAgIHRlc3RzIHJ1biBzdWNjZXNz ZnVsbHkgYmVmb3JlIFBSIGlzICpzcXVhc2gNCj4gbWVyZ2VkKg0KPiA+Pj4+IGludG8gbWFzdGVy DQo+ID4+Pj4NCj4gPj4+PiBUaGUgc2VudGVuY2VzDQo+ID4+Pj4NCj4gPj4+PiBbMV0gIlRvIHN0 YXJ0IHRoaXMgaXMgYSBzdXBwbGVtZW50YWwgcGFja2FnZSBhbmQgaXMNCj4gPj4gbm90DQo+ID4+ Pj4gcmVxdWlyZWQgdG8gYmUNCj4gPj4+PiAgICAgIHVzZWQgZm9yIGVkazIgYnVpbGRzLiINCj4g Pj4+Pg0KPiA+Pj4+IFsyXSAiUG90ZW50aWFsbHkgbW92ZSBjb250ZW50IGZyb20NCj4gPj4+PiBi YXNldG9vbHMvc291cmNlL3B5dGhvbi9jb21tb24vKiINCj4gPj4+Pg0KPiA+Pj4+IGZvcmVzaGFk b3cgdGhhdCBzdWNoIGEgY29kZSBtb3ZlbWVudCBtaWdodCBoYXBwZW4NCj4gZG93bg0KPiA+Pj4+ IHRoZSByb2FkLCBhbmQgdGhlDQo+ID4+Pj4gZXh0ZXJuYWwgcGFja2FnZSBjb3VsZCBiZWNvbWUg YSByZXF1aXJlbWVudCBmb3INCj4gPj4gYnVpbGRpbmcNCj4gPj4+PiBlZGsyLg0KPiA+Pj4+DQo+ ID4+Pj4gVGhhdCBzdGVwIHdvdWxkIG1lYW4gdGhlIGZvbGxvd2luZzoNCj4gPj4+Pg0KPiA+Pj4+ IChhKSBFZGsyIHdvdWxkIG5vdCByZW1haW4gYnVpbGRhYmxlIGZyb20gYSBzaW5nbGUNCj4gPj4+ PiBjb21tYW5kDQo+ID4+Pj4NCj4gPj4+PiAgICAgZ2l0IGNsb25lIC0tcmVjdXJzZS1zdWJtb2R1 bGVzDQo+ID4+Pj4NCj4gPj4+PiAgICAgQnVpbGRpbmcgZWRrMiB3b3VsZCByZXF1aXJlIEdOVS9M aW51eCB1c2VycyB0bw0KPiA+PiBzdGFydA0KPiA+Pj4+IHRyYWNraW5nDQo+ID4+Pj4gICAgIHBh Y2thZ2VzIHdpdGggInBpcCIsIHdoaWNoIGlzIGluZGVwZW5kZW50IG9mIGFueQ0KPiA+Pj4+IGdp dmVuIGRpc3RybydzIG93bg0KPiA+Pj4+ICAgICBwYWNrYWdlIG1hbmFnZW1lbnQsIGFuZCBtYXkg Y2F1c2UgY29uZmxpY3RzIGlmDQo+IG5vdA0KPiA+Pj4+IHVzZWQgY2FyZWZ1bGx5Og0KPiA+Pj4+ DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pg0KPiBodHRwczovL2RldmVsb3Blci5mZWRvcmFwcm9qZWN0 Lm9yZy90ZWNoL2xhbmd1YWdlcy9weXRobw0KPiA+Pj4+IG4vcHlwaS1pbnN0YWxsYXRpb24uaHRt bA0KPiA+Pj4+DQo+ID4+Pj4gICAgIFRoaXMgcmVxdWlyZW1lbnQgb24gInBpcCIgd291bGQgb25s eSBnbyBhd2F5DQo+IG9uY2UNCj4gPj4+PiB0aGUgZXh0ZXJuYWwNCj4gPj4+PiAgICAgcHl0aG9u IGRlcGVuZGVuY2llcyB3ZXJlIHBhY2thZ2VkIGZvciBhdCBsZWFzdA0KPiB0aGUNCj4gPj4+PiBs YXJnZXIgR05VL0xpbnV4DQo+ID4+Pj4gICAgIGRpc3Ryb3MuDQo+ID4+Pj4NCj4gPj4+PiAoYikg RWRrMiB1c2VycyBydW5uaW5nIGludG8gYnVpbGQgcHJvYmxlbXMgcmVsYXRlZA0KPiB0bw0KPiA+ Pj4+IHRoZSBleHRlcm5hbA0KPiA+Pj4+ICAgICBweXRob24gZGVwZW5kZW5jaWVzIHdvdWxkIGhh dmUgdG8gY29udHJpYnV0ZQ0KPiA+PiB0aHJvdWdoDQo+ID4+Pj4gYSBnaXRodWItb25seQ0KPiA+ Pj4+ICAgICB3b3JrZmxvdy4gVGhhdCdzIG5vdCBhIGRlYWwtYnJlYWtlciBwZXIgc2UgLS0gaWYN Cj4gPj4gd2UNCj4gPj4+PiB3YW50IHRvDQo+ID4+Pj4gICAgIGNvbnRyaWJ1dGUgdG8gb3RoZXIg ZWRrMiBkZXBlbmRlbmNpZXMsIHN1Y2ggYXMNCj4gPj4+PiBPcGVuU1NMIG9yIG5hc20sIHdlDQo+ ID4+Pj4gICAgIGFsc28gaGF2ZSB0byBjb25mb3JtIHRvIHRoZWlyIHNwZWNpZmljDQo+IGRldmVs b3BtZW50DQo+ID4+Pj4gbW9kZWxzLCBjbGVhcmx5Lg0KPiA+Pj4+DQo+ID4+Pj4gICAgIEhvd2V2 ZXIsICJzcXVhc2ggbWVyZ2UiIGlzIGEgY2F0YXN0cm9waGljYWxseQ0KPiBiYWQNCj4gPj4+PiBk ZXZlbG9wbWVudCBtb2RlbCwNCj4gPj4+PiAgICAgYW5kIEknZCBvYmplY3QgdG8gaW50cm9kdWNp bmcgYSBuZXcgZWRrMiBidWlsZA0KPiA+Pj4+IGRlcGVuZGVuY3kgdGhhdA0KPiA+Pj4+ICAgICBm b2xsb3dlZCB0aGF0IG1vZGVsLg0KPiA+Pj4+DQo+ID4+Pj4gICAgIChUaGVyZSBhcmUgb3RoZXIg aXNzdWVzIHdpdGggdGhlIEdpdEh1Yi5jb20NCj4gPj4+PiBkZXZlbG9wbWVudCB3b3JrZmxvdywg YXMNCj4gPj4+PiAgICAgZGlzY3Vzc2VkIGVsc2V3aGVyZSwgYnV0ICJzcXVhc2ggbWVyZ2UiIHRh a2VzDQo+IHRoZQ0KPiA+Pj4+IGNha2UuKQ0KPiA+Pj4+DQo+ID4+Pj4gUHJvYmxlbSAoYSkgd291 bGQgYmUgc29sdmFibGUgaW4gdGhlIGxvbmcgdGVybQ0KPiA+PiAodGhyb3VnaA0KPiA+Pj4+IGNv bGxhYm9yYXRpb24NCj4gPj4+PiB3aXRoIGRpc3RybyBtYWludGFpbmVycywgaS5lLiBkb3duc3Ry ZWFtIHBhY2thZ2luZyksDQo+ID4+IGJ1dA0KPiA+Pj4+IHByb2JsZW0gKGIpDQo+ID4+Pj4gd291 bGQgbm90IGJlLiBUaHVzIEknbSBmaW5lIHdpdGggdGhlIHByb3Bvc2FsLCBpbg0KPiBpdHMNCj4g Pj4+PiBjdXJyZW50IGZvcm0sIG9ubHkNCj4gPj4+PiBpZiB0aGUgbmV3IHBhY2thZ2UgaXMgMTAw JSBhbiBhZGRpdGlvbiBvbiB0b3Agb2YNCj4gZWRrMiwNCj4gPj4+PiBldmVuIGluIHRoZSBsb25n DQo+ID4+Pj4gdGVybSwgYW5kIG5vdCBpbiBhbnkgcGFydCBpbnRlbmRlZCBhcyBhIGZ1dHVyZQ0K PiA+Pj4+IHJlcGxhY2VtZW50IGZvciBjdXJyZW50DQo+ID4+Pj4gZWRrMiBmdW5jdGlvbmFsaXR5 Lg0KPiA+Pj4+DQo+ID4+Pj4gVGhhbmtzLA0KPiA+Pj4+IExhc3psbw0KPiA+Pj4+DQo+ID4+Pj4N Cj4gPj4+DQo+ID4NCj4gDQo+IA0KPiANCg0K