From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: RFC: flicker-free double-buffered Emacs under X11 Date: Thu, 27 Oct 2016 15:18:38 -0700 Organization: UCLA Computer Science Department Message-ID: <1706d8c5-118b-7d68-bd25-1f95b1787aa2@cs.ucla.edu> References: <9e8ad090-a6a0-c807-95ae-7ec7c3f391cb@dancol.org> <83k2d2rssf.fsf@gnu.org> <831sz9sime.fsf@gnu.org> <83y41hqz94.fsf@gnu.org> <838tte5fzq.fsf@gnu.org> <740d34db48a1e4b711cb1cfa987423c9.squirrel@dancol.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------70E0DB32F892B570E99409C9" X-Trace: blaine.gmane.org 1477606767 7242 195.159.176.226 (27 Oct 2016 22:19:27 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 27 Oct 2016 22:19:27 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 Cc: emacs-devel@gnu.org To: Daniel Colascione Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Oct 28 00:19:23 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bzt0j-0006hK-0z for ged-emacs-devel@m.gmane.org; Fri, 28 Oct 2016 00:18:57 +0200 Original-Received: from localhost ([::1]:44858 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bzt0l-0000fb-Jv for ged-emacs-devel@m.gmane.org; Thu, 27 Oct 2016 18:18:59 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bzt0Z-0000eI-Cl for emacs-devel@gnu.org; Thu, 27 Oct 2016 18:18:48 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bzt0W-0004JC-3s for emacs-devel@gnu.org; Thu, 27 Oct 2016 18:18:47 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:53498) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bzt0V-0004ID-HN for emacs-devel@gnu.org; Thu, 27 Oct 2016 18:18:44 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E2888161064; Thu, 27 Oct 2016 15:18:41 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id lYTmB_7PwOhc; Thu, 27 Oct 2016 15:18:39 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 42F38161073; Thu, 27 Oct 2016 15:18:39 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id CZnLw7m3UJxK; Thu, 27 Oct 2016 15:18:39 -0700 (PDT) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 0B82B161064; Thu, 27 Oct 2016 15:18:39 -0700 (PDT) In-Reply-To: <740d34db48a1e4b711cb1cfa987423c9.squirrel@dancol.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:208899 Archived-At: This is a multi-part message in MIME format. --------------70E0DB32F892B570E99409C9 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for working on this. I tried building with that patch, and had problems because your email client munged the patch. I cleaned it up by hand and arrived at the attached patch instead. (It needs a better commit message of course.) Maybe next time you could attach the output of git-format-patch. Although the resulting system builds under Fedora 24 x86-64 with GTK, I can't tell any difference in flickering. I don't see much flicker without the patch, or with it. (I am using X, not Wayland.) Maybe my eyes are not good enough.... I don't see the need to expose double-buffering to Lisp via x-double-buffered-p or inhibit-double-buffering. Unless there's a demonstrated need, I'd remove these from the Lisp interface, to simplify it. The configure.ac change should use AC_CACHE_CHECK. set_up_x_back_buffer should be a static function, since it's not used outside its module. In C code we typically use comment /* like this */, not // like this. Also, the spacing for pointer decls is typically 'type *id', not 'type * id' or 'type* id'. You can assume C99 for loop control, e.g., 'for (int i = 0; i < n; i++) ...'. Thanks again. --------------70E0DB32F892B570E99409C9 Content-Type: application/x-patch; name="0001-flicker-free-double-buffering.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-flicker-free-double-buffering.patch" RnJvbSAyNzY2MThhOGExNzhlMjJjY2U2YTZkMDY3ZDgxMDEzNWFhMGIxNzFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQ29sYXNjaW9uZSA8ZGFuY29sQGRhbmNv bC5vcmc+CkRhdGU6IFRodSwgMjcgT2N0IDIwMTYgMTU6MDQ6MTYgLTA3MDAKU3ViamVjdDog W1BBVENIXSBmbGlja2VyLWZyZWUgZG91YmxlIGJ1ZmZlcmluZwoKLS0tCiBjb25maWd1cmUu YWMgICAgICAgICAgICB8ICAxOCArKysrKwogZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkgfCAg MTMgKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAgfCAgIDYgKysKIHNyYy9NYWtlZmls ZS5pbiAgICAgICAgIHwgICA2ICstCiBzcmMvZGlzcG5ldy5jICAgICAgICAgICB8ICAgMiAr CiBzcmMvZm9udC5jICAgICAgICAgICAgICB8ICAxMCArKysKIHNyYy9mb250LmggICAgICAg ICAgICAgIHwgICA5ICsrKwogc3JjL2ZyYW1lLmMgICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2ZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogc3JjL2Z0eGZvbnQuYyAgICAgICAgICAg fCAgMTQgKystLQogc3JjL2d0a3V0aWwuYyAgICAgICAgICAgfCAxNjUgKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW1hZ2UuYyAgICAgICAgICAgICB8 ICAyMCArKy0tLQogc3JjL25zZm5zLm0gICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlcm1o b29rcy5oICAgICAgICAgfCAgIDcgKy0KIHNyYy93MzJmbnMuYyAgICAgICAgICAgIHwgICAx ICsKIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgIDMzICsrKysrKystCiBzcmMveGZhY2Vz LmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL3hmbnMuYyAgICAgICAgICAgICAgfCAxMjAg KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3hmb250LmMgICAgICAgICAgICAg fCAgMTYgKystLQogc3JjL3hmdGZvbnQuYyAgICAgICAgICAgfCAgMjQgKysrKy0tCiBzcmMv eHRlcm0uYyAgICAgICAgICAgICB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy94dGVybS5oICAgICAgICAgICAgIHwgIDIyICsr KysrKwogMjIgZmlsZXMgY2hhbmdlZCwgNTEyIGluc2VydGlvbnMoKyksIDE4NSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXgg NDZmZDQzNC4uZjY3ZmU4MyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZp Z3VyZS5hYwpAQCAtMzcxMiw2ICszNzEyLDI0IEBAIGZpCiBBQ19TVUJTVChYRklYRVNfQ0ZM QUdTKQogQUNfU1VCU1QoWEZJWEVTX0xJQlMpCiAKKyMjIyBVc2UgWGRiZSAoLWxYZGJlKSBp ZiBhdmFpbGFibGUKK0hBVkVfWERCRT1ubworaWYgdGVzdCAiJHtIQVZFX1gxMX0iID0gInll cyI7IHRoZW4KKyAgQUNfQ0hFQ0tfSEVBREVSKFgxMS9leHRlbnNpb25zL1hkYmUuaCwKKyAg ICBbQUNfQ0hFQ0tfTElCKFhleHQsIFhkYmVBbGxvY2F0ZUJhY2tCdWZmZXJOYW1lLCBIQVZF X1hEQkU9eWVzKV0sCisgICAgW10sCisgICAgWyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorICAg IF0pCisgIGlmIHRlc3QgJEhBVkVfWERCRSA9IHllczsgdGhlbgorICAgIFhEQkVfTElCUz0t bFhleHQKKyAgZmkKKyAgaWYgdGVzdCAkSEFWRV9YREJFID0geWVzOyB0aGVuCisgICAgQUNf REVGSU5FKEhBVkVfWERCRSwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBYZGJl IGV4dGVuc2lvbi5dKQorICBmaQorZmkKK0FDX1NVQlNUKFhEQkVfQ0ZMQUdTKQorQUNfU1VC U1QoWERCRV9MSUJTKQorCiAjIyMgVXNlIGxpYnhtbCAoLWx4bWwyKSBpZiBhdmFpbGFibGUK ICMjIyBtaW5ndzMyIGRvZXNuJ3QgdXNlIC1seG1sMiwgc2luY2UgaXQgbG9hZHMgdGhlIGxp YnJhcnkgZHluYW1pY2FsbHkuCiBIQVZFX0xJQlhNTDI9bm8KZGlmZiAtLWdpdCBhL2RvYy9s aXNwcmVmL2ZyYW1lcy50ZXhpIGIvZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkKaW5kZXggNzcz NjQzOC4uOTBmOGUzNSAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkKKysr IGIvZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkKQEAgLTE1MzksNiArMTUzOSwxMyBAQCBwcmV2 ZW50IGhhbmdpbmcgd2l0aCB0aG9zZSB3aW5kb3cgbWFuYWdlcnMuCiBJZiBub24tQGNvZGV7 bmlsfSwgdGhlIGZyYW1lIGlzIHZpc2libGUgb24gYWxsIHZpcnR1YWwgZGVza3RvcHMgb24g c3lzdGVtcwogd2l0aCB2aXJ0dWFsIGRlc2t0b3BzLgogCitAdmluZGV4IGluaGliaXQtZG91 YmxlLWJ1ZmZlcmluZywgYSBmcmFtZSBwYXJhbWV0ZXIKK0BpdGVtIGluaGliaXQtZG91Ymxl LWJ1ZmZlcmluZworSWYgbm9uLUBjb2Rle25pbH0sIHRoZSBmcmFtZSBpcyBkcmF3biB0byB0 aGUgc2NyZWVuIHdpdGhvdXQgZG91YmxlIGJ1ZmZlcmluZy4KK0VtYWNzIG5vcm1hbGx5IGF0 dGVtcHRzIHRvIHVzZSBkb3VibGUgYnVmZmVyaW5nLCB3aGVyZSBhdmFpbGFibGUsIHRvCity ZWR1Y2UgZmxpY2tlci4gIFNldCB0aGlzIHByb3BlcnR5IGlmIHlvdSBleHBlcmllbmNlIGRp c3BsYXkgYnVncyBvcgorcGluZSBmb3IgdGhhdCByZXRybywgZmxpY2tlci15IGZlZWxpbmcu CisKIEBpZ25vcmUKIEB2aW5kZXggcGFyZW50LWlkLCBhIGZyYW1lIHBhcmFtZXRlcgogQGl0 ZW0gcGFyZW50LWlkCkBAIC0yMjEwLDYgKzIyMTcsMTIgQEAgd2luZG93IG1hbmFnZXIuICBU aGlzIGhhcHBlbnMgYmVsb3cgdGhlIGxldmVsIGF0IHdoaWNoIEVtYWNzIGNhbiBleGVydAog YW55IGNvbnRyb2wsIGJ1dCBFbWFjcyBkb2VzIHByb3ZpZGUgZXZlbnRzIHRoYXQgeW91IGNh biB1c2UgdG8ga2VlcAogdHJhY2sgb2Ygc3VjaCBjaGFuZ2VzLiAgQHhyZWZ7TWlzYyBFdmVu dHN9LgogCitAZGVmdW4geC1kb3VibGUtYnVmZmVyZWQtcCAmb3B0aW9uYWwgZnJhbWUKK1Ro aXMgZnVuY3Rpb24gcmV0dXJucyBub24tQGNvZGV7bmlsfSBpZiBAdmFye2ZyYW1lfSBpcyBj dXJyZW50bHkKK2JlaW5nIHJlbmRlcmVkIHdpdGggZG91YmxlIGJ1ZmZlcmluZy4gIEB2YXJ7 ZnJhbWV9IGRlZmF1bHRzIHRvIHRoZQorc2VsZWN0ZWQgZnJhbWUuCitAZW5kIGRlZnVuCisK IEBub2RlIFJhaXNpbmcgYW5kIExvd2VyaW5nCiBAc2VjdGlvbiBSYWlzaW5nIGFuZCBMb3dl cmluZyBGcmFtZXMKIApkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBh ZGRkMDU2Li5lMjlkZmUyIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpA QCAtNjYsNiArNjYsMTIgQEAgYWZmZWN0ZWQgYnkgdGhpcywgYXMgU0dJIHN0b3BwZWQgc3Vw cG9ydGluZyBJUklYIGluIERlY2VtYmVyIDIwMTMuCiBvZiBjdXJ2ZWQgcXVvdGVzIGZvciAn ZWxlY3RyaWMtcXVvdGUtbW9kZScsIGFsbG93aW5nIHVzZXIgdG8gY2hvb3NlCiB0aGUgdHlw ZXMgb2YgcXVvdGVzIHRvIGJlIHVzZWQuCiAKKysrKworKiogRW1hY3Mgbm93IHVzZXMgZG91 YmxlIGJ1ZmZlcmluZyB0byByZWR1Y2UgZmxpY2tlciB3aGVuIGVkaXRpbmcgYW5kCityZXNp emluZyBncmFwaGljYWwgRW1hY3MgZnJhbWVzIG9uIHRoZSBYIFdpbmRvdyBTeXN0ZW0uICBU aGlzIHN1cHBvcnQKK3JlcXVpcmVzIHRoZSBET1VCTEUtQlVGRkVSIGV4dGVuc2lvbiwgd2hp Y2ggbWFqb3IgWCBzZXJ2ZXJzIGhhdmUKK3N1cHBvcnRlZCBmb3IgbWFueSB5ZWFycy4KKwog LS0tCiBUaGUgZ3JvdXAgJ3dwJywgd2hvc2UgbGFiZWwgd2FzICJ0ZXh0IiwgaXMgbm93IGRl cHJlY2F0ZWQuCiBVc2UgdGhlIG5ldyBncm91cCAndGV4dCcsIHdoaWNoIGluaGVyaXRzIGZy b20gJ3dwJywgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9N YWtlZmlsZS5pbgppbmRleCA4OWY3YTkyLi5kYzBiZmZmIDEwMDY0NAotLS0gYS9zcmMvTWFr ZWZpbGUuaW4KKysrIGIvc3JjL01ha2VmaWxlLmluCkBAIC0yNTQsNiArMjU0LDkgQEAgWElO RVJBTUFfQ0ZMQUdTID0gQFhJTkVSQU1BX0NGTEFHU0AKIFhGSVhFU19MSUJTID0gQFhGSVhF U19MSUJTQAogWEZJWEVTX0NGTEFHUyA9IEBYRklYRVNfQ0ZMQUdTQAogCitYREJFX0xJQlMg PSBAWERCRV9MSUJTQAorWERCRV9DRkxBR1MgPSBAWERCRV9DRkxBR1NACisKICMjIHdpZGdl dC5vIGlmIFVTRV9YX1RPT0xLSVQsIG90aGVyd2lzZSBlbXB0eS4KIFdJREdFVF9PQko9QFdJ REdFVF9PQkpACiAKQEAgLTM3Miw3ICszNzUsNyBAQCBBTExfQ0ZMQUdTPS1EZW1hY3MgJChN WUNQUEZMQUdTKSAtSS4gLUkkKHNyY2RpcikgXAogICAkKENfU1dJVENIX01BQ0hJTkUpICQo Q19TV0lUQ0hfU1lTVEVNKSAkKENfU1dJVENIX1hfU0lURSkgXAogICAkKEdOVVNURVBfQ0ZM QUdTKSAkKENGTEFHU19TT1VORCkgJChSU1ZHX0NGTEFHUykgJChJTUFHRU1BR0lDS19DRkxB R1MpIFwKICAgJChQTkdfQ0ZMQUdTKSAkKExJQlhNTDJfQ0ZMQUdTKSAkKERCVVNfQ0ZMQUdT KSBcCi0gICQoWFJBTkRSX0NGTEFHUykgJChYSU5FUkFNQV9DRkxBR1MpICQoWEZJWEVTX0NG TEFHUykgXAorICAkKFhSQU5EUl9DRkxBR1MpICQoWElORVJBTUFfQ0ZMQUdTKSAkKFhGSVhF U19DRkxBR1MpICQoWERCRV9DRkxBR1MpIFwKICAgJChXRUJLSVRfQ0ZMQUdTKSBcCiAgICQo U0VUVElOR1NfQ0ZMQUdTKSAkKEZSRUVUWVBFX0NGTEFHUykgJChGT05UQ09ORklHX0NGTEFH UykgXAogICAkKExJQk9URl9DRkxBR1MpICQoTTE3Tl9GTFRfQ0ZMQUdTKSAkKERFUEZMQUdT KSBcCkBAIC00ODksNiArNDkyLDcgQEAgTElCRVMgPSAkKExJQlMpICQoVzMyX0xJQlMpICQo TElCU19HTlVTVEVQKSAkKExJQlhfQkFTRSkgJChMSUJJTUFHRSkgXAogICAgJChXRUJLSVRf TElCUykgXAogICAgJChMSUJfRUFDQ0VTUykgJChMSUJfRkRBVEFTWU5DKSAkKExJQl9USU1F Ul9USU1FKSAkKERCVVNfTElCUykgXAogICAgJChMSUJfRVhFQ0lORk8pICQoWFJBTkRSX0xJ QlMpICQoWElORVJBTUFfTElCUykgJChYRklYRVNfTElCUykgXAorICAgJChYREJFX0xJQlMp IFwKICAgICQoTElCWE1MMl9MSUJTKSAkKExJQkdQTSkgJChMSUJTX1NZU1RFTSkgJChDQUlS T19MSUJTKSBcCiAgICAkKExJQlNfVEVSTUNBUCkgJChHRVRMT0FEQVZHX0xJQlMpICQoU0VU VElOR1NfTElCUykgJChMSUJTRUxJTlVYX0xJQlMpIFwKICAgICQoRlJFRVRZUEVfTElCUykg JChGT05UQ09ORklHX0xJQlMpICQoTElCT1RGX0xJQlMpICQoTTE3Tl9GTFRfTElCUykgXApk aWZmIC0tZ2l0IGEvc3JjL2Rpc3BuZXcuYyBiL3NyYy9kaXNwbmV3LmMKaW5kZXggNzBkNGRl MC4uN2Y1MDEyYSAxMDA2NDQKLS0tIGEvc3JjL2Rpc3BuZXcuYworKysgYi9zcmMvZGlzcG5l dy5jCkBAIC0yOTk5LDYgKzI5OTksOCBAQCByZWRyYXdfZnJhbWUgKHN0cnVjdCBmcmFtZSAq ZikKIHsKICAgLyogRXJyb3IgaWYgRiBoYXMgbm8gZ2x5cGhzLiAgKi8KICAgZWFzc2VydCAo Zi0+Z2x5cGhzX2luaXRpYWxpemVkX3ApOworICBpZiAoZi0+ZG91YmxlX2J1ZmZlcmVkKQor ICAgIGZvbnRfZHJvcF94cmVuZGVyX3N1cmZhY2VzIChmKTsKICAgdXBkYXRlX2JlZ2luIChm KTsKICAgaWYgKEZSQU1FX01TRE9TX1AgKGYpKQogICAgIEZSQU1FX1RFUk1JTkFMIChmKS0+ c2V0X3Rlcm1pbmFsX21vZGVzX2hvb2sgKEZSQU1FX1RFUk1JTkFMIChmKSk7CmRpZmYgLS1n aXQgYS9zcmMvZm9udC5jIGIvc3JjL2ZvbnQuYwppbmRleCBmOGU2Nzk0Li5jZTYzMjMzIDEw MDY0NAotLS0gYS9zcmMvZm9udC5jCisrKyBiL3NyYy9mb250LmMKQEAgLTUyNzUsNiArNTI3 NSwxNiBAQCBmb250X2RlZmVycmVkX2xvZyAoY29uc3QgY2hhciAqYWN0aW9uLCBMaXNwX09i amVjdCBhcmcsIExpc3BfT2JqZWN0IHJlc3VsdCkKIH0KIAogdm9pZAorZm9udF9kcm9wX3hy ZW5kZXJfc3VyZmFjZXMgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAgc3RydWN0IGZvbnRfZHJp dmVyX2xpc3QgKmxpc3Q7CisKKyAgZm9yIChsaXN0ID0gZi0+Zm9udF9kcml2ZXJfbGlzdDsg bGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpCisgICAgaWYgKGxpc3QtPm9uICYmIGxpc3QtPmRy aXZlci0+ZHJvcF94cmVuZGVyX3N1cmZhY2VzKQorICAgICAgbGlzdC0+ZHJpdmVyLT5kcm9w X3hyZW5kZXJfc3VyZmFjZXMgKGYpOworfQorCit2b2lkCiBzeW1zX29mX2ZvbnQgKHZvaWQp CiB7CiAgIHNvcnRfc2hpZnRfYml0c1tGT05UX1RZUEVfSU5ERVhdID0gMDsKZGlmZiAtLWdp dCBhL3NyYy9mb250LmggYi9zcmMvZm9udC5oCmluZGV4IGNmNDc3MjkuLmE1MDgxNTQgMTAw NjQ0Ci0tLSBhL3NyYy9mb250LmgKKysrIGIvc3JjL2ZvbnQuaApAQCAtNzYzLDYgKzc2Mywx MyBAQCBzdHJ1Y3QgZm9udF9kcml2ZXIKICAgICAgUmV0dXJuIG5vbi1uaWwgaWYgdGhlIGRy aXZlciBzdXBwb3J0IHJlbmRlcmluZyBvZiBjb21iaW5pbmcKICAgICAgY2hhcmFjdGVycyBm b3IgRk9OVCBhY2NvcmRpbmcgdG8gVW5pY29kZSBjb21iaW5pbmcgY2xhc3MuICAqLwogICBM aXNwX09iamVjdCAoKmNvbWJpbmluZ19jYXBhYmlsaXR5KSAoc3RydWN0IGZvbnQgKmZvbnQp OworCisgIC8qIE9wdGlvbmFsCisKKyAgICAgQ2FsbGVkIHdoZW4gZnJhbWUgRiBpcyBkb3Vi bGUtYnVmZmVyZWQgYW5kIGl0cyBzaXplIGNoYW5nZXM7IFhmdAorICAgICByZWxpZXMgb24g dGhpcyBob29rIHRvIHRocm93IGF3YXkgaXRzIG9sZCBYZnREcmF3ICh3aGljaCB3b24ndAor ICAgICB3b3JrIGFmdGVyIHRoZSBzaXplIGNoYW5nZSkgYW5kIGdldCBhIG5ldyBvbmUuICAq LworICB2b2lkICgqZHJvcF94cmVuZGVyX3N1cmZhY2VzKSAoc3RydWN0IGZyYW1lICpmKTsK IH07CiAKIApAQCAtODY0LDYgKzg3MSw4IEBAIGV4dGVybiB2b2lkIGZvbnRfZmlsdGVyX3By b3BlcnRpZXMgKExpc3BfT2JqZWN0IGZvbnQsCiAJCQkJICAgIGNvbnN0IGNoYXIgKmNvbnN0 IGJvb2xlYW5fcHJvcGVydGllc1tdLAogCQkJCSAgICBjb25zdCBjaGFyICpjb25zdCBub25f Ym9vbGVhbl9wcm9wZXJ0aWVzW10pOwogCitleHRlcm4gdm9pZCBmb250X2Ryb3BfeHJlbmRl cl9zdXJmYWNlcyAoc3RydWN0IGZyYW1lICpmKTsKKwogI2lmZGVmIEhBVkVfRlJFRVRZUEUK IGV4dGVybiBzdHJ1Y3QgZm9udF9kcml2ZXIgZnRmb250X2RyaXZlcjsKIGV4dGVybiB2b2lk IHN5bXNfb2ZfZnRmb250ICh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9mcmFtZS5jIGIvc3Jj L2ZyYW1lLmMKaW5kZXggZjNhNTQ4Yy4uM2EyZDAwOSAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1l LmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTMxMjgsNiArMzEyOCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSBmcmFtZV9wYXJtc1tdID0KICAgeyJhbHBoYSIs CQkJU1lNQk9MX0lOREVYIChRYWxwaGEpfSwKICAgeyJzdGlja3kiLAkJCVNZTUJPTF9JTkRF WCAoUXN0aWNreSl9LAogICB7InRvb2wtYmFyLXBvc2l0aW9uIiwJCVNZTUJPTF9JTkRFWCAo UXRvb2xfYmFyX3Bvc2l0aW9uKX0sCisgIHsiaW5oaWJpdC1kb3VibGUtYnVmZmVyaW5nIiwg IFNZTUJPTF9JTkRFWCAoUWluaGliaXRfZG91YmxlX2J1ZmZlcmluZyl9LAogfTsKIAogI2lm ZGVmIEhBVkVfV0lORE9XX1NZU1RFTQpAQCAtNTA0NCw2ICs1MDQ1LDcgQEAgc3ltc19vZl9m cmFtZSAodm9pZCkKICAgREVGU1lNIChRdmVydGljYWxfc2Nyb2xsX2JhcnMsICJ2ZXJ0aWNh bC1zY3JvbGwtYmFycyIpOwogICBERUZTWU0gKFF2aXNpYmlsaXR5LCAidmlzaWJpbGl0eSIp OwogICBERUZTWU0gKFF3YWl0X2Zvcl93bSwgIndhaXQtZm9yLXdtIik7CisgIERFRlNZTSAo UWluaGliaXRfZG91YmxlX2J1ZmZlcmluZywgImluaGliaXQtZG91YmxlLWJ1ZmZlcmluZyIp OwogCiAgIHsKICAgICBpbnQgaTsKZGlmZiAtLWdpdCBhL3NyYy9mcmFtZS5oIGIvc3JjL2Zy YW1lLmgKaW5kZXggNWUzZWU2OC4uYTMxOGI0MSAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgK KysrIGIvc3JjL2ZyYW1lLmgKQEAgLTM0Miw2ICszNDIsMTAgQEAgc3RydWN0IGZyYW1lCiAg IC8qIE5vbi16ZXJvIGlmIHRoaXMgZnJhbWUncyBmYWNlcyBuZWVkIHRvIGJlIHJlY29tcHV0 ZWQuICAqLwogICBib29sX2JmIGZhY2VfY2hhbmdlIDogMTsKIAorICAvKiBOb24temVybyBp ZiBmcmFtZSBhY2N1bXVsYXRlcyBkcmF3aW5nIG9wZXJhdGlvbnMgYW5kIGZsdXNoZXMKKyAg ICAgdGhlbSBhbGwgYXQgb25jZS4gICovCisgIGJvb2xfYmYgZG91YmxlX2J1ZmZlcmVkIDog MTsKKwogICAvKiBCaXRmaWVsZCBhcmVhIGVuZHMgaGVyZS4gICovCiAKICAgLyogTnVtYmVy IG9mIGxpbmVzIChyb3VuZGVkIHVwKSBvZiB0b29sIGJhci4gIFJFTU9WRSBUSElTICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2Z0eGZvbnQuYyBiL3NyYy9mdHhmb250LmMKaW5kZXggZjQ5ZDQ0 Zi4uYmZkZWI0MCAxMDA2NDQKLS0tIGEvc3JjL2Z0eGZvbnQuYworKysgYi9zcmMvZnR4Zm9u dC5jCkBAIC05NSw3ICs5NSw3IEBAIGZ0eGZvbnRfZ2V0X2djcyAoc3RydWN0IGZyYW1lICpm LCB1bnNpZ25lZCBsb25nIGZvcmVncm91bmQsIHVuc2lnbmVkIGxvbmcgYmFja2dyCiAgICAg ICBpZiAoISB4X2FsbG9jX25lYXJlc3RfY29sb3IgKGYsIEZSQU1FX1hfQ09MT1JNQVAgKGYp LCAmY29sb3IpKQogCWJyZWFrOwogICAgICAgeGdjdi5mb3JlZ3JvdW5kID0gY29sb3IucGl4 ZWw7Ci0gICAgICBuZXctPmdjc1tpIC0gMV0gPSBYQ3JlYXRlR0MgKEZSQU1FX1hfRElTUExB WSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgICAgIG5ldy0+Z2NzW2kgLSAxXSA9IFhD cmVhdGVHQyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJ CQkJICAgR0NGb3JlZ3JvdW5kLCAmeGdjdik7CiAgICAgfQogICB1bmJsb2NrX2lucHV0ICgp OwpAQCAtMTM5LDE0ICsxMzksMTQgQEAgZnR4Zm9udF9kcmF3X2JpdG1hcCAoc3RydWN0IGZy YW1lICpmLCBHQyBnY19mb3JlLCBHQyAqZ2NzLCBzdHJ1Y3QgZm9udCAqZm9udCwKIAkJcFtu WzBdXS55ID0geSAtIGJpdG1hcC50b3AgKyBpOwogCQlpZiAoKytuWzBdID09IHNpemUpCiAJ CSAgewotCQkgICAgWERyYXdQb2ludHMgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hf V0lORE9XIChmKSwKKyAgICAgICAgICAgICAgICAgICAgWERyYXdQb2ludHMgKEZSQU1FX1hf RElTUExBWSAoZiksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkJCSBnY19mb3JlLCBwLCBz aXplLCBDb29yZE1vZGVPcmlnaW4pOwogCQkgICAgblswXSA9IDA7CiAJCSAgfQogCSAgICAg IH0KIAl9CiAgICAgICBpZiAoZmx1c2ggJiYgblswXSA+IDApCi0JWERyYXdQb2ludHMgKEZS QU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgICAgICAgWERyYXdQ b2ludHMgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkg ICAgIGdjX2ZvcmUsIHAsIG5bMF0sIENvb3JkTW9kZU9yaWdpbik7CiAgICAgfQogICBlbHNl CkBAIC0xNjgsNyArMTY4LDcgQEAgZnR4Zm9udF9kcmF3X2JpdG1hcCAoc3RydWN0IGZyYW1l ICpmLCBHQyBnY19mb3JlLCBHQyAqZ2NzLCBzdHJ1Y3QgZm9udCAqZm9udCwKIAkJICBwcFtu W2lkeF1dLnkgPSB5IC0gYml0bWFwLnRvcCArIGk7CiAJCSAgaWYgKCsrKG5baWR4XSkgPT0g c2l6ZSkKIAkJICAgIHsKLQkJICAgICAgWERyYXdQb2ludHMgKEZSQU1FX1hfRElTUExBWSAo ZiksIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgICAgICAgICAgICAgICAgICAgICBYRHJhd1Bv aW50cyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJCQkJ ICAgaWR4ID09IDYgPyBnY19mb3JlIDogZ2NzW2lkeF0sIHBwLCBzaXplLAogCQkJCSAgIENv b3JkTW9kZU9yaWdpbik7CiAJCSAgICAgIG5baWR4XSA9IDA7CkBAIC0xODAsMTAgKzE4MCwx MCBAQCBmdHhmb250X2RyYXdfYml0bWFwIChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjX2ZvcmUs IEdDICpnY3MsIHN0cnVjdCBmb250ICpmb250LAogCXsKIAkgIGZvciAoaSA9IDA7IGkgPCA2 OyBpKyspCiAJICAgIGlmIChuW2ldID4gMCkKLQkgICAgICBYRHJhd1BvaW50cyAoRlJBTUVf WF9ESVNQTEFZIChmKSwgRlJBTUVfWF9XSU5ET1cgKGYpLAorICAgICAgICAgICAgICBYRHJh d1BvaW50cyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJ CQkgICBnY3NbaV0sIHAgKyAweDEwMCAqIGksIG5baV0sIENvb3JkTW9kZU9yaWdpbik7CiAJ ICBpZiAobls2XSA+IDApCi0JICAgIFhEcmF3UG9pbnRzIChGUkFNRV9YX0RJU1BMQVkgKGYp LCBGUkFNRV9YX1dJTkRPVyAoZiksCisgICAgICAgICAgICBYRHJhd1BvaW50cyAoRlJBTUVf WF9ESVNQTEFZIChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJCQkgZ2NfZm9yZSwgcCAr IDB4NjAwLCBuWzZdLCBDb29yZE1vZGVPcmlnaW4pOwogCX0KICAgICB9CkBAIC0yMDMsNyAr MjAzLDcgQEAgZnR4Zm9udF9kcmF3X2JhY2tncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgc3Ry dWN0IGZvbnQgKmZvbnQsIEdDIGdjLCBpbnQgeCwgaW50IHkKICAgWEdldEdDVmFsdWVzIChG UkFNRV9YX0RJU1BMQVkgKGYpLCBnYywKIAkJR0NGb3JlZ3JvdW5kIHwgR0NCYWNrZ3JvdW5k LCAmeGdjdik7CiAgIFhTZXRGb3JlZ3JvdW5kIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBnYywg eGdjdi5iYWNrZ3JvdW5kKTsKLSAgWEZpbGxSZWN0YW5nbGUgKEZSQU1FX1hfRElTUExBWSAo ZiksIEZSQU1FX1hfV0lORE9XIChmKSwgZ2MsCisgIFhGaWxsUmVjdGFuZ2xlIChGUkFNRV9Y X0RJU1BMQVkgKGYpLCBGUkFNRV9YX0RSQVdBQkxFIChmKSwgZ2MsCiAJCSAgeCwgeSAtIEZP TlRfQkFTRSAoZm9udCksIHdpZHRoLCBGT05UX0hFSUdIVCAoZm9udCkpOwogICBYU2V0Rm9y ZWdyb3VuZCAoRlJBTUVfWF9ESVNQTEFZIChmKSwgZ2MsIHhnY3YuZm9yZWdyb3VuZCk7CiB9 CmRpZmYgLS1naXQgYS9zcmMvZ3RrdXRpbC5jIGIvc3JjL2d0a3V0aWwuYwppbmRleCA4OGU2 ZDMwLi45NTgzOGZiIDEwMDY0NAotLS0gYS9zcmMvZ3RrdXRpbC5jCisrKyBiL3NyYy9ndGt1 dGlsLmMKQEAgLTQ4LDYgKzQ4LDEwIEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRlICJl bWFjc2d0a2ZpeGVkLmgiCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfWERCRQorI2luY2x1ZGUg PFgxMS9leHRlbnNpb25zL1hkYmUuaD4KKyNlbmRpZgorCiAjaWZuZGVmIEhBVkVfR1RLX1dJ REdFVF9TRVRfSEFTX1dJTkRPVwogI2RlZmluZSBndGtfd2lkZ2V0X3NldF9oYXNfd2luZG93 KHcsIGIpIFwKICAgKGd0a19maXhlZF9zZXRfaGFzX3dpbmRvdyAoR1RLX0ZJWEVEICh3KSwg YikpCkBAIC0xNDMsNiArMTQ3LDggQEAgc3RydWN0IHhnX2ZyYW1lX3RiX2luZm8KICAgR3Rr VGV4dERpcmVjdGlvbiBkaXI7CiB9OwogCitzdGF0aWMgR3RrV2lkZ2V0ICogeGdfZ2V0X3dp ZGdldF9mcm9tX21hcCAocHRyZGlmZl90IGlkeCk7CisKIAwKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgaGFuZGxpbmcgZnVuY3Rpb25zCkBA IC04MTUsMTIgKzgyMSw2IEBAIHhnX2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlciAoc3Ry dWN0IGZyYW1lICpmKQogewogICBpZiAoRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChm KSA+IDApCiAgICAgewotI2lmbmRlZiBVU0VfQ0FJUk8KLSAgICAgIEd0a1dpZGdldCAqd2Zp eGVkID0gZi0+b3V0cHV0X2RhdGEueC0+ZWRpdF93aWRnZXQ7Ci0KLSAgICAgIGd0a193aWRn ZXRfcXVldWVfZHJhdyAod2ZpeGVkKTsKLSAgICAgIGdka193aW5kb3dfcHJvY2Vzc19hbGxf dXBkYXRlcyAoKTsKLSNlbmRpZgogICAgICAgeF9jbGVhcl9hcmVhIChmLCAwLCAwLAogCQkg ICAgRlJBTUVfUElYRUxfV0lEVEggKGYpLCBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEgg KGYpKTsKIApAQCAtMTIzMyw2ICsxMjMzLDcgQEAgeGdfY3JlYXRlX2ZyYW1lX3dpZGdldHMg KHN0cnVjdCBmcmFtZSAqZikKICAgICAgYnkgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiAg Ki8KICAgZ3RrX3dpZGdldF9yZWFsaXplICh3Zml4ZWQpOwogICBGUkFNRV9YX1dJTkRPVyAo ZikgPSBHVEtfV0lER0VUX1RPX1hfV0lOICh3Zml4ZWQpOworICBpbml0aWFsX3NldF91cF94 X2JhY2tfYnVmZmVyIChmKTsKIAogICAvKiBTaW5jZSBHVEsgY2xlYXJzIGl0cyB3aW5kb3cg YnkgZmlsbGluZyB3aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLAogICAgICB3ZSBtdXN0IGtl ZXAgWCBhbmQgR1RLIGJhY2tncm91bmQgaW4gc3luYy4gICovCkBAIC0xMjk2LDggKzEyOTcs MTEgQEAgeGdfZnJlZV9mcmFtZV93aWRnZXRzIChzdHJ1Y3QgZnJhbWUgKmYpCiAgICAgICBp ZiAodGJpbmZvKQogICAgICAgICB4ZnJlZSAodGJpbmZvKTsKIAorICAgICAgLyogeF9mcmVl X2ZyYW1lX3Jlc291cmNlcyBzaG91bGQgaGF2ZSB0YWtlbiBjYXJlIG9mIGl0ICovCisgICAg ICBlYXNzZXJ0ICghRlJBTUVfWF9ET1VCTEVfQlVGRkVSRURfUCAoZikpOwogICAgICAgZ3Rr X3dpZGdldF9kZXN0cm95IChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmKSk7CiAgICAgICBG UkFNRV9YX1dJTkRPVyAoZikgPSAwOyAvKiBTZXQgdG8gYXZvaWQgWERlc3Ryb3lXaW5kb3cg aW4geHRlcm0uYyAqLworICAgICAgRlJBTUVfWF9EUkFXQUJMRSAoZikgPSAwOwogICAgICAg RlJBTUVfR1RLX09VVEVSX1dJREdFVCAoZikgPSAwOwogI2lmZGVmIFVTRV9HVEtfVE9PTFRJ UAogICAgICAgaWYgKHgtPnR0aXBfbGJsKQpAQCAtMTQ0MCw2ICsxNDQ0LDE4IEBAIHhnX3Nl dF9iYWNrZ3JvdW5kX2NvbG9yIChzdHJ1Y3QgZnJhbWUgKmYsIHVuc2lnbmVkIGxvbmcgYmcp CiAgICAgewogICAgICAgYmxvY2tfaW5wdXQgKCk7CiAgICAgICB4Z19zZXRfd2lkZ2V0X2Jn IChmLCBGUkFNRV9HVEtfV0lER0VUIChmKSwgRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZikp OworCisgICAgICBMaXNwX09iamVjdCBiYXI7CisgICAgICBmb3IgKGJhciA9IEZSQU1FX1ND Uk9MTF9CQVJTIChmKTsKKyAgICAgICAgICAgIU5JTFAgKGJhcik7CisgICAgICAgICAgIGJh ciA9IFhTQ1JPTExfQkFSIChiYXIpLT5uZXh0KQorICAgICAgICB7CisgICAgICAgICAgR3Rr V2lkZ2V0KiBzY3JvbGxiYXIgPQorICAgICAgICAgICAgeGdfZ2V0X3dpZGdldF9mcm9tX21h cCAoWFNDUk9MTF9CQVIgKGJhciktPnhfd2luZG93KTsKKyAgICAgICAgICBHdGtXaWRnZXQq IHdlYm94ID0gZ3RrX3dpZGdldF9nZXRfcGFyZW50IChzY3JvbGxiYXIpOworICAgICAgICAg IHhnX3NldF93aWRnZXRfYmcgKGYsIHdlYm94LCBGUkFNRV9CQUNLR1JPVU5EX1BJWEVMIChm KSk7CisgICAgICAgIH0KKwogICAgICAgdW5ibG9ja19pbnB1dCAoKTsKICAgICB9CiB9CkBA IC0yMjY1LDcgKzIyODEsNiBAQCB4Z19tYXJrX2RhdGEgKHZvaWQpCiAgICAgfQogfQogCi0K IC8qIENhbGxiYWNrIGNhbGxlZCB3aGVuIGEgbWVudSBpdGVtIGlzIGRlc3Ryb3llZC4gIFVz ZWQgdG8gZnJlZSBkYXRhLgogICAgVyBpcyB0aGUgd2lkZ2V0IHRoYXQgaXMgYmVpbmcgZGVz dHJveWVkIChub3QgdXNlZCkuCiAgICBDTElFTlRfREFUQSBwb2ludHMgdG8gdGhlIHhnX21l bnVfaXRlbV9jYl9kYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgVy4gICovCkBAIC0zNTY5LDQ0 ICszNTg0LDIzIEBAIHhnX2d0a19zY3JvbGxfZGVzdHJveSAoR3RrV2lkZ2V0ICp3aWRnZXQs IGdwb2ludGVyIGRhdGEpCiAgIHhnX3JlbW92ZV93aWRnZXRfZnJvbV9tYXAgKGlkKTsKIH0K IAotLyogQ3JlYXRlIGEgc2Nyb2xsIGJhciB3aWRnZXQgZm9yIGZyYW1lIEYuICBTdG9yZSB0 aGUgc2Nyb2xsIGJhcgotICAgaW4gQkFSLgotICAgU0NST0xMX0NBTExCQUNLIGlzIHRoZSBj YWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgdmFsdWUgb2YgdGhlCi0gICBiYXIgY2hhbmdl cy4KLSAgIEVORF9DQUxMQkFDSyBpcyB0aGUgY2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gc2Ny b2xsaW5nIGVuZHMuCi0gICBTQ1JPTExfQkFSX05BTUUgaXMgdGhlIG5hbWUgd2UgdXNlIGZv ciB0aGUgc2Nyb2xsIGJhci4gIENhbiBiZSB1c2VkCi0gICB0byBzZXQgcmVzb3VyY2VzIGZv ciB0aGUgd2lkZ2V0LiAgKi8KLQotdm9pZAoteGdfY3JlYXRlX3Njcm9sbF9iYXIgKHN0cnVj dCBmcmFtZSAqZiwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Nyb2xsX2JhciAq YmFyLAotICAgICAgICAgICAgICAgICAgICAgIEdDYWxsYmFjayBzY3JvbGxfY2FsbGJhY2ss Ci0gICAgICAgICAgICAgICAgICAgICAgR0NhbGxiYWNrIGVuZF9jYWxsYmFjaywKLSAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzY3JvbGxfYmFyX25hbWUpCitzdGF0aWMg dm9pZAoreGdfZmluaXNoX3Njcm9sbF9iYXJfY3JlYXRpb24gKHN0cnVjdCBmcmFtZSAqZiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKndzY3JvbGwsCisJ CQkgICAgICAgc3RydWN0IHNjcm9sbF9iYXIgKmJhciwKKwkJCSAgICAgICBHQ2FsbGJhY2sg c2Nyb2xsX2NhbGxiYWNrLAorCQkJICAgICAgIEdDYWxsYmFjayBlbmRfY2FsbGJhY2ssCisJ CQkgICAgICAgY29uc3QgY2hhciAqc2Nyb2xsX2Jhcl9uYW1lKQogewotICBHdGtXaWRnZXQg KndzY3JvbGw7Ci0gIEd0a1dpZGdldCAqd2Vib3g7Ci0gIGludHB0cl90IHNjcm9sbF9pZDsK LSNpZmRlZiBIQVZFX0dUSzMKLSAgR3RrQWRqdXN0bWVudCAqdmFkajsKLSNlbHNlCi0gIEd0 a09iamVjdCAqdmFkajsKLSNlbmRpZgorICBHdGtXaWRnZXQgKndlYm94ID0gZ3RrX2V2ZW50 X2JveF9uZXcgKCk7CiAKLSAgLyogUGFnZSwgc3RlcCBpbmNyZW1lbnQgdmFsdWVzIGFyZSBu b3Qgc28gaW1wb3J0YW50IGhlcmUsIHRoZXkKLSAgICAgd2lsbCBiZSBjb3JyZWN0ZWQgaW4g eF9zZXRfdG9vbGtpdF9zY3JvbGxfYmFyX3RodW1iLiAqLwotICB2YWRqID0gZ3RrX2FkanVz dG1lbnRfbmV3IChYR19TQl9NSU4sIFhHX1NCX01JTiwgWEdfU0JfTUFYLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwLjEsIDAuMSwgMC4xKTsKLQotICB3c2Nyb2xsID0gZ3Rr X3Njcm9sbGJhcl9uZXcgKEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgR1RLX0FESlVTVE1F TlQgKHZhZGopKTsKLSAgd2Vib3ggPSBndGtfZXZlbnRfYm94X25ldyAoKTsKICAgZ3RrX3dp ZGdldF9zZXRfbmFtZSAod3Njcm9sbCwgc2Nyb2xsX2Jhcl9uYW1lKTsKICNpZm5kZWYgSEFW RV9HVEszCiAgIGd0a19yYW5nZV9zZXRfdXBkYXRlX3BvbGljeSAoR1RLX1JBTkdFICh3c2Ny b2xsKSwgR1RLX1VQREFURV9DT05USU5VT1VTKTsKICNlbmRpZgogICBnX29iamVjdF9zZXRf ZGF0YSAoR19PQkpFQ1QgKHdzY3JvbGwpLCBYR19GUkFNRV9EQVRBLCAoZ3BvaW50ZXIpZik7 CiAKLSAgc2Nyb2xsX2lkID0geGdfc3RvcmVfd2lkZ2V0X2luX21hcCAod3Njcm9sbCk7Cisg IHB0cmRpZmZfdCBzY3JvbGxfaWQgPSB4Z19zdG9yZV93aWRnZXRfaW5fbWFwICh3c2Nyb2xs KTsKIAogICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod3Njcm9sbCksCiAgICAgICAg ICAgICAgICAgICAgICJkZXN0cm95IiwKQEAgLTM2MzAsMTEgKzM2MjQsNTIgQEAgeGdfY3Jl YXRlX3Njcm9sbF9iYXIgKHN0cnVjdCBmcmFtZSAqZiwKICAgZ3RrX2ZpeGVkX3B1dCAoR1RL X0ZJWEVEIChmLT5vdXRwdXRfZGF0YS54LT5lZGl0X3dpZGdldCksIHdlYm94LCAtMSwgLTEp OwogICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2Vib3gpLCB3c2Nyb2xs KTsKIAorICB4Z19zZXRfd2lkZ2V0X2JnIChmLCB3ZWJveCwgRlJBTUVfQkFDS0dST1VORF9Q SVhFTCAoZikpOworCisgIC8qIE4uQi4gVGhlIGV2ZW50IGJveCBkb2Vzbid0IGJlY29tZSBh IHJlYWwgWDExIHdpbmRvdyB1bnRpbCB3ZSBhc2sKKyAgICAgZm9yIGl0cyBYSUQgdmlhIEdU S19XSURHRVRfVE9fWF9XSU4uICBJZiB0aGUgZXZlbnQgYm94IGlzIG5vdCBhCisgICAgIHJl YWwgWCB3aW5kb3csIGl0IGFuZCBpdHMgc2Nyb2xsLWJhciBjaGlsZCB0cnkgdG8gZHJhdyBv biB0aGUKKyAgICAgRW1hY3MgbWFpbiB3aW5kb3csIHdoaWNoIHdlIGRyYXcgb3ZlciB1c2lu ZyBYbGliLiAgKi8KKyAgZ3RrX3dpZGdldF9yZWFsaXplICh3ZWJveCk7CisgIEdUS19XSURH RVRfVE9fWF9XSU4gKHdlYm94KTsKIAogICAvKiBTZXQgdGhlIGN1cnNvciB0byBhbiBhcnJv dy4gICovCiAgIHhnX3NldF9jdXJzb3IgKHdlYm94LCBGUkFNRV9ESVNQTEFZX0lORk8gKGYp LT54Z19jdXJzb3IpOwogCiAgIGJhci0+eF93aW5kb3cgPSBzY3JvbGxfaWQ7Cit9CisKKy8q IENyZWF0ZSBhIHNjcm9sbCBiYXIgd2lkZ2V0IGZvciBmcmFtZSBGLiAgU3RvcmUgdGhlIHNj cm9sbCBiYXIKKyAgIGluIEJBUi4KKyAgIFNDUk9MTF9DQUxMQkFDSyBpcyB0aGUgY2FsbGJh Y2sgdG8gaW52b2tlIHdoZW4gdGhlIHZhbHVlIG9mIHRoZQorICAgYmFyIGNoYW5nZXMuCisg ICBFTkRfQ0FMTEJBQ0sgaXMgdGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIHNjcm9sbGlu ZyBlbmRzLgorICAgU0NST0xMX0JBUl9OQU1FIGlzIHRoZSBuYW1lIHdlIHVzZSBmb3IgdGhl IHNjcm9sbCBiYXIuICBDYW4gYmUgdXNlZAorICAgdG8gc2V0IHJlc291cmNlcyBmb3IgdGhl IHdpZGdldC4gICovCisKK3ZvaWQKK3hnX2NyZWF0ZV9zY3JvbGxfYmFyIChzdHJ1Y3QgZnJh bWUgKmYsCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjcm9sbF9iYXIgKmJhciwK KyAgICAgICAgICAgICAgICAgICAgICBHQ2FsbGJhY2sgc2Nyb2xsX2NhbGxiYWNrLAorICAg ICAgICAgICAgICAgICAgICAgIEdDYWxsYmFjayBlbmRfY2FsbGJhY2ssCisgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqc2Nyb2xsX2Jhcl9uYW1lKQoreworICBHdGtXaWRn ZXQgKndzY3JvbGw7CisjaWZkZWYgSEFWRV9HVEszCisgIEd0a0FkanVzdG1lbnQgKnZhZGo7 CisjZWxzZQorICBHdGtPYmplY3QgKnZhZGo7CisjZW5kaWYKKworICAvKiBQYWdlLCBzdGVw IGluY3JlbWVudCB2YWx1ZXMgYXJlIG5vdCBzbyBpbXBvcnRhbnQgaGVyZSwgdGhleQorICAg ICB3aWxsIGJlIGNvcnJlY3RlZCBpbiB4X3NldF90b29sa2l0X3Njcm9sbF9iYXJfdGh1bWIu ICovCisgIHZhZGogPSBndGtfYWRqdXN0bWVudF9uZXcgKFhHX1NCX01JTiwgWEdfU0JfTUlO LCBYR19TQl9NQVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMSwgMC4xLCAw LjEpOworCisgIHdzY3JvbGwgPSBndGtfc2Nyb2xsYmFyX25ldyAoR1RLX09SSUVOVEFUSU9O X1ZFUlRJQ0FMLCBHVEtfQURKVVNUTUVOVCAodmFkaikpOworCisgIHhnX2ZpbmlzaF9zY3Jv bGxfYmFyX2NyZWF0aW9uIChmLCB3c2Nyb2xsLCBiYXIsIHNjcm9sbF9jYWxsYmFjaywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9jYWxsYmFjaywgc2Nyb2xsX2Jh cl9uYW1lKTsKICAgYmFyLT5ob3Jpem9udGFsID0gMDsKIH0KIApAQCAtMzY1Miw4ICszNjg3 LDYgQEAgeGdfY3JlYXRlX2hvcml6b250YWxfc2Nyb2xsX2JhciAoc3RydWN0IGZyYW1lICpm LAogCQkJCSBjb25zdCBjaGFyICpzY3JvbGxfYmFyX25hbWUpCiB7CiAgIEd0a1dpZGdldCAq d3Njcm9sbDsKLSAgR3RrV2lkZ2V0ICp3ZWJveDsKLSAgaW50cHRyX3Qgc2Nyb2xsX2lkOwog I2lmZGVmIEhBVkVfR1RLMwogICBHdGtBZGp1c3RtZW50ICpoYWRqOwogI2Vsc2UKQEAgLTM2 NjYsNDIgKzM2OTksOSBAQCB4Z19jcmVhdGVfaG9yaXpvbnRhbF9zY3JvbGxfYmFyIChzdHJ1 Y3QgZnJhbWUgKmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMSwgMC4xLCAw LjEpOwogCiAgIHdzY3JvbGwgPSBndGtfc2Nyb2xsYmFyX25ldyAoR1RLX09SSUVOVEFUSU9O X0hPUklaT05UQUwsIEdUS19BREpVU1RNRU5UIChoYWRqKSk7Ci0gIHdlYm94ID0gZ3RrX2V2 ZW50X2JveF9uZXcgKCk7Ci0gIGd0a193aWRnZXRfc2V0X25hbWUgKHdzY3JvbGwsIHNjcm9s bF9iYXJfbmFtZSk7Ci0jaWZuZGVmIEhBVkVfR1RLMwotICBndGtfcmFuZ2Vfc2V0X3VwZGF0 ZV9wb2xpY3kgKEdUS19SQU5HRSAod3Njcm9sbCksIEdUS19VUERBVEVfQ09OVElOVU9VUyk7 Ci0jZW5kaWYKLSAgZ19vYmplY3Rfc2V0X2RhdGEgKEdfT0JKRUNUICh3c2Nyb2xsKSwgWEdf RlJBTUVfREFUQSwgKGdwb2ludGVyKWYpOwotCi0gIHNjcm9sbF9pZCA9IHhnX3N0b3JlX3dp ZGdldF9pbl9tYXAgKHdzY3JvbGwpOwotCi0gIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNU ICh3c2Nyb2xsKSwKLSAgICAgICAgICAgICAgICAgICAgImRlc3Ryb3kiLAotICAgICAgICAg ICAgICAgICAgICBHX0NBTExCQUNLICh4Z19ndGtfc2Nyb2xsX2Rlc3Ryb3kpLAotICAgICAg ICAgICAgICAgICAgICAoZ3BvaW50ZXIpIHNjcm9sbF9pZCk7Ci0gIGdfc2lnbmFsX2Nvbm5l Y3QgKEdfT0JKRUNUICh3c2Nyb2xsKSwKLSAgICAgICAgICAgICAgICAgICAgImNoYW5nZS12 YWx1ZSIsCi0gICAgICAgICAgICAgICAgICAgIHNjcm9sbF9jYWxsYmFjaywKLSAgICAgICAg ICAgICAgICAgICAgKGdwb2ludGVyKSBiYXIpOwotICBnX3NpZ25hbF9jb25uZWN0IChHX09C SkVDVCAod3Njcm9sbCksCi0gICAgICAgICAgICAgICAgICAgICJidXR0b24tcmVsZWFzZS1l dmVudCIsCi0gICAgICAgICAgICAgICAgICAgIGVuZF9jYWxsYmFjaywKLSAgICAgICAgICAg ICAgICAgICAgKGdwb2ludGVyKSBiYXIpOwotCi0gIC8qIFRoZSBzY3JvbGwgYmFyIHdpZGdl dCBkb2VzIG5vdCBkcmF3IG9uIGEgd2luZG93IG9mIGl0cyBvd24uICBJbnN0ZWFkCi0gICAg IGl0IGRyYXdzIG9uIHRoZSBwYXJlbnQgd2luZG93LCBpbiB0aGlzIGNhc2UgdGhlIGVkaXQg d2lkZ2V0LiAgU28KLSAgICAgd2hlbmV2ZXIgdGhlIGVkaXQgd2lkZ2V0IGlzIGNsZWFyZWQs IHRoZSBzY3JvbGwgYmFyIG5lZWRzIHRvIHJlZHJhdwotICAgICBhbHNvLCB3aGljaCBjYXVz ZXMgZmxpY2tlci4gIFB1dCBhbiBldmVudCBib3ggYmV0d2VlbiB0aGUgZWRpdCB3aWRnZXQK LSAgICAgYW5kIHRoZSBzY3JvbGwgYmFyLCBzbyB0aGUgc2Nyb2xsIGJhciBpbnN0ZWFkIGRy YXdzIGl0c2VsZiBvbiB0aGUKLSAgICAgZXZlbnQgYm94IHdpbmRvdy4gICovCi0gIGd0a19m aXhlZF9wdXQgKEdUS19GSVhFRCAoZi0+b3V0cHV0X2RhdGEueC0+ZWRpdF93aWRnZXQpLCB3 ZWJveCwgLTEsIC0xKTsKLSAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKHdl Ym94KSwgd3Njcm9sbCk7CiAKLQotICAvKiBTZXQgdGhlIGN1cnNvciB0byBhbiBhcnJvdy4g ICovCi0gIHhnX3NldF9jdXJzb3IgKHdlYm94LCBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT54 Z19jdXJzb3IpOwotCi0gIGJhci0+eF93aW5kb3cgPSBzY3JvbGxfaWQ7CisgIHhnX2Zpbmlz aF9zY3JvbGxfYmFyX2NyZWF0aW9uIChmLCB3c2Nyb2xsLCBiYXIsIHNjcm9sbF9jYWxsYmFj aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9jYWxsYmFjaywgc2Ny b2xsX2Jhcl9uYW1lKTsKICAgYmFyLT5ob3Jpem9udGFsID0gMTsKIH0KIApAQCAtMzc3MCwx NSArMzc3MCw5IEBAIHhnX3VwZGF0ZV9zY3JvbGxiYXJfcG9zIChzdHJ1Y3QgZnJhbWUgKmYs CiAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93X2FsbCAod3BhcmVudCk7CiAgICAgICAgICAg Z3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0ICh3c2Nyb2xsLCB3aWR0aCwgaGVpZ2h0KTsK ICAgICAgICAgfQotI2lmbmRlZiBVU0VfQ0FJUk8KLSAgICAgIGd0a193aWRnZXRfcXVldWVf ZHJhdyAod2ZpeGVkKTsKLSAgICAgIGdka193aW5kb3dfcHJvY2Vzc19hbGxfdXBkYXRlcyAo KTsKLSNlbmRpZgogICAgICAgaWYgKG9sZHggIT0gLTEgJiYgb2xkdyA+IDAgJiYgb2xkaCA+ IDApCiAgICAgICAgIHsKLSAgICAgICAgICAvKiBDbGVhciB1bmRlciBvbGQgc2Nyb2xsIGJh ciBwb3NpdGlvbi4gIFRoaXMgbXVzdCBiZSBkb25lIGFmdGVyCi0gICAgICAgICAgICAgdGhl IGd0a193aWRnZXRfcXVldWVfZHJhdyBhbmQgZ2RrX3dpbmRvd19wcm9jZXNzX2FsbF91cGRh dGVzCi0gICAgICAgICAgICAgYWJvdmUuICAqLworICAgICAgICAgIC8qIENsZWFyIHVuZGVy IG9sZCBzY3JvbGwgYmFyIHBvc2l0aW9uLiAgKi8KIAkgIG9sZHcgKz0gKHNjYWxlIC0gMSkg KiBvbGR3OwogCSAgb2xkeCAtPSAoc2NhbGUgLSAxKSAqIG9sZHc7CiAgICAgICAgICAgeF9j bGVhcl9hcmVhIChmLCBvbGR4LCBvbGR5LCBvbGR3LCBvbGRoKTsKQEAgLTM4NDEsMTQgKzM4 MzUsOSBAQCB4Z191cGRhdGVfaG9yaXpvbnRhbF9zY3JvbGxiYXJfcG9zIChzdHJ1Y3QgZnJh bWUgKmYsCiAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93X2FsbCAod3BhcmVudCk7CiAgICAg ICAgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0ICh3c2Nyb2xsLCB3aWR0aCwgaGVp Z2h0KTsKICAgICAgICAgfQotICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3ICh3Zml4ZWQp OwotICAgICAgZ2RrX3dpbmRvd19wcm9jZXNzX2FsbF91cGRhdGVzICgpOwogICAgICAgaWYg KG9sZHggIT0gLTEgJiYgb2xkdyA+IDAgJiYgb2xkaCA+IDApCi0JLyogQ2xlYXIgdW5kZXIg b2xkIHNjcm9sbCBiYXIgcG9zaXRpb24uICBUaGlzIG11c3QgYmUgZG9uZSBhZnRlcgotCSAg IHRoZSBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcgYW5kIGdka193aW5kb3dfcHJvY2Vzc19hbGxf dXBkYXRlcwotCSAgIGFib3ZlLiAgKi8KLQl4X2NsZWFyX2FyZWEgKGYsCi0JCSAgICAgIG9s ZHgsIG9sZHksIG9sZHcsIG9sZGgpOworICAgICAgICAvKiBDbGVhciB1bmRlciBvbGQgc2Ny b2xsIGJhciBwb3NpdGlvbi4gICovCisgICAgICAgIHhfY2xlYXJfYXJlYSAoZiwgb2xkeCwg b2xkeSwgb2xkdywgb2xkaCk7CiAKICAgICAgIC8qIEdUSyBkb2VzIG5vdCByZWRyYXcgdW50 aWwgdGhlIG1haW4gbG9vcCBpcyBlbnRlcmVkIGFnYWluLCBidXQKICAgICAgICAgIGlmIHRo ZXJlIGFyZSBubyBYIGV2ZW50cyBwZW5kaW5nIHdlIHdpbGwgbm90IGVudGVyIGl0LiAgU28g d2Ugc3luYwpkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRleCA5 YmQyNDU1Li4xMzAzYTkzIDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysgYi9zcmMvaW1h Z2UuYwpAQCAtMjIwLDcgKzIyMCw3IEBAIHhfY3JlYXRlX2JpdG1hcF9mcm9tX2RhdGEgKHN0 cnVjdCBmcmFtZSAqZiwgY2hhciAqYml0cywgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpCiAK ICNpZmRlZiBIQVZFX1hfV0lORE9XUwogICBQaXhtYXAgYml0bWFwOwotICBiaXRtYXAgPSBY Q3JlYXRlQml0bWFwRnJvbURhdGEgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lO RE9XIChmKSwKKyAgYml0bWFwID0gWENyZWF0ZUJpdG1hcEZyb21EYXRhIChGUkFNRV9YX0RJ U1BMQVkgKGYpLCBGUkFNRV9YX0RSQVdBQkxFIChmKSwKIAkJCQkgIGJpdHMsIHdpZHRoLCBo ZWlnaHQpOwogICBpZiAoISBiaXRtYXApCiAgICAgcmV0dXJuIC0xOwpAQCAtMzI3LDcgKzMy Nyw3IEBAIHhfY3JlYXRlX2JpdG1hcF9mcm9tX2ZpbGUgKHN0cnVjdCBmcmFtZSAqZiwgTGlz cF9PYmplY3QgZmlsZSkKIAogICBmaWxlbmFtZSA9IFNTREFUQSAoZm91bmQpOwogCi0gIHJl c3VsdCA9IFhSZWFkQml0bWFwRmlsZSAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9X SU5ET1cgKGYpLAorICByZXN1bHQgPSBYUmVhZEJpdG1hcEZpbGUgKEZSQU1FX1hfRElTUExB WSAoZiksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkJICAgIGZpbGVuYW1lLCAmd2lkdGgs ICZoZWlnaHQsICZiaXRtYXAsICZ4aG90LCAmeWhvdCk7CiAgIGlmIChyZXN1bHQgIT0gQml0 bWFwU3VjY2VzcykKICAgICByZXR1cm4gLTE7CkBAIC0xOTUyLDcgKzE5NTIsNyBAQCB4X2Ny ZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBp bnQgaGVpZ2h0LCBpbnQgZGVwdGgsCiB7CiAjaWZkZWYgSEFWRV9YX1dJTkRPV1MKICAgRGlz cGxheSAqZGlzcGxheSA9IEZSQU1FX1hfRElTUExBWSAoZik7Ci0gIFdpbmRvdyB3aW5kb3cg PSBGUkFNRV9YX1dJTkRPVyAoZik7CisgIERyYXdhYmxlIGRyYXdhYmxlID0gRlJBTUVfWF9E UkFXQUJMRSAoZik7CiAgIFNjcmVlbiAqc2NyZWVuID0gRlJBTUVfWF9TQ1JFRU4gKGYpOwog CiAgIGVhc3NlcnQgKGlucHV0X2Jsb2NrZWRfcCAoKSk7CkBAIC0xOTgxLDcgKzE5ODEsNyBA QCB4X2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGVwdGgsCiAgICgqeGltZyktPmRhdGEgPSB4bWFsbG9j ICgoKnhpbWcpLT5ieXRlc19wZXJfbGluZSAqIGhlaWdodCk7CiAKICAgLyogQWxsb2NhdGUg YSBwaXhtYXAgb2YgdGhlIHNhbWUgc2l6ZS4gICovCi0gICpwaXhtYXAgPSBYQ3JlYXRlUGl4 bWFwIChkaXNwbGF5LCB3aW5kb3csIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgKnBpeG1h cCA9IFhDcmVhdGVQaXhtYXAgKGRpc3BsYXksIGRyYXdhYmxlLCB3aWR0aCwgaGVpZ2h0LCBk ZXB0aCk7CiAgIGlmICgqcGl4bWFwID09IE5PX1BJWE1BUCkKICAgICB7CiAgICAgICB4X2Rl c3Ryb3lfeF9pbWFnZSAoKnhpbWcpOwpAQCAtMjc0Miw3ICsyNzQyLDcgQEAgQ3JlYXRlX1Bp eG1hcF9Gcm9tX0JpdG1hcF9EYXRhIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAq aW1nLCBjaGFyICpkYXRhLAogICBpbWctPnBpeG1hcCA9CiAgICAoeF9jaGVja19pbWFnZV9z aXplICgwLCBpbWctPndpZHRoLCBpbWctPmhlaWdodCkKICAgICA/IFhDcmVhdGVQaXhtYXBG cm9tQml0bWFwRGF0YSAoRlJBTUVfWF9ESVNQTEFZIChmKSwKLQkJCQkgICBGUkFNRV9YX1dJ TkRPVyAoZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX1hf RFJBV0FCTEUgKGYpLAogCQkJCSAgIGRhdGEsCiAJCQkJICAgaW1nLT53aWR0aCwgaW1nLT5o ZWlnaHQsCiAJCQkJICAgZmcsIGJnLApAQCAtMzUyMCw3ICszNTIwLDcgQEAgeF9jcmVhdGVf Yml0bWFwX2Zyb21feHBtX2RhdGEgKHN0cnVjdCBmcmFtZSAqZiwgY29uc3QgY2hhciAqKmJp dHMpCiAgIHhwbV9pbml0X2NvbG9yX2NhY2hlIChmLCAmYXR0cnMpOwogI2VuZGlmCiAKLSAg cmMgPSBYcG1DcmVhdGVQaXhtYXBGcm9tRGF0YSAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJB TUVfWF9XSU5ET1cgKGYpLAorICByYyA9IFhwbUNyZWF0ZVBpeG1hcEZyb21EYXRhIChGUkFN RV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9YX0RSQVdBQkxFIChmKSwKIAkJCQkoY2hhciAqKikg Yml0cywgJmJpdG1hcCwgJm1hc2ssICZhdHRycyk7CiAgIGlmIChyYyAhPSBYcG1TdWNjZXNz KQogICAgIHsKQEAgLTM3NTgsNyArMzc1OCw3IEBAIHhwbV9sb2FkIChzdHJ1Y3QgZnJhbWUg KmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogI2lmZGVmIEhBVkVfWF9XSU5ET1dTCiAgIGlmIChy YyA9PSBYcG1TdWNjZXNzKQogICAgIHsKLSAgICAgIGltZy0+cGl4bWFwID0gWENyZWF0ZVBp eG1hcCAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9XSU5ET1cgKGYpLAorICAgICAg aW1nLT5waXhtYXAgPSBYQ3JlYXRlUGl4bWFwIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFN RV9YX0RSQVdBQkxFIChmKSwKIAkJCQkgICBpbWctPnhpbWctPndpZHRoLCBpbWctPnhpbWct PmhlaWdodCwKIAkJCQkgICBpbWctPnhpbWctPmRlcHRoKTsKICAgICAgIGlmIChpbWctPnBp eG1hcCA9PSBOT19QSVhNQVApCkBAIC0zNzY4LDcgKzM3NjgsNyBAQCB4cG1fbG9hZCAoc3Ry dWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKIAl9CiAgICAgICBlbHNlIGlmIChp bWctPm1hc2tfaW1nKQogCXsKLQkgIGltZy0+bWFzayA9IFhDcmVhdGVQaXhtYXAgKEZSQU1F X1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgICAgICAgICBpbWctPm1h c2sgPSBYQ3JlYXRlUGl4bWFwIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9YX0RSQVdB QkxFIChmKSwKIAkJCQkgICAgIGltZy0+bWFza19pbWctPndpZHRoLAogCQkJCSAgICAgaW1n LT5tYXNrX2ltZy0+aGVpZ2h0LAogCQkJCSAgICAgaW1nLT5tYXNrX2ltZy0+ZGVwdGgpOwpA QCAtOTU0MSw3ICs5NTQxLDcgQEAgZ3NfbG9hZCAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3Qg aW1hZ2UgKmltZykKICAgICB7CiAgICAgICAvKiBPbmx5IFczMiB2ZXJzaW9uIGRpZCBCTE9D S19JTlBVVCBoZXJlLiAgKytrZnMgKi8KICAgICAgIGJsb2NrX2lucHV0ICgpOwotICAgICAg aW1nLT5waXhtYXAgPSBYQ3JlYXRlUGl4bWFwIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFN RV9YX1dJTkRPVyAoZiksCisgICAgICBpbWctPnBpeG1hcCA9IFhDcmVhdGVQaXhtYXAgKEZS QU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkJCSAgIGltZy0+ d2lkdGgsIGltZy0+aGVpZ2h0LAogCQkJCSAgIERlZmF1bHREZXB0aE9mU2NyZWVuIChGUkFN RV9YX1NDUkVFTiAoZikpKTsKICAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CkBAIC05NTU3LDcg Kzk1NTcsNyBAQCBnc19sb2FkIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1n KQogICAgICBpZiBzdWNjZXNzZnVsLiAgV2UgZG8gbm90IHJlY29yZF91bndpbmRfcHJvdGVj dCBoZXJlIGJlY2F1c2UKICAgICAgb3RoZXIgcGxhY2VzIGluIHJlZGlzcGxheSBsaWtlIGNh bGxpbmcgd2luZG93IHNjcm9sbCBmdW5jdGlvbnMKICAgICAgZG9uJ3QgZWl0aGVyLiAgTGV0 IHRoZSBMaXNwIGxvYWRlciB1c2UgYHVud2luZC1wcm90ZWN0JyBpbnN0ZWFkLiAgKi8KLSAg cHJpbnRudW0xID0gRlJBTUVfWF9XSU5ET1cgKGYpOworICBwcmludG51bTEgPSBGUkFNRV9Y X0RSQVdBQkxFIChmKTsKICAgcHJpbnRudW0yID0gaW1nLT5waXhtYXA7CiAgIHdpbmRvd19h bmRfcGl4bWFwX2lkCiAgICAgPSBtYWtlX2Zvcm1hdHRlZF9zdHJpbmcgKGJ1ZmZlciwgIiUi cE11IiAlInBNdSwgcHJpbnRudW0xLCBwcmludG51bTIpOwpkaWZmIC0tZ2l0IGEvc3JjL25z Zm5zLm0gYi9zcmMvbnNmbnMubQppbmRleCBjZTI2MjJjLi5iODI2NDYwIDEwMDY0NAotLS0g YS9zcmMvbnNmbnMubQorKysgYi9zcmMvbnNmbnMubQpAQCAtOTcxLDYgKzk3MSw3IEBAIFR1 cm4gdGhlIGlucHV0IG1lbnUgKGFuIE5TTWVudSkgaW50byBhIGxpc3AgbGlzdCBmb3IgdHJh Y2tpbmcgb24gbGlzcCBzaWRlCiAgIHhfc2V0X2FscGhhLAogICAwLCAvKiB4X3NldF9zdGlj a3kgKi8KICAgMCwgLyogeF9zZXRfdG9vbF9iYXJfcG9zaXRpb24gKi8KKyAgMCwgLyogeF9z ZXRfaW5oaWJpdF9kb3VibGVfYnVmZmVyaW5nICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXJtaG9va3MuaCBiL3NyYy90ZXJtaG9va3MuaAppbmRleCBmZjc0ZDk5Li45NjAzMjNh IDEwMDY0NAotLS0gYS9zcmMvdGVybWhvb2tzLmgKKysrIGIvc3JjL3Rlcm1ob29rcy5oCkBA IC02MjgsNyArNjI4LDEyIEBAIHN0cnVjdCB0ZXJtaW5hbAogICBpbnQgKCpyZWFkX3NvY2tl dF9ob29rKSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBpbnB1dF9ldmVudCAqaG9sZF9xdWl0KTsKIAotICAvKiBDYWxs ZWQgd2hlbiBhIGZyYW1lJ3MgZGlzcGxheSBiZWNvbWVzIGVudGlyZWx5IHVwIHRvIGRhdGUu ICAqLworICAvKiBDYWxsZWQgd2hlbiBhIGZyYW1lJ3MgZGlzcGxheSBiZWNvbWVzIGVudGly ZWx5IHVwIHRvIGRhdGUuCisKKyAgICAgTi5CLiBPbiBzb21lIGRvdWJsZS1idWZmZXJlZCB3 aW5kb3cgc3lzdGVtcywgZnJhbWUgdXBkYXRlcyBtYXkgYmUKKyAgICAgaGlkZGVuIGZyb20g dGhlIHVzZXIgdW50aWwgZnJhbWVfdXBfdG9fZGF0ZV9ob29rIG9yIGZsdXNoX2ZyYW1lCisg ICAgIGlzIGNhbGxlZC4gIFJlZGlzcGxheSBhdXRvbWF0aWNhbGx5IHJ1bnMgdGhpcyBob29r LgorICAgICAqLwogICB2b2lkICgqZnJhbWVfdXBfdG9fZGF0ZV9ob29rKSAoc3RydWN0IGZy YW1lICopOwogCiAMCmRpZmYgLS1naXQgYS9zcmMvdzMyZm5zLmMgYi9zcmMvdzMyZm5zLmMK aW5kZXggMmIwN2JiMi4uMWQ4M2IwMiAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBi L3NyYy93MzJmbnMuYwpAQCAtOTc1Nyw2ICs5NzU3LDcgQEAgZnJhbWVfcGFybV9oYW5kbGVy IHczMl9mcmFtZV9wYXJtX2hhbmRsZXJzW10gPQogICB4X3NldF9hbHBoYSwKICAgMCwgLyog eF9zZXRfc3RpY2t5ICovCiAgIDAsIC8qIHhfc2V0X3Rvb2xfYmFyX3Bvc2l0aW9uICovCisg IDAsIC8qIHhfc2V0X2luaGliaXRfZG91YmxlX2J1ZmZlcmluZyAqLwogfTsKIAogdm9pZApk aWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCAxYTI3YzRjLi44 ZjFkYmY0IDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAt MjUwMSw3ICsyNTAxLDcgQEAgcmVtZW1iZXJfbW91c2VfZ2x5cGggKHN0cnVjdCBmcmFtZSAq ZiwgaW50IGd4LCBpbnQgZ3ksIE5hdGl2ZVJlY3RhbmdsZSAqcmVjdCkKIAogICAvKiBWaXNp YmxlIGZlZWRiYWNrIGZvciBkZWJ1Z2dpbmcuICAqLwogI2lmIGZhbHNlICYmIGRlZmluZWQg SEFWRV9YX1dJTkRPV1MKLSAgWERyYXdSZWN0YW5nbGUgKEZSQU1FX1hfRElTUExBWSAoZiks IEZSQU1FX1hfV0lORE9XIChmKSwKKyAgWERyYXdSZWN0YW5nbGUgKEZSQU1FX1hfRElTUExB WSAoZiksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkgIGYtPm91dHB1dF9kYXRhLngtPm5v cm1hbF9nYywKIAkJICBneCwgZ3ksIHdpZHRoLCBoZWlnaHQpOwogI2VuZGlmCkBAIC0xNDA3 Miw2ICsxNDA3MiwxNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwgKHZvaWQpCiAJCSAgaWYgKCFm X3JlZGlzcGxheV9mbGFnICYmIGYtPnJlZGlzcGxheSkKIAkJICAgIGdvdG8gcmV0cnlfZnJh bWU7CiAKKyAgICAgICAgICAgICAgICAgIC8qIEluIHNvbWUgY2FzZSAoZS5nLiwgd2luZG93 IHJlc2l6ZSksIHdlIG5vdGljZQorICAgICAgICAgICAgICAgICAgICAgb25seSBkdXJpbmcg d2luZG93IHVwZGF0aW5nIHRoYXQgdGhlIHdpbmRvdworICAgICAgICAgICAgICAgICAgICAg Y29udGVudCBjaGFuZ2VkIHVucHJlZGljdGFibHkgKGUuZy4sIGEgR1RLCisgICAgICAgICAg ICAgICAgICAgICBzY3JvbGxiYXIgbW92ZWQpIGFuZCB0aGF0IG91ciBwcmV2aW91cyBlc3Rp bWF0aW9uCisgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZnJhbWUgY29udGVudCB3YXMg Z2FyYmFnZS4gIFdlIGhhdmUgdG8KKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IG92ZXIu ICBUaGVzZSBjYXNlcyBzaG91bGQgYmUgcmFyZSwgc28gZ29pbmcKKyAgICAgICAgICAgICAg ICAgICAgIGFsbCB0aGUgd2F5IGJhY2sgdG8gdGhlIHRvcCBvZiByZWRpc3BsYXkgc2hvdWxk CisgICAgICAgICAgICAgICAgICAgICBiZSBnb29kIGVub3VnaC4gICovCisgICAgICAgICAg ICAgICAgICBpZiAoRlJBTUVfR0FSQkFHRURfUCAoZikpCisgICAgICAgICAgICAgICAgICAg IGdvdG8gcmV0cnk7CisKIAkJICAvKiBQcmV2ZW50IHZhcmlvdXMga2luZHMgb2Ygc2lnbmFs cyBkdXJpbmcgZGlzcGxheQogCQkgICAgIHVwZGF0ZS4gIHN0ZGlvIGlzIG5vdCByb2J1c3Qg YWJvdXQgaGFuZGxpbmcKIAkJICAgICBzaWduYWxzLCB3aGljaCBjYW4gY2F1c2UgYW4gYXBw YXJlbnQgSS9PIGVycm9yLiAgKi8KQEAgLTE0MzI1LDcgKzE0MzM2LDE3IEBAIHJlZGlzcGxh eV9wcmVzZXJ2ZV9lY2hvX2FyZWEgKGludCBmcm9tX3doZXJlKQogICBlbHNlCiAgICAgcmVk aXNwbGF5X2ludGVybmFsICgpOwogCi0gIGZsdXNoX2ZyYW1lIChTRUxFQ1RFRF9GUkFNRSAo KSk7CisgIC8qIEF2b2lkIGZsdXNoX2ZyYW1lIHVuY29uZGl0aW9uYWxseSBmb3IgZG91Ymxl LWJ1ZmZlcmVkIGZyYW1lcywKKyAgICAgc2luY2UgZmx1c2hfZnJhbWUgd2lsbCBjYXVzZSBh IGJ1ZmZlciBmbGlwLCBhbmQgd2UgZG9uJ3Qgd2FudCB0bworICAgICBkbyBidWZmZXIgZmxp cHMgdW5sZXNzIHdlIGtub3cgc29tZXRoaW5nIGhhcyBjaGFuZ2VkLiAgSWYgd2Ugd2VyZQor ICAgICB0byBjYWxsIGZsdXNoX2ZyYW1lIHVuY29uZGl0aW9uYWxseSwgd2UnZCBpc3N1ZSBh biB1bmNlYXNpbmcKKyAgICAgc2VyaWVzIG9mIHVzZWxlc3MgYnVmZmVyIGZsaXBzIGluIHJl c3BvbnNlIHRvIG1vdXNlIG1vdmVtZW50IG92ZXIKKyAgICAgaW5lcnQgcGFydHMgb2YgYnVm ZmVycy4gICovCisgIGJsb2NrX2lucHV0ICgpOworICBzdHJ1Y3QgZnJhbWUgKmYgPSBTRUxF Q1RFRF9GUkFNRSAoKTsKKyAgaWYgKCFmLT5kb3VibGVfYnVmZmVyZWQpCisgICAgZmx1c2hf ZnJhbWUgKGYpOworICB1bmJsb2NrX2lucHV0ICgpOwogfQogCiAKQEAgLTI0NjI2LDcgKzI0 NjQ3LDcgQEAgaW5pdF9nbHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMsCiAg IHMtPmhkYyA9IGhkYzsKICNlbmRpZgogICBzLT5kaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZ IChzLT5mKTsKLSAgcy0+d2luZG93ID0gRlJBTUVfWF9XSU5ET1cgKHMtPmYpOworICBzLT53 aW5kb3cgPSBGUkFNRV9YX0RSQVdBQkxFIChzLT5mKTsKICAgcy0+Y2hhcjJiID0gY2hhcjJi OwogICBzLT5obCA9IGhsOwogICBzLT5yb3cgPSByb3c7CkBAIC0yODc4Niw2ICsyODgwNywx MiBAQCBzaG93X21vdXNlX2ZhY2UgKE1vdXNlX0hMSW5mbyAqaGxpbmZvLCBlbnVtIGRyYXdf Z2x5cGhzX2ZhY2UgZHJhdykKIAkgIHVuYmxvY2tfaW5wdXQgKCk7CiAjZW5kaWYJLyogSEFW RV9XSU5ET1dfU1lTVEVNICovCiAJfQorCisgICAgICAvKiBJbiBhIGRvdWJsZSBidWZmZXJl ZCBmcmFtZSwgdGhlIGRyYXdpbmcgY29tbWFuZHMgYWJvdmUgd2lsbAorICAgICAgICAgaGF2 ZSBubyBpbW1lZGlhdGUgZWZmZWN0LCBzbyB0ZWxsIHJlZGlzcGxheSB0byBkbyBhIGJ1ZmZl cgorICAgICAgICAgZmxpcC4gICovCisgICAgICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpICYm IGYtPmRvdWJsZV9idWZmZXJlZCkKKyAgICAgICAgZnNldF9yZWRpc3BsYXkgKGYpOwogICAg IH0KIAogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQpkaWZmIC0tZ2l0IGEvc3JjL3hmYWNl cy5jIGIvc3JjL3hmYWNlcy5jCmluZGV4IDU4MzdmMzUuLmFjY2I5OGIgMTAwNjQ0Ci0tLSBh L3NyYy94ZmFjZXMuYworKysgYi9zcmMveGZhY2VzLmMKQEAgLTQ5NSw3ICs0OTUsNyBAQCB4 X2NyZWF0ZV9nYyAoc3RydWN0IGZyYW1lICpmLCB1bnNpZ25lZCBsb25nIG1hc2ssIFhHQ1Zh bHVlcyAqeGdjdikKIHsKICAgR0MgZ2M7CiAgIGJsb2NrX2lucHV0ICgpOwotICBnYyA9IFhD cmVhdGVHQyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9XSU5ET1cgKGYpLCBtYXNr LCB4Z2N2KTsKKyAgZ2MgPSBYQ3JlYXRlR0MgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1F X1hfRFJBV0FCTEUgKGYpLCBtYXNrLCB4Z2N2KTsKICAgdW5ibG9ja19pbnB1dCAoKTsKICAg SUZfREVCVUcgKCsrbmdjcyk7CiAgIHJldHVybiBnYzsKZGlmZiAtLWdpdCBhL3NyYy94Zm5z LmMgYi9zcmMveGZucy5jCmluZGV4IDg1NzFkMGUuLjdmOTUzODEgMTAwNjQ0Ci0tLSBhL3Ny Yy94Zm5zLmMKKysrIGIvc3JjL3hmbnMuYwpAQCAtNTMsNiArNTMsMTAgQEAgYWxvbmcgd2l0 aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwogI2luY2x1ZGUgImd0a3V0aWwuaCIKICNlbmRpZgogCisjaWZkZWYgSEFWRV9Y REJFCisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRiZS5oPgorI2VuZGlmCisKICNpZmRl ZiBVU0VfWF9UT09MS0lUCiAjaW5jbHVkZSA8WDExL1NoZWxsLmg+CiAKQEAgLTcwMSw2ICs3 MDUsMzUgQEAgeF9zZXRfdG9vbF9iYXJfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwKICAg ICB3cm9uZ19jaG9pY2UgKGNob2ljZSwgbmV3X3ZhbHVlKTsKIH0KIAorc3RhdGljIHZvaWQK K3hfc2V0X2luaGliaXRfZG91YmxlX2J1ZmZlcmluZyAoc3RydWN0IGZyYW1lICpmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwX09iamVjdCBuZXdfdmFsdWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0IG9sZF92YWx1ZSkK K3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIGlmIChGUkFNRV9YX1dJTkRPVyAoZikgJiYgIUVR IChuZXdfdmFsdWUsIG9sZF92YWx1ZSkpCisgICAgeworICAgICAgYm9vbCB3YW50X2RvdWJs ZV9idWZmZXJpbmcgPSBOSUxQIChuZXdfdmFsdWUpOworICAgICAgYm9vbCB3YXNfZG91Ymxl X2J1ZmZlcmVkID0gRlJBTUVfWF9ET1VCTEVfQlVGRkVSRURfUCAoZik7CisgICAgICAvKiBm b250X2Ryb3BfeHJlbmRlcl9zdXJmYWNlcyBpbiB4ZnRmb250IGRvZXMgc29tZXRoaW5nIG9u bHkgaWYKKyAgICAgICAgIHdlJ3JlIGRvdWJsZS1idWZmZXJlZCwgc28gY2FsbCBmb250X2Ry b3BfeHJlbmRlcl9zdXJmYWNlcyBiZWZvcmUKKyAgICAgICAgIGFuZCBhZnRlciBhbnkgcG90 ZW50aWFsIGNoYW5nZS4gIE9uZSBvZiB0aGUgY2FsbHMgd2lsbCBlbmQgdXAKKyAgICAgICAg IGJlaW5nIGEgbm8tb3AuICAqLworICAgICAgaWYgKHdhbnRfZG91YmxlX2J1ZmZlcmluZyAh PSB3YXNfZG91YmxlX2J1ZmZlcmVkKQorICAgICAgICBmb250X2Ryb3BfeHJlbmRlcl9zdXJm YWNlcyAoZik7CisgICAgICBpZiAoRlJBTUVfWF9ET1VCTEVfQlVGRkVSRURfUCAoZikgJiYg IXdhbnRfZG91YmxlX2J1ZmZlcmluZykKKyAgICAgICAgdGVhcl9kb3duX3hfYmFja19idWZm ZXIgKGYpOworICAgICAgZWxzZSBpZiAoIUZSQU1FX1hfRE9VQkxFX0JVRkZFUkVEX1AgKGYp ICYmIHdhbnRfZG91YmxlX2J1ZmZlcmluZykKKyAgICAgICAgc2V0X3VwX3hfYmFja19idWZm ZXIgKGYpOworICAgICAgaWYgKEZSQU1FX1hfRE9VQkxFX0JVRkZFUkVEX1AgKGYpICE9IHdh c19kb3VibGVfYnVmZmVyZWQpCisgICAgICAgIHsKKyAgICAgICAgICBTRVRfRlJBTUVfR0FS QkFHRUQgKGYpOworICAgICAgICAgIGZvbnRfZHJvcF94cmVuZGVyX3N1cmZhY2VzIChmKTsK KyAgICAgICAgfQorICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKK30KKwogI2lmZGVmIFVT RV9HVEsKIAogLyogU2V0IGljb24gZnJvbSBGSUxFIGZvciBmcmFtZSBGLiAgQnkgdXNpbmcg R1RLIGZ1bmN0aW9ucyB0aGUgaWNvbgpAQCAtMjQ4Myw2ICsyNTE2LDY5IEBAIHhpY19zZXRf eGZvbnRzZXQgKHN0cnVjdCBmcmFtZSAqZiwgY29uc3QgY2hhciAqYmFzZV9mb250bmFtZSkK IAogCiAMCisKK3ZvaWQKK3NldF91cF94X2JhY2tfYnVmZmVyIChzdHJ1Y3QgZnJhbWUgKmYp Cit7CisjaWZkZWYgSEFWRV9YREJFCisgIGJsb2NrX2lucHV0ICgpOworICBpZiAoRlJBTUVf WF9XSU5ET1cgKGYpICYmICFGUkFNRV9YX0RPVUJMRV9CVUZGRVJFRF9QIChmKSkKKyAgICB7 CisgICAgICBlYXNzZXJ0ICghZi0+ZG91YmxlX2J1ZmZlcmVkKTsKKyAgICAgIEZSQU1FX1hf RFJBV0FCTEUgKGYpID0gRlJBTUVfWF9XSU5ET1cgKGYpOworICAgICAgaWYgKEZSQU1FX0RJ U1BMQVlfSU5GTyAoZiktPnN1cHBvcnRzX3hkYmUpCisgICAgICAgIHsKKyAgICAgICAgICAv KiBJZiBhbGxvY2F0aW5nIGEgYmFjayBidWZmZXIgZmFpbHMsIGVpdGhlciBiZWNhdXNlIHRo ZQorICAgICAgICAgICAgIHNlcnZlciByYW4gb3V0IG9mIG1lbW9yeSBvciB3ZSBkb24ndCBo YXZlIHRoZSByaWdodCBraW5kCisgICAgICAgICAgICAgb2YgdmlzdWFsLCBqdXN0IHVzZSBz aW5nbGUtYnVmZmVyZWQgcmVuZGVyaW5nLiAgKi8KKyAgICAgICAgICB4X2NhdGNoX2Vycm9y cyAoRlJBTUVfWF9ESVNQTEFZIChmKSk7CisgICAgICAgICAgRlJBTUVfWF9EUkFXQUJMRSAo ZikgPSBYZGJlQWxsb2NhdGVCYWNrQnVmZmVyTmFtZSAoCisgICAgICAgICAgICBGUkFNRV9Y X0RJU1BMQVkgKGYpLAorICAgICAgICAgICAgRlJBTUVfWF9XSU5ET1cgKGYpLAorICAgICAg ICAgICAgWGRiZUNvcGllZCk7CisgICAgICAgICAgaWYgKHhfaGFkX2Vycm9yc19wIChGUkFN RV9YX0RJU1BMQVkgKGYpKSkKKyAgICAgICAgICAgIEZSQU1FX1hfRFJBV0FCTEUgKGYpID0g RlJBTUVfWF9XSU5ET1cgKGYpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZi0+ ZG91YmxlX2J1ZmZlcmVkID0gdHJ1ZTsKKyAgICAgICAgICB4X3VuY2F0Y2hfZXJyb3JzX2Fm dGVyX2NoZWNrICgpOworICAgICAgICB9CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOwor I2VuZGlmCit9CisKK3ZvaWQKK3RlYXJfZG93bl94X2JhY2tfYnVmZmVyIChzdHJ1Y3QgZnJh bWUgKmYpCit7CisjaWZkZWYgSEFWRV9YREJFCisgIGJsb2NrX2lucHV0ICgpOworICBpZiAo RlJBTUVfWF9XSU5ET1cgKGYpICYmIEZSQU1FX1hfRE9VQkxFX0JVRkZFUkVEX1AgKGYpKQor ICAgIHsKKyAgICAgIGlmIChGUkFNRV9YX0RPVUJMRV9CVUZGRVJFRF9QIChmKSkKKyAgICAg ICAgeworICAgICAgICAgIFhkYmVEZWFsbG9jYXRlQmFja0J1ZmZlck5hbWUgKEZSQU1FX1hf RElTUExBWSAoZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RlJBTUVfWF9EUkFXQUJMRSAoZikpOworICAgICAgICAgIEZSQU1FX1hfRFJBV0FCTEUgKGYp ID0gRlJBTUVfWF9XSU5ET1cgKGYpOworICAgICAgICAgIGYtPmRvdWJsZV9idWZmZXJlZCA9 IGZhbHNlOworICAgICAgICB9CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworI2VuZGlm Cit9CisKKy8qIFNldCB1cCBkb3VibGUgYnVmZmVyaW5nIGlmIHRoZSBmcmFtZSBwYXJhbWV0 ZXJzIGRvbid0IHByb2hpYml0CisgICBpdC4gICovCit2b2lkCitpbml0aWFsX3NldF91cF94 X2JhY2tfYnVmZmVyIChzdHJ1Y3QgZnJhbWUgKmYpCit7CisgIGJsb2NrX2lucHV0ICgpOwor ICBlYXNzZXJ0IChGUkFNRV9YX1dJTkRPVyAoZikpOworICBGUkFNRV9YX0RSQVdBQkxFIChm KSA9IEZSQU1FX1hfV0lORE9XIChmKTsKKyAgaWYgKE5JTFAgKENEUiAoRmFzc3EgKFFpbmhp Yml0X2RvdWJsZV9idWZmZXJpbmcsIGYtPnBhcmFtX2FsaXN0KSkpKQorICAgIHNldF91cF94 X2JhY2tfYnVmZmVyIChmKTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKK30KKwogI2lmZGVmIFVT RV9YX1RPT0xLSVQKIAogLyogQ3JlYXRlIGFuZCBzZXQgdXAgdGhlIFggd2lkZ2V0IGZvciBm cmFtZSBGLiAgKi8KQEAgLTI2MzgsNyArMjczNCw3IEBAIHhfd2luZG93IChzdHJ1Y3QgZnJh bWUgKmYsIGxvbmcgd2luZG93X3Byb21wdGluZykKIAkJICAgICBmLT5vdXRwdXRfZGF0YS54 LT5wYXJlbnRfZGVzYywgMCwgMCk7CiAKICAgRlJBTUVfWF9XSU5ET1cgKGYpID0gWHRXaW5k b3cgKGZyYW1lX3dpZGdldCk7Ci0KKyAgaW5pdGlhbF9zZXRfdXBfeF9iYWNrX2J1ZmZlciAo Zik7CiAgIHZhbGlkYXRlX3hfcmVzb3VyY2VfbmFtZSAoKTsKIAogICBjbGFzc19oaW50cy5y ZXNfbmFtZSA9IFNTREFUQSAoVnhfcmVzb3VyY2VfbmFtZSk7CkBAIC0yNzg1LDYgKzI4ODEs NyBAQCB4X3dpbmRvdyAoc3RydWN0IGZyYW1lICpmKQogCQkgICAgIElucHV0T3V0cHV0LCAv KiBjbGFzcyAqLwogCQkgICAgIEZSQU1FX1hfVklTVUFMIChmKSwKIAkJICAgICBhdHRyaWJ1 dGVfbWFzaywgJmF0dHJpYnV0ZXMpOworICBpbml0aWFsX3NldF91cF94X2JhY2tfYnVmZmVy IChmKTsKIAogI2lmZGVmIEhBVkVfWF9JMThOCiAgIGlmICh1c2VfeGltKQpAQCAtMjkzOCw3 ICszMDM1LDcgQEAgeF9tYWtlX2djIChzdHJ1Y3QgZnJhbWUgKmYpCiAgIGdjX3ZhbHVlcy5s aW5lX3dpZHRoID0gMDsJLyogTWVhbnMgMSB1c2luZyBmYXN0IGFsZ29yaXRobS4gICovCiAg IGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYwogICAgID0gWENyZWF0ZUdDIChGUkFNRV9Y X0RJU1BMQVkgKGYpLAotCQkgRlJBTUVfWF9XSU5ET1cgKGYpLAorICAgICAgICAgICAgICAg ICBGUkFNRV9YX0RSQVdBQkxFIChmKSwKIAkJIEdDTGluZVdpZHRoIHwgR0NGb3JlZ3JvdW5k IHwgR0NCYWNrZ3JvdW5kLAogCQkgJmdjX3ZhbHVlcyk7CiAKQEAgLTI5NDcsNyArMzA0NCw3 IEBAIHhfbWFrZV9nYyAoc3RydWN0IGZyYW1lICpmKQogICBnY192YWx1ZXMuYmFja2dyb3Vu ZCA9IEZSQU1FX0ZPUkVHUk9VTkRfUElYRUwgKGYpOwogICBmLT5vdXRwdXRfZGF0YS54LT5y ZXZlcnNlX2djCiAgICAgPSBYQ3JlYXRlR0MgKEZSQU1FX1hfRElTUExBWSAoZiksCi0JCSBG UkFNRV9YX1dJTkRPVyAoZiksCisgICAgICAgICAgICAgICAgIEZSQU1FX1hfRFJBV0FCTEUg KGYpLAogCQkgR0NGb3JlZ3JvdW5kIHwgR0NCYWNrZ3JvdW5kIHwgR0NMaW5lV2lkdGgsCiAJ CSAmZ2NfdmFsdWVzKTsKIApAQCAtMjk1Niw3ICszMDUzLDcgQEAgeF9tYWtlX2djIChzdHJ1 Y3QgZnJhbWUgKmYpCiAgIGdjX3ZhbHVlcy5iYWNrZ3JvdW5kID0gZi0+b3V0cHV0X2RhdGEu eC0+Y3Vyc29yX3BpeGVsOwogICBnY192YWx1ZXMuZmlsbF9zdHlsZSA9IEZpbGxPcGFxdWVT dGlwcGxlZDsKICAgZi0+b3V0cHV0X2RhdGEueC0+Y3Vyc29yX2djCi0gICAgPSBYQ3JlYXRl R0MgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgICA9IFhD cmVhdGVHQyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJ CSAoR0NGb3JlZ3JvdW5kIHwgR0NCYWNrZ3JvdW5kCiAJCSAgfCBHQ0ZpbGxTdHlsZSB8IEdD TGluZVdpZHRoKSwKIAkJICZnY192YWx1ZXMpOwpAQCAtMzQ2Myw2ICszNTYwLDkgQEAgVGhp cyBmdW5jdGlvbiBpcyBhbiBpbnRlcm5hbCBwcmltaXRpdmUtLXVzZSBgbWFrZS1mcmFtZScg aW5zdGVhZC4gICovKQogCQkgICAgICAgIndhaXRGb3JXTSIsICJXYWl0Rm9yV00iLCBSRVNf VFlQRV9CT09MRUFOKTsKICAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFF0b29s X2Jhcl9wb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfVE9PTF9CQVJf UE9TSVRJT04gKGYpLCAwLCAwLCBSRVNfVFlQRV9TWU1CT0wpOworICB4X2RlZmF1bHRfcGFy YW1ldGVyIChmLCBwYXJtcywgUWluaGliaXRfZG91YmxlX2J1ZmZlcmluZywgUW5pbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgImluaGliaXREb3VibGVCdWZmZXJpbmciLCAiSW5oaWJp dERvdWJsZUJ1ZmZlcmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgIFJFU19UWVBFX0JP T0xFQU4pOwogCiAgIC8qIENvbXB1dGUgdGhlIHNpemUgb2YgdGhlIFggd2luZG93LiAgKi8K ICAgd2luZG93X3Byb21wdGluZyA9IHhfZmlndXJlX3dpbmRvd19zaXplIChmLCBwYXJtcywg dHJ1ZSwgJnhfd2lkdGgsICZ4X2hlaWdodCk7CkBAIC01NjM3LDYgKzU3MzcsNyBAQCB4X2Ny ZWF0ZV90aXBfZnJhbWUgKHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5aW5mbywgTGlzcF9P YmplY3QgcGFybXMpCiAJCSAgICAgICBmLT5ib3JkZXJfd2lkdGgsCiAJCSAgICAgICBDb3B5 RnJvbVBhcmVudCwgSW5wdXRPdXRwdXQsIENvcHlGcm9tUGFyZW50LAogCQkgICAgICAgbWFz aywgJmF0dHJzKTsKKyAgICBpbml0aWFsX3NldF91cF94X2JhY2tfYnVmZmVyIChmKTsKICAg ICBYQ2hhbmdlUHJvcGVydHkgKEZSQU1FX1hfRElTUExBWSAoZiksIHRpcF93aW5kb3csCiAg ICAgICAgICAgICAgICAgICAgICBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5YYXRvbV9uZXRf d2luZG93X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICBYQV9BVE9NLCAzMiwgUHJvcE1v ZGVSZXBsYWNlLApAQCAtNjIxMyw2ICs2MzE0LDE1IEBAIFZhbHVlIGlzIHQgaWYgdG9vbHRp cCB3YXMgb3BlbiwgbmlsIG90aGVyd2lzZS4gICovKQogICByZXR1cm4geF9oaWRlX3RpcCAo IXRvb2x0aXBfcmV1c2VfaGlkZGVuX2ZyYW1lKTsKIH0KIAorREVGVU4gKCJ4LWRvdWJsZS1i dWZmZXJlZC1wIiwgRnhfZG91YmxlX2J1ZmZlcmVkX3AsIFN4X2RvdWJsZV9idWZmZXJlZF9w LAorICAgICAgIDAsIDEsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBGUkFNRSBp cyBiZWluZyBkb3VibGUgYnVmZmVyZWQuICAqLykKKyAgICAgKExpc3BfT2JqZWN0IGZyYW1l KQoreworICBzdHJ1Y3QgZnJhbWUgKmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOwor ICByZXR1cm4gRlJBTUVfWF9ET1VCTEVfQlVGRkVSRURfUCAoZikgPyBRdCA6IFFuaWw7Cit9 CisKIAwKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJRmlsZSBzZWxlY3Rpb24gZGlhbG9nCkBA IC02ODY0LDYgKzY5NzQsNyBAQCBmcmFtZV9wYXJtX2hhbmRsZXIgeF9mcmFtZV9wYXJtX2hh bmRsZXJzW10gPQogICB4X3NldF9hbHBoYSwKICAgeF9zZXRfc3RpY2t5LAogICB4X3NldF90 b29sX2Jhcl9wb3NpdGlvbiwKKyAgeF9zZXRfaW5oaWJpdF9kb3VibGVfYnVmZmVyaW5nLAog fTsKIAogdm9pZApAQCAtNzA4MCw2ICs3MTkxLDcgQEAgV2hlbiB1c2luZyBHdGsrIHRvb2x0 aXBzLCB0aGUgdG9vbHRpcCBmYWNlIGlzIG5vdCB1c2VkLiAgKi8pOwogCiAgIGRlZnN1YnIg KCZTeF9zaG93X3RpcCk7CiAgIGRlZnN1YnIgKCZTeF9oaWRlX3RpcCk7CisgIGRlZnN1YnIg KCZTeF9kb3VibGVfYnVmZmVyZWRfcCk7CiAgIHRpcF90aW1lciA9IFFuaWw7CiAgIHN0YXRp Y3BybyAoJnRpcF90aW1lcik7CiAgIHRpcF9mcmFtZSA9IFFuaWw7CmRpZmYgLS1naXQgYS9z cmMveGZvbnQuYyBiL3NyYy94Zm9udC5jCmluZGV4IDQ1YjBlMGEuLmMyYjczMTcgMTAwNjQ0 Ci0tLSBhL3NyYy94Zm9udC5jCisrKyBiL3NyYy94Zm9udC5jCkBAIC0xMDU3LDIwICsxMDU3 LDIwIEBAIHhmb250X2RyYXcgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMsIGludCBmcm9tLCBp bnQgdG8sIGludCB4LCBpbnQgeSwKIAl7CiAJICBpZiAocy0+cGFkZGluZ19wKQogCSAgICBm b3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0JICAgICAgWERyYXdJbWFnZVN0cmluZyAoRlJB TUVfWF9ESVNQTEFZIChzLT5mKSwgRlJBTUVfWF9XSU5ET1cgKHMtPmYpLAorICAgICAgICAg ICAgICBYRHJhd0ltYWdlU3RyaW5nIChGUkFNRV9YX0RJU1BMQVkgKHMtPmYpLCBGUkFNRV9Y X0RSQVdBQkxFIChzLT5mKSwKIAkJCQlnYywgeCArIGksIHksIHN0ciArIGksIDEpOwogCSAg ZWxzZQotCSAgICBYRHJhd0ltYWdlU3RyaW5nIChGUkFNRV9YX0RJU1BMQVkgKHMtPmYpLCBG UkFNRV9YX1dJTkRPVyAocy0+ZiksCisgICAgICAgICAgICBYRHJhd0ltYWdlU3RyaW5nIChG UkFNRV9YX0RJU1BMQVkgKHMtPmYpLCBGUkFNRV9YX0RSQVdBQkxFIChzLT5mKSwKIAkJCSAg ICAgIGdjLCB4LCB5LCBzdHIsIGxlbik7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGlmIChz LT5wYWRkaW5nX3ApCiAJICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLQkgICAgICBY RHJhd1N0cmluZyAoRlJBTUVfWF9ESVNQTEFZIChzLT5mKSwgRlJBTUVfWF9XSU5ET1cgKHMt PmYpLAorICAgICAgICAgICAgICBYRHJhd1N0cmluZyAoRlJBTUVfWF9ESVNQTEFZIChzLT5m KSwgRlJBTUVfWF9EUkFXQUJMRSAocy0+ZiksCiAJCQkgICBnYywgeCArIGksIHksIHN0ciAr IGksIDEpOwogCSAgZWxzZQotCSAgICBYRHJhd1N0cmluZyAoRlJBTUVfWF9ESVNQTEFZIChz LT5mKSwgRlJBTUVfWF9XSU5ET1cgKHMtPmYpLAorICAgICAgICAgICAgWERyYXdTdHJpbmcg KEZSQU1FX1hfRElTUExBWSAocy0+ZiksIEZSQU1FX1hfRFJBV0FCTEUgKHMtPmYpLAogCQkJ IGdjLCB4LCB5LCBzdHIsIGxlbik7CiAJfQogICAgICAgdW5ibG9ja19pbnB1dCAoKTsKQEAg LTEwODMsMjAgKzEwODMsMjAgQEAgeGZvbnRfZHJhdyAoc3RydWN0IGdseXBoX3N0cmluZyAq cywgaW50IGZyb20sIGludCB0bywgaW50IHgsIGludCB5LAogICAgIHsKICAgICAgIGlmIChz LT5wYWRkaW5nX3ApCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotCSAgWERyYXdJbWFn ZVN0cmluZzE2IChGUkFNRV9YX0RJU1BMQVkgKHMtPmYpLCBGUkFNRV9YX1dJTkRPVyAocy0+ ZiksCisgICAgICAgICAgWERyYXdJbWFnZVN0cmluZzE2IChGUkFNRV9YX0RJU1BMQVkgKHMt PmYpLCBGUkFNRV9YX0RSQVdBQkxFIChzLT5mKSwKIAkJCSAgICAgIGdjLCB4ICsgaSwgeSwg cy0+Y2hhcjJiICsgZnJvbSArIGksIDEpOwogICAgICAgZWxzZQotCVhEcmF3SW1hZ2VTdHJp bmcxNiAoRlJBTUVfWF9ESVNQTEFZIChzLT5mKSwgRlJBTUVfWF9XSU5ET1cgKHMtPmYpLAor ICAgICAgICBYRHJhd0ltYWdlU3RyaW5nMTYgKEZSQU1FX1hfRElTUExBWSAocy0+ZiksIEZS QU1FX1hfRFJBV0FCTEUgKHMtPmYpLAogCQkJICAgIGdjLCB4LCB5LCBzLT5jaGFyMmIgKyBm cm9tLCBsZW4pOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGlmIChzLT5wYWRkaW5n X3ApCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotCSAgWERyYXdTdHJpbmcxNiAoRlJB TUVfWF9ESVNQTEFZIChzLT5mKSwgRlJBTUVfWF9XSU5ET1cgKHMtPmYpLAorICAgICAgICAg IFhEcmF3U3RyaW5nMTYgKEZSQU1FX1hfRElTUExBWSAocy0+ZiksIEZSQU1FX1hfRFJBV0FC TEUgKHMtPmYpLAogCQkJIGdjLCB4ICsgaSwgeSwgcy0+Y2hhcjJiICsgZnJvbSArIGksIDEp OwogICAgICAgZWxzZQotCVhEcmF3U3RyaW5nMTYgKEZSQU1FX1hfRElTUExBWSAocy0+Ziks IEZSQU1FX1hfV0lORE9XIChzLT5mKSwKKyAgICAgICAgWERyYXdTdHJpbmcxNiAoRlJBTUVf WF9ESVNQTEFZIChzLT5mKSwgRlJBTUVfWF9EUkFXQUJMRSAocy0+ZiksCiAJCSAgICAgICBn YywgeCwgeSwgcy0+Y2hhcjJiICsgZnJvbSwgbGVuKTsKICAgICB9CiAgIHVuYmxvY2tfaW5w dXQgKCk7CmRpZmYgLS1naXQgYS9zcmMveGZ0Zm9udC5jIGIvc3JjL3hmdGZvbnQuYwppbmRl eCAzNGM2ZjdkLi5lOWM0ZmRlIDEwMDY0NAotLS0gYS9zcmMveGZ0Zm9udC5jCisrKyBiL3Ny Yy94ZnRmb250LmMKQEAgLTU4Niw3ICs1ODYsNyBAQCB4ZnRmb250X2dldF94ZnRfZHJhdyAo c3RydWN0IGZyYW1lICpmKQogICAgIHsKICAgICAgIGJsb2NrX2lucHV0ICgpOwogICAgICAg eGZ0X2RyYXc9IFhmdERyYXdDcmVhdGUgKEZSQU1FX1hfRElTUExBWSAoZiksCi0JCQkgICAg ICAgRlJBTUVfWF9XSU5ET1cgKGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkJICAgICAgIEZSQU1FX1hfVklTVUFMIChmKSwK IAkJCSAgICAgICBGUkFNRV9YX0NPTE9STUFQIChmKSk7CiAgICAgICB1bmJsb2NrX2lucHV0 ICgpOwpAQCAtNjAwLDYgKzYwMCw4IEBAIHN0YXRpYyBpbnQKIHhmdGZvbnRfZHJhdyAoc3Ry dWN0IGdseXBoX3N0cmluZyAqcywgaW50IGZyb20sIGludCB0bywgaW50IHgsIGludCB5LAog ICAgICAgICAgICAgICBib29sIHdpdGhfYmFja2dyb3VuZCkKIHsKKyAgYmxvY2tfaW5wdXQg KCk7CisKICAgc3RydWN0IGZyYW1lICpmID0gcy0+ZjsKICAgc3RydWN0IGZhY2UgKmZhY2Ug PSBzLT5mYWNlOwogICBzdHJ1Y3QgeGZ0Zm9udF9pbmZvICp4ZnRmb250X2luZm8gPSAoc3Ry dWN0IHhmdGZvbnRfaW5mbyAqKSBzLT5mb250OwpAQCAtNjE0LDcgKzYxNiw2IEBAIHhmdGZv bnRfZHJhdyAoc3RydWN0IGdseXBoX3N0cmluZyAqcywgaW50IGZyb20sIGludCB0bywgaW50 IHgsIGludCB5LAogICAgIHhmdGZhY2VfaW5mbyA9IChzdHJ1Y3QgeGZ0ZmFjZV9pbmZvICop IGZhY2UtPmV4dHJhOwogICB4ZnRmb250X2dldF9jb2xvcnMgKGYsIGZhY2UsIHMtPmdjLCB4 ZnRmYWNlX2luZm8sCiAJCSAgICAgICZmZywgd2l0aF9iYWNrZ3JvdW5kID8gJmJnIDogTlVM TCk7Ci0gIGJsb2NrX2lucHV0ICgpOwogICBpZiAocy0+bnVtX2NsaXBzID4gMCkKICAgICBY ZnREcmF3U2V0Q2xpcFJlY3RhbmdsZXMgKHhmdF9kcmF3LCAwLCAwLCBzLT5jbGlwLCBzLT5u dW1fY2xpcHMpOwogICBlbHNlCkBAIC02NTQsNyArNjU1LDYgQEAgeGZ0Zm9udF9kcmF3IChz dHJ1Y3QgZ2x5cGhfc3RyaW5nICpzLCBpbnQgZnJvbSwgaW50IHRvLCBpbnQgeCwgaW50IHks CiAgICAgWGZ0RHJhd0dseXBocyAoeGZ0X2RyYXcsICZmZywgeGZ0Zm9udF9pbmZvLT54ZnRm b250LAogCQkgICB4LCB5LCBjb2RlLCBsZW4pOwogICB1bmJsb2NrX2lucHV0ICgpOwotCiAg IHJldHVybiBsZW47CiB9CiAKQEAgLTY3OCwxMyArNjc4LDEwIEBAIHhmdGZvbnRfc2hhcGUg KExpc3BfT2JqZWN0IGxnc3RyaW5nKQogc3RhdGljIGludAogeGZ0Zm9udF9lbmRfZm9yX2Zy YW1lIChzdHJ1Y3QgZnJhbWUgKmYpCiB7CisgIGJsb2NrX2lucHV0ICgpOwogICBYZnREcmF3 ICp4ZnRfZHJhdzsKIAotICAvKiBEb24ndCBkbyBhbnl0aGluZyBpZiBkaXNwbGF5IGlzIGRl YWQgKi8KLSAgaWYgKEZSQU1FX1hfRElTUExBWSAoZikgPT0gTlVMTCkgcmV0dXJuIDA7Ci0K ICAgeGZ0X2RyYXcgPSBmb250X2dldF9mcmFtZV9kYXRhIChmLCBReGZ0KTsKLQogICBpZiAo eGZ0X2RyYXcpCiAgICAgewogICAgICAgYmxvY2tfaW5wdXQgKCk7CkBAIC02OTIsOSArNjg5 LDE5IEBAIHhmdGZvbnRfZW5kX2Zvcl9mcmFtZSAoc3RydWN0IGZyYW1lICpmKQogICAgICAg dW5ibG9ja19pbnB1dCAoKTsKICAgICAgIGZvbnRfcHV0X2ZyYW1lX2RhdGEgKGYsIFF4ZnQs IE5VTEwpOwogICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKICAgcmV0dXJuIDA7CiB9CiAK K3N0YXRpYyB2b2lkCit4ZnRmb250X2Ryb3BfeHJlbmRlcl9zdXJmYWNlcyAoc3RydWN0IGZy YW1lICpmKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKEZSQU1FX1hfRE9VQkxFX0JV RkZFUkVEX1AgKGYpKQorICAgIHhmdGZvbnRfZW5kX2Zvcl9mcmFtZSAoZik7CisgIHVuYmxv Y2tfaW5wdXQgKCk7Cit9CisKIHN0YXRpYyBib29sCiB4ZnRmb250X2NhY2hlZF9mb250X29r IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGZvbnRfb2JqZWN0LAogICAgICAgICAg ICAgICAgICAgICAgICAgTGlzcF9PYmplY3QgZW50aXR5KQpAQCAtNzc3LDYgKzc4NCw5IEBA IFRoaXMgaXMgbmVlZGVkIHdpdGggc29tZSBmb250cyB0byBjb3JyZWN0IHZlcnRpY2FsIG92 ZXJsYXAgb2YgZ2x5cGhzLiAgKi8pOwogI2lmIGRlZmluZWQgKEhBVkVfTTE3Tl9GTFQpICYm IGRlZmluZWQgKEhBVkVfTElCT1RGKQogICB4ZnRmb250X2RyaXZlci5zaGFwZSA9IHhmdGZv bnRfc2hhcGU7CiAjZW5kaWYKKyAgLy8gV2hlbiB1c2luZyBYIGRvdWJsZSBidWZmZXJpbmcs IHRoZSBYZnREcmF3IHN0cnVjdHVyZSB3ZQorICAvLyBidWlsZCBzZWVtcyB0byBiZSB1c2Vs ZXNzIG9uY2UgYSBmcmFtZSBpcyByZXNpemVkLCBzbworICB4ZnRmb250X2RyaXZlci5kcm9w X3hyZW5kZXJfc3VyZmFjZXMgPSB4ZnRmb250X2Ryb3BfeHJlbmRlcl9zdXJmYWNlczsKIAog ICByZWdpc3Rlcl9mb250X2RyaXZlciAoJnhmdGZvbnRfZHJpdmVyLCBOVUxMKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXggNzQ3NjY5NC4uNjhm ZDJkNSAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0ZXJtLmMKQEAgLTQ1 LDYgKzQ1LDEwIEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9u cy9YcmVuZGVyLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfWERCRQorI2luY2x1ZGUgPFgx MS9leHRlbnNpb25zL1hkYmUuaD4KKyNlbmRpZgorCiAvKiBMb2FkIHN5cy90eXBlcy5oIGlm IG5vdCBhbHJlYWR5IGxvYWRlZC4KICAgIEluIHNvbWUgc3lzdGVtcyBsb2FkaW5nIGl0IHR3 aWNlIGlzIHN1aWNpZGFsLiAgKi8KICNpZm5kZWYgbWFrZWRldgpAQCAtMzYwLDcgKzM2NCw3 IEBAIHhfYmVnaW5fY3JfY2xpcCAoc3RydWN0IGZyYW1lICpmLCBHQyBnYykKICAgICAgICAg ewogICAgICAgICAgIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKICAgICAgICAgICBzdXJm YWNlID0gY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZSAoRlJBTUVfWF9ESVNQTEFZIChmKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVf WF9XSU5ET1cgKGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGUkFNRV9YX0RSQVdBQkxFIChmKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfRElTUExBWV9JTkZPIChmKS0+dmlzdWFs LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUkFN RV9QSVhFTF9XSURUSCAoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZSQU1FX1BJWEVMX0hFSUdIVCAoZikpOwpAQCAtNzIyLDcgKzcyNiw3 IEBAIHhfZmlsbF9yZWN0YW5nbGUgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIGludCB4LCBp bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICBjYWlyb19maWxsIChjcik7CiAgIHhf ZW5kX2NyX2NsaXAgKGYpOwogI2Vsc2UKLSAgWEZpbGxSZWN0YW5nbGUgKEZSQU1FX1hfRElT UExBWSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgWEZpbGxSZWN0YW5nbGUgKEZSQU1F X1hfRElTUExBWSAoZiksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkgIGdjLCB4LCB5LCB3 aWR0aCwgaGVpZ2h0KTsKICNlbmRpZgogfQpAQCAtNzQwLDcgKzc0NCw3IEBAIHhfZHJhd19y ZWN0YW5nbGUgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIGludCB4LCBpbnQgeSwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0KQogICBjYWlyb19zdHJva2UgKGNyKTsKICAgeF9lbmRfY3JfY2xp cCAoZik7CiAjZWxzZQotICBYRHJhd1JlY3RhbmdsZSAoRlJBTUVfWF9ESVNQTEFZIChmKSwg RlJBTUVfWF9XSU5ET1cgKGYpLAorICBYRHJhd1JlY3RhbmdsZSAoRlJBTUVfWF9ESVNQTEFZ IChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJCSAgZ2MsIHgsIHksIHdpZHRoLCBoZWln aHQpOwogI2VuZGlmCiB9CkBAIC03NTYsNyArNzYwLDEwIEBAIHhfY2xlYXJfd2luZG93IChz dHJ1Y3QgZnJhbWUgKmYpCiAgIGNhaXJvX3BhaW50IChjcik7CiAgIHhfZW5kX2NyX2NsaXAg KGYpOwogI2Vsc2UKLSAgWENsZWFyV2luZG93IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFN RV9YX1dJTkRPVyAoZikpOworICBpZiAoRlJBTUVfWF9ET1VCTEVfQlVGRkVSRURfUCAoZikp CisgICAgeF9jbGVhcl9hcmVhIChmLCAwLCAwLCBGUkFNRV9QSVhFTF9XSURUSCAoZiksIEZS QU1FX1BJWEVMX0hFSUdIVCAoZikpOworICBlbHNlCisgICAgWENsZWFyV2luZG93IChGUkFN RV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9YX1dJTkRPVyAoZikpOwogI2VuZGlmCiB9CiAKQEAg LTEwNjcsNyArMTA3NCw3IEBAIHhfZHJhd192ZXJ0aWNhbF93aW5kb3dfYm9yZGVyIChzdHJ1 Y3Qgd2luZG93ICp3LCBpbnQgeCwgaW50IHkwLCBpbnQgeTEpCiAjaWZkZWYgVVNFX0NBSVJP CiAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywg eCwgeTAsIDEsIHkxIC0geTApOwogI2Vsc2UKLSAgWERyYXdMaW5lIChGUkFNRV9YX0RJU1BM QVkgKGYpLCBGUkFNRV9YX1dJTkRPVyAoZiksCisgIFhEcmF3TGluZSAoRlJBTUVfWF9ESVNQ TEFZIChmKSwgRlJBTUVfWF9EUkFXQUJMRSAoZiksCiAJICAgICBmLT5vdXRwdXRfZGF0YS54 LT5ub3JtYWxfZ2MsIHgsIHkwLCB4LCB5MSk7CiAjZW5kaWYKIH0KQEAgLTExNzUsNiArMTE4 MiwzOSBAQCB4X3VwZGF0ZV93aW5kb3dfZW5kIChzdHJ1Y3Qgd2luZG93ICp3LCBib29sIGN1 cnNvcl9vbl9wLAogICAgIH0KIH0KIAorLyogU2hvdyB0aGUgZnJhbWUgYmFjayBidWZmZXIu ICBJZiBmcmFtZSBpcyBkb3VibGUtYnVmZmVyZWQsCisgICBhdG9taWNhbGx5IHB1Ymxpc2gg dG8gdGhlIHVzZXIncyBzY3JlZW4gZ3JhcGhpY3MgdXBkYXRlcyBtYWRlIHNpbmNlCisgICB0 aGUgbGFzdCBjYWxsIHRvIHNob3dfYmFja19idWZmZXIuICAqLworc3RhdGljIHZvaWQKK3No b3dfYmFja19idWZmZXIgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAgYmxvY2tfaW5wdXQgKCk7 CisgIGlmIChGUkFNRV9YX0RPVUJMRV9CVUZGRVJFRF9QIChmKSkKKyAgICB7CisjaWZkZWYg SEFWRV9YREJFCisgICAgICBYZGJlU3dhcEluZm8gc3dhcF9pbmZvOworICAgICAgbWVtc2V0 ICgmc3dhcF9pbmZvLCAwLCBzaXplb2YgKHN3YXBfaW5mbykpOworICAgICAgc3dhcF9pbmZv LnN3YXBfd2luZG93ID0gRlJBTUVfWF9XSU5ET1cgKGYpOworICAgICAgc3dhcF9pbmZvLnN3 YXBfYWN0aW9uID0gWGRiZUNvcGllZDsKKyAgICAgIFhkYmVTd2FwQnVmZmVycyAoRlJBTUVf WF9ESVNQTEFZIChmKSwgJnN3YXBfaW5mbywgMSk7CisjZWxzZQorICAgICAgZWFzc2VydCAo ISJzaG91bGQgaGF2ZSBiYWNrLWJ1ZmZlciBvbmx5IHdpdGggWERCRSIpOworI2VuZGlmCisg ICAgICAvKiBJZiB3ZSBkb24ndCBmbHVzaCBoZXJlLCB3ZSBkb24ndCByZXNwb25kIGluIGEg dGltZWx5IHdheSB0bworICAgICAgICAgaW50ZXJhY3RpdmUgZnJhbWUgcmVzaXppbmcuICAq LworICAgICAgeF9mbHVzaCAoZik7CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworfQor CisvKiBVcGRhdGVzIGJhY2sgYnVmZmVyIGFuZCBmbHVzaGVzIGNoYW5nZXMgdG8gZGlzcGxh eS4gIENhbGxlZAorICAgZnJvbSBtaW5pYnVmIHJlYWQgY29kZS4gICovCitzdGF0aWMgdm9p ZAoreF9mbGlwX2FuZF9mbHVzaCAoc3RydWN0IGZyYW1lICpmKQoreworICBzaG93X2JhY2tf YnVmZmVyIChmKTsKKyAgeF9mbHVzaCAoZik7Cit9CiAKIC8qIEVuZCB1cGRhdGUgb2YgZnJh bWUgRi4gIFRoaXMgZnVuY3Rpb24gaXMgaW5zdGFsbGVkIGFzIGEgaG9vayBpbgogICAgdXBk YXRlX2VuZC4gICovCkBAIC0xMjA3LDcgKzEyNDcsNyBAQCB4X3VwZGF0ZV9lbmQgKHN0cnVj dCBmcmFtZSAqZikKICAgICAgICAgICBpZiAoISBGUkFNRV9FWFRFUk5BTF9NRU5VX0JBUiAo ZikpCiAgICAgICAgICAgICBoZWlnaHQgKz0gRlJBTUVfTUVOVV9CQVJfSEVJR0hUIChmKTsK ICAgICAgICAgICBzdXJmYWNlID0gY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZSAoRlJBTUVf WF9ESVNQTEFZIChmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRlJBTUVfWF9XSU5ET1cgKGYpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGUkFNRV9YX0RSQVdBQkxFIChmKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfRElTUExBWV9J TkZPIChmKS0+dmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGVpZ2h0KTsKQEAgLTEyMjAsNyArMTI2MCw3IEBAIHhfdXBkYXRlX2Vu ZCAoc3RydWN0IGZyYW1lICpmKQogICAgICAgY2Fpcm9fZGVzdHJveSAoY3IpOwogICAgICAg dW5ibG9ja19pbnB1dCAoKTsKICAgICB9Ci0jZW5kaWYgLyogVVNFX0NBSVJPICovCisjZW5k aWYKIAogI2lmbmRlZiBYRmx1c2gKICAgYmxvY2tfaW5wdXQgKCk7CkBAIC0xMjI5LDE1ICsx MjY5LDE3IEBAIHhfdXBkYXRlX2VuZCAoc3RydWN0IGZyYW1lICpmKQogI2VuZGlmCiB9CiAK LQogLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB2YXJpb3VzIHBsYWNlcyBpbiB4 ZGlzcC5jCiAgICB3aGVuZXZlciBhIGNvbXBsZXRlIHVwZGF0ZSBoYXMgYmVlbiBwZXJmb3Jt ZWQuICAqLwogCiBzdGF0aWMgdm9pZAogWFRmcmFtZV91cF90b19kYXRlIChzdHJ1Y3QgZnJh bWUgKmYpCiB7CisgIGJsb2NrX2lucHV0ICgpOwogICBpZiAoRlJBTUVfWF9QIChmKSkKICAg ICBGUkFNRV9NT1VTRV9VUERBVEUgKGYpOworICBzaG93X2JhY2tfYnVmZmVyIChmKTsKKyAg dW5ibG9ja19pbnB1dCAoKTsKIH0KIAogCkBAIC0xMzU0LDcgKzEzOTYsNyBAQCB4X2RyYXdf ZnJpbmdlX2JpdG1hcCAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93 LCBzdHJ1Y3QgZHJhd19mcmluZwogI2Vsc2UgIC8qIG5vdCBVU0VfQ0FJUk8gKi8KICAgaWYg KHAtPndoaWNoKQogICAgIHsKLSAgICAgIFdpbmRvdyB3aW5kb3cgPSBGUkFNRV9YX1dJTkRP VyAoZik7CisgICAgICBEcmF3YWJsZSBkcmF3YWJsZSA9IEZSQU1FX1hfRFJBV0FCTEUgKGYp OwogICAgICAgY2hhciAqYml0czsKICAgICAgIFBpeG1hcCBwaXhtYXAsIGNsaXBtYXNrID0g KFBpeG1hcCkgMDsKICAgICAgIGludCBkZXB0aCA9IERlZmF1bHREZXB0aE9mU2NyZWVuIChG UkFNRV9YX1NDUkVFTiAoZikpOwpAQCAtMTM2Nyw3ICsxNDA5LDcgQEAgeF9kcmF3X2ZyaW5n ZV9iaXRtYXAgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKnJvdywgc3Ry dWN0IGRyYXdfZnJpbmcKIAogICAgICAgLyogRHJhdyB0aGUgYml0bWFwLiAgSSBiZWxpZXZl IHRoZXNlIHNtYWxsIHBpeG1hcHMgY2FuIGJlIGNhY2hlZAogCSBieSB0aGUgc2VydmVyLiAg Ki8KLSAgICAgIHBpeG1hcCA9IFhDcmVhdGVQaXhtYXBGcm9tQml0bWFwRGF0YSAoZGlzcGxh eSwgd2luZG93LCBiaXRzLCBwLT53ZCwgcC0+aCwKKyAgICAgIHBpeG1hcCA9IFhDcmVhdGVQ aXhtYXBGcm9tQml0bWFwRGF0YSAoZGlzcGxheSwgZHJhd2FibGUsIGJpdHMsIHAtPndkLCBw LT5oLAogCQkJCQkgICAgKHAtPmN1cnNvcl9wCiAJCQkJCSAgICAgPyAocC0+b3ZlcmxheV9w ID8gZmFjZS0+YmFja2dyb3VuZAogCQkJCQkJOiBmLT5vdXRwdXRfZGF0YS54LT5jdXJzb3Jf cGl4ZWwpCkBAIC0xMzg2LDcgKzE0MjgsNyBAQCB4X2RyYXdfZnJpbmdlX2JpdG1hcCAoc3Ry dWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93LCBzdHJ1Y3QgZHJhd19mcmlu ZwogCSAgWENoYW5nZUdDIChkaXNwbGF5LCBnYywgR0NDbGlwTWFzayB8IEdDQ2xpcFhPcmln aW4gfCBHQ0NsaXBZT3JpZ2luLCAmZ2N2KTsKIAl9CiAKLSAgICAgIFhDb3B5QXJlYSAoZGlz cGxheSwgcGl4bWFwLCB3aW5kb3csIGdjLCAwLCAwLAorICAgICAgWENvcHlBcmVhIChkaXNw bGF5LCBwaXhtYXAsIGRyYXdhYmxlLCBnYywgMCwgMCwKIAkJIHAtPndkLCBwLT5oLCBwLT54 LCBwLT55KTsKICAgICAgIFhGcmVlUGl4bWFwIChkaXNwbGF5LCBwaXhtYXApOwogCkBAIC0y NTY1LDcgKzI2MDcsNyBAQCB4X3NldHVwX3JlbGllZl9jb2xvciAoc3RydWN0IGZyYW1lICpm LCBzdHJ1Y3QgcmVsaWVmICpyZWxpZWYsIGRvdWJsZSBmYWN0b3IsCiAgICAgewogICAgICAg eGdjdi5zdGlwcGxlID0gZHB5aW5mby0+Z3JheTsKICAgICAgIG1hc2sgfD0gR0NTdGlwcGxl OwotICAgICAgcmVsaWVmLT5nYyA9IFhDcmVhdGVHQyAoZHB5LCBGUkFNRV9YX1dJTkRPVyAo ZiksIG1hc2ssICZ4Z2N2KTsKKyAgICAgIHJlbGllZi0+Z2MgPSBYQ3JlYXRlR0MgKGRweSwg RlJBTUVfWF9EUkFXQUJMRSAoZiksIG1hc2ssICZ4Z2N2KTsKICAgICB9CiAgIGVsc2UKICAg ICBYQ2hhbmdlR0MgKGRweSwgcmVsaWVmLT5nYywgbWFzaywgJnhnY3YpOwpAQCAtMjY5Niw3 ICsyNzM4LDcgQEAgeF9kcmF3X3JlbGllZl9yZWN0IChzdHJ1Y3QgZnJhbWUgKmYsCiAgIHhf cmVzZXRfY2xpcF9yZWN0YW5nbGVzIChmLCBib3R0b21fcmlnaHRfZ2MpOwogI2Vsc2UKICAg RGlzcGxheSAqZHB5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsKLSAgV2luZG93IHdpbmRvdyA9 IEZSQU1FX1hfV0lORE9XIChmKTsKKyAgRHJhd2FibGUgZHJhd2FibGUgPSBGUkFNRV9YX0RS QVdBQkxFIChmKTsKICAgaW50IGk7CiAgIEdDIGdjOwogCkBAIC0yNzE1LDEyICsyNzU3LDEy IEBAIHhfZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogICBpZiAodG9wX3Ap CiAgICAgewogICAgICAgaWYgKHdpZHRoID09IDEpCi0JWERyYXdMaW5lIChkcHksIHdpbmRv dywgZ2MsCisgICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsCiAJCSAgIGxl ZnRfeCArIGxlZnRfcCwgdG9wX3ksCiAJCSAgIHJpZ2h0X3ggKyAhcmlnaHRfcCwgdG9wX3kp OwogCiAgICAgICBmb3IgKGkgPSAxOyBpIDwgd2lkdGg7ICsraSkKLQlYRHJhd0xpbmUgKGRw eSwgd2luZG93LCBnYywKKyAgICAgICAgWERyYXdMaW5lIChkcHksIGRyYXdhYmxlLCBnYywK IAkJICAgbGVmdF94ICArIGkgKiBsZWZ0X3AsIHRvcF95ICsgaSwKIAkJICAgcmlnaHRfeCAr IDEgLSBpICogcmlnaHRfcCwgdG9wX3kgKyBpKTsKICAgICB9CkBAIC0yNzI5LDEzICsyNzcx LDEzIEBAIHhfZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogICBpZiAobGVm dF9wKQogICAgIHsKICAgICAgIGlmICh3aWR0aCA9PSAxKQotCVhEcmF3TGluZSAoZHB5LCB3 aW5kb3csIGdjLCBsZWZ0X3gsIHRvcF95ICsgMSwgbGVmdF94LCBib3R0b21feSk7CisgICAg ICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsIGxlZnRfeCwgdG9wX3kgKyAxLCBs ZWZ0X3gsIGJvdHRvbV95KTsKIAotICAgICAgWENsZWFyQXJlYSAoZHB5LCB3aW5kb3csIGxl ZnRfeCwgdG9wX3ksIDEsIDEsIEZhbHNlKTsKLSAgICAgIFhDbGVhckFyZWEgKGRweSwgd2lu ZG93LCBsZWZ0X3gsIGJvdHRvbV95LCAxLCAxLCBGYWxzZSk7CisgICAgICB4X2NsZWFyX2Fy ZWEoZiwgbGVmdF94LCB0b3BfeSwgMSwgMSk7CisgICAgICB4X2NsZWFyX2FyZWEoZiwgbGVm dF94LCBib3R0b21feSwgMSwgMSk7CiAKICAgICAgIGZvciAoaSA9ICh3aWR0aCA+IDEgPyAx IDogMCk7IGkgPCB3aWR0aDsgKytpKQotCVhEcmF3TGluZSAoZHB5LCB3aW5kb3csIGdjLAor ICAgICAgICBYRHJhd0xpbmUgKGRweSwgZHJhd2FibGUsIGdjLAogCQkgICBsZWZ0X3ggKyBp LCB0b3BfeSArIChpICsgMSkgKiB0b3BfcCwKIAkJICAgbGVmdF94ICsgaSwgYm90dG9tX3kg KyAxIC0gKGkgKyAxKSAqIGJvdF9wKTsKICAgICB9CkBAIC0yNzUxLDIzICsyNzkzLDIzIEBA IHhfZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogICAgIHsKICAgICAgIC8q IE91dGVybW9zdCB0b3AgbGluZS4gICovCiAgICAgICBpZiAodG9wX3ApCi0JWERyYXdMaW5l IChkcHksIHdpbmRvdywgZ2MsCisgICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwg Z2MsCiAJCSAgIGxlZnRfeCAgKyBsZWZ0X3AsIHRvcF95LAogCQkgICByaWdodF94ICsgIXJp Z2h0X3AsIHRvcF95KTsKIAogICAgICAgLyogT3V0ZXJtb3N0IGxlZnQgbGluZS4gICovCiAg ICAgICBpZiAobGVmdF9wKQotCVhEcmF3TGluZSAoZHB5LCB3aW5kb3csIGdjLCBsZWZ0X3gs IHRvcF95ICsgMSwgbGVmdF94LCBib3R0b21feSk7CisgICAgICAgIFhEcmF3TGluZSAoZHB5 LCBkcmF3YWJsZSwgZ2MsIGxlZnRfeCwgdG9wX3kgKyAxLCBsZWZ0X3gsIGJvdHRvbV95KTsK ICAgICB9CiAKICAgLyogQm90dG9tLiAgKi8KICAgaWYgKGJvdF9wKQogICAgIHsKLSAgICAg IFhEcmF3TGluZSAoZHB5LCB3aW5kb3csIGdjLAorICAgICAgWERyYXdMaW5lIChkcHksIGRy YXdhYmxlLCBnYywKIAkJIGxlZnRfeCArIGxlZnRfcCwgYm90dG9tX3ksCiAJCSByaWdodF94 ICsgIXJpZ2h0X3AsIGJvdHRvbV95KTsKICAgICAgIGZvciAoaSA9IDE7IGkgPCB3aWR0aDsg KytpKQotCVhEcmF3TGluZSAoZHB5LCB3aW5kb3csIGdjLAorICAgICAgICBYRHJhd0xpbmUg KGRweSwgZHJhd2FibGUsIGdjLAogCQkgICBsZWZ0X3ggICsgaSAqIGxlZnRfcCwgYm90dG9t X3kgLSBpLAogCQkgICByaWdodF94ICsgMSAtIGkgKiByaWdodF9wLCBib3R0b21feSAtIGkp OwogICAgIH0KQEAgLTI3NzUsMTAgKzI4MTcsMTAgQEAgeF9kcmF3X3JlbGllZl9yZWN0IChz dHJ1Y3QgZnJhbWUgKmYsCiAgIC8qIFJpZ2h0LiAgKi8KICAgaWYgKHJpZ2h0X3ApCiAgICAg ewotICAgICAgWENsZWFyQXJlYSAoZHB5LCB3aW5kb3csIHJpZ2h0X3gsIHRvcF95LCAxLCAx LCBGYWxzZSk7Ci0gICAgICBYQ2xlYXJBcmVhIChkcHksIHdpbmRvdywgcmlnaHRfeCwgYm90 dG9tX3ksIDEsIDEsIEZhbHNlKTsKKyAgICAgIHhfY2xlYXJfYXJlYShmLCByaWdodF94LCB0 b3BfeSwgMSwgMSk7CisgICAgICB4X2NsZWFyX2FyZWEoZiwgcmlnaHRfeCwgYm90dG9tX3ks IDEsIDEpOwogICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyArK2kpCi0JWERyYXdMaW5l IChkcHksIHdpbmRvdywgZ2MsCisgICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwg Z2MsCiAJCSAgIHJpZ2h0X3ggLSBpLCB0b3BfeSArIChpICsgMSkgKiB0b3BfcCwKIAkJICAg cmlnaHRfeCAtIGksIGJvdHRvbV95ICsgMSAtIChpICsgMSkgKiBib3RfcCk7CiAgICAgfQpA QCAtMzc0MSw3ICszNzgzLDcgQEAgeF9zaGlmdF9nbHlwaHNfZm9yX2luc2VydCAoc3RydWN0 IGZyYW1lICpmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKIC8qIE5l dmVyIGNhbGxlZCBvbiBhIEdVSSBmcmFtZSwgc2VlCiAgICBodHRwOi8vbGlzdHMuZ251Lm9y Zy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxNS0wNS9tc2cwMDQ1Ni5odG1sCiAqLwot ICBYQ29weUFyZWEgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwg RlJBTUVfWF9XSU5ET1cgKGYpLAorICBYQ29weUFyZWEgKEZSQU1FX1hfRElTUExBWSAoZiks IEZSQU1FX1hfRFJBV0FCTEUgKGYpLCBGUkFNRV9YX0RSQVdBQkxFIChmKSwKIAkgICAgIGYt Pm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywKIAkgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQs CiAJICAgICB4ICsgc2hpZnRfYnksIHkpOwpAQCAtMzc4Miw4ICszODI0LDE0IEBAIHhfY2xl YXJfYXJlYSAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50 IGhlaWdodCkKICAgY2Fpcm9fZmlsbCAoY3IpOwogICB4X2VuZF9jcl9jbGlwIChmKTsKICNl bHNlCi0gIHhfY2xlYXJfYXJlYTEgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lO RE9XIChmKSwKLQkJIHgsIHksIHdpZHRoLCBoZWlnaHQsIEZhbHNlKTsKKyAgaWYgKEZSQU1F X1hfRE9VQkxFX0JVRkZFUkVEX1AgKGYpKQorICAgIFhGaWxsUmVjdGFuZ2xlIChGUkFNRV9Y X0RJU1BMQVkgKGYpLAorCQkgICAgRlJBTUVfWF9EUkFXQUJMRSAoZiksCisJCSAgICBmLT5v dXRwdXRfZGF0YS54LT5yZXZlcnNlX2djLAorCQkgICAgeCwgeSwgd2lkdGgsIGhlaWdodCk7 CisgIGVsc2UKKyAgICB4X2NsZWFyX2FyZWExIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFN RV9YX1dJTkRPVyAoZiksCisJCSAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIEZhbHNlKTsKICNl bmRpZgogfQogCkBAIC0zODA1LDEzICszODUzLDYgQEAgeF9jbGVhcl9mcmFtZSAoc3RydWN0 IGZyYW1lICpmKQogICAgICBzb21ldGhpbmcgbGlrZSB0aGF0LCB0aGVuIHRoZXkgc2hvdWxk IGJlIG5vdGlmaWVkLiAgKi8KICAgeF9zY3JvbGxfYmFyX2NsZWFyIChmKTsKIAotI2lmIGRl ZmluZWQgKFVTRV9HVEspICYmIGRlZmluZWQgKFVTRV9UT09MS0lUX1NDUk9MTF9CQVJTKQot ICAvKiBNYWtlIHN1cmUgc2Nyb2xsIGJhcnMgYXJlIHJlZHJhd24uICBBcyB0aGV5IGFyZW4n dCByZWRyYXduIGJ5Ci0gICAgIHJlZGlzcGxheSwgZG8gaXQgaGVyZS4gICovCi0gIGlmIChG UkFNRV9HVEtfV0lER0VUIChmKSkKLSAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcgKEZSQU1F X0dUS19XSURHRVQgKGYpKTsKLSNlbmRpZgotCiAgIFhGbHVzaCAoRlJBTUVfWF9ESVNQTEFZ IChmKSk7CiAKICAgdW5ibG9ja19pbnB1dCAoKTsKQEAgLTQxMDksNyArNDE1MCw3IEBAIHhf c2Nyb2xsX3J1biAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IHJ1biAqcnVuKQogICBTRVRf RlJBTUVfR0FSQkFHRUQgKGYpOwogI2Vsc2UKICAgWENvcHlBcmVhIChGUkFNRV9YX0RJU1BM QVkgKGYpLAotCSAgICAgRlJBTUVfWF9XSU5ET1cgKGYpLCBGUkFNRV9YX1dJTkRPVyAoZiks CisgICAgICAgICAgICAgRlJBTUVfWF9EUkFXQUJMRSAoZiksIEZSQU1FX1hfRFJBV0FCTEUg KGYpLAogCSAgICAgZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djLAogCSAgICAgeCwgZnJv bV95LAogCSAgICAgd2lkdGgsIGhlaWdodCwKQEAgLTc3NjYsMTIgKzc4MDcsMzUgQEAgaGFu ZGxlX29uZV94ZXZlbnQgKHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5aW5mbywKICAgICAg ICAgewogICAgICAgICAgIGlmICghRlJBTUVfVklTSUJMRV9QIChmKSkKICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgYmxvY2tfaW5wdXQgKCk7CiAgICAgICAgICAgICAgIFNFVF9G UkFNRV9WSVNJQkxFIChmLCAxKTsKICAgICAgICAgICAgICAgU0VUX0ZSQU1FX0lDT05JRklF RCAoZiwgZmFsc2UpOworICAgICAgICAgICAgICBpZiAoRlJBTUVfWF9ET1VCTEVfQlVGRkVS RURfUCAoZikpCisgICAgICAgICAgICAgICAgZm9udF9kcm9wX3hyZW5kZXJfc3VyZmFjZXMg KGYpOwogICAgICAgICAgICAgICBmLT5vdXRwdXRfZGF0YS54LT5oYXNfYmVlbl92aXNpYmxl ID0gdHJ1ZTsKICAgICAgICAgICAgICAgU0VUX0ZSQU1FX0dBUkJBR0VEIChmKTsKKyAgICAg ICAgICAgICAgdW5ibG9ja19pbnB1dCAoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICBl bHNlCisgICAgICAgICAgZWxzZSBpZiAoRlJBTUVfR0FSQkFHRURfUCAoZikpCisgICAgICAg ICAgICB7CisjaWZkZWYgVVNFX0dUSworICAgICAgICAgICAgICAvKiBHbyBhcm91bmQgdGhl IGJhY2sgYnVmZmVyIGFuZCBtYW51YWxseSBjbGVhciB0aGUKKyAgICAgICAgICAgICAgICAg d2luZG93IHRoZSBmaXJzdCB0aW1lIHdlIHNob3cgaXQuICBUaGlzIHdheSwgd2UgYXZvaWQK KyAgICAgICAgICAgICAgICAgc2hvd2luZyB1c2VycyB0aGUgc2FuaXR5LWRlZnlpbmcgaG9y cm9yIG9mIHdoYXRldmVyCisgICAgICAgICAgICAgICAgIEd0a1dpbmRvdyBpcyByZW5kZXJp bmcgYmVuZWF0aCB1cy4gIFdlJ3ZlIGdhcmJhZ2VkCisgICAgICAgICAgICAgICAgIHRoZSBm cmFtZSwgc28gd2UnbGwgcmVkcmF3IHRoZSB3aG9sZSB0aGluZyBvbiBuZXh0CisgICAgICAg ICAgICAgICAgIHJlZGlzcGxheSBhbnl3YXkuICAqLworICAgICAgICAgICAgICB4X2NsZWFy X2FyZWExICgKKyAgICAgICAgICAgICAgICBGUkFNRV9YX0RJU1BMQVkgKGYpLAorICAgICAg ICAgICAgICAgIEZSQU1FX1hfV0lORE9XIChmKSwKKyAgICAgICAgICAgICAgICBldmVudC0+ eGV4cG9zZS54LCBldmVudC0+eGV4cG9zZS55LAorICAgICAgICAgICAgICAgIGV2ZW50LT54 ZXhwb3NlLndpZHRoLCBldmVudC0+eGV4cG9zZS5oZWlnaHQsCisgICAgICAgICAgICAgICAg MCk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKworCisgICAgICAgICAgaWYgKCFGUkFNRV9H QVJCQUdFRF9QIChmKSkKIAkgICAgewogI2lmZGVmIFVTRV9HVEsKIAkgICAgICAvKiBUaGlz IHNlZW1zIHRvIGJlIG5lZWRlZCBmb3IgR1RLIDIuNiBhbmQgbGF0ZXIsIHNlZQpAQCAtNzgy MiwxMCArNzg4NiwxMyBAQCBoYW5kbGVfb25lX3hldmVudCAoc3RydWN0IHhfZGlzcGxheV9p bmZvICpkcHlpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFp bGFibGUuICAqLwogICAgICAgZiA9IHhfd2luZG93X3RvX2ZyYW1lIChkcHlpbmZvLCBldmVu dC0+eGdyYXBoaWNzZXhwb3NlLmRyYXdhYmxlKTsKICAgICAgIGlmIChmKQotCWV4cG9zZV9m cmFtZSAoZiwgZXZlbnQtPnhncmFwaGljc2V4cG9zZS54LAotCQkgICAgICBldmVudC0+eGdy YXBoaWNzZXhwb3NlLnksCi0JCSAgICAgIGV2ZW50LT54Z3JhcGhpY3NleHBvc2Uud2lkdGgs Ci0JCSAgICAgIGV2ZW50LT54Z3JhcGhpY3NleHBvc2UuaGVpZ2h0KTsKKyAgICAgICAgewor CSAgZXhwb3NlX2ZyYW1lIChmLCBldmVudC0+eGdyYXBoaWNzZXhwb3NlLngsCisJCQlldmVu dC0+eGdyYXBoaWNzZXhwb3NlLnksCisJCQlldmVudC0+eGdyYXBoaWNzZXhwb3NlLndpZHRo LAorCQkJZXZlbnQtPnhncmFwaGljc2V4cG9zZS5oZWlnaHQpOworICAgICAgICAgIHNob3df YmFja19idWZmZXIgKGYpOworICAgICAgICB9CiAjaWZkZWYgVVNFX1hfVE9PTEtJVAogICAg ICAgZWxzZQogICAgICAgICBnb3RvIE9USEVSOwpAQCAtNzg2Niw2ICs3OTMzLDkgQEAgaGFu ZGxlX29uZV94ZXZlbnQgKHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5aW5mbywKICAgICAg ICAgICAgICAgaW5ldi5pZS5raW5kID0gSUNPTklGWV9FVkVOVDsKICAgICAgICAgICAgICAg WFNFVEZSQU1FIChpbmV2LmllLmZyYW1lX29yX3dpbmRvdywgZik7CiAgICAgICAgICAgICB9 CisKKyAgICAgICAgICBpZiAoIUZSQU1FX0dBUkJBR0VEX1AgKGYpKQorICAgICAgICAgICAg c2hvd19iYWNrX2J1ZmZlciAoZik7CiAgICAgICAgIH0KICAgICAgIGdvdG8gT1RIRVI7CiAK QEAgLTg0MTAsNyArODQ4MCwxNyBAQCBoYW5kbGVfb25lX3hldmVudCAoc3RydWN0IHhfZGlz cGxheV9pbmZvICpkcHlpbmZvLAogICAgICAgICAgIGVsc2UKIAkgICAgY29uZmlndXJlRXZl bnQgPSBuZXh0X2V2ZW50OwogICAgICAgICB9CisKICAgICAgIGYgPSB4X3RvcF93aW5kb3df dG9fZnJhbWUgKGRweWluZm8sIGNvbmZpZ3VyZUV2ZW50Lnhjb25maWd1cmUud2luZG93KTsK KyAgICAgIC8qIFVuZm9ydHVuYXRlbHksIHdlIG5lZWQgdG8gY2FsbCBmb250X2Ryb3BfeHJl bmRlcl9zdXJmYWNlcyBmb3IKKyAgICAgICAgIF9hbGxfIENvbmZpZ3VyZU5vdGlmeSBldmVu dHMsIG90aGVyd2lzZSB3ZSBtaXNzIHNvbWUgYW5kCisgICAgICAgICBmbGlja2VyLiAgRG9u J3QgdHJ5IHRvIG9wdGltaXplIHRoZXNlIGNhbGxzIGJ5IGxvb2tpbmcgb25seQorICAgICAg ICAgZm9yIHNpemUgY2hhbmdlczogdGhhdCdzIG5vdCBzdWZmaWNpZW50LiAgV2UgbWlzcyBz b21lCisgICAgICAgICBzdXJmYWNlIGludmFsaWRhdGlvbnMgYW5kIGZsaWNrZXIuICAqLwor ICAgICAgYmxvY2tfaW5wdXQgKCk7CisgICAgICBpZiAoZiAmJiBGUkFNRV9YX0RPVUJMRV9C VUZGRVJFRF9QIChmKSkKKyAgICAgICAgZm9udF9kcm9wX3hyZW5kZXJfc3VyZmFjZXMgKGYp OworICAgICAgdW5ibG9ja19pbnB1dCAoKTsKICNpZmRlZiBVU0VfQ0FJUk8KICAgICAgIGlm IChmKSB4X2NyX2Rlc3Ryb3lfc3VyZmFjZSAoZik7CiAjZW5kaWYKQEAgLTg0MTksNiArODQ5 OSwxMCBAQCBoYW5kbGVfb25lX3hldmVudCAoc3RydWN0IHhfZGlzcGxheV9pbmZvICpkcHlp bmZvLAogICAgICAgICAgICYmIChmID0gYW55KQogICAgICAgICAgICYmIGNvbmZpZ3VyZUV2 ZW50Lnhjb25maWd1cmUud2luZG93ID09IEZSQU1FX1hfV0lORE9XIChmKSkKICAgICAgICAg eworICAgICAgICAgIGJsb2NrX2lucHV0ICgpOworICAgICAgICAgIGlmIChGUkFNRV9YX0RP VUJMRV9CVUZGRVJFRF9QIChmKSkKKyAgICAgICAgICAgIGZvbnRfZHJvcF94cmVuZGVyX3N1 cmZhY2VzIChmKTsKKyAgICAgICAgICB1bmJsb2NrX2lucHV0ICgpOwogICAgICAgICAgIHhn X2ZyYW1lX3Jlc2l6ZWQgKGYsIGNvbmZpZ3VyZUV2ZW50Lnhjb25maWd1cmUud2lkdGgsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlRXZlbnQueGNvbmZpZ3VyZS5o ZWlnaHQpOwogI2lmZGVmIFVTRV9DQUlSTwpAQCAtODQyOSw2ICs4NTEzLDcgQEAgaGFuZGxl X29uZV94ZXZlbnQgKHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5aW5mbywKICNlbmRpZgog ICAgICAgaWYgKGYpCiAgICAgICAgIHsKKwogCSAgeF9uZXRfd21fc3RhdGUgKGYsIGNvbmZp Z3VyZUV2ZW50Lnhjb25maWd1cmUud2luZG93KTsKIAogI2lmZGVmIFVTRV9YX1RPT0xLSVQK QEAgLTg0MzcsNyArODUyMiw5IEBAIGhhbmRsZV9vbmVfeGV2ZW50IChzdHJ1Y3QgeF9kaXNw bGF5X2luZm8gKmRweWluZm8sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGlmIChG UkFNRV9QSVhFTF9IRUlHSFQgKGYpICE9IGNvbmZpZ3VyZUV2ZW50Lnhjb25maWd1cmUuaGVp Z2h0CiAgICAgICAgICAgICAgICAgICB8fCBGUkFNRV9QSVhFTF9XSURUSCAoZikgIT0gY29u ZmlndXJlRXZlbnQueGNvbmZpZ3VyZS53aWR0aCkKLSAgICAgICAgICAgICAgICBTRVRfRlJB TUVfR0FSQkFHRUQgKGYpOworICAgICAgICAgICAgICAgIHsKKwkJICBTRVRfRlJBTUVfR0FS QkFHRUQgKGYpOworCQl9CiAgICAgICAgICAgICAgIEZSQU1FX1BJWEVMX0hFSUdIVCAoZikg PSBjb25maWd1cmVFdmVudC54Y29uZmlndXJlLmhlaWdodDsKICAgICAgICAgICAgICAgRlJB TUVfUElYRUxfV0lEVEggKGYpID0gY29uZmlndXJlRXZlbnQueGNvbmZpZ3VyZS53aWR0aDsK ICAgICAgICAgICAgIH0KQEAgLTg4ODAsNyArODk2Nyw3IEBAIHhfZHJhd19ob2xsb3dfY3Vy c29yIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3cpCiAgIGlmIChk cHlpbmZvLT5zY3JhdGNoX2N1cnNvcl9nYykKICAgICBYQ2hhbmdlR0MgKGRweSwgZHB5aW5m by0+c2NyYXRjaF9jdXJzb3JfZ2MsIEdDRm9yZWdyb3VuZCwgJnhnY3YpOwogICBlbHNlCi0g ICAgZHB5aW5mby0+c2NyYXRjaF9jdXJzb3JfZ2MgPSBYQ3JlYXRlR0MgKGRweSwgRlJBTUVf WF9XSU5ET1cgKGYpLAorICAgIGRweWluZm8tPnNjcmF0Y2hfY3Vyc29yX2djID0gWENyZWF0 ZUdDIChkcHksIEZSQU1FX1hfRFJBV0FCTEUgKGYpLAogCQkJCQkgICAgR0NGb3JlZ3JvdW5k LCAmeGdjdik7CiAgIGdjID0gZHB5aW5mby0+c2NyYXRjaF9jdXJzb3JfZ2M7CiAKQEAgLTg5 MzcsNyArOTAyNCw3IEBAIHhfZHJhd19iYXJfY3Vyc29yIChzdHJ1Y3Qgd2luZG93ICp3LCBz dHJ1Y3QgZ2x5cGhfcm93ICpyb3csIGludCB3aWR0aCwgZW51bSB0ZXh0CiAgIGVsc2UKICAg ICB7CiAgICAgICBEaXNwbGF5ICpkcHkgPSBGUkFNRV9YX0RJU1BMQVkgKGYpOwotICAgICAg V2luZG93IHdpbmRvdyA9IEZSQU1FX1hfV0lORE9XIChmKTsKKyAgICAgIERyYXdhYmxlIGRy YXdhYmxlID0gRlJBTUVfWF9EUkFXQUJMRSAoZik7CiAgICAgICBHQyBnYyA9IEZSQU1FX0RJ U1BMQVlfSU5GTyAoZiktPnNjcmF0Y2hfY3Vyc29yX2djOwogICAgICAgdW5zaWduZWQgbG9u ZyBtYXNrID0gR0NGb3JlZ3JvdW5kIHwgR0NCYWNrZ3JvdW5kIHwgR0NHcmFwaGljc0V4cG9z dXJlczsKICAgICAgIHN0cnVjdCBmYWNlICpmYWNlID0gRkFDRV9GUk9NX0lEIChmLCBjdXJz b3JfZ2x5cGgtPmZhY2VfaWQpOwpAQCAtODk1OCw3ICs5MDQ1LDcgQEAgeF9kcmF3X2Jhcl9j dXJzb3IgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKnJvdywgaW50IHdp ZHRoLCBlbnVtIHRleHQKIAlYQ2hhbmdlR0MgKGRweSwgZ2MsIG1hc2ssICZ4Z2N2KTsKICAg ICAgIGVsc2UKIAl7Ci0JICBnYyA9IFhDcmVhdGVHQyAoZHB5LCB3aW5kb3csIG1hc2ssICZ4 Z2N2KTsKKyAgICAgICAgICBnYyA9IFhDcmVhdGVHQyAoZHB5LCBkcmF3YWJsZSwgbWFzaywg JnhnY3YpOwogCSAgRlJBTUVfRElTUExBWV9JTkZPIChmKS0+c2NyYXRjaF9jdXJzb3JfZ2Mg PSBnYzsKIAl9CiAKQEAgLTkwMjgsMTEgKzkxMTUsNiBAQCBzdGF0aWMgdm9pZAogeF9jbGVh cl9mcmFtZV9hcmVhIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRo LCBpbnQgaGVpZ2h0KQogewogICB4X2NsZWFyX2FyZWEgKGYsIHgsIHksIHdpZHRoLCBoZWln aHQpOwotI2lmZGVmIFVTRV9HVEsKLSAgLyogTXVzdCBxdWV1ZSBhIHJlZHJhdywgYmVjYXVz ZSBzY3JvbGwgYmFycyBtaWdodCBoYXZlIGJlZW4gY2xlYXJlZC4gICovCi0gIGlmIChGUkFN RV9HVEtfV0lER0VUIChmKSkKLSAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcgKEZSQU1FX0dU S19XSURHRVQgKGYpKTsKLSNlbmRpZgogfQogCiAKQEAgLTEwODg5LDcgKzEwOTcxLDcgQEAg eF9tYWtlX2ZyYW1lX3Zpc2libGUgKHN0cnVjdCBmcmFtZSAqZikKIAogICBpZiAoISBGUkFN RV9WSVNJQkxFX1AgKGYpKQogICAgIHsKLSAgICAgIC8qIFdlIHRlc3QgRlJBTUVfR0FSQkFH RURfUCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndAorICAgICAgLyogV2UgdGVzdCBhc2tl ZF9mb3JfdmlzaWJsZSBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndAogCSBjYWxsIHhfc2V0 X29mZnNldCBhIHNlY29uZCB0aW1lCiAJIGlmIHdlIGdldCB0byB4X21ha2VfZnJhbWVfdmlz aWJsZSBhIHNlY29uZCB0aW1lCiAJIGJlZm9yZSB0aGUgd2luZG93IGdldHMgcmVhbGx5IHZp c2libGUuICAqLwpAQCAtMTA5MzUsNiArMTEwMTcsOCBAQCB4X21ha2VfZnJhbWVfdmlzaWJs ZSAoc3RydWN0IGZyYW1lICpmKQogICAgICAgIHdpbGwgc2V0IGl0IHdoZW4gdGhleSBhcmUg aGFuZGxlZC4gICovCiAgICAgYm9vbCBwcmV2aW91c2x5X3Zpc2libGUgPSBmLT5vdXRwdXRf ZGF0YS54LT5oYXNfYmVlbl92aXNpYmxlOwogCisgICAgWFNFVEZSQU1FIChmcmFtZSwgZik7 CisKICAgICBvcmlnaW5hbF9sZWZ0ID0gZi0+bGVmdF9wb3M7CiAgICAgb3JpZ2luYWxfdG9w ID0gZi0+dG9wX3BvczsKIApAQCAtMTA5ODEsOCArMTEwNjUsNiBAQCB4X21ha2VfZnJhbWVf dmlzaWJsZSAoc3RydWN0IGZyYW1lICpmKQogCXVuYmxvY2tfaW5wdXQgKCk7CiAgICAgICB9 CiAKLSAgICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKLQogICAgIC8qIFByb2Nlc3MgWCBldmVu dHMgdW50aWwgYSBNYXBOb3RpZnkgZXZlbnQgaGFzIGJlZW4gc2Vlbi4gICovCiAgICAgd2hp bGUgKCFGUkFNRV9WSVNJQkxFX1AgKGYpKQogICAgICAgewpAQCAtMTEyMjcsNiArMTEzMDks NyBAQCB4X2ZyZWVfZnJhbWVfcmVzb3VyY2VzIChzdHJ1Y3QgZnJhbWUgKmYpCiAJIGZvbnQt ZHJpdmVyIChlLmcuIHhmdCkgYWNjZXNzIGEgd2luZG93IHdoaWxlIGZpbmlzaGluZyBhCiAJ IGZhY2UuICAqLwogICAgICAgZnJlZV9mcmFtZV9mYWNlcyAoZik7CisgICAgICB0ZWFyX2Rv d25feF9iYWNrX2J1ZmZlciAoZik7CiAKICAgICAgIGlmIChmLT5vdXRwdXRfZGF0YS54LT5p Y29uX2Rlc2MpCiAJWERlc3Ryb3lXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91 dHB1dF9kYXRhLngtPmljb25fZGVzYyk7CkBAIC0xMTI3MCw2ICsxMTM1Myw3IEBAIHhfZnJl ZV9mcmFtZV9yZXNvdXJjZXMgKHN0cnVjdCBmcmFtZSAqZikKICAgICAgIHhnX2ZyZWVfZnJh bWVfd2lkZ2V0cyAoZik7CiAjZW5kaWYgLyogVVNFX0dUSyAqLwogCisgICAgICB0ZWFyX2Rv d25feF9iYWNrX2J1ZmZlciAoZik7CiAgICAgICBpZiAoRlJBTUVfWF9XSU5ET1cgKGYpKQog CVhEZXN0cm95V2luZG93IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9YX1dJTkRPVyAo ZikpOwogI2VuZGlmIC8qICFVU0VfWF9UT09MS0lUICovCkBAIC0xMjExMyw2ICsxMjE5Nywx NCBAQCB4X3Rlcm1faW5pdCAoTGlzcF9PYmplY3QgZGlzcGxheV9uYW1lLCBjaGFyICp4cm1f b3B0aW9uLCBjaGFyICpyZXNvdXJjZV9uYW1lKQogICAgIGRweWluZm8tPmNtYXAgPSBYQ3Jl YXRlQ29sb3JtYXAgKGRweWluZm8tPmRpc3BsYXksIGRweWluZm8tPnJvb3Rfd2luZG93LAog CQkJCSAgICAgZHB5aW5mby0+dmlzdWFsLCBBbGxvY05vbmUpOwogCisjaWZkZWYgSEFWRV9Y REJFCisgIGRweWluZm8tPnN1cHBvcnRzX3hkYmUgPSBmYWxzZTsKKyAgaW50IHhkYmVfbWFq b3I7CisgIGludCB4ZGJlX21pbm9yOworICBpZiAoWGRiZVF1ZXJ5RXh0ZW5zaW9uIChkcHlp bmZvLT5kaXNwbGF5LCAmeGRiZV9tYWpvciwgJnhkYmVfbWlub3IpKQorICAgIGRweWluZm8t PnN1cHBvcnRzX3hkYmUgPSB0cnVlOworI2VuZGlmCisKICNpZmRlZiBIQVZFX1hGVAogICB7 CiAgICAgLyogSWYgd2UgYXJlIHVzaW5nIFhmdCwgdGhlIGZvbGxvd2luZyBwcmVjYXV0aW9u cyBzaG91bGQgYmUgbWFkZToKQEAgLTEyNDYyLDcgKzEyNTU0LDcgQEAgc3RhdGljIHN0cnVj dCByZWRpc3BsYXlfaW50ZXJmYWNlIHhfcmVkaXNwbGF5X2ludGVyZmFjZSA9CiAgICAgeF9h ZnRlcl91cGRhdGVfd2luZG93X2xpbmUsCiAgICAgeF91cGRhdGVfd2luZG93X2JlZ2luLAog ICAgIHhfdXBkYXRlX3dpbmRvd19lbmQsCi0gICAgeF9mbHVzaCwKKyAgICB4X2ZsaXBfYW5k X2ZsdXNoLAogICAgIHhfY2xlYXJfd2luZG93X21vdXNlX2ZhY2UsCiAgICAgeF9nZXRfZ2x5 cGhfb3ZlcmhhbmdzLAogICAgIHhfZml4X292ZXJsYXBwaW5nX2FyZWEsCmRpZmYgLS1naXQg YS9zcmMveHRlcm0uaCBiL3NyYy94dGVybS5oCmluZGV4IDY3NWE0ODQuLjczNGU1OGIgMTAw NjQ0Ci0tLSBhL3NyYy94dGVybS5oCisrKyBiL3NyYy94dGVybS5oCkBAIC00NzUsNiArNDc1 LDEwIEBAIHN0cnVjdCB4X2Rpc3BsYXlfaW5mbwogI2lmZGVmIFVTRV9YQ0IKICAgeGNiX2Nv bm5lY3Rpb25fdCAqeGNiX2Nvbm5lY3Rpb247CiAjZW5kaWYKKworI2lmZGVmIEhBVkVfWERC RQorICBib29sIHN1cHBvcnRzX3hkYmU7CisjZW5kaWYKIH07CiAKICNpZmRlZiBIQVZFX1hf STE4TgpAQCAtNTI3LDYgKzUzMSwxMSBAQCBzdHJ1Y3QgeF9vdXRwdXQKICAgICAgYW5kIHRo ZSBYIHdpbmRvdyBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQuICAqLwogICBXaW5kb3cgd2lu ZG93X2Rlc2M7CiAKKyAgLyogVGhlIGRyYXdhYmxlIHRvIHdoaWNoIHdlJ3JlIHJlbmRlcmlu Zy4gIEluIHRoZSBzaW5nbGUtYnVmZmVyZWQKKyAgICAgYmFzZSwgdGhlIHdpbmRvdyBpdHNl bGYuICBJbiB0aGUgZG91YmxlLWJ1ZmZlcmVkIGNhc2UsIHRoZQorICAgICB3aW5kb3cncyBi YWNrIGJ1ZmZlci4gICovCisgIERyYXdhYmxlIGRyYXdfZGVzYzsKKwogICAvKiBUaGUgWCB3 aW5kb3cgdXNlZCBmb3IgdGhlIGJpdG1hcCBpY29uOwogICAgICBvciAwIGlmIHdlIGRvbid0 IGhhdmUgYSBiaXRtYXAgaWNvbi4gICovCiAgIFdpbmRvdyBpY29uX2Rlc2M7CkBAIC03Mzcs NiArNzQ2LDE1IEBAIGVudW0KIC8qIFJldHVybiB0aGUgWCB3aW5kb3cgdXNlZCBmb3IgZGlz cGxheWluZyBkYXRhIGluIGZyYW1lIEYuICAqLwogI2RlZmluZSBGUkFNRV9YX1dJTkRPVyhm KSAoKGYpLT5vdXRwdXRfZGF0YS54LT53aW5kb3dfZGVzYykKIAorLyogUmV0dXJuIHRoZSBk cmF3YWJsZSB1c2VkIGZvciByZW5kZXJpbmcgdG8gZnJhbWUgRi4gICovCisjZGVmaW5lIEZS QU1FX1hfRFJBV0FCTEUoZikgKChmKS0+b3V0cHV0X2RhdGEueC0+ZHJhd19kZXNjKQorCisj ZGVmaW5lIEZSQU1FX1hfRE9VQkxFX0JVRkZFUkVEX1AoZikgICAgICAgICAgICBcCisgIChG UkFNRV9YX1dJTkRPVyAoZikgIT0gRlJBTUVfWF9EUkFXQUJMRSAoZikpCisKKy8qIFJldHVy biB0aGUgbmVlZC1idWZmZXItZmxpcCBmbGFnIGZvciBmcmFtZSBGLiAgKi8KKyNkZWZpbmUg RlJBTUVfWF9ORUVEX0JVRkZFUl9GTElQKGYpICgoZiktPm91dHB1dF9kYXRhLngtPm5lZWRf YnVmZmVyX2ZsaXApCisKIC8qIFJldHVybiB0aGUgb3V0ZXJtb3N0IFggd2luZG93IGFzc29j aWF0ZWQgd2l0aCB0aGUgZnJhbWUgRi4gICovCiAjaWZkZWYgVVNFX1hfVE9PTEtJVAogI2Rl ZmluZSBGUkFNRV9PVVRFUl9XSU5ET1coZikgKChmKS0+b3V0cHV0X2RhdGEueC0+d2lkZ2V0 ID8gICAgICAgICAgICAgXApAQCAtMTE0MCw2ICsxMTU4LDEwIEBAIGV4dGVybiBib29sIHhf d21fc3VwcG9ydHMgKHN0cnVjdCBmcmFtZSAqLCBBdG9tKTsKIGV4dGVybiB2b2lkIHhfd2Fp dF9mb3JfZXZlbnQgKHN0cnVjdCBmcmFtZSAqLCBpbnQpOwogZXh0ZXJuIHZvaWQgeF9jbGVh cl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKHN0cnVjdCBmcmFtZSAqZik7CiAKK2V4dGVybiB2 b2lkIHNldF91cF94X2JhY2tfYnVmZmVyIChzdHJ1Y3QgZnJhbWUqIGYpOworZXh0ZXJuIHZv aWQgdGVhcl9kb3duX3hfYmFja19idWZmZXIgKHN0cnVjdCBmcmFtZSogZik7CitleHRlcm4g dm9pZCBpbml0aWFsX3NldF91cF94X2JhY2tfYnVmZmVyIChzdHJ1Y3QgZnJhbWUqIGYpOwor CiAvKiBEZWZpbmVkIGluIHhzZWxlY3QuYy4gICovCiAKIGV4dGVybiB2b2lkIHhfaGFuZGxl X3Byb3BlcnR5X25vdGlmeSAoY29uc3QgWFByb3BlcnR5RXZlbnQgKik7Ci0tIAoyLjcuNAoK --------------70E0DB32F892B570E99409C9--