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 1vsSf2-002Ebe-0O for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 21:31:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsSf1-00CMin-1P for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 21:31:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsSf0-00CMdb-1F for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 21:31:11 +0000 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsSev-000000017Mu-21zm for pgsql-hackers@postgresql.org; Tue, 17 Feb 2026 21:31:09 +0000 Received: by mail-qt1-x842.google.com with SMTP id d75a77b69052e-506c02ec1b3so3157461cf.0 for ; Tue, 17 Feb 2026 13:31:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1771363865; x=1771968665; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=hodNtlo5+sRs8T1x4WPRhdp/5BVwa4H4Nqahjc3wKOM=; b=MJ1XEEhFhVxvnJpwY92p8FMHfqZaP1ONNKd2FkVUTXwXWrHq1YZlrGx5Jp3Xh8kSfP 6OJsw4k9xERlJME5G9Ir2prM/7yEamQh3dSFB2CICYTmMrOFKknHYJb7seac2fXeyaa9 GwqHXVVGT7e962j1q2r9PouP9tEJiwuKmb3+TGaKRZC2joYwOasZewLzfSQNkefj/pjG dcrvsDchTRBth6ZmdpDmMCbY5MLGLBPWA4ao6t8YrWQqb6q2ZVtXtA3m1m9D/jHGnVhk VWASNgh4y76JPuIgfm4x244N+D+fq1dPhIw8YB55naF0miMYBXTOsM9ADu5/uHqzJR2d EH8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771363865; x=1771968665; h=in-reply-to:autocrypt:content-language:from:references:cc:to :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=hodNtlo5+sRs8T1x4WPRhdp/5BVwa4H4Nqahjc3wKOM=; b=RhA3QKeO69et2y+3x4rO7EQ25+nY0xTMuAmVCXao09unZGPrL83DeTGHH0CWtKUL99 sJt/a01CQsQC+9zN7hhKVyvjhBWna+aYi1Jr7M47pdaj+tUGYj0+x02+ACmfVHyw8L3j R4twhOnr1gDAwwT78qkg62sMIqe8ppTCEUlIMinU4O3ziBdTUeYWZE0TE4g5lTg5rwlS yQJr5cBWfmLU9MocW2VnHNi5hbBc+h8du4OgP6C99bGyemzOb0HXQOISDEfB/ivrLx5w B+kzs3OZQs37hi98YJDiASWaNiRsxEIkmob0CvDWKX31/yb5FJ+WmSMvtLaLSs+nVoSp DpHA== X-Gm-Message-State: AOJu0Yyz7/zfzjWqoYvvaUJZnBUo+JEof5o/UCtAllU1XKOF+9lvK5d1 vb+dGng2H/MVGWjzDx5FsU7hzll64HTYdKUPc+azX9Qp5bpNAeptf6hWvbHBkpU/nys= X-Gm-Gg: AZuq6aJ78gtaRLokHe4FjIqR0iSA+MuqbAZ/etXoujoURQjRknj/zdIsRWvzt/cDR34 RJ4MGgTKKEqJGunOMA7W7GA0qrVvkxTlP1n9XabTuZP+fIuhsFG4YDe3y92mTiv19CWontAuoT4 WeDgOgOoZdaqt41S7AzzthJhVpHvp+970EFrAJz3wuqwJuz2sLLycyf1OeUrxZnmsVvuts2csBG HWRUQ8Ya+gCc888wLrbyPKm55G9R4i9v+JwS6vijtRfzI52kXlo987wMb5Pqxx/q8xj4uQBhr8U O977q3a3O8KMBTuu8uZyttChl5zGiSKEZ4Yh5vlMAjbaCf1PnygS/RPBFgqSIkVtRX2Y61L7U+H u8pj/npVyTlUYDy2COnXDYAIet+LBL7KjCDrlsAfbZMJcfow+S4igy8LppIbfNkbCJt8O+lcKEW 1Q2JmC2w1aCSe8JI/j2zfpjuWNB5zybw== X-Received: by 2002:ac8:59c9:0:b0:4f1:83e4:70d0 with SMTP id d75a77b69052e-506b2898dcdmr191171431cf.34.1771363864802; Tue, 17 Feb 2026 13:31:04 -0800 (PST) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-506df0932c4sm18203021cf.23.2026.02.17.13.31.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 17 Feb 2026 13:31:03 -0800 (PST) Content-Type: multipart/mixed; boundary="------------9j9GJXvT4wB8jSJ2S8CdYYJV" Message-ID: <1779b4d6-768f-4edb-8cd6-62706d321f32@dunslane.net> Date: Tue, 17 Feb 2026 16:31:02 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BackgroundPsql swallowing errors on windows To: Andres Freund Cc: pgsql-hackers@postgresql.org, Noah Misch References: <762648ad-99b5-4871-beaa-ca275e46ef6e@dunslane.net> <5dgt6vir7n664qruw3ndywpmfxsmfuu4oeh43syocgo3g6v72n@hjxahrqk4w7t> From: Andrew Dunstan 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: <5dgt6vir7n664qruw3ndywpmfxsmfuu4oeh43syocgo3g6v72n@hjxahrqk4w7t> 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. --------------9j9GJXvT4wB8jSJ2S8CdYYJV Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2026-02-16 Mo 7:17 PM, Andres Freund wrote: > Hi, > > On 2026-02-16 16:38:02 -0500, Andrew Dunstan wrote: >> Here we are almost exactly a year later. I returned to this work quite >> recently, and reached a milestone, namely the removal of all calls to >> BackgroundPsql, with all the TAP tests passing. The XS module still has some >> problems, and I think I'm inclined not to pursue it, and just rely on the >> FFI mapping. >> >> The current state of this is attached. People who are interested can hit me >> up for info in Vancouver if not before. I'll work on turning this into a set >> of commitable patches. > Nice progress! > > 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. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------9j9GJXvT4wB8jSJ2S8CdYYJV Content-Type: text/x-patch; charset=UTF-8; name="Tap-Sessions-v9.patch" Content-Disposition: attachment; filename="Tap-Sessions-v9.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwMV92ZXJpZnlfaGVhcGFtLnBsIGIv Y29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0ucGwKaW5kZXggZTNmZWUxOWFl NWQuLjllYTcyMTc5ZmNkIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdC8wMDFfdmVy aWZ5X2hlYXBhbS5wbAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBh bS5wbApAQCAtNSw2ICs1LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9 PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAog dXNlIFRlc3Q6Ok1vcmU7CkBAIC0xOCw3ICsxOSw5IEBAICRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0Jyk7CiAkbm9kZS0+aW5pdChub19kYXRhX2NoZWNr c3VtcyA9PiAxKTsKICRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ2F1 dG92YWN1dW09b2ZmJyk7CiAkbm9kZS0+c3RhcnQ7Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7CitteSAkc2Vzc2lvbiA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKworJHNlc3Np b24tPmRvKHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7CiAKICMKICMgQ2hlY2sgYSB0 YWJsZSB3aXRoIGRhdGEgbG9hZGVkIGJ1dCBubyBjb3JydXB0aW9uLCBmcmVlemluZywgZXRj LgpAQCAtNDksNyArNTIsNyBAQCBkZXRlY3RzX2hlYXBfY29ycnVwdGlvbigKICMgQ2hlY2sg YSBjb3JydXB0IHRhYmxlIHdpdGggYWxsLWZyb3plbiBkYXRhCiAjCiBmcmVzaF90ZXN0X3Rh YmxlKCd0ZXN0Jyk7Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVkFDVVVNIChG UkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgdGVzdCkpOworJHNlc3Npb24tPmRvKHEo VkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgdGVzdCkpOwogZGV0ZWN0 c19ub19jb3JydXB0aW9uKCJ2ZXJpZnlfaGVhcGFtKCd0ZXN0JykiLAogCSJhbGwtZnJvemVu IG5vdCBjb3JydXB0ZWQgdGFibGUiKTsKIGNvcnJ1cHRfZmlyc3RfcGFnZSgndGVzdCcpOwpA QCAtODEsNyArODQsNyBAQCBzdWIgcmVsYXRpb25fZmlsZXBhdGgKIAlteSAoJHJlbG5hbWUp ID0gQF87CiAKIAlteSAkcGdkYXRhID0gJG5vZGUtPmRhdGFfZGlyOwotCW15ICRyZWwgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJbXkgJHJlbCA9ICRzZXNzaW9uLT5xdWVy eV9vbmV2YWwoCiAJCXFxKFNFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgnJHJlbG5hbWUn KSkpOwogCWRpZSAicGF0aCBub3QgZm91bmQgZm9yIHJlbGF0aW9uICRyZWxuYW1lIiB1bmxl c3MgZGVmaW5lZCAkcmVsOwogCXJldHVybiAiJHBnZGF0YS8kcmVsIjsKQEAgLTkyLDggKzk1 LDggQEAgc3ViIGZyZXNoX3Rlc3RfdGFibGUKIHsKIAlteSAoJHJlbG5hbWUpID0gQF87CiAK LQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0dXJu ICRzZXNzaW9uLT5kbygKKwkJcXEoCiAJCURST1AgVEFCTEUgSUYgRVhJU1RTICRyZWxuYW1l IENBU0NBREU7CiAJCUNSRUFURSBUQUJMRSAkcmVsbmFtZSAoYSBpbnRlZ2VyLCBiIHRleHQp OwogCQlBTFRFUiBUQUJMRSAkcmVsbmFtZSBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxz ZSk7CkBAIC0xMTcsOCArMTIwLDggQEAgc3ViIGZyZXNoX3Rlc3Rfc2VxdWVuY2UKIHsKIAlt eSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bv c3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5kbygKKwkJcXEoCiAJCURST1AgU0VR VUVOQ0UgSUYgRVhJU1RTICRzZXFuYW1lIENBU0NBREU7CiAJCUNSRUFURSBTRVFVRU5DRSAk c2VxbmFtZQogCQkJSU5DUkVNRU5UIEJZIDEzCkBAIC0xMzQsOCArMTM3LDggQEAgc3ViIGFk dmFuY2VfdGVzdF9zZXF1ZW5jZQogewogCW15ICgkc2VxbmFtZSkgPSBAXzsKIAotCXJldHVy biAkbm9kZS0+c2FmZV9wc3FsKAotCQkncG9zdGdyZXMnLCBxcSgKKwlyZXR1cm4gJHNlc3Np b24tPnF1ZXJ5X29uZXZhbCgKKwkJcXEoCiAJCVNFTEVDVCBuZXh0dmFsKCckc2VxbmFtZScp OwogCSkpOwogfQpAQCAtMTQ1LDEwICsxNDgsNyBAQCBzdWIgc2V0X3Rlc3Rfc2VxdWVuY2UK IHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgK LQkJJ3Bvc3RncmVzJywgcXEoCi0JCVNFTEVDVCBzZXR2YWwoJyRzZXFuYW1lJywgMTAyKTsK LQkpKTsKKwlyZXR1cm4gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbChxcShTRUxFQ1Qgc2V0dmFs KCckc2VxbmFtZScsIDEwMikpKTsKIH0KIAogIyBDYWxsIFNRTCBmdW5jdGlvbnMgdG8gcmVz ZXQgdGhlIHNlcXVlbmNlCkBAIC0xNTYsOCArMTU2LDggQEAgc3ViIHJlc2V0X3Rlc3Rfc2Vx dWVuY2UKIHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVf cHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5kbygKKwkJcXEo CiAJCUFMVEVSIFNFUVVFTkNFICRzZXFuYW1lIFJFU1RBUlQgV0lUSCA1MQogCSkpOwogfQpA QCAtMTY5LDYgKzE2OSw3IEBAIHN1YiBjb3JydXB0X2ZpcnN0X3BhZ2UKIAlteSAoJHJlbG5h bWUpID0gQF87CiAJbXkgJHJlbHBhdGggPSByZWxhdGlvbl9maWxlcGF0aCgkcmVsbmFtZSk7 CiAKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAJJG5vZGUtPnN0b3A7CiAKIAlteSAkZmg7CkBAIC0x OTEsNiArMTkyLDcgQEAgc3ViIGNvcnJ1cHRfZmlyc3RfcGFnZQogCSAgb3IgQkFJTF9PVVQo ImNsb3NlIGZhaWxlZDogJCEiKTsKIAogCSRub2RlLT5zdGFydDsKKwkkc2Vzc2lvbi0+cmVj b25uZWN0OwogfQogCiBzdWIgZGV0ZWN0c19oZWFwX2NvcnJ1cHRpb24KQEAgLTIxNiw3ICsy MTgsNyBAQCBzdWIgZGV0ZWN0c19jb3JydXB0aW9uCiAKIAlteSAoJGZ1bmN0aW9uLCAkdGVz dG5hbWUsIEByZSkgPSBAXzsKIAotCW15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxKFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CisJbXkgJHJlc3VsdCA9 ICRzZXNzaW9uLT5xdWVyeV90dXBsZXMocXEoU0VMRUNUICogRlJPTSAkZnVuY3Rpb24pKTsK IAlsaWtlKCRyZXN1bHQsICRfLCAkdGVzdG5hbWUpIGZvciAoQHJlKTsKIH0KIApAQCAtMjI2 LDcgKzIyOCw3IEBAIHN1YiBkZXRlY3RzX25vX2NvcnJ1cHRpb24KIAogCW15ICgkZnVuY3Rp b24sICR0ZXN0bmFtZSkgPSBAXzsKIAotCW15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxKFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CisJbXkgJHJlc3Vs dCA9ICRzZXNzaW9uLT5xdWVyeV90dXBsZXMocXEoU0VMRUNUICogRlJPTSAkZnVuY3Rpb24p KTsKIAlpcygkcmVzdWx0LCAnJywgJHRlc3RuYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvY29u dHJpYi9hbWNoZWNrL3QvMDAyX2NpYy5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMu cGwKaW5kZXggNjI5ZDAwYzFkMDUuLmYyYzdiYzg2NTNmIDEwMDY0NAotLS0gYS9jb250cmli L2FtY2hlY2svdC8wMDJfY2ljLnBsCisrKyBiL2NvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMu cGwKQEAgLTYsNiArNiw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVz ZSBUZXN0OjpNb3JlOwpAQCAtNzIsOCArNzMsOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJcShJTlNFUlQgSU5UTyBxdWViZWMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMikgcyhpKTspKTsKIAogIyBzdGFydCBiYWNrZ3JvdW5kIHRyYW5zYWN0aW9u Ci1teSAkaW5fcHJvZ3Jlc3NfaCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7Ci0kaW5fcHJvZ3Jlc3NfaC0+cXVlcnlfc2FmZShxKEJFR0lOOyBTRUxFQ1QgcGdfY3Vy cmVudF94YWN0X2lkKCk7KSk7CitteSAkaW5fcHJvZ3Jlc3NfaCA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRpbl9wcm9ncmVzc19oLT5kbyhx KEJFR0lOOyBTRUxFQ1QgcGdfY3VycmVudF94YWN0X2lkKCk7KSk7CiAKICMgZGVsZXRlIG9u ZSByb3cgZnJvbSB0YWJsZSwgd2hpbGUgYmFja2dyb3VuZCB0cmFuc2FjdGlvbiBpcyBpbiBw cm9ncmVzcwogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKERFTEVURSBGUk9NIHF1 ZWJlYyBXSEVSRSBpID0gMTspKTsKQEAgLTg2LDcgKzg3LDcgQEAgbXkgJHJlc3VsdCA9ICRu b2RlLT5wc3FsKCdwb3N0Z3JlcycsCiAJcShTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNr KCdvc2NhcicsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpKSk7CiBpcygkcmVzdWx0LCAnMCcs ICdidF9pbmRleF9wYXJlbnRfY2hlY2sgZm9yIENJQyBhZnRlciByZW1vdmVkIHJvdycpOwog Ci0kaW5fcHJvZ3Jlc3NfaC0+cXVpdDsKKyRpbl9wcm9ncmVzc19oLT5jbG9zZTsKIAogJG5v ZGUtPnN0b3A7CiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVj ay90LzAwM19jaWNfMnBjLnBsIGIvY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwK aW5kZXggZjI4ZWVhYzE3ZWYuLmQzYTE2NDNiZjMzIDEwMDY0NAotLS0gYS9jb250cmliL2Ft Y2hlY2svdC8wMDNfY2ljXzJwYy5wbAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDNfY2lj XzJwYy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogCiB1c2UgVGVzdDo6 TW9yZTsKIApAQCAtMzYsMjkgKzM3LDQyIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50LCBqIGpzb25iKSkpOwogIyBzdGF0ZW1lbnRz LgogIwogCi1teSAkbWFpbl9oID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn KTsKK215ICRtYWluX2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+ JG5vZGUpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZlKAorJG1haW5faC0+ZG9fYXN5bmMoCiAJ cSgKIEJFR0lOOwogSU5TRVJUIElOVE8gdGJsIFZBTFVFUygwLCAnW1sxNCwyLDNdXScpOwog KSk7CiAKLW15ICRjaWNfaCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7 CitteSAkY2ljX2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+JG5v ZGUpOwogCi0kY2ljX2gtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0LywgcSgKLVxlY2hvIHN0 YXJ0Ci1DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSk7Ci1DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGdpbmlkeCBPTiB0YmwgVVNJTkcgZ2luKGopOworJGNpY19o LT5zZXRub25ibG9ja2luZygxKTsKKworJGNpY19oLT5lbnRlclBpcGVsaW5lTW9kZSgpOwor CiskY2ljX2gtPmRvX3BpcGVsaW5lKAorCXEoCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiB0YmwoaSkKKykpOworCiskY2ljX2gtPnBpcGVsaW5lU3luYygpOworCiskY2lj X2gtPmRvX3BpcGVsaW5lKAorCXEoCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGdpbmlk eCBPTiB0YmwgVVNJTkcgZ2luKGopCiApKTsKIAotJG1haW5faC0+cXVlcnlfc2FmZSgKKyRj aWNfaC0+cGlwZWxpbmVTeW5jKCk7CisKKyRtYWluX2gtPndhaXRfZm9yX2NvbXBsZXRpb247 CiskbWFpbl9oLT5kb19hc3luYygKIAlxKAogUFJFUEFSRSBUUkFOU0FDVElPTiAnYSc7CiAp KTsKIAotJG1haW5faC0+cXVlcnlfc2FmZSgKKyRtYWluX2gtPndhaXRfZm9yX2NvbXBsZXRp b247CiskbWFpbl9oLT5kb19hc3luYygKIAlxKAogQkVHSU47CiBJTlNFUlQgSU5UTyB0Ymwg VkFMVUVTKDAsICdbWzE0LDIsM11dJyk7CkBAIC02Niw3ICs4MCw4IEBAIElOU0VSVCBJTlRP IHRibCBWQUxVRVMoMCwgJ1tbMTQsMiwzXV0nKTsKIAogJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENPTU1JVCBQUkVQQVJFRCAnYSc7KSk7CiAKLSRtYWluX2gtPnF1ZXJ5X3Nh ZmUoCiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG9fYXN5bmMo CiAJcSgKIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2InOwogQkVHSU47CkBAIC03NSwxNCArOTAs MTcgQEAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUygwLCAnIm1hcnkgaGFkIGEgbGl0dGxlIGxh bWIiJyk7CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDT01NSVQgUFJFUEFS RUQgJ2InOykpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZlKAotCXEoCi1QUkVQQVJFIFRSQU5T QUNUSU9OICdjJzsKLUNPTU1JVCBQUkVQQVJFRCAnYyc7Ci0pKTsKKyRtYWluX2gtPndhaXRf Zm9yX2NvbXBsZXRpb247CiskbWFpbl9oLT5kbygKKwlxKFBSRVBBUkUgVFJBTlNBQ1RJT04g J2MnOyksCisJcShDT01NSVQgUFJFUEFSRUQgJ2MnOykpOwogCi0kbWFpbl9oLT5xdWl0Owot JGNpY19oLT5xdWl0OworJG1haW5faC0+Y2xvc2U7CisKKyMgY2FsbGVkIHR3aWNlIG91dCBv ZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiBhYm91dCBwaXBlbGluZSBtb2RlCiskY2ljX2gt PndhaXRfZm9yX2NvbXBsZXRpb247CiskY2ljX2gtPndhaXRfZm9yX2NvbXBsZXRpb247Cisk Y2ljX2gtPmNsb3NlOwogCiAkcmVzdWx0ID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcShT RUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeCcsdHJ1ZSkpKTsKIGlzKCRyZXN1bHQsICcwJywg J2J0X2luZGV4X2NoZWNrIGFmdGVyIG92ZXJsYXBwaW5nIDJQQycpOwpAQCAtMTA2LDEwICsx MjQsOSBAQCBQUkVQQVJFIFRSQU5TQUNUSU9OICdwZXJzaXN0c19mb3JldmVyJzsKICkpOwog JG5vZGUtPnJlc3RhcnQ7CiAKLW15ICRyZWluZGV4X2ggPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotJHJlaW5kZXhfaC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnQv LCBxKAotXGVjaG8gc3RhcnQKK215ICRyZWluZGV4X2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskcmVpbmRleF9oLT5kb19hc3luYygKKwlx KAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gdGJsKGkpOwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgZ2luaWR4OwpA QCAtMTE3LDcgKzEzNCw4IEBAIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZ2luaWR4IE9O IHRibCBVU0lORyBnaW4oaik7CiApKTsKIAogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQ09NTUlUIFBSRVBBUkVEICdzcGFuc19yZXN0YXJ0JyIpOwotJHJlaW5kZXhfaC0+cXVp dDsKKyRyZWluZGV4X2gtPndhaXRfZm9yX2NvbXBsZXRpb247CiskcmVpbmRleF9oLT5jbG9z ZTsKICRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBidF9pbmRl eF9jaGVjaygnaWR4Jyx0cnVlKSkpOwogaXMoJHJlc3VsdCwgJzAnLCAnYnRfaW5kZXhfY2hl Y2sgYWZ0ZXIgMlBDIGFuZCByZXN0YXJ0Jyk7CiAkcmVzdWx0ID0gJG5vZGUtPnBzcWwoJ3Bv c3RncmVzJywgcShTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCdnaW5pZHgnKSkpOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9ibG9vbS90LzAwMV93YWwucGwgYi9jb250cmliL2Jsb29tL3QvMDAx X3dhbC5wbAppbmRleCA2ODNiMTg3NjA1NS4uZjg2YzQ5ZDYzNTcgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvYmxvb20vdC8wMDFfd2FsLnBsCisrKyBiL2NvbnRyaWIvYmxvb20vdC8wMDFfd2Fs LnBsCkBAIC01LDExICs1LDE0IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFM ID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCiBteSAkbm9kZV9wcmltYXJ5OwogbXkgJG5vZGVfc3RhbmRieTsK K215ICRzZXNzaW9uX3ByaW1hcnk7CitteSAkc2Vzc2lvbl9zdGFuZGJ5OwogCiAjIFJ1biBm ZXcgcXVlcmllcyBvbiBib3RoIHByaW1hcnkgYW5kIHN0YW5kYnkgYW5kIGNoZWNrIHRoZWly IHJlc3VsdHMgbWF0Y2guCiBzdWIgdGVzdF9pbmRleF9yZXBsYXkKQEAgLTIxLDIwICsyNCwx OCBAQCBzdWIgdGVzdF9pbmRleF9yZXBsYXkKIAkjIFdhaXQgZm9yIHN0YW5kYnkgdG8gY2F0 Y2ggdXAKIAkkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnkp OwogCi0JbXkgJHF1ZXJpZXMgPSBxcShTRVQgZW5hYmxlX3NlcXNjYW49b2ZmOwotU0VUIGVu YWJsZV9iaXRtYXBzY2FuPW9uOwotU0VUIGVuYWJsZV9pbmRleHNjYW49b247Ci1TRUxFQ1Qg KiBGUk9NIHRzdCBXSEVSRSBpID0gMDsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSAz OwotU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgdCA9ICdiJzsKLVNFTEVDVCAqIEZST00gdHN0 IFdIRVJFIHQgPSAnZic7Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMyBBTkQgdCA9 ICdjJzsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSA3IEFORCB0ID0gJ2UnOwotKTsK KwlteSBAcXVlcmllcyA9ICgKKwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSAwIiwK KwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSAzIiwKKwkJIlNFTEVDVCAqIEZST00g dHN0IFdIRVJFIHQgPSAnYiciLAorCQkiU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgdCA9ICdm JyIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMyBBTkQgdCA9ICdjJyIsCisJ CSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gNyBBTkQgdCA9ICdlJyIsCisJICAgKTsK IAogCSMgUnVuIHRlc3QgcXVlcmllcyBhbmQgY29tcGFyZSB0aGVpciByZXN1bHQKLQlteSAk cHJpbWFyeV9yZXN1bHQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwg JHF1ZXJpZXMpOwotCW15ICRzdGFuZGJ5X3Jlc3VsdCA9ICRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgicG9zdGdyZXMiLCAkcXVlcmllcyk7CisJbXkgJHByaW1hcnlfcmVzdWx0ID0gJHNl c3Npb25fcHJpbWFyeS0+cXVlcnlfdHVwbGVzKEBxdWVyaWVzKTsKKwlteSAkc3RhbmRieV9y ZXN1bHQgPSAkc2Vzc2lvbl9zdGFuZGJ5LT5xdWVyeV90dXBsZXMoQHF1ZXJpZXMpOwogCiAJ aXMoJHByaW1hcnlfcmVzdWx0LCAkc3RhbmRieV9yZXN1bHQsICIkdGVzdF9uYW1lOiBxdWVy eSByZXN1bHQgbWF0Y2hlcyIpOwogCXJldHVybjsKQEAgLTU1LDEzICs1NiwyNCBAQCAkbm9k ZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFt ZSwKIAloYXNfc3RyZWFtaW5nID0+IDEpOwogJG5vZGVfc3RhbmRieS0+c3RhcnQ7CiAKKyMg Q3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzZXNzaW9ucworJHNlc3Npb25fcHJpbWFyeSA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1hcnkp OworJHNlc3Npb25fc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlX3N0YW5kYnkpOworbXkgJGluaXRzZXQgPSBxWworICAgU0VUIGVuYWJs ZV9zZXFzY2FuPW9mZjsKKyAgIFNFVCBlbmFibGVfYml0bWFwc2Nhbj1vbjsKKyAgIFNFVCBl bmFibGVfaW5kZXhzY2FuPW9uOworXTsKKyRzZXNzaW9uX3ByaW1hcnktPmRvKCRpbml0c2V0 KTsKKyRzZXNzaW9uX3N0YW5kYnktPmRvKCRpbml0c2V0KTsKKwogIyBDcmVhdGUgc29tZSBi bG9vbSBpbmRleCBvbiBwcmltYXJ5Ci0kbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3Rn cmVzIiwgIkNSRUFURSBFWFRFTlNJT04gYmxvb207Iik7Ci0kbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoInBvc3RncmVzIiwgIkNSRUFURSBUQUJMRSB0c3QgKGkgaW50NCwgdCB0ZXh0KTsi KTsKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgicG9zdGdyZXMiLAorJHNlc3Npb25fcHJp bWFyeS0+ZG8oIkNSRUFURSBFWFRFTlNJT04gYmxvb207Iik7Ciskc2Vzc2lvbl9wcmltYXJ5 LT5kbygiQ1JFQVRFIFRBQkxFIHRzdCAoaSBpbnQ0LCB0IHRleHQpOyIpOworJHNlc3Npb25f cHJpbWFyeS0+ZG8oCiAJIklOU0VSVCBJTlRPIHRzdCBTRUxFQ1QgaSUxMCwgc3Vic3RyKGVu Y29kZShzaGEyNTYoaTo6dGV4dDo6Ynl0ZWEpLCAnaGV4JyksIDEsIDEpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwMDApIGk7IgogKTsKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgi cG9zdGdyZXMiLAorJHNlc3Npb25fcHJpbWFyeS0+ZG8oCiAJIkNSRUFURSBJTkRFWCBibG9v bWlkeCBPTiB0c3QgVVNJTkcgYmxvb20gKGksIHQpIFdJVEggKGNvbDEgPSAzKTsiKTsKIAog IyBUZXN0IHRoYXQgcXVlcmllcyBnaXZlIHNhbWUgcmVzdWx0CmRpZmYgLS1naXQgYS9jb250 cmliL3BnX3Zpc2liaWxpdHkvdC8wMDFfY29uY3VycmVudF90cmFuc2FjdGlvbi5wbCBiL2Nv bnRyaWIvcGdfdmlzaWJpbGl0eS90LzAwMV9jb25jdXJyZW50X3RyYW5zYWN0aW9uLnBsCmlu ZGV4IDNhYTU1Njg5MmE2Li5jZjZlM2I0NTE4MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192 aXNpYmlsaXR5L3QvMDAxX2NvbmN1cnJlbnRfdHJhbnNhY3Rpb24ucGwKKysrIGIvY29udHJp Yi9wZ192aXNpYmlsaXR5L3QvMDAxX2NvbmN1cnJlbnRfdHJhbnNhY3Rpb24ucGwKQEAgLTYs NiArNiw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCkBAIC0yNCwxMCArMjUsMTAgQEAgJHN0YW5kYnktPnN0YXJ0OwogCiAjIFNldHVwIGFu b3RoZXIgZGF0YWJhc2UKICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIkNSRUFURSBE QVRBQkFTRSBvdGhlcl9kYXRhYmFzZTtcbiIpOwotbXkgJGJzZXNzaW9uID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgnb3RoZXJfZGF0YWJhc2UnKTsKK215ICRic2Vzc2lvbiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlLCBkYm5hbWUgPT4gJ290 aGVyX2RhdGFiYXNlJyk7CiAKICMgUnVuIGEgY29uY3VycmVudCB0cmFuc2FjdGlvbgotJGJz ZXNzaW9uLT5xdWVyeV9zYWZlKAorJGJzZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlT RUxFQ1QgdHhpZF9jdXJyZW50KCk7CkBAIC01NSw4ICs1Niw4IEBAICRyZXN1bHQgPSAkc3Rh bmRieS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsCiBvaygkcmVzdWx0IGVxICIiLCAicGdfY2hl Y2tfdmlzaWJsZSgpIGRldGVjdHMgbm8gZXJyb3JzIik7CiAKICMgU2h1dGRvd24KLSRic2Vz c2lvbi0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOwotJGJzZXNzaW9uLT5xdWl0OworJGJzZXNz aW9uLT5kbygiQ09NTUlUOyIpOworJGJzZXNzaW9uLT5jbG9zZTsKICRub2RlLT5zdG9wOwog JHN0YW5kYnktPnN0b3A7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90 LzAwMV9yZXBsX3N0YXRzLnBsIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3QvMDAxX3JlcGxf c3RhdHMucGwKaW5kZXggNjgxNGM3OTJlMmIuLjc5YjkxODIwMTRmIDEwMDY0NAotLS0gYS9j b250cmliL3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0cy5wbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0cy5wbApAQCAtNyw2ICs3LDcgQEAgdXNl IHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBGaWxlOjpQYXRo IHF3KHJtdHJlZSk7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTEyOSwxMSArMTMwLDExIEBAICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKICk7CiAKICMgTG9vayBhdCBzbG90IGRhdGEsIHdpdGggYSBwZXJz aXN0ZW50IGNvbm5lY3Rpb24uCi1teSAkYnBnc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDEpOworbXkgJGJnc2Vzc2lvbiA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4kbm9kZSk7CiAKICMgTGF1bmNo IHF1ZXJ5IGFuZCBsb29rIGF0IHNsb3QgZGF0YSwgaW5jcmVtZW50aW5nIHRoZSByZWZjb3Vu dCBvZiB0aGUKICMgc3RhdHMgZW50cnkuCi0kYnBnc3FsLT5xdWVyeV9zYWZlKAorJGJnc2Vz c2lvbi0+ZG9fYXN5bmMoCiAJIlNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfcGVla19iaW5hcnlf Y2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0JywgTlVMTCwgTlVMTCkiCiApOwogCkBAIC0x NTAsNyArMTUxLDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCiAjIExvb2sg YWdhaW4gYXQgdGhlIHNsb3QgZGF0YS4gIFRoZSBsb2NhbCBzdGF0cyByZWZlcmVuY2Ugc2hv dWxkIGJlIHJlZnJlc2hlZAogIyB0byB0aGUgcmVpbml0aWFsaXplZCBlbnRyeS4KLSRicGdz cWwtPnF1ZXJ5X3NhZmUoCiskYmdzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGJn c2Vzc2lvbi0+ZG9fYXN5bmMoCiAJIlNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfcGVla19iaW5h cnlfY2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0JywgTlVMTCwgTlVMTCkiCiApOwogIyBE cm9wIGFnYWluIHRoZSBzbG90LCB0aGUgZW50cnkgaXMgbm90IGRyb3BwZWQgeWV0IGFzIHRo ZSBwcmV2aW91cyBzZXNzaW9uCkBAIC0xNzYsNiArMTc4LDcgQEAgY29tbWFuZF9saWtlKAog bXkgJHN0YXRzX2ZpbGUgPSAiJGRhdGFkaXIvcGdfc3RhdC9wZ3N0YXQuc3RhdCI7CiBvaygt ZiAiJHN0YXRzX2ZpbGUiLCAic3RhdHMgZmlsZSBtdXN0IGV4aXN0IGFmdGVyIHNodXRkb3du Iik7CiAKLSRicGdzcWwtPnF1aXQ7CiskYmdzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9u OworJGJnc2Vzc2lvbi0+Y2xvc2U7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwgYi9zcmMvYmluL3Bn X2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbAppbmRleCA5NWYxZjM0YzkwZC4uOWFm YWNiY2FhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNF92ZXJpZnlf aGVhcGFtLnBsCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNF92ZXJpZnlfaGVhcGFt LnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1 c2UgVGVzdDo6TW9yZTsKQEAgLTE5MCwxNiArMTkxLDE3IEBAICRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnM9MTAnKTsK ICRub2RlLT5zdGFydDsKIG15ICRwb3J0ID0gJG5vZGUtPnBvcnQ7CiBteSAkcGdkYXRhID0g JG5vZGUtPmRhdGFfZGlyOwotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IEVYVEVOU0lPTiBhbWNoZWNrIik7Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Iik7CitteSAkc2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzZXNzaW9uLT5kbygi Q1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrIik7Ciskc2Vzc2lvbi0+ZG8oIkNSRUFURSBFWFRF TlNJT04gcGFnZWluc3BlY3QiKTsKIAogIyBHZXQgYSBub24temVybyBkYXRmcm96ZW54aWQK LSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVkFDVVVNIEZSRUVaRSkpOworJHNl c3Npb24tPmRvKHFxKFZBQ1VVTSBGUkVFWkUpKTsKIAogIyBDcmVhdGUgdGhlIHRlc3QgdGFi bGUgd2l0aCBwcmVjaXNlbHkgdGhlIHNjaGVtYSB0aGF0IG91ciBjb3JydXB0aW9uIGZ1bmN0 aW9uCiAjIGV4cGVjdHMuCi0kbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAor JHNlc3Npb24tPmRvKAorCXFxKAogCQlDUkVBVEUgVEFCTEUgcHVibGljLnRlc3QgKGEgQklH SU5ULCBiIFRFWFQsIGMgVEVYVCk7CiAJCUFMVEVSIFRBQkxFIHB1YmxpYy50ZXN0IFNFVCAo YXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlKTsKIAkJQUxURVIgVEFCTEUgcHVibGljLnRlc3Qg QUxURVIgQ09MVU1OIGMgU0VUIFNUT1JBR0UgRVhURVJOQUw7CkBAIC0yMDksMTQgKzIxMSwx NSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyBXZSB3YW50ICgwIDwgZGF0ZnJvemVueGlkIDwg dGVzdC5yZWxmcm96ZW54aWQpLiAgVG8gYWNoaWV2ZSB0aGlzLCB3ZSBmcmVlemUKICMgYW4g b3RoZXJ3aXNlIHVudXNlZCB0YWJsZSwgcHVibGljLmp1bmssIHByaW9yIHRvIGluc2VydGlu ZyBkYXRhIGFuZCBmcmVlemluZwogIyBwdWJsaWMudGVzdAotJG5vZGUtPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJQ1JFQVRFIFRBQkxF IHB1YmxpYy5qdW5rIEFTIFNFTEVDVCAnanVuayc6OlRFWFQgQVMganVua19jb2x1bW47CiAJ CUFMVEVSIFRBQkxFIHB1YmxpYy5qdW5rIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNl KTsKLQkJVkFDVVVNIEZSRUVaRSBwdWJsaWMuanVuawotCSkpOworCSksCisJJ1ZBQ1VVTSBG UkVFWkUgcHVibGljLmp1bmsnCispOwogCi1teSAkcmVsID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorbXkgJHJlbCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJcXEoU0VM RUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCdwdWJsaWMudGVzdCcpKSk7CiBteSAkcmVscGF0 aCA9ICIkcGdkYXRhLyRyZWwiOwogCkBAIC0yMjksMjMgKzIzMiwyNCBAQCBteSAkUk9XQ09V TlRfQkFTSUMgPSAxNjsKIAogIyBGaXJzdCBpbnNlcnQgZGF0YSBuZWVkZWQgZm9yIHRlc3Rz IHVucmVsYXRlZCB0byB1cGRhdGUgY2hhaW4gdmFsaWRhdGlvbi4KICMgVGhlbiBmcmVlemUg dGhlIHBhZ2UuIFRoZXNlIHR1cGxlcyBhcmUgYXQgb2Zmc2V0IG51bWJlcnMgMSB0byAxNi4K LSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJ cXEoCiAJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMpCiAJCVNFTEVDVAogCQkJ eCdERUFERjlGOURFQURGOUY5Jzo6YmlnaW50LAogCQkJJ2FiY2RlZmcnLAogCQkJcmVwZWF0 KCd3JywgMTAwMDApCiAJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJFJPV0NPVU5UX0JBU0lD KTsKLQlWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OykKKyAgICApLAorCSdWQUNVVU0gRlJF RVpFIHB1YmxpYy50ZXN0JwogKTsKIAogIyBDcmVhdGUgc29tZSBzaW1wbGUgSE9UIHVwZGF0 ZSBjaGFpbnMgZm9yIGxpbmUgcG9pbnRlciB2YWxpZGF0aW9uLiBBZnRlcgogIyB0aGUgcGFn ZSBpcyBIT1QgcHJ1bmVkLCB3ZSdsbCBoYXZlIHR3byByZWRpcmVjdHMgbGluZSBwb2ludGVy cyBlYWNoIHBvaW50aW5nCiAjIHRvIGEgdHVwbGUuIFdlJ2xsIHRoZW4gY2hhbmdlIHRoZSBz ZWNvbmQgcmVkaXJlY3QgdG8gcG9pbnQgdG8gdGhlIHNhbWUKICMgdHVwbGUgYXMgdGhlIGZp cnN0IG9uZSBhbmQgdmVyaWZ5IHRoYXQgd2UgY2FuIGRldGVjdCBjb3JydXB0aW9uLgotJG5v ZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgK IAkJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMpCiAJCQlWQUxVRVMgKCB4J0RF QURGOUY5REVBREY5RjknOjpiaWdpbnQsICdhYmNkZWZnJywKIAkJCQkJIGdlbmVyYXRlX3Nl cmllcygxLDIpKTsgLS0gb2Zmc2V0IG51bWJlcnMgMTcgYW5kIDE4CkBAIC0yNTQsOCArMjU4 LDggQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkpKTsKIAogIyBDcmVhdGUgc29tZSBtb3JlIEhP VCB1cGRhdGUgY2hhaW5zLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgK KyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIs IGMpCiAJCQlWQUxVRVMgKCB4J0RFQURGOUY5REVBREY5RjknOjpiaWdpbnQsICdhYmNkZWZn JywKIAkJCQkJIGdlbmVyYXRlX3NlcmllcygzLDYpKTsgLS0gb2Zmc2V0IG51bWJlcnMgMjEg dGhyb3VnaCAyNApAQCAtMjY0LDI1ICsyNjgsMzAgQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkp KTsKIAogIyBOZWdhdGl2ZSB0ZXN0IGNhc2Ugb2YgSE9ULXBydW5pbmcgd2l0aCBhYm9ydGVk IHR1cGxlLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9u LT5kbygKKwlxcSgKIAkJQkVHSU47CiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQgYyA9ICdh JyBXSEVSRSBjID0gJzUnOyAtLSBvZmZzZXQgbnVtYmVyIDI3CiAJCUFCT1JUOwotCQlWQUNV VU0gRlJFRVpFIHB1YmxpYy50ZXN0OwotCSkpOworICAgICAgICksCisJICAgJ1ZBQ1VVTSBG UkVFWkUgcHVibGljLnRlc3Q7JywKKwkpOwogCiAjIE5leHQgdXBkYXRlIG9uIGFueSB0dXBs ZSB3aWxsIGJlIHN0b3JlZCBhdCB0aGUgc2FtZSBwbGFjZSBvZiB0dXBsZSBpbnNlcnRlZAog IyBieSBhYm9ydGVkIHRyYW5zYWN0aW9uLiBUaGlzIHNob3VsZCBub3QgY2F1c2UgdGhlIHRh YmxlIHRvIGFwcGVhciBjb3JydXB0LgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVHSU47CiAJCVVQREFURSBw dWJsaWMudGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzYnOyAtLSBvZmZzZXQgbnVtYmVy IDI3IGFnYWluCi0JCVZBQ1VVTSBGUkVFWkUgcHVibGljLnRlc3Q7Ci0JKSk7CisgICAgICAg IENPTU1JVDsKKwkpLAorCSdWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OycsCisgICApOwog CiAjIERhdGEgZm9yIEhPVCBjaGFpbiB2YWxpZGF0aW9uLCBzbyBub3QgY2FsbGluZyBWQUNV VU0gRlJFRVpFLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNz aW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVHSU47CiAJCUlOU0VSVCBJTlRPIHB1YmxpYy50 ZXN0IChhLCBiLCBjKQogCQkJVkFMVUVTICggeCdERUFERjlGOURFQURGOUY5Jzo6YmlnaW50 LCAnYWJjZGVmZycsCiAJCQkJCSBnZW5lcmF0ZV9zZXJpZXMoNywxNSkpOyAtLSBvZmZzZXQg bnVtYmVycyAyOCB0byAzNgpAQCAtMjkzLDExICszMDIsMTIgQEAgJG5vZGUtPnNhZmVfcHNx bCgKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdIRVJFIGMgPSAnMTMnOyAt LSBvZmZzZXQgbnVtYmVyIDQxCiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQgYyA9ICdhJyBX SEVSRSBjID0gJzE0JzsgLS0gb2Zmc2V0IG51bWJlciA0MgogCQlVUERBVEUgcHVibGljLnRl c3QgU0VUIGMgPSAnYScgV0hFUkUgYyA9ICcxNSc7IC0tIG9mZnNldCBudW1iZXIgNDMKKyAg ICAgICAgQ09NTUlUOwogCSkpOwogCiAjIE5lZWQgb25lIGFib3J0ZWQgdHJhbnNhY3Rpb24g dG8gdGVzdCBjb3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCi0kbm9kZS0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlCRUdJTjsKIAkJVVBE QVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdIRVJFIGMgPSAnOSc7IC0tIG9mZnNldCBu dW1iZXIgNDQKIAkJQUJPUlQ7CkBAIC0zMDYsMTkgKzMxNiwxOSBAQCAkbm9kZS0+c2FmZV9w c3FsKAogIyBOZWVkIG9uZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiB0byB0ZXN0IGZldyBj b3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCiAjIFdlIGFyZSBjcmVhdGluZyBQUkVQQVJFIFRS QU5TQUNUSU9OIGhlcmUgYXMgdGhlc2Ugd2lsbCBub3QgYmUgYWJvcnRlZAogIyBldmVuIGlm IHdlIHN0b3AgdGhlIG5vZGUuCi0kbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFx KAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlCRUdJTjsKIAkJUFJFUEFSRSBUUkFOU0FDVElP TiAnaW5fcHJvZ3Jlc3NfdHgnOwogCSkpOwotbXkgJGluX3Byb2dyZXNzX3hpZCA9ICRub2Rl LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCitteSAkaW5fcHJvZ3Jlc3NfeGlkID0g JHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwlxcSgKIAkJU0VMRUNUIHRyYW5zYWN0aW9uIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7CiAJKSk7CiAKLW15ICRyZWxmcm96ZW54aWQgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCitteSAkcmVsZnJvemVueGlkID0gJHNlc3Npb24t PnF1ZXJ5X29uZXZhbCgKIAlxKHNlbGVjdCByZWxmcm96ZW54aWQgZnJvbSBwZ19jbGFzcyB3 aGVyZSByZWxuYW1lID0gJ3Rlc3QnKSk7Ci1teSAkZGF0ZnJvemVueGlkID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorbXkgJGRhdGZyb3plbnhpZCA9ICRzZXNzaW9uLT5xdWVy eV9vbmV2YWwoCiAJcShzZWxlY3QgZGF0ZnJvemVueGlkIGZyb20gcGdfZGF0YWJhc2Ugd2hl cmUgZGF0bmFtZSA9ICdwb3N0Z3JlcycpKTsKIAogIyBTYW5pdHkgY2hlY2sgdGhhdCBvdXIg J3Rlc3QnIHRhYmxlIGhhcyBhIHJlbGZyb3plbnhpZCBuZXdlciB0aGFuIHRoZQpAQCAtMzI2 LDYgKzMzNiw3IEBAIG15ICRkYXRmcm96ZW54aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAjIGZpcnN0IG5vcm1hbCB4aWQuICBXZSByZWx5IG9uIHRoZXNlIGludmFyaWFu dHMgaW4gc29tZSBvZiBvdXIgdGVzdHMuCiBpZiAoJGRhdGZyb3plbnhpZCA8PSAzIHx8ICRk YXRmcm96ZW54aWQgPj0gJHJlbGZyb3plbnhpZCkKIHsKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAJ JG5vZGUtPmNsZWFuX25vZGU7CiAJcGxhbiBza2lwX2FsbCA9PgogCSAgIlhpZCB0aHJlc2hv bGRzIG5vdCBhcyBleHBlY3RlZDogZ290IGRhdGZyb3plbnhpZCA9ICRkYXRmcm96ZW54aWQs IHJlbGZyb3plbnhpZCA9ICRyZWxmcm96ZW54aWQiOwpAQCAtMzM0LDE3ICszNDUsMjEgQEAg aWYgKCRkYXRmcm96ZW54aWQgPD0gMyB8fCAkZGF0ZnJvemVueGlkID49ICRyZWxmcm96ZW54 aWQpCiAKICMgRmluZCB3aGVyZSBlYWNoIG9mIHRoZSB0dXBsZXMgaXMgbG9jYXRlZCBvbiB0 aGUgcGFnZS4gSWYgYSBwYXJ0aWN1bGFyCiAjIGxpbmUgcG9pbnRlciBpcyBhIHJlZGlyZWN0 IHJhdGhlciB0aGFuIGEgdHVwbGUsIHdlIHJlY29yZCB0aGUgb2Zmc2V0IGFzIC0xLgotbXkg QGxwX29mZiA9IHNwbGl0ICdcbicsICRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXEoCitteSAkbHBfb2ZmX3JlcyA9ICRzZXNzaW9uLT5xdWVyeSgKKwlxcSgKIAkgICAgU0VM RUNUIENBU0UgV0hFTiBscF9mbGFncyA9IDIgVEhFTiAtMSBFTFNFIGxwX29mZiBFTkQKIAkg ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0ZXN0JywgJ21haW4nLCAw KSkKICAgICApCi0pOworICAgKTsKK215IEBscF9vZmY7CitwdXNoKEBscF9vZmYsICRfLT5b MF0pIGZvcmVhY2ggQHskbHBfb2ZmX3Jlcy0+e3Jvd3N9fTsKKwogc2NhbGFyIEBscF9vZmYg PT0gJFJPV0NPVU5UIG9yIEJBSUxfT1VUKCJyb3cgb2Zmc2V0IGNvdW50cyBtaXNtYXRjaCIp OwogCiAjIFNhbml0eSBjaGVjayB0aGF0IG91ciAndGVzdCcgdGFibGUgb24gZGlzayBsYXlv dXQgbWF0Y2hlcyBleHBlY3RhdGlvbnMuICBJZgogIyB0aGlzIGlzIG5vdCBzbywgd2Ugd2ls bCBoYXZlIHRvIHNraXAgdGhlIHRlc3QgdW50aWwgc29tZWJvZHkgdXBkYXRlcyB0aGUgdGVz dAogIyB0byB3b3JrIG9uIHRoaXMgcGxhdGZvcm0uCiskc2Vzc2lvbi0+Y2xvc2U7CiAkbm9k ZS0+c3RvcDsKIG15ICRmaWxlOwogb3BlbigkZmlsZSwgJys8JywgJHJlbHBhdGgpCkBAIC03 NTEsMTcgKzc2NiwxOSBAQCBmb3IgKG15ICR0dXBpZHggPSAwOyAkdHVwaWR4IDwgJFJPV0NP VU5UOyAkdHVwaWR4KyspCiBjbG9zZSgkZmlsZSkKICAgb3IgQkFJTF9PVVQoImNsb3NlIGZh aWxlZDogJCEiKTsKICRub2RlLT5zdGFydDsKKyRzZXNzaW9uLT5yZWNvbm5lY3Q7CiAKICMg UnVuIHBnX2FtY2hlY2sgYWdhaW5zdCB0aGUgY29ycnVwdCB0YWJsZSB3aXRoIGVwb2NoPTAs IGNvbXBhcmluZyBhY3R1YWwKICMgY29ycnVwdGlvbiBtZXNzYWdlcyBhZ2FpbnN0IHRoZSBl eHBlY3RlZCBtZXNzYWdlcwogJG5vZGUtPmNvbW1hbmRfY2hlY2tzX2FsbCgKIAlbICdwZ19h bWNoZWNrJywgJy0tbm8tZGVwZW5kZW50LWluZGV4ZXMnLCAnLS1wb3J0JyA9PiAkcG9ydCwg J3Bvc3RncmVzJyBdLAogCTIsIFtAZXhwZWN0ZWRdLCBbXSwgJ0V4cGVjdGVkIGNvcnJ1cHRp b24gbWVzc2FnZSBvdXRwdXQnKTsKLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAgICAgICAgICAgICAgICAgICAgICAgICBDT01N SVQgUFJFUEFSRUQgJ2luX3Byb2dyZXNzX3R4JzsKICAgICAgICAgKSk7CiAKKyRzZXNzaW9u LT5jbG9zZTsKICRub2RlLT50ZWFyZG93bl9ub2RlOwogJG5vZGUtPmNsZWFuX25vZGU7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVy c2lvbi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lv bi5wbAppbmRleCBkMThjNTA4MzBkNS4uNjg0YjY0Y2IwYTMgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lvbi5wbAorKysgYi9zcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwKQEAgLTE1LDYg KzE1LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgTWF0aDo6Qmln SW50OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCkBAIC0zOCwxMCArMzksOCBAQCBteSAkdGVtcGRpciA9IFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwogIyB2ZXJzaW9ucy4KICMKICMgVGhlIGZpcnN0IGFy Z3VtZW50IGlzIHRoZSBjbHVzdGVyIHRvIGNvbm5lY3QgdG8sIHRoZSBzZWNvbmQgYXJndW1l bnQKLSMgaXMgYSBjbHVzdGVyIHVzaW5nIHRoZSBuZXcgdmVyc2lvbi4gIFdlIG5lZWQgdGhl ICdwc3FsJyBiaW5hcnkgZnJvbQotIyB0aGUgbmV3IHZlcnNpb24sIHRoZSBuZXcgY2x1c3Rl ciBpcyBvdGhlcndpc2UgdW51c2VkLiAgKFdlIG5lZWQgdG8KLSMgdXNlIHRoZSBuZXcgJ3Bz cWwnIGJlY2F1c2Ugc29tZSBvZiB0aGUgbW9yZSBhZHZhbmNlZCBiYWNrZ3JvdW5kIHBzcWwK LSMgcGVybCBtb2R1bGUgZmVhdHVyZXMgZGVwZW5kIG9uIGEgZmFpcmx5IHJlY2VudCBwc3Fs IHZlcnNpb24uKQorIyBpcyBhIGNsdXN0ZXIgdXNpbmcgdGhlIG5ldyB2ZXJzaW9uLiAgV2Ug bmVlZCB0aGUgbGlicHEgbGlicmFyeSBmcm9tCisjIHRoZSBuZXcgdmVyc2lvbiAoZm9yIFNl c3Npb24pLCB0aGUgbmV3IGNsdXN0ZXIgaXMgb3RoZXJ3aXNlIHVudXNlZC4KIHN1YiBteGFj dF93b3JrbG9hZAogewogCW15ICRub2RlID0gc2hpZnQ7ICAgICAgICMgQ2x1c3RlciB0byBj b25uZWN0IHRvCkBAIC03OSwxOCArNzgsMTUgQEAgc3ViIG14YWN0X3dvcmtsb2FkCiAJIyBp biBlYWNoIGNvbm5lY3Rpb24uCiAJZm9yICgwIC4uICRuY2xpZW50cykKIAl7Ci0JCSMgVXNl IHRoZSBwc3FsIGJpbmFyeSBmcm9tIHRoZSBuZXcgaW5zdGFsbGF0aW9uLiAgVGhlCi0JCSMg QmFja2dyb3VuZFBzcWwgZnVuY3Rpb25hbGl0eSBkb2Vzbid0IHdvcmsgd2l0aCBvbGRlciBw c3FsCi0JCSMgdmVyc2lvbnMuCi0JCW15ICRjb25uID0gJGJpbm5vZGUtPmJhY2tncm91bmRf cHNxbCgKLQkJCScnLAorCQkjIFVzZSB0aGUgbGlicHEvU2Vzc2lvbiBpbmZyYXN0cnVjdHVy ZSBmcm9tIHRoZSBuZXcgaW5zdGFsbGF0aW9uLgorCQlteSAkY29ubiA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldygKIAkJCWNvbm5zdHIgPT4gJG5vZGUtPmNvbm5zdHIoJ3Bv c3RncmVzJyksCi0JCQl0aW1lb3V0ID0+ICRjb25uZWN0aW9uX3RpbWVvdXRfc2Vjcyk7CisJ CQlsaWJkaXIgPT4gJGJpbm5vZGUtPmNvbmZpZ19kYXRhKCctLWxpYmRpcicpKTsKIAotCQkk Y29ubi0+cXVlcnlfc2FmZSgiU0VUIGxvZ19zdGF0ZW1lbnQ9bm9uZSIsIHZlcmJvc2UgPT4g JHZlcmJvc2UpCisJCSRjb25uLT5kbygiU0VUIGxvZ19zdGF0ZW1lbnQ9bm9uZSIpCiAJCSAg dW5sZXNzICR2ZXJib3NlOwotCQkkY29ubi0+cXVlcnlfc2FmZSgiU0VUIGVuYWJsZV9zZXFz Y2FuPW9mZiIsIHZlcmJvc2UgPT4gJHZlcmJvc2UpOwotCQkkY29ubi0+cXVlcnlfc2FmZSgi QkVHSU4iLCB2ZXJib3NlID0+ICR2ZXJib3NlKTsKKwkJJGNvbm4tPmRvKCJTRVQgZW5hYmxl X3NlcXNjYW49b2ZmIik7CisJCSRjb25uLT5kbygiQkVHSU4iKTsKIAogCQlwdXNoKEBjb25u ZWN0aW9ucywgJGNvbm4pOwogCX0KQEAgLTEwOCw5ICsxMDQsOSBAQCBzdWIgbXhhY3Rfd29y a2xvYWQKIAkJbXkgJGNvbm4gPSAkY29ubmVjdGlvbnNbICRpICUgJG5jbGllbnRzIF07CiAK IAkJbXkgJHNxbCA9ICgkaSAlICRhYm9ydF9ldmVyeSA9PSAwKSA/ICJBQk9SVCIgOiAiQ09N TUlUIjsKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoJHNxbCwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7 CisJCSRjb25uLT5kbygkc3FsKTsKIAotCQkkY29ubi0+cXVlcnlfc2FmZSgiQkVHSU4iLCB2 ZXJib3NlID0+ICR2ZXJib3NlKTsKKwkJJGNvbm4tPmRvKCJCRUdJTiIpOwogCQlpZiAoJGkg JSAkdXBkYXRlX2V2ZXJ5ID09IDApCiAJCXsKIAkJCSRzcWwgPSBxcVsKQEAgLTEyNiwxMiAr MTIyLDEyIEBAIHN1YiBteGFjdF93b3JrbG9hZAogCQkJICApIGFzIHgKIAkJCV07CiAJCX0K LQkJJGNvbm4tPnF1ZXJ5X3NhZmUoJHNxbCwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7CisJCSRj b25uLT5kbygkc3FsKTsKIAl9CiAKIAlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKIAl7 Ci0JCSRjb25uLT5xdWl0KCk7CisJCSRjb25uLT5jbG9zZTsKIAl9CiAKIAkkbm9kZS0+c3Rv cDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3Jk LnBsIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKaW5kZXgg MGVjOWFhOWY0ZTguLjUxYTRmMWVhMjkxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9hdXRoZW50 aWNhdGlvbi90LzAwMV9wYXNzd29yZC5wbAorKysgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlv bi90LzAwMV9wYXNzd29yZC5wbApAQCAtMTMsNiArMTMsNyBAQAogdXNlIHN0cmljdDsKIHVz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIGlmICghJHVzZV91bml4X3NvY2tldHMp CkBAIC0xODQsMzYgKzE4NSwxOCBAQCBteSAkcmVzID0gJG5vZGUtPnNhZmVfcHNxbCgKIAkg V0hFUkUgcm9sbmFtZSA9ICdzY3JhbV9yb2xlX2l0ZXInIik7CiBpcygkcmVzLCAnU0NSQU0t U0hBLTI1NiQxMDI0OicsICdzY3JhbV9pdGVyYXRpb25zIGluIHNlcnZlciBzaWRlIFJPTEUn KTsKIAotIyBJZiB3ZSBkb24ndCBoYXZlIElPOjpQdHksIGZvcmdldCBpdCwgYmVjYXVzZSBJ UEM6OlJ1biBkZXBlbmRzIG9uIHRoYXQKLSMgdG8gc3VwcG9ydCBwdHkgY29ubmVjdGlvbnMu IEFsc28gc2tpcCBpZiBJUEM6OlJ1biBpc24ndCBhdCBsZWFzdCAwLjk4Ci0jIGFzIGVhcmxp ZXIgdmVyc2lvbiBjYXVzZSB0aGUgc2Vzc2lvbiB0byB0aW1lIG91dC4KLVNLSVA6Ci17Ci0J c2tpcCAiSU86OlB0eSBhbmQgSVBDOjpSdW4gPj0gMC45OCByZXF1aXJlZCIsIDEKLQkgIHVu bGVzcyBldmFsIHsgcmVxdWlyZSBJTzo6UHR5OyBJUEM6OlJ1bi0+VkVSU0lPTignMC45OCcp OyB9OworIyBzZXQgcGFzc3dvcmQgdXNpbmcgUFFjaGFuZ2VQYXNzd29yZAorbXkgJHNlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcgKG5vZGUgPT4gJG5vZGUpOwog Ci0JIyBBbHRlciB0aGUgcGFzc3dvcmQgb24gdGhlIGNyZWF0ZWQgcm9sZSB1c2luZyBccGFz c3dvcmQgaW4gcHNxbCB0byBlbnN1cmUKLQkjIHRoYXQgY2xpZW50c2lkZSBwYXNzd29yZCBj aGFuZ2VzIHVzZSB0aGUgc2NyYW1faXRlcmF0aW9ucyB2YWx1ZSB3aGVuCi0JIyBjYWxjdWxh dGluZyBTQ1JBTSBzZWNyZXRzLgotCW15ICRzZXNzaW9uID0gJG5vZGUtPmludGVyYWN0aXZl X3BzcWwoJ3Bvc3RncmVzJyk7Ci0KLQkkc2Vzc2lvbi0+c2V0X3F1ZXJ5X3RpbWVyX3Jlc3Rh cnQoKTsKLQkkc2Vzc2lvbi0+cXVlcnkoIlNFVCBwYXNzd29yZF9lbmNyeXB0aW9uPSdzY3Jh bS1zaGEtMjU2JzsiKTsKLQkkc2Vzc2lvbi0+cXVlcnkoIlNFVCBzY3JhbV9pdGVyYXRpb25z PTQyOyIpOwotCSRzZXNzaW9uLT5xdWVyeV91bnRpbChxci9FbnRlciBuZXcgcGFzc3dvcmQv LAotCQkiXFxwYXNzd29yZCBzY3JhbV9yb2xlX2l0ZXJcbiIpOwotCSRzZXNzaW9uLT5xdWVy eV91bnRpbChxci9FbnRlciBpdCBhZ2Fpbi8sICJwYXNzXG4iKTsKLQkkc2Vzc2lvbi0+cXVl cnlfdW50aWwocXIvcG9zdGdyZXM9IyAvLCAicGFzc1xuIik7Ci0JJHNlc3Npb24tPnF1aXQ7 Ci0KLQkkcmVzID0gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywKKyRzZXNzaW9u LT5kbygiU0VUIHBhc3N3b3JkX2VuY3J5cHRpb249J3NjcmFtLXNoYS0yNTYnOyIsCisJCQkg IlNFVCBzY3JhbV9pdGVyYXRpb25zPTQyOyIpOworJHJlcyA9ICRzZXNzaW9uLT5zZXRfcGFz c3dvcmQoInNjcmFtX3JvbGVfaXRlciIsInBhc3MiKTsKK2lzKCRyZXMtPntzdGF0dXN9LCAx LCAic2V0IHBhc3N3b3JkIG9rIik7CiskcmVzID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgK IAkJIlNFTEVDVCBzdWJzdHIocm9scGFzc3dvcmQsMSwxNykKIAkJIEZST00gcGdfYXV0aGlk CiAJCSBXSEVSRSByb2xuYW1lID0gJ3NjcmFtX3JvbGVfaXRlciciKTsKLQlpcygkcmVzLCAn U0NSQU0tU0hBLTI1NiQ0MjonLAotCQknc2NyYW1faXRlcmF0aW9ucyBpbiBwc3FsIFxwYXNz d29yZCBjb21tYW5kJyk7Ci19CitpcygkcmVzLCAnU0NSQU0tU0hBLTI1NiQ0MjonLCAnc2Ny YW1faXRlcmF0aW9ucyBjb3JyZWN0Jyk7CiAKICMgQ3JlYXRlIGEgZGF0YWJhc2UgdG8gdGVz dCByZWd1bGFyIGV4cHJlc3Npb24uCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgZGF0YWJhc2UgcmVnZXhfdGVzdGRiOyIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv YXV0aGVudGljYXRpb24vdC8wMDdfcHJlX2F1dGgucGwgYi9zcmMvdGVzdC9hdXRoZW50aWNh dGlvbi90LzAwN19wcmVfYXV0aC5wbAppbmRleCAwNDA2M2Y0NzIxZC4uMTdkZTkyYmM0MWEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBs CisrKyBiL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBsCkBAIC03 LDYgKzcsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRpbWU6Okhp UmVzIHF3KHVzbGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAgLTM2LDI0ICszNywyNyBAQCBp ZiAoISRub2RlLT5jaGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50cycpOwogCiAjIENvbm5lY3QgdG8gdGhlIHNlcnZlciBhbmQgaW5qZWN0IGEgd2FpdHBv aW50LgotbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwot JHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5p dC1wcmUtYXV0aCcsICd3YWl0JykiKTsKK215ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHNlc3Npb24tPmRvKCJTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2luaXQtcHJlLWF1dGgnLCAnd2FpdCcpIik7CiAK ICMgRnJvbSB0aGlzIHBvaW50IG9uLCBhbGwgbmV3IGNvbm5lY3Rpb25zIHdpbGwgaGFuZyBk dXJpbmcgc3RhcnR1cCwganVzdCBiZWZvcmUKLSMgYXV0aGVudGljYXRpb24uIFVzZSB0aGUg JHBzcWwgY29ubmVjdGlvbiBoYW5kbGUgZm9yIHNlcnZlciBpbnRlcmFjdGlvbi4KLW15ICRj b25uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCB3YWl0ID0+IDApOwor IyBhdXRoZW50aWNhdGlvbi4gVXNlIHRoZSAkc2Vzc2lvbiBjb25uZWN0aW9uIGhhbmRsZSBm b3Igc2VydmVyIGludGVyYWN0aW9uLgorbXkgJGNvbm4gPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSwgd2FpdCA9PiAwKTsKIAogIyBXYWl0IGZvciB0 aGUgY29ubmVjdGlvbiB0byBzaG93IHVwIGluIHBnX3N0YXRfYWN0aXZpdHksIHdpdGggdGhl IHdhaXRfZXZlbnQKLSMgb2YgdGhlIGluamVjdGlvbiBwb2ludC4KKyMgb2YgdGhlIGluamVj dGlvbiBwb2ludC4gV2UgbmVlZCB0byBwb2xsIHRoZSBhc3luYyBjb25uZWN0aW9uIHRvIGRy aXZlIGl0IGZvcndhcmQuCiBteSAkcGlkOwogd2hpbGUgKDEpCiB7Ci0JJHBpZCA9ICRwc3Fs LT5xdWVyeSgKKwkjIERyaXZlIHRoZSBhc3luYyBjb25uZWN0aW9uIGZvcndhcmQgLSBpdCB3 b24ndCBwcm9ncmVzcyB3aXRob3V0IHBvbGxpbmcKKwkkY29ubi0+cG9sbF9jb25uZWN0KCk7 CisKKwkkcGlkID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKIAkJcXF7U0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkKICAgV0hFUkUgYmFja2VuZF90eXBlID0gJ2NsaWVudCBi YWNrZW5kJwogICAgIEFORCBzdGF0ZSA9ICdzdGFydGluZycKLSAgICBBTkQgd2FpdF9ldmVu dCA9ICdpbml0LXByZS1hdXRoJzt9KTsKLQlsYXN0IGlmICRwaWQgbmUgIiI7CisgICAgQU5E IHdhaXRfZXZlbnQgPSAnaW5pdC1wcmUtYXV0aCc7fSwgMSk7CisJbGFzdCBpZiBkZWZpbmVk ICRwaWQgJiYgJHBpZCBuZSAiIjsKIAogCXVzbGVlcCgxMDBfMDAwKTsKIH0KQEAgLTYyLDI0 ICs2NiwyNCBAQCBub3RlICJiYWNrZW5kICRwaWQgaXMgYXV0aGVudGljYXRpbmciOwogb2so MSwgJ2F1dGhlbnRpY2F0aW5nIGNvbm5lY3Rpb25zIGFyZSByZWNvcmRlZCBpbiBwZ19zdGF0 X2FjdGl2aXR5Jyk7CiAKICMgRGV0YWNoIHRoZSB3YWl0cG9pbnQgYW5kIHdhaXQgZm9yIHRo ZSBjb25uZWN0aW9uIHRvIGNvbXBsZXRlLgotJHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW5pdC1wcmUtYXV0aCcpOyIpOworJHNlc3Npb24t PmRvKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2luaXQtcHJlLWF1dGgnKSIp OwogJGNvbm4tPndhaXRfY29ubmVjdCgpOwogCiAjIE1ha2Ugc3VyZSB0aGUgcGdzdGF0IGVu dHJ5IGlzIHVwZGF0ZWQgZXZlbnR1YWxseS4KIHdoaWxlICgxKQogewogCW15ICRzdGF0ZSA9 Ci0JICAkcHNxbC0+cXVlcnkoIlNFTEVDVCBzdGF0ZSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkg V0hFUkUgcGlkID0gJHBpZDsiKTsKLQlsYXN0IGlmICRzdGF0ZSBlcSAiaWRsZSI7CisJICAk c2Vzc2lvbi0+cXVlcnlfb25ldmFsKCJTRUxFQ1Qgc3RhdGUgRlJPTSBwZ19zdGF0X2FjdGl2 aXR5IFdIRVJFIHBpZCA9ICRwaWQiKTsKKwlsYXN0IGlmIGRlZmluZWQgJHN0YXRlICYmICRz dGF0ZSBlcSAiaWRsZSI7CiAKLQlub3RlICJzdGF0ZSBmb3IgYmFja2VuZCAkcGlkIGlzICck c3RhdGUnOyB3YWl0aW5nIGZvciAnaWRsZScuLi4iOworCW5vdGUgInN0YXRlIGZvciBiYWNr ZW5kICRwaWQgaXMgJyIgLiAoJHN0YXRlIC8vICd1bmRlZicpIC4gIic7IHdhaXRpbmcgZm9y ICdpZGxlJy4uLiI7CiAJdXNsZWVwKDEwMF8wMDApOwogfQogCiBvaygxLCAnYXV0aGVudGlj YXRlZCBjb25uZWN0aW9ucyByZWFjaCBpZGxlIHN0YXRlIGluIHBnX3N0YXRfYWN0aXZpdHkn KTsKIAotJHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnaW5pdC1wcmUtYXV0aCcpOyIpOwotJHBzcWwtPnF1aXQoKTsKLSRjb25uLT5xdWl0KCk7 Ciskc2Vzc2lvbi0+ZG8oIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW5pdC1w cmUtYXV0aCcpIik7Ciskc2Vzc2lvbi0+Y2xvc2UoKTsKKyRjb25uLT5jbG9zZSgpOwogCiBk b25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL3QvMDAxX3NlcnZlci5wbCBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRh dG9yL3QvMDAxX3NlcnZlci5wbAppbmRleCA2YjY0OWMwYjA2Zi4uMDRiOWFjNzI1YjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAxX3NlcnZl ci5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2 ZXIucGwKQEAgLTEyLDYgKzEyLDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog dXNlIEpTT046OlBQICAgICBxdyhlbmNvZGVfanNvbik7CiB1c2UgTUlNRTo6QmFzZTY0IHF3 KGVuY29kZV9iYXNlNjQpOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC01Nyw3ICs1OCw3IEBAICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBVU0VSIHRlc3RhbHQ7Jyk7CiAkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVVNFUiB0ZXN0cGFyYW07Jyk7CiAKICMgU2F2ZSBh IGJhY2tncm91bmQgY29ubmVjdGlvbiBmb3IgbGF0ZXIgY29uZmlndXJhdGlvbiBjaGFuZ2Vz LgotbXkgJGJnY29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Citt eSAkYmdjb25uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCiBteSAkd2Vic2VydmVyID0gT0F1dGg6OlNlcnZlci0+bmV3KCk7CiAkd2Vic2Vy dmVyLT5ydW4oKTsKQEAgLTg2LDExICs4NywxMSBAQCAkbm9kZS0+cmVsb2FkOwogbXkgJGxv Z19zdGFydCA9ICRub2RlLT53YWl0X2Zvcl9sb2cocXIvcmVsb2FkaW5nIGNvbmZpZ3VyYXRp b24gZmlsZXMvKTsKIAogIyBDaGVjayBwZ19oYmFfZmlsZV9ydWxlcygpIHN1cHBvcnQuCi1t eSAkY29udGVudHMgPSAkYmdjb25uLT5xdWVyeV9zYWZlKAorbXkgJGNvbnRlbnRzID0gJGJn Y29ubi0+cXVlcnkoCiAJcXEoU0VMRUNUIHJ1bGVfbnVtYmVyLCBhdXRoX21ldGhvZCwgb3B0 aW9ucwogCQkgRlJPTSBwZ19oYmFfZmlsZV9ydWxlcwogCQkgT1JERVIgQlkgcnVsZV9udW1i ZXI7KSk7Ci1pcyggJGNvbnRlbnRzLAoraXMoICRjb250ZW50cy0+e3BzcWxvdXR9LAogCXFx ezF8b2F1dGh8XHtpc3N1ZXI9JGlzc3Vlciwic2NvcGU9b3BlbmlkIHBvc3RncmVzIix2YWxp ZGF0b3I9dmFsaWRhdG9yXH0KIDJ8b2F1dGh8XHtpc3N1ZXI9JGlzc3Vlci8ud2VsbC1rbm93 bi9vYXV0aC1hdXRob3JpemF0aW9uLXNlcnZlci9hbHRlcm5hdGUsInNjb3BlPW9wZW5pZCBw b3N0Z3JlcyBhbHQiLHZhbGlkYXRvcj12YWxpZGF0b3JcfQogM3xvYXV0aHxce2lzc3Vlcj0k aXNzdWVyL3BhcmFtLCJzY29wZT1vcGVuaWQgcG9zdGdyZXMiLHZhbGlkYXRvcj12YWxpZGF0 b3JcfX0sCkBAIC00NzcsNyArNDc4LDcgQEAgJGNvbW1vbl9jb25uc3RyID0KICAgImRibmFt ZT1wb3N0Z3JlcyBvYXV0aF9pc3N1ZXI9JGlzc3Vlci8ud2VsbC1rbm93bi9vcGVuaWQtY29u ZmlndXJhdGlvbiBvYXV0aF9zY29wZT0nJyBvYXV0aF9jbGllbnRfaWQ9ZjAyYzYzNjEtMDYz NSI7CiAKICMgTWlzYmVoYXZpbmcgdmFsaWRhdG9ycyBtdXN0IGZhaWwgc2h1dC4KLSRiZ2Nv bm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhu X2lkIFRPICcnIik7CiskYmdjb25uLT5kbygiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxp ZGF0b3IuYXV0aG5faWQgVE8gJyciKTsKICRub2RlLT5yZWxvYWQ7CiAkbG9nX3N0YXJ0ID0K ICAgJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxl cy8sICRsb2dfc3RhcnQpOwpAQCAtNDg5LDE0ICs0OTAsMTQgQEAgJG5vZGUtPmNvbm5lY3Rf ZmFpbHMoCiAJbG9nX2xpa2UgPT4gWwogCQlxci9jb25uZWN0aW9uIGF1dGhlbnRpY2F0ZWQ6 IGlkZW50aXR5PSIiLywKIAkJcXIvREVUQUlMOlxzK1ZhbGlkYXRvciBwcm92aWRlZCBubyBp ZGVudGl0eS8sCi0JCXFyL0ZBVEFMOlxzK09BdXRoIGJlYXJlciBhdXRoZW50aWNhdGlvbiBm YWlsZWQvLAorCQlxci9GQVRBTDogKCBbQS1aMC05XSs6KT8gT0F1dGggYmVhcmVyIGF1dGhl bnRpY2F0aW9uIGZhaWxlZC8sCiAJXSk7CiAKICMgRXZlbiBpZiBhIHZhbGlkYXRvciBhdXRo ZW50aWNhdGVzIHRoZSB1c2VyLCBpZiB0aGUgdG9rZW4gaXNuJ3QgY29uc2lkZXJlZAogIyB2 YWxpZCwgdGhlIGNvbm5lY3Rpb24gZmFpbHMuCi0kYmdjb25uLT5xdWVyeV9zYWZlKAorJGJn Y29ubi0+ZG8oCiAJIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lk IFRPICd0ZXN0XEBleGFtcGxlLm9yZyciKTsKLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoCiskYmdj b25uLT5kbygKIAkiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG9yaXpl X3Rva2VucyBUTyBmYWxzZSIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQpAQCAt NTA5LDcgKzUxMCw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCWxvZ19saWtlID0+IFsK IAkJcXIvY29ubmVjdGlvbiBhdXRoZW50aWNhdGVkOiBpZGVudGl0eT0idGVzdFxAZXhhbXBs ZVwub3JnIi8sCiAJCXFyL0RFVEFJTDpccytWYWxpZGF0b3IgZmFpbGVkIHRvIGF1dGhvcml6 ZSB0aGUgcHJvdmlkZWQgdG9rZW4vLAotCQlxci9GQVRBTDpccytPQXV0aCBiZWFyZXIgYXV0 aGVudGljYXRpb24gZmFpbGVkLywKKwkJcXIvRkFUQUw6ICggW0EtWjAtOV0rOik/IE9BdXRo IGJlYXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvLAogCV0pOwogCiAjCkBAIC01MzMsOCAr NTM0LDggQEAgbG9jYWwgYWxsIHRlc3RwYXJhbSBvYXV0aCBpc3N1ZXI9IiRpc3N1ZXIiIHNj b3BlPSIiIGRlbGVnYXRlX2lkZW50X21hcHBpbmc9MQogfSk7CiAKICMgVG8gc3RhcnQsIGhh dmUgdGhlIHZhbGlkYXRvciB1c2UgdGhlIHJvbGUgbmFtZXMgYXMgYXV0aG4gSURzLgotJGJn Y29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5h dXRobl9pZCIpOwotJGJnY29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFJFU0VUIG9h dXRoX3ZhbGlkYXRvci5hdXRob3JpemVfdG9rZW5zIik7CiskYmdjb25uLT5kbygiQUxURVIg U1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5hdXRobl9pZCIpOworJGJnY29ubi0+ZG8o IkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG9yaXplX3Rva2VucyIp OwogCiAkbm9kZS0+cmVsb2FkOwogJGxvZ19zdGFydCA9CkBAIC01NTEsNyArNTUyLDcgQEAg JG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL09BdXRoIGJl YXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvKTsKIAogIyBIYXZlIHRoZSB2YWxpZGF0b3Ig aWRlbnRpZnkgdGhlIGVuZCB1c2VyIGFzIHVzZXJAZXhhbXBsZS5jb20uCi0kYmdjb25uLT5x dWVyeV9zYWZlKAorJGJnY29ubi0+ZG8oCiAJIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFs aWRhdG9yLmF1dGhuX2lkIFRPICd1c2VyXEBleGFtcGxlLmNvbSciKTsKICRub2RlLT5yZWxv YWQ7CiAkbG9nX3N0YXJ0ID0KQEAgLTU3NSw3ICs1NzYsNyBAQCAkbm9kZS0+Y29ubmVjdF9v aygKIAlleHBlY3RlZF9zdGRlcnIgPT4KIAkgIHFyQFZpc2l0IGh0dHBzOi8vZXhhbXBsZVwu Y29tLyBhbmQgZW50ZXIgdGhlIGNvZGU6IHBvc3RncmVzdXNlckApOwogCi0kYmdjb25uLT5x dWVyeV9zYWZlKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lk Iik7CiskYmdjb25uLT5kbygiQUxURVIgU1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5h dXRobl9pZCIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQogICAkbm9kZS0+d2Fp dF9mb3JfbG9nKHFyL3JlbG9hZGluZyBjb25maWd1cmF0aW9uIGZpbGVzLywgJGxvZ19zdGFy dCk7CkBAIC02MjAsNyArNjIxLDcgQEAgJHVzZXIgPSAidGVzdGFsdCI7CiAkbm9kZS0+Y29u bmVjdF9mYWlscygKIAkidXNlcj0kdXNlciBkYm5hbWU9cG9zdGdyZXMgb2F1dGhfaXNzdWVy PSRpc3N1ZXIvLndlbGwta25vd24vb2F1dGgtYXV0aG9yaXphdGlvbi1zZXJ2ZXIvYWx0ZXJu YXRlIG9hdXRoX2NsaWVudF9pZD1mMDJjNjM2MS0wNjM2IiwKIAkiZmFpbF92YWxpZGF0b3Ig aXMgdXNlZCBmb3IgJHVzZXIiLAotCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9GQVRBTDpccytm YWlsX3ZhbGlkYXRvcjogc2VudGluZWwgZXJyb3IvKTsKKwlleHBlY3RlZF9zdGRlcnIgPT4g cXIvRkFUQUw6ICggW0EtWjAtOV0rOik/IGZhaWxfdmFsaWRhdG9yOiBzZW50aW5lbCBlcnJv ci8pOwogCiAjCiAjIFRlc3QgQUJJIGNvbXBhdGliaWxpdHkgbWFnaWMgbWFya2VyCkBAIC02 NDAsNyArNjQxLDcgQEAgJG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJInVzZXI9dGVzdCBkYm5h bWU9cG9zdGdyZXMgb2F1dGhfaXNzdWVyPSRpc3N1ZXIvLndlbGwta25vd24vb2F1dGgtYXV0 aG9yaXphdGlvbi1zZXJ2ZXIvYWx0ZXJuYXRlIG9hdXRoX2NsaWVudF9pZD1mMDJjNjM2MS0w NjM2IiwKIAkibWFnaWNfdmFsaWRhdG9yIGlzIHVzZWQgZm9yICR1c2VyIiwKIAlleHBlY3Rl ZF9zdGRlcnIgPT4KLQkgIHFyL0ZBVEFMOlxzK09BdXRoIHZhbGlkYXRvciBtb2R1bGUgIm1h Z2ljX3ZhbGlkYXRvciI6IG1hZ2ljIG51bWJlciBtaXNtYXRjaC8KKwkgIHFyL0ZBVEFMOiAo IFtBLVowLTldKzopPyBPQXV0aCB2YWxpZGF0b3IgbW9kdWxlICJtYWdpY192YWxpZGF0b3Ii OiBtYWdpYyBudW1iZXIgbWlzbWF0Y2gvCiApOwogJG5vZGUtPnN0b3A7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdC8wMDFfYWlvLnBsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2Fpby90LzAwMV9haW8ucGwKaW5kZXggNWM2MzRlYzNjYTkuLjM4MTc3 ODg2MzAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fp by5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fpby5wbApAQCAt NCw2ICs0LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK IAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpN b3JlOwogCkBAIC0xMzIsMTkgKzEzMywxOSBAQCBzdWIgcHNxbF9saWtlCiB7CiAJbG9jYWwg JFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKIAlt eSAkaW9fbWV0aG9kID0gc2hpZnQ7Ci0JbXkgJHBzcWwgPSBzaGlmdDsKKwlteSAkc2Vzc2lv biA9IHNoaWZ0OwogCW15ICRuYW1lID0gc2hpZnQ7CiAJbXkgJHNxbCA9IHNoaWZ0OwogCW15 ICRleHBlY3RlZF9zdGRvdXQgPSBzaGlmdDsKIAlteSAkZXhwZWN0ZWRfc3RkZXJyID0gc2hp ZnQ7Ci0JbXkgKCRjbWRyZXQsICRvdXRwdXQpOwogCi0JKCRvdXRwdXQsICRjbWRyZXQpID0g JHBzcWwtPnF1ZXJ5KCRzcWwpOworCW15ICRyZXMgPSAkc2Vzc2lvbi0+cXVlcnkoJHNxbCk7 CisJbXkgJG91dHB1dCA9ICRyZXMtPntwc3Fsb3V0fTsKIAogCWxpa2UoJG91dHB1dCwgJGV4 cGVjdGVkX3N0ZG91dCwgIiRpb19tZXRob2Q6ICRuYW1lOiBleHBlY3RlZCBzdGRvdXQiKTsK LQlsaWtlKCRwc3FsLT57c3RkZXJyfSwgJGV4cGVjdGVkX3N0ZGVyciwKKwlsaWtlKCRzZXNz aW9uLT5nZXRfc3RkZXJyKCksICRleHBlY3RlZF9zdGRlcnIsCiAJCSIkaW9fbWV0aG9kOiAk bmFtZTogZXhwZWN0ZWQgc3RkZXJyIik7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHNl c3Npb24tPmNsZWFyX3N0ZGVycigpOwogCiAJcmV0dXJuICRvdXRwdXQ7CiB9CkBAIC0xNTQs MTUgKzE1NSwxNCBAQCBzdWIgcXVlcnlfd2FpdF9ibG9jawogCWxvY2FsICRUZXN0OjpCdWls ZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7CiAJbXkgJGlvX21ldGhv ZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7Ci0JbXkgJHBzcWwgPSBzaGlmdDsKKwlt eSAkc2Vzc2lvbiA9IHNoaWZ0OwogCW15ICRuYW1lID0gc2hpZnQ7CiAJbXkgJHNxbCA9IHNo aWZ0OwogCW15ICR3YWl0Zm9yID0gc2hpZnQ7CiAKLQlteSAkcGlkID0gJHBzcWwtPnF1ZXJ5 X3NhZmUoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisJbXkgJHBpZCA9ICRzZXNzaW9u LT5iYWNrZW5kX3BpZCgpOwogCi0JJHBzcWwtPntzdGRpbn0gLj0gcXEoJHNxbDtcbik7Ci0J JHBzcWwtPntydW59LT5wdW1wX25iKCk7CisJJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpOwog CW9rKDEsICIkaW9fbWV0aG9kOiAkbmFtZTogaXNzdWVkIHNxbCIpOwogCiAJJG5vZGUtPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKQEAgLTIxNyw3ICsyMTcsNyBAQCBzdWIgdGVz dF9oYW5kbGUKIAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsK IAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBsZWFrIHdhcm5pbmc6IGltcGxpY2l0IHhh Y3QKIAlwc3FsX2xpa2UoCkBAIC0zMjMsNyArMzIzLDcgQEAgc3ViIHRlc3RfYmF0Y2htb2Rl CiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAk cHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3Rv cCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAogCSMgSW4gYSBidWlsZCB3aXRoIFJFTENBQ0hFX0ZPUkNFX1JF TEVBU0UgYW5kIENBVENBQ0hFX0ZPUkNFX1JFTEVBU0UsIGp1c3QKIAkjIHVzaW5nIFNFTEVD VCBiYXRjaF9zdGFydCgpIGNhdXNlcyBzcHVyaW91cyB0ZXN0IGZhaWx1cmVzLCBiZWNhdXNl IHRoZQpAQCAtMzgzLDcgKzM4Myw3IEBAIHN1YiB0ZXN0X2lvX2Vycm9yCiAJbXkgJG5vZGUg PSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAogCSRwc3FsLT5xdWVyeV9zYWZlKAogCQlxcSgKQEAgLTQzNSw4ICs0MzUsOCBAQCBzdWIg dGVzdF9zdGFydHdhaXRfaW8KIAlteSAkbm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0 cHV0KTsKIAotCW15ICRwc3FsX2EgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYiA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9h ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworCW15 ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZSk7CiAKIAogCSMjIyBWZXJpZnkgYmVoYXZpb3IgZm9yIG5vcm1hbCB0YWJsZXMKQEAgLTQ5 NCw3ICs0OTQsNyBAQCBzdWIgdGVzdF9zdGFydHdhaXRfaW8KIAogCiAJIyBCZWNhdXNlIHRo ZSBJTyB3YXMgdGVybWluYXRlZCwgYnV0IG5vdCBtYXJrZWQgYXMgdmFsaWQsIHNlY29uZCBz ZXNzaW9uIHNob3VsZCBnZXQgdGhlIHJpZ2h0IHRvIHN0YXJ0IGlvCi0JcHVtcF91bnRpbCgk cHNxbF9iLT57cnVufSwgJHBzcWxfYi0+e3RpbWVvdXR9LCBcJHBzcWxfYi0+e3N0ZG91dH0s IHFyL3QvKTsKKwkkcHNxbF9iLT53YWl0X2Zvcl9hc3luY19wYXR0ZXJuKHFyL3QvKTsKIAlv aygxLCAiJGlvX21ldGhvZDogYmxvY2tpbmcgc3RhcnQgYnVmZmVyIGlvLCBjYW4gc3RhcnQg aW8iKTsKIAogCSMgdGVybWluYXRlIHRoZSBJTyBhZ2FpbgpAQCAtNTMxLDcgKzUzMSw3IEBA IHN1YiB0ZXN0X3N0YXJ0d2FpdF9pbwogCQlxci9eJC8pOwogCiAJIyBCZWNhdXNlIHRoZSBJ TyB3YXMgdGVybWluYXRlZCwgYW5kIG1hcmtlZCBhcyB2YWxpZCwgc2Vjb25kIHNlc3Npb24g c2hvdWxkIGNvbXBsZXRlIGJ1dCBub3QgbmVlZCBpbwotCXB1bXBfdW50aWwoJHBzcWxfYi0+ e3J1bn0sICRwc3FsX2ItPnt0aW1lb3V0fSwgXCRwc3FsX2ItPntzdGRvdXR9LCBxci9mLyk7 CisJJHBzcWxfYi0+d2FpdF9mb3JfYXN5bmNfcGF0dGVybihxci9mLyk7CiAJb2soMSwgIiRp b19tZXRob2Q6IGJsb2NraW5nIHN0YXJ0IGJ1ZmZlciBpbywgbm8gbmVlZCB0byBzdGFydCBp byIpOwogCiAJIyBidWZmZXIgaXMgdmFsaWQgbm93LCBtYWtlIGl0IGludmFsaWQgYWdhaW4K QEAgLTYxMCw4ICs2MTAsOCBAQCBzdWIgdGVzdF9jb21wbGV0ZV9mb3JlaWduCiAJbXkgJG5v ZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbF9hID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwot CW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKwlteSAkcHNxbF9iID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBJc3N1ZSBJTyB3aXRob3V0 IHdhaXRpbmcgZm9yIGNvbXBsZXRpb24sIHRoZW4gc2xlZXAKIAkkcHNxbF9hLT5xdWVyeV9z YWZlKApAQCAtNjgwLDcgKzY4MCw3IEBAIHN1YiB0ZXN0X2Nsb3NlX2ZkCiAJbXkgJG5vZGUg PSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAogCXBzcWxfbGlrZSgKIAkJJGlvX21ldGhvZCwKQEAgLTczMCw3ICs3MzAsNyBAQCBzdWIg dGVzdF9pbmplY3QKIAlteSAkbm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0cHV0KTsK IAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBpbmplY3RlZCB3aGF0IHdlJ2QgZXhwZWN0 CiAJJHBzcWwtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIGlual9pb19zaG9ydF9yZWFkX2F0dGFj aCg4MTkyKTspKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCBzdWIgdGVzdF9pbmplY3Rfd29ya2Vy CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNx bCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKIAogCSMgdHJpZ2dlciBhIGZhaWx1cmUgdG8gcmVvcGVuLCBzaG91bGQg ZXJyb3Igb3V0LCBidXQgc2hvdWxkIHJlY292ZXIKIAkkcHNxbC0+cXVlcnlfc2FmZSgKQEAg LTkwMSw3ICs5MDEsNyBAQCBzdWIgdGVzdF9pbnZhbGlkYXRlCiAJbXkgJGlvX21ldGhvZCA9 IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNx bCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAog CWZvcmVhY2ggbXkgJHBlcnNpc3RlbmN5IChxdyhub3JtYWwgdW5sb2dnZWQgdGVtcG9yYXJ5 KSkKIAl7CkBAIC05NTksOCArOTU5LDggQEAgc3ViIHRlc3RfemVybwogCW15ICRpb19tZXRo b2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWxfYSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQlt eSAkcHNxbF9iID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJv cl9zdG9wID0+IDApOworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSk7CisJbXkgJHBzcWxfYiA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCWZvcmVhY2ggbXkgJHBlcnNpc3Rl bmN5IChxdyhub3JtYWwgdGVtcG9yYXJ5KSkKIAl7CkBAIC05ODUsNyArOTg1LDcgQEAgU0VM RUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF96ZXJvJywgMCwgY29ycnVwdF9oZWFkZXI9PnRy dWUpOwogCQkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwg emVyb19vbl9lcnJvcj0+ZmFsc2UpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRp bj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAwIG9mIHJlbGF0aW9uICJi YXNlXC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICBp bnZhbGlkIHBhZ2UgaW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8KIAkJ KTsKIAogCQkjIENoZWNrIHRoYXQgcGFnZSB2YWxpZGl0eSBlcnJvcnMgYXJlIHplcm9lZApA QCAtOTk2LDcgKzk5Niw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8n LCAwLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSkpLAogCQkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxf YmxvY2tfbGwoJ3RibF96ZXJvJywgMCwgemVyb19vbl9lcnJvcj0+dHJ1ZSkpLAogCQkJcXIv XiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBhZ2Ug aW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQgcGFn ZSQvCisJCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxpZCBw YWdlIGluIGJsb2NrIDAgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0 IHBhZ2UkLwogCQkpOwogCiAJCSMgQW5kIHRoYXQgb25jZSB0aGUgY29ycnVwdGlvbiBpcyBm aXhlZCwgd2UgY2FuIHJlYWQgYWdhaW4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIFNFTEVDVCBy ZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8nLCAwLCB6ZXJvX29uX2Vycm9yPT50cnVlKSks CiAJCQlxcSgKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDAsIHplcm89 PnRydWUpOwogKSk7Ci0JCSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJCSRwc3FsX2EtPmNs ZWFyX3N0ZGVycigpOwogCiAJCXBzcWxfbGlrZSgKIAkJCSRpb19tZXRob2QsCkBAIC0xMDI3 LDcgKzEwMjcsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBj b3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHplcm9pbmcg b2YgaW52YWxpZCBibG9jayAzIiwKIAkJCXFxKFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgn dGJsX3plcm8nLCAzLCB6ZXJvX29uX2Vycm9yPT50cnVlKTspLAogCQkJcXIvXiQvLAotCQkJ cXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sg MyBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQgcGFnZSQvCisJCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxpZCBwYWdlIGluIGJs b2NrIDMgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UkLwog CQkpOwogCiAKQEAgLTEwNDQsNyArMTA0NCw3IEBAIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2Nr KCd0YmxfemVybycsIDMsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJCSIkcGVyc2lzdGVu Y3k6IHRlc3QgcmVhZGluZyBvZiBpbnZhbGlkIGJsb2NrIDIsMyBpbiBsYXJnZXIgcmVhZCIs CiAJCQlxcShTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMSwgbmJsb2Nr cz0+NCwgemVyb19vbl9lcnJvcj0+ZmFsc2UpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3Fs OjxzdGRpbj46XGQrOiBFUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4u NCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhl IGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCisJCQlxci9eKD86cHNxbDo8 c3RkaW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4u NCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhl IGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJIyBUaGVu IHRlc3QgemVyb2luZyB2aWEgWkVST19PTl9FUlJPUiBmbGFnCkBAIC0xMDU0LDcgKzEwNTQs NyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBjb3JydXB0X2hl YWRlcj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHplcm9pbmcgb2YgaW52YWxp ZCBibG9jayAyLDMgaW4gbGFyZ2VyIHJlYWQsIFpFUk9fT05fRVJST1IiLAogCQkJcXEoU0VM RUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVybycsIDEsIG5ibG9ja3M9PjQsIHplcm9f b25fZXJyb3I9PnRydWUpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRpbj46XGQr OiBXQVJOSU5HOiAgemVyb2luZyBvdXQgMiBpbnZhbGlkIHBhZ2VzIGFtb25nIGJsb2NrcyAx Li40IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLipcbkRFVEFJTDogIEJsb2NrIDIgaGVsZCB0 aGUgZmlyc3QgemVyb2VkIHBhZ2VcLlxuSElOVDpbXlxuXSskLworCQkJcXIvXig/OnBzcWw6 PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIHplcm9pbmcgb3V0IDIgaW52YWxpZCBwYWdlcyBh bW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBC bG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdlXC5cbkhJTlQ6W15cbl0rJC8KIAkJ KTsKIAogCQkjIFRoZW4gdGVzdCB6ZXJvaW5nIHZpYSB6ZXJvX2RhbWFnZWRfcGFnZXMKQEAg LTEwNjksNyArMTA2OSw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8n LCAxLCBuYmxvY2tzPT40LCB6ZXJvX29uX2Vycm9yPT5mYWxzZSkKIENPTU1JVDsKICksCiAJ CQlxci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcg b3V0IDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFz ZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdl XC5cbkhJTlQ6W15cbl0rJC8KKwkJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5J Tkc6ICB6ZXJvaW5nIG91dCAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2Yg cmVsYXRpb24gImJhc2VcLy4qXC8uKlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJz dCB6ZXJvZWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJJHBzcWxfYS0+cXVl cnlfc2FmZShxcShDT01NSVQpKTsKQEAgLTEwODIsNyArMTA4Miw3IEBAIFNFTEVDVCBpbnZh bGlkYXRlX3JlbF9ibG9jaygndGJsX3plcm8nLCBnLmkpCiBGUk9NIGdlbmVyYXRlX3Nlcmll cygwLCAxNSkgZyhpKTsKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDMs IHplcm89PnRydWUpOwogKSk7Ci0JCSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJCSRwc3Fs X2EtPmNsZWFyX3N0ZGVycigpOwogCiAJCXBzcWxfbGlrZSgKIAkJCSRpb19tZXRob2QsCkBA IC0xMDkxLDcgKzEwOTEsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8n LCAzLCB6ZXJvPT50cnVlKTsKIAkJCXFxKAogU0VMRUNUIGNvdW50KCopIEZST00gdGJsX3pl cm8pLAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IEVSUk9SOiAgaW52 YWxpZCBwYWdlIGluIGJsb2NrIDIgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiQvCisJCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9j ayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLwogCQkpOwogCiAJCSMgVmVyaWZ5IHRo YXQgYnVmbWdyLmMgSU8gemVyb2VzIG91dCBwYWdlcyB3aXRoIHBhZ2UgdmFsaWRpdHkgZXJy b3JzCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0YmxfemVy bzsKIENPTU1JVDsKICksCiAJCQlxci9eXGQrJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+Olxk KzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNl XC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIGlu dmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLwogCQkp OwogCiAJCSMgQ2hlY2sgdGhhdCB3YXJuaW5ncy9lcnJvcnMgYWJvdXQgcGFnZSB2YWxpZGl0 eSBpbiBhbiBJTyBzdGFydGVkIGJ5CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBEUk9QIFRBQkxF IHRibF96ZXJvOwogKSk7CiAJfQogCi0JJHBzcWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkkcHNx bF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3FsX2EtPnF1aXQoKTsKIAkkcHNxbF9iLT5x dWl0KCk7CkBAIC0xMTU3LDE5ICsxMTU3LDE3IEBAIHN1YiB0ZXN0X2NoZWNrc3VtCiAJbXkg JGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9h ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZSk7CiAKLQkkcHNxbF9hLT5xdWVyeV9zYWZlKAotCQlxcSgKLUNSRUFURSBU QUJMRSB0Ymxfbm9ybWFsKGlkIGludCkgV0lUSCAoQVVUT1ZBQ1VVTV9FTkFCTEVEID0gZmFs c2UpOwotSU5TRVJUIElOVE8gdGJsX25vcm1hbCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApOwotU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBjb3Jy dXB0X2NoZWNrc3VtPT50cnVlKTsKLQotQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0YmxfdGVt cChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKTsKLUlOU0VSVCBJ TlRPIHRibF90ZW1wIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCk7Ci1TRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygndGJsX3RlbXAnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVl KTsKLVNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hl Y2tzdW09PnRydWUpOwotKSk7CisJIyBTcGxpdCBtdWx0aS1zdGF0ZW1lbnQgcXVlcnkgaW50 byBzZXBhcmF0ZSBjYWxscyB0byBtYXRjaCBwc3FsIGJlaGF2aW9yCisJIyB3aGVyZSBlcnJv cnMgaW4gb25lIHN0YXRlbWVudCBkb24ndCBwcmV2ZW50IHN1YnNlcXVlbnQgc3RhdGVtZW50 cworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwoaWQg aW50KSBXSVRIIChBVVRPVkFDVVVNX0VOQUJMRUQgPSBmYWxzZSkpKTsKKwkkcHNxbF9hLT5x dWVyeV9zYWZlKHFxKElOU0VSVCBJTlRPIHRibF9ub3JtYWwgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIG1vZGlm eV9yZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKSkp OworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0Ymxf dGVtcChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKSkpOworCSRw c3FsX2EtPnF1ZXJ5X3NhZmUocXEoSU5TRVJUIElOVE8gdGJsX3RlbXAgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNU IG1vZGlmeV9yZWxfYmxvY2soJ3RibF90ZW1wJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1 ZSkpKTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2Nr KCd0YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hlY2tzdW09PnRydWUpKSk7CiAKIAkjIFRvIGJl IGFibGUgdG8gdGVzdCBjaGVja3N1bSBmYWlsdXJlcyBvbiBzaGFyZWQgcmVscyB3ZSBuZWVk IGEgc2hhcmVkIHJlbAogCSMgd2l0aCBpbnZhbGlkIHBhZ2VzIC0gd2hpY2ggaXMgYSBiaXQg c2NhcnkuIHBnX3Noc2VjbGFiZWwgc2VlbXMgbGlrZSBhCkBAIC0xMTkyLDcgKzExOTAsNyBA QCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJlbCcsIDMsIGNvcnJ1cHRf Y2hlY2tzdW09PnRydWUpOwogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJs X25vcm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAogCQlx ci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBp biBibG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNx bDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJl bGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAKIAlteSAoJGNzX2NvdW50X2FmdGVy LCAkY3NfdHNfYWZ0ZXIpID0KQEAgLTEyMTQsNyArMTIxMiw3IEBAIFNFTEVDVCByZWFkX3Jl bF9ibG9ja19sbCgndGJsX25vcm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9 PmZhbHNlKTspLAogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3RlbXAn LCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAot CQlxci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sg NCBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC90XGQrX1xkKyIkLworCQlxci9eKD86cHNxbDo8 c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0IG9mIHJlbGF0 aW9uICJiYXNlXC9cZCtcL3RcZCtfXGQrIiQvCiAJKTsKIAogCSgkY3NfY291bnRfYWZ0ZXIs ICRjc190c19hZnRlcikgPSBjaGVja3N1bV9mYWlsdXJlcygkcHNxbF9hLCAncG9zdGdyZXMn KTsKQEAgLTEyMzUsNyArMTIzMyw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJs X3RlbXAnLCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEo CiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3BnX3Noc2VjbGFiZWwnLCAyLCBuYmxvY2tz PT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8 c3RkaW4+OlxkKzogRVJST1I6ICAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDIuLjMg b2YgcmVsYXRpb24gImdsb2JhbFwvXGQrIlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBm aXJzdCBpbnZhbGlkIHBhZ2VcLlxuSElOVDpbXlxuXSskLworCQlxci9eKD86cHNxbDo8c3Rk aW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMi4uMyBv ZiByZWxhdGlvbiAiZ2xvYmFsXC9cZCsiXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZp cnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJKTsKIAogCSgkY3NfY291bnRf YWZ0ZXIsICRjc190c19hZnRlcikgPSBjaGVja3N1bV9mYWlsdXJlcygkcHNxbF9hKTsKQEAg LTEyNTMsNyArMTI1MSw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgncGdfc2hzZWNs YWJlbCcsIDIsIG5ibG9ja3M9PjIsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspCiBTRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJlbCcsIDEsIHplcm89PnRydWUpOwogRFJP UCBUQUJMRSB0Ymxfbm9ybWFsOwogKSk7Ci0JJHBzcWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkk cHNxbF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3FsX2EtPnF1aXQoKTsKIH0KQEAgLTEy NjYsNyArMTI2NCw3IEBAIHN1YiB0ZXN0X2NoZWNrc3VtX2NyZWF0ZWRiCiAJbXkgJGlvX21l dGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlt eSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKIAogCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ0NSRUFURSBEQVRBQkFT RSByZWdyZXNzaW9uX2NyZWF0ZWRiX3NvdXJjZScpOwpAQCAtMTMwMCw3ICsxMjk4LDcgQEAg U1RSQVRFR1kgd2FsX2xvZzsKIAkJImNyZWF0ZSBkYXRhYmFzZSB3LyB3YWwgc3RyYXRlZ3ks IGludmFsaWQgc291cmNlIiwKIAkJJGNyZWF0ZWRiX3NxbCwKIAkJcXIvXiQvLAotCQlxci9w c3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAxIG9mIHJl bGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzog KT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAxIG9mIHJlbGF0aW9uICJiYXNlXC9c ZCtcL1xkKyIkLwogCSk7CiAJbXkgKCRjc19jb3VudF9hZnRlciwgJGNzX3RzX2FmdGVyKSA9 CiAJICBjaGVja3N1bV9mYWlsdXJlcygkcHNxbCwgJ3JlZ3Jlc3Npb25fY3JlYXRlZGJfc291 cmNlJyk7CkBAIC0xMzI5LDcgKzEzMjcsNyBAQCBzdWIgdGVzdF9pZ25vcmVfY2hlY2tzdW0K IAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAotCW15ICRw c3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9w ID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGUgPT4gJG5vZGUpOwogCiAJIyBUZXN0IHNldHVwCiAJJHBzcWwtPnF1ZXJ5X3NhZmUoCkBA IC0xMzk0LDcgKzEzOTIsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2NzX2Zh aWwnLCA0LCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCXFxKAogU0VMRUNUIHJlYWRfcmVs X2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9 PmZhbHNlKTspLAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBXQVJOSU5H OiAgaWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBpbiBibG9jayAzLworCQlxci9eKD86cHNx bDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBp biBibG9jayAzLwogCSk7CiAKIAkjIENoZWNrIHRoYXQgdGhlIGxvZyBjb250YWlucyBhIExP RyBtZXNzYWdlIGFib3V0IHRoZSBmYWlsdXJlCkBAIC0xNDA5LDcgKzE0MDcsNyBAQCBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVy b19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xs KCd0YmxfY3NfZmFpbCcsIDIsIG5ibG9ja3M9PjMsIHplcm9fb25fZXJyb3I9PmZhbHNlKTsp LAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQg cGFnZSBpbiBibG9jayA0IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9e KD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0 IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAKIAkjIFRlc3QgbXVsdGkt YmxvY2sgcmVhZCB3aXRoIGRpZmZlcmVudCBwcm9ibGVtcyBpbiBkaWZmZXJlbnQgYmxvY2tz CkBAIC0xNDIxLDcgKzE0MTksNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2Nz X2ZhaWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlLCBjb3JydXB0X2hlYWRlcgogU0VM RUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNCwgY29ycnVwdF9oZWFkZXI9 PnRydWUpOwogU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNSwgY29y cnVwdF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHBz cWwtPmNsZWFyX3N0ZGVycigpOwogCiAJJGxvZ19sb2NhdGlvbiA9IC1zICRub2RlLT5sb2dm aWxlOwogCXBzcWxfbGlrZSgKQEAgLTE0MzEsNyArMTQyOSw3IEBAIFNFTEVDVCBtb2RpZnlf cmVsX2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDUsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJ cXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMSwgbmJsb2Nr cz0+NSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8 c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcgMyBwYWdlXChzXCkgYW5kIGlnbm9yaW5n IDIgY2hlY2tzdW0gZmFpbHVyZVwoc1wpIGFtb25nIGJsb2NrcyAxLi41IG9mIHJlbGF0aW9u ICIvCisJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICB6ZXJvaW5nIDMg cGFnZVwoc1wpIGFuZCBpZ25vcmluZyAyIGNoZWNrc3VtIGZhaWx1cmVcKHNcKSBhbW9uZyBi bG9ja3MgMS4uNSBvZiByZWxhdGlvbiAiLwogCSk7CiAKIApAQCAtMTQ2NCw3ICsxNDYyLDcg QEAgU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDEsIG5ibG9ja3M9 PjUsIHplcm9fb25fZXJyb3I9PnRydWUpOyksCiAJCXFxKAogU0VMRUNUIG1vZGlmeV9yZWxf YmxvY2soJ3RibF9jc19mYWlsJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVw dF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWwt PmNsZWFyX3N0ZGVycigpOwogCiAJcHNxbF9saWtlKAogCQkkaW9fbWV0aG9kLApAQCAtMTQ3 Myw3ICsxNDcxLDcgQEAgU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywg MywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVwdF9oZWFkZXIKIAkJcXEoCiBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVy b19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpc ZCs6IEVSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDMgb2YgcmVsYXRpb24gIi8pOwor CQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBi bG9jayAzIG9mIHJlbGF0aW9uICIvKTsKIAogCXBzcWxfbGlrZSgKIAkJJGlvX21ldGhvZCwK QEAgLTE0ODIsNyArMTQ4MCw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX2Nz X2ZhaWwnLCAzLCBuYmxvY2tzPT4xLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEo CiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+ MSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3Rk aW4+OlxkKzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9u ICJiYXNlXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UvCisJCXFyL14oPzpwc3FsOjxzdGRpbj46 XGQrOiApP1dBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAi YmFzZVwvLioiOyB6ZXJvaW5nIG91dCBwYWdlLwogCSk7CiAKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDVfdGltZW91dHMucGwgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAwNV90aW1lb3V0cy5wbAppbmRleCBjMTZiN2RiZjVlNi4u ZDY0YTc4N2E5YWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3Qv MDA1X3RpbWVvdXRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1 X3RpbWVvdXRzLnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CiB1c2UgbG9jYWxlOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAg LTQyLDI0ICs0MywxNiBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Jyk7CiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndHJhbnNhY3Rpb24t dGltZW91dCcsICd3YWl0Jyk7Iik7CiAKLW15ICRwc3FsX3Nlc3Npb24gPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxfc2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotIyBUaGUgZm9sbG93 aW5nIHF1ZXJ5IHdpbGwgZ2VuZXJhdGUgYSBzdHJlYW0gb2YgU0VMRUNUIDEgcXVlcmllcy4g VGhpcyBpcyBkb25lCi0jIHNvIHRvIGV4ZXJjaXNlIHRyYW5zYWN0aW9uIHRpbWVvdXQgaW4g dGhlIHByZXNlbmNlIG9mIHNob3J0IHF1ZXJpZXMuCi0jIE5vdGU6IHRoZSBpbnRlcnZhbCB2 YWx1ZSBpcyBwYXJzZWQgd2l0aCBsb2NhbGUtYXdhcmUgc3RydG9kKCkKLSRwc3FsX3Nlc3Np b24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2JnX3BzcWwvLAotCXNwcmludGYoCi0J CXEoXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAotCQlTRVQgdHJhbnNhY3Rpb25fdGltZW91dCB0 byAnMTBtcyc7Ci0JCUJFR0lOOwotCQlTRUxFQ1QgMSBcd2F0Y2ggJWcKLQkJXHEKLSksIDAu MDAxKSk7CiskcHNxbF9zZXNzaW9uLT5kbygiU0VUIHRyYW5zYWN0aW9uX3RpbWVvdXQgdG8g JzEwbXMnOyIpOworCiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygiQkVHSU47IERPICcgYmVn aW4gbG9vcCBQRVJGT1JNIHBnX3NsZWVwKDAuMDAxKTsgZW5kIGxvb3A7IGVuZCAnOyIpOwog CiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1lb3V0IGluamVjdGlv biBwb2ludC4gV2lsbCBnZXQgYW4gZXJyb3IKICMgaGVyZSBpZiBhbnl0aGluZyBnb2VzIHdy b25nLgogJG5vZGUtPndhaXRfZm9yX2V2ZW50KCdjbGllbnQgYmFja2VuZCcsICd0cmFuc2Fj dGlvbi10aW1lb3V0Jyk7CitwYXNzKCJnb3QgdHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIp OwogCiBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCkBAIC03MCwxMSAr NjMsOSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhl IHRpbWVvdXQgd2FzIGxvZ2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coJ3Rlcm1pbmF0aW5n IGNvbm5lY3Rpb24gZHVlIHRvIHRyYW5zYWN0aW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0 KTsKK3Bhc3MoImdvdCB0cmFuc2FjdGlvbiB0aW1lb3V0IGxvZyIpOwogCi0jIElmIHdlIHNl bmQgXHEgd2l0aCAkcHNxbF9zZXNzaW9uLT5xdWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50 IHRvIHRoZSBzZXNzaW9uCi0jIGFscmVhZHkgY2xvc2VkLiBTbyBccSBpcyBpbiBpbml0aWFs IHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlzaCBJUEM6OlJ1bi4KLSRwc3FsX3Nlc3Npb24t PntydW59LT5maW5pc2g7Ci0KKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiAjCiAjIDIuIFRl c3Qgb2YgdGhlIGlkbGUgaW4gdHJhbnNhY3Rpb24gdGltZW91dApAQCAtODUsMTAgKzc2LDgg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogKTsKIAogIyBXZSBiZWdpbiBhIHRy YW5zYWN0aW9uIGFuZCB0aGUgaGFuZCBvbiB0aGUgbGluZQotJHBzcWxfc2Vzc2lvbiA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVy eV91bnRpbCgKLQlxci9zdGFydGluZ19iZ19wc3FsLywgcSgKLSAgIFxlY2hvIHN0YXJ0aW5n X2JnX3BzcWwKKyRwc3FsX3Nlc3Npb24tPnJlY29ubmVjdDsKKyRwc3FsX3Nlc3Npb24tPmRv KHEoCiAgICBTRVQgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQgdG8gJzEw bXMnOwogICAgQkVHSU47CiApKTsKQEAgLTk2LDYgKzg1LDcgQEAgJHBzcWxfc2Vzc2lvbi0+ cXVlcnlfdW50aWwoCiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1l b3V0IGluamVjdGlvbiBwb2ludC4KICRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJh Y2tlbmQnLAogCSdpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24tdGltZW91dCcpOworcGFz cygiZ290IGlkbGUgaW4gdHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIpOwogCiAkbG9nX29m ZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCkBAIC0xMDYsOCArOTYsOSBAQCAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhlIHRpbWVvdXQgd2FzIGxv Z2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coCiAJJ3Rlcm1pbmF0aW5nIGNvbm5lY3Rpb24g ZHVlIHRvIGlkbGUtaW4tdHJhbnNhY3Rpb24gdGltZW91dCcsICRsb2dfb2Zmc2V0KTsKK3Bh c3MoImdvdCBpZGxlIGluIHRyYW5zYWN0aW9uIHRpbWVvdXQgbG9nIik7CiAKLW9rKCRwc3Fs X3Nlc3Npb24tPnF1aXQpOworJHBzcWxfc2Vzc2lvbi0+Y2xvc2U7CiAKIAogIwpAQCAtMTE3 LDE1ICsxMDgsMTQgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2lkbGUtc2Vzc2lvbi10aW1lb3V0JywgJ3dhaXQn KTsiKTsKIAogIyBXZSBqdXN0IGluaXRpYWxpemUgdGhlIEdVQyBhbmQgd2FpdC4gTm8gdHJh bnNhY3Rpb24gaXMgcmVxdWlyZWQuCi0kcHNxbF9zZXNzaW9uID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFy L3N0YXJ0aW5nX2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAorJHBz cWxfc2Vzc2lvbi0+cmVjb25uZWN0OworJHBzcWxfc2Vzc2lvbi0+ZG8ocSgKICAgIFNFVCBp ZGxlX3Nlc3Npb25fdGltZW91dCB0byAnMTBtcyc7CiApKTsKIAogIyBXYWl0IHVudGlsIHRo ZSBiYWNrZW5kIGVudGVycyB0aGUgdGltZW91dCBpbmplY3Rpb24gcG9pbnQuCiAkbm9kZS0+ d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5kJywgJ2lkbGUtc2Vzc2lvbi10aW1lb3V0 Jyk7CitwYXNzKCJnb3QgaWRsZSBzZXNzaW9uIHRpbWVvdXQgZXZlbnQiKTsKIAogJGxvZ19v ZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIApAQCAtMTM2LDcgKzEyNiw4IEBAICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICMgQ2hlY2sgdGhhdCB0aGUgdGltZW91dCB3YXMg bG9nZ2VkLgogJG5vZGUtPndhaXRfZm9yX2xvZygndGVybWluYXRpbmcgY29ubmVjdGlvbiBk dWUgdG8gaWRsZS1zZXNzaW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0KTsKK3Bhc3MoImdv dCBpZGxlIHNlc2lvbiB0aWVtb3V0IGxvZyIpOwogCi1vaygkcHNxbF9zZXNzaW9uLT5xdWl0 KTsKKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA3X2NhdGNhY2hlX2ludmFsLnBs IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwK aW5kZXggNDI0NTU2MjYxYzkuLmUzYjNmZDhiYWU5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNoZV9pbnZhbC5wbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNoZV9pbnZhbC5wbApAQCAtNDYsMTIg KzQ2LDEyIEBAICRub2RlLT5zYWZlX3BzcWwoCiAgICAgQ1JFQVRFIEZVTkNUSU9OIGZvb2Z1 bmMoZHVtbXkgaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTIFwkXCQgU0VMRUNUIDE7IC8q ICRsb25ndGV4dCAqLyBcJFwkIExBTkdVQUdFIFNRTAogXSk7CiAKLW15ICRwc3FsX3Nlc3Np b24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotbXkgJHBzcWxfc2Vz c2lvbjIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxf c2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKK215ICRwc3FsX3Nlc3Npb24yID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOwogCiAjIFNldCBpbmplY3Rpb24gcG9pbnQgaW4gdGhlIHNlc3Np b24sIHRvIHBhdXNlIHdoaWxlIHBvcHVsYXRpbmcgdGhlCiAjIGNhdGNhY2hlIGxpc3QKLSRw c3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoCiskcHNxbF9zZXNzaW9uLT5kbygKIAlxcVsKICAg ICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKICAgICBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2NhdGNhY2hlLWxpc3QtbWlzcy1zeXN0YWJsZS1zY2Fu LXN0YXJ0ZWQnLCAnd2FpdCcpOwpAQCAtNTksMTAgKzU5LDkgQEAgJHBzcWxfc2Vzc2lvbi0+ cXVlcnlfc2FmZSgKIAogIyBUaGlzIHBhdXNlcyBvbiB0aGUgaW5qZWN0aW9uIHBvaW50IHdo aWxlIHBvcHVsYXRpbmcgY2F0Y2FjaGUgbGlzdAogIyBmb3IgZnVuY3Rpb25zIHdpdGggbmFt ZSAiZm9vZnVuYyIKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5n X2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAotICAgU0VMRUNUIGZv b2Z1bmMoMSk7CiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygKKyAgIHEoCisgICAgICBTRUxF Q1QgZm9vZnVuYygxKTsKICkpOwogCiAjIFdoaWxlIHRoZSBmaXJzdCBzZXNzaW9uIGlzIGJ1 aWxkaW5nIHRoZSBjYXRjYWNoZSBsaXN0LCBjcmVhdGUgYSBuZXcKQEAgLTgzLDE2ICs4Miwx OSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyB0cnlpbmcgdG8gZXhlcmNpc2UgaGVyZS4pCiAj CiAjIFRoZSAiU0VMRUNUIGZvb2Z1bmMoMSkiIHF1ZXJ5IHdpbGwgbm93IGZpbmlzaC4KLSRw c3FsX3Nlc3Npb24yLT5xdWVyeV9zYWZlKAorJHBzcWxfc2Vzc2lvbjItPmRvKAogCXFxWwog ICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2F0Y2FjaGUtbGlzdC1taXNz LXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwogICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2RldGFjaCgnY2F0Y2FjaGUtbGlzdC1taXNzLXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwog XSk7CiAKICMgVGVzdCB0aGF0IHRoZSBuZXcgZnVuY3Rpb24gaXMgdmlzaWJsZSB0byB0aGUg c2Vzc2lvbi4KLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIlNFTEVDVCBmb29mdW5jKCk7 Iik7CiskcHNxbF9zZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworbXkgJHJlcyA9ICRw c3FsX3Nlc3Npb24tPnF1ZXJ5KCJTRUxFQ1QgZm9vZnVuYygpOyIpOwogCi1vaygkcHNxbF9z ZXNzaW9uLT5xdWl0KTsKLW9rKCRwc3FsX3Nlc3Npb24yLT5xdWl0KTsKK2lzKCRyZXMtPntz dGF0dXN9LCAyLCAiZ290IFRVUExFU19PSyIpOworCiskcHNxbF9zZXNzaW9uLT5jbG9zZTsK KyRwc3FsX3Nlc3Npb24yLT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMF9pbmRleF9jb25jdXJyZW50bHlf dXBzZXJ0LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfaW5kZXhfY29u Y3VycmVudGx5X3Vwc2VydC5wbAppbmRleCAzYmRiNjMyODg3ZS4uY2NhM2IzYTExZWEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDEwX2luZGV4X2NvbmN1 cnJlbnRseV91cHNlcnQucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbApAQCAtMTMsNiArMTMsNyBAQCB1c2Ug c3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiB1c2UgVGltZTo6 SGlSZXMgcXcodXNsZWVwKTsKQEAgLTUxLDQ3ICs1MiwzOCBAQCBBTFRFUiBUQUJMRSB0ZXN0 LnRibGV4cHIgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1 cCBhdCBzZXQtZGVhZCBwaGFzZSknKTsKIAotIyBDcmVhdGUgc2Vzc2lvbnMgd2l0aCBvbl9l cnJvcl9zdG9wID0+IDAgc28gcHNxbCBkb2Vzbid0IGV4aXQgb24gU1FMIGVycm9ycy4KLSMg VGhpcyBhbGxvd3MgdXMgdG8gY29sbGVjdCBzdGRlcnIgYW5kIGRldGVjdCBlcnJvcnMgYWZ0 ZXIgdGhlIHRlc3QgY29tcGxldGVzLgotbXkgJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMyID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMz ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworIyBDcmVhdGUgc2Vzc2lvbnMgZm9yIGNvbmN1cnJlbnQgb3BlcmF0aW9ucworbXkg JHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor bXkgJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUp OworbXkgJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCiAjIFNldHVwIGluamVjdGlvbiBwb2ludHMgZm9yIGVhY2ggc2Vzc2lvbgotJHMx LT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4 Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBd KTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7 CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdy ZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcp OwogXSk7CiAKICMgczMgc3RhcnRzIFJFSU5ERVggKHdpbGwgYmxvY2sgb24gcmVpbmRleC1y ZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkKQotJHMzLT5xdWVyeV91bnRp bCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgK LVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTsKLV0pOworJHMz LT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtl eTtdKTsKIAogIyBXYWl0IGZvciBzMyB0byBoaXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmpl Y3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc2V0LWRlYWQnKTsKIAogIyBzMSBzdGFydHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGNo ZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCkKLSRzMS0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1d KTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTtdKTsKIAogIyBXYWl0IGZvciBzMSB0byBoaXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmpl Y3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFp bnQtbm8tY29uZmxpY3QnKTsKQEAgLTEwMSwxMSArOTMsNyBAQCB3YWtldXBfaW5qZWN0aW9u X3BvaW50KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUt c2V0LWRlYWQnKTsKIAogIyBzMiBzdGFydHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGV4ZWMt aW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUpCi0kczItPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczIK LUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05G TElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKICMgV2Fp dCBmb3IgczIgdG8gaGl0IGluamVjdGlvbiBwb2ludAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwpAQCAtMTI1 LDUxICsxMTMsMzkgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUg VEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVz dDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1cCBhdCBzd2FwIHBoYXNl KScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgK KyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5p cXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVl cnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1i ZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5 X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlv bi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVl cnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19y ZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1d KTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRi bHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVs YXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwo Ci0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9z MQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElD VCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9f YXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENP TkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25z dHJhaW50LW5vLWNvbmZsaWN0Jyk7CiAKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc3dhcCcpOwogCi0kczIt PnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFy dGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3co KSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwot XSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEz LG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9y ZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtMTg0LDUwICsxNjAsMzggQEAgJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5U TFkgKyBVUFNFUlQgKHMxIHdha2VzIGJlZm9yZSByZWluZGV4KScpOwogCi0kczEgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0k czIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8o CiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1 bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAog CXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVm b3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFy L3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVjaG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2Fz eW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwog CiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lO U0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25f cG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnKTsKIAogIyBTdGFydCBzMiBCRUZPUkUgd2FraW5nIHJlaW5kZXggKGtleSBk aWZmZXJlbmNlIGZyb20gcGVybXV0YXRpb24gMSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5T RVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNU IChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0 aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2 ZScpOwogCkBAIC0yNDUsNTIgKzIwOSw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiBub3RlKCdUZXN0OiBSRUlOREVYICsgVVBTRVJUIE9OIENPTlNUUkFJTlQgKHNldC1k ZWFkIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVl cnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAK LSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVj LWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0k czMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRl eC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0p OwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVj aG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50 Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAot JHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8g c3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs IG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05T VFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlx dWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50 KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRl YWQnKTsKIAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElD VCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJl Zm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtMzA1LDUxICsyNTcsMzkgQEAgJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50Ymxwaycp OwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCArIFVQU0VS VCBPTiBDT05TVFJBSU5UIChzd2FwIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0k czMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3Qn LCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywg J3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAn LCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVp bmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlv bl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1z d2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywg cVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBW QUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5 IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5j KHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJ Q1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVj dGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9y ZS1zd2FwJyk7CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3My LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50Ymxw ayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19w a2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09O RkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2Vy dC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTM2NCw1MCArMzA0LDM4IEBA ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJs cGsnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5ERVggKyBV UFNFUlQgT04gQ09OU1RSQUlOVCAoczEgd2FrZXMgYmVmb3JlIHJlaW5kZXgpJyk7CiAKLSRz 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 bmZsaWN0Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1 ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGlu Z191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkp IE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVw ZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRl c3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQg dGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVj dWxhdGl2ZScpOwogCkBAIC00MjUsNTIgKzM1Myw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIG9uIHBhcnRpdGlvbmVkIHRhYmxlIChz ZXQtZGVhZCBwaGFzZSknKTsKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMxID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0kczEt PnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19z ZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2stZXhj bHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0JywgJ3dhaXQnKTsKIF0p OwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsK IAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jl aW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcsICd3YWl0Jyk7 CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsK LVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRl c3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9uX3BrZXk7XSk7CiAKIG9rX2lu amVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJl Zm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vw c2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRl c3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBE QVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNF UlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rp b25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQt bm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwKIAkncmVp bmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJyk7CiAKLSRzMi0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywg bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5z ZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtNDg1LDUxICs0MDEsMzkg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50 YmxwYXJ0ZWQnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5E RVggb24gcGFydGl0aW9uZWQgdGFibGUgKHN3YXAgcGhhc2UpJyk7CiAKLSRzMSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRz MiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1j b25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3Vs YXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJ cVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc3dhcCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRv X2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9u X3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRp b24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQot SU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZM SUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5k b19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlx dWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50 KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsK IAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVj aG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxV RVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxw YXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VU IHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC01NDQsNTAg KzQ0OCwzOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJM RSB0ZXN0LnRibHBhcnRlZCcpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVz dDogUkVJTkRFWCBvbiBwYXJ0aXRpb25lZCB0YWJsZSAoczEgd2FrZXMgYmVmb3JlIHJlaW5k ZXgpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25f ZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZl KAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11 bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5x dWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0 LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVl cnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0 aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRz My0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFy dGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0 aXRpb25fcGtleTsKLV0pOworJHMzLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5O10pOwogCiBva19pbmplY3Rpb25fcG9p bnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRl YWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRl ZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBk YXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVz dC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0 Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1ZXJ5X3Vu dGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNl cnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBP TiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsK KyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEz LCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZv cmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTYwNSwzNSArNDk3LDI3IEBAICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGFydGVk Jyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIG9uIHBh cnRpdGlvbmVkIHRhYmxlLCBjYWNoZSBpbnZhbCBiZXR3ZWVuIHR3byBnZXRfcGFydGl0aW9u X2FuY2VzdG9ycycpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVl cnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluaXQtcGFy dGl0aW9uLWFmdGVyLWdldC1wYXJ0aXRpb24tYW5jZXN0b3JzJywgJ3dhaXQnKTsKIF0pOwog Ci0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVp bmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnLCAnd2FpdCcpOwogXSk7 CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNo byBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRi bF9wYXJ0aXRpb25fcGtleTsKLV0pOworJHMyLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5O10pOwogCiBva19pbmplY3Rp b25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUt c3dhcCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8s IHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFy dGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0 ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQ REFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQo JG5vZGUsCiAJJ2V4ZWMtaW5pdC1wYXJ0aXRpb24tYWZ0ZXItZ2V0LXBhcnRpdGlvbi1hbmNl c3RvcnMnKTsKQEAgLTY1MiwyNiArNTM2LDI0IEBAIG5vdGUoJ1Rlc3Q6IENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgKyBVUFNFUlQnKTsKICMgVXNlcyBpbnZhbGlkYXRlLWNhdGFsb2ct c25hcHNob3QtZW5kIHRvIHRlc3QgY2F0YWxvZyBpbnZhbGlkYXRpb24KICMgZHVyaW5nIFVQ U0VSVAogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLW15ICRzMV9waWQgPSAkczEt PnF1ZXJ5X3NhZmUoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisjIEdldCB0aGUgc2Vz c2lvbidzIGJhY2tlbmQgUElEIGJlZm9yZSBhdHRhY2hpbmcgaW5qZWN0aW9uIHBvaW50cwor bXkgJHMxX3BpZCA9ICRzMS0+cXVlcnlfb25ldmFsKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQo KScpOwogCiAjIHMxIGF0dGFjaGVzIEJPVEggaW5qZWN0aW9uIHBvaW50cyAtIHRoZSB1bmlx dWUgY29uc3RyYWludCBjaGVjayBBTkQgY2F0YWxvZyBzbmFwc2hvdAotJHMxLT5xdWVyeV9z YWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1v ci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMx LT5xdWVyeV91bnRpbCgKLQlxci9hdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50LywgcVsKLVxl Y2hvIGF0dGFjaGluZ19pbmplY3Rpb25fcG9pbnQKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0Jyk7Ci1d KTsKLQogIyBJbiBjYXNlcyBvZiBjYWNoZSBjbG9iYmVyaW5nLCBzMSBtYXkgaGl0IHRoZSBp bmplY3Rpb24gcG9pbnQgZHVyaW5nIGF0dGFjaC4KKyMgU3RhcnQgYXR0YWNoIGFzeW5jaHJv bm91c2x5IHNvIHdlIGNhbiBjaGVjayBpZiBpdCBibG9ja3MuCiskczEtPmRvX2FzeW5jKHFb U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbnZhbGlkYXRlLWNhdGFsb2ctc25h cHNob3QtZW5kJywgJ3dhaXQnKTtdKTsKKwogIyBXYWl0IGZvciB0aGF0IHNlc3Npb24gdG8g YmVjb21lIGlkbGUgKGF0dGFjaCBjb21wbGV0ZWQpLCBvciB3YWtlIGl0IHVwIGlmCiAjIGl0 IGJlY29tZXMgc3R1Y2sgb24gaW5qZWN0aW9uIHBvaW50LgogaWYgKCF3YWl0X2Zvcl9pZGxl KCRub2RlLCAkczFfcGlkKSkKQEAgLTY4NSwzNCArNTY3LDI4IEBAIGlmICghd2FpdF9mb3Jf aWRsZSgkbm9kZSwgJHMxX3BpZCkpCiAJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCV0pOwogfQorIyBXYWl0 IGZvciBhc3luYyBjb21tYW5kIHRvIGNvbXBsZXRlCiskczEtPndhaXRfZm9yX2NvbXBsZXRp b247CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0p OwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnLCAnd2FpdCcpOwogXSk7CiAKICMgczM6 IFN0YXJ0IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgKGJsb2NrcyBvbiBkZWZpbmUtaW5k ZXgtYmVmb3JlLXNldC12YWxpZCkKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdf Y3JlYXRlX2luZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX2NyZWF0ZV9pbmRleAotQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRlIE9OIHRlc3Qu dGJscGsoaSk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSB0YmxfcGtleV9kdXBsaWNhdGUgT04gdGVzdC50YmxwayhpKTtdKTsKIAog b2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFs aWQnKTsKIAogIyBzMTogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24gaW52YWxpZGF0ZS1jYXRh bG9nLXNuYXBzaG90LWVuZCkKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBz ZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVz dC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNF VCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5U TyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCkBAIC03MjAsMTEg KzU5Niw3IEBAIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUtY2F0YWxv Zy1zbmFwc2hvdC1lbmQnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdkZWZp bmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMyOiBTdGFydCBVUFNFUlQgKGJs b2NrcyBvbiBleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlKQotJHMyLT5x dWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3RhcnRp bmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkp IE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0p OworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxu b3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygp O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZvcmUt aW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTc0NSwyNCArNjE3LDIwIEBAICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGFydGVkJyk7 CiBub3RlKCdUZXN0OiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9uIHBhcnRpYWwgaW5k ZXggKyBVUFNFUlQnKTsKICMgVXNlcyBpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5k IHRvIHRlc3QgY2F0YWxvZyBpbnZhbGlkYXRpb24gZHVyaW5nIFVQU0VSVAogCi0kczEgPSAk bm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7 Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0 b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMV9waWQgPSAkczEtPnF1ZXJ5X3NhZmUoJ1NFTEVD VCBwZ19iYWNrZW5kX3BpZCgpJyk7CiskczFfcGlkID0gJHMxLT5xdWVyeV9vbmV2YWwoJ1NF TEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CiAKICMgczEgYXR0YWNoZXMgQk9USCBpbmplY3Rp b24gcG9pbnRzIC0gdGhlIHVuaXF1ZSBjb25zdHJhaW50IGNoZWNrIEFORCBjYXRhbG9nIHNu YXBzaG90Ci0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0Jywg J3dhaXQnKTsKIF0pOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL2F0dGFjaGluZ19pbmpl Y3Rpb25fcG9pbnQvLCBxWwotXGVjaG8gYXR0YWNoaW5nX2luamVjdGlvbl9wb2ludAotU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNo b3QtZW5kJywgJ3dhaXQnKTsKLV0pOworJHMxLT5kbyhxW1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0Jyk7 XSk7CiAKICMgSW4gY2FzZXMgb2YgY2FjaGUgY2xvYmJlcmluZywgczEgbWF5IGhpdCB0aGUg aW5qZWN0aW9uIHBvaW50IGR1cmluZyBhdHRhY2guCiAjIFdhaXQgZm9yIHRoYXQgc2Vzc2lv biB0byBiZWNvbWUgaWRsZSAoYXR0YWNoIGNvbXBsZXRlZCksIG9yIHdha2UgaXQgdXAgaWYK QEAgLTc3OSwzMyArNjQ3LDI1IEBAIGlmICghd2FpdF9mb3JfaWRsZSgkbm9kZSwgJHMxX3Bp ZCkpCiAJXSk7CiB9CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dh aXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnLCAnd2FpdCcpOwogXSk7 CiAKICMgczM6IFN0YXJ0IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgKGJsb2NrcyBvbiBk ZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCkKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnRpbmdfY3JlYXRlX2luZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX2NyZWF0ZV9pbmRl eAotQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfc3BlY2lhbF9k dXBsaWNhdGUgT04gdGVzdC50YmxleHByKGFicyhpKSkgV0hFUkUgaSA8IDEwMDAwOwotXSk7 CiskczMtPmRvX2FzeW5jKHFbQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJs X3BrZXlfc3BlY2lhbF9kdXBsaWNhdGUgT04gdGVzdC50YmxleHByKGFicyhpKSkgV0hFUkUg aSA8IDEwMDAwO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdkZWZpbmUtaW5k ZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMxOiBTdGFydCBVUFNFUlQgKGJsb2NrcyBv biBpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5kKQotJHMxLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3Mx Ci1JTlNFUlQgSU5UTyB0ZXN0LnRibGV4cHIgVkFMVUVTKDEzLG5vdygpKSBPTiBDT05GTElD VCAoYWJzKGkpKSBXSEVSRSBpIDwgMTAwIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxleHByIFZB TFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hFUkUgaSA8IDEwMCBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50 KCRub2RlLCAnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCkBAIC04MTMs MTEgKzY3Myw3IEBAIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUtY2F0 YWxvZy1zbmFwc2hvdC1lbmQnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdk ZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMyOiBTdGFydCBVUFNFUlQg KGJsb2NrcyBvbiBleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlKQotJHMy LT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3Rh cnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibGV4cHIgVkFMVUVTKDEzLG5v dygpKSBPTiBDT05GTElDVCAoYWJzKGkpKSBXSEVSRSBpIDwgMTAwIERPIFVQREFURSBTRVQg dXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8g dGVzdC50YmxleHByIFZBTFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hF UkUgaSA8IDEwMCBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVj dWxhdGl2ZScpOwogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUt Y2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKQEAgLTkxOCwzMyArNzc0LDIzIEBAIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnJHBvaW50X25hbWUnKTsKIF0pOwogfQogCi0jIFdh aXQgZm9yIGFueSBwZW5kaW5nIHF1ZXJ5IHRvIGNvbXBsZXRlLCBjYXB0dXJlIHN0ZGVyciwg YW5kIGNsb3NlIHRoZSBzZXNzaW9uLgotIyBSZXR1cm5zIHRoZSBzdGRlcnIgb3V0cHV0IChl eGNsdWRpbmcgaW50ZXJuYWwgbWFya2VycykuCisjIFdhaXQgZm9yIGFueSBwZW5kaW5nIHF1 ZXJ5IHRvIGNvbXBsZXRlIGFuZCBjbG9zZSB0aGUgc2Vzc2lvbi4KKyMgUmV0dXJucyBlbXB0 eSBzdHJpbmcgb24gc3VjY2VzcywgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgogc3ViIHNh ZmVfcXVpdAogewogCW15ICgkc2Vzc2lvbikgPSBAXzsKIAotCSMgU2VuZCBhIG1hcmtlciBh bmQgd2FpdCBmb3IgaXQgdG8gZW5zdXJlIGFueSBwZW5kaW5nIHF1ZXJ5IGNvbXBsZXRlcwot CW15ICRiYW5uZXIgPSAic2FmZV9xdWl0X21hcmtlciI7Ci0JbXkgJGJhbm5lcl9tYXRjaCA9 IHFyLyhefFxuKSRiYW5uZXJccj9cbi87CisJIyBXYWl0IGZvciBhbnkgYXN5bmMgcXVlcmll cyB0byBjb21wbGV0ZQorCSRzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOwogCi0JJHNl c3Npb24tPntzdGRpbn0gLj0gIlxcZWNobyAkYmFubmVyXG5cXHdhcm4gJGJhbm5lclxuIjsK LQotCXB1bXBfdW50aWwoCi0JCSRzZXNzaW9uLT57cnVufSwgJHNlc3Npb24tPnt0aW1lb3V0 fSwKLQkJXCRzZXNzaW9uLT57c3Rkb3V0fSwgJGJhbm5lcl9tYXRjaCk7Ci0JcHVtcF91bnRp bCgKLQkJJHNlc3Npb24tPntydW59LCAkc2Vzc2lvbi0+e3RpbWVvdXR9LAotCQlcJHNlc3Np b24tPntzdGRlcnJ9LCAkYmFubmVyX21hdGNoKTsKLQotCSMgQ2FwdHVyZSBzdGRlcnIgKGV4 Y2x1ZGluZyB0aGUgYmFubmVyKQotCW15ICRzdGRlcnIgPSAkc2Vzc2lvbi0+e3N0ZGVycn07 Ci0JJHN0ZGVyciA9fiBzLyRiYW5uZXJfbWF0Y2gvLzsKKwkjIENoZWNrIGNvbm5lY3Rpb24g c3RhdHVzCisJbXkgJHN0YXR1cyA9ICRzZXNzaW9uLT5jb25uX3N0YXR1czsKIAogCSMgQ2xv c2UgdGhlIHNlc3Npb24KLQkkc2Vzc2lvbi0+cXVpdDsKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAK LQlyZXR1cm4gJHN0ZGVycjsKKwkjIFJldHVybiBlbXB0eSBzdHJpbmcgaWYgY29ubmVjdGlv biB3YXMgT0ssIG90aGVyd2lzZSByZXR1cm4gZXJyb3IKKwlyZXR1cm4gKCRzdGF0dXMgPT0g UG9zdGdyZVNRTDo6UHFGRkk6OkNPTk5FQ1RJT05fT0soKSkgPyAnJyA6ICdjb25uZWN0aW9u IGVycm9yJzsKIH0KIAogIyBIZWxwZXIgZnVuY3Rpb246IHZlcmlmeSB0aGF0IHRoZSBnaXZl biBzZXNzaW9ucyBleGl0IGNsZWFubHkuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhhY3QucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2xydS90LzAwMV9tdWx0aXhhY3QucGwKaW5kZXggZjZmNDU4OTVlYmQuLjJkODY0MzRkN2Jj IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhh Y3QucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdC8wMDFfbXVsdGl4YWN0 LnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1 c2UgVGVzdDo6TW9yZTsKQEAgLTMwLDggKzMxLDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gdGVzdF9zbHJ1KSk7CiAjIGxvc3QuCiAKICMg Q3JlYXRlIHRoZSBmaXJzdCBtdWx0aXhhY3QKLW15ICRiZ19wc3FsID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLW15ICRtdWx0aTEgPSAkYmdfcHNxbC0+cXVlcnlf c2FmZShxKFNFTEVDVCB0ZXN0X2NyZWF0ZV9tdWx0aXhhY3QoKTspKTsKK215ICRiZ19zZXNz aW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor bXkgJG11bHRpMSA9ICRiZ19zZXNzaW9uLT5xdWVyeV9vbmV2YWwocShTRUxFQ1QgdGVzdF9j cmVhdGVfbXVsdGl4YWN0KCk7KSk7CiAKICMgQXNzaWduIHRoZSBtaWRkbGUgbXVsdGl4YWN0 LiBVc2UgYW4gaW5qZWN0aW9uIHBvaW50IHRvIHByZXZlbnQgaXQKICMgZnJvbSBiZWluZyBm dWxseSByZWNvcmRlZC4KQEAgLTM5LDExICs0MCw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAlxe1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbXVsdGl4YWN0 LWNyZWF0ZS1mcm9tLW1lbWJlcnMnLCd3YWl0Jyk7fQogKTsKIAotJGJnX3BzcWwtPnF1ZXJ5 X3VudGlsKAotCXFyL2Fzc2lnbmluZyBsb3N0IG11bHRpLywgcSgKLVxlY2hvIGFzc2lnbmlu ZyBsb3N0IG11bHRpCi0JU0VMRUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgpOwotKSk7Cisj IFN0YXJ0IHRoZSBzZWNvbmQgbXVsdGl4YWN0IGNyZWF0aW9uIGFzeW5jaHJvbm91c2x5IC0g aXQgd2lsbCBibG9jayBhdAorIyB0aGUgaW5qZWN0aW9uIHBvaW50CiskYmdfc2Vzc2lvbi0+ ZG9fYXN5bmMocShTRUxFQ1QgdGVzdF9jcmVhdGVfbXVsdGl4YWN0KCk7KSk7CiAKICRub2Rl LT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbXVsdGl4YWN0LWNyZWF0ZS1m cm9tLW1lbWJlcnMnKTsKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTUyLDEw ICs1MSwxMCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENyZWF0ZSB0aGUg dGhpcmQgbXVsdGl4aWQKIG15ICRtdWx0aTIgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7U0VMRUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgpO30pOwogCi0jIEFsbCBzZXQg YW5kIGRvbmUsIGl0J3MgdGltZSBmb3IgaGFyZCByZXN0YXJ0CisjIEFsbCBzZXQgYW5kIGRv bmUsIGl0J3MgdGltZSBmb3IgaGFyZCByZXN0YXJ0LiBUaGUgYmFja2dyb3VuZCBzZXNzaW9u CisjIHdpbGwgYmUgdGVybWluYXRlZCBieSB0aGUgY3Jhc2guCiAkbm9kZS0+c3RvcCgnaW1t ZWRpYXRlJyk7CiAkbm9kZS0+c3RhcnQ7Ci0kYmdfcHNxbC0+e3J1bn0tPmZpbmlzaDsKIAog IyBWZXJpZnkgdGhhdCB0aGUgcmVjb3JkZWQgbXVsdGl4aWRzIGFyZSByZWFkYWJsZQogaXMo ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7U0VMRUNUIHRlc3RfcmVhZF9tdWx0 aXhhY3QoJyRtdWx0aTEnKTt9KSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlk X3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbCBiL3NyYy90ZXN0L21vZHVs ZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbAppbmRleCAyMTNm OTA1MmVkMi4uMzA0MDc2NzM1YjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMveGlk X3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAxX2VtZXJnZW5jeV92YWN1dW0ucGwKQEAgLTQs NiArNCw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCkBAIC00NywxNyArNDgsMTAgQEAgQ1JFQVRFIFRBQkxFIHNtYWxsX3RydW5jKGlkIHNl cmlhbCBwcmltYXJ5IGtleSwgZGF0YSB0ZXh0LCBmaWxsZXIgdGV4dCBkZWZhdWx0IHIKIElO U0VSVCBJTlRPIHNtYWxsX3RydW5jKGRhdGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwx NTAwMCk7CiBdKTsKIAotIyBCdW1wIHRoZSBxdWVyeSB0aW1lb3V0IHRvIGF2b2lkIGZhbHNl IG5lZ2F0aXZlcyBvbiBzbG93IHRlc3Qgc3lzdGVtcy4KLW15ICRwc3FsX3RpbWVvdXRfc2Vj cyA9IDQgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKLQog IyBTdGFydCBhIGJhY2tncm91bmQgc2Vzc2lvbiwgd2hpY2ggaG9sZHMgYSB0cmFuc2FjdGlv biBvcGVuLCBwcmV2ZW50aW5nCiAjIGF1dG92YWN1dW0gZnJvbSBhZHZhbmNpbmcgcmVsZnJv emVueGlkIGFuZCBkYXRmcm96ZW54aWQuCi1teSAkYmFja2dyb3VuZF9wc3FsID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgKLQkncG9zdGdyZXMnLAotCW9uX2Vycm9yX3N0b3AgPT4gMCwK LQl0aW1lb3V0ID0+ICRwc3FsX3RpbWVvdXRfc2Vjcyk7Ci0kYmFja2dyb3VuZF9wc3FsLT5z ZXRfcXVlcnlfdGltZXJfcmVzdGFydCgpOwotJGJhY2tncm91bmRfcHNxbC0+cXVlcnlfc2Fm ZSgKK215ICRiYWNrZ3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5kbygKIAlxcVsK IAlCRUdJTjsKIAlERUxFVEUgRlJPTSBsYXJnZSBXSEVSRSBpZCAlIDIgPSAwOwpAQCAtODks OCArODMsOCBAQCBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCiAjIEZp bmlzaCB0aGUgb2xkIHRyYW5zYWN0aW9uLCB0byBhbGxvdyB2YWN1dW0gZnJlZXppbmcgdG8g YWR2YW5jZQogIyByZWxmcm96ZW54aWQgYW5kIGRhdGZyb3plbnhpZCBhZ2Fpbi4KLSRiYWNr Z3JvdW5kX3BzcWwtPnF1ZXJ5X3NhZmUocXFbQ09NTUlUXSk7Ci0kYmFja2dyb3VuZF9wc3Fs LT5xdWl0OworJGJhY2tncm91bmRfc2Vzc2lvbi0+ZG8ocXFbQ09NTUlUO10pOworJGJhY2tn cm91bmRfc2Vzc2lvbi0+Y2xvc2U7CiAKICMgV2FpdCB1bnRpbCBhdXRvdmFjdXVtIHByb2Nl c3NlZCBhbGwgdGFibGVzIGFuZCBhZHZhbmNlZCB0aGUKICMgc3lzdGVtLXdpZGUgb2xkZXN0 LVhJRC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8w MDJfbGltaXRzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9s aW1pdHMucGwKaW5kZXggODY2MzJhOGQ1MTAuLjBlZjY3ZDBmNGI4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbApAQCAtMTAs NiArMTAsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwpAQCAtMjksNiArMzAsOCBAQCAkbm9k ZS0+YXBwZW5kX2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29uZicsIHFxWwogYXV0b3ZhY3V1bV9u YXB0aW1lID0gMXMKIGxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKK2xvZ19jb25u ZWN0aW9ucyA9IG9uCitsb2dfc3RhdGVtZW50ID0gJ2FsbCcKIF0pOwogJG5vZGUtPnN0YXJ0 OwogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB4aWRf d3JhcGFyb3VuZCcpOwpAQCAtNDEsMTYgKzQ0LDEwIEBAIENSRUFURSBUQUJMRSB3cmFwYXJv dW5kdGVzdCh0IHRleHQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7CiBJTlNF UlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdzdGFydCcpOwogXSk7CiAKLSMgQnVt cCB0aGUgcXVlcnkgdGltZW91dCB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMgb24gc2xvdyB0 ZXN0IHN5c3RlbXMuCi1teSAkcHNxbF90aW1lb3V0X3NlY3MgPSA0ICogJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7Ci0KICMgU3RhcnQgYSBiYWNrZ3JvdW5k IHNlc3Npb24sIHdoaWNoIGhvbGRzIGEgdHJhbnNhY3Rpb24gb3BlbiwgcHJldmVudGluZwog IyBhdXRvdmFjdXVtIGZyb20gYWR2YW5jaW5nIHJlbGZyb3plbnhpZCBhbmQgZGF0ZnJvemVu eGlkLgotbXkgJGJhY2tncm91bmRfcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoCi0J J3Bvc3RncmVzJywKLQlvbl9lcnJvcl9zdG9wID0+IDAsCi0JdGltZW91dCA9PiAkcHNxbF90 aW1lb3V0X3NlY3MpOwotJGJhY2tncm91bmRfcHNxbC0+cXVlcnlfc2FmZSgKK215ICRiYWNr Z3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlJ TlNFUlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdvbGR4YWN0Jyk7CkBAIC0xMDgs OCArMTA1LDggQEAgbGlrZSgKIAogIyBGaW5pc2ggdGhlIG9sZCB0cmFuc2FjdGlvbiwgdG8g YWxsb3cgdmFjdXVtIGZyZWV6aW5nIHRvIGFkdmFuY2UKICMgcmVsZnJvemVueGlkIGFuZCBk YXRmcm96ZW54aWQgYWdhaW4uCi0kYmFja2dyb3VuZF9wc3FsLT5xdWVyeV9zYWZlKHFxW0NP TU1JVF0pOwotJGJhY2tncm91bmRfcHNxbC0+cXVpdDsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24t PmRvKHFxW0NPTU1JVDtdKTsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmNsb3NlOwogCiAjIFZB Q1VVTSwgdG8gZnJlZXplIHRoZSB0YWJsZXMgYW5kIGFkdmFuY2UgZGF0ZnJvemVueGlkLgog IwpAQCAtMTIyLDggKzExOSw4IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZB Q1VVTScpOwogIyB0aGUgc3lzdGVtLXdpZGUgb2xkZXN0LVhJRC4KICRyZXQgPQogICAkbm9k ZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAotCXFxW0lOU0VSVCBJTlRPIHdyYXBh cm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScpXSwKLQknSU5TRVJUIDAgMScpOwor CXFxW0lOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScp IFJFVFVSTklORyB0cnVlXSwKKwkJCQkJCSApOwogCiAjIENoZWNrIHRoZSB0YWJsZSBjb250 ZW50cwogJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICog ZnJvbSB3cmFwYXJvdW5kdGVzdF0pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94 aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsIGIvc3JjL3Rlc3QvbW9kdWxl cy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsCmluZGV4IGQwYTFmMWZl MmZjLi5mMmZhNGU1YTZiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3Jh cGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv eGlkX3dyYXBhcm91bmQvdC8wMDRfbm90aWZ5X2ZyZWV6ZS5wbApAQCAtNyw2ICs3LDcgQEAK IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwog dXNlIFRlc3Q6Ok1vcmU7CiAKIG15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdub2RlJyk7CkBAIC0yNCw5ICsyNSw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAknQUxURVIgREFUQUJBU0UgdGVtcGxhdGUwIFdJVEggQUxMT1dfQ09OTkVD VElPTlMgdHJ1ZScpOwogCiAjIFN0YXJ0IFNlc3Npb24gMSBhbmQgbGVhdmUgaXQgaWRsZSBp biB0cmFuc2FjdGlvbgotbXkgJHBzcWxfc2Vzc2lvbjEgPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2xpc3RlbiBz OycpOwotJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2JlZ2luOycpOworbXkgJHNlc3Np b24xID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor JHNlc3Npb24xLT5kbygnTElTVEVOIHMnKTsKKyRzZXNzaW9uMS0+ZG8oJ0JFR0lOJyk7CiAK ICMgU2VuZCBzb21lIG5vdGlmeXMgZnJvbSBvdGhlciBzZXNzaW9ucwogZm9yIG15ICRpICgx IC4uIDEwKQpAQCAtNTQsMTggKzU1LDIwIEBAIG15ICRkYXRhZnJvbnplbnhpZF9mcmVlemUg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJInNlbGVjdCBtaW4oZGF0ZnJvemVu eGlkOjp0ZXh0OjpiaWdpbnQpIGZyb20gcGdfZGF0YWJhc2UiKTsKIG9rKCRkYXRhZnJvbnpl bnhpZF9mcmVlemUgPiAkZGF0YWZyb256ZW54aWQsICdkYXRmcm96ZW54aWQgYWR2YW5jZWQn KTsKIAotIyBPbiBTZXNzaW9uIDEsIGNvbW1pdCBhbmQgZW5zdXJlIHRoYXQgdGhlIGFsbCB0 aGUgbm90aWZpY2F0aW9ucyBhcmUKKyMgT24gU2Vzc2lvbiAxLCBjb21taXQgYW5kIGVuc3Vy ZSB0aGF0IGFsbCB0aGUgbm90aWZpY2F0aW9ucyBhcmUKICMgcmVjZWl2ZWQuIFRoaXMgZGVw ZW5kcyBvbiBjb3JyZWN0bHkgZnJlZXppbmcgdGhlIFhJRHMgaW4gdGhlIHBlbmRpbmcKICMg bm90aWZpY2F0aW9uIGVudHJpZXMuCi1teSAkcmVzID0gJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5 X3NhZmUoJ2NvbW1pdDsnKTsKLW15ICRub3RpZmljYXRpb25zX2NvdW50ID0gMDsKLWZvcmVh Y2ggbXkgJGkgKHNwbGl0KCdcbicsICRyZXMpKQorJHNlc3Npb24xLT5kbygnQ09NTUlUJyk7 CisKK215ICRub3RpZmljYXRpb25zID0gJHNlc3Npb24xLT5nZXRfYWxsX25vdGlmaWNhdGlv bnMoKTsKK2lzKHNjYWxhcihAJG5vdGlmaWNhdGlvbnMpLCAxMCwgJ3JlY2VpdmVkIGFsbCBj b21taXR0ZWQgbm90aWZpY2F0aW9ucycpOworCitteSAkZXhwZWN0ZWRfcGF5bG9hZCA9IDE7 Citmb3JlYWNoIG15ICRub3RpZnkgKEAkbm90aWZpY2F0aW9ucykKIHsKLQkkbm90aWZpY2F0 aW9uc19jb3VudCsrOwotCWxpa2UoJGksCi0JCXFyL0FzeW5jaHJvbm91cyBub3RpZmljYXRp b24gInMiIHdpdGggcGF5bG9hZCAiJG5vdGlmaWNhdGlvbnNfY291bnQiIHJlY2VpdmVkLwot CSk7CisJaXMoJG5vdGlmeS0+e2NoYW5uZWx9LCAncycsICJub3RpZmljYXRpb24gJGV4cGVj dGVkX3BheWxvYWQgaGFzIGNvcnJlY3QgY2hhbm5lbCIpOworCWlzKCRub3RpZnktPntwYXls b2FkfSwgJGV4cGVjdGVkX3BheWxvYWQsICJub3RpZmljYXRpb24gJGV4cGVjdGVkX3BheWxv YWQgaGFzIGNvcnJlY3QgcGF5bG9hZCIpOworCSRleHBlY3RlZF9wYXlsb2FkKys7CiB9Ci1p cygkbm90aWZpY2F0aW9uc19jb3VudCwgMTAsICdyZWNlaXZlZCBhbGwgY29tbWl0dGVkIG5v dGlmaWNhdGlvbnMnKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9wZXJsL01ha2VmaWxlIGIvc3JjL3Rlc3QvcGVybC9NYWtlZmlsZQppbmRleCBmZDRmZGFm NzAwYi4uMjk3M2Q2ZWMzNWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUK KysrIGIvc3JjL3Rlc3QvcGVybC9NYWtlZmlsZQpAQCAtMTUsNiArMTUsMTAgQEAgaW5jbHVk ZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBpZmVxICgkKGVuYWJs ZV90YXBfdGVzdHMpLHllcykKIAorU1VCRElSUyA9IFBvc3RncmVTUUwvVGVzdAorCiskKHJl Y3Vyc2UpCisKIGluc3RhbGxkaXJzOgogCSQoTUtESVJfUCkgJyQoREVTVERJUikkKHBneHNk aXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QnCiAKQEAgLTI4LDYgKzMyLDggQEAgaW5z dGFsbDogYWxsIGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0 Z3JlU1FML1Rlc3QvQWRqdXN0RHVtcC5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJk aXIpL1Bvc3RncmVTUUwvVGVzdC9BZGp1c3REdW1wLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAk KHNyY2RpcikvUG9zdGdyZVNRTC9UZXN0L0FkanVzdFVwZ3JhZGUucG0gJyQoREVTVERJUikk KHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0VXBncmFkZS5wbScK IAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbSAnJChE RVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbScKKwkk KElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24u cG0nCisJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0Z3JlU1FML1BxRkZJLnBtICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9QcUZGSS5wbScKIAog dW5pbnN0YWxsOgogCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9z dGdyZVNRTC9UZXN0L1V0aWxzLnBtJwpAQCAtMzksNSArNDUsNyBAQCB1bmluc3RhbGw6CiAJ cm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3Qv QWRqdXN0RHVtcC5wbScKIAlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIp L1Bvc3RncmVTUUwvVGVzdC9BZGp1c3RVcGdyYWRlLnBtJwogCXJtIC1mICckKERFU1RESVIp JChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9WZXJzaW9uLnBtJworCXJtIC1mICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24u cG0nCisJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FM L1BxRkZJLnBtJwogCiBlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML0ZpbmRMaWIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvRmluZExpYi5wbQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjQyOTBjODRjNGYKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvRmluZExpYi5wbQpA QCAtMCwwICsxLDE2NCBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisKKz1oZWFkMSBOQU1FCisK K1Bvc3RncmVTUUw6OkZpbmRMaWIgLSBmaW5kIHNoYXJlZCBsaWJyYXJpZXMgZm9yIFBvc3Rn cmVTUUwgVEFQIHRlc3RzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FM OjpGaW5kTGliOworCisgIG15ICRsaWJwYXRoID0gZmluZF9saWJfb3JfZGllKAorICAgICAg bGliICAgICA9PiAncHEnLAorICAgICAgbGlicGF0aCA9PiBbJy91c3IvbG9jYWwvcGdzcWwv bGliJ10sCisgICk7CisKKz1oZWFkMSBERVNDUklQVElPTgorCitUaGlzIG1vZHVsZSBwcm92 aWRlcyBhIHNpbXBsZSBtZWNoYW5pc20gdG8gbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMsCit1 c2VkIGFzIGEgbGlnaHR3ZWlnaHQgcmVwbGFjZW1lbnQgZm9yIEM8RkZJOjpDaGVja0xpYj4u IEl0IHNlYXJjaGVzCitmb3IgbGlicmFyaWVzIGluIHNwZWNpZmllZCBwYXRocyBhbmQgY29t bW9uIHN5c3RlbSBsb2NhdGlvbnMuCisKKz1oZWFkMSBFWFBPUlRFRCBGVU5DVElPTlMKKwor PW92ZXIKKworPWl0ZW0gZmluZF9saWJfb3JfZGllKCVhcmdzKQorCitTZWFyY2hlcyBmb3Ig YSBzaGFyZWQgbGlicmFyeSBhbmQgcmV0dXJucyBpdHMgZnVsbCBwYXRoLiBEaWVzIGlmIHRo ZQorbGlicmFyeSBjYW5ub3QgYmUgZm91bmQuCisKK0FyZ3VtZW50czoKKworPW92ZXIKKwor PWl0ZW0gbGliID0+ICRuYW1lCisKK1JlcXVpcmVkLiBUaGUgbGlicmFyeSBuYW1lIHdpdGhv dXQgcHJlZml4IG9yIHN1ZmZpeCAoZS5nLiwgQzwncHEnPiBmb3IKK0M8bGlicHEuc28+KS4K KworPWl0ZW0gbGlicGF0aCA9PiBcQHBhdGhzCisKK09wdGlvbmFsLiBBcnJheSBvZiBkaXJl Y3RvcmllcyB0byBzZWFyY2ggZmlyc3QuCisKKz1pdGVtIHN5c3RlbXBhdGggPT4gXEBwYXRo cworCitPcHRpb25hbC4gSWYgc2V0IHRvIGFuIGVtcHR5IGFycmF5IEM8W10+LCBzeXN0ZW0g cGF0aHMgd2lsbCBub3QgYmUgc2VhcmNoZWQuCisKKz1iYWNrCisKKz1iYWNrCisKKz1jdXQK KworcGFja2FnZSBQb3N0Z3JlU1FMOjpGaW5kTGliOworCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBFeHBvcnRlciBxdyhpbXBvcnQpOwor dXNlIEZpbGU6OlNwZWM7Cit1c2UgQ29uZmlnOworCitvdXIgQEVYUE9SVCA9IHF3KGZpbmRf bGliX29yX2RpZSk7CisKK3N1YiBmaW5kX2xpYl9vcl9kaWUKK3sKKwlteSAlYXJncyA9IEBf OworCisJbXkgJGxpYm5hbWUgPSAkYXJnc3tsaWJ9IG9yIGRpZSAiZmluZF9saWJfb3JfZGll OiAnbGliJyBhcmd1bWVudCByZXF1aXJlZCI7CisJbXkgJGxpYnBhdGggPSAkYXJnc3tsaWJw YXRofSAvLyBbXTsKKwlteSAkc3lzdGVtcGF0aCA9ICRhcmdze3N5c3RlbXBhdGh9OworCisJ bXkgQHNlYXJjaF9wYXRocyA9IEAkbGlicGF0aDsKKworCSMgQWRkIHN5c3RlbSBwYXRocyB1 bmxlc3MgZXhwbGljaXRseSBkaXNhYmxlZAorCXVubGVzcyAoZGVmaW5lZCAkc3lzdGVtcGF0 aCAmJiByZWYoJHN5c3RlbXBhdGgpIGVxICdBUlJBWScgJiYgQCRzeXN0ZW1wYXRoID09IDAp CisJeworCQlwdXNoIEBzZWFyY2hfcGF0aHMsIF9nZXRfc3lzdGVtX2xpYl9wYXRocygpOwor CX0KKworCSMgRGV0ZXJtaW5lIGxpYnJhcnkgZmlsZSBwYXR0ZXJucyBiYXNlZCBvbiBPUwor CW15IEBwYXR0ZXJucyA9IF9nZXRfbGliX3BhdHRlcm5zKCRsaWJuYW1lKTsKKworCWZvciBt eSAkZGlyIChAc2VhcmNoX3BhdGhzKQorCXsKKwkJbmV4dCB1bmxlc3MgLWQgJGRpcjsKKwor CQlmb3IgbXkgJHBhdHRlcm4gKEBwYXR0ZXJucykKKwkJeworCQkJbXkgQG1hdGNoZXMgPSBn bG9iKEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRpciwgJHBhdHRlcm4pKTsKKwkJCWZvciBteSAk bWF0Y2ggKEBtYXRjaGVzKQorCQkJeworCQkJCXJldHVybiAkbWF0Y2ggaWYgLWYgJG1hdGNo ICYmIC1yICRtYXRjaDsKKwkJCX0KKwkJfQorCX0KKworCWRpZSAiZmluZF9saWJfb3JfZGll OiB1bmFibGUgdG8gZmluZCBsaWIkbGlibmFtZSBpbjogIiAuIGpvaW4oIiwgIiwgQHNlYXJj aF9wYXRocyk7Cit9CisKK3N1YiBfZ2V0X2xpYl9wYXR0ZXJucworeworCW15ICRsaWJuYW1l ID0gc2hpZnQ7CisKKwlpZiAoJF5PIGVxICdkYXJ3aW4nKQorCXsKKwkJcmV0dXJuICgibGli JGxpYm5hbWUuZHlsaWIiLCAibGliJGxpYm5hbWUuKi5keWxpYiIpOworCX0KKwllbHNpZiAo JF5PIGVxICdNU1dpbjMyJyB8fCAkXk8gZXEgJ2N5Z3dpbicpCisJeworCQlyZXR1cm4gKCIk bGlibmFtZS5kbGwiLCAibGliJGxpYm5hbWUuZGxsIik7CisJfQorCWVsc2UKKwl7CisJCSMg TGludXggYW5kIG90aGVyIFVuaXgtbGlrZSBzeXN0ZW1zCisJCXJldHVybiAoImxpYiRsaWJu YW1lLnNvIiwgImxpYiRsaWJuYW1lLnNvLioiKTsKKwl9Cit9CisKK3N1YiBfZ2V0X3N5c3Rl bV9saWJfcGF0aHMKK3sKKwlteSBAcGF0aHM7CisKKwkjIENvbW1vbiBzeXN0ZW0gbGlicmFy eSBwYXRocworCXB1c2ggQHBhdGhzLCAnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInLCAn L2xpYic7CisKKwkjIEFkZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0aHMgb24gTGludXgK KwlpZiAoJF5PIGVxICdsaW51eCcpCisJeworCQlwdXNoIEBwYXRocywgJy91c3IvbGliL3g4 Nl82NC1saW51eC1nbnUnLCAnL3Vzci9saWIvYWFyY2g2NC1saW51eC1nbnUnOworCQlwdXNo IEBwYXRocywgJy91c3IvbGliNjQnLCAnL2xpYjY0JzsKKwl9CisKKwkjIEFkZCBwYXRocyBm cm9tIExEX0xJQlJBUllfUEFUSAorCWlmICgkRU5We0xEX0xJQlJBUllfUEFUSH0pCisJewor CQlwdXNoIEBwYXRocywgc3BsaXQoLzovLCAkRU5We0xEX0xJQlJBUllfUEFUSH0pOworCX0K KworCSMgbWFjT1Mgc3BlY2lmaWMKKwlpZiAoJF5PIGVxICdkYXJ3aW4nKQorCXsKKwkJcHVz aCBAcGF0aHMsICcvb3B0L2hvbWVicmV3L2xpYicsICcvdXNyL2xvY2FsL29wdC9saWJwcS9s aWInOworCQlpZiAoJEVOVntEWUxEX0xJQlJBUllfUEFUSH0pCisJCXsKKwkJCXB1c2ggQHBh dGhzLCBzcGxpdCgvOi8sICRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9KTsKKwkJfQorCX0KKwor CXJldHVybiBAcGF0aHM7Cit9CisKKz1wb2QKKworPWhlYWQxIFNFRSBBTFNPCisKK0w8UG9z dGdyZVNRTDo6UHFGRkk+CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9QR1R5cGVzLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BH VHlwZXMucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVhODUy M2Q0ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BH VHlwZXMucG0KQEAgLTAsMCArMSwzNTYgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworPXBvZAorCis9aGVh ZDEgTkFNRQorCitQb3N0Z3JlU1FMOjpQR1R5cGVzIC0gUG9zdGdyZVNRTCBiYWNrZW5kIHR5 cGUgT0lEIGNvbnN0YW50cworCis9aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9zdGdyZVNR TDo6UEdUeXBlczsKKworICBpZiAoJHR5cGVfb2lkID09IFRFWFRPSUQpIHsgLi4uIH0KKwor ICBpZiAoJHR5cGVfb2lkID09IElOVDRBUlJBWU9JRCkgeyAuLi4gfQorCis9aGVhZDEgREVT Q1JJUFRJT04KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgY29uc3RhbnRzIGZvciBQb3N0Z3Jl U1FMIGJhY2tlbmQgdHlwZSBPSURzLCBhcyBkZWZpbmVkCitpbiBDPHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfdHlwZV9kLmg+LiBUaGVzZSBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBjb2x1 bW4KK3R5cGVzIGluIHF1ZXJ5IHJlc3VsdHMgdmlhIEM8UFFmdHlwZSgpPi4KKworQWxsIGNv bnN0YW50cyBhcmUgZXhwb3J0ZWQgYnkgZGVmYXVsdC4KKworPWhlYWQxIEVYUE9SVEVEIENP TlNUQU5UUworCis9aGVhZDIgQmFzaWMgVHlwZXMKKworQzxCT09MT0lEPiwgQzxCWVRFQU9J RD4sIEM8Q0hBUk9JRD4sIEM8TkFNRU9JRD4sIEM8SU5UOE9JRD4sIEM8SU5UMk9JRD4sCitD PElOVDJWRUNUT1JPSUQ+LCBDPElOVDRPSUQ+LCBDPFRFWFRPSUQ+LCBDPE9JRE9JRD4sIEM8 VElET0lEPiwgQzxYSURPSUQ+LAorQzxDSURPSUQ+LCBDPE9JRFZFQ1RPUk9JRD4sIEM8SlNP Tk9JRD4sIEM8WE1MT0lEPiwgQzxYSUQ4T0lEPiwgQzxQT0lOVE9JRD4sCitDPExTRUdPSUQ+ LCBDPFBBVEhPSUQ+LCBDPEJPWE9JRD4sIEM8UE9MWUdPTk9JRD4sIEM8TElORU9JRD4sIEM8 RkxPQVQ0T0lEPiwKK0M8RkxPQVQ4T0lEPiwgQzxVTktOT1dOT0lEPiwgQzxDSVJDTEVPSUQ+ LCBDPE1PTkVZT0lEPiwgQzxNQUNBRERST0lEPiwKK0M8SU5FVE9JRD4sIEM8Q0lEUk9JRD4s IEM8TUFDQUREUjhPSUQ+LCBDPEFDTElURU1PSUQ+LCBDPEJQQ0hBUk9JRD4sCitDPFZBUkNI QVJPSUQ+LCBDPERBVEVPSUQ+LCBDPFRJTUVPSUQ+LCBDPFRJTUVTVEFNUE9JRD4sIEM8VElN RVNUQU1QVFpPSUQ+LAorQzxJTlRFUlZBTE9JRD4sIEM8VElNRVRaT0lEPiwgQzxCSVRPSUQ+ LCBDPFZBUkJJVE9JRD4sIEM8TlVNRVJJQ09JRD4sCitDPFJFRkNVUlNPUk9JRD4sIEM8VVVJ RE9JRD4sIEM8VFNWRUNUT1JPSUQ+LCBDPEdUU1ZFQ1RPUk9JRD4sIEM8VFNRVUVSWU9JRD4s CitDPEpTT05CT0lEPiwgQzxKU09OUEFUSE9JRD4sIEM8VFhJRF9TTkFQU0hPVE9JRD4KKwor PWhlYWQyIFJhbmdlIFR5cGVzCisKK0M8SU5UNFJBTkdFT0lEPiwgQzxOVU1SQU5HRU9JRD4s IEM8VFNSQU5HRU9JRD4sIEM8VFNUWlJBTkdFT0lEPiwKK0M8REFURVJBTkdFT0lEPiwgQzxJ TlQ4UkFOR0VPSUQ+CisKKz1oZWFkMiBNdWx0aXJhbmdlIFR5cGVzCisKK0M8SU5UNE1VTFRJ UkFOR0VPSUQ+LCBDPE5VTU1VTFRJUkFOR0VPSUQ+LCBDPFRTTVVMVElSQU5HRU9JRD4sCitD PFRTVFpNVUxUSVJBTkdFT0lEPiwgQzxEQVRFTVVMVElSQU5HRU9JRD4sIEM8SU5UOE1VTFRJ UkFOR0VPSUQ+CisKKz1oZWFkMiBQc2V1ZG8gVHlwZXMKKworQzxSRUNPUkRPSUQ+LCBDPFJF Q09SREFSUkFZT0lEPiwgQzxDU1RSSU5HT0lEPiwgQzxWT0lET0lEPiwgQzxUUklHR0VST0lE PiwKK0M8RVZFTlRfVFJJR0dFUk9JRD4KKworPWhlYWQyIEFycmF5IFR5cGVzCisKK0FycmF5 IHR5cGUgT0lEcyBmb2xsb3cgdGhlIHBhdHRlcm4gQzx7QkFTRU5BTUV9QVJSQVlPSUQ+LCBl LmcuLCBDPFRFWFRBUlJBWU9JRD4sCitDPElOVDRBUlJBWU9JRD4sIEM8SlNPTkJBUlJBWU9J RD4uCisKKz1jdXQKKworcGFja2FnZSBQb3N0Z3JlU1FMOjpQR1R5cGVzOworCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBFeHBvcnRlciBx dyhpbXBvcnQpOworCitvdXIgQEVYUE9SVCA9IHF3KAorCisgIEJPT0xPSUQKKyAgQllURUFP SUQKKyAgQ0hBUk9JRAorICBOQU1FT0lECisgIElOVDhPSUQKKyAgSU5UMk9JRAorICBJTlQy VkVDVE9ST0lECisgIElOVDRPSUQKKyAgVEVYVE9JRAorICBPSURPSUQKKyAgVElET0lECisg IFhJRE9JRAorICBDSURPSUQKKyAgT0lEVkVDVE9ST0lECisgIEpTT05PSUQKKyAgWE1MT0lE CisgIFhJRDhPSUQKKyAgUE9JTlRPSUQKKyAgTFNFR09JRAorICBQQVRIT0lECisgIEJPWE9J RAorICBQT0xZR09OT0lECisgIExJTkVPSUQKKyAgRkxPQVQ0T0lECisgIEZMT0FUOE9JRAor ICBVTktOT1dOT0lECisgIENJUkNMRU9JRAorICBNT05FWU9JRAorICBNQUNBRERST0lECisg IElORVRPSUQKKyAgQ0lEUk9JRAorICBNQUNBRERSOE9JRAorICBBQ0xJVEVNT0lECisgIEJQ Q0hBUk9JRAorICBWQVJDSEFST0lECisgIERBVEVPSUQKKyAgVElNRU9JRAorICBUSU1FU1RB TVBPSUQKKyAgVElNRVNUQU1QVFpPSUQKKyAgSU5URVJWQUxPSUQKKyAgVElNRVRaT0lECisg IEJJVE9JRAorICBWQVJCSVRPSUQKKyAgTlVNRVJJQ09JRAorICBSRUZDVVJTT1JPSUQKKyAg VVVJRE9JRAorICBUU1ZFQ1RPUk9JRAorICBHVFNWRUNUT1JPSUQKKyAgVFNRVUVSWU9JRAor ICBKU09OQk9JRAorICBKU09OUEFUSE9JRAorICBUWElEX1NOQVBTSE9UT0lECisgIElOVDRS QU5HRU9JRAorICBOVU1SQU5HRU9JRAorICBUU1JBTkdFT0lECisgIFRTVFpSQU5HRU9JRAor ICBEQVRFUkFOR0VPSUQKKyAgSU5UOFJBTkdFT0lECisgIElOVDRNVUxUSVJBTkdFT0lECisg IE5VTU1VTFRJUkFOR0VPSUQKKyAgVFNNVUxUSVJBTkdFT0lECisgIFRTVFpNVUxUSVJBTkdF T0lECisgIERBVEVNVUxUSVJBTkdFT0lECisgIElOVDhNVUxUSVJBTkdFT0lECisgIFJFQ09S RE9JRAorICBSRUNPUkRBUlJBWU9JRAorICBDU1RSSU5HT0lECisgIFZPSURPSUQKKyAgVFJJ R0dFUk9JRAorICBFVkVOVF9UUklHR0VST0lECisKKyAgQk9PTEFSUkFZT0lECisgIEJZVEVB QVJSQVlPSUQKKyAgQ0hBUkFSUkFZT0lECisgIE5BTUVBUlJBWU9JRAorICBJTlQ4QVJSQVlP SUQKKyAgSU5UMkFSUkFZT0lECisgIElOVDJWRUNUT1JBUlJBWU9JRAorICBJTlQ0QVJSQVlP SUQKKyAgVEVYVEFSUkFZT0lECisgIE9JREFSUkFZT0lECisgIFRJREFSUkFZT0lECisgIFhJ REFSUkFZT0lECisgIENJREFSUkFZT0lECisgIE9JRFZFQ1RPUkFSUkFZT0lECisgIEpTT05B UlJBWU9JRAorICBYTUxBUlJBWU9JRAorICBYSUQ4QVJSQVlPSUQKKyAgUE9JTlRBUlJBWU9J RAorICBMU0VHQVJSQVlPSUQKKyAgUEFUSEFSUkFZT0lECisgIEJPWEFSUkFZT0lECisgIFBP TFlHT05BUlJBWU9JRAorICBMSU5FQVJSQVlPSUQKKyAgRkxPQVQ0QVJSQVlPSUQKKyAgRkxP QVQ4QVJSQVlPSUQKKyAgQ0lSQ0xFQVJSQVlPSUQKKyAgTU9ORVlBUlJBWU9JRAorICBNQUNB RERSQVJSQVlPSUQKKyAgSU5FVEFSUkFZT0lECisgIENJRFJBUlJBWU9JRAorICBNQUNBRERS OEFSUkFZT0lECisgIEFDTElURU1BUlJBWU9JRAorICBCUENIQVJBUlJBWU9JRAorICBWQVJD SEFSQVJSQVlPSUQKKyAgREFURUFSUkFZT0lECisgIFRJTUVBUlJBWU9JRAorICBUSU1FU1RB TVBBUlJBWU9JRAorICBUSU1FU1RBTVBUWkFSUkFZT0lECisgIElOVEVSVkFMQVJSQVlPSUQK KyAgVElNRVRaQVJSQVlPSUQKKyAgQklUQVJSQVlPSUQKKyAgVkFSQklUQVJSQVlPSUQKKyAg TlVNRVJJQ0FSUkFZT0lECisgIFJFRkNVUlNPUkFSUkFZT0lECisgIFVVSURBUlJBWU9JRAor ICBUU1ZFQ1RPUkFSUkFZT0lECisgIEdUU1ZFQ1RPUkFSUkFZT0lECisgIFRTUVVFUllBUlJB WU9JRAorICBKU09OQkFSUkFZT0lECisgIEpTT05QQVRIQVJSQVlPSUQKKyAgVFhJRF9TTkFQ U0hPVEFSUkFZT0lECisgIElOVDRSQU5HRUFSUkFZT0lECisgIE5VTVJBTkdFQVJSQVlPSUQK KyAgVFNSQU5HRUFSUkFZT0lECisgIFRTVFpSQU5HRUFSUkFZT0lECisgIERBVEVSQU5HRUFS UkFZT0lECisgIElOVDhSQU5HRUFSUkFZT0lECisgIElOVDRNVUxUSVJBTkdFQVJSQVlPSUQK KyAgTlVNTVVMVElSQU5HRUFSUkFZT0lECisgIFRTTVVMVElSQU5HRUFSUkFZT0lECisgIFRT VFpNVUxUSVJBTkdFQVJSQVlPSUQKKyAgREFURU1VTFRJUkFOR0VBUlJBWU9JRAorICBJTlQ4 TVVMVElSQU5HRUFSUkFZT0lECisgIENTVFJJTkdBUlJBWU9JRAorCispOworCit1c2UgY29u c3RhbnQgeworCUJPT0xPSUQgICAgICAgICAgICAgICAgID0+IDE2LAorCUJZVEVBT0lEICAg ICAgICAgICAgICAgID0+IDE3LAorCUNIQVJPSUQgICAgICAgICAgICAgICAgID0+IDE4LAor CU5BTUVPSUQgICAgICAgICAgICAgICAgID0+IDE5LAorCUlOVDhPSUQgICAgICAgICAgICAg ICAgID0+IDIwLAorCUlOVDJPSUQgICAgICAgICAgICAgICAgID0+IDIxLAorCUlOVDJWRUNU T1JPSUQgICAgICAgICAgID0+IDIyLAorCUlOVDRPSUQgICAgICAgICAgICAgICAgID0+IDIz LAorCVRFWFRPSUQgICAgICAgICAgICAgICAgID0+IDI1LAorCU9JRE9JRCAgICAgICAgICAg ICAgICAgID0+IDI2LAorCVRJRE9JRCAgICAgICAgICAgICAgICAgID0+IDI3LAorCVhJRE9J RCAgICAgICAgICAgICAgICAgID0+IDI4LAorCUNJRE9JRCAgICAgICAgICAgICAgICAgID0+ IDI5LAorCU9JRFZFQ1RPUk9JRCAgICAgICAgICAgID0+IDMwLAorCUpTT05PSUQgICAgICAg ICAgICAgICAgID0+IDExNCwKKwlYTUxPSUQgICAgICAgICAgICAgICAgICA9PiAxNDIsCisJ WElEOE9JRCAgICAgICAgICAgICAgICAgPT4gNTA2OSwKKwlQT0lOVE9JRCAgICAgICAgICAg ICAgICA9PiA2MDAsCisJTFNFR09JRCAgICAgICAgICAgICAgICAgPT4gNjAxLAorCVBBVEhP SUQgICAgICAgICAgICAgICAgID0+IDYwMiwKKwlCT1hPSUQgICAgICAgICAgICAgICAgICA9 PiA2MDMsCisJUE9MWUdPTk9JRCAgICAgICAgICAgICAgPT4gNjA0LAorCUxJTkVPSUQgICAg ICAgICAgICAgICAgID0+IDYyOCwKKwlGTE9BVDRPSUQgICAgICAgICAgICAgICA9PiA3MDAs CisJRkxPQVQ4T0lEICAgICAgICAgICAgICAgPT4gNzAxLAorCVVOS05PV05PSUQgICAgICAg ICAgICAgID0+IDcwNSwKKwlDSVJDTEVPSUQgICAgICAgICAgICAgICA9PiA3MTgsCisJTU9O RVlPSUQgICAgICAgICAgICAgICAgPT4gNzkwLAorCU1BQ0FERFJPSUQgICAgICAgICAgICAg ID0+IDgyOSwKKwlJTkVUT0lEICAgICAgICAgICAgICAgICA9PiA4NjksCisJQ0lEUk9JRCAg ICAgICAgICAgICAgICAgPT4gNjUwLAorCU1BQ0FERFI4T0lEICAgICAgICAgICAgID0+IDc3 NCwKKwlBQ0xJVEVNT0lEICAgICAgICAgICAgICA9PiAxMDMzLAorCUJQQ0hBUk9JRCAgICAg ICAgICAgICAgID0+IDEwNDIsCisJVkFSQ0hBUk9JRCAgICAgICAgICAgICAgPT4gMTA0MywK KwlEQVRFT0lEICAgICAgICAgICAgICAgICA9PiAxMDgyLAorCVRJTUVPSUQgICAgICAgICAg ICAgICAgID0+IDEwODMsCisJVElNRVNUQU1QT0lEICAgICAgICAgICAgPT4gMTExNCwKKwlU SU1FU1RBTVBUWk9JRCAgICAgICAgICA9PiAxMTg0LAorCUlOVEVSVkFMT0lEICAgICAgICAg ICAgID0+IDExODYsCisJVElNRVRaT0lEICAgICAgICAgICAgICAgPT4gMTI2NiwKKwlCSVRP SUQgICAgICAgICAgICAgICAgICA9PiAxNTYwLAorCVZBUkJJVE9JRCAgICAgICAgICAgICAg ID0+IDE1NjIsCisJTlVNRVJJQ09JRCAgICAgICAgICAgICAgPT4gMTcwMCwKKwlSRUZDVVJT T1JPSUQgICAgICAgICAgICA9PiAxNzkwLAorCVVVSURPSUQgICAgICAgICAgICAgICAgID0+ IDI5NTAsCisJVFNWRUNUT1JPSUQgICAgICAgICAgICAgPT4gMzYxNCwKKwlHVFNWRUNUT1JP SUQgICAgICAgICAgICA9PiAzNjQyLAorCVRTUVVFUllPSUQgICAgICAgICAgICAgID0+IDM2 MTUsCisJSlNPTkJPSUQgICAgICAgICAgICAgICAgPT4gMzgwMiwKKwlKU09OUEFUSE9JRCAg ICAgICAgICAgICA9PiA0MDcyLAorCVRYSURfU05BUFNIT1RPSUQgICAgICAgID0+IDI5NzAs CisJSU5UNFJBTkdFT0lEICAgICAgICAgICAgPT4gMzkwNCwKKwlOVU1SQU5HRU9JRCAgICAg ICAgICAgICA9PiAzOTA2LAorCVRTUkFOR0VPSUQgICAgICAgICAgICAgID0+IDM5MDgsCisJ VFNUWlJBTkdFT0lEICAgICAgICAgICAgPT4gMzkxMCwKKwlEQVRFUkFOR0VPSUQgICAgICAg ICAgICA9PiAzOTEyLAorCUlOVDhSQU5HRU9JRCAgICAgICAgICAgID0+IDM5MjYsCisJSU5U NE1VTFRJUkFOR0VPSUQgICAgICAgPT4gNDQ1MSwKKwlOVU1NVUxUSVJBTkdFT0lEICAgICAg ICA9PiA0NTMyLAorCVRTTVVMVElSQU5HRU9JRCAgICAgICAgID0+IDQ1MzMsCisJVFNUWk1V TFRJUkFOR0VPSUQgICAgICAgPT4gNDUzNCwKKwlEQVRFTVVMVElSQU5HRU9JRCAgICAgICA9 PiA0NTM1LAorCUlOVDhNVUxUSVJBTkdFT0lEICAgICAgID0+IDQ1MzYsCisJUkVDT1JET0lE ICAgICAgICAgICAgICAgPT4gMjI0OSwKKwlSRUNPUkRBUlJBWU9JRCAgICAgICAgICA9PiAy Mjg3LAorCUNTVFJJTkdPSUQgICAgICAgICAgICAgID0+IDIyNzUsCisJVk9JRE9JRCAgICAg ICAgICAgICAgICAgPT4gMjI3OCwKKwlUUklHR0VST0lEICAgICAgICAgICAgICA9PiAyMjc5 LAorCUVWRU5UX1RSSUdHRVJPSUQgICAgICAgID0+IDM4MzgsCisKKwlCT09MQVJSQVlPSUQg ICAgICAgICAgICA9PiAxMDAwLAorCUJZVEVBQVJSQVlPSUQgICAgICAgICAgID0+IDEwMDEs CisJQ0hBUkFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwMiwKKwlOQU1FQVJSQVlPSUQgICAg ICAgICAgICA9PiAxMDAzLAorCUlOVDhBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMTYsCisJ SU5UMkFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwNSwKKwlJTlQyVkVDVE9SQVJSQVlPSUQg ICAgICA9PiAxMDA2LAorCUlOVDRBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMDcsCisJVEVY VEFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwOSwKKwlPSURBUlJBWU9JRCAgICAgICAgICAg ICA9PiAxMDI4LAorCVRJREFSUkFZT0lEICAgICAgICAgICAgID0+IDEwMTAsCisJWElEQVJS QVlPSUQgICAgICAgICAgICAgPT4gMTAxMSwKKwlDSURBUlJBWU9JRCAgICAgICAgICAgICA9 PiAxMDEyLAorCU9JRFZFQ1RPUkFSUkFZT0lEICAgICAgID0+IDEwMTMsCisJSlNPTkFSUkFZ T0lEICAgICAgICAgICAgPT4gMTk5LAorCVhNTEFSUkFZT0lEICAgICAgICAgICAgID0+IDE0 MywKKwlYSUQ4QVJSQVlPSUQgICAgICAgICAgICA9PiAyNzEsCisJUE9JTlRBUlJBWU9JRCAg ICAgICAgICAgPT4gMTAxNywKKwlMU0VHQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDE4LAor CVBBVEhBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMTksCisJQk9YQVJSQVlPSUQgICAgICAg ICAgICAgPT4gMTAyMCwKKwlQT0xZR09OQVJSQVlPSUQgICAgICAgICA9PiAxMDI3LAorCUxJ TkVBUlJBWU9JRCAgICAgICAgICAgID0+IDYyOSwKKwlGTE9BVDRBUlJBWU9JRCAgICAgICAg ICA9PiAxMDIxLAorCUZMT0FUOEFSUkFZT0lEICAgICAgICAgID0+IDEwMjIsCisJQ0lSQ0xF QVJSQVlPSUQgICAgICAgICAgPT4gNzE5LAorCU1PTkVZQVJSQVlPSUQgICAgICAgICAgID0+ IDc5MSwKKwlNQUNBRERSQVJSQVlPSUQgICAgICAgICA9PiAxMDQwLAorCUlORVRBUlJBWU9J RCAgICAgICAgICAgID0+IDEwNDEsCisJQ0lEUkFSUkFZT0lEICAgICAgICAgICAgPT4gNjUx LAorCU1BQ0FERFI4QVJSQVlPSUQgICAgICAgID0+IDc3NSwKKwlBQ0xJVEVNQVJSQVlPSUQg ICAgICAgICA9PiAxMDM0LAorCUJQQ0hBUkFSUkFZT0lEICAgICAgICAgID0+IDEwMTQsCisJ VkFSQ0hBUkFSUkFZT0lEICAgICAgICAgPT4gMTAxNSwKKwlEQVRFQVJSQVlPSUQgICAgICAg ICAgICA9PiAxMTgyLAorCVRJTUVBUlJBWU9JRCAgICAgICAgICAgID0+IDExODMsCisJVElN RVNUQU1QQVJSQVlPSUQgICAgICAgPT4gMTExNSwKKwlUSU1FU1RBTVBUWkFSUkFZT0lEICAg ICA9PiAxMTg1LAorCUlOVEVSVkFMQVJSQVlPSUQgICAgICAgID0+IDExODcsCisJVElNRVRa QVJSQVlPSUQgICAgICAgICAgPT4gMTI3MCwKKwlCSVRBUlJBWU9JRCAgICAgICAgICAgICA9 PiAxNTYxLAorCVZBUkJJVEFSUkFZT0lEICAgICAgICAgID0+IDE1NjMsCisJTlVNRVJJQ0FS UkFZT0lEICAgICAgICAgPT4gMTIzMSwKKwlSRUZDVVJTT1JBUlJBWU9JRCAgICAgICA9PiAy MjAxLAorCVVVSURBUlJBWU9JRCAgICAgICAgICAgID0+IDI5NTEsCisJVFNWRUNUT1JBUlJB WU9JRCAgICAgICAgPT4gMzY0MywKKwlHVFNWRUNUT1JBUlJBWU9JRCAgICAgICA9PiAzNjQ0 LAorCVRTUVVFUllBUlJBWU9JRCAgICAgICAgID0+IDM2NDUsCisJSlNPTkJBUlJBWU9JRCAg ICAgICAgICAgPT4gMzgwNywKKwlKU09OUEFUSEFSUkFZT0lEICAgICAgICA9PiA0MDczLAor CVRYSURfU05BUFNIT1RBUlJBWU9JRCAgID0+IDI5NDksCisJSU5UNFJBTkdFQVJSQVlPSUQg ICAgICAgPT4gMzkwNSwKKwlOVU1SQU5HRUFSUkFZT0lEICAgICAgICA9PiAzOTA3LAorCVRT UkFOR0VBUlJBWU9JRCAgICAgICAgID0+IDM5MDksCisJVFNUWlJBTkdFQVJSQVlPSUQgICAg ICAgPT4gMzkxMSwKKwlEQVRFUkFOR0VBUlJBWU9JRCAgICAgICA9PiAzOTEzLAorCUlOVDhS QU5HRUFSUkFZT0lEICAgICAgID0+IDM5MjcsCisJSU5UNE1VTFRJUkFOR0VBUlJBWU9JRCAg PT4gNjE1MCwKKwlOVU1NVUxUSVJBTkdFQVJSQVlPSUQgICA9PiA2MTUxLAorCVRTTVVMVElS QU5HRUFSUkFZT0lEICAgID0+IDYxNTIsCisJVFNUWk1VTFRJUkFOR0VBUlJBWU9JRCAgPT4g NjE1MywKKwlEQVRFTVVMVElSQU5HRUFSUkFZT0lEICA9PiA2MTU1LAorCUlOVDhNVUxUSVJB TkdFQVJSQVlPSUQgID0+IDYxNTcsCisJQ1NUUklOR0FSUkFZT0lEICAgICAgICAgPT4gMTI2 MywKK307CisKKz1wb2QKKworPWhlYWQxIFNFRSBBTFNPCisKK0w8UG9zdGdyZVNRTDo6UHFG Rkk+LCBMPFBvc3RncmVTUUw6OlRlc3Q6OlBxPiwgTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uPgorCis9Y3V0CisKKzE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvUHFDb25zdGFudHMucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFDb25zdGFu dHMucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4MjVmY2U1 MDdkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29u c3RhbnRzLnBtCkBAIC0wLDAgKzEsMTg2IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIw MjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKz1wb2QKKworPWhl YWQxIE5BTUUKKworUG9zdGdyZVNRTDo6UHFDb25zdGFudHMgLSBsaWJwcSBjb25zdGFudHMg Zm9yIFBvc3RncmVTUUwgVEFQIHRlc3RzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQ b3N0Z3JlU1FMOjpQcUNvbnN0YW50czsKKworICBpZiAoUFFzdGF0dXMoJGNvbm4pID09IENP Tk5FQ1RJT05fT0spIHsgLi4uIH0KKworICBpZiAoUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCkg PT0gUEdSRVNfVFVQTEVTX09LKSB7IC4uLiB9CisKKz1oZWFkMSBERVNDUklQVElPTgorCitU aGlzIG1vZHVsZSBwcm92aWRlcyBsaWJwcSBjb25zdGFudHMgc2hhcmVkIGJ5IGJvdGggdGhl IEZGSQorKEM8UG9zdGdyZVNRTDo6UHFGRkk+KSBhbmQgWFMgKEM8UG9zdGdyZVNRTDo6VGVz dDo6UHE+KSBiYWNrZW5kcy4KK0FsbCBjb25zdGFudHMgYXJlIGV4cG9ydGVkIGJ5IGRlZmF1 bHQuCisKKz1oZWFkMSBFWFBPUlRFRCBDT05TVEFOVFMKKworPWhlYWQyIENvbm5lY3Rpb24g U3RhdHVzIChDb25uU3RhdHVzVHlwZSkKKworQzxDT05ORUNUSU9OX09LPiwgQzxDT05ORUNU SU9OX0JBRD4sIEM8Q09OTkVDVElPTl9TVEFSVEVEPiwKK0M8Q09OTkVDVElPTl9NQURFPiwg QzxDT05ORUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFPiwgQzxDT05ORUNUSU9OX0FVVEhfT0s+ LAorQzxDT05ORUNUSU9OX1NFVEVOVj4sIEM8Q09OTkVDVElPTl9TU0xfU1RBUlRVUD4sIEM8 Q09OTkVDVElPTl9ORUVERUQ+LAorQzxDT05ORUNUSU9OX0NIRUNLX1dSSVRBQkxFPiwgQzxD T05ORUNUSU9OX0NPTlNVTUU+LCBDPENPTk5FQ1RJT05fR1NTX1NUQVJUVVA+LAorQzxDT05O RUNUSU9OX0NIRUNLX1RBUkdFVD4sIEM8Q09OTkVDVElPTl9DSEVDS19TVEFOREJZPiwgQzxD T05ORUNUSU9OX0FMTE9DQVRFRD4KKworPWhlYWQyIEV4ZWN1dGlvbiBTdGF0dXMgKEV4ZWNT dGF0dXNUeXBlKQorCitDPFBHUkVTX0VNUFRZX1FVRVJZPiwgQzxQR1JFU19DT01NQU5EX09L PiwgQzxQR1JFU19UVVBMRVNfT0s+LAorQzxQR1JFU19DT1BZX09VVD4sIEM8UEdSRVNfQ09Q WV9JTj4sIEM8UEdSRVNfQkFEX1JFU1BPTlNFPiwKK0M8UEdSRVNfTk9ORkFUQUxfRVJST1I+ LCBDPFBHUkVTX0ZBVEFMX0VSUk9SPiwgQzxQR1JFU19DT1BZX0JPVEg+LAorQzxQR1JFU19T SU5HTEVfVFVQTEU+LCBDPFBHUkVTX1BJUEVMSU5FX1NZTkM+LCBDPFBHUkVTX1BJUEVMSU5F X0FCT1JURUQ+LAorQzxQR1JFU19UVVBMRVNfQ0hVTks+CisKKz1oZWFkMiBQb2xsaW5nIFN0 YXR1cyAoUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSkKKworQzxQR1JFU19QT0xMSU5HX0ZB SUxFRD4sIEM8UEdSRVNfUE9MTElOR19SRUFESU5HPiwgQzxQR1JFU19QT0xMSU5HX1dSSVRJ Tkc+LAorQzxQR1JFU19QT0xMSU5HX09LPiwgQzxQR1JFU19QT0xMSU5HX0FDVElWRT4KKwor PWhlYWQyIFBpbmcgU3RhdHVzIChQR1BpbmcpCisKK0M8UFFQSU5HX09LPiwgQzxQUVBJTkdf UkVKRUNUPiwgQzxQUVBJTkdfTk9fUkVTUE9OU0U+LCBDPFBRUElOR19OT19BVFRFTVBUPgor Cis9aGVhZDIgVHJhbnNhY3Rpb24gU3RhdHVzIChQR1RyYW5zYWN0aW9uU3RhdHVzVHlwZSkK KworQzxQUVRSQU5TX0lETEU+LCBDPFBRVFJBTlNfQUNUSVZFPiwgQzxQUVRSQU5TX0lOVFJB TlM+LCBDPFBRVFJBTlNfSU5FUlJPUj4sCitDPFBRVFJBTlNfVU5LTk9XTj4KKworPWN1dAor CitwYWNrYWdlIFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzOworCit1c2Ugc3RyaWN0OwordXNl IHdhcm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBFeHBvcnRlciBxdyhpbXBvcnQp OworCitvdXIgQEVYUE9SVCA9IHF3KAorCisgIENPTk5FQ1RJT05fT0sKKyAgQ09OTkVDVElP Tl9CQUQKKyAgQ09OTkVDVElPTl9TVEFSVEVECisgIENPTk5FQ1RJT05fTUFERQorICBDT05O RUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFCisgIENPTk5FQ1RJT05fQVVUSF9PSworICBDT05O RUNUSU9OX1NFVEVOVgorICBDT05ORUNUSU9OX1NTTF9TVEFSVFVQCisgIENPTk5FQ1RJT05f TkVFREVECisgIENPTk5FQ1RJT05fQ0hFQ0tfV1JJVEFCTEUKKyAgQ09OTkVDVElPTl9DT05T VU1FCisgIENPTk5FQ1RJT05fR1NTX1NUQVJUVVAKKyAgQ09OTkVDVElPTl9DSEVDS19UQVJH RVQKKyAgQ09OTkVDVElPTl9DSEVDS19TVEFOREJZCisgIENPTk5FQ1RJT05fQUxMT0NBVEVE CisKKyAgUEdSRVNfRU1QVFlfUVVFUlkKKyAgUEdSRVNfQ09NTUFORF9PSworICBQR1JFU19U VVBMRVNfT0sKKyAgUEdSRVNfQ09QWV9PVVQKKyAgUEdSRVNfQ09QWV9JTgorICBQR1JFU19C QURfUkVTUE9OU0UKKyAgUEdSRVNfTk9ORkFUQUxfRVJST1IKKyAgUEdSRVNfRkFUQUxfRVJS T1IKKyAgUEdSRVNfQ09QWV9CT1RICisgIFBHUkVTX1NJTkdMRV9UVVBMRQorICBQR1JFU19Q SVBFTElORV9TWU5DCisgIFBHUkVTX1BJUEVMSU5FX0FCT1JURUQKKyAgUEdSRVNfVFVQTEVT X0NIVU5LCisKKyAgUEdSRVNfUE9MTElOR19GQUlMRUQKKyAgUEdSRVNfUE9MTElOR19SRUFE SU5HCisgIFBHUkVTX1BPTExJTkdfV1JJVElORworICBQR1JFU19QT0xMSU5HX09LCisgIFBH UkVTX1BPTExJTkdfQUNUSVZFCisKKyAgUFFQSU5HX09LCisgIFBRUElOR19SRUpFQ1QKKyAg UFFQSU5HX05PX1JFU1BPTlNFCisgIFBRUElOR19OT19BVFRFTVBUCisKKyAgUFFUUkFOU19J RExFCisgIFBRVFJBTlNfQUNUSVZFCisgIFBRVFJBTlNfSU5UUkFOUworICBQUVRSQU5TX0lO RVJST1IKKyAgUFFUUkFOU19VTktOT1dOCisKKyk7CisKKyMgQ29ublN0YXR1c1R5cGU6Cit1 c2UgY29uc3RhbnQgeworCUNPTk5FQ1RJT05fT0sgICAgICAgICAgICAgICAgID0+IDAsCisJ Q09OTkVDVElPTl9CQUQgICAgICAgICAgICAgICAgPT4gMSwKKwlDT05ORUNUSU9OX1NUQVJU RUQgICAgICAgICAgICA9PiAyLAorCUNPTk5FQ1RJT05fTUFERSAgICAgICAgICAgICAgID0+ IDMsCisJQ09OTkVDVElPTl9BV0FJVElOR19SRVNQT05TRSAgPT4gNCwKKwlDT05ORUNUSU9O X0FVVEhfT0sgICAgICAgICAgICA9PiA1LAorCUNPTk5FQ1RJT05fU0VURU5WICAgICAgICAg ICAgID0+IDYsCisJQ09OTkVDVElPTl9TU0xfU1RBUlRVUCAgICAgICAgPT4gNywKKwlDT05O RUNUSU9OX05FRURFRCAgICAgICAgICAgICA9PiA4LAorCUNPTk5FQ1RJT05fQ0hFQ0tfV1JJ VEFCTEUgICAgID0+IDksCisJQ09OTkVDVElPTl9DT05TVU1FICAgICAgICAgICAgPT4gMTAs CisJQ09OTkVDVElPTl9HU1NfU1RBUlRVUCAgICAgICAgPT4gMTEsCisJQ09OTkVDVElPTl9D SEVDS19UQVJHRVQgICAgICAgPT4gMTIsCisJQ09OTkVDVElPTl9DSEVDS19TVEFOREJZICAg ICAgPT4gMTMsCisJQ09OTkVDVElPTl9BTExPQ0FURUQgICAgICAgICAgPT4gMTQsCit9Owor CisjIEV4ZWNTdGF0dXNUeXBlOgordXNlIGNvbnN0YW50IHsKKwlQR1JFU19FTVBUWV9RVUVS WSAgICAgPT4gMCwKKwlQR1JFU19DT01NQU5EX09LICAgICAgPT4gMSwKKwlQR1JFU19UVVBM RVNfT0sgICAgICAgPT4gMiwKKwlQR1JFU19DT1BZX09VVCAgICAgICAgPT4gMywKKwlQR1JF U19DT1BZX0lOICAgICAgICAgPT4gNCwKKwlQR1JFU19CQURfUkVTUE9OU0UgICAgPT4gNSwK KwlQR1JFU19OT05GQVRBTF9FUlJPUiAgPT4gNiwKKwlQR1JFU19GQVRBTF9FUlJPUiAgICAg PT4gNywKKwlQR1JFU19DT1BZX0JPVEggICAgICAgPT4gOCwKKwlQR1JFU19TSU5HTEVfVFVQ TEUgICAgPT4gOSwKKwlQR1JFU19QSVBFTElORV9TWU5DICAgPT4gMTAsCisJUEdSRVNfUElQ RUxJTkVfQUJPUlRFRCA9PiAxMSwKKwlQR1JFU19UVVBMRVNfQ0hVTksgICAgPT4gMTIsCit9 OworCisjIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGU6Cit1c2UgY29uc3RhbnQgeworCVBH UkVTX1BPTExJTkdfRkFJTEVEICA9PiAwLAorCVBHUkVTX1BPTExJTkdfUkVBRElORyA9PiAx LAorCVBHUkVTX1BPTExJTkdfV1JJVElORyA9PiAyLAorCVBHUkVTX1BPTExJTkdfT0sgICAg ICA9PiAzLAorCVBHUkVTX1BPTExJTkdfQUNUSVZFICA9PiA0LAorfTsKKworIyBQR1Bpbmc6 Cit1c2UgY29uc3RhbnQgeworCVBRUElOR19PSyAgICAgICAgICA9PiAwLAorCVBRUElOR19S RUpFQ1QgICAgICA9PiAxLAorCVBRUElOR19OT19SRVNQT05TRSA9PiAyLAorCVBRUElOR19O T19BVFRFTVBUICA9PiAzLAorfTsKKworIyBQR1RyYW5zYWN0aW9uU3RhdHVzVHlwZToKK3Vz ZSBjb25zdGFudCB7CisJUFFUUkFOU19JRExFICAgID0+IDAsCisJUFFUUkFOU19BQ1RJVkUg ID0+IDEsCisJUFFUUkFOU19JTlRSQU5TID0+IDIsCisJUFFUUkFOU19JTkVSUk9SID0+IDMs CisJUFFUUkFOU19VTktOT1dOID0+IDQsCit9OworCis9cG9kCisKKz1oZWFkMSBTRUUgQUxT TworCitMPFBvc3RncmVTUUw6OlBxRkZJPiwgTDxQb3N0Z3JlU1FMOjpUZXN0OjpQcT4sIEw8 UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbj4KKworPWN1dAorCisxOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxRkZJLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0 Z3JlU1FML1BxRkZJLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5lMTk2ZmIzM2U0NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZVNRTC9QcUZGSS5wbQpAQCAtMCwwICsxLDQyMyBAQAorCisjIENvcHlyaWdodCAoYykgMjAy MS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisK Kz1oZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6OlBxRkZJIC0gRkZJIHdyYXBwZXIgZm9yIGxp YnBxCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FMOjpQcUZGSTsKKwor ICAjIEluaXRpYWxpemUgdGhlIEZGSSBiaW5kaW5ncyAocmVxdWlyZWQgYmVmb3JlIHVzZSkK KyAgUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRsaWJkaXIpOworCisgICMgQ29ubmVjdCB0 byBkYXRhYmFzZQorICBteSAkY29ubiA9IFBRY29ubmVjdGRiKCJkYm5hbWU9cG9zdGdyZXMi KTsKKyAgZGllIFBRZXJyb3JNZXNzYWdlKCRjb25uKSB1bmxlc3MgUFFzdGF0dXMoJGNvbm4p ID09IENPTk5FQ1RJT05fT0s7CisKKyAgIyBFeGVjdXRlIHF1ZXJ5CisgIG15ICRyZXN1bHQg PSBQUWV4ZWMoJGNvbm4sICJTRUxFQ1QgMSIpOworICBpZiAoUFFyZXN1bHRTdGF0dXMoJHJl c3VsdCkgPT0gUEdSRVNfVFVQTEVTX09LKSB7CisgICAgICBwcmludCBQUWdldHZhbHVlKCRy ZXN1bHQsIDAsIDApLCAiXG4iOworICB9CisgIFBRY2xlYXIoJHJlc3VsdCk7CisKKyAgUFFm aW5pc2goJGNvbm4pOworCis9aGVhZDEgREVTQ1JJUFRJT04KKworVGhpcyBtb2R1bGUgcHJv dmlkZXMgUGVybCBiaW5kaW5ncyB0byBsaWJwcSB1c2luZyBMPEZGSTo6UGxhdHlwdXM+Lgor SXQgaXMgdGhlIGRlZmF1bHQgYmFja2VuZCBmb3IgTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uPiB3aGVuCitDPFBHX1VTRV9QUV9YUz4gaXMgbm90IHNldC4KKworVGhlIG1vZHVsZSBt dXN0IGJlIGluaXRpYWxpemVkIGJ5IGNhbGxpbmcgQzxzZXR1cCgpPiBiZWZvcmUgYW55IGxp YnBxCitmdW5jdGlvbnMgY2FuIGJlIHVzZWQuCisKKz1oZWFkMSBGVU5DVElPTlMKKworPWhl YWQyIHNldHVwKCRsaWJkaXIgWywgJHVzZV9zeXN0ZW1fcGF0aF0pCisKK0luaXRpYWxpemUg dGhlIEZGSSBiaW5kaW5ncy4gQzwkbGliZGlyPiBzcGVjaWZpZXMgd2hlcmUgdG8gZmluZCBs aWJwcS4KK0lmIEM8JHVzZV9zeXN0ZW1fcGF0aD4gaXMgZmFsc2UsIG9ubHkgQzwkbGliZGly PiBpcyBzZWFyY2hlZC4KKworPWhlYWQyIGxpYnBxIEZ1bmN0aW9ucworCitBbGwgc3RhbmRh cmQgbGlicHEgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gU2VlIHRoZSBQb3N0Z3JlU1FMIGxp YnBxCitkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiBDb21tb25seSB1c2VkIGZ1bmN0aW9u cyBpbmNsdWRlOgorCitCPENvbm5lY3Rpb246PiBDPFBRY29ubmVjdGRiPiwgQzxQUWNvbm5l Y3RTdGFydD4sIEM8UFFjb25uZWN0UG9sbD4sCitDPFBRZmluaXNoPiwgQzxQUXN0YXR1cz4s IEM8UFFlcnJvck1lc3NhZ2U+CisKK0I8RXhlY3V0aW9uOj4gQzxQUWV4ZWM+LCBDPFBRZXhl Y1BhcmFtcz4sIEM8UFFwcmVwYXJlPiwgQzxQUWV4ZWNQcmVwYXJlZD4sCitDPFBRc2VuZFF1 ZXJ5PiwgQzxQUWdldFJlc3VsdD4sIEM8UFFjbGVhcj4KKworQjxSZXN1bHRzOj4gQzxQUXJl c3VsdFN0YXR1cz4sIEM8UFFudHVwbGVzPiwgQzxQUW5maWVsZHM+LCBDPFBRZm5hbWU+LAor QzxQUWZ0eXBlPiwgQzxQUWdldHZhbHVlPiwgQzxQUWdldGlzbnVsbD4KKworQjxQaXBlbGlu ZTo+IEM8UFFlbnRlclBpcGVsaW5lTW9kZT4sIEM8UFFleGl0UGlwZWxpbmVNb2RlPiwKK0M8 UFFwaXBlbGluZVN5bmM+LCBDPFBRc2VuZFF1ZXJ5UGFyYW1zPgorCitCPE5vdGlmaWNhdGlv bnM6PiBDPFBRbm90aWZpZXM+LCBDPFBRbm90aWZ5X2NoYW5uZWw+LCBDPFBRbm90aWZ5X3Bh eWxvYWQ+LAorQzxQUW5vdGlmeV9iZV9waWQ+LCBDPFBRbm90aWZ5X2ZyZWU+CisKK0I8Tm90 aWNlIFByb2Nlc3Npbmc6PiBDPFBRc2V0Tm90aWNlUHJvY2Vzc29yPiwgQzxjcmVhdGVfbm90 aWNlX3Byb2Nlc3Nvcj4KKworPWhlYWQyIGNyZWF0ZV9ub3RpY2VfcHJvY2Vzc29yKCRjYWxs YmFjaykKKworQ3JlYXRlcyBhIG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0aGF0IGNhbiBi ZSBwYXNzZWQgdG8KK0M8UFFzZXROb3RpY2VQcm9jZXNzb3I+LiBUaGUgY2FsbGJhY2sgcmVj ZWl2ZXMgQzwoJGFyZywgJG1lc3NhZ2UpPi4KK1RoZSBjYWxsZXIgbXVzdCBrZWVwIGEgcmVm ZXJlbmNlIHRvIHRoZSByZXR1cm5lZCBjbG9zdXJlIHRvIHByZXZlbnQKK2dhcmJhZ2UgY29s bGVjdGlvbi4KKworPWhlYWQxIEVYUE9SVEVEIENPTlNUQU5UUworCitUaGlzIG1vZHVsZSBy ZS1leHBvcnRzIGFsbCBjb25zdGFudHMgZnJvbSBMPFBvc3RncmVTUUw6OlBxQ29uc3RhbnRz PgorYW5kIEw8UG9zdGdyZVNRTDo6UEdUeXBlcz4uCisKKz1jdXQKKworcGFja2FnZSBQb3N0 Z3JlU1FMOjpQcUZGSTsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiBx dyhhbGwpOworCit1c2UgRkZJOjpQbGF0eXB1czsKK3VzZSBGRkk6OkM7Cit1c2UgUG9zdGdy ZVNRTDo6RmluZExpYjsKK3VzZSBQb3N0Z3JlU1FMOjpQcUNvbnN0YW50czsKK3VzZSBQb3N0 Z3JlU1FMOjpQR1R5cGVzOworCit1c2UgRXhwb3J0ZXIgcXcoaW1wb3J0KTsKKworb3VyIEBF WFBPUlQgPSAoCisgIEBQb3N0Z3JlU1FMOjpQcUNvbnN0YW50czo6RVhQT1JULAorICBAUG9z dGdyZVNRTDo6UEdUeXBlczo6RVhQT1JULAorKTsKKworCisKK215IEBwcm9jcyA9IHF3KAor CisgIFBRbm90aWZpZXMKKyAgUFFmcmVlbWVtCisgIFBRbm90aWZ5X2NoYW5uZWwKKyAgUFFu b3RpZnlfcGF5bG9hZAorICBQUW5vdGlmeV9iZV9waWQKKyAgUFFub3RpZnlfZnJlZQorCisg IFBRY29ubmVjdGRiCisgIFBRY29ubmVjdGRiUGFyYW1zCisgIFBRc2V0ZGJMb2dpbgorICBQ UWZpbmlzaAorICBQUXJlc2V0CisgIFBRZGIKKyAgUFF1c2VyCisgIFBRcGFzcworICBQUWhv c3QKKyAgUFFob3N0YWRkcgorICBQUXBvcnQKKyAgUFF0dHkKKyAgUFFvcHRpb25zCisgIFBR c3RhdHVzCisgIFBRdHJhbnNhY3Rpb25TdGF0dXMKKyAgUFFwYXJhbWV0ZXJTdGF0dXMKKyAg UFFwaW5nCisgIFBRcGluZ1BhcmFtcworCisgIFBRZXhlYworICBQUWV4ZWNQYXJhbXMKKyAg UFFwcmVwYXJlCisgIFBRZXhlY1ByZXBhcmVkCisKKyAgUFFkZXNjcmliZVByZXBhcmVkCisg IFBRZGVzY3JpYmVQb3J0YWwKKworICBQUWNsb3NlUHJlcGFyZWQKKyAgUFFjbG9zZVBvcnRh bAorICBQUWNsZWFyCisKKyAgUFFzZW5kUXVlcnkKKyAgUFFnZXRSZXN1bHQKKyAgUFFpc0J1 c3kKKyAgUFFjb25zdW1lSW5wdXQKKworICBQUXByb3RvY29sVmVyc2lvbgorICBQUXNlcnZl clZlcnNpb24KKyAgUFFlcnJvck1lc3NhZ2UKKyAgUFFzb2NrZXQKKyAgUFFzb2NrZXRQb2xs CisgIFBRZ2V0Q3VycmVudFRpbWVVU2VjCisgIFBRYmFja2VuZFBJRAorICBQUWNvbm5lY3Rp b25OZWVkc1Bhc3N3b3JkCisgIFBRY29ubmVjdGlvblVzZWRQYXNzd29yZAorICBQUWNvbm5l Y3Rpb25Vc2VkR1NTQVBJCisgIFBRY2xpZW50RW5jb2RpbmcKKyAgUFFzZXRDbGllbnRFbmNv ZGluZworCisgIFBRcmVzdWx0U3RhdHVzCisgIFBRcmVzU3RhdHVzCisgIFBRcmVzdWx0RXJy b3JNZXNzYWdlCisgIFBRcmVzdWx0RXJyb3JGaWVsZAorICBQUW50dXBsZXMKKyAgUFFuZmll bGRzCisgIFBRYmluYXJ5VHVwbGVzCisgIFBRZm5hbWUKKyAgUFFmbnVtYmVyCisgIFBRZnRh YmxlCisgIFBRZnRhYmxlY29sCisgIFBRZmZvcm1hdAorICBQUWZ0eXBlCisgIFBRZnNpemUK KyAgUFFmbW9kCisgIFBRY21kU3RhdHVzCisgIFBRb2lkVmFsdWUKKyAgUFFjbWRUdXBsZXMK KyAgUFFnZXR2YWx1ZQorICBQUWdldGxlbmd0aAorICBQUWdldGlzbnVsbAorICBQUW5wYXJh bXMKKyAgUFFwYXJhbXR5cGUKKyAgUFFjaGFuZ2VQYXNzd29yZAorCisgIFBRcGlwZWxpbmVT dGF0dXMKKyAgUFFlbnRlclBpcGVsaW5lTW9kZQorICBQUWV4aXRQaXBlbGluZU1vZGUKKyAg UFFwaXBlbGluZVN5bmMKKyAgUFFzZW5kRmx1c2hSZXF1ZXN0CisgIFBRc2VuZFBpcGVsaW5l U3luYworICBQUXNlbmRRdWVyeVBhcmFtcworCisgIFBRc2V0bm9uYmxvY2tpbmcKKyAgUFFp c25vbmJsb2NraW5nCisgIFBRZmx1c2gKKworICBQUWNvbm5lY3RTdGFydAorICBQUWNvbm5l Y3RTdGFydFBhcmFtcworICBQUWNvbm5lY3RQb2xsCisKKyAgUFFzZXROb3RpY2VQcm9jZXNz b3IKKyAgY3JlYXRlX25vdGljZV9wcm9jZXNzb3IKKworKTsKKworcHVzaChARVhQT1JULCBA cHJvY3MpOworCitzdWIgc2V0dXAKK3sKKwlteSAkbGliZGlyID0gc2hpZnQ7CisJbXkgJHVz ZV9zeXN0ZW1fcGF0aCA9IHNoaWZ0OworCisJbXkgJGZmaSA9IEZGSTo6UGxhdHlwdXMtPm5l dyhhcGkgPT4gMSk7CisKKwlteSBAc3lzdGVtX3BhdGg7CisJQHN5c3RlbV9wYXRoID0gKHN5 c3RlbXBhdGggPT4gW10pIHVubGVzcyAkdXNlX3N5c3RlbV9wYXRoOworCisJJGZmaS0+dHlw ZSgnb3BhcXVlJyA9PiAnUEdjb25uJyk7CisJJGZmaS0+dHlwZSgnb3BhcXVlJyA9PiAnUEdy ZXN1bHQnKTsKKwkkZmZpLT50eXBlKCd1aW50MzInID0+ICdPaWQnKTsKKwkkZmZpLT50eXBl KCdpbnQnID0+ICdFeGVjU3RhdHVzVHlwZScpOworCisJIyBTZXQgdXAgRkZJOjpDIHdpdGgg dGhpcyBGRkk6OlBsYXR5cHVzIGluc3RhbmNlIGZvciBzdHJ1Y3Qgc3VwcG9ydAorCUZGSTo6 Qy0+ZmZpKCRmZmkpOworCisJIyBQR25vdGlmeSBzdHJ1Y3QgZm9yIG5vdGlmaWNhdGlvbiBz dXBwb3J0CisJIyB0eXBlZGVmIHN0cnVjdCBwZ05vdGlmeSB7CisJIyAgICAgY2hhciAqcmVs bmFtZTsgICAgLyogbm90aWZpY2F0aW9uIGNoYW5uZWwgbmFtZSAqLworCSMgICAgIGludCAg IGJlX3BpZDsgICAgIC8qIHByb2Nlc3MgSUQgb2Ygbm90aWZ5aW5nIHNlcnZlciBwcm9jZXNz ICovCisJIyAgICAgY2hhciAqZXh0cmE7ICAgICAgLyogbm90aWZpY2F0aW9uIHBheWxvYWQg c3RyaW5nICovCisJIyB9IFBHbm90aWZ5OworCUZGSTo6Qy0+c3RydWN0KCdQR25vdGlmeScg PT4gWworCQlyZWxuYW1lID0+ICdvcGFxdWUnLCAgICMgY2hhciogLSB3aWxsIGNvbnZlcnQg dmlhIGhlbHBlcgorCQliZV9waWQgID0+ICdzaW50MzInLCAgICMgaW50CisJCWV4dHJhICAg PT4gJ29wYXF1ZScsICAgIyBjaGFyKiAtIHdpbGwgY29udmVydCB2aWEgaGVscGVyCisJXSk7 CisKKwlteSAkbGliID0gZmluZF9saWJfb3JfZGllKAorCQlsaWIgPT4gJ3BxJywKKwkJbGli cGF0aCA9PiBbJGxpYmRpcl0sCisJICAgIEBzeXN0ZW1fcGF0aCwKKwkgICApOworCSRmZmkt PmxpYigkbGliKTsKKworCSRmZmktPmF0dGFjaCgnUFFjb25uZWN0ZGInID0+IFsnc3RyaW5n J10gPT4gJ1BHY29ubicpOworCSRmZmktPmF0dGFjaCgKKwkJJ1BRY29ubmVjdGRiUGFyYW1z JyA9PiBbICdzdHJpbmdbXScsICdzdHJpbmdbXScsICdpbnQnIF0gPT4gJ1BHY29ubicpOwor CSRmZmktPmF0dGFjaCgKKwkJJ1BRc2V0ZGJMb2dpbicgPT4gWworCQkJJ3N0cmluZycsICdz dHJpbmcnLCAnc3RyaW5nJywgJ3N0cmluZycsCisJCQknc3RyaW5nJywgJ3N0cmluZycsICdz dHJpbmcnLAorCQldID0+ICdQR2Nvbm4nKTsKKwkkZmZpLT5hdHRhY2goJ1BRZmluaXNoJyA9 PiBbJ1BHY29ubiddID0+ICd2b2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUXJlc2V0JyA9PiBb J1BHY29ubiddID0+ICd2b2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUWRiJyA9PiBbJ1BHY29u biddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRdXNlcicgPT4gWydQR2Nvbm4n XSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXBhc3MnID0+IFsnUEdjb25uJ10g PT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFob3N0JyA9PiBbJ1BHY29ubiddID0+ ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRaG9zdGFkZHInID0+IFsnUEdjb25uJ10g PT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFwb3J0JyA9PiBbJ1BHY29ubiddID0+ ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRdHR5JyA9PiBbJ1BHY29ubiddID0+ICdz dHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRb3B0aW9ucycgPT4gWydQR2Nvbm4nXSA9PiAn c3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXN0YXR1cycgPT4gWydQR2Nvbm4nXSA9PiAn aW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXRyYW5zYWN0aW9uU3RhdHVzJyA9PiBbJ1BHY29u biddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFyYW1ldGVyU3RhdHVzJyA9PiBb ICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BR cGluZycgPT4gWydzdHJpbmcnXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFw aW5nUGFyYW1zJyA9PiBbICdzdHJpbmdbXScsICdzdHJpbmdbXScsICdpbnQnIF0gPT4gJ2lu dCcpOworCisJJGZmaS0+YXR0YWNoKCdQUXByb3RvY29sVmVyc2lvbicgPT4gWydQR2Nvbm4n XSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNlcnZlclZlcnNpb24nID0+IFsnUEdj b25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFlcnJvck1lc3NhZ2UnID0+IFsn UEdjb25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFzb2NrZXQnID0+IFsn UEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzb2NrZXRQb2xsJyA9PiBb J2ludCcsICdpbnQnLCAnaW50JywgJ3NpbnQ2NCddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRh Y2goJ1BRZ2V0Q3VycmVudFRpbWVVU2VjJyA9PiBbXSA9PiAnc2ludDY0Jyk7CisJJGZmaS0+ YXR0YWNoKCdQUWJhY2tlbmRQSUQnID0+IFsnUEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmkt PmF0dGFjaCgnUFFjb25uZWN0aW9uTmVlZHNQYXNzd29yZCcgPT4gWydQR2Nvbm4nXSA9PiAn aW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3Rpb25Vc2VkUGFzc3dvcmQnID0+IFsn UEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFjb25uZWN0aW9uVXNlZEdT U0FQSScgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNsaWVu dEVuY29kaW5nJyA9PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BR c2V0Q2xpZW50RW5jb2RpbmcnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ2ludCcp OworCisJJGZmaS0+YXR0YWNoKCdQUWV4ZWMnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0g PT4gJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFleGVjUGFyYW1zJyA9PiBb CisJCQknUEdjb25uJywgJ3N0cmluZycsICdpbnQnLCAnaW50W10nLAorCQkJJ3N0cmluZ1td JywgJ2ludFtdJywgJ2ludFtdJywgJ2ludCcKKwkJXSA9PiAnUEdyZXN1bHQnKTsKKwkkZmZp LT5hdHRhY2goCisJCSdQUXByZXBhcmUnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAnc3Ry aW5nJywgJ2ludCcsICdpbnRbXScgXSA9PgorCQkgICdQR3Jlc3VsdCcpOworCSRmZmktPmF0 dGFjaCgKKwkJJ1BRZXhlY1ByZXBhcmVkJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJywgJ2lu dCcsCisJCQknc3RyaW5nW10nLCAnaW50W10nLCAnaW50W10nLCAnaW50JyBdID0+ICdQR3Jl c3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUXJlc3VsdFN0YXR1cycgPT4gWydQR3Jlc3Vs dCddID0+ICdFeGVjU3RhdHVzVHlwZScpOworCSRmZmktPmF0dGFjaCgnUFFyZXNTdGF0dXMn ID0+IFsnRXhlY1N0YXR1c1R5cGUnXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQ UXJlc3VsdEVycm9yTWVzc2FnZScgPT4gWydQR3Jlc3VsdCddID0+ICdzdHJpbmcnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRcmVzdWx0RXJyb3JGaWVsZCcgPT4gWyAnUEdyZXN1bHQnLCAnaW50 JyBdID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRbnR1cGxlcycgPT4gWydQR3Jl c3VsdCddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRbmZpZWxkcycgPT4gWydQR3Jl c3VsdCddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRYmluYXJ5VHVwbGVzJyA9PiBb J1BHcmVzdWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFmbmFtZScgPT4gWyAn UEdyZXN1bHQnLCAnaW50JyBdID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZm51 bWJlcicgPT4gWyAnUEdyZXN1bHQnLCAnc3RyaW5nJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5h dHRhY2goJ1BRZnRhYmxlJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ09pZCcpOwor CSRmZmktPmF0dGFjaCgnUFFmdGFibGVjb2wnID0+IFsgJ1BHcmVzdWx0JywgJ2ludCcgXSA9 PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZmb3JtYXQnID0+IFsgJ1BHcmVzdWx0Jywg J2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZ0eXBlJyA9PiBbICdQR3Jl c3VsdCcsICdpbnQnIF0gPT4gJ09pZCcpOworCSRmZmktPmF0dGFjaCgnUFFmc2l6ZScgPT4g WyAnUEdyZXN1bHQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZm1v ZCcgPT4gWyAnUEdyZXN1bHQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2go J1BRY21kU3RhdHVzJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0 dGFjaCgnUFFvaWRWYWx1ZScgPT4gWydQR3Jlc3VsdCddID0+ICdPaWQnKTsKKwkkZmZpLT5h dHRhY2goJ1BRY21kVHVwbGVzJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ3N0cmluZycpOworCSRm ZmktPmF0dGFjaCgnUFFnZXR2YWx1ZScgPT4gWyAnUEdyZXN1bHQnLCAnaW50JywgJ2ludCcg XSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUWdldGxlbmd0aCcgPT4gWyAnUEdy ZXN1bHQnLCAnaW50JywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWdl dGlzbnVsbCcgPT4gWyAnUEdyZXN1bHQnLCAnaW50JywgJ2ludCcgXSA9PiAnaW50Jyk7CisJ JGZmaS0+YXR0YWNoKCdQUW5wYXJhbXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnaW50Jyk7CisJ JGZmaS0+YXR0YWNoKCdQUXBhcmFtdHlwZScgPT4gWyAnUEdyZXN1bHQnLCAnaW50JyBdID0+ ICdPaWQnKTsKKworCisJJGZmaS0+YXR0YWNoKAorCQknUFFkZXNjcmliZVByZXBhcmVkJyA9 PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jlc3VsdCcpOworCSRmZmktPmF0dGFj aCgnUFFkZXNjcmliZVBvcnRhbCcgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9PiAnUEdy ZXN1bHQnKTsKKworCSRmZmktPmF0dGFjaCgnUFFjbG9zZVByZXBhcmVkJyA9PiBbICdQR2Nv bm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jlc3VsdCcpOworCSRmZmktPmF0dGFjaCgnUFFjbG9z ZVBvcnRhbCcgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9PiAnUEdyZXN1bHQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRY2xlYXInID0+IFsnUEdyZXN1bHQnXSA9PiAndm9pZCcpOworCisJ JGZmaS0+YXR0YWNoKCdQUWNvbm5lY3RTdGFydCcgPT4gWyAnc3RyaW5nJyBdID0+ICdQR2Nv bm4nKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQUWNvbm5lY3RTdGFydFBhcmFtcycgPT4gWyAn c3RyaW5nW10nLCAnc3RyaW5nW10nLCAnaW50JyBdID0+ICdQR2Nvbm4nKTsKKwkkZmZpLT5h dHRhY2goJ1BRY29ubmVjdFBvbGwnID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZm aS0+YXR0YWNoKCdQUXJlc2V0U3RhcnQnID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJ JGZmaS0+YXR0YWNoKCdQUXJlc2V0UG9sbCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsK KwkkZmZpLT5hdHRhY2goJ1BRc2VuZFF1ZXJ5JyA9PiBbICdQR2Nvbm4nLCAgJ3N0cmluZycg XSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNlbmRRdWVyeVBhcmFtcycgPT4gWwor CQknUEdjb25uJywgJ3N0cmluZycsICdpbnQnLCAnT2lkKicsICdzdHJpbmcqJywKKwkJJ2lu dConLCAnaW50KicsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzZW5k UHJlcGFyZScgPT4gWyAnUEdjb25uJywgJ3N0cmluZycsICdzdHJpbmcnLCAnaW50JywgJ09p ZFtdJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0UmVzdWx0JyA9PiBbICdQ R2Nvbm4nIF0gPT4gJ1BHcmVzdWx0Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRaXNCdXN5JyA9 PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFjb25zdW1lSW5w dXQnID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNoYW5n ZVBhc3N3b3JkJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJywgJ3N0cmluZycgXSA9PiAnUEdy ZXN1bHQnKTsKKworCSRmZmktPmF0dGFjaCgnUFFwaXBlbGluZVN0YXR1cycgPT4gWyAnUEdj b25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZW50ZXJQaXBlbGluZU1vZGUn ID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWV4aXRQaXBl bGluZU1vZGUnID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQ UXBpcGVsaW5lU3luYycgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRh Y2goJ1BRc2VuZEZsdXNoUmVxdWVzdCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRc2VuZFBpcGVsaW5lU3luYycgPT4gWyAnUEdjb25uJyBdID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2V0bm9uYmxvY2tpbmcnID0+IFsgJ1BHY29ubics ICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFpc25vbmJsb2NraW5nJyA9 PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFmbHVzaCcgPT4g WyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKworCSMgTm90aWZpY2F0aW9uIHN1cHBvcnQgLSBQ UW5vdGlmaWVzIHJldHVybnMgYSBQR25vdGlmeSBzdHJ1Y3QgcG9pbnRlcgorCSRmZmktPmF0 dGFjaCgnUFFub3RpZmllcycgPT4gWyAnUEdjb25uJyBdID0+ICdQR25vdGlmeScpOworCSRm ZmktPmF0dGFjaCgnUFFmcmVlbWVtJyA9PiBbICdvcGFxdWUnIF0gPT4gJ3ZvaWQnKTsKKwor CSMgTm90aWNlIHByb2Nlc3NvciBjYWxsYmFjayBzdXBwb3J0CisJIyB0eXBlZGVmIHZvaWQg KCpQUW5vdGljZVByb2Nlc3Nvcikodm9pZCAqYXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsK KwkkZmZpLT50eXBlKCcob3BhcXVlLHN0cmluZyktPnZvaWQnID0+ICdQUW5vdGljZVByb2Nl c3NvcicpOworCSRmZmktPmF0dGFjaCgnUFFzZXROb3RpY2VQcm9jZXNzb3InID0+IFsgJ1BH Y29ubicsICdQUW5vdGljZVByb2Nlc3NvcicsICdvcGFxdWUnIF0gPT4gJ29wYXF1ZScpOwor CisJIyBTdG9yZSB0aGUgJGZmaSBpbnN0YW5jZSBmb3IgdXNlIGJ5IGhlbHBlciBmdW5jdGlv bnMKKwkkUG9zdGdyZVNRTDo6UHFGRkk6Ol9mZmkgPSAkZmZpOworfQorCisjIEhlbHBlciBm dW5jdGlvbnMgdG8gZXh0cmFjdCBzdHJpbmcgdmFsdWVzIGZyb20gUEdub3RpZnkgc3RydWN0 CisjIFRoZSBzdHJ1Y3QgY29udGFpbnMgb3BhcXVlIHBvaW50ZXJzIChjaGFyKikgdGhhdCBu ZWVkIHRvIGJlIGNhc3QgdG8gc3RyaW5ncworCitzdWIgUFFub3RpZnlfY2hhbm5lbAorewor CW15ICRub3RpZnkgPSBzaGlmdDsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRub3RpZnk7CisJ bXkgJHB0ciA9ICRub3RpZnktPnJlbG5hbWU7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkcHRy OworCXJldHVybiAkUG9zdGdyZVNRTDo6UHFGRkk6Ol9mZmktPmNhc3QoJ29wYXF1ZScsICdz dHJpbmcnLCAkcHRyKTsKK30KKworc3ViIFBRbm90aWZ5X3BheWxvYWQKK3sKKwlteSAkbm90 aWZ5ID0gc2hpZnQ7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkbm90aWZ5OworCW15ICRwdHIg PSAkbm90aWZ5LT5leHRyYTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRwdHI7CisJcmV0dXJu ICRQb3N0Z3JlU1FMOjpQcUZGSTo6X2ZmaS0+Y2FzdCgnb3BhcXVlJywgJ3N0cmluZycsICRw dHIpOworfQorCitzdWIgUFFub3RpZnlfYmVfcGlkCit7CisJbXkgJG5vdGlmeSA9IHNoaWZ0 OworCXJldHVybiB1bmRlZiB1bmxlc3MgJG5vdGlmeTsKKwlyZXR1cm4gJG5vdGlmeS0+YmVf cGlkOworfQorCisjIEZyZWUgYSBQR25vdGlmeSBzdHJ1Y3QuIE11c3QgdXNlIHRoZSByYXcg cG9pbnRlciBmcm9tIHRoZSBGRkk6OkMgc3RydWN0Lgorc3ViIFBRbm90aWZ5X2ZyZWUKK3sK KwlteSAkbm90aWZ5ID0gc2hpZnQ7CisJcmV0dXJuIHVubGVzcyAkbm90aWZ5OworCVBRZnJl ZW1lbSgkbm90aWZ5LT57cHRyfSk7Cit9CisKKyMgQ3JlYXRlIGEgbm90aWNlIHByb2Nlc3Nv ciBjbG9zdXJlIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBQUXNldE5vdGljZVByb2Nlc3Nvci4K KyMgVGhlIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIChhcmcsIG1lc3NhZ2UpIHdo ZXJlIGFyZyBpcyBvcGFxdWUgYW5kIG1lc3NhZ2UgaXMgc3RyaW5nLgorIyBSZXR1cm5zIHRo ZSBjbG9zdXJlIC0gY2FsbGVyIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byBwcmV2ZW50IGdh cmJhZ2UgY29sbGVjdGlvbi4KK3N1YiBjcmVhdGVfbm90aWNlX3Byb2Nlc3NvcgoreworCW15 ICRjYWxsYmFjayA9IHNoaWZ0OyAgIyBzdWIgeyBteSAoJGFyZywgJG1lc3NhZ2UpID0gQF87 IC4uLiB9CisJcmV0dXJuICRQb3N0Z3JlU1FMOjpQcUZGSTo6X2ZmaS0+Y2xvc3VyZSgkY2Fs bGJhY2spOworfQorCis9cG9kCisKKz1oZWFkMSBTRUUgQUxTTworCitMPFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24+LCBMPFBvc3RncmVTUUw6OlRlc3Q6OlBxPiwKK0w8UG9zdGdyZVNR TDo6UHFDb25zdGFudHM+LCBMPFBvc3RncmVTUUw6OlBHVHlwZXM+LCBMPEZGSTo6UGxhdHlw dXM+CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9UZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVz dGVyLnBtCmluZGV4IGUyNjdiYTg2OGZlLi5lNTYwMDgyODdjNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9zcmMvdGVzdC9w ZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCkBAIC0xMTIsNiArMTEyLDcgQEAgdXNl IFNvY2tldDsKIHVzZSBUZXN0OjpNb3JlOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz ICAgICAgICAgICgpOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkJhY2tncm91bmRQc3FsICgp OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGV4dDo6UGFyc2VXb3Jk cyAgICAgICAgICAgICAgICAgcXcoc2hlbGx3b3Jkcyk7CiB1c2UgVGltZTo6SGlSZXMgICAg ICAgICAgICAgICAgICAgICAgcXcodXNsZWVwKTsKIHVzZSBTY2FsYXI6OlV0aWwgICAgICAg ICAgICAgICAgICAgICBxdyhibGVzc2VkKTsKQEAgLTIwMzYsMjAgKzIwMzcsNDAgQEAgc3Vi IHNhZmVfcHNxbAogCiAJbXkgKCRzdGRvdXQsICRzdGRlcnIpOwogCi0JbXkgJHJldCA9ICRz ZWxmLT5wc3FsKAotCQkkZGJuYW1lLCAkc3FsLAotCQklcGFyYW1zLAotCQlzdGRvdXQgPT4g XCRzdGRvdXQsCi0JCXN0ZGVyciA9PiBcJHN0ZGVyciwKLQkJb25fZXJyb3JfZGllID0+IDEs Ci0JCW9uX2Vycm9yX3N0b3AgPT4gMSk7Ci0KLQkjIHBzcWwgY2FuIGVtaXQgc3RkZXJyIGZy b20gTk9USUNFcyBldGMKLQlpZiAoJHN0ZGVyciBuZSAiIikKKwkjIGZvciBub3cgb25seSB1 c2UgYSBTZXNzaW9uIG9iamVjdCBmb3Igc2luZ2xlIHN0YXRlbWVudCBzcWwgd2l0aG91dAor CSMgYW55IHNwZWNpYWwgcGFyYW1zCisJaWYgICgkc3FsID1+IC9cdy8gJiYgJHNxbCAhfiAv XFxiaW5kfDsuKlx3L3MgJiYgIXNjYWxhcihrZXlzKCVwYXJhbXMpKSkKIAl7Ci0JCXByaW50 ICIjIyMjIEJlZ2luIHN0YW5kYXJkIGVycm9yXG4iOwotCQlwcmludCAkc3RkZXJyOwotCQlw cmludCAiXG4jIyMjIEVuZCBzdGFuZGFyZCBlcnJvclxuIjsKKworCQlteSAkc2Vzc2lvbiA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4gJHNlbGYsCisJCQkJCQkJ CQkJCQkJIGRibmFtZSA9PiAkZGJuYW1lKTsKKwkJbXkgJHJlcyA9ICRzZXNzaW9uLT5xdWVy eSgkc3FsKTsKKwkJbXkgJHN0YXR1cyA9ICRyZXMtPntzdGF0dXN9OworCQkkc3Rkb3V0ID0g JHJlcy0+e3BzcWxvdXR9IC8vICIiOworCQkkc3RkZXJyID0gJHJlcy0+e2Vycm9yX21lc3Nh Z2V9IC8vICIiOworCQlkaWUgImVycm9yOiBzdGF0dXMgPSAkc3RhdHVzIHN0ZGVycjogJyRz dGRlcnInXG53aGlsZSBydW5uaW5nICckc3FsJyIKKwkJICBpZiAoJHN0YXR1cyAhPSAxICYm ICRzdGF0dXMgIT0gMik7ICMgQ09NTUFORF9PSyBvciBDT01NQU5EX1RVUExFUworCisJfQor CWVsc2UKKwl7CisJCSMgZGlhZyAic2FmZV9wc3FsIGNhbGwgaGFzIHBhcmFtcyBvciBtdWx0 aXBsZSBzdGF0ZW1lbnRzIjsKKworCQlteSAkcmV0ID0gJHNlbGYtPnBzcWwoCisJCQkkZGJu YW1lLCAkc3FsLAorCQkJJXBhcmFtcywKKwkJCXN0ZG91dCA9PiBcJHN0ZG91dCwKKwkJCXN0 ZGVyciA9PiBcJHN0ZGVyciwKKwkJCW9uX2Vycm9yX2RpZSA9PiAxLAorCQkJb25fZXJyb3Jf c3RvcCA9PiAxKTsKKworCQkjIHBzcWwgY2FuIGVtaXQgc3RkZXJyIGZyb20gTk9USUNFcyBl dGMKKwkJaWYgKCRzdGRlcnIgbmUgIiIpCisJCXsKKwkJCXByaW50ICIjIyMjIEJlZ2luIHN0 YW5kYXJkIGVycm9yXG4iOworCQkJcHJpbnQgJHN0ZGVycjsKKwkJCXByaW50ICJcbiMjIyMg RW5kIHN0YW5kYXJkIGVycm9yXG4iOworCQl9CiAJfQogCiAJcmV0dXJuICRzdGRvdXQ7CkBA IC0yMTUzLDYgKzIxNzQsOSBAQCBzdWIgcHNxbAogCiAJbG9jYWwgJUVOViA9ICRzZWxmLT5f Z2V0X2VudigpOwogCisJIyB1bmNvbW1lbnQgdG8gZ2V0IGEgY291bnQgb2YgY2FsbHMgdG8g cHNxbAorCSMgbm90ZSgiY291bnRpbmcgcHNxbCIpOworCiAJbXkgJHN0ZG91dCA9ICRwYXJh bXN7c3Rkb3V0fTsKIAlteSAkc3RkZXJyID0gJHBhcmFtc3tzdGRlcnJ9OwogCW15ICRyZXBs aWNhdGlvbiA9ICRwYXJhbXN7cmVwbGljYXRpb259OwpAQCAtMjcyNiwzMyArMjc1MCwyMCBA QCBzdWIgcG9sbF9xdWVyeV91bnRpbAogewogCW15ICgkc2VsZiwgJGRibmFtZSwgJHF1ZXJ5 LCAkZXhwZWN0ZWQpID0gQF87CiAKLQlsb2NhbCAlRU5WID0gJHNlbGYtPl9nZXRfZW52KCk7 Ci0KIAkkZXhwZWN0ZWQgPSAndCcgdW5sZXNzIGRlZmluZWQoJGV4cGVjdGVkKTsgICAgIyBk ZWZhdWx0IHZhbHVlCiAKLQlteSAkY21kID0gWwotCQkkc2VsZi0+aW5zdGFsbGVkX2NvbW1h bmQoJ3BzcWwnKSwgJy0tbm8tcHNxbHJjJywKLQkJJy0tbm8tYWxpZ24nLCAnLS10dXBsZXMt b25seScsCi0JCSctLWRibmFtZScgPT4gJHNlbGYtPmNvbm5zdHIoJGRibmFtZSkKLQldOwot CW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKwlteSAkc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRzZWxmLAorCQkJCQkJCQkJCQkJIGRibmFtZSA9 PiAkZGJuYW1lKTsKIAlteSAkbWF4X2F0dGVtcHRzID0gMTAgKiAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKIAlteSAkYXR0ZW1wdHMgPSAwOwogCisJbXkg JHF1ZXJ5X3ZhbHVlOworCiAJd2hpbGUgKCRhdHRlbXB0cyA8ICRtYXhfYXR0ZW1wdHMpCiAJ ewotCQlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biAkY21kLAotCQkgICc8JyA9PiBcJHF1 ZXJ5LAotCQkgICc+JyA9PiBcJHN0ZG91dCwKLQkJICAnMj4nID0+IFwkc3RkZXJyOwotCi0J CWNob21wKCRzdGRvdXQpOwotCQljaG9tcCgkc3RkZXJyKTsKLQotCQlpZiAoJHN0ZG91dCBl cSAkZXhwZWN0ZWQgJiYgJHN0ZGVyciBlcSAnJykKLQkJewotCQkJcmV0dXJuIDE7Ci0JCX0K KwkJbXkgJHJlc3VsdCA9ICRzZXNzaW9uLT5xdWVyeSgkcXVlcnkpOworCQkkcXVlcnlfdmFs dWUgPSAoJHJlc3VsdC0+e3BzcWxvdXR9IC8vICIiKTsKKwkJcmV0dXJuIDEgaWYgICRxdWVy eV92YWx1ZSBlcSAkZXhwZWN0ZWQ7CiAKIAkJIyBXYWl0IDAuMSBzZWNvbmQgYmVmb3JlIHJl dHJ5aW5nLgogCQl1c2xlZXAoMTAwXzAwMCk7CkBAIC0yNzY3LDkgKzI3NzgsNDAgQEAgJHF1 ZXJ5CiBleHBlY3RpbmcgdGhpcyBvdXRwdXQ6CiAkZXhwZWN0ZWQKIGxhc3QgYWN0dWFsIHF1 ZXJ5IG91dHB1dDoKLSRzdGRvdXQKLXdpdGggc3RkZXJyOgotJHN0ZGVycik7CiskcXVlcnlf dmFsdWUKKyk7CisJcmV0dXJuIDA7Cit9CisKKz1wb2QKKworPWl0ZW0gJG5vZGUtPnBvbGxf dW50aWxfY29ubmVjdGlvbigkZGJuYW1lKQorCitUcnkgdG8gY29ubmVjdCByZXBlYXRlZGx5 LCB1bnRpbCBpdCB3ZSBzdWNjZWVkLgorVGltZXMgb3V0IGFmdGVyICRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0IHNlY29uZHMuCitSZXR1cm5zIDEgaWYgc3Vj Y2Vzc2Z1bCwgMCBpZiB0aW1lZCBvdXQuCisKKz1jdXQKKworc3ViIHBvbGxfdW50aWxfY29u bmVjdGlvbgoreworCW15ICgkc2VsZiwgJGRibmFtZSkgPSBAXzsKKworCW15ICRtYXhfYXR0 ZW1wdHMgPSAxMCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 OworCW15ICRhdHRlbXB0cyA9IDA7CisKKwl3aGlsZSAoJGF0dGVtcHRzIDwgJG1heF9hdHRl bXB0cykKKwl7CisJCW15ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJHNlbGYsCisJCQkJCQkJCQkJCQkJIGRibmFtZSA9PiAkZGJuYW1lKTsK KwkJcmV0dXJuIDEgaWYgJHNlc3Npb247CisKKwkJIyBXYWl0IDAuMSBzZWNvbmQgYmVmb3Jl IHJldHJ5aW5nLgorCQl1c2xlZXAoMTAwXzAwMCk7CisKKwkJJGF0dGVtcHRzKys7CisJfQor CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9UZXN0L0dOVW1ha2VmaWxlIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvR05V bWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFiNTg2 YzA2MjZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvR05VbWFrZWZpbGUKQEAgLTAsMCArMSw3MSBAQAorIyBNYWtlZmlsZSBmb3IgUG9zdGdy ZVNRTDo6VGVzdDo6UHEKKyMgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvR05VbWFr ZWZpbGUKKworc3ViZGlyID0gc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QKK3RvcF9i dWlsZGRpciA9IC4uLy4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCisKKyMgd2hlcmUgdG8gZmluZCB4c3VicHAgZm9yIGJ1aWxkaW5n IFhTLgorWFNVQlBQRElSID0gJChzaGVsbCAkKFBFUkwpIC1lICd1c2UgTGlzdDo6VXRpbCBx dyhmaXJzdCk7IHByaW50IGZpcnN0IHsgLXIgIiQkXy9FeHRVdGlscy94c3VicHAiIH0gQElO QycpCisKK0FSQ0hMSUJFWFAgPSAkKHNoZWxsICQoUEVSTCkgLWUgJ3VzZSBDb25maWc7IHBy aW50ICQkQ29uZmlne2FyY2hsaWJleHB9OycpCisKKyMgb25seSBidWlsZCBpZiB3ZSBjYW4g ZmluZCB4c3VicHAKK2lmbmVxICgsJChYU1VCUFBESVIpKQorCitpZmVxICgkKFBPUlROQU1F KSwgd2luMzIpCitvdmVycmlkZSBDUFBGTEFHUyArPSAtRFBMUEVSTF9IQVZFX1VJRF9HSUQK KyMgUGVybCBvbiB3aW4zMiBjb250YWlucyAvKiB3aXRoaW4gY29tbWVudCBhbGwgb3ZlciB0 aGUgaGVhZGVyIGZpbGUsCisjIHNvIGRpc2FibGUgdGhpcyB3YXJuaW5nLgorb3ZlcnJpZGUg Q1BQRkxBR1MgKz0gLVduby1jb21tZW50CitlbmRpZgorCisjIFN1cHByZXNzIHdhcm5pbmdz IGZyb20gUGVybCBoZWFkZXJzIHRoYXQgd2UgY2Fubm90IGZpeAorb3ZlcnJpZGUgQ0ZMQUdT ICs9IC1Xbm8tc2hhZG93PWNvbXBhdGlibGUtbG9jYWwgLVduby1kZWNsYXJhdGlvbi1hZnRl ci1zdGF0ZW1lbnQKKworIyBOb3RlOiB3ZSBuZWVkIHRvIGluY2x1ZGUgdGhlIHBlcmxfaW5j bHVkZXNwZWMgZGlyZWN0b3J5IGxhc3QsCisjIHByb2JhYmx5IGJlY2F1c2UgaXQgc29tZXRp bWVzIGNvbnRhaW5zIHNvbWUgaGVhZGVyIGZpbGVzIHdpdGggbmFtZXMKKyMgdGhhdCBjbGFz aCB3aXRoIHNvbWUgb2Ygb3Vycywgb3Igd2l0aCBzb21lIHRoYXQgd2UgaW5jbHVkZSwgbm90 YWJseSBvbgorIyBXaW5kb3dzLgorIworIyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIHBscGVy bCBkaXJlY3RvcnkgZm9yIHBwcG9ydC5oCisjCitvdmVycmlkZSBDUFBGTEFHUyA6PSAtSS4g LUkkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYy9wbC9wbHBlcmwgLUkkKHRvcF9zcmNk aXIpL3NyYy9pbnRlcmZhY2VzL2xpYnBxICQoQ1BQRkxBR1MpIC1JJChBUkNITElCRVhQKS9D T1JFCisKKyMgdGhpcyBpcyBvZnRlbiwgYnV0IG5vdCBhbHdheXMsIHRoZSBzYW1lIGRpcmVj dG9yeSBuYW1lZCBieSBwZXJsX2luY2x1ZGVzcGVjCisjIHJwYXRoZGlyID0gJChwZXJsX2Fy Y2hsaWJleHApL0NPUkUKKworIyBOZWVkZWQgdG8gbWFrZSBzdXJlIHRoZSBib290c3RyYXAg ZnVuY3Rpb24gaXMgdmlzaWJsZS4KKyMgSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRo aXM/CitDRkxBR1NfU0xfTU9EVUxFIDo9CisKK05BTUUgPSBQcQorCitPQkpTID0gUHEubwor CitTSExJQl9MSU5LX0lOVEVSTkFMID0gJChsaWJwcSkKKworCitpbmNsdWRlICQodG9wX3Ny Y2Rpcikvc3JjL01ha2VmaWxlLnNobGliCisKK2FsbDogYWxsLWxpYgorCitQcS5jOiBQcS54 cworCSQoUEVSTCkgJChYU1VCUFBESVIpL0V4dFV0aWxzL3hzdWJwcCAkPCA+ICRACisKKyMg UHEue3NvLGRsbCxkeWxpYn0gc2hvdWxkIGJlIGluc3RhbGxlZCBhbG9uZ3NpZGUgdGhlIC5w bSBtb2R1bGUKK2luc3RhbGw6IGFsbCBpbnN0YWxsZGlycworCSQoSU5TVEFMTF9TSExJQikg UHEkKERMU1VGRklYKSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1BxJChETFNV RkZJWCknCisJJChJTlNUQUxMX0RBVEEpICQodG9wX3NyY2RpcikvJChzdWJkaXIpL1BxLnBt ICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUHEucG0nCisKK3VuaW5zdGFsbDoK KwlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1BxJChETFNVRkZJWCkn CisJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9QcS5wbScKKworZWxz ZQorCisjIG5vIHhzdWJwcCwgc28gbm90aGluZyB0byBidWlsZAorYWxsOgorCUBlY2hvIENh bm5vdCBidWlsZCBQcS4kKERMU1VGRklYKQorCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvUHEucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9QcS5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u Y2Y0NDc3Y2NjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9QcS5wbQpAQCAtMCwwICsxLDExMSBAQAorCisjIENvcHlyaWdodCAoYykgMjAy MS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisK Kz1oZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6OlRlc3Q6OlBxIC0gWFMgd3JhcHBlciBmb3Ig bGlicHEKKworPWhlYWQxIFNZTk9QU0lTCisKKyAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlBx OworCisgIG15ICRjb25uID0gUFFjb25uZWN0ZGIoImRibmFtZT1wb3N0Z3JlcyIpOworICBk aWUgUFFlcnJvck1lc3NhZ2UoJGNvbm4pIHVubGVzcyBQUXN0YXR1cygkY29ubikgPT0gQ09O TkVDVElPTl9PSzsKKworICBteSAkcmVzdWx0ID0gUFFleGVjKCRjb25uLCAiU0VMRUNUIDEi KTsKKyAgaWYgKFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpID09IFBHUkVTX1RVUExFU19PSykg eworICAgICAgcHJpbnQgUFFnZXR2YWx1ZSgkcmVzdWx0LCAwLCAwKSwgIlxuIjsKKyAgfQor ICBQUWNsZWFyKCRyZXN1bHQpOworCisgIFBRZmluaXNoKCRjb25uKTsKKworPWhlYWQxIERF U0NSSVBUSU9OCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIFBlcmwgYmluZGluZ3MgdG8gbGli cHEgdXNpbmcgWFMuIEl0IGlzIGFuIGFsdGVybmF0aXZlCitiYWNrZW5kIGZvciBMPFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24+IHRoYXQgY2FuIGJlIGVuYWJsZWQgYnkgc2V0dGluZwor dGhlIEM8UEdfVVNFX1BRX1hTPiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworVW5saWtlIEw8 UG9zdGdyZVNRTDo6UHFGRkk+LCB0aGlzIG1vZHVsZSByZXF1aXJlcyBjb21waWxhdGlvbiBi dXQgaGFzCitubyBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBGRkkgbGlicmFyaWVzLgorCis9 aGVhZDEgRlVOQ1RJT05TCisKK0FsbCBzdGFuZGFyZCBsaWJwcSBmdW5jdGlvbnMgbGlzdGVk IGJlbG93IGFyZSBleHBvcnRlZC4gU2VlIHRoZSBQb3N0Z3JlU1FMCitsaWJwcSBkb2N1bWVu dGF0aW9uIGZvciBkZXRhaWxzLgorCitCPENvbm5lY3Rpb246PiBDPFBRY29ubmVjdGRiPiwg QzxQUWNvbm5lY3RTdGFydD4sIEM8UFFjb25uZWN0UG9sbD4sCitDPFBRZmluaXNoPiwgQzxQ UXN0YXR1cz4sIEM8UFFlcnJvck1lc3NhZ2U+LCBDPFBRYmFja2VuZFBJRD4sCitDPFBRdHJh bnNhY3Rpb25TdGF0dXM+CisKK0I8RXhlY3V0aW9uOj4gQzxQUWV4ZWM+LCBDPFBRc2VuZFF1 ZXJ5PiwgQzxQUXNlbmRRdWVyeVBhcmFtcz4sCitDPFBRZ2V0UmVzdWx0PiwgQzxQUWNsZWFy PiwgQzxQUWNvbnN1bWVJbnB1dD4sIEM8UFFpc0J1c3k+CisKK0I8UmVzdWx0czo+IEM8UFFy ZXN1bHRTdGF0dXM+LCBDPFBRbnR1cGxlcz4sIEM8UFFuZmllbGRzPiwgQzxQUWZuYW1lPiwK K0M8UFFmdHlwZT4sIEM8UFFnZXR2YWx1ZT4sIEM8UFFnZXRpc251bGw+CisKK0I8UGlwZWxp bmU6PiBDPFBRZW50ZXJQaXBlbGluZU1vZGU+LCBDPFBRZXhpdFBpcGVsaW5lTW9kZT4sCitD PFBRcGlwZWxpbmVTdGF0dXM+LCBDPFBRcGlwZWxpbmVTeW5jPiwgQzxQUXNldG5vbmJsb2Nr aW5nPiwKK0M8UFFpc25vbmJsb2NraW5nPgorCitCPE5vdGlmaWNhdGlvbnM6PiBDPFBRbm90 aWZpZXM+IChyZXR1cm5zIGhhc2hyZWYpLCBDPFBRbm90aWZ5X2NoYW5uZWw+LAorQzxQUW5v dGlmeV9wYXlsb2FkPiwgQzxQUW5vdGlmeV9iZV9waWQ+LCBDPFBRbm90aWZ5X2ZyZWU+CisK K0I8T3RoZXI6PiBDPFBRY2hhbmdlUGFzc3dvcmQ+LCBDPFBRZnJlZW1lbT4KKworPWhlYWQy IE5vdGlmaWNhdGlvbiBIYW5kbGluZworCitVbmxpa2UgdGhlIEZGSSBiYWNrZW5kLCBDPFBR bm90aWZpZXM+IHJldHVybnMgYSBQZXJsIGhhc2hyZWYgZGlyZWN0bHkKK3dpdGgga2V5cyBD PGNoYW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+LiBUaGUgaGVscGVyIGZ1bmN0aW9u cworQzxQUW5vdGlmeV9jaGFubmVsPiwgQzxQUW5vdGlmeV9iZV9waWQ+LCBDPFBRbm90aWZ5 X3BheWxvYWQ+LCBhbmQKK0M8UFFub3RpZnlfZnJlZT4gYXJlIHByb3ZpZGVkIGZvciBBUEkg Y29tcGF0aWJpbGl0eSB3aXRoIHRoZSBGRkkgYmFja2VuZC4KKworPWhlYWQxIEVYUE9SVEVE IENPTlNUQU5UUworCitUaGlzIG1vZHVsZSByZS1leHBvcnRzIGFsbCBjb25zdGFudHMgZnJv bSBMPFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzPi4KKworPWhlYWQxIFNFRSBBTFNPCisKK0w8 UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbj4sIEw8UG9zdGdyZVNRTDo6UHFGRkk+LCBMPFBv c3RncmVTUUw6OlBxQ29uc3RhbnRzPgorCis9Y3V0CisKK3BhY2thZ2UgUG9zdGdyZVNRTDo6 VGVzdDo6UHE7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycDsKKwor cmVxdWlyZSBFeHBvcnRlcjsKK3VzZSBQb3N0Z3JlU1FMOjpQcUNvbnN0YW50czsKKworb3Vy IEBJU0EgPSBxdyhFeHBvcnRlcik7CisKK291ciAkVkVSU0lPTiA9ICcxLjAwJzsKKworbXkg QHJvdXRpbmVzID0gcXcoCisgIFBRY2xlYXIgUFFjb25uZWN0ZGIgUFFjb25zdW1lSW5wdXQg UFFlcnJvck1lc3NhZ2UgUFFleGVjICBQUWZpbmlzaCBQUWZuYW1lCisgIFBRZnR5cGUgUFFn ZXRpc251bGwgUFFnZXRSZXN1bHQgUFFnZXR2YWx1ZSBQUWlzQnVzeSBQUW5maWVsZHMgUFFu dHVwbGVzCisgIFBRcmVzdWx0U3RhdHVzIFBRc2VuZFF1ZXJ5IFBRc3RhdHVzIFBRY2hhbmdl UGFzc3dvcmQKKyAgUFFjb25uZWN0U3RhcnQgUFFjb25uZWN0UG9sbCBQUWJhY2tlbmRQSUQg UFF0cmFuc2FjdGlvblN0YXR1cworICBQUXNldG5vbmJsb2NraW5nIFBRaXNub25ibG9ja2lu ZworICBQUWVudGVyUGlwZWxpbmVNb2RlIFBRZXhpdFBpcGVsaW5lTW9kZSBQUXBpcGVsaW5l U3RhdHVzIFBRcGlwZWxpbmVTeW5jCisgIFBRc2VuZFF1ZXJ5UGFyYW1zCisgIFBRbm90aWZp ZXMgUFFmcmVlbWVtCisgIFBRbm90aWZ5X2NoYW5uZWwgUFFub3RpZnlfYmVfcGlkIFBRbm90 aWZ5X3BheWxvYWQgUFFub3RpZnlfZnJlZQorKTsKKworb3VyIEBFWFBPUlQgPSAoQHJvdXRp bmVzLCBAUG9zdGdyZVNRTDo6UHFDb25zdGFudHM6OkVYUE9SVCk7CisKKyMgSGVscGVyIGZ1 bmN0aW9ucyBmb3IgUEdub3RpZnkgLSBYUyByZXR1cm5zIGEgaGFzaHJlZiBkaXJlY3RseQor c3ViIFBRbm90aWZ5X2NoYW5uZWwgeyByZXR1cm4gJF9bMF0tPntjaGFubmVsfTsgfQorc3Vi IFBRbm90aWZ5X2JlX3BpZCAgeyByZXR1cm4gJF9bMF0tPntwaWR9OyB9CitzdWIgUFFub3Rp ZnlfcGF5bG9hZCB7IHJldHVybiAkX1swXS0+e3BheWxvYWR9OyB9CitzdWIgUFFub3RpZnlf ZnJlZSAgICB7IH0gICMgbm8tb3AsIHBlcmwgR0NzIHRoZSBoYXNocmVmCisKK3JlcXVpcmUg WFNMb2FkZXI7CitYU0xvYWRlcjo6bG9hZCgnUG9zdGdyZVNRTDo6VGVzdDo6UHEnLCApOwor CisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvUHEueHMg Yi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9QcS54cwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWJlY2I1NGYwMGQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9QcS54cwpAQCAtMCwwICsxLDE3MiBA QAorI2RlZmluZSBQRVJMX05PX0dFVF9DT05URVhUCisjaW5jbHVkZSAiRVhURVJOLmgiCisj aW5jbHVkZSAicGVybC5oIgorI2luY2x1ZGUgIlhTVUIuaCIKKworI2luY2x1ZGUgInBwcG9y dC5oIgorCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKworTU9EVUxFID0gUG9zdGdyZVNRTDo6 VGVzdDo6UHEJCVBBQ0tBR0UgPSBQb3N0Z3JlU1FMOjpUZXN0OjpQcQorCitQUk9UT1RZUEVT OiBFTkFCTEUKKworVFlQRU1BUDogPDxFT1RZUEUKKworIyB3b3VsZCBsaWtlIHRvIHVzZSBU X1BUUk9CSiBoZXJlIGJ1dCBpdCBnZXRzIGh1bmcgdXAgb24gY29uc3QtbmVzcworCitQR3Jl c3VsdCAqICAgICAgIFRfUFRSCitjb25zdCBQR3Jlc3VsdCAqIFRfUFRSCitQR2Nvbm4gKiAg ICAgICAgIFRfUFRSCitjb25zdCBQR2Nvbm4gKiAgIFRfUFRSCitjaGFyICogICAgICAgICAg IFRfUFYKK2NvbnN0IGNoYXIgKiAgICAgVF9QVgorQ29ublN0YXR1c1R5cGUgICBUX0VOVU0K K0V4ZWNTdGF0dXNUeXBlICAgVF9FTlVNCitPaWQgICAgICAgICAgICAgIFRfVVYKKworRU9U WVBFCisKK1BHcmVzdWx0ICoKK1BRY2hhbmdlUGFzc3dvcmQoUEdjb25uICpjb25uLCBjb25z dCBjaGFyICp1c2VyLCBjb25zdCBjaGFyICpwYXNzd2QpOworCit2b2lkCitQUWNsZWFyKFBH cmVzdWx0ICpyZXMpOworCitQR2Nvbm4gKgorUFFjb25uZWN0ZGIoY29uc3QgY2hhciAqY29u bmluZm8pOworCitpbnQKK1BRY29uc3VtZUlucHV0KFBHY29ubiAqY29ubik7CisKK2NoYXIg KgorUFFlcnJvck1lc3NhZ2UoY29uc3QgUEdjb25uICpjb25uKTsKKworUEdyZXN1bHQgKgor UFFleGVjKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpOworCit2b2lkCitQUWZp bmlzaChQR2Nvbm4gKmNvbm4pOworCitjaGFyICoKK1BRZm5hbWUoY29uc3QgUEdyZXN1bHQg KnJlcywgaW50IGZpZWxkX251bSk7CisKK09pZAorUFFmdHlwZShjb25zdCBQR3Jlc3VsdCAq cmVzLCBpbnQgZmllbGRfbnVtKTsKKworaW50CitQUWdldGlzbnVsbChjb25zdCBQR3Jlc3Vs dCAqcmVzLCBpbnQgdHVwX251bSwgaW50IGZpZWxkX251bSk7CisKK1BHcmVzdWx0ICoKK1BR Z2V0UmVzdWx0KFBHY29ubiAqY29ubik7CisKK2NoYXIgKgorUFFnZXR2YWx1ZShjb25zdCBQ R3Jlc3VsdCAqcmVzLCBpbnQgdHVwX251bSwgaW50IGZpZWxkX251bSk7CisKK2ludAorUFFp c0J1c3koUEdjb25uICpjb25uKTsKKworaW50CitQUW5maWVsZHMoY29uc3QgUEdyZXN1bHQg KnJlcyk7CisKK2ludAorUFFudHVwbGVzKGNvbnN0IFBHcmVzdWx0ICpyZXMpOworCitFeGVj U3RhdHVzVHlwZQorUFFyZXN1bHRTdGF0dXMoY29uc3QgUEdyZXN1bHQgKnJlcyk7CisKK2lu dAorUFFzZW5kUXVlcnkoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSk7CisKK0Nv bm5TdGF0dXNUeXBlCitQUXN0YXR1cyhjb25zdCBQR2Nvbm4gKmNvbm4pOworCitQR2Nvbm4g KgorUFFjb25uZWN0U3RhcnQoY29uc3QgY2hhciAqY29ubmluZm8pOworCitpbnQKK1BRY29u bmVjdFBvbGwoUEdjb25uICpjb25uKTsKKworaW50CitQUWJhY2tlbmRQSUQoY29uc3QgUEdj b25uICpjb25uKTsKKworaW50CitQUXRyYW5zYWN0aW9uU3RhdHVzKGNvbnN0IFBHY29ubiAq Y29ubik7CisKK2ludAorUFFzZXRub25ibG9ja2luZyhQR2Nvbm4gKmNvbm4sIGludCBhcmcp OworCitpbnQKK1BRaXNub25ibG9ja2luZyhjb25zdCBQR2Nvbm4gKmNvbm4pOworCitpbnQK K1BRZW50ZXJQaXBlbGluZU1vZGUoUEdjb25uICpjb25uKTsKKworaW50CitQUWV4aXRQaXBl bGluZU1vZGUoUEdjb25uICpjb25uKTsKKworaW50CitQUXBpcGVsaW5lU3RhdHVzKGNvbnN0 IFBHY29ubiAqY29ubik7CisKK2ludAorUFFwaXBlbGluZVN5bmMoUEdjb25uICpjb25uKTsK KworaW50CitQUXNvY2tldChjb25zdCBQR2Nvbm4gKmNvbm4pOworCitpbnQKK1BRc29ja2V0 UG9sbChpbnQgc29jaywgaW50IGZvclJlYWQsIGludCBmb3JXcml0ZSwgbG9uZyBlbmRfdGlt ZSk7CisKK2xvbmcKK1BRZ2V0Q3VycmVudFRpbWVVU2VjKCk7CisKK3ZvaWQKK1BRZnJlZW1l bSh2b2lkICpwdHIpOworCitTViAqCitQUW5vdGlmaWVzKFBHY29ubiAqY29ubikKKyAgICBD T0RFOgorICAgICAgICBQR25vdGlmeSAqbm90aWZ5ID0gUFFub3RpZmllcyhjb25uKTsKKyAg ICAgICAgaWYgKG5vdGlmeSA9PSBOVUxMKSB7CisgICAgICAgICAgICBSRVRWQUwgPSAmUExf c3ZfdW5kZWY7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBIViAqaHYgPSBuZXdI VigpOworICAgICAgICAgICAgaHZfc3RvcmUoaHYsICJjaGFubmVsIiwgNywgbmV3U1Zwdihu b3RpZnktPnJlbG5hbWUsIDApLCAwKTsKKyAgICAgICAgICAgIGh2X3N0b3JlKGh2LCAicGlk IiwgMywgbmV3U1Zpdihub3RpZnktPmJlX3BpZCksIDApOworICAgICAgICAgICAgaHZfc3Rv cmUoaHYsICJwYXlsb2FkIiwgNywKKyAgICAgICAgICAgICAgICAgICAgIG5vdGlmeS0+ZXh0 cmEgPyBuZXdTVnB2KG5vdGlmeS0+ZXh0cmEsIDApIDogbmV3U1ZwdigiIiwgMCksIDApOwor ICAgICAgICAgICAgUFFmcmVlbWVtKG5vdGlmeSk7CisgICAgICAgICAgICBSRVRWQUwgPSBu ZXdSVl9ub2luYygoU1YgKilodik7CisgICAgICAgIH0KKyAgICBPVVRQVVQ6CisgICAgICAg IFJFVFZBTAorCitpbnQKK1BRc2VuZFF1ZXJ5UGFyYW1zKFBHY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqY29tbWFuZCwgaW50IG5QYXJhbXMsIFNWICpwYXJhbVR5cGVzX3N2LCBTViAqcGFy YW1WYWx1ZXNfc3YsIFNWICpwYXJhbUxlbmd0aHNfc3YsIFNWICpwYXJhbUZvcm1hdHNfc3Ys IGludCByZXN1bHRGb3JtYXQpCisgICAgQ09ERToKKyAgICAgICAgY29uc3QgY2hhciAqKnBh cmFtVmFsdWVzID0gTlVMTDsKKyAgICAgICAgUEVSTF9VTlVTRURfVkFSKHBhcmFtVHlwZXNf c3YpOworICAgICAgICBQRVJMX1VOVVNFRF9WQVIocGFyYW1MZW5ndGhzX3N2KTsKKyAgICAg ICAgUEVSTF9VTlVTRURfVkFSKHBhcmFtRm9ybWF0c19zdik7CisKKyAgICAgICAgLyogT25s eSBwYXJhbVZhbHVlcyBpcyB1c2VkOyBwYXJhbVR5cGVzLCBwYXJhbUxlbmd0aHMsIHBhcmFt Rm9ybWF0cyBhcmUgaWdub3JlZCAoYXNzdW1lZCBOVUxMKSAqLworICAgICAgICBpZiAoblBh cmFtcyA+IDAgJiYgU3ZPSyhwYXJhbVZhbHVlc19zdikgJiYgU3ZST0socGFyYW1WYWx1ZXNf c3YpICYmCisgICAgICAgICAgICBTdlRZUEUoU3ZSVihwYXJhbVZhbHVlc19zdikpID09IFNW dF9QVkFWKSB7CisgICAgICAgICAgICBBViAqcGFyYW1zID0gKEFWICopU3ZSVihwYXJhbVZh bHVlc19zdik7CisgICAgICAgICAgICBOZXd4KHBhcmFtVmFsdWVzLCBuUGFyYW1zLCBjb25z dCBjaGFyICopOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuUGFyYW1zOyBp KyspIHsKKyAgICAgICAgICAgICAgICBTViAqKmVsZW0gPSBhdl9mZXRjaChwYXJhbXMsIGks IDApOworICAgICAgICAgICAgICAgIGlmIChlbGVtICYmIFN2T0soKmVsZW0pKSB7CisgICAg ICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVzW2ldID0gU3ZQVl9ub2xlbigqZWxlbSk7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1 ZXNbaV0gPSBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorCisgICAgICAgIFJFVFZBTCA9IFBRc2VuZFF1ZXJ5UGFyYW1zKGNvbm4sIGNvbW1h bmQsIG5QYXJhbXMsIE5VTEwsIHBhcmFtVmFsdWVzLCBOVUxMLCBOVUxMLCByZXN1bHRGb3Jt YXQpOworCisgICAgICAgIGlmIChwYXJhbVZhbHVlcykKKyAgICAgICAgICAgIFNhZmVmcmVl KHBhcmFtVmFsdWVzKTsKKyAgICBPVVRQVVQ6CisgICAgICAgIFJFVFZBTApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvU2Vzc2lvbi5wbSBiL3NyYy90ZXN0 L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmEzYmI0NjUwYTllCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvU2Vzc2lvbi5wbQpAQCAtMCwwICsxLDEwODkg QEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworPXBvZAorCis9aGVhZDEgTkFNRQorCitQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uIC0gY2xhc3MgZm9yIGEgUG9zdGdyZVNRTCBsaWJwcSBzZXNzaW9uCisK Kz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwor CisgIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOworCisgIG15ICRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdteW5vZGUnKTsKKworICAjIGNyZWF0ZSBh IG5ldyBzZXNzaW9uLiBkZWZ1bHQgZGJuYW1lIGlzICdwb3N0Z3JlcycKKyAgbXkgJHNlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLCBkYm5hbWUg PT4gJGRibmFtZV0gKTsKKworICAjIGNsb3NlIHRoZSBzZXNzaW9uCisgICRzZXNzaW9uLT5j bG9zZTsKKworICAjIHJlb3BlbiB0aGUgc2Vzc2lvbiwgYWZ0ZXIgY2xvc2luZyBpdCBpZiBu b3QgY2xvc2VkCisgICRzZXNzaW9uLT5yZWNvbm5lY3Q7CisKKyAgIyBjaGVjayBpZiB0aGUg c2Vzc2lvbiBpcyBvaworICAjIG15ICRzdGF0dXMgPSAkc2Vzc2lvbi0+Y29ubl9zdGF0dXM7 CisKKyAgIyBydW4gc29tZSBTUUwsIG5vdCBwcm9kdWNpbmcgdHVwbGVzCisgIG15ICRyZXN1 bHQgPSAkc2Vzc2lvbi0+ZG8oJHNxbCwgLi4uKTsKKworICAjIHJ1biBhbiBTUUwgc3RhdGVt ZW50IGFzeW5jaHJvbm91c2x5CisgIG15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+ZG9fYXN5bmMo JHNxbCk7CisKKyAgIyB3YWl0IGZvciBhbmQgYXN5bmMgU1FMIHRvIGNvbXBsZXRlCisgICRz ZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworCisgICMgc2V0IGEgcGFzc3dvcmQgZm9y IGEgdXNlcgorICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPnNldF9wYXNzd29yZCgkdXNlciwg JHBhc3N3b3JkKTsKKworICAjIGdldCBzb21lIGRhdGEKKyAgbXkgJHJlc3VsdCA9ICRzZXNz aW9uLT5xdWVyeSgkc3FsKTsKKworICAjIGdldCBhIHNpbmdsZSB2YWx1ZSwgZGVmYXVsdCBj cm9ha3MgaWYgbm8gdmFsdWUgZm91bmQKKyAgbXkgJHZhbCA9ICRzZXNzaW9uLT5xdWVyeV9v bmV2YWwoJHNxbCBbLCAkbWlzc2luZ19vayBdKTsKKworICAjcmV0dXJuIGxpbmVzIG9mIHR1 cGxlcyBsaWtlICJwc3FsIC1BIC10IgorICBteSBAbGluZXMgPSAkc2Vzc2lvbi0+cXVlcnlf dHVwbGVzKCRzcWwsIC4uLik7CisKKz1oZWFkMSBERVNDUklQVElPTgorCitDPFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24+IGVuY2Fwc3VsYXRlcyBhIEM8bGlicHE+IHNlc3Npb24gZm9y IHVzZSBpbgorUG9zdGdyZVNRTCBUQVAgdGVzdHMsIGFsbG93aW5nIHRoZSB0ZXN0IHRvIGNv bm5lY3Qgd2l0aG91dCBoYXZpbmcgdG8gc3Bhd24KK0M8cHNxbD4gaW4gYSBjaGlsZCBwcm9j ZXNzLgorCitUaGUgc2Vzc2lvbiBvYmplY3QgaXMgYXV0b21hdGljYWxseSBjbG9zZWQgd2hl biB0aGUgb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLAoraW5jbHVkaW5nIGF0IHNjcmlwdCBl bmQuCisKK1NldmVyYWwgbWV0aG9kcyByZXR1cm4gYSBoYXNocmVmIGFzIGEgcmVzdWx0LCB3 aGljaCB3aWxsIGhhdmUgdGhlIGZvbGxvd2luZworZmllbGRzOgorCis9b3ZlcgorCis9aXRl bSAqIHN0YXR1cworCis9aXRlbSAqIGVycm9yX21lc3NhZ2UgKG9ubHkgaWYgdGhlcmUgaXMg YW4gZXJyb3IpCisKKz1pdGVtICogbmFtZXMKKworPWl0ZW0gKiB0eXBlcworCis9aXRlbSAq IHJvd3MKKworPWl0ZW0gKiBwc3Fsb3V0CisKKz1iYWNrCisKK1RoZSBsYXN0IDQgd2lsbCBi ZSBlbXB0eSB1bmxlc3MgdGhlIFNRTCBwcm9kdWNlcyB0dXBsZXMuCisKKz1jdXQKKworcGFj a2FnZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOworCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgRmlsZTo6QmFzZW5hbWUgcXcoZGlybmFt ZSk7Cit1c2UgQ2FycDsKKyMgVGltZTo6SGlSZXMgbm8gbG9uZ2VyIG5lZWRlZCAtIHVzaW5n IHNlbGVjdCgpIGZvciBzb2NrZXQgd2FpdGluZworCitteSAkc2V0dXBfb2s7CisKK0JFR0lO Cit7CisJaWYgKCRFTlZ7UEdfVVNFX1BRX1hTfSkKKwl7CisJCSMgbmVlZCB0aGUgZGlyZWN0 b3J5IHdoZXJlIFBxLntzbyxkbGwsZHlsaWJ9IGlzIGluc3RhbGxlZCBvciBidWlsdAorCQkj IGZpcnN0LCBpZiBpbnN0YWxsZWQgaXQgc2hvdWxkIGJlIGFsb25nc2lkZSB0aGlzIGZpbGUK KwkJbXkgQGRpcnMgPSAoZGlybmFtZShfX0ZJTEVfXykpOworCQkjIHNlY29uZCwgaXQgc2hv dWxkIGJlIGJ1aWx0IGhlcmUKKwkJbXkgJHRvcGJ1aWxkZGlyID0gJEVOVntNRVNPTl9CVUlM RF9ST09UfSB8fCAkRU5We3RvcF9idWlsZGRpcn07CisJCXB1c2ggKEBkaXJzLCAiJHRvcGJ1 aWxkZGlyL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0IikKKwkJICBpZiBkZWZpbmVk KCR0b3BidWlsZGRpcik7CisJCXVuc2hpZnQoQElOQywgQGRpcnMpOworCQkjIHRoaXMgd2ls bCBmYWlsIGlmIHdlIGhhdmVuJ3QgYnVpbHQgdGhlIHNoYXJlZCBsaWJyYXJ5CisJCXJlcXVp cmUgUG9zdGdyZVNRTDo6VGVzdDo6UHE7CisJCVBvc3RncmVTUUw6OlRlc3Q6OlBxLT5pbXBv cnQ7CisJCSRzZXR1cF9vayA9IDE7ICMgbm8gb3RoZXIgc2V0dXAgcmVxdWlyZWQuCisJCSMg cmVzdG9yZSBASU5DCisJCXNoaWZ0KEBJTkMpIGZvcmVhY2ggQGRpcnM7CisJfQorCWVsc2UK Kwl7CisJCSMgZGVmYXVsdCBpcyB0byB1c2UgdGhlIEZGSSB3cmFwcGVyCisJCSMgd2lsbCBm YWlsIGlmIHRoZSBGRkkgbGlicmFyaWVzIGFuZCB3cmFwcGVycyBhcmUgbm90IGF2YWlsYWJs ZQorCQkjCisJCSMgYWN0dWFsIHNldHVwIGlzIGRvbmUgcGVyIHNlc3Npb24sIGJlY2F1c2Ug d2UgZ2V0IHRoZSBsaWJkaXIgZnJvbSB0aGUKKwkJIyBub2RlIG9iamVjdCAoaW4gbW9zdCBj YXNlcykKKwkJcmVxdWlyZSBQb3N0Z3JlU1FMOjpQcUZGSTsKKwkJUG9zdGdyZVNRTDo6UHFG RkktPmltcG9ydDsKKwl9Cit9CisKK3N1YiBfc2V0dXAKK3sKKwlyZXR1cm4gaWYgJHNldHVw X29rOworCW15ICRsaWJkaXIgPSBzaGlmdDsKKwlQb3N0Z3JlU1FMOjpQcUZGSTo6c2V0dXAo JGxpYmRpcik7CisJJHNldHVwX29rID0gMTsKK30KKworPXBvZAorCis9aGVhZDEgTUVUSE9E UworCis9b3ZlcgorCis9aXRlbSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZT0+ICRub2RlIFssIGRibmFtZT0+ICRkYm5hbWUgXSkKKworU2V0IHVwIGEgbmV3IHNlc3Np b24gZm9yIHRoZSBub2RlLCB3aGljaCBtdXN0IGJlIGEgQzxQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyPgoraW5zdGFuY2UuIFRoZSBkZWZhdWx0IGRiYW1lIGlzIEM8cG9zdGdyZXM+Lgor Cis9aXRlbSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcoY29ubnN0ciA9PiAkY29u bnN0ciBbLCBsaWJkaXIgPT4gJGxpYmRpcl0pCisKK1NldCB1cCBhIG5ldyBzZXNzaW9uIGZv ciB0aGUgY29ubmVjdGlvbiBzdHJpbmcuIElmIHVzaW5nIHRoZSBGRkkgbGlicHEgd3JhcHBl ciwKK0M8JGxpYmRpcj4gbXVzdCBwb2ludCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBs aWJwcSBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KKworPWN1dAorCitzdWIgbmV3Cit7CisJbXkg JGNsYXNzID0gc2hpZnQ7CisJbXkgJHNlbGYgPSB7fTsKKwlibGVzcyAkc2VsZiwgJGNsYXNz OworCW15ICVhcmdzID0gQF87CisJbXkgJG5vZGUgPSAkYXJnc3tub2RlfTsKKwlteSAkZGJu YW1lID0gJGFyZ3N7ZGJuYW1lfSB8fCAncG9zdGdyZXMnOworCW15ICRsaWJkaXIgPSAkYXJn c3tsaWJkaXJ9OworCW15ICRjb25uc3RyID0gJGFyZ3N7Y29ubnN0cn07CisJbXkgJHdhaXQg PSAkYXJnc3t3YWl0fSAvLyAxOworCXVubGVzcyAoJHNldHVwX29rKQorCXsKKwkJdW5sZXNz ICgkbGliZGlyKQorCQl7CisJCQljcm9hayAiYmFkIG5vZGUiIHVubGVzcyAkbm9kZS0+aXNh KCJQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyIik7CisJCQkkbGliZGlyID0gJG5vZGUtPmNv bmZpZ19kYXRhKCctLWxpYmRpcicpOworCQl9CisJCV9zZXR1cCgkbGliZGlyKTsKKwl9CisJ dW5sZXNzICgkY29ubnN0cikKKwl7CisJCWNyb2FrICJiYWQgbm9kZSIgdW5sZXNzICRub2Rl LT5pc2EoIlBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIiKTsKKwkJJGNvbm5zdHIgPSAkbm9k ZS0+Y29ubnN0cigkZGJuYW1lKTsKKwl9CisJJHNlbGYtPntjb25uc3RyfSA9ICRjb25uc3Ry OworCSRzZWxmLT57bm90aWNlc30gPSBbXTsKKworCWlmICgkd2FpdCkKKwl7CisJCSRzZWxm LT57Y29ubn0gPSBQUWNvbm5lY3RkYigkY29ubnN0cik7CisJCSMgVGhlIGRlc3RydWN0b3Ig d2lsbCBjbGVhbiB1cCBmb3IgdXMgZXZlbiBpZiB3ZSBmYWlsCisJCXJldHVybiB1bmRlZiB1 bmxlc3MgUFFzdGF0dXMoJHNlbGYtPntjb25ufSkgPT0gQ09OTkVDVElPTl9PSzsKKwkJJHNl bGYtPl9zZXR1cF9ub3RpY2VfcHJvY2Vzc29yKCk7CisJCXJldHVybiAkc2VsZjsKKwl9CisJ ZWxzZQorCXsKKwkJJHNlbGYtPntjb25ufSA9IFBRY29ubmVjdFN0YXJ0KCRjb25uc3RyKTsK KwkJcmV0dXJuIFBRc3RhdHVzKCRzZWxmLT57Y29ubn0pICE9IENPTk5FQ1RJT05fQkFEID8g JHNlbGYgOiB1bmRlZjsKKwl9Cit9CisKKyMgU2V0IHVwIGEgbm90aWNlIHByb2Nlc3NvciB0 byBjYXB0dXJlIG5vdGljZXMvd2FybmluZ3MKKyMgT25seSB3b3JrcyB3aXRoIEZGSSBiYWNr ZW5kLCBYUyBiYWNrZW5kIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzCitzdWIgX3NldHVwX25vdGlj ZV9wcm9jZXNzb3IKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCisJIyBPbmx5IGF2YWlsYWJs ZSB3aXRoIEZGSSBiYWNrZW5kCisJcmV0dXJuIHVubGVzcyBkZWZpbmVkICZjcmVhdGVfbm90 aWNlX3Byb2Nlc3NvcjsKKworCW15ICRub3RpY2VzID0gJHNlbGYtPntub3RpY2VzfTsKKwor CSMgQ3JlYXRlIGNsb3N1cmUgdGhhdCBjYXB0dXJlcyBub3RpY2VzIGludG8gb3VyIGFycmF5 CisJJHNlbGYtPntfbm90aWNlX2Nsb3N1cmV9ID0gY3JlYXRlX25vdGljZV9wcm9jZXNzb3Io c3ViIHsKKwkJbXkgKCRhcmcsICRtZXNzYWdlKSA9IEBfOworCQlwdXNoIEAkbm90aWNlcywg JG1lc3NhZ2U7CisJfSk7CisKKwlQUXNldE5vdGljZVByb2Nlc3Nvcigkc2VsZi0+e2Nvbm59 LCAkc2VsZi0+e19ub3RpY2VfY2xvc3VyZX0sIHVuZGVmKTsKK30KKworCisjIGZvciBhIGNv bm5lY3Rpb24gc3RhcnRlZCB3aXRoIFBRY29ubmVjdFN0YXJ0LCB3YWl0IHVudGlsIGl0IGlz IGluIENPTk5FQ1RJT05fT0sgc3RhdGUuCisjIFVzZXMgUFFjb25uZWN0UG9sbCB0byBkcml2 ZSB0aGUgYXN5bmMgY29ubmVjdGlvbiBmb3J3YXJkLgorc3ViIHdhaXRfY29ubmVjdAorewor CW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICR0 aW1lb3V0ID0gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CisJ bXkgJHN0YXJ0ID0gdGltZTsKKwl3aGlsZSAoMSkKKwl7CisJCW15ICRwb2xsX3JlcyA9IFBR Y29ubmVjdFBvbGwoJGNvbm4pOworCQlteSAkc3RhdHVzID0gUFFzdGF0dXMoJGNvbm4pOwor CisJCSMgQ29ubmVjdGlvbiBpcyBjb21wbGV0ZQorCQlpZiAoJHBvbGxfcmVzID09IFBHUkVT X1BPTExJTkdfT0sgfHwgJHN0YXR1cyA9PSBDT05ORUNUSU9OX09LKQorCQl7CisJCQkkc2Vs Zi0+X3NldHVwX25vdGljZV9wcm9jZXNzb3IoKTsKKwkJCXJldHVybjsKKwkJfQorCisJCSMg Q29ubmVjdGlvbiBmYWlsZWQKKwkJaWYgKCRwb2xsX3JlcyA9PSBQR1JFU19QT0xMSU5HX0ZB SUxFRCB8fCAkc3RhdHVzID09IENPTk5FQ1RJT05fQkFEKQorCQl7CisJCQlkaWUgImNvbm5l Y3Rpb24gZmFpbGVkOiAiIC4gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCQl9CisKKwkJZGll ICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgY29ubmVjdGlvbiIgaWYgdGltZSAtICRzdGFydCA+ ICR0aW1lb3V0OworCisJCSMgV2FpdCBvbiBzb2NrZXQgYmFzZWQgb24gd2hhdCBQUWNvbm5l Y3RQb2xsIG5lZWRzCisJCW15ICRzb2NrZXQgPSBQUXNvY2tldCgkY29ubik7CisJCWlmICgk c29ja2V0ID49IDApCisJCXsKKwkJCW15ICRmb3JSZWFkID0gKCRwb2xsX3JlcyA9PSBQR1JF U19QT0xMSU5HX1JFQURJTkcpID8gMSA6IDA7CisJCQlteSAkZm9yV3JpdGUgPSAoJHBvbGxf cmVzID09IFBHUkVTX1BPTExJTkdfV1JJVElORykgPyAxIDogMDsKKwkJCW15ICRlbmRfdGlt ZSA9IFBRZ2V0Q3VycmVudFRpbWVVU2VjKCkgKyAxXzAwMF8wMDA7ICAjIDEgc2Vjb25kCisJ CQlQUXNvY2tldFBvbGwoJHNvY2tldCwgJGZvclJlYWQsICRmb3JXcml0ZSwgJGVuZF90aW1l KTsKKwkJfQorCX0KK30KKworIyBTaW5nbGUgc3RlcCBvZiBhc3luYyBjb25uZWN0aW9uIHBv bGxpbmcgLSBkcml2ZXMgdGhlIGNvbm5lY3Rpb24gc3RhdGUgbWFjaGluZQorIyBmb3J3YXJk IHdpdGhvdXQgYmxvY2tpbmcuIFJldHVybnMgdGhlIHBvbGwgcmVzdWx0IChQR1JFU19QT0xM SU5HXyogY29uc3RhbnQpLgorc3ViIHBvbGxfY29ubmVjdAoreworCW15ICRzZWxmID0gc2hp ZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCXJldHVybiBQUWNvbm5lY3RQb2xs KCRjb25uKTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Y2xvc2UoKQorCitDbG9z ZSB0aGUgY29ubmVjdGlvbgorCis9Y3V0CisKK3N1YiBjbG9zZQoreworCW15ICRzZWxmID0g c2hpZnQ7CisJUFFmaW5pc2goJHNlbGYtPntjb25ufSk7CisJZGVsZXRlICRzZWxmLT57Y29u bn07Cit9CisKKyMgQWxpYXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBCYWNrZ3JvdW5kUHNx bAorKnF1aXQgPSBcJmNsb3NlOworCisjIGNsb3NlIHRoZSBzZXNzaW9uIGlmIHRoZSBvYmpl Y3QgZ29lcyBvdXQgb2Ygc2NvcGUKK3N1YiBERVNUUk9ZCit7CisJbXkgJHNlbGYgPSBzaGlm dDsKKwkkc2VsZi0+Y2xvc2UgaWYgZXhpc3RzICRzZWxmLT57Y29ubn07Cit9CisKKz1wb2QK KworPWl0ZW0gJHNlc3Npb24tPnJlY29ubmVjdCgpCisKK1Jlb3BlbiB0aGUgc2Vzc2lvbiB1 c2luZyB0aGUgb3JpZ2luYWwgY29ubnN0ci4gSWYgdGhlIHNlc3Npb24gaXMgc3RpbGwgb3Bl biwKK2Nsb3NlIGl0IGJlZm9yZSByZW9wZW5pbmcuCisKKz1jdXQKKworc3ViIHJlY29ubmVj dAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJJHNlbGYtPmNsb3NlIGlmIGV4aXN0cyAkc2Vs Zi0+e2Nvbm59OworCSRzZWxmLT57Y29ubn0gPSBQUWNvbm5lY3RkYigkc2VsZi0+e2Nvbm5z dHJ9KTsKKwlteSAkc3RhdHVzID0gUFFzdGF0dXMoJHNlbGYtPntjb25ufSk7CisJaWYgKCRz dGF0dXMgPT0gQ09OTkVDVElPTl9PSykKKwl7CisJCSRzZWxmLT5fc2V0dXBfbm90aWNlX3By b2Nlc3NvcigpOworCX0KKwlyZXR1cm4gJHN0YXR1czsKK30KKworPXBvZAorCis9aXRlbSAk c2Vzc2lvbi0+cmVjb25uZWN0X2FuZF9jbGVhcigpCisKK1JlY29ubmVjdCBhbmQgY2xlYXIg YWxsIGNhcHR1cmVkIG5vdGljZXMuIFJldHVybnMgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLgor Cis9Y3V0CisKK3N1YiByZWNvbm5lY3RfYW5kX2NsZWFyCit7CisJbXkgJHNlbGYgPSBzaGlm dDsKKwlteSAkc3RhdHVzID0gJHNlbGYtPnJlY29ubmVjdCgpOworCSRzZWxmLT5jbGVhcl9u b3RpY2VzKCk7CisJcmV0dXJuICRzdGF0dXM7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Np b24tPmdldF9ub3RpY2VzKCkKKworUmV0dXJuIGFuIGFycmF5cmVmIG9mIGFsbCBjYXB0dXJl ZCBub3RpY2VzL3dhcm5pbmdzIHNpbmNlIHRoZSBsYXN0IGNsZWFyLgorCis9Y3V0CisKK3N1 YiBnZXRfbm90aWNlcworeworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuICRzZWxmLT57 bm90aWNlc307Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9ub3RpY2VzX3N0 cigpCisKK1JldHVybiBhbGwgY2FwdHVyZWQgbm90aWNlcy93YXJuaW5ncyBhcyBhIHNpbmds ZSBzdHJpbmcgKGpvaW5lZCBieSBlbXB0eSBzdHJpbmcpLgorVGhpcyBpcyBzaW1pbGFyIHRv IGhvdyBCYWNrZ3JvdW5kUHNxbCdzIHtzdGRlcnJ9IGZpZWxkIHdvcmtzLgorCis9Y3V0CisK K3N1YiBnZXRfbm90aWNlc19zdHIKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBq b2luKCcnLCBAeyRzZWxmLT57bm90aWNlc319KTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vz c2lvbi0+Y2xlYXJfbm90aWNlcygpCisKK0NsZWFyIGFsbCBjYXB0dXJlZCBub3RpY2VzL3dh cm5pbmdzLgorCis9Y3V0CisKK3N1YiBjbGVhcl9ub3RpY2VzCit7CisJbXkgJHNlbGYgPSBz aGlmdDsKKwkjIENsZWFyIGluIHBsYWNlIC0gZG9uJ3QgcmVwbGFjZSB0aGUgYXJyYXksIGFz IHRoZSBub3RpY2UgcHJvY2Vzc29yCisJIyBjbG9zdXJlIGhhcyBhIHJlZmVyZW5jZSB0byBp dAorCUB7JHNlbGYtPntub3RpY2VzfX0gPSAoKTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vz c2lvbi0+Z2V0X3N0ZGVycigpCisKK1JldHVybiBhIHN0ZGVyci1saWtlIHN0cmluZyBjb250 YWluaW5nIGFsbCBub3RpY2VzIHBsdXMgYW55IGVycm9yIG1lc3NhZ2UKK2Zyb20gdGhlIGxh c3QgcXVlcnkuIFRoaXMgbWltaWNzIEJhY2tncm91bmRQc3FsJ3Mge3N0ZGVycn0gYmVoYXZp b3IuCisKKz1jdXQKKworc3ViIGdldF9zdGRlcnIKK3sKKwlteSAkc2VsZiA9IHNoaWZ0Owor CW15ICRzdGRlcnIgPSAkc2VsZi0+Z2V0X25vdGljZXNfc3RyKCk7CisJaWYgKGV4aXN0cyAk c2VsZi0+e2xhc3RfZXJyb3J9ICYmIGRlZmluZWQgJHNlbGYtPntsYXN0X2Vycm9yfSkKKwl7 CisJCSRzdGRlcnIgLj0gJHNlbGYtPntsYXN0X2Vycm9yfTsKKwl9CisJcmV0dXJuICRzdGRl cnI7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmNsZWFyX3N0ZGVycigpCisKK0Ns ZWFyIG5vdGljZXMgYW5kIGxhc3QgZXJyb3IsIGxpa2Ugc2V0dGluZyAkcHNxbC0+e3N0ZGVy cn0gPSAnJy4KKworPWN1dAorCitzdWIgY2xlYXJfc3RkZXJyCit7CisJbXkgJHNlbGYgPSBz aGlmdDsKKwkkc2VsZi0+Y2xlYXJfbm90aWNlcygpOworCWRlbGV0ZSAkc2VsZi0+e2xhc3Rf ZXJyb3J9OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5jb25uX3N0YXR1cygpCisK K1JldHVybiB0aGUgY29ubmVjdGlvbiBzdGF0dXMuIFRoaXMgd2lsbCBiZSBhIGxpYnBxIHN0 YXR1cyB2YWx1ZSBsaWtlCitDPENPTk5FQ1RJT05fT0s+LgorCis9Y3V0CisKK3N1YiBjb25u X3N0YXR1cworeworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuIGV4aXN0cyAkc2VsZi0+ e2Nvbm59ID8gUFFzdGF0dXMoJHNlbGYtPntjb25ufSkgOiB1bmRlZjsKK30KKworPXBvZAor Cis9aXRlbSAkc2Vzc2lvbi0+YmFja2VuZF9waWQoKQorCitSZXR1cm4gdGhlIGJhY2tlbmQg cHJvY2VzcyBJRCBmb3IgdGhpcyBjb25uZWN0aW9uLgorCis9Y3V0CisKK3N1YiBiYWNrZW5k X3BpZAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuIFBRYmFja2VuZFBJRCgkc2Vs Zi0+e2Nvbm59KTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+ZG8oJHNxbCwgLi4u KQorCitSdW4gb25lIG9yIG1vcmUgU1FMIHN0YXRlbWVudHMgc3luY2hyb25vdXNseSAodXNp bmcgQzxQUWV4ZWM+KS4gVGhlIHN0YXRlbWVudHMKK3Nob3VsZCBub3QgcmV0dXJuIGFueSB0 dXBsZXMuIFJldHVybnMgdGhlIHN0YXR1cywgd2hpY2ggd2lsbCBiZQorQzxQR1JFU19DT01N QU5EX09LPiAoaS5lLiAxKSBpbiB0aGUgY2FzZSBvZiBzdWNjZXNzLgorCis9Y3V0CisKK3N1 YiBkbworeworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59 OworCW15ICRzdGF0dXM7CisJZm9yZWFjaCBteSAkc3FsIChAXykKKwl7CisJCW15ICRyZXN1 bHQgPSBQUWV4ZWMoJGNvbm4sICRzcWwpOworCQkkc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMo JHJlc3VsdCk7CisJCVBRY2xlYXIoJHJlc3VsdCk7CisJCXJldHVybiAkc3RhdHVzIHVubGVz cyAkc3RhdHVzID09IFBHUkVTX0NPTU1BTkRfT0s7CisJfQorCXJldHVybiAkc3RhdHVzOwor fQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5kb19hc3luYygkc3FsKQorCitSdW4gYSBz aW5nbGUgc3RhdGVtZW50IGFzeW5jaHJvbm91c2x5LCB1c2luZyBDPFBRc2VuZFF1ZXJ5Pi4g VGhlIHJldHVybiB2YWx1ZQoraXMgYSBib29sZWFuIGluZGljYXRpbmcgc3VjY2Vzcy4KKwor PWN1dAorCitzdWIgZG9fYXN5bmMKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRjb25u ID0gJHNlbGYtPntjb25ufTsKKwlteSAkc3FsID0gc2hpZnQ7CisJbXkgJHJlc3VsdCA9IFBR c2VuZFF1ZXJ5KCRjb25uLCAkc3FsKTsKKwlyZXR1cm4gJHJlc3VsdDsgIyAxIG9yIDAKK30K KworIyBnZXQgdGhlIG5leHQgcmVzdWx0c2V0IGZyb20gc29tZSBhc3luYyBjb21tYW5kcwor IyB3YWl0IGlmIG5lY2Vzc2FyeSB1c2luZyBQUXNvY2tldFBvbGwKKyMgYy5mLiBsaWJwcXNy dl9nZXRfcmVzdWx0CitzdWIgX2dldF9yZXN1bHQKK3sKKwlteSAkY29ubiA9IHNoaWZ0Owor CW15ICRzb2NrZXQgPSBQUXNvY2tldCgkY29ubik7CisJd2hpbGUgKFBRaXNCdXN5KCRjb25u KSkKKwl7CisJCSMgV2FpdCBmb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZGFibGUgKG5v IHRpbWVvdXQgPSAtMSkKKwkJUFFzb2NrZXRQb2xsKCRzb2NrZXQsIDEsIDAsIC0xKTsKKwkJ bGFzdCBpZiBQUWNvbnN1bWVJbnB1dCgkY29ubikgPT0gMDsKKwl9CisJcmV0dXJuIFBRZ2V0 UmVzdWx0KCRjb25uKTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+d2FpdF9mb3Jf Y29tcGxldGlvbigpCisKK1dhaXQgdW50aWwgYWxsIGFzeW5jaHJvbm91cyBTUUwgaGFzIGNv bXBsZXRlZAorCis9Y3V0CisKK3N1YiB3YWl0X2Zvcl9jb21wbGV0aW9uCit7CisJIyB3YWl0 IGZvciBhbGwgdGhlIHJlc3VsdHNldHMgYW5kIGNsZWFyIHRoZW0KKwkjIGMuZi4gbGlicHFz cnZfZ2V0X3Jlc3VsdF9sYXN0CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRz ZWxmLT57Y29ubn07CisJd2hpbGUgKG15ICRyZXMgPSBfZ2V0X3Jlc3VsdCgkY29ubikpCisJ eworCQlQUWNsZWFyKCRyZXMpOworCX0KK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+ Z2V0X2FzeW5jX3Jlc3VsdCgpCisKK1dhaXQgZm9yIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBv ZiBhbiBhc3luYyBxdWVyeSBhcyBhIHJlc3VsdCBoYXNoLgorQ2xlYXJzIGFueSBzdWJzZXF1 ZW50IHJlc3VsdHMuCisKKz1jdXQKKworc3ViIGdldF9hc3luY19yZXN1bHQKK3sKKwlteSAk c2VsZiA9IHNoaWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkcmVzdWx0 ID0gX2dldF9yZXN1bHQoJGNvbm4pOworCXJldHVybiB1bmRlZiB1bmxlc3MgJHJlc3VsdDsK KwlteSAkcmVzID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJUFFjbGVh cigkcmVzdWx0KTsKKwkjIENsZWFyIGFueSByZW1haW5pbmcgcmVzdWx0cworCXdoaWxlICht eSAkciA9IF9nZXRfcmVzdWx0KCRjb25uKSkKKwl7CisJCVBRY2xlYXIoJHIpOworCX0KKwly ZXR1cm4gJHJlczsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+d2FpdF9mb3JfYXN5 bmNfcGF0dGVybigkcGF0dGVybiwgJHRpbWVvdXQpCisKK1dhaXQgZm9yIGFuIGFzeW5jIHF1 ZXJ5IHJlc3VsdCB3aG9zZSBwc3Fsb3V0IG1hdGNoZXMgdGhlIGdpdmVuIHJlZ2V4IHBhdHRl cm4uCitSZXR1cm5zIHRoZSBtYXRjaGluZyBvdXRwdXQgc3RyaW5nLCBvciBkaWVzIG9uIHRp bWVvdXQvZXJyb3IuCitEZWZhdWx0IHRpbWVvdXQgaXMgZnJvbSAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdC4KKworPWN1dAorCitzdWIgd2FpdF9mb3JfYXN5 bmNfcGF0dGVybgoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHBhdHRlcm4gPSBzaGlm dDsKKwlteSAkdGltZW91dCA9IHNoaWZ0IC8vICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6 dGltZW91dF9kZWZhdWx0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkc29j a2V0ID0gUFFzb2NrZXQoJGNvbm4pOworCW15ICRzdGFydCA9IHRpbWU7CisKKwl3aGlsZSAo MSkKKwl7CisJCSMgQ2hlY2sgaWYgcmVzdWx0IGlzIHJlYWR5IChub24tYmxvY2tpbmcpCisJ CVBRY29uc3VtZUlucHV0KCRjb25uKTsKKwkJaWYgKCFQUWlzQnVzeSgkY29ubikpCisJCXsK KwkJCW15ICRyZXN1bHQgPSBQUWdldFJlc3VsdCgkY29ubik7CisJCQlpZiAoJHJlc3VsdCkK KwkJCXsKKwkJCQlteSAkcmVzID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7 CisJCQkJUFFjbGVhcigkcmVzdWx0KTsKKwkJCQkjIENsZWFyIGFueSByZW1haW5pbmcgcmVz dWx0cworCQkJCXdoaWxlIChteSAkciA9IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwkJCQl7CisJ CQkJCVBRY2xlYXIoJHIpOworCQkJCX0KKwkJCQlteSAkb3V0cHV0ID0gJHJlcy0+e3BzcWxv dXR9OworCQkJCWlmICgkb3V0cHV0ID1+ICRwYXR0ZXJuKQorCQkJCXsKKwkJCQkJcmV0dXJu ICRvdXRwdXQ7CisJCQkJfQorCQkJCSMgSWYgd2UgZ290IGEgcmVzdWx0IGJ1dCBpdCBkaWRu J3QgbWF0Y2gsIHJldHVybiBpdCBhbnl3YXkKKwkJCQkjIChjYWxsZXIgbWF5IHdhbnQgdG8g Y2hlY2sgZXJyb3IpCisJCQkJcmV0dXJuICRvdXRwdXQ7CisJCQl9CisJCX0KKworCQlkaWUg InRpbWVkIG91dCB3YWl0aW5nIGZvciBhc3luYyByZXN1bHQiIGlmIHRpbWUgLSAkc3RhcnQg PiAkdGltZW91dDsKKworCQkjIFdhaXQgZm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lIHJlYWRh YmxlLCB3aXRoIDEgc2Vjb25kIHRpbWVvdXQKKwkJIyB0byBhbGxvdyBwZXJpb2RpYyB0aW1l b3V0IGNoZWNrcworCQlteSAkZW5kX3RpbWUgPSBQUWdldEN1cnJlbnRUaW1lVVNlYygpICsg MV8wMDBfMDAwOyAgIyAxIHNlY29uZAorCQlQUXNvY2tldFBvbGwoJHNvY2tldCwgMSwgMCwg JGVuZF90aW1lKTsKKwl9Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnRyeV9nZXRf YXN5bmNfcmVzdWx0KCkKKworTm9uLWJsb2NraW5nIGNoZWNrIGZvciBhc3luYyBxdWVyeSBy ZXN1bHQuIFJldHVybnMgcmVzdWx0IGhhc2ggaWYgYXZhaWxhYmxlLAordW5kZWYgaWYgcXVl cnkgaXMgc3RpbGwgcnVubmluZy4KKworPWN1dAorCitzdWIgdHJ5X2dldF9hc3luY19yZXN1 bHQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsK KworCVBRY29uc3VtZUlucHV0KCRjb25uKTsKKwlyZXR1cm4gdW5kZWYgaWYgUFFpc0J1c3ko JGNvbm4pOworCisJbXkgJHJlc3VsdCA9IFBRZ2V0UmVzdWx0KCRjb25uKTsKKwlyZXR1cm4g dW5kZWYgdW5sZXNzICRyZXN1bHQ7CisKKwlteSAkcmVzID0gX2dldF9yZXN1bHRfZGF0YSgk cmVzdWx0LCAkY29ubik7CisJUFFjbGVhcigkcmVzdWx0KTsKKwkjIENsZWFyIGFueSByZW1h aW5pbmcgcmVzdWx0cworCXdoaWxlIChteSAkciA9IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwl7 CisJCVBRY2xlYXIoJHIpOworCX0KKwlyZXR1cm4gJHJlczsKK30KKworPXBvZAorCis9aXRl bSAgJHNlc3Npb24tPnNldF9wYXNzd29yZCgkdXNlciwgJHBhc3N3b3JkKQorCitTZXQgdGhl IHVzZXIncyBwYXNzd29yZCBieSBjYWxsaW5nIEM8UFFjaGFuZ2VQYXNzd29yZD4uCisKK1Jl dHVybnMgYSByZXN1bHQgaGFzaC4KKworPWN1dAorCisjIHNldCBwYXNzd29yZCBmb3IgdXNl cgorc3ViIHNldF9wYXNzd29yZAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHVzZXIg PSBzaGlmdDsKKwlteSAkcGFzc3dvcmQgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57 Y29ubn07CisJbXkgJHJlc3VsdCA9IFBRY2hhbmdlUGFzc3dvcmQoJGNvbm4sICR1c2VyLCAk cGFzc3dvcmQpOworCW15ICRyZXQgPSBfZ2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQpOworCVBR Y2xlYXIoJHJlc3VsdCk7CisJcmV0dXJuICRyZXQ7Cit9CisKKyMgQ29tbW9uIGludGVybmFs IHJvdXRpbmUgdG8gcHJvY2VzcyByZXN1bHQgZGF0YS4KKyMgVGhlIHJldHVybmVkIG9iamVj dCBpcyBkZWFkIGFuZCB3aWxsIGJlIGdhcmJhZ2UgY29sbGVjdGVkIGFzIG5lY2Vzc2FyeS4K Kworc3ViIF9nZXRfcmVzdWx0X2RhdGEKK3sKKwlteSAkcmVzdWx0ID0gc2hpZnQ7CisJbXkg JGNvbm4gPSBzaGlmdDsKKwlteSAkc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7 CisJbXkgJHJlcyA9IHsJc3RhdHVzID0+ICRzdGF0dXMsIG5hbWVzID0+IFtdLCB0eXBlcyA9 PiBbXSwgcm93cyA9PiBbXSwKKwkJCXBzcWxvdXQgPT4gIiJ9OworCXVubGVzcyAoJHN0YXR1 cyA9PSBQR1JFU19UVVBMRVNfT0sgfHwgJHN0YXR1cyA9PSBQR1JFU19DT01NQU5EX09LKQor CXsKKwkJJHJlcy0+e2Vycm9yX21lc3NhZ2V9ID0gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOwor CQlyZXR1cm4gJHJlczsKKwl9CisJaWYgKCRzdGF0dXMgPT0gUEdSRVNfQ09NTUFORF9PSykK Kwl7CisJCXJldHVybiAkcmVzOworCX0KKwlteSAkbnR1cGxlcyA9IFBRbnR1cGxlcygkcmVz dWx0KTsKKwlteSAkbmZpZWxkcyA9IFBRbmZpZWxkcygkcmVzdWx0KTsKKwkjIGFzc3VtaW5n IGhlcmUgdGhhdCB0aGUgc3RyaW5ncyByZXR1cm5lZCBieSBQUWZuYW1lIGFuZCBQUWdldHZh bHVlCisJIyBhcmUgbWFwcGVkIGludG8gcGVybCBzcGFjZSB1c2luZyBzZXRzdnB2IG9yIHNp bWlsYXIgYW5kIHRodXMgd29uJ3QKKwkjIGJlIGFmZmVjdCBieSB1cyBjYWxsaW5nIFBRY2xl YXIgb24gdGhlIHJlc3VsdCBvYmplY3QuCisJZm9yZWFjaCBteSAkZmllbGQgKDAgLi4gJG5m aWVsZHMtMSkKKwl7CisJCXB1c2goQHskcmVzLT57bmFtZXN9fSwgUFFmbmFtZSgkcmVzdWx0 LCAkZmllbGQpKTsKKwkJcHVzaChAeyRyZXMtPnt0eXBlc319LCBQUWZ0eXBlKCRyZXN1bHQs ICRmaWVsZCkpOworCX0KKwlteSBAdGV4dHJvd3M7CisJZm9yZWFjaCBteSAkbnJvdyAoMCAu LiAkbnR1cGxlcyAtIDEpCisJeworCQlteSAkcm93ID0gW107CisJCWZvcmVhY2ggbXkgJGZp ZWxkICggMCAuLiAkbmZpZWxkcyAtIDEpCisJCXsKKwkJCW15ICR2YWwgPSBQUWdldHZhbHVl KCRyZXN1bHQsICRucm93LCAkZmllbGQpOworCQkJaWYgKCgkdmFsIC8vICIiKSBlcSAiIikK KwkJCXsKKwkJCQkkdmFsID0gdW5kZWYgaWYgUFFnZXRpc251bGwoJHJlc3VsdCwgJG5yb3cs ICRmaWVsZCk7CisJCQl9CisJCQlwdXNoKEAkcm93LCAkdmFsKTsKKwkJfQorCQlwdXNoKEB7 JHJlcy0+e3Jvd3N9fSwgJHJvdyk7CisJCW5vIHdhcm5pbmdzIHF3KHVuaW5pdGlhbGl6ZWQp OworCQlwdXNoKEB0ZXh0cm93cywgam9pbignfCcsIEAkcm93KSk7CisJfQorCSRyZXMtPntw c3Fsb3V0fSA9IGpvaW4oIlxuIixAdGV4dHJvd3MpIGlmICRudHVwbGVzOworCXJldHVybiAk cmVzOworfQorCisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5KCRzcWwpCisKK1J1 bnMgc3FsIHRoYXQgbWlnaHQgcmV0dXJuIHR1cGxlcy4KKworUmV0dXJucyBhIHJlc3VsdCBo YXNoLgorCis9Y3V0CisKK3N1YiBxdWVyeQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkg JHNxbCA9IHNoaWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKworCSMgVXNlIFBR c2VuZFF1ZXJ5ICsgUFFnZXRSZXN1bHQgdG8gaGFuZGxlIG11bHRpLXN0YXRlbWVudCBTUUwg cHJvcGVybHkuCisJIyBUaGlzIGNvbGxlY3RzIHJlc3VsdHMgZnJvbSBhbGwgc3RhdGVtZW50 cyBhbmQgcmV0dXJucyB0aGUgbGFzdCBvbmUKKwkjIHRoYXQgaGFkIHR1cGxlcywgc2ltaWxh ciB0byBob3cgcHNxbCB3b3Jrcy4KKwlQUXNlbmRRdWVyeSgkY29ubiwgJHNxbCkgb3IgZG8g eworCQlyZXR1cm4geyBzdGF0dXMgPT4gLTEsIGVycm9yX21lc3NhZ2UgPT4gUFFlcnJvck1l c3NhZ2UoJGNvbm4pLAorCQkJCSBuYW1lcyA9PiBbXSwgdHlwZXMgPT4gW10sIHJvd3MgPT4g W10sIHBzcWxvdXQgPT4gIiIgfTsKKwl9OworCisJbXkgJGZpbmFsX3JlczsKKwlteSAkbGFz dF9lcnJvcjsKKwlteSBAYWxsX3BzcWxvdXQ7CisKKwl3aGlsZSAobXkgJHJlc3VsdCA9IF9n ZXRfcmVzdWx0KCRjb25uKSkKKwl7CisJCW15ICRyZXMgPSBfZ2V0X3Jlc3VsdF9kYXRhKCRy ZXN1bHQsICRjb25uKTsKKwkJUFFjbGVhcigkcmVzdWx0KTsKKworCQkjIENvbGxlY3Qgb3V0 cHV0IGZyb20gYWxsIHN0YXRlbWVudHMKKwkJcHVzaCBAYWxsX3BzcWxvdXQsICRyZXMtPntw c3Fsb3V0fSBpZiAkcmVzLT57cHNxbG91dH0gbmUgIiI7CisKKwkJIyBUcmFjayBlcnJvcnMK KwkJJGxhc3RfZXJyb3IgPSAkcmVzLT57ZXJyb3JfbWVzc2FnZX0gaWYgZXhpc3RzICRyZXMt PntlcnJvcl9tZXNzYWdlfTsKKworCQkjIEtlZXAgdGhlIGxhc3QgcmVzdWx0IHRoYXQgaGFk IHR1cGxlcywgb3IgdGhlIGxhc3QgcmVzdWx0IG92ZXJhbGwKKwkJaWYgKCRyZXMtPntzdGF0 dXN9ID09IFBHUkVTX1RVUExFU19PSyB8fCAhZGVmaW5lZCAkZmluYWxfcmVzKQorCQl7CisJ CQkkZmluYWxfcmVzID0gJHJlczsKKwkJfQorCX0KKworCSRmaW5hbF9yZXMgLy89IHsgc3Rh dHVzID0+IFBHUkVTX0NPTU1BTkRfT0ssIG5hbWVzID0+IFtdLCB0eXBlcyA9PiBbXSwKKwkJ CQkJIHJvd3MgPT4gW10sIHBzcWxvdXQgPT4gIiIgfTsKKworCSMgQ29tYmluZSBhbGwgb3V0 cHV0IChsaWtlIHBzcWwgZG9lcykKKwkkZmluYWxfcmVzLT57cHNxbG91dH0gPSBqb2luKCJc biIsIEBhbGxfcHNxbG91dCkgaWYgQGFsbF9wc3Fsb3V0OworCisJIyBJZiB0aGVyZSB3YXMg YW55IGVycm9yLCBpbmNsdWRlIGl0IGluIHRoZSByZXN1bHQgZm9yIHF1ZXJ5X3NhZmUKKwkk ZmluYWxfcmVzLT57ZXJyb3JfbWVzc2FnZX0gPSAkbGFzdF9lcnJvciBpZiBkZWZpbmVkICRs YXN0X2Vycm9yOworCisJIyBTdG9yZSBlcnJvciBmb3IgZ2V0X3N0ZGVycigpCisJJHNlbGYt PntsYXN0X2Vycm9yfSA9ICRsYXN0X2Vycm9yOworCisJIyBJZiB3ZSdyZSBpbiBhbiBhYm9y dGVkIHRyYW5zYWN0aW9uIHN0YXRlLCByb2xsIGl0IGJhY2sgdG8gY2xlYW4gdXAuCisJIyBU aGlzIG1pbWljcyBwc3FsJ3MgYmVoYXZpb3Igd2l0aCBvbl9lcnJvcl9zdG9wID0+IDAuCisJ aWYgKFBRdHJhbnNhY3Rpb25TdGF0dXMoJGNvbm4pID09IFBRVFJBTlNfSU5FUlJPUikKKwl7 CisJCW15ICRyYiA9IFBRZXhlYygkY29ubiwgIlJPTExCQUNLIik7CisJCVBRY2xlYXIoJHJi KSBpZiAkcmI7CisJfQorCisJcmV0dXJuICRmaW5hbF9yZXM7Cit9CisKKz1wb2QKKworPWl0 ZW0gJHNlc3Npb24tPnF1ZXJ5X3NhZmUoJHNxbCkKKworUnVucyBzcWwgdGhhdCBtaWdodCBy ZXR1cm4gdHVwbGVzLCBjcm9ha2luZyBpZiB0aGVyZSdzIGFuIGVycm9yLgorUmV0dXJucyB0 aGUgcHNxbG91dCBzdHJpbmcgKGxpa2UgcHNxbCAtQXQgb3V0cHV0KSBvbiBzdWNjZXNzLgor Cis9Y3V0CisKK3N1YiBxdWVyeV9zYWZlCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAk c3FsID0gc2hpZnQ7CisJbXkgJHJlcyA9ICRzZWxmLT5xdWVyeSgkc3FsKTsKKwlpZiAoZXhp c3RzICRyZXMtPntlcnJvcl9tZXNzYWdlfSkgeworCQkjIERlYnVnOiBzaG93IHdoZXJlIHRo ZSBlcnJvciBvY2N1cnJlZAorCQlteSAkc2hvcnRfc3FsID0gc3Vic3RyKCRzcWwsIDAsIDEw MCk7CisJCSRzaG9ydF9zcWwgPX4gcy9ccysvIC9nOworCQljcm9hayAicXVlcnlfc2FmZSBm YWlsZWQgb24gWyRzaG9ydF9zcWwuLi5dOiAkcmVzLT57ZXJyb3JfbWVzc2FnZX0iOworCX0K KwlyZXR1cm4gJHJlcy0+e3BzcWxvdXR9OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9u LT5xdWVyeV9vbmV2YWwoJHNxbCBbLCAkbWlzc2luZ19vayBdICkKKworUnVuIGEgcXVlcnkg dGhhdCBpcyBleHBlY3RlZCB0byByZXR1cm4gbm8gbW9yZSB0aGFuIG9uZSB0dXBsZSB3aXRo IG9uZSB2YWx1ZTsKKworSWYgQzwkbWlzc2luZ19vaz4gaXMgdHJ1ZSwgcmV0dXJuIHVuZGVm IGlmIHRoZSBxdWVyeSByZXR1cm5zIG5vIHR1cGxlLiBPdGhlcndpc2UKK2Nyb2FrIGlmIHRo ZXJlIGlzIG5vdCBleGFjdGx5IG9uZSB0dXBsZSwgb3Igb2YgdGhlIHR1cGxlIGRvZXMgbm90 IGhhdmUKK2V4Y3RseSBvbmUgdmFsdWUuCisKK0lmIG5vbmUgb2YgdGhlc2UgYXBwbHksIHJl dHVybiB0aGUgc2luZ2xlIHZhbHVlIGZyb20gdGhlIHF1ZXJ5LiBBIE5VTEwgdmFsdWUKK3dp bGwgcmVzdWx0IGluIHVuZGVmLCBzbyBpZiBDPCRtaXNzaW5nX29rPiBpcyB0cnVlIHlvdSB3 b24ndCBiZSBhYmxlIHRvCitkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbnVsbCB2YWx1ZSBhbmQg YSBtaXNzaW5nIHR1cGxlLgorCitBIG5vbiBOVUxMIHZhbHVlIGlzIHJldHVybmVkIGFzIHRo ZSBzdHJpbmcgdmFsdWUgb2J0YWluZWQgZnJvbSBDPFBRZ2V0dmFsdWU+LgorCis9Y3V0CisK K3N1YiBxdWVyeV9vbmV2YWwKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRzcWwgPSBz aGlmdDsKKwlteSAkbWlzc2luZ19vayA9IHNoaWZ0OyAjIGRlZmF1bHQgaXMgbm90IG9rCisJ bXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICRyZXN1bHQgPSBQUWV4ZWMoJGNvbm4s ICRzcWwpOworCW15ICRzdGF0dXMgPSBQUXJlc3VsdFN0YXR1cygkcmVzdWx0KTsKKwl1bmxl c3MgICgkc3RhdHVzID09IFBHUkVTX1RVUExFU19PSykKKwl7CisJCVBRY2xlYXIoJHJlc3Vs dCkgaWYgJHJlc3VsdDsKKwkJY3JvYWsgUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCX0KKwlt eSAkbnR1cGxlcyA9IFBRbnR1cGxlcygkcmVzdWx0KTsKKwlyZXR1cm4gdW5kZWYgaWYgKCRt aXNzaW5nX29rICYmICEkbnR1cGxlcyk7CisJbXkgJG5maWVsZHMgPSBQUW5maWVsZHMoJHJl c3VsdCk7CisJY3JvYWsgIiRudHVwbGVzIHR1cGxlcyAhPSAxIG9yICRuZmllbGRzIGZpZWxk cyAhPSAxIgorCSAgaWYgJG50dXBsZXMgIT0gMSB8fCAkbmZpZWxkcyAhPSAxOworCW15ICR2 YWwgPSBQUWdldHZhbHVlKCRyZXN1bHQsIDAsIDApOworCWlmICgkdmFsIGVxICIiKQorCXsK KwkJJHZhbCA9IHVuZGVmIGlmIFBRZ2V0aXNudWxsKCRyZXN1bHQsIDAsIDApOworCX0KKwlQ UWNsZWFyKCRyZXN1bHQpOworCXJldHVybiAkdmFsOworfQorCis9cG9kCisKKz1pdGVtICRz ZXNzaW9uLT5xdWVyeV90dXBsZXMoJHNxbCwgLi4uKQorCitSdW4gdGhlIHNxbCBjb21tYW5k cyBhbmQgcmV0dXJuIHRoZSBvdXRwdXQgYXMgYSBzaW5nbGUgcGllY2Ugb2YgdGV4dCBpbiB0 aGUKK3NhbWUgZm9ybWF0IGFzIEM8cHNxbCAtQSAtdD4uCisKK0ZpZWxkcyB3aXRoaW4gdHVw bGVzIGFyZSBzZXBhcmF0ZWQgYnkgYSAifCIsIHR1cGxlcyBhcmUgc3BlYXJhdGVkIGJ5ICJc biIKKworPWN1dAorCitzdWIgcXVlcnlfdHVwbGVzCit7CisJbXkgJHNlbGYgPSBzaGlmdDsK KwkjIFVzZSBwaXBlbGluZWQgdmVyc2lvbiBmb3IgNCsgcXVlcmllcyB3aGVyZSB0aGUgb3Zl cmhlYWQgaXMgd29ydGggaXQKKwlyZXR1cm4gJHNlbGYtPnF1ZXJ5X3R1cGxlc19waXBlbGlu ZWQoQF8pIGlmIEBfID49IDQ7CisKKwlteSBAcmVzdWx0czsKKwlmb3JlYWNoIG15ICRzcWwg KEBfKQorCXsKKwkJbXkgJHJlcyA9ICRzZWxmLT5xdWVyeSgkc3FsKTsKKwkJY3JvYWsgJHJl cy0+e2Vycm9yX21lc3NhZ2V9CisJCSAgdW5sZXNzICRyZXMtPntzdGF0dXN9ID09IFBHUkVT X1RVUExFU19PSzsKKwkJbXkgJHJvd3MgPSAkcmVzLT57cm93c307CisJCXVubGVzcyAoQCRy b3dzKQorCQl7CisJCQkjIHVuZm9ydHVuYXRlbHkgYnJlYWtzIGF0IGxlYXN0IG9uZSB0ZXN0 CisJCQkjIHB1c2goQHJlc3VsdHMsIi0tIGVtcHR5Iik7CisJCQluZXh0OworCQl9CisJCSMg am9pbiB3aWxsIHJlbmRlciB1bmRlZiBhcyBhbiBlbXB0eSBzdHJpbmcgaGVyZQorCQlubyB3 YXJuaW5ncyBxdyh1bmluaXRpYWxpemVkKTsKKwkJbXkgQHR1cGxlcyA9IG1hcCB7IGpvaW4o J3wnLCBAJF8pOyB9IEAkcm93czsKKwkJcHVzaChAcmVzdWx0cywgam9pbigiXG4iLEB0dXBs ZXMpKTsKKwl9CisJcmV0dXJuIGpvaW4oIlxuIixAcmVzdWx0cyk7Cit9CisKKz1wb2QKKwor PWl0ZW0gJHNlc3Npb24tPnF1ZXJ5X3R1cGxlc19waXBlbGluZWQoJHNxbCwgLi4uKQorCitS dW4gbXVsdGlwbGUgU1FMIHF1ZXJpZXMgdXNpbmcgcGlwZWxpbmUgbW9kZSBmb3IgZWZmaWNp ZW5jeS4gUmV0dXJucyBvdXRwdXQKK2luIHRoZSBzYW1lIGZvcm1hdCBhcyBDPHF1ZXJ5X3R1 cGxlcz4gYnV0IHdpdGggb25seSBvbmUgbmV0d29yayByb3VuZC10cmlwCitmb3IgYWxsIHF1 ZXJpZXMuCisKKz1jdXQKKworc3ViIHF1ZXJ5X3R1cGxlc19waXBlbGluZWQKK3sKKwlteSAk c2VsZiA9IHNoaWZ0OworCW15IEBxdWVyaWVzID0gQF87CisJbXkgJGNvbm4gPSAkc2VsZi0+ e2Nvbm59OworCW15IEByZXN1bHRzOworCisJIyBFbnRlciBwaXBlbGluZSBtb2RlCisJUFFl bnRlclBpcGVsaW5lTW9kZSgkY29ubikgb3IgY3JvYWsgIkZhaWxlZCB0byBlbnRlciBwaXBl bGluZSBtb2RlIjsKKworCSMgU2VuZCBhbGwgcXVlcmllcyB1c2luZyBQUXNlbmRRdWVyeVBh cmFtcyAoUFFzZW5kUXVlcnkgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZSkKKwlmb3Ig bXkgJHNxbCAoQHF1ZXJpZXMpCisJeworCQlQUXNlbmRRdWVyeVBhcmFtcygkY29ubiwgJHNx bCwgMCwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsIDApIG9yIGRvIHsKKwkJCVBRZXhp dFBpcGVsaW5lTW9kZSgkY29ubik7CisJCQljcm9hayAiRmFpbGVkIHRvIHNlbmQgcXVlcnk6 ICIgLiBQUWVycm9yTWVzc2FnZSgkY29ubik7CisJCX07CisJfQorCisJIyBNYXJrIGVuZCBv ZiBwaXBlbGluZQorCVBRcGlwZWxpbmVTeW5jKCRjb25uKSBvciBkbyB7CisJCVBRZXhpdFBp cGVsaW5lTW9kZSgkY29ubik7CisJCWNyb2FrICJGYWlsZWQgdG8gc3luYyBwaXBlbGluZSI7 CisJfTsKKworCSMgQ29sbGVjdCByZXN1bHRzIGZvciBlYWNoIHF1ZXJ5CisJZm9yIG15ICRp ICgwIC4uICQjcXVlcmllcykKKwl7CisJCW15ICRyZXN1bHQgPSBfZ2V0X3Jlc3VsdCgkY29u bik7CisJCWlmICghJHJlc3VsdCkKKwkJeworCQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25u KTsKKwkJCWNyb2FrICJObyByZXN1bHQgZm9yIHF1ZXJ5ICRpIjsKKwkJfQorCisJCW15ICRz dGF0dXMgPSBQUXJlc3VsdFN0YXR1cygkcmVzdWx0KTsKKwkJaWYgKCRzdGF0dXMgPT0gUEdS RVNfUElQRUxJTkVfQUJPUlRFRCkKKwkJeworCQkJUFFjbGVhcigkcmVzdWx0KTsKKwkJCVBR ZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7CisJCQljcm9hayAiUGlwZWxpbmUgYWJvcnRlZCBh dCBxdWVyeSAkaSI7CisJCX0KKworCQlpZiAoJHN0YXR1cyA9PSBQR1JFU19UVVBMRVNfT0sp CisJCXsKKwkJCW15ICRyZXMgPSBfZ2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQsICRjb25uKTsK KwkJCW15ICRyb3dzID0gJHJlcy0+e3Jvd3N9OworCQkJaWYgKEAkcm93cykKKwkJCXsKKwkJ CQlubyB3YXJuaW5ncyBxdyh1bmluaXRpYWxpemVkKTsKKwkJCQlteSBAdHVwbGVzID0gbWFw IHsgam9pbignfCcsIEAkXyk7IH0gQCRyb3dzOworCQkJCXB1c2goQHJlc3VsdHMsIGpvaW4o IlxuIiwgQHR1cGxlcykpOworCQkJfQorCQl9CisJCWVsc2lmICgkc3RhdHVzICE9IFBHUkVT X0NPTU1BTkRfT0spCisJCXsKKwkJCW15ICRlcnIgPSBQUWVycm9yTWVzc2FnZSgkY29ubik7 CisJCQlQUWNsZWFyKCRyZXN1bHQpOworCQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKTsK KwkJCWNyb2FrICJRdWVyeSAkaSBmYWlsZWQ6ICRlcnIiOworCQl9CisJCVBRY2xlYXIoJHJl c3VsdCk7CisKKwkJIyBDb25zdW1lIHRoZSBOVUxMIHJlc3VsdCB0aGF0IG1hcmtzIGVuZCBv ZiB0aGlzIHF1ZXJ5J3MgcmVzdWx0cworCQl3aGlsZSAobXkgJGV4dHJhID0gUFFnZXRSZXN1 bHQoJGNvbm4pKQorCQl7CisJCQlQUWNsZWFyKCRleHRyYSk7CisJCX0KKwl9CisKKwkjIENv bnN1bWUgdGhlIHBpcGVsaW5lIHN5bmMgcmVzdWx0CisJbXkgJHN5bmNfcmVzdWx0ID0gX2dl dF9yZXN1bHQoJGNvbm4pOworCWlmICgkc3luY19yZXN1bHQpCisJeworCQlteSAkc3RhdHVz ID0gUFFyZXN1bHRTdGF0dXMoJHN5bmNfcmVzdWx0KTsKKwkJUFFjbGVhcigkc3luY19yZXN1 bHQpOworCQlpZiAoJHN0YXR1cyAhPSBQR1JFU19QSVBFTElORV9TWU5DKQorCQl7CisJCQlQ UWV4aXRQaXBlbGluZU1vZGUoJGNvbm4pOworCQkJY3JvYWsgIkV4cGVjdGVkIFBHUkVTX1BJ UEVMSU5FX1NZTkMsIGdvdCAkc3RhdHVzIjsKKwkJfQorCX0KKworCSMgRXhpdCBwaXBlbGlu ZSBtb2RlCisJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKSBvciBjcm9hayAiRmFpbGVkIHRv IGV4aXQgcGlwZWxpbmUgbW9kZSI7CisKKwlyZXR1cm4gam9pbigiXG4iLCBAcmVzdWx0cyk7 Cit9CisKKworc3ViIHNldG5vbmJsb2NraW5nCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlt eSAkdmFsID0gc2hpZnQ7CisJbXkgJHJlcyA9IFBRc2V0bm9uYmxvY2tpbmcoJHNlbGYtPntj b25ufSwgJHZhbCk7CisJY3JvYWsgInByb2JsZW0gc2V0dGluZyBub24tYmxvY2tpbmciCisJ ICBpZiAkcmVzOworCXJldHVybjsKK30KKworc3ViIGlzbm9uYmxvY2tpbmcKK3sKKwlteSAk c2VsZiA9IHNoaWZ0OworCXJldHVybiBQUWlzbm9uYmxvY2tpbmcoJHNlbGYtPntjb25ufSk7 Cit9CisKK3N1YiBlbnRlclBpcGVsaW5lTW9kZQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJ cmV0dXJuIFBRZW50ZXJQaXBlbGluZU1vZGUoJHNlbGYtPntjb25ufSk7Cit9CisKK3N1YiBl eGl0UGlwZWxpbmVNb2RlCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFleGl0 UGlwZWxpbmVNb2RlKCRzZWxmLT57Y29ubn0pOworfQorCitzdWIgcGlwZWxpbmVTdGF0dXMK K3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBQUXBpcGVsaW5lU3RhdHVzKCRzZWxm LT57Y29ubn0pOworfQorCitzdWIgcGlwZWxpbmVTeW5jCit7CisJbXkgJHNlbGYgPSBzaGlm dDsKKwlyZXR1cm4gUFFwaXBlbGluZVN5bmMoJHNlbGYtPntjb25ufSk7Cit9CisKKworc3Vi IGRvX3BpcGVsaW5lCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3RhdGVtZW50ID0g c2hpZnQ7CisJbXkgQGFyZ3MgPSBAXzsKKwlteSAkbmFyZ3MgPSBzY2FsYXIoQGFyZ3MpOwor CW15ICRyZXMgPSBQUXNlbmRRdWVyeVBhcmFtcygkc2VsZi0+e2Nvbm59LCAkc3RhdGVtZW50 LCAkbmFyZ3MsIHVuZGVmLCBcQGFyZ3MsIHVuZGVmICwgdW5kZWYsIDApOworCXJldHVybiAk cmVzOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5nZXRfbm90aWZpY2F0aW9uKCkK KworQ2hlY2sgZm9yIGEgcGVuZGluZyBub3RpZmljYXRpb24gYW5kIHJldHVybiBpdCBhcyBh IGhhc2hyZWYgd2l0aCBrZXlzCitDPGNoYW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+ LiBSZXR1cm5zIHVuZGVmIGlmIG5vIG5vdGlmaWNhdGlvbiBpcworYXZhaWxhYmxlLgorCitB dXRvbWF0aWNhbGx5IGNvbnN1bWVzIGFueSBwZW5kaW5nIGlucHV0IGJlZm9yZSBjaGVja2lu ZyBmb3Igbm90aWZpY2F0aW9ucy4KKworPWN1dAorCitzdWIgZ2V0X25vdGlmaWNhdGlvbgor eworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCisJ IyBDb25zdW1lIGFueSBwZW5kaW5nIGlucHV0CisJUFFjb25zdW1lSW5wdXQoJGNvbm4pOwor CisJbXkgJG5vdGlmeSA9IFBRbm90aWZpZXMoJGNvbm4pOworCXJldHVybiB1bmRlZiB1bmxl c3MgJG5vdGlmeTsKKworCW15ICRyZXN1bHQgPSB7CisJCWNoYW5uZWwgPT4gUFFub3RpZnlf Y2hhbm5lbCgkbm90aWZ5KSwKKwkJcGlkICAgICA9PiBQUW5vdGlmeV9iZV9waWQoJG5vdGlm eSksCisJCXBheWxvYWQgPT4gUFFub3RpZnlfcGF5bG9hZCgkbm90aWZ5KSwKKwl9OworCisJ UFFub3RpZnlfZnJlZSgkbm90aWZ5KTsKKworCXJldHVybiAkcmVzdWx0OworfQorCis9cG9k CisKKz1pdGVtICRzZXNzaW9uLT5nZXRfYWxsX25vdGlmaWNhdGlvbnMoKQorCitDb25zdW1l IGlucHV0IGFuZCByZXR1cm4gYWxsIHBlbmRpbmcgbm90aWZpY2F0aW9ucyBhcyBhbiBhcnJh eXJlZiBvZiBoYXNocmVmcy4KK0VhY2ggaGFzaHJlZiBoYXMga2V5cyBDPGNoYW5uZWw+LCBD PHBpZD4sIGFuZCBDPHBheWxvYWQ+LgorCis9Y3V0CisKK3N1YiBnZXRfYWxsX25vdGlmaWNh dGlvbnMKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15IEBub3RpZmljYXRpb25zOworCisJ d2hpbGUgKG15ICRub3RpZnkgPSAkc2VsZi0+Z2V0X25vdGlmaWNhdGlvbigpKQorCXsKKwkJ cHVzaCBAbm90aWZpY2F0aW9ucywgJG5vdGlmeTsKKwl9CisKKwlyZXR1cm4gXEBub3RpZmlj YXRpb25zOworfQorCis9cG9kCisKKz1iYWNrCisKKz1jdXQKKworCisxOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcGVybC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3BlcmwvbWVzb24uYnVp bGQKaW5kZXggMGZkMzZjOWU1NzAuLjgyODY0NThkMTM0IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9wZXJsL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKQEAg LTE1LDQgKzE1LDM3IEBAIGluc3RhbGxfZGF0YSgKICAgJ1Bvc3RncmVTUUwvVGVzdC9CYWNr Z3JvdW5kUHNxbC5wbScsCiAgICdQb3N0Z3JlU1FML1Rlc3QvQWRqdXN0RHVtcC5wbScsCiAg ICdQb3N0Z3JlU1FML1Rlc3QvQWRqdXN0VXBncmFkZS5wbScsCisgICdQb3N0Z3JlU1FML1Rl c3QvUHEucG0nLAogICBpbnN0YWxsX2RpcjogZGlyX3BneHMgLyAnc3JjL3Rlc3QvcGVybC9Q b3N0Z3JlU1FML1Rlc3QnKQorCisjIEJ1aWxkIHRoZSBQcSBYUyBtb2R1bGUgaWYgcGVybCBp cyBhdmFpbGFibGUKK2lmIHBlcmxfZGVwLmZvdW5kKCkKKyAgcHFfc3VicHBkaXIgPSBydW5f Y29tbWFuZChwZXJsLCAnLWUnLAorICAgICd1c2UgTGlzdDo6VXRpbCBxdyhmaXJzdCk7IHBy aW50IGZpcnN0IHsgLXIgIiRfL0V4dFV0aWxzL3hzdWJwcCIgfSBASU5DJywKKyAgICBjaGVj azogdHJ1ZSkuc3Rkb3V0KCkKKyAgcHFfeHN1YnBwID0gJ0AwQC9FeHRVdGlscy94c3VicHAn LmZvcm1hdChwcV9zdWJwcGRpcikKKyAgcHFfdHlwZW1hcCA9ICdAMEAvRXh0VXRpbHMvdHlw ZW1hcCcuZm9ybWF0KHByaXZsaWJleHApCisKKyAgcHFfeHNfYyA9IGN1c3RvbV90YXJnZXQo J1BxLmMnLAorICAgIGlucHV0OiBmaWxlcygnUG9zdGdyZVNRTC9UZXN0L1BxLnhzJyksCisg ICAgb3V0cHV0OiAnUHEuYycsCisgICAgY29tbWFuZDogW3BlcmwsIHBxX3hzdWJwcCwgJy10 eXBlbWFwJywgcHFfdHlwZW1hcCwgJy1vdXRwdXQnLCAnQE9VVFBVVEAnLCAnQElOUFVUQCdd CisgICkKKworICBwcV9tb2R1bGUgPSBzaGFyZWRfbW9kdWxlKCdQcScsCisgICAgcHFfeHNf YywKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBbCisgICAgICBpbmNsdWRlX2RpcmVjdG9y aWVzKCdQb3N0Z3JlU1FML1Rlc3QnKSwKKyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4u Ly4uL3BsL3BscGVybCcpLCAgIyBmb3IgcHBwb3J0LmgKKyAgICAgIGluY2x1ZGVfZGlyZWN0 b3JpZXMoJy4uLy4uL2ludGVyZmFjZXMvbGlicHEnKSwKKyAgICAgIHBvc3RncmVzX2luYywK KyAgICBdLAorICAgIGNfYXJnczogWyctV25vLXNoYWRvdz1jb21wYXRpYmxlLWxvY2FsJywg Jy1Xbm8tZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50J10sCisgICAgZGVwZW5kZW5jaWVz OiBbcGVybF9kZXAsIGxpYnBxXSwKKyAgICBuYW1lX3ByZWZpeDogJycsICAjIFBlcmwgWFMg bW9kdWxlcyBkb24ndCB1c2UgbGliIHByZWZpeAorICAgIGluc3RhbGw6IHRydWUsCisgICAg aW5zdGFsbF9kaXI6IGRpcl9wZ3hzIC8gJ3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0 JywKKyAgICBpbnN0YWxsX3JwYXRoOiAnOicuam9pbihtb2RfaW5zdGFsbF9ycGF0aHMgKyBb J0AwQC9DT1JFJy5mb3JtYXQoYXJjaGxpYmV4cCldKSwKKyAgICBidWlsZF9ycGF0aDogJ0Aw QC9DT1JFJy5mb3JtYXQoYXJjaGxpYmV4cCksCisgICkKK2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9wb3N0bWFzdGVyL3QvMDAyX2Nvbm5lY3Rpb25fbGltaXRzLnBsIGIvc3JjL3Rl c3QvcG9zdG1hc3Rlci90LzAwMl9jb25uZWN0aW9uX2xpbWl0cy5wbAppbmRleCA4YzY3YzRh ODZjNy4uMWI0YTk3ZDE2ZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Bvc3RtYXN0ZXIvdC8w MDJfY29ubmVjdGlvbl9saW1pdHMucGwKKysrIGIvc3JjL3Rlc3QvcG9zdG1hc3Rlci90LzAw Ml9jb25uZWN0aW9uX2xpbWl0cy5wbApAQCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1 c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTMzLDE5ICszNCwyMCBAQCBH UkFOVCBwZ191c2VfcmVzZXJ2ZWRfY29ubmVjdGlvbnMgVE8gcmVncmVzc19yZXNlcnZlZDsK IENSRUFURSBVU0VSIHJlZ3Jlc3Nfc3VwZXJ1c2VyIExPR0lOIFNVUEVSVVNFUjsKIH0pOwog CitteSAkbm9kZV9jb25uc3RyID0gJG5vZGUtPmNvbm5zdHIoJ3Bvc3RncmVzJyk7CitteSAk bGliZGlyID0gICRub2RlLT5jb25maWdfZGF0YSgnLS1saWJkaXInKTsKKwogIyBXaXRoIHRo ZSBsaW1pdHMgd2Ugc2V0IGluIHBvc3RncmVzcWwuY29uZiwgd2UgY2FuIGVzdGFibGlzaDoK ICMgLSAzIGNvbm5lY3Rpb25zIGZvciBhbnkgdXNlciB3aXRoIG5vIHNwZWNpYWwgcHJpdmls ZWdlcwogIyAtIDIgbW9yZSBjb25uZWN0aW9ucyBmb3IgdXNlcnMgYmVsb25naW5nIHRvICJw Z191c2VfcmVzZXJ2ZWRfY29ubmVjdGlvbnMiCiAjIC0gMSBtb3JlIGNvbm5lY3Rpb24gZm9y IHN1cGVydXNlcgogCi1zdWIgYmFja2dyb3VuZF9wc3FsX2FzX3VzZXIKK3N1YiBzZXNzaW9u X2FzX3VzZXIKIHsKIAlteSAkdXNlciA9IHNoaWZ0OworICAgIG15ICRjb25uc3RyID0gIiRu b2RlX2Nvbm5zdHIgdXNlcj0kdXNlciI7CiAKLQlyZXR1cm4gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgKLQkJJ3Bvc3RncmVzJywKLQkJb25fZXJyb3JfZGllID0+IDEsCi0JCWV4dHJhX3Bh cmFtcyA9PiBbICctLXVzZXJuYW1lJyA9PiAkdXNlciBdKTsKKwlyZXR1cm4gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KCBjb25uc3RyID0+ICRjb25uc3RyLCBsaWJkaXIgPT4g JGxpYmRpcik7CiB9CiAKICMgTGlrZSBjb25uZWN0X2ZhaWxzKCksIGV4Y2VwdCB0aGF0IHdl IGFsc28gd2FpdCBmb3IgdGhlIGZhaWxlZCBiYWNrZW5kIHRvCkBAIC04Miw5ICs4NCw5IEBA ICRub2RlLT5yZXN0YXJ0OwogbXkgQHNlc3Npb25zID0gKCk7CiBteSBAcmF3X2Nvbm5lY3Rp b25zID0gKCk7CiAKLXB1c2goQHNlc3Npb25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNlcign cmVncmVzc19yZWd1bGFyJykpOwotcHVzaChAc2Vzc2lvbnMsIGJhY2tncm91bmRfcHNxbF9h c191c2VyKCdyZWdyZXNzX3JlZ3VsYXInKSk7Ci1wdXNoKEBzZXNzaW9ucywgYmFja2dyb3Vu ZF9wc3FsX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVndWxhcicpKTsKK3B1c2goQHNlc3Npb25zLCBz ZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVndWxhcicpKTsKK3B1c2goQHNlc3Npb25zLCBz ZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVndWxhcicpKTsKK3B1c2goQHNlc3Npb25zLCBz ZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVndWxhcicpKTsKIGNvbm5lY3RfZmFpbHNfd2Fp dCgKIAkkbm9kZSwKIAkiZGJuYW1lPXBvc3RncmVzIHVzZXI9cmVncmVzc19yZWd1bGFyIiwK QEAgLTkzLDggKzk1LDggQEAgY29ubmVjdF9mYWlsc193YWl0KAogCSAgcXIvRkFUQUw6ICBy ZW1haW5pbmcgY29ubmVjdGlvbiBzbG90cyBhcmUgcmVzZXJ2ZWQgZm9yIHJvbGVzIHdpdGgg cHJpdmlsZWdlcyBvZiB0aGUgInBnX3VzZV9yZXNlcnZlZF9jb25uZWN0aW9ucyIgcm9sZS8K ICk7CiAKLXB1c2goQHNlc3Npb25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNlcigncmVncmVz c19yZXNlcnZlZCcpKTsKLXB1c2goQHNlc3Npb25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNl cigncmVncmVzc19yZXNlcnZlZCcpKTsKK3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3Vz ZXIoJ3JlZ3Jlc3NfcmVzZXJ2ZWQnKSk7CitwdXNoKEBzZXNzaW9ucywgc2Vzc2lvbl9hc191 c2VyKCdyZWdyZXNzX3Jlc2VydmVkJykpOwogY29ubmVjdF9mYWlsc193YWl0KAogCSRub2Rl LAogCSJkYm5hbWU9cG9zdGdyZXMgdXNlcj1yZWdyZXNzX3Jlc2VydmVkIiwKQEAgLTEwMyw3 ICsxMDUsNyBAQCBjb25uZWN0X2ZhaWxzX3dhaXQoCiAJICBxci9GQVRBTDogIHJlbWFpbmlu ZyBjb25uZWN0aW9uIHNsb3RzIGFyZSByZXNlcnZlZCBmb3Igcm9sZXMgd2l0aCB0aGUgU1VQ RVJVU0VSIGF0dHJpYnV0ZS8KICk7CiAKLXB1c2goQHNlc3Npb25zLCBiYWNrZ3JvdW5kX3Bz cWxfYXNfdXNlcigncmVncmVzc19zdXBlcnVzZXInKSk7CitwdXNoKEBzZXNzaW9ucywgc2Vz c2lvbl9hc191c2VyKCdyZWdyZXNzX3N1cGVydXNlcicpKTsKIGNvbm5lY3RfZmFpbHNfd2Fp dCgKIAkkbm9kZSwKIAkiZGJuYW1lPXBvc3RncmVzIHVzZXI9cmVncmVzc19zdXBlcnVzZXIi LApAQCAtMTUwLDcgKzE1Miw3IEBAIFNLSVA6CiAjIENsZWFuIHVwCiBmb3JlYWNoIG15ICRz ZXNzaW9uIChAc2Vzc2lvbnMpCiB7Ci0JJHNlc3Npb24tPnF1aXQ7CisJJHNlc3Npb24tPmNs b3NlOwogfQogZm9yZWFjaCBteSAkc29ja2V0IChAcmF3X2Nvbm5lY3Rpb25zKQogewpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDlfdHdvcGhhc2UucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAwOV90d29waGFzZS5wbAppbmRleCA4NzllNDkzYjViOC4uM2M0YTZi NjgyNGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA5X3R3b3BoYXNlLnBs CisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA5X3R3b3BoYXNlLnBsCkBAIC02LDYgKzYs NyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAK QEAgLTMzMSwxMSArMzMyLDEwIEBAICRjdXJfcHJpbWFyeS0+c3RvcDsKICRjdXJfc3RhbmRi eS0+cmVzdGFydDsKIAogIyBBY3F1aXJlIGEgc25hcHNob3QgaW4gc3RhbmRieSwgYmVmb3Jl IHdlIGNvbW1pdCB0aGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24KLW15ICRzdGFuZGJ5X3Nlc3Np b24gPQotICAkY3VyX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9kaWUgPT4gMSk7Ci0kc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9zYWZlKCJCRUdJTiBJ U09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEIik7CitteSAkc3RhbmRieV9zZXNzaW9u ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJGN1cl9zdGFuZGJ5 KTsKKyRzdGFuZGJ5X3Nlc3Npb24tPmRvKCJCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEIik7CiAkcHNxbF9vdXQgPQotICAkc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9z YWZlKCJTRUxFQ1QgY291bnQoKikgRlJPTSB0XzAwOV90Ymxfc3RhbmRieV9tdmNjIik7Cisg ICRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5X29uZXZhbCgiU0VMRUNUIGNvdW50KCopIEZST00g dF8wMDlfdGJsX3N0YW5kYnlfbXZjYyIpOwogaXMoJHBzcWxfb3V0LCAnMCcsCiAJIlByZXBh cmVkIHRyYW5zYWN0aW9uIG5vdCB2aXNpYmxlIGluIHN0YW5kYnkgYmVmb3JlIGNvbW1pdCIp OwogCkBAIC0zNDksMTcgKzM0OSwxNyBAQCBDT01NSVQgUFJFUEFSRUQgJ3hhY3RfMDA5X3N0 YW5kYnlfbXZjYyc7CiAKICMgU3RpbGwgbm90IHZpc2libGUgdG8gdGhlIG9sZCBzbmFwc2hv dAogJHBzcWxfb3V0ID0KLSAgJHN0YW5kYnlfc2Vzc2lvbi0+cXVlcnlfc2FmZSgiU0VMRUNU IGNvdW50KCopIEZST00gdF8wMDlfdGJsX3N0YW5kYnlfbXZjYyIpOworICAkc3RhbmRieV9z ZXNzaW9uLT5xdWVyeV9vbmV2YWwoIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRfMDA5X3RibF9z dGFuZGJ5X212Y2MiKTsKIGlzKCRwc3FsX291dCwgJzAnLAogCSJDb21taXR0ZWQgcHJlcGFy ZWQgdHJhbnNhY3Rpb24gbm90IHZpc2libGUgdG8gb2xkIHNuYXBzaG90IGluIHN0YW5kYnki KTsKIAogIyBJcyB2aXNpYmxlIHRvIGEgbmV3IHNuYXBzaG90Ci0kc3RhbmRieV9zZXNzaW9u LT5xdWVyeV9zYWZlKCJDT01NSVQiKTsKKyRzdGFuZGJ5X3Nlc3Npb24tPmRvKCJDT01NSVQi KTsKICRwc3FsX291dCA9Ci0gICRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRfMDA5X3RibF9zdGFuZGJ5X212Y2MiKTsKKyAgJHN0YW5kYnlf c2Vzc2lvbi0+cXVlcnlfb25ldmFsKCJTRUxFQ1QgY291bnQoKikgRlJPTSB0XzAwOV90Ymxf c3RhbmRieV9tdmNjIik7CiBpcygkcHNxbF9vdXQsICcyJywKIAkiQ29tbWl0dGVkIHByZXBh cmVkIHRyYW5zYWN0aW9uIGlzIHZpc2libGUgdG8gbmV3IHNuYXBzaG90IGluIHN0YW5kYnki KTsKLSRzdGFuZGJ5X3Nlc3Npb24tPnF1aXQ7Ciskc3RhbmRieV9zZXNzaW9uLT5jbG9zZTsK IAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDaGVjayBmb3IgYSBsb2NrIGNvbmZs aWN0IGJldHdlZW4gcHJlcGFyZWQgdHJhbnNhY3Rpb24gd2l0aCBEREwgaW5zaWRlIGFuZApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTNfY3Jhc2hfcmVzdGFydC5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEzX2NyYXNoX3Jlc3RhcnQucGwKaW5kZXggMjBkNjQ4 YWQ2YWYuLjMxMjA0ODUwYjM3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAx M19jcmFzaF9yZXN0YXJ0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEzX2NyYXNo X3Jlc3RhcnQucGwKQEAgLTEzMSw3ICsxMzEsNyBAQCBvayggcHVtcF91bnRpbCgKICRtb25p dG9yLT5maW5pc2g7CiAKICMgV2FpdCB0aWxsIHNlcnZlciByZXN0YXJ0cwotaXMoJG5vZGUt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgdW5kZWYsICcnKSwKK2lzKCRub2RlLT5w b2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzJyksCiAJIjEiLCAicmVjb25uZWN0ZWQg YWZ0ZXIgU0lHUVVJVCIpOwogCiAKQEAgLTIxMyw3ICsyMTMsNyBAQCBvayggcHVtcF91bnRp bCgKICRtb25pdG9yLT5maW5pc2g7CiAKICMgV2FpdCB0aWxsIHNlcnZlciByZXN0YXJ0cwot aXMoJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgdW5kZWYsICcnKSwKK2lz KCRub2RlLT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzJyksCiAJIjEiLCAicmVj b25uZWN0ZWQgYWZ0ZXIgU0lHS0lMTCIpOwogCiAjIE1ha2Ugc3VyZSB0aGUgY29tbWl0dGVk IHJvd3Mgc3Vydml2ZWQsIGluLXByb2dyZXNzIG9uZXMgbm90CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWNvdmVyeS90LzAyMl9jcmFzaF90ZW1wX2ZpbGVzLnBsIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMjJfY3Jhc2hfdGVtcF9maWxlcy5wbAppbmRleCA1ZGU5YjBmYjBlYi4uNmM1 NWZjZjQwYjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDIyX2NyYXNoX3Rl bXBfZmlsZXMucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjJfY3Jhc2hfdGVtcF9m aWxlcy5wbApAQCAtMTQ2LDcgKzE0Niw3IEBAIG9rKCBwdW1wX3VudGlsKAogJGtpbGxtZTIt PmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2VydmVyIGZpbmlzaGVzIHJlc3RhcnRpbmcKLSRu b2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHVuZGVmLCAnJyk7Ciskbm9kZS0+ cG9sbF91bnRpbF9jb25uZWN0aW9uKCdwb3N0Z3JlcycpOwogCiAjIENoZWNrIGZvciB0ZW1w b3JhcnkgZmlsZXMKIGlzKCAkbm9kZS0+c2FmZV9wc3FsKApAQCAtMjUzLDcgKzI1Myw3IEBA IG9rKCBwdW1wX3VudGlsKAogJGtpbGxtZTItPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2Vy dmVyIGZpbmlzaGVzIHJlc3RhcnRpbmcKLSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsIHVuZGVmLCAnJyk7Ciskbm9kZS0+cG9sbF91bnRpbF9jb25uZWN0aW9uKCdwb3N0 Z3JlcycpOwogCiAjIENoZWNrIGZvciB0ZW1wb3JhcnkgZmlsZXMgLS0gc2hvdWxkIGJlIHRo ZXJlCiBpcyggJG5vZGUtPnNhZmVfcHNxbCgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MzFfcmVjb3ZlcnlfY29uZmxpY3QucGwKaW5kZXggN2E3NDBmNjk4MDYuLjc0MzQ5NzQ5MTcw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzMV9yZWNvdmVyeV9jb25mbGlj dC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzMV9yZWNvdmVyeV9jb25mbGljdC5w bApAQCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKQEAgLTY3LDggKzY4LDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf cmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKIAogIyBhIGxvbmdydW5uaW5nIHBz cWwgdGhhdCB3ZSBjYW4gdXNlIHRvIHRyaWdnZXIgY29uZmxpY3RzCi1teSAkcHNxbF9zdGFu ZGJ5ID0KLSAgJG5vZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCR0ZXN0X2RiLCBvbl9l cnJvcl9zdG9wID0+IDApOworbXkgJHBzcWxfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N0YW5kYnksIGRibmFtZSA9PiAkdGVzdF9k Yik7CiBteSAkZXhwZWN0ZWRfY29uZmxpY3RzID0gMDsKIAogCkBAIC05Niw3ICs5Niw3IEBA IG15ICRjdXJzb3IxID0gInRlc3RfcmVjb3ZlcnlfY29uZmxpY3RfY3Vyc29yIjsKIAogIyBE RUNMQVJFIGFuZCB1c2UgYSBjdXJzb3Igb24gc3RhbmRieSwgY2F1c2luZyBidWZmZXIgd2l0 aCB0aGUgb25seSBibG9jayBvZgogIyB0aGUgcmVsYXRpb24gdG8gYmUgcGlubmVkIG9uIHRo ZSBzdGFuZGJ5Ci1teSAkcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfc2FmZSgKK215ICRy ZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9vbmV2YWwoCiAJcXFbCiAgICAgQkVHSU47CiAg ICAgREVDTEFSRSAkY3Vyc29yMSBDVVJTT1IgRk9SIFNFTEVDVCBiIEZST00gJHRhYmxlMTsK QEAgLTExOSw3ICsxMTksNyBAQCAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIs IHFxW1ZBQ1VVTSBGUkVFWkUgJHRhYmxlMTtdKTsKICRub2RlX3ByaW1hcnktPndhaXRfZm9y X3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCiBjaGVja19jb25mbGljdF9sb2co IlVzZXIgd2FzIGhvbGRpbmcgc2hhcmVkIGJ1ZmZlciBwaW4gZm9yIHRvbyBsb25nIik7Ci0k cHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3RfYW5kX2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5y ZWNvbm5lY3QoKTsKIGNoZWNrX2NvbmZsaWN0X3N0YXQoImJ1ZmZlcnBpbiIpOwogCiAKQEAg LTEzMiw3ICsxMzIsNyBAQCAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsCiAk bm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsK IAogIyBERUNMQVJFIGFuZCBGRVRDSCBmcm9tIGN1cnNvciBvbiB0aGUgc3RhbmRieQotJHJl cyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X3NhZmUoCiskcmVzID0gJHBzcWxfc3RhbmRieS0+ cXVlcnlfb25ldmFsKAogCXFxWwogICAgICAgICBCRUdJTjsKICAgICAgICAgREVDTEFSRSAk Y3Vyc29yMSBDVVJTT1IgRk9SIFNFTEVDVCBiIEZST00gJHRhYmxlMTsKQEAgLTE1Miw3ICsx NTIsNyBAQCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5KTsKIAogY2hlY2tfY29uZmxpY3RfbG9nKAogCSJVc2VyIHF1ZXJ5IG1pZ2h0IGhh dmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQiKTsK LSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnkt PnJlY29ubmVjdCgpOwogY2hlY2tfY29uZmxpY3Rfc3RhdCgic25hcHNob3QiKTsKIAogCkBA IC0xNjEsNyArMTYxLDcgQEAgJHNlY3QgPSAibG9jayBjb25mbGljdCI7CiAkZXhwZWN0ZWRf Y29uZmxpY3RzKys7CiAKICMgYWNxdWlyZSBsb2NrIHRvIGNvbmZsaWN0IHdpdGgKLSRyZXMg PSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9zYWZlKAorJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1 ZXJ5X29uZXZhbCgKIAlxcVsKICAgICAgICAgQkVHSU47CiAgICAgICAgIExPQ0sgVEFCTEUg JHRhYmxlMSBJTiBBQ0NFU1MgU0hBUkUgTU9ERTsKQEAgLTE3NSw3ICsxNzUsNyBAQCAkbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsIHFxW0RST1AgVEFCTEUgJHRhYmxlMTtd KTsKICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5k YnkpOwogCiBjaGVja19jb25mbGljdF9sb2coIlVzZXIgd2FzIGhvbGRpbmcgYSByZWxhdGlv biBsb2NrIGZvciB0b28gbG9uZyIpOwotJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0X2FuZF9j bGVhcigpOworJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0KCk7CiBjaGVja19jb25mbGljdF9z dGF0KCJsb2NrIik7CiAKIApAQCAtMTg2LDcgKzE4Niw3IEBAICRleHBlY3RlZF9jb25mbGlj dHMrKzsKICMgREVDTEFSRSBhIGN1cnNvciBmb3IgYSBxdWVyeSB3aGljaCwgd2l0aCBzdWZm aWNpZW50bHkgbG93IHdvcmtfbWVtLCB3aWxsCiAjIHNwaWxsIHR1cGxlcyBpbnRvIHRlbXAg ZmlsZXMgaW4gdGhlIHRlbXBvcmFyeSB0YWJsZXNwYWNlIGNyZWF0ZWQgZHVyaW5nCiAjIHNl dHVwLgotJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X3NhZmUoCiskcmVzID0gJHBzcWxf c3RhbmRieS0+cXVlcnlfb25ldmFsKAogCXFxWwogICAgICAgICBCRUdJTjsKICAgICAgICAg U0VUIHdvcmtfbWVtID0gJzY0a0InOwpAQCAtMjA1LDcgKzIwNSw3IEBAICRub2RlX3ByaW1h cnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCiBjaGVja19j b25mbGljdF9sb2coCiAJIlVzZXIgd2FzIG9yIG1pZ2h0IGhhdmUgYmVlbiB1c2luZyB0YWJs ZXNwYWNlIHRoYXQgbXVzdCBiZSBkcm9wcGVkIik7Ci0kcHNxbF9zdGFuZGJ5LT5yZWNvbm5l Y3RfYW5kX2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3QoKTsKIGNoZWNrX2Nv bmZsaWN0X3N0YXQoInRhYmxlc3BhY2UiKTsKIAogCkBAIC0yMjAsOCArMjIwLDkgQEAgJG5v ZGVfc3RhbmRieS0+YWRqdXN0X2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29uZicsCiAJJ21heF9z dGFuZGJ5X3N0cmVhbWluZ19kZWxheScsCiAJIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRpbWVvdXRfZGVmYXVsdH1zIik7CiskcHNxbF9zdGFuZGJ5LT5jbG9zZTsKICRub2RlX3N0 YW5kYnktPnJlc3RhcnQoKTsKLSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIo KTsKKyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwogCiAjIEdlbmVyYXRlIGEgZmV3IGRl YWQgcm93cywgdG8gbGF0ZXIgYmUgY2xlYW5lZCB1cCBieSB2YWN1dW0uIFRoZW4gYWNxdWly ZSBhCiAjIGxvY2sgb24gYW5vdGhlciByZWxhdGlvbiBpbiBhIHByZXBhcmVkIHhhY3QsIHNv IGl0J3MgaGVsZCBjb250aW51b3VzbHkgYnkKQEAgLTI0NCwxMiArMjQ1LDE1IEBAIFNFTEVD VCB0eGlkX2N1cnJlbnQoKTsKIAogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2Nh dGNodXAoJG5vZGVfc3RhbmRieSk7CiAKLSRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV91 bnRpbCgKLQlxci9eMSQvbSwgcXFbCiskcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfb25l dmFsKAorCXFxWwogICAgIEJFR0lOOwogICAgIC0tIGhvbGQgcGluCiAgICAgREVDTEFSRSAk Y3Vyc29yMSBDVVJTT1IgRk9SIFNFTEVDVCBhIEZST00gJHRhYmxlMTsKICAgICBGRVRDSCBG T1JXQVJEIEZST00gJGN1cnNvcjE7CitdKTsKK2lzICgkcmVzLCAxLCAicGluIGhlbGQiKTsK KyRwc3FsX3N0YW5kYnktPmRvX2FzeW5jKHFxWwogICAgIC0tIHdhaXQgZm9yIGxvY2sgaGVs ZCBieSBwcmVwYXJlZCB0cmFuc2FjdGlvbgogCVNFTEVDVCAqIEZST00gJHRhYmxlMjsKICAg ICBdKTsKQEAgLTI3MCwxNSArMjc0LDE2IEBAICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgk dGVzdF9kYiwgcXFbVkFDVVVNIEZSRUVaRSAkdGFibGUxO10pOwogJG5vZGVfcHJpbWFyeS0+ d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKIGNoZWNrX2NvbmZs aWN0X2xvZygiVXNlciB0cmFuc2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRlYWRsb2NrIHdpdGgg cmVjb3ZlcnkuIik7Ci0kcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3RfYW5kX2NsZWFyKCk7Cisk cHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3QoKTsKIGNoZWNrX2NvbmZsaWN0X3N0YXQoImRlYWRs b2NrIik7CiAKICMgY2xlYW4gdXAgZm9yIG5leHQgdGVzdHMKICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgkdGVzdF9kYiwgcXFbUk9MTEJBQ0sgUFJFUEFSRUQgJ2xvY2snO10pOwogJG5v ZGVfc3RhbmRieS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfc3RhbmRi eV9zdHJlYW1pbmdfZGVsYXknLAotCSc1MG1zJyk7CisJCQkJCQkgICAnNTBtcycpOworJHBz cWxfc3RhbmRieS0+Y2xvc2U7CiAkbm9kZV9zdGFuZGJ5LT5yZXN0YXJ0KCk7Ci0kcHNxbF9z dGFuZGJ5LT5yZWNvbm5lY3RfYW5kX2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNvbm5l Y3QoKTsKIAogCiAjIENoZWNrIHRoYXQgZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbmZsaWN0cyBz aG93IGluIHBnX3N0YXRfZGF0YWJhc2UuIE5lZWRzIHRvCkBAIC0zMDIsNyArMzA3LDcgQEAg Y2hlY2tfY29uZmxpY3RfbG9nKCJVc2VyIHdhcyBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZSB0 aGF0IG11c3QgYmUgZHJvcHBlZCIpOwogCiAjIGV4cGxpY2l0bHkgc2h1dCBkb3duIHBzcWwg aW5zdGFuY2VzIGdyYWNlZnVsbHkgLSB0byBhdm9pZCBoYW5ncyBvciB3b3JzZSBvbgogIyB3 aW5kb3dzCi0kcHNxbF9zdGFuZGJ5LT5xdWl0OworJHBzcWxfc3RhbmRieS0+Y2xvc2U7CiAK ICRub2RlX3N0YW5kYnktPnN0b3AoKTsKICRub2RlX3ByaW1hcnktPnN0b3AoKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM3X2ludmFsaWRfZGF0YWJhc2UucGwgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzAzN19pbnZhbGlkX2RhdGFiYXNlLnBsCmluZGV4IGEwOTQ3 MTA4NzAwLi5iMTBhNzlkMGVlNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MzdfaW52YWxpZF9kYXRhYmFzZS5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzN19p bnZhbGlkX2RhdGFiYXNlLnBsCkBAIC01LDYgKzUsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtOTEsNDEgKzkyLDM4IEBAIGlzKCRu b2RlLT5wc3FsKCdwb3N0Z3JlcycsICdEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25faW52YWxp ZCcpLAogIyBkcm9wcGluZyB0aGUgZGF0YWJhc2UsIG1ha2luZyBpdCBhIHN1aXRhYmxlIHBv aW50IHRvIHdhaXQuICBTaW5jZSByZWxjYWNoZQogIyBpbml0IHJlYWRzIHBnX3RhYmxlc3Bh Y2UsIGVzdGFibGlzaCBlYWNoIGNvbm5lY3Rpb24gYmVmb3JlIGxvY2tpbmcuICBUaGlzCiAj IGF2b2lkcyBhIGNvbm5lY3Rpb24tdGltZSBoYW5nIHdpdGggZGVidWdfZGlzY2FyZF9jYWNo ZXMuCi1teSAkY2FuY2VsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDEpOwotbXkgJGJncHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLW15ICRwaWQgPSAkYmdwc3Fs LT5xdWVyeSgnU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCknKTsKK215ICRjYW5jZWwgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+JG5vZGUpOworbXkgJGJncHNxbCA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4kbm9kZSk7CitteSAkcGlk ID0gJGJncHNxbC0+cXVlcnlfb25ldmFsKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOwog CiAjIGNyZWF0ZSB0aGUgZGF0YWJhc2UsIHByZXZlbnQgZHJvcCBkYXRhYmFzZSB2aWEgbG9j ayBoZWxkIGJ5IGEgMlBDIHRyYW5zYWN0aW9uCi0kYmdwc3FsLT5xdWVyeV9zYWZlKAotCXFx KAotICBDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVwdDsKLSAg QkVHSU47CitpcyAoMSwgICRiZ3BzcWwtPmRvKAorCQlxcSgKKyAgQ1JFQVRFIERBVEFCQVNF IHJlZ3Jlc3Npb25faW52YWxpZF9pbnRlcnJ1cHQ7KSwKKyAgcXEoQkVHSU47CiAgIExPQ0sg cGdfdGFibGVzcGFjZTsKLSAgUFJFUEFSRSBUUkFOU0FDVElPTiAnbG9ja190YmxzcGMnOykp OworICBQUkVQQVJFIFRSQU5TQUNUSU9OICdsb2NrX3RibHNwYyc7KSkpOwogCiAjIFRyeSB0 byBkcm9wLiBUaGlzIHdpbGwgd2FpdCBkdWUgdG8gdGhlIHN0aWxsIGhlbGQgbG9jay4KLSRi Z3BzcWwtPnF1ZXJ5X3VudGlsKHFyLy8sICJEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25faW52 YWxpZF9pbnRlcnJ1cHQ7XG4iKTsKKyRiZ3BzcWwtPmRvX2FzeW5jKCJEUk9QIERBVEFCQVNF IHJlZ3Jlc3Npb25faW52YWxpZF9pbnRlcnJ1cHQ7Iik7CiAKIAogIyBPbmNlIHRoZSBEUk9Q IERBVEFCQVNFIGlzIHdhaXRpbmcgZm9yIHRoZSBsb2NrLCBpbnRlcnJ1cHQgaXQuCi1vaygg JGNhbmNlbC0+cXVlcnlfc2FmZSgKLQkJcXEoCitteSAkY2FuY2VsX3JlcyA9ICRjYW5jZWwt PnF1ZXJ5KAorCQlxcVsKIAlETyBcJFwkCiAJQkVHSU4KIAkJV0hJTEUgTk9UIEVYSVNUUyhT RUxFQ1QgKiBGUk9NIHBnX2xvY2tzIFdIRVJFIE5PVCBncmFudGVkIEFORCByZWxhdGlvbiA9 ICdwZ190YWJsZXNwYWNlJzo6cmVnY2xhc3MgQU5EIG1vZGUgPSAnQWNjZXNzU2hhcmVMb2Nr JykgTE9PUAogCQkJUEVSRk9STSBwZ19zbGVlcCguMSk7CiAJCUVORCBMT09QOwogCUVORFwk XCQ7Ci0JU0VMRUNUIHBnX2NhbmNlbF9iYWNrZW5kKCRwaWQpOykpLAotCSJjYW5jZWxpbmcg RFJPUCBEQVRBQkFTRSIpOwotJGNhbmNlbC0+cXVpdCgpOworCVNFTEVDVCBwZ19jYW5jZWxf YmFja2VuZCgkcGlkKV0pOworaXMgKDIsICRjYW5jZWxfcmVzLT57c3RhdHVzfSwgImNhbmNl bGluZyBEUk9QIERBVEFCQVNFIik7ICMgQ09NTUFORF9UVVBMRVNfT0sKKyRjYW5jZWwtPmNs b3NlKCk7CiAKKyRiZ3BzcWwtPndhaXRfZm9yX2NvbXBsZXRpb247CiAjIHdhaXQgZm9yIGNh bmNlbGxhdGlvbiB0byBiZSBwcm9jZXNzZWQKLW9rKCBwdW1wX3VudGlsKAotCQkkYmdwc3Fs LT57cnVufSwgJGJncHNxbC0+e3RpbWVvdXR9LAotCQlcJGJncHNxbC0+e3N0ZGVycn0sIHFy L2NhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHVzZXIgcmVxdWVzdC8pLAotCSJjYW5jZWwg cHJvY2Vzc2VkIik7Ci0kYmdwc3FsLT57c3RkZXJyfSA9ICcnOworcGFzcygiY2FuY2VsIHBy b2Nlc3NlZCIpOwogCiAjIFZlcmlmeSB0aGF0IGNvbm5lY3Rpb25zIHRvIHRoZSBkYXRhYmFz ZSBhcmVuJ3QgYWxsb3dlZC4gIFRoZSBiYWNrZW5kIGNoZWNrcwogIyB0aGlzIGJlZm9yZSBy ZWxjYWNoZSBpbml0LCBzbyB0aGUgbG9jayB3b24ndCBpbnRlcmZlcmUuCkBAIC0xMzQsOSAr MTMyLDEyIEBAIGlzKCRub2RlLT5wc3FsKCdyZWdyZXNzaW9uX2ludmFsaWRfaW50ZXJydXB0 JywgJycpLAogCiAjIFRvIHByb3Blcmx5IGRyb3AgdGhlIGRhdGFiYXNlLCB3ZSBuZWVkIHRv IHJlbGVhc2UgdGhlIGxvY2sgcHJldmlvdXNseSBwcmV2ZW50aW5nCiAjIGRvaW5nIHNvLgot JGJncHNxbC0+cXVlcnlfc2FmZShxcShST0xMQkFDSyBQUkVQQVJFRCAnbG9ja190YmxzcGMn KSk7Ci0kYmdwc3FsLT5xdWVyeV9zYWZlKHFxKERST1AgREFUQUJBU0UgcmVncmVzc2lvbl9p bnZhbGlkX2ludGVycnVwdCkpOworb2soJGJncHNxbC0+ZG8ocXEoUk9MTEJBQ0sgUFJFUEFS RUQgJ2xvY2tfdGJsc3BjJykpLAorCSJ1bmJsb2NrIERST1AgREFUQUJBU0UiKTsKIAotJGJn cHNxbC0+cXVpdCgpOworb2soJGJncHNxbC0+cXVlcnkocXEoRFJPUCBEQVRBQkFTRSByZWdy ZXNzaW9uX2ludmFsaWRfaW50ZXJydXB0KSksCisJIkRST1AgREFUQUJBU0UgaW52YWxpZF9p bnRlcnJ1cHQiKTsKKworJGJncHNxbC0+Y2xvc2UoKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Ns b3RzX3N5bmMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVy X3Nsb3RzX3N5bmMucGwKaW5kZXggNDdkNjRkMDVhZDEuLmEyOTMwYzlmODVmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5 bmMucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9z bG90c19zeW5jLnBsCkBAIC00LDYgKzQsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5n cyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtNzY4LDE3ICs3NjksMTMgQEAgJHByaW1hcnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVw bGljYXRpb25fc2xvdCgndGVzdF9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwgZmFs c2UsIHRydWUpOyIKICk7CiAKLW15ICRiYWNrX3EgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9w c3FsKAotCSdwb3N0Z3JlcycsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwLAotCXRpbWVvdXQgPT4g JFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworbXkgJGJhY2tf cSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4kcHJpbWFyeSk7CiAK ICMgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0 aGUgc3RhbmRieSBjYXRjaGVzIHVwLAogIyBoZW5jZSBpdCBuZWVkcyB0byBiZSBleGVjdXRl ZCBpbiBhIGJhY2tncm91bmQgc2Vzc2lvbi4KICRvZmZzZXQgPSAtcyAkcHJpbWFyeS0+bG9n ZmlsZTsKLSRiYWNrX3EtPnF1ZXJ5X3VudGlsKAotCXFyL2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcy8sIHEoCi0gICBcZWNobyBsb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMKKyRiYWNrX3Et PmRvX2FzeW5jKAorCXEoCiAgICBTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2Vz KCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKTsKICkpOwogCkBAIC03OTYsNyArNzkzLDggQEAg JHByaW1hcnktPnJlbG9hZDsKICMgU2luY2UgdGhlcmUgYXJlIG5vIHNsb3RzIGluIHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzLCB0aGUgZnVuY3Rpb24KICMgcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzIHNob3VsZCBub3cgcmV0dXJuLCBhbmQgdGhlIHNlc3Npb24gY2FuIGJl CiAjIHN0b3BwZWQuCi0kYmFja19xLT5xdWl0OworJGJhY2tfcS0+d2FpdF9mb3JfY29tcGxl dGlvbjsKKyRiYWNrX3EtPmNsb3NlOwogCiAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIlNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3Rlc3Rfc2xvdCcpOyIp OwpAQCAtMTA1NywxMiArMTA1NSw4IEBAICRzdGFuZGJ5Mi0+cmVsb2FkOwogIyBzeW5jaHJv bml6YXRpb24gdW50aWwgdGhlIHJlbW90ZSBzbG90IGNhdGNoZXMgdXAuCiAjIFRoZSBBUEkg d2lsbCBub3QgcmV0dXJuIHVudGlsIHRoaXMgaGFwcGVucywgdG8gYmUgYWJsZSB0byBtYWtl CiAjIGZ1cnRoZXIgY2FsbHMsIGNhbGwgdGhlIEFQSSBpbiBhIGJhY2tncm91bmQgcHJvY2Vz cy4KLW15ICRoID0gJHN0YW5kYnkyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25f ZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGgtPnF1ZXJ5X3VudGlsKHFyL3N0YXJ0LywgcSgKLQlc ZWNobyBzdGFydAotCVNFTEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Ci0JKSk7 CitteSAkaCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRzdGFu ZGJ5Mik7CiskaC0+ZG9fYXN5bmMocShTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90 cygpOykpOwogCiAjIENvbmZpcm0gdGhhdCB0aGUgc2xvdCBzeW5jIGlzIHNraXBwZWQgZHVl IHRvIHRoZSByZW1vdGUgc2xvdCBsYWdnaW5nIGJlaGluZAogJHN0YW5kYnkyLT53YWl0X2Zv cl9sb2coCkBAIC0xMTAwLDYgKzEwOTQsNyBAQCAkc3RhbmRieTItPndhaXRfZm9yX2xvZygK ICAgICBxci9uZXdseSBjcmVhdGVkIHJlcGxpY2F0aW9uIHNsb3QgXCJsc3ViMV9zbG90XCIg aXMgc3luYy1yZWFkeSBub3cvLAogICAgICRsb2dfb2Zmc2V0KTsKIAotJGgtPnF1aXQ7Cisk aC0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRoLT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3By b21vdGUucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21v dGUucGwKaW5kZXggZDA3ODNmZWY5YWUuLmZjYzAxMzM0NTg5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwKKysrIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3RlLnBsCkBAIC00LDYg KzQsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGltZTo6SGlSZXMg cXcodXNsZWVwKTsKIHVzZSBUZXN0OjpNb3JlOwpAQCAtNzAsMTEgKzcxLDkgQEAgJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIEV4ZWN1dGUgYSByZXN0YXJ0IHBv aW50IG9uIHRoZSBzdGFuZGJ5LCB0aGF0IHdlIHdpbGwgbm93IGJlIHdhaXRpbmcgb24uCiAj IFRoaXMgbmVlZHMgdG8gYmUgaW4gdGhlIGJhY2tncm91bmQuCiBteSAkbG9nc3RhcnQgPSAt cyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwotbXkgJHBzcWxfc2Vzc2lvbiA9Ci0gICRub2Rl X3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOwotJHBzcWxfc2Vzc2lvbi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2tw b2ludC8sIHEoCi0gICBcZWNobyBzdGFydGluZ19jaGVja3BvaW50CitteSAkcHNxbF9zZXNz aW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiAkbm9kZV9zdGFu ZGJ5KTsKKyRwc3FsX3Nlc3Npb24tPmRvX2FzeW5jKAorCXEoCiAgICBDSEVDS1BPSU5UOwog KSk7CiAKQEAgLTE1OSw3ICsxNTgsNyBAQCBvayggcHVtcF91bnRpbCgKICRraWxsbWUtPmZp bmlzaDsKIAogIyBXYWl0IHRpbGwgc2VydmVyIGZpbmlzaGVzIHJlc3RhcnRpbmcuCi0kbm9k ZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHVuZGVmLCAnJyk7Cisk bm9kZV9zdGFuZGJ5LT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzJyk7CiAKICMg QWZ0ZXIgcmVjb3ZlcnksIHRoZSBzZXJ2ZXIgc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQuCiBt eSAkc3Rkb3V0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDJfbG93X2xl dmVsX2JhY2t1cC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZlbF9iYWNr dXAucGwKaW5kZXggZGY0YWUwMjlmZTYuLjU4NDg5NDgyMzQxIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWNvdmVyeS90LzA0Ml9sb3dfbGV2ZWxfYmFja3VwLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZlbF9iYWNrdXAucGwKQEAgLTEwLDYgKzEwLDcgQEAg dXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7 CiB1c2UgRmlsZTo6UGF0aCBxdyhybXRyZWUpOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0yMCwxMSArMjEsMTAgQEAg JG5vZGVfcHJpbWFyeS0+c3RhcnQ7CiAKICMgU3RhcnQgYmFja3VwLgogbXkgJGJhY2t1cF9u YW1lID0gJ2JhY2t1cDEnOwotbXkgJHBzcWwgPSAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJyk7CitteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1hcnkpOwogCi0kcHNxbC0+cXVlcnlfc2FmZSgi U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgVE8gV0FSTklORyIpOwotJHBzcWwtPnNldF9xdWVy eV90aW1lcl9yZXN0YXJ0OwotJHBzcWwtPnF1ZXJ5X3NhZmUoInNlbGVjdCBwZ19iYWNrdXBf c3RhcnQoJ3Rlc3QgbGFiZWwnKSIpOworJHBzcWwtPmRvKCJTRVQgY2xpZW50X21pbl9tZXNz YWdlcyBUTyBXQVJOSU5HIik7CiskcHNxbC0+cXVlcnkoInNlbGVjdCBwZ19iYWNrdXBfc3Rh cnQoJ3Rlc3QgbGFiZWwnKSIpOwogCiAjIENvcHkgZmlsZXMuCiBteSAkYmFja3VwX2RpciA9 ICRub2RlX3ByaW1hcnktPmJhY2t1cF9kaXIgLiAnLycgLiAkYmFja3VwX25hbWU7CkBAIC04 MSw5ICs4MSw5IEBAIG15ICRzdG9wX3NlZ21lbnRfbmFtZSA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCiAjIFN0b3AgYmFja3VwIGFuZCBnZXQgYmFja3VwX2xh YmVsLCB0aGUgbGFzdCBzZWdtZW50IGlzIGFyY2hpdmVkLgogbXkgJGJhY2t1cF9sYWJlbCA9 Ci0gICRwc3FsLT5xdWVyeV9zYWZlKCJzZWxlY3QgbGFiZWxmaWxlIGZyb20gcGdfYmFja3Vw X3N0b3AoKSIpOworICAkcHNxbC0+cXVlcnlfb25ldmFsKCJzZWxlY3QgbGFiZWxmaWxlIGZy b20gcGdfYmFja3VwX3N0b3AoKSIpOwogCi0kcHNxbC0+cXVpdDsKKyRwc3FsLT5jbG9zZTsK IAogIyBSYXRoZXIgdGhhbiB3cml0aW5nIG91dCBiYWNrdXBfbGFiZWwsIHRyeSB0byByZWNv dmVyIHRoZSBiYWNrdXAgd2l0aG91dAogIyBiYWNrdXBfbGFiZWwgdG8gZGVtb25zdHJhdGUg dGhhdCByZWNvdmVyeSB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseSB3aXRob3V0IGl0LApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Ns b3QucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xv dC5wbAppbmRleCAxZWNiNDdhOGI1OC4uMzI2MTExN2IxYmMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNrcG9pbnRfbG9naWNhbF9zbG90LnBsCisrKyBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNrcG9pbnRfbG9naWNhbF9zbG90LnBsCkBAIC04 LDYgKzgsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6 TW9yZTsKQEAgLTUyLDEzICs1MywxMCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hlY2twb2ludH0pOwogCiAjIEdl bmVyYXRlIHNvbWUgdHJhbnNhY3Rpb25zIHRvIGdldCBSVU5OSU5HX1hBQ1RTLgotbXkgJHhh Y3RzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSR4YWN0cy0+cXVl cnlfdW50aWwoCi0JcXIvcnVuX3hhY3RzLywKLQlxKFxlY2hvIHJ1bl94YWN0cwotU0VMRUNU IDEgXHdhdGNoIDAuMQotXHEKLSkpOworZm9yIChteSAkaSA9IDA7ICRpIDwgMTA7ICRpKysp Cit7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIDEnKTsKK30KIAog JG5vZGUtPmFkdmFuY2Vfd2FsKDIwKTsKIApAQCAtNzIsMTYgKzcwLDExIEBAICRub2RlLT5h ZHZhbmNlX3dhbCgyMCk7CiAjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCiBub3RlKCdz dGFydGluZyBjaGVja3BvaW50Jyk7CiAKLW15ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRjaGVja3BvaW50LT5xdWVyeV9zYWZlKAorJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXEoc2VsZWN0IGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdjaGVja3BvaW50LWJlZm9yZS1vbGQtd2FsLXJlbW92YWwnLCd3YWl0JykpCiAp OwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQv LAotCXEoXGVjaG8gc3RhcnRpbmdfY2hlY2twb2ludAotY2hlY2twb2ludDsKLVxxCi0pKTsK K215ICRjaGVja3BvaW50ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUg PT4gJG5vZGUpOworJGNoZWNrcG9pbnQtPmRvX2FzeW5jKHEoQ0hFQ0tQT0lOVDspKTsKIAog IyBXYWl0IHVudGlsIHRoZSBjaGVja3BvaW50IHN0b3BzIHJpZ2h0IGJlZm9yZSByZW1vdmlu ZyBXQUwgc2VnbWVudHMuCiBub3RlKCd3YWl0aW5nIGZvciBpbmplY3Rpb25fcG9pbnQnKTsK QEAgLTkwLDE3ICs4MywyMSBAQCBub3RlKCdpbmplY3Rpb25fcG9pbnQgaXMgcmVhY2hlZCcp OwogCiAjIFRyeSB0byBhZHZhbmNlIHRoZSBsb2dpY2FsIHNsb3QsIGJ1dCBtYWtlIGl0IHN0 b3Agd2hlbiBpdCBtb3ZlcyB0byB0aGUgbmV4dAogIyBXQUwgc2VnbWVudCAodGhpcyBoYXMg dG8gaGFwcGVuIGluIHRoZSBiYWNrZ3JvdW5kLCB0b28pLgotbXkgJGxvZ2ljYWwgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGxvZ2ljYWwtPnF1ZXJ5X3NhZmUo CisjIFdlIG5lZWQgdG8gY2FsbCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMgcmVwZWF0 ZWRseSB1bnRpbCB0aGUgc2xvdAorIyBhZHZhbmNlcyB0byB0aGUgbmV4dCBzZWdtZW50IGFu ZCBoaXRzIHRoZSBpbmplY3Rpb24gcG9pbnQuCitteSAkbG9naWNhbCA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRsb2dpY2FsLT5kbygKIAlx e3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1yZXBsaWNhdGlvbi1z bG90LWFkdmFuY2Utc2VnbWVudCcsJ3dhaXQnKTt9CiApOwotJGxvZ2ljYWwtPnF1ZXJ5X3Vu dGlsKAotCXFyL2dldF9jaGFuZ2VzLywKLQlxKAotXGVjaG8gZ2V0X2NoYW5nZXMKLXNlbGVj dCBjb3VudCgqKSBmcm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnc2xvdF9sb2dp Y2FsJywgbnVsbCwgbnVsbCkgXHdhdGNoIDEKLVxxCi0pKTsKKyRsb2dpY2FsLT5kb19hc3lu YygKKwlxe0RPICQkCisJQkVHSU4KKwkJTE9PUAorCQkJUEVSRk9STSBjb3VudCgqKSBGUk9N IHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnc2xvdF9sb2dpY2FsJywgbnVsbCwgbnVs bCk7CisJCQlQRVJGT1JNIHBnX3NsZWVwKDAuMSk7CisJCUVORCBMT09QOworCUVORCAkJDt9 CispOwogCiAjIFdhaXQgdW50aWwgdGhlIHNsb3QncyByZXN0YXJ0X2xzbiBwb2ludHMgdG8g dGhlIG5leHQgV0FMIHNlZ21lbnQuCiBub3RlKCd3YWl0aW5nIGZvciBpbmplY3Rpb25fcG9p bnQnKTsKQEAgLTEzOCwxMiArMTM1LDggQEAgZXZhbCB7CiB9OwogaXMoJEAsICcnLCAiTG9n aWNhbCBzbG90IHN0aWxsIHZhbGlkIik7CiAKLSMgSWYgd2Ugc2VuZCBccSB3aXRoICQ8cHNx bF9zZXNzaW9uPi0+cXVpdCB0aGUgY29tbWFuZCBjYW4gYmUgc2VudCB0byB0aGUKLSMgc2Vz c2lvbiBhbHJlYWR5IGNsb3NlZC4gU28gXHEgaXMgaW4gaW5pdGlhbCBzY3JpcHQsIGhlcmUg d2Ugb25seSBmaW5pc2gKLSMgSVBDOjpSdW4KLSR4YWN0cy0+e3J1bn0tPmZpbmlzaDsKLSRj aGVja3BvaW50LT57cnVufS0+ZmluaXNoOwotJGxvZ2ljYWwtPntydW59LT5maW5pc2g7Cisj IFNlc3Npb25zIHdlcmUgdGVybWluYXRlZCBieSB0aGUgc2VydmVyIGNyYXNoIGFuZCB3aWxs IGJlIGNsZWFuZWQgdXAKKyMgYXV0b21hdGljYWxseSB3aGVuIHRoZXkgZ28gb3V0IG9mIHNj b3BlLgogCiAjIFZlcmlmeSB0aGF0IHRoZSBzeW5jaHJvbml6ZWQgc2xvdHMgd29uJ3QgYmUg aW52YWxpZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIKICMgc3luY2hyb25pemF0aW9uIGluIHRo ZSBwcmVzZW5jZSBvZiBhIGNvbmN1cnJlbnQgY2hlY2twb2ludC4KQEAgLTE4NiwxNSArMTc5 LDExIEBAICRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieSk7CiAj IGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlIGludmFsaWRhdGluZyByZXBsaWNhdGlv biBzbG90cy4KIG5vdGUoJ3N0YXJ0aW5nIGNoZWNrcG9pbnQnKTsKIAotJGNoZWNrcG9pbnQg PSAkc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGNoZWNrcG9pbnQt PnF1ZXJ5X3NhZmUoCiskc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcShzZWxl Y3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jlc3RhcnRwb2ludC1iZWZvcmUtc2xvdC1p bnZhbGlkYXRpb24nLCd3YWl0JykpCiApOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQvLAotCXEoXGVjaG8gc3RhcnRpbmdfY2hlY2twb2lu dAotY2hlY2twb2ludDsKLSkpOworJGNoZWNrcG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkc3RhbmRieSk7CiskY2hlY2twb2ludC0+ZG9fYXN5bmMo cShDSEVDS1BPSU5UOykpOwogCiAjIFdhaXQgdW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMg cmlnaHQgYmVmb3JlIGludmFsaWRhdGluZyBzbG90cwogbm90ZSgnd2FpdGluZyBmb3IgaW5q ZWN0aW9uX3BvaW50Jyk7CkBAIC0yMTUsNyArMjA0LDggQEAgJHN0YW5kYnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCXF7c2VsZWN0IGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZXN0 YXJ0cG9pbnQtYmVmb3JlLXNsb3QtaW52YWxpZGF0aW9uJyk7CiAJICBzZWxlY3QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ3Jlc3RhcnRwb2ludC1iZWZvcmUtc2xvdC1pbnZhbGlkYXRp b24nKX0pOwogCi0kY2hlY2twb2ludC0+cXVpdDsKKyRjaGVja3BvaW50LT53YWl0X2Zvcl9j b21wbGV0aW9uOworJGNoZWNrcG9pbnQtPmNsb3NlOwogCiAjIENvbmZpcm0gdGhhdCB0aGUg c2xvdCBpcyBub3QgaW52YWxpZGF0ZWQKIGlzKCAkc3RhbmRieS0+c2FmZV9wc3FsKApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9z bG90LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9z bG90LnBsCmluZGV4IDQzMzQxNDVhYmUxLi40MzE5M2MyMTliYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3X2NoZWNrcG9pbnRfcGh5c2ljYWxfc2xvdC5wbApA QCAtOCw2ICs4LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAogdXNlIFRl c3Q6Ok1vcmU7CkBAIC02OSwxNiArNzAsMTEgQEAgbm90ZSgicmVzdGFydCBsc24gYmVmb3Jl IGNoZWNrcG9pbnQ6ICRyZXN0YXJ0X2xzbl9pbml0Iik7CiAjIHJlbW92aW5nIG9sZCBXQUwg c2VnbWVudHMuCiBub3RlKCdzdGFydGluZyBjaGVja3BvaW50Jyk7CiAKLW15ICRjaGVja3Bv aW50ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRjaGVja3BvaW50 LT5xdWVyeV9zYWZlKAorbXkgJGNoZWNrcG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskY2hlY2twb2ludC0+ZG8oCiAJcXtzZWxlY3Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVt b3ZhbCcsJ3dhaXQnKX0KICk7Ci0kY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3Rh cnRpbmdfY2hlY2twb2ludC8sCi0JcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVj a3BvaW50OwotXHEKLSkpOworJGNoZWNrcG9pbnQtPmRvX2FzeW5jKCdjaGVja3BvaW50Jyk7 CiAKICMgV2FpdCB1bnRpbCB0aGUgY2hlY2twb2ludCBzdG9wcyByaWdodCBiZWZvcmUgcmVt b3ZpbmcgV0FMIHNlZ21lbnRzLgogbm90ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9uX3BvaW50 Jyk7CkBAIC0xMDQsNyArMTAwLDExIEBAIG15ICRyZXN0YXJ0X2xzbl9vbGQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiBjaG9tcCgkcmVzdGFydF9sc25fb2xkKTsKIG5vdGUo InJlc3RhcnQgbHNuIGJlZm9yZSBzdG9wOiAkcmVzdGFydF9sc25fb2xkIik7CiAKLSMgQWJy dXB0bHkgc3RvcCB0aGUgc2VydmVyLgorJGNoZWNrcG9pbnQtPndhaXRfZm9yX2NvbXBsZXRp b24oKTsKKyRjaGVja3BvaW50LT5jbG9zZSgpOworCisjIEFicnVwdGx5IHN0b3AgdGhlIHNl cnZlciAoMSBzZWNvbmQgc2hvdWxkIGJlIGVub3VnaCBmb3IgdGhlIGNoZWNrcG9pbnQKKyMg dG8gZmluaXNoOyBpdCB3b3VsZCBiZSBiZXR0ZXIpLgogJG5vZGUtPnN0b3AoJ2ltbWVkaWF0 ZScpOwogCiAkbm9kZS0+c3RhcnQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzA0OF92YWN1dW1faG9yaXpvbl9mbG9vci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ4 X3ZhY3V1bV9ob3Jpem9uX2Zsb29yLnBsCmluZGV4IDUyYWNiNTU2MWQ2Li5hNDg3YmUwNGRj OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25f Zmxvb3IucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25f Zmxvb3IucGwKQEAgLTQ1LDEyICs0NSwxMCBAQCBteSAkb3JpZ19jb25uaW5mbyA9ICRub2Rl X3ByaW1hcnktPmNvbm5zdHIoKTsKIG15ICR0YWJsZTEgPSAidmFjX2hvcml6b25fZmxvb3Jf dGFibGUiOwogCiAjIExvbmctcnVubmluZyBQcmltYXJ5IFNlc3Npb24gQQotbXkgJHBzcWxf cHJpbWFyeUEgPQotICAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJHRlc3RfZGIs IG9uX2Vycm9yX3N0b3AgPT4gMSk7CitteSAkc2Vzc2lvbl9wcmltYXJ5QSA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1hcnksIGRibmFtZSA9 PiAkdGVzdF9kYik7CiAKICMgTG9uZy1ydW5uaW5nIFByaW1hcnkgU2Vzc2lvbiBCCi1teSAk cHNxbF9wcmltYXJ5QiA9Ci0gICRub2RlX3ByaW1hcnktPmJhY2tncm91bmRfcHNxbCgkdGVz dF9kYiwgb25fZXJyb3Jfc3RvcCA9PiAxKTsKK215ICRzZXNzaW9uX3ByaW1hcnlCID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFyeSwgZGJu YW1lID0+ICR0ZXN0X2RiKTsKIAogIyBPdXIgdGVzdCByZWxpZXMgb24gdHdvIHJvdW5kcyBv ZiBpbmRleCB2YWN1dW1pbmcgZm9yIHJlYXNvbnMgZWxhYm9yYXRlZAogIyBsYXRlci4gVG8g dHJpZ2dlciB0d28gcm91bmRzIG9mIGluZGV4IHZhY3V1bWluZywgd2UgbXVzdCBmaWxsIHVw IHRoZQpAQCAtMTIzLDcgKzEyMSw3IEBAICRub2RlX3JlcGxpY2EtPnBvbGxfcXVlcnlfdW50 aWwoCiAjIE5vdyBpbnNlcnQgYW5kIHVwZGF0ZSBhIHR1cGxlIHdoaWNoIHdpbGwgYmUgdmlz aWJsZSB0byB0aGUgdmFjdXVtIG9uIHRoZQogIyBwcmltYXJ5IGJ1dCB3aGljaCB3aWxsIGhh dmUgeG1heCBuZXdlciB0aGFuIHRoZSBvbGRlc3QgeG1pbiBvbiB0aGUgc3RhbmRieQogIyB0 aGF0IHdhcyByZWNlbnRseSBkaXNjb25uZWN0ZWQuCi1teSAkcmVzID0gJHBzcWxfcHJpbWFy eUEtPnF1ZXJ5X3NhZmUoCitteSAkcmVzID0gJHNlc3Npb25fcHJpbWFyeUEtPnF1ZXJ5KAog CXFxWwogCQlJTlNFUlQgSU5UTyAkdGFibGUxIFZBTFVFUyAoOTkpOwogCQlVUERBVEUgJHRh YmxlMSBTRVQgY29sMSA9IDEwMCBXSEVSRSBjb2wxID0gOTk7CkBAIC0xMzIsNyArMTMwLDcg QEAgbXkgJHJlcyA9ICRwc3FsX3ByaW1hcnlBLT5xdWVyeV9zYWZlKAogKTsKIAogIyBNYWtl IHN1cmUgdGhlIFVQREFURSBmaW5pc2hlZAotbGlrZSgkcmVzLCBxci9eYWZ0ZXJfdXBkYXRl JC9tLCAiVVBEQVRFIG9jY3VycmVkIG9uIHByaW1hcnkgc2Vzc2lvbiBBIik7CitsaWtlKCRy ZXMtPntwc3Fsb3V0fSwgcXIvXmFmdGVyX3VwZGF0ZSQvbSwgIlVQREFURSBvY2N1cnJlZCBv biBwcmltYXJ5IHNlc3Npb24gQSIpOwogCiAjIE9wZW4gYSBjdXJzb3Igb24gdGhlIHByaW1h cnkgd2hvc2UgcGluIHdpbGwga2VlcCBWQUNVVU0gZnJvbSBnZXR0aW5nIGEKICMgY2xlYW51 cCBsb2NrIG9uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSByZWxhdGlvbi4gV2Ugd2FudCBWQUNV VU0gdG8gYmUgYWJsZSB0bwpAQCAtMTQ1LDcgKzE0Myw3IEBAIG15ICRwcmltYXJ5X2N1cnNv cjEgPSAidmFjX2hvcml6b25fZmxvb3JfY3Vyc29yMSI7CiAjIFRoZSBmaXJzdCB2YWx1ZSBp bnNlcnRlZCBpbnRvIHRoZSB0YWJsZSB3YXMgYSA3LCBzbyBGRVRDSCBGT1JXQVJEIHNob3Vs ZAogIyByZXR1cm4gYSA3LiBUaGF0J3MgaG93IHdlIGtub3cgdGhlIGN1cnNvciBoYXMgYSBw aW4uCiAjIERpc2FibGUgaW5kZXggc2NhbnMgc28gdGhlIGN1cnNvciBwaW5zIGhlYXAgcGFn ZXMgYW5kIG5vdCBpbmRleCBwYWdlcy4KLSRyZXMgPSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlf c2FmZSgKKyRyZXMgPSAkc2Vzc2lvbl9wcmltYXJ5Qi0+cXVlcnkoCiAJcXFbCiAJQkVHSU47 CiAJU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOwpAQCAtMTU2LDExICsxNTQsMTEgQEAg JHJlcyA9ICRwc3FsX3ByaW1hcnlCLT5xdWVyeV9zYWZlKAogCV0KICk7CiAKLWlzKCRyZXMs IDcsIHFxW0N1cnNvciBxdWVyeSByZXR1cm5lZCAkcmVzLiBFeHBlY3RlZCB2YWx1ZSA3Ll0p OworaXMoJHJlcy0+e3BzcWxvdXR9LCA3LCBxcVtDdXJzb3IgcXVlcnkgcmV0dXJuZWQgJHJl cy0+e3BzcWxvdXR9LiBFeHBlY3RlZCB2YWx1ZSA3Ll0pOwogCiAjIEdldCB0aGUgUElEIG9m IHRoZSBzZXNzaW9uIHdoaWNoIHdpbGwgcnVuIHRoZSBWQUNVVU0gRlJFRVpFIHNvIHRoYXQg d2UgY2FuCiAjIHVzZSBpdCB0byBmaWx0ZXIgcGdfc3RhdF9hY3Rpdml0eSBsYXRlci4KLW15 ICR2YWN1dW1fcGlkID0gJHBzcWxfcHJpbWFyeUEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBwZ19i YWNrZW5kX3BpZCgpOyIpOworbXkgJHZhY3V1bV9waWQgPSAkc2Vzc2lvbl9wcmltYXJ5QS0+ cXVlcnlfb25ldmFsKCJTRUxFQ1QgcGdfYmFja2VuZF9waWQoKTsiKTsKIAogIyBOb3cgc3Rh cnQgYSBWQUNVVU0gRlJFRVpFIG9uIHRoZSBwcmltYXJ5LiBJdCB3aWxsIGNhbGwgdmFjdXVt X2dldF9jdXRvZmZzKCkKICMgYW5kIGVzdGFibGlzaCB2YWx1ZXMgb2YgT2xkZXN0WG1pbiBh bmQgR2xvYmFsVmlzU3RhdGUgd2hpY2ggYXJlIG5ld2VyIHRoYW4KQEAgLTE3NiwxNCArMTc0 LDggQEAgbXkgJHZhY3V1bV9waWQgPSAkcHNxbF9wcmltYXJ5QS0+cXVlcnlfc2FmZSgiU0VM RUNUIHBnX2JhY2tlbmRfcGlkKCk7Iik7CiAjIHBhZ2VzIG9mIHRoZSBoZWFwIG11c3QgYmUg cHJvY2Vzc2VkIGluIG9yZGVyIGJ5IGEgc2luZ2xlIHdvcmtlciB0byBlbnN1cmUKICMgdGVz dCBzdGFiaWxpdHkgKFBBUkFMTEVMIDAgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgZ3Vh cmRzIGFnYWluc3QgdGhlCiAjIHBvc3NpYmlsaXR5IG9mIHBhcmFsbGVsIGhlYXAgdmFjdXVt aW5nKS4KLSRwc3FsX3ByaW1hcnlBLT57c3RkaW59IC49IHFxWwotCQlTRVQgbWFpbnRlbmFu Y2VfaW9fY29uY3VycmVuY3kgPSAwOwotCQlWQUNVVU0gKFZFUkJPU0UsIEZSRUVaRSwgUEFS QUxMRUwgMCkgJHRhYmxlMTsKLQkJXFxlY2hvIFZBQ1VVTQotICAgICAgICBdOwotCi0jIE1h a2Ugc3VyZSB0aGUgVkFDVVVNIGNvbW1hbmQgbWFrZXMgaXQgdG8gdGhlIHNlcnZlci4KLSRw c3FsX3ByaW1hcnlBLT57cnVufS0+cHVtcF9uYigpOworJHNlc3Npb25fcHJpbWFyeUEtPmRv KCdTRVQgbWFpbnRlbmFuY2VfaW9fY29uY3VycmVuY3kgPSAwOycpOworJHNlc3Npb25fcHJp bWFyeUEtPmRvX2FzeW5jKCJWQUNVVU0gKFZFUkJPU0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkg JHRhYmxlMTsiKTsKIAogIyBNYWtlIHN1cmUgdGhhdCB0aGUgVkFDVVVNIGhhcyBhbHJlYWR5 IGNhbGxlZCB2YWN1dW1fZ2V0X2N1dG9mZnMoKSBhbmQgaXMKICMganVzdCB3YWl0aW5nIG9u IHRoZSBsb2NrIHRvIHN0YXJ0IHZhY3V1bWluZy4gV2UgZG9uJ3Qgd2FudCB0aGUgc3RhbmRi eSB0bwpAQCAtMjI5LDcgKzIyMSw3IEBAICRub2RlX3ByaW1hcnktPnBvbGxfcXVlcnlfdW50 aWwoCiAjIGV4cGVjdCB0aGF0IGEgcm91bmQgb2YgaW5kZXggdmFjdXVtaW5nIGhhcyBoYXBw ZW5lZCBhbmQgdGhhdCB0aGUgdmFjdXVtIGlzCiAjIG5vdyB3YWl0aW5nIGZvciB0aGUgY3Vy c29yIHRvIHJlbGVhc2UgaXRzIHBpbiBvbiB0aGUgbGFzdCBwYWdlIG9mIHRoZQogIyByZWxh dGlvbi4KLSRyZXMgPSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlfc2FmZSgiRkVUQ0ggJHByaW1h cnlfY3Vyc29yMSIpOworJHJlcyA9ICRzZXNzaW9uX3ByaW1hcnlCLT5xdWVyeV9vbmV2YWwo IkZFVENIICRwcmltYXJ5X2N1cnNvcjEiKTsKIGlzKCRyZXMsIDcsCiAJcXFbQ3Vyc29yIHF1 ZXJ5IHJldHVybmVkICRyZXMgZnJvbSBzZWNvbmQgZmV0Y2guIEV4cGVjdGVkIHZhbHVlIDcu XSk7CiAKQEAgLTI0MywxMyArMjM1LDcgQEAgJG5vZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91 bnRpbCgKIAldLCAndCcpOwogCiAjIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24gd2l0aCB0aGUg b3BlbiBjdXJzb3Igc28gdGhhdCB0aGUgVkFDVVVNIGNhbiBmaW5pc2guCi0kcHNxbF9wcmlt YXJ5Qi0+cXVlcnlfdW50aWwoCi0JcXIvXmNvbW1pdCQvbSwKLQlxcVsKLQkJCUNPTU1JVDsK LQkJCVxcZWNobyBjb21taXQKLSAgICAgICAgXQotKTsKKyRzZXNzaW9uX3ByaW1hcnlCLT5k bygnQ09NTUlUJyk7CiAKICMgVkFDVVVNIHByb2NlZWRzIHdpdGggcHJ1bmluZyBhbmQgZG9l cyBhIHZpc2liaWxpdHkgY2hlY2sgb24gZWFjaCB0dXBsZS4gSW4KICMgb2xkZXIgdmVyc2lv bnMgb2YgUG9zdGdyZXMsIHBydW5pbmcgZm91bmQgb3VyIGZpbmFsIGRlYWQgdHVwbGUKQEAg LTI4MSw4ICsyNjcsOCBAQCAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsICJJ TlNFUlQgSU5UTyAkdGFibGUxIFZBTFVFUyAoMSk7Iik7CiAkbm9kZV9wcmltYXJ5LT53YWl0 X2Zvcl9jYXRjaHVwKCRub2RlX3JlcGxpY2EsICdyZXBsYXknLCAkcHJpbWFyeV9sc24pOwog CiAjIyBTaHV0IGRvd24gcHNxbHMKLSRwc3FsX3ByaW1hcnlBLT5xdWl0OwotJHBzcWxfcHJp bWFyeUItPnF1aXQ7Ciskc2Vzc2lvbl9wcmltYXJ5QS0+Y2xvc2U7Ciskc2Vzc2lvbl9wcmlt YXJ5Qi0+Y2xvc2U7CiAKICRub2RlX3JlcGxpY2EtPnN0b3AoKTsKICRub2RlX3ByaW1hcnkt PnN0b3AoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9y X2xzbi5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRl eCBiZjYxYjhjNDdjZi4uZDVlY2JlYzM1NjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0 OV93YWl0X2Zvcl9sc24ucGwKQEAgLTUsNiArNSw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMzU0LDEwICszNTUsOCBAQCBmb3Ig KG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogCW15ICRsc24gPQogCSAgJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5z ZXJ0X2xzbigpIik7Ci0JJHBzcWxfc2Vzc2lvbnNbJGldID0gJG5vZGVfc3RhbmRieS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRwc3FsX3Nlc3Npb25zWyRpXS0+cXVlcnlf dW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSRwc3FsX3Nlc3Np b25zWyRpXSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl X3N0YW5kYnkpOworCSRwc3FsX3Nlc3Npb25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJCVdBSVQg Rk9SIExTTiAnJHtsc259JzsKIAkJU0VMRUNUIGxvZ19jb3VudCgke2l9KTsKIAldKTsKQEAg LTM2OCw3ICszNjcsOCBAQCAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBwZ193YWxfcmVwbGF5X3Jlc3VtZSgpOyIpOwogZm9yIChteSAkaSA9IDA7ICRp IDwgNTsgJGkrKykKIHsKIAkkbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2coImNvdW50ICR7 aX0iLCAkbG9nX29mZnNldCk7Ci0JJHBzcWxfc2Vzc2lvbnNbJGldLT5xdWl0OworCSRwc3Fs X3Nlc3Npb25zWyRpXS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkcHNxbF9zZXNzaW9uc1sk aV0tPmNsb3NlOwogfQogCiBvaygxLCAnbXVsdGlwbGUgc3RhbmRieV9yZXBsYXkgd2FpdGVy cyByZXBvcnRlZCBjb25zaXN0ZW50IGRhdGEnKTsKQEAgLTM5MiwxMCArMzkyLDggQEAgZm9y IChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIG15IEB3cml0ZV9zZXNzaW9uczsKIGZvciAo bXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7Ci0JJHdyaXRlX3Nlc3Npb25zWyRpXSA9ICRu b2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkd3JpdGVfc2Vz c2lvbnNbJGldLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQvLCBxcVsKLQkJXFxlY2hvIHN0 YXJ0CisJJHdyaXRlX3Nlc3Npb25zWyRpXSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24t Pm5ldyhub2RlID0+ICRub2RlX3N0YW5kYnkpOworCSR3cml0ZV9zZXNzaW9uc1skaV0tPmRv X2FzeW5jKHFxWwogCQlXQUlUIEZPUiBMU04gJyR3cml0ZV9sc25zWyRpXScgV0lUSCAoTU9E RSAnc3RhbmRieV93cml0ZScsIHRpbWVvdXQgJzFkJyk7CiAJCVNFTEVDVCBsb2dfd2FpdF9k b25lKCd3cml0ZV9kb25lJywgJGkpOwogCV0pOwpAQCAtNDE0LDcgKzQxMiw4IEBAIHJlc3Vt ZV93YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7 ICRpKyspCiB7CiAJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJ3cml0ZV9kb25lICRp IiwgJHdyaXRlX2xvZ19vZmZzZXQpOwotCSR3cml0ZV9zZXNzaW9uc1skaV0tPnF1aXQ7CisJ JHdyaXRlX3Nlc3Npb25zWyRpXS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkd3JpdGVfc2Vz c2lvbnNbJGldLT5jbG9zZTsKIH0KIAogIyBWZXJpZnkgb24gc3RhbmRieSB0aGF0IFdBTCB3 YXMgd3JpdHRlbiB1cCB0byB0aGUgdGFyZ2V0IExTTgpAQCAtNDQ0LDEwICs0NDMsOCBAQCBm b3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogbXkgQGZsdXNoX3Nlc3Npb25zOwogZm9y IChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIHsKLQkkZmx1c2hfc2Vzc2lvbnNbJGldID0g JG5vZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRmbHVzaF9z ZXNzaW9uc1skaV0tPnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8g c3RhcnQKKwkkZmx1c2hfc2Vzc2lvbnNbJGldID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGVfc3RhbmRieSk7CisJJGZsdXNoX3Nlc3Npb25zWyRpXS0+ ZG9fYXN5bmMocXFbCiAJCVdBSVQgRk9SIExTTiAnJGZsdXNoX2xzbnNbJGldJyBXSVRIIChN T0RFICdzdGFuZGJ5X2ZsdXNoJywgdGltZW91dCAnMWQnKTsKIAkJU0VMRUNUIGxvZ193YWl0 X2RvbmUoJ2ZsdXNoX2RvbmUnLCAkaSk7CiAJXSk7CkBAIC00NjYsNyArNDYzLDggQEAgcmVz dW1lX3dhbHJlY2VpdmVyKCRub2RlX3N0YW5kYnkpOwogZm9yIChteSAkaSA9IDA7ICRpIDwg NTsgJGkrKykKIHsKIAkkbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2coImZsdXNoX2RvbmUg JGkiLCAkZmx1c2hfbG9nX29mZnNldCk7Ci0JJGZsdXNoX3Nlc3Npb25zWyRpXS0+cXVpdDsK KwkkZmx1c2hfc2Vzc2lvbnNbJGldLT53YWl0X2Zvcl9jb21wbGV0aW9uOworCSRmbHVzaF9z ZXNzaW9uc1skaV0tPmNsb3NlOwogfQogCiAjIFZlcmlmeSBvbiBzdGFuZGJ5IHRoYXQgV0FM IHdhcyBmbHVzaGVkIHVwIHRvIHRoZSB0YXJnZXQgTFNOCkBAIC01MDIsMTAgKzUwMCw4IEBA IG15IEBtaXhlZF9zZXNzaW9uczsKIG15IEBtaXhlZF9tb2RlcyA9ICgnc3RhbmRieV9yZXBs YXknLCAnc3RhbmRieV93cml0ZScsICdzdGFuZGJ5X2ZsdXNoJyk7CiBmb3IgKG15ICRpID0g MDsgJGkgPCA2OyAkaSsrKQogewotCSRtaXhlZF9zZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFu ZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJG1peGVkX3Nlc3Npb25zWyRp XS0+cXVlcnlfdW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSRt aXhlZF9zZXNzaW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZV9zdGFuZGJ5KTsKKwkkbWl4ZWRfc2Vzc2lvbnNbJGldLT5kb19hc3luYyhx cVsKIAkJV0FJVCBGT1IgTFNOICcke21peGVkX3RhcmdldF9sc259JyBXSVRIIChNT0RFICck bWl4ZWRfbW9kZXNbJGkgJSAzXScsIHRpbWVvdXQgJzFkJyk7CiAJCVNFTEVDVCBsb2dfd2Fp dF9kb25lKCdtaXhlZF9kb25lJywgJGkpOwogCV0pOwpAQCAtNTI5LDcgKzUyNSw4IEBAIHJl c3VtZV93YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsKIGZvciAobXkgJGkgPSAwOyAkaSA8 IDY7ICRpKyspCiB7CiAJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJtaXhlZF9kb25l ICRpIiwgJG1peGVkX2xvZ19vZmZzZXQpOwotCSRtaXhlZF9zZXNzaW9uc1skaV0tPnF1aXQ7 CisJJG1peGVkX3Nlc3Npb25zWyRpXS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkbWl4ZWRf c2Vzc2lvbnNbJGldLT5jbG9zZTsKIH0KIAogIyBWZXJpZnkgYWxsIG1vZGVzIHJlYWNoZWQg dGhlIHRhcmdldCBMU04KQEAgLTU2MiwxMCArNTU5LDggQEAgbXkgJHByaW1hcnlfZmx1c2hf bG9nX29mZnNldCA9IC1zICRub2RlX3ByaW1hcnktPmxvZ2ZpbGU7CiBteSBAcHJpbWFyeV9m bHVzaF9zZXNzaW9uczsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7Ci0JJHBy aW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldID0gJG5vZGVfcHJpbWFyeS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+cXVlcnlf dW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSRwcmltYXJ5X2Zs dXNoX3Nlc3Npb25zWyRpXSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlX3ByaW1hcnkpOworCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+ZG9f YXN5bmMocXFbCiAJCVdBSVQgRk9SIExTTiAnJHByaW1hcnlfZmx1c2hfbHNuc1skaV0nIFdJ VEggKE1PREUgJ3ByaW1hcnlfZmx1c2gnLCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1QgbG9n X3dhaXRfZG9uZSgncHJpbWFyeV9mbHVzaF9kb25lJywgJGkpOwogCV0pOwpAQCAtNTc2LDcg KzU3MSw4IEBAIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7CiAJJG5vZGVfcHJp bWFyeS0+d2FpdF9mb3JfbG9nKCJwcmltYXJ5X2ZsdXNoX2RvbmUgJGkiLAogCQkkcHJpbWFy eV9mbHVzaF9sb2dfb2Zmc2V0KTsKLQkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0tPnF1 aXQ7CisJJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldLT53YWl0X2Zvcl9jb21wbGV0aW9u OworCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+Y2xvc2U7CiB9CiAKICMgVmVyaWZ5 IG9uIHByaW1hcnkgdGhhdCBXQUwgd2FzIGZsdXNoZWQgdXAgdG8gdGhlIHRhcmdldCBMU04K QEAgLTYwNCwxMCArNjAwLDggQEAgbXkgQHdhaXRfbW9kZXMgPSAoJ3N0YW5kYnlfcmVwbGF5 JywgJ3N0YW5kYnlfd3JpdGUnLCAnc3RhbmRieV9mbHVzaCcpOwogbXkgQHdhaXRfc2Vzc2lv bnM7CiBmb3IgKG15ICRpID0gMDsgJGkgPCAzOyAkaSsrKQogewotCSR3YWl0X3Nlc3Npb25z WyRpXSA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkk d2FpdF9zZXNzaW9uc1skaV0tPnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlc XGVjaG8gc3RhcnQKKwkkd2FpdF9zZXNzaW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5KTsKKwkkd2FpdF9zZXNzaW9uc1sk aV0tPmRvX2FzeW5jKHFxWwogCQlXQUlUIEZPUiBMU04gJyR7bHNuNH0nIFdJVEggKE1PREUg JyR3YWl0X21vZGVzWyRpXScpOwogCV0pOwogfQpAQCAtNjQ1LDExICs2MzksNiBAQCBvaygk b3V0cHV0IGVxICJub3QgaW4gcmVjb3ZlcnkiLAogJG5vZGVfc3RhbmRieS0+c3RvcDsKICRu b2RlX3ByaW1hcnktPnN0b3A7CiAKLSMgSWYgd2Ugc2VuZCBccSB3aXRoICRzZXNzaW9uLT5x dWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50IHRvIHRoZSBzZXNzaW9uCi0jIGFscmVhZHkg Y2xvc2VkLiBTbyBccSBpcyBpbiBpbml0aWFsIHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlz aCBJUEM6OlJ1bi4KLWZvciAobXkgJGkgPSAwOyAkaSA8IDM7ICRpKyspCi17Ci0JJHdhaXRf c2Vzc2lvbnNbJGldLT57cnVufS0+ZmluaXNoOwotfQorIyBTZXNzaW9ucyB3aWxsIGJlIGNs ZWFuZWQgdXAgYXV0b21hdGljYWxseSB3aGVuIHRoZXkgZ28gb3V0IG9mIHNjb3BlLgogCiBk b25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX3Jl ZG9fc2VnbWVudF9taXNzaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfcmVkb19z ZWdtZW50X21pc3NpbmcucGwKaW5kZXggZTA3ZmYwYzcyZmUuLmI0OTJkYjQ0Njg0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5w bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5w bApAQCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKQEAgLTQ0LDE1ICs0NSwxMSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcXtzZWxlY3QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2NyZWF0ZS1jaGVja3BvaW50LXJ1bicsICd3YWl0Jyl9KTsK IAotIyBTdGFydCBhIHBzcWwgc2Vzc2lvbiB0byBydW4gdGhlIGNoZWNrcG9pbnQgaW4gdGhl IGJhY2tncm91bmQgYW5kIG1ha2UKKyMgU3RhcnQgYSBzZXNzaW9uIHRvIHJ1biB0aGUgY2hl Y2twb2ludCBpbiB0aGUgYmFja2dyb3VuZCBhbmQgbWFrZQogIyB0aGUgdGVzdCB3YWl0IG9u IHRoZSBpbmplY3Rpb24gcG9pbnQgc28gdGhlIGNoZWNrcG9pbnQgc3RvcHMganVzdCBhZnRl cgogIyBpdCBzdGFydHMuCi1teSAkY2hlY2twb2ludCA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJyk7Ci0kY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRp bmdfY2hlY2twb2ludC8sCi0JcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVja3Bv aW50OwotKSk7CitteSAkY2hlY2twb2ludCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24t Pm5ldyhub2RlID0+ICRub2RlKTsKKyRjaGVja3BvaW50LT5kb19hc3luYyhxKENIRUNLUE9J TlQ7KSk7CiAKICMgV2FpdCBmb3IgdGhlIGluaXRpYWwgcG9pbnQgdG8gZmluaXNoLCB0aGUg Y2hlY2twb2ludGVyIGlzIHN0aWxsCiAjIG91dHNpZGUgaXRzIGNyaXRpY2FsIHNlY3Rpb24u ICBUaGVuIHJlbGVhc2UgdG8gcmVhY2ggdGhlIHNlY29uZApAQCAtNzYsNyArNzMsOCBAQCAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50 c193YWtldXAoJ2NyZWF0ZS1jaGVja3BvaW50LXJ1bicpfSk7CiAkbm9kZS0+d2FpdF9mb3Jf bG9nKHFyL2NoZWNrcG9pbnQgY29tcGxldGUvLCAkbG9nX29mZnNldCk7CiAKLSRjaGVja3Bv aW50LT5xdWl0OworJGNoZWNrcG9pbnQtPndhaXRfZm9yX2NvbXBsZXRpb247CiskY2hlY2tw b2ludC0+Y2xvc2U7CiAKICMgUmV0cmlldmUgdGhlIFdBTCBmaWxlIG5hbWVzIGZvciB0aGUg cmVkbyByZWNvcmQgYW5kIGNoZWNrcG9pbnQgcmVjb3JkLgogbXkgJHJlZG9fbHNuID0gJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNTFfZWZmZWN0aXZlX3dhbF9sZXZlbC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUxX2VmZmVjdGl2ZV93YWxfbGV2ZWwucGwKaW5kZXggOTkxNDczNzI2YTkuLjI2Zjg4MGRh Mjc5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MV9lZmZlY3RpdmVfd2Fs X2xldmVsLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93YWxf bGV2ZWwucGwKQEAgLTYsNiArNiw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZB VEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCkBAIC0zNjcsMjAgKzM2OCwxNSBAQCBpZiAoICAgJEVOVntl bmFibGVfaW5qZWN0aW9uX3BvaW50c30gZXEgJ3llcycKIAl0ZXN0X3dhbF9sZXZlbCgkcHJp bWFyeSwgInJlcGxpY2F8cmVwbGljYSIsCiAJCSJlZmZlY3RpdmVfd2FsX2xldmVsIGdvdCBk ZWNyZWFzZWQgdG8gJ3JlcGxpY2EnIG9uIHByaW1hcnkiKTsKIAotCSMgU3RhcnQgYSBwc3Fs IHNlc3Npb24gdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgYWN0aXZhdGlvbiBwcm9jZXNz IGlzCisJIyBTdGFydCBhIHNlc3Npb24gdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgYWN0 aXZhdGlvbiBwcm9jZXNzIGlzCiAJIyBpbnRlcnJ1cHRlZC4KLQlteSAkcHNxbF9jcmVhdGVf c2xvdCA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJbXkgJHBz cWxfY3JlYXRlX3Nsb3QgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkcHJpbWFyeSk7CiAKLQkjIFN0YXJ0IHRoZSBsb2dpY2FsIGRlY29kaW5nIGFjdGl2YXRp b24gcHJvY2VzcyB1cG9uIGNyZWF0aW5nIHRoZSBsb2dpY2FsCi0JIyBzbG90LCBidXQgaXQg d2lsbCB3YWl0IGR1ZSB0byB0aGUgaW5qZWN0aW9uIHBvaW50LgotCSRwc3FsX2NyZWF0ZV9z bG90LT5xdWVyeV91bnRpbCgKLQkJcXIvY3JlYXRlX3Nsb3RfY2FuY2VsZWQvLAotCQlxKFxl Y2hvIGNyZWF0ZV9zbG90X2NhbmNlbGVkCi1zZWxlY3QgaW5qZWN0aW9uX3BvaW50c19zZXRf bG9jYWwoKTsKLXNlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1kZWNv ZGluZy1hY3RpdmF0aW9uJywgJ3dhaXQnKTsKLXNlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdzbG90X2NhbmNlbGVkJywgJ3Bnb3V0cHV0Jyk7Ci1ccQotKSk7 CisJIyBTZXQgdXAgdGhlIGluamVjdGlvbiBwb2ludCBpbiB0aGlzIHNlc3Npb24gKHVzaW5n IHNldF9sb2NhbCBzbyBpdCBvbmx5CisJIyBhZmZlY3RzIHRoaXMgc2Vzc2lvbiksIHRoZW4g c3RhcnQgdGhlIHNsb3QgY3JlYXRpb24gd2hpY2ggd2lsbCBibG9jay4KKwkkcHNxbF9jcmVh dGVfc2xvdC0+ZG8ocXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKX0pOwor CSRwc3FsX2NyZWF0ZV9zbG90LT5kbyhxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0aW9uJywgJ3dhaXQnKX0pOworCSRwc3FsX2Ny ZWF0ZV9zbG90LT5kb19hc3luYyhxe3NlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNh dGlvbl9zbG90KCdzbG90X2NhbmNlbGVkJywgJ3Bnb3V0cHV0Jyl9KTsKIAogCSRwcmltYXJ5 LT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbG9naWNhbC1kZWNvZGluZy1h Y3RpdmF0aW9uJyk7CiAJbm90ZSgiaW5qZWN0aW9uX3BvaW50ICdsb2dpY2FsLWRlY29kaW5n LWFjdGl2YXRpb24nIGlzIHJlYWNoZWQiKTsKQEAgLTM5Nyw2ICszOTMsOSBAQCBzZWxlY3Qg cGdfY2FuY2VsX2JhY2tlbmQocGlkKSBmcm9tIHBnX3N0YXRfYWN0aXZpdHkgd2hlcmUgcXVl cnkgfiAnc2xvdF9jYW5jZWxlZAogCSRwcmltYXJ5LT53YWl0X2Zvcl9sb2coImFib3J0aW5n IGxvZ2ljYWwgZGVjb2RpbmcgYWN0aXZhdGlvbiBwcm9jZXNzIik7CiAJdGVzdF93YWxfbGV2 ZWwoJHByaW1hcnksICJyZXBsaWNhfHJlcGxpY2EiLAogCQkidGhlIGFjdGl2YXRpb24gcHJv Y2VzcyBhYm9ydGVkIik7CisKKwkjIENsZWFuIHVwIHRoZSBzZXNzaW9uICh0aGUgYXN5bmMg cXVlcnkgd2FzIGNhbmNlbGxlZCwgc28gd2UganVzdCBjbG9zZSkKKwkkcHNxbF9jcmVhdGVf c2xvdC0+Y2xvc2U7CiB9CiAKICRwcmltYXJ5LT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKaW5kZXggYWM5NmJjM2YwMDkuLjQxNzY1ZmFlYTM0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTUsNiArNSw3IEBACiB1 c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0zMCwx OCArMzEsMTcgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBJbnRlcmxlYXZlIGEgcGFpciBv ZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogCW15ICRv ZmZzZXQgPSAwOwogCi0JbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRoID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRub2RlX3B1Ymxpc2hlcik7CiAKIAkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KIAkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKIAotCSRoLT5xdWVyeV9zYWZlKAotCQlxewotCUJF R0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBzaGEyNTYoaTo6dGV4dDo6 Ynl0ZWEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gc2hhMjU2KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JfSk7CisJJGgtPmRvKAorCQkn QkVHSU4nLAorCQknSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIHNoYTI1NihpOjp0 ZXh0OjpieXRlYSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKScsCisJCSdV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBzaGEyNTYoYikgV0hFUkUgbW9kKGEsMikgPSAwJywK KwkJJ0RFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMCcsCisJKTsKIAog CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtNTEs OSArNTEsOSBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlDT01NSVQ7CiAJfSk7CiAKLQkkaC0+ cXVlcnlfc2FmZSgnQ09NTUlUJyk7CisJJGgtPmRvKCdDT01NSVQnKTsKIAkjIGVycm9ycyBt YWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCSRoLT5xdWl0 OworCSRoLT5jbG9zZTsKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKQEAgLTIxMSwxNCArMjExLDE0IEBAICRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVD VCAxfSk7CiAKICMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4 Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKK215ICRoID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfcHVibGlzaGVy KTsKIAogIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CiAjIHdvcmtlciBjYW4gYmUgZGV0ZWN0 ZWQuCiAKIG15ICRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogCi0k aC0+cXVlcnlfc2FmZSgKKyRoLT5kbygKIAlxewogQkVHSU47CiBJTlNFUlQgSU5UTyB0ZXN0 X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CkBA IC0yMzIsOCArMjMyLDggQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVz dF90YWJfMiB2YWx1ZXMoMSkiKTsKIAotJGgtPnF1ZXJ5X3NhZmUoJ0NPTU1JVCcpOwotJGgt PnF1aXQ7CiskaC0+ZG8oJ0NPTU1JVCcpOworJGgtPmNsb3NlOwogCiAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRl dGVjdGVkLywKIAkkb2Zmc2V0KTsKQEAgLTI2MCw3ICsyNjAsOCBAQCAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgogJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CiAKLSRoLT5xdWVyeV9zYWZlKAorJGgtPnJlY29ubmVjdDsKKyRoLT5kbygKIAlxewogQkVH SU47CiBJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSk7CkBAIC0yNzUsOCArMjc2LDggQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA1MDAwKSBzKGkpIik7CiAKLSRoLT5xdWVyeV9zYWZlKCdDT01NSVQnKTsKLSRo LT5xdWl0OworJGgtPmRvKCdDT01NSVQnKTsKKyRoLT5jbG9zZTsKIAogJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFkbG9jayBk ZXRlY3RlZC8sCiAJJG9mZnNldCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzVfY29uZmxpY3RzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2Nv bmZsaWN0cy5wbAppbmRleCA0MjZhZDc0Y2YzMy4uODM0MjI2ZjhlNDcgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGljdHMucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbApAQCAtNCw2ICs0LDcgQEAKIHVz ZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTQ1Niwx NyArNDU3LDE0IEBAIGlmICgkaW5qZWN0aW9uX3BvaW50c19zdXBwb3J0ZWQgIT0gMCkKIAog CSMgU3RhcnQgYSBiYWNrZ3JvdW5kIHNlc3Npb24gb24gdGhlIHB1Ymxpc2hlciBub2RlIHRv IHBlcmZvcm0gYW4gdXBkYXRlIGFuZAogCSMgcGF1c2UgYXQgdGhlIGluamVjdGlvbiBwb2lu dC4KLQlteSAkcHViX3Nlc3Npb24gPSAkbm9kZV9CLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJyk7Ci0JJHB1Yl9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnRpbmdfYmdf cHNxbC8sCi0JCXF7Ci0JCQlcZWNobyBzdGFydGluZ19iZ19wc3FsCi0JCQlCRUdJTjsKLQkJ CVVQREFURSB0YWIgU0VUIGIgPSAyIFdIRVJFIGEgPSAxOwotCQkJUFJFUEFSRSBUUkFOU0FD VElPTiAndHhuX3dpdGhfbGF0ZXJfY29tbWl0X3RzJzsKLQkJCUNPTU1JVCBQUkVQQVJFRCAn dHhuX3dpdGhfbGF0ZXJfY29tbWl0X3RzJzsKLQkJfQorCW15ICRwdWJfc2Vzc2lvbiA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX0IpOworCSRwdWJf c2Vzc2lvbi0+ZG8oCisJCXF7QkVHSU59LAorCQlxe1VQREFURSB0YWIgU0VUIGIgPSAyIFdI RVJFIGEgPSAxfSwKKwkJcXtQUkVQQVJFIFRSQU5TQUNUSU9OICd0eG5fd2l0aF9sYXRlcl9j b21taXRfdHMnfQogCSk7CisJIyBDT01NSVQgUFJFUEFSRUQgd2lsbCBibG9jayBvbiB0aGUg aW5qZWN0aW9uIHBvaW50CisJJHB1Yl9zZXNzaW9uLT5kb19hc3luYyhxe0NPTU1JVCBQUkVQ QVJFRCAndHhuX3dpdGhfbGF0ZXJfY29tbWl0X3RzJ30pOwogCiAJIyBXYWl0IHVudGlsIHRo ZSBiYWNrZW5kIGVudGVycyB0aGUgaW5qZWN0aW9uIHBvaW50CiAJJG5vZGVfQi0+d2FpdF9m b3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5kJywgJ2NvbW1pdC1hZnRlci1kZWxheS1jaGVja3Bv aW50Jyk7CkBAIC01MTksOCArNTE3LDkgQEAgaWYgKCRpbmplY3Rpb25fcG9pbnRzX3N1cHBv cnRlZCAhPSAwKQogCQkgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjb21taXQt YWZ0ZXItZGVsYXktY2hlY2twb2ludCcpOyIKIAkpOwogCi0JIyBDbG9zZSB0aGUgYmFja2dy b3VuZCBzZXNzaW9uIG9uIHRoZSBwdWJsaXNoZXIgbm9kZQotCW9rKCRwdWJfc2Vzc2lvbi0+ cXVpdCwgImNsb3NlIHB1Ymxpc2hlciBzZXNzaW9uIik7CisJIyBXYWl0IGZvciB0aGUgYXN5 bmMgcXVlcnkgdG8gY29tcGxldGUgYW5kIGNsb3NlIHRoZSBiYWNrZ3JvdW5kIHNlc3Npb24K KwkkcHViX3Nlc3Npb24tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJHB1Yl9zZXNzaW9uLT5j bG9zZTsKIAogCSMgQ29uZmlybSB0aGF0IHRoZSB0cmFuc2FjdGlvbiBjb21taXR0ZWQKIAkk cmVzdWx0ID0K --------------9j9GJXvT4wB8jSJ2S8CdYYJV--