Return-path: Received: from mail-ew0-f208.google.com ([209.85.219.208]:33845 "EHLO mail-ew0-f208.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755850AbZJNTF0 (ORCPT ); Wed, 14 Oct 2009 15:05:26 -0400 Received: by ewy4 with SMTP id 4so93681ewy.37 for ; Wed, 14 Oct 2009 12:04:48 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <1255079985-17282-1-git-send-email-yi.zhu@intel.com> References: <1255079985-17282-1-git-send-email-yi.zhu@intel.com> Date: Wed, 14 Oct 2009 21:04:47 +0200 Message-ID: <2d0a357f0910141204o9adc257w7744e47b47b1cace@mail.gmail.com> Subject: Re: [PATCH V3] iwlwifi: use paged Rx From: Sedat Dilek To: Zhu Yi Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org Content-Type: multipart/mixed; boundary=001636c5bd032f93be0475e9d6c3 Sender: linux-wireless-owner@vger.kernel.org List-ID: --001636c5bd032f93be0475e9d6c3 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 SGksCgp5b3UgYXJlIHVzaW5nIGllZWU4MDIxMV9yeCgpIGluCiogZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9pd2wtMzk0NS5jCiogZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wt cnguYwpmaWxlcy4KS2FsbGUgcG9zdGVkICJtYWM4MDIxMTogYWRkIGllZWU4MDIxMV9yeF9uaSgp IiBwYXRjaCBbMV0gYW5kIEkgYXBwbGllZApvbiB0b3Agb2YgbWFzdGVyIDIwMDktMTAtMTMuCnds MTI1MSBkcml2ZXIgdXNlcyBpZWVlODAyMTFfcnhfbmkoKSBbMl0uCk15IHF1ZXN0aW9uOgpJcyBp d2xhZ24vaXdsMzk0NSB1c2luZyB3b3JrcXVldWVzIC0gbWVhbnMgc2hhbGwvY2FuIGl0IHVzZQpp ZWVlODAyMTFfcnhfbmkoKSBpbnN0ZWFkPwpPdXQgb2YgY3VyaW9zaXR5LCBJIHN1YnN0aXR1dGVk IGllZWU4MDIxMV9yeCgpIGJ5IGllZWU4MDIxMV9yeF9uaSgpCmFuZCBpdCBzZWVtcyB0byB3b3Jr LgooUGF0Y2ggYXR0YWNoZWQpLgoKS2luZCBSZWdhcmRzLAotIFNlZGF0IC0KClsxXSBodHRwOi8v cGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvNTM0NjYvClsyXSBodHRwOi8vcGF0Y2h3b3JrLmtl cm5lbC5vcmcvcGF0Y2gvNTM0NjUvCgpPbiBGcmksIE9jdCA5LCAyMDA5IGF0IDExOjE5IEFNLCBa aHUgWWkgPHlpLnpodUBpbnRlbC5jb20+IHdyb3RlOgo+IFRoaXMgc3dpdGNoZXMgdGhlIGl3bHdp ZmkgZHJpdmVyIHRvIHVzZSBwYWdlZCBza2IgZnJvbSBsaW5lYXIgc2tiIGZvciBSeAo+IGJ1ZmZl ci4gU28gdGhhdCBpdCByZWxpZXZlcyBzb21lIFJ4IGJ1ZmZlciBhbGxvY2F0aW9uIHByZXNzdXJl IGZvciB0aGUKPiBtZW1vcnkgc3Vic3lzdGVtLiBDdXJyZW50bHkgaXdsd2lmaSAoNEsgZm9yIDM5 NDUpIHJlcXVlc3RzIDhLIGJ5dGVzIGZvcgo+IFJ4IGJ1ZmZlci4gRHVlIHRvIHRoZSB0cmFpbGlu ZyBza2Jfc2hhcmVkX2luZm8gaW4gdGhlIHNrYi0+ZGF0YSwKPiBhbGxvY19za2IoKSB3aWxsIGRv IHRoZSBuZXh0IG9yZGVyIGFsbG9jYXRpb24sIHdoaWNoIGlzIDE2SyBieXRlcy4gVGhpcwo+IGlz IHN1Ym9wdGltYWwgYW5kIG1vcmUgbGlrZWx5IHRvIGZhaWwgd2hlbiB0aGUgc3lzdGVtIGlzIHVu ZGVyIG1lbW9yeQo+IHVzYWdlIHByZXNzdXJlLiBTd2l0Y2hpbmcgdG8gcGFnZWQgUnggc2tiIGxl dHMgdXMgYWxsb2NhdGUgdGhlIFJYQgo+IGRpcmVjdGx5IGJ5IGFsbG9jX3BhZ2VzKCksIHNvIHRo YXQgb25seSBvcmRlciAxIGFsbG9jYXRpb24gaXMgcmVxdWlyZWQuCj4KPiBJdCBhbHNvIGFkanVz dHMgdGhlIGFyZWEgc3Bpbl9sb2NrICh3aXRoIElSUSBkaXNhYmxlZCkgcHJvdGVjdGVkIGluIHRo ZQo+IHRhc2tsZXQgYmVjYXVzZSB0YXNrbGV0IGd1YXJlbnRlZXMgdG8gcnVuIG9ubHkgb24gb25l IENQVSBhbmQgdGhlIG5ldwo+IHVucHJvdGVjdGVkIGNvZGUgY2FuIGJlIHByZWVtcHRlZCBieSB0 aGUgSVJRIGhhbmRsZXIuIFRoaXMgc2F2ZXMgdXMgZnJvbQo+IHNwYXduaW5nIGFub3RoZXIgd29y a3F1ZXVlIHRvIG1ha2Ugc2tiX2xpbmVhcml6ZS9fX3Bza2JfcHVsbF90YWlsIGhhcHB5Cj4gKHdo aWNoIGNhbm5vdCBiZSBjYWxsZWQgaW4gaGFyZCBpcnEgY29udGV4dCkuCj4KPiBGaW5hbGx5LCBt YWM4MDIxMSBkb2Vzbid0IHN1cHBvcnQgcGFnZWQgUnggeWV0LiBTbyB3ZSBsaW5lYXJpemUgdGhl IHNrYgo+IGZvciBhbGwgdGhlIG1hbmFnZW1lbnQgZnJhbWVzIGFuZCBzb2Z0d2FyZSBkZWNyeXB0 aW9uIG9yIGRlZnJhZ21lbnRhdGlvbgo+IHJlcXVpcmVkIGRhdGEgZnJhbWVzIGJlZm9yZSBoYW5k ZWQgdG8gbWFjODAyMTEuIEZvciBhbGwgdGhlIG90aGVyIGZyYW1lcywKPiB3ZSBfX3Bza2JfcHVs bF90YWlsIDY0IGJ5dGVzIGluIHRoZSBsaW5lYXIgYXJlYSBvZiB0aGUgc2tiIGZvciBtYWM4MDIx MQo+IHRvIGhhbmRsZSB0aGVtIHByb3Blcmx5Lgo+Cj4gU2lnbmVkLW9mZi1ieTogWmh1IFlpIDx5 aS56aHVAaW50ZWwuY29tPgo+IC0tLQo+IFYyOiBmaXggMzk0NSBwcm9ibGVtIGFuZCBsaW5lYXJp emUgc2tiIGZvciBmcmFnZW1lbnRlZCBmcmFtZXMKPiBWMzogZml4IGEgMzk0NSBwY2lfdW5tYXBf cGFnZSBidWcKPgo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtMzk0NS5jIMKg IMKgIHwgwqAgNjcgKysrKysrKysrKy0tLS0tCj4gwqBkcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3 aWZpL2l3bC00OTY1LmMgwqAgwqAgfCDCoCDCoDIgKy0KPiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNz L2l3bHdpZmkvaXdsLTUwMDAuYyDCoCDCoCB8IMKgIMKgNCArLQo+IMKgZHJpdmVycy9uZXQvd2ly ZWxlc3MvaXdsd2lmaS9pd2wtYWduLmMgwqAgwqAgwqB8IMKgIDQyICsrKystLS0tLQo+IMKgZHJp dmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29tbWFuZHMuaCB8IMKgIDEwICsrCj4gwqBk cml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1jb3JlLmMgwqAgwqAgfCDCoCAxMyArKy0t Cj4gwqBkcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1jb3JlLmggwqAgwqAgfCDCoCDC oDIgKy0KPiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWRldi5oIMKgIMKgIMKg fCDCoCAyNyArKysrLS0KPiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWhjbWQu YyDCoCDCoCB8IMKgIDIxICsrLS0tLQo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9p d2wtcnguYyDCoCDCoCDCoCB8IMKgMTIyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+IMKg ZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc2Nhbi5jIMKgIMKgIHwgwqAgMjAgKyst LQo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc3BlY3RydW0uYyB8IMKgIMKg MiArLQo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc3RhLmMgwqAgwqAgwqB8 IMKgIDYyICsrKysrLS0tLS0tLS0KPiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXds LXR4LmMgwqAgwqAgwqAgfCDCoCAxMCArLQo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lm aS9pd2wzOTQ1LWJhc2UuYyB8IMKgMTIwICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gwqAx NSBmaWxlcyBjaGFuZ2VkLCAyODQgaW5zZXJ0aW9ucygrKSwgMjQwIGRlbGV0aW9ucygtKQo+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLTM5NDUuYyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLTM5NDUuYwo+IGluZGV4IDgwMTIzODEuLmIx ODhhMDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtMzk0 NS5jCj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtMzk0NS5jCj4gQEAg LTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X3R4X3F1ZXVlX3JlY2xhaW0oc3Ry dWN0IGl3bF9wcml2ICpwcml2LAo+IMKgc3RhdGljIHZvaWQgaXdsMzk0NV9yeF9yZXBseV90eChz dHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKgIMKg IHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAodm9pZCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsg wqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAg wqAgwqAgwqB1MTYgc2VxdWVuY2UgPSBsZTE2X3RvX2NwdShwa3QtPmhkci5zZXF1ZW5jZSk7Cj4g wqAgwqAgwqAgwqBpbnQgdHhxX2lkID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTsKPiDCoCDCoCDC oCDCoGludCBpbmRleCA9IFNFUV9UT19JTkRFWChzZXF1ZW5jZSk7Cj4gQEAgLTM1Myw3ICszNTMs NyBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X3J4X3JlcGx5X3R4KHN0cnVjdCBpd2xfcHJpdiAqcHJp diwKPiDCoHZvaWQgaXdsMzk0NV9od19yeF9zdGF0aXN0aWNzKHN0cnVjdCBpd2xfcHJpdiAqcHJp diwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhi KQo+IMKgewo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9ICh2b2lkICop cnhiLT5za2ItPmRhdGE7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0g cnhiX2FkZHIocnhiKTsKPiDCoCDCoCDCoCDCoElXTF9ERUJVR19SWChwcml2LCAiU3RhdGlzdGlj cyBub3RpZmljYXRpb24gcmVjZWl2ZWQgKCVkIHZzICVkKS5cbiIsCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgKGludClzaXplb2Yoc3RydWN0IGl3bDM5NDVfbm90aWZfc3RhdGlzdGlj cyksCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGUzMl90b19jcHUocGt0LT5sZW5f bl9mbGFncykgJiBGSF9SU0NTUl9GUkFNRV9TSVpFX01TSyk7Cj4gQEAgLTU0MywxNCArNTQzLDE3 IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcGFzc19wYWNrZXRfdG9fbWFjODAyMTEoc3RydWN0IGl3 bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiLAo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBpZWVlODAyMTFfcnhf c3RhdHVzICpzdGF0cykKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpw a3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKg IHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKgIMKgIMKgIMKg c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKUlXTF9S WF9EQVRBKHBrdCk7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsMzk0NV9yeF9mcmFtZV9oZHIgKnJ4 X2hkciA9IElXTF9SWF9IRFIocGt0KTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2wzOTQ1X3J4X2Zy YW1lX2VuZCAqcnhfZW5kID0gSVdMX1JYX0VORChwa3QpOwo+IC0gwqAgwqAgwqAgc2hvcnQgbGVu ID0gbGUxNl90b19jcHUocnhfaGRyLT5sZW4pOwo+ICsgwqAgwqAgwqAgdTE2IGxlbiA9IGxlMTZf dG9fY3B1KHJ4X2hkci0+bGVuKTsKPiArIMKgIMKgIMKgIHN0cnVjdCBza19idWZmICpza2I7Cj4g KyDCoCDCoCDCoCBpbnQgcmV0Owo+Cj4gwqAgwqAgwqAgwqAvKiBXZSByZWNlaXZlZCBkYXRhIGZy b20gdGhlIEhXLCBzbyBzdG9wIHRoZSB3YXRjaGRvZyAqLwo+IC0gwqAgwqAgwqAgaWYgKHVubGlr ZWx5KChsZW4gKyBJV0wzOV9SWF9GUkFNRV9TSVpFKSA+IHNrYl90YWlscm9vbShyeGItPnNrYikp KSB7Cj4gKyDCoCDCoCDCoCBpZiAodW5saWtlbHkobGVuICsgSVdMMzlfUlhfRlJBTUVfU0laRSA+ Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFBBR0VfU0laRSA8PCBwcml2LT5od19w YXJhbXMucnhfcGFnZV9vcmRlcikpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElXTF9ERUJV R19EUk9QKHByaXYsICJDb3JydXB0aW9uIGRldGVjdGVkIVxuIik7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqByZXR1cm47Cj4gwqAgwqAgwqAgwqB9Cj4gQEAgLTU2MiwyMCArNTY1LDQ1IEBAIHN0 YXRpYyB2b2lkIGl3bDM5NDVfcGFzc19wYWNrZXRfdG9fbWFjODAyMTEoc3RydWN0IGl3bF9wcml2 ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuOwo+IMKgIMKgIMKgIMKgfQo+ Cj4gLSDCoCDCoCDCoCBza2JfcmVzZXJ2ZShyeGItPnNrYiwgKHZvaWQgKilyeF9oZHItPnBheWxv YWQgLSAodm9pZCAqKXBrdCk7Cj4gLSDCoCDCoCDCoCAvKiBTZXQgdGhlIHNpemUgb2YgdGhlIHNr YiB0byB0aGUgc2l6ZSBvZiB0aGUgZnJhbWUgKi8KPiAtIMKgIMKgIMKgIHNrYl9wdXQocnhiLT5z a2IsIGxlMTZfdG9fY3B1KHJ4X2hkci0+bGVuKSk7Cj4gKyDCoCDCoCDCoCBza2IgPSBhbGxvY19z a2IoSVdMX0xJTktfSERSX01BWCwgR0ZQX0FUT01JQyk7Cj4gKyDCoCDCoCDCoCBpZiAoIXNrYikg ewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVdMX0VSUihwcml2LCAiYWxsb2Nfc2tiIGZhaWxl ZFxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47Cj4gKyDCoCDCoCDCoCB9Cj4K PiDCoCDCoCDCoCDCoGlmICghaXdsMzk0NV9tb2RfcGFyYW1zLnN3X2NyeXB0bykKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGl3bF9zZXRfZGVjcnlwdGVkX2ZsYWcocHJpdiwKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHN0cnVjdCBp ZWVlODAyMTFfaGRyICopcnhiLT5za2ItPmRhdGEsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChzdHJ1Y3QgaWVlZTgwMjExX2hkciAq KXJ4Yl9hZGRyKHJ4YiksCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgbGUzMl90b19jcHUocnhfZW5kLT5zdGF0dXMpLCBzdGF0cyk7Cj4K PiArIMKgIMKgIMKgIHNrYl9hZGRfcnhfZnJhZyhza2IsIDAsIHJ4Yi0+cGFnZSwKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh2b2lkICopcnhfaGRyLT5wYXlsb2FkIC0gKHZv aWQgKilwa3QsIGxlbik7Cj4gKwo+ICsgwqAgwqAgwqAgLyogbWFjODAyMTEgY3VycmVudGx5IGRv ZXNuJ3Qgc3VwcG9ydCBwYWdlZCBTS0IuIENvbnZlcnQgaXQgdG8KPiArIMKgIMKgIMKgIMKgKiBs aW5lYXIgU0tCIGZvciBtYW5hZ2VtZW50IGZyYW1lIGFuZCBkYXRhIGZyYW1lIHJlcXVpcmVzCj4g KyDCoCDCoCDCoCDCoCogc29mdHdhcmUgZGVjcnlwdGlvbiBvciBzb2Z0d2FyZSBkZWZyYWdlbWVu dGF0aW9uLiAqLwo+ICsgwqAgwqAgwqAgaWYgKGllZWU4MDIxMV9pc19tZ210KGhkci0+ZnJhbWVf Y29udHJvbCkgfHwKPiArIMKgIMKgIMKgIMKgIMKgIGllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhk ci0+ZnJhbWVfY29udHJvbCkgfHwKPiArIMKgIMKgIMKgIMKgIMKgIGllZWU4MDIxMV9oYXNfbW9y ZWZyYWdzKGhkci0+ZnJhbWVfY29udHJvbCkgfHwKPiArIMKgIMKgIMKgIMKgIMKgIGxlMTZfdG9f Y3B1KGhkci0+c2VxX2N0cmwpICYgSUVFRTgwMjExX1NDVExfRlJBRykKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHJldCA9IHNrYl9saW5lYXJpemUoc2tiKTsKPiArIMKgIMKgIMKgIGVsc2UKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldCA9IF9fcHNrYl9wdWxsX3RhaWwoc2tiLCBtaW5fdCh1 MTYsIElXTF9MSU5LX0hEUl9NQVgsIGxlbikpID8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIDAgOiAtRU5PTUVNOwo+ICsKPiArIMKgIMKgIMKgIGlmIChyZXQpIHsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGtmcmVlX3NrYihza2IpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZ290byBvdXQ7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+IMKgIMKgIMKgIMKgaXdsX3VwZGF0ZV9z dGF0cyhwcml2LCBmYWxzZSwgaGRyLT5mcmFtZV9jb250cm9sLCBsZW4pOwo+Cj4gLSDCoCDCoCDC oCBtZW1jcHkoSUVFRTgwMjExX1NLQl9SWENCKHJ4Yi0+c2tiKSwgc3RhdHMsIHNpemVvZigqc3Rh dHMpKTsKPiAtIMKgIMKgIMKgIGllZWU4MDIxMV9yeF9pcnFzYWZlKHByaXYtPmh3LCByeGItPnNr Yik7Cj4gLSDCoCDCoCDCoCByeGItPnNrYiA9IE5VTEw7Cj4gKyDCoCDCoCDCoCBtZW1jcHkoSUVF RTgwMjExX1NLQl9SWENCKHNrYiksIHN0YXRzLCBzaXplb2YoKnN0YXRzKSk7Cj4gKyDCoCDCoCDC oCBpZWVlODAyMTFfcngocHJpdi0+aHcsIHNrYik7Cj4gKwo+ICsgb3V0Ogo+ICsgwqAgwqAgwqAg cHJpdi0+YWxsb2NfcnhiX3BhZ2UtLTsKPiArIMKgIMKgIMKgIHJ4Yi0+cGFnZSA9IE5VTEw7Cj4g wqB9Cj4KPiDCoCNkZWZpbmUgSVdMX0RFTEFZX05FWFRfU0NBTl9BRlRFUl9BU1NPQyAoSFoqNikK PiBAQCAtNTg1LDcgKzYxMyw3IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhfcmVwbHlfcngoc3Ry dWN0IGl3bF9wcml2ICpwcml2LAo+IMKgewo+IMKgIMKgIMKgIMKgc3RydWN0IGllZWU4MDIxMV9o ZHIgKmhlYWRlcjsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzIHJ4X3N0 YXR1czsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAodm9pZCAqKXJ4 Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4 Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsMzk0NV9yeF9mcmFtZV9zdGF0cyAq cnhfc3RhdHMgPSBJV0xfUlhfU1RBVFMocGt0KTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2wzOTQ1 X3J4X2ZyYW1lX2hkciAqcnhfaGRyID0gSVdMX1JYX0hEUihwa3QpOwo+IMKgIMKgIMKgIMKgc3Ry dWN0IGl3bDM5NDVfcnhfZnJhbWVfZW5kICpyeF9lbmQgPSBJV0xfUlhfRU5EKHBrdCk7Cj4gQEAg LTE4MTEsNyArMTgzOSw3IEBAIGludCBpd2wzOTQ1X2h3X3JlZ19zZXRfdHhwb3dlcihzdHJ1Y3Qg aXdsX3ByaXYgKnByaXYsIHM4IHBvd2VyKQo+IMKgc3RhdGljIGludCBpd2wzOTQ1X3NlbmRfcnhv bl9hc3NvYyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpCj4gwqB7Cj4gwqAgwqAgwqAgwqBpbnQgcmMg PSAwOwo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnJlcyA9IE5VTEw7Cj4gKyDC oCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0Owo+IMKgIMKgIMKgIMKgc3RydWN0IGl3 bDM5NDVfcnhvbl9hc3NvY19jbWQgcnhvbl9hc3NvYzsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xf aG9zdF9jbWQgY21kID0gewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLmlkID0gUkVQTFlfUlhP Tl9BU1NPQywKPiBAQCAtMTg0MCwxNCArMTg2OCwxNCBAQCBzdGF0aWMgaW50IGl3bDM5NDVfc2Vu ZF9yeG9uX2Fzc29jKHN0cnVjdCBpd2xfcHJpdiAqcHJpdikKPiDCoCDCoCDCoCDCoGlmIChyYykK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiByYzsKPgo+IC0gwqAgwqAgwqAgcmVzID0g KHN0cnVjdCBpd2xfcnhfcGFja2V0ICopY21kLnJlcGx5X3NrYi0+ZGF0YTsKPiAtIMKgIMKgIMKg IGlmIChyZXMtPmhkci5mbGFncyAmIElXTF9DTURfRkFJTEVEX01TSykgewo+ICsgwqAgwqAgwqAg cGt0ID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0ICopY21kLnJlcGx5X3BhZ2U7Cj4gKyDCoCDCoCDC oCBpZiAocGt0LT5oZHIuZmxhZ3MgJiBJV0xfQ01EX0ZBSUxFRF9NU0spIHsKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoElXTF9FUlIocHJpdiwgIkJhZCByZXR1cm4gZnJvbSBSRVBMWV9SWE9OX0FT U09DIGNvbW1hbmRcbiIpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmMgPSAtRUlPOwo+IMKg IMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDCoCBwcml2LT5hbGxvY19yeGJfc2tiLS07Cj4gLSDCoCDC oCDCoCBkZXZfa2ZyZWVfc2tiX2FueShjbWQucmVwbHlfc2tiKTsKPiArIMKgIMKgIMKgIHByaXYt PmFsbG9jX3J4Yl9wYWdlLS07Cj4gKyDCoCDCoCDCoCBmcmVlX3BhZ2VzKGNtZC5yZXBseV9wYWdl LCBwcml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlcik7Cj4KPiDCoCDCoCDCoCDCoHJldHVybiBy YzsKPiDCoH0KPiBAQCAtMjUxMyw4ICsyNTQxLDcgQEAgaW50IGl3bDM5NDVfaHdfc2V0X2h3X3Bh cmFtcyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpCj4gwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMu bWF4X3R4cV9udW0gPSBwcml2LT5jZmctPm51bV9vZl9xdWV1ZXM7Cj4KPiDCoCDCoCDCoCDCoHBy aXYtPmh3X3BhcmFtcy50ZmRfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXdsMzk0NV90ZmQpOwo+IC0g wqAgwqAgwqAgcHJpdi0+aHdfcGFyYW1zLnJ4X2J1Zl9zaXplID0gSVdMX1JYX0JVRl9TSVpFXzNL Owo+IC0gwqAgwqAgwqAgcHJpdi0+aHdfcGFyYW1zLm1heF9wa3Rfc2l6ZSA9IDIzNDI7Cj4gKyDC oCDCoCDCoCBwcml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlciA9IGdldF9vcmRlcihJV0xfUlhf QlVGX1NJWkVfM0spOwo+IMKgIMKgIMKgIMKgcHJpdi0+aHdfcGFyYW1zLm1heF9yeHFfc2l6ZSA9 IFJYX1FVRVVFX1NJWkU7Cj4gwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMubWF4X3J4cV9sb2cg PSBSWF9RVUVVRV9TSVpFX0xPRzsKPiDCoCDCoCDCoCDCoHByaXYtPmh3X3BhcmFtcy5tYXhfc3Rh dGlvbnMgPSBJV0wzOTQ1X1NUQVRJT05fQ09VTlQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2l3bHdpZmkvaXdsLTQ5NjUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdp ZmkvaXdsLTQ5NjUuYwo+IGluZGV4IDZkNzcwMzkuLjFhNjIyYWEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtNDk2NS5jCj4gKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvaXdsd2lmaS9pd2wtNDk2NS5jCj4gQEAgLTE5OTksNyArMTk5OSw3IEBAIHN0YXRp YyBpbnQgaXdsNDk2NV90eF9zdGF0dXNfcmVwbHlfdHgoc3RydWN0IGl3bF9wcml2ICpwcml2LAo+ IMKgc3RhdGljIHZvaWQgaXdsNDk2NV9yeF9yZXBseV90eChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYs Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3Qg aXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhf cGFja2V0ICpwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsKPiAr IMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKg IMKgIMKgIMKgdTE2IHNlcXVlbmNlID0gbGUxNl90b19jcHUocGt0LT5oZHIuc2VxdWVuY2UpOwo+ IMKgIMKgIMKgIMKgaW50IHR4cV9pZCA9IFNFUV9UT19RVUVVRShzZXF1ZW5jZSk7Cj4gwqAgwqAg wqAgwqBpbnQgaW5kZXggPSBTRVFfVE9fSU5ERVgoc2VxdWVuY2UpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC01MDAwLmMgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9pd2x3aWZpL2l3bC01MDAwLmMKPiBpbmRleCBhYjViOWQ4Li4xNzU1NWM3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLTUwMDAuYwo+ICsrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLTUwMDAuYwo+IEBAIC00MjMsNyArNDIzLDcg QEAgc3RhdGljIGludCBpd2w1MDAwX3NlbmRfY2FsaWJfY2ZnKHN0cnVjdCBpd2xfcHJpdiAqcHJp dikKPiDCoHN0YXRpYyB2b2lkIGl3bDUwMDBfcnhfY2FsaWJfcmVzdWx0KHN0cnVjdCBpd2xfcHJp diAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1 Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xf cnhfcGFja2V0ICpwa3QgPSAodm9pZCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3Ry dWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1 Y3QgaXdsX2NhbGliX2hkciAqaGRyID0gKHN0cnVjdCBpd2xfY2FsaWJfaGRyICopcGt0LT51LnJh dzsKPiDCoCDCoCDCoCDCoGludCBsZW4gPSBsZTMyX3RvX2NwdShwa3QtPmxlbl9uX2ZsYWdzKSAm IEZIX1JTQ1NSX0ZSQU1FX1NJWkVfTVNLOwo+IMKgIMKgIMKgIMKgaW50IGluZGV4Owo+IEBAIC0x MTQzLDcgKzExNDMsNyBAQCBzdGF0aWMgaW50IGl3bDUwMDBfdHhfc3RhdHVzX3JlcGx5X3R4KHN0 cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoHN0YXRpYyB2b2lkIGl3bDUwMDBfcnhfcmVwbHlfdHgo c3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIpCj4gwqB7Cj4gLSDC oCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0 ICopcnhiLT5za2ItPmRhdGE7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0 ID0gcnhiX2FkZHIocnhiKTsKPiDCoCDCoCDCoCDCoHUxNiBzZXF1ZW5jZSA9IGxlMTZfdG9fY3B1 KHBrdC0+aGRyLnNlcXVlbmNlKTsKPiDCoCDCoCDCoCDCoGludCB0eHFfaWQgPSBTRVFfVE9fUVVF VUUoc2VxdWVuY2UpOwo+IMKgIMKgIMKgIMKgaW50IGluZGV4ID0gU0VRX1RPX0lOREVYKHNlcXVl bmNlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtYWdu LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24uYwo+IGluZGV4IDA4Nzhi MzQuLmZjN2E1MTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9p d2wtYWduLmMKPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24uYwo+ IEBAIC01MjQsNyArNTI0LDcgQEAgaW50IGl3bF9od190eF9xdWV1ZV9pbml0KHN0cnVjdCBpd2xf cHJpdiAqcHJpdiwKPiDCoHN0YXRpYyB2b2lkIGl3bF9yeF9yZXBseV9hbGl2ZShzdHJ1Y3QgaXds X3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKgIMKgIHN0 cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNr Yi0+ZGF0YTsKPiArIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRk cihyeGIpOwo+IMKgIMKgIMKgIMKgc3RydWN0IGl3bF9hbGl2ZV9yZXNwICpwYWxpdmU7Cj4gwqAg wqAgwqAgwqBzdHJ1Y3QgZGVsYXllZF93b3JrICpwd29yazsKPgo+IEBAIC02MTAsNyArNjEwLDcg QEAgc3RhdGljIHZvaWQgaXdsX3J4X2JlYWNvbl9ub3RpZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYs Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3Qg aXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiDCoCNpZmRlZiBDT05GSUdfSVdMV0lGSV9E RUJVRwo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IChzdHJ1Y3QgaXds X3J4X3BhY2tldCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9w YWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsNDk2NV9i ZWFjb25fbm90aWYgKmJlYWNvbiA9Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoc3RydWN0IGl3 bDQ5NjVfYmVhY29uX25vdGlmICopcGt0LT51LnJhdzsKPiDCoCDCoCDCoCDCoHU4IHJhdGUgPSBp d2xfaHdfZ2V0X3JhdGUoYmVhY29uLT5iZWFjb25fbm90aWZ5X2hkci5yYXRlX25fZmxhZ3MpOwo+ IEBAIC02MzQsNyArNjM0LDcgQEAgc3RhdGljIHZvaWQgaXdsX3J4X2JlYWNvbl9ub3RpZihzdHJ1 Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqBzdGF0aWMgdm9pZCBpd2xfcnhfY2FyZF9zdGF0ZV9ub3Rp ZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDC oHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAoc3RydWN0IGl3bF9y eF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFj a2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKgIMKgIMKgIMKgdTMyIGZsYWdzID0gbGUzMl90 b19jcHUocGt0LT51LmNhcmRfc3RhdGVfbm90aWYuZmxhZ3MpOwo+IMKgIMKgIMKgIMKgdW5zaWdu ZWQgbG9uZyBzdGF0dXMgPSBwcml2LT5zdGF0dXM7Cj4KPiBAQCAtNzg2LDEwICs3ODYsMTAgQEAg dm9pZCBpd2xfcnhfaGFuZGxlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdikKPgo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgcnhxLT5xdWV1ZVtpXSA9IE5VTEw7Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHBjaV91bm1hcF9zaW5nbGUocHJpdi0+cGNpX2RldiwgcnhiLT5yZWFsX2RtYV9hZGRyLAo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBwcml2LT5o d19wYXJhbXMucnhfYnVmX3NpemUgKyAyNTYsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoFBDSV9ETUFfRlJPTURFVklDRSk7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCBwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBjaV91bm1hcF9wYWdlKHByaXYtPnBjaV9kZXYsIHJ4 Yi0+cGFnZV9kbWEsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFBBR0VfU0laRSA8PCBwcml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlciwKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgUENJX0RNQV9GUk9NREVWSUNF KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4KPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHRyYWNlX2l3bHdpZmlfZGV2X3J4KHByaXYsIHBrdCwKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGxlMzJfdG9fY3B1KHBrdC0+bGVuX25fZmxh Z3MpICYgRkhfUlNDU1JfRlJBTUVfU0laRV9NU0spOwo+IEBAIC04MjUsMTAgKzgyNSwxMCBAQCB2 b2lkIGl3bF9yeF9oYW5kbGUoc3RydWN0IGl3bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgfQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAocmVjbGFpbSkgewo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogSW52b2tlIGFueSBjYWxsYmFja3Ms IHRyYW5zZmVyIHRoZSBza2IgdG8gY2FsbGVyLCBhbmQKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgKiBmaXJlIG9mZiB0aGUgKHBvc3NpYmx5KSBibG9ja2luZyBpd2xfc2Vu ZF9jbWQoKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogSW52b2tlIGFu eSBjYWxsYmFja3MsIHRyYW5zZmVyIHRoZSBidWZmZXIgdG8gY2FsbGVyLAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIGFuZCBmaXJlIG9mZiB0aGUgKHBvc3NpYmx5KSBi bG9ja2luZyBpd2xfc2VuZF9jbWQoKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgICogYXMgd2UgcmVjbGFpbSB0aGUgZHJpdmVyIGNvbW1hbmQgcXVldWUgKi8KPiAtIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChyeGIgJiYgcnhiLT5za2IpCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocnhiICYmIHJ4Yi0+cGFnZSkKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGl3bF90eF9jbWRfY29t cGxldGUocHJpdiwgcnhiKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVs c2UKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElXTF9X QVJOKHByaXYsICJDbGFpbSBudWxsIHJ4Yj9cbiIpOwo+IEBAIC04MzcsMTAgKzgzNywxMCBAQCB2 b2lkIGl3bF9yeF9oYW5kbGUoc3RydWN0IGl3bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgLyogRm9yIG5vdyB3ZSBqdXN0IGRvbid0IHJlLXVzZSBhbnl0aGluZy4gwqBXZSBj YW4gdHdlYWsgdGhpcwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogbGF0ZXIgdG8gdHJ5IGFu ZCByZS11c2Ugbm90aWZpY2F0aW9uIHBhY2tldHMgYW5kIFNLQnMgdGhhdAo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICogZmFpbCB0byBSeCBjb3JyZWN0bHkgKi8KPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGlmIChyeGItPnNrYiAhPSBOVUxMKSB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBwcml2LT5hbGxvY19yeGJfc2tiLS07Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBkZXZfa2ZyZWVfc2tiX2FueShyeGItPnNrYik7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnNrYiA9IE5VTEw7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAocnhiLT5wYWdlICE9IE5VTEwpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHByaXYtPmFsbG9jX3J4Yl9wYWdlLS07Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBfX2ZyZWVfcGFnZXMocnhiLT5wYWdlLCBwcml2LT5od19wYXJhbXMu cnhfcGFnZV9vcmRlcik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGIt PnBhZ2UgPSBOVUxMOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBzcGluX2xvY2tfaXJxc2F2ZSgmcnhxLT5sb2NrLCBmbGFncyk7Cj4gQEAgLTkw Nyw2ICs5MDcsOCBAQCBzdGF0aWMgdm9pZCBpd2xfaXJxX3Rhc2tsZXRfbGVnYWN5KHN0cnVjdCBp d2xfcHJpdiAqcHJpdikKPiDCoCDCoCDCoCDCoH0KPiDCoCNlbmRpZgo+Cj4gKyDCoCDCoCDCoCBz cGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2NrLCBmbGFncyk7Cj4gKwo+IMKgIMKgIMKg IMKgLyogU2luY2UgQ1NSX0lOVCBhbmQgQ1NSX0ZIX0lOVF9TVEFUVVMgcmVhZHMgYW5kIGNsZWFy cyBhcmUgbm90Cj4gwqAgwqAgwqAgwqAgKiBhdG9taWMsIG1ha2Ugc3VyZSB0aGF0IGludGEgY292 ZXJzIGFsbCB0aGUgaW50ZXJydXB0cyB0aGF0Cj4gwqAgwqAgwqAgwqAgKiB3ZSd2ZSBkaXNjb3Zl cmVkLCBldmVuIGlmIEZIIGludGVycnVwdCBjYW1lIGluIGp1c3QgYWZ0ZXIKPiBAQCAtOTI4LDgg KzkzMCw2IEBAIHN0YXRpYyB2b2lkIGl3bF9pcnFfdGFza2xldF9sZWdhY3koc3RydWN0IGl3bF9w cml2ICpwcml2KQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBoYW5kbGVkIHw9IENTUl9JTlRf QklUX0hXX0VSUjsKPgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwo+IC0KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJl dHVybjsKPiDCoCDCoCDCoCDCoH0KPgo+IEBAIC0xMDU2LDcgKzEwNTYsNiBAQCBzdGF0aWMgdm9p ZCBpd2xfaXJxX3Rhc2tsZXRfbGVnYWN5KHN0cnVjdCBpd2xfcHJpdiAqcHJpdikKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJmbGFncyAweCUwOGx4XG4iLCBpbnRhLCBpbnRh X21hc2ssIGludGFfZmgsIGZsYWdzKTsKPiDCoCDCoCDCoCDCoH0KPiDCoCNlbmRpZgo+IC0gwqAg wqAgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwo+IMKgfQo+ Cj4gwqAvKiB0YXNrbGV0IGZvciBpd2xhZ24gaW50ZXJydXB0ICovCj4gQEAgLTEwODYsNiArMTA4 NSw5IEBAIHN0YXRpYyB2b2lkIGl3bF9pcnFfdGFza2xldChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYp Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnRhLCBp bnRhX21hc2spOwo+IMKgIMKgIMKgIMKgfQo+IMKgI2VuZGlmCj4gKwo+ICsgwqAgwqAgwqAgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwo+ICsKPiDCoCDCoCDCoCDC oC8qIHNhdmVkIGludGVycnVwdCBpbiBpbnRhIHZhcmlhYmxlIG5vdyB3ZSBjYW4gcmVzZXQgcHJp di0+aW50YSAqLwo+IMKgIMKgIMKgIMKgcHJpdi0+aW50YSA9IDA7Cj4KPiBAQCAtMTEwMSw4ICsx MTAzLDYgQEAgc3RhdGljIHZvaWQgaXdsX2lycV90YXNrbGV0KHN0cnVjdCBpd2xfcHJpdiAqcHJp dikKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaGFuZGxlZCB8PSBDU1JfSU5UX0JJVF9IV19F UlI7Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBy aXYtPmxvY2ssIGZsYWdzKTsKPiAtCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm47Cj4g wqAgwqAgwqAgwqB9Cj4KPiBAQCAtMTI0MiwxNCArMTI0MiwxMCBAQCBzdGF0aWMgdm9pZCBpd2xf aXJxX3Rhc2tsZXQoc3RydWN0IGl3bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGludGEgJiB+cHJpdi0+aW50YV9tYXNrKTsKPiDCoCDCoCDCoCDCoH0K Pgo+IC0KPiDCoCDCoCDCoCDCoC8qIFJlLWVuYWJsZSBhbGwgaW50ZXJydXB0cyAqLwo+IMKgIMKg IMKgIMKgLyogb25seSBSZS1lbmFibGUgaWYgZGlhYmxlZCBieSBpcnEgKi8KPiDCoCDCoCDCoCDC oGlmICh0ZXN0X2JpdChTVEFUVVNfSU5UX0VOQUJMRUQsICZwcml2LT5zdGF0dXMpKQo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgaXdsX2VuYWJsZV9pbnRlcnJ1cHRzKHByaXYpOwo+IC0KPiAtIMKg IMKgIMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKPiAtCj4g wqB9Cj4KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1j b21tYW5kcy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29tbWFuZHMuaAo+ IGluZGV4IGNjNGU5MTIuLjdkNGYxMzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9pd2wtY29tbWFuZHMuaAo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3 bHdpZmkvaXdsLWNvbW1hbmRzLmgKPiBAQCAtMzU0NCw2ICszNTQ0LDE2IEBAIHN0cnVjdCBpd2xf d2ltYXhfY29leF9jbWQgewo+IMKgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4KPiDCoHN0cnVjdCBp d2xfcnhfcGFja2V0IHsKPiArIMKgIMKgIMKgIC8qCj4gKyDCoCDCoCDCoCDCoCogVGhlIGZpcnN0 IDQgYnl0ZXMgb2YgdGhlIFJYIGZyYW1lIGhlYWRlciBjb250YWluIGJvdGggdGhlIFJYIGZyYW1l Cj4gKyDCoCDCoCDCoCDCoCogc2l6ZSBhbmQgc29tZSBmbGFncy4KPiArIMKgIMKgIMKgIMKgKiBC aXQgZmllbGRzOgo+ICsgwqAgwqAgwqAgwqAqIDMxOiDCoCDCoGZsYWcgZmx1c2ggUkIgcmVxdWVz dAo+ICsgwqAgwqAgwqAgwqAqIDMwOiDCoCDCoGZsYWcgaWdub3JlIFRDICh0ZXJtaW5hbCBjb3Vu dGVyKSByZXF1ZXN0Cj4gKyDCoCDCoCDCoCDCoCogMjk6IMKgIMKgZmxhZyBmYXN0IElSUSByZXF1 ZXN0Cj4gKyDCoCDCoCDCoCDCoCogMjgtMTQ6IFJlc2VydmVkCj4gKyDCoCDCoCDCoCDCoCogMTMt MDA6IFJYIGZyYW1lIHNpemUKPiArIMKgIMKgIMKgIMKgKi8KPiDCoCDCoCDCoCDCoF9fbGUzMiBs ZW5fbl9mbGFnczsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfY21kX2hlYWRlciBoZHI7Cj4gwqAg wqAgwqAgwqB1bmlvbiB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdp ZmkvaXdsLWNvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWNvcmUuYwo+ IGluZGV4IDJhZTE2OGEuLjNlNmNlNWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9pd2wtY29yZS5jCj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lm aS9pd2wtY29yZS5jCj4gQEAgLTEyODEsNyArMTI4MSw3IEBAIHN0YXRpYyB2b2lkIGl3bF9zZXRf cmF0ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpCj4KPiDCoHZvaWQgaXdsX3J4X2NzYShzdHJ1Y3Qg aXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+IMKgewo+IC0g wqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tl dCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBr dCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3J4b25fY21kICpyeG9u ID0gKHZvaWQgKikmcHJpdi0+YWN0aXZlX3J4b247Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX2Nz YV9ub3RpZmljYXRpb24gKmNzYSA9ICYocGt0LT51LmNzYV9ub3RpZik7Cj4gwqAgwqAgwqAgwqBJ V0xfREVCVUdfMTFIKHByaXYsICJDU0Egbm90aWY6IGNoYW5uZWwgJWQsIHN0YXR1cyAlZFxuIiwK PiBAQCAtMTQ5MiwxMCArMTQ5Miw5IEBAIGludCBpd2xfc2V0X2h3X3BhcmFtcyhzdHJ1Y3QgaXds X3ByaXYgKnByaXYpCj4gwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMubWF4X3J4cV9zaXplID0g UlhfUVVFVUVfU0laRTsKPiDCoCDCoCDCoCDCoHByaXYtPmh3X3BhcmFtcy5tYXhfcnhxX2xvZyA9 IFJYX1FVRVVFX1NJWkVfTE9HOwo+IMKgIMKgIMKgIMKgaWYgKHByaXYtPmNmZy0+bW9kX3BhcmFt cy0+YW1zZHVfc2l6ZV84SykKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaXYtPmh3X3BhcmFt cy5yeF9idWZfc2l6ZSA9IElXTF9SWF9CVUZfU0laRV84SzsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyID0gZ2V0X29yZGVyKElXTF9SWF9CVUZf U0laRV84Syk7Cj4gwqAgwqAgwqAgwqBlbHNlCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcml2 LT5od19wYXJhbXMucnhfYnVmX3NpemUgPSBJV0xfUlhfQlVGX1NJWkVfNEs7Cj4gLSDCoCDCoCDC oCBwcml2LT5od19wYXJhbXMubWF4X3BrdF9zaXplID0gcHJpdi0+aHdfcGFyYW1zLnJ4X2J1Zl9z aXplIC0gMjU2Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpdi0+aHdfcGFyYW1zLnJ4X3Bh Z2Vfb3JkZXIgPSBnZXRfb3JkZXIoSVdMX1JYX0JVRl9TSVpFXzRLKTsKPgo+IMKgIMKgIMKgIMKg cHJpdi0+aHdfcGFyYW1zLm1heF9iZWFjb25faXRydmwgPSBJV0xfTUFYX1VDT0RFX0JFQUNPTl9J TlRFUlZBTDsKPgo+IEBAIC0yMTc2LDcgKzIxNzUsNyBAQCB2b2lkIGl3bF9yeF9wbV9zbGVlcF9u b3RpZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIpCj4gwqB7Cj4gwqAjaWZk ZWYgQ09ORklHX0lXTFdJRklfREVCVUcKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0 ICpwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsKPiArIMKgIMKg IMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKgIMKgIMKg IMKgc3RydWN0IGl3bF9zbGVlcF9ub3RpZmljYXRpb24gKnNsZWVwID0gJihwa3QtPnUuc2xlZXBf bm90aWYpOwo+IMKgIMKgIMKgIMKgSVdMX0RFQlVHX1JYKHByaXYsICJzbGVlcCBtb2RlOiAlZCwg c3JjOiAlZFxuIiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzbGVlcC0+cG1fc2xl ZXBfbW9kZSwgc2xlZXAtPnBtX3dha2V1cF9zcmMpOwo+IEBAIC0yMTg3LDcgKzIxODYsNyBAQCBF WFBPUlRfU1lNQk9MKGl3bF9yeF9wbV9zbGVlcF9ub3RpZik7Cj4gwqB2b2lkIGl3bF9yeF9wbV9k ZWJ1Z19zdGF0aXN0aWNzX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBpd2xf cnhfbWVtX2J1ZmZlciAqcnhiKQo+IMKgewo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNr ZXQgKnBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAg wqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAg wqAgwqB1MzIgbGVuID0gbGUzMl90b19jcHUocGt0LT5sZW5fbl9mbGFncykgJiBGSF9SU0NTUl9G UkFNRV9TSVpFX01TSzsKPiDCoCDCoCDCoCDCoElXTF9ERUJVR19SQURJTyhwcml2LCAiRHVtcGlu ZyAlZCBieXRlcyBvZiB1bmhhbmRsZWQgIgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIm5vdGlmaWNhdGlvbiBmb3IgJXM6XG4iLCBsZW4sCj4gQEAgLTIxOTksNyArMjE5OCw3 IEBAIEVYUE9SVF9TWU1CT0woaXdsX3J4X3BtX2RlYnVnX3N0YXRpc3RpY3Nfbm90aWYpOwo+IMKg dm9pZCBpd2xfcnhfcmVwbHlfZXJyb3Ioc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIp Cj4gwqB7Cj4gLSDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gKHN0cnVjdCBp d2xfcnhfcGFja2V0ICopcnhiLT5za2ItPmRhdGE7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4 X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTsKPgo+IMKgIMKgIMKgIMKgSVdMX0VSUihwcml2 LCAiRXJyb3IgUmVwbHkgdHlwZSAweCUwOFggY21kICVzICgweCUwMlgpICIKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCJzZXEgMHglMDRYIHNlciAweCUwOFhcbiIsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWNvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2l3bHdpZmkvaXdsLWNvcmUuaAo+IGluZGV4IGNlYzY3M2IuLmI4NzdmODggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29yZS5oCj4gKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29yZS5oCj4gQEAgLTUzMSw3ICs1MzEsNyBA QCBpbnQgaXdsX3NlbmRfY21kX3BkdV9hc3luYyhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHU4IGlk LCB1MTYgbGVuLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbnN0 IHZvaWQgKmRhdGEsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdm9p ZCAoKmNhbGxiYWNrKShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaXds X2RldmljZV9jbWQgKmNtZCwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBza19idWZmICpza2IpKTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpKTsKPgo+IMKgaW50IGl3bF9lbnF1ZXVlX2hj bWQoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaXdsX2hvc3RfY21kICpjbWQpOwo+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWRldi5oIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtZGV2LmgKPiBpbmRleCA0NTFhYTY1Li4zNWQ1 Nzk0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWRldi5o Cj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtZGV2LmgKPiBAQCAtMTQ2 LDEyICsxNDYsMTMgQEAgZXh0ZXJuIHZvaWQgaXdsNTAwMF90ZW1wZXJhdHVyZShzdHJ1Y3QgaXds X3ByaXYgKnByaXYpOwo+IMKgI2RlZmluZSDCoCDCoCDCoCDCoERFRkFVTFRfTE9OR19SRVRSWV9M SU1JVCDCoDRVCj4KPiDCoHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciB7Cj4gLSDCoCDCoCDCoCBk bWFfYWRkcl90IHJlYWxfZG1hX2FkZHI7Cj4gLSDCoCDCoCDCoCBkbWFfYWRkcl90IGFsaWduZWRf ZG1hX2FkZHI7Cj4gLSDCoCDCoCDCoCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwo+ICsgwqAgwqAgwqAg ZG1hX2FkZHJfdCBwYWdlX2RtYTsKPiArIMKgIMKgIMKgIHN0cnVjdCBwYWdlICpwYWdlOwo+IMKg IMKgIMKgIMKgc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IMKgfTsKPgo+ICsjZGVmaW5lIHJ4Yl9h ZGRyKHIpIHBhZ2VfYWRkcmVzcyhyLT5wYWdlKQo+ICsKPiDCoC8qIGRlZmluZWQgYmVsb3cgKi8K PiDCoHN0cnVjdCBpd2xfZGV2aWNlX2NtZDsKPgo+IEBAIC0xNjcsNyArMTY4LDcgQEAgc3RydWN0 IGl3bF9jbWRfbWV0YSB7Cj4gwqAgwqAgwqAgwqAgKi8KPiDCoCDCoCDCoCDCoHZvaWQgKCpjYWxs YmFjaykoc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHN0cnVjdCBpd2xfZGV2aWNlX2NtZCAqY21kLAo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCk7Cj4KPiDC oCDCoCDCoCDCoC8qIFRoZSBDTURfU0laRV9IVUdFIGZsYWcgYml0IGluZGljYXRlcyB0aGF0IHRo ZSBjb21tYW5kCj4gwqAgwqAgwqAgwqAgKiBzdHJ1Y3R1cmUgaXMgc3RvcmVkIGF0IHRoZSBlbmQg b2YgdGhlIHNoYXJlZCBxdWV1ZSBtZW1vcnkuICovCj4gQEAgLTM2Niw2ICszNjcsMTMgQEAgZW51 bSB7Cj4KPiDCoCNkZWZpbmUgSVdMX0NNRF9NQVhfUEFZTE9BRCAzMjAKPgo+ICsvKgo+ICsgKiBJ V0xfTElOS19IRFJfTUFYIHNob3VsZCBpbmNsdWRlIGllZWU4MDIxMV9oZHIsIHJhZGlvdGFwIGhl YWRlciwKPiArICogU05BUCBoZWFkZXIgYW5kIGFsaWdubWVudC4gSXQgc2hvdWxkIGFsc28gYmUg YmlnIGVub3VnaCBmb3IgODAyLjExCj4gKyAqIGNvbnRyb2wgZnJhbWVzLgo+ICsgKi8KPiArI2Rl ZmluZSBJV0xfTElOS19IRFJfTUFYIDY0Cj4gKwo+IMKgLyoqCj4gwqAqIHN0cnVjdCBpd2xfZGV2 aWNlX2NtZAo+IMKgKgo+IEBAIC0zOTAsMTAgKzM5OCwxMCBAQCBzdHJ1Y3QgaXdsX2RldmljZV9j bWQgewo+Cj4gwqBzdHJ1Y3QgaXdsX2hvc3RfY21kIHsKPiDCoCDCoCDCoCDCoGNvbnN0IHZvaWQg KmRhdGE7Cj4gLSDCoCDCoCDCoCBzdHJ1Y3Qgc2tfYnVmZiAqcmVwbHlfc2tiOwo+ICsgwqAgwqAg wqAgdW5zaWduZWQgbG9uZyByZXBseV9wYWdlOwo+IMKgIMKgIMKgIMKgdm9pZCAoKmNhbGxiYWNr KShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgc3RydWN0IGl3bF9kZXZpY2VfY21kICpjbWQsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBza19idWZmICpza2IpOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KTsKPiDCoCDCoCDC oCDCoHUzMiBmbGFnczsKPiDCoCDCoCDCoCDCoHUxNiBsZW47Cj4gwqAgwqAgwqAgwqB1OCBpZDsK PiBAQCAtNjUwLDcgKzY1OCw3IEBAIHN0cnVjdCBpd2xfc2Vuc2l0aXZpdHlfcmFuZ2VzIHsKPiDC oCogQHZhbGlkX3R4L3J4X2FudDogdXNhYmxlIGFudGVubmFzCj4gwqAqIEBtYXhfcnhxX3NpemU6 IE1heCAjIFJ4IGZyYW1lcyBpbiBSeCBxdWV1ZSAobXVzdCBiZSBwb3dlci1vZi0yKQo+IMKgKiBA bWF4X3J4cV9sb2c6IExvZy1iYXNlLTIgb2YgbWF4X3J4cV9zaXplCj4gLSAqIEByeF9idWZfc2l6 ZTogUnggYnVmZmVyIHNpemUKPiArICogQHJ4X3BhZ2Vfb3JkZXI6IFJ4IGJ1ZmZlciBwYWdlIG9y ZGVyCj4gwqAqIEByeF93cnRfcHRyX3JlZzogRkh7Mzl9X1JTQ1NSX0NITkwwX1dQVFIKPiDCoCog QG1heF9zdGF0aW9uczoKPiDCoCogQGJjYXN0X3N0YV9pZDoKPiBAQCAtNjczLDkgKzY4MSw4IEBA IHN0cnVjdCBpd2xfaHdfcGFyYW1zIHsKPiDCoCDCoCDCoCDCoHU4IMKgdmFsaWRfcnhfYW50Owo+ IMKgIMKgIMKgIMKgdTE2IG1heF9yeHFfc2l6ZTsKPiDCoCDCoCDCoCDCoHUxNiBtYXhfcnhxX2xv ZzsKPiAtIMKgIMKgIMKgIHUzMiByeF9idWZfc2l6ZTsKPiArIMKgIMKgIMKgIHUzMiByeF9wYWdl X29yZGVyOwo+IMKgIMKgIMKgIMKgdTMyIHJ4X3dydF9wdHJfcmVnOwo+IC0gwqAgwqAgwqAgdTMy IG1heF9wa3Rfc2l6ZTsKPiDCoCDCoCDCoCDCoHU4IMKgbWF4X3N0YXRpb25zOwo+IMKgIMKgIMKg IMKgdTggwqBiY2FzdF9zdGFfaWQ7Cj4gwqAgwqAgwqAgwqB1OCDCoGh0NDBfY2hhbm5lbDsKPiBA QCAtOTg3LDcgKzk5NCw3IEBAIHN0cnVjdCBpd2xfcHJpdiB7Cj4gwqAgwqAgwqAgwqBpbnQgZnJh bWVzX2NvdW50Owo+Cj4gwqAgwqAgwqAgwqBlbnVtIGllZWU4MDIxMV9iYW5kIGJhbmQ7Cj4gLSDC oCDCoCDCoCBpbnQgYWxsb2NfcnhiX3NrYjsKPiArIMKgIMKgIMKgIGludCBhbGxvY19yeGJfcGFn ZTsKPgo+IMKgIMKgIMKgIMKgdm9pZCAoKnJ4X2hhbmRsZXJzW1JFUExZX01BWF0pKHN0cnVjdCBp d2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4Yik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWhjbWQuYyBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWhjbWQuYwo+IGluZGV4IDUzMmM4ZDYuLjIyYTIxYTEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtaGNtZC5jCj4g KysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtaGNtZC5jCj4gQEAgLTEwMywx NyArMTAzLDggQEAgRVhQT1JUX1NZTUJPTChnZXRfY21kX3N0cmluZyk7Cj4KPiDCoHN0YXRpYyB2 b2lkIGl3bF9nZW5lcmljX2NtZF9jYWxsYmFjayhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3RydWN0 IGl3bF9kZXZpY2VfY21kICpjbWQsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBza19idWZmICpza2IpCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcnhf cGFja2V0ICpwa3QpCj4gwqB7Cj4gLSDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0 ID0gTlVMTDsKPiAtCj4gLSDCoCDCoCDCoCBpZiAoIXNrYikgewo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgSVdMX0VSUihwcml2LCAiRXJyb3I6IFJlc3BvbnNlIE5VTEwgaW4gJXMuXG4iLAo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ2V0X2NtZF9zdHJp bmcoY21kLT5oZHIuY21kKSk7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47Cj4gLSDC oCDCoCDCoCB9Cj4gLQo+IC0gwqAgwqAgwqAgcGt0ID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0ICop c2tiLT5kYXRhOwo+IMKgIMKgIMKgIMKgaWYgKHBrdC0+aGRyLmZsYWdzICYgSVdMX0NNRF9GQUlM RURfTVNLKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJV0xfRVJSKHByaXYsICJCYWQgcmV0 dXJuIGZyb20gJXMgKDB4JTA4WClcbiIsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBnZXRfY21kX3N0cmluZyhjbWQtPmhkci5jbWQpLCBwa3QtPmhkci5mbGFncyk7Cj4gQEAg LTIxNSw3ICsyMDYsNyBAQCBpbnQgaXdsX3NlbmRfY21kX3N5bmMoc3RydWN0IGl3bF9wcml2ICpw cml2LCBzdHJ1Y3QgaXdsX2hvc3RfY21kICpjbWQpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZXQgPSAtRUlPOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ290byBmYWlsOwo+IMKgIMKgIMKg IMKgfQo+IC0gwqAgwqAgwqAgaWYgKChjbWQtPmZsYWdzICYgQ01EX1dBTlRfU0tCKSAmJiAhY21k LT5yZXBseV9za2IpIHsKPiArIMKgIMKgIMKgIGlmICgoY21kLT5mbGFncyAmIENNRF9XQU5UX1NL QikgJiYgIWNtZC0+cmVwbHlfcGFnZSkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVdMX0VS Uihwcml2LCAiRXJyb3I6IFJlc3BvbnNlIE5VTEwgaW4gJyVzJ1xuIiwKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdldF9jbWRfc3RyaW5nKGNtZC0+aWQpKTsKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHJldCA9IC1FSU87Cj4gQEAgLTIzNyw5ICsyMjgsOSBAQCBjYW5j ZWw6Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB+Q01EX1dBTlRfU0tCOwo+IMKgIMKgIMKg IMKgfQo+IMKgZmFpbDoKPiAtIMKgIMKgIMKgIGlmIChjbWQtPnJlcGx5X3NrYikgewo+IC0gwqAg wqAgwqAgwqAgwqAgwqAgwqAgZGV2X2tmcmVlX3NrYl9hbnkoY21kLT5yZXBseV9za2IpOwo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgY21kLT5yZXBseV9za2IgPSBOVUxMOwo+ICsgwqAgwqAgwqAg aWYgKGNtZC0+cmVwbHlfcGFnZSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZnJlZV9wYWdl cyhjbWQtPnJlcGx5X3BhZ2UsIHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyKTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGNtZC0+cmVwbHlfcGFnZSA9IDA7Cj4gwqAgwqAgwqAgwqB9Cj4g wqBvdXQ6Cj4gwqAgwqAgwqAgwqBjbGVhcl9iaXQoU1RBVFVTX0hDTURfU1lOQ19BQ1RJVkUsICZw cml2LT5zdGF0dXMpOwo+IEBAIC0yNzIsNyArMjYzLDcgQEAgaW50IGl3bF9zZW5kX2NtZF9wZHVf YXN5bmMoc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHU4IGlkLCB1MTYgbGVuLCBjb25zdCB2b2lkICpkYXRhLAo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0IGl3 bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGl3bF9kZXZpY2VfY21kICpjbWQsCj4gLSDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0 ICpwa3QpKQo+IMKgewo+IMKgIMKgIMKgIMKgc3RydWN0IGl3bF9ob3N0X2NtZCBjbWQgPSB7Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAuaWQgPSBpZCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdp ZmkvaXdsLXJ4LmMKPiBpbmRleCA3YWQzMjdlLi4wYTQwN2Y3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXJ4LmMKPiArKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9pd2x3aWZpL2l3bC1yeC5jCj4gQEAgLTIwMCw3ICsyMDAsNyBAQCBpbnQgaXdsX3J4X3F1 ZXVlX3Jlc3RvY2soc3RydWN0IGl3bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgbGlzdF9kZWwoZWxlbWVudCk7Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIFBvaW50 IHRvIFJ4IGJ1ZmZlciB2aWEgbmV4dCBSQkQgaW4gY2lyY3VsYXIgYnVmZmVyICovCj4gLSDCoCDC oCDCoCDCoCDCoCDCoCDCoCByeHEtPmJkW3J4cS0+d3JpdGVdID0gaXdsX2RtYV9hZGRyMnJiZF9w dHIocHJpdiwgcnhiLT5hbGlnbmVkX2RtYV9hZGRyKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHJ4cS0+YmRbcnhxLT53cml0ZV0gPSBpd2xfZG1hX2FkZHIycmJkX3B0cihwcml2LCByeGItPnBh Z2VfZG1hKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJ4cS0+cXVldWVbcnhxLT53cml0ZV0g PSByeGI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByeHEtPndyaXRlID0gKHJ4cS0+d3JpdGUg KyAxKSAmIFJYX1FVRVVFX01BU0s7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByeHEtPmZyZWVf Y291bnQtLTsKPiBAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgaXdsX3J4X2FsbG9jYXRlKHN0cnVj dCBpd2xfcHJpdiAqcHJpdiwgZ2ZwX3QgcHJpb3JpdHkpCj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXds X3J4X3F1ZXVlICpyeHEgPSAmcHJpdi0+cnhxOwo+IMKgIMKgIMKgIMKgc3RydWN0IGxpc3RfaGVh ZCAqZWxlbWVudDsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiOwo+ IC0gwqAgwqAgwqAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKPiArIMKgIMKgIMKgIHN0cnVjdCBwYWdl ICpwYWdlOwo+IMKgIMKgIMKgIMKgdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+IMKgIMKgIMKgIMKg d2hpbGUgKDEpIHsKPiBAQCAtMjUyLDI5ICsyNTIsMzQgQEAgdm9pZCBpd2xfcnhfYWxsb2NhdGUo c3RydWN0IGl3bF9wcml2ICpwcml2LCBnZnBfdCBwcmlvcml0eSkKPgo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaWYgKHJ4cS0+ZnJlZV9jb3VudCA+IFJYX0xPV19XQVRFUk1BUkspCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBwcmlvcml0eSB8PSBfX0dGUF9OT1dBUk47Cj4g LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBBbGxvYyBhIG5ldyByZWNlaXZlIGJ1ZmZlciAqLwo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2tiID0gYWxsb2Nfc2tiKHByaXYtPmh3X3BhcmFtcy5y eF9idWZfc2l6ZSArIDI1NiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW9yaXR5KTsKPgo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgaWYgKCFza2IpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChw cml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlciA+IDApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBwcmlvcml0eSB8PSBfX0dGUF9DT01QOwo+ICsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIC8qIEFsbG9jIGEgbmV3IHJlY2VpdmUgYnVmZmVyICovCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBwYWdlID0gYWxsb2NfcGFnZXMocHJpb3JpdHksIHByaXYtPmh3X3BhcmFtcy5y eF9wYWdlX29yZGVyKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICghcGFnZSkgewo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKG5ldF9yYXRlbGltaXQoKSkKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIElXTF9ERUJVR19J TkZPKHByaXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgU0tCIGJ1ZmZlci5cbiIpOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVdMX0RFQlVHX0lORk8ocHJp diwgImFsbG9jX3BhZ2VzIGZhaWxlZCwgIgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAib3JkZXI6ICVkXG4iLAo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlcik7Cj4gKwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKChyeHEtPmZyZWVfY291bnQgPD0gUlhf TE9XX1dBVEVSTUFSSykgJiYKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoG5ldF9yYXRlbGltaXQoKSkKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIElXTF9DUklUKHByaXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgU0tCIGJ1ZmZl ciB3aXRoICVzLiBPbmx5ICV1IGZyZWUgYnVmZmVycyByZW1haW5pbmcuXG4iLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVdMX0NSSVQocHJpdiwgIkZh aWxlZCB0byBhbGxvY19wYWdlcyB3aXRoICVzLiBPbmx5ICV1IGZyZWUgYnVmZmVycyByZW1haW5p bmcuXG4iLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHByaW9yaXR5ID09IEdGUF9BVE9NSUMgPyDCoCJHRlBfQVRPTUlDIiA6ICJH RlBfS0VSTkVMIiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCByeHEtPmZyZWVfY291bnQpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgLyogV2UgZG9uJ3QgcmVzY2hlZHVsZSByZXBsZW5pc2ggd29yayBoZXJl IC0tIHdlIHdpbGwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIGNhbGwg dGhlIHJlc3RvY2sgbWV0aG9kIGFuZCBpZiBpdCBzdGlsbCBuZWVkcwo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgICogbW9yZSBidWZmZXJzIGl0IHdpbGwgc2NoZWR1bGUgcmVw bGVuaXNoICovCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoH0KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3Bpbl9sb2NrX2lycXNhdmUo JnJ4cS0+bG9jaywgZmxhZ3MpOwo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAobGlzdF9l bXB0eSgmcnhxLT5yeF91c2VkKSkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnhxLT5sb2NrLCBmbGFncyk7Cj4gLSDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXZfa2ZyZWVfc2tiX2FueShza2IpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19mcmVlX3BhZ2VzKHBhZ2UsIHByaXYtPmh3 X3BhcmFtcy5yeF9wYWdlX29yZGVyKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHJldHVybjsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGVsZW1lbnQgPSByeHEtPnJ4X3VzZWQubmV4dDsKPiBAQCAtMjgzLDI0ICsyODgsMjEg QEAgdm9pZCBpd2xfcnhfYWxsb2NhdGUoc3RydWN0IGl3bF9wcml2ICpwcml2LCBnZnBfdCBwcmlv cml0eSkKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm cnhxLT5sb2NrLCBmbGFncyk7Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4Yi0+c2tiID0g c2tiOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogR2V0IHBoeXNpY2FsIGFkZHJlc3Mgb2Yg UkIvU0tCICovCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnJlYWxfZG1hX2FkZHIgPSBw Y2lfbWFwX3NpbmdsZSgKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHByaXYtPnBjaV9kZXYsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnNrYi0+ZGF0YSwKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHByaXYtPmh3X3BhcmFtcy5yeF9idWZfc2l6ZSArIDI1NiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFBDSV9ETUFfRlJPTURFVklD RSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnBhZ2UgPSBwYWdlOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgLyogR2V0IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFJCICovCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnBhZ2VfZG1hID0gcGNpX21hcF9wYWdlKHByaXYtPnBj aV9kZXYsIHBhZ2UsIDAsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBQQUdFX1NJWkUgPDwgcHJpdi0+aHdfcGFyYW1zLnJ4X3BhZ2Vfb3JkZXIsCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBQQ0lfRE1BX0ZST01E RVZJQ0UpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogZG1hIGFkZHJlc3MgbXVzdCBiZSBu byBtb3JlIHRoYW4gMzYgYml0cyAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgQlVHX09OKHJ4 Yi0+cmVhbF9kbWFfYWRkciAmIH5ETUFfQklUX01BU0soMzYpKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIEJVR19PTihyeGItPnBhZ2VfZG1hICYgfkRNQV9CSVRfTUFTSygzNikpOwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgLyogYW5kIGFsc28gMjU2IGJ5dGUgYWxpZ25lZCEgKi8KPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHJ4Yi0+YWxpZ25lZF9kbWFfYWRkciA9IEFMSUdOKHJ4Yi0+cmVh bF9kbWFfYWRkciwgMjU2KTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNrYl9yZXNlcnZlKHJ4 Yi0+c2tiLCByeGItPmFsaWduZWRfZG1hX2FkZHIgLSByeGItPnJlYWxfZG1hX2FkZHIpOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgQlVHX09OKHJ4Yi0+cGFnZV9kbWEgJiBETUFfQklUX01BU0so OCkpOwo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzcGluX2xvY2tfaXJxc2F2ZSgmcnhxLT5s b2NrLCBmbGFncyk7Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGxpc3RfYWRkX3RhaWwoJnJ4 Yi0+bGlzdCwgJnJ4cS0+cnhfZnJlZSk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByeHEtPmZy ZWVfY291bnQrKzsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaXYtPmFsbG9jX3J4Yl9za2Ir KzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaXYtPmFsbG9jX3J4Yl9wYWdlKys7Cj4KPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJ4cS0+bG9jaywg ZmxhZ3MpOwo+IMKgIMKgIMKgIMKgfQo+IEBAIC0zMzYsMTIgKzMzOCwxNCBAQCB2b2lkIGl3bF9y eF9xdWV1ZV9mcmVlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGl3bF9yeF9xdWV1ZSAq cnhxKQo+IMKgewo+IMKgIMKgIMKgIMKgaW50IGk7Cj4gwqAgwqAgwqAgwqBmb3IgKGkgPSAwOyBp IDwgUlhfUVVFVUVfU0laRSArIFJYX0ZSRUVfQlVGRkVSUzsgaSsrKSB7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCBpZiAocnhxLT5wb29sW2ldLnNrYiAhPSBOVUxMKSB7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwY2lfdW5tYXBfc2luZ2xlKHByaXYtPnBjaV9kZXYsCj4g LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHJ4cS0+cG9vbFtpXS5yZWFsX2RtYV9hZGRyLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMucnhf YnVmX3NpemUgKyAyNTYsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoFBDSV9ETUFfRlJPTURFVklDRSk7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXZfa2ZyZWVfc2tiKHJ4cS0+cG9vbFtpXS5za2IpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHJ4cS0+cG9vbFtpXS5wYWdlICE9IE5VTEwpIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBjaV91bm1hcF9wYWdlKHByaXYt PnBjaV9kZXYsIHJ4cS0+cG9vbFtpXS5wYWdlX2RtYSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFBBR0VfU0laRSA8PCBwcml2LT5od19wYXJhbXMucnhf cGFnZV9vcmRlciwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIFBDSV9ETUFfRlJPTURFVklDRSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2ZyZWVfcGFnZXMocnhxLT5wb29sW2ldLnBhZ2UsCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHByaXYtPmh3X3BhcmFtcy5yeF9w YWdlX29yZGVyKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4cS0+cG9v bFtpXS5wYWdlID0gTlVMTDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBy aXYtPmFsbG9jX3J4Yl9wYWdlLS07Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAg wqAgwqB9Cj4KPiBAQCAtNDA1LDE0ICs0MDksMTQgQEAgdm9pZCBpd2xfcnhfcXVldWVfcmVzZXQo c3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaXdsX3J4X3F1ZXVlICpyeHEpCj4gwqAgwqAg wqAgwqBmb3IgKGkgPSAwOyBpIDwgUlhfRlJFRV9CVUZGRVJTICsgUlhfUVVFVUVfU0laRTsgaSsr KSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBJbiB0aGUgcmVzZXQgZnVuY3Rpb24sIHRo ZXNlIGJ1ZmZlcnMgbWF5IGhhdmUgYmVlbiBhbGxvY2F0ZWQKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAqIHRvIGFuIFNLQiwgc28gd2UgbmVlZCB0byB1bm1hcCBhbmQgZnJlZSBwb3RlbnRpYWwg c3RvcmFnZSAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHJ4cS0+cG9vbFtpXS5za2Ig IT0gTlVMTCkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGNpX3VubWFw X3NpbmdsZShwcml2LT5wY2lfZGV2LAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByeHEtPnBvb2xbaV0ucmVhbF9kbWFfYWRkciwK PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcHJpdi0+aHdfcGFyYW1zLnJ4X2J1Zl9zaXplICsgMjU2LAo+IC0gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQQ0lfRE1BX0ZS T01ERVZJQ0UpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpdi0+YWxs b2NfcnhiX3NrYi0tOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGV2X2tm cmVlX3NrYihyeHEtPnBvb2xbaV0uc2tiKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHJ4cS0+cG9vbFtpXS5za2IgPSBOVUxMOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg aWYgKHJ4cS0+cG9vbFtpXS5wYWdlICE9IE5VTEwpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHBjaV91bm1hcF9wYWdlKHByaXYtPnBjaV9kZXYsIHJ4cS0+cG9vbFtpXS5w YWdlX2RtYSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IFBBR0VfU0laRSA8PCBwcml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlciwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFBDSV9ETUFfRlJPTURFVklDRSk7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcml2LT5hbGxvY19yeGJfcGFn ZS0tOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19mcmVlX3BhZ2VzKHJ4 cS0+cG9vbFtpXS5wYWdlLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMucnhfcGFnZV9vcmRlcik7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeHEtPnBvb2xbaV0ucGFnZSA9IE5VTEw7Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBsaXN0X2Fk ZF90YWlsKCZyeHEtPnBvb2xbaV0ubGlzdCwgJnJ4cS0+cnhfdXNlZCk7Cj4gwqAgwqAgwqAgwqB9 Cj4gQEAgLTQ5MSw3ICs0OTUsNyBAQCB2b2lkIGl3bF9yeF9taXNzZWRfYmVhY29uX25vdGlmKHN0 cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+Cj4gwqB7Cj4gLSDC oCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0 ICopcnhiLT5za2ItPmRhdGE7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0 ID0gcnhiX2FkZHIocnhiKTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfbWlzc2VkX2JlYWNvbl9u b3RpZiAqbWlzc2VkX2JlYWNvbjsKPgo+IMKgIMKgIMKgIMKgbWlzc2VkX2JlYWNvbiA9ICZwa3Qt PnUubWlzc2VkX2JlYWNvbjsKPiBAQCAtNTkyLDcgKzU5Niw3IEBAIHZvaWQgaXdsX3J4X3N0YXRp c3RpY3Moc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIpCj4gwqB7Cj4g wqAgwqAgwqAgwqBpbnQgY2hhbmdlOwo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQg KnBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAg wqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4KPiDCoCDCoCDC oCDCoElXTF9ERUJVR19SWChwcml2LCAiU3RhdGlzdGljcyBub3RpZmljYXRpb24gcmVjZWl2ZWQg KCVkIHZzICVkKS5cbiIsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGludClzaXpl b2YocHJpdi0+c3RhdGlzdGljcyksCj4gQEAgLTkxOSw2ICs5MjMsOSBAQCBzdGF0aWMgdm9pZCBp d2xfcGFzc19wYWNrZXRfdG9fbWFjODAyMTEoc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3Ry dWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1 cyAqc3RhdHMpCj4gwqB7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwo+ICsgwqAg wqAgwqAgaW50IHJldCA9IDA7Cj4gKwo+IMKgIMKgIMKgIMKgLyogV2Ugb25seSBwcm9jZXNzIGRh dGEgcGFja2V0cyBpZiB0aGUgaW50ZXJmYWNlIGlzIG9wZW4gKi8KPiDCoCDCoCDCoCDCoGlmICh1 bmxpa2VseSghcHJpdi0+aXNfb3BlbikpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElXTF9E RUJVR19EUk9QX0xJTUlUKHByaXYsCj4gQEAgLTkzMSwxNSArOTM4LDM4IEBAIHN0YXRpYyB2b2lk IGl3bF9wYXNzX3BhY2tldF90b19tYWM4MDIxMShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAg wqAgwqAgwqAgwqAgwqBpd2xfc2V0X2RlY3J5cHRlZF9mbGFnKHByaXYsIGhkciwgYW1wZHVfc3Rh dHVzLCBzdGF0cykpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm47Cj4KPiAtIMKgIMKg IMKgIC8qIFJlc2l6ZSBTS0IgZnJvbSBtYWMgaGVhZGVyIHRvIGVuZCBvZiBwYWNrZXQgKi8KPiAt IMKgIMKgIMKgIHNrYl9yZXNlcnZlKHJ4Yi0+c2tiLCAodm9pZCAqKWhkciAtICh2b2lkICopcnhi LT5za2ItPmRhdGEpOwo+IC0gwqAgwqAgwqAgc2tiX3B1dChyeGItPnNrYiwgbGVuKTsKPiArIMKg IMKgIMKgIHNrYiA9IGFsbG9jX3NrYihJV0xfTElOS19IRFJfTUFYLCBHRlBfQVRPTUlDKTsKPiAr IMKgIMKgIMKgIGlmICghc2tiKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBJV0xfRVJSKHBy aXYsICJhbGxvY19za2IgZmFpbGVkXG4iKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVy bjsKPiArIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCBza2JfYWRkX3J4X2ZyYWcoc2tiLCAw LCByeGItPnBhZ2UsICh2b2lkICopaGRyIC0gcnhiX2FkZHIocnhiKSwgbGVuKTsKPiArCj4gKyDC oCDCoCDCoCAvKiBtYWM4MDIxMSBjdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0IHBhZ2VkIFNLQi4g Q29udmVydCBpdCB0bwo+ICsgwqAgwqAgwqAgwqAqIGxpbmVhciBTS0IgZm9yIG1hbmFnZW1lbnQg ZnJhbWUgYW5kIGRhdGEgZnJhbWUgcmVxdWlyZXMKPiArIMKgIMKgIMKgIMKgKiBzb2Z0d2FyZSBk ZWNyeXB0aW9uIG9yIHNvZnR3YXJlIGRlZnJhZ2VtZW50YXRpb24uICovCj4gKyDCoCDCoCDCoCBp ZiAoaWVlZTgwMjExX2lzX21nbXQoaGRyLT5mcmFtZV9jb250cm9sKSB8fAo+ICsgwqAgwqAgwqAg wqAgwqAgaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLT5mcmFtZV9jb250cm9sKSB8fAo+ICsg wqAgwqAgwqAgwqAgwqAgaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoaGRyLT5mcmFtZV9jb250cm9s KSB8fAo+ICsgwqAgwqAgwqAgwqAgwqAgbGUxNl90b19jcHUoaGRyLT5zZXFfY3RybCkgJiBJRUVF ODAyMTFfU0NUTF9GUkFHKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0ID0gc2tiX2xpbmVh cml6ZShza2IpOwo+ICsgwqAgwqAgwqAgZWxzZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0 ID0gX19wc2tiX3B1bGxfdGFpbChza2IsIG1pbl90KHUxNiwgSVdMX0xJTktfSERSX01BWCwgbGVu KSkgPwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwIDogLUVOT01FTTsK PiArCj4gKyDCoCDCoCDCoCBpZiAocmV0KSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBrZnJl ZV9za2Ioc2tiKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gb3V0Owo+ICsgwqAgwqAg wqAgfQo+Cj4gwqAgwqAgwqAgwqBpd2xfdXBkYXRlX3N0YXRzKHByaXYsIGZhbHNlLCBoZHItPmZy YW1lX2NvbnRyb2wsIGxlbik7Cj4gLSDCoCDCoCDCoCBtZW1jcHkoSUVFRTgwMjExX1NLQl9SWENC KHJ4Yi0+c2tiKSwgc3RhdHMsIHNpemVvZigqc3RhdHMpKTsKPiAtIMKgIMKgIMKgIGllZWU4MDIx MV9yeF9pcnFzYWZlKHByaXYtPmh3LCByeGItPnNrYik7Cj4gLSDCoCDCoCDCoCBwcml2LT5hbGxv Y19yeGJfc2tiLS07Cj4gLSDCoCDCoCDCoCByeGItPnNrYiA9IE5VTEw7Cj4gKyDCoCDCoCDCoCBt ZW1jcHkoSUVFRTgwMjExX1NLQl9SWENCKHNrYiksIHN0YXRzLCBzaXplb2YoKnN0YXRzKSk7Cj4g Kwo+ICsgwqAgwqAgwqAgaWVlZTgwMjExX3J4KHByaXYtPmh3LCBza2IpOwo+ICsgb3V0Ogo+ICsg wqAgwqAgwqAgcHJpdi0+YWxsb2NfcnhiX3BhZ2UtLTsKPiArIMKgIMKgIMKgIHJ4Yi0+cGFnZSA9 IE5VTEw7Cj4gwqB9Cj4KPiDCoC8qIFRoaXMgaXMgbmVjZXNzYXJ5IG9ubHkgZm9yIGEgbnVtYmVy IG9mIHN0YXRpc3RpY3MsIHNlZSB0aGUgY2FsbGVyLiAqLwo+IEBAIC05NjcsNyArOTk3LDcgQEAg dm9pZCBpd2xfcnhfcmVwbHlfcngoc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgewo+IMKgIMKg IMKgIMKgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhlYWRlcjsKPiDCoCDCoCDCoCDCoHN0cnVjdCBp ZWVlODAyMTFfcnhfc3RhdHVzIHJ4X3N0YXR1czsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhf cGFja2V0ICpwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsKPiAr IMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKg IMKgIMKgIMKgc3RydWN0IGl3bF9yeF9waHlfcmVzICpwaHlfcmVzOwo+IMKgIMKgIMKgIMKgX19s ZTMyIHJ4X3BrdF9zdGF0dXM7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsNDk2NV9yeF9tcGR1X3Jl c19zdGFydCAqYW1zZHU7Cj4gQEAgLTExMjgsNyArMTE1OCw3IEBAIEVYUE9SVF9TWU1CT0woaXds X3J4X3JlcGx5X3J4KTsKPiDCoHZvaWQgaXdsX3J4X3JlcGx5X3J4X3BoeShzdHJ1Y3QgaXdsX3By aXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKgIMKg IHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGIt PnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJf YWRkcihyeGIpOwo+IMKgIMKgIMKgIMKgcHJpdi0+bGFzdF9waHlfcmVzWzBdID0gMTsKPiDCoCDC oCDCoCDCoG1lbWNweSgmcHJpdi0+bGFzdF9waHlfcmVzWzFdLCAmKHBrdC0+dS5yYXdbMF0pLAo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNpemVvZihzdHJ1Y3QgaXdsX3J4X3BoeV9yZXMpKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc2Nhbi5jIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc2Nhbi5jCj4gaW5kZXggNDFmOWEwNi4uNGZj YTY1YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zY2Fu LmMKPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zY2FuLmMKPiBAQCAt MTExLDcgKzExMSw3IEBAIEVYUE9SVF9TWU1CT0woaXdsX3NjYW5fY2FuY2VsX3RpbWVvdXQpOwo+ IMKgc3RhdGljIGludCBpd2xfc2VuZF9zY2FuX2Fib3J0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdikK PiDCoHsKPiDCoCDCoCDCoCDCoGludCByZXQgPSAwOwo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9y eF9wYWNrZXQgKnJlczsKPiArIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Q7Cj4g wqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX2hvc3RfY21kIGNtZCA9IHsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoC5pZCA9IFJFUExZX1NDQU5fQUJPUlRfQ01ELAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgLmZsYWdzID0gQ01EX1dBTlRfU0tCLAo+IEBAIC0xMzEsMjEgKzEzMSwyMSBAQCBzdGF0aWMg aW50IGl3bF9zZW5kX3NjYW5fYWJvcnQoc3RydWN0IGl3bF9wcml2ICpwcml2KQo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgcmV0dXJuIHJldDsKPiDCoCDCoCDCoCDCoH0KPgo+IC0gwqAgwqAgwqAg cmVzID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0ICopY21kLnJlcGx5X3NrYi0+ZGF0YTsKPiAtIMKg IMKgIMKgIGlmIChyZXMtPnUuc3RhdHVzICE9IENBTl9BQk9SVF9TVEFUVVMpIHsKPiArIMKgIMKg IMKgIHBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqKWNtZC5yZXBseV9wYWdlOwo+ICsgwqAg wqAgwqAgaWYgKHBrdC0+dS5zdGF0dXMgIT0gQ0FOX0FCT1JUX1NUQVRVUykgewo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgLyogVGhlIHNjYW4gYWJvcnQgd2lsbCByZXR1cm4gMSBmb3Igc3VjY2Vz cyBvcgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogMiBmb3IgImZhaWx1cmUiLiDCoEEgZmFp bHVyZSBjb25kaXRpb24gY2FuIGJlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBkdWUgdG8g c2ltcGx5IG5vdCBiZWluZyBpbiBhbiBhY3RpdmUgc2NhbiB3aGljaAo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICogY2FuIG9jY3VyIGlmIHdlIHNlbmQgdGhlIHNjYW4gYWJvcnQgYmVmb3JlIHdl Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiB0aGUgbWljcm9jb2RlIGhhcyBub3RpZmllZCB1 cyB0aGF0IGEgc2NhbiBpcwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogY29tcGxldGVkLiAq Lwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVdMX0RFQlVHX0lORk8ocHJpdiwgIlNDQU5fQUJP UlQgcmV0dXJuZWQgJWQuXG4iLCByZXMtPnUuc3RhdHVzKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIElXTF9ERUJVR19JTkZPKHByaXYsICJTQ0FOX0FCT1JUIHJldHVybmVkICVkLlxuIiwgcGt0 LT51LnN0YXR1cyk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjbGVhcl9iaXQoU1RBVFVTX1ND QU5fQUJPUlRJTkcsICZwcml2LT5zdGF0dXMpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xl YXJfYml0KFNUQVRVU19TQ0FOX0hXLCAmcHJpdi0+c3RhdHVzKTsKPiDCoCDCoCDCoCDCoH0KPgo+ IC0gwqAgwqAgwqAgcHJpdi0+YWxsb2NfcnhiX3NrYi0tOwo+IC0gwqAgwqAgwqAgZGV2X2tmcmVl X3NrYl9hbnkoY21kLnJlcGx5X3NrYik7Cj4gKyDCoCDCoCDCoCBwcml2LT5hbGxvY19yeGJfcGFn ZS0tOwo+ICsgwqAgwqAgwqAgZnJlZV9wYWdlcyhjbWQucmVwbHlfcGFnZSwgcHJpdi0+aHdfcGFy YW1zLnJ4X3BhZ2Vfb3JkZXIpOwo+Cj4gwqAgwqAgwqAgwqByZXR1cm4gcmV0Owo+IMKgfQo+IEBA IC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgaXdsX3J4X3JlcGx5X3NjYW4oc3RydWN0IGl3 bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIpCj4gwqB7Cj4gwqAjaWZkZWYgQ09ORklH X0lXTFdJRklfREVCVUcKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAo c3RydWN0IGl3bF9yeF9wYWNrZXQgKilyeGItPnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKgIHN0cnVj dCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKgIMKgIMKgIMKgc3RydWN0 IGl3bF9zY2FucmVxX25vdGlmaWNhdGlvbiAqbm90aWYgPQo+IMKgIMKgIMKgIMKgIMKgIMKgKHN0 cnVjdCBpd2xfc2NhbnJlcV9ub3RpZmljYXRpb24gKilwa3QtPnUucmF3Owo+Cj4gQEAgLTE2Nyw3 ICsxNjcsNyBAQCBzdGF0aWMgdm9pZCBpd2xfcnhfcmVwbHlfc2NhbihzdHJ1Y3QgaXdsX3ByaXYg KnByaXYsCj4gwqBzdGF0aWMgdm9pZCBpd2xfcnhfc2Nhbl9zdGFydF9ub3RpZihzdHJ1Y3QgaXds X3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKg IMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQgKily eGItPnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSBy eGJfYWRkcihyeGIpOwo+IMKgIMKgIMKgIMKgc3RydWN0IGl3bF9zY2Fuc3RhcnRfbm90aWZpY2F0 aW9uICpub3RpZiA9Cj4gwqAgwqAgwqAgwqAgwqAgwqAoc3RydWN0IGl3bF9zY2Fuc3RhcnRfbm90 aWZpY2F0aW9uICopcGt0LT51LnJhdzsKPiDCoCDCoCDCoCDCoHByaXYtPnNjYW5fc3RhcnRfdHNm ID0gbGUzMl90b19jcHUobm90aWYtPnRzZl9sb3cpOwo+IEBAIC0xODYsNyArMTg2LDcgQEAgc3Rh dGljIHZvaWQgaXdsX3J4X3NjYW5fcmVzdWx0c19ub3RpZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYs Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4YikKPiDCoHsKPiDCoCNpZmRlZiBDT05GSUdf SVdMV0lGSV9ERUJVRwo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IChz dHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0 IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3Qg aXdsX3NjYW5yZXN1bHRzX25vdGlmaWNhdGlvbiAqbm90aWYgPQo+IMKgIMKgIMKgIMKgIMKgIMKg KHN0cnVjdCBpd2xfc2NhbnJlc3VsdHNfbm90aWZpY2F0aW9uICopcGt0LT51LnJhdzsKPgo+IEBA IC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIHZvaWQgaXdsX3J4X3NjYW5fY29tcGxldGVfbm90aWYo c3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+ IMKgewo+IMKgI2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHCj4gLSDCoCDCoCDCoCBzdHJ1Y3Qg aXdsX3J4X3BhY2tldCAqcGt0ID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0ICopcnhiLT5za2ItPmRh dGE7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhi KTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfc2NhbmNvbXBsZXRlX25vdGlmaWNhdGlvbiAqc2Nh bl9ub3RpZiA9ICh2b2lkICopcGt0LT51LnJhdzsKPgo+IMKgIMKgIMKgIMKgSVdMX0RFQlVHX1ND QU4ocHJpdiwgIlNjYW4gY29tcGxldGU6ICVkIGNoYW5uZWxzIChUU0YgMHglMDhYOiUwOFgpIC0g JWRcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXNw ZWN0cnVtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zcGVjdHJ1bS5jCj4g aW5kZXggMDIyYmNmMS4uMWVhNWNkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVz cy9pd2x3aWZpL2l3bC1zcGVjdHJ1bS5jCj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXds d2lmaS9pd2wtc3BlY3RydW0uYwo+IEBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGludCBpd2xf Z2V0X21lYXN1cmVtZW50KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoHN0YXRpYyB2b2lkIGl3 bF9yeF9zcGVjdHJ1bV9tZWFzdXJlX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+IMKgewo+IC0gwqAgwqAgwqAgc3RydWN0 IGl3bF9yeF9wYWNrZXQgKnBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXJ4Yi0+c2tiLT5k YXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4 Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3NwZWN0cnVtX25vdGlmaWNhdGlvbiAqcmVwb3J0 ID0gJihwa3QtPnUuc3BlY3RydW1fbm90aWYpOwo+Cj4gwqAgwqAgwqAgwqBpZiAoIXJlcG9ydC0+ c3RhdGUpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wt c3RhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zdGEuYwo+IGluZGV4IGM2 NjMzZmUuLmRjNzRjMTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lm aS9pd2wtc3RhLmMKPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zdGEu Ywo+IEBAIC05OSwzMiArOTksMjUgQEAgc3RhdGljIHZvaWQgaXdsX3N0YV91Y29kZV9hY3RpdmF0 ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHU4IHN0YV9pZCkKPgo+IMKgc3RhdGljIHZvaWQgaXds X2FkZF9zdGFfY2FsbGJhY2soc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBpd2xfZGV2aWNlX2NtZCAq Y21kLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KQo+IMKgewo+IC0gwqAgwqAg wqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnJlcyA9IE5VTEw7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3Qg aXdsX2FkZHN0YV9jbWQgKmFkZHN0YSA9Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoc3RydWN0 IGl3bF9hZGRzdGFfY21kICopY21kLT5jbWQucGF5bG9hZDsKPiDCoCDCoCDCoCDCoHU4IHN0YV9p ZCA9IGFkZHN0YS0+c3RhLnN0YV9pZDsKPgo+IC0gwqAgwqAgwqAgaWYgKCFza2IpIHsKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIElXTF9FUlIocHJpdiwgIkVycm9yOiBSZXNwb25zZSBOVUxMIGlu IFJFUExZX0FERF9TVEEuXG4iKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPiAt IMKgIMKgIMKgIH0KPiAtCj4gLSDCoCDCoCDCoCByZXMgPSAoc3RydWN0IGl3bF9yeF9wYWNrZXQg Kilza2ItPmRhdGE7Cj4gLSDCoCDCoCDCoCBpZiAocmVzLT5oZHIuZmxhZ3MgJiBJV0xfQ01EX0ZB SUxFRF9NU0spIHsKPiArIMKgIMKgIMKgIGlmIChwa3QtPmhkci5mbGFncyAmIElXTF9DTURfRkFJ TEVEX01TSykgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVdMX0VSUihwcml2LCAiQmFkIHJl dHVybiBmcm9tIFJFUExZX0FERF9TVEEgKDB4JTA4WClcbiIsCj4gLSDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCByZXMtPmhkci5mbGFncyk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBwa3QtPmhkci5mbGFncyk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqByZXR1cm47Cj4gwqAgwqAgwqAgwqB9Cj4KPiAtIMKgIMKgIMKgIHN3aXRjaCAocmVzLT51 LmFkZF9zdGEuc3RhdHVzKSB7Cj4gKyDCoCDCoCDCoCBzd2l0Y2ggKHBrdC0+dS5hZGRfc3RhLnN0 YXR1cykgewo+IMKgIMKgIMKgIMKgY2FzZSBBRERfU1RBX1NVQ0NFU1NfTVNLOgo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgaXdsX3N0YV91Y29kZV9hY3RpdmF0ZShwcml2LCBzdGFfaWQpOwo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIGZhbGwgdGhyb3VnaCAqLwo+IMKgIMKgIMKgIMKgZGVm YXVsdDoKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElXTF9ERUJVR19IQyhwcml2LCAiUmVjZWl2 ZWQgUkVQTFlfQUREX1NUQTooMHglMDhYKVxuIiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgcmVzLT51LmFkZF9zdGEuc3RhdHVzKTsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcGt0LT51LmFkZF9zdGEuc3RhdHVzKTsKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgfQo+IMKgfQo+IEBAIC0x MzIsNyArMTI1LDcgQEAgc3RhdGljIHZvaWQgaXdsX2FkZF9zdGFfY2FsbGJhY2soc3RydWN0IGl3 bF9wcml2ICpwcml2LAo+IMKgaW50IGl3bF9zZW5kX2FkZF9zdGEoc3RydWN0IGl3bF9wcml2ICpw cml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBpd2xfYWRkc3RhX2Nt ZCAqc3RhLCB1OCBmbGFncykKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0 ICpyZXMgPSBOVUxMOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IE5V TEw7Cj4gwqAgwqAgwqAgwqBpbnQgcmV0ID0gMDsKPiDCoCDCoCDCoCDCoHU4IGRhdGFbc2l6ZW9m KCpzdGEpXTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfaG9zdF9jbWQgY21kID0gewo+IEBAIC0x NTIsMTUgKzE0NSwxNSBAQCBpbnQgaXdsX3NlbmRfYWRkX3N0YShzdHJ1Y3QgaXdsX3ByaXYgKnBy aXYsCj4gwqAgwqAgwqAgwqBpZiAocmV0IHx8IChmbGFncyAmIENNRF9BU1lOQykpCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gcmV0Owo+Cj4gLSDCoCDCoCDCoCByZXMgPSAoc3RydWN0 IGl3bF9yeF9wYWNrZXQgKiljbWQucmVwbHlfc2tiLT5kYXRhOwo+IC0gwqAgwqAgwqAgaWYgKHJl cy0+aGRyLmZsYWdzICYgSVdMX0NNRF9GQUlMRURfTVNLKSB7Cj4gKyDCoCDCoCDCoCBwa3QgPSAo c3RydWN0IGl3bF9yeF9wYWNrZXQgKiljbWQucmVwbHlfcGFnZTsKPiArIMKgIMKgIMKgIGlmIChw a3QtPmhkci5mbGFncyAmIElXTF9DTURfRkFJTEVEX01TSykgewo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgSVdMX0VSUihwcml2LCAiQmFkIHJldHVybiBmcm9tIFJFUExZX0FERF9TVEEgKDB4JTA4 WClcbiIsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXMtPmhkci5m bGFncyk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwa3QtPmhkci5m bGFncyk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXQgPSAtRUlPOwo+IMKgIMKgIMKgIMKg fQo+Cj4gwqAgwqAgwqAgwqBpZiAocmV0ID09IDApIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHN3aXRjaCAocmVzLT51LmFkZF9zdGEuc3RhdHVzKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBzd2l0Y2ggKHBrdC0+dS5hZGRfc3RhLnN0YXR1cykgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgY2FzZSBBRERfU1RBX1NVQ0NFU1NfTVNLOgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaXdsX3N0YV91Y29kZV9hY3RpdmF0ZShwcml2LCBzdGEtPnN0YS5zdGFfaWQpOwo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVdMX0RFQlVHX0lORk8ocHJpdiwg IlJFUExZX0FERF9TVEEgUEFTU0VEXG4iKTsKPiBAQCAtMTcyLDggKzE2NSw4IEBAIGludCBpd2xf c2VuZF9hZGRfc3RhKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoH0KPiDCoCDCoCDCoCDCoH0KPgo+IC0gwqAgwqAgwqAgcHJpdi0+YWxsb2NfcnhiX3NrYi0t Owo+IC0gwqAgwqAgwqAgZGV2X2tmcmVlX3NrYl9hbnkoY21kLnJlcGx5X3NrYik7Cj4gKyDCoCDC oCDCoCBwcml2LT5hbGxvY19yeGJfcGFnZS0tOwo+ICsgwqAgwqAgwqAgZnJlZV9wYWdlcyhjbWQu cmVwbHlfcGFnZSwgcHJpdi0+aHdfcGFyYW1zLnJ4X3BhZ2Vfb3JkZXIpOwo+Cj4gwqAgwqAgwqAg wqByZXR1cm4gcmV0Owo+IMKgfQo+IEBAIC0zMjQsMjYgKzMxNywxOSBAQCBzdGF0aWMgdm9pZCBp d2xfc3RhX3Vjb2RlX2RlYWN0aXZhdGUoc3RydWN0IGl3bF9wcml2ICpwcml2LCBjb25zdCBjaGFy ICphZGRyKQo+Cj4gwqBzdGF0aWMgdm9pZCBpd2xfcmVtb3ZlX3N0YV9jYWxsYmFjayhzdHJ1Y3Qg aXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX2RldmljZV9jbWQgKmNtZCwKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBza19idWZmICpz a2IpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KQo+IMKgewo+IC0gwqAgwqAgwqAgc3RydWN0IGl3 bF9yeF9wYWNrZXQgKnJlcyA9IE5VTEw7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3JlbV9zdGFf Y21kICpybV9zdGEgPQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoc3RydWN0IGl3bF9yZW1f c3RhX2NtZCAqKWNtZC0+Y21kLnBheWxvYWQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCAoc3RydWN0IGl3bF9yZW1fc3RhX2NtZCAqKWNtZC0+Y21kLnBheWxvYWQ7Cj4gwqAg wqAgwqAgwqBjb25zdCBjaGFyICphZGRyID0gcm1fc3RhLT5hZGRyOwo+Cj4gLSDCoCDCoCDCoCBp ZiAoIXNrYikgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVdMX0VSUihwcml2LCAiRXJyb3I6 IFJlc3BvbnNlIE5VTEwgaW4gUkVQTFlfUkVNT1ZFX1NUQS5cbiIpOwo+IC0gwqAgwqAgwqAgwqAg wqAgwqAgwqAgcmV0dXJuOwo+IC0gwqAgwqAgwqAgfQo+IC0KPiAtIMKgIMKgIMKgIHJlcyA9IChz dHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXNrYi0+ZGF0YTsKPiAtIMKgIMKgIMKgIGlmIChyZXMtPmhk ci5mbGFncyAmIElXTF9DTURfRkFJTEVEX01TSykgewo+ICsgwqAgwqAgwqAgaWYgKHBrdC0+aGRy LmZsYWdzICYgSVdMX0NNRF9GQUlMRURfTVNLKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJ V0xfRVJSKHByaXYsICJCYWQgcmV0dXJuIGZyb20gUkVQTFlfUkVNT1ZFX1NUQSAoMHglMDhYKVxu IiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcy0+aGRyLmZsYWdzKTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHBrdC0+aGRyLmZsYWdzKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJl dHVybjsKPiDCoCDCoCDCoCDCoH0KPgo+IC0gwqAgwqAgwqAgc3dpdGNoIChyZXMtPnUucmVtX3N0 YS5zdGF0dXMpIHsKPiArIMKgIMKgIMKgIHN3aXRjaCAocGt0LT51LnJlbV9zdGEuc3RhdHVzKSB7 Cj4gwqAgwqAgwqAgwqBjYXNlIFJFTV9TVEFfU1VDQ0VTU19NU0s6Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpd2xfc3RhX3Vjb2RlX2RlYWN0aXZhdGUocHJpdiwgYWRkcik7Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBicmVhazsKPiBAQCAtMzU2LDcgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGl3 bF9yZW1vdmVfc3RhX2NhbGxiYWNrKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoHN0YXRpYyBp bnQgaXdsX3NlbmRfcmVtb3ZlX3N0YXRpb24oc3RydWN0IGl3bF9wcml2ICpwcml2LCBjb25zdCB1 OCAqYWRkciwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB1OCBmbGFncykKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpy ZXMgPSBOVUxMOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdDsKPiDCoCDC oCDCoCDCoGludCByZXQ7Cj4KPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcmVtX3N0YV9jbWQgcm1f c3RhX2NtZDsKPiBAQCAtMzgxLDE1ICszNjcsMTUgQEAgc3RhdGljIGludCBpd2xfc2VuZF9yZW1v dmVfc3RhdGlvbihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIGNvbnN0IHU4ICphZGRyLAo+IMKgIMKg IMKgIMKgaWYgKHJldCB8fCAoZmxhZ3MgJiBDTURfQVNZTkMpKQo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcmV0dXJuIHJldDsKPgo+IC0gwqAgwqAgwqAgcmVzID0gKHN0cnVjdCBpd2xfcnhfcGFj a2V0ICopY21kLnJlcGx5X3NrYi0+ZGF0YTsKPiAtIMKgIMKgIMKgIGlmIChyZXMtPmhkci5mbGFn cyAmIElXTF9DTURfRkFJTEVEX01TSykgewo+ICsgwqAgwqAgwqAgcGt0ID0gKHN0cnVjdCBpd2xf cnhfcGFja2V0ICopY21kLnJlcGx5X3BhZ2U7Cj4gKyDCoCDCoCDCoCBpZiAocGt0LT5oZHIuZmxh Z3MgJiBJV0xfQ01EX0ZBSUxFRF9NU0spIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElXTF9F UlIocHJpdiwgIkJhZCByZXR1cm4gZnJvbSBSRVBMWV9SRU1PVkVfU1RBICgweCUwOFgpXG4iLAo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVzLT5oZHIuZmxhZ3MpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGt0LT5oZHIuZmxhZ3MpOwo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0ID0gLUVJTzsKPiDCoCDCoCDCoCDCoH0KPgo+IMKg IMKgIMKgIMKgaWYgKCFyZXQpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN3aXRjaCAocmVz LT51LnJlbV9zdGEuc3RhdHVzKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzd2l0Y2ggKHBr dC0+dS5yZW1fc3RhLnN0YXR1cykgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2FzZSBSRU1f U1RBX1NVQ0NFU1NfTVNLOgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaXds X3N0YV91Y29kZV9kZWFjdGl2YXRlKHByaXYsIGFkZHIpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgSVdMX0RFQlVHX0FTU09DKHByaXYsICJSRVBMWV9SRU1PVkVfU1RBIFBB U1NFRFxuIik7Cj4gQEAgLTQwMSw4ICszODcsOCBAQCBzdGF0aWMgaW50IGl3bF9zZW5kX3JlbW92 ZV9zdGF0aW9uKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgY29uc3QgdTggKmFkZHIsCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqB9Cj4KPiAtIMKgIMKgIMKgIHByaXYtPmFs bG9jX3J4Yl9za2ItLTsKPiAtIMKgIMKgIMKgIGRldl9rZnJlZV9za2JfYW55KGNtZC5yZXBseV9z a2IpOwo+ICsgwqAgwqAgwqAgcHJpdi0+YWxsb2NfcnhiX3BhZ2UtLTsKPiArIMKgIMKgIMKgIGZy ZWVfcGFnZXMoY21kLnJlcGx5X3BhZ2UsIHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyKTsK Pgo+IMKgIMKgIMKgIMKgcmV0dXJuIHJldDsKPiDCoH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdp ZmkvaXdsLXR4LmMKPiBpbmRleCBkMGJkN2NkLi41YzQzZDdjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXR4LmMKPiArKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9pd2x3aWZpL2l3bC10eC5jCj4gQEAgLTExNTMsNyArMTE1Myw3IEBAIHN0YXRpYyB2b2lk IGl3bF9oY21kX3F1ZXVlX3JlY2xhaW0oc3RydWN0IGl3bF9wcml2ICpwcml2LCBpbnQgdHhxX2lk LAo+IMKgKi8KPiDCoHZvaWQgaXdsX3R4X2NtZF9jb21wbGV0ZShzdHJ1Y3QgaXdsX3ByaXYgKnBy aXYsIHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+IMKgewo+IC0gwqAgwqAgwqAgc3Ry dWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXJ4Yi0+c2ti LT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRy KHJ4Yik7Cj4gwqAgwqAgwqAgwqB1MTYgc2VxdWVuY2UgPSBsZTE2X3RvX2NwdShwa3QtPmhkci5z ZXF1ZW5jZSk7Cj4gwqAgwqAgwqAgwqBpbnQgdHhxX2lkID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNl KTsKPiDCoCDCoCDCoCDCoGludCBpbmRleCA9IFNFUV9UT19JTkRFWChzZXF1ZW5jZSk7Cj4gQEAg LTExODAsMTAgKzExODAsMTAgQEAgdm9pZCBpd2xfdHhfY21kX2NvbXBsZXRlKHN0cnVjdCBpd2xf cHJpdiAqcHJpdiwgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGIpCj4KPiDCoCDCoCDCoCDC oC8qIElucHV0IGVycm9yIGNoZWNraW5nIGlzIGRvbmUgd2hlbiBjb21tYW5kcyBhcmUgYWRkZWQg dG8gcXVldWUuICovCj4gwqAgwqAgwqAgwqBpZiAobWV0YS0+ZmxhZ3MgJiBDTURfV0FOVF9TS0Ip IHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1ldGEtPnNvdXJjZS0+cmVwbHlfc2tiID0gcnhi LT5za2I7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnNrYiA9IE5VTEw7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBtZXRhLT5zb3VyY2UtPnJlcGx5X3BhZ2UgPSAodW5zaWduZWQgbG9u ZylyeGJfYWRkcihyeGIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcnhiLT5wYWdlID0gTlVM TDsKPiDCoCDCoCDCoCDCoH0gZWxzZSBpZiAobWV0YS0+Y2FsbGJhY2spCj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCBtZXRhLT5jYWxsYmFjayhwcml2LCBjbWQsIHJ4Yi0+c2tiKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIG1ldGEtPmNhbGxiYWNrKHByaXYsIGNtZCwgcGt0KTsKPgo+IMKgIMKg IMKgIMKgaXdsX2hjbWRfcXVldWVfcmVjbGFpbShwcml2LCB0eHFfaWQsIGluZGV4LCBjbWRfaW5k ZXgpOwo+Cj4gQEAgLTE0NDIsNyArMTQ0Miw3IEBAIHN0YXRpYyBpbnQgaXdsX3R4X3N0YXR1c19y ZXBseV9jb21wcmVzc2VkX2JhKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoHZvaWQgaXdsX3J4 X3JlcGx5X2NvbXByZXNzZWRfYmEoc3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVj dCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+IMKgewo+IC0gwqAgwqAgwqAgc3RydWN0IGl3bF9y eF9wYWNrZXQgKnBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4g wqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX2NvbXByZXNzZWRfYmFfcmVzcCAqYmFfcmVzcCA9ICZwa3Qt PnUuY29tcHJlc3NlZF9iYTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfdHhfcXVldWUgKnR4cSA9 IE5VTEw7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX2h0X2FnZyAqYWdnOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bDM5NDUtYmFzZS5jIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wzOTQ1LWJhc2UuYwo+IGluZGV4IDUxNWYyOWIuLjU5Nzdh NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wzOTQ1LWJh c2UuYwo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsMzk0NS1iYXNlLmMK PiBAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyBpbnQgaXdsMzk0NV9nZXRfbWVhc3VyZW1lbnQo c3RydWN0IGl3bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHU4IHR5cGUpCj4gwqB7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3NwZWN0 cnVtX2NtZCBzcGVjdHJ1bTsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpyZXM7 Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0Owo+IMKgIMKgIMKgIMKgc3Ry dWN0IGl3bF9ob3N0X2NtZCBjbWQgPSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAuaWQgPSBS RVBMWV9TUEVDVFJVTV9NRUFTVVJFTUVOVF9DTUQsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAu ZGF0YSA9ICh2b2lkICopJnNwZWN0cnVtLAo+IEBAIC03OTAsMTggKzc5MCwxOCBAQCBzdGF0aWMg aW50IGl3bDM5NDVfZ2V0X21lYXN1cmVtZW50KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDC oCDCoCDCoGlmIChyYykKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiByYzsKPgo+IC0g wqAgwqAgwqAgcmVzID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0ICopY21kLnJlcGx5X3NrYi0+ZGF0 YTsKPiAtIMKgIMKgIMKgIGlmIChyZXMtPmhkci5mbGFncyAmIElXTF9DTURfRkFJTEVEX01TSykg ewo+ICsgwqAgwqAgwqAgcGt0ID0gKHN0cnVjdCBpd2xfcnhfcGFja2V0ICopY21kLnJlcGx5X3Bh Z2U7Cj4gKyDCoCDCoCDCoCBpZiAocGt0LT5oZHIuZmxhZ3MgJiBJV0xfQ01EX0ZBSUxFRF9NU0sp IHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElXTF9FUlIocHJpdiwgIkJhZCByZXR1cm4gZnJv bSBSRVBMWV9SWF9PTl9BU1NPQyBjb21tYW5kXG4iKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oHJjID0gLUVJTzsKPiDCoCDCoCDCoCDCoH0KPgo+IC0gwqAgwqAgwqAgc3BlY3RydW1fcmVzcF9z dGF0dXMgPSBsZTE2X3RvX2NwdShyZXMtPnUuc3BlY3RydW0uc3RhdHVzKTsKPiArIMKgIMKgIMKg IHNwZWN0cnVtX3Jlc3Bfc3RhdHVzID0gbGUxNl90b19jcHUocGt0LT51LnNwZWN0cnVtLnN0YXR1 cyk7Cj4gwqAgwqAgwqAgwqBzd2l0Y2ggKHNwZWN0cnVtX3Jlc3Bfc3RhdHVzKSB7Cj4gwqAgwqAg wqAgwqBjYXNlIDA6IMKgIMKgIMKgIMKgIC8qIENvbW1hbmQgd2lsbCBiZSBoYW5kbGVkICovCj4g LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocmVzLT51LnNwZWN0cnVtLmlkICE9IDB4ZmYpIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwa3QtPnUuc3BlY3RydW0uaWQgIT0gMHhmZikg ewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVdMX0RFQlVHX0lORk8ocHJp diwgIlJlcGxhY2VkIGV4aXN0aW5nIG1lYXN1cmVtZW50OiAlZFxuIiwKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHJlcy0+dS5zcGVjdHJ1bS5pZCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwa3QtPnUuc3BlY3RydW0uaWQp Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcHJpdi0+bWVhc3VyZW1lbnRf c3RhdHVzICY9IH5NRUFTVVJFTUVOVF9SRUFEWTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0K PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHByaXYtPm1lYXN1cmVtZW50X3N0YXR1cyB8PSBNRUFT VVJFTUVOVF9BQ1RJVkU7Cj4gQEAgLTgxMyw3ICs4MTMsNyBAQCBzdGF0aWMgaW50IGl3bDM5NDVf Z2V0X21lYXN1cmVtZW50KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDCoCBkZXZfa2ZyZWVfc2ti X2FueShjbWQucmVwbHlfc2tiKTsKPiArIMKgIMKgIMKgIGZyZWVfcGFnZXMoY21kLnJlcGx5X3Bh Z2UsIHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyKTsKPgo+IMKgIMKgIMKgIMKgcmV0dXJu IHJjOwo+IMKgfQo+IEBAIC04MjIsNyArODIyLDcgQEAgc3RhdGljIGludCBpd2wzOTQ1X2dldF9t ZWFzdXJlbWVudChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqBzdGF0aWMgdm9pZCBpd2wzOTQ1 X3J4X3JlcGx5X2FsaXZlKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X21lbV9idWZmZXIgKnJ4 YikKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSAodm9pZCAq KXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9 IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX2FsaXZlX3Jlc3AgKnBhbGl2 ZTsKPiDCoCDCoCDCoCDCoHN0cnVjdCBkZWxheWVkX3dvcmsgKnB3b3JrOwo+Cj4gQEAgLTg1OSw3 ICs4NTksNyBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X3J4X3JlcGx5X2FkZF9zdGEoc3RydWN0IGl3 bF9wcml2ICpwcml2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+IMKgewo+IMKgI2lmZGVmIENP TkZJR19JV0xXSUZJX0RFQlVHCj4gLSDCoCDCoCDCoCBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0 ID0gKHZvaWQgKilyeGItPnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFj a2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKgI2VuZGlmCj4KPiDCoCDCoCDCoCDCoElXTF9E RUJVR19SWChwcml2LCAiUmVjZWl2ZWQgUkVQTFlfQUREX1NUQTogMHglMDJYXG4iLCBwa3QtPnUu c3RhdHVzKTsKPiBAQCAtODk1LDcgKzg5NSw3IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhfYmVh Y29uX25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcnhfbWVtX2J1ZmZlciAqcnhiKQo+ IMKgewo+IMKgI2lmZGVmIENPTkZJR19JV0xXSUZJX0RFQlVHCj4gLSDCoCDCoCDCoCBzdHJ1Y3Qg aXdsX3J4X3BhY2tldCAqcGt0ID0gKHZvaWQgKilyeGItPnNrYi0+ZGF0YTsKPiArIMKgIMKgIMKg IHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpOwo+IMKgIMKgIMKgIMKg c3RydWN0IGl3bDM5NDVfYmVhY29uX25vdGlmICpiZWFjb24gPSAmKHBrdC0+dS5iZWFjb25fc3Rh dHVzKTsKPiDCoCDCoCDCoCDCoHU4IHJhdGUgPSBiZWFjb24tPmJlYWNvbl9ub3RpZnlfaGRyLnJh dGU7Cj4KPiBAQCAtOTE4LDcgKzkxOCw3IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhfYmVhY29u X25vdGlmKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhf Y2FyZF9zdGF0ZV9ub3RpZihzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaXdsX3J4X21lbV9i dWZmZXIgKnJ4YikKPiDCoHsKPiAtIMKgIMKgIMKgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3Qg PSAodm9pZCAqKXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgc3RydWN0IGl3bF9yeF9wYWNr ZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7Cj4gwqAgwqAgwqAgwqB1MzIgZmxhZ3MgPSBsZTMyX3Rv X2NwdShwa3QtPnUuY2FyZF9zdGF0ZV9ub3RpZi5mbGFncyk7Cj4gwqAgwqAgwqAgwqB1bnNpZ25l ZCBsb25nIHN0YXR1cyA9IHByaXYtPnN0YXR1czsKPgo+IEBAIC0xMDgyLDcgKzEwODIsNyBAQCBz dGF0aWMgaW50IGl3bDM5NDVfcnhfcXVldWVfcmVzdG9jayhzdHJ1Y3QgaXdsX3ByaXYgKnByaXYp Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBsaXN0X2RlbChlbGVtZW50KTsKPgo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgLyogUG9pbnQgdG8gUnggYnVmZmVyIHZpYSBuZXh0IFJCRCBpbiBjaXJj dWxhciBidWZmZXIgKi8KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4cS0+YmRbcnhxLT53cml0 ZV0gPSBpd2wzOTQ1X2RtYV9hZGRyMnJiZF9wdHIocHJpdiwgcnhiLT5yZWFsX2RtYV9hZGRyKTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4cS0+YmRbcnhxLT53cml0ZV0gPSBpd2wzOTQ1X2Rt YV9hZGRyMnJiZF9wdHIocHJpdiwgcnhiLT5wYWdlX2RtYSk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqByeHEtPnF1ZXVlW3J4cS0+d3JpdGVdID0gcnhiOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgcnhxLT53cml0ZSA9IChyeHEtPndyaXRlICsgMSkgJiBSWF9RVUVVRV9NQVNLOwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgcnhxLT5mcmVlX2NvdW50LS07Cj4gQEAgLTExMjIsNyArMTEyMiw3 IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhfYWxsb2NhdGUoc3RydWN0IGl3bF9wcml2ICpwcml2 LCBnZnBfdCBwcmlvcml0eSkKPiDCoCDCoCDCoCDCoHN0cnVjdCBpd2xfcnhfcXVldWUgKnJ4cSA9 ICZwcml2LT5yeHE7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgbGlzdF9oZWFkICplbGVtZW50Owo+IMKg IMKgIMKgIMKgc3RydWN0IGl3bF9yeF9tZW1fYnVmZmVyICpyeGI7Cj4gLSDCoCDCoCDCoCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiOwo+ICsgwqAgwqAgwqAgc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gwqAgwqAg wqAgwqB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4gwqAgwqAgwqAgwqB3aGlsZSAoMSkgewo+IEBA IC0xMTM2LDkgKzExMzYsMTMgQEAgc3RhdGljIHZvaWQgaXdsMzk0NV9yeF9hbGxvY2F0ZShzdHJ1 Y3QgaXdsX3ByaXYgKnByaXYsIGdmcF90IHByaW9yaXR5KQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBpZiAocnhxLT5mcmVlX2NvdW50ID4gUlhfTE9XX1dBVEVSTUFSSykKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHByaW9yaXR5IHw9IF9fR0ZQX05PV0FSTjsKPiArCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocHJpdi0+aHdfcGFyYW1zLnJ4X3BhZ2Vfb3JkZXIg PiAwKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpb3JpdHkgfD0gX19H RlBfQ09NUDsKPiArCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBBbGxvYyBhIG5ldyByZWNl aXZlIGJ1ZmZlciAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2tiID0gYWxsb2Nfc2tiKHBy aXYtPmh3X3BhcmFtcy5yeF9idWZfc2l6ZSwgcHJpb3JpdHkpOwo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgaWYgKCFza2IpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBhZ2UgPSBhbGxvY19w YWdlcyhwcmlvcml0eSwgcHJpdi0+aHdfcGFyYW1zLnJ4X3BhZ2Vfb3JkZXIpOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgaWYgKCFwYWdlKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpZiAobmV0X3JhdGVsaW1pdCgpKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgSVdMX0RFQlVHX0lORk8ocHJpdiwgIkZhaWxlZCB0byBhbGxv Y2F0ZSBTS0IgYnVmZmVyLlxuIik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBpZiAoKHJ4cS0+ZnJlZV9jb3VudCA8PSBSWF9MT1dfV0FURVJNQVJLKSAmJgo+IEBAIC0xMTU1 LDcgKzExNTksNyBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X3J4X2FsbG9jYXRlKHN0cnVjdCBpd2xf cHJpdiAqcHJpdiwgZ2ZwX3QgcHJpb3JpdHkpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzcGlu X2xvY2tfaXJxc2F2ZSgmcnhxLT5sb2NrLCBmbGFncyk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBpZiAobGlzdF9lbXB0eSgmcnhxLT5yeF91c2VkKSkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnhxLT5sb2NrLCBmbGFncyk7 Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXZfa2ZyZWVfc2tiX2FueShz a2IpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19mcmVlX3BhZ2VzKHBh Z2UsIHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHJldHVybjsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGVsZW1lbnQgPSByeHEtPnJ4X3VzZWQubmV4dDsKPiBAQCAtMTE2 MywyNiArMTE2NywxOCBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X3J4X2FsbG9jYXRlKHN0cnVjdCBp d2xfcHJpdiAqcHJpdiwgZ2ZwX3QgcHJpb3JpdHkpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBs aXN0X2RlbChlbGVtZW50KTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnJ4cS0+bG9jaywgZmxhZ3MpOwo+Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBy eGItPnNrYiA9IHNrYjsKPiAtCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBJZiByYWRpb3Rh cCBoZWFkIGlzIHJlcXVpcmVkLCByZXNlcnZlIHNvbWUgaGVhZHJvb20gaGVyZS4KPiAtIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgKiBUaGUgcGh5c2ljYWwgaGVhZCBjb3VudCBpcyBhIHZhcmlhYmxl IHJ4X3N0YXRzLT5waHlfY291bnQuCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogV2UgcmVz ZXJ2ZSA0IGJ5dGVzIGhlcmUuIFBsdXMgdGhlc2UgZXh0cmEgYnl0ZXMsIHRoZQo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAqIGhlYWRyb29tIG9mIHRoZSBwaHlzaWNhbCBoZWFkIHNob3VsZCBi ZSBlbm91Z2ggZm9yIHRoZQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIHJhZGlvdGFwIGhl YWQgdGhhdCBpd2wzOTQ1IHN1cHBvcnRlZC4gU2VlIGl3bDM5NDVfcnQuCj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCovCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBza2JfcmVzZXJ2ZShyeGIt PnNrYiwgNCk7Cj4gLQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcnhiLT5wYWdlID0gcGFnZTsK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIEdldCBwaHlzaWNhbCBhZGRyZXNzIG9mIFJCL1NL QiAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcnhiLT5yZWFsX2RtYV9hZGRyID0gcGNpX21h cF9zaW5nbGUocHJpdi0+cGNpX2RldiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4Yi0+c2tiLT5kYXRhLAo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgcHJpdi0+aHdfcGFyYW1zLnJ4X2J1Zl9zaXplLAo+IC0gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgUENJX0RNQV9GUk9NREVWSUNFKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4Yi0+cGFn ZV9kbWEgPSBwY2lfbWFwX3BhZ2UocHJpdi0+cGNpX2RldiwgcGFnZSwgMCwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFBBR0VfU0laRSA8PCBwcml2LT5o d19wYXJhbXMucnhfcGFnZV9vcmRlciwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIFBDSV9ETUFfRlJPTURFVklDRSk7Cj4KPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHNwaW5fbG9ja19pcnFzYXZlKCZyeHEtPmxvY2ssIGZsYWdzKTsKPiArCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBsaXN0X2FkZF90YWlsKCZyeGItPmxpc3QsICZyeHEtPnJ4X2ZyZWUp Owo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpdi0+YWxsb2NfcnhiX3NrYisrOwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgcnhxLT5mcmVlX2NvdW50Kys7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBwcml2LT5hbGxvY19yeGJfcGFnZSsrOwo+ICsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJ4cS0+bG9jaywgZmxhZ3MpOwo+IMKgIMKgIMKgIMKg fQo+IMKgfQo+IEBAIC0xMTk4LDE0ICsxMTk0LDE0IEBAIHZvaWQgaXdsMzk0NV9yeF9xdWV1ZV9y ZXNldChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpd2xfcnhfcXVldWUgKnJ4cSkKPiDC oCDCoCDCoCDCoGZvciAoaSA9IDA7IGkgPCBSWF9GUkVFX0JVRkZFUlMgKyBSWF9RVUVVRV9TSVpF OyBpKyspIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIEluIHRoZSByZXNldCBmdW5jdGlv biwgdGhlc2UgYnVmZmVycyBtYXkgaGF2ZSBiZWVuIGFsbG9jYXRlZAo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICogdG8gYW4gU0tCLCBzbyB3ZSBuZWVkIHRvIHVubWFwIGFuZCBmcmVlIHBvdGVu dGlhbCBzdG9yYWdlICovCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocnhxLT5wb29sW2ld LnNrYiAhPSBOVUxMKSB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwY2lf dW5tYXBfc2luZ2xlKHByaXYtPnBjaV9kZXYsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJ4cS0+cG9vbFtpXS5yZWFsX2RtYV9h ZGRyLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMucnhfYnVmX3NpemUsCj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFBDSV9ETUFfRlJP TURFVklDRSk7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcml2LT5hbGxv Y19yeGJfc2tiLS07Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXZfa2Zy ZWVfc2tiKHJ4cS0+cG9vbFtpXS5za2IpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgcnhxLT5wb29sW2ldLnNrYiA9IE5VTEw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBp ZiAocnhxLT5wb29sW2ldLnBhZ2UgIT0gTlVMTCkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcGNpX3VubWFwX3BhZ2UocHJpdi0+cGNpX2RldiwgcnhxLT5wb29sW2ldLnBh Z2VfZG1hLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg UEFHRV9TSVpFIDw8IHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyLAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgUENJX0RNQV9GUk9NREVWSUNFKTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaXYtPmFsbG9jX3J4Yl9wYWdl LS07Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZyZWVfcGFnZXMocnhx LT5wb29sW2ldLnBhZ2UsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4cS0+cG9vbFtpXS5wYWdlID0gTlVMTDsKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGxpc3RfYWRk X3RhaWwoJnJ4cS0+cG9vbFtpXS5saXN0LCAmcnhxLT5yeF91c2VkKTsKPiDCoCDCoCDCoCDCoH0K PiBAQCAtMTIxMyw4ICsxMjA5LDggQEAgdm9pZCBpd2wzOTQ1X3J4X3F1ZXVlX3Jlc2V0KHN0cnVj dCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGl3bF9yeF9xdWV1ZSAqcnhxKQo+IMKgIMKgIMKgIMKg LyogU2V0IHVzIHNvIHRoYXQgd2UgaGF2ZSBwcm9jZXNzZWQgYW5kIHVzZWQgYWxsIGJ1ZmZlcnMs IGJ1dCBoYXZlCj4gwqAgwqAgwqAgwqAgKiBub3QgcmVzdG9ja2VkIHRoZSBSeCBxdWV1ZSB3aXRo IGZyZXNoIGJ1ZmZlcnMgKi8KPiDCoCDCoCDCoCDCoHJ4cS0+cmVhZCA9IHJ4cS0+d3JpdGUgPSAw Owo+IC0gwqAgwqAgwqAgcnhxLT5mcmVlX2NvdW50ID0gMDsKPiDCoCDCoCDCoCDCoHJ4cS0+d3Jp dGVfYWN0dWFsID0gMDsKPiArIMKgIMKgIMKgIHJ4cS0+ZnJlZV9jb3VudCA9IDA7Cj4gwqAgwqAg wqAgwqBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyeHEtPmxvY2ssIGZsYWdzKTsKPiDCoH0KPgo+ IEBAIC0xMjQ3LDEyICsxMjQzLDE0IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhfcXVldWVfZnJl ZShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpd2xfcnhfcXVldWUgKnJ4Cj4gwqB7Cj4g wqAgwqAgwqAgwqBpbnQgaTsKPiDCoCDCoCDCoCDCoGZvciAoaSA9IDA7IGkgPCBSWF9RVUVVRV9T SVpFICsgUlhfRlJFRV9CVUZGRVJTOyBpKyspIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlm IChyeHEtPnBvb2xbaV0uc2tiICE9IE5VTEwpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHBjaV91bm1hcF9zaW5nbGUocHJpdi0+cGNpX2RldiwKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcnhxLT5wb29s W2ldLnJlYWxfZG1hX2FkZHIsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHByaXYtPmh3X3BhcmFtcy5yeF9idWZfc2l6ZSwKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgUENJX0RNQV9GUk9NREVWSUNFKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGRldl9rZnJlZV9za2IocnhxLT5wb29sW2ldLnNrYik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpZiAocnhxLT5wb29sW2ldLnBhZ2UgIT0gTlVMTCkgewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcGNpX3VubWFwX3BhZ2UocHJpdi0+cGNpX2RldiwgcnhxLT5wb29s W2ldLnBhZ2VfZG1hLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgUEFHRV9TSVpFIDw8IHByaXYtPmh3X3BhcmFtcy5yeF9wYWdlX29yZGVyLAo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgUENJX0RNQV9GUk9NREVW SUNFKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZnJlZV9wYWdlcyhy eHEtPnBvb2xbaV0ucGFnZSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgcHJpdi0+aHdfcGFyYW1zLnJ4X3BhZ2Vfb3JkZXIpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcnhxLT5wb29sW2ldLnBhZ2UgPSBOVUxMOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpdi0+YWxsb2NfcnhiX3BhZ2Ut LTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiDCoCDCoCDCoCDCoH0KPgo+IEBAIC0xMzg4 LDEwICsxMzg2LDEwIEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfcnhfaGFuZGxlKHN0cnVjdCBpd2xf cHJpdiAqcHJpdikKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcnhxLT5xdWV1ZVtpXSA9IE5V TEw7Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBjaV91bm1hcF9zaW5nbGUocHJpdi0+cGNp X2RldiwgcnhiLT5yZWFsX2RtYV9hZGRyLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcHJpdi0+aHdfcGFyYW1zLnJ4X2J1Zl9zaXplLAo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgUENJX0RNQV9GUk9NREVWSUNF KTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBrdCA9IChzdHJ1Y3QgaXdsX3J4X3BhY2tldCAq KXJ4Yi0+c2tiLT5kYXRhOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGNpX3VubWFwX3BhZ2Uo cHJpdi0+cGNpX2RldiwgcnhiLT5wYWdlX2RtYSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgUEFHRV9TSVpFIDw8IHByaXYtPmh3X3BhcmFtcy5yeF9wYWdl X29yZGVyLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQ Q0lfRE1BX0ZST01ERVZJQ0UpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGt0ID0gcnhiX2Fk ZHIocnhiKTsKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHJhY2VfaXdsd2lmaV9kZXZfcngo cHJpdiwgcGt0LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbGUzMl90b19j cHUocGt0LT5sZW5fbl9mbGFncykgJiBGSF9SU0NTUl9GUkFNRV9TSVpFX01TSyk7Cj4gQEAgLTE0 MTYsMTYgKzE0MTQsMTcgQEAgc3RhdGljIHZvaWQgaXdsMzk0NV9yeF9oYW5kbGUoc3RydWN0IGl3 bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcHJpdi0+ aXNyX3N0YXRzLnJ4X2hhbmRsZXJzW3BrdC0+aGRyLmNtZF0rKzsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoH0gZWxzZSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBO byBoYW5kbGluZyBuZWVkZWQgKi8KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IElXTF9ERUJVR19SWChwcml2LCAiciAlZCBpICVkIE5vIGhhbmRsZXIgbmVlZGVkIGZvciAlcywg MHglMDJ4XG4iLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVdMX0RFQlVH X1JYKHByaXYsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAiciAlZCBpICVkIE5vIGhhbmRsZXIgbmVlZGVkIGZvciAlcywgMHglMDJ4XG4iLAo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgciwgaSwgZ2V0X2NtZF9z dHJpbmcocGt0LT5oZHIuY21kKSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHBrdC0+aGRyLmNtZCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4K PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChyZWNsYWltKSB7Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBJbnZva2UgYW55IGNhbGxiYWNrcywgdHJhbnNmZXIgdGhl IHNrYiB0byBjYWxsZXIsIGFuZAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAqIGZpcmUgb2ZmIHRoZSAocG9zc2libHkpIGJsb2NraW5nIGl3bF9zZW5kX2NtZCgpCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBJbnZva2UgYW55IGNhbGxiYWNrcywg dHJhbnNmZXIgdGhlIGJ1ZmZlciB0byBjYWxsZXIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCogYW5kIGZpcmUgb2ZmIHRoZSAocG9zc2libHkpIGJsb2NraW5nIGl3bF9z ZW5kX2NtZCgpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBhcyB3ZSBy ZWNsYWltIHRoZSBkcml2ZXIgY29tbWFuZCBxdWV1ZSAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgaWYgKHJ4YiAmJiByeGItPnNrYikKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGlmIChyeGIgJiYgcnhiLT5wYWdlKQo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaXdsX3R4X2NtZF9jb21wbGV0ZShwcml2LCBy eGIpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZWxzZQo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVdMX1dBUk4ocHJpdiwgIkNs YWltIG51bGwgcnhiP1xuIik7Cj4gQEAgLTE0MzQsMTAgKzE0MzMsMTAgQEAgc3RhdGljIHZvaWQg aXdsMzk0NV9yeF9oYW5kbGUoc3RydWN0IGl3bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgLyogRm9yIG5vdyB3ZSBqdXN0IGRvbid0IHJlLXVzZSBhbnl0aGluZy4gwqBXZSBj YW4gdHdlYWsgdGhpcwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogbGF0ZXIgdG8gdHJ5IGFu ZCByZS11c2Ugbm90aWZpY2F0aW9uIHBhY2tldHMgYW5kIFNLQnMgdGhhdAo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICogZmFpbCB0byBSeCBjb3JyZWN0bHkgKi8KPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGlmIChyeGItPnNrYiAhPSBOVUxMKSB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBwcml2LT5hbGxvY19yeGJfc2tiLS07Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBkZXZfa2ZyZWVfc2tiX2FueShyeGItPnNrYik7Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGItPnNrYiA9IE5VTEw7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAocnhiLT5wYWdlICE9IE5VTEwpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHByaXYtPmFsbG9jX3J4Yl9wYWdlLS07Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBfX2ZyZWVfcGFnZXMocnhiLT5wYWdlLCBwcml2LT5od19wYXJhbXMu cnhfcGFnZV9vcmRlcik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByeGIt PnBhZ2UgPSBOVUxMOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBzcGluX2xvY2tfaXJxc2F2ZSgmcnhxLT5sb2NrLCBmbGFncyk7Cj4gQEAgLTE2 NzgsNiArMTY3Nyw4IEBAIHN0YXRpYyB2b2lkIGl3bDM5NDVfaXJxX3Rhc2tsZXQoc3RydWN0IGl3 bF9wcml2ICpwcml2KQo+IMKgIMKgIMKgIMKgfQo+IMKgI2VuZGlmCj4KPiArIMKgIMKgIMKgIHNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKPiArCj4gwqAgwqAgwqAg wqAvKiBTaW5jZSBDU1JfSU5UIGFuZCBDU1JfRkhfSU5UX1NUQVRVUyByZWFkcyBhbmQgY2xlYXJz IGFyZSBub3QKPiDCoCDCoCDCoCDCoCAqIGF0b21pYywgbWFrZSBzdXJlIHRoYXQgaW50YSBjb3Zl cnMgYWxsIHRoZSBpbnRlcnJ1cHRzIHRoYXQKPiDCoCDCoCDCoCDCoCAqIHdlJ3ZlIGRpc2NvdmVy ZWQsIGV2ZW4gaWYgRkggaW50ZXJydXB0IGNhbWUgaW4ganVzdCBhZnRlcgo+IEBAIC0xNjk5LDgg KzE3MDAsNiBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X2lycV90YXNrbGV0KHN0cnVjdCBpd2xfcHJp diAqcHJpdikKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaGFuZGxlZCB8PSBDU1JfSU5UX0JJ VF9IV19FUlI7Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKPiAtCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1 cm47Cj4gwqAgwqAgwqAgwqB9Cj4KPiBAQCAtMTc5Miw3ICsxNzkxLDYgQEAgc3RhdGljIHZvaWQg aXdsMzk0NV9pcnFfdGFza2xldChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYpCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAiZmxhZ3MgMHglMDhseFxuIiwgaW50YSwgaW50YV9tYXNr LCBpbnRhX2ZoLCBmbGFncyk7Cj4gwqAgwqAgwqAgwqB9Cj4gwqAjZW5kaWYKPiAtIMKgIMKgIMKg IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKPiDCoH0KPgo+IMKg c3RhdGljIGludCBpd2wzOTQ1X2dldF9jaGFubmVsc19mb3Jfc2NhbihzdHJ1Y3QgaXdsX3ByaXYg KnByaXYsCj4gLS0KPiAxLjYuMC40Cj4KPiAtLQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBs aXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC13aXJlbGVzcyIgaW4KPiB0aGUg Ym9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwo+IE1vcmUgbWFq b3Jkb21vIGluZm8gYXQgwqBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0 bWwKPgo= --001636c5bd032f93be0475e9d6c3 Content-Type: text/x-diff; charset=US-ASCII; name="0001-iwl3945-and-iwlagn-use-ieee80211_rx_ni.patch" Content-Disposition: attachment; filename="0001-iwl3945-and-iwlagn-use-ieee80211_rx_ni.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0sfw6220 RnJvbSBiMGVmMzc4MGU5NTYyZGQwMDQ0N2JiNTZkMTc5MmYwNWRkMWVkYjY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZWRhdCBEaWxlayA8c2VkYXQuZGlsZWtAZ21haWwuY29tPgpE YXRlOiBXZWQsIDE0IE9jdCAyMDA5IDE3OjEyOjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gaXds Mzk0NSBhbmQgaXdsYWduOiB1c2UgaWVlZTgwMjExX3J4X25pKCkKCi0tLQogZHJpdmVycy9uZXQv d2lyZWxlc3MvaXdsd2lmaS9pd2wtMzk0NS5jIHwgICAgMiArLQogZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9pd2wtcnguYyAgIHwgICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvaXdsd2lmaS9pd2wtMzk0NS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wt Mzk0NS5jCmluZGV4IGFmZTE5ZjIuLmMzNjVhOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2l3bHdpZmkvaXdsLTM5NDUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3 aWZpL2l3bC0zOTQ1LmMKQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgdm9pZCBpd2wzOTQ1X3Bh c3NfcGFja2V0X3RvX21hYzgwMjExKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKIAlpd2xfdXBkYXRl X3N0YXRzKHByaXYsIGZhbHNlLCBoZHItPmZyYW1lX2NvbnRyb2wsIGxlbik7CiAKIAltZW1jcHko SUVFRTgwMjExX1NLQl9SWENCKHNrYiksIHN0YXRzLCBzaXplb2YoKnN0YXRzKSk7Ci0JaWVlZTgw MjExX3J4KHByaXYtPmh3LCBza2IpOworCWllZWU4MDIxMV9yeF9uaShwcml2LT5odywgc2tiKTsK IAogIG91dDoKIAlwcml2LT5hbGxvY19yeGJfcGFnZS0tOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdp ZmkvaXdsLXJ4LmMKaW5kZXggMGE0MDdmNy4uMWUxMmEwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtcnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9p d2x3aWZpL2l3bC1yeC5jCkBAIC05NjYsNyArOTY2LDcgQEAgc3RhdGljIHZvaWQgaXdsX3Bhc3Nf cGFja2V0X3RvX21hYzgwMjExKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKIAlpd2xfdXBkYXRlX3N0 YXRzKHByaXYsIGZhbHNlLCBoZHItPmZyYW1lX2NvbnRyb2wsIGxlbik7CiAJbWVtY3B5KElFRUU4 MDIxMV9TS0JfUlhDQihza2IpLCBzdGF0cywgc2l6ZW9mKCpzdGF0cykpOwogCi0JaWVlZTgwMjEx X3J4KHByaXYtPmh3LCBza2IpOworCWllZWU4MDIxMV9yeF9uaShwcml2LT5odywgc2tiKTsKICBv dXQ6CiAJcHJpdi0+YWxsb2NfcnhiX3BhZ2UtLTsKIAlyeGItPnBhZ2UgPSBOVUxMOwotLSAKMS42 LjMuMQoK --001636c5bd032f93be0475e9d6c3--