From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [RFC PATCH] drm/i915/guc: New interface files for GuC starting in Gen11 Date: Thu, 21 Jun 2018 08:13:30 -0700 Message-ID: <20180621151330.GA2362@intel.com> References: <1527285575-19898-1-git-send-email-oscar.mateo@intel.com> <61120134-ce9a-4e1c-ea05-fba847e02251@intel.com> <83F5C7385F545743AD4FB2A62F75B07333A7DCF3@ORSMSX108.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 285AB6E8BF for ; Thu, 21 Jun 2018 15:13:32 +0000 (UTC) Content-Disposition: inline In-Reply-To: <83F5C7385F545743AD4FB2A62F75B07333A7DCF3@ORSMSX108.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Srivatsa, Anusha" Cc: "Patel, Jalpa" , "Sundaresan, Sujaritha" , "Rogovin, Kevin" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMTQsIDIwMTggYXQgMTA6NDg6MDFQTSArMDAwMCwgU3JpdmF0c2EsIEFudXNo YSB3cm90ZToKCk92ZXJhbGwgSSBkb24ndCBzZWUgYW55IGJpZ2dlc3QgaXNzdWUgd2l0aCB0aGlz IGZpbGUgYW5kIEkgYWdyZWUgd2l0aAptb3N0IG9mIE1pY2hhbCdzIGNvbW1lbnRzLCBzcGVjaWFs bHkgd2l0aCB0aGUgbmFtZWxlc3MgYml0ZmllbGRzLgoKV2VsbCwgbWF5YmUgdGhlIG5hbWVsZXNz IGlzIGEgYmlnIGlzc3VlIGlmIGl0IGJyZWFrcyBjb21waWxlcnMgb3V0IHRoZXJlLgoKQnV0IEkn bSByZXNwb25kaW5nIGhlcmUgdG8gc29tZSBjb21tZW50cyBhbmQgcXVlc3Rpb25zIHRoYXQgd2Fz IHBlbmRpbmcKYW5kIGhvcGVmdWxseSBwdXQgdGhpcyB0aHJlYWQgYmFjayB0byB0b3Agb2YgcGVv cGxlJ3MgaW5ib3hlcyA7KQoKbW9yZSBpbmxpbmUgYmVsb3c6Cgo+IAo+IAo+ID4tLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBNYXRlbyBMb3phbm8sIE9zY2FyCj4gPlNlbnQ6IFdl ZG5lc2RheSwgSnVuZSAxMywgMjAxOCAzOjA4IFBNCj4gPlRvOiBXYWpkZWN6a28sIE1pY2hhbCA8 TWljaGFsLldhamRlY3prb0BpbnRlbC5jb20+OyBpbnRlbC0KPiA+Z2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID5DYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50 ZWwuY29tPjsgUm9nb3ZpbiwgS2V2aW4KPiA+PGtldmluLnJvZ292aW5AaW50ZWwuY29tPjsgU3Bv dHN3b29kLCBKb2huIEEgPGpvaG4uYS5zcG90c3dvb2RAaW50ZWwuY29tPjsKPiA+U3JpdmF0c2Es IEFudXNoYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT47IENlcmFvbG8gU3B1cmlvLCBEYW5p ZWxlCj4gPjxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPjsgVGhpZXJyeSwgTWljaGVs IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5jb20+Owo+ID5DaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az47IFdpbmlhcnNraSwgTWljaGFsCj4gPjxtaWNoYWwud2luaWFyc2tpQGlu dGVsLmNvbT47IExpcywgVG9tYXN6IDx0b21hc3oubGlzQGludGVsLmNvbT47IEV3aW5zLCBKb24K PiA+PGpvbi5ld2luc0BpbnRlbC5jb20+OyBTdW5kYXJlc2FuLCBTdWphcml0aGEKPiA+PHN1amFy aXRoYS5zdW5kYXJlc2FuQGludGVsLmNvbT47IFBhdGVsLCBKYWxwYSA8amFscGEucGF0ZWxAaW50 ZWwuY29tPjsgTGksCj4gPllhb2RvbmcgPHlhb2RvbmcubGlAaW50ZWwuY29tPgo+ID5TdWJqZWN0 OiBSZTogW1JGQyBQQVRDSF0gZHJtL2k5MTUvZ3VjOiBOZXcgaW50ZXJmYWNlIGZpbGVzIGZvciBH dUMgc3RhcnRpbmcgaW4KPiA+R2VuMTEKPiA+Cj4gPgo+ID4KPiA+T24gNS8yOS8yMDE4IDc6NTkg QU0sIE1pY2hhbCBXYWpkZWN6a28gd3JvdGU6Cj4gPj4gSGksCj4gPj4KPiA+PiBPbiBGcmksIDI1 IE1heSAyMDE4IDIzOjU5OjM1ICswMjAwLCBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwu Y29tPgo+ID4+IHdyb3RlOgo+ID4+Cj4gPj4+IEd1QyBpbnRlcmZhY2UgaGFzIGJlZW4gcmVkZXNp Z25lZCAob3IgY2xlYW5lZCB1cCwgcmF0aGVyKSBzdGFydGluZwo+ID4+PiB3aXRoIEdlbjExLCBh cyBhIHN0ZXBwaW5nIHN0b25lIHRvd2FyZHMgYSBuZXcgYnJhbmNoaW5nIHN0cmF0ZWd5Cj4gPj4+ IHRoYXQgaGVscHMgbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91 cyBHZW5zLCBhcwo+ID4+PiB3ZWxsIGFzIHNpZGV3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhl ciBPU2VzLgo+ID4+Pgo+ID4+PiBUaGUgaW50ZXJmYWNlIGlzIHNwbGl0IGluIHR3byBoZWFkZXIg ZmlsZXM6IG9uZSBmb3IgdGhlIEtNRCBhbmQgb25lCj4gPj4+IGZvciBjbGllbnRzIG9mIHRoZSBH dUMgKHdoaWNoLCBpbiBvdXIgY2FzZSwgaGFwcGVucyB0byBiZSB0aGUgS01ECj4gPj4+IGFzIHdl bGwpLiBTTFBDIGludGVyZmFjZSBmaWxlcyB3aWxsIGNvbWUgYXQgYSBsYXRlciBkYXRlLgo+ID4+ Pgo+ID4+PiBDb3VsZCB3ZSBnZXQgZXllcyBvbiB0aGUgbmV3IGludGVyZmFjZSBoZWFkZXIgZmls ZXMsIHRvIG1ha2Ugc3VyZSB0aGUKPiA+Pj4gR3VDIHRlYW0gaXMgbW92aW5nIGluIHRoZSByaWdo dCBkaXJlY3Rpb24/Cj4gPj4+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nh ci5tYXRlb0BpbnRlbC5jb20+Cj4gPj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0 aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IENjOiBLZXZpbiBSb2dvdmluIDxrZXZpbi5yb2dv dmluQGludGVsLmNvbT4KPiA+Pj4gQ2M6IEpvaG4gQSBTcG90c3dvb2QgPGpvaG4uYS5zcG90c3dv b2RAaW50ZWwuY29tPgo+ID4+PiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FA aW50ZWwuY29tPgo+ID4+PiBDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJh b2xvc3B1cmlvQGludGVsLmNvbT4KPiA+Pj4gQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53 YWpkZWN6a29AaW50ZWwuY29tPgo+ID4+PiBDYzogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGll cnJ5QGludGVsLmNvbT4KPiA+Pj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgo+ID4+PiBDYzogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50 ZWwuY29tPgo+ID4+PiBDYzogVG9tYXN6IExpcyA8dG9tYXN6Lmxpc0BpbnRlbC5jb20+Cj4gPj4+ IENjOiBKb24gRXdpbnMgPGpvbi5ld2luc0BpbnRlbC5jb20+Cj4gPj4+IENjOiBTdWphcml0aGEg U3VuZGFyZXNhbiA8c3VqYXJpdGhhLnN1bmRhcmVzYW5AaW50ZWwuY29tPgo+ID4+PiBDYzogSmFs cGEgUGF0ZWwgPGphbHBhLnBhdGVsQGludGVsLmNvbT4KPiA+Pj4gQ2M6IEphY2tpZSBMaSA8eWFv ZG9uZy5saUBpbnRlbC5jb20+Cj4gPj4+IC0tLQo+ID4+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmggfCAyNTUgKysrKysrKwo+ID4+PiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19rbWRfaW50ZXJmYWNlLmjCoMKgwqAgfCA4NDcKPiA+ Pj4gKysrKysrKysrKysrKysrKysrKysrKwo+ID4+PiDCoDIgZmlsZXMgY2hhbmdlZCwgMTEwMiBp bnNlcnRpb25zKCspCj4gPj4+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmgKPiA+Pj4gwqBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ttZF9pbnRlcmZhY2UuaAo+ID4+Cj4g Pj4gY2FuIHdlIG5hbWUgdGhlc2UgZmlsZXMgYXM6Cj4gPj4KPiA+PiDCoMKgwqDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19pbnRlcmZhY2UuaAo+ID4+IMKgwqDCoMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ludGVyZmFjZV9jbGllbnQuaAo+ID4+IG9yCj4gPj4gwqDC oMKgwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZGVmcy5oCj4gPj4gwqDCoMKgwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZGVmc19jbGllbnQuaAo+ID4+IG9yCj4gPj4g wqDCoMKgwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndWMvZ3VjLmgKPiA+PiDCoMKgwqDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d1Yy9ndWNfY2xpZW50LmgKPiA+Cj4gPkknbSBmaW5lIHdpdGggYW55 IG9mIHRoZXNlIG5hbWVzLgo+ID4KPiA+Pgo+ID4+Pgo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2NsaWVudF9pbnRlcmZhY2UuaAo+ID4+PiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmgKPiA+Pj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiA+Pj4gaW5kZXggMDAwMDAwMC4uMWVmOTFhNwo+ID4+PiAtLS0gL2Rl di9udWxsCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGllbnRf aW50ZXJmYWNlLmgKPiA+Pj4gQEAgLTAsMCArMSwyNTUgQEAKPiA+Pj4gKy8qCj4gPj4+ICsgKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gPj4+ICsgKgo+ID4+PiArICogQ29weXJpZ2h0 IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiA+Pj4gKyAqLwo+ID4+PiArCj4gPj4+ICsjaWZu ZGVmIF9JTlRFTF9HVUNfQ0xJRU5UX0lOVEVSRkFDRV9IXwo+ID4+PiArI2RlZmluZSBfSU5URUxf R1VDX0NMSUVOVF9JTlRFUkZBQ0VfSF8KPiA+Pj4gKwo+ID4+Cj4gPj4gbmVlZCB0byBpbmNsdWRl IHR5cGVzLmggZm9yIHUzMgo+ID4KPiA+V2lsbCBkby4KPiA+Cj4gPj4KPiA+Pj4gKyNwcmFnbWEg cGFjaygxKQo+ID4+PiArCj4gPj4+Cj4gPisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4qKioqKioqKioqKioqCj4gPj4+ Cj4gPj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBFbmdpbmVzCj4gPj4+ ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+Pj4gKwo+ID4+Pgo+ID4qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKPiA+KioqKioqKioqKiovCj4gPj4KPiA+PiBubyBmYW5jeSBtYXJrdXBzLCBwbGVhc2UK PiA+Pgo+ID4KPiA+T2suCj4gPgo+ID4+PiArCj4gPj4+ICsjZGVmaW5lIEdVQ19NQVhfRU5HSU5F X0lOU1RBTkNFX1BFUl9DTEFTU8KgwqDCoCA0Cj4gPj4+ICsjZGVmaW5lIEdVQ19NQVhfU0NIRURV TEFCTEVfRU5HSU5FX0NMQVNTwqDCoMKgIDUKPiA+Pj4gKyNkZWZpbmUgR1VDX01BWF9FTkdJTkVf Q0xBU1NfQ09VTlTCoMKgwqDCoMKgwqDCoCA2Cj4gPj4+ICsjZGVmaW5lIEdVQ19FTkdJTkVfSU5W QUxJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNgo+ID4+Cj4gPj4gaG1tLCB3aHkgbm90IDcgb3Ig MTI3ID8KPiA+PiBtYXliZSBpZiB3ZSBuZWVkIHZhbHVlIGZvciBJTlZBTElEIHdlIHNob3VsZCB1 c2UgMCBvciAtMSAofjApCj4gPgo+ID5JJ2xsIHBhc3MgdGhpcyBjb21tZW50IHRvIHRoZSBHdUMg dGVhbS4KCkFueSByZXNwb25zZSBmcm9tIHRoZW0gb24gdGhpcyBhbmQgb3RoZXIgcmFpc2VkIGl0 ZW1zPwoKPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArLyogRW5naW5lIENsYXNzIHRoYXQgdUtlcm5l bCBjYW4gc2NoZWR1bGUgb24uIFRoaXMgaXMganVzdCBhIFNXCj4gPj4+IGVudW1lcmF0aW9uLgo+ ID4+PiArICogSFcgY29uZmlndXJhdGlvbiB3aWxsIGRlcGVuZCBvbiB0aGUgUGxhdGZvcm0gYW5k IFNLVQo+ID4+PiArICovCj4gPj4+ICtlbnVtIHVrX2VuZ2luZV9jbGFzcyB7Cj4gPj4KPiA+PiB3 aHkgdGhlcmUgaXMgbmV3IHByZWZpeCAidWsiID8KPiA+Cj4gPnVrIHN0YW5kcyBmb3IgdUtlcm5l bC4gSW4gdGhpcyBjYXNlLCBJJ20gZ3Vlc3NpbmcgaXQgaXMgdXNlZCB0bwo+ID5kaWZmZXJlbnRp YXRlIGJldHdlZW4gdGhlIGVuZ2luZSBjbGFzcyBkZWZpbmVkIGJ5IGhhcmR3YXJlIHZzLiB0aGUg b25lCj4gPmRlZmluZWQgYnkgdGhlIHVLZXJuZWwuCj4gPj4KPiA+Pj4gK8KgwqDCoCBVS19SRU5E RVJfRU5HSU5FX0NMQVNTID0gMCwKPiA+Pj4gK8KgwqDCoCBVS19WREVDRU5DX0VOR0lORV9DTEFT UyA9IDEsCj4gPj4+ICvCoMKgwqAgVUtfVkVfRU5HSU5FX0NMQVNTID0gMiwKPiA+Pj4gK8KgwqDC oCBVS19CTFRfQ09QWV9FTkdJTkVfQ0xBU1MgPSAzLAo+ID4+PiArwqDCoMKgIFVLX1JFU0VSVkVE X0VOR0lORV9DTEFTUyA9IDQsCj4gPj4+ICvCoMKgwqAgVUtfT1RIRVJfRU5HSU5FX0NMQVNTID0g NSwKPiA+Pgo+ID4+IGVpdGhlciB1c2UgdmFsaWQgbmFtZXMgb3IgZHJvcCBSRVNFUlZFRC9PVEhF UiBhcyB2YWx1ZXMKPiA+PiDCoCBmcm9tIDAgdG8gR1VDX01BWF9FTkdJTkVfQ0xBU1NfQ09VTlQg YXJlICdyZXNlcnZlZCcgYnkKPiA+PiBkZWZpbml0aW9uIHVubGVzcyBleHBsaWNpdGx5IGRlZmlu ZWQgOykKPiA+Cj4gPkknbGwgZHJvcCB0aGVtLgo+ID4KPiA+Pgo+ID4+PiArfTsKPiA+Pgo+ID4+ IGFzIHdlIGRvbid0IHVzZSBlbnVtIGluIGJpbmFyeSBzdHJ1Y3QgZGVmaW5pdGlvbnMsIHRoZW4g bWF5YmUgd2UKPiA+PiBzaG91bGQgZGVmaW5lIGFsbCBlbmdpbmUgY2xhc3NlcyB3aXRoICNkZWZp bmUgYXM6Cj4gPj4KPiA+PiDCoMKgwqDCoCNkZWZpbmUgRU5HSU5FX0NMQVNTX0lOVkFMSUTCoCAw Cj4gPj4gwqDCoMKgwqAjZGVmaW5lIEVOR0lORV9DTEFTU19BTEzCoMKgwqDCoMKgIDAKPiA+PiDC oMKgwqDCoCNkZWZpbmUgRU5HSU5FX0NMQVNTX1JFTkRFUsKgwqAgMQo+ID4+IMKgwqDCoMKgI2Rl ZmluZSBFTkdJTkVfQ0xBU1NfVkRFQ0VOQ8KgIDIKPiA+PiDCoMKgwqDCoC4uLgo+ID4+IMKgwqDC oMKgI2RlZmluZSBFTkdJTkVfQ0xBU1NfTUFYwqDCoMKgwqDCoCA3Cj4gPj4KPiA+Cj4gPkkgY2Fu IHBhc3MgdGhpcyBjb21tZW50IHRvIHRoZSBHdUMgdGVhbS4gT3Igd2UgY2FuIHVzZSBkZWZpbmVz IGZvciB0aGUKPiA+TGludXggaGVhZGVyIGZpbGVzLCBidXQgdGhlbiB3ZSBtaWdodCBzdGFydCBk ZXZpYXRpbmcgYWdhaW4gZnJvbSBhCj4gPmNvbW1vbiBpbnRlcmZhY2UgbmFtaW5nLgoKeWVhcCwg YmV0dGVyIHRvIGtlZXAgaW4gc3luYy4uLiBpbmRlZWQuLi4KCj4gPgo+ID4+IHdoYXQgaWYgZnV0 dXJlIEhXIHdpbGwgc3VwcG9ydCBtb3JlIHRoYW4gNyBlbmdpbmUgY2xhc3Nlcwo+ID4+IG9yIHRo ZXkgd2lsbCBiZSBzbyBkaWZmZXJlbnQgdGhhdCB0aGV5IGRlc2VydmUgc2VwYXJhdGUgaWQ/Cj4g Pj4gd2h5Cj4gPgo+ID5JIGltYWdpbmUgdGhhdCdzIHdoYXQgdGhlIHJlc2VydmVkIGlzIGZvci4g SSBjYW5ub3QgdGhpbmsgb2YgbWFueSBtb3JlCj4gPmVuZ2luZSBjbGFzc2VzLCBidXQgSSBwcm9i YWJseSBsYWNrIGltYWdpbmF0aW9uLgo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICsvKiBFbmdpbmUg SW5zdGFuY2UgdGhhdCB1S2VybmVsIGNhbiBzY2hlZHVsZSBvbiAqLwo+ID4+PiArZW51bSB1a19l bmdpbmVfaW5zdGFuY2Ugewo+ID4+PiArwqDCoMKgIFVLX0VOR0lORV9JTlNUQU5DRV8wID0gMCwK PiA+Pj4gK8KgwqDCoCBVS19FTkdJTkVfSU5TVEFOQ0VfMSA9IDEsCj4gPj4+ICvCoMKgwqAgVUtf RU5HSU5FX0lOU1RBTkNFXzIgPSAyLAo+ID4+PiArwqDCoMKgIFVLX0VOR0lORV9JTlNUQU5DRV8z ID0gMywKPiA+Pj4gK8KgwqDCoCBVS19JTlZBTElEX0VOR0lORV9JTlNUQU5DRSA9Cj4gPkdVQ19N QVhfRU5HSU5FX0lOU1RBTkNFX1BFUl9DTEFTUywKPiA+Pj4gK8KgwqDCoCBVS19FTkdJTkVfQUxM X0lOU1RBTkNFUyA9IFVLX0lOVkFMSURfRU5HSU5FX0lOU1RBTkNFCj4gPj4+ICt9Owo+ID4+Cj4g Pj4gSSdtIG5vdCBzdXJlIHdoeSB3ZSB3b3VsZCBuZWVkIHRoaXMgZW51bSBhcyB3ZSBhbHJlYWR5 IGhhdmUKPiA+PiBHVUNfTUFYX0VOR0lORV9JTlNUQU5DRV9QRVJfQ0xBU1MgYW5kIGNhbiBlYXNp bHkgaWRlbnRpZnkKPiA+PiBpbnN0YW5jZSBhcyBbMCAuLi4gR1VDX01BWF9FTkdJTkVfSU5TVEFO Q0VfUEVSX0NMQVNTKSwgb3IKPiA+PiBtYXliZSBtb3JlIGludHVpdGl2ZSB3b3VsZCBiZSB1c2Ug bm9ybWFsIGluZGV4aW5nIGFuZCB1c2UgMAo+ID4+IHRvIGluZGljYXRlIElOVkFMSUQvQVVUTy9B TEwgaW5zdGFuY2UgPwo+ID4+Cj4gPj4gwqDCoMKgwqAjZGVmaW5lIEVOR0lORV9JTlNUQU5DRV9J TlZBTElEwqAgMAo+ID4+IMKgwqDCoMKgI2RlZmluZSBFTkdJTkVfSU5TVEFOQ0VfQUxMwqDCoMKg wqDCoCAwCj4gPj4gwqDCoMKgwqAjZGVmaW5lIEVOR0lORV9JTlNUQU5DRV9NQVjCoMKgwqDCoMKg IDQKPiA+Pgo+ID4KPiA+SSBjYW4gcGFzcyB0aGlzIGNvbW1lbnQgYWxvbmcuCj4gPgo+ID4+PiAr Cj4gPj4+ICsvKiBUYXJnZXQgRW5naW5lIGZpZWxkIHVzZWQgaW4gV0kgaGVhZGVyIGFuZCBHdWMy SG9zdCAqLwo+ID4+PiArc3RydWN0IGd1Y190YXJnZXRfZW5naW5lIHsKPiA+Pj4gK8KgwqDCoCB1 bmlvbiB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvKiBPbmUgb2YgZW51bSB1a19lbmdpbmVfY2xhc3MgKi8KPiA+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdTggZW5naW5lX2NsYXNzIDogMzsKPiA+Pgo+ID4+IGVudW0gZGVm aW5lcyBvbmx5IDAuLjUgd2hpbGUgaW4gdGhlc2UgMyBiaXRzIHdlIGNhbiBwYXNzIDAuLjcKPiA+ Pgo+ID4KPiA+U28/IFlvdSBjYW4gcGFzcyA2IGFuZCA3IGlmIHlvdSB3YW50LCBidXQgaXQgd291 bGQgYmUgaW52YWxpZCAoYXMgdGhlCj4gPmVudW0gc2hvd3MpLgo+ID4KPiA+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogT25lIG9mIGVudW0gdWtfZW5naW5lX2luc3RhbmNlICovCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU4IGVuZ2luZV9pbnN0YW5jZSA6IDQ7Cj4gPj4KPiA+ PiBhZ2FpbiwgbWlzbWF0Y2ggYmV0d2VlbiAnZW51bScgYW5kIGJpdGZpZWxkcy4KPiA+Cj4gPkFn YWluLCBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIHByb2JsZW0uCj4gPgo+ID4+Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIEFsbCBlbmFibGVkIGVuZ2luZSBjbGFzc2VzIGFuZCBpbnN0 YW5jZXMgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggYWxsX2VuZ2luZXMgOiAx Owo+ID4+Cj4gPj4gaW5jb25zaXN0ZW5jeSBhcyB0aGVyZSBpcyBkZWRpY2F0ZWQgdmFsdWUgVUtf RU5HSU5FX0FMTF9JTlNUQU5DRVMKPiA+PiBmb3IgZW5naW5lX2luc3RhbmNlIGJ1dCBmb3IgZW5n aW5lX2NsYXNzIHRoZXJlIGlzIHNlcGFyYXRlIGJpdC4KPiA+Cj4gPkknbGwgcGFzcyB0aGlzIGNv bW1lbnQgYWxvbmcuCj4gPgo+ID4+Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+ID4+PiArwqDC oMKgwqDCoMKgwqAgdTggdmFsdWU7Cj4gPj4+ICvCoMKgwqAgfTsKPiA+Pj4gK307Cj4gPj4+ICsK PiA+Pj4gK3N0cnVjdCBndWNfZW5naW5lX2NsYXNzX2JpdF9tYXAgewo+ID4+PiArwqDCoMKgIHVu aW9uIHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIC8qIEJpdCBwb3NpdGlvbnMgbXVzdCBtYXRjaCBl bnVtIHVrX2VuZ2luZV9jbGFzcyB2YWx1ZSAqLwo+ID4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHJlbmRlcl9lbmdpbmVfY2xhc3Mg OiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgdmRlY2VuY19lbmdpbmVfY2xh c3MgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgdmVfZW5naW5lX2NsYXNz IDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGJsdF9jb3B5X2VuZ2luZV9j bGFzcyA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZF9lbmdp bmVfY2xhc3MgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgb3RoZXJfZW5n aW5lX2NsYXNzIDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMjY7Cj4g Pj4KPiA+PiBidHcsIGlpcmMgbmFtZWxlc3MgYml0IGZpZWxkcyBtYXkgbm90IGNvcnJlY3RseSBp bml0aWFsaXplZCBvbiBzb21lCj4gPj4gY29tcGlsZXJzLCBzbyBiZXR0ZXIgdG8gYXZvaWQgdGhl bS4KPiA+PiBhbHNvLCBkbyB3ZSB3YW50IHRvIHVzZSBiaXRmaWVsZHMgb3Igc3RheSB3aXRoIF9T SElGVC9fTUFTSyBtYWNyb3M/Cj4gPgo+ID5BdCBzb21lIHBvaW50IHdlIGFncmVlZCB0aGF0IHdl IHdlcmUgdHJ5aW5nIHRvIGtlZXAgdGhlIGhlYWRlciBmaWxlcwo+ID5mcm9tIGRpZmZlcmVudCBP U2VzIGFzIGNsb3NlIGFzIHBvc3NpYmxlLgo+ID5JSVJDLCBJIHJhaXNlZCB0aGUgcG9pbnQgdGhh dCBfU0hJRlQvX01BU0sgbWFjcm9zIGFyZSB0aGUgcHJlZmVycmVkCj4gPmFwcHJvYWNoIGluIGk5 MTUsIGFuZCBJIHdhcyB0b2xkIHRoaXMgaXMgYW4gZXhjZXB0aW9uYWwgY2lyY3Vtc3RhbmNlLgoK QnV0IGV2ZW4gd2l0aCB0aGUgYml0ZmllbGRzLCB0aGUgYWN0dWFsIHByb2JsZW0gaGVyZSBhcmUg dGhlIG5hbWVsZXNzIG9uZXMKbm90IGp1c3QgdGhpcyBvbmUgaGVyZSwgYnV0IHRoZXJlIGFyZSBt b3JlIGJlbG93LgoKQ291bGQgd2UgYXQgbGVhc3QgYWRkIGEgInJzdmQiIG5hbWUgb3Igc29tZXRo aW5nIGxpa2UgdGhhdD8KCj4gPgo+ID4+Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+ID4+PiAr wqDCoMKgwqDCoMKgwqAgdTMyIHZhbHVlOwo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICt9Owo+ID4+ PiArCj4gPj4+ICtzdHJ1Y3QgZ3VjX2VuZ2luZV9pbnN0YW5jZV9iaXRfbWFwIHsKPiA+Pj4gK8Kg wqDCoCB1bmlvbiB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MzIgZW5naW5lMCA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiBlbmdpbmUxIDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IGVuZ2luZTIgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZW5naW5lMyA6 IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBlbmdpbmU0IDogMTsKPiA+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGVuZ2luZTUgOiAxOwo+ID4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgZW5naW5lNiA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiBlbmdpbmU3IDogMTsKPiA+Pgo+ID4+ICJlbmdpbmUiID8gbWF5YmUgdGhleSBtZWFu ICJpbnN0YW5jZSIgPwo+ID4+IGFuZCBpZiBpbnN0YW5jZSwgdGhlbiBlbnVtIGFib3ZlIGRlZmlu ZXMgb25seSAwLi4zCj4gPj4KPiA+Cj4gPkknbGwgcGFzcyB0aGUgY29tbWVudCBhbG9uZy4KPiA+ Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDI0Owo+ID4+PiArwqDCoMKgwqDC oMKgwqAgfTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiB2YWx1ZTsKPiA+Pj4gK8KgwqDCoCB9 Owo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArc3RydWN0IGd1Y19lbmdpbmVfYml0X21hcCB7Cj4g Pj4+ICvCoMKgwqAgc3RydWN0IGd1Y19lbmdpbmVfY2xhc3NfYml0X21hcCBlbmdpbmVfY2xhc3Nf Yml0X21hcDsKPiA+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2VuZ2luZV9pbnN0YW5jZV9iaXRfbWFw Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBlbmdpbmVfaW5zdGFuY2VfYml0X21hcFtHVUNfTUFYX0VO R0lORV9DTEFTU19DT1VOVF07Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+Cj4gPisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ ID4qKioqKioqKioqKioqCj4gPj4+Cj4gPj4+ICsgKioqKioqKioqKioqKioqKioqKioqIFByb2Nl c3MgRGVzY3JpcHRvciBhbmQgV29yayBRdWV1ZQo+ID4+PiAqKioqKioqKioqKioqKioqKioqKioK PiA+Pj4gKwo+ID4+Pgo+ID4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+KioqKioqKioqKiovCj4gPj4+ICsKPiA+Pj4g Ky8qIFN0YXR1cyBvZiBhIFdvcmsgUXVldWUgKi8KPiA+Pj4gK2VudW0gZ3VjX3F1ZXVlX3N0YXR1 cyB7Cj4gPj4+ICvCoMKgwqAgR1VDX1FVRVVFX1NUQVRVU19BQ1RJVkUgPSAxLAo+ID4+PiArwqDC oMKgIEdVQ19RVUVVRV9TVEFUVVNfU1VTUEVOREVEID0gMiwKPiA+Pj4gK8KgwqDCoCBHVUNfUVVF VUVfU1RBVFVTX0NNRF9FUlJPUiA9IDMsCj4gPj4+ICvCoMKgwqAgR1VDX1FVRVVFX1NUQVRVU19F TkdJTkVfSURfTk9UX1VTRUQgPSA0LAo+ID4+PiArwqDCoMKgIEdVQ19RVUVVRV9TVEFUVVNfU1VT UEVOREVEX0ZST01fRU5HSU5FX1JFU0VUID0gNSwKPiA+Pj4gK8KgwqDCoCBHVUNfUVVFVUVfU1RB VFVTX0lOVkFMSURfU1RBVFVTID0gNiwKPiA+Pgo+ID4+IHdoeSBub3QgMCA/IHdoYXQgMCBtZWFu cyA/Cj4gPgo+ID5JUFRDQSAoSSdsbCBwYXNzIHRoZSBjb21tZW50IGFsb25nKQo+ID4KPiA+Pgo+ ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArLyogUHJpb3JpdHkgb2YgZ3VjX2NvbnRleHRfZGVzY3Jp cHRvciAqLwo+ID4+PiArZW51bSBndWNfY29udGV4dF9wcmlvcml0eSB7Cj4gPj4+ICvCoMKgwqAg R1VDX0NPTlRFWFRfUFJJT1JJVFlfS01EX0hJR0ggPSAwLAo+ID4+PiArwqDCoMKgIEdVQ19DT05U RVhUX1BSSU9SSVRZX0hJR0ggPSAxLAo+ID4+PiArwqDCoMKgIEdVQ19DT05URVhUX1BSSU9SSVRZ X0tNRF9OT1JNQUwgPSAyLAo+ID4+PiArwqDCoMKgIEdVQ19DT05URVhUX1BSSU9SSVRZX05PUk1B TCA9IDMsCj4gPj4+ICvCoMKgwqAgR1VDX0NPTlRFWFRfUFJJT1JJVFlfQUJTT0xVVEVfTUFYX0NP VU5UID0gNCwKPiA+Pj4gK8KgwqDCoCBHVUNfQ09OVEVYVF9QUklPUklUWV9JTlZBTElEID0KPiA+ Pj4gR1VDX0NPTlRFWFRfUFJJT1JJVFlfQUJTT0xVVEVfTUFYX0NPVU5UCj4gCUlzIHRoaXMgY29y cmVjdD8gIHByaW9yaXR5IG9mIGludmFsaWQgY29udGV4dCBiZWluZyBzYW1lIGFzIEdVQ19DT05U RVhUX1BSSU9SSVRZX0FCU09MVVRFX01BWF9DT1VOVCA/Cgp5ZWFwLi4uIGl0IHByb2JhYmx5IGlz IHJpZ2h0IGlmIGhhbmRsZWQgY29ycmVjdGx5LgoKPiAKPiA+Pj4gK307Cj4gCj4gPj4+ICsvKiBB IHNoYXJlZCBzdHJ1Y3R1cmUgYmV0d2VlbiBhcHAgYW5kIHVLZXJuZWwgZm9yIGNvbW11bmljYXRp b24gKi8KPiA+Pj4gK3N0cnVjdCBndWNfc2NoZWRfcHJvY2Vzc19kZXNjcmlwdG9yIHsKPiA+Pj4g K8KgwqDCoCAvKiBJbmRleCBpbiB0aGUgR3VDIENvbnRleHQgRGVzY3JpcHRvciBQb29sICovCj4g Pj4+ICvCoMKgwqAgdTMyIGNvbnRleHRfaWQ7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBQb2lu dGVyIHRvIGRvb3JiZWxsIGNhY2hlbGluZS4gQlNwZWM6IDExMTYgKi8KPiA+Pj4gK8KgwqDCoCB1 NjQgcF9kb29yYmVsbDsKPiA+Pgo+ID4+IHBvaW50ZXIgPyBtYXliZSBzL3BfZG9vcmJlbGwvZG9v cmJlbGxfYWRkciBhcyB0aGlzIGxpa2VseSBpcyBwaHkgYWRkcgo+ID4+Cj4gPgo+ID5JUFRDQQo+ ID4KPiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIFdRIEhlYWQgQnl0ZSBPZmZzZXQgLSBDbGllbnQg bXVzdCBub3Qgd3JpdGUgaGVyZSAqLwo+ID4+PiArwqDCoMKgIHUzMiBoZWFkX29mZnNldDsKPiAJ cy8gaGVhZF9vZmZzZXQvd3FfaGVhZF9vZmZzZXQ/Cj4gCj4gPj4+ICvCoMKgwqAgLyogV1EgVGFp bCBCeXRlIE9mZnNldCAtIHVLZXJuZWwgd2lsbCBub3Qgd3JpdGUgaGVyZSAqLwo+ID4+PiArwqDC oMKgIHUzMiB0YWlsX29mZnNldDsKPiAJcy90YWlsX29mZnNldC93cV90YWlsX29mZnNldD8KCkJl Y2F1c2Ugb2YgdGhlIHN5bmMgaXQgaXMgYmV0dGVyIHRvIG5vdCB0b3VjaCBhbmQgY2hhbmdlIHRo ZSBuYW1lcyBoZXJlLi4uCldoYXRldmVyIHRoZXkgZGVjaWRlIGlmIGl0IGRvZXNuJ3QgY29uZmxp Y3Qgd2l0aCBhbnl0aGluZyBlbHNlIHRoYXQKd2UgYWxyZWFkeSBoYXZlIGluIHBsYWNlLgoKPiAK PiA+Pj4gK8KgwqDCoCAvKiBXUSBFcnJvciBCeXRlIG9mZnNldCAqLwo+ID4+PiArwqDCoMKgIHUz MiBlcnJvcl9vZmZzZXRfYnl0ZTsKPiAJU2FtZSBoZXJlLgo+IAo+ID4+PiArwqDCoMKgIC8qIFdR IHBWaXJ0IGJhc2UgYWRkcmVzcyBpbiBDbGllbnQuIEZvciB1c2Ugb25seSBieSBDbGllbnQgKi8K PiA+Pj4gK8KgwqDCoCB1NjQgd3F2X2Jhc2VfYWRkcmVzczsKPiA+Pgo+ID4+IGNsaWVudCB2aXJ0 dWFsIGFkZHJlc3Mgc2hhbGwgbm90IGJlIHBhcnQgb2YgdGhlIEd1QyBBQkkKPiA+Cj4gPkhtbW0u Li4gaWYgSSB1bmRlcnN0YW5kIHRoaXMgY29ycmVjdGx5LCB0aGlzIGlzIGludGVuZGVkIGZvciBE aXJlY3QKPiA+U3VibWlzc2lvbi4KPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIFdR IFNpemUgaW4gQnl0ZXMgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgd3Ffc2l6ZV9ieXRlczsKPiA+Pj4g Kwo+ID4+PiArwqDCoMKgIC8qIFdRIFN0YXR1cy4gUmVhZCBieSBDbGllbnQuIFdyaXR0ZW4gYnkg dUtlcm5lbC9LTUQgKi8KPiA+Pj4gK8KgwqDCoCBlbnVtIGd1Y19xdWV1ZV9zdGF0dXMgd3Ffc3Rh dHVzOwo+ID4+Cj4gPj4gd2UgaGF2ZSBtYW55IGRpc2N1c3Npb25zIGFib3V0IG5vdCB1c2luZyBl bnVtcyBpbiBwYWNrZWQgc3RydWN0cwo+ID4KPiA+WWVzLCBhbmQgdGhleSB3ZXJlIG5vdGVkIGFu ZCB0aWNrZXRzIG9wZW5lZC4gVGhleSBzaW1wbHkgaGF2ZW4ndAo+ID5oYXBwZW5lZCB5ZXQuCj4g Pgo+ID4+Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBDb250ZXh0IHByaW9yaXR5LiBSZWFkIG9u bHkgYnkgQ2xpZW50ICovCj4gPj4+ICvCoMKgwqAgZW51bSBndWNfY29udGV4dF9wcmlvcml0eSBw cmlvcml0eV9hc3NpZ25lZDsKPiA+Pgo+ID4+IHNhbWUgaGVyZQo+ID4KPiA+U2FtZSBoZXJlLgo+ ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICvCoMKgwqAgdTMyIGZ1dHVyZTsKPiAJTG9va3MgY29uZnVz aW5nLiBJcyB0aGlzIHRvIGJlIHVzZWQgaW4gZnV0dXJlPwoKZnV0dXJlLCByZXNlcnZlZCwgcnN2 ZC4uLiB3aGF0ZXZlciB0aGV5IGRlY2lkZSBpcyBva2F5IEkgYmVsaWV2ZS4uLiAKCj4gCj4gPj4g aWYgd2UgcmVhbGx5IG5lZWQgdGhpcywgY2FuIGl0IGJlIG1lcmdlZCB3aXRoIHJlc2VydmVkMCA/ Cj4gPgo+ID5JdCBjb3VsZCwgYnV0IHRoaXMgaGVscHMga2VlcCBoZWFkZXIgZmlsZXMgZnJvbSBk aWZmZXJlbnQgT1NlcyBhcyBjbG9zZQo+ID5hcyBwb3NzaWJsZS4KPiA+Cj4gPj4KPiA+Pj4gKwo+ ID4+PiArwqDCoMKgIHN0cnVjdCBndWNfZW5naW5lX2NsYXNzX2JpdF9tYXAgcXVldWVfZW5naW5l X2Vycm9yOwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkMFszXTsKPiA+Pj4gKwo+ ID4+PiArwqDCoMKgIC8qIHVLZXJuZWwgc2lkZSB0cmFja2luZyBmb3IgZGVidWcgKi8KPiA+Pgo+ ID4+IHRoaXMgc2hvdWxkIGJlIHNlcGFyYXRlIHN0cnVjdCBkZWZpbml0aW9uCj4gPgo+ID5JUFRD QQo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogV3JpdHRlbiBieSB1S2VybmVsIGF0 IHRoZSB0aW1lIG9mIHBhcnNpbmcgYW5kIHN1Y2Nlc3NmdWwgcmVtb3ZhbAo+ID4+PiArwqDCoMKg wqAgKiBmcm9tIFdRIChpbXBsaWVzIHJpbmcgdGFpbCB3YXMgdXBkYXRlZCkKPiA+Pj4gK8KgwqDC oMKgICovCj4gPj4+ICvCoMKgwqAgdTMyIHRvdGFsX3dvcmtfaXRlbXNfcGFyc2VkX2J5X2d1YzsK PiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIFdyaXR0ZW4gYnkgdUtlcm5lbCBpZiBhIFdJIHdhcyBj b2xsYXBzZWQgaWYgbmV4dCBXSSBpcyB0aGUgc2FtZQo+ID4+PiArwqDCoMKgwqAgKiBMUkNBIChv cHRpbWl6YXRpb24gYXBwbGllcyBvbmx5IHRvIFNlY3VyZS9LTUQgY29udGV4dHMpCj4gPj4+ICvC oMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgIHUzMiB0b3RhbF93b3JrX2l0ZW1zX2NvbGxhcHNlZF9i eV9ndWM7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBUZWxscyBpZiB0aGUgY29udGV4dCBpcyBh ZmZlY3RlZCBieSBFbmdpbmUgUmVzZXQuIFVNRCBuZWVkcyB0bwo+ID4+PiArwqDCoMKgwqAgKiBj bGVhciBpdCBhZnRlciB0YWtpbmcgYXBwcm9wcmlhdGUgQWN0aW9uIChUQkQpCj4gPj4+ICvCoMKg wqDCoCAqLwo+ID4+PiArwqDCoMKgIHUzMiBpc19jb250ZXh0X2luX2VuZ2luZV9yZXNldDsKPiA+ Pj4gKwo+ID4+PiArwqDCoMKgIC8qIFdRIFNhbXBsZWQgdGFpbCBhdCBFbmdpbmUgUmVzZXQgVGlt ZS4gVmFsaWQgb25seSBpZgo+ID4+PiArwqDCoMKgwqAgKiBpc19jb250ZXh0X2luX2VuZ2luZV9y ZXNldCA9IHRydWUKPiA+Pj4gK8KgwqDCoMKgICovCj4gPj4+ICvCoMKgwqAgdTMyIGVuZ2luZV9y ZXNldF9zYW1wbGVkX3dxX3RhaWw7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBWYWxpZCBmcm9t IGVuZ2luZSByZXNldCB1bnRpbCBhbGwgdGhlIGFmZmVjdGVkIFdvcmsgSXRlbXMgYXJlCj4gPj4+ ICvCoMKgwqDCoCAqIHByb2Nlc3NlZAo+ID4+PiArwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoCB1 MzIgZW5naW5lX3Jlc2V0X3NhbXBsZWRfd3FfdGFpbF92YWxpZDsKPiA+Pj4gKwo+ID4+PiArwqDC oMKgIHUzMiByZXNlcnZlZDFbMTVdOwo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArLyogV29yayBJ dGVtIGZvciBzdWJtaXR0aW5nIEtNRCB3b3JrbG9hZHMgaW50byBXb3JrIFF1ZXVlIGZvciBHdUMg Ki8KPiA+Pj4gK3N0cnVjdCBndWNfc2NoZWRfd29ya19xdWV1ZV9rbWRfZWxlbWVudF9pbmZvIHsK PiA+Pj4gK8KgwqDCoCAvKiBFeGVjbGlzdCBjb250ZXh0IGRlc2NyaXB0b3IncyBsb3dlciBEVy4g QlNwZWM6IDEyMjU0ICovCj4gPj4+ICvCoMKgwqAgdTMyIGVsZW1lbnRfbG93X2R3Owo+ID4+PiAr wqDCoMKgIHVuaW9uIHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNXIENvbnRleHQgSUQuIEJTcGVjOiAxMjI1NCAqLwo+ID4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgc3dfY29udGV4dF9pbmRleCA6IDExOwo+ID4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBTVyBDb3VudGVyLiBCU3BlYzogMTIyNTQgKi8K PiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHN3X2NvbnRleHRfY291bnRlciA6IDY7 Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIElmIHRoaXMgd29ya2xvYWQgbmVlZHMg dG8gYmUgc3luY2VkIHByaW9yCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB0byBz dWJtaXNzaW9uIHVzZSBjb250ZXh0X3N1Ym1pdF9zeW5jX3ZhbHVlIGFuZAo+ID4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICogY29udGV4dF9zdWJtaXRfc3luY19hZGRyZXNzCj4gPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTMyIG5lZWRzX3N5bmMgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBRVyBB bGlnbmVkLCBUYWlsVmFsdWUgPD0gMjA0OAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogKGFkZHJlc3NlcyA0IHBhZ2VzIG1heCkKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqLwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcmluZ190YWlsX3F3X2luZGV4 IDogMTE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDI7Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIEJpdCB0byBpbmRpY2F0ZSBpZiBQT0NTIG5lZWRzIHRvIGJl IGluIEZSRUVaRSBzdGF0ZQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZm9yIHRo aXMgV0kgc3VibWlzc2lvbgo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3aV9mcmVlemVfcG9jcyA6IDE7Cj4gPj4+ICvC oMKgwqDCoMKgwqDCoCB9Owo+ID4+PiArwqDCoMKgwqDCoMKgwqAgdTMyIHZhbHVlOwo+ID4+PiAr wqDCoMKgIH0gZWxlbWVudF9oaWdoX2R3Owo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArLyogV29y ayBJdGVtIGluc3RydWN0aW9uIHR5cGUgKi8KPiA+Pj4gK2VudW0gZ3VjX3NjaGVkX2luc3RydWN0 aW9uX3R5cGUgewo+ID4+PiArwqDCoMKgIEdVQ19TQ0hFRF9JTlNUUlVDVElPTl9CQVRDSF9CVUZG RVJfU1RBUlQgPSAweDEsCj4gPj4+ICvCoMKgwqAgR1VDX1NDSEVEX0lOU1RSVUNUSU9OX0dVQ19D TURfUFNFVURPID0gMHgyLAo+ID4+PiArwqDCoMKgIEdVQ19TQ0hFRF9JTlNUUlVDVElPTl9HVUNf Q01EX0tNRCA9IDB4MywKPiA+Pj4gK8KgwqDCoCBHVUNfU0NIRURfSU5TVFJVQ1RJT05fR1VDX0NN RF9OT09QID0gMHg0LAo+ID4+PiArwqDCoMKgIEdVQ19TQ0hFRF9JTlNUUlVDVElPTl9SRVNVTUVf RU5HSU5FX1dRX1BBUlNJTkcgPSAweDUsCj4gPj4+ICvCoMKgwqAgR1VDX1NDSEVEX0lOU1RSVUNU SU9OX0lOVkFMSUQgPSAweDYsCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsvKiBIZWFkZXIgZm9y IGV2ZXJ5IFdvcmsgSXRlbSBwdXQgaW4gdGhlIFdvcmsgUXVldWUgKi8KPiA+Pj4gK3N0cnVjdCBn dWNfc2NoZWRfd29ya19xdWV1ZV9pdGVtX2hlYWRlciB7Cj4gPj4+ICvCoMKgwqAgdW5pb24gewo+ ID4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyogT25lIG9mIGVudW0gZ3VjX3NjaGVkX2luc3RydWN0aW9uX3R5cGUgKi8KPiA+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHdvcmtfaW5zdHJ1Y3Rpb25fdHlwZSA6IDg7Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHN0cnVjdCBndWNfdGFyZ2V0X2VuZ2luZSAqLwo+ ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgdGFyZ2V0X2VuZ2luZSA6IDg7Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIExlbmd0aCBpbiBudW1iZXIgb2YgZHdvcmRzIGZv bGxvd2luZyB0aGlzIGhlYWRlciAqLwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg Y29tbWFuZF9sZW5ndGhfZHdvcmRzIDogMTE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHUzMiA6IDU7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+ID4+PiArwqDCoMKgwqDCoMKgwqAg dTMyIHZhbHVlOwo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsvKiBX b3JrIGl0ZW0gZm9yIHN1Ym1pdHRpbmcgS01EIHdvcmtsb2FkcyBpbnRvIHdvcmsgcXVldWUgZm9y IEd1QyAqLwo+ID4+PiArc3RydWN0IGd1Y19zY2hlZF93b3JrX3F1ZXVlX2l0ZW0gewo+ID4+PiAr wqDCoMKgIHN0cnVjdCBndWNfc2NoZWRfd29ya19xdWV1ZV9pdGVtX2hlYWRlciBoZWFkZXI7Cj4g Pj4+ICvCoMKgwqAgc3RydWN0IGd1Y19zY2hlZF93b3JrX3F1ZXVlX2ttZF9lbGVtZW50X2luZm8K PiA+Pj4ga21kX3N1Ym1pdF9lbGVtZW50X2luZm87Cj4gPj4+ICvCoMKgwqAgLyogRGVidWcgb25s eSAqLwo+ID4+PiArwqDCoMKgIHUzMiBmZW5jZV9pZDsKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4g K3N0cnVjdCBrbV9nZW4xMV9yZXN1bWVfd29ya19xdWV1ZV9wcm9jZXNzaW5nX2l0ZW0gewo+ID4+ PiArwqDCoMKgIHN0cnVjdCBndWNfc2NoZWRfd29ya19xdWV1ZV9pdGVtIGhlYWRlcjsKPiA+Pj4g K307Cj4gPj4+ICsKPiA+Pj4gKyNwcmFnbWEgcGFjaygpCj4gPj4+ICsKPiA+Pj4gKyNlbmRpZgo+ ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ttZF9pbnRl cmZhY2UuaAo+ID4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19rbWRfaW50ZXJm YWNlLmgKPiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+Pj4gaW5kZXggMDAwMDAwMC4uNGM2 NDNhZAo+ID4+PiAtLS0gL2Rldi9udWxsCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19rbWRfaW50ZXJmYWNlLmgKPiA+Pj4gQEAgLTAsMCArMSw4NDcgQEAKPiA+Pj4g Ky8qCj4gPj4+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gPj4+ICsgKgo+ID4+ PiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiA+Pj4gKyAqLwo+ID4+ PiArCj4gPj4+ICsjaWZuZGVmIF9JTlRFTF9HVUNfS01EX0lOVEVSRkFDRV9IXwo+ID4+PiArI2Rl ZmluZSBfSU5URUxfR1VDX0tNRF9JTlRFUkZBQ0VfSF8KPiA+Pj4gKwo+ID4+PiArI2luY2x1ZGUg ImludGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmgiCj4gPj4+ICsKPiA+Pj4gKyNwcmFnbWEgcGFj aygxKQo+ID4+PiArCj4gPj4+ICsvKiBNYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBH dUMgQ29udGV4dCBEZXNjcmlwdG9yIFBvb2wuCj4gPj4+IFVwcGVyIGxpbWl0Cj4gPj4+ICsgKiBy ZXN0cmljdGVkIGJ5IG51bWJlciBvZiAnU1cgQ29udGV4dCBJRCcgYml0cyBpbiB0aGUgQ29udGV4 dAo+ID4+PiBEZXNjcmlwdG9yCj4gPj4+ICsgKiAoQlNwZWM6IDEyMjU0KSBtaW51cyBzb21lIHJl c2VydmVkIGVudHJpZXMKPiA+Pj4gKyAqLwo+ID4+PiArI2RlZmluZSBHVUNfTUFYX0dVQ19DT05U RVhUX0RFU0NSSVBUT1JfRU5UUklFU8KgwqDCoCAyMDMyCj4gPj4+ICsKPiA+Pj4gKy8qIExpbWl0 ZWQgYnkgJ1NXIENvdW50ZXInIGJpdHMuIEJTcGVjOiAxMjI1NCAqLwo+ID4+PiArI2RlZmluZSBH VUNfTUFYX1NXX0NPTlRFWFRfQ09VTlRFUsKgwqDCoCA2NAo+ID4+PiArCj4gPj4+ICsvKiBNYXhp bXVtIGRlcHRoIG9mIEhXIEV4ZWNsaXN0IFN1Ym1pc3Npb24gUXVldWUuIEJTcGVjOiAxODkzNCAq Lwo+ID4+PiArI2RlZmluZSBHVUNfTUFYX1NVQk1JU1NJT05fUV9ERVBUSMKgwqDCoCA4Cj4gPj4+ ICsKPiA+Pj4gKy8qIE1pbmltdW0gZGVwdGggb2YgSFcgRXhlY2xpc3QgU3VibWlzc2lvbiBRdWV1 ZS4gQlNwZWM6IDE4OTM0ICovCj4gPj4+ICsjZGVmaW5lIEdVQ19NSU5fU1VCTUlTU0lPTl9RX0RF UFRIwqDCoMKgIDIKPiA+Pj4gKwo+ID4+PiArLyogRGVmYXVsdCBkZXB0aCBvZiBIVyBFeGVjbGlz dCBTdWJtaXNzaW9uIFF1ZXVlLiBCU3BlYzogMTg5MzQgKi8KPiA+Pj4gKyNkZWZpbmUgR1VDX0RF RkFVTFRfRUxFTV9JTl9TVUJNSVNTSU9OX1EKPiA+R1VDX01JTl9TVUJNSVNTSU9OX1FfREVQVEgK PiA+Pj4gKwo+ID4+PiArLyogMSBDYWNoZWxpbmUgPSA2NCBCeXRlcyAqLwo+ID4+PiArI2RlZmlu ZSBHVUNfRE1BX0NBQ0hFTElORV9TSVpFX0JZVEVTwqDCoMKgIDY0Cj4gPj4+ICsKPiA+Pj4KPiA+ Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gPioqKioqKioqKioqKioKPiA+Pj4KPiA+Pj4gKyAqKioqKioqKioqKioqKioq KioqKioqKioqKiBFbmdpbmVzIGFuZCBTeXN0ZW0gSW5mbwo+ID4+PiAqKioqKioqKioqKioqKioq KioqKioqKioqKgo+ID4+PiArCj4gPj4+Cj4gPioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4qKioqKioqKioqKi8KPiA+ Pj4gKwo+ID4+PiArLyogR1Qgc3lzdGVtIGluZm8gcGFzc2VkIGRvd24gYnkgS01EIGFmdGVyIHJl YWRpbmcgZnVzZSByZWdpc3RlcnMgKi8KPiA+Pj4gK3N0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8g ewo+ID4+PiArwqDCoMKgIHUzMiBzbGljZV9lbmFibGVkOwo+ID4+PiArwqDCoMKgIHUzMiByY3Nf ZW5hYmxlZDsKPiA+Pj4gK8KgwqDCoCB1MzIgZnV0dXJlMDsKPiA+Pj4gK8KgwqDCoCB1MzIgYmNz X2VuYWJsZWQ7Cj4gPj4+ICvCoMKgwqAgdTMyIHZkX2JveF9lbmFibGVfbWFzazsKPiA+Pj4gK8Kg wqDCoCB1MzIgZnV0dXJlMTsKPiA+Pj4gK8KgwqDCoCB1MzIgdmVfYm94X2VuYWJsZV9tYXNrOwo+ ID4+PiArwqDCoMKgIHUzMiBmdXR1cmUyOwo+ID4+PiArwqDCoMKgIHUzMiByZXNlcnZlZFs4XTsK PiA+Pgo+ID4+IHdoYXQncyB0aGUgZm9ybWF0IG9mIHRoZXNlIHUzMiA/Cj4gPj4gbWF5YmUgZ3Vj X2VuZ2luZV9iaXRfbWFzayBjYW4gYmUgcmV1c2VkIGhlcmUgPwo+ID4KPiA+TW9zdCBvZiB0aGVt IGFyZSBqdXN0IGJvb2xlYW5zLiBZZXMsIGd1Y19lbmdpbmVfYml0X21hc2sgY2FuIHByb2JhYmx5 IGJlCj4gPnJldXNlZC4gSVBUQ0EKPiA+Cj4gPj4KPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4KPiA+ Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gPioqKioqKioqKioqKioKPiA+Pj4KPiA+Pj4gKyAqKioqKioqKioqKioqKioq KioqKioqKiogR3VDIENvbnRleHQgRGVzY3JpcHRvciBQb29sCj4gPj4+ICoqKioqKioqKioqKioq KioqKioqKioqKgo+ID4+PiArCj4gPj4+Cj4gPioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4qKioqKioqKioqKi8KPiA+ Pj4gKwo+ID4+PiArLyogU3RhdGUgb2YgdGhlIGNvbnRleHQgKi8KPiA+Pj4gK3N0cnVjdCBndWNf ZW5naW5lX2NvbnRleHRfc3RhdGUgewo+ID4+PiArwqDCoMKgIHVuaW9uIHsKPiA+Pj4gK8KgwqDC oMKgwqDCoMKgIHN0cnVjdCB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3YWl0 X2Zvcl9kaXNwbGF5X2V2ZW50IDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IHdhaXRfZm9yX3NlbWFwaG9yZSA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUz MiByZV9lbnF1ZXVlX3RvX3N1Ym1pdF9xdWV1ZSA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiA6IDI5Owo+ID4+PiArwqDCoMKgwqDCoMKgwqAgfTsKPiA+Pj4gK8KgwqDCoMKg wqDCoMKgIHUzMiB3YWl0X3ZhbHVlOwo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICvCoMKgwqAgdTMy IHJlc2VydmVkOwo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArLyogVG8gZGVzY3JpYmUgc3RhdHVz IGFuZCBhY2Nlc3MgaW5mb3JtYXRpb24gb2YgY3VycmVudCByaW5nIGJ1ZmZlciBmb3IKPiA+Pj4g KyAqIGEgZ2l2ZW4gZ3VjX2V4ZWNsaXN0X2NvbnRleHQKPiA+Pj4gKyAqLwo+ID4+PiArc3RydWN0 IGd1Y19leGVjbGlzdF9yaW5nX2J1ZmZlciB7Cj4gPj4+ICvCoMKgwqAgdTMyIHBfZXhlY2xpc3Rf cmluZ19jb250ZXh0Owo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogdUtlcm5lbCBhZGRyZXNzIGZv ciB0aGUgcmluZyBidWZmZXIgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgcF9yaW5nX2JlZ2luOwo+ID4+ PiArwqDCoMKgIC8qIHVLZXJuZWwgZmluYWwgYnl0ZSBhZGRyZXNzIHRoYXQgaXMgdmFsaWQgZm9y IHRoaXMgcmluZyAqLwo+ID4+PiArwqDCoMKgIHUzMiBwX3JpbmdfZW5kOwo+ID4+PiArwqDCoMKg IC8qIHVLZXJuZWwgYWRkcmVzcyBmb3IgbmV4dCBsb2NhdGlvbiBpbiByaW5nICovCj4gPj4+ICvC oMKgwqAgdTMyIHBfbmV4dF9mcmVlX2xvY2F0aW9uOwo+ID4+Cj4gPj4gaG1tLCB1S2VybmVsIHBy aXZhdGUgYWRkcmVzc2VzIGFyZSBwYXJ0IG9mIHRoZSBBQkkgPwo+ID4KPiA+VGhpcyBzaW1wbHkg bWVhbnMgR0dUVCBhZGRyZXNzZXMgKHRoZXJlIGlzIG5vdGhpbmcgcmVhbGx5IHByaXZhdGUgdG8g dGhlCj4gPnVLZXJuZWwpCj4gPgo+ID4+Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBMYXN0IHZh bHVlIHdyaXR0ZW4gYnkgc29mdHdhcmUgZm9yIHRyYWNraW5nIChqdXN0IGluIGNhc2UKPiA+Pj4g K8KgwqDCoMKgICogSFcgY29ycnVwdHMgdGhlIHRhaWwgaW4gaXRzIGNvbnRleHQpCj4gPj4+ICvC oMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgIHUzMiBjdXJyZW50X3RhaWxfcG9pbnRlcl92YWx1ZTsK PiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gKy8qIFRoZSBlbnRpcmUgZXhlY2xpc3QgY29udGV4dCBp bmNsdWRpbmcgc29mdHdhcmUgYW5kIEhXIGluZm9ybWF0aW9uICovCj4gPj4+ICtzdHJ1Y3QgZ3Vj X2V4ZWNsaXN0X2NvbnRleHQgewo+ID4+PiArwqDCoMKgIC8qIDIgRFdzIG9mIENvbnRleHQgRGVz Y3JpcHRvci4gQlNwZWM6IDEyMjU0ICovCj4gPj4+ICvCoMKgwqAgdTMyIGh3X2NvbnRleHRfZGVz Y19kd1syXTsKPiA+Pj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQwOwo+ID4+PiArCj4gPj4+ICvCoMKg wqAgc3RydWN0IGd1Y19leGVjbGlzdF9yaW5nX2J1ZmZlciByaW5nX2J1ZmZlcl9vYmo7Cj4gPj4+ ICvCoMKgwqAgc3RydWN0IGd1Y19lbmdpbmVfY29udGV4dF9zdGF0ZSBzdGF0ZTsKPiA+Pj4gKwo+ ID4+PiArwqDCoMKgIC8qIEZsYWcgdG8gdHJhY2sgaWYgZXhlY2xpc3QgY29udGV4dCBleGlzdHMg aW4gc3VibWl0IHF1ZXVlCj4gPj4+ICvCoMKgwqDCoCAqIFZhbGlkIHZhbHVlcyAwIG9yIDEKPiA+ Pj4gK8KgwqDCoMKgICovCj4gPj4+ICvCoMKgwqAgdTMyIGlzX3ByZXNlbnRfaW5fc3E7Cj4gPj4+ ICsKPiA+Pj4gK8KgwqDCoCAvKiBJZiBuZWVkc19zeW5jIGlzIHNldCBpbiBXSSwgc3luYyAqY29u dGV4dF9zdWJtaXRfc3luY19hZGRyZXNzID09Cj4gPj4+ICvCoMKgwqDCoCAqIGNvbnRleHRfc3Vi bWl0X3N5bmNfdmFsdWUgYmVmb3JlIHN1Ym1pdHRpbmcgdGhlIGNvbnRleHQgdG8gSFcKPiA+Pj4g K8KgwqDCoMKgICovCj4gPj4+ICvCoMKgwqAgdTMyIGNvbnRleHRfc3VibWl0X3N5bmNfdmFsdWU7 Cj4gPj4+ICvCoMKgwqAgdTMyIGNvbnRleHRfc3VibWl0X3N5bmNfYWRkcmVzczsKPiA+Pj4gKwo+ ID4+PiArwqDCoMKgIC8qIFJlc2VydmVkIGZvciBTTFBDIGhpbnRzIChjdXJyZW50bHkgdXNlZCBm b3IgR1QgdGhyb3R0bGUKPiA+Pj4gbW9kZXMpICovCj4gPj4+ICvCoMKgwqAgdTMyIHNscGNfY29u dGV4dF9oaW50czsKPiA+Pgo+ID4+IHlvdSBzYWlkIHRoYXQgU0xQQyB3aWxsIGJlIGxhdGVyIC4u LiBpcyBpdCBuZWNlc3NhcnkgdG8gcHV0IHBhcnQgb2YgaXQKPiA+PiBoZXJlPwo+ID4KPiA+InUz MiBmdXR1cmU7IiB0aGVuPwo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICvCoMKgwqAgdTMyIHJlc2Vy dmVkMVs0XTsKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gKy8qIEJpdG1hcCB0byB0cmFjayBhbGxv Y2F0ZWQgYW5kIGZyZWUgY29udGV4dHMKPiA+Pj4gKyAqIGNvbnRleHRfYWxsb2N0X2JpdF9tYXBb bl0gPSAwOyBDb250ZXh0ICduJyBmcmVlCj4gPj4+ICsgKiBjb250ZXh0X2FsbG9jdF9iaXRfbWFw W25dID0gMTsgQ29udGV4dCAnbicgYWxsb2NhdGVkCj4gPj4+ICsgKi8KPiA+Pj4gK3N0cnVjdCBn dWNfZXhlY2xpc3RfY29udGV4dF9hbGxvY19tYXAgewo+ID4+PiArwqDCoMKgIC8qIEJpdCBtYXAg Zm9yIGV4ZWNsaXN0IGNvbnRleHRzLCBiaXRzIDAgdG8KPiA+Pj4gK8KgwqDCoMKgICogKEdVQ19N QVhfU1dfQ09OVEVYVF9DT1VOVEVSIC0gMSkgYXJlIHZhbGlkCj4gPj4+ICvCoMKgwqDCoCAqLwo+ ID4+PiArwqDCoMKgIHU2NCBjb250ZXh0X2FsbG9jdF9iaXRfbWFwOwo+ID4+Cj4gPj4gbWF5YmUg d2Ugc2hvdWxkIHVzZSBHVUNfTUFYX1NXX0NPTlRFWFRfQ09VTlRFUiBoZXJlOgo+ID4+Cj4gPj4g wqDCoMKgwqB1MzIgYml0bWFwW0dVQ19NQVhfU1dfQ09OVEVYVF9DT1VOVEVSIC8gc2l6ZW9mKHUz MildOwo+ID4+Cj4gPgo+ID5JUFRDQQo+ID4KPiA+Pj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQ7Cj4g Pj4+ICt9Owo+ID4+PiArCj4gPj4+ICtlbnVtIGd1Y19jb250ZXh0X2Rlc2NyaXB0b3JfdHlwZSB7 Cj4gPj4+ICvCoMKgwqAgLyogV29yayB3aWxsIGJlIHN1Ym1pdHRlZCB0aHJvdWdoIGRvb3JiZWxs IGFuZCBXUSBvZiBhCj4gPj4+ICvCoMKgwqDCoCAqIFByb3h5IFN1Ym1pc3Npb24gZGVzY3JpcHRv ciBpbiB0aGUgY29udGV4dCBkZXNjIHBvb2wKPiA+Pj4gK8KgwqDCoMKgICovCj4gPj4+ICvCoMKg wqAgR1VDX0NPTlRFWFRfREVTQ1JJUFRPUl9UWVBFX1BST1hZX0VOVFJZID0gMHgwMCwKPiA+Pj4g Kwo+ID4+PiArwqDCoMKgIC8qIFdvcmsgd2lsbCBiZSBzdWJtaXR0ZWQgdXNpbmcgZG9vcmJlbGwg YW5kIHdvcmtxdWV1ZQo+ID4+PiArwqDCoMKgwqAgKiBvZiB0aGlzIGRlc2NyaXB0b3Igb24gYmVo YWxmIG9mIG90aGVyIHByb3h5IEVudHJpZXMKPiA+Pj4gK8KgwqDCoMKgICogaW4gdGhlIGNvbnRl eHQgZGVzYyBwb29sCj4gPj4+ICvCoMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgIEdVQ19DT05URVhU X0RFU0NSSVBUT1JfVFlQRV9QUk9YWV9TVUJNSVNTSU9OID0gMHgwMSwKPiA+Pj4gKwo+ID4+PiAr wqDCoMKgIC8qIFdvcmsgaXMgc3VibWl0dGVkIHRocm91Z2ggaXRzIG93biBkb29yYmVsbCBhbmQg V1EgKi8KPiA+Pj4gK8KgwqDCoCBHVUNfQ09OVEVYVF9ERVNDUklQVE9SX1RZUEVfUkVBTCA9IDB4 MDIsCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsvKiBDUFUsIEdyYXBoaWNzIGFuZCBwaHlzaWNh bCBhZGRyZXNzZXMgKi8KPiA+Pj4gK3N0cnVjdCBndWNfYWRkcmVzcyB7Cj4gPj4+ICvCoMKgwqAg LyogQ3B1IGFkZHJlc3MgKHZpcnR1YWwpICovCj4gPj4+ICvCoMKgwqAgdTY0IHBfY3B1X2FkZHJl c3M7Cj4gPj4+ICvCoMKgwqAgLyogdUtlcm5lbCBhZGRyZXNzIChnZngpICovCj4gPj4+ICvCoMKg wqAgdTMyIHBfdWtfYWRkcmVzczsKPiA+Pgo+ID4+IGRvIHdlIG5lZWQgdG8gc2hhcmUgY3B1L3Vr IGFkZHJlc3NlcyBvdmVyIEFCSSA/Cj4gPgo+ID5XaGF0IGlzIHRoZSBhbHRlcm5hdGl2ZT8KPiA+ Cj4gPj4KPiA+Pj4gK8KgwqDCoCAvKiBQaHlzaWNhbCBhZGRyZXNzICovCj4gPj4+ICvCoMKgwqAg dTY0IHBfYWRkcmVzc19ncGE7Cj4gPj4KPiA+PiBwbGVhc2UgZHJvcCBwXyBwcmVmaXgKPiA+Cj4g PklQVENBCj4gPgo+ID4+Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsvKiBDb250ZXh0IGRlc2Ny aXB0b3IgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB1S2VybmVsIGFuZCBLTUQgKi8KPiA+Pj4g K3N0cnVjdCBndWNfY29udGV4dF9kZXNjcmlwdG9yIHsKPiA+Pj4gK8KgwqDCoCAvKiBDUFUgYmFj ayBwb2ludGVyIGZvciBnZW5lcmFsIEtNRCB1c2FnZSAqLwo+ID4+PiArwqDCoMKgIHU2NCBhc3Np Z25lZF9ndWNfZ3B1X2Rlc2M7Cj4gPj4KPiA+PiBwcml2YXRlIHBvaW50ZXJzIHNoYWxsIG5vdCBi ZSBwYXJ0IG9mIHRoZSBBQkkKPiA+Cj4gPkFncmVlZCBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS4g V291bGQgeW91IGJlIE9LIHdpdGggc29tZXRoaW5nIGxpa2UgInU2NAo+ID5wcml2YXRlX2ZpZWxk IiBoZXJlPwo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogSW5kZXggaW4gdGhlIHBv b2wgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgZ3VjX2NvbnRleHRfZGVzY19wb29sX2luZGV4Owo+ID4+ PiArCj4gPj4+ICvCoMKgwqAgLyogRm9yIGEgUHJveHkgRW50cnksIHRoaXMgaXMgdGhlIGluZGV4 IG9mIGl0J3MgcHJveHkgc3VibWlzc2lvbgo+ID4+PiBlbnRyeS4KPiA+Pj4gK8KgwqDCoMKgICog Rm9yIG90aGVycyB0aGlzIGlzIHRoZSBzYW1lIGFzIGd1Y19jb250ZXh0X2Rlc2NfcG9vbF9pbmRl eCBhYm92ZQo+ID4+PiArwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgcHJveHlfc3VibWlz c2lvbl9ndWNfY29udGV4dF9kZXNjX3Bvb2xfaW5kZXg7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAv KiBUaGUgZG9vcmJlbGwgcGFnZSdzIHRyaWdnZXIgY2FjaGVsaW5lICovCj4gPj4+ICvCoMKgwqAg c3RydWN0IGd1Y19hZGRyZXNzIGRvb3JiZWxsX3RyaWdnZXJfYWRkcmVzczsKPiA+Pj4gKwo+ID4+ PiArwqDCoMKgIC8qIEFzc2lnbmVkIGRvb3JiZWxsICovCj4gPj4+ICvCoMKgwqAgdTMyIGRvb3Ji ZWxsX2lkOwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogQXJyYXkgb2YgZXhlY2xpc3QgY29udGV4 dHMgKi8KPiA+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHQKPiA+Pj4gK8Kg wqDCoMKgwqDCoMKgIHVrX2V4ZWNfbGlzdF9jb250ZXh0W0dVQ19NQVhfU0NIRURVTEFCTEVfRU5H SU5FX0NMQVNTXQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg W0dVQ19NQVhfU1dfQ09OVEVYVF9DT1VOVEVSXTsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIEFs bG9jYXRpb24gbWFwIHRvIHRyYWNrIHdoaWNoIGV4ZWNsaXN0IGNvbnRleHRzIGFyZSBpbiB1c2Ug Ki8KPiA+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHRfYWxsb2NfbWFwCj4g Pj4+ICsgdWtfZXhlY2xpc3RfY29udGV4dF9hbGxvY19tYXBbR1VDX01BWF9TQ0hFRFVMQUJMRV9F TkdJTkVfQ0xBU1NdOwo+ID4+Cj4gPj4gaG1tLCBtYXliZSB0byBtYWtlIGl0IGZ1dHVyZSBwcm9v Ziwgd2Ugc2hvdWxkIGRlZmluZSBhcnJheSBhcyBsYXN0Cj4gPj4gbWVtYmVyPwo+ID4KPiA+VGhh dCB3b3VsZCBoZWxwIHZlcnkgbGl0dGxlLCBzaW5jZSB0aGlzIHdob2xlIHN0cnVjdCBpcyBhbHNv IHN0b3JlZCBpbgo+ID5hbiBhcnJheSAoc29tZXRoaW5nIHRoYXQgd2Ugc3RpbGwgaGF2ZSB0byBp bXByb3ZlKSwgYnV0IElQVENBLgo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogTnVt YmVyIG9mIGFjdGl2ZSBleGVjbGlzdCBjb250ZXh0cyAqLwo+ID4+PiArwqDCoMKgIHUzMiB1a19l eGVjbGlzdF9jb250ZXh0X2FsbG9jX2NvdW50Owo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogT3B0 aW1pemF0aW9uIHRvIHJlZHVjZSB0aGUgbWF4aW11bSBleGVjbGlzdCBjb250ZXh0IGNvdW50IGZv cgo+ID4+PiArwqDCoMKgwqAgKiB0aGlzIEd1QyBjb250ZXh0IGRlc2NyaXB0b3IuIFNob3VsZCBi ZSBsZXNzIHRoYW4KPiA+Pj4gK8KgwqDCoMKgICogR1VDX01BWF9TV19DT05URVhUX0NPVU5URVIK PiA+Pj4gK8KgwqDCoMKgICovCj4gPj4+ICvCoMKgwqAgdTMyIG1heF91a19leGVjbGlzdF9jb250 ZXh0X3Blcl9lbmdpbmVfY2xhc3M7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCB1bmlvbiB7Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv KiBJcyB0aGlzIGNvbnRleHQgYWN0aXZlbHkgYXNzaWduZWQgdG8gYW4gYXBwPyAqLwo+ID4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaXNfY29udGV4dF9hY3RpdmUgOiAxOwo+ID4+PiAr Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIElzIHRoaXMgYSBwcm94eSBlbnRyeSwg cHJpbmNpcGFsIG9yIHJlYWwgZW50cnk/ICovCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHUzMiBjb250ZXh0X3R5cGUgOiAyOwo+ID4+PiArCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiBpc19rbWRfY3JlYXRlZF9jb250ZXh0IDogMTsKPiA+Pgo+ID4+IGNhbiBpdCBiZSBt b2RpZmllZCBmcm9tL29yIHRoZSBrbWQgPwo+ID4KPiA+VGhlIEtNRCBzZXRzIHRoaXMuIEkgdGhp bmsgdGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdoZW4gRGlyZWN0IFN1Ym1pc3Npb24KPiA+aXMgdXNl ZC4KPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBDb250 ZXh0IHdhcyBwYXJ0IG9mIGFuIGVuZ2luZSByZXNldC4gS01EIG11c3QgdGFrZQo+ID4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYXBwcm9wcmlhdGUgYWN0aW9uICh0aGlzIGNvbnRleHQg d2lsbCBub3QgYmUKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHJlc3VibWl0dGVk IHVudGlsIHRoaXMgYml0IGlzIGNsZWFyZWQpCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGlzX2NvbnRleHRfZW5nX3Jl c2V0IDogMTsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNldCBp dCB0byAxIHRvIHByZXZlbnQgb3RoZXIgY29kZSBwYXRocyB0byBkbyB3b3JrCj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHF1ZXVlIHByb2Nlc3NpbmcgYXMgd2UgdXNlIHNhbXBs ZWQgdmFsdWVzIGZvciBXUQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBwcm9j ZXNzaW5nLiBBbGxvd2luZyBtdWx0aXBsZSBjb2RlIHBhdGhzIHRvIGRvIFdRCj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHByb2Nlc3Npbmcgd2lsbCBjYXVzZSBzYW1lIHdvcmts b2FkIHRvIGV4ZWN1dGUKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogbXVsdGlw bGUgdGltZXMKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3cV9wcm9jZXNzaW5nX2xvY2tlZCA6IDE7Cj4gPj4+ICsK PiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGZ1dHVyZSA6IDE7Cj4gPj4+ICsKPiA+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogSWYgc2V0IHRvIDEsIHRoZSBjb250ZXh0IGlz IHRlcm1pbmF0ZWQgYnkgR3VDLiBBbGwKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IHRoZSBwZW5kaW5nIHdvcmsgaXMgZHJvcHBlZCwgaXRzIGRvb3JiZWxsIGlzIGV2aWN0ZWQKPiA+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFuZCBldmVudHVhbGx5IHRoaXMgY29udGV4 dCB3aWxsIGJlIHJlbW92ZWQKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaXNfY29udGV4dF90ZXJtaW5hdGVkIDogMTsK PiA+Pj4gKwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAyNDsKPiA+Pj4gK8Kg wqDCoMKgwqDCoMKgIH07Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgYm9vbF92YWx1ZXM7Cj4g Pj4+ICvCoMKgwqAgfTsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIGVudW0gZ3VjX2NvbnRleHRfcHJp b3JpdHkgcHJpb3JpdHk7Cj4gPj4KPiA+PiBhZ2FpbiwgZW51bSBpbiBwYWNrZWQgc3RydWN0Cj4g Pgo+ID5ZdXAsIHdlIGFscmVhZHkga25ldyBhYm91dCB0aGlzLgo+ID4KPiA+Pgo+ID4+PiArCj4g Pj4+ICvCoMKgwqAgLyogV1EgdGFpbCBTYW1wbGVkIGFuZCBzZXQgZHVyaW5nIGRvb3JiZWxsIElT UiBoYW5kbGVyICovCj4gPj4+ICvCoMKgwqAgdTMyIHdxX3NhbXBsZWRfdGFpbF9vZmZzZXQ7Cj4g Pj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBHbG9iYWwgKGFjcm9zcyBhbGwgc3VibWl0IHF1ZXVlcyku IEZvciBwcmluY2lwYWxzCj4gPj4+ICvCoMKgwqDCoCAqIChwcm94eSBlbnRyeSksIHRoaXMgd2ls bCBiZSB6ZXJvIGFuZCB0cnVlIGNvdW50Cj4gPj4+ICvCoMKgwqDCoCAqIHdpbGwgYmUgcmVmbGVj dGVkIGluIGl0cyBwcm94eSAocHJveHkgc3VibWlzc2lvbikKPiA+Pj4gK8KgwqDCoMKgICovCj4g Pj4+ICvCoMKgwqAgdTMyIHRvdGFsX3N1Ym1pdF9xdWV1ZV9lbnF1ZXVlczsKPiA+Pj4gKwo+ID4+ PiArwqDCoMKgIC8qIFBvaW50ZXIgdG8gc3RydWN0IGd1Y19zY2hlZF9wcm9jZXNzX2Rlc2NyaXB0 b3IgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgcF9wcm9jZXNzX2Rlc2NyaXB0b3I7Cj4gPj4+ICsKPiA+ Pj4gK8KgwqDCoCAvKiBTZWN1cmUgY29weSBvZiBXUSBhZGRyZXNzIGFuZCBzaXplLiB1S2VybmVs IGNhbiBub3QKPiA+Pj4gK8KgwqDCoMKgICogdHJ1c3QgZGF0YSBpbiBzdHJ1Y3QgZ3VjX3NjaGVk X3Byb2Nlc3NfZGVzY3JpcHRvcgo+ID4+PiArwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoCB1MzIg cF93b3JrX3F1ZXVlX2FkZHJlc3M7Cj4gPj4+ICvCoMKgwqAgdTMyIHdvcmtfcXVldWVfc2l6ZV9i eXRlczsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIHUzMiBmdXR1cmUwOwo+ID4+PiArwqDCoMKgIHUz MiBmdXR1cmUxOwo+IFNhbWUgY29tbWVudCBvbiBhbGwgImZ1dHVyZSB4IiBmaWVsZHMuIFdoYXQg aXMgdGhlIHB1cnBvc2U/IAo+IAo+IAo+IEFudXNoYSAKPiA+PiBkcm9wIG9yIGtlZXAgdG9nZXRo ZXIgd2l0aCByZXNlcnZlZAo+ID4KPiA+QWdhaW4sIGl0IHdhcyBkb25lIGxpa2UgdGhpcyB0byBr ZWVwIGRpZmZlcmVuY2VzIHRvIGEgbWluaW11bS4KPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArwqDC oMKgIHN0cnVjdCBndWNfZW5naW5lX2NsYXNzX2JpdF9tYXAgcXVldWVfZW5naW5lX2Vycm9yOwo+ ID4+Cj4gPj4gaXMgdGhpcyBlcnJvciBtYXAgcGVyIGNvbnRleHQ/IGlzIHRoZXJlIGdsb2JhbCBl cnJvciBtYXAgYXZhaWxhYmxlPwo+ID4KPiA+SSdtIG5vdCB2ZXJ5IGZhbWlsaWFyIHdpdGggdGhl IEd1QyByZXNldCBwcm9jZWR1cmUsIGJ1dCB0aGlzIHNpbmNlIHRvIGJlCj4gPnBlci1jb250ZXh0 IGFuZCBJIGRvbid0IHNlZSBhbnkgZ2xvYmFsIGVxdWl2YWxlbnQgdGhpbmcuCj4gPgo+ID4+Cj4g Pj4+ICsKPiA+Pj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQwWzNdOwo+ID4+PiArwqDCoMKgIHU2NCBy ZXNlcnZlZDFbMTJdOwo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+Pgo+ID4rLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+Kioq KioqKioqKioqKgo+ID4+Pgo+ID4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKiBIb3N0 Mkd1QyBhbmQgR3VDMkhvc3QKPiA+Pj4gKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gPj4+ ICsKPiA+Pj4KPiA+KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCj4gPioqKioqKioqKioqLwo+ID4+PiArCj4gPj4+ICsvKiBI b3N0IDIgR3VDIGFjdGlvbnMgKi8KPiA+Pj4gK2VudW0gZ3VjX2hvc3QyZ3VjX2FjdGlvbiB7Cj4g Pj4KPiA+PiB0byBiZSBmdXR1cmUgcmVhZHk6Cj4gPj4KPiA+PiBzL2d1Y19ob3N0Mmd1Y19hY3Rp b24vZ3VjX2FjdGlvbgo+ID4+IHMvR1VDX0hPU1QyR1VDX0FDVElPTi9HVUNfQUNUSU9OCj4gPj4g b3IKPiA+PiBzL2d1Y19ob3N0Mmd1Y19hY3Rpb24vZ3VjX21zZ19hY3Rpb24KPiA+PiBzL0dVQ19I T1NUMkdVQ19BQ1RJT04vR1VDX01TR19BQ1RJT04KPiA+PiBvcgo+ID4+IHMvZ3VjX2hvc3QyZ3Vj X2FjdGlvbi9ndWNfcmVxdWVzdF9hY3Rpb24KPiA+PiBzL0dVQ19IT1NUMkdVQ19BQ1RJT04vR1VD X1JFUVVFU1RfQUNUSU9OCj4gPgo+ID5JUFRDQQo+ID4KPiA+Pgo+ID4+Cj4gPj4+ICvCoMKgwqAg R1VDX0hPU1QyR1VDX0FDVElPTl9ERUZBVUxUID0gMHgwLAo+ID4+PiArwqDCoMKgIEdVQ19IT1NU MkdVQ19BQ1RJT05fUkVRVUVTVF9JTklUX0RPTkVfSU5URVJSVVBUID0gMHgxLAo+ID4+PiArwqDC oMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9QUkVFTVBUSU9OID0gMHgyLAo+ID4+PiAr wqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9FTkdJTkVfUkVTRVQgPSAweDMsCj4g Pj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9QQVVTRV9TQ0hFRFVMSU5HID0gMHg0LAo+ ID4+PiArwqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fUkVTVU1FX1NDSEVEVUxJTkcgPSAweDUs Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0FMTE9DQVRFX0RPT1JC RUxMID0gMHgxMCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0RFQUxMT0NBVEVf RE9PUkJFTEwgPSAweDIwLAo+ID4+PiArwqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fTE9HX0JV RkZFUl9GSUxFX0ZMVVNIX0NPTVBMRVRFID0gMHgzMCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJH VUNfQUNUSU9OX0VOQUJMRV9MT0dHSU5HID0gMHg0MCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJH VUNfQUNUSU9OX0NBQ0hFX0NSQVNIX0RVTVAgPSAweDIwMCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9T VDJHVUNfQUNUSU9OX0RFQlVHX1JJTkdfREIgPSAweDMwMCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9T VDJHVUNfQUNUSU9OX1BFUkZPUk1fR0xPQkFMX0RFQlVHX0FDVElPTlMgPSAweDMwMSwKPiA+Pj4g K8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0ZPUkNFX0xPR0JVRkZFUkZMVVNIID0gMHgzMDIs Cj4gPj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9MT0dfVkVSQk9TSVRZX0xPR09VVFBV VF9TRUxFQ1QgPQo+ID4weDQwMCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0VO VEVSX1NfU1RBVEUgPSAweDUwMSwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0VY SVRfU19TVEFURSA9IDB4NTAyLAo+ID4+PiArwqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fU0VU X1NDSEVEVUxJTkdfTU9ERSA9IDB4NTA0LAo+ID4+PiArwqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJ T05fU0NIRURfUE9MSUNZX0NIQU5HRSA9IDB4NTA2LAo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyog QWN0aW9ucyBmb3IgUG93ciBDb25zZXJ2YXRpb24gOiAweDMwMDAtMHgzRkZGICovCj4gPj4+ICvC oMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9QQ19TTFBNX1JFUVVFU1QgPSAweDMwMDMsCj4gPj4+ ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9QQ19TRVRVUF9HVUNSQyA9IDB4MzAwNCwKPiA+ Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX1NBTVBMRV9GT1JDRVdBS0VfRkVBVFVSRV9S RUdJU1RFUiA9Cj4gPjB4MzAwNSwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX1NF VFVQX0dVQ1JDID0gMHgzMDA2LAo+ID4+PiArCj4gPj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FD VElPTl9BVVRIRU5USUNBVEVfSFVDID0gMHg0MDAwLAo+ID4+PiArCj4gPj4+ICvCoMKgwqAgR1VD X0hPU1QyR1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIgPQo+ID4w eDQ1MDUsCj4gPj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NPTU1B TkRfVFJBTlNQT1JUX0JVRkZFUgo+ID49IDB4NDUwNiwKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIEdV Q19IT1NUMkdVQ19BQ1RJT05fTUFYID0gMHhGRkZGCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtl bnVtIGd1Y19ob3N0Mmd1Y19yZXNwb25zZV9zdGF0dXMgewo+ID4+PiArwqDCoMKgIEdVQ19IT1NU MkdVQ19SRVNQT05TRV9TVEFUVVNfU1VDQ0VTUyA9IDB4MCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9T VDJHVUNfUkVTUE9OU0VfU1RBVFVTX1VOS05PV05fQUNUSU9OID0gMHgzMCwKPiA+Pj4gK8KgwqDC oCBHVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTX0xPR19IT1NUX0FERFJFU1NfTk9UX1ZBTElE ID0KPiA+MHg4MCwKPiA+Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTX0dF TkVSSUNfRkFJTCA9IDB4RjAwMCwKPiA+Pgo+ID4+IHMvZ3VjX2hvc3QyZ3VjX3Jlc3BvbnNlX3N0 YXR1cy9ndWNfc3RhdHVzCj4gPj4gcy9HVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTL0dVQ19T VEFUVVMKPiA+PiBvcgo+ID4+IHMvZ3VjX2hvc3QyZ3VjX3Jlc3BvbnNlX3N0YXR1cy9ndWNfbXNn X3N0YXR1cwo+ID4+IHMvR1VDX0hPU1QyR1VDX1JFU1BPTlNFX1NUQVRVUy9HVUNfTVNHX1NUQVRV Uwo+ID4+IG9yCj4gPj4gcy9ndWNfaG9zdDJndWNfcmVzcG9uc2Vfc3RhdHVzL2d1Y19yZXNwb25z ZV9zdGF0dXMKPiA+PiBzL0dVQ19IT1NUMkdVQ19SRVNQT05TRV9TVEFUVVMvR1VDX1JFU1BPTlNF X1NUQVRVUwo+ID4+Cj4gPgo+ID5JUFRDQQo+ID4KPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gK2Vu dW0gewo+ID4+PiArwqDCoMKgIC8qIEhvc3Qgb3JpZ2luYXRpbmcgdHlwZXMgKi8KPiA+Pj4gK8Kg wqDCoCBHVUNfTVNHX1RZUEVfSE9TVDJHVUNfUkVRVUVTVCA9IDB4MCwKPiA+Pj4gKwo+ID4+PiAr wqDCoMKgIC8qIEd1QyBvcmlnaW5hdGluZyB0eXBlcyAqLwo+ID4+PiArwqDCoMKgIEdVQ19NU0df VFlQRV9IT1NUMkdVQ19SRVNQT05TRSA9IDB4RiwKPiA+Pj4gK30gR1VDX0dVQ19NU0dfVFlQRTsK PiA+PiDCoMKgwqDCoMKgwqAgXl5eXl5eXgo+ID4+IHR5cG8/Cj4gPgo+ID5Qcm9ibGVtIHdpdGgg dGhlIGF1dG9tYXRpYyBjb252ZXJzaW9uLCBJJ2xsIGZpeCBpdC4KPiA+Cj4gPj4gYW5kIEhPU1Qy R1VDIHNob3VsZCBiZSBkcm9wcGVkCj4gPj4KPiA+PiDCoMKgwqDCoEdVQ19NU0dfVFlQRV9SRVFV RVNUID0gMHgwLAo+ID4+IMKgwqDCoMKgR1VDX01TR19UWVBFX1JFU1BPTlNFID0gMHhGLAo+ID4+ Cj4gPj4gYW5kIGl0IHNob3VsZCBkZWZpbmVkIGJlZm9yZSBBQ1RJT04vU1RBVFVTCj4gPj4KPiA+ Pj4gKwo+ID4+PiArLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdmFyaW91cyBmb3Jt YXRzIG9mIHZhbHVlcyBwdXQgaW4KPiA+Pj4gKyAqIFNPRlRfU0NSQVRDSF8wLiBUaGUgIlR5cGUi IGZpZWxkIGlzIHRvIGRldGVybWluZSB3aGljaCByZWdpc3Rlcgo+ID4+PiArICogZGVmaW5pdGlv biB0byB1c2UsIHNvIGl0IG11c3QgYmUgY29tbW9uIGFtb25nIGFsbCB1bmlvbmVkCj4gPj4+ICsg KiBzdHJ1Y3RzLgo+ID4+PiArICovCj4gPj4+ICtzdHJ1Y3QgZ3VjX21zZ19mb3JtYXQgewo+ID4+ PiArwqDCoMKgIHVuaW9uIHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4gPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBhY3Rpb24gOiAxNjsgLyogZW51bSBndWNfaG9zdDJn dWNfYWN0aW9uICovCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZCA6 IDEyOyAvKiBNQlogKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHR5cGUgOiA0 OyAvKiBHVUNfTVNHX1RZUEVfSE9TVDJHVUNfUkVRVUVTVCAqLwo+ID4+PiArwqDCoMKgwqDCoMKg wqAgfSBob3N0Mmd1Y19hY3Rpb247Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVj dCB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzdGF0dXMgOiAxNjsgLyogZW51 bSBndWNfaG9zdDJndWNfcmVzcG9uc2Vfc3RhdHVzICovCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiByZXR1cm5fZGF0YSA6IDEyOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1MzIgdHlwZSA6IDQ7IC8qIEdVQ19NU0dfVFlQRV9IT1NUMkdVQ19SRVNQT05TRSAqLwo+ID4+ PiArwqDCoMKgwqDCoMKgwqAgfSBob3N0Mmd1Y19yZXNwb25zZTsKPiA+Pj4gKwo+ID4+PiArwqDC oMKgwqDCoMKgwqAgdTMyIGR3b3JkX3ZhbHVlOwo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICt9Owo+ ID4+Cj4gPj4gd2VsbCwgd2UgbmVlZCBqdXN0IHNpbmdsZSBzdHJ1Y3QgZGVmaW5pdGlvbjoKPiA+ Pgo+ID4+IMKgwqDCoMKgdW5pb24gZ3VjX21zZ19oZWFkZXIgewo+ID4+IMKgwqDCoMKgwqDCoMKg IHN0cnVjdCB7Cj4gPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgY29kZSA6IDE2Owo+ID4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRhdGEgOiAxMjsKPiA+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiB0eXBlIDogNDsgLyogR1VDX01TR19UWVBFICovCj4gPj4gwqDCoMKgwqDC oMKgwqAgfTsKPiA+PiDCoMKgwqDCoMKgwqDCoCB1MzIgdmFsdWU7Cj4gPj4gwqDCoMKgwqB9Owo+ ID4+Cj4gPj4gYXMgdmFsdWUgb2YgJ3R5cGUnIGZpZWxkIGluZGljYXRlcyBob3cgdG8gaW50ZXJw cmV0ICdjb2RlL2RhdGEnIGZpZWxkczoKPiA+Pgo+ID4+IGlmIChtc2cudHlwZSA9PSBHVUNfTVNH X1RZUEVfUkVRVUVTVCkgewo+ID4+IMKgwqDCoMKgR1VDX1JFUVVFU1RfQUNUSU9OIGFjdGlvbiA9 IG1zZy5jb2RlOwo+ID4+IH0gZWxzZSBpZiAodHlwZSA9PSBHVUNfTVNHX1RZUEVfUkVTUE9OU0Up IHsKPiA+PiDCoMKgwqDCoEdVQ19SRVNQT05TRV9TVEFUVVMgc3RhdHVzID0gbXNnLmNvZGU7Cj4g Pj4gfQo+ID4+Cj4gPgo+ID5JUFRDQQo+ID4KPiA+Pj4gKwo+ID4+PiArI2RlZmluZSBHVUNfTUFL RV9IT1NUMkdVQ19SRVNQT05TRShfc3RhdHVzLCBfcmV0dXJuX2RhdGEpwqDCoMKgIFwKPiA+Pj4g K8KgwqDCoCAoKEdVQ19NU0dfVFlQRV9IT1NUMkdVQ19SRVNQT05TRSA8PCAyOCkgfMKgwqDCoMKg wqDCoMKgIFwKPiA+Pj4gK8KgwqDCoCAoKF9yZXR1cm5fZGF0YSAmIDB4RkZGKSA8PCAxNikgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4+PiArwqDCoMKgIChfc3RhdHVzICYgMHhGRkZGKSkK PiA+Pj4gKyNkZWZpbmUgR1VDX01BS0VfSE9TVDJHVUNfU1RBVFVTKGEpCj4gPihHVUNfTUFLRV9I T1NUMkdVQ19SRVNQT05TRShhLCAwKSkKPiA+Pgo+ID4+IEknbSBub3Qgc3VyZSB3ZSBuZWVkIGhl bHBlciBtYWNyb3MgdG8gYmUgcGFydCBvZiB0aGUgQUJJIGRlZmluaXRpb24KPiA+Cj4gPkFncmVl ZCwgSSB3aWxsIHJlbW92ZSB0aGlzLgo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ICtlbnVtIGd1Y19j bWRfdHJhbnNwb3J0X2J1ZmZlcl90eXBlIHsKPiA+Pj4gK8KgwqDCoCBHVUNfQ01EX1RSQU5TUE9S VF9CVUZGRVJfSE9TVDJHVUMgPSAweDAwLAo+ID4+PiArwqDCoMKgIEdVQ19DTURfVFJBTlNQT1JU X0JVRkZFUl9HVUMySE9TVCA9IDB4MDEsCj4gPj4+ICvCoMKgwqAgR1VDX0NNRF9UUkFOU1BPUlRf QlVGRkVSX01BWF9UWVBFID0gMHgwMiwKPiA+Pgo+ID4+IHdoZXJlIHdvdWxkIHdlIG5lZWQgTUFY X1RZUEUgPwo+ID4KPiA+Tm8gaWRlYSwgeW91IGFyZSB0aGUgY21kIHRyYW5zcG9ydCBidWZmZXIg ZXhwZXJ0IDopCj4gPklQVENBCj4gPgo+ID4+Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtzdHJ1 Y3QgZ3VjX2NtZF90cmFuc3BvcnRfYnVmZmVyX2Rlc2Mgewo+ID4+PiArwqDCoMKgIHUzMiBidWZm ZXJfYmVnaW5fZ2Z4X2FkZHJlc3M7Cj4gPj4+ICvCoMKgwqAgdTY0IGJ1ZmZlcl9iZWdpbl92aXJ0 dWFsX2FkZHJlc3M7Cj4gPj4KPiA+PiB2aXJ0dWFsIGFkZHJlc3MgaW4gQUJJIGFnYWluID8KPiA+ Pgo+ID4+PiArwqDCoMKgIHUzMiBidWZmZXJfc2l6ZV9pbl9ieXRlczsKPiA+Pj4gK8KgwqDCoCAv KiBHdUMgdUtlcm5lbCB1cGRhdGVzIHRoaXMgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgaGVhZF9vZmZz ZXQ7Cj4gPj4+ICvCoMKgwqAgLyogR3VDIGNsaWVudCB1cGRhdGVzIHRoaXMgKi8KPiA+Pj4gK8Kg wqDCoCB1MzIgdGFpbF9vZmZzZXQ7Cj4gPj4+ICvCoMKgwqAgdTMyIGlzX2luX2Vycm9yOwo+ID4+ PiArwqDCoMKgIC8qIEEgRFcgcHJvdmlkZWQgYnkgSDJHIGl0ZW0gdGhhdCB3YXMgcmVxdWVzdGVk IHRvIGJlIHdyaXR0ZW4gKi8KPiA+Pj4gK8KgwqDCoCB1MzIgZmVuY2VfcmVwb3J0X2R3Owo+ID4+ PiArwqDCoMKgIC8qIFN0YXR1cyBhc3NvY2lhdGVkIHdpdGggYWJvdmUgZmVuY2VfcmVwb3J0X2R3 ICovCj4gPj4+ICvCoMKgwqAgdTMyIHN0YXR1c19yZXBvcnRfZHc7Cj4gPj4KPiA+PiBobW0sIGFz IHdlIHVzdWFsbHkgc2V0dXAgYm90aCBIMkcgYW5kIEcySCBidWZmZXJzIGZvciByZXEvcmVzcCwg d2h5IGRvCj4gPj4gd2UgbmVlZAo+ID4+IHRoaXMgYWRkaXRpb25hbCBtZWNoYW5pc20gdG8gbGV0 IEd1QyB3cml0ZSBmZW5jZS9zdGF0dXMgaW50byBkZXNjcmlwdG9yID8KPiA+Cj4gPklQVENBCj4g Pgo+ID4+Cj4gPj4+ICvCoMKgwqAgLyogSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnVmZmVyIChh c3NpZ25lZCBieSBHdUMgbWFzdGVyKSAqLwo+ID4+PiArwqDCoMKgIHUzMiBjbGllbnRfaWQ7Cj4g Pj4+ICvCoMKgwqAgLyogVXNlZCAmIHNldCBieSB0aGUgY2xpZW50IGZvciBmdXJ0aGVyIHRyYWNr aW5nIG9mIGludGVybmFsCj4gPj4+IGNsaWVudHMgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgY2xpZW50 X3N1Yl90cmFja2luZ19pZDsKPiA+Pj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWRbNV07Cj4gPj4+ICt9 Owo+ID4+PiArCj4gPj4+ICsvKiBQZXIgY2xpZW50IGNvbW1hbmQgdHJhbnNwb3J0IGJ1ZmZlciBh bGxvY2F0ZWQgYnkgR3VDIG1hc3RlciAqLwo+ID4+PiArc3RydWN0IGd1Y19tYXN0ZXJfY21kX3Ry YW5zcG9ydF9idWZmZXJfYWxsb2Mgewo+ID4+PiArwqDCoMKgIC8qIFRoaXMgaXMgdGhlIGNvcHkg dGhhdCBHdUMgdHJ1c3RzICovCj4gPj4+ICvCoMKgwqAgc3RydWN0IGd1Y19jbWRfdHJhbnNwb3J0 X2J1ZmZlcl9kZXNjIGJ1ZmZlcl9kZXNjOwo+ID4+PiArwqDCoMKgIHUzMiBmdXR1cmU7Cj4gPj4+ ICvCoMKgwqAgdTY0IHJlc2VydmVkMDsKPiA+Pgo+ID4+IHBsZWFzZSBrZWVwIGZ1dHVyZS9yZXNl cnZlZCBmaWVsZHMgdG9nZXRoZXIgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QKPiA+Cj4gPkknbGwgcGFz cyBhIGdlbmVyYWwgY29tbWVudCBhYm91dCB0aGlzCj4gPj4KPiA+Pj4gK8KgwqDCoCB1MzIgdXNh Z2Vfc3BlY2lhbF9pbmZvOwo+ID4+Cj4gPj4gd2hhdCdzIHRoZSBmb3JtYXQgb2YgdGhpcyA/Cj4g Pgo+ID5ObyBpZGVhLiBJUFRDQQo+ID4KPiA+Pgo+ID4+PiArwqDCoMKgIHUzMiB2YWxpZDsKPiA+ Pgo+ID4+IDMyYiBmb3Igc2luZ2xlIGZsYWcgPwo+ID4KPiA+SVBUQ0EKPiA+Cj4gPj4KPiA+Pj4g K8KgwqDCoCB1MzIgYXNzb2NpYXRlZF9nMmhfaW5kZXg7Cj4gPj4+ICvCoMKgwqAgdTMyIHJlc2Vy dmVkMTsKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gKy8qwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSG9zdCAyIEd1QyBXb3JrIEl0ZW0KPiA+ Pj4gKyAqCj4gPj4+IFYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVYKPiA+Pj4gKyAqCj4gPj4+Cj4gPioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ID4qKioqKioqCj4gPj4+ICsgKiAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICrCoMKgwqAgRFcwL8KgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgICogKsKgwqDCoMKgwqDC oMKgwqDCoMKgICoKPiA+Pj4gKyAqICogSDJHIEl0ZW0gSGVhZGVywqDCoCAqwqAgUmV0dXJuRFcg KsKgIERXMcKgwqDCoMKgwqAgKsKgwqDCoMKgwqAgLi4uICrCoCBEV27CoMKgwqDCoMKgICoKPiA+ Pj4gKyAqCj4gPj4+Cj4gPioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4qKioqKioqCj4gPj4+ICsgKi8KPiA+Pj4gKwo+ ID4+PiArLyogQ29tbWFuZCBidWZmZXIgaGVhZGVyICovCj4gPj4+ICtzdHJ1Y3QgZ3VjX2NtZF9i dWZmZXJfaXRlbV9oZWFkZXIgewo+ID4+PiArwqDCoMKgIHVuaW9uIHsKPiA+Pj4gK8KgwqDCoMKg wqDCoMKgIHN0cnVjdCB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE51bWJlciBv ZiBkd29yZHMgdGhhdCBhcmUgcGFyYW1ldGVycyBvZiB0aGlzCj4gPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiBIb3N0Mkd1QyBhY3Rpb24uIE1heCBvZiAzMS4gRS5nLjogaWYgdGhlcmUg YXJlIDIgRFdzCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBmb2xsb3dpbmcgdGhp cyBoZWFkZXIsIHRoaXMgZmllbGQgaXMgc2V0IHRvIDIKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbnVtX2R3b3JkcyA6 IDU7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMzsKPiA+Pj4g Kwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBUaGUgdUtlcm5lbCB3aWxsIHdyaXRl IHRoZSB2YWx1ZSBmcm9tIERXMCAoYWthCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KiBSZXR1cm5EVykgdG8gZmVuY2VfcmVwb3J0X2R3IGluIHN0cnVjdAo+ID4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogZ3VjX2NtZF90cmFuc3BvcnRfYnVmZmVyX2Rlc2MKPiA+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgd3JpdGVfZmVuY2VfZnJvbV9kdzBfdG9fZGVzY3JpcHRvciA6IDE7Cj4gPj4+ICsKPiA+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogV3JpdGUgdGhlIHN0YXR1cyBvZiB0aGUgYWN0aW9u IHRvIERXMCBmb2xsb3dpbmcgdGhpcwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog aGVhZGVyCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIHdyaXRlX3N0YXR1c190b19kdzAgOiAxOwo+ID4+PiArCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNlbmQgYSBHdUMySG9zdCB3aXRoIFN0YXR1cyBv ZiB0aGUgYWN0aW9uIGFuZCB0aGUKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGZl bmNlIElEIGZvdW5kIGluIERXMCB2aWEgdGhlIGJ1ZmZlciB1c2VkIGZvciBHdUMgdG8KPiA+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEhvc3QgY29tbXVuaWNhdGlvbgo+ID4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUz MiBzZW5kX3N0YXR1c193aXRoX2R3MF92aWFfZ3VjX3RvX2hvc3QgOiAxOwo+ID4+PiArCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDU7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyrCoCBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZW51bSBndWNfaG9z dDJndWNfYWN0aW9uCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB0aGF0IG5lZWRz IHRvIGJlIGRvbmUgYnkgdGhlIHVLZXJuZWwKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqLwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaG9zdDJndWNfYWN0aW9uIDog MTY7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9IGgyZ19jbWRfYnVmZmVyX2l0ZW1faGVhZGVyOwo+ ID4+PiArCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvKiBOdW1iZXIgb2YgZHdvcmRzIHRoYXQgYXJlIHBhcmFtZXRlcnMgb2YgdGhp cyBHdUMySG9zdAo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYWN0aW9uCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIG51bV9kd29yZHMgOiA1Owo+ID4+PiArCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiA6IDM7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogSW5k aWNhdGVzIHRoYXQgdGhpcyBHdUMySG9zdCBhY3Rpb24gaXMgYSByZXNwb25zZSBvZgo+ID4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYSBIb3N0Mkd1YyByZXF1ZXN0Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IGhvc3QyX2d1Y19yZXNwb25zZSA6IDE7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdTMyIHJlc2VydmVkIDogNzsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKiBzdHJ1Y3QgZ3VjX3RvX2hvc3RfbWVzc2FnZSAqLwo+ID4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1MzIgZ3VjMmhvc3RfYWN0aW9uIDogMTY7Cj4gPj4+ICvCoMKgwqDCoMKgwqDC oCB9IGcyaF9jbWRfYnVmZmVyX2l0ZW1faGVhZGVyOwo+ID4+PiArCj4gPj4+ICvCoMKgwqDCoMKg wqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbnVtX2R3b3Jk cyA6IDU7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZCA6IDM7Cj4g Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmcmVlX2Zvcl9jbGllbnRfdXNlIDogMjQ7 Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9IGdlbmVyaWNfY21kX2J1ZmZlcl9pdGVtX2hlYWRlcjsK PiA+Pj4gKwo+ID4+PiArwqDCoMKgwqDCoMKgwqAgdTMyIGhlYWRlcl92YWx1ZTsKPiA+Pj4gK8Kg wqDCoCB9Owo+ID4+Cj4gPj4gaG1tLCB0aGVyZSB3YXMgYSBsb25nIGRpc2N1c3Npb24gYWJvdXQg dW5pZnlpbmcgQ1RCIEgyRyBhbmQgRzJIIG1lc3NhZ2VzLAo+ID4+IGFuZCBmaW5hbCBwcm9wb3Nh bC9hZ3JlZW1lbnQgd2FzIHRvIHVzZToKPiA+Pgo+ID4+IMKgwqDCoMKgc3RydWN0IGd1Y19jdGJf aGVhZGVyIHsKPiA+PiDCoMKgwqDCoMKgwqDCoCB1MzIgbnVtX2R3b3JkcyA6IDg7Cj4gPj4gwqDC oMKgwqDCoMKgwqAgdTMyIGZsYWdzIDogODsKPiA+PiDCoMKgwqDCoMKgwqDCoCB1MzIgYWN0aW9u X2NvZGUgOiAxNjsKPiA+PiDCoMKgwqDCoH07Cj4gPj4gYW5kCj4gPj4gwqDCoMKgwqAjZGVmaW5l IENUQl9GTEFHU19OT05FwqDCoMKgwqDCoMKgwqDCoMKgIDAKPiA+PiDCoMKgwqDCoCNkZWZpbmUg Q1RCX0ZMQUdfRkVOQ0VfUFJFU0VOVCAxCj4gPj4gYW5kCj4gPj4gwqDCoMKgwqAjZGVmaW5lIEdV Q19BQ1RJT05fUkVTUE9OU0XCoMKgwqAgR1VDX0FDVElPTl9ERUZBVUxUCj4gPj4KPiA+PiB0aGVu Cj4gPj4gdG8gc2VuZCBIMkcgcmVxdWVzdDoKPiA+PiDCoMKgwqDCoC5hY3Rpb24gPSBBQ1RJT04g KCE9IFJFU1BPTlNFKQo+ID4+IMKgwqDCoMKgLmZsYWdzIHw9IEZFTkNFX1BSRVNFTlQKPiA+PiB0 byBzZW5kIEgyRyBub3RpZmljYXRpb246Cj4gPj4gwqDCoMKgwqAuYWN0aW9uID0gQUNUSU9OICgh PSBSRVNQT05TRSkKPiA+PiDCoMKgwqDCoC5mbGFncyA9IEZMQUdTX05PTkUKPiA+PiB0byBzZW5k IEcySCBub3RpZmljYXRpb246Cj4gPj4gwqDCoMKgwqAuYWN0aW9uID0gQUNUSU9OICghPSBSRVNQ T05TRSkKPiA+PiDCoMKgwqDCoC5mbGFncyA9IEZMQUdTX05PTkUKPiA+PiB0byBzZW5kIEcySCBy ZXNwb25zZToKPiA+PiDCoMKgwqDCoC5hY3Rpb24gPSBBQ1RJT05fUkVTUE9OU0UKPiA+PiDCoMKg wqDCoC5mbGFncyB8PSBGRU5DRV9QUkVTRU5UCj4gPj4KPiA+Cj4gPklQVENBCj4gPgo+ID4+PiAr Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtzdHJ1Y3QgZ3VjX3RvX2hvc3RfbWVzc2FnZSB7Cj4g Pj4+ICvCoMKgwqAgdW5pb24gewo+ID4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPiA+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHVrX2luaXRfZG9uZSA6IDE7Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjcmFzaF9kdW1wX3Bvc3RlZCA6IDE7Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHUzMiBmbHVzaF9sb2dfYnVmZmVyX3RvX2ZpbGUgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1MzIgcHJlZW1wdF9yZXF1ZXN0X29sZF9wcmVlbXB0X3BlbmRpbmcgOiAxOwo+ID4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcHJlZW1wdF9yZXF1ZXN0X3RhcmdldF9jb250 ZXh0X2JhZCA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDE7Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzbGVlcF9lbnRyeV9pbl9wcm9ncmVzcyA6IDE7 Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBndWNfaW5fZGVidWdfaGFsdCA6IDE7 Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBndWNfcmVwb3J0X2VuZ2luZV9yZXNl dF9jb250ZXh0X2lkIDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMTsK PiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGhvc3RfcHJlZW1wdGlvbl9jb21wbGV0 ZSA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZDAgOiA0Owo+ ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZ3BhX3RvX2hwYV94bGF0aW9uX2Vycm9y IDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRvb3JiZWxsX2lkX2FsbG9j YXRpb25fZXJyb3IgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZG9vcmJl bGxfaWRfYWxsb2NhdGlvbl9pbnZhbGlkX2N0eF9pZCA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmb3Jj ZV93YWtlX3RpbWVkX291dCA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBm b3JjZV93YWtlX3RpbWVfb3V0X2NvdW50ZXIgOiAyOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaW9tbXVfY2F0 X3BhZ2VfZmF1bHRlZCA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBob3N0 Mmd1Y19lbmdpbmVfcmVzZXRfY29tcGxldGUgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgcmVzZXJ2ZWQxIDogMjsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IGRvb3JiZWxsX3NlbGVjdGlvbl9lcnJvciA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiBkb29yYmVsbF9pZF9yZWxlYXNlX2Vycm9yIDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdTMyIHVrX2V4Y2VwdGlvbiA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+ID4+PiArwqDCoMKgwqDC oMKgwqAgdTMyIGR3Owo+ID4+PiArwqDCoMKgIH07Cj4gPj4KPiA+PiB0aGlzIGVycm9yIGJpdG1h cCBkZWZpbml0aW9uIGlzIG1vcmUgYXBwbGljYWJsZSB0byBNTUlPIGJhc2VkCj4gPj4gbm90aWZp Y2F0aW9uLCBmb3IgQ1RCIHdlIGNvdWxkIGludHJvZHVjZSBzb21ldGhpbmcgbW9yZSBmbGV4aWJs ZQo+ID4+Cj4gPj4gYnR3LCBldmVuIGZvciBNTUlPIGJhc2VkIG5vdGlmaWNhdGlvbiB3ZSBjYW4g cmV1c2U6Cj4gPj4KPiA+PiDCoMKgwqDCoHVuaW9uIGd1Y19tc2dfaGVhZGVyIHsKPiA+PiDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvZGUg OiAxNjsKPiA+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBkYXRhIDogMTI7Cj4gPj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgdHlwZSA6IDQ7IC8qIEdVQ19NU0dfVFlQRSAqLwo+ID4+ IMKgwqDCoMKgwqDCoMKgIH07Cj4gPj4gwqDCoMKgwqDCoMKgwqAgdTMyIHZhbHVlOwo+ID4+IMKg wqDCoMKgfTsKPiA+Pgo+ID4+IGluIFNDUkFUQ0goMTUpIHdpdGggbmV3Ogo+ID4+Cj4gPj4gwqDC oMKgwqB0eXBlID0gR1VDX01TR19UWVBFX05PVElGID0gMHgxLAo+ID4+IMKgwqDCoMKgdHlwZSA9 IEdVQ19NU0dfVFlQRV9FUlJPUiA9IDB4RSwKPiA+Pgo+ID4+IHdoZXJlIGNvZGUvZGF0YSBjYW4g aG9sZCBleHRyYSBkZXRhaWxzLCBmb3IgTk9USUY6Cj4gPj4gwqDCoMKgwqB1a19pbml0X2RvbmUg PSAxLAo+ID4+IMKgwqDCoMKgY3Jhc2hfZHVtcF9wb3N0ZWQsCj4gPj4gwqDCoMKgwqBwcmVlbXB0 X3JlcXVlc3Rfb2xkX3ByZWVtcHRfcGVuZGluZywKPiA+PiDCoMKgwqDCoGhvc3RfcHJlZW1wdGlv bl9jb21wbGV0ZSwKPiA+PiBmb3IgRVJST1I6Cj4gPj4gwqDCoMKgwqBwcmVlbXB0X3JlcXVlc3Rf dGFyZ2V0X2NvbnRleHRfYmFkLAo+ID4+IMKgwqDCoMKgZG9vcmJlbGxfc2VsZWN0aW9uX2Vycm9y LAo+ID4+IGJ0dywgc29tZSBvZiB0aGVzZSBlcnJvcnMgc2VlbSB0byBiZSBhY3Rpb24gc3BlY2lm aWMsCj4gPj4gc28gbWF5YmUgdGhleSBzaG91bGQgYmUgcmVwb3J0ZWQgYmFjayBpbiBTVEFUVVMg Pwo+ID4KPiA+SVBUQ0EKPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiAr LyogU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHNhdmUgR3VDJ3Mgc3RhdGUgYmVmb3JlIFMzLiBUaGUg ZGRyZXNzIG9mCj4gPj4+IHRoZSBidWZmZXIKPiA+Pj4gKyAqIGdvZXMgaW4gZ3VjX2FkZGl0aW9u YWxfZGF0YV9zdHJ1Y3RzCj4gPj4+ICsgKi8KPiA+Pj4gKyNkZWZpbmUgR1VDX01BWF9HVUNfUzNf U0FWRV9TUEFDRV9QQUdFU8KgwqDCoCAxMAo+ID4+PiArCj4gPj4+ICsvKiBNTUlPIE9mZnNldCBm b3Igc3RhdHVzIG9mIHNsZWVwIHN0YXRlIGVudGVyIHJlcXVlc3QgKi8KPiA+Pj4gKyNkZWZpbmUg R1VDX1NMRUVQX1NUQVRFX0VOVEVSX1NUQVRVU8KgwqDCoCAweEMxQjgKPiA+Pgo+ID4+IGhtbSwg d2UgdXNlZCBTQ1JBVENIKDE0KSBmb3IgSDJHLCBnb29kIHRvIGtub3cgdGhhdCBpdCB3aWxsIGJl IHVzZWQKPiA+PiBmb3IgRzJICj4gPj4KPiA+Pj4gKwo+ID4+PiArLyogU3RhdHVzIG9mIHNsZWVw IHJlcXVlc3QuIFZhbHVlIHVwZGF0ZWQgaW4KPiA+Pj4gR1VDX1NMRUVQX1NUQVRFX0VOVEVSX1NU QVRVUyAqLwo+ID4+PiArZW51bSBndWNfc2xlZXBfc3RhdGVfZW50ZXJfc3RhdHVzIHsKPiA+Pj4g K8KgwqDCoCBHVUNfU0xFRVBfU1RBVEVfRU5URVJfU1VDQ0VTUyA9IDEsCj4gPj4+ICvCoMKgwqAg R1VDX1NMRUVQX1NUQVRFX0VOVEVSX1BSRUVNUFRfVE9fSURMRV9GQUlMRUQgPSAyLAo+ID4+PiAr wqDCoMKgIEdVQ19TTEVFUF9TVEFURV9FTlRFUl9FTkdfUkVTRVRfRkFJTEVEID0gMywKPiA+Pj4g K307Cj4gPj4+ICsKPiA+Pj4gKwo+ID4+PiArLyogRW51bSB0byBkZXRlcm1pbmUgd2hhdCBtb2Rl IHRoZSBzY2hlZHVsZXIgaXMgaW4gKi8KPiA+Pj4gK2VudW0gZ3VjX3NjaGVkdWxlcl9tb2RlIHsK PiA+Pj4gK8KgwqDCoCBHVUNfU0NIRURVTEVSX01PREVfTk9STUFMLAo+ID4+PiArwqDCoMKgIEdV Q19TQ0hFRFVMRVJfTU9ERV9TVEFMTF9JTU1FRElBVEUsCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ Cj4gPisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgo+ID4qKioqKioqKioqKioqCj4gPj4+Cj4gPj4+ICsgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiBMb2dnaW5nCj4gPj4+ICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiA+Pj4gKwo+ID4+Pgo+ID4qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+KioqKioqKioqKiov Cj4gPj4+ICsKPiA+Pgo+ID4+IG1heWJlIGxvZyBpbnRlcmZhY2UgY2FuIGJlIGRlZmluZWQgaW4g c2VwYXJhdGUgZmlsZSA/Cj4gPgo+ID5JUFRDQQo+ID4KPiA+Pgo+ID4+PiArZW51bSBndWNfbG9n X2J1ZmZlcl90eXBlIHsKPiA+Pj4gK8KgwqDCoCBHVUNfTE9HX0JVRkZFUl9UWVBFX0lTUiA9IDB4 MCwKPiA+Pj4gK8KgwqDCoCBHVUNfTE9HX0JVRkZFUl9UWVBFX0RQQyA9IDB4MSwKPiA+Pj4gK8Kg wqDCoCBHVUNfTE9HX0JVRkZFUl9UWVBFX0NSQVNIID0gMHgyLAo+ID4+PiArwqDCoMKgIEdVQ19M T0dfQlVGRkVSX1RZUEVfTUFYID0gMHgzLAo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArZW51bSBn dWNfbG9nX3ZlcmJvc2l0eSB7Cj4gPj4+ICvCoMKgwqAgR1VDX0xPR19WRVJCT1NJVFlfTE9XID0g MHgwLAo+ID4+PiArwqDCoMKgIEdVQ19MT0dfVkVSQk9TSVRZX01FRCA9IDB4MSwKPiA+Pj4gK8Kg wqDCoCBHVUNfTE9HX1ZFUkJPU0lUWV9ISUdIID0gMHgyLAo+ID4+PiArwqDCoMKgIEdVQ19MT0df VkVSQk9TSVRZX1VMVFJBID0gMHgzLAo+ID4+PiArwqDCoMKgIEdVQ19MT0dfVkVSQk9TSVRZX01B WCA9IDB4NCwKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gKy8qIFRoaXMgZW51bSBjb250cm9scyB0 aGUgdHlwZSBvZiBsb2dnaW5nIG91dHB1dC4gQ2FuIGJlIGNoYW5nZWQKPiA+Pj4gZHluYW1pY2Fs bHkKPiA+Pj4gKyAqIHVzaW5nIEdVQ19IT1NUMkdVQ19BQ1RJT05fTE9HX1ZFUkJPU0lUWV9MT0dP VVRQVVRfU0VMRUNUCj4gPj4+ICsgKi8KPiA+Pj4gK2VudW0gZ3VjX2xvZ291dHB1dF9zZWxlY3Rp b24gewo+ID4+PiArwqDCoMKgIEdVQ19MT0dPVVRQVVRfTE9HQlVGRkVSX09OTFkgPSAweDAsCj4g Pj4+ICvCoMKgwqAgR1VDX0xPR09VVFBVVF9OUEtfT05MWSA9IDB4MSwKPiA+Pj4gK8KgwqDCoCBH VUNfTE9HT1VUUFVUX0xPR0JVRkZFUl9BTkRfTlBLID0gMHgyLAo+ID4+PiArwqDCoMKgIEdVQ19M T0dPVVRQVVRfTUFYCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsvKiBGaWxsZWQgYnkgS01EIGV4 Y2VwdCB2ZXJzaW9uIGFuZCBtYXJrZXIgdGhhdCBhcmUgaW5pdGlhbGl6ZWQgYnkKPiA+Pj4gdUtl cm5lbCAqLwo+ID4+PiArc3RydWN0IGd1Y19rbV9sb2dfYnVmZmVyX3N0YXRlIHsKPiA+Pj4gK8Kg wqDCoCAvKiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9mIEJ1ZmZlciBGbHVzaCAoc2V0IGJ5IHVLZXJu ZWwgYXQgTG9nCj4gPj4+IEJ1ZmZlcgo+ID4+PiArwqDCoMKgwqAgKiBJbml0KQo+ID4+PiArwqDC oMKgwqAgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgbWFya2VyWzJdOwo+ID4+PiArCj4gPj4+ICvCoMKg wqAgLyogVGhpcyBpcyB0aGUgbGFzdCBieXRlIG9mZnNldCBsb2NhdGlvbiB0aGF0IHdhcyByZWFk IGJ5IEtNRC4KPiA+Pj4gS01EIHdpbGwKPiA+Pj4gK8KgwqDCoMKgICogd3JpdGUgdG8gdGhpcyBh bmQgdUtlcm5lbCB3aWxsIHJlYWQgaXQKPiA+Pj4gK8KgwqDCoMKgICovCj4gPj4+ICvCoMKgwqAg dTMyIGxvZ19idWZfcmRfcHRyOwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogVGhpcyBpcyB0aGUg Ynl0ZSBvZmZzZXQgbG9jYXRpb24gdGhhdCB3aWxsIGJlIHdyaXR0ZW4gYnkKPiA+Pj4gdUtlcm5l bCAqLwo+ID4+PiArwqDCoMKgIHUzMiBsb2dfYnVmX3dyX3B0cjsKPiA+Pj4gKwo+ID4+PiArwqDC oMKgIHUzMiBsb2dfYnVmX3NpemU7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBUaGlzIGlzIHdy aXR0ZW4gYnkgdUtlcm5lbCB3aGVuIGl0IHNlZXMgdGhlIGxvZyBidWZmZXIKPiA+Pj4gYmVjb21p bmcgaGFsZgo+ID4+PiArwqDCoMKgwqAgKiBmdWxsLiBLTUQgd3JpdGVzIHRoaXMgdmFsdWUgaW4g dGhlIGxvZyBmaWxlIHRvIGF2b2lkIHN0YWxlIGRhdGEKPiA+Pj4gK8KgwqDCoMKgICovCj4gPj4+ ICvCoMKgwqAgdTMyIHNhbXBsZWRfbG9nX2J1Zl93cnB0cjsKPiA+Pj4gKwo+ID4+PiArwqDCoMKg IHVuaW9uIHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4gPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8qIHVLZXJuZWwgc2V0cyB0aGlzIHdoZW4gbG9nIGJ1ZmZlciBpcyBoYWxm IGZ1bGwgb3IKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHdoZW4gYSBmb3JjZWQg Zmx1c2ggaGFzIGJlZW4gcmVxdWVzdGVkIHRocm91Z2gKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIEhvc3QyR3VjLiB1S2VybmVsIHdpbGwgc2VuZCBHdWMySG9zdCBvbmx5IGlmIHRo aXMKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGJpdCBpcyBjbGVhcmVkLiBUaGlz IGlzIHRvIGF2b2lkIHVubmVjZXNzYXJ5Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KiBpbnRlcnJ1cHRzIGZyb20gR3VDCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8K PiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGxvZ19idWZfZmx1c2hfdG9fZmlsZSA6 IDE7Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogdUtlcm5lbCBpbmNy ZW1lbnRzIHRoaXMgd2hlbiBsb2cgYnVmZmVyIG92ZXJmbG93cyAqLwo+ID4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgYnVmZmVyX2Z1bGxfY291bnQgOiA0Owo+ID4+PiArCj4gPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDI3Owo+ID4+PiArwqDCoMKgwqDCoMKgwqAgfTsK PiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBsb2dfYnVmX2ZsYWdzOwo+ID4+PiArwqDCoMKgIH07 Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCB1MzIgdmVyc2lvbjsKPiA+Pj4gK307Cj4gPj4+ICsKPiA+ Pj4gKy8qIExvZ2dpbmcgUGFyYW1ldGVycyBzZW50IHZpYSBzdHJ1Y3Qgc2NoZWRfY29udHJvbF9k YXRhLiBNYWludGFpbmVkCj4gPj4+IGFzIHNlcGFyYXRlCj4gPj4+ICsgKiBzdHJ1Y3R1cmUgdG8g YWxsb3cgZGVidWcgdG9vbHMgdG8gYWNjZXNzIGxvZ3Mgd2l0aG91dCBjb250YWN0aW5nCj4gPj4+ IEd1QyAoZm9yCj4gPj4+ICsgKiB3aGVuIEd1QyBpcyBzdHVjayBpbiBJU1IpCj4gPj4+ICsgKi8K PiA+Pj4gK3N0cnVjdCBndWNfbG9nX2luaXRfcGFyYW1zIHsKPiA+Pj4gK8KgwqDCoCB1bmlvbiB7 Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgaXNfbG9nX2J1ZmZlcl92YWxpZCA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIFJhaXNlIEd1QzJIb3N0IGludGVycnVwdCB3aGVuIGJ1ZmZlciBpcyBoYWxmIGZ1 bGwgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIG5vdGlmeV9vbl9sb2dfaGFs Zl9mdWxsIDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMTsKPiA+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogMCA9IFBhZ2VzLCAxID0gTWVnYWJ5dGVzICovCj4g Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBhbGxvY2F0ZWRfY291bnRfdW5pdHMgOiAx Owo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBOby4gb2YgdW5pdHMgYWxsb2NhdGVk IC0xIChNQVggNCBVbml0cykgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNy YXNoX2R1bXBfbG9nX2FsbG9jYXRlZF9jb3VudCA6IDI7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIE5vLiBvZiB1bml0cyBhbGxvY2F0ZWQgLTEgKE1BWCA4IFVuaXRzKSAqLwo+ID4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZHBjX2xvZ19hbGxvY2F0ZWRfY291bnQgOiAz Owo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBOby4gb2YgdW5pdHMgYWxsb2NhdGVk IC0xIChNQVggOCBVbml0cykgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGlz cl9sb2dfYWxsb2NhdGVkX2NvdW50IDogMzsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyogUGFnZSBhbGlnbmVkIGFkZHJlc3MgZm9yIGxvZyBidWZmZXIgKi8KPiA+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGxvZ19idWZmZXJfZ2Z4X2FkZHJlc3MgOiAyMDsKPiA+Pj4gK8Kg wqDCoMKgwqDCoMKgIH07Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgbG9nX2R3b3JkX3ZhbHVl Owo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICsvKiBQYXNzIGluZm8g Zm9yIGRvaW5nIGEgSG9zdDJHdUMgcmVxdWVzdAo+ID4+PiAoR1VDX0hPU1QyR1VDX0FDVElPTl9F TkFCTEVfTE9HR0lORykKPiA+Pj4gKyAqIGluIG9yZGVyIHRvIGVuYWJsZS9kaXNhYmxlIEd1QyBs b2dnaW5nCj4gPj4+ICsgKi8KPiA+Pj4gK3N0cnVjdCBndWNfbG9nX2VuYWJsZV9wYXJhbXMgewo+ ID4+PiArwqDCoMKgIHVuaW9uIHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dnaW5nX2VuYWJsZWQgOiAxOwo+ID4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcHJvZmlsZV9sb2dnaW5nX2VuYWJsZWQgOiAxOwo+ ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbG9nX291dHB1dF9zZWxlY3Rpb24gOiAy Owo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbG9nX3ZlcmJvc2l0eSA6IDQ7Cj4g Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBkZWZhdWx0X2xvZ2dpbmdfZW5hYmxlZCA6 IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDIzOwo+ID4+PiArwqDCoMKg wqDCoMKgwqAgfTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBsb2dfZW5hYmxlX2R3b3JkX3Zh bHVlOwo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICsKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4KPiA+ Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gPioqKioqKioqKioqKioKPiA+Pj4KPiA+Pj4gKyAqKioqKioqKioqKioqKiBT Y2hlZCBDb250cm9sIERhdGEgYW5kIEFkZHRpb25hbCBEYXRhIFN0cnVjdHVyZXMKPiA+Pj4gKioq KioqKioqKioqKgo+ID4+PiArCj4gPj4+Cj4gPioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4qKioqKioqKioqKi8KPiA+ Pj4gKwo+ID4+PiArLyogSG9sZHMgdGhlIGluaXQgdmFsdWVzIG9mIHZhcmlvdXMgcGFyYW1ldGVy cyB1c2VkIGJ5IHRoZSB1S2VybmVsICovCj4gPj4+ICtzdHJ1Y3QgZ3VjX3NjaGVkX2NvbnRyb2xf ZGF0YSB7Cj4gPj4KPiA+PiBpcyB0aGlzIGdvb2QgbmFtZT8gSSBjYW4gc2VlIGxvZyByZWxhdGVk IHBhcmFtcyBiZWxvdy4uLgo+ID4KPiA+QWdyZWVkLCB0aGUgbmFtZSBjaG9pY2UgaXMgdGVycmli bGUuIElQVENBLgo+ID4KPiA+Pgo+ID4+PiArwqDCoMKgIC8qIER3b3JkIDAgKi8KPiA+Pj4gK8Kg wqDCoCB1bmlvbiB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBOdW0gb2YgY29udGV4dHMgaW4gcG9vbCBpbiBibG9ja3Mgb2Yg MTYsCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBFLmcuOiBudW1fY29udGV4dHNf aW5fcG9vbDE2X2Jsb2NrcyA9IDEgaWYgMTYKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIGNvbnRleHRzLCA2NCBpZiAxMDI0IGNvbnRleHRzIGFsbG9jYXRlZAo+ID4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBu dW1fY29udGV4dHNfaW5fcG9vbDE2X2Jsb2NrcyA6IDEyOwo+ID4+PiArCj4gPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIEFsaWduZWQgYml0cyBbMzE6MTJdIG9mIHRoZSBHRlggYWRkcmVz cyB3aGVyZSB0aGUKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHBvb2wgYmVnaW5z Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdTMyIGNvbnRleHRfcG9vbF9nZnhfYWRkcmVzc19iZWdpbiA6IDIwOwo+ID4+PiAr wqDCoMKgwqDCoMKgwqAgfTsKPiA+Pj4gK8KgwqDCoCB9Owo+ID4+PiArCj4gPj4+ICvCoMKgwqAg LyogRHdvcmQgMSAqLwo+ID4+PiArwqDCoMKgIHN0cnVjdCBndWNfbG9nX2luaXRfcGFyYW1zIGxv Z19pbml0X3BhcmFtczsKPiA+Pgo+ID4+IGNhbiB3ZSBrZWVwIHJlbGF0ZWQgZGF0YSB0b2dldGhl ciA/IGR3NCBhbHNvIGhhcyBsb2cgcGFyYW1zCj4gPgo+ID5JIGFscmVhZHkgbWFkZSB0aGlzIHNh bWUgY29tbWVudCBpbiB0aGUgcGFzdC4gSXQgc2ltcGx5IGhhc24ndCBiZWVuCj4gPmluY29ycG9y YXRlZCB5ZXQuCj4gPj4KPiA+Pj4gKwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogRHdvcmQgMiAq Lwo+ID4+PiArwqDCoMKgIHVuaW9uIHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4g Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZCA6IDE7Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3YV9kaXNhYmxlX2R1bW15X2FsbF9lbmdpbmVfZmF1bHRf Zml4IDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMzA7Cj4gPj4+ICvC oMKgwqDCoMKgwqDCoCB9Owo+ID4+PiArwqDCoMKgwqDCoMKgwqAgdTMyIHdvcmthcm91bmRfZHc7 Cj4gPj4+ICvCoMKgwqAgfTsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIER3b3JkIDMgKi8KPiA+ Pj4gK8KgwqDCoCB1bmlvbiB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZnRyX2VuYWJsZV9wcmVlbXB0aW9uX2RhdGFfbG9n Z2luZyA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmdHJfZW5hYmxlX2d1 Y19wYXZwX2NvbnRyb2wgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZnRy X2VuYWJsZV9ndWNfc2xwbSA6IDE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBm dHJfZW5hYmxlX2VuZ2luZV9yZXNldF9vbl9wcmVlbXB0X2ZhaWx1cmUgOiAxOwo+ID4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZnRyX2xpdGVfcmVzdG9yZSA6IDE7Cj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmdHJfZHJpdmVyX2ZsciA6IDE7Cj4gPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHUzMiBmdXR1cmUgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgZnRyX2VuYWJsZV9wc21pX2xvZ2dpbmcgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1MzIgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAx Owo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+ID4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg OiAxOwo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+ID4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxODsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoCB1MzIgZmVhdHVyZV9kd29yZDsKPiA+Pj4gK8KgwqDCoCB9Owo+ID4+ PiArCj4gPj4+ICvCoMKgwqAgLyogRHdvcmQgNCAqLwo+ID4+PiArwqDCoMKgIHVuaW9uIHsKPiA+ Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qIE9uZSBvZiBlbnVtIGd1Y19sb2dfdmVyYm9zaXR5ICovCj4gPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiBsb2dnaW5nX3ZlcmJvc2l0eSA6IDQ7Cj4gPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIE9uZSBvZiBlbnVtIGd1Y19sb2dvdXRwdXRfc2VsZWN0aW9uICovCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dfb3V0cHV0X3NlbGVjdGlvbiA6IDI7Cj4g Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dnaW5nX2Rpc2FibGVkIDogMTsKPiA+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHByb2ZpbGVfbG9nZ2luZ19lbmFibGVkIDog MTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMjQ7Cj4gPj4+ICvCoMKgwqDC oMKgwqDCoCB9Owo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICsKPiA+Pj4gK8KgwqDCoCAvKiBEd29y ZCA1ICovCj4gPj4+ICvCoMKgwqAgdW5pb24gewo+ID4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMTsKPiA+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGdmeF9hZGRyZXNzX2FkZGl0aW9uYWxfZGF0YV9zdHJ1Y3RzIDog MjE7Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDEwOwo+ID4+PiArwqDCoMKg wqDCoMKgwqAgfTsKPiA+Pj4gK8KgwqDCoCB9Owo+ID4+PiArCj4gPj4+ICt9Owo+ID4+PiArCj4g Pj4+ICsvKiBTdHJ1Y3R1cmUgdG8gcGFzcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBzdHJ1 Y3R1cmUgcG9pbnRlcnMKPiA+Pj4gdG8gKi8KPiA+Pj4gK3N0cnVjdCBndWNfYWRkaXRpb25hbF9k YXRhX3N0cnVjdHMgewo+ID4+PiArwqDCoMKgIC8qIEdmeCBwdHIgdG8gc3RydWN0IGd1Y19tbWlv X3NhdmVfcmVzdG9yZV9saXN0IChwZXJzaXN0ZW50KSAqLwo+ID4+PiArwqDCoMKgIHUzMiBnZnhf YWRkcmVzc19tbWlvX3NhdmVfcmVzdG9yZV9saXN0Owo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyog QnVmZmVyIG9mIHNpemUgR1VDX01BWF9HVUNfUzNfU0FWRV9TUEFDRV9QQUdFUyAocGVyc2lzdGVu dCkgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgZ2Z4X3B0cl90b19ndWNzX3N0YXRlX3NhdmVfYnVmZmVy Owo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogR2Z4IGFkZHJlc3NlcyBvZiBzdHJ1Y3QgZ3VjX3Nj aGVkdWxpbmdfcG9saWNpZXMKPiA+Pj4gKG5vbi1wZXJzaXN0ZW50LCBtYXkKPiA+Pj4gK8KgwqDC oMKgICogYmUgcmVsZWFzZWQgYWZ0ZXIgaW5pdGlhbCBsb2FkKSwgTlVMTCBvciB2YWxpZCA9IDAg ZmxhZyB2YWx1ZQo+ID4+PiB3aWxsCj4gPj4+ICvCoMKgwqDCoCAqIGNhdXNlIGRlZmF1bHQgcG9s aWNpZXMgdG8gYmUgbG9hZGVkCj4gPj4+ICvCoMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgIHUzMiBn Znhfc2NoZWR1bGVyX3BvbGljaWVzOwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogR2Z4IGFkZHJl c3Mgb2Ygc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqLwo+ID4+PiArwqDCoMKgIHUzMiBndF9z eXN0ZW1faW5mbzsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIHUzMiBmdXR1cmU7Cj4gPj4+ICsKPiA+ Pj4gK8KgwqDCoCB1MzIgZ2Z4X3B0cl90b19wc21pX2xvZ19jb250cm9sX2RhdGE7Cj4gPj4+ICsK PiA+Pj4gK8KgwqDCoCAvKiBMUkNBIGFkZHJlc3NlcyBhbmQgc2l6ZXMgb2YgZ29sZGVuIGNvbnRl eHRzIChwZXJzaXN0ZW50KSAqLwo+ID4+PiArwqDCoMKgIHUzMiBnZnhfZ29sZGVuX2NvbnRleHRf bHJjYVtHVUNfTUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU107Cj4gPj4+ICvCoMKgwqAgdTMy Cj4gPj4+Cj4gPmdvbGRlbl9jb250ZXh0X2VuZ19zdGF0ZV9zaXplX2luX2J5dGVzW0dVQ19NQVhf U0NIRURVTEFCTEVfRU5HSU5FX0NMCj4gPkFTU107Cj4gPj4KPiA+PiBtYXliZSB0aGlzIGlzIGNv dWxkIGJlIG1vcmUgZnV0dXJlIGZyaWVuZGx5IGlmIHdlIGRlZmluZSBpdCBhcyB0aGUgbGFzdAo+ ID4+IG1lbWJlcjoKPiA+Pgo+ID4+IMKgwqDCoMKgc3RydWN0IHsKPiA+PiDCoMKgwqDCoMKgwqDC oCB1MzIgbHJjYV9hZGRyczsKPiA+PiDCoMKgwqDCoMKgwqDCoCB1MzIgZW5nX3N0YXRlX3NpemVf aW5fYnl0ZXM7Cj4gPj4gwqDCoMKgwqB9IGdmeF9nb2xkZW5fY29udGV4dFtHVUNfTUFYX1NDSEVE VUxBQkxFX0VOR0lORV9DTEFTU107Cj4gPgo+ID5JUFRDQQo+ID4KPiA+Pgo+ID4+PiArCj4gPj4+ ICvCoMKgwqAgdTMyIHJlc2VydmVkWzE2XTsKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gKy8qIE1h eCBudW1iZXIgb2YgbW1pbyBwZXIgZW5naW5lIGNsYXNzIHBlciBlbmdpbmUgaW5zdGFuY2UgKi8K PiA+Pj4gKyNkZWZpbmUgR1VDX01BWF9NTUlPX1BFUl9TRVTCoMKgwqAgNjQKPiA+Pj4gKwo+ID4+ PiArc3RydWN0IGd1Y19tbWlvX2ZsYWdzIHsKPiA+Pj4gK8KgwqDCoCB1bmlvbiB7Cj4gPj4+ICvC oMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg bWFza2VkIDogMTsKPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMzE7Cj4gPj4+ ICvCoMKgwqDCoMKgwqDCoCB9Owo+ID4+PiArwqDCoMKgwqDCoMKgwqAgdTMyIGZsYWdzX3ZhbHVl Owo+ID4+PiArwqDCoMKgIH07Cj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtzdHJ1Y3QgZ3VjX21t aW8gewo+ID4+PiArwqDCoMKgIHUzMiBvZmZzZXQ7Cj4gPj4+ICvCoMKgwqAgdTMyIHZhbHVlOwo+ ID4+PiArwqDCoMKgIHN0cnVjdCBndWNfbW1pb19mbGFncyBmbGFnczsKPiA+Pj4gK307Cj4gPj4+ ICsKPiA+Pj4gK3N0cnVjdCBndWNfbW1pb19zZXQgewo+ID4+PiArwqDCoMKgIC8qIEFycmF5IG9m IG1taW8gdG8gYmUgc2F2ZWQvcmVzdG9yZWQgKi8KPiA+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX21t aW8gbW1pb1tHVUNfTUFYX01NSU9fUEVSX1NFVF07Cj4gPj4+ICvCoMKgwqAgLyogU2V0IGFmdGVy IHNhdmluZyBtbWlvIHZhbHVlLCBjbGVhcmVkIGFmdGVyIHJlc3RvcmUuICovCj4gPj4+ICvCoMKg wqAgdTMyIG1taW9fdmFsdWVzX3ZhbGlkOwo+ID4+PiArwqDCoMKgwqAgLyogTnVtYmVyIG9mIG1t aW8gaW4gdGhlIHNldCAqLwo+ID4+PiArwqDCoMKgIHUzMiBudW1iZXJfb2ZfbW1pbzsKPiA+Pj4g K307Cj4gPj4+ICsKPiA+Pj4gK3N0cnVjdCBndWNfbW1pb19zYXZlX3Jlc3RvcmVfbGlzdCB7Cj4g Pj4+ICvCoMKgwqAgc3RydWN0IGd1Y19tbWlvX3NldAo+ID4+PiArwqDCoMKgwqDCoMKgwqAgbm9k ZV9tbWlvX3NldFtHVUNfTUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU10KPiA+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtHVUNfTUFYX0VOR0lORV9JTlNUQU5DRV9QRVJf Q0xBU1NdOwo+ID4+PiArwqDCoMKgIHUzMiByZXNlcnZlZFs5OF07Cj4gPj4+ICt9Owo+ID4+PiAr Cj4gPj4+ICsvKiBQb2xpY3kgZmxhZ3MgdG8gY29udHJvbCBzY2hlZHVsaW5nIGRlY2lzaW9ucyAq Lwo+ID4+PiArc3RydWN0IGd1Y19zY2hlZHVsaW5nX3BvbGljeV9mbGFncyB7Cj4gPj4+ICvCoMKg wqAgdW5pb24gewo+ID4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPiA+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogU2hvdWxkIHdlIHJlc2V0IGVuZ2luZSB3aGVuIHByZWVtcHRpb24g ZmFpbGVkIHdpdGhpbgo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaXRzIHRpbWUg cXVhbnR1bQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHUzMiByZXNldF9lbmdpbmVfdXBvbl9wcmVlbXB0X2ZhaWx1cmUgOiAx Owo+ID4+PiArCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNob3VsZCB3ZSBwcmVl bXB0IHRvIGlkbGUgdW5jb25kaXRpb25hbGx5IGZvciB0aGUKPiA+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIGV4ZWN1dGlvbiBxdWFudHVtIGV4cGlyeQo+ID4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBwcmVlbXB0 X3RvX2lkbGVfb25fcXVhbnR1bV9leHBpcnkgOiAxOwo+ID4+PiArCj4gPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHUzMiA6IDMwOwo+ID4+PiArwqDCoMKgwqDCoMKgwqAgfTsKPiA+Pj4gK8Kg wqDCoMKgwqDCoMKgIHUzMiBwb2xpY3lfZHdvcmQ7Cj4gPj4+ICvCoMKgwqAgfTsKPiA+Pj4gK307 Cj4gPj4+ICsKPiA+Pj4gKy8qIFBlci1lbmdpbmUgY2xhc3MgYW5kIHBlci1wcmlvcml0eSBzdHJ1 Y3QgZm9yIHNjaGVkdWxpbmcgcG9saWN5wqAgKi8KPiA+Pj4gK3N0cnVjdCBndWNfc2NoZWR1bGlu Z19wb2xpY3kgewo+ID4+PiArwqDCoMKgIC8qIFRpbWUgZm9yIG9uZSB3b3JrbG9hZCB0byBleGVj dXRlIChtaWNybyBzZWNvbmRzKSAqLwo+ID4+PiArwqDCoMKgIHUzMiBleGVjdXRpb25fcXVhbnR1 bTsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIFRpbWUgdG8gd2FpdCBmb3IgYSBwcmVlbXB0aW9u IHJlcXVlc3QgdG8gY29tcGxldGVkIGJlZm9yZQo+ID4+PiBpc3N1aW5nIGEKPiA+Pj4gK8KgwqDC oMKgICogcmVzZXQgKG1pY3JvIHNlY29uZHMpCj4gPj4+ICvCoMKgwqDCoCAqLwo+ID4+PiArwqDC oMKgIHUzMiB3YWl0X2Zvcl9wcmVlbXB0aW9uX2NvbXBsZXRpb25fdGltZTsKPiA+Pj4gKwo+ID4+ PiArwqDCoMKgIC8qIEhvdyBtdWNoIHRpbWUgdG8gYWxsb3cgdG8gcnVuIGFmdGVyIHRoZSBmaXJz dCBmYXVsdCBpcyBvYnNlcnZlZC4KPiA+Pj4gK8KgwqDCoMKgICogVGhlbiBwcmVlbXB0IGFmdGVy d2FyZHMgKG1pY3JvIHNlY29uZHMpCj4gPj4+ICvCoMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgIHUz MiBxdWFudHVtX3Vwb25fZmlyc3RfZmF1bHRfdGltZTsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIHN0 cnVjdCBndWNfc2NoZWR1bGluZ19wb2xpY3lfZmxhZ3MgcG9saWN5X2ZsYWdzOwo+ID4+PiArCj4g Pj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkWzhdOwo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArLyog S01EIHNob3VsZCBwb3B1bGF0ZSB0aGlzIHN0cnVjdCBhbmQgcGFzcyBpbmZvIHRocm91Z2ggc3Ry dWN0Cj4gPj4+ICsgKiBndWNfYWRkaXRpb25hbF9kYXRhX3N0cnVjdHMtIElmIEtNRCBkb2VzIG5v dCBzZXQgdGhlIHNjaGVkdWxlcgo+ID4+PiBwb2xpY3ksCj4gPj4+ICsgKiB1S2VybmVsIHdpbGwg ZmFsbCBiYWNrIHRvIGRlZmF1bHQgc2NoZWR1bGluZyBwb2xpY2llcwo+ID4+PiArICovCj4gPj4+ ICtzdHJ1Y3QgZ3VjX3NjaGVkdWxpbmdfcG9saWNpZXMgewo+ID4+PiArwqDCoMKgIHN0cnVjdCBn dWNfc2NoZWR1bGluZ19wb2xpY3kKPiA+Pj4gKwo+ID5wZXJfc3VibWl0X3F1ZXVlX3BvbGljeVtH VUNfQ09OVEVYVF9QUklPUklUWV9BQlNPTFVURV9NQVhfQ09VTlRdCj4gPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBbR1VDX01BWF9TQ0hFRFVMQUJMRV9F TkdJTkVfQ0xBU1NdOwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogU3VibWlzc2lvbiBxdWV1ZSBk ZXB0aCwgbWluIDIsIG1heCA4LiBJZiBvdXRzaWRlIHRoZSB2YWxpZAo+ID4+PiByYW5nZSwKPiA+ Pj4gK8KgwqDCoMKgICogZGVmYXVsdCB2YWx1ZSBpcyB1c2VkCj4gPj4+ICvCoMKgwqDCoCAqLwo+ ID4+PiArwqDCoMKgIHUzMiBzdWJtaXNzaW9uX3F1ZXVlX2RlcHRoW0dVQ19NQVhfU0NIRURVTEFC TEVfRU5HSU5FX0NMQVNTXTsKPiA+Pgo+ID4+IGFzIGl0IGxvb2tzIHRoYXQgbW9zdCBvZiB0aGUg YXJyYXlzIGFyZSBpbmRleGVkIGJ5Cj4gPj4gR1VDX01BWF9TQ0hFRFVMQUJMRV9FTkdJTkVfQ0xB U1MgdGhlbiBtYXliZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzCj4gPj4gc2hvdWxkIGJlIGRlc2lnbmVk IGFyb3VuZCBlbmdpbmUgbGlrZToKPiA+Pgo+ID4+IMKgwqDCoMKgc3RydWN0IGd1Y19lbmdpbmUg ewo+ID4+IMKgwqDCoMKgwqDCoMKgIHU4IGNsYXNzOwo+ID4+IMKgwqDCoMKgwqDCoMKgIHU4IGlu c3RhbmNlOwo+ID4+Cj4gPj4gwqDCoMKgwqDCoMKgwqAgdTMyIHN1Ym1pc3Npb25fcXVldWVfZGVw dGg7Cj4gPj4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IGd1Y19zY2hlZHVsaW5nX3BvbGljeQo+ID4+ IHBvbGljeVtHVUNfQ09OVEVYVF9QUklPUklUWV9BQlNPTFVURV9NQVhfQ09VTlRdOwo+ID4+IMKg wqDCoMKgfTsKPiA+Cj4gPklQVENBCj4gPgo+ID4+PiArCj4gPj4+ICvCoMKgwqAgLyogSG93IG11 Y2ggdGltZSB0byBhbGxvdyBiZWZvcmUgRFBDIHByb2Nlc3NpbmcgaXMgY2FsbGVkIGJhY2sgdmlh Cj4gPj4+ICvCoMKgwqDCoCAqIGludGVycnVwdCAodG8gcHJldmVudCBEUEMgcXVldWUgZHJhaW4g c3RhcnZpbmcpIElOIG1pY3JvCj4gPj4+IHNlY29uZHMuCj4gPj4+ICvCoMKgwqDCoCAqIFR5cGlj YWxseSBpbiB0aGUgMTAwMHMgKGV4YW1wbGUgb25seSwgbm90IGdyYW51bGFyaXR5KQo+ID4+PiAr wqDCoMKgwqAgKi8KPiA+Pj4gK8KgwqDCoCB1MzIgZHBjX3Byb21vdGVfdGltZTsKPiA+Pj4gKwo+ ID4+PiArwqDCoMKgIC8qIE11c3QgYmUgc2V0IHRvIHRha2UgdGhlc2UgbmV3IHZhbHVlcyAqLwo+ ID4+PiArwqDCoMKgIHUzMiBpc192YWxpZDsKPiA+Pj4gKwo+ID4+PiArwqDCoMKgIC8qIE51bWJl ciBvZiBXSXMgdG8gcHJvY2VzcyBwZXIgY2FsbCB0byBwcm9jZXNzIHNpbmdsZS4gUHJvY2Vzcwo+ ID4+PiBzaW5nbGUKPiA+Pj4gK8KgwqDCoMKgICogY291bGQgaGF2ZSBhIGxhcmdlIE1heCBUYWls IHZhbHVlIHdoaWNoIG1heSBrZWVwIENTIGlkbGUuCj4gPj4+IFByb2Nlc3MKPiA+Pj4gK8KgwqDC oMKgICogbWF4X251bV93b3JrX2l0ZW1zX3Blcl9kcGNfY2FsbCBXSXMgYW5kIHRyeSBmYXN0IHNj aGVkdWxlCj4gPj4+ICvCoMKgwqDCoCAqLwo+ID4+PiArwqDCoMKgIHUzMiBtYXhfbnVtX3dvcmtf aXRlbXNfcGVyX2RwY19jYWxsOwo+ID4+PiArCj4gPj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkWzRd Owo+ID4+PiArfTsKPiA+Pj4gKwo+ID4+PiArI3ByYWdtYSBwYWNrKCkKPiA+Pj4gKwo+ID4+PiAr I2VuZGlmCj4gPj4KPiA+Pgo+ID4+IFRoYW5rcywKPiA+PiBNaWNoYWwKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==