Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2YmX-000Om6-1R for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 18:04:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2YmV-0040eN-0s for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 18:04:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2YmU-0040eF-1p for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 18:04:38 +0000 Received: from fhigh-b8-smtp.messagingengine.com ([202.12.124.159]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w2YmQ-00000000eBa-1Zu9 for pgsql-hackers@postgresql.org; Tue, 17 Mar 2026 18:04:38 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.stl.internal (Postfix) with ESMTP id 5FF667A00CD; Tue, 17 Mar 2026 14:04:32 -0400 (EDT) Received: from phl-imap-14 ([10.202.2.87]) by phl-compute-02.internal (MEProxy); Tue, 17 Mar 2026 14:04:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1773770672; x=1773857072; bh=xRl/okwIoG /PWJs7psyBupNKt7Rdaum1bik/0dxQAR8=; b=QF5xARV1wXegE8ARZBBnC1pii4 0KKaTIaD1pwyluw50YHPeh7EfKRoQ8Nduobg3TtaxyYH3RSHKpIiWror3hzSOfUK FhsN3F6MdPETKMdESz69Nkd3gryO574VsOpFN7WgRhtqiV+bNdvTXvXQQy8Xr7l9 2bysCmv6V8cBML88ouNtSMHHReOarvZTKeENoh2HhuChgldiUKL6sr2Ctc2KNHur MA5fYvzYvrRkauaBhQRH8NXOS9elf198azDAGWou1fUB8L2vtntRs4PVfrZN9SKW GZETThHaQGbj4jmHpUtO70o/OGNKpKNxqL1+OMpjPNVwoxcXbVlFlBgfVYRA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1773770672; x=1773857072; bh=xRl/okwIoG/PWJs7psyBupNKt7Rdaum1bik /0dxQAR8=; b=lQn7omfvxa37UTgRj/opZ+FiYO9sru6QBNcvdAq8wjl8jtUezLN gp75nVTR8y6RizoEcTTze4yYej0iCxXMIJaPrJMYkZIt2pZpQR6g4HVU6DBBKZx3 wMiO89I2e9RjFsRwDEIAurkVtKbd2qLOgzn5gYjHIfFCmRtZ5ot9VEPOYy8jH7Ks BFlyYsrzqospuzCGfhvyb/dKG/Bx6Ia8EdETSkvEE/bL2u4G34dKXeaFnAVX7CVf KFpwgLca7ZMMNSDT3RBZce4dLTYYEFB9EfYTwqHYypXl9OequY0kMjXngvjQtNm+ IW+wMLnrvaDtMnNlgRV6Fu1YKKw3XZeYI8w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdduledvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepofggfffhvfevkfgjfhfutgesmhdtreerredtjeenucfhrhhomhepfdfirhgvghcu uehurhgufdcuoehgrhgvghessghurhgurdhmvgeqnecuggftrfgrthhtvghrnhepfedvie fgfeevffelfeegieekueelffeikedvleehtdevvdeluddtieefjefgjeejnecuvehluhhs thgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepghhrvghgsegsuhhrug drmhgvpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuthdprhgtphhtthho pehnrghthhgrnhgusghoshhsrghrthesghhmrghilhdrtghomhdprhgtphhtthhopehpgh hsqhhlsehjqdgurghvihhsrdgtohhmpdhrtghpthhtohepphhgshhqlhdqhhgrtghkvghr shesphhoshhtghhrvghsqhhlrdhorhhg X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id C8D2DC40075; Tue, 17 Mar 2026 14:04:31 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 Date: Tue, 17 Mar 2026 14:04:11 -0400 From: "Greg Burd" To: "Jeff Davis" , "Nathan Bossart" Cc: pgsql-hackers Message-Id: In-Reply-To: <887b1ee62794553a95c3578fcdc0cc1831e68b27.camel@j-davis.com> References: <9bb9bdd6-e1fe-48fe-837d-4d0289396f1c@app.fastmail.com> <872b875c-0aa4-4269-9c84-532227b32361@app.fastmail.com> <91f4dbe2-21ed-49f3-bebe-270f9bbec9d5@app.fastmail.com> <811d6f42e5481935943556b692859aae9146d4c9.camel@j-davis.com> <7b8681a578b5fe77103948eeb7b5cdd80fabad5d.camel@j-davis.com> <4f48f75d-4f2a-4240-b66d-597517796e02@app.fastmail.com> <3fba3f5671eddb221ba38f5a12acbe7cad27edf3.camel@j-davis.com> <427bfbda-c901-49e4-b725-8ddc41bec23d@app.fastmail.com> <887b1ee62794553a95c3578fcdc0cc1831e68b27.camel@j-davis.com> Subject: Re: Expanding HOT updates for expression and partial indexes Content-Type: multipart/mixed; boundary=387776ee575d4b4c937a32b0285dd6b9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --387776ee575d4b4c937a32b0285dd6b9 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Tue, Mar 17, 2026, at 12:38 PM, Jeff Davis wrote: > On Mon, 2026-03-16 at 16:51 -0400, Greg Burd wrote: >> > Also, the "actually changed values" is only valid for a single >> > tuple, >> > and it would be good to clarify that and make sure there's not a >> > lot of >> > room for confusion there. >>=20 >> Yes, that's true... too much confusion and not enough juice for the >> squeeze.=C2=A0 I'm dropping that. > > That is an interesting case you found in that the columns targeted by > an update are not a superset of the columns with actually changed > values. But I'm not sure exactly what to make of that fact, and if it's > not important for your other changes then I agree that we should drop > it. > > However, it might be good to comment somewhere that your changes (which > are based on values in specific tuples) cannot rely on > ExecGetAllUpdatedCols(), to avoid confusion in the future. Fair point, I'll do that. > Regards, > Jeff Davis v37 attached with changes you and Nathan asked for so far. More please!= :) thanks Jeff and Nathan! best. -greg --387776ee575d4b4c937a32b0285dd6b9 Content-Disposition: attachment; filename*0="v37-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v37-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA2NTUzZmFhNzc1NDY1ZTBkNTI1NDUwYjZiM2NmODRmOTVhMDJlMDMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjM3IDEv NF0gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKVGhpcyBjb21taXQgaW50cm9kdWNlcyB0ZXN0IGluZnJhc3RydWN0dXJlIGZv ciB2ZXJpZnlpbmcgSGVhcC1Pbmx5IFR1cGxlCihIT1QpIHVwZGF0ZSBmdW5jdGlvbmFsaXR5 IGluIFBvc3RncmVTUUwuIEl0IHByb3ZpZGVzIGEgYmFzZWxpbmUgZm9yCmRlbW9uc3RyYXRp bmcgYW5kIHZhbGlkYXRpbmcgSE9UIHVwZGF0ZSBiZWhhdmlvci4KClJlZ3Jlc3Npb24gdGVz dHM6Ci0gQmFzaWMgSE9UIHZzIG5vbi1IT1QgdXBkYXRlIGRlY2lzaW9ucwotIEFsbC1vci1u b25lIHByb3BlcnR5IGZvciBtdWx0aXBsZSBpbmRleGVzCi0gUGFydGlhbCBpbmRleGVzIGFu ZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChzdW1tYXJpemluZykgaW5kZXhlcyBhbGxv d2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVtbiBoYW5kbGluZyB3aXRoIEhPVAotIFVu aXF1ZSBjb25zdHJhaW50cyBiZWhhdmlvcgotIE11bHRpLWNvbHVtbiBpbmRleGVzCi0gUGFy dGl0aW9uZWQgdGFibGUgSE9UIHVwZGF0ZXMKCklzb2xhdGlvbiB0ZXN0czoKLSBIT1QgY2hh aW4gZm9ybWF0aW9uIGFuZCBtYWludGVuYW5jZQotIENvbmN1cnJlbnQgSE9UIHVwZGF0ZSBz Y2VuYXJpb3MKLSBJbmRleCBzY2FuIGJlaGF2aW9yIHdpdGggSE9UIGNoYWlucwotLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0IHwgNzQ1ICsrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAg ICAgIHwgICA1ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCAgICAg IHwgNjA1ICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMzU1IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2hvdF91cGRhdGVzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2hvdF91cGRhdGVzLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3Rf dXBkYXRlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3 M2ZlMzMxMGRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ob3RfdXBkYXRlcy5vdXQKQEAgLTAsMCArMSw3NDUgQEAKKy0tCistLSBIT1RfVVBEQVRF UworLS0gVGVzdCBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucworLS0K Ky0tIFRoaXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmllcyB0aGF0IEhPVCB1cGRhdGVz IGFyZSB1c2VkIHdoZW4gYXBwcm9wcmlhdGUKKy0tIGFuZCBhdm9pZGVkIHdoZW4gbmVjZXNz YXJ5IChlLmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUgbW9kaWZpZWQpLgorLS0KKy0t IFdlIHVzZSBtdWx0aXBsZSB2YWxpZGF0aW9uIG1ldGhvZHM6CistLSAxLiBTdGF0aXN0aWNz IGZ1bmN0aW9ucyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKQorLS0gMi4gcGFn ZWluc3BlY3QgZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhhbWluYXRpb24KKy0tIDMuIEVY UExBSU4gdG8gdmVyaWZ5IGluZGV4IHVzYWdlIGFmdGVyIHVwZGF0ZXMKKy0tCistLSBMb2Fk IHJlcXVpcmVkIGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBw YWdlaW5zcGVjdDsKKy0tIEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCitS RVRVUk5TIFRBQkxFICgKKyAgICB1cGRhdGVzIEJJR0lOVCwKKyAgICBob3QgQklHSU5UCisp IEFTICQkCitERUNMQVJFCisgIHJlbF9vaWQgb2lkOworQkVHSU4KKyAgcmVsX29pZCA6PSBy ZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKworICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFu ZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0cworICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRl ZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVzdHMpLCB0aGlzIHdvcmtzIGNvcnJlY3RseQorICAt LSBOb3RlOiBJbiBleHBsaWNpdCB0cmFuc2FjdGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1p dHRlZCBzdGF0cyBhbHJlYWR5CisgIC0tIGluY2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0 aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4gRm9yIGV4cGxpY2l0CisgIC0tIHRyYW5zYWN0aW9u IHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMg ZnVuY3Rpb24uCisgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3Vw ZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dl dF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgaG90IDo9IENPQUxFU0NF KHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAg ICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29p ZCksIDApOworCisgIFJFVFVSTiBORVhUOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsK Ky0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFydCBvZiBhIEhPVCBjaGFpbiAoaGFzIGEgcHJl ZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFz X2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCitSRVRVUk5TIGJv b2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGludDsKKyAgcGFnZV9pdGVtIHJl Y29yZDsKK0JFR0lOCisgIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50 KVswXTo6aW50OworCisgIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBz YW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQorICBGT1IgcGFnZV9p dGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCBJUyBOT1QgTlVMTAorICAgICAg QU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06 OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAor ICBMT09QCisgICAgUkVUVVJOIHRydWU7CisgIEVORCBMT09QOworCisgIFJFVFVSTiBmYWxz ZTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBQcmludCB0aGUgSE9UIGNoYWlu IHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHN0YXJ0X2N0aWQgdGlkKQorUkVU VVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0 LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikgQVMKKyQkCisjdmFyaWFibGVfY29u ZmxpY3QgdXNlX2NvbHVtbgorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBsaW5lX3B0 ciBpbnQ7CisgIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3RhcnRfY3RpZDsKKyAgbmV4dF9jdGlk IHRpZDsKKyAgcG9zaXRpb24gaW50IDo9IDA7CisgIG1heF9pdGVyYXRpb25zIGludCA6PSAx MDA7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CisgIGZvdW5kX3ByZWRlY2Vzc29yIGJvb2xlYW4g Oj0gZmFsc2U7CisgIGZsYWdzX25hbWUgdGV4dDsKK0JFR0lOCisgIGJsb2NrX251bSA6PSAo c3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisKKyAgLS0gRmluZCB0aGUgcHJl ZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0byBvdXIgc3RhcnRfY3RpZCkKKyAgRk9S IHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgIEZS T00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkK KyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0aWQgPSBzdGFydF9jdGlk CisgIExPT1AKKyAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8fCBibG9ja19udW06OnRleHQg fHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScpOjp0aWQ7CisgICAgZm91bmRf cHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICBFWElUOworICBFTkQgTE9PUDsKKworICAtLSBJ ZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gY3RpZAorICBJ RiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgorICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFy dF9jdGlkOworICBFTkQgSUY7CisKKyAgLS0gRm9sbG93IHRoZSBjaGFpbiBmb3J3YXJkCisg IFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlvbnMgTE9PUAorICAgIGxpbmVfcHRyIDo9 IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsxXTo6aW50OworCisgICAgRk9SIHBhZ2Vf aXRlbSBJTgorICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICBGUk9N IGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisg ICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAgTE9PUAorICAgICAgLS0gTWFwIGxwX2Zs YWdzIHRvIG5hbWVzCisgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2Zs YWdzCisgICAgICAgIFdIRU4gMCBUSEVOICd1bnVzZWQgKDApJworICAgICAgICBXSEVOIDEg VEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScK KyAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJworICAgICAgICBFTFNFICd1bmtub3du ICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4dCB8fCAnKScKKyAgICAgIEVORDsKKwor ICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAg Y3VycmVudF9jdGlkLAorICAgICAgICBmbGFnc19uYW1lLAorICAgICAgICBwYWdlX2l0ZW0u dF9jdGlkLAorICAgICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRl bS50X2N0aWQgPSBjdXJyZW50X2N0aWQpOjpib29sZWFuCisgICAgICA7CisKKyAgICAgIElG IHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVu dF9jdGlkIFRIRU4KKyAgICAgICAgUkVUVVJOOworICAgICAgRU5EIElGOworCisgICAgICBu ZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsKKworICAgICAgSUYgKG5leHRfY3RpZDo6 dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KKyAgICAgICAgUkVUVVJO OworICAgICAgRU5EIElGOworCisgICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwor ICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgIEVORCBMT09QOworCisgICAg SUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgIFJFVFVSTjsKKyAgICBFTkQgSUY7CisgIEVO RCBMT09QOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIEJhc2ljIEhPVCB1cGRh dGUgKHVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4pCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAg bm9uX2luZGV4ZWRfY29sIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9pbmRleGVkX2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7 CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lO U0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcpOworSU5TRVJU IElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsJyk7CistLSBHZXQgYmFz ZWxpbmUKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRh dGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93KQor CistLSBTaG91bGQgYmUgSE9UIHVwZGF0ZXMgKG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1v ZGlmaWVkKQorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRl ZDEnIFdIRVJFIGlkID0gMTsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29s ID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9p bmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hFUkUgaWQgPSAzOworLS0gVmVyaWZ5IEhPVCB1 cGRhdGVzIG9jY3VycmVkCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMgfCAgIDMK KygxIHJvdykKKworLS0gRHVtcCB0aGUgSE9UIGNoYWluIGJlZm9yZSBWQUNVVU1pbmcKK1dJ VEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hF UkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRpb24sCisgIHBy aW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitGUk9NIGN1cnJl bnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50 X3R1cGxlLmN0aWQpOworIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAg bHBfZmxhZ3MgIHwgdF9jdGlkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAw IHwgKDAsMSkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKyB0ICAgICAgICAgfCAgICAgICAgICAg ICAgMSB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMiByb3dzKQorCistLSBWYWN1 dW0gdGhlIHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFD VVVNIGhvdF90ZXN0OworLS0gU2hvdyB0aGF0IHRoZXJlIGlzIG5vIGNoYWluIGFmdGVyIHZh Y3V1bQorV0lUSCBjdXJyZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3Rf dGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3RfdGVz dCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlv biwKKyAgcHJpbnRfaG90X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZS T00gY3VycmVudF90dXBsZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcs IGN1cnJlbnRfdHVwbGUuY3RpZCk7CisgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBj dGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgZiAgICAgICAgIHwgICAgICAg ICAgICAgIDAgfCAoMCw0KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorKDEgcm93KQorCistLSBO b24tSE9UIHVwZGF0ZSAodXBkYXRlIGluZGV4ZWQgY29sdW1uKQorVVBEQVRFIGhvdF90ZXN0 IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDQgfCAgIDMKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHdhcyB1 cGRhdGVkIChuZXcgdmFsdWUgZmluZGFibGUpCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3Rf dGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBob3RfdGVz dF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAorICAgSW5kZXggQ29uZDogKGluZGV4ZWRfY29s ID0gMTUwKQorKDIgcm93cykKKworU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90 ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIHwgaW5kZXhlZF9jb2wgCistLS0t Ky0tLS0tLS0tLS0tLS0KKyAgMSB8ICAgICAgICAgMTUwCisoMSByb3cpCisKKy0tIFZlcmlm eSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4CitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBT Y2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBD b25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisoMiByb3dzKQorCitTRUxFQ1QgaWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3Mp CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0gQWxsLW9yLW5vbmUgcHJvcGVydHk6IHVw ZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBkYXRlcwor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAg Y29sX2MgaW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hX2lkeCBPTiBob3RfdGVzdChjb2xfYSk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYl9pZHggT04gaG90X3Rlc3QoY29sX2IpOworQ1JF QVRFIElOREVYIGhvdF90ZXN0X2NfaWR4IE9OIGhvdF90ZXN0KGNvbF9jKTsKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKKy0tIFVw ZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSBhbiBpbmRleGVk IGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVzIG11c3QgYmUgdXBk YXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9h ID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwg ICAwCisoMSByb3cpCisKKy0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3Vw ZGF0ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVw ZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAxCisoMSByb3cp CisKKy0tIFBhcnRpYWwgaW5kZXg6IGJvdGggb2xkIGFuZCBuZXcgb3V0c2lkZSBwcmVkaWNh dGUgKGNvbnNlcnZhdGl2ZSA9IG5vbi1IT1QpCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JF QVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgc3Rh dHVzIHRleHQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Cist LSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCitDUkVBVEUg SU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdIRVJFIHN0 YXR1cyA9ICdhY3RpdmUnOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0 aXZlJywgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFj dGl2ZScsICdkYXRhMicpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVs ZXRlZCcsICdkYXRhMycpOworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnYWN0 aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkKKy0tIFNob3VsZCBi ZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQg PSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0 ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAxCisoMSByb3cpCisK Ky0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2luYWN0aXZlJyByb3cgKG91dHNp ZGUgcHJlZGljYXRlKQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBk YXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQor ICAgICAgIDIgfCAgIDIKKygxIHJvdykKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFj dGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdy ZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRp Y2F0ZSBjaGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFs dWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMg PSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAzIHwgICAyCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3Ig J2FjdGl2ZScgcm93cworU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBz dGF0dXMgPSAnYWN0aXZlJzsKKyBpZCB8IHN0YXR1cyAKKy0tLS0rLS0tLS0tLS0KKyAgMSB8 IGFjdGl2ZQorKDEgcm93KQorCistLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVz IG9uIG5vbi1QSyBjb2x1bW5zCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHMgdGltZXN0YW1w LAorICAgIHZhbHVlIGludCwKKyAgICBicmluX2NvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsICcyMDI0LTAxLTAxJywgMTAwLCAxMDAwKTsKKy0tIFVwZGF0ZSBib3RoIEJS SU4gY29sdW1ucyAtIHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5k ZXhlcykKK1VQREFURSBob3RfdGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29s ID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEg fCAgIDEKKygxIHJvdykKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBhbHNvIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBk YXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDIKKygxIHJvdykK KworLS0gVE9BU1QgYW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBp biBIT1QKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbGFy Z2VfdGV4dCB0ZXh0LAorICAgIHNtYWxsX3RleHQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7CistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQorSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAn c21hbGwnKTsKKy0tIFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0g c2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0 ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0 ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAxCisoMSByb3cpCisK Ky0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBj b2x1bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBl YXQoJ3knLCAzMDAwKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgor KDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDIwMDsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0t LS0tKy0tLS0tCisgICAgICAgMyB8ICAgMgorKDEgcm93KQorCistLSBVbmlxdWUgY29uc3Ry YWludCAodW5pcXVlIGluZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAorRFJPUCBU QUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIHVuaXF1ZV9jb2wgaW50IFVOSVFVRSwKKyAgICBkYXRhIHRleHQK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMSwgMTAwLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwg MjAwLCAnZGF0YTInKTsKKy0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhlZCkgLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDIKKygxIHJvdykKKworLS0gVmVyaWZ5IHVu aXF1ZSBjb25zdHJhaW50IHN0aWxsIGVuZm9yY2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2ws IGRhdGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKKyBpZCB8IHVuaXF1ZV9jb2wgfCAg ZGF0YSAgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgIDEgfCAgICAgICAgMTAw IHwgdXBkYXRlZAorICAyIHwgICAgICAgIDIwMCB8IHVwZGF0ZWQKKygyIHJvd3MpCisKKy0t IFRoaXMgc2hvdWxkIGZhaWwgKHVuaXF1ZSB2aW9sYXRpb24pCitVUERBVEUgaG90X3Rlc3Qg U0VUIHVuaXF1ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworRVJST1I6ICBkdXBsaWNhdGUg a2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJob3RfdGVzdF91bmlxdWVf Y29sX2tleSIKK0RFVEFJTDogIEtleSAodW5pcXVlX2NvbCk9KDEwMCkgYWxyZWFkeSBleGlz dHMuCistLSBNdWx0aS1jb2x1bW4gaW5kZXg6IGFueSBjb2x1bW4gY2hhbmdlID0gbm9uLUhP VAorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisg ICAgY29sX2MgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChjb2xfYSwgY29s X2IpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnZGF0 YScpOworLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBz aG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1OworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3Qg CistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tIFJlc2V0 CitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTA7CistLSBVcGRhdGUgY29sX2IgKHBh cnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9iID0gMjU7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAg IDMgfCAgIDAKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2IgPSAyMDsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgNCB8ICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKy0tIFVwZGF0ZSBkYXRhIChub3QgaW5k ZXhlZCkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBk YXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBk YXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDYgfCAgIDIKKygxIHJvdykK KworLS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMK K0RST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitO T1RJQ0U6ICB0YWJsZSAiaG90X3Rlc3RfcGFydGl0aW9uZWQiIGRvZXMgbm90IGV4aXN0LCBz a2lwcGluZworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkICgKKyAgICBpZCBp bnQsCisgICAgcGFydGl0aW9uX2tleSBpbnQsCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAg IGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAoaWQsIHBhcnRpdGlvbl9rZXkpCispIFBB UlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tleSk7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3RfcGFydDEgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IFRBQkxFIGhvdF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25l ZAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3Bh cnRpdGlvbmVkKGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlv bmVkIFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CitJTlNFUlQgSU5UTyBob3Rf dGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKKy0t IFVwZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBi ZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVk MScgV0hFUkUgaWQgPSAxOworLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhl ZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0t LS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOworIHVwZGF0ZXMgfCBob3QgCistLS0t LS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAxCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRl eGVzIHdvcmsgb24gcGFydGl0aW9ucworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0 aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCisgIDEKKygxIHJv dykKKworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhl ZF9jb2wgPSAyMDA7CisgaWQgCistLS0tCisgIDIKKygxIHJvdykKKworLS0gVXBkYXRlIGlu ZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlvbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUg aG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0g MTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMQorKDEgcm93 KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQKK1NFTEVDVCBpZCBGUk9NIGhvdF90 ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRyaWdnZXIg bW9kaWZpY2F0aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9UCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVu IHRyaWdnZXJzIG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCistLSBoZWFwX21vZGlmeV90 dXBsZSgpLCBldmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdz IFNFVCBjbGF1c2UKK0NSRUFURSBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0ICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgdHJpZ2dlcmVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0 CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90X3RyaWdnZXJf aWR4IE9OIGhvdF90cmlnZ2VyX3Rlc3QodHJpZ2dlcmVkX2NvbCk7CistLSBDcmVhdGUgYSB0 cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1bW4KK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkKK1JFVFVSTlMgVFJJR0dFUiBB UyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29s ICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NS RUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfbW9kaWZ5CisgICAgQkVGT1JFIFVQREFURSBP TiBob3RfdHJpZ2dlcl90ZXN0CisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBGVU5D VElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOworSU5TRVJUIElOVE8gaG90X3RyaWdnZXJf dGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBvbmx5IGRh dGEgY29sdW1uLCBidXQgdHJpZ2dlciBtb2RpZmllcyBpbmRleGVkIGNvbHVtbgorLS0gU2hv dWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0cmlnZ2VyIG1vZGlmaWVkIGFuIGluZGV4ZWQgY29s dW1uCitVUERBVEUgaG90X3RyaWdnZXJfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVS RSBpZCA9IDE7CistLSBWZXJpZnkgaXQgd2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQg Y29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQorU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0t LSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IHRoZSB0cmln Z2VyZWQgY29sdW1uIHdhcyBhY3R1YWxseSBtb2RpZmllZAorU0VMRUNUIHRyaWdnZXJlZF9j b2wgRlJPTSBob3RfdHJpZ2dlcl90ZXN0IFdIRVJFIGlkID0gMTsKKyB0cmlnZ2VyZWRfY29s IAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEwMQorKDEgcm93KQorCitEUk9QIFRB QkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gbW9kaWZ5X3Ry aWdnZXJlZF9jb2woKTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEpTT05CIGV4 cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQg SlNPTkIgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCitDUkVBVEUgVEFCTEUgaG90X2pzb25i X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBkYXRhIGpzb25iCispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CistLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBh IHNwZWNpZmljIEpTT04gcGF0aAorQ1JFQVRFIElOREVYIGhvdF9qc29uYl9uYW1lX2lkeCBP TiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFtZScpKTsKK0lOU0VSVCBJTlRPIGhvdF9q c29uYl90ZXN0IFZBTFVFUworICAgICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJj aXR5IjoiTllDIn0nKSwKKyAgICAoMiwgJ3sibmFtZSI6IkJvYiIsImFnZSI6MjUsImNpdHki OiJMQSJ9Jyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0 Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDAgfCAgIDAK KygxIHJvdykKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpTT04gcGF0aCAoYWdlKSAtIHNo b3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitVUERBVEUgaG90X2pzb25iX3Rl c3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQg PSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwor IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAwCisoMSBy b3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9U IGJlIEhPVAorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRh dGEsICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IGlu ZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJfdGVzdCBXSEVSRSBkYXRhLT4+ J25hbWUnID0gJ0FsaWNlMic7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworLS0gVGVz dCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0 ZXIgaW5zdHJ1bWVudGF0aW9uCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBk YXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMyB8ICAgMAorKDEgcm93KQorCistLSBUZXN0IGpzb25iX2luc2VydCBvbiBu b24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24K K1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2VydChkYXRhLCAn e2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICA0IHwgICAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90X2pz b25iX3Rlc3Q7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBYTUwgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBYTUwgcGF0 aHMgY2FuIGJlIEhPVCB1cGRhdGVzCitDUkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZG9jIHhtbAorKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVjaWZpYyBYUGF0 aAorQ1JFQVRFIElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90X3htbF90ZXN0ICgoeHBh dGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpKSk7CitJTlNFUlQgSU5UTyBob3RfeG1s X3Rlc3QgVkFMVUVTCisgICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+ MzA8L2FnZT48L3BlcnNvbj4nKSwKKyAgICAoMiwgJzxwZXJzb24+PG5hbWU+Qm9iPC9uYW1l PjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKK0VSUk9SOiAgY291bGQgbm90IGlkZW50aWZ5 IGEgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdHlwZSB4bWwKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0t LSstLS0tLQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG5vbi1pbmRl eGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBYTUwgY29tcGFyaXNvbiBm YWxsYmFjaworLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQgbWVhbnMgbm9uLWluZGV4 ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29tcGFyaXNvbgorVVBEQVRF IGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFn ZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBY UGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF94bWxfdGVzdCBT RVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3Bl cnNvbj4nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3htbF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAg IDAgfCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHdvcmtzCitTRUxFQ1QgaWQg RlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBk b2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOworRVJST1I6ICBvcGVyYXRvciBkb2VzIG5v dCBleGlzdDogeG1sW10gPSB0ZXh0W10KK0xJTkUgMTogLi4uX3htbF90ZXN0IFdIRVJFIHhw YXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorREVUQUlMOiAgTm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFjY2VwdHMgdGhlIGdpdmVu IGFyZ3VtZW50IHR5cGVzLgorSElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBsaWNp dCB0eXBlIGNhc3RzLgorRFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7CistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21wYXJlZGF0dW1zIGZvciBK U09OQgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0aGF0IEdJTiBpbmRl eGVzIGNhbiB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBIT1Qgd2hlbiBleHRyYWN0 ZWQga2V5cyBtYXRjaAorQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIHRhZ3MgdGV4dFtdLAorICAgIHByb3BlcnRpZXMganNvbmIK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKy0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5 CitDUkVBVEUgSU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcg Z2luICh0YWdzKTsKKy0tIEdJTiBpbmRleCBvbiBKU09OQiAoanNvbmJfb3BzIC0ga2V5cyBh bmQgdmFsdWVzKQorQ1JFQVRFIElOREVYIGhvdF9naW5fcHJvcHNfaWR4IE9OIGhvdF9naW5f dGVzdCBVU0lORyBnaW4gKHByb3BlcnRpZXMpOworSU5TRVJUIElOVE8gaG90X2dpbl90ZXN0 IFZBTFVFUworICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10sICd7ImtleTEiOiJ2YWwx Iiwia2V5MiI6InZhbDIifScpLAorICAgICgyLCBBUlJBWVsndGFnMycsICd0YWc0J10sICd7 ImtleTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgdGhhdCBjaGFuZ2Vz IHRhZyBvcmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgc2hv dWxkIGJlIEhPVAorLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1c3QgZGlmZmVyZW50 IG9yZGVyKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywg J3RhZzEnXSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAxIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBKU09OQiB2YWx1ZSAobm90IGtleSkg LSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgbWF5IGJlIEhPVCBvciBub24tSE9UCistLSBkZXBl bmRpbmcgb24gR0lOIG9wZXJhdG9yIGNsYXNzIChqc29uYl9vcHMgaW5kZXhlcyBib3RoIGtl eXMgYW5kIHZhbHVlcykKK1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHByb3BlcnRpZXMgPSAn eyJrZXkxIjoidmFsMV9uZXciLCJrZXkyIjoidmFsMiJ9JyBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBo b3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAwCisoMSByb3cpCisKKy0tIEFk ZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0ZWQga2V5 cykKK1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcx JywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAg ICAgICAzIHwgICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3JrCitT RUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSdd OworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF9naW5f dGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9JzsKKyBpZCAK Ky0tLS0KKyAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIENsZWFudXAKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK0RST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0OworRFJPUCBUQUJMRSBJRiBF WElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gSUYg RVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJ U1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElT VFMgZ2V0X2hvdF9jb3VudCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Owpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggZTc3OWFkYTcwY2IuLjA1ZTYz YTVkNzZmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzNyw2ICsx MzcsMTEgQEAgdGVzdDogZXZlbnRfdHJpZ2dlcl9sb2dpbgogIyB0aGlzIHRlc3QgYWxzbyB1 c2VzIGV2ZW50IHRyaWdnZXJzLCBzbyBsaWtld2lzZSBydW4gaXQgYnkgaXRzZWxmCiB0ZXN0 OiBmYXN0X2RlZmF1bHQKIAorIyAtLS0tLS0tLS0tCisjIEhPVCB1cGRhdGVzIHRlc3RzCisj IC0tLS0tLS0tLS0KK3Rlc3Q6IGhvdF91cGRhdGVzCisKICMgcnVuIHRhYmxlc3BhY2UgdGVz dCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBk dXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgogdGVzdDogdGFibGVz cGFjZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hODg5NDAwNjE3NwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbApAQCAtMCwwICsxLDYw NSBAQAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBUZXN0IEhlYXAtT25seSBUdXBsZSAoSE9U KSB1cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhpcyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZl cmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVzZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0g YW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUuZy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5z IGFyZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0 aG9kczoKKy0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rpb25zIChwZ19zdGF0X2dldF90dXBsZXNf aG90X3VwZGF0ZWQpCistLSAyLiBwYWdlaW5zcGVjdCBleHRlbnNpb24gZm9yIEhPVCBjaGFp biBleGFtaW5hdGlvbgorLS0gMy4gRVhQTEFJTiB0byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0 ZXIgdXBkYXRlcworLS0KKworLS0gTG9hZCByZXF1aXJlZCBleHRlbnNpb25zCitDUkVBVEUg RVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7CisKKy0tIEZ1bmN0aW9uIHRv IGdldCBIT1QgdXBkYXRlIGNvdW50CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRf aG90X2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICgKKyAgICB1cGRhdGVz IEJJR0lOVCwKKyAgICBob3QgQklHSU5UCispIEFTICQkCitERUNMQVJFCisgIHJlbF9vaWQg b2lkOworQkVHSU4KKyAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKwor ICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0cwor ICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVzdHMp LCB0aGlzIHdvcmtzIGNvcnJlY3RseQorICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFuc2Fj dGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5CisgIC0tIGlu Y2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4gRm9y IGV4cGxpY2l0CisgIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCisgIHVwZGF0ZXMgOj0gQ09B TEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAg ICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9v aWQpLCAwKTsKKyAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworCisgIFJFVFVSTiBORVhUOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBw YXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQs IHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQorICBi bG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOworQkVHSU4KKyAgYmxvY2tfbnVt IDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisKKyAgLS0gTG9vayBm b3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSB0aGF0IHBvaW50cyB0byBv dXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4KKyAgICBTRUxFQ1QgbHAsIGxw X2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICBB TkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0aWQK KyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRleHQg fHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AKKyAgICBSRVRVUk4gdHJ1ZTsK KyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFydGluZyBmcm9tIGEgZ2l2ZW4g dHVwbGUKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hvdF9jaGFpbihyZWxf bmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKK1JFVFVSTlMgVEFCTEUoY2hhaW5fcG9zaXRp b24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRpZCwgY2hhaW5fZW5k IGJvb2xlYW4pIEFTCiskJAorI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9jb2x1bW4KK0RFQ0xB UkUKKyAgYmxvY2tfbnVtIGludDsKKyAgbGluZV9wdHIgaW50OworICBjdXJyZW50X2N0aWQg dGlkIDo9IHN0YXJ0X2N0aWQ7CisgIG5leHRfY3RpZCB0aWQ7CisgIHBvc2l0aW9uIGludCA6 PSAwOworICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICBwYWdlX2l0ZW0gcmVjb3Jk OworICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOworICBmbGFnc19uYW1l IHRleHQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRleHQ6OnBvaW50 KVswXTo6aW50OworCisgIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChvbGQgdHVwbGUgcG9p bnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCisgIEZPUiBwYWdlX2l0ZW0gSU4KKyAgICBTRUxF Q1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRf cmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAx CisgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAorICBMT09QCisgICAgY3VycmVudF9j dGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0ZW0ubHA6 OnRleHQgfHwgJyknKTo6dGlkOworICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7Cisg ICAgRVhJVDsKKyAgRU5EIExPT1A7CisKKyAgLS0gSWYgbm8gcHJlZGVjZXNzb3IgZm91bmQs IHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKKyAgSUYgTk9UIGZvdW5kX3ByZWRlY2Vzc29y IFRIRU4KKyAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKKyAgRU5EIElGOworCisg IC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAorICBXSElMRSBwb3NpdGlvbiA8IG1heF9p dGVyYXRpb25zIExPT1AKKyAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlkOjp0ZXh0Ojpw b2ludClbMV06OmludDsKKworICAgIEZPUiBwYWdlX2l0ZW0gSU4KKyAgICAgIFNFTEVDVCBs cCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jh d19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0 cgorICAgIExPT1AKKyAgICAgIC0tIE1hcCBscF9mbGFncyB0byBuYW1lcworICAgICAgZmxh Z3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICBXSEVOIDAgVEhF TiAndW51c2VkICgwKScKKyAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAg ICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAgICAgIFdIRU4gMyBUSEVOICdk ZWFkICgzKScKKyAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0ZW0ubHBfZmxh Z3M6OnRleHQgfHwgJyknCisgICAgICBFTkQ7CisKKyAgICAgIFJFVFVSTiBRVUVSWSBTRUxF Q1QKKyAgICAgICAgcG9zaXRpb24sCisgICAgICAgIGN1cnJlbnRfY3RpZCwKKyAgICAgICAg ZmxhZ3NfbmFtZSwKKyAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgKHBhZ2Vf aXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlk KTo6Ym9vbGVhbgorICAgICAgOworCisgICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElTIE5V TEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisgICAgICAgIFJF VFVSTjsKKyAgICAgIEVORCBJRjsKKworICAgICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50 X2N0aWQ7CisKKyAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9 IGJsb2NrX251bSBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAgICAgIEVORCBJRjsKKworICAg ICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3RpZDsKKyAgICAgIHBvc2l0aW9uIDo9IHBvc2l0 aW9uICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIElGIHBvc2l0aW9uID0gMCBUSEVOCisg ICAgICBSRVRVUk47CisgICAgRU5EIElGOworICBFTkQgTE9PUDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CisKKy0tIEJhc2ljIEhPVCB1cGRhdGUgKHVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4pCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbm9uX2luZGV4ZWRfY29sIHRleHQK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lu ZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBob3RfdGVz dCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOworCistLSBHZXQgYmFzZWxpbmUKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gU2hvdWxkIGJlIEhPVCB1 cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkKK1VQREFURSBob3Rf dGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitV UERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicgV0hFUkUg aWQgPSAyOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRl ZDMnIFdIRVJFIGlkID0gMzsKKworLS0gVmVyaWZ5IEhPVCB1cGRhdGVzIG9jY3VycmVkCitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIER1bXAgdGhl IEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5nCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAor ICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMQorKQorU0VMRUNUCisg IGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNf Y2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAg bHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmlu dF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKTsKKworLS0gVmFj dXVtIHRoZSByZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKK1ZB Q1VVTSBob3RfdGVzdDsKKworLS0gU2hvdyB0aGF0IHRoZXJlIGlzIG5vIGNoYWluIGFmdGVy IHZhY3V1bQorV0lUSCBjdXJyZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3Rf dGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3Np dGlvbiwKKyAgcHJpbnRfaG90X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQK K0ZST00gY3VycmVudF90dXBsZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVz dCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CisKKy0tIE5vbi1IT1QgdXBkYXRlICh1cGRhdGUg aW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMTUw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkIChuZXcgdmFsdWUgZmluZGFibGUp CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1 MDsKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVk X2NvbCA9IDE1MDsKKworLS0gVmVyaWZ5IG9sZCB2YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5k ZXhlZF9jb2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVk X2NvbCA9IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCistLSBBbGwtb3Itbm9uZSBw cm9wZXJ0eTogdXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRl eCB1cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29s X2IgaW50LAorICAgIGNvbF9jIGludCwKKyAgICBub25faW5kZXhlZCB0ZXh0CispIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hX2lkeCBPTiBo b3RfdGVzdChjb2xfYSk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYl9pZHggT04gaG90X3Rl c3QoY29sX2IpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2NfaWR4IE9OIGhvdF90ZXN0KGNv bF9jKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAn aW5pdGlhbCcpOworCistLSBVcGRhdGUgb25seSBjb2xfYSAtIHNob3VsZCBOT1QgYmUgSE9U IGJlY2F1c2UgYW4gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZAorLS0gVGhpcyBtZWFucyBBTEwg aW5kZXhlcyBtdXN0IGJlIHVwZGF0ZWQgKGFsbC1vci1ub25lIHByb3BlcnR5KQorVVBEQVRF IGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1p bmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9u X2luZGV4ZWQgPSAndXBkYXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7CisKKy0tIFBhcnRpYWwgaW5kZXg6IGJvdGggb2xkIGFuZCBuZXcgb3V0c2lk ZSBwcmVkaWNhdGUgKGNvbnNlcnZhdGl2ZSA9IG5vbi1IT1QpCitEUk9QIFRBQkxFIGhvdF90 ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworLS0gUGFydGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAnYWN0 aXZlJworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3Rh dHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKKworSU5TRVJUIElOVE8gaG90X3Rlc3Qg VkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicpOworSU5TRVJUIElOVE8gaG90X3Rlc3Qg VkFMVUVTICgzLCAnZGVsZXRlZCcsICdkYXRhMycpOworCistLSBVcGRhdGUgbm9uLWluZGV4 ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJvdyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFu Z2VkKQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3Vw ZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2luYWN0aXZl JyByb3cgKG91dHNpZGUgcHJlZGljYXRlKQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhv dF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBzdGF0dXMgZnJv bSAnaW5hY3RpdmUnIHRvICdkZWxldGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKKy0t IFBvc3RncmVTUUwgaXMgY29uc2VydmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9y ZSBwcmVkaWNhdGUgY2hlY2sKKy0tIFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBi b3RoIHZhbHVlcyBhcmUgb3V0c2lkZSBwcmVkaWNhdGUKK1VQREFURSBob3RfdGVzdCBTRVQg c3RhdHVzID0gJ2RlbGV0ZWQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZv ciAnYWN0aXZlJyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJF IHN0YXR1cyA9ICdhY3RpdmUnOworCistLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRl eGVzIG9uIG5vbi1QSyBjb2x1bW5zCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUg VEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1l c3RhbXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfdHNfYnJpbiBPTiBob3Rf dGVzdCBVU0lORyBicmluKHRzKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9icmluX2NvbF9i cmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4oYnJpbl9jb2wpOworCitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDEsICcyMDI0LTAxLTAxJywgMTAwLCAxMDAwKTsKKworLS0gVXBk YXRlIGJvdGggQlJJTiBjb2x1bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1t YXJpemluZyBpbmRleGVzKQorVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAy JywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAt IHNob3VsZCBhbHNvIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisKKy0tIFRPQVNUIGFuZCBIT1Q6IFRPQVNUZWQgY29sdW1ucyBjYW4gcGFydGljaXBhdGUg aW4gSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAg bGFyZ2VfdGV4dCB0ZXh0LAorICAgIHNtYWxsX3RleHQgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGlu ZGV4ZWRfY29sKTsKKworLS0gSW5zZXJ0IHJvdyB3aXRoIFRPQVNUZWQgY29sdW1uICg+IDJL QikKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAz MDAwKSwgJ3NtYWxsJyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQg Y29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0 ID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlmIGluZGV4 ZWQgY29sdW1uIHVuY2hhbmdlZAorVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJnZV90ZXh0ID0g cmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOworU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBVbmlxdWUgY29uc3RyYWludCAo dW5pcXVlIGluZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAorRFJPUCBUQUJMRSBo b3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFS WSBLRVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsIDEwMCwgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIw MCwgJ2RhdGEyJyk7CisKKy0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhlZCkgLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFZlcmlmeSB1bmlxdWUg Y29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAorU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRh IEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CisKKy0tIFRoaXMgc2hvdWxkIGZhaWwgKHVu aXF1ZSB2aW9sYXRpb24pCitVUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1ZV9jb2wgPSAxMDAg V0hFUkUgaWQgPSAyOworCistLSBNdWx0aS1jb2x1bW4gaW5kZXg6IGFueSBjb2x1bW4gY2hh bmdlID0gbm9uLUhPVAorRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAg IGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90 X3Rlc3QoY29sX2EsIGNvbF9iKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgx LCAxMCwgMjAsIDMwLCAnZGF0YScpOworCistLSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVs dGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisKKy0tIFJlc2V0CitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTA7CisKKy0t IFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5P VCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gUmVzZXQKK1VQREFURSBob3Rf dGVzdCBTRVQgY29sX2IgPSAyMDsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3Rlc3QnKTsKKworLS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUg SE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CisKKy0tIFVwZGF0ZSBkYXRh IChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisKKy0tIFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRp b25zCitEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURF OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAorICAgIGlkIGludCwK KyAgICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0 YSB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElU SU9OIEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0 X3BhcnQxIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDEwMCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBU QUJMRSBob3RfdGVzdF9wYXJ0MiBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQK KyAgICBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCkgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3Bh cnRpdGlvbmVkKGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0 aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOwor CistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDEgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91 bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBk YXRlZDEnIFdIRVJFIGlkID0gMTsKKworLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24t aW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3BhcnRp dGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CisKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDInKTsKKworLS0gVmVyaWZ5IGluZGV4ZXMg d29yayBvbiBwYXJ0aXRpb25zCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOworCistLSBVcGRhdGUgaW5kZXhl ZCBjb2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3Rf dGVzdF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworCistLSBW ZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRp dGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBUcmlnZ2VyIG1vZGlmaWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkg YW5kIEhPVAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0aGF0IHdlIGNv cnJlY3RseSBkZXRlY3Qgd2hlbiB0cmlnZ2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZp YQorLS0gaGVhcF9tb2RpZnlfdHVwbGUoKSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJl bid0IGluIHRoZSBVUERBVEUncyBTRVQgY2xhdXNlCisKK0NSRUFURSBUQUJMRSBob3RfdHJp Z2dlcl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHJpZ2dlcmVkX2Nv bCBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKK0NS RUFURSBJTkRFWCBob3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2Vy ZWRfY29sKTsKKworLS0gQ3JlYXRlIGEgdHJpZ2dlciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4 ZWQgY29sdW1uCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVk X2NvbCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQKK0JFR0lOCisgICAgTkVXLnRyaWdnZXJl ZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7CisgICAgUkVUVVJOIE5FVzsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVf bW9kaWZ5CisgICAgQkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0CisgICAgRk9S IEVBQ0ggUk9XCisgICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgp OworCitJTlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5p dGlhbCcpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rl c3QnKTsKKworLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlm aWVzIGluZGV4ZWQgY29sdW1uCistLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdn ZXIgbW9kaWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KK1VQREFURSBob3RfdHJpZ2dlcl90ZXN0 IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKKworLS0gVmVyaWZ5IGl0IHdh cyBOT1QgYSBIT1QgdXBkYXRlIChpbmRleGVkIGNvbHVtbiB3YXMgbW9kaWZpZWQgYnkgdHJp Z2dlcikKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcp OworCistLSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlm aWVkCitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUg aWQgPSAxOworCitEUk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FTQ0FERTsKK0RST1Ag RlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gSlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRl IHRyYWNraW5nCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBk YXRlcyB0byBub24taW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKKwor Q1JFQVRFIFRBQkxFIGhvdF9qc29uYl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgZGF0YSBqc29uYgorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAorQ1JFQVRFIElO REVYIGhvdF9qc29uYl9uYW1lX2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFt ZScpKTsKKworSU5TRVJUIElOVE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCisgICAgKDEsICd7 Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHkiOiJOWUMifScpLAorICAgICgyLCAneyJu YW1lIjoiQm9iIiwiYWdlIjoyNSwiY2l0eSI6IkxBIn0nKTsKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4 ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRp b24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAn e2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKworLS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRo IChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VU IGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlk ID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcp OworCistLSBWZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90 ZXN0IFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2UyJzsKKworLS0gVGVzdCBqc29uYl9k ZWxldGUgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1 bWVudGF0aW9uCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2Np dHknIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworCistLSBUZXN0IGpzb25iX2luc2VydCBvbiBub24taW5kZXhlZCBw YXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KK1VQREFURSBob3Rf anNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2VydChkYXRhLCAne2NvdW50cnl9Jywg JyJVU0EiJykgV0hFUkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9qc29uYl90ZXN0Jyk7CisKK0RST1AgVEFCTEUgaG90X2pzb25iX3Rlc3Q7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBleHByZXNzaW9uIGluZGV4ZXMgYW5k IHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4gYmUgSE9U IHVwZGF0ZXMKKworQ1JFQVRFIFRBQkxFIGhvdF94bWxfdGVzdCAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIGRvYyB4bWwKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKwor LS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVjaWZpYyBYUGF0aAorQ1JFQVRF IElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90X3htbF90ZXN0ICgoeHBhdGgoJy9wZXJz b24vbmFtZS90ZXh0KCknLCBkb2MpKSk7CisKK0lOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKKyAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAorICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF94bWxfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBhdGggKGFnZSkgLSBi ZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNrCistLSBGdWxsIFhN TCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRoIHVwZGF0ZXMgc3Rp bGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBk b2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+ JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3ht bF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChuYW1lKSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFt ZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwor CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxfdGVzdCcpOworCistLSBW ZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhvdF94bWxfdGVzdCBXSEVSRSB4 cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBBUlJBWVsnQWxpY2UyJzo6dGV4 dF07CisKK0RST1AgVEFCTEUgaG90X3htbF90ZXN0OworCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21wYXJlZGF0dW1zIGZvciBKU09OQgor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0aGF0IEdJTiBpbmRleGVzIGNh biB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBIT1Qgd2hlbiBleHRyYWN0ZWQga2V5 cyBtYXRjaAorCitDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgdGFncyB0ZXh0W10sCisgICAgcHJvcGVydGllcyBqc29uYgorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBHSU4gaW5kZXggb24gdGV4dCBhcnJheQor Q1JFQVRFIElOREVYIGhvdF9naW5fdGFnc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdp biAodGFncyk7CisKKy0tIEdJTiBpbmRleCBvbiBKU09OQiAoanNvbmJfb3BzIC0ga2V5cyBh bmQgdmFsdWVzKQorQ1JFQVRFIElOREVYIGhvdF9naW5fcHJvcHNfaWR4IE9OIGhvdF9naW5f dGVzdCBVU0lORyBnaW4gKHByb3BlcnRpZXMpOworCitJTlNFUlQgSU5UTyBob3RfZ2luX3Rl c3QgVkFMVUVTCisgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZh bDEiLCJrZXkyIjoidmFsMiJ9JyksCisgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwg J3sia2V5MyI6InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMg dGFnIG9yZGVyIGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91 bGQgYmUgSE9UCistLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQg b3JkZXIpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAn dGFnMSddIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfZ2luX3Rlc3QnKTsKKworLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAtIGFm dGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKKy0tIGRlcGVuZGlu ZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5cyBh bmQgdmFsdWVzKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7Imtl eTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKKworU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKKworLS0gQWRkIG5ldyB0 YWcgLSBzaG91bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQorVVBE QVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFn NSddIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf Z2luX3Rlc3QnKTsKKworLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBpZCBG Uk9NIGhvdF9naW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CitTRUxFQ1Qg aWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgcHJvcGVydGllcyBAPiAneyJrZXkxIjoidmFs MV9uZXcifSc7CisKK0RST1AgVEFCTEUgaG90X2dpbl90ZXN0OworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBDbGVhbnVwCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitE Uk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdDsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIGhv dF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBo YXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmlu dF9ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9o b3RfY291bnQodGV4dCk7CitEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKLS0gCjIuNTEu MgoK --387776ee575d4b4c937a32b0285dd6b9 Content-Disposition: attachment; filename*0="v37-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v37-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwNmVhOTcwMjcxM2Y0ODUyYzE4YjFlNzI2YWQzNWUzZmY4MGE1NmM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjM3IDIv NF0gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXMsCmJ1dCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgIm1vZGlmaWVk IGluZGV4ZWQgYXR0cmlidXRlcyIKKG1vZGlmaWVkX2lkeF9hdHRycywgZm9ybWVybHkga25v d24gYXMgbW9kaWZpZWRfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSBy ZXBsYWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9y ZSB0YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3Ig YW4KZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1 cGxlIGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxv Y2sgaXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFw X3VwZGF0ZSgpLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlmaWVkIGlu ZGV4ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMgYWxzbyBw YXJ0aWFsbHkgcmVzcG9uc2libGUgZm9yIHRoZQpkZWNpc2lvbiBhYm91dCB3aGF0IHRvIFdB TCBsb2cgZm9yIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleS4gVGhpcyBsb2dpYwptb3ZlZCBp bnRvIGhlYXBfdXBkYXRlKCkgYW5kIG91dCBvZiB0aGUgcmVwbGFjZW1lbnQgbmFtZWQKSGVh cFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKS4gIERvaW5nIHRoaXMgYWxsb3dzIGZvcgpzaW1w bGVfaGVhcF91cGRhdGUoKSBhbmQgaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHRvIHNoYXJlIHRo ZSBzYW1lIGxvZ2ljCmFzIHRoZXkgYm90aCBjYWxsIGludG8gaGVhcF91cGRhdGUoKS4KClVw ZGF0ZXMgc3RlbW1pbmcgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIGFsc28gdXNlIHRoZSBu ZXcKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSBpbiBFeGVjU2ltcGxlUmVsYXRpb25V cGRhdGUoKS4KCkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgdXNlcyBFeGVjQ29tcGFy ZVNsb3RBdHRycygpIHRvIGlkZW50aWZ5CndoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2Vk IGFuZCB0aGVuIGludGVyc2VjdHMgdGhhdCB3aXRoIHRoZSBzZXQgb2YKaW5kZXhlZCBhdHRy aWJ1dGVzIHRvIGlkZW50aWZ5IHRoZSBtb2RpZmllZCBpbmRleGVkIHNldCwgdGhlCm1vZGlm aWVkX2lkeF9hdHRycy4KClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZldyBoZWxwZXIgZnVu Y3Rpb25zIHRvIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCmFuZCBpbmNyZWFzZSByZWFkYWJp bGl0eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSgpLApIZWFwVXBkYXRlRGV0ZXJtaW5lTG9j a21vZGUoKS4gVGhlc2UgYXJlIHVzZWQgaW4gYm90aCBoZWFwX3VwZGF0ZSgpIGFuZApzaW1w bGVfaGVhcF91cGRhdGUoKS4KClRoZSBoZWFwX3VwZGF0ZSgpIGZ1bmN0aW9uIGlzIGNhbGxl ZCBub3cgd2l0aCBsb2NrbW9kZSBwcmUtZGV0ZXJtaW5lZAphbmQgYSBib29sZWFuIGluZGlj YXRpbmcgaWYgdGhlIHVwZGF0ZSBhbGxvd3MgSE9UIHVwZGF0ZXMgb3Igbm90LCBib3RoCmNv bnN0LiBJZiBkdXJpbmcgaGVhcF91cGRhdGUoKSB0aGUgbmV3IHR1cGxlIHdpbGwgZml0IG9u IHRoZSBzYW1lIHBhZ2UKYW5kIHRoYXQgYm9vbGVhbiBpcyB0cnVlLCB0aGUgdXBkYXRlIGlz IEhPVC4gVGhpcyBtZWFucyB0aGF0IGFsdGhvdWdoCnRoZSBmdW5jdGlvbnMgYW5kIHRpbWlu ZyBvZiB0aGUgY29kZSBpbnZvbGVkIGluIEhPVCBkZWNpc2lvbnMgaGF2ZQpjaGFuZ2VkLCBu b25lIG9mIHRoZSBsb2dpYyByZWxhdGVkIHRvIHdoZW4gSE9UIGlzIGFsbG93ZWQgaGFzIGNo YW5nZWQuCgpEZXZlbG9wbWVudCBvZiB0aGlzIGZlYXR1cmUgZXhwb3NlZCBub25kZXRlcm1p bmlzdGljIGJlaGF2aW9yIGluIHRocmVlCmV4aXN0aW5nIHRlc3RzIHdoaWNoIGhhdmUgYmVl biBhZGp1c3RlZCB0byBhdm9pZCBpbmNvbnNpc3RlbnQgdGVzdApyZXN1bHRzIGR1ZSB0byB0 dXBsZSBvcmRlcmluZyBkdXJpbmcgaGVhcCBwYWdlIHNjYW5zLgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDQ4MCArKysrKysrKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8 ICAzMSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAg ICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAgICAgICAg ICAgICB8ICA3MCArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j ICAgICAgICB8ICA4OCArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j ICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAg ICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAg ICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxjYWNo ZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNjYWNoZS11 cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2NhY2hlLXVw ZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiArLQogMjIg ZmlsZXMgY2hhbmdlZCwgNTgzIGluc2VydGlvbnMoKyksIDIzMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGU1YmQwNjJkZTc3Li4zMDc4NTVmZGQ2 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDIxICszNywyNiBAQAog I2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3VidHJh bnMuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv c3lzYXR0ci5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3ZhbGlkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJh c2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIKICNpbmNsdWRlICJj b21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2lu Y2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5j bHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUu aCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nh cnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5q ZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1 dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjgsMTEgKzczLDggQEAgc3RhdGljIHZvaWQg Y2hlY2tfbG9ja19pZl9pbnBsYWNlX3VwZGF0ZWFibGVfcmVsKFJlbGF0aW9uIHJlbGF0aW9u LAogCQkJCQkJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIHZvaWQgY2hlY2tf aW5wbGFjZV9yZWxfbG9jayhIZWFwVHVwbGUgb2xkdHVwKTsKICNlbmRpZgotc3RhdGljIEJp dG1hcHNldCAqSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAot CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29scywKLQkJCQkJCQkJCQkg ICBCaXRtYXBzZXQgKmV4dGVybmFsX2NvbHMsCi0JCQkJCQkJCQkJICAgSGVhcFR1cGxlIG9s ZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkJCQkgICBib29sICpoYXNfZXh0ZXJu YWwpOworc3RhdGljIEJpdG1hcHNldCAqSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVs YXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVw bGUgbmV3dHVwKTsKIHN0YXRpYyBib29sIGhlYXBfYWNxdWlyZV90dXBsb2NrKFJlbGF0aW9u IHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIAkJCQkJCQkJIExvY2tU dXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBi b29sICpoYXZlX3R1cGxlX2xvY2spOwpAQCAtMzMxMiw3ICszMzE0LDcgQEAgc2ltcGxlX2hl YXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRp ZCkKICAqCWhlYXBfdXBkYXRlIC0gcmVwbGFjZSBhIHR1cGxlCiAgKgogICogU2VlIHRhYmxl X3R1cGxlX3VwZGF0ZSgpIGZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgcGFyYW1ldGVycywg ZXhjZXB0IHRoYXQKLSAqIHRoaXMgcm91dGluZSBkaXJlY3RseSB0YWtlcyBhIHR1cGxlIHJh dGhlciB0aGFuIGEgc2xvdC4KKyAqIHRoaXMgcm91dGluZSBkaXJlY3RseSB0YWtlcyBhIGhl YXAgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgogICoKICAqIEluIHRoZSBmYWlsdXJlIGNh c2VzLCB0aGUgcm91dGluZSBmaWxscyAqdG1mZCB3aXRoIHRoZSB0dXBsZSdzIHRfY3RpZCwK ICAqIHRfeG1heCAocmVzb2x2aW5nIGEgcG9zc2libGUgTXVsdGlYYWN0LCBpZiBuZWNlc3Nh cnkpLCBhbmQgdF9jbWF4ICh0aGUgbGFzdApAQCAtMzMyMiwxNyArMzMyNCwxMyBAQCBzaW1w bGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0 YSAqdGlkKQogVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCQkJQ29tbWFu ZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJVE1fRmFpbHVy ZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3Qg TG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKKwkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRf aWR4X2F0dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKQogewogCVRNX1Jlc3VsdAlyZXN1 bHQ7CiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwot CUJpdG1hcHNldCAgKmhvdF9hdHRyczsKLQlCaXRtYXBzZXQgICpzdW1fYXR0cnM7Ci0JQml0 bWFwc2V0ICAqa2V5X2F0dHJzOwotCUJpdG1hcHNldCAgKmlkX2F0dHJzOwotCUJpdG1hcHNl dCAgKmludGVyZXN0aW5nX2F0dHJzOwotCUJpdG1hcHNldCAgKm1vZGlmaWVkX2F0dHJzOwor CUJpdG1hcHNldCAgKmlkeF9hdHRycywKKwkJCSAgICpyaWRfYXR0cnM7CiAJSXRlbUlkCQls cDsKIAlIZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMz NTIsMTMgKzMzNTAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZl X3R1cGxlX2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3Rf dXBkYXRlID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAli b29sCQlrZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsK IAlib29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNr ZWRfbG9ja2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0 ZXJuYWwgPSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJ VHJhbnNhY3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1 aW50MTYJCWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMzODksMzYgKzMzODYsMjEgQEAgaGVh cF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlz dCBvZiBhdHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4K LQkgKgotCSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9y dCBpZiB3ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVw bGUgb24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICog bGlzdCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2Fz ZSwgaWYgd2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZh bnQgc3lzdGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0 byBmZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkg KiBjYWNoZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkg KgotCSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRp dHkgYW5kIGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiBy b3dzIGluIHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9z cyBhbGwgaW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwgYXMKKwkgKiB0aGUgcmVw bGljYSBpZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQg Y29waWVzIG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAq IHJlbGNhY2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3Rf YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJ CQkgICBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVY X0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJ ICBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJz ID0gTlVMTDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVz dGluZ19hdHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRf bWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19h dHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsK LQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRy cywgaWRfYXR0cnMpOworCSAqIE5PVEU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZv cmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3 ZSBhcmUgZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJ ICogY2F0YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUg bGlzdCBsYXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNv cGllcyBvZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCBy ZWxjYWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVk IHRvIGZyZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwly aWRfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhf QVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsKIAogCWJsb2NrID0gSXRlbVBvaW50ZXJHZXRC bG9ja051bWJlcihvdGlkKTsKLQlJTkpFQ1RJT05fUE9JTlQoImhlYXBfdXBkYXRlLWJlZm9y ZS1waW4iLCBOVUxMKTsKKwlJTkpFQ1RJT05fUE9JTlQoInNpbXBsZV9oZWFwX3VwZGF0ZS1i ZWZvcmUtcGluIiwgTlVMTCk7CiAJYnVmZmVyID0gUmVhZEJ1ZmZlcihyZWxhdGlvbiwgYmxv Y2spOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKQEAgLTM0NjksMjAgKzM0 NTEsMTcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJdG1mZC0+Y3RpZCA9ICpvdGlk OwogCQl0bWZkLT54bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJCXRtZmQtPmNtYXgg PSBJbnZhbGlkQ29tbWFuZElkOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCi0J CWJtc19mcmVlKGhvdF9hdHRycyk7Ci0JCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JCWJtc19m cmVlKGtleV9hdHRycyk7Ci0JCWJtc19mcmVlKGlkX2F0dHJzKTsKLQkJLyogbW9kaWZpZWRf YXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAqLwotCQlibXNfZnJlZShpbnRlcmVzdGluZ19h dHRycyk7CisJCWJtc19mcmVlKHJpZF9hdHRycyk7CisJCWJtc19mcmVlKGlkeF9hdHRycyk7 CisJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBpcyBvd25lZCBieSB0aGUgY2FsbGVyLCBkb24n dCBmcmVlIGl0ICovCisKIAkJcmV0dXJuIFRNX0RlbGV0ZWQ7CiAJfQogCiAJLyoKLQkgKiBG aWxsIGluIGVub3VnaCBkYXRhIGluIG9sZHR1cCBmb3IgSGVhcERldGVybWluZUNvbHVtbnNJ bmZvIHRvIHdvcmsKLQkgKiBwcm9wZXJseS4KKwkgKiBGaWxsIGluIGVub3VnaCBkYXRhIGlu IG9sZHR1cCB0byBkZXRlcm1pbmUgcmVwbGljYSBpZGVudGl0eSBhdHRyaWJ1dGUKKwkgKiBy ZXF1aXJlbWVudHMuCiAJICovCiAJb2xkdHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKTsKIAlvbGR0dXAudF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFn ZUdldEl0ZW0ocGFnZSwgbHApOwpAQCAtMzQ5MywxNiArMzQ3Miw1OSBAQCBoZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFw VHVwbGUgbmV3dHVwLAogCW5ld3R1cC0+dF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQo cmVsYXRpb24pOwogCiAJLyoKLQkgKiBEZXRlcm1pbmUgY29sdW1ucyBtb2RpZmllZCBieSB0 aGUgdXBkYXRlLiAgQWRkaXRpb25hbGx5LCBpZGVudGlmeQotCSAqIHdoZXRoZXIgYW55IG9m IHRoZSB1bm1vZGlmaWVkIHJlcGxpY2EgaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMgaW4gdGhl Ci0JICogb2xkIHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVkIG9yIG5vdC4gIFRoaXMgaXMg cmVxdWlyZWQgYmVjYXVzZSBmb3IKLQkgKiBzdWNoIGF0dHJpYnV0ZXMgdGhlIGZsYXR0ZW5l ZCB2YWx1ZSB3b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQgb2YgdGhlCi0JICogbmV3IHR1 cGxlIHNvIHdlIG11c3QgaW5jbHVkZSBpdCBhcyBwYXJ0IG9mIHRoZSBvbGRfa2V5X3R1cGxl LiAgU2VlCi0JICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4KKwkgKiBFeHRyYWN0UmVwbGlj YUlkZW50aXR5KCkgbmVlZHMgdG8ga25vdyBpZiBhIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmJ1 dGUKKwkgKiBpcyB1c2VkIGFzIGEgcmVwbGljYSBpbmRlbnRpdHkgb3IgaWYgYW55IG9mIHRo ZSByZXBsaWNhIGlkZW50aXR5CisJICogYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBpbiBh biBpbmRleCwgdW5tb2RpZmllZCwgYW5kIGFyZSBzdG9yZWQKKwkgKiBleHRlcm5hbGx5IGlu IHRoZSBvbGQgdHVwbGUgYmVpbmcgcmVwbGFjZWQuICBJbiB0aG9zZSBjYXNlcyBpdCBtYXkg YmUKKwkgKiBuZWNlc3NhcnkgdG8gV0FMIGxvZyB0aGVtIHRvIHNvIHRoZXkgYXJlIGF2YWls YWJsZSB0byByZXBsaWNhcy4KIAkgKi8KLQltb2RpZmllZF9hdHRycyA9IEhlYXBEZXRlcm1p bmVDb2x1bW5zSW5mbyhyZWxhdGlvbiwgaW50ZXJlc3RpbmdfYXR0cnMsCi0JCQkJCQkJCQkJ CSAgaWRfYXR0cnMsICZvbGR0dXAsCi0JCQkJCQkJCQkJCSAgbmV3dHVwLCAmaWRfaGFzX2V4 dGVybmFsKTsKKwlyZXBfaWRfa2V5X3JlcXVpcmVkID0gYm1zX292ZXJsYXAobW9kaWZpZWRf aWR4X2F0dHJzLCByaWRfYXR0cnMpOworCWlmICghcmVwX2lkX2tleV9yZXF1aXJlZCkKKwl7 CisJCUJpdG1hcHNldCAgKmF0dHJzOworCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IocmVsYXRpb24pOworCQlpbnQJCQlhdHRpZHggPSAtMTsKKworCQkvKgorCQkg KiBSZWR1Y2UgdGhlIHNldCB1bmRlciByZXZpZXcgdG8gb25seSB0aGUgdW5tb2RpZmllZCBp bmRleGVkIHJlcGxpY2EKKwkJICogaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMuICBpZHhfYXR0 cnMgaXMgY29waWVkIChieSBibXNfZGlmZmVyZW5jZSgpKQorCQkgKiBub3QgbW9kaWZpZWQg aGVyZS4KKwkJICovCisJCWF0dHJzID0gYm1zX2RpZmZlcmVuY2UoaWR4X2F0dHJzLCBtb2Rp ZmllZF9pZHhfYXR0cnMpOworCQlhdHRycyA9IGJtc19pbnRfbWVtYmVycyhhdHRycywgcmlk X2F0dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywg YXR0aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2Vk LCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlB dHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkv KgorCQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FU VFJfQklUTUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLwor CQkJQXNzZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9s ZHR1cCwgYXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8g Y2hlY2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJ CQlpZiAoaXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0 cm51bSAtIDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNr IGlmIHRoZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8K KwkJCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0 UG9pbnRlcih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVl OworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAog CS8qCiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNh biBncmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTM1MTUsOSArMzUzNyw4IEBAIGhlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxh dGUga2V5IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFy cml2ZSBhdCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAo bW9kaWZpZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBs ZU5vS2V5RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNs dXNpdmU7CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwog CQlrZXlfaW50YWN0ID0gdHJ1ZTsKIApAQCAtMzUzNCw3ICszNTU1LDcgQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxl RXhjbHVzaXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsK IAkJbXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0 ID0gZmFsc2U7CiAJfQpAQCAtMzYxMyw3ICszNjM0LDcgQEAgbDI6CiAJCQlib29sCQljdXJy ZW50X2lzX21lbWJlciA9IGZhbHNlOwogCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxp Y3QoKE11bHRpWGFjdElkKSB4d2FpdCwgaW5mb21hc2ssCi0JCQkJCQkJCQkJKmxvY2ttb2Rl LCAmY3VycmVudF9pc19tZW1iZXIpKQorCQkJCQkJCQkJCWxvY2ttb2RlLCAmY3VycmVudF9p c19tZW1iZXIpKQogCQkJewogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19V TkxPQ0spOwogCkBAIC0zNjIyLDcgKzM2NDMsNyBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5n IGEgbG9jayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkg Ki8KIAkJCQlpZiAoIWN1cnJlbnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVw bG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFw X2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUs CiAJCQkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJ Lyogd2FpdCBmb3IgbXVsdGl4YWN0ICovCkBAIC0zNzA3LDcgKzM3MjgsNyBAQCBsMjoKIAkJ CSAqIGxvY2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19V TkxPQ0spOwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRf c2VsZiksICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAm KG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZo YXZlX3R1cGxlX2xvY2spOwogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9u LCAmb2xkdHVwLnRfc2VsZiwKIAkJCQkJCQkgIFhMVFdfVXBkYXRlKTsKQEAgLTM3NjcsMTcg KzM3ODgsMTQgQEAgbDI6CiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQot CQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9j a21vZGUpOworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3Nl bGYpLCBsb2NrbW9kZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQogCQkJ UmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7 CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQkJ Ym1zX2ZyZWUoa2V5X2F0dHJzKTsKLQkJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCQlibXNfZnJl ZShtb2RpZmllZF9hdHRycyk7Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJ Ym1zX2ZyZWUocmlkX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJzKTsKKwkJLyogbW9k aWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQg Ki8KKwogCQlyZXR1cm4gcmVzdWx0OwogCX0KIApAQCAtMzgwNyw3ICszODI1LDcgQEAgbDI6 CiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4 KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywK IAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2syLAotCQkJCQkJCSAgeGlkLCAq bG9ja21vZGUsIHRydWUsCisJCQkJCQkJICB4aWQsIGxvY2ttb2RlLCB0cnVlLAogCQkJCQkJ CSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5mb21hc2tfb2xkX3R1cGxlLAogCQkJCQkJCSAgJmlu Zm9tYXNrMl9vbGRfdHVwbGUpOwogCkBAIC0zOTI0LDcgKzM5NDIsNyBAQCBsMjoKIAkJY29t cHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1 cC50X2RhdGEpLAogCQkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2ssCiAJCQkJ CQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzazIsCi0JCQkJCQkJCSAgeGlkLCAqbG9j a21vZGUsIGZhbHNlLAorCQkJCQkJCQkgIHhpZCwgbG9ja21vZGUsIGZhbHNlLAogCQkJCQkJ CQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAmaW5mb21hc2tfbG9ja19vbGRfdHVwbGUsCiAJ CQkJCQkJCSAgJmluZm9tYXNrMl9sb2NrX29sZF90dXBsZSk7CiAKQEAgLTQwODYsMTAgKzQx MDQsMTEgQEAgbDI6CiAKIAkvKgogCSAqIEF0IHRoaXMgcG9pbnQgbmV3YnVmIGFuZCBidWZm ZXIgYXJlIGJvdGggcGlubmVkIGFuZCBsb2NrZWQsIGFuZCBuZXdidWYKLQkgKiBoYXMgZW5v dWdoIHNwYWNlIGZvciB0aGUgbmV3IHR1cGxlLiAgSWYgdGhleSBhcmUgdGhlIHNhbWUgYnVm ZmVyLCBvbmx5Ci0JICogb25lIHBpbiBpcyBoZWxkLgorCSAqIGhhcyBlbm91Z2ggc3BhY2Ug Zm9yIHRoZSBuZXcgdHVwbGUgc28gd2UgY2FuIHVzZSB0aGUgSE9UIHVwZGF0ZSBwYXRoIGlm CisJICogdGhlIGNhbGxlciBkZXRlcm1pbmVkIHRoYXQgaXQgaXMgYWxsb3dhYmxlLgorCSAq CisJICogTk9URTogSWYgbmV3YnVmID09IGJ1ZmZlciB0aGVuIG9ubHkgb25lIHBpbiBpcyBo ZWxkLgogCSAqLwotCiAJaWYgKG5ld2J1ZiA9PSBidWZmZXIpCiAJewogCQkvKgpAQCAtNDA5 NywyMCArNDExNiw4IEBAIGwyOgogCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBDaGVjayBp ZiBhbnkgb2YgdGhlIGluZGV4IGNvbHVtbnMgaGF2ZSBiZWVuCiAJCSAqIGNoYW5nZWQuCiAJ CSAqLwotCQlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBob3RfYXR0cnMpKQot CQl7CisJCWlmIChob3RfYWxsb3dlZCkKIAkJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKLQot CQkJLyoKLQkJCSAqIElmIG5vbmUgb2YgdGhlIGNvbHVtbnMgdGhhdCBhcmUgdXNlZCBpbiBo b3QtYmxvY2tpbmcgaW5kZXhlcwotCQkJICogd2VyZSB1cGRhdGVkLCB3ZSBjYW4gYXBwbHkg SE9ULCBidXQgd2UgZG8gc3RpbGwgbmVlZCB0byBjaGVjawotCQkJICogaWYgd2UgbmVlZCB0 byB1cGRhdGUgdGhlIHN1bW1hcml6aW5nIGluZGV4ZXMsIGFuZCB1cGRhdGUgdGhvc2UKLQkJ CSAqIGluZGV4ZXMgaWYgdGhlIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBvciB3ZSBtYXkgZmFp bCB0byBkZXRlY3QKLQkJCSAqIGUuZy4gdmFsdWUgYm91bmQgY2hhbmdlcyBpbiBCUklOIG1p bm1heCBpbmRleGVzLgotCQkJICovCi0JCQlpZiAoYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0 cnMsIHN1bV9hdHRycykpCi0JCQkJc3VtbWFyaXplZF91cGRhdGUgPSB0cnVlOwotCQl9CiAJ fQogCWVsc2UKIAl7CkBAIC00MTI2LDggKzQxMzMsNyBAQCBsMjoKIAkgKiBjb2x1bW5zIGFy ZSBtb2RpZmllZCBvciBpdCBoYXMgZXh0ZXJuYWwgZGF0YS4KIAkgKi8KIAlvbGRfa2V5X3R1 cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxhdGlvbiwgJm9sZHR1cCwKLQkJCQkJ CQkJCQkgICBibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgaWRfYXR0cnMpIHx8Ci0JCQkJ CQkJCQkJICAgaWRfaGFzX2V4dGVybmFsLAorCQkJCQkJCQkJCSAgIHJlcF9pZF9rZXlfcmVx dWlyZWQsCiAJCQkJCQkJCQkJICAgJm9sZF9rZXlfY29waWVkKTsKIAogCS8qIE5PIEVSRVBP UlQoRVJST1IpIGZyb20gaGVyZSB0aWxsIGNoYW5nZXMgYXJlIGxvZ2dlZCAqLwpAQCAtNDI1 Niw3ICs0MjYyLDcgQEAgbDI6CiAJICogUmVsZWFzZSB0aGUgbG1nciB0dXBsZSBsb2NrLCBp ZiB3ZSBoYWQgaXQuCiAJICovCiAJaWYgKGhhdmVfdHVwbGVfbG9jaykKLQkJVW5sb2NrVHVw bGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOworCQlV bmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2Rl KTsKIAogCXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShyZWxhdGlvbiwgdXNlX2hvdF91cGRh dGUsIG5ld2J1ZiAhPSBidWZmZXIpOwogCkBAIC00MjcwLDMxICs0Mjc2LDEyIEBAIGwyOgog CQloZWFwX2ZyZWV0dXBsZShoZWFwdHVwKTsKIAl9CiAKLQkvKgotCSAqIElmIGl0IGlzIGEg SE9UIHVwZGF0ZSwgdGhlIHVwZGF0ZSBtYXkgc3RpbGwgbmVlZCB0byB1cGRhdGUgc3VtbWFy aXplZAotCSAqIGluZGV4ZXMsIGxlc3Qgd2UgZmFpbCB0byB1cGRhdGUgdGhvc2Ugc3VtbWFy aWVzIGFuZCBnZXQgaW5jb3JyZWN0Ci0JICogcmVzdWx0cyAoZm9yIGV4YW1wbGUsIG1pbm1h eCBib3VuZHMgb2YgdGhlIGJsb2NrIG1heSBjaGFuZ2Ugd2l0aCB0aGlzCi0JICogdXBkYXRl KS4KLQkgKi8KLQlpZiAodXNlX2hvdF91cGRhdGUpCi0JewotCQlpZiAoc3VtbWFyaXplZF91 cGRhdGUpCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKLQkJZWxzZQot CQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKLQl9Ci0JZWxzZQotCQkqdXBkYXRlX2lu ZGV4ZXMgPSBUVV9BbGw7Ci0KIAlpZiAob2xkX2tleV90dXBsZSAhPSBOVUxMICYmIG9sZF9r ZXlfY29waWVkKQogCQloZWFwX2ZyZWV0dXBsZShvbGRfa2V5X3R1cGxlKTsKIAotCWJtc19m cmVlKGhvdF9hdHRycyk7Ci0JYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQlibXNfZnJlZShrZXlf YXR0cnMpOwotCWJtc19mcmVlKGlkX2F0dHJzKTsKLQlibXNfZnJlZShtb2RpZmllZF9hdHRy cyk7Ci0JYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCWJtc19mcmVlKHJpZF9hdHRy cyk7CisJYm1zX2ZyZWUoaWR4X2F0dHJzKTsKKwkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMg b3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLwogCiAJcmV0dXJuIFRNX09r OwogfQpAQCAtNDQ2NywyOCArNDQ1NCwxMTUgQEAgaGVhcF9hdHRyX2VxdWFscyhUdXBsZURl c2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUyLAog fQogCiAvKgotICogQ2hlY2sgd2hpY2ggY29sdW1ucyBhcmUgYmVpbmcgdXBkYXRlZC4KLSAq Ci0gKiBHaXZlbiBhbiB1cGRhdGVkIHR1cGxlLCBkZXRlcm1pbmUgKGFuZCByZXR1cm4gaW50 byB0aGUgb3V0cHV0IGJpdG1hcHNldCksCi0gKiBmcm9tIHRob3NlIGxpc3RlZCBhcyBpbnRl cmVzdGluZywgdGhlIHNldCBvZiBjb2x1bW5zIHRoYXQgY2hhbmdlZC4KLSAqCi0gKiBoYXNf ZXh0ZXJuYWwgaW5kaWNhdGVzIGlmIGFueSBvZiB0aGUgdW5tb2RpZmllZCBhdHRyaWJ1dGVz IChmcm9tIHRob3NlCi0gKiBsaXN0ZWQgYXMgaW50ZXJlc3RpbmcpIG9mIHRoZSBvbGQgdHVw bGUgaXMgYSBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQgaXMKLSAqIHN0b3JlZCBleHRl cm5hbGx5LgorICogSE9UIHVwZGF0ZXMgYXJlIHBvc3NpYmxlIHdoZW4gZWl0aGVyOiBhKSB0 aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXhlZAorICogYXR0cmlidXRlcywgb3IgYikgdGhl IG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJlIGFsbCBvbiBzdW1tYXJpemluZyBpbmRleGVzLgor ICogTGF0ZXIsIGluIGhlYXBfdXBkYXRlKCksIHdlIGNhbiBjaG9vc2UgdG8gcGVyZm9ybSBh IEhPVCB1cGRhdGUgaWYgdGhlcmUgaXMKKyAqIHNwYWNlIG9uIHRoZSBwYWdlIGZvciB0aGUg bmV3IHR1cGxlIGFuZCB0aGUgZm9sbG93aW5nIGNvZGUgaGFzIGRldGVybWluZWQKKyAqIHRo YXQgSE9UIGlzIGFsbG93ZWQuCisgKi8KK2Jvb2wKK0hlYXBVcGRhdGVIb3RBbGxvd2FibGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LAorCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpCit7CisJYm9vbAkJaG90X2FsbG93 ZWQ7CisKKwkvKgorCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5kIHN0YXJ0IG9mZiBieSBh c3N1bWluZyB0aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCisJICogbmVlZCB1cGRhdGluZyBh bmQgSE9UIGlzIGFsbG93YWJsZS4KKwkgKi8KKwlob3RfYWxsb3dlZCA9IHRydWU7CisJKnN1 bW1hcml6ZWRfb25seSA9IGZhbHNlOworCisJLyoKKwkgKiBDaGVjayBmb3IgY2FzZSAoYSk7 IHdoZW4gdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgSE9UIGlzCisJ ICogYWxsb3dlZC4KKwkgKi8KKwlpZiAoYm1zX2lzX2VtcHR5KG1vZGlmaWVkX2lkeF9hdHRy cykpCisJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwllbHNlCisJeworCQlCaXRtYXBzZXQgICpz dW1fYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJ CQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7CisKKwkJLyoKKwkJ ICogQXQgbGVhc3Qgb25lIGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQsIGJ1dCBpcyB0 aGlzIGNhc2UgKGIpCisJCSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5kZXggYXR0cmli dXRlcyBhcmUgb25seSB1c2VkIGJ5IHN1bW1hcml6aW5nCisJCSAqIGluZGV4ZXM/ICBJZiBp dCBpcywgdGhlbiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aG9zZSBpbmRleGVzLCBidXQgdGhpcwor CQkgKiB1cGRhdGUgY2FuIHN0aWxsIGJlIGNvbnNpZGVyZWQgaGVhcC1vbmx5IChIT1QpIGFu ZCBhdm9pZCB1cGRhdGluZworCQkgKiBhbnkgbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgb24g dGhlIHJlbGF0aW9uLgorCQkgKi8KKwkJaWYgKGJtc19pc19zdWJzZXQobW9kaWZpZWRfaWR4 X2F0dHJzLCBzdW1fYXR0cnMpKQorCQl7CisJCQlob3RfYWxsb3dlZCA9IHRydWU7CisJCQkq c3VtbWFyaXplZF9vbmx5ID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkg KiBOb3cgd2Uga25vdyBhKSBvbmUgb3IgbW9yZSBpbmRleGVkIGF0dHJpYnV0ZXMgd2VyZSBt b2RpZmllZAorCQkJICogKGNoYW5nZWQgdmFsdWUsIG5vdCBqdXN0IHJlZmVyZW5jZWQgd2l0 aGluIHRoZSBVUERBVEUpIGFuZCB0aGF0CisJCQkgKiBiKSBhdCBsZWFzdCBvbmUgb2YgdGhv c2UgYXR0cmlidXRlcyBpcyB1c2VkIGJ5IGEgbm9uLXN1bW1hcml6aW5nCisJCQkgKiBpbmRl eC4gSE9UIGlzIG5vdCBhbGxvd2VkLgorCQkJICovCisJCQlob3RfYWxsb3dlZCA9IGZhbHNl OworCQl9CisKKwkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKKwl9CisKKwlyZXR1cm4gaG90X2Fs bG93ZWQ7Cit9CisKKy8qCisgKiBJZiB3ZSdyZSBub3QgdXBkYXRpbmcgYW55IGF0dHJpYnV0 ZXMgdXNlZCB3aGVuIGZvcm1pbmcgdGhlIGluZGV4IGtleXMgd2UgY2FuCisgKiBncmFiIGEg d2Vha2VyIGxvY2sgdHlwZS4gVGhpcyBhbGxvd3MgZm9yIG1vcmUgY29uY3VycmVuY3kgd2hl biB3ZSBhcmUKKyAqIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHkgd2l0aCBmb3JlaWduIGtleSBj aGVja3MuCisgKi8KK0xvY2tUdXBsZU1vZGUKK0hlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9k ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0 cnMpCit7CisJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1c2l2ZTsK KworCUJpdG1hcHNldCAgKmtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CisK KwlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywga2V5X2F0dHJzKSkKKwkJ bG9ja21vZGUgPSBMb2NrVHVwbGVOb0tleUV4Y2x1c2l2ZTsKKworCWJtc19mcmVlKGtleV9h dHRycyk7CisKKwlyZXR1cm4gbG9ja21vZGU7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBCaXRt YXBzZXQgdGhhdCBjb250YWlucyB0aGUgc2V0IG9mIG1vZGlmaWVkIChjaGFuZ2VkKSBpbmRl eGVkCisgKiBhdHRyaWJ1dGVzIGJldHdlZW4gb2xkdHVwIGFuZCBuZXd0dXAuCiAgKi8KIHN0 YXRpYyBCaXRtYXBzZXQgKgotSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJl bGF0aW9uLAotCQkJCQkJIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29scywKLQkJCQkJCSBC aXRtYXBzZXQgKmV4dGVybmFsX2NvbHMsCi0JCQkJCQkgSGVhcFR1cGxlIG9sZHR1cCwgSGVh cFR1cGxlIG5ld3R1cCwKLQkJCQkJCSBib29sICpoYXNfZXh0ZXJuYWwpCitIZWFwVXBkYXRl TW9kaWZpZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cCwg SGVhcFR1cGxlIG5ld3R1cCkKIHsKIAlpbnQJCQlhdHRpZHg7Ci0JQml0bWFwc2V0ICAqbW9k aWZpZWQgPSBOVUxMOworCUJpdG1hcHNldCAgKmF0dHJzLAorCQkJICAgKm1vZGlmaWVkX2lk eF9hdHRycyA9IE5VTEw7CiAJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KHJlbGF0aW9uKTsKIAorCS8qIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9z cyBhbGwgaW5kZXhlcyBmb3IgdGhpcyByZWxhdGlvbiAqLworCWF0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQp OworCisJLyogTm8gaW5kZXhlZCBhdHRyaWJ1dGVzLCB3ZSdyZSBkb25lICovCisJaWYgKGJt c19pc19lbXB0eShhdHRycykpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBUaGlzIGhl YXAgdXBkYXRlIGZ1bmN0aW9uIGlzIHVzZWQgb3V0c2lkZSB0aGUgZXhlY3V0b3IgYW5kIHNv IHVubGlrZQorCSAqIGhlYXBhbV90dXBsZV91cGRhdGUoKSB3aGVyZSB0aGVyZSBpcyBSZXN1 bHRSZWxJbmZvIGFuZCBFU3RhdGUgdG8KKwkgKiBwcm92aWRlIHRoZSBjb25jaXNlIHNldCBv ZiBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkCisJICogKHZpYSBF eGVjR2V0QWxsVXBkYXRlZENvbHMoKSkgd2Ugc2ltcGx5IGNoZWNrIGFsbCBpbmRleGVkIGF0 dHJpYnV0ZXMgdG8KKwkgKiBmaW5kIHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAg VGhhdCdzIHRoZSAibW9kaWZpZWQgaW5kZXhlZAorCSAqIGF0dHJpYnV0ZXMiIG9yICJtb2Rp ZmllZF9pZHhfYXR0cnMiLgorCSAqLwogCWF0dGlkeCA9IC0xOwotCXdoaWxlICgoYXR0aWR4 ID0gYm1zX25leHRfbWVtYmVyKGludGVyZXN0aW5nX2NvbHMsIGF0dGlkeCkpID49IDApCisJ d2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDAp CiAJewogCQkvKiBhdHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFs IGF0dHJpYnV0ZSBudW1iZXIgKi8KIAkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsg Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKQEAgLTQ1MDQsNyArNDU3OCw3 IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJICov CiAJCWlmIChhdHRybnVtID09IDApCiAJCXsKLQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1i ZXIobW9kaWZpZWQsIGF0dGlkeCk7CisJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRk X21lbWJlcihtb2RpZmllZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJCQljb250aW51ZTsKIAkJ fQogCkBAIC00NTE3LDcgKzQ1OTEsNyBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVs YXRpb24gcmVsYXRpb24sCiAJCXsKIAkJCWlmIChhdHRybnVtICE9IFRhYmxlT2lkQXR0cmli dXRlTnVtYmVyKQogCQkJewotCQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZp ZWQsIGF0dGlkeCk7CisJCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXIo bW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQl9 CkBAIC00NTMzLDI5ICs0NjA3LDEyIEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxh dGlvbiByZWxhdGlvbiwKIAogCQlpZiAoIWhlYXBfYXR0cl9lcXVhbHModHVwZGVzYywgYXR0 cm51bSwgdmFsdWUxLAogCQkJCQkJCSAgdmFsdWUyLCBpc251bGwxLCBpc251bGwyKSkKLQkJ ewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsKLQkJ CWNvbnRpbnVlOwotCQl9Ci0KLQkJLyoKLQkJICogTm8gbmVlZCB0byBjaGVjayBhdHRyaWJ1 dGVzIHRoYXQgY2FuJ3QgYmUgc3RvcmVkIGV4dGVybmFsbHkuIE5vdGUKLQkJICogdGhhdCBz eXN0ZW0gYXR0cmlidXRlcyBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4KLQkJICovCi0J CWlmIChhdHRybnVtIDwgMCB8fCBpc251bGwxIHx8Ci0JCQlUdXBsZURlc2NDb21wYWN0QXR0 cih0dXBkZXNjLCBhdHRybnVtIC0gMSktPmF0dGxlbiAhPSAtMSkKLQkJCWNvbnRpbnVlOwot Ci0JCS8qCi0JCSAqIENoZWNrIGlmIHRoZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3Rv cmVkIGV4dGVybmFsbHkgYW5kIGlzIGEKLQkJICogbWVtYmVyIG9mIGV4dGVybmFsX2NvbHMu Ci0JCSAqLwotCQlpZiAoVkFSQVRUX0lTX0VYVEVSTkFMKCh2YXJsZW5hICopIERhdHVtR2V0 UG9pbnRlcih2YWx1ZTEpKSAmJgotCQkJYm1zX2lzX21lbWJlcihhdHRpZHgsIGV4dGVybmFs X2NvbHMpKQotCQkJKmhhc19leHRlcm5hbCA9IHRydWU7CisJCQltb2RpZmllZF9pZHhfYXR0 cnMgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJfQog Ci0JcmV0dXJuIG1vZGlmaWVkOworCWJtc19mcmVlKGF0dHJzKTsKKworCXJldHVybiBtb2Rp ZmllZF9pZHhfYXR0cnM7CiB9CiAKIC8qCkBAIC00NTY3LDE3ICs0NjI0LDExMiBAQCBIZWFw RGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAgKiB2aWEgZXJlcG9y dCgpLgogICovCiB2b2lkCi1zaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24s IGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cCwKK3NpbXBsZV9o ZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpv dGlkLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJICAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWlsdXJlRGF0YSB0bWZk OwogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJ QnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICpic2xvdDsKKwlIZWFwVHVwbGUJb2xkdHVwOwor CWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOworCUJpdG1hcHNldCAgKmlkeF9hdHRycywKKwkJ CSAgICptb2RpZmllZF9pZHhfYXR0cnM7CisJYm9vbAkJaG90X2FsbG93ZWQsCisJCQkJc3Vt bWFyaXplZF9vbmx5OworCUJ1ZmZlcgkJYnVmZmVyOwogCi0JcmVzdWx0ID0gaGVhcF91cGRh dGUocmVsYXRpb24sIG90aWQsIHR1cCwKLQkJCQkJCSBHZXRDdXJyZW50Q29tbWFuZElkKHRy dWUpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQg Ki8gLAotCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwlBc3Nl cnQoSXRlbVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKKworCS8qCisJICogRmV0Y2ggdGhpcyBi aXRtYXAgb2YgaW50ZXJlc3RpbmcgYXR0cmlidXRlcyBmcm9tIHJlbGNhY2hlIGJlZm9yZQor CSAqIG9idGFpbmluZyBhIGJ1ZmZlciBsb2NrIGJlY2F1c2UgaWYgd2UgYXJlIGRvaW5nIGFu IHVwZGF0ZSBvbiBvbmUgb2YgdGhlCisJICogcmVsZXZhbnQgc3lzdGVtIGNhdGFsb2dzIHdl IGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGVtCisJICogbGF0ZXIgb24u IFJlbGNhY2hlIHdpbGwgcmV0dXJuIGNvcGllcyBvZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVl ZCBub3QKKwkgKiB3b3JyeSBhYm91dCByZWxjYWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5 IHRocm91Z2ggdGhpcyBvcGVyYXRpb24uCisJICovCisJaWR4X2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQp OworCisJSU5KRUNUSU9OX1BPSU5UKCJzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIs IE5VTEwpOworCisJLyoKKwkgKiBUbyB1cGRhdGUgYSBoZWFwIHR1cGxlIHdlIG5lZWQgdG8g ZmluZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzICgibW9k aWZpZWRfaWR4X2F0dHJzIikgYW5kIHVzZSB0aGF0IHRvIGRldGVybWluZSBpZiBhIEhPVAor CSAqIHVwZGF0ZSBpcyBhbGxvd2FibGUgb3Igbm90LiBXaGVuIHVwZGF0aW5nIGhlYXAgdHVw bGVzIHZpYSBleGVjdXRpb24gb2YKKwkgKiBVUERBVEUgc3RhdGVtZW50cyB0aGlzIHNldCBp cyBjb25zdHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSB0YWJsZQorCSAqIEFNJ3Mg dXBkYXRlIGZ1bmN0aW9uIGJ5IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgd2hpY2gg Y29tcGFyZXMgdGhlCisJICogb2xkL25ldyBUdXBsZVRhYmxlU2xvdHMuCisJICoKKwkgKiBI ZXJlIHRoaW5ncyBhcmUgYSBiaXQgZGlmZmVyZW50LCB3ZSBoYXZlIHRoZSBvbGQgVElEIGFu ZCB0aGUgbmV3IHR1cGxlLAorCSAqIG5vdCB0d28gVHVwbGVUYWJsZVNsb3RzLCBidXQgd2Ug c3RpbGwgbmVlZCB0byBjb25zdHJ1Y3QgYSBzaW1pbGFyIGJpdG1hcAorCSAqIHNvIGFzIHRv IGJlIGFibGUgdG8ga25vdyBpZiBIT1QgdXBkYXRlcyBhcmUgYWxsb3dlZCBvciBub3QuCisJ ICoKKwkgKiBUbyBkbyB0aGF0IHdlIGZpcnN0IGhhdmUgdG8gZmV0Y2ggdGhlIG9sZCB0dXBs ZSBpdHNlbGYsIGJ1dCBiZWNhdXNlCisJICogaGVhcGFtX2ZldGNoX3Jvd192ZXJzaW9uKCkg aXMgc3RhdGljLCB3ZSByZXBsaWNhdGUgaW4gcGFydCB0aGF0IGNvZGUKKwkgKiBoZXJlLgor CSAqCisJICogVGhpcyBpcyBhIGJpdCByZXBldGl0aXZlIGJlY2F1c2UgaGVhcF91cGRhdGUo KSB3aWxsIGFnYWluIGZpbmQgYW5kIGZvcm0KKwkgKiB0aGUgb2xkIEhlYXBUdXBsZSBmcm9t IHRoZSBvbGQgVElEIGFuZCBpbiBtb3N0IGNhc2VzIHRoZSBjYWxsZXJzCisJICogKGlnbm9y aW5nIGV4dGVuc2lvbnMsIGFyZSBhbHdheXMgY2F0YWxvZyB0dXBsZSB1cGRhdGVzKSBhbHJl YWR5IGhhZCB0aGUKKwkgKiBzZXQgb2YgY2hhbmdlZCBhdHRyaWJ1dGVzICh0aGUgInJlcGxh Y2VzIiBhcnJheSksIGJ1dCBmb3Igbm93IHRoaXMgbWlub3IKKwkgKiByZXBldGl0aW9uIG9m IHdvcmsgaXMgbmVjZXNzYXJ5LgorCSAqLworCXNsb3QgPSBNYWtlVHVwbGVUYWJsZVNsb3Qo UmVsYXRpb25HZXREZXNjcihyZWxhdGlvbiksICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUsIDAp OworCWJzbG90ID0gKEJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqKSBzbG90OworCisJLyoK KwkgKiBTZXQgdGhlIFRJRCBpbiB0aGUgc2xvdCBhbmQgdGhlbiBmZXRjaCB0aGUgb2xkIHR1 cGxlIHNvIHdlIGNhbiBleGFtaW5lCisJICogaXQKKwkgKi8KKwlic2xvdC0+YmFzZS50dXBk YXRhLnRfc2VsZiA9ICpvdGlkOworCWlmICghaGVhcF9mZXRjaChyZWxhdGlvbiwgU25hcHNo b3RBbnksICZic2xvdC0+YmFzZS50dXBkYXRhLCAmYnVmZmVyLCBmYWxzZSkpCisJeworCQkv KgorCQkgKiBoZWFwX3VwZGF0ZSgpIGNoZWNrcyBmb3IgIUl0ZW1JZElzTm9ybWFsKGxwKSBh bmQgd2lsbCByZXR1cm4gZmFsc2UKKwkJICogaW4gdGhvc2UgY2FzZXMuCisJCSAqLworCQlB c3NlcnQoUmVsYXRpb25TdXBwb3J0c1N5c0NhY2hlKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRp b24pKSk7CisKKwkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKKworCQkvKiBtb2RpZmll ZF9pZHhfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAqLworCQlibXNfZnJlZShpZHhfYXR0 cnMpOworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJCWVsb2co RVJST1IsICJ0dXBsZSBjb25jdXJyZW50bHkgZGVsZXRlZCIpOworCisJCXJldHVybjsKKwl9 CisKKwlBc3NlcnQoYnVmZmVyICE9IEludmFsaWRCdWZmZXIpOworCisJLyogU3RvcmUgaW4g c2xvdCwgdHJhbnNmZXJyaW5nIGV4aXN0aW5nIHBpbiAqLworCUV4ZWNTdG9yZVBpbm5lZEJ1 ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsKKwlv bGR0dXAgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCAmc2hvdWxkRnJl ZSk7CisKKwltb2RpZmllZF9pZHhfYXR0cnMgPSBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZWxhdGlvbiwgb2xkdHVwLCB0dXBsZSk7CisJbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0 ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisJaG90X2Fs bG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhf YXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVs YXRpb24sIG90aWQsIHR1cGxlLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAorCQkJCQkJ IEludmFsaWRTbmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAorCQkJCQkJ ICZ0bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7CisK KwlpZiAoc2hvdWxkRnJlZSkKKwkJaGVhcF9mcmVldHVwbGUob2xkdHVwKTsKKworCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KworCS8qCisJICogRGVjaWRlIHdoZXRoZXIgbmV3IGluZGV4IGVudHJpZXMgYXJlIG5lZWRl ZCBmb3IgdGhlIHR1cGxlCisJICoKKwkgKiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdl IG11c3QgdXBkYXRlIGFsbCBpbmRleGVzLiBJZiB0aGUgdXBkYXRlIGlzCisJICogSE9ULCBp dCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBl aXRoZXIKKwkgKiB1cGRhdGUgb25seSBzdW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQg YWxsLgorCSAqLworCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAJc3dpdGNoIChyZXN1 bHQpCiAJewogCQljYXNlIFRNX1NlbGZNb2RpZmllZDoKQEAgLTQ1ODcsNiArNDczOSwxMCBA QCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCiAJCWNhc2UgVE1fT2s6CiAJCQkvKiBk b25lIHN1Y2Nlc3NmdWxseSAqLworCQkJaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxl KSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CisJCQllbHNlIGlmIChzdW1tYXJp emVkX29ubHkpCisJCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFyaXppbmc7CiAJCQli cmVhazsKIAogCQljYXNlIFRNX1VwZGF0ZWQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwppbmRleCAyNTNhNzM1YjZjMS4uMzcyNmM4NjdjNjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjcsNyArMjcs NiBAQAogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90 YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RzbWFwaS5oIgotI2luY2x1ZGUgImFjY2Vz cy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRl ICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCkBAIC0z MjUsMTkgKzMyNCwyNiBAQCBoZWFwYW1fdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBjaWQsCiBzdGF0aWMgVE1fUmVzdWx0CiBo ZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlk LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJQ29tbWFuZElkIGNpZCwgU25hcHNob3Qg c25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJCWJvb2wgd2FpdCwgVE1fRmFp bHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJl RGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCWNvbnN0IEJpdG1h cHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5k ZXhlcykKIHsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKIAlIZWFwVHVwbGUJdHVwbGUg PSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsKKwli b29sCQlob3RfYWxsb3dlZDsKKwlib29sCQlzdW1tYXJpemVkX29ubHk7CiAJVE1fUmVzdWx0 CXJlc3VsdDsKIAorCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJaG90 X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9p ZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVE ZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwogCS8q IFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8KIAlzbG90LT50dHNfdGFibGVP aWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0dXBsZS0+dF90YWJsZU9pZCA9 IHNsb3QtPnR0c190YWJsZU9pZDsKIAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9u LCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9zc2NoZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQsIGxv Y2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2Rp ZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2VkKTsKIAlJdGVtUG9pbnRlckNvcHkoJnR1cGxl LT50X3NlbGYsICZzbG90LT50dHNfdGlkKTsKIAogCS8qCkBAIC0zNTAsMTYgKzM1NiwxNyBA QCBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBv dGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkgKiBIT1QsIGl0IGNvdWxkIGJlIHRoYXQg d2UgdXBkYXRlZCBzdW1tYXJpemVkIGNvbHVtbnMsIHNvIHdlIGVpdGhlcgogCSAqIHVwZGF0 ZSBvbmx5IHN1bW1hcml6ZWQgaW5kZXhlcywgb3Igbm9uZSBhdCBhbGwuCiAJICovCi0JaWYg KHJlc3VsdCAhPSBUTV9PaykKKwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCWlmIChy ZXN1bHQgPT0gVE1fT2spCiAJewotCQlBc3NlcnQoKnVwZGF0ZV9pbmRleGVzID09IFRVX05v bmUpOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCQlpZiAoSGVhcFR1cGxlSXNI ZWFwT25seSh0dXBsZSkpCisJCXsKKwkJCWlmIChzdW1tYXJpemVkX29ubHkpCisJCQkJKnVw ZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFyaXppbmc7CisJCX0KKwkJZWxzZQorCQkJKnVwZGF0 ZV9pbmRleGVzID0gVFVfQWxsOwogCX0KLQllbHNlIGlmICghSGVhcFR1cGxlSXNIZWFwT25s eSh0dXBsZSkpCi0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfQWxsKTsKLQllbHNl Ci0JCUFzc2VydCgoKnVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKSB8fAotCQkJ ICAgKCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9Ob25lKSk7CiAKIAlpZiAoc2hvdWxkRnJlZSkK IAkJcGZyZWUodHVwbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXgg ZGZkYTFhZjQxMmUuLjliYTcyZDUxZGZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMKQEAgLTM1OSw2ICszNTksNyBAQCB2b2lkCiBzaW1wbGVfdGFibGVfdHVwbGVfdXBk YXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCSAgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJICBjb25z dCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCSAgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKQEAgLTM2OSw3 ICszNzAsOSBAQCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRl bVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKIAkJ CQkJCQkJc25hcHNob3QsIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0 IGZvciBjb21taXQgKi8gLAotCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5k ZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsCisJCQkJCQkJCW1vZGlmaWVkX2lk eF9hdHRycywKKwkJCQkJCQkJdXBkYXRlX2luZGV4ZXMpOwogCiAJc3dpdGNoIChyZXN1bHQp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCAyNDk3 ZWU3ZWRjNS4uNzRhNzM3OTE4NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKKyNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBt Z3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5 cGNhY2hlLmgiCkBAIC05MDYsNiArOTA3LDcgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRl KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJYm9vbAkJc2tpcF90dXBsZSA9IGZh bHNlOwogCVJlbGF0aW9uCXJlbCA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsK IAlJdGVtUG9pbnRlciB0aWQgPSAmKHNlYXJjaHNsb3QtPnR0c190aWQpOworCUJpdG1hcHNl dCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAogCS8qCiAJICogV2Ugc3VwcG9ydCBvbmx5IG5v bi1zeXN0ZW0gdGFibGVzLCB3aXRoCkBAIC05NDQsOCArOTQ2LDEzIEBAIEV4ZWNTaW1wbGVS ZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlpZiAocmVs LT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCQkJRXhlY1BhcnRpdGlvbkNoZWNrKHJlc3Vs dFJlbEluZm8sIHNsb3QsIGVzdGF0ZSwgdHJ1ZSk7CiAKKwkJbW9kaWZpZWRfaWR4X2F0dHJz ID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJ CQkJCQkJZXN0YXRlLCBzZWFyY2hzbG90LCBzbG90KTsKKwogCQlzaW1wbGVfdGFibGVfdHVw bGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJ CQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAm dXBkYXRlX2luZGV4ZXMpOworCQlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCiAK IAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0 ZXJJbmRleGVzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVw bGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKaW5kZXggYjcxN2Iw M2IzZDIuLmU4YzU2MzliNjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBA IC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2lu Y2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5kZWRkYXR1bS5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNh Y2hlLmgiCkBAIC0xOTk5LDYgKzIwMDAsNzUgQEAgRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURh dHVtKFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBF eGVjQ29tcGFyZVNsb3RBdHRycworICoKKyAqIENvbXBhcmUgdGhlIHN1YnNldCBvZiBhdHRy aWJ1dGVzIGluIGF0dHJzIGJld3R3ZWVuIFR1cGxlVGFibGVTbG90cyB0byBkZXRlY3QKKyAq IHdoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkLgorICoKKyAqIFJldHVybnMgYSByZXVz ZWQgd2hlbiBwb3NzaWJsZSBCaXRtYXBzZXQgb2YgYXR0cmlidXRlIGluZGljZXMgKHVzaW5n CisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIGNvbnZlbnRpb24pIHRo YXQgZGlmZmVyIGJldHdlZW4gdGhlIHR3bworICogc2xvdHMuCisgKi8KK0JpdG1hcHNldCAq CitFeGVjQ29tcGFyZVNsb3RBdHRycyhCaXRtYXBzZXQgKmF0dHJzLCBUdXBsZURlc2MgdHVw ZGVzYywKKwkJCQkJIFR1cGxlVGFibGVTbG90ICpzMSwgVHVwbGVUYWJsZVNsb3QgKnMyKQor eworCWludAkJCWF0dGlkeCA9IC0xOworCisJd2hpbGUgKChhdHRpZHggPSBibXNfbmV4dF9t ZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDApCisJeworCQkvKiBhdHRpZHggaXMgemVyby1i YXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBudW1iZXIgKi8KKwkJQXR0 ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcjsKKwkJRGF0dW0JCXZhbHVlMSwKKwkJCQkJdmFsdWUyOworCQlib29sCQludWxs MSwKKwkJCQkJbnVsbDI7CisJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dDsKKworCQkvKgorCQkg KiBJZiBpdCdzIGEgd2hvbGUtdHVwbGUgcmVmZXJlbmNlLCBzYXkgIm5vdCBlcXVhbCIuICBJ dCdzIG5vdCByZWFsbHkKKwkJICogd29ydGggc3VwcG9ydGluZyB0aGlzIGNhc2UsIHNpbmNl IGl0IGNvdWxkIG9ubHkgc3VjY2VlZCBhZnRlciBhCisJCSAqIG5vLW9wIHVwZGF0ZSwgd2hp Y2ggaXMgaGFyZGx5IGEgY2FzZSB3b3J0aCBvcHRpbWl6aW5nIGZvci4KKwkJICovCisJCWlm IChhdHRybnVtID09IDApCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBMaWtld2lzZSwg YXV0b21hdGljYWxseSBzYXkgIm5vdCBlcXVhbCIgZm9yIGFueSBzeXN0ZW0gYXR0cmlidXRl CisJCSAqIG90aGVyIHRoYW4gdGFibGVPSUQ7IHdlIGNhbm5vdCBleHBlY3QgdGhlc2UgdG8g YmUgY29uc2lzdGVudCBpbiBhCisJCSAqIEhPVCBjaGFpbiwgb3IgZXZlbiB0byBiZSBzZXQg Y29ycmVjdGx5IHlldCBpbiB0aGUgbmV3IHR1cGxlLgorCQkgKi8KKwkJaWYgKGF0dHJudW0g PCAwKQorCQl7CisJCQlpZiAoYXR0cm51bSA9PSBUYWJsZU9pZEF0dHJpYnV0ZU51bWJlcikK KwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBhdHRpZHgpOworCQkJZWxzZQor CQkJCWNvbnRpbnVlOworCQl9CisKKwkJYXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVw ZGVzYywgYXR0cm51bSAtIDEpOworCQl2YWx1ZTEgPSBzbG90X2dldGF0dHIoczEsIGF0dHJu dW0sICZudWxsMSk7CisJCXZhbHVlMiA9IHNsb3RfZ2V0YXR0cihzMiwgYXR0cm51bSwgJm51 bGwyKTsKKworCQkvKiBBIGNoYW5nZSB0by9mcm9tIE5VTEwsIHNvIG5vdCBlcXVhbCAqLwor CQlpZiAobnVsbDEgIT0gbnVsbDIpCisJCQljb250aW51ZTsKKworCQkvKiBCb3RoIE5VTEws IG5vIGNoYW5nZS91bm1vZGlmaWVkICovCisJCWlmIChudWxsMikKKwkJeworCQkJYXR0cnMg PSBibXNfZGVsX21lbWJlcihhdHRycywgYXR0aWR4KTsKKwkJCWNvbnRpbnVlOworCQl9CisK KwkJaWYgKGRhdHVtX2ltYWdlX2VxKHZhbHVlMSwgdmFsdWUyLCBhdHQtPmF0dGJ5dmFsLCBh dHQtPmF0dGxlbikpCisJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBhdHRpZHgp OworCX0KKworCXJldHVybiBhdHRyczsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCQkJY29u dmVuaWVuY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMKICAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNGNkNWUyNjJlMGYuLmVh NTA1OGM3YTM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtMTcsNiArMTcsNyBAQAogICoJCUV4ZWNNb2RpZnlUYWJsZQkJLSByZXRyaWV2ZSB0aGUg bmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlCiAgKgkJRXhlY0VuZE1vZGlmeVRhYmxlCS0gc2h1 dCBkb3duIHRoZSBNb2RpZnlUYWJsZSBub2RlCiAgKgkJRXhlY1JlU2Nhbk1vZGlmeVRhYmxl IC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2RlCisgKgkJRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMgLSBmaW5kIHNldCBvZiB1cGRhdGVkIGluZGV4ZWQgY29sdW1ucwogICoKICAq CSBOT1RFUwogICoJCVRoZSBNb2RpZnlUYWJsZSBub2RlIHJlY2VpdmVzIGlucHV0IGZyb20g aXRzIG91dGVyUGxhbiwgd2hpY2ggaXMKQEAgLTU1LDYgKzU2LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5oIgorI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNj LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmln Z2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgpAQCAtMTkwLDYg KzE5Miw2MyBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNNZXJnZU5vdE1hdGNoZWQo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgIFJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJICAgYm9vbCBjYW5TZXRUYWcpOwogCisv KgorICogRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMKKyAqCisgKiBGaW5kIHRoZSBzZXQg b2YgYXR0cmlidXRlcyByZWZlcmVuY2VkIGJ5IHRoaXMgcmVsYXRpb24gYW5kIHVzZWQgaW4g dGhpcworICogVVBEQVRFIHRoYXQgbm93IGRpZmZlciBpbiB2YWx1ZS4gIFRoaXMgaXMgZG9u ZSBieSByZXZpZXdpbmcgc2xvdCBkYXR1bSB0aGF0CisgKiBhcmUgaW4gdGhlIFVQREFURSBz dGF0bWVudCBhbmQgYXJlIGtub3duIHRvIGJlIHJlZmVyZW5jZWQgYnkgYXQgbGVhc3Qgb25l CisgKiBpbmRleCBpbiBzb21lIHdheS4gIFRoaXMgc2V0IGlzIGNhbGxlZCB0aGUgIm1vZGlm aWVkIGluZGV4ZWQgYXR0cmlidXRlcyIgb3IKKyAqICJtb2RpZmllZF9pZHhfYXR0cnMiLiAg QW4gb3ZlcmxhcCBvZiBhIHNpbmdsZSBpbmRleCdzIGF0dHJpYnV0ZXMgYW5kIHRoaXMKKyAq IG1vZGlmaWVkX2lkeF9hdHRycyBzZXQgc2lnbmFscyB0aGF0IHRoZSBhdHRyaWJ1dGVzIGlu IHRoZSBuZXdfdHRzIHVzZWQgdG8KKyAqIGZvcm0gdGhlIGluZGV4IGRhdHVtIGhhdmUgY2hh bmdlZC4KKyAqCisgKiBSZXR1cm4gYSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUgc2V0 IG9mIG1vZGlmaWVkIChjaGFuZ2VkKSBpbmRleGVkCisgKiBhdHRyaWJ1dGVzIGJldHdlZW4g b2xkdHVwIGFuZCBuZXd0dXAuCisgKgorICogTm90ZTogVGhlcmUgaXMgYSBzaW1pbGFyIGZ1 bmN0aW9uIGNhbGxlZCBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIHRoYXQgb3BlcmF0 ZXMKKyAqIG9uIHRoZSBvbGQgVElEIGFuZCBuZXcgSGVhcFR1cGxlIHJhdGhlciB0aGFuIHRo ZSBvbGQvbmV3IFR1cGxlVGFibGVTbG90cyBhcworICogdGhpcyBmdW5jdGlvbiBkb2VzLiAg VGhlc2UgdHdvIGZ1bmN0aW9ucyBzaG91bGQgbWlycm9yIG9uZSBhbm90aGVyIHVudGlsCisg KiBzb21lZGF5IHdoZW4gY2F0YWxvZyB0dXBsZSB1cGRhdGVzIHRyYWNrIHRoZWlyIGNoYW5n ZXMgYXZvaWRpbmcgdGhlIG5lZWQgdG8KKyAqIHJlLWRpc2NvdmVyIHRoZW0gaW4gc2ltcGxl X2hlYXBfdXBkYXRlKCkuCisgKi8KK0JpdG1hcHNldCAqCitFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJICAgRVN0YXRl ICplc3RhdGUsCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCSAg IFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKQoreworCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVz dWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVs YXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJQml0bWFwc2V0ICAqYXR0cnM7CisKKwkvKiBJ ZiBubyBpbmRleGVzLCB3ZSdyZSBkb25lICovCisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051 bUluZGljZXMgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIEdldCB0aGUgc2V0 IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBmb3IgdGhpcyByZWxhdGlv biBmcm9tCisJICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVzIGEgY29weSBvZiB0aGUg Yml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICoKKwkgKiBOb3RlOiBXZSBpbnRlbnRp b25hbGx5IHNjYW4gYWxsIGluZGV4ZWQgY29sdW1ucyB3aGVuIGxvb2tpbmcgZm9yIGNoYW5n ZXMKKwkgKiByYXRoZXIgdGhhbiByZWR1Y2UgdGhhdCBzZXQgYnkgaW50ZXJzZWN0aW5nIGl0 IHdpdGgKKwkgKiBFeGVjR2V0QWxsVXBkYXRlZENvbHMoKS4gIERlc2lwdGUgdGhlIG5hbWUg aXQgcHJvdmlkZXMgdGhlIHNldCBvZgorCSAqIHRhcmdldGVkIGF0dHJpYnV0ZXMgaW4gdGhl IFNRTCB1c2VkIGZvciB0aGUgVVBEQVRFIGFuZCBhbnkgdHJpZ2dlcnMsIGJ1dAorCSAqIHRo YXQgZG9lc24ndCBpbmNsdWRlIGFueSBhdHRyaWJ1dGVzIHVwZGF0ZWQgdXNpbmcgaGVhcF9t b2RpZml5X3R1cGxlKCkuCisJICogVGhlcmUgaXMgb25lIHRlc3QgaW4gdHNlYXJjaC5zcWwg dGhhdCBkb2VzIGp1c3QgdGhhdCwgbW9kaWZpZXMgYW4KKwkgKiBpbmRleGVkIGF0dHJpYnV0 ZSB0aGF0IGlzbid0IHNwZWNpZmllZCBpbiB0aGUgU1FMIGFuZCBzbyBpc24ndCBwcmVzZW50 CisJICogaW4gdGhhdCBiaXRtYXBzZXQuCisJICovCisJYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisK KwkvKgorCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQgYXR0cmlidXRlcyBtZW50aW9uZWQg aW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKKwkgKiB0byBmaW5kIHRoZSBzdWJzZXQgdGhh dCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZSAibW9kaWZpZWRfaWR4X2F0dHJzIi4KKwkg Ki8KKwlhdHRycyA9IEV4ZWNDb21wYXJlU2xvdEF0dHJzKGF0dHJzLCB0dXBkZXNjLCBvbGRf dHRzLCBuZXdfdHRzKTsKKworCXJldHVybiBhdHRyczsKK30KIAogLyoKICAqIFZlcmlmeSB0 aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVjZWQgYnkgSU5TRVJUIG1hdGNoIHRoZQpAQCAt MjE5NywxNCArMjI1NiwxNyBAQCBFeGVjVXBkYXRlUHJlcGFyZVNsb3QoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKICAqLwogc3RhdGljIFRNX1Jlc3VsdAogRXhlY1VwZGF0ZUFj dChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCi0JCQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QsCi0JCQkgIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250 ZXh0ICp1cGRhdGVDeHQpCisJCQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBv bGR0dXBsZSwgVHVwbGVUYWJsZVNsb3QgKm9sZFNsb3QsCisJCQkgIFR1cGxlVGFibGVTbG90 ICpzbG90LCBib29sIGNhblNldFRhZywgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQogewog CUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ZXN0YXRlOwogCVJlbGF0aW9uCXJlc3Vs dFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKIAlib29s CQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAor CS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dl ciBuZXcgaW5kZXggZW50cmllcyAqLworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRy cyA9IE5VTEw7CisKIAl1cGRhdGVDeHQtPmNyb3NzUGFydFVwZGF0ZSA9IGZhbHNlOwogCiAJ LyoKQEAgLTIzMjEsNyArMjM4MywxNiBAQCBscmVwbGFjZToKIAkJRXhlY0NvbnN0cmFpbnRz KHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSk7CiAKIAkvKgotCSAqIHJlcGxhY2UgdGhl IGhlYXAgdHVwbGUKKwkgKiBOZXh0IHVwIHdlIG5lZWQgdG8gZmluZCBvdXQgdGhlIHNldCBv ZiBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCBoYXZlCisJICogY2hhbmdlZCBpbiB2YWx1ZSBh bmQgc2hvdWxkIHRyaWdnZXIgYSBuZXcgaW5kZXggdHVwbGUuICBXZSBjb3VsZCBzdGFydAor CSAqIHdpdGggdGhlIHNldCBvZiB1cGRhdGVkIGNvbHVtbnMgdmlhIEV4ZWNHZXRVcGRhdGVk Q29scygpLCBidXQgaWYgd2UgZG8KKwkgKiB3ZSB3aWxsIG92ZXJsb29rIGF0dHJpYnV0ZXMg ZGlyZWN0bHkgbW9kaWZpZWQgYnkgaGVhcF9tb2RpZnlfdHVwbGUoKQorCSAqIHdoaWNoIGFy ZSBub3Qga25vd24gdG8gRXhlY0dldFVwZGF0ZWRDb2xzKCkuCisJICovCisJbW9kaWZpZWRf aWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywg ZXN0YXRlLCBvbGRTbG90LCBzbG90KTsKKworCS8qCisJICogQ2FsbCBpbnRvIHRoZSB0YWJs ZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCiAJICoKIAkgKiBOb3RlOiBpZiBlc19j cm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwgd2UgY2hlY2sgdGhh dAogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRvIHRoYXQgc25hcHNo b3QsIGFuZCB0aHJvdyBhCkBAIC0yMzM1LDYgKzI0MDYsNyBAQCBscmVwbGFjZToKIAkJCQkJ CQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQl0cnVlIC8qIHdh aXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZkLCAmdXBkYXRlQ3h0 LT5sb2NrbW9kZSwKKwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJCQkmdXBk YXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKIAogCXJldHVybiByZXN1bHQ7CkBAIC0yNTU3LDgg KzI2MjksOCBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICovCiByZWRvX2FjdDoKIAkJbG9ja2Vk dGlkID0gKnR1cGxlaWQ7Ci0JCXJlc3VsdCA9IEV4ZWNVcGRhdGVBY3QoY29udGV4dCwgcmVz dWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCi0JCQkJCQkJICAgY2FuU2V0 VGFnLCAmdXBkYXRlQ3h0KTsKKwkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChjb250ZXh0LCBy ZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgb2xkU2xvdCwKKwkJCQkJCQkgICBz bG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCS8qCiAJCSAqIElmIEV4ZWNVcGRh dGVBY3QgcmVwb3J0cyB0aGF0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZSB3YXMgZG9uZSwK QEAgLTM0MDgsOCArMzQ4MCw4IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJCQlBc3NlcnQob2xk dHVwbGUgPT0gTlVMTCk7CiAKIAkJCQkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChjb250ZXh0 LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLAotCQkJCQkJCQkJCSAgIE5VTEwsIG5ld3Nsb3Qs IGNhblNldFRhZywKLQkJCQkJCQkJCQkgICAmdXBkYXRlQ3h0KTsKKwkJCQkJCQkJCQkgICBO VUxMLCByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsCisJCQkJCQkJCQkJICAgbmV3 c2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkJCQkvKgogCQkJCQkgKiBBcyBp biBFeGVjVXBkYXRlKCksIGlmIEV4ZWNVcGRhdGVBY3QoKSByZXBvcnRzIHRoYXQgYQpAQCAt NDU0Niw3ICs0NjE4LDcgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQog CQkgKiBGb3IgVVBEQVRFL0RFTEVURS9NRVJHRSwgZmV0Y2ggdGhlIHJvdyBpZGVudGl0eSBp bmZvIGZvciB0aGUgdHVwbGUKIAkJICogdG8gYmUgdXBkYXRlZC9kZWxldGVkL21lcmdlZC4g IEZvciBhIGhlYXAgcmVsYXRpb24sIHRoYXQncyBhIFRJRDsKIAkJICogb3RoZXJ3aXNlIHdl IG1heSBoYXZlIGEgd2hvbGVyb3cganVuayBhdHRyIHRoYXQgY2FycmllcyB0aGUgb2xkCi0J CSAqIHR1cGxlIGluIHRvdG8uICBLZWVwIHRoaXMgaW4gc3RlcCB3aXRoIHRoZSBwYXJ0IG9m CisJCSAqIHR1cGxlIGluIHRvdGFsLiAgS2VlcCB0aGlzIGluIHN0ZXAgd2l0aCB0aGUgcGFy dCBvZgogCQkgKiBFeGVjSW5pdE1vZGlmeVRhYmxlIHRoYXQgc2V0cyB1cCByaV9Sb3dJZEF0 dE5vLgogCQkgKi8KIAkJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlv biA9PSBDTURfREVMRVRFIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRl eCAzYTRmMTllOGQ1OC4uZjJiN2ZiOGY0NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwpAQCAtMjQ2OSw3ICsyNDY5LDcgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24o UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfa2V5YXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3BrYXR0cik7 CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JYm1zX2ZyZWUocmVsYXRpb24t PnJkX2hvdGJsb2NraW5nYXR0cik7CisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRh dHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwogCWlmIChy ZWxhdGlvbi0+cmRfcHViZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRlc2MpOwpA QCAtNTI3MSw4ICs1MjcxLDggQEAgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlv biByZWxhdGlvbikKICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBpZiBQSyBpcyBkZWZlcnJh YmxlISkKICAqCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWQlDb2x1bW5zIGluIHRo ZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJaW5kZXggKGVtcHR5IGlm IEZVTEwpCi0gKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJQ29sdW1ucyB0aGF0 IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVYX0FUVFJfQklUTUFQX1NV TU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRleGVzCisgKglJ TkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhl cworICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRAlDb2x1bW5zIG9ubHkgaW5jbHVk ZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcwogICoKICAqIEF0dHJpYnV0ZSBudW1iZXJzIGFy ZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBzbyB0aGF0 CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0 aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTI5NSw4ICs1Mjk1LDggQEAgUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1h cEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMg aW4gdW5pcXVlIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2luZGV4YXR0cnM7CS8qIGNv bHVtbnMgaW4gdGhlIHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBzZXQgICppZGluZGV4YXR0 cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8KLQlCaXRtYXBzZXQg ICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJsb2NraW5nIGluZGV4 ZXMgKi8KLQlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBz dW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqaW5kZXhlZGF0dHJzOwkvKiBj b2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKnN1bW1hcml6 ZWRhdHRyczsJLyogY29sdW1ucyBvbmx5IGluIHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KIAlM aXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhvaWRsaXN0OwogCU9p ZAkJCXJlbHBraW5kZXg7CkBAIC01MzE1LDggKzUzMTUsOCBAQCBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBhdHRy S2luZCkKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3BrYXR0cik7CiAJCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJCQlyZXR1cm4gYm1zX2Nv cHkocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0hP VF9CTE9DS0lORzoKLQkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2hvdGJsb2Nr aW5nYXR0cik7CisJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQkJcmV0 dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJCQljYXNlIElOREVY X0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9u LT5yZF9zdW1tYXJpemVkYXR0cik7CiAJCQlkZWZhdWx0OgpAQCAtNTM2MSw3ICs1MzYxLDcg QEAgcmVzdGFydDoKIAl1aW5kZXhhdHRycyA9IE5VTEw7CiAJcGtpbmRleGF0dHJzID0gTlVM TDsKIAlpZGluZGV4YXR0cnMgPSBOVUxMOwotCWhvdGJsb2NraW5nYXR0cnMgPSBOVUxMOwor CWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJc3VtbWFyaXplZGF0dHJzID0gTlVMTDsKIAlmb3Jl YWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CkBAIC01NDIxLDcgKzU0MjEsNyBAQCByZXN0YXJ0 OgogCQlpZiAoaW5kZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZykKIAkJCWF0dHJz ID0gJnN1bW1hcml6ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAmaG90YmxvY2tpbmdh dHRyczsKKwkJCWF0dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBDb2xsZWN0IHNpbXBs ZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhEZXNj LT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKQEAgLTU0MzAsOSArNTQzMCw5IEBAIHJlc3Rh cnQ6CiAKIAkJCS8qCiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5nIGluZGV4ZXMgd2l0 aCBub24ta2V5IGNvbHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0aGVtIGFjY3VyYXRl bHkgaGVyZS4gbm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50bwotCQkJICogaG90 YmxvY2tpbmdhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRoZXkgYXJlIGluIGlu ZGV4LAotCQkJICogYW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVtLgorCQkJICogaGFu ZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMgbXVzdCBiZSBhZGRl ZCBpbnRvCisJCQkgKiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0dHJzLCBzaW5jZSB0 aGV5IGFyZSBpbiBpbmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxkbid0IG1pc3MgdGhl bS4KIAkJCSAqCiAJCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdCBibG9jayBIT1Qs IGJ1dCBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhlIGNvbHVtbiB2YWx1 ZSBjaGFuZ2VzLCB0aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTQ5MywxMiArNTQ5Mywy MCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKHBr aW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0JCWJtc19mcmVlKGhv dGJsb2NraW5nYXR0cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMpOwogCQlibXNfZnJl ZShzdW1tYXJpemVkYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKKwkvKgorCSAq IFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJp emluZyBpbmRleGVzLiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICogYXR0cmlidXRlcy4K KwkgKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGF0 dHJzLCBpbmRleGVkYXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19hZGRfbWVtYmVycyhp bmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24ndCBsZWFrIHRoZSBv bGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJlbGF0aW9uLT5yZF9h dHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2tleWF0dHIpOwpA QCAtNTUwNyw4ICs1NTE1LDggQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfcGthdHRyID0g TlVMTDsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAlyZWxhdGlvbi0+cmRf aWRhdHRyID0gTlVMTDsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRy KTsKLQlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsKKwlibXNfZnJlZShy ZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9 IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKIAlyZWxh dGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOwogCkBAIC01NTIzLDcgKzU1MzEsNyBA QCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2NvcHkodWluZGV4YXR0 cnMpOwogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2luZGV4YXR0cnMpOwog CXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMpOwotCXJlbGF0 aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsK KwlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOwog CXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRy cyk7CiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjeHQpOwpAQCAtNTUzNyw4ICs1NTQ1LDggQEAgcmVzdGFydDoKIAkJCXJl dHVybiBwa2luZGV4YXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlf S0VZOgogCQkJcmV0dXJuIGlkaW5kZXhhdHRyczsKLQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1B UF9IT1RfQkxPQ0tJTkc6Ci0JCQlyZXR1cm4gaG90YmxvY2tpbmdhdHRyczsKKwkJY2FzZSBJ TkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOgorCQkJcmV0dXJuIGluZGV4ZWRhdHRyczsKIAkJ Y2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0dXJuIHN1bW1hcml6 ZWRhdHRyczsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAyZmRjNTBiODY1 Yi4uMDg4MDk3YTkxODggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM5MCwxMCArMzkwLDkg QEAgZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgSXRlbVBvaW50ZXJEYXRhICp0aWQsCiBleHRlcm4gdm9pZCBoZWFwX2ZpbmlzaF9zcGVj dWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQp OwogZXh0ZXJuIHZvaWQgaGVhcF9hYm9ydF9zcGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlv biwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFw X3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlk LAotCQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBT bmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCi0JCQkJCQkJIFRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwLCBDb21t YW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCisJCQkJCQkJIFRN X0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAorCQkJ CQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywgY29uc3QgYm9vbCBo b3RfYWxsb3dlZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfbG9ja190dXBsZShSZWxhdGlv biByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwg TG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJ CQkJIGJvb2wgZm9sbG93X3VwZGF0ZXMsCkBAIC00NTYsNiArNDU1LDEyIEBAIGV4dGVybiB2 b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFkLAog CQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpOwogCisvKiBp biBoZWFwL2hlYXBhbS5jICovCitleHRlcm4gYm9vbCBIZWFwVXBkYXRlSG90QWxsb3dhYmxl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRy cywKKwkJCQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KTsKK2V4dGVybiBMb2NrVHVw bGVNb2RlIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxhdGlvbiByZWxhdGlvbiwK KwkJCQkJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CisK IC8qIGluIGhlYXAvdmFjdXVtbGF6eS5jICovCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9y ZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRl eCAwNjA4NDc1MjI0NS4uOGVjMjBkY2ZjMTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NTQ5LDYgKzU0OSw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJ CSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKIAkJCQkJCQkJ IExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAorCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMsCiAJCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVf aW5kZXhlcyk7CiAKIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZlcmVuY2Ug YWJvdXQgcGFyYW1ldGVycyAqLwpAQCAtMTUyMywxMiArMTUyNCwxMiBAQCBzdGF0aWMgaW5s aW5lIFRNX1Jlc3VsdAogdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBv aW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJICAgQ29tbWFuZElkIGNp ZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCiAJCQkJICAgYm9v bCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUs Ci0JCQkJICAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAgY29u c3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIFRVX1VwZGF0ZUluZGV4ZXMgKnVw ZGF0ZV9pbmRleGVzKQogewogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1cGxlX3VwZGF0 ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgc25hcHNob3QsIGNyb3NzY2hl Y2ssCi0JCQkJCQkJCQkJIHdhaXQsIHRtZmQsCi0JCQkJCQkJCQkJIGxvY2ttb2RlLCB1cGRh dGVfaW5kZXhlcyk7CisJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2ttb2RlLAorCQkJCQkJ CQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsKIH0KIAogLyoKQEAg LTIwMDksNiArMjAxMCw3IEBAIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV9kZWxl dGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJCQkgIFNuYXBzaG90 IHNuYXBzaG90KTsKIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVs YXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xv dCAqc2xvdCwgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkgIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1 cGRhdGVfaW5kZXhlcyk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMDY0 ZGYwMTgxMWUuLjcxM2VkMzVkOGNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAg LTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRl ICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgpAQCAtNjEwLDYgKzYxMSwxMCBAQCBleHRlcm4gVHVwbGVEZXNjIEV4ZWNDbGVhblR5 cGVGcm9tVEwoTGlzdCAqdGFyZ2V0TGlzdCk7CiBleHRlcm4gVHVwbGVEZXNjIEV4ZWNUeXBl RnJvbUV4cHJMaXN0KExpc3QgKmV4cHJMaXN0KTsKIGV4dGVybiB2b2lkIEV4ZWNUeXBlU2V0 Q29sTmFtZXMoVHVwbGVEZXNjIHR5cGVJbmZvLCBMaXN0ICpuYW1lc0xpc3QpOwogZXh0ZXJu IHZvaWQgVXBkYXRlQ2hhbmdlZFBhcmFtU2V0KFBsYW5TdGF0ZSAqbm9kZSwgQml0bWFwc2V0 ICpuZXdjaGcpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0NvbXBhcmVTbG90QXR0cnMoQml0 bWFwc2V0ICphdHRycywKKwkJCQkJCQkJCSAgIFR1cGxlRGVzYyB0dXBkZXNjLAorCQkJCQkJ CQkJICAgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkgICBUdXBsZVRhYmxl U2xvdCAqbmV3X3R0cyk7CiAKIHR5cGVkZWYgc3RydWN0IFR1cE91dHB1dFN0YXRlCiB7CkBA IC04MDcsNSArODEyLDkgQEAgZXh0ZXJuIFJlc3VsdFJlbEluZm8gKkV4ZWNMb29rdXBSZXN1 bHRSZWxCeU9pZChNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJCQkJCQkgICBPaWQg cmVzdWx0b2lkLAogCQkJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2ssCiAJCQkJCQkJCQkJ CSAgIGJvb2wgdXBkYXRlX2NhY2hlKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNVcGRhdGVN b2RpZmllZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCisJCQkJCQkJCQkJCSBF U3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpvbGRfdHRzLAor CQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiAjZW5kaWYJCQkJCQkJ LyogRVhFQ1VUT1JfSCAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMjM2ODMwZjZiOTMuLjExNDYwZTEz NGYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9yZWwuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHR5cGVkZWYgc3RydWN0IFJl bGF0aW9uRGF0YQogCUJpdG1hcHNldCAgKnJkX2tleWF0dHI7CQkvKiBjb2xzIHRoYXQgY2Fu IGJlIHJlZidkIGJ5IGZvcmVpZ24ga2V5cyAqLwogCUJpdG1hcHNldCAgKnJkX3BrYXR0cjsJ CS8qIGNvbHMgaW5jbHVkZWQgaW4gcHJpbWFyeSBrZXkgKi8KIAlCaXRtYXBzZXQgICpyZF9p ZGF0dHI7CQkvKiBpbmNsdWRlZCBpbiByZXBsaWNhIGlkZW50aXR5IGluZGV4ICovCi0JQml0 bWFwc2V0ICAqcmRfaG90YmxvY2tpbmdhdHRyOyAvKiBjb2xzIGJsb2NraW5nIEhPVCB1cGRh dGUgKi8KKwlCaXRtYXBzZXQgICpyZF9pbmRleGVkYXR0cjsgLyogYWxsIGNvbHMgcmVmZXJl bmNlZCBieSBpbmRleGVzICovCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0dHI7CS8q IGNvbHMgaW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlv bkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5j bHVkZS91dGlscy9yZWxjYWNoZS5oCmluZGV4IDI3MDAyMjQ5MzlhLi5kNGRiODI0OTZiNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9yZWxjYWNoZS5oCkBAIC02OSw3ICs2OSw3IEBAIHR5cGVkZWYgZW51bSBJ bmRleEF0dHJCaXRtYXBLaW5kCiAJSU5ERVhfQVRUUl9CSVRNQVBfS0VZLAogCUlOREVYX0FU VFJfQklUTUFQX1BSSU1BUllfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tF WSwKLQlJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcsCisJSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRCwKIAlJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELAogfSBJbmRleEF0 dHJCaXRtYXBLaW5kOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBy dW5lZC5vdXQKaW5kZXggYTZhNGU4ZGI5OTYuLjA3ZWY2N2ExZWI0IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBk YXRlLXBydW5lZC5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0CkBAIC0xNiw4ICsxNiw4IEBA IHN0ZXAgd2FrZWludmFsNDoKIHN0ZXAgYXQyOiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2Fr ZWludmFsNDogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7 Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJl Zm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2lt cGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+CiBFUlJPUjogIHR1cGxl IGNvbmN1cnJlbnRseSBkZWxldGVkCkBAIC00Miw4ICs0Miw4IEBAIHN0ZXAgbWtyZWxzNDoK IAlTRUxFQ1QgRlJPTSB2YWN0ZXN0Lm1rcmVscygnaW50cnVkZXInLCAxLCAxMDApOyAgLS0g cmVwb3B1bGF0ZSBMUF9VTlVTRUQKIAogc3RlcCB3YWtlZ3JhbnQ0OiAKLQlTRUxFQ1QgRlJP TSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwot CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZv cmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBs ZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3Bv aW50c193YWtldXAoJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiAgPHdhaXRp bmcgLi4uPgogc3RlcCBncmFudDE6IDwuLi4gY29tcGxldGVkPgogRVJST1I6ICBkdXBsaWNh dGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJwZ19jbGFzc19vaWRf aW5kZXgiCkBAIC03MSw4ICs3MSw4IEBAIHN0ZXAgYXQyOiA8Li4uIGNvbXBsZXRlZD4KIHN0 ZXAgd2FrZWludmFsNDogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIGF0NDogQUxURVIgVEFCTEUg dmFjdGVzdC5jaGlsZDUwIElOSEVSSVQgdmFjdGVzdC5vcmlnNTA7CiBzdGVwIHdha2VncmFu dDQ6IAotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0 ZS1iZWZvcmUtcGluJyk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAo J2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1Qg RlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9y ZS1waW4nKTsKICA8d2FpdGluZyAuLi4+CiBzdGVwIGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+ CiBzdGVwIHdha2VncmFudDQ6IDwuLi4gY29tcGxldGVkPgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVu ZWQuc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNj YWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMKaW5kZXggZTNhNDI5NWJkMTIuLmZlZjlhYzg5NWEx IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mv c3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMKQEAgLTEw Myw3ICsxMDMsNyBAQCBzZXNzaW9uIHMxCiBzZXR1cAl7CiAJU0VUIGRlYnVnX2Rpc2NhcmRf Y2FjaGVzID0gMDsKIAlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgp OwotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3VwZGF0ZS1i ZWZvcmUtcGluJywgJ3dhaXQnKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nLCAnd2FpdCcpOwogfQogc3Rl cCBjYWNoZWZpbGwxCXsgU0VMRUNUIEZST00gdmFjdGVzdC5yZWxvaWRfY2F0Y2FjaGVfc2V0 KCd2YWN0ZXN0Lm9yaWc1MCcpOyB9CiBzdGVwIGdyYW50MQl7IEdSQU5UIFNFTEVDVCBPTiB2 YWN0ZXN0Lm9yaWc1MCBUTyBQVUJMSUM7IH0KQEAgLTE0MCw4ICsxNDAsOCBAQCBzdGVwIG1r cmVsczQJewogCVNFTEVDVCBGUk9NIHZhY3Rlc3QubWtyZWxzKCdpbnRydWRlcicsIDEsIDEw MCk7ICAtLSByZXBvcHVsYXRlIExQX1VOVVNFRAogfQogc3RlcCB3YWtlZ3JhbnQ0CXsKLQlT RUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3Jl LXBpbicpOwotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3Vw ZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7 CiB9CiBzdGVwIGF0NAl7IEFMVEVSIFRBQkxFIHZhY3Rlc3QuY2hpbGQ1MCBJTkhFUklUIHZh Y3Rlc3Qub3JpZzUwOyB9CiBzdGVwIHdha2VpbnZhbDQJewpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dAppbmRleCA2ZGFiNjBjOTM3 Yi4uN2ViYjc4OTBkOTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC0yODcsNyArMjg3LDcgQEAgREVUQUlMOiAgQ29s dW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uCiBJTlNFUlQgSU5UTyBndGVzdDF2IFZB TFVFUyAoOCwgREVGQVVMVCksICg5LCBERUZBVUxUKTsgIC0tIGVycm9yCiBFUlJPUjogIGNh bm5vdCBpbnNlcnQgYSBub24tREVGQVVMVCB2YWx1ZSBpbnRvIGNvbHVtbiAiYiIKIERFVEFJ TDogIENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgotU0VMRUNUICogRlJPTSBn dGVzdDF2OworU0VMRUNUICogRlJPTSBndGVzdDF2IE9SREVSIEJZIGE7CiAgYSB8IGIgIAog LS0tKy0tLS0KICAzIHwgIDYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdHJpZ2dlcnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5v dXQKaW5kZXggOThkZWU2M2I1MGEuLmVmOThmZDBjY2NmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3RyaWdnZXJzLm91dApAQCAtOTU5LDE2ICs5NTksMjQgQEAgTk9USUNFOiAg bWFpbl92aWV3IEJFRk9SRSBVUERBVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld191cGRfc3Rt dCkKIE5PVElDRTogIG1haW5fdmlldyBBRlRFUiBVUERBVEUgU1RBVEVNRU5UIChhZnRlcl92 aWV3X3VwZF9zdG10KQogVVBEQVRFIDAKIC0tIERlbGV0ZSBmcm9tIHZpZXcgdXNpbmcgdHJp Z2dlcgotREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgSU4gKDIwLDIxKTsKK0RFTEVU RSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjAgQU5EIGIgPSAzMTsKIE5PVElDRTogIG1h aW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQp CiBOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29m X2RlbCkKLU5PVElDRTogIE9MRDogKDIxLDEwKQotTk9USUNFOiAgbWFpbl92aWV3IElOU1RF QUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCiBOT1RJQ0U6ICBPTEQ6ICgyMCwz MSkKK05PVElDRTogIG1haW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92 aWV3X2RlbF9zdG10KQorREVMRVRFIDEKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBh ID0gMjEgQU5EIGIgPSAxMDsKK05PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNU QVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQpCitOT1RJQ0U6ICBtYWluX3ZpZXcgSU5T VEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKK05PVElDRTogIE9MRDogKDIx LDEwKQorTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfZGVsX3N0bXQpCitERUxFVEUgMQorREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJF IGEgPSAyMSBBTkQgYiA9IDMyOworTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUg U1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKIE5PVElDRTogIG1haW5fdmlldyBJ TlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQogTk9USUNFOiAgT0xEOiAo MjEsMzIpCiBOT1RJQ0U6ICBtYWluX3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0 ZXJfdmlld19kZWxfc3RtdCkKLURFTEVURSAzCitERUxFVEUgMQogREVMRVRFIEZST00gbWFp bl92aWV3IFdIRVJFIGEgPSAzMSBSRVRVUk5JTkcgYSwgYjsKIE5PVElDRTogIG1haW5fdmll dyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQpCiBOT1RJ Q0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0CmluZGV4IDkyODdjNDQwNzA5 Li5jNjA0ZWMzNWZhNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90 c2VhcmNoLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0 CkBAIC0yNDgzLDcgKzI0ODMsOCBAQCBTRUxFQ1QgdG9fdHNxdWVyeSgnU0tJRVMgJiBNeSB8 IGJvb0tzJyk7CiAgJ3NreScgfCAnYm9vaycKICgxIHJvdykKIAotLS10cmlnZ2VyCistLSB0 c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcigpIHVzZXMgaGVhcF9tb2RpZnlfdHVwbGUoKSB0byBz ZXQgY29sdW1uICdhJworLS0gd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBleGVjdXRvcidz IFNFVC1jbGF1c2UgdHJhY2tpbmcuCiBDUkVBVEUgVFJJR0dFUiB0c3ZlY3RvcnVwZGF0ZQog QkVGT1JFIFVQREFURSBPUiBJTlNFUlQgT04gdGVzdF90c3ZlY3RvcgogRk9SIEVBQ0ggUk9X IEVYRUNVVEUgUFJPQ0VEVVJFIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKGEsICdwZ19jYXRh bG9nLmVuZ2xpc2gnLCB0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBk YXRhYmxlX3ZpZXdzLm91dAppbmRleCA5Y2VhNTM4YjhlOC4uNDg3N2ExZGRjZTkgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKQEAg LTM3MiwxNSArMzcyLDE1IEBAIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAoYSwgYikgVkFMVUVT ICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndfdmlldzE2IFNFVCBh PTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIEVSUk9SOiAgbXVsdGlwbGUg YXNzaWdubWVudHMgdG8gc2FtZSBjb2x1bW4gImEiCiBVUERBVEUgcndfdmlldzE2IFNFVCBh YT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBiZSBPSwotU0VMRUNUICogRlJPTSBiYXNlX3Ri bDsKK1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsKICBhICB8ICAgYiAgICAK IC0tLS0rLS0tLS0tLS0KKyAtMyB8IFJvdyAzCiAgLTIgfCBSb3cgLTIKICAtMSB8IFJvdyAt MQogICAwIHwgUm93IDAKICAgMSB8IFJvdyAxCiAgIDIgfCBSb3cgMgotIC0zIHwgUm93IDMK ICg2IHJvd3MpCiAKIERFTEVURSBGUk9NIHJ3X3ZpZXcxNiBXSEVSRSBhPS0zOyAtLSBzaG91 bGQgYmUgT0sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92 aXJ0dWFsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNx bAppbmRleCBlNzUwODY2ZDJkOC4uODc3MTUyZDZkNjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKQEAgLTEyNyw3ICsxMjcsNyBAQCBBTFRF UiBWSUVXIGd0ZXN0MXYgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgMTAwOwogSU5TRVJU IElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQpOyAgLS0gZXJyb3IKIElOU0VSVCBJ TlRPIGd0ZXN0MXYgVkFMVUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQpOyAgLS0gZXJy b3IKIAotU0VMRUNUICogRlJPTSBndGVzdDF2OworU0VMRUNUICogRlJPTSBndGVzdDF2IE9S REVSIEJZIGE7CiBERUxFVEUgRlJPTSBndGVzdDF2IFdIRVJFIGEgPj0gNTsKIERST1AgVklF VyBndGVzdDF2OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vy cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwKaW5kZXggZWEzOTgx N2VlM2QuLjZjZWI2MTYwOGFlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90 cmlnZ2Vycy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCkBA IC02NjAsNyArNjYwLDkgQEAgVVBEQVRFIG1haW5fdmlldyBTRVQgYiA9IDMyIFdIRVJFIGEg PSAyMSBBTkQgYiA9IDMxIFJFVFVSTklORyBhLCBiOwogVVBEQVRFIG1haW5fdmlldyBTRVQg YiA9IDAgV0hFUkUgZmFsc2U7CiAKIC0tIERlbGV0ZSBmcm9tIHZpZXcgdXNpbmcgdHJpZ2dl cgotREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgSU4gKDIwLDIxKTsKK0RFTEVURSBG Uk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjAgQU5EIGIgPSAzMTsKK0RFTEVURSBGUk9NIG1h aW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAxMDsKK0RFTEVURSBGUk9NIG1haW5fdmll dyBXSEVSRSBhID0gMjEgQU5EIGIgPSAzMjsKIERFTEVURSBGUk9NIG1haW5fdmlldyBXSEVS RSBhID0gMzEgUkVUVVJOSU5HIGEsIGI7CiAKIFxzZXQgUVVJRVQgdHJ1ZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC90c2VhcmNoLnNxbAppbmRleCBkYzc0YWEwYzg4OS4uNzdhYzVmZDNjNWEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCkBAIC03NTIsNyArNzUyLDggQEAgU0VMRUNUIHRv X3RzdmVjdG9yKCdTS0lFUyBNeSBib29LcycpOwogU0VMRUNUIHBsYWludG9fdHNxdWVyeSgn U0tJRVMgTXkgYm9vS3MnKTsKIFNFTEVDVCB0b190c3F1ZXJ5KCdTS0lFUyAmIE15IHwgYm9v S3MnKTsKIAotLS10cmlnZ2VyCistLSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcigpIHVzZXMg aGVhcF9tb2RpZnlfdHVwbGUoKSB0byBzZXQgY29sdW1uICdhJworLS0gd2l0aG91dCBnb2lu ZyB0aHJvdWdoIHRoZSBleGVjdXRvcidzIFNFVC1jbGF1c2UgdHJhY2tpbmcuCiBDUkVBVEUg VFJJR0dFUiB0c3ZlY3RvcnVwZGF0ZQogQkVGT1JFIFVQREFURSBPUiBJTlNFUlQgT04gdGVz dF90c3ZlY3RvcgogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRzdmVjdG9yX3Vw ZGF0ZV90cmlnZ2VyKGEsICdwZ19jYXRhbG9nLmVuZ2xpc2gnLCB0KTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCmluZGV4IDE2MzVhZGRlMmQ0Li4xNjBl Nzc5OTcxNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3Zp ZXdzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3Fs CkBAIC0xMjUsNyArMTI1LDcgQEAgSU5TRVJUIElOVE8gcndfdmlldzE2IFZBTFVFUyAoMywg J1JvdyAzJywgMyk7IC0tIHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyByd192aWV3MTYgKGEs IGIpIFZBTFVFUyAoMywgJ1JvdyAzJyk7IC0tIHNob3VsZCBiZSBPSwogVVBEQVRFIHJ3X3Zp ZXcxNiBTRVQgYT0zLCBhYT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBmYWlsCiBVUERBVEUg cndfdmlldzE2IFNFVCBhYT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBiZSBPSwotU0VMRUNU ICogRlJPTSBiYXNlX3RibDsKK1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsK IERFTEVURSBGUk9NIHJ3X3ZpZXcxNiBXSEVSRSBhPS0zOyAtLSBzaG91bGQgYmUgT0sKIC0t IFJlYWQtb25seSB2aWV3cwogSU5TRVJUIElOVE8gcm9fdmlldzE3IFZBTFVFUyAoMywgJ1JP VyAzJyk7Ci0tIAoyLjUxLjIKCg== --387776ee575d4b4c937a32b0285dd6b9--