Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fNGyB-0006WB-1D for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 May 2018 12:09:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fNGy9-0007TG-Em for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 May 2018 12:09:45 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fNGy8-0007T6-Fe for pgadmin-hackers@lists.postgresql.org; Mon, 28 May 2018 12:09:45 +0000 Received: from mail-ot0-x229.google.com ([2607:f8b0:4003:c0f::229]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fNGy2-0004ol-3J for pgadmin-hackers@postgresql.org; Mon, 28 May 2018 12:09:42 +0000 Received: by mail-ot0-x229.google.com with SMTP id t1-v6so13243983oth.8 for ; Mon, 28 May 2018 05:09:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=RNSSv2xofnTC53D4Vh0WD7WkSTTqC5vmtF1WFS4UhDU=; b=bmEwyUbfzBEzAFWa1otKuzhIDE8QI60k7HFD6KcBoUwRozwBXZRykvzNY4Qfkornng A0KgCbJA+uEj10nhrMqqiQY0jk3Cx/qyAyzBbCh4MZtDUyDKSgmGc++cV0ASCQ/jgcrR afjxRqApKcCEtEG+yOLctfRTb4fwdWWyncGRJn7h4Fp2XqVcKfwSuSjx6gN43R/VsnfC JogcNpkamH8+TozoOMsf9CxbaaGHTwOEkXDtoT7tKnKxDu69uB1lDB3KFufsnbNI/SQO lPd08cN54v0lKcBXtSf/UfdXMlhtEnm7xoAEy2HVLUKMVeSB02JukDTcEipfyebo1jJh 1D8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=RNSSv2xofnTC53D4Vh0WD7WkSTTqC5vmtF1WFS4UhDU=; b=WGHFbCImYcvVYjIh0Q0a0B2puWURFx2Sx/jYVxAiijHEG30UIgiOF1azL2A5M//uv8 sjqkLOOS407/9E7v+F0YrN/4D1ttusA+/5MI/CztLKlGGatnhP+k1a9t9jTWhYoG0JvX Sx913fpR6oTcWy+PAYsTd1ncbWmE0+mqJzP5l0rFL41NOcZW/hLBF94jmxnAAnhIf1VD cbZZ0hmWHeg+jC4K2LhXHSG2Dgh0303AgoUy0A4OrKkHdbgJZh7T0JhEwsmqgUgcVdyr mr285SvJCBy0auqMD7cOhZVbFBpIH5vMYL+g/fH75+lPWfq+oTQASXzix0VNbFXKkPI9 NvAQ== X-Gm-Message-State: ALKqPwclr2vivYn0QGKa7Xt8VNu4BCI3nYO1dIPIvhZ+hO4fIBiWr9aF +Q5EXSw/bIzbyl9aOehp76sz52w/iMpc7KvkPuKUIel/ X-Google-Smtp-Source: ADUXVKLOC0xyISlI6sgAZ7HXeHw15FBe0NmhtF+LPCKwiIgoI4h8NSru4NbSew9JaxDzfgI/cb8qkR9E9qgkJbP2VF0= X-Received: by 2002:a9d:b75:: with SMTP id p50-v6mr7874742otd.277.1527509376849; Mon, 28 May 2018 05:09:36 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:5301:0:0:0:0:0 with HTTP; Mon, 28 May 2018 05:09:36 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Mon, 28 May 2018 17:39:36 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000cc947c056d42fdb3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000cc947c056d42fdb3 Content-Type: multipart/alternative; boundary="000000000000cc9478056d42fdb1" --000000000000cc9478056d42fdb1 Content-Type: text/plain; charset="UTF-8" Hi, please find the attached updated patch for the test cases of Backup, Restore and Maintenance modules which includes: 1. Unit test cases 2. End to end regression test cases 3. Feature test cases Thanks, Khushboo On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira < jdealmeidapereira@pivotal.io> wrote: > Hi Khushboo, > > We reviewed the patch and it is very nice to see some more coverage in > this area. Good job :D > > We passed the tests through our CI the feature tests are not passing, but > the linter fails: > > ./pgadmin/feature_tests/pg_utilities_backup_test.py:37: [E501] line too long (91 > 79 characters) > > ./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E501] line too long (104 > 79 characters) > > ./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E501] line too long (85 > 79 characters) > > ./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E501] line too long (96 > 79 characters) > > ./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E501] line too long (91 > 79 characters) > > ./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E501] line too long (118 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:37: [E121] continuation line under-indented for hanging indent > > ./pgadmin/tools/backup/tests/test_backup_message.py:48: [E122] continuation line missing indentation or outdented > > ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexpected spaces around keyword / parameter equals > > ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexpected spaces around keyword / parameter equals > > ./pgadmin/tools/backup/tests/test_backup_message.py:51: [E501] line too long (91 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:52: [E501] line too long (94 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:53: [E501] line too long (108 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:81: [E501] line too long (113 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:82: [E501] line too long (94 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:83: [E501] line too long (108 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:111: [E501] line too long (100 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:113: [E501] line too long (94 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:114: [E501] line too long (108 > 79 characters) > > ./pgadmin/tools/backup/tests/test_backup_message.py:147: [E501] line too long (93 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:40: [E121] continuation line under-indented for hanging indent > > ./pgadmin/tools/backup/tests/test_batch_process.py:51: [E122] continuation line missing indentation or outdented > > ./pgadmin/tools/backup/tests/test_batch_process.py:135: [E501] line too long (80 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:137: [E501] line too long (83 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:138: [E122] continuation line missing indentation or outdented > > ./pgadmin/tools/backup/tests/test_batch_process.py:139: [E122] continuation line missing indentation or outdented > > ./pgadmin/tools/backup/tests/test_batch_process.py:140: [E122] continuation line missing indentation or outdented > > ./pgadmin/tools/backup/tests/test_batch_process.py:191: [E501] line too long (81 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:203: [E501] line too long (80 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E128] continuation line under-indented for visual indent > > ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E501] line too long (94 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E128] continuation line under-indented for visual indent > > ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E501] line too long (94 > 79 characters) > > ./pgadmin/tools/backup/tests/test_batch_process.py:216: [W391] blank line at end of file > > ./pgadmin/tools/backup/tests/test_create_backup_job.py:296: [E501] line too long (97 > 79 characters) > > ./pgadmin/tools/backup/tests/test_create_backup_job.py:317: [E303] too many blank lines (2) > > ./pgadmin/tools/backup/tests/test_create_backup_job.py:336: [E501] line too long (84 > 79 characters) > > ./pgadmin/tools/backup/tests/test_create_backup_job.py:371: [W391] blank line at end of file > > 2 E121 continuation line under-indented for hanging indent > > 5 E122 continuation line missing indentation or outdented > > 2 E128 continuation line under-indented for visual indent > > 2 E251 unexpected spaces around keyword / parameter equals > > 1 E303 too many blank lines (2) > > 24 E501 line too long (91 > 79 characters) > > 2 W391 blank line at end of file > > 38 > > > For the feature tests, we realized we had to update the configuration, and > we did that, but we get the following error attached. We spent some time > trying to understand the problem but we were not successful. > > > Codewise: > - We just found some One Letter Variables in the code... > - Looks like there is a bug report in this area of the code and we do not > have coverage for it: https://redmine.postgresql.org/issues/3232 > Looks like in some of the unit tests we only have happy path tests, > maybe we should see if there are any sad paths that also need coverage. > > The configuration change, maybe need to be updated. When we install > multiple versions of postgres the binaries live in > `/usr/lib/postgresql/{{db_version}}/bin`, which makes us think that this > configuration should live near the server configuration, maybe? Also to > maintain coherency on the naming maybe we should make it all lower case. > Just as an aside, you can add the gpdb configuration as well in you patch. > > Thanks > Victoria & Joao > > On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached patch which covers test cases for the backup >> module (RM #3206). >> >> 1. Unit test cases >> 2. End to end regression test cases >> 3. Feature test cases >> >> Thanks, >> Khushboo >> > --000000000000cc9478056d42fdb1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

please find the attached updated pa= tch for the test cases of Backup, Restore and Maintenance modules which inc= ludes:

1. Unit test cases
2. End to end regre= ssion test cases=C2=A0
3. Feature test cases

Thanks,
Khushboo




On Wed, Apr 25, 2018 at 9:4= 0 PM, Joao De Almeida Pereira <jdealmeidapereira@pivotal.io= > wrote:
Hi Kh= ushboo,

We reviewed the patch and it is very nice to see= some more coverage in this area. Good job :D

We p= assed the tests through our CI the feature tests are not passing, but the l= inter fails:
.= /pgadmin/feature_tests/pg_utilities_backup_test.py:37: [E501] line too= long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E501] line too long (104 > 79 characters= )
./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E501] line too long (85 > 79 characters)=
./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E501] line too long (96 > 79 characters)=
./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E501] line too long (91 > 79 characters)=
./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E501] line too long (118 > 79 characters= )
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:37: [E121] continuation line under-indented for = hanging indent
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:48: [E122] continuation line missing indentation= or outdented
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:49: [E251] unexpected spaces around keyword / pa= rameter equals
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:49: [E251] unexpected spaces around keyword / pa= rameter equals
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:51: [E501] line too long (91 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:52: [E501] line too long (94 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:53: [E501] line too long (108 > 79 characters= )
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:81: [E501] line too long (113 > 79 characters= )
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:82: [E501] line too long (94 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:83: [E501] line too long (108 > 79 characters= )
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:111: [E501] line too long (100 > 79 character= s)
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:113: [E501] line too long (94 > 79 characters= )
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:114: [E501] line too long (108 > 79 character= s)
./pgadmin/tools/backup/tests/<= wbr>test_backup_message.py:147: [E501] line too long (93 > 79 characters= )
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:40: [E121] continuation line under-indented for h= anging indent
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:51: [E122] continuation line missing indentation = or outdented
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:135: [E501] line too long (80 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:137: [E501] line too long (83 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:138: [E122] continuation line missing indentation= or outdented
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:139: [E122] continuation line missing indentation= or outdented
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:140: [E122] continuation line missing indentation= or outdented
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:191: [E501] line too long (81 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:203: [E501] line too long (80 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:204: [E128] continuation line under-indented for = visual indent
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:204: [E501] line too long (94 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:205: [E128] continuation line under-indented for = visual indent
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:205: [E501] line too long (94 > 79 characters)=
./pgadmin/tools/backup/tests/<= wbr>test_batch_process.py:216: [W391] blank line at end of file
./pgadmin/tools/backup/tests/<= wbr>test_create_backup_job.py:296: [E501] line too long (97 > 79 charact= ers)
./pgadmin/tools/backup/tests/<= wbr>test_create_backup_job.py:317: [E303] too many blank lines (2)
./pgadmin/tools/backup/tests/<= wbr>test_create_backup_job.py:336: [E501] line too long (84 > 79 charact= ers)
./pgadmin/tools/backup/tests/<= wbr>test_create_backup_job.py:371: [W391] blank line at end of file
2 E121 continuation line= under-indented for hanging indent
5 E122 continuation line= missing indentation or outdented
2 E128 continuation line= under-indented for visual indent
2 E251 unexpected spaces= around keyword / parameter equals
1 E303 too many blank li= nes (2)
24 E501 line too long (91= > 79 characters)
2 W391 blank line at end= of file
38

For the feature tests, we realized we had to update t= he configuration, and we did that, but we get the following error attached.= We spent some time trying to understand the problem but we were not succes= sful.


Codewise:
- We just= found some One Letter Variables in the code...
- Looks like ther= e is a bug report in this area of the code and we do not have coverage for = it:=C2=A0https://redmine.postgresql.org/issues/3232
=C2=A0= Looks like in some of the unit tests we only have happy path tests, maybe = we should see if there are any sad paths that also need coverage.

The configuration change, maybe need to be updated. When we= install multiple versions of postgres the binaries live in `/usr/lib/postg= resql/{{db_version}}/bin`, which makes us think that this configuratio= n should live near the server configuration, maybe? Also to maintain cohere= ncy on the naming maybe we should make it all lower case.
Just as= an aside, you can add the gpdb configuration as well in you patch.

Thanks
Victoria & Joao

On Wed, Apr 25, 201= 8 at 5:20 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrot= e:
Hi,

Please find the attached patch which covers test cases for the back= up module (RM #3206).

1. Unit test cases
2. End to end regression test cases=C2=A0
3. Feature test cases<= /div>

Thanks,
Khushboo

--000000000000cc9478056d42fdb1-- --000000000000cc947c056d42fdb3 Content-Type: text/x-patch; charset="US-ASCII"; name="RM_3206.patch" Content-Disposition: attachment; filename="RM_3206.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jhq7m2jx1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rl c3RzL3Rlc3Rfc2VydmVyX2FkZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2FkZC5weQppbmRleCA1YWQwNDY5Li5jM2JlMjEz IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90 ZXN0cy90ZXN0X3NlcnZlcl9hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfYWRkLnB5CkBAIC0zNiw1ICszNiw1IEBA IGNsYXNzIFNlcnZlcnNBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgIHV0 aWxzLndyaXRlX25vZGVfaW5mbygic2lkIiwgc2VydmVyX2RpY3QpCiAKICAgICBkZWYgdGVhckRv d24oc2VsZik6Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlIHRoZSBzZXJ2ZXIgZnJv bSBTUUxpdGUgIiIiCisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlIHRoZSBzZXJ2ZXIg ZnJvbSBTUUxpdGUiIiIKICAgICAgICAgdXRpbHMuZGVsZXRlX3NlcnZlcl93aXRoX2FwaShzZWxm LnRlc3Rlciwgc2VsZi5zZXJ2ZXJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy90eXBlcy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3R5cGVzLnB5CmluZGV4IGQwYmVhNGYuLjE1OWM4NjAgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3R5cGVzLnB5 CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3R5cGVzLnB5 CkBAIC02MSw3ICs2MSw2IEBAIGNsYXNzIFNlcnZlclR5cGUob2JqZWN0KToKICAgICAgICAgZm9y IGtleSBpbiBjbHMucmVnaXN0cnk6CiAgICAgICAgICAgICBzdCA9IGNscy5yZWdpc3RyeVtrZXld CiAgICAgICAgICAgICBkZWZhdWx0X3BhdGggPSBjb25maWcuREVGQVVMVF9CSU5BUllfUEFUSFMu Z2V0KHN0LnN0eXBlLCAiIikKLQogICAgICAgICAgICAgc3QudXRpbGl0eV9wYXRoID0gcGF0aHMu cmVnaXN0ZXIoCiAgICAgICAgICAgICAgICAgJ2Jpbl9wYXRocycsIHN0LnN0eXBlICsgJ19iaW5f ZGlyJywKICAgICAgICAgICAgICAgICBzdC5VVElMSVRZX1BBVEhfTEFCRUwsCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90 ZXN0LnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfYmFja3VwX3Jl c3RvcmVfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGNiZTI4 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRp ZXNfYmFja3VwX3Jlc3RvcmVfdGVzdC5weQpAQCAtMCwwICsxLDEyNyBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworaW1wb3J0IHRpbWUKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBv cnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1v bi5ieSBpbXBvcnQgQnkKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4 cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gcmVncmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJh c2VfZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVyZVRlc3QKK2Zyb20gcmVncmVzc2lvbi5w eXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscworCitpbXBvcnQgY29uZmlnCisKKwor Y2xhc3MgUEdVdGlsaXRpZXNCYWNrdXBGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgorICAg ICIiIiBUaGlzIGNsYXNzIHRlc3QgUEcgdXRpbGl0aWVzIC0gQmFja3VwIGFuZCBSZXN0b3JlIHRl c3Qgc2NlbmFyaW9zICIiIgorCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoIlRlc3QgZm9y IFBHIHV0aWxpdGllcyAtIEJhY2t1cCBhbmQgUmVzdG9yZSIsIGRpY3QoKSkKKyAgICBdCisKKyAg ICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnREVGQVVMVF9CSU5B UllfUEFUSFMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAg ICAgICAgICAiREVGQVVMVF9CSU5BUllfUEFUSFMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7 MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3Rf dXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAor ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVy Wydzc2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2Uo Y29ubmVjdGlvbiwgInBnX3V0aWxpdHlfdGVzdF9kYiIpCisKKyAgICAgICAgdGVzdF91dGlscy5j cmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsICJwZ191dGlsaXR5X3Rlc3RfZGIiKQorICAgICAg ICBzZWxmLnBhZ2UuYWRkX3NlcnZlcihzZWxmLnNlcnZlcikKKworICAgICAgICBzZWxmLndhaXQg PSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDEwKQorCisgICAgZGVmIHJ1blRlc3Qo c2VsZik6CisgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl9zZXJ2ZXIoc2VsZi5zZXJ2ZXJb J25hbWUnXSkKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnRGF0YWJh c2VzJykKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgncGdfdXRpbGl0 eV90ZXN0X2RiJykKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4 dCgiVG9vbHMiKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfcGFydGlhbF9s aW5rX3RleHQoIkJhY2t1cC4uLiIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLndhaXQudW50aWwo CisgICAgICAgICAgICBFQy5lbGVtZW50X3RvX2JlX2NsaWNrYWJsZSgoQnkuTkFNRSwgJ2ZpbGUn KSkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYucGFnZS5maWxsX2lucHV0X2J5X2ZpZWxkX25h bWUoImZpbGUiLCAidGVzdF9iYWNrdXBfZmlsZSIpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5 X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXNhdmUnKSAiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJhbmQgY29udGFpbnMoLiwnQmFja3VwJyldIikuY2xpY2so KQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAg ICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVj dG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cyA9IHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0CisKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygp LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInQ2xpY2sgaGVyZSBmb3IgZGV0 YWlscy4nKV0iKS5jbGljaygpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94 cGF0aCgiLy9wW2NvbnRhaW5zKEBjbGFzcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIidiZy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorCisgICAgICAgIHNl bGYuYXNzZXJ0SW4oc2VsZi5zZXJ2ZXJbJ25hbWUnXSwgc3RyKGNvbW1hbmQpKQorICAgICAgICBz ZWxmLmFzc2VydEluKCJmcm9tIGRhdGFiYXNlICdwZ191dGlsaXR5X3Rlc3RfZGInIiwgc3RyKGNv bW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ0ZXN0X2JhY2t1cF9maWxlIiwgc3RyKGNv bW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJwZ19kdW1wIiwgc3RyKGNvbW1hbmQpKQor CisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3Ms J3djRmxvYXRpbmdGb2N1cycpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXS8v ZGl2W2NvbnRhaW5zKEBjbGFzcywnZmEtY2xvc2UnKV0iKS5jbGljaygpCisKKyAgICAgICAgc2Vs Zi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisgICAg ICAgIHNlbGYucGFnZS5maW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJSZXN0b3JlLi4uIikuY2xp Y2soKQorCisgICAgICAgIHNlbGYud2FpdC51bnRpbCgKKyAgICAgICAgICAgIEVDLmVsZW1lbnRf dG9fYmVfY2xpY2thYmxlKChCeS5OQU1FLCAnZmlsZScpKQorICAgICAgICApCisKKyAgICAgICAg c2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgiZmlsZSIsICJ0ZXN0X2JhY2t1cF9m aWxlIikKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vYnV0dG9uW2NvbnRhaW5z KEBjbGFzcywnZmEtdXBsb2FkJykiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg YW5kIGNvbnRhaW5zKC4sJ1Jlc3RvcmUnKV0iKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5wYWdl LndhaXRfZm9yX2VsZW1lbnRfdG9fZGlzYXBwZWFyKAorICAgICAgICAgICAgbGFtYmRhIGRyaXZl cjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5hanMtbW9kYWwiKQorICAg ICAgICApCisKKyAgICAgICAgc3RhdHVzID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vZGl2 W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICInYmctc3VjY2VzcycpXSIpLnRleHQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz dGF0dXMsICJTdWNjZXNzZnVsbHkgY29tcGxldGVkLiIpCisgICAgICAgIHNlbGYucGFnZS5maW5k X2J5X3hwYXRoKCIvL3NwYW5bY29udGFpbnMoc3RyaW5nKCksIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiICdDbGljayBoZXJlIGZvciBkZXRhaWxzLicpXSIpLmNsaWNrKCkKKyAg ICAgICAgY29tbWFuZCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL3BbY29udGFpbnMoQGNs YXNzLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ2JnLWRl dGFpbGVkLWRlc2MnKV0iKS50ZXh0CisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnZl clsnbmFtZSddLCBzdHIoY29tbWFuZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInRlc3RfYmFj a3VwX2ZpbGUiLCBzdHIoY29tbWFuZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBnX3Jlc3Rv cmUiLCBzdHIoY29tbWFuZCkpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8v ZGl2W2NvbnRhaW5zKEBjbGFzcywnd2NGbG9hdGluZ0ZvY3VzJyldIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiLy9kaXZbY29udGFpbnMoQGNsYXNzLCdmYS1jbG9zZScpXSIpLmNs aWNrKCkKKworICAgIGRlZiBhZnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnJlbW92ZV9z ZXJ2ZXIoc2VsZi5zZXJ2ZXIpCisgICAgICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0aWxzLmdldF9k Yl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAg ICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9w YXNzd29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAg IHNlbGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnc3NsbW9kZSdd CisgICAgICAgICkKKyAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24s ICJwZ191dGlsaXR5X3Rlc3RfZGIiKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90 ZXN0cy9wZ191dGlsaXRpZXNfbWFpbnRlbmFuY2VfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvcGdfdXRpbGl0aWVzX21haW50ZW5hbmNlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uODNmMzczNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX21haW50ZW5hbmNlX3Rlc3QucHkKQEAgLTAs MCArMSwxMTIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIF8qXyAgY29kaW5nOiB1dGYt OCBfKl8KK2ltcG9ydCB0aW1lCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnVpIGlt cG9ydCBXZWJEcml2ZXJXYWl0Citmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uYnkgaW1w b3J0IEJ5Citmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0IGltcG9ydCBleHBlY3RlZF9j b25kaXRpb25zIGFzIEVDCitmcm9tIHJlZ3Jlc3Npb24uZmVhdHVyZV91dGlscy5iYXNlX2ZlYXR1 cmVfdGVzdCBpbXBvcnQgQmFzZUZlYXR1cmVUZXN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rl c3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMKKworCitjbGFzcyBQR1V0aWxpdGllc01haW50ZW5h bmNlRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKKyAgICAiIiIgVGhpcyBjbGFzcyB0ZXN0 IFBHIHV0aWxpdGllcyB0ZXN0IHNjZW5hcmlvcyAiIiIKKworICAgIHNjZW5hcmlvcyA9IFsKKyAg ICAgICAgKCJUZXN0IGZvciBQRyBtYWludGVuYW5jZTogZGF0YWJhc2UgcGdfbWFpbnRlbmFuY2Ui LCBkaWN0KAorICAgICAgICAgICAgZGF0YWJhc2VfbmFtZT0ncGdfbWFpbnRlbmFuY2UnLAorICAg ICAgICAgICAgdGFibGVfbmFtZT0ncGdfbWFpbnRlbmFuY2VfdGFibGUnLAorICAgICAgICAgICAg dGVzdF9sZXZlbD0nZGF0YWJhc2UnCisgICAgICAgICkpLAorICAgICAgICAoIlRlc3QgZm9yIFBH IG1haW50ZW5hbmNlOiBkYXRhYmFzZSIsIGRpY3QoCisgICAgICAgICAgICBkYXRhYmFzZV9uYW1l PSdwZ19tYWludGVuYW5jZScsCisgICAgICAgICAgICB0YWJsZV9uYW1lPSdwZ19tYWludGVuYW5j ZV90YWJsZScsCisgICAgICAgICAgICB0ZXN0X2xldmVsPSd0YWJsZScKKyAgICAgICAgKSksCisg ICAgXQorCisgICAgZGVmIGJlZm9yZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ0RF RkFVTFRfQklOQVJZX1BBVEhTJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qo CisgICAgICAgICAgICAgICAgIkRFRkFVTFRfQklOQVJZX1BBVEhTIGlzIG5vdCBzZXQgZm9yIHRo ZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydu YW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGNvbm5lY3Rp b24gPSB0ZXN0X3V0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAg ICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J2hvc3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBz ZWxmLnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdGVzdF91dGlscy5jcmVh dGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNlbGYuZGF0YWJhc2VfbmFtZSkKKyAgICAgICAgdGVz dF91dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIsIHNlbGYuZGF0YWJhc2VfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZV9uYW1lKQorICAgICAgICBz ZWxmLnBhZ2UuYWRkX3NlcnZlcihzZWxmLnNlcnZlcikKKyAgICAgICAgc2VsZi53YWl0ID0gV2Vi RHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJpdmVyLCAxMCkKKworICAgIGRlZiBydW5UZXN0KHNlbGYp OgorICAgICAgICBzZWxmLl9vcGVuX21haW50ZW5hbmNlX2RpYWxvZ3VlKCkKKyAgICAgICAgIyB0 aW1lLnNsZWVwCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2J1dHRvbltjb250 YWlucyhAY2xhc3MsJ2ZhLXNhdmUnKSBhbmQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIgY29udGFpbnMoLiwnT0snKV0iKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS53YWl0 X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAgICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRy aXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAg KQorICAgICAgICBzZWxmLl92ZXJpZnlfY29tbWFuZCgpCisKKyAgICBkZWYgX29wZW5fbWFpbnRl bmFuY2VfZGlhbG9ndWUoc2VsZik6CisgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl9zZXJ2 ZXIoc2VsZi5zZXJ2ZXJbJ25hbWUnXSkKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3Ry ZWVfaXRlbSgnRGF0YWJhc2VzJykKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVf aXRlbShzZWxmLmRhdGFiYXNlX25hbWUpCisgICAgICAgIGlmIHNlbGYudGVzdF9sZXZlbCA9PSAn dGFibGUnOgorICAgICAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnU2No ZW1hcycpCisgICAgICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVtKCdwdWJs aWMnKQorICAgICAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnVGFibGVz JykKKyAgICAgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgICAg ICIvLypbQGlkPSd0cmVlJ10vLyIKKyAgICAgICAgICAgICAgICAiKlsuPSciICsgc2VsZi50YWJs ZV9uYW1lICsgIiddLy4uLypbQGNsYXNzPSdhY2lUcmVlSXRlbSciCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJdIikuY2xpY2soKQorICAgICAgICBzZWxmLmRy aXZlci5maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJUb29scyIpLmNsaWNrKCkKKyAgICAgICAg c2VsZi5wYWdlLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIk1haW50ZW5hbmNlLi4uIikuY2xp Y2soKQorICAgICAgICB0aW1lLnNsZWVwKDAuNSkKKworICAgIGRlZiBfdmVyaWZ5X2NvbW1hbmQo c2VsZik6CisgICAgICAgIHN0YXR1cyA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltj b250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1 cywgIlN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuIikKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlf eHBhdGgoIi8vc3Bhbltjb250YWlucyhzdHJpbmcoKSwiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIgJ0NsaWNrIGhlcmUgZm9yIGRldGFpbHMuJyldIikuY2xpY2soKQorICAgICAg ICBjb21tYW5kID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vcFtjb250YWlucyhAY2xhc3Ms IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAnYmctZGV0YWls ZWQtZGVzYycpXSIpLnRleHQKKyAgICAgICAgaWYgc2VsZi50ZXN0X2xldmVsID09ICdkYXRhYmFz ZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21tYW5kLCAiVkFDVVVNICIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVkVSQk9TRSlcblJ1bm5pbmcg UXVlcnk6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuVkFDVVVN IFZFUkJPU0U7IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KGNvbW1hbmQsICJWQUNVVU0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIihWRVJCT1NFKVxuUnVubmluZyBRdWVyeToiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiXG5WQUNVVU0gVkVSQk9TRSIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgcHVibGljLiIgKyBzZWxmLnRhYmxlX25hbWUgKyAiOyIpCisKKyAg ICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywnd2NG bG9hdGluZ0ZvY3VzJyldLy8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXZb Y29udGFpbnMoQGNsYXNzLCdmYS1jbG9zZScpXSIpLmNsaWNrKCkKKworICAgIGRlZiBhZnRlcihz ZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnJlbW92ZV9zZXJ2ZXIoc2VsZi5zZXJ2ZXIpCisgICAg ICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUn XSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisg ICAgICAgICAgICBzZWxmLnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdGVz dF91dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHNlbGYuZGF0YWJhc2VfbmFtZSkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkgYi93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rl c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZmNjA4YgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9j cmVhdGVfam9iX3VuaXRfdGVzdC5weQpAQCAtMCwwICsxLDQ1OCBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zy b20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2Vzcwor ZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1cCBpbXBvcnQgQmFja3VwTWVzc2FnZQorZnJvbSBwZ2Fk bWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9u IGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRp bHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQg c2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRh dGFiYXNlX3V0aWxzCisKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9t IG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5t b2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgQmFja3VwQ3JlYXRlSm9iVGVz dChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNs YXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCB3 aXRoIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNz X3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAor ICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNr dXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAg ICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAg ICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0 ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3Vw IHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gc2VjdGlvbnMgdG8gYWxsIGRhdGEnLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3Jt YXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkYXRhPVRydWUs CisgICAgICAgICAgICAgICAgIHByZV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIHBvc3Rf ZGF0YT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9i L3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3Nl JywgJy0tZm9ybWF0PWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zZWN0 aW9uPXByZS1kYXRhJywgJy0tc2VjdGlvbj1kYXRhJywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tc2VjdGlvbj1wb3N0LWRhdGEnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0 ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25l XQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9w dGlvbiBvbmx5X2RhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAg ICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9 J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAg ICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2Zp bGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAg dmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAg ICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3Nj aGVtYT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pv Yi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9z ZScsICctLWZvcm1hdD1wJywgJy0tZGF0YS1vbmx5J10sCisgICAgICAgICAgICAgbm90X2V4cGVj dGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9u ZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBv cHRpb24gb25seV9kYXRhJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1l PSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAg ICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNl PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAg ICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAg ICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9m aWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAg ICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAor ICAgICAgICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9z Y2hlbWE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAg ICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICctLWRh dGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tc2NoZW1h LW9ubHknLCAnLS1uby1vd25lciddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1b MCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qg d2l0aCBvcHRpb24gb25seV9zY2hlbWEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBj bGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAg ICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0 NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3Vw JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICks CisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3Rf YmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAg ICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0 Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1GYWxzZSwKKyAgICAgICAgICAgICAg ICAgb25seV9zY2hlbWE9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv YmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b Jy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tc2NoZW1hLW9ubHknXSwKKyAgICAgICAgICAg ICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9j b2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9i amVjdCB3aXRoIG9wdGlvbiAtIGZvcm1hdCBwbGFpbiBhbmQgZG5zX293bmVyJywKKyAgICAgICAg IGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAg ICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9z dCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0 Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9y bWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkbnNfb3duZXI9 VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0v b2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICct LWZvcm1hdD1wJywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAt IERvIG5vdCBzYXZlIHByaXZpbGVnZSwnCisgICAgICAgICAnIHRhYmxlc3BhY2UsIHVubG9nZ2Vk IHRhYmxlIGRhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAg ICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZl cmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAg ICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBkbnNfcHJpdmlsZWdlPVRydWUsCisgICAgICAgICAgICAgICAgIGRuc191 bmxvZ2dlZF90YmxfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1U cnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9v YmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1uby1wcml2aWxlZ2Vz JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tdGFibGVzcGFjZXMnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby11bmxvZ2dlZC10YWJsZS1kYXRh J10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAg IGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1do ZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBhbGwgcXVlcmllcycsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAg ICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhv c3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZv cm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAg ICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX2NvbHVt bl9pbnNlcnRzPVRydWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNl PVRydWUsCisgICAgICAgICAgICAgICAgIHVzZV9pbnNlcnRfY29tbWFuZHM9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgaW5jbHVkZV9kcm9wX2RhdGFiYXNlPVRydWUKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAg ZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJywgJy0taW5zZXJ0cycsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNvbHVtbi1pbnNlcnRzJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3Vw IHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBhbGwgcXVlcmllcyBhbmQgZm9ybWF0IGN1c3RvbScs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAg ICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAor ICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10s CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IHVzZV9jb2x1bW5faW5zZXJ0cz1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0 ZV9kYXRhYmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICB1c2VfaW5zZXJ0X2NvbW1hbmRzPVRy dWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVfZHJvcF9kYXRhYmFzZT1UcnVlCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1pbnNlcnRzJywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0tY29sdW1uLWluc2VydHMnXSwKKyAgICAgICAgICAgICBub3Rf ZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJ10sCisgICAgICAgICAgICAg ZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hl biBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIG1pc2NlbGxhbmVvdXMnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAg ICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkaXNhYmxl X3F1b3Rpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdXNlX3NldF9zZXNzaW9uX2F1dGg9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgd2l0aF9vaWRzPVRydWUsCisgICAgICAgICAgICAgICAgIGRx b3V0ZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9i L3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3Nl JywgJy0tcXVvdGUtYWxsLWlkZW50aWZpZXJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tZGlzYWJsZS1kb2xsYXItcXVvdGluZycsICctLW9pZHMnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnLS11c2Utc2V0LXNlc3Npb24tYXV0aG9yaXphdGlvbiddLAor ICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBl Y3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJh Y2t1cCB0aGUgb2JqZWN0IHdpdGggZm9ybWF0IHRhcicsCisgICAgICAgICBkaWN0KAorICAgICAg ICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAg ICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAg cG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVz dF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmls ZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0ndGFyJywKKyAg ICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtd LAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNl PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy0tYmxvYnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn LS1mb3JtYXQ9dCddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAg ICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0 X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9zZXJ2ZXJfZmlsZScsCisgICAgICAgICAgICAgICAgIGRxb3V0ZT1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICB0eXBl PSdzZXJ2ZXInCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9i L3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnXSwKKyAg ICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0 ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNr dXAgZ2xvYmFscycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVz dF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAg ICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZ2xvYmFs X2ZpbGUnLAorICAgICAgICAgICAgICAgICBkcW91dGU9RmFsc2UsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdHlwZT0nZ2xvYmFscycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9JywKKyAgICAgICAgICAg ICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAgICAgICAgICAgIG5vdF9leHBl Y3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5v bmVdCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg aWYgc2VsZi5zZXJ2ZXJbJ0RFRkFVTFRfQklOQVJZX1BBVEhTJ10gaXMgTm9uZToKKyAgICAgICAg ICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgIkRFRkFVTFRfQklOQVJZX1BBVEhT IGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLlNlcnZlcicpCisgICAgQHBhdGNo KCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1p bi50b29scy5iYWNrdXAuQmFja3VwTWVzc2FnZScpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xz LmJhY2t1cC5maWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4udG9vbHMuYmFja3VwLkJhdGNoUHJvY2VzcycpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwg YmF0Y2hfcHJvY2Vzc19tb2NrLCBmaWxlbmFtZV9tb2NrLAorICAgICAgICAgICAgICAgIGJhY2t1 cF9tZXNzYWdlX21vY2ssIGN1cnJlbnRfdXNlcl9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAg IGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg bmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg IG1haW50ZW5hbmNlX2RiKToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAg ICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9 IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxm LnVzZXJuYW1lID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLm1haW50ZW5hbmNlX2Ri ID0gbWFpbnRlbmFuY2VfZGIKKworICAgICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBz ZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lk Il0KKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxmLmNsYXNzX3BhcmFtc1sn bmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJf YnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9 IG1vY2tfb2JqCisKKyAgICAgICAgZmlsZW5hbWVfbW9jay5yZXR1cm5fdmFsdWUgPSBzZWxmLnBh cmFtc1snZmlsZSddCisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnNldF9lbnZfdmFyaWFi bGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAg KQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBNYWdpY01vY2soCisgICAgICAg ICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisKKyAgICAgICAgc2VydmVyX3Jlc3Bv bnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVyX2lkKQor ICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5lY3RlZC4i OgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsndXNlcidd WyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0aWxzLmdldF9kYl9k YXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRhWyduYW1l J10KKworICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisKKyAg ICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRl c3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 anNvbi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29u LmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSBy ZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNzZXJ0IGJhY2t1cF9t ZXNzYWdlX21vY2suY2FsbGVkCisgICAgICAgIGFzc2VydCBiYXRjaF9wcm9jZXNzX21vY2suY2Fs bGVkCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZv ciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFz c2VydEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJh dGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAg ICAgICAgKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAg ICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAg ICAgc2VsZi5hc3NlcnROb3RJbigKKyAgICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAg ICAgICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3Mn XQorICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1 cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNzYxZDI4NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2Jh Y2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTU4IEBACisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisj CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIGZsYXNrIGltcG9ydCBSZXNw b25zZQoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMuYmFj a3VwIGltcG9ydCBCYWNrdXBNZXNzYWdlLCBCQUNLVVAKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAz KToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJv bSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgQmFja3Vw TWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIEJhY2t1cE1l c3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBCYWNrdXAg c2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLlNFUlZFUiwKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAg ICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAiYmFja3VwX2Zp bGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAg ICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAg ICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAor ICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICct LW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAg ICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg ICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgdGhlIHNlcnZlciIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAndGVzdF9iYWNrdXBfc2VydmVyIChsb2NhbGhvc3Q6NTQ0NCknLi4u IiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19kdW1w IC0tZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJiYWNrdXBfZmls ZSIgLS1ob3N0ICJsb2NhbGhvc3QiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicK KworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBCYWNrdXAgZ2xvYmFsJywKKyAgICAgICAg IGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IHR5cGU9QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAg ICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0 PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAg ICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2Jh Y2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0t ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAg ICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywKKyAg ICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgJzU0NDQn LAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAg ICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAg ICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICdw b3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSIvdGVz dF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9t c2c9IkJhY2tpbmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uIHRoZSBzZXJ2ZXIgIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9jYWxob3N0OjU0NDQp Jy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9Jy90ZXN0X3BhdGgvcGdf ZHVtcCAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0taG9zdCAibG9jYWxob3N0IicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnIC0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0Z3Jl cyInCisKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCcsCisgICAg ICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAg ICAgICB0eXBlPUJBQ0tVUC5PQkpFQ1QsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0 X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAg Jy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnYmFja3VwX2ZpbGUnLAorICAgICAgICAg ICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywK KyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgJzU0 NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAg ICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywK KyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAg ICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSIv dGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3Rl ZF9tc2c9IkJhY2tpbmcgdXAgYW4gb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAiJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9jYWxob3N0OjU0NDQpJyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIiBmcm9tIGRhdGFiYXNlICdwb3N0Z3JlcycuLi4iLAor ICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX2R1bXAgLS1m aWxlICJiYWNrdXBfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LWhvc3QgImxvY2FsaG9zdCIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBvc3RncmVzIiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRhYmFzZSAicG9zdGdyZXMiJworCisg ICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuU2Vy dmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmN1cnJlbnRfdXNlcicpCisg ICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAg ICAgICAgY3VycmVudF91c2VyX21vY2sgPSAxCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2 ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0KToK KyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5o b3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgbW9j a19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQn XSkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0 dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tf b2JqCisKKyAgICAgICAgYmFja3VwX29iaiA9IEJhY2t1cE1lc3NhZ2UoCisgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1sndHlwZSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAg ICAgICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSwKKyAgICAgICAgICAgICoqeydkYXRhYmFz ZSc6IHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddfQorICAgICAgICApCisKKyAgICAgICAg IyBDaGVjayB0aGUgZXhwZWN0ZWQgbWVzc2FnZSByZXR1cm5lZAorICAgICAgICBhc3NlcnQgYmFj a3VwX29iai5tZXNzYWdlID09IHNlbGYuZXh0ZWN0ZWRfbXNnCisKKyAgICAgICAgIyBDaGVjayB0 aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IGJhY2t1cF9vYmouZGV0YWlscyhzZWxm LmNsYXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o c2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMucHkgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMucHkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwYzk4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF91dGlscy5weQpAQCAtMCwwICsx LDExMSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IHRpbWUKK2ltcG9ydCBy YW5kb20KK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworCitkZWYgY3JlYXRlX2JhY2t1cF9q b2IodGVzdGVyLCB1cmwsIHBhcmFtcyk6CisgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAg ICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9anNvbi5kdW1wcyhwYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGVudF90eXBlPSdodG1sL2pzb24nKQorICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9 PSAyMDAKKyAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29k ZSgndXRmLTgnKSkKKyAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCdd CisgICAgcmV0dXJuIGpvYl9pZAorCisKK2RlZiBydW5fYmFja3VwX2pvYih0ZXN0ZXIsIGpvYl9p ZCwgZXhwZWN0ZWRfcGFyYW1zLCBhc3NlcnRJbiwgYXNzZXJ0Tm90SW4pOgorICAgIGNudCA9IDAK KyAgICB3aGlsZSAxOgorICAgICAgICBpZiBjbnQgPiAxOgorICAgICAgICAgICAgYnJlYWsKKyAg ICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgIHJlc3BvbnNlMSA9IHRlc3Rl ci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIHJhbmRvbS5y YW5kaW50KDEsIDk5OTk5OTkpKSkKKyAgICAgICAgYXNzZXJ0IHJlc3BvbnNlMS5zdGF0dXNfY29k ZSA9PSAyMDAKKyAgICAgICAgcHJvY2Vzc19saXN0ID0ganNvbi5sb2FkcyhyZXNwb25zZTEuZGF0 YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgaWYgbGVuKHByb2Nlc3NfbGlzdCkgPiAwIGFu ZCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXToKKyAgICAgICAgICAgIGJyZWFr CisgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICBjbnQgKz0gMQorCisgICAgYXNzZXJ0 ICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0ICdzdGltZScg aW4gcHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0ICdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlz dFswXQorICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIGV4cGVjdGVk X3BhcmFtc1sKKyAgICAgICAgJ2V4cGVjdGVkX2V4aXRfY29kZScKKyAgICBdCisKKyAgICBpZiBl eHBlY3RlZF9wYXJhbXNbJ2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4g ZXhwZWN0ZWRfcGFyYW1zWydleHBlY3RlZF9jbWRfb3B0cyddOgorICAgICAgICAgICAgYXNzZXJ0 SW4ob3B0LCBwcm9jZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKyAgICBpZiBleHBlY3RlZF9wYXJh bXNbJ25vdF9leHBlY3RlZF9jbWRfb3B0cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVk X3BhcmFtc1snbm90X2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgICAgICBhc3NlcnROb3RJ bihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorCisgICAgIyBDaGVjayB0aGUgcHJv Y2VzcyBkZXRhaWxzCisgICAgcF9kZXRhaWxzID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNz L3swfT9fPScuZm9ybWF0KAorICAgICAgICBqb2JfaWQsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5 OTkpKQorICAgICkKKyAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAg IHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04 JykpCisKKyAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sx fS97Mn0vP189Jy5mb3JtYXQoCisgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQo MSwgOTk5OTk5OSkpCisgICAgKQorICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0g MjAwCisgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29k ZSgndXRmLTgnKSkKKworICAgIGNudCA9IDAKKyAgICAjIFJldHJpZXZlIHRoZSBiYWNrdXAgam9i IHByb2Nlc3MgbG9ncworICAgIHdoaWxlIDE6CisgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBn ZXRfcGFyYW1zKHBfZGV0YWlsc19kYXRhKQorICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDEw OgorICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KAor ICAgICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgK KyAgICAgICAgICAgICAgICBqb2JfaWQsIG91dCwgZXJyLCByYW5kb20ucmFuZGludCgxLCA5OTk5 OTk5KSkKKyAgICAgICAgKQorICAgICAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09 IDIwMAorICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEu ZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIGNudCArPSAxCisgICAgICAgIHRpbWUuc2xlZXAo MSkKKworICAgICMgQ2hlY2sgdGhlIGpvYiBpcyBjb21wbGV0ZS4KKyAgICBiYWNrdXBfYWNrID0g dGVzdGVyLnB1dCgnL21pc2MvYmdwcm9jZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAgYXNz ZXJ0IGJhY2t1cF9hY2suc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgYmFja3VwX2Fja19yZXMgPSBq c29uLmxvYWRzKGJhY2t1cF9hY2suZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBhc3NlcnQg YmFja3VwX2Fja19yZXNbJ3N1Y2Nlc3MnXSA9PSAxCisKKworZGVmIGdldF9wYXJhbXMoZGF0YSk6 CisgICAgb3V0ID0gMAorICAgIG91dF9kb25lID0gRmFsc2UKKyAgICBlcnIgPSAwCisgICAgZXJy X2RvbmUgPSBGYWxzZQorICAgIGlmICdvdXQnIGluIGRhdGE6CisgICAgICAgIG91dCA9IGRhdGFb J291dCddIGFuZCBkYXRhWydvdXQnXVsncG9zJ10KKworICAgICAgICBpZiAnZG9uZScgaW4gZGF0 YVsnb3V0J106CisgICAgICAgICAgICBvdXRfZG9uZSA9IGRhdGFbJ291dCddWydkb25lJ10KKwor ICAgIGlmICdlcnInIGluIGRhdGE6CisgICAgICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRh WydlcnInXVsncG9zJ10KKworICAgICAgICBpZiAnZG9uZScgaW4gZGF0YVsnZXJyJ106CisgICAg ICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKworICAgIHJldHVybiBvdXQs IGVyciwgKG91dF9kb25lIGFuZCBlcnJfZG9uZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkgYi93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjhjYmE5YmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMjE5IEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworaW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBC YXRjaFByb2Nlc3MsIElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1cCBpbXBv cnQgQmFja3VwTWVzc2FnZSwgQkFDS1VQCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0 IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lm IHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAor ZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0 Y2hQcm9jZXNzVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQ cm9jZXNzIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gYmFja3Vw IHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0 KAorICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5TRVJWRVIsCisgICAgICAgICAgICAgICAg IHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAg ICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9z dCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2Jh Y2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0t ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAg ICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAg ICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQi LAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAg ICAgInBvc3RncmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAg ICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJw b3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNr dXBfc2VydmVyJworICAgICAgICAgICAgICkKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g YmFja3VwIGdsb2JhbHMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuR0xPQkFMUywKKyAgICAgICAg ICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZl cicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0n bG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAg ICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9 J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAg ICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAg ICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhv c3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAg ICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAg ICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dv cmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAg ICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBj bWQ9J2JhY2t1cCcKKyAgICAgICAgICAgICApCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IGJhY2t1cCBvYmplY3QnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuT0JKRUNULAorICAgICAgICAg ICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0n dGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAg ICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgImJhY2t1cF9maWxlIiwKKyAgICAg ICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9z dCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAg ICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAg ICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29y ZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAg ICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNt ZD0nYmFja3VwJworICAgICAgICAgICAgICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBh dGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qb3BlbicpCisgICAgQHBhdGNo KCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X2FwcCcpCisgICAgQHBh dGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5kYicpCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLmJhY2t1cC5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5i YWNrdXAuY3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3Mu cHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91 c2VyX21vY2ssIGN1cnJlbnRfdXNlciwgc2VydmVyX21vY2ssIGRiX21vY2ssCisgICAgICAgICAg ICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9jayk6CisgICAgICAgIGN1cnJlbnRfdXNl ci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2VyX21vY2suaWQgPSAxCisgICAgICAgIGN1cnJl bnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKKworICAgICAgICBjbGFzcyBUZXN0 TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGhvc3Qs IHBvcnQpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAg ICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAorCisg ICAgICAgIGRlZiBkYl9zZXNzaW9uX2FkZF9tb2NrKGopOgorICAgICAgICAgICAgY21kX29iaiA9 IGxvYWRzKGouZGVzYykKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNtZF9vYmosIElQ cm9jZXNzRGVzYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouYmFja3Vw X3R5cGUsIHNlbGYuY2xhc3NfcGFyYW1zWyd0eXBlJ10pCisgICAgICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhjbWRfb2JqLmJmaWxlLCBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouZGF0YWJhc2UsIHNlbGYuY2xhc3NfcGFy YW1zWydkYXRhYmFzZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5j bWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tZmlsZSAiYmFja3VwX2ZpbGUi ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhvc3QgInswfSIgJworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCAiezF9IiAnCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnLS11c2VybmFtZSAiezJ9IiAnCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS1uby1wYXNzd29yZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn LS1kYXRhYmFzZSAiezN9IicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICBtb2NrX29iaiA9IFRlc3RN b2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddKQorICAgICAgICBt b2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAg ICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAg ICBkYl9tb2NrLnNlc3Npb24uYWRkLnNpZGVfZWZmZWN0ID0gZGJfc2Vzc2lvbl9hZGRfbW9jawor CisgICAgICAgIGJhY2t1cF9vYmogPSBCYWNrdXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5j bGFzc19wYXJhbXNbJ3R5cGUnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQn XSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAg KnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10sCisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBz ZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXX0KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBC YXRjaFByb2Nlc3MoCisgICAgICAgICAgICBkZXNjPWJhY2t1cF9vYmosCisgICAgICAgICAgICBj bWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNz X3BhcmFtc1snYXJncyddCisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0 ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9u LmFkZC5jYWxsZWQKKworICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxm Ll9jaGVja19zdGFydChwb3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRo b2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlzdChwLCBiYWNrdXBfb2JqKQorCisgICAgZGVmIF9j aGVja19zdGFydChzZWxmLCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBzZWxm LmNsYXNzX3BhcmFtc1snY21kJ10KKworICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0 KCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAg ICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAgICAgICAgICAgIGFzc2Vy dCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAg ICAgICAgICAgcGFzcworCisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1v Y2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGFzc2VydCBwb3Blbl9t b2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nl cy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2Vz LkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBk ZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgYmFja3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19t b2NrLAorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBU ZXN0TW9ja1Byb2Nlc3MoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBh cmdzLCBjbWQpOgorICAgICAgICAgICAgICAgIHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAg IHNlbGYuZXhpdF9jb2RlID0gMQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcy MDE4LTA0LTE3IDA2OjE4OjU2LjMxNTQ0NSArMDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVu ZF90aW1lID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisg ICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVudHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAg ICAgICAgIHNlbGYuY29tbWFuZCA9IGNtZAorICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVk Z2UgPSBOb25lCisKKyAgICAgICAgcHJvY2Vzc19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5f dmFsdWUgPSBbCisgICAgICAgICAgICBUZXN0TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAg ICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQor CisgICAgICAgIHJldF92YWx1ZSA9IHAubGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo MSwgbGVuKHJldF92YWx1ZSkpCisgICAgICAgIGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVl WzBdCisgICAgICAgIGFzc2VydCAnZGVzYycgaW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weSBi L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZjA1MzEKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3Vw X2pvYi5weQpAQCAtMCwwICsxLDU4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9t IHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVz dF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMu YmFja3VwLnRlc3RzLnRlc3RfYmFja3VwX3V0aWxzIGFzIGJhY2t1cF91dGlscworCisKK2NsYXNz IEJhY2t1cEpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkgdGVz dCBjYXNlcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUg b2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAg ICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9m aWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAg ICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAg ICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9w YXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJv c2UnLCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10sCisgICAgICAgICAgICAgICAgIG5vdF9leHBl Y3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVsw LCBOb25lXQorICAgICAgICAgICAgICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnREVGQVVMVF9CSU5BUllfUEFUSFMn XSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAi REVGQVVMVF9CSU5BUllfUEFUSFMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBz ZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lk Il0KKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAg ICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91dGls cy5jcmVhdGVfYmFja3VwX2pvYihzZWxmLnRlc3RlciwgdXJsLCBzZWxmLnBhcmFtcykKKyAgICAg ICAgYmFja3VwX3V0aWxzLnJ1bl9iYWNrdXBfam9iKHNlbGYudGVzdGVyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgam9iX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5hc3NlcnROb3RJbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMv X19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy9fX2luaXRf Xy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nl c3NfbWFpbnRlbmFuY2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90 ZXN0X2JhdGNoX3Byb2Nlc3NfbWFpbnRlbmFuY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNTVjM2RiOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vzc19tYWludGVuYW5jZS5weQpAQCAt MCwwICsxLDE1MyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKKworZnJv bSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJ UHJvY2Vzc0Rlc2MKK2Zyb20gcGdhZG1pbi50b29scy5tYWludGVuYW5jZSBpbXBvcnQgTWVzc2Fn ZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJv bSBwaWNrbGUgaW1wb3J0IGR1bXBzLCBsb2FkcworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMs IDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVz dC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2NsYXNzIEJhdGNoUHJvY2Vzc1Rlc3QoQmFzZVRlc3RH ZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIEJhdGNoUHJvY2VzcyBjbGFzcyIiIgorICAgIHNj ZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIG1haW50YWluZWQgc2VydmVyJywKKyAgICAgICAg IGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IHNpZD0xLAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisg ICAgICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICct LXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAg ICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGJuYW1lJywKKyAgICAg ICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1jb21t YW5kJywKKyAgICAgICAgICAgICAgICAgICAgICJWQUNVVU0gVkVSQk9TRTtcbiIKKyAgICAgICAg ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAg ICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZB Q1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAg ICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJi b3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlZB Q1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXhwZWN0ZWRf bXNnPSJNYWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWls c19jbWQ9J1ZBQ1VVTSBWRVJCT1NFOycKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNo KCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qb3BlbicpCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X2FwcCcpCisgICAgQHBhdGNo KCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5kYicpCisgICAgQHBhdGNoKCdwZ2Fk bWluLnRvb2xzLm1haW50ZW5hbmNlLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2Mu Ymdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X3VzZXInKQorICAgIGRlZiBydW5UZXN0KHNlbGYs IGN1cnJlbnRfdXNlcl9tb2NrLCBzZXJ2ZXJfbW9jaywgZGJfbW9jaywKKyAgICAgICAgICAgICAg ICBjdXJyZW50X2FwcF9tb2NrLCBwb3Blbl9tb2NrKToKKyAgICAgICAgY3VycmVudF91c2VyX21v Y2suaWQgPSAxCisgICAgICAgIGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFs c2UKKworICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIG5hbWUsIGhvc3QsIHBvcnQpOgorICAgICAgICAgICAgICAgIHNlbGYubmFt ZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAg ICAgc2VsZi5wb3J0ID0gcG9ydAorCisgICAgICAgIGRlZiBkYl9zZXNzaW9uX2FkZF9tb2NrKGop OgorICAgICAgICAgICAgY21kX29iaiA9IGxvYWRzKGouZGVzYykKKyAgICAgICAgICAgIGFzc2Vy dCBpc2luc3RhbmNlKGNtZF9vYmosIElQcm9jZXNzRGVzYykKKyAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWxzKGNtZF9vYmoucXVlcnksIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmoubWVzc2FnZSwgc2VsZi5leHBlY3RlZF9t c2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmRhdGEsIHNlbGYuY2xh c3NfcGFyYW1zWydkYXRhJ10pCisKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihz ZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10pCisgICAgICAgIG1vY2tfcmVz dWx0ID0gc2VydmVyX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBt b2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5fdmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGRiX21v Y2suc2Vzc2lvbi5hZGQuc2lkZV9lZmZlY3QgPSBkYl9zZXNzaW9uX2FkZF9tb2NrCisKKyAgICAg ICAgbWFpbnRlbmFuY2Vfb2JqID0gTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhJ10sCisgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKyAgICAgICAgKQorCisgICAgICAgIHAg PSBCYXRjaFByb2Nlc3MoCisgICAgICAgICAgICBkZXNjPW1haW50ZW5hbmNlX29iaiwKKyAgICAg ICAgICAgIGNtZD1zZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICBhcmdzPXNl bGYuY2xhc3NfcGFyYW1zWydhcmdzJ10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhh dCBfY3JlYXRlX3Byb2Nlc3MgaGFzIGJlZW4gY2FsbGVkCisgICAgICAgIGFzc2VydCBkYl9tb2Nr LnNlc3Npb24uYWRkLmNhbGxlZAorCisgICAgICAgICMgQ2hlY2sgc3RhcnQgbWV0aG9kCisgICAg ICAgIHNlbGYuX2NoZWNrX3N0YXJ0KHBvcGVuX21vY2ssIHApCisKKyAgICAgICAgIyBDaGVjayBs aXN0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19saXN0KHAsIG1haW50ZW5hbmNlX29iaikK KworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwgcG9wZW5fbW9jaywgcCk6CisgICAgICAgIGNt ZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisKKyAgICAgICAgY2xhc3MgcG9wZW5N b2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgKipr d2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbWRfdGVzdCBpbiBjbWQKKyAgICAgICAg ICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dhcmdzCisKKyAgICAgICAgICAgIGRlZiBwb2xsKHNl bGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwb3Blbl9tb2NrLnNpZGVfZWZm ZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBh c3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9j ZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAgICAndXBkYXRlX3Byb2Nlc3Nf aW5mbycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIG1haW50ZW5hbmNlX29iaiwgdXBk YXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX21vY2sp OgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3MoKToKKyAgICAgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAgICAgICAgICAgICAgIHNlbGYucGlkID0g MQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gMQorICAgICAgICAgICAgICAgIHNl bGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4OjU2LjMxNTQ0NSArMDAwMCcKKyAgICAg ICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZGVz YyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVudHMgPSAiICIuam9p bihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9IGNtZAorICAgICAgICAgICAg ICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAgICAgICAgcHJvY2Vzc19tb2NrLnF1ZXJ5 LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAgICAgICAgICBUZXN0TW9ja1Byb2Nlc3Mo bWFpbnRlbmFuY2Vfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydhcmdzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2NtZCddKQorICAgICAgICBdCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19t b2NrLnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1ZSA9IHAu bGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkpCisgICAg ICAgIGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFzc2VydCAnZGVz YycgaW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS90ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkgYi93ZWIvcGdhZG1pbi90 b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQyNDkyMAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfY3JlYXRlX21haW50 ZW5hbmNlX2pvYi5weQpAQCAtMCwwICsxLDE0MiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK K2ltcG9ydCB0aW1lCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisK K2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20g cmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhv bl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRp bHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFz IFwKKyAgICBkYXRhYmFzZV91dGlscworCisKK2NsYXNzIE1haW50ZW5hbmNlSm9iVGVzdChCYXNl VGVzdEdlbmVyYXRvcik6CisgICAgIiIiTWFpbnRlbmFuY2UgYXBpIHRlc3QgY2FzZXMiIiIKKyAg ICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBtYWludGVuYW5jZSB0aGUgb2JqZWN0IHdp dGggdGhlIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg ICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFD VVVNJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAg ICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJv c2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFD VVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9tYWlu dGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kPSdWQUNVVU0g VkVSQk9TRScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSkKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYu c2VydmVyWydERUZBVUxUX0JJTkFSWV9QQVRIUyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm LnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJERUZBVUxUX0JJTkFSWV9QQVRIUyBpcyBub3Qg c2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxm LnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAg ZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNl bGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bInNlcnZlcl9p ZCJdCisgICAgICAgIHNlbGYuZGJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0x XVsiZGJfaWQiXQorICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQs IHNlbGYuZGJfaWQpCisKKyAgICAgICAgdXRpbHMuc2V0X3ByZWZlcmVuY2Uoc2VsZi5zZXJ2ZXJb J0RFRkFVTFRfQklOQVJZX1BBVEhTJ10pCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBq b2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtc1snZGF0 YSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0n aHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0 YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEn XVsnam9iX2lkJ10KKworICAgICAgICBjbnQgPSAwCisgICAgICAgIHdoaWxlIDE6CisgICAgICAg ICAgICBpZiBjbnQgPiAxOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAjIENo ZWNrIHRoZSBwcm9jZXNzIGxpc3QKKyAgICAgICAgICAgIHJlc3BvbnNlMSA9IHNlbGYudGVzdGVy LmdldCgnL21pc2MvYmdwcm9jZXNzLz9fPScuZm9ybWF0KAorICAgICAgICAgICAgICAgIHJhbmRv bS5yYW5kaW50KDEsIDk5OTk5OTkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJl c3BvbnNlMS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAgcHJvY2Vzc19saXN0ID0ganNv bi5sb2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIGlm IGxlbihwcm9jZXNzX2xpc3QpID4gMCBhbmQgJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9jZXNzX2xp c3RbMF06CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41 KQorICAgICAgICAgICAgY250ICs9IDEKKworICAgICAgICBhc3NlcnQgJ2V4ZWN1dGlvbl90aW1l JyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0ICdzdGltZScgaW4gcHJvY2Vzc19s aXN0WzBdCisgICAgICAgIGFzc2VydCAnZXhpdF9jb2RlJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAg ICAgICAgYXNzZXJ0IHByb2Nlc3NfbGlzdFswXVsnZXhpdF9jb2RlJ10gaW4gc2VsZi5leHBlY3Rl ZF9leGl0X2NvZGUKKworICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuZXhwZWN0ZWRfY21kLCBw cm9jZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKworICAgICAgICAjIENoZWNrIHRoZSBwcm9jZXNz IGRldGFpbHMKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3By b2Nlc3MvezB9P189Jy5mb3JtYXQoCisgICAgICAgICAgICBqb2JfaWQsIHJhbmRvbS5yYW5kaW50 KDEsIDk5OTk5OTkpKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBfZGV0 YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9h ZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHBfZGV0YWlscyA9 IHNlbGYudGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPScuZm9ybWF0 KAorICAgICAgICAgICAgam9iX2lkLCAwLCAwLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkK KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2Nv ZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5k YXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAjIFJldHJpZXZlIHRoZSBiYWNrdXAgam9i IHByb2Nlc3MgbG9ncworICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgb3V0LCBlcnIsIHN0 YXR1cyA9IE1haW50ZW5hbmNlSm9iVGVzdC5nZXRfcGFyYW1zKHBfZGV0YWlsc19kYXRhKQorICAg ICAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAg IHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgKKyAgICAgICAgICAgICAgICAnL21pc2MvYmdw cm9jZXNzL3swfS97MX0vezJ9Lz9fPXszfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBq b2JfaWQsIG91dCwgZXJyLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwg MjAwKQorICAgICAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5k YXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorCisgICAg ICAgICMgQ2hlY2sgdGhlIGpvYiBpcyBjb21wbGV0ZS4KKyAgICAgICAgYmFja3VwX2FjayA9IHNl bGYudGVzdGVyLnB1dCgnL21pc2MvYmdwcm9jZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJhY2t1cF9hY2suc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg ICAgYmFja3VwX2Fja19yZXMgPSBqc29uLmxvYWRzKGJhY2t1cF9hY2suZGF0YS5kZWNvZGUoJ3V0 Zi04JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYmFja3VwX2Fja19yZXNbJ3N1Y2Nl c3MnXSwgMSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3BhcmFtcyhkYXRhKToK KyAgICAgICAgb3V0ID0gMAorICAgICAgICBvdXRfZG9uZSA9IEZhbHNlCisgICAgICAgIGVyciA9 IDAKKyAgICAgICAgZXJyX2RvbmUgPSBGYWxzZQorICAgICAgICBpZiAnb3V0JyBpbiBkYXRhOgor ICAgICAgICAgICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQorCisg ICAgICAgICAgICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICAgICAgb3V0 X2RvbmUgPSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICAgICAgaWYgJ2VycicgaW4gZGF0YToK KyAgICAgICAgICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10KKwor ICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgICAgIGVy cl9kb25lID0gZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAgICAgIHJldHVybiBvdXQsIGVyciwg KG91dF9kb25lIGFuZCBlcnJfZG9uZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21h aW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkg Yi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX2Ny ZWF0ZV9qb2JfdW5pdF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjZjZjA0NjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5j ZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBAIC0wLDAg KzEsMTk1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK2ltcG9ydCBzeXMKK2ltcG9y dCBzaW1wbGVqc29uIGFzIGpzb24KKworCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJv Y2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MKK2Zyb20gcGdhZG1pbi50b29scy5tYWludGVuYW5j ZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVz dEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9t IHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK K2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscwor ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0 cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKKworaWYgc3lzLnZlcnNp b25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sK K2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisK KworY2xhc3MgTWFpbnRlbmFuY2VDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAg ICAiIiJUZXN0IHRoZSBCYWNrdXBDcmVhdGVKb2IgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnV2hlbiBtYWludGVuYW5jZSBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMn LAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFu Y2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMn CisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1ZBQ1VVTScs CisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAgICAg ICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WydWQUNVVU0gVkVSQk9TRTtcbiddLAorICAgICAgICAgKSksCisgICAg ICAgICgnV2hlbiBtYWludGVuYW5jZSBvYmplY3Qgd2l0aCBWQUNVVU0gRlVMTCcsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nVkFDVVVNJywKKyAgICAgICAg ICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9m cmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPVRydWUsCisgICAgICAg ICAgICAgICAgIHZlcmJvc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9v cHRzPVsnVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiddLAorICAgICAgICAgKSksCisgICAgICAgICgn V2hlbiBtYWludGVuYW5jZSBvYmplY3Qgd2l0aCB0aGUgQU5BTFlaRScsCisgICAgICAgICBkaWN0 KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9 MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXInLAorICAg ICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9z dCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0n cG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nQU5BTFlaRScsCisgICAgICAgICAgICAg ICAgIHZhY3V1bV9hbmFseXplPVRydWUsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mcmVlemU9 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAgICAgICAg ICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21h aW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b J0FOQUxZWkUgVkVSQk9TRTtcbiddLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWlu dGVuYW5jZSB0aGUgb2JqZWN0IHdpdGggdGhlIFJFSU5ERVgnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAg ICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAor ICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1JFSU5ERVgnLAorICAgICAgICAgICAgICAgICB2 YWN1dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL21haW50 ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJ1JF SU5ERVggREFUQUJBU0UgcG9zdGdyZXM7XG4nXSwKKyAgICAgICAgICkpLAorICAgICAgICAoJ1do ZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBDTFVTVEVSJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNl PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdDTFVTVEVSJywKKyAgICAgICAgICAg ICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mcmVl emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29w dHM9WydDTFVTVEVSO1xuJ10sCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChz ZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ0RFRkFVTFRfQklOQVJZX1BBVEhTJ10gaXMg Tm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgIkRFRkFV TFRfQklOQVJZX1BBVEhTIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFuY2Uu U2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UuTWVzc2FnZScp CisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlLkJhdGNoUHJvY2VzcycpCisg ICAgZGVmIHJ1blRlc3Qoc2VsZiwgYmF0Y2hfcHJvY2Vzc19tb2NrLCBtZXNzYWdlX21vY2ssIHNl cnZlcl9tb2NrKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJk YXRhYmFzZSJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBhcmVudF9u b2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJs LmZvcm1hdChzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKKworICAgICAgICBjbGFzcyBUZXN0 TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQs IGlkLCB1c2VybmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAg ICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQK KyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAgICBtb2Nr X29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQg PSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tf cmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgYmF0Y2hfcHJv Y2Vzc19tb2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0 dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3Rh cnQgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICAp CisKKyAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVy KHNlbGYsIHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8i XSA9PSAiU2VydmVyIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJf cmVzcG9uc2VbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9 IGRhdGFiYXNlX3V0aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5k Yl9uYW1lID0gc2VsZi5kYXRhWyduYW1lJ10KKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3Vw IGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9q c29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIw MCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9i X2lkJ10KKworICAgICAgICBhc3NlcnQgbWVzc2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBhc3Nl cnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZAorCisgICAgICAgIHByaW50KGJhdGNoX3Byb2Nl c3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddKQorICAgICAgICBpZiBzZWxmLmV4 cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVkX2Nt ZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3B0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFd WydhcmdzJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0 cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNGNiODllZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfbWVzc2FnZS5weQpAQCAt MCwwICsxLDEyNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBmbGFzayBpbXBv cnQgUmVzcG9uc2UKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLnRv b2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUg aW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKKworY2xhc3MgTWFpbnRlbmFuY2VNZXNzYWdlVGVz dChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgTWFpbnRlbmFuY2UgTWVzc2Fn ZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIG1haW50YWluZWQg dGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Fu YWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFs c2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAg ICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAgICAg ICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1ZBQ1VVTSBWRVJCT1NFOycKKworICAgICAgICAgKSks CisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBGVUxMIFZFUkJPU0Ug b3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0 KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17CisgICAg ICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5 emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBUcnVlLAorICAgICAgICAgICAg ICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgIGNtZD0iVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAorICAgICAgICAg ICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gRlVMTCBWRVJCT1NFOycKKworICAgICAg ICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBBTkFMWVpF JywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAn b3AnOiAnQU5BTFlaRScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBG YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAg ICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAg ICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg ICBjbWQ9IkFOQUxZWkUgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKEFuYWx5emUpIiwKKyAgICAgICAgICAgICBleHBl dGNlZF9kZXRhaWxzX2NtZD0nQU5BTFlaRSBWRVJCT1NFOycKKworICAgICAgICAgKSksCisgICAg ICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBSRUlOREVYJywKKyAgICAgICAg IGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdk YXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnUkVJTkRF WCcsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAg ICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3Nl JzogRmFsc2UKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJSRUlO REVYO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWlu dGVuYW5jZSAoUmVpbmRleCkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdS RUlOREVYOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBz ZXJ2ZXIgd2l0aCBDTFVTVEVSJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3Nf cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgICAgICAnb3AnOiAnQ0xVU1RFUicsCisgICAgICAgICAgICAgICAgICAgICAn dmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJl ZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICBjbWQ9IkNMVVNURVIgVkVSQk9TRTtcbiIKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKENsdXN0ZXIpIiwK KyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQ0xVU1RFUiBWRVJCT1NFOycKKwor ICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIG1h aW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn c2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddLAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAgICkKKworICAgICAgICAjIENoZWNr IHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAgIGFzc2VydCBtYWludGVuYW5j ZV9vYmoubWVzc2FnZSA9PSBzZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sgdGhl IGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSBtYWludGVuYW5jZV9vYmouZGV0YWlscyhz ZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2Vs Zi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9y ZS9fX2luaXRfXy5weQppbmRleCBmNmY5MmI5Li40NjBkMDFmIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvX19pbml0X18ucHkKQEAgLTE5Miw2ICsxOTIsNyBAQCBkZWYgY3JlYXRlX3Jlc3RvcmVf am9iKHNpZCk6CiAKICAgICBpZiBfZmlsZSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzPTQxMCwKICAgICAgICAgICAgIHN1Y2Nl c3M9MCwKICAgICAgICAgICAgIGVycm9ybXNnPV8oIkZpbGUgY291bGQgbm90IGJlIGZvdW5kLiIp CiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMv X19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5IGIv d2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzRlMQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzLnB5 CkBAIC0wLDAgKzEsMTYxIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cwor Citmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nl c3MsIElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRvb2xzLnJlc3RvcmUgaW1wb3J0IFJlc3Rv cmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJh dG9yCitmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lmIHN5cy52ZXJzaW9uX2lu Zm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9t IHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0Y2hQcm9jZXNzVGVzdChC YXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQcm9jZXNzIGNsYXNzIiIi CisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gcmVzdG9yZSBzZXJ2ZXInLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0 ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAg ICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgInJlc3RvcmVfZmlsZSIsCisgICAg ICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhv c3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAg ICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAg ICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dv cmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAg ICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBj bWQ9J3Jlc3RvcmVfc2VydmVyJworICAgICAgICAgICAgICkKKyAgICAgICAgICkpCisgICAgXQor CisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qb3BlbicpCisg ICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X2FwcCcp CisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5kYicpCisgICAg QHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMucmVzdG9yZS5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNj LmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxm LCBjdXJyZW50X3VzZXJfbW9jaywgY3VycmVudF91c2VyLCBzZXJ2ZXJfbW9jaywgZGJfbW9jaywK KyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcF9tb2NrLCBwb3Blbl9tb2NrKToKKyAgICAgICAg Y3VycmVudF91c2VyLmlkID0gMQorICAgICAgICBjdXJyZW50X3VzZXJfbW9jay5pZCA9IDEKKyAg ICAgICAgY3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBGYWxzZQorCisgICAgICAg IGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg bmFtZSwgaG9zdCwgcG9ydCk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAg ICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQg PSBwb3J0CisKKyAgICAgICAgZGVmIGRiX3Nlc3Npb25fYWRkX21vY2soaik6CisgICAgICAgICAg ICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo Y21kX29iaiwgSVByb2Nlc3NEZXNjKQorICAgICAgICAgICAgcHJpbnQoY21kX29iaikKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouYmZpbGUsIHNlbGYuY2xhc3NfcGFyYW1z WydiZmlsZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5jbWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tZmlsZSAicmVzdG9yZV9maWxlIiAnCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tbm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGF0 YWJhc2UgInszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1Nl cnZlcihzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSkKKyAgICAgICAgbW9ja19y ZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAg IG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZGJf bW9jay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAg ICAgICByZXN0b3JlX29iaiA9IFJlc3RvcmVNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10s CisgICAgICAgICAgICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAg ICAgICAgcCA9IEJhdGNoUHJvY2VzcygKKyAgICAgICAgICAgIGRlc2M9cmVzdG9yZV9vYmosCisg ICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJn cz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkKKworICAgICAgICAjIENoZWNr IHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJf bW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAor ICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hl Y2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlzdChwLCByZXN0b3JlX29iaikK KworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwgcG9wZW5fbW9jaywgcCk6CisgICAgICAgIGNt ZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisKKyAgICAgICAgY2xhc3MgcG9wZW5N b2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgKipr d2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbWRfdGVzdCBpbiBjbWQKKyAgICAgICAg ICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dhcmdzCisKKyAgICAgICAgICAgIGRlZiBwb2xsKHNl bGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwb3Blbl9tb2NrLnNpZGVfZWZm ZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBh c3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9j ZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAgICAndXBkYXRlX3Byb2Nlc3Nf aW5mbycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIHJlc3RvcmVfb2JqLCB1cGRhdGVf cHJvY2Vzc19pbmZvX21vY2ssCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfbW9jayk6Cisg ICAgICAgIGNsYXNzIFRlc3RNb2NrUHJvY2VzcygpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6CisgICAgICAgICAgICAgICAgc2VsZi5waWQgPSAxCisg ICAgICAgICAgICAgICAgc2VsZi5leGl0X2NvZGUgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5z dGFydF90aW1lID0gJzIwMTgtMDQtMTcgMDY6MTg6NTYuMzE1NDQ1ICswMDAwJworICAgICAgICAg ICAgICAgIHNlbGYuZW5kX3RpbWUgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5kZXNjID0g ZHVtcHMoZGVzYykKKyAgICAgICAgICAgICAgICBzZWxmLmFyZ3VtZW50cyA9ICIgIi5qb2luKGFy Z3MpCisgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gY21kCisgICAgICAgICAgICAgICAg c2VsZi5hY2tub3dsZWRnZSA9IE5vbmUKKworICAgICAgICBwcm9jZXNzX21vY2sucXVlcnkuZmls dGVyX2J5LnJldHVybl92YWx1ZSA9IFsKKyAgICAgICAgICAgIFRlc3RNb2NrUHJvY2VzcyhyZXN0 b3JlX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn YXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydj bWQnXSkKKyAgICAgICAgXQorCisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1 cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3Nl cnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJl dF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90 ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNjRiMTJiNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkKQEAgLTAsMCArMSwxOTYgQEAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMK KyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0 IHJhbmRvbQorCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQg cGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9y dCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91 dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2ltcG9ydCBwZ2FkbWluLnRvb2xzLmJhY2t1cC50ZXN0cy50 ZXN0X2JhY2t1cF91dGlscyBhcyBiYWNrdXBfdXRpbHMKKworCitpZiBzeXMudmVyc2lvbl9pbmZv IDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworZWxzZToK KyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKKworCitjbGFz cyBSZXN0b3JlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiQmFja3VwIGFwaSB0 ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gcmVzdG9yZSB0 aGUgb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAg ICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3Rv cmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Rl c3RfcmVzdG9yZV9kYXRhYmFzZScKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0n L3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZl cmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAgICAgICAgICAgICBiYWNrdXBf b3B0aW9ucz1kaWN0KAorICAgICAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgICAg IGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAg ICAgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICBzY2hl bWFzPVtdLAorICAgICAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Rlc3RfcmVzdG9yZV9kYXRhYmFzZScKKyAgICAgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAg ICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgICAgICBl eHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1jJywgJy0tYmxvYnMnXSwK KyAgICAgICAgICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAg ICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICAgICAg ICAgKQorCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAgICBdCisKKyAgICBkZWYgc2V0 VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydERUZBVUxUX0JJTkFSWV9QQVRIUydd IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJE RUZBVUxUX0JJTkFSWV9QQVRIUyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0 KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNyZWF0ZV9iYWNrdXAoc2VsZik6CisgICAg ICAgIHVybCA9IHNlbGYuYmFja3VwX29wdGlvbnNbJ3VybCddLmZvcm1hdChzZWxmLnNlcnZlcl9p ZCkKKyAgICAgICAgam9iX2lkID0gYmFja3VwX3V0aWxzLmNyZWF0ZV9iYWNrdXBfam9iKHNlbGYu dGVzdGVyLCB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydwYXJhbXMnXSkKKyAgICAgICAgYmFja3VwX3V0aWxz LnJ1bl9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCBqb2JfaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydleHBlY3RlZF9wYXJhbXMnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4sIHNlbGYu YXNzZXJ0Tm90SW4pCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9u YW1lID0gJycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2 ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91 dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgZGJfaWQg PSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNlbGYucGFyYW1zWydkYXRhYmFz ZSddKQorCisgICAgICAgIHNlbGYuY3JlYXRlX2JhY2t1cCgpCisgICAgICAgIHVybCA9IHNlbGYu dXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgcmVzdG9y ZSBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtcyks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwv anNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAy MDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVj b2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pv Yl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAg aWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgIyBDaGVjayB0 aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEgPSBzZWxmLnRlc3Rlci5nZXQo Jy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICByYW5kb20ucmFu ZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25z ZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHByb2Nlc3NfbGlzdCA9IGpzb24ubG9h ZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICBpZiBsZW4o cHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBd OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKKyAg ICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgcHJpbnQocHJvY2Vzc19saXN0WzBdKQorCisg ICAgICAgIGFzc2VydCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAg ICBhc3NlcnQgJ3N0aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0ICdleGl0 X2NvZGUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgcHJvY2Vzc19saXN0WzBd WydleGl0X2NvZGUnXSBpbiBzZWxmLmV4cGVjdGVkX2V4aXRfY29kZQorCisgICAgICAgIGlmIHNl bGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0 ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcHQsIHByb2Nlc3Nf bGlzdFswXVsnZGV0YWlscyddKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0 czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6Cisg ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0 YWlscyddKQorCisgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAgICAgICBw X2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1h dCgKKyAgICAgICAgICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAg ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAy MDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KCcv bWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189Jy5mb3JtYXQoCisgICAgICAgICAgICBqb2Jf aWQsIDAsIDAsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICApCisgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBw X2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcp KQorCisgICAgICAgICMgUmV0cmlldmUgdGhlIHJlc3RvcmUgam9iIHByb2Nlc3MgbG9ncworICAg ICAgICBjbnQgPSAwCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBvdXQsIGVyciwgc3Rh dHVzID0gUmVzdG9yZUpvYlRlc3QuZ2V0X3BhcmFtcyhwX2RldGFpbHNfZGF0YSkKKyAgICAgICAg ICAgIGlmIHN0YXR1cyBvciBjbnQgPj0gMTA6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAg ICAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgICAgICcv bWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAg ICAgICAgIGpvYl9pZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAg ICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9k ZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICBjbnQgKz0gMQorICAg ICAgICAgICAgdGltZS5zbGVlcCgxKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGpvYiBpcyBjb21w bGV0ZS4KKyAgICAgICAgcmVzdG9yZV9hY2sgPSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJv Y2Vzcy97MH0nLmZvcm1hdChqb2JfaWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN0 b3JlX2Fjay5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXN0b3JlX2Fja19yZXMgPSBqc29u LmxvYWRzKHJlc3RvcmVfYWNrLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHJlc3RvcmVfYWNrX3Jlc1snc3VjY2VzcyddLCAxKQorCisgICAgQHN0YXRp Y21ldGhvZAorICAgIGRlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgICAgICBvdXQgPSAwCisgICAg ICAgIG91dF9kb25lID0gRmFsc2UKKyAgICAgICAgZXJyID0gMAorICAgICAgICBlcnJfZG9uZSA9 IEZhbHNlCisgICAgICAgIGlmICdvdXQnIGluIGRhdGE6CisgICAgICAgICAgICBvdXQgPSBkYXRh WydvdXQnXSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBp biBkYXRhWydvdXQnXToKKyAgICAgICAgICAgICAgICBvdXRfZG9uZSA9IGRhdGFbJ291dCddWydk b25lJ10KKworICAgICAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICAgICAgZXJyID0gZGF0 YVsnZXJyJ10gYW5kIGRhdGFbJ2VyciddWydwb3MnXQorCisgICAgICAgICAgICBpZiAnZG9uZScg aW4gZGF0YVsnZXJyJ106CisgICAgICAgICAgICAgICAgZXJyX2RvbmUgPSBkYXRhWydlcnInXVsn ZG9uZSddCisKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyLCAob3V0X2RvbmUgYW5kIGVycl9kb25l KQorCisgICAgZGVmIGFmdGVyKHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0 X2RiX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAg ICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2Ri X3Bhc3N3b3JkJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2Rl J10KKyAgICAgICAgKQorICAgICAgICB1dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHNl bGYucGFyYW1zWydkYXRhYmFzZSddKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVz dG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkgYi93ZWIvcGdh ZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9jcmVhdGVfam9iX3VuaXRfdGVz dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2YzMTVmCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVf Y3JlYXRlX2pvYl91bml0X3Rlc3QucHkKQEAgLTAsMCArMSwzMTMgQEAKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJv bSBwZ2FkbWluLnRvb2xzLnJlc3RvcmUgaW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRt aW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGls cyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBz ZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0 YWJhc2VfdXRpbHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1v Y2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2Nr IGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgUmVzdG9yZUNyZWF0ZUpvYlRlc3Qo QmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIFJlc3RvcmVDcmVhdGVKb2IgY2xh c3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3 aXRoIGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNz X3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScs CisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jl c3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAg ICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisg ICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10s CisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9 J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9q b2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAor ICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBl Y3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJl c3RvcmUgb2JqZWN0IHdpdGggdGhlIHNlY3Rpb25zIG9wdGlvbnMnLAorICAgICAgICAgZGljdCgK KyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEs CisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAg ICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisg ICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJm aWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMn CisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9 J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIG5vX29mX2pvYnM9JzInLAorICAgICAgICAgICAg ICAgICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkYXRh PVRydWUsCisgICAgICAgICAgICAgICAgIHByZV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAg IHBvc3RfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgb25seV9zY2hlbWE9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIFBsZWFzZSBpbmNsdWRl IHNlY3Rpb25zIGRhdGEgaGVyZSwgcmlnaHQgbm93IHRoaXMgaXMgYSBidWcKKyAgICAgICAgICAg ICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWpvYnMnLCAnMiddLAorICAgICAg ICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICAjIEJlbG93IG9w dGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgb25jZSB3ZSBmaXggdGhlIGlzc3VlICMzMzY4CisgICAg ICAgICAgICAgIyBub3RfZXhwZWN0ZWRfY21kX29wdHM9WyctLWRhdGEtb25seScsICctLXNjaGVt YS1vbmx5J10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSB0aGUgb2JqZWN0IHdpdGggVHlwZSBv ZiBvYmplY3RzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0 X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxl JywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBu b19vZl9qb2JzPScyJywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAg ICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgb25seV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAg IG9ubHlfc2NoZW1hPVRydWUsCisgICAgICAgICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZGF0YS1vbmx5J10sCisg ICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICMgQmVs b3cgb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBvbmNlIHdlIGZpeCB0aGUgaXNzdWUgIzMzNjgK KyAgICAgICAgICAgICAjIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tc2NoZW1hLW9ubHknLCAn LS1uby1vd25lciddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0s CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggb3B0aW9u IC0gRG8gbm90IHNhdmUnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAg ICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNl PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3Jl X2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAg ICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAg ICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRuc19v d25lcj1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfcHJpdmlsZWdlPVRydWUsCisgICAgICAg ICAgICAgICAgIGRuc190YWJsZXNwYWNlPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0 YT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2Iv ezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS1uby1wcml2aWxlZ2VzJyB0byB0aGUgZXhwZWN0 ZWRfY21kIG9uY2UgIzMzNjMgZml4ZWQKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b Jy0tbm8tb3duZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby10YWJs ZXNwYWNlcyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAg ICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAg ICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggb3B0aW9uIC0gUXVlcmllcycsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAg ICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9z dCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZv cm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGNsZWFuPVRy dWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAg ICAgICAgICAgICAgIHNpbmdsZV90cmFuc2FjdGlvbj1UcnVlLAorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3Rl ZF9jbWRfb3B0cz1bJy0tY3JlYXRlJywgJy0tY2xlYW4nLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1zaW5nbGUtdHJhbnNhY3Rpb24nXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9w dGlvbiAtIERpc2JhbGUnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAg ICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0n cG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAg ICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2Zp bGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAg ICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAor ICAgICAgICAgICAgICAgICBkaXNhYmxlX3RyaWdnZXI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg bm9fZGF0YV9mYWlsX3RhYmxlPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPUZh bHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0n LAorICAgICAgICAgICAgICMgQWRkICctLW5vLWRhdGEtZm9yLWZhaWxlZC10YWJsZXMnIGludG8K KyAgICAgICAgICAgICAjIGV4cGVjdGVkX2NtZF9vcHRzIG9uY2UgIzMzNjMgZml4ZWQKKyAgICAg ICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tZGlzYWJsZS10cmlnZ2VycyddLAorICAgICAg ICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9l eGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUg b2JqZWN0IHdpdGggb3B0aW9uIC0gTWlzY2VsbGFuZW91cycsCisgICAgICAgICBkaWN0KAorICAg ICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAg ICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAg ICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0 ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg ZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9t JywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hl bWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZV9zZXRfc2Vzc2lvbl9hdXRo PVRydWUsCisgICAgICAgICAgICAgICAgIGV4aXRfb25fZXJyb3I9VHJ1ZSwKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAg IyBBZGQgJy0tdXNlX3NldF9zZXNzaW9uX2F1dGgnIGludG8KKyAgICAgICAgICAgICAjIGV4cGVj dGVkX2NtZF9vcHRzIG9uY2UgIzMzNjMgZml4ZWQKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRf b3B0cz1bJy0tZXhpdC1vbi1lcnJvciddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRf b3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAg ICAgICApKSwKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYu c2VydmVyWydERUZBVUxUX0JJTkFSWV9QQVRIUyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm LnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJERUZBVUxUX0JJTkFSWV9QQVRIUyBpcyBub3Qg c2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxm LnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAg QHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMucmVzdG9yZS5jdXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29s cy5yZXN0b3JlLlJlc3RvcmVNZXNzYWdlJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVz dG9yZS5maWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMucmVzdG9yZS5CYXRjaFByb2Nlc3MnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGJh dGNoX3Byb2Nlc3NfbW9jaywgZmlsZW5hbWVfbW9jaywKKyAgICAgICAgICAgICAgICByZXN0b3Jl X21lc3NhZ2VfbW9jaywgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAg Y2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu YW1lLCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYubmFt ZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAg ICAgc2VsZi5wb3J0ID0gcG9ydAorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAg ICAgICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQorCisgICAgICAgIHNlbGYuZGJfbmFt ZSA9ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVy Il1bLTFdWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIo c2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVl cnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1 cm5fdmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGZpbGVuYW1lX21vY2sucmV0dXJuX3ZhbHVl ID0gc2VsZi5wYXJhbXNbJ2ZpbGUnXQorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zZXRf ZW52X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVl CisgICAgICAgICkKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNNb2Nr KAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorCisgICAgICAgIHNl cnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNl cnZlcl9pZCkKKyAgICAgICAgaWYgc2VydmVyX3Jlc3BvbnNlWyJpbmZvIl0gPT0gIlNlcnZlciBj b25uZWN0ZWQuIjoKKyAgICAgICAgICAgIGRiX293bmVyID0gc2VydmVyX3Jlc3BvbnNlWydkYXRh J11bJ3VzZXInXVsnbmFtZSddCisgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhYmFzZV91dGls cy5nZXRfZGJfZGF0YShkYl9vd25lcikKKyAgICAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYu ZGF0YVsnbmFtZSddCisKKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVy X2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSByZXN0b3JlIGpvYgorICAgICAgICByZXNwb25z ZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcG9uc2Vf ZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAg IGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAgICBhc3Nl cnQgcmVzdG9yZV9tZXNzYWdlX21vY2suY2FsbGVkCisgICAgICAgIGFzc2VydCBiYXRjaF9wcm9j ZXNzX21vY2suY2FsbGVkCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAg ICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAg ICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisgICAgICAgICAg ICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncydd CisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0 czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6Cisg ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigKKyAgICAgICAgICAgICAgICAgICAgb3B0 LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3Rb MF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1p bi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiM2UwOWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9tZXNzYWdlLnB5CkBAIC0w LDAgKzEsODUgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20g cGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBSZXN0b3JlTWVzc2FnZQorZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCitpZiBzeXMudmVyc2lvbl9p bmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJv bSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2NsYXNzIFJlc3RvcmVNZXNzYWdlVGVz dChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgUmVzdG9yZU1lc3NhZ2UgY2xh c3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCcs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIGFy Z3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAg ICAncmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAg ICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0 JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0JywKKyAgICAgICAgICAgICAgICAgICAgICct LXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRh YmFzZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnCisgICAgICAgICAgICAgICAg IF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3RfcGF0aC9wZ19yZXN0b3JlIgorICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJSZXN0b3JpbmcgYmFja3VwIG9u IHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfcmVzdG9yZV9z ZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFp bHNfY21kPScvdGVzdF9wYXRoL3BnX3Jlc3RvcmUgLS1maWxlICcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnInJlc3RvcmVfZmlsZSIgLS1ob3N0ICJsb2NhbGhvc3QiJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1l ICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBh c3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKworICAgICAgICAgKSkKKyAgICBdCisKKyAg ICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdh ZG1pbi50b29scy5yZXN0b3JlLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwg Y3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgY3VycmVudF91c2VyX21v Y2sgPSAxCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0KToKKyAgICAgICAgICAgICAgICBzZWxm Lm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAg ICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZl cihzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSkKKyAgICAgICAgbW9ja19yZXN1 bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1v Y2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgcmVzdG9y ZV9vYmogPSBSZXN0b3JlTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydz aWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAg ICAgKnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hl Y2sgdGhlIGV4cGVjdGVkIG1lc3NhZ2UgcmV0dXJuZWQKKyAgICAgICAgYXNzZXJ0IHJlc3RvcmVf b2JqLm1lc3NhZ2UgPT0gc2VsZi5leHRlY3RlZF9tc2cKKworICAgICAgICAjIENoZWNrIHRoZSBj b21tYW5kCisgICAgICAgIG9ial9kZXRhaWxzID0gcmVzdG9yZV9vYmouZGV0YWlscyhzZWxmLmNs YXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddKQorICAgICAgICBzZWxmLmFzc2VydEluKHNl bGYuZXhwZXRjZWRfZGV0YWlsc19jbWQsIG9ial9kZXRhaWxzKQpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weSBiL3dlYi9yZWdyZXNzaW9u L3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKaW5kZXggM2U1MTdiNi4uZDYxYzVkOCAx MDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5w eQorKysgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CkBA IC0yMSw2ICsyMSw4IEBAIGltcG9ydCBjb25maWcKIGltcG9ydCByZWdyZXNzaW9uCiBmcm9tIHJl Z3Jlc3Npb24gaW1wb3J0IHRlc3Rfc2V0dXAKIAorZnJvbSBwZ2FkbWluLnV0aWxzLnByZWZlcmVu Y2VzIGltcG9ydCBQcmVmZXJlbmNlcworCiBTRVJWRVJfR1JPVVAgPSB0ZXN0X3NldHVwLmNvbmZp Z19kYXRhWydzZXJ2ZXJfZ3JvdXAnXQogZmlsZV9uYW1lID0gb3MucGF0aC5yZWFscGF0aChfX2Zp bGVfXykKIApAQCAtODYsNyArODgsOCBAQCBkZWYgZ2V0X2NvbmZpZ19kYXRhKCk6CiAgICAgICAg ICAgICAgICAgImRiX3Bhc3N3b3JkIjogc3J2WydkYl9wYXNzd29yZCddLAogICAgICAgICAgICAg ICAgICJyb2xlIjogIiIsCiAgICAgICAgICAgICAgICAgInNzbG1vZGUiOiBzcnZbJ3NzbG1vZGUn XSwKLSAgICAgICAgICAgICAgICAidGFibGVzcGFjZV9wYXRoIjogc3J2LmdldCgndGFibGVzcGFj ZV9wYXRoJywgTm9uZSkKKyAgICAgICAgICAgICAgICAidGFibGVzcGFjZV9wYXRoIjogc3J2Lmdl dCgndGFibGVzcGFjZV9wYXRoJywgTm9uZSksCisgICAgICAgICAgICAgICAgIkRFRkFVTFRfQklO QVJZX1BBVEhTIjogc3J2LmdldCgnREVGQVVMVF9CSU5BUllfUEFUSFMnLCBOb25lKQogICAgICAg ICAgICAgfQogICAgICAgICAgICAgaWYgJ2RiX3R5cGUnIGluIHNydjoKICAgICAgICAgICAgICAg ICBkYXRhWydkYl90eXBlJ10gPSBzcnZbJ2RiX3R5cGUnXQpAQCAtNDQ1LDYgKzQ0OCwxMyBAQCBk ZWYgZGVsZXRlX3NlcnZlcl93aXRoX2FwaSh0ZXN0ZXIsIHNpZCk6CiAgICAgICAgIHVybCA9ICcv YnJvd3Nlci9zZXJ2ZXIvb2JqLycgKyBzdHIoU0VSVkVSX0dST1VQKSArICIvIgogICAgICAgICAj IENhbGwgQVBJIHRvIGRlbGV0ZSB0aGUgc2VydmVyCiAgICAgICAgIHJlc3BvbnNlID0gdGVzdGVy LmRlbGV0ZSh1cmwgKyBzdHIoc2lkKSkKKworICAgICAgICBjbnQgPSAwCisgICAgICAgIGZvciBz IGluIHJlZ3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsic2VydmVyIl06CisgICAgICAgICAgICBp ZiBzWydzZXJ2ZXJfaWQnXSA9PSBpbnQoc2lkKToKKyAgICAgICAgICAgICAgICBkZWwgcmVncmVz c2lvbi5wYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVtjbnRdCisgICAgICAgICAgICBjbnQgKz0g MQorCiAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Yyhm aWxlPXN5cy5zdGRlcnIpCiAKQEAgLTU5Niw2ICs2MDYsNDcgQEAgZGVmIGdldF9kYl9zZXJ2ZXIo c2lkKToKICAgICByZXR1cm4gY29ubmVjdGlvbgogCiAKK2RlZiBzZXRfcHJlZmVyZW5jZShkZWZh dWx0X2JpbmFyeV9wYXRoKToKKyAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KGNvbmZpZy5URVNU X1NRTElURV9QQVRIKQorICAgIGN1ciA9IGNvbm4uY3Vyc29yKCkKKworICAgIHBlcmYgPSBQcmVm ZXJlbmNlcy5tb2R1bGUoJ3BhdGhzJykKKyAgICBwZ19wYXRoX3ByZWYgPSBwZXJmLnByZWZlcmVu Y2UoJ3BnX2Jpbl9kaXInKQorCisgICAgdXNlcl9wcmVmID0gY3VyLmV4ZWN1dGUoCisgICAgICAg ICdTRUxFQ1QgcGlkLCB1aWQgRlJPTSB1c2VyX3ByZWZlcmVuY2VzIHdoZXJlIHBpZD0lcycgJSBw Z19wYXRoX3ByZWYucGlkCisgICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRjaG9u ZSgpCisKKyAgICBpZiB1c2VyX3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUgdXNl cl9wcmVmZXJlbmNlcyBTRVQgdmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8nLAorICAgICAgICAgICAg ICAgICAgICAoZGVmYXVsdF9iaW5hcnlfcGF0aFsncGcnXSwgcGdfcGF0aF9wcmVmLnBpZCkpCisg ICAgZWxzZToKKyAgICAgICAgcGdfcHJlZl9kZXRhaWxzID0gKHBnX3BhdGhfcHJlZi5waWQsIDEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2JpbmFyeV9wYXRoWydwZyddKQor ICAgICAgICBjdXIuZXhlY3V0ZSgnSU5TRVJUIElOVE8gdXNlcl9wcmVmZXJlbmNlcyhwaWQsIHVp ZCwgdmFsdWUpJworICAgICAgICAgICAgICAgICAgICAnIFZBTFVFUyAoPyw/LD8pJywgcGdfcHJl Zl9kZXRhaWxzKQorCisgICAgcHBhc19wYXRoX3ByZWYgPSBwZXJmLnByZWZlcmVuY2UoJ3BwYXNf YmluX2RpcicpCisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAgICAgJ1NFTEVD VCBwaWQsIHVpZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAlCisgICAgICAg IHBwYXNfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3ByZWYgPSB1c2VyX3ByZWYuZmV0 Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBjdXIuZXhlY3V0ZSgnVVBEQVRF IHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBwaWQgPSA/ICcsCisgICAgICAg ICAgICAgICAgICAgIChkZWZhdWx0X2JpbmFyeV9wYXRoWydwcGFzJ10sIHBwYXNfcGF0aF9wcmVm LnBpZCkpCisgICAgZWxzZToKKyAgICAgICAgcHBhc19wcmVmX2RldGFpbHMgPSAocHBhc19wYXRo X3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2JpbmFy eV9wYXRoWydwcGFzJ10pCisgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyB1c2VyX3By ZWZlcmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisgICAgICAgICAgICAgICAgICAgICcgVkFMVUVT ICg/LD8sPyknLCBwcGFzX3ByZWZfZGV0YWlscykKKworICAgIGNvbm4uY29tbWl0KCkKKworCiBk ZWYgcmVtb3ZlX2RiX2ZpbGUoKToKICAgICAiIiJUaGlzIGZ1bmN0aW9uIHVzZSB0byByZW1vdmUg U1FMaXRlIERCIGZpbGUiIiIKICAgICBpZiBvcy5wYXRoLmlzZmlsZShjb25maWcuVEVTVF9TUUxJ VEVfUEFUSCk6CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weSBiL3dlYi9y ZWdyZXNzaW9uL3J1bnRlc3RzLnB5CmluZGV4IGQ3ODY2OTIuLjIxZTRlMzUgMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3Rz LnB5CkBAIC0xMTQsNiArMTE0LDkgQEAgdGVzdF9jbGllbnQgPSBhcHAudGVzdF9jbGllbnQoKQog ZHJpdmVyID0gTm9uZQogYXBwX3N0YXJ0ZXIgPSBOb25lCiBoYW5kbGVfY2xlYW51cCA9IE5vbmUK K2FwcC5QR0FETUlOX1JVTlRJTUUgPSBUcnVlCitpZiBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1 ZToKKyAgICBhcHAuUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKIAogc2V0YXR0cih1bml0X3Rlc3Qu cmVzdWx0LlRlc3RSZXN1bHQsICJwYXNzZWQiLCBbXSkKIApAQCAtMjM0LDcgKzIzNyw2IEBAIGRl ZiBnZXRfdGVzdF9tb2R1bGVzKGFyZ3VtZW50cyk6CiAgICAgIyBTb3J0IG1vZHVsZSBsaXN0IHNv IHRoYXQgdGVzdCBzdWl0ZSBleGVjdXRlcyB0aGUgdGVzdCBjYXNlcyBzZXF1ZW50aWFsbHkKICAg ICBtb2R1bGVfbGlzdCA9IFRlc3RzR2VuZXJhdG9yUmVnaXN0cnkucmVnaXN0cnkuaXRlbXMoKQog ICAgIG1vZHVsZV9saXN0ID0gc29ydGVkKG1vZHVsZV9saXN0LCBrZXk9bGFtYmRhIG1vZHVsZV90 dXBsZTogbW9kdWxlX3R1cGxlWzBdKQotCiAgICAgcmV0dXJuIG1vZHVsZV9saXN0CiAKIApAQCAt MzkzLDYgKzM5NSwxNSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICAgICAg IyBDcmVhdGUgdGVzdCBzZXJ2ZXIKICAgICAgICAgICAgIHNlcnZlcl9pbmZvcm1hdGlvbiA9IHRl c3RfdXRpbHMuY3JlYXRlX3BhcmVudF9zZXJ2ZXJfbm9kZShzZXJ2ZXIpCiAKKyAgICAgICAgICAg IGlmIHNlcnZlclsnREVGQVVMVF9CSU5BUllfUEFUSFMnXSBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgICAgICB0ZXN0X3V0aWxzLnNldF9wcmVmZXJlbmNlKHNlcnZlclsnREVGQVVMVF9CSU5BUllf UEFUSFMnXSkKKworICAgICAgICAgICAgICAgIGNvbmZpZy5ERUZBVUxUX0JJTkFSWV9QQVRIUyA9 IHsKKyAgICAgICAgICAgICAgICAgICAgInBnIjogc3RyKHNlcnZlclsnREVGQVVMVF9CSU5BUllf UEFUSFMnXVsncGcnXSksCisgICAgICAgICAgICAgICAgICAgICJwcGFzIjogc3RyKHNlcnZlclsn REVGQVVMVF9CSU5BUllfUEFUSFMnXVsncHBhcyddKSwKKyAgICAgICAgICAgICAgICAgICAgImdw ZGIiOiAiIgorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3VpdGUgPSBnZXRfc3Vp dGUodGVzdF9tb2R1bGVfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZl ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2xpZW50LApkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbiBiL3dlYi9yZWdyZXNzaW9uL3Rl c3RfY29uZmlnLmpzb24uaW4KaW5kZXggZWJjMTQ2Ni4uY2I2Yjk4YyAxMDA2NDQKLS0tIGEvd2Vi L3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgorKysgYi93ZWIvcmVncmVzc2lvbi90ZXN0 X2NvbmZpZy5qc29uLmluCkBAIC0yMyw3ICsyMywxMiBAQAogICAgICAgIm1haW50ZW5hbmNlX2Ri IjogInBvc3RncmVzIiwKICAgICAgICJzc2xtb2RlIjogInByZWZlciIsCiAgICAgICAidGFibGVz cGFjZV9wYXRoIjogIiIsCi0gICAgICAiZW5hYmxlZCI6IHRydWUKKyAgICAgICJlbmFibGVkIjog dHJ1ZSwKKyAgICAgICJERUZBVUxUX0JJTkFSWV9QQVRIUyI6IHsKKyAgICAgICAgInBnIjogIi9v cHQvUG9zdGdyZVNRTC85LjQvYmluLyIsCisgICAgICAgICJwcGFzIjogIi9vcHQvZWRiL2FzMTAv YmluLyIsCisgICAgICAgICJncGRiIjogIiIKKyAgICAgIH0KICAgICB9CiAgIF0sCiAgICJzZXJ2 ZXJfdXBkYXRlX2RhdGEiOiBbCg== --000000000000cc947c056d42fdb3--