From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#18006: Simplify via set_binary_mode Date: Sun, 13 Jul 2014 19:11:54 -0700 Organization: UCLA Computer Science Department Message-ID: <53C33C6A.6060601@cs.ucla.edu> References: <53C1A00C.6050906@cs.ucla.edu> <837g3hanzp.fsf@gnu.org> <53C21918.9020001@cs.ucla.edu> <8338e59u9u.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040508070105040200040706" X-Trace: ger.gmane.org 1405304006 13742 80.91.229.3 (14 Jul 2014 02:13:26 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 14 Jul 2014 02:13:26 +0000 (UTC) Cc: 18006@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jul 14 04:13:17 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1X6VlU-00079g-O7 for geb-bug-gnu-emacs@m.gmane.org; Mon, 14 Jul 2014 04:13:17 +0200 Original-Received: from localhost ([::1]:54296 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6VlT-00013h-UW for geb-bug-gnu-emacs@m.gmane.org; Sun, 13 Jul 2014 22:13:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36892) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6VlL-000126-Sg for bug-gnu-emacs@gnu.org; Sun, 13 Jul 2014 22:13:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X6VlG-0006qt-LU for bug-gnu-emacs@gnu.org; Sun, 13 Jul 2014 22:13:07 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:58788) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6VlG-0006qi-I5 for bug-gnu-emacs@gnu.org; Sun, 13 Jul 2014 22:13:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1X6VlF-0000Fn-R6 for bug-gnu-emacs@gnu.org; Sun, 13 Jul 2014 22:13:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 14 Jul 2014 02:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18006 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 18006-submit@debbugs.gnu.org id=B18006.1405303928907 (code B ref 18006); Mon, 14 Jul 2014 02:13:01 +0000 Original-Received: (at 18006) by debbugs.gnu.org; 14 Jul 2014 02:12:08 +0000 Original-Received: from localhost ([127.0.0.1]:54054 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X6VkM-0000EY-Ls for submit@debbugs.gnu.org; Sun, 13 Jul 2014 22:12:07 -0400 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:40194) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X6VkI-0000Dw-V5 for 18006@debbugs.gnu.org; Sun, 13 Jul 2014 22:12:05 -0400 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 98A7EA60009; Sun, 13 Jul 2014 19:11:56 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AQKyx+eaWooe; Sun, 13 Jul 2014 19:11:55 -0700 (PDT) Original-Received: from [192.168.1.9] (pool-108-0-233-62.lsanca.fios.verizon.net [108.0.233.62]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D113739E8017; Sun, 13 Jul 2014 19:11:54 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: <8338e59u9u.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:91518 Archived-At: This is a multi-part message in MIME format. --------------040508070105040200040706 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Eli Zaretskii wrote: >> + return isatty (fd) - 1; > Do we need this "-1" part now? It could misfire if isatty does > return 1 some day. Sorry, I don't so how it can misfire. isatty returns 1 on success, 0 on failure; whereas the caller returns 0 on success, -1 on failure. So subtracting 1 is the right thing to do, no? A revised patch, taking your other comments into account, is attached. It's relative to trunk bzr 117527. --------------040508070105040200040706 Content-Type: text/plain; charset=UTF-8; name="binary-io.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="binary-io.patch" PT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NoYW5nZUxvZycKLS0tIGFkbWluL0NoYW5nZUxv ZwkyMDE0LTA2LTMwIDAwOjAxOjUxICswMDAwCisrKyBhZG1pbi9DaGFuZ2VMb2cJMjAxNC0w Ny0xNCAwMjowMjoxNSArMDAwMApAQCAtMSwzICsxLDkgQEAKKzIwMTQtMDctMTQgIFBhdWwg RWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJVXNlIGJpbmFyeS1pbyBtb2R1bGUs IE9fQklOQVJZLCBhbmQgImIiIGZsYWcgKEJ1ZyMxODAwNikuCisJKiBtZXJnZS1nbnVsaWIg KEdOVUxJQl9NT0RVTEVTKTogQWRkIGJpbmFyeS1pby4gIEl0IHdhcyBhbHJlYWR5CisJcHJl c2VudCBpbXBsaWNpdGx5OyB0aGlzIGp1c3QgbWFrZXMgdGhlIGRlcGVuZGVuY2UgZXhwbGlj aXQuCisKIDIwMTQtMDYtMzAgIEdsZW5uIE1vcnJpcyAgPHJnbUBnbnUub3JnPgogCiAJKiB1 cGRhdGVfYXV0b2dlbjogRmluZCBsb2FkZGVmcyB0YXJnZXRzIHJhdGhlciB0aGFuCgo9PT0g bW9kaWZpZWQgZmlsZSAnYWRtaW4vbWVyZ2UtZ251bGliJwotLS0gYWRtaW4vbWVyZ2UtZ251 bGliCTIwMTQtMDUtMTcgMDg6MTE6MzEgKzAwMDAKKysrIGFkbWluL21lcmdlLWdudWxpYgky MDE0LTA3LTEyIDIwOjQ3OjUwICswMDAwCkBAIC0yNiw3ICsyNiw3IEBACiBHTlVMSUJfVVJM PWdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dudWxpYi5naXQKIAogR05VTElCX01PRFVM RVM9JwotICBhbGxvY2Etb3B0IGJ5dGVzd2FwIGMtY3R5cGUgYy1zdHJjYXNlCisgIGFsbG9j YS1vcHQgYmluYXJ5LWlvIGJ5dGVzd2FwIGMtY3R5cGUgYy1zdHJjYXNlCiAgIGNhcmVhZGxp bmthdCBjbG9zZS1zdHJlYW0gY291bnQtb25lLWJpdHMgY291bnQtdHJhaWxpbmctemVyb3MK ICAgY3J5cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlwdG8vc2hhMjU2IGNyeXB0by9zaGE1MTIK ICAgZHRvYXN0ciBkdG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliLXNyYy9DaGFuZ2VMb2cnCi0tLSBsaWItc3JjL0No YW5nZUxvZwkyMDE0LTA3LTE0IDAwOjQ1OjE5ICswMDAwCisrKyBsaWItc3JjL0NoYW5nZUxv ZwkyMDE0LTA3LTE0IDAyOjAyOjE1ICswMDAwCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDct MTQgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJVXNlIGJpbmFyeS1p byBtb2R1bGUsIE9fQklOQVJZLCBhbmQgImIiIGZsYWcgKEJ1ZyMxODAwNikuCisJKiBldGFn cy5jLCBoZXhsLmMsIG1ha2UtZG9jZmlsZS5jOgorCUluY2x1ZGUgYmluYXJ5LWlvLmggaW5z dGVhZCBvZiBmY250bC5oIGFuZC9vciBpby5oLgorCShtYWluKTogVXNlIHNldF9iaW5hcnlf bW9kZSBvciBTRVRfQklOQVJZCisJaW4gcGxhY2Ugb2YgaGFuZGNyYWZ0ZWQgY29kZS4KKwkq IGV0YWdzLmMgKG1haW4pIFtET1NfTlRdOgorCSogbW92ZW1haWwuYyAobWFpbikgW1dJTkRP V1NOVF06CisJRG9uJ3QgbWVzcyB3aXRoIF9mbW9kZS4KKwkqIGV0YWdzLmMgKG1haW4sIHBy b2Nlc3NfZmlsZV9uYW1lLCBhbmFseXNlX3JlZ2V4KToKKwlVc2UgZm9wZW4vcG9wZW4ncyAi YiIgZmxhZyBpbnN0ZWFkLgorCSogbW92ZW1haWwuYyAobWFpbiwgcG9wbWFpbCk6IFVzZSBv cGVuL2xrX29wZW4vbWtvc3RlbXAncyBPX0JJTkFSWQorCWluc3RlYWQuCisKIDIwMTQtMDct MTMgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCiAJKiBtYWtlLWRvY2Zp bGUuYzogU2ltcGxpZnkgYSBiaXQsIHRvIHNpbXBsaWZ5IGZ1cnRoZXIgcmVmYWN0b3Jpbmcu Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliLXNyYy9ldGFncy5jJwotLS0gbGliLXNyYy9ldGFn cy5jCTIwMTQtMDctMTIgMTY6MjY6NTQgKzAwMDAKKysrIGxpYi1zcmMvZXRhZ3MuYwkyMDE0 LTA3LTE0IDAyOjAyOjE1ICswMDAwCkBAIC0xMDUsMTcgKzEwNSwxMyBAQAogI2lmZGVmIE1T RE9TCiAjIHVuZGVmIE1TRE9TCiAjIGRlZmluZSBNU0RPUyB0cnVlCi0jIGluY2x1ZGUgPGZj bnRsLmg+CiAjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotIyBpbmNsdWRlIDxpby5oPgogI2Vs c2UKICMgZGVmaW5lIE1TRE9TIGZhbHNlCiAjZW5kaWYgLyogTVNET1MgKi8KIAogI2lmZGVm IFdJTkRPV1NOVAotIyBpbmNsdWRlIDxmY250bC5oPgogIyBpbmNsdWRlIDxkaXJlY3QuaD4K LSMgaW5jbHVkZSA8aW8uaD4KICMgZGVmaW5lIE1BWFBBVEhMRU4gX01BWF9QQVRICiAjIHVu ZGVmIEhBVkVfTlRHVUkKICMgdW5kZWYgIERPU19OVApAQCAtMTMxLDYgKzEyNyw3IEBACiAj aW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxz eXMvc3RhdC5oPgorI2luY2x1ZGUgPGJpbmFyeS1pby5oPgogI2luY2x1ZGUgPGMtc3RyY2Fz ZS5oPgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CkBAIC0xMDAyLDEzICs5OTksOCBAQAogICBs aW5lYnVmZmVyIGZpbGVuYW1lX2xiOwogICBib29sIGhlbHBfYXNrZWQgPSBmYWxzZTsKICAg cHRyZGlmZl90IGxlbjsKLSBjaGFyICpvcHRzdHJpbmc7Ci0gaW50IG9wdDsKLQotCi0jaWZk ZWYgRE9TX05UCi0gIF9mbW9kZSA9IE9fQklOQVJZOyAgIC8qIGFsbCBvZiBmaWxlcyBhcmUg dHJlYXRlZCBhcyBiaW5hcnkgZmlsZXMgKi8KLSNlbmRpZiAvKiBET1NfTlQgKi8KKyAgY2hh ciAqb3B0c3RyaW5nOworICBpbnQgb3B0OwogCiAgIHByb2duYW1lID0gYXJndlswXTsKICAg bmluY2x1ZGVkX2ZpbGVzID0gMDsKQEAgLTExOTUsMTUgKzExODcsMTAgQEAKICAgICAgIGlm IChzdHJlcSAodGFnZmlsZSwgIi0iKSkKIAl7CiAJICB0YWdmID0gc3Rkb3V0OwotI2lmZGVm IERPU19OVAotCSAgLyogU3dpdGNoIHJlZGlyZWN0ZWQgYHN0ZG91dCcgdG8gYmluYXJ5IG1v ZGUgKHNldHRpbmcgYF9mbW9kZScKLQkgICAgIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwg YWZ0ZXIgYHN0ZG91dCcgaXMgYWxyZWFkeSBvcGVuKS4gKi8KLQkgIGlmICghaXNhdHR5IChm aWxlbm8gKHN0ZG91dCkpKQotCSAgICBzZXRtb2RlIChmaWxlbm8gKHN0ZG91dCksIE9fQklO QVJZKTsKLSNlbmRpZiAvKiBET1NfTlQgKi8KKwkgIFNFVF9CSU5BUlkgKGZpbGVubyAoc3Rk b3V0KSk7CiAJfQogICAgICAgZWxzZQotCXRhZ2YgPSBmb3BlbiAodGFnZmlsZSwgYXBwZW5k X3RvX3RhZ2ZpbGUgPyAiYSIgOiAidyIpOworCXRhZ2YgPSBmb3BlbiAodGFnZmlsZSwgYXBw ZW5kX3RvX3RhZ2ZpbGUgPyAiYWIiIDogIndiIik7CiAgICAgICBpZiAodGFnZiA9PSBOVUxM KQogCXBmYXRhbCAodGFnZmlsZSk7CiAgICAgfQpAQCAtMTMwNiw3ICsxMjkzLDcgQEAKICAg ICAgIGFwcGVuZF90b190YWdmaWxlID0gdHJ1ZTsKICAgICB9CiAKLSAgdGFnZiA9IGZvcGVu ICh0YWdmaWxlLCBhcHBlbmRfdG9fdGFnZmlsZSA/ICJhIiA6ICJ3Iik7CisgIHRhZ2YgPSBm b3BlbiAodGFnZmlsZSwgYXBwZW5kX3RvX3RhZ2ZpbGUgPyAiYWIiIDogIndiIik7CiAgIGlm ICh0YWdmID09IE5VTEwpCiAgICAgcGZhdGFsICh0YWdmaWxlKTsKICAgcHV0X2VudHJpZXMg KG5vZGVoZWFkKTsJLyogd3JpdGUgYWxsIHRoZSB0YWdzIChDVEFHUykgKi8KQEAgLTE1NDcs MTEgKzE1MzQsMTEgQEAKICAgaWYgKHJlYWxfbmFtZSA9PSBjb21wcmVzc2VkX25hbWUpCiAg ICAgewogICAgICAgY2hhciAqY21kID0gY29uY2F0IChjb21wci0+Y29tbWFuZCwgIiAiLCBy ZWFsX25hbWUpOwotICAgICAgaW5mID0gKEZJTEUgKikgcG9wZW4gKGNtZCwgInIiKTsKKyAg ICAgIGluZiA9IHBvcGVuIChjbWQsICJyYiIpOwogICAgICAgZnJlZSAoY21kKTsKICAgICB9 CiAgIGVsc2UKLSAgICBpbmYgPSBmb3BlbiAocmVhbF9uYW1lLCAiciIpOworICAgIGluZiA9 IGZvcGVuIChyZWFsX25hbWUsICJyYiIpOwogICBpZiAoaW5mID09IE5VTEwpCiAgICAgewog ICAgICAgcGVycm9yIChyZWFsX25hbWUpOwpAQCAtNTYxNCw3ICs1NjAxLDcgQEAKIAljaGFy ICpyZWdleGZpbGUgPSByZWdleF9hcmcgKyAxOwogCiAJLyogcmVnZXhmaWxlIGlzIGEgZmls ZSBjb250YWluaW5nIHJlZ2V4cHMsIG9uZSBwZXIgbGluZS4gKi8KLQlyZWdleGZwID0gZm9w ZW4gKHJlZ2V4ZmlsZSwgInIiKTsKKwlyZWdleGZwID0gZm9wZW4gKHJlZ2V4ZmlsZSwgInJi Iik7CiAJaWYgKHJlZ2V4ZnAgPT0gTlVMTCkKIAkgIHBmYXRhbCAocmVnZXhmaWxlKTsKIAls aW5lYnVmZmVyX2luaXQgKCZyZWdleGJ1Zik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliLXNy Yy9oZXhsLmMnCi0tLSBsaWItc3JjL2hleGwuYwkyMDE0LTAxLTAxIDA3OjQzOjM0ICswMDAw CisrKyBsaWItc3JjL2hleGwuYwkyMDE0LTA3LTEzIDA1OjI0OjQzICswMDAwCkBAIC0yNCwx NSArMjQsOCBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgot I2lmZGVmIERPU19OVAotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaWYgX19ESkdQUF9fID49IDIK LSNpbmNsdWRlIDxpby5oPgotI2VuZGlmCi0jZW5kaWYKLSNpZmRlZiBXSU5ET1dTTlQKLSNp bmNsdWRlIDxpby5oPgotI2VuZGlmCisKKyNpbmNsdWRlIDxiaW5hcnktaW8uaD4KIAogI2Rl ZmluZSBERUZBVUxUX0dST1VQSU5HCTB4MDEKICNkZWZpbmUgREVGQVVMVF9CQVNFCQkxNgpA QCAtMTU1LDIwICsxNDgsMTIgQEAKIAogICAgICAgaWYgKHVuX2ZsYWcpCiAJewotCSAgY2hh ciBidWZbMThdOworCSAgU0VUX0JJTkFSWSAoZmlsZW5vIChzdGRvdXQpKTsKIAotI2lmZGVm IERPU19OVAotI2lmIChfX0RKR1BQX18gPj0gMikgfHwgKGRlZmluZWQgV0lORE9XU05UKQot ICAgICAgICAgIGlmICghaXNhdHR5IChmaWxlbm8gKHN0ZG91dCkpKQotCSAgICBzZXRtb2Rl IChmaWxlbm8gKHN0ZG91dCksIE9fQklOQVJZKTsKLSNlbHNlCi0JICAoc3Rkb3V0KS0+X2Zs YWcgJj0gfl9JT1RFWFQ7IC8qIHByaW50IGJpbmFyeSAqLwotCSAgX3NldG1vZGUgKGZpbGVu byAoc3Rkb3V0KSwgT19CSU5BUlkpOwotI2VuZGlmCi0jZW5kaWYKIAkgIGZvciAoOzspCiAJ ICAgIHsKLQkgICAgICByZWdpc3RlciBpbnQgaSwgYyA9IDAsIGQ7CisJICAgICAgaW50IGks IGMgPSAwLCBkOworCSAgICAgIGNoYXIgYnVmWzE4XTsKIAogI2RlZmluZSBoZXhjaGFyKHgp IChpc2RpZ2l0ICh4KSA/IHggLSAnMCcgOiB4IC0gJ2EnICsgMTApCiAKQEAgLTIxMCwxNSAr MTk1LDcgQEAKIAl9CiAgICAgICBlbHNlCiAJewotI2lmZGVmIERPU19OVAotI2lmIChfX0RK R1BQX18gPj0gMikgfHwgKGRlZmluZWQgV0lORE9XU05UKQotICAgICAgICAgIGlmICghaXNh dHR5IChmaWxlbm8gKGZwKSkpCi0JICAgIHNldG1vZGUgKGZpbGVubyAoZnApLCBPX0JJTkFS WSk7Ci0jZWxzZQotCSAgKGZwKS0+X2ZsYWcgJj0gfl9JT1RFWFQ7IC8qIHJlYWQgYmluYXJ5 ICovCi0JICBfc2V0bW9kZSAoZmlsZW5vIChmcCksIE9fQklOQVJZKTsKLSNlbmRpZgotI2Vu ZGlmCisJICBTRVRfQklOQVJZIChmaWxlbm8gKGZwKSk7CiAJICBhZGRyZXNzID0gMDsKIAkg IHN0cmluZ1swXSA9ICcgJzsKIAkgIHN0cmluZ1sxN10gPSAnXDAnOwoKPT09IG1vZGlmaWVk IGZpbGUgJ2xpYi1zcmMvbWFrZS1kb2NmaWxlLmMnCi0tLSBsaWItc3JjL21ha2UtZG9jZmls ZS5jCTIwMTQtMDctMTQgMDA6NDU6MTkgKzAwMDAKKysrIGxpYi1zcmMvbWFrZS1kb2NmaWxl LmMJMjAxNC0wNy0xNCAwMDo1MToxOSArMDAwMApAQCAtMzgsMTcgKzM4LDE2IEBACiAKICNp bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAgIC8qIGNvbmZpZy5oIHVu Y29uZGl0aW9uYWxseSBpbmNsdWRlcyB0aGlzIGFueXdheSAqLwotI2lmZGVmIE1TRE9TCi0j aW5jbHVkZSA8ZmNudGwuaD4KLSNlbmRpZiAvKiBNU0RPUyAqLworCiAjaWZkZWYgV0lORE9X U05UCiAvKiBEZWZpbmVkIHRvIGJlIHN5c19mb3BlbiBpbiBtcy13MzIuaCwgYnV0IG9ubHkg I2lmZGVmIGVtYWNzLCBzbyB0aGlzCiAgICBpcyByZWFsbHkganVzdCBpbnN1cmFuY2UuICAq LwogI3VuZGVmIGZvcGVuCi0jaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxkaXJlY3Qu aD4KICNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KIAorI2luY2x1ZGUgPGJpbmFyeS1pby5oPgor CiAjaWZkZWYgRE9TX05UCiAvKiBEZWZpbmVkIHRvIGJlIHN5c19jaGRpciBpbiBtcy13MzIu aCwgYnV0IG9ubHkgI2lmZGVmIGVtYWNzLCBzbyB0aGlzCiAgICBpcyByZWFsbHkganVzdCBp bnN1cmFuY2UuCkBAIC0xNjcsMTkgKzE2Niw3IEBACiAgICAgICArK2k7CiAgICAgfQogCi0g IC8qIERvbid0IHB1dCBDUnMgaW4gdGhlIG91dHB1dCBmaWxlLiAgKi8KLSNpZmRlZiBNU0RP UwotICBfZm1vZGUgPSBPX0JJTkFSWTsKLSNpZiAwICAvKiBTdXNwaWNpb24gaXMgdGhhdCB0 aGlzIGNhdXNlcyBoYW5naW5nLgotCSAgU28gaW5zdGVhZCB3ZSByZXF1aXJlIHBlb3BsZSB0 byB1c2UgLW8gb24gTVNET1MuICAqLwotICAoc3Rkb3V0KS0+X2ZsYWcgJj0gfl9JT1RFWFQ7 Ci0gIF9zZXRtb2RlIChmaWxlbm8gKHN0ZG91dCksIE9fQklOQVJZKTsKLSNlbmRpZgotI2Vu ZGlmIC8qIE1TRE9TICovCi0jaWZkZWYgV0lORE9XU05UCi0gIF9mbW9kZSA9IE9fQklOQVJZ OwotICBfc2V0bW9kZSAoZmlsZW5vIChzdGRvdXQpLCBPX0JJTkFSWSk7Ci0jZW5kaWYgLyog V0lORE9XU05UICovCisgIHNldF9iaW5hcnlfbW9kZSAoZmlsZW5vIChzdGRvdXQpLCBPX0JJ TkFSWSk7CiAKICAgaWYgKGdlbmVyYXRlX2dsb2JhbHMpCiAgICAgc3RhcnRfZ2xvYmFscyAo KTsKCj09PSBtb2RpZmllZCBmaWxlICdsaWItc3JjL21vdmVtYWlsLmMnCi0tLSBsaWItc3Jj L21vdmVtYWlsLmMJMjAxNC0wMS0wMSAwNzo0MzozNCArMDAwMAorKysgbGliLXNyYy9tb3Zl bWFpbC5jCTIwMTQtMDctMTQgMDI6MDI6MTUgKzAwMDAKQEAgLTE5MSwxMSArMTkxLDYgQEAK ICAgdWlkX3QgcmVhbF9naWQgPSBnZXRnaWQgKCk7CiAgIHVpZF90IHByaXZfZ2lkID0gZ2V0 ZWdpZCAoKTsKIAotI2lmZGVmIFdJTkRPV1NOVAotICAvKiBFbnN1cmUgYWxsIGZpbGUgaS9v IGlzIGluIGJpbmFyeSBtb2RlLiAqLwotICBfZm1vZGUgPSBfT19CSU5BUlk7Ci0jZW5kaWYK LQogICBkZWxldGVfbG9ja25hbWUgPSAwOwogCiAgIHdoaWxlICgoYyA9IGdldG9wdCAoYXJn YywgYXJndiwgQVJHU1RSKSkgIT0gRU9GKQpAQCAtMzA0LDcgKzI5OSw3IEBACiAKIAkgIG1l bWNweSAodGVtcG5hbWUsIGlubmFtZSwgaW5uYW1lX2Rpcmxlbik7CiAJICBzdHJjcHkgKHRl bXBuYW1lICsgaW5uYW1lX2RpcmxlbiwgIkVYWFhYWFgiKTsKLQkgIGRlc2MgPSBta29zdGVt cCAodGVtcG5hbWUsIDApOworCSAgZGVzYyA9IG1rb3N0ZW1wICh0ZW1wbmFtZSwgT19CSU5B UlkpOwogCSAgaWYgKGRlc2MgPCAwKQogCSAgICB7CiAJICAgICAgaW50IG1rb3N0ZW1wX2Vy cm5vID0gZXJybm87CkBAIC0zNTgsMTIgKzM1MywxMiBAQAogCiAjaWZuZGVmIE1BSUxfVVNF X01NREYKICNpZmRlZiBNQUlMX1VTRV9TWVNURU1fTE9DSwotICAgICAgaW5kZXNjID0gb3Bl biAoaW5uYW1lLCBPX1JEV1IpOworICAgICAgaW5kZXNjID0gb3BlbiAoaW5uYW1lLCBPX1JE V1IgfCBPX0JJTkFSWSk7CiAjZWxzZSAgLyogaWYgbm90IE1BSUxfVVNFX1NZU1RFTV9MT0NL ICovCi0gICAgICBpbmRlc2MgPSBvcGVuIChpbm5hbWUsIE9fUkRPTkxZKTsKKyAgICAgIGlu ZGVzYyA9IG9wZW4gKGlubmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSk7CiAjZW5kaWYgLyog bm90IE1BSUxfVVNFX1NZU1RFTV9MT0NLICovCiAjZWxzZSAgLyogTUFJTF9VU0VfTU1ERiAq LwotICAgICAgaW5kZXNjID0gbGtfb3BlbiAoaW5uYW1lLCBPX1JET05MWSwgMCwgMCwgMTAp OworICAgICAgaW5kZXNjID0gbGtfb3BlbiAoaW5uYW1lLCBPX1JET05MWSB8IE9fQklOQVJZ LCAwLCAwLCAxMCk7CiAjZW5kaWYgLyogTUFJTF9VU0VfTU1ERiAqLwogCiAgICAgICBpZiAo aW5kZXNjIDwgMCkKQEAgLTM3Miw3ICszNjcsNyBAQAogICAgICAgLyogTWFrZSBzdXJlIHRo ZSB1c2VyIGNhbiByZWFkIHRoZSBvdXRwdXQgZmlsZS4gICovCiAgICAgICB1bWFzayAodW1h c2sgKDApICYgMDM3Nyk7CiAKLSAgICAgIG91dGRlc2MgPSBvcGVuIChvdXRuYW1lLCBPX1dS T05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIDA2NjYpOworICAgICAgb3V0ZGVzYyA9IG9wZW4g KG91dG5hbWUsIE9fV1JPTkxZIHwgT19CSU5BUlkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjY2 KTsKICAgICAgIGlmIChvdXRkZXNjIDwgMCkKIAlwZmF0YWxfd2l0aF9uYW1lIChvdXRuYW1l KTsKIApAQCAtNjc1LDcgKzY3MCw3IEBACiAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwog ICAgIH0KIAotICBtYmZpID0gb3BlbiAob3V0ZmlsZSwgT19XUk9OTFkgfCBPX0NSRUFUIHwg T19FWENMLCAwNjY2KTsKKyAgbWJmaSA9IG9wZW4gKG91dGZpbGUsIE9fV1JPTkxZIHwgT19C SU5BUlkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjY2KTsKICAgaWYgKG1iZmkgPCAwKQogICAg IHsKICAgICAgIHBvcF9jbG9zZSAoc2VydmVyKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMv Q2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxvZwkyMDE0LTA3LTEzIDE1OjUwOjM1ICswMDAw CisrKyBzcmMvQ2hhbmdlTG9nCTIwMTQtMDctMTQgMDI6MDI6MTUgKzAwMDAKQEAgLTEsMyAr MSwyMiBAQAorMjAxNC0wNy0xNCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+ CisKKwlVc2UgYmluYXJ5LWlvIG1vZHVsZSwgT19CSU5BUlksIGFuZCAiYiIgZmxhZyAoQnVn IzE4MDA2KS4KKwkqIGNhbGxwcm9jLmMgKGNyZWF0ZV90ZW1wX2ZpbGUpOiBVc2UgbWtvc3Rl bXAncyBPX0JJTkFSWSBmbGFnLgorCSogZW1hY3MuYyBbTVNET1NdOgorCSogZW1hY3MuYyAo bWFpbikgW0RPU19OVF06IERvbid0IG1lc3Mgd2l0aCBfZm1vZGUuCisJKG1haW4pIFtNU0RP U106IFVzZSBTRVRfQklOQVJZIGluc3RlYWQgb2Ygc2V0bW9kZS4KKwkqIG1pbmlidWYuYzog SW5jbHVkZSBiaW5hcnktaW8uaCBpbnN0ZWFkIG9mIGZjbnRsLmguCisJKHJlYWRfbWluaWJ1 Zl9ub25pbnRlcmFjdGl2ZSk6CisJVXNlIHNldF9iaW5hcnlfbW9kZSBpbnN0ZWFkIG9mIGhh bmRjcmFmdGVkIGNvZGUuCisJRG9uJ3QgY2FsbCBlbWFjc19zZXRfdHR5IGlmIGVtYWNzX2dl dF90dHkgZmFpbGVkLgorCSogcHJvY2Vzcy5jOiBJbmNsdWRlIGJpbmFyeS1pby5oLgorCShG bWFrZV9uZXR3b3JrX3Byb2Nlc3MsIG5ldHdvcmtfaW50ZXJmYWNlX2xpc3QpCisJKG5ldHdv cmtfaW50ZXJmYWNlX2luZm8sIHNlcnZlcl9hY2NlcHRfY29ubmVjdGlvbik6CisJVXNlIHNl dF9iaW5hcnlfbW9kZSBvbiBuZXdseS1jcmVhdGVkIHNvY2tldHMuCisJKiBzeXNkZXAuYywg c3lzdHR5LmggKGVtYWNzX2dldF90dHkpOiBSZXR1cm4gaW50LCBub3Qgdm9pZC4KKwkqIHN5 c2RlcC5jIChlbWFjc19vcGVuLCBlbWFjc19waXBlKTogVXNlIE9fQklOQVJZLgorCSogdzMy LmMgKHBpcGUyKTogQWRqdXN0IGVhc3NlcnQgdG8gaW5jbHVkZSBPX0JJTkFSWS4KKwogMjAx NC0wNy0xMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAlJbXByb3Zl IGJlaGF2aW9yIG9mICdienIgdXA7IGNkIHNyYzsgbWFrZSAtaycuCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL2NhbGxwcm9jLmMnCi0tLSBzcmMvY2FsbHByb2MuYwkyMDE0LTA2LTA4IDAw OjM1OjI3ICswMDAwCisrKyBzcmMvY2FsbHByb2MuYwkyMDE0LTA3LTE0IDAyOjAyOjE1ICsw MDAwCkBAIC05ODIsNyArOTgyLDcgQEAKIAogICAgIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAo KTsKICAgICByZWNvcmRfdW53aW5kX3Byb3RlY3Rfbm90aGluZyAoKTsKLSAgICBmZCA9IG1r b3N0ZW1wICh0ZW1wZmlsZSwgT19DTE9FWEVDKTsKKyAgICBmZCA9IG1rb3N0ZW1wICh0ZW1w ZmlsZSwgT19CSU5BUlkgfCBPX0NMT0VYRUMpOwogICAgIGlmIChmZCA8IDApCiAgICAgICBy ZXBvcnRfZmlsZV9lcnJvciAoIkZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBmaWxlIHVzaW5n IHBhdHRlcm4iLAogCQkJIHBhdHRlcm4pOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9lbWFj cy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxNC0wNi0wMyAyMDowODowOCArMDAwMAorKysgc3Jj L2VtYWNzLmMJMjAxNC0wNy0xNCAwMjowMjoxNSArMDAwMApAQCAtNTEsNiArNTEsMTAgQEAK ICNpbmNsdWRlICJjeWd3MzIuaCIKICNlbmRpZgogCisjaWZkZWYgTVNET1MKKyNpbmNsdWRl IDxiaW5hcnktaW8uaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAj aW5jbHVkZSBURVJNX0hFQURFUgogI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwpA QCAtOTE4LDIwICs5MjIsMTAgQEAKIAogI2VuZGlmCS8qIG5vdCBTWVNURU1fTUFMTE9DICov CiAKLSNpZiBkZWZpbmVkIChNU0RPUykgfHwgZGVmaW5lZCAoV0lORE9XU05UKQotICAvKiBX ZSBkbyBhbGwgZmlsZSBpbnB1dC9vdXRwdXQgYXMgYmluYXJ5IGZpbGVzLiAgV2hlbiB3ZSBu ZWVkIHRvIHRyYW5zbGF0ZQotICAgICBuZXdsaW5lcywgd2UgZG8gdGhhdCBtYW51YWxseS4g ICovCi0gIF9mbW9kZSA9IE9fQklOQVJZOwotI2VuZGlmIC8qIE1TRE9TIHx8IFdJTkRPV1NO VCAqLwotCiAjaWZkZWYgTVNET1MKLSAgaWYgKCFpc2F0dHkgKGZpbGVubyAoc3RkaW4pKSkK LSAgICBzZXRtb2RlIChmaWxlbm8gKHN0ZGluKSwgT19CSU5BUlkpOwotICBpZiAoIWlzYXR0 eSAoZmlsZW5vIChzdGRvdXQpKSkKLSAgICB7Ci0gICAgICBmZmx1c2ggKHN0ZG91dCk7Ci0g ICAgICBzZXRtb2RlIChmaWxlbm8gKHN0ZG91dCksIE9fQklOQVJZKTsKLSAgICB9CisgIFNF VF9CSU5BUlkgKGZpbGVubyAoc3RkaW4pKTsKKyAgZmZsdXNoIChzdGRvdXQpOworICBTRVRf QklOQVJZIChmaWxlbm8gKHN0ZG91dCkpOwogI2VuZGlmIC8qIE1TRE9TICovCiAKICAgLyog U2tpcCBpbml0aWFsIHNldGxvY2FsZSBpZiBMQ19BTEwgaXMgIkMiLCBhcyBpdCdzIG5vdCBu ZWVkZWQgaW4gdGhhdCBjYXNlLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9taW5pYnVmLmMn Ci0tLSBzcmMvbWluaWJ1Zi5jCTIwMTQtMDctMTIgMDc6NDc6NDAgKzAwMDAKKysrIHNyYy9t aW5pYnVmLmMJMjAxNC0wNy0xMyAwNToyNDo0MyArMDAwMApAQCAtMjIsOSArMjIsNyBAQAog I2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2lmZGVmIFdJTkRP V1NOVAotI2luY2x1ZGUgPGZjbnRsLmg+CS8qIEZvciBPX0JJTkFSWSwgT19URVhULiAqLwot I2VuZGlmCisjaW5jbHVkZSA8YmluYXJ5LWlvLmg+CiAKICNpbmNsdWRlICJsaXNwLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMuaCIKQEAgLTIzMSw2ICsyMjksNyBAQAogICBpbnQgYzsKICAg dW5zaWduZWQgY2hhciBoaWRlX2NoYXIgPSAwOwogICBzdHJ1Y3QgZW1hY3NfdHR5IGV0dHk7 CisgIGJvb2wgZXR0eV92YWxpZDsKIAogICAvKiBDaGVjaywgd2hldGhlciB3ZSBuZWVkIHRv IHN1cHByZXNzIGVjaG9pbmcuICAqLwogICBpZiAoQ0hBUkFDVEVSUCAoVnJlYWRfaGlkZV9j aGFyKSkKQEAgLTIzOSwxMSArMjM4LDkgQEAKICAgLyogTWFuaXB1bGF0ZSB0dHkuICAqLwog ICBpZiAoaGlkZV9jaGFyKQogICAgIHsKLSAgICAgIGVtYWNzX2dldF90dHkgKGZpbGVubyAo c3RkaW4pLCAmZXR0eSk7Ci0jaWZkZWYgV0lORE9XU05UCi0gICAgICBpZiAoaXNhdHR5IChm aWxlbm8gKHN0ZGluKSkpCi0JX3NldG1vZGUgKGZpbGVubyAoc3RkaW4pLCBPX0JJTkFSWSk7 Ci0jZW5kaWYKKyAgICAgIGV0dHlfdmFsaWQgPSBlbWFjc19nZXRfdHR5IChmaWxlbm8gKHN0 ZGluKSwgJmV0dHkpID09IDA7CisgICAgICBpZiAoZXR0eV92YWxpZCkKKwlzZXRfYmluYXJ5 X21vZGUgKGZpbGVubyAoc3RkaW4pLCBPX0JJTkFSWSk7CiAgICAgICBzdXBwcmVzc19lY2hv X29uX3R0eSAoZmlsZW5vIChzdGRpbikpOwogICAgIH0KIApAQCAtMjgxLDExICsyNzgsMTEg QEAKICAgaWYgKGhpZGVfY2hhcikKICAgICB7CiAgICAgICBmcHJpbnRmIChzdGRvdXQsICJc biIpOwotICAgICAgZW1hY3Nfc2V0X3R0eSAoZmlsZW5vIChzdGRpbiksICZldHR5LCAwKTsK LSNpZmRlZiBXSU5ET1dTTlQKLSAgICAgIGlmIChpc2F0dHkgKGZpbGVubyAoc3RkaW4pKSkK LQlfc2V0bW9kZSAoZmlsZW5vIChzdGRpbiksIE9fVEVYVCk7Ci0jZW5kaWYKKyAgICAgIGlm IChldHR5X3ZhbGlkKQorCXsKKwkgIGVtYWNzX3NldF90dHkgKGZpbGVubyAoc3RkaW4pLCAm ZXR0eSwgMCk7CisJICBzZXRfYmluYXJ5X21vZGUgKGZpbGVubyAoc3RkaW4pLCBPX1RFWFQp OworCX0KICAgICB9CiAKICAgaWYgKGxlbiB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInKQoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9wcm9jZXNzLmMnCi0tLSBzcmMvcHJvY2Vzcy5jCTIw MTQtMDctMDggMTc6MTM6MzIgKzAwMDAKKysrIHNyYy9wcm9jZXNzLmMJMjAxNC0wNy0xNCAw MjowMjoxNSArMDAwMApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgPHB0eS5oPgogI2Vu ZGlmCiAKKyNpbmNsdWRlIDxiaW5hcnktaW8uaD4KICNpbmNsdWRlIDxjLWN0eXBlLmg+CiAj aW5jbHVkZSA8c2lnMnN0ci5oPgogI2luY2x1ZGUgPHZlcmlmeS5oPgpAQCAtMzE0Miw2ICsz MTQzLDggQEAKIAkgIGNvbnRpbnVlOwogCX0KIAorICAgICAgc2V0X2JpbmFyeV9tb2RlIChz LCBPX0JJTkFSWSk7CisKICNpZmRlZiBEQVRBR1JBTV9TT0NLRVRTCiAgICAgICBpZiAoIWlz X3NlcnZlciAmJiBzb2NrdHlwZSA9PSBTT0NLX0RHUkFNKQogCWJyZWFrOwpAQCAtMzUzNSw2 ICszNTM4LDcgQEAKICAgICByZXR1cm4gUW5pbDsKICAgY291bnQgPSBTUEVDUERMX0lOREVY ICgpOwogICByZWNvcmRfdW53aW5kX3Byb3RlY3RfaW50IChjbG9zZV9maWxlX3Vud2luZCwg cyk7CisgIHNldF9iaW5hcnlfbW9kZSAocywgT19CSU5BUlkpOwogCiAgIGRvCiAgICAgewpA QCAtMzY4Nyw2ICszNjkxLDcgQEAKICAgICByZXR1cm4gUW5pbDsKICAgY291bnQgPSBTUEVD UERMX0lOREVYICgpOwogICByZWNvcmRfdW53aW5kX3Byb3RlY3RfaW50IChjbG9zZV9maWxl X3Vud2luZCwgcyk7CisgIHNldF9iaW5hcnlfbW9kZSAocywgT19CSU5BUlkpOwogCiAgIGVs dCA9IFFuaWw7CiAjaWYgZGVmaW5lZCAoU0lPQ0dJRkZMQUdTKSAmJiBkZWZpbmVkIChIQVZF X1NUUlVDVF9JRlJFUV9JRlJfRkxBR1MpCkBAIC00MTM0LDYgKzQxMzksNyBAQAogICBjaGFu X3Byb2Nlc3Nbc10gPSBwcm9jOwogCiAgIGZjbnRsIChzLCBGX1NFVEZMLCBPX05PTkJMT0NL KTsKKyAgc2V0X2JpbmFyeV9tb2RlIChzLCBPX0JJTkFSWSk7CiAKICAgcCA9IFhQUk9DRVNT IChwcm9jKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNyYy9z eXNkZXAuYwkyMDE0LTA3LTExIDE3OjU1OjI0ICswMDAwCisrKyBzcmMvc3lzZGVwLmMJMjAx NC0wNy0xNCAwMjowMjoxNSArMDAwMApAQCAtNzc1LDggKzc3NSw5IEBACiAvKiBHZXR0aW5n IGFuZCBzZXR0aW5nIGVtYWNzX3R0eSBzdHJ1Y3R1cmVzLiAgKi8KIAogLyogU2V0ICpUQyB0 byB0aGUgcGFyYW1ldGVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIEZELAotICAg b3IgY2xlYXIgaXQgaWYgdGhlIHBhcmFtZXRlcnMgYXJlIG5vdCBhdmFpbGFibGUuICAqLwot dm9pZAorICAgb3IgY2xlYXIgaXQgaWYgdGhlIHBhcmFtZXRlcnMgYXJlIG5vdCBhdmFpbGFi bGUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSAoc2V0dGluZyBlcnJubykgb24gZmFp bHVyZS4gICovCitpbnQKIGVtYWNzX2dldF90dHkgKGludCBmZCwgc3RydWN0IGVtYWNzX3R0 eSAqc2V0dGluZ3MpCiB7CiAgIC8qIFJldHJpZXZlIHRoZSBwcmltYXJ5IHBhcmFtZXRlcnMg LSBiYXVkIHJhdGUsIGNoYXJhY3RlciBzaXplLCBldGNldGVyYS4gICovCkBAIC03ODYsMTUg Kzc4NywxNiBAQAogICBIQU5ETEUgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUgKGZkKTsK ICAgRFdPUkQgY29uc29sZV9tb2RlOwogCi0gIGlmIChoICYmIGggIT0gSU5WQUxJRF9IQU5E TEVfVkFMVUUpCisgIGlmIChoICYmIGggIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUgJiYgR2V0 Q29uc29sZU1vZGUgKGgsICZjb25zb2xlX21vZGUpKQogICAgIHsKLSAgICAgIGlmIChHZXRD b25zb2xlTW9kZSAoaCwgJmNvbnNvbGVfbW9kZSkpCi0Jc2V0dGluZ3MtPm1haW4gPSBjb25z b2xlX21vZGU7CisgICAgICBzZXR0aW5ncy0+bWFpbiA9IGNvbnNvbGVfbW9kZTsKKyAgICAg IHJldHVybiAwOwogICAgIH0KICNlbmRpZgkvKiBXSU5ET1dTTlQgKi8KKyAgcmV0dXJuIGlz YXR0eSAoZmQpIC0gMTsKICNlbHNlCS8qICFET1NfTlQgKi8KICAgLyogV2UgaGF2ZSB0aG9z ZSBuaWZ0eSBQT1NJWCB0Y211bWJsZWF0dHIgZnVuY3Rpb25zLiAgKi8KLSAgdGNnZXRhdHRy IChmZCwgJnNldHRpbmdzLT5tYWluKTsKKyAgcmV0dXJuIHRjZ2V0YXR0ciAoZmQsICZzZXR0 aW5ncy0+bWFpbik7CiAjZW5kaWYKIH0KIApAQCAtMjE5OCw2ICsyMjAwLDcgQEAKICNlbmRp ZgogCiAvKiBPcGVuIEZJTEUgZm9yIEVtYWNzIHVzZSwgdXNpbmcgb3BlbiBmbGFncyBPRkxB RyBhbmQgbW9kZSBNT0RFLgorICAgVXNlIGJpbmFyeSBJL08gb24gc3lzdGVtcyB0aGF0IGNh cmUgYWJvdXQgdGV4dCB2cyBiaW5hcnkgSS9PLgogICAgQXJyYW5nZSBmb3Igc3VicHJvZ3Jh bXMgdG8gbm90IGluaGVyaXQgdGhlIGZpbGUgZGVzY3JpcHRvci4KICAgIFByZWZlciBhIG1l dGhvZCB0aGF0IGlzIG11bHRpdGhyZWFkLXNhZmUsIGlmIGF2YWlsYWJsZS4KICAgIERvIG5v dCBmYWlsIG1lcmVseSBiZWNhdXNlIHRoZSBvcGVuIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNp Z25hbC4KQEAgLTIyMDcsNyArMjIxMCw3IEBACiBlbWFjc19vcGVuIChjb25zdCBjaGFyICpm aWxlLCBpbnQgb2ZsYWdzLCBpbnQgbW9kZSkKIHsKICAgaW50IGZkOwotICBvZmxhZ3MgfD0g T19DTE9FWEVDOworICBvZmxhZ3MgfD0gT19CSU5BUlkgfCBPX0NMT0VYRUM7CiAgIHdoaWxl ICgoZmQgPSBvcGVuIChmaWxlLCBvZmxhZ3MsIG1vZGUpKSA8IDAgJiYgZXJybm8gPT0gRUlO VFIpCiAgICAgUVVJVDsKICAgaWYgKCEgT19DTE9FWEVDICYmIDAgPD0gZmQpCkBAIC0yMjU0 LDcgKzIyNTcsNyBAQAogI2lmZGVmIE1TRE9TCiAgIHJldHVybiBwaXBlIChmZCk7CiAjZWxz ZSAgLyogIU1TRE9TICovCi0gIGludCByZXN1bHQgPSBwaXBlMiAoZmQsIE9fQ0xPRVhFQyk7 CisgIGludCByZXN1bHQgPSBwaXBlMiAoZmQsIE9fQklOQVJZIHwgT19DTE9FWEVDKTsKICAg aWYgKCEgT19DTE9FWEVDICYmIHJlc3VsdCA9PSAwKQogICAgIHsKICAgICAgIGZjbnRsIChm ZFswXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3N5 c3R0eS5oJwotLS0gc3JjL3N5c3R0eS5oCTIwMTQtMDctMTEgMTc6NTU6MjQgKzAwMDAKKysr IHNyYy9zeXN0dHkuaAkyMDE0LTA3LTEyIDIwOjQ3OjUwICswMDAwCkBAIC04MCw3ICs4MCw3 IEBACiB9OwogDAogLyogRnJvbSBzeXNkZXAuYyBvciB3MzIuYyAgKi8KLWV4dGVybiB2b2lk IGVtYWNzX2dldF90dHkgKGludCwgc3RydWN0IGVtYWNzX3R0eSAqKSBFWFRFUk5BTExZX1ZJ U0lCTEU7CitleHRlcm4gaW50IGVtYWNzX2dldF90dHkgKGludCwgc3RydWN0IGVtYWNzX3R0 eSAqKSBFWFRFUk5BTExZX1ZJU0lCTEU7CiBleHRlcm4gaW50IGVtYWNzX3NldF90dHkgKGlu dCwgc3RydWN0IGVtYWNzX3R0eSAqLCBib29sKSBFWFRFUk5BTExZX1ZJU0lCTEU7CiBleHRl cm4gdm9pZCBzdXBwcmVzc19lY2hvX29uX3R0eSAoaW50KTsKIGV4dGVybiBpbnQgc2VyaWFs X29wZW4gKExpc3BfT2JqZWN0KTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyLmMnCi0t LSBzcmMvdzMyLmMJMjAxNC0wNy0xMCAxOTowOToyNiArMDAwMAorKysgc3JjL3czMi5jCTIw MTQtMDctMTQgMDI6MDI6MTUgKzAwMDAKQEAgLTg4Miw3ICs4ODIsNyBAQAogCSAgZ19iX2lu aXRfc2V0X25hbWVkX3NlY3VyaXR5X2luZm9fYSA9IDE7CiAJICBobV9hZHZhcGkzMiA9IExv YWRMaWJyYXJ5ICgiQWR2YXBpMzIuZGxsIik7CiAJICBzX3Bmbl9TZXRfTmFtZWRfU2VjdXJp dHlfSW5mb0EgPQotCSAgICAoU2V0TmFtZWRTZWN1cml0eUluZm9BX1Byb2MpIEdldFByb2NB ZGRyZXNzIChobV9hZHZhcGkzMiwKKwkgICAgKFNldE5hbWVkU2VjdXJpdHlJbmZvQV9Qcm9j KSBHZXRQcm9jQWRkcmVzcyAoaG1fYWR2YXBpMzIsCiAJCQkJCQkJICJTZXROYW1lZFNlY3Vy aXR5SW5mb0EiKTsKIAl9CiAgICAgICBpZiAoc19wZm5fU2V0X05hbWVkX1NlY3VyaXR5X0lu Zm9BID09IE5VTEwpCkBAIC03ODY1LDcgKzc4NjUsNyBAQAogICBpbnQgcmM7CiAgIHVuc2ln bmVkIGZsYWdzOwogCi0gIGVhc3NlcnQgKHBpcGUyX2ZsYWdzID09IE9fQ0xPRVhFQyk7Cisg IGVhc3NlcnQgKHBpcGUyX2ZsYWdzID09IChPX0JJTkFSWSB8IE9fQ0xPRVhFQykpOwogCiAg IC8qIG1ha2UgcGlwZSBoYW5kbGVzIG5vbi1pbmhlcml0YWJsZTsgd2hlbiB3ZSBzcGF3biBh IGNoaWxkLCB3ZQogICAgICByZXBsYWNlIHRoZSByZWxldmFudCBoYW5kbGUgd2l0aCBhbiBp bmhlcml0YWJsZSBvbmUuICBBbHNvIHB1dAoK --------------040508070105040200040706--