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#13783: simplify data_start configuration for Emacs Date: Fri, 22 Feb 2013 12:56:25 -0800 Message-ID: <5127DB79.6000202@cs.ucla.edu> References: <512729DD.7040903@cs.ucla.edu> <83d2vsmrc0.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090206080805070001010102" X-Trace: ger.gmane.org 1361566679 11951 80.91.229.3 (22 Feb 2013 20:57:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 22 Feb 2013 20:57:59 +0000 (UTC) Cc: 13783@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Feb 22 21:58:20 2013 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 1U8zhD-000148-Ph for geb-bug-gnu-emacs@m.gmane.org; Fri, 22 Feb 2013 21:58:20 +0100 Original-Received: from localhost ([::1]:45110 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U8zgt-0005WP-E4 for geb-bug-gnu-emacs@m.gmane.org; Fri, 22 Feb 2013 15:57:59 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:52764) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U8zgi-0005S9-N7 for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 15:57:57 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U8zgY-0002NV-LQ for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 15:57:48 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:39245) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U8zgY-0002NM-GS for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 15:57:38 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1U8zht-0000PU-UR for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 15:59:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Feb 2013 20:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13783 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 13783-submit@debbugs.gnu.org id=B13783.13615666841479 (code B ref 13783); Fri, 22 Feb 2013 20:59:01 +0000 Original-Received: (at 13783) by debbugs.gnu.org; 22 Feb 2013 20:58:04 +0000 Original-Received: from localhost ([127.0.0.1]:44709 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U8zgv-0000NY-6a for submit@debbugs.gnu.org; Fri, 22 Feb 2013 15:58:04 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:34060) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U8zgn-0000NH-VW for 13783@debbugs.gnu.org; Fri, 22 Feb 2013 15:57:59 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 2409739E8100; Fri, 22 Feb 2013 12:56:29 -0800 (PST) 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 g1rKUFMcDlPY; Fri, 22 Feb 2013 12:56:26 -0800 (PST) Original-Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 68F6739E8008; Fri, 22 Feb 2013 12:56:26 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 In-Reply-To: <83d2vsmrc0.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.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:71667 Archived-At: This is a multi-part message in MIME format. --------------090206080805070001010102 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 02/22/2013 05:05 AM, Eli Zaretskii wrote: > Could you please explain more about what this is intended to > accomplish? Mostly, it's simplification. There's a lot of cruft in there, about linking Emacs specially and so forth, that was needed way back when we made pure space read-only but is now no longer needed. > are we removing the data-start thing on all platforms where GCPRO is > a no-op, i.e. those which support USE_LSB_TAG? USE_LSB_TAG is a different thing. The patch omits data_start on hosts that use the system malloc, since data_start is now needed only on hosts where GNU Emacs supplies malloc. USE_LSB_TAG is more closely related to DATA_SEG_BITS, but that is not changed by this patch. > Should platforms that HAVE_DATA_START initialize data_start to some > value? Should _all_ platforms do that? If not, which ones should? No, data_start's contents are irrelevant. Only its address matters. On GNU hosts the linker supplies the address automatically; on non-GNU hosts we approximate it by declaring a variable whose contents don't matter. >> - extern POINTER (*real_morecore) (ptrdiff_t); >> + extern void *(*real_morecore) (ptrdiff_t); > > This needs corresponding changes in ralloc.c, I think, at least for > consistency if nothing else. Done in trunk bzr 111859, which simplifies the attached patch. Revised patch attached, relative to trunk bzr 111859. >> - data_start = (int) start_of_data (); >> + data_start = (int) get_data_start (); >... > This part is wrong: unexcoff.c is used only by the MSDOS build Thanks for catching that. I'll fix that as follows; this fix is contained in the attached patch. --- src/unexcoff.c 2013-02-22 08:11:05 +0000 +++ src/unexcoff.c 2013-02-22 19:39:27 +0000 @@ -99,7 +99,7 @@ #include -extern unsigned char *get_data_start (void); +extern int etext[]; static long block_copy_start; /* Old executable start point */ static struct filehdr f_hdr; /* File header */ @@ -168,7 +168,7 @@ pagemask = getpagesize () - 1; /* Adjust text/data boundary. */ - data_start = (int) get_data_start (); + data_start = (int) (etext + 1); data_start = ADDR_CORRECT (data_start); data_start = data_start & ~pagemask; /* (Down) to page boundary. */ --------------090206080805070001010102 Content-Type: text/plain; charset=us-ascii; name="data_start.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="data_start.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEzLTAyLTIx IDIyOjQyOjU2ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMy0wMi0yMiAwODoyMTo1NSArMDAw MApAQCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTIyICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCVNpbXBsaWZ5IGRhdGFfc3RhcnQgY29uZmlndXJhdGlvbiAoQnVn IzEzNzgzKS4KKwkqIGNvbmZpZ3VyZS5hYyAoQ1JUX0RJUiwgTElCX1NUQU5EQVJELCBTVEFS VF9GSUxFUywgREFUQV9TVEFSVCkKKwkoTERfRklSU1RGTEFHLCBPUkRJTkFSWV9MSU5LLCBM SUJfR0NDKTogUmVtb3ZlLgorCShBQ19DSEVDS19IRUFERVJTX09OQ0UpOiBSZW1vdmUgc3lz L3Jlc291cmNlLmgsIGFzIGl0J3MKKwlub3QgYWx3YXlzIG5lZWRlZC4KKwkoSEFWRV9EQVRB X1NUQVJUKTogTmV3IG1hY3JvLgorCiAyMDEzLTAyLTIxICBQYXVsIEVnZ2VydCAgPGVnZ2Vy dEBjcy51Y2xhLmVkdT4KIAogCVBhcmFsbGVsaXplIGRvY3VtZW50YXRpb24gYnVpbGRzLgoK PT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NQUC1ERUZJTkVTJwotLS0gYWRtaW4vQ1BQLURF RklORVMJMjAxMi0xMi0xNCAxODo1OTowMCArMDAwMAorKysgYWRtaW4vQ1BQLURFRklORVMJ MjAxMy0wMi0yMiAwODoxMTowNSArMDAwMApAQCAtOTAsNyArOTAsNiBAQAogQlJPS0VOX1BU WV9SRUFEX0FGVEVSX0VBR0FJTgogQ0xBU0hfREVURUNUSU9OCiBEQVRBX1NFR19CSVRTCi1E QVRBX1NUQVJUCiBERUZBVUxUX1NPVU5EX0RFVklDRQogREVWSUNFX1NFUAogRElSRUNUT1JZ X1NFUApAQCAtNDA4LDcgKzQwNyw2IEBACiBOU0lHCiBOU0lHX01JTklNVU0KIE5VTExfREVW SUNFCi1PUkRJTkFSWV9MSU5LCiBQQUdFU0laRQogUFJFRkVSX1ZTVVNQCiBQVFlfSVRFUkFU SU9OCgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ2hhbmdlTG9nJwotLS0gYWRtaW4vQ2hh bmdlTG9nCTIwMTMtMDItMTEgMjM6Mzc6MTggKzAwMDAKKysrIGFkbWluL0NoYW5nZUxvZwky MDEzLTAyLTIyIDA4OjIxOjU1ICswMDAwCkBAIC0xLDMgKzEsOCBAQAorMjAxMy0wMi0yMiAg UGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlTaW1wbGlmeSBkYXRhX3N0 YXJ0IGNvbmZpZ3VyYXRpb24gKEJ1ZyMxMzc4MykuCisJKiBDUFAtREVGSU5FUyAoREFUQV9T VEFSVCwgT1JESU5BUllfTElOSyk6IFJlbW92ZS4KKwogMjAxMy0wMi0xMSAgUGF1bCBFZ2dl cnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAlUdW5lIGJ5IHVzaW5nIG1lbWNociBhbmQg bWVtcmNoci4KCj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1cmUuYWMnCi0tLSBjb25maWd1 cmUuYWMJMjAxMy0wMi0xNSAwNjozNTo1NCArMDAwMAorKysgY29uZmlndXJlLmFjCTIwMTMt MDItMjIgMDg6MTE6MDUgKzAwMDAKQEAgLTIzMCwxMiArMjMwLDYgQEAKICAgIGZpCiBmaQog Ci1DUlRfRElSPQotQUNfQVJHX1dJVEgoW2NydC1kaXJdLGRubAotW0FTX0hFTFBfU1RSSU5H KFstLXdpdGgtY3J0LWRpcj1ESVJdLFtkaXJlY3RvcnkgY29udGFpbmluZyBjcnRuLm8gZXRj LgotVGhlIGRlZmF1bHQgaXMgL3Vzci9saWIsIG9yIC91c3IvbGliNjQgb24gc29tZSBwbGF0 Zm9ybXMuXSldKQotQ1JUX0RJUj0iJHt3aXRoX2NydF9kaXJ9IgotCiBBQ19BUkdfV0lUSChn YW1ldXNlcixkbmwKIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdhbWV1c2VyPVVTRVJdLFt1 c2VyIGZvciBzaGFyZWQgZ2FtZSBzY29yZSBmaWxlc10pXSkKIHRlc3QgIlgke3dpdGhfZ2Ft ZXVzZXJ9IiAhPSBYICYmIHRlc3QgIiR7d2l0aF9nYW1ldXNlcn0iICE9IHllcyBcCkBAIC0x MDUxLDQyICsxMDQ1LDI5IEBACiAKIAogTElCX01BVEg9LWxtCi1MSUJfU1RBTkRBUkQ9Ci1T VEFSVF9GSUxFUz0KIGRubCBDdXJyZW50IHBvc3NpYmlsaXRpZXMgaGFuZGxlZCBieSBzZWQg KGFpeDQtMiAtPiBhaXgsCiBkbmwgZ251LWxpbnV4IC0+IGdudS9saW51eCwgZXRjLik6CiBk bmwgZ251LCBnbnUvbGludXgsIGdudS9rZnJlZWJzZCwgYWl4LCBjeWd3aW4sIGRhcndpbiwg aHB1eCwgaXJpeC4KIGRubCBBbmQgc3BlY2lhbCBjYXNlczogYmVya2VsZXktdW5peCwgdXNn LXVuaXgtdiwgbXMtZG9zLCB3aW5kb3dzLW50LgogU1lTVEVNX1RZUEU9YGVjaG8gJG9wc3lz IHwgc2VkIC1lICdzL1tbMC05XV0uKi8vJyAtZSAnc3wtfC98J2AKIAotZG5sIE5CIGRvIG5v dCB1c2UgQ1JUX0RJUiB1bnF1b3RlZCBoZXJlLCBzaW5jZSBpdCBtaWdodCBub3QgYmUgc2V0 IHlldC4KIGNhc2UgJG9wc3lzIGluCiAgIGN5Z3dpbiApCiAgICAgTElCX01BVEg9Ci0gICAg U1RBUlRfRklMRVM9J3ByZS1jcnQwLm8nCiAgICAgOzsKICAgZGFyd2luICkKICAgICAjIyBB ZGRpbmcgLWxtIGNvbmZ1c2VzIHRoZSBkeW5hbWljIGxpbmtlciwgc28gb21pdCBpdC4KICAg ICBMSUJfTUFUSD0KLSAgICBTVEFSVF9GSUxFUz0ncHJlLWNydDAubycKICAgICA7OwogICBm cmVlYnNkICkKLSAgICBMSUJfU1RBTkRBUkQ9Jy1sZ2NjIC1sYyAtbGdjYyAkKENSVF9ESVIp L2NydG4ubycKLSAgICBTVEFSVF9GSUxFUz0ncHJlLWNydDAubyAkKENSVF9ESVIpL2NydDEu byAkKENSVF9ESVIpL2NydGkubycKICAgICBTWVNURU1fVFlQRT1iZXJrZWxleS11bml4CiAg ICAgOzsKICAgZ251LWxpbnV4IHwgZ251LWtmcmVlYnNkICkKLSAgICBMSUJfU1RBTkRBUkQ9 Jy1sZ2NjIC1sYyAtbGdjYyAkKENSVF9ESVIpL2NydG4ubycKLSAgICBTVEFSVF9GSUxFUz0n cHJlLWNydDAubyAkKENSVF9ESVIpL2NydDEubyAkKENSVF9ESVIpL2NydGkubycKICAgICA7 OwogICBocHV4MTAtMjAgfCBocHV4MTEgKQotICAgIExJQl9TVEFOREFSRD0tbGMKLSAgICBT VEFSVF9GSUxFUz0ncHJlLWNydDAubyAkKENSVF9ESVIpL2NydDAubycKICAgICA7OwogICBk bmwgTkIgdGhpcyBtYXkgYmUgYWRqdXN0ZWQgYmVsb3cuCiAgIG5ldGJzZCB8IG9wZW5ic2Qg KQotICAgIExJQl9TVEFOREFSRD0nLWxnY2MgLWxjIC1sZ2NjICQoQ1JUX0RJUikvY3J0ZW5k Lm8nCi0gICAgU1RBUlRfRklMRVM9J3ByZS1jcnQwLm8gJChDUlRfRElSKS9jcnQwLm8gJChD UlRfRElSKS9jcnRiZWdpbi5vJwogICAgIFNZU1RFTV9UWVBFPWJlcmtlbGV5LXVuaXgKICAg ICA7OwogCkBAIC0xMDk3LDk2ICsxMDc4LDkgQEAKIGVzYWMKIAogQUNfU1VCU1QoTElCX01B VEgpCi1BQ19TVUJTVChTVEFSVF9GSUxFUykKIEFDX0RFRklORV9VTlFVT1RFRChTWVNURU1f VFlQRSwgIiRTWVNURU1fVFlQRSIsCiAgIFtUaGUgdHlwZSBvZiBzeXN0ZW0geW91IGFyZSBj b21waWxpbmcgZm9yOyBzZXRzIGBzeXN0ZW0tdHlwZScuXSkKIAotZG5sIE5vdCBhbGwgcGxh dGZvcm1zIHVzZSBjcnRuLm8gZmlsZXMuICBDaGVjayBpZiB0aGUgY3VycmVudCBvbmUgZG9l cy4KLWNydF9maWxlcz0KLQotZm9yIGZpbGUgaW4geCAkTElCX1NUQU5EQVJEICRTVEFSVF9G SUxFUzsgZG8KLSAgY2FzZSAiJGZpbGUiIGluCi0gICAgKkNSVF9ESVIqKSBjcnRfZmlsZXM9 IiRjcnRfZmlsZXMgYGVjaG8gJGZpbGUgfCBzZWQgLWUgJ3N8LiovfHwnYCIgOzsKLSAgZXNh YwotZG9uZQotCi1pZiB0ZXN0ICJ4JGNydF9maWxlcyIgIT0geDsgdGhlbgotCi0gICMjIElm IHVzZXIgc3BlY2lmaWVkIGEgY3J0LWRpciwgdXNlIHRoYXQgdW5jb25kaXRpb25hbGx5Lgot ICBjcnRfZ2NjPW5vCi0KLSAgaWYgdGVzdCAiWCRDUlRfRElSIiA9ICJYIjsgdGhlbgotCi0g ICAgQ1JUX0RJUj0vdXNyL2xpYiAgICAgICAgICAgICMgZGVmYXVsdAotCi0gICAgY2FzZSAi JGNhbm9uaWNhbCIgaW4KLSAgICAgIHg4Nl82NC0qLWxpbnV4LWdudSogfCBzMzkweC0qLWxp bnV4LWdudSopCi0gICAgICAjIyBPbiB4ODYtNjQgYW5kIHMzOTB4IEdOVS9MaW51eCBkaXN0 cmlidXRpb25zLCB0aGUgc3RhbmRhcmQgbGlicmFyeQotICAgICAgIyMgY2FuIGJlIGluIGEg dmFyaWV0eSBvZiBwbGFjZXMuICBXZSBvbmx5IHRyeSAvdXNyL2xpYjY0IGFuZCAvdXNyL2xp Yi4KLSAgICAgICMjIEZvciBhbnl0aGluZyBlbHNlIChlZyAvdXNyL2xpYjMyKSwgaXQgaXMg dXAgdGhlIHVzZXIgdG8gc3BlY2lmeQotICAgICAgIyMgdGhlIGxvY2F0aW9uIChidWcjNTY1 NSkuCi0gICAgICAjIyBUZXN0IGZvciBjcnRuLm8sIG5vdCBqdXN0IHRoZSBkaXJlY3Rvcnks IGJlY2F1c2Ugc29tZXRpbWVzIHRoZQotICAgICAgIyMgZGlyZWN0b3J5IGV4aXN0cyBidXQg ZG9lcyBub3QgaGF2ZSB0aGUgcmVsZXZhbnQgZmlsZXMgKGJ1ZyMxMjg3KS4KLSAgICAgICMj IEZJWE1FIGJldHRlciB0byB0ZXN0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSBzb21laG93 LgotICAgICAgdGVzdCAtZSAvdXNyL2xpYjY0L2NydG4ubyAmJiBDUlRfRElSPS91c3IvbGli NjQKLSAgICAgIDs7Ci0KLSAgICAgIHBvd2VycGM2NC0qLWxpbnV4LWdudSogfCBzcGFyYzY0 LSotbGludXgtZ251KikgQ1JUX0RJUj0vdXNyL2xpYjY0IDs7Ci0gICAgZXNhYwotCi0gICAg Y2FzZSAiJG9wc3lzIiBpbgotICAgICAgaHB1eDEwLTIwKSBDUlRfRElSPS9saWIgOzsKLSAg ICBlc2FjCi0KLSAgICB0ZXN0ICJ4JHtHQ0N9IiA9IHh5ZXMgJiYgY3J0X2djYz15ZXMKLQot ICBmaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENSVF9ESVIgPSAiIgotCi0gIGNy dF9taXNzaW5nPQotCi0gIGZvciBmaWxlIGluICRjcnRfZmlsZXM7IGRvCi0KLSAgICAjIyBJ ZiB3ZSdyZSB1c2luZyBnY2MsIHRyeSB0byBkZXRlcm1pbmUgaXQgYXV0b21hdGljYWxseSBi eSBhc2tpbmcKLSAgICAjIyBnY2MuICBbSWYgdGhpcyBkb2Vzbid0IHdvcmssIENSVF9ESVIg d2lsbCByZW1haW4gYXQgdGhlCi0gICAgIyMgc3lzdGVtLWRlcGVuZGVudCBkZWZhdWx0IGZy b20gYWJvdmUuXQotICAgIGlmIHRlc3QgJGNydF9nY2MgPSB5ZXMgJiYgdGVzdCAhIC1lICRD UlRfRElSLyRmaWxlOyB0aGVuCi0KLSAgICAgICBjcnRfZmlsZT1gJENDIC0tcHJpbnQtZmls ZS1uYW1lPSRmaWxlIDI+L2Rldi9udWxsYAotICAgICAgIGNhc2UgIiRjcnRfZmlsZSIgaW4K LSAgICAgICAgICovKikKLSAgICAgICAgICAgQ1JUX0RJUj1gQVNfRElSTkFNRShbIiRjcnRf ZmlsZSJdKWAKLSAgICAgICAgICAgOzsKLSAgICAgICBlc2FjCi0gICAgZmkKLQotICAgIGRu bCBXZSBleHBlY3QgYWxsIHRoZSBmaWxlcyB0byBiZSBpbiBhIHNpbmdsZSBkaXJlY3Rvcnks IHNvIGFmdGVyIHRoZQotICAgIGRubCBmaXJzdCB0aGVyZSBpcyBubyBwb2ludCBhc2tpbmcg Z2NjLgotICAgIGNydF9nY2M9bm8KLQotICAgIHRlc3QgLWUgJENSVF9ESVIvJGZpbGUgfHwg Y3J0X21pc3Npbmc9IiRjcnRfbWlzc2luZyAkZmlsZSIKLSAgZG9uZSAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAkY3J0X2ZpbGVzCi0KLSAgdGVzdCAieCRjcnRfbWlzc2luZyIgPSB4 IHx8IFwKLSAgICBBQ19NU0dfRVJST1IoW1JlcXVpcmVkIGZpbGUocykgbm90IGZvdW5kOiRj cnRfbWlzc2luZwotVHJ5IHVzaW5nIHRoZSAtLXdpdGgtY3J0LWRpciBvcHRpb24uXSkKLQot ZmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNydF9maWxlcyAhPSAiIgotCi1B Q19TVUJTVChDUlRfRElSKQotCi1jYXNlICRvcHN5cyBpbgotICBuZXRic2QgfCBvcGVuYnNk ICkKLSAgICBpZiB0ZXN0IC1mICRDUlRfRElSL2NydGkubzsgdGhlbgotCi0gICAgICAgIHRl c3QgLWYgJENSVF9ESVIvY3J0bi5vIHx8IFwKLSAgICAgICAgICBBQ19NU0dfRVJST1IoW1Jl cXVpcmVkIGZpbGUgbm90IGZvdW5kOiBjcnRuLm9dKQotCi0gICAgICAgIExJQl9TVEFOREFS RD0nLWxnY2MgLWxjIC1sZ2NjICQoQ1JUX0RJUikvY3J0ZW5kLm8gJChDUlRfRElSKS9jcnRu Lm8nCi0gICAgICAgIFNUQVJUX0ZJTEVTPSdwcmUtY3J0MC5vICQoQ1JUX0RJUikvY3J0MC5v ICQoQ1JUX0RJUikvY3J0aS5vICQoQ1JUX0RJUikvY3J0YmVnaW4ubycKLSAgICBmaQotICAg IDs7Ci1lc2FjCi0KIAogcHJlX1BLR19DT05GSUdfQ0ZMQUdTPSRDRkxBR1MKIHByZV9QS0df Q09ORklHX0xJQlM9JExJQlMKQEAgLTEzMDQsNyArMTE5OCw3IEBACiBBQ19DSEVDS19IRUFE RVJTX09OQ0UoCiAgIGxpbnV4L3ZlcnNpb24uaCBzeXMvc3lzdGVtaW5mby5oCiAgIGNvZmYu aCBwdHkuaAotICBzeXMvdmxpbWl0Lmggc3lzL3Jlc291cmNlLmgKKyAgc3lzL3Jlc291cmNl LmgKICAgc3lzL3V0c25hbWUuaCBwd2QuaCB1dG1wLmggdXRpbC5oKQogCiBBQ19NU0dfQ0hF Q0tJTkcoaWYgcGVyc29uYWxpdHkgTElOVVgzMiBjYW4gYmUgc2V0KQpAQCAtMTUyMSw4ICsx NDE1LDYgQEAKICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1JJHtHTlVTVEVQX1NZU1RFTV9IRUFE RVJTfSAke0dOVVNURVBfTE9DQUxfSEVBREVSU30iCiAgICAgIExERkxBR1M9IiRMREZMQUdT IC1MJHtHTlVTVEVQX1NZU1RFTV9MSUJSQVJJRVN9ICR7R05VU1RFUF9MT0NBTF9MSUJSQVJJ RVN9IgogICAgICBMSUJTX0dOVVNURVA9Ii1sZ251c3RlcC1ndWkgLWxnbnVzdGVwLWJhc2Ug LWxvYmpjIC1scHRocmVhZCIKLSAgICAgTElCX1NUQU5EQVJEPQotICAgICBTVEFSVF9GSUxF Uz0KICAgICAgZG5sIEdOVXN0ZXAgZGVmaW5lcyBCQVNFX05BVElWRV9PQkpDX0VYQ0VQVElP TlMgdG8gMCBvciAxLgogICAgICBkbmwgSWYgdGhleSBoYWQgY2hvc2VuIHRvIGVpdGhlciBk ZWZpbmUgaXQgb3Igbm90LCB3ZSBjb3VsZCBoYXZlCiAgICAgIGRubCBqdXN0IHVzZWQgQUNf Q0hFQ0tfREVDTCBoZXJlLgpAQCAtMTYxMSw3ICsxNTAzLDYgQEAKIEFDX1NVQlNUKG5zX3Nl bGZfY29udGFpbmVkKQogQUNfU1VCU1QoTlNfT0JKKQogQUNfU1VCU1QoTlNfT0JKQ19PQkop Ci1BQ19TVUJTVChMSUJfU1RBTkRBUkQpCiAKIEhBVkVfVzMyPW5vCiBXMzJfT0JKPQpAQCAt MTc1MSw2ICsxNjQyLDIwIEBACiBlbHNlCiAgIHRlc3QgIiRkb3VnX2xlYV9tYWxsb2MiICE9 ICJ5ZXMiICYmIEdNQUxMT0NfT0JKPWdtYWxsb2MubwogICBWTUxJTUlUX09CSj12bS1saW1p dC5vCisKKyAgQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL3ZsaW1pdC5oXSkKKyAgQUNfQ0FDSEVf Q0hFQ0soW2ZvciBkYXRhX3N0YXJ0XSwgW2VtYWNzX2N2X2RhdGFfc3RhcnRdLAorICAgIFtB Q19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorCSBbW2V4dGVybiBj aGFyIGRhdGFfc3RhcnRbXTsgY2hhciBjaDtdXSwKKwkgW1tyZXR1cm4gZGF0YV9zdGFydCA9 PSAmY2g7XV0pXSwKKyAgICAgICBbZW1hY3NfY3ZfZGF0YV9zdGFydD15ZXNdLAorICAgICAg IFtlbWFjc19jdl9kYXRhX3N0YXJ0PW5vXSldKQorICBpZiB0ZXN0ICRlbWFjc19jdl9kYXRh X3N0YXJ0ID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0RBVEFfU1RBUlRdLCAx LAorICAgICAgW0RlZmluZSB0byAxIGlmIGRhdGFfc3RhcnQgaXMgdGhlIGFkZHJlc3Mgb2Yg dGhlIHN0YXJ0CisgICAgICAgb2YgdGhlIG1haW4gZGF0YSBzZWdtZW50Ll0pCisgIGZpCiBm aQogQUNfU1VCU1QoR01BTExPQ19PQkopCiBBQ19TVUJTVChWTUxJTUlUX09CSikKQEAgLTM3 MzUsOSArMzY0MCw3IEBACiBlc2FjCiAKIAotZG5sIFVzZWQgaW4gdm0tbGltaXQuYwotQUhf VEVNUExBVEUoREFUQV9TVEFSVCwgW0FkZHJlc3Mgb2YgdGhlIHN0YXJ0IG9mIHRoZSBkYXRh IHNlZ21lbnQuXSkKLWRubCBVc2VkIGluIGxpc3AuaCwgZW1hY3MuYywgbWVtLWxpbWl0cy5o CitkbmwgVXNlZCBpbiBsaXNwLmgsIGVtYWNzLmMsIHZtLWxpbWl0LmMKIGRubCBORVdTLjE4 IGRlc2NyaWJlcyB0aGlzIGFzICJhIG51bWJlciB3aGljaCBjb250YWlucwogZG5sIHRoZSBo aWdoIGJpdHMgdG8gYmUgaW5jbHVzaXZlIG9yJ2VkIHdpdGggcG9pbnRlcnMgdGhhdCBhcmUg dW5wYWNrZWQuIgogQUhfVEVNUExBVEUoREFUQV9TRUdfQklUUywgW0V4dHJhIGJpdHMgdG8g YmUgb3InZCBpbiB3aXRoIGFueSBwb2ludGVycwpAQCAtMzc0NSwyMyArMzY0OCwxNSBAQAog ZG5sIGlmIEVtYWNzIHVzZXMgZmV3ZXIgdGhhbiAzMiBiaXRzIGZvciB0aGUgdmFsdWUgZmll bGQgb2YgYSBMSVNQX09CSkVDVC4KIAogY2FzZSAkb3BzeXMgaW4KLSAgZ251KQotICAgIGRu bCBsaWJjIGRlZmluZXMgZGF0YV9zdGFydC4KLSAgICBBQ19ERUZJTkUoREFUQV9TVEFSVCwg Wyh7IGV4dGVybiBpbnQgZGF0YV9zdGFydDsgKGNoYXIgKikgJmRhdGFfc3RhcnQ7IH0pXSkK LSAgICA7OwotCiAgIGFpeCopCiAgICAgZG5sIFRoaXMgd29ya3Mgd2l0aCAzMi1iaXQgZXhl Y3V0YWJsZXM7IEVtYWNzIGRvZXNuJ3Qgc3VwcG9ydCA2NC1iaXQuCi0gICAgQUNfREVGSU5F KERBVEFfU1RBUlQsIFsweDIwMDAwMDAwXSkKICAgICBBQ19ERUZJTkUoREFUQV9TRUdfQklU UywgWzB4MjAwMDAwMDBdKQogICAgIDs7CiAgIGhwdXgqKQogICAgIGRubCBUaGUgZGF0YSBz ZWdtZW50IG9uIHRoaXMgbWFjaGluZSBhbHdheXMgc3RhcnRzIGF0IGFkZHJlc3MgMHg0MDAw MDAwMC4KLSAgICBBQ19ERUZJTkUoREFUQV9TVEFSVCwgWzB4NDAwMDAwMDBdKQogICAgIEFD X0RFRklORShEQVRBX1NFR19CSVRTLCBbMHg0MDAwMDAwMF0pCiAgICAgOzsKICAgaXJpeDYt NSkKLSAgICBBQ19ERUZJTkUoREFUQV9TVEFSVCwgWzB4MTAwMDAwMDBdKQogICAgIEFDX0RF RklORShEQVRBX1NFR19CSVRTLCBbMHgxMDAwMDAwMF0pCiAgICAgOzsKIGVzYWMKQEAgLTQz MjEsODggKzQyMTYsNiBAQAogCiBBQ19TVUJTVChMRF9TV0lUQ0hfU1lTVEVNX1RFTUFDUykK IAotCi1MRF9GSVJTVEZMQUc9Ci1PUkRJTkFSWV9MSU5LPQotY2FzZSAiJG9wc3lzIiBpbgot ICAjIyBnbnU6IEdOVSBuZWVkcyBpdHMgb3duIGNydDAuCi0gIGFpeDQtMnxjeWd3aW58ZGFy d2lufGdudXxocHV4Knxpcml4Ni01fHNvbDIqfHVuaXh3YXJlKSBPUkRJTkFSWV9MSU5LPXll cyA7OwotCi0gICMjIE9uIHBvc3QgMS4zIHJlbGVhc2VzIG9mIE5ldEJTRCwgZ2NjIC1ub3N0 ZGxpYiBhbHNvIGNsZWFycyB0aGUKLSAgIyMgbGlicmFyeSBzZWFyY2ggcGFydGgsIGkuZS4g aXQgd29uJ3Qgc2VhcmNoIC91c3IvbGliIGZvciBsaWJjIGFuZAotICAjIyBmcmllbmRzLiAg VXNpbmcgLW5vc3RhcnRmaWxlcyBpbnN0ZWFkIGF2b2lkcyB0aGlzIHByb2JsZW0sIGFuZAot ICAjIyB3aWxsIGFsc28gd29yayBvbiBlYXJsaWVyIE5ldEJTRCByZWxlYXNlcy4KLSAgbmV0 YnNkfG9wZW5ic2QpIExEX0ZJUlNURkxBRz0iLW5vc3RhcnRmaWxlcyIgOzsKLQotICAjIyBw b3dlcnBjKjogTkFLQUpJIEhpcm95dWtpIDxuYWthamlAdHV0cnAudHV0LmFjLmpwPiBzYXlz Ci0gICMjICAgTWtMaW51eC9MaW51eFBQQyBuZWVkcyB0aGlzLgotICAjIyBzMzkweC0qIG9u bHkgc3VwcG9ydHMgb3BzeXMgPSBnbnUtbGludXggc28gaXQgY2FuIGJlIGFkZGVkIGhlcmUu Ci0gIGdudS0qKQotICAgIGNhc2UgIiRjYW5vbmljYWwiIGluCi0gICAgICBwb3dlcnBjKnxz MzkweC0qKSBMRF9GSVJTVEZMQUc9Ii1ub3N0ZGxpYiIgOzsKLSAgICBlc2FjCi0gICAgOzsK LWVzYWMKLQotCi1pZiB0ZXN0ICJ4JE9SRElOQVJZX0xJTksiID0gInh5ZXMiOyB0aGVuCi0K LSAgTERfRklSU1RGTEFHPSIiCi0gIEFDX0RFRklORShPUkRJTkFSWV9MSU5LLCAxLCBbRGVm aW5lIGlmIHRoZSBDIGNvbXBpbGVyIGlzIHRoZSBsaW5rZXIuXSkKLQotIyMgVGhlIHN5c3Rl bSBmaWxlcyBkZWZpbmluZyBuZWl0aGVyIE9SRElOQVJZX0xJTksgbm9yIExEX0ZJUlNURkxB RyBhcmU6Ci0jIyBmcmVlYnNkLCBnbnUtKiBub3Qgb24gcG93ZXJwYyp8czM5MHgqLgotZWxp ZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyIgJiYgdGVzdCAieCRMRF9GSVJTVEZMQUciID0gIngi OyB0aGVuCi0KLSAgIyMgVmVyc2lvbnMgb2YgR0NDID49IDIuMCBwdXQgdGhlaXIgbGlicmFy eSwgbGliZ2NjLmEsIGluIG9ic2N1cmUKLSAgIyMgcGxhY2VzIHRoYXQgYXJlIGRpZmZpY3Vs dCB0byBmaWd1cmUgb3V0IGF0IG1ha2UgdGltZS4gIEZvcnR1bmF0ZWx5LAotICAjIyB0aGVz ZSBzYW1lIHZlcnNpb25zIGFsbG93IHlvdSB0byBwYXNzIGFyYml0cmFyeSBmbGFncyBvbiB0 byB0aGUKLSAgIyMgbGlua2VyLCBzbyB0aGVyZSBpcyBubyByZWFzb24gbm90IHRvIHVzZSBp dCBhcyBhIGxpbmtlci4KLSAgIyMKLSAgIyMgV2VsbCwgaXQgaXMgbm90IHF1aXRlIHBlcmZl Y3QuICBUaGUgIi1ub3N0ZGxpYiIga2VlcHMgR0NDIGZyb20KLSAgIyMgc2VhcmNoaW5nIGZv ciBsaWJyYXJpZXMgaW4gaXRzIGludGVybmFsIGRpcmVjdG9yaWVzLCBzbyB3ZSBoYXZlIHRv Ci0gICMjIGFzayBHQ0MgZXhwbGljaXRseSB3aGVyZSB0byBmaW5kIGxpYmdjYy5hIChMSUJf R0NDIGJlbG93KS4KLSAgTERfRklSU1RGTEFHPSItbm9zdGRsaWIiCi1maQotCi0jIyBGSVhN RT8gV2hhdCBzZXR0aW5nIG9mIEVESVRfTERGTEFHUyBzaG91bGQgdGhpcyBoYXZlPwotdGVz dCAiJE5TX0lNUExfR05VU1RFUCIgPSAieWVzIiAmJiBMRF9GSVJTVEZMQUc9Ii1yZHluYW1p YyIKLQotQUNfU1VCU1QoTERfRklSU1RGTEFHKQotCi0KLSMjIEZJWE1FPyBUaGUgbG9naWMg aGVyZSBpcyBub3QgcHJlY2lzZWx5IHRoZSBzYW1lIGFzIHRoYXQgYWJvdmUuCi0jIyBUaGVy ZSBpcyBubyBjaGVjayBoZXJlIGZvciBhIHByZS1kZWZpbmVkIExEX0ZJUlNURkxBRy4KLSMj IFNob3VsZCB3ZSBvbmx5IGJlIHNldHRpbmcgTElCX0dDQyBpZiBMRCB+IC1ub3N0ZGxpYj8K LUxJQl9HQ0M9Ci1pZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyIgJiYgdGVzdCAieCRPUkRJTkFS WV9MSU5LIiAhPSAieHllcyI7IHRoZW4KLQotICBjYXNlICIkb3BzeXMiIGluCi0gICAgZnJl ZWJzZHxuZXRic2R8b3BlbmJzZCkgTElCX0dDQz0gOzsKLQotICAgIGdudS0qKQotICAgICAg IyMgYXJtaW43NkBnZW50b28ub3JnIHJlcG9ydGVkIHRoYXQgdGhlIGxnY2NfcyBmbGFnIGlz IG5lY2Vzc2FyeSB0bwotICAgICAgIyMgYnVpbGQgb24gQVJNIEVBQkkgdW5kZXIgR05VL0xp bnV4LiAgKEJ1ZyM1NTE4KQotICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgIGFybSop Ci0gICAgICAgIExJQl9HQ0M9Ii1sZ2NjX3MiCi0JOzsKLSAgICAgICopCi0gICAgICAgICMj IEZJWE1FPyBzL2dudS1saW51eC5oIHVzZWQgdG8gZGVmaW5lIExJQl9HQ0MgYXMgYmVsb3cs IHRoZW4KLSAgICAgICAgIyMgaW1tZWRpYXRlbHkgdW5kZWZpbmUgaXQgYWdhaW4gYW5kIHJl ZGVmaW5lIGl0IHRvIGVtcHR5LgotICAgICAgICAjIyBXYXMgdGhlIENfU1dJVENIX1hfU0lU RSBwYXJ0IHJlYWxseSBuZWNlc3Nhcnk/Ci0jIyAgICAgIExJQl9HQ0M9YCRDQyAkQ19TV0lU Q0hfWF9TSVRFIC1wcmludC1saWJnY2MtZmlsZS1uYW1lYAotICAgICAgICBMSUJfR0NDPQot CTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotCi0gICAgIyMgQXNrIEdDQyB3aGVyZSB0byBm aW5kIGxpYmdjYy5hLgotICAgICopIExJQl9HQ0M9YCRDQyAtcHJpbnQtbGliZ2NjLWZpbGUt bmFtZSAyPiAvZGV2L251bGxgIDs7Ci0gIGVzYWMKLWZpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG5sIGlmICRHQ0MKLUFDX1NVQlNUKExJQl9HQ0MpCi0KICMjIENvbW1vbiBm b3IgYWxsIHdpbmRvdyBzeXN0ZW1zCiBpZiB0ZXN0ICIkd2luZG93X3N5c3RlbSIgIT0gIm5v bmUiOyB0aGVuCiAgIEFDX0RFRklORShIQVZFX1dJTkRPV19TWVNURU0sIDEsIFtEZWZpbmUg aWYgeW91IGhhdmUgYSB3aW5kb3cgc3lzdGVtLl0pCgo9PT0gbW9kaWZpZWQgZmlsZSAnZXRj L0NoYW5nZUxvZycKLS0tIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMi0xOSAxNDo0NDowMyArMDAw MAorKysgZXRjL0NoYW5nZUxvZwkyMDEzLTAyLTIyIDA4OjIxOjU1ICswMDAwCkBAIC0xLDMg KzEsMTAgQEAKKzIwMTMtMDItMjIgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgorCisJU2ltcGxpZnkgZGF0YV9zdGFydCBjb25maWd1cmF0aW9uIChCdWcjMTM3ODMpLgor CSogUFJPQkxFTVMgKExJQlNfU1lTVEVNLCBMSUJTX01BQ0hJTkUsIExJQlNfU1RBTkRBUkQp OiBSZW1vdmUuCisJUmVtb3ZlIGxlZ2FjeS1zeXN0ZW1zIHNlY3Rpb24sIGFzIHRoaXMgc3R1 ZmYgaXMgbm8gbG9uZ2VyCisJYXBwbGljYWJsZSB3aXRoIGN1cnJlbnQgbGlua2luZyBzdHJh dGVnaWVzLgorCiAyMDEzLTAyLTE0ICBNaWNoYWVsIEFsYmludXMgIDxtaWNoYWVsLmFsYmlu dXNAZ214LmRlPgogCiAJKiBORVdTOiBUcmFtcCBtZXRob2RzICJzY3BjIiBhbmQgInJzeW5j YyIgYXJlIGRpc2NvbnRpbnVlZC4KCj09PSBtb2RpZmllZCBmaWxlICdldGMvUFJPQkxFTVMn Ci0tLSBldGMvUFJPQkxFTVMJMjAxMy0wMi0xMSAwMDozNTozNyArMDAwMAorKysgZXRjL1BS T0JMRU1TCTIwMTMtMDItMjIgMDg6MTE6MDUgKzAwMDAKQEAgLTQzMiwyMSArNDMyLDcgQEAK IGluc3RhbGxlZCBpbiB0aGUgc2hhcmVkIGxpYnJhcnksIGFuZCB0aGVuIHJlbGluayBFbWFj cy4KIAogSWYgeW91IGhhdmUgYWxyZWFkeSBpbnN0YWxsZWQgdGhlIG5hbWUgcmVzb2x2ZXIg aW4gdGhlIGZpbGUgbGlicmVzb2x2LmEsCi10aGVuIHlvdSBuZWVkIHRvIGNvbXBpbGUgRW1h Y3MgdG8gdXNlIHRoYXQgbGlicmFyeS4gIFRoZSBlYXNpZXN0IHdheSB0bwotZG8gdGhpcyBp cyB0byBhZGQgdG8gY29uZmlnLmggYSBkZWZpbml0aW9uIG9mIExJQlNfU1lTVEVNLCBMSUJT X01BQ0hJTkUKLW9yIExJQl9TVEFOREFSRCB3aGljaCB1c2VzIC1scmVzb2x2LiAgV2F0Y2gg b3V0ISAgSWYgeW91IHJlZGVmaW5lIGEgbWFjcm8KLXRoYXQgaXMgYWxyZWFkeSBpbiB1c2Ug aW4geW91ciBjb25maWd1cmF0aW9uIHRvIHN1cHBseSBzb21lIG90aGVyIGxpYnJhcmllcywK LWJlIGNhcmVmdWwgbm90IHRvIGxvc2UgdGhlIG90aGVycy4KLQotVGh1cywgeW91IGNvdWxk IHN0YXJ0IGJ5IGFkZGluZyB0aGlzIHRvIGNvbmZpZy5oOgotCi0jZGVmaW5lIExJQlNfU1lT VEVNIC1scmVzb2x2Ci0KLVRoZW4gaWYgdGhpcyBnaXZlcyB5b3UgYW4gZXJyb3IgZm9yIHJl ZGVmaW5pbmcgYSBtYWNybywgYW5kIHlvdSBzZWUgdGhhdAotY29uZmlnLmggYWxyZWFkeSBk ZWZpbmVzIExJQlNfU1lTVEVNIGFzIC1sZm9vIC1sYmFyIGF0IHNvbWUgb3RoZXIgcG9pbnQK LShwb3NzaWJseSBpbiBhbiBpbmNsdWRlZCBmaWxlKSB5b3UgY291bGQgY2hhbmdlIGl0IHRv IHNheSB0aGlzOgotCi0jZGVmaW5lIExJQlNfU1lTVEVNIC1scmVzb2x2IC1sZm9vIC1sYmFy Cit0aGVuIHlvdSBuZWVkIHRvIGNvbXBpbGUgRW1hY3MgdG8gdXNlIHRoYXQgbGlicmFyeS4K IAogKioqIEVtYWNzIGRvZXMgbm90IGtub3cgeW91ciBob3N0J3MgZnVsbHktcXVhbGlmaWVk IGRvbWFpbiBuYW1lLgogCkBAIC0zMTc5LDI1ICszMTY1LDYgQEAKIAogVGhpcyBwcm9ibGVt IHNlZW1zIHRvIGJlIGEgbWF0dGVyIG9mIGNvbmZpZ3VyaW5nIHRoZSBERUNzZXJ2ZXIgdG8g dXNlCiA3IGJpdCBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIDggYml0IGNoYXJhY3RlcnMuCi0K LSogQnVpbGQgcHJvYmxlbXMgb24gbGVnYWN5IHN5c3RlbXMKLQotKiogU3VuT1M6IEVtYWNz IGdldHMgZXJyb3IgbWVzc2FnZSBmcm9tIGxpbmtlciBvbiBTdW4uCi0KLUlmIHRoZSBlcnJv ciBtZXNzYWdlIHNheXMgdGhhdCBhIHN5bWJvbCBzdWNoIGFzIGBmNjg4ODFfdXNlZCcgb3IK LWBmZnBhX3VzZWQnIG9yIGBzdGFydF9mbG9hdCcgaXMgdW5kZWZpbmVkLCB0aGlzIHByb2Jh Ymx5IGluZGljYXRlcwotdGhhdCB5b3UgaGF2ZSBjb21waWxlZCBzb21lIGxpYnJhcmllcywg c3VjaCBhcyB0aGUgWCBsaWJyYXJpZXMsCi13aXRoIGEgZmxvYXRpbmcgcG9pbnQgb3B0aW9u IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQuCi0KLUl0J3Mgbm90IHRlcnJpYmx5IGhhcmQgdG8g bWFrZSB0aGlzIHdvcmsgd2l0aCBzbWFsbCBjaGFuZ2VzIGluCi1jcnQwLmMgdG9nZXRoZXIg d2l0aCBsaW5raW5nIHdpdGggRmNydDEubywgV2NydDEubyBvciBNY3J0MS5vLgotSG93ZXZl ciwgdGhlIGVhc2llc3QgYXBwcm9hY2ggaXMgdG8gYnVpbGQgWGxpYiB3aXRoIHRoZSBkZWZh dWx0Ci1mbG9hdGluZyBwb2ludCBvcHRpb246IC1mc29mdC4KLQotKiogSFBVWCAxMC4yMDog RW1hY3MgY3Jhc2hlcyBkdXJpbmcgZHVtcGluZyBvbiB0aGUgSFBQQSBtYWNoaW5lLgotCi1U aGlzIHNlZW1zIHRvIGJlIGR1ZSB0byBhIEdDQyBidWc7IGl0IGlzIGZpeGVkIGluIEdDQyAy LjguMS4KLQogDAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgogCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL0NoYW5nZUxvZycKLS0tIHNyYy9DaGFuZ2VMb2cJMjAxMy0wMi0y MiAxOToyMzoxMiArMDAwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEzLTAyLTIyIDIwOjEwOjU0 ICswMDAwCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTMtMDItMjIgIFBhdWwgRWdnZXJ0ICA8ZWdn ZXJ0QGNzLnVjbGEuZWR1PgogCisJU2ltcGxpZnkgZGF0YV9zdGFydCBjb25maWd1cmF0aW9u IChCdWcjMTM3ODMpLgorCVRoaXMgaXMgYSBmb2xsb3dvbiBzaW1wbGlmaWNhdGlvbiB0byB0 aGUgZml4IGZvciBCdWcjMTM2NTAuCisJKiBNYWtlZmlsZS5pbiAoTERfRklSU1RGTEFHLCBM SUJfR0NDLCBDUlRfRElSLCBMSUJfU1RBTkRBUkQpCisJKFNUQVJUX0ZJTEVTKTogUmVtb3Zl LiAgQWxsIHVzZXMgcmVtb3ZlZC4KKwkob3RoZXJvYmopOiBSZW1vdmUgJChWTUxJTUlUX09C SiksIGFzIGl0J3Mgbm93IGZpcnN0LgorCShBTExPQkpTKTogTW92ZSBoZXJlIGZyb20gYXV0 b2RlcHMubWssIGFuZCB3aXRoIFZNTElNSVRTX09CSiBmaXJzdC4KKwkoYnVpbGRvYmouaCk6 IFVzZSBpdC4KKwkoJChBTExPQkpTKSk6IERlcGVuZCBvbiBnbG9iYWxzLmguCisJKHRlbWFj cyQoRVhFRVhUKSk6IFVzZSAkKEFMTE9CSlMpLgorCSogYXV0b2RlcHMubWsgKEFMTE9CSlMp OiBNb3ZlIHRvIE1ha2VmaWxlLmluLgorCSogZGVwcy5tayAodm0tbGltaXQubyk6CisJKiBt YWtlZmlsZS53MzItaW4gKCQoQkxEKS92bS1saW1pdC4kKE8pKToKKwlEbyBub3QgZGVwZW5k IG9uIG1lbS1saW1pdHMuaC4KKwkqIGVtYWNzLmMgKF9fZG9fZ2xvYmFsX2N0b3JzLCBfX2Rv X2dsb2JhbF9jdG9yc19hdXgpCisJKF9fZG9fZ2xvYmFsX2R0b3JzLCBfX0NUT1JfTElTVF9f LCBfX0RUT1JfTElTVF9fKQorCVtfX0dOVUNfXyAmJiAhT1JESU5BUllfTElOS106IFJlbW92 ZS4KKwkqIG1lbS1saW1pdHMuaCwgcHJlLWNydDAuYzogUmVtb3ZlLgorCSogdW5leGFpeC5j LCB1bmV4Y29mZi5jOiBEb24ndCBpbmNsdWRlIG1lbS1saW1pdHMuaC4KKwkqIHVuZXhjb2Zm LmMgKGV0ZXh0KTogTmV3IGRlY2wuCisJKG1ha2VfaGRyKTogVXNlIGl0IGluc3RlYWQgb2Yg c3RhcnRfb2ZfZGF0YS4KKwkqIHZtLWxpbWl0LmM6IE1vdmUgbW9zdCBvZiBtZW0tbGltaXRz LmgncyBjb250ZW50cyBoZXJlLgorCShkYXRhX3N0YXJ0KTogTmV3IGRlY2wuICBJdCdzIE9L IGlmIHRoaXMgaXMgYXBwcm94aW1hdGUsCisJc28gc2ltcGxpZnktYXdheSBzb21lIHVubmVj ZXNzYXJ5IGV4YWN0bmVzcy4KKwkoUE9JTlRFUik6IFJlbW92ZTsgYWxsIHVzZXMgcmVtb3Zl ZC4KKwkoZGF0YV9zcGFjZV9zdGFydCk6IE5vdyBjaGFyICosIHRvIGF2b2lkIGNhc3RzLgor CShleGNlZWRzX2xpc3BfcHRyKTogTmV3IGZ1bmN0aW9uLCByZXBsYWNpbmcgdGhlIG9sZAor CUVYQ0VFRFNfTElTUF9QVFIgbWFjcm8uICBBbGwgdXNlcyBjaGFuZ2VkLgorCShjaGVja19t ZW1vcnlfbGltaXRzKTogU2ltcGxpZnkgYW5kIHJlbW92ZSBjYXN0cy4KKwkoc3RhcnRfb2Zf ZGF0YSkgWyFDQU5OT1RfRFVNUCB8fCAhU1lTVEVNX01BTExPQ106IFJlbW92ZS4KKwkobWVt b3J5X3dhcm5pbmdzKTogVXNlIGRhdGFfc3RhcnQgaW5zdGVhZCBvZiBzdGFydF9vZl9kYXRh LgorCiAJQXNzdW1lIEM4OSBvciBiZXR0ZXIuCiAJKiByYWxsb2MuYyAoU0laRSwgUE9JTlRF UiwgTklMKToKIAkqIHZtLWxpbWl0LmMgKFBPSU5URVIpOgoKPT09IG1vZGlmaWVkIGZpbGUg J3NyYy9NYWtlZmlsZS5pbicKLS0tIHNyYy9NYWtlZmlsZS5pbgkyMDEzLTAxLTAyIDE2OjEz OjA0ICswMDAwCisrKyBzcmMvTWFrZWZpbGUuaW4JMjAxMy0wMi0yMiAyMDoxMDo1NCArMDAw MApAQCAtMzYsNyArMzYsNiBAQAogQ0ZMQUdTID0gQENGTEFHU0AKIENQUEZMQUdTID0gQENQ UEZMQUdTQAogTERGTEFHUyA9IEBMREZMQUdTQAotTERfRklSU1RGTEFHPUBMRF9GSVJTVEZM QUdACiBFWEVFWFQgPSBARVhFRVhUQAogdmVyc2lvbiA9IEB2ZXJzaW9uQAogIyBTdWJzdGl0 dXRlIGFuIGFzc2lnbm1lbnQgZm9yIHRoZSBNQUtFIHZhcmlhYmxlLCBiZWNhdXNlCkBAIC0x MDIsMTAgKzEwMSw4IEBACiAjIyBTeXN0ZW0tc3BlY2lmaWMgTERGTEFHUy4KIExEX1NXSVRD SF9TWVNURU09QExEX1NXSVRDSF9TWVNURU1ACiAKLSMjIFRoaXMgaG9sZHMgYW55IHNwZWNp YWwgb3B0aW9ucyBmb3IgbGlua2luZyB0ZW1hY3Mgb25seSAoaWUsIG5vdAotIyMgdXNlZCBi eSBjb25maWd1cmUpLiAgTm90IHVzZWQgZWxzZXdoZXJlIGJlY2F1c2UgaXQgc29tZXRpbWVz Ci0jIyBjb250YWlucyBvcHRpb25zIHRoYXQgaGF2ZSB0byBkbyB3aXRoIHVzaW5nIEVtYWNz J3MgY3J0MCwKLSMjIHdoaWNoIGFyZSBvbmx5IGdvb2Qgd2l0aCB0ZW1hY3MuCisjIyBUaGlz IGhvbGRzIGFueSBzcGVjaWFsIG9wdGlvbnMgZm9yIGxpbmtpbmcgdGVtYWNzIG9ubHkgKGku ZS4sIG5vdAorIyMgdXNlZCBieSBjb25maWd1cmUpLgogTERfU1dJVENIX1NZU1RFTV9URU1B Q1M9QExEX1NXSVRDSF9TWVNURU1fVEVNQUNTQAogCiAjIyBGbGFncyB0byBwYXNzIHRvIGxk IG9ubHkgZm9yIHRlbWFjcy4KQEAgLTEyMCwxNCArMTE3LDYgQEAKICMjIFNvbWUgc3lzdGVt cyBkZWZpbmUgdGhpcyB0byByZXF1ZXN0IHNwZWNpYWwgbGlicmFyaWVzLgogTElCU19TWVNU RU09QExJQlNfU1lTVEVNQAogCi0jIyBXaGVyZSB0byBmaW5kIGxpYmdjYy5hLCBpZiB1c2lu ZyBnY2MgYW5kIG5lY2Vzc2FyeS4KLUxJQl9HQ0M9QExJQl9HQ0NACi0KLUNSVF9ESVI9QENS VF9ESVJACi0jIyBNYXkgdXNlICRDUlRfRElSLgotTElCX1NUQU5EQVJEPUBMSUJfU1RBTkRB UkRACi1TVEFSVF9GSUxFUyA9IEBTVEFSVF9GSUxFU0AKLQogIyMgLWxtLCBvciBlbXB0eS4K IExJQl9NQVRIPUBMSUJfTUFUSEAKIApAQCAtMzg5LDE3ICszNzgsMTYgQEAKIAogIyMgTGlz dCBvZiBvYmplY3QgZmlsZXMgdGhhdCBtYWtlLWRvY2ZpbGUgc2hvdWxkIG5vdCBiZSB0b2xk IGFib3V0Lgogb3RoZXJvYmo9ICQoVEVSTUNBUF9PQkopICQoUFJFX0FMTE9DX09CSikgJChH TUFMTE9DX09CSikgJChSQUxMT0NfT0JKKSBcCi0gICQoUE9TVF9BTExPQ19PQkopICQoVk1M SU1JVF9PQkopICQoV0lER0VUX09CSikgJChMSUJPQkpTKQorICAkKFBPU1RfQUxMT0NfT0JK KSAkKFdJREdFVF9PQkopICQoTElCT0JKUykKIAorIyMgQWxsIG9iamVjdCBmaWxlcyBsaW5r ZWQgaW50byB0ZW1hY3MuICAkKFZNTElNSVRfT0JKKSBzaG91bGQgYmUgZmlyc3QuCitBTExP QkpTID0gJChWTUxJTUlUX09CSikgJChvYmopICQob3RoZXJvYmopCiAKICMjIENvbmZpZ3Vy ZSBpbnNlcnRzIHRoZSBmaWxlIGxpc3AubWsgYXQgdGhpcyBwb2ludCwgZGVmaW5pbmcgJGxp c3AuCiBAbGlzcF9mcmFnQAogCiAKICMjIENvbnN0cnVjdCBmdWxsIHNldCBvZiBsaWJyYXJp ZXMgdG8gYmUgbGlua2VkLgotIyMgTm90ZSB0aGF0IFN1bk9TIG5lZWRzIC1sbSB0byBjb21l IGJlZm9yZSAtbGM7IG90aGVyd2lzZSwgeW91IGdldAotIyMgZHVwbGljYXRlZCBzeW1ib2xz LiAgSWYgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyB3ZXJlIGNvbXBpbGVkCi0jIyB3aXRoIEdD Qywgd2UgbWlnaHQgbmVlZCBMSUJfR0NDIGFnYWluIGFmdGVyIHRoZW0uCiBMSUJFUyA9ICQo TElCUykgJChXMzJfTElCUykgJChMSUJTX0dOVVNURVApICQoTElCWF9CQVNFKSAkKExJQklN QUdFKSBcCiAgICAkKExJQlhfT1RIRVIpICQoTElCU09VTkQpIFwKICAgICQoUlNWR19MSUJT KSAkKElNQUdFTUFHSUNLX0xJQlMpICQoTElCX0NMT0NLX0dFVFRJTUUpIFwKQEAgLTQwOSw3 ICszOTcsNyBAQAogICAgJChMSUJTX1RFUk1DQVApICQoR0VUTE9BREFWR19MSUJTKSAkKFNF VFRJTkdTX0xJQlMpICQoTElCU0VMSU5VWF9MSUJTKSBcCiAgICAkKEZSRUVUWVBFX0xJQlMp ICQoRk9OVENPTkZJR19MSUJTKSAkKExJQk9URl9MSUJTKSAkKE0xN05fRkxUX0xJQlMpIFwK ICAgICQoTElCQUNMX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCX1BUSFJFQUQpICQo TElCX1BUSFJFQURfU0lHTUFTSykgXAotICAgJChMSUJfR0NDKSAkKExJQl9NQVRIKSAkKExJ Ql9TVEFOREFSRCkgJChMSUJfR0NDKQorICAgJChMSUJfTUFUSCkKIAogYWxsOiBlbWFjcyQo RVhFRVhUKSAkKE9USEVSX0ZJTEVTKQogLlBIT05ZOiBhbGwKQEAgLTQ1Niw3ICs0NDQsNyBA QAogCWNkICQobGlic3JjKTsgJChNQUtFKSAkKE1GTEFHUykgbWFrZS1kb2NmaWxlJChFWEVF WFQpCiAKIGJ1aWxkb2JqLmg6IE1ha2VmaWxlCi0JZWNobyAiI2RlZmluZSBCVUlMRE9CSiBc IiQob2JqKSAkKG90aGVyb2JqKSAiICJcIiIgPiBidWlsZG9iai5oCisJZWNobyAiI2RlZmlu ZSBCVUlMRE9CSiBcIiQoQUxMT0JKUykgIiAiXCIiID4kQAogCiBnbG9iYWxzLmg6IGdsLXN0 YW1wOyBAdHJ1ZQogCkBAIC00NjgsMTUgKzQ1NiwxNSBAQAogCSQoc3JjZGlyKS8uLi9idWls ZC1hdXgvbW92ZS1pZi1jaGFuZ2UgZ2wtdG1wIGdsb2JhbHMuaAogCWVjaG8gdGltZXN0YW1w ID4gJEAKIAotJChvYmopICQob3RoZXJvYmopOiBnbG9iYWxzLmgKKyQoQUxMT0JKUyk6IGds b2JhbHMuaAogCiAkKGxpYikvbGliZ251LmE6ICQoY29uZmlnX2gpCiAJY2QgJChsaWIpICYm ICQoTUFLRSkgbGliZ251LmEKIAotdGVtYWNzJChFWEVFWFQpOiAkKFNUQVJUX0ZJTEVTKSBz dGFtcC1vbGR4bWVudSAkKG9iaikgJChvdGhlcm9iaikgXAordGVtYWNzJChFWEVFWFQpOiBz dGFtcC1vbGR4bWVudSAkKEFMTE9CSlMpIFwKIAkgICAgICAgICAkKGxpYikvbGliZ251LmEg JChXMzJfUkVTKQotCSQoQ0MpICQoTERfRklSU1RGTEFHKSAkKEFMTF9DRkxBR1MpICQoVEVN QUNTX0xERkxBR1MpICQoTERGTEFHUykgXAotCSAgLW8gdGVtYWNzICQoU1RBUlRfRklMRVMp ICQob2JqKSAkKG90aGVyb2JqKSAkKGxpYikvbGliZ251LmEgJChMSUJFUykgXAorCSQoQ0Mp ICQoQUxMX0NGTEFHUykgJChURU1BQ1NfTERGTEFHUykgJChMREZMQUdTKSBcCisJICAtbyB0 ZW1hY3MgJChBTExPQkpTKSAkKGxpYikvbGliZ251LmEgJChMSUJFUykgXAogCSAgJChXMzJf UkVTX0xJTkspCiAJdGVzdCAiJChDQU5OT1RfRFVNUCkiID0gInllcyIgfHwgXAogCSAgdGVz dCAiWCQoUEFYQ1RMKSIgPSBYIHx8ICQoUEFYQ1RMKSAtciB0ZW1hY3MkKEVYRUVYVCkKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvYXV0b2RlcHMubWsnCi0tLSBzcmMvYXV0b2RlcHMubWsJ MjAxMC0wNy0wOCAwMzozMTowNCArMDAwMAorKysgc3JjL2F1dG9kZXBzLm1rCTIwMTMtMDIt MjIgMjA6MTA6NTQgKzAwMDAKQEAgLTIsNSArMiw0IEBACiAKICMjIFRoaXMgaXMgaW5zZXJ0 ZWQgaW4gc3JjL01ha2VmaWxlIGlmIEFVVE9fREVQRU5EPXllcy4KIAotQUxMT0JKUz0kKFNU QVJUX0ZJTEVTKSAke29ian0gJHtvdGhlcm9ian0KIC1pbmNsdWRlICQoQUxMT0JKUzolLm89 JHtERVBESVJ9LyUuZCkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZGVwcy5taycKLS0tIHNy Yy9kZXBzLm1rCTIwMTMtMDEtMDIgMTY6MTM6MDQgKzAwMDAKKysrIHNyYy9kZXBzLm1rCTIw MTMtMDItMjIgMDg6MTE6MDUgKzAwMDAKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAgZGlzcGV4 dGVybi5oIGxpc3AuaCBnbG9iYWxzLmggJChjb25maWdfaCkgc3lzdGltZS5oIGNvZGluZy5o IGNvbXBvc2l0ZS5oCiBnbWFsbG9jLm86IGdtYWxsb2MuYyAkKGNvbmZpZ19oKQogcmFsbG9j Lm86IHJhbGxvYy5jIGxpc3AuaCAkKGNvbmZpZ19oKQotdm0tbGltaXQubzogdm0tbGltaXQu YyBtZW0tbGltaXRzLmggbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKQordm0tbGltaXQu bzogdm0tbGltaXQuYyBsaXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gpCiBtYXJrZXIubzog bWFya2VyLmMgYnVmZmVyLmggY2hhcmFjdGVyLmggbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZp Z19oKQogbWluaWJ1Zi5vOiBtaW5pYnVmLmMgc3ludGF4LmggZnJhbWUuaCB3aW5kb3cuaCBr ZXlib2FyZC5oIHN5c3RpbWUuaCBcCiAgICBidWZmZXIuaCBjb21tYW5kcy5oIGNoYXJhY3Rl ci5oIG1zZG9zLmggJChJTlRFUlZBTFNfSCkga2V5bWFwLmggXAoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9lbWFjcy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxMy0wMi0wNyAwNjoyMzo1NCAr MDAwMAorKysgc3JjL2VtYWNzLmMJMjAxMy0wMi0yMiAwODoxMTowNSArMDAwMApAQCAtNTIx LDMyICs1MjEsNiBAQAogc3RhdGljIGNoYXIgY29uc3QgZHVtcF90eltdID0gIlV0QzAiOwog I2VuZGlmCiAKLSNpZm5kZWYgT1JESU5BUllfTElOSwotLyogV2UgZG9uJ3QgaW5jbHVkZSBj cnRiZWdpbi5vIGFuZCBjcnRlbmQubyBpbiB0aGUgbGluaywKLSAgIHNvIHRoZXNlIGZ1bmN0 aW9ucyBhbmQgdmFyaWFibGVzIG1pZ2h0IGJlIG1pc3NlZC4KLSAgIFByb3ZpZGUgZHVtbXkg ZGVmaW5pdGlvbnMgdG8gYXZvaWQgZXJyb3IuCi0gICAoV2UgZG9uJ3QgaGF2ZSBhbnkgcmVh bCBjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuKSAgKi8KLSNpZmRlZiBfX0dOVUNfXwot Ci0vKiBEZWZpbmUgYSBkdW1teSBmdW5jdGlvbiBGLiAgRGVjbGFyZSBGIHRvbywgdG8gcGFj aWZ5IGdjYwotICAgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotI2RlZmluZSBERUZJTkVf RFVNTVlfRlVOQ1RJT04oZikgXAotICB2b2lkIGYgKHZvaWQpIEFUVFJJQlVURV9DT05TVCBF WFRFUk5BTExZX1ZJU0lCTEU7IHZvaWQgZiAodm9pZCkge30KLQotI2lmbmRlZiBHQ0NfQ1RP UlNfSU5fTElCQwotREVGSU5FX0RVTU1ZX0ZVTkNUSU9OIChfX2RvX2dsb2JhbF9jdG9ycykK LURFRklORV9EVU1NWV9GVU5DVElPTiAoX19kb19nbG9iYWxfY3RvcnNfYXV4KQotREVGSU5F X0RVTU1ZX0ZVTkNUSU9OIChfX2RvX2dsb2JhbF9kdG9ycykKLS8qIEdOVS9MaW51eCBoYXMg YSBidWcgaW4gaXRzIGxpYnJhcnk7IGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZm5kZWYgR05V X0xJTlVYCi1jaGFyICogX19DVE9SX0xJU1RfX1syXSBFWFRFUk5BTExZX1ZJU0lCTEUgPSB7 IChjaGFyICopICgtMSksIDAgfTsKLSNlbmRpZgotY2hhciAqIF9fRFRPUl9MSVNUX19bMl0g RVhURVJOQUxMWV9WSVNJQkxFID0geyAoY2hhciAqKSAoLTEpLCAwIH07Ci0jZW5kaWYgLyog R0NDX0NUT1JTX0lOX0xJQkMgKi8KLURFRklORV9EVU1NWV9GVU5DVElPTiAoX19tYWluKQot I2VuZGlmIC8qIF9fR05VQ19fICovCi0jZW5kaWYgLyogT1JESU5BUllfTElOSyAqLwotCiAv KiBUZXN0IHdoZXRoZXIgdGhlIG5leHQgYXJndW1lbnQgaW4gQVJHViBtYXRjaGVzIFNTVFIg b3IgYSBwcmVmaXggb2YKICAgIExTVFIgKGF0IGxlYXN0IE1JTkxFTiBjaGFyYWN0ZXJzKS4g IElmIHNvLCB0aGVuIGlmIFZBTFBUUiBpcyBub24tbnVsbAogICAgKHRoZSBhcmd1bWVudCBp cyBzdXBwb3NlZCB0byBoYXZlIGEgdmFsdWUpIHN0b3JlIGluICpWQUxQVFIgZWl0aGVyCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL21ha2VmaWxlLnczMi1pbicKLS0tIHNyYy9tYWtlZmls ZS53MzItaW4JMjAxMy0wMi0xMyAwMDo1MDozOCArMDAwMAorKysgc3JjL21ha2VmaWxlLncz Mi1pbgkyMDEzLTAyLTIyIDA4OjExOjA1ICswMDAwCkBAIC0xNDkyLDcgKzE0OTIsNiBAQAog CiAkKEJMRCkvdm0tbGltaXQuJChPKSA6IFwKIAkkKFNSQykvdm0tbGltaXQuYyBcCi0JJChT UkMpL21lbS1saW1pdHMuaCBcCiAJJChTUkMpL3czMmhlYXAuaCBcCiAJJChOVF9JTkMpL3Vu aXN0ZC5oIFwKIAkkKENPTkZJR19IKSBcCgo9PT0gcmVtb3ZlZCBmaWxlICdzcmMvbWVtLWxp bWl0cy5oJwotLS0gc3JjL21lbS1saW1pdHMuaAkyMDEzLTAxLTAxIDA5OjExOjA1ICswMDAw CisrKyBzcmMvbWVtLWxpbWl0cy5oCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKQEAgLTEs NDMgKzAsMCBAQAotLyogSW5jbHVkZXMgZm9yIG1lbW9yeSBsaW1pdCB3YXJuaW5ncy4KLSAg IENvcHlyaWdodCAoQykgMTk5MCwgMTk5My0xOTk2LCAyMDAxLTIwMTMgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLAotICAgSW5jLgotCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1h Y3MuCi0KLUdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLShhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLUdOVSBFbWFjcyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLU1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K LVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi1hbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0KLSNpZmRlZiBNU0RPUwotI2luY2x1 ZGUgPGRwbWkuaD4KLWV4dGVybiBpbnQgZXRleHQ7Ci0jZW5kaWYKLQotLyogU29tZSBzeXN0 ZW1zIG5lZWQgdGhpcyBiZWZvcmUgPHN5cy9yZXNvdXJjZS5oPi4gICovCi0jaW5jbHVkZSA8 c3lzL3R5cGVzLmg+Ci0KLSNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICi0jIGluY2x1ZGUg PHN5cy90aW1lLmg+Ci0jIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2Vsc2UKLSMgaWYg SEFWRV9TWVNfVkxJTUlUX0gKLSMgIGluY2x1ZGUgPHN5cy92bGltaXQuaD4JLyogT2Jzb2xl dGUsIHNheXMgZ2xpYmMgKi8KLSMgZW5kaWYKLSNlbmRpZgotCi1leHRlcm4gY2hhciAqc3Rh cnRfb2ZfZGF0YSAodm9pZCkgQVRUUklCVVRFX0NPTlNUOwotI2lmIFVTRV9MU0JfVEFHIHx8 IFVJTlRQVFJfTUFYIDw9IFZBTF9NQVgKLSNkZWZpbmUgRVhDRUVEU19MSVNQX1BUUihwdHIp IDAKLSNlbHNlCi0jZGVmaW5lIEVYQ0VFRFNfTElTUF9QVFIocHRyKSBcCi0gICgoKHVpbnRw dHJfdCkgKHB0cikgJiB+REFUQV9TRUdfQklUUykgPj4gVkFMQklUUykKLSNlbmRpZgoKPT09 IHJlbW92ZWQgZmlsZSAnc3JjL3ByZS1jcnQwLmMnCi0tLSBzcmMvcHJlLWNydDAuYwkyMDEz LTAyLTEyIDE4OjMzOjQyICswMDAwCisrKyBzcmMvcHJlLWNydDAuYwkxOTcwLTAxLTAxIDAw OjAwOjAwICswMDAwCkBAIC0xLDEwICswLDAgQEAKLS8qIFRoaXMgZmlsZSBpcyBsb2FkZWQg YmVmb3JlIGNydDAubyBvbiBtYWNoaW5lcyB3aGVyZSB3ZSBkbyBub3QKLSAgIHJlbWFwIHBh cnQgb2YgdGhlIGRhdGEgc3BhY2UgaW50byB0ZXh0IHNwYWNlIGluIHVuZXhlYy4KLSAgIE9u IHRoZXNlIG1hY2hpbmVzLCB0aGVyZSBpcyBubyBwcm9ibGVtIHdpdGggc3RhbmRhcmQgY3J0 MC5vJ3MKLSAgIHRoYXQgbWFrZSBlbnZpcm9uIGFuIGluaXRpYWxpemVkIHZhcmlhYmxlLiAg SG93ZXZlciwgd2UgZG8KLSAgIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBsYWJlbCBkYXRhX3N0 YXJ0IGV4aXN0cyBhbnl3YXkuICAqLwotCi0vKiBDcmVhdGUgYSBsYWJlbCB0byBhcHBlYXIg YXQgdGhlIGJlZ2lubmluZyBvZiBkYXRhIHNwYWNlLgotICAgSXRzIHZhbHVlIGlzIG5vbnpl cm8gc28gdGhhdCBpdCBjYW5ub3QgYmUgcHV0IGludG8gYnNzLiAgKi8KLQotaW50IGRhdGFf c3RhcnQgPSAxOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy91bmV4YWl4LmMnCi0tLSBzcmMv dW5leGFpeC5jCTIwMTMtMDItMTUgMDY6MzU6NTQgKzAwMDAKKysrIHNyYy91bmV4YWl4LmMJ MjAxMy0wMi0yMiAwODoxMTowNSArMDAwMApAQCAtNTksOCArNTksNiBAQAogI2luY2x1ZGUg PHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAKLSNpbmNsdWRlICJtZW0tbGltaXRz LmgiCi0KIGV4dGVybiBjaGFyIF9kYXRhW107CiBleHRlcm4gY2hhciBfdGV4dFtdOwogCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZXhjb2ZmLmMnCi0tLSBzcmMvdW5leGNvZmYuYwky MDEzLTAxLTAyIDE2OjEzOjA0ICswMDAwCisrKyBzcmMvdW5leGNvZmYuYwkyMDEzLTAyLTIy IDE5OjQzOjE3ICswMDAwCkBAIC05OSw3ICs5OSw3IEBACiAKICNpbmNsdWRlIDxzeXMvZmls ZS5oPgogCi0jaW5jbHVkZSAibWVtLWxpbWl0cy5oIgorZXh0ZXJuIGludCBldGV4dFtdOwog CiBzdGF0aWMgbG9uZyBibG9ja19jb3B5X3N0YXJ0OwkJLyogT2xkIGV4ZWN1dGFibGUgc3Rh cnQgcG9pbnQgKi8KIHN0YXRpYyBzdHJ1Y3QgZmlsZWhkciBmX2hkcjsJCS8qIEZpbGUgaGVh ZGVyICovCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgcGFnZW1hc2sgPSBnZXRwYWdlc2l6ZSAo KSAtIDE7CiAKICAgLyogQWRqdXN0IHRleHQvZGF0YSBib3VuZGFyeS4gKi8KLSAgZGF0YV9z dGFydCA9IChpbnQpIHN0YXJ0X29mX2RhdGEgKCk7CisgIGRhdGFfc3RhcnQgPSAoaW50KSAo ZXRleHQgKyAxKTsKICAgZGF0YV9zdGFydCA9IEFERFJfQ09SUkVDVCAoZGF0YV9zdGFydCk7 CiAgIGRhdGFfc3RhcnQgPSBkYXRhX3N0YXJ0ICYgfnBhZ2VtYXNrOyAvKiAoRG93bikgdG8g cGFnZSBib3VuZGFyeS4gKi8KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy92bS1saW1pdC5j JwotLS0gc3JjL3ZtLWxpbWl0LmMJMjAxMy0wMi0yMiAxOToyMzoxMiArMDAwMAorKysgc3Jj L3ZtLWxpbWl0LmMJMjAxMy0wMi0yMiAxOToyNjowNyArMDAwMApAQCAtMTksNyArMTksMzIg QEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4gLyogZm9yICdl bnZpcm9uJywgb24gQUlYICovCiAjaW5jbHVkZSAibGlzcC5oIgotI2luY2x1ZGUgIm1lbS1s aW1pdHMuaCIKKworI2lmZGVmIE1TRE9TCisjaW5jbHVkZSA8ZHBtaS5oPgorI2VuZGlmCisK Ky8qIFNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgYmVmb3JlIDxzeXMvcmVzb3VyY2UuaD4uICAq LworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0Vf SAorIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4K KyNlbHNlCisjIGlmIEhBVkVfU1lTX1ZMSU1JVF9ICisjICBpbmNsdWRlIDxzeXMvdmxpbWl0 Lmg+CS8qIE9ic29sZXRlLCBzYXlzIGdsaWJjICovCisjIGVuZGlmCisjZW5kaWYKKworLyog U3RhcnQgb2YgZGF0YS4gIEl0IGlzIE9LIGlmIHRoaXMgaXMgYXBwcm94aW1hdGU7IGl0J3Mg dXNlZCBvbmx5IGFzCisgICBhIGhldXJpc3RpYy4gICovCitleHRlcm4gY2hhciBkYXRhX3N0 YXJ0W107CisjaWZuZGVmIEhBVkVfREFUQV9TVEFSVAorLyogSW5pdGlhbGl6ZSB0byBub256 ZXJvLCBzbyB0aGF0IGl0J3MgcHV0IGludG8gZGF0YSBhbmQgbm90IGJzcy4KKyAgIExpbmsg dGhpcyBmaWxlJ3Mgb2JqZWN0IGNvZGUgZmlyc3QsIHNvIHRoYXQgdGhpcyBzeW1ib2wgaXMg bmVhciB0aGUKKyAgIHN0YXJ0IG9mIGRhdGEuICAqLworY2hhciBkYXRhX3N0YXJ0WzFdID0g eyAxIH07CisjZW5kaWYKIAogLyoKICAgTGV2ZWwgbnVtYmVyIG9mIHdhcm5pbmdzIGFscmVh ZHkgaXNzdWVkLgpAQCAtMzUsMTIgKzYwLDIwIEBACiAgICAwIG1lYW5zIGRvbid0IGlzc3Vl IHRoZW0uICAqLwogc3RhdGljIHZvaWQgKCp3YXJuX2Z1bmN0aW9uKSAoY29uc3QgY2hhciAq KTsKIAotLyogU3RhcnQgb2YgZGF0YSBzcGFjZTsgY2FuIGJlIGNoYW5nZWQgYnkgY2FsbGlu ZyBtYWxsb2NfaW5pdC4gICovCi1zdGF0aWMgdm9pZCAqZGF0YV9zcGFjZV9zdGFydDsKKy8q IFN0YXJ0IG9mIGRhdGEgc3BhY2U7IGNhbiBiZSBjaGFuZ2VkIGJ5IGNhbGxpbmcgbWVtb3J5 X3dhcm5pbmdzLiAgKi8KK3N0YXRpYyBjaGFyICpkYXRhX3NwYWNlX3N0YXJ0OwogCiAvKiBO dW1iZXIgb2YgYnl0ZXMgb2Ygd3JpdGFibGUgbWVtb3J5IHdlIGNhbiBleHBlY3QgdG8gYmUg YWJsZSB0byBnZXQuICAqLwogc3RhdGljIHNpemVfdCBsaW1fZGF0YTsKIAwKKy8qIFJldHVy biB0cnVlIGlmIFBUUiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYW4gRW1hY3MgTGlzcCBv YmplY3QuICAqLworc3RhdGljIGJvb2wKK2V4Y2VlZHNfbGlzcF9wdHIgKHZvaWQgKnB0cikK K3sKKyAgcmV0dXJuICghIFVTRV9MU0JfVEFHCisJICAmJiBWQUxfTUFYIDwgVUlOVFBUUl9N QVgKKwkgICYmICgodWludHB0cl90KSBwdHIgJiB+REFUQV9TRUdfQklUUykgPj4gVkFMQklU UyAhPSAwKTsKK30KIAogI2lmZGVmIEhBVkVfR0VUUkxJTUlUCiAKQEAgLTEyMiwxMCArMTU1 LDEyIEBACiB7CiAjaWZkZWYgUkVMX0FMTE9DCiAgIGV4dGVybiB2b2lkICooKnJlYWxfbW9y ZWNvcmUpIChwdHJkaWZmX3QpOworI2Vsc2UKKyAgdm9pZCAqKCpyZWFsX21vcmVjb3JlKSAo cHRyZGlmZl90KSA9IDA7CiAjZW5kaWYKICAgZXh0ZXJuIHZvaWQgKigqX19tb3JlY29yZSkg KHB0cmRpZmZfdCk7CiAKLSAgdm9pZCAqY3A7CisgIGNoYXIgKmNwOwogICBzaXplX3QgZml2 ZV9wZXJjZW50OwogICBzaXplX3QgZGF0YV9zaXplOwogICBlbnVtIHdhcm5sZXZlbCBuZXdf d2FybmxldmVsOwpAQCAtMTM1LDEzICsxNzAsOCBAQAogICBmaXZlX3BlcmNlbnQgPSBsaW1f ZGF0YSAvIDIwOwogCiAgIC8qIEZpbmQgY3VycmVudCBlbmQgb2YgbWVtb3J5IGFuZCBpc3N1 ZSB3YXJuaW5nIGlmIGdldHRpbmcgbmVhciBtYXggKi8KLSNpZmRlZiBSRUxfQUxMT0MKLSAg aWYgKHJlYWxfbW9yZWNvcmUpCi0gICAgY3AgPSAoY2hhciAqKSAoKnJlYWxfbW9yZWNvcmUp ICgwKTsKLSAgZWxzZQotI2VuZGlmCi0gIGNwID0gKGNoYXIgKikgKCpfX21vcmVjb3JlKSAo MCk7Ci0gIGRhdGFfc2l6ZSA9IChjaGFyICopIGNwIC0gKGNoYXIgKikgZGF0YV9zcGFjZV9z dGFydDsKKyAgY3AgPSAocmVhbF9tb3JlY29yZSA/IHJlYWxfbW9yZWNvcmUgOiBfX21vcmVj b3JlKSAoMCk7CisgIGRhdGFfc2l6ZSA9IGNwIC0gZGF0YV9zcGFjZV9zdGFydDsKIAogICBp ZiAoIXdhcm5fZnVuY3Rpb24pCiAgICAgcmV0dXJuOwpAQCAtMTg4LDQ5ICsyMTgsMTAgQEAK IAl3YXJubGV2ZWwgPSB3YXJuZWRfODU7CiAgICAgfQogCi0gIGlmIChFWENFRURTX0xJU1Bf UFRSIChjcCkpCisgIGlmIChleGNlZWRzX2xpc3BfcHRyIChjcCkpCiAgICAgKCp3YXJuX2Z1 bmN0aW9uKSAoIldhcm5pbmc6IG1lbW9yeSBpbiB1c2UgZXhjZWVkcyBsaXNwIHBvaW50ZXIg c2l6ZSIpOwogfQogDAotI2lmICFkZWZpbmVkIChDQU5OT1RfRFVNUCkgfHwgIWRlZmluZWQg KFNZU1RFTV9NQUxMT0MpCi0vKiBTb21lIHN5c3RlbXMgdGhhdCBjYW5ub3QgZHVtcCBhbHNv IGNhbm5vdCBpbXBsZW1lbnQgdGhlc2UuICAqLwotCi0vKgotICoJUmV0dXJuIHRoZSBhZGRy ZXNzIG9mIHRoZSBzdGFydCBvZiB0aGUgZGF0YSBzZWdtZW50IHByaW9yIHRvCi0gKglkb2lu ZyBhbiB1bmV4ZWMuICBBZnRlciB1bmV4ZWMgdGhlIHJldHVybiB2YWx1ZSBpcyB1bmRlZmlu ZWQuCi0gKglTZWUgY3J0MC5jIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGFuZCBkZWZpbml0 aW9uIG9mIGRhdGFfc3RhcnQuCi0gKgotICoJQXBwYXJlbnRseSwgb24gQlNEIHN5c3RlbXMg dGhpcyBpcyBldGV4dCBhdCBzdGFydHVwLiAgT24KLSAqCVVTRyBzeXN0ZW1zIChzd2FwcGlu ZykgdGhpcyBpcyBoaWdobHkgbW11IGRlcGVuZGVudCBhbmQKLSAqCWlzIGFsc28gZGVwZW5k ZW50IG9uIHdoZXRoZXIgb3Igbm90IHRoZSBwcm9ncmFtIGlzIHJ1bm5pbmcKLSAqCXdpdGgg c2hhcmVkIHRleHQuICBHZW5lcmFsbHkgdGhlcmUgaXMgYSAocG9zc2libHkgbGFyZ2UpCi0g KglnYXAgYmV0d2VlbiBlbmQgb2YgdGV4dCBhbmQgc3RhcnQgb2YgZGF0YSB3aXRoIHNoYXJl ZCB0ZXh0LgotICoKLSAqLwotCi1jaGFyICoKLXN0YXJ0X29mX2RhdGEgKHZvaWQpCi17Ci0j aWZkZWYgQlNEX1NZU1RFTQotICBleHRlcm4gY2hhciBldGV4dDsKLSAgcmV0dXJuICh2b2lk ICopICZldGV4dDsKLSNlbGlmIGRlZmluZWQgREFUQV9TVEFSVAotICByZXR1cm4gKHZvaWQg KikgREFUQV9TVEFSVDsKLSNlbGlmIGRlZmluZWQgT1JESU5BUllfTElOSwotICAvKgotICAg KiBUaGlzIGlzIGEgaGFjay4gIFNpbmNlIHdlJ3JlIG5vdCBsaW5raW5nIGNydDAuYyBvciBw cmVfY3J0MC5jLAotICAgKiBkYXRhX3N0YXJ0IGlzbid0IGRlZmluZWQuICBXZSB0YWtlIHRo ZSBhZGRyZXNzIG9mIGVudmlyb24sIHdoaWNoCi0gICAqIGlzIGtub3duIHRvIGxpdmUgYXQg b3IgbmVhciB0aGUgc3RhcnQgb2YgdGhlIHN5c3RlbSBjcnQwLmMsIGFuZAotICAgKiB3ZSBk b24ndCBzd2VhdCB0aGUgaGFuZGZ1bCBvZiBieXRlcyB0aGF0IG1pZ2h0IGxvc2UuCi0gICAq LwotICByZXR1cm4gKHZvaWQgKikgJmVudmlyb247Ci0jZWxzZQotICBleHRlcm4gaW50IGRh dGFfc3RhcnQ7Ci0gIHJldHVybiAodm9pZCAqKSAmZGF0YV9zdGFydDsKLSNlbmRpZgotfQot I2VuZGlmIC8qIChub3QgQ0FOTk9UX0RVTVAgb3Igbm90IFNZU1RFTV9NQUxMT0MpICovCi0M CiAvKiBFbmFibGUgbWVtb3J5IHVzYWdlIHdhcm5pbmdzLgogICAgU1RBUlQgc2F5cyB3aGVy ZSB0aGUgZW5kIG9mIHB1cmUgc3RvcmFnZSBpcy4KICAgIFdBUk5GVU4gc3BlY2lmaWVzIHRo ZSBmdW5jdGlvbiB0byBjYWxsIHRvIGlzc3VlIGEgd2FybmluZy4gICovCkBAIC0yNDAsMTAg KzIzMSw3IEBACiB7CiAgIGV4dGVybiB2b2lkICgqIF9fYWZ0ZXJfbW9yZWNvcmVfaG9vaykg KHZvaWQpOyAgICAgLyogRnJvbSBnbWFsbG9jLmMgKi8KIAotICBpZiAoc3RhcnQpCi0gICAg ZGF0YV9zcGFjZV9zdGFydCA9IHN0YXJ0OwotICBlbHNlCi0gICAgZGF0YV9zcGFjZV9zdGFy dCA9IHN0YXJ0X29mX2RhdGEgKCk7CisgIGRhdGFfc3BhY2Vfc3RhcnQgPSBzdGFydCA/IHN0 YXJ0IDogZGF0YV9zdGFydDsKIAogICB3YXJuX2Z1bmN0aW9uID0gd2FybmZ1bjsKICAgX19h ZnRlcl9tb3JlY29yZV9ob29rID0gY2hlY2tfbWVtb3J5X2xpbWl0czsKCg== --------------090206080805070001010102--