From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 12/12] drm/i915: Cache the reset_counter for the request Date: Thu, 26 Nov 2015 10:21:38 +0100 Message-ID: <20151126092138.GE17050@phenom.ffwll.local> References: <1448023432-10726-1-git-send-email-chris@chris-wilson.co.uk> <1448023432-10726-12-git-send-email-chris@chris-wilson.co.uk> <20151124164322.GT17050@phenom.ffwll.local> <20151124214332.GU22980@nuc-i3427.alporthouse.com> <20151125091253.GM17050@phenom.ffwll.local> <20151125121708.GZ22980@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f49.google.com (mail-wm0-f49.google.com [74.125.82.49]) by gabe.freedesktop.org (Postfix) with ESMTPS id DA41B6E78C for ; Thu, 26 Nov 2015 01:21:42 -0800 (PST) Received: by wmuu63 with SMTP id u63so13200928wmu.0 for ; Thu, 26 Nov 2015 01:21:41 -0800 (PST) Content-Disposition: inline In-Reply-To: <20151125121708.GZ22980@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMjUsIDIwMTUgYXQgMTI6MTc6MDhQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IE9uIFdlZCwgTm92IDI1LCAyMDE1IGF0IDEwOjEyOjUzQU0gKzAxMDAsIERhbmllbCBW ZXR0ZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIE5vdiAyNCwgMjAxNSBhdCAwOTo0MzozMlBNICswMDAw LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgTm92IDI0LCAyMDE1IGF0IDA1OjQz OjIyUE0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gT24gRnJpLCBOb3YgMjAs IDIwMTUgYXQgMTI6NDM6NTJQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+ID4gPiA+ID4g SW5zdGVhZCBvZiBxdWVyeWluZyB0aGUgcmVzZXQgY291bnRlciBiZWZvcmUgZXZlcnkgYWNjZXNz IHRvIHRoZSByaW5nLAo+ID4gPiA+ID4gcXVlcnkgaXQgdGhlIGZpcnN0IHRpbWUgd2UgdG91Y2gg dGhlIHJpbmcsIGFuZCBkbyBhIGZpbmFsIGNvbXBhcmUgd2hlbgo+ID4gPiA+ID4gc3VibWl0dGlu ZyB0aGUgcmVxdWVzdC4gRm9yIGNvcnJlY3RuZXNzLCB3ZSBuZWVkIHRvIHRoZW4gc2FuaXRpemUg aG93Cj4gPiA+ID4gPiB0aGUgcmVzZXRfY291bnRlciBpcyBpbmNyZW1lbnRlZCB0byBwcmV2ZW50 IGJyb2tlbiBzdWJtaXNzaW9uIGFuZAo+ID4gPiA+ID4gd2FpdGluZyBhY3Jvc3MgcmVzZXRzLCBp biB0aGUgcHJvY2VzcyBmaXhpbmcgdGhlIHBlcnNpc3RlbnQgLUVJTyB3ZQo+ID4gPiA+ID4gc3Rp bGwgc2VlIHRvZGF5IG9uIGZhaWxlZCB3YWl0cy4KPiA+ID4gPiAKPiA+ID4gPiB0YmggdGhhdCBl eHBsYW5hdGlvbiB3ZW50IHN0cmFpZ2h0IG92ZXIgbXkgaGVhZC4gUXVlc3Rpb25zOgo+ID4gPiA+ IC0gV2hlcmUgZG8gd2Ugd2FpdCBhZ2FpbiBvdmVyIGEgcmVzZXQ/IFdpdGggYWxsIHRoZSB3YWtl dXBzIHdlIHNob3VsZAo+ID4gPiA+ICAgY2F0Y2ggdGhlbSBwcm9wZXJseS4gSSBndWVzcyB0aGlz IG5lZWRzIHRoZSBkZXRhaWxlZCBzY2VuYXJpbyB0byBoZWxwIG1lCj4gPiA+ID4gICBvdXQsIHNp bmNlIEkgaGF2ZSBkaW0gbWVtb3JpZXMgdGhhdCB0aGVyZSBpcyBzb21ldGhpbmcgd3JvbmcgOy0p Cj4gPiA+IAo+ID4gPiBURFIuIEluIHRoZSBmdXR1cmUgKGFuZCBpbiBwYXN0IHNwZWN1bGF0aXZl IHBhdGNoZXMpIHdlIGhhdmUgcHJvcG9zZWQKPiA+ID4ga2VlcGluZyByZXF1ZXN0cyBvdmVyIGEg cmVzZXQgYW5kIHJlcXVldWluZyB0aGVtLiBUaGF0IGlzIGEgY29tcGxpY2F0aW9uCj4gPiA+IHRv IHRoZSBzaW1wbGlmaWNhdGlvbiBvZiBiYWlsaW5nIG91dCBmcm9tIHRoZSB3YWl0LiBXaGF0IEkg aGF2ZSBpbiBtaW5kLAo+ID4gPiBpcyB0aGUgcmVjb3ZlcnkgY29kZSBoYXMgdG8gZml4IHVwIHRo ZSByZXF1ZXN0IGxpc3Qgc29tZWhvdywgdGhvdWdoIHRoYXQKPiA+ID4gd2lsbCBiZSBmdW4uCj4g PiAKPiA+IEJ1dCBldmVuIHdpdGggcmVxdWV1ZWluZyB0aGUgd2FpdGVycyBuZWVkIHRvIGJhaWwg b3V0IGFuZCByZXN0YXJ0IHRoZQo+ID4gaW9jdGwuIFNvIEkgZG9uJ3Qgc2VlIHdoeSByZXF1ZXVl aW5nIG9mIHJlcXVlc3RzIG1hdHRlci4KPiAKPiBCdXQgd2h5IHNob3VsZCB0aGUgd2FpdGVyIGV2 ZW4gd2FrZSB1cD8gSXQgaXMgbm90IGhvbGRpbmcgYW55IGxvY2tzLCBhbGwKPiBpdCBpcyBqdXN0 IHdhaXRpbmcgZm9yIHRoZSByZXF1ZXN0IHRvIGNvbXBsZXRlLiBJdCBpcyBvbmx5IHRob3NlIGhv bGRpbmcKPiBhIGxvY2sgcmVxdWlyZWQgdG8gcmVzZXQgdGhhdCB3ZSBuZWVkIHRvIGtpY2suCgpC ZWNhdXNlIHRoZSByZXF1ZXN0IG1pZ2h0IG5vdCBhY3R1YWxseSBiZSBjb21wbGV0ZWQgd2hlbiB3 ZSBkbyBwYXJ0aWFsCnJlc2V0cyBsaWtlIHdpdGggVERSLiBBbmQgdGhlbiB3ZSdkIGhhdmUgdG8g dW5kbyB0aGlzLgoKPiA+IEFuZCBteSBxdWVzdGlvbiB3YXMgYWJvdXQgd2hhdCBleGFjdGx5IGlz IGJyb2tlbiB3aGVuIHdhaXRpbmcgb3ZlciBhCj4gPiByZXNldD8gQXMgbG9uZyBhcyB3ZSBkZXRl Y3QgdGhlIHJlc2V0IGFuZCByZXN0YXJ0IHRoZSBpb2N0bCB3ZSBzaG91bGQgcGljawo+ID4gdXAg YW55IGtpbmRzIG9mIHN0YXRlIGZpeHVwcyB0aGUgcmVzZXQgd29yayBoYXMgZG9uZSBhbmQgcmVj b3Zlcgo+ID4gcGVyZmVjdGx5LiBJcnJlc3BlY3RpdmUgb2Ygd2hldGhlciB0aGUgcmVzZXQgd29y ayBoYXMgcmVxdWV1ZWQgc29tZSBvZiB0aGUKPiA+IHJlcXVlc3RzIG9yIG5vdC4KPiAKPiBCdXQu Li4gVGhlIHJlc2V0IGhhbmRsZXIgY2xlYXJzIHRoZSByZXF1ZXN0cywgd2UgY2Fubm90IHdhaXQg b3ZlciBhCj4gcmVzZXQuIFNvIHdhaXRpbmcgb3ZlciBhIHJlc2V0IHRvZGF5IGlzIGNsZWFybHkg YSBidWcgaW4gdGhlIGtlcm5lbC4KPiAKPiBPbmx5IGluIHRoZSBmdXR1cmUgZG8gd2UgY29udGVt cGxhdGUgc2l0dWF0aW9ucyB3aGVyZSBhIHJlcXVlc3QgbWF5Cj4gc3Vydml2ZSBhIHJlc2V0LgoK SSB0aGluayBJIHBocmFzZWQgbXkgcXVlc3Rpb24gYmFkbHk6IFdoYXQncyBicm9rZW4gd2l0aCBj dXJyZW50IHdhaXRlcnMKcmFjaW5nIGFnYWluc3QgcmVzZXRzPyBDdXJyZW50bHkgdGhlIHNob3Vs ZCBhbGwgZ2V0IHdva2VuIGFuZCByZXN0YXJ0LCBhbmQKdGhhdCBzZWVtcyB0byB3b3JrLiBJdCBk b2VzIGNyZWF0ZSBzb21lIGlvY3RsIHJlc3RhcnQgd29yayB3aGVuIGEgcmVzZXQKaGFwcGVucywg YnV0IEkgdGhpbmsgdGhhdCBvdmVyaGVhZCBpcyBqdXN0aWZpZWQgZ2l2ZW4gdGhhdCBpdCBhbGxv d3MgdXMgdG8KaGF2ZSBubyBrbm93bGVkZ2Ugb2YgaG93IGV4YWN0bHkgd2UgcmVzZXQgaHcgYW5k IHN3IG91dHNpZGUgb2YgcmVzZXQKZnVuY3Rpb25zLgoKPiA+ID4gPiAtIFdoYXQgcHJlY2lzZWx5 IGlzIHRoZSBlZmZlY3QgZm9yIHdhaXRlcnM/IEkgb25seSBzZWUgbW92aW5nIHRoZQo+ID4gPiA+ ICAgYXRvbWljX2luYyB1bmRlciB0aGUgZGV2LT5zdHJ1Y3RfbXV0ZXgsIHdoaWNoIHNob3VsZG4n dCBkbyBhIGhvbGUgbG90Cj4gPiA+ID4gICBmb3IgYW55b25lLiBQbHVzIG5vdCByZXR1cm5pbmcg LUVBR0FJTiB3aGVuIHJlc2V0X2luX3Byb2dyZXNzLCB3aGljaAo+ID4gPiA+ICAgbG9va3MgbGlr ZSBpdCBtaWdodCByZXN1bHQgaW4gbWlzc2VkIHdha2V1cHMgYW5kIGRlYWRsb2NrcyB3aXRoIHRo ZQo+ID4gPiA+ICAgcmVzZXQgd29yay4KPiA+ID4gCj4gPiA+IEF0IHRoZSBtb21lbnQsIEkgY2Fu IHRyaXZpYWxseSB3ZWRnZSB0aGUgbWFjaGluZS4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0Lgo+ID4g PiBUaGUgcGF0Y2ggYWxzbyBlbnN1cmVzIHRoYXQgd2UgY2Fubm90IHJhaXNlIHVuaGFuZGxlZCBl cnJvcnMgZnJvbQo+ID4gPiB3YWl0LXJlcXVlc3QgKEVJTy9FQUdBSU4gaGFuZGxpbmcgaGFzIHRv IGJlIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlCj4gPiA+IGNhbGxlcikuCj4gPiAKPiA+IEhtLCBo b3cvd2hlcmUgZG8gd2Ugd2VkZ2UgdGhlIG1hY2hpbmUsIGFuZCBob3cgZG9lcyB0aGUgZml4IHdv cms/Cj4gCj4gQmVpbmcgYWJsZSB0byByZXNldCBhIHByZXZpb3VzbHkgd2VkZ2VkIG1hY2hpbmUu CgpPaywgSSB0aGluayBJIGdldCB0aGF0IHByb2JsZW0gbm93LCBhZnRlciBsb29raW5nIGF0IGdl bV9laW8gd29yay4KZWNobyAxID4gaTkxNV93ZWRnZWQgc2VlbXMgdG8gaGF2ZSBiZWVuIGJyb2tl biBzaW5jZSB5ZWFycy4gSSBoYXZlbid0IGV2ZXIKbm90aWNlZCB0aGF0IHNpbmNlIEkgZ2VuZXJh bGx5IGp1c3Qga2ljayB0aGUgbWFjaGluZSBhbmQgcmVzdGFydCB3aGVuIHRoYXQKaGFwcGVucy4K Cj4gPiA+IFRoZSB3YWl0LXJlcXVlc3QgaW50ZXJmYWNlIHN0aWxsIGhhcyB0aGUgd2FpdC1zZXFu byBsZWdhY3kgb2YgaGF2aW5nIHRvCj4gPiA+IGFjcXVpcmUgdGhlIHJlc2V0X2NvdW50ZXIgdW5k ZXIgdGhlIG11dGV4IGJlZm9yZSBjYWxsaW5nLiBUaGF0IGlzIHF1aXRlCj4gPiA+IGhhaXJ5IGFu ZCBjYXVzZXMgYSBtYWpvciBjb21wbGljYXRpb24gbGF0ZXIgd2hlcmUgd2Ugd2FudCB0byBhbWFs Z2FtYXRlCj4gPiA+IHdhaXRlcnMuCj4gPiAKPiA+IFllYWgsIHRoYXQncyBhIHNlbnNpYmxlIGNo YW5nZS4gQnV0IHNpbmNlIEkgZG9uJ3QgeWV0IHVuZGVyc3RhbmQgd2hlcmUKPiA+IGV4YWN0bHkg dGhlIGN1cnJlbnQgbG9naWMgcmVzdWx0cyBpbiBhIHdlZGdlIGdwdSBJIGNhbid0IGNvbnZpbmNl IG15c2VsZgo+ID4gdGhhdCB0aGUgbmV3IG9uZSBpcyBvay4KPiA+IAo+ID4gPiBSZSBFQUdBSU4u IE5vLCBpdCBjYW5ub3QgcmVzdWx0IGluIG1pc3NlZCB3YWtldXBzIHNpbmNlIHRoYXQgaXMgaW50 ZXJuYWwKPiA+ID4gdG8gdGhlIHdhaXRfcmVxdWVzdCBmdW5jdGlvbiwgbm9yIGNhbiBpdCByZXN1 bHQgaW4gbmV3IGRlYWRsb2NrcyB3aXRoIHRoZQo+ID4gPiByZXNldCB3b3JrZXIuCj4gPiAKPiA+ IFllYWggSSB0aGluayB0b2RheSB3aXRoIGp1c3Qgc3RydWN0X211dGV4IGl0J3MgaW1wb3NzaWJs ZS4gQnV0IGlmIHdlIGhhdmUKPiA+IG1vcmUgbG9ja3MgdGhlIHdhaXRpbmcgdGhyZWFkIGNvdWxk IGNvbnRpbnVlIHRvIGdyYWIgbW9yZSBsb2NrcyBpbnN0ZWFkIG9mCj4gPiBiYWlsaW5nIG91dCBz dHJhaWdodC4gQW5kIHRoZW4gdGhlIHJlc2V0IGhhbmRsZXIgd291bGQgYmUgc29tZXdoYXQgc2Ny ZXdlZAo+ID4gc2luY2UgaXQgaXNuJ3QgZ3VhcmFudGVlZCB0byBtYWtlIGZvcndhcmQgcHJvZ3Jl c3MuCj4gCj4gU28gYmFzaWNhbGx5IGlmIHlvdSBhZGQgYSBkZWFkbG9jay9saXZlbG9jaywgaXQg bWF5IGRlYWRsb2NrL2xpdmVsb2NrLgoKVGhlIHR3by1waGFzZSByZXNldCBsb2dpYyBpcyBzb21l IGtpbmQgb2YgaGFuZC1yb2xsZWQgc3BlY2lhbCBsb2NrIHdoaWNoCm1ha2VzIHN1cmUgbm90aGlu ZyBiYWQgaGFwcGVucy4gQXMgbG9uZyBhcyBpdCdzIHJlYWxseSB0d28tcGhhc2UuCkVzc2VudGlh bGx5IHJlc2V0X2luX3Byb2dyZXNzIG1lYW5zICJldmVyeW9uZSBnZXQgb2YgbG9ja3MgYW5kIHN0 YXkgb2YKbG9ja3MiLiBXaXRoIHNvbWUgc21hbGwgc2hvcnQtbGl2ZWQgZXhjZXB0aW9ucyBoZXJl IGFuZCB0aGVyZSAoYW5kIHdlbGwKbm90IHNvIHNob3J0LWxpdmVkIG9uZXMpLgoKT2YgY291cnNl IHdlIGNhbiBqdXN0IHdyaXRlIHJlc2V0IGNvZGUgdGhhdCBkb2Vzbid0IGRlYWRsb2NrLCBidXQg Z2l2ZW4Kb3VyIGhpc3RvcnkgaW4gdGhpcyBhcmVhIEkgbXVjaCBwcmVmZXIgc29tZXRoaW5nIHRo YXQncyBtb3JlIG9idmlvdXNseQpjb3JyZWN0LgoKPiA+ID4gPiBJIC90aG91Z2h0LyB0aGF0IHRo ZSAtRUlPIGlzIGZyb20gY2hlY2tfd2VkZ2UgaW4gaW50ZWxfcmluZ19iZWdpbiwgYnV0Cj4gPiA+ ID4gdGhhdCBwYXJ0IHNlZW1zIGVzc2VudGlhbGx5IHVuY2hhbmdlZC4KPiA+ID4gCj4gPiA+IEZv ciB0d28gcmVhc29ucywgd2UgbmVlZCB0byB0byBwcm90ZWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHJp bmcsIGFuZCB5b3UKPiA+ID4gYXJndWVkIHRoYXQgKHJlcG9ydGluZyBvZiBFSU8gZnJvbSBwcmV2 aW91cyB3ZWRnZWQgR1BVcykgaXQgd2FzIHBhcnQgb2YKPiA+ID4gdGhlIEFCSS4gVGhlIG90aGVy IEFCSSB0aGF0IEkgdGhpbmsgaXMgaW1wb3J0YW50LCBpcyB0aGUgcmVwb3J0aW5nIG9mCj4gPiA+ IEVJTyBpZiB0aGUgdXNlciBleHBsaWNpdHMgd2FpdHMgb24gYSByZXF1ZXN0IGFuZCBpdCBpcyBp bmNvbXBsZXRlIChpLmUuCj4gPiA+IHdhaXRfaW9jdGwpLgo+ID4gCj4gPiBXZWxsIHRoZW4gSSBk b24ndCBnZXQgd2hlcmUgdGhlIC1FSU8gaXMgZnJvbS4gVGhhdCBsZWF2ZXMgYSB0cnVseSB3ZWRn ZQo+ID4gZ3B1IGFzIHRoZSBjYXVzZSwgYW5kIGZvciB0aGF0IGNhc2UgSSBkb24ndCBnZXQgaG93 IGl0IGNhbiBoYXBwZW4gYnkKPiA+IGFjY2lkZW50IHdpdGggdGhlIGN1cnJlbnQgY29kZS4KPiAK PiBXZSBmYWlsIGEgcmVzZXQsIG9yIHRvIHJlY292ZXIuIEhhcHBlbnMgb2Z0ZW4gZW5vdWdoLgoK T2ssIGxvb2tpbmcgYXQgZ2VtX2VpbyB0aGUgb25seSBjYXNlIHdoZXJlIHdlIHB1dCBvdXQgYW4g RUlPIGFuZCBzaG91bGRuJ3QKc2VlbXMgdG8gYmUgc2V0X2RvbWFpbl9pb2N0bC4gSXMgdGhhdCBy aWdodD8KCldlbGwgdGhlcmUncyBhbGwgdGhlIG1vZGVzZXQgc3R1ZmYsIGFuZCB0aGF0IGp1c3Qg YmVjYW1lIGEgYml0IHdvcnNlIHdpdGgKTWFhcnRlbidzIHJlY2VudCBjaGFuZ2VzLiBTbyBwcm9i YWJseSB3ZSBuZWVkIHRoZSBzYW1lIC1FSU8gZWF0aW5nIHRoZXJlCnRvby4KCj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4gPiA+IGluZGV4IGZmZDk5ZDI3ZmFjNy4uNTgzODg4 MmUxMGExIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4g PiA+ID4gQEAgLTg0MSwyMyArODQxLDMxIEBAIGludCBpOTE1X3Jlc3VtZV9sZWdhY3koc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiA+ID4gPiA+ICBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ID4gPiA+ICsJc3RydWN0IGk5MTVf Z3B1X2Vycm9yICplcnJvciA9ICZkZXZfcHJpdi0+Z3B1X2Vycm9yOwo+ID4gPiA+ID4gKwl1bnNp Z25lZCByZXNldF9jb3VudGVyOwo+ID4gPiA+ID4gIAlib29sIHNpbXVsYXRlZDsKPiA+ID4gPiA+ ICAJaW50IHJldDsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJaW50ZWxfcmVzZXRfZ3RfcG93ZXJz YXZlKGRldik7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiA+ID4gPiA+ICsJYXRvbWljX2NsZWFyX21hc2soSTkxNV9XRURHRUQsICZlcnJv ci0+cmVzZXRfY291bnRlcik7Cj4gPiA+ID4gPiArCXJlc2V0X2NvdW50ZXIgPSBhdG9taWNfaW5j X3JldHVybigmZXJyb3ItPnJlc2V0X2NvdW50ZXIpOwo+ID4gPiA+IAo+ID4gPiA+IFRoaXMgcHVi bGlzaGVzIHRoZSByZXNldC1jb21wbGV0ZSB0b28gZWFybHkgZm9yIHRoZSBtb2Rlc2V0IGNvZGUg SSB0aGluay4KPiA+ID4gPiBBdCBsZWFzdCBpdCBjcnVjaWFsbHkgcmVsaWVzIHVwb24gZGV2LT5z dHJ1Y3RfbXV0ZXggc2VyaWFsaXppbmcKPiA+ID4gPiBldmVyeXRoaW5nIGluIG91ciBkcml2ZXIs IGFuZCBJIGRvbid0IGxpa2UgdG8gY2VtZW50IHRoYXQgYXNzdW1wdGlvbiBpbgo+ID4gPiA+IGV2 ZW4gbW9yZS4KPiA+ID4gCj4gPiA+IEhtbT8gSXQgaXMgYWxyZWFkeSBjb25jcmV0ZWQgaW4gYXMg dGhlIHJlc2V0IC8gY29udGludWF0aW9uIGlzIG9yZGVyZWQKPiA+ID4gd2l0aCB0aGUgc3RydWN0 X211dGV4LiBXZSBoYXZlIGtpY2tzIGluIHBsYWNlIGZvciB0aGUgbW9kZXNldHRpbmcgY29kZSwK PiA+ID4gYnV0IHdlIGhhdmUgbm90IGFjdHVhbGx5IG9yZGVyZWQgdGhhdCB3aXRoIGFueXRoaW5n IGluc2lkZSB0aGUgcmVzZXQKPiA+ID4gcmVjb3ZlcnkgY29kZS4gSnVkZ2luZyBieSB0aGUgZmV3 IGNoYW5nZXMgdG8gaTkxNV9yZXNldCgpLCBJIGFtIGRvdWJ0ZnVsCj4gPiA+IHRoYXQgaGFzIGFj dHVhbGx5IGJlZW4gaW1wcm92ZWQgZm9yIGF0b21pYywgc28gdGhhdCBpdCBiYXNpY2FsbHkgcmVs aWVzCj4gPiA+IG9uIGRpc3BsYXkgYmVpbmcgdW5hZmZlY3RlZCBieSBhbnl0aGluZyBidXQgcGVu ZGluZyB3b3JrLgo+ID4gCj4gPiBDdXJyZW50bHkgdGhlIHJlc2V0L2NvbnRpbnVhdGlvbiBpcyBv cmRlcmVkIHdpdGggdGhlIDItcGhhc2UgYXRvbWljX2luYyBvZgo+ID4gdGhlIHJlc2V0IGNvdW50 ZXIsIHdpdGggdGhlIHJlcXVpcmVtZW50IHRoYXQgYW55b25lIHdobyBzZWVzCj4gPiByZXNldF9p bl9wcm9ncmVzcyBoYXVscyBvdXQgb2YgdGhlIGtlcm5lbCBhc2FwLiBUaGF0IG1vc3Qgb2YgZ2Vt IGlzCj4gPiBzZXJpYWxpemVkIHdpdGggc3RydWN0X211dGV4IGlzIGp1c3QgYSBzaWRlLWVmZmVj dCBvZiB0aGUgY3VycmVudCBnZW0KPiA+IGxvY2tpbmcuIFdpdGggdGhlIGN1cnJlbnQgZGVzaWdu IHdlIGNvdWxkIHJld29yayBnZW0gbG9ja2luZyBhbmQgaXQgc2hvdWxkCj4gPiBhbGwgc3RpbGwg d29yaywgd2l0aCB0aGlzIGFwcHJvYWNoIHdlIHByZXR0eSBtdWNoIGNlbWVudCB0aGUgQktMIGxv Y2tpbmcKPiA+IGFwcHJvYWNoIEkgdGhpbmsuCj4gCj4gTm8uIEl0IGRvZXNuJ3QgYWRkIGFueXRo aW5nIG1vcmUgdG8gdGhlIHNjaGVtZS4gQWxsIGl0IGRvZXMgaXMgY2hhbmdlCj4gdGhlIG9yZGVy IGluIHdoaWNoIHRoZSBzZWNvbmQgaW5jcmVtZW50IGlzIGFwcGxpZWQgc28gdGhhdCBhZnRlciB0 aGUKPiBIVy9TVyByZXNldCBoYXBwZW5zIHdlIGNhbiBzdGFydCB1c2luZyBpdCBmcm9tIGluc2lk ZSB0aGUgcmVzZXQgaGFuZGxlcgo+IHRvIHJlaW5pdGlhbGlzZSB0aGUgc3RhdGUuCgpXZWxsIHdl IGNhbiBtYWtlIHRoYXQgd29yaywgYnV0IGl0IHN0aWxsIGZlZWxzIGxpa2UgdHJhZGluZyBjb25z aWRlcmFibGUKYW1vdW50cyBvZiBjb21wbGV4aXR5IHRvIGdldCByaWQgb2YgcmVsb2FkX2luX3Jl c2V0LiBXZWxsIGl0J3Mgbm90IHJlYWxseQphbnkgY29tcGxleGl0eSByaWdodCBub3cgd2l0aCB0 aGUgQktMIHdlIGhhdmUsIGJ1dCBJIGRvbid0IHNlZSB0aGluZ3MgYXMKdGhhdCBzaW1wbGUgd2hl bi9pZiB3ZSBldmVyIHNwbGl0IHRoaW5ncyB1cC4KCj4gPiA+ID4gV2h5IGRvIHdlIG5lZWQgdG8g bW92ZSB0aGF0IGF0b21pY19pbmMgYWdhaW4/Cj4gPiA+IAo+ID4gPiBUaGUgaW5jIGlzIHRvIGFj a25vd2xlZGdlIHRoZSByZXNldCBhbmQgdG8gYWxsb3cgdXMgdG8gYmVnaW4gdXNpbmcgdGhlCj4g PiA+IGRldmljZSBhZ2FpbiAoaW5zaWRlIHRoZSByZXNldCBmdW5jKS4gSXQgaXMgdGhlIGVxdWl2 YWxlbnQgb2YgYWRkaW5nCj4gPiA+IGFub3RoZXIgYml0IGZvciByZWxvYWRfaW5fcmVzZXQuIEkg bW92ZWQgaXQgdG8gdGhlIGJlZ2lubmluZyBmb3IgbXkKPiA+ID4gY29udmVuaWVuY2UuCj4gPiAK PiA+IE9rLCB0aGlzIG5lZWRzIGEgY29kZSBjb21tZW50IEkgdGhpbmsuCj4gPiAKPiA+IEJ1dCBJ IHRob3VnaHQgdGhhdCB0aGUgY3J1Y2lhbCBjaGFuZ2Ugd2FzIHRvIG1vdmUgY2hlY2tfd2VkZ2Ug ZnJvbQo+ID4gcmluZ19iZWdpbiB0byB3YWl0X2Zvcl9zcGFjZSBhbmQgc28gbW92ZSBpdCBvdXQg ZnJvbSBldmVyIGJlaW5nIGhpdCBmcm9tCj4gPiB0aGUgcmVzZXQgY29kZS4KPiAKPiBOby4gVGhh dCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSByZXNldCBjb2RlLCBhcyBieSB0aGUgdGltZSB3 ZSBldmVyCj4gY2FsbCBpbnRlbF9yaW5nX2JlZ2luKCkgaW4gdGhlIHJlY292ZXJ5IGNvZGUsIGFs bCBwcmV2aW91cwo+IHdhaXRzL3JlcXVlc3RzIGFyZSBjb21wbGV0ZWQgaS5lLiAoZXhjbHVkaW5n IGV4ZWNsaXN0cyBidWdzIGFoZW0pIHRoZQo+IHJpbmdzIHNob3VsZCBiZSBlbXB0eS4KPiAKPiA+ ID4gPiA+IEBAIC0xMjAwLDcgKzExOTEsNiBAQCBzdGF0aWMgaW50IF9faTkxNV9zcGluX3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzdGF0ZSkKPiA+ID4gPiA+ ICAvKioKPiA+ID4gPiA+ICAgKiBfX2k5MTVfd2FpdF9yZXF1ZXN0IC0gd2FpdCB1bnRpbCBleGVj dXRpb24gb2YgcmVxdWVzdCBoYXMgZmluaXNoZWQKPiA+ID4gPiA+ICAgKiBAcmVxOiBkdWghCj4g PiA+ID4gPiAtICogQHJlc2V0X2NvdW50ZXI6IHJlc2V0IHNlcXVlbmNlIGFzc29jaWF0ZWQgd2l0 aCB0aGUgZ2l2ZW4gcmVxdWVzdAo+ID4gPiA+ID4gICAqIEBpbnRlcnJ1cHRpYmxlOiBkbyBhbiBp bnRlcnJ1cHRpYmxlIHdhaXQgKG5vcm1hbGx5IHllcykKPiA+ID4gPiA+ICAgKiBAdGltZW91dDog aW4gLSBob3cgbG9uZyB0byB3YWl0IChOVUxMIGZvcmV2ZXIpOyBvdXQgLSBob3cgbXVjaCB0aW1l IHJlbWFpbmluZwo+ID4gPiA+ID4gICAqCj4gPiA+ID4gPiBAQCAtMTIxNSw3ICsxMjA1LDYgQEAg c3RhdGljIGludCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCBpbnQgc3RhdGUpCj4gPiA+ID4gPiAgICogZXJybm8gd2l0aCByZW1haW5pbmcgdGlt ZSBmaWxsZWQgaW4gdGltZW91dCBhcmd1bWVudC4KPiA+ID4gPiA+ICAgKi8KPiA+ID4gPiA+ICBp bnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK PiA+ID4gPiA+IC0JCQl1bnNpZ25lZCByZXNldF9jb3VudGVyLAo+ID4gPiA+ID4gIAkJCWJvb2wg aW50ZXJydXB0aWJsZSwKPiA+ID4gPiA+ICAJCQlzNjQgKnRpbWVvdXQsCj4gPiA+ID4gPiAgCQkJ c3RydWN0IGludGVsX3Jwc19jbGllbnQgKnJwcykKPiA+ID4gPiA+IEBAIC0xMjY0LDEyICsxMjUz LDEyIEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLAo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIAkJLyogV2UgbmVlZCB0byBjaGVjayB3aGV0 aGVyIGFueSBncHUgcmVzZXQgaGFwcGVuZWQgaW4gYmV0d2Vlbgo+ID4gPiA+ID4gIAkJICogdGhl IGNhbGxlciBncmFiYmluZyB0aGUgc2Vxbm8gYW5kIG5vdyAuLi4gKi8KPiA+ID4gPiA+IC0JCWlm IChyZXNldF9jb3VudGVyICE9IGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0 X2NvdW50ZXIpKSB7Cj4gPiA+ID4gPiAtCQkJLyogLi4uIGJ1dCB1cGdyYWRlIHRoZSAtRUFHQUlO IHRvIGFuIC1FSU8gaWYgdGhlIGdwdQo+ID4gPiA+ID4gLQkJCSAqIGlzIHRydWVseSBnb25lLiAq Lwo+ID4gPiA+ID4gLQkJCXJldCA9IGk5MTVfZ2VtX2NoZWNrX3dlZGdlKCZkZXZfcHJpdi0+Z3B1 X2Vycm9yLCBpbnRlcnJ1cHRpYmxlKTsKPiA+ID4gPiA+IC0JCQlpZiAocmV0ID09IDApCj4gPiA+ ID4gPiAtCQkJCXJldCA9IC1FQUdBSU47Cj4gPiA+ID4gPiArCQlpZiAocmVxLT5yZXNldF9jb3Vu dGVyICE9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcikpIHsKPiA+ID4g PiA+ICsJCQkvKiBBcyB3ZSBkbyBub3QgcmVxdWV1ZSB0aGUgcmVxdWVzdCBvdmVyIGEgR1BVIHJl c2V0LAo+ID4gPiA+ID4gKwkJCSAqIGlmIG9uZSBkb2VzIG9jY3VyIHdlIGtub3cgdGhhdCB0aGUg cmVxdWVzdCBpcwo+ID4gPiA+ID4gKwkJCSAqIGVmZmVjdGl2ZWx5IGNvbXBsZXRlLgo+ID4gPiA+ ID4gKwkJCSAqLwo+ID4gPiA+ID4gKwkJCXJldCA9IDA7Cj4gPiA+ID4gPiAgCQkJYnJlYWs7Cj4g PiA+ID4gCj4gPiA+ID4gVGhpcyBub3cgbm8gbG9uZ2VyIGJhaWxzIG91dCBzdHJhaWdodCB3aGVu IGEgcmVzZXQgaXMgaW4gcHJvZ3Jlc3Mgd2l0aAo+ID4gPiA+IC1FQUdBSU4uIEkgZmVhciBmb3Ig dGhlIGRlYWRsb2Nrcy4KPiA+ID4gCj4gPiA+IFlvdSBmZWFyIGluY29ycmVjdGx5IGhlcmUuIEVp dGhlciB3ZSBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXggaW4gd2hpY2ggY2FzZQo+ID4gPiB0aGUgcmVz ZXQgd2FpdHMgYW5kIHdlIGNvbXBsZXRlIG91ciB3b3JrIHdpdGhvdXQgbmVlZGluZyBhbnl0aGlu ZyBlbHNlLAo+ID4gPiBvciB3ZSBtYXkgd2FudCB0byB0YWtlIHRoZSBzdHJ1Y3RfbXV0ZXggdG8g Y29tcGxldGUgb3VyIHdvcmsgYW5kIHNvIG1heQo+ID4gPiBlbmQgdXAgd2FpdGluZyBmb3IgdGhl IHJlc2V0IHRvIGNvbXBsZXRlLiBFaXRoZXIgd2F5IHRoZSBzdGF0ZSBvZiB0aGlzCj4gPiA+IHJl cXVlc3QgaXMgdGhlIHNhbWUgYXMgdG8gd2hlbiB0aGUgR1BVIHJlc2V0IGFjdHVhbGx5IG9jY3Vy cy4gVGhlcmUgaXMKPiA+ID4gYW4gaW5jb25zaXN0ZW5jeSB0aGF0IHdlIGRvbid0IG1hcmsgaXQg YXMgY29tcGxldGUgdGhvdWdoLCBzbyB3ZSB3b3VsZAo+ID4gPiBtYXkgdHJ5IGFuZCB3YWl0IG9u IGl0IGFnYWluIChvbmx5IHRvIGZpbmQgdGhhdCB0aGUgcmVzZXQgaXMgaW4KPiA+ID4gcHJvZ3Jl c3MgYW5kIGJhaWwgb3V0IGFnYWluKS4KPiA+IAo+ID4gV2Ugb25seSBiYWlsIG9uY2UgcGVyIHJl c2V0IHNpbmNlIHdlIHdhaXQgZm9yIHJlc2V0cyB0byBjb21wbGV0ZSBiZWZvcmUKPiA+IGFjcXVp cmluZyBkZXYtPnN0cnVjdF9tdXRleC4gT24gdGhlIG1vZGVzZXQgc2lkZSB3ZSB1bmZvcnR1bmF0 ZWx5IGNhbid0IGRvCj4gPiB0aGF0IHNpbmNlIHRoYXQgY29kZSBpcyBpbiB0aGUgZHJtIGNvcmUu Cj4gPiAKPiA+ID4gVGhlIGlzc3VlIGlzIG5vdCBhIHBvdGVudGlhbCBkZWFkbG9jayAoYmVjYXVz ZSB0aGF0IHdvdWxkIGJlIGFuIGFscmVhZHkKPiA+ID4gZXhpc3RpbmcgQUJCQSBpbiB0aGUgY29k ZSkgYnV0IHJlc291cmNlcyB0aGF0IGNhbiBiZSBkZXBsZXRlZCBieQo+ID4gPiByZXF1ZXN0cy4K PiA+IAo+ID4gQmVzaWRlcyBkZWFkbG9ja3MgbXkgb3RoZXIgY29uY2VybiBpcyB0aGF0IHlvdSBl bmNvZGUgcmVzZXQgYmVoYXZpb3VyCj4gPiBvdXRzaWRlIG9mIHRoZSByZXNldCBjb2RlIGhlcmUu IElmIHdlIHVuY29uZGl0aW9uYWxseSBFQUdBSU4gaGVyZSwgdGhlbgo+ID4gZXZlcnlvbmUgd2ls bCBwaWNrIHVwIHdoYXRldmVyIGtpbmQgb2YgZml4dXAgdGhlIHJlc2V0IGNvZGUgYXBwbGllZC4g V2hpY2gKPiA+IG1lYW5zIHJlcXVldWVpbmcgb2YgcmVxdWVzdHMgaXMgY29udGFpbmVkIHRvIHRo ZSByZXNldCBsb2dpYy4gQnV0IGlmIHdlCj4gPiBzdG9wIGRvaW5nIHRoZSB1bmNvbmRpdGlvbmFs IEVBR0FJTiB0aGVuIHdlIGhhdmUgdG8gZml4IHVwIHRoaW5ncyBoZXJlCj4gPiB0b28uCj4gPiAK PiA+IE9uIHRoZSBmbGlwIHNpZGUgSSBkb24ndCBzZWUgd2hhdCdzIGVhc2llciBieSByZXR1cm5p bmcgMCBoZXJlIGluc3RlYWQgb2YKPiA+IEVBR0FJTj8KPiAKPiBNeSBmdW5kYW1lbnRhbCBhcmd1 bWVudCBmb3IgdGhlIGxhc3QgNSB5ZWFycyBpcyB0aGF0IHJlc2V0cyBjb21wbGV0ZQo+IHJlcXVl c3RzLCBpLmUuIGk5MTVfd2FpdF9zZXFuby9pOTE1X3dhaXRfcmVxdWVzdCBzaG91bGQgcmVwb3J0 IDAgYXMgdGhlCj4gb2JqZWN0IGlzIG5vIGxvbmdlciBhY3RpdmUgYnkgdGhlIEdQVS4gT25seSBp biBzcGVjaWFsIGNpcmN1bXN0YW5jZXMgZG8KPiB3ZSBhY3R1YWxseSBjYXJlIHRoYXQgYSByZXNl dCBoYXBwZW5lZCAoQUJJKSwgYW5kIHJhdGhlciB0aGFuIGVuY29kZQo+IHRoYXQgbG9naWMgaW5z aWRlIHRoZSBjb3JlLCB0aGF0IGlzIGJldHRlciBleHByZXNzZWQgYXMgZXhjZXB0aW9ucyBpbgo+ IHRoZSBjYWxsZXIuCj4gCj4gZS5nLiBzZXQtdG8tZG9tYWluIHdvcmtzIGNvcnJlY3RseSBldmVu IGlmIHRoZSBsYXN0IHJlcXVlc3Qgb24gdGhlCj4gb2JqZWN0IGVuZGVkIGluIGEgaGFuZyAoYW5k IGZyb20gdGhhdCB3ZSBjYW4gZGVkdWNlIHRoYXQgYSB2ZXJ5IGxhcmdlCj4gcHJvcG9ydGlvbiBv ZiB0aGUgQVBJIGlzIGFsc28gY29ycmVjdC4pCj4gCj4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgYnkg Y29tcGxldGluZyB0aGUgcmVxdWVzdHMgZm9sbG93aW5nIGEgaGFuZywgd2UKPiBtYWtlIHRoZSBr ZXJuZWwgYW5kIHVzZXJzcGFjZSBtdWNoIG1vcmUgZmF1bHQgdG9sZXJhbnQuCgpVc2Vyc3BhY2Ug bXVzdCByZXN0YXJ0IHdoZW4gd2UgcmV0dXJuIC1FQUdBSU4uIFRoYXQncyBhbHNvIEFCSS4gV2hp Y2gKbWVhbnMgeWVzIGl0IHdpbGwgb25seSBldmVyIHNlZSAwIGhlcmUuCgpXaGF0IHdlIGNhbiBk byBpcyBkcm9wIHRoZSBjaGVja193ZWRnZSBvdXQgb2Ygd2FpdF9yZXF1ZXN0LCBzaW5jZSB0aGF0 CnNob3VsZCBtYWtlIGEgcGlsZSBvZiB0aGluZ3MgbW9yZSByb2J1c3QuIEJ1dCBpbW8gdGhlIC1F QUdBSU4gcmVhbGx5IG5lZWRzCnRvIHN0YXkuIEl0IGRvZXNuJ3QgaHVydCwgdXNlcnNwYWNlIG5l dmVyIHNlZXMgaXQsIGFuZCB3ZSBrZWVwCmVuY2Fwc3VsYXRpb24gb2YgaG93IGV4YWN0bHkgc3cv aHcgcmVzZXQgaXMgZG9uZSBjb250YWluZWQgaW4gdGhlIHJlc2V0Cndvcmtlci4KCkknbGwgcmVz cGluIGFuZCByZXRlc3QgbXkgZ2VtX2VpbyBwYXRjaCB3aXRoIHJlbW92aW5nIGNoZWNrX3dlZGdl IGZyb20Kd2FpdF9yZXF1ZXN0LCBidXQga2VlcGluZyB0aGUgLUVBR0FJTi4KCj4gPiA+ID4gPiBA QCAtMjI1Miw2ICsyMjUwLDE0IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBieXRlcykKPiA+ID4gPiA+ICAJaWYgKHJldCkK PiA+ID4gPiA+ICAJCXJldHVybiByZXQ7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiArCS8qIElmIHRo ZSByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgZHVlIHRvIGEgR1BVIGhhbmcsIHdlIHdhbnQgdG8KPiA+ ID4gPiA+ICsJICogZXJyb3Igb3V0IGJlZm9yZSB3ZSBjb250aW51ZSB0byBlbWl0IG1vcmUgY29t bWFuZHMgdG8gdGhlIEdQVS4KPiA+ID4gPiA+ICsJICovCj4gPiA+ID4gPiArCXJldCA9IGk5MTVf Z2VtX2NoZWNrX3dlZGdlKGk5MTVfcmVzZXRfY291bnRlcigmdG9faTkxNShlbmdpbmUtPmRldikt PmdwdV9lcnJvciksCj4gPiA+ID4gPiArCQkJCSAgIHRvX2k5MTUoZW5naW5lLT5kZXYpLT5tbS5p bnRlcnJ1cHRpYmxlKTsKPiA+ID4gPiA+ICsJaWYgKHJldCkKPiA+ID4gPiA+ICsJCXJldHVybiBy ZXQ7Cj4gPiA+ID4gCj4gPiA+ID4gRG9uJ3Qgd2Ugc3RpbGwgaGF2ZSB0aGUgcHJvYmxlbSB3aXRo IC1FSU8gbm93IGhlcmUsIGp1c3QgbGVzcyBsaWtlbHkgdGhhbgo+ID4gPiA+IGZyb20gaW50ZWxf cmluZ19iZWdpbj8KPiA+ID4gCj4gPiA+IFdoYXQncyB0aGUgcHJvYmxlbT8gaW50ZWxfcmluZ19i ZWdpbigpIGlzIHN1cHBvc2VkIHRvIHJldHVybgo+ID4gPiAtRUlPLy1FQUdBSU4uCj4gPiAKPiA+ IEhtLCBJIHRob3VnaHQgdGhlIGVudGlyZSBwcm9ibGVtIHdhcyB0aGF0IHJpbmdfYmVnaW4gY2Fu IHJldHVybiAtRUlPLAo+ID4gc2luY2UgdGhhdCdzIGhvdyBtZXNhIHVzdWFsbHkgZGllcy4gQnV0 IHdpdGggeW91ciBtYWlsIHlvdXIgc2F5aW5nIHRoYXQgd2UKPiA+IGFjY2lkZW50YWxseSB3ZWRn ZSB0aGUgZ3B1LCBhbmQgdGhhdCdzIHRoZSBwYXJ0IEkgZG9uJ3QgdW5kZXJzdGFuZCB5ZXQuCj4g Cj4gTmFoLCBtZXNhIGRpZXMgYWxsIHRoZSB0aW1lIGZyb20gdW5jaGVja2VkIGVycm9ycyBlbHNl d2hlcmUuIEl0IGp1c3QKPiBjYWxscyBmcHJpbnRmL2V4aXQgb24gaW50ZWxfZG9fZmx1c2hfbG9j a2VkKCksIHNvIHRoYXQgaXMgdGhlIHZpc2libGUgb25lLgo+IEJ5IHRoZSB3YXksIGhvdyBhcmUg eW91IGdldHRpbmcgb24gcmV2aWV3aW5nIG15IG1lc2EgcGF0Y2hlcyB0byBmaXggdGhhdD8KCkht LCBJIGhvcGVkIG1lc2EgZm9sa3Mgd291bGQgZG8gdGhhdCA7LSkKLURhbmllbAotLSAKRGFuaWVs IFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK