From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm: i915: Improve behavior in case of broken HDMI EDID Date: Fri, 22 Apr 2016 19:02:27 +0200 Message-ID: <20160422170227.GD2510@phenom.ffwll.local> References: <1461087073-14903-1-git-send-email-ezequiel@vanguardiasur.com.ar> <20160420113438.GQ2510@phenom.ffwll.local> <20160421181351.GC3696@laptop.cereza> <20160422081520.GF2510@phenom.ffwll.local> <20160422151807.GA6802@laptop.cereza> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160422151807.GA6802@laptop.cereza> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ezequiel Garcia Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMjIsIDIwMTYgYXQgMTI6MTg6MDdQTSAtMDMwMCwgRXplcXVpZWwgR2FyY2lh IHdyb3RlOgo+IE9uIDIyIEFwciAxMDoxNSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IE9u IFRodSwgQXByIDIxLCAyMDE2IGF0IDAzOjEzOjUxUE0gLTAzMDAsIEV6ZXF1aWVsIEdhcmNpYSB3 cm90ZToKPiA+ID4gRGFuaWVsLAo+ID4gPiAKPiA+ID4gVGhhbmtzIGEgbG90IGZvciB0aGUgcXVp Y2sgcmVwbHkhCj4gPiA+IAo+ID4gPiBPbiAyMCBBcHIgMDE6MzQgUE0sIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiA+ID4gT24gVHVlLCBBcHIgMTksIDIwMTYgYXQgMDI6MzE6MTNQTSAtMDMwMCwg RXplcXVpZWwgR2FyY2lhIHdyb3RlOgo+ID4gPiA+ID4gQ3VycmVudGx5LCBvdXIgaW1wbGVtZW50 YXRpb24gb2YgZHJtX2Nvbm5lY3Rvcl9mdW5jcy5kZXRlY3QgaXMKPiA+ID4gPiA+IGJhc2VkIG9u IGdldHRpbmcgYSB2YWxpZCBFRElELgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBUaGlzIHJlcXVpcmVt ZW50IG1ha2VzIHRoZSBkcml2ZXIgZmFpbCB0byBkZXRlY3QgY29ubmVjdGVkCj4gPiA+ID4gPiBj b25uZWN0b3JzIGluIGNhc2Ugb2YgRURJRCBjb3JydXB0aW9uLCB3aGljaCBpbiB0dXJuIHByZXZl bnRzCj4gPiA+ID4gPiBmcm9tIGZhbGxpbmcgYmFjayB0byBtb2RlcyBwcm92aWRlZCBieSBidWls dGluIG9yIHVzZXItcHJvdmlkZWQKPiA+ID4gPiA+IEVESURzLgo+ID4gPiA+IAo+ID4gPiA+IElt bywgdGhpcyBzaG91bGQgYmUgZml4ZWQgaW4gdGhlIHByb2JlIGhlbHBlcnMuIFNvbWV0aGluZyBs aWtlIHRoZSBiZWxvdwo+ID4gPiA+IG1pZ2h0IG1ha2Ugc2Vuc2U6Cj4gPiA+ID4gCj4gPiA+ID4g Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4gPiA+ID4gaW5kZXggZTcxNGI1 YTc5NTVmLi5kM2I5ZGM3NTM1ZGEgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9wcm9iZV9oZWxwZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJv YmVfaGVscGVyLmMKPiA+ID4gPiBAQCAtMjE0LDcgKzIxNCwxMCBAQCBpbnQgZHJtX2hlbHBlcl9w cm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gPiA+ID4gIAkJZWxzZQo+ID4gPiA+ICAJCQljb25uZWN0b3ItPnN0YXR1cyA9IGNvbm5l Y3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4gPiA+ICAJCWlmIChjb25uZWN0b3ItPmZ1bmNz LT5mb3JjZSkKPiA+ID4gPiAtCQkJY29ubmVjdG9yLT5mdW5jcy0+Zm9yY2UoY29ubmVjdG9yKTsK PiA+ID4gPiArCQljb25uZWN0b3ItPmZ1bmNzLT5mb3JjZShjb25uZWN0b3IpOwo+ID4gPiA+ICsJ fSBlbHNlIGlmIChjb25uZWN0b3ItPm92ZXJyaWRlX2VkaWQpewo+ID4gPiA+ICsJCWNvbm5lY3Rv ci0+c3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gPiA+ID4gKwkJY29ubmVj dG9yLT5mdW5jcy0+Zm9yY2UoY29ubmVjdG9yKTsKPiA+ID4gPiAgCX0gZWxzZSB7Cj4gPiA+ID4g IAkJY29ubmVjdG9yLT5zdGF0dXMgPSBjb25uZWN0b3ItPmZ1bmNzLT5kZXRlY3QoY29ubmVjdG9y LCB0cnVlKTsKPiA+ID4gPiAgCX0KPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiBJdCBzaG91bGQg ZG8gd2hhdCB5b3Ugd2FudCBpdCB0byBkbywgc3RpbGwgYWxsb3cgdXMgdG8gb3ZlcnJpZGUgZm9y Y2UKPiA+ID4gPiBzdGF0ZSBtYW51YWxseSBhbmQgYWxzbyBmaXggdGhpbmdzIHVwIGZvciBldmVy eSwgbm90IGp1c3QgaTkxNS1oZG1pLiBBbHNvLAo+ID4gPiA+IG11Y2ggc21hbGxlciBwYXRjaC4K PiA+ID4gPiAKPiA+ID4gCj4gPiA+IFRoZSBwYXRjaCB5b3UgYXJlIHByb3Bvc2luZyBkb2Vzbid0 IHNlZW0gdG8gYmUgcmVsYXRlZAo+ID4gPiB0byB0aGUgaXNzdWUgSSB3YW50IHRvIGZpeCwgc28g bWF5YmUgbXkgZXhwbGFuYXRpb24gaXMgc3RpbGwKPiA+ID4gdW5jbGVhci4gQWZ0ZXIgcmUtcmVh ZGluZyBteSBjb21taXQgbG9nLCBJIGNhbWUgdG8gcmVhbGl6ZQo+ID4gPiBJJ20gc3RpbGwgbm90 IGV4cGxhaW5pbmcgdGhlIGlzc3VlIHByb3Blcmx5Lgo+ID4gPiAKPiA+ID4gTGV0IG1lIHRyeSBh Z2FpbiA6LSkKPiA+ID4gCj4gPiA+IEEgdXNlciBjYW4gY29ubmVjdCBhbnkga2luZCBvZiBIRE1J IG1vbml0b3IgdG8gdGhlIGJveCwgYW5kCj4gPiA+IHRoZSBrZXJuZWwgc2hvdWxkIGJlIGFibGUg dG8gb3V0cHV0IHNvbWUgdmlkZW8sIGV2ZW4gd2hlbiB0aGUKPiA+ID4gSERNSSBtb25pdG9yIGlz IGEgcGllY2Ugb2YgY3JhcCBhbmQgc2VuZHMgY29tcGxldGVseSBicm9rZW4gRURJRC4KPiA+ID4g Cj4gPiA+IEN1cnJlbnRseSwgdGhlIGk5MTUgZHJpdmVyIHVzZXMgdGhlIHJldHVybiB2YWx1ZSBv ZiBpbnRlbF9oZG1pX3NldF9lZGlkKCkKPiA+ID4gdG8gc2V0IHRoZSBjb25uZWN0b3Igc3RhdHVz LiBJT1csIHRoZSBjb25uZWN0b3Igc3RhdHVzIGlzIHNldCB0byAiY29ubmVjdGVkIgo+ID4gPiAq b25seSogaWYgdGhlIEVESUQgaXMgY29ycmVjdCwgYW5kIGlzIGxlZnQgYXMgImRpc2Nvbm5lY3Rl ZCIgaWYgdGhlIEVESUQKPiA+ID4gaXMgY29ycnVwdC4KPiA+ID4gCj4gPiA+IEhvd2V2ZXIsIHRo ZSBjb25uZWN0b3Igc3RhdHVzIGNhbiBiZSBkZXRlY3RlZCBieSBqdXN0IHByb2JpbmcKPiA+ID4g dGhlIEkyQyBidXMgKGRybV9wcm9iZV9kZGMpLgo+ID4gPiAKPiA+ID4gVGhlIERSTSBwcm9iZSBo ZWxwZXIgcmVsaWVzIG9uIHRoZSAuZGV0ZWN0IGNhbGxiYWNrIHRvIGRlY2lkZSBpZgo+ID4gPiB0 aGUgbW9kZXMnIGZhbGxiYWNrcywgRURJRCBwcm92aWRlZCBtb2RlcywgZXRjIGFyZSBnb2luZyB0 byBiZSBzZXQuCj4gPiA+IAo+ID4gPiBJdCBvbmx5IHNldCB0aG9zZSBtb2RlcyBpZiB0aGUgLmRl dGVjdCBjYWxsYmFjayBoYW5kbGVyIHJldHVybnMKPiA+ID4gYSAiY29ubmVjdGVkIiBzdGF0dXMg YW5kIGRvZXMgbm90aGluZyBpZiAuZGV0ZWN0IHJldHVybnMKPiA+ID4gImRpc2Nvbm5lY3RlZCIu Cj4gPiA+IAo+ID4gPiBJZiB0aGUgY29ubmVjdG9yIGlzIHJlcG9ydGVkIGFzICJkaXNjb25uZWN0 ZWQiIGl0IHdpbGwgc2tpcCBpdCBhbmQKPiA+ID4gdGhlIHVzZXIgd29uJ3QgYmUgYWJsZSB0byB1 c2UgaXQgKGV4Y2VwdCBpZiB0aGUgc3RhdGUgaXMgZm9yY2VkCj4gPiA+IHdpdGggYSBwYXJhbWV0 ZXIpLgo+ID4gPiAKPiA+ID4gSSBhbSBjdXJyZW50bHkgc2hpcHBpbmcgaW50ZWwgYm94ZXMgd2l0 aG91dCBtb25pdG9ycywgYW5kIHRoZQo+ID4gPiB1c2VyIGNhbiBjb25uZWN0IGl0cyBvd24gbW9u aXRvci4gSSBjYW4ndCBrbm93IGJlZm9yZSBoYW5kCj4gPiA+IHdoYXQgZGV2aWNlIGlzIGdvaW5n IHRvIGJlIHBsdWdnZWQgKG5laXRoZXIgb24gd2hpY2ggb3V0cHV0Cj4gPiA+IGNvbm5lY3Rvciwg SERNSSwgRFZJLCBldGMpLi4uIHNvIEkgYW0gbm90IGFibGUgdG8gZm9yY2UgYW55IHN0YXRlLgo+ ID4gPiAKPiA+ID4gVGhlIHBhdGNoIEkgYW0gcHJvcG9zaW5nIG1ha2VzIHRoZSBrZXJuZWwgd29y ayB3aXRob3V0IGFueQo+ID4gPiB1c2VyIGludGVydmVudGlvbiwgaW4gdGhlIGZhY2Ugb2YgY29y cnVwdGVkIEVESUQgY29taW5nIG91dCBvZgo+ID4gPiBhIG1vbml0b3IuIFRoaXMgd29ya3MgYmVj YXVzZSB0aGUgLmRldGVjdCBsb2dpYyBhZnRlciBteSBwYXRjaAo+ID4gPiBqdXN0IGNoZWNrcyBp ZiBhIEkyQyBkZXZpY2UgaXMgcHJlc2VudCBpbiB0aGUgYnVzIHRvIG1hcmsgdGhlCj4gPiA+IGNv bm5lY3RvciBhcyAiY29ubmVjdGVkIiBhbmQgZG9lcyBub3QgdXNlIHRoZSBFRElEIHBhcnNpbmcg Zm9yIHRoYXQuCj4gPiA+IAo+ID4gPiBJbiBmYWN0LCB0aGUgRURJRCBwYXJzaW5nIGlzIG1vdmVk IHRvIC5nZXRfbW9kZXMoKSBzaW5jZSB0aGV5J3JlCj4gPiA+IG5vdCByZWFsbHkgdXNlZCBiZWZv cmUuIFRoaXMgYXQgdGhlIHZlcnkgbGVhc3QsIGlzIGNvbnNpc3RlbnQgd2l0aAo+ID4gPiBob3cg b3RoZXIgZHJpdmVycyB3b3JrIChJJ20gbm90IGludmVudGluZyBhbnl0aGluZykuCj4gPiA+IAo+ ID4gPiBNYXliZSB0aGUgZm9sbG93aW5nIGNvbW1pdCBsb2cgaXMgYmV0dGVyLiBIb3cgZG9lcyBp dCBsb29rIG5vdz8KPiA+IAo+ID4gQnV0IGluIHRoYXQgY2FzZSB0aGUgb25seSB0aGluZyB5b3Ug Z2V0IGlzIHRoZSAxMDI0eDc1NiBmYWxsYmFjayBtb2RlLgo+ID4gWW91J3JlIHVzZXJzIGFyZSBo YXBweSB3aXRoIHRoYXQ/Cj4gCj4gV2VsbCwgdXNlcnMgYXJlIGhhcHB5IHdoZW4gdGhpbmdzIEp1 c3QgV29yayA6LSkKPiAKPiA+IEkgdGhvdWdodCB5b3VyIHVzZS1jYXNlIHdhcyB0aGF0IHlvdQo+ ID4gbmVlZCB0byBvdmVyd3JpdGUgdGhlIGVkaWQgYW55d2F5LCBhbmQgdGhhdCBkb2luZyB0aGUg ZWRpZCBvdmVycmlkZSBhbG9uZQo+ID4gZG9lc24ndCB3b3JrLiBIZW5jZSBteSBwYXRjaCB0byBt YWtlIHN0dWZmIHdvcmsgZGlyZWN0bHkgd2l0aCBqdXN0IHRoZQo+ID4gZWRpZCBvdmVycmlkZS4K PiA+IAo+IAo+IEkgZG9uJ3QgdGhpbmsgdGhlIGVkaWQgb3ZlcnJpZGUgZG9lcyB3aGF0IHlvdSB0 aGluayBpdCBkb2VzLiBJZiB5b3UgdGFrZQo+IGEgbG9vayBhdCB0aGUgc291cmNlcywgeW91J2xs IGZpbmQgaXQncyBvbmx5IGEgZGVidWdmcyBpbnRlcmZhY2UgdG8KPiBpbmplY3QgRURJRC4gSSdt IHN1cmUgaXQncyBwcm9iYWJseSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBhbmQgZGV2ZWxvcG1lbnQs Cj4gYnV0IGl0IHdvbid0IGhlbHAgYXQgYWxsIGluIHRoaXMgY2FzZS4KCldlIGNhbiBsaWZ0IHRo YXQgdG8gYSBzeXNmcyBpbnRlcmZhY2UgZWFzaWx5IGlmIHRoZXJlJ3MgZGVtYW5kLiBBbmQgdGhp cwppcyB0aGUgc2FtZSBpbmplY3Rpb24gdGhpbmcgYXMgdGhlIGZpcm13YXJlIGxvYWRlci4gSSdt IGp1c3Qgbm90IGNvbnZpbmNlZAp0aGF0IHRoZSAxMDI0eDc2OCBmYWxsYmFjayB5b3UgZ2V0IHdp dGhvdXQgYW4gaW5qZWN0ZWQgZWRpZCBpcyB1c2VmdWwgZm9yCmFueW9uZSwgYW5kIG9uIHRvcCBv ZiB0aGF0IHlvdSBjYW4gZm9yY2UgdGhlIGNvbm5lY3RvciBzdGF0ZSBlYXNpbHkuCgpTbyBub3Qg eWV0IGNvbnZpbmNlZC4KLURhbmllbAoKPiBTbywgeW91ciBwYXRjaCBkb2Vzbid0IGltcHJvdmUg dGhlIHNpdHVhdGlvbiBJIGhhdmUgZGVzY3JpYmVkIGluIGFueSB3YXkuCj4gVGhlIHBhdGNoIHlv dSBwcm9wb3NlZCBvbmx5IGRvZXMgb25lIHRoaW5nOiBpZiB5b3UgaW5qZWN0IHNvbWUgRURJRCB1 c2luZwo+IGRlYnVnZnMgZWRpZF9vdmVycmlkZSBmaWxlLCBhbmQgKnRoZW4qIHlvdSBwcm9iZSB0 aGUgZHJpdmVyLCBpdCB3aWxsIGZvcmNlCj4gdGhlIHN0YXRlIHRvIGNvbm5lY3RlZCwgYW5kIHVz ZSB0aGF0IEVESUQuCj4gCj4gSG93ZXZlciwgSSdtIHRyeWluZyB0byBmaXggYSBjb21wbGV0ZWx5 IGRpZmZlcmVudCBpc3N1ZTogdGhlIGk5MTUgZHJpdmVyCj4gaXMgdW5hYmxlIHRvIGRldGVjdCBh IGNvbm5lY3RlZCBIRE1JIG1vbml0b3IsIHVubGVzcyB0aGUgbW9uaXRvciBzZW5kcwo+IHZhbGlk IEVESUQgZGF0YS4gSSB3b3VsZCBsaWtlIGk5MTUgdG8gc2ltcGx5IGRldGVjdCB0aGUgZGV2aWNl IGFzCj4gImNvbm5lY3RlZCIgd2hlbiB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZC4KPiAKPiBUaGF0 J3Mgd2h5IEknbSBpbnNpc3RpbmcgdGhpcyBuZWVkcyBmaXhpbmcgYXQgdGhlIGRyaXZlciBsZXZl bDogdGhlIERSTSBjb3JlCj4gZXhjZXB0cyB0aGUgZHJpdmVyJ3MgLmRldGVjdCBob29rIHRvIGRv IHRoZSBSaWdodCBUaGluZyBhbmQgdGVsbCBpZiB0aGUKPiBjb25uZWN0b3IgaXMgY29ubmVjdGVk IG9yIGRpc2Nvbm5lY3RlZC4KPiAKPiBPbmNlIHRoZSBjb25uZWN0b3Igc3RhdHVzIGlzIGRldGVj dGVkLCB3ZSBjYW4gYWRkIG1vZGVzIHdpdGggdGhlIGJ1aWx0aW4vdXNlcgo+IEVESUQgZmlybXdh cmUgbG9hZGluZywgb3IgdWx0aW1hdGVseSBmYWxsYmFjayB0byAxMDI0eDc2OCBub2VkaWQuCj4g Cj4gQW5kIDEwMjR4NzY4IGlzIGp1c3QgdGhlIG5vZWRpZCBmYWxsYmFjay4gSSBjYW4ndCBrbm93 IGlmIGV2ZXJ5IGRldmljZQo+IHdpbGwgd29yayB3aXRoIGl0OiB0aGF0J3Mgd2h5IGl0J3MgdGhl IGxhc3QgZmFsbGJhY2ssIGluIGNhc2UgdGhlIG90aGVyCj4gbWV0aG9kcyB0byBhZGQgbW9kZXMg aGF2ZSBmYWlsZWQuCj4gCj4gV2hhdCBJJ20gcmVhbGx5IGV4cGVjdGluZyBpcyB0aGUgY29ubmVj dG9yIHRvIGJlIGRldGVjdGVkIGFzICJjb25uZWN0ZWQiCj4gd2hlbiBpdCAqaXMqICJjb25uZWN0 ZWQiLgo+IAo+ID4gQXQgbGVhc3QgSSBteXNlbGYgd291bGRuJ3QgY29uc2lkZXIgMTAyNHg3NTYg IndvcmtpbmciIC4uLgo+ID4KPiA+IC1EYW5pZWwKPiA+IAo+ID4gPiAKPiA+ID4gLS0tLS0tLS0t LTg8LS0tLS0tLS0tLQo+ID4gPiBkcm06IGk5MTU6IEZpeCBIRE1JIGNvbm5lY3RvciBzdGF0dXMg ZGV0ZWN0aW9uIGluIGNhc2Ugb2YgYnJva2VuIEVESUQKPiA+ID4gCj4gPiA+IFRoZSBpOTE1IERS TSBkcml2ZXIgYXR0ZW1wdHMgdG8gcGFyc2UgdGhlIEVESUQgaW4gdGhlIEhETUkgY29ubmVjdG9y Cj4gPiA+IC5kZXRlY3QgY2FsbGJhY2sgYW5kIHVzZSB0aGUgcmV0dXJuIHN0YXR1cyBvZiBpbnRl bF9oZG1pX3NldF9lZGlkKCkKPiA+ID4gdG8gZGVjaWRlIGlmIHRoZSBjb25uZWN0b3Igc3RhdHVz IGlzIGNvbm5lY3RlZCBvciBkaXNjb25uZWN0ZWQuCj4gPiA+IAo+ID4gPiBUaGUgcHJvYmxlbSBp cyB0aGF0IGludGVsX2hkbWlfc2V0X2VkaWQoKSBmYWlscyBpZiB0aGUgRURJRCBpcyBub3QKPiA+ ID4gY29ycmVjdCAoaS5lOiBjb3JydXB0ZWQpIGFuZCBzbyAuZGV0ZWN0IHdpbGwgd3JvbmdseSBy ZXBvcnQgdG8gdGhlCj4gPiA+IERSTSBjb3JlIHRoYXQgdGhlIGNvbm5lY3RvciBpcyBkaXNjb25u ZWN0ZWQuCj4gPiA+IAo+ID4gPiBJdCdzIHRvdGFsbHkgYWNjZXB0YWJsZSB0byB1c2UgYSBIRE1J IGNvbm5lY3RvciBldmVuIGluIHRoZSBjYXNlIG9mCj4gPiA+IGEgYnJva2VuIEVESUQsIGJ5IHVz aW5nIHRoZSBDT05GSUdfRFJNX0xPQURfRURJRF9GSVJNV0FSRQo+ID4gPiBhbmQgbm9lZGlkIGZh bGxiYWNrIG9wdGlvbnMuIFRoZSBvbmx5IHRoaW5nIHRoYXQgLmRldGVjdCBzaG91bGQKPiA+ID4g Y2hlY2sgaXMgdGhhdCB0aGVyZSBpcyBhIGRldmljZSBhbnN3ZXJpbmcgaW4gdGhlIGNvcnJlY3Qg STJDIGFkZHJlc3MKPiA+ID4gYW5kIGJ1cy4KPiA+ID4gCj4gPiA+IFNvIHRoaXMgcGF0Y2ggY2hh bmdlcyB0aGUgLmRldGVjdCBsb2dpYyB0byBqdXN0IGNoZWNrIHRoZSBEREMgcHJlc2VuY2UKPiA+ ID4gdG8gZGVjaWRlIHRoZSBjb25uZWN0b3Igc3RhdHVzLCBzbyB0aGUgY29yZSBjYW4gc2V0IHRo ZSBFRElEIGZhbGxiYWNrcy4KPiA+ID4gCj4gPiA+IEFsc28sIGNoZWNraW5nIGZvciB0aGUgRURJ RCBpbiB0aGUgLmNvbm5lY3QgY2FsbGJhY2sgZG9lc24ndCBzZWVtIHRvIGJlCj4gPiA+IGNvcnJl Y3Qgc2luY2UgdGhhdCBzaG91bGQgb25seSBjaGVjayB0aGF0IHRoZSBjb25uZWN0b3IgaGFzIGJl ZW4gaG9va2VkCj4gPiA+IHNvIHRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyB0aGUgRURJRCBwYXJzaW5n IGxvZ2ljIHRvIHRoZSAuZ2V0X21vZGVzIGhhbmRsZXIKPiA+ID4gd2hlbiB0aGUgbW9kZXMgYXJl IGFjdHVhbGx5IG5lZWRlZCBhbmQgZmlsbGVkIHRvIHJlcG9ydCB0byB1c2VyLXNwYWNlLgo+ID4g PiAtLSAKPiA+ID4gRXplcXVpZWwgR2FyY2lhLCBWYW5ndWFyZGlhU3VyCj4gPiA+IHd3dy52YW5n dWFyZGlhc3VyLmNvbS5hcgo+ID4gCj4gPiAtLSAKPiA+IERhbmllbCBWZXR0ZXIKPiA+IFNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gK PiAKPiAtLSAKPiBFemVxdWllbCBHYXJjaWEsIFZhbmd1YXJkaWFTdXIKPiB3d3cudmFuZ3VhcmRp YXN1ci5jb20uYXIKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK