From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 01/14] drm: add new plane property FB_DAMAGE_CLIPS to send damage during plane update Date: Fri, 7 Sep 2018 17:23:06 +0300 Message-ID: <20180907142306.GD5565@intel.com> References: <20180905233901.2321-1-drawat@vmware.com> <20180905233901.2321-2-drawat@vmware.com> <20180906115958.GX5565@intel.com> 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 ESMTPS id 424CF6E93A for ; Fri, 7 Sep 2018 14:23:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Deepak Singh Rawat Cc: Thomas Hellstrom , linux-graphics-maintainer , "lukasz.spintzyk@displaylink.com" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBTZXAgMDYsIDIwMTggYXQgMTA6MzI6NThQTSArMDAwMCwgRGVlcGFrIFNpbmdoIFJh d2F0IHdyb3RlOgo+ID4gCj4gPiBPbiBXZWQsIFNlcCAwNSwgMjAxOCBhdCAwNDozODo0OFBNIC0w NzAwLCBEZWVwYWsgUmF3YXQgd3JvdGU6Cj4gPiA+IEZyb206IEx1a2FzeiBTcGludHp5ayA8bHVr YXN6LnNwaW50enlrQGRpc3BsYXlsaW5rLmNvbT4KPiA+ID4KPiA+ID4gRkJfREFNQUdFX0NMSVBT IGlzIGFuIG9wdGlvbmFsIHBsYW5lIHByb3BlcnR5IHRvIG1hcmsgZGFtYWdlZCByZWdpb25zCj4g PiA+IG9uIHRoZSBwbGFuZSBpbiBmcmFtZWJ1ZmZlciBjb29yZGluYXRlcyBvZiB0aGUgZnJhbWVi dWZmZXIgYXR0YWNoZWQgdG8KPiA+ID4gdGhlIHBsYW5lLgo+ID4gPgo+ID4gPiBUaGUgbGF5b3V0 IG9mIGJsb2IgZGF0YSBpcyBzaW1wbHkgYW4gYXJyYXkgb2YgInN0cnVjdCBkcm1fbW9kZV9yZWN0 Igo+ID4gPiB3aXRoIG1heGltdW0gYXJyYXkgc2l6ZSBsaW1pdGVkIGJ5IERSTV9NT0RFX0ZCX0RJ UlRZX01BWF9DTElQUy4KPiA+IFVubGlrZQo+ID4gPiBwbGFuZSBzcmMgY29vcmRpbmF0ZXMsIGRh bWFnZSBjbGlwcyBhcmUgbm90IGluIDE2LjE2IGZpeGVkIHBvaW50LiBBcwo+ID4gPiBwbGFuZSBz cmMgaW4gZnJhbWVidWZmZXIgY2Fubm90IGJlIG5lZ2F0aXZlIHNvIGFyZSBkYW1hZ2UgY2xpcHMu IEluCj4gPiA+IGRhbWFnZSBjbGlwLCB4MS95MSBhcmUgaW5jbHVzaXZlIGFuZCB4Mi95MiBhcmUg ZXhjbHVzaXZlLgo+ID4gPgo+ID4gPiBUaGlzIHBhdGNoIGFsc28gZXhwb3J0cyB0aGUga2VybmVs IGludGVybmFsIGRybV9yZWN0IHRvIHVzZXJzcGFjZSBhcwo+ID4gPiBkcm1fbW9kZV9yZWN0LiBU aGlzIGlzIGJlY2F1c2UgInN0cnVjdCBkcm1fY2xpcF9yZWN0IiBpcyBub3Qgc3VmZmljaWVudAo+ ID4gPiB0byByZXByZXNlbnQgZGFtYWdlIGZvciBjdXJyZW50IHBsYW5lIHNpemUuCj4gPiA+Cj4g PiA+IFVwcGVyIGxpbWl0IGlzIHNldCBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGFtYWdlIGNs aXBzIHRvIGF2b2lkCj4gPiA+IG92ZXJmbG93IGJ5IHVzZXItc3BhY2UuCj4gPiA+Cj4gPiA+IERy aXZlciB3aGljaCBhcmUgaW50ZXJlc3RlZCBpbiBlbmFibGluZyBGQl9EQU1BR0VfQ0xJUFMgcHJv cGVydHkgZm9yIGEKPiA+ID4gcGxhbmUgc2hvdWxkIGVuYWJsZSB0aGlzIHByb3BlcnR5IHVzaW5n IGRybV9wbGFuZV9lbmFibGVfZGFtYWdlX2NsaXBzLgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBMdWthc3ogU3BpbnR6eWsgPGx1a2Fzei5zcGludHp5a0BkaXNwbGF5bGluay5jb20+Cj4gPiA+ IFNpZ25lZC1vZmYtYnk6IERlZXBhayBSYXdhdCA8ZHJhd2F0QHZtd2FyZS5jb20+Cj4gPiA+IC0t LQo+ID4gPiAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QgICAgICAgfCAgOSArKysKPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgIHwgIDIgKy0KPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgIHwgMTMgKysrKwo+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAgNCArKwo+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2RybV9kYW1hZ2VfaGVscGVyLmMgfCA5Mgo+ID4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYyAgIHwgIDYgKysK PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jIHwgIDEgKwo+ID4gPiAg aW5jbHVkZS9kcm0vZHJtX2RhbWFnZV9oZWxwZXIuaCAgICAgfCA2MyArKysrKysrKysrKysrKysr KysrKwo+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmggICAgICAgfCAxMCArKysr Cj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAgICAgICB8ICA4ICsrKwo+ID4g PiAgaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oICAgICAgICAgfCAxOSArKysrKysKPiA+ID4g IDExIGZpbGVzIGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9kYW1hZ2VfaGVscGVyLmMK PiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fZGFtYWdlX2hlbHBlci5o Cj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCBi L0RvY3VtZW50YXRpb24vZ3B1L2RybS0KPiA+IGttcy5yc3QKPiA+ID4gaW5kZXggNWRlZTZiOGE0 YzEyLi43OGI2NmU2Mjg4NTcgMTAwNjQ0Cj4gPiA+IC0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2Ry bS1rbXMucnN0Cj4gPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMucnN0Cj4gPiA+ IEBAIC01NDIsNiArNTQyLDE1IEBAIFBsYW5lIENvbXBvc2l0aW9uIFByb3BlcnRpZXMKPiA+ID4g IC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKPiA+ID4gICAgIDpl eHBvcnQ6Cj4gPiA+Cj4gPiA+ICtGQl9EQU1BR0VfQ0xJUFMKPiA+ID4gK35+fn5+fn5+fn5+fn5+ fgo+ID4gPiArCj4gPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9kYW1h Z2VfaGVscGVyLmMKPiA+ID4gKyAgIDpkb2M6IG92ZXJ2aWV3Cj4gPiA+ICsKPiA+ID4gKy4uIGtl cm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RhbWFnZV9oZWxwZXIuYwo+ID4gPiArICAg OmV4cG9ydDoKPiA+ID4gKwo+ID4gPiAgQ29sb3IgTWFuYWdlbWVudCBQcm9wZXJ0aWVzCj4gPiA+ ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gPiBp bmRleCBhNjc3MWNlZjg1ZTIuLmNhNWJlMGRlY2IzZiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ ID4gPiBAQCAtMzUsNyArMzUsNyBAQCBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBl ci5vCj4gPiBkcm1fZHBfaGVscGVyLm8gZHJtX3Byb2JlX2hlbHBlci5vIFwKPiA+ID4gIAkJZHJt X3BsYW5lX2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubwo+ID4gZHJtX2F0b21pY19oZWxw ZXIubyBcCj4gPiA+ICAJCWRybV9rbXNfaGVscGVyX2NvbW1vbi5vIGRybV9kcF9kdWFsX21vZGVf aGVscGVyLm8KPiA+IFwKPiA+ID4gIAkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVz ZXRfaGVscGVyLm8gXAo+ID4gPiAtCQlkcm1fc2NkY19oZWxwZXIubyBkcm1fZ2VtX2ZyYW1lYnVm ZmVyX2hlbHBlci5vCj4gPiA+ICsJCWRybV9zY2RjX2hlbHBlci5vIGRybV9nZW1fZnJhbWVidWZm ZXJfaGVscGVyLm8KPiA+IGRybV9kYW1hZ2VfaGVscGVyLm8KPiA+ID4KPiA+ID4gIGRybV9rbXNf aGVscGVyLSQoQ09ORklHX0RSTV9QQU5FTF9CUklER0UpICs9IGJyaWRnZS9wYW5lbC5vCj4gPiA+ ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPQo+ID4gZHJt X2ZiX2hlbHBlci5vCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ID4gaW5kZXggM2ViMDYx ZTExZTJlLi42NTJlNzhjYTFmODEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4g PiBAQCAtODU3LDYgKzg1Nyw4IEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJv cGVydHkoc3RydWN0Cj4gPiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiAgewo+ID4gPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ID4gPiAgCXN0cnVjdCBkcm1fbW9kZV9j b25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ID4gPiArCWJvb2wgcmVwbGFjZWQg PSBmYWxzZTsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPgo+ID4gPiAgCWlmIChwcm9wZXJ0eSA9PSBj b25maWctPnByb3BfZmJfaWQpIHsKPiA+ID4gIAkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PQo+ID4gZHJtX2ZyYW1lYnVmZmVyX2xvb2t1cChkZXYsIE5VTEwsIHZhbCk7Cj4gPiA+IEBAIC05 MDgsNiArOTEwLDE0IEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHko c3RydWN0Cj4gPiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiAgCQlzdGF0ZS0+Y29sb3JfZW5jb2Rp bmcgPSB2YWw7Cj4gPiA+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JfcmFu Z2VfcHJvcGVydHkpIHsKPiA+ID4gIAkJc3RhdGUtPmNvbG9yX3JhbmdlID0gdmFsOwo+ID4gPiAr CX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2ZiX2RhbWFnZV9jbGlwcykgewo+ ID4gPiArCQlyZXQgPSBkcm1fYXRvbWljX3JlcGxhY2VfcHJvcGVydHlfYmxvYl9mcm9tX2lkKGRl diwKPiA+ID4gKwkJCQkJJnN0YXRlLT5mYl9kYW1hZ2VfY2xpcHMsCj4gPiA+ICsJCQkJCXZhbCwK PiA+ID4gKwkJCQkJLTEsCj4gPiA+ICsJCQkJCXNpemVvZihzdHJ1Y3QgZHJtX3JlY3QpLAo+ID4g PiArCQkJCQkmcmVwbGFjZWQpOwo+ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4gPiAgCX0gZWxzZSBp ZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7Cj4gPiA+ICAJCXJldHVybiBw bGFuZS0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLAo+ID4gPiAgCQkJ CXByb3BlcnR5LCB2YWwpOwo+ID4gPiBAQCAtOTc2LDYgKzk4Niw5IEBAIGRybV9hdG9taWNfcGxh bmVfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUKPiA+ICpwbGFuZSwKPiA+ID4gIAkJKnZh bCA9IHN0YXRlLT5jb2xvcl9lbmNvZGluZzsKPiA+ID4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09 IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSkgewo+ID4gPiAgCQkqdmFsID0gc3RhdGUtPmNv bG9yX3JhbmdlOwo+ID4gPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2Zi X2RhbWFnZV9jbGlwcykgewo+ID4gPiArCQkqdmFsID0gKHN0YXRlLT5mYl9kYW1hZ2VfY2xpcHMp ID8KPiA+ID4gKwkJCXN0YXRlLT5mYl9kYW1hZ2VfY2xpcHMtPmJhc2UuaWQgOiAwOwo+ID4gPiAg CX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KSB7Cj4gPiA+ICAJ CXJldHVybiBwbGFuZS0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLAo+ ID4gcHJvcGVydHksIHZhbCk7Cj4gPiA+ICAJfSBlbHNlIHsKPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4gPiA+IGluZGV4IDgwYmU3NGRmN2JhNi4uYmU4M2UyNzYzYzE4 IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiBAQCAt MzU3Niw2ICszNTc2LDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldChzdHJ1 Y3QKPiA+IGRybV9wbGFuZSAqcGxhbmUpCj4gPiA+ICAJCS8qIFJlc2V0IHRoZSBhbHBoYSB2YWx1 ZSB0byBmdWxseSBvcGFxdWUgaWYgaXQgbWF0dGVycyAqLwo+ID4gPiAgCQlpZiAocGxhbmUtPmFs cGhhX3Byb3BlcnR5KQo+ID4gPiAgCQkJcGxhbmUtPnN0YXRlLT5hbHBoYSA9IHBsYW5lLT5hbHBo YV9wcm9wZXJ0eS0KPiA+ID52YWx1ZXNbMV07Cj4gPiA+ICsJCXBsYW5lLT5zdGF0ZS0+ZmJfZGFt YWdlX2NsaXBzID0gTlVMTDsKPiA+ID4gIAl9Cj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9M KGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0KTsKPiA+ID4gQEAgLTM1OTgsNiArMzU5OSw3 IEBAIHZvaWQKPiA+IF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPgo+ID4gPiAgCXN0YXRlLT5mZW5jZSA9IE5VTEw7 Cj4gPiA+ICAJc3RhdGUtPmNvbW1pdCA9IE5VTEw7Cj4gPiA+ICsJc3RhdGUtPmZiX2RhbWFnZV9j bGlwcyA9IE5VTEw7Cj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19o ZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKTsKPiA+ID4KPiA+ID4gQEAgLTM2NDIsNiArMzY0 NCw4IEBAIHZvaWQKPiA+IF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZShz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiA+ID4KPiA+ID4gIAlpZiAoc3RhdGUtPmNv bW1pdCkKPiA+ID4gIAkJZHJtX2NydGNfY29tbWl0X3B1dChzdGF0ZS0+Y29tbWl0KTsKPiA+ID4g Kwo+ID4gPiArCWRybV9wcm9wZXJ0eV9ibG9iX3B1dChzdGF0ZS0+ZmJfZGFtYWdlX2NsaXBzKTsK PiA+ID4gIH0KPiA+ID4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9k ZXN0cm95X3N0YXRlKTsKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZGFtYWdlX2hlbHBlci5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZGFtYWdlX2hlbHBl ci5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u M2U3ZGU1YWZlN2Y2Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9kYW1hZ2VfaGVscGVyLmMKPiA+ID4gQEAgLTAsMCArMSw5MiBAQAo+ID4gPiArLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCj4gPiA+Cj4gPiArLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4g KioqKioqKioqKioqKioqKioKPiA+ID4gKyAqCj4gPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgg Vk13YXJlLCBJbmMuLCBQYWxvIEFsdG8sIENBLiwgVVNBCj4gPiA+ICsgKiBBbGwgUmlnaHRzIFJl c2VydmVkLgo+ID4gPiArICoKPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiA+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl Cj4gPiA+ICsgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nCj4gPiA+ICsgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4gPiA+ICsgKiBkaXN0 cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvCj4gPiA+ICsgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KPiA+ID4gKyAqIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQo+ID4gPiArICogbmV4dCBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMKPiA+ID4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkK PiA+IEtJTkQsIEVYUFJFU1MgT1IKPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ID4g KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5U LiBJTgo+ID4gTk8gRVZFTlQgU0hBTEwKPiA+ID4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSUywg QVVUSE9SUyBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUKPiA+IEZPUiBBTlkgQ0xBSU0s Cj4gPiA+ICsgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YKPiA+IENPTlRSQUNULCBUT1JUIE9SCj4gPiA+ICsgKiBPVEhFUldJU0UsIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKPiA+IFNPRlRXQVJFIE9SIFRI RQo+ID4gPiArICogVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4g KyAqCj4gPiA+ICsgKiBBdXRob3JzOgo+ID4gPiArICogRGVlcGFrIFJhd2F0IDxkcmF3YXRAdm13 YXJlLmNvbT4KPiA+ID4gKyAqCj4gPiA+ICsKPiA+ICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ICoqKioqKioqKioqKioqKiovCj4g PiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9k cm1fZGFtYWdlX2hlbHBlci5oPgo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIERPQzogb3Zl cnZpZXcKPiA+ID4gKyAqCj4gPiA+ICsgKiBGQl9EQU1BR0VfQ0xJUFMgaXMgYW4gb3B0aW9uYWwg cGxhbmUgcHJvcGVydHkgd2hpY2ggcHJvdmlkZXMgYQo+ID4gbWVhbnMgdG8KPiA+ID4gKyAqIHNw ZWNpZnkgYSBsaXN0IG9mIGRhbWFnZSByZWN0YW5nbGVzIG9uIGEgcGxhbmUgaW4gZnJhbWVidWZm ZXIKPiA+IGNvb3JkaW5hdGVzIG9mCj4gPiA+ICsgKiB0aGUgZnJhbWVidWZmZXIgYXR0YWNoZWQg dG8gdGhlIHBsYW5lLiBJbiBjdXJyZW50IGNvbnRleHQgZGFtYWdlIGlzCj4gPiB0aGUgYXJlYQo+ ID4gPiArICogb2YgcGxhbmUgZnJhbWVidWZmZXIgKGV4Y2x1ZGluZyB0aGUgZnJhbWVidWZmZXIg YXJlYSB3aGljaCBpcyBvdXRzaWRlCj4gPiBvZgo+ID4gPiArICogcGxhbmUgc3JjKQo+ID4gCj4g PiBOb3Qgc3VyZSB3aHkgdGhlIHBsYW5lIHNyYyBjb29yZGluYXRlcyBuZWVkIHRvIGJlIG1lbnRp b25lZCBoZXJlLiBUaGUKPiA+IGRhbWFnZSBpcyBqdXN0IHRoZSBwYXJ0IG9mIHRoZSBmYiB0aGF0 IGhhcyBjaGFuZ2VkLiBXaGV0aGVyIG9yIG5vdCBpdAo+ID4gZXh0ZW5kcyBwYXN0IHRoZSBzcmMg Y29vcmRpbmF0ZXMgaXMgdG90YWxseSBpcnJlbGV2YW50IGFzIGZhciBhcyBJIGNhbgo+ID4gc2Vl Lgo+IAo+IFRoYW5rcyBWaWxsZSBmb3IgdGhlIHJldmlldywKPiAKPiBXZWxsIHRoaXMgaXMgcGxh bmUgZGFtYWdlIHByb3BlcnR5IGFuZCBvbmx5IHRob3NlIGNsaXBzIHdoaWNoIGZhbGxzIGluc2lk ZQo+IHdpbGwgYmUgdXNlZCBmb3IgcGxhbmUgdXBkYXRlLCBzbyBvdXRzaWRlIHBsYW5lIHNyYyBp cyBub3QgcmVxdWlyZWQuCgpBY3R1YWxseSB3ZSd2ZSBuZXZlciBzcGVjaWZpZWQgdGhhdCBwcm9w ZXJseS4gTXkgdXN1YWwgaW50ZXJwcmV0YXRpb24gaXMKdGhhdCB0aGUgcGxhbmUgaXMgYWxsb3dl ZCB0byBzYW1wbGUgcGFzdCB0aGUgZWRnZSBvZiB0aGUgc3JjIHJlY3RhbmdsZQoodG8gZ2V0IG5p Y2VyIGxvb2tpbmcgZWRnZXMpLiBCdXQgbm90IHN1cmUgd2hldGhlciB0aGF0IHdvdWxkIGJlIHRv bwpzdXJwcmlzaW5nIHRvIHBlb3BsZSB0aG91Z2guIFNvIHdlIG1pZ2h0IHdhbnQgZm9sbG93IHRo ZSBHTCBsaW5lYXIgZmlsdGVyCnJ1bGVzIGJ5IGRlZmF1bHQsIGFuZCBpZiBzb21lb25lIHdhbnRz IGJldHRlciBsb29raW5nIGVkZ2VzIHdlIGNvdWxkCmFkZCBhIHByb3BlcnR5IHRoYXQgYWxsb3dz IHRoZSBmaWx0ZXIgdG8gcmVhY2ggZnVydGhlciBwYXN0IHRoZSBlZGdlLgoKPiAKPiA+IAo+ID4g PiB0aGF0IGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3QgcGxhbmUgdXBkYXRlIChhbHNvIGNhbGxlZCBw YWdlLWZsaXApLgo+ID4gPiArICogT25seSB0aGUgYXJlYSBpbnNpZGUgZGFtYWdlIHJlY3Rhbmds ZXMgd2lsbCBiZSBjb25zaWRlcmVkIGRpZmZlcmVudAo+ID4gd2hldGhlcgo+ID4gPiArICogY3Vy cmVudGx5IGF0dGFjaGVkIGZyYW1lYnVmZmVyIGlzIHNhbWUgYXMgZnJhbWVidWZmZXIgYXR0YWNo ZWQgZHVyaW5nCj4gPiBsYXN0Cj4gPiA+ICsgKiBwbGFuZSB1cGRhdGUgb3Igbm90Lgo+ID4gPiAr ICoKPiA+ID4gKyAqIEZCX0RBTUFHRV9DTElQUyBpcyBhIGhpbnQgdG8ga2VybmVsIHdoaWNoIGNv dWxkIGJlIGhlbHBmdWwgZm9yIHNvbWUKPiA+IGRyaXZlcnMKPiA+ID4gKyAqIHRvIG9wdGltaXpl IGludGVybmFsbHkgZXNwZWNpYWxseSBmb3IgdmlydHVhbCBkZXZpY2VzIHdoZXJlIGVhY2gKPiA+ IGZyYW1lYnVmZmVyCj4gPiA+ICsgKiBjaGFuZ2UgbmVlZHMgdG8gYmUgdHJhbnNtaXR0ZWQgb3Zl ciBuZXR3b3JrLCB1c2IsIGV0Yy4KPiA+ID4gKyAqCj4gPiA+ICsgKiBTaW5jZSBGQl9EQU1BR0Vf Q0xJUFMgaXMgYSBoaW50IHNvIGl0IGlzIGFuIG9wdGlvbmFsIHByb3BlcnR5LiBVc2VyLQo+ID4g c3BhY2UgY2FuCj4gPiA+ICsgKiBpZ25vcmUgdGhlIGRhbWFnZSBjbGlwcyBwcm9wZXJ0eSBhbmQg aW4gdGhhdCBjYXNlIGtlcm5lbCB3aWxsIGRvIGEgZnVsbAo+ID4gcGxhbmUKPiA+ID4gKyAqIHVw ZGF0ZS4gSW4gY2FzZSBkYW1hZ2UgY2xpcHMgYXJlIHByb3ZpZGVkIHRoZW4gaXQgaXMgZ3VhcmFu dGVlZCB0aGF0IHRoZQo+ID4gYXJlYQo+ID4gPiArICogaW5zaWRlIGRhbWFnZSBjbGlwcyB3aWxs IGJlIHVwZGF0ZWQgdG8gcGxhbmUuIEZvciBlZmZpY2llbmN5IGtlcm5lbCBjYW4KPiA+IGRvCj4g PiA+ICsgKiBmdWxsIHVwZGF0ZSBvciBtb3JlIGFyZWEgdGhhbiBzcGVjaWZpZWQgaW4gZGFtYWdl IGNsaXBzLgo+ID4gPiArICoKPiA+ID4gKyAqIEZCX0RBTUFHRV9DTElQUyBpcyBhIGJsb2IgcHJv cGVydHkgd2l0aCB0aGUgbGF5b3V0IG9mIGJsb2IgZGF0YSBpcwo+ID4gc2ltcGx5IGFuCj4gPiA+ ICsgKiBhcnJheSBvZiBkcm1fbW9kZV9yZWN0KGludGVybmFsbHkgZHJtX3JlY3QpIHdpdGggbWF4 aW11bSBhcnJheSBzaXplCj4gPiBsaW1pdGVkCj4gPiA+ICsgKiBieSBEUk1fTU9ERV9GQl9ESVJU WV9NQVhfQ0xJUFMuIFVubGlrZSBwbGFuZSBzcmMgY29vcmRpbmF0ZXMsCj4gPiBkYW1hZ2UgY2xp cHMKPiA+ID4gKyAqIGFyZSBub3QgaW4gMTYuMTYgZml4ZWQgcG9pbnQuIFNpbWlsYXIgdG8gcGxh bmUgc3JjIGluIGZyYW1lYnVmZmVyLCBkYW1hZ2UKPiA+ID4gKyAqIGNsaXBzIGNhbm5vdCBiZSBu ZWdhdGl2ZS4gSW4gZGFtYWdlIGNsaXAsIHgxL3kxIGFyZSBpbmNsdXNpdmUgYW5kIHgyL3kyCj4g PiBhcmUKPiA+ID4gKyAqIGV4Y2x1c2l2ZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBBbGwgdGhlIGRh bWFnZSBjbGlwcyBhcmUgaW4gZnJhbWVidWZmZXIgY29vcmRpbmF0ZXMgYW5kIHNob3VsZCBiZQo+ ID4gaW5zaWRlCj4gPiA+ICsgKiBwbGFuZSBzcmMgYW5kIGlmIGFueSBjbGlwIGZhbGxzIG91dHNp ZGUgcGxhbmUgc3JjIGl0IHdpbGwgYmUgaWdub3JlZCBhbmQKPiA+ID4gKyAqIHVzZXItc3BhY2Ug d29uJ3QgYmUgbm90aWZpZWQgb2YgdGhlIHNhbWUuIEFzIG1lbnRpb25lZCBhYm92ZSwKPiA+IHNv bWV0aW1lcwo+ID4gPiArICoga2VybmVsIHdpbGwgZG8gZnVsbCBwbGFuZSB1cGRhdGUgZHVlIHRv IGNoYW5nZSBpbiBwcm9wZXJ0aWVzIHdoaWNoIGNhbgo+ID4gYWZmZWN0Cj4gPiA+ICsgKiBmdWxs IHBsYW5lIGUuZy4gY29sb3IgbWFuYWdlbWVudCBwcm9wZXJ0aWVzLiBBbHNvIGR1cmluZyBmdWxs IG1vZGVzZXQKPiA+IGRhbWFnZQo+ID4gPiArICogaXMgaXJyZWxldmFudCBzbyBpZiBwcm92aWRl ZCBieSB1c2VyLXNwYWNlIGl0IHNpbXBseSB3aWxsIGJlIGlnbm9yZWQuCj4gPiA+ICsgKiBXaGVu ZXZlciBkYW1hZ2UgY2xpcHMgYXJlIGlnbm9yZWQgYnkga2VybmVsLCB1c2VyLXNwYWNlIHdpbGwg bm90IGJlCj4gPiBpbmZvcm1lZC4KPiA+ID4gKyAqIElmIGEgdXNlci1zcGFjZSBwcm92aWRlcyBk YW1hZ2UgY2xpcHMgd2hpY2ggZG9lc24ndCBlbmNvbXBhc3MgdGhlCj4gPiBhY3R1YWwKPiA+ID4g KyAqIGRhbWFnZSB0byBmcmFtZWJ1ZmZlciAoc2luY2UgbGFzdCBwbGFuZSB1cGRhdGUpIHdpbGwg cmVzdWx0IGluIGluY29ycmVjdAo+ID4gPiArICogcmVuZGVyaW5nIGR1cmluZyBwbGFuZSB1cGRh dGUuCj4gPiA+ICsgKgo+ID4gPiArICogV2hpbGUga2VybmVsIGRvZXMgbm90IGVycm9yIGZvciBv dmVybGFwcGVkIGRhbWFnZSBjbGlwcywgaXQgaXMKPiA+IGRpc2NvdXJhZ2VkLgo+ID4gPiArICov Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogZHJtX3BsYW5lX2VuYWJsZV9mYl9kYW1hZ2Vf Y2xpcHMgLSBlbmFibGVzIHBsYW5lIGZiIGRhbWFnZSBjbGlwcwo+ID4gcHJvcGVydHkKPiA+ID4g KyAqIEBwbGFuZTogcGxhbmUgb24gd2hpY2ggdG8gZW5hYmxlIGRhbWFnZSBjbGlwcyBwcm9wZXJ0 eQo+ID4gPiArICoKPiA+ID4gKyAqIFRoaXMgZnVuY3Rpb24gbGV0cyBkcml2ZXIgdG8gZW5hYmxl IHRoZSBkYW1hZ2UgY2xpcHMgcHJvcGVydHkgb24gYSBwbGFuZS4KPiA+ID4gKyAqLwo+ID4gPiAr dm9pZCBkcm1fcGxhbmVfZW5hYmxlX2ZiX2RhbWFnZV9jbGlwcyhzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRl djsKPiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2Nv bmZpZzsKPiA+ID4gKwo+ID4gPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+ YmFzZSwgY29uZmlnLQo+ID4gPnByb3BfZmJfZGFtYWdlX2NsaXBzLAo+ID4gPiArCQkJCSAgIDAp Owo+ID4gPiArfQo+ID4gPiArRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfZW5hYmxlX2ZiX2RhbWFn ZV9jbGlwcyk7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29u ZmlnLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4gPiA+IGluZGV4 IDIxZTM1M2JkMzk0OC4uNTA2ZjVhNTI3MzNmIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9t b2RlX2NvbmZpZy5jCj4gPiA+IEBAIC0yOTgsNiArMjk4LDEyIEBAIHN0YXRpYyBpbnQKPiA+IGRy bV9tb2RlX2NyZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gPiA+ICAJCXJldHVybiAtRU5PTUVNOwo+ID4gPiAgCWRldi0+bW9kZV9jb25maWcucHJvcF9j cnRjX2lkID0gcHJvcDsKPiA+ID4KPiA+ID4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShk ZXYsIERSTV9NT0RFX1BST1BfQkxPQiwKPiA+ICJGQl9EQU1BR0VfQ0xJUFMiLAo+ID4gPiArCQkJ CSAgIDApOwo+ID4gPiArCWlmICghcHJvcCkKPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ ICsJZGV2LT5tb2RlX2NvbmZpZy5wcm9wX2ZiX2RhbWFnZV9jbGlwcyA9IHByb3A7Cj4gPiA+ICsK PiA+ID4gIAlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ib29sKGRldiwKPiA+IERSTV9NT0RF X1BST1BfQVRPTUlDLAo+ID4gPiAgCQkJIkFDVElWRSIpOwo+ID4gPiAgCWlmICghcHJvcCkKPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCj4gPiA+IGluZGV4IDIzYmVmZjVk OGUzYy4uMWVkYmFlNzNkNmQ2IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9rbXMuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9rbXMuYwo+ID4gPiBAQCAtNzIzLDYgKzcyMyw3IEBAIHZvaWQgdm13X2R1X3BsYW5lX3Jlc2V0 KHN0cnVjdCBkcm1fcGxhbmUKPiA+ICpwbGFuZSkKPiA+ID4gIAlwbGFuZS0+c3RhdGUgPSAmdnBz LT5iYXNlOwo+ID4gPiAgCXBsYW5lLT5zdGF0ZS0+cGxhbmUgPSBwbGFuZTsKPiA+ID4gIAlwbGFu ZS0+c3RhdGUtPnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7Cj4gPiA+ICsJcGxhbmUtPnN0 YXRlLT5mYl9kYW1hZ2VfY2xpcHMgPSBOVUxMOwo+ID4gPiAgfQo+ID4gPgo+ID4gPgo+ID4gPiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RhbWFnZV9oZWxwZXIuaAo+ID4gYi9pbmNsdWRl L2RybS9kcm1fZGFtYWdlX2hlbHBlci5oCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMjE3Njk0ZTkxNjhjCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RhbWFnZV9oZWxwZXIuaAo+ID4gPiBAQCAtMCwwICsx LDYzIEBACj4gPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQg Ki8KPiA+ID4KPiA+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gPiAqKioqKioqKioqKioqKioqKgo+ID4gPiArICoKPiA+ID4gKyAq IENvcHlyaWdodCAoYykgMjAxOCBWTXdhcmUsIEluYy4sIFBhbG8gQWx0bywgQ0EuLCBVU0EKPiA+ ID4gKyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCj4gPiA+ICsgKgo+ID4gPiArICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKPiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUKPiA+ID4gKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKPiA+ID4gKyAqIHdpdGhv dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwKPiA+ID4gKyAqIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KPiA+ID4gKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwo+ID4gPiAr ICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlCj4gPiA+ICsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucwo+ID4gPiArICogb2YgdGhlIFNvZnR3YXJlLgo+ ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWQo+ID4gS0lORCwgRVhQUkVTUyBPUgo+ID4gPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+ID4gTUVS Q0hBTlRBQklMSVRZLAo+ID4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOCj4gPiBOTyBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhF IENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJM RQo+ID4gRk9SIEFOWSBDTEFJTSwKPiA+ID4gKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRgo+ID4gQ09OVFJBQ1QsIFRPUlQgT1IKPiA+ID4gKyAq IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RQo+ID4gU09GVFdBUkUgT1IgVEhFCj4gPiA+ICsgKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgo+ID4gPiArICoKPiA+ID4gKyAqIEF1dGhvcnM6Cj4gPiA+ICsgKiBEZWVw YWsgUmF3YXQgPGRyYXdhdEB2bXdhcmUuY29tPgo+ID4gPiArICoKPiA+ID4gKwo+ID4gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4g KioqKioqKioqKioqKioqKi8KPiA+ID4gKwo+ID4gPiArI2lmbmRlZiBEUk1fREFNQUdFX0hFTFBF Ul9IXwo+ID4gPiArI2RlZmluZSBEUk1fREFNQUdFX0hFTFBFUl9IXwo+ID4gPiArCj4gPiA+ICsv KioKPiA+ID4gKyAqIGRybV9wbGFuZV9nZXRfZGFtYWdlX2NsaXBzX2NvdW50IC0gcmV0dXJucyBk YW1hZ2UgY2xpcHMgY291bnQKPiA+ID4gKyAqIEBzdGF0ZTogUGxhbmUgc3RhdGUKPiA+ID4gKyAq Cj4gPiA+ICsgKiBSZXR1cm5zOiBOdW1iZXIgb2YgY2xpcHMgaW4gcGxhbmUgZmJfZGFtYWdlX2Ns aXBzIGJsb2IgcHJvcGVydHkuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbmxpbmUgdWludDMy X3QKPiA+ID4gK2RybV9wbGFuZV9nZXRfZGFtYWdlX2NsaXBzX2NvdW50KGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUKPiA+ICpzdGF0ZSkKPiA+ID4gK3sKPiA+ID4gKwlyZXR1cm4gKHN0YXRl ICYmIHN0YXRlLT5mYl9kYW1hZ2VfY2xpcHMpID8KPiA+ID4gKwkJc3RhdGUtPmZiX2RhbWFnZV9j bGlwcy0+bGVuZ3RoL3NpemVvZihzdHJ1Y3QgZHJtX3JlY3QpIDogMDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiArLyoqCj4gPiA+ICsgKiBkcm1fcGxhbmVfZ2V0X2RhbWFnZV9jbGlwcyAtIHJldHVy bnMgZGFtYWdlIGNsaXBzCj4gPiA+ICsgKiBAc3RhdGU6IFBsYW5lIHN0YXRlCj4gPiA+ICsgKgo+ ID4gPiArICogUmV0dXJuczogQ2xpcHMgaW4gcGxhbmUgZmJfZGFtYWdlX2NsaXBzIGJsb2IgcHJv cGVydHkuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9yZWN0ICoK PiA+ID4gK2RybV9wbGFuZV9nZXRfZGFtYWdlX2NsaXBzKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnN0YXRlKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAoc3RydWN0IGRybV9yZWN0ICop KChzdGF0ZSAmJiBzdGF0ZS0+ZmJfZGFtYWdlX2NsaXBzKSA/Cj4gPiA+ICsJCQkJICAgc3RhdGUt PmZiX2RhbWFnZV9jbGlwcy0+ZGF0YSA6IE5VTEwpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2 b2lkIGRybV9wbGFuZV9lbmFibGVfZmJfZGFtYWdlX2NsaXBzKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lKTsKPiA+ID4gKwo+ID4gPiArI2VuZGlmCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fbW9kZV9jb25maWcuaAo+ID4gYi9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaAo+ ID4gPiBpbmRleCBhMGIyMDJlMWQ2OWEuLjhjY2I1ZGRjZDk5ZCAxMDA2NDQKPiA+ID4gLS0tIGEv aW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X21vZGVfY29uZmlnLmgKPiA+ID4gQEAgLTYyNyw2ICs2MjcsMTYgQEAgc3RydWN0IGRybV9tb2Rl X2NvbmZpZyB7Cj4gPiA+ICAJICogJmRybV9jcnRjLgo+ID4gPiAgCSAqLwo+ID4gPiAgCXN0cnVj dCBkcm1fcHJvcGVydHkgKnByb3BfY3J0Y19pZDsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAcHJv cF9mYl9kYW1hZ2VfY2xpcHM6IE9wdGlvbmFsIHBsYW5lIHByb3BlcnR5IHRvIG1hcmsKPiA+IGRh bWFnZWQKPiA+ID4gKwkgKiByZWdpb25zIG9uIHRoZSBwbGFuZSBpbiBmcmFtZWJ1ZmZlciBjb29y ZGluYXRlcyBvZiB0aGUKPiA+IGZyYW1lYnVmZmVyCj4gPiA+ICsJICogYXR0YWNoZWQgdG8gdGhl IHBsYW5lLgo+ID4gPiArCSAqCj4gPiA+ICsJICogVGhlIGxheW91dCBvZiBibG9iIGRhdGEgaXMg c2ltcGx5IGFuIGFycmF5IG9mIGRybV9tb2RlX3JlY3Qgd2l0aAo+ID4gPiArCSAqIG1heGltdW0g YXJyYXkgc2l6ZSBsaW1pdGVkIGJ5Cj4gPiBEUk1fTU9ERV9GQl9ESVJUWV9NQVhfQ0xJUFMuIFVu bGlrZQo+ID4gPiArCSAqIHBsYW5lIHNyYyBjb29yZGluYXRlcywgZGFtYWdlIGNsaXBzIGFyZSBu b3QgaW4gMTYuMTYgZml4ZWQgcG9pbnQuCj4gPiA+ICsJICovCj4gPiA+ICsJc3RydWN0IGRybV9w cm9wZXJ0eSAqcHJvcF9mYl9kYW1hZ2VfY2xpcHM7Cj4gPiA+ICAJLyoqCj4gPiA+ICAJICogQHBy b3BfYWN0aXZlOiBEZWZhdWx0IGF0b21pYyBDUlRDIHByb3BlcnR5IHRvIGNvbnRyb2wgdGhlIGFj dGl2ZQo+ID4gPiAgCSAqIHN0YXRlLCB3aGljaCBpcyB0aGUgc2ltcGxpZmllZCBpbXBsZW1lbnRh dGlvbiBmb3IgRFBNUyBpbiBhdG9taWMKPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2Ry bV9wbGFuZS5oIGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiA+ID4gaW5kZXggOGExNTJkYzE2 ZWE1Li5iYjhiMDkzNDExOWMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFu ZS5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPiA+IEBAIC0xODIsNiAr MTgyLDE0IEBAIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgewo+ID4gPiAgCSAqLwo+ID4gPiAgCXN0 cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiA+ID4KPiA+ID4gKwkvKioKPiA+ID4gKwkg KiBAZmJfZGFtYWdlX2NsaXBzOgo+ID4gPiArCSAqCj4gPiA+ICsJICogQmxvYiByZXByZXNlbnRp bmcgZGFtYWdlIChhcmVhIGluIHBsYW5lIGZyYW1lYnVmZmVyIHRoYXQKPiA+IGNoYW5nZWQKPiA+ ID4gKwkgKiBzaW5jZSBsYXN0IHBhZ2UgZmxpcCkgYXMgYXJyYXkgb2YgZHJtX3JlY3QgaW4gZnJh bWVidWZmZXIgY29vZGluYXRlcy4KPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmZiX2RhbWFnZV9jbGlwczsKPiA+IAo+ID4gRG9uJ3Qgd2UgaGF2ZSBhIGJldHRl ciBwbGFjZSBmb3IgdGhpcz8gTmV4dCB0byBzb21lIG90aGVyIHByb3BzIGV0Yy4gaW4KPiA+IHRo ZSBwbGFuZSBzdGF0ZT8KPiAKPiBUaGlzIGlzIGluIHBsYW5lIHN0YXRlLCBzb3JyeSBhbSBJIG1p c3Npbmcgc29tZXRoaW5nID8KCkp1c3QgdGhlIHBsYWNlbWVudCBpbnNpZGUgdGhlIHBsYW5lIHN0 YXRlIGxvb2tzIHJhdGhlciByYW5kb20uIE1vcmUKbG9naWNhbCB0byBncm91cCBpdCBuZXh0IHRv IHNvbWUgb3RoZXIgcHJvcGVydHkgc3R1ZmYgSSB0aGluay4KCj4gCj4gPiAKPiA+IFdoYXQgZG9l cyAiaW4gZnJhbWVidWZmZXIgY29vcmRpbmF0ZXMiIG1lYW4/IEludGVnZXJzLCBzb21lIGZpeGVk Cj4gPiBwb2ludCByZXByZXNlbnRhdGlvbj8KPiAKPiBJIGd1ZXNzIGJldHRlciB3b3JkaW5nIHdv dWxkIGJlICJpbiBmcmFtZWJ1ZmZlciBjb29yZGluYXRlcyBvZiB0aGUKPiBmcmFtYmVidWZmZXIg YXR0YWNoZWQgdG8gcGxhbmUiLiBJIHdvdWxkIG1ha2UgaXQgbW9yZSBjbGVhciBmb3IgdjIsCgpJ J20gYmFzaWNhbGx5IGFza2luZyB3aGV0aGVyIG9uZSBpcyBzdXBwb3NlZCB0byBkbwonLngxID0g eCcgb3IgJy54MSA9IHg8PDE2JyBvciBzb21ldGhpbmcgZWxzZSwgd2hlcmUgeCBpcyBhbgppbnRl cmdlciBwaXhlbCBjb29yZGluYXRlLgoKPiAKPiA+IAo+ID4gPiArCj4gPiA+ICAJLyoqIEBzdGF0 ZTogYmFja3BvaW50ZXIgdG8gZ2xvYmFsIGRybV9hdG9taWNfc3RhdGUgKi8KPiA+ID4gIAlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gPiA+ICB9Owo+ID4gPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gPiBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21v ZGUuaAo+ID4gPiBpbmRleCA4ZDY3MjQzOTUyZjQuLjg2MmVhMDg5M2UyZSAxMDA2NDQKPiA+ID4g LS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvdWFw aS9kcm0vZHJtX21vZGUuaAo+ID4gPiBAQCAtODg3LDYgKzg4NywyNSBAQCBzdHJ1Y3QgZHJtX21v ZGVfcmV2b2tlX2xlYXNlIHsKPiA+ID4gIAlfX3UzMiBsZXNzZWVfaWQ7Cj4gPiA+ICB9Owo+ID4g Pgo+ID4gPiArLyoqCj4gPiA+ICsgKiBzdHJ1Y3QgZHJtX21vZGVfcmVjdCAtIHR3byBkaW1lbnNp b25hbCByZWN0YW5nbGUKPiA+ID4gKyAqIEB4MTogaG9yaXpvbnRhbCBzdGFydGluZyBjb29yZGlu YXRlIChpbmNsdXNpdmUpCj4gPiA+ICsgKiBAeTE6IHZlcnRpY2FsIHN0YXJ0aW5nIGNvb3JkaW5h dGUgKGluY2x1c2l2ZSkKPiA+ID4gKyAqIEB4MjogaG9yaXpvbnRhbCBlbmRpbmcgY29vcmRpbmF0 ZSAoZXhjbHVzaXZlKQo+ID4gPiArICogQHkyOiB2ZXJ0aWNhbCBlbmRpbmcgY29vcmRpbmF0ZSAo ZXhjbHVzaXZlKQo+ID4gPiArICoKPiA+ID4gKyAqIFdpdGggZHJtIHN1YnN5c3RlbSB1c2luZyBz dHJ1Y3QgZHJtX3JlY3QgdG8gbWFuYWdlIHJlY3Rhbmd1bGFyIGFyZWEKPiA+IHRoaXMKPiA+ID4g KyAqIGV4cG9ydCBpdCB0byB1c2VyLXNwYWNlLgo+ID4gPiArICoKPiA+ID4gKyAqIEN1cnJlbnRs eSB1c2VkIGJ5IGRybV9tb2RlX2F0b21pYyBibG9iIHByb3BlcnR5Cj4gPiBGQl9EQU1BR0VfQ0xJ UFMuCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBkcm1fbW9kZV9yZWN0IHsKPiA+ID4gKwlfX3Mz MiB4MTsKPiA+ID4gKwlfX3MzMiB5MTsKPiA+ID4gKwlfX3MzMiB4MjsKPiA+ID4gKwlfX3MzMiB5 MjsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQo+ID4g PiAgfQo+ID4gPiAgI2VuZGlmCj4gPiA+IC0tCj4gPiA+IDIuMTcuMQo+ID4gPgo+ID4gPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBkcmktZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ ID4KPiA+IGh0dHBzOi8vbmEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHBzJTNBJTJGJTJGbGlzdHMuZnIKPiA+IGVlZGVza3RvcC5vcmclMkZtYWlsbWFuJTJGbGlz dGluZm8lMkZkcmktCj4gPiBkZXZlbCZhbXA7ZGF0YT0wMiU3QzAxJTdDZHJhd2F0JTQwdm13YXJl LmNvbSU3QzVjMDZiMjdkNzUzNDQxMgo+ID4gOGNiMGYwOGQ2MTNmMDUzNGElN0NiMzkxMzhjYTNj ZWU0YjRhYTRkNmNkODNkOWRkNjJmMCU3QzElN0MwJTdDNgo+ID4gMzY3MTgzMjAyNDg4OTYwMDEm YW1wO3NkYXRhPTJhMnBTNUNJTE1VeVhESmdqSW1zNTlVVU9zbzNMSlJycEZXCj4gPiBSeXBpazQw WSUzRCZhbXA7cmVzZXJ2ZWQ9MAo+ID4gCj4gPiAtLQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJ bnRlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK