From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: YAMAMOTO Mitsuharu Newsgroups: gmane.emacs.bugs Subject: bug#35871: 27.0.50; [PATCH] Fix SVG transparency with Cairo Date: Tue, 28 May 2019 09:52:24 +0900 Organization: Faculty of Science, Chiba University Message-ID: References: <87k1eh2ayc.fsf@gmail.com> Mime-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Tue_May_28_09:52:24_2019-1" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="198070"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?Q?Goj=C5=8D?=) APEL/10.8 EasyPG/1.0.0 Emacs/25.3 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) Cc: 35871@debbugs.gnu.org To: =?UTF-8?Q?K=C3=A9vin?= Le Gouguec Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue May 28 02:53:17 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hVQMc-000pIV-QS for geb-bug-gnu-emacs@m.gmane.org; Tue, 28 May 2019 02:53:15 +0200 Original-Received: from localhost ([127.0.0.1]:55102 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hVQMY-0000GX-BS for geb-bug-gnu-emacs@m.gmane.org; Mon, 27 May 2019 20:53:10 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:43814) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hVQMR-0000GS-F0 for bug-gnu-emacs@gnu.org; Mon, 27 May 2019 20:53:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hVQMQ-0008Gm-Ar for bug-gnu-emacs@gnu.org; Mon, 27 May 2019 20:53:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:41024) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hVQMQ-0008GX-7H for bug-gnu-emacs@gnu.org; Mon, 27 May 2019 20:53:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hVQMQ-0001CX-2b for bug-gnu-emacs@gnu.org; Mon, 27 May 2019 20:53:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: YAMAMOTO Mitsuharu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 28 May 2019 00:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 35871 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 35871-submit@debbugs.gnu.org id=B35871.15590047514575 (code B ref 35871); Tue, 28 May 2019 00:53:02 +0000 Original-Received: (at 35871) by debbugs.gnu.org; 28 May 2019 00:52:31 +0000 Original-Received: from localhost ([127.0.0.1]:54566 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hVQLv-0001Bj-93 for submit@debbugs.gnu.org; Mon, 27 May 2019 20:52:31 -0400 Original-Received: from mathmail.math.s.chiba-u.ac.jp ([133.82.132.2]:62481) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hVQLr-0001BX-My for 35871@debbugs.gnu.org; Mon, 27 May 2019 20:52:29 -0400 Original-Received: from mathent.math.s.chiba-u.ac.jp (mathent [192.168.32.5]) by mathmail.math.s.chiba-u.ac.jp (Postfix) with ESMTP id C6C5FF08EE; Tue, 28 May 2019 09:52:24 +0900 (JST) (envelope-from mituharu@math.s.chiba-u.ac.jp) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:159835 Archived-At: --Multipart_Tue_May_28_09:52:24_2019-1 Content-Type: text/plain; charset=US-ASCII On Fri, 24 May 2019 09:02:32 +0900, YAMAMOTO Mitsuharu wrote: > > As I mentioned in (*), the current image support on cairo has several > problems including this one. I'm thinking about porting the core part > of the image support code on the Mac port, to cairo. > > (*): https://lists.gnu.org/r/bug-gnu-emacs/2019-05/msg00205.html Patch attached. It makes cairo image support more consistent with the Xlib one. It supports postprocessing (:conversion ALGORITHM), mask removal (:mask nil), and image-mask-p. SVG images should look similar on both builds. Postscript support, which is marked obsolete, is dropped. Alpha channel (not the tRNS chunk in PNG) support for PNG and SVG is now easy on cairo, but not added in this patch, because it introduces some inconsistency with the Xlib one. It could be added as a separate change. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp --Multipart_Tue_May_28_09:52:24_2019-1 Content-Type: application/octet-stream; type=patch; name="mac-like-cairo-image.diff" Content-Disposition: attachment; filename="mac-like-cairo-image.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9kaXNwZXh0ZXJuLmggYi9zcmMvZGlzcGV4dGVybi5oCmluZGV4IGFh ODBmYTY1M2RiLi43MGFlOTZiODI0MyAxMDA2NDQKLS0tIGEvc3JjL2Rpc3BleHRlcm4uaAorKysg Yi9zcmMvZGlzcGV4dGVybi5oCkBAIC0zOCw3ICszOCw5IEBAIGFsb25nIHdpdGggR05VIEVtYWNz LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiB0eXBl ZGVmIFhDb2xvciBFbWFjc19Db2xvcjsKIHR5cGVkZWYgQ3Vyc29yIEVtYWNzX0N1cnNvcjsKICNk ZWZpbmUgTm9fQ3Vyc29yIChOb25lKQorI2lmbmRlZiBVU0VfQ0FJUk8KIHR5cGVkZWYgUGl4bWFw IEVtYWNzX1BpeG1hcDsKKyNlbmRpZgogdHlwZWRlZiBYUmVjdGFuZ2xlIEVtYWNzX1JlY3Rhbmds ZTsKIHR5cGVkZWYgWEdDVmFsdWVzIEVtYWNzX0dDOwogI2Vsc2UgLyogIUhBVkVfWF9XSU5ET1dT ICovCkBAIC05MiwxMSArOTQsMjYgQEAgeHN0cmNhc2VjbXAgKGNoYXIgY29uc3QgKmEsIGNoYXIg Y29uc3QgKmIpCiAjaWZkZWYgSEFWRV9YX1dJTkRPV1MKICNpbmNsdWRlIDxYMTEvWHJlc291cmNl Lmg+IC8qIGZvciBYcm1EYXRhYmFzZSAqLwogdHlwZWRlZiBzdHJ1Y3QgeF9kaXNwbGF5X2luZm8g RGlzcGxheV9JbmZvOworI2lmbmRlZiBVU0VfQ0FJUk8KIHR5cGVkZWYgWEltYWdlICpFbWFjc19Q aXhfQ29udGFpbmVyOwogdHlwZWRlZiBYSW1hZ2UgKkVtYWNzX1BpeF9Db250ZXh0OworI2VuZGlm CS8qICFVU0VfQ0FJUk8gKi8KICNkZWZpbmUgTmF0aXZlUmVjdGFuZ2xlIFhSZWN0YW5nbGUKICNl bmRpZgogCisjaWZkZWYgVVNFX0NBSVJPCisvKiBNaW5pbmFsIHZlcnNpb24gb2YgWEltYWdlLiAg Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisgIGludCB3aWR0aCwgaGVpZ2h0OwkJLyogc2l6ZSBvZiBp bWFnZSAqLworICBjaGFyICpkYXRhOwkJCS8qIHBvaW50ZXIgdG8gaW1hZ2UgZGF0YSAqLworICBp bnQgYnl0ZXNfcGVyX2xpbmU7CQkvKiBhY2NlbGFyYXRvciB0byBuZXh0IGxpbmUgKi8KKyAgaW50 IGJpdHNfcGVyX3BpeGVsOwkJLyogYml0cyBwZXIgcGl4ZWwgKFpQaXhtYXApICovCit9ICpFbWFj c19QaXhfQ29udGFpbmVyOwordHlwZWRlZiBFbWFjc19QaXhfQ29udGFpbmVyIEVtYWNzX1BpeG1h cDsKK3R5cGVkZWYgRW1hY3NfUGl4X0NvbnRhaW5lciBFbWFjc19QaXhfQ29udGV4dDsKKyNlbmRp ZgorCiAjaWZkZWYgSEFWRV9OVEdVSQogI2luY2x1ZGUgInczMmd1aS5oIgogdHlwZWRlZiBzdHJ1 Y3QgdzMyX2Rpc3BsYXlfaW5mbyBEaXNwbGF5X0luZm87CkBAIC0zMzk2LDcgKzM0MTMsOSBAQCBl eHRlcm4gdm9pZCBpbWFnZV9kZXN0cm95X2JpdG1hcCAoc3RydWN0IGZyYW1lICosIHB0cmRpZmZf dCk7CiBleHRlcm4gdm9pZCBpbWFnZV9kZXN0cm95X2FsbF9iaXRtYXBzIChEaXNwbGF5X0luZm8g Kik7CiAjaWZkZWYgSEFWRV9YX1dJTkRPV1MKIGV4dGVybiB2b2lkIHhfY3JlYXRlX2JpdG1hcF9t YXNrIChzdHJ1Y3QgZnJhbWUgKiwgcHRyZGlmZl90KTsKKyNpZm5kZWYgVVNFX0NBSVJPCiBleHRl cm4gdm9pZCB4X2tpbGxfZ3NfcHJvY2VzcyAoUGl4bWFwLCBzdHJ1Y3QgZnJhbWUgKik7CisjZW5k aWYJLyogIVVTRV9DQUlSTyAqLwogI2VuZGlmCiBleHRlcm4gTGlzcF9PYmplY3QgaW1hZ2VfZmlu ZF9pbWFnZV9maWxlIChMaXNwX09iamVjdCk7CiAKQEAgLTM0MDgsNyArMzQyNyw3IEBAIGJvb2wg dmFsaWRfaW1hZ2VfcCAoTGlzcF9PYmplY3QpOwogdm9pZCBwcmVwYXJlX2ltYWdlX2Zvcl9kaXNw bGF5IChzdHJ1Y3QgZnJhbWUgKiwgc3RydWN0IGltYWdlICopOwogcHRyZGlmZl90IGxvb2t1cF9p bWFnZSAoc3RydWN0IGZyYW1lICosIExpc3BfT2JqZWN0KTsKIAotI2lmIGRlZmluZWQgKEhBVkVf WF9XSU5ET1dTKSB8fCAgZGVmaW5lZCAoSEFWRV9OUykKKyNpZiBkZWZpbmVkIEhBVkVfWF9XSU5E T1dTIHx8IGRlZmluZWQgVVNFX0NBSVJPIHx8IGRlZmluZWQgSEFWRV9OUwogI2RlZmluZSBSR0Jf UElYRUxfQ09MT1IgdW5zaWduZWQgbG9uZwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9pbWFn ZS5jIGIvc3JjL2ltYWdlLmMKaW5kZXggNjk5YmRmZDRmYTEuLmU4NDcxOTViMmI3IDEwMDY0NAot LS0gYS9zcmMvaW1hZ2UuYworKysgYi9zcmMvaW1hZ2UuYwpAQCAtMzAsNiArMzAsNyBAQCBhbG9u ZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwogCiAjaW5jbHVkZSA8c2V0am1wLmg+CiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4K ICNpbmNsdWRlIDxjLWN0eXBlLmg+CiAjaW5jbHVkZSA8ZmxleG1lbWJlci5oPgogCkBAIC02Nywx MyArNjgsMzcgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogI2lmZGVmIEhBVkVfWF9XSU5ET1dTCiB0eXBl ZGVmIHN0cnVjdCB4X2JpdG1hcF9yZWNvcmQgQml0bWFwX1JlY29yZDsKKyNpZm5kZWYgVVNFX0NB SVJPCiAjZGVmaW5lIEdFVF9QSVhFTCh4aW1nLCB4LCB5KSBYR2V0UGl4ZWwgKHhpbWcsIHgsIHkp CisjZGVmaW5lIFBVVF9QSVhFTCBYUHV0UGl4ZWwKICNkZWZpbmUgTk9fUElYTUFQIE5vbmUKIAog I2RlZmluZSBQSVhfTUFTS19SRVRBSU4JMAogI2RlZmluZSBQSVhfTUFTS19EUkFXCTEKKyNlbmRp ZgkvKiAhVVNFX0NBSVJPICovCiAjZW5kaWYgLyogSEFWRV9YX1dJTkRPV1MgKi8KIAorI2lmZGVm IFVTRV9DQUlSTworI2RlZmluZSBHRVRfUElYRUwgaW1hZ2VfcGl4X2NvbnRleHRfZ2V0X3BpeGVs CisjZGVmaW5lIFBVVF9QSVhFTCBpbWFnZV9waXhfY29udGFpbmVyX3B1dF9waXhlbAorI2RlZmlu ZSBOT19QSVhNQVAgMAorCisjZGVmaW5lIFBJWF9NQVNLX1JFVEFJTgkwCisjZGVmaW5lIFBJWF9N QVNLX0RSQVcJMjU1CisKKyNkZWZpbmUgUkdCX1RPX1VMT05HKHIsIGcsIGIpICgoKHIpIDw8IDE2 KSB8ICgoZykgPDwgOCkgfCAoYikpCisjZGVmaW5lIEFSR0JfVE9fVUxPTkcoYSwgciwgZywgYikg KCgoYSkgPDwgMjQpIHwgKChyKSA8PCAxNikgfCAoKGcpIDw8IDgpIHwgKGIpKQorI2RlZmluZSBS RURfRlJPTV9VTE9ORyhjb2xvcikJKCgoY29sb3IpID4+IDE2KSAmIDB4ZmYpCisjZGVmaW5lIEdS RUVOX0ZST01fVUxPTkcoY29sb3IpCSgoKGNvbG9yKSA+PiA4KSAmIDB4ZmYpCisjZGVmaW5lIEJM VUVfRlJPTV9VTE9ORyhjb2xvcikJKChjb2xvcikgJiAweGZmKQorI2RlZmluZSBSRUQxNl9GUk9N X1VMT05HKGNvbG9yKQkJKFJFRF9GUk9NX1VMT05HIChjb2xvcikgKiAweDEwMSkKKyNkZWZpbmUg R1JFRU4xNl9GUk9NX1VMT05HKGNvbG9yKQkoR1JFRU5fRlJPTV9VTE9ORyAoY29sb3IpICogMHgx MDEpCisjZGVmaW5lIEJMVUUxNl9GUk9NX1VMT05HKGNvbG9yKQkoQkxVRV9GUk9NX1VMT05HIChj b2xvcikgKiAweDEwMSkKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgaW1hZ2VfYWxsb2NfaW1hZ2Vf Y29sb3IgKHN0cnVjdCBmcmFtZSAqLCBzdHJ1Y3QgaW1hZ2UgKiwKKwkJCQkJICAgICAgTGlzcF9P YmplY3QsIHVuc2lnbmVkIGxvbmcpOworI2VuZGlmCS8qIFVTRV9DQUlSTyAqLworCiAjaWZkZWYg SEFWRV9OVEdVSQogCiAvKiBXZSBuZWVkIChvciB3YW50KSB3MzIuaCBvbmx5IHdoZW4gd2UncmUg X25vdF8gY29tcGlsaW5nIGZvciBDeWd3aW4uICAqLwpAQCAtODQsNiArMTA5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgeF9iaXRtYXBfcmVjb3JkIEJpdG1hcF9SZWNvcmQ7CiAKIHR5cGVkZWYgc3RydWN0 IHczMl9iaXRtYXBfcmVjb3JkIEJpdG1hcF9SZWNvcmQ7CiAjZGVmaW5lIEdFVF9QSVhFTCh4aW1n LCB4LCB5KSBHZXRQaXhlbCAoeGltZywgeCwgeSkKKyNkZWZpbmUgUFVUX1BJWEVMIFhQdXRQaXhl bAogI2RlZmluZSBOT19QSVhNQVAgMAogCiAjZGVmaW5lIFBJWF9NQVNLX1JFVEFJTgkwCkBAIC05 NSw2ICsxMjEsNyBAQCB0eXBlZGVmIHN0cnVjdCB3MzJfYml0bWFwX3JlY29yZCBCaXRtYXBfUmVj b3JkOwogdHlwZWRlZiBzdHJ1Y3QgbnNfYml0bWFwX3JlY29yZCBCaXRtYXBfUmVjb3JkOwogCiAj ZGVmaW5lIEdFVF9QSVhFTCh4aW1nLCB4LCB5KSBYR2V0UGl4ZWwgKHhpbWcsIHgsIHkpCisjZGVm aW5lIFBVVF9QSVhFTCBYUHV0UGl4ZWwKICNkZWZpbmUgTk9fUElYTUFQIDAKIAogI2RlZmluZSBQ SVhfTUFTS19SRVRBSU4JMApAQCAtMTE4LDE2ICsxNDUsMTA5IEBAIHN0YXRpYyB2b2lkIGZyZWVf Y29sb3JfdGFibGUgKHZvaWQpOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgKmNvbG9yc19pbl9jb2xv cl90YWJsZSAoaW50ICpuKTsKICNlbmRpZgogCi0vKiBDb2RlIHRvIGRlYWwgd2l0aCBiaXRtYXBz LiAgQml0bWFwcyBhcmUgcmVmZXJlbmNlZCBieSB0aGVpciBiaXRtYXAKLSAgIGlkLCB3aGljaCBp cyBqdXN0IGFuIGludCB0aGF0IHRoaXMgc2VjdGlvbiByZXR1cm5zLiAgQml0bWFwcyBhcmUKLSAg IHJlZmVyZW5jZSBjb3VudGVkIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBhbW9uZyBmcmFtZXMuCisj aWZkZWYgVVNFX0NBSVJPCiAKLSAgIEJpdG1hcCBpbmRpY2VzIGFyZSBndWFyYW50ZWVkIHRvIGJl ID4gMCwgc28gYSBuZWdhdGl2ZSBudW1iZXIgY2FuCi0gICBiZSB1c2VkIHRvIGluZGljYXRlIG5v IGJpdG1hcC4KK3N0YXRpYyBFbWFjc19QaXhfQ29udGFpbmVyCitpbWFnZV9jcmVhdGVfcGl4X2Nv bnRhaW5lciAoc3RydWN0IGZyYW1lICpmLCB1bnNpZ25lZCBpbnQgd2lkdGgsCisJCQkgICAgdW5z aWduZWQgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IGRlcHRoKQoreworICBFbWFjc19QaXhfQ29u dGFpbmVyIHBpbWc7CiAKLSAgIElmIHlvdSB1c2UgaW1hZ2VfY3JlYXRlX2JpdG1hcF9mcm9tX2Rh dGEsIHRoZW4geW91IG11c3Qga2VlcCB0cmFjawotICAgb2YgdGhlIGJpdG1hcHMgeW91cnNlbGYu ICBUaGF0IGlzLCBjcmVhdGluZyBhIGJpdG1hcCBmcm9tIHRoZSBzYW1lCi0gICBkYXRhIG1vcmUg dGhhbiBvbmNlIHdpbGwgbm90IGJlIGNhdWdodC4gICovCisgIHBpbWcgPSB4bWFsbG9jIChzaXpl b2YgKCpwaW1nKSk7CisgIHBpbWctPndpZHRoID0gd2lkdGg7CisgIHBpbWctPmhlaWdodCA9IGhl aWdodDsKKyAgcGltZy0+Yml0c19wZXJfcGl4ZWwgPSBkZXB0aCA9PSAxID8gOCA6IDMyOworICBw aW1nLT5ieXRlc19wZXJfbGluZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoICgoZGVw dGggPT0gMQorCQkJCQkJCSA/IENBSVJPX0ZPUk1BVF9BOAorCQkJCQkJCSA6IENBSVJPX0ZPUk1B VF9SR0IyNCksCisJCQkJCQkJd2lkdGgpOworICBwaW1nLT5kYXRhID0geG1hbGxvYyAocGltZy0+ Ynl0ZXNfcGVyX2xpbmUgKiBoZWlnaHQpOworCisgIHJldHVybiBwaW1nOworfQorCitzdGF0aWMg dm9pZAoraW1hZ2VfcGl4X2NvbnRhaW5lcl9wdXRfcGl4ZWwgKEVtYWNzX1BpeF9Db250YWluZXIg aW1hZ2UsCisJCQkgICAgICAgaW50IHgsIGludCB5LCB1bnNpZ25lZCBsb25nIHBpeGVsKQorewor ICBpZiAoaW1hZ2UtPmJpdHNfcGVyX3BpeGVsID09IDMyKQorICAgICgodWludDMyX3QgKikoaW1h Z2UtPmRhdGEgKyB5ICogaW1hZ2UtPmJ5dGVzX3Blcl9saW5lKSlbeF0gPSBwaXhlbDsKKyAgZWxz ZQorICAgICgodWludDhfdCAqKShpbWFnZS0+ZGF0YSArIHkgKiBpbWFnZS0+Ynl0ZXNfcGVyX2xp bmUpKVt4XSA9IHBpeGVsOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworaW1hZ2VfcGl4X2Nv bnRleHRfZ2V0X3BpeGVsIChFbWFjc19QaXhfQ29udGV4dCBpbWFnZSwgaW50IHgsIGludCB5KQor eworICBpZiAoaW1hZ2UtPmJpdHNfcGVyX3BpeGVsID09IDMyKQorICAgIHJldHVybiAoKHVpbnQz Ml90ICopKGltYWdlLT5kYXRhICsgeSAqIGltYWdlLT5ieXRlc19wZXJfbGluZSkpW3hdOworICBl bHNlCisgICAgcmV0dXJuICgodWludDhfdCAqKShpbWFnZS0+ZGF0YSArIHkgKiBpbWFnZS0+Ynl0 ZXNfcGVyX2xpbmUpKVt4XTsKK30KKworc3RhdGljIEVtYWNzX1BpeF9Db250YWluZXIKK2ltYWdl X3BpeF9jb250YWluZXJfY3JlYXRlX2Zyb21fYml0bWFwX2RhdGEgKHN0cnVjdCBmcmFtZSAqZiwK KwkJCQkJICAgICBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgd2lkdGgsCisJCQkJCSAgICAgdW5z aWduZWQgaW50IGhlaWdodCwKKwkJCQkJICAgICB1bnNpZ25lZCBsb25nIGZnLAorCQkJCQkgICAg IHVuc2lnbmVkIGxvbmcgYmcpCit7CisgIEVtYWNzX1BpeF9Db250YWluZXIgcGltZyA9IGltYWdl X2NyZWF0ZV9waXhfY29udGFpbmVyIChmLCB3aWR0aCwgaGVpZ2h0LCAwKTsKKyAgaW50IGJ5dGVz X3Blcl9saW5lID0gKHdpZHRoICsgKENIQVJfQklUIC0gMSkpIC8gQ0hBUl9CSVQ7CisKKyAgZm9y IChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICBmb3IgKGludCB4ID0g MDsgeCA8IHdpZHRoOyB4KyspCisJUFVUX1BJWEVMIChwaW1nLCB4LCB5LAorCQkgICAoZGF0YVt4 IC8gQ0hBUl9CSVRdID4+ICh4ICUgQ0hBUl9CSVQpKSAmIDEgPyBmZyA6IGJnKTsKKyAgICAgIGRh dGEgKz0gYnl0ZXNfcGVyX2xpbmU7CisgICAgfQorCisgIHJldHVybiBwaW1nOworfQorCitzdGF0 aWMgY2Fpcm9fc3VyZmFjZV90ICoKK2NyX2NyZWF0ZV9jcl9zdXJmYWNlX2Zyb21faW1hZ2UgKHN0 cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCit7CisgIEVtYWNzX1BpeF9Db250YWlu ZXIgcGltZyA9IGltZy0+cGl4bWFwOworICBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7CisKKyAg aWYgKGltZy0+bWFzaykKKyAgICB7CisgICAgICBpbnQgeCwgeTsKKworICAgICAgZm9yICh5ID0g MDsgeSA8IHBpbWctPmhlaWdodDsgeSsrKQorCWZvciAoeCA9IDA7IHggPCBwaW1nLT53aWR0aDsg eCsrKQorCSAgeworCSAgICB1bnNpZ25lZCBsb25nIGNvbG9yLCBhbHBoYTsKKwkgICAgaW50IHIs IGcsIGI7CisKKwkgICAgY29sb3IgPSBHRVRfUElYRUwgKHBpbWcsIHgsIHkpOworCSAgICBhbHBo YSA9IEdFVF9QSVhFTCAoaW1nLT5tYXNrLCB4LCB5KTsKKwkgICAgciA9IChSRURfRlJPTV9VTE9O RyAoY29sb3IpICogYWxwaGEgKyAweDdmKSAvIDB4ZmY7CisJICAgIGcgPSAoR1JFRU5fRlJPTV9V TE9ORyAoY29sb3IpICogYWxwaGEgKyAweDdmKSAvIDB4ZmY7CisJICAgIGIgPSAoQkxVRV9GUk9N X1VMT05HIChjb2xvcikgKiBhbHBoYSArIDB4N2YpIC8gMHhmZjsKKwkgICAgUFVUX1BJWEVMIChw aW1nLCB4LCB5LCBBUkdCX1RPX1VMT05HIChhbHBoYSwgciwgZywgYikpOworCSAgfQorICAgICAg eGZyZWUgKGltZy0+bWFzay0+ZGF0YSk7CisgICAgICBpbWctPm1hc2stPmRhdGEgPSBOVUxMOwor ICAgIH0KKyAgYmxvY2tfaW5wdXQgKCk7CisgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNl X2NyZWF0ZV9mb3JfZGF0YSAoKHVuc2lnbmVkIGNoYXIgKikgcGltZy0+ZGF0YSwKKwkJCQkJCSAo aW1nLT5tYXNrCisJCQkJCQkgID8gQ0FJUk9fRk9STUFUX0FSR0IzMgorCQkJCQkJICA6IENBSVJP X0ZPUk1BVF9SR0IyNCksCisJCQkJCQkgcGltZy0+d2lkdGgsIHBpbWctPmhlaWdodCwKKwkJCQkJ CSBwaW1nLT5ieXRlc19wZXJfbGluZSk7CisgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qg a2V5OworICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEgKHN1cmZhY2UsICZrZXksIHBpbWct PmRhdGEsIHhmcmVlKTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcGltZy0+ZGF0YSA9IE5VTEw7 CisKKyAgcmV0dXJuIHN1cmZhY2U7Cit9CisKKyNlbmRpZgkvKiBVU0VfQ0FJUk8gKi8KIAogI2lm ZGVmIEhBVkVfTlMKIC8qIFVzZSB3aXRoIGltYWdlcyBjcmVhdGVkIGJ5IG5zX2ltYWdlX2Zvcl9Y UE0uICAqLwpAQCAtMTQ2LDYgKzI2NiwxNiBAQCBYUHV0UGl4ZWwgKEVtYWNzX1BpeF9Db250YWlu ZXIgaW1hZ2UsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgbG9uZyBwaXhlbCkKIH0KICNlbmRpZiAv KiBIQVZFX05TICovCiAKKy8qIENvZGUgdG8gZGVhbCB3aXRoIGJpdG1hcHMuICBCaXRtYXBzIGFy ZSByZWZlcmVuY2VkIGJ5IHRoZWlyIGJpdG1hcAorICAgaWQsIHdoaWNoIGlzIGp1c3QgYW4gaW50 IHRoYXQgdGhpcyBzZWN0aW9uIHJldHVybnMuICBCaXRtYXBzIGFyZQorICAgcmVmZXJlbmNlIGNv dW50ZWQgc28gdGhleSBjYW4gYmUgc2hhcmVkIGFtb25nIGZyYW1lcy4KKworICAgQml0bWFwIGlu ZGljZXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgPiAwLCBzbyBhIG5lZ2F0aXZlIG51bWJlciBjYW4K KyAgIGJlIHVzZWQgdG8gaW5kaWNhdGUgbm8gYml0bWFwLgorCisgICBJZiB5b3UgdXNlIGltYWdl X2NyZWF0ZV9iaXRtYXBfZnJvbV9kYXRhLCB0aGVuIHlvdSBtdXN0IGtlZXAgdHJhY2sKKyAgIG9m IHRoZSBiaXRtYXBzIHlvdXJzZWxmLiAgVGhhdCBpcywgY3JlYXRpbmcgYSBiaXRtYXAgZnJvbSB0 aGUgc2FtZQorICAgZGF0YSBtb3JlIHRoYW4gb25jZSB3aWxsIG5vdCBiZSBjYXVnaHQuICAqLwog CiAvKiBGdW5jdGlvbnMgdG8gYWNjZXNzIHRoZSBjb250ZW50cyBvZiBhIGJpdG1hcCwgZ2l2ZW4g YW4gaWQuICAqLwogCkBAIC00MzMsMTYgKzU2MywxNyBAQCBzdGF0aWMgdm9pZCBpbWFnZV91bmdl dF94X2ltYWdlIChzdHJ1Y3QgaW1hZ2UgKiwgYm9vbCwgRW1hY3NfUGl4X0NvbnRhaW5lcik7CiAK ICNpZmRlZiBIQVZFX1hfV0lORE9XUwogCisjaWZuZGVmIFVTRV9DQUlSTwogc3RhdGljIHZvaWQg aW1hZ2Vfc3luY190b19waXhtYXBzIChzdHJ1Y3QgZnJhbWUgKiwgc3RydWN0IGltYWdlICopOwor I2VuZGlmCS8qICFVU0VfQ0FJUk8gKi8KIAotLyogVXNlZnVsIGZ1bmN0aW9ucyBkZWZpbmVkIGlu IHRoZSBzZWN0aW9uCi0gICBgSW1hZ2UgdHlwZSBpbmRlcGVuZGVudCBpbWFnZSBzdHJ1Y3R1cmVz JyBiZWxvdy4gKi8KLQotc3RhdGljIHVuc2lnbmVkIGxvbmcgZm91cl9jb3JuZXJzX2Jlc3QgKFhJ bWFnZSAqeGltZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg KmNvcm5lcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGhlaWdodCk7CisvKiBXZSBhcmUgd29ya2luZyBvbiBYLXNwZWNpZmljIGRh dGEgc3RydWN0dXJlcyBoZXJlIGV2ZW4gd2l0aCBjYWlyby4KKyAgIFNvIHdlIHVzZSBYLXNwZWNp ZmljIHZlcnNpb25zIG9mIGltYWdlIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbgorICAgZnVuY3Rp b25zIGFuZCBpbmxpbmUgdGhlIHNwZWNpZmljIGNhc2Ugb2YgZm91cl9jb3JuZXJzX2Jlc3QuICAq LwogCitzdGF0aWMgYm9vbCB4X2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKHN0cnVjdCBmcmFt ZSAqLCBpbnQsIGludCwgaW50LAorCQkJCQkgWEltYWdlICoqLCBQaXhtYXAgKik7CitzdGF0aWMg dm9pZCB4X2Rlc3Ryb3lfeF9pbWFnZSAoWEltYWdlICopOwogCiAvKiBDcmVhdGUgYSBtYXNrIG9m IGEgYml0bWFwLiBOb3RlIGlzIHRoaXMgbm90IGEgcGVyZmVjdCBtYXNrLgogICAgSXQncyBuaWNl ciB3aXRoIHNvbWUgYm9yZGVycyBpbiB0aGlzIGNvbnRleHQgKi8KQEAgLTQ1NCw3ICs1ODUsNyBA QCB4X2NyZWF0ZV9iaXRtYXBfbWFzayAoc3RydWN0IGZyYW1lICpmLCBwdHJkaWZmX3QgaWQpCiAg IFhJbWFnZSAqeGltZywgKm1hc2tfaW1nOwogICB1bnNpZ25lZCBsb25nIHdpZHRoLCBoZWlnaHQ7 CiAgIGJvb2wgcmVzdWx0OwotICB1bnNpZ25lZCBsb25nIGJnOworICB1bnNpZ25lZCBsb25nIGJn IFVOSU5JVDsKICAgdW5zaWduZWQgbG9uZyB4LCB5LCB4cCwgeG0sIHlwLCB5bTsKICAgR0MgZ2M7 CiAKQEAgLTQ3Nyw4ICs2MDgsNyBAQCB4X2NyZWF0ZV9iaXRtYXBfbWFzayAoc3RydWN0IGZyYW1l ICpmLCBwdHJkaWZmX3QgaWQpCiAgICAgICByZXR1cm47CiAgICAgfQogCi0gIHJlc3VsdCA9IGlt YWdlX2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXBfMSAoZiwgd2lkdGgsIGhlaWdodCwgMSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFza19pbWcsICZt YXNrLCBOVUxMKTsKKyAgcmVzdWx0ID0geF9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwIChmLCB3 aWR0aCwgaGVpZ2h0LCAxLCAmbWFza19pbWcsICZtYXNrKTsKIAogICB1bmJsb2NrX2lucHV0ICgp OwogICBpZiAoIXJlc3VsdCkKQEAgLTQ4Nyw3ICs2MTcsMjMgQEAgeF9jcmVhdGVfYml0bWFwX21h c2sgKHN0cnVjdCBmcmFtZSAqZiwgcHRyZGlmZl90IGlkKQogICAgICAgcmV0dXJuOwogICAgIH0K IAotICBiZyA9IGZvdXJfY29ybmVyc19iZXN0ICh4aW1nLCBOVUxMLCB3aWR0aCwgaGVpZ2h0KTsK KyAgdW5zaWduZWQgbG9uZyBjb3JuZXJfcGl4ZWxzWzRdOworICBjb3JuZXJfcGl4ZWxzWzBdID0g WEdldFBpeGVsICh4aW1nLCAwLCAwKTsKKyAgY29ybmVyX3BpeGVsc1sxXSA9IFhHZXRQaXhlbCAo eGltZywgd2lkdGggLSAxLCAwKTsKKyAgY29ybmVyX3BpeGVsc1syXSA9IFhHZXRQaXhlbCAoeGlt Zywgd2lkdGggLSAxLCBoZWlnaHQgLSAxKTsKKyAgY29ybmVyX3BpeGVsc1szXSA9IFhHZXRQaXhl bCAoeGltZywgMCwgaGVpZ2h0IC0gMSk7CisgIGludCBpLCBiZXN0X2NvdW50OworICBmb3IgKGkg PSBiZXN0X2NvdW50ID0gMDsgaSA8IDQ7ICsraSkKKyAgICB7CisgICAgICBpbnQgaiwgbjsKKwor ICAgICAgZm9yIChqID0gbiA9IDA7IGogPCA0OyArK2opCisJaWYgKGNvcm5lcl9waXhlbHNbaV0g PT0gY29ybmVyX3BpeGVsc1tqXSkKKwkgICsrbjsKKworICAgICAgaWYgKG4gPiBiZXN0X2NvdW50 KQorCWJnID0gY29ybmVyX3BpeGVsc1tpXSwgYmVzdF9jb3VudCA9IG47CisgICAgfQogCiAgIGZv ciAoeSA9IDA7IHkgPCB4aW1nLT5oZWlnaHQ7ICsreSkKICAgICB7CkBAIC01MjIsNyArNjY4LDcg QEAgeF9jcmVhdGVfYml0bWFwX21hc2sgKHN0cnVjdCBmcmFtZSAqZiwgcHRyZGlmZl90IGlkKQog ICBkcHlpbmZvLT5iaXRtYXBzW2lkIC0gMV0ubWFzayA9IG1hc2s7CiAKICAgWERlc3Ryb3lJbWFn ZSAoeGltZyk7Ci0gIGltYWdlX2Rlc3Ryb3lfeF9pbWFnZSAobWFza19pbWcpOworICB4X2Rlc3Ry b3lfeF9pbWFnZSAobWFza19pbWcpOwogfQogCiAjZW5kaWYgLyogSEFWRV9YX1dJTkRPV1MgKi8K QEAgLTEwMTUsMTMgKzExNjEsMjIgQEAgcHJlcGFyZV9pbWFnZV9mb3JfZGlzcGxheSAoc3RydWN0 IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICAgLyogV2UncmUgYWJvdXQgdG8gZGlzcGxh eSBJTUcsIHNvIHNldCBpdHMgdGltZXN0YW1wIHRvIGBub3cnLiAgKi8KICAgaW1nLT50aW1lc3Rh bXAgPSBjdXJyZW50X3RpbWVzcGVjICgpOwogCi0jaWZuZGVmIFVTRV9DQUlSTwogICAvKiBJZiBJ TUcgZG9lc24ndCBoYXZlIGEgcGl4bWFwIHlldCwgbG9hZCBpdCBub3csIHVzaW5nIHRoZSBpbWFn ZQogICAgICB0eXBlIGRlcGVuZGVudCBsb2FkZXIgZnVuY3Rpb24uICAqLwogICBpZiAoaW1nLT5w aXhtYXAgPT0gTk9fUElYTUFQICYmICFpbWctPmxvYWRfZmFpbGVkX3ApCiAgICAgaW1nLT5sb2Fk X2ZhaWxlZF9wID0gISBpbWctPnR5cGUtPmxvYWQgKGYsIGltZyk7CiAKLSNpZmRlZiBIQVZFX1hf V0lORE9XUworI2lmZGVmIFVTRV9DQUlSTworICBpZiAoIWltZy0+bG9hZF9mYWlsZWRfcCAmJiBp bWctPmNyX2RhdGEgPT0gTlVMTCkKKyAgICB7CisgICAgICBpbWctPmNyX2RhdGEgPSBjcl9jcmVh dGVfY3Jfc3VyZmFjZV9mcm9tX2ltYWdlIChmLCBpbWcpOworICAgICAgaWYgKGltZy0+Y3JfZGF0 YSA9PSBOVUxMKQorCXsKKwkgIGltZy0+bG9hZF9mYWlsZWRfcCA9IDE7CisJICBpbWctPnR5cGUt PmZyZWUgKGYsIGltZyk7CisJfQorICAgIH0KKyNlbGlmIGRlZmluZWQgSEFWRV9YX1dJTkRPV1MK ICAgaWYgKCFpbWctPmxvYWRfZmFpbGVkX3ApCiAgICAgewogICAgICAgYmxvY2tfaW5wdXQgKCk7 CkBAIC0xMDI5LDcgKzExODQsNiBAQCBwcmVwYXJlX2ltYWdlX2Zvcl9kaXNwbGF5IChzdHJ1Y3Qg ZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogICAgICAgdW5ibG9ja19pbnB1dCAoKTsKICAg ICB9CiAjZW5kaWYKLSNlbmRpZgogfQogCiAKQEAgLTEwNzYsNDggKzEyMzAsNiBAQCBpbWFnZV9h c2NlbnQgKHN0cnVjdCBpbWFnZSAqaW1nLCBzdHJ1Y3QgZmFjZSAqZmFjZSwgc3RydWN0IGdseXBo X3NsaWNlICpzbGljZSkKICAgcmV0dXJuIGFzY2VudDsKIH0KIAotI2lmZGVmIFVTRV9DQUlSTwot c3RhdGljIHVpbnQzMl90Ci1lbWFjc19jb2xvcl90b19hcmdiMzIgKEVtYWNzX0NvbG9yICplYykK LXsKLSAgcmV0dXJuICgoMHhmZnUgPDwgMjQpIHwgKChlYy0+cmVkIC8gMjU2KSA8PCAxNikKLQkg IHwgKChlYy0+Z3JlZW4gLyAyNTYpIDw8IDgpIHwgKGVjLT5ibHVlIC8gMjU2KSk7Ci19Ci0KLXN0 YXRpYyB1aW50MzJfdAotZ2V0X3NwZWNfYmdfb3JfYWxwaGFfYXNfYXJnYiAoc3RydWN0IGltYWdl ICppbWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWUgKmYpCi17 Ci0gIHVpbnQzMl90IGJnY29sb3IgPSAwOwotICBFbWFjc19Db2xvciB4Ymdjb2xvcjsKLSAgTGlz cF9PYmplY3QgYmcgPSBpbWFnZV9zcGVjX3ZhbHVlIChpbWctPnNwZWMsIFFDYmFja2dyb3VuZCwg TlVMTCk7Ci0KLSAgaWYgKFNUUklOR1AgKGJnKSAmJiB4X3BhcnNlX2NvbG9yIChmLCBTU0RBVEEg KGJnKSwgJnhiZ2NvbG9yKSkKLSAgICBiZ2NvbG9yID0gZW1hY3NfY29sb3JfdG9fYXJnYjMyICgm eGJnY29sb3IpOwotCi0gIHJldHVybiBiZ2NvbG9yOwotfQotCi1zdGF0aWMgY2Fpcm9fc3VyZmFj ZV90ICoKLWNyZWF0ZV9jYWlyb19pbWFnZV9zdXJmYWNlIChpbnQgd2lkdGgsIGludCBoZWlnaHQp Ci17Ci0gIGNhaXJvX2Zvcm1hdF90IGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7Ci0gIGVh c3NlcnQgKGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoIChmb3JtYXQsIHdpZHRoKSA9PSB3 aWR0aCAqIDQpOwotCi0gIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZSAoZm9ybWF0 LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotc3RhdGljIHZvaWQKLXNldF9jYWlyb19pbWFnZV9zdXJm YWNlIChzdHJ1Y3QgaW1hZ2UgKmltZywgY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlKQotewotICBj YWlyb19zdXJmYWNlX21hcmtfZGlydHkgKHN1cmZhY2UpOwotICBpbWctPndpZHRoID0gY2Fpcm9f aW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGggKHN1cmZhY2UpOwotICBpbWctPmhlaWdodCA9IGNhaXJv X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodCAoc3VyZmFjZSk7Ci0gIGltZy0+Y3JfZGF0YSA9IHN1 cmZhY2U7Ci0gIGltZy0+cGl4bWFwID0gMDsKLX0KLSNlbmRpZgotCiAKIAwKIC8qIEltYWdlIGJh Y2tncm91bmQgY29sb3JzLiAgKi8KQEAgLTExODQsNyArMTI5NiwxOSBAQCBpbWFnZV9iYWNrZ3Jv dW5kIChzdHJ1Y3QgaW1hZ2UgKmltZywgc3RydWN0IGZyYW1lICpmLCBFbWFjc19QaXhfQ29udGV4 dCBwaW1nKQogICAgICAgaWYgKGZyZWVfcGltZykKIAlwaW1nID0gaW1hZ2VfZ2V0X3hfaW1hZ2Vf b3JfZGMgKGYsIGltZywgMCwgJnByZXYpOwogCi0gICAgICBpbWctPmJhY2tncm91bmQgPSBmb3Vy X2Nvcm5lcnNfYmVzdCAocGltZywgaW1nLT5jb3JuZXJzLCBpbWctPndpZHRoLCBpbWctPmhlaWdo dCk7CisgICAgICBSR0JfUElYRUxfQ09MT1IgYmcKKwk9IGZvdXJfY29ybmVyc19iZXN0IChwaW1n LCBpbWctPmNvcm5lcnMsIGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0KTsKKyNpZmRlZiBVU0VfQ0FJ Uk8KKyAgICAgIHsKKwljaGFyIGNvbG9yX25hbWVbMzBdOworCXNwcmludGYgKGNvbG9yX25hbWUs ICIjJTA0eCUwNHglMDR4IiwKKwkJICh1bnNpZ25lZCBpbnQpIFJFRDE2X0ZST01fVUxPTkcgKGJn KSwKKwkJICh1bnNpZ25lZCBpbnQpIEdSRUVOMTZfRlJPTV9VTE9ORyAoYmcpLAorCQkgKHVuc2ln bmVkIGludCkgQkxVRTE2X0ZST01fVUxPTkcgKGJnKSk7CisJYmcgPSBpbWFnZV9hbGxvY19pbWFn ZV9jb2xvciAoZiwgaW1nLCBidWlsZF9zdHJpbmcgKGNvbG9yX25hbWUpLCAwKTsKKyAgICAgIH0K KyNlbmRpZgorICAgICAgaW1nLT5iYWNrZ3JvdW5kID0gYmc7CiAKICAgICAgIGlmIChmcmVlX3Bp bWcpCiAJaW1hZ2VfdW5nZXRfeF9pbWFnZV9vcl9kYyAoaW1nLCAwLCBwaW1nLCBwcmV2KTsKQEAg LTEyNTksNyArMTM4Myw3IEBAIGltYWdlX2NsZWFyX2ltYWdlXzEgKHN0cnVjdCBmcmFtZSAqZiwg c3RydWN0IGltYWdlICppbWcsIGludCBmbGFncykKIAkgIC8qIE5PVEUgKEhBVkVfTlMpOiBiYWNr Z3JvdW5kIGNvbG9yIGlzIE5PVCBhbiBpbmRleGVkIGNvbG9yISAqLwogCSAgaW1nLT5iYWNrZ3Jv dW5kX3ZhbGlkID0gMDsKIAl9Ci0jaWZkZWYgSEFWRV9YX1dJTkRPV1MKKyNpZiBkZWZpbmVkIEhB VkVfWF9XSU5ET1dTICYmICFkZWZpbmVkIFVTRV9DQUlSTwogICAgICAgaWYgKGltZy0+eGltZykK IAl7CiAJICBpbWFnZV9kZXN0cm95X3hfaW1hZ2UgKGltZy0+eGltZyk7CkBAIC0xMjc3LDcgKzE0 MDEsNyBAQCBpbWFnZV9jbGVhcl9pbWFnZV8xIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFn ZSAqaW1nLCBpbnQgZmxhZ3MpCiAJICBpbWctPm1hc2sgPSBOT19QSVhNQVA7CiAJICBpbWctPmJh Y2tncm91bmRfdHJhbnNwYXJlbnRfdmFsaWQgPSAwOwogCX0KLSNpZmRlZiBIQVZFX1hfV0lORE9X UworI2lmIGRlZmluZWQgSEFWRV9YX1dJTkRPV1MgJiYgIWRlZmluZWQgVVNFX0NBSVJPCiAgICAg ICBpZiAoaW1nLT5tYXNrX2ltZykKIAl7CiAJICBpbWFnZV9kZXN0cm95X3hfaW1hZ2UgKGltZy0+ bWFza19pbWcpOwpAQCAtMTI5MCwxNCArMTQxNCwyMSBAQCBpbWFnZV9jbGVhcl9pbWFnZV8xIChz dHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBpbnQgZmxhZ3MpCiAgIGlmICgoZmxh Z3MgJiBDTEVBUl9JTUFHRV9DT0xPUlMpICYmIGltZy0+bmNvbG9ycykKICAgICB7CiAgICAgICAv KiBXMzJfVE9ETzogY29sb3IgdGFibGUgc3VwcG9ydC4gICovCi0jaWZkZWYgSEFWRV9YX1dJTkRP V1MKKyNpZiBkZWZpbmVkIEhBVkVfWF9XSU5ET1dTICYmICFkZWZpbmVkIFVTRV9DQUlSTwogICAg ICAgeF9mcmVlX2NvbG9ycyAoZiwgaW1nLT5jb2xvcnMsIGltZy0+bmNvbG9ycyk7Ci0jZW5kaWYg LyogSEFWRV9YX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX1hfV0lORE9XUyAmJiAhVVNFX0NB SVJPICovCiAgICAgICB4ZnJlZSAoaW1nLT5jb2xvcnMpOwogICAgICAgaW1nLT5jb2xvcnMgPSBO VUxMOwogICAgICAgaW1nLT5uY29sb3JzID0gMDsKICAgICB9CiAKKyNpZmRlZiBVU0VfQ0FJUk8K KyAgaWYgKGltZy0+Y3JfZGF0YSkKKyAgICB7CisgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kg KChjYWlyb19zdXJmYWNlX3QgKikgaW1nLT5jcl9kYXRhKTsKKyAgICAgIGltZy0+Y3JfZGF0YSA9 IE5VTEw7CisgICAgfQorI2VuZGlmCS8qIFVTRV9DQUlSTyAqLwogfQogCiAvKiBGcmVlIFggcmVz b3VyY2VzIG9mIGltYWdlIElNRyB3aGljaCBpcyB1c2VkIG9uIGZyYW1lIEYuICAqLwpAQCAtMTMw NiwxMCArMTQzNyw2IEBAIHN0YXRpYyB2b2lkCiBpbWFnZV9jbGVhcl9pbWFnZSAoc3RydWN0IGZy YW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKIHsKICAgYmxvY2tfaW5wdXQgKCk7Ci0jaWZkZWYg VVNFX0NBSVJPCi0gIGlmIChpbWctPmNyX2RhdGEpCi0gICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95 ICgoY2Fpcm9fc3VyZmFjZV90ICopaW1nLT5jcl9kYXRhKTsKLSNlbmRpZgogICBpbWFnZV9jbGVh cl9pbWFnZV8xIChmLCBpbWcsCiAJCSAgIENMRUFSX0lNQUdFX1BJWE1BUCB8IENMRUFSX0lNQUdF X01BU0sgfCBDTEVBUl9JTUFHRV9DT0xPUlMpOwogICB1bmJsb2NrX2lucHV0ICgpOwpAQCAtMjAw MCwxNCArMjEyNywxMCBAQCBtYXJrX2ltYWdlX2NhY2hlIChzdHJ1Y3QgaW1hZ2VfY2FjaGUgKmMp CiAJCQkgIFggLyBOUyAvIFczMiBzdXBwb3J0IGNvZGUKICAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyog UmV0dXJuIHRydWUgaWYgWElNRydzIHNpemUgV0lEVEggeCBIRUlHSFQgZG9lc24ndCBicmVhayB0 aGUKLSAgIHdpbmRvd2luZyBzeXN0ZW0uCi0gICBXSURUSCBhbmQgSEVJR0hUIG11c3QgYm90aCBi ZSBwb3NpdGl2ZS4KLSAgIElmIFhJTUcgaXMgbnVsbCwgYXNzdW1lIGl0IGlzIGEgYml0bWFwLiAg Ki8KKyNpZmRlZiBIQVZFX1hfV0lORE9XUwogc3RhdGljIGJvb2wKLWltYWdlX2NoZWNrX2ltYWdl X3NpemUgKEVtYWNzX1BpeF9Db250YWluZXIgeGltZywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor eF9jaGVja19pbWFnZV9zaXplIChYSW1hZ2UgKnhpbWcsIGludCB3aWR0aCwgaW50IGhlaWdodCkK IHsKLSNpZmRlZiBIQVZFX1hfV0lORE9XUwogICAvKiBSZXNwZWN0IFhsaWIncyBsaW1pdHM6IGl0 IGNhbm5vdCBkZWFsIHdpdGggaW1hZ2VzIHRoYXQgaGF2ZSBtb3JlCiAgICAgIHRoYW4gSU5UX01B WCAoYW5kL29yIFVJTlRfTUFYKSBieXRlcy4gIEFuZCByZXNwZWN0IEVtYWNzJ3MgbGltaXRzCiAg ICAgIG9mIFBUUkRJRkZfTUFYIChhbmQvb3IgU0laRV9NQVgpIGJ5dGVzIGZvciBhbnkgb2JqZWN0 LiAgKi8KQEAgLTIwMzIsMjkgKzIxNTUsMTIgQEAgaW1hZ2VfY2hlY2tfaW1hZ2Vfc2l6ZSAoRW1h Y3NfUGl4X0NvbnRhaW5lciB4aW1nLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgfQogICBy ZXR1cm4gKHdpZHRoIDw9IChJTlRfTUFYIC0gKGJpdG1hcF9wYWQgLSAxKSkgLyBkZXB0aAogCSAg JiYgaGVpZ2h0IDw9IFhfSU1BR0VfQllURVNfTUFYIC8gYnl0ZXNfcGVyX2xpbmUpOwotI2Vsc2UK LSAgLyogRklYTUU6IEltcGxlbWVudCB0aGlzIGNoZWNrIGZvciB0aGUgSEFWRV9OUyBhbmQgSEFW RV9OVEdVSSBjYXNlcy4KLSAgICAgRm9yIG5vdywgYXNzdW1lIHRoYXQgZXZlcnkgaW1hZ2Ugc2l6 ZSBpcyBhbGxvd2VkIG9uIHRoZXNlIHN5c3RlbXMuICAqLwotICByZXR1cm4gMTsKLSNlbmRpZgog fQogCi0vKiBDcmVhdGUgYW4gRW1hY3NfUGl4X0NvbnRhaW5lciBhbmQgYSBwaXhtYXAgb2Ygc2l6 ZSBXSURUSCB4Ci0gICBIRUlHSFQgZm9yIHVzZSBvbiBmcmFtZSBGLiAgU2V0ICpQSU1HIGFuZCAq UElYTUFQIHRvIHRoZQotICAgRW1hY3NfUGl4X0NvbnRhaW5lciBhbmQgRW1hY3NfUGl4bWFwIGNy ZWF0ZWQuICBTZXQgKCpQSU1HKS0+ZGF0YQotICAgdG8gYSByYXN0ZXIgb2YgV0lEVEggeCBIRUlH SFQgcGl4ZWxzIGFsbG9jYXRlZCB2aWEgeG1hbGxvYy4gIFByaW50Ci0gICBlcnJvciBtZXNzYWdl cyB2aWEgaW1hZ2VfZXJyb3IgaWYgYW4gZXJyb3Igb2NjdXJzLiAgVmFsdWUgaXMgdHJ1ZQotICAg aWYgc3VjY2Vzc2Z1bC4KLQotICAgT24gVzMyLCBhIERFUFRIIG9mIHplcm8gc2lnbmlmaWVzIGEg MjQgYml0IGltYWdlLCBvdGhlcndpc2UgREVQVEgKLSAgIHNob3VsZCBpbmRpY2F0ZSB0aGUgYml0 IGRlcHRoIG9mIHRoZSBpbWFnZS4gICovCi0KIHN0YXRpYyBib29sCi1pbWFnZV9jcmVhdGVfeF9p bWFnZV9hbmRfcGl4bWFwXzEgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 LCBpbnQgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWNzX1Bp eF9Db250YWluZXIgKnBpbWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVt YWNzX1BpeG1hcCAqcGl4bWFwLCBQaWN0dXJlICpwaWN0dXJlKQoreF9jcmVhdGVfeF9pbWFnZV9h bmRfcGl4bWFwIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRl cHRoLAorCQkJICAgICBYSW1hZ2UgKip4aW1nLCBQaXhtYXAgKnBpeG1hcCkKIHsKLSNpZmRlZiBI QVZFX1hfV0lORE9XUwogICBEaXNwbGF5ICpkaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsK ICAgRHJhd2FibGUgZHJhd2FibGUgPSBGUkFNRV9YX0RSQVdBQkxFIChmKTsKICAgU2NyZWVuICpz Y3JlZW4gPSBGUkFNRV9YX1NDUkVFTiAoZik7CkBAIC0yMDYzLDM4ICsyMTY5LDEwNCBAQCBpbWFn ZV9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwXzEgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRo LCBpbnQgaGVpZ2h0LCBpbnQgZAogCiAgIGlmIChkZXB0aCA8PSAwKQogICAgIGRlcHRoID0gRGVm YXVsdERlcHRoT2ZTY3JlZW4gKHNjcmVlbik7Ci0gICpwaW1nID0gWENyZWF0ZUltYWdlIChkaXNw bGF5LCBEZWZhdWx0VmlzdWFsT2ZTY3JlZW4gKHNjcmVlbiksCisgICp4aW1nID0gWENyZWF0ZUlt YWdlIChkaXNwbGF5LCBEZWZhdWx0VmlzdWFsT2ZTY3JlZW4gKHNjcmVlbiksCiAJCQlkZXB0aCwg WlBpeG1hcCwgMCwgTlVMTCwgd2lkdGgsIGhlaWdodCwKIAkJCWRlcHRoID4gMTYgPyAzMiA6IGRl cHRoID4gOCA/IDE2IDogOCwgMCk7Ci0gIGlmICgqcGltZyA9PSBOVUxMKQorICBpZiAoKnhpbWcg PT0gTlVMTCkKICAgICB7CiAgICAgICBpbWFnZV9lcnJvciAoIlVuYWJsZSB0byBhbGxvY2F0ZSBY IGltYWdlIik7CiAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgaWYgKCEgaW1hZ2VfY2hlY2tf aW1hZ2Vfc2l6ZSAoKnBpbWcsIHdpZHRoLCBoZWlnaHQpKQorICBpZiAoISB4X2NoZWNrX2ltYWdl X3NpemUgKCp4aW1nLCB3aWR0aCwgaGVpZ2h0KSkKICAgICB7Ci0gICAgICBpbWFnZV9kZXN0cm95 X3hfaW1hZ2UgKCpwaW1nKTsKLSAgICAgICpwaW1nID0gTlVMTDsKKyAgICAgIHhfZGVzdHJveV94 X2ltYWdlICgqeGltZyk7CisgICAgICAqeGltZyA9IE5VTEw7CiAgICAgICBpbWFnZV9lcnJvciAo IkltYWdlIHRvbyBsYXJnZSAoJWR4JWQpIiwKIAkJICAgbWFrZV9maXhudW0gKHdpZHRoKSwgbWFr ZV9maXhudW0gKGhlaWdodCkpOwogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgIC8qIEFsbG9j YXRlIGltYWdlIHJhc3Rlci4gICovCi0gICgqcGltZyktPmRhdGEgPSB4bWFsbG9jICgoKnBpbWcp LT5ieXRlc19wZXJfbGluZSAqIGhlaWdodCk7CisgICgqeGltZyktPmRhdGEgPSB4bWFsbG9jICgo KnhpbWcpLT5ieXRlc19wZXJfbGluZSAqIGhlaWdodCk7CiAKICAgLyogQWxsb2NhdGUgYSBwaXht YXAgb2YgdGhlIHNhbWUgc2l6ZS4gICovCiAgICpwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwIChkaXNw bGF5LCBkcmF3YWJsZSwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICBpZiAoKnBpeG1hcCA9PSBO T19QSVhNQVApCiAgICAgewotICAgICAgaW1hZ2VfZGVzdHJveV94X2ltYWdlICgqcGltZyk7Ci0g ICAgICAqcGltZyA9IE5VTEw7CisgICAgICB4X2Rlc3Ryb3lfeF9pbWFnZSAoKnhpbWcpOworICAg ICAgKnhpbWcgPSBOVUxMOwogICAgICAgaW1hZ2VfZXJyb3IgKCJVbmFibGUgdG8gY3JlYXRlIFgg cGl4bWFwIik7CiAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgcmV0dXJuIDE7Cit9CisKK3N0 YXRpYyB2b2lkCit4X2Rlc3Ryb3lfeF9pbWFnZSAoWEltYWdlICp4aW1nKQoreworICBlYXNzZXJ0 IChpbnB1dF9ibG9ja2VkX3AgKCkpOworICBpZiAoeGltZykKKyAgICB7CisgICAgICB4ZnJlZSAo eGltZy0+ZGF0YSk7CisgICAgICB4aW1nLT5kYXRhID0gTlVMTDsKKyAgICB9Cit9CisKKyNlbmRp ZgkvKiBIQVZFX1hfV0lORE9XUyAqLworCisvKiBSZXR1cm4gdHJ1ZSBpZiBYSU1HJ3Mgc2l6ZSBX SURUSCB4IEhFSUdIVCBkb2Vzbid0IGJyZWFrIHRoZQorICAgd2luZG93aW5nIHN5c3RlbS4KKyAg IFdJRFRIIGFuZCBIRUlHSFQgbXVzdCBib3RoIGJlIHBvc2l0aXZlLgorICAgSWYgWElNRyBpcyBu dWxsLCBhc3N1bWUgaXQgaXMgYSBiaXRtYXAuICAqLworCitzdGF0aWMgYm9vbAoraW1hZ2VfY2hl Y2tfaW1hZ2Vfc2l6ZSAoRW1hY3NfUGl4X0NvbnRhaW5lciB4aW1nLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQpCit7CisjaWYgZGVmaW5lZCBIQVZFX1hfV0lORE9XUyAmJiAhZGVmaW5lZCBVU0VfQ0FJ Uk8KKyAgcmV0dXJuIHhfY2hlY2tfaW1hZ2Vfc2l6ZSAoeGltZywgd2lkdGgsIGhlaWdodCk7Cisj ZWxzZQorICAvKiBGSVhNRTogSW1wbGVtZW50IHRoaXMgY2hlY2sgZm9yIHRoZSBIQVZFX05TIGFu ZCBIQVZFX05UR1VJIGNhc2VzLgorICAgICBGb3Igbm93LCBhc3N1bWUgdGhhdCBldmVyeSBpbWFn ZSBzaXplIGlzIGFsbG93ZWQgb24gdGhlc2Ugc3lzdGVtcy4gICovCisgIHJldHVybiAxOworI2Vu ZGlmCit9CisKKy8qIENyZWF0ZSBhbiBFbWFjc19QaXhfQ29udGFpbmVyIGFuZCBhIHBpeG1hcCBv ZiBzaXplIFdJRFRIIHgKKyAgIEhFSUdIVCBmb3IgdXNlIG9uIGZyYW1lIEYuICBTZXQgKlBJTUcg YW5kICpQSVhNQVAgdG8gdGhlCisgICBFbWFjc19QaXhfQ29udGFpbmVyIGFuZCBFbWFjc19QaXht YXAgY3JlYXRlZC4gIFNldCAoKlBJTUcpLT5kYXRhCisgICB0byBhIHJhc3RlciBvZiBXSURUSCB4 IEhFSUdIVCBwaXhlbHMgYWxsb2NhdGVkIHZpYSB4bWFsbG9jLiAgUHJpbnQKKyAgIGVycm9yIG1l c3NhZ2VzIHZpYSBpbWFnZV9lcnJvciBpZiBhbiBlcnJvciBvY2N1cnMuICBWYWx1ZSBpcyB0cnVl CisgICBpZiBzdWNjZXNzZnVsLgorCisgICBPbiBXMzIsIGEgREVQVEggb2YgemVybyBzaWduaWZp ZXMgYSAyNCBiaXQgaW1hZ2UsIG90aGVyd2lzZSBERVBUSAorICAgc2hvdWxkIGluZGljYXRlIHRo ZSBiaXQgZGVwdGggb2YgdGhlIGltYWdlLiAgKi8KKworc3RhdGljIGJvb2wKK2ltYWdlX2NyZWF0 ZV94X2ltYWdlX2FuZF9waXhtYXBfMSAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQsIGludCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1h Y3NfUGl4X0NvbnRhaW5lciAqcGltZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRW1hY3NfUGl4bWFwICpwaXhtYXAsIFBpY3R1cmUgKnBpY3R1cmUpCit7CisjaWZkZWYgVVNF X0NBSVJPCisgIGVhc3NlcnQgKGlucHV0X2Jsb2NrZWRfcCAoKSk7CisKKyAgLyogQWxsb2NhdGUg YSBwaXhtYXAgb2YgdGhlIHNhbWUgc2l6ZS4gICovCisgICpwaXhtYXAgPSBpbWFnZV9jcmVhdGVf cGl4X2NvbnRhaW5lciAoZiwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICBpZiAoKnBpeG1hcCA9 PSBOT19QSVhNQVApCisgICAgeworICAgICAgKnBpbWcgPSBOVUxMOworICAgICAgaW1hZ2VfZXJy b3IgKCJVbmFibGUgdG8gY3JlYXRlIFggcGl4bWFwIiwgUW5pbCwgUW5pbCk7CisgICAgICByZXR1 cm4gMDsKKyAgICB9CisKKyAgKnBpbWcgPSAqcGl4bWFwOworICByZXR1cm4gMTsKKyNlbGlmIGRl ZmluZWQgSEFWRV9YX1dJTkRPV1MKKyAgaWYgKCF4X2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAg KGYsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBwaW1nLCBwaXhtYXApKQorICAgIHJldHVybiAwOwog IyBpZmRlZiBIQVZFX1hSRU5ERVIKKyAgRGlzcGxheSAqZGlzcGxheSA9IEZSQU1FX1hfRElTUExB WSAoZik7CiAgIGludCBldmVudF9iYXNlcCwgZXJyb3JfYmFzZXA7CiAgIGlmIChwaWN0dXJlICYm IFhSZW5kZXJRdWVyeUV4dGVuc2lvbiAoZGlzcGxheSwgJmV2ZW50X2Jhc2VwLCAmZXJyb3JfYmFz ZXApKQogICAgIHsKQEAgLTIyMzgsMTQgKzI0MTAsMTQgQEAgaW1hZ2VfY3JlYXRlX3hfaW1hZ2Vf YW5kX3BpeG1hcF8xIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50 IGQKIHN0YXRpYyB2b2lkCiBpbWFnZV9kZXN0cm95X3hfaW1hZ2UgKEVtYWNzX1BpeF9Db250YWlu ZXIgcGltZykKIHsKKyNpZiBkZWZpbmVkIEhBVkVfWF9XSU5ET1dTICYmICFkZWZpbmVkIFVTRV9D QUlSTworICB4X2Rlc3Ryb3lfeF9pbWFnZSAocGltZyk7CisjZWxzZQogICBlYXNzZXJ0IChpbnB1 dF9ibG9ja2VkX3AgKCkpOwogICBpZiAocGltZykKICAgICB7Ci0jaWZkZWYgSEFWRV9YX1dJTkRP V1MKLSAgICAgIHhmcmVlIChwaW1nLT5kYXRhKTsKLSAgICAgIHBpbWctPmRhdGEgPSBOVUxMOwot ICAgICAgWERlc3Ryb3lJbWFnZSAocGltZyk7Ci0jZW5kaWYgLyogSEFWRV9YX1dJTkRPV1MgKi8K KyNpZmRlZiBVU0VfQ0FJUk8KKyNlbmRpZgkvKiBVU0VfQ0FJUk8gKi8KICNpZmRlZiBIQVZFX05U R1VJCiAgICAgICAvKiBEYXRhIHdpbGwgYmUgZnJlZWQgYnkgRGVzdHJveU9iamVjdC4gICovCiAg ICAgICBwaW1nLT5kYXRhID0gTlVMTDsKQEAgLTIyNTUsNiArMjQyNyw3IEBAIGltYWdlX2Rlc3Ry b3lfeF9pbWFnZSAoRW1hY3NfUGl4X0NvbnRhaW5lciBwaW1nKQogICAgICAgbnNfcmVsZWFzZV9v YmplY3QgKHBpbWcpOwogI2VuZGlmIC8qIEhBVkVfTlMgKi8KICAgICB9CisjZW5kaWYKIH0KIAog CkBAIC0yMjY2LDcgKzI0MzksOSBAQCBzdGF0aWMgdm9pZAogZ3VpX3B1dF94X2ltYWdlIChzdHJ1 Y3QgZnJhbWUgKmYsIEVtYWNzX1BpeF9Db250YWluZXIgcGltZywKICAgICAgICAgICAgICAgICAg RW1hY3NfUGl4bWFwIHBpeG1hcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotI2lmZGVmIEhB VkVfWF9XSU5ET1dTCisjaWZkZWYgVVNFX0NBSVJPCisgIGVhc3NlcnQgKHBpbWcgPT0gcGl4bWFw KTsKKyNlbGlmIGRlZmluZWQgSEFWRV9YX1dJTkRPV1MKICAgR0MgZ2M7CiAKICAgZWFzc2VydCAo aW5wdXRfYmxvY2tlZF9wICgpKTsKQEAgLTIzMTksNyArMjQ5NCw3IEBAIHN0YXRpYyB2b2lkCiBp bWFnZV9wdXRfeF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywgRW1h Y3NfUGl4X0NvbnRhaW5lciB4aW1nLAogCQkgICBib29sIG1hc2tfcCkKIHsKLSNpZmRlZiBIQVZF X1hfV0lORE9XUworI2lmIGRlZmluZWQgSEFWRV9YX1dJTkRPV1MgJiYgIWRlZmluZWQgVVNFX0NB SVJPCiAgIGlmICghbWFza19wKQogICAgIHsKICAgICAgIGVhc3NlcnQgKGltZy0+eGltZyA9PSBO VUxMKTsKQEAgLTIzMzcsNyArMjUxMiw3IEBAIGltYWdlX3B1dF94X2ltYWdlIChzdHJ1Y3QgZnJh bWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBFbWFjc19QaXhfQ29udGFpbmVyIHhpbWcsCiAjZW5k aWYKIH0KIAotI2lmZGVmIEhBVkVfWF9XSU5ET1dTCisjaWYgZGVmaW5lZCBIQVZFX1hfV0lORE9X UyAmJiAhZGVmaW5lZCBVU0VfQ0FJUk8KIC8qIFB1dCB0aGUgWCBpbWFnZXMgcmVjb3JkZWQgaW4g SU1HIG9uIGZyYW1lIEYgaW50byBwaXhtYXBzLCB0aGVuIGZyZWUKICAgIHRoZSBYIGltYWdlcyBh bmQgdGhlaXIgYnVmZmVycy4gICovCiAKQEAgLTIzOTEsNyArMjU2Niw5IEBAIGltYWdlX3VuZ2V0 X3hfaW1hZ2Vfb3JfZGMgKHN0cnVjdCBpbWFnZSAqaW1nLCBib29sIG1hc2tfcCwKIHN0YXRpYyBF bWFjc19QaXhfQ29udGFpbmVyCiBpbWFnZV9nZXRfeF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBz dHJ1Y3QgaW1hZ2UgKmltZywgYm9vbCBtYXNrX3ApCiB7Ci0jaWZkZWYgSEFWRV9YX1dJTkRPV1MK KyNpZmRlZiBVU0VfQ0FJUk8KKyAgcmV0dXJuICFtYXNrX3AgPyBpbWctPnBpeG1hcCA6IGltZy0+ bWFzazsKKyNlbGlmIGRlZmluZWQgSEFWRV9YX1dJTkRPV1MKICAgWEltYWdlICp4aW1nX2luX2lt ZyA9ICFtYXNrX3AgPyBpbWctPnhpbWcgOiBpbWctPm1hc2tfaW1nOwogCiAgIGlmICh4aW1nX2lu X2ltZykKQEAgLTI0MTAsNyArMjU4Nyw4IEBAIGltYWdlX2dldF94X2ltYWdlIChzdHJ1Y3QgZnJh bWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBib29sIG1hc2tfcCkKIHN0YXRpYyB2b2lkCiBpbWFn ZV91bmdldF94X2ltYWdlIChzdHJ1Y3QgaW1hZ2UgKmltZywgYm9vbCBtYXNrX3AsIEVtYWNzX1Bp eF9Db250YWluZXIgeGltZykKIHsKLSNpZmRlZiBIQVZFX1hfV0lORE9XUworI2lmZGVmIFVTRV9D QUlSTworI2VsaWYgZGVmaW5lZCBIQVZFX1hfV0lORE9XUwogICBYSW1hZ2UgKnhpbWdfaW5faW1n ID0gIW1hc2tfcCA/IGltZy0+eGltZyA6IGltZy0+bWFza19pbWc7CiAKICAgaWYgKHhpbWdfaW5f aW1nKQpAQCAtMjg2OSwyOCArMzA0NywzMiBAQCBDcmVhdGVfUGl4bWFwX0Zyb21fQml0bWFwX0Rh dGEgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcsIGNoYXIgKmRhdGEsCiAJCQkJ UkdCX1BJWEVMX0NPTE9SIGZnLCBSR0JfUElYRUxfQ09MT1IgYmcsCiAJCQkJYm9vbCBub25fZGVm YXVsdF9jb2xvcnMpCiB7Ci0jaWZkZWYgSEFWRV9OVEdVSQorI2lmZGVmIFVTRV9DQUlSTworICBF bWFjc19Db2xvciBmZ2JnW10gPSB7ey5waXhlbCA9IGZnfSwgey5waXhlbCA9IGJnfX07CisgIEZS QU1FX1RFUk1JTkFMIChmKS0+cXVlcnlfY29sb3JzIChmLCBmZ2JnLCBBUlJBWUVMVFMgKGZnYmcp KTsKKyAgZmcgPSBsb29rdXBfcmdiX2NvbG9yIChmLCBmZ2JnWzBdLnJlZCwgZmdiZ1swXS5ncmVl biwgZmdiZ1swXS5ibHVlKTsKKyAgYmcgPSBsb29rdXBfcmdiX2NvbG9yIChmLCBmZ2JnWzFdLnJl ZCwgZmdiZ1sxXS5ncmVlbiwgZmdiZ1sxXS5ibHVlKTsKKyAgaW1nLT5waXhtYXAKKyAgICA9IGlt YWdlX3BpeF9jb250YWluZXJfY3JlYXRlX2Zyb21fYml0bWFwX2RhdGEgKGYsIGRhdGEsIGltZy0+ d2lkdGgsCisJCQkJCQkgICBpbWctPmhlaWdodCwgZmcsIGJnKTsKKyNlbGlmIGRlZmluZWQgSEFW RV9YX1dJTkRPV1MKKyAgaW1nLT5waXhtYXAKKyAgICA9IFhDcmVhdGVQaXhtYXBGcm9tQml0bWFw RGF0YSAoRlJBTUVfWF9ESVNQTEFZIChmKSwKKwkJCQkgICBGUkFNRV9YX0RSQVdBQkxFIChmKSwK KwkJCQkgICBkYXRhLAorCQkJCSAgIGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0LAorCQkJCSAgIGZn LCBiZywKKwkJCQkgICBEZWZhdWx0RGVwdGhPZlNjcmVlbiAoRlJBTUVfWF9TQ1JFRU4gKGYpKSkK KyNlbGlmIGRlZmluZWQgSEFWRV9OVEdVSQogICBpbWctPnBpeG1hcAogICAgID0gdzMyX2NyZWF0 ZV9waXhtYXBfZnJvbV9iaXRtYXBfZGF0YSAoaW1nLT53aWR0aCwgaW1nLT5oZWlnaHQsIGRhdGEp OwogCiAgIC8qIElmIGNvbG9ycyB3ZXJlIHNwZWNpZmllZCwgdHJhbnNmZXIgdGhlIGJpdG1hcCB0 byBhIGNvbG9yIG9uZS4gICovCiAgIGlmIChub25fZGVmYXVsdF9jb2xvcnMpCiAgICAgY29udmVy dF9tb25vX3RvX2NvbG9yX2ltYWdlIChmLCBpbWcsIGZnLCBiZyk7Ci0KLSNlbGlmIGRlZmluZWQg KEhBVkVfTlMpCisjZWxpZiBkZWZpbmVkIEhBVkVfTlMKICAgaW1nLT5waXhtYXAgPSBuc19pbWFn ZV9mcm9tX1hCTSAoZGF0YSwgaW1nLT53aWR0aCwgaW1nLT5oZWlnaHQsIGZnLCBiZyk7Ci0KLSNl bHNlCi0gIGltZy0+cGl4bWFwID0KLSAgIChpbWFnZV9jaGVja19pbWFnZV9zaXplICgwLCBpbWct PndpZHRoLCBpbWctPmhlaWdodCkKLSAgICA/IFhDcmVhdGVQaXhtYXBGcm9tQml0bWFwRGF0YSAo RlJBTUVfWF9ESVNQTEFZIChmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RlJBTUVfWF9EUkFXQUJMRSAoZiksCi0JCQkJICAgZGF0YSwKLQkJCQkgICBpbWctPndpZHRoLCBp bWctPmhlaWdodCwKLQkJCQkgICBmZywgYmcsCi0JCQkJICAgRGVmYXVsdERlcHRoT2ZTY3JlZW4g KEZSQU1FX1hfU0NSRUVOIChmKSkpCi0gICAgOiBOT19QSVhNQVApOwotI2VuZGlmIC8qICFIQVZF X05UR1VJICYmICFIQVZFX05TICovCisjZW5kaWYKIH0KIAogCkBAIC0zMDk5LDkgKzMyODEsMTIg QEAgeGJtX2xvYWRfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcsIGNo YXIgKmNvbnRlbnRzLCBjaGFyICplbmQpCiAJICBub25fZGVmYXVsdF9jb2xvcnMgPSAxOwogCX0K IAotICAgICAgQ3JlYXRlX1BpeG1hcF9Gcm9tX0JpdG1hcF9EYXRhIChmLCBpbWcsIGRhdGEsCi0J CQkJICAgICAgZm9yZWdyb3VuZCwgYmFja2dyb3VuZCwKLQkJCQkgICAgICBub25fZGVmYXVsdF9j b2xvcnMpOworICAgICAgaWYgKGltYWdlX2NoZWNrX2ltYWdlX3NpemUgKDAsIGltZy0+d2lkdGgs IGltZy0+aGVpZ2h0KSkKKwlDcmVhdGVfUGl4bWFwX0Zyb21fQml0bWFwX0RhdGEgKGYsIGltZywg ZGF0YSwKKwkJCQkJZm9yZWdyb3VuZCwgYmFja2dyb3VuZCwKKwkJCQkJbm9uX2RlZmF1bHRfY29s b3JzKTsKKyAgICAgIGVsc2UKKwlpbWctPnBpeG1hcCA9IE5PX1BJWE1BUDsKICAgICAgIHhmcmVl IChkYXRhKTsKIAogICAgICAgaWYgKGltZy0+cGl4bWFwID09IE5PX1BJWE1BUCkKQEAgLTMzMTUs NyArMzUwMCw3IEBAIHhibV9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1n KQogI2VuZGlmIC8qIG5vdCBIQVZFX05UR1VJICovCiAjZW5kaWYgLyogSEFWRV9YUE0gKi8KIAot I2lmIGRlZmluZWQgKEhBVkVfWFBNKSB8fCBkZWZpbmVkIChIQVZFX05TKQorI2lmIGRlZmluZWQg SEFWRV9YUE0gfHwgZGVmaW5lZCBVU0VfQ0FJUk8gfHwgZGVmaW5lZCBIQVZFX05TCiAKIC8qIElu ZGljZXMgb2YgaW1hZ2Ugc3BlY2lmaWNhdGlvbiBmaWVsZHMgaW4geHBtX2Zvcm1hdCwgYmVsb3cu ICAqLwogCkBAIC0zMzUzLDE5ICszNTM4LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW1hZ2Vf a2V5d29yZCB4cG1fZm9ybWF0W1hQTV9MQVNUXSA9CiAgIHsiOmJhY2tncm91bmQiLAlJTUFHRV9T VFJJTkdfT1JfTklMX1ZBTFVFLAkJMH0KIH07CiAKLSNpZmRlZiBIQVZFX1hfV0lORE9XUworI2lm IGRlZmluZWQgSEFWRV9YX1dJTkRPV1MgJiYgIWRlZmluZWQgVVNFX0NBSVJPCiAKIC8qIERlZmlu ZSBBTExPQ19YUE1fQ09MT1JTIGlmIHdlIGNhbiB1c2UgRW1hY3MnIG93biBjb2xvciBhbGxvY2F0 aW9uCiAgICBmdW5jdGlvbnMgZm9yIGFsbG9jYXRpbmcgaW1hZ2UgY29sb3JzLiAgT3VyIG93biBm dW5jdGlvbnMgaGFuZGxlCiAgICBjb2xvciBhbGxvY2F0aW9uIGZhaWx1cmVzIG1vcmUgZ3JhY2Vm dWxseSB0aGFuIHRoZSBvbmVzIG9uIHRoZSBYUE0KICAgIGxpYi4gICovCiAKLSNpZm5kZWYgVVNF X0NBSVJPCiAjaWYgZGVmaW5lZCBYcG1BbGxvY0NvbG9yICYmIGRlZmluZWQgWHBtRnJlZUNvbG9y cyAmJiBkZWZpbmVkIFhwbUNvbG9yQ2xvc3VyZQogI2RlZmluZSBBTExPQ19YUE1fQ09MT1JTCiAj ZW5kaWYKLSNlbmRpZiAvKiBVU0VfQ0FJUk8gKi8KLSNlbmRpZiAvKiBIQVZFX1hfV0lORE9XUyAq LworI2VuZGlmIC8qIEhBVkVfWF9XSU5ET1dTICYmICFVU0VfQ0FJUk8gKi8KIAogI2lmZGVmIEFM TE9DX1hQTV9DT0xPUlMKIApAQCAtMzYxNCw3ICszNzk3LDcgQEAgeHBtX2ltYWdlX3AgKExpc3Bf T2JqZWN0IG9iamVjdCkKIAkgICAgICB8fCB4cG1fdmFsaWRfY29sb3Jfc3ltYm9sc19wIChmbXRb WFBNX0NPTE9SX1NZTUJPTFNdLnZhbHVlKSkpOwogfQogCi0jZW5kaWYgLyogSEFWRV9YUE0gfHwg SEFWRV9OUyAqLworI2VuZGlmIC8qIEhBVkVfWFBNIHx8IFVTRV9DQUlSTyB8fCBIQVZFX05TICov CiAKICNpZiBkZWZpbmVkIEhBVkVfWFBNICYmIGRlZmluZWQgSEFWRV9YX1dJTkRPV1MgJiYgIWRl ZmluZWQgVVNFX0dUSwogcHRyZGlmZl90CkBAIC0zNjcwLDcgKzM4NTMsNyBAQCB4X2NyZWF0ZV9i aXRtYXBfZnJvbV94cG1fZGF0YSAoc3RydWN0IGZyYW1lICpmLCBjb25zdCBjaGFyICoqYml0cykK IC8qIExvYWQgaW1hZ2UgSU1HIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkIG9uIGZyYW1lIEYuICBW YWx1ZSBpcwogICAgdHJ1ZSBpZiBzdWNjZXNzZnVsLiAgKi8KIAotI2lmZGVmIEhBVkVfWFBNCisj aWYgZGVmaW5lZCBIQVZFX1hQTSAmJiAhZGVmaW5lZCBVU0VfQ0FJUk8KIAogc3RhdGljIGJvb2wK IHhwbV9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQpAQCAtMzgzOCw0 NCArNDAyMSw2IEBAIHhwbV9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1n KQogI2VuZGlmIC8qIEhBVkVfTlRHVUkgKi8KICAgICB9CiAKLSNpZmRlZiBVU0VfQ0FJUk8KLSAg LyogTG9hZCB2ZXJ5IHNwZWNpZmljIFhwbTpzLiAgKi8KLSAgaWYgKHJjID09IFhwbVN1Y2Nlc3MK LSAgICAgICYmIGltZy0+eGltZy0+Zm9ybWF0ID09IFpQaXhtYXAKLSAgICAgICYmIGltZy0+eGlt Zy0+Yml0c19wZXJfcGl4ZWwgPT0gMzIKLSAgICAgICYmICghIGltZy0+bWFza19pbWcgfHwgaW1n LT5tYXNrX2ltZy0+Yml0c19wZXJfcGl4ZWwgPT0gMSkpCi0gICAgewotICAgICAgaW50IHdpZHRo ID0gaW1nLT54aW1nLT53aWR0aDsKLSAgICAgIGludCBoZWlnaHQgPSBpbWctPnhpbWctPmhlaWdo dDsKLSAgICAgIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSA9IGNyZWF0ZV9jYWlyb19pbWFnZV9z dXJmYWNlICh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgIGludCBpOwotICAgICAgdWludDMyX3QgKm9k ID0gKHVpbnQzMl90ICopIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEgKHN1cmZhY2UpOwot ICAgICAgdWludDMyX3QgKmlkID0gKHVpbnQzMl90ICopIGltZy0+eGltZy0+ZGF0YTsKLSAgICAg IGNoYXIgKm1pZCA9IGltZy0+bWFza19pbWcgPyBpbWctPm1hc2tfaW1nLT5kYXRhIDogMDsKLSAg ICAgIHVpbnQzMl90IGJnY29sb3IgPSBnZXRfc3BlY19iZ19vcl9hbHBoYV9hc19hcmdiIChpbWcs IGYpOwotCi0gICAgICBmb3IgKGkgPSAwOyBpIDwgaGVpZ2h0OyArK2kpCi0gICAgICAgIHsKLSAg ICAgICAgICBpbnQgazsKLSAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgd2lkdGg7ICsraykKLSAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaW50IGlkeCA9IGkgKiBpbWctPnhpbWctPmJ5dGVz X3Blcl9saW5lLzQgKyBrOwotICAgICAgICAgICAgICBpbnQgbWFza2lkeCA9IG1pZCA/IGkgKiBp bWctPm1hc2tfaW1nLT5ieXRlc19wZXJfbGluZSArIGsvOCA6IDA7Ci0gICAgICAgICAgICAgIGlu dCBtYXNrID0gbWlkID8gbWlkW21hc2tpZHhdICYgKDEgPDwgKGsgJSA4KSkgOiAxOwotCi0gICAg ICAgICAgICAgIGlmIChtYXNrKSBvZFtpZHhdID0gaWRbaWR4XSArIDB4ZmYwMDAwMDA7IC8qIGZm ID0+IGZ1bGwgYWxwaGEgKi8KLSAgICAgICAgICAgICAgZWxzZSBvZFtpZHhdID0gYmdjb2xvcjsK LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICBzZXRfY2Fpcm9faW1hZ2Vfc3VyZmFj ZSAoaW1nLCBzdXJmYWNlKTsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICByYyA9IFhwbUZp bGVJbnZhbGlkOwotICAgICAgaW1hZ2VfY2xlYXJfaW1hZ2UgKGYsIGltZyk7Ci0gICAgfQotI2Vs c2UKICNpZmRlZiBIQVZFX1hfV0lORE9XUwogICBpZiAocmMgPT0gWHBtU3VjY2VzcykKICAgICB7 CkBAIC0zOTAxLDcgKzQwNDYsNiBAQCB4cG1fbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3Qg aW1hZ2UgKmltZykKIAl9CiAgICAgfQogI2VuZGlmCi0jZW5kaWYgLyogISBVU0VfQ0FJUk8gKi8K IAogICBpZiAocmMgPT0gWHBtU3VjY2VzcykKICAgICB7CkBAIC00MDA0LDkgKzQxNDgsOSBAQCB4 cG1fbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICAgcmV0dXJuIHJj ID09IFhwbVN1Y2Nlc3M7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX1hQTSAqLworI2VuZGlmIC8qIEhB VkVfWFBNICYmICFVU0VfQ0FJUk8gKi8KIAotI2lmIGRlZmluZWQgKEhBVkVfTlMpICYmICFkZWZp bmVkIChIQVZFX1hQTSkKKyNpZiBkZWZpbmVkIFVTRV9DQUlSTyB8fCAoZGVmaW5lZCBIQVZFX05T ICYmICFkZWZpbmVkIEhBVkVfWFBNKQogCiAvKiBYUE0gc3VwcG9ydCBmdW5jdGlvbnMgZm9yIE5T IHdoZXJlIGxpYnhwbSBpcyBub3QgYXZhaWxhYmxlLgogICAgT25seSBYUE0gdmVyc2lvbiAzICh3 aXRob3V0IGFueSBleHRlbnNpb25zKSBpcyBzdXBwb3J0ZWQuICAqLwpAQCAtNDM0Niw3ICs0NDkw LDkgQEAgeHBtX2xvYWRfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwKIAkJY29sb3JfdmFsID0gUXQ7 CiAJICAgICAgZWxzZSBpZiAoRlJBTUVfVEVSTUlOQUwgKGYpLT5kZWZpbmVkX2NvbG9yX2hvb2sK ICAgICAgICAgICAgICAgICAgICAgICAgKGYsIFNTREFUQSAoWENEUiAoc3BlY2lmaWVkX2NvbG9y KSksICZjZGVmLCBmYWxzZSwgZmFsc2UpKQotCQljb2xvcl92YWwgPSBtYWtlX2ZpeG51bSAoY2Rl Zi5waXhlbCk7CisJCWNvbG9yX3ZhbAorCQkgID0gbWFrZV9maXhudW0gKGxvb2t1cF9yZ2JfY29s b3IgKGYsIGNkZWYucmVkLCBjZGVmLmdyZWVuLAorCQkJCQkJICAgY2RlZi5ibHVlKSk7CiAJICAg IH0KIAl9CiAgICAgICBpZiAoTklMUCAoY29sb3JfdmFsKSAmJiBtYXhfa2V5ID4gMCkKQEAgLTQz NTUsNyArNDUwMSw4IEBAIHhwbV9sb2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsCiAJICAgIGNv bG9yX3ZhbCA9IFF0OwogCSAgZWxzZSBpZiAoRlJBTUVfVEVSTUlOQUwgKGYpLT5kZWZpbmVkX2Nv bG9yX2hvb2sKICAgICAgICAgICAgICAgICAgICAoZiwgbWF4X2NvbG9yLCAmY2RlZiwgZmFsc2Us IGZhbHNlKSkKLQkgICAgY29sb3JfdmFsID0gbWFrZV9maXhudW0gKGNkZWYucGl4ZWwpOworCSAg ICBjb2xvcl92YWwgPSBtYWtlX2ZpeG51bSAobG9va3VwX3JnYl9jb2xvciAoZiwgY2RlZi5yZWQs IGNkZWYuZ3JlZW4sCisJCQkJCQkgICAgICAgY2RlZi5ibHVlKSk7CiAJfQogICAgICAgaWYgKCFO SUxQIChjb2xvcl92YWwpKQogCSgqcHV0X2NvbG9yX3RhYmxlKSAoY29sb3JfdGFibGUsIGJlZywg Y2hhcnNfcGVyX3BpeGVsLCBjb2xvcl92YWwpOwpAQCAtNDM2Myw2ICs0NTEwLDE0IEBAIHhwbV9s b2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsCiAgICAgICBleHBlY3QgKCcsJyk7CiAgICAgfQog CisgIHVuc2lnbmVkIGxvbmcgZnJhbWVfZmcgPSBGUkFNRV9GT1JFR1JPVU5EX1BJWEVMIChmKTsK KyNpZmRlZiBVU0VfQ0FJUk8KKyAgeworICAgIEVtYWNzX0NvbG9yIGNvbG9yID0gey5waXhlbCA9 IGZyYW1lX2ZnfTsKKyAgICBGUkFNRV9URVJNSU5BTCAoZiktPnF1ZXJ5X2NvbG9ycyAoZiwgJmNv bG9yLCAxKTsKKyAgICBmcmFtZV9mZyA9IGxvb2t1cF9yZ2JfY29sb3IgKGYsIGNvbG9yLnJlZCwg Y29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOworICB9CisjZW5kaWYKICAgZm9yICh5ID0gMDsgeSA8 IGhlaWdodDsgeSsrKQogICAgIHsKICAgICAgIGV4cGVjdCAoWFBNX1RLX1NUUklORyk7CkBAIC00 Mzc0LDExICs0NTI5LDEwIEBAIHhwbV9sb2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsCiAJICBM aXNwX09iamVjdCBjb2xvcl92YWwgPQogCSAgICAoKmdldF9jb2xvcl90YWJsZSkgKGNvbG9yX3Rh YmxlLCBzdHIsIGNoYXJzX3Blcl9waXhlbCk7CiAKLQkgIFhQdXRQaXhlbCAoeGltZywgeCwgeSwK LQkJICAgICAoRklYTlVNUCAoY29sb3JfdmFsKSA/IFhGSVhOVU0gKGNvbG9yX3ZhbCkKLQkJICAg ICAgOiBGUkFNRV9GT1JFR1JPVU5EX1BJWEVMIChmKSkpOworCSAgUFVUX1BJWEVMICh4aW1nLCB4 LCB5LAorCQkgICAgIEZJWE5VTVAgKGNvbG9yX3ZhbCkgPyBYRklYTlVNIChjb2xvcl92YWwpIDog ZnJhbWVfZmcpOwogI2lmbmRlZiBIQVZFX05TCi0JICBYUHV0UGl4ZWwgKG1hc2tfaW1nLCB4LCB5 LAorCSAgUFVUX1BJWEVMIChtYXNrX2ltZywgeCwgeSwKIAkJICAgICAoIUVRIChjb2xvcl92YWws IFF0KSA/IFBJWF9NQVNLX0RSQVcKIAkJICAgICAgOiAoaGF2ZV9tYXNrID0gdHJ1ZSwgUElYX01B U0tfUkVUQUlOKSkpOwogI2Vsc2UKQEAgLTQ3MzUsMTAgKzQ4ODksOCBAQCBsb29rdXBfcmdiX2Nv bG9yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByLCBpbnQgZywgaW50IGIpCiB7CiAjaWZkZWYgSEFW RV9OVEdVSQogICByZXR1cm4gUEFMRVRURVJHQiAociA+PiA4LCBnID4+IDgsIGIgPj4gOCk7Ci0j ZWxpZiBkZWZpbmVkIEhBVkVfTlMKKyNlbGlmIGRlZmluZWQgVVNFX0NBSVJPIHx8IGRlZmluZWQg SEFWRV9OUwogICByZXR1cm4gUkdCX1RPX1VMT05HIChyID4+IDgsIGcgPj4gOCwgYiA+PiA4KTsK LSNlbGlmIGRlZmluZWQgVVNFX0NBSVJPCi0gIHJldHVybiAoMHhmZnUgPDwgMjQpIHwgKHIgPDwg MTYpIHwgKGcgPDwgOCkgfCBiOwogI2Vsc2UKICAgeHNpZ25hbDEgKFFmaWxlX2Vycm9yLAogCSAg ICBidWlsZF9zdHJpbmcgKCJUaGlzIEVtYWNzIG1pc2hhbmRsZXMgdGhpcyBpbWFnZSBmaWxlIHR5 cGUiKSk7CkBAIC00ODEwLDcgKzQ5NjIsNyBAQCBpbWFnZV90b19lbWFjc19jb2xvcnMgKHN0cnVj dCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcsIGJvb2wgcmdiX3ApCiAgIHAgPSBjb2xvcnM7 CiAgIGZvciAoeSA9IDA7IHkgPCBpbWctPmhlaWdodDsgKyt5KQogICAgIHsKLSNpZiBkZWZpbmVk IChIQVZFX1hfV0lORE9XUykgfHwgZGVmaW5lZCAoSEFWRV9OVEdVSSkKKyNpZiAhZGVmaW5lZCBV U0VfQ0FJUk8gJiYgIWRlZmluZWQgSEFWRV9OUwogICAgICAgRW1hY3NfQ29sb3IgKnJvdyA9IHA7 CiAgICAgICBmb3IgKHggPSAwOyB4IDwgaW1nLT53aWR0aDsgKyt4LCArK3ApCiAJcC0+cGl4ZWwg PSBHRVRfUElYRUwgKHhpbWcsIHgsIHkpOwpAQCAtNDgxOCwxMSArNDk3MCw5IEBAIGltYWdlX3Rv X2VtYWNzX2NvbG9ycyAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywgYm9vbCBy Z2JfcCkKICAgICAgICAgewogICAgICAgICAgIEZSQU1FX1RFUk1JTkFMIChmKS0+cXVlcnlfY29s b3JzIChmLCByb3csIGltZy0+d2lkdGgpOwogICAgICAgICB9Ci0jZWxzZQotCisjZWxzZSAgLyog VVNFX0NBSVJPIHx8IEhBVkVfTlMgKi8KICAgICAgIGZvciAoeCA9IDA7IHggPCBpbWctPndpZHRo OyArK3gsICsrcCkKIAl7Ci0JICAvKiBXMzJfVE9ETzogcGFsZXR0ZSBzdXBwb3J0IG5lZWRlZCBo ZXJlPyAgKi8KIAkgIHAtPnBpeGVsID0gR0VUX1BJWEVMICh4aW1nLCB4LCB5KTsKIAkgIGlmIChy Z2JfcCkKIAkgICAgewpAQCAtNDgzMSw3ICs0OTgxLDcgQEAgaW1hZ2VfdG9fZW1hY3NfY29sb3Jz IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBib29sIHJnYl9wKQogCSAgICAg IHAtPmJsdWUgPSBCTFVFMTZfRlJPTV9VTE9ORyAocC0+cGl4ZWwpOwogCSAgICB9CiAJfQotI2Vu ZGlmIC8qIEhBVkVfWF9XSU5ET1dTICovCisjZW5kaWYJLyogVVNFX0NBSVJPIHx8IEhBVkVfTlMg Ki8KICAgICB9CiAKICAgaW1hZ2VfdW5nZXRfeF9pbWFnZV9vcl9kYyAoaW1nLCAwLCB4aW1nLCBw cmV2KTsKQEAgLTQ5MDcsNyArNTA1Nyw3IEBAIGltYWdlX2Zyb21fZW1hY3NfY29sb3JzIChzdHJ1 Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBFbWFjc19Db2xvciAqY29sb3JzCiAgICAg ICB7CiAJdW5zaWduZWQgbG9uZyBwaXhlbDsKIAlwaXhlbCA9IGxvb2t1cF9yZ2JfY29sb3IgKGYs IHAtPnJlZCwgcC0+Z3JlZW4sIHAtPmJsdWUpOwotCVhQdXRQaXhlbCAob2ltZywgeCwgeSwgcGl4 ZWwpOworCVBVVF9QSVhFTCAob2ltZywgeCwgeSwgcGl4ZWwpOwogICAgICAgfQogCiAgIHhmcmVl IChjb2xvcnMpOwpAQCAtNTA1Niw2ICs1MjA2LDQ0IEBAIGltYWdlX2VkZ2VfZGV0ZWN0aW9uIChz dHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLAogfQogCiAKKyNpZiBkZWZpbmVkIEhB VkVfWF9XSU5ET1dTIHx8IGRlZmluZWQgVVNFX0NBSVJPCitzdGF0aWMgdm9pZAoraW1hZ2VfcGl4 bWFwX2RyYXdfY3Jvc3MgKHN0cnVjdCBmcmFtZSAqZiwgRW1hY3NfUGl4bWFwIHBpeG1hcCwKKwkJ CSBpbnQgeCwgaW50IHksIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwK KwkJCSB1bnNpZ25lZCBsb25nIGNvbG9yKQoreworI2lmZGVmIFVTRV9DQUlSTworICBjYWlyb19z dXJmYWNlX3QgKnN1cmZhY2UKKyAgICA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9k YXRhICgodW5zaWduZWQgY2hhciAqKSBwaXhtYXAtPmRhdGEsCisJCQkJCSAgIChwaXhtYXAtPmJp dHNfcGVyX3BpeGVsID09IDMyCisJCQkJCSAgICA/IENBSVJPX0ZPUk1BVF9SR0IyNAorCQkJCQkg ICAgOiBDQUlST19GT1JNQVRfQTgpLAorCQkJCQkgICBwaXhtYXAtPndpZHRoLCBwaXhtYXAtPmhl aWdodCwKKwkJCQkJICAgcGl4bWFwLT5ieXRlc19wZXJfbGluZSk7CisgIGNhaXJvX3QgKmNyID0g Y2Fpcm9fY3JlYXRlIChzdXJmYWNlKTsKKyAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95IChzdXJmYWNl KTsKKyAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IgKGNyLCBSRURfRlJPTV9VTE9ORyAoY29sb3IpIC8g MjU1LjAsCisJCQlHUkVFTl9GUk9NX1VMT05HIChjb2xvcikgLyAyNTUuMCwKKwkJCUJMVUVfRlJP TV9VTE9ORyAoY29sb3IpIC8gMjU1LjApOworICBjYWlyb19tb3ZlX3RvIChjciwgeCArIDAuNSwg eSArIDAuNSk7CisgIGNhaXJvX3JlbF9saW5lX3RvIChjciwgd2lkdGggLSAxLCBoZWlnaHQgLSAx KTsKKyAgY2Fpcm9fcmVsX21vdmVfdG8gKGNyLCAwLCAtIChoZWlnaHQgLSAxKSk7CisgIGNhaXJv X3JlbF9saW5lX3RvIChjciwgLSAod2lkdGggLSAxKSwgaGVpZ2h0IC0gMSk7CisgIGNhaXJvX3Nl dF9saW5lX3dpZHRoIChjciwgMSk7CisgIGNhaXJvX3N0cm9rZSAoY3IpOworICBjYWlyb19kZXN0 cm95IChjcik7CisjZWxpZiBIQVZFX1hfV0lORE9XUworICBEaXNwbGF5ICpkcHkgPSBGUkFNRV9Y X0RJU1BMQVkgKGYpOworICBHQyBnYyA9IFhDcmVhdGVHQyAoZHB5LCBwaXhtYXAsIDAsIE5VTEwp OworCisgIFhTZXRGb3JlZ3JvdW5kIChkcHksIGdjLCBjb2xvcik7CisgIFhEcmF3TGluZSAoZHB5 LCBwaXhtYXAsIGdjLCB4LCB5LCB4ICsgd2lkdGggLSAxLCB5ICsgaGVpZ2h0IC0gMSk7CisgIFhE cmF3TGluZSAoZHB5LCBwaXhtYXAsIGdjLCB4LCB5ICsgaGVpZ2h0IC0gMSwgeCArIHdpZHRoIC0g MSwgeSk7CisgIFhGcmVlR0MgKGRweSwgZ2MpOworI2VuZGlmCS8qIEhBVkVfWF9XSU5ET1dTICov Cit9CisjZW5kaWYJLyogSEFWRV9YX1dJTkRPV1MgfHwgVVNFX0NBSVJPICovCisKIC8qIFRyYW5z Zm9ybSBpbWFnZSBJTUcgb24gZnJhbWUgRiBzbyB0aGF0IGl0IGxvb2tzIGRpc2FibGVkLiAgKi8K IAogc3RhdGljIHZvaWQKQEAgLTUwOTcsMzAgKzUyODUsMjIgQEAgaW1hZ2VfZGlzYWJsZV9pbWFn ZSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICNpZm5kZWYgSEFWRV9OVEdV SQogI2lmbmRlZiBIQVZFX05TICAvKiBUT0RPOiBOUyBzdXBwb3J0LCBob3dldmVyIHRoaXMgbm90 IG5lZWRlZCBmb3IgdG9vbGJhcnMgKi8KIAorI2lmbmRlZiBVU0VfQ0FJUk8KKyNkZWZpbmUgQ3Jv c3NGb3JlZ3JvdW5kKGYpIEJMQUNLX1BJWF9ERUZBVUxUIChmKQogI2RlZmluZSBNYXNrRm9yZWdy b3VuZChmKSAgV0hJVEVfUElYX0RFRkFVTFQgKGYpCisjZWxzZSAgLyogVVNFX0NBSVJPICovCisj ZGVmaW5lIENyb3NzRm9yZWdyb3VuZChmKSAwCisjZGVmaW5lIE1hc2tGb3JlZ3JvdW5kKGYpICBQ SVhfTUFTS19EUkFXCisjZW5kaWYJLyogVVNFX0NBSVJPICovCiAKLSAgICAgIERpc3BsYXkgKmRw eSA9IEZSQU1FX1hfRElTUExBWSAoZik7Ci0gICAgICBHQyBnYzsKLQorI2lmbmRlZiBVU0VfQ0FJ Uk8KICAgICAgIGltYWdlX3N5bmNfdG9fcGl4bWFwcyAoZiwgaW1nKTsKLSAgICAgIGdjID0gWENy ZWF0ZUdDIChkcHksIGltZy0+cGl4bWFwLCAwLCBOVUxMKTsKLSAgICAgIFhTZXRGb3JlZ3JvdW5k IChkcHksIGdjLCBCTEFDS19QSVhfREVGQVVMVCAoZikpOwotICAgICAgWERyYXdMaW5lIChkcHks IGltZy0+cGl4bWFwLCBnYywgMCwgMCwKLQkJIGltZy0+d2lkdGggLSAxLCBpbWctPmhlaWdodCAt IDEpOwotICAgICAgWERyYXdMaW5lIChkcHksIGltZy0+cGl4bWFwLCBnYywgMCwgaW1nLT5oZWln aHQgLSAxLAotCQkgaW1nLT53aWR0aCAtIDEsIDApOwotICAgICAgWEZyZWVHQyAoZHB5LCBnYyk7 Ci0KKyNlbmRpZgkvKiAhVVNFX0NBSVJPICovCisgICAgICBpbWFnZV9waXhtYXBfZHJhd19jcm9z cyAoZiwgaW1nLT5waXhtYXAsIDAsIDAsIGltZy0+d2lkdGgsIGltZy0+aGVpZ2h0LAorCQkJICAg ICAgIENyb3NzRm9yZWdyb3VuZCAoZikpOwogICAgICAgaWYgKGltZy0+bWFzaykKLQl7Ci0JICBn YyA9IFhDcmVhdGVHQyAoZHB5LCBpbWctPm1hc2ssIDAsIE5VTEwpOwotCSAgWFNldEZvcmVncm91 bmQgKGRweSwgZ2MsIE1hc2tGb3JlZ3JvdW5kIChmKSk7Ci0JICBYRHJhd0xpbmUgKGRweSwgaW1n LT5tYXNrLCBnYywgMCwgMCwKLQkJICAgICBpbWctPndpZHRoIC0gMSwgaW1nLT5oZWlnaHQgLSAx KTsKLQkgIFhEcmF3TGluZSAoZHB5LCBpbWctPm1hc2ssIGdjLCAwLCBpbWctPmhlaWdodCAtIDEs Ci0JCSAgICAgaW1nLT53aWR0aCAtIDEsIDApOwotCSAgWEZyZWVHQyAoZHB5LCBnYyk7Ci0JfQor CWltYWdlX3BpeG1hcF9kcmF3X2Nyb3NzIChmLCBpbWctPm1hc2ssIDAsIDAsIGltZy0+d2lkdGgs IGltZy0+aGVpZ2h0LAorCQkJCSBNYXNrRm9yZWdyb3VuZCAoZikpOwogI2VuZGlmIC8qICFIQVZF X05TICovCiAjZWxzZQogICAgICAgSERDIGhkYywgYm1wZGM7CkBAIC01MjEyLDYgKzUzOTIsNyBA QCBpbWFnZV9idWlsZF9oZXVyaXN0aWNfbWFzayAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1h Z2UgKmltZywKIAogICAgICAgaWYgKGkgPT0gMyAmJiBOSUxQIChob3cpKQogCXsKKyNpZm5kZWYg VVNFX0NBSVJPCiAJICBjaGFyIGNvbG9yX25hbWVbMzBdOwogCSAgc3ByaW50ZiAoY29sb3JfbmFt ZSwgIiMlMDR4JTA0eCUwNHgiLAogCQkgICByZ2JbMF0gKyAwdSwgcmdiWzFdICsgMHUsIHJnYlsy XSArIDB1KTsKQEAgLTUyMjAsNiArNTQwMSw5IEBAIGltYWdlX2J1aWxkX2hldXJpc3RpY19tYXNr IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLAogCQkweDAwZmZmZmZmICYgLyog RmlsdGVyIG91dCBwYWxldHRlIGluZm8uICAqLwogI2VuZGlmIC8qIEhBVkVfTlRHVUkgKi8KIAkJ aW1hZ2VfYWxsb2NfaW1hZ2VfY29sb3IgKGYsIGltZywgYnVpbGRfc3RyaW5nIChjb2xvcl9uYW1l KSwgMCkpOworI2Vsc2UgIC8qIFVTRV9DQUlSTyAqLworCSAgYmcgPSBsb29rdXBfcmdiX2NvbG9y IChmLCByZ2JbMF0sIHJnYlsxXSwgcmdiWzJdKTsKKyNlbmRpZgkvKiBVU0VfQ0FJUk8gKi8KIAkg IHVzZV9pbWdfYmFja2dyb3VuZCA9IDA7CiAJfQogICAgIH0KQEAgLTUyMzMsNyArNTQxNyw3IEBA IGltYWdlX2J1aWxkX2hldXJpc3RpY19tYXNrIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFn ZSAqaW1nLAogICBmb3IgKHkgPSAwOyB5IDwgaW1nLT5oZWlnaHQ7ICsreSkKICAgICBmb3IgKHgg PSAwOyB4IDwgaW1nLT53aWR0aDsgKyt4KQogI2lmbmRlZiBIQVZFX05TCi0gICAgICBYUHV0UGl4 ZWwgKG1hc2tfaW1nLCB4LCB5LCAoWEdldFBpeGVsICh4aW1nLCB4LCB5KSAhPSBiZworICAgICAg UFVUX1BJWEVMIChtYXNrX2ltZywgeCwgeSwgKEdFVF9QSVhFTCAoeGltZywgeCwgeSkgIT0gYmcK IAkJCQkgID8gUElYX01BU0tfRFJBVyA6IFBJWF9NQVNLX1JFVEFJTikpOwogI2Vsc2UKICAgICAg IGlmIChYR2V0UGl4ZWwgKHhpbWcsIHgsIHkpID09IGJnKQpAQCAtNTQwNiw5ICs1NTkwLDcgQEAg cGJtX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAgIGVudW0ge1BC TV9NT05PLCBQQk1fR1JBWSwgUEJNX0NPTE9SfSB0eXBlOwogICBjaGFyICpjb250ZW50cyA9IE5V TEw7CiAgIGNoYXIgKmVuZCwgKnA7Ci0jaWZuZGVmIFVTRV9DQUlSTwogICBFbWFjc19QaXhfQ29u dGFpbmVyIHhpbWc7Ci0jZW5kaWYKIAogICBzcGVjaWZpZWRfZmlsZSA9IGltYWdlX3NwZWNfdmFs dWUgKGltZy0+c3BlYywgUUNmaWxlLCBOVUxMKTsKIApAQCAtNTQ5MiwxMSArNTY3NCw2IEBAIHBi bV9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogICB3aWR0aCA9IHBi bV9zY2FuX251bWJlciAoJnAsIGVuZCk7CiAgIGhlaWdodCA9IHBibV9zY2FuX251bWJlciAoJnAs IGVuZCk7CiAKLSNpZmRlZiBVU0VfQ0FJUk8KLSAgY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlID0g Y3JlYXRlX2NhaXJvX2ltYWdlX3N1cmZhY2UgKHdpZHRoLCBoZWlnaHQpOwotICB1aW50MzJfdCAq ZGF0YXB0ciA9ICh1aW50MzJfdCAqKSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhIChzdXJm YWNlKTsKLSNlbmRpZgotCiAgIGlmICh0eXBlICE9IFBCTV9NT05PKQogICAgIHsKICAgICAgIG1h eF9jb2xvcl9pZHggPSBwYm1fc2Nhbl9udW1iZXIgKCZwLCBlbmQpOwpAQCAtNTUxMywxMCArNTY5 MCw4IEBAIHBibV9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogICAg ICAgZ290byBlcnJvcjsKICAgICB9CiAKLSNpZm5kZWYgVVNFX0NBSVJPCiAgIGlmICghaW1hZ2Vf Y3JlYXRlX3hfaW1hZ2VfYW5kX3BpeG1hcCAoZiwgaW1nLCB3aWR0aCwgaGVpZ2h0LCAwLCAmeGlt ZywgMCkpCiAgICAgZ290byBlcnJvcjsKLSNlbmRpZgogCiAgIC8qIEluaXRpYWxpemUgdGhlIGNv bG9yIGhhc2ggdGFibGUuICAqLwogICBpbml0X2NvbG9yX3RhYmxlICgpOwpAQCAtNTUyOCw0MiAr NTcwMywxMSBAQCBwYm1fbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykK ICAgICAgIHN0cnVjdCBpbWFnZV9rZXl3b3JkIGZtdFtQQk1fTEFTVF07CiAgICAgICB1bnNpZ25l ZCBsb25nIGZnID0gRlJBTUVfRk9SRUdST1VORF9QSVhFTCAoZik7CiAgICAgICB1bnNpZ25lZCBs b25nIGJnID0gRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZik7Ci0jaWZkZWYgVVNFX0NBSVJPCi0g ICAgICBFbWFjc19Db2xvciB4ZmcsIHhiZzsKLSAgICAgIGludCBmZ2EzMiwgYmdhMzI7Ci0jZW5k aWYKICAgICAgIC8qIFBhcnNlIHRoZSBpbWFnZSBzcGVjaWZpY2F0aW9uLiAgKi8KICAgICAgIG1l bWNweSAoZm10LCBwYm1fZm9ybWF0LCBzaXplb2YgZm10KTsKICAgICAgIHBhcnNlX2ltYWdlX3Nw ZWMgKGltZy0+c3BlYywgZm10LCBQQk1fTEFTVCwgUXBibSk7CiAKICAgICAgIC8qIEdldCBmb3Jl Z3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycywgbWF5YmUgYWxsb2NhdGUgY29sb3JzLiAgKi8K LSNpZmRlZiBVU0VfQ0FJUk8KLSAgICAgIGlmICghIGZtdFtQQk1fRk9SRUdST1VORF0uY291bnQK LSAgICAgICAgICB8fCAhIFNUUklOR1AgKGZtdFtQQk1fRk9SRUdST1VORF0udmFsdWUpCi0gICAg ICAgICAgfHwgISBGUkFNRV9URVJNSU5BTCAoZiktPmRlZmluZWRfY29sb3JfaG9vayAoZiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0RB VEEgKGZtdFtQQk1fRk9SRUdST1VORF0udmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4ZmcsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKQotICAgICAg ICB7Ci0gICAgICAgICAgeGZnLnBpeGVsID0gZmc7Ci0gICAgICAgICAgeF9xdWVyeV9jb2xvcnMg KGYsICZ4ZmcsIDEpOwotICAgICAgICB9Ci0gICAgICBmZ2EzMiA9IGVtYWNzX2NvbG9yX3RvX2Fy Z2IzMiAoJnhmZyk7Ci0KLSAgICAgIGlmICghIGZtdFtQQk1fQkFDS0dST1VORF0uY291bnQKLSAg ICAgICAgICB8fCAhIFNUUklOR1AgKGZtdFtQQk1fQkFDS0dST1VORF0udmFsdWUpCi0gICAgICAg ICAgfHwgISBGUkFNRV9URVJNSU5BTCAoZiktPmRlZmluZWRfY29sb3JfaG9vayAoZiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0RBVEEg KGZtdFtQQk1fQkFDS0dST1VORF0udmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4YmcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKQotCXsKLSAgICAg ICAgICB4YmcucGl4ZWwgPSBiZzsKLSAgICAgICAgICB4X3F1ZXJ5X2NvbG9ycyAoZiwgJnhiZywg MSk7Ci0JfQotICAgICAgYmdhMzIgPSBlbWFjc19jb2xvcl90b19hcmdiMzIgKCZ4YmcpOwotI2Vs c2UKICAgICAgIGlmIChmbXRbUEJNX0ZPUkVHUk9VTkRdLmNvdW50CiAJICAmJiBTVFJJTkdQIChm bXRbUEJNX0ZPUkVHUk9VTkRdLnZhbHVlKSkKIAlmZyA9IGltYWdlX2FsbG9jX2ltYWdlX2NvbG9y IChmLCBpbWcsIGZtdFtQQk1fRk9SRUdST1VORF0udmFsdWUsIGZnKTsKQEAgLTU1NzQsOCArNTcx OCwxNSBAQCBwYm1fbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKIAkg IGltZy0+YmFja2dyb3VuZCA9IGJnOwogCSAgaW1nLT5iYWNrZ3JvdW5kX3ZhbGlkID0gMTsKIAl9 Ci0jZW5kaWYKIAorI2lmZGVmIFVTRV9DQUlSTworICAgICAgeworCUVtYWNzX0NvbG9yIGZnYmdb XSA9IHt7LnBpeGVsID0gZmd9LCB7LnBpeGVsID0gYmd9fTsKKwlGUkFNRV9URVJNSU5BTCAoZikt PnF1ZXJ5X2NvbG9ycyAoZiwgZmdiZywgQVJSQVlFTFRTIChmZ2JnKSk7CisJZmcgPSBsb29rdXBf cmdiX2NvbG9yIChmLCBmZ2JnWzBdLnJlZCwgZmdiZ1swXS5ncmVlbiwgZmdiZ1swXS5ibHVlKTsK KwliZyA9IGxvb2t1cF9yZ2JfY29sb3IgKGYsIGZnYmdbMV0ucmVkLCBmZ2JnWzFdLmdyZWVuLCBm Z2JnWzFdLmJsdWUpOworICAgICAgfQorI2VuZGlmCiAgICAgICBmb3IgKHkgPSAwOyB5IDwgaGVp Z2h0OyArK3kpCiAJZm9yICh4ID0gMDsgeCA8IHdpZHRoOyArK3gpCiAJICB7CkBAIC01NTg1LDEx ICs1NzM2LDcgQEAgcGJtX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcp CiAJCSAgewogCQkgICAgaWYgKHAgPj0gZW5kKQogCQkgICAgICB7Ci0jaWZkZWYgVVNFX0NBSVJP Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kgKHN1cmZhY2Up OwotI2Vsc2UKIAkJCWltYWdlX2Rlc3Ryb3lfeF9pbWFnZSAoeGltZyk7Ci0jZW5kaWYKIAkJCWlt YWdlX2NsZWFyX2ltYWdlIChmLCBpbWcpOwogCQkJaW1hZ2VfZXJyb3IgKCJJbnZhbGlkIGltYWdl IHNpemUgaW4gaW1hZ2UgYCVzJyIsCiAJCQkJICAgICBpbWctPnNwZWMpOwpAQCAtNTYxMywxMSAr NTc2MCw3IEBAIHBibV9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQog CQkgIGcgPSAwOwogCSAgICAgIH0KIAotI2lmZGVmIFVTRV9DQUlSTwotICAgICAgICAgICAgKmRh dGFwdHIrKyA9IGcgPyBmZ2EzMiA6IGJnYTMyOwotI2Vsc2UKLQkgICAgWFB1dFBpeGVsICh4aW1n LCB4LCB5LCBnID8gZmcgOiBiZyk7Ci0jZW5kaWYKKwkgICAgUFVUX1BJWEVMICh4aW1nLCB4LCB5 LCBnID8gZmcgOiBiZyk7CiAJICB9CiAgICAgfQogICBlbHNlCkBAIC01NjMxLDExICs1Nzc0LDcg QEAgcGJtX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAKICAgICAg IGlmIChyYXdfcCAmJiBwICsgZXhwZWN0ZWRfc2l6ZSA+IGVuZCkKIAl7Ci0jaWZkZWYgVVNFX0NB SVJPCi0gICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95IChzdXJmYWNlKTsKLSNlbHNlCiAJ ICBpbWFnZV9kZXN0cm95X3hfaW1hZ2UgKHhpbWcpOwotI2VuZGlmCiAJICBpbWFnZV9jbGVhcl9p bWFnZSAoZiwgaW1nKTsKIAkgIGltYWdlX2Vycm9yICgiSW52YWxpZCBpbWFnZSBzaXplIGluIGlt YWdlIGAlcyciLCBpbWctPnNwZWMpOwogCSAgZ290byBlcnJvcjsKQEAgLTU2NjUsMjggKzU4MDQs MTcgQEAgcGJtX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAKIAkg ICAgaWYgKHIgPCAwIHx8IGcgPCAwIHx8IGIgPCAwKQogCSAgICAgIHsKLSNpZmRlZiBVU0VfQ0FJ Uk8KLSAgICAgICAgICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kgKHN1cmZhY2UpOwotI2Vs c2UKIAkJaW1hZ2VfZGVzdHJveV94X2ltYWdlICh4aW1nKTsKLSNlbmRpZgogCQlpbWFnZV9lcnJv ciAoIkludmFsaWQgcGl4ZWwgdmFsdWUgaW4gaW1hZ2UgYCVzJyIsIGltZy0+c3BlYyk7CiAJCWdv dG8gZXJyb3I7CiAJICAgICAgfQogCi0jaWZkZWYgVVNFX0NBSVJPCi0JICAgIHIgPSAoZG91Ymxl KSByICogMjU1IC8gbWF4X2NvbG9yX2lkeDsKLQkgICAgZyA9IChkb3VibGUpIGcgKiAyNTUgLyBt YXhfY29sb3JfaWR4OwotCSAgICBiID0gKGRvdWJsZSkgYiAqIDI1NSAvIG1heF9jb2xvcl9pZHg7 Ci0gICAgICAgICAgICAqZGF0YXB0cisrID0gKDB4ZmZ1IDw8IDI0KSB8IChyIDw8IDE2KSB8IChn IDw8IDgpIHwgYjsKLSNlbHNlCiAJICAgIC8qIFJHQiB2YWx1ZXMgYXJlIG5vdyBpbiB0aGUgcmFu Z2UgMC4ubWF4X2NvbG9yX2lkeC4KIAkgICAgICAgU2NhbGUgdGhpcyB0byB0aGUgcmFuZ2UgMC4u MHhmZmZmIHN1cHBvcnRlZCBieSBYLiAgKi8KIAkgICAgciA9IChkb3VibGUpIHIgKiA2NTUzNSAv IG1heF9jb2xvcl9pZHg7CiAJICAgIGcgPSAoZG91YmxlKSBnICogNjU1MzUgLyBtYXhfY29sb3Jf aWR4OwogCSAgICBiID0gKGRvdWJsZSkgYiAqIDY1NTM1IC8gbWF4X2NvbG9yX2lkeDsKLQkgICAg WFB1dFBpeGVsICh4aW1nLCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByLCBnLCBiKSk7Ci0j ZW5kaWYKKwkgICAgUFVUX1BJWEVMICh4aW1nLCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCBy LCBnLCBiKSk7CiAJICB9CiAgICAgfQogCkBAIC01NzAyLDE2ICs1ODMwLDEyIEBAIHBibV9sb2Fk IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogCiAgIC8qIE1heWJlIGZpbGwg aW4gdGhlIGJhY2tncm91bmQgZmllbGQgd2hpbGUgd2UgaGF2ZSB4aW1nIGhhbmR5LiAgKi8KIAot I2lmZGVmIFVTRV9DQUlSTwotICBzZXRfY2Fpcm9faW1hZ2Vfc3VyZmFjZSAoaW1nLCBzdXJmYWNl KTsKLSNlbHNlCiAgIGlmIChOSUxQIChpbWFnZV9zcGVjX3ZhbHVlIChpbWctPnNwZWMsIFFDYmFj a2dyb3VuZCwgTlVMTCkpKQogICAgIC8qIENhc3RpbmcgYXZvaWRzIGEgR0NDIHdhcm5pbmcuICAq LwogICAgIElNQUdFX0JBQ0tHUk9VTkQgKGltZywgZiwgKEVtYWNzX1BpeF9Db250ZXh0KXhpbWcp OwogCiAgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdlLiAgKi8KICAgaW1hZ2VfcHV0X3hfaW1h Z2UgKGYsIGltZywgeGltZywgMCk7Ci0jZW5kaWYKIAogICAvKiBYIGFuZCBXMzIgdmVyc2lvbnMg ZGlkIGl0IGhlcmUsIE1BQyB2ZXJzaW9uIGFib3ZlLiAgKytrZnMKICAgICAgaW1nLT53aWR0aCA9 IHdpZHRoOwpAQCAtNjAyOCwxMyArNjE1Miw3IEBAIHBuZ19sb2FkX2JvZHkgKHN0cnVjdCBmcmFt ZSAqZiwgc3RydWN0IGltYWdlICppbWcsIHN0cnVjdCBwbmdfbG9hZF9jb250ZXh0ICpjKQogICBi b29sIHRyYW5zcGFyZW50X3A7CiAgIHN0cnVjdCBwbmdfbWVtb3J5X3N0b3JhZ2UgdGJyOyAgLyog RGF0YSB0byBiZSByZWFkICovCiAgIHB0cmRpZmZfdCBuYnl0ZXM7Ci0KLSNpZmRlZiBVU0VfQ0FJ Uk8KLSAgY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOwotICB1aW50MzJfdCAqZGF0YXB0cjsKLSNl bHNlCiAgIEVtYWNzX1BpeF9Db250YWluZXIgeGltZywgbWFza19pbWcgPSBOVUxMOwotI2VuZGlm CiAKICAgLyogRmluZCBvdXQgd2hhdCBmaWxlIHRvIGxvYWQuICAqLwogICBzcGVjaWZpZWRfZmls ZSA9IGltYWdlX3NwZWNfdmFsdWUgKGltZy0+c3BlYywgUUNmaWxlLCBOVUxMKTsKQEAgLTYxNTIs MTIgKzYyNzAsMTAgQEAgcG5nX2xvYWRfYm9keSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1h Z2UgKmltZywgc3RydWN0IHBuZ19sb2FkX2NvbnRleHQgKmMpCiAgICAgICBnb3RvIGVycm9yOwog ICAgIH0KIAotI2lmbmRlZiBVU0VfQ0FJUk8KICAgLyogQ3JlYXRlIHRoZSBYIGltYWdlIGFuZCBw aXhtYXAgbm93LCBzbyB0aGF0IHRoZSB3b3JrIGJlbG93IGNhbiBiZQogICAgICBvbWl0dGVkIGlm IHRoZSBpbWFnZSBpcyB0b28gbGFyZ2UgZm9yIFguICAqLwogICBpZiAoIWltYWdlX2NyZWF0ZV94 X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwgMCwgJnhpbWcsIDApKQog ICAgIGdvdG8gZXJyb3I7Ci0jZW5kaWYKIAogICAvKiBJZiBpbWFnZSBjb250YWlucyBzaW1wbHkg dHJhbnNwYXJlbmN5IGRhdGEsIHdlIHByZWZlciB0bwogICAgICBjb25zdHJ1Y3QgYSBjbGlwcGlu ZyBtYXNrLiAgKi8KQEAgLTYyNDksMTAgKzYzNjUsNiBAQCBwbmdfbG9hZF9ib2R5IChzdHJ1Y3Qg ZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBzdHJ1Y3QgcG5nX2xvYWRfY29udGV4dCAqYykK ICAgICAgIGMtPmZwID0gTlVMTDsKICAgICB9CiAKLSNpZmRlZiBVU0VfQ0FJUk8KLSAgc3VyZmFj ZSA9IGNyZWF0ZV9jYWlyb19pbWFnZV9zdXJmYWNlICh3aWR0aCwgaGVpZ2h0KTsKLSAgZGF0YXB0 ciA9ICh1aW50MzJfdCAqKSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhIChzdXJmYWNlKTsK LSNlbHNlCiAgIC8qIENyZWF0ZSBhbiBpbWFnZSBhbmQgcGl4bWFwIHNlcnZpbmcgYXMgbWFzayBp ZiB0aGUgUE5HIGltYWdlCiAgICAgIGNvbnRhaW5zIGFuIGFscGhhIGNoYW5uZWwuICAqLwogICBp ZiAoY2hhbm5lbHMgPT0gNApAQCAtNjI2NCw3ICs2Mzc2LDYgQEAgcG5nX2xvYWRfYm9keSAoc3Ry dWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywgc3RydWN0IHBuZ19sb2FkX2NvbnRleHQg KmMpCiAgICAgICBpbWFnZV9jbGVhcl9pbWFnZV8xIChmLCBpbWcsIENMRUFSX0lNQUdFX1BJWE1B UCk7CiAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSNlbmRpZgogCiAgIC8qIEZpbGwgdGhlIFgg aW1hZ2UgYW5kIG1hc2sgZnJvbSBQTkcgZGF0YS4gICovCiAgIGluaXRfY29sb3JfdGFibGUgKCk7 CkBAIC02Mjc3LDE4ICs2Mzg4LDEwIEBAIHBuZ19sb2FkX2JvZHkgKHN0cnVjdCBmcmFtZSAqZiwg c3RydWN0IGltYWdlICppbWcsIHN0cnVjdCBwbmdfbG9hZF9jb250ZXh0ICpjKQogCXsKIAkgIGlu dCByLCBnLCBiOwogCi0jaWZkZWYgVVNFX0NBSVJPCi0gICAgICAgICAgaW50IGEgPSAweGZmOwot CSAgciA9ICpwKys7Ci0JICBnID0gKnArKzsKLQkgIGIgPSAqcCsrOwotICAgICAgICAgIGlmIChj aGFubmVscyA9PSA0KSBhID0gKnArKzsKLSAgICAgICAgICAqZGF0YXB0cisrID0gKGEgPDwgMjQp IHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkgfCBiOwotI2Vsc2UKIAkgIHIgPSAqcCsrIDw8IDg7CiAJ ICBnID0gKnArKyA8PCA4OwogCSAgYiA9ICpwKysgPDwgODsKLQkgIFhQdXRQaXhlbCAoeGltZywg eCwgeSwgbG9va3VwX3JnYl9jb2xvciAoZiwgciwgZywgYikpOworCSAgUFVUX1BJWEVMICh4aW1n LCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByLCBnLCBiKSk7CiAJICAvKiBBbiBhbHBoYSBj aGFubmVsLCBha2EgbWFzayBjaGFubmVsLCBhc3NvY2lhdGVzIHZhcmlhYmxlCiAJICAgICB0cmFu c3BhcmVuY3kgd2l0aCBhbiBpbWFnZS4gIFdoZXJlIG90aGVyIGltYWdlIGZvcm1hdHMKIAkgICAg IHN1cHBvcnQgYmluYXJ5IHRyYW5zcGFyZW5jeS0tLWZ1bGx5IHRyYW5zcGFyZW50IG9yIGZ1bGx5 CkBAIC02MzA4LDEwICs2NDExLDkgQEAgcG5nX2xvYWRfYm9keSAoc3RydWN0IGZyYW1lICpmLCBz dHJ1Y3QgaW1hZ2UgKmltZywgc3RydWN0IHBuZ19sb2FkX2NvbnRleHQgKmMpCiAJICBpZiAoY2hh bm5lbHMgPT0gNCkKIAkgICAgewogCSAgICAgIGlmIChtYXNrX2ltZykKLQkJWFB1dFBpeGVsICht YXNrX2ltZywgeCwgeSwgKnAgPiAwID8gUElYX01BU0tfRFJBVyA6IFBJWF9NQVNLX1JFVEFJTik7 CisJCVBVVF9QSVhFTCAobWFza19pbWcsIHgsIHksICpwID4gMCA/IFBJWF9NQVNLX0RSQVcgOiBQ SVhfTUFTS19SRVRBSU4pOwogCSAgICAgICsrcDsKIAkgICAgfQotI2VuZGlmCiAJfQogICAgIH0K IApAQCAtNjMyMiw3ICs2NDI0LDE0IEBAIHBuZ19sb2FkX2JvZHkgKHN0cnVjdCBmcmFtZSAqZiwg c3RydWN0IGltYWdlICppbWcsIHN0cnVjdCBwbmdfbG9hZF9jb250ZXh0ICpjKQogICAgICAgcG5n X2NvbG9yXzE2ICpiZzsKICAgICAgIGlmIChwbmdfZ2V0X2JLR0QgKHBuZ19wdHIsIGluZm9fcHRy LCAmYmcpKQogCXsKKyNpZm5kZWYgVVNFX0NBSVJPCiAJICBpbWctPmJhY2tncm91bmQgPSBsb29r dXBfcmdiX2NvbG9yIChmLCBiZy0+cmVkLCBiZy0+Z3JlZW4sIGJnLT5ibHVlKTsKKyNlbHNlICAv KiBVU0VfQ0FJUk8gKi8KKwkgIGNoYXIgY29sb3JfbmFtZVszMF07CisJICBzcHJpbnRmIChjb2xv cl9uYW1lLCAiIyUwNHglMDR4JTA0eCIsIGJnLT5yZWQsIGJnLT5ncmVlbiwgYmctPmJsdWUpOwor CSAgaW1nLT5iYWNrZ3JvdW5kCisJICAgID0gaW1hZ2VfYWxsb2NfaW1hZ2VfY29sb3IgKGYsIGlt ZywgYnVpbGRfc3RyaW5nIChjb2xvcl9uYW1lKSwgMCk7CisjZW5kaWYgLyogVVNFX0NBSVJPICov CiAJICBpbWctPmJhY2tncm91bmRfdmFsaWQgPSAxOwogCX0KICAgICB9CkBAIC02MzQxLDkgKzY0 NTAsNiBAQCBwbmdfbG9hZF9ib2R5IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1n LCBzdHJ1Y3QgcG5nX2xvYWRfY29udGV4dCAqYykKICAgaW1nLT53aWR0aCA9IHdpZHRoOwogICBp bWctPmhlaWdodCA9IGhlaWdodDsKIAotI2lmZGVmIFVTRV9DQUlSTwotICBzZXRfY2Fpcm9faW1h Z2Vfc3VyZmFjZSAoaW1nLCBzdXJmYWNlKTsKLSNlbHNlCiAgIC8qIE1heWJlIGZpbGwgaW4gdGhl IGJhY2tncm91bmQgZmllbGQgd2hpbGUgd2UgaGF2ZSB4aW1nIGhhbmR5LgogICAgICBDYXN0aW5n IGF2b2lkcyBhIEdDQyB3YXJuaW5nLiAgKi8KICAgSU1BR0VfQkFDS0dST1VORCAoaW1nLCBmLCAo RW1hY3NfUGl4X0NvbnRleHQpeGltZyk7CkBAIC02MzYwLDcgKzY0NjYsNiBAQCBwbmdfbG9hZF9i b2R5IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBzdHJ1Y3QgcG5nX2xvYWRf Y29udGV4dCAqYykKIAogICAgICAgaW1hZ2VfcHV0X3hfaW1hZ2UgKGYsIGltZywgbWFza19pbWcs IDEpOwogICAgIH0KLSNlbmRpZgogCiAgIHJldHVybiAxOwogfQpAQCAtNjc3NCwxMCArNjg3OSw4 IEBAIGpwZWdfbG9hZF9ib2R5IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLAog ICBpbnQgcm93X3N0cmlkZSwgeCwgeTsKICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgIGludCBpLCBp ciwgaWcsIGliOwotI2lmbmRlZiBVU0VfQ0FJUk8KICAgdW5zaWduZWQgbG9uZyAqY29sb3JzOwog ICBFbWFjc19QaXhfQ29udGFpbmVyIHhpbWcgPSBOVUxMOwotI2VuZGlmCiAKICAgLyogT3BlbiB0 aGUgSlBFRyBmaWxlLiAgKi8KICAgc3BlY2lmaWVkX2ZpbGUgPSBpbWFnZV9zcGVjX3ZhbHVlIChp bWctPnNwZWMsIFFDZmlsZSwgTlVMTCk7CkBAIC02ODM3LDkgKzY5NDAsNyBAQCBqcGVnX2xvYWRf Ym9keSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKICAgICAgIGpwZWdfZGVz dHJveV9kZWNvbXByZXNzICgmbWdyLT5jaW5mbyk7CiAKICAgICAgIC8qIElmIHdlIGFscmVhZHkg aGF2ZSBhbiBYSW1hZ2UsIGZyZWUgdGhhdC4gICovCi0jaWZuZGVmIFVTRV9DQUlSTwogICAgICAg aW1hZ2VfZGVzdHJveV94X2ltYWdlICh4aW1nKTsKLSNlbmRpZgogICAgICAgLyogRnJlZSBwaXht YXAgYW5kIGNvbG9ycy4gICovCiAgICAgICBpbWFnZV9jbGVhcl9pbWFnZSAoZiwgaW1nKTsKICAg ICAgIHJldHVybiAwOwpAQCAtNjg3MCwyMyArNjk3MSwxOSBAQCBqcGVnX2xvYWRfYm9keSAoc3Ry dWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKICAgICAgIHN5c19sb25nam1wIChtZ3It PnNldGptcF9idWZmZXIsIDEpOwogICAgIH0KIAotI2lmbmRlZiBVU0VfQ0FJUk8KICAgLyogQ3Jl YXRlIFggaW1hZ2UgYW5kIHBpeG1hcC4gICovCiAgIGlmICghaW1hZ2VfY3JlYXRlX3hfaW1hZ2Vf YW5kX3BpeG1hcCAoZiwgaW1nLCB3aWR0aCwgaGVpZ2h0LCAwLCAmeGltZywgMCkpCiAgICAgewog ICAgICAgbWdyLT5mYWlsdXJlX2NvZGUgPSBNWV9KUEVHX0NBTk5PVF9DUkVBVEVfWDsKICAgICAg IHN5c19sb25nam1wIChtZ3ItPnNldGptcF9idWZmZXIsIDEpOwogICAgIH0KLSNlbmRpZgogCiAg IC8qIEFsbG9jYXRlIGNvbG9ycy4gIFdoZW4gY29sb3IgcXVhbnRpemF0aW9uIGlzIHVzZWQsCiAg ICAgIG1nci0+Y2luZm8uYWN0dWFsX251bWJlcl9vZl9jb2xvcnMgaGFzIGJlZW4gc2V0IHdpdGgg dGhlIG51bWJlciBvZgogICAgICBjb2xvcnMgZ2VuZXJhdGVkLCBhbmQgbWdyLT5jaW5mby5jb2xv cm1hcCBpcyBhIHR3by1kaW1lbnNpb25hbCBhcnJheQogICAgICBvZiBjb2xvciBpbmRpY2VzIGlu IHRoZSByYW5nZSAwLi5tZ3ItPmNpbmZvLmFjdHVhbF9udW1iZXJfb2ZfY29sb3JzLgogICAgICBO byBtb3JlIHRoYW4gMjU1IGNvbG9ycyB3aWxsIGJlIGdlbmVyYXRlZC4gICovCi0jaWZuZGVmIFVT RV9DQUlSTwogICBVU0VfU0FGRV9BTExPQ0E7Ci0jZW5kaWYKICAgewogICAgIGlmIChtZ3ItPmNp bmZvLm91dF9jb2xvcl9jb21wb25lbnRzID4gMikKICAgICAgIGlyID0gMCwgaWcgPSAxLCBpYiA9 IDI7CkBAIC02ODk1LDcgKzY5OTIsNiBAQCBqcGVnX2xvYWRfYm9keSAoc3RydWN0IGZyYW1lICpm LCBzdHJ1Y3QgaW1hZ2UgKmltZywKICAgICBlbHNlCiAgICAgICBpciA9IDAsIGlnID0gMCwgaWIg PSAwOwogCi0jaWZuZGVmIFVTRV9DQUlSTwogICAgIC8qIFVzZSB0aGUgY29sb3IgdGFibGUgbWVj aGFuaXNtIGJlY2F1c2UgaXQgaGFuZGxlcyBjb2xvcnMgdGhhdAogICAgICAgIGNhbm5vdCBiZSBh bGxvY2F0ZWQgbmljZWx5LiAgU3VjaCBjb2xvcnMgd2lsbCBiZSByZXBsYWNlZCB3aXRoCiAgICAg ICAgYSBkZWZhdWx0IGNvbG9yLCBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBjYXJlIGFib3V0IHdoaWNo IGNvbG9ycwpAQCAtNjkxMiw3ICs3MDA4LDYgQEAganBlZ19sb2FkX2JvZHkgKHN0cnVjdCBmcmFt ZSAqZiwgc3RydWN0IGltYWdlICppbWcsCiAJaW50IGIgPSBtZ3ItPmNpbmZvLmNvbG9ybWFwW2li XVtpXSA8PCA4OwogCWNvbG9yc1tpXSA9IGxvb2t1cF9yZ2JfY29sb3IgKGYsIHIsIGcsIGIpOwog ICAgICAgfQotI2VuZGlmCiAKICNpZmRlZiBDT0xPUl9UQUJMRV9TVVBQT1JUCiAgICAgLyogUmVt ZW1iZXIgdGhvc2UgY29sb3JzIGFjdHVhbGx5IGFsbG9jYXRlZC4gICovCkBAIC02OTI1LDM2ICs3 MDIwLDEyIEBAIGpwZWdfbG9hZF9ib2R5IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAq aW1nLAogICByb3dfc3RyaWRlID0gd2lkdGggKiBtZ3ItPmNpbmZvLm91dHB1dF9jb21wb25lbnRz OwogICBidWZmZXIgPSBtZ3ItPmNpbmZvLm1lbS0+YWxsb2Nfc2FycmF5ICgoal9jb21tb25fcHRy KSAmbWdyLT5jaW5mbywKIAkJCQkJIEpQT09MX0lNQUdFLCByb3dfc3RyaWRlLCAxKTsKLSNpZmRl ZiBVU0VfQ0FJUk8KLSAgewotICAgIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSA9IGNyZWF0ZV9j YWlyb19pbWFnZV9zdXJmYWNlICh3aWR0aCwgaGVpZ2h0KTsKLSAgICB1aW50MzJfdCAqZGF0YXB0 ciA9ICh1aW50MzJfdCAqKSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhIChzdXJmYWNlKTsK LSAgICBpbnQgciwgZywgYjsKLQotICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkKLSAg ICAgIHsKLSAgICAgICAganBlZ19yZWFkX3NjYW5saW5lcyAoJm1nci0+Y2luZm8sIGJ1ZmZlciwg MSk7Ci0KLSAgICAgICAgZm9yICh4ID0gMDsgeCA8IHdpZHRoOyArK3gpCi0gICAgICAgICAgewot ICAgICAgICAgICAgaSA9IGJ1ZmZlclswXVt4XTsKLSAgICAgICAgICAgIHIgPSBtZ3ItPmNpbmZv LmNvbG9ybWFwW2lyXVtpXTsKLSAgICAgICAgICAgIGcgPSBtZ3ItPmNpbmZvLmNvbG9ybWFwW2ln XVtpXTsKLSAgICAgICAgICAgIGIgPSBtZ3ItPmNpbmZvLmNvbG9ybWFwW2liXVtpXTsKLSAgICAg ICAgICAgICpkYXRhcHRyKysgPSAoMHhmZnUgPDwgMjQpIHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkg fCBiOwotICAgICAgICAgIH0KLSAgICAgIH0KLQotICAgIHNldF9jYWlyb19pbWFnZV9zdXJmYWNl IChpbWcsIHN1cmZhY2UpOwotICB9Ci0jZWxzZQogICBmb3IgKHkgPSAwOyB5IDwgaGVpZ2h0OyAr K3kpCiAgICAgewogICAgICAganBlZ19yZWFkX3NjYW5saW5lcyAoJm1nci0+Y2luZm8sIGJ1ZmZl ciwgMSk7CiAgICAgICBmb3IgKHggPSAwOyB4IDwgbWdyLT5jaW5mby5vdXRwdXRfd2lkdGg7ICsr eCkKLQlYUHV0UGl4ZWwgKHhpbWcsIHgsIHksIGNvbG9yc1tidWZmZXJbMF1beF1dKTsKKwlQVVRf UElYRUwgKHhpbWcsIHgsIHksIGNvbG9yc1tidWZmZXJbMF1beF1dKTsKICAgICB9Ci0jZW5kaWYK IAogICAvKiBDbGVhbiB1cC4gICovCiAgIGpwZWdfZmluaXNoX2RlY29tcHJlc3MgKCZtZ3ItPmNp bmZvKTsKQEAgLTY5NjIsNyArNzAzMyw2IEBAIGpwZWdfbG9hZF9ib2R5IChzdHJ1Y3QgZnJhbWUg KmYsIHN0cnVjdCBpbWFnZSAqaW1nLAogICBpZiAoZnApCiAgICAgZmNsb3NlIChmcCk7CiAKLSNp Zm5kZWYgVVNFX0NBSVJPCiAgIC8qIE1heWJlIGZpbGwgaW4gdGhlIGJhY2tncm91bmQgZmllbGQg d2hpbGUgd2UgaGF2ZSB4aW1nIGhhbmR5LiAqLwogICBpZiAoTklMUCAoaW1hZ2Vfc3BlY192YWx1 ZSAoaW1nLT5zcGVjLCBRQ2JhY2tncm91bmQsIE5VTEwpKSkKICAgICAvKiBDYXN0aW5nIGF2b2lk cyBhIEdDQyB3YXJuaW5nLiAgKi8KQEAgLTY5NzEsNyArNzA0MSw2IEBAIGpwZWdfbG9hZF9ib2R5 IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLAogICAvKiBQdXQgeGltZyBpbnRv IHRoZSBpbWFnZS4gICovCiAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOwog ICBTQUZFX0ZSRUUgKCk7Ci0jZW5kaWYKICAgcmV0dXJuIDE7CiB9CiAKQEAgLTczODQsMjggKzc0 NTMsNiBAQCB0aWZmX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAg ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSNpZmRlZiBVU0VfQ0FJUk8KLSAgewotICAgIGNhaXJv X3N1cmZhY2VfdCAqc3VyZmFjZSA9IGNyZWF0ZV9jYWlyb19pbWFnZV9zdXJmYWNlICh3aWR0aCwg aGVpZ2h0KTsKLSAgICB1aW50MzJfdCAqZGF0YXB0ciA9ICh1aW50MzJfdCAqKSBjYWlyb19pbWFn ZV9zdXJmYWNlX2dldF9kYXRhIChzdXJmYWNlKTsKLQotICAgIGZvciAoeSA9IDA7IHkgPCBoZWln aHQ7ICsreSkKLSAgICAgIHsKLSAgICAgICAgdWludDMyICpyb3cgPSBidWYgKyAoaGVpZ2h0IC0g MSAtIHkpICogd2lkdGg7Ci0gICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgKyt4KQotICAg ICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQzMiBhYmdyID0gcm93W3hdOwotICAgICAgICAgICAg aW50IHIgPSBUSUZGR2V0UiAoYWJncik7Ci0gICAgICAgICAgICBpbnQgZyA9IFRJRkZHZXRHIChh YmdyKTsKLSAgICAgICAgICAgIGludCBiID0gVElGRkdldEIgKGFiZ3IpOwotICAgICAgICAgICAg aW50IGEgPSBUSUZGR2V0QSAoYWJncik7Ci0gICAgICAgICAgICAqZGF0YXB0cisrID0gKGEgPDwg MjQpIHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkgfCBiOwotICAgICAgICAgIH0KLSAgICAgIH0KLQot ICAgIHNldF9jYWlyb19pbWFnZV9zdXJmYWNlIChpbWcsIHN1cmZhY2UpOwotICB9Ci0jZWxzZQog ICAvKiBJbml0aWFsaXplIHRoZSBjb2xvciB0YWJsZS4gICovCiAgIGluaXRfY29sb3JfdGFibGUg KCk7CiAKQEAgLTc0MjAsNyArNzQ2Nyw3IEBAIHRpZmZfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBz dHJ1Y3QgaW1hZ2UgKmltZykKIAkgIGludCByID0gVElGRkdldFIgKGFiZ3IpIDw8IDg7CiAJICBp bnQgZyA9IFRJRkZHZXRHIChhYmdyKSA8PCA4OwogCSAgaW50IGIgPSBUSUZGR2V0QiAoYWJncikg PDwgODsKLQkgIFhQdXRQaXhlbCAoeGltZywgeCwgaGVpZ2h0IC0gMSAtIHksIGxvb2t1cF9yZ2Jf Y29sb3IgKGYsIHIsIGcsIGIpKTsKKwkgIFBVVF9QSVhFTCAoeGltZywgeCwgaGVpZ2h0IC0gMSAt IHksIGxvb2t1cF9yZ2JfY29sb3IgKGYsIHIsIGcsIGIpKTsKIAl9CiAgICAgfQogCkBAIC03NDQx LDggKzc0ODgsNiBAQCB0aWZmX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICpp bWcpCiAgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdlLiAgKi8KICAgaW1hZ2VfcHV0X3hfaW1h Z2UgKGYsIGltZywgeGltZywgMCk7CiAKLSNlbmRpZiAvKiAhIFVTRV9DQUlSTyAqLwotCiAgIHhm cmVlIChidWYpOwogICByZXR1cm4gMTsKIH0KQEAgLTc4MTksMjYgKzc4NjQsNiBAQCBnaWZfbG9h ZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKIAl9CiAgICAgfQogCi0jaWZk ZWYgVVNFX0NBSVJPCi0gIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSA9IGNyZWF0ZV9jYWlyb19p bWFnZV9zdXJmYWNlICh3aWR0aCwgaGVpZ2h0KTsKLSAgdWludDMyX3QgKmRhdGEzMiA9ICh1aW50 MzJfdCAqKSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhIChzdXJmYWNlKTsKLSAgaWYgKFNU UklOR1AgKHNwZWNpZmllZF9iZykpCi0gICAgewotICAgICAgRW1hY3NfQ29sb3IgY29sb3I7Ci0g ICAgICBpZiAoRlJBTUVfVEVSTUlOQUwgKGYpLT5kZWZpbmVkX2NvbG9yX2hvb2sKLSAgICAgICAg ICAoZiwgU1NEQVRBIChzcGVjaWZpZWRfYmcpLCAmY29sb3IsIGZhbHNlLCBmYWxzZSkpCi0gICAg ICAgIHsKLSAgICAgICAgICB1aW50MzJfdCAqZGF0YXB0ciA9IGRhdGEzMjsKLSAgICAgICAgICBp bnQgciA9IGNvbG9yLnJlZC8yNTY7Ci0gICAgICAgICAgaW50IGcgPSBjb2xvci5ncmVlbi8yNTY7 Ci0gICAgICAgICAgaW50IGIgPSBjb2xvci5ibHVlLzI1NjsKLQotICAgICAgICAgIGZvciAoeSA9 IDA7IHkgPCBoZWlnaHQ7ICsreSkKLSAgICAgICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsg Kyt4KQotICAgICAgICAgICAgICAqZGF0YXB0cisrID0gKDB4ZmZ1IDw8IDI0KSB8IChyIDw8IDE2 KSB8IChnIDw8IDgpIHwgYjsKLSAgICAgICAgfQotICAgIH0KLSNlbHNlCiAgIC8qIENyZWF0ZSB0 aGUgWCBpbWFnZSBhbmQgcGl4bWFwLiAgKi8KICAgRW1hY3NfUGl4X0NvbnRhaW5lciB4aW1nOwog ICBpZiAoIWltYWdlX2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhl aWdodCwgMCwgJnhpbWcsIDApKQpAQCAtNzg1MSwyMiArNzg3NiwzMSBAQCBnaWZfbG9hZCAoc3Ry dWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICAgICAgRnVsbCBhbmltYXRlZCBHSUYg c3VwcG9ydCByZXF1aXJlcyBtb3JlIGhlcmUgKHNlZSB0aGUgZ2lmODkgc3BlYywKICAgICAgZGlz cG9zYWwgbWV0aG9kcykuICBMZXQncyBzaW1wbHkgYXNzdW1lIHRoYXQgdGhlIHBhcnQgbm90IGNv dmVyZWQKICAgICAgYnkgYSBzdWItaW1hZ2UgaXMgaW4gdGhlIGZyYW1lJ3MgYmFja2dyb3VuZCBj b2xvci4gICovCisgIHVuc2lnbmVkIGxvbmcgZnJhbWVfYmc7CisjaWZuZGVmIFVTRV9DQUlSTwor ICBmcmFtZV9iZyA9IEZSQU1FX0JBQ0tHUk9VTkRfUElYRUwgKGYpOworI2Vsc2UgIC8qIFVTRV9D QUlSTyAqLworICB7CisgICAgRW1hY3NfQ29sb3IgY29sb3I7CisgICAgRlJBTUVfVEVSTUlOQUwg KGYpLT5xdWVyeV9mcmFtZV9iYWNrZ3JvdW5kX2NvbG9yIChmLCAmY29sb3IpOworICAgIGZyYW1l X2JnID0gbG9va3VwX3JnYl9jb2xvciAoZiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3Iu Ymx1ZSk7CisgIH0KKyNlbmRpZgkvKiBVU0VfQ0FJUk8gKi8KICAgZm9yICh5ID0gMDsgeSA8IGlt Zy0+Y29ybmVyc1tUT1BfQ09STkVSXTsgKyt5KQogICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsg Kyt4KQotICAgICAgWFB1dFBpeGVsICh4aW1nLCB4LCB5LCBGUkFNRV9CQUNLR1JPVU5EX1BJWEVM IChmKSk7CisgICAgICBQVVRfUElYRUwgKHhpbWcsIHgsIHksIGZyYW1lX2JnKTsKIAogICBmb3Ig KHkgPSBpbWctPmNvcm5lcnNbQk9UX0NPUk5FUl07IHkgPCBoZWlnaHQ7ICsreSkKICAgICBmb3Ig KHggPSAwOyB4IDwgd2lkdGg7ICsreCkKLSAgICAgIFhQdXRQaXhlbCAoeGltZywgeCwgeSwgRlJB TUVfQkFDS0dST1VORF9QSVhFTCAoZikpOworICAgICAgUFVUX1BJWEVMICh4aW1nLCB4LCB5LCBm cmFtZV9iZyk7CiAKICAgZm9yICh5ID0gaW1nLT5jb3JuZXJzW1RPUF9DT1JORVJdOyB5IDwgaW1n LT5jb3JuZXJzW0JPVF9DT1JORVJdOyArK3kpCiAgICAgewogICAgICAgZm9yICh4ID0gMDsgeCA8 IGltZy0+Y29ybmVyc1tMRUZUX0NPUk5FUl07ICsreCkKLQlYUHV0UGl4ZWwgKHhpbWcsIHgsIHks IEZSQU1FX0JBQ0tHUk9VTkRfUElYRUwgKGYpKTsKKwlQVVRfUElYRUwgKHhpbWcsIHgsIHksIGZy YW1lX2JnKTsKICAgICAgIGZvciAoeCA9IGltZy0+Y29ybmVyc1tSSUdIVF9DT1JORVJdOyB4IDwg d2lkdGg7ICsreCkKLQlYUHV0UGl4ZWwgKHhpbWcsIHgsIHksIEZSQU1FX0JBQ0tHUk9VTkRfUElY RUwgKGYpKTsKKwlQVVRfUElYRUwgKHhpbWcsIHgsIHksIGZyYW1lX2JnKTsKICAgICB9Ci0jZW5k aWYKIAogICAvKiBSZWFkIHRoZSBHSUYgaW1hZ2UgaW50byB0aGUgWCBpbWFnZS4gICAqLwogCkBA IC03ODc3LDEyICs3OTExLDE3IEBAIGdpZl9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBp bWFnZSAqaW1nKQogCiAgIGluaXRfY29sb3JfdGFibGUgKCk7CiAKLSNpZm5kZWYgVVNFX0NBSVJP CiAgIHVuc2lnbmVkIGxvbmcgYmdjb2xvciBVTklOSVQ7CiAgIGlmIChTVFJJTkdQIChzcGVjaWZp ZWRfYmcpKQotICAgIGJnY29sb3IgPSBpbWFnZV9hbGxvY19pbWFnZV9jb2xvciAoZiwgaW1nLCBz cGVjaWZpZWRfYmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUkFN RV9CQUNLR1JPVU5EX1BJWEVMIChmKSk7CisgICAgeworICAgICAgYmdjb2xvciA9IGltYWdlX2Fs bG9jX2ltYWdlX2NvbG9yIChmLCBpbWcsIHNwZWNpZmllZF9iZywKKwkJCQkJIEZSQU1FX0JBQ0tH Uk9VTkRfUElYRUwgKGYpKTsKKyNpZmRlZiBVU0VfQ0FJUk8KKyAgICAgIEVtYWNzX0NvbG9yIGNv bG9yID0gey5waXhlbCA9IGJnY29sb3J9OworICAgICAgRlJBTUVfVEVSTUlOQUwgKGYpLT5xdWVy eV9jb2xvcnMgKGYsICZjb2xvciwgMSk7CisgICAgICBiZ2NvbG9yID0gbG9va3VwX3JnYl9jb2xv ciAoZiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSk7CiAjZW5kaWYKKyAgICB9 CiAKICAgZm9yIChqID0gMDsgaiA8PSBpZHg7ICsraikKICAgICB7CkBAIC03OTMwLDcgKzc5Njks NiBAQCBnaWZfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICAgICAg IGlmICghZ2lmX2NvbG9yX21hcCkKIAlnaWZfY29sb3JfbWFwID0gZ2lmLT5TQ29sb3JNYXA7CiAK LSNpZm5kZWYgVVNFX0NBSVJPCiAgICAgICAvKiBBbGxvY2F0ZSBzdWJpbWFnZSBjb2xvcnMuICAq LwogICAgICAgdW5zaWduZWQgbG9uZyBwaXhlbF9jb2xvcnNbMjU2XSA9IHsgMCwgfTsKIApAQCAt NzkzOSw3ICs3OTc3LDcgQEAgZ2lmX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdl ICppbWcpCiAJICB7CiAJICAgIGlmICh0cmFuc3BhcmVuY3lfY29sb3JfaW5kZXggPT0gaSkKIAkg ICAgICBwaXhlbF9jb2xvcnNbaV0gPSBTVFJJTkdQIChzcGVjaWZpZWRfYmcpCi0JCT8gYmdjb2xv ciA6IEZSQU1FX0JBQ0tHUk9VTkRfUElYRUwgKGYpOworCQk/IGJnY29sb3IgOiBmcmFtZV9iZzsK IAkgICAgZWxzZQogCSAgICAgIHsKIAkJaW50IHIgPSBnaWZfY29sb3JfbWFwLT5Db2xvcnNbaV0u UmVkIDw8IDg7CkBAIC03OTQ4LDcgKzc5ODYsNiBAQCBnaWZfbG9hZCAoc3RydWN0IGZyYW1lICpm LCBzdHJ1Y3QgaW1hZ2UgKmltZykKIAkJcGl4ZWxfY29sb3JzW2ldID0gbG9va3VwX3JnYl9jb2xv ciAoZiwgciwgZywgYik7CiAJICAgICAgfQogCSAgfQotI2VuZGlmCiAKICAgICAgIC8qIEFwcGx5 IHRoZSBwaXhlbCB2YWx1ZXMuICAqLwogICAgICAgaWYgKEdJRkxJQl9NQUpPUiA8IDUgJiYgZ2lm LT5TYXZlZEltYWdlc1tqXS5JbWFnZURlc2MuSW50ZXJsYWNlKQpAQCAtNzk2NywyMSArODAwNCw5 IEBAIGdpZl9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogCQkgIGlu dCBjID0gcmFzdGVyW3kgKiBzdWJpbWdfd2lkdGggKyB4XTsKIAkJICBpZiAodHJhbnNwYXJlbmN5 X2NvbG9yX2luZGV4ICE9IGMgfHwgZGlzcG9zYWwgIT0gMSkKICAgICAgICAgICAgICAgICAgICAg ewotI2lmZGVmIFVTRV9DQUlSTwotICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpkYXRh cHRyID0KLSAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhMzIgKyAoKHJvdyArIHN1YmltZ190 b3ApICogd2lkdGgKLQkJCQkgICArIHggKyBzdWJpbWdfbGVmdCkpOwotICAgICAgICAgICAgICAg ICAgICAgIGludCByID0gZ2lmX2NvbG9yX21hcC0+Q29sb3JzW2NdLlJlZDsKLSAgICAgICAgICAg ICAgICAgICAgICBpbnQgZyA9IGdpZl9jb2xvcl9tYXAtPkNvbG9yc1tjXS5HcmVlbjsKLSAgICAg ICAgICAgICAgICAgICAgICBpbnQgYiA9IGdpZl9jb2xvcl9tYXAtPkNvbG9yc1tjXS5CbHVlOwot Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW5jeV9jb2xvcl9pbmRleCAhPSBj KQotICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGFwdHIgPSAoMHhmZnUgPDwgMjQpIHwgKHIg PDwgMTYpIHwgKGcgPDwgOCkgfCBiOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICBYUHV0 UGl4ZWwgKHhpbWcsIHggKyBzdWJpbWdfbGVmdCwgcm93ICsgc3ViaW1nX3RvcCwKKyAgICAgICAg ICAgICAgICAgICAgICBQVVRfUElYRUwgKHhpbWcsIHggKyBzdWJpbWdfbGVmdCwgcm93ICsgc3Vi aW1nX3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsX2NvbG9yc1tj XSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICB9CisJCSAgICB9CiAJCX0KIAkgICAgfQog CX0KQEAgLTc5OTMsMTkgKzgwMTgsOCBAQCBnaWZfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1 Y3QgaW1hZ2UgKmltZykKIAkJaW50IGMgPSByYXN0ZXJbeSAqIHN1YmltZ193aWR0aCArIHhdOwog CQlpZiAodHJhbnNwYXJlbmN5X2NvbG9yX2luZGV4ICE9IGMgfHwgZGlzcG9zYWwgIT0gMSkKICAg ICAgICAgICAgICAgICAgIHsKLSNpZmRlZiBVU0VfQ0FJUk8KLSAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgKmRhdGFwdHIgPQotICAgICAgICAgICAgICAgICAgICAgIChkYXRhMzIgKyAoKHkg KyBzdWJpbWdfdG9wKSAqIHdpZHRoCi0JCQkJICsgeCArIHN1YmltZ19sZWZ0KSk7Ci0gICAgICAg ICAgICAgICAgICAgIGludCByID0gZ2lmX2NvbG9yX21hcC0+Q29sb3JzW2NdLlJlZDsKLSAgICAg ICAgICAgICAgICAgICAgaW50IGcgPSBnaWZfY29sb3JfbWFwLT5Db2xvcnNbY10uR3JlZW47Ci0g ICAgICAgICAgICAgICAgICAgIGludCBiID0gZ2lmX2NvbG9yX21hcC0+Q29sb3JzW2NdLkJsdWU7 Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc3BhcmVuY3lfY29sb3JfaW5kZXggIT0gYykK LSAgICAgICAgICAgICAgICAgICAgICAqZGF0YXB0ciA9ICgweGZmdSA8PCAyNCkgfCAociA8PCAx NikgfCAoZyA8PCA4KSB8IGI7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICBYUHV0UGl4ZWwg KHhpbWcsIHggKyBzdWJpbWdfbGVmdCwgeSArIHN1YmltZ190b3AsCisgICAgICAgICAgICAgICAg ICAgIFBVVF9QSVhFTCAoeGltZywgeCArIHN1YmltZ19sZWZ0LCB5ICsgc3ViaW1nX3RvcCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF9jb2xvcnNbY10pOwotI2VuZGlmCiAg ICAgICAgICAgICAgICAgICB9CiAJICAgICAgfQogCX0KQEAgLTgwNjQsOSArODA3OCw2IEBAIGdp Zl9sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogI2VuZGlmCiAgICAg fQogCi0jaWZkZWYgVVNFX0NBSVJPCi0gIHNldF9jYWlyb19pbWFnZV9zdXJmYWNlIChpbWcsIHN1 cmZhY2UpOwotI2Vsc2UKICAgLyogTWF5YmUgZmlsbCBpbiB0aGUgYmFja2dyb3VuZCBmaWVsZCB3 aGlsZSB3ZSBoYXZlIHhpbWcgaGFuZHkuICovCiAgIGlmIChOSUxQIChpbWFnZV9zcGVjX3ZhbHVl IChpbWctPnNwZWMsIFFDYmFja2dyb3VuZCwgTlVMTCkpKQogICAgIC8qIENhc3RpbmcgYXZvaWRz IGEgR0NDIHdhcm5pbmcuICAqLwpAQCAtODA3NCw3ICs4MDg1LDYgQEAgZ2lmX2xvYWQgKHN0cnVj dCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAKICAgLyogUHV0IHhpbWcgaW50byB0aGUg aW1hZ2UuICAqLwogICBpbWFnZV9wdXRfeF9pbWFnZSAoZiwgaW1nLCB4aW1nLCAwKTsKLSNlbmRp ZgogCiAgIHJldHVybiAxOwogfQpAQCAtODQ1Myw5ICs4NDYzLDcgQEAgaW1hZ2VtYWdpY2tfbG9h ZF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKICAgaW50IHdpZHRo LCBoZWlnaHQ7CiAgIHNpemVfdCBpbWFnZV93aWR0aCwgaW1hZ2VfaGVpZ2h0OwogICBNYWdpY2tC b29sZWFuVHlwZSBzdGF0dXM7Ci0jaWZuZGVmIFVTRV9DQUlSTwogICBFbWFjc19QaXhfQ29udGFp bmVyIHhpbWc7Ci0jZW5kaWYKICAgaW50IHgsIHk7CiAgIE1hZ2lja1dhbmQgKmltYWdlX3dhbmQ7 CiAgIFBpeGVsSXRlcmF0b3IgKml0ZXJhdG9yOwpAQCAtODQ2OSw5ICs4NDc3LDYgQEAgaW1hZ2Vt YWdpY2tfbG9hZF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKICAg ZG91YmxlIHJvdGF0aW9uOwogICBjaGFyIGhpbnRfYnVmZmVyW01heFRleHRFeHRlbnRdOwogICBj aGFyICpmaWxlbmFtZV9oaW50ID0gTlVMTDsKLSNpZmRlZiBVU0VfQ0FJUk8KLSAgY2Fpcm9fc3Vy ZmFjZV90ICpzdXJmYWNlOwotI2VuZGlmCiAKICAgLyogSW5pdGlhbGl6ZSB0aGUgSW1hZ2VNYWdp Y2sgZW52aXJvbm1lbnQuICAqLwogICBzdGF0aWMgYm9vbCBpbWFnZW1hZ2lja19pbml0aWFsaXpl ZDsKQEAgLTg2ODUsMTEgKzg2OTAsNiBAQCBpbWFnZW1hZ2lja19sb2FkX2ltYWdlIChzdHJ1Y3Qg ZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLAogICAgICAgICAgbWV0aG9kIGlzIGFsc28gd2Vs bCB0ZXN0ZWQuICBTb21lIGFzcGVjdHMgb2YgdGhpcyBtZXRob2QgYXJlCiAgICAgICAgICBhZC1o b2MgYW5kIG5lZWRzIHRvIGJlIG1vcmUgcmVzZWFyY2hlZC4gKi8KICAgICAgIHZvaWQgKmRhdGFw dHI7Ci0jaWZkZWYgVVNFX0NBSVJPCi0gICAgICBzdXJmYWNlID0gY3JlYXRlX2NhaXJvX2ltYWdl X3N1cmZhY2UgKHdpZHRoLCBoZWlnaHQpOwotICAgICAgY29uc3QgY2hhciAqZXhwb3J0ZGVwdGgg PSAiQkdSQSI7Ci0gICAgICBkYXRhcHRyID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YSAo c3VyZmFjZSk7Ci0jZWxzZQogICAgICAgaW50IGltYWdlZGVwdGggPSAyNDsgLypNYWdpY2tHZXRJ bWFnZURlcHRoKGltYWdlX3dhbmQpOyovCiAgICAgICBjb25zdCBjaGFyICpleHBvcnRkZXB0aCA9 IGltYWdlZGVwdGggPD0gOCA/ICJJIiA6ICJCR1JQIjsgLyoiUkdCUCI7Ki8KICAgICAgIC8qIFRy eSB0byBjcmVhdGUgYSB4IHBpeG1hcCB0byBob2xkIHRoZSBpbWFnZW1hZ2ljayBwaXhtYXAuICAq LwpAQCAtODcwMyw3ICs4NzAzLDYgQEAgaW1hZ2VtYWdpY2tfbG9hZF9pbWFnZSAoc3RydWN0IGZy YW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKIAkgIGdvdG8gaW1hZ2VtYWdpY2tfZXJyb3I7CiAJ fQogICAgICAgZGF0YXB0ciA9IHhpbWctPmRhdGE7Ci0jZW5kaWYgLyogbm90IFVTRV9DQUlSTyAq LwogCiAgICAgICAvKiBPZGRseSwgdGhlIGJlbG93IGNvZGUgZG9lc24ndCBzZWVtIHRvIHdvcms6 Ki8KICAgICAgIC8qIHN3aXRjaCh4aW1nLT5iaXRtYXBfdW5pdCl7ICovCkBAIC04NzM0LDExICs4 NzMzLDYgQEAgaW1hZ2VtYWdpY2tfbG9hZF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3Qg aW1hZ2UgKmltZywKICAgICAgIHNpemVfdCBpbWFnZV9oZWlnaHQ7CiAgICAgICBkb3VibGUgcXVh bnR1bV9yYW5nZSA9IFF1YW50dW1SYW5nZTsKICAgICAgIE1hZ2lja1JlYWxUeXBlIGNvbG9yX3Nj YWxlID0gNjU1MzUuMCAvIHF1YW50dW1fcmFuZ2U7Ci0jaWZkZWYgVVNFX0NBSVJPCi0gICAgICBz dXJmYWNlID0gY3JlYXRlX2NhaXJvX2ltYWdlX3N1cmZhY2UgKHdpZHRoLCBoZWlnaHQpOwotICAg ICAgdWludDMyX3QgKmRhdGFwdHIgPSAodWludDMyX3QgKikgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n ZXRfZGF0YSAoc3VyZmFjZSk7Ci0gICAgICBjb2xvcl9zY2FsZSAvPSAyNTY7Ci0jZWxzZQogICAg ICAgLyogVHJ5IHRvIGNyZWF0ZSBhIHggcGl4bWFwIHRvIGhvbGQgdGhlIGltYWdlbWFnaWNrIHBp eG1hcC4gICovCiAgICAgICBpZiAoIWltYWdlX2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYs IGltZywgd2lkdGgsIGhlaWdodCwgMCwKIAkJCQkJICAgICZ4aW1nLCAwKSkKQEAgLTg3NDksNyAr ODc0Myw2IEBAIGltYWdlbWFnaWNrX2xvYWRfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0 IGltYWdlICppbWcsCiAgICAgICAgICAgaW1hZ2VfZXJyb3IgKCJJbWFnZW1hZ2ljayBYIGJpdG1h cCBhbGxvY2F0aW9uIGZhaWx1cmUiKTsKICAgICAgICAgICBnb3RvIGltYWdlbWFnaWNrX2Vycm9y OwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgLyogQ29weSBpbWFnZW1hZ2ljayBpbWFnZSB0 byB4IHdpdGggcHJpbWl0aXZlIHlldCByb2J1c3QgcGl4ZWwKICAgICAgICAgIHB1c2hlciBsb29w LiAgVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgYSBsb3Qgd2l0aCBtYW55IGRpZmZlcmVudApAQCAtODc2 Miw5ICs4NzU1LDcgQEAgaW1hZ2VtYWdpY2tfbG9hZF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBz dHJ1Y3QgaW1hZ2UgKmltZywKICNpZmRlZiBDT0xPUl9UQUJMRV9TVVBQT1JUCiAJICBmcmVlX2Nv bG9yX3RhYmxlICgpOwogI2VuZGlmCi0jaWZuZGVmIFVTRV9DQUlSTwogCSAgaW1hZ2VfZGVzdHJv eV94X2ltYWdlICh4aW1nKTsKLSNlbmRpZgogICAgICAgICAgIGltYWdlX2Vycm9yICgiSW1hZ2Vt YWdpY2sgcGl4ZWwgaXRlcmF0b3IgY3JlYXRpb24gZmFpbGVkIik7CiAgICAgICAgICAgZ290byBp bWFnZW1hZ2lja19lcnJvcjsKICAgICAgICAgfQpAQCAtODc4MCwyNyArODc3MSwxNiBAQCBpbWFn ZW1hZ2lja19sb2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLAog CSAgZm9yICh4ID0gMDsgeCA8IHhsaW07IHgrKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgUGl4ZWxHZXRNYWdpY2tDb2xvciAocGl4ZWxzW3hdLCAmcGl4ZWwpOwotI2lmZGVmIFVTRV9D QUlSTwotCSAgICAgIGRhdGFwdHJbd2lkdGggKiB5ICsgeF0gPQotCQlsb29rdXBfcmdiX2NvbG9y IChmLAotCQkJCSAgY29sb3Jfc2NhbGUgKiBwaXhlbC5yZWQsCi0JCQkJICBjb2xvcl9zY2FsZSAq IHBpeGVsLmdyZWVuLAotCQkJCSAgY29sb3Jfc2NhbGUgKiBwaXhlbC5ibHVlKTsKLSNlbHNlCi0g ICAgICAgICAgICAgIFhQdXRQaXhlbCAoeGltZywgeCwgeSwKKyAgICAgICAgICAgICAgUFVUX1BJ WEVMICh4aW1nLCB4LCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cF9yZ2JfY29s b3IgKGYsCiAJCQkJCSAgIGNvbG9yX3NjYWxlICogcGl4ZWwucmVkLAogCQkJCQkgICBjb2xvcl9z Y2FsZSAqIHBpeGVsLmdyZWVuLAogCQkJCQkgICBjb2xvcl9zY2FsZSAqIHBpeGVsLmJsdWUpKTsK LSNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICBEZXN0cm95UGl4ZWxJdGVy YXRvciAoaXRlcmF0b3IpOwogICAgIH0KIAotI2lmZGVmIFVTRV9DQUlSTwotICBzZXRfY2Fpcm9f aW1hZ2Vfc3VyZmFjZSAoaW1nLCBzdXJmYWNlKTsKLSNlbHNlCiAjaWZkZWYgQ09MT1JfVEFCTEVf U1VQUE9SVAogICAvKiBSZW1lbWJlciBjb2xvcnMgYWxsb2NhdGVkIGZvciB0aGlzIGltYWdlLiAg Ki8KICAgaW1nLT5jb2xvcnMgPSBjb2xvcnNfaW5fY29sb3JfdGFibGUgKCZpbWctPm5jb2xvcnMp OwpAQCAtODgxMiw3ICs4NzkyLDYgQEAgaW1hZ2VtYWdpY2tfbG9hZF9pbWFnZSAoc3RydWN0IGZy YW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywKIAogICAvKiBQdXQgeGltZyBpbnRvIHRoZSBpbWFn ZS4gICovCiAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOwotI2VuZGlmCiAK ICAgLyogRmluYWwgY2xlYW51cC4gaW1hZ2Vfd2FuZCBzaG91bGQgYmUgdGhlIG9ubHkgcmVzb3Vy Y2UgbGVmdC4gKi8KICAgRGVzdHJveU1hZ2lja1dhbmQgKGltYWdlX3dhbmQpOwpAQCAtOTI1Nywz MyArOTIzNiw2IEBAIHN2Z19sb2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFn ZSAqaW1nLCBjaGFyICpjb250ZW50cywKICAgZWFzc2VydCAoZ2RrX3BpeGJ1Zl9nZXRfYml0c19w ZXJfc2FtcGxlIChwaXhidWYpID09IDgpOwogCiAgIHsKLSNpZmRlZiBVU0VfQ0FJUk8KLSAgICBj YWlyb19zdXJmYWNlX3QgKnN1cmZhY2UgPSBjcmVhdGVfY2Fpcm9faW1hZ2Vfc3VyZmFjZSAod2lk dGgsIGhlaWdodCk7Ci0gICAgdWludDMyX3QgKmRhdGFwdHIgPSAodWludDMyX3QgKikgY2Fpcm9f aW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YSAoc3VyZmFjZSk7Ci0gICAgdWludDMyX3QgYmdjb2xvciA9 IGdldF9zcGVjX2JnX29yX2FscGhhX2FzX2FyZ2IgKGltZywgZik7Ci0KLSAgICBmb3IgKGludCB5 ID0gMDsgeSA8IGhlaWdodDsgKyt5KQotICAgICAgewotICAgICAgICBjb25zdCBndWNoYXIgKmlj b25wdHIgPSBwaXhlbHMgKyB5ICogcm93c3RyaWRlOwotCi0gICAgICAgIGZvciAoaW50IHggPSAw OyB4IDwgd2lkdGg7ICsreCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaWNvbnB0clsz XSA9PSAwKQotICAgICAgICAgICAgICAqZGF0YXB0ciA9IGJnY29sb3I7Ci0gICAgICAgICAgICBl bHNlCi0gICAgICAgICAgICAgICpkYXRhcHRyID0gKGljb25wdHJbMF0gPDwgMTYpCi0gICAgICAg ICAgICAgICAgfCAoaWNvbnB0clsxXSA8PCA4KQotICAgICAgICAgICAgICAgIHwgaWNvbnB0clsy XQotICAgICAgICAgICAgICAgIHwgKGljb25wdHJbM10gPDwgMjQpOwotCi0gICAgICAgICAgICBp Y29ucHRyICs9IDQ7Ci0gICAgICAgICAgICArK2RhdGFwdHI7Ci0gICAgICAgICAgfQotICAgICAg fQotCi0gICAgc2V0X2NhaXJvX2ltYWdlX3N1cmZhY2UgKGltZywgc3VyZmFjZSk7Ci0gICAgZ19v YmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0jZWxzZQogICAgIC8qIFRyeSB0byBjcmVhdGUgYSB4IHBp eG1hcCB0byBob2xkIHRoZSBzdmcgcGl4bWFwLiAgKi8KICAgICBFbWFjc19QaXhfQ29udGFpbmVy IHhpbWc7CiAgICAgaWYgKCFpbWFnZV9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwIChmLCBpbWcs IHdpZHRoLCBoZWlnaHQsIDAsICZ4aW1nLCAwKSkKQEAgLTkzMzMsNyArOTI4NSw3IEBAIHN2Z19s b2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBjaGFyICpjb250 ZW50cywKIAkgICAgYmx1ZSAgPSAoKGJsdWUgKiBvcGFjaXR5KQogCQkgICAgICsgKGJhY2tncm91 bmQuYmx1ZSAqICgoMSA8PCA4KSAtIG9wYWNpdHkpKSk7CiAKLQkgICAgWFB1dFBpeGVsICh4aW1n LCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByZWQsIGdyZWVuLCBibHVlKSk7CisJICAgIFBV VF9QSVhFTCAoeGltZywgeCwgeSwgbG9va3VwX3JnYl9jb2xvciAoZiwgcmVkLCBncmVlbiwgYmx1 ZSkpOwogCSAgfQogCiAJcGl4ZWxzICs9IHJvd3N0cmlkZSAtIDQgKiB3aWR0aDsKQEAgLTkzNTYs NyArOTMwOCw2IEBAIHN2Z19sb2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFn ZSAqaW1nLCBjaGFyICpjb250ZW50cywKIAogICAgIC8qIFB1dCB4aW1nIGludG8gdGhlIGltYWdl LiAgKi8KICAgICBpbWFnZV9wdXRfeF9pbWFnZSAoZiwgaW1nLCB4aW1nLCAwKTsKLSNlbmRpZiAv KiAhIFVTRV9DQUlSTyAqLwogICB9CiAKICAgcmV0dXJuIDE7CkBAIC05Mzc5LDkgKzkzMzAsOSBA QCBzdmdfbG9hZF9pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywgY2hh ciAqY29udGVudHMsCiAJCQkJR2hvc3RzY3JpcHQKICAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotI2lmZGVm IEhBVkVfWF9XSU5ET1dTCisjaWYgZGVmaW5lZCBIQVZFX1hfV0lORE9XUyAmJiAhZGVmaW5lZCBV U0VfQ0FJUk8KICNkZWZpbmUgSEFWRV9HSE9TVFNDUklQVCAxCi0jZW5kaWYgLyogSEFWRV9YX1dJ TkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX1hfV0lORE9XUyAmJiAhVVNFX0NBSVJPICovCiAKICNp ZmRlZiBIQVZFX0dIT1NUU0NSSVBUCiAKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0 ZXJtLmMKaW5kZXggNTU5ZDFiNDg5MjQuLjAzNDU4Y2IwM2Y2IDEwMDY0NAotLS0gYS9zcmMveHRl cm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtNzc5NCwxMiArNzc5NCwxNCBAQCBoYW5kbGVfb25l X3hldmVudCAoc3RydWN0IHhfZGlzcGxheV9pbmZvICpkcHlpbmZvLAogICAgICAgICAgICAgICAg cmVwbHkgd2l0aCAiTmV4dCIgaWYgd2UgcmVjZWl2ZWQgIlBhZ2UiLCBidXQgd2UKICAgICAgICAg ICAgICAgIGN1cnJlbnRseSBuZXZlciBkbyBiZWNhdXNlIHdlIGFyZSBpbnRlcmVzdGVkIGluCiAg ICAgICAgICAgICAgICBpbWFnZXMsIG9ubHksIHdoaWNoIHNob3VsZCBoYXZlIDEgcGFnZS4gICov Ci0gICAgICAgICAgICBQaXhtYXAgcGl4bWFwID0gKFBpeG1hcCkgZXZlbnQtPnhjbGllbnQuZGF0 YS5sWzFdOwogCSAgICBmID0geF93aW5kb3dfdG9fZnJhbWUgKGRweWluZm8sIGV2ZW50LT54Y2xp ZW50LndpbmRvdyk7CiAJICAgIGlmICghZikKIAkgICAgICBnb3RvIE9USEVSOworI2lmbmRlZiBV U0VfQ0FJUk8KKyAgICAgICAgICAgIFBpeG1hcCBwaXhtYXAgPSAoUGl4bWFwKSBldmVudC0+eGNs aWVudC5kYXRhLmxbMV07CiAgICAgICAgICAgICB4X2tpbGxfZ3NfcHJvY2VzcyAocGl4bWFwLCBm KTsKICAgICAgICAgICAgIGV4cG9zZV9mcmFtZSAoZiwgMCwgMCwgMCwgMCk7CisjZW5kaWYJLyog IVVTRV9DQUlSTyAqLwogCSAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgfQogCkBAIC0xMjE1NCw3 ICsxMjE1NiwxNSBAQCB4X2NoZWNrX2ZvbnQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGZvbnQg KmZvbnQpCiBzdGF0aWMgdm9pZAogeF9mcmVlX3BpeG1hcCAoc3RydWN0IGZyYW1lICpmLCBFbWFj c19QaXhtYXAgcGl4bWFwKQogeworI2lmZGVmIFVTRV9DQUlSTworICBpZiAocGl4bWFwKQorICAg IHsKKyAgICAgIHhmcmVlIChwaXhtYXAtPmRhdGEpOworICAgICAgeGZyZWUgKHBpeG1hcCk7Cisg ICAgfQorI2Vsc2UKICAgWEZyZWVQaXhtYXAgKEZSQU1FX1hfRElTUExBWSAoZiksIHBpeG1hcCk7 CisjZW5kaWYKIH0KIAogDAo= --Multipart_Tue_May_28_09:52:24_2019-1--