From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 951D0203BBBB4 for ; Thu, 17 May 2018 00:58:00 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 May 2018 00:58:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,409,1520924400"; d="scan'208";a="51587133" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga003.jf.intel.com with ESMTP; 17 May 2018 00:58:00 -0700 Received: from fmsmsx152.amr.corp.intel.com (10.18.125.5) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 17 May 2018 00:57:59 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX152.amr.corp.intel.com (10.18.125.5) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 17 May 2018 00:57:59 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.240]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.6]) with mapi id 14.03.0319.002; Thu, 17 May 2018 15:57:57 +0800 From: "Ni, Ruiyu" To: =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , "Laszlo Ersek" , "edk2-devel@lists.01.org" CC: "Dong, Eric" , "ard.biesheuvel@linaro.org" , "Justen, Jordan L" , "gsomlo@gmail.com" , "Zeng, Star" Thread-Topic: [edk2] Proposition of a BmEnumerateBootOptions() hook. Thread-Index: AdPrsgMo2EIXJLdYQImjwNC1Y2yr9AAMMsgAAAnJyAAAAb2LAAADtoyAAAEoFgAAAjDhAABhwEWw Date: Thu, 17 May 2018 07:57:56 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BC9E86C@SHSMSX104.ccr.corp.intel.com> References: <12b0e557-4f3b-3766-1e52-c069c02b692e@redhat.com> <9d7aa3e0-d342-ab5a-f54b-2a853a5fcf57@redhat.com> <2aaccb36-5b8b-6f63-a9bb-7f3e7910ae2f@redhat.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: Proposition of a BmEnumerateBootOptions() hook. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 May 2018 07:58:00 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNClRoYW5rcy9SYXkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBl ZGsyLWRldmVsIDxlZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnPiBPbiBCZWhhbGYgT2Yg TWFydmluDQo+IEjDpHVzZXINCj4gU2VudDogV2VkbmVzZGF5LCBNYXkgMTYsIDIwMTggMToxNSBB TQ0KPiBUbzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQo+IENjOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IERvbmcsIEVy aWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+Ow0KPiBhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnOyBK dXN0ZW4sIEpvcmRhbiBMIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPjsNCj4gZ3NvbWxvQGdt YWlsLmNvbTsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6 IFtlZGsyXSBQcm9wb3NpdGlvbiBvZiBhIEJtRW51bWVyYXRlQm9vdE9wdGlvbnMoKSBob29rLg0K PiANCj4gVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIQ0KPiBDb21tZW50cyBpbmxpbmUNCj4gDQo+ IFJlZ2FyZHMsDQo+IE1hcnZpbi4NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiBGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+IFNlbnQ6IFR1 ZXNkYXksIE1heSAxNSwgMjAxOCA2OjEyIFBNDQo+ID4gVG86IE1hcnZpbiBIw6R1c2VyIDxNYXJ2 aW4uSGFldXNlckBvdXRsb29rLmNvbT47IGVkazItDQo+ID4gZGV2ZWxAbGlzdHMuMDEub3JnDQo+ ID4gQ2M6IGdzb21sb0BnbWFpbC5jb207IGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc7IHJ1aXl1 Lm5pQGludGVsLmNvbTsNCj4gPiBlcmljLmRvbmdAaW50ZWwuY29tOyBzdGFyLnplbmdAaW50ZWwu Y29tOyBqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tDQo+ID4gU3ViamVjdDogUmU6IFtlZGsyXSBQ cm9wb3NpdGlvbiBvZiBhIEJtRW51bWVyYXRlQm9vdE9wdGlvbnMoKSBob29rLg0KPiA+DQo+ID4g T24gMDUvMTUvMTggMTc6MzgsIE1hcnZpbiBIw6R1c2VyIHdyb3RlOg0KPiA+ID4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPj4gRnJvbTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVk aGF0LmNvbT4NCj4gPiA+PiBTZW50OiBUdWVzZGF5LCBNYXkgMTUsIDIwMTggMzo1MyBQTQ0KPiA+ ID4+IFRvOiBNYXJ2aW4gSMOkdXNlciA8TWFydmluLkhhZXVzZXJAb3V0bG9vay5jb20+OyBlZGsy LQ0KPiA+ID4+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4+IENjOiBlcmljLmRvbmdAaW50ZWwu Y29tOyBzdGFyLnplbmdAaW50ZWwuY29tOw0KPiA+ID4+IGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5j b207IGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc7DQo+ID4gPj4gcnVpeXUubmlAaW50ZWwuY29t OyBHYWJyaWVsIEwuIFNvbWxvIChHTWFpbCkgPGdzb21sb0BnbWFpbC5jb20+Ow0KPiA+ID4+IEdl cmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiA+ID4+IFN1YmplY3Q6IFJlOiBbZWRr Ml0gUHJvcG9zaXRpb24gb2YgYSBCbUVudW1lcmF0ZUJvb3RPcHRpb25zKCkgaG9vay4NCj4gPiA+ Pg0KPiA+ID4+IE9uIDA1LzE1LzE4IDE1OjAyLCBNYXJ2aW4gSMOkdXNlciB3cm90ZToNCj4gPg0K PiA+ID4+PiAzLjI6IEkgdGhpbmsgYWRkaW5nIHRoZW0gYXMgdm9sYXRpbGUgdmFyaWFibGVzIGlz IHRoZSBiZXR0ZXINCj4gPiA+Pj4gYXBwcm9hY2gsIGV4Y2VwdCBmb3IgcGxhdGZvcm0tc3BlY2lm aWMgY29kZSwgd2hpY2ggc2hvdWxkIGJlDQo+ID4gPj4+IGNhcGFibGUgb2YgYWRkaW5nIE5WIG9w dGlvbnMuIFRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgdGhhdA0KPiA+ID4+PiB1c3VhbGx5 IHRoZSBmb3VuZCB2b2x1bWVzIGFyZSByZW1vdmFibGUgdm9sdW1lcyAoc3VjaCBhcyBVU0IgRmxh c2gNCj4gPiA+Pj4gRHJpdmVzKSBhbmQgd2lsbCBiZSBjbGVhbmVkIGF3YXkgc29vbiBhZ2FpbiBh bnl3YXkuICJFeHRyYSB3aXNoZXMiDQo+ID4gPj4+IGZvciBib290IG9wdGlvbnMgc2hvdWxkIGJl IGFkZGVkIHZpYSB0aGUgVUVGSSBTZXR1cCBtZW51IG9yIFVFRkkNCj4gU2hlbGwuDQo+ID4gPj4N Cj4gPiA+PiBJIGNhbid0IHJlYWxseSBjb21tZW50IG9uIHRoaXMgLS0gdGhlIGZhY3QgdGhhdCBC b290IyMjIyBvcHRpb25zDQo+ID4gPj4gYXJlDQo+ID4gPj4gbm9uLSB2b2xhdGlsZSBjb21lcyBm cm9tIHRoZSBVRUZJIHNwZWMuIEknbSBub3QgaW1tZWRpYXRlbHkgc3VyZQ0KPiA+ID4+IHdoYXQg SSB0aGluayBvZiB0aGVpciBzdWdnZXN0ZWQgdm9sYXRpbGl0eSwgYnV0IHRoaXMgaXMgbGlrZWx5 DQo+ID4gPj4gc29tZXRoaW5nIGZvciB0aGUNCj4gPiBVU1dHIHRvIGRpc2N1c3MuDQo+ID4gPg0K PiA+ID4gSSB0aGluayBJIG1pZ2h0IGhhdmUgYmVlbiB1bmNsZWFyIGhlcmUsIEkgd2FzIHNvbGVs eSByZWZlcnJpbmcgdG8NCj4gPiA+IHRoZSBCb290DQo+ID4gb3B0aW9ucyBjcmVhdGVkIGJ5IHRo ZSBlbnVtZXJhdGlvbiBwcm9jZXNzIGFuZCBub3QgQm9vdCMjIyMgaW4gZ2VuZXJhbC4NCj4gPiA+ IEkgd291bGRuJ3Qga25vdyBvZiBhbnl0aGluZyByZXN0cmljdGluZyBhbGwgQm9vdCMjIyMgdmFy aWFibGVzIHRvIGJlDQo+ID4gPiBOViwgZG8NCj4gPiB5b3UgaGFwcGVuIHRvIGhhdmUgYSBxdW90 ZT8NCj4gPg0KPiA+IFNlZSAiMy4zIEdsb2JhbGx5IERlZmluZWQgVmFyaWFibGVzIiBhbmQgIlRh YmxlIDEwLiBHbG9iYWwgVmFyaWFibGVzIg0KPiA+IGluIHRoZQ0KPiA+IFVFRkktMi43IHNwZWM6 DQo+ID4NCj4gPiAgIFsuLi5dIFRoZSB2YXJpYWJsZXMgd2l0aCBhbiBhdHRyaWJ1dGUgb2YgTlYg YXJlIG5vbnZvbGF0aWxlLiBbLi4uXQ0KPiA+DQo+ID4gICBbLi4uXQ0KPiA+DQo+ID4gICBWYXJp YWJsZSBOYW1lICBBdHRyaWJ1dGUgICBEZXNjcmlwdGlvbg0KPiA+ICAgLS0tLS0tLS0tLS0tLSAg LS0tLS0tLS0tICAgLS0tLS0tLS0tLS0NCj4gPiAgIFsuLi5dDQo+ID4gICBCb290IyMjIyAgICAg ICBOViwgQlMsIFJUICBbLi4uXQ0KPiA+ICAgWy4uLl0NCj4gDQo+IEkgaGFkIGhvcGVkIGl0IHdh cyBhIHJlY29tbWVuZGF0aW9uLCBidXQgaW5kZWVkIGl0IHNlZW1zIHRvIGJlIG1hbmRhdG9yeS4N Cj4gV2hhdCdzIHlvdXIgb3BpbmlvbiBvbiB0aGlzIGZhY3QgYW5kIGhvdyBkbyB5b3UgdGhpbmsg dGhlIGNoYW5jZXMgYXJlIE5WDQo+IGNvdWxkIGJlIG1hZGUgb3B0aW9uYWw/DQo+IA0KPiA+DQo+ ID4gPj4gU2Vjb25kLCBqdXN0IGJlY2F1c2UgYSBib290IG9wdGlvbiBmYWlscywgaXQgc2hvdWxk IG5vdCBiZSByZW1vdmVkLg0KPiA+ID4+IEZvciBleGFtcGxlLCBhIG5ldGJvb3Qgb3B0aW9uIGNv dWxkIGZhaWwsIG9yIGEgVVNCIGRyaXZlIG1pZ2h0IG5vdA0KPiA+ID4+IGJlIGNvbm5lY3RlZCAo dGVtcG9yYXJpbHkpLiBJIGRvbid0IHRoaW5rIHRoYXQncyBncm91bmRzIGVub3VnaCBmb3INCj4g PiA+PiBzdW1tYXJpbHkgcmVtb3ZpbmcgYSBib290IG9wdGlvbiwgaW4gc2hhcmVkIHJlZmVyZW5j ZSBjb2RlLg0KPiA+ID4NCj4gPiA+IE9oLCBJIHdhcyBqdXN0IHRhbGtpbmcgYWJvdXQgdGhlIHBv c3NpYmlsaXR5LCBiZWNhdXNlIHRoZSBjdXJyZW50DQo+ID4gPiBjb2RlIGRvZXMNCj4gPiByZW1v dmUgb3B0aW9ucyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuDQo+ID4gPiBIb3dldmVyLCBmb3Ig VVNCIGRldmljZXMgYXMgeW91IGhhdmUgbWVudGlvbmVkLCBJIGRvIHNlZSB0aGlzIGdvb2QNCj4g PiBwcmFjdGljZSBzbyBsb25nIGFzIHRoZSBvcHRpb24gaXMgdm9sYXRpbGUuDQo+ID4gPiBUaGVy ZSBpcyBubyBwb2ludCBpbiBleHBvc2luZyBhIGJvb3Qgb3B0aW9uIHRvIGEgcmVtb3ZhYmxlIGRl dmljZQ0KPiA+ID4gdGhhdCBpcw0KPiA+IG5vdCBhdHRhY2hlZCBpZiBub3QgdG8gcHJldmVudCB1 bm5lY2Vzc2FyeSBGbGFzaCBjeWNsZXMgYXMgZmFyIGFzIEkgY2FuIHRoaW5rLg0KPiA+ID4gRG8g eW91IGhhcHBlbiB0byBoYXZlIHdvcnJpZXMgYWJvdXQgYSBzY2VuYXJpbyBJIGRpZCBub3QgY29u c2lkZXI/DQo+ID4NCj4gPiBTdXJlOyBpdCdzIGEgc2ltcGxlIHNjZW5hcmlvOiB0aGUgdXNlciBt aWdodCB3YW50IHRoZSBzeXN0ZW0gdG8NCj4gPiBhdXRvbWF0aWNhbGx5IGJvb3Qgb2ZmIG9mIGEg VVNCIGRyaXZlIHdoZW5ldmVyIHRoZXkgY29ubmVjdCBpdCwgYmVmb3JlDQo+ID4gcG93ZXJpbmcg b24gb3IgcmVib290aW5nIHRoZSBzeXN0ZW0sIHJhdGhlciB0aGFuIGJvb3QgZnJvbSB0aGUgaGFy ZCBkcml2ZS4NCj4gDQo+IFJlbWVtYmVyIHRoYXQgcG9pbnQgd2FzIG1hZGUgaW4gdGhlIGNvbnRl eHQgb2YgZW51bWVyYXRpb24uIFdoYXQgSSB3YXMNCj4gc2F5aW5nIGlzIHRoYXQgYm9vdCBvcHRp b25zIGNyZWF0ZWQgYnkgdGhlIGVudW0gY29kZSwgZm9yIHJlbW92YWJsZSBkcml2ZXMsDQo+IGFy ZSBmaW5lIHRvIGJlIGdvbmUgKGFzIHRoZXkgYXJlIHZvbGF0aWxlLCBvciBwcm9hY3RpdmVseSBy ZW1vdmVkIHdoZW4gTlYpDQo+IGFmdGVyIGEgcmVib290Lg0KPiBJZiBhIHVzZXIgd2FudHMgdG8g Ym9vdCBmcm9tIHN1Y2ggYW4gVVNCIGRldmljZSBieSBkZWZhdWx0LCBpbiBteSBvcGluaW9uDQo+ IHRoZXkgc2hvdWxkIG1hbnVhbGx5IGNyZWF0ZSBhIGJvb3Qgb3B0aW9uIGZvciBpdC4gT3RoZXJ3 aXNlLCBpZiBJIGRvIG5vdA0KPiBtaXN1bmRlcnN0YW5kIHlvdXIgcG9pbnQsIHlvdSBhcmUgc3Vn Z2VzdGluZyB0aGUgZmlybXdhcmUgdG8ga2VlcCB0cmFjayBvZg0KPiBldmVyeSBzaW5nbGUgYm9v dGFibGUgVVNCIGRldmljZSBldmVyIGF0dGFjaGVkLg0KPiANCj4gPg0KPiA+IChGb3IgVVNCIGRl dmljZXMsICJVU0IgV1dJRCIgYW5kICJVU0IgQ2xhc3MiIGRldmljZSBwYXRoIG5vZGVzIGFyZQ0K PiA+IGRlZmluZWQgYnkgdGhlIHNwZWMsIHNvIHRoZSB1c2VyIGlzbid0IGV2ZW4gZXhwZWN0ZWQg dG8gcGx1ZyB0aGUgZHJpdmUNCj4gPiBpbnRvIHRoZSBzYW1lIFVTQiBwb3J0LCBmb3IgdGhlIGRy aXZlIHRvIGJlIGZvdW5kIHVuaXF1ZWx5LikNCj4gDQo+IEFjdHVhbGx5IGRpZG4ndCBrbm93IHRo YXQsIHRoYW5rcyBmb3IgdGhlIGZhY3QhDQo+IA0KPiA+DQo+ID4gPj4+IFByaW1hcnkgcGFydGl0 aW9uOiBUaGUgc28tY2FsbGVkICJTdGFydHVwIFZvbHVtZSIgdW5mb3J0dW5hdGVseSBpcw0KPiA+ ID4+PiBhIGJpdCB0cmlja2llci4gRm9yIGl0LCBhIHByYWN0aWNhbGx5IGludmFsaWQgQm9vdCBP cHRpb24gaXMNCj4gPiA+Pj4gYWRkZWQsIHdoaWNoIGlzIGFuIGV4cGFuZGVkIGRldmljZSBwYXRo IHRvIHRoZSB2b2x1bWUgdG8gYmUNCj4gPiA+Pj4gYm9vdGVkLCBob3dldmVyIHdpdGhvdXQgaGF2 aW5nIGEgRmlsZSBEZXZpY2UgUGF0aCBOb2RlIGFwcGVuZGVkLg0KPiA+ID4+DQo+ID4gPj4gVGhp cyBkb2Vzbid0IGltbWVkaWF0ZWx5IHNlZW0gaW52YWxpZCAtLSBpZiBtZW1vcnkgc2VydmVzLCB5 b3UgY2FuDQo+ID4gPj4gaGF2ZSBcRUZJXEJPT1RcQk9PVDxhcmNoPi5lZmkgb24gZml4ZWQgbWVk aWEgYXMgd2VsbCwgYW5kIGlmIGEgYm9vdA0KPiA+ID4+IG9wdGlvbiBvbmx5IG5hbWVzIHRoZSBI RCgpIGluIHF1ZXN0aW9uLCB0aGF0IGRlZmF1bHQgYm9vdCBwYXRoIHdpbGwNCj4gPiA+PiBiZQ0K PiA+IGxhdW5jaGVkIG9mZiBvZiBpdC4NCj4gPiA+DQo+ID4gPiBJIHRoaW5rIGZvciBhIEJvb3Qj IyMjIG9wdGlvbiwgaXQgaXMgYWx3YXlzIGludmFsaWQsDQo+ID4NCj4gPiBJIGRpc2FncmVlLiBJ J2xsIGhhdmUgdG8gZGVmZXIgdG8gUmF5IGhlcmUsIGJ1dCBpbiBteSBleHBlcmllbmNlLCBlZGsy DQo+ID4gcHJhY3RpY2UgaXMgdGhhdCBpZiB5b3UgaGF2ZSBhIGJvb3Qgb3B0aW9uIHdob3NlIGRl dnBhdGggZW5kcyBpbiBhDQo+ID4gSEQoKSBub2RlLCB0aGVuIGFuIFVFRkkgaW1hZ2Ugb24gdGhh dCBwYXJ0aXRpb24gdW5kZXIgdGhlIGZpbGVwYXRoDQo+ID4gXEVGSVxCT09UXEJPT1Q8YXJjaD4u ZWZpIHdpbGwgYmUgdHJpZWQgZm9yIGJvb3RpbmcuIEFzIGZhciBhcyBJIGNhbg0KPiA+IHNlZSwg dGhpcyBpcyBuZWl0aGVyIG1hbmRhdGVkIG5vciBmb3JiaWRkZW4gYnkgdGhlIHNwZWMuIEFueXdh eSwgZm9yIFJheQ0KPiB0byBhbnN3ZXIgYXV0aG9yaXRhdGl2ZWx5Lg0KPiANCj4gSW5kZWVkIGl0 IGlzIG5laXRoZXIgZXhwbGljaXRseSBhbGxvd2VkIG5vciBmb3JiaWRkZW4sIEkgY29uY2x1ZGVk IGl0IGJlaW5nDQo+IGludmFsaWQgZnJvbSB0aGUgc3RyaWN0bmVzcyBvZiBob3cgdGhlIGJvb3Rp bmcgcHJvdG9jb2wgaXMgZGVmaW5lZC4NCj4gSWYgaXQgaXMgZm9yYmlkZGVuLCBpdCBpcyBpbXBs aWNpdCwgYnV0IGlmIGl0J3Mgbm90IHRoZSBjYXNlLCB0aGUgYmV0dGVyIGl0IGlzIGZvciB0aGlz DQo+IHB1cnBvc2UuDQo+IA0KPiA+DQo+ID4gPiBiZWNhdXNlIHRoZSBkZWZhdWx0IHBhdGggaXMg ZGVmaW5lZCB0byBiZSB1c2VkIGluIHRoZSAic2Nhbm5pbmcgcGhhc2UiDQo+ID4gb25jZSBubyBC b290IyMjIyB2YXJpYWJsZSBjb3VsZCBiZSBmb3VuZC4NCj4gPiA+IEFsc28sIHVuZm9ydHVuYXRl bHkgdGhlIHBhdGggaXMgYWxzbyBzdG9yZWQgdmlhIGJsZXNzIGFuZCBkZWZpbml0ZWx5DQo+ID4g PiBuZXZlciB0aGUNCj4gPiBVRUZJIHN0YW5kYXJkIG9uZSwgc28gc3VwcG9ydGluZyB0aGlzIHZl bmRvci1zcGVjaWZpYyBzY2VuYXJpbw0KPiA+IGRlZmluaXRlbHkgcmVxdWlyZXMgc3BlY2lhbCBo YW5kbGluZy4NCj4gPiA+IERvIHlvdSBoYXZlIGFueSBvcGluaW9uIG9uIHRoZSBwcm9wb3NlZCBz ZWNvbmQgaG9vaz8NCj4gPg0KPiA+IFBlcnNvbmFsbHkgSSByZW1haW4gdW5jb252aW5jZWQgdGhh dCB0aGUgc2Vjb25kIGhvb2sgaXMgbmVlZGVkICh0byBiZQ0KPiA+IGludm9rZWQgZnJvbSBjb3Jl IEJkc0R4ZSBvciBVZWZpQm9vdE1hbmFnZXJMaWIgY29kZSkuIEJ1dCwgdGhhdCdzIGp1c3QNCj4g PiBteSBvcGluaW9uIDopDQo+IA0KPiBXZWxsLCB0aGUgb25seSBhbHRlcm5hdGl2ZSBJIHNlZSBh cmUgbW9kaWZ5aW5nIHRoZSBlbnRyeSBwcmUtQkRTIChzbGlnaHRseQ0KPiB1bmNsZWFuKSwgZm9y a2luZyBvZmYgKHVucGxlYXNhbnQpIG9yIG5vdCBzdXBwb3J0aW5nIGl0IGF0IGFsbCAodW5wbGVh c2FudCB0b28sDQo+IGJ1dCBzdXBwb3J0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQsIGFsdGhv dWdoIHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSkuDQo+IA0KPiA+DQo+ID4gSW4gZ2VuZXJhbCBJIGZp bmQgdGhhdCBsaWJyYXJ5IEFQSXMgKGVzcGVjaWFsbHkgYSAqc2V0KiBvZiBsaWJyYXJ5DQo+ID4g QVBJcykgYXJlIHZlcnkgaGFyZCB0byBkZXNpZ24gKGJlY2F1c2Ugd2UgY2FuJ3Qgc2VlIHRoZSBm dXR1cmUpLiBTbywNCj4gPiAib3JnYW5pYyBncm93dGgiIHdvcmtzIGJldHRlciBpbiBwcmFjdGlj ZSAoZXZlbiBpZiBpdCBsZWFkcyB0byAibGVzcw0KPiA+IHdlbGwgb3JnYW5pemVkIiBzZXRzIG9m IEFQSXMpLiBUaGlzIGlzIHRvIHNheSB0aGF0LCBpZiB5b3UgY2FuIHByb3Bvc2UNCj4gPiBhIGhv b2sgYW5kIGltbWVkaWF0ZWx5IGRlbW9uc3RyYXRlIHRoYXQgaXQgc2F2ZXMgY29kZSBmb3IsIGFu ZC9vcg0KPiA+IHNpbXBsaWZpZXMsIG11bHRpcGxlIHBsYXRmb3JtcywgdGhlbiB0aGUgbmV3IEFQ SSBtaWdodCBiZSBqdXN0aWZpZWQuDQo+IChQZXJzb25hbGx5LCBJIHVzdWFsbHkgYXJndWUgZm9y ICJ0aHJlZSBjYWxsIHNpdGVzIiBhcyBhIG1pbmltdW0uDQo+ID4gVHdvIG1pZ2h0IGJlIGVub3Vn aCBpZiB0aGUgY29kZSBleHRyYWN0ZWQgaXMgcGFydGljdWxhcmx5IGJhcm9xdWUsIG9yDQo+ID4g dW5kZXJnb2VzIGZyZXF1ZW50DQo+ID4gY2hhbmdlcy4pDQo+IA0KPiBUaGUgInByb2JsZW0iIGlz IHRoYXQgYm90aCBob29rcyBhcmUgbm90IGludHJvZHVjZWQgZm9yIHNoYXJpbmcgY29kZSBidXQg Zm9yDQo+IGdpdmluZyB0aGUgcGxhdGZvcm0gZGV2ZWxvcGVyIG1vcmUgZnJlZWRvbSB3aXRob3V0 IGZvcmtpbmcgb2ZmLg0KPiBXaGV0aGVyIHN1Y2ggYXJlIGFjY2VwdGVkIGVuZHMgdXAgYmVpbmcg ZW50aXJlbHkgdGhlIG1haW50YWluZXIncw0KPiBwcmVmZXJlbmNlLCBJIGd1ZXNzLg0KDQpGb3Jr aW5nIG9mZiBpcyBuZXZlciBhbiBvcHRpb24uIEluIG15IG9waW5pb24sIGlmIGEgZ2VuZXJpYyBs aWJyYXJ5L2RyaXZlciBuZWVkcw0KZm9ya2luZywgdGhhdCdzIGEgZmFpbHVyZSBpbmRpY2F0b3Ig b2YgZGVzaWduLg0KRnJlZWRvbSBpcyB2ZXJ5IGltcG9ydGFudC4gSSBoYXZlIHNlZW4gbWFueSBp bnRlcm5hbCBwbGF0Zm9ybSBCRFMNCmltcGxlbWVudGF0aW9ucy4gVGhlIHBsYXRmb3JtIHJlcXVp cmVtZW50cyBhcmUgdmVyeSBkaWZmZXJlbnQgYW5kIHN0cmFuZ2Ugc29tZXRpbWVzLg0KU28gdGhl IGJlZm9yZWNvbnNvbGUvYWZ0ZXJjb25zb2xlIGhvb2sgcG9pbnRzIHdlcmUgdXNlZC4NClRoZXkg YXJlIHZlcnkgbmF0dXJhbC4gRmlyc3QgaG9vayBwb2ludCBpcyB3aGVuIHRoZSBwbGF0Zm9ybSBk b2Vzbid0IGhhdmUgbW91dGggYW5kIGVhcnMuDQpUaGUgb3RoZXIgaG9vayBwb2ludCBpcyB3aGVu IHBsYXRmb3JtIGNhbiBzcGVhayBhbmQgaGVhci4NCg0KPiANCj4gPg0KPiA+ID4+IEkgaGF2ZSBh IG1vcmUgZ2VuZXJhbCBjb21tZW50IGluIHRoZSBlbmQ6IEkgZG91YnQgSSBjb3VsZCBsZWdhbGx5 DQo+ID4gPj4gdGVzdCBhbiBPU1ggZ3Vlc3Qgb24gbm9uLUFwcGxlIGhhcmR3YXJlLCBzbyBJIHdv bid0IHRyeSAoYW5kIEknbGwNCj4gPiA+PiBtb3N0IGxpa2VseSBub3QgYnV5IG9yIG90aGVyd2lz ZSBwcm9jdXJlIE9TWCwgbGV0IGFsb25lIEFwcGxlDQo+ID4gPj4gaGFyZHdhcmUsIGp1c3QgZm9y IHRoaXMpLiBUaGF0IG1lYW5zLCBpZiB5b3UgcG9zdCBwYXRjaGVzLCBteSBtYWluDQo+ID4gPj4g Zm9jdXMgd2lsbCBiZSBvbiBrZWVwaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yIHJlZ3Jlc3Npb24t ZnJlZSwgYW5kDQo+ID4gPj4gKHNlY29uZGFyaWx5KSB0aGUgaW1wbGVtZW50YXRpb24gcHJlZmVy YWJseSBzaW1wbGUgJiBzZXBhcmF0ZWQuDQo+ID4gPg0KPiA+ID4gVGhhbmsgeW91IHRoYXQgeW91 IGFyZSByZWFkeSB0byBtZXJnZSBjaGFuZ2VzIHlvdSBjYW5ub3QgZXZlbiByZWFsbHkNCj4gPiB0 ZXN0Lg0KPiA+DQo+ID4gSSBkZWZpbml0ZWx5IGludGVuZCB0byByZWdyZXNzaW9uIHRlc3QgYW55 IHN1Y2ggY2hhbmdlcyA6KQ0KPiANCj4gU3VyZSwgSSBqdXN0IG9mdGVuIGNvbWUgYWNyb3NzIGEg IkkgZG9uJ3QgbWVyZ2Ugd2hhdCBJIGNhbm5vdCB0ZXN0Ig0KPiBtZW50YWxpdHkuIDopDQo+IA0K PiA+DQo+ID4gT1RPSCwgaW4gYW55IGxhcmdlciBwcm9qZWN0LCBhbnkgZ2l2ZW4gbWFpbnRhaW5l ciBpcyBzdXJlbHkgdW5hYmxlIHRvDQo+ID4gaW50ZWdyYXRpb24tdGVzdCAqYWxsKiBmZWF0dXJl cyBpbiB0aGUgc3Vic3lzdGVtIHRoYXQgdGhleSBjby1tYWludGFpbi4NCj4gPiBXaGF0J3MgaW1w b3J0YW50IGlzIHRoYXQgZWFjaCBtYWpvciBmZWF0dXJlIGhhcyBhdCBsZWFzdCBvbmUNCj4gPiBt YWludGFpbmVyIHRoYXQgY2FuIGludGVncmF0aW9uLXRlc3QgaXQgKHBvc3NpYmx5IHdpdGggdGhl IGhlbHAgb2YgYW4NCj4gYXV0b21hdGVkIHRlc3Qgc3VpdGUpLg0KPiA+DQo+ID4gRm9yIGV4YW1w bGUsIEkgdG90YWxseSBjYW5ub3QgdGVzdCBYZW4gY29kZSBpbiBPdm1mUGtnIG9yIEFybVZpcnRQ a2csDQo+ID4gYnV0IHRoYXQncyB3aHkgd2UgaGF2ZSBzZXZlcmFsIHBlcm1hbmVudCBSZXZpZXdl cnMgZnJvbSB0aGUgWGVuDQo+ID4gcHJvamVjdCwgZm9yIE92bWZQa2cgYW5kIEFybVZpcnRQa2cu DQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gTGFzemxvDQo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fDQo+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz dGluZm8vZWRrMi1kZXZlbA0K