From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: michael.d.kinney@intel.com) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by groups.io with SMTP; Thu, 09 May 2019 17:01:34 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 May 2019 17:01:33 -0700 X-ExtLoop1: 1 Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by orsmga001.jf.intel.com with ESMTP; 09 May 2019 17:01:33 -0700 Received: from orsmsx155.amr.corp.intel.com (10.22.240.21) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 9 May 2019 17:01:32 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.24]) by ORSMSX155.amr.corp.intel.com ([169.254.7.27]) with mapi id 14.03.0415.000; Thu, 9 May 2019 17:01:32 -0700 From: "Michael D Kinney" To: Laszlo Ersek , "devel@edk2.groups.io" , "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//mb8Q Date: Fri, 10 May 2019 00:01:31 +0000 Message-ID: References: <24030.1557264917803034398@groups.io> <46700279-e217-0a45-8637-9c24cb5cc4eb@redhat.com> In-Reply-To: <46700279-e217-0a45-8637-9c24cb5cc4eb@redhat.com> 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.138] 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 TGFzemxvLA0KDQoxKSBXZSBhbHNvIHVzZSBPcGVuU1NMIGNvbW1hbmQgbGluZSB0b29sIHRvIGxv Y2FsbHkgc2lnbg0KICAgY2Fwc3VsZXMgYW5kIHJlY292ZXJ5IGltYWdlcyBmb3IgbG9jYWwgdGVz dGluZy4gIFNvIGJvdGggDQogICB0b29sIGRlcGVuZGVuY3kgYW5kIHNvdXJjZSBkZXBlbmRlbmN5 IGFwcGx5IHRvIHRoZSBPcGVuU1NMDQogICBjb250ZW50Lg0KDQoyKSBJZiBhIGRldiBzdWJtaXRz IGEgUFIsIGFuZCB0aGVyZSBhcmUgbWFueSByZXZpZXcgY29tbWVudHMNCiAgIHRoYXQgcmVxdWly ZSBjb2RlIGNoYW5nZXMsIHRoZW4gdGhvc2UgY29kZSBjaGFuZ2VzIGFyZQ0KICAgYWRkZWQgdG8g dGhhdCBQUiB1bnRpbCBhbGwgZmVlZGJhY2sgaXMgYWRkcmVzc2VkLiAgQXQgdGhhdA0KICAgcG9p bnQsIGlmIHRoZSBjaGFuZ2UgaXMgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGluIGEgc2luZ2xl DQogICBjb21taXQsIHRoZW4gZG9pbmcgYSBzcXVhc2ggbWVyZ2Ugd2l0aCBhIGNsZWFuZWQgdXAg Y29tbWl0DQogICBtZXNzYWdlIHdvdWxkIGJlIGFwcHJvcHJpYXRlLiAgQW5kIHRoZSBoaXN0b3J5 IG9mIGFsbCB0aGUNCiAgIHJldmlldyBmZWVkYmFjayBwcmVzZXJ2ZWQgaW4gdGhlIFBSLg0KDQog ICBJZiB3ZSBjcmVhdGUgYSAybmQgUFIgd2l0aCB0aGUgY2xlYW5lZCB1cCBjb250ZW50LCB0aGVu IHRoZQ0KICAgY29ubmVjdGlvbiB0byB0aGUgMXN0IFBSIGZlZWRiYWNrIG1heSBiZSBsb3N0LiAg SSBhZ3JlZSB0aGlzIA0KICAgbWF0Y2hlcyB3aGF0IHdlIGRvIGluIGVtYWlsIHJldmlld3MgdG8g Y3JlYXRlIGEgVjIgcGF0Y2ggc2VyaWVzLg0KICAgVGhlIFYxIGFuZCBWMiB0aHJlYWRzIGFyZSBp biB0aGUgZW1haWwgYXJjaGl2ZS4gIEkgd29uZGVyIGlmIA0KICAgdGhlcmUgaXMgYSB3YXkgdG8g bGluayBhIDJuZCBQUiB0byB0aGUgMXN0IFBSIGFuZCBndWFyYW50ZWUNCiAgIHRoYXQgYm90aCBQ UnMgYXJlIHByZXNlcnZlZD8gIFRoaXMgd291bGQgYWxzbyBhbGxvdyB0aGUgMm5kDQogICBjbGVh bmVkIHVwIFBSIHRvIGNvbnRhaW4gYSBzZXJpZXMsIGFuZCBpZiB0aGVyZSB3YXMgYSB3YXkgdG8N CiAgIG1ha2UgdGhlIHNxdWFzaCBtZXJnZSBvcHRpb25hbCwgdGhlbiB0aGUgZGV2ZWxvcGVyIGNh biBjaG9vc2UNCiAgIHRoZSB3YXkgdGhlIHBhdGNoZXMgYXJlIGNvbW1pdHRlZC4NCg0KICAgSnVz dCBhIGZldyBpZGVhcyB0byBleHBsb3JlLi4uUGVyaGFwcyBTZWFuIGNhbiBwcm92aWRlIHNvbWUN CiAgIGFkZGl0aW9uYWwgaWRlYXMgdG8gbWFuYWdlIGNvbXBsZXggY2hhbmdlcyBpbiBQUnMuDQoN CkJlc3QgcmVnYXJkcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBU aHVyc2RheSwgTWF5IDksIDIwMTkgMzo1NiBQTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRrMi5ncm91cHMuaW87IHNlYW4u YnJvZ2FuQG1pY3Jvc29mdC5jb20NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBSRkMgZm9y IEVkazItTGlicmFyeQ0KPiANCj4gT24gMDUvMDkvMTkgMjA6MDYsIEtpbm5leSwgTWljaGFlbCBE IHdyb3RlOg0KPiA+IEhlbGxvLA0KPiA+DQo+ID4gSXQgaXMgZGlmZmljdWx0IHRvIHRlbGwgaWYg dGhlIHJlcG8gbmFtZSBlZGsyLWxpYnJhcnkNCj4gaXMgZm9yIGZpcm13YXJlDQo+ID4gb3IgdG9v bHMsIHNvIEkgcmVjb21tZW5kIHdlIHdvcmsgb24gYSBuYW1lIHRoYXQgY2xlYXJseQ0KPiBpZGVu dGlmaWVzDQo+ID4gdGhhdCB0aGlzIHJlcG8gaXMgcmVsYXRlZCB0byB0b29scy4NCj4gDQo+IEdv b2QgaWRlYS4NCj4gDQo+ID4gRm9yIHRoZSBwaXAgZGVwZW5kZW5jaWVzLCBpcyB0aGUgY29uY2Vy biB0aGF0IGENCj4gcGxhdGZvcm0gdGhhdCBkZXBlbmRzDQo+ID4gb24gdGhlc2UgdG9vbHMgd2ls bCBub3QgYmUgYnVpbGRhYmxlIHdpdGhvdXQgcnVubmluZyBhDQo+ICJwaXAgaW5zdGFsbCINCj4g PiBjb21tYW5kIHRoYXQgcHVsbHMgY29udGVudCBmcm9tIHRoZSBuZXR3b3JrPw0KPiANCj4gQWxt b3N0LiBOb3QgZXhhY3RseS4NCj4gDQo+IEZpcnN0LCB0aGUgY29uY2VybiBpcyBub3Qgc3BlY2lm aWMgdG8gYW55IGdpdmVuIHBsYXRmb3JtLg0KPiBNeQ0KPiB1bmRlcnN0YW5kaW5nIGlzIHRoYXQg dGhlIGV4dHJhY3Rpb24gd291bGQgdGFyZ2V0LCBpbiB0aGUNCj4gbG9uZ2VyIHRlcm0sDQo+IGdl bmVyYWwgQmFzZVRvb2xzIGZ1bmN0aW9uYWxpdHkuIFRoYXQgd291bGQgaW1wYWN0IGFsbA0KPiBw bGF0Zm9ybXMgdGhhdA0KPiBjb25zdW1lICYgYnVpbGQgYWdhaW5zdCBlZGsyLg0KPiANCj4gU2Vj b25kLCBpdCdzIG5vdCB0aGUgbmV0d29yayBhY2Nlc3MgdGhhdCdzIGNvbmNlcm5pbmcgcGVyDQo+ IHNlLiBJdCdzIHRoZQ0KPiBjb21wYXRpYmlsaXR5IC8gaW50ZXJvcGVyYXRpb24gd2l0aCBhbnkg Z2l2ZW4gTGludXgNCj4gZGlzdHJpYnV0aW9uJ3Mgb3duDQo+IChuYXRpdmUpIHBhY2thZ2UgbWFu YWdlbWVudCBzeXN0ZW0uIFN1Y2ggYSBwYWNrYWdlDQo+IG1hbmFnZW1lbnQgc3lzdGVtIGlzDQo+ IGdlbmVyYWxseSBub3QgdXNlZCBvbiBXaW5kb3dzLCB0aGVyZWZvcmUgV2luZG93cyB1c2Vycw0K PiBhcmUgYWNjdXN0b21lZCB0bw0KPiBpbnN0YWxsaW5nIHNvZnR3YXJlIHBhY2thZ2VzIGZyb20g YSBib2F0bG9hZCBvZiB2ZW5kb3JzLg0KPiBUaGlzIGlzIG5vdCB0aGUNCj4gY2FzZSBvbiBMaW51 eCBkaXN0cm9zIC0tIHlvdXIgZGlzdHJvIHZlbmRvciBvZmZlcnMgYQ0KPiBjdXJhdGVkIHNldCBv Zg0KPiBwYWNrYWdlcywgc3VjaCB0aGF0IGV2ZXJ5dGhpbmcgaW50ZXJvcGVyYXRlcyB3aXRoDQo+ IGV2ZXJ5dGhpbmcgKGlkZWFsbHkpLA0KPiB0aGVyZSBhcmUgbm8gZmlsZSBjb25mbGljdHMsIHZl cnNpb24gZGVwZW5kZW5jaWVzIGFyZQ0KPiBoYW5kbGVkDQo+IGF1dG9tYXRpY2FsbHkgKGUuZy4g aWYgeW91IGluc3RhbGwgYSBoaWdoLWxldmVsIHBhY2thZ2UsDQo+IGl0cw0KPiBkZXBlbmRlbmNp ZXMgYXJlIHB1bGxlZCBpbiBhdXRvbWF0aWNhbGx5KSwgYW5kIHNvIG9uLg0KPiANCj4gQ2xlYXJs eSB0aGUgZGlzdHJvIHZlbmRvciBkb2VzIG5vdCAqYXV0aG9yKiBhbGwgdGhpcw0KPiBzb2Z0d2Fy ZSAoYWx0aG91Z2gNCj4gdGhleSBhcmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byBjb250cmlidXRl IHRvIHRoZQ0KPiB1cHN0cmVhbSBzb2Z0d2FyZQ0KPiBwcm9qZWN0cyB0aGV5IHBhY2thZ2UgYW5k IHNoaXApLiBUaGUgZGlzdHJvIHZlbmRvciBpcw0KPiByZXNwb25zaWJsZSBmb3INCj4gdGhlIGlu dGVncmF0aW9uIG9mIGFsbCB0aGVzZSBwYWNrYWdlcyBpbnRvIGEgY29uc2lzdGVudA0KPiBPUywg aW50bw0KPiBjb25zaXN0ZW50IGZlYXR1cmUgc2V0cywgYW5kIHNvIG9uLg0KPiANCj4gInBpcCIg YW5kIHNpbWlsYXIgdG9vbHMgYXJlIGdlbmVyYWxseSB1bmZpdCBmb3IgdGhpcw0KPiBhcHByb2Fj aCwgYmVjYXVzZQ0KPiB0aGV5IGltcGxlbWVudCBhIHBhcmFsbGVsIHBhY2thZ2UgbWFuYWdlbWVu dCBzeXN0ZW0sIHRvDQo+IG15DQo+IHVuZGVyc3RhbmRpbmcuIElmIHRoZXkgYXJlIGNhcmVmdWxs eSB1c2VkIGluIGEgdXNlcidzDQo+IGhvbWUgZGlyZWN0b3J5LA0KPiB0aGV5IG1pZ2h0IHdvcmsu IElmIHBhY2thZ2VzIHdlcmUgaW5zdGFsbGVkIHdpdGggInBpcCINCj4gc3lzdGVtLXdpZGUsIHRo ZXkNCj4gd291bGQgYWxtb3N0IGNlcnRhaW5seSBicmVhayAoY29uZmxpY3Qgd2l0aCkgdGhlIGRp c3Ryby0NCj4gcHJvdmlkZWQNCj4gcGFja2FnZXMuDQo+IA0KPiBUaGVyZWZvcmUsIHdoZW4gdXNl cnMgd291bGQgbGlrZSB0byBnZXQgYSBuZXcgcGllY2Ugb2YNCj4gc29mdHdhcmUNCj4gcGFja2Fn ZWQsIG9yIGFuIGV4aXN0ZW50IHBhY2thZ2UgcmVmcmVzaGVkICh0byBhIG1vcmUNCj4gcmVjZW50 IHVwc3RyZWFtDQo+IHZlcnNpb24pLCB0aGV5IGZpbGUgYSBmZWF0dXJlIHJlcXVzdCB3aXRoIHRo ZWlyIGRpc3Rybw0KPiB2ZW5kb3IgKHVubGVzcw0KPiB0aGUgZGlzdHJvIHZlbmRvciBhbHJlYWR5 IHRyYWNrcyB0aGUgdXBzdHJlYW0gcHJvamVjdA0KPiBjbG9zZWx5IGFuZA0KPiBwZXJmb3JtcyBw ZXJpb2RpYyByZWJhc2VzIGFueXdheSkuIFRoZW4gdGhlIGRpc3RybyB2ZW5kb3INCj4gc2hpcHMg YSBuZXcNCj4gKG9yIHJlZnJlc2hlZCkgcGFja2FnZSwgYWdhaW4gbmljZWx5IGludGVncmF0ZWQg d2l0aCB0aGUNCj4gcmVzdCBvZiB0aGUNCj4gc3lzdGVtLg0KPiANCj4gPiBXZSBhbHJlYWR5IGhh dmUgdG8gcHVsbCBjb250ZW50IHRvIGdldCB0aGUgc291cmNlcyBhbmQNCj4gcG90ZW50aWFsbHkN Cj4gPiBvdGhlciBkZXBlbmRlbnQgdG9vbHMgKE5BU00sIGlBU0wsIG9wZW5zc2wpLg0KPiANCj4g WWVzLCB0aGVzZSBhcmUgZ29vZCBleGFtcGxlcyB0byBkZW1vbnN0cmF0ZSB0aGUNCj4gZGlmZmVy ZW5jZS4gQ29uc2lkZXINCj4gTkFTTS4gSWYgYSBXaW5kb3dzIHVzZXIgd291bGQgbGlrZSB0byBp bnN0YWxsIE5BU00sIHRoZXkNCj4gZ29vZ2xlICJOQVNNDQo+IGZvciBXaW5kb3dzIiwgdGhlbiBn byB0bzoNCj4gDQo+IGh0dHBzOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8y LjE0LjAyL3dpbjY0Lw0KPiANCj4gZG93bmxvYWQgdGhlIFpJUCBmaWxlIG9yIEVYRSBmaWxlLCBh bmQgaW5zdGFsbCBpdC4NCj4gDQo+IEluIGNvbXBhcmlzb24sIGEgRmVkb3JhIHVzZXIgcnVucw0K PiANCj4gICBkbmYgaW5zdGFsbCBuYXNtDQo+IA0KPiBhbmQgdGhleSBnZXQgdGhlIHBhY2thZ2Ug ZnJvbSB0aGUgRmVkb3JhIHBhY2thZ2UNCj4gcmVwb3NpdG9yeS4gQSBEZWJpYW4NCj4gdXNlciB3 b3VsZCBydW4NCj4gDQo+ICAgYXB0LWdldCBpbnN0YWxsIG5hc20NCj4gDQo+IGFuZCB0aGV5IHdv dWxkIGdldCB0aGUgcGFja2FnZSAod2hpY2ggd291bGQgYmUgZW50aXJlbHkNCj4gaW5kZXBlbmRl bnQgb2YNCj4gRmVkb3JhJ3MpIGZyb20gdGhlIERlYmlhbiBwYWNrYWdlIHJlcG9zaXRvcnkuDQo+ IA0KPiBUaGUgdmFyaW91cyAqQlNEcyB3b3VsZCBydW4gYSB2YXJpYW50IG9mDQo+IA0KPiAgIHBr Z19hZGQgbmFzbQ0KPiANCj4gSSBiZWxpZXZlLg0KPiANCj4gVGhlIHNhbWUgYXBwbGllcyB0byBp QVNMLg0KPiANCj4gDQo+IE9wZW5TU0wgaXMgYSBzcGVjaWFsIGNhc2UuIEl0IGlzIGRpZmZlcmVu dCBmcm9tIE5BU00gYW5kDQo+IGlBU0wuIE5BU00gYW5kDQo+IGlBU0wgYXJlIG5hdGl2ZSAoaG9z dGVkKSBhcHBsaWNhdGlvbnMsIHNvIGFueSBMaW51eA0KPiBkaXN0cm8gY2FuIGVhc2lseQ0KPiBi dWlsZCB0aGVtIChmb3IgaXRzZWxmKSwgYW5kIHRoZSBiaW5hcmllcyBjYW4gYmUgc2hpcHBlZA0K PiB0byB1c2VycywgcmVhZHkNCj4gdG8gcnVuLiBCdXQgZm9yIHRoZSBwdXJwb3NlcyBvZiBlZGsy LCBPcGVuU1NMIGlzIG5vdA0KPiBuZWVkZWQgYXMgYSBuYXRpdmUNCj4gKGhvc3RlZCkgdXRpbGl0 eSwgbGlrZSBOQVNNIGFuZCBpQVNMIC0tIGl0IGlzIG5lZWRlZCBhcyBhDQo+ICpjcm9zcy1idWls dCoNCj4gc3RhdGljIGxpYnJhcnksIHRhcmdldGluZyB0aGUgZmlybXdhcmUgYXJjaGl0ZWN0dXJl IChub3QNCj4gdGhlIGhvc3QNCj4gYXJjaGl0ZWN0dXJlKS4gVW5mb3J0dW5hdGVseSwgT3BlblNT TCAodGhlIHVwc3RyZWFtDQo+IHByb2plY3QpIGRvZXMgbm90DQo+IGZ1bGx5IHN1cHBvcnQgdGhp cyB1c2UgY2FzZSB5ZXQsIHRoZXJlZm9yZSBMaW51eCBkaXN0cm9zDQo+IGNhbm5vdCBqdXN0DQo+ IGNyb3NzLWNvbXBpbGUgT3BlblNTTCBmb3IgZWRrMiwgYW5kIG9mZmVyIHN0YXRpYyBsaWJyYXJ5 DQo+IHBhY2thZ2VzLiBUaGlzDQo+IGlzIHdoeSB1cHN0cmVhbSBlZGsyIGNvbnN1bWVzIE9wZW5T U0wgdGhyb3VnaCBhIGdpdA0KPiBzdWJtb2R1bGUsIGluIHNvdXJjZQ0KPiBmb3JtLg0KPiANCj4g Kkhvd2V2ZXIqOiBjb25jZXB0dWFsbHksIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UuIEluDQo+IEZl ZG9yYSBhbmQgUkhFTCwgd2UNCj4gZG9uJ3QgYnVpbGQgT1ZNRiBhZ2FpbnN0IHVwc3RyZWFtIE9w ZW5TU0wuIFdlIGJ1aWxkIGl0DQo+IGFnYWluc3QgdGhlDQo+IGRvd25zdHJlYW0gT3BlblNTTCBz b3VyY2UgY29kZS4gU28gdWx0aW1hdGVseSB0aGVyZSBpcyBubw0KPiBkaWZmZXJlbmNlIGluDQo+ IHRoZSBkaXN0cm8gdmVuZG9yJ3MgYXBwcm9hY2ggLS0gdGhlIHNvdXJjZXMgYW5kIHRoZQ0KPiBi aW5hcmllcyBjb21lIGZyb20NCj4gdGhlIGRpc3RybyB2ZW5kb3IuDQo+IA0KPiANCj4gU28gd2hh dCBmb2xsb3dzIGZyb20gdGhpcz8gSXQgbWVhbnMgdGhhdCwgZm9yIHVzaW5nDQo+IEJhc2VUb29s cyBvbiBhIExpbnV4DQo+IGRpc3RybywgdXNlcnMgd2lsbCBoYXZlIHRvIGluc3RhbGwgc29tZSBl eHRyYSBQeXRob24NCj4gcGFja2FnZXMsIGluDQo+IGFkZGl0aW9uIHRvIE5BU00gYW5kIGlBU0ws IGZyb20gdGhlaXIgdmVuZG9yJ3MNCj4gcmVwb3NpdG9yeS4gSW4gb3RoZXINCj4gd29yZHMsIHRo ZSAiZWRrMi1saWJyYXJ5IiAob3IgImVkazItdG9vbHMiKSBwcm9qZWN0DQo+IHNob3VsZCBkbyB1 cHN0cmVhbQ0KPiByZWxlYXNlcywgc28gdGhhdCBMaW51eCBkaXN0cm9zIGNhbiBwYWNrYWdlIHRo ZW0gaW4gdGhlaXINCj4gbmF0aXZlIHBhY2thZ2UNCj4gc3lzdGVtcy4gQW5kIHNvbWUgY29sbGFi b3JhdGlvbiBiZXR3ZWVuIHVwc3RyZWFtIGFuZA0KPiBkb3duc3RyZWFtcyBpcw0KPiBleHBlY3Rl ZCBmb3IgdGhpcy4gKEV4YWN0bHkgYXMgaXQgb2NjdXJzIHdpdGggdGhlIGlBU0wNCj4gYW5kIE5B U00gdXBzdHJlYW0NCj4gcHJvamVjdHMuKQ0KPiANCj4gPiBDYW4gd2UgbGltaXQgdGhlIGluaXRp YWwgc2NvcGUgdG8gdG9vbHMgdGhhdCBsYXllciBvbg0KPiB0b3Agb2YgZWRrMiwgYW5kDQo+ID4g YSBkaWZmZXJlbnQgZnV0dXJlIFJGQyB3b3VsZCBiZSByZXF1aXJlZCBpZiB0aGVyZSBpcyBhDQo+ IHByb3Bvc2FsIGZvcg0KPiA+IHRoZSBlZGsyIHJlcG8gdG8gZGVwZW5kIG9uIGFub3RoZXIgcmVw bz8NCj4gDQo+IFllcywgdGhhdCB3b3VsZCBiZSB2ZXJ5IG5pY2UuDQo+IA0KPiA+IElmIHdlIGFj Y2VwdCB0aGlzIGxpbWl0ZWQgc2NvcGUsIGFyZSB0aGVyZSBzdGlsbA0KPiBjb25jZXJucyBhYm91 dA0KPiA+IGluaXRpYWxseSB1c2luZyBzcXVhc2ggY29tbWl0cyBmb3IgY2hhbmdlcyB0byB0aGVz ZQ0KPiB0b29scy4NCj4gDQo+IFllcywgSSBzdGlsbCBoYXZlIHRoZSBzYW1lIGNvbmNlcm4gLS0g YWx0aG91Z2ggaXQncyBhDQo+IG1pbGRlciBjb25jZXJuLA0KPiBkZXBlbmRlbnQgb24gaG93IGxv bmcgc3F1YXNoIG1lcmdlcyBhcmUgdG9sZXJhdGVkLg0KPiANCj4gQXNzdW1lIHRoYXQgYSBzZWNv bmQsIHNlcGFyYXRlIFJGQyBnZXRzIHBvc3RlZCBkb3duIHRoZQ0KPiByb2FkLCBsZXQncyBzYXkN Cj4gYSB5ZWFyIGluLCB3aGljaCBwcm9wb3NlcyB0byByZXBsYWNlIHRoZSBpbi1saW5lDQo+IGNv bXBvbmVudCBGb29CYXIgb2YNCj4gQmFzZVRvb2xzLCB3aXRoIHRoZSBleHRlcm5hbCBwcm9qZWN0 ICJlZGsyLWxpYnJhcnkiIChvcg0KPiAiZWRrMi10b29scyIpLg0KPiBBdCB0aGF0IHBvaW50LCB0 aGUgZ2l0IGhpc3RvcnkgYWNjcnVlZCB0aHVzIGZhciwgaW4gZWRrMi0NCj4gdG9vbHMsIHdvdWxk DQo+IHN1ZGRlbmx5IGJlIGluaGVyaXRlZCBieSBhbGwgQmFzZVRvb2xzIHVzZXJzLiBBbmQgdGhh dA0KPiBoaXN0b3J5IHdvdWxkbid0DQo+IGJlIHJlYWxseSBoZWxwZnVsLg0KPiANCj4gRm9yIGFu IGV4YW1wbGUsIHdlIG5lZWQgbm90IGxvb2sgcGFzdCB0aGUgZWRrMiByZXBvc2l0b3J5DQo+IGl0 c2VsZi4gTGV0J3MNCj4gc2F5IEknZCBsaWtlIHRvIGxlYXJuIGFib3V0IHRoZSBpbXBsZW1lbnRh dGlvbiBoaXN0b3J5IG9mDQo+IHRoZQ0KPiBIYW5kbGVQcm90b2NvbCgpIGJvb3Qgc2VydmljZSwg aW4gZWRrMi4gU28gSSBydW46DQo+IA0KPiAkIGdpdCBibGFtZSBtYXN0ZXIgLS0gTWRlTW9kdWxl UGtnL0NvcmUvRHhlL0hhbmQvSGFuZGxlLmMNCj4gDQo+IGFuZCBJIGxvb2sgdXAgdGhlIENvcmVI YW5kbGVQcm90b2NvbCgpIGZ1bmN0aW9uLCBhbmQgZmluZA0KPiB0aGlzOg0KPiANCj4gPiAyOGEw MDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ICh5c2hhbmcx ICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzMSkNCj4gRUZJX1NUQVRVUw0K PiA+IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4g KHlzaGFuZzEgICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTMyKSBFRklBUEkN Cj4gPiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ ICh5c2hhbmcxICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzMykNCj4gQ29y ZUhhbmRsZVByb3RvY29sICgNCj4gPiAyOGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4 ZS9IYW5kL2hhbmRsZS5jDQo+ICh5c2hhbmcxICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQg KzAwMDAgIDkzNCkgICBJTg0KPiBFRklfSEFORExFICAgICAgIFVzZXJIYW5kbGUsDQo+ID4gMjhh MDAyOTcxODljMyBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiAoeXNoYW5n MSAgICAgICAgICAyMDA3LTA3LTA0IDEwOjUxOjU0ICswMDAwICA5MzUpICAgSU4NCj4gRUZJX0dV SUQgICAgICAgICAqUHJvdG9jb2wsDQo+ID4gMjhhMDAyOTcxODljMyBNZGVNb2R1bGVQa2cvQ29y ZS9EeGUvSGFuZC9oYW5kbGUuYw0KPiAoeXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEwOjUx OjU0ICswMDAwICA5MzYpICAgT1VUDQo+IFZPSUQgICAgICAgICAgICAqKkludGVyZmFjZQ0KPiA+ IDI4YTAwMjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gKHlz aGFuZzEgICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTM3KSAgICkNCj4gPiAy OGEwMDI5NzE4OWMzIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9IYW5kL2hhbmRsZS5jDQo+ICh5c2hh bmcxICAgICAgICAgIDIwMDctMDctMDQgMTA6NTE6NTQgKzAwMDAgIDkzOCkgew0KPiA+IDI4YTAw Mjk3MTg5YzMgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gKHlzaGFuZzEg ICAgICAgICAgMjAwNy0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTM5KQ0KPiByZXR1cm4gQ29yZU9w ZW5Qcm90b2NvbCAoDQo+ID4gMDIyYzZkNDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFu ZC9IYW5kbGUuYw0KPiAocWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0OjQ1ICswMDAw ICA5NDApDQo+IFVzZXJIYW5kbGUsDQo+ID4gMDIyYzZkNDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29y ZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiAocWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0 OjQ1ICswMDAwICA5NDEpDQo+IFByb3RvY29sLA0KPiA+IDAyMmM2ZDQ1ZWY3ODYgTWRlTW9kdWxl UGtnL0NvcmUvRHhlL0hhbmQvSGFuZGxlLmMNCj4gKHFodWFuZzggICAgICAgICAgMjAwOC0wNy0y NCAwMjo1NDo0NSArMDAwMCAgOTQyKQ0KPiBJbnRlcmZhY2UsDQo+ID4gMDIyYzZkNDVlZjc4NiBN ZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiAocWh1YW5nOCAgICAgICAgICAy MDA4LTA3LTI0IDAyOjU0OjQ1ICswMDAwICA5NDMpDQo+IGdEeGVDb3JlSW1hZ2VIYW5kbGUsDQo+ ID4gMDIyYzZkNDVlZjc4NiBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9IYW5kbGUuYw0KPiAo cWh1YW5nOCAgICAgICAgICAyMDA4LTA3LTI0IDAyOjU0OjQ1ICswMDAwICA5NDQpDQo+IE5VTEws DQo+ID4gMjhhMDAyOTcxODljMyBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvSGFuZC9oYW5kbGUuYw0K PiAoeXNoYW5nMSAgICAgICAgICAyMDA3LTA3LTA0IDEwOjUxOjU0ICswMDAwICA5NDUpDQo+IEVG SV9PUEVOX1BST1RPQ09MX0JZX0hBTkRMRV9QUk9UT0NPTA0KPiA+IDI4YTAwMjk3MTg5YzMgTWRl TW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gKHlzaGFuZzEgICAgICAgICAgMjAw Ny0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTQ2KQ0KPiApOw0KPiA+IDI4YTAwMjk3MTg5YzMgTWRl TW9kdWxlUGtnL0NvcmUvRHhlL0hhbmQvaGFuZGxlLmMNCj4gKHlzaGFuZzEgICAgICAgICAgMjAw Ny0wNy0wNCAxMDo1MTo1NCArMDAwMCAgOTQ3KSB9DQo+IA0KPiBJbnRlcmVzdGluZywgaXQgc2Vl bXMgbGlrZSB0aGUgZnVuY3Rpb24gd2FzIG9yaWdpbmFsbHkNCj4gYWRkZWQgaW4gY29tbWl0DQo+ IDI4YTAwMjk3MTg5YzMsIGFuZCB0aGVuIHRoZSBhcmd1bWVudCBsaXN0IHdhcyBtb2RpZmllZCBp bg0KPiBjb21taXQNCj4gMDIyYzZkNDVlZjc4NiwgYSB5ZWFyIGxhdGVyLiBTbyBsZXQncyBjaGVj ayBvdXQgdGhlDQo+IHJhdGlvbmFsZSBmb3IgdGhhdA0KPiBhcmd1bWVudCBsaXN0IHVwZGF0ZToN Cj4gDQo+ICQgZ2l0IHNob3cgLS1jb2xvciAwMjJjNmQ0NWVmNzg2DQo+IA0KPiBXZWxsLi4uIFRo ZSBjb21taXQgbWVzc2FnZSBzYXlzLCAiQ29kZSBTY3J1YiBmb3IgRHhlDQo+IENvcmUiLiBUaGF0 J3MgYWxsLg0KPiBXZSBhbHNvIGxlYXJuIGl0IGNvbWVzIGZyb20gU1ZOIHJldmlzaW9uIDU1NjAu IEFuZCB0aGUNCj4gZGlmZnN0YXQgZm9yIHRoZQ0KPiBwYXRjaCBpczoNCj4gDQo+ID4gIDM4IGZp bGVzIGNoYW5nZWQsIDI0OTkgaW5zZXJ0aW9ucygrKSwgMjUwNCBkZWxldGlvbnMoLQ0KPiApDQo+ IA0KPiBJdCBpcyBub3Qgb3Zlcmx5IGhlbHBmdWwuDQo+IA0KPiBDbGVhcmx5LCBDb3JlSGFuZGxl UHJvdG9jb2woKSBpcyBhIHN1cGVyLXJvYnVzdCwgc3VwZXItDQo+IG1hdHVyZSBmdW5jdGlvbiwN Cj4gc28gd2UgZG9uJ3QgcmVhbGx5IGNhcmUgZm9yIGl0cyBkZXZlbG9wbWVudCBoaXN0b3J5DQo+ IHRvZGF5Lg0KPiANCj4gSSBiZWxpZXZlIHRoZSBzYW1lIHdvdWxkIG5vdCBhcHBseSB0byB0aGUg ImVkazItbGlicmFyeSINCj4gKG9yDQo+ICJlZGsyLXRvb2xzIikgcHJvamVjdC4gV2hlbiBpdCBy ZXBsYWNlZCB0aGUgaW4tbGluZQ0KPiBjb21wb25lbnQgRm9vQmFyIG9mDQo+IEJhc2VUb29scywg aXQncyBwbGF1c2libGUgaXQgd291bGQgYmUgc3VkZGVubHkgZXhwb3NlZCB0bw0KPiBhIGxhcmdl cg0KPiB1c2VyYmFzZS4gTmV3IGlzc3VlcyB3b3VsZCBiZSBlbmNvdW50ZXJlZCwgYW5kIHBlb3Bs ZQ0KPiBtaWdodCB3YW50IHRvIGxvb2sNCj4gYXQgdGhlIGdpdCBoaXN0b3J5IC0tIGlmIGZvciBu b3RoaW5nIGVsc2UsIHRoZW4gcmF0aW9uYWxlDQo+IChjb21taXQNCj4gbWVzc2FnZXMpIG9uIHNt YWxsIHBhcnRzIG9mIHRoZSBjb2RlLg0KPiANCj4gDQo+IEkgY2FuIGFsc28gbmFtZSBtb3JlIHJl Y2VudCBleGFtcGxlcy4gSSdtIG5vdCBhIGZyZXF1ZW50DQo+IEJhc2VUb29scw0KPiBjb250cmli dXRvciwgYnV0IGl0IGhhcyBoYXBwZW5lZCBvY2Nhc2lvbmFsbHkuIChJJ3ZlIGdvdA0KPiA0MSBw YXRjaGVzIGluDQo+IHRoZSBlZGsyIGdpdCBoaXN0b3J5IHRoYXQgdG91Y2hlZCBCYXNlVG9vbHMv LCBhcyBvZg0KPiBjb21taXQNCj4gMGE1MDZmYzdhYjhiLikNCj4gDQo+ICogRm9yDQo+IDxodHRw czovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1NDAyNDQ+LCBJDQo+IHB1 c2hlZA0KPiAgIDUrMSBwYXRjaGVzOg0KPiANCj4gICAgIDY3OTgzNDg0YTQ0MyBCYXNlVG9vbHMv Zm9vdGVyLm1ha2VmaWxlOiBleHBhbmQNCj4gQlVJTERfQ0ZMQUdTIGxhc3QgZm9yIEMgZmlsZXMg dG9vDQo+ICAgICAwMzI1MmFlMjg3YzQgQmFzZVRvb2xzL2hlYWRlci5tYWtlZmlsZTogcmVtb3Zl ICItYyINCj4gZnJvbSBCVUlMRF9DRkxBR1MNCj4gICAgIGI4YTY2MTcwMjY0MyBCYXNlVG9vbHMv U291cmNlL0M6IHNwbGl0ICItTzIiIHRvDQo+IEJVSUxEX09QVEZMQUdTDQo+ICAgICBiMGNhNWRh ZTc4ZmYgQmFzZVRvb2xzL1NvdXJjZS9DOiB0YWtlIEVYVFJBX09QVEZMQUdTDQo+IGZyb20gdGhl IGNhbGxlcg0KPiAgICAgODE1MDJjZWUyMGFjIEJhc2VUb29scy9Tb3VyY2UvQzogdGFrZSBFWFRS QV9MREZMQUdTDQo+IGZyb20gdGhlIGNhbGxlcg0KPiAgICAgKw0KPiAgICAgYWE0ZTBkZjFmMGM3 IEJhc2VUb29scy9WZnJDb21waWxlOiBob25vcg0KPiBFWFRSQV9MREZMQUdTDQo+IA0KPiAqIEZv cg0KPiA8aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3 PiwgSQ0KPiBwdXNoZWQgMjYNCj4gICBwYXRjaGVzOg0KPiANCj4gICAgIDhmZjEyMjExOTk0MSBF bXVsYXRvclBrZzogcmVxdWlyZSBHQ0M0OCBvciBsYXRlcg0KPiAgICAgOGQ3Y2RmYWU4Y2I4IE92 bWZQa2c6IHJlcXVpcmUgR0NDNDggb3IgbGF0ZXINCj4gICAgIGZkMTU4NDM3ZGNjZSBWbHYyVGJs dERldmljZVBrZzogYXNzdW1lIEdDQzQ4IG9yIGxhdGVyDQo+ICAgICA3YTlkYmYyYzk0ZDEgQmFz ZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlOiBkcm9wDQo+IEFSTS9BQVJDSCBzdXBwb3J0 IGZyb20gR0NDNDYvR0NDNDcNCj4gICAgIDQ4ZTY0NDk4Yzk2MSBCYXNlVG9vbHMvdG9vbHNfZGVm LnRlbXBsYXRlOiBmaXggdXAgTEYtDQo+IG9ubHkgbGluZSB0ZXJtaW5hdG9yDQo+ICAgICA3Mzgx YTY2MjdhNjYgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogc3RyaXANCj4gdHJhaWxpbmcg d2hpdGVzcGFjZQ0KPiAgICAgOWJiZjE1NmZhYWFkIEJhc2VUb29scy90b29sc19kZWYudGVtcGxh dGU6IHJlbW92ZQ0KPiBHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04gZGVhZC1lbmQNCj4gICAg IDNjNTYxM2M1OTMyYyBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOiByZW1vdmUNCj4gR0ND NDcgbGVhZiBkZWZpbml0aW9ucw0KPiAgICAgZmM4N2I4ZDdmNDExIEJhc2VUb29scy90b29sc19k ZWYudGVtcGxhdGU6IHByb3BhZ2F0ZQ0KPiBsb3NzIG9mIEdDQzQ3IHJlZmVyZW5jZXMNCj4gICAg IDkxYTY3ZTBmMTExZSBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOiByZW1vdmUNCj4gR0ND NDcgZG9jdW1lbnRhdGlvbg0KPiAgICAgMGYyMzRmYjhhNjYyIEJhc2VUb29scy90b29sc19kZWYu dGVtcGxhdGU6IHJlbW92ZQ0KPiBHQ0M0NiBsZWFmIGRlZmluaXRpb25zDQo+ICAgICA4M2E4ZjMx Mzg4NGEgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogcHJvcGFnYXRlDQo+IGxvc3Mgb2Yg R0NDNDYgcmVmZXJlbmNlcw0KPiAgICAgYmUzNTlmYTdjZWVjIEJhc2VUb29scy90b29sc19kZWYu dGVtcGxhdGU6IHJlbW92ZQ0KPiBHQ0M0NiBkb2N1bWVudGF0aW9uDQo+ICAgICAxNDU4YWYwY2Jj ZTAgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogcmVtb3ZlDQo+IEdDQzQ1IGxlYWYgZGVm aW5pdGlvbnMNCj4gICAgIDAyNDU3Njg5NmQ0MiBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRl OiBwcm9wYWdhdGUNCj4gbG9zcyBvZiBHQ0M0NSByZWZlcmVuY2VzDQo+ICAgICAzZTc3ZDIwZjVj YjMgQmFzZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogcmVtb3ZlDQo+IEdDQzQ1IGRvY3VtZW50 YXRpb24NCj4gICAgIGUwNDZkYzYwZmI4OSBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOiBy ZW1vdmUNCj4gR0NDNDQgbGVhZiBkZWZpbml0aW9ucw0KPiAgICAgMzhjNTcwZWZlZGUwIEJhc2VU b29scy90b29sc19kZWYudGVtcGxhdGU6IHByb3BhZ2F0ZQ0KPiBsb3NzIG9mIEdDQzQ0IHJlZmVy ZW5jZXMNCj4gICAgIDM4M2QyOTA5Njg0NiBCYXNlVG9vbHMvdG9vbHNfZGVmLnRlbXBsYXRlOiBy ZW5hbWUNCj4gR0NDNDRfQUxMX0NDX0ZMQUdTIHRvIEdDQzQ4X0FMTF9DQ19GTEFHUw0KPiAgICAg MGRiOTFkYWY1MjI4IEJhc2VUb29scy90b29sc19kZWYudGVtcGxhdGU6IGVsaW1pbmF0ZQ0KPiBH Q0M0NF9JQTMyX1g2NF9ETElOS19GTEFHUw0KPiAgICAgODRkMjFhYmY0ZTM2IEJhc2VUb29scy90 b29sc19kZWYudGVtcGxhdGU6IHJlbmFtZQ0KPiBHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04g dG8NCj4gR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9ODQo+ICAgICA1YzZjY2Q1MzI0NGIgQmFz ZVRvb2xzL3Rvb2xzX2RlZi50ZW1wbGF0ZTogcmVtb3ZlDQo+IGNvbW1lbnQgYWJvdXQgR0NDNDQg KyBMem1hRjg2Q29tcHJlc3MNCj4gICAgIDNiYzY1MzI2ZDZlZCBCYXNlVG9vbHMvdG9vbHNfZGVm LnRlbXBsYXRlOiByZW1vdmUNCj4gR0NDNDQgZG9jdW1lbnRhdGlvbg0KPiAgICAgZjcyODIwMjNl NzU4IEFybVBrZy9Bcm1Tb2Z0RmxvYXRMaWI6IGRyb3AgYnVpbGQgZmxhZ3MNCj4gc3BlY2lmaWMg dG8gR0NDNDYvR0NDNDcNCj4gICAgIDMwMGI4YzVmMTUwYyBDcnlwdG9Qa2cvQmFzZUNyeXB0TGli OiBkcm9wIGJ1aWxkIGZsYWdzDQo+IHNwZWNpZmljIHRvIEdDQzQ0DQo+ICAgICA3NDIzYmE5ZDQ5 OWIgUmV2ZXJ0ICJNZGVQa2c6IGF2b2lkDQo+IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpIG9uIEdD QyB2NC40Ig0KPiANCj4gICAoTm90ZSwgZnJvbSB0aGlzIGxpc3QsIDdhOWRiZjJjOTRkMSB3YXMg YXV0aG9yZWQgYnkNCj4gQXJkLCBJIGp1c3QNCj4gICBpbmNsdWRlZCBpdCBhdCB0aGUgcmlnaHQg c3BvdC4pDQo+IA0KPiBBbGwgb2YgdGhlc2UgcGF0Y2ggc2VyaWVzIHdlcmUgY2FyZWZ1bGx5IHN0 cnVjdHVyZWQsIGFuZA0KPiBjYXJlZnVsbHkNCj4gZG9jdW1lbnRlZCAoaW4gdGhlIGNvbW1pdCBt ZXNzYWdlcykuIEkgd291bGQgaGF2ZSBiZWVuDQo+IGRldmFzdGF0ZWQsIGhhZA0KPiB0aGV5IGJl ZW4gc3F1YXNoZWQuDQo+IA0KPiAoQW5kIGl0IHdvdWxkIGhhdmUgYmVlbiBxdWVzdGlvbmFibGUg dG8gc3F1YXNoIEFyZCdzDQo+IHBhdGNoIHdpdGggcGF0Y2hlcw0KPiBhdXRob3JlZCBieSBtZS4p DQo+IA0KPiANCj4gPiBJcyB0aGVyZSBhIHdheSBmb3IgR2l0SHViIHRvIHN1cHBvcnQgYm90aCBz cXVhc2gNCj4gY29tbWl0cyBmb3Igc29tZSBQUnMNCj4gPiBhbmQgcHJlc2VydmUgYSBwYXRjaCBz ZXJpZXMgZm9yIG90aGVyIFBScz8NCj4gDQo+IEkgZG9uJ3Qga25vdy4NCj4gDQo+IEJ1dCBob25l c3RseSwgd2hhdCBpcyB0aGUgcHVycG9zZSBvZiBzcXVhc2ggbWVyZ2VzPyBEb24ndA0KPiB3ZSBl eHBlY3QNCj4gKmFsbCogY29udHJpYnV0aW9ucyBpbiB3ZWxsIHN0cnVjdHVyZWQgcGF0Y2ggc2Vy aWVzPw0KPiANCj4gSWYgcmV2aWV3IGRpc2NvdmVycyBhbiBpc3N1ZSB3aXRoIHRoZSBzdHJ1Y3R1 cmUgb2YgdGhlDQo+IHNlcmllcyAoZm9yDQo+IGV4YW1wbGUsIG5vdCBidWlsZGFibGUgaW4gdGhl IG1pZGRsZSwgb3IgdGhlIHN0ZXBzIGFyZQ0KPiBub3QgbG9naWNhbCBpbg0KPiB0aGF0IG9yZGVy LCBvciBzb21lIHBhdGNoZXMgZG8gdG9vIG1hbnkgdGhpbmdzIGF0IG9uY2UNCj4gYW5kIHNob3Vs ZCBiZQ0KPiBzcGxpdCB1cCwgb3IgYSBwYXRjaCBpbiB0aGUgbWlkZGxlIGhhcyBhIHR5cG8pLCB0 aGUgZml4ZXMNCj4gc2hvdWxkbid0IGJlDQo+IGp1c3QgaGVhcGVkIG9uIHRvcC4gVGhlIHN1Ym1p dHRlciBzaG91bGQgcmVzdHJ1Y3R1cmUNCj4gKHJlYmFzZSkgdGhlDQo+IHNlcmllcywgYW5kIHN1 Ym1pdCB0aGUgcmV3b3JrZWQgc2VyaWVzIG9uIGEgbmV3IHRvcGljDQo+IGJyYW5jaCAvIHB1bGwN Cj4gcmVxdWVzdC4NCj4gDQo+IElzbid0IHRoaXMgdGhlIGNvbnRyaWJ1dGlvbiBwYXR0ZXJuIHdl J2QgbGlrZSB0byBzZWUgaW4NCj4gYWxsDQo+IHN1Yi1wcm9qZWN0cywgd2hlcmUgd2UgKHRoZSBU aWFub0NvcmUgY29tbXVuaXR5KSBoYXZlDQo+IHJldmlld2VyIC8NCj4gbWFpbnRhaW5lciByZXNw b25zaWJpbGl0aWVzPw0KPiANCj4gVGhhbmtzLA0KPiBMYXN6bG8NCj4gDQo+ID4gVGhhbmtzLA0K PiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IFttYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW9dDQo+ID4+IE9uIEJlaGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4gPj4gU2VudDogV2VkbmVzZGF5 LCBNYXkgOCwgMjAxOSAyOjU2IEFNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgc2Vh bi5icm9nYW5AbWljcm9zb2Z0LmNvbQ0KPiA+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFJG QyBmb3IgRWRrMi1MaWJyYXJ5DQo+ID4+DQo+ID4+IE9uIDA1LzA3LzE5IDIzOjM1LCBTZWFuIHZp YSBHcm91cHMuSW8gd3JvdGU6DQo+ID4+PiBSRkMgIEVkazItTGlicmFyeSBjcmVhdGlvbg0KPiA+ Pj4NCj4gPj4+IENyZWF0ZSBhIG5ldyB0aWFub2NvcmUgb3duZWQgcmVwb3NpdG9yeSB0byBob3N0 IGENCj4gPj4gcHl0aG9uIGxpYnJhcnkNCj4gPj4+IHBhY2thZ2UgaW4gc3VwcG9ydCBvZiBVRUZJ IGRldmVsb3BtZW50LiAgVGhpcyBwYWNrYWdlDQo+ID4+IHdpbGwgYWxsb3cgZWFzeQ0KPiA+Pj4g c2hhcmluZyBvZiBweXRob24gbGlicmFyeSBjb2RlIHRvIGZhY2lsaXRhdGUgcmV1c2UuDQo+ID4+ IEluY2x1c2lvbiBvZiB0aGlzDQo+ID4+PiBwYWNrYWdlIGFuZCBkZXBlbmRlbmN5IG1hbmFnZW1l bnQgc2hvdWxkIGJlIG1hbmFnZWQNCj4gPj4gdXNpbmcgUGlwL1B5cGkuIFRvDQo+ID4+PiBzdGFy dCB0aGlzIGlzIGEgc3VwcGxlbWVudGFsIHBhY2thZ2UgYW5kIGlzIG5vdA0KPiA+PiByZXF1aXJl ZCB0byBiZSB1c2VkDQo+ID4+PiBmb3IgZWRrMiBidWlsZHMuDQo+ID4+DQo+ID4+IFsxXQ0KPiA+ Pg0KPiA+Pj4gRXhhbXBsZXMgb2YgY29udGVudCBoZXJlDQo+ID4+Pg0KPiA+Pj4gKiBFZGsyIGZp bGUgdHlwZSBwYXJzaW5nDQo+ID4+PiAqIFVFRkkgc3RydWN0dXJlIGVuY29kZS9kZWNvZGUgaW4g cHl0aG9uDQo+ID4+PiAqIFBhY2thZ2luZyB0b29scyAoQ2Fwc3VsZXMgZ2VuZXJhdGlvbiwgc2ln bmluZywgSU5GDQo+ID4+IGdlbiwgQ2F0IGdlbikNCj4gPj4+ICogVFBNIHN1cHBvcnQgY29kZQ0K PiA+Pj4gKiBQb3RlbnRpYWxseSBtb3ZlIGNvbnRlbnQgZnJvbQ0KPiA+PiBiYXNldG9vbHMvc291 cmNlL3B5dGhvbi9jb21tb24vKg0KPiA+Pg0KPiA+PiBbMl0NCj4gPj4NCj4gPj4+ICogTm8gY29t bWFuZCBsaW5lIHRvb2xzL2ludGVyZmFjZQ0KPiA+Pj4NCj4gPj4+IE1haW50YWluZXJzDQo+ID4+ Pg0KPiA+Pj4gKiBTZWFuIEJyb2dhbg0KPiA+Pj4gKiBCcmV0IEJhcmtlbGV3DQo+ID4+PiAqIFBs YWNlaG9sZGVyIGZvciBleGlzdGluZyBtYWludGFpbmVyIGZyb20gdGhlDQo+ID4+IGJhc2V0b29s cw0KPiA+Pj4NCj4gPj4+IExpY2Vuc2UNCj4gPj4+DQo+ID4+PiAqIEJTRCArIFBhdGVudCAoZWRr MiBhbGlnbmVkKQ0KPiA+Pj4NCj4gPj4+IENvbnRyaWJ1dGlvbiBwcm9jZXNzIGFuZCBpc3N1ZSB0 cmFja2luZw0KPiA+Pj4NCj4gPj4+ICogRm9sbG93IEdpdGh1YiBQUiBwcm9jZXNzIGZvciBjb250 cmlidXRpb25zIGFuZA0KPiBpc3N1ZQ0KPiA+PiB0cmFja2luZw0KPiA+Pj4gKiBDb250cmlidXRv ciBmb3JrcyByZXBvIGluIGdpdGh1Yg0KPiA+Pj4gKiBDb250cmlidXRvciBjcmVhdGVzIGJyYW5j aCBmb3Igd29yaw0KPiA+Pj4gKiBDb250cmlidXRvciB1cGRhdGVzIHJlbGVhc2Ugbm90ZXMgdG8g aW5kaWNhdGUNCj4gY2hhbmdlDQo+ID4+IChpZiBuZWNlc3NhcnkpDQo+ID4+PiAqIENvbnRyaWJ1 dG9yIHN1Ym1pdHMgUFIgdG8gbWFzdGVyIGJyYW5jaCBvZg0KPiA+PiB0aWFub2NvcmUvRWRrMi1M aWJyYXJ5DQo+ID4+PiAgIHJlcG8NCj4gPj4+ICogUmV2aWV3IGZlZWRiYWNrIGlzIGdpdmVuIGlu IFBSDQo+ID4+PiAqIFB5dGhvbiBUZXN0cyBhcmUgcnVuIG9uIHRoZSByZXBvIChuZXcgY29udHJp YnV0aW9ucw0KPiA+PiBuZWVkIHVuaXQgdGVzdHMpDQo+ID4+PiAqIFB5dGhvbiBTdHlsZSAoZmxh a2U4KSBtdXN0IHBhc3MNCj4gPj4+ICogQWxsIHJldmlldyBmZWVkYmFjayBtdXN0IGJlIGNvbXBs ZXRlZCwgbWFpbnRhaW5lcnMNCj4gPj4gYXBwcm92ZWQsIGFuZA0KPiA+Pj4gICB0ZXN0cyBydW4g c3VjY2Vzc2Z1bGx5IGJlZm9yZSBQUiBpcyAqc3F1YXNoIG1lcmdlZCoNCj4gPj4gaW50byBtYXN0 ZXINCj4gPj4NCj4gPj4gVGhlIHNlbnRlbmNlcw0KPiA+Pg0KPiA+PiBbMV0gIlRvIHN0YXJ0IHRo aXMgaXMgYSBzdXBwbGVtZW50YWwgcGFja2FnZSBhbmQgaXMNCj4gbm90DQo+ID4+IHJlcXVpcmVk IHRvIGJlDQo+ID4+ICAgICAgdXNlZCBmb3IgZWRrMiBidWlsZHMuIg0KPiA+Pg0KPiA+PiBbMl0g IlBvdGVudGlhbGx5IG1vdmUgY29udGVudCBmcm9tDQo+ID4+IGJhc2V0b29scy9zb3VyY2UvcHl0 aG9uL2NvbW1vbi8qIg0KPiA+Pg0KPiA+PiBmb3Jlc2hhZG93IHRoYXQgc3VjaCBhIGNvZGUgbW92 ZW1lbnQgbWlnaHQgaGFwcGVuIGRvd24NCj4gPj4gdGhlIHJvYWQsIGFuZCB0aGUNCj4gPj4gZXh0 ZXJuYWwgcGFja2FnZSBjb3VsZCBiZWNvbWUgYSByZXF1aXJlbWVudCBmb3INCj4gYnVpbGRpbmcN Cj4gPj4gZWRrMi4NCj4gPj4NCj4gPj4gVGhhdCBzdGVwIHdvdWxkIG1lYW4gdGhlIGZvbGxvd2lu ZzoNCj4gPj4NCj4gPj4gKGEpIEVkazIgd291bGQgbm90IHJlbWFpbiBidWlsZGFibGUgZnJvbSBh IHNpbmdsZQ0KPiA+PiBjb21tYW5kDQo+ID4+DQo+ID4+ICAgICBnaXQgY2xvbmUgLS1yZWN1cnNl LXN1Ym1vZHVsZXMNCj4gPj4NCj4gPj4gICAgIEJ1aWxkaW5nIGVkazIgd291bGQgcmVxdWlyZSBH TlUvTGludXggdXNlcnMgdG8NCj4gc3RhcnQNCj4gPj4gdHJhY2tpbmcNCj4gPj4gICAgIHBhY2th Z2VzIHdpdGggInBpcCIsIHdoaWNoIGlzIGluZGVwZW5kZW50IG9mIGFueQ0KPiA+PiBnaXZlbiBk aXN0cm8ncyBvd24NCj4gPj4gICAgIHBhY2thZ2UgbWFuYWdlbWVudCwgYW5kIG1heSBjYXVzZSBj b25mbGljdHMgaWYgbm90DQo+ID4+IHVzZWQgY2FyZWZ1bGx5Og0KPiA+Pg0KPiA+Pg0KPiA+Pg0K PiBodHRwczovL2RldmVsb3Blci5mZWRvcmFwcm9qZWN0Lm9yZy90ZWNoL2xhbmd1YWdlcy9weXRo bw0KPiA+PiBuL3B5cGktaW5zdGFsbGF0aW9uLmh0bWwNCj4gPj4NCj4gPj4gICAgIFRoaXMgcmVx dWlyZW1lbnQgb24gInBpcCIgd291bGQgb25seSBnbyBhd2F5IG9uY2UNCj4gPj4gdGhlIGV4dGVy bmFsDQo+ID4+ICAgICBweXRob24gZGVwZW5kZW5jaWVzIHdlcmUgcGFja2FnZWQgZm9yIGF0IGxl YXN0IHRoZQ0KPiA+PiBsYXJnZXIgR05VL0xpbnV4DQo+ID4+ICAgICBkaXN0cm9zLg0KPiA+Pg0K PiA+PiAoYikgRWRrMiB1c2VycyBydW5uaW5nIGludG8gYnVpbGQgcHJvYmxlbXMgcmVsYXRlZCB0 bw0KPiA+PiB0aGUgZXh0ZXJuYWwNCj4gPj4gICAgIHB5dGhvbiBkZXBlbmRlbmNpZXMgd291bGQg aGF2ZSB0byBjb250cmlidXRlDQo+IHRocm91Z2gNCj4gPj4gYSBnaXRodWItb25seQ0KPiA+PiAg ICAgd29ya2Zsb3cuIFRoYXQncyBub3QgYSBkZWFsLWJyZWFrZXIgcGVyIHNlIC0tIGlmDQo+IHdl DQo+ID4+IHdhbnQgdG8NCj4gPj4gICAgIGNvbnRyaWJ1dGUgdG8gb3RoZXIgZWRrMiBkZXBlbmRl bmNpZXMsIHN1Y2ggYXMNCj4gPj4gT3BlblNTTCBvciBuYXNtLCB3ZQ0KPiA+PiAgICAgYWxzbyBo YXZlIHRvIGNvbmZvcm0gdG8gdGhlaXIgc3BlY2lmaWMgZGV2ZWxvcG1lbnQNCj4gPj4gbW9kZWxz LCBjbGVhcmx5Lg0KPiA+Pg0KPiA+PiAgICAgSG93ZXZlciwgInNxdWFzaCBtZXJnZSIgaXMgYSBj YXRhc3Ryb3BoaWNhbGx5IGJhZA0KPiA+PiBkZXZlbG9wbWVudCBtb2RlbCwNCj4gPj4gICAgIGFu ZCBJJ2Qgb2JqZWN0IHRvIGludHJvZHVjaW5nIGEgbmV3IGVkazIgYnVpbGQNCj4gPj4gZGVwZW5k ZW5jeSB0aGF0DQo+ID4+ICAgICBmb2xsb3dlZCB0aGF0IG1vZGVsLg0KPiA+Pg0KPiA+PiAgICAg KFRoZXJlIGFyZSBvdGhlciBpc3N1ZXMgd2l0aCB0aGUgR2l0SHViLmNvbQ0KPiA+PiBkZXZlbG9w bWVudCB3b3JrZmxvdywgYXMNCj4gPj4gICAgIGRpc2N1c3NlZCBlbHNld2hlcmUsIGJ1dCAic3F1 YXNoIG1lcmdlIiB0YWtlcyB0aGUNCj4gPj4gY2FrZS4pDQo+ID4+DQo+ID4+IFByb2JsZW0gKGEp IHdvdWxkIGJlIHNvbHZhYmxlIGluIHRoZSBsb25nIHRlcm0NCj4gKHRocm91Z2gNCj4gPj4gY29s bGFib3JhdGlvbg0KPiA+PiB3aXRoIGRpc3RybyBtYWludGFpbmVycywgaS5lLiBkb3duc3RyZWFt IHBhY2thZ2luZyksDQo+IGJ1dA0KPiA+PiBwcm9ibGVtIChiKQ0KPiA+PiB3b3VsZCBub3QgYmUu IFRodXMgSSdtIGZpbmUgd2l0aCB0aGUgcHJvcG9zYWwsIGluIGl0cw0KPiA+PiBjdXJyZW50IGZv cm0sIG9ubHkNCj4gPj4gaWYgdGhlIG5ldyBwYWNrYWdlIGlzIDEwMCUgYW4gYWRkaXRpb24gb24g dG9wIG9mIGVkazIsDQo+ID4+IGV2ZW4gaW4gdGhlIGxvbmcNCj4gPj4gdGVybSwgYW5kIG5vdCBp biBhbnkgcGFydCBpbnRlbmRlZCBhcyBhIGZ1dHVyZQ0KPiA+PiByZXBsYWNlbWVudCBmb3IgY3Vy cmVudA0KPiA+PiBlZGsyIGZ1bmN0aW9uYWxpdHkuDQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4g TGFzemxvDQo+ID4+DQo+ID4+IA0KPiA+DQoNCg==