From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 1/6] docs/qemu-deprivilege: Revise and update with status and future plans Date: Tue, 6 Nov 2018 09:07:12 +0000 Message-ID: <47384b73628c419889b02beab2d60bfb@AMSPEX02CL03.citrite.net> References: <20181105180711.20322-1-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gJxKh-0004W8-KK for xen-devel@lists.xenproject.org; Tue, 06 Nov 2018 09:07:35 +0000 In-Reply-To: <20181105180711.20322-1-george.dunlap@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" Cc: Stefano Stabellini , Wei Liu , Konrad Wilk , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Ross Lagerwall , Julien Grall , Jan Beulich , Anthony Perard , Ian Jackson List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmDQo+IE9mIEdl b3JnZSBEdW5sYXANCj4gU2VudDogMDUgTm92ZW1iZXIgMjAxOCAxODowNw0KPiBUbzogeGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc+OyBXZWkgTGl1DQo+IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgS29u cmFkIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+OyBBbmRyZXcgQ29vcGVyDQo+IDxBbmRy ZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgVGltIChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBHZW9y Z2UgRHVubGFwDQo+IDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+OyBSb3NzIExhZ2Vyd2FsbCA8 cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT47DQo+IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxs QGFybS5jb20+OyBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ow0KPiBBbnRob255IFBl cmFyZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT47IElhbiBKYWNrc29uDQo+IDxJYW4uSmFj a3NvbkBjaXRyaXguY29tPg0KPiBTdWJqZWN0OiBbWGVuLWRldmVsXSBbUEFUQ0ggdjQgMS82XSBk b2NzL3FlbXUtZGVwcml2aWxlZ2U6IFJldmlzZSBhbmQNCj4gdXBkYXRlIHdpdGggc3RhdHVzIGFu ZCBmdXR1cmUgcGxhbnMNCj4gDQo+IGRvY3MvcWVtdS1kZXByaXZpbGVnZS50eHQgaGFkIHNvbWUg YmFzaWMgaW5zdHJ1Y3Rpb25zIGZvciB1c2luZw0KPiBkbV9yZXN0cmljdCwgYnV0IGl0IHdhcyBp bmNvbXBsZXRlLCBtaXNsZWFkaW5nLCBhbmQgc3RhbGUuDQo+IA0KPiBVcGRhdGUgdGhlIGRvY3Mg aW4gYSBudW1iZXIgb2Ygd2F5cy4NCj4gDQo+IEZpcnN0LCBzZXBhcmF0ZSB1c2VyLWZhY2luZyBk b2N1bWVudGF0aW9uIGFuZCB0ZWNobmljYWwgZGVzY3JpcHRpb24NCj4gaW50byBkb2NzL2ZlYXR1 cmVzIGFuZCBkb2NzL2Rlc2lnbiwgcmVzcGVjdGl2ZWx5Lg0KPiANCj4gSW4gdGhlIGZlYXR1cmUg ZG9jOg0KPiANCj4gKiBJbnRyb2R1Y2UgYSBzZWN0aW9uIG1lbnRpb25pbmcgbWluaW1pbSB2ZXJz aW9ucyBvZiBMaW51eCwgWGVuLCBhbmQNCj4gcWVtdSByZXF1aXJlZCAoVEJEKQ0KPiANCj4gKiBG aXggdGhlIGRpc2N1c3Npb24gb2YgcWVtdSB1c2VyaWQuICBNZW50aW9uIHhlbi1xZW11dXNlci1y YW5nZS1iYXNlLA0KPiBhbmQgcHJvdmlkZSBleGFtcGxlIHNoZWxsIGNvZGUgdGhhdCBhY3R1YWxs eSBoYXMgc29tZSBob3BlIG9mIHdvcmtpbmcNCj4gKGluc3RlYWQgb2YgZmFpbGluZyBvdXQgYWZ0 ZXIgY3JlYXRpbmcgOTAwIHVzZXJpZHMpLg0KPiANCj4gKiBEZXNjcmliZSBob3cgdG8gZW5hYmxl IHJlc3RyaWN0aW9ucywgYXMgd2VsbCBhcyBmZWF0dXJlcyB3aGljaA0KPiBwcm9iYWJseSBkb24n dCBvciBkZWZpbml0ZWx5IGRvbid0IHdvcmsuDQo+IA0KPiBJbiB0aGUgZGVzaWduIGRvYywgaW50 cm9kdWNlIGEgIlRlY2huaWNhbCBEZXRhaWxzIiBzZWN0aW9uIHdoaWNoDQo+IGRlc2NyaWJlcyBz cGVjaWZpY2FsbHkgd2hhdCByZXN0cmljdGlvbnMgYXJlIGN1cnJlbnRseSBkb25lLCBhbmQgYWxz bw0KPiB3aGF0IHJlc3RyaWN0aW9ucyB3ZSBhcmUgbG9va2luZyBhdCBkb2luZyBpbiB0aGUgZnV0 dXJlLg0KPiANCj4gVGhlIGlkZWEgaGVyZSBpcyB0aGF0IGFzIHdlIGltcGxlbWVudCB0aGUgdmFy aW91cyBpdGVtcyBmb3IgdGhlDQo+IGZ1dHVyZSwgd2UgbW92ZSB0aGVtIGZyb20gIlJlc3RyaWN0 aW9ucyBzdGlsbCB0byBkbyIgdG8gIlJlc3RyaWN0aW9ucw0KPiBkb25lIi4gIFRoaXMgY2FuIGFs c28gYWN0IGFzIGEgZGVzaWduIGRvY3VtZW50IC0tIGEgcGxhY2UgZm9yIHB1YmxpYw0KPiBkaXNj dXNzaW9uIG9mIHdoYXQgY2FuIG9yIHNob3VsZCBiZSBkb25lIGFuZCBob3cuDQo+IA0KPiBBbHNv IGFkZCBhbiBlbnRyeSB0byBTVVBQT1JULm1kLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogR2Vvcmdl IER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPg0KPiAtLS0NCj4gQ2hhbmdlcyBzaW5j ZSB2MzoNCj4gLSBGaXggdHlwbyAoMzItPjE2KQ0KPiAtIFVzZSBhbiBleGFtcGxlIHZhbHVlIG5v dCBjbG9zZSB0byB0aGUgYG5vYm9keWAgdWlkcywgYnV0IHN0aWxsIGENCj4gICBtdWx0aXBsZSBv ZiAyXjE2Lg0KPiAtIE1lbnRpb24gdGhhdCB1c2luZyBhIG11bHRpcGxlIG9mIDJeMTYgbWF5IGhh dmUgYWR2YW50YWdlcy4NCj4gLSBIYXZlIHRoZSBleGFtcGxlIGNyZWF0ZSBhIGdyb3VwIGFzIHdl bGwNCj4gLSBSZW9yZ2FuaXplIHR3byBjb21tZW50cyBvbiB0aGUgInJhbmdlLWJhc2UiIG1ldGhv ZCBmb3IgY2xhcml0eQ0KPiANCj4gQ2hhbmdlcyBzaW5jZSB2MjoNCj4gLSBFeHRyYW5lb3VzIHBy aXZjbWQgLyBldnRjaG4gaW5zdGFuY2VzIGFyZW4ndCBjbG9zZWQNCj4gLSBFeHBhbmQgZGVzY3Jp cHRpb24gb2YgaG93IHRvIHRlc3QgZmQgZGVwcml2aWxlZ2luZw0KPiAtIFJld29yayBhbmQgY2xh cmlmeSB0d28gbmFtZXNwYWNlIHNlY3Rpb25zLCBnaXZlIHJlZmVyZW5jZSBmb3IgUUVNVSBOQUsN Cj4gLSBBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBtaWdyYXRpb24gdGVjaG5pY2FsIGNoYWxs ZW5nZXMNCj4gLSBJbiBVSUQgc2VjdGlvbiwgbWVudGlvbiBwb3NzaWJpbGl0eSBvZiBjb250YWlu ZXIgSUQgY29sbGlzaW9ucy4NCj4gLSBGaXggbmFtZSBvZiBkZXNpZ24gZG9jdW1lbnQuDQo+IC0g QWRkIFNVUFBPUlQubWQgc3RhdGVtZW50LiAgU3BlY2lmeSBMaW51eCwgdG8gbWFrZSBzdXJlIHRo YXQgRnJlZUJTRCBpcw0KPiAgIGV2YWx1YXRlZCBzZXBhcmF0ZWx5Lg0KPiAtIE1lbnRpb24gdGhh dCBgLXNhbmRib3hgIGlzIGEgYmxhY2tsaXN0IGFuZCB3aHkNCj4gDQo+IENoYW5nZXMgc2luY2Ug djE6DQo+IC0gQnJlYWsgaW50byB0d28sIGFuZCBtb3ZlIGludG8gYXBwcm9wcmlhdGUgZGlyZWN0 b3JpZXMgKHJhdGhlciB0aGFuDQo+ICdtaXNjJykNCj4gLSBVcGRhdGVkIHZlcnNpb24gcmVxdWly ZW1lbnRzDQo+IC0gRGlzdGluZ3Vpc2ggYmV0d2VlbiBmZWF0dXJlcyB3aGljaCAiZG9uJ3QgeWV0 IHdvcmsiIGFuZCBmZWF0dXJlcyB3aGljaA0KPiB3ZSBuZXZlciBleHBlY3QgdG8gd29yaw0KPiAt IFVwZGF0ZSBkZXNjcmlwdGlvbiBvZiB4ZW4tcmVzdHJpY3QgZnVuY3Rpb25hbGl0eQ0KPiAtIFJl b3JkZXIgYW5kIGV4cGFuZCBmdXJ0aGVyIHJlc3RyaWN0aW9ucw0KPiAtIE1ha2UgaXQgbW9yZSBj bGVhciB3aGljaCByZXN0cmljdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiBMaW51eCBvbmx5DQo+IC0g SW5jbHVkZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBob3cgdG8ga2lsbCBhIHByb2Nlc3MNCj4g LSBBZGQgUkxJTUlUX05QUk9DIGFzIHNvbWV0aGluZyB3ZSBjYW4gZG8gd2l0aG91dCBmdXJ0aGVy IGNoYW5nZXMgdG8gcWVtdQ0KPiAtIERvY3VtZW50IHRoZSBuZWVkIHRvIGNoZWNrIGZvciB0aGUg c2FuZGJveCBmZWF0dXJlIGJlZm9yZSB1c2luZyBpdA0KPiANCj4gVGhhbmsgeW91IHRvIFJvc3Mg TGFnZXJ3YWxsLCB3aG9zZSBkZXNjcmlwdGlvbiBvZiB3aGF0IFhlblNlcnZlciBpcw0KPiBkb2lu ZyBmb3JtZWQgbXVjaCBvZiB0aGUgYmFzaXMgZm9yIHRoZSB0ZXh0IGhlcmUuDQo+IA0KPiBDQzog SWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+DQo+IENDOiBXZWkgTGl1IDx3ZWku bGl1MkBjaXRyaXguY29tPg0KPiBDQzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4NCj4gQ0M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gQ0M6IFRp bSBEZWVnYW4gPHRpbUB4ZW4ub3JnPg0KPiBDQzogS29ucmFkIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+DQo+IENDOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5v cmc+DQo+IENDOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPg0KPiBDQzogQW50 aG9ueSBQZXJhcmQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+DQo+IENDOiBSb3NzIExhZ2Vy d2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4NCj4gLS0tDQo+ICBkb2NzL2Rlc2lnbnMv cWVtdS1kZXByaXZpbGVnZS5tZCAgICAgIHwgMzIyICsrKysrKysrKysrKysrKysrKysrKysrKysr DQo+ICBkb2NzL2ZlYXR1cmVzL3FlbXUtZGVwcml2aWxlZ2UucGFuZG9jIHwgMTAxICsrKysrKysr DQo+ICBkb2NzL21pc2MvcWVtdS1kZXByaXZpbGVnZS50eHQgICAgICAgIHwgIDM2IC0tLQ0KPiAg MyBmaWxlcyBjaGFuZ2VkLCA0MjMgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pDQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZG9jcy9kZXNpZ25zL3FlbXUtZGVwcml2aWxlZ2UubWQNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2ZlYXR1cmVzL3FlbXUtZGVwcml2aWxlZ2UucGFuZG9jDQo+ ICBkZWxldGUgbW9kZSAxMDA2NDQgZG9jcy9taXNjL3FlbXUtZGVwcml2aWxlZ2UudHh0DQo+IA0K PiBkaWZmIC0tZ2l0IGEvZG9jcy9kZXNpZ25zL3FlbXUtZGVwcml2aWxlZ2UubWQgYi9kb2NzL2Rl c2lnbnMvcWVtdS0NCj4gZGVwcml2aWxlZ2UubWQNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAwMC4uNzg3YWUxYWM3Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2Rv Y3MvZGVzaWducy9xZW11LWRlcHJpdmlsZWdlLm1kDQo+IEBAIC0wLDAgKzEsMzIyIEBADQo+ICsj IEludHJvZHVjdGlvbg0KPiArDQo+ICtUaGUgZ29hbCBvZiBkZXByaWx2aWxlZ2luZyBxZW11IGlz IHRoaXM6IEV2ZW4gaWYgdGhlcmUgaXMgYSBidWcgKGZvcg0KPiArZXhhbXBsZSBpbiBxZW11KSB3 aGljaCBwZXJtaXRzIGEgZG9tYWluIHRvIGdhaW4gY29udHJvbCBvZiB0aGUgZGV2aWNlDQo+ICtt b2RlbCwgdGhlIGNvbXByb21pc2VkIGRldmljZSBtb2RlbCBwcm9jZXNzIGlzIHByZXZlbnRlZCBm cm9tDQo+ICt2aW9sYXRpbmcgdGhlIHN5c3RlbSdzIG92ZXJhbGwgc2VjdXJpdHkgcHJvcGVydGll cy4gIEllLCBhIGd1ZXN0DQo+ICtjYW5ub3QgImVzY2FwZSIgZnJvbSB0aGUgdmlydHVhbGlzYXRp b24gYnkgdXNpbmcgYSBxZW11IGJ1Zy4NCj4gKw0KPiArVGhpcyBkb2N1bWVudCBsaXN0cyB0aGUg dmFyaW91cyB0ZWNobmljYWwgbWVhc3VyZXMgd2hpY2ggd2UgZWl0aGVyDQo+ICtoYXZlIHRha2Vu LCBvciBwbGFuIHRvIHRha2UgdG8gZWZmZWN0IHRoaXMgZ29hbC4gIFNvbWUgb2YgdGhlbSBhcmUN Cj4gK3JlcXVpcmVkIHRvIGJlIGNvbnNpZGVyZWQgc2VjdXJlICh0aGF0IGlzLCB0aGVyZSBhcmUg a25vd24gYXR0YWNrDQo+ICt2ZWN0b3JzIHdoaWNoIHRoZXkgY2xvc2UpOyBvdGhlcnMgYXJlICJq dXN0IGluIGNhc2UiICh0aGF0IGlzLCB0aGVyZQ0KPiArYXJlIG5vIGtub3duIGF0dGFjayB2ZWN0 b3JzLCBidXQgd2UgcGVyZm9ybSB0aGUgcmVzdHJpY3Rpb25zIHRvIHJlZHVjZQ0KPiArdGhlIHBv c3NpYmlsaXR5IG9mIHVua25vd24gYXR0YWNrIHZlY3RvcnMpLg0KPiArDQo+ICsjIFJlc3RyaWN0 aW9ucyBkb25lDQo+ICsNCj4gK1RoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIGFyZSBjdXJyZW50 bHkgaW1wbGVtZW50ZWQuDQo+ICsNCj4gKyMjIEhhdmluZyBxZW11IHN3aXRjaCB1c2VyDQo+ICsN Cj4gKycnJ0Rlc2NyaXB0aW9uJycnOiBBcyBtZW50aW9uZWQgYWJvdmUsIGhhdmluZyBRRU1VIHN3 aXRjaCB0byBhDQo+ICtub24tcm9vdCB1c2VyLCBvbmUgcGVyIGRvbWFpbiBpZC4gIE5vdCBiZWlu ZyB0aGUgcm9vdCB1c2VyIGxpbWl0cyB3aGF0DQo+ICthIGNvbXByb21pc2VkIFFFTVUgcHJvY2Vz cyBjYW4gZG8gdG8gdGhlIHN5c3RlbSwgYW5kIGhhdmluZyBvbmUgdXNlcg0KPiArcGVyIGRvbWFp biBpZCBsaW1pdHMgd2hhdCBhIGNvbXByaW1pc2VkIFFFTVUgcHJvY2VzcyBjYW4gZG8gdG8gdGhl DQo+ICtRRU1VIHByb2Nlc3NlcyBvZiBvdGhlciBWTXMuDQo+ICsNCj4gKycnJ0ltcGxlbWVudGF0 aW9uJycnOiBUaGUgdG9vbHN0YWNrIGFkZHMgdGhlIGZvbGxvd2luZyB0byB0aGUgcWVtdQ0KPiBj b21tYW5kLWxpbmU6DQo+ICsNCj4gKyAgICAtcnVuYXMgPHVpZD46PGdpZD4NCj4gKw0KPiArJycn SG93IHRvIHRlc3QnJyc6DQo+ICsNCj4gKyAgICBncmVwIC9wcm9jLzxxcGlkPi9zdGF0dXMgW1VH XWlkDQo+ICsNCj4gKycnJ1Rlc3RpbmcgU3RhdHVzJycnOiBOb3QgdGVzdGVkDQo+ICsNCj4gKyMj IFhlbiBsaWJyYXJ5IC8gZmlsZS1kZXNjcmlwdG9yIHJlc3RyaWN0aW9ucw0KPiArDQo+ICsnJydE ZXNjcmlwdGlvbicnJzogQ2xvc2UgYW5kIHJlc3RyaWN0IFhlbi1yZWxhdGVkIGZpbGUgZGVzY3Jp cHRvcnMuDQo+ICtTcGVjaWZpY2FsbHk6DQo+ICsgKiBDbG9zZSBhbGwgeGVuc3RvcmUtcmVsYXRl ZCBmaWxlIGRlc2NyaXB0b3JzDQo+ICsgKiBNYWtlIHN1cmUgdGhhdCBhbGwgb3BlbiBpbnN0YW5j ZXMgb2YgYHByaXZjbWRgIGFuZCBgZXZ0Y2huYCBmaWxlDQo+ICtkZXNjcmlwdG9ycyBoYXZlIGhh ZCBgSU9DVExfUFJJVkNNRF9SRVNUUklDVGAgYW5kDQo+ICtgSU9DVExfRVZUQ0hOX1JFU1RSSUNU X0RPTUlEYCBpb2N0bHMgY2FsbGVkIG9uIHRoZW0sIHJlc3BlY3RpdmVseS4NCj4gKw0KPiArRklY TUU6IERvdWJsZS1jaGVjayB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGFib3ZlDQoNClByZXN1bWFi bHkgdGhpcyBzaG91bGQgZ28gYXdheSBiZWZvcmUgY29tbWl0IF4NCg0KPiArDQo+ICsnJydJbXBs ZW1lbnRhdGlvbicnJzogVG9vbHN0YWNrIGFkZHMgdGhlIGZvbGxvd2luZyB0byB0aGUgcWVtdSBj b21tYW5kLQ0KPiBsaW5lOg0KPiArDQo+ICsgICAgLXhlbi1kb21pZC1yZXN0cmljdA0KPiArDQo+ ICsnJydIb3cgdG8gdGVzdCcnJzoNCj4gKw0KPiArVXNlIGBmaXNoZGVzY3JpcHRvcmAgdG8gcHVs bCBhIGZpbGUgZGVzY3JpcHRvciBmcm9tIGEgcnVubmluZyBRRU1VLA0KPiArdGhlbiB1c2UgYGRl cHJpdi1mZC1jaGVja2VyYCB0byBjaGVjayB0aGF0IGl0IGhhcyB0aGUgZGVzaXJlZA0KPiArcHJv cGVydGllcywgYW5kIHRoYXQgaHlwZXJjYWxscyB3aGljaCBhcmUgbWVhbnQgdG8gZmFpbCBkbyBm YWlsLiAgKEluDQo+ICtEZWJpYW4gYGZpc2hkZXNjcmlwdG9yYCBjYW4gYmUgZm91bmQgaW4gdGhl IGJpbmFyeSBwYWNrYWdlDQo+ICtgY2hpYXJrLXNjcmlwdHNgOyB0aGUgYGRlcHJpdi1mZC1jaGVj a2VyYCBpcyBpbmNsdWRlZCBpbiB0aGUgWGVuDQo+ICtzb3VyY2UgdHJlZS4pDQo+ICsNCj4gKycn J1Rlc3Rpbmcgc3RhdHVzJycnOiBUZXN0ZWQNCj4gKw0KPiArIyBSZXN0cmljdGlvbnMgLyBpbXBy b3ZlbWVudHMgc3RpbGwgdG8gZG8NCj4gKw0KPiArVGhpcyBsaXN0cyBwb3RlbnRpYWwgcmVzdHJp Y3Rpb25zIHN0aWxsIHRvIGRvLiAgSXQgaXMgbWVhbnQgdG8gYmUNCj4gK2xpc3RlZCBpbiBvcmRl ciBvZiBlYXNlIG9mIGltcGxlbWVudGF0aW9uLCB3aXRoIGxvdy1oYW5naW5nIGZydWl0DQo+ICtm aXJzdC4NCj4gKw0KPiArIyMgQ2hyb290DQo+ICsNCj4gKycnJ0Rlc2NyaXB0aW9uJycnOiBRZW11 IHJ1bnMgaW4gaXRzIG93biBjaHJvb3QsIHN1Y2ggdGhhdCBldmVuIGlmIGl0DQo+ICtjb3VsZCBj YWxsIGFuICdvcGVuJyBjb21tYW5kIG9mIHNvbWUgc29ydCwgdGhlcmUgd291bGQgYmUgbm90aGlu ZyBmb3INCj4gK2l0IHRvIHNlZS4NCj4gKw0KPiArJycnSW1wbGVtZW50YXRpb24nJyc6IFRoZSB0 b29sc3RhY2sgY3JlYXRlcyBhIGRpcmVjdG9yeSBpbiB0aGUgbGlieGwNCj4gInJ1bi1kaXIiOyBl LmcuDQo+ICtgL3Zhci9ydW4veGVuL3FlbXUtcm9vdC08ZG9taWQ+YA0KPiArDQo+ICtUaGVuIGFk ZHMgdGhlIGZvbGxvd2luZyB0byB0aGUgcWVtdSBjb21tYW5kLWxpbmU6DQo+ICsNCj4gKyAgICAt Y2hyb290IC92YXIvcnVuL3hlbi9xZW11LXJvb3QtPGRvbWlkPg0KPiArDQo+ICsnJydIb3cgdG8g dGVzdCcnJzogIENoZWNrIGAvcHJvYy88cXBpZD4vcm9vdGANCj4gKw0KPiArJycnVGVzdGVkJycn OiBOb3QgdGVzdGVkDQo+ICsNCj4gKyMjIE5hbWVzcGFjZXMgZm9yIHVudXNlZCBmdW5jdGlvbmFs aXR5IChMaW51eCBvbmx5KQ0KPiArDQo+ICsnJydEZXNjcmlwdGlvbicnJzogUUVNVSBkb2Vzbid0 IHVzZSB0aGUgZnVuY3Rpb25hbGl0eSBhc3NvY2lhdGVkIHdpdGgNCj4gK21vdW50IGFuZCBJUEMg bmFtZXNwYWNlcy4gKElQQyBuYW1lc3BhY2VzIGNvbnRvbCBub24tZmlsZS1iYXNlZCBJUEMNCj4g K21lY2hhbmlzbXMgd2l0aGluIHRoZSBrZXJuZWw7IHVuaXggYW5kIG5ldHdvcmsgc29ja2V0cyBh cmUgbm90DQo+ICthZmZlY3RlZCBieSB0aGlzLikgIE1ha2luZyBzZXBhcmF0ZSBuYW1lc3BhY2Vz IGZvciB0aGVzZSBmb3IgUUVNVQ0KPiArd29uJ3QgYWZmZWN0IG5vcm1hbCBvcGVyYXRpb24sIGJ1 dCBpdCBkb2VzIG1lYW4gdGhhdCBldmVuIGlmIG90aGVyDQo+ICtyZXN0cmljdGlvbnMgZmFpbCwg dGhlIHByb2Nlc3Mgd29uJ3QgYmUgYWJsZSB0byBldmVuIG5hbWUgc3lzdGVtIG1vdW50DQo+ICtw b2ludHMgb3IgZXhpc3Rpbmcgbm9uLWZpbGUtYmFzZWQgSVBDIGRlc2NyaXB0b3JzIHRvIGF0dGVt cHQgdG8gYXR0YWNrDQo+ICt0aGVtLg0KPiArDQo+ICsnJydJbXBsZW1lbnRhdGlvbicnJzoNCj4g Kw0KPiArSW4gdGhlb3J5IHRoaXMgY291bGQgYmUgZG9uZSBpbiBRRU1VIChzaW1pbGFyIHRvIC1z YW5kYm94LCAtcnVuYXMsDQo+ICstY2hyb290LCBhbmQgc28gb24pLCBidXQgYSBwYXRjaCBkb2lu ZyB0aGlzIGluIFFFTVUgd2FzIE5BS2VkIHVwc3RyZWFtDQo+ICsoc2VlIFtxZW11LW5hbWVzcGFj ZXNdKS4gVGhleSBwcmVmZXJyZWQgdGhhdCB0aGlzIHdhcyBkb25lIGFzIGEgc2V0dXANCj4gc3Rl cCBieQ0KPiArd2hhdGV2ZXIgZXhlY3V0ZXMgUUVNVTsgaS5lLiwgaGF2ZSB0aGUgcHJvY2VzcyB3 aGljaCBleGVjJ3MgUUVNVSBmaXJzdA0KPiArY2FsbDoNCj4gKw0KPiArICAgIHVuc2hhcmUoQ0xP TkVfTkVXTlMgfCBDTE9ORV9ORVdJUEMpDQo+ICsNCj4gKycnJ0hvdyB0byB0ZXN0JycnOiAgQ2hl Y2sgYC9wcm9jLzxxcGlkPi9ucy9baXBjLG1udF1gDQo+ICsNCj4gKycnJ1Rlc3RlZCcnJzogTm90 IHRlc3RlZA0KPiArDQo+ICtbcWVtdS1uYW1lc3BhY2VzXTogaHR0cHM6Ly9saXN0cy5nbnUub3Jn L2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTctDQo+IDEwL21zZzA0NzIzLmh0bWwNCj4gKw0K PiArIyMjIEJhc2ljIFJMSU1JVHMNCj4gKw0KPiArJycnRGVzY3JpcHRpb24nJyc6IEEgbnVtYmVy IG9mIGxpbWl0cyBvbiB0aGUgcmVzb3VyY2VzIHRoYXQgYSBnaXZlbg0KPiArcHJvY2VzcyAvIHVz ZXJpZCBpcyBhbGxvd2VkIHRvIGNvbnN1bWUuICBUaGVzZSBjYW4gbGltaXQgdGhlIGFiaWxpdHkN Cj4gK29mIGEgY29tcHJvbWlzZWQgUUVNVSBwcm9jZXNzIHRvIERvUyBkb21haW4gMCBieSBleGhh dXN0aW5nIHZhcmlvdXMNCj4gK3Jlc291cmNlcyBhdmFpbGFibGUgdG8gaXQuDQo+ICsNCj4gKycn J0ltcGxlbWVudGF0aW9uJycnDQo+ICsNCj4gK0xpbWl0cyB0aGF0IGNhbiBiZSBpbXBsZW1lbnRl ZCBpbW1lZGlhdGVseSB3aXRob3V0IG11Y2ggZWZmb3J0Og0KPiArIC0gUkxJTUlUX0ZTSVpFYCAo ZmlsZSBzaXplKSB0byAyNTZLaUIuDQo+ICsgLSBSTElNSVRfTlBST0MgKGFmdGVyIHVpZCBjaGFu Z2VzIHRvIGEgdW5pcXVlIHVpZCkNCj4gKw0KPiArUHJvYmFibHkgbm90IG5lY2Vzc2FyeSBidXQg d2h5IG5vdDoNCj4gKyAtIFJMSU1JVF9DT1JFOiAwDQo+ICsgLSBSTElNSVRfTVNHUVVFVUU6IDAN Cj4gKyAtIFJMSU1JVF9MT0NLUzogMA0KPiArIC0gUkxJTUlUX01FTUxPQ0s6IDANCj4gKw0KPiAr Tm90ZTogbWxvY2soKSBpcyB1c2VkIGJ5IFFFTVUgb25seSB3aGVuIGJvdGggInJlYWx0aW1lIiBh bmQgIm1sb2NrIg0KPiArYXJlIHNwZWNpZmllZDsgdGhpcyBkb2VzIG5vdCBhcHBseSB0byBRRU1V IHJ1bm5pbmcgYXMgYSBYZW4gRE0uDQo+ICsNCj4gKycnJ0hvdyB0byB0ZXN0JycnOiBDaGVjayBg L3Byb2MvPHFwaWQ+L2xpbWl0c2ANCj4gKw0KPiArJycnVGVzdGVkJycnOiBOb3QgdGVzdGVkDQo+ ICsNCj4gKyMjIyBGdXJ0aGVyIFJMSU1JVHMNCj4gKw0KPiArUkxJTUlUX0FTIGxpbWl0cyB0aGUg dG90YWwgYW1vdW50IG9mIG1lbW9yeTsgYnV0IHRoaXMgaW5jbHVkZXMgdGhlDQo+ICt2aXJ0dWFs IG1lbW9yeSB3aGljaCBRRU1VIHVzZXMgYXMgYSBtYXBjYWNoZS4gIHhlbi1tYXBjYWNoZS5jIGFs cmVhZHkNCj4gK2ZpZGRsZXMgd2l0aCB0aGlzOyBpdCB3b3VsZCBiZSBzdHJhaWdodGZvcndhcmQg dG8gbWFrZSBpdCAqc2V0KiB0aGUNCj4gK3JsaW1pdCB0byB3aGF0IGl0IHRoaW5rcyBhIHNlbnNp YmxlIGxpbWl0IGlzLg0KPiArDQo+ICtPdGhlciB0aGluZ3MgdGhhdCB3b3VsZCB0YWtlIHNvbWUg Y2xldmVybmVzcyAvIGNoYW5nZXMgdG8gUUVNVSB0bw0KPiArdXRpbGl6ZSBkdWUgdG8gb3JkZXJp bmcgY29uc3RyYW50czoNCj4gKyAtIFJMSU1JVF9OT0ZJTEVTIChhZnRlciBhbGwgbmVjZXNzYXJ5 IGZpbGVzIGFyZSBvcGVuZWQpDQo+ICsNCj4gKyMjIyBsaWJ4bCBVSUQgY2xlYW51cA0KPiArDQo+ ICsnJydEZXNjcmlwdGlvbicnJzogRG9tYWluIElEcyBhcmUgcmV1c2VkLCBhbmQgdGh1cyByZXN0 cmljdGVkIFVJRHMgYXJlDQo+ICtyZXVzZWQuICBJZiBhIGNvbXByb21pc2VkIFFFTVUgY2FuIGZv cmsgKGR1ZSB0byBzZWNjb21wIG9yDQo+ICtSTElNSVRfTlBST0MgbGltaXRzIGJlaW5nIGluZWZm ZWN0aXZlIGZvciBzb21lIHJlYXNvbiksIGl0IG1heSBhdm9pZA0KPiArYmVpbmcga2lsbGVkIHdo ZW4gaXRzIGRvbWFpbiBkaWVzLCB0aGVuIHdhaXQgdW50aWwgdGhlIGRvbWFpbiBJRCBpcw0KPiAr cmV1c2VkIGFnYWluLCBhdCB3aGljaCBwb2ludCBpdCB3aWxsIGhhdmUgY29udHJvbCBvdmVyIHRo ZSBkb21haW4gaW4NCj4gK3F1ZXN0aW9uICh3aGljaCBwcm9iYWJseSBiZWxvbmdzIHRvIHNvbWVv bmUgZWxzZSkuDQo+ICsNCj4gK2xpYnhsIHNob3VsZCBraWxsIGFsbCBVSURzIGFzc29jaWF0ZWQg d2l0aCBhIGRvbWFpbiBib3RoIHdoZW4gdGhlIFZNDQo+ICtpcyBkZXN0cm95ZWQsIGFuZCBiZWZv cmUgc3RhcnRpbmcgYSBWTSB3aXRoIHRoZSBzYW1lIFVJRC4NCj4gKw0KPiArJycnSW1wbGVtZW50 YXRpb24nJyc6IFRoaXMgaXMgdW5uZWNlc3NhcmlseSB0cmlja3kuDQo+ICsNCj4gK1RoZSBraWxs KCkgc3lzdGVtIGNhbGwgY2FuIGhhdmUgdGhyZWUga2luZHMgb2YgdGFyZ2V0czoNCj4gKyAtIEEg c2luZ2xlIHBpZA0KPiArIC0gQSBwcm9jZXNzIGdyb3VwDQo+ICsgLSAiRXZlcnkgcHJvY2VzcyBl eGNlcHQgbWUgdG8gd2hpY2ggSSBhbSBhbGxvd2VkIHRvIHNlbmQgYSBzaWduYWwiICgtMSkNCj4g Kw0KPiArVGFyZ2V0aW5nIGEgc2luZ2xlIHBpZCBpcyByYWN5IGFuZCBsaWtlbHkgdG8gYmUgYmVh dGVuIGJ5IHRoZQ0KPiArZm9sbG93aW5nIGxvb3A6DQo+ICsNCj4gKyAgICB3aGlsZSgxKSB7DQo+ ICsgICAgICAgIGlmKGZvcmsoKSkNCj4gKwkgICAgX2V4aXQoMCk7DQo+ICsgICAgfQ0KPiArDQo+ ICtUaGF0IGlzLCBieSB0aGUgdGltZSB5b3UndmUgcmVhZCB0aGUgcHJvY2VzcyBsaXN0IGFuZCBm b3VuZCB0aGUNCj4gK3Byb2Nlc3MgaWQgeW91IHdhbnQgdG8ga2lsbCwgdGhhdCBwcm9jZXNzIGhh cyBleGl0ZWQgYW5kIHRoZXJlIGlzIGENCj4gK25ldyBwcm9jZXNzIHdob3NlIHBpZCB5b3UgZG9u J3Qga25vdyBhYm91dC4NCj4gKw0KPiArVGFyZ2V0aW5nIGEgcHJvY2VzcyBncm91cCB3aWxsIGJl IGluZWZmZWN0aXZlLCBhcyB1bnByaXZpbGVnZWQNCj4gK3Byb2Nlc3NlcyBhcmUgYWxsb3dlZCB0 byBtYWtlIHRoZWlyIG93biBwcm9jZXNzIGdyb3Vwcy4NCj4gKw0KPiAra2lsbCgtMSkgY2FuIGJl IHVzZWQgYnV0IG11c3QgYmUgZG9uZSB3aXRoIGNhcmUuICBDb25zaWRlciB0aGUNCj4gK2ZvbGxv d2luZyBjb2RlLCBmb3IgZXhhbXBsZToNCj4gKw0KPiArICAgIHNldHVpZCh0YXJnZXRfdWlkKTsN Cj4gKyAgICBraWxsKC0xLCA5KTsNCj4gKw0KPiArVGhpcyBsb29rcyBsaWtlIGl0IHdpbGwgZG8g dGhlIHRyaWNrOyBidXQgYnkgc2V0dGluZyBhbGwgb2YgdGhlIHVzZXINCj4gK2lkcyAoZWZmZWN0 aXZlLCByZWFsLCBhbmQgc2F2ZWQpLCBpdCBvcGVucyB0aGUgJ2tpbGxpbmcnIHByb2Nlc3MgdXAg dG8NCj4gK2JlaW5nIGtpbGxlZCBieSB0aGUgdGFyZ2V0IHByb2Nlc3M6DQo+ICsNCj4gKyAgICB3 aGlsZSgxKSB7DQo+ICsgICAgICAgIGlmKGZvcmsoKSkNCj4gKyAgICAgICAgICAgIF9leGl0KDAp Ow0KPiArICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICBraWxsKC0xLCA5KTsNCj4gKyAgICB9 DQo+ICsNCj4gK0ZvcnR1bmF0ZWx5IHRoZXJlIGlzIGFuIGFzc3ltZXRyeSB3ZSBjYW4gdGFrZSBh ZHZhbnRhZ2Ugb2YuICBGcm9tIHRoZQ0KPiArUE9TSVggc3BlYzoNCj4gKw0KPiArPiBGb3IgYSBw cm9jZXNzIHRvIGhhdmUgcGVybWlzc2lvbiB0byBzZW5kIGEgc2lnbmFsIHRvIGEgcHJvY2Vzcw0K PiArPiBkZXNpZ25hdGVkIGJ5IHBpZCwgdW5sZXNzIHRoZSBzZW5kaW5nIHByb2Nlc3MgaGFzIGFw cHJvcHJpYXRlDQo+ICs+IHByaXZpbGVnZXMsIHRoZSByZWFsIG9yIGVmZmVjdGl2ZSB1c2VyIElE IG9mIHRoZSBzZW5kaW5nIHByb2Nlc3Mgc2hhbGwNCj4gKz4gbWF0Y2ggdGhlIHJlYWwgb3Igc2F2 ZWQgc2V0LXVzZXItSUQgb2YgdGhlIHJlY2VpdmluZyBwcm9jZXNzLg0KPiArDQo+ICtUaGUgc29s dXRpb24gaXMgdG8gYWxsb2NhdGUgYSBzZWNvbmQgInJlYXBlciIgdWlkIHRoYXQgaXMgb25seSB1 c2VkIHRvDQo+IGtpbGwNCj4gK3RhcmdldCBwcm9jZXNzZXMuICBXZSBzZXQgdGhlIGV1aWQgb2Yg dGhlIGtpbGxpbmcgcHJvY2VzcyB0byB0aGUNCj4gYHRhcmdldF91aWRgLA0KPiArYnV0IHRoZSBy dWlkIG9mIHRoZSBraWxsaW5nIHByb2Nlc3MgdG8gYHJlYXBlcl91aWRgLCBsZWF2aW5nIHRoZSBz dWlkIG9mDQo+IHRoZQ0KPiAra2lsbGluZyBwcm9jZXNzIGFzIDA6DQo+ICsNCj4gKyAgICBzZXRy ZXN1aWQocmVhcGVyX3VpZCwgdGFyZ2V0X3VpZCwgMCk7DQo+ICsgICAga2lsbCgtMSwgOSk7DQo+ ICsNCj4gK05PVEU6IFdlIGNhbm5vdCB1c2UgYHNldHJldWlkKHJlYXBlcl91aWQsIHRhcmdldF91 aWQpYCBoZXJlLCBhcyB0aGF0DQo+ICt3aWxsIHNldCAqYm90aCogZXVpZCAqYW5kKiBzdWlkIHRv IGB0YXJnZXRfdWlkYCwgbWFraW5nIHRoZSBraWxsaW5nDQo+ICtwcm9jZXNzIHZ1bG5lcmFibGUg dG8gdGhlIHRhcmdldCBwcm9jZXNzIGFnYWluLg0KPiArDQo+ICtTaW5jZSB0aGlzIHdpbGwga2ls bCBhbGwgb3RoZXIgYHJlYXBlcl91aWRgIHByb2Nlc3NlcyBhcyB3ZWxsLCB3ZSBtdXN0DQo+ICtl aXRoZXIgYWxsb2NhdGUgYSBzZXBhcmF0ZSBgcmVhcGVyX3VpZGAgcGVyIGRvbWFpbiwgb3IgdXNl IGxvY2tpbmcgdG8NCj4gK2Vuc3VyZSB0aGF0IG9ubHkgb25lIGtpbGxpbmcgcHJvY2VzcyBpcyBh Y3RpdmUgYXQgYSB0aW1lLg0KPiArDQo+ICsjIyBsaWJ4bDogVHJlYXQgUU1QIGNvbm5lY3Rpb24g YXMgdW50cnVzdGVkDQo+ICsNCj4gKycnJ0Rlc2NyaXB0aW9uJycnOiBDdXJyZW50bHkgbGlieGwg dGFsa3Mgd2l0aCBRRU1VIHZpYSBRTVA7IGJ1dCBpdHMNCj4gK2ludGVyYWN0aW9ucyBoYXZlIG5v dCBoaXN0b3JpY2FsbHkgY29uc2lkZXJlZCBmcm9tIGEgc2VjdXJpdHkgcG9pbnQgb2YNCj4gK3Zp ZXcuICBGb3IgZXhhbXBsZSwgcW1wX3N5bmNocm9ub3VzX3NlbmQoKSB3YWl0cyBmb3IgYSByZXNw b25zZSBmcm9tDQo+ICtRRU1VLCB3aGljaCBhIGNvbXByb21pc2VkIFFFTVUgY291bGQgc2ltcGx5 IG5vdCBzZW5kICh0aHVzIHByZXZlbnRpbmcNCj4gK3RoZSB0b29sc3RhY2sgZnJvbSBtYWtpbmcg Zm9yd2FyZCBwcm9ncmVzcykuDQo+ICsNCj4gKycnJ0ltcGxlbWVudGF0aW9uJycnOiBBdWRpdCB0 b29sc3RhY2sgaW50ZXJhY3Rpb25zIHdpdGggUUVNVSB3aGljaA0KPiAraGFwcGVuIGFmdGVyIHRo ZSBndWVzdCBoYXMgc3RhcnRlZCBydW5uaW5nLCBhbmQgYXNzdW1lIFFFTVUgaGFzIGJlZW4NCj4g K2NvbXByb21pc2VkLg0KPiArDQo+ICsjIyMgc2VjY29tcCBmaWx0ZXJpbmcgKExpbnV4IG9ubHkp DQo+ICsNCj4gKycnJ0Rlc2NyaXB0aW9uJycnOiBUdXJuIG9uIHNlY2NvbXAgZmlsdGVyaW5nIHRv IGRpc2FibGUgc3lzY2FsbHMgd2hpY2gNCj4gK1FFTVUgZG9lc24ndCBuZWVkLg0KPiArDQo+ICsn JydJbXBsZW1lbnRhdGlvbicnJzogRW5hYmxlIGZyb20gdGhlIGNvbW1hbmQtbGluZToNCj4gKw0K PiArICAgIC1zYW5kYm94DQo+IG9uLG9ic29sZXRlPWRlbnksZWxldmF0ZXByaXZpbGVnZXM9YWxs b3csc3Bhd249ZGVueSxyZXNvdXJjZWNvbnRyb2w9ZGVueQ0KPiArDQo+ICtgZWxldmF0ZXByaXZp bGVnZXNgIGlzIGN1cnJlbnRseSByZXF1aXJlZCB0byBhbGxvdyBgLXJ1bmFzYCB0byB3b3JrLg0K PiArUmVtb3ZpbmcgdGhpcyByZXF1aXJlbWVudCB3b3VsZCBtZWFuIG1ha2luZyBzdXJlIHRoYXQg dGhlIHVpZCBjaGFuZ2UNCj4gK2hhcHBlbmVkIGJlZm9yZSB0aGUgc2VjY29tcDIgY2FsbCwgcGVy aGFwcyBieSBjaGFuZ2luZyB0aGUgdWlkIGJlZm9yZQ0KPiArZXhlY3V0aW5nIFFFTVUuICAoQnV0 IHRoaXMgd291bGQgdGhlbiByZXF1aXJlIG90aGVyIGNoYW5nZXMgdG8gY3JlYXRlDQo+ICt0aGUg UU1QIHNvY2tldCwgVk5DIHNvY2tldCwgYW5kIHNvIG9uKS4NCj4gKw0KPiArSXQgc2hvdWxkIGJl IG5vdGVkIHRoYXQgYC1zYW5kYm94YCBpcyBpbXBsZW1lbnRlZCBhcyBhIGJsYWNrbGlzdCwgbm90 DQo+ICthIHdoaXRlbGlzdDsgdGhhdCBpcywgaXQgZGlzYWJsZXMga25vd24tdW5zZWQgZnVuY3Rp b25hbGl0eSB3aGljaCBtYXkNCj4gK2JlIGhhcm1mdWwsIHJhdGhlciB0aGFuIGRpc2FibGluZyBh bGwgZnVuY3Rpb25hbGl0eSBleGNlcHQgdGhhdCBrbm93bg0KPiArdG8gYmUgc2FmZSBhbmQgbmVl ZGVkLiAgVGhpcyBpcyB1bmZvcnR1bmF0ZWx5IG5lY2Vzc2FyeSBzaW5jZSBxZW11DQo+ICtkb2Vz bid0IGtub3cgd2hhdCBzeXN0ZW0gY2FsbHMgbGlicmFyaWVzIG1pZ2h0IGVuZCB1cCBtYWtpbmcu ICAoU2VlDQo+ICtbbHduLXNlY2NvbXBdIGZvciBhIG1vcmUgY29tcGxldGUgZGlzY3Vzc2lvbi4p DQo+ICsNCj4gK1RoaXMgZmVhdHVyZSBpcyBub3Qgb24gYnkgZGVmYXVsdCBhbmQgbWF5IG5vdCBi ZSBhdmFpbGFibGUgaW4gYWxsDQo+ICtlbnZpcm9ubWVudHMuICBXZSB0aGVyZWZvcmUgbmVlZCB0 byBlaXRoZXI6DQo+ICsgMS4gUmVxdWlyZSB0aGF0IHRoaXMgZmVhdHVyZSBiZSBlbmFibGVkIHRv IGJ1aWxkIHFlbXUNCj4gKyAyLiBDaGVjayBmb3IgYC1zYW5kYm94YCBzdXBwb3J0IGF0IHJ1bnRp bWUgYmVmb3JlDQo+ICsNCj4gK1tsd24tc2VjY29tcF06IGh0dHBzOi8vbHduLm5ldC9BcnRpY2xl cy83Mzg2OTQvDQo+ICsNCj4gKyMjIyBEaXNrcw0KPiArDQo+ICtUaGUgY2hyb290IChhbmQgc2Vj Y29tcD8pIGhhcHBlbnMgbGF0ZSBlbm91Z2ggc3VjaCB0aGF0IFFFTVUgY2FuDQo+ICtpbml0aWFs aXplIGl0c2VsZiBhbmQgb3BlbiBpdHMgZGlza3MuIElmIHlvdSB3YW50IHRvIGFkZCBhIGRpc2sg YXQgcnVuDQo+ICt0aW1lIHZpYSBvciBpbnNlcnQgYSBDRCwgeW91IGNhbid0IHBhc3MgYSBwYXRo IGJlY2F1c2UgUUVNVSBpcw0KPiArY2hyb290ZWQuIEluc3RlYWQgdXNlIHRoZSBhZGQtZmQgUU1Q IGNvbW1hbmQgYW5kIHVzZQ0KPiArL2Rldi9mZHNldC88ZmRzZXQtaWQ+IGFzIHRoZSBwYXRoLg0K PiArDQo+ICtBIGZ1cnRoZXIgbGF5ZXIgb2YgcmVzdHJpY3Rpb24gY291bGQgYmUgdG8gc2V0IFJM SU1JVF9OT0ZJTEVTIHRvICcwJywNCj4gK2FuZCBoYW5kIGFsbCBkaXNrcyBvdmVyIFFNUC4NCj4g Kw0KPiArIyMgTWlncmF0aW9uDQo+ICsNCj4gK1doZW4gY2FsbGluZyB4ZW4tc2F2ZS1kZXZpY2Vz LXN0YXRlLCBzaW5jZSBRRU1VIGlzIHJ1bm5pbmcgaW4gYSBjaHJvb3QNCj4gK2l0IGlzIG5vdCB1 c2VmdWwgdG8gcGFzcyBhIGZpbGVuYW1lIChpdCBkb2Vzbid0IGV2ZW4gaGF2ZSB3cml0ZSBhY2Nl c3MNCj4gK2luc2lkZSB0aGUgY2hyb290KS4gSW5zdGVhZCwgZ2l2ZSBpdCBhbiBvcGVuIGZkIHVz aW5nIHRoZSBhZGQtZmQNCj4gK21lY2hhbmlzbS4NCj4gKw0KPiArQWRkaXRpb25hbGx5LCBhbGwg dGhlIHJlc3RyaWN0aW9ucyBuZWVkIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHFlbXUNCj4gK3N0YXJ0 ZWQgdXAgb24gdGhlIHBvc3QtbWlncmF0aW9uIHNpZGUuICBPbmUgaXNzdWUgdGhhdCBuZWVkcyB0 byBiZQ0KPiArc29sdmVkIGlzIGhvdyB0byBzaWduYWwgdGhlIHRvb2xzdGFjayBvbiByZXN0b3Jl IHRoYXQgcWVtdSBpcyByZWFkeQ0KPiArZm9yIHRoZSBkb21haW4gdG8gYmUgc3RhcnRlZCAoc2lu Y2UgdGhpcyBpcyBub3JtYWxseSBkb25lIHZpYQ0KPiAreGVuc3RvcmUsIGFuZCBhdCB0aGlzIHBv aW50IHRoZSB4ZW5zdG9yZSBjb25uZWN0aW9ucyB3aWxsIGhhdmUgYmVlbg0KPiArY2xvc2VkKS4N Cg0KSSB0aG91Z2h0IEFudGhvbnkgaGFkIGZpeGVkIHRoaXMgbm93Pw0KDQogIFBhdWwNCg0KPiAr DQo+ICsjIyMgTmV0d29yayBuYW1lc3BhY2luZyAoTGludXggb25seSkNCj4gKw0KPiArRW50ZXIg UUVNVSBpbnRvIGl0cyBvd24gbmV0d29yayBuYW1lc3BhY2UgKGluIGFkZGl0aW9uIHRvIG1vdW50 ICYgSVBDDQo+ICtuYW1lc3BhY2VzKToNCj4gKw0KPiArICAgIHVuc2hhcmUoQ0xPTkVfTkVXTkVU KTsNCj4gKw0KPiArUUVNVSBkb2VzIGFjdHVhbGx5IHVzZSB0aGUgbmV0d29yayBuYW1lc3BhY2Ug YXMgYSBYZW4gRE0gZm9yIHR3bw0KPiArcHVycG9zZXM6IDEpIFRvIHNldCB1cCBuZXR3b3JrIHRh cCBkZXZpY2VzIDIpIFRvIG9wZW4gdm5jIGNvbm5lY3Rpb25zLg0KPiArDQo+ICsjIyMjIE5ldHdv cmsNCj4gKw0KPiArSWYgUUVNVSBydW5zIGluIGl0cyBvd24gbmV0d29yayBuYW1lc3BhY2UsIGl0 IGNhbid0IG9wZW4gdGhlIHRhcA0KPiArZGV2aWNlIGl0c2VsZiBiZWNhdXNlIHRoZSBpbnRlcmZh Y2Ugd29uJ3QgYmUgdmlzaWJsZSBvdXRzaWRlIG9mIGl0cw0KPiArb3duIG5hbWVzcGFjZS4gU28g aW5zdGVhZCwgaGF2ZSB0aGUgdG9vbHN0YWNrIG9wZW4gdGhlIGRldmljZSBhbmQgcGFzcw0KPiAr aXQgYXMgYW4gZmQgb24gdGhlIGNvbW1hbmQtbGluZToNCj4gKw0KPiArICAgIC1kZXZpY2UgcnRs ODEzOSxuZXRkZXY9dGFwbmV0MCxtYWM9Li4uIC1uZXRkZXYNCj4gdGFwLGlkPXRhcG5ldDAsZmQ9 PHRhcGZkPg0KPiArDQo+ICsjIyMjIFZOQw0KPiArDQo+ICtJZiBRRU1VIHJ1bnMgaW4gaXRzIG93 biBuZXR3b3JrIG5hbWVzcGFjZSwgaXQgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZA0KPiArdG8gbGlz dGVuIG9uIGEgVENQIHNvY2tldCBvdXRzaWRlIG9mIGl0cyBvd24gbmV0d29yayBuYW1lc3BhY2Uu IE9uZQ0KPiArb3B0aW9uIHdvdWxkIGJlIHRvIHVzZSBWTkMgb3ZlciBhIFVOSVggc29ja2V0Og0K PiArDQo+ICsgICAgLXZuYyB1bml4Oi92YXIvcnVuL3hlbi92bmMtPGRvbWlkPg0KPiArDQo+ICtI b3dldmVyLCB0aGlzIHdvdWxkIGJyZWFrIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGdlbmVyYWwgY2Fz ZTsgSSB0aGluaw0KPiArd2UgbmVlZCB0byBoYXZlIHRoZSB0b29sc3RhY2sgb3BlbiBhIHNvY2tl dCBhbmQgcGFzcyB0aGUgZmQgdG8gUUVNVQ0KPiArKHdoaWNoIHJlcXVpcmVzIGNoYW5nZXMgdG8g UUVNVSkuDQo+ICsNCj4gZGlmZiAtLWdpdCBhL2RvY3MvZmVhdHVyZXMvcWVtdS1kZXByaXZpbGVn ZS5wYW5kb2MgYi9kb2NzL2ZlYXR1cmVzL3FlbXUtDQo+IGRlcHJpdmlsZWdlLnBhbmRvYw0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mOTQxNTI1MTg5DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvZG9jcy9mZWF0dXJlcy9xZW11LWRlcHJpdmlsZWdlLnBhbmRv Yw0KPiBAQCAtMCwwICsxLDEwMSBAQA0KPiArJSBRRU1VIERlcHJpdmlsZWdpbmcgLyBkbV9yZXN0 cmljdA0KPiArJSBSZXZpc2lvbiAxDQo+ICsNCj4gK1xjbGVhcnBhZ2UNCj4gKw0KPiArIyBCYXNp Y3MNCj4gKw0KPiArLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsgICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2 aWV3KioNCj4gKw0KPiArQXJjaGl0ZWN0dXJlKHMpOiB4ODYNCj4gKw0KPiArICAgQ29tcG9uZW50 KHMpOiB0b29sc3RhY2sNCj4gKw0KPiArLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKyMgT3ZlcnZpZXcN Cj4gKw0KPiArQnkgZGVmYXVsdCwgdGhlIFFFTVUgZGV2aWNlIG1vZGVsIGlzIHJ1biBpbiBkb21h aW4gMC4gIElmIGFuIGF0dGFja2VyDQo+ICtjYW4gZ2FpbiBjb250cm9sIG9mIGEgUUVNVSBwcm9j ZXNzLCBpdCBjb3VsZCBlYXNpbHkgdGFrZSBjb250cm9sIG9mIGENCj4gK3N5c3RlbS4NCj4gKw0K PiArZG1fcmVzdHJpY3QgaXMgYSBzZXQgb2Ygb3BlcmF0aW9ucyB0byByZXN0cmljdCBRRU1VIHJ1 bm5pbmcgaW4gZG9tYWluDQo+ICswLiAgSXQgY29uc2lzdHMgb2YgdHdvIGhhbHZlczoNCj4gKw0K PiArIDEuIE1lY2hhbmlzbXMgdG8gcmVzdHJpY3QgUUVNVSB0byBvbmx5IGJlaW5nIGFibGUgdG8g YWZmZWN0IGl0cyBvd24NCj4gK2RvbWFpbg0KPiArIDIuIE1lY2hhbmlzbXMgdG8gcmVzdHJ1Y3Qg UUVNVSdzIGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCBkb21haW4gMC4NCj4gKw0KPiArIyBVc2Vy IGRldGFpbHMNCj4gKw0KPiArIyMgR2V0dGluZyB0aGUgcmlnaHQgdmVyc2lvbnMgb2Ygc29mdHdh cmUNCj4gKw0KPiArTGludXg6IDQuMTErDQo+ICsNCj4gK1FlbXU6IDMuMCsgKE9yIHRoZSB2ZXJz aW9uIHRoYXQgY29tZXMgd2l0aCBYZW4gNC4xMispDQo+ICsNCj4gKyMjIFNldHRpbmcgdXAgYSBn cm91cCBhbmQgdXNlcmlkIHJhbmdlDQo+ICsNCj4gK0ZvciBtYXhpbXVtIHNlY3VyaXR5LCBsaWJ4 bCBuZWVkcyB0byBydW4gdGhlIGRldmljZW1vZGVsIGZvciBlYWNoDQo+ICtkb21haW4gdW5kZXIg YSB1c2VyIGlkIChVSUQpIGNvcnJlc3BvbmRpbmcgdG8gaXRzIGRvbWFpbiBpZC4gIFRoZXJlDQo+ ICthcmUgMzI3NTIgcG9zc2libGUgZG9tYWluIElEcywgYW5kIHNvIGxpYnhsIG5lZWRzIDMyNzUy IHVzZXIgaWRzIHNldA0KPiArYXNpZGUgZm9yIGl0LiAgU2V0dGluZyB1cCBhIGdyb3VwIGZvciBh bGwgZGV2aWNlbW9kZWxzIHRvIHJ1biBhdCBpcw0KPiArYWxzbyByZWNvbW1lbmRlZC4NCj4gKw0K PiArVGhlIHNpbXBsZXN0IGFuZCBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gZG8gdGhpcyBpcyB0byBh bGxvY2F0ZSBhDQo+ICtjb250aWd1b3VzIGJsb2NrIG9mIFVJRHMsIGFuZCBjcmVhdGUgYSBzaW5n bGUgdXNlciBuYW1lZA0KPiArYHhlbi1xZW11dXNlci1yYW5nZS1iYXNlYCB3aXRoIHRoZSBmaXJz dCBVSUQuICBGb3IgZXhhbXBsZSwgdW5kZXINCj4gK0RlYmlhbjoNCj4gKw0KPiArICAgIGFkZHVz ZXIgLS1zeXN0ZW0gLS11aWQgMTMxMDcyIC0tZ3JvdXAgLS1uby1jcmVhdGUtaG9tZSB4ZW4tcWVt dXVzZXItDQo+IHJhbmdlLWJhc2UNCj4gKw0KPiArVHdvIGNvbW1lbnRzIG9uIHRoaXMgbWV0aG9k Og0KPiArDQo+ICsgIDEuIE1vc3QgbW9kZXJuIHN5c3RlbXMgaGF2ZSAzMi1iaXQgVUlEcywgYW5k IHNvIGNhbiBpbiB0aGVvcnkgZ28gdXANCj4gK3RvIDJeMzEgKG9yIDJeMzIgaWYgdWlkcyBhcmUg dW5zaWduZWQpLiAgUE9TSVggb25seSBndWFyYW50ZWVzIDE2LWJpdA0KPiArVUlEcyBob3dldmVy OyBVSUQgNjU1MzUgaXMgcmVzZXJ2ZWQgZm9yIGFuIGludmFsaWQgdmFsdWUsIGFuZCA2NTUzNCBp cw0KPiArbm9ybWFsbHkgYWxsb2NhdGVkIHRvICJub2JvZHkiLg0KPiArICAyLiBBZGRpdGlvbmFs bHksIHNvbWUgY29udGFpbmVyIHN5c3RlbXMgaGF2ZSBwcm9wb3NlZCB1c2luZyB0aGUNCj4gK3Vw cGVyIDE2IGJpdHMgb2YgdGhlIHVpZCBmb3IgYSBjb250YWluZXIgSUQuICBVc2luZyBhIG11bHRp cGxlIG9mIDJeMTYNCj4gK2ZvciB0aGUgcmFuZ2UgYmFzZSAoYXMgaXMgZG9uZSBhYm92ZSkgd2ls bCByZXN1bHQgaW4gYWxsIFVJRHMgYmVpbmcNCj4gK2ludGVycHJldGVkIGJ5IHN1Y2ggc3lzdGVt cyBhcyBhIHNpbmdsZSBjb250YWluZXIgSUQuDQo+ICsNCj4gK0Fub3RoZXIsIGxlc3Mtc2VjdXJl IHdheSBpcyB0byBydW4gYWxsIFFFTVVzIGFzIHRoZSBzYW1lIFVJRC4gIFRvIGRvDQo+ICt0aGlz LCBjcmVhdGUgYSB1c2VyIG5hbWVkIGB4ZW4tcWVtdXVzZXItc2hhcmVkYDsgZm9yIGV4YW1wbGU6 DQo+ICsNCj4gKyAgICBhZGR1c2VyIC0tbm8tY3JlYXRlLWhvbWUgLS1zeXN0ZW0geGVuLXFlbXV1 c2VyLXNoYXJlZA0KPiArDQo+ICsjIyBEb21haW4gY29uZmlnIGNoYW5nZXMNCj4gKw0KPiArVGhl IGNvcmUgZG9tYWluIGNvbmZpZyBjaGFuZ2UgaXMgdG8gYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0 byB0aGUNCj4gK2RvbWFpbiBjb25maWd1cmF0aW9uOg0KPiArDQo+ICsgICAgZG1fcmVzdHJpY3Q9 MQ0KPiArDQo+ICtUaGlzIHdpbGwgcGVyZm9ybSBhIG51bWJlciBvZiByZXN0cmljdGlvbnMsIG91 dGxpbmVkIGJlbG93IGluIHRoZQ0KPiArJ1RlY2huaWNhbCBkZXRhaWxzJyBzZWN0aW9uLg0KPiAr DQo+ICsjIFRlY2huaWNhbCBkZXRhaWxzDQo+ICsNCj4gK1NlZSBkb2NzL2Rlc2lnbi9xZW11LWRl cHJpdmlsZWdlLm1kIGZvciB0ZWNobmljYWwgZGV0YWlscy4NCj4gKw0KPiArIyBMaW1pdGF0aW9u cw0KPiArDQo+ICtUaGUgZm9sbG93aW5nIGZlYXR1cmVzIHN0aWxsIG5lZWQgdG8gYmUgaW1wbGVt ZW50ZWQ6DQo+ICsgKiBJbnNlcnRpbmcgYSBuZXcgY2Ryb20gd2hpbGUgdGhlIGd1ZXN0IGlzIHJ1 bm5pbmcgKHhsIGNkcm9tLWluc2VydCkNCj4gKyAqIE1pZ3JhdGlvbiAvIHNhdmUgLyByZXN0b3Jl DQo+ICsNCj4gK0FkZGl0aW9uYWxseSwgZ2V0dGluZyBQQ0kgcGFzc3Rocm91Z2ggdG8gd29yayBz ZWN1cmVseSB3b3VsZCByZXF1aXJlIGENCj4gK3NpZ25pZmljYW50IHJld29yayBvZiBob3cgcGFz c3Rocm91Z2ggd29ya3MgYXQgdGhlIG1vbWVudC4gIEl0IG1heSBiZQ0KPiAraW1wbGVtZW50ZWQg YXQgc29tZSBwb2ludCBidXQgaXMgbm90IGEgbmVhci10ZXJtIHByaW9yaXR5Lg0KPiArDQo+ICtT ZWUgU1VQUE9SVC5tZCBmb3Igc2VjdXJpdHkgc3VwcG9ydCBzdGF0dXMuDQo+ICsNCj4gKyMgSGlz dG9yeQ0KPiArDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gK0RhdGUgICAgICAgUmV2aXNpb24gVmVy c2lvbiAgTm90ZXMNCj4gKy0tLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArMjAxOC0wOS0xNCAxICAgICAgICBY ZW4gNC4xMiBJbXBvcnRlZCBmcm9tIGRvY3MvbWlzYw0KPiArLS0tLS0tLS0tLSAtLS0tLS0tLSAt LS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IGRp ZmYgLS1naXQgYS9kb2NzL21pc2MvcWVtdS1kZXByaXZpbGVnZS50eHQgYi9kb2NzL21pc2MvcWVt dS0NCj4gZGVwcml2aWxlZ2UudHh0DQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCA1OGI4NmEzOTA4Li4wMDAwMDAwMDAwDQo+IC0tLSBhL2RvY3MvbWlzYy9xZW11LWRlcHJpdmls ZWdlLnR4dA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDM2ICswLDAgQEANCj4gLUZvciBzZWN1 cml0eSByZWFzb25zLCBsaWJ4bCB0cmllcyB0byBwYXNzIGEgbm9uLXJvb3QgdXNlcm5hbWUgdG8g UUVNVSBhcw0KPiAtYXJndW1lbnQuIER1cmluZyBpbml0aWFsaXphdGlvbiBRRU1VIGNhbGxzIHNl dHVpZCBhbmQgc2V0Z2lkIHdpdGggdGhlDQo+IC11c2VyIElEIGFuZCB0aGUgZ3JvdXAgSUQgb2Yg dGhlIHVzZXIgcGFzc2VkIGFzIGFyZ3VtZW50Lg0KPiAtTGlieGwgbG9va3MgZm9yIHRoZSBmb2xs b3dpbmcgdXNlcnMgaW4gdGhpcyBvcmRlcjoNCj4gLQ0KPiAtMSkgYSB1c2VyIG5hbWVkICJ4ZW4t cWVtdXVzZXItZG9taWQkZG9taWQiLA0KPiAtV2hlcmUgJGRvbWlkIGlzIHRoZSBkb21pZCBvZiB0 aGUgZG9tYWluIGJlaW5nIGNyZWF0ZWQuDQo+IC1UaGlzIHJlcXVpcmVzIHRoZSByZXNlcnZhdGlv biBvZiA2NTUzNSB1aWRzIGZyb20geGVuLXFlbXV1c2VyLWRvbWlkMQ0KPiAtdG8geGVuLXFlbXV1 c2VyLWRvbWlkNjU1MzUuIFRvIHVzZSB0aGlzIG1lY2hhbmlzbSwgeW91IG1pZ2h0IHdhbnQgdG8N Cj4gLWNyZWF0ZSBhIGxhcmdlIG51bWJlciBvZiB1c2VycyBhdCBpbnN0YWxsYXRpb24gdGltZS4g Rm9yIGV4YW1wbGU6DQo+IC0NCj4gLWZvciAoKGk9MTsgaTw2NTUzNjsgaSsrKSkNCj4gLWRvDQo+ IC0gICAgYWRkdXNlciAtLW5vLWNyZWF0ZS1ob21lIC0tc3lzdGVtIHhlbi1xZW11dXNlci1kb21p ZCRpDQo+IC1kb25lDQo+IC0NCj4gLVlvdSBtaWdodCB3YW50IHRvIGNvbnNpZGVyIHBhc3Npbmcg LS1ncm91cCB0byBhZGR1c2VyIHRvIGNyZWF0ZSBhIG5ldw0KPiAtZ3JvdXAgZm9yIGVhY2ggbmV3 IHVzZXIuDQo+IC0NCj4gLQ0KPiAtMikgYSB1c2VyIG5hbWVkICJ4ZW4tcWVtdXVzZXItc2hhcmVk Ig0KPiAtQXMgYSBmYWxsIGJhY2sgaWYgYm90aCAxKSBmYWlscywgbGlieGwgd2lsbCB1c2UgYSBz aW5nbGUgdXNlciBmb3INCj4gLWFsbCBRRU1VIGluc3RhbmNlcy4gVGhlIHVzZXIgaXMgbmFtZWQg eGVuLXFlbXV1c2VyLXNoYXJlZC4gVGhpcyBpcw0KPiAtbGVzcyBzZWN1cmUgYnV0IHN0aWxsIGJl dHRlciB0aGFuIHJ1bm5pbmcgUUVNVSBhcyByb290LiBVc2luZyB0aGlzIGlzIGFzDQo+IC1zaW1w bGUgYXMgY3JlYXRpbmcganVzdCBvbmUgbW9yZSB1c2VyIG9uIHlvdXIgaG9zdDoNCj4gLQ0KPiAt YWRkdXNlciAtLW5vLWNyZWF0ZS1ob21lIC0tc3lzdGVtIHhlbi1xZW11dXNlci1zaGFyZWQNCj4g LQ0KPiAtDQo+IC0zKSByb290DQo+IC1BcyBhIGxhc3QgcmVzb3J0LCBsaWJ4bCB3aWxsIHN0YXJ0 IFFFTVUgYXMgcm9vdC4NCj4gLQ0KPiAtDQo+IC1QbGVhc2Ugbm90ZSB0aGF0IHJ1bm5pbmcgUUVN VSBhcyBub24tcm9vdCBjYXVzZXMgc2V2ZXJhbCBmZWF0dXJlcyBsaWtlDQo+IC1taWdyYXRpb24g YW5kIFBDSSBwYXNzdGhyb3VnaCB0byBub3Qgd29yayBwcm9wZXJseSBhbmQgbWF5IHByZXZlbnQg dGhlDQo+IGd1ZXN0DQo+IC1mcm9tIGJvb3RpbmcuDQo+IC0tDQo+IDIuMTkuMQ0KPiANCj4gDQo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QNCj4gWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0 dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWwNCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=