From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH 1/2] drm/edid: Add helper to detect whether EDID changed Date: Wed, 26 Jul 2017 18:09:38 +0300 Message-ID: <1501081778.13950.4.camel@linux.intel.com> References: <20170724145447.23449-1-paul.kocialkowski@linux.intel.com> <20170725065328.fhe75lpunqn7vcqv@phenom.ffwll.local> <1500967544.1277.1.camel@linux.intel.com> <1500969535.1277.3.camel@linux.intel.com> <20170725081652.j43grc7oeyitr4tl@phenom.ffwll.local> <1500985084.1277.7.camel@linux.intel.com> <20170725155013.43mtpbpbpq26ywsh@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170725155013.43mtpbpbpq26ywsh@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , intel-gfx , Linux Kernel Mailing List , dri-devel List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE3LTA3LTI1IGF0IDE3OjUwICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIFR1ZSwgSnVsIDI1LCAyMDE3IGF0IDAzOjE4OjA0UE0gKzAzMDAsIFBhdWwgS29jaWFsa293 c2tpIHdyb3RlOgo+ID4gT24gVHVlLCAyMDE3LTA3LTI1IGF0IDEwOjE2ICswMjAwLCBEYW5pZWwg VmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUdWUsIEp1bCAyNSwgMjAxNyBhdCAxMDo1ODo1NUFNICsw MzAwLCBQYXVsIEtvY2lhbGtvd3NraSB3cm90ZToKPiA+ID4gPiBPbiBUdWUsIDIwMTctMDctMjUg YXQgMDk6MzQgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gPiBPbiBUdWUsIEp1 bCAyNSwgMjAxNyBhdCA5OjI1IEFNLCBQYXVsIEtvY2lhbGtvd3NraQo+ID4gPiA+ID4gPHBhdWwu a29jaWFsa293c2tpQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIFR1ZSwg MjAxNy0wNy0yNSBhdCAwODo1MyArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+ ID4gPiBPbiBNb24sIEp1bCAyNCwgMjAxNyBhdCAwNTo1NDo0NlBNICswMzAwLCBQYXVsCj4gPiA+ ID4gPiA+ID4gS29jaWFsa293c2tpCj4gPiA+ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4g PiBUaGlzIGFkZHMgYSBjb21tb24gZHJtIGhlbHBlciB0byBkZXRlY3Qgd2hldGhlciB0aGUgRURJ RAo+ID4gPiA+ID4gPiA+ID4gY2hhbmdlZAo+ID4gPiA+ID4gPiA+ID4gZnJvbQo+ID4gPiA+ID4g PiA+ID4gdGhlIGxhc3Qga25vd24gY2FjaGVkIG9uZS4gVGhpcyBpcyB1c2VmdWwgaGVscCBkZXRl Y3QKPiA+ID4gPiA+ID4gPiA+IHRoYXQgYQo+ID4gPiA+ID4gPiA+ID4gbW9uaXRvcgo+ID4gPiA+ ID4gPiA+ID4gd2FzCj4gPiA+ID4gPiA+ID4gPiBjaGFuZ2VkIGR1cmluZyBhIHN1c3BlbmQvcmVz dW1lIGN5Y2xlLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBXaGVuIHRoYXQgaGFw cGVucyAoYSBtb25pdG9yIGlzIHJlcGxhY2VkIGJ5IGFub3RoZXIgb25lCj4gPiA+ID4gPiA+ID4g PiBkdXJpbmcKPiA+ID4gPiA+ID4gPiA+IHN1c3BlbmQpLAo+ID4gPiA+ID4gPiA+ID4gbm8gaG90 cGx1ZyBldmVudCB3aWxsIGJlIHRyaWdnZXJlZCBzbyB0aGUgY2hhbmdlIHdpbGwKPiA+ID4gPiA+ ID4gPiA+IG5vdCBiZQo+ID4gPiA+ID4gPiA+ID4gY2F1Z2h0Cj4gPiA+ID4gPiA+ID4gPiBhdAo+ ID4gPiA+ID4gPiA+ID4gcmVzdW1lIHRpbWUuIERldGVjdGluZyB0aGF0IHRoZSBFRElEIGNoYW5n ZWQgYWxsb3dzCj4gPiA+ID4gPiA+ID4gPiBkZXRlY3RpbmcKPiA+ID4gPiA+ID4gPiA+IGl0Lgo+ ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lh bGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludQo+ID4gPiA+ID4gPiA+ID4geC5pbgo+ID4g PiA+ID4gPiA+ID4gdGVsLgo+ID4gPiA+ID4gPiA+ID4gY29tPgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IEkgY2FuJ3QgZmluZCB0aGUgb2xkZXIgbWFpbHMgSSd2ZSB0eXBlZCBhYm91dCB0 aGlzLCBidXQKPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiBwbGFuCj4gPiA+ID4gPiA+ ID4gd2UndmUKPiA+ID4gPiA+ID4gPiBkaXNjdXNzZWQgYSB3aGlsZSBiYWNrIHdhczoKPiA+ID4g PiA+ID4gPiAtIEFkZCBhIGdlbmVyYXRpb25hbCBjb3VudGVyIHRvIGVhY2ggY29ubmVjdG9yLCBt YXliZSBldmVuCj4gPiA+ID4gPiA+ID4gZXhwb3NlCj4gPiA+ID4gPiA+ID4gaXQKPiA+ID4gPiA+ ID4gPiB0bwo+ID4gPiA+ID4gPiA+ICAgdXNlcnNwYWNlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+IC0gSW5jcmVtZW50IHRoYXQgY291bnRlciBldmVyeSB0aW1lIHNvbWV0aGluZyBjaGFu Z2VkLAo+ID4gPiA+ID4gPiA+IGUuZy4KPiA+ID4gPiA+ID4gPiAgIGNvbm5lY3Rvci0+c3RhdHVz IGluIHRoZSBwcm9wYmUgaGVscGVycywgb3Igd2hlbgo+ID4gPiA+ID4gPiA+IGF0dGFjaGluZyBh Cj4gPiA+ID4gPiA+ID4gbmV3Cj4gPiA+ID4gPiA+ID4gZWRpZAo+ID4gPiA+ID4gPiA+ICAgd2l0 aCB0aGUgc2V0X2VkaWQgaGVscGVyLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IC0gVGFk YSwgbm8gY2hhbmdlcyBuZWVkZWQgdG8gZHJpdmVycywgYW5kIGVhc2lseQo+ID4gPiA+ID4gPiA+ IGV4dGVuc2libGUgdG8KPiA+ID4gPiA+ID4gPiBvdGhlcgo+ID4gPiA+ID4gPiA+ICAgdGhpbmdz IHRoYW4gZWRpZCEKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgZG9uJ3Qgc2VlIGhvdyBpdCBz b2x2ZXMgdGhlIHByb2JsZW0gaGVyZSB0aG91Z2guIEFmdGVyIGEKPiA+ID4gPiA+ID4gc3VzcGVu ZC9yZXN1bWUgY3ljbGUsIHRoZXJlIGlzIHNpbXBseSBubyBpbmRpY2F0aW9uIHRoYXQKPiA+ID4g PiA+ID4gYW55dGhpbmcKPiA+ID4gPiA+ID4gaGFzCj4gPiA+ID4gPiA+IGNoYW5nZWQgd2hlbiBh IG1vbml0b3Igd2FzIHJlcGxhY2VkIGJ5IGFub3RoZXIgb25lLCBzbyBJCj4gPiA+ID4gPiA+IGRv bid0Cj4gPiA+ID4gPiA+IHNlZQo+ID4gPiA+ID4gPiBob3cKPiA+ID4gPiA+ID4gYWRkaW5nIGEg Y291bnRlciBpbiB0aGUgbWl4IHdvdWxkIGhlbHAuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBD b3VsZCB5b3UgcHJvdmlkZSBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHJlYXNvbmluZz8gSSBmZWVs Cj4gPiA+ID4gPiA+IGxpa2UKPiA+ID4gPiA+ID4gSSdtCj4gPiA+ID4gPiA+IG1pc3Npbmcgc29t ZXRoaW5nIGhlcmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFlvdXIgYnVnIGRvZXNuJ3QganVzdCBl eGlzdCBvdmVyIHMvciwgaXQncyBqdXN0IG11Y2ggZWFzaWVyIHRvCj4gPiA+ID4gPiBvYnNlcnZl Cj4gPiA+ID4gPiBpbiBzL3Igc2luY2UgdXNlcnMgY2FuIHRha2UgaG93ZXZlciBsb25nIHRoZXkg d2FudCB0byB3aXRoCj4gPiA+ID4gPiBwbHVnZ2luZyBpbgo+ID4gPiA+ID4gYSBkaWZmZXJlbnQg bW9uaXRvci4gQnV0IHRoZSBzYW1lIGlzc3VlIGV4aXN0cyBlLmcuIHdoZW4gd2UgZ28KPiA+ID4g PiA+IGZyb20KPiA+ID4gPiA+IGhwZCB0byBwb2xsaW5nIGJlY2F1c2UgdG9vIG11Y2ggbm9pc2Ug b24gdGhlIGxpbmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFdydCB0aGUgc3VzcGVuZC9yZXN1bWUg aXNzdWU6IFdoYXQgd2UgbmVlZCB0byBkbyBvbiByZXN1bWUgaXMKPiA+ID4gPiA+IGRvIGEKPiA+ ID4gPiA+IGZ1bGwgcmVwcm9iZSBvZiBhbGwgb3V0cHV0cywgaW4gYW4gYXN5bmMgd29ya2VyLiBU ZWxsaW5nCj4gPiA+ID4gPiB1c2Vyc3BhY2UKPiA+ID4gPiA+IHRvCj4gPiA+ID4gPiBkbyB0aGlz IGJ5IHNlbmRpbmcgYW4gdWV2ZW50IHdhcyB0aGUgY2hlYXBlc3Qgd2F5LCBidXQgaXQnZCBiZQo+ ID4gPiA+ID4gYmV0dGVyCj4gPiA+ID4gPiBpZiB0aGUga2VybmVsIGNvdWxkIGRvIHRoYXQgYXN5 bmNocm9ub3VzbHkgYW5kIGluZm9ybQo+ID4gPiA+ID4gdXNlcnNwYWNlCj4gPiA+ID4gPiBhYm91 dAo+ID4gPiA+ID4gdGhlIGV4YWN0IGNoYW5nZXMuIEFuZCB0aGVyZSdzIG1vcmUgdG8gcmVwcm9i ZSB0aGFuIGp1c3QgdGhlCj4gPiA+ID4gPiBlZGlkLAo+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiB3 ZSBkb24ndCB3YW50IHRvIHJlLWludmVudCBhIHNlcGFyYXRlIHJlcHJvYmUgcGF0aCBqdXN0IGZv cgo+ID4gPiA+ID4gcmVzdW1lCj4gPiA+ID4gPiBsaWtlIHlvdSBzdGFydCBpbiB5b3VyIHBhdGNo IHNlcmllcy4gU28geWVhaCBteSBwbGFuIHdhcwo+ID4gPiA+ID4gbWlzc2luZzoKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gLSBmb3JjZSBhIGZ1bGwgYXN5bmMgcmVwcm9iZSBhZnRlciByZXN1bWUgKG1h eWJlIHdlIGNvdWxkCj4gPiA+ID4gPiByZXVzZQo+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiBwb2xs IHdvcmtlciBmb3IgdGhhdCBhcyBhIG9uZS1zaG90KS4KPiA+ID4gPiAKPiA+ID4gPiBGaXJzdCBv ZmYsIEkgZGVmaW5pdGVseSBhZ3JlZSB3ZSBuZWVkIGEgd2F5IHRvIHRlbGwgdXNlcnNwYWNlCj4g PiA+ID4gZXhhY3RseQo+ID4gPiA+IHdoYXQgaGFzIGhhcHBlbmVkLiBJIHdhbnRlZCB0byBzdGFy dCBhIGRpc2N1c3Npb24gYWJvdXQgdGhhdCBpbgo+ID4gPiA+IGktZy0KPiA+ID4gPiB0Cj4gPiA+ ID4gcGF0Y2ggIlVucmVsYXRlZCBob3RwbHVnIHVldmVudCBtYXNraW5nIG91dCBhY3R1YWwgdGVz dCByZXN1bHQiCj4gPiA+ID4gYnV0Cj4gPiA+ID4gaXQKPiA+ID4gPiBkaWRuJ3QgZ2V0IG11Y2gg dHJhY3Rpb24uIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBpdCBpcwo+ID4gPiA+IHVuYWNjZXB0YWJs ZQo+ID4gPiA+IHRoYXQKPiA+ID4gPiB1c2Vyc3BhY2Ugb25seSBnZXRzIG5vdGlmaWVkIHRoYXQg InNvbWV0aGluZyBoYXBwZW5lZCIuCj4gPiA+ID4gCj4gPiA+ID4gU3RpbGwsIGFzIGZhciBhcyBJ IGtub3csIHVzZXJzcGFjZSBpcyBleHBlY3RlZCB0byBhc2sgZm9yIGEgZnVsbAo+ID4gPiA+IHJl cHJvYmUKPiA+ID4gPiB3aGVuIHNvbWV0aGluZyBoYXMgY2hhbmdlZCwgYW5kIHRoYXQgaXMgYXBw YXJlbnRseSBwYXJ0IG9mIHRoZQo+ID4gPiA+IERSTQo+ID4gPiA+IHNwZWMsCj4gPiA+ID4gc28g d2UgY2FuJ3QgZXhwZWN0IHRoYXQgaXQgY291bGQgcXVlcnkgZm9yIGFuIHVwZGF0ZSBvbiAib25s eQo+ID4gPiA+IHRoZQo+ID4gPiA+IHRoaW5ncwo+ID4gPiA+IHRoYXQgY2hhbmdlZCIuCj4gPiA+ IAo+ID4gPiBXZSBjYW4gdXBkYXRlIHRoYXQgc3BlYyBpbiBhIGJhY2t3YXJkcyBjb21wYXRpYmxl IHdheS4gRS5nLiB3ZSBjYW4KPiA+ID4gYXNrCj4gPiA+IGZvcgo+ID4gPiB0aGUgY3VycmVudCBw cm9wZXJ0aWVzIHdpdGhvdXQgZm9yY2luZyBhIHJlcHJvYmUgKHdvbid0IGV2ZW4gY2FsbAo+ID4g PiBkb3duCj4gPiA+IGludG8gdGhlIGRyaXZlciksIGFuZCB1c2Vyc3BhY2UgY291bGQgdXNlIHRo YXQgdG8gY2hlY2sgd2hpY2gKPiA+ID4gY29ubmVjdG9yCj4gPiA+IGhhcyBhbiBpbmNyZW1lbnRl ZCBlcG9jaGUgY291bnRlciBzaW5jZSB0aGUgbGFzdCB0aW1lIGl0IHNhbXBsZWQKPiA+ID4gdGhp bmdzLgo+ID4gPiBUaGVuIGl0IGNhbiByZXByb2JlIGp1c3QgdGhhdCBvbmUuCj4gPiA+IAo+ID4g PiBPbGQgdXNlcnNwYWNlIHdvdWxkbid0IGtub3cgYWJvdXQgdGhpcywgYW5kIHdvdWxkIGtlZXAg d29ya2luZyBhcy0KPiA+ID4gaXMuCj4gPiAKPiA+IFNvIHRoZSBsZXZlbCBvZiBkZXRhaWwgeW91 J3JlIGFpbWluZyBhdCBwcm92aWRpbmcgdXNlcnNwYWNlIGlzCj4gPiAiY29ubmVjdG9yIGZvbyBj aGFuZ2VkIiB0aGVuPyBJIGFncmVlIGl0IGlzIGJldHRlciB0aGFuIHRoZSBjdXJyZW50Cj4gPiAi c29tZSBjb25uZWN0b3IocykgY2hhbmdlZCIsIGJ1dCB3aGF0IEknZCBsaWtlIHRvIHNlZSBmb3Ig cHJvcGVyCj4gPiB0ZXN0aW5nCj4gPiBpcyBhIHdheSB0byBmaW5kIG91dCAiYmFyIGZvciBjb25u ZWN0b3IgZm9vIGNoYW5nZWQiLgo+IAo+IElmIHlvdSB3YW50IHRhaHQgbGV2ZWwgb2YgZGV0YWls IHlvdSBuZWVkIGludHJvc3BlY3Rpb24gaW4gYSBpbi1rZXJuZWwKPiBzZWxmdGVzdCBJIHRoaW5r LiBXZSdkIG5lZWQgdG8gcmF0aGVyIG1hc3NpdmVseSBjaGFuZ2UvZXh0ZW5kIHRoZSB1YXBpCj4g dG8KPiBzdXBwb3J0IHRoYXQgbGV2ZWwgb2YgdGVzdGluZyB0aHJvdWdoIHRoZSB1YXBpLCBhbmQg dGh1cyBmYXIgbm8gb25lCj4gZWxzZQo+IGlzIGFza2luZyBmb3IgaXQgd2l0aCBhIHJlYWwgdXNl LWNhc2UuCgpJJ20gZnJhbmtseSBzdXJwcmlzZWQgdGhhdCBubyBvbmUgaGFzIGNvbXBsYWluZWQg YWJvdXQgdGhpcyB5ZXQhCgpUaGUgY3VycmVudCBsZXZlbCBvZiAobGFjayBvZikgZGV0YWlsIGFi b3V0IHdoYXQgaXMgaGFwcGVuaW5nIHdoZW4gYQpob3RwbHVnIGV2ZW50IGlzIHRyaWdnZXJlZCBt YWtlcyB0ZXN0aW5nIGZvciB2YXJpb3VzIHRoaW5ncyByZWFsbHkgaGFyZC4KQnV0IEkgc3VwcG9z ZSBpdCBtYWtlcyBzZW5zZSB3aXRoIHRoZSAicmVwcm9iZSBldmVyeXRoaW5nIGFsbCB0aGUgdGlt ZSIKYXBwcm9hY2ggOykKCkZvciBpbnN0YW5jZSwgaXQgd291bGRuJ3QgaHVydCB0byBhZGQgYSBS RUFTT049Zm9vIGZpZWxkIHRvIHRoZSB1ZXZlbnQsCmluIGFkZGl0aW9uIHRvIEhPVFBMVUc9MSwg d2hpY2ggd291bGQgbW9zdCBjZXJ0YWlubHkgbWFpbnRhaW4KY29tcGF0aWJpbGl0eSB3aXRoIGN1 cnJlbnQgdXNlcnNwYWNlLiBJJ20gbm90IHN1cmUgdGhhdCB3b3VsZCB3b3JrIG91dAp0b28gd2Vs bCBpZiB1ZXZlbnRzIGFyZSB0byBiZSBzdGFja2VkIHRvZ2V0aGVyIHRob3VnaC4KCj4gPiA+ID4g SG93ZXZlciwgb25lIHdheSB0byBtaXRpZ2F0ZSB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZQo+ID4gPiA+IGRyaXZlcgo+ID4gPiA+IGtub3dzCj4gPiA+ID4gd2hhdCBjaGFuZ2VkIGFuZCBv bmx5IHVwZGF0ZXMgdGhlc2UgdGhpbmdzIHdoZW4gYSBmdWxsIHJlcHJvYmUKPiA+ID4gPiBpcwo+ ID4gPiA+IHJlcXVlc3RlZC4gSXMgdGhpcyB0aGUgYXBwcm9hY2ggdGhhdCB5b3UgaGF2ZSBpbiBt aW5kPwo+ID4gPiA+IAo+ID4gPiA+IFRoZSBtZXRob2RvbG9neSBiZWhpbmQgbXkgc2VyaWVzIGZv bGxvd3Mgd2hhdCBpcyBjdXJyZW50bHkgZG9uZToKPiA+ID4gPiBkZXRlY3QKPiA+ID4gPiBjaGFu Z2UgaW4gd2hhdGV2ZXIgd2F5IG5lY2Vzc2FyeSwgaW5mb3JtIHVzZXJzcGFjZSBhbmQgbGV0IGl0 Cj4gPiA+ID4gdHJpZ2dlcgo+ID4gPiA+IGZ1bGwgcmVwcm9iZS4gSWYgSSdtIHVuZGVyc3RhbmRp bmcgY29ycmVjdGx5LCB3aGF0IHlvdSdyZQo+ID4gPiA+IHN1Z2dlc3RpbmcKPiA+ID4gPiBpcwo+ ID4gPiA+IGluc3RlYWQgdG8gcmVwcm9iZSB3aGF0IGlzIG5lZWRlZCBvbiB0aGUga2VybmVsIHNp ZGUgd2hlbiBhbgo+ID4gPiA+IGFzc29jaWF0ZWQKPiA+ID4gPiBjaGFuZ2Ugb2NjdXJzIGluc3Rl YWQgb2YgaGF2aW5nIHVzZXJzcGFjZSB0cmlnZ2VyIGl0LCBhbmQgdGhlbgo+ID4gPiA+IGxldAo+ ID4gPiA+IHVzZXJzcGFjZSBhd2FyZSB0aGF0IHNvbWV0aGluZyBjaGFuZ2VkIGFuZCByZXR1cm4g dGhlICJjYWNoZWQiCj4gPiA+ID4gdXBkYXRlZAo+ID4gPiA+IHN0YXR1cyB3aGVuIHVzZXJzcGFj ZSBhc2tzIGZvciB0aGUgc3Vic2VxdWVudCByZXByb2JlLiBJcyB0aGF0Cj4gPiA+ID4gY29ycmVj dD8KPiA+ID4gCj4gPiA+IFRoZXJlJ3MgdHdvIHRoaW5nczogdGhlIHVhcGkgZGlzY3Vzc2lvbiBh bmQgdGhlIGludGVybmFsCj4gPiA+IGltcGxlbWVudGF0aW9uLAo+ID4gPiBpbW8gdGhlaXIgc2Vw YXJhdGUgKGJ1dCBzb21ld2hhdCBjb25uZWN0ZWQpIHRvcGljcy4KPiA+ID4gCj4gPiA+IC0gRm9y IHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBkZXRlY3RpbmcgZWRpZCBjaGFuZ2VzIEkK PiA+ID4gZG9uJ3QKPiA+ID4gbGlrZQo+ID4gPiAgIHlvdXIgYXBwcm9hY2ggb2Ygcm9sbGluZyBh IGNvbXBsZXRlbHkgbmV3IGRldGVjdCBwYXRoIGp1c3QgZm9yCj4gPiA+IHJlc3VtZS4KPiA+ID4g ICBJIHRoaW5rIHdlIGNhbiB2ZXJ5IHdlbGwgaW50ZWdyYXRlIHRoYXQgaW50byB0aGUgZXhpc3Rp bmcgcHJvYmUKPiA+ID4gY29kZQo+ID4gPiAgIHVzaW5nIHRoZSBhcHByb2FjaCBJJ3ZlIGxhaWQg b3V0Lgo+ID4gPiAKPiA+ID4gLSBUaGVyZSdzIG1vcmUgdGhhbiBqdXN0IGVkaWQgKGUuZy4gaGRj cCBzdGF0dXMsIHZhcmlvdXMgc3R1ZmYKPiA+ID4gdGhhdCdzCj4gPiA+ICAgaGFuZGxlZCBpbiBk cCBhdXggZm9yIERQIHNpbmtzKSwgYW5kIEkgdGhpbmsgYSBnZW5lcmFsIG1lY2hhbmlzbQo+ID4g PiBmb3IKPiA+ID4gICB0cmFja2luZyB0aGF0IHNvbWV0aGluZyBjaGFuZ2VkIHdpbGwgYmUgdXNl ZnVsIGZvciB0aGUgaW50ZXJuYWwKPiA+ID4gICBpbXBsZW1lbnRhdGlvbi4gVGhlIG90aGVyIHBs YW4gd291bGQgYmUgdGhhdCB3ZSBoYXZlIHRvIHdpcmUgYQo+ID4gPiBib29sCj4gPiA+ICAgY2hh bmdlZCB0aHJvdWdoIHRoZSBlbnRpcmUgcHJvYmUgc3RhY2ssIGFuZCBtYWtlIHN1cmUgaXQncwo+ ID4gPiBoYW5kbGVkCj4gPiA+ICAgY29ycmVjdGx5IGV2ZXJ5d2hlcmUsIHdoaWNoIGlzIGEpIGEg bG90IG1vcmUgd29yayBiKSBtb3JlCj4gPiA+IGZyYWdpbGUuCj4gPiA+IERvaW5nCj4gPiA+ICAg YSBjb25uZWN0b3ItPnN0YXR1c19lcG9jaCsrIGV2ZXJ5d2hlcmUgd2UgZGV0ZWN0IGEgY2hhbmdl IGlzCj4gPiA+IF9tdWNoXwo+ID4gPiAgIHNpbXBsZXIuCj4gPiAKPiA+IFNvIHRvIHN1bW1hcml6 ZSwgdGhlIGZvbGxvd2luZyB3b3VsZCBoYXBwZW46IGFuIGFzeW5jIHdvcmtlciB3b3VsZAo+ID4g ZGV0ZWN0IHdoZXRoZXIgc29tZXRoaW5nIGNoYW5nZWQsIHRoZW4gaW5jcmVhc2UgdGhlIGNvdW50 ZXIgZm9yIHRoYXQKPiA+IGNvbm5lY3RvciBhbmQgbm90aWZ5IHVzZXJzcGFjZSwgd2hpY2ggd291 bGQgdHJpZ2dlciBmdWxsIHJlcHJvYmUgb2YKPiA+IHRoYXQKPiA+IGNvbm5lY3RvciBvbmx5LiBM ZWdhY3kgdXNlcnNwYWNlIHdvdWxkIGp1c3QgdHJpZ2dlciBmdWxsIHJlcHJvYmUgZm9yCj4gPiBh bGwKPiA+IGNvbm5lY3RvcnMuCj4gPiAKPiA+IEkgYW0gc3RpbGwgdW5kZXIgdGhlIGltcHJlc3Np b24gdGhhdCB5b3UnZCBsaWtlIHRoZSBmdWxsIHJlcHJvYmUgdG8KPiA+IGJlCj4gPiBkb25lIG9u IHRoZSBrZXJuZWwncyBhc3luYyB3b3JrZXIsIHRvIGRldGVjdCB0aGF0IGUuZy4gRURJRCBjaGFu Z2VkLgo+ID4gQnV0Cj4gPiB0aGVuIHVzZXJzcGFjZSBpcyBnb2luZyB0byBmdWxseSByZXByb2Jl IGFnYWluLCBzbyBpdCB3aWxsIGJlCj4gPiBkdXBsaWNhdGVkLiBVbmxlc3MgdGhlIGtlcm5lbCBh bHNvIGtlZXBzIGEgcmVmZXJlbmNlIG9mIHRoZSBsYXN0Cj4gPiB0aW1lCj4gPiB0aGUgY291bnRl ciB3YXMgcmVhZCBmcm9tIHVzZXJzcGFjZSwgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gc2tpcCBmdWxs Cj4gPiByZXByb2JlIHdoZW4gaXQgaXMgYXNrZWQgZnJvbSB1c2Vyc3BhY2U/IFRoYXQgZmVlbHMg cHJldHR5IHNpbWlsYXIKPiA+IHRvCj4gPiBoYXZpbmcgYSBib29sIGluZGljYXRpbmcgY2hhbmdl Lgo+ID4gCj4gPiBNeSBhcHByb2FjaCBoZXJlIHdhcyB0byBsb29rIHNwZWNpZmljYWxseSBmb3Ig dGhlIHRoaW5nIHRoYXQgY2FuCj4gPiBjaGFuZ2UKPiA+IGluIHRoZSBhc3luYyB3b3JrZXIgKG9u bHkgRURJRCB3aXRoIHRoaXMgY2hhbmdlLCBidXQgaXQgY291bGQgYmUKPiA+IGV4dGVuZGVkIGZv ciB0aGUgb3RoZXIgdGhpbmdzIHlvdSBtZW50aW9uZWQpIGFzIHRvIHJlZHVjZSB0aGUKPiA+IGR1 cGxpY2F0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuCj4gPiAKPiA+ID4gLSBGb3IgdGhlIHVhcGkg Y2hhbmdlOiBXZSBhbHJlYWR5IHN1cHBvcnQgcmV0dXJuaW5nIHRoZSBjYWNoZWQKPiA+ID4gc3R1 ZmYsCj4gPiA+IHRoZQo+ID4gPiAgIG9ubHkgYml0IHRoYXQncyBtaXNzaW5nIGlzIHRoZSBlcG9j aCBjb3VudGVyIHRvIGxldCB1c2Vyc3BhY2UKPiA+ID4ga25vdwo+ID4gPiB3aGVyZQo+ID4gPiAg IGl0IG1pZ2h0IG5lZWQgdG8gZG8gYSBmdWxsIHJlcHJvYmUuIE9yIG1heWJlIHdlJ2xsIGp1c3Qg c3BlYwo+ID4gPiB0aGF0IGEKPiA+ID4gZnVsbAo+ID4gPiAgIHJlcHJvYmUgaXNuJ3QgbmVjZXNz YXJ5IGFmdGVyIGEgaHBkIGV2ZW50IChidXQgdGhhdCdzIHVubGlrZWx5Cj4gPiA+IHRvCj4gPiA+ IHdvcmsKPiA+ID4gICBvdXQgZ2l2ZW4gaG93IG1hbnkgYnVncyB3ZSdkIG5lZWQgdG8gZml4IGZp cnN0KS4KPiA+IAo+ID4gT2theSwgdGhhbmtzIGZvciB0aGUgYWRkaXRpb25hbCBleHBsYW5hdGlv bi4gSSB0aGluayBJJ20gZ2V0dGluZyBhCj4gPiBiZXR0ZXIgZ3Jhc3Agb24geW91ciBpZGVhLgo+ IAo+IFllYWgsIHRoZSBmdWxsIHJlcHJvYmUgaXNuJ3QgbmVlZGVkIGlmIHlvdSB3ZSBzcGVjIHRo YXQgYXMgdGhlIG5ldwo+IGZhbmN5Cj4gYmVoYXZpb3VyLiBXZSBhbHJlYWR5IHN1cHBvcnQgZ2V0 dGluZyB0aGUgY2FjaGVkIHZhbHVlcyB0aHJvdWdoCj4gZHJtTW9kZUdldENvbm5lY3RvckN1cnJl bnQoKSwgd2l0aG91dCBmb3JjaW5nIGEgZnVsbCByZXByb2JlLgoKU28gdGhlbiB1c2Vyc3BhY2Ug Z2V0cyB0aGUgY2FjaGVkIHZhbHVlcyBhbmQgY29uc2lkZXJzIHRoZW0gYXMgImFscmVhZHkKdXBk YXRlZCIgaWYgdGhlIGNvdW50ZXIgaGFzIGluY3JlYXNlZCwgYW5kIHRoZW4gc3RvcHMgdGhlcmUg YW5kIGRvZXNuJ3QKdHJpZ2dlciBhIGZ1bGwgcmVwcm9iZSAod2hpY2ggd2FzIGFscmVhZHkgZG9u ZSBieSB0aGUga2VybmVsJ3Mgd29ya2VyKT8KClNvIGFsbCBpbiBhbGwsIHRoZSB3aW4gaGVyZSBp cyByZXByb2Jpbmcgb25seSAxIGNvbm5lY3RvciBpbnN0ZWFkIG9mCnJlcHJvYmluZyB0aGVtIGFs bC4gVGhlIHNhbWUgY291bGQgYmUgYWNoaWV2ZWQgdmlhIGEgbW9yZSBkZXRhaWwgaG90cGx1Zwpu b3RpZmljYXRpb24gdGhhdCBhbHNvIG1lbnRpb25zIHdoaWNoIGNvbm5lY3RvciB3YXMgY29uY2Vy bmVkIGJ5IHRoZQpldmVudC4KCj4gTm90ZSB0aGF0IHJlYWxseSB0aGUgb25seSB0aGluZyB0aGUg aHBkIGhhbmRsaW5nIGRvZXNuJ3QgZG8gaXMgZmlsbAo+IGFuZAo+IGZpbHRlciB0aGUgbW9kZSBs aXN0LiBJIGd1ZXNzIGFzIHBhcnQgb2YgdGhpcyB3b3JrIHdlIHNob3VsZCBmaXggdGhhdCwKPiB0 aGF0IHNob3VsZCB0YWtlIGNhcmUgb2YgbW9zdCBvZiB0aGUgbmVlZHMgZm9yIGZ1bGwgcmVwcm9i aW5nLgoKRWl0aGVyIHdheSwgSSBkbyBub3QgaGF2ZSBlbm91Z2ggdGltZSBsZWZ0IGluIG15IGlu dGVybnNoaXAgdG8gc3RhcnQKd29ya2luZyBvbiBzb21ldGhpbmcgYXMgYmlnIGFzIHRoaXMgY2hh bmdlLCBidXQgSSB0aGluayBpdCdzIGEgc3RlcCBpbgp0aGUgcmlnaHQgZGlyZWN0aW9uLgoKLS0g ClBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Cklu dGVsIEZpbmxhbmQgT3kgLSBCSUMgMDM1NzYwNi00IC0gV2VzdGVuZGlua2F0dSA3LCAwMjE2MCBF c3BvbywgRmlubGFuZApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK