From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915/gt: Split intel_ring_submission Date: Thu, 24 Oct 2019 10:33:26 +0300 Message-ID: <8736fi8unt.fsf@gaia.fi.intel.com> References: <20191024071139.31917-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 14F366E11C for ; Thu, 24 Oct 2019 07:34:17 +0000 (UTC) In-Reply-To: <20191024071139.31917-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gU3BsaXQg dGhlIGxlZ2FjeSBzdWJtaXNzaW9uIGJhY2tlbmQgZnJvbSB0aGUgY29tbW9uIHJpbmcgYnVmZmVy LgoKQXllLgoKRGlkbid0IHNwb3QgYW55dGhpbmcgb3V0IG9mIG9yZGluYXJ5LgoKUmV2aWV3ZWQt Ynk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKPgo+IFNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDUg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMgIHwgICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgICAz ICstCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAg MSArCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuYyAgICB8ICAg MSArCj4gIC4uLi9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyAgICAgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCAgICAgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oICAgICAgICB8IDEx NCAtLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAg ICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jICAg ICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o ICB8ICAyNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAg ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgICAgICAg ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5j ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nLmMgICAgICAg ICAgfCAzMTQgKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3JpbmcuaCAgICAgICAgICB8IDEzMSArKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF90aW1lbGluZS5jICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvbW9ja19lbmdpbmUuYyAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyAgIHwgICAxICsKPiAgLi4uL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9jbWRfcGFyc2VyLmMgICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9tbWlvX2NvbnRleHQuYyAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9zY2hlZHVsZXIuYyAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlLmMgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICAgMSArCj4gIDI4IGZpbGVzIGNoYW5nZWQs IDQ3NyBpbnNlcnRpb25zKCspLCAxNDcgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nLmMKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuaAo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBpbmRleCBhOTFlMGE0ODdhNzkuLjUwMjFhYTdmYTE4NyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gQEAgLTkwLDExICs5MCwxMiBAQCBndC15ICs9IFwKPiAgCWd0L2ludGVsX2d0 X3JlcXVlc3RzLm8gXAo+ICAJZ3QvaW50ZWxfbGxjLm8gXAo+ICAJZ3QvaW50ZWxfbHJjLm8gXAo+ ICsJZ3QvaW50ZWxfbW9jcy5vIFwKPiAgCWd0L2ludGVsX3JjNi5vIFwKPiAgCWd0L2ludGVsX3Jl bmRlcnN0YXRlLm8gXAo+ICAJZ3QvaW50ZWxfcmVzZXQubyBcCj4gLQlndC9pbnRlbF9yaW5nYnVm ZmVyLm8gXAo+IC0JZ3QvaW50ZWxfbW9jcy5vIFwKPiArCWd0L2ludGVsX3JpbmcubyBcCj4gKwln dC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24ubyBcCj4gIAlndC9pbnRlbF9zc2V1Lm8gXAo+ICAJZ3Qv aW50ZWxfdGltZWxpbmUubyBcCj4gIAlndC9pbnRlbF93b3JrYXJvdW5kcy5vCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCAyMzYwZjE5Zjk2 OTQuLjg0OGNlMDdhOGVjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfb3ZlcmxheS5jCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiAgI2luY2x1ZGUgPGRybS9pOTE1 X2RybS5oPgo+ICAKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfcmluZy5oIgo+ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRl ICJpOTE1X3JlZy5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRl eHQuYwo+IGluZGV4IGRmNTI4ZTQ4ZTU2Ni4uYTAzYmVlMzBmYWMxIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTY5LDkgKzY5LDEwIEBA Cj4gIAo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gIAo+IC0jaW5jbHVkZSAiZ3QvaW50 ZWxfbHJjX3JlZy5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oIgo+ ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3VzZXIuaCIKPiArI2luY2x1ZGUgImd0L2ludGVs X2xyY19yZWcuaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKPiAgCj4gICNpbmNsdWRl ICJpOTE1X2dlbV9jb250ZXh0LmgiCj4gICNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCA5 OWQ3OWY5NGU2NDEuLmM4ODk0OGU0MDk0YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xOSw2ICsxOSw3IEBACj4gICNpbmNs dWRlICJndC9pbnRlbF9lbmdpbmVfcG9vbC5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIK PiAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9yaW5n LmgiCj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2Ns Zmx1c2guaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X29iamVjdF9ibHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Rf Ymx0LmMKPiBpbmRleCA1YmQ4ZGUxMjRkNzQuLjUxNmU2MWU5OTIxMiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuYwo+IEBAIC04LDYgKzgs NyBAQAo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICNpbmNsdWRlICJndC9p bnRlbF9lbmdpbmVfcG9vbC5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiArI2luY2x1 ZGUgImd0L2ludGVsX3JpbmcuaCIKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2NsZmx1c2guaCIKPiAg I2luY2x1ZGUgImk5MTVfZ2VtX29iamVjdF9ibHQuaCIKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gaW5k ZXggNTQ5ODEwZjcwYWViLi4wODc3ZWY0ZGZmNjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMKPiBAQCAt OCw2ICs4LDcgQEAKPiAgCj4gICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgo+ICAjaW5jbHVkZSAi Z3QvaW50ZWxfZ3RfcG0uaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKPiAgCj4gICNp bmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gICNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9yYW5k b20uaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCj4gaW5kZXggNTlj MzA4M2MxZWMxLi5lZTlkMmJjZDJjMTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfY29udGV4dC5jCj4gQEAgLTEzLDYgKzEzLDcgQEAKPiAgI2luY2x1ZGUgImludGVsX2NvbnRl eHQuaCIKPiAgI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZW5n aW5lX3BtLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gIAo+ICBzdGF0aWMgc3RydWN0 IGk5MTVfZ2xvYmFsX2NvbnRleHQgewo+ICAJc3RydWN0IGk5MTVfZ2xvYmFsIGJhc2U7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaAo+IGluZGV4IGRkNzQyYWMyZmJkYi4u NjhiM2QzMTdkOTU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQu aAo+IEBAIC0xMiw2ICsxMiw3IEBACj4gICNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+ICAjaW5j bHVkZSAiaW50ZWxfY29udGV4dF90eXBlcy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3R5 cGVzLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nX3R5cGVzLmgiCj4gICNpbmNsdWRlICJpbnRl bF90aW1lbGluZV90eXBlcy5oIgo+ICAKPiAgdm9pZCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5o Cj4gaW5kZXggYzdmOTNkMDVjOGUwLi5kNzdiOWY5ZjA5NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmUuaAo+IEBAIC0xOSw3ICsxOSw2IEBACj4gICNpbmNsdWRlICJp bnRlbF93b3JrYXJvdW5kcy5oIgo+ICAKPiAgc3RydWN0IGRybV9wcmludGVyOwo+IC0KPiAgc3Ry dWN0IGludGVsX2d0Owo+ICAKPiAgLyogRWFybHkgZ2VuMiBkZXZpY2VzIGhhdmUgYSBjYWNoZWxp bmUgb2YganVzdCAzMiBieXRlcywgdXNpbmcgNjQgaXMgb3ZlcmtpbGwsCj4gQEAgLTE3NiwxMjIg KzE3NSw5IEBAIGludGVsX3dyaXRlX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgaW50IHJlZywgdTMyIHZhbHVlKQo+ICAjZGVmaW5lIEk5MTVfSFdTX0NTQl9XUklU RV9JTkRFWAkweDFmCj4gICNkZWZpbmUgQ05MX0hXU19DU0JfV1JJVEVfSU5ERVgJCTB4MmYKPiAg Cj4gLXN0cnVjdCBpbnRlbF9yaW5nICoKPiAtaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpOwo+IC1pbnQgaW50ZWxfcmluZ19w aW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwo+IC12b2lkIGludGVsX3JpbmdfcmVzZXQoc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcsIHUzMiB0YWlsKTsKPiAtdW5zaWduZWQgaW50IGludGVsX3Jp bmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiAtdm9pZCBpbnRlbF9y aW5nX3VucGluKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiAtdm9pZCBpbnRlbF9yaW5nX2Zy ZWUoc3RydWN0IGtyZWYgKnJlZik7Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9y aW5nICppbnRlbF9yaW5nX2dldChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAtewo+IC0Ja3Jl Zl9nZXQoJnJpbmctPnJlZik7Cj4gLQlyZXR1cm4gcmluZzsKPiAtfQo+IC0KPiAtc3RhdGljIGlu bGluZSB2b2lkIGludGVsX3JpbmdfcHV0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQo+IC17Cj4g LQlrcmVmX3B1dCgmcmluZy0+cmVmLCBpbnRlbF9yaW5nX2ZyZWUpOwo+IC19Cj4gLQo+ICB2b2lk IGludGVsX2VuZ2luZV9zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIHZv aWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK PiAgCj4gLWludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxpZ24oc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpOwo+IC0KPiAtdTMyIF9fbXVzdF9jaGVjayAqaW50ZWxfcmluZ19i ZWdpbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdW5zaWduZWQgaW50IG4pOwo+IC0KPiAtc3Rh dGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgdTMyICpjcykKPiAtewo+IC0JLyogRHVtbXkgZnVuY3Rpb24uCj4gLQkgKgo+IC0JICogVGhp cyBzZXJ2ZXMgYXMgYSBwbGFjZWhvbGRlciBpbiB0aGUgY29kZSBzbyB0aGF0IHRoZSByZWFkZXIK PiAtCSAqIGNhbiBjb21wYXJlIGFnYWluc3QgdGhlIHByZWNlZGluZyBpbnRlbF9yaW5nX2JlZ2lu KCkgYW5kCj4gLQkgKiBjaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgZHdvcmRzIGVtaXR0ZWQgbWF0 Y2hlcyB0aGUgc3BhY2UKPiAtCSAqIHJlc2VydmVkIGZvciB0aGUgY29tbWFuZCBwYWNrZXQgKGku ZS4gdGhlIHZhbHVlIHBhc3NlZCB0bwo+IC0JICogaW50ZWxfcmluZ19iZWdpbigpKS4KPiAtCSAq Lwo+IC0JR0VNX0JVR19PTigocnEtPnJpbmctPnZhZGRyICsgcnEtPnJpbmctPmVtaXQpICE9IGNz KTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1MzIgaW50ZWxfcmluZ193cmFwKGNvbnN0IHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgcG9zKQo+IC17Cj4gLQlyZXR1cm4gcG9zICYgKHJp bmctPnNpemUgLSAxKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBib29sCj4gLWludGVsX3Jp bmdfb2Zmc2V0X3ZhbGlkKGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLAo+IC0JCQl1bnNp Z25lZCBpbnQgcG9zKQo+IC17Cj4gLQlpZiAocG9zICYgLXJpbmctPnNpemUpIC8qIG11c3QgYmUg c3RyaWN0bHkgd2l0aGluIHRoZSByaW5nICovCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCWlm ICghSVNfQUxJR05FRChwb3MsIDgpKSAvKiBtdXN0IGJlIHF3b3JkIGFsaWduZWQgKi8KPiAtCQly ZXR1cm4gZmFsc2U7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxp bmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB2 b2lkICphZGRyKQo+IC17Cj4gLQkvKiBEb24ndCB3cml0ZSByaW5nLT5zaXplIChlcXVpdmFsZW50 IHRvIDApIGFzIHRoYXQgaGFuZ3Mgc29tZSBHUFVzLiAqLwo+IC0JdTMyIG9mZnNldCA9IGFkZHIg LSBycS0+cmluZy0+dmFkZHI7Cj4gLQlHRU1fQlVHX09OKG9mZnNldCA+IHJxLT5yaW5nLT5zaXpl KTsKPiAtCXJldHVybiBpbnRlbF9yaW5nX3dyYXAocnEtPnJpbmcsIG9mZnNldCk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZAo+IC1hc3NlcnRfcmluZ190YWlsX3ZhbGlkKGNvbnN0IHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1bnNpZ25lZCBpbnQgdGFpbCkKPiAtewo+IC0JR0VNX0JV R19PTighaW50ZWxfcmluZ19vZmZzZXRfdmFsaWQocmluZywgdGFpbCkpOwo+IC0KPiAtCS8qCj4g LQkgKiAiUmluZyBCdWZmZXIgVXNlIgo+IC0JICoJR2VuMiBCU3BlYyAiMS4gUHJvZ3JhbW1pbmcg RW52aXJvbm1lbnQiIC8gMS40LjQuNgo+IC0JICoJR2VuMyBCU3BlYyAiMWMgTWVtb3J5IEludGVy ZmFjZSBGdW5jdGlvbnMiIC8gMi4zLjQuNQo+IC0JICoJR2VuNCsgQlNwZWMgIjFjIE1lbW9yeSBJ bnRlcmZhY2UgYW5kIENvbW1hbmQgU3RyZWFtIiAvIDUuMy40LjUKPiAtCSAqICJJZiB0aGUgUmlu ZyBCdWZmZXIgSGVhZCBQb2ludGVyIGFuZCB0aGUgVGFpbCBQb2ludGVyIGFyZSBvbiB0aGUKPiAt CSAqIHNhbWUgY2FjaGVsaW5lLCB0aGUgSGVhZCBQb2ludGVyIG11c3Qgbm90IGJlIGdyZWF0ZXIg dGhhbiB0aGUgVGFpbAo+IC0JICogUG9pbnRlci4iCj4gLQkgKgo+IC0JICogV2UgdXNlIHJpbmct PmhlYWQgYXMgdGhlIGxhc3Qga25vd24gbG9jYXRpb24gb2YgdGhlIGFjdHVhbCBSSU5HX0hFQUQs Cj4gLQkgKiBpdCBtYXkgaGF2ZSBhZHZhbmNlZCBidXQgaW4gdGhlIHdvcnN0IGNhc2UgaXQgaXMg ZXF1YWxseSB0aGUgc2FtZQo+IC0JICogYXMgcmluZy0+aGVhZCBhbmQgc28gd2Ugc2hvdWxkIG5l dmVyIHByb2dyYW0gUklOR19UQUlMIHRvIGFkdmFuY2UKPiAtCSAqIGludG8gdGhlIHNhbWUgY2Fj aGVsaW5lIGFzIHJpbmctPmhlYWQuCj4gLQkgKi8KPiAtI2RlZmluZSBjYWNoZWxpbmUoYSkgcm91 bmRfZG93bihhLCBDQUNIRUxJTkVfQllURVMpCj4gLQlHRU1fQlVHX09OKGNhY2hlbGluZSh0YWls KSA9PSBjYWNoZWxpbmUocmluZy0+aGVhZCkgJiYKPiAtCQkgICB0YWlsIDwgcmluZy0+aGVhZCk7 Cj4gLSN1bmRlZiBjYWNoZWxpbmUKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQKPiAtaW50ZWxfcmluZ19zZXRfdGFpbChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWdu ZWQgaW50IHRhaWwpCj4gLXsKPiAtCS8qIFdoaWxzdCB3cml0ZXMgdG8gdGhlIHRhaWwgYXJlIHN0 cmljdGx5IG9yZGVyLCB0aGVyZSBpcyBubwo+IC0JICogc2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHJl YWRlcnMgYW5kIHRoZSB3cml0ZXJzLiBUaGUgdGFpbCBtYXkgYmUKPiAtCSAqIHJlYWQgYnkgaTkx NV9yZXF1ZXN0X3JldGlyZSgpIGp1c3QgYXMgaXQgaXMgYmVpbmcgdXBkYXRlZAo+IC0JICogYnkg ZXhlY2xpc3RzLCBhcyBhbHRob3VnaCB0aGUgYnJlYWRjcnVtYiBpcyBjb21wbGV0ZSwgdGhlIGNv bnRleHQKPiAtCSAqIHN3aXRjaCBoYXNuJ3QgYmVlbiBzZWVuLgo+IC0JICovCj4gLQlhc3NlcnRf cmluZ190YWlsX3ZhbGlkKHJpbmcsIHRhaWwpOwo+IC0JcmluZy0+dGFpbCA9IHRhaWw7Cj4gLQly ZXR1cm4gdGFpbDsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiAtX19p bnRlbF9yaW5nX3NwYWNlKHVuc2lnbmVkIGludCBoZWFkLCB1bnNpZ25lZCBpbnQgdGFpbCwgdW5z aWduZWQgaW50IHNpemUpCj4gLXsKPiAtCS8qCj4gLQkgKiAiSWYgdGhlIFJpbmcgQnVmZmVyIEhl YWQgUG9pbnRlciBhbmQgdGhlIFRhaWwgUG9pbnRlciBhcmUgb24gdGhlCj4gLQkgKiBzYW1lIGNh Y2hlbGluZSwgdGhlIEhlYWQgUG9pbnRlciBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIFRh aWwKPiAtCSAqIFBvaW50ZXIuIgo+IC0JICovCj4gLQlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8y KHNpemUpKTsKPiAtCXJldHVybiAoaGVhZCAtIHRhaWwgLSBDQUNIRUxJTkVfQllURVMpICYgKHNp emUgLSAxKTsKPiAtfQo+IC0KPiAgaW50IGludGVsX2VuZ2luZXNfaW5pdF9tbWlvKHN0cnVjdCBp bnRlbF9ndCAqZ3QpOwo+ICBpbnQgaW50ZWxfZW5naW5lc19zZXR1cChzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KTsKPiAgaW50IGludGVsX2VuZ2luZXNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IGNkNGNhZjU0 YzU5Yy4uMmFmYTJlZjkwNDgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMKPiBAQCAtMzcsNiArMzcsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfY29udGV4 dC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCj4gICNpbmNsdWRlICJpbnRlbF9yZXNldC5o Igo+ICsjaW5jbHVkZSAiaW50ZWxfcmluZy5oIgo+ICAKPiAgLyogSGFzd2VsbCBkb2VzIGhhdmUg dGhlIENYVF9TSVpFIHJlZ2lzdGVyIGhvd2V2ZXIgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlCj4g ICAqIHZhbGlkLiBOb3csIGRvY3MgZXhwbGFpbiBpbiBkd29yZHMgd2hhdCBpcyBpbiB0aGUgY29u dGV4dCBvYmplY3QuIFRoZSBmdWxsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX3BtLmMKPiBpbmRleCA2ZmJmYTIxNjJlNTQuLjNjMGY0OTBmZjJjNyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCj4gQEAgLTEzLDYgKzEzLDcgQEAK PiAgI2luY2x1ZGUgImludGVsX2d0LmgiCj4gICNpbmNsdWRlICJpbnRlbF9ndF9wbS5oIgo+ICAj aW5jbHVkZSAiaW50ZWxfcmM2LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gIAo+ICBz dGF0aWMgaW50IF9fZW5naW5lX3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVz LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+IGluZGV4 IGZiZTg5YmZkM2Q0Zi4uYzVkMTA0N2E0YmM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBAQCAtNTksNiArNTksNyBAQCBzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dDsKPiAgc3RydWN0IGk5MTVfcmVxdWVzdDsKPiAgc3RydWN0IGk5MTVfc2No ZWRfYXR0cjsKPiAgc3RydWN0IGludGVsX2d0Owo+ICtzdHJ1Y3QgaW50ZWxfcmluZzsKPiAgc3Ry dWN0IGludGVsX3VuY29yZTsKPiAgCj4gIHR5cGVkZWYgdTggaW50ZWxfZW5naW5lX21hc2tfdDsK PiBAQCAtNzcsMzIgKzc4LDYgQEAgc3RydWN0IGludGVsX2luc3Rkb25lIHsKPiAgCXUzMiByb3db STkxNV9NQVhfU0xJQ0VTXVtJOTE1X01BWF9TVUJTTElDRVNdOwo+ICB9Owo+ICAKPiAtc3RydWN0 IGludGVsX3Jpbmcgewo+IC0Jc3RydWN0IGtyZWYgcmVmOwo+IC0Jc3RydWN0IGk5MTVfdm1hICp2 bWE7Cj4gLQl2b2lkICp2YWRkcjsKPiAtCj4gLQkvKgo+IC0JICogQXMgd2UgaGF2ZSB0d28gdHlw ZXMgb2YgcmluZ3MsIG9uZSBnbG9iYWwgdG8gdGhlIGVuZ2luZSB1c2VkCj4gLQkgKiBieSByaW5n YnVmZmVyIHN1Ym1pc3Npb24gYW5kIHRob3NlIHRoYXQgYXJlIGV4Y2x1c2l2ZSB0byBhCj4gLQkg KiBjb250ZXh0IHVzZWQgYnkgZXhlY2xpc3RzLCB3ZSBoYXZlIHRvIHBsYXkgc2FmZSBhbmQgYWxs b3cKPiAtCSAqIGF0b21pYyB1cGRhdGVzIHRvIHRoZSBwaW5fY291bnQuIEhvd2V2ZXIsIHRoZSBh Y3R1YWwgcGlubmluZwo+IC0JICogb2YgdGhlIGNvbnRleHQgaXMgZWl0aGVyIGRvbmUgZHVyaW5n IGluaXRpYWxpc2F0aW9uIGZvcgo+IC0JICogcmluZ2J1ZmZlciBzdWJtaXNzaW9uIG9yIHNlcmlh bGlzZWQgYXMgcGFydCBvZiB0aGUgY29udGV4dAo+IC0JICogcGlubmluZyBmb3IgZXhlY2xpc3Rz LCBhbmQgc28gd2UgZG8gbm90IG5lZWQgYSBtdXRleCBvdXJzZWx2ZXMKPiAtCSAqIHRvIHNlcmlh bGlzZSBpbnRlbF9yaW5nX3Bpbi9pbnRlbF9yaW5nX3VucGluLgo+IC0JICovCj4gLQlhdG9taWNf dCBwaW5fY291bnQ7Cj4gLQo+IC0JdTMyIGhlYWQ7Cj4gLQl1MzIgdGFpbDsKPiAtCXUzMiBlbWl0 Owo+IC0KPiAtCXUzMiBzcGFjZTsKPiAtCXUzMiBzaXplOwo+IC0JdTMyIGVmZmVjdGl2ZV9zaXpl Owo+IC19Owo+IC0KPiAgLyoKPiAgICogd2UgdXNlIGEgc2luZ2xlIHBhZ2UgdG8gbG9hZCBjdHgg d29ya2Fyb3VuZHMgc28gYWxsIG9mIHRoZXNlCj4gICAqIHZhbHVlcyBhcmUgcmVmZXJyZWQgaW4g dGVybXMgb2YgZHdvcmRzCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBpbmRleCA4 ZDhmZWNjNjk4MDkuLjlkNTlkZWJmZDE2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jCj4gQEAgLTE0NSw2ICsxNDUsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5o Igo+ICAjaW5jbHVkZSAiaW50ZWxfbW9jcy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIK PiArI2luY2x1ZGUgImludGVsX3JpbmcuaCIKPiAgI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRz LmgiCj4gIAo+ICAjZGVmaW5lIFJJTkdfRVhFQ0xJU1RfUUZVTEwJCSgxIDw8IDB4MikKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCj4gaW5kZXggMDZkYmE3ZmYyOTRlLi42ZDRjNjY1 YTk5N2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCj4gQEAgLTI2LDYg KzI2LDcgQEAKPiAgI2luY2x1ZGUgImludGVsX2d0LmgiCj4gICNpbmNsdWRlICJpbnRlbF9tb2Nz LmgiCj4gICNpbmNsdWRlICJpbnRlbF9scmMuaCIKPiArI2luY2x1ZGUgImludGVsX3JpbmcuaCIK PiAgCj4gIC8qIHN0cnVjdHVyZXMgcmVxdWlyZWQgKi8KPiAgc3RydWN0IGRybV9pOTE1X21vY3Nf ZW50cnkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5k ZXJzdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3RhdGUuYwo+ IGluZGV4IDZkMDVmOWM2NDE3OC4uYzRlZGMzNWU3ZDg5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0YXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5jCj4gQEAgLTI3LDYgKzI3LDcgQEAKPiAgCj4g ICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcmVuZGVyc3RhdGUuaCIK PiArI2luY2x1ZGUgImludGVsX3JpbmcuaCIKPiAgCj4gIHN0cnVjdCBpbnRlbF9yZW5kZXJzdGF0 ZSB7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcmVuZGVyc3RhdGVfcm9kYXRhICpyb2RhdGE7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwLi45ODg3NmI1NWY4NTEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZy5jCj4gQEAgLTAsMCArMSwzMTQgQEAK PiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJn ZW0vaTkxNV9nZW1fb2JqZWN0LmgiCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVk ZSAiaTkxNV92bWEuaCIKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgo+ICsjaW5jbHVkZSAi aW50ZWxfcmluZy5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfdGltZWxpbmUuaCIKPiArCj4gK3Vuc2ln bmVkIGludCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykK PiArewo+ICsJdW5zaWduZWQgaW50IHNwYWNlOwo+ICsKPiArCXNwYWNlID0gX19pbnRlbF9yaW5n X3NwYWNlKHJpbmctPmhlYWQsIHJpbmctPmVtaXQsIHJpbmctPnNpemUpOwo+ICsKPiArCXJpbmct PnNwYWNlID0gc3BhY2U7Cj4gKwlyZXR1cm4gc3BhY2U7Cj4gK30KPiArCj4gK2ludCBpbnRlbF9y aW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiArewo+ICsJc3RydWN0IGk5MTVfdm1h ICp2bWEgPSByaW5nLT52bWE7Cj4gKwl1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gKwl2b2lkICphZGRy Owo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoYXRvbWljX2ZldGNoX2luYygmcmluZy0+cGluX2Nv dW50KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmbGFncyA9IFBJTl9HTE9CQUw7Cj4gKwo+ICsJ LyogUmluZyB3cmFwYXJvdW5kIGF0IG9mZnNldCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3 aHkuICovCj4gKwlmbGFncyB8PSBQSU5fT0ZGU0VUX0JJQVMgfCBpOTE1X2dndHRfcGluX2JpYXMo dm1hKTsKPiArCj4gKwlpZiAodm1hLT5vYmotPnN0b2xlbikKPiArCQlmbGFncyB8PSBQSU5fTUFQ UEFCTEU7Cj4gKwllbHNlCj4gKwkJZmxhZ3MgfD0gUElOX0hJR0g7Cj4gKwo+ICsJcmV0ID0gaTkx NV92bWFfcGluKHZtYSwgMCwgMCwgZmxhZ3MpOwo+ICsJaWYgKHVubGlrZWx5KHJldCkpCj4gKwkJ Z290byBlcnJfdW5waW47Cj4gKwo+ICsJaWYgKGk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2VhYmxl KHZtYSkpCj4gKwkJYWRkciA9ICh2b2lkIF9fZm9yY2UgKilpOTE1X3ZtYV9waW5faW9tYXAodm1h KTsKPiArCWVsc2UKPiArCQlhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodm1hLT5vYmos Cj4gKwkJCQkJICAgICAgIGk5MTVfY29oZXJlbnRfbWFwX3R5cGUodm1hLT52bS0+aTkxNSkpOwo+ ICsJaWYgKElTX0VSUihhZGRyKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoYWRkcik7Cj4gKwkJZ290 byBlcnJfcmluZzsKPiArCX0KPiArCj4gKwlpOTE1X3ZtYV9tYWtlX3Vuc2hyaW5rYWJsZSh2bWEp Owo+ICsKPiArCUdFTV9CVUdfT04ocmluZy0+dmFkZHIpOwo+ICsJcmluZy0+dmFkZHIgPSBhZGRy Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX3Jpbmc6Cj4gKwlpOTE1X3ZtYV91bnBpbih2 bWEpOwo+ICtlcnJfdW5waW46Cj4gKwlhdG9taWNfZGVjKCZyaW5nLT5waW5fY291bnQpOwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9yaW5nX3Jlc2V0KHN0cnVjdCBpbnRl bF9yaW5nICpyaW5nLCB1MzIgdGFpbCkKPiArewo+ICsJdGFpbCA9IGludGVsX3Jpbmdfd3JhcChy aW5nLCB0YWlsKTsKPiArCXJpbmctPnRhaWwgPSB0YWlsOwo+ICsJcmluZy0+aGVhZCA9IHRhaWw7 Cj4gKwlyaW5nLT5lbWl0ID0gdGFpbDsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcp Owo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0IGludGVsX3JpbmcgKnJp bmcpCj4gK3sKPiArCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmcmluZy0+cGluX2NvdW50KSkK PiArCQlyZXR1cm47Cj4gKwo+ICsJLyogRGlzY2FyZCBhbnkgdW51c2VkIGJ5dGVzIGJleW9uZCB0 aGF0IHN1Ym1pdHRlZCB0byBody4gKi8KPiArCWludGVsX3JpbmdfcmVzZXQocmluZywgcmluZy0+ ZW1pdCk7Cj4gKwo+ICsJR0VNX0JVR19PTighcmluZy0+dm1hKTsKPiArCWk5MTVfdm1hX3Vuc2V0 X2dndHRfd3JpdGUocmluZy0+dm1hKTsKPiArCWlmIChpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNl YWJsZShyaW5nLT52bWEpKQo+ICsJCWk5MTVfdm1hX3VucGluX2lvbWFwKHJpbmctPnZtYSk7Cj4g KwllbHNlCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChyaW5nLT52bWEtPm9iaik7Cj4g Kwo+ICsJR0VNX0JVR19PTighcmluZy0+dmFkZHIpOwo+ICsJcmluZy0+dmFkZHIgPSBOVUxMOwo+ ICsKPiArCWk5MTVfdm1hX3VucGluKHJpbmctPnZtYSk7Cj4gKwlpOTE1X3ZtYV9tYWtlX3B1cmdl YWJsZShyaW5nLT52bWEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpjcmVh dGVfcmluZ192bWEoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgaW50IHNpemUpCj4gK3sKPiArCXN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmdndHQtPnZtOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB2bS0+aTkxNTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCj4gKwlvYmogPSBpOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbihpOTE1LCBzaXplKTsKPiArCWlmICghb2JqKQo+ICsJCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgc2l6ZSk7Cj4gKwlpZiAo SVNfRVJSKG9iaikpCj4gKwkJcmV0dXJuIEVSUl9DQVNUKG9iaik7Cj4gKwo+ICsJLyoKPiArCSAq IE1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQVSBzaWRlIChzbyBubyBzdHJh eSBvdmVyd3JpdGVzKQo+ICsJICogaWYgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSdzIEdHVFQu Cj4gKwkgKi8KPiArCWlmICh2bS0+aGFzX3JlYWRfb25seSkKPiArCQlpOTE1X2dlbV9vYmplY3Rf c2V0X3JlYWRvbmx5KG9iaik7Cj4gKwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2 bSwgTlVMTCk7Cj4gKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gKwo+ICsJcmV0dXJuIHZt YTsKPiArfQo+ICsKPiArc3RydWN0IGludGVsX3JpbmcgKgo+ICtpbnRlbF9lbmdpbmVfY3JlYXRl X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZzsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsKPiArCUdFTV9C VUdfT04oIWlzX3Bvd2VyX29mXzIoc2l6ZSkpOwo+ICsJR0VNX0JVR19PTihSSU5HX0NUTF9TSVpF KHNpemUpICYgflJJTkdfTlJfUEFHRVMpOwo+ICsKPiArCXJpbmcgPSBremFsbG9jKHNpemVvZigq cmluZyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFyaW5nKQo+ICsJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ICsKPiArCWtyZWZfaW5pdCgmcmluZy0+cmVmKTsKPiArCj4gKwlyaW5nLT5zaXpl ID0gc2l6ZTsKPiArCS8qIFdvcmthcm91bmQgYW4gZXJyYXR1bSBvbiB0aGUgaTgzMCB3aGljaCBj YXVzZXMgYSBoYW5nIGlmCj4gKwkgKiB0aGUgVEFJTCBwb2ludGVyIHBvaW50cyB0byB3aXRoaW4g dGhlIGxhc3QgMiBjYWNoZWxpbmVzCj4gKwkgKiBvZiB0aGUgYnVmZmVyLgo+ICsJICovCj4gKwly aW5nLT5lZmZlY3RpdmVfc2l6ZSA9IHNpemU7Cj4gKwlpZiAoSVNfSTgzMChpOTE1KSB8fCBJU19J ODQ1RyhpOTE1KSkKPiArCQlyaW5nLT5lZmZlY3RpdmVfc2l6ZSAtPSAyICogQ0FDSEVMSU5FX0JZ VEVTOwo+ICsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+ICsKPiArCXZtYSA9 IGNyZWF0ZV9yaW5nX3ZtYShlbmdpbmUtPmd0LT5nZ3R0LCBzaXplKTsKPiArCWlmIChJU19FUlIo dm1hKSkgewo+ICsJCWtmcmVlKHJpbmcpOwo+ICsJCXJldHVybiBFUlJfQ0FTVCh2bWEpOwo+ICsJ fQo+ICsJcmluZy0+dm1hID0gdm1hOwo+ICsKPiArCXJldHVybiByaW5nOwo+ICt9Cj4gKwo+ICt2 b2lkIGludGVsX3JpbmdfZnJlZShzdHJ1Y3Qga3JlZiAqcmVmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IGNvbnRhaW5lcl9vZihyZWYsIHR5cGVvZigqcmluZyksIHJlZik7Cj4g Kwo+ICsJaTkxNV92bWFfcHV0KHJpbmctPnZtYSk7Cj4gKwo+ICsJa2ZyZWUocmluZyk7Cj4gK30K PiArCj4gK3N0YXRpYyBub2lubGluZSBpbnQKPiArd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVs X3JpbmcgKnJpbmcsCj4gKwkgICAgICAgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKPiArCSAg ICAgICB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnRh cmdldDsKPiArCWxvbmcgdGltZW91dDsKPiArCj4gKwlpZiAoaW50ZWxfcmluZ191cGRhdGVfc3Bh Y2UocmluZykgPj0gYnl0ZXMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJR0VNX0JVR19PTihsaXN0 X2VtcHR5KCZ0bC0+cmVxdWVzdHMpKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAm dGwtPnJlcXVlc3RzLCBsaW5rKSB7Cj4gKwkJaWYgKHRhcmdldC0+cmluZyAhPSByaW5nKQo+ICsJ CQljb250aW51ZTsKPiArCj4gKwkJLyogV291bGQgY29tcGxldGlvbiBvZiB0aGlzIHJlcXVlc3Qg ZnJlZSBlbm91Z2ggc3BhY2U/ICovCj4gKwkJaWYgKGJ5dGVzIDw9IF9faW50ZWxfcmluZ19zcGFj ZSh0YXJnZXQtPnBvc3RmaXgsCj4gKwkJCQkJCXJpbmctPmVtaXQsIHJpbmctPnNpemUpKQo+ICsJ CQlicmVhazsKPiArCX0KPiArCj4gKwlpZiAoR0VNX1dBUk5fT04oJnRhcmdldC0+bGluayA9PSAm dGwtPnJlcXVlc3RzKSkKPiArCQlyZXR1cm4gLUVOT1NQQzsKPiArCj4gKwl0aW1lb3V0ID0gaTkx NV9yZXF1ZXN0X3dhaXQodGFyZ2V0LAo+ICsJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxF LAo+ICsJCQkJICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCWlmICh0aW1lb3V0IDwgMCkK PiArCQlyZXR1cm4gdGltZW91dDsKPiArCj4gKwlpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8odGFy Z2V0KTsKPiArCj4gKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKPiArCUdFTV9CVUdf T04ocmluZy0+c3BhY2UgPCBieXRlcyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArdTMyICpp bnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBpbnQgbnVt X2R3b3JkcykKPiArewo+ICsJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBycS0+cmluZzsKPiAr CWNvbnN0IHVuc2lnbmVkIGludCByZW1haW5fdXNhYmxlID0gcmluZy0+ZWZmZWN0aXZlX3NpemUg LSByaW5nLT5lbWl0Owo+ICsJY29uc3QgdW5zaWduZWQgaW50IGJ5dGVzID0gbnVtX2R3b3JkcyAq IHNpemVvZih1MzIpOwo+ICsJdW5zaWduZWQgaW50IG5lZWRfd3JhcCA9IDA7Cj4gKwl1bnNpZ25l ZCBpbnQgdG90YWxfYnl0ZXM7Cj4gKwl1MzIgKmNzOwo+ICsKPiArCS8qIFBhY2tldHMgbXVzdCBi ZSBxd29yZCBhbGlnbmVkLiAqLwo+ICsJR0VNX0JVR19PTihudW1fZHdvcmRzICYgMSk7Cj4gKwo+ ICsJdG90YWxfYnl0ZXMgPSBieXRlcyArIHJxLT5yZXNlcnZlZF9zcGFjZTsKPiArCUdFTV9CVUdf T04odG90YWxfYnl0ZXMgPiByaW5nLT5lZmZlY3RpdmVfc2l6ZSk7Cj4gKwo+ICsJaWYgKHVubGlr ZWx5KHRvdGFsX2J5dGVzID4gcmVtYWluX3VzYWJsZSkpIHsKPiArCQljb25zdCBpbnQgcmVtYWlu X2FjdHVhbCA9IHJpbmctPnNpemUgLSByaW5nLT5lbWl0Owo+ICsKPiArCQlpZiAoYnl0ZXMgPiBy ZW1haW5fdXNhYmxlKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIE5vdCBlbm91Z2ggc3BhY2UgZm9yIHRo ZSBiYXNpYyByZXF1ZXN0LiBTbyBuZWVkIHRvCj4gKwkJCSAqIGZsdXNoIG91dCB0aGUgcmVtYWlu ZGVyIGFuZCB0aGVuIHdhaXQgZm9yCj4gKwkJCSAqIGJhc2UgKyByZXNlcnZlZC4KPiArCQkJICov Cj4gKwkJCXRvdGFsX2J5dGVzICs9IHJlbWFpbl9hY3R1YWw7Cj4gKwkJCW5lZWRfd3JhcCA9IHJl bWFpbl9hY3R1YWwgfCAxOwo+ICsJCX0gZWxzZSAgewo+ICsJCQkvKgo+ICsJCQkgKiBUaGUgYmFz ZSByZXF1ZXN0IHdpbGwgZml0IGJ1dCB0aGUgcmVzZXJ2ZWQgc3BhY2UKPiArCQkJICogZmFsbHMg b2ZmIHRoZSBlbmQuIFNvIHdlIGRvbid0IG5lZWQgYW4gaW1tZWRpYXRlCj4gKwkJCSAqIHdyYXAg YW5kIG9ubHkgbmVlZCB0byBlZmZlY3RpdmVseSB3YWl0IGZvciB0aGUKPiArCQkJICogcmVzZXJ2 ZWQgc2l6ZSBmcm9tIHRoZSBzdGFydCBvZiByaW5nYnVmZmVyLgo+ICsJCQkgKi8KPiArCQkJdG90 YWxfYnl0ZXMgPSBycS0+cmVzZXJ2ZWRfc3BhY2UgKyByZW1haW5fYWN0dWFsOwo+ICsJCX0KPiAr CX0KPiArCj4gKwlpZiAodW5saWtlbHkodG90YWxfYnl0ZXMgPiByaW5nLT5zcGFjZSkpIHsKPiAr CQlpbnQgcmV0Owo+ICsKPiArCQkvKgo+ICsJCSAqIFNwYWNlIGlzIHJlc2VydmVkIGluIHRoZSBy aW5nYnVmZmVyIGZvciBmaW5hbGlzaW5nIHRoZQo+ICsJCSAqIHJlcXVlc3QsIGFzIHRoYXQgY2Fu bm90IGJlIGFsbG93ZWQgdG8gZmFpbC4gRHVyaW5nIHJlcXVlc3QKPiArCQkgKiBmaW5hbGlzYXRp b24sIHJlc2VydmVkX3NwYWNlIGlzIHNldCB0byAwIHRvIHN0b3AgdGhlCj4gKwkJICogb3ZlcmFs bG9jYXRpb24gYW5kIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlbiB3ZSBuZXZlciBuZWVkCj4g KwkJICogdG8gd2FpdCAod2hpY2ggaGFzIHRoZSByaXNrIG9mIGZhaWxpbmcgd2l0aCBFSU5UUiku Cj4gKwkJICoKPiArCQkgKiBTZWUgYWxzbyBpOTE1X3JlcXVlc3RfYWxsb2MoKSBhbmQgaTkxNV9y ZXF1ZXN0X2FkZCgpLgo+ICsJCSAqLwo+ICsJCUdFTV9CVUdfT04oIXJxLT5yZXNlcnZlZF9zcGFj ZSk7Cj4gKwo+ICsJCXJldCA9IHdhaXRfZm9yX3NwYWNlKHJpbmcsIHJxLT50aW1lbGluZSwgdG90 YWxfYnl0ZXMpOwo+ICsJCWlmICh1bmxpa2VseShyZXQpKQo+ICsJCQlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ICsJfQo+ICsKPiArCWlmICh1bmxpa2VseShuZWVkX3dyYXApKSB7Cj4gKwkJbmVlZF93 cmFwICY9IH4xOwo+ICsJCUdFTV9CVUdfT04obmVlZF93cmFwID4gcmluZy0+c3BhY2UpOwo+ICsJ CUdFTV9CVUdfT04ocmluZy0+ZW1pdCArIG5lZWRfd3JhcCA+IHJpbmctPnNpemUpOwo+ICsJCUdF TV9CVUdfT04oIUlTX0FMSUdORUQobmVlZF93cmFwLCBzaXplb2YodTY0KSkpOwo+ICsKPiArCQkv KiBGaWxsIHRoZSB0YWlsIHdpdGggTUlfTk9PUCAqLwo+ICsJCW1lbXNldDY0KHJpbmctPnZhZGRy ICsgcmluZy0+ZW1pdCwgMCwgbmVlZF93cmFwIC8gc2l6ZW9mKHU2NCkpOwo+ICsJCXJpbmctPnNw YWNlIC09IG5lZWRfd3JhcDsKPiArCQlyaW5nLT5lbWl0ID0gMDsKPiArCX0KPiArCj4gKwlHRU1f QlVHX09OKHJpbmctPmVtaXQgPiByaW5nLT5zaXplIC0gYnl0ZXMpOwo+ICsJR0VNX0JVR19PTihy aW5nLT5zcGFjZSA8IGJ5dGVzKTsKPiArCWNzID0gcmluZy0+dmFkZHIgKyByaW5nLT5lbWl0Owo+ ICsJR0VNX0RFQlVHX0VYRUMobWVtc2V0MzIoY3MsIFBPSVNPTl9JTlVTRSwgYnl0ZXMgLyBzaXpl b2YoKmNzKSkpOwo+ICsJcmluZy0+ZW1pdCArPSBieXRlczsKPiArCXJpbmctPnNwYWNlIC09IGJ5 dGVzOwo+ICsKPiArCXJldHVybiBjczsKPiArfQo+ICsKPiArLyogQWxpZ24gdGhlIHJpbmcgdGFp bCB0byBhIGNhY2hlbGluZSBib3VuZGFyeSAqLwo+ICtpbnQgaW50ZWxfcmluZ19jYWNoZWxpbmVf YWxpZ24oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCWludCBudW1fZHdvcmRzOwo+ ICsJdm9pZCAqY3M7Cj4gKwo+ICsJbnVtX2R3b3JkcyA9IChycS0+cmluZy0+ZW1pdCAmIChDQUNI RUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodTMyKTsKPiArCWlmIChudW1fZHdvcmRzID09IDAp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJbnVtX2R3b3JkcyA9IENBQ0hFTElORV9EV09SRFMgLSBu dW1fZHdvcmRzOwo+ICsJR0VNX0JVR19PTihudW1fZHdvcmRzICYgMSk7Cj4gKwo+ICsJY3MgPSBp bnRlbF9yaW5nX2JlZ2luKHJxLCBudW1fZHdvcmRzKTsKPiArCWlmIChJU19FUlIoY3MpKQo+ICsJ CXJldHVybiBQVFJfRVJSKGNzKTsKPiArCj4gKwltZW1zZXQ2NChjcywgKHU2NClNSV9OT09QIDw8 IDMyIHwgTUlfTk9PUCwgbnVtX2R3b3JkcyAvIDIpOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJx LCBjcyArIG51bV9kd29yZHMpOwo+ICsKPiArCUdFTV9CVUdfT04ocnEtPnJpbmctPmVtaXQgJiAo Q0FDSEVMSU5FX0JZVEVTIC0gMSkpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3JpbmcuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMDAwLi5lYTI4MzlkOWUwNDQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZy5oCj4gQEAgLTAsMCArMSwxMzEgQEAKPiArLyoKPiAr ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkg MjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgSU5URUxfUklOR19I Cj4gKyNkZWZpbmUgSU5URUxfUklOR19ICj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9nZW0uaCIgLyog R0VNX0JVR19PTiAqLwo+ICsjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gKyNpbmNsdWRlICJp bnRlbF9yaW5nX3R5cGVzLmgiCj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwo+ICsKPiAr c3RydWN0IGludGVsX3JpbmcgKgo+ICtpbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSk7Cj4gKwo+ICt1MzIgKmludGVsX3Jpbmdf YmVnaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGludCBudW1fZHdvcmRzKTsK PiAraW50IGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KTsKPiArCj4gK3Vuc2lnbmVkIGludCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyk7Cj4gKwo+ICtpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3Jp bmcgKnJpbmcpOwo+ICt2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0IGludGVsX3JpbmcgKnJp bmcpOwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXQoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIHUz MiB0YWlsKTsKPiArCj4gK3ZvaWQgaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBrcmVmICpyZWYpOwo+ ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfcmluZyAqaW50ZWxfcmluZ19nZXQoc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcpCj4gK3sKPiArCWtyZWZfZ2V0KCZyaW5nLT5yZWYpOwo+ICsJ cmV0dXJuIHJpbmc7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX3B1 dChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiArewo+ICsJa3JlZl9wdXQoJnJpbmctPnJlZiwg aW50ZWxfcmluZ19mcmVlKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGludGVsX3Jp bmdfYWR2YW5jZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykKPiArewo+ICsJLyog RHVtbXkgZnVuY3Rpb24uCj4gKwkgKgo+ICsJICogVGhpcyBzZXJ2ZXMgYXMgYSBwbGFjZWhvbGRl ciBpbiB0aGUgY29kZSBzbyB0aGF0IHRoZSByZWFkZXIKPiArCSAqIGNhbiBjb21wYXJlIGFnYWlu c3QgdGhlIHByZWNlZGluZyBpbnRlbF9yaW5nX2JlZ2luKCkgYW5kCj4gKwkgKiBjaGVjayB0aGF0 IHRoZSBudW1iZXIgb2YgZHdvcmRzIGVtaXR0ZWQgbWF0Y2hlcyB0aGUgc3BhY2UKPiArCSAqIHJl c2VydmVkIGZvciB0aGUgY29tbWFuZCBwYWNrZXQgKGkuZS4gdGhlIHZhbHVlIHBhc3NlZCB0bwo+ ICsJICogaW50ZWxfcmluZ19iZWdpbigpKS4KPiArCSAqLwo+ICsJR0VNX0JVR19PTigocnEtPnJp bmctPnZhZGRyICsgcnEtPnJpbmctPmVtaXQpICE9IGNzKTsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB1MzIgaW50ZWxfcmluZ193cmFwKGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1 MzIgcG9zKQo+ICt7Cj4gKwlyZXR1cm4gcG9zICYgKHJpbmctPnNpemUgLSAxKTsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSBib29sCj4gK2ludGVsX3Jpbmdfb2Zmc2V0X3ZhbGlkKGNvbnN0IHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nLAo+ICsJCQl1bnNpZ25lZCBpbnQgcG9zKQo+ICt7Cj4gKwlp ZiAocG9zICYgLXJpbmctPnNpemUpIC8qIG11c3QgYmUgc3RyaWN0bHkgd2l0aGluIHRoZSByaW5n ICovCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmICghSVNfQUxJR05FRChwb3MsIDgpKSAv KiBtdXN0IGJlIHF3b3JkIGFsaWduZWQgKi8KPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0 KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB2b2lkICphZGRyKQo+ICt7Cj4gKwkvKiBE b24ndCB3cml0ZSByaW5nLT5zaXplIChlcXVpdmFsZW50IHRvIDApIGFzIHRoYXQgaGFuZ3Mgc29t ZSBHUFVzLiAqLwo+ICsJdTMyIG9mZnNldCA9IGFkZHIgLSBycS0+cmluZy0+dmFkZHI7Cj4gKwlH RU1fQlVHX09OKG9mZnNldCA+IHJxLT5yaW5nLT5zaXplKTsKPiArCXJldHVybiBpbnRlbF9yaW5n X3dyYXAocnEtPnJpbmcsIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ ICthc3NlcnRfcmluZ190YWlsX3ZhbGlkKGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1 bnNpZ25lZCBpbnQgdGFpbCkKPiArewo+ICsJR0VNX0JVR19PTighaW50ZWxfcmluZ19vZmZzZXRf dmFsaWQocmluZywgdGFpbCkpOwo+ICsKPiArCS8qCj4gKwkgKiAiUmluZyBCdWZmZXIgVXNlIgo+ ICsJICoJR2VuMiBCU3BlYyAiMS4gUHJvZ3JhbW1pbmcgRW52aXJvbm1lbnQiIC8gMS40LjQuNgo+ ICsJICoJR2VuMyBCU3BlYyAiMWMgTWVtb3J5IEludGVyZmFjZSBGdW5jdGlvbnMiIC8gMi4zLjQu NQo+ICsJICoJR2VuNCsgQlNwZWMgIjFjIE1lbW9yeSBJbnRlcmZhY2UgYW5kIENvbW1hbmQgU3Ry ZWFtIiAvIDUuMy40LjUKPiArCSAqICJJZiB0aGUgUmluZyBCdWZmZXIgSGVhZCBQb2ludGVyIGFu ZCB0aGUgVGFpbCBQb2ludGVyIGFyZSBvbiB0aGUKPiArCSAqIHNhbWUgY2FjaGVsaW5lLCB0aGUg SGVhZCBQb2ludGVyIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgVGFpbAo+ICsJICogUG9p bnRlci4iCj4gKwkgKgo+ICsJICogV2UgdXNlIHJpbmctPmhlYWQgYXMgdGhlIGxhc3Qga25vd24g bG9jYXRpb24gb2YgdGhlIGFjdHVhbCBSSU5HX0hFQUQsCj4gKwkgKiBpdCBtYXkgaGF2ZSBhZHZh bmNlZCBidXQgaW4gdGhlIHdvcnN0IGNhc2UgaXQgaXMgZXF1YWxseSB0aGUgc2FtZQo+ICsJICog YXMgcmluZy0+aGVhZCBhbmQgc28gd2Ugc2hvdWxkIG5ldmVyIHByb2dyYW0gUklOR19UQUlMIHRv IGFkdmFuY2UKPiArCSAqIGludG8gdGhlIHNhbWUgY2FjaGVsaW5lIGFzIHJpbmctPmhlYWQuCj4g KwkgKi8KPiArI2RlZmluZSBjYWNoZWxpbmUoYSkgcm91bmRfZG93bihhLCBDQUNIRUxJTkVfQllU RVMpCj4gKwlHRU1fQlVHX09OKGNhY2hlbGluZSh0YWlsKSA9PSBjYWNoZWxpbmUocmluZy0+aGVh ZCkgJiYKPiArCQkgICB0YWlsIDwgcmluZy0+aGVhZCk7Cj4gKyN1bmRlZiBjYWNoZWxpbmUKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiAraW50ZWxfcmluZ19zZXRfdGFp bChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWduZWQgaW50IHRhaWwpCj4gK3sKPiArCS8q IFdoaWxzdCB3cml0ZXMgdG8gdGhlIHRhaWwgYXJlIHN0cmljdGx5IG9yZGVyLCB0aGVyZSBpcyBu bwo+ICsJICogc2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHJlYWRlcnMgYW5kIHRoZSB3cml0ZXJzLiBU aGUgdGFpbCBtYXkgYmUKPiArCSAqIHJlYWQgYnkgaTkxNV9yZXF1ZXN0X3JldGlyZSgpIGp1c3Qg YXMgaXQgaXMgYmVpbmcgdXBkYXRlZAo+ICsJICogYnkgZXhlY2xpc3RzLCBhcyBhbHRob3VnaCB0 aGUgYnJlYWRjcnVtYiBpcyBjb21wbGV0ZSwgdGhlIGNvbnRleHQKPiArCSAqIHN3aXRjaCBoYXNu J3QgYmVlbiBzZWVuLgo+ICsJICovCj4gKwlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJpbmcsIHRh aWwpOwo+ICsJcmluZy0+dGFpbCA9IHRhaWw7Cj4gKwlyZXR1cm4gdGFpbDsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiArX19pbnRlbF9yaW5nX3NwYWNlKHVuc2lnbmVk IGludCBoZWFkLCB1bnNpZ25lZCBpbnQgdGFpbCwgdW5zaWduZWQgaW50IHNpemUpCj4gK3sKPiAr CS8qCj4gKwkgKiAiSWYgdGhlIFJpbmcgQnVmZmVyIEhlYWQgUG9pbnRlciBhbmQgdGhlIFRhaWwg UG9pbnRlciBhcmUgb24gdGhlCj4gKwkgKiBzYW1lIGNhY2hlbGluZSwgdGhlIEhlYWQgUG9pbnRl ciBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIFRhaWwKPiArCSAqIFBvaW50ZXIuIgo+ICsJ ICovCj4gKwlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8yKHNpemUpKTsKPiArCXJldHVybiAoaGVh ZCAtIHRhaWwgLSBDQUNIRUxJTkVfQllURVMpICYgKHNpemUgLSAxKTsKPiArfQo+ICsKPiArI2Vu ZGlmIC8qIElOVEVMX1JJTkdfSCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGlt ZWxpbmUuYwo+IGluZGV4IDBmOTU5Njk0MzAzYy4uMTRhZDEwYWNkNTQ4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCj4gQEAgLTQsMTMgKzQsMTMgQEAKPiAg ICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgKi8KPiAgCj4g LSNpbmNsdWRlICJndC9pbnRlbF9ndF90eXBlcy5oIgo+IC0KPiAgI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9hY3RpdmUuaCIKPiAgI2luY2x1ZGUgImk5MTVfc3lu Y21hcC5oIgo+IC0jaW5jbHVkZSAiZ3QvaW50ZWxfdGltZWxpbmUuaCIKPiArI2luY2x1ZGUgImlu dGVsX2d0LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gKyNpbmNsdWRlICJpbnRlbF90 aW1lbGluZS5oIgo+ICAKPiAgI2RlZmluZSBwdHJfc2V0X2JpdChwdHIsIGJpdCkgKCh0eXBlb2Yo cHRyKSkoKHVuc2lnbmVkIGxvbmcpKHB0cikgfCBCSVQoYml0KSkpCj4gICNkZWZpbmUgcHRyX3Rl c3RfYml0KHB0ciwgYml0KSAoKHVuc2lnbmVkIGxvbmcpKHB0cikgJiBCSVQoYml0KSkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCBhZjhhODE4 MzE1NGEuLjdjYjZkYWI0Mzk5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC03LDYgKzcsNyBAQAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKPiAgI2luY2x1ZGUgImludGVsX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImludGVsX2d0Lmgi Cj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5k cy5oIgo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21v Y2tfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCj4gaW5k ZXggMTIzZGIyYzNmOTU2Li44M2Y1NDlkMjAzYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L21vY2tfZW5naW5lLmMKPiBAQCAtMjMsNiArMjMsNyBAQAo+ICAgKi8KPiAgCj4gICNpbmNsdWRl ICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfcmluZy5oIgo+ ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpbnRlbF9jb250ZXh0Lmgi Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5l LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCj4gaW5kZXgg ZGFjODZmNjk5YTRjLi5mMDRhNTlmZTVkMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKPiBAQCAtOSw2ICs5LDcgQEAKPiAgI2luY2x1ZGUgImlu dGVsX2VuZ2luZV9wbS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZ3QuaCIKPiAgI2luY2x1ZGUgImlu dGVsX2d0X3JlcXVlc3RzLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gIAo+ICAjaW5j bHVkZSAiLi4vc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCj4gICNpbmNsdWRlICIuLi9pOTE1X3Nl bGZ0ZXN0LmgiCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf c3VibWlzc2lvbi5jCj4gaW5kZXggMDA5ZTU0YTM3NjRmLi4xYjE2OTFhYWVkMjggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMK PiBAQCAtNiwxMiArNiwxMyBAQAo+ICAjaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KPiAgCj4g ICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+IC0KPiAgI2luY2x1ZGUgImd0L2lu dGVsX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9wbS5oIgo+ICAjaW5j bHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4gICNp bmNsdWRlICJndC9pbnRlbF9scmNfcmVnLmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgi Cj4gKwo+ICAjaW5jbHVkZSAiaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKPiAgCj4gICNpbmNsdWRl ICJpOTE1X2Rydi5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21k X3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwo+IGluZGV4 IGU3NTNiMWU3MDZlMi4uNmEzYWM4Y2RlOTVkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Y21kX3BhcnNlci5jCj4gQEAgLTM1LDcgKzM1LDkgQEAKPiAgICovCj4gIAo+ICAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+ICsKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJn dC9pbnRlbF9yaW5nLmgiCj4gICNpbmNsdWRlICJndnQuaCIKPiAgI2luY2x1ZGUgImk5MTVfcHZp bmZvLmgiCj4gICNpbmNsdWRlICJ0cmFjZS5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1p b19jb250ZXh0LmMKPiBpbmRleCA0MjA4ZTQwNDQ1YjEuLmFhZjE1OTE2ZDI5YSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKPiBAQCAtMzUsNiArMzUsNyBAQAo+ ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9jb250ZXh0 LmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgiCj4gICNpbmNsdWRlICJndnQuaCIKPiAg I2luY2x1ZGUgInRyYWNlLmgiCj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMK PiBpbmRleCBhNWI5NDJlZTNjZWIuLjM3NzgxMWY4ODUzZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMKPiBAQCAtMzgsNiArMzgsNyBAQAo+ICAjaW5jbHVkZSAiZ2VtL2k5 MTVfZ2VtX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgo+ICAjaW5j bHVkZSAiZ3QvaW50ZWxfY29udGV4dC5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfcmluZy5oIgo+ ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJndnQuaCIKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlLmMKPiBpbmRleCA0YzE5MGE1NDhiYTcuLjNlMzQ5NTgzOGE5MyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+IEBAIC04LDYgKzgsNyBAQAo+ICAK PiAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCIKPiAgI2luY2x1ZGUgImd0 L2ludGVsX2VuZ2luZV9wbS5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfcmluZy5oIgo+ICAKPiAg I2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggMzEzMGIwYzdlZDgzLi4zOGQzZGUyZGZhYTYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0yMDAsNiArMjAwLDcgQEAKPiAgI2lu Y2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9ndC5o Igo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxf cmluZy5oIgo+ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X3Bl cmYuaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDQ1NzVmMzY4NDU1 ZC4uOTMyYzVjZjE5MGI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBA QCAtMzEsNiArMzEsNyBAQAo+ICAKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0Lmgi Cj4gICNpbmNsdWRlICJndC9pbnRlbF9jb250ZXh0LmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9y aW5nLmgiCj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9hY3RpdmUuaCIKPiAgI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCj4gLS0gCj4gMi4yNC4wLnJjMAo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66F8ECA9EAF for ; Thu, 24 Oct 2019 07:34:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3DD072166E for ; Thu, 24 Oct 2019 07:34:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3DD072166E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BB5796E134; Thu, 24 Oct 2019 07:34:18 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 14F366E11C for ; Thu, 24 Oct 2019 07:34:17 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Oct 2019 00:34:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,223,1569308400"; d="scan'208";a="197026478" Received: from gaia.fi.intel.com ([10.237.72.192]) by fmsmga008.fm.intel.com with ESMTP; 24 Oct 2019 00:34:15 -0700 Received: by gaia.fi.intel.com (Postfix, from userid 1000) id 793565C1EAD; Thu, 24 Oct 2019 10:33:26 +0300 (EEST) From: Mika Kuoppala To: Chris Wilson , intel-gfx@lists.freedesktop.org In-Reply-To: <20191024071139.31917-1-chris@chris-wilson.co.uk> References: <20191024071139.31917-1-chris@chris-wilson.co.uk> Date: Thu, 24 Oct 2019 10:33:26 +0300 Message-ID: <8736fi8unt.fsf@gaia.fi.intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH] drm/i915/gt: Split intel_ring_submission X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191024073326.eTZFMy-3rMByhaTg3OfXlxizUqFjphPi38BR5CcCNZY@z> Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gU3BsaXQg dGhlIGxlZ2FjeSBzdWJtaXNzaW9uIGJhY2tlbmQgZnJvbSB0aGUgY29tbW9uIHJpbmcgYnVmZmVy LgoKQXllLgoKRGlkbid0IHNwb3QgYW55dGhpbmcgb3V0IG9mIG9yZGluYXJ5LgoKUmV2aWV3ZWQt Ynk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKPgo+IFNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDUg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMgIHwgICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgICAz ICstCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAg MSArCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuYyAgICB8ICAg MSArCj4gIC4uLi9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyAgICAgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCAgICAgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oICAgICAgICB8IDEx NCAtLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAg ICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jICAg ICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o ICB8ICAyNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAg ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgICAgICAg ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5j ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nLmMgICAgICAg ICAgfCAzMTQgKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3JpbmcuaCAgICAgICAgICB8IDEzMSArKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF90aW1lbGluZS5jICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvbW9ja19lbmdpbmUuYyAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyAgIHwgICAxICsKPiAgLi4uL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9jbWRfcGFyc2VyLmMgICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9tbWlvX2NvbnRleHQuYyAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9zY2hlZHVsZXIuYyAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlLmMgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICAgMSArCj4gIDI4IGZpbGVzIGNoYW5nZWQs IDQ3NyBpbnNlcnRpb25zKCspLCAxNDcgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nLmMKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuaAo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBpbmRleCBhOTFlMGE0ODdhNzkuLjUwMjFhYTdmYTE4NyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gQEAgLTkwLDExICs5MCwxMiBAQCBndC15ICs9IFwKPiAgCWd0L2ludGVsX2d0 X3JlcXVlc3RzLm8gXAo+ICAJZ3QvaW50ZWxfbGxjLm8gXAo+ICAJZ3QvaW50ZWxfbHJjLm8gXAo+ ICsJZ3QvaW50ZWxfbW9jcy5vIFwKPiAgCWd0L2ludGVsX3JjNi5vIFwKPiAgCWd0L2ludGVsX3Jl bmRlcnN0YXRlLm8gXAo+ICAJZ3QvaW50ZWxfcmVzZXQubyBcCj4gLQlndC9pbnRlbF9yaW5nYnVm ZmVyLm8gXAo+IC0JZ3QvaW50ZWxfbW9jcy5vIFwKPiArCWd0L2ludGVsX3JpbmcubyBcCj4gKwln dC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24ubyBcCj4gIAlndC9pbnRlbF9zc2V1Lm8gXAo+ICAJZ3Qv aW50ZWxfdGltZWxpbmUubyBcCj4gIAlndC9pbnRlbF93b3JrYXJvdW5kcy5vCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCAyMzYwZjE5Zjk2 OTQuLjg0OGNlMDdhOGVjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfb3ZlcmxheS5jCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiAgI2luY2x1ZGUgPGRybS9pOTE1 X2RybS5oPgo+ICAKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfcmluZy5oIgo+ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRl ICJpOTE1X3JlZy5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRl eHQuYwo+IGluZGV4IGRmNTI4ZTQ4ZTU2Ni4uYTAzYmVlMzBmYWMxIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTY5LDkgKzY5LDEwIEBA Cj4gIAo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gIAo+IC0jaW5jbHVkZSAiZ3QvaW50 ZWxfbHJjX3JlZy5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oIgo+ ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3VzZXIuaCIKPiArI2luY2x1ZGUgImd0L2ludGVs X2xyY19yZWcuaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKPiAgCj4gICNpbmNsdWRl ICJpOTE1X2dlbV9jb250ZXh0LmgiCj4gICNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCA5 OWQ3OWY5NGU2NDEuLmM4ODk0OGU0MDk0YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xOSw2ICsxOSw3IEBACj4gICNpbmNs dWRlICJndC9pbnRlbF9lbmdpbmVfcG9vbC5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIK PiAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9yaW5n LmgiCj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2Ns Zmx1c2guaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X29iamVjdF9ibHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Rf Ymx0LmMKPiBpbmRleCA1YmQ4ZGUxMjRkNzQuLjUxNmU2MWU5OTIxMiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuYwo+IEBAIC04LDYgKzgs NyBAQAo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICNpbmNsdWRlICJndC9p bnRlbF9lbmdpbmVfcG9vbC5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiArI2luY2x1 ZGUgImd0L2ludGVsX3JpbmcuaCIKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2NsZmx1c2guaCIKPiAg I2luY2x1ZGUgImk5MTVfZ2VtX29iamVjdF9ibHQuaCIKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gaW5k ZXggNTQ5ODEwZjcwYWViLi4wODc3ZWY0ZGZmNjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMKPiBAQCAt OCw2ICs4LDcgQEAKPiAgCj4gICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgo+ICAjaW5jbHVkZSAi Z3QvaW50ZWxfZ3RfcG0uaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKPiAgCj4gICNp bmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gICNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9yYW5k b20uaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCj4gaW5kZXggNTlj MzA4M2MxZWMxLi5lZTlkMmJjZDJjMTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfY29udGV4dC5jCj4gQEAgLTEzLDYgKzEzLDcgQEAKPiAgI2luY2x1ZGUgImludGVsX2NvbnRl eHQuaCIKPiAgI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZW5n aW5lX3BtLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gIAo+ICBzdGF0aWMgc3RydWN0 IGk5MTVfZ2xvYmFsX2NvbnRleHQgewo+ICAJc3RydWN0IGk5MTVfZ2xvYmFsIGJhc2U7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaAo+IGluZGV4IGRkNzQyYWMyZmJkYi4u NjhiM2QzMTdkOTU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQu aAo+IEBAIC0xMiw2ICsxMiw3IEBACj4gICNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+ICAjaW5j bHVkZSAiaW50ZWxfY29udGV4dF90eXBlcy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3R5 cGVzLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nX3R5cGVzLmgiCj4gICNpbmNsdWRlICJpbnRl bF90aW1lbGluZV90eXBlcy5oIgo+ICAKPiAgdm9pZCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5o Cj4gaW5kZXggYzdmOTNkMDVjOGUwLi5kNzdiOWY5ZjA5NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmUuaAo+IEBAIC0xOSw3ICsxOSw2IEBACj4gICNpbmNsdWRlICJp bnRlbF93b3JrYXJvdW5kcy5oIgo+ICAKPiAgc3RydWN0IGRybV9wcmludGVyOwo+IC0KPiAgc3Ry dWN0IGludGVsX2d0Owo+ICAKPiAgLyogRWFybHkgZ2VuMiBkZXZpY2VzIGhhdmUgYSBjYWNoZWxp bmUgb2YganVzdCAzMiBieXRlcywgdXNpbmcgNjQgaXMgb3ZlcmtpbGwsCj4gQEAgLTE3NiwxMjIg KzE3NSw5IEBAIGludGVsX3dyaXRlX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgaW50IHJlZywgdTMyIHZhbHVlKQo+ICAjZGVmaW5lIEk5MTVfSFdTX0NTQl9XUklU RV9JTkRFWAkweDFmCj4gICNkZWZpbmUgQ05MX0hXU19DU0JfV1JJVEVfSU5ERVgJCTB4MmYKPiAg Cj4gLXN0cnVjdCBpbnRlbF9yaW5nICoKPiAtaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpOwo+IC1pbnQgaW50ZWxfcmluZ19w aW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwo+IC12b2lkIGludGVsX3JpbmdfcmVzZXQoc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcsIHUzMiB0YWlsKTsKPiAtdW5zaWduZWQgaW50IGludGVsX3Jp bmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiAtdm9pZCBpbnRlbF9y aW5nX3VucGluKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKTsKPiAtdm9pZCBpbnRlbF9yaW5nX2Zy ZWUoc3RydWN0IGtyZWYgKnJlZik7Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9y aW5nICppbnRlbF9yaW5nX2dldChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAtewo+IC0Ja3Jl Zl9nZXQoJnJpbmctPnJlZik7Cj4gLQlyZXR1cm4gcmluZzsKPiAtfQo+IC0KPiAtc3RhdGljIGlu bGluZSB2b2lkIGludGVsX3JpbmdfcHV0KHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQo+IC17Cj4g LQlrcmVmX3B1dCgmcmluZy0+cmVmLCBpbnRlbF9yaW5nX2ZyZWUpOwo+IC19Cj4gLQo+ICB2b2lk IGludGVsX2VuZ2luZV9zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIHZv aWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK PiAgCj4gLWludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxpZ24oc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpOwo+IC0KPiAtdTMyIF9fbXVzdF9jaGVjayAqaW50ZWxfcmluZ19i ZWdpbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdW5zaWduZWQgaW50IG4pOwo+IC0KPiAtc3Rh dGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgdTMyICpjcykKPiAtewo+IC0JLyogRHVtbXkgZnVuY3Rpb24uCj4gLQkgKgo+IC0JICogVGhp cyBzZXJ2ZXMgYXMgYSBwbGFjZWhvbGRlciBpbiB0aGUgY29kZSBzbyB0aGF0IHRoZSByZWFkZXIK PiAtCSAqIGNhbiBjb21wYXJlIGFnYWluc3QgdGhlIHByZWNlZGluZyBpbnRlbF9yaW5nX2JlZ2lu KCkgYW5kCj4gLQkgKiBjaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgZHdvcmRzIGVtaXR0ZWQgbWF0 Y2hlcyB0aGUgc3BhY2UKPiAtCSAqIHJlc2VydmVkIGZvciB0aGUgY29tbWFuZCBwYWNrZXQgKGku ZS4gdGhlIHZhbHVlIHBhc3NlZCB0bwo+IC0JICogaW50ZWxfcmluZ19iZWdpbigpKS4KPiAtCSAq Lwo+IC0JR0VNX0JVR19PTigocnEtPnJpbmctPnZhZGRyICsgcnEtPnJpbmctPmVtaXQpICE9IGNz KTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1MzIgaW50ZWxfcmluZ193cmFwKGNvbnN0IHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1MzIgcG9zKQo+IC17Cj4gLQlyZXR1cm4gcG9zICYgKHJp bmctPnNpemUgLSAxKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBib29sCj4gLWludGVsX3Jp bmdfb2Zmc2V0X3ZhbGlkKGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLAo+IC0JCQl1bnNp Z25lZCBpbnQgcG9zKQo+IC17Cj4gLQlpZiAocG9zICYgLXJpbmctPnNpemUpIC8qIG11c3QgYmUg c3RyaWN0bHkgd2l0aGluIHRoZSByaW5nICovCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCWlm ICghSVNfQUxJR05FRChwb3MsIDgpKSAvKiBtdXN0IGJlIHF3b3JkIGFsaWduZWQgKi8KPiAtCQly ZXR1cm4gZmFsc2U7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxp bmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB2 b2lkICphZGRyKQo+IC17Cj4gLQkvKiBEb24ndCB3cml0ZSByaW5nLT5zaXplIChlcXVpdmFsZW50 IHRvIDApIGFzIHRoYXQgaGFuZ3Mgc29tZSBHUFVzLiAqLwo+IC0JdTMyIG9mZnNldCA9IGFkZHIg LSBycS0+cmluZy0+dmFkZHI7Cj4gLQlHRU1fQlVHX09OKG9mZnNldCA+IHJxLT5yaW5nLT5zaXpl KTsKPiAtCXJldHVybiBpbnRlbF9yaW5nX3dyYXAocnEtPnJpbmcsIG9mZnNldCk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZAo+IC1hc3NlcnRfcmluZ190YWlsX3ZhbGlkKGNvbnN0IHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1bnNpZ25lZCBpbnQgdGFpbCkKPiAtewo+IC0JR0VNX0JV R19PTighaW50ZWxfcmluZ19vZmZzZXRfdmFsaWQocmluZywgdGFpbCkpOwo+IC0KPiAtCS8qCj4g LQkgKiAiUmluZyBCdWZmZXIgVXNlIgo+IC0JICoJR2VuMiBCU3BlYyAiMS4gUHJvZ3JhbW1pbmcg RW52aXJvbm1lbnQiIC8gMS40LjQuNgo+IC0JICoJR2VuMyBCU3BlYyAiMWMgTWVtb3J5IEludGVy ZmFjZSBGdW5jdGlvbnMiIC8gMi4zLjQuNQo+IC0JICoJR2VuNCsgQlNwZWMgIjFjIE1lbW9yeSBJ bnRlcmZhY2UgYW5kIENvbW1hbmQgU3RyZWFtIiAvIDUuMy40LjUKPiAtCSAqICJJZiB0aGUgUmlu ZyBCdWZmZXIgSGVhZCBQb2ludGVyIGFuZCB0aGUgVGFpbCBQb2ludGVyIGFyZSBvbiB0aGUKPiAt CSAqIHNhbWUgY2FjaGVsaW5lLCB0aGUgSGVhZCBQb2ludGVyIG11c3Qgbm90IGJlIGdyZWF0ZXIg dGhhbiB0aGUgVGFpbAo+IC0JICogUG9pbnRlci4iCj4gLQkgKgo+IC0JICogV2UgdXNlIHJpbmct PmhlYWQgYXMgdGhlIGxhc3Qga25vd24gbG9jYXRpb24gb2YgdGhlIGFjdHVhbCBSSU5HX0hFQUQs Cj4gLQkgKiBpdCBtYXkgaGF2ZSBhZHZhbmNlZCBidXQgaW4gdGhlIHdvcnN0IGNhc2UgaXQgaXMg ZXF1YWxseSB0aGUgc2FtZQo+IC0JICogYXMgcmluZy0+aGVhZCBhbmQgc28gd2Ugc2hvdWxkIG5l dmVyIHByb2dyYW0gUklOR19UQUlMIHRvIGFkdmFuY2UKPiAtCSAqIGludG8gdGhlIHNhbWUgY2Fj aGVsaW5lIGFzIHJpbmctPmhlYWQuCj4gLQkgKi8KPiAtI2RlZmluZSBjYWNoZWxpbmUoYSkgcm91 bmRfZG93bihhLCBDQUNIRUxJTkVfQllURVMpCj4gLQlHRU1fQlVHX09OKGNhY2hlbGluZSh0YWls KSA9PSBjYWNoZWxpbmUocmluZy0+aGVhZCkgJiYKPiAtCQkgICB0YWlsIDwgcmluZy0+aGVhZCk7 Cj4gLSN1bmRlZiBjYWNoZWxpbmUKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQKPiAtaW50ZWxfcmluZ19zZXRfdGFpbChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWdu ZWQgaW50IHRhaWwpCj4gLXsKPiAtCS8qIFdoaWxzdCB3cml0ZXMgdG8gdGhlIHRhaWwgYXJlIHN0 cmljdGx5IG9yZGVyLCB0aGVyZSBpcyBubwo+IC0JICogc2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHJl YWRlcnMgYW5kIHRoZSB3cml0ZXJzLiBUaGUgdGFpbCBtYXkgYmUKPiAtCSAqIHJlYWQgYnkgaTkx NV9yZXF1ZXN0X3JldGlyZSgpIGp1c3QgYXMgaXQgaXMgYmVpbmcgdXBkYXRlZAo+IC0JICogYnkg ZXhlY2xpc3RzLCBhcyBhbHRob3VnaCB0aGUgYnJlYWRjcnVtYiBpcyBjb21wbGV0ZSwgdGhlIGNv bnRleHQKPiAtCSAqIHN3aXRjaCBoYXNuJ3QgYmVlbiBzZWVuLgo+IC0JICovCj4gLQlhc3NlcnRf cmluZ190YWlsX3ZhbGlkKHJpbmcsIHRhaWwpOwo+IC0JcmluZy0+dGFpbCA9IHRhaWw7Cj4gLQly ZXR1cm4gdGFpbDsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiAtX19p bnRlbF9yaW5nX3NwYWNlKHVuc2lnbmVkIGludCBoZWFkLCB1bnNpZ25lZCBpbnQgdGFpbCwgdW5z aWduZWQgaW50IHNpemUpCj4gLXsKPiAtCS8qCj4gLQkgKiAiSWYgdGhlIFJpbmcgQnVmZmVyIEhl YWQgUG9pbnRlciBhbmQgdGhlIFRhaWwgUG9pbnRlciBhcmUgb24gdGhlCj4gLQkgKiBzYW1lIGNh Y2hlbGluZSwgdGhlIEhlYWQgUG9pbnRlciBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIFRh aWwKPiAtCSAqIFBvaW50ZXIuIgo+IC0JICovCj4gLQlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8y KHNpemUpKTsKPiAtCXJldHVybiAoaGVhZCAtIHRhaWwgLSBDQUNIRUxJTkVfQllURVMpICYgKHNp emUgLSAxKTsKPiAtfQo+IC0KPiAgaW50IGludGVsX2VuZ2luZXNfaW5pdF9tbWlvKHN0cnVjdCBp bnRlbF9ndCAqZ3QpOwo+ICBpbnQgaW50ZWxfZW5naW5lc19zZXR1cChzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KTsKPiAgaW50IGludGVsX2VuZ2luZXNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IGNkNGNhZjU0 YzU5Yy4uMmFmYTJlZjkwNDgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMKPiBAQCAtMzcsNiArMzcsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfY29udGV4 dC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCj4gICNpbmNsdWRlICJpbnRlbF9yZXNldC5o Igo+ICsjaW5jbHVkZSAiaW50ZWxfcmluZy5oIgo+ICAKPiAgLyogSGFzd2VsbCBkb2VzIGhhdmUg dGhlIENYVF9TSVpFIHJlZ2lzdGVyIGhvd2V2ZXIgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlCj4g ICAqIHZhbGlkLiBOb3csIGRvY3MgZXhwbGFpbiBpbiBkd29yZHMgd2hhdCBpcyBpbiB0aGUgY29u dGV4dCBvYmplY3QuIFRoZSBmdWxsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX3BtLmMKPiBpbmRleCA2ZmJmYTIxNjJlNTQuLjNjMGY0OTBmZjJjNyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCj4gQEAgLTEzLDYgKzEzLDcgQEAK PiAgI2luY2x1ZGUgImludGVsX2d0LmgiCj4gICNpbmNsdWRlICJpbnRlbF9ndF9wbS5oIgo+ICAj aW5jbHVkZSAiaW50ZWxfcmM2LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gIAo+ICBz dGF0aWMgaW50IF9fZW5naW5lX3VucGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVz LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+IGluZGV4 IGZiZTg5YmZkM2Q0Zi4uYzVkMTA0N2E0YmM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBAQCAtNTksNiArNTksNyBAQCBzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dDsKPiAgc3RydWN0IGk5MTVfcmVxdWVzdDsKPiAgc3RydWN0IGk5MTVfc2No ZWRfYXR0cjsKPiAgc3RydWN0IGludGVsX2d0Owo+ICtzdHJ1Y3QgaW50ZWxfcmluZzsKPiAgc3Ry dWN0IGludGVsX3VuY29yZTsKPiAgCj4gIHR5cGVkZWYgdTggaW50ZWxfZW5naW5lX21hc2tfdDsK PiBAQCAtNzcsMzIgKzc4LDYgQEAgc3RydWN0IGludGVsX2luc3Rkb25lIHsKPiAgCXUzMiByb3db STkxNV9NQVhfU0xJQ0VTXVtJOTE1X01BWF9TVUJTTElDRVNdOwo+ICB9Owo+ICAKPiAtc3RydWN0 IGludGVsX3Jpbmcgewo+IC0Jc3RydWN0IGtyZWYgcmVmOwo+IC0Jc3RydWN0IGk5MTVfdm1hICp2 bWE7Cj4gLQl2b2lkICp2YWRkcjsKPiAtCj4gLQkvKgo+IC0JICogQXMgd2UgaGF2ZSB0d28gdHlw ZXMgb2YgcmluZ3MsIG9uZSBnbG9iYWwgdG8gdGhlIGVuZ2luZSB1c2VkCj4gLQkgKiBieSByaW5n YnVmZmVyIHN1Ym1pc3Npb24gYW5kIHRob3NlIHRoYXQgYXJlIGV4Y2x1c2l2ZSB0byBhCj4gLQkg KiBjb250ZXh0IHVzZWQgYnkgZXhlY2xpc3RzLCB3ZSBoYXZlIHRvIHBsYXkgc2FmZSBhbmQgYWxs b3cKPiAtCSAqIGF0b21pYyB1cGRhdGVzIHRvIHRoZSBwaW5fY291bnQuIEhvd2V2ZXIsIHRoZSBh Y3R1YWwgcGlubmluZwo+IC0JICogb2YgdGhlIGNvbnRleHQgaXMgZWl0aGVyIGRvbmUgZHVyaW5n IGluaXRpYWxpc2F0aW9uIGZvcgo+IC0JICogcmluZ2J1ZmZlciBzdWJtaXNzaW9uIG9yIHNlcmlh bGlzZWQgYXMgcGFydCBvZiB0aGUgY29udGV4dAo+IC0JICogcGlubmluZyBmb3IgZXhlY2xpc3Rz LCBhbmQgc28gd2UgZG8gbm90IG5lZWQgYSBtdXRleCBvdXJzZWx2ZXMKPiAtCSAqIHRvIHNlcmlh bGlzZSBpbnRlbF9yaW5nX3Bpbi9pbnRlbF9yaW5nX3VucGluLgo+IC0JICovCj4gLQlhdG9taWNf dCBwaW5fY291bnQ7Cj4gLQo+IC0JdTMyIGhlYWQ7Cj4gLQl1MzIgdGFpbDsKPiAtCXUzMiBlbWl0 Owo+IC0KPiAtCXUzMiBzcGFjZTsKPiAtCXUzMiBzaXplOwo+IC0JdTMyIGVmZmVjdGl2ZV9zaXpl Owo+IC19Owo+IC0KPiAgLyoKPiAgICogd2UgdXNlIGEgc2luZ2xlIHBhZ2UgdG8gbG9hZCBjdHgg d29ya2Fyb3VuZHMgc28gYWxsIG9mIHRoZXNlCj4gICAqIHZhbHVlcyBhcmUgcmVmZXJyZWQgaW4g dGVybXMgb2YgZHdvcmRzCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBpbmRleCA4 ZDhmZWNjNjk4MDkuLjlkNTlkZWJmZDE2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jCj4gQEAgLTE0NSw2ICsxNDUsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5o Igo+ICAjaW5jbHVkZSAiaW50ZWxfbW9jcy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIK PiArI2luY2x1ZGUgImludGVsX3JpbmcuaCIKPiAgI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRz LmgiCj4gIAo+ICAjZGVmaW5lIFJJTkdfRVhFQ0xJU1RfUUZVTEwJCSgxIDw8IDB4MikKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCj4gaW5kZXggMDZkYmE3ZmYyOTRlLi42ZDRjNjY1 YTk5N2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCj4gQEAgLTI2LDYg KzI2LDcgQEAKPiAgI2luY2x1ZGUgImludGVsX2d0LmgiCj4gICNpbmNsdWRlICJpbnRlbF9tb2Nz LmgiCj4gICNpbmNsdWRlICJpbnRlbF9scmMuaCIKPiArI2luY2x1ZGUgImludGVsX3JpbmcuaCIK PiAgCj4gIC8qIHN0cnVjdHVyZXMgcmVxdWlyZWQgKi8KPiAgc3RydWN0IGRybV9pOTE1X21vY3Nf ZW50cnkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5k ZXJzdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3RhdGUuYwo+ IGluZGV4IDZkMDVmOWM2NDE3OC4uYzRlZGMzNWU3ZDg5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0YXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5jCj4gQEAgLTI3LDYgKzI3LDcgQEAKPiAgCj4g ICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcmVuZGVyc3RhdGUuaCIK PiArI2luY2x1ZGUgImludGVsX3JpbmcuaCIKPiAgCj4gIHN0cnVjdCBpbnRlbF9yZW5kZXJzdGF0 ZSB7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcmVuZGVyc3RhdGVfcm9kYXRhICpyb2RhdGE7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwLi45ODg3NmI1NWY4NTEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZy5jCj4gQEAgLTAsMCArMSwzMTQgQEAK PiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJn ZW0vaTkxNV9nZW1fb2JqZWN0LmgiCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVk ZSAiaTkxNV92bWEuaCIKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgo+ICsjaW5jbHVkZSAi aW50ZWxfcmluZy5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfdGltZWxpbmUuaCIKPiArCj4gK3Vuc2ln bmVkIGludCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykK PiArewo+ICsJdW5zaWduZWQgaW50IHNwYWNlOwo+ICsKPiArCXNwYWNlID0gX19pbnRlbF9yaW5n X3NwYWNlKHJpbmctPmhlYWQsIHJpbmctPmVtaXQsIHJpbmctPnNpemUpOwo+ICsKPiArCXJpbmct PnNwYWNlID0gc3BhY2U7Cj4gKwlyZXR1cm4gc3BhY2U7Cj4gK30KPiArCj4gK2ludCBpbnRlbF9y aW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiArewo+ICsJc3RydWN0IGk5MTVfdm1h ICp2bWEgPSByaW5nLT52bWE7Cj4gKwl1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gKwl2b2lkICphZGRy Owo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoYXRvbWljX2ZldGNoX2luYygmcmluZy0+cGluX2Nv dW50KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmbGFncyA9IFBJTl9HTE9CQUw7Cj4gKwo+ICsJ LyogUmluZyB3cmFwYXJvdW5kIGF0IG9mZnNldCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3 aHkuICovCj4gKwlmbGFncyB8PSBQSU5fT0ZGU0VUX0JJQVMgfCBpOTE1X2dndHRfcGluX2JpYXMo dm1hKTsKPiArCj4gKwlpZiAodm1hLT5vYmotPnN0b2xlbikKPiArCQlmbGFncyB8PSBQSU5fTUFQ UEFCTEU7Cj4gKwllbHNlCj4gKwkJZmxhZ3MgfD0gUElOX0hJR0g7Cj4gKwo+ICsJcmV0ID0gaTkx NV92bWFfcGluKHZtYSwgMCwgMCwgZmxhZ3MpOwo+ICsJaWYgKHVubGlrZWx5KHJldCkpCj4gKwkJ Z290byBlcnJfdW5waW47Cj4gKwo+ICsJaWYgKGk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2VhYmxl KHZtYSkpCj4gKwkJYWRkciA9ICh2b2lkIF9fZm9yY2UgKilpOTE1X3ZtYV9waW5faW9tYXAodm1h KTsKPiArCWVsc2UKPiArCQlhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodm1hLT5vYmos Cj4gKwkJCQkJICAgICAgIGk5MTVfY29oZXJlbnRfbWFwX3R5cGUodm1hLT52bS0+aTkxNSkpOwo+ ICsJaWYgKElTX0VSUihhZGRyKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoYWRkcik7Cj4gKwkJZ290 byBlcnJfcmluZzsKPiArCX0KPiArCj4gKwlpOTE1X3ZtYV9tYWtlX3Vuc2hyaW5rYWJsZSh2bWEp Owo+ICsKPiArCUdFTV9CVUdfT04ocmluZy0+dmFkZHIpOwo+ICsJcmluZy0+dmFkZHIgPSBhZGRy Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX3Jpbmc6Cj4gKwlpOTE1X3ZtYV91bnBpbih2 bWEpOwo+ICtlcnJfdW5waW46Cj4gKwlhdG9taWNfZGVjKCZyaW5nLT5waW5fY291bnQpOwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9yaW5nX3Jlc2V0KHN0cnVjdCBpbnRl bF9yaW5nICpyaW5nLCB1MzIgdGFpbCkKPiArewo+ICsJdGFpbCA9IGludGVsX3Jpbmdfd3JhcChy aW5nLCB0YWlsKTsKPiArCXJpbmctPnRhaWwgPSB0YWlsOwo+ICsJcmluZy0+aGVhZCA9IHRhaWw7 Cj4gKwlyaW5nLT5lbWl0ID0gdGFpbDsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcp Owo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0IGludGVsX3JpbmcgKnJp bmcpCj4gK3sKPiArCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmcmluZy0+cGluX2NvdW50KSkK PiArCQlyZXR1cm47Cj4gKwo+ICsJLyogRGlzY2FyZCBhbnkgdW51c2VkIGJ5dGVzIGJleW9uZCB0 aGF0IHN1Ym1pdHRlZCB0byBody4gKi8KPiArCWludGVsX3JpbmdfcmVzZXQocmluZywgcmluZy0+ ZW1pdCk7Cj4gKwo+ICsJR0VNX0JVR19PTighcmluZy0+dm1hKTsKPiArCWk5MTVfdm1hX3Vuc2V0 X2dndHRfd3JpdGUocmluZy0+dm1hKTsKPiArCWlmIChpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNl YWJsZShyaW5nLT52bWEpKQo+ICsJCWk5MTVfdm1hX3VucGluX2lvbWFwKHJpbmctPnZtYSk7Cj4g KwllbHNlCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChyaW5nLT52bWEtPm9iaik7Cj4g Kwo+ICsJR0VNX0JVR19PTighcmluZy0+dmFkZHIpOwo+ICsJcmluZy0+dmFkZHIgPSBOVUxMOwo+ ICsKPiArCWk5MTVfdm1hX3VucGluKHJpbmctPnZtYSk7Cj4gKwlpOTE1X3ZtYV9tYWtlX3B1cmdl YWJsZShyaW5nLT52bWEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpjcmVh dGVfcmluZ192bWEoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgaW50IHNpemUpCj4gK3sKPiArCXN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmdndHQtPnZtOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB2bS0+aTkxNTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCj4gKwlvYmogPSBpOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbihpOTE1LCBzaXplKTsKPiArCWlmICghb2JqKQo+ICsJCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgc2l6ZSk7Cj4gKwlpZiAo SVNfRVJSKG9iaikpCj4gKwkJcmV0dXJuIEVSUl9DQVNUKG9iaik7Cj4gKwo+ICsJLyoKPiArCSAq IE1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQVSBzaWRlIChzbyBubyBzdHJh eSBvdmVyd3JpdGVzKQo+ICsJICogaWYgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSdzIEdHVFQu Cj4gKwkgKi8KPiArCWlmICh2bS0+aGFzX3JlYWRfb25seSkKPiArCQlpOTE1X2dlbV9vYmplY3Rf c2V0X3JlYWRvbmx5KG9iaik7Cj4gKwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2 bSwgTlVMTCk7Cj4gKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gKwo+ICsJcmV0dXJuIHZt YTsKPiArfQo+ICsKPiArc3RydWN0IGludGVsX3JpbmcgKgo+ICtpbnRlbF9lbmdpbmVfY3JlYXRl X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZzsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsKPiArCUdFTV9C VUdfT04oIWlzX3Bvd2VyX29mXzIoc2l6ZSkpOwo+ICsJR0VNX0JVR19PTihSSU5HX0NUTF9TSVpF KHNpemUpICYgflJJTkdfTlJfUEFHRVMpOwo+ICsKPiArCXJpbmcgPSBremFsbG9jKHNpemVvZigq cmluZyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFyaW5nKQo+ICsJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ICsKPiArCWtyZWZfaW5pdCgmcmluZy0+cmVmKTsKPiArCj4gKwlyaW5nLT5zaXpl ID0gc2l6ZTsKPiArCS8qIFdvcmthcm91bmQgYW4gZXJyYXR1bSBvbiB0aGUgaTgzMCB3aGljaCBj YXVzZXMgYSBoYW5nIGlmCj4gKwkgKiB0aGUgVEFJTCBwb2ludGVyIHBvaW50cyB0byB3aXRoaW4g dGhlIGxhc3QgMiBjYWNoZWxpbmVzCj4gKwkgKiBvZiB0aGUgYnVmZmVyLgo+ICsJICovCj4gKwly aW5nLT5lZmZlY3RpdmVfc2l6ZSA9IHNpemU7Cj4gKwlpZiAoSVNfSTgzMChpOTE1KSB8fCBJU19J ODQ1RyhpOTE1KSkKPiArCQlyaW5nLT5lZmZlY3RpdmVfc2l6ZSAtPSAyICogQ0FDSEVMSU5FX0JZ VEVTOwo+ICsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+ICsKPiArCXZtYSA9 IGNyZWF0ZV9yaW5nX3ZtYShlbmdpbmUtPmd0LT5nZ3R0LCBzaXplKTsKPiArCWlmIChJU19FUlIo dm1hKSkgewo+ICsJCWtmcmVlKHJpbmcpOwo+ICsJCXJldHVybiBFUlJfQ0FTVCh2bWEpOwo+ICsJ fQo+ICsJcmluZy0+dm1hID0gdm1hOwo+ICsKPiArCXJldHVybiByaW5nOwo+ICt9Cj4gKwo+ICt2 b2lkIGludGVsX3JpbmdfZnJlZShzdHJ1Y3Qga3JlZiAqcmVmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IGNvbnRhaW5lcl9vZihyZWYsIHR5cGVvZigqcmluZyksIHJlZik7Cj4g Kwo+ICsJaTkxNV92bWFfcHV0KHJpbmctPnZtYSk7Cj4gKwo+ICsJa2ZyZWUocmluZyk7Cj4gK30K PiArCj4gK3N0YXRpYyBub2lubGluZSBpbnQKPiArd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVs X3JpbmcgKnJpbmcsCj4gKwkgICAgICAgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKPiArCSAg ICAgICB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnRh cmdldDsKPiArCWxvbmcgdGltZW91dDsKPiArCj4gKwlpZiAoaW50ZWxfcmluZ191cGRhdGVfc3Bh Y2UocmluZykgPj0gYnl0ZXMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJR0VNX0JVR19PTihsaXN0 X2VtcHR5KCZ0bC0+cmVxdWVzdHMpKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAm dGwtPnJlcXVlc3RzLCBsaW5rKSB7Cj4gKwkJaWYgKHRhcmdldC0+cmluZyAhPSByaW5nKQo+ICsJ CQljb250aW51ZTsKPiArCj4gKwkJLyogV291bGQgY29tcGxldGlvbiBvZiB0aGlzIHJlcXVlc3Qg ZnJlZSBlbm91Z2ggc3BhY2U/ICovCj4gKwkJaWYgKGJ5dGVzIDw9IF9faW50ZWxfcmluZ19zcGFj ZSh0YXJnZXQtPnBvc3RmaXgsCj4gKwkJCQkJCXJpbmctPmVtaXQsIHJpbmctPnNpemUpKQo+ICsJ CQlicmVhazsKPiArCX0KPiArCj4gKwlpZiAoR0VNX1dBUk5fT04oJnRhcmdldC0+bGluayA9PSAm dGwtPnJlcXVlc3RzKSkKPiArCQlyZXR1cm4gLUVOT1NQQzsKPiArCj4gKwl0aW1lb3V0ID0gaTkx NV9yZXF1ZXN0X3dhaXQodGFyZ2V0LAo+ICsJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxF LAo+ICsJCQkJICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCWlmICh0aW1lb3V0IDwgMCkK PiArCQlyZXR1cm4gdGltZW91dDsKPiArCj4gKwlpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8odGFy Z2V0KTsKPiArCj4gKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKPiArCUdFTV9CVUdf T04ocmluZy0+c3BhY2UgPCBieXRlcyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArdTMyICpp bnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBpbnQgbnVt X2R3b3JkcykKPiArewo+ICsJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBycS0+cmluZzsKPiAr CWNvbnN0IHVuc2lnbmVkIGludCByZW1haW5fdXNhYmxlID0gcmluZy0+ZWZmZWN0aXZlX3NpemUg LSByaW5nLT5lbWl0Owo+ICsJY29uc3QgdW5zaWduZWQgaW50IGJ5dGVzID0gbnVtX2R3b3JkcyAq IHNpemVvZih1MzIpOwo+ICsJdW5zaWduZWQgaW50IG5lZWRfd3JhcCA9IDA7Cj4gKwl1bnNpZ25l ZCBpbnQgdG90YWxfYnl0ZXM7Cj4gKwl1MzIgKmNzOwo+ICsKPiArCS8qIFBhY2tldHMgbXVzdCBi ZSBxd29yZCBhbGlnbmVkLiAqLwo+ICsJR0VNX0JVR19PTihudW1fZHdvcmRzICYgMSk7Cj4gKwo+ ICsJdG90YWxfYnl0ZXMgPSBieXRlcyArIHJxLT5yZXNlcnZlZF9zcGFjZTsKPiArCUdFTV9CVUdf T04odG90YWxfYnl0ZXMgPiByaW5nLT5lZmZlY3RpdmVfc2l6ZSk7Cj4gKwo+ICsJaWYgKHVubGlr ZWx5KHRvdGFsX2J5dGVzID4gcmVtYWluX3VzYWJsZSkpIHsKPiArCQljb25zdCBpbnQgcmVtYWlu X2FjdHVhbCA9IHJpbmctPnNpemUgLSByaW5nLT5lbWl0Owo+ICsKPiArCQlpZiAoYnl0ZXMgPiBy ZW1haW5fdXNhYmxlKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIE5vdCBlbm91Z2ggc3BhY2UgZm9yIHRo ZSBiYXNpYyByZXF1ZXN0LiBTbyBuZWVkIHRvCj4gKwkJCSAqIGZsdXNoIG91dCB0aGUgcmVtYWlu ZGVyIGFuZCB0aGVuIHdhaXQgZm9yCj4gKwkJCSAqIGJhc2UgKyByZXNlcnZlZC4KPiArCQkJICov Cj4gKwkJCXRvdGFsX2J5dGVzICs9IHJlbWFpbl9hY3R1YWw7Cj4gKwkJCW5lZWRfd3JhcCA9IHJl bWFpbl9hY3R1YWwgfCAxOwo+ICsJCX0gZWxzZSAgewo+ICsJCQkvKgo+ICsJCQkgKiBUaGUgYmFz ZSByZXF1ZXN0IHdpbGwgZml0IGJ1dCB0aGUgcmVzZXJ2ZWQgc3BhY2UKPiArCQkJICogZmFsbHMg b2ZmIHRoZSBlbmQuIFNvIHdlIGRvbid0IG5lZWQgYW4gaW1tZWRpYXRlCj4gKwkJCSAqIHdyYXAg YW5kIG9ubHkgbmVlZCB0byBlZmZlY3RpdmVseSB3YWl0IGZvciB0aGUKPiArCQkJICogcmVzZXJ2 ZWQgc2l6ZSBmcm9tIHRoZSBzdGFydCBvZiByaW5nYnVmZmVyLgo+ICsJCQkgKi8KPiArCQkJdG90 YWxfYnl0ZXMgPSBycS0+cmVzZXJ2ZWRfc3BhY2UgKyByZW1haW5fYWN0dWFsOwo+ICsJCX0KPiAr CX0KPiArCj4gKwlpZiAodW5saWtlbHkodG90YWxfYnl0ZXMgPiByaW5nLT5zcGFjZSkpIHsKPiAr CQlpbnQgcmV0Owo+ICsKPiArCQkvKgo+ICsJCSAqIFNwYWNlIGlzIHJlc2VydmVkIGluIHRoZSBy aW5nYnVmZmVyIGZvciBmaW5hbGlzaW5nIHRoZQo+ICsJCSAqIHJlcXVlc3QsIGFzIHRoYXQgY2Fu bm90IGJlIGFsbG93ZWQgdG8gZmFpbC4gRHVyaW5nIHJlcXVlc3QKPiArCQkgKiBmaW5hbGlzYXRp b24sIHJlc2VydmVkX3NwYWNlIGlzIHNldCB0byAwIHRvIHN0b3AgdGhlCj4gKwkJICogb3ZlcmFs bG9jYXRpb24gYW5kIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlbiB3ZSBuZXZlciBuZWVkCj4g KwkJICogdG8gd2FpdCAod2hpY2ggaGFzIHRoZSByaXNrIG9mIGZhaWxpbmcgd2l0aCBFSU5UUiku Cj4gKwkJICoKPiArCQkgKiBTZWUgYWxzbyBpOTE1X3JlcXVlc3RfYWxsb2MoKSBhbmQgaTkxNV9y ZXF1ZXN0X2FkZCgpLgo+ICsJCSAqLwo+ICsJCUdFTV9CVUdfT04oIXJxLT5yZXNlcnZlZF9zcGFj ZSk7Cj4gKwo+ICsJCXJldCA9IHdhaXRfZm9yX3NwYWNlKHJpbmcsIHJxLT50aW1lbGluZSwgdG90 YWxfYnl0ZXMpOwo+ICsJCWlmICh1bmxpa2VseShyZXQpKQo+ICsJCQlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ICsJfQo+ICsKPiArCWlmICh1bmxpa2VseShuZWVkX3dyYXApKSB7Cj4gKwkJbmVlZF93 cmFwICY9IH4xOwo+ICsJCUdFTV9CVUdfT04obmVlZF93cmFwID4gcmluZy0+c3BhY2UpOwo+ICsJ CUdFTV9CVUdfT04ocmluZy0+ZW1pdCArIG5lZWRfd3JhcCA+IHJpbmctPnNpemUpOwo+ICsJCUdF TV9CVUdfT04oIUlTX0FMSUdORUQobmVlZF93cmFwLCBzaXplb2YodTY0KSkpOwo+ICsKPiArCQkv KiBGaWxsIHRoZSB0YWlsIHdpdGggTUlfTk9PUCAqLwo+ICsJCW1lbXNldDY0KHJpbmctPnZhZGRy ICsgcmluZy0+ZW1pdCwgMCwgbmVlZF93cmFwIC8gc2l6ZW9mKHU2NCkpOwo+ICsJCXJpbmctPnNw YWNlIC09IG5lZWRfd3JhcDsKPiArCQlyaW5nLT5lbWl0ID0gMDsKPiArCX0KPiArCj4gKwlHRU1f QlVHX09OKHJpbmctPmVtaXQgPiByaW5nLT5zaXplIC0gYnl0ZXMpOwo+ICsJR0VNX0JVR19PTihy aW5nLT5zcGFjZSA8IGJ5dGVzKTsKPiArCWNzID0gcmluZy0+dmFkZHIgKyByaW5nLT5lbWl0Owo+ ICsJR0VNX0RFQlVHX0VYRUMobWVtc2V0MzIoY3MsIFBPSVNPTl9JTlVTRSwgYnl0ZXMgLyBzaXpl b2YoKmNzKSkpOwo+ICsJcmluZy0+ZW1pdCArPSBieXRlczsKPiArCXJpbmctPnNwYWNlIC09IGJ5 dGVzOwo+ICsKPiArCXJldHVybiBjczsKPiArfQo+ICsKPiArLyogQWxpZ24gdGhlIHJpbmcgdGFp bCB0byBhIGNhY2hlbGluZSBib3VuZGFyeSAqLwo+ICtpbnQgaW50ZWxfcmluZ19jYWNoZWxpbmVf YWxpZ24oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCWludCBudW1fZHdvcmRzOwo+ ICsJdm9pZCAqY3M7Cj4gKwo+ICsJbnVtX2R3b3JkcyA9IChycS0+cmluZy0+ZW1pdCAmIChDQUNI RUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodTMyKTsKPiArCWlmIChudW1fZHdvcmRzID09IDAp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJbnVtX2R3b3JkcyA9IENBQ0hFTElORV9EV09SRFMgLSBu dW1fZHdvcmRzOwo+ICsJR0VNX0JVR19PTihudW1fZHdvcmRzICYgMSk7Cj4gKwo+ICsJY3MgPSBp bnRlbF9yaW5nX2JlZ2luKHJxLCBudW1fZHdvcmRzKTsKPiArCWlmIChJU19FUlIoY3MpKQo+ICsJ CXJldHVybiBQVFJfRVJSKGNzKTsKPiArCj4gKwltZW1zZXQ2NChjcywgKHU2NClNSV9OT09QIDw8 IDMyIHwgTUlfTk9PUCwgbnVtX2R3b3JkcyAvIDIpOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJx LCBjcyArIG51bV9kd29yZHMpOwo+ICsKPiArCUdFTV9CVUdfT04ocnEtPnJpbmctPmVtaXQgJiAo Q0FDSEVMSU5FX0JZVEVTIC0gMSkpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3JpbmcuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMDAwLi5lYTI4MzlkOWUwNDQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZy5oCj4gQEAgLTAsMCArMSwxMzEgQEAKPiArLyoKPiAr ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkg MjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgSU5URUxfUklOR19I Cj4gKyNkZWZpbmUgSU5URUxfUklOR19ICj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9nZW0uaCIgLyog R0VNX0JVR19PTiAqLwo+ICsjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gKyNpbmNsdWRlICJp bnRlbF9yaW5nX3R5cGVzLmgiCj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwo+ICsKPiAr c3RydWN0IGludGVsX3JpbmcgKgo+ICtpbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSk7Cj4gKwo+ICt1MzIgKmludGVsX3Jpbmdf YmVnaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGludCBudW1fZHdvcmRzKTsK PiAraW50IGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KTsKPiArCj4gK3Vuc2lnbmVkIGludCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyk7Cj4gKwo+ICtpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3Jp bmcgKnJpbmcpOwo+ICt2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0IGludGVsX3JpbmcgKnJp bmcpOwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXQoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIHUz MiB0YWlsKTsKPiArCj4gK3ZvaWQgaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBrcmVmICpyZWYpOwo+ ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfcmluZyAqaW50ZWxfcmluZ19nZXQoc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcpCj4gK3sKPiArCWtyZWZfZ2V0KCZyaW5nLT5yZWYpOwo+ICsJ cmV0dXJuIHJpbmc7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX3B1 dChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiArewo+ICsJa3JlZl9wdXQoJnJpbmctPnJlZiwg aW50ZWxfcmluZ19mcmVlKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGludGVsX3Jp bmdfYWR2YW5jZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykKPiArewo+ICsJLyog RHVtbXkgZnVuY3Rpb24uCj4gKwkgKgo+ICsJICogVGhpcyBzZXJ2ZXMgYXMgYSBwbGFjZWhvbGRl ciBpbiB0aGUgY29kZSBzbyB0aGF0IHRoZSByZWFkZXIKPiArCSAqIGNhbiBjb21wYXJlIGFnYWlu c3QgdGhlIHByZWNlZGluZyBpbnRlbF9yaW5nX2JlZ2luKCkgYW5kCj4gKwkgKiBjaGVjayB0aGF0 IHRoZSBudW1iZXIgb2YgZHdvcmRzIGVtaXR0ZWQgbWF0Y2hlcyB0aGUgc3BhY2UKPiArCSAqIHJl c2VydmVkIGZvciB0aGUgY29tbWFuZCBwYWNrZXQgKGkuZS4gdGhlIHZhbHVlIHBhc3NlZCB0bwo+ ICsJICogaW50ZWxfcmluZ19iZWdpbigpKS4KPiArCSAqLwo+ICsJR0VNX0JVR19PTigocnEtPnJp bmctPnZhZGRyICsgcnEtPnJpbmctPmVtaXQpICE9IGNzKTsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB1MzIgaW50ZWxfcmluZ193cmFwKGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1 MzIgcG9zKQo+ICt7Cj4gKwlyZXR1cm4gcG9zICYgKHJpbmctPnNpemUgLSAxKTsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSBib29sCj4gK2ludGVsX3Jpbmdfb2Zmc2V0X3ZhbGlkKGNvbnN0IHN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nLAo+ICsJCQl1bnNpZ25lZCBpbnQgcG9zKQo+ICt7Cj4gKwlp ZiAocG9zICYgLXJpbmctPnNpemUpIC8qIG11c3QgYmUgc3RyaWN0bHkgd2l0aGluIHRoZSByaW5n ICovCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmICghSVNfQUxJR05FRChwb3MsIDgpKSAv KiBtdXN0IGJlIHF3b3JkIGFsaWduZWQgKi8KPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0 KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB2b2lkICphZGRyKQo+ICt7Cj4gKwkvKiBE b24ndCB3cml0ZSByaW5nLT5zaXplIChlcXVpdmFsZW50IHRvIDApIGFzIHRoYXQgaGFuZ3Mgc29t ZSBHUFVzLiAqLwo+ICsJdTMyIG9mZnNldCA9IGFkZHIgLSBycS0+cmluZy0+dmFkZHI7Cj4gKwlH RU1fQlVHX09OKG9mZnNldCA+IHJxLT5yaW5nLT5zaXplKTsKPiArCXJldHVybiBpbnRlbF9yaW5n X3dyYXAocnEtPnJpbmcsIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ ICthc3NlcnRfcmluZ190YWlsX3ZhbGlkKGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1 bnNpZ25lZCBpbnQgdGFpbCkKPiArewo+ICsJR0VNX0JVR19PTighaW50ZWxfcmluZ19vZmZzZXRf dmFsaWQocmluZywgdGFpbCkpOwo+ICsKPiArCS8qCj4gKwkgKiAiUmluZyBCdWZmZXIgVXNlIgo+ ICsJICoJR2VuMiBCU3BlYyAiMS4gUHJvZ3JhbW1pbmcgRW52aXJvbm1lbnQiIC8gMS40LjQuNgo+ ICsJICoJR2VuMyBCU3BlYyAiMWMgTWVtb3J5IEludGVyZmFjZSBGdW5jdGlvbnMiIC8gMi4zLjQu NQo+ICsJICoJR2VuNCsgQlNwZWMgIjFjIE1lbW9yeSBJbnRlcmZhY2UgYW5kIENvbW1hbmQgU3Ry ZWFtIiAvIDUuMy40LjUKPiArCSAqICJJZiB0aGUgUmluZyBCdWZmZXIgSGVhZCBQb2ludGVyIGFu ZCB0aGUgVGFpbCBQb2ludGVyIGFyZSBvbiB0aGUKPiArCSAqIHNhbWUgY2FjaGVsaW5lLCB0aGUg SGVhZCBQb2ludGVyIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgVGFpbAo+ICsJICogUG9p bnRlci4iCj4gKwkgKgo+ICsJICogV2UgdXNlIHJpbmctPmhlYWQgYXMgdGhlIGxhc3Qga25vd24g bG9jYXRpb24gb2YgdGhlIGFjdHVhbCBSSU5HX0hFQUQsCj4gKwkgKiBpdCBtYXkgaGF2ZSBhZHZh bmNlZCBidXQgaW4gdGhlIHdvcnN0IGNhc2UgaXQgaXMgZXF1YWxseSB0aGUgc2FtZQo+ICsJICog YXMgcmluZy0+aGVhZCBhbmQgc28gd2Ugc2hvdWxkIG5ldmVyIHByb2dyYW0gUklOR19UQUlMIHRv IGFkdmFuY2UKPiArCSAqIGludG8gdGhlIHNhbWUgY2FjaGVsaW5lIGFzIHJpbmctPmhlYWQuCj4g KwkgKi8KPiArI2RlZmluZSBjYWNoZWxpbmUoYSkgcm91bmRfZG93bihhLCBDQUNIRUxJTkVfQllU RVMpCj4gKwlHRU1fQlVHX09OKGNhY2hlbGluZSh0YWlsKSA9PSBjYWNoZWxpbmUocmluZy0+aGVh ZCkgJiYKPiArCQkgICB0YWlsIDwgcmluZy0+aGVhZCk7Cj4gKyN1bmRlZiBjYWNoZWxpbmUKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiAraW50ZWxfcmluZ19zZXRfdGFp bChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdW5zaWduZWQgaW50IHRhaWwpCj4gK3sKPiArCS8q IFdoaWxzdCB3cml0ZXMgdG8gdGhlIHRhaWwgYXJlIHN0cmljdGx5IG9yZGVyLCB0aGVyZSBpcyBu bwo+ICsJICogc2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHJlYWRlcnMgYW5kIHRoZSB3cml0ZXJzLiBU aGUgdGFpbCBtYXkgYmUKPiArCSAqIHJlYWQgYnkgaTkxNV9yZXF1ZXN0X3JldGlyZSgpIGp1c3Qg YXMgaXQgaXMgYmVpbmcgdXBkYXRlZAo+ICsJICogYnkgZXhlY2xpc3RzLCBhcyBhbHRob3VnaCB0 aGUgYnJlYWRjcnVtYiBpcyBjb21wbGV0ZSwgdGhlIGNvbnRleHQKPiArCSAqIHN3aXRjaCBoYXNu J3QgYmVlbiBzZWVuLgo+ICsJICovCj4gKwlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJpbmcsIHRh aWwpOwo+ICsJcmluZy0+dGFpbCA9IHRhaWw7Cj4gKwlyZXR1cm4gdGFpbDsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiArX19pbnRlbF9yaW5nX3NwYWNlKHVuc2lnbmVk IGludCBoZWFkLCB1bnNpZ25lZCBpbnQgdGFpbCwgdW5zaWduZWQgaW50IHNpemUpCj4gK3sKPiAr CS8qCj4gKwkgKiAiSWYgdGhlIFJpbmcgQnVmZmVyIEhlYWQgUG9pbnRlciBhbmQgdGhlIFRhaWwg UG9pbnRlciBhcmUgb24gdGhlCj4gKwkgKiBzYW1lIGNhY2hlbGluZSwgdGhlIEhlYWQgUG9pbnRl ciBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIFRhaWwKPiArCSAqIFBvaW50ZXIuIgo+ICsJ ICovCj4gKwlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8yKHNpemUpKTsKPiArCXJldHVybiAoaGVh ZCAtIHRhaWwgLSBDQUNIRUxJTkVfQllURVMpICYgKHNpemUgLSAxKTsKPiArfQo+ICsKPiArI2Vu ZGlmIC8qIElOVEVMX1JJTkdfSCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGlt ZWxpbmUuYwo+IGluZGV4IDBmOTU5Njk0MzAzYy4uMTRhZDEwYWNkNTQ4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCj4gQEAgLTQsMTMgKzQsMTMgQEAKPiAg ICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgKi8KPiAgCj4g LSNpbmNsdWRlICJndC9pbnRlbF9ndF90eXBlcy5oIgo+IC0KPiAgI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9hY3RpdmUuaCIKPiAgI2luY2x1ZGUgImk5MTVfc3lu Y21hcC5oIgo+IC0jaW5jbHVkZSAiZ3QvaW50ZWxfdGltZWxpbmUuaCIKPiArI2luY2x1ZGUgImlu dGVsX2d0LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gKyNpbmNsdWRlICJpbnRlbF90 aW1lbGluZS5oIgo+ICAKPiAgI2RlZmluZSBwdHJfc2V0X2JpdChwdHIsIGJpdCkgKCh0eXBlb2Yo cHRyKSkoKHVuc2lnbmVkIGxvbmcpKHB0cikgfCBCSVQoYml0KSkpCj4gICNkZWZpbmUgcHRyX3Rl c3RfYml0KHB0ciwgYml0KSAoKHVuc2lnbmVkIGxvbmcpKHB0cikgJiBCSVQoYml0KSkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCBhZjhhODE4 MzE1NGEuLjdjYjZkYWI0Mzk5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC03LDYgKzcsNyBAQAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKPiAgI2luY2x1ZGUgImludGVsX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImludGVsX2d0Lmgi Cj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5k cy5oIgo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21v Y2tfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCj4gaW5k ZXggMTIzZGIyYzNmOTU2Li44M2Y1NDlkMjAzYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L21vY2tfZW5naW5lLmMKPiBAQCAtMjMsNiArMjMsNyBAQAo+ICAgKi8KPiAgCj4gICNpbmNsdWRl ICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfcmluZy5oIgo+ ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpbnRlbF9jb250ZXh0Lmgi Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5l LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCj4gaW5kZXgg ZGFjODZmNjk5YTRjLi5mMDRhNTlmZTVkMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKPiBAQCAtOSw2ICs5LDcgQEAKPiAgI2luY2x1ZGUgImlu dGVsX2VuZ2luZV9wbS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZ3QuaCIKPiAgI2luY2x1ZGUgImlu dGVsX2d0X3JlcXVlc3RzLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCj4gIAo+ICAjaW5j bHVkZSAiLi4vc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCj4gICNpbmNsdWRlICIuLi9pOTE1X3Nl bGZ0ZXN0LmgiCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf c3VibWlzc2lvbi5jCj4gaW5kZXggMDA5ZTU0YTM3NjRmLi4xYjE2OTFhYWVkMjggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMK PiBAQCAtNiwxMiArNiwxMyBAQAo+ICAjaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KPiAgCj4g ICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+IC0KPiAgI2luY2x1ZGUgImd0L2lu dGVsX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9wbS5oIgo+ICAjaW5j bHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4gICNp bmNsdWRlICJndC9pbnRlbF9scmNfcmVnLmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgi Cj4gKwo+ICAjaW5jbHVkZSAiaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKPiAgCj4gICNpbmNsdWRl ICJpOTE1X2Rydi5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21k X3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwo+IGluZGV4 IGU3NTNiMWU3MDZlMi4uNmEzYWM4Y2RlOTVkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Y21kX3BhcnNlci5jCj4gQEAgLTM1LDcgKzM1LDkgQEAKPiAgICovCj4gIAo+ICAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+ICsKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJn dC9pbnRlbF9yaW5nLmgiCj4gICNpbmNsdWRlICJndnQuaCIKPiAgI2luY2x1ZGUgImk5MTVfcHZp bmZvLmgiCj4gICNpbmNsdWRlICJ0cmFjZS5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1p b19jb250ZXh0LmMKPiBpbmRleCA0MjA4ZTQwNDQ1YjEuLmFhZjE1OTE2ZDI5YSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmMKPiBAQCAtMzUsNiArMzUsNyBAQAo+ ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9jb250ZXh0 LmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgiCj4gICNpbmNsdWRlICJndnQuaCIKPiAg I2luY2x1ZGUgInRyYWNlLmgiCj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMK PiBpbmRleCBhNWI5NDJlZTNjZWIuLjM3NzgxMWY4ODUzZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMKPiBAQCAtMzgsNiArMzgsNyBAQAo+ICAjaW5jbHVkZSAiZ2VtL2k5 MTVfZ2VtX2NvbnRleHQuaCIKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgo+ICAjaW5j bHVkZSAiZ3QvaW50ZWxfY29udGV4dC5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfcmluZy5oIgo+ ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJndnQuaCIKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlLmMKPiBpbmRleCA0YzE5MGE1NDhiYTcuLjNlMzQ5NTgzOGE5MyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+IEBAIC04LDYgKzgsNyBAQAo+ICAK PiAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCIKPiAgI2luY2x1ZGUgImd0 L2ludGVsX2VuZ2luZV9wbS5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfcmluZy5oIgo+ICAKPiAg I2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggMzEzMGIwYzdlZDgzLi4zOGQzZGUyZGZhYTYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0yMDAsNiArMjAwLDcgQEAKPiAgI2lu Y2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9ndC5o Igo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxf cmluZy5oIgo+ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X3Bl cmYuaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDQ1NzVmMzY4NDU1 ZC4uOTMyYzVjZjE5MGI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBA QCAtMzEsNiArMzEsNyBAQAo+ICAKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0Lmgi Cj4gICNpbmNsdWRlICJndC9pbnRlbF9jb250ZXh0LmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9y aW5nLmgiCj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9hY3RpdmUuaCIKPiAgI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCj4gLS0gCj4gMi4yNC4wLnJjMAo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA==