From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 1/4] drm/i915: Make atomic use in-flight state for CRTC active value Date: Thu, 9 Apr 2015 07:00:31 -0700 Message-ID: <20150409140031.GK11603@intel.com> References: <1428544614-28082-1-git-send-email-matthew.d.roper@intel.com> <1428544614-28082-2-git-send-email-matthew.d.roper@intel.com> <20150409124236.GI12038@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id C9AA76E7BD for ; Thu, 9 Apr 2015 07:00:40 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150409124236.GI12038@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-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBcHIgMDksIDIwMTUgYXQgMDI6NDI6MzZQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBXZWQsIEFwciAwOCwgMjAxNSBhdCAwNjo1Njo1MVBNIC0wNzAwLCBNYXR0IFJv cGVyIHdyb3RlOgo+ID4gT3VyIGF0b21pYyBwbGFuZSBjb2RlIGN1cnJlbnRseSB1c2VzIGludGVs X2NydGMtPmFjdGl2ZSB0byBkZXRlcm1pbmUKPiA+IGhvdy93aGVuIHRvIHVwZGF0ZSBzb21lIGRl cml2ZWQgc3RhdGUgdmFsdWVzLiAgVGhpcyB3b3JrcyBmaW5lIGZvciBwdXJlCj4gPiBwbGFuZSB1 cGRhdGVzIGF0IHRoZSBtb21lbnQgc2luY2UgdGhlIENSVEMgc3RhdGUgaXRzZWxmIGlzbid0IGNo YW5nZWQgYXMKPiA+IHBhcnQgb2YgdGhlIG9wZXJhdGlvbi4gIEhvd2V2ZXIgYXMgd2UgY29udmVy dCBtb3JlIG9mIG91ciBkcml2ZXIKPiA+IGludGVybmFscyBvdmVyIHRvIGF0b21pYyBtb2Rlc2V0 dGluZywgd2UgbmVlZCB0byBsb29rIGF0IHdoZXRoZXIgdGhlCj4gPiBDUlRDIHdpbGwgYmUgYWN0 aXZlIGF0IHRoZSAqZW5kKiBvZiB0aGUgYXRvbWljIHRyYW5zYWN0aW9uICh3aGljaCBtYXkKPiA+ IG5vdCBtYXRjaCB0aGUgY3VycmVudGx5IGNvbW1pdHRlZCBzdGF0ZSkuCj4gPiAKPiA+IFRoZSBp bi1mbGlnaHQgdmFsdWUgd2Ugd2FudCB0byB1c2UgaXMgZ2VuZXJhbGx5IGluIGEgY3J0Y19zdGF0 ZSBvYmplY3QKPiA+IGFzc29jaWF0ZWQgd2l0aCBvdXIgdG9wLWxldmVsIGF0b21pYyB0cmFuc2Fj dGlvbi4gIEhvd2V2ZXIgdGhlcmUgYXJlIGEKPiA+IGZldyBjYXNlcyB3aGVyZSB0aGlzIGlzbid0 IHRoZSBjYXNlOgo+ID4gCj4gPiAgKiBXaGlsZSB1c2luZyB0cmFuc2l0aW9uYWwgYXRvbWljIGhl bHBlcnMgKGFzIHdlIGFyZSBhdCB0aGUgbW9tZW50KSwKPiA+ICAgIFNldFBsYW5lKCkgY2FsbHMg d2lsbCBvcGVyYXRlIG9uIG9ycGhhbmVkIHBsYW5lIHN0YXRlcyB0aGF0IGFyZW4ndAo+ID4gICAg cGFydCBvZiBhIHRvcC1sZXZlbCBhdG9taWMgdHJhbnNhY3Rpb24uICBJbiB0aGlzIGNhc2UsIHdl J3JlIG5vdAo+ID4gICAgdG91Y2hpbmcgdGhlIENSVEMgc3RhdGUsIHNvIGl0J3MgZmluZSB0byB1 c2UgdGhlIGFscmVhZHktY29tbWl0dGVkCj4gPiAgICB2YWx1ZSBmcm9tIGNydGMtPnN0YXRlLgo+ ID4gCj4gPiAgKiBXaGlsZSB1cGRhdGluZyBwcm9wZXJ0aWVzIG9mIGEgZGlzYWJsZWQgcGxhbmUs IHdlJ2xsIGhhdmUgYSB0b3AtbGV2ZWwKPiA+ICAgIGF0b21pYyBzdGF0ZSwgYnV0IGl0IG1heSBu b3QgY29udGFpbiB0aGUgQ1JUQyBzdGF0ZSB3ZSdyZSBsb29raW5nCj4gPiAgICBmb3IuICBPbmNl IGFnYWluLCB0aGlzIG1lYW5zIHdlJ3JlIG5vdCBhY3R1YWxseSB0b3VjaGluZyBhbnkgQ1JUQwo+ ID4gICAgc3RhdGUgc28gaXQncyBzYWZlIHRvIHVzZSB0aGUgdmFsdWUgZnJvbSBjcnRjLT5zdGF0 ZSBkaXJlY3RseS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5k LnJvcGVyQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jIHwgMTEgKysrLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgICAgICB8IDczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAzICsrCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgfCAxNiArKysrKy0tCj4g PiAgNCBmaWxlcyBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPiA+ IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiA+IGluZGV4 IDk3NmI4OTEuLjkwYzRhODIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWNfcGxhbmUuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXRvbWljX3BsYW5lLmMKPiA+IEBAIC0xMTEsMTIgKzExMSwxNyBAQCBzdGF0aWMgaW50IGludGVs X3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICB7Cj4gPiAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+ID4gIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YzsKPiA+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2Ny dGNfc3RhdGU7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZSk7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfc3Rh dGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7Cj4gPiArCWJvb2wgYWN0aXZlOwo+ID4g IAo+ID4gIAljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiA+ICAJaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiAgCj4gPiArCWludGVsX2NydGNfc3RhdGUgPSBp bnRlbF9jcnRjX3N0YXRlX2Zvcl9wbGFuZShpbnRlbF9zdGF0ZSk7Cj4gPiArCWFjdGl2ZSA9IGlu dGVsX2NydGNfc3RhdGUtPmJhc2UuZW5hYmxlOwo+ID4gKwo+ID4gIAkvKgo+ID4gIAkgKiBCb3Ro IGNydGMgYW5kIHBsYW5lLT5jcnRjIGNvdWxkIGJlIE5VTEwgaWYgd2UncmUgdXBkYXRpbmcgYQo+ ID4gIAkgKiBwcm9wZXJ0eSB3aGlsZSB0aGUgcGxhbmUgaXMgZGlzYWJsZWQuICBXZSBkb24ndCBh Y3R1YWxseSBoYXZlCj4gPiBAQCAtMTQzLDEwICsxNDgsOCBAQCBzdGF0aWMgaW50IGludGVsX3Bs YW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJLyogQ2xpcCBh bGwgcGxhbmVzIHRvIENSVEMgc2l6ZSwgb3IgMHgwIGlmIENSVEMgaXMgZGlzYWJsZWQgKi8KPiA+ ICAJaW50ZWxfc3RhdGUtPmNsaXAueDEgPSAwOwo+ID4gIAlpbnRlbF9zdGF0ZS0+Y2xpcC55MSA9 IDA7Cj4gPiAtCWludGVsX3N0YXRlLT5jbGlwLngyID0KPiA+IC0JCWludGVsX2NydGMtPmFjdGl2 ZSA/IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyA6IDA7Cj4gPiAtCWludGVsX3N0YXRl LT5jbGlwLnkyID0KPiA+IC0JCWludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZp Zy0+cGlwZV9zcmNfaCA6IDA7Cj4gPiArCWludGVsX3N0YXRlLT5jbGlwLngyID0gYWN0aXZlID8g aW50ZWxfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyA6IDA7Cj4gPiArCWludGVsX3N0YXRlLT5jbGlw LnkyID0gYWN0aXZlID8gaW50ZWxfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCA6IDA7Cj4gPiAgCj4g PiAgCS8qCj4gPiAgCSAqIERpc2FibGluZyBhIHBsYW5lIGlzIGFsd2F5cyBva2F5OyB3ZSBqdXN0 IG5lZWQgdG8gdXBkYXRlCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBp bmRleCA3YmZlMmFmLi44OGIwZjY5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiA+IEBAIC0xMjU2Miw2ICsxMjU2Miw1MyBAQCBpbnRlbF9jbGVhbnVwX3BsYW5l X2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gKy8q Kgo+ID4gKyAqIGludGVsX2NydGNfc3RhdGVfZm9yX3BsYW5lIC0gT2J0YWluIENSVEMgc3RhdGUg Zm9yIGEgcGxhbmUKPiA+ICsgKiBAcHN0YXRlOiBwbGFuZSBzdGF0ZSB0byBsb29rdXAgY29ycmVz cG9uZGluZyBjcnRjIHN0YXRlIGZvcgo+ID4gKyAqCj4gPiArICogV2hlbiB3b3JraW5nIHdpdGgg YSB0b3AtbGV2ZWwgYXRvbWljIHRyYW5zYWN0aW9uIChkcm1fYXRvbWljX3N0YXRlKSwKPiA+ICsg KiBhIENSVEMgc3RhdGUgc2hvdWxkIGJlIHByZXNlbnQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUg cHJvdmlkZWQKPiA+ICsgKiBwbGFuZSBzdGF0ZTsgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHF1 aWNrIHdheSB0byBmZXRjaCB0aGF0Cj4gPiArICogQ1JUQyBzdGF0ZS4gIEluIGNhc2VzIHdoZXJl IHdlIGhhdmUgYSBwbGFuZSBzdGF0ZSB1bmFzc29jaWF0ZWQgd2l0aCBhbnkKPiA+ICsgKiB0b3At bGV2ZWwgYXRvbWljIHRyYW5zYWN0aW9uIChlLmcuLCB3aGlsZSB1c2luZyB0aGUgdHJhbnNpdGlv bmFsIGF0b21pYwo+ID4gKyAqIGhlbHBlcnMpLCB0aGUgY3VycmVudCBDUlRDIHN0YXRlIGZyb20g Y3J0Yy0+c3RhdGUgd2lsbCBiZSByZXR1cm5lZAo+ID4gKyAqIGluc3RlYWQuCj4gPiArICovCj4g PiArc3RydWN0IGludGVsX2NydGNfc3RhdGUgKgo+ID4gK2ludGVsX2NydGNfc3RhdGVfZm9yX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gcHN0YXRlLT5iYXNlLnN0YXRlOwo+ID4gKwlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocHN0YXRlLT5iYXNlLnBsYW5l KTsKPiA+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUo cHN0YXRlLT5iYXNlLnBsYW5lLT5kZXYsCj4gPiArCQkJCQkJCXBsYW5lLT5waXBlKTsKPiA+ICsJ aW50IGk7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFdoaWxlIHVzaW5nIHRyYW5zaXRpb25hbCBw bGFuZSBoZWxwZXJzLCB3ZSBtYXkgbm90IGhhdmUgYSB0b3AtbGV2ZWwKPiA+ICsJICogYXRvbWlj IHRyYW5zYWN0aW9uLiAgT2YgY291cnNlIHRoYXQgYWxzbyBtZWFucyB0aGF0IHdlJ3JlIG5vdAo+ ID4gKwkgKiBhY3R1YWxseSB0b3VjaGluZyBDUlRDIHN0YXRlLCBzbyBqdXN0IHJldHVybiB0aGUg Y3VycmVudGx5Cj4gPiArCSAqIGNvbW1pdHRlZCBzdGF0ZS4KPiA+ICsJICovCj4gCj4gSW1vIHRo aXMgbmVlZHMgYSBiaWcgRklYTUUgYXQgdGhlIHRvcCBvZiB0aGUgY29tbWVudCA7LSkKPiAKPiA+ ICsJaWYgKCFzdGF0ZSkKPiA+ICsJCXJldHVybiB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IHN0YXRlLT5kZXYtPm1vZGVfY29uZmln Lm51bV9jcnRjOyBpKyspIHsKPiA+ICsJCWlmICghc3RhdGUtPmNydGNzW2ldKQo+ID4gKwkJCWNv bnRpbnVlOwo+ID4gKwo+ID4gKwkJaWYgKHRvX2ludGVsX2NydGMoc3RhdGUtPmNydGNzW2ldKS0+ cGlwZSA9PSBwbGFuZS0+cGlwZSkKPiA+ICsJCQlyZXR1cm4gdG9faW50ZWxfY3J0Y19zdGF0ZShz dGF0ZS0+Y3J0Y19zdGF0ZXNbaV0pOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFdl IG1heSBoYXZlIGEgcGxhbmUgc3RhdGUgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgQ1JUQyBzdGF0 ZSBpZgo+ID4gKwkgKiB3ZSdyZSB1cGRhdGluZyBhIHByb3BlcnR5IG9mIGEgZGlzYWJsZWQgcGxh bmUuICBBZ2FpbiwganVzdCB1c2luZwo+ID4gKwkgKiB0aGUgYWxyZWFkeS1jb21taXR0ZWQgc3Rh dGUgZm9yIHRoaXMgcGxhbmUncyBDUlRDIHNob3VsZCBiZSBmaW5lCj4gPiArCSAqIHNpbmNlIHdl J3JlIG5vdCBhY3R1YWxseSB0b3VjaGluZyB0aGUgQ1JUQyBoZXJlLgo+ID4gKwkgKi8KPiAKPiBJ cyB0aGlzIHJlYWxseSBzdGlsbCB0cnVlIHdpdGggQW5kZXIncyBwYXRjaGVzPyBJZiB0aGUgdWRw YXRlIGlzIHBhcnQgb2YgYQo+IGRybV9hdG9taWNfc3RhdGUgc3RydWN0dXJlLCB0aGVuIHdlIHNo b3VsZCBhbHdheXMgaGF2ZSB0aGUgY29ycmVzcG9uZGluZwo+IGNydGMgc3RhdGUgaGFuZHkgSSB0 aGluay4gV2hpY2ggY2FzZXMgc3RpbGwgZmFpbCB0aGlzIGFzc3VtcHRpb24/CgpBbnkgdGltZSBh IHRyYW5zYWN0aW9uIHVwZGF0ZXMgYSBwbGFuZSwgdGhlIGNvcnJlc3BvbmRpbmcgQ1JUQyBzdGF0 ZSAoYXMKZGVmaW5lZCBieSBwbGFuZV9zdGF0ZS0+Y3J0Yykgc2hvdWxkIGdldCBhZGRlZCB0byB0 aGUgdHJhbnNhY3Rpb24gYnkgdGhlCmF0b21pYyBjb3JlIGNvZGUgKHNwZWNpZmljYWxseSBpbiBk cm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZSkuICBCdXQgd2hlbgphIHBsYW5lIGlzIGRpc2FibGVk LCBzdGF0ZS0+Y3J0YyBpcyBOVUxMIHNvIHRoZXJlIHNpbXBseSBpcyBubwphc3NvY2lhdGVkIENS VEMgdG8gYWRkIChhdCBsZWFzdCBhcyBmYXIgYXMgdGhlIGNvcmUgaXMgY29uY2VybmVkKS4gIFNv CnlvdSB3aW5kIHVwIHdpdGgganVzdCBhIHBsYW5lIHN0YXRlIGJlaW5nIGFkZGVkIHRvIHRoZSB0 b3AtbGV2ZWwgYXRvbWljCnN0YXRlIGluIHRoYXQgY2FzZS4KCgpNYXR0Cgo+IAo+ID4gKwlyZXR1 cm4gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0 YXRpYyBpbnQKPiA+ICBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ID4gIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiA+IEBA IC0xMjU3MCwxNSArMTI2MTcsMjAgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUt PmJhc2UuY3J0YzsKPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gPiArCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jcnRjX3N0YXRlOwo+ID4gIAlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+ID4gIAlzdHJ1Y3QgZHJtX3JlY3Qg KmRlc3QgPSAmc3RhdGUtPmRzdDsKPiA+ICAJc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmc3RhdGUt PnNyYzsKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwo+ ID4gKwlib29sIGFjdGl2ZTsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+ICAJY3J0YyA9IGNydGMg PyBjcnRjIDogcGxhbmUtPmNydGM7Cj4gPiAgCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ID4gIAo+ID4gKwlpbnRlbF9jcnRjX3N0YXRlID0gaW50ZWxfY3J0Y19zdGF0ZV9mb3Jf cGxhbmUoc3RhdGUpOwo+ID4gKwlhY3RpdmUgPSBpbnRlbF9jcnRjX3N0YXRlLT5iYXNlLmVuYWJs ZTsKPiAKPiBUaGlzIGlzIHRoZSB3cm9uZyBvbmUgSSB0aGluay4gZHJtX2NydGNfc3RhdGUtPmVu YWJsZSBpcyB0aGUgbG9naWNhbAo+IGVuYWJsaW5nIHN0YXRlLCBpLmUuIHdoZXRoZXIgdGhlcmUn cyBjb25uZWN0b3JzIGNvbm5lY3RlZCB0byB0aGUgY3J0YyBhbmQKPiBhIG1vZGUgc2V0LiBzdGF0 ZS0+YWN0aXZlIGlzIHRoZSBkZXNpcmVkIGh3IHN0YXRlLCBpLmUuIHRha2luZyBkcG1zIGFuZAo+ IGFsbCB0aGF0IGludG8gYWNjb3VudCwgYW5kIGhlbmNlIHJlZmxlY3Rpbmcgb3VyIGludGVsX2Ny dGMtPmFjdGl2ZSBodwo+IHRyYWNraW5nIGJvb2xlYW4gKHRoZXkgbWF0Y2ggbmFtZXMgaW50ZW50 aW9uYWxseSkuCj4gCj4gRG8gd2Ugc3RpbGwgbWlzcyBjYXNlcyB3aGVyZSB3ZSB1cGRhdGUgY3J0 Y19zdGF0ZS0+YWN0aXZlIG9yIHdoYXQncyB0aGUKPiByZWFzb24gZm9yIHBpY2tpbmcgLT5lbmFi bGUgaGVyZT8KCkknbGwgaGF2ZSB0byBkb3VibGUgY2hlY2s7IEkgdGhvdWdodCB0aGlzIHdhcyBh IGxpdHRsZSBmaXNoeSwgYnV0IGl0Cmxvb2tlZCBsaWtlIG91ciBpOTE1IGNvZGUgd2Fzbid0IGFj dHVhbGx5IHNldHRpbmcgLT5hY3RpdmUgYW55d2hlcmUgeWV0CmluIG91ciBsZWdhY3kgbW9kZXNl dCBjb2RlcGF0aHMgKGFsdGhvdWdoIG1heWJlIEkganVzdCBtaXNzZWQgaXQpLiAgV2UKZG8gc2V0 IC0+ZW5hYmxlIGRpcmVjdGx5IHRvIGludGVsX2NydGMtPmFjdGl2ZSBpbiBhIGZldyBwbGFjZXMg dGhvdWdoLAp3aGljaCBpcyB3aHkgSSB3ZW50IHdpdGggdGhhdCBvbmUgZm9yIG5vdy4KCgpNYXR0 Cgo+IC1EYW5pZWwKPiAKCi0tIApNYXR0IFJvcGVyCkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVy CklvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudApJbnRlbCBDb3Jwb3JhdGlvbgoo OTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=