From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: Re: [PATCH 7/7] drm/i915: Consolidate plane 'cleanup' operations (v3) Date: Wed, 03 Dec 2014 11:52:24 +0200 Message-ID: <547EDD58.7040906@gmail.com> References: <547DC83B.6050105@gmail.com> <1417535125-3761-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lb0-f171.google.com (mail-lb0-f171.google.com [209.85.217.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 109A372DE7 for ; Wed, 3 Dec 2014 01:52:31 -0800 (PST) Received: by mail-lb0-f171.google.com with SMTP id n15so12064474lbi.16 for ; Wed, 03 Dec 2014 01:52:30 -0800 (PST) In-Reply-To: <1417535125-3761-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8Y29uc2VsdmFuMkBnbWFp bC5jb20+CgpPbiAxMi8wMi8yMDE0IDA1OjQ1IFBNLCBNYXR0IFJvcGVyIHdyb3RlOgo+IEFsbCBw bGFuZSB1cGRhdGUgZnVuY3Rpb25zIG5lZWQgdG8gdW5waW4gdGhlIG9sZCBmcmFtZWJ1ZmZlciB3 aGVuCj4gZmxpcHBpbmcgdG8gYSBuZXcgb25lLiAgUHVsbCB0aGlzIGxvZ2ljIGludG8gYSBzZXBh cmF0ZSBmdW5jdGlvbiB0byBlYXNlCj4gdGhlIGludGVncmF0aW9uIHdpdGggYXRvbWljIHBsYW5l IGhlbHBlcnMuCj4KPiB2MjogRG9uJ3Qgd2FpdCBmb3IgdmJsYW5rIGlmIHdlIGRvbid0IGhhdmUg YW4gb2xkIGZiIHRvIGNsZWFudXAgKEFuZGVyKQo+Cj4gdjM6IFJlYWxseSBkb24ndCB3YWl0IGZv ciB2YmxhbmsgaWYgd2UgZG9uJ3QgaGF2ZSBhbiBvbGQgZmIgdG8gY2xlYW51cC4KPiAgICAgIFBy ZXZpb3VzIHZlcnNpb24gb25seSBoYW5kbGVkIHRoaXMgZm9yIHByaW1hcnkgcGxhbmVzOyB3ZSBu ZWVkIHRoZQo+ICAgICAgc2FtZSBjaGFuZ2Ugb24gY3Vyc29ycy9zcHJpdGVzIHRvbyEgIChBbmRl cikKPgo+IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5j b20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA1OCAr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgICB8ICAyICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYyAgfCAyNiArKysrKy0tLS0tLS0tLS0tCj4gICAzIGZpbGVzIGNoYW5nZWQsIDQ5 IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IGluZGV4IGY0OGZhYWEuLjg2YzQ2ODYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTExNzAxLDYgKzExNzAxLDMxIEBAIGludGVsX3ByZXBh cmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJcmV0dXJuIHJldDsKPiAg IH0KPgo+ICsvKioKPiArICogaW50ZWxfY2xlYW51cF9wbGFuZV9mYiAtIENsZWFucyB1cCBhbiBm YiBhZnRlciBwbGFuZSB1c2UKPiArICogQHBsYW5lOiBkcm0gcGxhbmUgdG8gY2xlYW4gdXAgZm9y Cj4gKyAqIEBmYjogb2xkIGZyYW1lYnVmZmVyIHRoYXQgd2FzIG9uIHBsYW5lCj4gKyAqCj4gKyAq IENsZWFucyB1cCBhIGZyYW1lYnVmZmVyIHRoYXQgaGFzIGp1c3QgYmVlbiByZW1vdmVkIGZyb20g YSBwbGFuZS4KPiArICovCj4gK3ZvaWQKPiAraW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiArCQkgICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIp Cj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICsJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gKwo+ICsJaWYg KFdBUk5fT04oIW9iaikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChwbGFuZS0+dHlwZSAhPSBE Uk1fUExBTkVfVFlQRV9DVVJTT1IgfHwKPiArCSAgICAhSU5URUxfSU5GTyhkZXYpLT5jdXJzb3Jf bmVlZHNfcGh5c2ljYWwpIHsKPiArCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g KwkJaW50ZWxfdW5waW5fZmJfb2JqKG9iaik7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gKwl9Cj4gK30KPiArCj4gICBzdGF0aWMgaW50Cj4gICBpbnRlbF9jaGVja19w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCQkJICBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+IEBAIC0xMTcyOCw5ICsxMTc1Myw3IEBAIGludGVsX2Nv bW1pdF9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAgCWVudW0g cGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg Km9sZF9mYiA9IHBsYW5lLT5mYjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gaW50ZWxfZmJfb2JqKGZiKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRf b2JqID0gaW50ZWxfZmJfb2JqKHBsYW5lLT5mYik7Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICpp bnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3Qg KnNyYyA9ICZzdGF0ZS0+c3JjOwo+Cj4gQEAgLTExODAxLDE1ICsxMTgyNCw2IEBAIGludGVsX2Nv bW1pdF9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCQlpbnRlbF91 cGRhdGVfZmJjKGRldik7Cj4gICAJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCX0KPiAtCj4gLQlpZiAob2xkX2ZiICYmIG9sZF9mYiAhPSBmYikgewo+IC0JCWlmIChpbnRl bF9jcnRjLT5hY3RpdmUpCj4gLQkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2Ny dGMtPnBpcGUpOwo+IC0KPiAtCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQkJ aW50ZWxfdW5waW5fZmJfb2JqKG9sZF9vYmopOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+IC0JfQo+ICAgfQo+Cj4gICBzdGF0aWMgaW50Cj4gQEAgLTExODE5LDYgKzEx ODMzLDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9zZXRwbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCQkJICAgICB1aW50MzJfdCBzcmNfeCwg dWludDMyX3Qgc3JjX3ksCj4gICAJCQkgICAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNf aCkKPiAgIHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAgCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IHBsYW5lLT5mYjsKPiAgIAlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgc3RhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IEBAIC0xMTg2Niw2ICsxMTg4MSwxMiBAQCBpbnRlbF9w cmltYXJ5X3BsYW5lX3NldHBsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4KPiAgIAlpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShwbGFuZSwgJnN0 YXRlKTsKPgo+ICsJaWYgKGZiICE9IG9sZF9mYiAmJiBvbGRfZmIpIHsKPiArCQlpZiAoaW50ZWxf Y3J0Yy0+YWN0aXZlKQo+ICsJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9jcnRj LT5waXBlKTsKPiArCQlpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHBsYW5lLCBvbGRfZmIpOwo+ICsJ fQo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+IEBAIC0xMjA0OCwxNCArMTIwNjksNiBAQCBp bnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCWVs c2UKPiAgIAkJYWRkciA9IG9iai0+cGh5c19oYW5kbGUtPmJ1c2FkZHI7Cj4KPiAtCWlmIChpbnRl bF9jcnRjLT5jdXJzb3JfYm8pIHsKPiAtCQlpZiAoIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25l ZWRzX3BoeXNpY2FsKSB7Cj4gLQkJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAt CQkJaW50ZWxfdW5waW5fZmJfb2JqKGludGVsX2NydGMtPmN1cnNvcl9ibyk7Cj4gLQkJCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCX0KPiAtCX0KPiAtCj4gICAJaW50ZWxf Y3J0Yy0+Y3Vyc29yX2FkZHIgPSBhZGRyOwo+ICAgCWludGVsX2NydGMtPmN1cnNvcl9ibyA9IG9i ajsKPiAgIHVwZGF0ZToKPiBAQCAtMTIwODAsNiArMTIwOTMsNyBAQCBpbnRlbF9jdXJzb3JfcGxh bmVfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gICAJCQkgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKPiAgIAkJCSAgdWludDMy X3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQo+ICAgewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHBsYW5lLT5kZXY7Cj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiID0gcGxh bmUtPmZiOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgc3RhdGU7Cj4gQEAgLTEyMTIw LDYgKzEyMTM0LDEyIEBAIGludGVsX2N1cnNvcl9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPgo+ICAgCWludGVsX2NvbW1pdF9jdXJz b3JfcGxhbmUocGxhbmUsICZzdGF0ZSk7Cj4KPiArCWlmIChmYiAhPSBvbGRfZmIgJiYgb2xkX2Zi KSB7Cj4gKwkJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKPiArCQkJaW50ZWxfd2FpdF9mb3JfdmJs YW5rKGRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gKwkJaW50ZWxfY2xlYW51cF9wbGFuZV9mYihw bGFuZSwgb2xkX2ZiKTsKPiArCX0KPiArCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGEzNmY2OTYuLjM4Y2I1NTMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IEBAIC05MjQsNiArOTI0LDggQEAgdm9pZCBpbnRlbF9maW5pc2hf cGFnZV9mbGlwX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSk7Cj4gICB2 b2lkIGludGVsX2NoZWNrX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlw ZSk7Cj4gICBpbnQgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiAgIAkJCSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKPiArdm9pZCBpbnRlbF9j bGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkgICAgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwo+Cj4gICAvKiBzaGFyZWQgZHBsbCBmdW5jdGlvbnMgKi8K PiAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBpbmRleCA1ZDhjMmUwLi4wMzFmOTVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBAQCAtMTI2OCw3ICsxMjY4LDYgQEAgaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMt PnBpcGU7Cj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsK PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsK PiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0gaW50ZWxfcGxhbmUtPm9i ajsKPiAgIAlpbnQgY3J0Y194LCBjcnRjX3k7Cj4gICAJdW5zaWduZWQgaW50IGNydGNfdywgY3J0 Y19oOwo+ICAgCXVpbnQzMl90IHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oOwo+IEBAIC0xMzI2 LDIzICsxMzI1LDYgQEAgaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgIAkJaWYgKCFwcmltYXJ5X3dhc19lbmFibGVkICYmIHByaW1hcnlfZW5hYmxl ZCkKPiAgIAkJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoY3J0Yyk7Cj4gICAJfQo+IC0KPiAt CS8qIFVucGluIG9sZCBvYmogYWZ0ZXIgbmV3IG9uZSBpcyBhY3RpdmUgdG8gYXZvaWQgdWdsaW5l c3MgKi8KPiAtCWlmIChvbGRfb2JqICYmIG9sZF9vYmogIT0gb2JqKSB7Cj4gLQo+IC0JCS8qCj4g LQkJICogSXQncyBmYWlybHkgY29tbW9uIHRvIHNpbXBseSB1cGRhdGUgdGhlIHBvc2l0aW9uIG9m Cj4gLQkJICogYW4gZXhpc3Rpbmcgb2JqZWN0LiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBuZWVk IHRvCj4gLQkJICogd2FpdCBmb3IgdmJsYW5rIHRvIGF2b2lkIHVnbGluZXNzLCB3ZSBvbmx5IG5l ZWQgdG8KPiAtCQkgKiBkbyB0aGUgcGluICYgcmVmIGJvb2trZWVwaW5nLgo+IC0JCSAqLwo+IC0J CWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCj4gLQkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYs IGludGVsX2NydGMtPnBpcGUpOwo+IC0KPiAtCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4gLQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9vYmopOwo+IC0JCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+ICAgfQo+Cj4gICBzdGF0aWMgaW50Cj4gQEAgLTEz NTIsNiArMTMzNCw3IEBAIGludGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCQkgICB1aW50MzJfdCBzcmNfeCwgdWludDMy X3Qgc3JjX3ksCj4gICAJCSAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKPiAgIHsK PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKm9sZF9mYiA9IHBsYW5lLT5mYjsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgc3RhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwo+IEBAIC0xMzkwLDYgKzEzNzMsMTMgQEAgaW50ZWxfdXBkYXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJfQo+ Cj4gICAJaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShwbGFuZSwgJnN0YXRlKTsKPiArCj4gKwlp ZiAoZmIgIT0gb2xkX2ZiICYmIG9sZF9mYikgewo+ICsJCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUp Cj4gKwkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOwo+ICsJ CWludGVsX2NsZWFudXBfcGxhbmVfZmIocGxhbmUsIG9sZF9mYik7Cj4gKwl9Cj4gKwo+ICAgCXJl dHVybiAwOwo+ICAgfQo+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==