From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 17/21] drm/i915: Drop struct_mutex from around i915_retire_requests() Date: Tue, 24 Sep 2019 16:25:29 +0100 Message-ID: <86c1cd64-e5e5-4065-7489-f8a861981061@linux.intel.com> References: <20190902040303.14195-1-chris@chris-wilson.co.uk> <20190902040303.14195-17-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 32A9489332 for ; Tue, 24 Sep 2019 15:25:34 +0000 (UTC) In-Reply-To: <20190902040303.14195-17-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDAyLzA5LzIwMTkgMDU6MDIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXZSBkb24ndCBuZWVk IHRvIGhvbGQgc3RydWN0X211dGV4IG5vdyBmb3IgcmV0aXJpbmcgcmVxdWVzdHMsIHNvIGRyb3Ag aXQKPiBmcm9tIGk5MTVfcmV0aXJlX3JlcXVlc3RzKCkgYW5kIGk5MTVfZ2VtX3dhaXRfZm9yX2lk bGUoKSwgZmluYWxseQo+IHJlbW92aW5nIEk5MTVfV0FJVF9MT0NLRUQgZm9yIGdvb2QuCj4gCj4g U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4g LS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGllbnRfYmx0LmMgICAgfCAg IDcgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMgICB8 ICAyMCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jICAgICAg ICB8ICA0NSArKystLS0tCj4gICAuLi4vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVy ZW5jeS5jICAgfCAgNDAgKysrLS0tCj4gICAuLi4vZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1 X2dlbV9jb250ZXh0LmMgfCAgIDQgKy0KPiAgIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5 MTVfZ2VtX21tYW4uYyAgICB8ICAgNiArLQo+ICAgLi4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1 X2dlbV9vYmplY3RfYmx0LmMgIHwgICA0IC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2NvbnRleHQuYyAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfaGFuZ2NoZWNrLmMgIHwgIDg5ICsrKy0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jICAgICAgICB8ICAyMSArKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgICB8ICA5MSArKysrKystLS0tLS0t Cj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgICAgfCAgIDYg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICA0 MiArKy0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAg ICB8ICAxOSArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAg ICAgICB8ICAgNyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0 aXZlLmMgIHwgICA4ICstCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9l dmljdC5jICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9ndHQuYyB8ICAgNCAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9yZXF1ZXN0LmMgfCAxMjUgKysrKystLS0tLS0tLS0tLS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMgICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jICAgICB8ICAgNCAtCj4gICAuLi4vZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jICAgfCAgMzAgKystLS0KPiAgIC4uLi9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmggICB8ICAgMiArLQo+ICAgLi4uL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jICAgIHwgICA5ICstCj4gICAuLi4v Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyAgfCAgIDQgLQo+ICAgMjUg ZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKyksIDQxMCBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsaWVudF9ibHQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGllbnRfYmx0LmMKPiBpbmRl eCBhY2U1MGJiOWVlMWYuLmNmMjA1N2U1MTVhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY2xpZW50X2JsdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NsaWVudF9ibHQuYwo+IEBAIC0xNjYsNyArMTY2LDYgQEAgc3Rh dGljIGludCBtb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCj4gICBzdGF0aWMgdm9pZCBjbGVhcl9wYWdlc193b3JrZXIoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQo+ICAgewo+ICAgCXN0cnVjdCBjbGVhcl9wYWdlc193b3JrICp3ID0g Y29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqdyksIHdvcmspOwo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSB3LT5jZS0+ZW5naW5lLT5pOTE1Owo+ICAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSB3LT5zbGVldmUtPnZtYS0+b2JqOwo+ICAgCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hID0gdy0+c2xlZXZlLT52bWE7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7 Cj4gQEAgLTE4NCwxMSArMTgzLDkgQEAgc3RhdGljIHZvaWQgY2xlYXJfcGFnZXNfd29ya2VyKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAlvYmotPnJlYWRfZG9tYWlucyA9IEk5MTVfR0VN X0dQVV9ET01BSU5TOwo+ICAgCW9iai0+d3JpdGVfZG9tYWluID0gMDsKPiAgIAo+IC0JLyogWFhY OiB3ZSBuZWVkIHRvIGtpbGwgdGhpcyAqLwo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgUElOX1VTRVIpOwo+ ICAgCWlmICh1bmxpa2VseShlcnIpKQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQlnb3RvIG91 dF9zaWduYWw7Cj4gICAKPiAgIAliYXRjaCA9IGludGVsX2VtaXRfdm1hX2ZpbGxfYmx0KHctPmNl LCB2bWEsIHctPnZhbHVlKTsKPiAgIAlpZiAoSVNfRVJSKGJhdGNoKSkgewo+IEBAIC0yNDAsOCAr MjM3LDYgQEAgc3RhdGljIHZvaWQgY2xlYXJfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiAgIAlpbnRlbF9lbWl0X3ZtYV9yZWxlYXNlKHctPmNlLCBiYXRjaCk7Cj4gICBv dXRfdW5waW46Cj4gICAJaTkxNV92bWFfdW5waW4odm1hKTsKPiAtb3V0X3VubG9jazoKPiAtCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICBvdXRfc2lnbmFsOgo+ICAg CWlmICh1bmxpa2VseShlcnIpKSB7Cj4gICAJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnctPmRtYSwg ZXJyKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiBp bmRleCBiOGRkY2Y3ODk5YTEuLjM0NTJmMTQ5NzA5NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0xMTYxLDggKzExNjEsNyBAQCBnZW44 X21vZGlmeV9ycGNzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVsX3NzZXUg c3NldSkKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IC1fX2ludGVsX2NvbnRleHRfcmVjb25m aWd1cmVfc3NldShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gLQkJCQkgc3RydWN0IGludGVs X3NzZXUgc3NldSkKPiAraW50ZWxfY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVsX3NzZXUgc3NldSkKPiAgIHsKPiAgIAlpbnQgcmV0 Owo+ICAgCj4gQEAgLTExODUsMjMgKzExODQsNiBAQCBfX2ludGVsX2NvbnRleHRfcmVjb25maWd1 cmVfc3NldShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gICAJcmV0dXJuIHJldDsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgaW50Cj4gLWludGVsX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCj4gLXsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY2UtPmVuZ2luZS0+aTkxNTsKPiAtCWludCBy ZXQ7Cj4gLQo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlyZXQgPSBf X2ludGVsX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjZSwgc3NldSk7Cj4gLQo+IC0JbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQlyZXR1cm4gcmV0Owo+IC19 Cj4gLQo+ICAgc3RhdGljIGludAo+ICAgdXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCSAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X3BhcmFtX3NzZXUgKnVzZXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X3BtLmMKPiBpbmRleCA2ZTRjYzE3N2NjN2EuLmZlYzBiNDEwZDFkOSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCj4gQEAgLTQ4LDExICs0OCw3IEBAIHN0YXRpYyB2 b2lkIHJldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KPiAgIAkJY29udGFpbmVyX29mKHdvcmssIHR5 cGVvZigqaTkxNSksIGdlbS5yZXRpcmVfd29yay53b3JrKTsKPiAgIAo+IC0JLyogQ29tZSBiYWNr IGxhdGVyIGlmIHRoZSBkZXZpY2UgaXMgYnVzeS4uLiAqLwo+IC0JaWYgKG11dGV4X3RyeWxvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpKSB7Cj4gLQkJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkx NSk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCX0KPiAr CWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+ICAgCj4gICAJcXVldWVfZGVsYXllZF93b3Jr KGk5MTUtPndxLAo+ICAgCQkJICAgJmk5MTUtPmdlbS5yZXRpcmVfd29yaywKPiBAQCAtODYsMjYg KzgyLDIzIEBAIHN0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKHN0cnVj dCBpbnRlbF9ndCAqZ3QpCj4gICB7Cj4gICAJYm9vbCByZXN1bHQgPSAhaW50ZWxfZ3RfaXNfd2Vk Z2VkKGd0KTsKPiAgIAo+IC0JZG8gewo+IC0JCWlmIChpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGd0 LT5pOTE1LAo+IC0JCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQgfAo+IC0JCQkJCSAgIEk5MTVfV0FJ VF9GT1JfSURMRV9CT09TVCwKPiAtCQkJCQkgICBJOTE1X0dFTV9JRExFX1RJTUVPVVQpID09IC1F VElNRSkgewo+IC0JCQkvKiBYWFggaGlkZSB3YXJuaW5nIGZyb20gZ2VtX2VpbyAqLwo+IC0JCQlp ZiAoaTkxNV9tb2RwYXJhbXMucmVzZXQpIHsKPiAtCQkJCWRldl9lcnIoZ3QtPmk5MTUtPmRybS5k ZXYsCj4gLQkJCQkJIkZhaWxlZCB0byBpZGxlIGVuZ2luZXMsIGRlY2xhcmluZyB3ZWRnZWQhXG4i KTsKPiAtCQkJCUdFTV9UUkFDRV9EVU1QKCk7Cj4gLQkJCX0KPiAtCj4gLQkJCS8qCj4gLQkJCSAq IEZvcmNpYmx5IGNhbmNlbCBvdXRzdGFuZGluZyB3b3JrIGFuZCBsZWF2ZQo+IC0JCQkgKiB0aGUg Z3B1IHF1aWV0Lgo+IC0JCQkgKi8KPiAtCQkJaW50ZWxfZ3Rfc2V0X3dlZGdlZChndCk7Cj4gLQkJ CXJlc3VsdCA9IGZhbHNlOwo+ICsJaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZ3QtPmk5MTUs Cj4gKwkJCQkgICBJOTE1X1dBSVRfRk9SX0lETEVfQk9PU1QsCj4gKwkJCQkgICBJOTE1X0dFTV9J RExFX1RJTUVPVVQpID09IC1FVElNRSkgewo+ICsJCS8qIFhYWCBoaWRlIHdhcm5pbmcgZnJvbSBn ZW1fZWlvICovCj4gKwkJaWYgKGk5MTVfbW9kcGFyYW1zLnJlc2V0KSB7Cj4gKwkJCWRldl9lcnIo Z3QtPmk5MTUtPmRybS5kZXYsCj4gKwkJCQkiRmFpbGVkIHRvIGlkbGUgZW5naW5lcywgZGVjbGFy aW5nIHdlZGdlZCFcbiIpOwo+ICsJCQlHRU1fVFJBQ0VfRFVNUCgpOwo+ICAgCQl9Cj4gLQl9IHdo aWxlIChpOTE1X3JldGlyZV9yZXF1ZXN0cyhndC0+aTkxNSkgJiYgcmVzdWx0KTsKPiArCj4gKwkJ LyoKPiArCQkgKiBGb3JjaWJseSBjYW5jZWwgb3V0c3RhbmRpbmcgd29yayBhbmQgbGVhdmUKPiAr CQkgKiB0aGUgZ3B1IHF1aWV0Lgo+ICsJCSAqLwo+ICsJCWludGVsX2d0X3NldF93ZWRnZWQoZ3Qp Owo+ICsJCXJlc3VsdCA9IGZhbHNlOwo+ICsJfQo+ICAgCj4gICAJaWYgKGludGVsX2d0X3BtX3dh aXRfZm9yX2lkbGUoZ3QpKQo+ICAgCQlyZXN1bHQgPSBmYWxzZTsKPiBAQCAtMTI1LDggKzExOCw2 IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgIAlpbnRlbF93YWtlcmVmX2F1dG8oJmk5MTUtPmdndHQudXNlcmZhdWx0X3dha2VyZWYsIDAp Owo+ICAgCWZsdXNoX3dvcmtxdWV1ZShpOTE1LT53cSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAkvKgo+ICAgCSAqIFdlIGhhdmUgdG8gZmx1 c2ggYWxsIHRoZSBleGVjdXRpbmcgY29udGV4dHMgdG8gbWFpbiBtZW1vcnkgc28KPiAgIAkgKiB0 aGF0IHRoZXkgY2FuIHNhdmVkIGluIHRoZSBoaWJlcm5hdGlvbiBpbWFnZS4gVG8gZW5zdXJlIHRo ZSBsYXN0Cj4gQEAgLTEzOCw4ICsxMjksNiBAQCB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJICovCj4gICAJc3dpdGNoX3RvX2tlcm5lbF9j b250ZXh0X3N5bmMoJmk5MTUtPmd0KTsKPiAgIAo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCj4gICAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5n dC5oYW5nY2hlY2sud29yayk7Cj4gICAKPiAgIAlpOTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3Rz KGk5MTUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+IGluZGV4IDBmZjdhODlhYWRjYS4uNTQ5ODEwZjcwYWVi IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29oZXJlbmN5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gQEAgLTcsNiArNyw3IEBACj4gICAjaW5jbHVkZSA8bGlu dXgvcHJpbWVfbnVtYmVycy5oPgo+ICAgCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAr I2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X3NlbGZ0 ZXN0LmgiCj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCj4gQEAgLTc4LDcg Kzc5LDcgQEAgc3RhdGljIGludCBndHRfc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJdTMyIF9faW9tZW0gKm1h cDsKPiAtCWludCBlcnI7Cj4gKwlpbnQgZXJyID0gMDsKPiAgIAo+ICAgCWk5MTVfZ2VtX29iamVj dF9sb2NrKG9iaik7Cj4gICAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KG9iaiwgdHJ1ZSk7Cj4gQEAgLTkwLDE1ICs5MSwyMSBAQCBzdGF0aWMgaW50IGd0dF9zZXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlpZiAoSVNfRVJSKHZtYSkpCj4gICAJ CXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gICAKPiArCWludGVsX2d0X3BtX2dldCh2bWEtPnZtLT5n dCk7Cj4gKwo+ICAgCW1hcCA9IGk5MTVfdm1hX3Bpbl9pb21hcCh2bWEpOwo+ICAgCWk5MTVfdm1h X3VucGluKHZtYSk7Cj4gLQlpZiAoSVNfRVJSKG1hcCkpCj4gLQkJcmV0dXJuIFBUUl9FUlIobWFw KTsKPiArCWlmIChJU19FUlIobWFwKSkgewo+ICsJCWVyciA9IFBUUl9FUlIobWFwKTsKPiArCQln b3RvIG91dF9ycG07Cj4gKwl9Cj4gICAKPiAgIAlpb3dyaXRlMzIodiwgJm1hcFtvZmZzZXQgLyBz aXplb2YoKm1hcCldKTsKPiAgIAlpOTE1X3ZtYV91bnBpbl9pb21hcCh2bWEpOwo+ICAgCj4gLQly ZXR1cm4gMDsKPiArb3V0X3JwbToKPiArCWludGVsX2d0X3BtX3B1dCh2bWEtPnZtLT5ndCk7Cj4g KwlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGd0dF9nZXQoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiBAQCAtMTA3LDcgKzExNCw3IEBAIHN0YXRpYyBpbnQg Z3R0X2dldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgewo+ICAgCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+ICAgCXUzMiBfX2lvbWVtICptYXA7Cj4gLQlpbnQgZXJyOwo+ICsJ aW50IGVyciA9IDA7Cj4gICAKPiAgIAlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwo+ICAgCWVy ciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKPiBAQCAt MTE5LDE1ICsxMjYsMjEgQEAgc3RhdGljIGludCBndHRfZ2V0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gICAJaWYgKElTX0VSUih2bWEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUih2 bWEpOwo+ICAgCj4gKwlpbnRlbF9ndF9wbV9nZXQodm1hLT52bS0+Z3QpOwo+ICsKPiAgIAltYXAg PSBpOTE1X3ZtYV9waW5faW9tYXAodm1hKTsKPiAgIAlpOTE1X3ZtYV91bnBpbih2bWEpOwo+IC0J aWYgKElTX0VSUihtYXApKQo+IC0JCXJldHVybiBQVFJfRVJSKG1hcCk7Cj4gKwlpZiAoSVNfRVJS KG1hcCkpIHsKPiArCQllcnIgPSBQVFJfRVJSKG1hcCk7Cj4gKwkJZ290byBvdXRfcnBtOwo+ICsJ fQo+ICAgCj4gICAJKnYgPSBpb3JlYWQzMigmbWFwW29mZnNldCAvIHNpemVvZigqbWFwKV0pOwo+ ICAgCWk5MTVfdm1hX3VucGluX2lvbWFwKHZtYSk7Cj4gICAKPiAtCXJldHVybiAwOwo+ICtvdXRf cnBtOgo+ICsJaW50ZWxfZ3RfcG1fcHV0KHZtYS0+dm0tPmd0KTsKPiArCXJldHVybiBlcnI7Cj4g ICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgd2Nfc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4gQEAgLTI4MCw3ICsyOTMsNiBAQCBzdGF0aWMgaW50IGlndF9nZW1fY29oZXJlbmN5 KHZvaWQgKmFyZykKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAg IAljb25zdCBzdHJ1Y3QgaWd0X2NvaGVyZW5jeV9tb2RlICpyZWFkLCAqd3JpdGUsICpvdmVyOwo+ ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiAgIAl1bnNpZ25lZCBsb25nIGNvdW50LCBuOwo+ICAgCXUzMiAqb2Zmc2V0cywg KnZhbHVlczsKPiAgIAlpbnQgZXJyID0gMDsKPiBAQCAtMjk5LDggKzMxMSw2IEBAIHN0YXRpYyBp bnQgaWd0X2dlbV9jb2hlcmVuY3kodm9pZCAqYXJnKQo+ICAgCj4gICAJdmFsdWVzID0gb2Zmc2V0 cyArIG5jYWNoZWxpbmVzOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9w bSk7Cj4gICAJZm9yIChvdmVyID0gaWd0X2NvaGVyZW5jeV9tb2RlOyBvdmVyLT5uYW1lOyBvdmVy KyspIHsKPiAgIAkJaWYgKCFvdmVyLT5zZXQpCj4gICAJCQljb250aW51ZTsKPiBAQCAtMzI2LDcg KzMzNiw3IEBAIHN0YXRpYyBpbnQgaWd0X2dlbV9jb2hlcmVuY3kodm9pZCAqYXJnKQo+ICAgCQkJ CQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7 Cj4gICAJCQkJCWlmIChJU19FUlIob2JqKSkgewo+ICAgCQkJCQkJZXJyID0gUFRSX0VSUihvYmop Owo+IC0JCQkJCQlnb3RvIHVubG9jazsKPiArCQkJCQkJZ290byBmcmVlOwo+ICAgCQkJCQl9Cj4g ICAKPiAgIAkJCQkJaTkxNV9yYW5kb21fcmVvcmRlcihvZmZzZXRzLCBuY2FjaGVsaW5lcywgJnBy bmcpOwo+IEBAIC0zNzcsMTUgKzM4NywxMyBAQCBzdGF0aWMgaW50IGlndF9nZW1fY29oZXJlbmN5 KHZvaWQgKmFyZykKPiAgIAkJCX0KPiAgIAkJfQo+ICAgCX0KPiAtdW5sb2NrOgo+IC0JaW50ZWxf cnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArZnJlZToKPiAgIAlrZnJlZShvZmZzZXRz KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgCj4gICBwdXRfb2JqZWN0Ogo+ICAgCWk5MTVfZ2VtX29i amVjdF9wdXQob2JqKTsKPiAtCWdvdG8gdW5sb2NrOwo+ICsJZ290byBmcmVlOwo+ICAgfQo+ICAg Cj4gICBpbnQgaTkxNV9nZW1fY29oZXJlbmN5X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v c2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9z ZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggYWE2N2MwMmJhOThjLi5iODdlMzVh NzEzYjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRl c3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC05NDksNyArOTQ5LDcgQEAgX19zc2V1X3Rlc3Qo Y29uc3QgY2hhciAqbmFtZSwKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4g LQlyZXQgPSBfX2ludGVsX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjZSwgc3NldSk7Cj4gKwly ZXQgPSBpbnRlbF9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoY2UsIHNzZXUpOwo+ICAgCWlmIChy ZXQpCj4gICAJCWdvdG8gb3V0X3NwaW47Cj4gICAKPiBAQCAtMTA1Myw3ICsxMDUzLDcgQEAgX19p Z3RfY3R4X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCWdvdG8gb3V0 X2ZhaWw7Cj4gICAKPiAgIG91dF9mYWlsOgo+IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5 MTVfV0FJVF9MT0NLRUQpKQo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAgCQlyZXQg PSAtRUlPOwo+ICAgCj4gICAJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKPiBpbmRleCA5 YzIxN2RmZTk2YTkuLjM5YzAxYmM0ZWI1MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4gQEAgLTM5MywxMiArMzkzLDgg QEAgc3RhdGljIHZvaWQgZGlzYWJsZV9yZXRpcmVfd29ya2VyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICAgCj4gICBzdGF0aWMgdm9pZCByZXN0b3JlX3JldGlyZV93b3JrZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gKwlpZ3RfZmx1c2hfdGVzdChpOTE1 KTsKPiAgIAlpbnRlbF9ndF9wbV9wdXQoJmk5MTUtPmd0KTsKPiAtCj4gLQltdXRleF9sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJ VF9MT0NLRUQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAt Cj4gICAJaTkxNV9nZW1fZHJpdmVyX3JlZ2lzdGVyX19zaHJpbmtlcihpOTE1KTsKPiAgIH0KPiAg IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVf Z2VtX29iamVjdF9ibHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkx NV9nZW1fb2JqZWN0X2JsdC5jCj4gaW5kZXggYzIxZDc0N2U3ZDA1Li45ZWM1NWIzYTM4MTUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9v YmplY3RfYmx0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5 MTVfZ2VtX29iamVjdF9ibHQuYwo+IEBAIC02NSw5ICs2NSw3IEBAIHN0YXRpYyBpbnQgaWd0X2Zp bGxfYmx0KHZvaWQgKmFyZykKPiAgIAkJaWYgKCEob2JqLT5jYWNoZV9jb2hlcmVudCAmIEk5MTVf Qk9fQ0FDSEVfQ09IRVJFTlRfRk9SX1dSSVRFKSkKPiAgIAkJCW9iai0+Y2FjaGVfZGlydHkgPSB0 cnVlOwo+ICAgCj4gLQkJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJ CWVyciA9IGk5MTVfZ2VtX29iamVjdF9maWxsX2JsdChvYmosIGNlLCB2YWwpOwo+IC0JCW11dGV4 X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQln b3RvIGVycl91bnBpbjsKPiAgIAo+IEBAIC0xNjYsOSArMTY0LDcgQEAgc3RhdGljIGludCBpZ3Rf Y29weV9ibHQodm9pZCAqYXJnKQo+ICAgCQlpZiAoIShkc3QtPmNhY2hlX2NvaGVyZW50ICYgSTkx NV9CT19DQUNIRV9DT0hFUkVOVF9GT1JfV1JJVEUpKQo+ICAgCQkJZHN0LT5jYWNoZV9kaXJ0eSA9 IHRydWU7Cj4gICAKPiAtCQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAg IAkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2NvcHlfYmx0KHNyYywgZHN0LCBjZSk7Cj4gLQkJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJaWYgKGVycikKPiAgIAkJ CWdvdG8gZXJyX3VucGluOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X2NvbnRleHQuYwo+IGluZGV4IDE0MjA1MzNlOGZkNS4uODgzNzM5MzU0YjA3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+IEBAIC0zMTIsNyArMzEy LDcgQEAgc3RhdGljIGludCBsaXZlX2FjdGl2ZV9jb250ZXh0KHZvaWQgKmFyZykKPiAgIAkJaWYg KGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCj4gLQkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5 MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+ICsJCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1 KTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiBAQCAtNDI1LDcgKzQyNSw3 IEBAIHN0YXRpYyBpbnQgbGl2ZV9yZW1vdGVfY29udGV4dCh2b2lkICphcmcpCj4gICAJCWlmIChl cnIpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1 LCBJOTE1X1dBSVRfTE9DS0VEKTsKPiArCQllcnIgPSBpZ3RfZmx1c2hfdGVzdChndC0+aTkxNSk7 Cj4gICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMKPiBpbmRleCBlNTNlZWExMDUwZjguLmZjNGQw MjQwNjUzNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9o YW5nY2hlY2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdj aGVjay5jCj4gQEAgLTU4LDcgKzU4LDkgQEAgc3RhdGljIGludCBoYW5nX2luaXQoc3RydWN0IGhh bmcgKmgsIHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gICAJbWVtc2V0KGgsIDAsIHNpemVvZigqaCkp Owo+ICAgCWgtPmd0ID0gZ3Q7Cj4gICAKPiArCW11dGV4X2xvY2soJmd0LT5pOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgIAloLT5jdHggPSBrZXJuZWxfY29udGV4dChndC0+aTkxNSk7Cj4gKwlt dXRleF91bmxvY2soJmd0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlpZiAoSVNfRVJS KGgtPmN0eCkpCj4gICAJCXJldHVybiBQVFJfRVJSKGgtPmN0eCk7Cj4gICAKPiBAQCAtMjg1LDcg KzI4Nyw3IEBAIHN0YXRpYyB2b2lkIGhhbmdfZmluaShzdHJ1Y3QgaGFuZyAqaCkKPiAgIAo+ICAg CWtlcm5lbF9jb250ZXh0X2Nsb3NlKGgtPmN0eCk7Cj4gICAKPiAtCWlndF9mbHVzaF90ZXN0KGgt Pmd0LT5pOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKPiArCWlndF9mbHVzaF90ZXN0KGgtPmd0LT5p OTE1KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJvb2wgd2FpdF91bnRpbF9ydW5uaW5nKHN0cnVj dCBoYW5nICpoLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiBAQCAtMzA5LDEwICszMTEsOSBA QCBzdGF0aWMgaW50IGlndF9oYW5nX3Nhbml0eWNoZWNrKHZvaWQgKmFyZykKPiAgIAo+ICAgCS8q IEJhc2ljIGNoZWNrIHRoYXQgd2UgY2FuIGV4ZWN1dGUgb3VyIGhhbmdpbmcgYmF0Y2ggKi8KPiAg IAo+IC0JbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWVyciA9 IGhhbmdfaW5pdCgmaCwgZ3QpOwo+ICAgCWlmIChlcnIpCj4gLQkJZ290byB1bmxvY2s7Cj4gKwkJ cmV0dXJuIGVycjsKPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LT5pOTE1LCBp ZCkgewo+ICAgCQlzdHJ1Y3QgaW50ZWxfd2VkZ2VfbWUgdzsKPiBAQCAtMzU1LDggKzM1Niw2IEBA IHN0YXRpYyBpbnQgaWd0X2hhbmdfc2FuaXR5Y2hlY2sodm9pZCAqYXJnKQo+ICAgCj4gICBmaW5p Ogo+ICAgCWhhbmdfZmluaSgmaCk7Cj4gLXVubG9jazoKPiAtCW11dGV4X3VubG9jaygmZ3QtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiBAQCAt Mzk1LDggKzM5NCw2IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X25vcCh2b2lkICphcmcpCj4gICAJ cmVzZXRfY291bnQgPSBpOTE1X3Jlc2V0X2NvdW50KGdsb2JhbCk7Cj4gICAJY291bnQgPSAwOwo+ ICAgCWRvIHsKPiAtCQltdXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g LQo+ICAgCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndC0+aTkxNSwgaWQpIHsKPiAgIAkJCWlu dCBpOwo+ICAgCj4gQEAgLTQxNyw3ICs0MTQsNiBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9ub3Ao dm9pZCAqYXJnKQo+ICAgCQlpbnRlbF9ndF9yZXNldChndCwgQUxMX0VOR0lORVMsIE5VTEwpOwo+ ICAgCQlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhndCk7Cj4gICAKPiAtCQltdXRleF91bmxvY2so Jmd0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJaWYgKGludGVsX2d0X2lzX3dlZGdl ZChndCkpIHsKPiAgIAkJCWVyciA9IC1FSU87Cj4gICAJCQlicmVhazsKPiBAQCAtNDI5LDE2ICs0 MjUsMTMgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfbm9wKHZvaWQgKmFyZykKPiAgIAkJCWJyZWFr Owo+ICAgCQl9Cj4gICAKPiAtCQllcnIgPSBpZ3RfZmx1c2hfdGVzdChndC0+aTkxNSwgMCk7Cj4g KwkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUpOwo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJ YnJlYWs7Cj4gICAJfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgZW5kX3RpbWUpKTsKPiAg IAlwcl9pbmZvKCIlczogJWQgcmVzZXRzXG4iLCBfX2Z1bmNfXywgY291bnQpOwo+ICAgCj4gLQlt dXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQllcnIgPSBpZ3RfZmx1 c2hfdGVzdChndC0+aTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCk7Cj4gLQltdXRleF91bmxvY2soJmd0 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gKwllcnIgPSBpZ3RfZmx1c2hfdGVzdChn dC0+aTkxNSk7Cj4gICBvdXQ6Cj4gICAJbW9ja19maWxlX2ZyZWUoZ3QtPmk5MTUsIGZpbGUpOwo+ ICAgCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoZ3QpKQo+IEBAIC00OTQsNyArNDg3LDYgQEAgc3Rh dGljIGludCBpZ3RfcmVzZXRfbm9wX2VuZ2luZSh2b2lkICphcmcpCj4gICAJCQkJYnJlYWs7Cj4g ICAJCQl9Cj4gICAKPiAtCQkJbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAgCQkJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKPiAgIAkJCQlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycTsKPiAgIAo+IEBAIC01MDcsNyArNDk5LDYgQEAgc3RhdGljIGludCBpZ3RfcmVz ZXRfbm9wX2VuZ2luZSh2b2lkICphcmcpCj4gICAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4g ICAJCQl9Cj4gICAJCQllcnIgPSBpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBOVUxMKTsKPiAt CQkJbXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCQlpZiAo ZXJyKSB7Cj4gICAJCQkJcHJfZXJyKCJpOTE1X3Jlc2V0X2VuZ2luZSBmYWlsZWRcbiIpOwo+ICAg CQkJCWJyZWFrOwo+IEBAIC01MzMsMTUgKzUyNCwxMiBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9u b3BfZW5naW5lKHZvaWQgKmFyZykKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCj4g LQkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUsIDApOwo+ICsJCWVyciA9IGlndF9mbHVz aF90ZXN0KGd0LT5pOTE1KTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiAg IAo+IC0JbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JZXJyID0g aWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+IC0JbXV0ZXhfdW5s b2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICsJZXJyID0gaWd0X2ZsdXNo X3Rlc3QoZ3QtPmk5MTUpOwo+ICAgb3V0Ogo+ICAgCW1vY2tfZmlsZV9mcmVlKGd0LT5pOTE1LCBm aWxlKTsKPiAgIAlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKGd0KSkKPiBAQCAtNTYzLDkgKzU1MSw3 IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGJv b2wgYWN0aXZlKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCWlmIChhY3RpdmUpIHsKPiAtCQlt dXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCWVyciA9IGhhbmdf aW5pdCgmaCwgZ3QpOwo+IC0JCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJcmV0dXJuIGVycjsKPiAgIAl9Cj4gQEAgLTU5Mywx NyArNTc5LDE0IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9n dCAqZ3QsIGJvb2wgYWN0aXZlKQo+ICAgCQkJaWYgKGFjdGl2ZSkgewo+ICAgCQkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOwo+ICAgCj4gLQkJCQltdXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gICAJCQkJcnEgPSBoYW5nX2NyZWF0ZV9yZXF1ZXN0KCZoLCBlbmdpbmUp Owo+ICAgCQkJCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCQkJCWVyciA9IFBUUl9FUlIocnEpOwo+ IC0JCQkJCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQkJ CQlicmVhazsKPiAgIAkJCQl9Cj4gICAKPiAgIAkJCQlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKPiAg IAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtCQkJCW11dGV4X3VubG9jaygmZ3QtPmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJCQkJaWYgKCF3YWl0X3VudGlsX3J1bm5pbmco JmgsIHJxKSkgewo+ICAgCQkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9pbmZvX3ByaW50 ZXIoZ3QtPmk5MTUtPmRybS5kZXYpOwo+IEBAIC02NDcsNyArNjMwLDcgQEAgc3RhdGljIGludCBf X2lndF9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwgYm9vbCBhY3RpdmUpCj4gICAJ CWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0 LT5pOTE1LCAwKTsKPiArCQllcnIgPSBpZ3RfZmx1c2hfdGVzdChndC0+aTkxNSk7Cj4gICAJCWlm IChlcnIpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gQEAgLTY1NSwxMSArNjM4LDggQEAgc3RhdGlj IGludCBfX2lndF9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwgYm9vbCBhY3RpdmUp Cj4gICAJaWYgKGludGVsX2d0X2lzX3dlZGdlZChndCkpCj4gICAJCWVyciA9IC1FSU87Cj4gICAK PiAtCWlmIChhY3RpdmUpIHsKPiAtCQltdXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gKwlpZiAoYWN0aXZlKQo+ICAgCQloYW5nX2ZpbmkoJmgpOwo+IC0JCW11dGV4X3Vu bG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+ICAgCj4gICAJcmV0dXJu IGVycjsKPiAgIH0KPiBAQCAtNzQxLDEwICs3MjEsOCBAQCBzdGF0aWMgaW50IGFjdGl2ZV9lbmdp bmUodm9pZCAqZGF0YSkKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqb2xkID0gcnFbaWR4XTsK PiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqbmV3Owo+ICAgCj4gLQkJbXV0ZXhfbG9jaygmZW5n aW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJbmV3ID0gaWd0X3JlcXVlc3RfYWxs b2MoY3R4W2lkeF0sIGVuZ2luZSk7Cj4gICAJCWlmIChJU19FUlIobmV3KSkgewo+IC0JCQltdXRl eF91bmxvY2soJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCQllcnIgPSBQ VFJfRVJSKG5ldyk7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+IEBAIC03NTUsNyArNzMzLDYgQEAg c3RhdGljIGludCBhY3RpdmVfZW5naW5lKHZvaWQgKmRhdGEpCj4gICAKPiAgIAkJcnFbaWR4XSA9 IGk5MTVfcmVxdWVzdF9nZXQobmV3KTsKPiAgIAkJaTkxNV9yZXF1ZXN0X2FkZChuZXcpOwo+IC0J CW11dGV4X3VubG9jaygmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAg CQllcnIgPSBhY3RpdmVfcmVxdWVzdF9wdXQob2xkKTsKPiAgIAkJaWYgKGVycikKPiBAQCAtNzk1 LDkgKzc3Miw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxf Z3QgKmd0LAo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCWlmIChmbGFncyAmIFRFU1RfQUNUSVZF KSB7Cj4gLQkJbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQll cnIgPSBoYW5nX2luaXQoJmgsIGd0KTsKPiAtCQltdXRleF91bmxvY2soJmd0LT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCXJldHVybiBlcnI7Cj4gICAKPiBA QCAtODU1LDE3ICs4MzAsMTQgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVj dCBpbnRlbF9ndCAqZ3QsCj4gICAJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7Cj4g ICAKPiAgIAkJCWlmIChmbGFncyAmIFRFU1RfQUNUSVZFKSB7Cj4gLQkJCQltdXRleF9sb2NrKCZn dC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCQkJcnEgPSBoYW5nX2NyZWF0ZV9yZXF1 ZXN0KCZoLCBlbmdpbmUpOwo+ICAgCQkJCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCQkJCWVyciA9 IFBUUl9FUlIocnEpOwo+IC0JCQkJCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgCQkJCQlicmVhazsKPiAgIAkJCQl9Cj4gICAKPiAgIAkJCQlpOTE1X3JlcXVl c3RfZ2V0KHJxKTsKPiAgIAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtCQkJCW11dGV4X3Vu bG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJCQkJaWYgKCF3YWl0 X3VudGlsX3J1bm5pbmcoJmgsIHJxKSkgewo+ICAgCQkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9 IGRybV9pbmZvX3ByaW50ZXIoZ3QtPmk5MTUtPmRybS5kZXYpOwo+IEBAIC05NzcsOSArOTQ5LDcg QEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4g ICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCW11dGV4X2xvY2soJmd0LT5pOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQllcnIgPSBpZ3RfZmx1c2hfdGVzdChndC0+aTkxNSwg STkxNV9XQUlUX0xPQ0tFRCk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gKwkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUpOwo+ICAgCQlpZiAo ZXJyKQo+ICAgCQkJYnJlYWs7Cj4gICAJfQo+IEBAIC05ODcsMTEgKzk1Nyw4IEBAIHN0YXRpYyBp bnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+ICAgCWlmIChpbnRl bF9ndF9pc193ZWRnZWQoZ3QpKQo+ICAgCQllcnIgPSAtRUlPOwo+ICAgCj4gLQlpZiAoZmxhZ3Mg JiBURVNUX0FDVElWRSkgewo+IC0JCW11dGV4X2xvY2soJmd0LT5pOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiArCWlmIChmbGFncyAmIFRFU1RfQUNUSVZFKQo+ICAgCQloYW5nX2ZpbmkoJmgpOwo+ IC0JCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+ICAg Cj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiBAQCAtMTA2MSw3ICsxMDI4LDYgQEAgc3RhdGljIGlu dCBpZ3RfcmVzZXRfd2FpdCh2b2lkICphcmcpCj4gICAKPiAgIAlpZ3RfZ2xvYmFsX3Jlc2V0X2xv Y2soZ3QpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gICAJZXJyID0gaGFuZ19pbml0KCZoLCBndCk7Cj4gICAJaWYgKGVycikKPiAgIAkJZ290byB1 bmxvY2s7Cj4gQEAgLTExMDksNyArMTA3NSw2IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3dhaXQo dm9pZCAqYXJnKQo+ICAgZmluaToKPiAgIAloYW5nX2ZpbmkoJmgpOwo+ICAgdW5sb2NrOgo+IC0J bXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaWd0X2dsb2Jh bF9yZXNldF91bmxvY2soZ3QpOwo+ICAgCj4gICAJaWYgKGludGVsX2d0X2lzX3dlZGdlZChndCkp Cj4gQEAgLTExODksMTAgKzExNTQsOSBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3Zt YShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+ICAgCj4gICAJLyogQ2hlY2sgdGhhdCB3ZSBjYW4gcmVj b3ZlciBhbiB1bmJpbmQgc3R1Y2sgb24gYSBoYW5naW5nIHJlcXVlc3QgKi8KPiAgIAo+IC0JbXV0 ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWVyciA9IGhhbmdfaW5p dCgmaCwgZ3QpOwo+ICAgCWlmIChlcnIpCj4gLQkJZ290byB1bmxvY2s7Cj4gKwkJcmV0dXJuIGVy cjsKPiAgIAo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoZ3QtPmk5 MTUsIFNaXzFNKTsKPiAgIAlpZiAoSVNfRVJSKG9iaikpIHsKPiBAQCAtMTI1NSw4ICsxMjE5LDYg QEAgc3RhdGljIGludCBfX2lndF9yZXNldF9ldmljdF92bWEoc3RydWN0IGludGVsX2d0ICpndCwK PiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dF9ycTsKPiAgIAo+IC0JbXV0ZXhfdW5sb2NrKCZn dC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWlmICghd2FpdF91bnRpbF9ydW5u aW5nKCZoLCBycSkpIHsKPiAgIAkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1faW5mb19wcmlu dGVyKGd0LT5pOTE1LT5kcm0uZGV2KTsKPiAgIAo+IEBAIC0xMzA1LDE2ICsxMjY3LDEyIEBAIHN0 YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4gICAJ CXB1dF90YXNrX3N0cnVjdCh0c2spOwo+ICAgCX0KPiAgIAo+IC0JbXV0ZXhfbG9jaygmZ3QtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgb3V0X3JxOgo+ICAgCWk5MTVfcmVxdWVzdF9wdXQo cnEpOwo+ICAgb3V0X29iajoKPiAgIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gICBmaW5p Ogo+ICAgCWhhbmdfZmluaSgmaCk7Cj4gLXVubG9jazoKPiAtCW11dGV4X3VubG9jaygmZ3QtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKGd0 KSkKPiAgIAkJcmV0dXJuIC1FSU87Cj4gICAKPiBAQCAtMTM5Niw3ICsxMzU0LDYgQEAgc3RhdGlj IGludCBpZ3RfcmVzZXRfcXVldWUodm9pZCAqYXJnKQo+ICAgCj4gICAJaWd0X2dsb2JhbF9yZXNl dF9sb2NrKGd0KTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAgCWVyciA9IGhhbmdfaW5pdCgmaCwgZ3QpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdv dG8gdW5sb2NrOwo+IEBAIC0xNTExLDcgKzE0NjgsNyBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9x dWV1ZSh2b2lkICphcmcpCj4gICAKPiAgIAkJaTkxNV9yZXF1ZXN0X3B1dChwcmV2KTsKPiAgIAo+ IC0JCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKPiAr CQllcnIgPSBpZ3RfZmx1c2hfdGVzdChndC0+aTkxNSk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQli cmVhazsKPiAgIAl9Cj4gQEAgLTE1MTksNyArMTQ3Niw2IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0 X3F1ZXVlKHZvaWQgKmFyZykKPiAgIGZpbmk6Cj4gICAJaGFuZ19maW5pKCZoKTsKPiAgIHVubG9j azoKPiAtCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWln dF9nbG9iYWxfcmVzZXRfdW5sb2NrKGd0KTsKPiAgIAo+ICAgCWlmIChpbnRlbF9ndF9pc193ZWRn ZWQoZ3QpKQo+IEBAIC0xNTQ2LDExICsxNTAyLDkgQEAgc3RhdGljIGludCBpZ3RfaGFuZGxlX2Vy cm9yKHZvaWQgKmFyZykKPiAgIAlpZiAoIWVuZ2luZSB8fCAhaW50ZWxfZW5naW5lX2Nhbl9zdG9y ZV9kd29yZChlbmdpbmUpKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmZ3Qt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAllcnIgPSBoYW5nX2luaXQoJmgsIGd0 KTsKPiAgIAlpZiAoZXJyKQo+IC0JCWdvdG8gZXJyX3VubG9jazsKPiArCQlyZXR1cm4gZXJyOwo+ ICAgCj4gICAJcnEgPSBoYW5nX2NyZWF0ZV9yZXF1ZXN0KCZoLCBlbmdpbmUpOwo+ICAgCWlmIChJ U19FUlIocnEpKSB7Cj4gQEAgLTE1NzQsOCArMTUyOCw2IEBAIHN0YXRpYyBpbnQgaWd0X2hhbmRs ZV9lcnJvcih2b2lkICphcmcpCj4gICAJCWdvdG8gZXJyX3JlcXVlc3Q7Cj4gICAJfQo+ICAgCj4g LQltdXRleF91bmxvY2soJmd0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJLyog VGVtcG9yYXJpbHkgZGlzYWJsZSBlcnJvciBjYXB0dXJlICovCj4gICAJZXJyb3IgPSB4Y2hnKCZn bG9iYWwtPmZpcnN0X2Vycm9yLCAodm9pZCAqKS0xKTsKPiAgIAo+IEBAIC0xNTgzLDggKzE1MzUs NiBAQCBzdGF0aWMgaW50IGlndF9oYW5kbGVfZXJyb3Iodm9pZCAqYXJnKQo+ICAgCj4gICAJeGNo ZygmZ2xvYmFsLT5maXJzdF9lcnJvciwgZXJyb3IpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZndC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWlmIChycS0+ZmVuY2UuZXJyb3IgIT0g LUVJTykgewo+ICAgCQlwcl9lcnIoIkd1aWx0eSByZXF1ZXN0IG5vdCBpZGVudGlmaWVkIVxuIik7 Cj4gICAJCWVyciA9IC1FSU5WQUw7Cj4gQEAgLTE1OTUsOCArMTU0NSw2IEBAIHN0YXRpYyBpbnQg aWd0X2hhbmRsZV9lcnJvcih2b2lkICphcmcpCj4gICAJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4g ICBlcnJfZmluaToKPiAgIAloYW5nX2ZpbmkoJmgpOwo+IC1lcnJfdW5sb2NrOgo+IC0JbXV0ZXhf dW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJcmV0dXJuIGVycjsKPiAg IH0KPiAgIAo+IEBAIC0xNjg5LDcgKzE2MzcsNiBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9lbmdp bmVzX2F0b21pYyh2b2lkICphcmcpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJaWd0X2dsb2Jh bF9yZXNldF9sb2NrKGd0KTsKPiAtCW11dGV4X2xvY2soJmd0LT5pOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAo+ICAgCS8qIEZsdXNoIGFueSByZXF1ZXN0cyBiZWZvcmUgd2UgZ2V0IHN0YXJ0 ZWQgYW5kIGNoZWNrIGJhc2ljcyAqLwo+ICAgCWlmICghaWd0X2ZvcmNlX3Jlc2V0KGd0KSkKPiBA QCAtMTcwOSw5ICsxNjU2LDcgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfZW5naW5lc19hdG9taWMo dm9pZCAqYXJnKQo+ICAgb3V0Ogo+ICAgCS8qIEFzIHdlIHBva2UgYXJvdW5kIHRoZSBndXRzLCBk byBhIGZ1bGwgcmVzZXQgYmVmb3JlIGNvbnRpbnVpbmcuICovCj4gICAJaWd0X2ZvcmNlX3Jlc2V0 KGd0KTsKPiAtCj4gICB1bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmd0LT5pOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgIAlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhndCk7Cj4gICAKPiAgIAly ZXR1cm4gZXJyOwo+IEBAIC0xNzUxLDEwICsxNjk2LDYgQEAgaW50IGludGVsX2hhbmdjaGVja19s aXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAo+ICAgCWVy ciA9IGludGVsX2d0X2xpdmVfc3VidGVzdHModGVzdHMsIGd0KTsKPiAgIAo+IC0JbXV0ZXhfbG9j aygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5 MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2sgPSBz YXZlZF9oYW5nY2hlY2s7Cj4gICAJaW50ZWxfcnVudGltZV9wbV9wdXQoJmd0LT5pOTE1LT5ydW50 aW1lX3BtLCB3YWtlcmVmKTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xy Yy5jCj4gaW5kZXggYWNhMWIzYTljNWRlLi4yMjJhNzM3NWM3ODcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBpbnQg bGl2ZV9zYW5pdHljaGVjayh2b2lkICphcmcpCj4gICAJCX0KPiAgIAo+ICAgCQlpZ3Rfc3Bpbm5l cl9lbmQoJnNwaW4pOwo+IC0JCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9D S0VEKSkgewo+ICsJCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1KSkgewo+ICAgCQkJZXJyID0gLUVJ TzsKPiAgIAkJCWdvdG8gZXJyX2N0eDsKPiAgIAkJfQo+IEBAIC0yMDYsOCArMjA2LDcgQEAgc2xp Y2Vfc2VtYXBob3JlX3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm91dGVyLAo+ICAgCWlm IChlcnIpCj4gICAJCWdvdG8gb3V0Owo+ICAgCj4gLQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQoaGVh ZCwKPiAtCQkJICAgICAgSTkxNV9XQUlUX0xPQ0tFRCwKPiArCWlmIChpOTE1X3JlcXVlc3Rfd2Fp dChoZWFkLCAwLAo+ICAgCQkJICAgICAgMiAqIFJVTlRJTUVfSU5GTyhvdXRlci0+aTkxNSktPm51 bV9lbmdpbmVzICogKGNvdW50ICsgMikgKiAoY291bnQgKyAzKSkgPCAwKSB7Cj4gICAJCXByX2Vy cigiRmFpbGVkIHRvIHNsaWNlIGFsb25nIHNlbWFwaG9yZSBjaGFpbiBvZiBsZW5ndGggKCVkLCAl ZCkhXG4iLAo+ICAgCQkgICAgICAgY291bnQsIG4pOwo+IEBAIC0yNzksNyArMjc4LDcgQEAgc3Rh dGljIGludCBsaXZlX3RpbWVzbGljZV9wcmVlbXB0KHZvaWQgKmFyZykKPiAgIAkJCWlmIChlcnIp Cj4gICAJCQkJZ290byBlcnJfcGluOwo+ICAgCj4gLQkJCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1 LCBJOTE1X1dBSVRfTE9DS0VEKSkgewo+ICsJCQlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSkpIHsK PiAgIAkJCQllcnIgPSAtRUlPOwo+ICAgCQkJCWdvdG8gZXJyX3BpbjsKPiAgIAkJCX0KPiBAQCAt ODMyLDcgKzgzMSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3ByZWVtcHQodm9pZCAqYXJnKQo+ICAg CQkJZ290byBlcnJfd2VkZ2VkOwo+ICAgCQl9Cj4gICAKPiAtCQlpZiAoaWd0X2ZsdXNoX3Rlc3Qo aTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gKwkJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ ICAgCQkJZ290byBlcnJfd2VkZ2VkOwo+ICAgCX0KPiAgIAo+IEBAIC05NDgsNyArOTQ3LDcgQEAg c3RhdGljIGludCBsaXZlX3N1cHByZXNzX3NlbGZfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJCQln b3RvIGVycl9jbGllbnRfYjsKPiAgIAkJfQo+ICAgCj4gLQkJaWYgKGlndF9mbHVzaF90ZXN0KGk5 MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1KSkKPiAg IAkJCWdvdG8gZXJyX3dlZGdlZDsKPiAgIAl9Cj4gICAKPiBAQCAtMTEwOSw3ICsxMTA4LDcgQEAg c3RhdGljIGludCBsaXZlX3N1cHByZXNzX3dhaXRfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJCQlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbGllbnQpOyBpKyspCj4gICAJCQkJaWd0X3NwaW5u ZXJfZW5kKCZjbGllbnRbaV0uc3Bpbik7Cj4gICAKPiAtCQkJaWYgKGlndF9mbHVzaF90ZXN0KGk5 MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJCQlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSkpCj4g ICAJCQkJZ290byBlcnJfd2VkZ2VkOwo+ICAgCj4gICAJCQlpZiAoZW5naW5lLT5leGVjbGlzdHMu cHJlZW1wdF9oYW5nLmNvdW50KSB7Cj4gQEAgLTEzODgsNyArMTM4Nyw3IEBAIHN0YXRpYyBpbnQg bGl2ZV9wcmVlbXB0X2hhbmcodm9pZCAqYXJnKQo+ICAgCj4gICAJCWlndF9zcGlubmVyX2VuZCgm c3Bpbl9oaSk7Cj4gICAJCWlndF9zcGlubmVyX2VuZCgmc3Bpbl9sbyk7Cj4gLQkJaWYgKGlndF9m bHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKSB7Cj4gKwkJaWYgKGlndF9mbHVzaF90 ZXN0KGk5MTUpKSB7Cj4gICAJCQllcnIgPSAtRUlPOwo+ICAgCQkJZ290byBlcnJfY3R4X2xvOwo+ ICAgCQl9Cj4gQEAgLTE3ODUsNyArMTc4NCw3IEBAIHN0YXRpYyBpbnQgbm9wX3ZpcnR1YWxfZW5n aW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQlwcmltZSwgZGl2NjRfdTY0 KGt0aW1lX3RvX25zKHRpbWVzWzFdKSwgcHJpbWUpKTsKPiAgIAo+ICAgb3V0Ogo+IC0JaWYgKGln dF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJaWYgKGlndF9mbHVzaF90 ZXN0KGk5MTUpKQo+ICAgCQllcnIgPSAtRUlPOwo+ICAgCj4gICAJZm9yIChuYyA9IDA7IG5jIDwg bmN0eDsgbmMrKykgewo+IEBAIC0xOTMwLDcgKzE5MjksNyBAQCBzdGF0aWMgaW50IG1hc2tfdmly dHVhbF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCWdvdG8gb3V0 Owo+ICAgCj4gICBvdXQ6Cj4gLQlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xP Q0tFRCkpCj4gKwlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSkpCj4gICAJCWVyciA9IC1FSU87Cj4g ICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgbnNpYmxpbmc7IG4rKykKPiBAQCAtMjEwOCw3ICsyMTA3 LDcgQEAgc3RhdGljIGludCBib25kX3ZpcnR1YWxfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAgb3V0Ogo+ICAgCWZvciAobiA9IDA7ICFJU19FUlIocnFbbl0pOyBuKysp Cj4gICAJCWk5MTVfcmVxdWVzdF9wdXQocnFbbl0pOwo+IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5 MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAg CQllcnIgPSAtRUlPOwo+ICAgCj4gICAJa2VybmVsX2NvbnRleHRfY2xvc2UoY3R4KTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKPiBpbmRleCAzMjE0ODE0 MDMxNjUuLjE2YWJmYWJmMDhjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF90aW1lbGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfdGltZWxpbmUuYwo+IEBAIC02LDcgKzYsNyBAQAo+ICAgCj4gICAjaW5jbHVkZSA8bGlu dXgvcHJpbWVfbnVtYmVycy5oPgo+ICAgCj4gLSNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcG0uaCIK PiArI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgo+ICAgI2luY2x1ZGUgImludGVsX2d0Lmgi Cj4gICAKPiAgICNpbmNsdWRlICIuLi9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaCIKPiBAQCAtMTM2 LDcgKzEzNiw2IEBAIHN0YXRpYyBpbnQgbW9ja19od3NwX2ZyZWVsaXN0KHZvaWQgKmFyZykKPiAg IAkJZ290byBlcnJfcHV0Owo+ICAgCX0KPiAgIAo+IC0JbXV0ZXhfbG9jaygmc3RhdGUuaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJZm9yIChwID0gcGhhc2VzOyBwLT5uYW1lOyBwKyspIHsK PiAgIAkJcHJfZGVidWcoIiVzKCVzKVxuIiwgX19mdW5jX18sIHAtPm5hbWUpOwo+ICAgCQlmb3Jf ZWFjaF9wcmltZV9udW1iZXJfZnJvbShuYSwgMSwgMiAqIENBQ0hFTElORVNfUEVSX1BBR0UpIHsK PiBAQCAtMTQ5LDcgKzE0OCw2IEBAIHN0YXRpYyBpbnQgbW9ja19od3NwX2ZyZWVsaXN0KHZvaWQg KmFyZykKPiAgIG91dDoKPiAgIAlmb3IgKG5hID0gMDsgbmEgPCBzdGF0ZS5tYXg7IG5hKyspCj4g ICAJCV9fbW9ja19od3NwX3JlY29yZCgmc3RhdGUsIG5hLCBOVUxMKTsKPiAtCW11dGV4X3VubG9j aygmc3RhdGUuaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJa2ZyZWUoc3RhdGUuaGlzdG9y eSk7Cj4gICBlcnJfcHV0Ogo+ICAgCWRybV9kZXZfcHV0KCZzdGF0ZS5pOTE1LT5kcm0pOwo+IEBA IC00NDksOCArNDQ3LDYgQEAgdGxfd3JpdGUoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgdmFsdWUpCj4gICAJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnE7Cj4gICAJaW50IGVycjsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgm dGwtPmd0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsgLyogbGF6eSBycSByZWZzICovCj4gLQo+ ICAgCWVyciA9IGludGVsX3RpbWVsaW5lX3Bpbih0bCk7Cj4gICAJaWYgKGVycikgewo+ICAgCQly cSA9IEVSUl9QVFIoZXJyKTsKPiBAQCAtNDYxLDEwICs0NTcsMTQgQEAgdGxfd3JpdGUoc3RydWN0 IGludGVsX3RpbWVsaW5lICp0bCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIg dmFsdWUpCj4gICAJaWYgKElTX0VSUihycSkpCj4gICAJCWdvdG8gb3V0X3VucGluOwo+ICAgCj4g KwlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKPiArCj4gICAJZXJyID0gZW1pdF9nZ3R0X3N0b3JlX2R3 KHJxLCB0bC0+aHdzcF9vZmZzZXQsIHZhbHVlKTsKPiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsK PiAtCWlmIChlcnIpCj4gKwlpZiAoZXJyKSB7Cj4gKwkJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4g ICAJCXJxID0gRVJSX1BUUihlcnIpOwo+ICsJfQo+ICAgCj4gICBvdXRfdW5waW46Cj4gICAJaW50 ZWxfdGltZWxpbmVfdW5waW4odGwpOwo+IEBAIC01MDAsNyArNTAwLDYgQEAgc3RhdGljIGludCBs aXZlX2h3c3BfZW5naW5lKHZvaWQgKmFyZykKPiAgIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKip0 aW1lbGluZXM7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAgCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJdW5z aWduZWQgbG9uZyBjb3VudCwgbjsKPiAgIAlpbnQgZXJyID0gMDsKPiAgIAo+IEBAIC01MTUsMTQg KzUxNCwxMyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9lbmdpbmUodm9pZCAqYXJnKQo+ICAgCWlm ICghdGltZWxpbmVzKQo+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOwo+IC0KPiAgIAljb3VudCA9IDA7Cj4gICAJZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAgIAkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0 b3JlX2R3b3JkKGVuZ2luZSkpCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICsJCWludGVsX2VuZ2lu ZV9wbV9nZXQoZW5naW5lKTsKPiArCj4gICAJCWZvciAobiA9IDA7IG4gPCBOVU1fVElNRUxJTkVT OyBuKyspIHsKPiAgIAkJCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7Cj4gICAJCQlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKPiBAQCAtNTMwLDIyICs1MjgsMjYgQEAgc3RhdGljIGludCBsaXZl X2h3c3BfZW5naW5lKHZvaWQgKmFyZykKPiAgIAkJCXRsID0gY2hlY2tlZF9pbnRlbF90aW1lbGlu ZV9jcmVhdGUoaTkxNSk7Cj4gICAJCQlpZiAoSVNfRVJSKHRsKSkgewo+ICAgCQkJCWVyciA9IFBU Ul9FUlIodGwpOwo+IC0JCQkJZ290byBvdXQ7Cj4gKwkJCQlicmVhazsKPiAgIAkJCX0KPiAgIAo+ ICAgCQkJcnEgPSB0bF93cml0ZSh0bCwgZW5naW5lLCBjb3VudCk7Cj4gICAJCQlpZiAoSVNfRVJS KHJxKSkgewo+ICAgCQkJCWludGVsX3RpbWVsaW5lX3B1dCh0bCk7Cj4gICAJCQkJZXJyID0gUFRS X0VSUihycSk7Cj4gLQkJCQlnb3RvIG91dDsKPiArCQkJCWJyZWFrOwo+ICAgCQkJfQo+ICAgCj4g ICAJCQl0aW1lbGluZXNbY291bnQrK10gPSB0bDsKPiArCQkJaTkxNV9yZXF1ZXN0X3B1dChycSk7 CgpUaGlzIHdhcyBhIGxlYWsgdW50aWwgbm93PwoKPiAgIAkJfQo+ICsKPiArCQlpbnRlbF9lbmdp bmVfcG1fcHV0KGVuZ2luZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJYnJlYWs7Cj4gICAJfQo+ICAg Cj4gLW91dDoKPiAtCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkK PiArCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1KSkKPiAgIAkJZXJyID0gLUVJTzsKPiAgIAo+ICAg CWZvciAobiA9IDA7IG4gPCBjb3VudDsgbisrKSB7Cj4gQEAgLTU1OSwxMSArNTYxLDcgQEAgc3Rh dGljIGludCBsaXZlX2h3c3BfZW5naW5lKHZvaWQgKmFyZykKPiAgIAkJaW50ZWxfdGltZWxpbmVf cHV0KHRsKTsKPiAgIAl9Cj4gICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZpOTE1LT5ydW50 aW1lX3BtLCB3YWtlcmVmKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gLQo+ICAgCWt2ZnJlZSh0aW1lbGluZXMpOwo+IC0KPiAgIAlyZXR1cm4gZXJyOwo+ICAg I3VuZGVmIE5VTV9USU1FTElORVMKPiAgIH0KPiBAQCAtNTc1LDcgKzU3Myw2IEBAIHN0YXRpYyBp bnQgbGl2ZV9od3NwX2FsdGVybmF0ZSh2b2lkICphcmcpCj4gICAJc3RydWN0IGludGVsX3RpbWVs aW5lICoqdGltZWxpbmVzOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAg IAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ ICAgCXVuc2lnbmVkIGxvbmcgY291bnQsIG47Cj4gICAJaW50IGVyciA9IDA7Cj4gICAKPiBAQCAt NTkxLDkgKzU4OCw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX2FsdGVybmF0ZSh2b2lkICphcmcp Cj4gICAJaWYgKCF0aW1lbGluZXMpCj4gICAJCXJldHVybiAtRU5PTUVNOwo+ICAgCj4gLQltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50 aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gLQo+ICAgCWNvdW50ID0gMDsKPiAgIAlm b3IgKG4gPSAwOyBuIDwgTlVNX1RJTUVMSU5FUzsgbisrKSB7Cj4gICAJCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gQEAgLTYwNSwxMSArNTk5LDE0IEBAIHN0YXRpYyBpbnQg bGl2ZV9od3NwX2FsdGVybmF0ZSh2b2lkICphcmcpCj4gICAKPiAgIAkJCXRsID0gY2hlY2tlZF9p bnRlbF90aW1lbGluZV9jcmVhdGUoaTkxNSk7Cj4gICAJCQlpZiAoSVNfRVJSKHRsKSkgewo+ICsJ CQkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCQkJCWVyciA9IFBUUl9FUlIodGwp Owo+ICAgCQkJCWdvdG8gb3V0Owo+ICAgCQkJfQo+ICAgCj4gKwkJCWludGVsX2VuZ2luZV9wbV9n ZXQoZW5naW5lKTsKPiAgIAkJCXJxID0gdGxfd3JpdGUodGwsIGVuZ2luZSwgY291bnQpOwo+ICsJ CQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJCQlpZiAoSVNfRVJSKHJxKSkgewo+ ICAgCQkJCWludGVsX3RpbWVsaW5lX3B1dCh0bCk7Cj4gICAJCQkJZXJyID0gUFRSX0VSUihycSk7 Cj4gQEAgLTYxNywxMSArNjE0LDEyIEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX2FsdGVybmF0ZSh2 b2lkICphcmcpCj4gICAJCQl9Cj4gICAKPiAgIAkJCXRpbWVsaW5lc1tjb3VudCsrXSA9IHRsOwo+ ICsJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKCkFuZCB0aGlzLgoKPiAgIAkJfQo+ICAgCX0KPiAg IAo+ICAgb3V0Ogo+IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQp KQo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAgCQllcnIgPSAtRUlPOwo+ICAgCj4g ICAJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKPiBAQCAtNjM1LDExICs2MzMsNyBAQCBz dGF0aWMgaW50IGxpdmVfaHdzcF9hbHRlcm5hdGUodm9pZCAqYXJnKQo+ICAgCQlpbnRlbF90aW1l bGluZV9wdXQodGwpOwo+ICAgCX0KPiAgIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUt PnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCj4gICAJa3ZmcmVlKHRpbWVsaW5lcyk7Cj4gLQo+ICAgCXJldHVybiBlcnI7 Cj4gICAjdW5kZWYgTlVNX1RJTUVMSU5FUwo+ICAgfQo+IEBAIC02NTAsNyArNjQ0LDYgQEAgc3Rh dGljIGludCBsaXZlX2h3c3Bfd3JhcCh2b2lkICphcmcpCj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+ICAgCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7Cj4gICAJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlpbnQg ZXJyID0gMDsKPiAgIAo+ICAgCS8qCj4gQEAgLTY1OCwxNCArNjUxLDEwIEBAIHN0YXRpYyBpbnQg bGl2ZV9od3NwX3dyYXAodm9pZCAqYXJnKQo+ICAgCSAqIGZvcmVpZ24gR1BVIHJlZmVyZW5jZXMu Cj4gICAJICovCj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAt Cj4gICAJdGwgPSBpbnRlbF90aW1lbGluZV9jcmVhdGUoJmk5MTUtPmd0LCBOVUxMKTsKPiAtCWlm IChJU19FUlIodGwpKSB7Cj4gLQkJZXJyID0gUFRSX0VSUih0bCk7Cj4gLQkJZ290byBvdXRfcnBt Owo+IC0JfQo+ICsJaWYgKElTX0VSUih0bCkpCj4gKwkJcmV0dXJuIFBUUl9FUlIodGwpOwo+ICsK PiAgIAlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9jYWNoZWxp bmUpCj4gICAJCWdvdG8gb3V0X2ZyZWU7Cj4gICAKPiBAQCAtNjgxLDcgKzY3MCw5IEBAIHN0YXRp YyBpbnQgbGl2ZV9od3NwX3dyYXAodm9pZCAqYXJnKQo+ICAgCQlpZiAoIWludGVsX2VuZ2luZV9j YW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gKwkJaW50ZWxf ZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICAgCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5n aW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gICAJCQln b3RvIG91dDsKPiBAQCAtNzQ3LDE2ICs3MzgsMTIgQEAgc3RhdGljIGludCBsaXZlX2h3c3Bfd3Jh cCh2b2lkICphcmcpCj4gICAJfQo+ICAgCgpObyBpOTE1X3JlcXVlc3RfcHV0IGluIHRoaXMgb25l IGFuZCBJIGNhbid0IHNlZSB3aHkgaXQgd291bGQgYmUgZGlmZmVyZW50LgoKPiAgIG91dDoKPiAt CWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkKPiArCWlmIChpZ3Rf Zmx1c2hfdGVzdChpOTE1KSkKPiAgIAkJZXJyID0gLUVJTzsKPiAgIAo+ICAgCWludGVsX3RpbWVs aW5lX3VucGluKHRsKTsKPiAgIG91dF9mcmVlOgo+ICAgCWludGVsX3RpbWVsaW5lX3B1dCh0bCk7 Cj4gLW91dF9ycG06Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwg d2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0K PiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTc2NSw3ICs3NTIsNiBAQCBzdGF0aWMg aW50IGxpdmVfaHdzcF9yZWN5Y2xlKHZvaWQgKmFyZykKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGFyZzsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4g ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK PiAgIAl1bnNpZ25lZCBsb25nIGNvdW50Owo+ICAgCWludCBlcnIgPSAwOwo+ICAgCj4gQEAgLTc3 NSw5ICs3NjEsNiBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWN5Y2xlKHZvaWQgKmFyZykKPiAg IAkgKiB3YW50IHRvIGNvbmZ1c2Ugb3Vyc2VsdmVzIG9yIHRoZSBHUFUuCj4gICAJICovCj4gICAK PiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gICAJY291bnQgPSAw Owo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gICAJCUlHVF9USU1F T1VUKGVuZF90aW1lKTsKPiBAQCAtNzg1LDYgKzc2OCw4IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3Nw X3JlY3ljbGUodm9pZCAqYXJnKQo+ICAgCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdv cmQoZW5naW5lKSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gKwkJaW50ZWxfZW5naW5lX3BtX2dl dChlbmdpbmUpOwo+ICsKPiAgIAkJZG8gewo+ICAgCQkJc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bDsKPiAgIAkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+IEBAIC03OTIsMjEgKzc3NywyMiBA QCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWN5Y2xlKHZvaWQgKmFyZykKPiAgIAkJCXRsID0gY2hl Y2tlZF9pbnRlbF90aW1lbGluZV9jcmVhdGUoaTkxNSk7Cj4gICAJCQlpZiAoSVNfRVJSKHRsKSkg ewo+ICAgCQkJCWVyciA9IFBUUl9FUlIodGwpOwo+IC0JCQkJZ290byBvdXQ7Cj4gKwkJCQlicmVh azsKPiAgIAkJCX0KPiAgIAo+ICAgCQkJcnEgPSB0bF93cml0ZSh0bCwgZW5naW5lLCBjb3VudCk7 Cj4gICAJCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJCWludGVsX3RpbWVsaW5lX3B1dCh0bCk7 Cj4gICAJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gLQkJCQlnb3RvIG91dDsKPiArCQkJCWJyZWFr Owo+ICAgCQkJfQo+ICAgCj4gICAJCQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIEhaIC8g NSkgPCAwKSB7Cj4gICAJCQkJcHJfZXJyKCJXYWl0IGZvciB0aW1lbGluZSB3cml0ZXMgdGltZWQg b3V0IVxuIik7Cj4gKwkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKPiAgIAkJCQlpbnRlbF90aW1l bGluZV9wdXQodGwpOwo+ICAgCQkJCWVyciA9IC1FSU87Cj4gLQkJCQlnb3RvIG91dDsKPiArCQkJ CWJyZWFrOwo+ICAgCQkJfQo+ICAgCj4gICAJCQlpZiAoKnRsLT5od3NwX3NlcW5vICE9IGNvdW50 KSB7Cj4gQEAgLTgxNSwxNyArODAxLDE4IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlY3ljbGUo dm9pZCAqYXJnKQo+ICAgCQkJCWVyciA9IC1FSU5WQUw7Cj4gICAJCQl9Cj4gICAKPiArCQkJaTkx NV9yZXF1ZXN0X3B1dChycSk7Cj4gICAJCQlpbnRlbF90aW1lbGluZV9wdXQodGwpOwo+ICAgCQkJ Y291bnQrKzsKPiAgIAo+ICAgCQkJaWYgKGVycikKPiAtCQkJCWdvdG8gb3V0Owo+ICsJCQkJYnJl YWs7Cj4gICAJCX0gd2hpbGUgKCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7Cj4gLQl9 Cj4gICAKPiAtb3V0Ogo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0s IHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAr CQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJYnJlYWs7 Cj4gKwl9Cj4gICAKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYwo+IGluZGV4IDk5OWE5OGYwMDQ5NC4uMDYz NTFmZWZiYmYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X3dvcmthcm91bmRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93 b3JrYXJvdW5kcy5jCj4gQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2RpcnR5 X3doaXRlbGlzdChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkJYnJlYWs7Cj4g ICAJfQo+ICAgCj4gLQlpZiAoaWd0X2ZsdXNoX3Rlc3QoY3R4LT5pOTE1LCBJOTE1X1dBSVRfTE9D S0VEKSkKPiArCWlmIChpZ3RfZmx1c2hfdGVzdChjdHgtPmk5MTUpKQo+ICAgCQllcnIgPSAtRUlP Owo+ICAgb3V0X2JhdGNoOgo+ICAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZiYXRjaCwg MCk7Cj4gQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9pc29sYXRlZF93aGl0 ZWxpc3Qodm9pZCAqYXJnKQo+ICAgCQlrZXJuZWxfY29udGV4dF9jbG9zZShjbGllbnRbaV0uY3R4 KTsKPiAgIAl9Cj4gICAKPiAtCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9D S0VEKSkKPiArCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1KSkKPiAgIAkJZXJyID0gLUVJTzsKPiAg IAo+ICAgCXJldHVybiBlcnI7Cj4gQEAgLTEyNDgsNyArMTI0OCw3IEBAIGxpdmVfZW5naW5lX3Jl c2V0X3dvcmthcm91bmRzKHZvaWQgKmFyZykKPiAgIAlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jaygm aTkxNS0+Z3QpOwo+ICAgCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0eCk7Cj4gICAKPiAtCWlndF9m bHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+ICsJaWd0X2ZsdXNoX3Rlc3QoaTkx NSk7Cj4gICAKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggMzBiMGI1OTJlMjBkLi41NWYwZmMwM2FhM2UgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0zNjAxLDYgKzM2MDEsNyBAQCBzdGF0aWMgaW50 Cj4gICBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGF0YTsKPiArCWludCByZXQ7Cj4gICAK PiAgIAlEUk1fREVCVUcoIkRyb3BwaW5nIGNhY2hlczogMHglMDhsbHggWzB4JTA4bGx4XVxuIiwK PiAgIAkJICB2YWwsIHZhbCAmIERST1BfQUxMKTsKPiBAQCAtMzYxMCw0MCArMzYxMSwyMSBAQCBp OTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAgCQkgICAgIEk5MTVf SURMRV9FTkdJTkVTX1RJTUVPVVQpKQo+ICAgCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKCZpOTE1LT5n dCk7Cj4gICAKPiAtCS8qIE5vIG5lZWQgdG8gY2hlY2sgYW5kIHdhaXQgZm9yIGdwdSByZXNldHMs IG9ubHkgbGliZHJtIGF1dG8tcmVzdGFydHMKPiAtCSAqIG9uIGlvY3RscyBvbiAtRUFHQUlOLiAq Lwo+IC0JaWYgKHZhbCAmIChEUk9QX0FDVElWRSB8IERST1BfSURMRSB8IERST1BfUkVUSVJFIHwg RFJPUF9SRVNFVF9TRVFOTykpIHsKPiAtCQlpbnQgcmV0Owo+ICsJaWYgKHZhbCAmIERST1BfUkVU SVJFKQo+ICsJCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+ICAgCj4gLQkJcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWlmICh2 YWwgJiAoRFJPUF9JRExFIHwgRFJPUF9BQ1RJVkUpKSB7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fd2Fp dF9mb3JfaWRsZShpOTE1LAo+ICsJCQkJCSAgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUsCj4g KwkJCQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gICAJCWlmIChyZXQpCj4gICAJCQly ZXR1cm4gcmV0Owo+ICsJfQo+ICAgCj4gLQkJLyoKPiAtCQkgKiBUbyBmaW5pc2ggdGhlIGZsdXNo IG9mIHRoZSBpZGxlX3dvcmtlciwgd2UgbXVzdCBjb21wbGV0ZQo+IC0JCSAqIHRoZSBzd2l0Y2gt dG8ta2VybmVsLWNvbnRleHQsIHdoaWNoIHJlcXVpcmVzIGEgZG91YmxlCj4gLQkJICogcGFzcyB0 aHJvdWdoIHdhaXRfZm9yX2lkbGU6IGZpcnN0IHF1ZXVlcyB0aGUgc3dpdGNoLAo+IC0JCSAqIHNl Y29uZCB3YWl0cyBmb3IgdGhlIHN3aXRjaC4KPiAtCQkgKi8KPiAtCQlpZiAocmV0ID09IDAgJiYg dmFsICYgKERST1BfSURMRSB8IERST1BfQUNUSVZFKSkKPiAtCQkJcmV0ID0gaTkxNV9nZW1fd2Fp dF9mb3JfaWRsZShpOTE1LAo+IC0JCQkJCQkgICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwK PiAtCQkJCQkJICAgICBJOTE1X1dBSVRfTE9DS0VELAo+IC0JCQkJCQkgICAgIE1BWF9TQ0hFRFVM RV9USU1FT1VUKTsKPiAtCj4gLQkJaWYgKHJldCA9PSAwICYmIHZhbCAmIERST1BfSURMRSkKPiAt CQkJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAo+IC0JCQkJCQkgICAgIEk5MTVf V0FJVF9JTlRFUlJVUFRJQkxFIHwKPiAtCQkJCQkJICAgICBJOTE1X1dBSVRfTE9DS0VELAo+IC0J CQkJCQkgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAtCj4gLQkJaWYgKHZhbCAmIERST1Bf UkVUSVJFKQo+IC0JCQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsKPiAtCj4gLQkJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQkJaWYgKHJldCA9PSAwICYm IHZhbCAmIERST1BfSURMRSkKPiAtCQkJcmV0ID0gaW50ZWxfZ3RfcG1fd2FpdF9mb3JfaWRsZSgm aTkxNS0+Z3QpOwo+ICsJaWYgKHZhbCAmIERST1BfSURMRSkgewo+ICsJCXJldCA9IGludGVsX2d0 X3BtX3dhaXRfZm9yX2lkbGUoJmk5MTUtPmd0KTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4g cmV0Owo+ICAgCX0KPiAgIAo+ICAgCWlmICh2YWwgJiBEUk9QX1JFU0VUX0FDVElWRSAmJiBpbnRl bF9ndF90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3QpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IGluZGV4IDFhYWRhYjFjZGQyNC4uMjI1ZmQyMmFmODU4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gQEAgLTk1MSwxOSArOTUxLDE2IEBAIGludCBpOTE1X2dlbV93YWl0X2Zvcl9p ZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCWlmICghaW50ZWxfZ3RfcG1f aXNfYXdha2UoJmk5MTUtPmd0KSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCUdFTV9UUkFDRSgi ZmxhZ3M9JXggKCVzKSwgdGltZW91dD0lbGQlc1xuIiwKPiAtCQkgIGZsYWdzLCBmbGFncyAmIEk5 MTVfV0FJVF9MT0NLRUQgPyAibG9ja2VkIiA6ICJ1bmxvY2tlZCIsCj4gLQkJICB0aW1lb3V0LCB0 aW1lb3V0ID09IE1BWF9TQ0hFRFVMRV9USU1FT1VUID8gIiAoZm9yZXZlcikiIDogIiIpOwo+IC0K PiAtCXRpbWVvdXQgPSB3YWl0X2Zvcl90aW1lbGluZXMoaTkxNSwgZmxhZ3MsIHRpbWVvdXQpOwo+ IC0JaWYgKHRpbWVvdXQgPCAwKQo+IC0JCXJldHVybiB0aW1lb3V0Owo+ICsJZG8gewo+ICsJCXRp bWVvdXQgPSB3YWl0X2Zvcl90aW1lbGluZXMoaTkxNSwgZmxhZ3MsIHRpbWVvdXQpOwo+ICsJCWlm ICh0aW1lb3V0IDwgMCkKPiArCQkJcmV0dXJuIHRpbWVvdXQ7Cj4gICAKPiAtCWlmIChmbGFncyAm IEk5MTVfV0FJVF9MT0NLRUQpIHsKPiAtCQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiArCQljb25kX3Jlc2NoZWQoKTsKPiArCQlpZiAoc2lnbmFsX3BlbmRp bmcoY3VycmVudCkpCj4gKwkJCXJldHVybiAtRUlOVFI7Cj4gICAKPiAtCQlpOTE1X3JldGlyZV9y ZXF1ZXN0cyhpOTE1KTsKPiAtCX0KPiArCX0gd2hpbGUgKGk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5 MTUpKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5oCj4gaW5kZXggMzI1MWQyYmRiZWVhLi41N2EyMTkzYzY0ZDEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0zMDgsMTAgKzMwOCw5IEBAIGxvbmcgaTkxNV9y ZXF1ZXN0X3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gICAJCSAgICAgICBsb25nIHRp bWVvdXQpCj4gICAJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgxKSkpOwo+ICAgI2RlZmluZSBJOTE1 X1dBSVRfSU5URVJSVVBUSUJMRQlCSVQoMCkKPiAtI2RlZmluZSBJOTE1X1dBSVRfTE9DS0VECUJJ VCgxKSAvKiBzdHJ1Y3RfbXV0ZXggaGVsZCwgaGFuZGxlIEdQVSByZXNldCAqLwo+IC0jZGVmaW5l IEk5MTVfV0FJVF9QUklPUklUWQlCSVQoMikgLyogc21hbGwgcHJpb3JpdHkgYnVtcCBmb3IgdGhl IHJlcXVlc3QgKi8KPiAtI2RlZmluZSBJOTE1X1dBSVRfQUxMCQlCSVQoMykgLyogdXNlZCBieSBp OTE1X2dlbV9vYmplY3Rfd2FpdCgpICovCj4gLSNkZWZpbmUgSTkxNV9XQUlUX0ZPUl9JRExFX0JP T1NUIEJJVCg0KQo+ICsjZGVmaW5lIEk5MTVfV0FJVF9QUklPUklUWQlCSVQoMSkgLyogc21hbGwg cHJpb3JpdHkgYnVtcCBmb3IgdGhlIHJlcXVlc3QgKi8KPiArI2RlZmluZSBJOTE1X1dBSVRfQUxM CQlCSVQoMikgLyogdXNlZCBieSBpOTE1X2dlbV9vYmplY3Rfd2FpdCgpICovCj4gKyNkZWZpbmUg STkxNV9XQUlUX0ZPUl9JRExFX0JPT1NUIEJJVCgzKQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGJv b2wgaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ ICAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9h Y3RpdmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jCj4g aW5kZXggYWY1ODI3YWFjN2IyLi5mZjEzMzdlMzQ1MjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYwo+IEBAIC0xNjQsMTAgKzE2NCw4IEBAIHN0 YXRpYyBpbnQgbGl2ZV9hY3RpdmVfd2FpdCh2b2lkICphcmcpCj4gICAKPiAgIAlfX2xpdmVfcHV0 KGFjdGl2ZSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJaWYgKGln dF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAgCQllcnIgPSAtRUlPOwo+IC0JbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gQEAg LTE4NSwxMCArMTgzLDggQEAgc3RhdGljIGludCBsaXZlX2FjdGl2ZV9yZXRpcmUodm9pZCAqYXJn KQo+ICAgCQlyZXR1cm4gUFRSX0VSUihhY3RpdmUpOwo+ICAgCj4gICAJLyogd2FpdHMgZm9yICYg cmV0aXJlcyBhbGwgcmVxdWVzdHMgKi8KPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAgCQllcnIgPSAtRUlPOwo+IC0JbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCWlmICghUkVBRF9PTkNF KGFjdGl2ZS0+cmV0aXJlZCkpIHsKPiAgIAkJcHJfZXJyKCJpOTE1X2FjdGl2ZSBub3QgcmV0aXJl ZCBhZnRlciBmbHVzaGluZyFcbiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4gaW5kZXggYmE2MDY0MTQ3MTczLi40MjEzOWRiMGQ2OWMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2 aWN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZp Y3QuYwo+IEBAIC01MjEsNyArNTIxLDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfY29udGV4dHMo dm9pZCAqYXJnKQo+ICAgCj4gICAJbXV0ZXhfbG9jaygmaTkxNS0+Z2d0dC52bS5tdXRleCk7Cj4g ICBvdXRfbG9ja2VkOgo+IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NL RUQpKQo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAgCQllcnIgPSAtRUlPOwo+ICAg CXdoaWxlIChyZXNlcnZlZCkgewo+ICAgCQlzdHJ1Y3QgcmVzZXJ2ZWQgKm5leHQgPSByZXNlcnZl ZC0+bmV4dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0 dC5jCj4gaW5kZXggNDIzNWZhNDAxOTU2Li43MjlhNTNlYjYyNDQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTE3MDksMTIgKzE3 MDksOCBAQCBpbnQgaTkxNV9nZW1fZ3R0X21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICAKPiAgIAll cnIgPSBpOTE1X3N1YnRlc3RzKHRlc3RzLCBnZ3R0KTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJbW9ja19kZXZpY2VfZmx1c2goaTkxNSk7Cj4gLQlt dXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlpOTE1X2dlbV9k cmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOwo+IC0KPiAgIAltb2NrX2ZpbmlfZ2d0dChnZ3R0KTsK PiAgIAlrZnJlZShnZ3R0KTsKPiAgIG91dF9wdXQ6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGIzNjg4NTQzZWQ3ZC4uZDA0NjM5NTg0 NWRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Jl cXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVl c3QuYwo+IEBAIC00MSwyMSArNDEsMTYgQEAgc3RhdGljIGludCBpZ3RfYWRkX3JlcXVlc3Qodm9p ZCAqYXJnKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gLQlpbnQgZXJyID0gLUVOT01FTTsK PiAgIAo+ICAgCS8qIEJhc2ljIHByZWxpbWluYXJ5IHRlc3QgdG8gY3JlYXRlIGEgcmVxdWVzdCBh bmQgbGV0IGl0IGxvb3NlISAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgIAlyZXF1ZXN0ID0gbW9ja19yZXF1ZXN0KGk5MTUtPmVuZ2luZVtSQ1MwXS0+ a2VybmVsX2NvbnRleHQsIEhaIC8gMTApOwo+ICAgCWlmICghcmVxdWVzdCkKPiAtCQlnb3RvIG91 dF91bmxvY2s7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gICAKPiAgIAlpOTE1X3JlcXVlc3RfYWRk KHJlcXVlc3QpOwo+ICAgCj4gLQllcnIgPSAwOwo+IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXJldHVybiBlcnI7Cj4gKwlyZXR1cm4g MDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBpZ3Rfd2FpdF9yZXF1ZXN0KHZvaWQgKmFyZykK PiBAQCAtNjcsMTIgKzYyLDEwIEBAIHN0YXRpYyBpbnQgaWd0X3dhaXRfcmVxdWVzdCh2b2lkICph cmcpCj4gICAKPiAgIAkvKiBTdWJtaXQgYSByZXF1ZXN0LCB0aGVuIHdhaXQgdXBvbiBpdCAqLwo+ ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXF1ZXN0 ID0gbW9ja19yZXF1ZXN0KGk5MTUtPmVuZ2luZVtSQ1MwXS0+a2VybmVsX2NvbnRleHQsIFQpOwo+ IC0JaWYgKCFyZXF1ZXN0KSB7Cj4gLQkJZXJyID0gLUVOT01FTTsKPiAtCQlnb3RvIG91dF91bmxv Y2s7Cj4gLQl9Cj4gKwlpZiAoIXJlcXVlc3QpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICAg CWk5MTVfcmVxdWVzdF9nZXQocmVxdWVzdCk7Cj4gICAKPiAgIAlpZiAoaTkxNV9yZXF1ZXN0X3dh aXQocmVxdWVzdCwgMCwgMCkgIT0gLUVUSU1FKSB7Cj4gQEAgLTEyNSw5ICsxMTgsNyBAQCBzdGF0 aWMgaW50IGlndF93YWl0X3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCWVyciA9IDA7Cj4gICBvdXRf cmVxdWVzdDoKPiAgIAlpOTE1X3JlcXVlc3RfcHV0KHJlcXVlc3QpOwo+IC1vdXRfdW5sb2NrOgo+ ICAgCW1vY2tfZGV2aWNlX2ZsdXNoKGk5MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTE0MCw1MiAr MTMxLDQ1IEBAIHN0YXRpYyBpbnQgaWd0X2ZlbmNlX3dhaXQodm9pZCAqYXJnKQo+ICAgCj4gICAJ LyogU3VibWl0IGEgcmVxdWVzdCwgdHJlYXQgaXQgYXMgYSBmZW5jZSBhbmQgd2FpdCB1cG9uIGl0 ICovCj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJl cXVlc3QgPSBtb2NrX3JlcXVlc3QoaTkxNS0+ZW5naW5lW1JDUzBdLT5rZXJuZWxfY29udGV4dCwg VCk7Cj4gLQlpZiAoIXJlcXVlc3QpIHsKPiAtCQllcnIgPSAtRU5PTUVNOwo+IC0JCWdvdG8gb3V0 X2xvY2tlZDsKPiAtCX0KPiArCWlmICghcmVxdWVzdCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAg IAo+ICAgCWlmIChkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KCZyZXF1ZXN0LT5mZW5jZSwgZmFsc2Us IFQpICE9IC1FVElNRSkgewo+ICAgCQlwcl9lcnIoImZlbmNlIHdhaXQgc3VjY2VzcyBiZWZvcmUg c3VibWl0IChleHBlY3RlZCB0aW1lb3V0KSFcbiIpOwo+IC0JCWdvdG8gb3V0X2xvY2tlZDsKPiAr CQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJlcXVlc3QpOwo+ IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCWlmIChk bWFfZmVuY2VfaXNfc2lnbmFsZWQoJnJlcXVlc3QtPmZlbmNlKSkgewo+ICAgCQlwcl9lcnIoImZl bmNlIHNpZ25hbGVkIGltbWVkaWF0ZWx5IVxuIik7Cj4gLQkJZ290byBvdXRfZGV2aWNlOwo+ICsJ CWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+ICAgCWlmIChkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KCZy ZXF1ZXN0LT5mZW5jZSwgZmFsc2UsIFQgLyAyKSAhPSAtRVRJTUUpIHsKPiAgIAkJcHJfZXJyKCJm ZW5jZSB3YWl0IHN1Y2Nlc3MgYWZ0ZXIgc3VibWl0IChleHBlY3RlZCB0aW1lb3V0KSFcbiIpOwo+ IC0JCWdvdG8gb3V0X2RldmljZTsKPiArCQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiAgIAlpZiAo ZG1hX2ZlbmNlX3dhaXRfdGltZW91dCgmcmVxdWVzdC0+ZmVuY2UsIGZhbHNlLCBUKSA8PSAwKSB7 Cj4gICAJCXByX2VycigiZmVuY2Ugd2FpdCB0aW1lZCBvdXQgKGV4cGVjdGVkIHN1Y2Nlc3MpIVxu Iik7Cj4gLQkJZ290byBvdXRfZGV2aWNlOwo+ICsJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+ICAg CWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKCZyZXF1ZXN0LT5mZW5jZSkpIHsKPiAgIAkJcHJf ZXJyKCJmZW5jZSB1bnNpZ25hbGVkIGFmdGVyIHdhaXRpbmchXG4iKTsKPiAtCQlnb3RvIG91dF9k ZXZpY2U7Cj4gKwkJZ290byBvdXQ7Cj4gICAJfQo+ICAgCj4gICAJaWYgKGRtYV9mZW5jZV93YWl0 X3RpbWVvdXQoJnJlcXVlc3QtPmZlbmNlLCBmYWxzZSwgVCkgPD0gMCkgewo+ICAgCQlwcl9lcnIo ImZlbmNlIHdhaXQgdGltZWQgb3V0IHdoZW4gY29tcGxldGUgKGV4cGVjdGVkIHN1Y2Nlc3MpIVxu Iik7Cj4gLQkJZ290byBvdXRfZGV2aWNlOwo+ICsJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+ICAg CWVyciA9IDA7Cj4gLW91dF9kZXZpY2U6Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtb3V0X2xvY2tlZDoKPiArb3V0Ogo+ICAgCW1vY2tfZGV2aWNlX2ZsdXNoKGk5 MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXR1 cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTE5OSw2ICsxODMsOCBAQCBzdGF0aWMgaW50IGlndF9y ZXF1ZXN0X3Jld2luZCh2b2lkICphcmcpCj4gICAKPiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgIAljdHhbMF0gPSBtb2NrX2NvbnRleHQoaTkxNSwgIkEiKTsKPiAr CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICAgCWNlID0gaTkx NV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eFswXSwgUkNTMCk7Cj4gICAJR0VNX0JVR19PTihJ U19FUlIoY2UpKTsKPiAgIAlyZXF1ZXN0ID0gbW9ja19yZXF1ZXN0KGNlLCAyICogSFopOwo+IEBA IC0yMTEsNyArMTk3LDEwIEBAIHN0YXRpYyBpbnQgaWd0X3JlcXVlc3RfcmV3aW5kKHZvaWQgKmFy ZykKPiAgIAlpOTE1X3JlcXVlc3RfZ2V0KHJlcXVlc3QpOwo+ICAgCWk5MTVfcmVxdWVzdF9hZGQo cmVxdWVzdCk7Cj4gICAKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCWN0eFsxXSA9IG1vY2tfY29udGV4dChpOTE1LCAiQiIpOwo+ICsJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gICAJY2UgPSBpOTE1X2dlbV9jb250ZXh0X2dl dF9lbmdpbmUoY3R4WzFdLCBSQ1MwKTsKPiAgIAlHRU1fQlVHX09OKElTX0VSUihjZSkpOwo+ICAg CXZpcCA9IG1vY2tfcmVxdWVzdChjZSwgMCk7Cj4gQEAgLTIzMyw3ICsyMjIsNiBAQCBzdGF0aWMg aW50IGlndF9yZXF1ZXN0X3Jld2luZCh2b2lkICphcmcpCj4gICAJcmVxdWVzdC0+ZW5naW5lLT5z dWJtaXRfcmVxdWVzdChyZXF1ZXN0KTsKPiAgIAlyY3VfcmVhZF91bmxvY2soKTsKPiAgIAo+IC0J bXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCWlmIChpOTE1 X3JlcXVlc3Rfd2FpdCh2aXAsIDAsIEhaKSA9PSAtRVRJTUUpIHsKPiAgIAkJcHJfZXJyKCJ0aW1l ZCBvdXQgd2FpdGluZyBmb3IgaGlnaCBwcmlvcml0eSByZXF1ZXN0XG4iKTsKPiBAQCAtMjQ4LDE0 ICsyMzYsMTIgQEAgc3RhdGljIGludCBpZ3RfcmVxdWVzdF9yZXdpbmQodm9pZCAqYXJnKQo+ICAg CWVyciA9IDA7Cj4gICBlcnI6Cj4gICAJaTkxNV9yZXF1ZXN0X3B1dCh2aXApOwo+IC0JbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICBlcnJfY29udGV4dF8xOgo+ICAgCW1v Y2tfY29udGV4dF9jbG9zZShjdHhbMV0pOwo+ICAgCWk5MTVfcmVxdWVzdF9wdXQocmVxdWVzdCk7 Cj4gICBlcnJfY29udGV4dF8wOgo+ICAgCW1vY2tfY29udGV4dF9jbG9zZShjdHhbMF0pOwo+ICAg CW1vY2tfZGV2aWNlX2ZsdXNoKGk5MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTI4Miw3ICsyNjgs NiBAQCBfX2xpdmVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICBz dGF0aWMgaW50IF9faWd0X2JyZWFkY3J1bWJzX3Ntb2tldGVzdCh2b2lkICphcmcpCj4gICB7Cj4g ICAJc3RydWN0IHNtb2tldGVzdCAqdCA9IGFyZzsKPiAtCXN0cnVjdCBtdXRleCAqIGNvbnN0IEJL TCA9ICZ0LT5lbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXg7Cj4gICAJY29uc3QgdW5zaWdu ZWQgaW50IG1heF9iYXRjaCA9IG1pbih0LT5uY29udGV4dHMsIHQtPm1heF9iYXRjaCkgLSAxOwo+ ICAgCWNvbnN0IHVuc2lnbmVkIGludCB0b3RhbCA9IDQgKiB0LT5uY29udGV4dHMgKyAxOwo+ICAg CXVuc2lnbmVkIGludCBudW1fd2FpdHMgPSAwLCBudW1fZmVuY2VzID0gMDsKPiBAQCAtMzM3LDE0 ICszMjIsMTEgQEAgc3RhdGljIGludCBfX2lndF9icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAq YXJnKQo+ICAgCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAJCQlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2U7Cj4gICAKPiAtCQkJbXV0ZXhfbG9jayhCS0wpOwo+IC0KPiAgIAkJCWNlID0g aTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgdC0+ZW5naW5lLT5sZWdhY3lfaWR4KTsK PiAgIAkJCUdFTV9CVUdfT04oSVNfRVJSKGNlKSk7Cj4gICAJCQlycSA9IHQtPnJlcXVlc3RfYWxs b2MoY2UpOwo+ICAgCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+ICAgCQkJaWYgKElTX0VSUihy cSkpIHsKPiAtCQkJCW11dGV4X3VubG9jayhCS0wpOwo+ICAgCQkJCWVyciA9IFBUUl9FUlIocnEp Owo+ICAgCQkJCWNvdW50ID0gbjsKPiAgIAkJCQlicmVhazsKPiBAQCAtMzU3LDggKzMzOSw2IEBA IHN0YXRpYyBpbnQgX19pZ3RfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZykKPiAgIAkJ CXJlcXVlc3RzW25dID0gaTkxNV9yZXF1ZXN0X2dldChycSk7Cj4gICAJCQlpOTE1X3JlcXVlc3Rf YWRkKHJxKTsKPiAgIAo+IC0JCQltdXRleF91bmxvY2soQktMKTsKPiAtCj4gICAJCQlpZiAoZXJy ID49IDApCj4gICAJCQkJZXJyID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2Uod2FpdCwK PiAgIAkJCQkJCQkJICAgICZycS0+ZmVuY2UsCj4gQEAgLTQ1NywxNSArNDM3LDE1IEBAIHN0YXRp YyBpbnQgbW9ja19icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAqYXJnKQo+ICAgCQlnb3RvIG91 dF90aHJlYWRzOwo+ICAgCX0KPiAgIAo+IC0JbXV0ZXhfbG9jaygmdC5lbmdpbmUtPmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWZvciAobiA9IDA7IG4gPCB0Lm5jb250ZXh0czsgbisrKSB7 Cj4gKwkJbXV0ZXhfbG9jaygmdC5lbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg CQl0LmNvbnRleHRzW25dID0gbW9ja19jb250ZXh0KHQuZW5naW5lLT5pOTE1LCAibW9jayIpOwo+ ICsJCW11dGV4X3VubG9jaygmdC5lbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg CQlpZiAoIXQuY29udGV4dHNbbl0pIHsKPiAgIAkJCXJldCA9IC1FTk9NRU07Cj4gICAJCQlnb3Rv IG91dF9jb250ZXh0czsKPiAgIAkJfQo+ICAgCX0KPiAtCW11dGV4X3VubG9jaygmdC5lbmdpbmUt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJZm9yIChuID0gMDsgbiA8IG5jcHVz OyBuKyspIHsKPiAgIAkJdGhyZWFkc1tuXSA9IGt0aHJlYWRfcnVuKF9faWd0X2JyZWFkY3J1bWJz X3Ntb2tldGVzdCwKPiBAQCAtNDk1LDE4ICs0NzUsMTUgQEAgc3RhdGljIGludCBtb2NrX2JyZWFk Y3J1bWJzX3Ntb2tldGVzdCh2b2lkICphcmcpCj4gICAJCWF0b21pY19sb25nX3JlYWQoJnQubnVt X2ZlbmNlcyksCj4gICAJCW5jcHVzKTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmdC5lbmdpbmUtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgb3V0X2NvbnRleHRzOgo+ICAgCWZvciAobiA9IDA7 IG4gPCB0Lm5jb250ZXh0czsgbisrKSB7Cj4gICAJCWlmICghdC5jb250ZXh0c1tuXSkKPiAgIAkJ CWJyZWFrOwo+ICAgCQltb2NrX2NvbnRleHRfY2xvc2UodC5jb250ZXh0c1tuXSk7Cj4gICAJfQo+ IC0JbXV0ZXhfdW5sb2NrKCZ0LmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJ a2ZyZWUodC5jb250ZXh0cyk7Cj4gICBvdXRfdGhyZWFkczoKPiAgIAlrZnJlZSh0aHJlYWRzKTsK PiAtCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IEBAIC01MzksNyArNTE2LDYgQEAgc3Rh dGljIGludCBsaXZlX25vcF9yZXF1ZXN0KHZvaWQgKmFyZykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlzdHJ1Y3QgaWd0X2xpdmVf dGVzdCB0Owo+ICAgCXVuc2lnbmVkIGludCBpZDsKPiAgIAlpbnQgZXJyID0gLUVOT0RFVjsKPiBA QCAtNTQ5LDkgKzUyNSw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3BfcmVxdWVzdCh2b2lkICphcmcp Cj4gICAJICogdGhlIG92ZXJoZWFkIG9mIHN1Ym1pdHRpbmcgcmVxdWVzdHMgdG8gdGhlIGhhcmR3 YXJlLgo+ICAgCSAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7 Cj4gLQo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gICAJCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QgPSBOVUxMOwo+ICAgCQl1bnNpZ25lZCBsb25nIG4sIHBy aW1lOwo+IEBAIC01NjAsMTcgKzUzMywxNSBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3JlcXVlc3Qo dm9pZCAqYXJnKQo+ICAgCj4gICAJCWVyciA9IGlndF9saXZlX3Rlc3RfYmVnaW4oJnQsIGk5MTUs IF9fZnVuY19fLCBlbmdpbmUtPm5hbWUpOwo+ICAgCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dF91 bmxvY2s7Cj4gKwkJCXJldHVybiBlcnI7Cj4gICAKPiAgIAkJZm9yX2VhY2hfcHJpbWVfbnVtYmVy X2Zyb20ocHJpbWUsIDEsIDgxOTIpIHsKPiAgIAkJCXRpbWVzWzFdID0ga3RpbWVfZ2V0X3Jhdygp Owo+ICAgCj4gICAJCQlmb3IgKG4gPSAwOyBuIDwgcHJpbWU7IG4rKykgewo+ICAgCQkJCXJlcXVl c3QgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+IC0JCQkJ aWYgKElTX0VSUihyZXF1ZXN0KSkgewo+IC0JCQkJCWVyciA9IFBUUl9FUlIocmVxdWVzdCk7Cj4g LQkJCQkJZ290byBvdXRfdW5sb2NrOwo+IC0JCQkJfQo+ICsJCQkJaWYgKElTX0VSUihyZXF1ZXN0 KSkKPiArCQkJCQlyZXR1cm4gUFRSX0VSUihyZXF1ZXN0KTsKPiAgIAo+ICAgCQkJCS8qIFRoaXMg c3BhY2UgaXMgbGVmdCBpbnRlbnRpb25hbGx5IGJsYW5rLgo+ICAgCQkJCSAqCj4gQEAgLTU5OSw3 ICs1NzAsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCj4g ICAJCWVyciA9IGlndF9saXZlX3Rlc3RfZW5kKCZ0KTsKPiAgIAkJaWYgKGVycikKPiAtCQkJZ290 byBvdXRfdW5sb2NrOwo+ICsJCQlyZXR1cm4gZXJyOwo+ICAgCj4gICAJCXByX2luZm8oIlJlcXVl c3QgbGF0ZW5jaWVzIG9uICVzOiAxID0gJWxsdW5zLCAlbHUgPSAlbGx1bnNcbiIsCj4gICAJCQll bmdpbmUtPm5hbWUsCj4gQEAgLTYwNyw5ICs1NzgsNiBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3Jl cXVlc3Qodm9pZCAqYXJnKQo+ICAgCQkJcHJpbWUsIGRpdjY0X3U2NChrdGltZV90b19ucyh0aW1l c1sxXSksIHByaW1lKSk7Cj4gICAJfQo+ICAgCj4gLW91dF91bmxvY2s6Cj4gLQlpbnRlbF9ydW50 aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiBA QCAtNjgxLDcgKzY0OSw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9lbXB0eV9yZXF1ZXN0KHZvaWQgKmFy ZykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAgIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiAgIAlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0Owo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqYmF0 Y2g7Cj4gICAJdW5zaWduZWQgaW50IGlkOwo+IEBAIC02OTIsMTQgKzY1OSw5IEBAIHN0YXRpYyBp bnQgbGl2ZV9lbXB0eV9yZXF1ZXN0KHZvaWQgKmFyZykKPiAgIAkgKiB0aGUgb3ZlcmhlYWQgb2Yg c3VibWl0dGluZyByZXF1ZXN0cyB0byB0aGUgaGFyZHdhcmUuCj4gICAJICovCj4gICAKPiAtCW11 dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gICAJYmF0Y2ggPSBlbXB0eV9i YXRjaChpOTE1KTsKPiAtCWlmIChJU19FUlIoYmF0Y2gpKSB7Cj4gLQkJZXJyID0gUFRSX0VSUihi YXRjaCk7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+IC0JfQo+ICsJaWYgKElTX0VSUihiYXRjaCkp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoYmF0Y2gpOwo+ICAgCj4gICAJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgaTkxNSwgaWQpIHsKPiAgIAkJSUdUX1RJTUVPVVQoZW5kX3RpbWUpOwo+IEBAIC03NTIs OSArNzE0LDYgQEAgc3RhdGljIGludCBsaXZlX2VtcHR5X3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAg b3V0X2JhdGNoOgo+ICAgCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKPiAgIAlpOTE1X3ZtYV9wdXQo YmF0Y2gpOwo+IC1vdXRfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1 bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTgzNCw3ICs3OTMsNiBAQCBz dGF0aWMgaW50IGxpdmVfYWxsX2VuZ2luZXModm9pZCAqYXJnKQo+ICAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0W0k5MTVfTlVNX0VOR0lORVNdOwo+ IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJc3RydWN0IGlndF9saXZlX3Rlc3QgdDsK PiAgIAlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOwo+ICAgCXVuc2lnbmVkIGludCBpZDsKPiBAQCAt ODQ1LDE4ICs4MDMsMTUgQEAgc3RhdGljIGludCBsaXZlX2FsbF9lbmdpbmVzKHZvaWQgKmFyZykK PiAgIAkgKiBibG9jayBkb2luZyBzbywgYW5kIHRoYXQgdGhleSBkb24ndCBjb21wbGV0ZSB0b28g c29vbi4KPiAgIAkgKi8KPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0p Owo+IC0KPiAgIAllcnIgPSBpZ3RfbGl2ZV90ZXN0X2JlZ2luKCZ0LCBpOTE1LCBfX2Z1bmNfXywg IiIpOwo+ICAgCWlmIChlcnIpCj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCXJldHVybiBlcnI7 Cj4gICAKPiAgIAliYXRjaCA9IHJlY3Vyc2l2ZV9iYXRjaChpOTE1KTsKPiAgIAlpZiAoSVNfRVJS KGJhdGNoKSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGJhdGNoKTsKPiAgIAkJcHJfZXJyKCIlczog VW5hYmxlIHRvIGNyZWF0ZSBiYXRjaCwgZXJyPSVkXG4iLCBfX2Z1bmNfXywgZXJyKTsKPiAtCQln b3RvIG91dF91bmxvY2s7Cj4gKwkJcmV0dXJuIGVycjsKPiAgIAl9Cj4gICAKPiAgIAlmb3JfZWFj aF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+IEBAIC05MjYsOSArODgxLDYgQEAgc3RhdGlj IGludCBsaXZlX2FsbF9lbmdpbmVzKHZvaWQgKmFyZykKPiAgIAkJCWk5MTVfcmVxdWVzdF9wdXQo cmVxdWVzdFtpZF0pOwo+ICAgCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKPiAgIAlpOTE1X3ZtYV9w dXQoYmF0Y2gpOwo+IC1vdXRfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUt PnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTkzOCw3ICs4OTAsNiBA QCBzdGF0aWMgaW50IGxpdmVfc2VxdWVudGlhbF9lbmdpbmVzKHZvaWQgKmFyZykKPiAgIAlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0W0k5MTVfTlVNX0VOR0lORVNdID0ge307Cj4gICAJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcHJldiA9IE5VTEw7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJc3RydWN0IGlndF9s aXZlX3Rlc3QgdDsKPiAgIAl1bnNpZ25lZCBpbnQgaWQ7Cj4gICAJaW50IGVycjsKPiBAQCAtOTQ5 LDEyICs5MDAsOSBAQCBzdGF0aWMgaW50IGxpdmVfc2VxdWVudGlhbF9lbmdpbmVzKHZvaWQgKmFy ZykKPiAgIAkgKiB0aGV5IGFyZSBydW5uaW5nIG9uIGluZGVwZW5kZW50IGVuZ2luZXMuCj4gICAJ ICovCj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gICAJ ZXJyID0gaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sICIiKTsKPiAgIAlp ZiAoZXJyKQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQlyZXR1cm4gZXJyOwo+ICAgCj4gICAJ Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAgIAkJc3RydWN0IGk5MTVfdm1h ICpiYXRjaDsKPiBAQCAtOTY0LDcgKzkxMiw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9zZXF1ZW50aWFs X2VuZ2luZXModm9pZCAqYXJnKQo+ICAgCQkJZXJyID0gUFRSX0VSUihiYXRjaCk7Cj4gICAJCQlw cl9lcnIoIiVzOiBVbmFibGUgdG8gY3JlYXRlIGJhdGNoIGZvciAlcywgZXJyPSVkXG4iLAo+ICAg CQkJICAgICAgIF9fZnVuY19fLCBlbmdpbmUtPm5hbWUsIGVycik7Cj4gLQkJCWdvdG8gb3V0X3Vu bG9jazsKPiArCQkJcmV0dXJuIGVycjsKPiAgIAkJfQo+ICAgCj4gICAJCXJlcXVlc3RbaWRdID0g aTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKPiBAQCAtMTA1Niw5 ICsxMDA0LDYgQEAgc3RhdGljIGludCBsaXZlX3NlcXVlbnRpYWxfZW5naW5lcyh2b2lkICphcmcp Cj4gICAJCWk5MTVfdm1hX3B1dChyZXF1ZXN0W2lkXS0+YmF0Y2gpOwo+ICAgCQlpOTE1X3JlcXVl c3RfcHV0KHJlcXVlc3RbaWRdKTsKPiAgIAl9Cj4gLW91dF91bmxvY2s6Cj4gLQlpbnRlbF9ydW50 aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiBA QCAtMTE0OSw5ICsxMDk0LDEwIEBAIHN0YXRpYyBpbnQgbGl2ZV9icmVhZGNydW1ic19zbW9rZXRl c3Qodm9pZCAqYXJnKQo+ICAgCQlnb3RvIG91dF90aHJlYWRzOwo+ICAgCX0KPiAgIAo+IC0JbXV0 ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJZm9yIChuID0gMDsgbiA8IHRb MF0ubmNvbnRleHRzOyBuKyspIHsKPiArCQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAkJdFswXS5jb250ZXh0c1tuXSA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxlKTsK PiArCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQlpZiAoIXRb MF0uY29udGV4dHNbbl0pIHsKPiAgIAkJCXJldCA9IC1FTk9NRU07Cj4gICAJCQlnb3RvIG91dF9j b250ZXh0czsKPiBAQCAtMTE2OCw3ICsxMTE0LDYgQEAgc3RhdGljIGludCBsaXZlX2JyZWFkY3J1 bWJzX3Ntb2tldGVzdCh2b2lkICphcmcpCj4gICAJCXRbaWRdLm1heF9iYXRjaCA9IG1heF9iYXRj aGVzKHRbMF0uY29udGV4dHNbMF0sIGVuZ2luZSk7Cj4gICAJCWlmICh0W2lkXS5tYXhfYmF0Y2gg PCAwKSB7Cj4gICAJCQlyZXQgPSB0W2lkXS5tYXhfYmF0Y2g7Cj4gLQkJCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCQlnb3RvIG91dF9mbHVzaDsKPiAgIAkJfQo+ ICAgCQkvKiBPbmUgcmluZyBpbnRlcmxlYXZlZCBiZXR3ZWVuIHJlcXVlc3RzIGZyb20gYWxsIGNw dXMgKi8KPiBAQCAtMTE4Myw3ICsxMTI4LDYgQEAgc3RhdGljIGludCBsaXZlX2JyZWFkY3J1bWJz X3Ntb2tldGVzdCh2b2lkICphcmcpCj4gICAJCQkJCSAgJnRbaWRdLCAiaWd0LyVkLiVkIiwgaWQs IG4pOwo+ICAgCQkJaWYgKElTX0VSUih0c2spKSB7Cj4gICAJCQkJcmV0ID0gUFRSX0VSUih0c2sp Owo+IC0JCQkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJCQln b3RvIG91dF9mbHVzaDsKPiAgIAkJCX0KPiAgIAo+IEBAIC0xMTkxLDcgKzExMzUsNiBAQCBzdGF0 aWMgaW50IGxpdmVfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZykKPiAgIAkJCXRocmVh ZHNbaWQgKiBuY3B1cyArIG5dID0gdHNrOwo+ICAgCQl9Cj4gICAJfQo+IC0JbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCW1zbGVlcChqaWZmaWVzX3RvX21z ZWNzKGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSk7Cj4gICAKPiBAQCAtMTIxOSwxMCAr MTE2Miw4IEBAIHN0YXRpYyBpbnQgbGl2ZV9icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAqYXJn KQo+ICAgCXByX2luZm8oIkNvbXBsZXRlZCAlbHUgd2FpdHMgZm9yICVsdSBmZW5jZXMgYWNyb3Nz ICVkIGVuZ2luZXMgYW5kICVkIGNwdXNcbiIsCj4gICAJCW51bV93YWl0cywgbnVtX2ZlbmNlcywg UlVOVElNRV9JTkZPKGk5MTUpLT5udW1fZW5naW5lcywgbmNwdXMpOwo+ICAgCj4gLQltdXRleF9s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXQgPSBpZ3RfbGl2ZV90ZXN0X2Vu ZCgmbGl2ZSkgPzogcmV0Owo+ICAgb3V0X2NvbnRleHRzOgo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlrZnJlZSh0WzBdLmNvbnRleHRzKTsKPiAgIG91dF90 aHJlYWRzOgo+ICAgCWtmcmVlKHRocmVhZHMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYwo+IGluZGV4IDQzOGVhMGVhYTQxNi4uODI1YTgyODZj YmU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Nl bGZ0ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxm dGVzdC5jCj4gQEAgLTI2MywxMCArMjYzLDggQEAgaW50IF9faTkxNV9saXZlX3RlYXJkb3duKGlu dCBlcnIsIHZvaWQgKmRhdGEpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBkYXRhOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkKPiArCWlmIChp Z3RfZmx1c2hfdGVzdChpOTE1KSkKPiAgIAkJZXJyID0gLUVJTzsKPiAtCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAgIAlpOTE1X2dlbV9kcmFpbl9mcmVlZF9v YmplY3RzKGk5MTUpOwo+ICAgCj4gQEAgLTI4NCwxMCArMjgyLDggQEAgaW50IF9faW50ZWxfZ3Rf bGl2ZV90ZWFyZG93bihpbnQgZXJyLCB2b2lkICpkYXRhKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRl bF9ndCAqZ3QgPSBkYXRhOwo+ICAgCj4gLQltdXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gLQlpZiAoaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUsIEk5MTVfV0FJVF9MT0NL RUQpKQo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1KSkKPiAgIAkJZXJyID0gLUVJTzsK PiAtCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJ aTkxNV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhndC0+aTkxNSk7Cj4gICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+IGluZGV4IGUwY2ExMmMxN2E3Zi4uNmMx NzA1MDU4YjkzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X3ZtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1h LmMKPiBAQCAtODM1LDEyICs4MzUsOCBAQCBpbnQgaTkxNV92bWFfbW9ja19zZWxmdGVzdHModm9p ZCkKPiAgIAo+ICAgCWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMsIGdndHQpOwo+ICAgCj4gLQlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAltb2NrX2RldmljZV9mbHVz aChpOTE1KTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ ICAgCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkxNSk7Cj4gLQo+ICAgCW1vY2tfZmlu aV9nZ3R0KGdndHQpOwo+ICAgCWtmcmVlKGdndHQpOwo+ICAgb3V0X3B1dDoKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYwo+IGluZGV4IGQzYjVl YjQwMmQzMy4uMmE1ZmJlNDZlYTlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMKPiBAQCAtMTIsMzEgKzEyLDI1IEBACj4gICAKPiAg ICNpbmNsdWRlICJpZ3RfZmx1c2hfdGVzdC5oIgo+ICAgCj4gLWludCBpZ3RfZmx1c2hfdGVzdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICtpbnQg aWd0X2ZsdXNoX3Rlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gICAJ aW50IHJldCA9IGludGVsX2d0X2lzX3dlZGdlZCgmaTkxNS0+Z3QpID8gLUVJTyA6IDA7Cj4gLQlp bnQgcmVwZWF0ID0gISEoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKTsKPiAgIAo+ICAgCWNvbmRf cmVzY2hlZCgpOwo+ICAgCj4gLQlkbyB7Cj4gLQkJaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUo aTkxNSwgZmxhZ3MsIEhaIC8gNSkgPT0gLUVUSU1FKSB7Cj4gLQkJCXByX2VycigiJXBTIHRpbWVk IG91dCwgY2FuY2VsbGluZyBhbGwgZnVydGhlciB0ZXN0aW5nLlxuIiwKPiAtCQkJICAgICAgIF9f YnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7Cj4gKwlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1 KTsKCkRvIHlvdSBuZWVkIHRoaXMgb25lIG9yIGl0IHdvdWxkIGJlIGJldHRlciB3aXRob3V0LCBm b3IgY2xhcml0eSwgZ2l2ZW4gCnRoZXJlIGlzIG9uZSBhdCB0aGUgZW5kPyBpOTE1X2dlbV93YWl0 X2Zvcl9pZGxlIHdpbGwgcmV0aXJlIGFsbCBpdCBjYW4uCgo+ICsJaWYgKGk5MTVfZ2VtX3dhaXRf Zm9yX2lkbGUoaTkxNSwgMCwgSFogLyA1KSA9PSAtRVRJTUUpIHsKPiArCQlwcl9lcnIoIiVwUyB0 aW1lZCBvdXQsIGNhbmNlbGxpbmcgYWxsIGZ1cnRoZXIgdGVzdGluZy5cbiIsCj4gKwkJICAgICAg IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7Cj4gICAKPiAtCQkJR0VNX1RSQUNFKCIlcFMg dGltZWQgb3V0LlxuIiwKPiAtCQkJCSAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKPiAt CQkJR0VNX1RSQUNFX0RVTVAoKTsKPiArCQlHRU1fVFJBQ0UoIiVwUyB0aW1lZCBvdXQuXG4iLAo+ ICsJCQkgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7Cj4gKwkJR0VNX1RSQUNFX0RVTVAo KTsKPiAgIAo+IC0JCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKCZpOTE1LT5ndCk7Cj4gLQkJCXJlcGVh dCA9IDA7Cj4gLQkJCXJldCA9IC1FSU87Cj4gLQkJfQo+IC0KPiAtCQkvKiBFbnN1cmUgd2UgYWxz byBmbHVzaCBhZnRlciB3ZWRnaW5nLiAqLwo+IC0JCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NL RUQpCj4gLQkJCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+IC0JfSB3aGlsZSAocmVwZWF0 LS0pOwo+ICsJCWludGVsX2d0X3NldF93ZWRnZWQoJmk5MTUtPmd0KTsKPiArCQlyZXQgPSAtRUlP Owo+ICsJfQo+ICsJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gICAKPiAgIAlyZXR1cm4g cmV0Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aWd0X2ZsdXNoX3Rlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1 c2hfdGVzdC5oCj4gaW5kZXggNjNlMDA5OTI3YzQzLi43NTQxZmE3NGU2NDEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuaAo+IEBAIC05 LDYgKzksNiBAQAo+ICAgCj4gICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAgIAo+IC1pbnQg aWd0X2ZsdXNoX3Rlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGlu dCBmbGFncyk7Cj4gK2ludCBpZ3RfZmx1c2hfdGVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7Cj4gICAKPiAgICNlbmRpZiAvKiBJR1RfRkxVU0hfVEVTVF9IICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbGl2ZV90ZXN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jCj4gaW5kZXggM2U5MDI3 NjFjZDE2Li4wNGE2Zjg4ZmRmNjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pZ3RfbGl2ZV90ZXN0LmMKPiBAQCAtMTksMTUgKzE5LDEyIEBAIGludCBpZ3RfbGl2 ZV90ZXN0X2JlZ2luKHN0cnVjdCBpZ3RfbGl2ZV90ZXN0ICp0LAo+ICAgCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwo+ICAgCWludCBlcnI7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAl0LT5pOTE1ID0gaTkxNTsKPiAgIAl0LT5m dW5jID0gZnVuYzsKPiAgIAl0LT5uYW1lID0gbmFtZTsKPiAgIAo+ICAgCWVyciA9IGk5MTVfZ2Vt X3dhaXRfZm9yX2lkbGUoaTkxNSwKPiAtCQkJCSAgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUg fAo+IC0JCQkJICAgICBJOTE1X1dBSVRfTE9DS0VELAo+ICsJCQkJICAgICBJOTE1X1dBSVRfSU5U RVJSVVBUSUJMRSwKPiAgIAkJCQkgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAgIAlpZiAo ZXJyKSB7Cj4gICAJCXByX2VycigiJXMoJXMpOiBmYWlsZWQgdG8gaWRsZSBiZWZvcmUsIHdpdGgg ZXJyPSVkISIsCj4gQEAgLTUwLDkgKzQ3LDcgQEAgaW50IGlndF9saXZlX3Rlc3RfZW5kKHN0cnVj dCBpZ3RfbGl2ZV90ZXN0ICp0KQo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK PiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+IC0JaWYgKGlndF9mbHVzaF90ZXN0KGk5 MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUpKQo+ICAg CQlyZXR1cm4gLUVJTzsKPiAgIAo+ICAgCWlmICh0LT5yZXNldF9nbG9iYWwgIT0gaTkxNV9yZXNl dF9jb3VudCgmaTkxNS0+Z3B1X2Vycm9yKSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCAwMWE4OWMwNzFiZjUuLjE5NTYw MDZhMGQ1YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19nZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19nZW1fZGV2aWNlLmMKPiBAQCAtNDEsOCArNDEsNiBAQCB2b2lkIG1vY2tfZGV2aWNlX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAo+IC0JbG9ja2Rl cF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWRvIHsKPiAg IAkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpCj4gICAJCQltb2NrX2VuZ2luZV9m bHVzaChlbmdpbmUpOwo+IEBAIC01NSw5ICs1Myw3IEBAIHN0YXRpYyB2b2lkIG1vY2tfZGV2aWNl X3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gICAKPiAtCW11dGV4 X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCW1vY2tfZGV2aWNlX2ZsdXNoKGk5 MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAg CWZsdXNoX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwo+ICAgCWk5MTVfZ2VtX2RyYWluX3dv cmtxdWV1ZShpOTE1KTsKPiAKCkVzc2VudGlhbGx5IGxvb2tzIGZpbmUuIFByb3Zpc2lvbmFsLCBt ZWFuaW5nIGtlZXAgaXQgaWYgeW91IGRvIHNvbWUgCnNtYWxsIHR3ZWFrczoKClJldmlld2VkLWJ5 OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2 cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=