From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v9 11/27] xsplice: Implement payload loading Date: Wed, 27 Apr 2016 11:48:25 -0400 Message-ID: <20160427154825.GD26384@x230.dumpdata.com> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> <1461598514-5440-12-git-send-email-konrad.wilk@oracle.com> <571F8B9F02000078000E5E09@prv-mh.provo.novell.com> <20160427032857.GD26540@localhost.localdomain> <5720943902000078000E632B@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avRiX-0001Iz-DI for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 15:49:33 +0000 Received: by mail-qk0-f194.google.com with SMTP id b63so3581452qkg.2 for ; Wed, 27 Apr 2016 08:49:31 -0700 (PDT) Content-Disposition: inline In-Reply-To: <5720943902000078000E632B@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Stefano Stabellini , Keir Fraser , andrew.cooper3@citrix.com, mpohlack@amazon.de, ross.lagerwall@citrix.com, Julien Grall , sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBBcHIgMjcsIDIwMTYgYXQgMDI6Mjg6MDlBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDI3LjA0LjE2IGF0IDA1OjI4LCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4g d3JvdGU6Cj4gPj4gPiArc3RhdGljIGludCBtb3ZlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBh eWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQo+ID4+ID4gK3sKPiA+IC4uc25pcC4uCj4g Pj4gPiArICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCj4gPj4g PiArICAgIHsKPiA+PiA+ICsgICAgICAgIGlmICggZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAm IFNIRl9BTExPQyApCj4gPj4gPiArICAgICAgICB7Cj4gPj4gPiArICAgICAgICAgICAgdWludDhf dCAqYnVmOwo+ID4+IAo+ID4+IFBlcmhhcHMgdm9pZCAqIGFnYWluPyBBbmQgbWlzc2luZyBhIGJs YW5rIGxpbmUgYWZ0ZXJ3YXJkcy4KPiA+PiAKPiA+PiA+ICsgICAgICAgICAgICBpZiAoIChlbGYt PnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgKQo+ID4+ID4gKyAgICAgICAg ICAgICAgICBidWYgPSB0ZXh0X2J1ZjsKPiA+PiA+ICsgICAgICAgICAgICBlbHNlIGlmICggKGVs Zi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfV1JJVEUpICkKPiA+PiA+ICsgICAgICAgICAg ICAgICAgYnVmID0gcndfYnVmOwo+ID4+ID4gKyAgICAgICAgICAgICBlbHNlCj4gPj4gCj4gPj4g VGhlIGluZGVudGF0aW9uIGhlcmUgaXMgc3RpbGwgb25lIG9mZi4KPiA+IAo+ID4gSSBhbSBub3Qg c2VlaW5nIGl0LiBJIGRlbGV0ZWQgdGhlIGxpbmUgYW5kIGFkZGVkIGl0IGJhY2sgdXNpbmcKPiA+ IHNwYWNlcyBqdXN0IGluIGNhc2UuIEJ1dCBJIHJlYWxseSBkb24ndCBzZWUgdGhlIGluZGVudGF0 aW9uIGlzc2UKPiA+IHlvdSBhcmUgc2VlaW5nPwo+IAo+IEp1c3QgY291bnQgdGhlIG51bWJlciBv ZiBibGFua3MgLSBJIGNvdW50IDEyIGFoZWFkIG9mIHRoZSAiZWxzZSBpZiIKPiBidXQgMTMgYWhl YWQgb2YgdGhlIGJhcmUgImVsc2UiLiBBbmQgaXQncyBzdGlsbCB0aGUgc2FtZSBpbiB0aGUKCkkg ZmluYWxseSBzZWUgaXQgbm93ISBJIGhhZCBiZWVuIGxvb2tpbmcgYXQgdGhlICdlbHNlIGlmJyBh bmQgJ2J1ZicKYnV0IG5vdCB0aGUgJ2Vsc2UnLiBBcmdoLgoKLi5zbmlwLi4KPiA+ICtzdGF0aWMg aW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3RydWN0IHhzcGxpY2Vf ZWxmICplbGYpCj4gPiArewo+ID4gKyAgICB2b2lkICp0ZXh0X2J1ZiwgKnJvX2J1ZiwgKnJ3X2J1 ZjsKPiA+ICsgICAgdW5zaWduZWQgaW50IGk7Cj4gPiArICAgIHNpemVfdCBzaXplID0gMDsKPiA+ ICsgICAgdW5zaWduZWQgaW50ICpvZmZzZXQ7Cj4gPiArICAgIGludCByYyA9IDA7Cj4gPiArCj4g PiArICAgIG9mZnNldCA9IHhtYWxsb2NfYXJyYXkodW5zaWduZWQgaW50LCBlbGYtPmhkci0+ZV9z aG51bSk7Cj4gPiArICAgIGlmICggIW9mZnNldCApCj4gPiArICAgICAgICByZXR1cm4gLUVOT01F TTsKPiA+ICsKPiA+ICsgICAgLyogQ29tcHV0ZSBzaXplIG9mIGRpZmZlcmVudCByZWdpb25zLiAq Lwo+ID4gKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQo+ID4g KyAgICB7Cj4gPiArICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgKFNI Rl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSkgPT0KPiA+ICsgICAgICAgICAgICAgKFNIRl9BTExPQ3xT SEZfRVhFQ0lOU1RSKSApCj4gPiArICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tp XSwgJnBheWxvYWQtPnRleHRfc2l6ZSwgJm9mZnNldFtpXSk7Cj4gPiArICAgICAgICBlbHNlIGlm ICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICYmCj4gPiArICAgICAg ICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikg JiYKPiA+ICsgICAgICAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9XUklURSkgKQo+ID4gKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5zZWNbaV0sICZw YXlsb2FkLT5yd19zaXplLCAmb2Zmc2V0W2ldKTsKPiA+ICsgICAgICAgIGVsc2UgaWYgKCAoZWxm LT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgJiYKPiA+ICsgICAgICAgICAgICAg ICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSAmJgo+ID4g KyAgICAgICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklU RSkgKQo+ID4gKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5zZWNbaV0sICZwYXlsb2Fk LT5yb19zaXplLCAmb2Zmc2V0W2ldKTsKPiA+ICsgICAgICAgIGVsc2UgaWYgKCAhZWxmLT5zZWNb aV0uc2VjLT5zaF9mbGFncyB8fAo+ID4gKyAgICAgICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5z ZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgfHwKPiA+ICsgICAgICAgICAgICAgICAgICAo ZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9NQVNLUFJPQykgKQo+ID4gKyAgICAgICAg ICAgIC8qCj4gPiArICAgICAgICAgICAgICogRG8gbm90aGluZy4gVGhlc2UgYXJlIC5yZWwudGV4 dCwgcmVsLiosIC5zeW10YWIsIC5zdHJ0YWIsCj4gPiArICAgICAgICAgICAgICogYW5kIC5zaHN0 cnRhYi4gRm9yIHRoZSBub24tcmVsb2NhdGUgd2UgYWxsb2NhdGUgYW5kIGNvcHkgdGhlc2UKPiA+ ICsgICAgICAgICAgICAgKiB2aWEgb3RoZXIgbWVhbnMgLSBhbmQgdGhlIC5yZWwgd2UgY2FuIGln bm9yZSBhcyB3ZSBvbmx5IHVzZSBpdAo+ID4gKyAgICAgICAgICAgICAqIG9uY2UgZHVyaW5nIGxv YWRpbmcuCj4gPiArICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgb2Zmc2V0W2ldID0g VUlOVF9NQVg7Cj4gPiArICAgICAgICBlbHNlIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxh Z3MgJiBTSEZfQUxMT0MpICYmCj4gPiArICAgICAgICAgICAgICAgICAgKGVsZi0+c2VjW2ldLnNl Yy0+c2hfdHlwZSA9PSBTSFRfTk9CSVRTKSApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAg ICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiBOb3Qgc3VwcG9ydGluZyAlcyBz ZWN0aW9uIVxuIiwKPiA+ICsgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNb aV0ubmFtZSk7Cj4gPiArICAgICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKPiA+ICsgICAgICAg ICAgICBnb3RvIG91dDsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGVsc2UgLyogU3VjaCBh cyAuY29tbWVudCwgb3IgLmRlYnVnX3N0ci4gKi8KPiA+ICsgICAgICAgIHsKPiA+ICsgICAgICAg ICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IElnbm9yaW5nICVzIHNlY3Rp b24hXG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnNlY1tpXS5u YW1lKTsKPiA+ICsgICAgICAgICAgICBvZmZzZXRbaV0gPSBVSU5UX01BWDsKPiA+ICsgICAgICAg IH0KPiAKPiBTZWUgZWFybGllciByZXBseSByZWdhcmRpbmcgdGhpcyBlbnRpcmUgbG9vcCBib2R5 LgoKClNvIEkgbW9kaWZpZWQgaXQgYW5kIGFkZGVkIHNvbWUgbW9yZSBjb21tZW50cyBpbgp4c3Bs aWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHNvbWUgb2YgdGhl c2UKYXJlIGp1c3QgcGxhaW4gaWdub3JlZC4gCgpIZXJlIGlzIHRoZSBpbmxpbmUgcGF0Y2g6CgpG cm9tIDk5YjJiYjQ5NjlmMWE4Y2M4MmZiZDgwODg1NTcyYTk5MjA0Zjk1ZjQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3Jh Y2xlLmNvbT4KRGF0ZTogV2VkLCAyNyBBcHIgMjAxNiAwOTowMTo1MSAtMDQwMApTdWJqZWN0OiBb UEFUQ0hdIHhzcGxpY2U6IEltcGxlbWVudCBwYXlsb2FkIGxvYWRpbmcKCkFkZCBzdXBwb3J0IGZv ciBsb2FkaW5nIHhzcGxpY2UgcGF5bG9hZHMuIFRoaXMgaXMgc29tZXdoYXQgc2ltaWxhciB0bwp0 aGUgTGludXgga2VybmVsIG1vZHVsZSBsb2FkZXIsIGltcGxlbWVudGluZyB0aGUgZm9sbG93aW5n IHN0ZXBzOgotIFZlcmlmeSB0aGUgZWxmIGZpbGUuCi0gUGFyc2UgdGhlIGVsZiBmaWxlLgotIEFs bG9jYXRlIGEgcmVnaW9uIG9mIG1lbW9yeSBtYXBwZWQgd2l0aGluIGEgZnJlZSBhcmVhIG9mCiAg W3hlbl92aXJ0X2VuZCwgWEVOX1ZJUlRfRU5EXS4KLSBDb3B5IGFsbG9jYXRlZCBzZWN0aW9ucyBp bnRvIHRoZSBuZXcgcmVnaW9uLiBTcGxpdCB0aGVtIGluIHRocmVlCiAgcmVnaW9ucyAtIC50ZXh0 LCAuZGF0YSwgYW5kIC5yb2RhdGEuIE1VU1QgaGF2ZSBhdCBsZWFzdCAudGV4dC4KLSBSZXNvbHZl IHNlY3Rpb24gc3ltYm9scy4gQWxsIG90aGVyIHN5bWJvbHMgbXVzdCBiZSBhYnNvbHV0ZSBhZGRy ZXNzZXMuCiAgKE5vdGUgdGhhdCBwYXRjaCB0aXRsZWQgInhzcGxpY2Usc3ltYm9sczogSW1wbGVt ZW50IHN5bWJvbCBuYW1lIHJlc29sdXRpb24KICAgb24gYWRkcmVzcyIgaW1wbGVtZW50cyB0aGF0 KQotIFBlcmZvcm0gcmVsb2NhdGlvbnMuCi0gU2VjdXJlIHRoZSB0aGUgcmVnaW9ucyAoLnRleHQs LmRhdGEsLnJvZGF0YSkgd2l0aCBwcm9wZXIgcGVybWlzc2lvbnMuCgpXZSBjYXBpdGFsaXplIG9u IHRoZSB2bWFsbG9jIGNhbGxiYWNrIEFQSSAoc2VlIHBhdGNoIHRpdGxlZDoKInJtL3g4Ni92bWFw OiBBZGQgdlt6fG1dYWxsb2NfeGVuLCBhbmQgdm1faW5pdF90eXBlIikgdG8gYWxsb2NhdGUKYSBy ZWdpb24gb2YgbWVtb3J5IHdpdGhpbiB0aGUgW3hlbl92aXJ0X2VuZCwgWEVOX1ZJUlRfRU5EXSBm b3IgdGhlIGNvZGUuCgpXZSBhbHNvIHVzZSB0aGUgIng4Ni9tbTogSW50cm9kdWNlIG1vZGlmeV94 ZW5fbWFwcGluZ3MoKSIKdG8gY2hhbmdlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgcGFnZS10YWJsZSBw ZXJtaXNzaW9ucy4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2Fs bEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJh ZC53aWxrQG9yYWNsZS5jb20+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBh cm0uY29tPgoKLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5v cmc+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2VpciBGcmFz ZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2MjogLSBDaGFuZ2Ug dGhlICd4c3BsaWNlX3BhdGNoX2Z1bmMnIHN0cnVjdHVyZSBsYXlvdXQvc2l6ZS4KICAgIC0gQWRk IG1vcmUgZXJyb3IgY2hlY2tpbmcuIEZpeCBtZW1vcnkgbGVhay4KICAgIC0gTW92ZSBlbGZfcmVz b2x2ZSBhbmQgZWxmX3BlcmZvcm0gcmVsb2NzIGluIGVsZiBmaWxlLgogICAgLSBQcmludCB0aGUg cGF5bG9hZCBhZGRyZXNzIGFuZCBwYWdlcyBpbiBrZXloYW5kbGVyLgp2MzoKICAgIC0gTWFrZSBp dCBidWlsZCB1bmRlciBBUk0KICAgIC0gQnVpbGQgaXQgd2l0aG91dCB1c2luZyB0aGUgcmV0dXJu XyBtYWNyby4KICAgIC0gQWRkIGZpeGVzIGZyb20gUm9zcy4KICAgIC0gQWRkIHRoZSBfcmV0dXJu IG1hY3JvIGJhY2sgLSBidXQgb25seSB1c2UgaXQgZHVyaW5nIGRlYnVnIGJ1aWxkcy4KICAgIC0g UmVtb3ZlIHRoZSBtYWNybywgcHJlZml4IGFyY2hfIG9uIGFyY2ggc3BlY2lmaWMgY2FsbHMuCnY0 OgogICAgLSBNb3ZlIGFsbG9jX3BheWxvYWQgdG8gYXJjaCBzcGVjaWZpYyBmaWxlLgogICAgLSBV c2Ugdm9pZCogaW5zdGVhZCBvZiB1aW50OF90LCB1c2UgY29uc3QKICAgIC0gQWRkIGNvcHlyaWdo dHMKICAgIC0gVW5yb2xsIHRoZSB2bWFwIGNvZGUgdG8gYWRkIEFTU0VSVC4gQ2hhbmdlIHdoaWxl IHRvIG5vdCBpbmN1cgogICAgICBwb3RlbnRpYWwgbG9uZyBlcnJvciBsb29wCiAgIC0gVXNlIHZt YWxsb2MvdmZyZWUgY2IgQVBJcwogICAtIFNlY3VyZSAudGV4dCBwYWdlcyB0byBiZSBSWCBpbnN0 ZWFkIG9mIFJXWC4KdjU6CiAgLSBGaXggYWxsb2NhdGlvbiBvZiB2aXJ0dWFsIGFkZHJlc3NlcyBv bmx5IGFsbG93aW5nIG9uZSBwYWdlIHRvIGJlIGFsbG9jYXRlZC4KICAtIENyZWF0ZSAudGV4dCwg LmRhdGEsIGFuZCAucm9kYXRhIHJlZ2lvbnMgd2l0aCBkaWZmZXJlbnQgcGVybWlzc2lvbnMuCiAg LSBNYWtlIHRoZSBmaW5kX3NwYWNlX3Qgbm90IGEgdHlwZWRlZiB0byBwb2ludGVyIHRvIGEgZnVu Y3Rpb24uCiAgLSBBbGxvY2F0ZSBtZW1vcnkgaW4gaGVyZS4KdjY6IERyb3AgcGFyZW50aGVzZXMg b24gdHlwZWRlZnMuCiAgLSBzL2FuIHhTcGxpY2UvYSB4U3BsaWNlLwogIC0gUmViYXNlIG9uICJ2 bWFwOiBBZGQgdm1hbGxvY19jYiIKICAtIFJlYmFzZSBvbiAidm1hcDogQWRkIHZtYWxsb2NfdHlw ZSBhbmQgdm1faW5pdF90eXBlIgogIC0gcy91aW50OF90L3ZvaWQvIG9uIGxvYWRfYWRkcgogIC0g U2V0IHhzcGxpY2VfZWxmIG9uIHN0YWNrIHdpdGhvdXQgdXNpbmcgbWVtc2V0Lgp2NzoKICAtIENo YW5nZWQgdGhlIGNoZWNrIG9uIGRlbHRhID0gZWxmLT5oZHItPmVfc2hvZmYgKyBlbGYtPmhkci0+ ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKICAgIFRoZSBzZWN0aW9ucyBjYW4gYmUg cmlnaHQgYXQgdGhlIGJhY2sgb2YgdGhlIGZpbGUgKGRpZmZlcmVudCBsaW5rZXIhKSwgc28gdGhl IGZhaWxpbmcgY29uZGl0aW9uYWwKICAgIGZvciAnaWYgKGRlbHRhID49IGVsZi0+bGVuKScgaXMg aW5jb3JyZWN0IGFuZCBzaG91bGQgaGF2ZSBiZWVuICc+Jy4KICAtIENoYW5nZWQgZHByaW50ayhY RU5MT0dfREVCVUcgdG8gWEVOTE9HX0VSUiwgdGhlbiBiYWNrIHRvIERFQlVHLiBDb252ZXJ0ZWQK ICAgIHNvbWUgb2YgdGhlIHByaW50ayB0byBkcHJpbnRrLgogIC0gUmViYXNlIG9uICIgYXJtL3g4 Ni92bWFwOiBBZGQgdm1hbGxvY194ZW4sIHZmcmVlX3hlbiBhbmQgdm1faW5pdF90eXBlIgogIC0g Q2hhbmdlZCBzb21lIG9mIHRoZSBwcmludGsgWEVOTE9HX0VSUiB0byBYRU5MT0dfREVCVUcKICAt IENoZWNrIHRoZSBpZHggaW4gdGhlIHJlbG9jYXRpb24gdG8gbWFrZSBzdXJlIGl0IGlzIHdpdGhp biBib3VuZHMgYW5kCiAgICBpbXBsZW1lbnRlZC4KICAtIFVzZSAieDg2L21tOiBJbnRyb2R1Y2Ug bW9kaWZ5X3hlbl9tYXBwaW5ncygpIgogIC0gSW50cm9kdWNlIFBSSXhFbGZBZGRyCiAgLSBDaGVj ayBmb3Igb3ZlcmZsb3cgaW4gUl9YODZfNjRfUEMzMgogIC0gUmV0dXJuIC1FT1BOT1RTVVBQIGlm IHdlIGRvbid0IHN1cHBvcnQgdHlwZXMgaW4gRUxGNjRfUl9UWVBFCnY4OgogIC0gQ2hhbmdlIGRw cmludGsgYW5kIHByaW50ayBYRU5MT0dfREVCVUcgdG8gWEVOTE9HX0VSUgogIC0gQ29udmVydCBm b3VyIG9mIHRoZSBwcmludGtzIGluIGRwcmludGsuCnY5OgogIC0gUmViYXNlIG9uIGRpZmZlcmVu dCBzcGlubG9jayB1c2FnZSBpbiB4c3BsaWNlX3VwbG9hZC4KICAtIERvIHByb3BlciBib3VuZCBh bmQgb3ZlcmZsb3cgY2hlY2tpbmcuCiAgLSBBZGRlZCAnY29uc3QnIG9uIFt0ZXh0LHJvLHJ3XV9h ZGRyLgogIC0gTWFkZSAnY2FsY19zZWN0aW9uJyBhbmQgJ21vdmVfcGF5bG9hZCcgdXNlIGFuIGR5 bmFtaWNhbGx5CiAgICBhbGxvY2F0ZWQgYXJyYXkgZm9yIGNvbXB1dGVkIG9mZnNldHMgaW5zdGVh ZCBvZiBtb2RpZnlpbmcgc2hfZW50c2l6ZS4KICAtIFJlbW92ZSBhcmNoX3hzcGxpY2VfW2FsbG9j X3BheWxvYWR8ZnJlZV0gYW5kIHVzZSB2emFsbG9jX3hlbiBhbmQKICAgIHZmcmVlLgogIC0gQ29s bGFwc2UgZm9yIGxvb3AgaW4gbW92ZV9wYXlsb2FkLgogIC0gTW92ZSB4c3BsaWNlLm8gaW4gTWFr ZWZpbGUKICAtIEFkZCBtb3JlIGNoZWNrcyBpbiBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhIChy X29mZnNldCBhbmQKICAgICBzaF9zaXplICUgc2hfZW50c2l6ZSkKICAtIFVzZSBpbnQzMl90IGFu ZCBpbnQ2NF90IGluIGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEuCiAgLSBUaWdodGVuIHRoZSBs aXN0IG9mIHNoX2ZsYWdzIHdlIGNoZWNrCiAgLSBVc2UgaW50ZXJtZWRpYXRlIG9uICdidWYnIHNv IHRoYXQgd2UgY2FuIGRvICdjb25zdCB2b2lkIConCiAgLSBVc2UgaW50ZXJtZWRpYXRlIGluIHhz cGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyBmb3IgJ2NvbnN0JyBvZiBlbGYtPnN5bS4KICAtIEZh aWwgaWYgKGFuZCBvbmx5KSBTSEZfQUxMT0MgYW5kIFNIVF9OT0JJVFMgc2VjdGlvbiBpcyBzZWVu Lgp2MTA6CiAgIC0gRHJvcHBlZCBBbmRyZXcncyBSZXZpZXdlZC1ieQogICAtIEV4cGFuZCBhcmNo X3hzcGxpY2VfdmVyaWZ5X2VsZiB0byBjaGVjayBFSV9DTEFTUyBhbmQgRUlfQUJJVkVSU0lPTgog ICAtIEluIGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEgZHJvcCBjaGVjayBhZ2FpbnN0ICFyZWxh LT5zZWMtPnNoX2VudHNpemUsCiAgICAgYWRkIGV4dHJhIGNoZWNrcyBhZ2FpbnN0IHJfb2Zmc2V0 ICsgc2l6ZW9mKHR5cGUpIG5lY2Nlc3NhdGluZwogICAgIGFuIGV4dHJhIGdvdG8gc3RhdGVtZW50 LgogICAtIE1ha2UgYXJjaF94c3BsaWNlX2luaXQgYmUgX19pbml0LgogICAtIEluIGZyZWVfcGF5 bG9hZF9kYXRhIGNoZWNrIGFnYWluc3QgLT5wYWdlcyBpbnN0ZWFkIG9mIC0+dGV4dF9hZGRyLgog ICAtIEluIG1vdmVfcGF5bG9hZCB1c2UgJ3ZvaWQgKicgaW5zdGVhZCBvZiAndWludDhfdCAqJywg dXNlIHhtYWxsb2NfYXJyYXkKICAgICBmb3Igb2Zmc2V0LCBleHBhbmQgb24gdGhlICdEbyBOb3Ro aW5nJyBjb21tZW50IGFuZCB0aGUgJ0lnbm9yaW5nJzsKICAgICBVc2Ugdm1hbGxvYyBpbnN0ZWFk IG9mIHZ6YWxsb2MgLSB3aGljaCBtZWFucyBmb3IgLmJzcyB3ZSBhbHNvIHVzZQogICAgIG1lbXNl dDsgZHJvcCB0aGUgdW5hcnkgKyB3aGVuIGNhbGN1bGF0aW5nIGFkZHJlc3MgZm9yIHJ3X2J1ZjsK ICAgICBGaXggaW5kZW50aW9uIChJIGhvcGU/IEkgZG9uJ3Qgc2VlIGFuIGlzc3VlKTsgYWxzbyB1 c2Ugb2Zmc2V0W2ldID1VSU5UX01BWAogICAgIGZvciBzZWN0aW9ucyB3ZSBhcmUgbm90IGdvaW5n IHRvIGFsbG9jYXRlIG9yIG1lbWNweSAtIGFuZCBhc3NlcnQgaWYKICAgICB3ZSBkbyBoaXQgdGhv c2UuCiAgIC0gSW4geHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzIG1vdmUgY2hlY2sgYWdhaW5z dAogICAgICEoZWxmLT5zZWNbaWR4XS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSBiYWNrIHRv IHdoYXQgaXQgd2FzCiAgICAgaW4gdjguCiAgIC0gSW4geHNwbGljZV9lbGZfcGVyZm9ybV9yZWxv Y3MgZHJvcCBjb21tZW50IGFib3V0IGZpcnN0IEVMRgogICAgIHN5bWJvbC4KICAgLSBEaWZmZXJl bnQgaWYvZWxzZSBpZiBpbiB1cGxvYWQgZnVuY3Rpb24uCnYxMCAtIHBhdGNoIHBvc3RlZCBhcyBp bmxpbmUgcmVwbHkgd2l0aGluIHY5IHBhdGNoc2V0OgogICAtIEFkZCBjaGVjayBmb3IgRUlfREFU QSBhbmQgZGl0Y2ggRUlfQUJJVkVSU0lPTiBvdXQgb2YgcGxhdGZvcm0gc3BlY2lmaWMgY2hlY2tz LgogICAtIEluIGVsZl9yZXNvbHZlX3N5bWJvbHMgdXNlIGNvbnN0IEVsZlN5bSBhbmQgdGVtcG9y YXJ5IHZhcmlhYmxlIChzdF92YWx1ZSkKICAgICB3aGljaCBpcyB1c2VkIHRvIHNldCB2YWx1ZSBp biBjb25zdCAoYW5kIG9ubHkgaW4gb25lIHBsYWNlIHdpbGwgd2UKICAgICB1bmNvbnN0IHRoZSBz eW0pOyBjaGFuZ2UgJSMiUFJJeC4uIiB0byAjeCBvciAjbHggdHlwZXMgYXMgd2UgZG9uJ3QgdXNl IEVsZgogICAgIHR5cGVzIGFueW1vcmUuCiAgIC0gTWFrZSB0aGUgcl9vZmZzZXQgY2hlY2sgYmUg d2l0aGluIHN3aXRjaCBzdGF0ZW1lbnRzIHRvIGd1YXJkIGFnYWluc3QgTk9ORQogICAgIHJlbG9j YXRpb25zLgogICAtIEZpeCB0aGUgJ2Vsc2UgaWYnIHNwYWNpbmcgaXNzdWU7CiAgIC0gVXNlIGRp ZmZlcmVudCBtZXNzYWdlIHdoZW4gaWR4IGluIHN5bWJvbHMgaXMgb3V0IG9mIGJvdW5kcy4KLS0t CiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0veHNw bGljZS5jICAgICAgICB8ICA0NiArKysrKysrKwogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAg ICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3hzcGxpY2UuYyAgICAgICAgfCAxNzMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAgICAgICB8IDI0 MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9jb21tb24v eHNwbGljZV9lbGYuYyAgICAgIHwgMTE4ICsrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVk ZS94ZW4vZWxmc3RydWN0cy5oICB8ICAgNCArCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oICAg ICB8ICAyNCArKysrKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmggfCAgMTEgKy0KIDkg ZmlsZXMgY2hhbmdlZCwgNjE1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3hzcGxpY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhl bi9hcmNoL3g4Ni94c3BsaWNlLmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUg Yi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMDMyOGI1MC4uZWFlNWNiMyAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAt NDAsNiArNDAsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0gZGVjb2RlLm8KIG9iai15 ICs9IHByb2Nlc3Nvci5vCiBvYmoteSArPSBzbWMubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9 IHhzcGxpY2UubwogCiAjb2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjhjYjc3NjcKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9h cm0veHNwbGljZS5jCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2 IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNp bmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4v eHNwbGljZV9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCitpbnQgYXJjaF94c3Bs aWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgcmV0 dXJuIC1FTk9TWVM7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwoc3RydWN0IHhz cGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7 Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNlX2VsZiAq ZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK2lu dCBhcmNoX3hzcGxpY2Vfc2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMs IGVudW0gdmFfdHlwZSB0eXBlKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2b2lkIF9f aW5pdCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKQoreworfQorCisvKgorICogTG9jYWwgdmFyaWFi bGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZz ZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6 CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9N YWtlZmlsZQppbmRleCA3MjkwNjViLi5mNzRmZDJjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv TWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC02MSw2ICs2MSw3IEBAIG9i ai15ICs9IHg4Nl9lbXVsYXRlLm8KIG9iai15ICs9IHRib290Lm8KIG9iai15ICs9IGhwZXQubwog b2JqLXkgKz0gdm1fZXZlbnQubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2Uubwog b2JqLXkgKz0geHN0YXRlLm8KIAogb2JqLSQoY3Jhc2hfZGVidWcpICs9IGdkYnN0dWIubwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzcGxpY2UuYyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI2MThmNwotLS0gL2Rldi9udWxs CisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBD b3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworCisjaW5jbHVk ZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGli Lmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3Bmbi5oPgorI2luY2x1ZGUg PHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CisjaW5jbHVkZSA8eGVu L3hzcGxpY2UuaD4KKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4 c3BsaWNlX2VsZiAqZWxmKQoreworCisgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+aGRy OworCisgICAgaWYgKCBoZHItPmVfbWFjaGluZSAhPSBFTV9YODZfNjQgfHwKKyAgICAgICAgIGhk ci0+ZV9pZGVudFtFSV9DTEFTU10gIT0gRUxGQ0xBU1M2NCB8fAorICAgICAgICAgaGRyLT5lX2lk ZW50W0VJX0RBVEFdICE9IEVMRkRBVEEyTFNCICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVO TE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuc3VwcG9ydGVkIEVMRiBNYWNoaW5lIHR5cGUhXG4iLAor ICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3Jl bChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBkcHJp bnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTSFRfUkVMIHJlbG9jYXRpb24gdW5zdXBwb3J0 ZWRcbiIsCisgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgIHJldHVybiAtRU9QTk9UU1VQUDsK K30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICpl bGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBjb25zdCBFbGZfUmVsQSAqcjsKKyAgICB1 bnNpZ25lZCBpbnQgc3ltbmR4LCBpOworICAgIHVpbnQ2NF90IHZhbDsKKyAgICB1aW50OF90ICpk ZXN0OworCisgICAgLyogTm90aGluZyB0byBkby4gKi8KKyAgICBpZiAoICFyZWxhLT5zZWMtPnNo X3NpemUgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICggcmVsYS0+c2VjLT5zaF9lbnRz aXplIDwgc2l6ZW9mKEVsZl9SZWxBKSB8fAorICAgICAgICAgcmVsYS0+c2VjLT5zaF9zaXplICUg cmVsYS0+c2VjLT5zaF9lbnRzaXplICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFNlY3Rpb24gcmVsYXRpdmUgaGVhZGVyIGlzIGNvcnJ1cHRlZCFcbiIs CisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCAocmVsYS0+c2VjLT5zaF9zaXplIC8gcmVsYS0+ c2VjLT5zaF9lbnRzaXplKTsgaSsrICkKKyAgICB7CisgICAgICAgIHIgPSByZWxhLT5kYXRhICsg aSAqIHJlbGEtPnNlYy0+c2hfZW50c2l6ZTsKKworICAgICAgICBzeW1uZHggPSBFTEY2NF9SX1NZ TShyLT5yX2luZm8pOworCisgICAgICAgIGlmICggc3ltbmR4ID4gZWxmLT5uc3ltICkKKyAgICAg ICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogUmVsYXRp dmUgcmVsb2NhdGlvbiB3YW50cyBzeW1ib2xAJXUgd2hpY2ggaXMgcGFzdCBlbmQhXG4iLAorICAg ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIHN5bW5keCk7CisgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGRlc3QgPSBiYXNlLT5sb2FkX2FkZHIgKyBy LT5yX29mZnNldDsKKyAgICAgICAgdmFsID0gci0+cl9hZGRlbmQgKyBlbGYtPnN5bVtzeW1uZHhd LnN5bS0+c3RfdmFsdWU7CisKKyAgICAgICAgc3dpdGNoICggRUxGNjRfUl9UWVBFKHItPnJfaW5m bykgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgUl9YODZfNjRfTk9ORToKKyAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgIGNhc2UgUl9YODZfNjRfNjQ6CisgICAgICAgICAgICBpZiAoIHIt PnJfb2Zmc2V0ID49IGJhc2UtPnNlYy0+c2hfc2l6ZSB8fAorICAgICAgICAgICAgICAgIChyLT5y X29mZnNldCArIHNpemVvZih1aW50NjRfdCkpID4gYmFzZS0+c2VjLT5zaF9zaXplICkKKyAgICAg ICAgICAgICAgICBnb3RvIGJhZF9vZmZzZXQ7CisKKyAgICAgICAgICAgICoodWludDY0X3QgKilk ZXN0ID0gdmFsOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX1g4Nl82NF9Q TFQzMjoKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBYZW4gdXNlcyAtZnBpYyB3aGlj aCBub3JtYWxseSB1c2VzIFBMVCByZWxvY2F0aW9ucworICAgICAgICAgICAgICogZXhjZXB0IHRo YXQgaXQgc2V0cyB2aXNpYmlsaXR5IHRvIGhpZGRlbiB3aGljaCBtZWFucworICAgICAgICAgICAg ICogdGhhdCB0aGV5IGFyZSBub3QgdXNlZC4gIEhvd2V2ZXIsIHdoZW4gZ2NjIGNhbm5vdAorICAg ICAgICAgICAgICogaW5saW5lIG1lbWNweSBpdCBlbWl0cyBtZW1jcHkgd2l0aCBkZWZhdWx0IHZp c2liaWxpdHkKKyAgICAgICAgICAgICAqIHdoaWNoIHRoZW4gY3JlYXRlcyBhIFBMVCByZWxvY2F0 aW9uLiAgSXQgY2FuIGp1c3QgYmUKKyAgICAgICAgICAgICAqIHRyZWF0ZWQgdGhlIHNhbWUgYXMg Ul9YODZfNjRfUEMzMi4KKyAgICAgICAgICAgICAqLworICAgICAgICBjYXNlIFJfWDg2XzY0X1BD MzI6CisgICAgICAgICAgICBpZiAoIHItPnJfb2Zmc2V0ID49IGJhc2UtPnNlYy0+c2hfc2l6ZSB8 fAorICAgICAgICAgICAgICAgIChyLT5yX29mZnNldCArIHNpemVvZih1aW50MzJfdCkpID4gYmFz ZS0+c2VjLT5zaF9zaXplICkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9vZmZzZXQ7CisKKyAg ICAgICAgICAgIHZhbCAtPSAodWludDY0X3QpZGVzdDsKKyAgICAgICAgICAgICooaW50MzJfdCAq KWRlc3QgPSB2YWw7CisgICAgICAgICAgICBpZiAoIChpbnQ2NF90KXZhbCAhPSAqKGludDMyX3Qg KilkZXN0ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19F UlIsIFhTUExJQ0UgIiVzOiBPdmVyZmxvdyBpbiByZWxvY2F0aW9uICV1IGluICVzIGZvciAlcyFc biIsCisgICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGksIHJlbGEtPm5hbWUsIGJh c2UtPm5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtRU9WRVJGTE9XOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg IGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuaGFuZGxlZCByZWxvY2F0aW9uICVs dVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBFTEY2NF9SX1RZUEUoci0+cl9p bmZvKSk7CisgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICByZXR1cm4gMDsKKworIGJhZF9vZmZzZXQ6CisgICAgZHByaW50ayhYRU5MT0dfRVJS LCBYU1BMSUNFICIlczogUmVsYXRpdmUgcmVsb2NhdGlvbiBvZmZzZXQgaXMgcGFzdCAlcyBzZWN0 aW9uIVxuIiwKKyAgICAgICAgICAgIGVsZi0+bmFtZSwgYmFzZS0+bmFtZSk7CisgICAgcmV0dXJu IC1FSU5WQUw7Cit9CisKKy8qCisgKiBPbmNlIHRoZSByZXNvbHZpbmcgc3ltYm9scywgcGVyZm9y bWluZyByZWxvY2F0aW9ucywgZXRjIGlzIGNvbXBsZXRlCisgKiB3ZSBzZWN1cmUgdGhlIG1lbW9y eSBieSBwdXR0aW5nIGluIHRoZSBwcm9wZXIgcGFnZSB0YWJsZSBhdHRyaWJ1dGVzCisgKiBmb3Ig dGhlIGRlc2lyZWQgdHlwZS4KKyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUoY29uc3Qgdm9p ZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUpCit7CisgICAgdW5z aWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBsb25nKXZhOworICAgIHVuc2lnbmVkIGludCBm bGFnOworCisgICAgQVNTRVJUKHZhKTsKKyAgICBBU1NFUlQocGFnZXMpOworCisgICAgaWYgKCB0 eXBlID09IFhTUExJQ0VfVkFfUlggKQorICAgICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JY OworICAgIGVsc2UgaWYgKCB0eXBlID09IFhTUExJQ0VfVkFfUlcgKQorICAgICAgICBmbGFnID0g UEFHRV9IWVBFUlZJU09SX1JXOworICAgIGVsc2UKKyAgICAgICAgZmxhZyA9IFBBR0VfSFlQRVJW SVNPUl9STzsKKworICAgIG1vZGlmeV94ZW5fbWFwcGluZ3Moc3RhcnQsIHN0YXJ0ICsgcGFnZXMg KiBQQUdFX1NJWkUsIGZsYWcpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19pbml0IGFy Y2hfeHNwbGljZV9pbml0KHZvaWQpCit7CisgICAgdm9pZCAqc3RhcnQsICplbmQ7CisKKyAgICBz dGFydCA9ICh2b2lkICopeGVuX3ZpcnRfZW5kOworICAgIGVuZCA9ICh2b2lkICopKFhFTl9WSVJU X0VORCAtIE5SX0NQVVMgKiBQQUdFX1NJWkUpOworCisgICAgQlVHX09OKGVuZCA8PSBzdGFydCk7 CisKKyAgICB2bV9pbml0X3R5cGUoVk1BUF9YRU4sIHN0YXJ0LCBlbmQpOworfQorLyoKKyAqIExv Y2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9j b21tb24veHNwbGljZS5jCmluZGV4IDczZTUwZjAuLjY1NTQ1YzMgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24veHNwbGljZS5jCisrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBAIC0xMyw2ICsxMyw3 IEBACiAjaW5jbHVkZSA8eGVuL3NtcC5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2lu Y2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KIAogI2luY2x1ZGUgPGFzbS9ldmVudC5oPgpAQCAtMjksNiArMzAs MTMgQEAgc3RydWN0IHBheWxvYWQgewogICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAg ICAgICAgICAvKiBPbmUgb2YgdGhlIFhTUExJQ0VfU1RBVEVfKi4gKi8KICAgICBpbnQzMl90IHJj OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMCBvciAtWEVOX0VYWC4gKi8KICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGxpc3Q7ICAgICAgICAgICAgICAgLyogTGlua2VkIHRvICdwYXlsb2FkX2xp c3QnLiAqLworICAgIGNvbnN0IHZvaWQgKnRleHRfYWRkcjsgICAgICAgICAgICAgICAvKiBWaXJ0 dWFsIGFkZHJlc3Mgb2YgLnRleHQuICovCisgICAgc2l6ZV90IHRleHRfc2l6ZTsgICAgICAgICAg ICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZS4gKi8KKyAgICBjb25zdCB2b2lkICpyd19hZGRy OyAgICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC5kYXRhLiAqLworICAgIHNp emVfdCByd19zaXplOyAgICAgICAgICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUgKGlm IGFueSkuICovCisgICAgY29uc3Qgdm9pZCAqcm9fYWRkcjsgICAgICAgICAgICAgICAgIC8qIFZp cnR1YWwgYWRkcmVzcyBvZiAucm9kYXRhLiAqLworICAgIHNpemVfdCByb19zaXplOyAgICAgICAg ICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUgKGlmIGFueSkuICovCisgICAgdW5zaWdu ZWQgaW50IHBhZ2VzOyAgICAgICAgICAgICAgICAgIC8qIFRvdGFsIHBhZ2VzIGZvciBbdGV4dCxy dyxyb11fYWRkciAqLwogICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJWkVdOyAgICAv KiBOYW1lIG9mIGl0LiAqLwogfTsKIApAQCAtODMsMTkgKzkxLDIzMiBAQCBzdGF0aWMgc3RydWN0 IHBheWxvYWQgKmZpbmRfcGF5bG9hZChjb25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBmb3Vu ZDsKIH0KIAorLyoKKyAqIEZ1bmN0aW9ucyByZWxhdGVkIHRvIFhFTl9TWVNDVExfWFNQTElDRV9V UExPQUQgKHNlZSB4c3BsaWNlX3VwbG9hZCksIGFuZAorICogZnJlZWluZyBwYXlsb2FkIChYRU5f U1lTQ1RMX1hTUExJQ0VfQUNUSU9OOlhTUExJQ0VfQUNUSU9OX1VOTE9BRCkuCisgKi8KKworc3Rh dGljIHZvaWQgZnJlZV9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQpCit7Cisg ICAgLyogU2V0IHRvIHplcm8gdW50aWwgIm1vdmVfcGF5bG9hZCIuICovCisgICAgaWYgKCAhcGF5 bG9hZC0+cGFnZXMgKQorICAgICAgICByZXR1cm47CisKKyAgICB2ZnJlZSgodm9pZCAqKXBheWxv YWQtPnRleHRfYWRkcik7CisKKyAgICBwYXlsb2FkLT5wYWdlcyA9IDA7Cit9CisKKy8qCisqIGNh bGNfc2VjdGlvbiBjb21wdXRlcyB0aGUgc2l6ZSAodGFraW5nIGludG8gYWNjb3VudCBzZWN0aW9u IGFsaWdubWVudCkuCisqCisqIEZ1cnRoZXJtb3JlIHRoZSBvZmZzZXQgaXMgc2V0IHdpdGggdGhl IG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdmlydHVhbAorKiBhZGRyZXNzIHNwYWNlIGZv ciB0aGUgcGF5bG9hZCAodXNpbmcgcGFzc2VkIGluIHNpemUpLiBUaGlzIGlzIHVzZWQgaW4KKyog bW92ZV9wYXlsb2FkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uIChsb2Fk X2FkZHIpLgorKi8KK3N0YXRpYyB2b2lkIGNhbGNfc2VjdGlvbihjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjICpzZWMsIHNpemVfdCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgKm9mZnNldCkKK3sKKyAgICBjb25zdCBFbGZfU2hkciAqcyA9IHNlYy0+c2Vj OworICAgIHNpemVfdCBhbGlnbl9zaXplOworCisgICAgYWxpZ25fc2l6ZSA9IFJPVU5EVVAoKnNp emUsIHMtPnNoX2FkZHJhbGlnbik7CisgICAgKm9mZnNldCA9IGFsaWduX3NpemU7CisgICAgKnNp emUgPSBzLT5zaF9zaXplICsgYWxpZ25fc2l6ZTsKK30KKworc3RhdGljIGludCBtb3ZlX3BheWxv YWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQorewor ICAgIHZvaWQgKnRleHRfYnVmLCAqcm9fYnVmLCAqcndfYnVmOworICAgIHVuc2lnbmVkIGludCBp OworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgKm9mZnNldDsKKyAgICBp bnQgcmMgPSAwOworCisgICAgb2Zmc2V0ID0geG1hbGxvY19hcnJheSh1bnNpZ25lZCBpbnQsIGVs Zi0+aGRyLT5lX3NobnVtKTsKKyAgICBpZiAoICFvZmZzZXQgKQorICAgICAgICByZXR1cm4gLUVO T01FTTsKKworICAgIC8qIENvbXB1dGUgc2l6ZSBvZiBkaWZmZXJlbnQgcmVnaW9ucy4gKi8KKyAg ICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAg ICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgJiYKKyAgICAg ICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVDSU5TVFIpICYmCisg ICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisg ICAgICAgICAgICBjYWxjX3NlY3Rpb24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+dGV4dF9zaXpl LCAmb2Zmc2V0W2ldKTsKKyAgICAgICAgZWxzZSBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2Zs YWdzICYgU0hGX0FMTE9DKSAmJgorICAgICAgICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMt PnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAgICAgIChlbGYtPnNl Y1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAgICAgICAgICBjYWxjX3NlY3Rp b24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+cndfc2l6ZSwgJm9mZnNldFtpXSk7CisgICAgICAg IGVsc2UgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgJiYKKyAg ICAgICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVDSU5T VFIpICYmCisgICAgICAgICAgICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBT SEZfV1JJVEUpICkKKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5zZWNbaV0sICZwYXls b2FkLT5yb19zaXplLCAmb2Zmc2V0W2ldKTsKKyAgICAgICAgZWxzZSBpZiAoICFlbGYtPnNlY1tp XS5zZWMtPnNoX2ZsYWdzIHx8CisgICAgICAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5z aF9mbGFncyAmIFNIRl9FWEVDSU5TVFIpIHx8CisgICAgICAgICAgICAgICAgICAoZWxmLT5zZWNb aV0uc2VjLT5zaF9mbGFncyAmIFNIRl9NQVNLUFJPQykgKQorICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAqIERvIG5vdGhpbmcuIFRoZXNlIGFyZSAucmVsLnRleHQsIHJlbC4qLCAuc3ltdGFi LCAuc3RydGFiLAorICAgICAgICAgICAgICogYW5kIC5zaHN0cnRhYi4gRm9yIHRoZSBub24tcmVs b2NhdGUgd2UgYWxsb2NhdGUgYW5kIGNvcHkgdGhlc2UKKyAgICAgICAgICAgICAqIHZpYSBvdGhl ciBtZWFucyAtIGFuZCB0aGUgLnJlbCB3ZSBjYW4gaWdub3JlIGFzIHdlIG9ubHkgdXNlIGl0Cisg ICAgICAgICAgICAgKiBvbmNlIGR1cmluZyBsb2FkaW5nLgorICAgICAgICAgICAgICovCisgICAg ICAgICAgICBvZmZzZXRbaV0gPSBVSU5UX01BWDsKKyAgICAgICAgZWxzZSBpZiAoIChlbGYtPnNl Y1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSAmJgorICAgICAgICAgICAgICAgICAgKGVs Zi0+c2VjW2ldLnNlYy0+c2hfdHlwZSA9PSBTSFRfTk9CSVRTKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogTm90IHN1cHBvcnRpbmcg JXMgc2VjdGlvbiFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNb aV0ubmFtZSk7CisgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICAgICAgZ290 byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBTdWNoIGFzIC5jb21tZW50LCBvciAu ZGVidWdfc3RyLiAqLworICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJV RywgWFNQTElDRSAiJXM6IElnbm9yaW5nICVzIHNlY3Rpb24hXG4iLAorICAgICAgICAgICAgICAg ICAgICBlbGYtPm5hbWUsIGVsZi0+c2VjW2ldLm5hbWUpOworICAgICAgICAgICAgb2Zmc2V0W2ld ID0gVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIFRvdGFsIG9m IGFsbCB0aHJlZSByZWdpb25zIC0gUlgsIFJXLCBhbmQgUk8uIFdlIGhhdmUgdG8gaGF2ZQorICAg ICAqIGtlZXAgdGhlbSBpbiBzZXBlcmF0ZSBwYWdlcyBzbyB3ZSBQQUdFX0FMSUdOIHRoZSBSWCBh bmQgUlcgdG8gaGF2ZQorICAgICAqIHRoZW0gb24gc2VwZXJhdGUgcGFnZXMuIFRoZSBsYXN0IG9u ZSB3aWxsIGJ5IGRlZmF1bHQgZmFsbCBvbiBpdHMKKyAgICAgKiBvd24gcGFnZS4KKyAgICAgKi8K KyAgICBzaXplID0gUEFHRV9BTElHTihwYXlsb2FkLT50ZXh0X3NpemUpICsgUEFHRV9BTElHTihw YXlsb2FkLT5yd19zaXplKSArCisgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC0+cm9fc2l6 ZTsKKworICAgIHNpemUgPSBQRk5fVVAoc2l6ZSk7IC8qIE5yIG9mIHBhZ2VzLiAqLworICAgIHRl eHRfYnVmID0gdm1hbGxvY194ZW4oc2l6ZSAqIFBBR0VfU0laRSk7CisgICAgaWYgKCAhdGV4dF9i dWYgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogQ291 bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGF5bG9hZCFcbiIsCisgICAgICAgICAgICAgICAg ZWxmLT5uYW1lKTsKKyAgICAgICAgcmMgPSAtRU5PTUVNOworICAgICAgICBnb3RvIG91dDsKKyAg ICB9CisgICAgcndfYnVmID0gdGV4dF9idWYgKyBQQUdFX0FMSUdOKHBheWxvYWQtPnRleHRfc2l6 ZSk7CisgICAgcm9fYnVmID0gcndfYnVmICsgUEFHRV9BTElHTihwYXlsb2FkLT5yd19zaXplKTsK KworICAgIHBheWxvYWQtPnBhZ2VzID0gc2l6ZTsKKyAgICBwYXlsb2FkLT50ZXh0X2FkZHIgPSB0 ZXh0X2J1ZjsKKyAgICBwYXlsb2FkLT5yd19hZGRyID0gcndfYnVmOworICAgIHBheWxvYWQtPnJv X2FkZHIgPSByb19idWY7CisKKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVt OyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCBlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYg U0hGX0FMTE9DICkKKyAgICAgICAgeworICAgICAgICAgICAgdm9pZCAqYnVmOworCisgICAgICAg ICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSICkKKyAg ICAgICAgICAgICAgICBidWYgPSB0ZXh0X2J1ZjsKKyAgICAgICAgICAgIGVsc2UgaWYgKCBlbGYt PnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFICkKKyAgICAgICAgICAgICAgICBidWYg PSByd19idWY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnVmID0gcm9fYnVm OworCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0W2ldICE9IFVJTlRfTUFYKTsKKworICAgICAg ICAgICAgZWxmLT5zZWNbaV0ubG9hZF9hZGRyID0gYnVmICsgb2Zmc2V0W2ldOworCisgICAgICAg ICAgICAvKiBEb24ndCBjb3B5IE5PQklUUyAtIHN1Y2ggYXMgQlNTLiAqLworICAgICAgICAgICAg aWYgKCBlbGYtPnNlY1tpXS5zZWMtPnNoX3R5cGUgIT0gU0hUX05PQklUUyApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgbWVtY3B5KGVsZi0+c2VjW2ldLmxvYWRfYWRkciwgZWxmLT5z ZWNbaV0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5zZWNbaV0uc2VjLT5zaF9z aXplKTsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6 IExvYWRlZCAlcyBhdCAlcFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwg ZWxmLT5zZWNbaV0ubmFtZSwgZWxmLT5zZWNbaV0ubG9hZF9hZGRyKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtZW1zZXQoZWxmLT5zZWNbaV0ubG9h ZF9hZGRyLCAwLCBlbGYtPnNlY1tpXS5zZWMtPnNoX3NpemUpOworICAgICAgICB9CisgICAgfQor Cisgb3V0OgorICAgIHhmcmVlKG9mZnNldCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRp YyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmKQoreworICAgIGludCByYzsKKyAgICB1bnNpZ25lZCBpbnQgdGV4dF9wYWdl cywgcndfcGFnZXMsIHJvX3BhZ2VzOworCisgICAgdGV4dF9wYWdlcyA9IFBGTl9VUChwYXlsb2Fk LT50ZXh0X3NpemUpOworICAgIEFTU0VSVCh0ZXh0X3BhZ2VzKTsKKworICAgIHJjID0gYXJjaF94 c3BsaWNlX3NlY3VyZShwYXlsb2FkLT50ZXh0X2FkZHIsIHRleHRfcGFnZXMsIFhTUExJQ0VfVkFf UlgpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByd19wYWdlcyA9 IFBGTl9VUChwYXlsb2FkLT5yd19zaXplKTsKKyAgICBpZiAoIHJ3X3BhZ2VzICkKKyAgICB7Cisg ICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3VyZShwYXlsb2FkLT5yd19hZGRyLCByd19wYWdl cywgWFNQTElDRV9WQV9SVyk7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgcmV0dXJu IHJjOworICAgIH0KKworICAgIHJvX3BhZ2VzID0gUEZOX1VQKHBheWxvYWQtPnJvX3NpemUpOwor ICAgIGlmICggcm9fcGFnZXMgKQorICAgICAgICByYyA9IGFyY2hfeHNwbGljZV9zZWN1cmUocGF5 bG9hZC0+cm9fYWRkciwgcm9fcGFnZXMsIFhTUExJQ0VfVkFfUk8pOworCisgICAgQVNTRVJUKHJv X3BhZ2VzICsgcndfcGFnZXMgKyB0ZXh0X3BhZ2VzID09IHBheWxvYWQtPnBhZ2VzKTsKKworICAg IHJldHVybiByYzsKK30KKwogc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2Fk ICpkYXRhKQogewogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CiAg ICAgbGlzdF9kZWwoJmRhdGEtPmxpc3QpOwogICAgIHBheWxvYWRfY250LS07CiAgICAgcGF5bG9h ZF92ZXJzaW9uKys7CisgICAgZnJlZV9wYXlsb2FkX2RhdGEoZGF0YSk7CiAgICAgeGZyZWUoZGF0 YSk7CiB9CiAKK3N0YXRpYyBpbnQgbG9hZF9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBh eWxvYWQsIHZvaWQgKnJhdywgc2l6ZV90IGxlbikKK3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGYg ZWxmID0geyAubmFtZSA9IHBheWxvYWQtPm5hbWUsIC5sZW4gPSBsZW4gfTsKKyAgICBpbnQgcmMg PSAwOworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9sb2FkKCZlbGYsIHJhdyk7CisgICAgaWYgKCBy YyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBtb3ZlX3BheWxvYWQocGF5bG9hZCwg JmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c3Bs aWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdv dG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9jcygmZWxmKTsKKyAg ICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHNlY3VyZV9wYXlsb2Fk KHBheWxvYWQsICZlbGYpOworCisgb3V0OgorICAgIGlmICggcmMgKQorICAgICAgICBmcmVlX3Bh eWxvYWRfZGF0YShwYXlsb2FkKTsKKworICAgIC8qIEZyZWUgb3VyIHRlbXBvcmFyeSBkYXRhIHN0 cnVjdHVyZS4gKi8KKyAgICB4c3BsaWNlX2VsZl9mcmVlKCZlbGYpOworCisgICAgcmV0dXJuIHJj OworfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxv YWRfdCAqdXBsb2FkKQogewogICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhLCAqZm91bmQ7CiAgICAg Y2hhciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07CisgICAgdm9pZCAqcmF3X2RhdGE7CiAgICAg aW50IHJjOwogCiAgICAgcmMgPSB2ZXJpZnlfcGF5bG9hZCh1cGxvYWQsIG4pOwpAQCAtMTAzLDYg KzMyNCw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3Vw bG9hZF90ICp1cGxvYWQpCiAgICAgICAgIHJldHVybiByYzsKIAogICAgIGRhdGEgPSB4emFsbG9j KHN0cnVjdCBwYXlsb2FkKTsKKyAgICByYXdfZGF0YSA9IHZtYWxsb2ModXBsb2FkLT5zaXplKTsK IAogICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKIApAQCAtMTExLDExICszMzMsMTggQEAg c3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVw bG9hZCkKICAgICAgICAgcmMgPSBQVFJfRVJSKGZvdW5kKTsKICAgICBlbHNlIGlmICggZm91bmQg KQogICAgICAgICByYyA9IC1FRVhJU1Q7Ci0gICAgZWxzZSBpZiAoICFkYXRhICkKKyAgICBlbHNl IGlmICggIWRhdGEgfHwgIXJhd19kYXRhICkKICAgICAgICAgcmMgPSAtRU5PTUVNOworICAgIGVs c2UgaWYgKCBfX2NvcHlfZnJvbV9ndWVzdChyYXdfZGF0YSwgdXBsb2FkLT5wYXlsb2FkLCB1cGxv YWQtPnNpemUpICkKKyAgICAgICAgcmMgPSAtRUZBVUxUOwogICAgIGVsc2UKICAgICB7CiAgICAg ICAgIG1lbWNweShkYXRhLT5uYW1lLCBuLCBzdHJsZW4obikpOworCisgICAgICAgIHJjID0gbG9h ZF9wYXlsb2FkX2RhdGEoZGF0YSwgcmF3X2RhdGEsIHVwbG9hZC0+c2l6ZSk7CisgICAgICAgIGlm ICggcmMgKQorICAgICAgICAgICAgZ290byBvdXQ7CisKICAgICAgICAgZGF0YS0+c3RhdGUgPSBY U1BMSUNFX1NUQVRFX0NIRUNLRUQ7CiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0 KTsKIApAQCAtMTIzLDggKzM1MiwxMiBAQCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9z eXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogICAgICAgICBwYXlsb2FkX2NudCsrOwog ICAgICAgICBwYXlsb2FkX3ZlcnNpb24rKzsKICAgICB9CisKKyBvdXQ6CiAgICAgc3Bpbl91bmxv Y2soJnBheWxvYWRfbG9jayk7CiAKKyAgICB2ZnJlZShyYXdfZGF0YSk7CisKICAgICBpZiAoIHJj ICkKICAgICAgICAgeGZyZWUoZGF0YSk7CiAKQEAgLTM1OSw4ICs1OTIsOSBAQCBzdGF0aWMgdm9p ZCB4c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVkIGNoYXIga2V5KQogICAgIH0KIAogICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKLSAgICAgICAgcHJp bnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZClcbiIsIGRhdGEtPm5hbWUsCi0gICAgICAgICAgICAg ICBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSk7CisgICAgICAgIHByaW50aygi IG5hbWU9JXMgc3RhdGU9JXMoJWQpICVwICguZGF0YT0lcCwgLnJvZGF0YT0lcCkgdXNpbmcgJXUg cGFnZXMuXG4iLAorICAgICAgICAgICAgICAgZGF0YS0+bmFtZSwgc3RhdGUyc3RyKGRhdGEtPnN0 YXRlKSwgZGF0YS0+c3RhdGUsIGRhdGEtPnRleHRfYWRkciwKKyAgICAgICAgICAgICAgIGRhdGEt PnJ3X2FkZHIsIGRhdGEtPnJvX2FkZHIsIGRhdGEtPnBhZ2VzKTsKIAogICAgIHNwaW5fdW5sb2Nr KCZwYXlsb2FkX2xvY2spOwogfQpAQCAtMzY4LDYgKzYwMiw4IEBAIHN0YXRpYyB2b2lkIHhzcGxp Y2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiBzdGF0aWMgaW50IF9faW5pdCB4c3BsaWNl X2luaXQodm9pZCkKIHsKICAgICByZWdpc3Rlcl9rZXloYW5kbGVyKCd4JywgeHNwbGljZV9wcmlu dGFsbCwgInByaW50IHhzcGxpY2luZyBpbmZvIiwgMSk7CisKKyAgICBhcmNoX3hzcGxpY2VfaW5p dCgpOwogICAgIHJldHVybiAwOwogfQogX19pbml0Y2FsbCh4c3BsaWNlX2luaXQpOwpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jIGIveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5j CmluZGV4IDgxMzZhYjcuLmM1YjcxOTIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZV9l bGYuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKQEAgLTEwMCw2ICsxMDAsNyBAQCBz dGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25zKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBj b25zdCB2b2lkICpkYXRhKQogCiAgICAgICAgICAgICBlbGYtPnN5bXRhYiA9ICZzZWNbaV07CiAK KyAgICAgICAgICAgIGVsZi0+c3ltdGFiX2lkeCA9IGk7CiAgICAgICAgICAgICAvKgogICAgICAg ICAgICAgICogZWxmLT5zeW10YWItPnNlYy0+c2hfbGluayB3b3VsZCBwb2ludCB0byB0aGUgcmln aHQgc2VjdGlvbgogICAgICAgICAgICAgICogYnV0IHdlIGhhZG4ndCBmaW5pc2hlZCBwYXJzaW5n IGFsbCB0aGUgc2VjdGlvbnMuCkBAIC0yNTAsOSArMjUxLDEyMiBAQCBzdGF0aWMgaW50IGVsZl9n ZXRfc3ltKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgIHJl dHVybiAwOwogfQogCitpbnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmKQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYyA9IDA7CisK KyAgICBBU1NFUlQoZWxmLT5zeW0pOworCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPm5zeW07 IGkrKyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgaWR4ID0gZWxmLT5zeW1baV0uc3lt LT5zdF9zaG5keDsKKyAgICAgICAgY29uc3QgRWxmX1N5bSAqc3ltID0gZWxmLT5zeW1baV0uc3lt OworICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3ZhbHVlID0gc3ltLT5zdF92YWx1ZTsKKworICAg ICAgICBzd2l0Y2ggKCBpZHggKQorICAgICAgICB7CisgICAgICAgIGNhc2UgU0hOX0NPTU1PTjoK KyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuZXhwZWN0ZWQg Y29tbW9uIHN5bWJvbDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxm LT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBi cmVhazsKKworICAgICAgICBjYXNlIFNITl9VTkRFRjoKKyAgICAgICAgICAgIGRwcmludGsoWEVO TE9HX0VSUiwgWFNQTElDRSAiJXM6IFVua25vd24gc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAg ICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAgICAgICAgIHJjID0g LUVOT0VOVDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU0hOX0FCUzoKKyAg ICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogQWJzb2x1dGUgc3lt Ym9sOiAlcyA9PiAlIyJQUkl4RWxmQWRkciJcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSwgZWxmLT5zeW1baV0ubmFtZSwgc3ltLT5zdF92YWx1ZSk7CisgICAgICAgICAgICBicmVh azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogU0hOX0NPTU1PTiBhbmQgU0hO X0FCUyBhcmUgYWJvdmUuICovCisgICAgICAgICAgICBpZiAoIGlkeCA+PSBTSE5fTE9SRVNFUlZF ICkKKyAgICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICAgICAgZWxzZSBp ZiAoIGlkeCA+PSBlbGYtPmhkci0+ZV9zaG51bSApCisgICAgICAgICAgICAgICAgcmMgPSAtRUlO VkFMOworCisgICAgICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBPdXQgb2YgYm91bmRzIHN5bWJv bCBzZWN0aW9uICUjeFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaWR4 KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg LyogTWF0Y2hlcyAnbW92ZV9wYXlsb2FkJyB3aGljaCBpZ25vcmVzIHN1Y2ggc2VjdGlvbnMuICov CisgICAgICAgICAgICBpZiAoICEoZWxmLT5zZWNbaWR4XS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FM TE9DKSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN0X3ZhbHVlICs9 ICh1bnNpZ25lZCBsb25nKWVsZi0+c2VjW2lkeF0ubG9hZF9hZGRyOworICAgICAgICAgICAgaWYg KCBlbGYtPnN5bVtpXS5uYW1lICkKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJV RywgWFNQTElDRSAiJXM6IFN5bWJvbCByZXNvbHZlZDogJXMgPT4gJSNseCAoJXMpXG4iLAorICAg ICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUsCisgICAgICAg ICAgICAgICAgICAgICAgIHN0X3ZhbHVlLCBlbGYtPnNlY1tpZHhdLm5hbWUpOworICAgICAgICB9 CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAoKEVs Zl9TeW0gKilzeW0pLT5zdF92YWx1ZSA9IHN0X3ZhbHVlOworICAgIH0KKworICAgIHJldHVybiBy YzsKK30KKworaW50IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNlX2Vs ZiAqZWxmKQoreworICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnIsICpiYXNlOworICAgIHVu c2lnbmVkIGludCBpOworICAgIGludCByYyA9IDA7CisKKyAgICBBU1NFUlQoZWxmLT5zeW0pOwor CisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7Cisg ICAgICAgIHIgPSAmZWxmLT5zZWNbaV07CisKKyAgICAgICAgaWYgKCAoci0+c2VjLT5zaF90eXBl ICE9IFNIVF9SRUxBKSAmJgorICAgICAgICAgICAgIChyLT5zZWMtPnNoX3R5cGUgIT0gU0hUX1JF TCkgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgIC8qIElzIGl0IGEgdmFsaWQg cmVsb2NhdGlvbiBzZWN0aW9uPyAqLworICAgICAgICAgaWYgKCByLT5zZWMtPnNoX2luZm8gPj0g ZWxmLT5oZHItPmVfc2hudW0gKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgIGJh c2UgPSAmZWxmLT5zZWNbci0+c2VjLT5zaF9pbmZvXTsKKworICAgICAgICAgLyogRG9uJ3QgcmVs b2NhdGUgbm9uLWFsbG9jYXRlZCBzZWN0aW9ucy4gKi8KKyAgICAgICAgIGlmICggIShiYXNlLT5z ZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg ICAgICBpZiAoIHItPnNlYy0+c2hfbGluayAhPSBlbGYtPnN5bXRhYl9pZHggKQorICAgICAgICB7 CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBSZWxhdGl2ZSBs aW5rIG9mICVzIGlzIGluY29ycmVjdCAoJWQsIGV4cGVjdGVkPSVkKVxuIiwKKyAgICAgICAgICAg ICAgICAgICAgZWxmLT5uYW1lLCByLT5uYW1lLCByLT5zZWMtPnNoX2xpbmssIGVsZi0+c3ltdGFi X2lkeCk7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgfQorCisgICAgICAgIGlmICggci0+c2VjLT5zaF90eXBlID09IFNIVF9SRUxBICkKKyAg ICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShlbGYsIGJhc2UsIHIpOwor ICAgICAgICBlbHNlIC8qIFNIVF9SRUwgKi8KKyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNl X3BlcmZvcm1fcmVsKGVsZiwgYmFzZSwgcik7CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAg ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgeHNw bGljZV9oZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAgICAg Y29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOworICAgIGludCByYzsKIAogICAgIGlmICgg c2l6ZW9mKCplbGYtPmhkcikgPiBlbGYtPmxlbiApCiAgICAgewpAQCAtMjc5LDYgKzM5MywxMCBA QCBzdGF0aWMgaW50IHhzcGxpY2VfaGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2Vs ZiAqZWxmKQogICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiAgICAgfQogCisgICAgcmMgPSBh cmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1 cm4gcmM7CisKICAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID09IFNITl9VTkRFRiApCiAg ICAgewogICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIG5h bWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2Vs ZnN0cnVjdHMuaCBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKaW5kZXggODVmMzVlZC4u MmI5YmQzZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCkBAIC00NzIsNiArNDcyLDggQEAgdHlwZWRlZiBz dHJ1Y3QgewogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVMRlNJWkUpICYmIChFTEZTSVpFID09IDMy KQorI2RlZmluZSBQUkl4RWxmQWRkcgkiMDh4IgorCiAjZGVmaW5lIEVsZl9FaGRyCUVsZjMyX0Vo ZHIKICNkZWZpbmUgRWxmX1BoZHIJRWxmMzJfUGhkcgogI2RlZmluZSBFbGZfU2hkcglFbGYzMl9T aGRyCkBAIC00OTcsNiArNDk5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgewogCiAjZGVmaW5lIEF1eElu Zm8JCUF1eDMySW5mbwogI2VsaWYgZGVmaW5lZChFTEZTSVpFKSAmJiAoRUxGU0laRSA9PSA2NCkK KyNkZWZpbmUgUFJJeEVsZkFkZHIJUFJJeDY0CisKICNkZWZpbmUgRWxmX0VoZHIJRWxmNjRfRWhk cgogI2RlZmluZSBFbGZfUGhkcglFbGY2NF9QaGRyCiAjZGVmaW5lIEVsZl9TaGRyCUVsZjY0X1No ZHIKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94 ZW4veHNwbGljZS5oCmluZGV4IDc1NTk4NzcuLjg1N2MyNjQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtNiw2 ICs2LDkgQEAKICNpZm5kZWYgX19YRU5fWFNQTElDRV9IX18KICNkZWZpbmUgX19YRU5fWFNQTElD RV9IX18KIAorc3RydWN0IHhzcGxpY2VfZWxmOworc3RydWN0IHhzcGxpY2VfZWxmX3NlYzsKK3N0 cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCiAj aWZkZWYgQ09ORklHX1hTUExJQ0UKQEAgLTE1LDYgKzE4LDI3IEBAIHN0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2Vfb3A7CiAKIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf b3AgKik7CiAKKy8qIEFyY2ggaG9va3MuICovCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYo Y29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworaW50IGFyY2hfeHNwbGljZV9wZXJmb3Jt X3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSk7CitpbnQgYXJj aF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICpyZWxhKTsKK2VudW0gdmFfdHlwZSB7CisgICAgWFNQTElDRV9WQV9SWCwgLyogLnRleHQg Ki8KKyAgICBYU1BMSUNFX1ZBX1JXLCAvKiAuZGF0YSAqLworICAgIFhTUExJQ0VfVkFfUk8sIC8q IC5yb2RhdGEgKi8KK307CisKKy8qCisgKiBGdW5jdGlvbiB0byBzZWN1cmUgdGhlIGFsbG9jYXRl IHBhZ2VzIChmcm9tIGFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKQorICogd2l0aCB0aGUgcmln aHQgcGFnZSBwZXJtaXNzaW9ucy4KKyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUoY29uc3Qg dm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGVzKTsKKwordm9p ZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKICNlbHNlCiAKICNpbmNsdWRlIDx4ZW4vZXJybm8u aD4gLyogRm9yIC1FTk9TWVMgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNl X2VsZi5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKaW5kZXggNjg2YWFmMC4uNzUw ZGM5NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKKysrIGIveGVu L2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKQEAgLTE1LDYgKzE1LDggQEAgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMuICovCiAgICAgY29uc3Qgdm9pZCAqZGF0YTsgICAg ICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gdGhlIHNlY3Rpb24gKGRvbmUgYnkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmX3Jlc29sdmVfc2VjdGlv bnMpLiAqLworICAgIHZvaWQgKmxvYWRfYWRkcjsgICAgICAgICAgICAgICAgICAgICAvKiBBIHBv aW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXN0aW5hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRG9uZSBieSBsb2FkX3BheWxvYWRfZGF0YS4gKi8KIH07 CiAKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gewpAQCAtMjksOCArMzEsMTAgQEAgc3RydWN0IHhz cGxpY2VfZWxmIHsKICAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7ICAgICAgICAgLyog QXJyYXkgb2Ygc2VjdGlvbnMsIGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc3ltICpzeW07ICAgICAgICAgLyogQXJyYXkgb2Ygc3ltYm9scyAsIGFsbG9jYXRlZCBi eSB1cy4gKi8KICAgICB1bnNpZ25lZCBpbnQgbnN5bTsKLSAgICBjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRlciB0byAuc3ltdGFiIHNlY3Rpb24gLSBha2EgdG8g c2VjW3hdLiAqLwotICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN0cnRhYjsvKiBQ b2ludGVyIHRvIC5zdHJ0YWIgc2VjdGlvbiAtIGFrYSB0byBzZWNbeV0uICovCisgICAgY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3ltdGFiOy8qIFBvaW50ZXIgdG8gLnN5bXRhYiBzZWN0 aW9uIC0gYWthIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlY1tzeW10YWJfaWR4XS4gKi8KKyAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpz dHJ0YWI7LyogUG9pbnRlciB0byAuc3RydGFiIHNlY3Rpb24uICovCisgICAgdW5zaWduZWQgaW50 IHN5bXRhYl9pZHg7CiB9OwogCiBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICp4c3BsaWNl X2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKQEAgLTM4LDYg KzQyLDkgQEAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqeHNwbGljZV9lbGZfc2VjX2J5 X25hbWUoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICoKIGludCB4c3BsaWNlX2VsZl9sb2FkKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKTsKIHZvaWQgeHNwbGljZV9l bGZfZnJlZShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CiAKK2ludCB4c3BsaWNlX2VsZl9yZXNv bHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworaW50IHhzcGxpY2VfZWxmX3Bl cmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKKwogI2VuZGlmIC8qIF9fWEVO X1hTUExJQ0VfRUxGX0hfXyAqLwogCiAvKgotLSAKMi40LjMKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=