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 1wZ7bQ-000myg-1y for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2026 13:43:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZ7bP-00CCeo-1e for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2026 13:43:47 +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 1wZ7bO-00CCeg-2S for pgsql-hackers@lists.postgresql.org; Mon, 15 Jun 2026 13:43:47 +0000 Received: from mail-ua1-x932.google.com ([2607:f8b0:4864:20::932]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZ7bJ-00000000Wo4-2OLo for pgsql-hackers@postgresql.org; Mon, 15 Jun 2026 13:43:46 +0000 Received: by mail-ua1-x932.google.com with SMTP id a1e0cc1a2514c-963b04fd87aso1342715241.0 for ; Mon, 15 Jun 2026 06:43:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20251104.gappssmtp.com; s=20251104; t=1781531018; x=1782135818; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=bpjq7EzWoEuS693NWAfnK5rcfqVQRdMd3nc9aZl2Qpk=; b=I3+pLatfDWszw8/sbdfaipaeSZXdJUBRiGOYOPbG7VxsLdTkl4ULVXsxHbBz2KSl// 9OVMWerxGCzpZPEoBfCRwLLitodc82pNf5QVFfuCyPdx3nsJc9rQ97oOaAOESUirR9XL eiLDBYX6fKdtbpsMTxDFmHQpuguMwh11jA+RmTZUU+eJZVsp0DmS6ClBZzEAoW0nxkUQ WTDdGnplkzXh576KTGRJEPR1rve6qwJXGUYChnuv9EwMTz6lPYRMyLScpH9MVp2o7dNH vynMwV68bRT48r31dZU4l9yHASeVlZ1YUVuum3pECCt9EHfxsmQB4PFcChL3VKP3oLCi NNYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781531018; x=1782135818; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=bpjq7EzWoEuS693NWAfnK5rcfqVQRdMd3nc9aZl2Qpk=; b=NSsGRIU5nE2GJL2kGM/c2kWslpBqGxH9AylPRHGVwLLjsUGaTGP5DMc1fJIxEMSi/3 KsJlnAy6VOCoSBco1oBJiAcERJBypXMXRz0rcKDEGK23bZXTEi3mJRJ2FAUBhMkzHxR6 jUlIjiY7MMcp2lTs8d85+EKEAerxg9jSU1LULJbsv4vi282D7YNF1XU9Wl6kzsB+fiUC uE+gwZvaJzvNPgTksW3x3bs/IE8Mq/y2VOpf9mRr+Y0Fe8m6gDCGTOt0yRPmCfBrUUkG 0XzIEv2oDIgySMvsFEWKbCzS5iFNkhoKN8IZkoepuuEEG4SL/ZAffrHOqAo0PWoUcCQs RZbA== X-Gm-Message-State: AOJu0YwqgTmib3ueyA1kYPJDP1G91ug3SfSvhccoPMV9vcQUGr9RZkDO GPewaoqidE9Z6NU8tAgb0gYS91jBK+UtPXa+w3AYL6sfMqxvbRWD18IV8zvnXrd6IlmbyExwgjI puENX X-Gm-Gg: Acq92OE1i+0fcpi2TSYw+CA3ifl2LHA/vtVXKqEOUzl2MEU9ozIOyoStLndg6BYiiQA uLKitcQt/ocE+WmTtHJ0tdQqtf58W2AEy49c5uXC6mCui9t+qUhFGUm9uM0vnQk3MNU9BLJGE3n xBhfpTJfaSiLVxjoeQW+KHKTZiPKNLnoKGHQJWcjHuP8k12CRtHe/ZSgBr7vjcPyD+y0UlHhWHE anh76R7TWNpvfh9OfWYEOQtd+ybSOLaRDc5920vi8/aeMIeLdTH5QYSN6eMqTx1PKvcgVXRzuIk SCjqFa4tnLKKOsN6MvT9rWE5cqf/Bld64T05azdzlgdQ18mP+sFsY8QXirmLPAgyVrduT0aMc6D F9cuEeKuKKcMb7OJKk4hJAAIpynnzMvoFFbhN3+xpUUeOhvzqoj90K9b8bGBZHjrRbCJhOKN/5O FysKMV79S4k1qtcrGo5BKToeYmRI9xiyUuwwUaU5Bs4oYdPqvsvMzlt6Ba9FdyIk616z6V3YQ= X-Received: by 2002:a05:6102:2ad2:b0:71e:1c56:e78e with SMTP id ada2fe7eead31-71e88c4e645mr6773497137.17.1781531017982; Mon, 15 Jun 2026 06:43:37 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500:ccb8:56eb:bfc6:86b5? ([2605:a601:a6b0:500:ccb8:56eb:bfc6:86b5]) by smtp.googlemail.com with ESMTPSA id a1e0cc1a2514c-966a05a7067sm3026458241.9.2026.06.15.06.43.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 15 Jun 2026 06:43:37 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------iATMJHJEeQMb5QczqNM9768Z" Message-ID: Date: Mon, 15 Jun 2026 09:43:35 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BackgroundPsql swallowing errors on windows From: Andrew Dunstan To: Andres Freund Cc: pgsql-hackers@postgresql.org, Noah Misch References: <762648ad-99b5-4871-beaa-ca275e46ef6e@dunslane.net> <5dgt6vir7n664qruw3ndywpmfxsmfuu4oeh43syocgo3g6v72n@hjxahrqk4w7t> <1779b4d6-768f-4edb-8cd6-62706d321f32@dunslane.net> <1880b789-cb54-4162-ae19-9eb29fabc8da@dunslane.net> <3510c901-b760-4534-9371-8a921d955549@dunslane.net> <506de8d3-e2b1-4929-88d8-96253d5e4121@dunslane.net> <455b56c8-436d-45fe-b70b-314e11ca65fc@dunslane.net> Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: <455b56c8-436d-45fe-b70b-314e11ca65fc@dunslane.net> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------iATMJHJEeQMb5QczqNM9768Z Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-06-12 Fr 6:39 PM, Andrew Dunstan wrote: > > On 2026-06-10 We 4:23 PM, Andrew Dunstan wrote: >> >> On 2026-06-03 We 5:23 PM, Andrew Dunstan wrote: >>> >>> On 2026-06-02 Tu 3:03 PM, Andrew Dunstan wrote: >>>> >>>> On 2026-02-18 We 2:41 PM, Andrew Dunstan wrote: >>>>> >>>>> On 2026-02-17 Tu 4:56 PM, Andres Freund wrote: >>>>>> Hi, >>>>>> >>>>>> On 2026-02-17 16:31:02 -0500, Andrew Dunstan wrote: >>>>>>> On 2026-02-16 Mo 7:17 PM, Andres Freund wrote: >>>>>>>> I briefly tried this out. The overall resource usage of the >>>>>>>> test is noticeably >>>>>>>> reduced - and that's on linux with fast fork, so it should be >>>>>>>> considerably >>>>>>>> better on windows.  However, the tests take a lot longer than >>>>>>>> before, I think >>>>>>>> mostly due to polling for results rather than waiting for them >>>>>>>> to be ready >>>>>>>> using PQsocketPoll() or such. >>>>>>>> >>>>>>>> E.g. bloom/001_wal takes about 15s on HEAD for me, but 138s >>>>>>>> with the patch. I >>>>>>>> think that's just due to the various usleep(100_000); >>>>>>>> >>>>>>>> >>>>>>>> FWIW, oauth_validator/001_server fails with the patch at the >>>>>>>> moment. >>>>>>>> >>>>>>> Try this version. On my machine it's now a few percent faster. I >>>>>>> fixed the >>>>>>> polling. I also added pipeline support for large sets of >>>>>>> commands, to >>>>>>> minimize roundtrips. >>>>>> Nice!  Will try it out. >>>>>> >>>>>> >>>>>> Have you tried it on windows already? That's where we pay by far >>>>>> the biggest >>>>>> price due to all the unnecessary process creations... >>>>>> >>>>>> It looks like strawberry perl has FFI::Platypus, but not FFI::C.  >>>>>> There is >>>>>> perl/vendor/lib/FFI/Platypus/Lang/C.pm, but that just seems like >>>>>> it's >>>>>> documentation.  There is however FFI::Platypus::Record, which >>>>>> maybe could >>>>>> suffice? >>>>>> >>>>>> Do we actually need FFI::C, or can we work around not having it? >>>>>> Looks like >>>>>> it's just used for notify related stuff. >>>>>> >>>>>> It looks like mingw doesn't have packages for FFI::Platypus, but >>>>>> it'll >>>>>> probably be a lot easier to build that than when using msvc. >>>>>> >>>>>> >>>>> >>>>> I replaced the use of FFI::C with FFI::Platypus::Record. That >>>>> comes for free with FFI::Platypus, so there would be no extra >>>>> dependency. It means a little extra housekeeping so we don't lose >>>>> track of the pointer for later use with PQfreemem, but it's not >>>>> too bad. >>>>> >>>>> I have tried it out with Windows, seemed to work OK although the >>>>> xid_wraparound tests 2 and 3 timed out. >>>>> >>>>> Latest is attached. >>>>> >>>>> >>>>> >>>> >>>> Here is v12. I removed the XS variant in this version, which makes >>>> things simpler. We can restore it if necessary. >>>> >>>> Patch 1 adds the new framework >>>> >>>> Patch 2 adapts Cluster.pm to it, as well as handling some >>>> instability at global destruction time that was exacerbated by >>>> using FFI::Platypus. >>>> >>>> Patch 3 makes improvements in the individual TAP tests using the >>>> framework, including removing every one of the calls to >>>> background_psql(). >>>> >>>> >>>> I'm going to add this to the CF and will start testing (again) on >>>> Windows. >>>> >>>> >>>> >>> >>> v13 attached now passes all tests on my Windows machine. >>> >>> >>> >> >> rebased, including porting a new use of background_psql. >> >> >> > > v15 including a check for FFI::Platypus at setup time, and CI > modifications to allow tests to pass. > > > v16 follows several rounds of review, and tightens up a lot of things, so now errors don't silently disappear, or failing tests hang where previously they would time out. There has also been some code cleanup, removal of magic numbers (you can now check for CONNECTION_OK for example), removal of some dead code. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------iATMJHJEeQMb5QczqNM9768Z Content-Type: text/x-patch; charset=UTF-8; name="v16-0001-Add-PostgreSQL-Test-Session-for-libpq-based-TAP-.patch" Content-Disposition: attachment; filename*0="v16-0001-Add-PostgreSQL-Test-Session-for-libpq-based-TAP-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZDllMWY0OTAyMzYxOTg0ZjcxZGRhNzI5ZDQwZGU3Y2M3Nzc3Y2VkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAzIEp1biAyMDI2IDA5OjUwOjE3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMS81XSBBZGQgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiBmb3IgbGlicHEt YmFzZWQgVEFQCiB0ZXN0IHNlc3Npb25zCgpJbnRyb2R1Y2UgYSBzZXNzaW9uIG9iamVjdCBm b3IgVEFQIHRlc3RzIHRoYXQgdGFsa3MgdG8gdGhlIHNlcnZlcgpkaXJlY3RseSB0aHJvdWdo IGxpYnBxIGluc3RlYWQgb2Ygc3Bhd25pbmcgYSBwc3FsIGNoaWxkIHByb2Nlc3MgZm9yCmVh Y2ggYmFja2dyb3VuZCBzZXNzaW9uLiAgQ29ubmVjdGluZyBpbi1wcm9jZXNzIGF2b2lkcyB0 aGUgb3ZlcmhlYWQgYW5kCmZyYWdpbGl0eSBvZiBkcml2aW5nIHBzcWwgb3ZlciBwaXBlcyBh bmQgZ2l2ZXMgdGVzdHMgc3luY2hyb25vdXMgYW5kCmFzeW5jaHJvbm91cyBxdWVyeSBpbnRl cmZhY2VzLCBub3RpY2UgY2FwdHVyZSwgYW5kIHBpcGVsaW5lZCBxdWVyaWVzLgoKbGlicHEg aXMgcmVhY2hlZCB0aHJvdWdoIGFuIEZGSTo6UGxhdHlwdXMgd3JhcHBlciwgc28gbm8gY29t cGlsZWQgWFMKbW9kdWxlIGlzIHJlcXVpcmVkLiAgVGhlIG5ldyBtb2R1bGVzIGFyZToKCiAg UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiAgLSB0aGUgbGlicHEgc2Vzc2lvbiBvYmplY3QK ICBQb3N0Z3JlU1FMOjpQcUZGSSAgICAgICAgICAtIEZGSSBiaW5kaW5ncyB0byBsaWJwcQog IFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzICAgIC0gbGlicHEgY29uc3RhbnRzCiAgUG9zdGdy ZVNRTDo6UEdUeXBlcyAgICAgICAgLSBsaWJwcSB0eXBlIE9JRCBkZWZpbml0aW9ucwogIFBv c3RncmVTUUw6OkZpbmRMaWIgICAgICAgIC0gbG9jYXRlIHRoZSBsaWJwcSBzaGFyZWQgbGli cmFyeQoKVW5sZXNzIHRoZSBjb25uZWN0aW9uIHN0cmluZyBhbHJlYWR5IG5hbWVzIGEgcm9s ZSwgdGhlIHNlc3Npb24gcGlucyB0aGUKY29ubmVjdGluZyB1c2VyIHRvIHRoZSBvcGVyYXRp bmctc3lzdGVtIHVzZXIgcmF0aGVyIHRoYW4gbGV0dGluZyBhIHN0cmF5ClBHVVNFUiBpbiB0 aGUgZW52aXJvbm1lbnQgc2VsZWN0IGl0OyB0aGlzIG1hdGNoZXMgaG93IHRoZSByZXN0IG9m IHRoZQp0ZXN0IGZyYW1ld29yayBjb25uZWN0cyBhbmQsIGluIHBhcnRpY3VsYXIsIHRoZSBT U1BJIHVzZXJtYXAgdXNlZCBvbgpXaW5kb3dzLiAgQSBmYWlsZWQgY29ubmVjdGlvbiByZWNv cmRzIHRoZSBsaWJwcSBlcnJvciBtZXNzYWdlIChpbgokUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbjo6Y29ubmVjdF9lcnJvcikgYmVmb3JlIHJldHVybmluZyB1bmRlZiwgc28KY2FsbGVy cyB0aGF0IHRyZWF0IHRoZSBmYWlsdXJlIGFzIGZhdGFsIGNhbiByZXBvcnQgd2h5LgoKSW5z dGFsbCB0aGUgbmV3IG1vZHVsZXMgZnJvbSBib3RoIHRoZSBtYWtlIGFuZCBtZXNvbiBidWls ZHMuCi0tLQogc3JjL3Rlc3QvcGVybC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAg MTAgKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML0ZpbmRMaWIucG0gICAgICB8ICAxNjQg KysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gICAgICB8ICAzNTYg KysrKysrKysKIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUNvbnN0YW50cy5wbSAgfCAg MTg1ICsrKysKIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUZGSS5wbSAgICAgICAgfCAg NDY1ICsrKysrKysrKysKIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24u cG0gfCAxMDQ4ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3BlcmwvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgfCAgICA1ICsKIDcgZmlsZXMgY2hhbmdlZCwgMjIzMyBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML0ZpbmRMaWIucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9wZXJsL1Bvc3Rn cmVTUUwvUEdUeXBlcy5wbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9QcUNvbnN0YW50cy5wbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9QcUZGSS5wbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9w ZXJsL01ha2VmaWxlIGIvc3JjL3Rlc3QvcGVybC9NYWtlZmlsZQppbmRleCBmZDRmZGFmNzAw Yi4uZDIzNGNjNTk2MDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvcGVybC9NYWtlZmlsZQpAQCAtMjUsOSArMjUsMTQgQEAgaW5zdGFsbDog YWxsIGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0Z3JlU1FM L1Rlc3QvS2VyYmVyb3MucG0gJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0 Z3JlU1FML1Rlc3QvS2VyYmVyb3MucG0nCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Q b3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJk aXIpL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAkKHNy Y2RpcikvUG9zdGdyZVNRTC9UZXN0L0JhY2tncm91bmRQc3FsLnBtICckKERFU1RESVIpJChw Z3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L0JhY2tncm91bmRQc3FsLnBtJwor CSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0g JyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvU2Vzc2lv bi5wbScKIAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVGVzdC9BZGp1 c3REdW1wLnBtICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9U ZXN0L0FkanVzdER1bXAucG0nCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0Z3Jl U1FML1Rlc3QvQWRqdXN0VXBncmFkZS5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJk aXIpL1Bvc3RncmVTUUwvVGVzdC9BZGp1c3RVcGdyYWRlLnBtJwogCSQoSU5TVEFMTF9EQVRB KSAkKHNyY2RpcikvUG9zdGdyZVNRTC9WZXJzaW9uLnBtICckKERFU1RESVIpJChwZ3hzZGly KS8kKHN1YmRpcikvUG9zdGdyZVNRTC9WZXJzaW9uLnBtJworCSQoSU5TVEFMTF9EQVRBKSAk KHNyY2RpcikvUG9zdGdyZVNRTC9GaW5kTGliLnBtICckKERFU1RESVIpJChwZ3hzZGlyKS8k KHN1YmRpcikvUG9zdGdyZVNRTC9GaW5kTGliLnBtJworCSQoSU5TVEFMTF9EQVRBKSAkKHNy Y2RpcikvUG9zdGdyZVNRTC9QcUZGSS5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJk aXIpL1Bvc3RncmVTUUwvUHFGRkkucG0nCisJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Q b3N0Z3JlU1FML1BxQ29uc3RhbnRzLnBtICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRp cikvUG9zdGdyZVNRTC9QcUNvbnN0YW50cy5wbScKKwkkKElOU1RBTExfREFUQSkgJChzcmNk aXIpL1Bvc3RncmVTUUwvUEdUeXBlcy5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJk aXIpL1Bvc3RncmVTUUwvUEdUeXBlcy5wbScKIAogdW5pbnN0YWxsOgogCXJtIC1mICckKERF U1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtJwpA QCAtMzYsOCArNDEsMTMgQEAgdW5pbnN0YWxsOgogCXJtIC1mICckKERFU1RESVIpJChwZ3hz ZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L0tlcmJlcm9zLnBtJwogCXJtIC1mICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIu cG0nCiAJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FM L1Rlc3QvQmFja2dyb3VuZFBzcWwucG0nCisJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIp LyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvU2Vzc2lvbi5wbScKIAlybSAtZiAnJChERVNU RElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9BZGp1c3REdW1wLnBt JwogCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9U ZXN0L0FkanVzdFVwZ3JhZGUucG0nCiAJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQo c3ViZGlyKS9Qb3N0Z3JlU1FML1ZlcnNpb24ucG0nCisJcm0gLWYgJyQoREVTVERJUikkKHBn eHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML0ZpbmRMaWIucG0nCisJcm0gLWYgJyQoREVT VERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1BxRkZJLnBtJworCXJtIC1m ICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9QcUNvbnN0YW50 cy5wbScKKwlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVT UUwvUEdUeXBlcy5wbScKIAogZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9GaW5kTGliLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML0ZpbmRMaWIu cG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI0MjkwYzg0YzRm Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML0ZpbmRMaWIu cG0KQEAgLTAsMCArMSwxNjQgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworPXBvZAorCis9aGVhZDEgTkFN RQorCitQb3N0Z3JlU1FMOjpGaW5kTGliIC0gZmluZCBzaGFyZWQgbGlicmFyaWVzIGZvciBQ b3N0Z3JlU1FMIFRBUCB0ZXN0cworCis9aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9zdGdy ZVNRTDo6RmluZExpYjsKKworICBteSAkbGlicGF0aCA9IGZpbmRfbGliX29yX2RpZSgKKyAg ICAgIGxpYiAgICAgPT4gJ3BxJywKKyAgICAgIGxpYnBhdGggPT4gWycvdXNyL2xvY2FsL3Bn c3FsL2xpYiddLAorICApOworCis9aGVhZDEgREVTQ1JJUFRJT04KKworVGhpcyBtb2R1bGUg cHJvdmlkZXMgYSBzaW1wbGUgbWVjaGFuaXNtIHRvIGxvY2F0ZSBzaGFyZWQgbGlicmFyaWVz LAordXNlZCBhcyBhIGxpZ2h0d2VpZ2h0IHJlcGxhY2VtZW50IGZvciBDPEZGSTo6Q2hlY2tM aWI+LiBJdCBzZWFyY2hlcworZm9yIGxpYnJhcmllcyBpbiBzcGVjaWZpZWQgcGF0aHMgYW5k IGNvbW1vbiBzeXN0ZW0gbG9jYXRpb25zLgorCis9aGVhZDEgRVhQT1JURUQgRlVOQ1RJT05T CisKKz1vdmVyCisKKz1pdGVtIGZpbmRfbGliX29yX2RpZSglYXJncykKKworU2VhcmNoZXMg Zm9yIGEgc2hhcmVkIGxpYnJhcnkgYW5kIHJldHVybnMgaXRzIGZ1bGwgcGF0aC4gRGllcyBp ZiB0aGUKK2xpYnJhcnkgY2Fubm90IGJlIGZvdW5kLgorCitBcmd1bWVudHM6CisKKz1vdmVy CisKKz1pdGVtIGxpYiA9PiAkbmFtZQorCitSZXF1aXJlZC4gVGhlIGxpYnJhcnkgbmFtZSB3 aXRob3V0IHByZWZpeCBvciBzdWZmaXggKGUuZy4sIEM8J3BxJz4gZm9yCitDPGxpYnBxLnNv PikuCisKKz1pdGVtIGxpYnBhdGggPT4gXEBwYXRocworCitPcHRpb25hbC4gQXJyYXkgb2Yg ZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZpcnN0LgorCis9aXRlbSBzeXN0ZW1wYXRoID0+IFxA cGF0aHMKKworT3B0aW9uYWwuIElmIHNldCB0byBhbiBlbXB0eSBhcnJheSBDPFtdPiwgc3lz dGVtIHBhdGhzIHdpbGwgbm90IGJlIHNlYXJjaGVkLgorCis9YmFjaworCis9YmFjaworCis9 Y3V0CisKK3BhY2thZ2UgUG9zdGdyZVNRTDo6RmluZExpYjsKKwordXNlIHN0cmljdDsKK3Vz ZSB3YXJuaW5ncyBGQVRBTCA9PiBxdyhhbGwpOworCit1c2UgRXhwb3J0ZXIgcXcoaW1wb3J0 KTsKK3VzZSBGaWxlOjpTcGVjOwordXNlIENvbmZpZzsKKworb3VyIEBFWFBPUlQgPSBxdyhm aW5kX2xpYl9vcl9kaWUpOworCitzdWIgZmluZF9saWJfb3JfZGllCit7CisJbXkgJWFyZ3Mg PSBAXzsKKworCW15ICRsaWJuYW1lID0gJGFyZ3N7bGlifSBvciBkaWUgImZpbmRfbGliX29y X2RpZTogJ2xpYicgYXJndW1lbnQgcmVxdWlyZWQiOworCW15ICRsaWJwYXRoID0gJGFyZ3N7 bGlicGF0aH0gLy8gW107CisJbXkgJHN5c3RlbXBhdGggPSAkYXJnc3tzeXN0ZW1wYXRofTsK KworCW15IEBzZWFyY2hfcGF0aHMgPSBAJGxpYnBhdGg7CisKKwkjIEFkZCBzeXN0ZW0gcGF0 aHMgdW5sZXNzIGV4cGxpY2l0bHkgZGlzYWJsZWQKKwl1bmxlc3MgKGRlZmluZWQgJHN5c3Rl bXBhdGggJiYgcmVmKCRzeXN0ZW1wYXRoKSBlcSAnQVJSQVknICYmIEAkc3lzdGVtcGF0aCA9 PSAwKQorCXsKKwkJcHVzaCBAc2VhcmNoX3BhdGhzLCBfZ2V0X3N5c3RlbV9saWJfcGF0aHMo KTsKKwl9CisKKwkjIERldGVybWluZSBsaWJyYXJ5IGZpbGUgcGF0dGVybnMgYmFzZWQgb24g T1MKKwlteSBAcGF0dGVybnMgPSBfZ2V0X2xpYl9wYXR0ZXJucygkbGlibmFtZSk7CisKKwlm b3IgbXkgJGRpciAoQHNlYXJjaF9wYXRocykKKwl7CisJCW5leHQgdW5sZXNzIC1kICRkaXI7 CisKKwkJZm9yIG15ICRwYXR0ZXJuIChAcGF0dGVybnMpCisJCXsKKwkJCW15IEBtYXRjaGVz ID0gZ2xvYihGaWxlOjpTcGVjLT5jYXRmaWxlKCRkaXIsICRwYXR0ZXJuKSk7CisJCQlmb3Ig bXkgJG1hdGNoIChAbWF0Y2hlcykKKwkJCXsKKwkJCQlyZXR1cm4gJG1hdGNoIGlmIC1mICRt YXRjaCAmJiAtciAkbWF0Y2g7CisJCQl9CisJCX0KKwl9CisKKwlkaWUgImZpbmRfbGliX29y X2RpZTogdW5hYmxlIHRvIGZpbmQgbGliJGxpYm5hbWUgaW46ICIgLiBqb2luKCIsICIsIEBz ZWFyY2hfcGF0aHMpOworfQorCitzdWIgX2dldF9saWJfcGF0dGVybnMKK3sKKwlteSAkbGli bmFtZSA9IHNoaWZ0OworCisJaWYgKCReTyBlcSAnZGFyd2luJykKKwl7CisJCXJldHVybiAo ImxpYiRsaWJuYW1lLmR5bGliIiwgImxpYiRsaWJuYW1lLiouZHlsaWIiKTsKKwl9CisJZWxz aWYgKCReTyBlcSAnTVNXaW4zMicgfHwgJF5PIGVxICdjeWd3aW4nKQorCXsKKwkJcmV0dXJu ICgiJGxpYm5hbWUuZGxsIiwgImxpYiRsaWJuYW1lLmRsbCIpOworCX0KKwllbHNlCisJewor CQkjIExpbnV4IGFuZCBvdGhlciBVbml4LWxpa2Ugc3lzdGVtcworCQlyZXR1cm4gKCJsaWIk bGlibmFtZS5zbyIsICJsaWIkbGlibmFtZS5zby4qIik7CisJfQorfQorCitzdWIgX2dldF9z eXN0ZW1fbGliX3BhdGhzCit7CisJbXkgQHBhdGhzOworCisJIyBDb21tb24gc3lzdGVtIGxp YnJhcnkgcGF0aHMKKwlwdXNoIEBwYXRocywgJy91c3IvbGliJywgJy91c3IvbG9jYWwvbGli JywgJy9saWInOworCisJIyBBZGQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGhzIG9uIExp bnV4CisJaWYgKCReTyBlcSAnbGludXgnKQorCXsKKwkJcHVzaCBAcGF0aHMsICcvdXNyL2xp Yi94ODZfNjQtbGludXgtZ251JywgJy91c3IvbGliL2FhcmNoNjQtbGludXgtZ251JzsKKwkJ cHVzaCBAcGF0aHMsICcvdXNyL2xpYjY0JywgJy9saWI2NCc7CisJfQorCisJIyBBZGQgcGF0 aHMgZnJvbSBMRF9MSUJSQVJZX1BBVEgKKwlpZiAoJEVOVntMRF9MSUJSQVJZX1BBVEh9KQor CXsKKwkJcHVzaCBAcGF0aHMsIHNwbGl0KC86LywgJEVOVntMRF9MSUJSQVJZX1BBVEh9KTsK Kwl9CisKKwkjIG1hY09TIHNwZWNpZmljCisJaWYgKCReTyBlcSAnZGFyd2luJykKKwl7CisJ CXB1c2ggQHBhdGhzLCAnL29wdC9ob21lYnJldy9saWInLCAnL3Vzci9sb2NhbC9vcHQvbGli cHEvbGliJzsKKwkJaWYgKCRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9KQorCQl7CisJCQlwdXNo IEBwYXRocywgc3BsaXQoLzovLCAkRU5We0RZTERfTElCUkFSWV9QQVRIfSk7CisJCX0KKwl9 CisKKwlyZXR1cm4gQHBhdGhzOworfQorCis9cG9kCisKKz1oZWFkMSBTRUUgQUxTTworCitM PFBvc3RncmVTUUw6OlBxRkZJPgorCis9Y3V0CisKKzE7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9wZXJsL1Bvc3RncmVTUUwvUEdUeXBlcy5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9QR1R5cGVzLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4y YmMwMDdjMzIzYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9QR1R5cGVzLnBtCkBAIC0wLDAgKzEsMzU2IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIx LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKz1wb2QKKwor PWhlYWQxIE5BTUUKKworUG9zdGdyZVNRTDo6UEdUeXBlcyAtIFBvc3RncmVTUUwgYmFja2Vu ZCB0eXBlIE9JRCBjb25zdGFudHMKKworPWhlYWQxIFNZTk9QU0lTCisKKyAgdXNlIFBvc3Rn cmVTUUw6OlBHVHlwZXM7CisKKyAgaWYgKCR0eXBlX29pZCA9PSBURVhUT0lEKSB7IC4uLiB9 CisKKyAgaWYgKCR0eXBlX29pZCA9PSBJTlQ0QVJSQVlPSUQpIHsgLi4uIH0KKworPWhlYWQx IERFU0NSSVBUSU9OCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGNvbnN0YW50cyBmb3IgUG9z dGdyZVNRTCBiYWNrZW5kIHR5cGUgT0lEcywgYXMgZGVmaW5lZAoraW4gQzxzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3R5cGVfZC5oPi4gVGhlc2UgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkg Y29sdW1uCit0eXBlcyBpbiBxdWVyeSByZXN1bHRzIHZpYSBDPFBRZnR5cGUoKT4uCisKK0Fs bCBjb25zdGFudHMgYXJlIGV4cG9ydGVkIGJ5IGRlZmF1bHQuCisKKz1oZWFkMSBFWFBPUlRF RCBDT05TVEFOVFMKKworPWhlYWQyIEJhc2ljIFR5cGVzCisKK0M8Qk9PTE9JRD4sIEM8QllU RUFPSUQ+LCBDPENIQVJPSUQ+LCBDPE5BTUVPSUQ+LCBDPElOVDhPSUQ+LCBDPElOVDJPSUQ+ LAorQzxJTlQyVkVDVE9ST0lEPiwgQzxJTlQ0T0lEPiwgQzxURVhUT0lEPiwgQzxPSURPSUQ+ LCBDPFRJRE9JRD4sIEM8WElET0lEPiwKK0M8Q0lET0lEPiwgQzxPSURWRUNUT1JPSUQ+LCBD PEpTT05PSUQ+LCBDPFhNTE9JRD4sIEM8WElEOE9JRD4sIEM8UE9JTlRPSUQ+LAorQzxMU0VH T0lEPiwgQzxQQVRIT0lEPiwgQzxCT1hPSUQ+LCBDPFBPTFlHT05PSUQ+LCBDPExJTkVPSUQ+ LCBDPEZMT0FUNE9JRD4sCitDPEZMT0FUOE9JRD4sIEM8VU5LTk9XTk9JRD4sIEM8Q0lSQ0xF T0lEPiwgQzxNT05FWU9JRD4sIEM8TUFDQUREUk9JRD4sCitDPElORVRPSUQ+LCBDPENJRFJP SUQ+LCBDPE1BQ0FERFI4T0lEPiwgQzxBQ0xJVEVNT0lEPiwgQzxCUENIQVJPSUQ+LAorQzxW QVJDSEFST0lEPiwgQzxEQVRFT0lEPiwgQzxUSU1FT0lEPiwgQzxUSU1FU1RBTVBPSUQ+LCBD PFRJTUVTVEFNUFRaT0lEPiwKK0M8SU5URVJWQUxPSUQ+LCBDPFRJTUVUWk9JRD4sIEM8QklU T0lEPiwgQzxWQVJCSVRPSUQ+LCBDPE5VTUVSSUNPSUQ+LAorQzxSRUZDVVJTT1JPSUQ+LCBD PFVVSURPSUQ+LCBDPFRTVkVDVE9ST0lEPiwgQzxHVFNWRUNUT1JPSUQ+LCBDPFRTUVVFUllP SUQ+LAorQzxKU09OQk9JRD4sIEM8SlNPTlBBVEhPSUQ+LCBDPFRYSURfU05BUFNIT1RPSUQ+ CisKKz1oZWFkMiBSYW5nZSBUeXBlcworCitDPElOVDRSQU5HRU9JRD4sIEM8TlVNUkFOR0VP SUQ+LCBDPFRTUkFOR0VPSUQ+LCBDPFRTVFpSQU5HRU9JRD4sCitDPERBVEVSQU5HRU9JRD4s IEM8SU5UOFJBTkdFT0lEPgorCis9aGVhZDIgTXVsdGlyYW5nZSBUeXBlcworCitDPElOVDRN VUxUSVJBTkdFT0lEPiwgQzxOVU1NVUxUSVJBTkdFT0lEPiwgQzxUU01VTFRJUkFOR0VPSUQ+ LAorQzxUU1RaTVVMVElSQU5HRU9JRD4sIEM8REFURU1VTFRJUkFOR0VPSUQ+LCBDPElOVDhN VUxUSVJBTkdFT0lEPgorCis9aGVhZDIgUHNldWRvIFR5cGVzCisKK0M8UkVDT1JET0lEPiwg QzxSRUNPUkRBUlJBWU9JRD4sIEM8Q1NUUklOR09JRD4sIEM8Vk9JRE9JRD4sIEM8VFJJR0dF Uk9JRD4sCitDPEVWRU5UX1RSSUdHRVJPSUQ+CisKKz1oZWFkMiBBcnJheSBUeXBlcworCitB cnJheSB0eXBlIE9JRHMgZm9sbG93IHRoZSBwYXR0ZXJuIEM8e0JBU0VOQU1FfUFSUkFZT0lE PiwgZS5nLiwgQzxURVhUQVJSQVlPSUQ+LAorQzxJTlQ0QVJSQVlPSUQ+LCBDPEpTT05CQVJS QVlPSUQ+LgorCis9Y3V0CisKK3BhY2thZ2UgUG9zdGdyZVNRTDo6UEdUeXBlczsKKwordXNl IHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiBxdyhhbGwpOworCit1c2UgRXhwb3J0 ZXIgcXcoaW1wb3J0KTsKKworb3VyIEBFWFBPUlQgPSBxdygKKworICBCT09MT0lECisgIEJZ VEVBT0lECisgIENIQVJPSUQKKyAgTkFNRU9JRAorICBJTlQ4T0lECisgIElOVDJPSUQKKyAg SU5UMlZFQ1RPUk9JRAorICBJTlQ0T0lECisgIFRFWFRPSUQKKyAgT0lET0lECisgIFRJRE9J RAorICBYSURPSUQKKyAgQ0lET0lECisgIE9JRFZFQ1RPUk9JRAorICBKU09OT0lECisgIFhN TE9JRAorICBYSUQ4T0lECisgIFBPSU5UT0lECisgIExTRUdPSUQKKyAgUEFUSE9JRAorICBC T1hPSUQKKyAgUE9MWUdPTk9JRAorICBMSU5FT0lECisgIEZMT0FUNE9JRAorICBGTE9BVDhP SUQKKyAgVU5LTk9XTk9JRAorICBDSVJDTEVPSUQKKyAgTU9ORVlPSUQKKyAgTUFDQUREUk9J RAorICBJTkVUT0lECisgIENJRFJPSUQKKyAgTUFDQUREUjhPSUQKKyAgQUNMSVRFTU9JRAor ICBCUENIQVJPSUQKKyAgVkFSQ0hBUk9JRAorICBEQVRFT0lECisgIFRJTUVPSUQKKyAgVElN RVNUQU1QT0lECisgIFRJTUVTVEFNUFRaT0lECisgIElOVEVSVkFMT0lECisgIFRJTUVUWk9J RAorICBCSVRPSUQKKyAgVkFSQklUT0lECisgIE5VTUVSSUNPSUQKKyAgUkVGQ1VSU09ST0lE CisgIFVVSURPSUQKKyAgVFNWRUNUT1JPSUQKKyAgR1RTVkVDVE9ST0lECisgIFRTUVVFUllP SUQKKyAgSlNPTkJPSUQKKyAgSlNPTlBBVEhPSUQKKyAgVFhJRF9TTkFQU0hPVE9JRAorICBJ TlQ0UkFOR0VPSUQKKyAgTlVNUkFOR0VPSUQKKyAgVFNSQU5HRU9JRAorICBUU1RaUkFOR0VP SUQKKyAgREFURVJBTkdFT0lECisgIElOVDhSQU5HRU9JRAorICBJTlQ0TVVMVElSQU5HRU9J RAorICBOVU1NVUxUSVJBTkdFT0lECisgIFRTTVVMVElSQU5HRU9JRAorICBUU1RaTVVMVElS QU5HRU9JRAorICBEQVRFTVVMVElSQU5HRU9JRAorICBJTlQ4TVVMVElSQU5HRU9JRAorICBS RUNPUkRPSUQKKyAgUkVDT1JEQVJSQVlPSUQKKyAgQ1NUUklOR09JRAorICBWT0lET0lECisg IFRSSUdHRVJPSUQKKyAgRVZFTlRfVFJJR0dFUk9JRAorCisgIEJPT0xBUlJBWU9JRAorICBC WVRFQUFSUkFZT0lECisgIENIQVJBUlJBWU9JRAorICBOQU1FQVJSQVlPSUQKKyAgSU5UOEFS UkFZT0lECisgIElOVDJBUlJBWU9JRAorICBJTlQyVkVDVE9SQVJSQVlPSUQKKyAgSU5UNEFS UkFZT0lECisgIFRFWFRBUlJBWU9JRAorICBPSURBUlJBWU9JRAorICBUSURBUlJBWU9JRAor ICBYSURBUlJBWU9JRAorICBDSURBUlJBWU9JRAorICBPSURWRUNUT1JBUlJBWU9JRAorICBK U09OQVJSQVlPSUQKKyAgWE1MQVJSQVlPSUQKKyAgWElEOEFSUkFZT0lECisgIFBPSU5UQVJS QVlPSUQKKyAgTFNFR0FSUkFZT0lECisgIFBBVEhBUlJBWU9JRAorICBCT1hBUlJBWU9JRAor ICBQT0xZR09OQVJSQVlPSUQKKyAgTElORUFSUkFZT0lECisgIEZMT0FUNEFSUkFZT0lECisg IEZMT0FUOEFSUkFZT0lECisgIENJUkNMRUFSUkFZT0lECisgIE1PTkVZQVJSQVlPSUQKKyAg TUFDQUREUkFSUkFZT0lECisgIElORVRBUlJBWU9JRAorICBDSURSQVJSQVlPSUQKKyAgTUFD QUREUjhBUlJBWU9JRAorICBBQ0xJVEVNQVJSQVlPSUQKKyAgQlBDSEFSQVJSQVlPSUQKKyAg VkFSQ0hBUkFSUkFZT0lECisgIERBVEVBUlJBWU9JRAorICBUSU1FQVJSQVlPSUQKKyAgVElN RVNUQU1QQVJSQVlPSUQKKyAgVElNRVNUQU1QVFpBUlJBWU9JRAorICBJTlRFUlZBTEFSUkFZ T0lECisgIFRJTUVUWkFSUkFZT0lECisgIEJJVEFSUkFZT0lECisgIFZBUkJJVEFSUkFZT0lE CisgIE5VTUVSSUNBUlJBWU9JRAorICBSRUZDVVJTT1JBUlJBWU9JRAorICBVVUlEQVJSQVlP SUQKKyAgVFNWRUNUT1JBUlJBWU9JRAorICBHVFNWRUNUT1JBUlJBWU9JRAorICBUU1FVRVJZ QVJSQVlPSUQKKyAgSlNPTkJBUlJBWU9JRAorICBKU09OUEFUSEFSUkFZT0lECisgIFRYSURf U05BUFNIT1RBUlJBWU9JRAorICBJTlQ0UkFOR0VBUlJBWU9JRAorICBOVU1SQU5HRUFSUkFZ T0lECisgIFRTUkFOR0VBUlJBWU9JRAorICBUU1RaUkFOR0VBUlJBWU9JRAorICBEQVRFUkFO R0VBUlJBWU9JRAorICBJTlQ4UkFOR0VBUlJBWU9JRAorICBJTlQ0TVVMVElSQU5HRUFSUkFZ T0lECisgIE5VTU1VTFRJUkFOR0VBUlJBWU9JRAorICBUU01VTFRJUkFOR0VBUlJBWU9JRAor ICBUU1RaTVVMVElSQU5HRUFSUkFZT0lECisgIERBVEVNVUxUSVJBTkdFQVJSQVlPSUQKKyAg SU5UOE1VTFRJUkFOR0VBUlJBWU9JRAorICBDU1RSSU5HQVJSQVlPSUQKKworKTsKKwordXNl IGNvbnN0YW50IHsKKwlCT09MT0lEICAgICAgICAgICAgICAgICA9PiAxNiwKKwlCWVRFQU9J RCAgICAgICAgICAgICAgICA9PiAxNywKKwlDSEFST0lEICAgICAgICAgICAgICAgICA9PiAx OCwKKwlOQU1FT0lEICAgICAgICAgICAgICAgICA9PiAxOSwKKwlJTlQ4T0lEICAgICAgICAg ICAgICAgICA9PiAyMCwKKwlJTlQyT0lEICAgICAgICAgICAgICAgICA9PiAyMSwKKwlJTlQy VkVDVE9ST0lEICAgICAgICAgICA9PiAyMiwKKwlJTlQ0T0lEICAgICAgICAgICAgICAgICA9 PiAyMywKKwlURVhUT0lEICAgICAgICAgICAgICAgICA9PiAyNSwKKwlPSURPSUQgICAgICAg ICAgICAgICAgICA9PiAyNiwKKwlUSURPSUQgICAgICAgICAgICAgICAgICA9PiAyNywKKwlY SURPSUQgICAgICAgICAgICAgICAgICA9PiAyOCwKKwlDSURPSUQgICAgICAgICAgICAgICAg ICA9PiAyOSwKKwlPSURWRUNUT1JPSUQgICAgICAgICAgICA9PiAzMCwKKwlKU09OT0lEICAg ICAgICAgICAgICAgICA9PiAxMTQsCisJWE1MT0lEICAgICAgICAgICAgICAgICAgPT4gMTQy LAorCVhJRDhPSUQgICAgICAgICAgICAgICAgID0+IDUwNjksCisJUE9JTlRPSUQgICAgICAg ICAgICAgICAgPT4gNjAwLAorCUxTRUdPSUQgICAgICAgICAgICAgICAgID0+IDYwMSwKKwlQ QVRIT0lEICAgICAgICAgICAgICAgICA9PiA2MDIsCisJQk9YT0lEICAgICAgICAgICAgICAg ICAgPT4gNjAzLAorCVBPTFlHT05PSUQgICAgICAgICAgICAgID0+IDYwNCwKKwlMSU5FT0lE ICAgICAgICAgICAgICAgICA9PiA2MjgsCisJRkxPQVQ0T0lEICAgICAgICAgICAgICAgPT4g NzAwLAorCUZMT0FUOE9JRCAgICAgICAgICAgICAgID0+IDcwMSwKKwlVTktOT1dOT0lEICAg ICAgICAgICAgICA9PiA3MDUsCisJQ0lSQ0xFT0lEICAgICAgICAgICAgICAgPT4gNzE4LAor CU1PTkVZT0lEICAgICAgICAgICAgICAgID0+IDc5MCwKKwlNQUNBRERST0lEICAgICAgICAg ICAgICA9PiA4MjksCisJSU5FVE9JRCAgICAgICAgICAgICAgICAgPT4gODY5LAorCUNJRFJP SUQgICAgICAgICAgICAgICAgID0+IDY1MCwKKwlNQUNBRERSOE9JRCAgICAgICAgICAgICA9 PiA3NzQsCisJQUNMSVRFTU9JRCAgICAgICAgICAgICAgPT4gMTAzMywKKwlCUENIQVJPSUQg ICAgICAgICAgICAgICA9PiAxMDQyLAorCVZBUkNIQVJPSUQgICAgICAgICAgICAgID0+IDEw NDMsCisJREFURU9JRCAgICAgICAgICAgICAgICAgPT4gMTA4MiwKKwlUSU1FT0lEICAgICAg ICAgICAgICAgICA9PiAxMDgzLAorCVRJTUVTVEFNUE9JRCAgICAgICAgICAgID0+IDExMTQs CisJVElNRVNUQU1QVFpPSUQgICAgICAgICAgPT4gMTE4NCwKKwlJTlRFUlZBTE9JRCAgICAg ICAgICAgICA9PiAxMTg2LAorCVRJTUVUWk9JRCAgICAgICAgICAgICAgID0+IDEyNjYsCisJ QklUT0lEICAgICAgICAgICAgICAgICAgPT4gMTU2MCwKKwlWQVJCSVRPSUQgICAgICAgICAg ICAgICA9PiAxNTYyLAorCU5VTUVSSUNPSUQgICAgICAgICAgICAgID0+IDE3MDAsCisJUkVG Q1VSU09ST0lEICAgICAgICAgICAgPT4gMTc5MCwKKwlVVUlET0lEICAgICAgICAgICAgICAg ICA9PiAyOTUwLAorCVRTVkVDVE9ST0lEICAgICAgICAgICAgID0+IDM2MTQsCisJR1RTVkVD VE9ST0lEICAgICAgICAgICAgPT4gMzY0MiwKKwlUU1FVRVJZT0lEICAgICAgICAgICAgICA9 PiAzNjE1LAorCUpTT05CT0lEICAgICAgICAgICAgICAgID0+IDM4MDIsCisJSlNPTlBBVEhP SUQgICAgICAgICAgICAgPT4gNDA3MiwKKwlUWElEX1NOQVBTSE9UT0lEICAgICAgICA9PiAy OTcwLAorCUlOVDRSQU5HRU9JRCAgICAgICAgICAgID0+IDM5MDQsCisJTlVNUkFOR0VPSUQg ICAgICAgICAgICAgPT4gMzkwNiwKKwlUU1JBTkdFT0lEICAgICAgICAgICAgICA9PiAzOTA4 LAorCVRTVFpSQU5HRU9JRCAgICAgICAgICAgID0+IDM5MTAsCisJREFURVJBTkdFT0lEICAg ICAgICAgICAgPT4gMzkxMiwKKwlJTlQ4UkFOR0VPSUQgICAgICAgICAgICA9PiAzOTI2LAor CUlOVDRNVUxUSVJBTkdFT0lEICAgICAgID0+IDQ0NTEsCisJTlVNTVVMVElSQU5HRU9JRCAg ICAgICAgPT4gNDUzMiwKKwlUU01VTFRJUkFOR0VPSUQgICAgICAgICA9PiA0NTMzLAorCVRT VFpNVUxUSVJBTkdFT0lEICAgICAgID0+IDQ1MzQsCisJREFURU1VTFRJUkFOR0VPSUQgICAg ICAgPT4gNDUzNSwKKwlJTlQ4TVVMVElSQU5HRU9JRCAgICAgICA9PiA0NTM2LAorCVJFQ09S RE9JRCAgICAgICAgICAgICAgID0+IDIyNDksCisJUkVDT1JEQVJSQVlPSUQgICAgICAgICAg PT4gMjI4NywKKwlDU1RSSU5HT0lEICAgICAgICAgICAgICA9PiAyMjc1LAorCVZPSURPSUQg ICAgICAgICAgICAgICAgID0+IDIyNzgsCisJVFJJR0dFUk9JRCAgICAgICAgICAgICAgPT4g MjI3OSwKKwlFVkVOVF9UUklHR0VST0lEICAgICAgICA9PiAzODM4LAorCisJQk9PTEFSUkFZ T0lEICAgICAgICAgICAgPT4gMTAwMCwKKwlCWVRFQUFSUkFZT0lEICAgICAgICAgICA9PiAx MDAxLAorCUNIQVJBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMDIsCisJTkFNRUFSUkFZT0lE ICAgICAgICAgICAgPT4gMTAwMywKKwlJTlQ4QVJSQVlPSUQgICAgICAgICAgICA9PiAxMDE2 LAorCUlOVDJBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMDUsCisJSU5UMlZFQ1RPUkFSUkFZ T0lEICAgICAgPT4gMTAwNiwKKwlJTlQ0QVJSQVlPSUQgICAgICAgICAgICA9PiAxMDA3LAor CVRFWFRBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMDksCisJT0lEQVJSQVlPSUQgICAgICAg ICAgICAgPT4gMTAyOCwKKwlUSURBUlJBWU9JRCAgICAgICAgICAgICA9PiAxMDEwLAorCVhJ REFSUkFZT0lEICAgICAgICAgICAgID0+IDEwMTEsCisJQ0lEQVJSQVlPSUQgICAgICAgICAg ICAgPT4gMTAxMiwKKwlPSURWRUNUT1JBUlJBWU9JRCAgICAgICA9PiAxMDEzLAorCUpTT05B UlJBWU9JRCAgICAgICAgICAgID0+IDE5OSwKKwlYTUxBUlJBWU9JRCAgICAgICAgICAgICA9 PiAxNDMsCisJWElEOEFSUkFZT0lEICAgICAgICAgICAgPT4gMjcxLAorCVBPSU5UQVJSQVlP SUQgICAgICAgICAgID0+IDEwMTcsCisJTFNFR0FSUkFZT0lEICAgICAgICAgICAgPT4gMTAx OCwKKwlQQVRIQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDE5LAorCUJPWEFSUkFZT0lEICAg ICAgICAgICAgID0+IDEwMjAsCisJUE9MWUdPTkFSUkFZT0lEICAgICAgICAgPT4gMTAyNywK KwlMSU5FQVJSQVlPSUQgICAgICAgICAgICA9PiA2MjksCisJRkxPQVQ0QVJSQVlPSUQgICAg ICAgICAgPT4gMTAyMSwKKwlGTE9BVDhBUlJBWU9JRCAgICAgICAgICA9PiAxMDIyLAorCUNJ UkNMRUFSUkFZT0lEICAgICAgICAgID0+IDcxOSwKKwlNT05FWUFSUkFZT0lEICAgICAgICAg ICA9PiA3OTEsCisJTUFDQUREUkFSUkFZT0lEICAgICAgICAgPT4gMTA0MCwKKwlJTkVUQVJS QVlPSUQgICAgICAgICAgICA9PiAxMDQxLAorCUNJRFJBUlJBWU9JRCAgICAgICAgICAgID0+ IDY1MSwKKwlNQUNBRERSOEFSUkFZT0lEICAgICAgICA9PiA3NzUsCisJQUNMSVRFTUFSUkFZ T0lEICAgICAgICAgPT4gMTAzNCwKKwlCUENIQVJBUlJBWU9JRCAgICAgICAgICA9PiAxMDE0 LAorCVZBUkNIQVJBUlJBWU9JRCAgICAgICAgID0+IDEwMTUsCisJREFURUFSUkFZT0lEICAg ICAgICAgICAgPT4gMTE4MiwKKwlUSU1FQVJSQVlPSUQgICAgICAgICAgICA9PiAxMTgzLAor CVRJTUVTVEFNUEFSUkFZT0lEICAgICAgID0+IDExMTUsCisJVElNRVNUQU1QVFpBUlJBWU9J RCAgICAgPT4gMTE4NSwKKwlJTlRFUlZBTEFSUkFZT0lEICAgICAgICA9PiAxMTg3LAorCVRJ TUVUWkFSUkFZT0lEICAgICAgICAgID0+IDEyNzAsCisJQklUQVJSQVlPSUQgICAgICAgICAg ICAgPT4gMTU2MSwKKwlWQVJCSVRBUlJBWU9JRCAgICAgICAgICA9PiAxNTYzLAorCU5VTUVS SUNBUlJBWU9JRCAgICAgICAgID0+IDEyMzEsCisJUkVGQ1VSU09SQVJSQVlPSUQgICAgICAg PT4gMjIwMSwKKwlVVUlEQVJSQVlPSUQgICAgICAgICAgICA9PiAyOTUxLAorCVRTVkVDVE9S QVJSQVlPSUQgICAgICAgID0+IDM2NDMsCisJR1RTVkVDVE9SQVJSQVlPSUQgICAgICAgPT4g MzY0NCwKKwlUU1FVRVJZQVJSQVlPSUQgICAgICAgICA9PiAzNjQ1LAorCUpTT05CQVJSQVlP SUQgICAgICAgICAgID0+IDM4MDcsCisJSlNPTlBBVEhBUlJBWU9JRCAgICAgICAgPT4gNDA3 MywKKwlUWElEX1NOQVBTSE9UQVJSQVlPSUQgICA9PiAyOTQ5LAorCUlOVDRSQU5HRUFSUkFZ T0lEICAgICAgID0+IDM5MDUsCisJTlVNUkFOR0VBUlJBWU9JRCAgICAgICAgPT4gMzkwNywK KwlUU1JBTkdFQVJSQVlPSUQgICAgICAgICA9PiAzOTA5LAorCVRTVFpSQU5HRUFSUkFZT0lE ICAgICAgID0+IDM5MTEsCisJREFURVJBTkdFQVJSQVlPSUQgICAgICAgPT4gMzkxMywKKwlJ TlQ4UkFOR0VBUlJBWU9JRCAgICAgICA9PiAzOTI3LAorCUlOVDRNVUxUSVJBTkdFQVJSQVlP SUQgID0+IDYxNTAsCisJTlVNTVVMVElSQU5HRUFSUkFZT0lEICAgPT4gNjE1MSwKKwlUU01V TFRJUkFOR0VBUlJBWU9JRCAgICA9PiA2MTUyLAorCVRTVFpNVUxUSVJBTkdFQVJSQVlPSUQg ID0+IDYxNTMsCisJREFURU1VTFRJUkFOR0VBUlJBWU9JRCAgPT4gNjE1NSwKKwlJTlQ4TVVM VElSQU5HRUFSUkFZT0lEICA9PiA2MTU3LAorCUNTVFJJTkdBUlJBWU9JRCAgICAgICAgID0+ IDEyNjMsCit9OworCis9cG9kCisKKz1oZWFkMSBTRUUgQUxTTworCitMPFBvc3RncmVTUUw6 OlBxRkZJPiwgTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uPgorCis9Y3V0CisKKzE7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFDb25zdGFudHMucG0gYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFDb25zdGFudHMucG0KbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY4MTkxM2I1ODBhCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRzLnBtCkBAIC0wLDAgKzEs MTg1IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKKz1wb2QKKworPWhlYWQxIE5BTUUKKworUG9zdGdyZVNR TDo6UHFDb25zdGFudHMgLSBsaWJwcSBjb25zdGFudHMgZm9yIFBvc3RncmVTUUwgVEFQIHRl c3RzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FMOjpQcUNvbnN0YW50 czsKKworICBpZiAoUFFzdGF0dXMoJGNvbm4pID09IENPTk5FQ1RJT05fT0spIHsgLi4uIH0K KworICBpZiAoUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCkgPT0gUEdSRVNfVFVQTEVTX09LKSB7 IC4uLiB9CisKKz1oZWFkMSBERVNDUklQVElPTgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBs aWJwcSBjb25zdGFudHMgdXNlZCBieSB0aGUgRkZJIGJhY2tlbmQKKyhDPFBvc3RncmVTUUw6 OlBxRkZJPikuICBBbGwgY29uc3RhbnRzIGFyZSBleHBvcnRlZCBieSBkZWZhdWx0LgorCis9 aGVhZDEgRVhQT1JURUQgQ09OU1RBTlRTCisKKz1oZWFkMiBDb25uZWN0aW9uIFN0YXR1cyAo Q29ublN0YXR1c1R5cGUpCisKK0M8Q09OTkVDVElPTl9PSz4sIEM8Q09OTkVDVElPTl9CQUQ+ LCBDPENPTk5FQ1RJT05fU1RBUlRFRD4sCitDPENPTk5FQ1RJT05fTUFERT4sIEM8Q09OTkVD VElPTl9BV0FJVElOR19SRVNQT05TRT4sIEM8Q09OTkVDVElPTl9BVVRIX09LPiwKK0M8Q09O TkVDVElPTl9TRVRFTlY+LCBDPENPTk5FQ1RJT05fU1NMX1NUQVJUVVA+LCBDPENPTk5FQ1RJ T05fTkVFREVEPiwKK0M8Q09OTkVDVElPTl9DSEVDS19XUklUQUJMRT4sIEM8Q09OTkVDVElP Tl9DT05TVU1FPiwgQzxDT05ORUNUSU9OX0dTU19TVEFSVFVQPiwKK0M8Q09OTkVDVElPTl9D SEVDS19UQVJHRVQ+LCBDPENPTk5FQ1RJT05fQ0hFQ0tfU1RBTkRCWT4sIEM8Q09OTkVDVElP Tl9BTExPQ0FURUQ+CisKKz1oZWFkMiBFeGVjdXRpb24gU3RhdHVzIChFeGVjU3RhdHVzVHlw ZSkKKworQzxQR1JFU19FTVBUWV9RVUVSWT4sIEM8UEdSRVNfQ09NTUFORF9PSz4sIEM8UEdS RVNfVFVQTEVTX09LPiwKK0M8UEdSRVNfQ09QWV9PVVQ+LCBDPFBHUkVTX0NPUFlfSU4+LCBD PFBHUkVTX0JBRF9SRVNQT05TRT4sCitDPFBHUkVTX05PTkZBVEFMX0VSUk9SPiwgQzxQR1JF U19GQVRBTF9FUlJPUj4sIEM8UEdSRVNfQ09QWV9CT1RIPiwKK0M8UEdSRVNfU0lOR0xFX1RV UExFPiwgQzxQR1JFU19QSVBFTElORV9TWU5DPiwgQzxQR1JFU19QSVBFTElORV9BQk9SVEVE PiwKK0M8UEdSRVNfVFVQTEVTX0NIVU5LPgorCis9aGVhZDIgUG9sbGluZyBTdGF0dXMgKFBv c3RncmVzUG9sbGluZ1N0YXR1c1R5cGUpCisKK0M8UEdSRVNfUE9MTElOR19GQUlMRUQ+LCBD PFBHUkVTX1BPTExJTkdfUkVBRElORz4sIEM8UEdSRVNfUE9MTElOR19XUklUSU5HPiwKK0M8 UEdSRVNfUE9MTElOR19PSz4sIEM8UEdSRVNfUE9MTElOR19BQ1RJVkU+CisKKz1oZWFkMiBQ aW5nIFN0YXR1cyAoUEdQaW5nKQorCitDPFBRUElOR19PSz4sIEM8UFFQSU5HX1JFSkVDVD4s IEM8UFFQSU5HX05PX1JFU1BPTlNFPiwgQzxQUVBJTkdfTk9fQVRURU1QVD4KKworPWhlYWQy IFRyYW5zYWN0aW9uIFN0YXR1cyAoUEdUcmFuc2FjdGlvblN0YXR1c1R5cGUpCisKK0M8UFFU UkFOU19JRExFPiwgQzxQUVRSQU5TX0FDVElWRT4sIEM8UFFUUkFOU19JTlRSQU5TPiwgQzxQ UVRSQU5TX0lORVJST1I+LAorQzxQUVRSQU5TX1VOS05PV04+CisKKz1jdXQKKworcGFja2Fn ZSBQb3N0Z3JlU1FMOjpQcUNvbnN0YW50czsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n cyBGQVRBTCA9PiBxdyhhbGwpOworCit1c2UgRXhwb3J0ZXIgcXcoaW1wb3J0KTsKKworb3Vy IEBFWFBPUlQgPSBxdygKKworICBDT05ORUNUSU9OX09LCisgIENPTk5FQ1RJT05fQkFECisg IENPTk5FQ1RJT05fU1RBUlRFRAorICBDT05ORUNUSU9OX01BREUKKyAgQ09OTkVDVElPTl9B V0FJVElOR19SRVNQT05TRQorICBDT05ORUNUSU9OX0FVVEhfT0sKKyAgQ09OTkVDVElPTl9T RVRFTlYKKyAgQ09OTkVDVElPTl9TU0xfU1RBUlRVUAorICBDT05ORUNUSU9OX05FRURFRAor ICBDT05ORUNUSU9OX0NIRUNLX1dSSVRBQkxFCisgIENPTk5FQ1RJT05fQ09OU1VNRQorICBD T05ORUNUSU9OX0dTU19TVEFSVFVQCisgIENPTk5FQ1RJT05fQ0hFQ0tfVEFSR0VUCisgIENP Tk5FQ1RJT05fQ0hFQ0tfU1RBTkRCWQorICBDT05ORUNUSU9OX0FMTE9DQVRFRAorCisgIFBH UkVTX0VNUFRZX1FVRVJZCisgIFBHUkVTX0NPTU1BTkRfT0sKKyAgUEdSRVNfVFVQTEVTX09L CisgIFBHUkVTX0NPUFlfT1VUCisgIFBHUkVTX0NPUFlfSU4KKyAgUEdSRVNfQkFEX1JFU1BP TlNFCisgIFBHUkVTX05PTkZBVEFMX0VSUk9SCisgIFBHUkVTX0ZBVEFMX0VSUk9SCisgIFBH UkVTX0NPUFlfQk9USAorICBQR1JFU19TSU5HTEVfVFVQTEUKKyAgUEdSRVNfUElQRUxJTkVf U1lOQworICBQR1JFU19QSVBFTElORV9BQk9SVEVECisgIFBHUkVTX1RVUExFU19DSFVOSwor CisgIFBHUkVTX1BPTExJTkdfRkFJTEVECisgIFBHUkVTX1BPTExJTkdfUkVBRElORworICBQ R1JFU19QT0xMSU5HX1dSSVRJTkcKKyAgUEdSRVNfUE9MTElOR19PSworICBQR1JFU19QT0xM SU5HX0FDVElWRQorCisgIFBRUElOR19PSworICBQUVBJTkdfUkVKRUNUCisgIFBRUElOR19O T19SRVNQT05TRQorICBQUVBJTkdfTk9fQVRURU1QVAorCisgIFBRVFJBTlNfSURMRQorICBQ UVRSQU5TX0FDVElWRQorICBQUVRSQU5TX0lOVFJBTlMKKyAgUFFUUkFOU19JTkVSUk9SCisg IFBRVFJBTlNfVU5LTk9XTgorCispOworCisjIENvbm5TdGF0dXNUeXBlOgordXNlIGNvbnN0 YW50IHsKKwlDT05ORUNUSU9OX09LICAgICAgICAgICAgICAgICA9PiAwLAorCUNPTk5FQ1RJ T05fQkFEICAgICAgICAgICAgICAgID0+IDEsCisJQ09OTkVDVElPTl9TVEFSVEVEICAgICAg ICAgICAgPT4gMiwKKwlDT05ORUNUSU9OX01BREUgICAgICAgICAgICAgICA9PiAzLAorCUNP Tk5FQ1RJT05fQVdBSVRJTkdfUkVTUE9OU0UgID0+IDQsCisJQ09OTkVDVElPTl9BVVRIX09L ICAgICAgICAgICAgPT4gNSwKKwlDT05ORUNUSU9OX1NFVEVOViAgICAgICAgICAgICA9PiA2 LAorCUNPTk5FQ1RJT05fU1NMX1NUQVJUVVAgICAgICAgID0+IDcsCisJQ09OTkVDVElPTl9O RUVERUQgICAgICAgICAgICAgPT4gOCwKKwlDT05ORUNUSU9OX0NIRUNLX1dSSVRBQkxFICAg ICA9PiA5LAorCUNPTk5FQ1RJT05fQ09OU1VNRSAgICAgICAgICAgID0+IDEwLAorCUNPTk5F Q1RJT05fR1NTX1NUQVJUVVAgICAgICAgID0+IDExLAorCUNPTk5FQ1RJT05fQ0hFQ0tfVEFS R0VUICAgICAgID0+IDEyLAorCUNPTk5FQ1RJT05fQ0hFQ0tfU1RBTkRCWSAgICAgID0+IDEz LAorCUNPTk5FQ1RJT05fQUxMT0NBVEVEICAgICAgICAgID0+IDE0LAorfTsKKworIyBFeGVj U3RhdHVzVHlwZToKK3VzZSBjb25zdGFudCB7CisJUEdSRVNfRU1QVFlfUVVFUlkgICAgID0+ IDAsCisJUEdSRVNfQ09NTUFORF9PSyAgICAgID0+IDEsCisJUEdSRVNfVFVQTEVTX09LICAg ICAgID0+IDIsCisJUEdSRVNfQ09QWV9PVVQgICAgICAgID0+IDMsCisJUEdSRVNfQ09QWV9J TiAgICAgICAgID0+IDQsCisJUEdSRVNfQkFEX1JFU1BPTlNFICAgID0+IDUsCisJUEdSRVNf Tk9ORkFUQUxfRVJST1IgID0+IDYsCisJUEdSRVNfRkFUQUxfRVJST1IgICAgID0+IDcsCisJ UEdSRVNfQ09QWV9CT1RIICAgICAgID0+IDgsCisJUEdSRVNfU0lOR0xFX1RVUExFICAgID0+ IDksCisJUEdSRVNfUElQRUxJTkVfU1lOQyAgID0+IDEwLAorCVBHUkVTX1BJUEVMSU5FX0FC T1JURUQgPT4gMTEsCisJUEdSRVNfVFVQTEVTX0NIVU5LICAgID0+IDEyLAorfTsKKworIyBQ b3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlOgordXNlIGNvbnN0YW50IHsKKwlQR1JFU19QT0xM SU5HX0ZBSUxFRCAgPT4gMCwKKwlQR1JFU19QT0xMSU5HX1JFQURJTkcgPT4gMSwKKwlQR1JF U19QT0xMSU5HX1dSSVRJTkcgPT4gMiwKKwlQR1JFU19QT0xMSU5HX09LICAgICAgPT4gMywK KwlQR1JFU19QT0xMSU5HX0FDVElWRSAgPT4gNCwKK307CisKKyMgUEdQaW5nOgordXNlIGNv bnN0YW50IHsKKwlQUVBJTkdfT0sgICAgICAgICAgPT4gMCwKKwlQUVBJTkdfUkVKRUNUICAg ICAgPT4gMSwKKwlQUVBJTkdfTk9fUkVTUE9OU0UgPT4gMiwKKwlQUVBJTkdfTk9fQVRURU1Q VCAgPT4gMywKK307CisKKyMgUEdUcmFuc2FjdGlvblN0YXR1c1R5cGU6Cit1c2UgY29uc3Rh bnQgeworCVBRVFJBTlNfSURMRSAgICA9PiAwLAorCVBRVFJBTlNfQUNUSVZFICA9PiAxLAor CVBRVFJBTlNfSU5UUkFOUyA9PiAyLAorCVBRVFJBTlNfSU5FUlJPUiA9PiAzLAorCVBRVFJB TlNfVU5LTk9XTiA9PiA0LAorfTsKKworPXBvZAorCis9aGVhZDEgU0VFIEFMU08KKworTDxQ b3N0Z3JlU1FMOjpQcUZGST4sIEw8UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbj4KKworPWN1 dAorCisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxRkZJLnBt IGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxRkZJLnBtCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNzcyZDg5ZDZkYgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUZGSS5wbQpAQCAtMCwwICsxLDQ2NSBAQAor CisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCis9cG9kCisKKz1oZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6OlBxRkZJ IC0gRkZJIHdyYXBwZXIgZm9yIGxpYnBxCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQ b3N0Z3JlU1FMOjpQcUZGSTsKKworICAjIEluaXRpYWxpemUgdGhlIEZGSSBiaW5kaW5ncyAo cmVxdWlyZWQgYmVmb3JlIHVzZSkKKyAgUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRsaWJk aXIpOworCisgICMgQ29ubmVjdCB0byBkYXRhYmFzZQorICBteSAkY29ubiA9IFBRY29ubmVj dGRiKCJkYm5hbWU9cG9zdGdyZXMiKTsKKyAgZGllIFBRZXJyb3JNZXNzYWdlKCRjb25uKSB1 bmxlc3MgUFFzdGF0dXMoJGNvbm4pID09IENPTk5FQ1RJT05fT0s7CisKKyAgIyBFeGVjdXRl IHF1ZXJ5CisgIG15ICRyZXN1bHQgPSBQUWV4ZWMoJGNvbm4sICJTRUxFQ1QgMSIpOworICBp ZiAoUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCkgPT0gUEdSRVNfVFVQTEVTX09LKSB7CisgICAg ICBwcmludCBQUWdldHZhbHVlKCRyZXN1bHQsIDAsIDApLCAiXG4iOworICB9CisgIFBRY2xl YXIoJHJlc3VsdCk7CisKKyAgUFFmaW5pc2goJGNvbm4pOworCis9aGVhZDEgREVTQ1JJUFRJ T04KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgUGVybCBiaW5kaW5ncyB0byBsaWJwcSB1c2lu ZyBMPEZGSTo6UGxhdHlwdXM+LgorSXQgaXMgdGhlIGJhY2tlbmQgdXNlZCBieSBMPFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24+LgorCitUaGUgbW9kdWxlIG11c3QgYmUgaW5pdGlhbGl6 ZWQgYnkgY2FsbGluZyBDPHNldHVwKCk+IGJlZm9yZSBhbnkgbGlicHEKK2Z1bmN0aW9ucyBj YW4gYmUgdXNlZC4KKworPWhlYWQxIEZVTkNUSU9OUworCis9aGVhZDIgc2V0dXAoJGxpYmRp ciBbLCAkdXNlX3N5c3RlbV9wYXRoXSkKKworSW5pdGlhbGl6ZSB0aGUgRkZJIGJpbmRpbmdz LiBDPCRsaWJkaXI+IHNwZWNpZmllcyB3aGVyZSB0byBmaW5kIGxpYnBxLgorSWYgQzwkdXNl X3N5c3RlbV9wYXRoPiBpcyBmYWxzZSwgb25seSBDPCRsaWJkaXI+IGlzIHNlYXJjaGVkLgor Cis9aGVhZDIgbGlicHEgRnVuY3Rpb25zCisKK0FsbCBzdGFuZGFyZCBsaWJwcSBmdW5jdGlv bnMgYXJlIGV4cG9ydGVkLiBTZWUgdGhlIFBvc3RncmVTUUwgbGlicHEKK2RvY3VtZW50YXRp b24gZm9yIGRldGFpbHMuIENvbW1vbmx5IHVzZWQgZnVuY3Rpb25zIGluY2x1ZGU6CisKK0I8 Q29ubmVjdGlvbjo+IEM8UFFjb25uZWN0ZGI+LCBDPFBRY29ubmVjdFN0YXJ0PiwgQzxQUWNv bm5lY3RQb2xsPiwKK0M8UFFmaW5pc2g+LCBDPFBRc3RhdHVzPiwgQzxQUWVycm9yTWVzc2Fn ZT4KKworQjxFeGVjdXRpb246PiBDPFBRZXhlYz4sIEM8UFFleGVjUGFyYW1zPiwgQzxQUXBy ZXBhcmU+LCBDPFBRZXhlY1ByZXBhcmVkPiwKK0M8UFFzZW5kUXVlcnk+LCBDPFBRZ2V0UmVz dWx0PiwgQzxQUWNsZWFyPgorCitCPFJlc3VsdHM6PiBDPFBRcmVzdWx0U3RhdHVzPiwgQzxQ UW50dXBsZXM+LCBDPFBRbmZpZWxkcz4sIEM8UFFmbmFtZT4sCitDPFBRZnR5cGU+LCBDPFBR Z2V0dmFsdWU+LCBDPFBRZ2V0aXNudWxsPgorCitCPFBpcGVsaW5lOj4gQzxQUWVudGVyUGlw ZWxpbmVNb2RlPiwgQzxQUWV4aXRQaXBlbGluZU1vZGU+LAorQzxQUXBpcGVsaW5lU3luYz4s IEM8UFFzZW5kUXVlcnlQYXJhbXM+CisKK0I8Tm90aWZpY2F0aW9uczo+IEM8UFFub3RpZmll cz4sIEM8UFFub3RpZnlfY2hhbm5lbD4sIEM8UFFub3RpZnlfcGF5bG9hZD4sCitDPFBRbm90 aWZ5X2JlX3BpZD4sIEM8UFFub3RpZnlfZnJlZT4KKworQjxOb3RpY2UgUHJvY2Vzc2luZzo+ IEM8UFFzZXROb3RpY2VQcm9jZXNzb3I+LCBDPGNyZWF0ZV9ub3RpY2VfcHJvY2Vzc29yPgor Cis9aGVhZDIgY3JlYXRlX25vdGljZV9wcm9jZXNzb3IoJGNhbGxiYWNrKQorCitDcmVhdGVz IGEgbm90aWNlIHByb2Nlc3NvciBjbG9zdXJlIHRoYXQgY2FuIGJlIHBhc3NlZCB0bworQzxQ UXNldE5vdGljZVByb2Nlc3Nvcj4uIFRoZSBjYWxsYmFjayByZWNlaXZlcyBDPCgkYXJnLCAk bWVzc2FnZSk+LgorVGhlIGNhbGxlciBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHJl dHVybmVkIGNsb3N1cmUgdG8gcHJldmVudAorZ2FyYmFnZSBjb2xsZWN0aW9uLgorCis9aGVh ZDEgRVhQT1JURUQgQ09OU1RBTlRTCisKK1RoaXMgbW9kdWxlIHJlLWV4cG9ydHMgYWxsIGNv bnN0YW50cyBmcm9tIEw8UG9zdGdyZVNRTDo6UHFDb25zdGFudHM+CithbmQgTDxQb3N0Z3Jl U1FMOjpQR1R5cGVzPi4KKworPWN1dAorCitwYWNrYWdlIFBvc3RncmVTUUw6OlBxRkZJOwor Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBG Rkk6OlBsYXR5cHVzOwordXNlIEZGSTo6UGxhdHlwdXM6OlJlY29yZDsKK3VzZSBQb3N0Z3Jl U1FMOjpGaW5kTGliOworCisjIFBHbm90aWZ5IHN0cnVjdCBmb3Igbm90aWZpY2F0aW9uIHN1 cHBvcnQKKyMgdHlwZWRlZiBzdHJ1Y3QgcGdOb3RpZnkgeworIyAgICAgY2hhciAqcmVsbmFt ZTsgICAgLyogbm90aWZpY2F0aW9uIGNoYW5uZWwgbmFtZSAqLworIyAgICAgaW50ICAgYmVf cGlkOyAgICAgLyogcHJvY2VzcyBJRCBvZiBub3RpZnlpbmcgc2VydmVyIHByb2Nlc3MgKi8K KyMgICAgIGNoYXIgKmV4dHJhOyAgICAgIC8qIG5vdGlmaWNhdGlvbiBwYXlsb2FkIHN0cmlu ZyAqLworIyB9IFBHbm90aWZ5OworcGFja2FnZSBQR25vdGlmeSB7CisJdXNlIEZGSTo6UGxh dHlwdXM6OlJlY29yZDsKKwlyZWNvcmRfbGF5b3V0XzEoCisJCSdvcGFxdWUnID0+ICdyZWxu YW1lJywKKwkJJ3NpbnQzMicgPT4gJ2JlX3BpZCcsCisJCSdvcGFxdWUnID0+ICdleHRyYScs CisJKTsKK30KK3BhY2thZ2UgUG9zdGdyZVNRTDo6UHFGRkk7CisKKyMgRkZJOjpQbGF0eXB1 czo6UmVjb3JkIGtlZXBzIHRoZSByZWNvcmQncyBSZWNvcmQ6Ok1ldGEgb2JqZWN0IGFsaXZl IGluIGEKKyMgcGFja2FnZS1nbG9iIGNsb3N1cmUsIHNvIGl0IGlzIG5vdCBkZXN0cm95ZWQg dW50aWwgZ2xvYmFsIGRlc3RydWN0aW9uLgorIyBSZWNvcmQ6Ok1ldGEncyBERVNUUk9ZIGlz IGFuIEZGSS1hdHRhY2hlZCBmdW5jdGlvbiB0YWtpbmcgYSBjdXN0b20gdHlwZQorIyB3aG9z ZSBtYXJzaGFsbGluZyBpcyBhIFBlcmwgY2xvc3VyZTsgZHVyaW5nIGdsb2JhbCBkZXN0cnVj dGlvbiB0aGF0CisjIGNsb3N1cmUgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGZyZWVkLCBtYWtp bmcgREVTVFJPWSBkaWUgd2l0aCAiQ2FuJ3QgdXNlCisjIGFuIHVuZGVmaW5lZCB2YWx1ZSBh cyBhIHN1YnJvdXRpbmUgcmVmZXJlbmNlIiAoc2VlbiB3aXRoIEZGSTo6UGxhdHlwdXMKKyMg Mi4wOCkuICBUaGUgcHJvY2VzcyBpcyBleGl0aW5nIGFueXdheSwgc28gc2tpcCB0aGUgZGVz dHJ1Y3RvciB0aGVuIGFuZAorIyBsZXQgdGhlIE9TIHJlY2xhaW0gdGhlIG1lbW9yeS4KK3sK KwlteSAkb3JpZ19kZXN0cm95ID0gXCZGRkk6OlBsYXR5cHVzOjpSZWNvcmQ6Ok1ldGE6OkRF U1RST1k7CisJbm8gd2FybmluZ3MgJ3JlZGVmaW5lJzsKKwkqRkZJOjpQbGF0eXB1czo6UmVj b3JkOjpNZXRhOjpERVNUUk9ZID0gc3ViIHsKKwkJcmV0dXJuIGlmICR7XkdMT0JBTF9QSEFT RX0gZXEgJ0RFU1RSVUNUJzsKKwkJZ290byAmJG9yaWdfZGVzdHJveTsKKwl9OworfQordXNl IFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzOwordXNlIFBvc3RncmVTUUw6OlBHVHlwZXM7CisK K3VzZSBFeHBvcnRlciBxdyhpbXBvcnQpOworCitvdXIgQEVYUE9SVCA9ICgKKyAgQFBvc3Rn cmVTUUw6OlBxQ29uc3RhbnRzOjpFWFBPUlQsCisgIEBQb3N0Z3JlU1FMOjpQR1R5cGVzOjpF WFBPUlQsCispOworCisKKworbXkgQHByb2NzID0gcXcoCisKKyAgUFFub3RpZmllcworICBQ UWZyZWVtZW0KKyAgUFFub3RpZnlfY2hhbm5lbAorICBQUW5vdGlmeV9wYXlsb2FkCisgIFBR bm90aWZ5X2JlX3BpZAorICBQUW5vdGlmeV9mcmVlCisKKyAgUFFjb25uZWN0ZGIKKyAgUFFj b25uZWN0ZGJQYXJhbXMKKyAgUFFzZXRkYkxvZ2luCisgIFBRZmluaXNoCisgIFBRcmVzZXQK KyAgUFFkYgorICBQUXVzZXIKKyAgUFFwYXNzCisgIFBRaG9zdAorICBQUWhvc3RhZGRyCisg IFBRcG9ydAorICBQUXR0eQorICBQUW9wdGlvbnMKKyAgUFFzdGF0dXMKKyAgUFF0cmFuc2Fj dGlvblN0YXR1cworICBQUXBhcmFtZXRlclN0YXR1cworICBQUXBpbmcKKyAgUFFwaW5nUGFy YW1zCisKKyAgUFFleGVjCisgIFBRZXhlY1BhcmFtcworICBQUXByZXBhcmUKKyAgUFFleGVj UHJlcGFyZWQKKworICBQUWRlc2NyaWJlUHJlcGFyZWQKKyAgUFFkZXNjcmliZVBvcnRhbAor CisgIFBRY2xvc2VQcmVwYXJlZAorICBQUWNsb3NlUG9ydGFsCisgIFBRY2xlYXIKKworICBQ UXNlbmRRdWVyeQorICBQUWdldFJlc3VsdAorICBQUWlzQnVzeQorICBQUWNvbnN1bWVJbnB1 dAorCisgIFBRcHJvdG9jb2xWZXJzaW9uCisgIFBRc2VydmVyVmVyc2lvbgorICBQUWVycm9y TWVzc2FnZQorICBQUXNvY2tldAorICBQUXNvY2tldFBvbGwKKyAgUFFnZXRDdXJyZW50VGlt ZVVTZWMKKyAgUFFiYWNrZW5kUElECisgIFBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQKKyAg UFFjb25uZWN0aW9uVXNlZFBhc3N3b3JkCisgIFBRY29ubmVjdGlvblVzZWRHU1NBUEkKKyAg UFFjbGllbnRFbmNvZGluZworICBQUXNldENsaWVudEVuY29kaW5nCisKKyAgUFFyZXN1bHRT dGF0dXMKKyAgUFFyZXNTdGF0dXMKKyAgUFFyZXN1bHRFcnJvck1lc3NhZ2UKKyAgUFFyZXN1 bHRFcnJvckZpZWxkCisgIFBRbnR1cGxlcworICBQUW5maWVsZHMKKyAgUFFiaW5hcnlUdXBs ZXMKKyAgUFFmbmFtZQorICBQUWZudW1iZXIKKyAgUFFmdGFibGUKKyAgUFFmdGFibGVjb2wK KyAgUFFmZm9ybWF0CisgIFBRZnR5cGUKKyAgUFFmc2l6ZQorICBQUWZtb2QKKyAgUFFjbWRT dGF0dXMKKyAgUFFvaWRWYWx1ZQorICBQUWNtZFR1cGxlcworICBQUWdldHZhbHVlCisgIFBR Z2V0bGVuZ3RoCisgIFBRZ2V0aXNudWxsCisgIFBRbnBhcmFtcworICBQUXBhcmFtdHlwZQor ICBQUWNoYW5nZVBhc3N3b3JkCisKKyAgUFFwaXBlbGluZVN0YXR1cworICBQUWVudGVyUGlw ZWxpbmVNb2RlCisgIFBRZXhpdFBpcGVsaW5lTW9kZQorICBQUXBpcGVsaW5lU3luYworICBQ UXNlbmRGbHVzaFJlcXVlc3QKKyAgUFFzZW5kUGlwZWxpbmVTeW5jCisgIFBRc2VuZFF1ZXJ5 UGFyYW1zCisKKyAgUFFzZXRub25ibG9ja2luZworICBQUWlzbm9uYmxvY2tpbmcKKyAgUFFm bHVzaAorCisgIFBRY29ubmVjdFN0YXJ0CisgIFBRY29ubmVjdFN0YXJ0UGFyYW1zCisgIFBR Y29ubmVjdFBvbGwKKworICBQUXNldE5vdGljZVByb2Nlc3NvcgorICBjcmVhdGVfbm90aWNl X3Byb2Nlc3NvcgorCispOworCitwdXNoKEBFWFBPUlQsIEBwcm9jcyk7CisKK3N1YiBzZXR1 cAoreworCW15ICRsaWJkaXIgPSBzaGlmdDsKKwlteSAkdXNlX3N5c3RlbV9wYXRoID0gc2hp ZnQ7CisKKwlteSAkZmZpID0gRkZJOjpQbGF0eXB1cy0+bmV3KGFwaSA9PiAxKTsKKworCW15 IEBzeXN0ZW1fcGF0aDsKKwlAc3lzdGVtX3BhdGggPSAoc3lzdGVtcGF0aCA9PiBbXSkgdW5s ZXNzICR1c2Vfc3lzdGVtX3BhdGg7CisKKwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQR2Nv bm4nKTsKKwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQR3Jlc3VsdCcpOworCSRmZmktPnR5 cGUoJ3VpbnQzMicgPT4gJ09pZCcpOworCSRmZmktPnR5cGUoJ2ludCcgPT4gJ0V4ZWNTdGF0 dXNUeXBlJyk7CisKKwkjIFJlZ2lzdGVyIHRoZSBQR25vdGlmeSByZWNvcmQgdHlwZSBmb3Ig c3RydWN0IGFjY2VzcworCSRmZmktPnR5cGUoJ3JlY29yZChQR25vdGlmeSknID0+ICdQR25v dGlmeV9yZWNvcmQnKTsKKworCW15ICRsaWIgPSBmaW5kX2xpYl9vcl9kaWUoCisJCWxpYiA9 PiAncHEnLAorCQlsaWJwYXRoID0+IFskbGliZGlyXSwKKwkgICAgQHN5c3RlbV9wYXRoLAor CSAgICk7CisJJGZmaS0+bGliKCRsaWIpOworCisJIyBUaGlzIHdyYXBwZXIgZGVwZW5kcyBv biBsaWJwcSBmdW5jdGlvbnMgaW50cm9kdWNlZCBpbiBQb3N0Z3JlU1FMIDE3CisJIyAoZS5n LiBQUXNvY2tldFBvbGwsIHVzZWQgYnkgZXZlcnkgcXVlcnkgcGF0aCkuICBsaWJwcSBpcyBs b2FkZWQgb25jZSBwZXIKKwkjIHByb2Nlc3MgZnJvbSB0aGUgZmlyc3Qgc2Vzc2lvbidzIGlu c3RhbGxhdGlvbiwgc28gaW4gY3Jvc3MtdmVyc2lvbiB0ZXN0cworCSMgKHBnX3VwZ3JhZGUp IHRoZSBmaXJzdCBzZXNzaW9uIG11c3QgdXNlIHRoZSBuZXdlciBpbnN0YWxsYXRpb24uICBG YWlsCisJIyBjbGVhcmx5IGhlcmUgcmF0aGVyIHRoYW4gd2l0aCBhIGNyeXB0aWMgRkZJICJz eW1ib2wgbm90IGZvdW5kIiBhdCB0aGUKKwkjIGZpcnN0IGF0dGFjaCBiZWxvdywgb3IgYW4g IlVuZGVmaW5lZCBzdWJyb3V0aW5lIiBsYXRlci4KKwlkZWZpbmVkICRmZmktPmZpbmRfc3lt Ym9sKCdQUXNvY2tldFBvbGwnKQorCSAgb3IgZGllICJsaWJwcSBpbiBcIiRsaWJcIiBpcyB0 b28gb2xkIGZvciBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uICIKKwkgIC4gIihuZWVkcyBQ UXNvY2tldFBvbGwsIFBvc3RncmVTUUwgMTcrKTsgaW4gY3Jvc3MtdmVyc2lvbiB0ZXN0cywg b3BlbiAiCisJICAuICJ0aGUgZmlyc3Qgc2Vzc2lvbiBhZ2FpbnN0IHRoZSBuZXdlciBpbnN0 YWxsYXRpb24iOworCisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3RkYicgPT4gWydzdHJpbmcn XSA9PiAnUEdjb25uJyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFjb25uZWN0ZGJQYXJhbXMn ID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcgXSA9PiAnUEdjb25uJyk7CisJ JGZmaS0+YXR0YWNoKAorCQknUFFzZXRkYkxvZ2luJyA9PiBbCisJCQknc3RyaW5nJywgJ3N0 cmluZycsICdzdHJpbmcnLCAnc3RyaW5nJywKKwkJCSdzdHJpbmcnLCAnc3RyaW5nJywgJ3N0 cmluZycsCisJCV0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0dGFjaCgnUFFmaW5pc2gnID0+ IFsnUEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVzZXQnID0+IFsn UEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZGInID0+IFsnUEdjb25u J10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF1c2VyJyA9PiBbJ1BHY29ubidd ID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFzcycgPT4gWydQR2Nvbm4nXSA9 PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUWhvc3QnID0+IFsnUEdjb25uJ10gPT4g J3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFob3N0YWRkcicgPT4gWydQR2Nvbm4nXSA9 PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXBvcnQnID0+IFsnUEdjb25uJ10gPT4g J3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF0dHknID0+IFsnUEdjb25uJ10gPT4gJ3N0 cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFvcHRpb25zJyA9PiBbJ1BHY29ubiddID0+ICdz dHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc3RhdHVzJyA9PiBbJ1BHY29ubiddID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRdHJhbnNhY3Rpb25TdGF0dXMnID0+IFsnUEdjb25u J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFwYXJhbWV0ZXJTdGF0dXMnID0+IFsg J1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFw aW5nJyA9PiBbJ3N0cmluZyddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQUXBp bmdQYXJhbXMnID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcgXSA9PiAnaW50 Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcHJvdG9jb2xWZXJzaW9uJyA9PiBbJ1BHY29ubidd ID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VydmVyVmVyc2lvbicgPT4gWydQR2Nv bm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWVycm9yTWVzc2FnZScgPT4gWydQ R2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXNvY2tldCcgPT4gWydQ R2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNvY2tldFBvbGwnID0+IFsn aW50JywgJ2ludCcsICdpbnQnLCAnc2ludDY0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFj aCgnUFFnZXRDdXJyZW50VGltZVVTZWMnID0+IFtdID0+ICdzaW50NjQnKTsKKwkkZmZpLT5h dHRhY2goJ1BRYmFja2VuZFBJRCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+ YXR0YWNoKCdQUWNvbm5lY3Rpb25OZWVkc1Bhc3N3b3JkJyA9PiBbJ1BHY29ubiddID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY29ubmVjdGlvblVzZWRQYXNzd29yZCcgPT4gWydQ R2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3Rpb25Vc2VkR1NT QVBJJyA9PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY2xpZW50 RW5jb2RpbmcnID0+IFsnUEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFz ZXRDbGllbnRFbmNvZGluZycgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9PiAnaW50Jyk7 CisKKwkkZmZpLT5hdHRhY2goJ1BRZXhlYycgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9 PiAnUEdyZXN1bHQnKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQUWV4ZWNQYXJhbXMnID0+IFsK KwkJCSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdpbnRbXScsCisJCQknc3RyaW5nW10n LCAnaW50W10nLCAnaW50W10nLCAnaW50JworCQldID0+ICdQR3Jlc3VsdCcpOworCSRmZmkt PmF0dGFjaCgKKwkJJ1BRcHJlcGFyZScgPT4gWyAnUEdjb25uJywgJ3N0cmluZycsICdzdHJp bmcnLCAnaW50JywgJ2ludFtdJyBdID0+CisJCSAgJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0 YWNoKAorCQknUFFleGVjUHJlcGFyZWQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAnaW50 JywKKwkJCSdzdHJpbmdbXScsICdpbnRbXScsICdpbnRbXScsICdpbnQnIF0gPT4gJ1BHcmVz dWx0Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcmVzdWx0U3RhdHVzJyA9PiBbJ1BHcmVzdWx0 J10gPT4gJ0V4ZWNTdGF0dXNUeXBlJyk7CisJJGZmaS0+YXR0YWNoKCdQUXJlc1N0YXR1cycg PT4gWydFeGVjU3RhdHVzVHlwZSddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BR cmVzdWx0RXJyb3JNZXNzYWdlJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ3N0cmluZycpOworCSRm ZmktPmF0dGFjaCgnUFFyZXN1bHRFcnJvckZpZWxkJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQn IF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFudHVwbGVzJyA9PiBbJ1BHcmVz dWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFuZmllbGRzJyA9PiBbJ1BHcmVz dWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFiaW5hcnlUdXBsZXMnID0+IFsn UEdyZXN1bHQnXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZuYW1lJyA9PiBbICdQ R3Jlc3VsdCcsICdpbnQnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFmbnVt YmVyJyA9PiBbICdQR3Jlc3VsdCcsICdzdHJpbmcnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0 dGFjaCgnUFFmdGFibGUnID0+IFsgJ1BHcmVzdWx0JywgJ2ludCcgXSA9PiAnT2lkJyk7CisJ JGZmaS0+YXR0YWNoKCdQUWZ0YWJsZWNvbCcgPT4gWyAnUEdyZXN1bHQnLCAnaW50JyBdID0+ ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZmZvcm1hdCcgPT4gWyAnUEdyZXN1bHQnLCAn aW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZnR5cGUnID0+IFsgJ1BHcmVz dWx0JywgJ2ludCcgXSA9PiAnT2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUWZzaXplJyA9PiBb ICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFmbW9k JyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgn UFFjbWRTdGF0dXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0 YWNoKCdQUW9pZFZhbHVlJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ09pZCcpOworCSRmZmktPmF0 dGFjaCgnUFFjbWRUdXBsZXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3RyaW5nJyk7CisJJGZm aS0+YXR0YWNoKCdQUWdldHZhbHVlJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBd ID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0bGVuZ3RoJyA9PiBbICdQR3Jl c3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0 aXNudWxsJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRbnBhcmFtcycgPT4gWydQR3Jlc3VsdCddID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRcGFyYW10eXBlJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4g J09pZCcpOworCisKKwkkZmZpLT5hdHRhY2goCisJCSdQUWRlc2NyaWJlUHJlcGFyZWQnID0+ IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0YWNo KCdQUWRlc2NyaWJlUG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jl c3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUWNsb3NlUHJlcGFyZWQnID0+IFsgJ1BHY29u bicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNsb3Nl UG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jlc3VsdCcpOworCSRm ZmktPmF0dGFjaCgnUFFjbGVhcicgPT4gWydQR3Jlc3VsdCddID0+ICd2b2lkJyk7CisKKwkk ZmZpLT5hdHRhY2goJ1BRY29ubmVjdFN0YXJ0JyA9PiBbICdzdHJpbmcnIF0gPT4gJ1BHY29u bicpOworCSRmZmktPmF0dGFjaCgKKwkJJ1BRY29ubmVjdFN0YXJ0UGFyYW1zJyA9PiBbICdz dHJpbmdbXScsICdzdHJpbmdbXScsICdpbnQnIF0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0 dGFjaCgnUFFjb25uZWN0UG9sbCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZp LT5hdHRhY2goJ1BRcmVzZXRTdGFydCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRcmVzZXRQb2xsJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOwor CSRmZmktPmF0dGFjaCgnUFFzZW5kUXVlcnknID0+IFsgJ1BHY29ubicsICAnc3RyaW5nJyBd ID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VuZFF1ZXJ5UGFyYW1zJyA9PiBbCisJ CSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdPaWQqJywgJ3N0cmluZyonLAorCQknaW50 KicsICdpbnQqJywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNlbmRQ cmVwYXJlJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJywgJ3N0cmluZycsICdpbnQnLCAnT2lk W10nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFnZXRSZXN1bHQnID0+IFsgJ1BH Y29ubicgXSA9PiAnUEdyZXN1bHQnKTsKKworCSRmZmktPmF0dGFjaCgnUFFpc0J1c3knID0+ IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbnN1bWVJbnB1 dCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY2hhbmdl UGFzc3dvcmQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAnc3RyaW5nJyBdID0+ICdQR3Jl c3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUXBpcGVsaW5lU3RhdHVzJyA9PiBbICdQR2Nv bm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFlbnRlclBpcGVsaW5lTW9kZScg PT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZXhpdFBpcGVs aW5lTW9kZScgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BR cGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFj aCgnUFFzZW5kRmx1c2hSZXF1ZXN0JyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRm ZmktPmF0dGFjaCgnUFFzZW5kUGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2lu dCcpOworCSRmZmktPmF0dGFjaCgnUFFzZXRub25ibG9ja2luZycgPT4gWyAnUEdjb25uJywg J2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWlzbm9uYmxvY2tpbmcnID0+ IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZsdXNoJyA9PiBb ICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCisJIyBOb3RpZmljYXRpb24gc3VwcG9ydCAtIFBR bm90aWZpZXMgcmV0dXJucyBhIHBvaW50ZXIgdG8gUEdub3RpZnkgc3RydWN0CisJIyBXZSBy ZXR1cm4gb3BhcXVlIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBwb2ludGVyIGZvciBmcmVl aW5nIHdpdGggUFFmcmVlbWVtCisJJGZmaS0+YXR0YWNoKCdQUW5vdGlmaWVzJyA9PiBbICdQ R2Nvbm4nIF0gPT4gJ29wYXF1ZScpOworCSRmZmktPmF0dGFjaCgnUFFmcmVlbWVtJyA9PiBb ICdvcGFxdWUnIF0gPT4gJ3ZvaWQnKTsKKworCSMgTm90aWNlIHByb2Nlc3NvciBjYWxsYmFj ayBzdXBwb3J0CisJIyB0eXBlZGVmIHZvaWQgKCpQUW5vdGljZVByb2Nlc3Nvcikodm9pZCAq YXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkkZmZpLT50eXBlKCcob3BhcXVlLHN0cmlu ZyktPnZvaWQnID0+ICdQUW5vdGljZVByb2Nlc3NvcicpOworCSRmZmktPmF0dGFjaCgnUFFz ZXROb3RpY2VQcm9jZXNzb3InID0+IFsgJ1BHY29ubicsICdQUW5vdGljZVByb2Nlc3Nvcics ICdvcGFxdWUnIF0gPT4gJ29wYXF1ZScpOworCisJIyBTdG9yZSB0aGUgJGZmaSBpbnN0YW5j ZSBmb3IgdXNlIGJ5IGhlbHBlciBmdW5jdGlvbnMKKwkkUG9zdGdyZVNRTDo6UHFGRkk6Ol9m ZmkgPSAkZmZpOworfQorCisjIEhlbHBlciBmdW5jdGlvbnMgdG8gZXh0cmFjdCB2YWx1ZXMg ZnJvbSBQR25vdGlmeSBzdHJ1Y3QKKyMgVGhlIG9wYXF1ZSBwb2ludGVyIGlzIGNhc3QgdG8g dGhlIHJlY29yZCB0eXBlIHRvIGFjY2VzcyBmaWVsZHMKKworc3ViIF9jYXN0X3RvX3Bnbm90 aWZ5Cit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVybiB1bmRlZiB1bmxlc3MgJHB0cjsK KwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAncmVj b3JkKFBHbm90aWZ5KSonLCAkcHRyKTsKK30KKworc3ViIFBRbm90aWZ5X2NoYW5uZWwKK3sK KwlteSAkcHRyID0gc2hpZnQ7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkcHRyOworCW15ICRu b3RpZnkgPSBfY2FzdF90b19wZ25vdGlmeSgkcHRyKTsKKwlteSAkc3RyX3B0ciA9ICRub3Rp ZnktPnJlbG5hbWU7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsKKwlyZXR1cm4g JFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3RyaW5nJywgJHN0 cl9wdHIpOworfQorCitzdWIgUFFub3RpZnlfcGF5bG9hZAoreworCW15ICRwdHIgPSBzaGlm dDsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRwdHI7CisJbXkgJG5vdGlmeSA9IF9jYXN0X3Rv X3Bnbm90aWZ5KCRwdHIpOworCW15ICRzdHJfcHRyID0gJG5vdGlmeS0+ZXh0cmE7CisJcmV0 dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsKKwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJ OjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3RyaW5nJywgJHN0cl9wdHIpOworfQorCitzdWIg UFFub3RpZnlfYmVfcGlkCit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVybiB1bmRlZiB1 bmxlc3MgJHB0cjsKKwlteSAkbm90aWZ5ID0gX2Nhc3RfdG9fcGdub3RpZnkoJHB0cik7CisJ cmV0dXJuICRub3RpZnktPmJlX3BpZDsKK30KKworIyBGcmVlIGEgUEdub3RpZnkgc3RydWN0 IHVzaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyCitzdWIgUFFub3RpZnlfZnJlZQoreworCW15 ICRwdHIgPSBzaGlmdDsKKwlyZXR1cm4gdW5sZXNzICRwdHI7CisJUFFmcmVlbWVtKCRwdHIp OworfQorCisjIENyZWF0ZSBhIG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0aGF0IGNhbiBi ZSBwYXNzZWQgdG8gUFFzZXROb3RpY2VQcm9jZXNzb3IuCisjIFRoZSBjYWxsYmFjayB3aWxs IGJlIGludm9rZWQgd2l0aCAoYXJnLCBtZXNzYWdlKSB3aGVyZSBhcmcgaXMgb3BhcXVlIGFu ZCBtZXNzYWdlIGlzIHN0cmluZy4KKyMgUmV0dXJucyB0aGUgY2xvc3VyZSAtIGNhbGxlciBt dXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gcHJldmVudCBnYXJiYWdlIGNvbGxlY3Rpb24uCitz dWIgY3JlYXRlX25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAkY2FsbGJhY2sgPSBzaGlmdDsg ICMgc3ViIHsgbXkgKCRhcmcsICRtZXNzYWdlKSA9IEBfOyAuLi4gfQorCXJldHVybiAkUG9z dGdyZVNRTDo6UHFGRkk6Ol9mZmktPmNsb3N1cmUoJGNhbGxiYWNrKTsKK30KKworPXBvZAor Cis9aGVhZDEgU0VFIEFMU08KKworTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uPiwKK0w8 UG9zdGdyZVNRTDo6UHFDb25zdGFudHM+LCBMPFBvc3RncmVTUUw6OlBHVHlwZXM+LCBMPEZG STo6UGxhdHlwdXM+CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9TZXNzaW9uLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5lYjExYjRiZWM0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZVNRTC9UZXN0L1Nlc3Npb24ucG0KQEAgLTAsMCArMSwxMDQ4IEBACisKKyMgQ29weXJpZ2h0 IChjKSAyMDIxLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisK Kz1wb2QKKworPWhlYWQxIE5BTUUKKworUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiAtIGNs YXNzIGZvciBhIFBvc3RncmVTUUwgbGlicHEgc2Vzc2lvbgorCis9aGVhZDEgU1lOT1BTSVMK KworICB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKKworICB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKKworICBteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnbXlub2RlJyk7CisKKyAgIyBjcmVhdGUgYSBuZXcgc2Vzc2lvbi4gZGVm dWx0IGRibmFtZSBpcyAncG9zdGdyZXMnCisgIG15ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWywgZGJuYW1lID0+ICRkYm5hbWVdICk7CisK KyAgIyBjbG9zZSB0aGUgc2Vzc2lvbgorICAkc2Vzc2lvbi0+Y2xvc2U7CisKKyAgIyByZW9w ZW4gdGhlIHNlc3Npb24sIGFmdGVyIGNsb3NpbmcgaXQgaWYgbm90IGNsb3NlZAorICAkc2Vz c2lvbi0+cmVjb25uZWN0OworCisgICMgY2hlY2sgaWYgdGhlIHNlc3Npb24gaXMgb2sKKyAg IyBteSAkc3RhdHVzID0gJHNlc3Npb24tPmNvbm5fc3RhdHVzOworCisgICMgcnVuIHNvbWUg U1FMLCBub3QgcHJvZHVjaW5nIHR1cGxlcworICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPmRv KCRzcWwsIC4uLik7CisKKyAgIyBydW4gYW4gU1FMIHN0YXRlbWVudCBhc3luY2hyb25vdXNs eQorICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpOworCisgICMgd2Fp dCBmb3IgYW5kIGFzeW5jIFNRTCB0byBjb21wbGV0ZQorICAkc2Vzc2lvbi0+d2FpdF9mb3Jf Y29tcGxldGlvbjsKKworICAjIHNldCBhIHBhc3N3b3JkIGZvciBhIHVzZXIKKyAgbXkgJHJl c3VsdCA9ICRzZXNzaW9uLT5zZXRfcGFzc3dvcmQoJHVzZXIsICRwYXNzd29yZCk7CisKKyAg IyBnZXQgc29tZSBkYXRhCisgIG15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnkoJHNxbCk7 CisKKyAgIyBnZXQgYSBzaW5nbGUgdmFsdWUsIGRlZmF1bHQgY3JvYWtzIGlmIG5vIHZhbHVl IGZvdW5kCisgIG15ICR2YWwgPSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCRzcWwgWywgJG1p c3Npbmdfb2sgXSk7CisKKyAgI3JldHVybiBsaW5lcyBvZiB0dXBsZXMgbGlrZSAicHNxbCAt QSAtdCIKKyAgbXkgQGxpbmVzID0gJHNlc3Npb24tPnF1ZXJ5X3R1cGxlcygkc3FsLCAuLi4p OworCis9aGVhZDEgREVTQ1JJUFRJT04KKworQzxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u PiBlbmNhcHN1bGF0ZXMgYSBDPGxpYnBxPiBzZXNzaW9uIGZvciB1c2UgaW4KK1Bvc3RncmVT UUwgVEFQIHRlc3RzLCBhbGxvd2luZyB0aGUgdGVzdCB0byBjb25uZWN0IHdpdGhvdXQgaGF2 aW5nIHRvIHNwYXduCitDPHBzcWw+IGluIGEgY2hpbGQgcHJvY2Vzcy4KKworVGhlIHNlc3Np b24gb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHdoZW4gdGhlIG9iamVjdCBnb2Vz IG91dCBvZiBzY29wZSwKK2luY2x1ZGluZyBhdCBzY3JpcHQgZW5kLgorCitTZXZlcmFsIG1l dGhvZHMgcmV0dXJuIGEgaGFzaHJlZiBhcyBhIHJlc3VsdCwgd2hpY2ggd2lsbCBoYXZlIHRo ZSBmb2xsb3dpbmcKK2ZpZWxkczoKKworPW92ZXIKKworPWl0ZW0gKiBzdGF0dXMKKworPWl0 ZW0gKiBlcnJvcl9tZXNzYWdlIChvbmx5IGlmIHRoZXJlIGlzIGFuIGVycm9yKQorCis9aXRl bSAqIG5hbWVzCisKKz1pdGVtICogdHlwZXMKKworPWl0ZW0gKiByb3dzCisKKz1pdGVtICog cHNxbG91dAorCis9YmFjaworCitUaGUgbGFzdCA0IHdpbGwgYmUgZW1wdHkgdW5sZXNzIHRo ZSBTUUwgcHJvZHVjZXMgdHVwbGVzLgorCis9Y3V0CisKK3BhY2thZ2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKKwordXNlIENhcnA7Cit1c2UgRXhwb3J0ZXIgcXcoaW1wb3J0KTsKKworbXkgJHNl dHVwX29rOworCisjIExhc3QgY29ubmVjdGlvbiBlcnJvci4gIEJ5IGRlZmF1bHQgbmV3KCkg ZGllcyBvbiBhIGZhaWxlZCBjb25uZWN0aW9uLCBidXQKKyMgd2l0aCAibm9mYWlsID0+IDEi IGl0IHJldHVybnMgdW5kZWYgaW5zdGVhZCAoY2FsbGVycyBzdWNoIGFzCisjIHBvbGxfdW50 aWxfY29ubmVjdGlvbigpIHJlbHkgb24gdGhhdCkuICBUaGUgdW5kZWYgcGF0aCBsb3NlcyB0 aGUgbGlicHEgZXJyb3IKKyMgbWVzc2FnZSwgc28gc3Rhc2ggaXQgaGVyZSBmb3IgY2FsbGVy cyB0aGF0IHdhbnQgdG8gcmVwb3J0IHdoeS4KK291ciAkY29ubmVjdF9lcnJvcjsKKworQkVH SU4KK3sKKwkjIFVzZSB0aGUgRkZJIGxpYnBxIHdyYXBwZXIuICBUaGlzIHdpbGwgZmFpbCBp ZiB0aGUgRkZJIGxpYnJhcmllcyBhcmUgbm90CisJIyBhdmFpbGFibGUuCisJIworCSMgVGhl IGFjdHVhbCBzZXR1cCBpcyBkb25lIHBlciBzZXNzaW9uLCBiZWNhdXNlIHdlIGdldCB0aGUg bGliZGlyIGZyb20KKwkjIHRoZSBub2RlIG9iamVjdCAoaW4gbW9zdCBjYXNlcykuCisJcmVx dWlyZSBQb3N0Z3JlU1FMOjpQcUZGSTsKKwlQb3N0Z3JlU1FMOjpQcUZGSS0+aW1wb3J0Owor fQorCisjIFJlLWV4cG9ydCB0aGUgbGlicHEgc3RhdHVzIGNvbnN0YW50cyAoQ09OTkVDVElP Tl8qLCBQR1JFU18qLCBQUVRSQU5TXyosIC4uLikKKyMgc28gYSB0ZXN0IHRoYXQgdXNlcyB0 aGlzIGNsYXNzIGNhbiBjb21wYXJlICRyZXMtPntzdGF0dXN9IG9yIGNvbm5fc3RhdHVzKCkK KyMgYWdhaW5zdCBuYW1lZCBjb25zdGFudHMgd2l0aG91dCBzZXBhcmF0ZWx5IGltcG9ydGlu ZyBQb3N0Z3JlU1FMOjpQcUNvbnN0YW50cy4KK291ciBARVhQT1JUID0gQFBvc3RncmVTUUw6 OlBxQ29uc3RhbnRzOjpFWFBPUlQ7CisKKyMgbGlicHEgaXMgbG9hZGVkIGludG8gdGhlIHBy b2Nlc3MgZXhhY3RseSBvbmNlLCBmcm9tIHRoZSBmaXJzdCBzZXNzaW9uJ3MKKyMgbGliZGly OyBhbGwgbGF0ZXIgc2Vzc2lvbnMgcmV1c2UgaXQgcmVnYXJkbGVzcyBvZiB0aGVpciBub2Rl LiAgQSBtb2Rlcm4KKyMgbGlicHEgY2FuIHRhbGsgdG8gb2xkZXIgc2VydmVycywgc28gY3Jv c3MtdmVyc2lvbiB0ZXN0cyAocGdfdXBncmFkZSkganVzdAorIyBuZWVkIHRoZWlyIEZJUlNU IHNlc3Npb24gdG8gdXNlIHRoZSBuZXdlc3QgaW5zdGFsbGF0aW9uJ3MgbGlicHEuCitzdWIg X3NldHVwCit7CisJcmV0dXJuIGlmICRzZXR1cF9vazsKKwlteSAkbGliZGlyID0gc2hpZnQ7 CisJUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRsaWJkaXIpOworCSRzZXR1cF9vayA9IDE7 Cit9CisKKz1wb2QKKworPWhlYWQxIE1FVEhPRFMKKworPW92ZXIKKworPWl0ZW0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiAkbm9kZSBbLCBkYm5hbWU9PiAkZGJu YW1lIF0pCisKK1NldCB1cCBhIG5ldyBzZXNzaW9uIGZvciB0aGUgbm9kZSwgd2hpY2ggbXVz dCBiZSBhIEM8UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcj4KK2luc3RhbmNlLiBUaGUgZGVm YXVsdCBkYmFtZSBpcyBDPHBvc3RncmVzPi4KKworPWl0ZW0gUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbi0+bmV3KGNvbm5zdHIgPT4gJGNvbm5zdHIgWywgbGliZGlyID0+ICRsaWJkaXJd KQorCitTZXQgdXAgYSBuZXcgc2Vzc2lvbiBmb3IgdGhlIGNvbm5lY3Rpb24gc3RyaW5nLiBJ ZiB1c2luZyB0aGUgRkZJIGxpYnBxIHdyYXBwZXIsCitDPCRsaWJkaXI+IG11c3QgcG9pbnQg dG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgbGlicHEgbGlicmFyeSBpcyBpbnN0YWxsZWQu CisKK0J5IGRlZmF1bHQgQzxuZXc+IGRpZXMgaWYgdGhlIGNvbm5lY3Rpb24gY2Fubm90IGJl IGVzdGFibGlzaGVkLiBQYXNzCitDPDwgbm9mYWlsID0+IDEgPj4gdG8gcmV0dXJuIEM8dW5k ZWY+IG9uIGZhaWx1cmUgaW5zdGVhZCAodGhlIGxpYnBxIGVycm9yIGlzCit0aGVuIGF2YWls YWJsZSBpbiBDPCRQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOjpjb25uZWN0X2Vycm9yPik7 IHRoZSByZXRyeWluZworY2FsbGVycyBDPHBvbGxfdW50aWxfY29ubmVjdGlvbj4gYW5kIEM8 cG9sbF9xdWVyeV91bnRpbD4gcmVseSBvbiB0aGlzLgorCis9Y3V0CisKK3N1YiBuZXcKK3sK KwlteSAkY2xhc3MgPSBzaGlmdDsKKwlteSAkc2VsZiA9IHt9OworCWJsZXNzICRzZWxmLCAk Y2xhc3M7CisJbXkgJWFyZ3MgPSBAXzsKKwlteSAkbm9kZSA9ICRhcmdze25vZGV9OworCW15 ICRkYm5hbWUgPSAkYXJnc3tkYm5hbWV9IHx8ICdwb3N0Z3Jlcyc7CisJbXkgJGxpYmRpciA9 ICRhcmdze2xpYmRpcn07CisJbXkgJGNvbm5zdHIgPSAkYXJnc3tjb25uc3RyfTsKKwlteSAk dXNlciA9ICRhcmdze3VzZXJ9OworCW15ICR3YWl0ID0gJGFyZ3N7d2FpdH0gLy8gMTsKKwlt eSAkbm9mYWlsID0gJGFyZ3N7bm9mYWlsfTsKKwl1bmxlc3MgKCRzZXR1cF9vaykKKwl7CisJ CXVubGVzcyAoJGxpYmRpcikKKwkJeworCQkJY3JvYWsgImJhZCBub2RlIiB1bmxlc3MgJG5v ZGUtPmlzYSgiUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlciIpOworCQkJJGxpYmRpciA9ICRu b2RlLT5jb25maWdfZGF0YSgkXk8gZXEgJ01TV2luMzInID8gJy0tYmluZGlyJyA6ICctLWxp YmRpcicpOworCQl9CisJCV9zZXR1cCgkbGliZGlyKTsKKwl9CisJdW5sZXNzICgkY29ubnN0 cikKKwl7CisJCWNyb2FrICJiYWQgbm9kZSIgdW5sZXNzICRub2RlLT5pc2EoIlBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXIiKTsKKwkJJGNvbm5zdHIgPSAkbm9kZS0+Y29ubnN0cigkZGJu YW1lKTsKKwl9CisKKwkjIFBpbiB0aGUgY29ubmVjdGluZyByb2xlIHVubGVzcyB0aGUgY29u bmVjdGlvbiBzdHJpbmcgYWxyZWFkeSBuYW1lcyBvbmUuCisJIyBXaXRoIG5vICJ1c2VyIiBp biB0aGUgY29ubmVjdGlvbiBzdHJpbmcsIGxpYnBxIGZhbGxzIGJhY2sgdG8gUEdVU0VSIChh bmQKKwkjIG9ubHkgdGhlbiB0byB0aGUgb3BlcmF0aW5nLXN5c3RlbSB1c2VyKS4gIEEgc3Ry YXkgUEdVU0VSIGluIHRoZQorCSMgZW52aXJvbm1lbnQgLS0gYXMgc2V0IG9uIHRoZSBidWls ZGZhcm0gLS0gd291bGQgdGhlbiBzZWxlY3QgYSByb2xlIHRoYXQKKwkjIHRoZSBjbHVzdGVy J3MgYXV0aGVudGljYXRpb24gc2V0dXAgZG9lcyBub3QgcmVjb2duaXplOyBpbiBwYXJ0aWN1 bGFyIHRoZQorCSMgU1NQSSB1c2VybWFwIHVzZWQgb24gV2luZG93cyBpcyBidWlsdCBhcm91 bmQgdGhlIE9TIHVzZXIgYnkKKwkjICJwZ19yZWdyZXNzIC0tY29uZmlnLWF1dGgiLCBzbyBh IFBHVVNFUiBvZiBlLmcuICJidWlsZGZhcm0iIGZhaWxzCisJIyBhdXRoZW50aWNhdGlvbi4g IERlZmF1bHQgdG8gdGhlIE9TIHVzZXIsIHdoaWNoIGlzIGhvdyB0aGUgcmVzdCBvZiB0aGUK KwkjIHRlc3QgZnJhbWV3b3JrIGNvbm5lY3RzLCB1bmxlc3MgdGhlIGNhbGxlciAob3IgdGhl IGNvbm5lY3Rpb24gc3RyaW5nKQorCSMgcmVxdWVzdGVkIGEgc3BlY2lmaWMgdXNlci4KKwlp ZiAoJGNvbm5zdHIgIX4gL1xidXNlclxzKj0vKQorCXsKKwkJJHVzZXIgLy89ICReTyBlcSAn TVNXaW4zMicgPyAkRU5We1VTRVJOQU1FfSA6IChnZXRwd3VpZCgkPCkpWzBdOworCQkkY29u bnN0ciAuPSAiIHVzZXI9JyR1c2VyJyIgaWYgZGVmaW5lZCAkdXNlciAmJiAkdXNlciBuZSAn JzsKKwl9CisJJHNlbGYtPntjb25uc3RyfSA9ICRjb25uc3RyOworCSRzZWxmLT57bm90aWNl c30gPSBbXTsKKwkkc2VsZi0+e3RpbWVvdXR9ID0gJGFyZ3N7dGltZW91dH0gLy8gJFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CisKKwlpZiAoJHdhaXQpCisJ eworCQkkc2VsZi0+e2Nvbm59ID0gUFFjb25uZWN0ZGIoJGNvbm5zdHIpOworCQkjIFRoZSBk ZXN0cnVjdG9yIHdpbGwgY2xlYW4gdXAgZm9yIHVzIGV2ZW4gaWYgd2UgZmFpbAorCQl1bmxl c3MgKFBRc3RhdHVzKCRzZWxmLT57Y29ubn0pID09IENPTk5FQ1RJT05fT0spCisJCXsKKwkJ CSRjb25uZWN0X2Vycm9yID0gUFFlcnJvck1lc3NhZ2UoJHNlbGYtPntjb25ufSk7CisJCQly ZXR1cm4gdW5kZWYgaWYgJG5vZmFpbDsKKwkJCWNyb2FrICJjb3VsZCBub3QgY29ubmVjdCB0 byBcIiRjb25uc3RyXCI6ICRjb25uZWN0X2Vycm9yIjsKKwkJfQorCQkkc2VsZi0+X3NldHVw X25vdGljZV9wcm9jZXNzb3IoKTsKKwkJcmV0dXJuICRzZWxmOworCX0KKwllbHNlCisJewor CQkkc2VsZi0+e2Nvbm59ID0gUFFjb25uZWN0U3RhcnQoJGNvbm5zdHIpOworCQlpZiAoUFFz dGF0dXMoJHNlbGYtPntjb25ufSkgPT0gQ09OTkVDVElPTl9CQUQpCisJCXsKKwkJCSRjb25u ZWN0X2Vycm9yID0gUFFlcnJvck1lc3NhZ2UoJHNlbGYtPntjb25ufSk7CisJCQlyZXR1cm4g dW5kZWYgaWYgJG5vZmFpbDsKKwkJCWNyb2FrICJjb3VsZCBub3Qgc3RhcnQgY29ubmVjdGlv biB0byBcIiRjb25uc3RyXCI6ICRjb25uZWN0X2Vycm9yIjsKKwkJfQorCQlyZXR1cm4gJHNl bGY7CisJfQorfQorCisjIFNldCB1cCBhIG5vdGljZSBwcm9jZXNzb3IgdG8gY2FwdHVyZSBu b3RpY2VzL3dhcm5pbmdzCitzdWIgX3NldHVwX25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAk c2VsZiA9IHNoaWZ0OworCisJIyBPbmx5IGF2YWlsYWJsZSB3aXRoIEZGSSBiYWNrZW5kCisJ cmV0dXJuIHVubGVzcyBkZWZpbmVkICZjcmVhdGVfbm90aWNlX3Byb2Nlc3NvcjsKKworCW15 ICRub3RpY2VzID0gJHNlbGYtPntub3RpY2VzfTsKKworCSMgQ3JlYXRlIGNsb3N1cmUgdGhh dCBjYXB0dXJlcyBub3RpY2VzIGludG8gb3VyIGFycmF5CisJJHNlbGYtPntfbm90aWNlX2Ns b3N1cmV9ID0gY3JlYXRlX25vdGljZV9wcm9jZXNzb3Ioc3ViIHsKKwkJbXkgKCRhcmcsICRt ZXNzYWdlKSA9IEBfOworCQlwdXNoIEAkbm90aWNlcywgJG1lc3NhZ2U7CisJfSk7CisKKwlQ UXNldE5vdGljZVByb2Nlc3Nvcigkc2VsZi0+e2Nvbm59LCAkc2VsZi0+e19ub3RpY2VfY2xv c3VyZX0sIHVuZGVmKTsKK30KKworCisjIGZvciBhIGNvbm5lY3Rpb24gc3RhcnRlZCB3aXRo IFBRY29ubmVjdFN0YXJ0LCB3YWl0IHVudGlsIGl0IGlzIGluIENPTk5FQ1RJT05fT0sgc3Rh dGUuCisjIFVzZXMgUFFjb25uZWN0UG9sbCB0byBkcml2ZSB0aGUgYXN5bmMgY29ubmVjdGlv biBmb3J3YXJkLgorc3ViIHdhaXRfY29ubmVjdAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJ bXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICR0aW1lb3V0ID0gJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CisJbXkgJHN0YXJ0ID0gdGltZTsKKwl3 aGlsZSAoMSkKKwl7CisJCW15ICRwb2xsX3JlcyA9IFBRY29ubmVjdFBvbGwoJGNvbm4pOwor CQlteSAkc3RhdHVzID0gUFFzdGF0dXMoJGNvbm4pOworCisJCSMgQ29ubmVjdGlvbiBpcyBj b21wbGV0ZQorCQlpZiAoJHBvbGxfcmVzID09IFBHUkVTX1BPTExJTkdfT0sgfHwgJHN0YXR1 cyA9PSBDT05ORUNUSU9OX09LKQorCQl7CisJCQkkc2VsZi0+X3NldHVwX25vdGljZV9wcm9j ZXNzb3IoKTsKKwkJCXJldHVybjsKKwkJfQorCisJCSMgQ29ubmVjdGlvbiBmYWlsZWQKKwkJ aWYgKCRwb2xsX3JlcyA9PSBQR1JFU19QT0xMSU5HX0ZBSUxFRCB8fCAkc3RhdHVzID09IENP Tk5FQ1RJT05fQkFEKQorCQl7CisJCQlkaWUgImNvbm5lY3Rpb24gZmFpbGVkOiAiIC4gUFFl cnJvck1lc3NhZ2UoJGNvbm4pOworCQl9CisKKwkJZGllICJ0aW1lZCBvdXQgd2FpdGluZyBm b3IgY29ubmVjdGlvbiIgaWYgdGltZSAtICRzdGFydCA+ICR0aW1lb3V0OworCisJCSMgV2Fp dCBvbiBzb2NrZXQgYmFzZWQgb24gd2hhdCBQUWNvbm5lY3RQb2xsIG5lZWRzCisJCW15ICRz b2NrZXQgPSBQUXNvY2tldCgkY29ubik7CisJCWlmICgkc29ja2V0ID49IDApCisJCXsKKwkJ CW15ICRmb3JSZWFkID0gKCRwb2xsX3JlcyA9PSBQR1JFU19QT0xMSU5HX1JFQURJTkcpID8g MSA6IDA7CisJCQlteSAkZm9yV3JpdGUgPSAoJHBvbGxfcmVzID09IFBHUkVTX1BPTExJTkdf V1JJVElORykgPyAxIDogMDsKKwkJCW15ICRlbmRfdGltZSA9IFBRZ2V0Q3VycmVudFRpbWVV U2VjKCkgKyAxXzAwMF8wMDA7ICAjIDEgc2Vjb25kCisJCQlQUXNvY2tldFBvbGwoJHNvY2tl dCwgJGZvclJlYWQsICRmb3JXcml0ZSwgJGVuZF90aW1lKTsKKwkJfQorCX0KK30KKworIyBT aW5nbGUgc3RlcCBvZiBhc3luYyBjb25uZWN0aW9uIHBvbGxpbmcgLSBkcml2ZXMgdGhlIGNv bm5lY3Rpb24gc3RhdGUgbWFjaGluZQorIyBmb3J3YXJkIHdpdGhvdXQgYmxvY2tpbmcuIFJl dHVybnMgdGhlIHBvbGwgcmVzdWx0IChQR1JFU19QT0xMSU5HXyogY29uc3RhbnQpLgorc3Vi IHBvbGxfY29ubmVjdAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2Vs Zi0+e2Nvbm59OworCXJldHVybiBQUWNvbm5lY3RQb2xsKCRjb25uKTsKK30KKworPXBvZAor Cis9aXRlbSAkc2Vzc2lvbi0+Y2xvc2UoKQorCitDbG9zZSB0aGUgY29ubmVjdGlvbgorCis9 Y3V0CisKK3N1YiBjbG9zZQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJUFFmaW5pc2goJHNl bGYtPntjb25ufSk7CisJZGVsZXRlICRzZWxmLT57Y29ubn07Cit9CisKKyMgQWxpYXMgZm9y IGNvbXBhdGliaWxpdHkgd2l0aCBCYWNrZ3JvdW5kUHNxbAorKnF1aXQgPSBcJmNsb3NlOwor CisjIGNsb3NlIHRoZSBzZXNzaW9uIGlmIHRoZSBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUK K3N1YiBERVNUUk9ZCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKworCSMgRHVyaW5nIGdsb2Jh bCBkZXN0cnVjdGlvbiB0aGUgRkZJOjpQbGF0eXB1cyBiaW5kaW5ncyAoYW5kIGFueSBub3Rp Y2UKKwkjIHByb2Nlc3NvciBjbG9zdXJlIHJlZ2lzdGVyZWQgd2l0aCBsaWJwcSkgbWF5IGFs cmVhZHkgaGF2ZSBiZWVuIHRvcm4KKwkjIGRvd24gaW4gYW4gdW5wcmVkaWN0YWJsZSBvcmRl ci4gIENhbGxpbmcgUFFmaW5pc2goKSB0aGVuIGNhbiBpbnZva2UgYQorCSMgZnJlZWQgbm90 aWNlIGNhbGxiYWNrIG9yIGEgZnJlZWQgRkZJIHRodW5rLCBkeWluZyB3aXRoICJDYW4ndCB1 c2UgYW4KKwkjIHVuZGVmaW5lZCB2YWx1ZSBhcyBhIHN1YnJvdXRpbmUgcmVmZXJlbmNlIi4g IFRoZSBwcm9jZXNzIGlzIGV4aXRpbmcKKwkjIGFueXdheSwgc28ganVzdCBsZXQgdGhlIE9T IHJlY2xhaW0gdGhlIHNvY2tldC4KKwlyZXR1cm4gaWYgJHteR0xPQkFMX1BIQVNFfSBlcSAn REVTVFJVQ1QnOworCisJJHNlbGYtPmNsb3NlIGlmIGV4aXN0cyAkc2VsZi0+e2Nvbm59Owor fQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5yZWNvbm5lY3QoKQorCitSZW9wZW4gdGhl IHNlc3Npb24gdXNpbmcgdGhlIG9yaWdpbmFsIGNvbm5zdHIuIElmIHRoZSBzZXNzaW9uIGlz IHN0aWxsIG9wZW4sCitjbG9zZSBpdCBiZWZvcmUgcmVvcGVuaW5nLgorCis9Y3V0CisKK3N1 YiByZWNvbm5lY3QKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCSRzZWxmLT5jbG9zZSBpZiBl eGlzdHMgJHNlbGYtPntjb25ufTsKKwkkc2VsZi0+e2Nvbm59ID0gUFFjb25uZWN0ZGIoJHNl bGYtPntjb25uc3RyfSk7CisJbXkgJHN0YXR1cyA9IFBRc3RhdHVzKCRzZWxmLT57Y29ubn0p OworCWlmICgkc3RhdHVzID09IENPTk5FQ1RJT05fT0spCisJeworCQkkc2VsZi0+X3NldHVw X25vdGljZV9wcm9jZXNzb3IoKTsKKwl9CisJcmV0dXJuICRzdGF0dXM7Cit9CisKKz1wb2QK KworPWl0ZW0gJHNlc3Npb24tPnJlY29ubmVjdF9hbmRfY2xlYXIoKQorCitSZWNvbm5lY3Qg YW5kIGNsZWFyIGFsbCBjYXB0dXJlZCBub3RpY2VzLiBSZXR1cm5zIHRoZSBjb25uZWN0aW9u IHN0YXR1cy4KKworPWN1dAorCitzdWIgcmVjb25uZWN0X2FuZF9jbGVhcgoreworCW15ICRz ZWxmID0gc2hpZnQ7CisJbXkgJHN0YXR1cyA9ICRzZWxmLT5yZWNvbm5lY3QoKTsKKwkkc2Vs Zi0+Y2xlYXJfbm90aWNlcygpOworCXJldHVybiAkc3RhdHVzOworfQorCis9cG9kCisKKz1p dGVtICRzZXNzaW9uLT5nZXRfbm90aWNlc19zdHIoKQorCitSZXR1cm4gYWxsIGNhcHR1cmVk IG5vdGljZXMvd2FybmluZ3MgYXMgYSBzaW5nbGUgc3RyaW5nIChqb2luZWQgYnkgZW1wdHkg c3RyaW5nKS4KK1RoaXMgaXMgc2ltaWxhciB0byBob3cgQmFja2dyb3VuZFBzcWwncyB7c3Rk ZXJyfSBmaWVsZCB3b3Jrcy4KKworPWN1dAorCitzdWIgZ2V0X25vdGljZXNfc3RyCit7CisJ bXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gam9pbignJywgQHskc2VsZi0+e25vdGljZXN9 fSk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmNsZWFyX25vdGljZXMoKQorCitD bGVhciBhbGwgY2FwdHVyZWQgbm90aWNlcy93YXJuaW5ncy4KKworPWN1dAorCitzdWIgY2xl YXJfbm90aWNlcworeworCW15ICRzZWxmID0gc2hpZnQ7CisJIyBDbGVhciBpbiBwbGFjZSAt IGRvbid0IHJlcGxhY2UgdGhlIGFycmF5LCBhcyB0aGUgbm90aWNlIHByb2Nlc3NvcgorCSMg Y2xvc3VyZSBoYXMgYSByZWZlcmVuY2UgdG8gaXQKKwlAeyRzZWxmLT57bm90aWNlc319ID0g KCk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9zdGRlcnIoKQorCitSZXR1 cm4gYSBzdGRlcnItbGlrZSBzdHJpbmcgY29udGFpbmluZyBhbGwgbm90aWNlcyBwbHVzIGFu eSBlcnJvciBtZXNzYWdlCitmcm9tIHRoZSBsYXN0IHF1ZXJ5LiBUaGlzIG1pbWljcyBCYWNr Z3JvdW5kUHNxbCdzIHtzdGRlcnJ9IGJlaGF2aW9yLgorCis9Y3V0CisKK3N1YiBnZXRfc3Rk ZXJyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3RkZXJyID0gJHNlbGYtPmdldF9u b3RpY2VzX3N0cigpOworCWlmIChleGlzdHMgJHNlbGYtPntsYXN0X2Vycm9yfSAmJiBkZWZp bmVkICRzZWxmLT57bGFzdF9lcnJvcn0pCisJeworCQkkc3RkZXJyIC49ICRzZWxmLT57bGFz dF9lcnJvcn07CisJfQorCXJldHVybiAkc3RkZXJyOworfQorCis9cG9kCisKKz1pdGVtICRz ZXNzaW9uLT5jbGVhcl9zdGRlcnIoKQorCitDbGVhciBub3RpY2VzIGFuZCBsYXN0IGVycm9y LCBsaWtlIHNldHRpbmcgJHBzcWwtPntzdGRlcnJ9ID0gJycuCisKKz1jdXQKKworc3ViIGNs ZWFyX3N0ZGVycgoreworCW15ICRzZWxmID0gc2hpZnQ7CisJJHNlbGYtPmNsZWFyX25vdGlj ZXMoKTsKKwlkZWxldGUgJHNlbGYtPntsYXN0X2Vycm9yfTsKK30KKworPXBvZAorCis9aXRl bSAkc2Vzc2lvbi0+Y29ubl9zdGF0dXMoKQorCitSZXR1cm4gdGhlIGNvbm5lY3Rpb24gc3Rh dHVzLiBUaGlzIHdpbGwgYmUgYSBsaWJwcSBzdGF0dXMgdmFsdWUgbGlrZQorQzxDT05ORUNU SU9OX09LPi4KKworPWN1dAorCitzdWIgY29ubl9zdGF0dXMKK3sKKwlteSAkc2VsZiA9IHNo aWZ0OworCXJldHVybiBleGlzdHMgJHNlbGYtPntjb25ufSA/IFBRc3RhdHVzKCRzZWxmLT57 Y29ubn0pIDogdW5kZWY7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmNvbm5lY3Rl ZCgpCisKK1JldHVybiB0cnVlIGlmIHRoZSBzZXNzaW9uIGhhcyBhIGxpdmUgY29ubmVjdGlv biAoc3RhdHVzIEM8Q09OTkVDVElPTl9PSz4pLgorCis9Y3V0CisKK3N1YiBjb25uZWN0ZWQK K3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBleGlzdHMgJHNlbGYtPntjb25ufSAm JiBQUXN0YXR1cygkc2VsZi0+e2Nvbm59KSA9PSBDT05ORUNUSU9OX09LOworfQorCis9cG9k CisKKz1pdGVtICRzZXNzaW9uLT5iYWNrZW5kX3BpZCgpCisKK1JldHVybiB0aGUgYmFja2Vu ZCBwcm9jZXNzIElEIGZvciB0aGlzIGNvbm5lY3Rpb24uCisKKz1jdXQKKworc3ViIGJhY2tl bmRfcGlkCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFiYWNrZW5kUElEKCRz ZWxmLT57Y29ubn0pOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5kbygkc3FsLCAu Li4pCisKK1J1biBvbmUgb3IgbW9yZSBTUUwgc3RhdGVtZW50cyBzeW5jaHJvbm91c2x5ICh1 c2luZyBDPFBRZXhlYz4pLiBUaGUgc3RhdGVtZW50cworc2hvdWxkIG5vdCByZXR1cm4gYW55 IHR1cGxlcy4gUmV0dXJucyB0aGUgc3RhdHVzLCB3aGljaCB3aWxsIGJlCitDPFBHUkVTX0NP TU1BTkRfT0s+IChpLmUuIDEpIGluIHRoZSBjYXNlIG9mIHN1Y2Nlc3MuCisKKz1jdXQKKwor c3ViIGRvCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29u bn07CisJbXkgJHN0YXR1czsKKwlmb3JlYWNoIG15ICRzcWwgKEBfKQorCXsKKwkJbXkgJHJl c3VsdCA9IFBRZXhlYygkY29ubiwgJHNxbCk7CisJCSRzdGF0dXMgPSBQUXJlc3VsdFN0YXR1 cygkcmVzdWx0KTsKKwkJUFFjbGVhcigkcmVzdWx0KTsKKwkJcmV0dXJuICRzdGF0dXMgdW5s ZXNzICRzdGF0dXMgPT0gUEdSRVNfQ09NTUFORF9PSzsKKwl9CisJcmV0dXJuICRzdGF0dXM7 Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpCisKK1J1biBh IHNpbmdsZSBzdGF0ZW1lbnQgYXN5bmNocm9ub3VzbHksIHVzaW5nIEM8UFFzZW5kUXVlcnk+ LiBUaGUgcmV0dXJuIHZhbHVlCitpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzLgor Cis9Y3V0CisKK3N1YiBkb19hc3luYworeworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNv bm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICRzcWwgPSBzaGlmdDsKKwlteSAkcmVzdWx0ID0g UFFzZW5kUXVlcnkoJGNvbm4sICRzcWwpOworCXJldHVybiAkcmVzdWx0OyAjIDEgb3IgMAor fQorCisjIGdldCB0aGUgbmV4dCByZXN1bHRzZXQgZnJvbSBzb21lIGFzeW5jIGNvbW1hbmRz CisjIHdhaXQgaWYgbmVjZXNzYXJ5IHVzaW5nIFBRc29ja2V0UG9sbAorIyBjLmYuIGxpYnBx c3J2X2dldF9yZXN1bHQKK3N1YiBfZ2V0X3Jlc3VsdAoreworCW15ICRjb25uID0gc2hpZnQ7 CisJbXkgJHRpbWVvdXQgPSBzaGlmdCAvLyAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRp bWVvdXRfZGVmYXVsdDsKKwlteSAkc29ja2V0ID0gUFFzb2NrZXQoJGNvbm4pOworCW15ICRk ZWFkbGluZSA9IFBRZ2V0Q3VycmVudFRpbWVVU2VjKCkgKyAkdGltZW91dCAqIDFfMDAwXzAw MDsKKwl3aGlsZSAoUFFpc0J1c3koJGNvbm4pKQorCXsKKwkJIyBBIHF1ZXJ5IHNlbnQgb24g YSBub24tYmxvY2tpbmcgY29ubmVjdGlvbiBtYXkgbm90IGJlIGZ1bGx5IGZsdXNoZWQKKwkJ IyB5ZXQ7IFBRZmx1c2goKSB0ZWxscyB1cyB3aGV0aGVyIHdlIG11c3QgYWxzbyB3YWl0IGZv ciB0aGUgc29ja2V0IHRvCisJCSMgYmVjb21lIHdyaXRhYmxlICh3YWl0aW5nIG9ubHkgZm9y IHJlYWRhYmxlIHdvdWxkIGRlYWRsb2NrLCBzaW5jZSB0aGUKKwkJIyBzZXJ2ZXIgY2FuJ3Qg cmVwbHkgdG8gYSByZXF1ZXN0IGl0IGhhc24ndCByZWNlaXZlZCkuCisJCW15ICRmbHVzaCA9 IFBRZmx1c2goJGNvbm4pOworCQljcm9hayAiUFFmbHVzaCBmYWlsZWQ6ICIgLiBQUWVycm9y TWVzc2FnZSgkY29ubikgaWYgJGZsdXNoIDwgMDsKKworCQlteSAkbm93ID0gUFFnZXRDdXJy ZW50VGltZVVTZWMoKTsKKwkJY3JvYWsgInRpbWVkIG91dCB3YWl0aW5nIGZvciBxdWVyeSBy ZXN1bHQiIGlmICRub3cgPj0gJGRlYWRsaW5lOworCisJCSMgV2FrZSBhdCBsZWFzdCBvbmNl IGEgc2Vjb25kIHNvIHRoZSBkZWFkbGluZSBpcyByZWNoZWNrZWQgZXZlbiBpZiB0aGUKKwkJ IyBzb2NrZXQgbmV2ZXIgYmVjb21lcyByZWFkeS4KKwkJbXkgJGVuZCA9ICRub3cgKyAxXzAw MF8wMDA7CisJCSRlbmQgPSAkZGVhZGxpbmUgaWYgJGRlYWRsaW5lIDwgJGVuZDsKKwkJUFFz b2NrZXRQb2xsKCRzb2NrZXQsIDEsICgkZmx1c2ggPiAwID8gMSA6IDApLCAkZW5kKTsKKwor CQlsYXN0IGlmIFBRY29uc3VtZUlucHV0KCRjb25uKSA9PSAwOworCX0KKwlyZXR1cm4gUFFn ZXRSZXN1bHQoJGNvbm4pOworfQorCisjIERyYWluIGFuZCBkaXNjYXJkIGFueSByZXN1bHRz IHN0aWxsIHBlbmRpbmcgb24gdGhlIGNvbm5lY3Rpb24uCitzdWIgX2RyYWluX3Jlc3VsdHMK K3sKKwlteSAoJGNvbm4sICR0aW1lb3V0KSA9IEBfOworCXdoaWxlIChteSAkciA9IF9nZXRf cmVzdWx0KCRjb25uLCAkdGltZW91dCkpCisJeworCQlQUWNsZWFyKCRyKTsKKwl9Cit9CisK Kz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPndhaXRfZm9yX2NvbXBsZXRpb24oKQorCitXYWl0 IHVudGlsIGFsbCBhc3luY2hyb25vdXMgU1FMIGhhcyBjb21wbGV0ZWQKKworPWN1dAorCitz dWIgd2FpdF9mb3JfY29tcGxldGlvbgoreworCSMgd2FpdCBmb3IgYWxsIHRoZSByZXN1bHRz ZXRzIGFuZCBjbGVhciB0aGVtCisJIyBjLmYuIGxpYnBxc3J2X2dldF9yZXN1bHRfbGFzdAor CW15ICRzZWxmID0gc2hpZnQ7CisJX2RyYWluX3Jlc3VsdHMoJHNlbGYtPntjb25ufSwgJHNl bGYtPnt0aW1lb3V0fSk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9hc3lu Y19yZXN1bHQoKQorCitXYWl0IGZvciBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYW4gYXN5 bmMgcXVlcnkgYXMgYSByZXN1bHQgaGFzaC4KK0NsZWFycyBhbnkgc3Vic2VxdWVudCByZXN1 bHRzLgorCis9Y3V0CisKK3N1YiBnZXRfYXN5bmNfcmVzdWx0Cit7CisJbXkgJHNlbGYgPSBz aGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJbXkgJHJlc3VsdCA9IF9nZXRf cmVzdWx0KCRjb25uLCAkc2VsZi0+e3RpbWVvdXR9KTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNz ICRyZXN1bHQ7CisJbXkgJHJlcyA9IF9nZXRfcmVzdWx0X2RhdGEoJHJlc3VsdCwgJGNvbm4p OworCVBRY2xlYXIoJHJlc3VsdCk7CisJX2RyYWluX3Jlc3VsdHMoJGNvbm4sICRzZWxmLT57 dGltZW91dH0pOyAgICAjIGNsZWFyIGFueSByZW1haW5pbmcgcmVzdWx0cworCXJldHVybiAk cmVzOworfQorCis9cG9kCisKKz1pdGVtICAkc2Vzc2lvbi0+c2V0X3Bhc3N3b3JkKCR1c2Vy LCAkcGFzc3dvcmQpCisKK1NldCB0aGUgdXNlcidzIHBhc3N3b3JkIGJ5IGNhbGxpbmcgQzxQ UWNoYW5nZVBhc3N3b3JkPi4KKworUmV0dXJucyBhIHJlc3VsdCBoYXNoLgorCis9Y3V0CisK KyMgc2V0IHBhc3N3b3JkIGZvciB1c2VyCitzdWIgc2V0X3Bhc3N3b3JkCit7CisJbXkgJHNl bGYgPSBzaGlmdDsKKwlteSAkdXNlciA9IHNoaWZ0OworCW15ICRwYXNzd29yZCA9IHNoaWZ0 OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkcmVzdWx0ID0gUFFjaGFuZ2VQ YXNzd29yZCgkY29ubiwgJHVzZXIsICRwYXNzd29yZCk7CisJbXkgJHJldCA9IF9nZXRfcmVz dWx0X2RhdGEoJHJlc3VsdCwgJGNvbm4pOworCVBRY2xlYXIoJHJlc3VsdCk7CisJcmV0dXJu ICRyZXQ7Cit9CisKKyMgQ29tbW9uIGludGVybmFsIHJvdXRpbmUgdG8gcHJvY2VzcyByZXN1 bHQgZGF0YS4KKyMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBkZWFkIGFuZCB3aWxsIGJlIGdh cmJhZ2UgY29sbGVjdGVkIGFzIG5lY2Vzc2FyeS4KKworc3ViIF9nZXRfcmVzdWx0X2RhdGEK K3sKKwlteSAkcmVzdWx0ID0gc2hpZnQ7CisJbXkgJGNvbm4gPSBzaGlmdDsKKwlteSAkc3Rh dHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7CisJbXkgJHJlcyA9IHsJc3RhdHVzID0+ ICRzdGF0dXMsIG5hbWVzID0+IFtdLCB0eXBlcyA9PiBbXSwgcm93cyA9PiBbXSwKKwkJCXBz cWxvdXQgPT4gIiJ9OworCXVubGVzcyAoJHN0YXR1cyA9PSBQR1JFU19UVVBMRVNfT0sgfHwg JHN0YXR1cyA9PSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJJHJlcy0+e2Vycm9yX21lc3Nh Z2V9ID0gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCQlyZXR1cm4gJHJlczsKKwl9CisJaWYg KCRzdGF0dXMgPT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCXJldHVybiAkcmVzOworCX0K KwlteSAkbnR1cGxlcyA9IFBRbnR1cGxlcygkcmVzdWx0KTsKKwlteSAkbmZpZWxkcyA9IFBR bmZpZWxkcygkcmVzdWx0KTsKKwkjIGFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgc3RyaW5ncyBy ZXR1cm5lZCBieSBQUWZuYW1lIGFuZCBQUWdldHZhbHVlCisJIyBhcmUgbWFwcGVkIGludG8g cGVybCBzcGFjZSB1c2luZyBzZXRzdnB2IG9yIHNpbWlsYXIgYW5kIHRodXMgd29uJ3QKKwkj IGJlIGFmZmVjdCBieSB1cyBjYWxsaW5nIFBRY2xlYXIgb24gdGhlIHJlc3VsdCBvYmplY3Qu CisJZm9yZWFjaCBteSAkZmllbGQgKDAgLi4gJG5maWVsZHMtMSkKKwl7CisJCXB1c2goQHsk cmVzLT57bmFtZXN9fSwgUFFmbmFtZSgkcmVzdWx0LCAkZmllbGQpKTsKKwkJcHVzaChAeyRy ZXMtPnt0eXBlc319LCBQUWZ0eXBlKCRyZXN1bHQsICRmaWVsZCkpOworCX0KKwlteSBAdGV4 dHJvd3M7CisJZm9yZWFjaCBteSAkbnJvdyAoMCAuLiAkbnR1cGxlcyAtIDEpCisJeworCQlt eSAkcm93ID0gW107CisJCWZvcmVhY2ggbXkgJGZpZWxkICggMCAuLiAkbmZpZWxkcyAtIDEp CisJCXsKKwkJCW15ICR2YWwgPSBQUWdldHZhbHVlKCRyZXN1bHQsICRucm93LCAkZmllbGQp OworCQkJaWYgKCgkdmFsIC8vICIiKSBlcSAiIikKKwkJCXsKKwkJCQkkdmFsID0gdW5kZWYg aWYgUFFnZXRpc251bGwoJHJlc3VsdCwgJG5yb3csICRmaWVsZCk7CisJCQl9CisJCQlwdXNo KEAkcm93LCAkdmFsKTsKKwkJfQorCQlwdXNoKEB7JHJlcy0+e3Jvd3N9fSwgJHJvdyk7CisJ CW5vIHdhcm5pbmdzIHF3KHVuaW5pdGlhbGl6ZWQpOworCQlwdXNoKEB0ZXh0cm93cywgam9p bignfCcsIEAkcm93KSk7CisJfQorCSRyZXMtPntwc3Fsb3V0fSA9IGpvaW4oIlxuIixAdGV4 dHJvd3MpIGlmICRudHVwbGVzOworCXJldHVybiAkcmVzOworfQorCisKKz1wb2QKKworPWl0 ZW0gJHNlc3Npb24tPnF1ZXJ5KCRzcWwpCisKK1J1bnMgc3FsIHRoYXQgbWlnaHQgcmV0dXJu IHR1cGxlcy4KKworUmV0dXJucyBhIHJlc3VsdCBoYXNoLgorCis9Y3V0CisKK3N1YiBxdWVy eQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHNxbCA9IHNoaWZ0OworCW15ICRjb25u ID0gJHNlbGYtPntjb25ufTsKKworCSMgVXNlIFBRc2VuZFF1ZXJ5ICsgUFFnZXRSZXN1bHQg dG8gaGFuZGxlIG11bHRpLXN0YXRlbWVudCBTUUwgcHJvcGVybHkuCisJIyBUaGlzIGNvbGxl Y3RzIHJlc3VsdHMgZnJvbSBhbGwgc3RhdGVtZW50cyBhbmQgcmV0dXJucyB0aGUgbGFzdCBv bmUKKwkjIHRoYXQgaGFkIHR1cGxlcywgc2ltaWxhciB0byBob3cgcHNxbCB3b3Jrcy4KKwlQ UXNlbmRRdWVyeSgkY29ubiwgJHNxbCkgb3IgZG8geworCQlyZXR1cm4geyBzdGF0dXMgPT4g LTEsIGVycm9yX21lc3NhZ2UgPT4gUFFlcnJvck1lc3NhZ2UoJGNvbm4pLAorCQkJCSBuYW1l cyA9PiBbXSwgdHlwZXMgPT4gW10sIHJvd3MgPT4gW10sIHBzcWxvdXQgPT4gIiIgfTsKKwl9 OworCisJbXkgJGZpbmFsX3JlczsKKwlteSAkbGFzdF9lcnJvcjsKKwlteSAkZXJyb3Jfc3Rh dHVzOworCW15IEBhbGxfcHNxbG91dDsKKworCXdoaWxlIChteSAkcmVzdWx0ID0gX2dldF9y ZXN1bHQoJGNvbm4sICRzZWxmLT57dGltZW91dH0pKQorCXsKKwkJbXkgJHJlcyA9IF9nZXRf cmVzdWx0X2RhdGEoJHJlc3VsdCwgJGNvbm4pOworCQlQUWNsZWFyKCRyZXN1bHQpOworCisJ CSMgQ29sbGVjdCBvdXRwdXQgZnJvbSBhbGwgc3RhdGVtZW50cworCQlwdXNoIEBhbGxfcHNx bG91dCwgJHJlcy0+e3BzcWxvdXR9IGlmICRyZXMtPntwc3Fsb3V0fSBuZSAiIjsKKworCQkj IFRyYWNrIGVycm9ycworCQlpZiAoZXhpc3RzICRyZXMtPntlcnJvcl9tZXNzYWdlfSkKKwkJ eworCQkJJGxhc3RfZXJyb3IgPSAkcmVzLT57ZXJyb3JfbWVzc2FnZX07CisJCQkkZXJyb3Jf c3RhdHVzID0gJHJlcy0+e3N0YXR1c307CisJCX0KKworCQkjIEtlZXAgdGhlIGxhc3QgcmVz dWx0IHRoYXQgaGFkIHR1cGxlcywgb3IgdGhlIGxhc3QgcmVzdWx0IG92ZXJhbGwKKwkJaWYg KCRyZXMtPntzdGF0dXN9ID09IFBHUkVTX1RVUExFU19PSyB8fCAhZGVmaW5lZCAkZmluYWxf cmVzKQorCQl7CisJCQkkZmluYWxfcmVzID0gJHJlczsKKwkJfQorCX0KKworCSRmaW5hbF9y ZXMgLy89IHsgc3RhdHVzID0+IFBHUkVTX0NPTU1BTkRfT0ssIG5hbWVzID0+IFtdLCB0eXBl cyA9PiBbXSwKKwkJCQkJIHJvd3MgPT4gW10sIHBzcWxvdXQgPT4gIiIgfTsKKworCSMgQ29t YmluZSBhbGwgb3V0cHV0IChsaWtlIHBzcWwgZG9lcykKKwkkZmluYWxfcmVzLT57cHNxbG91 dH0gPSBqb2luKCJcbiIsIEBhbGxfcHNxbG91dCkgaWYgQGFsbF9wc3Fsb3V0OworCisJIyBJ ZiB0aGVyZSB3YXMgYW55IGVycm9yLCBpbmNsdWRlIGl0IGluIHRoZSByZXN1bHQgZm9yIHF1 ZXJ5X3NhZmUKKwkkZmluYWxfcmVzLT57ZXJyb3JfbWVzc2FnZX0gPSAkbGFzdF9lcnJvciBp ZiBkZWZpbmVkICRsYXN0X2Vycm9yOworCisJIyBJZiBhbnkgc3RhdGVtZW50IGVycm9yZWQs IHJlZmxlY3QgdGhhdCBpbiB0aGUgc3RhdHVzIGV2ZW4gd2hlbiBhbgorCSMgZWFybGllciBz dGF0ZW1lbnQgcmV0dXJuZWQgdHVwbGVzLCBzbyBjYWxsZXJzIHRoYXQgY2hlY2sgc3RhdHVz IChub3QKKwkjIGp1c3QgZXJyb3JfbWVzc2FnZSkgc2VlIHRoZSBmYWlsdXJlLgorCSRmaW5h bF9yZXMtPntzdGF0dXN9ID0gJGVycm9yX3N0YXR1cyBpZiBkZWZpbmVkICRlcnJvcl9zdGF0 dXM7CisKKwkjIFN0b3JlIGVycm9yIGZvciBnZXRfc3RkZXJyKCkKKwkkc2VsZi0+e2xhc3Rf ZXJyb3J9ID0gJGxhc3RfZXJyb3I7CisKKwkjIEEgbXVsdGktc3RhdGVtZW50IHF1ZXJ5IHRo YXQgZXJyb3JzIGNhbiBsZWF2ZSB0aGUgc2Vzc2lvbiBpbiBhbiBvcGVuLAorCSMgYWJvcnRl ZCB0cmFuc2FjdGlvbjogbGlicHEgYWJvcnRzIHByb2Nlc3Npbmcgb2YgdGhlIHF1ZXJ5IHN0 cmluZyBhdCB0aGUKKwkjIGVycm9yLCBzbyBhIHRyYWlsaW5nIENPTU1JVCAoZS5nLiAiQkVH SU47IDxlcnJvcj47IENPTU1JVCIpIG5ldmVyIHJ1bnMuCisJIyBSb2xsIGJhY2sgc28gYSBs YXRlciBxdWVyeSBvbiB0aGlzIHJldXNlZCBzZXNzaW9uIGlzIG5vdCByZWplY3RlZCB3aXRo CisJIyAiY3VycmVudCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIi4KKwlpZiAoUFF0cmFuc2Fj dGlvblN0YXR1cygkY29ubikgPT0gUFFUUkFOU19JTkVSUk9SKQorCXsKKwkJbXkgJHJiID0g UFFleGVjKCRjb25uLCAiUk9MTEJBQ0siKTsKKwkJUFFjbGVhcigkcmIpIGlmICRyYjsKKwl9 CisKKwlyZXR1cm4gJGZpbmFsX3JlczsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+ cXVlcnlfc2FmZSgkc3FsKQorCitSdW5zIHNxbCB0aGF0IG1pZ2h0IHJldHVybiB0dXBsZXMs IGNyb2FraW5nIGlmIHRoZXJlJ3MgYW4gZXJyb3IuCitSZXR1cm5zIHRoZSBwc3Fsb3V0IHN0 cmluZyAobGlrZSBwc3FsIC1BdCBvdXRwdXQpIG9uIHN1Y2Nlc3MuCisKKz1jdXQKKworc3Vi IHF1ZXJ5X3NhZmUKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRzcWwgPSBzaGlmdDsK KwlteSAkcmVzID0gJHNlbGYtPnF1ZXJ5KCRzcWwpOworCWlmIChleGlzdHMgJHJlcy0+e2Vy cm9yX21lc3NhZ2V9KSB7CisJCSMgRGVidWc6IHNob3cgd2hlcmUgdGhlIGVycm9yIG9jY3Vy cmVkCisJCW15ICRzaG9ydF9zcWwgPSBzdWJzdHIoJHNxbCwgMCwgMTAwKTsKKwkJJHNob3J0 X3NxbCA9fiBzL1xzKy8gL2c7CisJCWNyb2FrICJxdWVyeV9zYWZlIGZhaWxlZCBvbiBbJHNo b3J0X3NxbC4uLl06ICRyZXMtPntlcnJvcl9tZXNzYWdlfSI7CisJfQorCXJldHVybiAkcmVz LT57cHNxbG91dH07Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5X29uZXZh bCgkc3FsIFssICRtaXNzaW5nX29rIF0gKQorCitSdW4gYSBxdWVyeSB0aGF0IGlzIGV4cGVj dGVkIHRvIHJldHVybiBubyBtb3JlIHRoYW4gb25lIHR1cGxlIHdpdGggb25lIHZhbHVlOwor CitJZiBDPCRtaXNzaW5nX29rPiBpcyB0cnVlLCByZXR1cm4gdW5kZWYgaWYgdGhlIHF1ZXJ5 IHJldHVybnMgbm8gdHVwbGUuIE90aGVyd2lzZQorY3JvYWsgaWYgdGhlcmUgaXMgbm90IGV4 YWN0bHkgb25lIHR1cGxlLCBvciBvZiB0aGUgdHVwbGUgZG9lcyBub3QgaGF2ZQorZXhjdGx5 IG9uZSB2YWx1ZS4KKworSWYgbm9uZSBvZiB0aGVzZSBhcHBseSwgcmV0dXJuIHRoZSBzaW5n bGUgdmFsdWUgZnJvbSB0aGUgcXVlcnkuIEEgTlVMTCB2YWx1ZQord2lsbCByZXN1bHQgaW4g dW5kZWYsIHNvIGlmIEM8JG1pc3Npbmdfb2s+IGlzIHRydWUgeW91IHdvbid0IGJlIGFibGUg dG8KK2Rpc3Rpbmd1aXNoIGJldHdlZW4gYSBudWxsIHZhbHVlIGFuZCBhIG1pc3NpbmcgdHVw bGUuCisKK0Egbm9uIE5VTEwgdmFsdWUgaXMgcmV0dXJuZWQgYXMgdGhlIHN0cmluZyB2YWx1 ZSBvYnRhaW5lZCBmcm9tIEM8UFFnZXR2YWx1ZT4uCisKKz1jdXQKKworc3ViIHF1ZXJ5X29u ZXZhbAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHNxbCA9IHNoaWZ0OworCW15ICRt aXNzaW5nX29rID0gc2hpZnQ7ICMgZGVmYXVsdCBpcyBub3Qgb2sKKwlteSAkY29ubiA9ICRz ZWxmLT57Y29ubn07CisJbXkgJHJlc3VsdCA9IFBRZXhlYygkY29ubiwgJHNxbCk7CisJbXkg JHN0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpOworCXVubGVzcyAgKCRzdGF0dXMg PT0gUEdSRVNfVFVQTEVTX09LKQorCXsKKwkJUFFjbGVhcigkcmVzdWx0KSBpZiAkcmVzdWx0 OworCQljcm9hayBQUWVycm9yTWVzc2FnZSgkY29ubik7CisJfQorCW15ICRudHVwbGVzID0g UFFudHVwbGVzKCRyZXN1bHQpOworCXJldHVybiB1bmRlZiBpZiAoJG1pc3Npbmdfb2sgJiYg ISRudHVwbGVzKTsKKwlteSAkbmZpZWxkcyA9IFBRbmZpZWxkcygkcmVzdWx0KTsKKwljcm9h ayAiJG50dXBsZXMgdHVwbGVzICE9IDEgb3IgJG5maWVsZHMgZmllbGRzICE9IDEiCisJICBp ZiAkbnR1cGxlcyAhPSAxIHx8ICRuZmllbGRzICE9IDE7CisJbXkgJHZhbCA9IFBRZ2V0dmFs dWUoJHJlc3VsdCwgMCwgMCk7CisJaWYgKCR2YWwgZXEgIiIpCisJeworCQkkdmFsID0gdW5k ZWYgaWYgUFFnZXRpc251bGwoJHJlc3VsdCwgMCwgMCk7CisJfQorCVBRY2xlYXIoJHJlc3Vs dCk7CisJcmV0dXJuICR2YWw7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5 X3R1cGxlcygkc3FsLCAuLi4pCisKK1J1biB0aGUgc3FsIGNvbW1hbmRzIGFuZCByZXR1cm4g dGhlIG91dHB1dCBhcyBhIHNpbmdsZSBwaWVjZSBvZiB0ZXh0IGluIHRoZQorc2FtZSBmb3Jt YXQgYXMgQzxwc3FsIC1BIC10Pi4KKworRmllbGRzIHdpdGhpbiB0dXBsZXMgYXJlIHNlcGFy YXRlZCBieSBhICJ8IiwgdHVwbGVzIGFyZSBzcGVhcmF0ZWQgYnkgIlxuIgorCis9Y3V0CisK K3N1YiBxdWVyeV90dXBsZXMKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCSMgVXNlIHBpcGVs aW5lZCB2ZXJzaW9uIGZvciA0KyBxdWVyaWVzIHdoZXJlIHRoZSBvdmVyaGVhZCBpcyB3b3J0 aCBpdAorCXJldHVybiAkc2VsZi0+cXVlcnlfdHVwbGVzX3BpcGVsaW5lZChAXykgaWYgQF8g Pj0gNDsKKworCW15IEByZXN1bHRzOworCWZvcmVhY2ggbXkgJHNxbCAoQF8pCisJeworCQlt eSAkcmVzID0gJHNlbGYtPnF1ZXJ5KCRzcWwpOworCQljcm9hayAkcmVzLT57ZXJyb3JfbWVz c2FnZX0KKwkJICB1bmxlc3MgJHJlcy0+e3N0YXR1c30gPT0gUEdSRVNfVFVQTEVTX09LOwor CQkjIHF1ZXJ5KCkgYWxyZWFkeSBidWlsdCBwc3Fsb3V0IGluICJwc3FsIC1BIC10IiBmb3Jt LiAgU2tpcCBvbmx5IHdoZW4KKwkJIyB0aGVyZSBhcmUgbm8gcm93czsgYSByb3cgdGhhdCBy ZW5kZXJzIGFzIHRoZSBlbXB0eSBzdHJpbmcgaXMgc3RpbGwKKwkJIyBlbWl0dGVkIChhbiBl bXB0eSByZXN1bHQgd2FzIHByZXZpb3VzbHkgc2tpcHBlZCB3aXRoICItLSBlbXB0eSIKKwkJ IyBjb21tZW50ZWQgb3V0LCBhcyB0aGF0IGJyb2tlIGF0IGxlYXN0IG9uZSB0ZXN0KS4KKwkJ cHVzaChAcmVzdWx0cywgJHJlcy0+e3BzcWxvdXR9KSBpZiBAeyRyZXMtPntyb3dzfX07CisJ fQorCXJldHVybiBqb2luKCJcbiIsIEByZXN1bHRzKTsKK30KKworPXBvZAorCis9aXRlbSAk c2Vzc2lvbi0+cXVlcnlfdHVwbGVzX3BpcGVsaW5lZCgkc3FsLCAuLi4pCisKK1J1biBtdWx0 aXBsZSBTUUwgcXVlcmllcyB1c2luZyBwaXBlbGluZSBtb2RlIGZvciBlZmZpY2llbmN5LiBS ZXR1cm5zIG91dHB1dAoraW4gdGhlIHNhbWUgZm9ybWF0IGFzIEM8cXVlcnlfdHVwbGVzPiBi dXQgd2l0aCBvbmx5IG9uZSBuZXR3b3JrIHJvdW5kLXRyaXAKK2ZvciBhbGwgcXVlcmllcy4K KworPWN1dAorCitzdWIgcXVlcnlfdHVwbGVzX3BpcGVsaW5lZAoreworCW15ICRzZWxmID0g c2hpZnQ7CisJbXkgQHF1ZXJpZXMgPSBAXzsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07 CisJbXkgQHJlc3VsdHM7CisKKwkjIEVudGVyIHBpcGVsaW5lIG1vZGUKKwlQUWVudGVyUGlw ZWxpbmVNb2RlKCRjb25uKSBvciBjcm9hayAiRmFpbGVkIHRvIGVudGVyIHBpcGVsaW5lIG1v ZGUiOworCisJIyBTZW5kIGFsbCBxdWVyaWVzIHVzaW5nIFBRc2VuZFF1ZXJ5UGFyYW1zIChQ UXNlbmRRdWVyeSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlKQorCWZvciBteSAkc3Fs IChAcXVlcmllcykKKwl7CisJCVBRc2VuZFF1ZXJ5UGFyYW1zKCRjb25uLCAkc3FsLCAwLCB1 bmRlZiwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgMCkgb3IgZG8geworCQkJUFFleGl0UGlwZWxp bmVNb2RlKCRjb25uKTsKKwkJCWNyb2FrICJGYWlsZWQgdG8gc2VuZCBxdWVyeTogIiAuIFBR ZXJyb3JNZXNzYWdlKCRjb25uKTsKKwkJfTsKKwl9CisKKwkjIE1hcmsgZW5kIG9mIHBpcGVs aW5lCisJUFFwaXBlbGluZVN5bmMoJGNvbm4pIG9yIGRvIHsKKwkJUFFleGl0UGlwZWxpbmVN b2RlKCRjb25uKTsKKwkJY3JvYWsgIkZhaWxlZCB0byBzeW5jIHBpcGVsaW5lIjsKKwl9Owor CisJIyBDb2xsZWN0IHJlc3VsdHMgZm9yIGVhY2ggcXVlcnkKKwlmb3IgbXkgJGkgKDAgLi4g JCNxdWVyaWVzKQorCXsKKwkJbXkgJHJlc3VsdCA9IF9nZXRfcmVzdWx0KCRjb25uLCAkc2Vs Zi0+e3RpbWVvdXR9KTsKKwkJaWYgKCEkcmVzdWx0KQorCQl7CisJCQlQUWV4aXRQaXBlbGlu ZU1vZGUoJGNvbm4pOworCQkJY3JvYWsgIk5vIHJlc3VsdCBmb3IgcXVlcnkgJGkiOworCQl9 CisKKwkJbXkgJHN0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpOworCQlpZiAoJHN0 YXR1cyA9PSBQR1JFU19QSVBFTElORV9BQk9SVEVEKQorCQl7CisJCQlQUWNsZWFyKCRyZXN1 bHQpOworCQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKTsKKwkJCWNyb2FrICJQaXBlbGlu ZSBhYm9ydGVkIGF0IHF1ZXJ5ICRpIjsKKwkJfQorCisJCWlmICgkc3RhdHVzID09IFBHUkVT X1RVUExFU19PSykKKwkJeworCQkJbXkgJHJlcyA9IF9nZXRfcmVzdWx0X2RhdGEoJHJlc3Vs dCwgJGNvbm4pOworCQkJbXkgJHJvd3MgPSAkcmVzLT57cm93c307CisJCQlpZiAoQCRyb3dz KQorCQkJeworCQkJCW5vIHdhcm5pbmdzIHF3KHVuaW5pdGlhbGl6ZWQpOworCQkJCW15IEB0 dXBsZXMgPSBtYXAgeyBqb2luKCd8JywgQCRfKTsgfSBAJHJvd3M7CisJCQkJcHVzaChAcmVz dWx0cywgam9pbigiXG4iLCBAdHVwbGVzKSk7CisJCQl9CisJCX0KKwkJZWxzaWYgKCRzdGF0 dXMgIT0gUEdSRVNfQ09NTUFORF9PSykKKwkJeworCQkJbXkgJGVyciA9IFBRZXJyb3JNZXNz YWdlKCRjb25uKTsKKwkJCVBRY2xlYXIoJHJlc3VsdCk7CisJCQlQUWV4aXRQaXBlbGluZU1v ZGUoJGNvbm4pOworCQkJY3JvYWsgIlF1ZXJ5ICRpIGZhaWxlZDogJGVyciI7CisJCX0KKwkJ UFFjbGVhcigkcmVzdWx0KTsKKworCQkjIENvbnN1bWUgdGhlIE5VTEwgcmVzdWx0IHRoYXQg bWFya3MgZW5kIG9mIHRoaXMgcXVlcnkncyByZXN1bHRzCisJCXdoaWxlIChteSAkZXh0cmEg PSBQUWdldFJlc3VsdCgkY29ubikpCisJCXsKKwkJCVBRY2xlYXIoJGV4dHJhKTsKKwkJfQor CX0KKworCSMgQ29uc3VtZSB0aGUgcGlwZWxpbmUgc3luYyByZXN1bHQKKwlteSAkc3luY19y ZXN1bHQgPSBfZ2V0X3Jlc3VsdCgkY29ubiwgJHNlbGYtPnt0aW1lb3V0fSk7CisJaWYgKCRz eW5jX3Jlc3VsdCkKKwl7CisJCW15ICRzdGF0dXMgPSBQUXJlc3VsdFN0YXR1cygkc3luY19y ZXN1bHQpOworCQlQUWNsZWFyKCRzeW5jX3Jlc3VsdCk7CisJCWlmICgkc3RhdHVzICE9IFBH UkVTX1BJUEVMSU5FX1NZTkMpCisJCXsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7 CisJCQljcm9hayAiRXhwZWN0ZWQgUEdSRVNfUElQRUxJTkVfU1lOQywgZ290ICRzdGF0dXMi OworCQl9CisJfQorCisJIyBFeGl0IHBpcGVsaW5lIG1vZGUKKwlQUWV4aXRQaXBlbGluZU1v ZGUoJGNvbm4pIG9yIGNyb2FrICJGYWlsZWQgdG8gZXhpdCBwaXBlbGluZSBtb2RlIjsKKwor CXJldHVybiBqb2luKCJcbiIsIEByZXN1bHRzKTsKK30KKworCitzdWIgc2V0bm9uYmxvY2tp bmcKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICR2YWwgPSBzaGlmdDsKKwlteSAkcmVz ID0gUFFzZXRub25ibG9ja2luZygkc2VsZi0+e2Nvbm59LCAkdmFsKTsKKwljcm9hayAicHJv YmxlbSBzZXR0aW5nIG5vbi1ibG9ja2luZyIKKwkgIGlmICRyZXM7CisJcmV0dXJuOworfQor CitzdWIgZW50ZXJQaXBlbGluZU1vZGUKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVy biBQUWVudGVyUGlwZWxpbmVNb2RlKCRzZWxmLT57Y29ubn0pOworfQorCitzdWIgcGlwZWxp bmVTeW5jCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFwaXBlbGluZVN5bmMo JHNlbGYtPntjb25ufSk7Cit9CisKKworc3ViIGRvX3BpcGVsaW5lCit7CisJbXkgJHNlbGYg PSBzaGlmdDsKKwlteSAkc3RhdGVtZW50ID0gc2hpZnQ7CisJbXkgQGFyZ3MgPSBAXzsKKwlt eSAkbmFyZ3MgPSBzY2FsYXIoQGFyZ3MpOworCW15ICRyZXMgPSBQUXNlbmRRdWVyeVBhcmFt cygkc2VsZi0+e2Nvbm59LCAkc3RhdGVtZW50LCAkbmFyZ3MsIHVuZGVmLCBcQGFyZ3MsIHVu ZGVmICwgdW5kZWYsIDApOworCXJldHVybiAkcmVzOworfQorCis9cG9kCisKKz1pdGVtICRz ZXNzaW9uLT5nZXRfbm90aWZpY2F0aW9uKCkKKworQ2hlY2sgZm9yIGEgcGVuZGluZyBub3Rp ZmljYXRpb24gYW5kIHJldHVybiBpdCBhcyBhIGhhc2hyZWYgd2l0aCBrZXlzCitDPGNoYW5u ZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+LiBSZXR1cm5zIHVuZGVmIGlmIG5vIG5vdGlm aWNhdGlvbiBpcworYXZhaWxhYmxlLgorCitBdXRvbWF0aWNhbGx5IGNvbnN1bWVzIGFueSBw ZW5kaW5nIGlucHV0IGJlZm9yZSBjaGVja2luZyBmb3Igbm90aWZpY2F0aW9ucy4KKworPWN1 dAorCitzdWIgZ2V0X25vdGlmaWNhdGlvbgoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkg JGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCisJIyBDb25zdW1lIGFueSBwZW5kaW5nIGlucHV0 CisJUFFjb25zdW1lSW5wdXQoJGNvbm4pOworCisJbXkgJG5vdGlmeSA9IFBRbm90aWZpZXMo JGNvbm4pOworCXJldHVybiB1bmRlZiB1bmxlc3MgJG5vdGlmeTsKKworCW15ICRyZXN1bHQg PSB7CisJCWNoYW5uZWwgPT4gUFFub3RpZnlfY2hhbm5lbCgkbm90aWZ5KSwKKwkJcGlkICAg ICA9PiBQUW5vdGlmeV9iZV9waWQoJG5vdGlmeSksCisJCXBheWxvYWQgPT4gUFFub3RpZnlf cGF5bG9hZCgkbm90aWZ5KSwKKwl9OworCisJUFFub3RpZnlfZnJlZSgkbm90aWZ5KTsKKwor CXJldHVybiAkcmVzdWx0OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5nZXRfYWxs X25vdGlmaWNhdGlvbnMoKQorCitDb25zdW1lIGlucHV0IGFuZCByZXR1cm4gYWxsIHBlbmRp bmcgbm90aWZpY2F0aW9ucyBhcyBhbiBhcnJheXJlZiBvZiBoYXNocmVmcy4KK0VhY2ggaGFz aHJlZiBoYXMga2V5cyBDPGNoYW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+LgorCis9 Y3V0CisKK3N1YiBnZXRfYWxsX25vdGlmaWNhdGlvbnMKK3sKKwlteSAkc2VsZiA9IHNoaWZ0 OworCW15IEBub3RpZmljYXRpb25zOworCisJd2hpbGUgKG15ICRub3RpZnkgPSAkc2VsZi0+ Z2V0X25vdGlmaWNhdGlvbigpKQorCXsKKwkJcHVzaCBAbm90aWZpY2F0aW9ucywgJG5vdGlm eTsKKwl9CisKKwlyZXR1cm4gXEBub3RpZmljYXRpb25zOworfQorCis9cG9kCisKKz1iYWNr CisKKz1jdXQKKworCisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKaW5kZXggMGZkMzZjOWU1NzAuLjM3ZDhh YzJhMzZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL21lc29uLmJ1aWxkCisrKyBiL3Ny Yy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKQEAgLTQsNiArNCwxMCBAQAogCiBpbnN0YWxsX2Rh dGEoCiAgICdQb3N0Z3JlU1FML1ZlcnNpb24ucG0nLAorICAnUG9zdGdyZVNRTC9GaW5kTGli LnBtJywKKyAgJ1Bvc3RncmVTUUwvUHFGRkkucG0nLAorICAnUG9zdGdyZVNRTC9QcUNvbnN0 YW50cy5wbScsCisgICdQb3N0Z3JlU1FML1BHVHlwZXMucG0nLAogICBpbnN0YWxsX2Rpcjog ZGlyX3BneHMgLyAnc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FMJykKIAogaW5zdGFsbF9kYXRh KApAQCAtMTUsNCArMTksNSBAQCBpbnN0YWxsX2RhdGEoCiAgICdQb3N0Z3JlU1FML1Rlc3Qv QmFja2dyb3VuZFBzcWwucG0nLAogICAnUG9zdGdyZVNRTC9UZXN0L0FkanVzdER1bXAucG0n LAogICAnUG9zdGdyZVNRTC9UZXN0L0FkanVzdFVwZ3JhZGUucG0nLAorICAnUG9zdGdyZVNR TC9UZXN0L1Nlc3Npb24ucG0nLAogICBpbnN0YWxsX2RpcjogZGlyX3BneHMgLyAnc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QnKQotLSAKMi40My4wCgo= --------------iATMJHJEeQMb5QczqNM9768Z Content-Type: text/x-patch; charset=UTF-8; name="v16-0002-Use-PostgreSQL-Test-Session-within-the-TAP-test-.patch" Content-Disposition: attachment; filename*0="v16-0002-Use-PostgreSQL-Test-Session-within-the-TAP-test-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4MjA4MjcwNTI2NjY0NDA0ZDBkZWJkM2IwYmUzNDRjNjVjZTgxZGM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAzIEp1biAyMDI2IDA5OjUwOjE3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMi81XSBVc2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiB3aXRoaW4gdGhl IFRBUCB0ZXN0CiBmcmFtZXdvcmsKCk1ha2UgdGhlIHRlc3QgZnJhbWV3b3JrIGl0c2VsZiBi ZW5lZml0IGZyb20gaW4tcHJvY2VzcyBsaWJwcSBhY2Nlc3M6CgogICogUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlcjo6c2FmZV9wc3FsKCkgcnVucyBhIHNpbmdsZSwgcGFyYW1ldGVybGVz cwogICAgc3RhdGVtZW50IHRocm91Z2ggYSBTZXNzaW9uIGluc3RlYWQgb2Ygc3Bhd25pbmcg cHNxbCwgYW5kIHJlcG9ydHMgdGhlCiAgICBsaWJwcSBjb25uZWN0aW9uIGVycm9yIGlmIHRo ZSBzZXNzaW9uIGNhbm5vdCBiZSBlc3RhYmxpc2hlZC4gIEl0IGZhbGxzCiAgICBiYWNrIHRv IHBzcWwgZm9yIG11bHRpLXN0YXRlbWVudCBvciBwYXJhbWV0ZXJpemVkIGNhbGxzLCBhbmQg YWxzbyB3aGVuCiAgICBQR09QVElPTlMgaXMgc2V0OiBQR09QVElPTlMgaW5qZWN0cyBjb25u ZWN0aW9uLXRpbWUgR1VDcyB0aGUgY2FsbGVyCiAgICByZWxpZXMgb24sIGFuZCBhbiBGRkkt bG9hZGVkIGxpYnBxIGRvZXMgbm90IHJlbGlhYmx5IHNlZSBhIFBHT1BUSU9OUwogICAgc2V0 IGluICVFTlYgYXQgcnVuIHRpbWUgb24gV2luZG93cyAoc2VwYXJhdGUgQyBydW50aW1lKSwg d2hlcmVhcyBhCiAgICBzcGF3bmVkIHBzcWwgaW5oZXJpdHMgaXQuCiAgKiBwb2xsX3F1ZXJ5 X3VudGlsKCkgcG9sbHMgdGhyb3VnaCBhIFNlc3Npb24uCiAgKiBhZGQgcG9sbF91bnRpbF9j b25uZWN0aW9uKCkgdG8gd2FpdCBmb3IgdGhlIHNlcnZlciB0byBhY2NlcHQKICAgIGNvbm5l Y3Rpb25zLgoKQWxzbyBoYXJkZW4gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHMgYWdhaW5zdCBl cnJvcnMgcmFpc2VkIGR1cmluZyBnbG9iYWwKZGVzdHJ1Y3Rpb24uICBTdWNoIGVycm9ycyBo YXBwZW4gYWZ0ZXIgdGhlIHRlc3QgYm9keSBoYXMgZmluaXNoZWQgKGZvcgpleGFtcGxlIEZG STo6UGxhdHlwdXMgYmluZGluZ3Mgb3IgY2FsbGJhY2sgY2xvc3VyZXMgYmVpbmcgZnJlZWQg aW4gYW4KdW5wcmVkaWN0YWJsZSBvcmRlciBhcyB0aGUgcHJvY2VzcyBleGl0cyk7IHJlcG9y dGluZyB0aGVtIGJ5IGNhbGxpbmcKZG9uZV90ZXN0aW5nKCkgYSBzZWNvbmQgdGltZSB3b3Vs ZCBzcHVyaW91c2x5IGZhaWwgYW4gb3RoZXJ3aXNlLXBhc3NpbmcKdGVzdCwgc28gdGhleSBh cmUgbm93IGxvZ2dlZCBhbmQgaWdub3JlZC4KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtIHwgMTQ5ICsrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbSAgIHwgIDEzICsrCiAyIGZpbGVz IGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQppbmRleCA1MjlmNDllZmVlMS4u MDk3OWU0NmYyMjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0 L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rl ci5wbQpAQCAtMTEyLDYgKzExMiw3IEBAIHVzZSBTb2NrZXQ7CiB1c2UgVGVzdDo6TW9yZTsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlscyAgICAgICAgICAoKTsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpCYWNrZ3JvdW5kUHNxbCAoKTsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uOwogdXNlIFRleHQ6OlBhcnNlV29yZHMgICAgICAgICAgICAgICAgIHF3KHNoZWxs d29yZHMpOwogdXNlIFRpbWU6OkhpUmVzICAgICAgICAgICAgICAgICAgICAgIHF3KHVzbGVl cCk7CiB1c2UgU2NhbGFyOjpVdGlsICAgICAgICAgICAgICAgICAgICAgcXcoYmxlc3NlZCk7 CkBAIC0yMDcwLDIwICsyMDcxLDY2IEBAIHN1YiBzYWZlX3BzcWwKIAogCW15ICgkc3Rkb3V0 LCAkc3RkZXJyKTsKIAotCW15ICRyZXQgPSAkc2VsZi0+cHNxbCgKLQkJJGRibmFtZSwgJHNx bCwKLQkJJXBhcmFtcywKLQkJc3Rkb3V0ID0+IFwkc3Rkb3V0LAotCQlzdGRlcnIgPT4gXCRz dGRlcnIsCi0JCW9uX2Vycm9yX2RpZSA9PiAxLAotCQlvbl9lcnJvcl9zdG9wID0+IDEpOwot Ci0JIyBwc3FsIGNhbiBlbWl0IHN0ZGVyciBmcm9tIE5PVElDRXMgZXRjCi0JaWYgKCRzdGRl cnIgbmUgIiIpCisJIyBGb3Igbm93IG9ubHkgdXNlIGEgU2Vzc2lvbiBvYmplY3QgZm9yIHNp bmdsZSBzdGF0ZW1lbnQgc3FsIHdpdGhvdXQgYW55CisJIyBzcGVjaWFsIHBhcmFtcy4gIFRo ZSAiJHNxbCAhfiAvXFxiaW5kfDsuKlx3L3MiIHRlc3QgY29uc2VydmF0aXZlbHkgaGFuZHMK KwkjIGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIG9yIGEg cHNxbCBiYWNrc2xhc2ggY29tbWFuZAorCSMgdG8gcHNxbDsgYSBmYWxzZSBtYXRjaCAoZS5n LiBhICI7IiBpbnNpZGUgYSBzdHJpbmcgbGl0ZXJhbCkganVzdCB0YWtlcworCSMgdGhlIHNs b3dlciBwc3FsIHBhdGgsIHdoaWNoIGlzIGhhcm1sZXNzLgorCSMKKwkjIEFsc28gZmFsbCBi YWNrIHRvIHBzcWwgd2hlbiBQR09QVElPTlMgaXMgc2V0OiBpdCBpbmplY3RzIGNvbm5lY3Rp b24tdGltZQorCSMgR1VDcyB0aGF0IHRoZSBjYWxsZXIgaXMgcmVseWluZyBvbiAoZS5nLiBj b21wdXRlX3F1ZXJ5X2lkIGZvcgorCSMgYXV0b19leHBsYWluKSwgYW5kIGEgbGlicHEgbG9h ZGVkIHZpYSBGRkkgZG9lcyBub3QgcmVsaWFibHkgc2VlIGEKKwkjIFBHT1BUSU9OUyB0aGF0 IHdhcyBzZXQgaW4gJUVOViBhdCBydW4gdGltZSBvbiBXaW5kb3dzIChzZXBhcmF0ZSBDIHJ1 bnRpbWUKKwkjIGZyb20gcGVybCksIHdoZXJlYXMgYSBzcGF3bmVkIHBzcWwgaW5oZXJpdHMg aXQuCisJaWYgKCAgICRzcWwgPX4gL1x3LworCQkmJiAkc3FsICF+IC9cXGJpbmR8Oy4qXHcv cworCQkmJiAhc2NhbGFyKGtleXMoJXBhcmFtcykpCisJCSYmICEkRU5We1BHT1BUSU9OU30p CiAJewotCQlwcmludCAiIyMjIyBCZWdpbiBzdGFuZGFyZCBlcnJvclxuIjsKLQkJcHJpbnQg JHN0ZGVycjsKLQkJcHJpbnQgIlxuIyMjIyBFbmQgc3RhbmRhcmQgZXJyb3JcbiI7CisKKwkJ bXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+ICRz ZWxmLAorCQkJCQkJCQkJCQkJCSBkYm5hbWUgPT4gJGRibmFtZSwKKwkJCQkJCQkJCQkJCQkg bm9mYWlsID0+IDEpOworCQlkZWZpbmVkICRzZXNzaW9uCisJCSAgb3IgZGllICJjb25uZWN0 aW9uIGZhaWx1cmU6ICIKKwkJICAuICgkUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjo6Y29u bmVjdF9lcnJvciAvLyAnJykKKwkJICAuICJ3aGlsZSBydW5uaW5nICckc3FsJyI7CisJCW15 ICRyZXMgPSAkc2Vzc2lvbi0+cXVlcnkoJHNxbCk7CisJCW15ICRzdGF0dXMgPSAkcmVzLT57 c3RhdHVzfTsKKwkJJHN0ZG91dCA9ICRyZXMtPntwc3Fsb3V0fSAvLyAiIjsKKwkJJHN0ZGVy ciA9ICRyZXMtPntlcnJvcl9tZXNzYWdlfSAvLyAiIjsKKwkJZGllICJlcnJvcjogc3RhdHVz ID0gJHN0YXR1cyBzdGRlcnI6ICckc3RkZXJyJ1xud2hpbGUgcnVubmluZyAnJHNxbCciCisJ CSAgaWYgKCRzdGF0dXMgIT0gMSAmJiAkc3RhdHVzICE9IDIpOyAjIENPTU1BTkRfT0sgb3Ig Q09NTUFORF9UVVBMRVMKKworCQkjIExpa2UgdGhlIHBzcWwgcGF0aCBiZWxvdywgc3VyZmFj ZSBhbnkgTk9USUNFL1dBUk5JTkcgb3V0cHV0IHNvIGl0CisJCSMgc2hvd3MgdXAgaW4gdGhl IHRlc3QgbG9nLgorCQlteSAkbm90aWNlcyA9ICRzZXNzaW9uLT5nZXRfbm90aWNlc19zdHIo KTsKKwkJaWYgKCRub3RpY2VzIG5lICIiKQorCQl7CisJCQlwcmludCAiIyMjIyBCZWdpbiBz dGFuZGFyZCBlcnJvclxuIjsKKwkJCXByaW50ICRub3RpY2VzOworCQkJcHJpbnQgIlxuIyMj IyBFbmQgc3RhbmRhcmQgZXJyb3JcbiI7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJIyBkaWFn ICJzYWZlX3BzcWwgY2FsbCBoYXMgcGFyYW1zIG9yIG11bHRpcGxlIHN0YXRlbWVudHMiOwor CisJCW15ICRyZXQgPSAkc2VsZi0+cHNxbCgKKwkJCSRkYm5hbWUsICRzcWwsCisJCQklcGFy YW1zLAorCQkJc3Rkb3V0ID0+IFwkc3Rkb3V0LAorCQkJc3RkZXJyID0+IFwkc3RkZXJyLAor CQkJb25fZXJyb3JfZGllID0+IDEsCisJCQlvbl9lcnJvcl9zdG9wID0+IDEpOworCisJCSMg cHNxbCBjYW4gZW1pdCBzdGRlcnIgZnJvbSBOT1RJQ0VzIGV0YworCQlpZiAoJHN0ZGVyciBu ZSAiIikKKwkJeworCQkJcHJpbnQgIiMjIyMgQmVnaW4gc3RhbmRhcmQgZXJyb3JcbiI7CisJ CQlwcmludCAkc3RkZXJyOworCQkJcHJpbnQgIlxuIyMjIyBFbmQgc3RhbmRhcmQgZXJyb3Jc biI7CisJCX0KIAl9CiAKIAlyZXR1cm4gJHN0ZG91dDsKQEAgLTIxODcsNiArMjIzNCw5IEBA IHN1YiBwc3FsCiAKIAlsb2NhbCAlRU5WID0gJHNlbGYtPl9nZXRfZW52KCk7CiAKKwkjIHVu Y29tbWVudCB0byBnZXQgYSBjb3VudCBvZiBjYWxscyB0byBwc3FsCisJIyBub3RlKCJjb3Vu dGluZyBwc3FsIik7CisKIAlteSAkc3Rkb3V0ID0gJHBhcmFtc3tzdGRvdXR9OwogCW15ICRz dGRlcnIgPSAkcGFyYW1ze3N0ZGVycn07CiAJbXkgJHJlcGxpY2F0aW9uID0gJHBhcmFtc3ty ZXBsaWNhdGlvbn07CkBAIC0yNzYwLDMyICsyODEwLDMzIEBAIHN1YiBwb2xsX3F1ZXJ5X3Vu dGlsCiB7CiAJbXkgKCRzZWxmLCAkZGJuYW1lLCAkcXVlcnksICRleHBlY3RlZCkgPSBAXzsK IAotCWxvY2FsICVFTlYgPSAkc2VsZi0+X2dldF9lbnYoKTsKLQogCSRleHBlY3RlZCA9ICd0 JyB1bmxlc3MgZGVmaW5lZCgkZXhwZWN0ZWQpOyAgICAjIGRlZmF1bHQgdmFsdWUKIAotCW15 ICRjbWQgPSBbCi0JCSRzZWxmLT5pbnN0YWxsZWRfY29tbWFuZCgncHNxbCcpLCAnLS1uby1w c3FscmMnLAotCQknLS1uby1hbGlnbicsICctLXR1cGxlcy1vbmx5JywKLQkJJy0tZGJuYW1l JyA9PiAkc2VsZi0+Y29ubnN0cigkZGJuYW1lKQotCV07Ci0JbXkgKCRzdGRvdXQsICRzdGRl cnIpOwogCW15ICRtYXhfYXR0ZW1wdHMgPSAxMCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6dGltZW91dF9kZWZhdWx0OwogCW15ICRhdHRlbXB0cyA9IDA7CiAKKwlteSAkc2Vzc2lv bjsKKwlteSAkcXVlcnlfdmFsdWUgPSAnJzsKKwogCXdoaWxlICgkYXR0ZW1wdHMgPCAkbWF4 X2F0dGVtcHRzKQogCXsKLQkJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gJGNtZCwKLQkJ ICAnPCcgPT4gXCRxdWVyeSwKLQkJICAnPicgPT4gXCRzdGRvdXQsCi0JCSAgJzI+JyA9PiBc JHN0ZGVycjsKKwkJIyAoUmUpZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uIGlmIHdlIGRvbid0 IGhhdmUgYSBsaXZlIG9uZS4gIExpa2UgdGhlCisJCSMgcHNxbC1wZXItYXR0ZW1wdCBpbXBs ZW1lbnRhdGlvbiB0aGlzIHJlcGxhY2VkLCB0aGlzIHRvbGVyYXRlcyBhCisJCSMgc2VydmVy IHRoYXQgaXMgbm90IHlldCBhY2NlcHRpbmcgY29ubmVjdGlvbnMsIGFuZCBvbmUgd2hvc2UK KwkJIyBjb25uZWN0aW9uIGRyb3BzIG1pZC1wb2xsIChlLmcuIGFjcm9zcyBhIHJlc3RhcnQg b3IgYQorCQkjIHJlY292ZXJ5LWNvbmZsaWN0IGJhY2tlbmQgdGVybWluYXRpb24pLgorCQkk c2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRzZWxm LAorCQkJCQkJCQkJCQkJICBkYm5hbWUgPT4gJGRibmFtZSwKKwkJCQkJCQkJCQkJCSAgbm9m YWlsID0+IDEpCisJCSAgdW5sZXNzIGRlZmluZWQgJHNlc3Npb24gJiYgJHNlc3Npb24tPmNv bm5lY3RlZDsKIAotCQljaG9tcCgkc3Rkb3V0KTsKLQkJY2hvbXAoJHN0ZGVycik7Ci0KLQkJ aWYgKCRzdGRvdXQgZXEgJGV4cGVjdGVkICYmICRzdGRlcnIgZXEgJycpCisJCWlmIChkZWZp bmVkICRzZXNzaW9uKQogCQl7Ci0JCQlyZXR1cm4gMTsKKwkJCW15ICRyZXN1bHQgPSAkc2Vz c2lvbi0+cXVlcnkoJHF1ZXJ5KTsKKwkJCSRxdWVyeV92YWx1ZSA9ICgkcmVzdWx0LT57cHNx bG91dH0gLy8gIiIpOworCQkJcmV0dXJuIDEKKwkJCSAgaWYgIWV4aXN0cyAkcmVzdWx0LT57 ZXJyb3JfbWVzc2FnZX0KKwkJCSAgJiYgJHF1ZXJ5X3ZhbHVlIGVxICRleHBlY3RlZDsKIAkJ fQogCiAJCSMgV2FpdCAwLjEgc2Vjb25kIGJlZm9yZSByZXRyeWluZy4KQEAgLTI4MDEsOSAr Mjg1Miw0MSBAQCAkcXVlcnkKIGV4cGVjdGluZyB0aGlzIG91dHB1dDoKICRleHBlY3RlZAog bGFzdCBhY3R1YWwgcXVlcnkgb3V0cHV0OgotJHN0ZG91dAotd2l0aCBzdGRlcnI6Ci0kc3Rk ZXJyKTsKKyRxdWVyeV92YWx1ZQorKTsKKwlyZXR1cm4gMDsKK30KKworPXBvZAorCis9aXRl bSAkbm9kZS0+cG9sbF91bnRpbF9jb25uZWN0aW9uKCRkYm5hbWUpCisKK1RyeSB0byBjb25u ZWN0IHJlcGVhdGVkbHksIHVudGlsIGl0IHdlIHN1Y2NlZWQuCitUaW1lcyBvdXQgYWZ0ZXIg JFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQgc2Vjb25kcy4KK1Jl dHVybnMgMSBpZiBzdWNjZXNzZnVsLCAwIGlmIHRpbWVkIG91dC4KKworPWN1dAorCitzdWIg cG9sbF91bnRpbF9jb25uZWN0aW9uCit7CisJbXkgKCRzZWxmLCAkZGJuYW1lKSA9IEBfOwor CisJbXkgJG1heF9hdHRlbXB0cyA9IDEwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0 aW1lb3V0X2RlZmF1bHQ7CisJbXkgJGF0dGVtcHRzID0gMDsKKworCXdoaWxlICgkYXR0ZW1w dHMgPCAkbWF4X2F0dGVtcHRzKQorCXsKKwkJbXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkc2VsZiwKKwkJCQkJCQkJCQkJCQkgZGJuYW1l ID0+ICRkYm5hbWUsCisJCQkJCQkJCQkJCQkJIG5vZmFpbCA9PiAxKTsKKwkJcmV0dXJuIDEg aWYgJHNlc3Npb247CisKKwkJIyBXYWl0IDAuMSBzZWNvbmQgYmVmb3JlIHJldHJ5aW5nLgor CQl1c2xlZXAoMTAwXzAwMCk7CisKKwkJJGF0dGVtcHRzKys7CisJfQorCiAJcmV0dXJuIDA7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxz LnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0KaW5kZXggZDNl NmFiZjdhNjguLmMwOTFjZTAzMjZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3Rn cmVTUUwvVGVzdC9VdGlscy5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVz dC9VdGlscy5wbQpAQCAtMjYyLDYgKzI2MiwxOSBAQCBJTklUCiAJCSMgSWdub3JlIGRpZXMg aW5zaWRlIGV2YWxzCiAJCXJldHVybiBpZiAkXlMgPT0gMTsKIAorCQkjIERpZXMgZHVyaW5n IGdsb2JhbCBkZXN0cnVjdGlvbiBoYXBwZW4gYWZ0ZXIgdGhlIHRlc3QgYm9keSBoYXMKKwkJ IyBmaW5pc2hlZCAoZG9uZV90ZXN0aW5nKCkgaGFzIGFscmVhZHkgcnVuKS4gIFRoZXkgYXJl IHR5cGljYWxseQorCQkjIGhhcm1sZXNzIHRlYXJkb3duLW9yZGVyaW5nIGFydGlmYWN0cyAt LSBmb3IgZXhhbXBsZSBGRkk6OlBsYXR5cHVzCisJCSMgYmluZGluZ3Mgb3IgY2FsbGJhY2sg Y2xvc3VyZXMgYmVpbmcgZnJlZWQgaW4gYW4gdW5wcmVkaWN0YWJsZSBvcmRlcgorCQkjIHdo aWxlIHRoZSBwcm9jZXNzIGV4aXRzLiAgUmVwb3J0aW5nIHRoZW0gYnkgY2FsbGluZyBkb25l X3Rlc3RpbmcoKQorCQkjIGFnYWluIHdvdWxkIHNwdXJpb3VzbHkgZmFpbCBhbiBvdGhlcndp c2UtcGFzc2luZyB0ZXN0LCBzbyBqdXN0IGxvZworCQkjIHRoZW0gYW5kIHJldHVybi4KKwkJ aWYgKCR7XkdMT0JBTF9QSEFTRX0gZXEgJ0RFU1RSVUNUJykKKwkJeworCQkJZGlhZygiZGll IGR1cmluZyBnbG9iYWwgZGVzdHJ1Y3Rpb24gKGlnbm9yZWQpOiAkX1swXSIpOworCQkJcmV0 dXJuOworCQl9CisKIAkJZGlhZygiZGllOiAkX1swXSIpOwogCQkjIEFsc28gY2FsbCBkb25l X3Rlc3RpbmcoKSB0byBhdm9pZCB0aGUgY29uZnVzaW5nICJubyBwbGFuIHdhcyBkZWNsYXJl ZCIKIAkJIyBtZXNzYWdlIGluIFRBUCBvdXRwdXQgd2hlbiBhIHRlc3QgZGllcy4KLS0gCjIu NDMuMAoK --------------iATMJHJEeQMb5QczqNM9768Z Content-Type: text/x-patch; charset=UTF-8; name="v16-0003-Convert-TAP-tests-to-PostgreSQL-Test-Session.patch" Content-Disposition: attachment; filename*0="v16-0003-Convert-TAP-tests-to-PostgreSQL-Test-Session.patch" Content-Transfer-Encoding: base64 RnJvbSBlYjc5ZDg3OGI3YTc0YjQ0MWEyOGQ2MTRhZDQ1ZWE1MzJlNTMyZWQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAzIEp1biAyMDI2IDA5OjUwOjE3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMy81XSBDb252ZXJ0IFRBUCB0ZXN0cyB0byBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uCgpDb252ZXJ0IHRlc3RzIHRoYXQgZHJvdmUgYSBsb25nLWxpdmVkIGJhY2tncm91 bmQgcHNxbCBwcm9jZXNzIChvcgpyZXBlYXRlZGx5IHNwYXduZWQgcHNxbCkgdG8gdXNlIHRo ZSBsaWJwcSBTZXNzaW9uIG9iamVjdCBpbnN0ZWFkLiAgVGhpcwpjb3ZlcnMgY29uY3VycmVu dC1zZXNzaW9uIGFuZCBhc3luY2hyb25vdXMtcXVlcnkgdGVzdHMgYWNyb3NzIGNvbnRyaWIs CnNyYy9iaW4gYW5kIHNyYy90ZXN0OiBhbWNoZWNrLCBibG9vbSwgcGdfdmlzaWJpbGl0eSwg dGVzdF9kZWNvZGluZywKcGdfYW1jaGVjaywgcGdfdXBncmFkZSwgYXV0aGVudGljYXRpb24s IG9hdXRoX3ZhbGlkYXRvciwgdGVzdF9haW8sCnRlc3RfY2hlY2tzdW1zLCB0ZXN0X21pc2Ms IHRlc3Rfc2xydSwgeGlkX3dyYXBhcm91bmQsIHBvc3RtYXN0ZXIsCnJlY292ZXJ5IGFuZCBz dWJzY3JpcHRpb24uCgpXaGVyZSBhIHRlc3QgbXVzdCBsb2FkIGxpYnBxIGZyb20gYSBkaWZm ZXJlbnQgaW5zdGFsbGF0aW9uIHRoYW4gdGhlIG9uZQppdCBjb25uZWN0cyB0byAocGdfdXBn cmFkZSdzIGNyb3NzLXZlcnNpb24gd29ya2xvYWQpLCBpdCBwYXNzZXMgdGhhdApub2RlIHNv IFNlc3Npb24gbG9jYXRlcyB0aGUgbGlicmFyeSBjb3JyZWN0bHkgb24gYWxsIHBsYXRmb3Jt cy4KLS0tCiBjb250cmliL2FtY2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBhbS5wbCAgICAgICAg fCAgMzYgKy0KIGNvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMucGwgICAgICAgICAgICAgICAg ICB8ICAgNyArLQogY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwgICAgICAgICAg ICAgIHwgIDY0ICsrLQogY29udHJpYi9ibG9vbS90LzAwMV93YWwucGwgICAgICAgICAgICAg ICAgICAgIHwgIDQ0ICstCiAuLi4vdC8wMDFfY29uY3VycmVudF90cmFuc2FjdGlvbi5wbCAg ICAgICAgICAgfCAgIDkgKy0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy90LzAwMV9yZXBsX3N0 YXRzLnBsICAgICB8ICAgOSArLQogc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3ZlcmlmeV9o ZWFwYW0ucGwgICAgIHwgIDk3ICsrKy0tCiAuLi4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhh Y3RfY29udmVyc2lvbi5wbCAgfCAgMzcgKy0KIHNyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3Qv MDAxX3Bhc3N3b3JkLnBsICAgICB8ICAzNSArLQogc3JjL3Rlc3QvYXV0aGVudGljYXRpb24v dC8wMDdfcHJlX2F1dGgucGwgICAgIHwgIDM1ICstCiAuLi4vbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvdC8wMDFfc2VydmVyLnBsICAgfCAgMjkgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9haW8vdC8wMDFfYWlvLnBsICAgICAgICB8IDE2OCArKysrLS0tLQogLi4uL21vZHVsZXMv dGVzdF9haW8vdC8wMDRfcmVhZF9zdHJlYW0ucGwgICAgIHwgIDg1ICsrLS0KIC4uLi9tb2R1 bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDAyX3Jlc3RhcnRzLnBsICB8ICAgNyArLQogLi4uL3Rl c3RfY2hlY2tzdW1zL3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwgIHwgIDEzICstCiAuLi4v bW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwNF9vZmZsaW5lLnBsICAgfCAgIDcgKy0KIHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1X3RpbWVvdXRzLnBsICB8ICA0NSArLQog Li4uL21vZHVsZXMvdGVzdF9taXNjL3QvMDA3X2NhdGNhY2hlX2ludmFsLnBsIHwgIDI1ICst CiAuLi4vdC8wMTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbCAgICAgICAgfCA0MDYg KysrKysrLS0tLS0tLS0tLS0tCiAuLi4vbW9kdWxlcy90ZXN0X21pc2MvdC8wMTFfbG9ja19z dGF0cy5wbCAgICAgfCAgOTYgKystLS0KIC4uLi90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpf bXVsdGlzZXNzaW9uLnBsICB8ICAyNiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUv dC8wMDFfbXVsdGl4YWN0LnBsIHwgIDE3ICstCiAuLi4veGlkX3dyYXBhcm91bmQvdC8wMDFf ZW1lcmdlbmN5X3ZhY3V1bS5wbCAgfCAgMjAgKy0KIC4uLi9tb2R1bGVzL3hpZF93cmFwYXJv dW5kL3QvMDAyX2xpbWl0cy5wbCAgICB8ICAyNSArLQogLi4uL3hpZF93cmFwYXJvdW5kL3Qv MDA0X25vdGlmeV9mcmVlemUucGwgICAgIHwgIDI3ICstCiAuLi4vcG9zdG1hc3Rlci90LzAw Ml9jb25uZWN0aW9uX2xpbWl0cy5wbCAgICAgfCAgMjUgKy0KIHNyYy90ZXN0L3JlY292ZXJ5 L3QvMDA5X3R3b3BoYXNlLnBsICAgICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wMTNfY3Jhc2hfcmVzdGFydC5wbCAgICAgIHwgICA0ICstCiBzcmMvdGVzdC9yZWNv dmVyeS90LzAyMl9jcmFzaF90ZW1wX2ZpbGVzLnBsICAgfCAgIDQgKy0KIHNyYy90ZXN0L3Jl Y292ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsICB8ICAzOSArLQogc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzdfaW52YWxpZF9kYXRhYmFzZS5wbCAgIHwgIDQ1ICstCiAuLi4vdC8w NDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsICAgICAgfCAgMjYgKy0KIC4uLi9y ZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwgICB8ICAxMSArLQogc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbCAgIHwgIDEwICstCiAu Li4vcmVjb3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwgfCAgNjYgKyst CiAuLi4vdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsICAgICAgICAgfCAgMTgg Ky0KIC4uLi9yZWNvdmVyeS90LzA0OF92YWN1dW1faG9yaXpvbl9mbG9vci5wbCAgICB8ICA0 MCArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3JfbHNuLnBsICAgICAgIHwg MTU2ICsrKystLS0KIC4uLi9yZWNvdmVyeS90LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5w bCAgICB8ICAxNCArLQogLi4uL3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93YWxfbGV2ZWwu cGwgICAgIHwgIDQzICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBs ICAgICAgICAgfCAgMzUgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGlj dHMucGwgICAgICB8ICAyMyArLQogLi4uL3QvMDM4X3dhbHNuZF9zaHV0ZG93bl90aW1lb3V0 LnBsICAgICAgICAgIHwgIDE1ICstCiA0MyBmaWxlcyBjaGFuZ2VkLCA4OTIgaW5zZXJ0aW9u cygrKSwgMTA2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2sv dC8wMDFfdmVyaWZ5X2hlYXBhbS5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwMV92ZXJpZnlf aGVhcGFtLnBsCmluZGV4IGUzZmVlMTlhZTVkLi45ZWE3MjE3OWZjZCAxMDA2NDQKLS0tIGEv Y29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0ucGwKKysrIGIvY29udHJpYi9h bWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0ucGwKQEAgLTUsNiArNSw3IEBAIHVzZSBzdHJp Y3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVzZSBUZXN0OjpNb3JlOwpAQCAtMTgsNyArMTks OSBAQCAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygndGVzdCcpOwog JG5vZGUtPmluaXQobm9fZGF0YV9jaGVja3N1bXMgPT4gMSk7CiAkbm9kZS0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICdhdXRvdmFjdXVtPW9mZicpOwogJG5vZGUtPnN0YXJ0 OwotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gYW1j aGVjaykpOworbXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CisKKyRzZXNzaW9uLT5kbyhxKENSRUFURSBFWFRFTlNJT04gYW1j aGVjaykpOwogCiAjCiAjIENoZWNrIGEgdGFibGUgd2l0aCBkYXRhIGxvYWRlZCBidXQgbm8g Y29ycnVwdGlvbiwgZnJlZXppbmcsIGV0Yy4KQEAgLTQ5LDcgKzUyLDcgQEAgZGV0ZWN0c19o ZWFwX2NvcnJ1cHRpb24oCiAjIENoZWNrIGEgY29ycnVwdCB0YWJsZSB3aXRoIGFsbC1mcm96 ZW4gZGF0YQogIwogZnJlc2hfdGVzdF90YWJsZSgndGVzdCcpOwotJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcp IHRlc3QpKTsKKyRzZXNzaW9uLT5kbyhxKFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0Vf U0tJUFBJTkcpIHRlc3QpKTsKIGRldGVjdHNfbm9fY29ycnVwdGlvbigidmVyaWZ5X2hlYXBh bSgndGVzdCcpIiwKIAkiYWxsLWZyb3plbiBub3QgY29ycnVwdGVkIHRhYmxlIik7CiBjb3Jy dXB0X2ZpcnN0X3BhZ2UoJ3Rlc3QnKTsKQEAgLTgxLDcgKzg0LDcgQEAgc3ViIHJlbGF0aW9u X2ZpbGVwYXRoCiAJbXkgKCRyZWxuYW1lKSA9IEBfOwogCiAJbXkgJHBnZGF0YSA9ICRub2Rl LT5kYXRhX2RpcjsKLQlteSAkcmVsID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CW15ICRyZWwgPSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKAogCQlxcShTRUxFQ1QgcGdfcmVs YXRpb25fZmlsZXBhdGgoJyRyZWxuYW1lJykpKTsKIAlkaWUgInBhdGggbm90IGZvdW5kIGZv ciByZWxhdGlvbiAkcmVsbmFtZSIgdW5sZXNzIGRlZmluZWQgJHJlbDsKIAlyZXR1cm4gIiRw Z2RhdGEvJHJlbCI7CkBAIC05Miw4ICs5NSw4IEBAIHN1YiBmcmVzaF90ZXN0X3RhYmxlCiB7 CiAJbXkgKCRyZWxuYW1lKSA9IEBfOwogCi0JcmV0dXJuICRub2RlLT5zYWZlX3BzcWwoCi0J CSdwb3N0Z3JlcycsIHFxKAorCXJldHVybiAkc2Vzc2lvbi0+ZG8oCisJCXFxKAogCQlEUk9Q IFRBQkxFIElGIEVYSVNUUyAkcmVsbmFtZSBDQVNDQURFOwogCQlDUkVBVEUgVEFCTEUgJHJl bG5hbWUgKGEgaW50ZWdlciwgYiB0ZXh0KTsKIAkJQUxURVIgVEFCTEUgJHJlbG5hbWUgU0VU IChhdXRvdmFjdXVtX2VuYWJsZWQ9ZmFsc2UpOwpAQCAtMTE3LDggKzEyMCw4IEBAIHN1YiBm cmVzaF90ZXN0X3NlcXVlbmNlCiB7CiAJbXkgKCRzZXFuYW1lKSA9IEBfOwogCi0JcmV0dXJu ICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsIHFxKAorCXJldHVybiAkc2Vzc2lv bi0+ZG8oCisJCXFxKAogCQlEUk9QIFNFUVVFTkNFIElGIEVYSVNUUyAkc2VxbmFtZSBDQVND QURFOwogCQlDUkVBVEUgU0VRVUVOQ0UgJHNlcW5hbWUKIAkJCUlOQ1JFTUVOVCBCWSAxMwpA QCAtMTM0LDggKzEzNyw4IEBAIHN1YiBhZHZhbmNlX3Rlc3Rfc2VxdWVuY2UKIHsKIAlteSAo JHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3Rn cmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCisJCXFxKAogCQlT RUxFQ1QgbmV4dHZhbCgnJHNlcW5hbWUnKTsKIAkpKTsKIH0KQEAgLTE0NSwxMCArMTQ4LDcg QEAgc3ViIHNldF90ZXN0X3NlcXVlbmNlCiB7CiAJbXkgKCRzZXFuYW1lKSA9IEBfOwogCi0J cmV0dXJuICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsIHFxKAotCQlTRUxFQ1Qg c2V0dmFsKCckc2VxbmFtZScsIDEwMik7Ci0JKSk7CisJcmV0dXJuICRzZXNzaW9uLT5xdWVy eV9vbmV2YWwocXEoU0VMRUNUIHNldHZhbCgnJHNlcW5hbWUnLCAxMDIpKSk7CiB9CiAKICMg Q2FsbCBTUUwgZnVuY3Rpb25zIHRvIHJlc2V0IHRoZSBzZXF1ZW5jZQpAQCAtMTU2LDggKzE1 Niw4IEBAIHN1YiByZXNldF90ZXN0X3NlcXVlbmNlCiB7CiAJbXkgKCRzZXFuYW1lKSA9IEBf OwogCi0JcmV0dXJuICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsIHFxKAorCXJl dHVybiAkc2Vzc2lvbi0+ZG8oCisJCXFxKAogCQlBTFRFUiBTRVFVRU5DRSAkc2VxbmFtZSBS RVNUQVJUIFdJVEggNTEKIAkpKTsKIH0KQEAgLTE2OSw2ICsxNjksNyBAQCBzdWIgY29ycnVw dF9maXJzdF9wYWdlCiAJbXkgKCRyZWxuYW1lKSA9IEBfOwogCW15ICRyZWxwYXRoID0gcmVs YXRpb25fZmlsZXBhdGgoJHJlbG5hbWUpOwogCisJJHNlc3Npb24tPmNsb3NlOwogCSRub2Rl LT5zdG9wOwogCiAJbXkgJGZoOwpAQCAtMTkxLDYgKzE5Miw3IEBAIHN1YiBjb3JydXB0X2Zp cnN0X3BhZ2UKIAkgIG9yIEJBSUxfT1VUKCJjbG9zZSBmYWlsZWQ6ICQhIik7CiAKIAkkbm9k ZS0+c3RhcnQ7CisJJHNlc3Npb24tPnJlY29ubmVjdDsKIH0KIAogc3ViIGRldGVjdHNfaGVh cF9jb3JydXB0aW9uCkBAIC0yMTYsNyArMjE4LDcgQEAgc3ViIGRldGVjdHNfY29ycnVwdGlv bgogCiAJbXkgKCRmdW5jdGlvbiwgJHRlc3RuYW1lLCBAcmUpID0gQF87CiAKLQlteSAkcmVz dWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcShTRUxFQ1QgKiBGUk9NICRm dW5jdGlvbikpOworCW15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnlfdHVwbGVzKHFxKFNF TEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CiAJbGlrZSgkcmVzdWx0LCAkXywgJHRlc3RuYW1l KSBmb3IgKEByZSk7CiB9CiAKQEAgLTIyNiw3ICsyMjgsNyBAQCBzdWIgZGV0ZWN0c19ub19j b3JydXB0aW9uCiAKIAlteSAoJGZ1bmN0aW9uLCAkdGVzdG5hbWUpID0gQF87CiAKLQlteSAk cmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcShTRUxFQ1QgKiBGUk9N ICRmdW5jdGlvbikpOworCW15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnlfdHVwbGVzKHFx KFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CiAJaXMoJHJlc3VsdCwgJycsICR0ZXN0bmFt ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMucGwgYi9j b250cmliL2FtY2hlY2svdC8wMDJfY2ljLnBsCmluZGV4IDYyOWQwMGMxZDA1Li5mMmM3YmM4 NjUzZiAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3QvMDAyX2NpYy5wbAorKysgYi9j b250cmliL2FtY2hlY2svdC8wMDJfY2ljLnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugc3RyaWN0 OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTcyLDggKzczLDgg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXEoSU5TRVJUIElOVE8gcXVlYmVj IFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIHMoaSk7KSk7CiAKICMgc3Rh cnQgYmFja2dyb3VuZCB0cmFuc2FjdGlvbgotbXkgJGluX3Byb2dyZXNzX2ggPSAkbm9kZS0+ YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGluX3Byb2dyZXNzX2gtPnF1ZXJ5X3Nh ZmUocShCRUdJTjsgU0VMRUNUIHBnX2N1cnJlbnRfeGFjdF9pZCgpOykpOworbXkgJGluX3By b2dyZXNzX2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZSk7CiskaW5fcHJvZ3Jlc3NfaC0+ZG8ocShCRUdJTjsgU0VMRUNUIHBnX2N1cnJlbnRfeGFj dF9pZCgpOykpOwogCiAjIGRlbGV0ZSBvbmUgcm93IGZyb20gdGFibGUsIHdoaWxlIGJhY2tn cm91bmQgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShERUxFVEUgRlJPTSBxdWViZWMgV0hFUkUgaSA9IDE7KSk7CkBAIC04Niw3 ICs4Nyw3IEBAIG15ICRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLAogCXEoU0VM RUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygnb3NjYXInLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlKSkpOwogaXMoJHJlc3VsdCwgJzAnLCAnYnRfaW5kZXhfcGFyZW50X2NoZWNrIGZvciBD SUMgYWZ0ZXIgcmVtb3ZlZCByb3cnKTsKIAotJGluX3Byb2dyZXNzX2gtPnF1aXQ7CiskaW5f cHJvZ3Jlc3NfaC0+Y2xvc2U7CiAKICRub2RlLT5zdG9wOwogZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDNfY2ljXzJwYy5wbCBiL2NvbnRyaWIv YW1jaGVjay90LzAwM19jaWNfMnBjLnBsCmluZGV4IGYyOGVlYWMxN2VmLi5kM2ExNjQzYmYz MyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwKKysrIGIv Y29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwKQEAgLTcsNiArNyw3IEBAIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbjsKIAogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTM2LDI5ICszNyw0MiBAQCAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChpIGludCwg aiBqc29uYikpKTsKICMgc3RhdGVtZW50cy4KICMKIAotbXkgJG1haW5faCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitteSAkbWFpbl9oID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRub2RlKTsKIAotJG1haW5faC0+cXVlcnlfc2Fm ZSgKKyRtYWluX2gtPmRvX2FzeW5jKAogCXEoCiBCRUdJTjsKIElOU0VSVCBJTlRPIHRibCBW QUxVRVMoMCwgJ1tbMTQsMiwzXV0nKTsKICkpOwogCi1teSAkY2ljX2ggPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJGNpY19oID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRub2RlKTsKIAotJGNpY19oLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydC8sIHEoCi1cZWNobyBzdGFydAotQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gdGJsKGkpOwotQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBnaW5pZHggT04g dGJsIFVTSU5HIGdpbihqKTsKKyRjaWNfaC0+c2V0bm9uYmxvY2tpbmcoMSk7CisKKyRjaWNf aC0+ZW50ZXJQaXBlbGluZU1vZGUoKTsKKworJGNpY19oLT5kb19waXBlbGluZSgKKwlxKAor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gdGJsKGkpCispKTsKKworJGNpY19o LT5waXBlbGluZVN5bmMoKTsKKworJGNpY19oLT5kb19waXBlbGluZSgKKwlxKAorQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBnaW5pZHggT04gdGJsIFVTSU5HIGdpbihqKQogKSk7CiAK LSRtYWluX2gtPnF1ZXJ5X3NhZmUoCiskY2ljX2gtPnBpcGVsaW5lU3luYygpOworCiskbWFp bl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG9fYXN5bmMoCiAJcSgKIFBS RVBBUkUgVFJBTlNBQ1RJT04gJ2EnOwogKSk7CiAKLSRtYWluX2gtPnF1ZXJ5X3NhZmUoCisk bWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG9fYXN5bmMoCiAJcSgK IEJFR0lOOwogSU5TRVJUIElOVE8gdGJsIFZBTFVFUygwLCAnW1sxNCwyLDNdXScpOwpAQCAt NjYsNyArODAsOCBAQCBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKDAsICdbWzE0LDIsM11dJyk7 CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDT01NSVQgUFJFUEFSRUQgJ2En OykpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZlKAorJG1haW5faC0+d2FpdF9mb3JfY29tcGxl dGlvbjsKKyRtYWluX2gtPmRvX2FzeW5jKAogCXEoCiBQUkVQQVJFIFRSQU5TQUNUSU9OICdi JzsKIEJFR0lOOwpAQCAtNzUsMTQgKzkwLDE3IEBAIElOU0VSVCBJTlRPIHRibCBWQUxVRVMo MCwgJyJtYXJ5IGhhZCBhIGxpdHRsZSBsYW1iIicpOwogCiAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ09NTUlUIFBSRVBBUkVEICdiJzspKTsKIAotJG1haW5faC0+cXVlcnlf c2FmZSgKLQlxKAotUFJFUEFSRSBUUkFOU0FDVElPTiAnYyc7Ci1DT01NSVQgUFJFUEFSRUQg J2MnOwotKSk7CiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG8o CisJcShQUkVQQVJFIFRSQU5TQUNUSU9OICdjJzspLAorCXEoQ09NTUlUIFBSRVBBUkVEICdj JzspKTsKIAotJG1haW5faC0+cXVpdDsKLSRjaWNfaC0+cXVpdDsKKyRtYWluX2gtPmNsb3Nl OworCisjIGNhbGxlZCB0d2ljZSBvdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24gYWJv dXQgcGlwZWxpbmUgbW9kZQorJGNpY19oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGNpY19o LT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGNpY19oLT5jbG9zZTsKIAogJHJlc3VsdCA9ICRu b2RlLT5wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdpZHgnLHRy dWUpKSk7CiBpcygkcmVzdWx0LCAnMCcsICdidF9pbmRleF9jaGVjayBhZnRlciBvdmVybGFw cGluZyAyUEMnKTsKQEAgLTEwNiwxMCArMTI0LDkgQEAgUFJFUEFSRSBUUkFOU0FDVElPTiAn cGVyc2lzdHNfZm9yZXZlcic7CiApKTsKICRub2RlLT5yZXN0YXJ0OwogCi1teSAkcmVpbmRl eF9oID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRyZWluZGV4X2gt PnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0LywgcSgKLVxlY2hvIHN0YXJ0CitteSAkcmVpbmRl eF9oID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor JHJlaW5kZXhfaC0+ZG9fYXN5bmMoCisJcSgKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlk eDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpKTsKIERST1AgSU5E RVggQ09OQ1VSUkVOVExZIGdpbmlkeDsKQEAgLTExNyw3ICsxMzQsOCBAQCBDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGdpbmlkeCBPTiB0YmwgVVNJTkcgZ2luKGopOwogKSk7CiAKICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnc3BhbnNfcmVz dGFydCciKTsKLSRyZWluZGV4X2gtPnF1aXQ7CiskcmVpbmRleF9oLT53YWl0X2Zvcl9jb21w bGV0aW9uOworJHJlaW5kZXhfaC0+Y2xvc2U7CiAkcmVzdWx0ID0gJG5vZGUtPnBzcWwoJ3Bv c3RncmVzJywgcShTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeCcsdHJ1ZSkpKTsKIGlzKCRy ZXN1bHQsICcwJywgJ2J0X2luZGV4X2NoZWNrIGFmdGVyIDJQQyBhbmQgcmVzdGFydCcpOwog JHJlc3VsdCA9ICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIGdpbl9pbmRleF9j aGVjaygnZ2luaWR4JykpKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vdC8wMDFfd2Fs LnBsIGIvY29udHJpYi9ibG9vbS90LzAwMV93YWwucGwKaW5kZXggNjgzYjE4NzYwNTUuLmY4 NmM0OWQ2MzU3IDEwMDY0NAotLS0gYS9jb250cmliL2Jsb29tL3QvMDAxX3dhbC5wbAorKysg Yi9jb250cmliL2Jsb29tL3QvMDAxX3dhbC5wbApAQCAtNSwxMSArNSwxNCBAQAogdXNlIHN0 cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAogbXkgJG5vZGVfcHJp bWFyeTsKIG15ICRub2RlX3N0YW5kYnk7CitteSAkc2Vzc2lvbl9wcmltYXJ5OworbXkgJHNl c3Npb25fc3RhbmRieTsKIAogIyBSdW4gZmV3IHF1ZXJpZXMgb24gYm90aCBwcmltYXJ5IGFu ZCBzdGFuZGJ5IGFuZCBjaGVjayB0aGVpciByZXN1bHRzIG1hdGNoLgogc3ViIHRlc3RfaW5k ZXhfcmVwbGF5CkBAIC0yMSwyMCArMjQsMTggQEAgc3ViIHRlc3RfaW5kZXhfcmVwbGF5CiAJ IyBXYWl0IGZvciBzdGFuZGJ5IHRvIGNhdGNoIHVwCiAJJG5vZGVfcHJpbWFyeS0+d2FpdF9m b3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAotCW15ICRxdWVyaWVzID0gcXEoU0VUIGVu YWJsZV9zZXFzY2FuPW9mZjsKLVNFVCBlbmFibGVfYml0bWFwc2Nhbj1vbjsKLVNFVCBlbmFi bGVfaW5kZXhzY2FuPW9uOwotU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgaSA9IDA7Ci1TRUxF Q1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMzsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJFIHQg PSAnYic7Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSB0ID0gJ2YnOwotU0VMRUNUICogRlJP TSB0c3QgV0hFUkUgaSA9IDMgQU5EIHQgPSAnYyc7Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVS RSBpID0gNyBBTkQgdCA9ICdlJzsKLSk7CisJbXkgQHF1ZXJpZXMgPSAoCisJCSJTRUxFQ1Qg KiBGUk9NIHRzdCBXSEVSRSBpID0gMCIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBp ID0gMyIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSB0ID0gJ2InIiwKKwkJIlNFTEVD VCAqIEZST00gdHN0IFdIRVJFIHQgPSAnZiciLAorCQkiU0VMRUNUICogRlJPTSB0c3QgV0hF UkUgaSA9IDMgQU5EIHQgPSAnYyciLAorCQkiU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgaSA9 IDcgQU5EIHQgPSAnZSciLAorCSAgICk7CiAKIAkjIFJ1biB0ZXN0IHF1ZXJpZXMgYW5kIGNv bXBhcmUgdGhlaXIgcmVzdWx0Ci0JbXkgJHByaW1hcnlfcmVzdWx0ID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICRxdWVyaWVzKTsKLQlteSAkc3RhbmRieV9yZXN1 bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwgJHF1ZXJpZXMpOwor CW15ICRwcmltYXJ5X3Jlc3VsdCA9ICRzZXNzaW9uX3ByaW1hcnktPnF1ZXJ5X3R1cGxlcyhA cXVlcmllcyk7CisJbXkgJHN0YW5kYnlfcmVzdWx0ID0gJHNlc3Npb25fc3RhbmRieS0+cXVl cnlfdHVwbGVzKEBxdWVyaWVzKTsKIAogCWlzKCRwcmltYXJ5X3Jlc3VsdCwgJHN0YW5kYnlf cmVzdWx0LCAiJHRlc3RfbmFtZTogcXVlcnkgcmVzdWx0IG1hdGNoZXMiKTsKIAlyZXR1cm47 CkBAIC01NSwxMyArNTYsMjQgQEAgJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgk bm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCiAJaGFzX3N0cmVhbWluZyA9PiAxKTsKICRu b2RlX3N0YW5kYnktPnN0YXJ0OwogCisjIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgc2Vz c2lvbnMKKyRzZXNzaW9uX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZV9wcmltYXJ5KTsKKyRzZXNzaW9uX3N0YW5kYnkgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5KTsKK215ICRp bml0c2V0ID0gcVsKKyAgIFNFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CisgICBTRVQgZW5hYmxl X2JpdG1hcHNjYW49b247CisgICBTRVQgZW5hYmxlX2luZGV4c2Nhbj1vbjsKK107Ciskc2Vz c2lvbl9wcmltYXJ5LT5kbygkaW5pdHNldCk7Ciskc2Vzc2lvbl9zdGFuZGJ5LT5kbygkaW5p dHNldCk7CisKICMgQ3JlYXRlIHNvbWUgYmxvb20gaW5kZXggb24gcHJpbWFyeQotJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgRVhURU5TSU9OIGJsb29t OyIpOwotJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgVEFC TEUgdHN0IChpIGludDQsIHQgdGV4dCk7Iik7Ci0kbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo InBvc3RncmVzIiwKKyRzZXNzaW9uX3ByaW1hcnktPmRvKCJDUkVBVEUgRVhURU5TSU9OIGJs b29tOyIpOworJHNlc3Npb25fcHJpbWFyeS0+ZG8oIkNSRUFURSBUQUJMRSB0c3QgKGkgaW50 NCwgdCB0ZXh0KTsiKTsKKyRzZXNzaW9uX3ByaW1hcnktPmRvKAogCSJJTlNFUlQgSU5UTyB0 c3QgU0VMRUNUIGklMTAsIHN1YnN0cihlbmNvZGUoc2hhMjU2KGk6OnRleHQ6OmJ5dGVhKSwg J2hleCcpLCAxLCAxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwKSBpOyIKICk7Ci0k bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwKKyRzZXNzaW9uX3ByaW1hcnkt PmRvKAogCSJDUkVBVEUgSU5ERVggYmxvb21pZHggT04gdHN0IFVTSU5HIGJsb29tIChpLCB0 KSBXSVRIIChjb2wxID0gMyk7Iik7CiAKICMgVGVzdCB0aGF0IHF1ZXJpZXMgZ2l2ZSBzYW1l IHJlc3VsdApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3QvMDAxX2NvbmN1 cnJlbnRfdHJhbnNhY3Rpb24ucGwgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvdC8wMDFfY29u Y3VycmVudF90cmFuc2FjdGlvbi5wbAppbmRleCAzYWE1NTY4OTJhNi4uY2Y2ZTNiNDUxODIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS90LzAwMV9jb25jdXJyZW50X3Ry YW5zYWN0aW9uLnBsCisrKyBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS90LzAwMV9jb25jdXJy ZW50X3RyYW5zYWN0aW9uLnBsCkBAIC02LDYgKzYsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMjQsMTAgKzI1LDEwIEBAICRzdGFu ZGJ5LT5zdGFydDsKIAogIyBTZXR1cCBhbm90aGVyIGRhdGFiYXNlCiAkbm9kZS0+c2FmZV9w c3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgREFUQUJBU0Ugb3RoZXJfZGF0YWJhc2U7XG4iKTsK LW15ICRic2Vzc2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ290aGVyX2RhdGFiYXNl Jyk7CitteSAkYnNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZSwgZGJuYW1lID0+ICdvdGhlcl9kYXRhYmFzZScpOwogCiAjIFJ1biBhIGNv bmN1cnJlbnQgdHJhbnNhY3Rpb24KLSRic2Vzc2lvbi0+cXVlcnlfc2FmZSgKKyRic2Vzc2lv bi0+ZG8oCiAJcXFbCiAJQkVHSU47CiAJU0VMRUNUIHR4aWRfY3VycmVudCgpOwpAQCAtNTUs OCArNTYsOCBAQCAkcmVzdWx0ID0gJHN0YW5kYnktPnNhZmVfcHNxbCgicG9zdGdyZXMiLAog b2soJHJlc3VsdCBlcSAiIiwgInBnX2NoZWNrX3Zpc2libGUoKSBkZXRlY3RzIG5vIGVycm9y cyIpOwogCiAjIFNodXRkb3duCi0kYnNlc3Npb24tPnF1ZXJ5X3NhZmUoIkNPTU1JVDsiKTsK LSRic2Vzc2lvbi0+cXVpdDsKKyRic2Vzc2lvbi0+ZG8oIkNPTU1JVDsiKTsKKyRic2Vzc2lv bi0+Y2xvc2U7CiAkbm9kZS0+c3RvcDsKICRzdGFuZGJ5LT5zdG9wOwogCmRpZmYgLS1naXQg YS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0cy5wbCBiL2NvbnRyaWIv dGVzdF9kZWNvZGluZy90LzAwMV9yZXBsX3N0YXRzLnBsCmluZGV4IDY4MTRjNzkyZTJiLi4x MmY2YzEyNmY3OSAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3QvMDAxX3Jl cGxfc3RhdHMucGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3QvMDAxX3JlcGxfc3Rh dHMucGwKQEAgLTcsNiArNyw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CiB1c2UgRmlsZTo6UGF0aCBxdyhybXRyZWUpOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0xMjksMTEg KzEzMCwxMSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiApOwogCiAjIExvb2sg YXQgc2xvdCBkYXRhLCB3aXRoIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uLgotbXkgJGJwZ3Nx bCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAxKTsKK215ICRiZ3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZT0+JG5vZGUpOwogCiAjIExhdW5jaCBxdWVyeSBhbmQgbG9vayBhdCBzbG90IGRhdGEs IGluY3JlbWVudGluZyB0aGUgcmVmY291bnQgb2YgdGhlCiAjIHN0YXRzIGVudHJ5LgotJGJw Z3NxbC0+cXVlcnlfc2FmZSgKKyRiZ3Nlc3Npb24tPnF1ZXJ5X3NhZmUoCiAJIlNFTEVDVCBw Z19sb2dpY2FsX3Nsb3RfcGVla19iaW5hcnlfY2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0 JywgTlVMTCwgTlVMTCkiCiApOwogCkBAIC0xNTAsNyArMTUxLDcgQEAgJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCiAjIExvb2sgYWdhaW4gYXQgdGhlIHNsb3QgZGF0YS4gIFRo ZSBsb2NhbCBzdGF0cyByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlZnJlc2hlZAogIyB0byB0aGUg cmVpbml0aWFsaXplZCBlbnRyeS4KLSRicGdzcWwtPnF1ZXJ5X3NhZmUoCiskYmdzZXNzaW9u LT5xdWVyeV9zYWZlKAogCSJTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfYmluYXJ5X2No YW5nZXMoJyRzbG90X25hbWVfcmVzdGFydCcsIE5VTEwsIE5VTEwpIgogKTsKICMgRHJvcCBh Z2FpbiB0aGUgc2xvdCwgdGhlIGVudHJ5IGlzIG5vdCBkcm9wcGVkIHlldCBhcyB0aGUgcHJl dmlvdXMgc2Vzc2lvbgpAQCAtMTc2LDYgKzE3Nyw2IEBAIGNvbW1hbmRfbGlrZSgKIG15ICRz dGF0c19maWxlID0gIiRkYXRhZGlyL3BnX3N0YXQvcGdzdGF0LnN0YXQiOwogb2soLWYgIiRz dGF0c19maWxlIiwgInN0YXRzIGZpbGUgbXVzdCBleGlzdCBhZnRlciBzaHV0ZG93biIpOwog Ci0kYnBnc3FsLT5xdWl0OworJGJnc2Vzc2lvbi0+Y2xvc2U7CiAKIGRvbmVfdGVzdGluZygp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3ZlcmlmeV9oZWFwYW0u cGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbAppbmRleCA5 NWYxZjM0YzkwZC4uOWFmYWNiY2FhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVj ay90LzAwNF92ZXJpZnlfaGVhcGFtLnBsCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAw NF92ZXJpZnlfaGVhcGFtLnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdh cm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTE5MCwxNiArMTkxLDE3IEBAICRu b2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFu c2FjdGlvbnM9MTAnKTsKICRub2RlLT5zdGFydDsKIG15ICRwb3J0ID0gJG5vZGUtPnBvcnQ7 CiBteSAkcGdkYXRhID0gJG5vZGUtPmRhdGFfZGlyOwotJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrIik7Ci0kbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Iik7CitteSAkc2Vz c2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK KyRzZXNzaW9uLT5kbygiQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrIik7Ciskc2Vzc2lvbi0+ ZG8oIkNSRUFURSBFWFRFTlNJT04gcGFnZWluc3BlY3QiKTsKIAogIyBHZXQgYSBub24temVy byBkYXRmcm96ZW54aWQKLSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVkFDVVVN IEZSRUVaRSkpOworJHNlc3Npb24tPmRvKHFxKFZBQ1VVTSBGUkVFWkUpKTsKIAogIyBDcmVh dGUgdGhlIHRlc3QgdGFibGUgd2l0aCBwcmVjaXNlbHkgdGhlIHNjaGVtYSB0aGF0IG91ciBj b3JydXB0aW9uIGZ1bmN0aW9uCiAjIGV4cGVjdHMuCi0kbm9kZS0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlDUkVBVEUgVEFCTEUgcHVi bGljLnRlc3QgKGEgQklHSU5ULCBiIFRFWFQsIGMgVEVYVCk7CiAJCUFMVEVSIFRBQkxFIHB1 YmxpYy50ZXN0IFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlKTsKIAkJQUxURVIgVEFC TEUgcHVibGljLnRlc3QgQUxURVIgQ09MVU1OIGMgU0VUIFNUT1JBR0UgRVhURVJOQUw7CkBA IC0yMDksMTQgKzIxMSwxNSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyBXZSB3YW50ICgwIDwg ZGF0ZnJvemVueGlkIDwgdGVzdC5yZWxmcm96ZW54aWQpLiAgVG8gYWNoaWV2ZSB0aGlzLCB3 ZSBmcmVlemUKICMgYW4gb3RoZXJ3aXNlIHVudXNlZCB0YWJsZSwgcHVibGljLmp1bmssIHBy aW9yIHRvIGluc2VydGluZyBkYXRhIGFuZCBmcmVlemluZwogIyBwdWJsaWMudGVzdAotJG5v ZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgK IAkJQ1JFQVRFIFRBQkxFIHB1YmxpYy5qdW5rIEFTIFNFTEVDVCAnanVuayc6OlRFWFQgQVMg anVua19jb2x1bW47CiAJCUFMVEVSIFRBQkxFIHB1YmxpYy5qdW5rIFNFVCAoYXV0b3ZhY3V1 bV9lbmFibGVkPWZhbHNlKTsKLQkJVkFDVVVNIEZSRUVaRSBwdWJsaWMuanVuawotCSkpOwor CSksCisJJ1ZBQ1VVTSBGUkVFWkUgcHVibGljLmp1bmsnCispOwogCi1teSAkcmVsID0gJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorbXkgJHJlbCA9ICRzZXNzaW9uLT5xdWVyeV9v bmV2YWwoCiAJcXEoU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCdwdWJsaWMudGVzdCcp KSk7CiBteSAkcmVscGF0aCA9ICIkcGdkYXRhLyRyZWwiOwogCkBAIC0yMjksMjMgKzIzMiwy NCBAQCBteSAkUk9XQ09VTlRfQkFTSUMgPSAxNjsKIAogIyBGaXJzdCBpbnNlcnQgZGF0YSBu ZWVkZWQgZm9yIHRlc3RzIHVucmVsYXRlZCB0byB1cGRhdGUgY2hhaW4gdmFsaWRhdGlvbi4K ICMgVGhlbiBmcmVlemUgdGhlIHBhZ2UuIFRoZXNlIHR1cGxlcyBhcmUgYXQgb2Zmc2V0IG51 bWJlcnMgMSB0byAxNi4KLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCisk c2Vzc2lvbi0+ZG8oCisJcXEoCiAJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMp CiAJCVNFTEVDVAogCQkJeCdERUFERjlGOURFQURGOUY5Jzo6YmlnaW50LAogCQkJJ2FiY2Rl ZmcnLAogCQkJcmVwZWF0KCd3JywgMTAwMDApCiAJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg JFJPV0NPVU5UX0JBU0lDKTsKLQlWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OykKKyAgICAp LAorCSdWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0JwogKTsKIAogIyBDcmVhdGUgc29tZSBz aW1wbGUgSE9UIHVwZGF0ZSBjaGFpbnMgZm9yIGxpbmUgcG9pbnRlciB2YWxpZGF0aW9uLiBB ZnRlcgogIyB0aGUgcGFnZSBpcyBIT1QgcHJ1bmVkLCB3ZSdsbCBoYXZlIHR3byByZWRpcmVj dHMgbGluZSBwb2ludGVycyBlYWNoIHBvaW50aW5nCiAjIHRvIGEgdHVwbGUuIFdlJ2xsIHRo ZW4gY2hhbmdlIHRoZSBzZWNvbmQgcmVkaXJlY3QgdG8gcG9pbnQgdG8gdGhlIHNhbWUKICMg dHVwbGUgYXMgdGhlIGZpcnN0IG9uZSBhbmQgdmVyaWZ5IHRoYXQgd2UgY2FuIGRldGVjdCBj b3JydXB0aW9uLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNz aW9uLT5kbygKKwlxcSgKIAkJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMpCiAJ CQlWQUxVRVMgKCB4J0RFQURGOUY5REVBREY5RjknOjpiaWdpbnQsICdhYmNkZWZnJywKIAkJ CQkJIGdlbmVyYXRlX3NlcmllcygxLDIpKTsgLS0gb2Zmc2V0IG51bWJlcnMgMTcgYW5kIDE4 CkBAIC0yNTQsOCArMjU4LDggQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkpKTsKIAogIyBDcmVh dGUgc29tZSBtb3JlIEhPVCB1cGRhdGUgY2hhaW5zLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJSU5TRVJUIElOVE8gcHVi bGljLnRlc3QgKGEsIGIsIGMpCiAJCQlWQUxVRVMgKCB4J0RFQURGOUY5REVBREY5RjknOjpi aWdpbnQsICdhYmNkZWZnJywKIAkJCQkJIGdlbmVyYXRlX3NlcmllcygzLDYpKTsgLS0gb2Zm c2V0IG51bWJlcnMgMjEgdGhyb3VnaCAyNApAQCAtMjY0LDI1ICsyNjgsMzAgQEAgJG5vZGUt PnNhZmVfcHNxbCgKIAkpKTsKIAogIyBOZWdhdGl2ZSB0ZXN0IGNhc2Ugb2YgSE9ULXBydW5p bmcgd2l0aCBhYm9ydGVkIHR1cGxlLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJQkVHSU47CiAJCVVQREFURSBwdWJsaWMu dGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzUnOyAtLSBvZmZzZXQgbnVtYmVyIDI3CiAJ CUFCT1JUOwotCQlWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OwotCSkpOworICAgICAgICks CisJICAgJ1ZBQ1VVTSBGUkVFWkUgcHVibGljLnRlc3Q7JywKKwkpOwogCiAjIE5leHQgdXBk YXRlIG9uIGFueSB0dXBsZSB3aWxsIGJlIHN0b3JlZCBhdCB0aGUgc2FtZSBwbGFjZSBvZiB0 dXBsZSBpbnNlcnRlZAogIyBieSBhYm9ydGVkIHRyYW5zYWN0aW9uLiBUaGlzIHNob3VsZCBu b3QgY2F1c2UgdGhlIHRhYmxlIHRvIGFwcGVhciBjb3JydXB0LgotJG5vZGUtPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVH SU47CiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzYnOyAt LSBvZmZzZXQgbnVtYmVyIDI3IGFnYWluCi0JCVZBQ1VVTSBGUkVFWkUgcHVibGljLnRlc3Q7 Ci0JKSk7CisgICAgICAgIENPTU1JVDsKKwkpLAorCSdWQUNVVU0gRlJFRVpFIHB1YmxpYy50 ZXN0OycsCisgICApOwogCiAjIERhdGEgZm9yIEhPVCBjaGFpbiB2YWxpZGF0aW9uLCBzbyBu b3QgY2FsbGluZyBWQUNVVU0gRlJFRVpFLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVHSU47CiAJCUlOU0VS VCBJTlRPIHB1YmxpYy50ZXN0IChhLCBiLCBjKQogCQkJVkFMVUVTICggeCdERUFERjlGOURF QURGOUY5Jzo6YmlnaW50LCAnYWJjZGVmZycsCiAJCQkJCSBnZW5lcmF0ZV9zZXJpZXMoNywx NSkpOyAtLSBvZmZzZXQgbnVtYmVycyAyOCB0byAzNgpAQCAtMjkzLDExICszMDIsMTIgQEAg JG5vZGUtPnNhZmVfcHNxbCgKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdI RVJFIGMgPSAnMTMnOyAtLSBvZmZzZXQgbnVtYmVyIDQxCiAJCVVQREFURSBwdWJsaWMudGVz dCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzE0JzsgLS0gb2Zmc2V0IG51bWJlciA0MgogCQlV UERBVEUgcHVibGljLnRlc3QgU0VUIGMgPSAnYScgV0hFUkUgYyA9ICcxNSc7IC0tIG9mZnNl dCBudW1iZXIgNDMKKyAgICAgICAgQ09NTUlUOwogCSkpOwogCiAjIE5lZWQgb25lIGFib3J0 ZWQgdHJhbnNhY3Rpb24gdG8gdGVzdCBjb3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCi0kbm9k ZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAog CQlCRUdJTjsKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdIRVJFIGMgPSAn OSc7IC0tIG9mZnNldCBudW1iZXIgNDQKIAkJQUJPUlQ7CkBAIC0zMDYsMTkgKzMxNiwxOSBA QCAkbm9kZS0+c2FmZV9wc3FsKAogIyBOZWVkIG9uZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv biB0byB0ZXN0IGZldyBjb3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCiAjIFdlIGFyZSBjcmVh dGluZyBQUkVQQVJFIFRSQU5TQUNUSU9OIGhlcmUgYXMgdGhlc2Ugd2lsbCBub3QgYmUgYWJv cnRlZAogIyBldmVuIGlmIHdlIHN0b3AgdGhlIG5vZGUuCi0kbm9kZS0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlCRUdJTjsKIAkJUFJF UEFSRSBUUkFOU0FDVElPTiAnaW5fcHJvZ3Jlc3NfdHgnOwogCSkpOwotbXkgJGluX3Byb2dy ZXNzX3hpZCA9ICRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCitteSAkaW5f cHJvZ3Jlc3NfeGlkID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwlxcSgKIAkJU0VMRUNU IHRyYW5zYWN0aW9uIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7CiAJKSk7CiAKLW15ICRyZWxm cm96ZW54aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCitteSAkcmVsZnJvemVu eGlkID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKIAlxKHNlbGVjdCByZWxmcm96ZW54aWQg ZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lID0gJ3Rlc3QnKSk7Ci1teSAkZGF0ZnJvemVu eGlkID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorbXkgJGRhdGZyb3plbnhpZCA9 ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJcShzZWxlY3QgZGF0ZnJvemVueGlkIGZyb20g cGdfZGF0YWJhc2Ugd2hlcmUgZGF0bmFtZSA9ICdwb3N0Z3JlcycpKTsKIAogIyBTYW5pdHkg Y2hlY2sgdGhhdCBvdXIgJ3Rlc3QnIHRhYmxlIGhhcyBhIHJlbGZyb3plbnhpZCBuZXdlciB0 aGFuIHRoZQpAQCAtMzI2LDYgKzMzNiw3IEBAIG15ICRkYXRmcm96ZW54aWQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIGZpcnN0IG5vcm1hbCB4aWQuICBXZSByZWx5IG9u IHRoZXNlIGludmFyaWFudHMgaW4gc29tZSBvZiBvdXIgdGVzdHMuCiBpZiAoJGRhdGZyb3pl bnhpZCA8PSAzIHx8ICRkYXRmcm96ZW54aWQgPj0gJHJlbGZyb3plbnhpZCkKIHsKKwkkc2Vz c2lvbi0+Y2xvc2U7CiAJJG5vZGUtPmNsZWFuX25vZGU7CiAJcGxhbiBza2lwX2FsbCA9Pgog CSAgIlhpZCB0aHJlc2hvbGRzIG5vdCBhcyBleHBlY3RlZDogZ290IGRhdGZyb3plbnhpZCA9 ICRkYXRmcm96ZW54aWQsIHJlbGZyb3plbnhpZCA9ICRyZWxmcm96ZW54aWQiOwpAQCAtMzM0 LDE3ICszNDUsMjEgQEAgaWYgKCRkYXRmcm96ZW54aWQgPD0gMyB8fCAkZGF0ZnJvemVueGlk ID49ICRyZWxmcm96ZW54aWQpCiAKICMgRmluZCB3aGVyZSBlYWNoIG9mIHRoZSB0dXBsZXMg aXMgbG9jYXRlZCBvbiB0aGUgcGFnZS4gSWYgYSBwYXJ0aWN1bGFyCiAjIGxpbmUgcG9pbnRl ciBpcyBhIHJlZGlyZWN0IHJhdGhlciB0aGFuIGEgdHVwbGUsIHdlIHJlY29yZCB0aGUgb2Zm c2V0IGFzIC0xLgotbXkgQGxwX29mZiA9IHNwbGl0ICdcbicsICRub2RlLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXEoCitteSAkbHBfb2ZmX3JlcyA9ICRzZXNzaW9uLT5xdWVyeSgK KwlxcSgKIAkgICAgU0VMRUNUIENBU0UgV0hFTiBscF9mbGFncyA9IDIgVEhFTiAtMSBFTFNF IGxwX29mZiBFTkQKIAkgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0 ZXN0JywgJ21haW4nLCAwKSkKICAgICApCi0pOworICAgKTsKK215IEBscF9vZmY7CitwdXNo KEBscF9vZmYsICRfLT5bMF0pIGZvcmVhY2ggQHskbHBfb2ZmX3Jlcy0+e3Jvd3N9fTsKKwog c2NhbGFyIEBscF9vZmYgPT0gJFJPV0NPVU5UIG9yIEJBSUxfT1VUKCJyb3cgb2Zmc2V0IGNv dW50cyBtaXNtYXRjaCIpOwogCiAjIFNhbml0eSBjaGVjayB0aGF0IG91ciAndGVzdCcgdGFi bGUgb24gZGlzayBsYXlvdXQgbWF0Y2hlcyBleHBlY3RhdGlvbnMuICBJZgogIyB0aGlzIGlz IG5vdCBzbywgd2Ugd2lsbCBoYXZlIHRvIHNraXAgdGhlIHRlc3QgdW50aWwgc29tZWJvZHkg dXBkYXRlcyB0aGUgdGVzdAogIyB0byB3b3JrIG9uIHRoaXMgcGxhdGZvcm0uCiskc2Vzc2lv bi0+Y2xvc2U7CiAkbm9kZS0+c3RvcDsKIG15ICRmaWxlOwogb3BlbigkZmlsZSwgJys8Jywg JHJlbHBhdGgpCkBAIC03NTEsMTcgKzc2NiwxOSBAQCBmb3IgKG15ICR0dXBpZHggPSAwOyAk dHVwaWR4IDwgJFJPV0NPVU5UOyAkdHVwaWR4KyspCiBjbG9zZSgkZmlsZSkKICAgb3IgQkFJ TF9PVVQoImNsb3NlIGZhaWxlZDogJCEiKTsKICRub2RlLT5zdGFydDsKKyRzZXNzaW9uLT5y ZWNvbm5lY3Q7CiAKICMgUnVuIHBnX2FtY2hlY2sgYWdhaW5zdCB0aGUgY29ycnVwdCB0YWJs ZSB3aXRoIGVwb2NoPTAsIGNvbXBhcmluZyBhY3R1YWwKICMgY29ycnVwdGlvbiBtZXNzYWdl cyBhZ2FpbnN0IHRoZSBleHBlY3RlZCBtZXNzYWdlcwogJG5vZGUtPmNvbW1hbmRfY2hlY2tz X2FsbCgKIAlbICdwZ19hbWNoZWNrJywgJy0tbm8tZGVwZW5kZW50LWluZGV4ZXMnLCAnLS1w b3J0JyA9PiAkcG9ydCwgJ3Bvc3RncmVzJyBdLAogCTIsIFtAZXhwZWN0ZWRdLCBbXSwgJ0V4 cGVjdGVkIGNvcnJ1cHRpb24gbWVzc2FnZSBvdXRwdXQnKTsKLSRub2RlLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAgICAgICAgICAgICAg ICAgICAgICAgICBDT01NSVQgUFJFUEFSRUQgJ2luX3Byb2dyZXNzX3R4JzsKICAgICAgICAg KSk7CiAKKyRzZXNzaW9uLT5jbG9zZTsKICRub2RlLT50ZWFyZG93bl9ub2RlOwogJG5vZGUt PmNsZWFuX25vZGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19t dWx0aXhhY3RfY29udmVyc2lvbi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0 aXhhY3RfY29udmVyc2lvbi5wbAppbmRleCA4NjdhMDYyMzE1My4uOWE0YzhlZDk4MzkgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lv bi5wbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNp b24ucGwKQEAgLTE1LDYgKzE1LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgTWF0aDo6QmlnSW50OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0zOCwxMCArMzksOCBAQCBteSAkdGVtcGRp ciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwogIyB2ZXJzaW9ucy4KICMK ICMgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjbHVzdGVyIHRvIGNvbm5lY3QgdG8sIHRo ZSBzZWNvbmQgYXJndW1lbnQKLSMgaXMgYSBjbHVzdGVyIHVzaW5nIHRoZSBuZXcgdmVyc2lv bi4gIFdlIG5lZWQgdGhlICdwc3FsJyBiaW5hcnkgZnJvbQotIyB0aGUgbmV3IHZlcnNpb24s IHRoZSBuZXcgY2x1c3RlciBpcyBvdGhlcndpc2UgdW51c2VkLiAgKFdlIG5lZWQgdG8KLSMg dXNlIHRoZSBuZXcgJ3BzcWwnIGJlY2F1c2Ugc29tZSBvZiB0aGUgbW9yZSBhZHZhbmNlZCBi YWNrZ3JvdW5kIHBzcWwKLSMgcGVybCBtb2R1bGUgZmVhdHVyZXMgZGVwZW5kIG9uIGEgZmFp cmx5IHJlY2VudCBwc3FsIHZlcnNpb24uKQorIyBpcyBhIGNsdXN0ZXIgdXNpbmcgdGhlIG5l dyB2ZXJzaW9uLiAgV2UgbmVlZCB0aGUgbGlicHEgbGlicmFyeSBmcm9tCisjIHRoZSBuZXcg dmVyc2lvbiAoZm9yIFNlc3Npb24pLCB0aGUgbmV3IGNsdXN0ZXIgaXMgb3RoZXJ3aXNlIHVu dXNlZC4KIHN1YiBteGFjdF93b3JrbG9hZAogewogCW15ICRub2RlID0gc2hpZnQ7ICAgICAg ICMgQ2x1c3RlciB0byBjb25uZWN0IHRvCkBAIC03OSwxOCArNzgsMjAgQEAgc3ViIG14YWN0 X3dvcmtsb2FkCiAJIyBpbiBlYWNoIGNvbm5lY3Rpb24uCiAJZm9yICgwIC4uICRuY2xpZW50 cykKIAl7Ci0JCSMgVXNlIHRoZSBwc3FsIGJpbmFyeSBmcm9tIHRoZSBuZXcgaW5zdGFsbGF0 aW9uLiAgVGhlCi0JCSMgQmFja2dyb3VuZFBzcWwgZnVuY3Rpb25hbGl0eSBkb2Vzbid0IHdv cmsgd2l0aCBvbGRlciBwc3FsCi0JCSMgdmVyc2lvbnMuCi0JCW15ICRjb25uID0gJGJpbm5v ZGUtPmJhY2tncm91bmRfcHNxbCgKLQkJCScnLAotCQkJY29ubnN0ciA9PiAkbm9kZS0+Y29u bnN0cigncG9zdGdyZXMnKSwKLQkJCXRpbWVvdXQgPT4gJGNvbm5lY3Rpb25fdGltZW91dF9z ZWNzKTsKKwkJIyBDb25uZWN0IHRvIHRoZSAob2xkKSBjbHVzdGVyLCBidXQgbG9hZCBsaWJw cSBmcm9tIHRoZSBuZXcKKwkJIyBpbnN0YWxsYXRpb246IHRoZSBTZXNzaW9uIEZGSSB3cmFw cGVyIGJpbmRzIGxpYnBxIGZ1bmN0aW9ucyB0aGF0CisJCSMgbWF5IG5vdCBiZSBwcmVzZW50 IGluIHRoZSBvbGQgaW5zdGFsbGF0aW9uJ3MgbGlicHEuICBQYXNzaW5nIHRoZQorCQkjIG5v ZGUgKHJhdGhlciB0aGFuIGFuIGV4cGxpY2l0IGxpYmRpcikgbGV0cyBTZXNzaW9uIGxvY2F0 ZSB0aGUKKwkJIyBsaWJyYXJ5IGNvcnJlY3RseSBvbiBhbGwgcGxhdGZvcm1zLCBpbmNsdWRp bmcgV2luZG93cyB3aGVyZSBpdAorCQkjIGxpdmVzIGluIGJpbmRpci4KKwkJbXkgJGNvbm4g PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcoCisJCQlub2RlID0+ICRiaW5ub2Rl LAorCQkJY29ubnN0ciA9PiAkbm9kZS0+Y29ubnN0cigncG9zdGdyZXMnKSk7CiAKLQkJJGNv bm4tPnF1ZXJ5X3NhZmUoIlNFVCBsb2dfc3RhdGVtZW50PW5vbmUiLCB2ZXJib3NlID0+ICR2 ZXJib3NlKQorCQkkY29ubi0+ZG8oIlNFVCBsb2dfc3RhdGVtZW50PW5vbmUiKQogCQkgIHVu bGVzcyAkdmVyYm9zZTsKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIlNFVCBlbmFibGVfc2Vxc2Nh bj1vZmYiLCB2ZXJib3NlID0+ICR2ZXJib3NlKTsKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJF R0lOIiwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7CisJCSRjb25uLT5kbygiU0VUIGVuYWJsZV9z ZXFzY2FuPW9mZiIpOworCQkkY29ubi0+ZG8oIkJFR0lOIik7CiAKIAkJcHVzaChAY29ubmVj dGlvbnMsICRjb25uKTsKIAl9CkBAIC0xMDgsOSArMTA5LDkgQEAgc3ViIG14YWN0X3dvcmts b2FkCiAJCW15ICRjb25uID0gJGNvbm5lY3Rpb25zWyAkaSAlICRuY2xpZW50cyBdOwogCiAJ CW15ICRzcWwgPSAoJGkgJSAkYWJvcnRfZXZlcnkgPT0gMCkgPyAiQUJPUlQiIDogIkNPTU1J VCI7Ci0JCSRjb25uLT5xdWVyeV9zYWZlKCRzcWwsIHZlcmJvc2UgPT4gJHZlcmJvc2UpOwor CQkkY29ubi0+ZG8oJHNxbCk7CiAKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIiwgdmVy Ym9zZSA9PiAkdmVyYm9zZSk7CisJCSRjb25uLT5kbygiQkVHSU4iKTsKIAkJaWYgKCRpICUg JHVwZGF0ZV9ldmVyeSA9PSAwKQogCQl7CiAJCQkkc3FsID0gcXFbCkBAIC0xMjYsMTIgKzEy NywxMiBAQCBzdWIgbXhhY3Rfd29ya2xvYWQKIAkJCSAgKSBhcyB4CiAJCQldOwogCQl9Ci0J CSRjb25uLT5xdWVyeV9zYWZlKCRzcWwsIHZlcmJvc2UgPT4gJHZlcmJvc2UpOworCQkkY29u bi0+ZG8oJHNxbCk7CiAJfQogCiAJZm9yIG15ICRjb25uIChAY29ubmVjdGlvbnMpCiAJewot CQkkY29ubi0+cXVpdCgpOworCQkkY29ubi0+Y2xvc2U7CiAJfQogCiAJJG5vZGUtPnN0b3A7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMV9wYXNzd29yZC5w bCBiL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3JkLnBsCmluZGV4IGZj YTc4ZmM0ZDZhLi5kNmNmODRiMDFkOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvYXV0aGVudGlj YXRpb24vdC8wMDFfcGFzc3dvcmQucGwKKysrIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24v dC8wMDFfcGFzc3dvcmQucGwKQEAgLTEzLDYgKzEzLDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiBpZiAoISR1c2VfdW5peF9zb2NrZXRzKQpA QCAtMTkzLDM2ICsxOTQsMTggQEAgbXkgJHJlcyA9ICRub2RlLT5zYWZlX3BzcWwoCiAJIFdI RVJFIHJvbG5hbWUgPSAnc2NyYW1fcm9sZV9pdGVyJyIpOwogaXMoJHJlcywgJ1NDUkFNLVNI QS0yNTYkMTAyNDonLCAnc2NyYW1faXRlcmF0aW9ucyBpbiBzZXJ2ZXIgc2lkZSBST0xFJyk7 CiAKLSMgSWYgd2UgZG9uJ3QgaGF2ZSBJTzo6UHR5LCBmb3JnZXQgaXQsIGJlY2F1c2UgSVBD OjpSdW4gZGVwZW5kcyBvbiB0aGF0Ci0jIHRvIHN1cHBvcnQgcHR5IGNvbm5lY3Rpb25zLiBB bHNvIHNraXAgaWYgSVBDOjpSdW4gaXNuJ3QgYXQgbGVhc3QgMC45OAotIyBhcyBlYXJsaWVy IHZlcnNpb24gY2F1c2UgdGhlIHNlc3Npb24gdG8gdGltZSBvdXQuCi1TS0lQOgotewotCXNr aXAgIklPOjpQdHkgYW5kIElQQzo6UnVuID49IDAuOTggcmVxdWlyZWQiLCAxCi0JICB1bmxl c3MgZXZhbCB7IHJlcXVpcmUgSU86OlB0eTsgSVBDOjpSdW4tPlZFUlNJT04oJzAuOTgnKTsg fTsKKyMgc2V0IHBhc3N3b3JkIHVzaW5nIFBRY2hhbmdlUGFzc3dvcmQKK215ICRzZXNzaW9u ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3IChub2RlID0+ICRub2RlKTsKIAot CSMgQWx0ZXIgdGhlIHBhc3N3b3JkIG9uIHRoZSBjcmVhdGVkIHJvbGUgdXNpbmcgXHBhc3N3 b3JkIGluIHBzcWwgdG8gZW5zdXJlCi0JIyB0aGF0IGNsaWVudHNpZGUgcGFzc3dvcmQgY2hh bmdlcyB1c2UgdGhlIHNjcmFtX2l0ZXJhdGlvbnMgdmFsdWUgd2hlbgotCSMgY2FsY3VsYXRp bmcgU0NSQU0gc2VjcmV0cy4KLQlteSAkc2Vzc2lvbiA9ICRub2RlLT5pbnRlcmFjdGl2ZV9w c3FsKCdwb3N0Z3JlcycpOwotCi0JJHNlc3Npb24tPnNldF9xdWVyeV90aW1lcl9yZXN0YXJ0 KCk7Ci0JJHNlc3Npb24tPnF1ZXJ5KCJTRVQgcGFzc3dvcmRfZW5jcnlwdGlvbj0nc2NyYW0t c2hhLTI1Nic7Iik7Ci0JJHNlc3Npb24tPnF1ZXJ5KCJTRVQgc2NyYW1faXRlcmF0aW9ucz00 MjsiKTsKLQkkc2Vzc2lvbi0+cXVlcnlfdW50aWwocXIvRW50ZXIgbmV3IHBhc3N3b3JkLywK LQkJIlxccGFzc3dvcmQgc2NyYW1fcm9sZV9pdGVyXG4iKTsKLQkkc2Vzc2lvbi0+cXVlcnlf dW50aWwocXIvRW50ZXIgaXQgYWdhaW4vLCAicGFzc1xuIik7Ci0JJHNlc3Npb24tPnF1ZXJ5 X3VudGlsKHFyL3Bvc3RncmVzPSMgLywgInBhc3NcbiIpOwotCSRzZXNzaW9uLT5xdWl0Owot Ci0JJHJlcyA9ICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsCiskc2Vzc2lvbi0+ ZG8oIlNFVCBwYXNzd29yZF9lbmNyeXB0aW9uPSdzY3JhbS1zaGEtMjU2JzsiLAorCQkJICJT RVQgc2NyYW1faXRlcmF0aW9ucz00MjsiKTsKKyRyZXMgPSAkc2Vzc2lvbi0+c2V0X3Bhc3N3 b3JkKCJzY3JhbV9yb2xlX2l0ZXIiLCJwYXNzIik7CitpcygkcmVzLT57c3RhdHVzfSwgUEdS RVNfQ09NTUFORF9PSywgInNldCBwYXNzd29yZCBvayIpOworJHJlcyA9ICRzZXNzaW9uLT5x dWVyeV9vbmV2YWwoCiAJCSJTRUxFQ1Qgc3Vic3RyKHJvbHBhc3N3b3JkLDEsMTcpCiAJCSBG Uk9NIHBnX2F1dGhpZAogCQkgV0hFUkUgcm9sbmFtZSA9ICdzY3JhbV9yb2xlX2l0ZXInIik7 Ci0JaXMoJHJlcywgJ1NDUkFNLVNIQS0yNTYkNDI6JywKLQkJJ3NjcmFtX2l0ZXJhdGlvbnMg aW4gcHNxbCBccGFzc3dvcmQgY29tbWFuZCcpOwotfQoraXMoJHJlcywgJ1NDUkFNLVNIQS0y NTYkNDI6JywgJ3NjcmFtX2l0ZXJhdGlvbnMgY29ycmVjdCcpOwogCiAjIENyZWF0ZSBhIGRh dGFiYXNlIHRvIHRlc3QgcmVndWxhciBleHByZXNzaW9uLgogJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQ1JFQVRFIGRhdGFiYXNlIHJlZ2V4X3Rlc3RkYjsiKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBsIGIvc3JjL3Rl c3QvYXV0aGVudGljYXRpb24vdC8wMDdfcHJlX2F1dGgucGwKaW5kZXggMDQwNjNmNDcyMWQu LjBkNDc2ZjA4MGEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAw N19wcmVfYXV0aC5wbAorKysgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwN19wcmVf YXV0aC5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRB TCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFRlc3Q6Ok1vcmU7CkBAIC0zNiwy NCArMzcsMjcgQEAgaWYgKCEkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9p bnRzJykpCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHMnKTsKIAogIyBDb25uZWN0IHRvIHRoZSBzZXJ2ZXIgYW5kIGlu amVjdCBhIHdhaXRwb2ludC4KLW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnKTsKLSRwc3FsLT5xdWVyeV9zYWZlKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2luaXQtcHJlLWF1dGgnLCAnd2FpdCcpIik7CitteSAkc2Vzc2lvbiA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzZXNzaW9u LT5kbygiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbml0LXByZS1hdXRoJywg J3dhaXQnKSIpOwogCiAjIEZyb20gdGhpcyBwb2ludCBvbiwgYWxsIG5ldyBjb25uZWN0aW9u cyB3aWxsIGhhbmcgZHVyaW5nIHN0YXJ0dXAsIGp1c3QgYmVmb3JlCi0jIGF1dGhlbnRpY2F0 aW9uLiBVc2UgdGhlICRwc3FsIGNvbm5lY3Rpb24gaGFuZGxlIGZvciBzZXJ2ZXIgaW50ZXJh Y3Rpb24uCi1teSAkY29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywg d2FpdCA9PiAwKTsKKyMgYXV0aGVudGljYXRpb24uIFVzZSB0aGUgJHNlc3Npb24gY29ubmVj dGlvbiBoYW5kbGUgZm9yIHNlcnZlciBpbnRlcmFjdGlvbi4KK215ICRjb25uID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUsIHdhaXQgPT4gMCk7CiAK ICMgV2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gc2hvdyB1cCBpbiBwZ19zdGF0X2FjdGl2 aXR5LCB3aXRoIHRoZSB3YWl0X2V2ZW50Ci0jIG9mIHRoZSBpbmplY3Rpb24gcG9pbnQuCisj IG9mIHRoZSBpbmplY3Rpb24gcG9pbnQuIFdlIG5lZWQgdG8gcG9sbCB0aGUgYXN5bmMgY29u bmVjdGlvbiB0byBkcml2ZSBpdCBmb3J3YXJkLgogbXkgJHBpZDsKIHdoaWxlICgxKQogewot CSRwaWQgPSAkcHNxbC0+cXVlcnkoCisJIyBEcml2ZSB0aGUgYXN5bmMgY29ubmVjdGlvbiBm b3J3YXJkIC0gaXQgd29uJ3QgcHJvZ3Jlc3Mgd2l0aG91dCBwb2xsaW5nCisJJGNvbm4tPnBv bGxfY29ubmVjdCgpOworCisJJHBpZCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJCXFx e1NFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5CiAgIFdIRVJFIGJhY2tlbmRfdHlw ZSA9ICdjbGllbnQgYmFja2VuZCcKICAgICBBTkQgc3RhdGUgPSAnc3RhcnRpbmcnCi0gICAg QU5EIHdhaXRfZXZlbnQgPSAnaW5pdC1wcmUtYXV0aCc7fSk7Ci0JbGFzdCBpZiAkcGlkIG5l ICIiOworICAgIEFORCB3YWl0X2V2ZW50ID0gJ2luaXQtcHJlLWF1dGgnO30sIDEpOworCWxh c3QgaWYgZGVmaW5lZCAkcGlkICYmICRwaWQgbmUgIiI7CiAKIAl1c2xlZXAoMTAwXzAwMCk7 CiB9CkBAIC02MiwyNCArNjYsMjUgQEAgbm90ZSAiYmFja2VuZCAkcGlkIGlzIGF1dGhlbnRp Y2F0aW5nIjsKIG9rKDEsICdhdXRoZW50aWNhdGluZyBjb25uZWN0aW9ucyBhcmUgcmVjb3Jk ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eScpOwogCiAjIERldGFjaCB0aGUgd2FpdHBvaW50IGFu ZCB3YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBjb21wbGV0ZS4KLSRwc3FsLT5xdWVyeV9z YWZlKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2luaXQtcHJlLWF1dGgnKTsi KTsKKyRzZXNzaW9uLT5kbygiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbml0 LXByZS1hdXRoJykiKTsKICRjb25uLT53YWl0X2Nvbm5lY3QoKTsKIAogIyBNYWtlIHN1cmUg dGhlIHBnc3RhdCBlbnRyeSBpcyB1cGRhdGVkIGV2ZW50dWFsbHkuCiB3aGlsZSAoMSkKIHsK IAlteSAkc3RhdGUgPQotCSAgJHBzcWwtPnF1ZXJ5KCJTRUxFQ1Qgc3RhdGUgRlJPTSBwZ19z dGF0X2FjdGl2aXR5IFdIRVJFIHBpZCA9ICRwaWQ7Iik7Ci0JbGFzdCBpZiAkc3RhdGUgZXEg ImlkbGUiOworCSAgJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwkJIlNFTEVDVCBzdGF0ZSBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgcGlkID0gJHBpZCIsIDEpOworCWxhc3QgaWYg ZGVmaW5lZCAkc3RhdGUgJiYgJHN0YXRlIGVxICJpZGxlIjsKIAotCW5vdGUgInN0YXRlIGZv ciBiYWNrZW5kICRwaWQgaXMgJyRzdGF0ZSc7IHdhaXRpbmcgZm9yICdpZGxlJy4uLiI7CisJ bm90ZSAic3RhdGUgZm9yIGJhY2tlbmQgJHBpZCBpcyAnIiAuICgkc3RhdGUgLy8gJ3VuZGVm JykgLiAiJzsgd2FpdGluZyBmb3IgJ2lkbGUnLi4uIjsKIAl1c2xlZXAoMTAwXzAwMCk7CiB9 CiAKIG9rKDEsICdhdXRoZW50aWNhdGVkIGNvbm5lY3Rpb25zIHJlYWNoIGlkbGUgc3RhdGUg aW4gcGdfc3RhdF9hY3Rpdml0eScpOwogCi0kcHNxbC0+cXVlcnlfc2FmZSgiU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdpbml0LXByZS1hdXRoJyk7Iik7Ci0kcHNxbC0+cXVp dCgpOwotJGNvbm4tPnF1aXQoKTsKKyRzZXNzaW9uLT5kbygiU0VMRUNUIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdpbml0LXByZS1hdXRoJykiKTsKKyRzZXNzaW9uLT5jbG9zZSgpOwor JGNvbm4tPmNsb3NlKCk7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2VydmVyLnBsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2VydmVyLnBsCmluZGV4IDE2MTlmYmZm ZDQ1Li4zZDRlYjFiZmUzMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92 YWxpZGF0b3IvdC8wMDFfc2VydmVyLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhf dmFsaWRhdG9yL3QvMDAxX3NlcnZlci5wbApAQCAtMTIsNiArMTIsNyBAQCB1c2Ugd2Fybmlu Z3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgSlNPTjo6UFAgICAgIHF3KGVuY29kZV9qc29uKTsK IHVzZSBNSU1FOjpCYXNlNjQgcXcoZW5jb2RlX2Jhc2U2NCk7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTU3LDcgKzU4 LDcgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIFVTRVIgdGVzdGFs dDsnKTsKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBVU0VSIHRlc3Rw YXJhbTsnKTsKIAogIyBTYXZlIGEgYmFja2dyb3VuZCBjb25uZWN0aW9uIGZvciBsYXRlciBj b25maWd1cmF0aW9uIGNoYW5nZXMuCi1teSAkYmdjb25uID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKK215ICRiZ2Nvbm4gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIG15ICR3ZWJzZXJ2ZXIgPSBPQXV0aDo6U2Vy dmVyLT5uZXcoKTsKICR3ZWJzZXJ2ZXItPnJ1bigpOwpAQCAtMTI0LDExICsxMjUsMTEgQEAg JGxvZ19zdGFydCA9CiAgICRub2RlLT53YWl0X2Zvcl9sb2cocXIvcmVsb2FkaW5nIGNvbmZp Z3VyYXRpb24gZmlsZXMvLCAkbG9nX3N0YXJ0KTsKIAogIyBDaGVjayBwZ19oYmFfZmlsZV9y dWxlcygpIHN1cHBvcnQuCi1teSAkY29udGVudHMgPSAkYmdjb25uLT5xdWVyeV9zYWZlKAor bXkgJGNvbnRlbnRzID0gJGJnY29ubi0+cXVlcnkoCiAJcXEoU0VMRUNUIHJ1bGVfbnVtYmVy LCBhdXRoX21ldGhvZCwgb3B0aW9ucwogCQkgRlJPTSBwZ19oYmFfZmlsZV9ydWxlcwogCQkg T1JERVIgQlkgcnVsZV9udW1iZXI7KSk7Ci1pcyggJGNvbnRlbnRzLAoraXMoICRjb250ZW50 cy0+e3BzcWxvdXR9LAogCXFxezF8b2F1dGh8XHtpc3N1ZXI9JGlzc3Vlciwic2NvcGU9b3Bl bmlkIHBvc3RncmVzIix2YWxpZGF0b3I9dmFsaWRhdG9yXH0KIDJ8b2F1dGh8XHtpc3N1ZXI9 JGlzc3Vlci8ud2VsbC1rbm93bi9vYXV0aC1hdXRob3JpemF0aW9uLXNlcnZlci9hbHRlcm5h dGUsInNjb3BlPW9wZW5pZCBwb3N0Z3JlcyBhbHQiLHZhbGlkYXRvcj12YWxpZGF0b3JcfQog M3xvYXV0aHxce2lzc3Vlcj0kaXNzdWVyL3BhcmFtLCJzY29wZT1vcGVuaWQgcG9zdGdyZXMi LHZhbGlkYXRvcj12YWxpZGF0b3JcfX0sCkBAIC01NTEsNyArNTUyLDcgQEAgJGNvbW1vbl9j b25uc3RyID0KICAgImRibmFtZT1wb3N0Z3JlcyBvYXV0aF9pc3N1ZXI9JGlzc3Vlci8ud2Vs bC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbiBvYXV0aF9zY29wZT0nJyBvYXV0aF9jbGll bnRfaWQ9ZjAyYzYzNjEtMDYzNSI7CiAKICMgTWlzYmVoYXZpbmcgdmFsaWRhdG9ycyBtdXN0 IGZhaWwgc2h1dC4KLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBTRVQgb2F1 dGhfdmFsaWRhdG9yLmF1dGhuX2lkIFRPICcnIik7CiskYmdjb25uLT5kbygiQUxURVIgU1lT VEVNIFNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQgVE8gJyciKTsKICRub2RlLT5yZWxv YWQ7CiAkbG9nX3N0YXJ0ID0KICAgJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRpbmcg Y29uZmlndXJhdGlvbiBmaWxlcy8sICRsb2dfc3RhcnQpOwpAQCAtNTYyLDE1ICs1NjMsMTUg QEAgJG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL09BdXRo IGJlYXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvLAogCWxvZ19saWtlID0+IFsKIAkJcXIv Y29ubmVjdGlvbiBhdXRoZW50aWNhdGVkOiBpZGVudGl0eT0iIi8sCi0JCXFyL0ZBVEFMOlxz K09BdXRoIGJlYXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvLAorCQlxci9GQVRBTDogKCBb QS1aMC05XSs6KT8gT0F1dGggYmVhcmVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZC8sCiAJCXFy L0RFVEFJTDpccytWYWxpZGF0b3IgcHJvdmlkZWQgbm8gaWRlbnRpdHkvLAogCV0pOwogCiAj IEV2ZW4gaWYgYSB2YWxpZGF0b3IgYXV0aGVudGljYXRlcyB0aGUgdXNlciwgaWYgdGhlIHRv a2VuIGlzbid0IGNvbnNpZGVyZWQKICMgdmFsaWQsIHRoZSBjb25uZWN0aW9uIGZhaWxzLgot JGJnY29ubi0+cXVlcnlfc2FmZSgKKyRiZ2Nvbm4tPmRvKAogCSJBTFRFUiBTWVNURU0gU0VU IG9hdXRoX3ZhbGlkYXRvci5hdXRobl9pZCBUTyAndGVzdFxAZXhhbXBsZS5vcmcnIik7Ci0k Ymdjb25uLT5xdWVyeV9zYWZlKAorJGJnY29ubi0+ZG8oCiAJIkFMVEVSIFNZU1RFTSBTRVQg b2F1dGhfdmFsaWRhdG9yLmF1dGhvcml6ZV90b2tlbnMgVE8gZmFsc2UiKTsKICRub2RlLT5y ZWxvYWQ7CiAkbG9nX3N0YXJ0ID0KQEAgLTU4Miw3ICs1ODMsNyBAQCAkbm9kZS0+Y29ubmVj dF9mYWlscygKIAlleHBlY3RlZF9zdGRlcnIgPT4gcXIvT0F1dGggYmVhcmVyIGF1dGhlbnRp Y2F0aW9uIGZhaWxlZC8sCiAJbG9nX2xpa2UgPT4gWwogCQlxci9jb25uZWN0aW9uIGF1dGhl bnRpY2F0ZWQ6IGlkZW50aXR5PSJ0ZXN0XEBleGFtcGxlXC5vcmciLywKLQkJcXIvRkFUQUw6 XHMrT0F1dGggYmVhcmVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZC8sCisJCXFyL0ZBVEFMOiAo IFtBLVowLTldKzopPyBPQXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLywKIAkJ cXIvREVUQUlMOlxzK1ZhbGlkYXRvciBmYWlsZWQgdG8gYXV0aG9yaXplIHRoZSBwcm92aWRl ZCB0b2tlbi8sCiAJXSk7CiAKQEAgLTY2NCw4ICs2NjUsOCBAQCBsb2NhbCBhbGwgdGVzdHBh cmFtIG9hdXRoIGlzc3Vlcj0iJGlzc3VlciIgc2NvcGU9IiIgZGVsZWdhdGVfaWRlbnRfbWFw cGluZz0xCiB9KTsKIAogIyBUbyBzdGFydCwgaGF2ZSB0aGUgdmFsaWRhdG9yIHVzZSB0aGUg cm9sZSBuYW1lcyBhcyBhdXRobiBJRHMuCi0kYmdjb25uLT5xdWVyeV9zYWZlKCJBTFRFUiBT WVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lkIik7Ci0kYmdjb25uLT5xdWVy eV9zYWZlKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhvcml6ZV90 b2tlbnMiKTsKKyRiZ2Nvbm4tPmRvKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRh dG9yLmF1dGhuX2lkIik7CiskYmdjb25uLT5kbygiQUxURVIgU1lTVEVNIFJFU0VUIG9hdXRo X3ZhbGlkYXRvci5hdXRob3JpemVfdG9rZW5zIik7CiAKICRub2RlLT5yZWxvYWQ7CiAkbG9n X3N0YXJ0ID0KQEAgLTY4Miw3ICs2ODMsNyBAQCAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAll eHBlY3RlZF9zdGRlcnIgPT4gcXIvT0F1dGggYmVhcmVyIGF1dGhlbnRpY2F0aW9uIGZhaWxl ZC8pOwogCiAjIEhhdmUgdGhlIHZhbGlkYXRvciBpZGVudGlmeSB0aGUgZW5kIHVzZXIgYXMg dXNlckBleGFtcGxlLmNvbS4KLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoCiskYmdjb25uLT5kbygK IAkiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQgVE8gJ3VzZXJc QGV4YW1wbGUuY29tJyIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQpAQCAtNzA2 LDcgKzcwNyw3IEBAICRub2RlLT5jb25uZWN0X29rKAogCWV4cGVjdGVkX3N0ZGVyciA9Pgog CSAgcXJAVmlzaXQgaHR0cHM6Ly9leGFtcGxlXC5jb20vIGFuZCBlbnRlciB0aGUgY29kZTog cG9zdGdyZXN1c2VyQCk7CiAKLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBS RVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsKKyRiZ2Nvbm4tPmRvKCJBTFRFUiBT WVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lkIik7CiAkbm9kZS0+cmVsb2Fk OwogJGxvZ19zdGFydCA9CiAgICRub2RlLT53YWl0X2Zvcl9sb2cocXIvcmVsb2FkaW5nIGNv bmZpZ3VyYXRpb24gZmlsZXMvLCAkbG9nX3N0YXJ0KTsKQEAgLTgyOSw3ICs4MzAsNyBAQCAk dXNlciA9ICJ0ZXN0YWx0IjsKICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCSJ1c2VyPSR1c2Vy IGRibmFtZT1wb3N0Z3JlcyBvYXV0aF9pc3N1ZXI9JGlzc3Vlci8ud2VsbC1rbm93bi9vYXV0 aC1hdXRob3JpemF0aW9uLXNlcnZlci9hbHRlcm5hdGUgb2F1dGhfY2xpZW50X2lkPWYwMmM2 MzYxLTA2MzYiLAogCSJmYWlsX3ZhbGlkYXRvciBpcyB1c2VkIGZvciAkdXNlciIsCi0JZXhw ZWN0ZWRfc3RkZXJyID0+IHFyL0ZBVEFMOlxzK2ZhaWxfdmFsaWRhdG9yOiBzZW50aW5lbCBl cnJvci8pOworCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9GQVRBTDogKCBbQS1aMC05XSs6KT8g ZmFpbF92YWxpZGF0b3I6IHNlbnRpbmVsIGVycm9yLyk7CiAKICMKICMgVGVzdCBBQkkgY29t cGF0aWJpbGl0eSBtYWdpYyBtYXJrZXIKQEAgLTg0OSw3ICs4NTAsNyBAQCAkbm9kZS0+Y29u bmVjdF9mYWlscygKIAkidXNlcj10ZXN0IGRibmFtZT1wb3N0Z3JlcyBvYXV0aF9pc3N1ZXI9 JGlzc3Vlci8ud2VsbC1rbm93bi9vYXV0aC1hdXRob3JpemF0aW9uLXNlcnZlci9hbHRlcm5h dGUgb2F1dGhfY2xpZW50X2lkPWYwMmM2MzYxLTA2MzYiLAogCSJtYWdpY192YWxpZGF0b3Ig aXMgdXNlZCBmb3IgJHVzZXIiLAogCWV4cGVjdGVkX3N0ZGVyciA9PgotCSAgcXIvRkFUQUw6 XHMrT0F1dGggdmFsaWRhdG9yIG1vZHVsZSAibWFnaWNfdmFsaWRhdG9yIjogbWFnaWMgbnVt YmVyIG1pc21hdGNoLworCSAgcXIvRkFUQUw6ICggW0EtWjAtOV0rOik/IE9BdXRoIHZhbGlk YXRvciBtb2R1bGUgIm1hZ2ljX3ZhbGlkYXRvciI6IG1hZ2ljIG51bWJlciBtaXNtYXRjaC8K ICk7CiAkbm9kZS0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2Fpby90LzAwMV9haW8ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fp by5wbAppbmRleCA2M2NhZGQ2NGMxNS4uOWJmYzMxODQxMGUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9haW8vdC8wMDFfYWlvLnBsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9haW8vdC8wMDFfYWlvLnBsCkBAIC00LDYgKzQsNyBAQCB1c2Ugc3RyaWN0Owog dXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTYyLDE5ICs2MywxOSBA QCBzdWIgcHNxbF9saWtlCiB7CiAJbG9jYWwgJFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRl c3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKIAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7Ci0JbXkg JHBzcWwgPSBzaGlmdDsKKwlteSAkc2Vzc2lvbiA9IHNoaWZ0OwogCW15ICRuYW1lID0gc2hp ZnQ7CiAJbXkgJHNxbCA9IHNoaWZ0OwogCW15ICRleHBlY3RlZF9zdGRvdXQgPSBzaGlmdDsK IAlteSAkZXhwZWN0ZWRfc3RkZXJyID0gc2hpZnQ7Ci0JbXkgKCRjbWRyZXQsICRvdXRwdXQp OwogCi0JKCRvdXRwdXQsICRjbWRyZXQpID0gJHBzcWwtPnF1ZXJ5KCRzcWwpOworCW15ICRy ZXMgPSAkc2Vzc2lvbi0+cXVlcnkoJHNxbCk7CisJbXkgJG91dHB1dCA9ICRyZXMtPntwc3Fs b3V0fTsKIAogCWxpa2UoJG91dHB1dCwgJGV4cGVjdGVkX3N0ZG91dCwgIiRpb19tZXRob2Q6 ICRuYW1lOiBleHBlY3RlZCBzdGRvdXQiKTsKLQlsaWtlKCRwc3FsLT57c3RkZXJyfSwgJGV4 cGVjdGVkX3N0ZGVyciwKKwlsaWtlKCRzZXNzaW9uLT5nZXRfc3RkZXJyKCksICRleHBlY3Rl ZF9zdGRlcnIsCiAJCSIkaW9fbWV0aG9kOiAkbmFtZTogZXhwZWN0ZWQgc3RkZXJyIik7Ci0J JHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHNlc3Npb24tPmNsZWFyX3N0ZGVycigpOwogCiAJ cmV0dXJuICRvdXRwdXQ7CiB9CkBAIC04NywxNyArODgsMTUgQEAgc3ViIHF1ZXJ5X3dhaXRf YmxvY2sKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6 TGV2ZWwgKyAxOwogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9IHNoaWZ0 OwotCW15ICRwc3FsID0gc2hpZnQ7CisJbXkgJHNlc3Npb24gPSBzaGlmdDsKIAlteSAkbmFt ZSA9IHNoaWZ0OwogCW15ICRzcWwgPSBzaGlmdDsKIAlteSAkd2FpdGZvciA9IHNoaWZ0Owog CW15ICR3YWl0X2N1cnJlbnRfc2Vzc2lvbiA9IHNoaWZ0OwogCi0JbXkgJHBpZCA9ICRwc3Fs LT5xdWVyeV9zYWZlKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOworCW15ICRwaWQgPSAk c2Vzc2lvbi0+YmFja2VuZF9waWQoKTsKIAotCSRwc3FsLT57c3RkaW59IC49IHFxKCRzcWw7 XG4pOwotCSRwc3FsLT57cnVufS0+cHVtcF9uYigpOwotCW5vdGUgImlzc3VlZCBzcWw6ICRz cWw7XG4iOworCSRzZXNzaW9uLT5kb19hc3luYygkc3FsKTsKIAlvaygxLCAiJGlvX21ldGhv ZDogJG5hbWU6IGlzc3VlZCBzcWwiKTsKIAogCW15ICR3YWl0cXVlcnk7CkBAIC0xNjMsNyAr MTYyLDcgQEAgc3ViIHRlc3RfaGFuZGxlCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15 ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCSMgbGVhayB3YXJu aW5nOiBpbXBsaWNpdCB4YWN0CiAJcHNxbF9saWtlKApAQCAtMjY5LDcgKzI2OCw3IEBAIHN1 YiB0ZXN0X2JhdGNobW9kZQogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9 IHNoaWZ0OwogCi0JbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkjIEluIGEgYnVpbGQgd2l0aCBS RUxDQUNIRV9GT1JDRV9SRUxFQVNFIGFuZCBDQVRDQUNIRV9GT1JDRV9SRUxFQVNFLCBqdXN0 CiAJIyB1c2luZyBTRUxFQ1QgYmF0Y2hfc3RhcnQoKSBjYXVzZXMgc3B1cmlvdXMgdGVzdCBm YWlsdXJlcywgYmVjYXVzZSB0aGUKQEAgLTMyOSw3ICszMjgsNyBAQCBzdWIgdGVzdF9pb19l cnJvcgogCW15ICRub2RlID0gc2hpZnQ7CiAJbXkgKCRyZXQsICRvdXRwdXQpOwogCi0JbXkg JHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0 b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiAKIAkkcHNxbC0+cXVlcnlfc2FmZSgKIAkJcXEoCkBAIC0zODEs OCArMzgwLDggQEAgc3ViIHRlc3Rfc3RhcnR3YWl0X2lvCiAJbXkgJG5vZGUgPSBzaGlmdDsK IAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbF9hID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotCW15ICRwc3FsX2Ig PSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4g MCk7CisJbXkgJHBzcWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKKwlteSAkcHNxbF9iID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAKIAkjIyMgVmVyaWZ5IGJlaGF2aW9yIGZvciBub3Jt YWwgdGFibGVzCkBAIC00NDEsOCArNDQwLDggQEAgc3ViIHRlc3Rfc3RhcnR3YWl0X2lvCiAK IAogCSMgQmVjYXVzZSB0aGUgSU8gd2FzIHRlcm1pbmF0ZWQsIGJ1dCBub3QgbWFya2VkIGFz IHZhbGlkLCBzZWNvbmQgc2Vzc2lvbiBzaG91bGQgZ2V0IHRoZSByaWdodCB0byBzdGFydCBp bwotCXB1bXBfdW50aWwoJHBzcWxfYi0+e3J1bn0sICRwc3FsX2ItPnt0aW1lb3V0fSwgXCRw c3FsX2ItPntzdGRvdXR9LCBxci90Lyk7Ci0Jb2soMSwgIiRpb19tZXRob2Q6IGJsb2NraW5n IHN0YXJ0IGJ1ZmZlciBpbywgY2FuIHN0YXJ0IGlvIik7CisJbGlrZSgkcHNxbF9iLT5nZXRf YXN5bmNfcmVzdWx0KCktPntwc3Fsb3V0fSwgcXIvdC8sCisJCSIkaW9fbWV0aG9kOiBibG9j a2luZyBzdGFydCBidWZmZXIgaW8sIGNhbiBzdGFydCBpbyIpOwogCiAJIyB0ZXJtaW5hdGUg dGhlIElPIGFnYWluCiAJJHBzcWxfYi0+cXVlcnlfc2FmZSgKQEAgLTQ3OSw4ICs0NzgsOCBA QCBzdWIgdGVzdF9zdGFydHdhaXRfaW8KIAkJcXIvXiQvKTsKIAogCSMgQmVjYXVzZSB0aGUg SU8gd2FzIHRlcm1pbmF0ZWQsIGFuZCBtYXJrZWQgYXMgdmFsaWQsIHNlY29uZCBzZXNzaW9u IHNob3VsZCBjb21wbGV0ZSBidXQgbm90IG5lZWQgaW8KLQlwdW1wX3VudGlsKCRwc3FsX2It PntydW59LCAkcHNxbF9iLT57dGltZW91dH0sIFwkcHNxbF9iLT57c3Rkb3V0fSwgcXIvZi8p OwotCW9rKDEsICIkaW9fbWV0aG9kOiBibG9ja2luZyBzdGFydCBidWZmZXIgaW8sIG5vIG5l ZWQgdG8gc3RhcnQgaW8iKTsKKwlsaWtlKCRwc3FsX2ItPmdldF9hc3luY19yZXN1bHQoKS0+ e3BzcWxvdXR9LCBxci9mLywKKwkJIiRpb19tZXRob2Q6IGJsb2NraW5nIHN0YXJ0IGJ1ZmZl ciBpbywgbm8gbmVlZCB0byBzdGFydCBpbyIpOwogCiAJIyBidWZmZXIgaXMgdmFsaWQgbm93 LCBtYWtlIGl0IGludmFsaWQgYWdhaW4KIAkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKFNFTEVD VCBidWZmZXJfY3JlYXRlX3RveSgndGJsX29rJywgMSk7KSk7CkBAIC01NTgsOCArNTU3LDgg QEAgc3ViIHRlc3RfY29tcGxldGVfZm9yZWlnbgogCW15ICRub2RlID0gc2hpZnQ7CiAJbXkg KCRyZXQsICRvdXRwdXQpOwogCi0JbXkgJHBzcWxfYSA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQlteSAkcHNxbF9iID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwor CW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CisJbXkgJHBzcWxfYiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAogCSMgSXNzdWUgSU8gd2l0aG91dCB3YWl0aW5nIGZvciBjb21w bGV0aW9uLCB0aGVuIHNsZWVwCiAJJHBzcWxfYS0+cXVlcnlfc2FmZSgKQEAgLTYyOCw3ICs2 MjcsNyBAQCBzdWIgdGVzdF9jbG9zZV9mZAogCW15ICRub2RlID0gc2hpZnQ7CiAJbXkgKCRy ZXQsICRvdXRwdXQpOwogCi0JbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdw b3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAlwc3FsX2xpa2UoCiAJ CSRpb19tZXRob2QsCkBAIC02NzgsNyArNjc3LDcgQEAgc3ViIHRlc3RfaW5qZWN0CiAJbXkg JG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsK KwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRu b2RlKTsKIAogCSMgaW5qZWN0ZWQgd2hhdCB3ZSdkIGV4cGVjdAogCSRwc3FsLT5xdWVyeV9z YWZlKHFxKFNFTEVDVCBpbmpfaW9fc2hvcnRfcmVhZF9hdHRhY2goODE5Mik7KSk7CkBAIC04 MTIsNyArODExLDcgQEAgc3ViIHRlc3RfaW5qZWN0X3dvcmtlcgogCW15ICRub2RlID0gc2hp ZnQ7CiAJbXkgKCRyZXQsICRvdXRwdXQpOwogCi0JbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWwg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkj IHRyaWdnZXIgYSBmYWlsdXJlIHRvIHJlb3Blbiwgc2hvdWxkIGVycm9yIG91dCwgYnV0IHNo b3VsZCByZWNvdmVyCiAJJHBzcWwtPnF1ZXJ5X3NhZmUoCkBAIC04NDksNyArODQ4LDcgQEAg c3ViIHRlc3RfaW52YWxpZGF0ZQogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9k ZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAlmb3JlYWNoIG15ICRwZXJz aXN0ZW5jeSAocXcobm9ybWFsIHVubG9nZ2VkIHRlbXBvcmFyeSkpCiAJewpAQCAtOTA3LDgg KzkwNiw4IEBAIHN1YiB0ZXN0X3plcm8KIAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkg JG5vZGUgPSBzaGlmdDsKIAotCW15ICRwc3FsX2EgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYiA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlt eSAkcHNxbF9hID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOworCW15ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZSk7CiAKIAlmb3JlYWNoIG15ICRwZXJzaXN0ZW5jeSAocXcobm9ybWFsIHRl bXBvcmFyeSkpCiAJewpAQCAtOTMzLDcgKzkzMiw3IEBAIFNFTEVDVCBtb2RpZnlfcmVsX2Js b2NrKCd0YmxfemVybycsIDAsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJCXFxKAogU0VM RUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVybycsIDAsIHplcm9fb25fZXJyb3I9PmZh bHNlKSksCiAJCQlxci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6ICBp bnZhbGlkIHBhZ2UgaW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8KKwkJ CXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP0VSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJs b2NrIDAgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiQvCiAJCSk7CiAKIAkJIyBDaGVjayB0 aGF0IHBhZ2UgdmFsaWRpdHkgZXJyb3JzIGFyZSB6ZXJvZWQKQEAgLTk0NCw3ICs5NDMsNyBA QCBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwgemVyb19vbl9lcnJv cj0+ZmFsc2UpKSwKIAkJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVy bycsIDAsIHplcm9fb25fZXJyb3I9PnRydWUpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3Fs OjxzdGRpbj46XGQrOiBXQVJOSU5HOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDAgb2YgcmVs YXRpb24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UkLworCQkJcXIvXig/OnBz cWw6PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAwIG9m IHJlbGF0aW9uICJiYXNlXC8uKlwvLioiOyB6ZXJvaW5nIG91dCBwYWdlJC8KIAkJKTsKIAog CQkjIEFuZCB0aGF0IG9uY2UgdGhlIGNvcnJ1cHRpb24gaXMgZml4ZWQsIHdlIGNhbiByZWFk IGFnYWluCkBAIC05NTIsNyArOTUxLDcgQEAgU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0 YmxfemVybycsIDAsIHplcm9fb25fZXJyb3I9PnRydWUpKSwKIAkJCXFxKAogU0VMRUNUIG1v ZGlmeV9yZWxfYmxvY2soJ3RibF96ZXJvJywgMCwgemVybz0+dHJ1ZSk7CiApKTsKLQkJJHBz cWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkJJHBzcWxfYS0+Y2xlYXJfc3RkZXJyKCk7CiAKIAkJ cHNxbF9saWtlKAogCQkJJGlvX21ldGhvZCwKQEAgLTk3NSw3ICs5NzQsNyBAQCBTRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7 CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHplcm9pbmcgb2YgaW52YWxpZCBibG9jayAzIiwK IAkJCXFxKFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8nLCAzLCB6ZXJvX29u X2Vycm9yPT50cnVlKTspLAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6 IFdBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiYmFzZVwv LipcLy4qIjsgemVyb2luZyBvdXQgcGFnZSQvCisJCQlxci9eKD86cHNxbDo8c3RkaW4+Olxk KzogKT9XQVJOSU5HOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDMgb2YgcmVsYXRpb24gImJh c2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UkLwogCQkpOwogCiAKQEAgLTk5Miw3ICs5 OTEsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBjb3JydXB0 X2hlYWRlcj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHJlYWRpbmcgb2YgaW52 YWxpZCBibG9jayAyLDMgaW4gbGFyZ2VyIHJlYWQiLAogCQkJcXEoU0VMRUNUIHJlYWRfcmVs X2Jsb2NrX2xsKCd0YmxfemVybycsIDEsIG5ibG9ja3M9PjQsIHplcm9fb25fZXJyb3I9PmZh bHNlKSksCiAJCQlxci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6ICAy IGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2YgcmVsYXRpb24gImJhc2VcLy4q XC8uKlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCBpbnZhbGlkIHBhZ2VcLlxu SElOVDpbXlxuXSskLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICAy IGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2YgcmVsYXRpb24gImJhc2VcLy4q XC8uKlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCBpbnZhbGlkIHBhZ2VcLlxu SElOVDpbXlxuXSskLwogCQkpOwogCiAJCSMgVGhlbiB0ZXN0IHplcm9pbmcgdmlhIFpFUk9f T05fRVJST1IgZmxhZwpAQCAtMTAwMiw3ICsxMDAxLDcgQEAgU0VMRUNUIG1vZGlmeV9yZWxf YmxvY2soJ3RibF96ZXJvJywgMywgY29ycnVwdF9oZWFkZXI9PnRydWUpOwogCQkJIiRwZXJz aXN0ZW5jeTogdGVzdCB6ZXJvaW5nIG9mIGludmFsaWQgYmxvY2sgMiwzIGluIGxhcmdlciBy ZWFkLCBaRVJPX09OX0VSUk9SIiwKIAkJCXFxKFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgn dGJsX3plcm8nLCAxLCBuYmxvY2tzPT40LCB6ZXJvX29uX2Vycm9yPT50cnVlKSksCiAJCQlx ci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcgb3V0 IDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwv LipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdlXC5c bkhJTlQ6W15cbl0rJC8KKwkJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6 ICB6ZXJvaW5nIG91dCAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2YgcmVs YXRpb24gImJhc2VcLy4qXC8uKlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCB6 ZXJvZWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJIyBUaGVuIHRlc3QgemVy b2luZyB2aWEgemVyb19kYW1hZ2VkX3BhZ2VzCkBAIC0xMDE3LDcgKzEwMTYsNyBAQCBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMSwgbmJsb2Nrcz0+NCwgemVyb19v bl9lcnJvcj0+ZmFsc2UpCiBDT01NSVQ7CiApLAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6 PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICB6ZXJvaW5nIG91dCAyIGludmFsaWQgcGFnZXMgYW1v bmcgYmxvY2tzIDEuLjQgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKlxuREVUQUlMOiAgQmxv Y2sgMiBoZWxkIHRoZSBmaXJzdCB6ZXJvZWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCisJCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgemVyb2luZyBvdXQgMiBpbnZh bGlkIHBhZ2VzIGFtb25nIGJsb2NrcyAxLi40IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLipc bkRFVEFJTDogIEJsb2NrIDIgaGVsZCB0aGUgZmlyc3QgemVyb2VkIHBhZ2VcLlxuSElOVDpb XlxuXSskLwogCQkpOwogCiAJCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ09NTUlUKSk7CkBA IC0xMDMwLDcgKzEwMjksNyBAQCBTRUxFQ1QgaW52YWxpZGF0ZV9yZWxfYmxvY2soJ3RibF96 ZXJvJywgZy5pKQogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMTUpIGcoaSk7CiBTRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCB6ZXJvPT50cnVlKTsKICkpOwotCQkk cHNxbF9hLT57c3RkZXJyfSA9ICcnOworCQkkcHNxbF9hLT5jbGVhcl9zdGRlcnIoKTsKIAog CQlwc3FsX2xpa2UoCiAJCQkkaW9fbWV0aG9kLApAQCAtMTAzOSw3ICsxMDM4LDcgQEAgU0VM RUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF96ZXJvJywgMywgemVybz0+dHJ1ZSk7CiAJCQlx cSgKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRibF96ZXJvKSwKIAkJCXFyL14kLywKLQkJCXFy L15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAyIG9m IHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6 ICk/RVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMiBvZiByZWxhdGlvbiAiYmFzZVwv LipcLy4qJC8KIAkJKTsKIAogCQkjIFZlcmlmeSB0aGF0IGJ1Zm1nci5jIElPIHplcm9lcyBv dXQgcGFnZXMgd2l0aCBwYWdlIHZhbGlkaXR5IGVycm9ycwpAQCAtMTA1NCw3ICsxMDUzLDcg QEAgU0VMRUNUIGNvdW50KCopIEZST00gdGJsX3plcm87CiBDT01NSVQ7CiApLAogCQkJcXIv XlxkKyQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBh Z2UgaW4gYmxvY2sgMiBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8KKwkJCXFyL14oPzpw c3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMiBv ZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8KIAkJKTsKIAogCQkjIENoZWNrIHRoYXQgd2Fy bmluZ3MvZXJyb3JzIGFib3V0IHBhZ2UgdmFsaWRpdHkgaW4gYW4gSU8gc3RhcnRlZCBieQpA QCAtMTA5Myw3ICsxMDkyLDcgQEAgRFJPUCBUQUJMRSB0YmxfemVybzsKICkpOwogCX0KIAot CSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWxfYS0+Y2xlYXJfc3RkZXJyKCk7CiAK IAkkcHNxbF9hLT5xdWl0KCk7CiAJJHBzcWxfYi0+cXVpdCgpOwpAQCAtMTEwNSwxOSArMTEw NCwxNyBAQCBzdWIgdGVzdF9jaGVja3N1bQogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlt eSAkbm9kZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWxfYSA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9hID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0JJHBzcWxf YS0+cXVlcnlfc2FmZSgKLQkJcXEoCi1DUkVBVEUgVEFCTEUgdGJsX25vcm1hbChpZCBpbnQp IFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKTsKLUlOU0VSVCBJTlRPIHRibF9u b3JtYWwgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKTsKLVNFTEVDVCBtb2RpZnlf cmVsX2Jsb2NrKCd0Ymxfbm9ybWFsJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSk7Ci0K LUNSRUFURSBURU1QT1JBUlkgVEFCTEUgdGJsX3RlbXAoaWQgaW50KSBXSVRIIChBVVRPVkFD VVVNX0VOQUJMRUQgPSBmYWxzZSk7Ci1JTlNFUlQgSU5UTyB0YmxfdGVtcCBTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApOwotU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF90 ZW1wJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSk7Ci1TRUxFQ1QgbW9kaWZ5X3JlbF9i bG9jaygndGJsX3RlbXAnLCA0LCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKTsKLSkpOworCSMg U3BsaXQgbXVsdGktc3RhdGVtZW50IHF1ZXJ5IGludG8gc2VwYXJhdGUgY2FsbHMgdG8gbWF0 Y2ggcHNxbCBiZWhhdmlvcgorCSMgd2hlcmUgZXJyb3JzIGluIG9uZSBzdGF0ZW1lbnQgZG9u J3QgcHJldmVudCBzdWJzZXF1ZW50IHN0YXRlbWVudHMKKwkkcHNxbF9hLT5xdWVyeV9zYWZl KHFxKENSRUFURSBUQUJMRSB0Ymxfbm9ybWFsKGlkIGludCkgV0lUSCAoQVVUT1ZBQ1VVTV9F TkFCTEVEID0gZmFsc2UpKSk7CisJJHBzcWxfYS0+cXVlcnlfc2FmZShxcShJTlNFUlQgSU5U TyB0Ymxfbm9ybWFsIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkpKTsKKwkkcHNx bF9hLT5xdWVyeV9zYWZlKHFxKFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0Ymxfbm9ybWFs JywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSkpKTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZl KHFxKENSRUFURSBURU1QT1JBUlkgVEFCTEUgdGJsX3RlbXAoaWQgaW50KSBXSVRIIChBVVRP VkFDVVVNX0VOQUJMRUQgPSBmYWxzZSkpKTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKElO U0VSVCBJTlRPIHRibF90ZW1wIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkpKTsK KwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0Ymxf dGVtcCcsIDMsIGNvcnJ1cHRfY2hlY2tzdW09PnRydWUpKSk7CisJJHBzcWxfYS0+cXVlcnlf c2FmZShxcShTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3RlbXAnLCA0LCBjb3JydXB0 X2NoZWNrc3VtPT50cnVlKSkpOwogCiAJIyBUbyBiZSBhYmxlIHRvIHRlc3QgY2hlY2tzdW0g ZmFpbHVyZXMgb24gc2hhcmVkIHJlbHMgd2UgbmVlZCBhIHNoYXJlZCByZWwKIAkjIHdpdGgg aW52YWxpZCBwYWdlcyAtIHdoaWNoIGlzIGEgYml0IHNjYXJ5LiBwZ19zaHNlY2xhYmVsIHNl ZW1zIGxpa2UgYQpAQCAtMTE0MCw3ICsxMTM3LDcgQEAgU0VMRUNUIG1vZGlmeV9yZWxfYmxv Y2soJ3BnX3Noc2VjbGFiZWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKTsKIAkJcXEo CiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9ub3JtYWwnLCAzLCBuYmxvY2tzPT4x LCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3Rk aW4+OlxkKzogRVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAi YmFzZVwvXGQrXC9cZCsiJC8KKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6 ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC9cZCsi JC8KIAkpOwogCiAJbXkgKCRjc19jb3VudF9hZnRlciwgJGNzX3RzX2FmdGVyKSA9CkBAIC0x MTYyLDcgKzExNTksNyBAQCBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9ub3JtYWwn LCAzLCBuYmxvY2tzPT4xLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEoCiBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF90ZW1wJywgNCwgbmJsb2Nrcz0+MiwgemVyb19v bl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6 IEVSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDQgb2YgcmVsYXRpb24gImJhc2VcL1xk K1wvdFxkK19cZCsiJC8KKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICBp bnZhbGlkIHBhZ2UgaW4gYmxvY2sgNCBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC90XGQrX1xk KyIkLwogCSk7CiAKIAkoJGNzX2NvdW50X2FmdGVyLCAkY3NfdHNfYWZ0ZXIpID0gY2hlY2tz dW1fZmFpbHVyZXMoJHBzcWxfYSwgJ3Bvc3RncmVzJyk7CkBAIC0xMTgzLDcgKzExODAsNyBA QCBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF90ZW1wJywgNCwgbmJsb2Nrcz0+Miwg emVyb19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2Nr X2xsKCdwZ19zaHNlY2xhYmVsJywgMiwgbmJsb2Nrcz0+MiwgemVyb19vbl9lcnJvcj0+ZmFs c2UpOyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IEVSUk9SOiAgMiBp bnZhbGlkIHBhZ2VzIGFtb25nIGJsb2NrcyAyLi4zIG9mIHJlbGF0aW9uICJnbG9iYWxcL1xk KyJcbkRFVEFJTDogIEJsb2NrIDIgaGVsZCB0aGUgZmlyc3QgaW52YWxpZCBwYWdlXC5cbkhJ TlQ6W15cbl0rJC8KKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICAyIGlu dmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDIuLjMgb2YgcmVsYXRpb24gImdsb2JhbFwvXGQr IlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCBpbnZhbGlkIHBhZ2VcLlxuSElO VDpbXlxuXSskLwogCSk7CiAKIAkoJGNzX2NvdW50X2FmdGVyLCAkY3NfdHNfYWZ0ZXIpID0g Y2hlY2tzdW1fZmFpbHVyZXMoJHBzcWxfYSk7CkBAIC0xMjAxLDcgKzExOTgsNyBAQCBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3BnX3Noc2VjbGFiZWwnLCAyLCBuYmxvY2tzPT4yLCB6 ZXJvX29uX2Vycm9yPT5mYWxzZSk7KQogU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3BnX3No c2VjbGFiZWwnLCAxLCB6ZXJvPT50cnVlKTsKIERST1AgVEFCTEUgdGJsX25vcm1hbDsKICkp OwotCSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWxfYS0+Y2xlYXJfc3RkZXJyKCk7 CiAKIAkkcHNxbF9hLT5xdWl0KCk7CiB9CkBAIC0xMjE0LDcgKzEyMTEsNyBAQCBzdWIgdGVz dF9jaGVja3N1bV9jcmVhdGVkYgogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9k ZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJCSdDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl9jcmVhdGVkYl9z b3VyY2UnKTsKQEAgLTEyNDgsNyArMTI0NSw3IEBAIFNUUkFURUdZIHdhbF9sb2c7CiAJCSJj cmVhdGUgZGF0YWJhc2Ugdy8gd2FsIHN0cmF0ZWd5LCBpbnZhbGlkIHNvdXJjZSIsCiAJCSRj cmVhdGVkYl9zcWwsCiAJCXFyL14kLywKLQkJcXIvcHNxbDo8c3RkaW4+OlxkKzogRVJST1I6 ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMSBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC9cZCsi JC8KKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICBpbnZhbGlkIHBhZ2Ug aW4gYmxvY2sgMSBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC9cZCsiJC8KIAkpOwogCW15ICgk Y3NfY291bnRfYWZ0ZXIsICRjc190c19hZnRlcikgPQogCSAgY2hlY2tzdW1fZmFpbHVyZXMo JHBzcWwsICdyZWdyZXNzaW9uX2NyZWF0ZWRiX3NvdXJjZScpOwpAQCAtMTI3Nyw3ICsxMjc0 LDcgQEAgc3ViIHRlc3RfaWdub3JlX2NoZWNrc3VtCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0 OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCSMgVGVz dCBzZXR1cAogCSRwc3FsLT5xdWVyeV9zYWZlKApAQCAtMTM0Miw3ICsxMzM5LDcgQEAgU0VM RUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNCwgY29ycnVwdF9oZWFkZXI9 PnRydWUpOwogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX2NzX2ZhaWwn LCAzLCBuYmxvY2tzPT4xLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAot CQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIGlnbm9yaW5nIGNoZWNrc3VtIGZh aWx1cmUgaW4gYmxvY2sgMy8KKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/V0FSTklO RzogIGlnbm9yaW5nIGNoZWNrc3VtIGZhaWx1cmUgaW4gYmxvY2sgMy8KIAkpOwogCiAJIyBD aGVjayB0aGF0IHRoZSBsb2cgY29udGFpbnMgYSBMT0cgbWVzc2FnZSBhYm91dCB0aGUgZmFp bHVyZQpAQCAtMTM1Nyw3ICsxMzU0LDcgQEAgU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0 YmxfY3NfZmFpbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAog CQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX2NzX2ZhaWwnLCAyLCBuYmxv Y2tzPT4zLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNx bDo8c3RkaW4+OlxkKzogRVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgNCBvZiByZWxh dGlvbiAiYmFzZVwvXGQrXC9cZCsiJC8KKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/ RVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgNCBvZiByZWxhdGlvbiAiYmFzZVwvXGQr XC9cZCsiJC8KIAkpOwogCiAJIyBUZXN0IG11bHRpLWJsb2NrIHJlYWQgd2l0aCBkaWZmZXJl bnQgcHJvYmxlbXMgaW4gZGlmZmVyZW50IGJsb2NrcwpAQCAtMTM2OSw3ICsxMzY2LDcgQEAg U0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgMywgY29ycnVwdF9jaGVj a3N1bT0+dHJ1ZSwgY29ycnVwdF9oZWFkZXIKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0 YmxfY3NfZmFpbCcsIDQsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIFNFTEVDVCBtb2RpZnlf cmVsX2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDUsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKICkp OwotCSRwc3FsLT57c3RkZXJyfSA9ICcnOworCSRwc3FsLT5jbGVhcl9zdGRlcnIoKTsKIAog CSRsb2dfbG9jYXRpb24gPSAtcyAkbm9kZS0+bG9nZmlsZTsKIAlwc3FsX2xpa2UoCkBAIC0x Mzc5LDcgKzEzNzYsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2NzX2ZhaWwn LCA1LCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Js b2NrX2xsKCd0YmxfY3NfZmFpbCcsIDEsIG5ibG9ja3M9PjUsIHplcm9fb25fZXJyb3I9PnRy dWUpOyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICB6 ZXJvaW5nIDMgcGFnZVwoc1wpIGFuZCBpZ25vcmluZyAyIGNoZWNrc3VtIGZhaWx1cmVcKHNc KSBhbW9uZyBibG9ja3MgMS4uNSBvZiByZWxhdGlvbiAiLworCQlxci9eKD86cHNxbDo8c3Rk aW4+OlxkKzogKT9XQVJOSU5HOiAgemVyb2luZyAzIHBhZ2VcKHNcKSBhbmQgaWdub3Jpbmcg MiBjaGVja3N1bSBmYWlsdXJlXChzXCkgYW1vbmcgYmxvY2tzIDEuLjUgb2YgcmVsYXRpb24g Ii8KIAkpOwogCiAKQEAgLTE0MTIsNyArMTQwOSw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9j a19sbCgndGJsX2NzX2ZhaWwnLCAxLCBuYmxvY2tzPT41LCB6ZXJvX29uX2Vycm9yPT50cnVl KTspLAogCQlxcSgKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDMs IGNvcnJ1cHRfY2hlY2tzdW09PnRydWUsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKICkpOwot CSRwc3FsLT57c3RkZXJyfSA9ICcnOworCSRwc3FsLT5jbGVhcl9zdGRlcnIoKTsKIAogCXBz cWxfbGlrZSgKIAkJJGlvX21ldGhvZCwKQEAgLTE0MjEsNyArMTQxOCw3IEBAIFNFTEVDVCBt b2RpZnlfcmVsX2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDMsIGNvcnJ1cHRfY2hlY2tzdW09PnRy dWUsIGNvcnJ1cHRfaGVhZGVyCiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0 YmxfY3NfZmFpbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAog CQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFn ZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICIvKTsKKwkJcXIvXig/OnBzcWw6PHN0ZGluPjpc ZCs6ICk/RVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiLyk7 CiAKIAlwc3FsX2xpa2UoCiAJCSRpb19tZXRob2QsCkBAIC0xNDMwLDcgKzE0MjcsNyBAQCBT RUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwg emVyb19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2Nr X2xsKCd0YmxfY3NfZmFpbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PnRydWUp OyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZh bGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiYmFzZVwvLioiOyB6ZXJvaW5nIG91 dCBwYWdlLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxp ZCBwYWdlIGluIGJsb2NrIDMgb2YgcmVsYXRpb24gImJhc2VcLy4qIjsgemVyb2luZyBvdXQg cGFnZS8KIAkpOwogCiAKQEAgLTE0NDYsOCArMTQ0Myw4IEBAIHN1YiB0ZXN0X3JlYWRfYnVm ZmVycwogCW15ICgkcmV0LCAkb3V0cHV0KTsKIAlteSAkdGFibGU7CiAKLQlteSAkcHNxbF9h ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKwlteSAkcHNxbF9iID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJJHBzcWxfYS0+cXVl cnlfc2FmZSgKIAkJcXEoCkBAIC0xNjMxLDcgKzE2MjgsNyBAQCBJTlNFUlQgSU5UTyB0bXBf b2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKTsKIAkJJHBzcWxfYS0+cXVlcnlf c2FmZShxcXxTRUxFQ1QgZXZpY3RfcmVsKCckdGFibGUnKXwpOwogCiAJCW15ICRidWZfaWQg PQotCQkgICRwc3FsX2ItPnF1ZXJ5X3NhZmUocXF8U0VMRUNUIGJ1ZmZlcl9jcmVhdGVfdG95 KCckdGFibGUnLCAzKXwpOworCQkgICRwc3FsX2ItPnF1ZXJ5X29uZXZhbChxcXxTRUxFQ1Qg YnVmZmVyX2NyZWF0ZV90b3koJyR0YWJsZScsIDMpfCk7CiAJCSRwc3FsX2ItPnF1ZXJ5X3Nh ZmUoCiAJCQlxcXxTRUxFQ1QgYnVmZmVyX2NhbGxfc3RhcnRfaW8oJGJ1Zl9pZCwgZm9yX2lu cHV0PT50cnVlLCB3YWl0PT50cnVlKXwKIAkJKTsKQEAgLTE2NDgsMTYgKzE2NDUsMTYgQEAg SU5TRVJUIElOVE8gdG1wX29rIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCk7CiAJ CQlxcXxTRUxFQ1QgYnVmZmVyX2NhbGxfdGVybWluYXRlX2lvKCRidWZfaWQsIGZvcl9pbnB1 dD0+dHJ1ZSwgc3VjY2VlZD0+ZmFsc2UsIGlvX2Vycm9yPT5mYWxzZSwgcmVsZWFzZV9haW89 PmZhbHNlKXwKIAkJKTsKIAkJIyBCZWNhdXNlIG5vIElPIHdyZWYgd2FzIGFzc2lnbmVkLCBi bG9jayAzIHNob3VsZCBub3QgcmVwb3J0IGZvcmVpZ24gSU8KLQkJcHVtcF91bnRpbCgkcHNx bF9hLT57cnVufSwgJHBzcWxfYS0+e3RpbWVvdXR9LCBcJHBzcWxfYS0+e3N0ZG91dH0sCi0J CQlxci8wXHwxXHx0XHxmXHwyXG4yXHwzXHx0XHxmXHwzLyk7Ci0JCW9rKDEsCisJCWxpa2Uo CisJCQkkcHNxbF9hLT5nZXRfYXN5bmNfcmVzdWx0KCktPntwc3Fsb3V0fSwKKwkJCXFyLzBc fDFcfHRcfGZcfDJcbjJcfDNcfHRcfGZcfDMvLAogCQkJIiRpb19tZXRob2Q6ICRwZXJzaXN0 ZW5jeTogSU8gd2FzIHNwbGl0IGR1ZSB0byBjb25jdXJyZW50IGZhaWxlZCBJTyIKIAkJKTsK IAogCQkjIFNhbWUgYXMgYmVmb3JlLCBleGNlcHQgdGhlIGNvbmN1cnJlbnQgSU8gc3VjY2Vl ZHMgdGhpcyB0aW1lCiAJCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXF8U0VMRUNUIGV2aWN0X3Jl bCgnJHRhYmxlJyl8KTsKIAkJJGJ1Zl9pZCA9Ci0JCSAgJHBzcWxfYi0+cXVlcnlfc2FmZShx cXxTRUxFQ1QgYnVmZmVyX2NyZWF0ZV90b3koJyR0YWJsZScsIDMpfCk7CisJCSAgJHBzcWxf Yi0+cXVlcnlfb25ldmFsKHFxfFNFTEVDVCBidWZmZXJfY3JlYXRlX3RveSgnJHRhYmxlJywg Myl8KTsKIAkJJHBzcWxfYi0+cXVlcnlfc2FmZSgKIAkJCXFxfFNFTEVDVCBidWZmZXJfY2Fs bF9zdGFydF9pbygkYnVmX2lkLCBmb3JfaW5wdXQ9PnRydWUsIHdhaXQ9PnRydWUpfAogCQkp OwpAQCAtMTY3NCw5ICsxNjcxLDkgQEAgSU5TRVJUIElOVE8gdG1wX29rIFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwgNTAwMCk7CiAJCQlxcXxTRUxFQ1QgYnVmZmVyX2NhbGxfdGVybWlu YXRlX2lvKCRidWZfaWQsIGZvcl9pbnB1dD0+dHJ1ZSwgc3VjY2VlZD0+dHJ1ZSwgaW9fZXJy b3I9PmZhbHNlLCByZWxlYXNlX2Fpbz0+ZmFsc2UpfAogCQkpOwogCQkjIEJlY2F1c2Ugbm8g SU8gd3JlZiB3YXMgYXNzaWduZWQsIGJsb2NrIDMgc2hvdWxkIG5vdCByZXBvcnQgZm9yZWln biBJTwotCQlwdW1wX3VudGlsKCRwc3FsX2EtPntydW59LCAkcHNxbF9hLT57dGltZW91dH0s IFwkcHNxbF9hLT57c3Rkb3V0fSwKLQkJCXFyLzBcfDFcfHRcfGZcfDJcbjJcfDNcfGZcfGZc fDFcbjNcfDRcfHRcfGZcfDIvKTsKLQkJb2soMSwKKwkJbGlrZSgKKwkJCSRwc3FsX2EtPmdl dF9hc3luY19yZXN1bHQoKS0+e3BzcWxvdXR9LAorCQkJcXIvMFx8MVx8dFx8Zlx8MlxuMlx8 M1x8Zlx8Zlx8MVxuM1x8NFx8dFx8Zlx8Mi8sCiAJCQkiJGlvX21ldGhvZDogJHBlcnNpc3Rl bmN5OiBJTyB3YXMgc3BsaXQgZHVlIHRvIGNvbmN1cnJlbnQgc3VjY2Vzc2Z1bCBJTyIKIAkJ KTsKIAl9CkBAIC0xNjkyLDkgKzE2ODksOSBAQCBzdWIgdGVzdF9yZWFkX2J1ZmZlcnNfaW5q ZWN0CiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlt eSAkcHNxbF9hID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJv cl9zdG9wID0+IDApOwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdw b3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYyA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbF9hID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUp OworCW15ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZSk7CisJbXkgJHBzcWxfYyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5l dyhub2RlID0+ICRub2RlKTsKIAogCW15ICRleHBlY3RlZDsKIApAQCAtMTc2MywxMiArMTc2 MCwxMyBAQCBzdWIgdGVzdF9yZWFkX2J1ZmZlcnNfaW5qZWN0CiAJCSMgcmV0dXJuIGZvciBz b21ldGhpbmcgd2l0aCBtaXNzZXMgaW4gc3luYyBtb2RlLgogCQkkZXhwZWN0ZWQgPSBxci8w XHwxXHx0XHxmXHw0LzsKIAl9Ci0JcHVtcF91bnRpbCgkcHNxbF9hLT57cnVufSwgJHBzcWxf YS0+e3RpbWVvdXR9LCBcJHBzcWxfYS0+e3N0ZG91dH0sCi0JCSRleHBlY3RlZCk7Ci0Jb2so MSwKKwlsaWtlKCRwc3FsX2EtPmdldF9hc3luY19yZXN1bHQoKS0+e3BzcWxvdXR9LCAkZXhw ZWN0ZWQsCiAJCSIkaW9fbWV0aG9kOiAkcGVyc2lzdGVuY3k6IHJlYWQgMS0zLCBibG9ja2Vk IG9uIGluLXByb2dyZXNzIDEsIHNlZSBleHBlY3RlZCByZXN1bHQiCiAJKTsKLQkkcHNxbF9h LT57c3Rkb3V0fSA9ICcnOworCisJIyBCJ3MgbG93LWxldmVsIHJlYWQgaGFzIGNvbXBsZXRl ZCBub3cgdGhhdCBDIHJlbGVhc2VkIGl0OyBkcmFpbiBpdHMKKwkjIHJlc3VsdCBiZWZvcmUg QiBpcyByZXVzZWQgYmVsb3cuCisJJHBzcWxfYi0+d2FpdF9mb3JfY29tcGxldGlvbjsKIAog CiAJIyMjCkBAIC0xODI5LDEyICsxODI3LDEyIEBAIHJlYWRfYnVmZmVycygnJHRhYmxlJywg MCwgNCl8LAogCQkjIHJldHVybiBmb3Igc29tZXRoaW5nIHdpdGggbWlzc2VzIGluIHN5bmMg bW9kZS4KIAkJJGV4cGVjdGVkID0gcXIvMFx8MFx8dFx8Zlx8NC87CiAJfQotCXB1bXBfdW50 aWwoJHBzcWxfYS0+e3J1bn0sICRwc3FsX2EtPnt0aW1lb3V0fSwgXCRwc3FsX2EtPntzdGRv dXR9LAotCQkkZXhwZWN0ZWQpOwotCW9rKDEsCisJbGlrZSgkcHNxbF9hLT5nZXRfYXN5bmNf cmVzdWx0KCktPntwc3Fsb3V0fSwgJGV4cGVjdGVkLAogCQkiJGlvX21ldGhvZDogJHBlcnNp c3RlbmN5OiByZWFkIDAtMywgYmxvY2tlZCBvbiBpbi1wcm9ncmVzcyAyKzMsIHNlZSBleHBl Y3RlZCByZXN1bHQiCiAJKTsKLQkkcHNxbF9hLT57c3Rkb3V0fSA9ICcnOworCisJIyBEcmFp biBCJ3Mgbm93LWNvbXBsZXRlZCBsb3ctbGV2ZWwgcmVhZCBiZWZvcmUgY2xvc2luZy4KKwkk cHNxbF9iLT53YWl0X2Zvcl9jb21wbGV0aW9uOwogCiAKIAkkcHNxbF9hLT5xdWl0KCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDA0X3JlYWRfc3RyZWFt LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90LzAwNF9yZWFkX3N0cmVhbS5wbApp bmRleCAzMjMxMWMwN2FjMC4uZjM3YjU2ZGI2ODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9haW8vdC8wMDRfcmVhZF9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2Fpby90LzAwNF9yZWFkX3N0cmVhbS5wbApAQCAtNSw2ICs1LDcgQEAgdXNl IHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIHVzZSBGaW5kQmluOwpAQCAtNjAs NyArNjEsNyBAQCBzdWIgdGVzdF9yZXBlYXRlZF9ibG9ja3MKIAlteSAkaW9fbWV0aG9kID0g c2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3Fs ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJ IyBQcmV2ZW50aW5nIGxhcmdlciByZWFkcyBtYWtlcyB0ZXN0aW5nIGVhc2llcgogCSRwc3Fs LT5xdWVyeV9zYWZlKHFxL1NFVCBpb19jb21iaW5lX2xpbWl0ID0gMS8pOwpAQCAtMTExLDcg KzExMiw3IEBAIHN1YiB0ZXN0X3JlcGVhdGVkX2Jsb2NrcwogCQkgICBBUlJBWVswLCAyLCAy LCA0LCA0XSk7Lyk7CiAJb2soMSwgIiRpb19tZXRob2Q6IHRlbXAgc3RyZWFtIGhpdHRpbmcg dGhlIHNhbWUgYmxvY2sgcmVwZWF0ZWRseSIpOwogCi0JJHBzcWwtPnF1aXQoKTsKKwkkcHNx bC0+Y2xvc2UoKTsKIH0KIAogCkBAIC0xMjAsMTAgKzEyMSwxMCBAQCBzdWIgdGVzdF9pbmpl Y3RfZm9yZWlnbgogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9IHNoaWZ0 OwogCi0JbXkgJHBzcWxfYSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywg b25fZXJyb3Jfc3RvcCA9PiAwKTsKLQlteSAkcHNxbF9iID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsX2EgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisJbXkgJHBz cWxfYiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAotCW15ICRwaWRfYSA9ICRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEvU0VMRUNUIHBnX2JhY2tl bmRfcGlkKCk7Lyk7CisJbXkgJHBpZF9hID0gJHBzcWxfYS0+cXVlcnlfb25ldmFsKHFxL1NF TEVDVCBwZ19iYWNrZW5kX3BpZCgpOy8pOwogCiAKIAkjIyMKQEAgLTEzNiw5ICsxMzcsOCBA QCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgogCQlxcS9TRUxFQ1QgaW5qX2lvX2NvbXBsZXRp b25fd2FpdChwaWQ9PnBnX2JhY2tlbmRfcGlkKCksCiAJCSAgIHJlbGZpbGVub2RlPT5wZ19y ZWxhdGlvbl9maWxlbm9kZSgnbGFyZ2Vpc2gnKSk7Lyk7CiAKLQkkcHNxbF9iLT57c3RkaW59 IC49IHFxL1NFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgnbGFyZ2Vpc2gnLAotCQlibG9ja25v PT41LCBuYmxvY2tzPT4xKTtcbi87Ci0JJHBzcWxfYi0+e3J1bn0tPnB1bXBfbmIoKTsKKwkk cHNxbF9iLT5kb19hc3luYyhxcS9TRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ2xhcmdlaXNo JywKKwkJYmxvY2tubz0+NSwgbmJsb2Nrcz0+MSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9xdWVy eV91bnRpbCgKIAkJJ3Bvc3RncmVzJywgcXEvU0VMRUNUIHdhaXRfZXZlbnQgRlJPTSBwZ19z dGF0X2FjdGl2aXR5CkBAIC0xNDcsOSArMTQ3LDggQEAgc3ViIHRlc3RfaW5qZWN0X2ZvcmVp Z24KIAogCSMgQmxvY2sgNSBpcyB1bmRlcmdvaW5nIElPIGluIHNlc3Npb24gYiwgc28gc2Vz c2lvbiBhIHdpbGwgbW92ZSBvbiB0byBzdGFydAogCSMgYSBuZXcgSU8gZm9yIGJsb2NrIDcu Ci0JJHBzcWxfYS0+e3N0ZGlufSAuPSBxcS9TRUxFQ1QgYXJyYXlfYWdnKGJsb2NrbnVtKSBG Uk9NCi0JCXJlYWRfc3RyZWFtX2Zvcl9ibG9ja3MoJ2xhcmdlaXNoJywgQVJSQVlbMCwgMiwg NSwgN10pO1xuLzsKLQkkcHNxbF9hLT57cnVufS0+cHVtcF9uYigpOworCSRwc3FsX2EtPmRv X2FzeW5jKHFxL1NFTEVDVCBhcnJheV9hZ2coYmxvY2tudW0pIEZST00KKwkJcmVhZF9zdHJl YW1fZm9yX2Jsb2NrcygnbGFyZ2Vpc2gnLCBBUlJBWVswLCAyLCA1LCA3XSk7Lyk7CiAKIAkk bm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCQlxcShTRUxFQ1Qgd2FpdF9l dmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgcGlkID0gJHBpZF9hKSwKQEAgLTE1 NywxNCArMTU2LDExIEBAIHN1YiB0ZXN0X2luamVjdF9mb3JlaWduCiAKIAkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxL1NFTEVDVCBpbmpfaW9fY29tcGxldGlvbl9jb250aW51 ZSgpLyk7CiAKLQlwdW1wX3VudGlsKAotCQkkcHNxbF9hLT57cnVufSwgJHBzcWxfYS0+e3Rp bWVvdXR9LAotCQlcJHBzcWxfYS0+e3N0ZG91dH0sIHFyL1x7MCwyLDUsN1x9Lyk7Ci0JJHBz cWxfYS0+e3N0ZG91dH0gPSAnJzsKKwlsaWtlKCRwc3FsX2EtPmdldF9hc3luY19yZXN1bHQo KS0+e3BzcWxvdXR9LCBxci9cezAsMiw1LDdcfS8sCisJCXFxLyRpb19tZXRob2Q6IHJlYWQg c3RyZWFtIGVuY291bnRlcnMgc3VjY2VlZGluZyBJTyBieSBhbm90aGVyIGJhY2tlbmQvKTsK IAotCW9rKDEsCi0JCXFxLyRpb19tZXRob2Q6IHJlYWQgc3RyZWFtIGVuY291bnRlcnMgc3Vj Y2VlZGluZyBJTyBieSBhbm90aGVyIGJhY2tlbmQvCi0JKTsKKwkjIERyYWluIHNlc3Npb24g YidzIG5vdy1jb21wbGV0ZWQgbG93LWxldmVsIHJlYWQgYmVmb3JlIHJldXNpbmcgaXQuCisJ JHBzcWxfYi0+d2FpdF9mb3JfY29tcGxldGlvbjsKIAogCSMjIwogCSMgVGVzdCByZWFkIHN0 cmVhbSBlbmNvdW50ZXJpbmcgYnVmZmVycyB1bmRlcmdvaW5nIElPIGluIGFub3RoZXIgYmFj a2VuZCwKQEAgLTE4MSw5ICsxNzcsOCBAQCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgogCQkg ICBwaWQ9PnBnX2JhY2tlbmRfcGlkKCksCiAJCSAgIHJlbGZpbGVub2RlPT5wZ19yZWxhdGlv bl9maWxlbm9kZSgnbGFyZ2Vpc2gnKSk7Lyk7CiAKLQkkcHNxbF9iLT57c3RkaW59IC49IHFx L1NFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgnbGFyZ2Vpc2gnLAotCQlibG9ja25vPT41LCBu YmxvY2tzPT4xKTtcbi87Ci0JJHBzcWxfYi0+e3J1bn0tPnB1bXBfbmIoKTsKKwkkcHNxbF9i LT5kb19hc3luYyhxcS9TRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ2xhcmdlaXNoJywKKwkJ YmxvY2tubz0+NSwgbmJsb2Nrcz0+MSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9xdWVyeV91bnRp bCgKIAkJJ3Bvc3RncmVzJywKQEAgLTE5MSw5ICsxODYsOCBAQCBzdWIgdGVzdF9pbmplY3Rf Zm9yZWlnbgogCQkgICBXSEVSRSB3YWl0X2V2ZW50ID0gJ2NvbXBsZXRpb25fd2FpdCc7LywK IAkJJ2NvbXBsZXRpb25fd2FpdCcpOwogCi0JJHBzcWxfYS0+e3N0ZGlufSAuPSBxcS9TRUxF Q1QgYXJyYXlfYWdnKGJsb2NrbnVtKSBGUk9NCi0JCXJlYWRfc3RyZWFtX2Zvcl9ibG9ja3Mo J2xhcmdlaXNoJywgQVJSQVlbMCwgMiwgNSwgN10pO1xuLzsKLQkkcHNxbF9hLT57cnVufS0+ cHVtcF9uYigpOworCSRwc3FsX2EtPmRvX2FzeW5jKHFxL1NFTEVDVCBhcnJheV9hZ2coYmxv Y2tudW0pIEZST00KKwkJcmVhZF9zdHJlYW1fZm9yX2Jsb2NrcygnbGFyZ2Vpc2gnLCBBUlJB WVswLCAyLCA1LCA3XSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdy ZXMnLAogCQlxcShTRUxFQ1Qgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgcGlkID0gJHBpZF9hKSwKQEAgLTIwMSwyMCArMTk1LDE2IEBAIHN1YiB0ZXN0X2luamVj dF9mb3JlaWduCiAKIAkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxL1NFTEVDVCBp bmpfaW9fY29tcGxldGlvbl9jb250aW51ZSgpLyk7CiAKLQlwdW1wX3VudGlsKAotCQkkcHNx bF9hLT57cnVufSwgJHBzcWxfYS0+e3RpbWVvdXR9LAotCQlcJHBzcWxfYS0+e3N0ZG91dH0s IHFyL1x7MCwyLDUsN1x9Lyk7Ci0JJHBzcWxfYS0+e3N0ZG91dH0gPSAnJzsKLQotCXB1bXBf dW50aWwoJHBzcWxfYi0+e3J1bn0sICRwc3FsX2ItPnt0aW1lb3V0fSwgXCRwc3FsX2ItPntz dGRlcnJ9LAotCQlxci9FUlJPUi4qY291bGQgbm90IHJlYWQgYmxvY2tzIDVcLlwuNS8pOwot CW9rKDEsICIkaW9fbWV0aG9kOiBpbmplY3RlZCBlcnJvciBvY2N1cnJlZCIpOwotCSRwc3Fs X2ItPntzdGRlcnJ9ID0gJyc7Ci0JJHBzcWxfYi0+cXVlcnlfc2FmZShxcS9TRUxFQ1QgaW5q X2lvX3Nob3J0X3JlYWRfZGV0YWNoKCk7Lyk7Ci0KLQlvaygxLAorCWxpa2UoJHBzcWxfYS0+ Z2V0X2FzeW5jX3Jlc3VsdCgpLT57cHNxbG91dH0sIHFyL1x7MCwyLDUsN1x9LywKIAkJcXEv JGlvX21ldGhvZDogcmVhZCBzdHJlYW0gZW5jb3VudGVycyBmYWlsaW5nIElPIGJ5IGFub3Ro ZXIgYmFja2VuZC8pOwogCisJIyBTZXNzaW9uIGIncyBsb3ctbGV2ZWwgcmVhZCBoaXRzIHRo ZSBpbmplY3RlZCBlcnJvci4KKwlteSAkcmVzX2IgPSAkcHNxbF9iLT5nZXRfYXN5bmNfcmVz dWx0KCk7CisJbGlrZSgkcmVzX2ItPntlcnJvcl9tZXNzYWdlfSwgcXIvRVJST1IuKmNvdWxk IG5vdCByZWFkIGJsb2NrcyA1XC5cLjUvLAorCQkiJGlvX21ldGhvZDogaW5qZWN0ZWQgZXJy b3Igb2NjdXJyZWQiKTsKKwkkcHNxbF9iLT5jbGVhcl9zdGRlcnIoKTsKKwkkcHNxbF9iLT5x dWVyeV9zYWZlKHFxL1NFTEVDVCBpbmpfaW9fc2hvcnRfcmVhZF9kZXRhY2goKTsvKTsKKwog CiAJIyMjCiAJIyBUZXN0IHJlYWQgc3RyZWFtIGVuY291bnRlcmluZyB0d28gYnVmZmVycyB0 aGF0IGFyZSB1bmRlcmdvaW5nIHRoZSBzYW1lCkBAIC0yMjYsOSArMjE2LDggQEAgc3ViIHRl c3RfaW5qZWN0X2ZvcmVpZ24KIAkJcXEvU0VMRUNUIGlual9pb19jb21wbGV0aW9uX3dhaXQo cGlkPT5wZ19iYWNrZW5kX3BpZCgpLAogCQkgICByZWxmaWxlbm9kZT0+cGdfcmVsYXRpb25f ZmlsZW5vZGUoJ2xhcmdlaXNoJykpOy8pOwogCi0JJHBzcWxfYi0+e3N0ZGlufSAuPSBxcS9T RUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ2xhcmdlaXNoJywKLQkJYmxvY2tubz0+MiwgbmJs b2Nrcz0+Myk7XG4vOwotCSRwc3FsX2ItPntydW59LT5wdW1wX25iKCk7CisJJHBzcWxfYi0+ ZG9fYXN5bmMocXEvU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCdsYXJnZWlzaCcsCisJCWJs b2Nrbm89PjIsIG5ibG9ja3M9PjMpOy8pOwogCiAJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwo CiAJCSdwb3N0Z3JlcycsCkBAIC0yMzcsOSArMjI2LDggQEAgc3ViIHRlc3RfaW5qZWN0X2Zv cmVpZ24KIAkJJ2NvbXBsZXRpb25fd2FpdCcpOwogCiAJIyBCbG9ja3MgMiBhbmQgNCBhcmUg dW5kZXJnb2luZyBJTyBpbml0aWF0ZWQgYnkgc2Vzc2lvbiBiCi0JJHBzcWxfYS0+e3N0ZGlu fSAuPSBxcS9TRUxFQ1QgYXJyYXlfYWdnKGJsb2NrbnVtKSBGUk9NCi0JCXJlYWRfc3RyZWFt X2Zvcl9ibG9ja3MoJ2xhcmdlaXNoJywgQVJSQVlbMCwgMiwgNF0pO1xuLzsKLQkkcHNxbF9h LT57cnVufS0+cHVtcF9uYigpOworCSRwc3FsX2EtPmRvX2FzeW5jKHFxL1NFTEVDVCBhcnJh eV9hZ2coYmxvY2tudW0pIEZST00KKwkJcmVhZF9zdHJlYW1fZm9yX2Jsb2NrcygnbGFyZ2Vp c2gnLCBBUlJBWVswLCAyLCA0XSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAogCQlxcShTRUxFQ1Qgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgcGlkID0gJHBpZF9hKSwKQEAgLTI0NywxNSArMjM1LDE0IEBAIHN1YiB0ZXN0 X2luamVjdF9mb3JlaWduCiAKIAkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxL1NF TEVDVCBpbmpfaW9fY29tcGxldGlvbl9jb250aW51ZSgpLyk7CiAKLQlwdW1wX3VudGlsKAot CQkkcHNxbF9hLT57cnVufSwgJHBzcWxfYS0+e3RpbWVvdXR9LAotCQlcJHBzcWxfYS0+e3N0 ZG91dH0sIHFyL1x7MCwyLDRcfS8pOwotCSRwc3FsX2EtPntzdGRvdXR9ID0gJyc7CisJbGlr ZSgkcHNxbF9hLT5nZXRfYXN5bmNfcmVzdWx0KCktPntwc3Fsb3V0fSwgcXIvXHswLDIsNFx9 LywKKwkJcXEvJGlvX21ldGhvZDogcmVhZCBzdHJlYW0gZW5jb3VudGVycyB0d28gYnVmZmVy IHJlYWQgaW4gb25lIElPLyk7CiAKLQlvaygxLCBxcS8kaW9fbWV0aG9kOiByZWFkIHN0cmVh bSBlbmNvdW50ZXJzIHR3byBidWZmZXIgcmVhZCBpbiBvbmUgSU8vKTsKKwkjIERyYWluIHNl c3Npb24gYidzIG5vdy1jb21wbGV0ZWQgbG93LWxldmVsIHJlYWQuCisJJHBzcWxfYi0+d2Fp dF9mb3JfY29tcGxldGlvbjsKIAotCSRwc3FsX2EtPnF1aXQoKTsKLQkkcHNxbF9iLT5xdWl0 KCk7CisJJHBzcWxfYS0+Y2xvc2UoKTsKKwkkcHNxbF9iLT5jbG9zZSgpOwogfQogCiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMDJfcmVzdGFy dHMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDAyX3Jlc3RhcnRz LnBsCmluZGV4IDFhYTJjMGM2NWU1Li5jZDlhNzMxNGM4YSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwMl9yZXN0YXJ0cy5wbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDAyX3Jlc3RhcnRzLnBsCkBAIC04LDYg KzgsNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGVzdDo6TW9yZTsKIAogdXNlIEZpbmRC aW47CkBAIC00NCw4ICs0NSw4IEBAIFNLSVA6CiAJIwogCSMgVGhpcyBpcyBhIHNpbWlsYXIg dGVzdCB0byB0aGUgc3ludGhldGljIHZhcmlhbnQgaW4gMDA1X2luamVjdGlvbi5wbAogCSMg d2hpY2ggZmFrZXMgdGhpcyBzY2VuYXJpby4KLQlteSAkYnNlc3Npb24gPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRic2Vzc2lvbi0+cXVlcnlfc2FmZSgnQ1JF QVRFIFRFTVBPUkFSWSBUQUJMRSB0dCAoYSBpbnRlZ2VyKTsnKTsKKwlteSAkYnNlc3Npb24g PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisJJGJz ZXNzaW9uLT5kbygnQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0dCAoYSBpbnRlZ2VyKTsnKTsK IAogCSMgSW4gYW5vdGhlciBzZXNzaW9uLCBtYWtlIHN1cmUgd2UgY2FuIHNlZSB0aGUgYmxv Y2tpbmcgdGVtcCB0YWJsZSBidXQKIAkjIHN0YXJ0IHByb2Nlc3NpbmcgYW55d2F5cyBhbmQg Y2hlY2sgdGhhdCB3ZSBhcmUgYmxvY2tlZCB3aXRoIGEgcHJvcGVyCkBAIC04NSw3ICs4Niw3 IEBAIFNLSVA6CiAJIyBzZXNzaW9uIGZpcnN0IHNpbmNlIHRoZSBicmllZiBwZXJpb2QgYmV0 d2VlbiBjbG9zaW5nIGFuZCBzdG9wcGluZyBtaWdodAogCSMgYmUgZW5vdWdoIGZvciBjaGVj a3N1bXMgdG8gZ2V0IGVuYWJsZWQuCiAJJG5vZGUtPnN0b3A7Ci0JJGJzZXNzaW9uLT5xdWl0 OworCSRic2Vzc2lvbi0+Y2xvc2U7CiAJJG5vZGUtPnN0YXJ0OwogCiAJIyBFbnN1cmUgdGhl IGNoZWNrc3VtcyBhcmVuJ3QgZW5hYmxlZCBhY3Jvc3MgdGhlIHJlc3RhcnQuICBUaGlzIGxl YXZlcyB0aGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMv dC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVj a3N1bXMvdC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbAppbmRleCBiYjM1ZWQwYjMyNS4uNjdk NGU3NmU3YjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMv dC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf Y2hlY2tzdW1zL3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwKQEAgLTcsNiArNyw3IEBAIHVz ZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIHVzZSBGaW5k QmluOwpAQCAtMjU1LDExICsyNTYsMTEgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0 Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jyk7CiAKICMgT3BlbiBhIGJhY2tncm91bmQg cHNxbCBjb25uZWN0aW9uIG9uIHRoZSBwcmltYXJ5IGFuZCBpbmplY3QgYSBiYXJyaWVyIHRv CiAjIGJsb2NrIHByb2dyZXNzIG9uIHRvIGtlZXAgdGhlIHN0YXRlIGZyb20gYWR2YW5jaW5n IHBhc3QgaW5wcm9ncmVzcy1vbgotbXkgJG5vZGVfcHJpbWFyeV9icHNxbCA9ICRub2RlX3By aW1hcnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRub2RlX3ByaW1hcnlfYnBz cWwtPnF1ZXJ5X3NhZmUoJ0NSRUFURSBURU1QT1JBUlkgVEFCTEUgdHQgKGEgaW50ZWdlcik7 Jyk7CitteSAkbm9kZV9wcmltYXJ5X2Jwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFyeSk7Ciskbm9kZV9wcmltYXJ5X2Jwc3FsLT5k bygnQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0dCAoYSBpbnRlZ2VyKTsnKTsKICMgQWxzbyBv cGVuIGEgYmFja2dyb3VuZCBwc3FsIGNvbm5lY3Rpb24gdG8gdGhlIHN0YW5kYnkgdG8gbWFr ZSBzdXJlIHdlIGhhdmUKICMgYW4gYWN0aXZlIGJhY2tlbmQgZHVyaW5nIHByb21vdGlvbi4K LW15ICRub2RlX3N0YW5kYnlfYnBzcWwgPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJyk7CitteSAkbm9kZV9zdGFuZGJ5X2Jwc3FsID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfc3RhbmRieSk7CiAKICMgU3RhcnQg dG8gZW5hYmxlIGNoZWNrc3VtcyBhbmQgd2FpdCB1bnRpbCBib3RoIHByaW1hcnkgYW5kIHN0 YW5kYnkgaGF2ZSBtb3ZlZAogIyB0byB0aGUgaW5wcm9ncmVzcy1vbiBzdGF0ZS4gIFByb2Nl c3Npbmcgd2lsbCBibG9jayBoZXJlIGFzIHRoZSB0ZW1wb3JhcnkgcmVsCkBAIC0yODEsNyAr MjgyLDExIEBAICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5X2Jwc3FsLT5xdWVyeV9zYWZlKCJT SE9XIGRhdGFfY2hlY2tzdW1zOyIpOwogaXMoJHJlc3VsdCwgJ29mZicsCiAJJ2Vuc3VyZSBj aGVja3N1bXMgYXJlIHNldCB0byBvZmYgYWZ0ZXIgcHJvbW90aW9uIGR1cmluZyBpbnByb2dy ZXNzLW9uJyk7CiAKLSRub2RlX3N0YW5kYnlfYnBzcWwtPnF1aXQ7CisjIFRoZSBwcmltYXJ5 J3Mgc2Vzc2lvbiB3YXMga2VwdCBvcGVuIG9ubHkgdG8gaG9sZCB0aGUgYmxvY2tpbmcgdGVt cCB0YWJsZTsKKyMgY2xvc2UgaXQgZXhwbGljaXRseSAoaXRzIGJhY2tlbmQgaXMgYWxyZWFk eSBnb25lIGFmdGVyIHRoZSBjcmFzaCkgc28gaXQgaXMKKyMgbm90IGxlZnQgdG8gYmUgdG9y biBkb3duIGF0IGdsb2JhbCBkZXN0cnVjdGlvbi4KKyRub2RlX3ByaW1hcnlfYnBzcWwtPmNs b3NlOworJG5vZGVfc3RhbmRieV9icHNxbC0+Y2xvc2U7CiAkbm9kZV9zdGFuZGJ5LT5zdG9w OwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9jaGVja3N1bXMvdC8wMDRfb2ZmbGluZS5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9j aGVja3N1bXMvdC8wMDRfb2ZmbGluZS5wbAppbmRleCA3M2MyNzllNzVlMC4uYmU2YjZiNmU0 YzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMDRf b2ZmbGluZS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDA0 X29mZmxpbmUucGwKQEAgLTgsNiArOCw3IEBAIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBUZXN0 OjpNb3JlOwogCiB1c2UgRmluZEJpbjsKQEAgLTUzLDggKzU0LDggQEAgdGVzdF9jaGVja3N1 bV9zdGF0ZSgkbm9kZSwgJ29mZicpOwogIyBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IHNldHRp bmcgdXAgYW4gaW50ZXJhY3RpdmUgcHNxbCBwcm9jZXNzIHdoaWNoIGtlZXBzIHRoZQogIyB0 ZW1wb3JhcnkgdGFibGUgY3JlYXRlZCBhcyB3ZSBlbmFibGUgY2hlY2tzdW1zIGluIGFub3Ro ZXIgcHNxbCBwcm9jZXNzLgogCi1teSAkYnNlc3Npb24gPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotJGJzZXNzaW9uLT5xdWVyeV9zYWZlKCdDUkVBVEUgVEVNUE9S QVJZIFRBQkxFIHR0IChhIGludGVnZXIpOycpOworbXkgJGJzZXNzaW9uID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJGJzZXNzaW9uLT5kbygn Q1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0dCAoYSBpbnRlZ2VyKTsnKTsKIAogIyBJbiBhbm90 aGVyIHNlc3Npb24sIG1ha2Ugc3VyZSB3ZSBjYW4gc2VlIHRoZSBibG9ja2luZyB0ZW1wIHRh YmxlIGJ1dCBzdGFydAogIyBwcm9jZXNzaW5nIGFueXdheXMgYW5kIGNoZWNrIHRoYXQgd2Ug YXJlIGJsb2NrZWQgd2l0aCBhIHByb3BlciB3YWl0IGV2ZW50LgpAQCAtNzAsNyArNzEsNyBA QCBlbmFibGVfZGF0YV9jaGVja3N1bXMoJG5vZGUsIHdhaXQgPT4gJ2lucHJvZ3Jlc3Mtb24n KTsKICMgU3RvcCB0aGUgY2x1c3RlciBiZWZvcmUgZXhpdGluZyB0aGUgYmFja2dyb3VuZCBz ZXNzaW9uIHNpbmNlIG90aGVyd2lzZQogIyBjaGVja3N1bXMgbWlnaHQgaGF2ZSB0aW1lIHRv IGdldCBlbmFibGVkIGJlZm9yZSBzaHV0dGluZyBkb3duIHRoZSBjbHVzdGVyLgogJG5vZGUt PnN0b3AoJ2Zhc3QnKTsKLSRic2Vzc2lvbi0+cXVpdDsKKyRic2Vzc2lvbi0+Y2xvc2U7CiAk bm9kZS0+Y2hlY2tzdW1fZW5hYmxlX29mZmxpbmU7CiAkbm9kZS0+c3RhcnQ7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1X3RpbWVvdXRzLnBsIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDVfdGltZW91dHMucGwKaW5kZXggYzE2 YjdkYmY1ZTYuLmQ2NGE3ODdhOWFiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfbWlzYy90LzAwNV90aW1lb3V0cy5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf bWlzYy90LzAwNV90aW1lb3V0cy5wbApAQCAtNiw2ICs2LDcgQEAgdXNlIHdhcm5pbmdzIEZB VEFMID0+ICdhbGwnOwogdXNlIGxvY2FsZTsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFRlc3Q6 Ok1vcmU7CkBAIC00MiwyNCArNDMsMTYgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycpOwogJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Ry YW5zYWN0aW9uLXRpbWVvdXQnLCAnd2FpdCcpOyIpOwogCi1teSAkcHNxbF9zZXNzaW9uID0g JG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKK215ICRwc3FsX3Nlc3Npb24g PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSMg VGhlIGZvbGxvd2luZyBxdWVyeSB3aWxsIGdlbmVyYXRlIGEgc3RyZWFtIG9mIFNFTEVDVCAx IHF1ZXJpZXMuIFRoaXMgaXMgZG9uZQotIyBzbyB0byBleGVyY2lzZSB0cmFuc2FjdGlvbiB0 aW1lb3V0IGluIHRoZSBwcmVzZW5jZSBvZiBzaG9ydCBxdWVyaWVzLgotIyBOb3RlOiB0aGUg aW50ZXJ2YWwgdmFsdWUgaXMgcGFyc2VkIHdpdGggbG9jYWxlLWF3YXJlIHN0cnRvZCgpCi0k cHNxbF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19iZ19wc3FsLywKLQlz cHJpbnRmKAotCQlxKFxlY2hvIHN0YXJ0aW5nX2JnX3BzcWwKLQkJU0VUIHRyYW5zYWN0aW9u X3RpbWVvdXQgdG8gJzEwbXMnOwotCQlCRUdJTjsKLQkJU0VMRUNUIDEgXHdhdGNoICVnCi0J CVxxCi0pLCAwLjAwMSkpOworJHBzcWxfc2Vzc2lvbi0+ZG8oIlNFVCB0cmFuc2FjdGlvbl90 aW1lb3V0IHRvICcxMG1zJzsiKTsKKworJHBzcWxfc2Vzc2lvbi0+ZG9fYXN5bmMoIkJFR0lO OyBETyAnIGJlZ2luIGxvb3AgUEVSRk9STSBwZ19zbGVlcCgwLjAwMSk7IGVuZCBsb29wOyBl bmQgJzsiKTsKIAogIyBXYWl0IHVudGlsIHRoZSBiYWNrZW5kIGVudGVycyB0aGUgdGltZW91 dCBpbmplY3Rpb24gcG9pbnQuIFdpbGwgZ2V0IGFuIGVycm9yCiAjIGhlcmUgaWYgYW55dGhp bmcgZ29lcyB3cm9uZy4KICRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQn LCAndHJhbnNhY3Rpb24tdGltZW91dCcpOworcGFzcygiZ290IHRyYW5zYWN0aW9uIHRpbWVv dXQgZXZlbnQiKTsKIAogbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIApA QCAtNzAsMTEgKzYzLDkgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBDaGVj ayB0aGF0IHRoZSB0aW1lb3V0IHdhcyBsb2dnZWQuCiAkbm9kZS0+d2FpdF9mb3JfbG9nKCd0 ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byB0cmFuc2FjdGlvbiB0aW1lb3V0JywKIAkk bG9nX29mZnNldCk7CitwYXNzKCJnb3QgdHJhbnNhY3Rpb24gdGltZW91dCBsb2ciKTsKIAot IyBJZiB3ZSBzZW5kIFxxIHdpdGggJHBzcWxfc2Vzc2lvbi0+cXVpdCB0aGUgY29tbWFuZCBj YW4gYmUgc2VudCB0byB0aGUgc2Vzc2lvbgotIyBhbHJlYWR5IGNsb3NlZC4gU28gXHEgaXMg aW4gaW5pdGlhbCBzY3JpcHQsIGhlcmUgd2Ugb25seSBmaW5pc2ggSVBDOjpSdW4uCi0kcHNx bF9zZXNzaW9uLT57cnVufS0+ZmluaXNoOwotCiskcHNxbF9zZXNzaW9uLT5jbG9zZTsKIAog IwogIyAyLiBUZXN0IG9mIHRoZSBpZGxlIGluIHRyYW5zYWN0aW9uIHRpbWVvdXQKQEAgLTg1 LDEwICs3Niw4IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICk7CiAKICMgV2Ug YmVnaW4gYSB0cmFuc2FjdGlvbiBhbmQgdGhlIGhhbmQgb24gdGhlIGxpbmUKLSRwc3FsX3Nl c3Npb24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJHBzcWxfc2Vz c2lvbi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfYmdfcHNxbC8sIHEoCi0gICBcZWNo byBzdGFydGluZ19iZ19wc3FsCiskcHNxbF9zZXNzaW9uLT5yZWNvbm5lY3Q7CiskcHNxbF9z ZXNzaW9uLT5kbyhxKAogICAgU0VUIGlkbGVfaW5fdHJhbnNhY3Rpb25fc2Vzc2lvbl90aW1l b3V0IHRvICcxMG1zJzsKICAgIEJFR0lOOwogKSk7CkBAIC05Niw2ICs4NSw3IEBAICRwc3Fs X3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAogIyBXYWl0IHVudGlsIHRoZSBiYWNrZW5kIGVudGVy cyB0aGUgdGltZW91dCBpbmplY3Rpb24gcG9pbnQuCiAkbm9kZS0+d2FpdF9mb3JfZXZlbnQo J2NsaWVudCBiYWNrZW5kJywKIAknaWRsZS1pbi10cmFuc2FjdGlvbi1zZXNzaW9uLXRpbWVv dXQnKTsKK3Bhc3MoImdvdCBpZGxlIGluIHRyYW5zYWN0aW9uIHRpbWVvdXQgZXZlbnQiKTsK IAogJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIApAQCAtMTA2LDggKzk2LDkg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBDaGVjayB0aGF0IHRoZSB0aW1l b3V0IHdhcyBsb2dnZWQuCiAkbm9kZS0+d2FpdF9mb3JfbG9nKAogCSd0ZXJtaW5hdGluZyBj b25uZWN0aW9uIGR1ZSB0byBpZGxlLWluLXRyYW5zYWN0aW9uIHRpbWVvdXQnLCAkbG9nX29m ZnNldCk7CitwYXNzKCJnb3QgaWRsZSBpbiB0cmFuc2FjdGlvbiB0aW1lb3V0IGxvZyIpOwog Ci1vaygkcHNxbF9zZXNzaW9uLT5xdWl0KTsKKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiAK ICMKQEAgLTExNywxNSArMTA4LDE0IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpZGxlLXNlc3Npb24tdGltZW91 dCcsICd3YWl0Jyk7Iik7CiAKICMgV2UganVzdCBpbml0aWFsaXplIHRoZSBHVUMgYW5kIHdh aXQuIE5vIHRyYW5zYWN0aW9uIGlzIHJlcXVpcmVkLgotJHBzcWxfc2Vzc2lvbiA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVyeV91 bnRpbCgKLQlxci9zdGFydGluZ19iZ19wc3FsLywgcSgKLSAgIFxlY2hvIHN0YXJ0aW5nX2Jn X3BzcWwKKyRwc3FsX3Nlc3Npb24tPnJlY29ubmVjdDsKKyRwc3FsX3Nlc3Npb24tPmRvKHEo CiAgICBTRVQgaWRsZV9zZXNzaW9uX3RpbWVvdXQgdG8gJzEwbXMnOwogKSk7CiAKICMgV2Fp dCB1bnRpbCB0aGUgYmFja2VuZCBlbnRlcnMgdGhlIHRpbWVvdXQgaW5qZWN0aW9uIHBvaW50 LgogJG5vZGUtPndhaXRfZm9yX2V2ZW50KCdjbGllbnQgYmFja2VuZCcsICdpZGxlLXNlc3Np b24tdGltZW91dCcpOworcGFzcygiZ290IGlkbGUgc2Vzc2lvbiB0aW1lb3V0IGV2ZW50Iik7 CiAKICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CiAKQEAgLTEzNiw3ICsxMjYs OCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhlIHRp bWVvdXQgd2FzIGxvZ2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coJ3Rlcm1pbmF0aW5nIGNv bm5lY3Rpb24gZHVlIHRvIGlkbGUtc2Vzc2lvbiB0aW1lb3V0JywKIAkkbG9nX29mZnNldCk7 CitwYXNzKCJnb3QgaWRsZSBzZXNpb24gdGllbW91dCBsb2ciKTsKIAotb2soJHBzcWxfc2Vz c2lvbi0+cXVpdCk7CiskcHNxbF9zZXNzaW9uLT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNo ZV9pbnZhbC5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA3X2NhdGNhY2hl X2ludmFsLnBsCmluZGV4IDQyNDU1NjI2MWM5Li5lOGRkOTkwMDIyYiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwK QEAgLTgsNiArOCw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVz dDo6TW9yZTsKIApAQCAtNDYsMTIgKzQ3LDEyIEBAICRub2RlLT5zYWZlX3BzcWwoCiAgICAg Q1JFQVRFIEZVTkNUSU9OIGZvb2Z1bmMoZHVtbXkgaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2Vy IEFTIFwkXCQgU0VMRUNUIDE7IC8qICRsb25ndGV4dCAqLyBcJFwkIExBTkdVQUdFIFNRTAog XSk7CiAKLW15ICRwc3FsX3Nlc3Npb24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycpOwotbXkgJHBzcWxfc2Vzc2lvbjIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdw b3N0Z3JlcycpOworbXkgJHBzcWxfc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKK215ICRwc3FsX3Nlc3Npb24yID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAjIFNldCBpbmplY3Rp b24gcG9pbnQgaW4gdGhlIHNlc3Npb24sIHRvIHBhdXNlIHdoaWxlIHBvcHVsYXRpbmcgdGhl CiAjIGNhdGNhY2hlIGxpc3QKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoCiskcHNxbF9z ZXNzaW9uLT5kbygKIAlxcVsKICAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKICAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NhdGNhY2hlLWxp c3QtbWlzcy1zeXN0YWJsZS1zY2FuLXN0YXJ0ZWQnLCAnd2FpdCcpOwpAQCAtNTksMTAgKzYw LDkgQEAgJHBzcWxfc2Vzc2lvbi0+cXVlcnlfc2FmZSgKIAogIyBUaGlzIHBhdXNlcyBvbiB0 aGUgaW5qZWN0aW9uIHBvaW50IHdoaWxlIHBvcHVsYXRpbmcgY2F0Y2FjaGUgbGlzdAogIyBm b3IgZnVuY3Rpb25zIHdpdGggbmFtZSAiZm9vZnVuYyIKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5 X3VudGlsKAotCXFyL3N0YXJ0aW5nX2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdf YmdfcHNxbAotICAgU0VMRUNUIGZvb2Z1bmMoMSk7CiskcHNxbF9zZXNzaW9uLT5kb19hc3lu YygKKyAgIHEoCisgICAgICBTRUxFQ1QgZm9vZnVuYygxKTsKICkpOwogCiAjIFdoaWxlIHRo ZSBmaXJzdCBzZXNzaW9uIGlzIGJ1aWxkaW5nIHRoZSBjYXRjYWNoZSBsaXN0LCBjcmVhdGUg YSBuZXcKQEAgLTgzLDE2ICs4MywxOSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyB0cnlpbmcg dG8gZXhlcmNpc2UgaGVyZS4pCiAjCiAjIFRoZSAiU0VMRUNUIGZvb2Z1bmMoMSkiIHF1ZXJ5 IHdpbGwgbm93IGZpbmlzaC4KLSRwc3FsX3Nlc3Npb24yLT5xdWVyeV9zYWZlKAorJHBzcWxf c2Vzc2lvbjItPmRvKAogCXFxWwogICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnY2F0Y2FjaGUtbGlzdC1taXNzLXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwogICAgIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnY2F0Y2FjaGUtbGlzdC1taXNzLXN5c3Rh YmxlLXNjYW4tc3RhcnRlZCcpOwogXSk7CiAKICMgVGVzdCB0aGF0IHRoZSBuZXcgZnVuY3Rp b24gaXMgdmlzaWJsZSB0byB0aGUgc2Vzc2lvbi4KLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3Nh ZmUoIlNFTEVDVCBmb29mdW5jKCk7Iik7CiskcHNxbF9zZXNzaW9uLT53YWl0X2Zvcl9jb21w bGV0aW9uOworbXkgJHJlcyA9ICRwc3FsX3Nlc3Npb24tPnF1ZXJ5KCJTRUxFQ1QgZm9vZnVu YygpOyIpOwogCi1vaygkcHNxbF9zZXNzaW9uLT5xdWl0KTsKLW9rKCRwc3FsX3Nlc3Npb24y LT5xdWl0KTsKK2lzKCRyZXMtPntzdGF0dXN9LCBQR1JFU19UVVBMRVNfT0ssICJnb3QgVFVQ TEVTX09LIik7CisKKyRwc3FsX3Nlc3Npb24tPmNsb3NlOworJHBzcWxfc2Vzc2lvbjItPmNs b3NlOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9taXNjL3QvMDEwX2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnQucGwgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMF9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0LnBs CmluZGV4IDUwYTBlN2RiOGY3Li5kY2ZlZDNhMWE0OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMF9pbmRleF9jb25jdXJyZW50 bHlfdXBzZXJ0LnBsCkBAIC0xMyw2ICsxMyw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fybmlu Z3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwpA QCAtNTEsNDcgKzUyLDM4IEBAIEFMVEVSIFRBQkxFIHRlc3QudGJsZXhwciBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9MCk7CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBS RUlOREVYIENPTkNVUlJFTlRMWSArIFVQU0VSVCAod2FrZXVwIGF0IHNldC1kZWFkIHBoYXNl KScpOwogCi0jIENyZWF0ZSBzZXNzaW9ucyB3aXRoIG9uX2Vycm9yX3N0b3AgPT4gMCBzbyBw c3FsIGRvZXNuJ3QgZXhpdCBvbiBTUUwgZXJyb3JzLgotIyBUaGlzIGFsbG93cyB1cyB0byBj b2xsZWN0IHN0ZGVyciBhbmQgZGV0ZWN0IGVycm9ycyBhZnRlciB0aGUgdGVzdCBjb21wbGV0 ZXMuCi1teSAkczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci1teSAkczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci1teSAkczMgPSAkbm9kZS0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisjIENyZWF0ZSBzZXNz aW9ucyBmb3IgY29uY3VycmVudCBvcGVyYXRpb25zCitteSAkczEgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CitteSAkczIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CitteSAkczMgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKICMgU2V0dXAgaW5q ZWN0aW9uIHBvaW50cyBmb3IgZWFjaCBzZXNzaW9uCi0kczEtPnF1ZXJ5X3NhZmUoCiskczEt PmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1j b25zdHJhaW50LW5vLWNvbmZsaWN0JywgJ3dhaXQnKTsKIF0pOwogCi0kczItPnF1ZXJ5X3Nh ZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwo KTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3Jl LWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZl KAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtcmVsYXRpb24tY29u Y3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcsICd3YWl0Jyk7CiBdKTsKIAogIyBzMyBzdGFy dHMgUkVJTkRFWCAod2lsbCBibG9jayBvbiByZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRs eS1iZWZvcmUtc2V0LWRlYWQpCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Jl aW5kZXgvLCBxWwotXGVjaG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwogCiAjIFdhaXQgZm9y IHMzIHRvIGhpdCBpbmplY3Rpb24gcG9pbnQKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwg J3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCiAj IHMxIHN0YXJ0cyBVUFNFUlQgKHdpbGwgYmxvY2sgb24gY2hlY2stZXhjbHVzaW9uLW9yLXVu aXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0KQotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9z dGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNF UlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhx W0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiAjIFdhaXQgZm9y IHMxIHRvIGhpdCBpbmplY3Rpb24gcG9pbnQKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwg J2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwpA QCAtMTAxLDExICs5Myw3IEBAIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsCiAJJ3Jl aW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCiAjIHMy IHN0YXJ0cyBVUFNFUlQgKHdpbGwgYmxvY2sgb24gZXhlYy1pbnNlcnQtYmVmb3JlLWluc2Vy dC1zcGVjdWxhdGl2ZSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0 X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50 YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0 ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUg U0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogIyBXYWl0IGZvciBzMiB0byBoaXQgaW5q ZWN0aW9uIHBvaW50CiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1i ZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CkBAIC0xMjUsNTEgKzExMywzOSBAQCAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7 CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIENPTkNVUlJF TlRMWSArIFVQU0VSVCAod2FrZXVwIGF0IHN3YXAgcGhhc2UpJyk7CiAKLSRzMSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRz MiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1j b25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3Vs YXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJ cVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc3dhcCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTsKLV0pOworJHMzLT5kb19hc3luYyhx W1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHkt YmVmb3JlLXN3YXAnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNl cnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0 LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VU IHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRP IHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFU RSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5v ZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3Qn KTsKIAogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24t Y29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5T RVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNU IChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0 aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2 ZScpOwogCkBAIC0xODQsNTAgKzE2MCwzOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIENPTkNVUlJFTlRMWSArIFVQU0VSVCAoczEgd2Fr ZXMgYmVmb3JlIHJlaW5kZXgpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRz MSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRz MiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRz MyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAot JHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNr LWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7 CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVj dGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwog XSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2Fp dCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8s IHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2lu dCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVh ZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFb Ci1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFM VUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxw ayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNr LWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiAjIFN0 YXJ0IHMyIEJFRk9SRSB3YWtpbmcgcmVpbmRleCAoa2V5IGRpZmZlcmVuY2UgZnJvbSBwZXJt dXRhdGlvbiAxKQotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIv LCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBr IFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0 ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3Qu dGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQg dXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdl eGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTI0NSw1MiAr MjA5LDQwIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxF IHRlc3QudGJscGsnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJF SU5ERVggKyBVUFNFUlQgT04gQ09OU1RSQUlOVCAoc2V0LWRlYWQgcGhhc2UpJyk7CiAKLSRz MSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3Ry YWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAor JHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNl cnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRz My0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50 aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4 Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRz My0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3Br ZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24t Y29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEK LUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNU IE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBu b3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFM VUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3Bv aW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNv bmZsaWN0Jyk7CiAKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsCiAJJ3JlaW5kZXgt cmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCi0kczItPnF1ZXJ5 X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191 cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9O IENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0 ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3Qu dGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJs cGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5q ZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxh dGl2ZScpOwogCkBAIC0zMDUsNTEgKzI1NywzOSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYICsgVVBTRVJUIE9OIENPTlNUUkFJTlQgKHN3 YXAgcGhhc2UpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVy eV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xv Y2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lv bi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAot JHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMt aW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRz My0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4 LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc3dhcCcsICd3YWl0Jyk7CiBdKTsKIAot JHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0 YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtf cGtleTsKLV0pOworJHMzLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IHRlc3QudGJscGtfcGtleTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAncmVp bmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsKIAotJHMxLT5xdWVy eV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdf dXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBP TiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0 LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRi bHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2lu amVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3Ry YWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAn cmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsKIAotJHMyLT5x dWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3RhcnRp bmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygp KSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0 ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5U IHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9r X2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3Bl Y3VsYXRpdmUnKTsKIApAQCAtMzY0LDUwICszMDQsMzggQEAgJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCArIFVQU0VSVCBPTiBDT05TVFJBSU5U IChzMSB3YWtlcyBiZWZvcmUgcmVpbmRleCknKTsKIAotJHMxID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMz ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCi0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0Jywg J3dhaXQnKTsKIF0pOwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3 YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNU IGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVh ZCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19y ZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIHRlc3QudGJscGtfcGtleTsKLV0pOworJHMzLT5kb19hc3luYyhxW1JFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTtdKTsKIAogb2tfaW5qZWN0 aW9uX3BvaW50KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3Jl LXNldC1kZWFkJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0 X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50 YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxw a19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRv X2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04g Q09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRl ZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1l eGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogIyBTdGFy dCBzMiBCRUZPUkUgd2FraW5nIHJlaW5kZXgKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3Rh cnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJU IElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09O U1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwot XSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEz LCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFU RSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5v ZGUsICdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTQy NSw1MiArMzUzLDQwIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRF IFRBQkxFIHRlc3QudGJscGsnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rl c3Q6IFJFSU5ERVggb24gcGFydGl0aW9uZWQgdGFibGUgKHNldC1kZWFkIHBoYXNlKScpOwog Ci0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0 b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNv bnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2Fm ZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgp OwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUt aW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUo CiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsK IFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25j dXJyZW50bHktYmVmb3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5 X3VudGlsKAotCXFyL3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVjaG8gc3RhcnRpbmdfcmVp bmRleAotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9uX3Br ZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0 ZXN0LnRibF9wYXJ0aXRpb25fcGtleTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2Rl LCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJyk7CiAK LSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hv IHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVT ICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFy dGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2No ZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3 YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1 cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9z dGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNF UlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9O IENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAog b2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1z cGVjdWxhdGl2ZScpOwogCkBAIC00ODUsNTEgKzQwMSwzOSBAQCAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBhcnRlZCcpOwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBvbiBwYXJ0aXRpb25lZCB0 YWJsZSAoc3dhcCBwaGFzZSknKTsKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMx ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMy ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMz ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0k czEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2st ZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0JywgJ3dhaXQnKTsK IF0pOwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBd KTsKIAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJywgJ3dhaXQnKTsK IF0pOwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwot XGVjaG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVz dC50YmxfcGFydGl0aW9uX3BrZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0aXRpb25fcGtleTtdKTsKIAogb2tfaW5q ZWN0aW9uX3BvaW50KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVm b3JlLXN3YXAnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRf czEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRi bHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBT RVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElO VE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3Bv aW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNv bmZsaWN0Jyk7CiAKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJl bGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc3dhcCcpOwogCi0kczItPnF1ZXJ5X3VudGls KAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRf czIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBD T05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRz Mi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBu b3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygp O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZvcmUt aW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTU0NCw1MCArNDQ4LDM4IEBAICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGFydGVkJyk7 CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIG9uIHBhcnRp dGlvbmVkIHRhYmxlIChzMSB3YWtlcyBiZWZvcmUgcmVpbmRleCknKTsKIAotJHMxID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwot JHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9w ID0+IDApOwotJHMzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOwogCi0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5v LWNvbmZsaWN0JywgJ3dhaXQnKTsKIF0pOwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRv KAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVj dWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJl Zm9yZS1zZXQtZGVhZCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlx ci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7Cisk czMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFy dGl0aW9uX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgt cmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5 X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191 cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1d KTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMg KDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogIyBTdGFydCBzMiBC RUZPUkUgd2FraW5nIHJlaW5kZXgKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdf dXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8g dGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lO U0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElD VCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVj dGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRp dmUnKTsKIApAQCAtNjA3LDM1ICs0OTksMjcgQEAgbm90ZSgKIAknVGVzdDogUkVJTkRFWCBv biBwYXJ0aXRpb25lZCB0YWJsZSwgY2FjaGUgaW52YWwgYmV0d2VlbiB0d28gZ2V0X3BhcnRp dGlvbl9hbmNlc3RvcnMnCiApOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdw b3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+ YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRz MS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWlu aXQtcGFydGl0aW9uLWFmdGVyLWdldC1wYXJ0aXRpb24tYW5jZXN0b3JzJywgJ3dhaXQnKTsK IF0pOwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnLCAnd2FpdCcp OwogXSk7CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFb Ci1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0 ZXN0LnRibF9wYXJ0aXRpb25fcGtleTsKLV0pOworJHMyLT5kb19hc3luYyhxW1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5O10pOwogCiBva19p bmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1i ZWZvcmUtc3dhcCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2Vy dF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3Qu dGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQg SU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25f cG9pbnQoJG5vZGUsCiAJJ2V4ZWMtaW5pdC1wYXJ0aXRpb24tYWZ0ZXItZ2V0LXBhcnRpdGlv bi1hbmNlc3RvcnMnKTsKQEAgLTY1NCwyNiArNTM4LDI0IEBAIG5vdGUoJ1Rlc3Q6IENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQnKTsKICMgVXNlcyBpbnZhbGlkYXRlLWNh dGFsb2ctc25hcHNob3QtZW5kIHRvIHRlc3QgY2F0YWxvZyBpbnZhbGlkYXRpb24KICMgZHVy aW5nIFVQU0VSVAogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdw b3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLW15ICRzMV9waWQg PSAkczEtPnF1ZXJ5X3NhZmUoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisjIEdldCB0 aGUgc2Vzc2lvbidzIGJhY2tlbmQgUElEIGJlZm9yZSBhdHRhY2hpbmcgaW5qZWN0aW9uIHBv aW50cworbXkgJHMxX3BpZCA9ICRzMS0+cXVlcnlfb25ldmFsKCdTRUxFQ1QgcGdfYmFja2Vu ZF9waWQoKScpOwogCiAjIHMxIGF0dGFjaGVzIEJPVEggaW5qZWN0aW9uIHBvaW50cyAtIHRo ZSB1bmlxdWUgY29uc3RyYWludCBjaGVjayBBTkQgY2F0YWxvZyBzbmFwc2hvdAotJHMxLT5x dWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1 c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsK IAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9hdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50Lywg cVsKLVxlY2hvIGF0dGFjaGluZ19pbmplY3Rpb25fcG9pbnQKLVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0 Jyk7Ci1dKTsKLQogIyBJbiBjYXNlcyBvZiBjYWNoZSBjbG9iYmVyaW5nLCBzMSBtYXkgaGl0 IHRoZSBpbmplY3Rpb24gcG9pbnQgZHVyaW5nIGF0dGFjaC4KKyMgU3RhcnQgYXR0YWNoIGFz eW5jaHJvbm91c2x5IHNvIHdlIGNhbiBjaGVjayBpZiBpdCBibG9ja3MuCiskczEtPmRvX2Fz eW5jKHFbU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbnZhbGlkYXRlLWNhdGFs b2ctc25hcHNob3QtZW5kJywgJ3dhaXQnKTtdKTsKKwogIyBXYWl0IGZvciB0aGF0IHNlc3Np b24gdG8gYmVjb21lIGlkbGUgKGF0dGFjaCBjb21wbGV0ZWQpLCBvciB3YWtlIGl0IHVwIGlm CiAjIGl0IGJlY29tZXMgc3R1Y2sgb24gaW5qZWN0aW9uIHBvaW50LgogaWYgKCF3YWl0X2Zv cl9pZGxlKCRub2RlLCAkczFfcGlkKSkKQEAgLTY4NywzNCArNTY5LDI4IEBAIGlmICghd2Fp dF9mb3JfaWRsZSgkbm9kZSwgJHMxX3BpZCkpCiAJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCV0pOwogfQor IyBXYWl0IGZvciBhc3luYyBjb21tYW5kIHRvIGNvbXBsZXRlCiskczEtPndhaXRfZm9yX2Nv bXBsZXRpb247CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQn KTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnLCAnd2FpdCcpOwogXSk7CiAK ICMgczM6IFN0YXJ0IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgKGJsb2NrcyBvbiBkZWZp bmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCkKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3Rh cnRpbmdfY3JlYXRlX2luZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX2NyZWF0ZV9pbmRleAot Q1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRlIE9O IHRlc3QudGJscGsoaSk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtDUkVBVEUgVU5JUVVFIElO REVYIENPTkNVUlJFTlRMWSB0YmxfcGtleV9kdXBsaWNhdGUgT04gdGVzdC50YmxwayhpKTtd KTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4LWJlZm9yZS1z ZXQtdmFsaWQnKTsKIAogIyBzMTogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24gaW52YWxpZGF0 ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCkKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRp bmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElO VE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBE QVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNF UlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3Bv aW50KCRub2RlLCAnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCkBAIC03 MjIsMTEgKzU5OCw3IEBAIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUt Y2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdkZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMyOiBTdGFydCBVUFNF UlQgKGJsb2NrcyBvbiBleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlKQot JHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8g c3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVT ICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1i ZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTc0NywyNCArNjE5LDIwIEBAICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGFy dGVkJyk7CiBub3RlKCdUZXN0OiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9uIHBhcnRp YWwgaW5kZXggKyBVUFNFUlQnKTsKICMgVXNlcyBpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNo b3QtZW5kIHRvIHRlc3QgY2F0YWxvZyBpbnZhbGlkYXRpb24gZHVyaW5nIFVQU0VSVAogCi0k czEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMV9waWQgPSAkczEtPnF1ZXJ5X3NhZmUo J1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CiskczFfcGlkID0gJHMxLT5xdWVyeV9vbmV2 YWwoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CiAKICMgczEgYXR0YWNoZXMgQk9USCBp bmplY3Rpb24gcG9pbnRzIC0gdGhlIHVuaXF1ZSBjb25zdHJhaW50IGNoZWNrIEFORCBjYXRh bG9nIHNuYXBzaG90Ci0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZs aWN0JywgJ3dhaXQnKTsKIF0pOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL2F0dGFjaGlu Z19pbmplY3Rpb25fcG9pbnQvLCBxWwotXGVjaG8gYXR0YWNoaW5nX2luamVjdGlvbl9wb2lu dAotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbnZhbGlkYXRlLWNhdGFsb2ct c25hcHNob3QtZW5kJywgJ3dhaXQnKTsKLV0pOworJHMxLT5kbyhxW1NFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3 YWl0Jyk7XSk7CiAKICMgSW4gY2FzZXMgb2YgY2FjaGUgY2xvYmJlcmluZywgczEgbWF5IGhp dCB0aGUgaW5qZWN0aW9uIHBvaW50IGR1cmluZyBhdHRhY2guCiAjIFdhaXQgZm9yIHRoYXQg c2Vzc2lvbiB0byBiZWNvbWUgaWRsZSAoYXR0YWNoIGNvbXBsZXRlZCksIG9yIHdha2UgaXQg dXAgaWYKQEAgLTc4MSwzMyArNjQ5LDI1IEBAIGlmICghd2FpdF9mb3JfaWRsZSgkbm9kZSwg JHMxX3BpZCkpCiAJXSk7CiB9CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsK IFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZl JywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnLCAnd2FpdCcp OwogXSk7CiAKICMgczM6IFN0YXJ0IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgKGJsb2Nr cyBvbiBkZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCkKLSRzMy0+cXVlcnlfdW50aWwo Ci0JcXIvc3RhcnRpbmdfY3JlYXRlX2luZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX2NyZWF0 ZV9pbmRleAotQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfc3Bl Y2lhbF9kdXBsaWNhdGUgT04gdGVzdC50YmxleHByKGFicyhpKSkgV0hFUkUgaSA8IDEwMDAw OwotXSk7CiskczMtPmRvX2FzeW5jKHFbQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5U TFkgdGJsX3BrZXlfc3BlY2lhbF9kdXBsaWNhdGUgT04gdGVzdC50YmxleHByKGFicyhpKSkg V0hFUkUgaSA8IDEwMDAwO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdkZWZp bmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMxOiBTdGFydCBVUFNFUlQgKGJs b2NrcyBvbiBpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5kKQotJHMxLT5xdWVyeV91 bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBz ZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibGV4cHIgVkFMVUVTKDEzLG5vdygpKSBPTiBD T05GTElDVCAoYWJzKGkpKSBXSEVSRSBpIDwgMTAwIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxl eHByIFZBTFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hFUkUgaSA8IDEw MCBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9u X3BvaW50KCRub2RlLCAnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCkBA IC04MTUsMTEgKzY3NSw3IEBAIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRh dGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5v ZGUsICdkZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMyOiBTdGFydCBV UFNFUlQgKGJsb2NrcyBvbiBleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZl KQotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVj aG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibGV4cHIgVkFMVUVT KDEzLG5vdygpKSBPTiBDT05GTElDVCAoYWJzKGkpKSBXSEVSRSBpIDwgMTAwIERPIFVQREFU RSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJU IElOVE8gdGVzdC50YmxleHByIFZBTFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhp KSkgV0hFUkUgaSA8IDEwMCBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsK IAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2Vy dC1zcGVjdWxhdGl2ZScpOwogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFs aWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKQEAgLTkyMCwzMyArNzc2LDIzIEBAIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnJHBvaW50X25hbWUnKTsKIF0pOwogfQog Ci0jIFdhaXQgZm9yIGFueSBwZW5kaW5nIHF1ZXJ5IHRvIGNvbXBsZXRlLCBjYXB0dXJlIHN0 ZGVyciwgYW5kIGNsb3NlIHRoZSBzZXNzaW9uLgotIyBSZXR1cm5zIHRoZSBzdGRlcnIgb3V0 cHV0IChleGNsdWRpbmcgaW50ZXJuYWwgbWFya2VycykuCisjIFdhaXQgZm9yIGFueSBwZW5k aW5nIHF1ZXJ5IHRvIGNvbXBsZXRlIGFuZCBjbG9zZSB0aGUgc2Vzc2lvbi4KKyMgUmV0dXJu cyBlbXB0eSBzdHJpbmcgb24gc3VjY2VzcywgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgog c3ViIHNhZmVfcXVpdAogewogCW15ICgkc2Vzc2lvbikgPSBAXzsKIAotCSMgU2VuZCBhIG1h cmtlciBhbmQgd2FpdCBmb3IgaXQgdG8gZW5zdXJlIGFueSBwZW5kaW5nIHF1ZXJ5IGNvbXBs ZXRlcwotCW15ICRiYW5uZXIgPSAic2FmZV9xdWl0X21hcmtlciI7Ci0JbXkgJGJhbm5lcl9t YXRjaCA9IHFyLyhefFxuKSRiYW5uZXJccj9cbi87CisJIyBXYWl0IGZvciBhbnkgYXN5bmMg cXVlcmllcyB0byBjb21wbGV0ZQorCSRzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOwog Ci0JJHNlc3Npb24tPntzdGRpbn0gLj0gIlxcZWNobyAkYmFubmVyXG5cXHdhcm4gJGJhbm5l clxuIjsKLQotCXB1bXBfdW50aWwoCi0JCSRzZXNzaW9uLT57cnVufSwgJHNlc3Npb24tPnt0 aW1lb3V0fSwKLQkJXCRzZXNzaW9uLT57c3Rkb3V0fSwgJGJhbm5lcl9tYXRjaCk7Ci0JcHVt cF91bnRpbCgKLQkJJHNlc3Npb24tPntydW59LCAkc2Vzc2lvbi0+e3RpbWVvdXR9LAotCQlc JHNlc3Npb24tPntzdGRlcnJ9LCAkYmFubmVyX21hdGNoKTsKLQotCSMgQ2FwdHVyZSBzdGRl cnIgKGV4Y2x1ZGluZyB0aGUgYmFubmVyKQotCW15ICRzdGRlcnIgPSAkc2Vzc2lvbi0+e3N0 ZGVycn07Ci0JJHN0ZGVyciA9fiBzLyRiYW5uZXJfbWF0Y2gvLzsKKwkjIENoZWNrIGNvbm5l Y3Rpb24gc3RhdHVzCisJbXkgJHN0YXR1cyA9ICRzZXNzaW9uLT5jb25uX3N0YXR1czsKIAog CSMgQ2xvc2UgdGhlIHNlc3Npb24KLQkkc2Vzc2lvbi0+cXVpdDsKKwkkc2Vzc2lvbi0+Y2xv c2U7CiAKLQlyZXR1cm4gJHN0ZGVycjsKKwkjIFJldHVybiBlbXB0eSBzdHJpbmcgaWYgY29u bmVjdGlvbiB3YXMgT0ssIG90aGVyd2lzZSByZXR1cm4gZXJyb3IKKwlyZXR1cm4gKCRzdGF0 dXMgPT0gQ09OTkVDVElPTl9PSykgPyAnJyA6ICdjb25uZWN0aW9uIGVycm9yJzsKIH0KIAog IyBIZWxwZXIgZnVuY3Rpb246IHZlcmlmeSB0aGF0IHRoZSBnaXZlbiBzZXNzaW9ucyBleGl0 IGNsZWFubHkuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAx MV9sb2NrX3N0YXRzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTFfbG9j a19zdGF0cy5wbAppbmRleCA0NWQ3ZDI2ZjcwYy4uMDBjMWFiMDBkZjIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDExX2xvY2tfc3RhdHMucGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTFfbG9ja19zdGF0cy5wbApAQCAtMTks NiArMTksNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGVzdDo6TW9yZTsKIAogcGxhbiBz a2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVp bGQnCkBAIC0zMiwxNSArMzMsMTIgQEAgbXkgJG5vZGU7CiAjIFNldHVwIHRoZSAyIHNlc3Np b25zCiBzdWIgc2V0dXBfc2Vzc2lvbnMKIHsKLQkkczEgPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotCSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJyk7CisJJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JG5vZGUpOworCSRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlKTsKIAogCSMgU2V0dXAgaW5qZWN0aW9uIHBvaW50cyBmb3IgdGhlIHdhaXRpbmcg c2Vzc2lvbgotCSRzMi0+cXVlcnlfdW50aWwoCi0JCXFyL2F0dGFjaGluZ19pbmplY3Rpb25f cG9pbnQvLCBxWwotCQkJXGVjaG8gYXR0YWNoaW5nX2luamVjdGlvbl9wb2ludAotCQkJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdkZWFkbG9jay10aW1lb3V0LWZpcmVkJywg J3dhaXQnKTsKLQkJXSk7CisJJHMyLT5kbygKKwkJcVtTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2RlYWRsb2NrLXRpbWVvdXQtZmlyZWQnLCAnd2FpdCcpO10pOwogfQogCiAj IEZldGNoIHdhaXRzIGFuZCB3YWl0X3RpbWUgZnJvbSBwZ19zdGF0X2xvY2sgZm9yIGEgZ2l2 ZW4gbG9jayB0eXBlCkBAIC05OCw3ICs5Niw3IEBAIHNldHVwX3Nlc3Npb25zKCk7CiAKIG15 ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CiAKLSRzMS0+cXVlcnlfc2FmZSgK KyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgnbG9jaycpOwog QkVHSU47CkBAIC0xMDYsMTcgKzEwNCwxMyBAQCBMT0NLIFRBQkxFIHRlc3Rfc3RhdF90YWI7 CiBdKTsKIAogIyBzMiBzZXR1cAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwog QkVHSU47CiBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBdKTsKICMgczIg YmxvY2tzIG9uIExPQ0suCi0kczItPnF1ZXJ5X3VudGlsKAotCXFyL2xvY2tfczIvLCBxWwot XGVjaG8gbG9ja19zMgotTE9DSyBUQUJMRSB0ZXN0X3N0YXRfdGFiOwotXSk7CiskczItPmRv X2FzeW5jKHEoTE9DSyBUQUJMRSB0ZXN0X3N0YXRfdGFiOykpOwogCiB3YWl0X2FuZF9kZXRh Y2goJG5vZGUsICdkZWFkbG9jay10aW1lb3V0LWZpcmVkJyk7CiAKQEAgLTEzNiw4ICsxMzAs OSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogJG5vZGUtPndhaXRfZm9yX2xvZyhxci9sb2dnaW5n IG1lbW9yeSBjb250ZXh0cy8sICRsb2dfb2Zmc2V0KTsKIAogIyBkZWFkbG9ja190aW1lb3V0 IGZpcmVkLCBub3cgY29tbWl0IGluIHMxIGFuZCBzMgotJHMxLT5xdWVyeV9zYWZlKHEoQ09N TUlUKSk7Ci0kczItPnF1ZXJ5X3NhZmUocShDT01NSVQpKTsKKyRzMS0+ZG8ocShDT01NSVQp KTsKKyRzMi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRzMi0+ZG8ocShDT01NSVQpKTsKIAog IyBjaGVjayB0aGF0IHBnX3N0YXRfbG9jayBoYXMgYmVlbiB1cGRhdGVkCiB3YWl0X2Zvcl9w Z19zdGF0X2xvY2soJG5vZGUsICdyZWxhdGlvbicpOwpAQCAtMTU4LDggKzE1Myw4IEBAIGlz KCBzY2FsYXIgQHN0aWxsX3dhaXRpbmcsCiApOwogCiAjIGNsb3NlIHNlc3Npb25zCi0kczEt PnF1aXQ7Ci0kczItPnF1aXQ7CiskczEtPmNsb3NlOworJHMyLT5jbG9zZTsKIAogIyMjIyMj IyB0cmFuc2FjdGlvbiBsb2NrCiAKQEAgLTE2NywyNyArMTYyLDMxIEBAIHNldHVwX3Nlc3Np b25zKCk7CiAKICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CiAKLSRzMS0+cXVl cnlfc2FmZSgKKyMgVGhlIElOU0VSVCBtdXN0IGF1dG9jb21taXQgYmVmb3JlIHRoZSBleHBs aWNpdCB0cmFuc2FjdGlvbiBpcyBvcGVuZWQsIHNvCisjIHRoYXQgc2Vzc2lvbiBzMiBjYW4g c2VlIHJvd3MgazEvazIvazMgYW5kIGJsb2NrIG9uIHMxJ3Mgcm93IGxvY2suICBTZW5kIGl0 CisjIHNlcGFyYXRlbHkgZnJvbSB0aGUgQkVHSU4gYmxvY2s6IGEgc2luZ2xlIG11bHRpLXN0 YXRlbWVudCBxdWVyeSBjb250YWluaW5nCisjIEJFR0lOIHdvdWxkIHJ1biB0aGUgSU5TRVJU IGluc2lkZSB0aGUgc3RpbGwtb3BlbiB0cmFuc2FjdGlvbiwgbGVhdmluZyB0aGUKKyMgcm93 cyBpbnZpc2libGUgdG8gczIgKHNvIGl0cyBVUERBVEUgd291bGQgbWF0Y2ggbm90aGluZyBh bmQgbmV2ZXIgd2FpdCkuCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9z aGFyZWQoJ2xvY2snKTsKIElOU0VSVCBJTlRPIHRlc3Rfc3RhdF90YWIoa2V5LCB2YWx1ZSkg VkFMVUVTKCdrMScsIDEpLCAoJ2syJywgMSksICgnazMnLCAxKTsKK10pOworJHMxLT5kbygK KwlxWwogQkVHSU47CiBVUERBVEUgdGVzdF9zdGF0X3RhYiBTRVQgdmFsdWUgPSB2YWx1ZSAr IDEgV0hFUkUga2V5ID0gJ2sxJzsKIF0pOwogCiAjIHMyIHNldHVwCi0kczItPnF1ZXJ5X3Nh ZmUoCiskczItPmRvKAogCXFbCiBTRVQgbG9nX2xvY2tfd2FpdHMgPSBvbjsKIEJFR0lOOwog U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogXSk7CiAjIHMyIGJsb2NrcyBo ZXJlIG9uIFVQREFURQotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9sb2NrX3MyLywgcVsKLVxl Y2hvIGxvY2tfczIKLVVQREFURSB0ZXN0X3N0YXRfdGFiIFNFVCB2YWx1ZSA9IHZhbHVlICsg MSBXSEVSRSBrZXkgPSAnazEnOwotXSk7CiskczItPmRvX2FzeW5jKHEoVVBEQVRFIHRlc3Rf c3RhdF90YWIgU0VUIHZhbHVlID0gdmFsdWUgKyAxIFdIRVJFIGtleSA9ICdrMSc7KSk7CiAK IHdhaXRfYW5kX2RldGFjaCgkbm9kZSwgJ2RlYWRsb2NrLXRpbWVvdXQtZmlyZWQnKTsKIApA QCAtMTk2LDggKzE5NSw5IEBAICRub2RlLT53YWl0X2Zvcl9sb2cocXIvc3RpbGwgd2FpdGlu ZyBmb3IgU2hhcmVMb2NrIG9uIHRyYW5zYWN0aW9uLywKIAkkbG9nX29mZnNldCk7CiAKICMg ZGVhZGxvY2tfdGltZW91dCBmaXJlZCwgbm93IGNvbW1pdCBpbiBzMSBhbmQgczIKLSRzMS0+ cXVlcnlfc2FmZShxKENPTU1JVCkpOwotJHMyLT5xdWVyeV9zYWZlKHEoQ09NTUlUKSk7Cisk czEtPmRvKHEoQ09NTUlUKSk7CiskczItPndhaXRfZm9yX2NvbXBsZXRpb247CiskczItPmRv KHEoQ09NTUlUKSk7CiAKICMgY2hlY2sgdGhhdCBwZ19zdGF0X2xvY2sgaGFzIGJlZW4gdXBk YXRlZAogd2FpdF9mb3JfcGdfc3RhdF9sb2NrKCRub2RlLCAndHJhbnNhY3Rpb25pZCcpOwpA QCAtMjA4LDggKzIwOCw4IEBAIG9rKDEsICJMb2NrIHN0YXRzIG9rIGZvciB0cmFuc2FjdGlv bmlkIik7CiAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL2FjcXVpcmVkIFNoYXJlTG9jayBvbiB0 cmFuc2FjdGlvbi8sICRsb2dfb2Zmc2V0KTsKIAogIyBDbG9zZSBzZXNzaW9ucwotJHMxLT5x dWl0OwotJHMyLT5xdWl0OworJHMxLT5jbG9zZTsKKyRzMi0+Y2xvc2U7CiAKICMjIyMjIyMg YWR2aXNvcnkgbG9jawogCkBAIC0yMTcsMjUgKzIxNywyMSBAQCBzZXR1cF9zZXNzaW9ucygp OwogCiAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCi0kczEtPnF1ZXJ5X3Nh ZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ2xvY2sn KTsKIFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEpOwogXSk7CiAKICMgczIgc2V0dXAKLSRz Mi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFVCBsb2dfbG9ja193YWl0cyA9IG9u OwogQkVHSU47CiBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBdKTsKICMg czIgYmxvY2tzIG9uIHRoZSBhZHZpc29yeSBsb2NrLgotJHMyLT5xdWVyeV91bnRpbCgKLQlx ci9sb2NrX3MyLywgcVsKLVxlY2hvIGxvY2tfczIKLVNFTEVDVCBwZ19hZHZpc29yeV9sb2Nr KDEpOwotXSk7CiskczItPmRvX2FzeW5jKHEoU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMSk7 KSk7CiAKIHdhaXRfYW5kX2RldGFjaCgkbm9kZSwgJ2RlYWRsb2NrLXRpbWVvdXQtZmlyZWQn KTsKIApAQCAtMjQ0LDggKzI0MCw5IEBAICRub2RlLT53YWl0X2Zvcl9sb2cocXIvc3RpbGwg d2FpdGluZyBmb3IgRXhjbHVzaXZlTG9jayBvbiBhZHZpc29yeSBsb2NrLywKIAkkbG9nX29m ZnNldCk7CiAKICMgZGVhZGxvY2tfdGltZW91dCBmaXJlZCwgbm93IHVubG9jayBhbmQgY29t bWl0IHMyCi0kczEtPnF1ZXJ5X3NhZmUocShTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEp KSk7Ci0kczItPnF1ZXJ5X3NhZmUoCiskczEtPmRvKHEoU0VMRUNUIHBnX2Fkdmlzb3J5X3Vu bG9jaygxKSkpOworJHMyLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJHMyLT5kbygKIAlxWwog U0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxKTsKIENPTU1JVDsKQEAgLTI2MCw4ICsyNTcs OCBAQCBvaygxLCAiTG9jayBzdGF0cyBvayBmb3IgYWR2aXNvcnkiKTsKICRub2RlLT53YWl0 X2Zvcl9sb2cocXIvYWNxdWlyZWQgRXhjbHVzaXZlTG9jayBvbiBhZHZpc29yeSBsb2NrLywg JGxvZ19vZmZzZXQpOwogCiAjIENsb3NlIHNlc3Npb25zCi0kczEtPnF1aXQ7Ci0kczItPnF1 aXQ7CiskczEtPmNsb3NlOworJHMyLT5jbG9zZTsKIAogIyMjIyMjIyBFbnN1cmUgbG9nX2xv Y2tfd2FpdHMgaGFzIG5vIGltcGFjdAogCkBAIC0yNjksNyArMjY2LDcgQEAgc2V0dXBfc2Vz c2lvbnMoKTsKIAogJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIAotJHMxLT5x dWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVk KCdsb2NrJyk7CiBCRUdJTjsKQEAgLTI3NywyNCArMjc0LDIxIEBAIExPQ0sgVEFCTEUgdGVz dF9zdGF0X3RhYjsKIF0pOwogCiAjIHMyIHNldHVwCi0kczItPnF1ZXJ5X3NhZmUoCiskczIt PmRvKAogCXFbCiBTRVQgbG9nX2xvY2tfd2FpdHMgPSBvZmY7CiBCRUdJTjsKIFNFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIF0pOwogIyBzMiBibG9ja3Mgb24gTE9DSy4K LSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvbG9ja19zMi8sIHFbCi1cZWNobyBsb2NrX3MyCi1M T0NLIFRBQkxFIHRlc3Rfc3RhdF90YWI7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocShMT0NLIFRB QkxFIHRlc3Rfc3RhdF90YWI7KSk7CiAKIHdhaXRfYW5kX2RldGFjaCgkbm9kZSwgJ2RlYWRs b2NrLXRpbWVvdXQtZmlyZWQnKTsKIAogIyBkZWFkbG9ja190aW1lb3V0IGZpcmVkLCBub3cg Y29tbWl0IGluIHMxIGFuZCBzMgotJHMxLT5xdWVyeV9zYWZlKHEoQ09NTUlUKSk7Ci0kczIt PnF1ZXJ5X3NhZmUocShDT01NSVQpKTsKKyRzMS0+ZG8ocShDT01NSVQpKTsKKyRzMi0+d2Fp dF9mb3JfY29tcGxldGlvbjsKKyRzMi0+ZG8ocShDT01NSVQpKTsKIAogIyBjaGVjayB0aGF0 IHBnX3N0YXRfbG9jayBoYXMgYmVlbiB1cGRhdGVkCiB3YWl0X2Zvcl9wZ19zdGF0X2xvY2so JG5vZGUsICdyZWxhdGlvbicpOwpAQCAtMzEwLDggKzMwNCw4IEBAIG9rKCAhJG5vZGUtPmxv Z19jb250YWlucygKICk7CiAKICMgY2xvc2Ugc2Vzc2lvbnMKLSRzMS0+cXVpdDsKLSRzMi0+ cXVpdDsKKyRzMS0+Y2xvc2U7CiskczItPmNsb3NlOwogCiAjIGNsZWFudXAKICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIFRBQkxFIHRlc3Rfc3RhdF90YWI7XSk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxM190ZW1wX29ial9t dWx0aXNlc3Npb24ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxM190ZW1w X29ial9tdWx0aXNlc3Npb24ucGwKaW5kZXggNWYzY2M3ZDJmYzUuLjBiMTViMGJkZTA4IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxM190ZW1wX29ial9t dWx0aXNlc3Npb24ucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTNf dGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsCkBAIC0yMCwyMSArMjAsMjEgQEAgdXNlIHN0cmlj dDsKIHVzZSB3YXJuaW5nczsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwotdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkJhY2tn cm91bmRQc3FsOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGVzdDo6 TW9yZTsKIAogbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rl bXBfbG9jaycpOwogJG5vZGUtPmluaXQ7CiAkbm9kZS0+c3RhcnQ7CiAKLSMgT3duZXIgc2Vz c2lvbi4gIENyZWF0ZWQgdmlhIGJhY2tncm91bmRfcHNxbCBzbyBpdCBzdGF5cyBhbGl2ZSB3 aGlsZQotIyB0aGUgc2Vjb25kIHNlc3Npb24gcHJvYmVzIGl0cyB0ZW1wIG9iamVjdHMuCi1t eSAkcHNxbDEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworIyBPd25l ciBzZXNzaW9uLiAgQ3JlYXRlZCBhcyBhIHBlcnNpc3RlbnQgbGlicHEgc2Vzc2lvbiBzbyBp dCBzdGF5cyBhbGl2ZQorIyB3aGlsZSB0aGUgc2Vjb25kIHNlc3Npb24gcHJvYmVzIGl0cyB0 ZW1wIG9iamVjdHMuCitteSAkcHNxbDEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiAKICMgSW5pdGlhbGx5IGNyZWF0ZSB0aGUgdGFibGUgd2l0 aG91dCBhbiBpbmRleCwgc28gcmVhZCBwYXRocyBnbyBzdHJhaWdodAogIyB0aHJvdWdoIHRo ZSByZWFkLXN0cmVhbSAvIGJ1ZmZlci1tYW5hZ2VyIGVudHJ5IHBvaW50cyB3aXRob3V0IGJl aW5nCiAjIG1hc2tlZCBieSBhbiBpbmRleCBzY2FuIHRoYXQgd291bGQgaGl0IFJlYWRCdWZm ZXJfY29tbW9uIGZyb20gbmJ0cmVlLgotJHBzcWwxLT5xdWVyeV9zYWZlKHEoQ1JFQVRFIFRF TVAgVEFCTEUgZm9vIEFTIFNFTEVDVCA0MiBBUyB2YWw7KSk7CiskcHNxbDEtPmRvKHEoQ1JF QVRFIFRFTVAgVEFCTEUgZm9vIEFTIFNFTEVDVCA0MiBBUyB2YWw7KSk7CiAKICMgUmVzb2x2 ZSB0aGUgb3duZXIncyB0ZW1wIHNjaGVtYSBzbyB0aGUgcHJvYmluZyBzZXNzaW9uIGNhbiBy ZWZlciB0bwogIyB0aGUgdGFibGUgYnkgYSBmdWxseS1xdWFsaWZpZWQgbmFtZS4KQEAgLTEz MCw3ICsxMzAsNyBAQCBsaWtlKCRzdGRlcnIsCiAjIE5vdyBjcmVhdGUgYW4gaW5kZXggdG8g ZXhlcmNpc2UgdGhlIGluZGV4LXNjYW4gcGF0aC4gIG5idHJlZSBjYWxscwogIyBSZWFkQnVm ZmVyICh3aGljaCBpcyBSZWFkQnVmZmVyRXh0ZW5kZWQgLT4gUmVhZEJ1ZmZlcl9jb21tb24p LCBzbwogIyB0aGlzIGV4ZXJjaXNlcyBhIGRpZmZlcmVudCBjaGFpbiBvZiBidWZmZXItbWFu YWdlciBlbnRyeSBwb2ludHMuCi0kcHNxbDEtPnF1ZXJ5X3NhZmUocShDUkVBVEUgSU5ERVgg T04gZm9vKHZhbCk7KSk7CiskcHNxbDEtPmRvKHEoQ1JFQVRFIElOREVYIE9OIGZvbyh2YWwp OykpOwogCiAkbm9kZS0+cHNxbCgKIAkncG9zdGdyZXMnLApAQCAtMTU2LDcgKzE1Niw3IEBA IGxpa2UoJHN0ZGVyciwgcXIvY2Fubm90IGFsdGVyIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3Ro ZXIgc2Vzc2lvbnMvLAogIyBvcGVyYXRpb25zIC0tIHRoZXkgZG9uJ3QgcmVhZCB0aGUgdW5k ZXJseWluZyB0YWJsZSAtLSB3aGljaAogIyBkb2N1bWVudHMgdGhlIGJvdW5kYXJ5IGJldHdl ZW4gY2F0YWxvZyBhbmQgZGF0YSBhY2Nlc3MgZm9yIHRlbXAKICMgb2JqZWN0cy4KLSRwc3Fs MS0+cXVlcnlfc2FmZSgKKyRwc3FsMS0+ZG8oCiAJCXFbQ1JFQVRFIEZVTkNUSU9OIHBnX3Rl bXAuZm9vX2lkKHIgZm9vKSBSRVRVUk5TIGludCBMQU5HVUFHRSBTUUwgXQogCSAgLiBxW0FT ICdTRUxFQ1Qgci52YWwnO10pOwogCkBAIC0xODcsNyArMTg3LDcgQEAgaXMoJHN0ZGVyciwg JycsICdEUk9QIFRBQkxFIGlzIGFsbG93ZWQnKTsKICMgaW50byB0aGUgY3JlYXRvcidzIHBn X3RlbXAgbmFtZXNwYWNlIHdpdGggYW4gYXV0by1kZXBlbmRlbmN5IG9uCiAjIHRoZSBib3Jy b3dlZCB0eXBlLCBzbyBpdCBkaXNhcHBlYXJzIHRvZ2V0aGVyIHdpdGggdGhlIHNlc3Npb24g dGhhdAogIyBjcmVhdGVkIGl0LgotJHBzcWwxLT5xdWVyeV9zYWZlKHEoQ1JFQVRFIFRFTVAg VEFCTEUgZm9vMiBBUyBTRUxFQ1QgNDIgQVMgdmFsOykpOworJHBzcWwxLT5kbyhxKENSRUFU RSBURU1QIFRBQkxFIGZvbzIgQVMgU0VMRUNUIDQyIEFTIHZhbDspKTsKIAogJG5vZGUtPnBz cWwoCiAJJ3Bvc3RncmVzJywKQEAgLTIxNiw4ICsyMTYsOCBAQCBteSAkZm9vMl9vaWQgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENyb3NzLXNlc3Npb24gTE9DSyBUQUJM RSBzY2VuYXJpby4gIEVuc3VyZSB0aGF0IExvY2tSZWxhdGlvbk9pZCBpcyB3b3JraW5nCiAj IHByb3Blcmx5IGZvciBvdGhlciB0ZW1wIHRhYmxlcyBzaW5jZSB0aGlzIG1lY2hhbmlzbSBp cyBhbHNvIHVzZWQgYnkKICMgYXV0b3ZhY3V1bSBkdXJpbmcgb3JwaGFuZWQgdGFibGVzIGNs ZWFudXAuCi1teSAkcHNxbDIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycp OwotJHBzcWwyLT5xdWVyeV9zYWZlKAorbXkgJHBzcWwyID0gUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHBzcWwyLT5kbygKIAlxcXsKIAlCRUdJ TjsKIAlMT0NLIFRBQkxFICR0ZW1wc2NoZW1hLmZvbzIgSU4gQUNDRVNTIFNIQVJFIE1PREU7 CkBAIC0yMzMsMTUgKzIzMywxNSBAQCAkcHNxbDItPnF1ZXJ5X3NhZmUoCiAjIG93bmVyIHdp bGwgdHJ5IHRvIGFjcXVpcmUgZGVsZXRpb24gbG9jayBhbGwgaXRzIHRlbXAgb2JqZWN0cyB2 aWEKICMgZmluZERlcGVuZGVudE9iamVjdHMuCiBteSAkbG9nX29mZnNldCA9IC1zICRub2Rl LT5sb2dmaWxlOwotJHBzcWwxLT5xdWl0OworJHBzcWwxLT5jbG9zZTsKIAogIyBDaGVjayB3 aGV0aGVyIHNlc3Npb24tZXhpdCBjbGVhbnVwIGlzIGJsb2NrZWQuCiAkbm9kZS0+d2FpdF9m b3JfbG9nKHFyL3dhaXRpbmcgZm9yIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gcmVsYXRpb24g JGZvbzJfb2lkLywKIAkkbG9nX29mZnNldCk7CiAKICMgUmVsZWFzZSBsb2NrIG9uIGZvbzIg YW5kIGFsbG93IHNlc3Npb24tZXhpdCBjbGVhbnVwIHRvIGZpbmlzaC4KLSRwc3FsMi0+cXVl cnlfc2FmZShxKENPTU1JVDspKTsKLSRwc3FsMi0+cXVpdDsKKyRwc3FsMi0+ZG8ocShDT01N SVQ7KSk7CiskcHNxbDItPmNsb3NlOwogCiAjIEFmdGVyIHJlbGVhc2luZyB0aGUgbG9jaywg dGhlIG93bmVyIGNhbiBmaW5hbGx5IGFjcXVpcmUKICMgQWNjZXNzRXhjbHVzaXZlTG9jayBv biBmb28yIGFuZCBmaW5pc2ggc2Vzc2lvbi1leGl0IGNsZWFudXAuICBWZXJpZnkKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3QvMDAxX211bHRpeGFjdC5wbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3QvMDAxX211bHRpeGFjdC5wbAppbmRleCBm NmY0NTg5NWViZC4uMmQ4NjQzNGQ3YmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9zbHJ1L3QvMDAxX211bHRpeGFjdC5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc2xydS90LzAwMV9tdWx0aXhhY3QucGwKQEAgLTYsNiArNiw3IEBAIHVzZSBzdHJpY3Q7 CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVzZSBUZXN0OjpNb3JlOwpAQCAtMzAsOCArMzEsOCBA QCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0 X3NscnUpKTsKICMgbG9zdC4KIAogIyBDcmVhdGUgdGhlIGZpcnN0IG11bHRpeGFjdAotbXkg JGJnX3BzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotbXkgJG11 bHRpMSA9ICRiZ19wc3FsLT5xdWVyeV9zYWZlKHEoU0VMRUNUIHRlc3RfY3JlYXRlX211bHRp eGFjdCgpOykpOworbXkgJGJnX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSk7CitteSAkbXVsdGkxID0gJGJnX3Nlc3Npb24tPnF1ZXJ5 X29uZXZhbChxKFNFTEVDVCB0ZXN0X2NyZWF0ZV9tdWx0aXhhY3QoKTspKTsKIAogIyBBc3Np Z24gdGhlIG1pZGRsZSBtdWx0aXhhY3QuIFVzZSBhbiBpbmplY3Rpb24gcG9pbnQgdG8gcHJl dmVudCBpdAogIyBmcm9tIGJlaW5nIGZ1bGx5IHJlY29yZGVkLgpAQCAtMzksMTEgKzQwLDkg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7U0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdtdWx0aXhhY3QtY3JlYXRlLWZyb20tbWVtYmVycycsJ3dhaXQnKTt9 CiApOwogCi0kYmdfcHNxbC0+cXVlcnlfdW50aWwoCi0JcXIvYXNzaWduaW5nIGxvc3QgbXVs dGkvLCBxKAotXGVjaG8gYXNzaWduaW5nIGxvc3QgbXVsdGkKLQlTRUxFQ1QgdGVzdF9jcmVh dGVfbXVsdGl4YWN0KCk7Ci0pKTsKKyMgU3RhcnQgdGhlIHNlY29uZCBtdWx0aXhhY3QgY3Jl YXRpb24gYXN5bmNocm9ub3VzbHkgLSBpdCB3aWxsIGJsb2NrIGF0CisjIHRoZSBpbmplY3Rp b24gcG9pbnQKKyRiZ19zZXNzaW9uLT5kb19hc3luYyhxKFNFTEVDVCB0ZXN0X2NyZWF0ZV9t dWx0aXhhY3QoKTspKTsKIAogJG5vZGUtPndhaXRfZm9yX2V2ZW50KCdjbGllbnQgYmFja2Vu ZCcsICdtdWx0aXhhY3QtY3JlYXRlLWZyb20tbWVtYmVycycpOwogJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLApAQCAtNTIsMTAgKzUxLDEwIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKICMgQ3JlYXRlIHRoZSB0aGlyZCBtdWx0aXhpZAogbXkgJG11bHRpMiA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgdGVzdF9jcmVhdGVfbXVsdGl4 YWN0KCk7fSk7CiAKLSMgQWxsIHNldCBhbmQgZG9uZSwgaXQncyB0aW1lIGZvciBoYXJkIHJl c3RhcnQKKyMgQWxsIHNldCBhbmQgZG9uZSwgaXQncyB0aW1lIGZvciBoYXJkIHJlc3RhcnQu IFRoZSBiYWNrZ3JvdW5kIHNlc3Npb24KKyMgd2lsbCBiZSB0ZXJtaW5hdGVkIGJ5IHRoZSBj cmFzaC4KICRub2RlLT5zdG9wKCdpbW1lZGlhdGUnKTsKICRub2RlLT5zdGFydDsKLSRiZ19w c3FsLT57cnVufS0+ZmluaXNoOwogCiAjIFZlcmlmeSB0aGF0IHRoZSByZWNvcmRlZCBtdWx0 aXhpZHMgYXJlIHJlYWRhYmxlCiBpcyggJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cXtTRUxFQ1QgdGVzdF9yZWFkX211bHRpeGFjdCgnJG11bHRpMScpO30pLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMV9lbWVyZ2VuY3lfdmFj dXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMV9lbWVyZ2Vu Y3lfdmFjdXVtLnBsCmluZGV4IDIxM2Y5MDUyZWQyLi45MWQ2MGI5OGMwYiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMV9lbWVyZ2VuY3lfdmFj dXVtLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1l cmdlbmN5X3ZhY3V1bS5wbApAQCAtNCw2ICs0LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTQ3LDE3ICs0OCwxMiBAQCBDUkVBVEUg VEFCTEUgc21hbGxfdHJ1bmMoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBkYXRhIHRleHQsIGZp bGxlciB0ZXh0IGRlZmF1bHQgcgogSU5TRVJUIElOVE8gc21hbGxfdHJ1bmMoZGF0YSkgU0VM RUNUIGdlbmVyYXRlX3NlcmllcygxLDE1MDAwKTsKIF0pOwogCi0jIEJ1bXAgdGhlIHF1ZXJ5 IHRpbWVvdXQgdG8gYXZvaWQgZmFsc2UgbmVnYXRpdmVzIG9uIHNsb3cgdGVzdCBzeXN0ZW1z LgotbXkgJHBzcWxfdGltZW91dF9zZWNzID0gNCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6dGltZW91dF9kZWZhdWx0OwotCiAjIFN0YXJ0IGEgYmFja2dyb3VuZCBzZXNzaW9uLCB3 aGljaCBob2xkcyBhIHRyYW5zYWN0aW9uIG9wZW4sIHByZXZlbnRpbmcKLSMgYXV0b3ZhY3V1 bSBmcm9tIGFkdmFuY2luZyByZWxmcm96ZW54aWQgYW5kIGRhdGZyb3plbnhpZC4KLW15ICRi YWNrZ3JvdW5kX3BzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKAotCSdwb3N0Z3Jlcycs Ci0Jb25fZXJyb3Jfc3RvcCA9PiAwLAotCXRpbWVvdXQgPT4gJHBzcWxfdGltZW91dF9zZWNz KTsKLSRiYWNrZ3JvdW5kX3BzcWwtPnNldF9xdWVyeV90aW1lcl9yZXN0YXJ0KCk7Ci0kYmFj a2dyb3VuZF9wc3FsLT5xdWVyeV9zYWZlKAorIyBhdXRvdmFjdXVtIGZyb20gYWR2YW5jaW5n IHJlbGZyb3plbnhpZCBhbmQgZGF0ZnJvemVueGlkLiAgQnVtcCB0aGUgcXVlcnkKKyMgdGlt ZW91dCB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMgb24gc2xvdyB0ZXN0IHN5c3RlbXMuCitt eSAkYmFja2dyb3VuZF9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUsCisJdGltZW91dCA9PiA0ICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworJGJhY2tncm91bmRfc2Vzc2lvbi0+ZG8oCiAJcXFb CiAJQkVHSU47CiAJREVMRVRFIEZST00gbGFyZ2UgV0hFUkUgaWQgJSAyID0gMDsKQEAgLTg5 LDggKzg1LDggQEAgbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIAogIyBG aW5pc2ggdGhlIG9sZCB0cmFuc2FjdGlvbiwgdG8gYWxsb3cgdmFjdXVtIGZyZWV6aW5nIHRv IGFkdmFuY2UKICMgcmVsZnJvemVueGlkIGFuZCBkYXRmcm96ZW54aWQgYWdhaW4uCi0kYmFj a2dyb3VuZF9wc3FsLT5xdWVyeV9zYWZlKHFxW0NPTU1JVF0pOwotJGJhY2tncm91bmRfcHNx bC0+cXVpdDsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmRvKHFxW0NPTU1JVDtdKTsKKyRiYWNr Z3JvdW5kX3Nlc3Npb24tPmNsb3NlOwogCiAjIFdhaXQgdW50aWwgYXV0b3ZhY3V1bSBwcm9j ZXNzZWQgYWxsIHRhYmxlcyBhbmQgYWR2YW5jZWQgdGhlCiAjIHN5c3RlbS13aWRlIG9sZGVz dC1YSUQuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3Qv MDAyX2xpbWl0cy5wbCBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDJf bGltaXRzLnBsCmluZGV4IDg2NjMyYThkNTEwLi4yMmI2YTc1ZmRlNCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9saW1pdHMucGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9saW1pdHMucGwKQEAgLTEw LDYgKzEwLDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7CiB1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKQEAgLTI5LDYgKzMwLDggQEAgJG5v ZGUtPmFwcGVuZF9jb25mKAogCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKIGF1dG92YWN1dW1f bmFwdGltZSA9IDFzCiBsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAwCitsb2dfY29u bmVjdGlvbnMgPSBvbgorbG9nX3N0YXRlbWVudCA9ICdhbGwnCiBdKTsKICRub2RlLT5zdGFy dDsKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04geGlk X3dyYXBhcm91bmQnKTsKQEAgLTQxLDE2ICs0NCwxMiBAQCBDUkVBVEUgVEFCTEUgd3JhcGFy b3VuZHRlc3QodCB0ZXh0KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOwogSU5T RVJUIElOVE8gd3JhcGFyb3VuZHRlc3QgVkFMVUVTICgnc3RhcnQnKTsKIF0pOwogCi0jIEJ1 bXAgdGhlIHF1ZXJ5IHRpbWVvdXQgdG8gYXZvaWQgZmFsc2UgbmVnYXRpdmVzIG9uIHNsb3cg dGVzdCBzeXN0ZW1zLgotbXkgJHBzcWxfdGltZW91dF9zZWNzID0gNCAqICRQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OwotCiAjIFN0YXJ0IGEgYmFja2dyb3Vu ZCBzZXNzaW9uLCB3aGljaCBob2xkcyBhIHRyYW5zYWN0aW9uIG9wZW4sIHByZXZlbnRpbmcK LSMgYXV0b3ZhY3V1bSBmcm9tIGFkdmFuY2luZyByZWxmcm96ZW54aWQgYW5kIGRhdGZyb3pl bnhpZC4KLW15ICRiYWNrZ3JvdW5kX3BzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKAot CSdwb3N0Z3JlcycsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwLAotCXRpbWVvdXQgPT4gJHBzcWxf dGltZW91dF9zZWNzKTsKLSRiYWNrZ3JvdW5kX3BzcWwtPnF1ZXJ5X3NhZmUoCisjIGF1dG92 YWN1dW0gZnJvbSBhZHZhbmNpbmcgcmVsZnJvemVueGlkIGFuZCBkYXRmcm96ZW54aWQuICBC dW1wIHRoZSBxdWVyeQorIyB0aW1lb3V0IHRvIGF2b2lkIGZhbHNlIG5lZ2F0aXZlcyBvbiBz bG93IHRlc3Qgc3lzdGVtcy4KK215ICRiYWNrZ3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSwKKwl0aW1lb3V0ID0+IDQgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CiskYmFja2dyb3Vu ZF9zZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlJTlNFUlQgSU5UTyB3cmFwYXJvdW5k dGVzdCBWQUxVRVMgKCdvbGR4YWN0Jyk7CkBAIC0xMDgsOCArMTA3LDggQEAgbGlrZSgKIAog IyBGaW5pc2ggdGhlIG9sZCB0cmFuc2FjdGlvbiwgdG8gYWxsb3cgdmFjdXVtIGZyZWV6aW5n IHRvIGFkdmFuY2UKICMgcmVsZnJvemVueGlkIGFuZCBkYXRmcm96ZW54aWQgYWdhaW4uCi0k YmFja2dyb3VuZF9wc3FsLT5xdWVyeV9zYWZlKHFxW0NPTU1JVF0pOwotJGJhY2tncm91bmRf cHNxbC0+cXVpdDsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmRvKHFxW0NPTU1JVDtdKTsKKyRi YWNrZ3JvdW5kX3Nlc3Npb24tPmNsb3NlOwogCiAjIFZBQ1VVTSwgdG8gZnJlZXplIHRoZSB0 YWJsZXMgYW5kIGFkdmFuY2UgZGF0ZnJvemVueGlkLgogIwpAQCAtMTIyLDggKzEyMSw4IEBA ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZBQ1VVTScpOwogIyB0aGUgc3lzdGVt LXdpZGUgb2xkZXN0LVhJRC4KICRyZXQgPQogICAkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAotCXFxW0lOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2Fm dGVyIFZBQ1VVTScpXSwKLQknSU5TRVJUIDAgMScpOworCXFxW0lOU0VSVCBJTlRPIHdyYXBh cm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScpIFJFVFVSTklORyB0cnVlXSwKKwkJ CQkJCSApOwogCiAjIENoZWNrIHRoZSB0YWJsZSBjb250ZW50cwogJHJldCA9ICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICogZnJvbSB3cmFwYXJvdW5kdGVzdF0p OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwNF9u b3RpZnlfZnJlZXplLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAw NF9ub3RpZnlfZnJlZXplLnBsCmluZGV4IGQwYTFmMWZlMmZjLi5mMmZhNGU1YTZiOSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlf ZnJlZXplLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDRf bm90aWZ5X2ZyZWV6ZS5wbApAQCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIG15 ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlJyk7CkBAIC0y NCw5ICsyNSw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAknQUxURVIgREFU QUJBU0UgdGVtcGxhdGUwIFdJVEggQUxMT1dfQ09OTkVDVElPTlMgdHJ1ZScpOwogCiAjIFN0 YXJ0IFNlc3Npb24gMSBhbmQgbGVhdmUgaXQgaWRsZSBpbiB0cmFuc2FjdGlvbgotbXkgJHBz cWxfc2Vzc2lvbjEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJHBz cWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2xpc3RlbiBzOycpOwotJHBzcWxfc2Vzc2lvbjEt PnF1ZXJ5X3NhZmUoJ2JlZ2luOycpOworbXkgJHNlc3Npb24xID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHNlc3Npb24xLT5kbygnTElTVEVO IHMnKTsKKyRzZXNzaW9uMS0+ZG8oJ0JFR0lOJyk7CiAKICMgU2VuZCBzb21lIG5vdGlmeXMg ZnJvbSBvdGhlciBzZXNzaW9ucwogZm9yIG15ICRpICgxIC4uIDEwKQpAQCAtNTQsMTggKzU1 LDIwIEBAIG15ICRkYXRhZnJvbnplbnhpZF9mcmVlemUgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiAJInNlbGVjdCBtaW4oZGF0ZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpIGZy b20gcGdfZGF0YWJhc2UiKTsKIG9rKCRkYXRhZnJvbnplbnhpZF9mcmVlemUgPiAkZGF0YWZy b256ZW54aWQsICdkYXRmcm96ZW54aWQgYWR2YW5jZWQnKTsKIAotIyBPbiBTZXNzaW9uIDEs IGNvbW1pdCBhbmQgZW5zdXJlIHRoYXQgdGhlIGFsbCB0aGUgbm90aWZpY2F0aW9ucyBhcmUK KyMgT24gU2Vzc2lvbiAxLCBjb21taXQgYW5kIGVuc3VyZSB0aGF0IGFsbCB0aGUgbm90aWZp Y2F0aW9ucyBhcmUKICMgcmVjZWl2ZWQuIFRoaXMgZGVwZW5kcyBvbiBjb3JyZWN0bHkgZnJl ZXppbmcgdGhlIFhJRHMgaW4gdGhlIHBlbmRpbmcKICMgbm90aWZpY2F0aW9uIGVudHJpZXMu Ci1teSAkcmVzID0gJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2NvbW1pdDsnKTsKLW15 ICRub3RpZmljYXRpb25zX2NvdW50ID0gMDsKLWZvcmVhY2ggbXkgJGkgKHNwbGl0KCdcbics ICRyZXMpKQorJHNlc3Npb24xLT5kbygnQ09NTUlUJyk7CisKK215ICRub3RpZmljYXRpb25z ID0gJHNlc3Npb24xLT5nZXRfYWxsX25vdGlmaWNhdGlvbnMoKTsKK2lzKHNjYWxhcihAJG5v dGlmaWNhdGlvbnMpLCAxMCwgJ3JlY2VpdmVkIGFsbCBjb21taXR0ZWQgbm90aWZpY2F0aW9u cycpOworCitteSAkZXhwZWN0ZWRfcGF5bG9hZCA9IDE7Citmb3JlYWNoIG15ICRub3RpZnkg KEAkbm90aWZpY2F0aW9ucykKIHsKLQkkbm90aWZpY2F0aW9uc19jb3VudCsrOwotCWxpa2Uo JGksCi0JCXFyL0FzeW5jaHJvbm91cyBub3RpZmljYXRpb24gInMiIHdpdGggcGF5bG9hZCAi JG5vdGlmaWNhdGlvbnNfY291bnQiIHJlY2VpdmVkLwotCSk7CisJaXMoJG5vdGlmeS0+e2No YW5uZWx9LCAncycsICJub3RpZmljYXRpb24gJGV4cGVjdGVkX3BheWxvYWQgaGFzIGNvcnJl Y3QgY2hhbm5lbCIpOworCWlzKCRub3RpZnktPntwYXlsb2FkfSwgJGV4cGVjdGVkX3BheWxv YWQsICJub3RpZmljYXRpb24gJGV4cGVjdGVkX3BheWxvYWQgaGFzIGNvcnJlY3QgcGF5bG9h ZCIpOworCSRleHBlY3RlZF9wYXlsb2FkKys7CiB9Ci1pcygkbm90aWZpY2F0aW9uc19jb3Vu dCwgMTAsICdyZWNlaXZlZCBhbGwgY29tbWl0dGVkIG5vdGlmaWNhdGlvbnMnKTsKIAogZG9u ZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wb3N0bWFzdGVyL3QvMDAyX2Nv bm5lY3Rpb25fbGltaXRzLnBsIGIvc3JjL3Rlc3QvcG9zdG1hc3Rlci90LzAwMl9jb25uZWN0 aW9uX2xpbWl0cy5wbAppbmRleCA4YzY3YzRhODZjNy4uZDUwMTlmYWM3YjggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3Bvc3RtYXN0ZXIvdC8wMDJfY29ubmVjdGlvbl9saW1pdHMucGwKKysr IGIvc3JjL3Rlc3QvcG9zdG1hc3Rlci90LzAwMl9jb25uZWN0aW9uX2xpbWl0cy5wbApAQCAt Nyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7CiAKQEAgLTMzLDE5ICszNCwxOSBAQCBHUkFOVCBwZ191c2VfcmVzZXJ2ZWRfY29ubmVj dGlvbnMgVE8gcmVncmVzc19yZXNlcnZlZDsKIENSRUFURSBVU0VSIHJlZ3Jlc3Nfc3VwZXJ1 c2VyIExPR0lOIFNVUEVSVVNFUjsKIH0pOwogCitteSAkbm9kZV9jb25uc3RyID0gJG5vZGUt PmNvbm5zdHIoJ3Bvc3RncmVzJyk7CisKICMgV2l0aCB0aGUgbGltaXRzIHdlIHNldCBpbiBw b3N0Z3Jlc3FsLmNvbmYsIHdlIGNhbiBlc3RhYmxpc2g6CiAjIC0gMyBjb25uZWN0aW9ucyBm b3IgYW55IHVzZXIgd2l0aCBubyBzcGVjaWFsIHByaXZpbGVnZXMKICMgLSAyIG1vcmUgY29u bmVjdGlvbnMgZm9yIHVzZXJzIGJlbG9uZ2luZyB0byAicGdfdXNlX3Jlc2VydmVkX2Nvbm5l Y3Rpb25zIgogIyAtIDEgbW9yZSBjb25uZWN0aW9uIGZvciBzdXBlcnVzZXIKIAotc3ViIGJh Y2tncm91bmRfcHNxbF9hc191c2VyCitzdWIgc2Vzc2lvbl9hc191c2VyCiB7CiAJbXkgJHVz ZXIgPSBzaGlmdDsKKwlteSAkY29ubnN0ciA9ICIkbm9kZV9jb25uc3RyIHVzZXI9JHVzZXIi OwogCi0JcmV0dXJuICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoCi0JCSdwb3N0Z3JlcycsCi0J CW9uX2Vycm9yX2RpZSA9PiAxLAotCQlleHRyYV9wYXJhbXMgPT4gWyAnLS11c2VybmFtZScg PT4gJHVzZXIgXSk7CisJcmV0dXJuIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlLCBjb25uc3RyID0+ICRjb25uc3RyKTsKIH0KIAogIyBMaWtlIGNvbm5l Y3RfZmFpbHMoKSwgZXhjZXB0IHRoYXQgd2UgYWxzbyB3YWl0IGZvciB0aGUgZmFpbGVkIGJh Y2tlbmQgdG8KQEAgLTgyLDkgKzgzLDkgQEAgJG5vZGUtPnJlc3RhcnQ7CiBteSBAc2Vzc2lv bnMgPSAoKTsKIG15IEByYXdfY29ubmVjdGlvbnMgPSAoKTsKIAotcHVzaChAc2Vzc2lvbnMs IGJhY2tncm91bmRfcHNxbF9hc191c2VyKCdyZWdyZXNzX3JlZ3VsYXInKSk7Ci1wdXNoKEBz ZXNzaW9ucywgYmFja2dyb3VuZF9wc3FsX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVndWxhcicpKTsK LXB1c2goQHNlc3Npb25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNlcigncmVncmVzc19yZWd1 bGFyJykpOworcHVzaChAc2Vzc2lvbnMsIHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZWd1 bGFyJykpOworcHVzaChAc2Vzc2lvbnMsIHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZWd1 bGFyJykpOworcHVzaChAc2Vzc2lvbnMsIHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZWd1 bGFyJykpOwogY29ubmVjdF9mYWlsc193YWl0KAogCSRub2RlLAogCSJkYm5hbWU9cG9zdGdy ZXMgdXNlcj1yZWdyZXNzX3JlZ3VsYXIiLApAQCAtOTMsOCArOTQsOCBAQCBjb25uZWN0X2Zh aWxzX3dhaXQoCiAJICBxci9GQVRBTDogIHJlbWFpbmluZyBjb25uZWN0aW9uIHNsb3RzIGFy ZSByZXNlcnZlZCBmb3Igcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZSAicGdfdXNlX3Jl c2VydmVkX2Nvbm5lY3Rpb25zIiByb2xlLwogKTsKIAotcHVzaChAc2Vzc2lvbnMsIGJhY2tn cm91bmRfcHNxbF9hc191c2VyKCdyZWdyZXNzX3Jlc2VydmVkJykpOwotcHVzaChAc2Vzc2lv bnMsIGJhY2tncm91bmRfcHNxbF9hc191c2VyKCdyZWdyZXNzX3Jlc2VydmVkJykpOworcHVz aChAc2Vzc2lvbnMsIHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZXNlcnZlZCcpKTsKK3B1 c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVzZXJ2ZWQnKSk7CiBj b25uZWN0X2ZhaWxzX3dhaXQoCiAJJG5vZGUsCiAJImRibmFtZT1wb3N0Z3JlcyB1c2VyPXJl Z3Jlc3NfcmVzZXJ2ZWQiLApAQCAtMTAzLDcgKzEwNCw3IEBAIGNvbm5lY3RfZmFpbHNfd2Fp dCgKIAkgIHFyL0ZBVEFMOiAgcmVtYWluaW5nIGNvbm5lY3Rpb24gc2xvdHMgYXJlIHJlc2Vy dmVkIGZvciByb2xlcyB3aXRoIHRoZSBTVVBFUlVTRVIgYXR0cmlidXRlLwogKTsKIAotcHVz aChAc2Vzc2lvbnMsIGJhY2tncm91bmRfcHNxbF9hc191c2VyKCdyZWdyZXNzX3N1cGVydXNl cicpKTsKK3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3Nfc3VwZXJ1 c2VyJykpOwogY29ubmVjdF9mYWlsc193YWl0KAogCSRub2RlLAogCSJkYm5hbWU9cG9zdGdy ZXMgdXNlcj1yZWdyZXNzX3N1cGVydXNlciIsCkBAIC0xNTAsNyArMTUxLDcgQEAgU0tJUDoK ICMgQ2xlYW4gdXAKIGZvcmVhY2ggbXkgJHNlc3Npb24gKEBzZXNzaW9ucykKIHsKLQkkc2Vz c2lvbi0+cXVpdDsKKwkkc2Vzc2lvbi0+Y2xvc2U7CiB9CiBmb3JlYWNoIG15ICRzb2NrZXQg KEByYXdfY29ubmVjdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzAwOV90d29waGFzZS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA5X3R3b3BoYXNlLnBs CmluZGV4IGFhNzNkM2UxMDZjLi45ZmUwMzdiYjBhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMDlfdHdvcGhhc2UucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MDlfdHdvcGhhc2UucGwKQEAgLTYsNiArNiw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fybmlu Z3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMzMxLDExICszMzIsMTAgQEAgJGN1cl9w cmltYXJ5LT5zdG9wOwogJGN1cl9zdGFuZGJ5LT5yZXN0YXJ0OwogCiAjIEFjcXVpcmUgYSBz bmFwc2hvdCBpbiBzdGFuZGJ5LCBiZWZvcmUgd2UgY29tbWl0IHRoZSBwcmVwYXJlZCB0cmFu c2FjdGlvbgotbXkgJHN0YW5kYnlfc2Vzc2lvbiA9Ci0gICRjdXJfc3RhbmRieS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX2RpZSA9PiAxKTsKLSRzdGFuZGJ5X3Nl c3Npb24tPnF1ZXJ5X3NhZmUoIkJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQiKTsKK215ICRzdGFuZGJ5X3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkY3VyX3N0YW5kYnkpOworJHN0YW5kYnlfc2Vzc2lvbi0+ZG8oIkJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQiKTsKICRwc3FsX291dCA9Ci0g ICRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRf MDA5X3RibF9zdGFuZGJ5X212Y2MiKTsKKyAgJHN0YW5kYnlfc2Vzc2lvbi0+cXVlcnlfb25l dmFsKCJTRUxFQ1QgY291bnQoKikgRlJPTSB0XzAwOV90Ymxfc3RhbmRieV9tdmNjIik7CiBp cygkcHNxbF9vdXQsICcwJywKIAkiUHJlcGFyZWQgdHJhbnNhY3Rpb24gbm90IHZpc2libGUg aW4gc3RhbmRieSBiZWZvcmUgY29tbWl0Iik7CiAKQEAgLTM0OSwxNyArMzQ5LDE3IEBAIENP TU1JVCBQUkVQQVJFRCAneGFjdF8wMDlfc3RhbmRieV9tdmNjJzsKIAogIyBTdGlsbCBub3Qg dmlzaWJsZSB0byB0aGUgb2xkIHNuYXBzaG90CiAkcHNxbF9vdXQgPQotICAkc3RhbmRieV9z ZXNzaW9uLT5xdWVyeV9zYWZlKCJTRUxFQ1QgY291bnQoKikgRlJPTSB0XzAwOV90Ymxfc3Rh bmRieV9tdmNjIik7CisgICRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5X29uZXZhbCgiU0VMRUNU IGNvdW50KCopIEZST00gdF8wMDlfdGJsX3N0YW5kYnlfbXZjYyIpOwogaXMoJHBzcWxfb3V0 LCAnMCcsCiAJIkNvbW1pdHRlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbiBub3QgdmlzaWJsZSB0 byBvbGQgc25hcHNob3QgaW4gc3RhbmRieSIpOwogCiAjIElzIHZpc2libGUgdG8gYSBuZXcg c25hcHNob3QKLSRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkNPTU1JVCIpOworJHN0 YW5kYnlfc2Vzc2lvbi0+ZG8oIkNPTU1JVCIpOwogJHBzcWxfb3V0ID0KLSAgJHN0YW5kYnlf c2Vzc2lvbi0+cXVlcnlfc2FmZSgiU0VMRUNUIGNvdW50KCopIEZST00gdF8wMDlfdGJsX3N0 YW5kYnlfbXZjYyIpOworICAkc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9vbmV2YWwoIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRfMDA5X3RibF9zdGFuZGJ5X212Y2MiKTsKIGlzKCRwc3FsX291 dCwgJzInLAogCSJDb21taXR0ZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gaXMgdmlzaWJsZSB0 byBuZXcgc25hcHNob3QgaW4gc3RhbmRieSIpOwotJHN0YW5kYnlfc2Vzc2lvbi0+cXVpdDsK KyRzdGFuZGJ5X3Nlc3Npb24tPmNsb3NlOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIENoZWNrIGZvciBhIGxvY2sgY29uZmxpY3QgYmV0d2VlbiBwcmVwYXJlZCB0cmFuc2Fj dGlvbiB3aXRoIERETCBpbnNpZGUgYW5kCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzAxM19jcmFzaF9yZXN0YXJ0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTNfY3Jh c2hfcmVzdGFydC5wbAppbmRleCAwZmRlOTIwNzEzZS4uYjYyYjAwMDBlZGYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEzX2NyYXNoX3Jlc3RhcnQucGwKKysrIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wMTNfY3Jhc2hfcmVzdGFydC5wbApAQCAtMTQ5LDcgKzE0OSw3 IEBAIG9rKCBwdW1wX3VudGlsKAogJG1vbml0b3ItPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwg c2VydmVyIHJlc3RhcnRzCi1pcygkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LCB1bmRlZiwgJycpLAoraXMoJG5vZGUtPnBvbGxfdW50aWxfY29ubmVjdGlvbigncG9zdGdy ZXMnKSwKIAkiMSIsICJyZWNvbm5lY3RlZCBhZnRlciBTSUdRVUlUIik7CiAKIApAQCAtMjM4 LDcgKzIzOCw3IEBAIG9rKCBwdW1wX3VudGlsKAogJG1vbml0b3ItPmZpbmlzaDsKIAogIyBX YWl0IHRpbGwgc2VydmVyIHJlc3RhcnRzCi1pcygkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLCB1bmRlZiwgJycpLAoraXMoJG5vZGUtPnBvbGxfdW50aWxfY29ubmVjdGlv bigncG9zdGdyZXMnKSwKIAkiMSIsICJyZWNvbm5lY3RlZCBhZnRlciBTSUdLSUxMIik7CiAK ICMgTWFrZSBzdXJlIHRoZSBjb21taXR0ZWQgcm93cyBzdXJ2aXZlZCwgaW4tcHJvZ3Jlc3Mg b25lcyBub3QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDIyX2NyYXNoX3Rl bXBfZmlsZXMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyMl9jcmFzaF90ZW1wX2ZpbGVz LnBsCmluZGV4IDVkZTliMGZiMGViLi42YzU1ZmNmNDBiMSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMjJfY3Jhc2hfdGVtcF9maWxlcy5wbAorKysgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzAyMl9jcmFzaF90ZW1wX2ZpbGVzLnBsCkBAIC0xNDYsNyArMTQ2LDcgQEAg b2soIHB1bXBfdW50aWwoCiAka2lsbG1lMi0+ZmluaXNoOwogCiAjIFdhaXQgdGlsbCBzZXJ2 ZXIgZmluaXNoZXMgcmVzdGFydGluZwotJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgdW5kZWYsICcnKTsKKyRub2RlLT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bvc3Rn cmVzJyk7CiAKICMgQ2hlY2sgZm9yIHRlbXBvcmFyeSBmaWxlcwogaXMoICRub2RlLT5zYWZl X3BzcWwoCkBAIC0yNTMsNyArMjUzLDcgQEAgb2soIHB1bXBfdW50aWwoCiAka2lsbG1lMi0+ ZmluaXNoOwogCiAjIFdhaXQgdGlsbCBzZXJ2ZXIgZmluaXNoZXMgcmVzdGFydGluZwotJG5v ZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgdW5kZWYsICcnKTsKKyRub2RlLT5w b2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzJyk7CiAKICMgQ2hlY2sgZm9yIHRlbXBv cmFyeSBmaWxlcyAtLSBzaG91bGQgYmUgdGhlcmUKIGlzKCAkbm9kZS0+c2FmZV9wc3FsKApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzFfcmVjb3ZlcnlfY29uZmxpY3Qu cGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzMV9yZWNvdmVyeV9jb25mbGljdC5wbAppbmRl eCA3YTc0MGY2OTgwNi4uNzQzNDk3NDkxNzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsCkBAIC03LDYgKzcsNyBAQAogdXNlIHN0cmlj dDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtNjcsOCArNjgsNyBA QCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5 KTsKIAogCiAjIGEgbG9uZ3J1bm5pbmcgcHNxbCB0aGF0IHdlIGNhbiB1c2UgdG8gdHJpZ2dl ciBjb25mbGljdHMKLW15ICRwc3FsX3N0YW5kYnkgPQotICAkbm9kZV9zdGFuZGJ5LT5iYWNr Z3JvdW5kX3BzcWwoJHRlc3RfZGIsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CitteSAkcHNxbF9z dGFuZGJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVf c3RhbmRieSwgZGJuYW1lID0+ICR0ZXN0X2RiKTsKIG15ICRleHBlY3RlZF9jb25mbGljdHMg PSAwOwogCiAKQEAgLTk2LDcgKzk2LDcgQEAgbXkgJGN1cnNvcjEgPSAidGVzdF9yZWNvdmVy eV9jb25mbGljdF9jdXJzb3IiOwogCiAjIERFQ0xBUkUgYW5kIHVzZSBhIGN1cnNvciBvbiBz dGFuZGJ5LCBjYXVzaW5nIGJ1ZmZlciB3aXRoIHRoZSBvbmx5IGJsb2NrIG9mCiAjIHRoZSBy ZWxhdGlvbiB0byBiZSBwaW5uZWQgb24gdGhlIHN0YW5kYnkKLW15ICRyZXMgPSAkcHNxbF9z dGFuZGJ5LT5xdWVyeV9zYWZlKAorbXkgJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X29u ZXZhbCgKIAlxcVsKICAgICBCRUdJTjsKICAgICBERUNMQVJFICRjdXJzb3IxIENVUlNPUiBG T1IgU0VMRUNUIGIgRlJPTSAkdGFibGUxOwpAQCAtMTE5LDcgKzExOSw3IEBAICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgkdGVzdF9kYiwgcXFbVkFDVVVNIEZSRUVaRSAkdGFibGUxO10p OwogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRi eSk7CiAKIGNoZWNrX2NvbmZsaWN0X2xvZygiVXNlciB3YXMgaG9sZGluZyBzaGFyZWQgYnVm ZmVyIHBpbiBmb3IgdG9vIGxvbmciKTsKLSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRf Y2xlYXIoKTsKKyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwogY2hlY2tfY29uZmxpY3Rf c3RhdCgiYnVmZmVycGluIik7CiAKIApAQCAtMTMyLDcgKzEzMiw3IEBAICRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgkdGVzdF9kYiwKICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxh eV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCiAjIERFQ0xBUkUgYW5kIEZFVENIIGZyb20g Y3Vyc29yIG9uIHRoZSBzdGFuZGJ5Ci0kcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfc2Fm ZSgKKyRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9vbmV2YWwoCiAJcXFbCiAgICAgICAg IEJFR0lOOwogICAgICAgICBERUNMQVJFICRjdXJzb3IxIENVUlNPUiBGT1IgU0VMRUNUIGIg RlJPTSAkdGFibGUxOwpAQCAtMTUyLDcgKzE1Miw3IEBAICRub2RlX3ByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCiBjaGVja19jb25mbGljdF9s b2coCiAJIlVzZXIgcXVlcnkgbWlnaHQgaGF2ZSBuZWVkZWQgdG8gc2VlIHJvdyB2ZXJzaW9u cyB0aGF0IG11c3QgYmUgcmVtb3ZlZCIpOwotJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0X2Fu ZF9jbGVhcigpOworJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0KCk7CiBjaGVja19jb25mbGlj dF9zdGF0KCJzbmFwc2hvdCIpOwogCiAKQEAgLTE2MSw3ICsxNjEsNyBAQCAkc2VjdCA9ICJs b2NrIGNvbmZsaWN0IjsKICRleHBlY3RlZF9jb25mbGljdHMrKzsKIAogIyBhY3F1aXJlIGxv Y2sgdG8gY29uZmxpY3Qgd2l0aAotJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X3NhZmUo CiskcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfb25ldmFsKAogCXFxWwogICAgICAgICBC RUdJTjsKICAgICAgICAgTE9DSyBUQUJMRSAkdGFibGUxIElOIEFDQ0VTUyBTSEFSRSBNT0RF OwpAQCAtMTc1LDcgKzE3NSw3IEBAICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgkdGVzdF9k YiwgcXFbRFJPUCBUQUJMRSAkdGFibGUxO10pOwogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf cmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKIGNoZWNrX2NvbmZsaWN0X2xvZygi VXNlciB3YXMgaG9sZGluZyBhIHJlbGF0aW9uIGxvY2sgZm9yIHRvbyBsb25nIik7Ci0kcHNx bF9zdGFuZGJ5LT5yZWNvbm5lY3RfYW5kX2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNv bm5lY3QoKTsKIGNoZWNrX2NvbmZsaWN0X3N0YXQoImxvY2siKTsKIAogCkBAIC0xODYsNyAr MTg2LDcgQEAgJGV4cGVjdGVkX2NvbmZsaWN0cysrOwogIyBERUNMQVJFIGEgY3Vyc29yIGZv ciBhIHF1ZXJ5IHdoaWNoLCB3aXRoIHN1ZmZpY2llbnRseSBsb3cgd29ya19tZW0sIHdpbGwK ICMgc3BpbGwgdHVwbGVzIGludG8gdGVtcCBmaWxlcyBpbiB0aGUgdGVtcG9yYXJ5IHRhYmxl c3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAuCi0kcmVzID0gJHBzcWxfc3RhbmRieS0+ cXVlcnlfc2FmZSgKKyRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9vbmV2YWwoCiAJcXFb CiAgICAgICAgIEJFR0lOOwogICAgICAgICBTRVQgd29ya19tZW0gPSAnNjRrQic7CkBAIC0y MDUsNyArMjA1LDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JG5vZGVfc3RhbmRieSk7CiAKIGNoZWNrX2NvbmZsaWN0X2xvZygKIAkiVXNlciB3YXMgb3Ig bWlnaHQgaGF2ZSBiZWVuIHVzaW5nIHRhYmxlc3BhY2UgdGhhdCBtdXN0IGJlIGRyb3BwZWQi KTsKLSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5k YnktPnJlY29ubmVjdCgpOwogY2hlY2tfY29uZmxpY3Rfc3RhdCgidGFibGVzcGFjZSIpOwog CiAKQEAgLTIyMCw4ICsyMjAsOSBAQCAkbm9kZV9zdGFuZGJ5LT5hZGp1c3RfY29uZigKIAkn cG9zdGdyZXNxbC5jb25mJywKIAknbWF4X3N0YW5kYnlfc3RyZWFtaW5nX2RlbGF5JywKIAki JHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0fXMiKTsKKyRwc3Fs X3N0YW5kYnktPmNsb3NlOwogJG5vZGVfc3RhbmRieS0+cmVzdGFydCgpOwotJHBzcWxfc3Rh bmRieS0+cmVjb25uZWN0X2FuZF9jbGVhcigpOworJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0 KCk7CiAKICMgR2VuZXJhdGUgYSBmZXcgZGVhZCByb3dzLCB0byBsYXRlciBiZSBjbGVhbmVk IHVwIGJ5IHZhY3V1bS4gVGhlbiBhY3F1aXJlIGEKICMgbG9jayBvbiBhbm90aGVyIHJlbGF0 aW9uIGluIGEgcHJlcGFyZWQgeGFjdCwgc28gaXQncyBoZWxkIGNvbnRpbnVvdXNseSBieQpA QCAtMjQ0LDEyICsyNDUsMTUgQEAgU0VMRUNUIHR4aWRfY3VycmVudCgpOwogCiAkbm9kZV9w cmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAotJHJl cyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X3VudGlsKAotCXFyL14xJC9tLCBxcVsKKyRyZXMg PSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9vbmV2YWwoCisJcXFbCiAgICAgQkVHSU47CiAgICAg LS0gaG9sZCBwaW4KICAgICBERUNMQVJFICRjdXJzb3IxIENVUlNPUiBGT1IgU0VMRUNUIGEg RlJPTSAkdGFibGUxOwogICAgIEZFVENIIEZPUldBUkQgRlJPTSAkY3Vyc29yMTsKK10pOwor aXMgKCRyZXMsIDEsICJwaW4gaGVsZCIpOworJHBzcWxfc3RhbmRieS0+ZG9fYXN5bmMocXFb CiAgICAgLS0gd2FpdCBmb3IgbG9jayBoZWxkIGJ5IHByZXBhcmVkIHRyYW5zYWN0aW9uCiAJ U0VMRUNUICogRlJPTSAkdGFibGUyOwogICAgIF0pOwpAQCAtMjcwLDE1ICsyNzQsMTYgQEAg JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCR0ZXN0X2RiLCBxcVtWQUNVVU0gRlJFRVpFICR0 YWJsZTE7XSk7CiAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9k ZV9zdGFuZGJ5KTsKIAogY2hlY2tfY29uZmxpY3RfbG9nKCJVc2VyIHRyYW5zYWN0aW9uIGNh dXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsKLSRwc3FsX3N0YW5kYnkt PnJlY29ubmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwog Y2hlY2tfY29uZmxpY3Rfc3RhdCgiZGVhZGxvY2siKTsKIAogIyBjbGVhbiB1cCBmb3IgbmV4 dCB0ZXN0cwogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCR0ZXN0X2RiLCBxcVtST0xMQkFD SyBQUkVQQVJFRCAnbG9jayc7XSk7CiAkbm9kZV9zdGFuZGJ5LT5hZGp1c3RfY29uZigncG9z dGdyZXNxbC5jb25mJywgJ21heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxheScsCi0JJzUwbXMn KTsKKwkJCQkJCSAgICc1MG1zJyk7CiskcHNxbF9zdGFuZGJ5LT5jbG9zZTsKICRub2RlX3N0 YW5kYnktPnJlc3RhcnQoKTsKLSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIo KTsKKyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwogCiAKICMgQ2hlY2sgdGhhdCBleHBl Y3RlZCBudW1iZXIgb2YgY29uZmxpY3RzIHNob3cgaW4gcGdfc3RhdF9kYXRhYmFzZS4gTmVl ZHMgdG8KQEAgLTMwMiw3ICszMDcsNyBAQCBjaGVja19jb25mbGljdF9sb2coIlVzZXIgd2Fz IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlIHRoYXQgbXVzdCBiZSBkcm9wcGVkIik7CiAKICMg ZXhwbGljaXRseSBzaHV0IGRvd24gcHNxbCBpbnN0YW5jZXMgZ3JhY2VmdWxseSAtIHRvIGF2 b2lkIGhhbmdzIG9yIHdvcnNlIG9uCiAjIHdpbmRvd3MKLSRwc3FsX3N0YW5kYnktPnF1aXQ7 CiskcHNxbF9zdGFuZGJ5LT5jbG9zZTsKIAogJG5vZGVfc3RhbmRieS0+c3RvcCgpOwogJG5v ZGVfcHJpbWFyeS0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MzdfaW52YWxpZF9kYXRhYmFzZS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM3X2ludmFs aWRfZGF0YWJhc2UucGwKaW5kZXggYTA5NDcxMDg3MDAuLjk1MjE2YjIzN2M3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzN19pbnZhbGlkX2RhdGFiYXNlLnBsCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM3X2ludmFsaWRfZGF0YWJhc2UucGwKQEAgLTUsNiAr NSw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwog CkBAIC05MSw0MSArOTIsMzggQEAgaXMoJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag REFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkJyksCiAjIGRyb3BwaW5nIHRoZSBkYXRhYmFz ZSwgbWFraW5nIGl0IGEgc3VpdGFibGUgcG9pbnQgdG8gd2FpdC4gIFNpbmNlIHJlbGNhY2hl CiAjIGluaXQgcmVhZHMgcGdfdGFibGVzcGFjZSwgZXN0YWJsaXNoIGVhY2ggY29ubmVjdGlv biBiZWZvcmUgbG9ja2luZy4gIFRoaXMKICMgYXZvaWRzIGEgY29ubmVjdGlvbi10aW1lIGhh bmcgd2l0aCBkZWJ1Z19kaXNjYXJkX2NhY2hlcy4KLW15ICRjYW5jZWwgPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMSk7Ci1teSAkYmdw c3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9w ID0+IDApOwotbXkgJHBpZCA9ICRiZ3BzcWwtPnF1ZXJ5KCdTRUxFQ1QgcGdfYmFja2VuZF9w aWQoKScpOworbXkgJGNhbmNlbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlPT4kbm9kZSk7CitteSAkYmdwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGU9PiRub2RlKTsKK215ICRwaWQgPSAkYmdwc3FsLT5xdWVyeV9vbmV2YWwoJ1NF TEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CiAKICMgY3JlYXRlIHRoZSBkYXRhYmFzZSwgcHJl dmVudCBkcm9wIGRhdGFiYXNlIHZpYSBsb2NrIGhlbGQgYnkgYSAyUEMgdHJhbnNhY3Rpb24K LSRiZ3BzcWwtPnF1ZXJ5X3NhZmUoCi0JcXEoCi0gIENSRUFURSBEQVRBQkFTRSByZWdyZXNz aW9uX2ludmFsaWRfaW50ZXJydXB0OwotICBCRUdJTjsKK2lzICgxLCAgJGJncHNxbC0+ZG8o CisJCXFxKAorICBDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVw dDspLAorICBxcShCRUdJTjsKICAgTE9DSyBwZ190YWJsZXNwYWNlOwotICBQUkVQQVJFIFRS QU5TQUNUSU9OICdsb2NrX3RibHNwYyc7KSk7CisgIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2xv Y2tfdGJsc3BjJzspKSk7CiAKICMgVHJ5IHRvIGRyb3AuIFRoaXMgd2lsbCB3YWl0IGR1ZSB0 byB0aGUgc3RpbGwgaGVsZCBsb2NrLgotJGJncHNxbC0+cXVlcnlfdW50aWwocXIvLywgIkRS T1AgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVwdDtcbiIpOworJGJncHNx bC0+ZG9fYXN5bmMoIkRST1AgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVw dDsiKTsKIAogCiAjIE9uY2UgdGhlIERST1AgREFUQUJBU0UgaXMgd2FpdGluZyBmb3IgdGhl IGxvY2ssIGludGVycnVwdCBpdC4KLW9rKCAkY2FuY2VsLT5xdWVyeV9zYWZlKAotCQlxcSgK K215ICRjYW5jZWxfcmVzID0gJGNhbmNlbC0+cXVlcnkoCisJCXFxWwogCURPIFwkXCQKIAlC RUdJTgogCQlXSElMRSBOT1QgRVhJU1RTKFNFTEVDVCAqIEZST00gcGdfbG9ja3MgV0hFUkUg Tk9UIGdyYW50ZWQgQU5EIHJlbGF0aW9uID0gJ3BnX3RhYmxlc3BhY2UnOjpyZWdjbGFzcyBB TkQgbW9kZSA9ICdBY2Nlc3NTaGFyZUxvY2snKSBMT09QCiAJCQlQRVJGT1JNIHBnX3NsZWVw KC4xKTsKIAkJRU5EIExPT1A7CiAJRU5EXCRcJDsKLQlTRUxFQ1QgcGdfY2FuY2VsX2JhY2tl bmQoJHBpZCk7KSksCi0JImNhbmNlbGluZyBEUk9QIERBVEFCQVNFIik7Ci0kY2FuY2VsLT5x dWl0KCk7CisJU0VMRUNUIHBnX2NhbmNlbF9iYWNrZW5kKCRwaWQpXSk7CitpcygkY2FuY2Vs X3Jlcy0+e3N0YXR1c30sIFBHUkVTX1RVUExFU19PSywgImNhbmNlbGluZyBEUk9QIERBVEFC QVNFIik7CiskY2FuY2VsLT5jbG9zZSgpOwogCiskYmdwc3FsLT53YWl0X2Zvcl9jb21wbGV0 aW9uOwogIyB3YWl0IGZvciBjYW5jZWxsYXRpb24gdG8gYmUgcHJvY2Vzc2VkCi1vayggcHVt cF91bnRpbCgKLQkJJGJncHNxbC0+e3J1bn0sICRiZ3BzcWwtPnt0aW1lb3V0fSwKLQkJXCRi Z3BzcWwtPntzdGRlcnJ9LCBxci9jYW5jZWxpbmcgc3RhdGVtZW50IGR1ZSB0byB1c2VyIHJl cXVlc3QvKSwKLQkiY2FuY2VsIHByb2Nlc3NlZCIpOwotJGJncHNxbC0+e3N0ZGVycn0gPSAn JzsKK3Bhc3MoImNhbmNlbCBwcm9jZXNzZWQiKTsKIAogIyBWZXJpZnkgdGhhdCBjb25uZWN0 aW9ucyB0byB0aGUgZGF0YWJhc2UgYXJlbid0IGFsbG93ZWQuICBUaGUgYmFja2VuZCBjaGVj a3MKICMgdGhpcyBiZWZvcmUgcmVsY2FjaGUgaW5pdCwgc28gdGhlIGxvY2sgd29uJ3QgaW50 ZXJmZXJlLgpAQCAtMTM0LDkgKzEzMiwxMiBAQCBpcygkbm9kZS0+cHNxbCgncmVncmVzc2lv bl9pbnZhbGlkX2ludGVycnVwdCcsICcnKSwKIAogIyBUbyBwcm9wZXJseSBkcm9wIHRoZSBk YXRhYmFzZSwgd2UgbmVlZCB0byByZWxlYXNlIHRoZSBsb2NrIHByZXZpb3VzbHkgcHJldmVu dGluZwogIyBkb2luZyBzby4KLSRiZ3BzcWwtPnF1ZXJ5X3NhZmUocXEoUk9MTEJBQ0sgUFJF UEFSRUQgJ2xvY2tfdGJsc3BjJykpOwotJGJncHNxbC0+cXVlcnlfc2FmZShxcShEUk9QIERB VEFCQVNFIHJlZ3Jlc3Npb25faW52YWxpZF9pbnRlcnJ1cHQpKTsKK2lzKCRiZ3BzcWwtPmRv KHFxKFJPTExCQUNLIFBSRVBBUkVEICdsb2NrX3RibHNwYycpKSwKKwlQR1JFU19DT01NQU5E X09LLCAidW5ibG9jayBEUk9QIERBVEFCQVNFIik7CiAKLSRiZ3BzcWwtPnF1aXQoKTsKK2lz KCRiZ3BzcWwtPmRvKHFxKERST1AgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVy cnVwdCkpLAorCVBHUkVTX0NPTU1BTkRfT0ssICJEUk9QIERBVEFCQVNFIGludmFsaWRfaW50 ZXJydXB0Iik7CisKKyRiZ3BzcWwtPmNsb3NlKCk7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90 c19zeW5jLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9z bG90c19zeW5jLnBsCmluZGV4IGY4OTIyYWFhMWEyLi5lZjE2ZTBhODc0MCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5j LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xv dHNfc3luYy5wbApAQCAtNCw2ICs0LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTc2OCwxNyArNzY5LDEzIEBAICRwcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxp Y2F0aW9uX3Nsb3QoJ3Rlc3Rfc2xvdCcsICd0ZXN0X2RlY29kaW5nJywgZmFsc2UsIGZhbHNl LCB0cnVlKTsiCiApOwogCi1teSAkYmFja19xID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNx bCgKLQkncG9zdGdyZXMnLAotCW9uX2Vycm9yX3N0b3AgPT4gMCwKLQl0aW1lb3V0ID0+ICRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKK215ICRiYWNrX3Eg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+JHByaW1hcnkpOwogCiAj IHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcyB3aWxsIGJlIGJsb2NrZWQgdW50aWwgdGhl IHN0YW5kYnkgY2F0Y2hlcyB1cCwKICMgaGVuY2UgaXQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQg aW4gYSBiYWNrZ3JvdW5kIHNlc3Npb24uCiAkb2Zmc2V0ID0gLXMgJHByaW1hcnktPmxvZ2Zp bGU7Ci0kYmFja19xLT5xdWVyeV91bnRpbCgKLQlxci9sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5n ZXMvLCBxKAotICAgXGVjaG8gbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzCiskYmFja19xLT5k b19hc3luYygKKwlxKAogICAgU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygn dGVzdF9zbG90JywgTlVMTCwgTlVMTCk7CiApKTsKIApAQCAtNzk2LDcgKzc5Myw4IEBAICRw cmltYXJ5LT5yZWxvYWQ7CiAjIFNpbmNlIHRoZXJlIGFyZSBubyBzbG90cyBpbiBzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90cywgdGhlIGZ1bmN0aW9uCiAjIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcyBzaG91bGQgbm93IHJldHVybiwgYW5kIHRoZSBzZXNzaW9uIGNhbiBiZQog IyBzdG9wcGVkLgotJGJhY2tfcS0+cXVpdDsKKyRiYWNrX3EtPndhaXRfZm9yX2NvbXBsZXRp b247CiskYmFja19xLT5jbG9zZTsKIAogJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnKTsiKTsK QEAgLTEwNTksMTMgKzEwNTcsOCBAQCAkc3RhbmRieTItPnJlbG9hZDsKICMgc3luY2hyb25p emF0aW9uIHVudGlsIHRoZSByZW1vdGUgc2xvdCBjYXRjaGVzIHVwLgogIyBUaGUgQVBJIHdp bGwgbm90IHJldHVybiB1bnRpbCB0aGlzIGhhcHBlbnMsIHRvIGJlIGFibGUgdG8gbWFrZQog IyBmdXJ0aGVyIGNhbGxzLCBjYWxsIHRoZSBBUEkgaW4gYSBiYWNrZ3JvdW5kIHByb2Nlc3Mu Ci1teSAkaCA9ICRzdGFuZGJ5Mi0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0KLSRoLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydC8sIHEoCi0J XGVjaG8gc3RhcnQKLQlTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpOwotCSkp OworbXkgJGggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkc3Rh bmRieTIpOworJGgtPmRvX2FzeW5jKHEoU0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xv dHMoKTspKTsKIAogIyBDb25maXJtIHRoYXQgdGhlIHNsb3Qgc3luYyBpcyBza2lwcGVkIGR1 ZSB0byB0aGUgcmVtb3RlIHNsb3QgbGFnZ2luZyBiZWhpbmQKICRzdGFuZGJ5Mi0+d2FpdF9m b3JfbG9nKApAQCAtMTEwNCw2ICsxMDk3LDcgQEAgJHN0YW5kYnkyLT53YWl0X2Zvcl9sb2co CiAJcXIvbmV3bHkgY3JlYXRlZCByZXBsaWNhdGlvbiBzbG90IFwibHN1YjFfc2xvdFwiIGlz IHN5bmMtcmVhZHkgbm93LywKIAkkbG9nX29mZnNldCk7CiAKLSRoLT5xdWl0OworJGgtPndh aXRfZm9yX2NvbXBsZXRpb247CiskaC0+Y2xvc2U7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3Rl LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3RlLnBs CmluZGV4IGQwNzgzZmVmOWFlLi5mY2MwMTMzNDU4OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3RlLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJvbW90ZS5wbApAQCAtNCw2ICs0LDcg QEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRpbWU6OkhpUmVzIHF3KHVz bGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAgLTcwLDExICs3MSw5IEBAICRub2RlX3N0YW5k YnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBFeGVjdXRlIGEgcmVzdGFydCBwb2ludCBv biB0aGUgc3RhbmRieSwgdGhhdCB3ZSB3aWxsIG5vdyBiZSB3YWl0aW5nIG9uLgogIyBUaGlz IG5lZWRzIHRvIGJlIGluIHRoZSBiYWNrZ3JvdW5kLgogbXkgJGxvZ3N0YXJ0ID0gLXMgJG5v ZGVfc3RhbmRieS0+bG9nZmlsZTsKLW15ICRwc3FsX3Nlc3Npb24gPQotICAkbm9kZV9zdGFu ZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsK LSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQv LCBxKAotICAgXGVjaG8gc3RhcnRpbmdfY2hlY2twb2ludAorbXkgJHBzcWxfc2Vzc2lvbiA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4gJG5vZGVfc3RhbmRieSk7 CiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygKKwlxKAogICAgQ0hFQ0tQT0lOVDsKICkpOwog CkBAIC0xNTksNyArMTU4LDcgQEAgb2soIHB1bXBfdW50aWwoCiAka2lsbG1lLT5maW5pc2g7 CiAKICMgV2FpdCB0aWxsIHNlcnZlciBmaW5pc2hlcyByZXN0YXJ0aW5nLgotJG5vZGVfc3Rh bmRieS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCB1bmRlZiwgJycpOworJG5vZGVf c3RhbmRieS0+cG9sbF91bnRpbF9jb25uZWN0aW9uKCdwb3N0Z3JlcycpOwogCiAjIEFmdGVy IHJlY292ZXJ5LCB0aGUgc2VydmVyIHNob3VsZCBiZSBhYmxlIHRvIHN0YXJ0LgogbXkgJHN0 ZG91dDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZlbF9i YWNrdXAucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Ml9sb3dfbGV2ZWxfYmFja3VwLnBs CmluZGV4IGRmNGFlMDI5ZmU2Li5hZDM4ZDA4Y2E2MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbAorKysgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzA0Ml9sb3dfbGV2ZWxfYmFja3VwLnBsCkBAIC0xMCw2ICsxMCw3IEBAIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBGaWxlOjpDb3B5IHF3KGNvcHkpOwogdXNl IEZpbGU6OlBhdGggcXcocm10cmVlKTsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMjAsMTAgKzIxLDkgQEAgJG5vZGVf cHJpbWFyeS0+c3RhcnQ7CiAKICMgU3RhcnQgYmFja3VwLgogbXkgJGJhY2t1cF9uYW1lID0g J2JhY2t1cDEnOwotbXkgJHBzcWwgPSAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJyk7CitteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5l dyhub2RlID0+ICRub2RlX3ByaW1hcnkpOwogCi0kcHNxbC0+cXVlcnlfc2FmZSgiU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgVE8gV0FSTklORyIpOwotJHBzcWwtPnNldF9xdWVyeV90aW1l cl9yZXN0YXJ0OworJHBzcWwtPmRvKCJTRVQgY2xpZW50X21pbl9tZXNzYWdlcyBUTyBXQVJO SU5HIik7CiAkcHNxbC0+cXVlcnlfc2FmZSgic2VsZWN0IHBnX2JhY2t1cF9zdGFydCgndGVz dCBsYWJlbCcpIik7CiAKICMgQ29weSBmaWxlcy4KQEAgLTgxLDkgKzgxLDkgQEAgbXkgJHN0 b3Bfc2VnbWVudF9uYW1lID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAKICMgU3RvcCBiYWNrdXAgYW5kIGdldCBiYWNrdXBfbGFiZWwsIHRoZSBsYXN0IHNlZ21l bnQgaXMgYXJjaGl2ZWQuCiBteSAkYmFja3VwX2xhYmVsID0KLSAgJHBzcWwtPnF1ZXJ5X3Nh ZmUoInNlbGVjdCBsYWJlbGZpbGUgZnJvbSBwZ19iYWNrdXBfc3RvcCgpIik7CisgICRwc3Fs LT5xdWVyeV9vbmV2YWwoInNlbGVjdCBsYWJlbGZpbGUgZnJvbSBwZ19iYWNrdXBfc3RvcCgp Iik7CiAKLSRwc3FsLT5xdWl0OworJHBzcWwtPmNsb3NlOwogCiAjIFJhdGhlciB0aGFuIHdy aXRpbmcgb3V0IGJhY2t1cF9sYWJlbCwgdHJ5IHRvIHJlY292ZXIgdGhlIGJhY2t1cCB3aXRo b3V0CiAjIGJhY2t1cF9sYWJlbCB0byBkZW1vbnN0cmF0ZSB0aGF0IHJlY292ZXJ5IHdpbGwg bm90IHdvcmsgY29ycmVjdGx5IHdpdGhvdXQgaXQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQ2X2NoZWNrcG9pbnRfbG9naWNhbF9zbG90LnBsCmluZGV4IDY2NzYxYmY1 NmMxLi4zYTQ2ZjIwZmMyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDZf Y2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwKQEAgLTgsNiArOCw3IEBAIHVzZSBzdHJp Y3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVzZSBUZXN0OjpNb3JlOwpAQCAtNTIsMTMgKzUz LDEwIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXtjaGVja3BvaW50fSk7CiAKICMgR2VuZXJhdGUgc29tZSB0cmFuc2Fj dGlvbnMgdG8gZ2V0IFJVTk5JTkdfWEFDVFMuCi1teSAkeGFjdHMgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJHhhY3RzLT5xdWVyeV91bnRpbCgKLQlxci9ydW5f eGFjdHMvLAotCXEoXGVjaG8gcnVuX3hhY3RzCi1TRUxFQ1QgMSBcd2F0Y2ggMC4xCi1ccQot KSk7Citmb3IgKG15ICRpID0gMDsgJGkgPCAxMDsgJGkrKykKK3sKKwkkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgMScpOworfQogCiAkbm9kZS0+YWR2YW5jZV93YWwo MjApOwogCkBAIC03MiwxNiArNzAsMTEgQEAgJG5vZGUtPmFkdmFuY2Vfd2FsKDIwKTsKICMg cmVtb3Zpbmcgb2xkIFdBTCBzZWdtZW50cy4KIG5vdGUoJ3N0YXJ0aW5nIGNoZWNrcG9pbnQn KTsKIAotbXkgJGNoZWNrcG9pbnQgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycpOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJcShzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrcG9pbnQt YmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcsJ3dhaXQnKSkKICk7Ci0kY2hlY2twb2ludC0+cXVl cnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8sCi0JcShcZWNobyBzdGFydGlu Z19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotXHEKLSkpOworbXkgJGNoZWNrcG9pbnQgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskY2hlY2tw b2ludC0+ZG9fYXN5bmMocShDSEVDS1BPSU5UOykpOwogCiAjIFdhaXQgdW50aWwgdGhlIGNo ZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlIHJlbW92aW5nIFdBTCBzZWdtZW50cy4KIG5v dGUoJ3dhaXRpbmcgZm9yIGluamVjdGlvbl9wb2ludCcpOwpAQCAtOTAsMTcgKzgzLDIxIEBA IG5vdGUoJ2luamVjdGlvbl9wb2ludCBpcyByZWFjaGVkJyk7CiAKICMgVHJ5IHRvIGFkdmFu Y2UgdGhlIGxvZ2ljYWwgc2xvdCwgYnV0IG1ha2UgaXQgc3RvcCB3aGVuIGl0IG1vdmVzIHRv IHRoZSBuZXh0CiAjIFdBTCBzZWdtZW50ICh0aGlzIGhhcyB0byBoYXBwZW4gaW4gdGhlIGJh Y2tncm91bmQsIHRvbykuCi1teSAkbG9naWNhbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJyk7Ci0kbG9naWNhbC0+cXVlcnlfc2FmZSgKKyMgV2UgbmVlZCB0byBjYWxs IHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcyByZXBlYXRlZGx5IHVudGlsIHRoZSBzbG90 CisjIGFkdmFuY2VzIHRvIHRoZSBuZXh0IHNlZ21lbnQgYW5kIGhpdHMgdGhlIGluamVjdGlv biBwb2ludC4KK215ICRsb2dpY2FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOworJGxvZ2ljYWwtPmRvKAogCXF7c2VsZWN0IGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdsb2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50 Jywnd2FpdCcpO30KICk7Ci0kbG9naWNhbC0+cXVlcnlfdW50aWwoCi0JcXIvZ2V0X2NoYW5n ZXMvLAotCXEoCi1cZWNobyBnZXRfY2hhbmdlcwotc2VsZWN0IGNvdW50KCopIGZyb20gcGdf bG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdzbG90X2xvZ2ljYWwnLCBudWxsLCBudWxsKSBc d2F0Y2ggMQotXHEKLSkpOworJGxvZ2ljYWwtPmRvX2FzeW5jKAorCXF7RE8gJCQKKwlCRUdJ TgorCQlMT09QCisJCQlQRVJGT1JNIGNvdW50KCopIEZST00gcGdfbG9naWNhbF9zbG90X2dl dF9jaGFuZ2VzKCdzbG90X2xvZ2ljYWwnLCBudWxsLCBudWxsKTsKKwkJCVBFUkZPUk0gcGdf c2xlZXAoMC4xKTsKKwkJRU5EIExPT1A7CisJRU5EICQkO30KKyk7CiAKICMgV2FpdCB1bnRp bCB0aGUgc2xvdCdzIHJlc3RhcnRfbHNuIHBvaW50cyB0byB0aGUgbmV4dCBXQUwgc2VnbWVu dC4KIG5vdGUoJ3dhaXRpbmcgZm9yIGluamVjdGlvbl9wb2ludCcpOwpAQCAtMTM4LDEyICsx MzUsOCBAQCBldmFsIHsKIH07CiBpcygkQCwgJycsICJMb2dpY2FsIHNsb3Qgc3RpbGwgdmFs aWQiKTsKIAotIyBJZiB3ZSBzZW5kIFxxIHdpdGggJDxwc3FsX3Nlc3Npb24+LT5xdWl0IHRo ZSBjb21tYW5kIGNhbiBiZSBzZW50IHRvIHRoZQotIyBzZXNzaW9uIGFscmVhZHkgY2xvc2Vk LiBTbyBccSBpcyBpbiBpbml0aWFsIHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlzaAotIyBJ UEM6OlJ1bgotJHhhY3RzLT57cnVufS0+ZmluaXNoOwotJGNoZWNrcG9pbnQtPntydW59LT5m aW5pc2g7Ci0kbG9naWNhbC0+e3J1bn0tPmZpbmlzaDsKKyMgU2Vzc2lvbnMgd2VyZSB0ZXJt aW5hdGVkIGJ5IHRoZSBzZXJ2ZXIgY3Jhc2ggYW5kIHdpbGwgYmUgY2xlYW5lZCB1cAorIyBh dXRvbWF0aWNhbGx5IHdoZW4gdGhleSBnbyBvdXQgb2Ygc2NvcGUuCiAKICMgVmVyaWZ5IHRo YXQgdGhlIHN5bmNocm9uaXplZCBzbG90cyB3b24ndCBiZSBpbnZhbGlkYXRlZCBpbW1lZGlh dGVseSBhZnRlcgogIyBzeW5jaHJvbml6YXRpb24gaW4gdGhlIHByZXNlbmNlIG9mIGEgY29u Y3VycmVudCBjaGVja3BvaW50LgpAQCAtMTg1LDE1ICsxNzgsMTEgQEAgJHByaW1hcnktPndh aXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5KTsKICMgY2hlY2twb2ludCBzdG9wcyBy aWdodCBiZWZvcmUgaW52YWxpZGF0aW5nIHJlcGxpY2F0aW9uIHNsb3RzLgogbm90ZSgnc3Rh cnRpbmcgY2hlY2twb2ludCcpOwogCi0kY2hlY2twb2ludCA9ICRzdGFuZGJ5LT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kY2hlY2twb2ludC0+cXVlcnlfc2FmZSgKKyRzdGFu ZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxKHNlbGVjdCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgncmVzdGFydHBvaW50LWJlZm9yZS1zbG90LWludmFsaWRhdGlvbicsJ3dhaXQn KSkKICk7Ci0kY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2tw b2ludC8sCi0JcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotKSk7 CiskY2hlY2twb2ludCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRzdGFuZGJ5KTsKKyRjaGVja3BvaW50LT5kb19hc3luYyhxKENIRUNLUE9JTlQ7KSk7CiAK ICMgV2FpdCB1bnRpbCB0aGUgY2hlY2twb2ludCBzdG9wcyByaWdodCBiZWZvcmUgaW52YWxp ZGF0aW5nIHNsb3RzCiBub3RlKCd3YWl0aW5nIGZvciBpbmplY3Rpb25fcG9pbnQnKTsKQEAg LTIxNiw3ICsyMDUsOCBAQCAkc3RhbmRieS0+c2FmZV9wc3FsKAogCXF7c2VsZWN0IGluamVj dGlvbl9wb2ludHNfd2FrZXVwKCdyZXN0YXJ0cG9pbnQtYmVmb3JlLXNsb3QtaW52YWxpZGF0 aW9uJyk7CiAJICBzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3Jlc3RhcnRwb2lu dC1iZWZvcmUtc2xvdC1pbnZhbGlkYXRpb24nKX0pOwogCi0kY2hlY2twb2ludC0+cXVpdDsK KyRjaGVja3BvaW50LT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGNoZWNrcG9pbnQtPmNsb3Nl OwogCiAjIENvbmZpcm0gdGhhdCB0aGUgc2xvdCBpcyBub3QgaW52YWxpZGF0ZWQKIGlzKCAk c3RhbmRieS0+c2FmZV9wc3FsKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCmluZGV4IDQzMzQxNDVhYmUxLi40MzE5 M2MyMTliYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2lu dF9waHlzaWNhbF9zbG90LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3X2NoZWNr cG9pbnRfcGh5c2ljYWxfc2xvdC5wbApAQCAtOCw2ICs4LDcgQEAgdXNlIHN0cmljdDsKIHVz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIAogdXNlIFRlc3Q6Ok1vcmU7CkBAIC02OSwxNiArNzAsMTEgQEAg bm90ZSgicmVzdGFydCBsc24gYmVmb3JlIGNoZWNrcG9pbnQ6ICRyZXN0YXJ0X2xzbl9pbml0 Iik7CiAjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCiBub3RlKCdzdGFydGluZyBjaGVj a3BvaW50Jyk7CiAKLW15ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnKTsKLSRjaGVja3BvaW50LT5xdWVyeV9zYWZlKAorbXkgJGNoZWNrcG9pbnQg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskY2hl Y2twb2ludC0+ZG8oCiAJcXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNr cG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcsJ3dhaXQnKX0KICk7Ci0kY2hlY2twb2lu dC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8sCi0JcShcZWNobyBz dGFydGluZ19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotXHEKLSkpOworJGNoZWNrcG9pbnQt PmRvX2FzeW5jKCdjaGVja3BvaW50Jyk7CiAKICMgV2FpdCB1bnRpbCB0aGUgY2hlY2twb2lu dCBzdG9wcyByaWdodCBiZWZvcmUgcmVtb3ZpbmcgV0FMIHNlZ21lbnRzLgogbm90ZSgnd2Fp dGluZyBmb3IgaW5qZWN0aW9uX3BvaW50Jyk7CkBAIC0xMDQsNyArMTAwLDExIEBAIG15ICRy ZXN0YXJ0X2xzbl9vbGQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiBjaG9tcCgk cmVzdGFydF9sc25fb2xkKTsKIG5vdGUoInJlc3RhcnQgbHNuIGJlZm9yZSBzdG9wOiAkcmVz dGFydF9sc25fb2xkIik7CiAKLSMgQWJydXB0bHkgc3RvcCB0aGUgc2VydmVyLgorJGNoZWNr cG9pbnQtPndhaXRfZm9yX2NvbXBsZXRpb24oKTsKKyRjaGVja3BvaW50LT5jbG9zZSgpOwor CisjIEFicnVwdGx5IHN0b3AgdGhlIHNlcnZlciAoMSBzZWNvbmQgc2hvdWxkIGJlIGVub3Vn aCBmb3IgdGhlIGNoZWNrcG9pbnQKKyMgdG8gZmluaXNoOyBpdCB3b3VsZCBiZSBiZXR0ZXIp LgogJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScpOwogCiAkbm9kZS0+c3RhcnQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OF92YWN1dW1faG9yaXpvbl9mbG9vci5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ4X3ZhY3V1bV9ob3Jpem9uX2Zsb29yLnBsCmluZGV4 IDUyYWNiNTU2MWQ2Li5hNDg3YmUwNGRjOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwKQEAgLTQ1LDEyICs0NSwxMCBAQCBt eSAkb3JpZ19jb25uaW5mbyA9ICRub2RlX3ByaW1hcnktPmNvbm5zdHIoKTsKIG15ICR0YWJs ZTEgPSAidmFjX2hvcml6b25fZmxvb3JfdGFibGUiOwogCiAjIExvbmctcnVubmluZyBQcmlt YXJ5IFNlc3Npb24gQQotbXkgJHBzcWxfcHJpbWFyeUEgPQotICAkbm9kZV9wcmltYXJ5LT5i YWNrZ3JvdW5kX3BzcWwoJHRlc3RfZGIsIG9uX2Vycm9yX3N0b3AgPT4gMSk7CitteSAkc2Vz c2lvbl9wcmltYXJ5QSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlX3ByaW1hcnksIGRibmFtZSA9PiAkdGVzdF9kYik7CiAKICMgTG9uZy1ydW5uaW5n IFByaW1hcnkgU2Vzc2lvbiBCCi1teSAkcHNxbF9wcmltYXJ5QiA9Ci0gICRub2RlX3ByaW1h cnktPmJhY2tncm91bmRfcHNxbCgkdGVzdF9kYiwgb25fZXJyb3Jfc3RvcCA9PiAxKTsKK215 ICRzZXNzaW9uX3ByaW1hcnlCID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGUgPT4gJG5vZGVfcHJpbWFyeSwgZGJuYW1lID0+ICR0ZXN0X2RiKTsKIAogIyBPdXIgdGVz dCByZWxpZXMgb24gdHdvIHJvdW5kcyBvZiBpbmRleCB2YWN1dW1pbmcgZm9yIHJlYXNvbnMg ZWxhYm9yYXRlZAogIyBsYXRlci4gVG8gdHJpZ2dlciB0d28gcm91bmRzIG9mIGluZGV4IHZh Y3V1bWluZywgd2UgbXVzdCBmaWxsIHVwIHRoZQpAQCAtMTIzLDcgKzEyMSw3IEBAICRub2Rl X3JlcGxpY2EtPnBvbGxfcXVlcnlfdW50aWwoCiAjIE5vdyBpbnNlcnQgYW5kIHVwZGF0ZSBh IHR1cGxlIHdoaWNoIHdpbGwgYmUgdmlzaWJsZSB0byB0aGUgdmFjdXVtIG9uIHRoZQogIyBw cmltYXJ5IGJ1dCB3aGljaCB3aWxsIGhhdmUgeG1heCBuZXdlciB0aGFuIHRoZSBvbGRlc3Qg eG1pbiBvbiB0aGUgc3RhbmRieQogIyB0aGF0IHdhcyByZWNlbnRseSBkaXNjb25uZWN0ZWQu Ci1teSAkcmVzID0gJHBzcWxfcHJpbWFyeUEtPnF1ZXJ5X3NhZmUoCitteSAkcmVzID0gJHNl c3Npb25fcHJpbWFyeUEtPnF1ZXJ5KAogCXFxWwogCQlJTlNFUlQgSU5UTyAkdGFibGUxIFZB TFVFUyAoOTkpOwogCQlVUERBVEUgJHRhYmxlMSBTRVQgY29sMSA9IDEwMCBXSEVSRSBjb2wx ID0gOTk7CkBAIC0xMzIsNyArMTMwLDcgQEAgbXkgJHJlcyA9ICRwc3FsX3ByaW1hcnlBLT5x dWVyeV9zYWZlKAogKTsKIAogIyBNYWtlIHN1cmUgdGhlIFVQREFURSBmaW5pc2hlZAotbGlr ZSgkcmVzLCBxci9eYWZ0ZXJfdXBkYXRlJC9tLCAiVVBEQVRFIG9jY3VycmVkIG9uIHByaW1h cnkgc2Vzc2lvbiBBIik7CitsaWtlKCRyZXMtPntwc3Fsb3V0fSwgcXIvXmFmdGVyX3VwZGF0 ZSQvbSwgIlVQREFURSBvY2N1cnJlZCBvbiBwcmltYXJ5IHNlc3Npb24gQSIpOwogCiAjIE9w ZW4gYSBjdXJzb3Igb24gdGhlIHByaW1hcnkgd2hvc2UgcGluIHdpbGwga2VlcCBWQUNVVU0g ZnJvbSBnZXR0aW5nIGEKICMgY2xlYW51cCBsb2NrIG9uIHRoZSBmaXJzdCBwYWdlIG9mIHRo ZSByZWxhdGlvbi4gV2Ugd2FudCBWQUNVVU0gdG8gYmUgYWJsZSB0bwpAQCAtMTQ1LDcgKzE0 Myw3IEBAIG15ICRwcmltYXJ5X2N1cnNvcjEgPSAidmFjX2hvcml6b25fZmxvb3JfY3Vyc29y MSI7CiAjIFRoZSBmaXJzdCB2YWx1ZSBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZSB3YXMgYSA3 LCBzbyBGRVRDSCBGT1JXQVJEIHNob3VsZAogIyByZXR1cm4gYSA3LiBUaGF0J3MgaG93IHdl IGtub3cgdGhlIGN1cnNvciBoYXMgYSBwaW4uCiAjIERpc2FibGUgaW5kZXggc2NhbnMgc28g dGhlIGN1cnNvciBwaW5zIGhlYXAgcGFnZXMgYW5kIG5vdCBpbmRleCBwYWdlcy4KLSRyZXMg PSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlfc2FmZSgKKyRyZXMgPSAkc2Vzc2lvbl9wcmltYXJ5 Qi0+cXVlcnkoCiAJcXFbCiAJQkVHSU47CiAJU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm OwpAQCAtMTU2LDExICsxNTQsMTEgQEAgJHJlcyA9ICRwc3FsX3ByaW1hcnlCLT5xdWVyeV9z YWZlKAogCV0KICk7CiAKLWlzKCRyZXMsIDcsIHFxW0N1cnNvciBxdWVyeSByZXR1cm5lZCAk cmVzLiBFeHBlY3RlZCB2YWx1ZSA3Ll0pOworaXMoJHJlcy0+e3BzcWxvdXR9LCA3LCBxcVtD dXJzb3IgcXVlcnkgcmV0dXJuZWQgJHJlcy0+e3BzcWxvdXR9LiBFeHBlY3RlZCB2YWx1ZSA3 Ll0pOwogCiAjIEdldCB0aGUgUElEIG9mIHRoZSBzZXNzaW9uIHdoaWNoIHdpbGwgcnVuIHRo ZSBWQUNVVU0gRlJFRVpFIHNvIHRoYXQgd2UgY2FuCiAjIHVzZSBpdCB0byBmaWx0ZXIgcGdf c3RhdF9hY3Rpdml0eSBsYXRlci4KLW15ICR2YWN1dW1fcGlkID0gJHBzcWxfcHJpbWFyeUEt PnF1ZXJ5X3NhZmUoIlNFTEVDVCBwZ19iYWNrZW5kX3BpZCgpOyIpOworbXkgJHZhY3V1bV9w aWQgPSAkc2Vzc2lvbl9wcmltYXJ5QS0+cXVlcnlfb25ldmFsKCJTRUxFQ1QgcGdfYmFja2Vu ZF9waWQoKTsiKTsKIAogIyBOb3cgc3RhcnQgYSBWQUNVVU0gRlJFRVpFIG9uIHRoZSBwcmlt YXJ5LiBJdCB3aWxsIGNhbGwgdmFjdXVtX2dldF9jdXRvZmZzKCkKICMgYW5kIGVzdGFibGlz aCB2YWx1ZXMgb2YgT2xkZXN0WG1pbiBhbmQgR2xvYmFsVmlzU3RhdGUgd2hpY2ggYXJlIG5l d2VyIHRoYW4KQEAgLTE3NiwxNCArMTc0LDggQEAgbXkgJHZhY3V1bV9waWQgPSAkcHNxbF9w cmltYXJ5QS0+cXVlcnlfc2FmZSgiU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCk7Iik7CiAjIHBh Z2VzIG9mIHRoZSBoZWFwIG11c3QgYmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJ5IGEgc2luZ2xl IHdvcmtlciB0byBlbnN1cmUKICMgdGVzdCBzdGFiaWxpdHkgKFBBUkFMTEVMIDAgc2hvdWxk bid0IGJlIG5lY2Vzc2FyeSBidXQgZ3VhcmRzIGFnYWluc3QgdGhlCiAjIHBvc3NpYmlsaXR5 IG9mIHBhcmFsbGVsIGhlYXAgdmFjdXVtaW5nKS4KLSRwc3FsX3ByaW1hcnlBLT57c3RkaW59 IC49IHFxWwotCQlTRVQgbWFpbnRlbmFuY2VfaW9fY29uY3VycmVuY3kgPSAwOwotCQlWQUNV VU0gKFZFUkJPU0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkgJHRhYmxlMTsKLQkJXFxlY2hvIFZB Q1VVTQotICAgICAgICBdOwotCi0jIE1ha2Ugc3VyZSB0aGUgVkFDVVVNIGNvbW1hbmQgbWFr ZXMgaXQgdG8gdGhlIHNlcnZlci4KLSRwc3FsX3ByaW1hcnlBLT57cnVufS0+cHVtcF9uYigp OworJHNlc3Npb25fcHJpbWFyeUEtPmRvKCdTRVQgbWFpbnRlbmFuY2VfaW9fY29uY3VycmVu Y3kgPSAwOycpOworJHNlc3Npb25fcHJpbWFyeUEtPmRvX2FzeW5jKCJWQUNVVU0gKFZFUkJP U0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkgJHRhYmxlMTsiKTsKIAogIyBNYWtlIHN1cmUgdGhh dCB0aGUgVkFDVVVNIGhhcyBhbHJlYWR5IGNhbGxlZCB2YWN1dW1fZ2V0X2N1dG9mZnMoKSBh bmQgaXMKICMganVzdCB3YWl0aW5nIG9uIHRoZSBsb2NrIHRvIHN0YXJ0IHZhY3V1bWluZy4g V2UgZG9uJ3Qgd2FudCB0aGUgc3RhbmRieSB0bwpAQCAtMjI5LDcgKzIyMSw3IEBAICRub2Rl X3ByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoCiAjIGV4cGVjdCB0aGF0IGEgcm91bmQgb2Yg aW5kZXggdmFjdXVtaW5nIGhhcyBoYXBwZW5lZCBhbmQgdGhhdCB0aGUgdmFjdXVtIGlzCiAj IG5vdyB3YWl0aW5nIGZvciB0aGUgY3Vyc29yIHRvIHJlbGVhc2UgaXRzIHBpbiBvbiB0aGUg bGFzdCBwYWdlIG9mIHRoZQogIyByZWxhdGlvbi4KLSRyZXMgPSAkcHNxbF9wcmltYXJ5Qi0+ cXVlcnlfc2FmZSgiRkVUQ0ggJHByaW1hcnlfY3Vyc29yMSIpOworJHJlcyA9ICRzZXNzaW9u X3ByaW1hcnlCLT5xdWVyeV9vbmV2YWwoIkZFVENIICRwcmltYXJ5X2N1cnNvcjEiKTsKIGlz KCRyZXMsIDcsCiAJcXFbQ3Vyc29yIHF1ZXJ5IHJldHVybmVkICRyZXMgZnJvbSBzZWNvbmQg ZmV0Y2guIEV4cGVjdGVkIHZhbHVlIDcuXSk7CiAKQEAgLTI0MywxMyArMjM1LDcgQEAgJG5v ZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKIAldLCAndCcpOwogCiAjIENvbW1pdCB0 aGUgdHJhbnNhY3Rpb24gd2l0aCB0aGUgb3BlbiBjdXJzb3Igc28gdGhhdCB0aGUgVkFDVVVN IGNhbiBmaW5pc2guCi0kcHNxbF9wcmltYXJ5Qi0+cXVlcnlfdW50aWwoCi0JcXIvXmNvbW1p dCQvbSwKLQlxcVsKLQkJCUNPTU1JVDsKLQkJCVxcZWNobyBjb21taXQKLSAgICAgICAgXQot KTsKKyRzZXNzaW9uX3ByaW1hcnlCLT5kbygnQ09NTUlUJyk7CiAKICMgVkFDVVVNIHByb2Nl ZWRzIHdpdGggcHJ1bmluZyBhbmQgZG9lcyBhIHZpc2liaWxpdHkgY2hlY2sgb24gZWFjaCB0 dXBsZS4gSW4KICMgb2xkZXIgdmVyc2lvbnMgb2YgUG9zdGdyZXMsIHBydW5pbmcgZm91bmQg b3VyIGZpbmFsIGRlYWQgdHVwbGUKQEAgLTI4MSw4ICsyNjcsOCBAQCAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJHRlc3RfZGIsICJJTlNFUlQgSU5UTyAkdGFibGUxIFZBTFVFUyAoMSk7 Iik7CiAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3JlcGxpY2EsICdy ZXBsYXknLCAkcHJpbWFyeV9sc24pOwogCiAjIyBTaHV0IGRvd24gcHNxbHMKLSRwc3FsX3By aW1hcnlBLT5xdWl0OwotJHBzcWxfcHJpbWFyeUItPnF1aXQ7Ciskc2Vzc2lvbl9wcmltYXJ5 QS0+Y2xvc2U7Ciskc2Vzc2lvbl9wcmltYXJ5Qi0+Y2xvc2U7CiAKICRub2RlX3JlcGxpY2Et PnN0b3AoKTsKICRub2RlX3ByaW1hcnktPnN0b3AoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRleCBiYzIxNjA2NDcxNC4uOTkxMWU1YmZhMDQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAorKysg Yi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKQEAgLTUsNiArNSw3 IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApA QCAtMjIxLDIwICsyMjIsMTUgQEAgb2soJG91dHB1dCBlcSAidGltZW91dCIsICJXQUlUIEZP UiByZXR1cm5zIGNvcnJlY3Qgc3RhdHVzIGFmdGVyIHRpbWVvdXQiKTsKIG15ICRzdWJ4YWN0 X2xzbiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qg cGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpICsgMTAwMDAwMDAwMDAiKTsKIG15ICRzdWJ4 YWN0X2FwcG5hbWUgPSAnd2FpdF9mb3JfbHNuX3N1YnhhY3RfY2xlYW51cCc7Ci1teSAkc3Vi eGFjdF9zZXNzaW9uID0KLSAgJG5vZGVfcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kc3VieGFjdF9zZXNzaW9uLT5xdWVyeV91 bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVNFVCBhcHBsaWNhdGlvbl9uYW1lID0gJyRzdWJ4 YWN0X2FwcG5hbWUnOwotCUJFR0lOOwotCVNBVkVQT0lOVCB3YWl0X2NsZWFudXA7Ci0JXFxl Y2hvIHN0YXJ0Ci0JV0FJVCBGT1IgTFNOICcke3N1YnhhY3RfbHNufScgV0lUSCAoTU9ERSAn cHJpbWFyeV9mbHVzaCcpOwotCVJPTExCQUNLIFRPIHdhaXRfY2xlYW51cDsKLQlXQUlUIEZP UiBMU04gJyR7c3VieGFjdF9sc259JwotCQlXSVRIIChNT0RFICdwcmltYXJ5X2ZsdXNoJywg dGltZW91dCAnMTBtcycsIG5vX3Rocm93KTsKLQlDT01NSVQ7Ci1dKTsKK215ICRzdWJ4YWN0 X3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZV9wcmltYXJ5KTsKKyMgU2VuZCB0aGUgc2V0dXAgc3RhdGVtZW50cyBpbmRpdmlkdWFsbHkg c28gdGhlIGZpcnN0IFdBSVQgRk9SIExTTiBjYW4gYmUKKyMgaXNzdWVkIGFzeW5jaHJvbm91 c2x5OiBpdCBibG9ja3MgKHRoZSB0YXJnZXQgTFNOIGlzIHVucmVhY2hhYmxlKSBhbmQgd2ls bAorIyBiZSBjYW5jZWxlZCBiZWxvdy4KKyRzdWJ4YWN0X3Nlc3Npb24tPmRvKCJTRVQgYXBw bGljYXRpb25fbmFtZSA9ICckc3VieGFjdF9hcHBuYW1lJyIpOworJHN1YnhhY3Rfc2Vzc2lv bi0+ZG8oIkJFR0lOIik7Ciskc3VieGFjdF9zZXNzaW9uLT5kbygiU0FWRVBPSU5UIHdhaXRf Y2xlYW51cCIpOworJHN1YnhhY3Rfc2Vzc2lvbi0+ZG9fYXN5bmMoCisJIldBSVQgRk9SIExT TiAnJHtzdWJ4YWN0X2xzbn0nIFdJVEggKE1PREUgJ3ByaW1hcnlfZmx1c2gnKSIpOwogJG5v ZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKIAkncG9zdGdyZXMnLAogCSJTRUxFQ1Qg Y291bnQoKikgPSAxIEZST00gcGdfc3RhdF9hY3Rpdml0eQpAQCAtMjQ4LDE4ICsyNDQsMzAg QEAgbXkgJHN1YnhhY3RfY2FuY2VsbGVkID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAog CSAgIEFORCB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JXYWxGbHVzaCciCiApOwogaXMoJHN1Ynhh Y3RfY2FuY2VsbGVkLCAndCcsICJjYW5jZWxlZCBXQUlUIEZPUiBMU04gaW4gc3VidHJhbnNh Y3Rpb24iKTsKLSRzdWJ4YWN0X3Nlc3Npb24tPnF1aXQ7Ci1jaG9tcCgkc3VieGFjdF9zZXNz aW9uLT57c3Rkb3V0fSk7CisKKyMgVGhlIGNhbmNlbCBpbnRlcnJ1cHRzIHRoZSBibG9ja2lu ZyBXQUlUIEZPUiBMU04sIGxlYXZpbmcgdGhlIHRyYW5zYWN0aW9uCisjIGluIGFuIGFib3J0 ZWQgc3RhdGUuCitteSAkc3VieGFjdF9jYW5jZWxfcmVzID0gJHN1YnhhY3Rfc2Vzc2lvbi0+ Z2V0X2FzeW5jX3Jlc3VsdCgpOwogbGlrZSgKLQkkc3VieGFjdF9zZXNzaW9uLT57c3RkZXJy fSwKKwkkc3VieGFjdF9jYW5jZWxfcmVzLT57ZXJyb3JfbWVzc2FnZX0sCiAJcXIvY2FuY2Vs aW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciByZXF1ZXN0LywKIAkicXVlcnkgY2FuY2VsIGlu dGVycnVwdGVkIFdBSVQgRk9SIExTTiBpbiBzdWJ0cmFuc2FjdGlvbiIpOwotaXMoJHN1Ynhh Y3Rfc2Vzc2lvbi0+e3N0ZG91dH0sCisKKyMgUm9sbCBiYWNrIHRvIHRoZSBzYXZlcG9pbnQg c28gYSBzZWNvbmQgV0FJVCBGT1IgTFNOIGNhbiByZWdpc3RlciBhZ2FpbiBpbgorIyB0aGUg c2FtZSBiYWNrZW5kOyB3aXRoIG5vX3Rocm93IGl0IHJldHVybnMgJ3RpbWVvdXQnIHJhdGhl ciB0aGFuIGVycm9yaW5nLgorJHN1YnhhY3Rfc2Vzc2lvbi0+ZG8oIlJPTExCQUNLIFRPIHdh aXRfY2xlYW51cCIpOworbXkgJHN1YnhhY3RfdGltZW91dCA9ICRzdWJ4YWN0X3Nlc3Npb24t PnF1ZXJ5X29uZXZhbCgKKwkiV0FJVCBGT1IgTFNOICcke3N1YnhhY3RfbHNufScKKwkJV0lU SCAoTU9ERSAncHJpbWFyeV9mbHVzaCcsIHRpbWVvdXQgJzEwbXMnLCBub190aHJvdykiKTsK K2lzKCRzdWJ4YWN0X3RpbWVvdXQsCiAJInRpbWVvdXQiLCAic2Vjb25kIFdBSVQgRk9SIExT TiB0aW1lZCBvdXQgYWZ0ZXIgc2F2ZXBvaW50IHJvbGxiYWNrIik7Ci11bmxpa2UoCi0JJHN1 YnhhY3Rfc2Vzc2lvbi0+e3N0ZGVycn0sCi0JcXIvc2VydmVyIGNsb3NlZCB0aGUgY29ubmVj dGlvbiB1bmV4cGVjdGVkbHkvLAorCisjIFRoZSBiYWNrZW5kIHN1cnZpdmVkIHRoZSBjYW5j ZWwgd2l0aG91dCBkaXNjb25uZWN0aW5nOiB0aGUgY29ubmVjdGlvbiBpcworIyBzdGlsbCB1 c2FibGUuCitpcygkc3VieGFjdF9zZXNzaW9uLT5xdWVyeV9vbmV2YWwoJ1NFTEVDVCAxJyks ICcxJywKIAkiV0FJVCBGT1IgTFNOIGFmdGVyIHNhdmVwb2ludCByb2xsYmFjayBkaWQgbm90 IGRpc2Nvbm5lY3QiKTsKKyRzdWJ4YWN0X3Nlc3Npb24tPmRvKCJDT01NSVQiKTsKKyRzdWJ4 YWN0X3Nlc3Npb24tPmNsb3NlOwogCiAjIDUuIENoZWNrIG1vZGUgdmFsaWRhdGlvbjogc3Rh bmRieSBtb2RlcyBlcnJvciBvbiBwcmltYXJ5LCBwcmltYXJ5IG1vZGUgZXJyb3JzCiAjIG9u IHN0YW5kYnksIGFuZCBwcmltYXJ5X2ZsdXNoIHdvcmtzIG9uIHByaW1hcnkuICBBbHNvIGNo ZWNrIHRoYXQgV0FJVCBGT1IKQEAgLTQ2NywxMCArNDc1LDggQEAgZm9yIChteSAkaSA9IDA7 ICRpIDwgNTsgJGkrKykKIAlteSAkbHNuID0KIAkgICRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSIp OwotCSRwc3FsX3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKLQkkcHNxbF9zZXNzaW9uc1skaV0tPnF1ZXJ5X3VudGlsKAotCQlx ci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkcHNxbF9zZXNzaW9uc1skaV0gPSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5KTsK KwkkcHNxbF9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFxWwogCQlXQUlUIEZPUiBMU04gJyR7 bHNufSc7CiAJCVNFTEVDVCBsb2dfY291bnQoJHtpfSk7CiAJXSk7CkBAIC00ODEsNyArNDg3 LDggQEAgJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf d2FsX3JlcGxheV9yZXN1bWUoKTsiKTsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKysp CiB7CiAJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJjb3VudCAke2l9IiwgJGxvZ19v ZmZzZXQpOwotCSRwc3FsX3Nlc3Npb25zWyRpXS0+cXVpdDsKKwkkcHNxbF9zZXNzaW9uc1sk aV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJHBzcWxfc2Vzc2lvbnNbJGldLT5jbG9zZTsK IH0KIAogb2soMSwgJ211bHRpcGxlIHN0YW5kYnlfcmVwbGF5IHdhaXRlcnMgcmVwb3J0ZWQg Y29uc2lzdGVudCBkYXRhJyk7CkBAIC01MDUsMTAgKzUxMiw4IEBAIGZvciAobXkgJGkgPSAw OyAkaSA8IDU7ICRpKyspCiBteSBAd3JpdGVfc2Vzc2lvbnM7CiBmb3IgKG15ICRpID0gMDsg JGkgPCA1OyAkaSsrKQogewotCSR3cml0ZV9zZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFuZGJ5 LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJHdyaXRlX3Nlc3Npb25zWyRpXS0+ cXVlcnlfdW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSR3cml0 ZV9zZXNzaW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZV9zdGFuZGJ5KTsKKwkkd3JpdGVfc2Vzc2lvbnNbJGldLT5kb19hc3luYyhxcVsK IAkJV0FJVCBGT1IgTFNOICckd3JpdGVfbHNuc1skaV0nIFdJVEggKE1PREUgJ3N0YW5kYnlf d3JpdGUnLCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgnd3JpdGVf ZG9uZScsICRpKTsKIAldKTsKQEAgLTUyNyw3ICs1MzIsOCBAQCByZXN1bWVfd2FscmVjZWl2 ZXIoJG5vZGVfc3RhbmRieSk7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewog CSRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygid3JpdGVfZG9uZSAkaSIsICR3cml0ZV9s b2dfb2Zmc2V0KTsKLQkkd3JpdGVfc2Vzc2lvbnNbJGldLT5xdWl0OworCSR3cml0ZV9zZXNz aW9uc1skaV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJHdyaXRlX3Nlc3Npb25zWyRpXS0+ Y2xvc2U7CiB9CiAKICMgVmVyaWZ5IG9uIHN0YW5kYnkgdGhhdCBXQUwgd2FzIHdyaXR0ZW4g dXAgdG8gdGhlIHRhcmdldCBMU04KQEAgLTU1NywxMCArNTYzLDggQEAgZm9yIChteSAkaSA9 IDA7ICRpIDwgNTsgJGkrKykKIG15IEBmbHVzaF9zZXNzaW9uczsKIGZvciAobXkgJGkgPSAw OyAkaSA8IDU7ICRpKyspCiB7Ci0JJGZsdXNoX3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5k YnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkZmx1c2hfc2Vzc2lvbnNbJGld LT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQvLCBxcVsKLQkJXFxlY2hvIHN0YXJ0CisJJGZs dXNoX3Nlc3Npb25zWyRpXSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlX3N0YW5kYnkpOworCSRmbHVzaF9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFx WwogCQlXQUlUIEZPUiBMU04gJyRmbHVzaF9sc25zWyRpXScgV0lUSCAoTU9ERSAnc3RhbmRi eV9mbHVzaCcsIHRpbWVvdXQgJzFkJyk7CiAJCVNFTEVDVCBsb2dfd2FpdF9kb25lKCdmbHVz aF9kb25lJywgJGkpOwogCV0pOwpAQCAtNTc5LDcgKzU4Myw4IEBAIHJlc3VtZV93YWxyZWNl aXZlcigkbm9kZV9zdGFuZGJ5KTsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7 CiAJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJmbHVzaF9kb25lICRpIiwgJGZsdXNo X2xvZ19vZmZzZXQpOwotCSRmbHVzaF9zZXNzaW9uc1skaV0tPnF1aXQ7CisJJGZsdXNoX3Nl c3Npb25zWyRpXS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkZmx1c2hfc2Vzc2lvbnNbJGld LT5jbG9zZTsKIH0KIAogIyBWZXJpZnkgb24gc3RhbmRieSB0aGF0IFdBTCB3YXMgZmx1c2hl ZCB1cCB0byB0aGUgdGFyZ2V0IExTTgpAQCAtNjE1LDEwICs2MjAsOCBAQCBteSBAbWl4ZWRf c2Vzc2lvbnM7CiBteSBAbWl4ZWRfbW9kZXMgPSAoJ3N0YW5kYnlfcmVwbGF5JywgJ3N0YW5k Ynlfd3JpdGUnLCAnc3RhbmRieV9mbHVzaCcpOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNjsg JGkrKykKIHsKLQkkbWl4ZWRfc2Vzc2lvbnNbJGldID0gJG5vZGVfc3RhbmRieS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRtaXhlZF9zZXNzaW9uc1skaV0tPnF1ZXJ5X3Vu dGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkbWl4ZWRfc2Vzc2lv bnNbJGldID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVf c3RhbmRieSk7CisJJG1peGVkX3Nlc3Npb25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJCVdBSVQg Rk9SIExTTiAnJHttaXhlZF90YXJnZXRfbHNufScgV0lUSCAoTU9ERSAnJG1peGVkX21vZGVz WyRpICUgM10nLCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgnbWl4 ZWRfZG9uZScsICRpKTsKIAldKTsKQEAgLTY0Miw3ICs2NDUsOCBAQCByZXN1bWVfd2FscmVj ZWl2ZXIoJG5vZGVfc3RhbmRieSk7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA2OyAkaSsrKQog ewogCSRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygibWl4ZWRfZG9uZSAkaSIsICRtaXhl ZF9sb2dfb2Zmc2V0KTsKLQkkbWl4ZWRfc2Vzc2lvbnNbJGldLT5xdWl0OworCSRtaXhlZF9z ZXNzaW9uc1skaV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJG1peGVkX3Nlc3Npb25zWyRp XS0+Y2xvc2U7CiB9CiAKICMgVmVyaWZ5IGFsbCBtb2RlcyByZWFjaGVkIHRoZSB0YXJnZXQg TFNOCkBAIC02NzUsMTAgKzY3OSw4IEBAIG15ICRwcmltYXJ5X2ZsdXNoX2xvZ19vZmZzZXQg PSAtcyAkbm9kZV9wcmltYXJ5LT5sb2dmaWxlOwogbXkgQHByaW1hcnlfZmx1c2hfc2Vzc2lv bnM7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewotCSRwcmltYXJ5X2ZsdXNo X3Nlc3Npb25zWyRpXSA9ICRub2RlX3ByaW1hcnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKLQkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0tPnF1ZXJ5X3VudGlsKAotCQlx ci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkcHJpbWFyeV9mbHVzaF9zZXNzaW9u c1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9w cmltYXJ5KTsKKwkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFxWwog CQlXQUlUIEZPUiBMU04gJyRwcmltYXJ5X2ZsdXNoX2xzbnNbJGldJyBXSVRIIChNT0RFICdw cmltYXJ5X2ZsdXNoJywgdGltZW91dCAnMWQnKTsKIAkJU0VMRUNUIGxvZ193YWl0X2RvbmUo J3ByaW1hcnlfZmx1c2hfZG9uZScsICRpKTsKIAldKTsKQEAgLTY4OSw3ICs2OTEsOCBAQCBm b3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewogCSRub2RlX3ByaW1hcnktPndhaXRf Zm9yX2xvZygicHJpbWFyeV9mbHVzaF9kb25lICRpIiwKIAkJJHByaW1hcnlfZmx1c2hfbG9n X29mZnNldCk7Ci0JJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldLT5xdWl0OworCSRwcmlt YXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkcHJpbWFy eV9mbHVzaF9zZXNzaW9uc1skaV0tPmNsb3NlOwogfQogCiAjIFZlcmlmeSBvbiBwcmltYXJ5 IHRoYXQgV0FMIHdhcyBmbHVzaGVkIHVwIHRvIHRoZSB0YXJnZXQgTFNOCkBAIC03MTcsMTAg KzcyMCw4IEBAIG15IEB3YWl0X21vZGVzID0gKCdzdGFuZGJ5X3JlcGxheScsICdzdGFuZGJ5 X3dyaXRlJywgJ3N0YW5kYnlfZmx1c2gnKTsKIG15IEB3YWl0X3Nlc3Npb25zOwogZm9yICht eSAkaSA9IDA7ICRpIDwgMzsgJGkrKykKIHsKLQkkd2FpdF9zZXNzaW9uc1skaV0gPSAkbm9k ZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJHdhaXRfc2Vzc2lv bnNbJGldLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQvLCBxcVsKLQkJXFxlY2hvIHN0YXJ0 CisJJHdhaXRfc2Vzc2lvbnNbJGldID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGVfc3RhbmRieSk7CisJJHdhaXRfc2Vzc2lvbnNbJGldLT5kb19hc3lu YyhxcVsKIAkJV0FJVCBGT1IgTFNOICcke2xzbjR9JyBXSVRIIChNT0RFICckd2FpdF9tb2Rl c1skaV0nKTsKIAldKTsKIH0KQEAgLTc1OCwxMiArNzU5LDcgQEAgb2soJG91dHB1dCBlcSAi bm90IGluIHJlY292ZXJ5IiwKICRub2RlX3N0YW5kYnktPnN0b3A7CiAkbm9kZV9wcmltYXJ5 LT5zdG9wOwogCi0jIElmIHdlIHNlbmQgXHEgd2l0aCAkc2Vzc2lvbi0+cXVpdCB0aGUgY29t bWFuZCBjYW4gYmUgc2VudCB0byB0aGUgc2Vzc2lvbgotIyBhbHJlYWR5IGNsb3NlZC4gU28g XHEgaXMgaW4gaW5pdGlhbCBzY3JpcHQsIGhlcmUgd2Ugb25seSBmaW5pc2ggSVBDOjpSdW4u Ci1mb3IgKG15ICRpID0gMDsgJGkgPCAzOyAkaSsrKQotewotCSR3YWl0X3Nlc3Npb25zWyRp XS0+e3J1bn0tPmZpbmlzaDsKLX0KKyMgU2Vzc2lvbnMgd2lsbCBiZSBjbGVhbmVkIHVwIGF1 dG9tYXRpY2FsbHkgd2hlbiB0aGV5IGdvIG91dCBvZiBzY29wZS4KIAogIyA5LiBBcmNoaXZl LW9ubHkgc3RhbmRieSB0ZXN0czogdmVyaWZ5IHN0YW5kYnlfd3JpdGUvc3RhbmRieV9mbHVz aCB3b3JrCiAjIHdpdGhvdXQgYSB3YWxyZWNlaXZlci4gIFRoZXNlIGV4ZXJjaXNlcyB0aGUg cmVwbGF5LXBvc2l0aW9uIGZsb29yIGluCkBAIC04NjIsMTggKzg1OCwxNCBAQCAkYXJjX3By aW1hcnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICMgU3RhcnQgYmFja2dyb3Vu ZCB3YWl0ZXJzLiAgV2l0aCByZXBsYXkgcGF1c2VkLCB0YXJnZXQgPiByZXBsYXksIHNvIHRo ZXkKICMgd2lsbCBzbGVlcCBvbiBXYWl0TGF0Y2guICBUaGV5IGNhbiBvbmx5IGJlIHdva2Vu IGJ5IHRoZSByZXBsYXktbG9vcAogIyBXYWl0TFNOV2FrZXVwIGNhbGxzLgotbXkgJGFyY193 cml0ZV9zZXNzaW9uID0gJGFyY19zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7Ci0kYXJjX3dyaXRlX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0LywgcXFb Ci0JXFxlY2hvIHN0YXJ0CitteSAkYXJjX3dyaXRlX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkYXJjX3N0YW5kYnkpOworJGFyY193cml0ZV9z ZXNzaW9uLT5kb19hc3luYyhxcVsKIAlXQUlUIEZPUiBMU04gJyR7YXJjX3RhcmdldF9sc24y fScKIAkJV0lUSCAoTU9ERSAnc3RhbmRieV93cml0ZScsIHRpbWVvdXQgJzFkJywgbm9fdGhy b3cpOwogXSk7CiAKLW15ICRhcmNfZmx1c2hfc2Vzc2lvbiA9ICRhcmNfc3RhbmRieS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGFyY19mbHVzaF9zZXNzaW9uLT5xdWVyeV91 bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVxcZWNobyBzdGFydAorbXkgJGFyY19mbHVzaF9z ZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJGFyY19z dGFuZGJ5KTsKKyRhcmNfZmx1c2hfc2Vzc2lvbi0+ZG9fYXN5bmMocXFbCiAJV0FJVCBGT1Ig TFNOICcke2FyY190YXJnZXRfbHNuMn0nCiAJCVdJVEggKE1PREUgJ3N0YW5kYnlfZmx1c2gn LCB0aW1lb3V0ICcxZCcsIG5vX3Rocm93KTsKIF0pOwpAQCAtODg3LDE1ICs4NzksMTUgQEAg JGFyY19zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAjIFNUQU5EQllf RkxVU0ggd2FpdGVycyBhcyBpdCByZXBsYXlzIHBhc3QgYXJjX3RhcmdldF9sc24yLgogJGFy Y19zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ193YWxfcmVwbGF5 X3Jlc3VtZSgpIik7CiAKLSRhcmNfd3JpdGVfc2Vzc2lvbi0+cXVpdDsKLSRhcmNfZmx1c2hf c2Vzc2lvbi0+cXVpdDsKLWNob21wKCRhcmNfd3JpdGVfc2Vzc2lvbi0+e3N0ZG91dH0pOwot Y2hvbXAoJGFyY19mbHVzaF9zZXNzaW9uLT57c3Rkb3V0fSk7CitteSAkYXJjX3dyaXRlX291 dCA9ICRhcmNfd3JpdGVfc2Vzc2lvbi0+Z2V0X2FzeW5jX3Jlc3VsdCgpOworbXkgJGFyY19m bHVzaF9vdXQgPSAkYXJjX2ZsdXNoX3Nlc3Npb24tPmdldF9hc3luY19yZXN1bHQoKTsKKyRh cmNfd3JpdGVfc2Vzc2lvbi0+Y2xvc2U7CiskYXJjX2ZsdXNoX3Nlc3Npb24tPmNsb3NlOwog Ci1pcygkYXJjX3dyaXRlX3Nlc3Npb24tPntzdGRvdXR9LAoraXMoJGFyY193cml0ZV9vdXQt Pntwc3Fsb3V0fSwKIAknc3VjY2VzcycsCiAJInN0YW5kYnlfd3JpdGUgd2FpdGVyIHdva2Vu IGJ5IHJlcGxheSBvbiBhcmNoaXZlLW9ubHkgc3RhbmRieSIpOwotaXMoJGFyY19mbHVzaF9z ZXNzaW9uLT57c3Rkb3V0fSwKK2lzKCRhcmNfZmx1c2hfb3V0LT57cHNxbG91dH0sCiAJJ3N1 Y2Nlc3MnLAogCSJzdGFuZGJ5X2ZsdXNoIHdhaXRlciB3b2tlbiBieSByZXBsYXkgb24gYXJj aGl2ZS1vbmx5IHN0YW5kYnkiKTsKIApAQCAtMTAzNSwxMCArMTAyNyw4IEBAIGNoZWNrX3dh aXRfZm9yX2xzbl9mZW5jZXBvc3QoJHJjdl9zdGFuZGJ5LCAnc3RhbmRieV9mbHVzaCcsICRm bHVzaF9sc24sCiAkcmN2X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJJTlNF UlQgSU5UTyByY3ZfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygyMDAsIDIxMCkpIik7 CiAKLW15ICRib3VuZGFyeV9zZXNzaW9uID0gJHJjdl9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJyk7Ci0kYm91bmRhcnlfc2Vzc2lvbi0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnQvLCBxcVsKLQlcXGVjaG8gc3RhcnQKK215ICRib3VuZGFyeV9zZXNzaW9uID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJHJjdl9zdGFuZGJ5KTsKKyRi b3VuZGFyeV9zZXNzaW9uLT5kb19hc3luYyhxcVsKIAlXQUlUIEZPUiBMU04gJyR7cmVwbGF5 X2xzbl9wbHVzfScKIAkJV0lUSCAoTU9ERSAnc3RhbmRieV9yZXBsYXknLCB0aW1lb3V0ICcx ZCcsIG5vX3Rocm93KTsKIF0pOwpAQCAtMTA0OSw5ICsxMDM5LDkgQEAgJHJjdl9zdGFuZGJ5 LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAKICRyY3Zfc3RhbmRieS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfd2FsX3JlcGxheV9yZXN1bWUoKSIpOwogcmVz dW1lX3dhbHJlY2VpdmVyKCRyY3Zfc3RhbmRieSk7Ci0kYm91bmRhcnlfc2Vzc2lvbi0+cXVp dDsKLWNob21wKCRib3VuZGFyeV9zZXNzaW9uLT57c3Rkb3V0fSk7Ci1pcygkYm91bmRhcnlf c2Vzc2lvbi0+e3N0ZG91dH0sCitteSAkYm91bmRhcnlfb3V0ID0gJGJvdW5kYXJ5X3Nlc3Np b24tPmdldF9hc3luY19yZXN1bHQoKTsKKyRib3VuZGFyeV9zZXNzaW9uLT5jbG9zZTsKK2lz KCRib3VuZGFyeV9vdXQtPntwc3Fsb3V0fSwKIAknc3VjY2VzcycsCiAJInN0YW5kYnlfcmVw bGF5OiB3YWl0ZXIgYXQgY3VycmVudCArIDEgd2FrZXMgd2hlbiByZXBsYXkgYWR2YW5jZXMi KTsKIApAQCAtMTEwMSwxMCArMTA5MSw4IEBAICR0bF9zdGFuZGJ5Mi0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGdfZ2V0X3dhbF9yZXBsYXlfcGF1c2Vfc3Rh dGUoKSA9ICdwYXVzZWQnIikKICAgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGxf c3RhbmRieTIgcmVwbGF5IHRvIHBhdXNlIjsKIAotbXkgJHRsX3Nlc3Npb24gPSAkdGxfc3Rh bmRieTItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSR0bF9zZXNzaW9uLT5xdWVy eV91bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVxcZWNobyBzdGFydAorbXkgJHRsX3Nlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkdGxfc3RhbmRi eTIpOworJHRsX3Nlc3Npb24tPmRvX2FzeW5jKHFxWwogCVdBSVQgRk9SIExTTiAnJHt0bF90 YXJnZXR9JwogCQlXSVRIIChNT0RFICdzdGFuZGJ5X3JlcGxheScsIHRpbWVvdXQgJzFkJywg bm9fdGhyb3cpOwogXSk7CkBAIC0xMTI2LDkgKzExMTQsOSBAQCAkdGxfc3RhbmRieTItPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHJlY2VpdmVkX3RsaSA+IDEg RlJPTSBwZ19zdGF0X3dhbF9yZWNlaXZlciIpCiAgIG9yIGRpZSAidGxfc3RhbmRieTIgZGlk IG5vdCBmb2xsb3cgdXBzdHJlYW0gdGltZWxpbmUgc3dpdGNoIjsKIAotJHRsX3Nlc3Npb24t PnF1aXQ7Ci1jaG9tcCgkdGxfc2Vzc2lvbi0+e3N0ZG91dH0pOwotaXMoJHRsX3Nlc3Npb24t PntzdGRvdXR9LCAnc3VjY2VzcycsCitteSAkdGxfb3V0ID0gJHRsX3Nlc3Npb24tPmdldF9h c3luY19yZXN1bHQoKTsKKyR0bF9zZXNzaW9uLT5jbG9zZTsKK2lzKCR0bF9vdXQtPntwc3Fs b3V0fSwgJ3N1Y2Nlc3MnLAogCSJXQUlUIEZPUiBMU04gc3Vydml2ZXMgdXBzdHJlYW0gcHJv bW90aW9uIGFuZCB0aW1lbGluZSBzd2l0Y2ggb24gY2FzY2FkZSBzdGFuZGJ5IgogKTsKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfcmVkb19zZWdtZW50X21pc3Np bmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5w bAppbmRleCBlMDdmZjBjNzJmZS4uYjQ5MmRiNDQ2ODQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5nLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5nLnBsCkBAIC03LDYgKzcsNyBA QAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAt NDQsMTUgKzQ1LDExIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnY3JlYXRlLWNoZWNrcG9pbnQtcnVuJywgJ3dhaXQnKX0pOwogCi0jIFN0YXJ0IGEgcHNx bCBzZXNzaW9uIHRvIHJ1biB0aGUgY2hlY2twb2ludCBpbiB0aGUgYmFja2dyb3VuZCBhbmQg bWFrZQorIyBTdGFydCBhIHNlc3Npb24gdG8gcnVuIHRoZSBjaGVja3BvaW50IGluIHRoZSBi YWNrZ3JvdW5kIGFuZCBtYWtlCiAjIHRoZSB0ZXN0IHdhaXQgb24gdGhlIGluamVjdGlvbiBw b2ludCBzbyB0aGUgY2hlY2twb2ludCBzdG9wcyBqdXN0IGFmdGVyCiAjIGl0IHN0YXJ0cy4K LW15ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsK LSRjaGVja3BvaW50LT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19jaGVja3BvaW50LywK LQlxKFxlY2hvIHN0YXJ0aW5nX2NoZWNrcG9pbnQKLWNoZWNrcG9pbnQ7Ci0pKTsKK215ICRj aGVja3BvaW50ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOworJGNoZWNrcG9pbnQtPmRvX2FzeW5jKHEoQ0hFQ0tQT0lOVDspKTsKIAogIyBXYWl0 IGZvciB0aGUgaW5pdGlhbCBwb2ludCB0byBmaW5pc2gsIHRoZSBjaGVja3BvaW50ZXIgaXMg c3RpbGwKICMgb3V0c2lkZSBpdHMgY3JpdGljYWwgc2VjdGlvbi4gIFRoZW4gcmVsZWFzZSB0 byByZWFjaCB0aGUgc2Vjb25kCkBAIC03Niw3ICs3Myw4IEBAICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAlxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY3JlYXRl LWNoZWNrcG9pbnQtcnVuJyl9KTsKICRub2RlLT53YWl0X2Zvcl9sb2cocXIvY2hlY2twb2lu dCBjb21wbGV0ZS8sICRsb2dfb2Zmc2V0KTsKIAotJGNoZWNrcG9pbnQtPnF1aXQ7CiskY2hl Y2twb2ludC0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRjaGVja3BvaW50LT5jbG9zZTsKIAog IyBSZXRyaWV2ZSB0aGUgV0FMIGZpbGUgbmFtZXMgZm9yIHRoZSByZWRvIHJlY29yZCBhbmQg Y2hlY2twb2ludCByZWNvcmQuCiBteSAkcmVkb19sc24gPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MV9lZmZlY3Rp dmVfd2FsX2xldmVsLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTFfZWZmZWN0aXZlX3dh bF9sZXZlbC5wbAppbmRleCBjNDVlZGRjNzM4My4uMjBjMDBiODlhMjMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93YWxfbGV2ZWwucGwKKysrIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTFfZWZmZWN0aXZlX3dhbF9sZXZlbC5wbApAQCAtNiw2 ICs2LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKQEAgLTM4MiwyMCArMzgzLDE1IEBAIGlmICggICAkRU5We2VuYWJsZV9pbmplY3Rpb25f cG9pbnRzfSBlcSAneWVzJwogCXRlc3Rfd2FsX2xldmVsKCRwcmltYXJ5LCAicmVwbGljYXxy ZXBsaWNhIiwKIAkJImVmZmVjdGl2ZV93YWxfbGV2ZWwgZ290IGRlY3JlYXNlZCB0byAncmVw bGljYScgb24gcHJpbWFyeSIpOwogCi0JIyBTdGFydCBhIHBzcWwgc2Vzc2lvbiB0byB0ZXN0 IHRoZSBjYXNlIHdoZXJlIHRoZSBhY3RpdmF0aW9uIHByb2Nlc3MgaXMKKwkjIFN0YXJ0IGEg c2Vzc2lvbiB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBhY3RpdmF0aW9uIHByb2Nlc3Mg aXMKIAkjIGludGVycnVwdGVkLgotCW15ICRwc3FsX2NyZWF0ZV9zbG90ID0gJHByaW1hcnkt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwlteSAkcHNxbF9jcmVhdGVfc2xvdCA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRwcmltYXJ5KTsKIAot CSMgU3RhcnQgdGhlIGxvZ2ljYWwgZGVjb2RpbmcgYWN0aXZhdGlvbiBwcm9jZXNzIHVwb24g Y3JlYXRpbmcgdGhlIGxvZ2ljYWwKLQkjIHNsb3QsIGJ1dCBpdCB3aWxsIHdhaXQgZHVlIHRv IHRoZSBpbmplY3Rpb24gcG9pbnQuCi0JJHBzcWxfY3JlYXRlX3Nsb3QtPnF1ZXJ5X3VudGls KAotCQlxci9jcmVhdGVfc2xvdF9jYW5jZWxlZC8sCi0JCXEoXGVjaG8gY3JlYXRlX3Nsb3Rf Y2FuY2VsZWQKLXNlbGVjdCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwotc2VsZWN0 IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdsb2dpY2FsLWRlY29kaW5nLWFjdGl2YXRpb24n LCAnd2FpdCcpOwotc2VsZWN0IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3Qo J3Nsb3RfY2FuY2VsZWQnLCAncGdvdXRwdXQnKTsKLVxxCi0pKTsKKwkjIFNldCB1cCB0aGUg aW5qZWN0aW9uIHBvaW50IGluIHRoaXMgc2Vzc2lvbiAodXNpbmcgc2V0X2xvY2FsIHNvIGl0 IG9ubHkKKwkjIGFmZmVjdHMgdGhpcyBzZXNzaW9uKSwgdGhlbiBzdGFydCB0aGUgc2xvdCBj cmVhdGlvbiB3aGljaCB3aWxsIGJsb2NrLgorCSRwc3FsX2NyZWF0ZV9zbG90LT5kbyhxe3Nl bGVjdCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpfSk7CisJJHBzcWxfY3JlYXRlX3Ns b3QtPmRvKHF7c2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdsb2dpY2FsLWRlY29k aW5nLWFjdGl2YXRpb24nLCAnd2FpdCcpfSk7CisJJHBzcWxfY3JlYXRlX3Nsb3QtPmRvX2Fz eW5jKHF7c2VsZWN0IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3Nsb3Rf Y2FuY2VsZWQnLCAncGdvdXRwdXQnKX0pOwogCiAJJHByaW1hcnktPndhaXRfZm9yX2V2ZW50 KCdjbGllbnQgYmFja2VuZCcsICdsb2dpY2FsLWRlY29kaW5nLWFjdGl2YXRpb24nKTsKIAlu b3RlKCJpbmplY3Rpb25fcG9pbnQgJ2xvZ2ljYWwtZGVjb2RpbmctYWN0aXZhdGlvbicgaXMg cmVhY2hlZCIpOwpAQCAtNDEzLDE5ICs0MDksMTcgQEAgc2VsZWN0IHBnX2NhbmNlbF9iYWNr ZW5kKHBpZCkgZnJvbSBwZ19zdGF0X2FjdGl2aXR5IHdoZXJlIHF1ZXJ5IH4gJ3Nsb3RfY2Fu Y2VsZWQKIAl3YWl0X2Zvcl9sb2dpY2FsX2RlY29kaW5nX2Rpc2FibGVkKCRwcmltYXJ5KTsK IAlwYXNzKCJ0aGUgYWN0aXZhdGlvbiBwcm9jZXNzIGFib3J0ZWQiKTsKIAorCSMgQ2xlYW4g dXAgdGhlIHNlc3Npb24gKHRoZSBhc3luYyBxdWVyeSB3YXMgY2FuY2VsbGVkLCBzbyB3ZSBq dXN0IGNsb3NlKQorCSRwc3FsX2NyZWF0ZV9zbG90LT5jbG9zZTsKKwogCSMgVGVzdCBjb25j dXJyZW50IGFjdGl2YXRpb24gcHJvY2Vzc2VzIHJ1biBhbmQgb25lIGlzIGludGVycnVwdGVk LgotCSRwc3FsX2NyZWF0ZV9zbG90ID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnKTsKKwkkcHNxbF9jcmVhdGVfc2xvdCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRwcmltYXJ5KTsKKworCSMgU3RhcnQgYSBzZXNzaW9uIGFuZCBz dG9wIGluIHRoZSBtaWRkbGUgb2YgdGhlIGFjdGl2YXRpb24gcHJvY2Vzcy4KKwkkcHNxbF9j cmVhdGVfc2xvdC0+ZG8ocXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKX0p OworCSRwc3FsX2NyZWF0ZV9zbG90LT5kbyhxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0aW9uJywgJ3dhaXQnKX0pOworCSRwc3Fs X2NyZWF0ZV9zbG90LT5kb19hc3luYyhxe3NlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9yZXBs aWNhdGlvbl9zbG90KCdzbG90X2NhbmNlbGVkMicsICdwZ291dHB1dCcpfSk7CiAKLQkjIFN0 YXJ0IGEgcHNxbCBzZXNzaW9uIGFuZCBzdG9wcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBhY3Rp dmF0aW9uCi0JIyBwcm9jZXNzLgotCSRwc3FsX2NyZWF0ZV9zbG90LT5xdWVyeV91bnRpbCgK LQkJcXIvY3JlYXRlX3Nsb3RfY2FuY2VsZWQvLAotCQlxKFxlY2hvIGNyZWF0ZV9zbG90X2Nh bmNlbGVkCi1zZWxlY3QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKLXNlbGVjdCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0aW9uJywg J3dhaXQnKTsKLXNlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdz bG90X2NhbmNlbGVkMicsICdwZ291dHB1dCcpOwotXHEKLSkpOwogCSRwcmltYXJ5LT53YWl0 X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0 aW9uJyk7CiAJbm90ZSgiaW5qZWN0aW9uX3BvaW50ICdsb2dpY2FsLWRlY29kaW5nLWFjdGl2 YXRpb24nIGlzIHJlYWNoZWQiKTsKIApAQCAtNDUzLDYgKzQ0Nyw5IEBAIHNlbGVjdCBwZ19j YW5jZWxfYmFja2VuZChwaWQpIGZyb20gcGdfc3RhdF9hY3Rpdml0eSB3aGVyZSBxdWVyeSB+ ICdzbG90X2NhbmNlbGVkCiAJdGVzdF93YWxfbGV2ZWwoJHByaW1hcnksICJyZXBsaWNhfGxv Z2ljYWwiLAogCQkiZWZmZWN0aXZlX3dhbF9sZXZlbCByZW1haW5zICdsb2dpY2FsJyBldmVu IGFmdGVyIHRoZSBjb25jdXJyZW50IGFjdGl2YXRpb24gaXMgaW50ZXJydXB0ZWQiCiAJKTsK KworCSMgQ2xlYW4gdXAgdGhlIHNlc3Npb24gKHRoZSBhc3luYyBxdWVyeSB3YXMgY2FuY2Vs bGVkLCBzbyB3ZSBqdXN0IGNsb3NlKQorCSRwc3FsX2NyZWF0ZV9zbG90LT5jbG9zZTsKIH0K IAogJHByaW1hcnktPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5w bAppbmRleCBhYzk2YmMzZjAwOS4uNDE3NjVmYWVhMzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtNSw2ICs1LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTMwLDE4ICszMSwxNyBAQCBzdWIg dGVzdF9zdHJlYW1pbmcKIAkjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywg ZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCiAJbXkgJG9mZnNldCA9IDA7CiAKLQlt eSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJGggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZT0+JG5vZGVfcHVibGlzaGVyKTsKIAogCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgogCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOwogCi0JJGgtPnF1ZXJ5X3NhZmUoCi0JCXF7Ci0JQkVHSU47Ci0JSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIHNoYTI1NihpOjp0ZXh0OjpieXRlYSkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBz aGEyNTYoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLQl9KTsKKwkkaC0+ZG8oCisJCSdCRUdJTicsCisJCSdJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgc2hhMjU2KGk6OnRleHQ6OmJ5dGVhKSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpJywKKwkJJ1VQREFURSB0ZXN0X3RhYiBT RVQgYiA9IHNoYTI1NihiKSBXSEVSRSBtb2QoYSwyKSA9IDAnLAorCQknREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwJywKKwkpOwogCiAJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC01MSw5ICs1MSw5IEBAIHN1YiB0 ZXN0X3N0cmVhbWluZwogCUNPTU1JVDsKIAl9KTsKIAotCSRoLT5xdWVyeV9zYWZlKCdDT01N SVQnKTsKKwkkaC0+ZG8oJ0NPTU1JVCcpOwogCSMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVz dCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCi0JJGgtPnF1aXQ7CisJJGgtPmNsb3NlOwog CiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIApAQCAt MjExLDE0ICsyMTEsMTQgQEAgJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKIAogIyBJbnRl cmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtC IGxpbWl0LgotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworbXkgJGggPSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9wdWJsaXNoZXIpOwogCiAjIENvbmZpcm0g aWYgYSBkZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUg cGFyYWxsZWwgYXBwbHkKICMgd29ya2VyIGNhbiBiZSBkZXRlY3RlZC4KIAogbXkgJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAKLSRoLT5xdWVyeV9zYWZlKAor JGgtPmRvKAogCXF7CiBCRUdJTjsKIElOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKQEAgLTIzMiw4ICsyMzIsOCBA QCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAKICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygx KSIpOwogCi0kaC0+cXVlcnlfc2FmZSgnQ09NTUlUJyk7Ci0kaC0+cXVpdDsKKyRoLT5kbygn Q09NTUlUJyk7CiskaC0+Y2xvc2U7CiAKICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv Zyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sgZGV0ZWN0ZWQvLAogCSRvZmZz ZXQpOwpAQCAtMjYwLDcgKzI2MCw4IEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiAk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKIAotJGgtPnF1ZXJ5X3Nh ZmUoCiskaC0+cmVjb25uZWN0OworJGgtPmRvKAogCXF7CiBCRUdJTjsKIElOU0VSVCBJTlRP IHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KTsKQEAgLTI3NSw4ICsyNzYsOCBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSkiKTsKIAotJGgtPnF1ZXJ5X3NhZmUoJ0NPTU1JVCcpOwotJGgtPnF1aXQ7CiskaC0+ZG8o J0NPTU1JVCcpOworJGgtPmNsb3NlOwogCiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2cocXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKIAkkb2Zm c2V0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGlj dHMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsCmluZGV4 IGYyM2ZlNmFmMmE1Li44MDU4YmVlYjY4MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzVfY29uZmxpY3RzLnBsCkBAIC00LDYgKzQsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtNDU1LDE3ICs0NTYsMTQgQEAgaWYg KCRpbmplY3Rpb25fcG9pbnRzX3N1cHBvcnRlZCAhPSAwKQogCiAJIyBTdGFydCBhIGJhY2tn cm91bmQgc2Vzc2lvbiBvbiB0aGUgcHVibGlzaGVyIG5vZGUgdG8gcGVyZm9ybSBhbiB1cGRh dGUgYW5kCiAJIyBwYXVzZSBhdCB0aGUgaW5qZWN0aW9uIHBvaW50LgotCW15ICRwdWJfc2Vz c2lvbiA9ICRub2RlX0ItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkcHViX3Nl c3Npb24tPnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydGluZ19iZ19wc3FsLywKLQkJcXsKLQkJ CVxlY2hvIHN0YXJ0aW5nX2JnX3BzcWwKLQkJCUJFR0lOOwotCQkJVVBEQVRFIHRhYiBTRVQg YiA9IDIgV0hFUkUgYSA9IDE7Ci0JCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0eG5fd2l0aF9s YXRlcl9jb21taXRfdHMnOwotCQkJQ09NTUlUIFBSRVBBUkVEICd0eG5fd2l0aF9sYXRlcl9j b21taXRfdHMnOwotCQl9CisJbXkgJHB1Yl9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfQik7CisJJHB1Yl9zZXNzaW9uLT5kbygKKwkJ cXtCRUdJTn0sCisJCXF7VVBEQVRFIHRhYiBTRVQgYiA9IDIgV0hFUkUgYSA9IDF9LAorCQlx e1BSRVBBUkUgVFJBTlNBQ1RJT04gJ3R4bl93aXRoX2xhdGVyX2NvbW1pdF90cyd9CiAJKTsK KwkjIENPTU1JVCBQUkVQQVJFRCB3aWxsIGJsb2NrIG9uIHRoZSBpbmplY3Rpb24gcG9pbnQK KwkkcHViX3Nlc3Npb24tPmRvX2FzeW5jKHF7Q09NTUlUIFBSRVBBUkVEICd0eG5fd2l0aF9s YXRlcl9jb21taXRfdHMnfSk7CiAKIAkjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJz IHRoZSBpbmplY3Rpb24gcG9pbnQKIAkkbm9kZV9CLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50 IGJhY2tlbmQnLApAQCAtNTE2LDggKzUxNCw5IEBAIGlmICgkaW5qZWN0aW9uX3BvaW50c19z dXBwb3J0ZWQgIT0gMCkKIAkJIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnY29t bWl0LWFmdGVyLWRlbGF5LWNoZWNrcG9pbnQnKTsiCiAJKTsKIAotCSMgQ2xvc2UgdGhlIGJh Y2tncm91bmQgc2Vzc2lvbiBvbiB0aGUgcHVibGlzaGVyIG5vZGUKLQlvaygkcHViX3Nlc3Np b24tPnF1aXQsICJjbG9zZSBwdWJsaXNoZXIgc2Vzc2lvbiIpOworCSMgV2FpdCBmb3IgdGhl IGFzeW5jIHF1ZXJ5IHRvIGNvbXBsZXRlIGFuZCBjbG9zZSB0aGUgYmFja2dyb3VuZCBzZXNz aW9uCisJJHB1Yl9zZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworCSRwdWJfc2Vzc2lv bi0+Y2xvc2U7CiAKIAkjIENvbmZpcm0gdGhhdCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0dGVk CiAJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUICog RlJPTSB0YWIgV0hFUkUgYSA9IDEnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbAppbmRleCBmNGVkNWQ5 Nzg1Mi4uNDhjYWY4ZTNkYTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzhfd2Fsc25kX3NodXRkb3duX3RpbWVvdXQucGwKQEAgLTgsNiArOCw3IEBA IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiB1c2UgVGlt ZTo6SGlSZXMgcXcodXNsZWVwKTsKIApAQCAtNDUsNyArNDYsNyBAQCAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0ZXN0 X3N1YicpOwogCiAjIFN0YXJ0IGEgYmFja2dyb3VuZCBzZXNzaW9uIG9uIHRoZSBzdWJzY3Jp YmVyIHRvIHJ1biBhIHRyYW5zYWN0aW9uIGxhdGVyCiAjIHRoYXQgd2lsbCBibG9jayB0aGUg bG9naWNhbCBhcHBseSB3b3JrZXIgb24gYSBsb2NrLgotbXkgJHN1Yl9zZXNzaW9uID0gJG5v ZGVfc3Vic2NyaWJlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHN1Yl9z ZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVf c3Vic2NyaWJlcik7CiAKICMgVGVzdCB0aGF0IHdoZW4gdGhlIGxvZ2ljYWwgYXBwbHkgd29y a2VyIGlzIGJsb2NrZWQgb24gYSBsb2NrIGFuZCByZXBsaWNhdGlvbgogIyBpcyBzdGFsbGVk LCBzaHV0dGluZyBkb3duIHRoZSBwdWJsaXNoZXIgY2F1c2VzIHRoZSBsb2dpY2FsIHdhbHNl bmRlciB0byBleGl0CkBAIC01Myw3ICs1NCw3IEBAIG15ICRzdWJfc2Vzc2lvbiA9ICRub2Rl X3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKIAogIyBDYXVzZSB0 aGUgbG9naWNhbCBhcHBseSB3b3JrZXIgdG8gYmxvY2sgb24gYSBsb2NrIGJ5IHJ1bm5pbmcg Y29uZmxpY3RpbmcKICMgdHJhbnNhY3Rpb25zIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHN1YnNj cmliZXIuCi0kc3ViX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkJFR0lOOyBJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDApOyIpOworJHN1Yl9zZXNzaW9uLT5kbygiQkVHSU47IElOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMCk7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgwKTsiKTsK IAogbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9wdWJsaXNoZXItPmxvZ2ZpbGU7CkBAIC02 NSw3ICs2Niw3IEBAIG9rKCAkbm9kZV9wdWJsaXNoZXItPmxvZ19jb250YWlucygKIAkJJGxv Z19vZmZzZXQpLAogCSJ3YWxzZW5kZXIgZXhpdHMgZHVlIHRvIHdhbF9zZW5kZXJfc2h1dGRv d25fdGltZW91dCIpOwogCi0kc3ViX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkFCT1JUOyIpOwor JHN1Yl9zZXNzaW9uLT5kbygiQUJPUlQ7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0Owog JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0ZXN0X3N1YicpOwogCkBAIC03 OSw3ICs4MCw3IEBAICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGVzdF9z dWInKTsKIAogIyBSdW4gYSB0cmFuc2FjdGlvbiBvbiB0aGUgc3Vic2NyaWJlciB0aGF0IGJs b2NrcyB0aGUgbG9naWNhbCBhcHBseSB3b3JrZXIKICMgb24gYSBsb2NrLgotJHN1Yl9zZXNz aW9uLT5xdWVyeV9zYWZlKCJCRUdJTjsgTE9DSyBUQUJMRSB0ZXN0X3RhYiBJTiBFWENMVVNJ VkUgTU9ERTsiKTsKKyRzdWJfc2Vzc2lvbi0+ZG8oIkJFR0lOOyBMT0NLIFRBQkxFIHRlc3Rf dGFiIElOIEVYQ0xVU0lWRSBNT0RFOyIpOwogCiAjIEdlbmVyYXRlIGVub3VnaCBkYXRhIHRv IGZpbGwgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyJ3Mgb3V0cHV0IGJ1ZmZlci4KICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0xMTcsNyArMTE4LDcgQEAgb2so ICRub2RlX3B1Ymxpc2hlci0+bG9nX2NvbnRhaW5zKAogCSJ3YWxzZW5kZXIgd2l0aCBmdWxs IG91dHB1dCBidWZmZXIgZXhpdHMgZHVlIHRvIHdhbF9zZW5kZXJfc2h1dGRvd25fdGltZW91 dCIKICk7CiAKLSRzdWJfc2Vzc2lvbi0+cXVlcnlfc2FmZSgiQUJPUlQ7Iik7Ciskc3ViX3Nl c3Npb24tPmRvKCJBQk9SVDsiKTsKIAogIyBUaGUgbmV4dCB0ZXN0IGRlcGVuZHMgb24gUGVy bCdzIGBraWxsYCwgd2hpY2ggYXBwYXJlbnRseSBpcyBub3QKICMgcG9ydGFibGUgdG8gV2lu ZG93cy4gIChJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBUZXN0OjpNb3JlJ3MgYHN1YnRlc3Rg LApAQCAtMTY3LDcgKzE2OCw3IEBAICRub2RlX3N0YW5kYnktPnN0YXJ0OwogIyBDYXVzZSB0 aGUgbG9naWNhbCBhcHBseSB3b3JrZXIgdG8gYmxvY2sgb24gYSBsb2NrIGJ5IHJ1bm5pbmcg Y29uZmxpY3RpbmcKICMgdHJhbnNhY3Rpb25zIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHN1YnNj cmliZXIsIHN0YWxsaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uCiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3Rlc3Rfc3ViJyk7Ci0kc3ViX3Nlc3Npb24tPnF1ZXJ5X3Nh ZmUoIkJFR0lOOyBMT0NLIFRBQkxFIHRlc3RfdGFiIElOIEVYQ0xVU0lWRSBNT0RFOyIpOwor JHN1Yl9zZXNzaW9uLT5kbygiQkVHSU47IExPQ0sgVEFCTEUgdGVzdF90YWIgSU4gRVhDTFVT SVZFIE1PREU7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgtMSk7ICIpOwogCiAjIENhdXNlIHRoZSBz dGFuZGJ5J3Mgd2FscmVjZWl2ZXIgdG8gYmUgYmxvY2tlZCB3aXRoIFNJR1NUT1Agc2lnbmFs LApAQCAtMTkzLDcgKzE5NCw3IEBAIG9rKCAkbm9kZV9wdWJsaXNoZXItPmxvZ19jb250YWlu cygKICk7CiAKIGtpbGwgJ0NPTlQnLCAkcmVjZWl2ZXJwaWQ7Ci0kc3ViX3Nlc3Npb24tPnF1 aXQ7Ciskc3ViX3Nlc3Npb24tPmNsb3NlOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdm YXN0Jyk7CiAkbm9kZV9zdGFuZGJ5LT5zdG9wKCdmYXN0Jyk7Ci0tIAoyLjQzLjAKCg== --------------iATMJHJEeQMb5QczqNM9768Z Content-Type: text/x-patch; charset=UTF-8; name="v16-0004-ci-make-the-TAP-test-jobs-work-with-PostgreSQL-T.patch" Content-Disposition: attachment; filename*0="v16-0004-ci-make-the-TAP-test-jobs-work-with-PostgreSQL-T.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZTQ5MzZhOTExNGM2MTBmYmJmZDE4NjA0ZWZiMDYwNDRjMjM3Mjc4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxMSBKdW4gMjAyNiAwODozODowMCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjE2IDQvNV0gY2k6IG1ha2UgdGhlIFRBUCB0ZXN0IGpvYnMgd29yayB3aXRoCiBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uCgpQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uIGxv YWRzIGxpYnBxIGluLXByb2Nlc3MgdmlhIEZGSTo6UGxhdHlwdXMsCndoaWNoIHRoZSBDSSBl bnZpcm9ubWVudHMgZG8gbm90IHlldCBwcm92aWRlLCBhbmQgdGhlIHN3aXRjaCBleHBvc2Vk CnNldmVyYWwgb3RoZXIgZ2FwcyBpbiB0aGUgQ0kgc2V0dXBzOgoKKiBJbnN0YWxsIEZGSTo6 UGxhdHlwdXMgYXQgam9iIHNldHVwIHRpbWU6IGZyb20gdGhlIERlYmlhbiBwYWNrYWdlIG9u CiAgdGhlIExpbnV4IGNvbnRhaW5lcnMsIHZpYSBNYWNQb3J0cyBvbiBtYWNPUywgYW5kIGZy b20gQ1BBTiBvbiBNaW5HVwogIChNU1lTMiBkb2VzIG5vdCBwYWNrYWdlIGl0KS4gIFRoZSBX aW5kb3dzIFZTIGpvYiBuZWVkcyBub3RoaW5nLCBhcwogIFN0cmF3YmVycnkgUGVybCBhbHJl YWR5IGJ1bmRsZXMgRkZJOjpQbGF0eXB1cy4KCiogTGludXggLSBNZXNvbiAoNjQtYml0KSBi dWlsZHMgd2l0aCAtZnNhbml0aXplPWFkZHJlc3MuICBMb2FkaW5nIHRoZQogIEFTYW4taW5z dHJ1bWVudGVkIGxpYnBxIGludG8gdGhlIHVuaW5zdHJ1bWVudGVkIHBlcmwgYWJvcnRzIGV2 ZXJ5CiAgVEFQIHRlc3Qgd2l0aCAiQVNhbiBydW50aW1lIGRvZXMgbm90IGNvbWUgZmlyc3Qg aW4gaW5pdGlhbCBsaWJyYXJ5CiAgbGlzdCIgKHJlcG9ydGVkIGFzIGV4aXQgc3RhdHVzIDI1 MCB2aWEgdGVzdHdyYXApLiAgUHJlbG9hZCB0aGUgQVNhbgogIHJ1bnRpbWUgZm9yIHRoYXQg am9iJ3MgIlRlc3Qgd29ybGQiIHN0ZXAsIHNjb3BlZCB0byB0aGUgc3RlcCBzbyB0aGUKICBi dWlsZCBhbmQgY2NhY2hlIGFyZSB1bmFmZmVjdGVkLgoKKiBMaW51eCAtIE1lc29uICgzMi1i aXQpIHJ1bnMgaXRzIFRBUCB0ZXN0cyB3aXRoIHRoZSBpbWFnZSdzIGkzODYKICBwZXJsLCBz byBpdCBuZWVkcyB0aGUgaTM4NiBidWlsZCBvZiBsaWJmZmktcGxhdHlwdXMtcGVybC4gIFRo YXQKICBwYWNrYWdlIGNhbm5vdCBiZSBpbnN0YWxsZWQgYWxvbmdzaWRlIHRoZSBhbWQ2NCBv bmUgKGl0IGRlcGVuZHMgb24KICBwZXJsOmkzODYsIHdoaWNoIGNvbmZsaWN0cyB3aXRoIHRo ZSBpbnN0YWxsZWQgYW1kNjQgcGVybCksIHNvCiAgZG93bmxvYWQgaXQgYW5kIGV4dHJhY3Qg aXQgaW50byBwbGFjZSB3aXRoIGRwa2cgLXgsIHRoZSBzYW1lIHdheQogIHRoZSBpbWFnZSBw cm92aWRlcyB0aGUgaTM4NiBwZXJsIGl0c2VsZi4gIFZlcmlmaWVkIGFnYWluc3QgdGhlCiAg bGludXhfZGViaWFuX3RyaXhpZV9jaSBjb250YWluZXIgaW1hZ2UuCgoqIEFkZGluZyBwNS4z NC1mZmktcGxhdHlwdXMgdG8gdGhlIG1hY09TIHBhY2thZ2UgbGlzdCBjaGFuZ2VkIHRoZQog IE1hY1BvcnRzIGNhY2hlIGtleSwgYW5kIHRoZSByZXN1bHRpbmcgZnJlc2ggTWFjUG9ydHMg aW5zdGFsbGF0aW9uCiAgcmV2ZWFsZWQgdGhhdCBjdXJsIGFuZCBsaWJ1dWlkIHdlcmUgbmV2 ZXIgaW4gdGhlIHBhY2thZ2UgbGlzdCBldmVuCiAgdGhvdWdoIHRoZSBqb2IgY29uZmlndXJl cyB3aXRoIC1EbGliY3VybD1lbmFibGVkIGFuZCAtRHV1aWQ9ZTJmczsKICBib3RoIGhhZCBi ZWVuIHN1cHBsaWVkIGJ5IHN0YWxlIGNhY2hlZCBpbnN0YWxsYXRpb25zLiAgQWRkIGN1cmwg YW5kCiAgbGlidXVpZCAoTWFjUG9ydHMnIGJ1aWxkIG9mIHV0aWwtbGludXgncyBsaWJ1dWlk LCB3aGljaCBpbnN0YWxscwogIHV1aWQvdXVpZC5oIGFuZCB1dWlkLnBjKS4KCkV2ZW50dWFs bHkgdGhlIExpbnV4IHJlcXVpcmVtZW50cyBzaG91bGQgaW5zdGVhZCBiZSBoYW5kbGVkIGlu IHRoZQpwZy12bS1pbWFnZXMgY29udGFpbmVyIGJ1aWxkcy4KLS0tCiAuZ2l0aHViL3dvcmtm bG93cy9wZy1jaS55bWwgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhLy5n aXRodWIvd29ya2Zsb3dzL3BnLWNpLnltbCBiLy5naXRodWIvd29ya2Zsb3dzL3BnLWNpLnlt bAppbmRleCA1YmM1MjkyZDJhNS4uNTk5MmU1ODg0MzIgMTAwNjQ0Ci0tLSBhLy5naXRodWIv d29ya2Zsb3dzL3BnLWNpLnltbAorKysgYi8uZ2l0aHViL3dvcmtmbG93cy9wZy1jaS55bWwK QEAgLTMzNiw2ICszMzYsMjIgQEAgam9iczoKICAgICAgICAgICAgIDEyNy4wLjAuMyBwZy1s b2FkYmFsYW5jZXRlc3QKICAgICAgICAgICBFT0YKIAorICAgICAgICAgICMgVGhlIENJIGNv bnRhaW5lciBpbWFnZXMgZG9uJ3QgeWV0IGluY2x1ZGUgRkZJOjpQbGF0eXB1cywKKyAgICAg ICAgICAjIHdoaWNoIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24gbmVlZHMuIEluc3RhbGwg aXQgZnJvbSB0aGUKKyAgICAgICAgICAjIERlYmlhbiBwYWNrYWdlIHVudGlsIHRoZSBpbWFn ZXMgcHJvdmlkZSBpdC4gVGhlIDMyLWJpdCBqb2IKKyAgICAgICAgICAjIHJ1bnMgaXRzIFRB UCB0ZXN0cyB3aXRoIHRoZSBpbWFnZSdzIGkzODYgcGVybCwgd2hpY2ggbmVlZHMKKyAgICAg ICAgICAjIHRoZSBpMzg2IGJ1aWxkIG9mIHRoZSBtb2R1bGU7IHRoYXQgcGFja2FnZSBjYW5u b3QgYmUKKyAgICAgICAgICAjIGluc3RhbGxlZCBhbG9uZ3NpZGUgdGhlIGFtZDY0IG9uZSAo aXQgZGVwZW5kcyBvbiBwZXJsOmkzODYsCisgICAgICAgICAgIyB3aGljaCBjb25mbGljdHMg d2l0aCB0aGUgaW5zdGFsbGVkIHBlcmwpLCBzbyBleHRyYWN0IGl0IGludG8KKyAgICAgICAg ICAjIHBsYWNlIHRoZSBzYW1lIHdheSB0aGUgaW1hZ2UgcHJvdmlkZXMgdGhlIGkzODYgcGVy bCBpdHNlbGYuCisgICAgICAgICAgZWNobyA6Omdyb3VwOjphcHRfZmZpX3BsYXR5cHVzCisg ICAgICAgICAgYXB0LWdldCAteSAtcSB1cGRhdGUKKyAgICAgICAgICBhcHQtZ2V0IC15IC1x IGluc3RhbGwgbGliZmZpLXBsYXR5cHVzLXBlcmwKKyAgICAgICAgICAoY2QgL3RtcCAmJgor ICAgICAgICAgICAgYXB0LWdldCAteSAtcSBkb3dubG9hZCBsaWJmZmktcGxhdHlwdXMtcGVy bDppMzg2ICYmCisgICAgICAgICAgICBkcGtnIC14IGxpYmZmaS1wbGF0eXB1cy1wZXJsXypf aTM4Ni5kZWIgLykKKyAgICAgICAgICBlY2hvIDo6ZW5kZ3JvdXA6OgorCiAgICAgICAjIEJ5 IHVzaW5nIGEgc2hlbGwgdGhhdCBpbmNsdWRlcyBzdSwgdGhlIHJ1biBjb21tYW5kcyB0aGVt c2VsdmVzIGdldAogICAgICAgIyBzaW1wbGVyLiBBcyB0aGVyZSBhcmUgcXVpdGUgYSBmZXcg Y29tbWFuZHMgdGhhdCBuZWVkIHRvIHVzZSBzdS4uLgogICAgICAgLSBuYW1lOiBDb25maWd1 cmUKQEAgLTY2OCw2ICs2ODQsMTYgQEAgam9iczoKIAogICAgICAgLSBuYW1lOiBUZXN0IHdv cmxkCiAgICAgICAgIHNoZWxsOiAqc3VfcG9zdGdyZXNfc2hlbGwKKyAgICAgICAgIyBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uIGxvYWRzIHRoZSBBU2FuLWluc3RydW1lbnRlZCBsaWJw cQorICAgICAgICAjIGluLXByb2Nlc3MgdmlhIEZGSTo6UGxhdHlwdXMuICBBU2FuIG11c3Qg Y29tZSBmaXJzdCBpbiB0aGUgbGluaworICAgICAgICAjIG9yZGVyOyBkbG9wZW5pbmcgaXQg aW50byBhbiBvdGhlcndpc2UgdW5pbnN0cnVtZW50ZWQgcGVybCBhYm9ydHMKKyAgICAgICAg IyB3aXRoICJBU2FuIHJ1bnRpbWUgZG9lcyBub3QgY29tZSBmaXJzdCIuICBQcmVsb2FkIHRo ZSBBU2FuCisgICAgICAgICMgcnVudGltZSBmb3IgdGhlIHRlc3QgcnVuIHRvIHNhdGlzZnkg dGhhdCAoYSBuby1vcCBmb3IgdGhlCisgICAgICAgICMgYWxyZWFkeS1pbnN0cnVtZW50ZWQg c2VydmVyL2NsaWVudCBiaW5hcmllcykuICBTY29wZWQgdG8gdGhpcworICAgICAgICAjIHN0 ZXAgc28gdGhlIGJ1aWxkIGlzIHVuYWZmZWN0ZWQ7IGRldGVjdF9sZWFrcyBpcyBhbHJlYWR5 CisgICAgICAgICMgZGlzYWJsZWQgdmlhIEFTQU5fT1BUSU9OUy4KKyAgICAgICAgZW52Ogor ICAgICAgICAgIEFERElUSU9OQUxfU0VUVVA6IGV4cG9ydCBMRF9QUkVMT0FEPSIkKGdjYyAt cHJpbnQtZmlsZS1uYW1lPWxpYmFzYW4uc28pIgogICAgICAgICBydW46ICptZXNvbl90ZXN0 X3dvcmxkX2NtZAogCiAgICAgICAtICpsaW51eF9jb2xsZWN0X2NvcmVzX3N0ZXAKQEAgLTcw MiwxMiArNzI4LDE1IEBAIGpvYnM6CiAKICAgICAgIE1BQ09TX1BBQ0tBR0VfTElTVDogPi0K ICAgICAgICAgY2NhY2hlCisgICAgICAgIGN1cmwKICAgICAgICAgaWN1CiAgICAgICAgIGtl cmJlcm9zNQorICAgICAgICBsaWJ1dWlkCiAgICAgICAgIGx6NAogICAgICAgICBtZXNvbgog ICAgICAgICBvcGVubGRhcAogICAgICAgICBvcGVuc3NsCisgICAgICAgIHA1LjM0LWZmaS1w bGF0eXB1cwogICAgICAgICBwNS4zNC1pby10dHkKICAgICAgICAgcDUuMzQtaXBjLXJ1bgog ICAgICAgICBweXRob24zMTIKQEAgLTEwODksNiArMTExOCw3IEBAIGpvYnM6CiAgICAgICAg ICAgICAke01JTkdXX1BBQ0tBR0VfUFJFRklYfS1nY2MgXAogICAgICAgICAgICAgJHtNSU5H V19QQUNLQUdFX1BSRUZJWH0taWN1IFwKICAgICAgICAgICAgICR7TUlOR1dfUEFDS0FHRV9Q UkVGSVh9LWxpYmJhY2t0cmFjZSBcCisgICAgICAgICAgICAke01JTkdXX1BBQ0tBR0VfUFJF RklYfS1saWJmZmkgXAogICAgICAgICAgICAgJHtNSU5HV19QQUNLQUdFX1BSRUZJWH0tbGli eG1sMiBcCiAgICAgICAgICAgICAke01JTkdXX1BBQ0tBR0VfUFJFRklYfS1saWJ4c2x0IFwK ICAgICAgICAgICAgICR7TUlOR1dfUEFDS0FHRV9QUkVGSVh9LWx6NCBcCkBAIC0xMTEyLDYg KzExNDIsMTUgQEAgam9iczoKICAgICAgICAgICBwZXJsIC1tSVBDOjpSdW4gLWUgMQogICAg ICAgICAgIGVjaG8gOjplbmRncm91cDo6CiAKKyAgICAgICAgICAjIEZGSTo6UGxhdHlwdXMs IG5lZWRlZCBieSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLCBpcyBub3QKKyAgICAgICAg ICAjIHBhY2thZ2VkIGZvciBNU1lTMiwgc28gaW5zdGFsbCBpdCBmcm9tIENQQU4uIFRoZSBt aW5ndyBsaWJmZmkKKyAgICAgICAgICAjIGluc3RhbGxlZCBhYm92ZSBsZXRzIEFsaWVuOjpG RkkgdXNlIHRoZSBzeXN0ZW0gbGlicmFyeSByYXRoZXIKKyAgICAgICAgICAjIHRoYW4gYnVp bGRpbmcgaXRzIG93bi4KKyAgICAgICAgICBlY2hvIDo6Z3JvdXA6OmNwYW5fZmZpX3BsYXR5 cHVzCisgICAgICAgICAgKGVjaG87IGVjaG8gbyBjb25mIHJlY29tbWVuZHNfcG9saWN5IDA7 IGVjaG8gbm90ZXN0IGluc3RhbGwgRkZJOjpQbGF0eXB1cykgfCBjcGFuCisgICAgICAgICAg cGVybCAtbUZGSTo6UGxhdHlwdXMgLWUgMQorICAgICAgICAgIGVjaG8gOjplbmRncm91cDo6 CisKICAgICAgIC0gbmFtZTogU2V0dXAgc29ja2V0IGRpcmVjdG9yeQogICAgICAgICBzaGVs bDogY21kCiAgICAgICAgIHJ1bjogbWtkaXIgJHt7ZW52LlBHX1JFR1JFU1NfU09DS19ESVJ9 fQotLSAKMi40My4wCgo= --------------iATMJHJEeQMb5QczqNM9768Z Content-Type: text/x-patch; charset=UTF-8; name="v16-0005-Check-for-FFI-Platypus-when-TAP-tests-are-enable.patch" Content-Disposition: attachment; filename*0="v16-0005-Check-for-FFI-Platypus-when-TAP-tests-are-enable.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NTVmNWMyMzI1YTExZDdkOWY5OTIyYzMxNGI1OTI0NDc4MWRkNjMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAxMCBKdW4gMjAyNiAxODowNTowNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjE2IDUvNV0gQ2hlY2sgZm9yIEZGSTo6UGxhdHlwdXMgd2hlbiBUQVAgdGVzdHMg YXJlIGVuYWJsZWQKClBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24sIHVzZWQgdGhyb3VnaG91 dCB0aGUgVEFQIHRlc3QgZnJhbWV3b3JrLApyZXF1aXJlcyBGRkk6OlBsYXR5cHVzLCBidXQg bmVpdGhlciBidWlsZCBzeXN0ZW0gY2hlY2tlZCBmb3IgaXQgYXQKY29uZmlndXJlIHRpbWU7 IGEgbWlzc2luZyBtb2R1bGUgc3VyZmFjZWQgYXMgaHVuZHJlZHMgb2YgaW5kaXZpZHVhbAp0 ZXN0IGZhaWx1cmVzIGluc3RlYWQuICBBZGQgdGhlIG1vZHVsZSB0byBjb25maWcvY2hlY2tf bW9kdWxlcy5wbCwKd2hpY2ggYm90aCBjb25maWd1cmUgYW5kIG1lc29uIGFscmVhZHkgcnVu IHdoZW4gVEFQIHRlc3RzIGFyZQpyZXF1ZXN0ZWQsIHJlcXVpcmluZyBhdCBsZWFzdCB2ZXJz aW9uIDEuMDAgKFBvc3RncmVTUUw6OlBxRkZJIHVzZXMKdGhlIGFwaSA9PiAxIGludGVyZmFj ZSBhbmQgcmVjb3JkX2xheW91dF8xKS4gIE1lbnRpb24gdGhlIG5ldwpyZXF1aXJlbWVudCBp biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgaW4gc3JjL3Rlc3QvcGVybC9SRUFETUUuCgpUaGUg Z2VuZXJhdGVkIGNvbmZpZ3VyZSB3YXMgcmUtY3JlYXRlZCB3aXRoIEF1dG9jb25mIDIuNjku Ci0tLQogY29uZmlnL2NoZWNrX21vZHVsZXMucGwgICAgICAgIHwgIDUgKysrKysKIGNvbmZp Z3VyZSAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQogY29uZmlndXJlLmFjICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGRvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbCB8 ICA2ICsrKystLQogZG9jL3NyYy9zZ21sL3JlZ3Jlc3Muc2dtbCAgICAgIHwgIDcgKysrKy0t LQogc3JjL3Rlc3QvcGVybC9SRUFETUUgICAgICAgICAgIHwgMTQgKysrKysrKystLS0tLS0K IDYgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29uZmlnL2NoZWNrX21vZHVsZXMucGwgYi9jb25maWcvY2hlY2tfbW9k dWxlcy5wbAppbmRleCBjNjU5YjdhYWRlYi4uZTRkZWFiNmUzZDcgMTAwNjQ0Ci0tLSBhL2Nv bmZpZy9jaGVja19tb2R1bGVzLnBsCisrKyBiL2NvbmZpZy9jaGVja19tb2R1bGVzLnBsCkBA IC0xMyw2ICsxMywxMCBAQCB1c2UgQ29uZmlnOwogCiB1c2UgSVBDOjpSdW4gMC43OTsKIAor IyBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uIG5lZWRzIGFwaSA9PiAxIGFuZCByZWNvcmRf bGF5b3V0XzEsCisjIHdoaWNoIGFycml2ZWQgaW4gRkZJOjpQbGF0eXB1cyAxLjAwLgordXNl IEZGSTo6UGxhdHlwdXMgMS4wMDsKKwogIyBUZXN0OjpNb3JlIGFuZCBUaW1lOjpIaVJlcyBh cmUgc3VwcG9zZWQgdG8gYmUgcGFydCBvZiBjb3JlIFBlcmwsCiAjIGJ1dCBzb21lIGRpc3Ry b3Mgb21pdCB0aGVtIGluIGEgbWluaW1hbCBpbnN0YWxsYXRpb24uCiB1c2UgVGVzdDo6TW9y ZSAwLjk4OwpAQCAtMjAsNiArMjQsNyBAQCB1c2UgVGltZTo6SGlSZXMgMS41MjsKIAogIyBX aGlsZSBoZXJlLCB3ZSBtaWdodCBhcyB3ZWxsIHJlcG9ydCBleGFjdGx5IHdoYXQgdmVyc2lv bnMgd2UgZm91bmQuCiBkaWFnKCJJUEM6OlJ1bjo6VkVSU0lPTjogJElQQzo6UnVuOjpWRVJT SU9OIik7CitkaWFnKCJGRkk6OlBsYXR5cHVzOjpWRVJTSU9OOiAkRkZJOjpQbGF0eXB1czo6 VkVSU0lPTiIpOwogZGlhZygiVGVzdDo6TW9yZTo6VkVSU0lPTjogJFRlc3Q6Ok1vcmU6OlZF UlNJT04iKTsKIGRpYWcoIlRpbWU6OkhpUmVzOjpWRVJTSU9OOiAkVGltZTo6SGlSZXM6OlZF UlNJT04iKTsKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDVm NzdmM2NhYzI5Li44MDQwNjJmYTlkMSAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2Nv bmZpZ3VyZQpAQCAtMTU1MSw3ICsxNTUxLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CiAgIC0t ZW5hYmxlLXByb2ZpbGluZyAgICAgIGJ1aWxkIHdpdGggcHJvZmlsaW5nIGVuYWJsZWQKICAg LS1lbmFibGUtY292ZXJhZ2UgICAgICAgYnVpbGQgd2l0aCBjb3ZlcmFnZSB0ZXN0aW5nIGlu c3RydW1lbnRhdGlvbgogICAtLWVuYWJsZS1kdHJhY2UgICAgICAgICBidWlsZCB3aXRoIERU cmFjZSBzdXBwb3J0Ci0gIC0tZW5hYmxlLXRhcC10ZXN0cyAgICAgIGVuYWJsZSBUQVAgdGVz dHMgKHJlcXVpcmVzIFBlcmwgYW5kIElQQzo6UnVuKQorICAtLWVuYWJsZS10YXAtdGVzdHMg ICAgICBlbmFibGUgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsLCBJUEM6OlJ1biBhbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgRkZJOjpQbGF0eXB1cykKICAgLS1lbmFibGUtaW5q ZWN0aW9uLXBvaW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgaW5qZWN0 aW9uIHBvaW50cyAoZm9yIHRlc3RpbmcpCiAgIC0tZW5hYmxlLWRlcGVuZCAgICAgICAgIHR1 cm4gb24gYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcKZGlmZiAtLWdpdCBhL2NvbmZp Z3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA2MWNlZTQyZGFhNy4uMGJhMDExYzBiY2Ug MTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTIyOSw3 ICsyMjksNyBAQCBBQ19TVUJTVChlbmFibGVfZHRyYWNlKQogIyBUQVAgdGVzdHMKICMKIFBH QUNfQVJHX0JPT0woZW5hYmxlLCB0YXAtdGVzdHMsIG5vLAotICAgICAgICAgICAgICBbZW5h YmxlIFRBUCB0ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4pXSkKKyAgICAgICAg ICAgICAgW2VuYWJsZSBUQVAgdGVzdHMgKHJlcXVpcmVzIFBlcmwsIElQQzo6UnVuIGFuZCBG Rkk6OlBsYXR5cHVzKV0pCiBBQ19TVUJTVChlbmFibGVfdGFwX3Rlc3RzKQogQUNfQVJHX1ZB UihQR19URVNUX0VYVFJBLAogICAgICAgICAgICBbZW5hYmxlIHNlbGVjdGVkIGV4dHJhIHRl c3RzIChvdmVycmlkZGVuIGF0IHJ1bnRpbWUgYnkgUEdfVEVTVF9FWFRSQSBlbnZpcm9ubWVu dCB2YXJpYWJsZSldKQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5z Z21sIGIvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sCmluZGV4IGIzNDVhMTA1Njc0 Li44MTIwYjc1MjY0YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbApAQCAtMTU5OSw3ICsx NTk5LDggQEAgYnVpbGQtcG9zdGdyZXNxbDoKICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAg IDxwYXJhPgogICAgICAgICAgRW5hYmxlIHRlc3RzIHVzaW5nIHRoZSBQZXJsIFRBUCB0b29s cy4gIFRoaXMgcmVxdWlyZXMgYSBQZXJsCi0gICAgICAgICBpbnN0YWxsYXRpb24gYW5kIHRo ZSBQZXJsIG1vZHVsZSA8bGl0ZXJhbD5JUEM6OlJ1bjwvbGl0ZXJhbD4uCisgICAgICAgICBp bnN0YWxsYXRpb24gYW5kIHRoZSBQZXJsIG1vZHVsZXMgPGxpdGVyYWw+SVBDOjpSdW48L2xp dGVyYWw+CisgICAgICAgICBhbmQgPGxpdGVyYWw+RkZJOjpQbGF0eXB1czwvbGl0ZXJhbD4u CiAgICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0icmVncmVzcy10YXAiLz4gZm9yIG1vcmUg aW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgpAQCAt MzE2OSw3ICszMTcwLDggQEAgbmluamEgaW5zdGFsbAogICAgICAgPGxpc3RpdGVtPgogICAg ICAgIDxwYXJhPgogICAgICAgICBFbmFibGUgdGVzdHMgdXNpbmcgdGhlIFBlcmwgVEFQIHRv b2xzLiAgRGVmYXVsdHMgdG8gYXV0byBhbmQgcmVxdWlyZXMKLSAgICAgICAgYSBQZXJsIGlu c3RhbGxhdGlvbiBhbmQgdGhlIFBlcmwgbW9kdWxlIDxsaXRlcmFsPklQQzo6UnVuPC9saXRl cmFsPi4KKyAgICAgICAgYSBQZXJsIGluc3RhbGxhdGlvbiBhbmQgdGhlIFBlcmwgbW9kdWxl cyA8bGl0ZXJhbD5JUEM6OlJ1bjwvbGl0ZXJhbD4KKyAgICAgICAgYW5kIDxsaXRlcmFsPkZG STo6UGxhdHlwdXM8L2xpdGVyYWw+LgogICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0icmVn cmVzcy10YXAiLz4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAg ICAgPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWdyZXNzLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVncmVzcy5zZ21sCmluZGV4IGM3NDk0MWJmYmYyLi42M2U3MTA0 ZGU1ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZ3Jlc3Muc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVncmVzcy5zZ21sCkBAIC05NTQsOSArOTU0LDEwIEBAIG1ha2UgY2hlY2sg UFJPVkVfVEVTVFM9J3QvMDAxX3Rlc3QxLnBsIHQvMDAzX3Rlc3QzLnBsJwogICAgPC9wYXJh PgogCiAgICA8cGFyYT4KLSAgICBUaGUgVEFQIHRlc3RzIHJlcXVpcmUgdGhlIFBlcmwgbW9k dWxlIDxsaXRlcmFsPklQQzo6UnVuPC9saXRlcmFsPi4KLSAgICBUaGlzIG1vZHVsZSBpcyBh dmFpbGFibGUgZnJvbQotICAgIDx1bGluayB1cmw9Imh0dHBzOi8vbWV0YWNwYW4ub3JnL2Rp c3QvSVBDLVJ1biI+Q1BBTjwvdWxpbms+CisgICAgVGhlIFRBUCB0ZXN0cyByZXF1aXJlIHRo ZSBQZXJsIG1vZHVsZXMKKyAgICA8dWxpbmsgdXJsPSJodHRwczovL21ldGFjcGFuLm9yZy9k aXN0L0lQQy1SdW4iPjxsaXRlcmFsPklQQzo6UnVuPC9saXRlcmFsPjwvdWxpbms+IGFuZAor ICAgIDx1bGluayB1cmw9Imh0dHBzOi8vbWV0YWNwYW4ub3JnL2Rpc3QvRkZJLVBsYXR5cHVz Ij48bGl0ZXJhbD5GRkk6OlBsYXR5cHVzPC9saXRlcmFsPjwvdWxpbms+LgorICAgIFRoZXNl IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSBmcm9tIENQQU4KICAgICBvciBhbiBvcGVyYXRpbmcg c3lzdGVtIHBhY2thZ2UuCiAgICAgVGhleSBhbHNvIHJlcXVpcmUgPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0byBiZQogICAgIGNvbmZpZ3VyZWQgd2l0aCB0aGUg b3B0aW9uIDxvcHRpb24+LS1lbmFibGUtdGFwLXRlc3RzPC9vcHRpb24+LgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcGVybC9SRUFETUUgYi9zcmMvdGVzdC9wZXJsL1JFQURNRQppbmRleCBh ZjAzN2E4MDkxYy4uOTI4ODY2ODhjNjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUkVB RE1FCisrKyBiL3NyYy90ZXN0L3BlcmwvUkVBRE1FCkBAIC0xMDMsMTEgKzEwMywxMiBAQCBB dm9pZCB1c2luZyBhbnkgYmxlZWRpbmctZWRnZSBQZXJsIGZlYXR1cmVzLiAgV2UgaGF2ZSBi dWlsZGZhcm0gYW5pbWFscwogcnVubmluZyBQZXJsIHZlcnNpb25zIGFzIG9sZCBhcyA1LjE0 LCBzbyB5b3VyIHRlc3RzIHdpbGwgYmUgZXhwZWN0ZWQKIHRvIHBhc3Mgb24gdGhhdC4KIAot QWxzbywgZG8gbm90IHVzZSBhbnkgbm9uLWNvcmUgUGVybCBtb2R1bGVzIGV4Y2VwdCBJUEM6 OlJ1bi4gIE9yLCBpZiB5b3UKLW11c3QgZG8gc28gZm9yIGEgcGFydGljdWxhciB0ZXN0LCBh cnJhbmdlIHRvIHNraXAgdGhlIHRlc3Qgd2hlbiB0aGUgbmVlZGVkCi1tb2R1bGUgaXNuJ3Qg cHJlc2VudC4gIElmIHVuc3VyZSwgeW91IGNhbiBjb25zdWx0IE1vZHVsZTo6Q29yZUxpc3Qg dG8gZmluZAotb3V0IHdoZXRoZXIgYSBnaXZlbiBtb2R1bGUgaXMgcGFydCBvZiB0aGUgUGVy bCBjb3JlLCBhbmQgd2hpY2ggbW9kdWxlCi12ZXJzaW9ucyBzaGlwcGVkIHdpdGggd2hpY2gg UGVybCByZWxlYXNlcy4KK0Fsc28sIGRvIG5vdCB1c2UgYW55IG5vbi1jb3JlIFBlcmwgbW9k dWxlcyBleGNlcHQgSVBDOjpSdW4gYW5kCitGRkk6OlBsYXR5cHVzLiAgT3IsIGlmIHlvdSBt dXN0IGRvIHNvIGZvciBhIHBhcnRpY3VsYXIgdGVzdCwgYXJyYW5nZSB0bworc2tpcCB0aGUg dGVzdCB3aGVuIHRoZSBuZWVkZWQgbW9kdWxlIGlzbid0IHByZXNlbnQuICBJZiB1bnN1cmUs IHlvdSBjYW4KK2NvbnN1bHQgTW9kdWxlOjpDb3JlTGlzdCB0byBmaW5kIG91dCB3aGV0aGVy IGEgZ2l2ZW4gbW9kdWxlIGlzIHBhcnQgb2YKK3RoZSBQZXJsIGNvcmUsIGFuZCB3aGljaCBt b2R1bGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIHdoaWNoIFBlcmwKK3JlbGVhc2VzLgogCiBP bmUgd2F5IHRvIHRlc3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgUGVybCB2ZXJzaW9u cyBpcyB0byB1c2UKIHBlcmxicmV3OyBzZWUgaHR0cDovL3BlcmxicmV3LnBsIC4gIEFmdGVy IGluc3RhbGxpbmcgdGhhdCwgZG8KQEAgLTExOCw2ICsxMTksNyBAQCBwZXJsYnJldzsgc2Vl IGh0dHA6Ly9wZXJsYnJldy5wbCAuICBBZnRlciBpbnN0YWxsaW5nIHRoYXQsIGRvCiAgICAg cGVybGJyZXcgaW5zdGFsbC1jcGFubQogICAgIGNwYW5tIGluc3RhbGwgVGVzdDo6U2ltcGxl QDAuOTgKICAgICBjcGFubSBpbnN0YWxsIElQQzo6UnVuQDAuNzkKKyAgICBjcGFubSBpbnN0 YWxsIEZGSTo6UGxhdHlwdXNAMS4wMAogICAgIGNwYW5tIGluc3RhbGwgRXh0VXRpbHM6Ok1h a2VNYWtlckA2LjUwICAjIGRvd25ncmFkZQogCiBUSVA6IGlmIFRlc3Q6OlNpbXBsZSdzIHV0 ZjggcmVncmVzc2lvbiB0ZXN0IGhhbmdzIHVwLCB0cnkgc2V0dGluZyBhCkBAIC0xMzEsNCAr MTMzLDQgQEAgcnVubmluZyB0ZXN0cy4gIFRvIHZlcmlmeSB0aGF0IHRoZSByaWdodCBQZXJs IHdhcyBmb3VuZDoKIER1ZSB0byBsaW1pdGF0aW9ucyBvZiBjcGFubSwgdGhpcyByZWNpcGUg ZG9lc24ndCBleGFjdGx5IGR1cGxpY2F0ZSB0aGUKIG1vZHVsZSBsaXN0IG9mIG9sZGVyIGJ1 aWxkZmFybSBhbmltYWxzLiAgVGhlIGRpc2NyZXBhbmNpZXMgc2hvdWxkIHNlbGRvbQogbWF0 dGVyLCBidXQgaWYgeW91IHdhbnQgdG8gYmUgc3VyZSwgYnlwYXNzIGNwYW5tIGFuZCBpbnN0 ZWFkIG1hbnVhbGx5Ci1pbnN0YWxsIHRoZSBkZXNpcmVkIHZlcnNpb25zIG9mIFRlc3Q6OlNp bXBsZSBhbmQgSVBDOjpSdW4uCitpbnN0YWxsIHRoZSBkZXNpcmVkIHZlcnNpb25zIG9mIFRl c3Q6OlNpbXBsZSwgSVBDOjpSdW4gYW5kIEZGSTo6UGxhdHlwdXMuCi0tIAoyLjQzLjAKCg== --------------iATMJHJEeQMb5QczqNM9768Z--