From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: Re: [PATCH 04/13] drm/i915: Add EDID read in intel_dp_check_link_status() for Link CTS 4.2.2.1 Date: Sun, 19 Apr 2015 22:10:27 -0700 Message-ID: <55348A43.4080403@gmail.com> References: <1428682372-21586-5-git-send-email-tprevite@gmail.com> <1428936789-13435-1-git-send-email-tprevite@gmail.com> <552E85A7.9070402@gmail.com> <552FD82D.9050202@gmail.com> <20150416163117.GL5082@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f180.google.com (mail-pd0-f180.google.com [209.85.192.180]) by gabe.freedesktop.org (Postfix) with ESMTP id CC4DE6E2CB for ; Sun, 19 Apr 2015 22:10:29 -0700 (PDT) Received: by pdbqa5 with SMTP id qa5so196217095pdb.1 for ; Sun, 19 Apr 2015 22:10:29 -0700 (PDT) In-Reply-To: <20150416163117.GL5082@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: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzE2LzE1IDk6MzEgQU0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gVGh1LCBBcHIg MTYsIDIwMTUgYXQgMDg6NDE6MzNBTSAtMDcwMCwgVG9kZCBQcmV2aXRlIHdyb3RlOgo+PiBPbiA0 LzE1LzIwMTUgMTA6NDIgQU0sIFBhdWxvIFphbm9uaSB3cm90ZToKPj4+IDIwMTUtMDQtMTUgMTI6 MzcgR01ULTAzOjAwIFRvZGQgUHJldml0ZSA8dHByZXZpdGVAZ21haWwuY29tPjoKPj4+PiBPbiA0 LzE0LzIwMTUgOTo1MyBBTSwgUGF1bG8gWmFub25pIHdyb3RlOgo+Pj4+PiAyMDE1LTA0LTEzIDEx OjUzIEdNVC0wMzowMCBUb2RkIFByZXZpdGUgPHRwcmV2aXRlQGdtYWlsLmNvbT46Cj4+Pj4+PiBB ZGRzIGluIGFuIEVESUQgcmVhZCBhZnRlciB0aGUgRFBDRCByZWFkIHRvIGFjY29tbW9kYXRlIHRl c3QgNC4yLjIuMSBpbgo+Pj4+Pj4gdGhlCj4+Pj4+PiBEaXNwbGF5cG9ydCBMaW5rIENUUyBDb3Jl IDEuMiByZXYxLjEuIFRoaXMgdGVzdCByZXF1aXJlcyBhbiBFRElEIHJlYWQgZm9yCj4+Pj4+PiBh bGwgSFBEIHBsdWcgZXZlbnRzLiBUbyByZWR1Y2UgdGhlIGFtb3VudCBvZiBjb2RlLCB0aGlzIEVE SUQgcmVhZCBpcyBhbHNvCj4+Pj4+PiB1c2VkIGZvciBMaW5rIENUUyB0ZXN0cyA0LjIuMi4zLCA0 LjIuMi40LCA0LjIuMi41IGFuZCA0LjIuMi42LiBBY3R1YWwKPj4+Pj4+IHN1cHBvcnQgZm9yIHRo ZXNlIHRlc3RzIGlzIGltcGxlbWVudGVkIGluIGxhdGVyIHBhdGNoZXMgaW4gdGhpcyBzZXJpZXMu Cj4+Pj4+Pgo+Pj4+Pj4gVjI6Cj4+Pj4+PiAtIEZpeGVkIGNvbXBpbGF0aW9uIGVycm9yIGludHJv ZHVjZWQgZHVyaW5nIHJld29yawo+Pj4+Pj4KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFRvZGQgUHJl dml0ZSA8dHByZXZpdGVAZ21haWwuY29tPgo+Pj4+Pj4gLS0tCj4+Pj4+PiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jIHwgMTEgKysrKysrKysrKysKPj4+Pj4+ICAgIDEgZmlsZSBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+Pj4+Pj4gaW5kZXggMjMxODRiMC4uNzVkZjNlMiAxMDA2NDQKPj4+Pj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+Pj4+IEBAIC0zODkwLDYgKzM4OTAsOSBAQCBpbnRl bF9kcF9jaGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAKPj4+Pj4+ICppbnRlbF9kcCkK Pj4+Pj4+ICAgIHsKPj4+Pj4+ICAgICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50 ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPj4+Pj4+ICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqaW50ZWxfZW5jb2RlciA9Cj4+Pj4+PiAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5i YXNlOwo+Pj4+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KPj4+ Pj4+ICZpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5iYXNlOwo+Pj4+Pj4gKyAgICAgICBz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIgPSAmaW50ZWxfZHAtPmF1eC5kZGM7Cj4+Pj4+PiAr ICAgICAgIHN0cnVjdCBlZGlkICplZGlkX3JlYWQgPSBOVUxMOwo+Pj4+Pj4gICAgICAgICAgIHU4 IHNpbmtfaXJxX3ZlY3RvcjsKPj4+Pj4+ICAgICAgICAgICB1OCBsaW5rX3N0YXR1c1tEUF9MSU5L X1NUQVRVU19TSVpFXTsKPj4+Pj4+Cj4+Pj4+PiBAQCAtMzkwNiw2ICszOTA5LDE0IEBAIGludGVs X2RwX2NoZWNrX2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcAo+Pj4+Pj4gKmludGVsX2RwKQo+ Pj4+Pj4gICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+Pj4gICAgICAgICAgIH0KPj4+Pj4+ Cj4+Pj4+PiArICAgICAgIC8qIERpc3BsYXlwb3J0IExpbmsgQ1RTIENvcmUgMS4yIHJldjEuMSBF RElEIHRlc3RpbmcKPj4+Pj4+ICsgICAgICAgICogNC4yLjIuMSAtIEVESUQgcmVhZCByZXF1aXJl ZCBmb3IgYWxsIEhQRCBldmVudHMKPj4+Pj4+ICsgICAgICAgICAqLwo+Pj4+Pj4gKyAgICAgICAg ZWRpZF9yZWFkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgYWRhcHRlcik7Cj4+Pj4+PiArICAg ICAgICBpZiAoIWVkaWRfcmVhZCkgewo+Pj4+Pj4gKyAgICAgICAgICAgICAgICBEUk1fREVCVUdf RFJJVkVSKCJJbnZhbGlkIEVESUQgZGV0ZWN0ZWRcbiIpOwo+Pj4+Pj4gKyAgICAgICAgfQo+Pj4+ Pj4gKwo+Pj4+PiBXZSBhbHJlYWR5IGJyaWVmbHkgZGlzY3Vzc2VkIHRoaXMgcGF0Y2ggaW4gcHJp dmF0ZSwgc28gSSdtIGdvaW5nIHRvCj4+Pj4+IHN1bW1hcml6ZSB0aGUgZGlzY3Vzc2lvbiBhbmQg YWxzbyBhZGQgc29tZSBtb3JlIHBvaW50cyBoZXJlLgo+Pj4+Pgo+Pj4+PiBGcmlzdCwgdGhlIGFj dHVhbCBkZXRhaWxlZCByZXZpZXc6IHRoZSBpbmRlbnRhdGlvbiBoZXJlIGlzIHVzaW5nCj4+Pj4+ IHNwYWNlcyBhbmQgd2UncmUgbGVha2luZyB0aGUgRURJRC4gVGhpcyB3aWxsIGNhdXNlIHJlYmFz ZXMgdG8gYSBmZXcgb2YKPj4+Pj4gdGhlIG5leHQgcGF0Y2hlcy4KPj4+Pj4KPj4+Pj4gQmFjayB0 byB0aGUgaGlnaHQgbGV2ZWwgYXJjaGl0ZWN0dXJlOiB5b3VyIGluaXRpYWwgdmVyc2lvbnMgb2Yg dGhlCj4+Pj4+IHNlcmllcyBjb250YWluZWQganVzdCAxIGV4dHJhIEVESUQgcmVhZCwgYW5kIGl0 IHdhcyBjb250YWluZWQgaW5zaWRlCj4+Pj4+IHRoZSBjb21wbGlhbmNlIHRlc3RpbmcgZnVuY3Rp b24uIFRoZW4gdGhlIHZlcnNpb25zIHN1Ym1pdHRlZCBhIGZldwo+Pj4+PiBkYXlzIGFnbyBoYWQg MiBleHRyYSBFRElEIHJlYWRzLCB0aGVuIGFmdGVyIHNvbWUgZGlzY3Vzc2lvbiB5b3UKPj4+Pj4g cmVkdWNlZCB0byAxIGV4dHJhIEVESUQgcmVhZCAodGhlIG9uZSBvbiB0aGlzIHBhdGNoKS4gSSBw cmV2aW91c2x5Cj4+Pj4+IGFza2VkICJCdXQgd2hhdCBhYm91dCB0aGUgYXV0b21hdGljIEVESUQg cmVhZCB3ZSBkbyB3aGVuIHdlIGdldCBhCj4+Pj4+IGhvdHBsdWc/IENhbid0IHdlIGp1c3QgcmVs eSBvbiBpdD8iLiBJIGdvdCBzb21lIGFuc3dlcnMgdG8gdGhlCj4+Pj4+IHF1ZXN0aW9uLCBidXQg SSB3YXMgbm90IHJlYWxseSBjb252aW5jZWQuCj4+Pj4+Cj4+Pj4+IFllc3RlcmRheSBJIHdhcyBh cmd1aW5nIHRoYXQgdGhpcyBleHRyYSBFRElEIHJlYWQgaXMgZ29pbmcgdG8gYWRkIGEKPj4+Pj4g c21hbGwgZGVsYXkgdG8gZXZlcnkgaG90cGx1ZyBldmVudCB3ZSBnZXQsIHNvIG15IGluaXRpYWwg c3VnZ2VzdGlvbgo+Pj4+PiB3YXMgdG8gb3JnYW5pemUgdGhlIGNvbXBsaWFuY2UgdGVzdGluZyBp biBhIHdheSB0aGF0IHdvdWxkIHJlcXVpcmUgdGhlCj4+Pj4+IHVzZXIgc3BhY2UgcHJvZ3JhbSB0 byBjYWxsIHRoZSBHZXRSZXNvdXJjZXMoKSBJT0NUTCB0byBmb3JjZSB0aGUgRURJRAo+Pj4+PiB3 aGVuIG5lZWRlZC4gWW91ciBhcmd1bWVudCB3YXMgdGhhdCB0aGVuIHRoZSBEUCBjb21wbGlhbmNl IHRlc3RpbmcKPj4+Pj4gcHJvY2VkdXJlIHdvdWxkIGJlIHRlc3Rpbmcgb3VyIGFwcCBmb3IgY29t cGxpYW5jZSwgbm90IHRoZSBLZXJuZWwuCj4+Pj4+Cj4+Pj4+IEJ1dCB0b2RheSBJIGRlY2lkZWQg dG8gZmluYWxseSBkbyBzb21lIGRlYnVnZ2luZyByZWdhcmRpbmcgdGhpcywgYW5kIEkKPj4+Pj4g d2FzIGFibGUgdG8gY29uZmlybSB0aGF0IHdlIGRvIGZvbGxvdyB0aGUgRFAgcmVxdWlyZW1lbnRz OiB3ZSBkbyBoYXZlCj4+Pj4+IGFuIGF1dG9tYXRpYyBFRElEIHJlYWQgZG9uZSBieSB0aGUgS2Vy bmVsIHdoZW5ldmVyIHdlIGRvIGEgaG90cGx1ZzoKPj4+Pj4gaTkxNV9ob3RwbHVnX3dvcmtfZnVu YygpIGNhbGxzIGludGVsX2RwX2RldGVjdCgpLCB3aGljaCBlbmRzIGNhbGxpbmcKPj4+Pj4gZHJt X2dldF9lZGlkKCkgYXQgc29tZSBwb2ludC4gVGhpcyBmdW5jdGlvbiBhbHNvIGRvZXMgb3RoZXIg c3R1ZmYgdGhhdAo+Pj4+PiBpcyByZXF1aXJlZCBieSB0aGUgY29tcGxpYW5jZSB0ZXN0aW5nLCBz dWNoIGFzIHRoZSBEUENEIHJlYWRzLgo+Pj4+Pgo+Pj4+PiBOb3cgdGhlcmUncyBhIHByb2JsZW0g d2l0aCB1c2luZyBpOTE1X2hvdHBsdWdfd29ya19mdW5jKCksIHdoaWNoIGNvdWxkCj4+Pj4+IHRo ZSByZWFzb24gd2h5IHlvdSByZWplY3RlZCBpdDogaXQgb25seSBoYXBwZW5zIGFmdGVyCj4+Pj4+ IGludGVsX2RwX2hwZF9wdWxzZSgpLCB3aGljaCBtZWFucyB0aGF0IHdlIG9ubHkgcmVhbGx5IGRv IHRoZSBFRElEIHJlYWQKPj4+Pj4gYWZ0ZXIgaW50ZWxfZHBfaGFuZGxlX3Rlc3RfcmVxdWVzdCgp Lgo+Pj4+Pgo+Pj4+PiBJIGNvbnNpZGVyIGk5MTVfaG90cGx1Z193b3JrX2Z1bmMoKSBhIGZ1bmRh bWVudGFsIHBhcnQgb2Ygb3VyIERQCj4+Pj4+IGZyYW1ld29yaywgYW5kIHRoZSBEUCBjb21wbGlh bmNlIHRlc3Rpbmcgc2VlbXMgdG8gYmUganVzdCBpZ25vcmluZyBpdHMKPj4+Pj4gZXhpc3RlbmNl LiBTbyBteSBpZGVhIGZvciBhIHNvbHV0aW9uIGhlcmUgd291bGQgYmUgdG8gbWFrZQo+Pj4+PiBp bnRlbF9kcF9oYW5kbGVfdGVzdF9yZXF1ZXN0KCkgcnVuIG9uIGl0cyBvd24gZGVsYXllZCB3b3Jr IGZ1bmN0aW9uLgo+Pj4+PiBJdCB3b3VsZCB3YWl0IGZvciBib3RoIGk5MTVfZGlncG9ydF93b3Jr X2Z1bmMoKSBhbmQKPj4+Pj4gaTkxNV9ob3RwbHVnX3dvcmtfZnVuYygpIHRvIGZpbmlzaCwgYW5k IG9ubHkgdGhlbiBpdCB3b3VsZCBkbyB0aGUKPj4+Pj4gbm9ybWFsIHByb2Nlc3NpbmcuIFdpdGgg dGhpcywgd2Ugd291bGQgYmUgYWJsZSB0byBhdm9pZCB0aGUgZWRpZCByZWFkCj4+Pj4+IG9uIHRo aXMgcGF0Y2gsIHdlIHdvdWxkIG1heWJlIGJlIGFibGUgdG8gYXZvaWQgYXQgbGVhc3QgcGFydCBv ZiBwYXRjaAo+Pj4+PiAyLCB3ZSB3b3VsZCBtYXliZSBiZSBhYmxlIHRvIGNvbXBsZXRlbHkgYXZv aWQgcGF0Y2ggNywgYW5kIHRoZW4gb24KPj4+Pj4gcGF0Y2ggOCB3ZSB3b3VsZCBzdGFydCB0b3Vj aGluZyBpbnRlbF9kcF9nZXRfZWRpZCgpIGluc3RlYWQuCj4+Pj4+Cj4+Pj4+IEkga25vdyB0aGlz IGlzIHNvcnQgb2YgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdGhhdCBpcyBiZWluZyByZXF1ZXN0ZWQg YQo+Pj4+PiBsaXR0bGUgbGF0ZSBpbiB0aGUgcmV2aWV3IHByb2Nlc3MsIGFuZCBpdCBjYW4gYmUg ZnJ1c3RyYXRpbmcsIGJ1dCB0aGlzCj4+Pj4+IGFzcGVjdCBvZiB0aGUgY29kZSBvbmx5IHJlY2Vu dGx5IGNoYW5nZWQgKEkgd2FzIGZpbmUgd2l0aCB0aGUgRURJRAo+Pj4+PiByZWFkcyBqdXN0IGlu IHRoZSBjb21wbGlhbmNlIHRlc3RpbmcgZnVuY3Rpb24pLCBhbmQgc2luY2UgdGhlIERQCj4+Pj4+ IGNvbXBsaWFuY2UgY29kZSBpcyBxdWl0ZSBjb21wbGV4LCBpdCB0b29rIG1lIGEgd2hpbGUgdG8g cmVhbGl6ZQo+Pj4+PiBldmVyeXRoaW5nIHRoYXQncyBnb2luZyBvbiBhbmQgd2hhdCBpcyB0aGUg cHVycG9zZSBvZiBlYWNoIHBpZWNlLiBJCj4+Pj4+IGFsc28gdGhpbmsgdGhhdCwgc2luY2UgdGhp cyBpZGVhIHdpbGwgYWxsb3cgdGhlIGNvbXBsaWFuY2UgdGVzdGluZyB0bwo+Pj4+PiB0YWtlIGlu dG8gY29uc2lkZXJhdGlvbiB0aGUgd29yayBkb25lIGJ5IGk5MTVfaG90cGx1Z193b3JrX2Z1bmMo KSwKPj4+Pj4gY29tcGxpYW5jZSB0ZXN0aW5nIHdpbGwgYmV0dGVyIHJlZmxlY3QgdGhlIGJlaGF2 aW9yIHRoYXQgaXMgYWN0dWFsbHkKPj4+Pj4gZG9uZSBieSB0aGUgS2VybmVsIHdoZW4gRFAgZGV2 aWNlcyBhcmUgcGx1Z2dlZC91bnBsdWdnZWQuIEFuZCBJIGRpZAo+Pj4+PiBhc2sgYWJvdXQgdGhv c2UgbmV3IEVESUQgcmVhZHMgYXMgc29vbiBhcyBJIHN0YXJ0ZWQgcmV2aWV3aW5nIHRoZQo+Pj4+ PiBwYXRjaCB0aGF0IGludHJvZHVjZWQgdGhlbS4KPj4+Pj4KPj4+Pj4gTm93LCBzaW5jZSBJIGtu b3cgaG93IGZydXN0cmF0aW5nIGl0IGlzIHRvIGhhdmUgdG8gY2hhbmdlIGEKPj4+Pj4gc2lnbmlm aWNhbnQgcG9ydGlvbiBvZiB0aGUgY29kZSBvbmNlIGFnYWluLCBJIHdpbGwgbGVhdmUgdG8gdGhl Cj4+Pj4+IG1haW50YWluZXJzIHRoZSBkZWNpc2lvbiBvZiB3aGV0aGVyIHRoZSBjdXJyZW50IHBy b3Bvc2VkCj4+Pj4+IGltcGxlbWVudGF0aW9uIGlzIGFjY2VwdGFibGUgb3IgaWYgd2Ugd2FudCB0 byBtYWtlIHRoZSBEUCBjb21wbGlhbmNlCj4+Pj4+IHRlc3RpbmcgY29kZSB0YWtlIGludG8gY29u c2lkZXJhdGlvbiB0aGUgd29yayBkb25lIGJ5Cj4+Pj4+IGk5MTVfaG90cGx1Z193b3JrX2Z1bmMo KS4gSSB3b3VsZCBhbHNvIGxpa2UgdG8ga25vdyB5b3VyIG9waW5pb24gb24KPj4+Pj4gdGhpcy4g TWF5YmUgbXkgaWRlYSBqdXN0IGRvZXNuJ3QgbWFrZSBzZW5zZSBiZWNhdXNlIG9mIHNvbWV0aGlu ZyBlbHNlCj4+Pj4+IEkgZGlkbid0IHJlYWxpemUgOikKPj4+PiBJIGRvbid0IHRoaW5rIHRoaXMg aXMgYSBnb29kIGlkZWEuIFRoZSB3b3JrIGxvb3AgYXNwZWN0IHNlZW1zIGxpa2UgYSB2ZXJ5Cj4+ Pj4gY29tcGxleCBzb2x1dGlvbiBzb2x1dGlvbiB0byBhIHByb2JsZW0gdGhhdCBpcyByZWxhdGl2 ZWx5IHNpbXBsZS4gSW4gYQo+Pj4+IGRpc2N1c3Npb24gd2l0aCBEYW5pZWwsIGhlIGluZGljYXRl ZCB0aGF0IGFkZGluZyBhIHdvcmsgbG9vcCBpcyBzb21ldGhpbmcgdG8KPj4+PiBiZSBhdm9pZGVk IHVubGVzcyBpdCdzICpyZWFsbHkqIG5lY2Vzc2FyeSwgYXMgdGhleSBhcmUgcHJvbmUgdG8gcmFj ZQo+Pj4+IGNvbmRpdGlvbnMuIEluIHRoaXMgY2FzZSwgSSBqdXN0IGRvbid0IHNlZSB0aGF0IGl0 J3MgbmVjZXNzYXJ5Lgo+Pj4gVGhlIHdvcmtxdWV1ZSB0aGluZyB3YXMganVzdCBhbiBpZGVhIHRv IGltcGxlbWVudCBhIHNvbHV0aW9uIGZvciB0aGUKPj4+IHJlYWwgcHJvYmxlbS4gSSB0aGluayB3 ZSBzaG91bGQgYmUgZm9jdXNpbmcgYWJvdXQgZGlzY3Vzc2luZyB0aGUgZmFjdAo+Pj4gdGhhdCB3 ZSdyZSBub3QgdGFraW5nIGk5MTVfaG90cGx1Z193b3JrX2Z1bmMoKSBpbnRvIGNvbnNpZGVyYXRp b24gd2hlbgo+Pj4gZG9pbmcgdGhlIGNvbXBsaWFuY2UgdGVzdGluZywgbm90IG9uIHRoZSBmYWN0 IHRoYXQgb25lIG9mIHRoZSBwb3NzaWJsZQo+Pj4gaW1wbGVtZW50YXRpb25zIGNvdWxkIHVzZSBh IHdvcmtxdWV1ZS4gSSdkIHN0aWxsIGxpa2UgdG8gaGVhciB5b3VyCj4+PiBhcmd1bWVudHMgb24g dGhhdC4KPj4gRmFpciBlbm91Z2guCj4+Cj4+IFNvIEkndmUgYmVlbiBsb29raW5nIGludG8gdGhp cyBhbmQgd2h5IHRoZSBpOTE1X2hvdHBsdWdfd29ya19mdW5jIHdhc24ndAo+PiBwYXJ0IG9mIHRo aXMuIEl0IGlzLCBhcyB5b3Ugc2FpZCwgYSByZWxhdGl2ZWx5IGZ1bmRhbWVudGFsIGNvZGUgcGF0 aCBmb3IKPj4gRGlzcGxheXBvcnQgdGhyb3VnaCB0aGUgZHJpdmVyLiBXaGF0IEkgZGlzY292ZXJl ZCB3YXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzCj4+IG5ldmVyIGNhbGxlZCBvbiBIU1cgKG15IHBy aW1hcnkgdGVzdCB2ZWhpY2xlKSwgbWFpbmx5IGJlY2F1c2UKPj4gY2hlY2tfbGlua19zdGF0dXMo KSByZXR1cm5zIElSUV9IQU5ETEVEIGluc3RlYWQgb2YgSVJRX05PTkUuIFRoZSB3b3JrCj4+IGZ1 bmN0aW9uIGZvciBIU1cgaXMgaTkxNV9kaWdwb3J0X3dvcmtfZnVuYywgc28gd2hlbiBpdCBnZXRz IHRoZSBJUlFfSEFORExFRAo+PiByZXR1cm4gY29kZSwgaXQgZG9lc24ndCBmYWxsIHRocm91Z2gg dG8gdGhlIGxlZ2FjeSBpOTE1X2hvdHBsdWdfd29ya19mdW5jCj4+IGhhbmRsZXIuIFRoaXMgaXMg aW1wb3J0YW50IGJlY2F1c2UgdGhpcyBoYW5kbGVyIGNhbGxzIGludGVsX2hwZF9pcnFfZXZlbnQK Pj4gd2hpY2ggaXMgd2hlcmUgdGhlIC0+ZGV0ZWN0IGNvbm5lY3RvciBmdW5jdGlvbiBpcyBjYWxs ZWQuIEFuZAo+PiBpbnRlbF9kcF9kZXRlY3QoKSBpcyB3aGVyZSBhbGwgdGhlIGhhcHB5IGdvb2Ru ZXNzIGZvciBEaXNwbGF5cG9ydCBiZWdpbnMuCj4+Cj4+IFVwIHVudGlsIEkgZGlzY292ZXJlZCB0 aGlzLCBJIGhhZCBtaXN0YWtlbmx5IHByb3BhZ2F0ZWQgdGhhdCBwcm9ibGVtIGZvcndhcmQKPj4g aW4gdG8gdGhlIFNTVCBjYXNlIGluIGludGVsX2RwX2hvdF9wdWxzZSgpIGluIHBhdGNoIDYgYnkg cmV0dXJuaW5nCj4+IElSUV9IQU5ETEVEIGluc3RlYWQgb2YgSVJRX05PTkUsIHdoaWNoIGlzIHdo YXQgdGhlIGNvZGUgd2FzIGRvaW5nIGZvciBTU1QKPj4gcHJpb3IgdG8gcGF0Y2ggNi4gV2l0aCB0 aGlzIHByb2JsZW0gY29ycmVjdGVkIChhcyBpdCBpcyBpbiB0aGUgbGF0ZXN0IHVwZGF0ZQo+PiBp biBwYXRjaCBzZXQgVjYpIHRoZSB3b3JrIGZ1bmN0aW9ucyBhcmUgbm93IGNhbGxlZCBhcyB0aGV5 IHNob3VsZCBiZS4gVGhlCj4+IHBvaW50IGJlaW5nIHRoYXQgdGhpcyBvcGVucyB1cCB0aGUgcG9z c2liaWxpdHkgb2YgdXNpbmcgZWxlbWVudHMgYWxvbmcgdGhpcwo+PiBwYXRoIHRvIHBhc3MgY29t cGxpYW5jZSB0ZXN0aW5nLCB0aGVyZWJ5IGNyZWF0aW5nIGEgbW9yZSB2YWxpZCB0ZXN0IGNhc2Uu Cj4+Cj4+IFdpdGggdGhpcyBpbiBtaW5kLCBJIGFtIG5vdCBvcHBvc2VkIHRvIHVzaW5nIGVsZW1l bnRzIGFsb25nIHRoYXQgcGF0aCB0bwo+PiBzYXRpc2Z5IGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRz ICh0aGF0J3MgdGhlIHNwaXJpdCBvZiB0aGUgdGVzdHMsIGFueXdheXMpCj4+IGJ1dCBhcyBJJ3Zl IGluZGljYXRlZCwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8gdGFrZSBzcGVjaWFs IHN0ZXBzCj4+IChsaWtlIHRoZSBlZGlkX2NvcnJ1cHQgZmxhZykgaW4gb3JkZXIgdG8gZG8gdGhl IHJpZ2h0IHRoaW5ncyB0byBwYXNzIHRoZQo+PiB0ZXN0cy4gSSBoYXZlIGNvbmNlcm5zIGFib3V0 IHRyeWluZyB0byBkbyB0aGF0IGF0IHRoaXMgcG9pbnQsIGFzIGl0IHJlcXVpcmVzCj4+IHN1YnN0 YW50aWFsIHJld29yayB0byB0aGF0IGNvZGUgcGF0aCB0aGF0IGhhdmUgYSBzaWduaWZpY2FudCBj aGFuY2Ugb2YKPj4gYnJlYWtpbmcgdGhpbmdzLiBTbyB0byBhdm9pZCB0aGF0LCAgSSBwcm9wb3Nl IHRoYXQgdGhpcyBwYXRjaCBiZSBtZXJnZWQgbm93Cj4+IHNvIHRoYXQgYSB3b3JraW5nIHNvbHV0 aW9uIGlzIGluIHBsYWNlLiBUaGlzIGRpc2N1c3Npb24gc2hvdWxkIGNvbnRpbnVlIGFuZAo+PiB3 ZSBjYW4gZGVjaWRlIHdoZXJlIHRvIHB1dCB0aGluZ3MgaW4gdGhlIGhvdHBsdWdfd29yayBwYXRo IHRvIHNhdGlzZnkgdGhlCj4+IGNvbXBsaWFuY2UgcmVxdWlyZXMgb3ZlciB0aGUgY291cnNlIG9m IHNvbWUgZm9sbG93dXAgcGF0Y2hlcy4KPiBJJ3ZlIGxvb2tlZCBhIGJpdCBhdCBhbGwgdGhpcyBh bmQgSSB0aGluayB0aGUgb3RoZXIgaXNzdWUgaGVyZSBpcyB0aGUKPiBwbGFjZW1lbnQgb2YgaW50 ZWxfZHBfaGFuZGxlX3Rlc3RfcmVxdWVzdCBpbiBjaGVja19saW5rX3N0YXR1cy4gVGhpcyBoYXMK PiBiZWVuIGRvbmUgYWxtb3N0IDQgeWVhcnMgYWdvIGluCj4KPiBjb21taXQgYTYwZjBlMzhkNzJh NWUyNDA4NWQ2ZTdlMjdhNGNhZGMyMGFlMjY4YQo+IEF1dGhvcjogSmVzc2UgQmFybmVzIDxqYmFy bmVzQHZpcnR1b3VzZ2Vlay5vcmc+Cj4gRGF0ZTogICBUaHUgT2N0IDIwIDE1OjA5OjE3IDIwMTEg LTA3MDAKPgo+ICAgICAgZHJtL2k5MTU6IGFkZCBEUCB0ZXN0IHJlcXVlc3QgaGFuZGxpbmcKPgo+ IGJ1dCBuZXZlciBjb250YWluZWQgKHVwIHRvIHRoaXMgcG9pbnQpIGFueSBmdW5jdGlvbmFsIGNv ZGUuIEl0IHdhcyBob3dldmVyCj4gZHV0aWZ1bGx5IG1vdmVkIGFyb3VuZCB0b2dldGhlciB3aXRo IHRoZSBvdGhlciBjb2RlLiBBbmQgd2F5IGJhY2sgdGhlCj4gcGxhY2VtZW50IGV2ZW4gbWFkZSBz b21lIHNlbnNlIC0gY2hlY2tfbGlua19zdGF0dXMgd2FzIGNhbGxlZAo+IHVuY29uZGl0aW9uYWxs eSBmcm9tIG91ciBob3RfcGx1ZyBoYW5kbGVyLiBCdXQgc2luY2UgdGhlIE1TVCByZXdvcmsgKGFu ZCBhCj4gZmV3IG90aGVyIHRoaW5ncykgaGFwcGVuZWQgdGhhdCBoYXMgYmVlbiBjaGFuZ2VkIHBy ZXR0eSByYWRpY2FsbHkgYW5kIHRoZQo+IGN1cnJlbnQgcGxhY2Ugd2hlcmUgdGhlIHRlc3QgcmVx dWVzdCBoYW5kbGVyIGlzIGNhbGxlZCBqdXN0IGRvZXNuJ3Qgc2VlbQo+IHRvIG1ha2UgdGhhdCBt dWNoIHNlbnNlIGFueSBtb3JlLgpBZ3JlZWQuIEZvciBWNywgSSBtb3ZlZCBpdCBmcm9tIGhlcmUg aW50byBpbnRlbF9kcF9kZXRlY3QuIEl0J3MgcGxhY2VkIApzbyB0aGF0IGFsbCB0aGUgbmVjZXNz YXJ5IG9wZXJhdGlvbnMgdG8gc2F0aXNmeSBjb21wbGlhbmNlIHRlc3RpbmcgCmhhcHBlbiBiZWZv cmUgdGhlIHRlc3QgaGFuZGxlciBpcyBjYWxsZWQsIHNvIHRoZXJlJ3MgdmlydHVhbGx5IG5vIApk dXBsaWNhdGVkIGNvZGUgYXQgYWxsIG5vdy4KPgo+IFdoaWxlIEkgc3RhcnRlZCBwdWxsaW5nIGlu IHBhdGNoZXMgSSBhbHNvIG5vdGljZWQgb3RoZXIgcGxhY2VzIHdoZXJlIHdlCj4gZHVwbGljYXRl IGV4aXN0aW5nIGxvZ2ljIChlLmcuIHRoZSBkcGNkIHJlYWQpLCBzbyB0aGlzIGlzbid0IGp1c3Qg YWJvdXQKPiB0aGUgZWRpZC4KPgo+IFRoZSBvdGhlciBhc3BlY3QgaGVyZSBpcyB0aGF0IG5vd2Fk YXlzIHdlIGRvIGNhY2hlIHRoZSBlZGlkIGZvciBkcCBwb3J0cwo+IGFnZ3Jlc3NpdmVseSwgd2hp Y2ggbWVhbnMgaWYgd2UgZG9uJ3QgcmVhZCB0aGUgZWRpZCB0aGUga2VybmVsIHdpbGwgaW5kZWVk Cj4ga2VlcCBvbiB1c2luZyBhIHN0YWxlIG9uZS4gSGVuY2UgdGhlcmUncyBhIGdvb2QgcmlzayB0 aGF0IHdlIGRvbid0IGp1c3QKPiBoYXZlIGEgbWlub3IgcGllY2Ugb2YgZHVjdC10YXBlIHRvIGtl ZXAgdGhlIHNvbWV3aGF0IHN0cmFuZ2UgZXhwZWN0YXRpb25zCj4gb2YgRFAgY29tcGxpYW5jZSB0 ZXN0ZXJzIGhhcHB5IGJ1dCBtaWdodCBiZSBoaWRpbmcgYSByZWFsIGJ1ZyBpbiBvdXIgRFAKPiBj b2RlLiBHaXZpbmcgaG93IG1hbnkgd2UndmUgaGFkIHRoYXQgc2VlbXMgZmFpcmx5IGxpa2VseSBh bmQgSSdtIG5vdCBoYXBweQo+IHdpdGggc3dlZXBpbmcgdGhpcyB1bmRlciB0aGUgcnVnLiBUaGlz IGRlZmluaXRlbHkgbmVlZHMgYSBzb2xpZAo+IGFuYWx5c2lzIGFuZCBleHBsYW5hdGlvbiBlaXRo ZXIgd2F5IChpLmUuIHdoZXRoZXIgdGhpcyBpcyBhIGJ1ZyBvciBqdXN0IGFuCj4gb3Zlcmx5IHN0 cmljdCBkcCBjb21wbGlhbmNlIHRlc3RlciByZXF1aXJlbWVudCkuCldpdGggdGhlIHRlc3QgaGFu ZGxlciBiZWluZyBjYWxsZWQgZnJvbSB0aGUgcmVndWxhciBob3QgcGx1ZyBwYXRoIGFzIAphYm92 ZSwgdGhpcyBpc24ndCByZWFsbHkgYW4gaXNzdWUgYW55bW9yZS4gQWxsIHRoZSBFRElEIHJlYWRz IGFyZSByZWFsIApyZWFkcyBiZWNhdXNlIHRoZXkncmUgb2NjdXJyaW5nIGR1cmluZyBhIGxvbmcg cHVsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIAp3aGVuIGludGVsX2RwX2RldGVjdCBpcyBjYWxsZWQs IHdlIHVuc2V0IHRoZSBlZGlkIGFuZCByZWFkIGEgZnJlc2ggY29weSAKZnJvbSB0aGUgZGV2aWNl LiBUaGUgY29tcGxpYW5jZSB0ZXN0IGhhbmRsZXIgdXNlcyBhbHNvIHRoZSByZWFsIGRhdGEgCmZy b20gdGhhdCBpbnN0ZWFkIG9mIGludGVybWVkaWF0ZSB2YWx1ZXMgYXMgaXQgZGlkIGJlZm9yZS4K PiBGaW5hbGx5IHRoZXJlJ3MgdGhlIGRwIGhvdHBsdWcgaGFuZGxpbmcuIEV2ZXIgc2luY2UgTVNU IHN1cHBvcnQgd2FzIG1lcmdlZAo+IHRoaXMgaGFzIGEgYmVlbiBhIGxvdCBvZiBmdW4gYW5kIHRv b2sgdXMgYSB3aGlsZSB0byBtYWtlIGl0IHdvcmsgY29ycmVjdGx5Cj4gLSBsb3RzIG9mIGRlYWRs b2NrcyBhbmQgb3RoZXIgaXNzdWVzLiBBbmQgZ2l2ZW4gdGhlIGFib3ZlIHdlIHN0aWxsIHNlZW0g dG8KPiBoYXZlIHJlZ3Jlc3Npb25zIGR1ZSB0byBNU1Qgc3VwcG9ydCwgb3IgYXQgbGVhc3QgZXZp ZGVuY2UgZm9yIHN1Y2guIFNpbmNlCj4gdGhpcyBpcyBhIGZhaXJseSBmcmFnaWxlIHBpZWNlIG9m IGNvZGUsIHdoaWNoIGlzIGFsc28gbm90IHRoYXQgd2VsbC10ZXN0ZWQKPiAod2UgZG9uJ3QgaGF2 ZSBhbnkgTVNUIGh3IGluIG91ciB0ZXN0IG1hdHJpeCB5ZXQpIEkgcHJlZmVyIHRvIGtlZXAgY2hh bmdlcwo+IHRvIGEgbWluaW11bS4gTWVyZ2luZyB0aGVzZSBwYXRjaGVzIGhlcmUgZmlyc3QgYW5k IHRoZW4gcG90ZW50aWFsbHkKPiB1bmRvaW5nIHRoZW0gYWdhaW4gYmVjYXVzZSB0aGUgYnVnIGhh cyBiZWVuIHRoZSAobWlzKXBsYWNlbWVudCBvZiB0aGUgdGVzdAo+IHJlcXVlc3QgaGFuZGxlciBp biB0aGUgTVNUIHBhdGNoZXMgZmVlbHMgdG9vIHJpc2t5LgpGb3IgVjcsIEkgcmVtb3ZlZCBhbGwg dGhlIGNoYW5nZXMgdG8gaW50ZWxfZHBfaHBkX3B1bHNlIGFzIEkgZm91bmQgdGhleSAKd2VyZSB1 bm5lY2Vzc2FyeSBvbmNlIHRoZSB0ZXN0IHJlcXVlc3QgY29kZSB3YXMgbW92ZWQgaW50byAKaW50 ZWxfZHBfZGV0ZWN0LiBUaGUgbW92ZSBvZiB0aGUgdGVzdCByZXF1ZXN0IGhhbmRsaW5nIGZyb20g CmNoZWNrX2xpbmtfc3RhdHVzIHRvIGludGVsX2RwX2RldGVjdCBpcyB0aGUgb25seSBjb2RlIGNo YW5nZSBvbiB0aGF0IApwYXRoIG5vdy4KPiBHaXZlbiBhbGwgdGhhdCBJJ2QgbGlrZSB0byBob2xk IG9mZiBtZXJnaW5nIHRoZXNlIHBhdGNoZXMgdGhhdCByZXdvcmsgdGhlCj4gY29kZSBhcm91bmQg dGhlIGNoZWNrX2xpbmtfc3RhdHVzIGZ1bmN0aW9uIHVudGlsIHdlIGhhdmUgY2xhcml0eSBoZXJl Lgo+Cj4gSSd2ZSBwdWxsZWQgaW4gdGhlIG90aGVyIHBhdGNoZXMgbWVhbndoaWxlIHdoaWNoIGFy ZSByZXZpZXdlZCBhbmQgcmVhZHkuIEkKPiBhbHNvIHRoaW5rIHdlIGNhbiBwdWxsIGluIHRoZSBk cm1fZWRpZC5jIHBhdGNoIHdpdGggdGhlIHN0YXRpc3RpY3MgY29kZSB3ZQo+IG5lZWQgZm9yIGNv bXBsaWFuY2UgdGVzdGluZyBhaGVhZCBvZiByZXNvbHZpbmcgdGhlIGFib3ZlIG9wZW5zLiBBbmQg aXQKPiB3b3VsZCBiZSBnb29kIHRvIGdldCBzb21lIGZlZWRiYWNrIGZyb20gb3RoZXIgKG5vbi1p bnRlbCkgZHJtIGRldmVsb3BlcnMKPiBiZWZvcmVoYW5kLCB0aGUgY2hhbmdlcyBhcmUgcXVpdGUg aW52YXNpdmUgaW4gc29tZSBwYXJ0cy4KPgo+IEkndmUgY2hhdHRlZCBhIGxvdCB3aXRoIFRvZGQg YW5kIFBhdWxvIGFuZCBJIHRoaW5rIG15IGRlY2lzaW9uIGhlcmUgYW5kCj4gdGhlIHJvdWdoIHBs YW4gbGFpZCBvdXQgaXMgdGhlIGJlc3QgY2hvaWNlIEkgaGF2ZSBmcm9tIGEgdGVjaG5pY2FsIHBv aW50Cj4gb2Ygdmlldy4KPgo+IFRoYW5rcywgRGFuaWVsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=