Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vBYCd-000ReJ-2V for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Oct 2025 12:44:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vBYCb-00GF8d-S4 for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Oct 2025 12:44:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vBYCa-00GF88-Mg for pgsql-hackers@lists.postgresql.org; Wed, 22 Oct 2025 12:44:28 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vBYCQ-0039xi-39 for pgsql-hackers@postgresql.org; Wed, 22 Oct 2025 12:44:26 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-b4c89df6145so1117597166b.3 for ; Wed, 22 Oct 2025 05:44:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1761137057; x=1761741857; darn=postgresql.org; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:from:to:cc:subject:date:message-id:reply-to; bh=YtCpcEUYeCygNmMzMoANqJX7mvTRGtFpE/20UItYgG8=; b=kCRQu0MIeC/lg6E8YaYTNvUXoK+qIuHuM3lIGSwz+1F2moboOMfEi5jssPmBHm4sWD YnITZa32D9EEg+PngehVyNPGODzrDbb8ANvZuYxONecVgf4TnuqHy9mQGZAfvT+9CIVl VmaoTNmxrb9wJaik+31AwuiHwHKAblD9b1nyo9Rmwi2U5NJDl6UYznGRTrajpMe7v2aw EwJzH93bKYyw0nZw3ZPtpPKMgnPQu2u+AmUbTSPUu8pzmO2GRsOTCrAhzN+orsRPOFYo MyVoUBGYuekqUKf1Yw6T3DEmb2rYAjCKSdrznZ3dP0C3bBsmatxeu4sIaEWF1uVfkaZ9 5HlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761137057; x=1761741857; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YtCpcEUYeCygNmMzMoANqJX7mvTRGtFpE/20UItYgG8=; b=FsJV48OeW3Kl03X97TcMAejQdTVUT3IpgXlBu/DIx9/3aJiRVZNSSYRbs9uT6CJVEd brQIyHxfcKvC5nj1kabmoY8P8PVHk5EJma7EO8yt6XA0lhtxzUfMOsW3dT9R2Q2G1fA/ HAFxxcicolR+0z5G+UD/nFyL4yaHdC7sOgemAsnWfkQVGQg+W3xwoM8dFWdlKdgJiMWD 2TCmaI3GrgJPNcFeoyxil8B+yryiX0C660qYe6JbEe45BG6TR/ORuCFSqG/SBikcAgBk LlqYNRS3iQ4MJEfKhC5ki92pP7tYvj1JSE11J8RZPG/fhyLm7DCcf9FgZfShQKVNdfYG 45Xg== X-Gm-Message-State: AOJu0YwhhrwoMrytcnp8lpXUP3zzgiTwURVDkKamF20bVqCEKpGum8f6 17L6s7foJFGzlG3Z9WhHxy2aeCYkkiM/RtOyjIW6mqA8PfO4ApNrtPdMvLSDMn5YFwo= X-Gm-Gg: ASbGnct+TU0UlbXZ8uZkIoHArxF/zhiz/p5F988PuuOSnPh1+bFgGa6n8CvPr/FJJiS rBEmcgC6qgyfzMj48SgAuME0PkFWJT5XSGOnByX+tKW1CeNVWowGR+Cdz/NmhW0i0CAnQTG/Raf dOyVzOVV7CM00crf2329fB7qSn6k8RwHheMImWG1Kf3Rxk4cWwsxvu8hx3UoH2TKB9g8ovxQg1q TLKGNFnrURwHyDWCjegT5tJaHBeJ4KScniTuvgXByGbTwXPQocTW4WOw6IPiw6ZgB5qTyW6ZvO/ /yhGZEPQKNbsG0MMUoW28oW1D9pvpPc4LXxp6mLeVEALBFyYnpyui71ZyLNu2ZfuxwkiSjlQ1u2 ttkN6IkeO2qHGAkWrZOO3NAJAplYCC0+cOI+ltXCrZjIpY7pSAbk86jt+sJs5bVAO3dSnh2OloJ qzf7TmtX1yIHyrgOtj8oj5UGyx2nsymSlRD8A= X-Google-Smtp-Source: AGHT+IHS+yjjNAACFNUkalTIZJb4cIr2bkVEVUbwDCbMW+x9y7zVTZtZIE4XcfS7vkkd0SpyCPhmVw== X-Received: by 2002:a17:907:7213:b0:b50:b539:8be6 with SMTP id a640c23a62f3a-b6475123617mr2610131566b.43.1761137056725; Wed, 22 Oct 2025 05:44:16 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b65eb725d80sm1339910166b.67.2025.10.22.05.44.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Oct 2025 05:44:15 -0700 (PDT) Content-Type: multipart/mixed; boundary=5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Date: Wed, 22 Oct 2025 14:44:15 +0200 Message-Id: Cc: "PostgreSQL Hackers" , "Robert Haas" , "Daniel Gustafsson" , "Andres Freund" , "Tom Lane" , "Peter Eisentraut" , "Nazir Bilal Yavuz" Subject: Re: RFC: adding pytest as a supported test framework To: "Jacob Champion" From: "Jelte Fennema-Nio" MIME-Version: 1.0 References: <20240610200411.byj6sv2vpgol6wcf@awork3.anarazel.de> <20240612155040.u6cvatdb5tiwcxci@awork3.anarazel.de> <2302192.1718380169@sss.pgh.pa.us> In-Reply-To: X-TUID: WNL8qb6gf07V List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Type: multipart/alternative; boundary=e29f4a6929ff978dd380f68d404e4a2b9528d51102fec4e979f398dd3985 --e29f4a6929ff978dd380f68d404e4a2b9528d51102fec4e979f398dd3985 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Mon, 22 Sept 2025 at 22:30, Jacob Champion wrote: > Done this way in v2-0002 Okay I finally managed to do some testing of this patchset while working on a patchset of mine where I'm adding a GoAway message to the protocol (should be ready to be published soon) First of all: THANK YOU! It's a great base to start from and I hope we can relatively soon have something merged, that we can gradually improve. I had some problems using it for my own tests though. The primary reasons for that were: 1. It was missing functionality to send queries and get results. 2. A lot of the fixtures I wanted to use were located in the ssl tests directory instead of the shared fixtures module. 3. When running pytest manually I had to configure LD_LIBRARY_PATH So here's your patchset with an additional commit on top that does a bunch of refactoring/renaming and adding features. I hope you like it. I tried to make the most common actions easy to do. The primary features it adds are: - A `sql` method on `PGconn`: It takes a query and returns the results as native python types. - A `conn` fixture: Which is a libpq based connection to the default Postgres server. - Use the `pg_config` binary to find the libdir and bindir (can be overridden by setting PG_CONFIG). Otherwise I had to use LD_LIBRARY_PATH when running pytest manually. The refactoring it does: - Rename `pg_server` fixture to `pg` since it'll likely be one of the most commonly used ones. - Rename `pg` module to `pypg` to avoid naming conflict/shadowing problems with the newly renamed `pg` fixture - Move class definitions outside of fixtures to separate modules (either in the `pypg` module or the new `libpq` module) - Move all "general" fixtures to the `pypg.fixtures` module, instead of having them be defined in the ssl module. --e29f4a6929ff978dd380f68d404e4a2b9528d51102fec4e979f398dd3985-- --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0001-meson-Include-TAP-tests-in-the-configuration-summ.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0001-meson-Include-TAP-tests-in-the-configuration-summ.patch RnJvbSA2YmU5YzExZTE0YTdjYmE2ODc3ZjZkOGMwMzk3Y2JiOTRmYjYyZjZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCA1IFNlcCAyMDI1IDE2OjM5OjA4IC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MyAwMS8xMF0gbWVzb246IEluY2x1ZGUgVEFQIHRlc3RzIGluIHRoZSBjb25maWd1 cmF0aW9uCiBzdW1tYXJ5CgouLi50byBtYWtlIGl0IG9idmlvdXMgd2hlbiB0aGV5J3ZlIGJlZW4g ZW5hYmxlZC4gcHJvdmUgaXMgYWRkZWQgdG8gdGhlCmV4ZWN1dGFibGVzIGxpc3QgZm9yIGdvb2Qg bWVhc3VyZS4KClRPRE86IGRvZXMgQXV0b2NvbmYgbmVlZCBzb21ldGhpbmcgc2ltaWxhcj8KClBl ciBjb21wbGFpbnQgYnkgUGV0ZXIgRWlzZW50cmF1dC4KLS0tCiBtZXNvbi5idWlsZCB8IDkgKysr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbWVz b24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCAzOTU0MTZhNjA2MC4uMzdlZDY4Y2VlYjQgMTAw NjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0zOTUyLDYgKzM5NTIs NyBAQCBzdW1tYXJ5KAogICAgICdiaXNvbic6ICdAMEAgQDFAJy5mb3JtYXQoYmlzb24uZnVsbF9w YXRoKCksIGJpc29uX3ZlcnNpb24pLAogICAgICdkdHJhY2UnOiBkdHJhY2UsCiAgICAgJ2ZsZXgn OiAnQDBAIEAxQCcuZm9ybWF0KGZsZXguZnVsbF9wYXRoKCksIGZsZXhfdmVyc2lvbiksCisgICAg J3Byb3ZlJzogcHJvdmUsCiAgIH0sCiAgIHNlY3Rpb246ICdQcm9ncmFtcycsCiApCkBAIC0zOTg4 LDMgKzM5ODksMTEgQEAgc3VtbWFyeSgKICAgc2VjdGlvbjogJ0V4dGVybmFsIGxpYnJhcmllcycs CiAgIGxpc3Rfc2VwOiAnICcsCiApCisKK3N1bW1hcnkoCisgIHsKKyAgICAndGFwJzogdGFwX3Rl c3RzX2VuYWJsZWQsCisgIH0sCisgIHNlY3Rpb246ICdPdGhlciBmZWF0dXJlcycsCisgIGxpc3Rf c2VwOiAnICcsCispCi0tIAoyLjUxLjEKCg== --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0002-Add-support-for-pytest-test-suites.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0002-Add-support-for-pytest-test-suites.patch RnJvbSAyYTM1YTg2ZjEwOTE0ZTk1ZmQ2ZTYzZTQyMjRhYjYyYTk3M2E2YTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMyBBdWcgMjAyNSAxMDo1ODo1NiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjMgMDIvMTBdIEFkZCBzdXBwb3J0IGZvciBweXRlc3QgdGVzdCBzdWl0ZXMKClNw ZWNpZnkgLS1lbmFibGUtcHl0ZXN0Ly1EcHl0ZXN0PWVuYWJsZWQgYXQgY29uZmlndXJlIHRpbWUu IFRoaXMKY29udGFpbnMgbm8gUG9zdGdyZXMgdGVzdCBsb2dpYyAtLSBpdCBpcyBqdXN0IGEgInZh bmlsbGEiIHB5dGVzdApza2VsZXRvbi4KCkkndmUgd3JpdHRlbiBhIGN1c3RvbSBwZ3RhcCBvdXRw dXQgcGx1Z2luLCB1c2VkIGJ5IHRoZSBNZXNvbiBtdGVzdApydW5uZXIsIHRvIGZ1bGx5IGNvbnRy b2wgd2hhdCB3ZSBzZWUgZHVyaW5nIENJIHRlc3QgZmFpbHVyZXMuIFRoZQpweXRlc3QtdGFwIHBs dWdpbiB3b3VsZCBoYXZlIGJlZW4gcHJlZmVyYWJsZSwgYnV0IGl0J3Mgbm93IGluCm1haW50ZW5h bmNlIG1vZGUsIGFuZCBpdCBoYXMgcHJvYmxlbXMgd2l0aCBhY2NpZGVudGFsbHkgc3VwcHJlc3Np bmcKaW1wb3J0YW50IGNvbGxlY3Rpb24gZmFpbHVyZXMuCgp0ZXN0X3NvbWV0aGluZy5weSBpcyBp bnRlbmRlZCB0byBzaG93IGEgc2FtcGxlIGZhaWx1cmUgaW4gdGhlIENJLgoKVE9ET3M6Ci0gT3Bl bkJTRCBoYXMgYW4gQU5TSS1yZWxhdGVkIHRlcm1pbmFsIGJ1ZywgYnV0IEknbSBub3Qgc3VyZSBp ZiB0aGUgYnVnCiAgaXMgaW4gQ2lycnVzLCB0aGUgaW1hZ2UsIHB5dGVzdCwgUHl0aG9uLCBvciBy ZWFkbGluZS4gVGhlIFRFUk0gZW52dmFyCiAgaXMgdW5zZXQgdG8gd29yayBhcm91bmQgaXQuIElm IHRoaXMgd29ya2Fyb3VuZCBpcyByZW1vdmVkLCBhIGJhZCBBTlNJCiAgZXNjYXBlIGlzIGluc2Vy dGVkIGludG8gdGhlIHBndGFwIG91dHB1dCBhbmQgbXRlc3QgaXMgdW5hYmxlIHRvIHBhcnNlCiAg aXQuCi0gVGhlIENob2NvbGF0ZXkgQ0kgc2V0dXAgaXMgc3VicGFyLiBOZWVkIHRvIGZpbmQgYSB3 YXkgdG8gYmxlc3MgdGhlCiAgZGVwZW5kZW5jaWVzIGluIHVzZSByYXRoZXIgdGhhbiBwdWxsaW5n IGZyb20gcGlwLi4uIG9yIG1heWJlIHRoYXQgd2lsbAogIGJlIGRvbmUgYnkgdGhlIGltYWdlIGJh a2VyLgotLS0KIC5jaXJydXMudGFza3MueW1sICAgICAgICAgICAgICAgICAgICAgfCAgMzggKysr LS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogY29uZmln L2NoZWNrX3B5dGVzdC5weSAgICAgICAgICAgICAgICB8IDE1MCArKysrKysrKysrKysrKysrKysr KwogY29uZmlnL2NvbmZ0ZXN0LnB5ICAgICAgICAgICAgICAgICAgICB8ICAxOCArKysKIGNvbmZp Zy9weXRlc3QtcmVxdWlyZW1lbnRzLnR4dCAgICAgICAgfCAgMjEgKysrCiBjb25maWd1cmUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTA4ICsrKysrKysrKysrKystCiBjb25maWd1cmUu YWMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICsrKy0KIG1lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgOTIgKysrKysrKysrKysrCiBtZXNvbl9vcHRpb25zLnR4 dCAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBweXRlc3QuaW5pICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9NYWtlZmlsZS5nbG9iYWwuaW4gICAgICAgICAgICAg ICAgfCAgMjMgKysrCiBzcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAy ICsKIHNyYy90ZXN0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy90 ZXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcHl0ZXN0 L01ha2VmaWxlICAgICAgICAgICAgICB8ICAyMCArKysKIHNyYy90ZXN0L3B5dGVzdC9SRUFETUUg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkICAgICAg ICAgICB8ICAxNiArKysKIHNyYy90ZXN0L3B5dGVzdC9wbHVnaW5zL3BndGFwLnB5ICAgICAgfCAx OTMgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9z b21ldGhpbmcucHkgfCAgMTcgKysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA3MzYgaW5zZXJ0aW9ucygr KSwgMTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlnL2NoZWNrX3B5dGVz dC5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbmZpZy9jb25mdGVzdC5weQogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbmZpZy9weXRlc3QtcmVxdWlyZW1lbnRzLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHB5dGVzdC5pbmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvUkVBRE1FCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcHl0ZXN0L3BsdWdpbnMvcGd0YXAucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9weXRlc3QvcHl0L3Rlc3Rfc29tZXRoaW5nLnB5CgpkaWZmIC0tZ2l0IGEvLmNpcnJ1cy50YXNr cy55bWwgYi8uY2lycnVzLnRhc2tzLnltbAppbmRleCBlY2E5ZDYyZmMyMi4uODBmOWIzOTRiZDIg MTAwNjQ0Ci0tLSBhLy5jaXJydXMudGFza3MueW1sCisrKyBiLy5jaXJydXMudGFza3MueW1sCkBA IC0yMSw3ICsyMSw4IEBAIGVudjoKIAogICAjIHRhcmdldCB0byB0ZXN0LCBmb3IgYWxsIGJ1dCB3 aW5kb3dzCiAgIENIRUNLOiBjaGVjay13b3JsZCBQUk9WRV9GTEFHUz0kUFJPVkVfRkxBR1MKLSAg Q0hFQ0tGTEFHUzogLU90YXJnZXQKKyAgIyBUT0RPIHdlcmUgd2UgYXZvaWRpbmcgLS1rZWVwLWdv aW5nIG9uIHB1cnBvc2U/CisgIENIRUNLRkxBR1M6IC1PdGFyZ2V0IC0ta2VlcC1nb2luZwogICBQ Uk9WRV9GTEFHUzogLS10aW1lcgogICAjIEJ1aWxkIHRlc3QgZGVwZW5kZW5jaWVzIGFzIHBhcnQg b2YgdGhlIGJ1aWxkIHN0ZXAsIHRvIHNlZSBjb21waWxlcgogICAjIGVycm9ycy93YXJuaW5ncyBp biBvbmUgcGxhY2UuCkBAIC00NCw2ICs0NSw3IEBAIGVudjoKICAgICAtRGxkYXA9ZW5hYmxlZAog ICAgIC1Ec3NsPW9wZW5zc2wKICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAgLURweXRlc3Q9 ZW5hYmxlZAogICAgIC1EcGxwZXJsPWVuYWJsZWQKICAgICAtRHBscHl0aG9uPWVuYWJsZWQKICAg ICAtRGRvY3M9ZW5hYmxlZApAQCAtMjIyLDcgKzIyNCw5IEBAIHRhc2s6CiAgICAgY2hvd24gcm9v dDpwb3N0Z3JlcyAvdG1wL2NvcmVzCiAgICAgc3lzY3RsIGtlcm4uY29yZWZpbGU9Jy90bXAvY29y ZXMvJU4uJVAuY29yZScKICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKLSAg ICAjcGtnIGluc3RhbGwgLXkgLi4uCisgICAgcGtnIGluc3RhbGwgLXkgXAorICAgICAgcHkzMTEt cGFja2FnaW5nIFwKKyAgICAgIHB5MzExLXB5dGVzdAogCiAgICMgTkI6IEludGVudGlvbmFsbHkg YnVpbGQgd2l0aG91dCAtRGxsdm0uIFRoZSBmcmVlYnNkIGltYWdlIHNpemUgaXMgYWxyZWFkeQog ICAjIGxhcmdlIGVub3VnaCB0byBtYWtlIFZNIHN0YXJ0dXAgc2xvdywgYW5kIGV2ZW4gd2l0aG91 dCBsbHZtIGZyZWVic2QKQEAgLTMxMSw3ICszMTUsMTAgQEAgdGFzazoKICAgICAgICAgICAtRHBh bT1lbmFibGVkCiAKICAgICAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8Ci0g ICAgICAgICNwa2dpbiAteSBpbnN0YWxsIC4uLgorICAgICAgICBwa2dpbiAteSBpbnN0YWxsIFwK KyAgICAgICAgICBweTMxMi1wYWNrYWdpbmcgXAorICAgICAgICAgIHB5MzEyLXRlc3QKKyAgICAg ICAgbG4gLXMgL3Vzci9wa2cvYmluL3B5dGVzdC0zLjEyIC91c3IvcGtnL2Jpbi9weXRlc3QKICAg ICAgIDw8OiAqbmV0YnNkX3Rhc2tfdGVtcGxhdGUKIAogICAgIC0gbmFtZTogT3BlbkJTRCAtIE1l c29uCkBAIC0zMjIsNiArMzI5LDcgQEAgdGFzazoKICAgICAgICAgT1NfTkFNRTogb3BlbmJzZAog ICAgICAgICBJTUFHRV9GQU1JTFk6IHBnLWNpLW9wZW5ic2QtcG9zdGdyZXMKICAgICAgICAgUEtH Q09ORklHX1BBVEg6ICcvdXNyL2xpYi9wa2djb25maWc6L3Vzci9sb2NhbC9saWIvcGtnY29uZmln JworICAgICAgICBURVJNOiAjIFRPRE8gd2h5IGRvZXMgcHl0ZXN0IHByaW50IEFOU0kgZXNjYXBl cyBvbiBPcGVuQlNEPwogCiAgICAgICAgIE1FU09OX0ZFQVRVUkVTOiA+LQogICAgICAgICAgIC1E YnNkX2F1dGg9ZW5hYmxlZApAQCAtMzMwLDcgKzMzOCw5IEBAIHRhc2s6CiAgICAgICAgICAgLUR1 dWlkPWUyZnMKIAogICAgICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKLSAg ICAgICAgI3BrZ19hZGQgLUkgLi4uCisgICAgICAgIHBrZ19hZGQgLUkgXAorICAgICAgICAgIHB5 My10ZXN0IFwKKyAgICAgICAgICBweTMtcGFja2FnaW5nCiAgICAgICAjIEFsd2F5cyBjb3JlIGR1 bXAgdG8gJHtDT1JFX0RVTVBfRElSfQogICAgICAgc2V0X2NvcmVfZHVtcF9zY3JpcHQ6IHN5c2N0 bCAtdyBrZXJuLm5vc3VpZGNvcmVkdW1wPTIKICAgICAgIDw8OiAqb3BlbmJzZF90YXNrX3RlbXBs YXRlCkBAIC00ODksOCArNDk5LDEwIEBAIHRhc2s6CiAgICAgRU9GCiAKICAgc2V0dXBfYWRkaXRp b25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKLSAgICAjYXB0LWdldCB1cGRhdGUKLSAgICAjREVCSUFO X0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgLXkgaW5zdGFsbCAuLi4KKyAgICBhcHQt Z2V0IHVwZGF0ZQorICAgIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IC15 IGluc3RhbGwgXAorICAgICAgcHl0aG9uMy1weXRlc3QgXAorICAgICAgcHl0aG9uMy1wYWNrYWdp bmcKIAogICBtYXRyaXg6CiAgICAgIyBTUEVDSUFMOgpAQCAtNTEzLDE0ICs1MjUsMTUgQEAgdGFz azoKICAgICAgICAgc3UgcG9zdGdyZXMgPDwtRU9GCiAgICAgICAgICAgLi9jb25maWd1cmUgXAog ICAgICAgICAgICAgLS1lbmFibGUtY2Fzc2VydCAtLWVuYWJsZS1pbmplY3Rpb24tcG9pbnRzIC0t ZW5hYmxlLWRlYnVnIFwKLSAgICAgICAgICAgIC0tZW5hYmxlLXRhcC10ZXN0cyAtLWVuYWJsZS1u bHMgXAorICAgICAgICAgICAgLS1lbmFibGUtdGFwLXRlc3RzIC0tZW5hYmxlLXB5dGVzdCAtLWVu YWJsZS1ubHMgXAogICAgICAgICAgICAgLS13aXRoLXNlZ3NpemUtYmxvY2tzPTYgXAogICAgICAg ICAgICAgLS13aXRoLWxpYm51bWEgXAogICAgICAgICAgICAgLS13aXRoLWxpYnVyaW5nIFwKICAg ICAgICAgICAgIFwKICAgICAgICAgICAgICR7TElOVVhfQ09ORklHVVJFX0ZFQVRVUkVTfSBcCiAg ICAgICAgICAgICBcCi0gICAgICAgICAgICBDTEFORz0iY2NhY2hlIGNsYW5nLTE2IgorICAgICAg ICAgICAgQ0xBTkc9ImNjYWNoZSBjbGFuZy0xNiIgXAorICAgICAgICAgICAgUFlURVNUPSJlbnYg TERfUFJFTE9BRD0vbGliL3g4Nl82NC1saW51eC1nbnUvbGliYXNhbi5zby44IHB5dGVzdCIKICAg ICAgICAgRU9GCiAgICAgICBidWlsZF9zY3JpcHQ6IHN1IHBvc3RncmVzIC1jICJtYWtlIC1zIC1q JHtCVUlMRF9KT0JTfSB3b3JsZC1iaW4iCiAgICAgICB1cGxvYWRfY2FjaGVzOiBjY2FjaGUKQEAg LTY1MCw2ICs2NjMsOCBAQCB0YXNrOgogICAgICAgcDUuMzQtaW8tdHR5CiAgICAgICBwNS4zNC1p cGMtcnVuCiAgICAgICBweXRob24zMTIKKyAgICAgIHB5MzEyLXBhY2thZ2luZworICAgICAgcHkz MTItcHl0ZXN0CiAgICAgICB0Y2wKICAgICAgIHpzdGQKIApAQCAtNjk5LDYgKzcxNCw3IEBAIHRh c2s6CiAgICAgc2ggc3JjL3Rvb2xzL2NpL2NpX21hY3BvcnRzX3BhY2thZ2VzLnNoICRNQUNPU19Q QUNLQUdFX0xJU1QKICAgICAjIHN5c3RlbSBweXRob24gZG9lc24ndCBwcm92aWRlIGhlYWRlcnMK ICAgICBzdWRvIC9vcHQvbG9jYWwvYmluL3BvcnQgc2VsZWN0IHB5dGhvbjMgcHl0aG9uMzEyCisg ICAgc3VkbyAvb3B0L2xvY2FsL2Jpbi9wb3J0IHNlbGVjdCBweXRlc3QgcHl0ZXN0MzEyCiAgICAg IyBNYWtlIG1hY3BvcnRzIGluc3RhbGwgdmlzaWJsZSBmb3Igc3Vic2VxdWVudCBzdGVwcwogICAg IGVjaG8gUEFUSD0vb3B0L2xvY2FsL3NiaW4vOi9vcHQvbG9jYWwvYmluLzokUEFUSCA+PiAkQ0lS UlVTX0VOVgogICB1cGxvYWRfY2FjaGVzOiBtYWNwb3J0cwpAQCAtNzcyLDYgKzc4OCw4IEBAIHRh c2s6CiAgICAgICAtRGxkYXA9ZW5hYmxlZAogICAgICAgLURzc2w9b3BlbnNzbAogICAgICAgLUR0 YXBfdGVzdHM9ZW5hYmxlZAorICAgICAgLURweXRlc3Q9ZW5hYmxlZAorICAgICAgLURQWVRFU1Q9 YzpcV2luZG93c1xzeXN0ZW0zMlxjb25maWdcc3lzdGVtcHJvZmlsZVxBcHBEYXRhXFJvYW1pbmdc UHl0aG9uXFB5dGhvbjMxMFxTY3JpcHRzXHB5dGVzdC5leGUKICAgICAgIC1EcGxwZXJsPWVuYWJs ZWQKICAgICAgIC1EcGxweXRob249ZW5hYmxlZAogCkBAIC03ODAsOCArNzk4LDEwIEBAIHRhc2s6 CiAgIGRlcGVuZHNfb246IFNhbml0eUNoZWNrCiAgIG9ubHlfaWY6ICRDSV9XSU5ET1dTX0VOQUJM RUQKIAorICAjIFhYWCBEb2VzIENob2NvbGF0ZXkgcmVhbGx5IG5vdCBoYXZlIGFueSBQeXRob24g cGFja2FnZSBpbnN0YWxsZXJzPwogICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3NjcmlwdDog fAogICAgIFJFTSBjaG9jbyBpbnN0YWxsIC15IC0tbm8tcHJvZ3Jlc3MgLi4uCisgICAgcGlwMyBp bnN0YWxsIC0tdXNlciBwYWNrYWdpbmcgcHl0ZXN0CiAKICAgc2V0dXBfaG9zdHNfZmlsZV9zY3Jp cHQ6IHwKICAgICBlY2hvIDEyNy4wLjAuMSBwZy1sb2FkYmFsYW5jZXRlc3QgPj4gYzpcV2luZG93 c1xTeXN0ZW0zMlxEcml2ZXJzXGV0Y1xob3N0cwpAQCAtODQ0LDcgKzg2NCw3IEBAIHRhc2s6CiAg ICAgZm9sZGVyOiAke0NDQUNIRV9ESVJ9CiAKICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19z Y3JpcHQ6IHwKLSAgICBSRU0gQzpcbXN5czY0XHVzclxiaW5ccGFjbWFuLmV4ZSAtUyAtLW5vY29u ZmlybSAuLi4KKyAgICBDOlxtc3lzNjRcdXNyXGJpblxwYWNtYW4uZXhlIC1TIC0tbm9jb25maXJt IG1pbmd3LXc2NC11Y3J0LXg4Nl82NC1weXRob24tcGFja2FnaW5nIG1pbmd3LXc2NC11Y3J0LXg4 Nl82NC1weXRob24tcHl0ZXN0CiAKICAgbWluZ3dfaW5mb19zY3JpcHQ6IHwKICAgICAlQkFTSCUg LWMgIndoZXJlIGdjYyIKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4 IDRlOTExMzk1ZmUzLi4yNjg0MjYwMDNiMSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC0zMSw2ICszMSw3IEBAIHdpbjMydmVyLnJjCiAqLmV4ZQogbGliKmRsbC5k ZWYKIGxpYioucGMKK19fcHljYWNoZV9fLwogCiAjIExvY2FsIGV4Y2x1ZGVzIGluIHJvb3QgZGly ZWN0b3J5CiAvR05VbWFrZWZpbGUKZGlmZiAtLWdpdCBhL2NvbmZpZy9jaGVja19weXRlc3QucHkg Yi9jb25maWcvY2hlY2tfcHl0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4xNTYyZDE2YmNkYQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9jaGVja19weXRl c3QucHkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorIworIyBWZXJpZnkgdGhhdCBweXRlc3QtcmVxdWly ZW1lbnRzLnR4dCBpcyBzYXRpc2ZpZWQuIFRoaXMgd291bGQgcHJvYmFibHkgYmUKKyMgZWFzaWVy IHdpdGggcGlwLCBidXQgcmVxdWlyaW5nIHBpcCBvbiBidWlsZCBtYWNoaW5lcyBpcyBhIG5vbi1z dGFydGVyIGZvcgorIyBtYW55LgorIworIyBUaGlzIGlzIGNvZGVkIGFzIGEgcHl0ZXN0IHN1aXRl IGluIG9yZGVyIHRvIGNoZWNrIHRoZSBQeXRob24gZGlzdHJpYnV0aW9uIGluCisjIHVzZSBieSBw eXRlc3QsIGFzIG9wcG9zZWQgdG8gdGhlIFB5dGhvbiBkaXN0cmlidXRpb24gYmVpbmcgbGlua2Vk IGFnYWluc3QKKyMgUG9zdGdyZXMuIEluIHNvbWUgc2V0dXBzIHRoZXkgYXJlIHNlcGFyYXRlLgor IworIyBUaGUgZGVzaWduIHBoaWxvc29waHkgb2YgdGhpcyBzY3JpcHQgaXMgdG8gYmVuZCBvdmVy IGJhY2t3YXJkcyB0byBoZWxwIHBlb3BsZQorIyBmaWd1cmUgb3V0IHdoYXQgaXMgbWlzc2luZy4g VGhlIHRhcmdldCBhdWRpZW5jZSBmb3IgZXJyb3Igb3V0cHV0IGlzIHRoZQorIyBidWlsZGZhcm0g b3BlcmF0b3Igd2hvIGp1c3Qgd2FudHMgdG8gZ2V0IHRoZSB0ZXN0cyBydW5uaW5nLCBub3QgdGhl IHRlc3QKKyMgZGV2ZWxvcGVyIHdobyBwcmVzdW1hYmx5IGFscmVhZHkga25vd3MgaG93IHRvIHNv bHZlIHRoZXNlIHByb2JsZW1zLgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitmcm9t IHR5cGluZyBpbXBvcnQgTGlzdCwgVW5pb24gICMgbmVlZGVkIGZvciBlYXJsaWVyIFB5dGhvbiB2 ZXJzaW9ucworCisjIGltcG9ydGxpYi5tZXRhZGF0YSBpcyBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBs aWJyYXJ5IGZyb20gMy44IG9ud2FyZHMuIEVhcmxpZXIKKyMgUHl0aG9uIHZlcnNpb25zIGhhdmUg YW4gb2ZmaWNpYWwgYmFja3BvcnQgY2FsbGVkIGltcG9ydGxpYl9tZXRhZGF0YSwgd2hpY2ggY2Fu CisjIGdlbmVyYWxseSBiZSBpbnN0YWxsZWQgYXMgYSBzZXBhcmF0ZSBPUyBwYWNrYWdlIChweXRo b24zLWltcG9ydGxpYi1tZXRhZGF0YSkuCisjIFRoaXMgY29tcGxpY2F0aW9uIGNhbiBiZSByZW1v dmVkIG9uY2Ugd2Ugc3RvcCBzdXBwb3J0aW5nIFB5dGhvbiAzLjcuCit0cnk6CisgICAgZnJvbSBp bXBvcnRsaWIgaW1wb3J0IG1ldGFkYXRhCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdHJ5Ogor ICAgICAgICBpbXBvcnQgaW1wb3J0bGliX21ldGFkYXRhIGFzIG1ldGFkYXRhCisgICAgZXhjZXB0 IEltcG9ydEVycm9yOgorICAgICAgICAjIHBhY2thZ2VfdmVyc2lvbigpIHdpbGwgbmVlZCB0byBm YWxsIGJhY2suIFRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuCisgICAgICAgICMgaW4gcHJhY3Rp Y2UsIGJlY2F1c2UgcHl0ZXN0IDcueCBkZXBlbmRzIG9uIGltcG9ydGxpYl9tZXRhZGF0YSBpdHNl bGYuCisgICAgICAgIG1ldGFkYXRhID0gTm9uZQorCisKK2RlZiByZXBvcnQoKmFyZ3MpOgorICAg ICIiIgorICAgIFByaW50cyBhIGNvbmZpZ3VyZS10aW1lIG1lc3NhZ2UgdG8gdGhlIHVzZXIuIChU aGUgY29uZmlndXJlIHNjcmlwdHMgd2lsbAorICAgIGRpc3BsYXkgdGhlc2UgbWVzc2FnZXMgYW5k IGlnbm9yZSB0aGUgb3V0cHV0IGZyb20gdGhlIHB5dGVzdCBzdWl0ZS4pIFRoaXMKKyAgICBhc3N1 bWVzIC0tY2FwdHVyZT1ubyBpcyBpbiB1c2UsIHRvIGF2b2lkIHB5dGVzdCdzIHN0YW5kYXJkIHN0 cmVhbSBjYXB0dXJlLgorICAgICIiIgorICAgIHByaW50KCphcmdzLCBmaWxlPXN5cy5zdGRlcnIp CisKKworZGVmIHBhY2thZ2VfdmVyc2lvbihwa2c6IHN0cikgLT4gVW5pb25bc3RyLCBOb25lXToK KyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBuYW1lZCBwYWNrYWdlLCBv ciBOb25lIGlmIHRoZSBwYWNrYWdlIGlzIG5vdAorICAgIGluc3RhbGxlZC4KKworICAgIFRoaXMg ZnVuY3Rpb24gcHJlZmVycyB0byB1c2UgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIHZlcnNpb24s IGlmIHdlIGhhdmUKKyAgICB0aGUgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZXMuIE90aGVyd2lzZSBp dCB3aWxsIGZhbGwgYmFjayB0byB0aGUgX192ZXJzaW9uX18KKyAgICBvZiB0aGUgaW1wb3J0ZWQg bW9kdWxlLCB3aGljaCBhbGlnbnMgd2l0aCBweXRlc3QuaW1wb3J0b3Jza2lwKCkuCisgICAgIiIi CisgICAgaWYgbWV0YWRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHJldHVybiBtZXRhZGF0YS52ZXJzaW9uKHBrZykKKyAgICAgICAgZXhjZXB0IG1ldGFkYXRhLlBh Y2thZ2VOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICMgVGhp cyBpcyBhbiBvbGRlciBQeXRob24gYW5kIHdlIGRvbid0IGhhdmUgaW1wb3J0bGliX21ldGFkYXRh LiBGYWxsIGJhY2sgdG8KKyAgICAjIF9fdmVyc2lvbl9fIGluc3RlYWQuCisgICAgdHJ5OgorICAg ICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2cpCisgICAgZXhjZXB0IE1vZHVs ZU5vdEZvdW5kRXJyb3I6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpZiBoYXNhdHRyKG1v ZCwgIl9fdmVyc2lvbl9fIik6CisgICAgICAgIHJldHVybiBtb2QuX192ZXJzaW9uX18KKworICAg ICMgV2UncmUgb3V0IG9mIG9wdGlvbnMuIElmIHRoaXMgdHVybnMgb3V0IHRvIGNhdXNlIHByb2Js ZW1zIGluIHByYWN0aWNlLCB3ZQorICAgICMgbWlnaHQgbmVlZCB0byByZXF1aXJlIGltcG9ydGxp Yl9tZXRhZGF0YSBvbiBvbGRlciBidWlsZGZhcm0gbWVtYmVycy4gQnV0CisgICAgIyBzaW5jZSBv dXIgdG9wLWxldmVsIHJlcXVpcmVtZW50cyBsaXN0IHdpbGwgYmUgc21hbGwsIGFuZCB0aGlzIHBv c3NpYmlsaXR5CisgICAgIyB3aWxsIGV2ZW50dWFsbHkgYWdlIG91dCB3aXRoIG5ld2VyIFB5dGhv bnMsIGRvbid0IHNwZW5kIG1vcmUgZWZmb3J0IG9uCisgICAgIyB0aGlzIGNhc2UgZm9yIG5vdy4K KyAgICByZXBvcnQoZiJGaXggY2hlY2tfcHl0ZXN0LnB5ISB7cGtnfSBoYXMgbm8gX192ZXJzaW9u X18iKQorICAgIGFzc2VydCBGYWxzZSwgImludGVybmFsIGVycm9yIGluIHBhY2thZ2VfdmVyc2lv bigpIgorCisKK2RlZiBwYWNrYWdpbmdfY2hlY2socmVxdWlyZW1lbnRzOiBMaXN0W3N0cl0pIC0+ IGJvb2w6CisgICAgIiIiCisgICAgUmVwb3J0cyB0aGUgc3RhdHVzIG9mIGVhY2ggcmVxdWlyZWQg cGFja2FnZSB0byB0aGUgY29uZmlndXJlIHByb2dyYW0uCisgICAgUmV0dXJucyBUcnVlIGlmIGFs bCBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZC4KKyAgICAiIiIKKyAgICByZXBvcnQoKSAgIyBhbiBv cGVuaW5nIG5ld2xpbmUgbWFrZXMgdGhlIGNvbmZpZ3VyZSBvdXRwdXQgZWFzaWVyIHRvIHJlYWQK KworICAgIHRyeToKKyAgICAgICAgIyBwYWNrYWdpbmcgY29udGFpbnMgdGhlIFB5UEEgZGVmaW5p dGlvbnMgb2YgcmVxdWlyZW1lbnQgc3BlY2lmaWVycy4KKyAgICAgICAgIyBUaGlzIGlzIGNvbnRh aW5lZCBpbiBhIHNlcGFyYXRlIE9TIHBhY2thZ2UgKGZvciBleGFtcGxlLAorICAgICAgICAjIHB5 dGhvbjMtcGFja2FnaW5nKSwgYnV0IGl0J3MgZXh0cmVtZWx5IGxpa2VseSB0aGF0IHRoZSB1c2Vy IGhhcyBpdAorICAgICAgICAjIGluc3RhbGxlZCBhbHJlYWR5LCBiZWNhdXNlIG1vZGVybiB2ZXJz aW9ucyBvZiBweXRlc3QgZGVwZW5kIG9uIGl0IHRvby4KKyAgICAgICAgaW1wb3J0IHBhY2thZ2lu ZworICAgICAgICBmcm9tIHBhY2thZ2luZy5yZXF1aXJlbWVudHMgaW1wb3J0IFJlcXVpcmVtZW50 CisKKyAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXJyOgorICAgICAgICAjIFdlIGRvbid0IGV2 ZW4gaGF2ZSBlbm91Z2ggcHJlcmVxdWlzaXRlcyB0byBjaGVjayBvdXIgcHJlcmVxdWlzaXRlcy4K KyAgICAgICAgIyBQcmludCB0aGUgaW1wb3J0IGVycm9yIGFzLWlzLgorICAgICAgICByZXBvcnQo ZXJyKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICMgU3RyaXAgZXh0cmFuZW91cyB3aGl0 ZXNwYWNlLCB3aG9sZS1saW5lIGNvbW1lbnRzLCBhbmQgZW1wdHkgbGluZXMgZnJvbSBvdXIKKyAg ICAjIHNwZWNpZmllciBsaXN0LgorICAgIHJlcXVpcmVtZW50cyA9IFtyLnN0cmlwKCkgZm9yIHIg aW4gcmVxdWlyZW1lbnRzXQorICAgIHJlcXVpcmVtZW50cyA9IFtyIGZvciByIGluIHJlcXVpcmVt ZW50cyBpZiByIGFuZCByWzBdICE9ICIjIl0KKworICAgIGZvdW5kID0gVHJ1ZQorICAgIGZvciBz cGVjIGluIHJlcXVpcmVtZW50czoKKyAgICAgICAgcmVxID0gUmVxdWlyZW1lbnQoc3BlYykKKwor ICAgICAgICAjIFNraXAgYW55IHBhY2thZ2VzIG1hcmtlZCBhcyB1bm5lZWRlZCBmb3IgdGhpcyBw YXJ0aWN1bGFyIFB5dGhvbiBlbnYuCisgICAgICAgIGlmIHJlcS5tYXJrZXIgYW5kIG5vdCByZXEu bWFya2VyLmV2YWx1YXRlKCk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgTWFr ZSBzdXJlIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4uLgorICAgICAgICB2ZXJzaW9uID0gcGFj a2FnZV92ZXJzaW9uKHJlcS5uYW1lKQorICAgICAgICBpZiB2ZXJzaW9uIGlzIE5vbmU6CisgICAg ICAgICAgICByZXBvcnQoZiJwYWNrYWdlICd7cmVxLm5hbWV9Jzogbm90IGluc3RhbGxlZCIpCisg ICAgICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg ICMgLi4uYW5kIHRoYXQgaXQgaGFzIGEgY29tcGF0aWJsZSB2ZXJzaW9uLgorICAgICAgICBpZiBu b3QgcmVxLnNwZWNpZmllci5jb250YWlucyh2ZXJzaW9uKToKKyAgICAgICAgICAgIHJlcG9ydCgK KyAgICAgICAgICAgICAgICAicGFja2FnZSAne30nOiBoYXMgdmVyc2lvbiB7fSwgYnV0ICd7fScg aXMgcmVxdWlyZWQiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgcmVxLm5hbWUsIHZlcnNp b24sIHJlcS5zcGVjaWZpZXIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorICAg ICAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAj IFJlcG9ydCBpbnN0YWxsZWQgcGFja2FnZXMgdG9vLCB0byBtaXJyb3IgY2hlY2tfbW9kdWxlcy5w bC4KKyAgICAgICAgcmVwb3J0KGYicGFja2FnZSAne3JlcS5uYW1lfSc6IGluc3RhbGxlZCAodmVy c2lvbiB7dmVyc2lvbn0pIikKKworICAgIHJldHVybiBmb3VuZAorCisKK2RlZiB0ZXN0X3BhY2th Z2VzKHJlcXVpcmVtZW50c19maWxlKToKKyAgICAiIiIKKyAgICBFbnRyeSBwb2ludC4KKyAgICAi IiIKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihyZXF1aXJlbWVudHNfZmlsZSwgInIiKSBh cyBmOgorICAgICAgICAgICAgcmVxdWlyZW1lbnRzID0gZi5yZWFkbGluZXMoKQorCisgICAgICAg IGFsbF9mb3VuZCA9IHBhY2thZ2luZ19jaGVjayhyZXF1aXJlbWVudHMpCisKKyAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgIyBTdXJmYWNlIGFueSBicmVha2FnZSB0byB0aGUg Y29uZmlndXJlIHNjcmlwdCBiZWZvcmUgZmFpbGluZyB0aGUgdGVzdC4KKyAgICAgICAgcmVwb3J0 KGVycikKKyAgICAgICAgcmFpc2UKKworICAgIGFzc2VydCBhbGxfZm91bmQsICJyZXF1aXJlZCBw YWNrYWdlcyBhcmUgbWlzc2luZyIKZGlmZiAtLWdpdCBhL2NvbmZpZy9jb25mdGVzdC5weSBiL2Nv bmZpZy9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YTljMmJjNTQ2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvY29uZnRlc3QucHkKQEAgLTAs MCArMSwxOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisjCisjIFN1cHBvcnQgZm9yIGNoZWNrX3B5dGVzdC5weS4gVGhlIGNvbmZp Z3VyZSBzY3JpcHQgcHJvdmlkZXMgdGhlIHBhdGggdG8KKyMgcHl0ZXN0LXJlcXVpcmVtZW50cy50 eHQgdmlhIHRoZSAtLXJlcXVpcmVtZW50cyBvcHRpb24gYWRkZWQgaGVyZS4KKworaW1wb3J0IHB5 dGVzdAorCisKK2RlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6CisgICAgcGFyc2VyLmFkZG9w dGlvbigKKyAgICAgICAgIi0tcmVxdWlyZW1lbnRzIiwKKyAgICAgICAgaGVscD0icGF0aCB0byBw eXRlc3QtcmVxdWlyZW1lbnRzLnR4dCIsCisgICAgKQorCisKK0BweXRlc3QuZml4dHVyZQorZGVm IHJlcXVpcmVtZW50c19maWxlKHJlcXVlc3QpOgorICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZy5n ZXRvcHRpb24oIi0tcmVxdWlyZW1lbnRzIikKZGlmZiAtLWdpdCBhL2NvbmZpZy9weXRlc3QtcmVx dWlyZW1lbnRzLnR4dCBiL2NvbmZpZy9weXRlc3QtcmVxdWlyZW1lbnRzLnR4dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk0MTYyNGIyZjMKLS0tIC9kZXYvbnVsbAor KysgYi9jb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQKQEAgLTAsMCArMSwyMSBAQAorIwor IyBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFB5dGhvbiBwYWNrYWdlcyB3aGljaCBhcmUgcmVxdWly ZWQgaW4gb3JkZXIgZm9yIHVzIHRvCisjIGVuYWJsZSBweXRlc3QuCisjCisjIFRoZSBzeW50YXgg aXMgYSAqc3Vic2V0KiBvZiBwaXAncyByZXF1aXJlbWVudHMudHh0IHN5bnRheCwgc28gdGhhdCBi b3RoIHBpcAorIyBhbmQgY2hlY2tfcHl0ZXN0LnB5IGNhbiB1c2UgaXQuIE9ubHkgd2hvbGUtbGlu ZSBjb21tZW50cyBhbmQgc3RhbmRhcmQgUHl0aG9uCisjIGRlcGVuZGVuY3kgc3BlY2lmaWVycyBh cmUgYWxsb3dlZC4gcGlwLXNwZWNpZmljIGdvb2RpZXMgbGlrZSBpbmNsdWRlcyBhbmQKKyMgZW52 aXJvbm1lbnQgc3Vic3RpdHV0aW9ucyBhcmUgbm90IHN1cHBvcnRlZDsga2VlcCBpdCBzaW1wbGUu CisjCisjIFBhY2thZ2VzIGJlbG9uZyBoZXJlIGlmIHRoZWlyIGFic2VuY2Ugc2hvdWxkIGNhdXNl IGEgY29uZmlndXJhdGlvbiBmYWlsdXJlLiBJZgorIyB5b3UnZCBsaWtlIHRvIG1ha2UgYSBwYWNr YWdlIG9wdGlvbmFsLCBjb25zaWRlciB1c2luZyBweXRlc3QuaW1wb3J0b3Jza2lwKCkKKyMgaW5z dGVhZC4KKyMKKworIyBweXRlc3QgNy4wIHdhcyB0aGUgbGFzdCB2ZXJzaW9uIHdoaWNoIHN1cHBv cnRlZCBQeXRob24gMy42LCBidXQgdGhlIEJTRHMgaGF2ZQorIyBzdGFydGVkIHB1dHRpbmcgOC54 IGludG8gcG9ydHMsIHNvIHdlIHN1cHBvcnQgYm90aC4gKHB5dGVzdCA4IGNhbiBiZSB1c2VkCisj IHRocm91Z2hvdXQgb25jZSB3ZSBkcm9wIHN1cHBvcnQgZm9yIFB5dGhvbiAzLjcuKQorcHl0ZXN0 ID49IDcuMCwgPCA5CisKKyMgcGFja2FnaW5nIGlzIHVzZWQgYnkgY2hlY2tfcHl0ZXN0LnB5IGF0 IGNvbmZpZ3VyZSB0aW1lLgorcGFja2FnaW5nCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25m aWd1cmUKaW5kZXggMjJjZDg2NjE0N2IuLmFhOTNmYTVmMGFhIDEwMDc1NQotLS0gYS9jb25maWd1 cmUKKysrIGIvY29uZmlndXJlCkBAIC02MzAsNiArNjMwLDcgQEAgdnBhdGhfYnVpbGQKIFBHX1NZ U1JPT1QKIFBHX1ZFUlNJT05fTlVNCiBMREZMQUdTX0VYX0JFCitQWVRFU1QKIFBST1ZFCiBEQlRP RVBVQgogRk9QCkBAIC03NzEsNiArNzcyLDcgQEAgQ0ZMQUdTCiBDQwogZW5hYmxlX2luamVjdGlv bl9wb2ludHMKIFBHX1RFU1RfRVhUUkEKK2VuYWJsZV9weXRlc3QKIGVuYWJsZV90YXBfdGVzdHMK IGVuYWJsZV9kdHJhY2UKIERUUkFDRUZMQUdTCkBAIC04NDksNiArODUxLDcgQEAgZW5hYmxlX3By b2ZpbGluZwogZW5hYmxlX2NvdmVyYWdlCiBlbmFibGVfZHRyYWNlCiBlbmFibGVfdGFwX3Rlc3Rz CitlbmFibGVfcHl0ZXN0CiBlbmFibGVfaW5qZWN0aW9uX3BvaW50cwogd2l0aF9ibG9ja3NpemUK IHdpdGhfc2Vnc2l6ZQpAQCAtMTU0OSw3ICsxNTUyLDEwIEBAIE9wdGlvbmFsIEZlYXR1cmVzOgog ICAtLWVuYWJsZS1wcm9maWxpbmcgICAgICBidWlsZCB3aXRoIHByb2ZpbGluZyBlbmFibGVkCiAg IC0tZW5hYmxlLWNvdmVyYWdlICAgICAgIGJ1aWxkIHdpdGggY292ZXJhZ2UgdGVzdGluZyBpbnN0 cnVtZW50YXRpb24KICAgLS1lbmFibGUtZHRyYWNlICAgICAgICAgYnVpbGQgd2l0aCBEVHJhY2Ug c3VwcG9ydAotICAtLWVuYWJsZS10YXAtdGVzdHMgICAgICBlbmFibGUgVEFQIHRlc3RzIChyZXF1 aXJlcyBQZXJsIGFuZCBJUEM6OlJ1bikKKyAgLS1lbmFibGUtdGFwLXRlc3RzICAgICAgZW5hYmxl IChQZXJsLWJhc2VkKSBUQVAgdGVzdHMgKHJlcXVpcmVzIFBlcmwgYW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgIElQQzo6UnVuKQorICAtLWVuYWJsZS1weXRlc3QgICAgICAgICBlbmFibGUg KFB5dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRlcyAocmVxdWlyZXMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgUHl0aG9uKQogICAtLWVuYWJsZS1pbmplY3Rpb24tcG9pbnRzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVuYWJsZSBpbmplY3Rpb24gcG9pbnRzIChmb3IgdGVzdGluZykKICAg LS1lbmFibGUtZGVwZW5kICAgICAgICAgdHVybiBvbiBhdXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFj a2luZwpAQCAtMzYzMSw3ICszNjM3LDcgQEAgZmkKIAogCiAjCi0jIFRBUCB0ZXN0cworIyBUZXN0 IGZyYW1ld29ya3MKICMKIAogCkBAIC0zNjU5LDYgKzM2NjUsMzIgQEAgZmkKIAogCiAKKworIyBD aGVjayB3aGV0aGVyIC0tZW5hYmxlLXB5dGVzdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJs ZV9weXRlc3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9weXRlc3Q7 CisgIGNhc2UgJGVuYWJsZXZhbCBpbgorICAgIHllcykKKyAgICAgIDoKKyAgICAgIDs7CisgICAg bm8pCisgICAgICA6CisgICAgICA7OworICAgICopCisgICAgICBhc19mbl9lcnJvciAkPyAibm8g YXJndW1lbnQgZXhwZWN0ZWQgZm9yIC0tZW5hYmxlLXB5dGVzdCBvcHRpb24iICIkTElORU5PIiA1 CisgICAgICA7OworICBlc2FjCisKK2Vsc2UKKyAgZW5hYmxlX3B5dGVzdD1ubworCitmaQorCisK KworCisKKwogIwogIyBJbmplY3Rpb24gcG9pbnRzCiAjCkBAIC0xOTA3NCw2ICsxOTEwNiw3OCBA QCAkYXNfZWNobyAiJG1vZHVsZXN0ZGVyciIgPiY2OyB9CiAgIGZpCiBmaQogCitpZiB0ZXN0ICIk ZW5hYmxlX3B5dGVzdCIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAteiAiJFBZVEVTVCI7IHRoZW4K KyAgZm9yIGFjX3Byb2cgaW4gcHl0ZXN0IHB5LnRlc3QKK2RvCisgICMgRXh0cmFjdCB0aGUgZmly c3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh cmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNo b19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9Q WVRFU1QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxz ZQorICBjYXNlICRQWVRFU1QgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhf UFlURVNUPSIkUFlURVNUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEg cGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP UgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl Y3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9QWVRFU1Q9IiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAg YnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2Vz YWMKK2ZpCitQWVRFU1Q9JGFjX2N2X3BhdGhfUFlURVNUCitpZiB0ZXN0IC1uICIkUFlURVNUIjsg dGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JFBZVEVTVCIgPiY1CiskYXNfZWNobyAiJFBZVEVTVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNo byAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRQWVRFU1QiICYmIGJyZWFrCitkb25l CisKK2Vsc2UKKyAgIyBSZXBvcnQgdGhlIHZhbHVlIG9mIFBZVEVTVCBpbiBjb25maWd1cmUncyBv dXRwdXQgaW4gYWxsIGNhc2VzLgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBQWVRFU1QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IFBZVEVTVC4uLiAiID4mNjsgfQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJFBZVEVTVCIgPiY1CiskYXNfZWNobyAiJFBZVEVTVCIgPiY2OyB9Citm aQorCisgIGlmIHRlc3QgLXogIiRQWVRFU1QiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gInB5 dGVzdCBub3QgZm91bmQiICIkTElORU5PIiA1CisgIGZpCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFB5dGhvbiBwYWNrYWdlcyByZXF1aXJl ZCBmb3IgcHl0ZXN0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBQeXRob24gcGFja2Fn ZXMgcmVxdWlyZWQgZm9yIHB5dGVzdC4uLiAiID4mNjsgfQorICBtb2R1bGVzdGRlcnI9YCRQWVRF U1QgLWMgIiRzcmNkaXIvcHl0ZXN0LmluaSIgLS1jb25mY3V0ZGlyPSIkc3JjZGlyL2NvbmZpZyIg LS1jYXB0dXJlPW5vICIkc3JjZGlyL2NvbmZpZy9jaGVja19weXRlc3QucHkiIC0tcmVxdWlyZW1l bnRzICIkc3JjZGlyL2NvbmZpZy9weXRlc3QtcmVxdWlyZW1lbnRzLnR4dCIgMj4mMSA+L2Rldi9u dWxsYAorICBpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuCisgICAgZWNobyAiJG1vZHVsZXN0ZGVyciIg PiY1CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKyAgZWxzZQorICAgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbW9kdWxlc3RkZXJyIiA+JjUK KyRhc19lY2hvICIkbW9kdWxlc3RkZXJyIiA+JjY7IH0KKyAgICBhc19mbl9lcnJvciAkPyAiQWRk aXRpb25hbCBQeXRob24gcGFja2FnZXMgYXJlIHJlcXVpcmVkIHRvIHJ1biB0aGUgcHl0ZXN0IHN1 aXRlcyIgIiRMSU5FTk8iIDUKKyAgZmkKK2ZpCisKICMgSWYgY29tcGlsZXIgd2lsbCB0YWtlIC1X bCwtLWFzLW5lZWRlZCAob3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYwogIyBzcGVsbGluZ3Mg dGhlcmVvZikgdGhlbiBhZGQgdGhhdCB0byBMREZMQUdTLiAgVGhpcyBpcyBtdWNoIGVhc2llciB0 aGFuCiAjIHRyeWluZyB0byBmaWx0ZXIgTElCUyB0byB0aGUgbWluaW11bSBmb3IgZWFjaCBleGVj dXRhYmxlLgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGU0 NDk0M2FhNmZlLi4yNTQ0MjA1MGYzNCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2Nv bmZpZ3VyZS5hYwpAQCAtMjI1LDExICsyMjUsMTYgQEAgQUNfU1VCU1QoRFRSQUNFRkxBR1MpXSkK IEFDX1NVQlNUKGVuYWJsZV9kdHJhY2UpCiAKICMKLSMgVEFQIHRlc3RzCisjIFRlc3QgZnJhbWV3 b3JrcwogIwogUEdBQ19BUkdfQk9PTChlbmFibGUsIHRhcC10ZXN0cywgbm8sCi0gICAgICAgICAg ICAgIFtlbmFibGUgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZCBJUEM6OlJ1bildKQorICAg ICAgICAgICAgICBbZW5hYmxlIChQZXJsLWJhc2VkKSBUQVAgdGVzdHMgKHJlcXVpcmVzIFBlcmwg YW5kIElQQzo6UnVuKV0pCiBBQ19TVUJTVChlbmFibGVfdGFwX3Rlc3RzKQorCitQR0FDX0FSR19C T09MKGVuYWJsZSwgcHl0ZXN0LCBubywKKyAgICAgICAgICAgICAgW2VuYWJsZSAoUHl0aG9uLWJh c2VkKSBweXRlc3Qgc3VpdGVzIChyZXF1aXJlcyBQeXRob24pXSkKK0FDX1NVQlNUKGVuYWJsZV9w eXRlc3QpCisKIEFDX0FSR19WQVIoUEdfVEVTVF9FWFRSQSwKICAgICAgICAgICAgW2VuYWJsZSBz ZWxlY3RlZCBleHRyYSB0ZXN0cyAob3ZlcnJpZGRlbiBhdCBydW50aW1lIGJ5IFBHX1RFU1RfRVhU UkEgZW52aXJvbm1lbnQgdmFyaWFibGUpXSkKIApAQCAtMjQxNSw2ICsyNDIwLDIyIEBAIGlmIHRl c3QgIiRlbmFibGVfdGFwX3Rlc3RzIiA9IHllczsgdGhlbgogICBmaQogZmkKIAoraWYgdGVzdCAi JGVuYWJsZV9weXRlc3QiID0geWVzOyB0aGVuCisgIFBHQUNfUEFUSF9QUk9HUyhQWVRFU1QsIHB5 dGVzdCBweS50ZXN0KQorICBpZiB0ZXN0IC16ICIkUFlURVNUIjsgdGhlbgorICAgIEFDX01TR19F UlJPUihbcHl0ZXN0IG5vdCBmb3VuZF0pCisgIGZpCisgIEFDX01TR19DSEVDS0lORyhmb3IgUHl0 aG9uIHBhY2thZ2VzIHJlcXVpcmVkIGZvciBweXRlc3QpCisgIFttb2R1bGVzdGRlcnI9YCRQWVRF U1QgLWMgIiRzcmNkaXIvcHl0ZXN0LmluaSIgLS1jb25mY3V0ZGlyPSIkc3JjZGlyL2NvbmZpZyIg LS1jYXB0dXJlPW5vICIkc3JjZGlyL2NvbmZpZy9jaGVja19weXRlc3QucHkiIC0tcmVxdWlyZW1l bnRzICIkc3JjZGlyL2NvbmZpZy9weXRlc3QtcmVxdWlyZW1lbnRzLnR4dCIgMj4mMSA+L2Rldi9u dWxsYF0KKyAgaWYgdGVzdCAkPyAtZXEgMDsgdGhlbgorICAgIGVjaG8gIiRtb2R1bGVzdGRlcnIi ID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgZWxzZQorICAg IEFDX01TR19SRVNVTFQoWyRtb2R1bGVzdGRlcnJdKQorICAgIEFDX01TR19FUlJPUihbQWRkaXRp b25hbCBQeXRob24gcGFja2FnZXMgYXJlIHJlcXVpcmVkIHRvIHJ1biB0aGUgcHl0ZXN0IHN1aXRl c10pCisgIGZpCitmaQorCiAjIElmIGNvbXBpbGVyIHdpbGwgdGFrZSAtV2wsLS1hcy1uZWVkZWQg KG9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMKICMgc3BlbGxpbmdzIHRoZXJlb2YpIHRoZW4g YWRkIHRoYXQgdG8gTERGTEFHUy4gIFRoaXMgaXMgbXVjaCBlYXNpZXIgdGhhbgogIyB0cnlpbmcg dG8gZmlsdGVyIExJQlMgdG8gdGhlIG1pbmltdW0gZm9yIGVhY2ggZXhlY3V0YWJsZS4KZGlmZiAt LWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggMzdlZDY4Y2VlYjQuLjA2ZWI3 YTE5MjEwIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMTcw Miw2ICsxNzAyLDM5IEBAIGVuZGlmCiAKIAogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTGlicmFyeTogcHl0ZXN0Cisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworcHl0ZXN0X2VuYWJsZWQgPSBmYWxzZQorcHl0ZXN0ID0gbm90X2ZvdW5kX2RlcAor CitweXRlc3RvcHQgPSBnZXRfb3B0aW9uKCdweXRlc3QnKQoraWYgbm90IHB5dGVzdG9wdC5kaXNh YmxlZCgpCisgIHB5dGVzdCA9IGZpbmRfcHJvZ3JhbShnZXRfb3B0aW9uKCdQWVRFU1QnKSwgbmF0 aXZlOiB0cnVlLCByZXF1aXJlZDogcHl0ZXN0b3B0KQorICBpZiBweXRlc3QuZm91bmQoKQorICAg IHB5dGVzdF9jaGVjayA9IHJ1bl9jb21tYW5kKHB5dGVzdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLWMnLCAncHl0ZXN0LmluaScsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tY29uZmN1dGRpcj1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICctLWNhcHR1cmU9bm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25m aWcvY2hlY2tfcHl0ZXN0LnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1y ZXF1aXJlbWVudHMnLCAnY29uZmlnL3B5dGVzdC1yZXF1aXJlbWVudHMudHh0JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaGVjazogZmFsc2UpCisgICAgaWYgcHl0ZXN0X2NoZWNr LnJldHVybmNvZGUoKSAhPSAwCisgICAgICBtZXNzYWdlKHB5dGVzdF9jaGVjay5zdGRlcnIoKSkK KyAgICAgIGlmIHB5dGVzdG9wdC5lbmFibGVkKCkKKyAgICAgICAgZXJyb3IoJ0FkZGl0aW9uYWwg UHl0aG9uIHBhY2thZ2VzIGFyZSByZXF1aXJlZCB0byBydW4gdGhlIHB5dGVzdCBzdWl0ZXMuJykK KyAgICAgIGVsc2UKKyAgICAgICAgd2FybmluZygnQWRkaXRpb25hbCBQeXRob24gcGFja2FnZXMg YXJlIHJlcXVpcmVkIHRvIHJ1biB0aGUgcHl0ZXN0IHN1aXRlcy4nKQorICAgICAgZW5kaWYKKyAg ICBlbHNlCisgICAgICBweXRlc3RfZW5hYmxlZCA9IHRydWUKKyAgICBlbmRpZgorICBlbmRpZgor ZW5kaWYKKworCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBMaWJyYXJ5OiB6c3RkCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM3NzksNiAr MzgxMiw2MyBAQCBmb3JlYWNoIHRlc3RfZGlyIDogdGVzdHMKICAgICAgICAgKQogICAgICAgZW5k Zm9yZWFjaAogICAgICAgaW5zdGFsbF9zdWl0ZXMgKz0gdGVzdF9ncm91cAorICAgIGVsaWYga2lu ZCA9PSAncHl0ZXN0JworICAgICAgdGVzdHdyYXBfcHl0ZXN0ID0gdGVzdHdyYXBfYmFzZQorICAg ICAgaWYgbm90IHB5dGVzdF9lbmFibGVkCisgICAgICAgIHRlc3R3cmFwX3B5dGVzdCArPSBbJy0t c2tpcCcsICdweXRlc3Qgbm90IGVuYWJsZWQnXQorICAgICAgZW5kaWYKKworICAgICAgdGVzdF9j b21tYW5kID0gWworICAgICAgICBweXRlc3QuZnVsbF9wYXRoKCksCisgICAgICAgICctYycsIG1l c29uLnByb2plY3Rfc291cmNlX3Jvb3QoKSAvICdweXRlc3QuaW5pJywKKyAgICAgICAgJy0tdmVy Ym9zZScsCisgICAgICAgICctcCcsICdwZ3RhcCcsICAjIGVuYWJsZSBvdXIgdGVzdCByZXBvcnRl ciBwbHVnaW4KKyAgICAgICAgJy1yYScsICAjIHNob3cgc2tpcHBlZCBhbmQgeGZhaWxlZCB0ZXN0 cyB0b28KKyAgICAgIF0KKworICAgICAgIyBBZGQgdGVtcG9yYXJ5IGluc3RhbGwsIHRoZSBidWls ZCBkaXJlY3RvcnkgZm9yIG5vbi1pbnN0YWxsZWQgYmluYXJpZXMgYW5kCisgICAgICAjIGFsc28g dGVzdC8gZm9yIG5vbi1pbnN0YWxsZWQgdGVzdCBiaW5hcmllcyBidWlsdCBzZXBhcmF0ZWx5Lgor ICAgICAgZW52ID0gdGVzdF9lbnYKKyAgICAgIGVudi5wcmVwZW5kKCdQQVRIJywgdGVtcF9pbnN0 YWxsX2JpbmRpciwgdGVzdF9kaXJbJ2JkJ10sIHRlc3RfZGlyWydiZCddIC8gJ3Rlc3QnKQorICAg ICAgdGVtcF9pbnN0YWxsX2RhdGFkaXIgPSAnQDBAQDFAJy5mb3JtYXQodGVzdF9pbnN0YWxsX2Rl c3RkaXIsIGRpcl9wcmVmaXggLyBkaXJfZGF0YSkKKyAgICAgIGVudi5zZXQoJ3NoYXJlX2NvbnRy aWJfZGlyJywgdGVtcF9pbnN0YWxsX2RhdGFkaXIgLyAnY29udHJpYicpCisgICAgICBlbnYucHJl cGVuZCgnUFlUSE9OUEFUSCcsIG1lc29uLnByb2plY3Rfc291cmNlX3Jvb3QoKSAvICdzcmMnIC8g J3Rlc3QnIC8gJ3B5dGVzdCcgLyAncGx1Z2lucycpCisKKyAgICAgIGZvcmVhY2ggbmFtZSwgdmFs dWUgOiB0LmdldCgnZW52Jywge30pCisgICAgICAgIGVudi5zZXQobmFtZSwgdmFsdWUpCisgICAg ICBlbmRmb3JlYWNoCisKKyAgICAgIHRlc3RfZ3JvdXAgPSB0ZXN0X2RpclsnbmFtZSddCisgICAg ICB0ZXN0X2t3YXJncyA9IHsKKyAgICAgICAgJ3Byb3RvY29sJzogJ3RhcCcsCisgICAgICAgICdz dWl0ZSc6IHRlc3RfZ3JvdXAsCisgICAgICAgICd0aW1lb3V0JzogMTAwMCwKKyAgICAgICAgJ2Rl cGVuZHMnOiB0ZXN0X2RlcHMgKyB0LmdldCgnZGVwcycsIFtdKSwKKyAgICAgICAgJ2Vudic6IGVu diwKKyAgICAgIH0gKyB0LmdldCgndGVzdF9rd2FyZ3MnLCB7fSkKKworICAgICAgZm9yZWFjaCBv bmV0ZXN0IDogdFsndGVzdHMnXQorICAgICAgICAjIE1ha2UgdGVzdCBuYW1lcyBwcmV0dGllciwg cmVtb3ZlIHB5dC8gYW5kIC5weQorICAgICAgICBvbmV0ZXN0X3AgPSBvbmV0ZXN0CisgICAgICAg IGlmIG9uZXRlc3RfcC5zdGFydHN3aXRoKCdweXQvJykKKyAgICAgICAgICBvbmV0ZXN0X3AgPSBv bmV0ZXN0LnNwbGl0KCdweXQvJylbMV0KKyAgICAgICAgZW5kaWYKKyAgICAgICAgaWYgb25ldGVz dF9wLmVuZHN3aXRoKCcucHknKQorICAgICAgICAgIG9uZXRlc3RfcCA9IGZzLnN0ZW0ob25ldGVz dF9wKQorICAgICAgICBlbmRpZgorCisgICAgICAgIHRlc3QodGVzdF9kaXJbJ25hbWUnXSAvIG9u ZXRlc3RfcCwKKyAgICAgICAgICBweXRob24sCisgICAgICAgICAga3dhcmdzOiB0ZXN0X2t3YXJn cywKKyAgICAgICAgICBhcmdzOiB0ZXN0d3JhcF9weXRlc3QgKyBbCisgICAgICAgICAgICAnLS10 ZXN0Z3JvdXAnLCB0ZXN0X2RpclsnbmFtZSddLAorICAgICAgICAgICAgJy0tdGVzdG5hbWUnLCBv bmV0ZXN0X3AsCisgICAgICAgICAgICAnLS0nLCB0ZXN0X2NvbW1hbmQsCisgICAgICAgICAgICB0 ZXN0X2Rpclsnc2QnXSAvIG9uZXRlc3QsCisgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAg ZW5kZm9yZWFjaAorICAgICAgaW5zdGFsbF9zdWl0ZXMgKz0gdGVzdF9ncm91cAogICAgIGVsc2UK ICAgICAgIGVycm9yKCd1bmtub3duIGtpbmQgQDBAIG9mIHRlc3QgaW4gQDFAJy5mb3JtYXQoa2lu ZCwgdGVzdF9kaXJbJ3NkJ10pKQogICAgIGVuZGlmCkBAIC0zOTUzLDYgKzQwNDMsNyBAQCBzdW1t YXJ5KAogICAgICdkdHJhY2UnOiBkdHJhY2UsCiAgICAgJ2ZsZXgnOiAnQDBAIEAxQCcuZm9ybWF0 KGZsZXguZnVsbF9wYXRoKCksIGZsZXhfdmVyc2lvbiksCiAgICAgJ3Byb3ZlJzogcHJvdmUsCisg ICAgJ3B5dGVzdCc6IHB5dGVzdCwKICAgfSwKICAgc2VjdGlvbjogJ1Byb2dyYW1zJywKICkKQEAg LTM5OTMsNiArNDA4NCw3IEBAIHN1bW1hcnkoCiBzdW1tYXJ5KAogICB7CiAgICAgJ3RhcCc6IHRh cF90ZXN0c19lbmFibGVkLAorICAgICdweXRlc3QnOiBweXRlc3RfZW5hYmxlZCwKICAgfSwKICAg c2VjdGlvbjogJ090aGVyIGZlYXR1cmVzJywKICAgbGlzdF9zZXA6ICcgJywKZGlmZiAtLWdpdCBh L21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKaW5kZXggMDZiZjU2MjdkM2Mu Ljg4ZjIyZTY5OWQ5IDEwMDY0NAotLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysgYi9tZXNvbl9v cHRpb25zLnR4dApAQCAtNDEsNyArNDEsMTAgQEAgb3B0aW9uKCdjYXNzZXJ0JywgdHlwZTogJ2Jv b2xlYW4nLCB2YWx1ZTogZmFsc2UsCiAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIGFzc2VydGlvbiBj aGVja3MgKGZvciBkZWJ1Z2dpbmcpJykKIAogb3B0aW9uKCd0YXBfdGVzdHMnLCB0eXBlOiAnZmVh dHVyZScsIHZhbHVlOiAnYXV0bycsCi0gIGRlc2NyaXB0aW9uOiAnRW5hYmxlIFRBUCB0ZXN0cycp CisgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIChQZXJsLWJhc2VkKSBUQVAgdGVzdHMnKQorCitvcHRp b24oJ3B5dGVzdCcsIHR5cGU6ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywKKyAgZGVzY3JpcHRp b246ICdFbmFibGUgKFB5dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRlcycpCiAKIG9wdGlvbignaW5q ZWN0aW9uX3BvaW50cycsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IGZhbHNlLAogICBkZXNjcmlw dGlvbjogJ0VuYWJsZSBpbmplY3Rpb24gcG9pbnRzJykKQEAgLTE5NSw2ICsxOTgsOSBAQCBvcHRp b24oJ1BFUkwnLCB0eXBlOiAnc3RyaW5nJywgdmFsdWU6ICdwZXJsJywKIG9wdGlvbignUFJPVkUn LCB0eXBlOiAnc3RyaW5nJywgdmFsdWU6ICdwcm92ZScsCiAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0 byBwcm92ZSBiaW5hcnknKQogCitvcHRpb24oJ1BZVEVTVCcsIHR5cGU6ICdhcnJheScsIHZhbHVl OiBbJ3B5dGVzdCcsICdweS50ZXN0J10sCisgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBweXRlc3Qg YmluYXJ5JykKKwogb3B0aW9uKCdQWVRIT04nLCB0eXBlOiAnYXJyYXknLCB2YWx1ZTogWydweXRo b24zJywgJ3B5dGhvbiddLAogICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHl0aG9uIGJpbmFyeScp CiAKZGlmZiAtLWdpdCBhL3B5dGVzdC5pbmkgYi9weXRlc3QuaW5pCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZTgzODhmM2FmYwotLS0gL2Rldi9udWxsCisrKyBiL3B5 dGVzdC5pbmkKQEAgLTAsMCArMSw2IEBACitbcHl0ZXN0XQorbWludmVyc2lvbiA9IDcuMAorCisj IElnbm9yZSAuL2NvbmZpZyAod2hpY2ggY29udGFpbnMgdGhlIGNvbmZpZ3VyZS10aW1lIGNoZWNr X3B5dGVzdC5weSB0ZXN0cykgYnkKKyMgZGVmYXVsdC4KK2FkZG9wdHMgPSAtLWlnbm9yZSAuL2Nv bmZpZwpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtlZmlsZS5n bG9iYWwuaW4KaW5kZXggMGFhMzg5YmM3MTAuLjhhNjg4NTIwNmNlIDEwMDY0NAotLS0gYS9zcmMv TWFrZWZpbGUuZ2xvYmFsLmluCisrKyBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KQEAgLTIxMSw2 ICsyMTEsNyBAQCBlbmFibGVfZHRyYWNlCT0gQGVuYWJsZV9kdHJhY2VACiBlbmFibGVfY292ZXJh Z2UJPSBAZW5hYmxlX2NvdmVyYWdlQAogZW5hYmxlX2luamVjdGlvbl9wb2ludHMgPSBAZW5hYmxl X2luamVjdGlvbl9wb2ludHNACiBlbmFibGVfdGFwX3Rlc3RzCT0gQGVuYWJsZV90YXBfdGVzdHNA CitlbmFibGVfcHl0ZXN0CT0gQGVuYWJsZV9weXRlc3RACiAKIHB5dGhvbl9pbmNsdWRlc3BlYwk9 IEBweXRob25faW5jbHVkZXNwZWNACiBweXRob25fbGliZGlyCQk9IEBweXRob25fbGliZGlyQApA QCAtMzUzLDYgKzM1NCw3IEBAIE1TR0ZNVCAgPSBATVNHRk1UQAogTVNHRk1UX0ZMQUdTID0gQE1T R0ZNVF9GTEFHU0AKIE1TR01FUkdFID0gQE1TR01FUkdFQAogT1BFTlNTTAk9IEBPUEVOU1NMQAor UFlURVNUCT0gQFBZVEVTVEAKIFBZVEhPTgk9IEBQWVRIT05ACiBUQVIJPSBAVEFSQAogWEdFVFRF WFQgPSBAWEdFVFRFWFRACkBAIC01MDcsNiArNTA5LDI3IEBAIHByb3ZlX2luc3RhbGxjaGVjayA9 IEBlY2hvICJUQVAgdGVzdHMgbm90IGVuYWJsZWQuIFRyeSBjb25maWd1cmluZyB3aXRoIC0tZW5h YmxlCiBwcm92ZV9jaGVjayA9ICQocHJvdmVfaW5zdGFsbGNoZWNrKQogZW5kaWYKIAoraWZlcSAo JChlbmFibGVfcHl0ZXN0KSx5ZXMpCisKK3B5dGVzdF9pbnN0YWxsY2hlY2sgPSBAZWNobyAiSW5z dGFsbGNoZWNrIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciBweXRlc3QuIgorCitkZWZp bmUgcHl0ZXN0X2NoZWNrCitlY2hvICIjICsrKyBweXRlc3QgY2hlY2sgaW4gJChzdWJkaXIpICsr KyIgJiYgXAorcm0gLXJmICckKENVUkRJUiknL3RtcF9jaGVjayAmJiBcCiskKE1LRElSX1ApICck KENVUkRJUiknL3RtcF9jaGVjayAmJiBcCitjZCAkKHNyY2RpcikgJiYgXAorICAgVEVTVExPR0RJ Uj0nJChDVVJESVIpL3RtcF9jaGVjay9sb2cnIFwKKyAgIFRFU1REQVRBRElSPSckKENVUkRJUikv dG1wX2NoZWNrJyBcCisgICBQWVRIT05QQVRIPSckKGFic190b3Bfc3JjZGlyKS9zcmMvdGVzdC9w eXRlc3QvcGx1Z2luczokJFBZVEhPTlBBVEgnIFwKKyAgICQod2l0aF90ZW1wX2luc3RhbGwpIFwK KyAgICQoUFlURVNUKSAtYyAnJChhYnNfdG9wX3NyY2RpcikvcHl0ZXN0LmluaScgLS12ZXJib3Nl IC1yYSAuL3B5dC8KK2VuZGVmCisKK2Vsc2UKK3B5dGVzdF9pbnN0YWxsY2hlY2sgPSBAZWNobyAi cHl0ZXN0IGlzIG5vdCBlbmFibGVkLiBUcnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1weXRl c3QiCitweXRlc3RfY2hlY2sgPSAkKHB5dGVzdF9pbnN0YWxsY2hlY2spCitlbmRpZgorCiAjIElu c3RhbGxhdGlvbi4KIAogaW5zdGFsbF9iaW4gPSBAaW5zdGFsbF9iaW5ACmRpZmYgLS1naXQgYS9z cmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkIGIvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZAppbmRl eCAwZGVmMjQ0YzkwMS4uZjY4YWNkNTdiYzQgMTAwNjQ0Ci0tLSBhL3NyYy9tYWtlZmlsZXMvbWVz b24uYnVpbGQKKysrIGIvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZApAQCAtNTYsNiArNTYsNyBA QCBwZ3hzX2t2ID0gewogICAnZW5hYmxlX25scyc6IGxpYmludGwuZm91bmQoKSA/ICd5ZXMnIDog J25vJywKICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0aW9u X3BvaW50cycpID8gJ3llcycgOiAnbm8nLAogICAnZW5hYmxlX3RhcF90ZXN0cyc6IHRhcF90ZXN0 c19lbmFibGVkID8gJ3llcycgOiAnbm8nLAorICAnZW5hYmxlX3B5dGVzdCc6IHB5dGVzdF9lbmFi bGVkID8gJ3llcycgOiAnbm8nLAogICAnZW5hYmxlX2RlYnVnJzogZ2V0X29wdGlvbignZGVidWcn KSA/ICd5ZXMnIDogJ25vJywKICAgJ2VuYWJsZV9jb3ZlcmFnZSc6ICdubycsCiAgICdlbmFibGVf ZHRyYWNlJzogZHRyYWNlLmZvdW5kKCkgPyAneWVzJyA6ICdubycsCkBAIC0xNDUsNiArMTQ2LDcg QEAgcGd4c19iaW5zID0gewogICAnT1BFTlNTTCc6IG9wZW5zc2wsCiAgICdQRVJMJzogcGVybCwK ICAgJ1BST1ZFJzogcHJvdmUsCisgICdQWVRFU1QnOiBweXRlc3QsCiAgICdQWVRIT04nOiBweXRo b24sCiAgICdUQVInOiB0YXIsCiAgICdaU1REJzogcHJvZ3JhbV96c3RkLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvTWFrZWZpbGUgYi9zcmMvdGVzdC9NYWtlZmlsZQppbmRleCA1MTFhNzJlNjIzOC4u MGJlOTc3MWQ3MWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0 L01ha2VmaWxlCkBAIC0xMiw3ICsxMiwxNiBAQCBzdWJkaXIgPSBzcmMvdGVzdAogdG9wX2J1aWxk ZGlyID0gLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwK IAotU1VCRElSUyA9IHBlcmwgcG9zdG1hc3RlciByZWdyZXNzIGlzb2xhdGlvbiBtb2R1bGVzIGF1 dGhlbnRpY2F0aW9uIHJlY292ZXJ5IHN1YnNjcmlwdGlvbgorU1VCRElSUyA9IFwKKwlhdXRoZW50 aWNhdGlvbiBcCisJaXNvbGF0aW9uIFwKKwltb2R1bGVzIFwKKwlwZXJsIFwKKwlwb3N0bWFzdGVy IFwKKwlweXRlc3QgXAorCXJlY292ZXJ5IFwKKwlyZWdyZXNzIFwKKwlzdWJzY3JpcHRpb24KIAog aWZlcSAoJCh3aXRoX2ljdSkseWVzKQogU1VCRElSUyArPSBpY3UKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKaW5kZXggY2NjMzFkNmE4NmEu LmQwOGE2ZWY2MWMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tZXNvbi5idWlsZApAQCAtNSw2ICs1LDcgQEAgc3ViZGlyKCdpc29sYXRpb24nKQogCiBz dWJkaXIoJ2F1dGhlbnRpY2F0aW9uJykKIHN1YmRpcigncG9zdG1hc3RlcicpCitzdWJkaXIoJ3B5 dGVzdCcpCiBzdWJkaXIoJ3JlY292ZXJ5JykKIHN1YmRpcignc3Vic2NyaXB0aW9uJykKIHN1YmRp cignbW9kdWxlcycpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUgYi9zcmMv dGVzdC9weXRlc3QvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjJiZGNhOTZjY2JlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L01ha2Vm aWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlIGZv ciBweXRlc3QKKyMKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisjCisjIHNyYy90ZXN0 L3B5dGVzdC9NYWtlZmlsZQorIworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViZGlyID0gc3JjL3Rl c3QvcHl0ZXN0Cit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAorCitjaGVjazoKKwkkKHB5dGVzdF9jaGVjaykKKworY2xl YW4gZGlzdGNsZWFuIG1haW50YWluZXItY2xlYW46CisJcm0gLXJmIHRtcF9jaGVjawpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRSBiL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjEzMzNlZDc3YjdlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQpAQCAtMCwwICsxIEBACitUT0RPCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9weXRlc3Qv bWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFiZDEy OGRmYTI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCkBA IC0wLDAgKzEsMTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCitpZiBub3QgcHl0ZXN0X2VuYWJsZWQKKyAgc3ViZGlyX2RvbmUo KQorZW5kaWYKKwordGVzdHMgKz0geworICAnbmFtZSc6ICdweXRlc3QnLAorICAnc2QnOiBtZXNv bi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIo KSwKKyAgJ3B5dGVzdCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAncHl0L3Rlc3Rfc29tZXRo aW5nLnB5JywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3Bs dWdpbnMvcGd0YXAucHkgYi9zcmMvdGVzdC9weXRlc3QvcGx1Z2lucy9wZ3RhcC5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWY4MjkxZTI5MWMKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9weXRlc3QvcGx1Z2lucy9wZ3RhcC5weQpAQCAtMCwwICsxLDE5MyBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFs CisKK2ltcG9ydCBweXRlc3QKKworIworIyBIZWxwZXJzCisjCisKKworY2xhc3MgVEFQOgorICAg ICIiIgorICAgIEEgYmFzaWMgQVBJIGZvciByZXBvcnRpbmcgdmlhIHRoZSBUQVAgcHJvdG9jb2wu CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuY291bnQg PSAwCisKKyAgICAgICAgIyBYWFggaW50ZXJhY3RzIHBvb3JseSB3aXRoIHRlc3R3cmFwJ3MgYm9p bGVycGxhdGUgZGlhZ25vc3RpY3MKKyAgICAgICAgIyBzZWxmLnByaW50KCJUQVAgdmVyc2lvbiAx MyIpCisKKyAgICBkZWYgZXhwZWN0KHNlbGYsIG51bTogaW50KToKKyAgICAgICAgc2VsZi5wcmlu dChmIjEuLntudW19IikKKworICAgIGRlZiBwcmludChzZWxmLCAqYXJncyk6CisgICAgICAgIHBy aW50KCphcmdzLCBmaWxlPXN5cy5fX3N0ZG91dF9fKQorCisgICAgZGVmIG9rKHNlbGYsIG5hbWU6 IHN0cik6CisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICBzZWxmLnByaW50KCJvayIs IHNlbGYuY291bnQsICItIiwgbmFtZSkKKworICAgIGRlZiBza2lwKHNlbGYsIG5hbWU6IHN0ciwg cmVhc29uOiBzdHIpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5wcmlu dCgib2siLCBzZWxmLmNvdW50LCAiLSIsIG5hbWUsICIjIHNraXAiLCByZWFzb24pCisKKyAgICBk ZWYgZmFpbChzZWxmLCBuYW1lOiBzdHIsIGRldGFpbHM6IHN0cik6CisgICAgICAgIHNlbGYuY291 bnQgKz0gMQorICAgICAgICBzZWxmLnByaW50KCJub3Qgb2siLCBzZWxmLmNvdW50LCAiLSIsIG5h bWUpCisKKyAgICAgICAgIyBtdGVzdCBoYXMgc29tZSBvZGQgYmVoYXZpb3IgYXJvdW5kIFRBUCB0 ZXN0cyB3aGVyZSBpdCB3b24ndCBwcmludAorICAgICAgICAjIGRpYWdub3N0aWNzIG9uIGZhaWx1 cmUgaWYgdGhleSdyZSBwYXJ0IG9mIHRoZSBzdGRvdXQgc3RyZWFtLCBzbyB3ZQorICAgICAgICAj IG1pZ2h0IGFzIHdlbGwganVzdCBkdW1wIHRoZSBkZXRhaWxzIGRpcmVjdGx5IHRvIHN0ZGVyciBp bnN0ZWFkLgorICAgICAgICBwcmludChkZXRhaWxzLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorCisK K3RhcCA9IFRBUCgpCisKKworY2xhc3MgVGVzdE5vdGVzOgorICAgICIiIgorICAgIEFubm90YXRp b25zIGZvciBhIHNpbmdsZSB0ZXN0LiBUaGUgZXhpc3RpbmcgcHl0ZXN0IGhvb2tzIGtlZXAgaW50 ZXJlc3RpbmcKKyAgICBpbmZvcm1hdGlvbiBzb21ld2hhdCBzZXBhcmF0ZWQgYWNyb3NzIHRoZSBk aWZmZXJlbnQgc3RhZ2VzCisgICAgKHNldHVwL3Rlc3QvdGVhcmRvd24pLCBzbyB0aGlzIGNsYXNz IGlzIHVzZWQgdG8gY29ycmVsYXRlIHRoZW0uCisgICAgIiIiCisKKyAgICBza2lwcGVkID0gRmFs c2UKKyAgICBza2lwX3JlYXNvbiA9IE5vbmUKKworICAgIGZhaWxlZCA9IEZhbHNlCisgICAgZGV0 YWlscyA9ICIiCisKKworIyBSZWdpc3RlciBhIGN1c3RvbSBrZXkgaW4gdGhlIHN0YXNoIGRpY3Rp b25hcnkgZm9yIGtlZXBpbmcgb3VyIFRlc3ROb3Rlcy4KK25vdGVzX2tleSA9IHB5dGVzdC5TdGFz aEtleVtUZXN0Tm90ZXNdKCkKKworCisjCisjIEhvb2sgSW1wbGVtZW50YXRpb25zCisjCisKKwor QHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQorZGVmIHB5dGVzdF9jb25maWd1cmUoY29u ZmlnKToKKyAgICAiIiIKKyAgICBIaWphY2tzIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFzIHNvb24g YXMgcG9zc2libGUgZHVyaW5nIHB5dGVzdCBzdGFydHVwLiBUaGUKKyAgICBweXRlc3QtZm9ybWF0 dGVkIG91dHB1dCBnZXRzIGxvZ2dlZCB0byBmaWxlIGluc3RlYWQsIGFuZCB3ZSdsbCB1c2UgdGhl CisgICAgb3JpZ2luYWwgc3lzLl9fc3Rkb3V0X18vX19zdGRlcnJfXyBzdHJlYW1zIGZvciB0aGUg VEFQIHByb3RvY29sLgorICAgICIiIgorICAgIGxvZ2RpciA9IG9zLmdldGVudigiVEVTVExPR0RJ UiIpCisgICAgaWYgbm90IGxvZ2RpcjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJwZ3Rh cCByZXF1aXJlcyB0aGUgVEVTVExPR0RJUiBlbnZ2YXIgdG8gYmUgc2V0IikKKworICAgIG9zLm1h a2VkaXJzKGxvZ2RpcikKKyAgICBsb2dwYXRoID0gb3MucGF0aC5qb2luKGxvZ2RpciwgInB5dGVz dC5sb2ciKQorICAgIHN5cy5zdGRvdXQgPSBzeXMuc3RkZXJyID0gb3Blbihsb2dwYXRoLCAiYSIs IGJ1ZmZlcmluZz0xKQorCisKK0BweXRlc3QuaG9va2ltcGwodHJ5bGFzdD1UcnVlKQorZGVmIHB5 dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb24sIGV4aXRzdGF0dXMpOgorICAgICIiIgorICAgIFN1 cHByZXNzZXMgbm9uemVybyBleGl0IGNvZGVzIGR1ZSB0byBmYWlsZWQgdGVzdHMuIChJbiB0aGF0 IGNhc2UsIHdlIHdhbnQKKyAgICBNZXNvbiB0byByZXBvcnQgYSBmYWlsdXJlIGNvdW50LCBub3Qg YSBnZW5lcmljIEVSUk9SLikKKyAgICAiIiIKKyAgICBpZiBleGl0c3RhdHVzID09IHB5dGVzdC5F eGl0Q29kZS5URVNUU19GQUlMRUQ6CisgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9IHB5dGVz dC5FeGl0Q29kZS5PSworCisKK0BweXRlc3QuaG9va2ltcGwKK2RlZiBweXRlc3RfY29sbGVjdHJl cG9ydChyZXBvcnQpOgorICAgICMgSW5jbHVkZSBjb2xsZWN0aW9uIGZhaWx1cmVzIGRpcmVjdGx5 IGluIE1lc29uIGVycm9yIG91dHB1dC4KKyAgICBpZiByZXBvcnQuZmFpbGVkOgorICAgICAgICBw cmludChyZXBvcnQubG9uZ3JlcHJ0ZXh0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorCisKK0BweXRl c3QuaG9va2ltcGwKK2RlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihleGNyZXByLCBleGNpbmZvKToK KyAgICAjIEluY2x1ZGUgaW50ZXJuYWwgZXJyb3JzIGRpcmVjdGx5IGluIE1lc29uIGVycm9yIG91 dHB1dC4KKyAgICBwcmludChleGNyZXByLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorCisKKyMKKyMg SG9vayBXcmFwcGVycworIworIyBJbiBweXRlc3QgcGFybGFuY2UsIGEgIndyYXBwZXIiIGZvciBh IGhvb2sgY2FuIGluc3BlY3QgYW5kIG9wdGlvbmFsbHkgbW9kaWZ5CisjIGV4aXN0aW5nIGhvb2tz JyBiZWhhdmlvciwgYnV0IGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlIGhvb2sgY2hhaW4uIFRoaXMg aXMgZG9uZQorIyB0aHJvdWdoIGEgZ2VuZXJhdG9yLXN0eWxlIEFQSSB3aGljaCBjaGFpbnMgdGhl IGhvb2tzIHRvZ2V0aGVyIChzZWUgdGhlIHVzZSBvZgorIyBgeWllbGRgKS4KKyMKKworCitAcHl0 ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vz c2lvbik6CisgICAgIiIiUmVwb3J0cyB0aGUgbnVtYmVyIG9mIGdhdGhlcmVkIHRlc3RzIGFmdGVy IGNvbGxlY3Rpb24gaXMgZmluaXNoZWQuIiIiCisgICAgcmVzID0geWllbGQKKyAgICB0YXAuZXhw ZWN0KHNlc3Npb24udGVzdHNjb2xsZWN0ZWQpCisgICAgcmV0dXJuIHJlcworCisKK0BweXRlc3Qu aG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKK2RlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0 KGl0ZW0sIGNhbGwpOgorICAgICIiIgorICAgIEFubm90YXRlcyBhIHRlc3QgaXRlbSB3aXRoIG91 ciBUZXN0Tm90ZXMgYW5kIGdyYWJzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgorICAgIHJlcG9y dGluZy4KKworICAgIFRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlciB0ZXN0LCBzbyBp dCdzIG5vdCBjb3JyZWN0IHRvIHByaW50IHRoZSBUQVAKKyAgICByZXN1bHQgaGVyZS4gKEEgdGVz dCBhbmQgaXRzIHRlYXJkb3duIHN0YWdlIGNhbiBib3RoIGZhaWwsIGFuZCB3ZSB3YW50IHRvCisg ICAgc2VlIHRoZSBkZXRhaWxzIGZvciBib3RoLikgV2UgaW5zdGVhZCBjb21iaW5lIGFsbCB0aGUg aW5mb3JtYXRpb24gZm9yIHVzZSBieQorICAgIG91ciBweXRlc3RfcnVudGVzdF9wcm90b2NvbCB3 cmFwcGVyIGxhdGVyIG9uLgorICAgICIiIgorICAgIHJlcyA9IHlpZWxkCisKKyAgICBpZiBub3Rl c19rZXkgbm90IGluIGl0ZW0uc3Rhc2g6CisgICAgICAgIGl0ZW0uc3Rhc2hbbm90ZXNfa2V5XSA9 IFRlc3ROb3RlcygpCisgICAgbm90ZXMgPSBpdGVtLnN0YXNoW25vdGVzX2tleV0KKworICAgIHJl cG9ydCA9IHJlcy5nZXRfcmVzdWx0KCkKKyAgICBpZiByZXBvcnQucGFzc2VkOgorICAgICAgICBw YXNzICAjIG5vIGFubm90YXRpb24gbmVlZGVkCisKKyAgICBlbGlmIHJlcG9ydC5za2lwcGVkOgor ICAgICAgICBub3Rlcy5za2lwcGVkID0gVHJ1ZQorICAgICAgICBfLCBfLCBub3Rlcy5za2lwX3Jl YXNvbiA9IHJlcG9ydC5sb25ncmVwcgorCisgICAgZWxpZiByZXBvcnQuZmFpbGVkOgorICAgICAg ICBub3Rlcy5mYWlsZWQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90IG5vdGVzLmRldGFpbHM6Cisg ICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9ICJ7Ol9eNzJ9XG5cbiIuZm9ybWF0KGYiIHtyZXBv cnQuaGVhZF9saW5lfSAiKQorCisgICAgICAgIGlmIHJlcG9ydC53aGVuIGluICgic2V0dXAiLCAi dGVhcmRvd24iKToKKyAgICAgICAgICAgIG5vdGVzLmRldGFpbHMgKz0gIlxuezpfXjcyfVxuXG4i LmZvcm1hdCgKKyAgICAgICAgICAgICAgICBmIiBFcnJvciBkdXJpbmcge3JlcG9ydC53aGVufSBv ZiB7cmVwb3J0LmhlYWRfbGluZX0gIgorICAgICAgICAgICAgKQorCisgICAgICAgIG5vdGVzLmRl dGFpbHMgKz0gcmVwb3J0LmxvbmdyZXBydGV4dCArICJcbiIKKworICAgIGVsc2U6CisgICAgICAg IHJhaXNlIFJ1bnRpbWVFcnJvcigicHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydCByZWNlaXZlZCB1 bmtub3duIHRlc3Qgc3RhdHVzIikKKworICAgIHJldHVybiByZXMKKworCitAcHl0ZXN0Lmhvb2tp bXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSwg bmV4dGl0ZW0pOgorICAgICIiIgorICAgIFJlcG9ydHMgdGhlIFRBUCByZXN1bHQgZm9yIHRoaXMg dGVzdCBpdGVtIHVzaW5nIG91ciBnYXRoZXJlZCBUZXN0Tm90ZXMuCisgICAgIiIiCisgICAgcmVz ID0geWllbGQKKworICAgIGFzc2VydCBub3Rlc19rZXkgaW4gaXRlbS5zdGFzaCwgInBndGFwIGRp ZG4ndCBhbm5vdGF0ZSBhIHRlc3QgaXRlbT8iCisgICAgbm90ZXMgPSBpdGVtLnN0YXNoW25vdGVz X2tleV0KKworICAgIGlmIG5vdGVzLmZhaWxlZDoKKyAgICAgICAgdGFwLmZhaWwoaXRlbS5ub2Rl aWQsIG5vdGVzLmRldGFpbHMpCisgICAgZWxpZiBub3Rlcy5za2lwcGVkOgorICAgICAgICB0YXAu c2tpcChpdGVtLm5vZGVpZCwgbm90ZXMuc2tpcF9yZWFzb24pCisgICAgZWxzZToKKyAgICAgICAg dGFwLm9rKGl0ZW0ubm9kZWlkKQorCisgICAgcmV0dXJuIHJlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcHl0ZXN0L3B5dC90ZXN0X3NvbWV0aGluZy5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVz dF9zb21ldGhpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVi ZDQ1NjE4NTEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X3Nv bWV0aGluZy5weQpAQCAtMCwwICsxLDE3IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IHB5dGVzdAorCisKK0BweXRl c3QuZml4dHVyZQorZGVmIGhleSgpOgorICAgIHlpZWxkCisgICAgcmFpc2UgInVoLW9oIgorCisK K2RlZiB0ZXN0X3NvbWV0aGluZyhoZXkpOgorICAgIGFzc2VydCAyID09IDQKKworCitkZWYgdGVz dF9zb21ldGhpbmdfZWxzZSgpOgorICAgIGFzc2VydCAyID09IDIKLS0gCjIuNTEuMQoK --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0003-WIP-pytest-Add-some-SSL-client-tests.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0003-WIP-pytest-Add-some-SSL-client-tests.patch RnJvbSBmMGNmOGI1MDJiMTgzYzExM2E4MmExMTNiOGMwYTc1YzliMGY3OTA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxOSBBdWcgMjAyNSAxMjo1Njo0NSAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjMgMDMvMTBdIFdJUDogcHl0ZXN0OiBBZGQgc29tZSBTU0wgY2xpZW50IHRlc3Rz CgpUaGlzIGlzIGEgc2FtcGxlIGNsaWVudC1vbmx5IHRlc3Qgc3VpdGUuIEl0IHRlc3RzIHNvbWUg aGFuZHNoYWtlCmZhaWx1cmVzIGFnYWluc3QgYSBtb2NrIHNlcnZlciwgYXMgd2VsbCBhcyBhIGZ1 bGwgU1NMIGhhbmRzaGFrZSArIGVtcHR5CnF1ZXJ5ICsgcmVzcG9uc2UuCgpweWNhL2NyeXB0b2dy YXBoeSBpcyBhZGRlZCBhcyBhIG5ldyBwYWNrYWdlIGRlcGVuZGVuY3kuIENlcnRpZmljYXRlcyBm b3IKdGVzdGluZyBhcmUgZ2VuZXJhdGVkIG9uIHRoZSBmbHkuCgpUaGUgYHBnYCB0ZXN0IHBhY2th Z2UgY29udGFpbnMgc29tZSBoZWxwZXJzIGFuZCBmaXh0dXJlcyAoYXMgd2VsbCBhcwpzb21lIHNl bGYtdGVzdHMgZm9yIG1vcmUgY29tcGxpY2F0ZWQgYmVoYXZpb3IpLiBPZiBub3RlOgoKLSBwZy5y ZXF1aXJlX3Rlc3RfZXh0cmEoKSBsZXRzIHlvdSBtYXJrIGEgdGVzdC9jbGFzcy9tb2R1bGUgYXMg c2tpcHBhYmxlCiAgaWYgUEdfVEVTVF9FWFRSQSBkb2VzIG5vdCBjb250YWluIHRoZSBuZWNlc3Nh cnkgc3RyaW5ncy4KCi0gcGcucmVtYWluaW5nX3RpbWVvdXQoKSBpcyBhIGZ1bmN0aW9uIHdoaWNo IGNhbiBiZSByZXBlYXRlZGx5IGNhbGxlZCB0bwogIGRldGVybWluZSBob3cgbXVjaCBvZiB0aGUg UEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgcmVtYWlucyBmb3IgdGhlCiAgY3VycmVudCB0ZXN0IGl0 ZW0uCgotIHBnLmxpYnBxIGlzIGEgZml4dHVyZSB0aGF0IHdyYXBzIGxpYnBxLnNvIGluIGEgbW9y ZSBmcmllbmRseSwgYnV0CiAgc3RpbGwgbG93LWxldmVsLCBjdHlwZXMgRkZJLiBBbGxvY2F0ZWQg cmVzb3VyY2VzIGFyZSB1bndvdW5kIGFuZAogIHJlbGVhc2VkIGR1cmluZyB0ZXN0IHRlYXJkb3du LgoKVGhlIG1vY2sgZGVzaWduIGlzIHRocmVhZGVkOiB0aGUgc2VydmVyIHNvY2tldCBpcyBsaXN0 ZW5pbmcgb24gYQpiYWNrZ3JvdW5kIHRocmVhZCwgYW5kIHRoZSB0ZXN0IHByb3ZpZGVzIHRoZSBz ZXJ2ZXIgbG9naWMgdmlhIGEKY2FsbGJhY2suIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCB3b3Jr IHN0aWxsIG5lZWRlZCB0byBtYWtlIHRoaXMKcHJvZHVjdGlvbi1yZWFkeTsgc2VlIHRoZSBub3Rl cyBmb3IgX1RDUFNlcnZlci5iYWNrZ3JvdW5kKCkuIChDdXJyZW50bHksCmFuIGV4Y2VwdGlvbiBp biB0aGUgd3JvbmcgcGxhY2UgY291bGQgcmVzdWx0IGluIGEgaGFuZy11bnRpbC10aW1lb3V0CnJh dGhlciB0aGFuIGFuIGltbWVkaWF0ZSBmYWlsdXJlLikKClRPRE9zOgotIGxvY2FsX3NlcnZlciBh bmQgdGNwX3NlcnZlcl9jbGFzcyBhcmUgbmVhcmx5IGlkZW50aWNhbCBhbmQgc2hvdWxkCiAgc2hh cmUgY29kZS4KLSBmaXggZXhjZXB0aW9uLXJlbGF0ZWQgdGltZW91dHMgZm9yIC5iYWNrZ3JvdW5k KCkKLSBmaWd1cmUgb3V0IHRoZSBwcm9wZXIgdXNlIG9mICJzZXNzaW9uIiB2cyAibW9kdWxlIiBz Y29wZQotIGVuc3VyZSB0aGF0IHBxLmxpYnBxIHVud2luZHMgKHRvIGNsb3NlIGNvbm5lY3Rpb25z KSBiZWZvcmUgdGNwX3NlcnZlcjsKICBzZWUgY29tbWVudCBpbiB0ZXN0X3NlcnZlcl93aXRoX3Nz bF9kaXNhYmxlZCgpCi0tLQogLmNpcnJ1cy50YXNrcy55bWwgICAgICAgICAgICAgICAgIHwgIDE4 ICstCiBjb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQgICAgfCAgMTAgKysKIHB5dGVzdC5p bmkgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9weXRlc3QvbWVzb24u YnVpbGQgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcHl0ZXN0L3BnL19faW5pdF9fLnB5ICAgIHwg ICAzICsKIHNyYy90ZXN0L3B5dGVzdC9wZy9fZW52LnB5ICAgICAgICB8ICA1NSArKysrKysKIHNy Yy90ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5weSAgICB8IDIxMiArKysrKysrKysrKysrKysrKysr KysrKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weSAgIHwgICAzICsKIHNyYy90ZXN0 L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weSB8IDE3MSArKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3NzbC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9zc2wvbWVzb24u YnVpbGQgICAgICAgICAgfCAgIDYgKwogc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weSAgICAg IHwgMTI5ICsrKysrKysrKysrKysrCiBzcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5ICAg fCAyNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA4 ODUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9weXRlc3QvcGcvX19pbml0X18ucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9w eXRlc3QvcGcvX2Vudi5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9wZy9m aXh0dXJlcy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRl c3QucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEu cHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVudC5weQoKZGlmZiAtLWdp dCBhLy5jaXJydXMudGFza3MueW1sIGIvLmNpcnJ1cy50YXNrcy55bWwKaW5kZXggODBmOWIzOTRi ZDIuLjRlNzQ0ZjFjMTA1IDEwMDY0NAotLS0gYS8uY2lycnVzLnRhc2tzLnltbAorKysgYi8uY2ly cnVzLnRhc2tzLnltbApAQCAtMjI1LDYgKzIyNSw3IEBAIHRhc2s6CiAgICAgc3lzY3RsIGtlcm4u Y29yZWZpbGU9Jy90bXAvY29yZXMvJU4uJVAuY29yZScKICAgc2V0dXBfYWRkaXRpb25hbF9wYWNr YWdlc19zY3JpcHQ6IHwKICAgICBwa2cgaW5zdGFsbCAteSBcCisgICAgICBweTMxMS1jcnlwdG9n cmFwaHkgXAogICAgICAgcHkzMTEtcGFja2FnaW5nIFwKICAgICAgIHB5MzExLXB5dGVzdAogCkBA IC0zMTYsNiArMzE3LDcgQEAgdGFzazoKIAogICAgICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdl c19zY3JpcHQ6IHwKICAgICAgICAgcGtnaW4gLXkgaW5zdGFsbCBcCisgICAgICAgICAgcHkzMTIt Y3J5cHRvZ3JhcGh5IFwKICAgICAgICAgICBweTMxMi1wYWNrYWdpbmcgXAogICAgICAgICAgIHB5 MzEyLXRlc3QKICAgICAgICAgbG4gLXMgL3Vzci9wa2cvYmluL3B5dGVzdC0zLjEyIC91c3IvcGtn L2Jpbi9weXRlc3QKQEAgLTMzOSw4ICszNDEsOSBAQCB0YXNrOgogCiAgICAgICBzZXR1cF9hZGRp dGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAogICAgICAgICBwa2dfYWRkIC1JIFwKLSAgICAgICAg ICBweTMtdGVzdCBcCi0gICAgICAgICAgcHkzLXBhY2thZ2luZworICAgICAgICAgIHB5My1jcnlw dG9ncmFwaHkgXAorICAgICAgICAgIHB5My1wYWNrYWdpbmcgXAorICAgICAgICAgIHB5My10ZXN0 CiAgICAgICAjIEFsd2F5cyBjb3JlIGR1bXAgdG8gJHtDT1JFX0RVTVBfRElSfQogICAgICAgc2V0 X2NvcmVfZHVtcF9zY3JpcHQ6IHN5c2N0bCAtdyBrZXJuLm5vc3VpZGNvcmVkdW1wPTIKICAgICAg IDw8OiAqb3BlbmJzZF90YXNrX3RlbXBsYXRlCkBAIC01MDEsOCArNTA0LDkgQEAgdGFzazoKICAg c2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKICAgICBhcHQtZ2V0IHVwZGF0ZQog ICAgIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IC15IGluc3RhbGwgXAot ICAgICAgcHl0aG9uMy1weXRlc3QgXAotICAgICAgcHl0aG9uMy1wYWNrYWdpbmcKKyAgICAgIHB5 dGhvbjMtY3J5cHRvZ3JhcGh5IFwKKyAgICAgIHB5dGhvbjMtcGFja2FnaW5nIFwKKyAgICAgIHB5 dGhvbjMtcHl0ZXN0CiAKICAgbWF0cml4OgogICAgICMgU1BFQ0lBTDoKQEAgLTY0Myw2ICs2NDcs NyBAQCB0YXNrOgogICAgIENJUlJVU19XT1JLSU5HX0RJUjogJHtIT01FfS9wZ3NxbC8KICAgICBD Q0FDSEVfRElSOiAke0hPTUV9L2NjYWNoZQogICAgIE1BQ1BPUlRTX0NBQ0hFOiAke0hPTUV9L21h Y3BvcnRzLWNhY2hlCisgICAgUFlURVNUX0RFQlVHX1RFTVBST09UOiAvdG1wICAjIGRlZmF1bHQg aXMgdG9vIGxvbmcgZm9yIFVOSVggc29ja2V0cyBvbiBNYWMKIAogICAgIE1FU09OX0ZFQVRVUkVT OiA+LQogICAgICAgLURib25qb3VyPWVuYWJsZWQKQEAgLTY2Myw2ICs2NjgsNyBAQCB0YXNrOgog ICAgICAgcDUuMzQtaW8tdHR5CiAgICAgICBwNS4zNC1pcGMtcnVuCiAgICAgICBweXRob24zMTIK KyAgICAgIHB5MzEyLWNyeXB0b2dyYXBoeQogICAgICAgcHkzMTItcGFja2FnaW5nCiAgICAgICBw eTMxMi1weXRlc3QKICAgICAgIHRjbApAQCAtODAxLDcgKzgwNyw3IEBAIHRhc2s6CiAgICMgWFhY IERvZXMgQ2hvY29sYXRleSByZWFsbHkgbm90IGhhdmUgYW55IFB5dGhvbiBwYWNrYWdlIGluc3Rh bGxlcnM/CiAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8CiAgICAgUkVNIGNo b2NvIGluc3RhbGwgLXkgLS1uby1wcm9ncmVzcyAuLi4KLSAgICBwaXAzIGluc3RhbGwgLS11c2Vy IHBhY2thZ2luZyBweXRlc3QKKyAgICBwaXAzIGluc3RhbGwgLS11c2VyIGNyeXB0b2dyYXBoeSBw YWNrYWdpbmcgcHl0ZXN0CiAKICAgc2V0dXBfaG9zdHNfZmlsZV9zY3JpcHQ6IHwKICAgICBlY2hv IDEyNy4wLjAuMSBwZy1sb2FkYmFsYW5jZXRlc3QgPj4gYzpcV2luZG93c1xTeXN0ZW0zMlxEcml2 ZXJzXGV0Y1xob3N0cwpAQCAtODY0LDcgKzg3MCw3IEBAIHRhc2s6CiAgICAgZm9sZGVyOiAke0ND QUNIRV9ESVJ9CiAKICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKLSAgICBD Olxtc3lzNjRcdXNyXGJpblxwYWNtYW4uZXhlIC1TIC0tbm9jb25maXJtIG1pbmd3LXc2NC11Y3J0 LXg4Nl82NC1weXRob24tcGFja2FnaW5nIG1pbmd3LXc2NC11Y3J0LXg4Nl82NC1weXRob24tcHl0 ZXN0CisgICAgQzpcbXN5czY0XHVzclxiaW5ccGFjbWFuLmV4ZSAtUyAtLW5vY29uZmlybSBtaW5n dy13NjQtdWNydC14ODZfNjQtcHl0aG9uLWNyeXB0b2dyYXBoeSBtaW5ndy13NjQtdWNydC14ODZf NjQtcHl0aG9uLXBhY2thZ2luZyBtaW5ndy13NjQtdWNydC14ODZfNjQtcHl0aG9uLXB5dGVzdAog CiAgIG1pbmd3X2luZm9fc2NyaXB0OiB8CiAgICAgJUJBU0glIC1jICJ3aGVyZSBnY2MiCmRpZmYg LS1naXQgYS9jb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQgYi9jb25maWcvcHl0ZXN0LXJl cXVpcmVtZW50cy50eHQKaW5kZXggYjk0MTYyNGIyZjMuLjBiZDZjYWRmNjA4IDEwMDY0NAotLS0g YS9jb25maWcvcHl0ZXN0LXJlcXVpcmVtZW50cy50eHQKKysrIGIvY29uZmlnL3B5dGVzdC1yZXF1 aXJlbWVudHMudHh0CkBAIC0xOSwzICsxOSwxMyBAQCBweXRlc3QgPj0gNy4wLCA8IDkKIAogIyBw YWNrYWdpbmcgaXMgdXNlZCBieSBjaGVja19weXRlc3QucHkgYXQgY29uZmlndXJlIHRpbWUuCiBw YWNrYWdpbmcKKworIyBOb3RlcyBvbiB0aGUgY3J5cHRvZ3JhcGh5IHBhY2thZ2U6CisjIC0gMy4z LjIgaXMgc2hpcHBlZCBvbiBEZWJpYW4gYnVsbHNleWUuCisjIC0gMy40LnggZHJvcHMgc3VwcG9y dCBmb3IgUHl0aG9uIDIsIG1ha2luZyBpdCBhIHZlcnNpb24gb2Ygbm90ZSBmb3Igb2xkZXIgTFRT CisjICAgZGlzdHJvcy4KKyMgLSAzNS54IHN3aXRjaGVkIHZlcnNpb25pbmcgc2NoZW1lcyBhbmQg bW92ZWQgdG8gUnVzdCBwYXJzaW5nLgorIyAtIDQwLnggaXMgdGhlIGxhc3QgdmVyc2lvbiBzdXBw b3J0aW5nIFB5dGhvbiAzLjYuCisjIFhYWCBJcyBpdCBhcHByb3ByaWF0ZSB0byByZXF1aXJlIGNy eXB0b2dyYXBoeSwgb3Igc2hvdWxkIHdlIHNpbXBseSBza2lwCisjIGRlcGVuZGVudCB0ZXN0cz8K K2NyeXB0b2dyYXBoeSA+PSAzLjMuMgpkaWZmIC0tZ2l0IGEvcHl0ZXN0LmluaSBiL3B5dGVzdC5p bmkKaW5kZXggOGU4Mzg4ZjNhZmMuLmU3YWE4NGYzYTg0IDEwMDY0NAotLS0gYS9weXRlc3QuaW5p CisrKyBiL3B5dGVzdC5pbmkKQEAgLTQsMyArNCw2IEBAIG1pbnZlcnNpb24gPSA3LjAKICMgSWdu b3JlIC4vY29uZmlnICh3aGljaCBjb250YWlucyB0aGUgY29uZmlndXJlLXRpbWUgY2hlY2tfcHl0 ZXN0LnB5IHRlc3RzKSBieQogIyBkZWZhdWx0LgogYWRkb3B0cyA9IC0taWdub3JlIC4vY29uZmln CisKKyMgQ29tbW9uIHRlc3QgY29kZSBjYW4gYmUgZm91bmQgaGVyZS4KK3B5dGhvbnBhdGggPSBz cmMvdGVzdC9weXRlc3QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZCBi L3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZAppbmRleCBhYmQxMjhkZmEyNC4uZjUzMTkzZTg2 ODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVz dC9weXRlc3QvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcgQEAgdGVzdHMgKz0gewogICAncHl0 ZXN0JzogewogICAgICd0ZXN0cyc6IFsKICAgICAgICdweXQvdGVzdF9zb21ldGhpbmcucHknLAor ICAgICAgJ3B5dC90ZXN0X2xpYnBxLnB5JywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcHl0ZXN0L3BnL19faW5pdF9fLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3BnL19faW5p dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZjhmYWY1NGNh NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9wZy9fX2luaXRfXy5weQpAQCAt MCwwICsxLDMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorCitmcm9tIC5fZW52IGltcG9ydCBoYXNfdGVzdF9leHRyYSwgcmVxdWly ZV90ZXN0X2V4dHJhCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcGcvX2Vudi5weSBiL3Ny Yy90ZXN0L3B5dGVzdC9wZy9fZW52LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi42ZjE4YWYwNzg0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9w Zy9fZW52LnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9z Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwKKworaW1wb3J0IHB5dGVzdAorCits b2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitkZWYgaGFzX3Rlc3RfZXh0 cmEoa2V5OiBzdHIpIC0+IGJvb2w6CisgICAgIiIiCisgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBQ R19URVNUX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zIHRoZSBnaXZlbgorICAg IGtleS4KKyAgICAiIiIKKyAgICBleHRyYSA9IG9zLmdldGVudigiUEdfVEVTVF9FWFRSQSIsICIi KQorICAgIHJldHVybiBrZXkgaW4gZXh0cmEuc3BsaXQoKQorCisKK2RlZiByZXF1aXJlX3Rlc3Rf ZXh0cmEoKmtleXM6IHN0cikgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBBIGNvbnZlbmllbmNlIGFu bm90YXRpb24gd2hpY2ggd2lsbCBza2lwIHRlc3RzIGlmIGFsbCBvZiB0aGUgcmVxdWlyZWQga2V5 cworICAgIGFyZSBub3QgcHJlc2VudCBpbiBQR19URVNUX0VYVFJBLgorCisgICAgVG8gc2tpcCBh IHBhcnRpY3VsYXIgdGVzdCBmdW5jdGlvbiBvciBjbGFzczoKKworICAgICAgICBAcGcucmVxdWly ZV90ZXN0X2V4dHJhKCJsZGFwIikKKyAgICAgICAgZGVmIHRlc3Rfc29tZV9sZGFwX2ZlYXR1cmUo KToKKyAgICAgICAgICAgIC4uLgorCisgICAgVG8gc2tpcCBhbiBlbnRpcmUgbW9kdWxlOgorCisg ICAgICAgIHB5dGVzdG1hcmsgPSBwZy5yZXF1aXJlX3Rlc3RfZXh0cmEoInNzbCIsICJrZXJiZXJv cyIpCisgICAgIiIiCisgICAgcmV0dXJuIHB5dGVzdC5tYXJrLnNraXBpZigKKyAgICAgICAgbm90 IGFsbChbaGFzX3Rlc3RfZXh0cmEoaykgZm9yIGsgaW4ga2V5c10pLAorICAgICAgICByZWFzb249 InJlcXVpcmVzIHt9IHRvIGJlIHNldCBpbiBQR19URVNUX0VYVFJBIi5mb3JtYXQoIiwgIi5qb2lu KGtleXMpKSwKKyAgICApCisKKworZGVmIHRlc3RfdGltZW91dF9kZWZhdWx0KCkgLT4gaW50Ogor ICAgICIiIgorICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBQR19URVNUX1RJTUVPVVRfREVG QVVMVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaW4KKyAgICBzZWNvbmRzLCBvciAxODAgaWYgb25l IHdhcyBub3QgcHJvdmlkZWQuCisgICAgIiIiCisgICAgZGVmYXVsdCA9IG9zLmdldGVudigiUEdf VEVTVF9USU1FT1VUX0RFRkFVTFQiLCAiIikKKyAgICBpZiBub3QgZGVmYXVsdDoKKyAgICAgICAg cmV0dXJuIDE4MAorCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW50KGRlZmF1bHQpCisgICAg ZXhjZXB0IFZhbHVlRXJyb3IgYXMgdjoKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlBHX1RFU1Rf VElNRU9VVF9ERUZBVUxUIGNvdWxkIG5vdCBiZSBwYXJzZWQ6ICIgKyBzdHIodikpCisgICAgICAg IHJldHVybiAxODAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5weSBi L3NyYy90ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYjVkM2JmZjY5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9w eXRlc3QvcGcvZml4dHVyZXMucHkKQEAgLTAsMCArMSwyMTIgQEAKKyMgQ29weXJpZ2h0IChjKSAy MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgY29udGV4 dGxpYgoraW1wb3J0IGN0eXBlcworaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgdGltZQorZnJvbSB0 eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QKKworaW1wb3J0IHB5dGVzdAorCitmcm9t IC5fZW52IGltcG9ydCB0ZXN0X3RpbWVvdXRfZGVmYXVsdAorCisKK0BweXRlc3QuZml4dHVyZQor ZGVmIHJlbWFpbmluZ190aW1lb3V0KCk6CisgICAgIiIiCisgICAgVGhpcyBmaXh0dXJlIHByb3Zp ZGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGhvdyBtdWNoIG9mIHRoZQorICAgIFBHX1RFU1Rf VElNRU9VVF9ERUZBVUxUIHJlbWFpbnMgZm9yIHRoZSBjdXJyZW50IHRlc3QsIGluIGZyYWN0aW9u YWwgc2Vjb25kcy4KKyAgICBUaGlzIHZhbHVlIGlzIG5ldmVyIGxlc3MgdGhhbiB6ZXJvLgorCisg ICAgVGhpcyBmaXh0dXJlIGlzIHBlci10ZXN0LCBzbyB0aGUgZGVhZGxpbmUgaXMgYWxzbyByZXNl dCBvbiBhIHBlci10ZXN0IGJhc2lzLgorICAgICIiIgorICAgIG5vdyA9IHRpbWUubW9ub3Rvbmlj KCkKKyAgICBkZWFkbGluZSA9IG5vdyArIHRlc3RfdGltZW91dF9kZWZhdWx0KCkKKworICAgIHJl dHVybiBsYW1iZGE6IG1heChkZWFkbGluZSAtIHRpbWUubW9ub3RvbmljKCksIDApCisKKworY2xh c3MgX1BHY29ubihjdHlwZXMuU3RydWN0dXJlKToKKyAgICBwYXNzCisKKworY2xhc3MgX1BHcmVz dWx0KGN0eXBlcy5TdHJ1Y3R1cmUpOgorICAgIHBhc3MKKworCitfUEdjb25uX3AgPSBjdHlwZXMu UE9JTlRFUihfUEdjb25uKQorX1BHcmVzdWx0X3AgPSBjdHlwZXMuUE9JTlRFUihfUEdyZXN1bHQp CisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBsaWJwcV9oYW5kbGUo KToKKyAgICAiIiIKKyAgICBMb2FkcyBhIGN0eXBlcyBoYW5kbGUgZm9yIGxpYnBxLiBTb21lIGNv bW1vbiBmdW5jdGlvbiBwcm90b3R5cGVzIGFyZQorICAgIGluaXRpYWxpemVkIGZvciBnZW5lcmFs IHVzZS4KKyAgICAiIiIKKyAgICBzeXN0ZW0gPSBwbGF0Zm9ybS5zeXN0ZW0oKQorCisgICAgaWYg c3lzdGVtIGluICgiTGludXgiLCAiRnJlZUJTRCIsICJOZXRCU0QiLCAiT3BlbkJTRCIpOgorICAg ICAgICBuYW1lID0gImxpYnBxLnNvLjUiCisgICAgZWxpZiBzeXN0ZW0gPT0gIkRhcndpbiI6Cisg ICAgICAgIG5hbWUgPSAibGlicHEuNS5keWxpYiIKKyAgICBlbGlmIHN5c3RlbSA9PSAiV2luZG93 cyI6CisgICAgICAgIG5hbWUgPSAibGlicHEuZGxsIgorICAgIGVsc2U6CisgICAgICAgIGFzc2Vy dCBGYWxzZSwgZiJ0aGUgbGlicHEgZml4dHVyZSBtdXN0IGJlIHVwZGF0ZWQgZm9yIHtzeXN0ZW19 IgorCisgICAgIyBYWFggY3R5cGVzLkNETEwoKSBpcyBhIGxpdHRsZSBzdHJpY3RlciB3aXRoIGxv YWQgcGF0aHMgb24gV2luZG93cy4gVGhlCisgICAgIyBwcmVmZXJyZWQgd2F5IGFyb3VuZCB0aGF0 IGlzIHRvIGtub3cgdGhlIGFic29sdXRlIHBhdGggdG8gbGlicHEuZGxsLCBidXQKKyAgICAjIHRo YXQgZG9lc24ndCBzZWVtIHRvIG1lc2ggd2VsbCB3aXRoIHRoZSBjdXJyZW50IHRlc3QgaW5mcmFz dHJ1Y3R1cmUuIEZvcgorICAgICMgbm93LCBlbmFibGUgInN0YW5kYXJkIiBMb2FkTGlicmFyeSBi ZWhhdmlvci4KKyAgICBsb2Fkb3B0cyA9IHt9CisgICAgaWYgc3lzdGVtID09ICJXaW5kb3dzIjoK KyAgICAgICAgbG9hZG9wdHNbIndpbm1vZGUiXSA9IDAKKworICAgIGxpYiA9IGN0eXBlcy5DRExM KG5hbWUsICoqbG9hZG9wdHMpCisKKyAgICAjCisgICAgIyBGdW5jdGlvbiBQcm90b3R5cGVzCisg ICAgIworCisgICAgbGliLlBRY29ubmVjdGRiLnJlc3R5cGUgPSBfUEdjb25uX3AKKyAgICBsaWIu UFFjb25uZWN0ZGIuYXJndHlwZXMgPSBbY3R5cGVzLmNfY2hhcl9wXQorCisgICAgbGliLlBRc3Rh dHVzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFzdGF0dXMuYXJndHlwZXMgPSBb X1BHY29ubl9wXQorCisgICAgbGliLlBRZXhlYy5yZXN0eXBlID0gX1BHcmVzdWx0X3AKKyAgICBs aWIuUFFleGVjLmFyZ3R5cGVzID0gW19QR2Nvbm5fcCwgY3R5cGVzLmNfY2hhcl9wXQorCisgICAg bGliLlBRcmVzdWx0U3RhdHVzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFyZXN1 bHRTdGF0dXMuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBsaWIuUFFjbGVhci5yZXN0 eXBlID0gTm9uZQorICAgIGxpYi5QUWNsZWFyLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisg ICAgbGliLlBRZXJyb3JNZXNzYWdlLnJlc3R5cGUgPSBjdHlwZXMuY19jaGFyX3AKKyAgICBsaWIu UFFlcnJvck1lc3NhZ2UuYXJndHlwZXMgPSBbX1BHY29ubl9wXQorCisgICAgbGliLlBRZmluaXNo LnJlc3R5cGUgPSBOb25lCisgICAgbGliLlBRZmluaXNoLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0K KworICAgIHJldHVybiBsaWIKKworCitjbGFzcyBQR3Jlc3VsdChjb250ZXh0bGliLkFic3RyYWN0 Q29udGV4dE1hbmFnZXIpOgorICAgICIiIldyYXBzIGEgcmF3IF9QR3Jlc3VsdF9wIHdpdGggYSBt b3JlIGZyaWVuZGx5IGludGVyZmFjZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaWI6 IGN0eXBlcy5DRExMLCByZXM6IF9QR3Jlc3VsdF9wKToKKyAgICAgICAgc2VsZi5fbGliID0gbGli CisgICAgICAgIHNlbGYuX3JlcyA9IHJlcworCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGMp OgorICAgICAgICBzZWxmLl9saWIuUFFjbGVhcihzZWxmLl9yZXMpCisgICAgICAgIHNlbGYuX3Jl cyA9IE5vbmUKKworICAgIGRlZiBzdGF0dXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9s aWIuUFFyZXN1bHRTdGF0dXMoc2VsZi5fcmVzKQorCisKK2NsYXNzIFBHY29ubihjb250ZXh0bGli LkFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICIiIgorICAgIFdyYXBzIGEgcmF3IF9QR2Nv bm5fcCB3aXRoIGEgbW9yZSBmcmllbmRseSBpbnRlcmZhY2UuIFRoaXMgaXMganVzdCBhCisgICAg c3R1YjsgaXQncyBleHBlY3RlZCB0byBncm93LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f KAorICAgICAgICBzZWxmLAorICAgICAgICBsaWI6IGN0eXBlcy5DRExMLAorICAgICAgICBoYW5k bGU6IF9QR2Nvbm5fcCwKKyAgICAgICAgc3RhY2s6IGNvbnRleHRsaWIuRXhpdFN0YWNrLAorICAg ICk6CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgorICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5k bGUKKyAgICAgICAgc2VsZi5fc3RhY2sgPSBzdGFjaworCisgICAgZGVmIF9fZXhpdF9fKHNlbGYs ICpleGMpOgorICAgICAgICBzZWxmLl9saWIuUFFmaW5pc2goc2VsZi5faGFuZGxlKQorICAgICAg ICBzZWxmLl9oYW5kbGUgPSBOb25lCisKKyAgICBkZWYgZXhlYyhzZWxmLCBxdWVyeTogc3RyKSAt PiBQR3Jlc3VsdDoKKyAgICAgICAgIiIiCisgICAgICAgIEV4ZWN1dGVzIGEgcXVlcnkgdmlhIFBR ZXhlYygpIGFuZCByZXR1cm5zIGEgUEdyZXN1bHQuCisgICAgICAgICIiIgorICAgICAgICByZXMg PSBzZWxmLl9saWIuUFFleGVjKHNlbGYuX2hhbmRsZSwgcXVlcnkuZW5jb2RlKCkpCisgICAgICAg IHJldHVybiBzZWxmLl9zdGFjay5lbnRlcl9jb250ZXh0KFBHcmVzdWx0KHNlbGYuX2xpYiwgcmVz KSkKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBsaWJwcShsaWJwcV9oYW5kbGUsIHJlbWFpbmlu Z190aW1lb3V0KToKKyAgICAiIiIKKyAgICBQcm92aWRlcyBhIGN0eXBlcy1iYXNlZCBBUEkgd3Jh cHBlZCBhcm91bmQgbGlicHEuc28uIFRoaXMgZml4dHVyZSBrZWVwcworICAgIHRyYWNrIG9mIGFs bG9jYXRlZCByZXNvdXJjZXMgYW5kIGNsZWFucyB0aGVtIHVwIGR1cmluZyB0ZWFyZG93bi4gU2Vl CisgICAgX0xpYnBxJ3MgcHVibGljIEFQSSBmb3IgZGV0YWlscy4KKyAgICAiIiIKKworICAgIGNs YXNzIF9MaWJwcShjb250ZXh0bGliLkV4aXRTdGFjayk6CisgICAgICAgIENPTk5FQ1RJT05fT0sg PSAwCisKKyAgICAgICAgUEdSRVNfRU1QVFlfUVVFUlkgPSAwCisKKyAgICAgICAgY2xhc3MgRXJy b3IoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgbGlicHEuRXJy b3IgaXMgdGhlIGV4Y2VwdGlvbiBjbGFzcyBmb3IgYXBwbGljYXRpb24tbGV2ZWwgZXJyb3JzIHRo YXQKKyAgICAgICAgICAgIGFyZSBlbmNvdW50ZXJlZCBkdXJpbmcgbGlicHEgb3BlcmF0aW9ucy4K KyAgICAgICAgICAgICIiIgorCisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgICAgICBz ZWxmLmxpYiA9IGxpYnBxX2hhbmRsZQorCisgICAgICAgIGRlZiBfY29ubnN0cihzZWxmLCBvcHRz OiBEaWN0W3N0ciwgQW55XSkgLT4gc3RyOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBG bGF0dGVucyB0aGUgcHJvdmlkZWQgb3B0aW9ucyBpbnRvIGEgbGlicHEgY29ubmVjdGlvbiBzdHJp bmcuIFZhbHVlcworICAgICAgICAgICAgYXJlIGNvbnZlcnRlZCB0byBzdHIgYW5kIHF1b3RlZC9l c2NhcGVkIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2V0dGlu Z3MgPSBbXQorCisgICAgICAgICAgICBmb3IgaywgdiBpbiBvcHRzLml0ZW1zKCk6CisgICAgICAg ICAgICAgICAgdiA9IHN0cih2KQorICAgICAgICAgICAgICAgIGlmIG5vdCB2OgorICAgICAgICAg ICAgICAgICAgICB2ID0gIicnIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgIHYgPSB2LnJlcGxhY2UoIlxcIiwgIlxcXFwiKQorICAgICAgICAgICAgICAgICAgICB2 ID0gdi5yZXBsYWNlKCInIiwgIlxcJyIpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgIiAiIGlu IHY6CisgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZiIne3Z9JyIKKworICAgICAgICAgICAg ICAgIHNldHRpbmdzLmFwcGVuZChmIntrfT17dn0iKQorCisgICAgICAgICAgICByZXR1cm4gIiAi LmpvaW4oc2V0dGluZ3MpCisKKyAgICAgICAgZGVmIG11c3RfY29ubmVjdChzZWxmLCAqKm9wdHMp IC0+IFBHY29ubjoKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQ29ubmVjdHMgdG8gYSBz ZXJ2ZXIsIHVzaW5nIHRoZSBnaXZlbiBjb25uZWN0aW9uIG9wdGlvbnMsIGFuZAorICAgICAgICAg ICAgcmV0dXJucyBhIGxpYnBxLlBHY29ubiBvYmplY3Qgd3JhcHBpbmcgdGhlIGNvbm5lY3Rpb24g aGFuZGxlLiBBCisgICAgICAgICAgICBmYWlsdXJlIHdpbGwgcmFpc2UgbGlicHEuRXJyb3IuCisK KyAgICAgICAgICAgIENvbm5lY3Rpb25zIGhvbm9yIFBHX1RFU1RfVElNRU9VVF9ERUZBVUxUIHVu bGVzcyBjb25uZWN0X3RpbWVvdXQgaXMKKyAgICAgICAgICAgIGV4cGxpY2l0bHkgb3ZlcnJpZGRl biBpbiBvcHRzLgorICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGlmICJjb25uZWN0X3Rp bWVvdXQiIG5vdCBpbiBvcHRzOgorICAgICAgICAgICAgICAgIHQgPSBpbnQocmVtYWluaW5nX3Rp bWVvdXQoKSkKKyAgICAgICAgICAgICAgICBvcHRzWyJjb25uZWN0X3RpbWVvdXQiXSA9IG1heCh0 LCAxKQorCisgICAgICAgICAgICBjb25uX3AgPSBzZWxmLmxpYi5QUWNvbm5lY3RkYihzZWxmLl9j b25uc3RyKG9wdHMpLmVuY29kZSgpKQorCisgICAgICAgICAgICAjIEVuc3VyZSB0aGUgY29ubmVj dGlvbiBoYW5kbGUgaXMgYWx3YXlzIGNsb3NlZCBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAg ICAgIyB0ZXN0LgorICAgICAgICAgICAgY29ubiA9IHNlbGYuZW50ZXJfY29udGV4dChQR2Nvbm4o c2VsZi5saWIsIGNvbm5fcCwgc3RhY2s9c2VsZikpCisKKyAgICAgICAgICAgIGlmIHNlbGYubGli LlBRc3RhdHVzKGNvbm5fcCkgIT0gc2VsZi5DT05ORUNUSU9OX09LOgorICAgICAgICAgICAgICAg IHJhaXNlIHNlbGYuRXJyb3Ioc2VsZi5saWIuUFFlcnJvck1lc3NhZ2UoY29ubl9wKS5kZWNvZGUo KSkKKworICAgICAgICAgICAgcmV0dXJuIGNvbm4KKworICAgIHdpdGggX0xpYnBxKCkgYXMgbGli OgorICAgICAgICB5aWVsZCBsaWIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQvY29u ZnRlc3QucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lY2I3MmJlMjZkNwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkKQEAgLTAsMCArMSwzIEBACisjIENvcHly aWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworZnJv bSBwZy5maXh0dXJlcyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90 ZXN0X2xpYnBxLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZjA4NTdjYzYxMgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQpAQCAtMCwwICsxLDE3MSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9y dCBzdHJ1Y3QKK2ltcG9ydCB0aHJlYWRpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQor CitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJvcHRz LCBleHBlY3RlZCIsCisgICAgWworICAgICAgICAoZGljdCgpLCAiIiksCisgICAgICAgIChkaWN0 KHBvcnQ9NTQzMiksICJwb3J0PTU0MzIiKSwKKyAgICAgICAgKGRpY3QocG9ydD01NDMyLCBkYm5h bWU9InBvc3RncmVzIiksICJwb3J0PTU0MzIgZGJuYW1lPXBvc3RncmVzIiksCisgICAgICAgIChk aWN0KGhvc3Q9IiIpLCAiaG9zdD0nJyIpLAorICAgICAgICAoZGljdChob3N0PSIgIiksIHIiaG9z dD0nICciKSwKKyAgICAgICAgKGRpY3Qoa2V5d29yZD0iJyIpLCByImtleXdvcmQ9XCciKSwKKyAg ICAgICAgKGRpY3Qoa2V5d29yZD0iIFxcJyAiKSwgciJrZXl3b3JkPScgXFxcJyAnIiksCisgICAg XSwKKykKK2RlZiB0ZXN0X2Nvbm5zdHIobGlicHEsIG9wdHMsIGV4cGVjdGVkKToKKyAgICAiIiJU ZXN0cyB0aGUgZXNjYXBlIGJlaGF2aW9yIGZvciBsaWJwcS5fY29ubnN0cigpLiIiIgorICAgIGFz c2VydCBsaWJwcS5fY29ubnN0cihvcHRzKSA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X211c3Rf Y29ubmVjdF9lcnJvcnMobGlicHEpOgorICAgICIiIlRlc3RzIHRoYXQgbXVzdF9jb25uZWN0KCkg cmFpc2VzIGxpYnBxLkVycm9yLiIiIgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhsaWJwcS5FcnJv ciwgbWF0Y2g9ImludmFsaWQgY29ubmVjdGlvbiBvcHRpb24iKToKKyAgICAgICAgbGlicHEubXVz dF9jb25uZWN0KHNvbWVfdW5rbm93bl9rZXl3b3JkPSJ3aGF0ZXZlciIpCisKKworQHB5dGVzdC5m aXh0dXJlCitkZWYgbG9jYWxfc2VydmVyKHRtcF9wYXRoLCByZW1haW5pbmdfdGltZW91dCk6Cisg ICAgIiIiCisgICAgT3BlbnMgdXAgYSBsb2NhbCBVTklYIHNvY2tldCBmb3IgbW9ja2luZyBhIFBv c3RncmVzIHNlcnZlciBvbiBhIGJhY2tncm91bmQKKyAgICB0aHJlYWQuIFNlZSB0aGUgX1NlcnZl ciBBUEkgZm9yIHVzYWdlLgorCisgICAgVGhpcyBmaXh0dXJlIHJlcXVpcmVzIEFGX1VOSVggc3Vw cG9ydDsgZGVwZW5kZW50IHRlc3RzIHdpbGwgYmUgc2tpcHBlZCBvbgorICAgIHBsYXRmb3JtcyB0 aGF0IGRvbid0IHByb3ZpZGUgaXQuCisgICAgIiIiCisKKyAgICB0cnk6CisgICAgICAgIGZyb20g c29ja2V0IGltcG9ydCBBRl9VTklYCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBw eXRlc3Quc2tpcCgiQUZfVU5JWCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKQorCisg ICAgY2xhc3MgX1NlcnZlcihjb250ZXh0bGliLkV4aXRTdGFjayk6CisgICAgICAgICIiIgorICAg ICAgICBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgbG9jYWxfc2VydmVyLiBTZWUgLmJhY2tncm91 bmQoKSBmb3IgdGhlIHByaW1hcnkKKyAgICAgICAgZW50cnkgcG9pbnQgZm9yIHRlc3RzLiBQb3N0 Z3JlcyBjbGllbnRzIG1heSBjb25uZWN0IHRvIHRoaXMgc2VydmVyIHZpYQorICAgICAgICBsb2Nh bF9zZXJ2ZXIuaG9zdC9sb2NhbF9zZXJ2ZXIucG9ydC4KKworICAgICAgICBfU2VydmVyIGRlcml2 ZXMgZnJvbSBjb250ZXh0bGliLkV4aXRTdGFjayB0byBwcm92aWRlIGVhc3kgY2xlYW51cCBvZgor ICAgICAgICBhc3NvY2lhdGVkIHJlc291cmNlczsgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0 aGF0IGNsYXNzIGZvciBhIGZ1bGwKKyAgICAgICAgZXhwbGFuYXRpb24uCisgICAgICAgICIiIgor CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18oKQorCisgICAgICAgICAgICBzZWxmLmhvc3QgPSB0bXBfcGF0aAorICAgICAgICAgICAgc2Vs Zi5wb3J0ID0gNTQzMgorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAg ICAgICBzZWxmLl90aHJlYWRfZXhjID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIg PSBzZWxmLmVudGVyX2NvbnRleHQoCisgICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldChBRl9V TklYLCBzb2NrZXQuU09DS19TVFJFQU0pLAorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBi aW5kX2FuZF9saXN0ZW4oc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIERvZXMg dGhlIGFjdHVhbCB3b3JrIG9mIGJpbmRpbmcgdGhlIFVOSVggc29ja2V0IHVzaW5nIHRoZSBQb3N0 Z3JlcworICAgICAgICAgICAgc2VydmVyIGNvbnZlbnRpb25zIGFuZCBsaXN0ZW5pbmcgZm9yIGNv bm5lY3Rpb25zLgorCisgICAgICAgICAgICBUaGUgbGlzdGVuIGJhY2tsb2cgaXMgY3VycmVudGx5 IGhhcmRjb2RlZCB0byBvbmUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNvY2tmaWxl ID0gc2VsZi5ob3N0IC8gIi5zLlBHU1FMLnt9Ii5mb3JtYXQoc2VsZi5wb3J0KQorCisgICAgICAg ICAgICAjIExvY2sgZG93biB0aGUgcGVybWlzc2lvbnMgb24gdGhlIG5ldyBzb2NrZXQuCisgICAg ICAgICAgICBwcmV2X21hc2sgPSBvcy51bWFzaygwbzA3NykKKworICAgICAgICAgICAgIyBCaW5k IChjcmVhdGluZyB0aGUgc29ja2V0IGZpbGUpLCBhbmQgaW1tZWRpYXRlbHkgcmVnaXN0ZXIgaXQg Zm9yCisgICAgICAgICAgICAjIGRlbGV0aW9uIGZyb20gZGlzayB3aGVuIHRoZSBzdGFjayBpcyBj bGVhbmVkIHVwLgorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuYmluZChieXRlcyhzb2NrZmls ZSkpCisgICAgICAgICAgICBzZWxmLmNhbGxiYWNrKG9zLnVubGluaywgc29ja2ZpbGUpCisKKyAg ICAgICAgICAgIG9zLnVtYXNrKHByZXZfbWFzaykKKworICAgICAgICAgICAgc2VsZi5fbGlzdGVu ZXIubGlzdGVuKDEpCisKKyAgICAgICAgZGVmIGJhY2tncm91bmQoc2VsZiwgZm46IENhbGxhYmxl W1tzb2NrZXQuc29ja2V0XSwgTm9uZV0pIC0+IE5vbmU6CisgICAgICAgICAgICAiIiIKKyAgICAg ICAgICAgIEFjY2VwdHMgYSBjbGllbnQgY29ubmVjdGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFk IGFuZCBwYXNzZXMgaXQgdG8KKyAgICAgICAgICAgIHRoZSBwcm92aWRlZCBjYWxsYmFjay4gQW55 IGV4Y2VwdGlvbnMgcmFpc2VkIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwKKyAgICAgICAgICAgIGJl IHJlLXJhaXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGZpeHR1cmUgdGVhcmRvd24uCisK KyAgICAgICAgICAgIEJsb2NraW5nIG9wZXJhdGlvbnMgb24gdGhlIGNvbm5lY3RlZCBzb2NrZXQg ZGVmYXVsdCB0byB1c2luZyB0aGUKKyAgICAgICAgICAgIHJlbWFpbmluZ190aW1lb3V0KCksIHRo b3VnaCB0aGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSB0ZXN0IHZpYSB0aGUKKyAgICAgICAgICAg IHNvY2tldCdzIC5zZXR0aW1lb3V0KCkuCisgICAgICAgICAgICAiIiIKKworICAgICAgICAgICAg ZGVmIF9iZygpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fbGlzdGVuZXIuc2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgpKQorICAgICAgICAgICAg ICAgICAgICBzb2NrLCBfID0gc2VsZi5fbGlzdGVuZXIuYWNjZXB0KCkKKworICAgICAgICAgICAg ICAgICAgICB3aXRoIHNvY2s6CisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLnNldHRpbWVv dXQocmVtYWluaW5nX3RpbWVvdXQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuKHNvY2sp CisKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAg ICAgICAgICMgU2F2ZSB0aGUgZXhjZXB0aW9uIGZvciByZS1yYWlzaW5nIG9uIHRoZSBtYWluIHRo cmVhZC4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkX2V4YyA9IGUKKworICAgICAg ICAgICAgIyBUT0RPOiByYXRoZXIgdGhhbiB1c2luZyBjYWxsYmFjaygpLCBjb25zaWRlciBleHBs aWNpdGx5IHNpZ25hbGluZworICAgICAgICAgICAgIyB0aGUgZm4oKSBpbXBsZW1lbnRhdGlvbiB0 byBzdG9wIGVhcmx5IGlmIHdlIGdldCBhbiBleGNlcHRpb24uCisgICAgICAgICAgICAjIE90aGVy d2lzZSB3ZSdsbCBoYW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRpbWVvdXQuCisgICAgICAgICAg ICBzZWxmLl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fYmcpCisgICAgICAgICAg ICBzZWxmLmNhbGxiYWNrKHNlbGYuX2pvaW4pCisKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5z dGFydCgpCisKKyAgICAgICAgZGVmIF9qb2luKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAg ICAgICAgICBXYWl0cyBmb3IgdGhlIGJhY2tncm91bmQgdGhyZWFkIHRvIGZpbmlzaCBhbmQgcmFp c2VzIGFueSB0aHJvd24KKyAgICAgICAgICAgIGV4Y2VwdGlvbi4gVGhpcyBpcyBjYWxsZWQgZHVy aW5nIGZpeHR1cmUgdGVhcmRvd24uCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICMgR2l2 ZSBhIGxpdHRsZSBiaXQgb2Ygd2lnZ2xlIHJvb20gb24gdGhlIGpvaW4gdGltZW91dCwgc2luY2Ug d2UncmUKKyAgICAgICAgICAgICMgcmFjaW5nIGFnYWluc3QgdGhlIHRlc3QncyBvd24gdXNlIG9m IHJlbWFpbmluZ190aW1lb3V0KCkuIChJdCdzCisgICAgICAgICAgICAjIHByZWZlcmFibGUgdG8g bGV0IHRlc3RzIHJlcG9ydCB0aW1lb3V0czsgdGhlIHN0YWNrIHRyYWNlcyB3aWxsCisgICAgICAg ICAgICAjIGhlbHAgd2l0aCBkZWJ1Z2dpbmcuKQorICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpv aW4ocmVtYWluaW5nX3RpbWVvdXQoKSArIDEpCisgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQu aXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IoImJhY2tncm91 bmQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcgYWZ0ZXIgdGltZW91dCIpCisKKyAgICAgICAgICAg IGlmIHNlbGYuX3RocmVhZF9leGMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2Ug c2VsZi5fdGhyZWFkX2V4YworCisgICAgd2l0aCBfU2VydmVyKCkgYXMgczoKKyAgICAgICAgcy5i aW5kX2FuZF9saXN0ZW4oKQorICAgICAgICB5aWVsZCBzCisKKworZGVmIHRlc3RfY29ubmVjdGlv bl9pc19maW5pc2hlZF9vbl9lcnJvcihsaWJwcSwgbG9jYWxfc2VydmVyLCByZW1haW5pbmdfdGlt ZW91dCk6CisgICAgIiIiVGVzdHMgdGhhdCBQUWZpbmlzaCgpIGdldHMgY2FsbGVkIGF0IHRoZSBl bmQgb2YgdGVzdGluZy4iIiIKKyAgICBleHBlY3RlZF9lcnJvciA9ICJzb21ldGhpbmcgaXMgd3Jv bmciCisKKyAgICBkZWYgc2VydmVfZXJyb3Ioczogc29ja2V0LnNvY2tldCkgLT4gTm9uZToKKyAg ICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisKKyAgICAg ICAgIyBRdWljayBjaGVjayBmb3IgdGhlIHN0YXJ0dXAgcGFja2V0IHZlcnNpb24uCisgICAgICAg IHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAgICAgIGFzc2Vy dCB2ZXJzaW9uID09ICgzLCAwKQorCisgICAgICAgICMgRGlzY2FyZCB0aGUgcmVtYWluZGVyIG9m IHRoZSBzdGFydHVwIHBhY2tldCBhbmQgc2VuZCBhIHYyIGVycm9yLgorICAgICAgICBzLnJlY3Yo cGt0bGVuIC0gOCkKKyAgICAgICAgcy5zZW5kKGIiRSIgKyBleHBlY3RlZF9lcnJvci5lbmNvZGUo KSArIGIiXDAiKQorCisgICAgICAgICMgQW5kIG5vdyB0aGUgc29ja2V0IHNob3VsZCBiZSBjbG9z ZWQuCisgICAgICAgIGFzc2VydCBub3Qgcy5yZWN2KDEpLCAiY2xpZW50IHNlbnQgdW5leHBlY3Rl ZCBkYXRhIgorCisgICAgbG9jYWxfc2VydmVyLmJhY2tncm91bmQoc2VydmVfZXJyb3IpCisKKyAg ICB3aXRoIHB5dGVzdC5yYWlzZXMobGlicHEuRXJyb3IsIG1hdGNoPWV4cGVjdGVkX2Vycm9yKToK KyAgICAgICAgIyBFeGl0aW5nIHRoaXMgY29udGV4dCBzaG91bGQgcmVzdWx0IGluIFBRZmluaXNo KCkuCisgICAgICAgIHdpdGggbGlicHE6CisgICAgICAgICAgICBsaWJwcS5tdXN0X2Nvbm5lY3Qo aG9zdD1sb2NhbF9zZXJ2ZXIuaG9zdCwgcG9ydD1sb2NhbF9zZXJ2ZXIucG9ydCkKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3NzbC9NYWtlZmlsZSBiL3NyYy90ZXN0L3NzbC9NYWtlZmlsZQppbmRleCBl OGExNjM5ZGIyZC4uODk1ZWE1ZWE0MWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9NYWtlZmls ZQorKysgYi9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKQEAgLTMwLDYgKzMwLDggQEAgY2xlYW4gZGlz dGNsZWFuOgogIyBEb2Vzbid0IGRlcGVuZCBvbiBzc2xmaWxlcyBiZWNhdXNlIHdlIGRvbid0IHJl YnVpbGQgdGhlbSBieSBkZWZhdWx0CiBjaGVjazoKIAkkKHByb3ZlX2NoZWNrKQorCSMgWFhYIHRo ZXNlIHN1aXRlcyBzaG91bGQgcnVuIGluZGVwZW5kZW50bHksIG5vdCBzZXJpYWxseQorCSQocHl0 ZXN0X2NoZWNrKQogCiBpbnN0YWxsY2hlY2s6CiAJJChwcm92ZV9pbnN0YWxsY2hlY2spCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zc2wvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zc2wvbWVzb24uYnVp bGQKaW5kZXggZDhlMGZiNTE4ZTAuLmEwZWUyYWYwODk5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z c2wvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3NsL21lc29uLmJ1aWxkCkBAIC0xNSw0ICsx NSwxMCBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfc3NsaW5mby5wbCcsCiAgICAgXSwKICAg fSwKKyAgJ3B5dGVzdCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAncHl0L3Rlc3RfY2xpZW50 LnB5JywKKyAgICAgICdweXQvdGVzdF9zZXJ2ZXIucHknLAorICAgIF0sCisgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC9j b25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmI0ZGIz NzJmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CkBA IC0wLDAgKzEsMTI5IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdGVtcGZpbGUKK2Zy b20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKKworaW1wb3J0IHB5dGVzdAorCitpbXBv cnQgcGcKK2Zyb20gcGcuZml4dHVyZXMgaW1wb3J0ICoKKworCitAcHl0ZXN0LmZpeHR1cmUoc2Nv cGU9InNlc3Npb24iKQorZGVmIGNyeXB0b2dyYXBoeSgpOgorICAgIHJldHVybiBweXRlc3QuaW1w b3J0b3Jza2lwKCJjcnlwdG9ncmFwaHkiLCAiMy4zLjIiKQorCisKK0NlcnQgPSBuYW1lZHR1cGxl KCJDZXJ0IiwgImNlcnQsIGNlcnRwYXRoLCBrZXksIGtleXBhdGgiKQorCisKK0BweXRlc3QuZml4 dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgY2VydHMoY3J5cHRvZ3JhcGh5LCB0bXBfcGF0aF9m YWN0b3J5KToKKyAgICAiIiIKKyAgICBDYWNoZXMgY29tbW9ubHkgdXNlZCBjZXJ0aWZpY2F0ZXMg YXQgdGhlIHNlc3Npb24gbGV2ZWwsIGFuZCBwcm92aWRlcyBhIHdheQorICAgIHRvIGNyZWF0ZSBu ZXcgb25lcy4KKworICAgIC0gY2VydHMuY2E6IHRoZSByb290IENBIGNlcnRpZmljYXRlCisKKyAg ICAtIGNlcnRzLnNlcnZlcjogdGhlICJzdGFuZGFyZCIgc2VydmVyIGNlcnRmaWNhdGUsIHNpZ25l ZCBieSBjZXJ0cy5jYQorCisgICAgLSBjZXJ0cy5zZXJ2ZXJfaG9zdDogdGhlIGhvc3RuYW1lIG9m IHRoZSBjZXJ0cy5zZXJ2ZXIgY2VydGlmaWNhdGUKKworICAgIC0gY2VydHMubmV3KCk6IGNyZWF0 ZXMgYSBjdXN0b20gY2VydGlmaWNhdGUsIHNpZ25lZCBieSBjZXJ0cy5jYQorICAgICIiIgorCisg ICAgZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKKyAgICBmcm9tIGNyeXB0b2dyYXBoeS5o YXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBzZXJpYWxpemF0aW9uCisgICAgZnJvbSBj cnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBvcnQgcnNhCisgICAg ZnJvbSBjcnlwdG9ncmFwaHkueDUwOS5vaWQgaW1wb3J0IE5hbWVPSUQKKworICAgIHRtcGRpciA9 IHRtcF9wYXRoX2ZhY3RvcnkubWt0ZW1wKCJ0ZXN0LWNlcnRzIikKKworICAgIGNsYXNzIF9DZXJ0 czoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5jYSA9IHNl bGYubmV3KAorICAgICAgICAgICAgICAgIHg1MDkuTmFtZSgKKyAgICAgICAgICAgICAgICAgICAg W3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1PTl9OQU1FLCAiUEcgcHl0ZXN0IENBIild LAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgY2E9VHJ1ZSwKKyAgICAgICAg ICAgICkKKworICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCA9ICJleGFtcGxlLm9yZyIKKyAg ICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VsZi5uZXcoCisgICAgICAgICAgICAgICAgeDUwOS5O YW1lKAorICAgICAgICAgICAgICAgICAgICBbeDUwOS5OYW1lQXR0cmlidXRlKE5hbWVPSUQuQ09N TU9OX05BTUUsIHNlbGYuc2VydmVyX2hvc3QpXSwKKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICApCisKKyAgICAgICAgZGVmIG5ldyhzZWxmLCBzdWJqZWN0OiB4NTA5Lk5hbWUsICosIGNh PUZhbHNlKSAtPiBDZXJ0OgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDcmVhdGVzIGFu ZCBzaWducyBhIG5ldyBDZXJ0IHdpdGggdGhlIGdpdmVuIHN1YmplY3QgbmFtZS4gSWYgY2EgaXMK KyAgICAgICAgICAgIFRydWUsIHRoZSBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHNlbGYtc2lnbmVkOyBv dGhlcndpc2UgdGhlIGNlcnRpZmljYXRlCisgICAgICAgICAgICBpcyBzaWduZWQgYnkgc2VsZi5j YS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAga2V5ID0gcnNhLmdlbmVyYXRlX3ByaXZh dGVfa2V5KAorICAgICAgICAgICAgICAgIHB1YmxpY19leHBvbmVudD02NTUzNywKKyAgICAgICAg ICAgICAgICBrZXlfc2l6ZT0yMDQ4LAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBidWls ZGVyID0geDUwOS5DZXJ0aWZpY2F0ZUJ1aWxkZXIoKQorICAgICAgICAgICAgbm93ID0gZGF0ZXRp bWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKworICAgICAgICAgICAgYnVp bGRlciA9ICgKKyAgICAgICAgICAgICAgICBidWlsZGVyLnN1YmplY3RfbmFtZShzdWJqZWN0KQor ICAgICAgICAgICAgICAgIC5wdWJsaWNfa2V5KGtleS5wdWJsaWNfa2V5KCkpCisgICAgICAgICAg ICAgICAgLnNlcmlhbF9udW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQorICAgICAg ICAgICAgICAgIC5ub3RfdmFsaWRfYmVmb3JlKG5vdykKKyAgICAgICAgICAgICAgICAubm90X3Zh bGlkX2FmdGVyKG5vdyArIGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0xKSkKKyAgICAgICAgICAg ICkKKworICAgICAgICAgICAgaWYgY2E6CisgICAgICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxk ZXIuaXNzdWVyX25hbWUoc3ViamVjdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgYnVpbGRlciA9IGJ1aWxkZXIuaXNzdWVyX25hbWUoc2VsZi5jYS5jZXJ0LnN1YmplY3QpCisK KyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLmFkZF9leHRlbnNpb24oCisgICAgICAgICAg ICAgICAgeDUwOS5CYXNpY0NvbnN0cmFpbnRzKGNhPWNhLCBwYXRoX2xlbmd0aD1Ob25lKSwKKyAg ICAgICAgICAgICAgICBjcml0aWNhbD1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg ICBjZXJ0ID0gYnVpbGRlci5zaWduKAorICAgICAgICAgICAgICAgIHByaXZhdGVfa2V5PWtleSBp ZiBjYSBlbHNlIHNlbGYuY2Eua2V5LAorICAgICAgICAgICAgICAgIGFsZ29yaXRobT1oYXNoZXMu U0hBMjU2KCksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgRHVtcCB0aGUgY2VydGlm aWNhdGUgYW5kIGtleSB0byBmaWxlLgorICAgICAgICAgICAga2V5cGF0aCA9IHNlbGYuX3RvZmls ZSgKKyAgICAgICAgICAgICAgICBrZXkucHJpdmF0ZV9ieXRlcygKKyAgICAgICAgICAgICAgICAg ICAgc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0sCisgICAgICAgICAgICAgICAgICAgIHNlcmlh bGl6YXRpb24uUHJpdmF0ZUZvcm1hdC5QS0NTOCwKKyAgICAgICAgICAgICAgICAgICAgc2VyaWFs aXphdGlvbi5Ob0VuY3J5cHRpb24oKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg ICAgIHN1ZmZpeD0iLmtleSIsCisgICAgICAgICAgICApCisgICAgICAgICAgICBjZXJ0cGF0aCA9 IHNlbGYuX3RvZmlsZSgKKyAgICAgICAgICAgICAgICBjZXJ0LnB1YmxpY19ieXRlcyhzZXJpYWxp emF0aW9uLkVuY29kaW5nLlBFTSksCisgICAgICAgICAgICAgICAgc3VmZml4PSItY2EuY3J0IiBp ZiBjYSBlbHNlICIuY3J0IiwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0dXJuIENl cnQoCisgICAgICAgICAgICAgICAgY2VydD1jZXJ0LAorICAgICAgICAgICAgICAgIGNlcnRwYXRo PWNlcnRwYXRoLAorICAgICAgICAgICAgICAgIGtleT1rZXksCisgICAgICAgICAgICAgICAga2V5 cGF0aD1rZXlwYXRoLAorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBfdG9maWxlKHNlbGYs IGRhdGE6IGJ5dGVzLCAqLCBzdWZmaXgpIC0+IHN0cjoKKyAgICAgICAgICAgICIiIgorICAgICAg ICAgICAgRHVtcHMgZGF0YSB0byBhIGZpbGUgb24gZGlzayB3aXRoIHRoZSByZXF1ZXN0ZWQgc3Vm Zml4IGFuZCByZXR1cm5zCisgICAgICAgICAgICB0aGUgcGF0aC4gVGhlIGZpbGUgaXMgbG9jYXRl ZCBzb21ld2hlcmUgaW4gcHl0ZXN0J3MgdGVtcG9yYXJ5CisgICAgICAgICAgICBkaXJlY3Rvcnkg cm9vdC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZiA9IHRlbXBmaWxlLk5hbWVkVGVt cG9yYXJ5RmlsZShzdWZmaXg9c3VmZml4LCBkaXI9dG1wZGlyLCBkZWxldGU9RmFsc2UpCisgICAg ICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShkYXRhKQorCisgICAgICAg ICAgICByZXR1cm4gZi5uYW1lCisKKyAgICByZXR1cm4gX0NlcnRzKCkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkgYi9zcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xp ZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yODExMGFlMDcx NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkKQEAg LTAsMCArMSwyNzggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGN0eXBlcworaW1w b3J0IHNvY2tldAoraW1wb3J0IHNzbAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHRocmVhZGluZwor ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCisKK2ltcG9ydCBweXRlc3QKKworaW1wb3J0IHBn CisKKyMgVGhpcyBzdWl0ZSBvcGVucyB1cCBsb2NhbCBUQ1AgcG9ydHMgYW5kIGlzIGhpZGRlbiBi ZWhpbmQgUEdfVEVTVF9FWFRSQT1zc2wuCitweXRlc3RtYXJrID0gcGcucmVxdWlyZV90ZXN0X2V4 dHJhKCJzc2wiKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIsIGF1dG91c2U9 VHJ1ZSkKK2RlZiBza2lwX2lmX25vX3NzbF9zdXBwb3J0KGxpYnBxX2hhbmRsZSk6CisgICAgIiIi U2tpcHMgdGVzdHMgaWYgU1NMIHN1cHBvcnQgaXMgbm90IGNvbmZpZ3VyZWQuIiIiCisKKyAgICAj IERlY2xhcmUgUFFzc2xBdHRyaWJ1dGUoKS4KKyAgICBQUXNzbEF0dHJpYnV0ZSA9IGxpYnBxX2hh bmRsZS5QUXNzbEF0dHJpYnV0ZQorICAgIFBRc3NsQXR0cmlidXRlLnJlc3R5cGUgPSBjdHlwZXMu Y19jaGFyX3AKKyAgICBQUXNzbEF0dHJpYnV0ZS5hcmd0eXBlcyA9IFtjdHlwZXMuY192b2lkX3As IGN0eXBlcy5jX2NoYXJfcF0KKworICAgIGlmIG5vdCBQUXNzbEF0dHJpYnV0ZShOb25lLCBiImxp YnJhcnkiKToKKyAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIFNTTCBzdXBwb3J0IHRvIGJl IGNvbmZpZ3VyZWQiKQorCisKKyMKKyMgVGVzdCBGaXh0dXJlcworIworCisKK0BweXRlc3QuZml4 dHVyZQorZGVmIHRjcF9zZXJ2ZXJfY2xhc3MocmVtYWluaW5nX3RpbWVvdXQpOgorICAgICIiIgor ICAgIE1ldGFmaXh0dXJlIHRvIGNvbWJpbmUgcmVsYXRlZCBsb2dpYyBmb3IgdGNwX3NlcnZlciBh bmQgc3NsX3NlcnZlci4KKworICAgIFRPRE86IGNvbWJpbmUgd2l0aCB0ZXN0X2xpYnBxLmxvY2Fs X3NlcnZlcgorICAgICIiIgorCisgICAgY2xhc3MgX1RDUFNlcnZlcihjb250ZXh0bGliLkV4aXRT dGFjayk6CisgICAgICAgICIiIgorICAgICAgICBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgdGNw X3NlcnZlci4gU2VlIC5iYWNrZ3JvdW5kKCkgZm9yIHRoZSBwcmltYXJ5CisgICAgICAgIGVudHJ5 IHBvaW50IGZvciB0ZXN0cy4gUG9zdGdyZXMgY2xpZW50cyBtYXkgY29ubmVjdCB0byB0aGlzIHNl cnZlciB2aWEKKyAgICAgICAgKip0Y3Bfc2VydmVyLmNvbm5pbmZvLgorCisgICAgICAgIF9UQ1BT ZXJ2ZXIgZGVyaXZlcyBmcm9tIGNvbnRleHRsaWIuRXhpdFN0YWNrIHRvIHByb3ZpZGUgZWFzeSBj bGVhbnVwIG9mCisgICAgICAgIGFzc29jaWF0ZWQgcmVzb3VyY2VzOyBzZWUgdGhlIGRvY3VtZW50 YXRpb24gZm9yIHRoYXQgY2xhc3MgZm9yIGEgZnVsbAorICAgICAgICBleHBsYW5hdGlvbi4KKyAg ICAgICAgIiIiCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXygpCisKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAg ICAgICAgIHNlbGYuX3RocmVhZF9leGMgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5l ciA9IHNlbGYuZW50ZXJfY29udGV4dCgKKyAgICAgICAgICAgICAgICBzb2NrZXQuc29ja2V0KHNv Y2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pLAorICAgICAgICAgICAgKQorCisgICAg ICAgICAgICBzZWxmLl9iaW5kX2FuZF9saXN0ZW4oKQorICAgICAgICAgICAgc29ja25hbWUgPSBz ZWxmLl9saXN0ZW5lci5nZXRzb2NrbmFtZSgpCisgICAgICAgICAgICBzZWxmLmNvbm5pbmZvID0g ZGljdCgKKyAgICAgICAgICAgICAgICBob3N0YWRkcj1zb2NrbmFtZVswXSwKKyAgICAgICAgICAg ICAgICBwb3J0PXNvY2tuYW1lWzFdLAorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBfYmlu ZF9hbmRfbGlzdGVuKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBEb2VzIHRo ZSBhY3R1YWwgd29yayBvZiBiaW5kaW5nIHRoZSBzb2NrZXQgYW5kIGxpc3RlbmluZyBmb3IKKyAg ICAgICAgICAgIGNvbm5lY3Rpb25zLgorCisgICAgICAgICAgICBUaGUgbGlzdGVuIGJhY2tsb2cg aXMgY3VycmVudGx5IGhhcmRjb2RlZCB0byBvbmUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAg ICAgIHNlbGYuX2xpc3RlbmVyLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAgICAgICAgIHNl bGYuX2xpc3RlbmVyLmxpc3RlbigxKQorCisgICAgICAgIGRlZiBiYWNrZ3JvdW5kKHNlbGYsIGZu OiBDYWxsYWJsZVtbc29ja2V0LnNvY2tldF0sIE5vbmVdKSAtPiBOb25lOgorICAgICAgICAgICAg IiIiCisgICAgICAgICAgICBBY2NlcHRzIGEgY2xpZW50IGNvbm5lY3Rpb24gb24gYSBiYWNrZ3Jv dW5kIHRocmVhZCBhbmQgcGFzc2VzIGl0IHRvCisgICAgICAgICAgICB0aGUgcHJvdmlkZWQgY2Fs bGJhY2suIEFueSBleGNlcHRpb25zIHJhaXNlZCBmcm9tIHRoZSBjYWxsYmFjayB3aWxsCisgICAg ICAgICAgICBiZSByZS1yYWlzZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBmaXh0dXJlIHRl YXJkb3duLgorCisgICAgICAgICAgICBCbG9ja2luZyBvcGVyYXRpb25zIG9uIHRoZSBjb25uZWN0 ZWQgc29ja2V0IGRlZmF1bHQgdG8gdXNpbmcgdGhlCisgICAgICAgICAgICByZW1haW5pbmdfdGlt ZW91dCgpLCB0aG91Z2ggdGhpcyBjYW4gYmUgY2hhbmdlZCBieSB0aGUgdGVzdCB2aWEgdGhlCisg ICAgICAgICAgICBzb2NrZXQncyAuc2V0dGltZW91dCgpLgorICAgICAgICAgICAgIiIiCisKKyAg ICAgICAgICAgIGRlZiBfYmcoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2xpc3RlbmVyLnNldHRpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQoKSkKKyAg ICAgICAgICAgICAgICAgICAgc29jaywgXyA9IHNlbGYuX2xpc3RlbmVyLmFjY2VwdCgpCisKKyAg ICAgICAgICAgICAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgICAgICAgICAgICAgc29j ay5zZXR0aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0KCkpCisgICAgICAgICAgICAgICAgICAgICAg ICBmbihzb2NrKQorCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIGV4Y2VwdGlvbiBmb3IgcmUtcmFpc2luZyBvbiB0 aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZF9leGMgPSBl CisKKyAgICAgICAgICAgICMgVE9ETzogcmF0aGVyIHRoYW4gdXNpbmcgY2FsbGJhY2soKSwgY29u c2lkZXIgZXhwbGljaXRseSBzaWduYWxpbmcKKyAgICAgICAgICAgICMgdGhlIGZuKCkgaW1wbGVt ZW50YXRpb24gdG8gc3RvcCBlYXJseSBpZiB3ZSBnZXQgYW4gZXhjZXB0aW9uLgorICAgICAgICAg ICAgIyBPdGhlcndpc2Ugd2UnbGwgaGFuZyB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0aW1lb3V0Lgor ICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X2JnKQor ICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmLl9qb2luKQorCisgICAgICAgICAgICBzZWxm Ll90aHJlYWQuc3RhcnQoKQorCisgICAgICAgIGRlZiBfam9pbihzZWxmKToKKyAgICAgICAgICAg ICIiIgorICAgICAgICAgICAgV2FpdHMgZm9yIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB0byBmaW5p c2ggYW5kIHJhaXNlcyBhbnkgdGhyb3duCisgICAgICAgICAgICBleGNlcHRpb24uIFRoaXMgaXMg Y2FsbGVkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgorICAgICAgICAgICAgIiIiCisgICAgICAg ICAgICAjIEdpdmUgYSBsaXR0bGUgYml0IG9mIHdpZ2dsZSByb29tIG9uIHRoZSBqb2luIHRpbWVv dXQsIHNpbmNlIHdlJ3JlCisgICAgICAgICAgICAjIHJhY2luZyBhZ2FpbnN0IHRoZSB0ZXN0J3Mg b3duIHVzZSBvZiByZW1haW5pbmdfdGltZW91dCgpLiAoSXQncworICAgICAgICAgICAgIyBwcmVm ZXJhYmxlIHRvIGxldCB0ZXN0cyByZXBvcnQgdGltZW91dHM7IHRoZSBzdGFjayB0cmFjZXMgd2ls bAorICAgICAgICAgICAgIyBoZWxwIHdpdGggZGVidWdnaW5nLikKKyAgICAgICAgICAgIHNlbGYu X3RocmVhZC5qb2luKHJlbWFpbmluZ190aW1lb3V0KCkgKyAxKQorICAgICAgICAgICAgaWYgc2Vs Zi5fdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9y KCJiYWNrZ3JvdW5kIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nIGFmdGVyIHRpbWVvdXQiKQorCisg ICAgICAgICAgICBpZiBzZWxmLl90aHJlYWRfZXhjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg ICAgIHJhaXNlIHNlbGYuX3RocmVhZF9leGMKKworICAgIHJldHVybiBfVENQU2VydmVyCisKKwor QHB5dGVzdC5maXh0dXJlCitkZWYgdGNwX3NlcnZlcih0Y3Bfc2VydmVyX2NsYXNzKToKKyAgICAi IiIKKyAgICBPcGVucyB1cCBhIGxvY2FsIFRDUCBzb2NrZXQgZm9yIG1vY2tpbmcgYSBQb3N0Z3Jl cyBzZXJ2ZXIgb24gYSBiYWNrZ3JvdW5kCisgICAgdGhyZWFkLiBTZWUgdGhlIF9UQ1BTZXJ2ZXIg QVBJIGZvciB1c2FnZS4KKyAgICAiIiIKKyAgICB3aXRoIHRjcF9zZXJ2ZXJfY2xhc3MoKSBhcyBz OgorICAgICAgICB5aWVsZCBzCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgc3NsX3NlcnZlcih0 Y3Bfc2VydmVyX2NsYXNzLCBjZXJ0cyk6CisgICAgIiIiCisgICAgTGlrZSB0Y3Bfc2VydmVyLCBi dXQgd2l0aCBhbiBhZGRpdGlvbmFsIC5iYWNrZ3JvdW5kX3NzbCgpIG1ldGhvZCB3aGljaCB3aWxs CisgICAgcGVyZm9ybSBhIFNTTFJlcXVlc3QgaGFuZHNoYWtlIG9uIHRoZSBzb2NrZXQgYmVmb3Jl IGhhbmRpbmcgdGhlIGNvbm5lY3Rpb24KKyAgICB0byB0aGUgdGVzdCBjYWxsYmFjay4KKworICAg IFRoaXMgc2VydmVyIHVzZXMgY2VydHMuc2VydmVyIGFzIGl0cyBpZGVudGl0eS4KKyAgICAiIiIK KworICAgIGNsYXNzIF9TU0xTZXJ2ZXIodGNwX3NlcnZlcl9jbGFzcyk6CisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisgICAgICAg ICAgICBzZWxmLmNvbm5pbmZvWyJob3N0Il0gPSBjZXJ0cy5zZXJ2ZXJfaG9zdAorCisgICAgICAg ICAgICBzZWxmLl9jdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX1NFUlZFUikK KyAgICAgICAgICAgIHNlbGYuX2N0eC5sb2FkX2NlcnRfY2hhaW4oY2VydHMuc2VydmVyLmNlcnRw YXRoLCBjZXJ0cy5zZXJ2ZXIua2V5cGF0aCkKKworICAgICAgICBkZWYgYmFja2dyb3VuZF9zc2wo c2VsZiwgZm46IENhbGxhYmxlW1tzc2wuU1NMU29ja2V0XSwgTm9uZV0pIC0+IE5vbmU6CisgICAg ICAgICAgICAiIiIKKyAgICAgICAgICAgIEludm9rZXMgYSBzZXJ2ZXIgY2FsbGJhY2sgYXMgd2l0 aCAuYmFja2dyb3VuZCgpLCBidXQgYW4gU1NMUmVxdWVzdAorICAgICAgICAgICAgaGFuZHNoYWtl IGlzIHBlcmZvcm1lZCBmaXJzdCwgYW5kIHRoZSBzb2NrZXQgcHJvdmlkZWQgdG8gdGhlCisgICAg ICAgICAgICBjYWxsYmFjayBoYXMgYmVlbiB3cmFwcGVkIGluIGFuIE9wZW5TU0wgbGF5ZXIuCisg ICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgZGVmIGhhbmRzaGFrZShzOiBzb2NrZXQuc29j a2V0KToKKyAgICAgICAgICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVj dig0KSlbMF0KKworICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIGdldCBhbiBTU0xSZXF1 ZXN0LgorICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJl Y3YoNCkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0gKDEyMzQsIDU2NzkpCisg ICAgICAgICAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA4CisKKyAgICAgICAgICAgICAgICAjIEFj Y2VwdCB0aGUgU1NMUmVxdWVzdC4KKyAgICAgICAgICAgICAgICBzLnNlbmQoYiJTIikKKworICAg ICAgICAgICAgICAgIHdpdGggc2VsZi5fY3R4LndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRy dWUpIGFzIHdyYXBwZWQ6CisgICAgICAgICAgICAgICAgICAgIGZuKHdyYXBwZWQpCisKKyAgICAg ICAgICAgIHNlbGYuYmFja2dyb3VuZChoYW5kc2hha2UpCisKKyAgICB3aXRoIF9TU0xTZXJ2ZXIo KSBhcyBzOgorICAgICAgICB5aWVsZCBzCisKKworIworIyBUZXN0cworIworCisKK0BweXRlc3Qu bWFyay5wYXJhbWV0cml6ZSgic3NsbW9kZSIsICgicmVxdWlyZSIsICJ2ZXJpZnktY2EiLCAidmVy aWZ5LWZ1bGwiKSkKK2RlZiB0ZXN0X3NlcnZlcl93aXRoX3NzbF9kaXNhYmxlZChsaWJwcSwgdGNw X3NlcnZlciwgY2VydHMsIHNzbG1vZGUpOgorICAgICIiIgorICAgIE1ha2Ugc3VyZSBjbGllbnQg cmVmdXNlcyB0byB0YWxrIHRvIG5vbi1TU0wgc2VydmVycyB3aXRoIHN0cmljdGVyCisgICAgc3Ns bW9kZXMuCisgICAgIiIiCisKKyAgICBkZWYgcmVmdXNlX3NzbChzOiBzb2NrZXQuc29ja2V0KToK KyAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisKKyAg ICAgICAgIyBNYWtlIHN1cmUgd2UgZ2V0IGFuIFNTTFJlcXVlc3QuCisgICAgICAgIHZlcnNpb24g PSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAgICAgIGFzc2VydCB2ZXJzaW9u ID09ICgxMjM0LCA1Njc5KQorICAgICAgICBhc3NlcnQgcGt0bGVuID09IDgKKworICAgICAgICAj IFJlZnVzZSB0aGUgU1NMUmVxdWVzdC4KKyAgICAgICAgcy5zZW5kKGIiTiIpCisKKyAgICAgICAg IyBXYWl0IGZvciB0aGUgY2xpZW50IHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uLgorICAgICAgICBh c3NlcnQgbm90IHMucmVjdigxKSwgImNsaWVudCBzZW50IHVuZXhwZWN0ZWQgZGF0YSIKKworICAg IHRjcF9zZXJ2ZXIuYmFja2dyb3VuZChyZWZ1c2Vfc3NsKQorCisgICAgd2l0aCBweXRlc3QucmFp c2VzKGxpYnBxLkVycm9yLCBtYXRjaD0ic2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU1NMIik6Cisg ICAgICAgIHdpdGggbGlicHE6ICAjIFhYWCB0ZXN0cyBzaG91bGRuJ3QgbmVlZCB0byBkbyB0aGlz CisgICAgICAgICAgICBsaWJwcS5tdXN0X2Nvbm5lY3QoCisgICAgICAgICAgICAgICAgKip0Y3Bf c2VydmVyLmNvbm5pbmZvLAorICAgICAgICAgICAgICAgIHNzbHJvb3RjZXJ0PWNlcnRzLmNhLmNl cnRwYXRoLAorICAgICAgICAgICAgICAgIHNzbG1vZGU9c3NsbW9kZSwKKyAgICAgICAgICAgICkK KworCitkZWYgdGVzdF92ZXJpZnlfZnVsbF9jb25uZWN0aW9uKGxpYnBxLCBzc2xfc2VydmVyLCBj ZXJ0cyk6CisgICAgIiIiQ29tcGxldGVzIGEgdmVyaWZ5LWZ1bGwgY29ubmVjdGlvbiBhbmQgZW1w dHkgcXVlcnkuIiIiCisKKyAgICBkZWYgaGFuZGxlX2VtcHR5X3F1ZXJ5KHM6IHNzbC5TU0xTb2Nr ZXQpOgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0KSlbMF0K KworICAgICAgICAjIENoZWNrIHRoZSBzdGFydHVwIHBhY2tldCB2ZXJzaW9uLCB0aGVuIGRpc2Nh cmQgdGhlIHJlbWFpbmRlci4KKyAgICAgICAgdmVyc2lvbiA9IHN0cnVjdC51bnBhY2soIiFISCIs IHMucmVjdig0KSkKKyAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0gKDMsIDApCisgICAgICAgIHMu cmVjdihwa3RsZW4gLSA4KQorCisgICAgICAgICMgU2VuZCB0aGUgcmVxdWlyZWQgbGl0YW55IG9m IHNlcnZlciBtZXNzYWdlcy4KKyAgICAgICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0lJIiwgYiJS IiwgOCwgMCkpICAjIEF1dGhlbnRpY2F0aW9uT0sKKworICAgICAgICAjIFBhcmFtZXRlclN0YXR1 czogY2xpZW50X2VuY29kaW5nCisgICAgICAgIGtleSA9IGIiY2xpZW50X2VuY29kaW5nXDAiCisg ICAgICAgIHZhbCA9IGIiVVRGLThcMCIKKyAgICAgICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0ki LCBiIlMiLCA0ICsgbGVuKGtleSkgKyBsZW4odmFsKSkgKyBrZXkgKyB2YWwpCisKKyAgICAgICAg IyBQYXJhbWV0ZXJTdGF0dXM6IERhdGVTdHlsZQorICAgICAgICBrZXkgPSBiIkRhdGVTdHlsZVww IgorICAgICAgICB2YWwgPSBiIklTTywgTURZXDAiCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFj aygiIWNJIiwgYiJTIiwgNCArIGxlbihrZXkpICsgbGVuKHZhbCkpICsga2V5ICsgdmFsKQorCisg ICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJSUkiLCBiIksiLCAxMiwgMTIzNCwgMTIzNCkp ICAjIEJhY2tlbmRLZXlEYXRhCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJYyIsIGIi WiIsIDUsIGIiSSIpKSAgIyBSZWFkeUZvclF1ZXJ5CisKKyAgICAgICAgIyBFeHBlY3QgYW4gZW1w dHkgcXVlcnkuCisgICAgICAgIHBrdHR5cGUgPSBzLnJlY3YoMSkKKyAgICAgICAgYXNzZXJ0IHBr dHR5cGUgPT0gYiJRIgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVj dig0KSlbMF0KKyAgICAgICAgYXNzZXJ0IHMucmVjdihwa3RsZW4gLSA0KSA9PSBiIlwwIgorCisg ICAgICAgICMgU2VuZCBhbiBFbXB0eVF1ZXJ5UmVzcG9uc2UrUmVhZHlGb3JRdWVyeS4KKyAgICAg ICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0kiLCBiIkkiLCA0KSkKKyAgICAgICAgcy5zZW5kKHN0 cnVjdC5wYWNrKCIhY0ljIiwgYiJaIiwgNSwgYiJJIikpCisKKyAgICAgICAgIyBsaWJwcSBzaG91 bGQgdGVybWluYXRlIGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgYXNzZXJ0IHMu cmVjdigxKSA9PSBiIlgiCisgICAgICAgIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwgcy5y ZWN2KDQpKVswXQorICAgICAgICBhc3NlcnQgcGt0bGVuID09IDQKKworICAgICAgICBhc3NlcnQg bm90IHMucmVjdigxKSwgImNsaWVudCBzZW50IHVuZXhwZWN0ZWQgZGF0YSIKKworICAgIHNzbF9z ZXJ2ZXIuYmFja2dyb3VuZF9zc2woaGFuZGxlX2VtcHR5X3F1ZXJ5KQorCisgICAgY29ubiA9IGxp YnBxLm11c3RfY29ubmVjdCgKKyAgICAgICAgKipzc2xfc2VydmVyLmNvbm5pbmZvLAorICAgICAg ICBzc2xyb290Y2VydD1jZXJ0cy5jYS5jZXJ0cGF0aCwKKyAgICAgICAgc3NsbW9kZT0idmVyaWZ5 LWZ1bGwiLAorICAgICkKKyAgICB3aXRoIGNvbm46CisgICAgICAgIGFzc2VydCBjb25uLmV4ZWMo IiIpLnN0YXR1cygpID09IGxpYnBxLlBHUkVTX0VNUFRZX1FVRVJZCi0tIAoyLjUxLjEKCg== --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0004-WIP-pytest-Add-some-server-side-SSL-tests.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0004-WIP-pytest-Add-some-server-side-SSL-tests.patch RnJvbSBkYzk2ZWIwNzIxMDc0YTUyMjU2OGY1YWM2MDg1MjJlYTMwMDAxYjZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCAyMiBBdWcgMjAyNSAxNzozOTo0MCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjMgMDQvMTBdIFdJUDogcHl0ZXN0OiBBZGQgc29tZSBzZXJ2ZXItc2lkZSBTU0wg dGVzdHMKCkluIHRoZSBzYW1lIHZlaW4gYXMgdGhlIHByZXZpb3VzIGNvbW1pdCwgdGhpcyBpcyBh IHNlcnZlci1vbmx5IHRlc3QKc3VpdGUgb3BlcmF0aW5nIGFnYWluc3QgYSBtb2NrIGNsaWVudC4g VGhlIHRlc3QgaXRzZWxmIGlzIGEgaGVhdmlseQpwYXJhbWV0ZXJpemVkIGNoZWNrIGZvciBkaXJl Y3QtU1NMIGhhbmRzaGFrZSBiZWhhdmlvciwgdXNpbmcgYQpjb21iaW5hdGlvbiBvZiAic3RhbmRh cmQiIGFuZCAiY3VzdG9tIiBjZXJ0aWZpY2F0ZXMgdmlhIHRoZSBjZXJ0cwpmaXh0dXJlLgoKaW5z dGFsbGNoZWNrIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCwgYnV0IHRoZSBhcmNoaXRlY3R1cmUg aGFzIHNvbWUKZXh0ZW5zaW9uIHBvaW50cyB0aGF0IHNob3VsZCBtYWtlIGl0IHBvc3NpYmxlIGxh dGVyLiBGb3Igbm93LCBhIG5ldwpzZXJ2ZXIgaXMgYWx3YXlzIHN0YXJ0ZWQgZm9yIHRoZSB0ZXN0 IHNlc3Npb24uCgpOZXcgc2Vzc2lvbi1sZXZlbCBmaXh0dXJlcyBoYXZlIGJlZW4gYWRkZWQgd2hp Y2ggcHJvYmFibHkgbmVlZCB0bwptaWdyYXRlIHRvIHRoZSBgcGdgIHBhY2thZ2UuIE9mIG5vdGU6 CgotIGRhdGFkaXIgcG9pbnRzIHRvIHRoZSBzZXJ2ZXIncyBkYXRhIGRpcmVjdG9yeQotIHNvY2tk aXIgcG9pbnRzIHRvIHRoZSBzZXJ2ZXIncyBVTklYIHNvY2tldC9sb2NrIGRpcmVjdG9yeQotIHNl cnZlcl9pbnN0YW5jZSBhY3R1YWxseSBpbml0cyBhbmQgc3RhcnRzIGEgc2VydmVyIHZpYSB0aGUg cGdfY3RsIG9uCiAgUEFUSCAoYW5kIGNvdWxkIGV2ZW50dWFsbHkgcG9pbnQgYXQgYW4gaW5zdGFs bGNoZWNrIHRhcmdldCkKCldyYXBwaW5nIHRoZXNlIHNlc3Npb24tbGV2ZWwgZml4dHVyZXMgaXMg cGdfc2VydmVyW19zZXNzaW9uXSwgd2hpY2gKcHJvdmlkZXMgQVBJcyBmb3IgY29uZmlndXJhdGlv biBjaGFuZ2VzIHRoYXQgdW53aW5kIHRoZW1zZWx2ZXMgYXQgdGhlCmVuZCBvZiBmaXh0dXJlIHNj b3Blcy4gVGhlcmUncyBhbHNvIGFuIGV4YW1wbGUgb2YgbmVzdGVkIHNjb3BlcywgdmlhCnBnX3Nl cnZlcl9zZXNzaW9uLnN1YmNvbnRleHQoKS4gTWFueSBUT0RPcyByZW1haW4gYmVmb3JlIHdlJ3Jl IG9uIHBhcgp3aXRoIFRlc3Q6OkNsdXN0ZXIsIGJ1dCB0aGlzIHNob3VsZCBpbGx1c3RyYXRlIG15 IGRlc2lyZWQgYXJjaGl0ZWN0dXJlCnByZXR0eSB3ZWxsLgoKV2luZG93cyBjdXJyZW50bHkgdXNl cyBTQ1JBTS1vdmVyLVVOSVggZm9yIHRoZSBhZG1pbiBhY2NvdW50IHJhdGhlciB0aGFuClNTUEkt b3Zlci1UQ1AuIFRoZXJlJ3Mgc29tZSBkZWFkIFdpbjMyIGNvZGUgaW4gcGcuY3VycmVudF93aW5k b3dzX3VzZXIsCmJ1dCBJJ3ZlIGtlcHQgaXQgYXMgYW4gaWxsdXN0cmF0aW9uIG9mIGhvdyBhIGRl dmVsb3BlciBtaWdodCB3cml0ZSBzdWNoCmNvZGUgZm9yIFNTUEkuIEknbGwgcHJvYmFibHkgcmVt b3ZlIGl0IGluIGEgZnV0dXJlIHBhdGNoIHZlcnNpb24uCgpUT0RPczoKLSBwb3J0IG1vcmUgc2Vy dmVyIGNvbmZpZ3VyYXRpb24gYmVoYXZpb3IgZnJvbSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy Ci0gZGVjaWRlIGFnYWluIG9uICJzZXNzaW9uIiB2cy4gIm1vZHVsZSIgc2NvcGUgZm9yIHNlcnZl ciBmaXh0dXJlcwotIGltcHJvdmUgcmVtYWluaW5nX3RpbWVvdXQoKSBpbnRlZ3JhdGlvbiB3aXRo IHNvY2tldCBvcGVyYXRpb25zOyBhdCB0aGUKICBtb21lbnQsIHRoZSB0aW1lb3V0IHJlc2V0cyBv biBldmVyeSBjYWxsIHJhdGhlciB0aGFuIGRlY3JlbWVudGluZwotLS0KIHNyYy90ZXN0L3B5dGVz dC9wZy9fX2luaXRfXy5weSAgfCAgIDEgKwogc3JjL3Rlc3QvcHl0ZXN0L3BnL193aW4zMi5weSAg ICB8IDE0NSArKysrKysrKysKIHNyYy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkgICAgfCAxMTMg KysrKysrKwogc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weSB8IDUzOCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA3OTcgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9wZy9fd2luMzIucHkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zc2wvcHl0L3Rlc3Rfc2VydmVyLnB5CgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcHl0ZXN0L3BnL19faW5pdF9fLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3BnL19f aW5pdF9fLnB5CmluZGV4IGVmOGZhZjU0Y2E0Li41ZGFlNDliNjQwNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcHl0ZXN0L3BnL19faW5pdF9fLnB5CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9wZy9fX2lu aXRfXy5weQpAQCAtMSwzICsxLDQgQEAKICMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiBmcm9tIC5fZW52IGltcG9ydCBoYXNfdGVzdF9l eHRyYSwgcmVxdWlyZV90ZXN0X2V4dHJhCitmcm9tIC5fd2luMzIgaW1wb3J0IGN1cnJlbnRfd2lu ZG93c191c2VyCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcGcvX3dpbjMyLnB5IGIvc3Jj L3Rlc3QvcHl0ZXN0L3BnL193aW4zMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uM2ZkNjdiMTAxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3Qv cGcvX3dpbjMyLnB5CkBAIC0wLDAgKzEsMTQ1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGN0eXBlcworaW1wb3J0 IHBsYXRmb3JtCisKKworZGVmIGN1cnJlbnRfd2luZG93c191c2VyKCk6CisgICAgIiIiCisgICAg QSBwb3J0IG9mIHBnX3JlZ3Jlc3MuYydzIGN1cnJlbnRfd2luZG93c191c2VyKCkgaGVscGVyLiBS ZXR1cm5zCisgICAgKGFjY291bnRuYW1lLCBkb21haW5uYW1lKS4KKworICAgIFhYWCBUaGlzIGlz IGRlYWQgY29kZSBub3csIGJ1dCBJJ20ga2VlcGluZyBpdCBhcyBhIG1vdGl2YXRpbmcgZXhhbXBs ZSBvZgorICAgIFdpbjMyIGludGVyYWN0aW9uLCBhbmQgc29tZW9uZSBtYXkgZmluZCBpdCB1c2Vm dWwgaW4gdGhlIGZ1dHVyZSB3aGVuIHdyaXRpbmcKKyAgICBTU1BJIHRlc3RzPworICAgICIiIgor ICAgIHRyeToKKyAgICAgICAgYWR2YXBpMzIgPSBjdHlwZXMud2luZGxsLmFkdmFwaTMyCisgICAg ICAgIGtlcm5lbDMyID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMgorICAgIGV4Y2VwdCBBdHRyaWJ1 dGVFcnJvcjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgZiJjdXJy ZW50X3dpbmRvd3NfdXNlcigpIGlzIG5vdCBzdXBwb3J0ZWQgb24ge3BsYXRmb3JtLnN5c3RlbSgp fSIKKyAgICAgICAgKQorCisgICAgZGVmIHJhaXNlX3dpbmVycm9yX3doZW5fZmFsc2UocmVzdWx0 LCBmdW5jLCBhcmd1bWVudHMpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBjdHlwZXMgZXJyY2hl Y2sgaGFuZGxlciB0aGF0IHJhaXNlcyBXaW5FcnJvciAod2hpY2ggd2lsbCBjb250YWluIHRoZQor ICAgICAgICByZXN1bHQgb2YgR2V0TGFzdEVycm9yKCkpIHdoZW4gdGhlIGZ1bmN0aW9uJ3MgcmV0 dXJuIHZhbHVlIGlzIGZhbHNlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHJlc3VsdDoK KyAgICAgICAgICAgIHJhaXNlIGN0eXBlcy5XaW5FcnJvcigpCisKKyAgICAjCisgICAgIyBGdW5j dGlvbiBQcm90b3R5cGVzCisgICAgIworCisgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHdpbnR5cGVz CisKKyAgICAjIEdldEN1cnJlbnRQcm9jZXNzCisgICAga2VybmVsMzIuR2V0Q3VycmVudFByb2Nl c3MucmVzdHlwZSA9IHdpbnR5cGVzLkhBTkRMRQorICAgIGtlcm5lbDMyLkdldEN1cnJlbnRQcm9j ZXNzLmFyZ3R5cGVzID0gW10KKworICAgICMgT3BlblByb2Nlc3NUb2tlbgorICAgIFRPS0VOX1JF QUQgPSAweDAwMDIwMDA4CisKKyAgICBhZHZhcGkzMi5PcGVuUHJvY2Vzc1Rva2VuLnJlc3R5cGUg PSB3aW50eXBlcy5CT09MCisgICAgYWR2YXBpMzIuT3BlblByb2Nlc3NUb2tlbi5hcmd0eXBlcyA9 IFsKKyAgICAgICAgd2ludHlwZXMuSEFORExFLAorICAgICAgICB3aW50eXBlcy5EV09SRCwKKyAg ICAgICAgd2ludHlwZXMuUEhBTkRMRSwKKyAgICBdCisgICAgYWR2YXBpMzIuT3BlblByb2Nlc3NU b2tlbi5lcnJjaGVjayA9IHJhaXNlX3dpbmVycm9yX3doZW5fZmFsc2UKKworICAgICMgR2V0VG9r ZW5JbmZvcm1hdGlvbgorICAgIFBTSUQgPSB3aW50eXBlcy5MUFZPSUQgICMgd2UgZG9uJ3QgbmVl ZCB0aGUgaW50ZXJuYWxzCisgICAgVE9LRU5fSU5GT1JNQVRJT05fQ0xBU1MgPSB3aW50eXBlcy5J TlQKKyAgICBUb2tlblVzZXIgPSAxCisKKyAgICBjbGFzcyBTSURfQU5EX0FUVFJJQlVURVMoY3R5 cGVzLlN0cnVjdHVyZSk6CisgICAgICAgIF9maWVsZHNfID0gWworICAgICAgICAgICAgKCJTaWQi LCBQU0lEKSwKKyAgICAgICAgICAgICgiQXR0cmlidXRlcyIsIHdpbnR5cGVzLkRXT1JEKSwKKyAg ICAgICAgXQorCisgICAgY2xhc3MgVE9LRU5fVVNFUihjdHlwZXMuU3RydWN0dXJlKToKKyAgICAg ICAgX2ZpZWxkc18gPSBbCisgICAgICAgICAgICAoIlVzZXIiLCBTSURfQU5EX0FUVFJJQlVURVMp LAorICAgICAgICBdCisKKyAgICBhZHZhcGkzMi5HZXRUb2tlbkluZm9ybWF0aW9uLnJlc3R5cGUg PSB3aW50eXBlcy5CT09MCisgICAgYWR2YXBpMzIuR2V0VG9rZW5JbmZvcm1hdGlvbi5hcmd0eXBl cyA9IFsKKyAgICAgICAgd2ludHlwZXMuSEFORExFLAorICAgICAgICBUT0tFTl9JTkZPUk1BVElP Tl9DTEFTUywKKyAgICAgICAgd2ludHlwZXMuTFBWT0lELAorICAgICAgICB3aW50eXBlcy5EV09S RCwKKyAgICAgICAgd2ludHlwZXMuUERXT1JELAorICAgIF0KKyAgICBhZHZhcGkzMi5HZXRUb2tl bkluZm9ybWF0aW9uLmVycmNoZWNrID0gcmFpc2Vfd2luZXJyb3Jfd2hlbl9mYWxzZQorCisgICAg IyBMb29rdXBBY2NvdW50U2lkCisgICAgU0lEX05BTUVfVVNFID0gd2ludHlwZXMuSU5UCisgICAg UFNJRF9OQU1FX1VTRSA9IGN0eXBlcy5QT0lOVEVSKFNJRF9OQU1FX1VTRSkKKworICAgIGFkdmFw aTMyLkxvb2t1cEFjY291bnRTaWRXLnJlc3R5cGUgPSB3aW50eXBlcy5CT09MCisgICAgYWR2YXBp MzIuTG9va3VwQWNjb3VudFNpZFcuYXJndHlwZXMgPSBbCisgICAgICAgIHdpbnR5cGVzLkxQQ1dT VFIsCisgICAgICAgIFBTSUQsCisgICAgICAgIHdpbnR5cGVzLkxQV1NUUiwKKyAgICAgICAgd2lu dHlwZXMuTFBEV09SRCwKKyAgICAgICAgd2ludHlwZXMuTFBXU1RSLAorICAgICAgICB3aW50eXBl cy5MUERXT1JELAorICAgICAgICBQU0lEX05BTUVfVVNFLAorICAgIF0KKyAgICBhZHZhcGkzMi5M b29rdXBBY2NvdW50U2lkVy5lcnJjaGVjayA9IHJhaXNlX3dpbmVycm9yX3doZW5fZmFsc2UKKwor ICAgICMKKyAgICAjIEltcGxlbWVudGF0aW9uIChzZWUgcGdfU1NQSV9yZWN2X2F1dGgoKSkKKyAg ICAjCisKKyAgICAjIEdldCB0aGUgY3VycmVudCBwcm9jZXNzIHRva2VuLi4uCisgICAgdG9rZW4g PSB3aW50eXBlcy5IQU5ETEUoKQorICAgIHByb2MgPSBrZXJuZWwzMi5HZXRDdXJyZW50UHJvY2Vz cygpCisgICAgYWR2YXBpMzIuT3BlblByb2Nlc3NUb2tlbihwcm9jLCBUT0tFTl9SRUFELCB0b2tl bikKKworICAgICMgLi4udGhlbiByZWFkIHRoZSBUT0tFTl9VU0VSIHN0cnVjdCBmb3IgdGhhdCB0 b2tlbi4uLgorICAgIGluZm8gPSBUT0tFTl9VU0VSKCkKKyAgICBpbmZvbGVuID0gd2ludHlwZXMu RFdPUkQoKQorCisgICAgdHJ5OgorICAgICAgICAjIChHZXRUb2tlbkluZm9ybWF0aW9uIGNyZWF0 ZXMgYSBidWZmZXIgYmlnZ2VyIHRoYW4gVE9LRU5fVVNFUiwgc28gd2UKKyAgICAgICAgIyBoYXZl IHRvIHF1ZXJ5IHRoZSBjb3JyZWN0IGxlbmd0aCBmaXJzdC4pCisgICAgICAgIGFkdmFwaTMyLkdl dFRva2VuSW5mb3JtYXRpb24odG9rZW4sIFRva2VuVXNlciwgTm9uZSwgMCwgY3R5cGVzLmJ5cmVm KGluZm9sZW4pKQorICAgICAgICBhc3NlcnQgRmFsc2UsICJHZXRUb2tlbkluZm9ybWF0aW9uIHN1 Y2NlZWRlZCB1bmV4cGVjdGVkbHkiCisKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAg ICAgIGFzc2VydCBlcnIud2luZXJyb3IgPT0gMTIyICAjIGluc3VmZmljaWVudCBidWZmZXIKKwor ICAgICAgICBjdHlwZXMucmVzaXplKGluZm8sIGluZm9sZW4udmFsdWUpCisgICAgICAgIGFkdmFw aTMyLkdldFRva2VuSW5mb3JtYXRpb24oCisgICAgICAgICAgICB0b2tlbiwKKyAgICAgICAgICAg IFRva2VuVXNlciwKKyAgICAgICAgICAgIGN0eXBlcy5ieXJlZihpbmZvKSwKKyAgICAgICAgICAg IGN0eXBlcy5zaXplb2YoaW5mbyksCisgICAgICAgICAgICBjdHlwZXMuYnlyZWYoaW5mb2xlbiks CisgICAgICAgICkKKworICAgICMgLi4udGhlbiBwdWxsIHRoZSBhY2NvdW50IGFuZCBkb21haW4g bmFtZXMgb3V0IG9mIHRoZSB1c2VyIFNJRC4KKyAgICBNQVhQR1BBVEggPSAxMDI0CisKKyAgICBh Y2NvdW50ID0gY3R5cGVzLmNyZWF0ZV91bmljb2RlX2J1ZmZlcihNQVhQR1BBVEgpCisgICAgZG9t YWluID0gY3R5cGVzLmNyZWF0ZV91bmljb2RlX2J1ZmZlcihNQVhQR1BBVEgpCisgICAgYWNjb3Vu dGxlbiA9IHdpbnR5cGVzLkRXT1JEKGN0eXBlcy5zaXplb2YoYWNjb3VudCkpCisgICAgZG9tYWlu bGVuID0gd2ludHlwZXMuRFdPUkQoY3R5cGVzLnNpemVvZihkb21haW4pKQorICAgIHVzZSA9IFNJ RF9OQU1FX1VTRSgpCisKKyAgICBhZHZhcGkzMi5Mb29rdXBBY2NvdW50U2lkVygKKyAgICAgICAg Tm9uZSwKKyAgICAgICAgaW5mby5Vc2VyLlNpZCwKKyAgICAgICAgYWNjb3VudCwKKyAgICAgICAg Y3R5cGVzLmJ5cmVmKGFjY291bnRsZW4pLAorICAgICAgICBkb21haW4sCisgICAgICAgIGN0eXBl cy5ieXJlZihkb21haW5sZW4pLAorICAgICAgICBjdHlwZXMuYnlyZWYodXNlKSwKKyAgICApCisK KyAgICByZXR1cm4gKGFjY291bnQudmFsdWUsIGRvbWFpbi52YWx1ZSkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkgYi9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5 CmluZGV4IGZiNGRiMzcyZjAzLi44NWQyYzk5NDgyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Ns L3B5dC9jb25mdGVzdC5weQorKysgYi9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CkBAIC0x LDYgKzEsMTIgQEAKICMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAogCiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcworaW1wb3J0IHBhdGhs aWIKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNlY3JldHMKK2ltcG9ydCBzb2NrZXQKK2ltcG9y dCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5h bWVkdHVwbGUKIApAQCAtMTI3LDMgKzEzMywxMTAgQEAgZGVmIGNlcnRzKGNyeXB0b2dyYXBoeSwg dG1wX3BhdGhfZmFjdG9yeSk6CiAgICAgICAgICAgICByZXR1cm4gZi5uYW1lCiAKICAgICByZXR1 cm4gX0NlcnRzKCkKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGRh dGFkaXIodG1wX3BhdGhfZmFjdG9yeSk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgZGlyZWN0 b3J5IG5hbWUgdG8gdXNlIGFzIHRoZSBzZXJ2ZXIgZGF0YSBkaXJlY3RvcnkuIElmCisgICAgVEVT VERBVEFESVIgaXMgcHJvdmlkZWQsIHRoYXQgd2lsbCBiZSB1c2VkOyBvdGhlcndpc2UgYSBuZXcg dGVtcG9yYXJ5CisgICAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgaW4gdGhlIHB5dGVzdCB0ZW1wIHJv b3QuCisgICAgIiIiCisgICAgZCA9IG9zLmdldGVudigiVEVTVERBVEFESVIiKQorICAgIGlmIGQ6 CisgICAgICAgIGQgPSBwYXRobGliLlBhdGgoZCkKKyAgICBlbHNlOgorICAgICAgICBkID0gdG1w X3BhdGhfZmFjdG9yeS5ta3RlbXAoInRtcF9jaGVjayIpCisKKyAgICByZXR1cm4gZAorCisKK0Bw eXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgc29ja2Rpcih0bXBfcGF0aF9mYWN0 b3J5KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSB0byB1c2UgYXMg dGhlIHNlcnZlcidzIHVuaXhfc29ja2V0X2RpcmVjdG9yaWVzCisgICAgc2V0dGluZy4gTG9jYWwg Y2xpZW50IGNvbm5lY3Rpb25zIHVzZSB0aGlzIGFzIHRoZSBQR0hPU1QuCisKKyAgICBBdCB0aGUg bW9tZW50LCB0aGlzIGlzIGFsd2F5cyBwdXQgdW5kZXIgdGhlIHB5dGVzdCB0ZW1wIHJvb3QuCisg ICAgIiIiCisgICAgcmV0dXJuIHRtcF9wYXRoX2ZhY3RvcnkubWt0ZW1wKCJzb2NrZmlsZXMiKQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgd2lucGFzc3dvcmQoKToK KyAgICAiIiJUaGUgcGVyLXNlc3Npb24gU0NSQU0gcGFzc3dvcmQgZm9yIHRoZSBzZXJ2ZXIgYWRt aW4gb24gV2luZG93cy4iIiIKKyAgICByZXR1cm4gc2VjcmV0cy50b2tlbl91cmxzYWZlKDE2KQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgc2VydmVyX2luc3RhbmNl KGNlcnRzLCBkYXRhZGlyLCBzb2NrZGlyLCB3aW5wYXNzd29yZCk6CisgICAgIiIiCisgICAgU3Rh cnRzIGEgcnVubmluZyBQb3N0Z3JlcyBzZXJ2ZXIgbGlzdGVuaW5nIG9uIGxvY2FsaG9zdC4gVGhl IEhCQSBpbml0aWFsbHkKKyAgICBhbGxvd3Mgb25seSBsb2NhbCBVTklYIGNvbm5lY3Rpb25zIGZy b20gdGhlIHNhbWUgdXNlci4KKworICAgIFRPRE86IHdoZW4gaW5zdGFsbGNoZWNrIGlzIHN1cHBv cnRlZCwgdGhpcyBzaG91bGQgb3B0aW9uYWxseSBwb2ludCB0byB0aGUKKyAgICBjdXJyZW50bHkg cnVubmluZyBzZXJ2ZXIgaW5zdGVhZC4KKyAgICAiIiIKKworICAgICMgTG9jayBkb3duIHRoZSBI QkEgYnkgZGVmYXVsdDsgdGVzdHMgY2FuIG9wZW4gaXQgYmFjayB1cCBsYXRlci4KKyAgICBpZiBw bGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAgICMgT24gV2luZG93cywgZm9y IGFkbWluIGNvbm5lY3Rpb25zLCB1c2UgU0NSQU0gd2l0aCBhIGdlbmVyYXRlZCBwYXNzd29yZAor ICAgICAgICAjIG92ZXIgbG9jYWwgc29ja2V0cy4gVGhpcyByZXF1aXJlcyBhZGRpdGlvbmFsIHdv cmsgZHVyaW5nIGluaXRkYi4KKyAgICAgICAgbWV0aG9kID0gInNjcmFtLXNoYS0yNTYiCisKKyAg ICAgICAgIyBOYW1lZFRlbXBvcmFyeUZpbGUgZG9lc24ndCB3b3JrIHZlcnkgbmljZWx5IG9uIFdp bmRvd3MgdW50aWwgUHl0aG9uCisgICAgICAgICMgMy4xMiwgd2hpY2ggaW50cm9kdWNlcyBOYW1l ZFRlbXBvcmFyeUZpbGUoZGVsZXRlX29uX2Nsb3NlPUZhbHNlKS4KKyAgICAgICAgIyBVbnRpbCB0 aGVuLCBzcGVjaWZ5IGRlbGV0ZT1GYWxzZSBhbmQgbWFudWFsbHkgdW5saW5rIGFmdGVyIHVzZS4K KyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoInciLCBkZWxldGU9RmFs c2UpIGFzIHB3ZmlsZToKKyAgICAgICAgICAgIHB3ZmlsZS53cml0ZSh3aW5wYXNzd29yZCkKKwor ICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoCisgICAgICAgICAgICBbImluaXRkYiIsICIt LWF1dGg9c2NyYW0tc2hhLTI1NiIsICItLXB3ZmlsZSIsIHB3ZmlsZS5uYW1lLCBkYXRhZGlyXQor ICAgICAgICApCisgICAgICAgIG9zLnVubGluayhwd2ZpbGUubmFtZSkKKworICAgIGVsc2U6Cisg ICAgICAgICMgRm9yIG90aGVyIE9TZXMgd2UgY2FuIGp1c3QgdXNlIHBlZXIgYXV0aC4KKyAgICAg ICAgbWV0aG9kID0gInBlZXIiCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbInBnX2N0 bCIsICItRCIsIGRhdGFkaXIsICJpbml0Il0pCisKKyAgICB3aXRoIG9wZW4oZGF0YWRpciAvICJw Z19oYmEuY29uZiIsICJ3IikgYXMgZjoKKyAgICAgICAgcHJpbnQoZiIjIGRlZmF1bHQ6IGxvY2Fs IHttZXRob2R9IGNvbm5lY3Rpb25zIG9ubHkiLCBmaWxlPWYpCisgICAgICAgIHByaW50KGYibG9j YWwgYWxsIGFsbCB7bWV0aG9kfSIsIGZpbGU9ZikKKworICAgICMgRmlndXJlIG91dCBhIHBvcnQg dG8gbGlzdGVuIG9uLiBBdHRlbXB0IHRvIHJlc2VydmUgYm90aCBJUHY0IGFuZCBJUHY2CisgICAg IyBhZGRyZXNzZXMgaW4gb25lIGdvLgorICAgICMKKyAgICAjIE5vdGU6IHNvY2tldC5oYXNfZHVh bHN0YWNrX2lwdjYvY3JlYXRlX3NlcnZlciBhcmUgb25seSBpbiBQeXRob24gMy44Ky4KKyAgICBp ZiBoYXNhdHRyKHNvY2tldCwgImhhc19kdWFsc3RhY2tfaXB2NiIpIGFuZCBzb2NrZXQuaGFzX2R1 YWxzdGFja19pcHY2KCk6CisgICAgICAgIGFkZHIgPSAoIjo6MSIsIDApCisgICAgICAgIHMgPSBz b2NrZXQuY3JlYXRlX3NlcnZlcihhZGRyLCBmYW1pbHk9c29ja2V0LkFGX0lORVQ2LCBkdWFsc3Rh Y2tfaXB2Nj1UcnVlKQorCisgICAgICAgIGhvc3RhZGRyLCBwb3J0LCBfLCBfID0gcy5nZXRzb2Nr bmFtZSgpCisgICAgICAgIGFkZHJzID0gW2hvc3RhZGRyLCAiMTI3LjAuMC4xIl0KKworICAgIGVs c2U6CisgICAgICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDApCisKKyAgICAgICAgcyA9IHNvY2tl dC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoYWRkcikKKworICAgICAgICBob3N0YWRkciwgcG9y dCA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICBhZGRycyA9IFtob3N0YWRkcl0KKworICAgIGxv ZyA9IG9zLnBhdGguam9pbihkYXRhZGlyLCAicG9zdGdyZXNxbC5sb2ciKQorCisgICAgd2l0aCBz LCBvcGVuKG9zLnBhdGguam9pbihkYXRhZGlyLCAicG9zdGdyZXNxbC5jb25mIiksICJhIikgYXMg ZjoKKyAgICAgICAgcHJpbnQoZmlsZT1mKQorICAgICAgICBwcmludCgidW5peF9zb2NrZXRfZGly ZWN0b3JpZXMgPSAne30nIi5mb3JtYXQoc29ja2Rpci5hc19wb3NpeCgpKSwgZmlsZT1mKQorICAg ICAgICBwcmludCgibGlzdGVuX2FkZHJlc3NlcyA9ICd7fSciLmZvcm1hdCgiLCIuam9pbihhZGRy cykpLCBmaWxlPWYpCisgICAgICAgIHByaW50KCJwb3J0ID0iLCBwb3J0LCBmaWxlPWYpCisgICAg ICAgIHByaW50KCJsb2dfY29ubmVjdGlvbnMgPSBhbGwiLCBmaWxlPWYpCisKKyAgICAjIEJldHdl ZW4gY2xvc2luZyBvZiB0aGUgc29ja2V0LCBzLCBhbmQgc2VydmVyIHN0YXJ0LCB3ZSdyZSByYWNp bmcgYWdhaW5zdAorICAgICMgYW55dGhpbmcgdGhhdCB3YW50cyB0byBvcGVuIHVwIGVwaGVtZXJh bCBwb3J0cywgc28gdHJ5IG5vdCB0byBwdXQgYW55IG5ldworICAgICMgd29yayBoZXJlLgorCisg ICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsicGdfY3RsIiwgIi1EIiwgZGF0YWRpciwgIi1sIiwg bG9nLCAic3RhcnQiXSkKKyAgICB5aWVsZCAoaG9zdGFkZHIsIHBvcnQpCisgICAgc3VicHJvY2Vz cy5jaGVja19jYWxsKFsicGdfY3RsIiwgIi1EIiwgZGF0YWRpciwgIi1sIiwgbG9nLCAic3RvcCJd KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weSBiL3NyYy90ZXN0 L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjJkMGJlNzM1MzcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC90 ZXN0X3NlcnZlci5weQpAQCAtMCwwICsxLDUzOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBjb250ZXh0bGliCitp bXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQoraW1w b3J0IHNodXRpbAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHNzbAoraW1wb3J0IHN0cnVjdAoraW1w b3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg bmFtZWR0dXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QsIExpc3QsIFVuaW9uCisKK2ltcG9y dCBweXRlc3QKKworaW1wb3J0IHBnCisKKyMgVGhpcyBzdWl0ZSBvcGVucyB1cCBsb2NhbCBUQ1Ag cG9ydHMgYW5kIGlzIGhpZGRlbiBiZWhpbmQgUEdfVEVTVF9FWFRSQT1zc2wuCitweXRlc3RtYXJr ID0gcGcucmVxdWlyZV90ZXN0X2V4dHJhKCJzc2wiKQorCisKKyMKKyMgVGVzdCBGaXh0dXJlcwor IworCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgY29ubmVudihzZXJ2 ZXJfaW5zdGFuY2UsIHNvY2tkaXIsIGRhdGFkaXIpOgorICAgICIiIgorICAgIFByb3ZpZGVzIHRo ZSB2YWx1ZXMgZm9yIHNldmVyYWwgUEcqIGVudmlyb25tZW50IHZhcmlhYmxlcyBuZWVkZWQgZm9y IG91cgorICAgIHV0aWxpdHkgcHJvZ3JhbXMgdG8gY29ubmVjdCB0byB0aGUgc2VydmVyX2luc3Rh bmNlLgorICAgICIiIgorICAgIHJldHVybiB7CisgICAgICAgICJQR0hPU1QiOiBzdHIoc29ja2Rp ciksCisgICAgICAgICJQR1BPUlQiOiBzdHIoc2VydmVyX2luc3RhbmNlWzFdKSwKKyAgICAgICAg IlBHREFUQUJBU0UiOiAicG9zdGdyZXMiLAorICAgICAgICAiUEdEQVRBIjogc3RyKGRhdGFkaXIp LAorICAgIH0KKworCitjbGFzcyBGaWxlQmFja3VwKGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0 TWFuYWdlcik6CisgICAgIiIiCisgICAgQSBjb250ZXh0IG1hbmFnZXIgd2hpY2ggYmFja3MgdXAg YSBmaWxlJ3MgY29udGVudHMsIHJlc3RvcmluZyB0aGVtIG9uIGV4aXQuCisgICAgIiIiCisKKyAg ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZTogcGF0aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIo KS5fX2luaXRfXygpCisKKyAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKKworICAgIGRlZiBfX2Vu dGVyX18oc2VsZik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKAor ICAgICAgICAgICAgcHJlZml4PXNlbGYuX2ZpbGUubmFtZSwgZGlyPXNlbGYuX2ZpbGUucGFyZW50 LCBkZWxldGU9RmFsc2UKKyAgICAgICAgKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5fYmFja3Vw ID0gcGF0aGxpYi5QYXRoKGYubmFtZSkKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5f ZmlsZSwgc2VsZi5fYmFja3VwKQorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19l eGl0X18oc2VsZiwgKmV4Yyk6CisgICAgICAgICMgU3dhcCB0aGUgYmFja3VwIGFuZCB0aGUgb3Jp Z2luYWwgZmlsZSwgc28gdGhhdCB0aGUgbW9kaWZpZWQgY29udGVudHMKKyAgICAgICAgIyBjYW4g c3RpbGwgYmUgaW5zcGVjdGVkIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgICAgIworICAgICAg ICAjIFRPRE86IHRoaXMgaXMgbGVzcyBoZWxwZnVsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsYXll cnMsIGJlY2F1c2UgaXQncworICAgICAgICAjIG5vdCBjbGVhciB3aGljaCBiYWNrdXAgdG8gbG9v ayBhdC4gQ2FuIHRoZSBiYWNrdXAgbmFtZSBiZSBwcmludGVkIGFzCisgICAgICAgICMgcGFydCBv ZiB0aGUgZmFpbGVkIHRlc3Qgb3V0cHV0PyBTaG91bGQgd2Ugb25seSBzd2FwIG9uIHRlc3QgZmFp bHVyZT8KKyAgICAgICAgdG1wID0gc2VsZi5fYmFja3VwLnBhcmVudCAvIChzZWxmLl9iYWNrdXAu bmFtZSArICIudG1wIikKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5fZmlsZSwgdG1w KQorICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5fYmFja3VwLCBzZWxmLl9maWxlKQorICAg ICAgICBzaHV0aWwubW92ZSh0bXAsIHNlbGYuX2JhY2t1cCkKKworCitjbGFzcyBIQkEoRmlsZUJh Y2t1cCk6CisgICAgIiIiCisgICAgQmFja3MgdXAgYSBzZXJ2ZXIncyBIQkEgY29uZmlndXJhdGlv biBhbmQgcHJvdmlkZXMgbWVhbnMgZm9yIHRlbXBvcmFyaWx5CisgICAgZWRpdGluZyBpdC4gU2Vl IGFsc28gcGdfc2VydmVyLCB3aGljaCBwcm92aWRlcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNz IGFuZAorICAgIGNvbnRleHQgbWFuYWdlcnMgZm9yIGVuZm9yY2luZyB0aGUgcmVsb2FkL3Jlc3Rh cnQgb3JkZXIgb2Ygb3BlcmF0aW9ucy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm LCBkYXRhZGlyOiBwYXRobGliLlBhdGgpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGRhdGFk aXIgLyAicGdfaGJhLmNvbmYiKQorCisgICAgZGVmIHByZXBlbmQoc2VsZiwgKmxpbmVzOiBVbmlv bltzdHIsIExpc3Rbc3RyXV0pOgorICAgICAgICAiIiIKKyAgICAgICAgVGVtcG9yYXJpbHkgcHJl cGVuZHMgbGluZXMgdG8gdGhlIHNlcnZlcidzIHBnX2hiYS5jb25mLgorCisgICAgICAgIEFzIHN1 Z2FyIGZvciBhbGlnbmluZyBIQkEgY29sdW1ucyBpbiB0aGUgdGVzdHMsIGVhY2ggbGluZSBjYW4g YmUgZWl0aGVyCisgICAgICAgIGEgc3RyaW5nIG9yIGEgbGlzdCBvZiBzdHJpbmdzLiBMaXN0IGVs ZW1lbnRzIHdpbGwgYmUgam9pbmVkIGJ5IHNpbmdsZQorICAgICAgICBzcGFjZXMgYmVmb3JlIHRo ZXkgYXJlIHdyaXR0ZW4gdG8gZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3Blbihz ZWxmLl9maWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICBwcmlvcl9kYXRhID0gZi5yZWFkKCkK KworICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAg Zm9yIGwgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsLCBsaXN0KToK KyAgICAgICAgICAgICAgICAgICAgcHJpbnQoKmwsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludChsLCBmaWxlPWYpCisKKyAgICAgICAgICAg IGYud3JpdGUocHJpb3JfZGF0YSkKKworCitjbGFzcyBDb25maWcoRmlsZUJhY2t1cCk6CisgICAg IiIiCisgICAgQmFja3MgdXAgYSBzZXJ2ZXIncyBwb3N0Z3Jlc3FsLmNvbmYgYW5kIHByb3ZpZGVz IG1lYW5zIGZvciB0ZW1wb3JhcmlseQorICAgIGVkaXRpbmcgaXQuIFNlZSBhbHNvIHBnX3NlcnZl ciwgd2hpY2ggcHJvdmlkZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBhbmQKKyAgICBjb250 ZXh0IG1hbmFnZXJzIGZvciBlbmZvcmNpbmcgdGhlIHJlbG9hZC9yZXN0YXJ0IG9yZGVyIG9mIG9w ZXJhdGlvbnMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YWRpcjogcGF0 aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhZGlyIC8gInBvc3RncmVz cWwuY29uZiIpCisKKyAgICBkZWYgc2V0KHNlbGYsICoqZ3Vjcyk6CisgICAgICAgICIiIgorICAg ICAgICBUZW1wb3JhcmlseSBhcHBlbmRzIEdVQyBzZXR0aW5ncyB0byB0aGUgc2VydmVyJ3MgcG9z dGdyZXNxbC5jb25mLgorICAgICAgICAiIiIKKworICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmls ZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgcHJpbnQoZmlsZT1mKQorCisgICAgICAgICAgICBm b3IgbiwgdiBpbiBndWNzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgdiA9IHN0cih2KQorCisg ICAgICAgICAgICAgICAgIyBUT0RPOiBwcm9wZXIgcXVvdGluZworICAgICAgICAgICAgICAgIHYg PSB2LnJlcGxhY2UoIlxcIiwgIlxcXFwiKQorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2Uo IiciLCAiXFwnIikKKyAgICAgICAgICAgICAgICB2ID0gIid7fSciLmZvcm1hdCh2KQorCisgICAg ICAgICAgICAgICAgcHJpbnQobiwgIj0iLCB2LCBmaWxlPWYpCisKKworQHB5dGVzdC5maXh0dXJl KHNjb3BlPSJzZXNzaW9uIikKK2RlZiBwZ19zZXJ2ZXJfc2Vzc2lvbihzZXJ2ZXJfaW5zdGFuY2Us IGNvbm5lbnYsIGRhdGFkaXIsIHdpbnBhc3N3b3JkKToKKyAgICAiIiIKKyAgICBQcm92aWRlcyBj b21tb24gcm91dGluZXMgZm9yIGNvbmZpZ3VyaW5nIGFuZCBjb25uZWN0aW5nIHRvIHRoZQorICAg IHNlcnZlcl9pbnN0YW5jZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgdXNlcnMgPSBwZ19zZXJ2 ZXJfc2Vzc2lvbi5jcmVhdGVfdXNlcnMoIm9uZSIsICJ0d28iKQorICAgICAgICBkYnMgPSBwZ19z ZXJ2ZXJfc2Vzc2lvbi5jcmVhdGVfZGJzKCJkZWZhdWx0IikKKworICAgICAgICB3aXRoIHBnX3Nl cnZlcl9zZXNzaW9uLnJlbG9hZGluZygpIGFzIHM6CisgICAgICAgICAgICBzLmhiYS5wcmVwZW5k KFsibG9jYWwiLCBkYnNbImRlZmF1bHQiXSwgdXNlcnNbInR3byJdLCAicGVlciJdKQorCisgICAg ICAgIGNvbm4gPSBjb25uZWN0X3NvbWVob3coKipwZ19zZXJ2ZXJfc2Vzc2lvbi5jb25uaW5mbykK KyAgICAgICAgLi4uCisKKyAgICBBdHRyaWJ1dGVzIG9mIG5vdGUgYXJlCisgICAgLSAuY29ubmlu Zm86IHByb3ZpZGVzIFRDUCBjb25uZWN0aW9uIGluZm8gZm9yIHRoZSBzZXJ2ZXIKKworICAgIFRo aXMgZml4dHVyZSB1bndpbmRzIGl0cyBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXQgdGhlIGVuZCBv ZiB0aGUgcHl0ZXN0CisgICAgc2Vzc2lvbi4gRm9yIG1vcmUgZ3JhbnVsYXIgY2hhbmdlcywgcGdf c2VydmVyX3Nlc3Npb24uc3ViY29udGV4dCgpIHNwbGl0cworICAgIG9mZiBhICJuZXN0ZWQiIGNv bnRleHQgdG8gYWxsb3cgc21hbGxlciBzY29wZXMuCisgICAgIiIiCisKKyAgICBjbGFzcyBfU2Vy dmVyKGNvbnRleHRsaWIuRXhpdFN0YWNrKToKKyAgICAgICAgY29ubmluZm8gPSBkaWN0KAorICAg ICAgICAgICAgaG9zdGFkZHI9c2VydmVyX2luc3RhbmNlWzBdLAorICAgICAgICAgICAgcG9ydD1z ZXJ2ZXJfaW5zdGFuY2VbMV0sCisgICAgICAgICkKKworICAgICAgICAjIGZvciBfYmFja3VwX2Nv bmZpZ3VyYXRpb24oKQorICAgICAgICBfQmFja3VwID0gbmFtZWR0dXBsZSgiQmFja3VwIiwgImNv bmYsIGhiYSIpCisKKyAgICAgICAgZGVmIHN1YmNvbnRleHQoc2VsZik6CisgICAgICAgICAgICAi IiIKKyAgICAgICAgICAgIENyZWF0ZXMgYSBuZXcgc2VydmVyIHN0YWNrIGluc3RhbmNlIHRoYXQg Y2FuIGJlIHRpZWQgdG8gYSBzbWFsbGVyCisgICAgICAgICAgICBzY29wZSB0aGFuICJzZXNzaW9u Ii4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgIyBTbyBmYXIsIHRoZXJlIGRvZXNuJ3Qg c2VlbSB0byBiZSBhIG5lZWQgdG8gbGluayB0aGUgdHdvIG9iamVjdHMsCisgICAgICAgICAgICAj IHNpbmNlIEhCQS9Db25maWcvRmlsZUJhY2t1cCBvcGVyYXRlIGRpcmVjdGx5IG9uIHRoZSBmaWxl c3lzdGVtIGFuZAorICAgICAgICAgICAgIyB3aWxsIGFwcGVhciB0byAibmVzdCIgbmF0dXJhbGx5 LgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKCkKKworICAgICAgICBkZWYgY3Jl YXRlX3VzZXJzKHNlbGYsICp1c2Vya2V5czogc3RyKSAtPiBEaWN0W3N0ciwgc3RyXToKKyAgICAg ICAgICAgICIiIgorICAgICAgICAgICAgQ3JlYXRlcyBuZXcgdXNlcnMgd2hpY2ggd2lsbCBiZSBk cm9wcGVkIGF0IHRoZSBlbmQgb2YgdGhlIHNlcnZlcgorICAgICAgICAgICAgY29udGV4dC4KKwor ICAgICAgICAgICAgRm9yIGVhY2ggcHJvdmlkZWQga2V5LCBhIHJlbGF0ZWQgdXNlciBuYW1lIHdp bGwgYmUgc2VsZWN0ZWQgYW5kCisgICAgICAgICAgICBzdG9yZWQgaW4gYSBtYXAuIFRoaXMgbWFw IGlzIHJldHVybmVkIHRvIGxldCBjYWxsaW5nIGNvZGUgbG9vayB1cAorICAgICAgICAgICAgdGhl IHNlbGVjdGVkIHVzZXJuYW1lcyAoaW5zdGVhZCBvZiBoYXJkY29kaW5nIHRoZW0gYW5kIHBvdGVu dGlhbGx5CisgICAgICAgICAgICBzdG9tcGluZyBvbiBhbiBleGlzdGluZyBpbnN0YWxsYXRpb24p LgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICB1c2VybWFwID0ge30KKworICAgICAgICAg ICAgZm9yIHUgaW4gdXNlcmtleXM6CisgICAgICAgICAgICAgICAgIyBUT0RPOiB1c2UgYSB1bmlx dWlmaWVyIHRvIHN1cHBvcnQgaW5zdGFsbGNoZWNrCisgICAgICAgICAgICAgICAgbmFtZSA9IHUg KyAidXNlciIKKyAgICAgICAgICAgICAgICB1c2VybWFwW3VdID0gbmFtZQorCisgICAgICAgICAg ICAgICAgIyBUT0RPOiBwcm9wZXIgZXNjYXBpbmcKKyAgICAgICAgICAgICAgICBzZWxmLnBzcWwo Ii1jIiwgIkNSRUFURSBVU0VSICIgKyBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJh Y2soc2VsZi5wc3FsLCAiLWMiLCAiRFJPUCBVU0VSICIgKyBuYW1lKQorCisgICAgICAgICAgICBy ZXR1cm4gdXNlcm1hcAorCisgICAgICAgIGRlZiBjcmVhdGVfZGJzKHNlbGYsICpkYmtleXM6IHN0 cikgLT4gRGljdFtzdHIsIHN0cl06CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIENyZWF0 ZXMgbmV3IGRhdGFiYXNlcyB3aGljaCB3aWxsIGJlIGRyb3BwZWQgYXQgdGhlIGVuZCBvZiB0aGUg c2VydmVyCisgICAgICAgICAgICBjb250ZXh0LiBTZWUgY3JlYXRlX3VzZXJzKCkgZm9yIHRoZSBt ZWFuaW5nIG9mIHRoZSBrZXlzIGFuZCByZXR1cm5lZAorICAgICAgICAgICAgbWFwLgorICAgICAg ICAgICAgIiIiCisgICAgICAgICAgICBkYm1hcCA9IHt9CisKKyAgICAgICAgICAgIGZvciBkIGlu IGRia2V5czoKKyAgICAgICAgICAgICAgICAjIFRPRE86IHVzZSBhIHVuaXF1aWZpZXIgdG8gc3Vw cG9ydCBpbnN0YWxsY2hlY2sKKyAgICAgICAgICAgICAgICBuYW1lID0gZCArICJkYiIKKyAgICAg ICAgICAgICAgICBkYm1hcFtkXSA9IG5hbWUKKworICAgICAgICAgICAgICAgICMgVE9ETzogcHJv cGVyIGVzY2FwaW5nCisgICAgICAgICAgICAgICAgc2VsZi5wc3FsKCItYyIsICJDUkVBVEUgREFU QUJBU0UgIiArIG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmLnBzcWws ICItYyIsICJEUk9QIERBVEFCQVNFICIgKyBuYW1lKQorCisgICAgICAgICAgICByZXR1cm4gZGJt YXAKKworICAgICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgICAgICBkZWYgcmVs b2FkaW5nKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBQcm92aWRlcyBhIGNv bnRleHQgbWFuYWdlciBmb3IgbWFraW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KKworICAgICAg ICAgICAgSWYgdGhlIGNvbnRleHQgc3VpdGUgZmluaXNoZXMgc3VjY2Vzc2Z1bGx5LCB0aGUgY29u ZmlndXJhdGlvbiB3aWxsCisgICAgICAgICAgICBiZSByZWxvYWRlZCB2aWEgcGdfY3RsLiBPbiB0 ZWFyZG93biwgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB3aWxsCisgICAgICAgICAgICBiZSB1 bndvdW5kLCBhbmQgdGhlIHNlcnZlciB3aWxsIGJlIHNpZ25hbGVkIHRvIHJlbG9hZCBhZ2Fpbi4K KworICAgICAgICAgICAgVGhlIGNvbnRleHQgdGFyZ2V0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcg YXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAgICAgICAgICAgIHVzZWQgdG8gY29uZmlndXJlIHRo ZSBzZXJ2ZXI6CisgICAgICAgICAgICAtIC5jb25mOiBtb2RpZmllcyBwb3N0Z3Jlc3FsLmNvbmYK KyAgICAgICAgICAgIC0gLmhiYTogbW9kaWZpZXMgcGdfaGJhLmNvbmYKKworICAgICAgICAgICAg Rm9yIGV4YW1wbGU6CisKKyAgICAgICAgICAgICAgICB3aXRoIHBnX3NlcnZlcl9zZXNzaW9uLnJl bG9hZGluZygpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHMuY29uZi5zZXQobG9nX2Nvbm5l Y3Rpb25zPSJvbiIpCisgICAgICAgICAgICAgICAgICAgIHMuaGJhLnByZXBlbmQoImxvY2FsIGFs bCBhbGwgdHJ1c3QiKQorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICB0cnk6CisgICAgICAg ICAgICAgICAgIyBQdXNoIGEgcmVsb2FkIG9udG8gdGhlIHN0YWNrIGJlZm9yZSBtYWtpbmcgYW55 IG90aGVyCisgICAgICAgICAgICAgICAgIyB1bndpbmRhYmxlIGNoYW5nZXMuIFRoYXQgd2F5IHRo ZSBvcmRlciBvZiBvcGVyYXRpb25zIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAjCisgICAgICAg ICAgICAgICAgIyAgIyB0ZXN0CisgICAgICAgICAgICAgICAgIyAgIC0gY29uZmlnIGNoYW5nZSAx CisgICAgICAgICAgICAgICAgIyAgIC0gY29uZmlnIGNoYW5nZSAyCisgICAgICAgICAgICAgICAg IyAgIC0gcmVsb2FkCisgICAgICAgICAgICAgICAgIyAgIyB0ZWFyZG93bgorICAgICAgICAgICAg ICAgICMgICAtIHVuZG8gY29uZmlnIGNoYW5nZSAyCisgICAgICAgICAgICAgICAgIyAgIC0gdW5k byBjb25maWcgY2hhbmdlIDEKKyAgICAgICAgICAgICAgICAjICAgLSByZWxvYWQKKyAgICAgICAg ICAgICAgICAjCisgICAgICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmLnBnX2N0bCwgInJl bG9hZCIpCisgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZpZ3VyYXRpb24o KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRv IHJlbG9hZCBhdCB0aGUgZW5kIG9mIHRoZSBzdWl0ZSBpZiB0aGVyZSB3ZXJlCisgICAgICAgICAg ICAgICAgIyBubyBlcnJvcnMuIER1cmluZyBleGNlcHRpb25zLCB0aGUgcHVzaGVkIGNhbGxiYWNr IGhhbmRsZXMKKyAgICAgICAgICAgICAgICAjIHRoaW5ncyBpbnN0ZWFkLCBzbyB0aGVyZSdzIG5v dGhpbmcgdG8gZG8gaGVyZS4KKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAjIFN1aXRlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgICAg ICAgICAgICAgICAgc2VsZi5wZ19jdGwoInJlbG9hZCIpCisKKyAgICAgICAgQGNvbnRleHRsaWIu Y29udGV4dG1hbmFnZXIKKyAgICAgICAgZGVmIHJlc3RhcnRpbmcoc2VsZik6CisgICAgICAgICAg ICAiIiJMaWtlIC5yZWxvYWRpbmcoKSwgYnV0IHdpdGggYSBmdWxsIHNlcnZlciByZXN0YXJ0LiIi IgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5w Z19jdGwsICJyZXN0YXJ0IikKKyAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9iYWNrdXBfY29u ZmlndXJhdGlvbigpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wZ19jdGwoInJlc3RhcnQi KQorCisgICAgICAgIGRlZiBwc3FsKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICIiIgorICAg ICAgICAgICAgUnVucyBwc3FsIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gUGFzc3dvcmQgcHJv bXB0cyBhcmUgYWx3YXlzCisgICAgICAgICAgICBkaXNhYmxlZC4gT24gV2luZG93cywgdGhlIGFk bWluIHBhc3N3b3JkIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgICAgICBlbnZpcm9u bWVudC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkg PT0gIldpbmRvd3MiOgorICAgICAgICAgICAgICAgIHB3ID0gZGljdChQR1BBU1NXT1JEPXdpbnBh c3N3b3JkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwdyA9IE5vbmUKKwor ICAgICAgICAgICAgc2VsZi5fcnVuKCJwc3FsIiwgIi13IiwgKmFyZ3MsIGFkZGVudj1wdykKKwor ICAgICAgICBkZWYgcGdfY3RsKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICIiIgorICAgICAg ICAgICAgUnVucyBwZ19jdGwgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiBMb2cgb3V0cHV0IHdp bGwgYmUgcGxhY2VkIGluCisgICAgICAgICAgICBwb3N0Z3Jlc3FsLmxvZyBpbiB0aGUgc2VydmVy J3MgZGF0YSBkaXJlY3RvcnkuCisKKyAgICAgICAgICAgIFRPRE86IHB1dCB0aGUgbG9nIGluIFRF U1RMT0dESVIKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5fcnVuKCJwZ19jdGwi LCAiLWwiLCBzdHIoZGF0YWRpciAvICJwb3N0Z3Jlc3FsLmxvZyIpLCAqYXJncykKKworICAgICAg ICBkZWYgX3J1bihzZWxmLCBjbWQsICphcmdzLCBhZGRlbnY6IGRpY3QgPSBOb25lKToKKyAgICAg ICAgICAgICMgT3ZlcnJpZGUgdGhlIGV4aXN0aW5nIGVudmlyb25tZW50IHdpdGggdGhlIGNvbm5l bnYgdmFsdWVzIGFuZAorICAgICAgICAgICAgIyBhbnl0aGluZyB0aGUgY2FsbGVyIHdhbnRlZCB0 byBhZGQuIChQeXRob24gMy45IGdpdmVzIHVzIHRoZQorICAgICAgICAgICAgIyBsZXNzLXVnbHkg YG9zLmVudmlyb24gfCBjb25uZW52YCBtZXJnZSBvcGVyYXRvci4pCisgICAgICAgICAgICBzdWJl bnYgPSBkaWN0KG9zLmVudmlyb24sICoqY29ubmVudikKKyAgICAgICAgICAgIGlmIGFkZGVudjoK KyAgICAgICAgICAgICAgICBzdWJlbnYudXBkYXRlKGFkZGVudikKKworICAgICAgICAgICAgc3Vi cHJvY2Vzcy5jaGVja19jYWxsKFtjbWQsICphcmdzXSwgZW52PXN1YmVudikKKworICAgICAgICBk ZWYgX2JhY2t1cF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICAgICAgIyBXcmFwIHRoZSBl eGlzdGluZyBIQkEgYW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBGaWxlQmFja3Vwcy4KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLl9CYWNrdXAoCisgICAgICAgICAgICAgICAgaGJhPXNlbGYuZW50ZXJf Y29udGV4dChIQkEoZGF0YWRpcikpLAorICAgICAgICAgICAgICAgIGNvbmY9c2VsZi5lbnRlcl9j b250ZXh0KENvbmZpZyhkYXRhZGlyKSksCisgICAgICAgICAgICApCisKKyAgICB3aXRoIF9TZXJ2 ZXIoKSBhcyBzOgorICAgICAgICB5aWVsZCBzCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJt b2R1bGUiLCBhdXRvdXNlPVRydWUpCitkZWYgc3NsX3NldHVwKHBnX3NlcnZlcl9zZXNzaW9uLCBj ZXJ0cywgZGF0YWRpcik6CisgICAgIiIiCisgICAgU2V0cyB1cCByZXF1aXJlZCBzZXJ2ZXIgc2V0 dGluZ3MgZm9yIGFsbCB0ZXN0cyBpbiB0aGlzIG1vZHVsZS4gVGhlIGZpeHR1cmUKKyAgICB2YXJp YWJsZSBpcyBhIHR1cGxlICh1c2VycywgZGJzKSBjb250YWluaW5nIHRoZSB1c2VyIGFuZCBkYXRh YmFzZSBuYW1lcyB0aGF0CisgICAgaGF2ZSBiZWVuIGNob3NlbiBmb3IgdGhlIHRlc3Qgc2Vzc2lv bi4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHdpdGggcGdfc2VydmVyX3Nlc3Npb24ucmVz dGFydGluZygpIGFzIHM6CisgICAgICAgICAgICBzLmNvbmYuc2V0KAorICAgICAgICAgICAgICAg IHNzbD0ib24iLAorICAgICAgICAgICAgICAgIHNzbF9jYV9maWxlPWNlcnRzLmNhLmNlcnRwYXRo LAorICAgICAgICAgICAgICAgIHNzbF9jZXJ0X2ZpbGU9Y2VydHMuc2VydmVyLmNlcnRwYXRoLAor ICAgICAgICAgICAgICAgIHNzbF9rZXlfZmlsZT1jZXJ0cy5zZXJ2ZXIua2V5cGF0aCwKKyAgICAg ICAgICAgICkKKworICAgICAgICAgICAgIyBSZWplY3QgYnkgZGVmYXVsdC4KKyAgICAgICAgICAg IHMuaGJhLnByZXBlbmQoImhvc3Rzc2wgYWxsIGFsbCBhbGwgcmVqZWN0IikKKworICAgIGV4Y2Vw dCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgIyBUaGlzIGlzIGEgZGVj ZW50IHBsYWNlIHRvIHNraXAgaWYgdGhlIHNlcnZlciBpc24ndCBzZXQgdXAgZm9yIFNTTC4KKyAg ICAgICAgbG9ncGF0aCA9IGRhdGFkaXIgLyAicG9zdGdyZXNxbC5sb2ciCisgICAgICAgIHVuc3Vw cG9ydGVkID0gcmUuY29tcGlsZSgiU1NMIGlzIG5vdCBzdXBwb3J0ZWQiKQorCisgICAgICAgIHdp dGggb3Blbihsb2dwYXRoLCAiciIpIGFzIGxvZzoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxv ZzoKKyAgICAgICAgICAgICAgICBpZiB1bnN1cHBvcnRlZC5zZWFyY2gobGluZSk6CisgICAgICAg ICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU1NM IikKKworICAgICAgICAjIFNvbWUgb3RoZXIgZXJyb3IgaGFwcGVuZWQuCisgICAgICAgIHJhaXNl CisKKyAgICB1c2VycyA9IHBnX3NlcnZlcl9zZXNzaW9uLmNyZWF0ZV91c2VycygKKyAgICAgICAg InNzbCIsCisgICAgKQorCisgICAgZGJzID0gcGdfc2VydmVyX3Nlc3Npb24uY3JlYXRlX2RicygK KyAgICAgICAgInNzbCIsCisgICAgKQorCisgICAgcmV0dXJuICh1c2VycywgZGJzKQorCisKK0Bw eXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBjbGllbnRfY2VydChzc2xfc2V0dXAs IGNlcnRzKToKKyAgICAiIiIKKyAgICBDcmVhdGVzIGEgQ2VydCBmb3IgdGhlICJzc2wiIHVzZXIu CisgICAgIiIiCisgICAgZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKKyAgICBmcm9tIGNy eXB0b2dyYXBoeS54NTA5Lm9pZCBpbXBvcnQgTmFtZU9JRAorCisgICAgdXNlcnMsIF8gPSBzc2xf c2V0dXAKKyAgICB1c2VyID0gdXNlcnNbInNzbCJdCisKKyAgICByZXR1cm4gY2VydHMubmV3KHg1 MDkuTmFtZShbeDUwOS5OYW1lQXR0cmlidXRlKE5hbWVPSUQuQ09NTU9OX05BTUUsIHVzZXIpXSkp CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgcGdfc2VydmVyKHBnX3NlcnZlcl9zZXNzaW9uKToK KyAgICAiIiIKKyAgICBBIHBlci10ZXN0IGluc3RhbmNlIG9mIHBnX3NlcnZlcl9zZXNzaW9uLiBV c2UgdGhpcyBmaXh0dXJlIHRvIG1ha2UgY2hhbmdlcworICAgIHRvIHRoZSBzZXJ2ZXIgd2hpY2gg d2lsbCBiZSByb2xsZWQgYmFjayBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHRlc3QuCisgICAgIiIiCisg ICAgd2l0aCBwZ19zZXJ2ZXJfc2Vzc2lvbi5zdWJjb250ZXh0KCkgYXMgczoKKyAgICAgICAgeWll bGQgcworCisKKyMKKyMgVGVzdHMKKyMKKworCisjIEZvciB1c2Ugd2l0aCB0aGUgYGNyZWRzYCBw YXJhbWV0ZXIgYmVsb3cuCitDTElFTlQgPSAiY2xpZW50IgorU0VSVkVSID0gInNlcnZlciIKKwor CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgIyBmbXQ6IG9mZgorICAgICJhdXRoX21l dGhvZCwgICAgICAgICAgICAgICAgICAgIGNyZWRzLCAgZXhwZWN0ZWRfZXJyb3IiLAorWworICAg ICMgVHJ1c3QgYWxsb3dzIGFueXRoaW5nLgorICAgICgidHJ1c3QiLCAgICAgICAgICAgICAgICAg ICAgICAgIE5vbmUsICAgTm9uZSksCisgICAgKCJ0cnVzdCIsICAgICAgICAgICAgICAgICAgICAg ICAgQ0xJRU5ULCBOb25lKSwKKyAgICAoInRydXN0IiwgICAgICAgICAgICAgICAgICAgICAgICBT RVJWRVIsIE5vbmUpLAorCisgICAgIyB2ZXJpZnktY2EgYWxsb3dzIGFueSBDQS1zaWduZWQgY2Vy dGlmaWNhdGUuCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0PXZlcmlmeS1jYSIsICAgTm9uZSwgICAi cmVxdWlyZXMgYSB2YWxpZCBjbGllbnQgY2VydGlmaWNhdGUiKSwKKyAgICAoInRydXN0IGNsaWVu dGNlcnQ9dmVyaWZ5LWNhIiwgICBDTElFTlQsIE5vbmUpLAorICAgICgidHJ1c3QgY2xpZW50Y2Vy dD12ZXJpZnktY2EiLCAgIFNFUlZFUiwgTm9uZSksCisKKyAgICAjIGNlcnQgYW5kIHZlcmlmeS1m dWxsIGFsbG93IG9ubHkgdGhlIGNvcnJlY3QgY2VydGlmaWNhdGUuCisgICAgKCJ0cnVzdCBjbGll bnRjZXJ0PXZlcmlmeS1mdWxsIiwgTm9uZSwgICAicmVxdWlyZXMgYSB2YWxpZCBjbGllbnQgY2Vy dGlmaWNhdGUiKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVyaWZ5LWZ1bGwiLCBDTElFTlQs IE5vbmUpLAorICAgICgidHJ1c3QgY2xpZW50Y2VydD12ZXJpZnktZnVsbCIsIFNFUlZFUiwgImF1 dGhlbnRpY2F0aW9uIGZhaWxlZCBmb3IgdXNlciIpLAorICAgICgiY2VydCIsICAgICAgICAgICAg ICAgICAgICAgICAgIE5vbmUsICAgInJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRl IiksCisgICAgKCJjZXJ0IiwgICAgICAgICAgICAgICAgICAgICAgICAgQ0xJRU5ULCBOb25lKSwK KyAgICAoImNlcnQiLCAgICAgICAgICAgICAgICAgICAgICAgICBTRVJWRVIsICJhdXRoZW50aWNh dGlvbiBmYWlsZWQgZm9yIHVzZXIiKSwKK10sCisgICAgIyBmbXQ6IG9uCispCitkZWYgdGVzdF9k aXJlY3Rfc3NsX2NlcnRpZmljYXRlX2F1dGhlbnRpY2F0aW9uKAorICAgIHBnX3NlcnZlciwKKyAg ICBzc2xfc2V0dXAsCisgICAgY2VydHMsCisgICAgY2xpZW50X2NlcnQsCisgICAgcmVtYWluaW5n X3RpbWVvdXQsCisgICAgIyB0ZXN0IHBhcmFtZXRlcnMKKyAgICBhdXRoX21ldGhvZCwKKyAgICBj cmVkcywKKyAgICBleHBlY3RlZF9lcnJvciwKKyk6CisgICAgIiIiCisgICAgVGVzdHMgZGlyZWN0 IFNTTCBjb25uZWN0aW9ucyB3aXRoIHZhcmlvdXMgY2xpZW50LWNlcnRpZmljYXRlL0hCQQorICAg IGNvbWJpbmF0aW9ucy4KKyAgICAiIiIKKworICAgICMgU2V0IHVwIHRoZSBIQkEgYXMgZGVzaXJl ZCBieSB0aGUgdGVzdC4KKyAgICB1c2VycywgZGJzID0gc3NsX3NldHVwCisKKyAgICB1c2VyID0g dXNlcnNbInNzbCJdCisgICAgZGIgPSBkYnNbInNzbCJdCisKKyAgICB3aXRoIHBnX3NlcnZlci5y ZWxvYWRpbmcoKSBhcyBzOgorICAgICAgICBzLmhiYS5wcmVwZW5kKAorICAgICAgICAgICAgWyJo b3N0c3NsIiwgZGIsIHVzZXIsICIxMjcuMC4wLjEvMzIiLCBhdXRoX21ldGhvZF0sCisgICAgICAg ICAgICBbImhvc3Rzc2wiLCBkYiwgdXNlciwgIjo6MS8xMjgiLCBhdXRoX21ldGhvZF0sCisgICAg ICAgICkKKworICAgICMgQ29uZmlndXJlIHRoZSBTU0wgc2V0dGluZ3MgZm9yIHRoZSBjbGllbnQu CisgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICAg Y3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9Y2VydHMuY2EuY2VydHBhdGgpCisgICAg Y3R4LnNldF9hbHBuX3Byb3RvY29scyhbInBvc3RncmVzcWwiXSkgICMgZm9yIGRpcmVjdCBTU0wK KworICAgICMgTG9hZCB1cCBhIGNsaWVudCBjZXJ0aWZpY2F0ZSBpZiByZXF1aXJlZCBieSB0aGUg dGVzdC4KKyAgICBpZiBjcmVkcyA9PSBDTElFTlQ6CisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hh aW4oY2xpZW50X2NlcnQuY2VydHBhdGgsIGNsaWVudF9jZXJ0LmtleXBhdGgpCisgICAgZWxpZiBj cmVkcyA9PSBTRVJWRVI6CisgICAgICAgICMgVXNpbmcgYSBzZXJ2ZXIgY2VydGlmaWNhdGUgYXMg dGhlIGNsaWVudCBjcmVkZW50aWFsIGlzIGV4cGVjdGVkIHRvCisgICAgICAgICMgd29yayBvbmx5 IGZvciBjbGllbnRjZXJ0PXZlcmlmeS1jYSAoYW5kIGB0cnVzdGAsIG5hdHVyYWxseSkuCisgICAg ICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oY2VydHMuc2VydmVyLmNlcnRwYXRoLCBjZXJ0cy5zZXJ2 ZXIua2V5cGF0aCkKKworICAgICMgTWFrZSBhIGRpcmVjdCBTU0wgY29ubmVjdGlvbi4gVGhlcmUn cyBubyBTU0xSZXF1ZXN0IGluIHRoZSBoYW5kc2hha2U7IHdlCisgICAgIyBzaW1wbHkgd3JhcCBh IFRDUCBjb25uZWN0aW9uIHdpdGggT3BlblNTTC4KKyAgICBhZGRyID0gKHBnX3NlcnZlci5jb25u aW5mb1siaG9zdGFkZHIiXSwgcGdfc2VydmVyLmNvbm5pbmZvWyJwb3J0Il0pCisgICAgd2l0aCBz b2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikgYXMgczoKKyAgICAgICAgcy5zZXR0aW1lb3V0 KHJlbWFpbmluZ190aW1lb3V0KCkpICAjIFhYWCB0aGlzIHJlc2V0cyBldmVyeSBvcGVyYXRpb24K KworICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzLCBzZXJ2ZXJfaG9zdG5hbWU9Y2VydHMu c2VydmVyX2hvc3QpIGFzIGNvbm46CisgICAgICAgICAgICAjIEJ1aWxkIGFuZCBzZW5kIHRoZSBz dGFydHVwIHBhY2tldC4KKyAgICAgICAgICAgIHN0YXJ0dXBfb3B0aW9ucyA9IGRpY3QoCisgICAg ICAgICAgICAgICAgdXNlcj11c2VyLAorICAgICAgICAgICAgICAgIGRhdGFiYXNlPWRiLAorICAg ICAgICAgICAgICAgIGFwcGxpY2F0aW9uX25hbWU9InB5dGVzdCIsCisgICAgICAgICAgICApCisK KyAgICAgICAgICAgIHBheWxvYWQgPSBiIiIKKyAgICAgICAgICAgIGZvciBrLCB2IGluIHN0YXJ0 dXBfb3B0aW9ucy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHBheWxvYWQgKz0gay5lbmNvZGUo KSArIGIiXDAiCisgICAgICAgICAgICAgICAgcGF5bG9hZCArPSBzdHIodikuZW5jb2RlKCkgKyBi IlwwIgorICAgICAgICAgICAgcGF5bG9hZCArPSBiIlwwIiAgIyBudWxsIHRlcm1pbmF0b3IKKwor ICAgICAgICAgICAgcGt0bGVuID0gNCArIDQgKyBsZW4ocGF5bG9hZCkKKyAgICAgICAgICAgIGNv bm4uc2VuZChzdHJ1Y3QucGFjaygiIUlISCIsIHBrdGxlbiwgMywgMCkgKyBwYXlsb2FkKQorCisg ICAgICAgICAgICBpZiBub3QgZXhwZWN0ZWRfZXJyb3I6CisgICAgICAgICAgICAgICAgIyBFeHBl Y3QgYW4gQXV0aGVudGljYXRpb25PSyB0byBjb21lIGJhY2suCisgICAgICAgICAgICAgICAgcGt0 dHlwZSwgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIWNJIiwgY29ubi5yZWN2KDUpKQorICAgICAg ICAgICAgICAgIGFzc2VydCBwa3R0eXBlID09IGIiUiIKKyAgICAgICAgICAgICAgICBhc3NlcnQg cGt0bGVuID09IDgKKworICAgICAgICAgICAgICAgIGF1dGhuX3Jlc3VsdCA9IHN0cnVjdC51bnBh Y2soIiFJIiwgY29ubi5yZWN2KDQpKVswXQorICAgICAgICAgICAgICAgIGFzc2VydCBhdXRobl9y ZXN1bHQgPT0gMAorCisgICAgICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIHRvIFJlYWR5 Rm9yUXVlcnkuCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAg ICAgcGt0dHlwZSwgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIWNJIiwgY29ubi5yZWN2KDUpKQor ICAgICAgICAgICAgICAgICAgICBwYXlsb2FkID0gY29ubi5yZWN2KHBrdGxlbiAtIDQpCisKKyAg ICAgICAgICAgICAgICAgICAgaWYgcGt0dHlwZSA9PSBiIloiOgorICAgICAgICAgICAgICAgICAg ICAgICAgYXNzZXJ0IHBheWxvYWQgPT0gYiJJIgorICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWsKKworICAgICAgICAgICAgICAgICMgU2VuZCBhbiBlbXB0eSBxdWVyeS4KKyAgICAgICAgICAg ICAgICBjb25uLnNlbmQoc3RydWN0LnBhY2soIiFjSSIsIGIiUSIsIDUpICsgYiJcMCIpCisKKyAg ICAgICAgICAgICAgICAjIEV4cGVjdCBFbXB0eVF1ZXJ5UmVzcG9uc2UrUmVhZHlGb3JRdWVyeS4K KyAgICAgICAgICAgICAgICBwa3R0eXBlLCBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBj b25uLnJlY3YoNSkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBrdHR5cGUgPT0gYiJJIgorICAg ICAgICAgICAgICAgIGFzc2VydCBwa3RsZW4gPT0gNAorCisgICAgICAgICAgICAgICAgcGt0dHlw ZSwgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIWNJIiwgY29ubi5yZWN2KDUpKQorICAgICAgICAg ICAgICAgIGFzc2VydCBwa3R0eXBlID09IGIiWiIKKworICAgICAgICAgICAgICAgIHBheWxvYWQg PSBjb25uLnJlY3YocGt0bGVuIC0gNCkKKyAgICAgICAgICAgICAgICBhc3NlcnQgcGF5bG9hZCA9 PSBiIkkiCisKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBNYXRjaCB0aGUg ZXhwZWN0ZWQgYXV0aGVudGljYXRpb24gZXJyb3IuCisgICAgICAgICAgICAgICAgcGt0dHlwZSwg cGt0bGVuID0gc3RydWN0LnVucGFjaygiIWNJIiwgY29ubi5yZWN2KDUpKQorICAgICAgICAgICAg ICAgIGFzc2VydCBwa3R0eXBlID09IGIiRSIKKworICAgICAgICAgICAgICAgIHBheWxvYWQgPSBj b25uLnJlY3YocGt0bGVuIC0gNCkKKyAgICAgICAgICAgICAgICBtc2cgPSBOb25lCisKKyAgICAg ICAgICAgICAgICBmb3IgY29tcG9uZW50IGluIHBheWxvYWQuc3BsaXQoYiJcMCIpOgorICAgICAg ICAgICAgICAgICAgICBpZiBub3QgY29tcG9uZW50OgorICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWsgICMgZW5kIG9mIG1lc3NhZ2UKKworICAgICAgICAgICAgICAgICAgICBrZXksIHZhbCA9 IGNvbXBvbmVudFs6MV0sIGNvbXBvbmVudFsxOl0KKyAgICAgICAgICAgICAgICAgICAgaWYga2V5 ID09IGIiUyI6CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdmFsID09IGIiRkFUQUwi CisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09IGIiTSI6CisgICAgICAgICAgICAgICAg ICAgICAgICBtc2cgPSB2YWwuZGVjb2RlKCkKKworICAgICAgICAgICAgICAgIGFzc2VydCByZS5z ZWFyY2goZXhwZWN0ZWRfZXJyb3IsIG1zZyksICJzZXJ2ZXIgZXJyb3IgZGlkIG5vdCBtYXRjaCIK KworICAgICAgICAgICAgIyBUZXJtaW5hdGUuCisgICAgICAgICAgICBjb25uLnNlbmQoc3RydWN0 LnBhY2soIiFjSSIsIGIiWCIsIDQpKQotLSAKMi41MS4xCgo= --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0005-ci-Add-MTEST_SUITES-for-optional-test-tailoring.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0005-ci-Add-MTEST_SUITES-for-optional-test-tailoring.patch RnJvbSAwOWI1YzdkOWQwNDk2NmI4NDJhYzE5ZjY2YWFjOWUyZGQ3MDk3YjNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyIFNlcCAyMDI1IDE1OjM3OjUzIC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MyAwNS8xMF0gY2k6IEFkZCBNVEVTVF9TVUlURVMgZm9yIG9wdGlvbmFsIHRlc3Qg dGFpbG9yaW5nCgpTaG91bGQgbWFrZSBpdCBlYXNpZXIgdG8gY29udHJvbCB0aGUgdGVzdCBjeWNs ZSB0aW1lIGZvciBDaXJydXMuIEFkZCB0aGUKZGVzaXJlZCBzdWl0ZXMgKHJlbWVtYmVyaW5nIGAt LXN1aXRlIHNldHVwYCEpIHRvIHRoZSB0b3AtbGV2ZWwgZW52dmFyLgotLS0KIC5jaXJydXMudGFz a3MueW1sIHwgMTUgKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhLy5jaXJydXMudGFza3MueW1sIGIvLmNp cnJ1cy50YXNrcy55bWwKaW5kZXggNGU3NDRmMWMxMDUuLjcwNmE4MDlmNjQxIDEwMDY0NAotLS0g YS8uY2lycnVzLnRhc2tzLnltbAorKysgYi8uY2lycnVzLnRhc2tzLnltbApAQCAtMjgsNiArMjgs NyBAQCBlbnY6CiAgICMgZXJyb3JzL3dhcm5pbmdzIGluIG9uZSBwbGFjZS4KICAgTUJVSUxEX1RB UkdFVDogYWxsIHRlc3RwcmVwCiAgIE1URVNUX0FSR1M6IC0tcHJpbnQtZXJyb3Jsb2dzIC0tbm8t cmVidWlsZCAtQyBidWlsZAorICBNVEVTVF9TVUlURVM6ICMgLS1zdWl0ZSBzZXR1cCAtLXN1aXRl IHNzbCAtLXN1aXRlIC4uLgogICBQR0NUTFRJTUVPVVQ6IDEyMCAjIGF2b2lkcyBzcHVyaW91cyBm YWlsdXJlcyBkdXJpbmcgcGFyYWxsZWwgdGVzdHMKICAgVEVNUF9DT05GSUc6ICR7Q0lSUlVTX1dP UktJTkdfRElSfS9zcmMvdG9vbHMvY2kvcGdfY2lfYmFzZS5jb25mCiAgIFBHX1RFU1RfRVhUUkE6 IGtlcmJlcm9zIGxkYXAgc3NsIGxpYnBxX2VuY3J5cHRpb24gbG9hZF9iYWxhbmNlIG9hdXRoCkBA IC0yNDcsNyArMjQ4LDcgQEAgdGFzazoKICAgdGVzdF93b3JsZF9zY3JpcHQ6IHwKICAgICBzdSBw b3N0Z3JlcyA8PC1FT0YKICAgICAgIHVsaW1pdCAtYyB1bmxpbWl0ZWQKLSAgICAgIG1lc29uIHRl c3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfQorICAgICAgbWVzb24g dGVzdCAkTVRFU1RfQVJHUyAtLW51bS1wcm9jZXNzZXMgJHtURVNUX0pPQlN9ICR7TVRFU1RfU1VJ VEVTfQogICAgIEVPRgogCiAgICMgdGVzdCBydW5uaW5nY2hlY2ssIGZyZWVic2QgY2hvc2VuIGJl Y2F1c2UgaXQncyBjdXJyZW50bHkgZmFzdCBlbm91Z2gKQEAgLTM5MSw3ICszOTIsNyBAQCB0YXNr OgogICAgICAgIyBPdGhlcndpc2UgdGVzdHMgd2lsbCBmYWlsIG9uIE9wZW5CU0QsIGR1ZSB0byBp bmFiaWxpdHkgdG8gc3RhcnQgZW5vdWdoCiAgICAgICAjIHByb2Nlc3Nlcy4KICAgICAgIHVsaW1p dCAtcCAyNTYKLSAgICAgIG1lc29uIHRlc3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7 VEVTVF9KT0JTfQorICAgICAgbWVzb24gdGVzdCAkTVRFU1RfQVJHUyAtLW51bS1wcm9jZXNzZXMg JHtURVNUX0pPQlN9ICR7TVRFU1RfU1VJVEVTfQogICAgIEVPRgogCiAgIG9uX2ZhaWx1cmU6CkBA IC02MDUsNyArNjA2LDcgQEAgdGFzazoKICAgICAgIHRlc3Rfd29ybGRfc2NyaXB0OiB8CiAgICAg ICAgIHN1IHBvc3RncmVzIDw8LUVPRgogICAgICAgICAgIHVsaW1pdCAtYyB1bmxpbWl0ZWQKLSAg ICAgICAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdTIC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9C U30KKyAgICAgICAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdTIC0tbnVtLXByb2Nlc3NlcyAke1RF U1RfSk9CU30gJHtNVEVTVF9TVUlURVN9CiAgICAgICAgIEVPRgogICAgICAgICAjIHNvIHRoYXQg d2UgZG9uJ3QgdXBsb2FkIDY0Yml0IGxvZ3MgaWYgMzJiaXQgZmFpbHMKICAgICAgICAgcm0gLXJm IGJ1aWxkLwpAQCAtNjE3LDcgKzYxOCw3IEBAIHRhc2s6CiAgICAgICB0ZXN0X3dvcmxkXzMyX3Nj cmlwdDogfAogICAgICAgICBzdSBwb3N0Z3JlcyA8PC1FT0YKICAgICAgICAgICB1bGltaXQgLWMg dW5saW1pdGVkCi0gICAgICAgICAgUFlUSE9OQ09FUkNFQ0xPQ0FMRT0wIExBTkc9QyBtZXNvbiB0 ZXN0ICRNVEVTVF9BUkdTIC1DIGJ1aWxkLTMyIC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30K KyAgICAgICAgICBQWVRIT05DT0VSQ0VDTE9DQUxFPTAgTEFORz1DIG1lc29uIHRlc3QgJE1URVNU X0FSR1MgLUMgYnVpbGQtMzIgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfSAke01URVNUX1NV SVRFU30KICAgICAgICAgRU9GCiAKICAgICAgIG9uX2ZhaWx1cmU6CkBAIC03NDMsNyArNzQ0LDcg QEAgdGFzazoKICAgdGVzdF93b3JsZF9zY3JpcHQ6IHwKICAgICB1bGltaXQgLWMgdW5saW1pdGVk ICMgZGVmYXVsdCBpcyAwCiAgICAgdWxpbWl0IC1uIDEwMjQgIyBkZWZhdWx0IGlzIDI1NiwgcHJl dHR5IGxvdwotICAgIG1lc29uIHRlc3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVT VF9KT0JTfQorICAgIG1lc29uIHRlc3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVT VF9KT0JTfSAke01URVNUX1NVSVRFU30KIAogICBvbl9mYWlsdXJlOgogICAgIDw8OiAqb25fZmFp bHVyZV9tZXNvbgpAQCAtODI2LDcgKzgyNyw3IEBAIHRhc2s6CiAKICAgY2hlY2tfd29ybGRfc2Ny aXB0OiB8CiAgICAgdmN2YXJzYWxsIHg2NAotICAgIG1lc29uIHRlc3QgJU1URVNUX0FSR1MlIC0t bnVtLXByb2Nlc3NlcyAlVEVTVF9KT0JTJQorICAgIG1lc29uIHRlc3QgJU1URVNUX0FSR1MlIC0t bnVtLXByb2Nlc3NlcyAlVEVTVF9KT0JTJSAlTVRFU1RfU1VJVEVTJQogCiAgIG9uX2ZhaWx1cmU6 CiAgICAgPDw6ICpvbl9mYWlsdXJlX21lc29uCkBAIC04ODcsNyArODg4LDcgQEAgdGFzazoKICAg dXBsb2FkX2NhY2hlczogY2NhY2hlCiAKICAgdGVzdF93b3JsZF9zY3JpcHQ6IHwKLSAgICAlQkFT SCUgLWMgIm1lc29uIHRlc3QgJU1URVNUX0FSR1MlIC0tbnVtLXByb2Nlc3NlcyAlVEVTVF9KT0JT JSIKKyAgICAlQkFTSCUgLWMgIm1lc29uIHRlc3QgJU1URVNUX0FSR1MlIC0tbnVtLXByb2Nlc3Nl cyAlVEVTVF9KT0JTJSAlTVRFU1RfU1VJVEVTJSIKIAogICBvbl9mYWlsdXJlOgogICAgIDw8OiAq b25fZmFpbHVyZV9tZXNvbgotLSAKMi41MS4xCgo= --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0006-XXX-run-pytest-and-ssl-suite-all-OSes.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0006-XXX-run-pytest-and-ssl-suite-all-OSes.patch RnJvbSA2OTEyZWE1NDM3ZmVlZGViOWNhNjVlMzEyZDE3MjZjMjM2NzFhZDU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyIFNlcCAyMDI1IDE1OjM4OjUyIC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MyAwNi8xMF0gWFhYIHJ1biBweXRlc3QgYW5kIHNzbCBzdWl0ZSwgYWxsIE9TZXMK Ci0tLQogLmNpcnJ1cy5zdGFyICAgICAgfCAyICstCiAuY2lycnVzLnRhc2tzLnltbCB8IDIgKy0K IDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhLy5jaXJydXMuc3RhciBiLy5jaXJydXMuc3RhcgppbmRleCBlOWJiNjcyYjk1OS4uN2Mx Y2FhYTEyZjEgMTAwNjQ0Ci0tLSBhLy5jaXJydXMuc3RhcgorKysgYi8uY2lycnVzLnN0YXIKQEAg LTczLDcgKzczLDcgQEAgZGVmIGNvbXB1dGVfZW52aXJvbm1lbnRfdmFycygpOgogICAgICMgUkVQ T19DSV9BVVRPTUFUSUNfVFJJR0dFUl9UQVNLUz0idGFza19uYW1lIG90aGVyX3Rhc2siIHVuZGVy ICJSZXBvc2l0b3J5CiAgICAgIyBTZXR0aW5ncyIgb24gQ2lycnVzIENJJ3Mgd2Vic2l0ZS4KIAot ICAgIGRlZmF1bHRfbWFudWFsX3RyaWdnZXJfdGFza3MgPSBbJ21pbmd3JywgJ25ldGJzZCcsICdv cGVuYnNkJ10KKyAgICBkZWZhdWx0X21hbnVhbF90cmlnZ2VyX3Rhc2tzID0gW10KIAogICAgIHJl cG9fY2lfYXV0b21hdGljX3RyaWdnZXJfdGFza3MgPSBlbnYuZ2V0KCdSRVBPX0NJX0FVVE9NQVRJ Q19UUklHR0VSX1RBU0tTJywgJycpCiAgICAgZm9yIHRhc2sgaW4gZGVmYXVsdF9tYW51YWxfdHJp Z2dlcl90YXNrczoKZGlmZiAtLWdpdCBhLy5jaXJydXMudGFza3MueW1sIGIvLmNpcnJ1cy50YXNr cy55bWwKaW5kZXggNzA2YTgwOWY2NDEuLmRkYjUzMDVkYzgxIDEwMDY0NAotLS0gYS8uY2lycnVz LnRhc2tzLnltbAorKysgYi8uY2lycnVzLnRhc2tzLnltbApAQCAtMjgsNyArMjgsNyBAQCBlbnY6 CiAgICMgZXJyb3JzL3dhcm5pbmdzIGluIG9uZSBwbGFjZS4KICAgTUJVSUxEX1RBUkdFVDogYWxs IHRlc3RwcmVwCiAgIE1URVNUX0FSR1M6IC0tcHJpbnQtZXJyb3Jsb2dzIC0tbm8tcmVidWlsZCAt QyBidWlsZAotICBNVEVTVF9TVUlURVM6ICMgLS1zdWl0ZSBzZXR1cCAtLXN1aXRlIHNzbCAtLXN1 aXRlIC4uLgorICBNVEVTVF9TVUlURVM6IC0tc3VpdGUgc2V0dXAgLS1zdWl0ZSBweXRlc3QgLS1z dWl0ZSBzc2wKICAgUEdDVExUSU1FT1VUOiAxMjAgIyBhdm9pZHMgc3B1cmlvdXMgZmFpbHVyZXMg ZHVyaW5nIHBhcmFsbGVsIHRlc3RzCiAgIFRFTVBfQ09ORklHOiAke0NJUlJVU19XT1JLSU5HX0RJ Un0vc3JjL3Rvb2xzL2NpL3BnX2NpX2Jhc2UuY29uZgogICBQR19URVNUX0VYVFJBOiBrZXJiZXJv cyBsZGFwIHNzbCBsaWJwcV9lbmNyeXB0aW9uIGxvYWRfYmFsYW5jZSBvYXV0aAotLSAKMi41MS4x Cgo= --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0007-Refactor-and-improve-pytest-infrastructure.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0007-Refactor-and-improve-pytest-infrastructure.patch RnJvbSAyMjBjNGRiNWU2YmQ1OTk2ZGE0YjMxYWJlMzVhNDNmYzYxYWJiNzFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDE5IE9jdCAyMDI1IDIzOjAxOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MyAwNy8xMF0gUmVmYWN0b3IgYW5kIGltcHJvdmUgcHl0ZXN0IGluZnJhc3RydWN0dXJlCgpUaGlz IGNoYW5nZSBkb2VzIGEgbG90IG9mIHJlZmFjdG9yaW5nIGFuZCBhZGRpbmcgbmV3IGZlYXR1cmVz IHRvIHRoZQpweXRlc3QgYmFzZWQgdGVzdCBpbmZyYXN0cnVjdHVyZS4KClRoZSBwcmltYXJ5IGZl YXR1cmVzIGl0IGFkZHMgYXJlOgotIEEgYHNxbGAgbWV0aG9kIG9uIGBQR2Nvbm5gOiBJdCB0YWtl cyBhIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSByZXN1bHRzCiAgYXMgbmF0aXZlIHB5dGhvbiB0eXBl cy4KLSBBIGBjb25uYCBmaXh0dXJlOiBXaGljaCBpcyBhIGxpYnBxIGJhc2VkIGNvbm5lY3Rpb24g dG8gdGhlIGRlZmF1bHQKICBQb3N0Z3JlcyBzZXJ2ZXIuCi0gVXNlIHRoZSBgcGdfY29uZmlnYCBi aW5hcnkgdG8gZmluZCB0aGUgbGliZGlyIGFuZCBiaW5kaXIgKGNhbiBiZQogIG92ZXJyaWRkZW4g Ynkgc2V0dGluZyBQR19DT05GSUcpLiBPdGhlcndpc2UgSSBoYWQgdG8gdXNlCiAgTERfTElCUkFS WV9QQVRIIHdoZW4gcnVubmluZyBweXRlc3QgbWFudWFsbHkuCgpUaGUgcmVmYWN0b3JpbmcgaXQg ZG9lczoKLSBSZW5hbWUgYHBnX3NlcnZlcmAgZml4dHVyZSB0byBgcGdgIHNpbmNlIGl0J2xsIGxp a2VseSBiZSBvbmUgb2YgdGhlCiAgbW9zdCBjb21tb25seSB1c2VkIG9uZXMuCi0gUmVuYW1lIGBw Z2AgbW9kdWxlIHRvIGBweXBnYCB0byBhdm9pZCBuYW1pbmcgY29uZmxpY3Qvc2hhZG93aW5nCiAg cHJvYmxlbXMgd2l0aCB0aGUgbmV3bHkgcmVuYW1lZCBgcGdgIGZpeHR1cmUKLSBNb3ZlIGNsYXNz IGRlZmluaXRpb25zIG91dHNpZGUgb2YgZml4dHVyZXMgdG8gc2VwYXJhdGUgbW9kdWxlcyAoZWl0 aGVyCiAgaW4gdGhlIGBweXBnYCBtb2R1bGUgb3IgdGhlIG5ldyBgbGlicHFgIG1vZHVsZSkKLSBN b3ZlIGFsbCAiZ2VuZXJhbCIgZml4dHVyZXMgdG8gdGhlIGBweXBnLmZpeHR1cmVzYCBtb2R1bGUs IGluc3RlYWQgb2YKICBoYXZpbmcgdGhlbSBiZSBkZWZpbmVkIGluIHRoZSBzc2wgbW9kdWxlLgot LS0KIHNyYy90ZXN0L3B5dGVzdC9saWJwcS5weSAgICAgICAgICAgICAgICAgIHwgNDA5ICsrKysr KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5weSAgICAgICAg ICAgIHwgMjEyIC0tLS0tLS0tLS0tCiBzcmMvdGVzdC9weXRlc3QvcGx1Z2lucy9wZ3RhcC5weSAg ICAgICAgICB8ICAgMSAtCiBzcmMvdGVzdC9weXRlc3Qve3BnID0+IHB5cGd9L19faW5pdF9fLnB5 ICB8ICAgMAogc3JjL3Rlc3QvcHl0ZXN0L3twZyA9PiBweXBnfS9fZW52LnB5ICAgICAgfCAgIDEg LQogc3JjL3Rlc3QvcHl0ZXN0L3twZyA9PiBweXBnfS9fd2luMzIucHkgICAgfCAgIDAKIHNyYy90 ZXN0L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5ICAgICAgICAgIHwgMTc1ICsrKysrKysrKwogc3Jj L3Rlc3QvcHl0ZXN0L3B5cGcvc2VydmVyLnB5ICAgICAgICAgICAgfCAzODcgKysrKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3B5dGVzdC9weXBnL3V0aWwucHkgICAgICAgICAgICAgIHwgIDQy ICsrKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weSAgICAgICAgICAgfCAgIDMgKy0K IHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weSAgICAgICAgIHwgIDIzICstCiBzcmMv dGVzdC9weXRlc3QvcHl0L3Rlc3RfcXVlcnlfaGVscGVycy5weSB8IDI4NiArKysrKysrKysrKysr KysKIHNyYy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkgICAgICAgICAgICAgIHwgMTM2ICsrLS0t LS0KIHNyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkgICAgICAgICAgIHwgIDI2ICstCiBz cmMvdGVzdC9zc2wvcHl0L3Rlc3Rfc2VydmVyLnB5ICAgICAgICAgICB8IDM4MCArLS0tLS0tLS0t LS0tLS0tLS0tLQogMTUgZmlsZXMgY2hhbmdlZCwgMTM3MCBpbnNlcnRpb25zKCspLCA3MTEgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxLnB5CiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3BnL2ZpeHR1cmVzLnB5CiByZW5hbWUg c3JjL3Rlc3QvcHl0ZXN0L3twZyA9PiBweXBnfS9fX2luaXRfXy5weSAoMTAwJSkKIHJlbmFtZSBz cmMvdGVzdC9weXRlc3Qve3BnID0+IHB5cGd9L19lbnYucHkgKDk3JSkKIHJlbmFtZSBzcmMvdGVz dC9weXRlc3Qve3BnID0+IHB5cGd9L193aW4zMi5weSAoMTAwJSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3B5dGVzdC9weXBnL3NlcnZlci5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3B5dGVzdC9weXBnL3V0aWwucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3Qv cHl0L3Rlc3RfcXVlcnlfaGVscGVycy5weQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9s aWJwcS5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYjg1MWExMTdiNjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9weXRlc3QvbGlicHEucHkKQEAgLTAsMCArMSw0MDkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK2xpYnBxIHRlc3Rp bmcgdXRpbGl0aWVzIC0gY3R5cGVzIGJpbmRpbmdzIGFuZCBoZWxwZXJzIGZvciBQb3N0Z3JlU1FM J3MgbGlicHEgbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgUHl0aG9uIHdyYXBwZXJz IGFyb3VuZCBsaWJwcSBmb3IgdXNlIGluIHB5dGVzdCB0ZXN0cy4KKyIiIgorCitpbXBvcnQgY29u dGV4dGxpYgoraW1wb3J0IGN0eXBlcworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZGVjaW1hbAor aW1wb3J0IGVudW0KK2ltcG9ydCBqc29uCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBvcworaW1w b3J0IHV1aWQKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBEaWN0CisKKworY2xh c3MgTGlicHFFcnJvcihSdW50aW1lRXJyb3IpOgorICAgICIiIgorICAgIEV4Y2VwdGlvbiBjbGFz cyBmb3IgYXBwbGljYXRpb24tbGV2ZWwgZXJyb3JzIHRoYXQgYXJlIGVuY291bnRlcmVkIGR1cmlu ZyBsaWJwcSBvcGVyYXRpb25zLgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIENvbm5l Y3Rpb25TdGF0dXMoZW51bS5JbnRFbnVtKToKKyAgICAiIiJQb3N0Z3JlU1FMIGNvbm5lY3Rpb24g c3RhdHVzIGNvZGVzIGZyb20gbGlicHEuIiIiCisKKyAgICBDT05ORUNUSU9OX09LID0gMAorICAg IENPTk5FQ1RJT05fQkFEID0gMQorCisKK2NsYXNzIEV4ZWNTdGF0dXMoZW51bS5JbnRFbnVtKToK KyAgICAiIiJQb3N0Z3JlU1FMIHJlc3VsdCBzdGF0dXMgY29kZXMgZnJvbSBQUXJlc3VsdFN0YXR1 cy4iIiIKKworICAgIFBHUkVTX0VNUFRZX1FVRVJZID0gMAorICAgIFBHUkVTX0NPTU1BTkRfT0sg PSAxCisgICAgUEdSRVNfVFVQTEVTX09LID0gMgorICAgIFBHUkVTX0NPUFlfT1VUID0gMworICAg IFBHUkVTX0NPUFlfSU4gPSA0CisgICAgUEdSRVNfQkFEX1JFU1BPTlNFID0gNQorICAgIFBHUkVT X05PTkZBVEFMX0VSUk9SID0gNgorICAgIFBHUkVTX0ZBVEFMX0VSUk9SID0gNworICAgIFBHUkVT X0NPUFlfQk9USCA9IDgKKyAgICBQR1JFU19TSU5HTEVfVFVQTEUgPSA5CisgICAgUEdSRVNfUElQ RUxJTkVfU1lOQyA9IDEwCisgICAgUEdSRVNfUElQRUxJTkVfQUJPUlRFRCA9IDExCisKKworY2xh c3MgX1BHY29ubihjdHlwZXMuU3RydWN0dXJlKToKKyAgICBwYXNzCisKKworY2xhc3MgX1BHcmVz dWx0KGN0eXBlcy5TdHJ1Y3R1cmUpOgorICAgIHBhc3MKKworCitfUEdjb25uX3AgPSBjdHlwZXMu UE9JTlRFUihfUEdjb25uKQorX1BHcmVzdWx0X3AgPSBjdHlwZXMuUE9JTlRFUihfUEdyZXN1bHQp CisKKworZGVmIGxvYWRfbGlicHFfaGFuZGxlKGxpYmRpcik6CisgICAgIiIiCisgICAgTG9hZHMg YSBjdHlwZXMgaGFuZGxlIGZvciBsaWJwcS4gU29tZSBjb21tb24gZnVuY3Rpb24gcHJvdG90eXBl cyBhcmUKKyAgICBpbml0aWFsaXplZCBmb3IgZ2VuZXJhbCB1c2UuCisgICAgIiIiCisgICAgc3lz dGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKKworICAgIGlmIHN5c3RlbSBpbiAoIkxpbnV4IiwgIkZy ZWVCU0QiLCAiTmV0QlNEIiwgIk9wZW5CU0QiKToKKyAgICAgICAgbmFtZSA9ICJsaWJwcS5zby41 IgorICAgIGVsaWYgc3lzdGVtID09ICJEYXJ3aW4iOgorICAgICAgICBuYW1lID0gImxpYnBxLjUu ZHlsaWIiCisgICAgZWxpZiBzeXN0ZW0gPT0gIldpbmRvd3MiOgorICAgICAgICBuYW1lID0gImxp YnBxLmRsbCIKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgRmFsc2UsIGYidGhlIGxpYnBxIGZp eHR1cmUgbXVzdCBiZSB1cGRhdGVkIGZvciB7c3lzdGVtfSIKKworICAgIGxpYnBxX3BhdGggPSBv cy5wYXRoLmpvaW4obGliZGlyLCBuYW1lKQorCisgICAgIyBYWFggY3R5cGVzLkNETEwoKSBpcyBh IGxpdHRsZSBzdHJpY3RlciB3aXRoIGxvYWQgcGF0aHMgb24gV2luZG93cy4gVGhlCisgICAgIyBw cmVmZXJyZWQgd2F5IGFyb3VuZCB0aGF0IGlzIHRvIGtub3cgdGhlIGFic29sdXRlIHBhdGggdG8g bGlicHEuZGxsLCBidXQKKyAgICAjIHRoYXQgZG9lc24ndCBzZWVtIHRvIG1lc2ggd2VsbCB3aXRo IHRoZSBjdXJyZW50IHRlc3QgaW5mcmFzdHJ1Y3R1cmUuIEZvcgorICAgICMgbm93LCBlbmFibGUg InN0YW5kYXJkIiBMb2FkTGlicmFyeSBiZWhhdmlvci4KKyAgICBsb2Fkb3B0cyA9IHt9CisgICAg aWYgc3lzdGVtID09ICJXaW5kb3dzIjoKKyAgICAgICAgbG9hZG9wdHNbIndpbm1vZGUiXSA9IDAK KworICAgIGxpYiA9IGN0eXBlcy5DRExMKGxpYnBxX3BhdGgsICoqbG9hZG9wdHMpCisKKyAgICAj CisgICAgIyBGdW5jdGlvbiBQcm90b3R5cGVzCisgICAgIworCisgICAgbGliLlBRY29ubmVjdGRi LnJlc3R5cGUgPSBfUEdjb25uX3AKKyAgICBsaWIuUFFjb25uZWN0ZGIuYXJndHlwZXMgPSBbY3R5 cGVzLmNfY2hhcl9wXQorCisgICAgbGliLlBRc3RhdHVzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQK KyAgICBsaWIuUFFzdGF0dXMuYXJndHlwZXMgPSBbX1BHY29ubl9wXQorCisgICAgbGliLlBRZXhl Yy5yZXN0eXBlID0gX1BHcmVzdWx0X3AKKyAgICBsaWIuUFFleGVjLmFyZ3R5cGVzID0gW19QR2Nv bm5fcCwgY3R5cGVzLmNfY2hhcl9wXQorCisgICAgbGliLlBRcmVzdWx0U3RhdHVzLnJlc3R5cGUg PSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFyZXN1bHRTdGF0dXMuYXJndHlwZXMgPSBbX1BHcmVz dWx0X3BdCisKKyAgICBsaWIuUFFjbGVhci5yZXN0eXBlID0gTm9uZQorICAgIGxpYi5QUWNsZWFy LmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRZXJyb3JNZXNzYWdlLnJlc3R5 cGUgPSBjdHlwZXMuY19jaGFyX3AKKyAgICBsaWIuUFFlcnJvck1lc3NhZ2UuYXJndHlwZXMgPSBb X1BHY29ubl9wXQorCisgICAgbGliLlBRZmluaXNoLnJlc3R5cGUgPSBOb25lCisgICAgbGliLlBR ZmluaXNoLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAgIGxpYi5QUXJlc3VsdEVycm9yTWVz c2FnZS5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRcmVzdWx0RXJyb3JNZXNz YWdlLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRbnR1cGxlcy5yZXN0eXBl ID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRbnR1cGxlcy5hcmd0eXBlcyA9IFtfUEdyZXN1bHRf cF0KKworICAgIGxpYi5QUW5maWVsZHMucmVzdHlwZSA9IGN0eXBlcy5jX2ludAorICAgIGxpYi5Q UW5maWVsZHMuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBsaWIuUFFnZXR2YWx1ZS5y ZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRZ2V0dmFsdWUuYXJndHlwZXMgPSBb X1BHcmVzdWx0X3AsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50XQorCisgICAgbGliLlBRZ2V0 aXNudWxsLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFnZXRpc251bGwuYXJndHlw ZXMgPSBbX1BHcmVzdWx0X3AsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50XQorCisgICAgbGli LlBRZnR5cGUucmVzdHlwZSA9IGN0eXBlcy5jX3VpbnQKKyAgICBsaWIuUFFmdHlwZS5hcmd0eXBl cyA9IFtfUEdyZXN1bHRfcCwgY3R5cGVzLmNfaW50XQorCisgICAgcmV0dXJuIGxpYgorCisKKyMg UG9zdGdyZVNRTCB0eXBlIE9JRHMgYW5kIGNvbnZlcnNpb24gc3lzdGVtCisjIFR5cGUgcmVnaXN0 cnkgLSBtYXBzIE9JRCB0byBjb252ZXJ0ZXIgZnVuY3Rpb24KK190eXBlX2NvbnZlcnRlcnM6IERp Y3RbaW50LCBDYWxsYWJsZVtbc3RyXSwgQW55XV0gPSB7fQorX2FycmF5X3RvX2VsZW1fbWFwOiBE aWN0W2ludCwgaW50XSA9IHt9CisKKworZGVmIHJlZ2lzdGVyX3R5cGVfaW5mbygKKyAgICBuYW1l OiBzdHIsIG9pZDogaW50LCBhcnJheV9vaWQ6IGludCwgY29udmVydGVyOiBDYWxsYWJsZVtbc3Ry XSwgQW55XQorKToKKyAgICAiIiIKKyAgICBSZWdpc3RlciBhIFBvc3RncmVTUUwgdHlwZSB3aXRo IGl0cyBPSUQsIGFycmF5IE9JRCwgYW5kIGNvbnZlcnNpb24gZnVuY3Rpb24uCisKKyAgICBVc2Fn ZToKKyAgICAgICAgcmVnaXN0ZXJfdHlwZV9pbmZvKCJib29sIiwgMTYsIDEwMDAsIGxhbWJkYSB2 OiB2ID09ICJ0IikKKyAgICAiIiIKKyAgICBfdHlwZV9jb252ZXJ0ZXJzW29pZF0gPSBjb252ZXJ0 ZXIKKyAgICBpZiBhcnJheV9vaWQgaXMgbm90IE5vbmU6CisgICAgICAgIF9hcnJheV90b19lbGVt X21hcFthcnJheV9vaWRdID0gb2lkCisKKworIyBIZWxwZXIgY29udmVydGVycworZGVmIF9wYXJz ZV9hcnJheSh2YWx1ZTogc3RyLCBlbGVtX29pZDogaW50KSAtPiBsaXN0OgorICAgICIiIlBhcnNl IFBvc3RncmVTUUwgYXJyYXkgc3ludGF4OiB7ZWxlbTEsZWxlbTIsZWxlbTN9IiIiCisgICAgaWYg bm90ICh2YWx1ZS5zdGFydHN3aXRoKCJ7IikgYW5kIHZhbHVlLmVuZHN3aXRoKCJ9IikpOgorICAg ICAgICByZXR1cm4gdmFsdWUKKworICAgIGlubmVyID0gdmFsdWVbMTotMV0KKyAgICBpZiBub3Qg aW5uZXI6CisgICAgICAgIHJldHVybiBbXQorCisgICAgZWxlbWVudHMgPSBpbm5lci5zcGxpdCgi LCIpCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZWxlbSBpbiBlbGVtZW50czoKKyAgICAgICAg ZWxlbSA9IGVsZW0uc3RyaXAoKQorICAgICAgICBpZiBlbGVtID09ICJOVUxMIjoKKyAgICAgICAg ICAgIHJlc3VsdC5hcHBlbmQoTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUmVt b3ZlIHF1b3RlcyBpZiBwcmVzZW50CisgICAgICAgICAgICBpZiBlbGVtLnN0YXJ0c3dpdGgoJyIn KSBhbmQgZWxlbS5lbmRzd2l0aCgnIicpOgorICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtWzE6 LTFdCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKF9jb252ZXJ0X3BnX3ZhbHVlKGVsZW0sIGVs ZW1fb2lkKSkKKworICAgIHJldHVybiByZXN1bHQKKworCisjIFJlZ2lzdGVyIHN0YW5kYXJkIFBv c3RncmVTUUwgdHlwZXMgdGhhdCB3ZSdsbCBsaWtlbHkgZW5jb3VudGVyIGluIHRlc3RzCityZWdp c3Rlcl90eXBlX2luZm8oImJvb2wiLCAxNiwgMTAwMCwgbGFtYmRhIHY6IHYgPT0gInQiKQorcmVn aXN0ZXJfdHlwZV9pbmZvKCJpbnQyIiwgMjEsIDEwMDUsIGludCkKK3JlZ2lzdGVyX3R5cGVfaW5m bygiaW50NCIsIDIzLCAxMDA3LCBpbnQpCityZWdpc3Rlcl90eXBlX2luZm8oImludDgiLCAyMCwg MTAxNiwgaW50KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJmbG9hdDQiLCA3MDAsIDEwMjEsIGZsb2F0 KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJmbG9hdDgiLCA3MDEsIDEwMjIsIGZsb2F0KQorcmVnaXN0 ZXJfdHlwZV9pbmZvKCJudW1lcmljIiwgMTcwMCwgMTIzMSwgZGVjaW1hbC5EZWNpbWFsKQorcmVn aXN0ZXJfdHlwZV9pbmZvKCJ0ZXh0IiwgMjUsIDEwMDksIHN0cikKK3JlZ2lzdGVyX3R5cGVfaW5m bygidmFyY2hhciIsIDEwNDMsIDEwMTUsIHN0cikKK3JlZ2lzdGVyX3R5cGVfaW5mbygiZGF0ZSIs IDEwODIsIDExODIsIGRhdGV0aW1lLmRhdGUuZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVf aW5mbygidGltZSIsIDEwODMsIDExODMsIGRhdGV0aW1lLnRpbWUuZnJvbWlzb2Zvcm1hdCkKK3Jl Z2lzdGVyX3R5cGVfaW5mbygidGltZXN0YW1wIiwgMTExNCwgMTExNSwgZGF0ZXRpbWUuZGF0ZXRp bWUuZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidGltZXN0YW1wdHoiLCAxMTg0 LCAxMTg1LCBkYXRldGltZS5kYXRldGltZS5mcm9taXNvZm9ybWF0KQorcmVnaXN0ZXJfdHlwZV9p bmZvKCJ1dWlkIiwgMjk1MCwgMjk1MSwgdXVpZC5VVUlEKQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJq c29uIiwgMTE0LCAxOTksIGpzb24ubG9hZHMpCityZWdpc3Rlcl90eXBlX2luZm8oImpzb25iIiwg MzgwMiwgMzgwNywganNvbi5sb2FkcykKKworCitkZWYgX2NvbnZlcnRfcGdfdmFsdWUodmFsdWU6 IHN0ciwgdHlwZV9vaWQ6IGludCkgLT4gQW55OgorICAgICIiIgorICAgIENvbnZlcnQgUG9zdGdy ZVNRTCBzdHJpbmcgdmFsdWUgdG8gYXBwcm9wcmlhdGUgUHl0aG9uIHR5cGUgYmFzZWQgb24gT0lE LgorICAgIFVzZXMgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjb252ZXJ0ZXJzIGZyb20gcmVnaXN0ZXJf dHlwZV9pbmZvKCkuCisgICAgIiIiCisgICAgIyBDaGVjayBpZiBpdCdzIGFuIGFycmF5IHR5cGUK KyAgICBpZiB0eXBlX29pZCBpbiBfYXJyYXlfdG9fZWxlbV9tYXA6CisgICAgICAgIGVsZW1fb2lk ID0gX2FycmF5X3RvX2VsZW1fbWFwW3R5cGVfb2lkXQorICAgICAgICByZXR1cm4gX3BhcnNlX2Fy cmF5KHZhbHVlLCBlbGVtX29pZCkKKworICAgICMgVXNlIHJlZ2lzdGVyZWQgY29udmVydGVyIGlm IGF2YWlsYWJsZQorICAgIGNvbnZlcnRlciA9IF90eXBlX2NvbnZlcnRlcnMuZ2V0KHR5cGVfb2lk KQorICAgIGlmIGNvbnZlcnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRlcih2YWx1ZSkKKwor ICAgICMgVW5rbm93biB0eXBlcyAtIHJldHVybiBhcyBzdHJpbmcKKyAgICByZXR1cm4gdmFsdWUK KworCitkZWYgc2ltcGxpZnlfcXVlcnlfcmVzdWx0cyhyZXN1bHRzKSAtPiBBbnk6CisgICAgIiIi CisgICAgU2ltcGxpZnkgdGhlIHJlc3VsdHMgb2YgYSBxdWVyeSBzbyB0aGF0IHRoZSBjYWxsZXIg ZG9lc24ndCBoYXZlIHRvIHVucGFjaworICAgIGxpc3RzIGFuZCB0dXBsZXMgb2YgbGVuZ3RoIDEu CisgICAgIiIiCisgICAgaWYgbGVuKHJlc3VsdHMpID09IDE6CisgICAgICAgIHJvdyA9IHJlc3Vs dHNbMF0KKyAgICAgICAgaWYgbGVuKHJvdykgPT0gMToKKyAgICAgICAgICAgICMgSWYgdGhlcmUn cyBvbmx5IGEgc2luZ2xlIGNlbGwsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZQorICAgICAgICAgICAg cmV0dXJuIHJvd1swXQorICAgICAgICAjIElmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZSByb3csIGp1 c3QgcmV0dXJuIHRoYXQgcm93CisgICAgICAgIHJldHVybiByb3cKKworICAgIGlmIGxlbihyZXN1 bHRzKSAhPSAwIGFuZCBsZW4ocmVzdWx0c1swXSkgPT0gMToKKyAgICAgICAgIyBJZiB0aGVyZSdz IG9ubHkgYSBzaW5nbGUgY29sdW1uLCByZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzCisgICAgICAg IHJldHVybiBbcm93WzBdIGZvciByb3cgaW4gcmVzdWx0c10KKworICAgICMgaWYgdGhlcmUgYXJl IG11bHRpcGxlIHJvd3MgYW5kIGNvbHVtbnMsIHJldHVybiB0aGUgcmVzdWx0cyBhcyBpcworICAg IHJldHVybiByZXN1bHRzCisKKworY2xhc3MgUEdyZXN1bHQoY29udGV4dGxpYi5BYnN0cmFjdENv bnRleHRNYW5hZ2VyKToKKyAgICAiIiJXcmFwcyBhIHJhdyBfUEdyZXN1bHRfcCB3aXRoIGEgbW9y ZSBmcmllbmRseSBpbnRlcmZhY2UuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGliOiBj dHlwZXMuQ0RMTCwgcmVzOiBfUEdyZXN1bHRfcCk6CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgor ICAgICAgICBzZWxmLl9yZXMgPSByZXMKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToK KyAgICAgICAgc2VsZi5fbGliLlBRY2xlYXIoc2VsZi5fcmVzKQorICAgICAgICBzZWxmLl9yZXMg PSBOb25lCisKKyAgICBkZWYgc3RhdHVzKHNlbGYpIC0+IEV4ZWNTdGF0dXM6CisgICAgICAgIHJl dHVybiBFeGVjU3RhdHVzKHNlbGYuX2xpYi5QUXJlc3VsdFN0YXR1cyhzZWxmLl9yZXMpKQorCisg ICAgZGVmIGVycm9yX21lc3NhZ2Uoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGVycm9y IG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVzdWx0LiIiIgorICAgICAgICBtc2cgPSBz ZWxmLl9saWIuUFFyZXN1bHRFcnJvck1lc3NhZ2Uoc2VsZi5fcmVzKQorICAgICAgICByZXR1cm4g bXNnLmRlY29kZSgpIGlmIG1zZyBlbHNlICIiCisKKyAgICBkZWYgZmV0Y2hfYWxsKHNlbGYpOgor ICAgICAgICAiIiIKKyAgICAgICAgRmV0Y2ggYWxsIHJvd3MgYW5kIGNvbnZlcnQgdG8gUHl0aG9u IHR5cGVzLgorICAgICAgICBSZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMsIHdpdGggdmFsdWVzIGNv bnZlcnRlZCBiYXNlZCBvbiB0aGVpciBQb3N0Z3JlU1FMIHR5cGUuCisgICAgICAgICIiIgorICAg ICAgICBucm93cyA9IHNlbGYuX2xpYi5QUW50dXBsZXMoc2VsZi5fcmVzKQorICAgICAgICBuY29s cyA9IHNlbGYuX2xpYi5QUW5maWVsZHMoc2VsZi5fcmVzKQorCisgICAgICAgICMgR2V0IHR5cGUg T0lEcyBmb3IgZWFjaCBjb2x1bW4KKyAgICAgICAgdHlwZV9vaWRzID0gW3NlbGYuX2xpYi5QUWZ0 eXBlKHNlbGYuX3JlcywgY29sKSBmb3IgY29sIGluIHJhbmdlKG5jb2xzKV0KKworICAgICAgICBy ZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHJvdyBpbiByYW5nZShucm93cyk6CisgICAgICAgICAg ICByb3dfZGF0YSA9IFtdCisgICAgICAgICAgICBmb3IgY29sIGluIHJhbmdlKG5jb2xzKToKKyAg ICAgICAgICAgICAgICBpZiBzZWxmLl9saWIuUFFnZXRpc251bGwoc2VsZi5fcmVzLCByb3csIGNv bCk6CisgICAgICAgICAgICAgICAgICAgIHJvd19kYXRhLmFwcGVuZChOb25lKQorICAgICAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fbGliLlBRZ2V0 dmFsdWUoc2VsZi5fcmVzLCByb3csIGNvbCkuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICAgICAg cm93X2RhdGEuYXBwZW5kKF9jb252ZXJ0X3BnX3ZhbHVlKHZhbHVlLCB0eXBlX29pZHNbY29sXSkp CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCh0dXBsZShyb3dfZGF0YSkpCisKKyAgICAgICAg cmV0dXJuIHJlc3VsdHMKKworCitjbGFzcyBQR2Nvbm4oY29udGV4dGxpYi5BYnN0cmFjdENvbnRl eHRNYW5hZ2VyKToKKyAgICAiIiIKKyAgICBXcmFwcyBhIHJhdyBfUEdjb25uX3Agd2l0aCBhIG1v cmUgZnJpZW5kbHkgaW50ZXJmYWNlLiBUaGlzIGlzIGp1c3QgYQorICAgIHN0dWI7IGl0J3MgZXhw ZWN0ZWQgdG8gZ3Jvdy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2Vs ZiwKKyAgICAgICAgbGliOiBjdHlwZXMuQ0RMTCwKKyAgICAgICAgaGFuZGxlOiBfUEdjb25uX3As CisgICAgICAgIHN0YWNrOiBjb250ZXh0bGliLkV4aXRTdGFjaywKKyAgICApOgorICAgICAgICBz ZWxmLl9saWIgPSBsaWIKKyAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxlCisgICAgICAgIHNl bGYuX3N0YWNrID0gc3RhY2sKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAg ICAgc2VsZi5fbGliLlBRZmluaXNoKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgc2VsZi5faGFuZGxl ID0gTm9uZQorCisgICAgZGVmIGV4ZWMoc2VsZiwgcXVlcnk6IHN0cik6CisgICAgICAgICIiIgor ICAgICAgICBFeGVjdXRlcyBhIHF1ZXJ5IHZpYSBQUWV4ZWMoKSBhbmQgcmV0dXJucyBhIFBHcmVz dWx0LgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gc2VsZi5fbGliLlBRZXhlYyhzZWxmLl9o YW5kbGUsIHF1ZXJ5LmVuY29kZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fc3RhY2suZW50ZXJf Y29udGV4dChQR3Jlc3VsdChzZWxmLl9saWIsIHJlcykpCisKKyAgICBkZWYgc3FsKHNlbGYsIHF1 ZXJ5OiBzdHIpOgorICAgICAgICAiIiIKKyAgICAgICAgRXhlY3V0ZXMgYSBxdWVyeSBhbmQgcmFp c2VzIGFuIGV4Y2VwdGlvbiBpZiBpdCBmYWlscy4KKyAgICAgICAgUmV0dXJucyB0aGUgcXVlcnkg cmVzdWx0cyB3aXRoIGF1dG9tYXRpYyB0eXBlIGNvbnZlcnNpb24gYW5kIHNpbXBsaWZpY2F0aW9u LgorICAgICAgICBGb3IgY29tbWFuZHMgdGhhdCBkb24ndCByZXR1cm4gZGF0YSAoSU5TRVJULCBV UERBVEUsIGV0Yy4pLCByZXR1cm5zIE5vbmUuCisKKyAgICAgICAgRXhhbXBsZXM6CisgICAgICAg IC0gU0VMRUNUIDEgLT4gMQorICAgICAgICAtIFNFTEVDVCAxLCAyIC0+ICgxLCAyKQorICAgICAg ICAtIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIC0+IFsxLCAyLCAzXQorICAg ICAgICAtIFNFTEVDVCAqIEZST00gKFZBTFVFUyAoMSwgJ2EnKSwgKDIsICdiJykpIHQgLT4gWygx LCAnYScpLCAoMiwgJ2InKV0KKyAgICAgICAgLSBDUkVBVEUgVEFCTEUgLi4uIC0+IE5vbmUKKyAg ICAgICAgLSBJTlNFUlQgSU5UTyAuLi4gLT4gTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgcmVz ID0gc2VsZi5leGVjKHF1ZXJ5KQorICAgICAgICBzdGF0dXMgPSByZXMuc3RhdHVzKCkKKworICAg ICAgICBpZiBzdGF0dXMgPT0gRXhlY1N0YXR1cy5QR1JFU19GQVRBTF9FUlJPUjoKKyAgICAgICAg ICAgIGVycm9yX21zZyA9IHJlcy5lcnJvcl9tZXNzYWdlKCkKKyAgICAgICAgICAgIHJhaXNlIExp YnBxRXJyb3IoZiJRdWVyeSBmYWlsZWQ6IHtlcnJvcl9tc2d9XG5RdWVyeToge3F1ZXJ5fSIpCisg ICAgICAgIGVsaWYgc3RhdHVzID09IEV4ZWNTdGF0dXMuUEdSRVNfQ09NTUFORF9PSzoKKyAgICAg ICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgc3RhdHVzID09IEV4ZWNTdGF0dXMuUEdS RVNfVFVQTEVTX09LOgorICAgICAgICAgICAgcmVzdWx0cyA9IHJlcy5mZXRjaF9hbGwoKQorICAg ICAgICAgICAgcmV0dXJuIHNpbXBsaWZ5X3F1ZXJ5X3Jlc3VsdHMocmVzdWx0cykKKyAgICAgICAg ZWxzZToKKyAgICAgICAgICAgIGVycm9yX21zZyA9IHJlcy5lcnJvcl9tZXNzYWdlKCkgb3IgZiJV bmV4cGVjdGVkIHN0YXR1czoge3N0YXR1c30iCisgICAgICAgICAgICByYWlzZSBMaWJwcUVycm9y KGYiUXVlcnkgZmFpbGVkOiB7ZXJyb3JfbXNnfVxuUXVlcnk6IHtxdWVyeX0iKQorCisKK2RlZiBj b25uc3RyKG9wdHM6IERpY3Rbc3RyLCBBbnldKSAtPiBzdHI6CisgICAgIiIiCisgICAgRmxhdHRl bnMgdGhlIHByb3ZpZGVkIG9wdGlvbnMgaW50byBhIGxpYnBxIGNvbm5lY3Rpb24gc3RyaW5nLiBW YWx1ZXMKKyAgICBhcmUgY29udmVydGVkIHRvIHN0ciBhbmQgcXVvdGVkL2VzY2FwZWQgYXMgbmVj ZXNzYXJ5LgorICAgICIiIgorICAgIHNldHRpbmdzID0gW10KKworICAgIGZvciBrLCB2IGluIG9w dHMuaXRlbXMoKToKKyAgICAgICAgdiA9IHN0cih2KQorICAgICAgICBpZiBub3QgdjoKKyAgICAg ICAgICAgIHYgPSAiJyciCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB2ID0gdi5yZXBsYWNl KCJcXCIsICJcXFxcIikKKyAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIiciLCAiXFwnIikKKwor ICAgICAgICAgICAgaWYgIiAiIGluIHY6CisgICAgICAgICAgICAgICAgdiA9IGYiJ3t2fSciCisK KyAgICAgICAgc2V0dGluZ3MuYXBwZW5kKGYie2t9PXt2fSIpCisKKyAgICByZXR1cm4gIiAiLmpv aW4oc2V0dGluZ3MpCisKKworZGVmIGNvbm5lY3QoCisgICAgbGlicHFfaGFuZGxlOiBjdHlwZXMu Q0RMTCwKKyAgICBzdGFjazogY29udGV4dGxpYi5FeGl0U3RhY2ssCisgICAgcmVtYWluaW5nX3Rp bWVvdXRfZm46IENhbGxhYmxlW1tdLCBmbG9hdF0sCisgICAgKipvcHRzLAorKSAtPiBQR2Nvbm46 CisgICAgIiIiCisgICAgQ29ubmVjdHMgdG8gYSBzZXJ2ZXIsIHVzaW5nIHRoZSBnaXZlbiBjb25u ZWN0aW9uIG9wdGlvbnMsIGFuZAorICAgIHJldHVybnMgYSBQR2Nvbm4gb2JqZWN0IHdyYXBwaW5n IHRoZSBjb25uZWN0aW9uIGhhbmRsZS4gQQorICAgIGZhaWx1cmUgd2lsbCByYWlzZSBMaWJwcUVy cm9yLgorCisgICAgQ29ubmVjdGlvbnMgaG9ub3IgUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgdW5s ZXNzIGNvbm5lY3RfdGltZW91dCBpcworICAgIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBpbiBvcHRz LgorCisgICAgQXJnczoKKyAgICAgICAgbGlicHFfaGFuZGxlOiBjdHlwZXMuQ0RMTCBoYW5kbGUg dG8gbGlicHEgbGlicmFyeQorICAgICAgICBzdGFjazogRXhpdFN0YWNrIGZvciBtYW5hZ2luZyBj b25uZWN0aW9uIGNsZWFudXAKKyAgICAgICAgcmVtYWluaW5nX3RpbWVvdXRfZm46IEZ1bmN0aW9u IHRoYXQgcmV0dXJucyByZW1haW5pbmcgdGltZW91dCBpbiBzZWNvbmRzCisgICAgICAgICoqb3B0 czogQ29ubmVjdGlvbiBvcHRpb25zIChob3N0LCBwb3J0LCBkYm5hbWUsIGV0Yy4pCisKKyAgICBS ZXR1cm5zOgorICAgICAgICBQR2Nvbm46IENvbm5lY3RlZCBkYXRhYmFzZSBjb25uZWN0aW9uCisK KyAgICBSYWlzZXM6CisgICAgICAgIExpYnBxRXJyb3I6IElmIGNvbm5lY3Rpb24gZmFpbHMKKyAg ICAiIiIKKworICAgIGlmICJjb25uZWN0X3RpbWVvdXQiIG5vdCBpbiBvcHRzOgorICAgICAgICB0 ID0gaW50KHJlbWFpbmluZ190aW1lb3V0X2ZuKCkpCisgICAgICAgIG9wdHNbImNvbm5lY3RfdGlt ZW91dCJdID0gbWF4KHQsIDEpCisKKyAgICBjb25uX3AgPSBsaWJwcV9oYW5kbGUuUFFjb25uZWN0 ZGIoY29ubnN0cihvcHRzKS5lbmNvZGUoKSkKKworICAgICMgQ2hlY2sgY29ubmVjdGlvbiBzdGF0 dXMgYmVmb3JlIGFkZGluZyB0byBzdGFjaworICAgIGlmIGxpYnBxX2hhbmRsZS5QUXN0YXR1cyhj b25uX3ApICE9IENvbm5lY3Rpb25TdGF0dXMuQ09OTkVDVElPTl9PSzoKKyAgICAgICAgZXJyb3Jf bXNnID0gbGlicHFfaGFuZGxlLlBRZXJyb3JNZXNzYWdlKGNvbm5fcCkuZGVjb2RlKCkKKyAgICAg ICAgIyBNYW51YWxseSBjbG9zZSB0aGUgZmFpbGVkIGNvbm5lY3Rpb24KKyAgICAgICAgbGlicHFf aGFuZGxlLlBRZmluaXNoKGNvbm5fcCkKKyAgICAgICAgcmFpc2UgTGlicHFFcnJvcihlcnJvcl9t c2cpCisKKyAgICAjIENvbm5lY3Rpb24gc3VjY2VlZGVkIC0gYWRkIHRvIHN0YWNrIGZvciBjbGVh bnVwCisgICAgY29ubiA9IHN0YWNrLmVudGVyX2NvbnRleHQoUEdjb25uKGxpYnBxX2hhbmRsZSwg Y29ubl9wLCBzdGFjaz1zdGFjaykpCisgICAgcmV0dXJuIGNvbm4KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5weSBiL3NyYy90ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5w eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVkM2JmZjY5YTguLjAwMDAwMDAwMDAw Ci0tLSBhL3NyYy90ZXN0L3B5dGVzdC9wZy9maXh0dXJlcy5weQorKysgL2Rldi9udWxsCkBAIC0x LDIxMiArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKLQotaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBjdHlwZXMKLWltcG9y dCBwbGF0Zm9ybQotaW1wb3J0IHRpbWUKLWZyb20gdHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxl LCBEaWN0Ci0KLWltcG9ydCBweXRlc3QKLQotZnJvbSAuX2VudiBpbXBvcnQgdGVzdF90aW1lb3V0 X2RlZmF1bHQKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiByZW1haW5pbmdfdGltZW91dCgpOgot ICAgICIiIgotICAgIFRoaXMgZml4dHVyZSBwcm92aWRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJu cyBob3cgbXVjaCBvZiB0aGUKLSAgICBQR19URVNUX1RJTUVPVVRfREVGQVVMVCByZW1haW5zIGZv ciB0aGUgY3VycmVudCB0ZXN0LCBpbiBmcmFjdGlvbmFsIHNlY29uZHMuCi0gICAgVGhpcyB2YWx1 ZSBpcyBuZXZlciBsZXNzIHRoYW4gemVyby4KLQotICAgIFRoaXMgZml4dHVyZSBpcyBwZXItdGVz dCwgc28gdGhlIGRlYWRsaW5lIGlzIGFsc28gcmVzZXQgb24gYSBwZXItdGVzdCBiYXNpcy4KLSAg ICAiIiIKLSAgICBub3cgPSB0aW1lLm1vbm90b25pYygpCi0gICAgZGVhZGxpbmUgPSBub3cgKyB0 ZXN0X3RpbWVvdXRfZGVmYXVsdCgpCi0KLSAgICByZXR1cm4gbGFtYmRhOiBtYXgoZGVhZGxpbmUg LSB0aW1lLm1vbm90b25pYygpLCAwKQotCi0KLWNsYXNzIF9QR2Nvbm4oY3R5cGVzLlN0cnVjdHVy ZSk6Ci0gICAgcGFzcwotCi0KLWNsYXNzIF9QR3Jlc3VsdChjdHlwZXMuU3RydWN0dXJlKToKLSAg ICBwYXNzCi0KLQotX1BHY29ubl9wID0gY3R5cGVzLlBPSU5URVIoX1BHY29ubikKLV9QR3Jlc3Vs dF9wID0gY3R5cGVzLlBPSU5URVIoX1BHcmVzdWx0KQotCi0KLUBweXRlc3QuZml4dHVyZShzY29w ZT0ic2Vzc2lvbiIpCi1kZWYgbGlicHFfaGFuZGxlKCk6Ci0gICAgIiIiCi0gICAgTG9hZHMgYSBj dHlwZXMgaGFuZGxlIGZvciBsaWJwcS4gU29tZSBjb21tb24gZnVuY3Rpb24gcHJvdG90eXBlcyBh cmUKLSAgICBpbml0aWFsaXplZCBmb3IgZ2VuZXJhbCB1c2UuCi0gICAgIiIiCi0gICAgc3lzdGVt ID0gcGxhdGZvcm0uc3lzdGVtKCkKLQotICAgIGlmIHN5c3RlbSBpbiAoIkxpbnV4IiwgIkZyZWVC U0QiLCAiTmV0QlNEIiwgIk9wZW5CU0QiKToKLSAgICAgICAgbmFtZSA9ICJsaWJwcS5zby41Igot ICAgIGVsaWYgc3lzdGVtID09ICJEYXJ3aW4iOgotICAgICAgICBuYW1lID0gImxpYnBxLjUuZHls aWIiCi0gICAgZWxpZiBzeXN0ZW0gPT0gIldpbmRvd3MiOgotICAgICAgICBuYW1lID0gImxpYnBx LmRsbCIKLSAgICBlbHNlOgotICAgICAgICBhc3NlcnQgRmFsc2UsIGYidGhlIGxpYnBxIGZpeHR1 cmUgbXVzdCBiZSB1cGRhdGVkIGZvciB7c3lzdGVtfSIKLQotICAgICMgWFhYIGN0eXBlcy5DRExM KCkgaXMgYSBsaXR0bGUgc3RyaWN0ZXIgd2l0aCBsb2FkIHBhdGhzIG9uIFdpbmRvd3MuIFRoZQot ICAgICMgcHJlZmVycmVkIHdheSBhcm91bmQgdGhhdCBpcyB0byBrbm93IHRoZSBhYnNvbHV0ZSBw YXRoIHRvIGxpYnBxLmRsbCwgYnV0Ci0gICAgIyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBtZXNoIHdl bGwgd2l0aCB0aGUgY3VycmVudCB0ZXN0IGluZnJhc3RydWN0dXJlLiBGb3IKLSAgICAjIG5vdywg ZW5hYmxlICJzdGFuZGFyZCIgTG9hZExpYnJhcnkgYmVoYXZpb3IuCi0gICAgbG9hZG9wdHMgPSB7 fQotICAgIGlmIHN5c3RlbSA9PSAiV2luZG93cyI6Ci0gICAgICAgIGxvYWRvcHRzWyJ3aW5tb2Rl Il0gPSAwCi0KLSAgICBsaWIgPSBjdHlwZXMuQ0RMTChuYW1lLCAqKmxvYWRvcHRzKQotCi0gICAg IwotICAgICMgRnVuY3Rpb24gUHJvdG90eXBlcwotICAgICMKLQotICAgIGxpYi5QUWNvbm5lY3Rk Yi5yZXN0eXBlID0gX1BHY29ubl9wCi0gICAgbGliLlBRY29ubmVjdGRiLmFyZ3R5cGVzID0gW2N0 eXBlcy5jX2NoYXJfcF0KLQotICAgIGxpYi5QUXN0YXR1cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50 Ci0gICAgbGliLlBRc3RhdHVzLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KLQotICAgIGxpYi5QUWV4 ZWMucmVzdHlwZSA9IF9QR3Jlc3VsdF9wCi0gICAgbGliLlBRZXhlYy5hcmd0eXBlcyA9IFtfUEdj b25uX3AsIGN0eXBlcy5jX2NoYXJfcF0KLQotICAgIGxpYi5QUXJlc3VsdFN0YXR1cy5yZXN0eXBl ID0gY3R5cGVzLmNfaW50Ci0gICAgbGliLlBRcmVzdWx0U3RhdHVzLmFyZ3R5cGVzID0gW19QR3Jl c3VsdF9wXQotCi0gICAgbGliLlBRY2xlYXIucmVzdHlwZSA9IE5vbmUKLSAgICBsaWIuUFFjbGVh ci5hcmd0eXBlcyA9IFtfUEdyZXN1bHRfcF0KLQotICAgIGxpYi5QUWVycm9yTWVzc2FnZS5yZXN0 eXBlID0gY3R5cGVzLmNfY2hhcl9wCi0gICAgbGliLlBRZXJyb3JNZXNzYWdlLmFyZ3R5cGVzID0g W19QR2Nvbm5fcF0KLQotICAgIGxpYi5QUWZpbmlzaC5yZXN0eXBlID0gTm9uZQotICAgIGxpYi5Q UWZpbmlzaC5hcmd0eXBlcyA9IFtfUEdjb25uX3BdCi0KLSAgICByZXR1cm4gbGliCi0KLQotY2xh c3MgUEdyZXN1bHQoY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKLSAgICAiIiJX cmFwcyBhIHJhdyBfUEdyZXN1bHRfcCB3aXRoIGEgbW9yZSBmcmllbmRseSBpbnRlcmZhY2UuIiIi Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGliOiBjdHlwZXMuQ0RMTCwgcmVzOiBfUEdyZXN1 bHRfcCk6Ci0gICAgICAgIHNlbGYuX2xpYiA9IGxpYgotICAgICAgICBzZWxmLl9yZXMgPSByZXMK LQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKLSAgICAgICAgc2VsZi5fbGliLlBRY2xl YXIoc2VsZi5fcmVzKQotICAgICAgICBzZWxmLl9yZXMgPSBOb25lCi0KLSAgICBkZWYgc3RhdHVz KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fbGliLlBRcmVzdWx0U3RhdHVzKHNlbGYuX3Jl cykKLQotCi1jbGFzcyBQR2Nvbm4oY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyKToK LSAgICAiIiIKLSAgICBXcmFwcyBhIHJhdyBfUEdjb25uX3Agd2l0aCBhIG1vcmUgZnJpZW5kbHkg aW50ZXJmYWNlLiBUaGlzIGlzIGp1c3QgYQotICAgIHN0dWI7IGl0J3MgZXhwZWN0ZWQgdG8gZ3Jv dy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAg bGliOiBjdHlwZXMuQ0RMTCwKLSAgICAgICAgaGFuZGxlOiBfUEdjb25uX3AsCi0gICAgICAgIHN0 YWNrOiBjb250ZXh0bGliLkV4aXRTdGFjaywKLSAgICApOgotICAgICAgICBzZWxmLl9saWIgPSBs aWIKLSAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxlCi0gICAgICAgIHNlbGYuX3N0YWNrID0g c3RhY2sKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKLSAgICAgICAgc2VsZi5fbGli LlBRZmluaXNoKHNlbGYuX2hhbmRsZSkKLSAgICAgICAgc2VsZi5faGFuZGxlID0gTm9uZQotCi0g ICAgZGVmIGV4ZWMoc2VsZiwgcXVlcnk6IHN0cikgLT4gUEdyZXN1bHQ6Ci0gICAgICAgICIiIgot ICAgICAgICBFeGVjdXRlcyBhIHF1ZXJ5IHZpYSBQUWV4ZWMoKSBhbmQgcmV0dXJucyBhIFBHcmVz dWx0LgotICAgICAgICAiIiIKLSAgICAgICAgcmVzID0gc2VsZi5fbGliLlBRZXhlYyhzZWxmLl9o YW5kbGUsIHF1ZXJ5LmVuY29kZSgpKQotICAgICAgICByZXR1cm4gc2VsZi5fc3RhY2suZW50ZXJf Y29udGV4dChQR3Jlc3VsdChzZWxmLl9saWIsIHJlcykpCi0KLQotQHB5dGVzdC5maXh0dXJlCi1k ZWYgbGlicHEobGlicHFfaGFuZGxlLCByZW1haW5pbmdfdGltZW91dCk6Ci0gICAgIiIiCi0gICAg UHJvdmlkZXMgYSBjdHlwZXMtYmFzZWQgQVBJIHdyYXBwZWQgYXJvdW5kIGxpYnBxLnNvLiBUaGlz IGZpeHR1cmUga2VlcHMKLSAgICB0cmFjayBvZiBhbGxvY2F0ZWQgcmVzb3VyY2VzIGFuZCBjbGVh bnMgdGhlbSB1cCBkdXJpbmcgdGVhcmRvd24uIFNlZQotICAgIF9MaWJwcSdzIHB1YmxpYyBBUEkg Zm9yIGRldGFpbHMuCi0gICAgIiIiCi0KLSAgICBjbGFzcyBfTGlicHEoY29udGV4dGxpYi5FeGl0 U3RhY2spOgotICAgICAgICBDT05ORUNUSU9OX09LID0gMAotCi0gICAgICAgIFBHUkVTX0VNUFRZ X1FVRVJZID0gMAotCi0gICAgICAgIGNsYXNzIEVycm9yKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAg ICAgICAiIiIKLSAgICAgICAgICAgIGxpYnBxLkVycm9yIGlzIHRoZSBleGNlcHRpb24gY2xhc3Mg Zm9yIGFwcGxpY2F0aW9uLWxldmVsIGVycm9ycyB0aGF0Ci0gICAgICAgICAgICBhcmUgZW5jb3Vu dGVyZWQgZHVyaW5nIGxpYnBxIG9wZXJhdGlvbnMuCi0gICAgICAgICAgICAiIiIKLQotICAgICAg ICAgICAgcGFzcwotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18oKQotICAgICAgICAgICAgc2VsZi5saWIgPSBsaWJwcV9oYW5kbGUKLQot ICAgICAgICBkZWYgX2Nvbm5zdHIoc2VsZiwgb3B0czogRGljdFtzdHIsIEFueV0pIC0+IHN0cjoK LSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgRmxhdHRlbnMgdGhlIHByb3ZpZGVkIG9wdGlv bnMgaW50byBhIGxpYnBxIGNvbm5lY3Rpb24gc3RyaW5nLiBWYWx1ZXMKLSAgICAgICAgICAgIGFy ZSBjb252ZXJ0ZWQgdG8gc3RyIGFuZCBxdW90ZWQvZXNjYXBlZCBhcyBuZWNlc3NhcnkuCi0gICAg ICAgICAgICAiIiIKLSAgICAgICAgICAgIHNldHRpbmdzID0gW10KLQotICAgICAgICAgICAgZm9y IGssIHYgaW4gb3B0cy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHYgPSBzdHIodikKLSAgICAg ICAgICAgICAgICBpZiBub3QgdjoKLSAgICAgICAgICAgICAgICAgICAgdiA9ICInJyIKLSAgICAg ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCJcXCIs ICJcXFxcIikKLSAgICAgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgiJyIsICJcXCciKQot Ci0gICAgICAgICAgICAgICAgICAgIGlmICIgIiBpbiB2OgotICAgICAgICAgICAgICAgICAgICAg ICAgdiA9IGYiJ3t2fSciCi0KLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5hcHBlbmQoZiJ7a309 e3Z9IikKLQotICAgICAgICAgICAgcmV0dXJuICIgIi5qb2luKHNldHRpbmdzKQotCi0gICAgICAg IGRlZiBtdXN0X2Nvbm5lY3Qoc2VsZiwgKipvcHRzKSAtPiBQR2Nvbm46Ci0gICAgICAgICAgICAi IiIKLSAgICAgICAgICAgIENvbm5lY3RzIHRvIGEgc2VydmVyLCB1c2luZyB0aGUgZ2l2ZW4gY29u bmVjdGlvbiBvcHRpb25zLCBhbmQKLSAgICAgICAgICAgIHJldHVybnMgYSBsaWJwcS5QR2Nvbm4g b2JqZWN0IHdyYXBwaW5nIHRoZSBjb25uZWN0aW9uIGhhbmRsZS4gQQotICAgICAgICAgICAgZmFp bHVyZSB3aWxsIHJhaXNlIGxpYnBxLkVycm9yLgotCi0gICAgICAgICAgICBDb25uZWN0aW9ucyBo b25vciBQR19URVNUX1RJTUVPVVRfREVGQVVMVCB1bmxlc3MgY29ubmVjdF90aW1lb3V0IGlzCi0g ICAgICAgICAgICBleHBsaWNpdGx5IG92ZXJyaWRkZW4gaW4gb3B0cy4KLSAgICAgICAgICAgICIi IgotCi0gICAgICAgICAgICBpZiAiY29ubmVjdF90aW1lb3V0IiBub3QgaW4gb3B0czoKLSAgICAg ICAgICAgICAgICB0ID0gaW50KHJlbWFpbmluZ190aW1lb3V0KCkpCi0gICAgICAgICAgICAgICAg b3B0c1siY29ubmVjdF90aW1lb3V0Il0gPSBtYXgodCwgMSkKLQotICAgICAgICAgICAgY29ubl9w ID0gc2VsZi5saWIuUFFjb25uZWN0ZGIoc2VsZi5fY29ubnN0cihvcHRzKS5lbmNvZGUoKSkKLQot ICAgICAgICAgICAgIyBFbnN1cmUgdGhlIGNvbm5lY3Rpb24gaGFuZGxlIGlzIGFsd2F5cyBjbG9z ZWQgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAgICMgdGVzdC4KLSAgICAgICAgICAgIGNv bm4gPSBzZWxmLmVudGVyX2NvbnRleHQoUEdjb25uKHNlbGYubGliLCBjb25uX3AsIHN0YWNrPXNl bGYpKQotCi0gICAgICAgICAgICBpZiBzZWxmLmxpYi5QUXN0YXR1cyhjb25uX3ApICE9IHNlbGYu Q09OTkVDVElPTl9PSzoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkVycm9yKHNlbGYubGli LlBRZXJyb3JNZXNzYWdlKGNvbm5fcCkuZGVjb2RlKCkpCi0KLSAgICAgICAgICAgIHJldHVybiBj b25uCi0KLSAgICB3aXRoIF9MaWJwcSgpIGFzIGxpYjoKLSAgICAgICAgeWllbGQgbGliCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcGx1Z2lucy9wZ3RhcC5weSBiL3NyYy90ZXN0L3B5dGVz dC9wbHVnaW5zL3BndGFwLnB5CmluZGV4IGVmODI5MWUyOTFjLi42YTcyOWQyNTJlMSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcHl0ZXN0L3BsdWdpbnMvcGd0YXAucHkKKysrIGIvc3JjL3Rlc3QvcHl0 ZXN0L3BsdWdpbnMvcGd0YXAucHkKQEAgLTIsNyArMiw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0 IHN5cwotZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAKIGltcG9ydCBweXRlc3QKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3BnL19faW5pdF9fLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0 L3B5cGcvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy90 ZXN0L3B5dGVzdC9wZy9fX2luaXRfXy5weQpyZW5hbWUgdG8gc3JjL3Rlc3QvcHl0ZXN0L3B5cGcv X19pbml0X18ucHkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9wZy9fZW52LnB5IGIvc3Jj L3Rlc3QvcHl0ZXN0L3B5cGcvX2Vudi5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJv bSBzcmMvdGVzdC9weXRlc3QvcGcvX2Vudi5weQpyZW5hbWUgdG8gc3JjL3Rlc3QvcHl0ZXN0L3B5 cGcvX2Vudi5weQppbmRleCA2ZjE4YWYwNzg0NC4uMTU0Yzk4NmQ3M2UgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3B5dGVzdC9wZy9fZW52LnB5CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL19lbnYu cHkKQEAgLTIsNyArMiw2IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWZyb20gdHlw aW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbAogCiBpbXBvcnQgcHl0ZXN0CiAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3B5dGVzdC9wZy9fd2luMzIucHkgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9fd2lu MzIucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy90ZXN0L3B5dGVzdC9w Zy9fd2luMzIucHkKcmVuYW1lIHRvIHNyYy90ZXN0L3B5dGVzdC9weXBnL193aW4zMi5weQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvZml4dHVyZXMucHkgYi9zcmMvdGVzdC9weXRl c3QvcHlwZy9maXh0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uY2YyMmM4ZWM0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9m aXh0dXJlcy5weQpAQCAtMCwwICsxLDE3NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBvcworaW1wb3J0IGNvbnRl eHRsaWIKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc2VjcmV0cworaW1wb3J0IHRpbWUKKworaW1w b3J0IHB5dGVzdAorCitmcm9tIC5fZW52IGltcG9ydCB0ZXN0X3RpbWVvdXRfZGVmYXVsdAorZnJv bSAudXRpbCBpbXBvcnQgY2FwdHVyZQorZnJvbSAuc2VydmVyIGltcG9ydCBQb3N0Z3Jlc1NlcnZl cgorCitmcm9tIGxpYnBxIGltcG9ydCBsb2FkX2xpYnBxX2hhbmRsZSwgY29ubmVjdCBhcyBsaWJw cV9jb25uZWN0CisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgcmVtYWluaW5nX3RpbWVvdXQoKToK KyAgICAiIiIKKyAgICBUaGlzIGZpeHR1cmUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVy bnMgaG93IG11Y2ggb2YgdGhlCisgICAgUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgcmVtYWlucyBm b3IgdGhlIGN1cnJlbnQgdGVzdCwgaW4gZnJhY3Rpb25hbCBzZWNvbmRzLgorICAgIFRoaXMgdmFs dWUgaXMgbmV2ZXIgbGVzcyB0aGFuIHplcm8uCisKKyAgICBUaGlzIGZpeHR1cmUgaXMgcGVyLXRl c3QsIHNvIHRoZSBkZWFkbGluZSBpcyBhbHNvIHJlc2V0IG9uIGEgcGVyLXRlc3QgYmFzaXMuCisg ICAgIiIiCisgICAgbm93ID0gdGltZS5tb25vdG9uaWMoKQorICAgIGRlYWRsaW5lID0gbm93ICsg dGVzdF90aW1lb3V0X2RlZmF1bHQoKQorCisgICAgcmV0dXJuIGxhbWJkYTogbWF4KGRlYWRsaW5l IC0gdGltZS5tb25vdG9uaWMoKSwgMCkKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Np b24iKQorZGVmIGxpYnBxX2hhbmRsZShsaWJkaXIpOgorICAgICIiIgorICAgIExvYWRzIGEgY3R5 cGVzIGhhbmRsZSBmb3IgbGlicHEuIFNvbWUgY29tbW9uIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJl CisgICAgaW5pdGlhbGl6ZWQgZm9yIGdlbmVyYWwgdXNlLgorICAgICIiIgorICAgIHJldHVybiBs b2FkX2xpYnBxX2hhbmRsZShsaWJkaXIpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY29ubmVj dChsaWJwcV9oYW5kbGUsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIKKyAgICBSZXR1cm5z IGEgZnVuY3Rpb24gdG8gY29ubmVjdCB0byBQb3N0Z3JlU1FMIHZpYSBsaWJwcS4KKworICAgIFRo ZSByZXR1cm5lZCBmdW5jdGlvbiBhY2NlcHRzIGNvbm5lY3Rpb24gb3B0aW9ucyBhcyBrZXl3b3Jk IGFyZ3VtZW50cworICAgIChob3N0LCBwb3J0LCBkYm5hbWUsIGV0Yy4pIGFuZCByZXR1cm5zIGEg UEdjb25uIG9iamVjdC4gQ29ubmVjdGlvbnMKKyAgICBhcmUgYXV0b21hdGljYWxseSBjbGVhbmVk IHVwIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBjb25u ID0gY29ubmVjdChob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTU0MzIsIGRibmFtZT0ncG9zdGdyZXMn KQorICAgICAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEiKQorICAgICIiIgorICAgIHdp dGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKKworICAgICAgICBkZWYgX2Nvbm5l Y3QoKipvcHRzKToKKyAgICAgICAgICAgIHJldHVybiBsaWJwcV9jb25uZWN0KGxpYnBxX2hhbmRs ZSwgc3RhY2ssIHJlbWFpbmluZ190aW1lb3V0LCAqKm9wdHMpCisKKyAgICAgICAgeWllbGQgX2Nv bm5lY3QKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHBnX2NvbmZp ZygpOgorICAgICIiIgorICAgIFJldHVybnMgdGhlIHBhdGggdG8gcGdfY29uZmlnLiBVc2VzIFBH X0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBzZXQsCisgICAgb3RoZXJ3aXNlIHVzZXMg J3BnX2NvbmZpZycgZnJvbSBQQVRILgorICAgICIiIgorICAgIHJldHVybiBvcy5lbnZpcm9uLmdl dCgiUEdfQ09ORklHIiwgInBnX2NvbmZpZyIpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJz ZXNzaW9uIikKK2RlZiBiaW5kaXIocGdfY29uZmlnKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRo ZSBQb3N0Z3JlU1FMIGJpbiBkaXJlY3RvcnkgdXNpbmcgcGdfY29uZmlnIC0tYmluZGlyLgorICAg ICIiIgorICAgIHJldHVybiBjYXB0dXJlKHBnX2NvbmZpZywgIi0tYmluZGlyIikKKworCitAcHl0 ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGxpYmRpcihwZ19jb25maWcpOgorICAg ICIiIgorICAgIFJldHVybnMgdGhlIFBvc3RncmVTUUwgbGliIGRpcmVjdG9yeSB1c2luZyBwZ19j b25maWcgLS1saWJkaXIuCisgICAgIiIiCisgICAgcmV0dXJuIGNhcHR1cmUocGdfY29uZmlnLCAi LS1saWJkaXIiKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgZGF0 YWRpcih0bXBfcGF0aF9mYWN0b3J5KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBkaXJlY3Rv cnkgbmFtZSB0byB1c2UgYXMgdGhlIHNlcnZlciBkYXRhIGRpcmVjdG9yeS4gSWYKKyAgICBURVNU REFUQURJUiBpcyBwcm92aWRlZCwgdGhhdCB3aWxsIGJlIHVzZWQ7IG90aGVyd2lzZSBhIG5ldyB0 ZW1wb3JhcnkKKyAgICBkaXJlY3RvcnkgaXMgY3JlYXRlZCBpbiB0aGUgcHl0ZXN0IHRlbXAgcm9v dC4KKyAgICAiIiIKKyAgICBkID0gb3MuZ2V0ZW52KCJURVNUREFUQURJUiIpCisgICAgaWYgZDoK KyAgICAgICAgZCA9IHBhdGhsaWIuUGF0aChkKQorICAgIGVsc2U6CisgICAgICAgIGQgPSB0bXBf cGF0aF9mYWN0b3J5Lm1rdGVtcCgidG1wX2NoZWNrIikKKworICAgIHJldHVybiBkCisKKworQHB5 dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBzb2NrZGlyKHRtcF9wYXRoX2ZhY3Rv cnkpOgorICAgICIiIgorICAgIFJldHVybnMgdGhlIGRpcmVjdG9yeSBuYW1lIHRvIHVzZSBhcyB0 aGUgc2VydmVyJ3MgdW5peF9zb2NrZXRfZGlyZWN0b3JpZXMKKyAgICBzZXR0aW5nLiBMb2NhbCBj bGllbnQgY29ubmVjdGlvbnMgdXNlIHRoaXMgYXMgdGhlIFBHSE9TVC4KKworICAgIEF0IHRoZSBt b21lbnQsIHRoaXMgaXMgYWx3YXlzIHB1dCB1bmRlciB0aGUgcHl0ZXN0IHRlbXAgcm9vdC4KKyAg ICAiIiIKKyAgICByZXR1cm4gdG1wX3BhdGhfZmFjdG9yeS5ta3RlbXAoInNvY2tmaWxlcyIpCisK KworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiB3aW5wYXNzd29yZCgpOgor ICAgICIiIlRoZSBwZXItc2Vzc2lvbiBTQ1JBTSBwYXNzd29yZCBmb3IgdGhlIHNlcnZlciBhZG1p biBvbiBXaW5kb3dzLiIiIgorICAgIHJldHVybiBzZWNyZXRzLnRva2VuX3VybHNhZmUoMTYpCisK KworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBwZ19zZXJ2ZXJfZ2xvYmFs KGJpbmRpciwgZGF0YWRpciwgc29ja2Rpciwgd2lucGFzc3dvcmQsIGxpYnBxX2hhbmRsZSk6Cisg ICAgIiIiCisgICAgU3RhcnRzIGEgcnVubmluZyBQb3N0Z3JlcyBzZXJ2ZXIgbGlzdGVuaW5nIG9u IGxvY2FsaG9zdC4gVGhlIEhCQSBpbml0aWFsbHkKKyAgICBhbGxvd3Mgb25seSBsb2NhbCBVTklY IGNvbm5lY3Rpb25zIGZyb20gdGhlIHNhbWUgdXNlci4KKworICAgIFJldHVybnMgYSBQb3N0Z3Jl c1NlcnZlciBpbnN0YW5jZSB3aXRoIG1ldGhvZHMgZm9yIHNlcnZlciBtYW5hZ2VtZW50LCBjb25m aWd1cmF0aW9uLAorICAgIGFuZCBjcmVhdGluZyB0ZXN0IGRhdGFiYXNlcy91c2Vycy4KKyAgICAi IiIKKyAgICBzZXJ2ZXIgPSBQb3N0Z3Jlc1NlcnZlcihiaW5kaXIsIGRhdGFkaXIsIHNvY2tkaXIs IHdpbnBhc3N3b3JkLCBsaWJwcV9oYW5kbGUpCisKKyAgICB5aWVsZCBzZXJ2ZXIKKworICAgICMg Q2xlYW51cCBhbnkgdGVzdCByZXNvdXJjZXMKKyAgICBzZXJ2ZXIuY2xlYW51cCgpCisKKyAgICAj IFN0b3AgdGhlIHNlcnZlcgorICAgIHNlcnZlci5zdG9wKCkKKworCitAcHl0ZXN0LmZpeHR1cmUo c2NvcGU9Im1vZHVsZSIpCitkZWYgcGdfc2VydmVyX21vZHVsZShwZ19zZXJ2ZXJfZ2xvYmFsKToK KyAgICAiIiIKKyAgICBNb2R1bGUtc2NvcGVkIHNlcnZlciBjb250ZXh0LiBXaGljaCBjYW4gYmUg dXNlZnVsIHNvIHRoYXQgY2VydGFpbiBzZXR0aW5ncworICAgIGNhbiBiZSBvdmVycmlkZW4gYXQg dGhlIG1vZHVsZSBsZXZlbCB0aHJvdWdoIGF1dG91c2UgZml4dHVyZXMuIEFuIGV4YW1wbGUKKyAg ICBvZiB0aGlzIGlzIGluIHRoZSBTU0wgdGVzdHMuCisgICAgIiIiCisgICAgd2l0aCBwZ19zZXJ2 ZXJfZ2xvYmFsLnN1YmNvbnRleHQoKSBhcyBzOgorICAgICAgICB5aWVsZCBzCisKKworQHB5dGVz dC5maXh0dXJlCitkZWYgcGcocGdfc2VydmVyX21vZHVsZSwgcmVtYWluaW5nX3RpbWVvdXQpOgor ICAgICIiIgorICAgIFBlci10ZXN0IHNlcnZlciBjb250ZXh0LiBVc2UgdGhpcyBmaXh0dXJlIHRv IG1ha2UgY2hhbmdlcyB0byB0aGUgc2VydmVyCisgICAgd2hpY2ggd2lsbCBiZSByb2xsZWQgYmFj ayBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IChlLmcuLCBjcmVhdGluZyB0ZXN0CisgICAgdXNlcnMv ZGF0YWJhc2VzKS4KKyAgICAiIiIKKyAgICBwZ19zZXJ2ZXJfbW9kdWxlLnNldF90aW1lb3V0KHJl bWFpbmluZ190aW1lb3V0KQorICAgIHdpdGggcGdfc2VydmVyX21vZHVsZS5zdWJjb250ZXh0KCkg YXMgczoKKyAgICAgICAgeWllbGQgcworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGNvbm4ocGcp OgorICAgICIiIgorICAgIFJldHVybnMgYSBjb25uZWN0ZWQgUEdjb25uIGluc3RhbmNlIHRvIHRo ZSB0ZXN0IFBvc3RncmVTUUwgc2VydmVyLgorICAgIFRoZSBjb25uZWN0aW9uIGlzIGF1dG9tYXRp Y2FsbHkgY2xlYW5lZCB1cCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorCisgICAgRXhhbXBsZToK KyAgICAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKGNvbm4pOgorICAgICAgICAgICAgcmVzdWx0ID0g Y29ubi5zcWwoIlNFTEVDVCAxIikKKyAgICAgICAgICAgIGFzc2VydCByZXN1bHQgPT0gMQorICAg ICIiIgorICAgIHJldHVybiBwZy5jb25uZWN0KCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVz dC9weXBnL3NlcnZlci5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL3NlcnZlci5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDY2NzVjZGU5M2QKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkKQEAgLTAsMCArMSwzODcgQEAK KyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcworaW1wb3J0IHBh dGhsaWIKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MK K2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5h bWVkdHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgT3B0aW9uYWwKKworZnJvbSAu dXRpbCBpbXBvcnQgcnVuCitmcm9tIGxpYnBxIGltcG9ydCBQR2Nvbm4KKworCitjbGFzcyBGaWxl QmFja3VwKGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgIiIiCisgICAg QSBjb250ZXh0IG1hbmFnZXIgd2hpY2ggYmFja3MgdXAgYSBmaWxlJ3MgY29udGVudHMsIHJlc3Rv cmluZyB0aGVtIG9uIGV4aXQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmls ZTogcGF0aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICAgICAg c2VsZi5fZmlsZSA9IGZpbGUKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGlt cG9ydCBzaHV0aWwKKworICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgK KyAgICAgICAgICAgIHByZWZpeD1zZWxmLl9maWxlLm5hbWUsIGRpcj1zZWxmLl9maWxlLnBhcmVu dCwgZGVsZXRlPUZhbHNlCisgICAgICAgICkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuX2JhY2t1 cCA9IHBhdGhsaWIuUGF0aChmLm5hbWUpCisKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYu X2ZpbGUsIHNlbGYuX2JhY2t1cCkKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9f ZXhpdF9fKHNlbGYsICpleGMpOgorICAgICAgICBpbXBvcnQgc2h1dGlsCisKKyAgICAgICAgIyBT d2FwIHRoZSBiYWNrdXAgYW5kIHRoZSBvcmlnaW5hbCBmaWxlLCBzbyB0aGF0IHRoZSBtb2RpZmll ZCBjb250ZW50cworICAgICAgICAjIGNhbiBzdGlsbCBiZSBpbnNwZWN0ZWQgaW4gY2FzZSBvZiBm YWlsdXJlLgorICAgICAgICB0bXAgPSBzZWxmLl9iYWNrdXAucGFyZW50IC8gKHNlbGYuX2JhY2t1 cC5uYW1lICsgIi50bXAiKQorCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLl9maWxlLCB0 bXApCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLl9iYWNrdXAsIHNlbGYuX2ZpbGUpCisg ICAgICAgIHNodXRpbC5tb3ZlKHRtcCwgc2VsZi5fYmFja3VwKQorCisKK2NsYXNzIEhCQShGaWxl QmFja3VwKToKKyAgICAiIiIKKyAgICBCYWNrcyB1cCBhIHNlcnZlcidzIEhCQSBjb25maWd1cmF0 aW9uIGFuZCBwcm92aWRlcyBtZWFucyBmb3IgdGVtcG9yYXJpbHkKKyAgICBlZGl0aW5nIGl0Lgor ICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGFkaXI6IHBhdGhsaWIuUGF0aCk6 CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZGF0YWRpciAvICJwZ19oYmEuY29uZiIpCisKKyAg ICBkZWYgcHJlcGVuZChzZWxmLCAqbGluZXMpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVtcG9y YXJpbHkgcHJlcGVuZHMgbGluZXMgdG8gdGhlIHNlcnZlcidzIHBnX2hiYS5jb25mLgorCisgICAg ICAgIEFzIHN1Z2FyIGZvciBhbGlnbmluZyBIQkEgY29sdW1ucyBpbiB0aGUgdGVzdHMsIGVhY2gg bGluZSBjYW4gYmUgZWl0aGVyCisgICAgICAgIGEgc3RyaW5nIG9yIGEgbGlzdCBvZiBzdHJpbmdz LiBMaXN0IGVsZW1lbnRzIHdpbGwgYmUgam9pbmVkIGJ5IHNpbmdsZQorICAgICAgICBzcGFjZXMg YmVmb3JlIHRoZXkgYXJlIHdyaXR0ZW4gdG8gZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdp dGggb3BlbihzZWxmLl9maWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICBwcmlvcl9kYXRhID0g Zi5yZWFkKCkKKworICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgInciKSBhcyBmOgorICAg ICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5j ZShsaW5lLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoKmxpbmUsIGZpbGU9ZikK KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludChsaW5lLCBm aWxlPWYpCisKKyAgICAgICAgICAgIGYud3JpdGUocHJpb3JfZGF0YSkKKworCitjbGFzcyBDb25m aWcoRmlsZUJhY2t1cCk6CisgICAgIiIiCisgICAgQmFja3MgdXAgYSBzZXJ2ZXIncyBwb3N0Z3Jl c3FsLmNvbmYgYW5kIHByb3ZpZGVzIG1lYW5zIGZvciB0ZW1wb3JhcmlseQorICAgIGVkaXRpbmcg aXQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YWRpcjogcGF0aGxpYi5Q YXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhZGlyIC8gInBvc3RncmVzcWwuY29u ZiIpCisKKyAgICBkZWYgc2V0KHNlbGYsICoqZ3Vjcyk6CisgICAgICAgICIiIgorICAgICAgICBU ZW1wb3JhcmlseSBhcHBlbmRzIEdVQyBzZXR0aW5ncyB0byB0aGUgc2VydmVyJ3MgcG9zdGdyZXNx bC5jb25mLgorICAgICAgICAiIiIKKworICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgImEi KSBhcyBmOgorICAgICAgICAgICAgcHJpbnQoZmlsZT1mKQorCisgICAgICAgICAgICBmb3Igbiwg diBpbiBndWNzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgdiA9IHN0cih2KQorCisgICAgICAg ICAgICAgICAgIyBUT0RPOiBwcm9wZXIgcXVvdGluZworICAgICAgICAgICAgICAgIHYgPSB2LnJl cGxhY2UoIlxcIiwgIlxcXFwiKQorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIiciLCAi XFwnIikKKyAgICAgICAgICAgICAgICB2ID0gIid7fSciLmZvcm1hdCh2KQorCisgICAgICAgICAg ICAgICAgcHJpbnQobiwgIj0iLCB2LCBmaWxlPWYpCisKKworQmFja3VwID0gbmFtZWR0dXBsZSgi QmFja3VwIiwgImNvbmYsIGhiYSIpCisKKworY2xhc3MgUG9zdGdyZXNTZXJ2ZXI6CisgICAgIiIi CisgICAgUmVwcmVzZW50cyBhIHJ1bm5pbmcgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2Ugd2l0 aCBtYW5hZ2VtZW50IHV0aWxpdGllcy4KKyAgICBQcm92aWRlcyBtZXRob2RzIGZvciBjb25maWd1 cmF0aW9uLCB1c2VyL2RhdGFiYXNlIGNyZWF0aW9uLCBhbmQgc2VydmVyIGNvbnRyb2wuCisgICAg IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYmluZGlyLCBkYXRhZGlyLCBzb2NrZGlyLCB3 aW5wYXNzd29yZCwgbGlicHFfaGFuZGxlKToKKyAgICAgICAgIiIiCisgICAgICAgIEluaXRpYWxp emUgYW5kIHN0YXJ0IGEgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2UuCisgICAgICAgICIiIgor ICAgICAgICBzZWxmLmRhdGFkaXIgPSBkYXRhZGlyCisgICAgICAgIHNlbGYuc29ja2RpciA9IHNv Y2tkaXIKKyAgICAgICAgc2VsZi5saWJwcV9oYW5kbGUgPSBsaWJwcV9oYW5kbGUKKyAgICAgICAg c2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm46IE9wdGlvbmFsW0NhbGxhYmxlW1tdLCBmbG9hdF1d ID0gTm9uZQorICAgICAgICBzZWxmLl9iaW5kaXIgPSBiaW5kaXIKKyAgICAgICAgc2VsZi5fd2lu cGFzc3dvcmQgPSB3aW5wYXNzd29yZAorICAgICAgICBzZWxmLl9wZ19jdGwgPSBvcy5wYXRoLmpv aW4oYmluZGlyLCAicGdfY3RsIikKKyAgICAgICAgc2VsZi5fbG9nID0gb3MucGF0aC5qb2luKGRh dGFkaXIsICJwb3N0Z3Jlc3FsLmxvZyIpCisKKyAgICAgICAgaW5pdGRiID0gb3MucGF0aC5qb2lu KGJpbmRpciwgImluaXRkYiIpCisgICAgICAgIHBnX2N0bCA9IHNlbGYuX3BnX2N0bAorCisgICAg ICAgICMgTG9jayBkb3duIHRoZSBIQkEgYnkgZGVmYXVsdDsgdGVzdHMgY2FuIG9wZW4gaXQgYmFj ayB1cCBsYXRlci4KKyAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgor ICAgICAgICAgICAgIyBPbiBXaW5kb3dzLCBmb3IgYWRtaW4gY29ubmVjdGlvbnMsIHVzZSBTQ1JB TSB3aXRoIGEgZ2VuZXJhdGVkIHBhc3N3b3JkCisgICAgICAgICAgICAjIG92ZXIgbG9jYWwgc29j a2V0cy4gVGhpcyByZXF1aXJlcyBhZGRpdGlvbmFsIHdvcmsgZHVyaW5nIGluaXRkYi4KKyAgICAg ICAgICAgIG1ldGhvZCA9ICJzY3JhbS1zaGEtMjU2IgorCisgICAgICAgICAgICAjIE5hbWVkVGVt cG9yYXJ5RmlsZSBkb2Vzbid0IHdvcmsgdmVyeSBuaWNlbHkgb24gV2luZG93cyB1bnRpbCBQeXRo b24KKyAgICAgICAgICAgICMgMy4xMiwgd2hpY2ggaW50cm9kdWNlcyBOYW1lZFRlbXBvcmFyeUZp bGUoZGVsZXRlX29uX2Nsb3NlPUZhbHNlKS4KKyAgICAgICAgICAgICMgVW50aWwgdGhlbiwgc3Bl Y2lmeSBkZWxldGU9RmFsc2UgYW5kIG1hbnVhbGx5IHVubGluayBhZnRlciB1c2UuCisgICAgICAg ICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIGRlbGV0ZT1GYWxzZSkg YXMgcHdmaWxlOgorICAgICAgICAgICAgICAgIHB3ZmlsZS53cml0ZSh3aW5wYXNzd29yZCkKKwor ICAgICAgICAgICAgcnVuKGluaXRkYiwgIi0tYXV0aD1zY3JhbS1zaGEtMjU2IiwgIi0tcHdmaWxl IiwgcHdmaWxlLm5hbWUsIGRhdGFkaXIpCisgICAgICAgICAgICBvcy51bmxpbmsocHdmaWxlLm5h bWUpCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRm9yIG90aGVyIE9TZXMgd2UgY2Fu IGp1c3QgdXNlIHBlZXIgYXV0aC4KKyAgICAgICAgICAgIG1ldGhvZCA9ICJwZWVyIgorICAgICAg ICAgICAgcnVuKHBnX2N0bCwgIi1EIiwgZGF0YWRpciwgImluaXQiKQorCisgICAgICAgIHdpdGgg b3BlbihkYXRhZGlyIC8gInBnX2hiYS5jb25mIiwgInciKSBhcyBmOgorICAgICAgICAgICAgcHJp bnQoZiIjIGRlZmF1bHQ6IGxvY2FsIHttZXRob2R9IGNvbm5lY3Rpb25zIG9ubHkiLCBmaWxlPWYp CisgICAgICAgICAgICBwcmludChmImxvY2FsIGFsbCBhbGwge21ldGhvZH0iLCBmaWxlPWYpCisK KyAgICAgICAgIyBGaWd1cmUgb3V0IGEgcG9ydCB0byBsaXN0ZW4gb24uIEF0dGVtcHQgdG8gcmVz ZXJ2ZSBib3RoIElQdjQgYW5kIElQdjYKKyAgICAgICAgIyBhZGRyZXNzZXMgaW4gb25lIGdvLgor ICAgICAgICAjCisgICAgICAgICMgTm90ZTogc29ja2V0Lmhhc19kdWFsc3RhY2tfaXB2Ni9jcmVh dGVfc2VydmVyIGFyZSBvbmx5IGluIFB5dGhvbiAzLjgrLgorICAgICAgICBpZiBoYXNhdHRyKHNv Y2tldCwgImhhc19kdWFsc3RhY2tfaXB2NiIpIGFuZCBzb2NrZXQuaGFzX2R1YWxzdGFja19pcHY2 KCk6CisgICAgICAgICAgICBhZGRyID0gKCI6OjEiLCAwKQorICAgICAgICAgICAgcyA9IHNvY2tl dC5jcmVhdGVfc2VydmVyKGFkZHIsIGZhbWlseT1zb2NrZXQuQUZfSU5FVDYsIGR1YWxzdGFja19p cHY2PVRydWUpCisKKyAgICAgICAgICAgIGhvc3RhZGRyLCBwb3J0LCBfLCBfID0gcy5nZXRzb2Nr bmFtZSgpCisgICAgICAgICAgICBhZGRycyA9IFtob3N0YWRkciwgIjEyNy4wLjAuMSJdCisKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDApCisKKyAgICAg ICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgICAgIHMuYmluZChhZGRyKQorCisg ICAgICAgICAgICBob3N0YWRkciwgcG9ydCA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICAgICAg YWRkcnMgPSBbaG9zdGFkZHJdCisKKyAgICAgICAgbG9nID0gc2VsZi5fbG9nCisKKyAgICAgICAg d2l0aCBzLCBvcGVuKG9zLnBhdGguam9pbihkYXRhZGlyLCAicG9zdGdyZXNxbC5jb25mIiksICJh IikgYXMgZjoKKyAgICAgICAgICAgIHByaW50KGZpbGU9ZikKKyAgICAgICAgICAgIHByaW50KCJ1 bml4X3NvY2tldF9kaXJlY3RvcmllcyA9ICd7fSciLmZvcm1hdChzb2NrZGlyLmFzX3Bvc2l4KCkp LCBmaWxlPWYpCisgICAgICAgICAgICBwcmludCgibGlzdGVuX2FkZHJlc3NlcyA9ICd7fSciLmZv cm1hdCgiLCIuam9pbihhZGRycykpLCBmaWxlPWYpCisgICAgICAgICAgICBwcmludCgicG9ydCA9 IiwgcG9ydCwgZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQoImxvZ19jb25uZWN0aW9ucyA9IGFs bCIsIGZpbGU9ZikKKworICAgICAgICAjIEJldHdlZW4gY2xvc2luZyBvZiB0aGUgc29ja2V0LCBz LCBhbmQgc2VydmVyIHN0YXJ0LCB3ZSdyZSByYWNpbmcgYWdhaW5zdAorICAgICAgICAjIGFueXRo aW5nIHRoYXQgd2FudHMgdG8gb3BlbiB1cCBlcGhlbWVyYWwgcG9ydHMsIHNvIHRyeSBub3QgdG8g cHV0IGFueSBuZXcKKyAgICAgICAgIyB3b3JrIGhlcmUuCisKKyAgICAgICAgcnVuKHBnX2N0bCwg Ii1EIiwgZGF0YWRpciwgIi1sIiwgbG9nLCAic3RhcnQiKQorCisgICAgICAgICMgUmVhZCB0aGUg UElEIGZpbGUgdG8gZ2V0IHRoZSBwb3N0bWFzdGVyIFBJRAorICAgICAgICB3aXRoIG9wZW4ob3Mu cGF0aC5qb2luKGRhdGFkaXIsICJwb3N0bWFzdGVyLnBpZCIpKSBhcyBmOgorICAgICAgICAgICAg cGlkID0gaW50KGYucmVhZGxpbmUoKS5zdHJpcCgpKQorCisgICAgICAgICMgU3RvcmUgdGhlIGNv bXB1dGVkIHZhbHVlcworICAgICAgICBzZWxmLmhvc3RhZGRyID0gaG9zdGFkZHIKKyAgICAgICAg c2VsZi5wb3J0ID0gcG9ydAorICAgICAgICBzZWxmLnBpZCA9IHBpZAorCisgICAgICAgICMgRXhp dFN0YWNrIGZvciBjbGVhbnVwIGNhbGxiYWNrcworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNr ID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQorCisgICAgZGVmIHBzcWwoc2VsZiwgKmFyZ3MpOgor ICAgICAgICAiIiJSdW4gcHNxbCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuIiIiCisgICAgICAg IGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJXaW5kb3dzIjoKKyAgICAgICAgICAgIHB3ID0gZGlj dChQR1BBU1NXT1JEPXNlbGYuX3dpbnBhc3N3b3JkKQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgcHcgPSBOb25lCisgICAgICAgIHNlbGYuX3J1bihvcy5wYXRoLmpvaW4oc2VsZi5fYmluZGly LCAicHNxbCIpLCAiLXciLCAqYXJncywgYWRkZW52PXB3KQorCisgICAgZGVmIHBnX2N0bChzZWxm LCAqYXJncyk6CisgICAgICAgICIiIlJ1biBwZ19jdGwgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRz LiIiIgorICAgICAgICBzZWxmLl9ydW4oc2VsZi5fcGdfY3RsLCAiLWwiLCBzZWxmLl9sb2csICph cmdzKQorCisgICAgZGVmIF9ydW4oc2VsZiwgY21kLCAqYXJncywgYWRkZW52OiBPcHRpb25hbFtk aWN0XSA9IE5vbmUpOgorICAgICAgICAiIiJSdW4gYSBjb21tYW5kIHdpdGggUEcqIGVudmlyb25t ZW50IHZhcmlhYmxlcyBzZXQuIiIiCisgICAgICAgIHN1YmVudiA9IGRpY3Qob3MuZW52aXJvbikK KyAgICAgICAgc3ViZW52LnVwZGF0ZSgKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi UEdIT1NUIjogc3RyKHNlbGYuc29ja2RpciksCisgICAgICAgICAgICAgICAgIlBHUE9SVCI6IHN0 cihzZWxmLnBvcnQpLAorICAgICAgICAgICAgICAgICJQR0RBVEFCQVNFIjogInBvc3RncmVzIiwK KyAgICAgICAgICAgICAgICAiUEdEQVRBIjogc3RyKHNlbGYuZGF0YWRpciksCisgICAgICAgICAg ICB9CisgICAgICAgICkKKyAgICAgICAgaWYgYWRkZW52OgorICAgICAgICAgICAgc3ViZW52LnVw ZGF0ZShhZGRlbnYpCisgICAgICAgIHJ1bihjbWQsICphcmdzLCBlbnY9c3ViZW52KQorCisgICAg ZGVmIGNyZWF0ZV91c2VycyhzZWxmLCAqdXNlcmtleXM6IHN0cik6CisgICAgICAgICIiIkNyZWF0 ZSB0ZXN0IHVzZXJzIGFuZCByZWdpc3RlciB0aGVtIGZvciBjbGVhbnVwLiIiIgorICAgICAgICB1 c2VybWFwID0ge30KKyAgICAgICAgZm9yIHUgaW4gdXNlcmtleXM6CisgICAgICAgICAgICBuYW1l ID0gdSArICJ1c2VyIgorICAgICAgICAgICAgdXNlcm1hcFt1XSA9IG5hbWUKKyAgICAgICAgICAg IHNlbGYucHNxbCgiLWMiLCAiQ1JFQVRFIFVTRVIgIiArIG5hbWUpCisgICAgICAgICAgICBzZWxm Ll9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNlbGYucHNxbCwgIi1jIiwgIkRST1AgVVNFUiAiICsg bmFtZSkKKyAgICAgICAgcmV0dXJuIHVzZXJtYXAKKworICAgIGRlZiBjcmVhdGVfZGJzKHNlbGYs ICpkYmtleXM6IHN0cik6CisgICAgICAgICIiIkNyZWF0ZSB0ZXN0IGRhdGFiYXNlcyBhbmQgcmVn aXN0ZXIgdGhlbSBmb3IgY2xlYW51cC4iIiIKKyAgICAgICAgZGJtYXAgPSB7fQorICAgICAgICBm b3IgZCBpbiBkYmtleXM6CisgICAgICAgICAgICBuYW1lID0gZCArICJkYiIKKyAgICAgICAgICAg IGRibWFwW2RdID0gbmFtZQorICAgICAgICAgICAgc2VsZi5wc3FsKCItYyIsICJDUkVBVEUgREFU QUJBU0UgIiArIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNr KHNlbGYucHNxbCwgIi1jIiwgIkRST1AgREFUQUJBU0UgIiArIG5hbWUpCisgICAgICAgIHJldHVy biBkYm1hcAorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgcmVsb2Fk aW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvdmlkZXMgYSBjb250ZXh0IG1hbmFn ZXIgZm9yIG1ha2luZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisKKyAgICAgICAgSWYgdGhlIGNv bnRleHQgc3VpdGUgZmluaXNoZXMgc3VjY2Vzc2Z1bGx5LCB0aGUgY29uZmlndXJhdGlvbiB3aWxs CisgICAgICAgIGJlIHJlbG9hZGVkIHZpYSBwZ19jdGwuIE9uIHRlYXJkb3duLCB0aGUgY29uZmln dXJhdGlvbiBjaGFuZ2VzIHdpbGwKKyAgICAgICAgYmUgdW53b3VuZCwgYW5kIHRoZSBzZXJ2ZXIg d2lsbCBiZSBzaWduYWxlZCB0byByZWxvYWQgYWdhaW4uCisKKyAgICAgICAgVGhlIGNvbnRleHQg dGFyZ2V0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAg ICAgICAgdXNlZCB0byBjb25maWd1cmUgdGhlIHNlcnZlcjoKKyAgICAgICAgLSAuY29uZjogbW9k aWZpZXMgcG9zdGdyZXNxbC5jb25mCisgICAgICAgIC0gLmhiYTogbW9kaWZpZXMgcGdfaGJhLmNv bmYKKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgd2l0aCBwZ19zZXJ2ZXJf c2Vzc2lvbi5yZWxvYWRpbmcoKSBhcyBzOgorICAgICAgICAgICAgICAgIHMuY29uZi5zZXQobG9n X2Nvbm5lY3Rpb25zPSJvbiIpCisgICAgICAgICAgICAgICAgcy5oYmEucHJlcGVuZCgibG9jYWwg YWxsIGFsbCB0cnVzdCIpCisgICAgICAgICIiIgorICAgICAgICAjIFB1c2ggYSByZWxvYWQgb250 byB0aGUgc3RhY2sgYmVmb3JlIG1ha2luZyBhbnkgb3RoZXIKKyAgICAgICAgIyB1bndpbmRhYmxl IGNoYW5nZXMuIFRoYXQgd2F5IHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIHdpbGwgYmUKKyAgICAg ICAgIworICAgICAgICAjICAjIHRlc3QKKyAgICAgICAgIyAgIC0gY29uZmlnIGNoYW5nZSAxCisg ICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMgorICAgICAgICAjICAgLSByZWxvYWQKKyAgICAg ICAgIyAgIyB0ZWFyZG93bgorICAgICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMgorICAg ICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMQorICAgICAgICAjICAgLSByZWxvYWQKKyAg ICAgICAgIworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNlbGYucGdfY3Rs LCAicmVsb2FkIikKKyAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZpZ3VyYXRpb24oKQor CisgICAgICAgICMgTm93IGFjdHVhbGx5IHJlbG9hZAorICAgICAgICBzZWxmLnBnX2N0bCgicmVs b2FkIikKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHJlc3RhcnRp bmcoc2VsZik6CisgICAgICAgICIiIkxpa2UgLnJlbG9hZGluZygpLCBidXQgd2l0aCBhIGZ1bGwg c2VydmVyIHJlc3RhcnQuIiIiCisgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2suY2FsbGJhY2so c2VsZi5wZ19jdGwsICJyZXN0YXJ0IikKKyAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZp Z3VyYXRpb24oKQorICAgICAgICBzZWxmLnBnX2N0bCgicmVzdGFydCIpCisKKyAgICBkZWYgX2Jh Y2t1cF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICAjIFdyYXAgdGhlIGV4aXN0aW5nIEhC QSBhbmQgY29uZmlndXJhdGlvbiB3aXRoIEZpbGVCYWNrdXBzLgorICAgICAgICByZXR1cm4gQmFj a3VwKAorICAgICAgICAgICAgaGJhPXNlbGYuX2NsZWFudXBfc3RhY2suZW50ZXJfY29udGV4dChI QkEoc2VsZi5kYXRhZGlyKSksCisgICAgICAgICAgICBjb25mPXNlbGYuX2NsZWFudXBfc3RhY2su ZW50ZXJfY29udGV4dChDb25maWcoc2VsZi5kYXRhZGlyKSksCisgICAgICAgICkKKworICAgIEBj b250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHN1YmNvbnRleHQoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBDcmVhdGUgYSBuZXcgY2xlYW51cCBjb250ZXh0IGZvciBwZXItdGVz dCBpc29sYXRpb24uCisKKyAgICAgICAgVGVtcG9yYXJpbHkgcmVwbGFjZXMgdGhlIGNsZWFudXAg c3RhY2sgc28gdGhhdCBhbnkgY2xlYW51cCBjYWxsYmFja3MKKyAgICAgICAgcmVnaXN0ZXJlZCB3 aXRoaW4gdGhpcyBjb250ZXh0IHdpbGwgYmUgY2xlYW5lZCB1cCB3aGVuIHRoZSBjb250ZXh0IGV4 aXRzLgorICAgICAgICAiIiIKKyAgICAgICAgb2xkX3N0YWNrID0gc2VsZi5fY2xlYW51cF9zdGFj aworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLl9fZW50ZXJfXygp CisgICAgICAgICAgICB5aWVsZCBzZWxmCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz ZWxmLl9jbGVhbnVwX3N0YWNrLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAg ICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gb2xkX3N0YWNrCisKKyAgICBkZWYgc3RvcChzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIFN0b3AgdGhlIFBvc3RncmVTUUwgc2VydmVyIGluc3RhbmNl LgorCisgICAgICAgIElnbm9yZXMgZmFpbHVyZXMgaWYgdGhlIHNlcnZlciBpcyBhbHJlYWR5IHN0 b3BwZWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBydW4oc2VsZi5f cGdfY3RsLCAiLUQiLCBzZWxmLmRhdGFkaXIsICItbCIsIHNlbGYuX2xvZywgInN0b3AiKQorICAg ICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAj IFNlcnZlciBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gc3RvcHBlZAorICAgICAgICAgICAgcGFzcwor CisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgICIiIlJ1biBhbGwgcmVnaXN0ZXJlZCBj bGVhbnVwIGNhbGxiYWNrcy4iIiIKKyAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjay5jbG9zZSgp CisKKyAgICBkZWYgc2V0X3RpbWVvdXQoc2VsZiwgcmVtYWluaW5nX3RpbWVvdXRfZm46IENhbGxh YmxlW1tdLCBmbG9hdF0pIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZXQgdGhlIHRp bWVvdXQgZnVuY3Rpb24gZm9yIGNvbm5lY3Rpb25zLgorICAgICAgICBUaGlzIGlzIHR5cGljYWxs eSBjYWxsZWQgYnkgcGcgZml4dHVyZSBmb3IgZWFjaCB0ZXN0LgorICAgICAgICAiIiIKKyAgICAg ICAgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm4gPSByZW1haW5pbmdfdGltZW91dF9mbgorCisg ICAgZGVmIGNvbm5lY3Qoc2VsZiwgKipvcHRzKSAtPiBQR2Nvbm46CisgICAgICAgICIiIgorICAg ICAgICBDcmVhdGVzIGEgY29ubmVjdGlvbiB0byB0aGlzIFBvc3RncmVTUUwgc2VydmVyIGluc3Rh bmNlLgorCisgICAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBhdXRvbWF0 aWNhbGx5IGZpbGxzIGluIHRoZSBob3N0LCBwb3J0LAorICAgICAgICBhbmQgZGJuYW1lIChkZWZh dWx0aW5nIHRvICdwb3N0Z3JlcycpIGZvciBjb25uZWN0aW5nIHRvIHRoaXMgc2VydmVyLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBzdGFjazogRXhpdFN0YWNrIGZvciBtYW5hZ2luZyBj b25uZWN0aW9uIGNsZWFudXAgKHVzZXMgaW50ZXJuYWwgc3RhY2sgaWYgbm90IHByb3ZpZGVkKQor ICAgICAgICAgICAgcmVtYWluaW5nX3RpbWVvdXRfZm46IEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBy ZW1haW5pbmcgdGltZW91dCAodXNlcyBzdG9yZWQgdGltZW91dCBpZiBub3QgcHJvdmlkZWQpCisg ICAgICAgICAgICAqKm9wdHM6IEFkZGl0aW9uYWwgY29ubmVjdGlvbiBvcHRpb25zIChjYW4gb3Zl cnJpZGUgZGVmYXVsdHMpCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFBHY29ubjog Q29ubmVjdGVkIGRhdGFiYXNlIGNvbm5lY3Rpb24KKworICAgICAgICBFeGFtcGxlOgorICAgICAg ICAgICAgY29ubiA9IHBnLmNvbm5lY3QoKQorICAgICAgICAgICAgY29ubiA9IHBnLmNvbm5lY3Qo ZGJuYW1lPSdteWRiJykKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gbGlicHEgaW1wb3J0IGNv bm5lY3QgYXMgbGlicHFfY29ubmVjdAorCisgICAgICAgICMgU2V0IGRlZmF1bHQgY29ubmVjdGlv biBvcHRpb25zIGZvciB0aGlzIHNlcnZlcgorICAgICAgICBkZWZhdWx0cyA9IHsKKyAgICAgICAg ICAgICJob3N0Ijogc3RyKHNlbGYuc29ja2RpciksCisgICAgICAgICAgICAicG9ydCI6IHNlbGYu cG9ydCwKKyAgICAgICAgICAgICJkYm5hbWUiOiAicG9zdGdyZXMiLAorICAgICAgICB9CisKKyAg ICAgICAgIyBNZXJnZSB3aXRoIHVzZXItcHJvdmlkZWQgb3B0aW9ucyAodXNlciBvcHRpb25zIHRh a2UgcHJlY2VkZW5jZSkKKyAgICAgICAgZGVmYXVsdHMudXBkYXRlKG9wdHMpCisKKyAgICAgICAg aWYgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNl IFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAiVGltZW91dCBmdW5jdGlvbiBub3Qgc2V0 LiBVc2Ugc2V0X3RpbWVvdXQoKSBvciBwZyBmaXh0dXJlLiIKKyAgICAgICAgICAgICkKKworICAg ICAgICByZXR1cm4gbGlicHFfY29ubmVjdCgKKyAgICAgICAgICAgIHNlbGYubGlicHFfaGFuZGxl LAorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjaywKKyAgICAgICAgICAgIHNlbGYuX3Jl bWFpbmluZ190aW1lb3V0X2ZuLAorICAgICAgICAgICAgKipkZWZhdWx0cywKKyAgICAgICAgKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5weSBiL3NyYy90ZXN0L3B5dGVz dC9weXBnL3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIy YTFlNjI3ZTRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5w eQpAQCAtMCwwICsxLDQyIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IHNobGV4CitpbXBvcnQgc3VicHJvY2Vzcwor aW1wb3J0IHN5cworCisKK2RlZiBlcHJpbnQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAiIiJlcHJp bnQgcHJpbnRzIHRvIHN0ZGVyciIiIgorICAgIHByaW50KCphcmdzLCBmaWxlPXN5cy5zdGRlcnIs ICoqa3dhcmdzKQorCisKK2RlZiBydW4oKmNvbW1hbmQsIGNoZWNrPVRydWUsIHNoZWxsPU5vbmUs IHNpbGVudD1GYWxzZSwgKiprd2FyZ3MpOgorICAgICIiInJ1biBydW5zIHRoZSBnaXZlbiBjb21t YW5kIGFuZCBwcmludHMgaXQgdG8gc3RkZXJyIiIiCisKKyAgICBpZiBzaGVsbCBpcyBOb25lOgor ICAgICAgICBzaGVsbCA9IGxlbihjb21tYW5kKSA9PSAxIGFuZCBpc2luc3RhbmNlKGNvbW1hbmRb MF0sIHN0cikKKworICAgIGlmIHNoZWxsOgorICAgICAgICBjb21tYW5kID0gY29tbWFuZFswXQor ICAgIGVsc2U6CisgICAgICAgIGNvbW1hbmQgPSBsaXN0KG1hcChzdHIsIGNvbW1hbmQpKQorCisg ICAgaWYgbm90IHNpbGVudDoKKyAgICAgICAgaWYgc2hlbGw6CisgICAgICAgICAgICBlcHJpbnQo ZiIrIHtjb21tYW5kfSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdlIGNvdWxkIG5v cm1hbGx5IHVzZSBzaGxleC5qb2luIGhlcmUsIGJ1dCBpdCdzIG5vdCBhdmFpbGFibGUgaW4KKyAg ICAgICAgICAgICMgUHl0aG9uIDMuNiB3aGljaCB3ZSBzdGlsbCBsaWtlIHRvIHN1cHBvcnQKKyAg ICAgICAgICAgIHVuc2FmZV9zdHJpbmdfY21kID0gIiAiLmpvaW4obWFwKHNobGV4LnF1b3RlLCBj b21tYW5kKSkKKyAgICAgICAgICAgIGVwcmludChmIisge3Vuc2FmZV9zdHJpbmdfY21kfSIpCisK KyAgICBpZiBzaWxlbnQ6CisgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCJzdGRvdXQiLCBzdWJw cm9jZXNzLkRFVk5VTEwpCisKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oY29tbWFuZCwgY2hl Y2s9Y2hlY2ssIHNoZWxsPXNoZWxsLCAqKmt3YXJncykKKworCitkZWYgY2FwdHVyZShjb21tYW5k LCAqYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgZW5jb2Rpbmc9InV0Zi04IiwgKiprd2Fy Z3MpOgorICAgIHJldHVybiBydW4oCisgICAgICAgIGNvbW1hbmQsICphcmdzLCBzdGRvdXQ9c3Rk b3V0LCBlbmNvZGluZz1lbmNvZGluZywgKiprd2FyZ3MKKyAgICApLnN0ZG91dC5yZW1vdmVzdWZm aXgoIlxuIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkgYi9z cmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5CmluZGV4IGVjYjcyYmUyNmQ3Li42NDFhZjBi YmFjNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weQorKysgYi9z cmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5CkBAIC0xLDMgKzEsNCBAQAogIyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKLWZyb20g cGcuZml4dHVyZXMgaW1wb3J0ICoKKworZnJvbSBweXBnLmZpeHR1cmVzIGltcG9ydCAqCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkgYi9zcmMvdGVzdC9weXRl c3QvcHl0L3Rlc3RfbGlicHEucHkKaW5kZXggOWYwODU3Y2M2MTIuLjRmY2Y0MDU2ZjQxIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKKysrIGIvc3JjL3Rlc3Qv cHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5CkBAIC05LDYgKzksOCBAQCBmcm9tIHR5cGluZyBpbXBv cnQgQ2FsbGFibGUKIAogaW1wb3J0IHB5dGVzdAogCitmcm9tIGxpYnBxIGltcG9ydCBjb25uc3Ry LCBMaWJwcUVycm9yCisKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAogICAgICJvcHRzLCBl eHBlY3RlZCIsCkBAIC0yMiwxNSArMjQsMTUgQEAgaW1wb3J0IHB5dGVzdAogICAgICAgICAoZGlj dChrZXl3b3JkPSIgXFwnICIpLCByImtleXdvcmQ9JyBcXFwnICciKSwKICAgICBdLAogKQotZGVm IHRlc3RfY29ubnN0cihsaWJwcSwgb3B0cywgZXhwZWN0ZWQpOgotICAgICIiIlRlc3RzIHRoZSBl c2NhcGUgYmVoYXZpb3IgZm9yIGxpYnBxLl9jb25uc3RyKCkuIiIiCi0gICAgYXNzZXJ0IGxpYnBx Ll9jb25uc3RyKG9wdHMpID09IGV4cGVjdGVkCitkZWYgdGVzdF9jb25uc3RyKG9wdHMsIGV4cGVj dGVkKToKKyAgICAiIiJUZXN0cyB0aGUgZXNjYXBlIGJlaGF2aW9yIGZvciBjb25uc3RyKCkuIiIi CisgICAgYXNzZXJ0IGNvbm5zdHIob3B0cykgPT0gZXhwZWN0ZWQKIAogCi1kZWYgdGVzdF9tdXN0 X2Nvbm5lY3RfZXJyb3JzKGxpYnBxKToKLSAgICAiIiJUZXN0cyB0aGF0IG11c3RfY29ubmVjdCgp IHJhaXNlcyBsaWJwcS5FcnJvci4iIiIKLSAgICB3aXRoIHB5dGVzdC5yYWlzZXMobGlicHEuRXJy b3IsIG1hdGNoPSJpbnZhbGlkIGNvbm5lY3Rpb24gb3B0aW9uIik6Ci0gICAgICAgIGxpYnBxLm11 c3RfY29ubmVjdChzb21lX3Vua25vd25fa2V5d29yZD0id2hhdGV2ZXIiKQorZGVmIHRlc3RfbXVz dF9jb25uZWN0X2Vycm9ycyhjb25uZWN0KToKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QoKSBy YWlzZXMgTGlicHFFcnJvci4iIiIKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTGlicHFFcnJvciwg bWF0Y2g9ImludmFsaWQgY29ubmVjdGlvbiBvcHRpb24iKToKKyAgICAgICAgY29ubmVjdChzb21l X3Vua25vd25fa2V5d29yZD0id2hhdGV2ZXIiKQogCiAKIEBweXRlc3QuZml4dHVyZQpAQCAtMTQ1 LDcgKzE0Nyw3IEBAIGRlZiBsb2NhbF9zZXJ2ZXIodG1wX3BhdGgsIHJlbWFpbmluZ190aW1lb3V0 KToKICAgICAgICAgeWllbGQgcwogCiAKLWRlZiB0ZXN0X2Nvbm5lY3Rpb25faXNfZmluaXNoZWRf b25fZXJyb3IobGlicHEsIGxvY2FsX3NlcnZlciwgcmVtYWluaW5nX3RpbWVvdXQpOgorZGVmIHRl c3RfY29ubmVjdGlvbl9pc19maW5pc2hlZF9vbl9lcnJvcihjb25uZWN0LCBsb2NhbF9zZXJ2ZXIp OgogICAgICIiIlRlc3RzIHRoYXQgUFFmaW5pc2goKSBnZXRzIGNhbGxlZCBhdCB0aGUgZW5kIG9m IHRlc3RpbmcuIiIiCiAgICAgZXhwZWN0ZWRfZXJyb3IgPSAic29tZXRoaW5nIGlzIHdyb25nIgog CkBAIC0xNjUsNyArMTY3LDYgQEAgZGVmIHRlc3RfY29ubmVjdGlvbl9pc19maW5pc2hlZF9vbl9l cnJvcihsaWJwcSwgbG9jYWxfc2VydmVyLCByZW1haW5pbmdfdGltZW91dCkKIAogICAgIGxvY2Fs X3NlcnZlci5iYWNrZ3JvdW5kKHNlcnZlX2Vycm9yKQogCi0gICAgd2l0aCBweXRlc3QucmFpc2Vz KGxpYnBxLkVycm9yLCBtYXRjaD1leHBlY3RlZF9lcnJvcik6CisgICAgd2l0aCBweXRlc3QucmFp c2VzKExpYnBxRXJyb3IsIG1hdGNoPWV4cGVjdGVkX2Vycm9yKToKICAgICAgICAgIyBFeGl0aW5n IHRoaXMgY29udGV4dCBzaG91bGQgcmVzdWx0IGluIFBRZmluaXNoKCkuCi0gICAgICAgIHdpdGgg bGlicHE6Ci0gICAgICAgICAgICBsaWJwcS5tdXN0X2Nvbm5lY3QoaG9zdD1sb2NhbF9zZXJ2ZXIu aG9zdCwgcG9ydD1sb2NhbF9zZXJ2ZXIucG9ydCkKKyAgICAgICAgY29ubmVjdChob3N0PWxvY2Fs X3NlcnZlci5ob3N0LCBwb3J0PWxvY2FsX3NlcnZlci5wb3J0KQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcHl0ZXN0L3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0 L3Rlc3RfcXVlcnlfaGVscGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNWE1YTFhZTFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHl0 L3Rlc3RfcXVlcnlfaGVscGVycy5weQpAQCAtMCwwICsxLDI4NiBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorVGVzdHMg Zm9yIHF1ZXJ5IGhlbHBlciBmdW5jdGlvbnMgd2l0aCB0eXBlIGNvbnZlcnNpb24gYW5kIHJlc3Vs dCBzaW1wbGlmaWNhdGlvbi4KKyIiIgorCitpbXBvcnQgcHl0ZXN0CisKKworZGVmIHRlc3Rfc2lu Z2xlX2NlbGxfaW50KGNvbm4pOgorICAgICIiIlNpbmdsZSBjZWxsIGludGVnZXIgcXVlcnkgcmV0 dXJucyBqdXN0IHRoZSB2YWx1ZS4iIiIKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEi KQorICAgIGFzc2VydCByZXN1bHQgPT0gMQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg aW50KQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jZWxsX3N0cmluZyhjb25uKToKKyAgICAiIiJTaW5n bGUgY2VsbCBzdHJpbmcgcXVlcnkgcmV0dXJucyBqdXN0IHRoZSB2YWx1ZS4iIiIKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgiU0VMRUNUICdoZWxsbyciKQorICAgIGFzc2VydCByZXN1bHQgPT0gImhl bGxvIgorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgc3RyKQorCisKK2RlZiB0ZXN0X3Np bmdsZV9jZWxsX2Jvb2woY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgYm9vbGVhbiBxdWVyeSBy ZXR1cm5zIGp1c3QgdGhlIHZhbHVlLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVD VCB0cnVlIikKKyAgICBhc3NlcnQgcmVzdWx0IGlzIFRydWUKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHQsIGJvb2wpCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIGZhbHNlIikK KyAgICBhc3NlcnQgcmVzdWx0IGlzIEZhbHNlCisKKworZGVmIHRlc3Rfc2luZ2xlX2NlbGxfZmxv YXQoY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgZmxvYXQgcXVlcnkgcmV0dXJucyBqdXN0IHRo ZSB2YWx1ZS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMy4xNDo6ZmxvYXQ0 IikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGZsb2F0KQorICAgIGFzc2VydCBhYnMo cmVzdWx0IC0gMy4xNCkgPCAwLjAxCisKKworZGVmIHRlc3Rfc2luZ2xlX2NlbGxfbnVsbChjb25u KToKKyAgICAiIiJTaW5nbGUgY2VsbCBOVUxMIHF1ZXJ5IHJldHVybnMgTm9uZS4iIiIKKworICAg IHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgTlVMTCIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBO b25lCisKKworZGVmIHRlc3Rfc2luZ2xlX3Jvd19tdWx0aXBsZV9jb2x1bW5zKGNvbm4pOgorICAg ICIiIlNpbmdsZSByb3cgd2l0aCBtdWx0aXBsZSBjb2x1bW5zIHJldHVybnMgYSB0dXBsZS4iIiIK KworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSwgJ2hlbGxvJywgdHJ1ZSIpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSAoMSwgImhlbGxvIiwgVHJ1ZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHQsIHR1cGxlKQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jb2x1bW5fbXVsdGlwbGVfcm93 cyhjb25uKToKKyAgICAiIiJTaW5nbGUgY29sdW1uIHdpdGggbXVsdGlwbGUgcm93cyByZXR1cm5z IGEgbGlzdCBvZiB2YWx1ZXMuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUICog RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykiKQorICAgIGFzc2VydCByZXN1bHQgPT0gWzEsIDIs IDNdCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBsaXN0KQorCisKK2RlZiB0ZXN0X211 bHRpcGxlX3Jvd3NfYW5kX2NvbHVtbnMoY29ubik6CisgICAgIiIiTXVsdGlwbGUgcm93cyBhbmQg Y29sdW1ucyByZXR1cm5zIGxpc3Qgb2YgdHVwbGVzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5z cWwoIlNFTEVDVCAqIEZST00gKFZBTFVFUyAoMSwgJ2EnKSwgKDIsICdiJyksICgzLCAnYycpKSBB UyB0IikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFsoMSwgImEiKSwgKDIsICJiIiksICgzLCAiYyIp XQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlz aW5zdGFuY2Uocm93LCB0dXBsZSkgZm9yIHJvdyBpbiByZXN1bHQpCisKKworZGVmIHRlc3RfZW1w dHlfcmVzdWx0KGNvbm4pOgorICAgICIiIkVtcHR5IHJlc3VsdCBzZXQgcmV0dXJucyBlbXB0eSBs aXN0LiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAxIFdIRVJFIGZhbHNlIikK KyAgICBhc3NlcnQgcmVzdWx0ID09IFtdCisKKworZGVmIHRlc3RfcXVlcnlfZXJyb3JfaGFuZGxp bmcoY29ubik6CisgICAgIiIiUXVlcnkgZXJyb3JzIHJhaXNlIFJ1bnRpbWVFcnJvciB3aXRoIGFj dHVhbCBlcnJvciBtZXNzYWdlLiIiIgorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFJ1bnRpbWVF cnJvcikgYXMgZXhjX2luZm86CisgICAgICAgIGNvbm4uc3FsKCJTRUxFQ1QgKiBGUk9NIG5vbmV4 aXN0ZW50X3RhYmxlIikKKworICAgIGVycm9yX21zZyA9IHN0cihleGNfaW5mby52YWx1ZSkKKyAg ICBhc3NlcnQgIm5vbmV4aXN0ZW50X3RhYmxlIiBpbiBlcnJvcl9tc2cgb3IgImRvZXMgbm90IGV4 aXN0IiBpbiBlcnJvcl9tc2cKKworCitkZWYgdGVzdF9kaXZpc2lvbl9ieV96ZXJvX2Vycm9yKGNv bm4pOgorICAgICIiIkRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIFJ1bnRpbWVFcnJvci4iIiIKKwor ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGV4Y19pbmZvOgorICAgICAg ICBjb25uLnNxbCgiU0VMRUNUIDEvMCIpCisKKyAgICBlcnJvcl9tc2cgPSBzdHIoZXhjX2luZm8u dmFsdWUpCisgICAgYXNzZXJ0ICJkaXZpc2lvbiBieSB6ZXJvIiBpbiBlcnJvcl9tc2cubG93ZXIo KQorCisKK2RlZiB0ZXN0X3NpbXBsZV9leGVjX2NyZWF0ZV90YWJsZShjb25uKToKKyAgICAiIiJz cWwgZm9yIENSRUFURSBUQUJMRSByZXR1cm5zIE5vbmUuIiIiCisKKyAgICByZXN1bHQgPSBjb25u LnNxbCgiQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF90YWJsZSAoaWQgaW50LCBuYW1lIHRleHQpIikK KyAgICBhc3NlcnQgcmVzdWx0IGlzIE5vbmUKKworICAgICMgVmVyaWZ5IHRhYmxlIHdhcyBjcmVh dGVkCisgICAgY291bnQgPSBjb25uLnNxbCgiU0VMRUNUIENPVU5UKCopIEZST00gdGVzdF90YWJs ZSIpCisgICAgYXNzZXJ0IGNvdW50ID09IDAKKworCitkZWYgdGVzdF9zaW1wbGVfZXhlY19pbnNl cnQoY29ubik6CisgICAgIiIic3FsIGZvciBJTlNFUlQgcmV0dXJucyBOb25lLiIiIgorCisgICAg Y29ubi5zcWwoIkNSRUFURSBURU1QIFRBQkxFIHRlc3RfdGFibGUgKGlkIGludCwgbmFtZSB0ZXh0 KSIpCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIklOU0VSVCBJTlRPIHRlc3RfdGFibGUgVkFMVUVT ICgxLCAnQWxpY2UnKSwgKDIsICdCb2InKSIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBOb25lCisK KyAgICAjIFZlcmlmeSBkYXRhIHdhcyBpbnNlcnRlZAorICAgIGNvdW50ID0gY29ubi5zcWwoIlNF TEVDVCBDT1VOVCgqKSBGUk9NIHRlc3RfdGFibGUiKQorICAgIGFzc2VydCBjb3VudCA9PSAyCisK KworZGVmIHRlc3RfdHlwZV9jb252ZXJzaW9uX21peGVkKGNvbm4pOgorICAgICIiIlRlc3QgbWl4 ZWQgdHlwZSBjb252ZXJzaW9uIGluIGEgc2luZ2xlIHJvdy4iIiIKKworICAgIHJlc3VsdCA9IGNv bm4uc3FsKAorICAgICAgICAiU0VMRUNUIDQyOjppbnQ0LCAxMjM6OmludDgsIDMuMTQ6OmZsb2F0 OCwgJ3RleHQnLCB0cnVlLCBOVUxMIgorICAgICkKKyAgICBhc3NlcnQgcmVzdWx0ID09ICg0Miwg MTIzLCAzLjE0LCAidGV4dCIsIFRydWUsIE5vbmUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVz dWx0WzBdLCBpbnQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzFdLCBpbnQpCisgICAg YXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzJdLCBmbG9hdCkKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHRbM10sIHN0cikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbNF0sIGJvb2wp CisgICAgYXNzZXJ0IHJlc3VsdFs1XSBpcyBOb25lCisKKworZGVmIHRlc3RfbXVsdGlwbGVfcXVl cmllc19zYW1lX2Nvbm5lY3Rpb24oY29ubik6CisgICAgIiIiVGVzdCBydW5uaW5nIG11bHRpcGxl IHF1ZXJpZXMgb24gdGhlIHNhbWUgY29ubmVjdGlvbi4iIiIKKworICAgIHJlc3VsdDEgPSBjb25u LnNxbCgiU0VMRUNUIDEiKQorICAgIGFzc2VydCByZXN1bHQxID09IDEKKworICAgIHJlc3VsdDIg PSBjb25uLnNxbCgiU0VMRUNUICdoZWxsbycsICd3b3JsZCciKQorICAgIGFzc2VydCByZXN1bHQy ID09ICgiaGVsbG8iLCAid29ybGQiKQorCisgICAgcmVzdWx0MyA9IGNvbm4uc3FsKCJTRUxFQ1Qg KiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSIpCisgICAgYXNzZXJ0IHJlc3VsdDMgPT0gWzEs IDIsIDMsIDQsIDVdCisKKworZGVmIHRlc3RfZGF0ZV90eXBlKGNvbm4pOgorICAgICIiIlRlc3Qg ZGF0ZSB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAgaW1wb3J0IGRhdGV0aW1lCisKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgiU0VMRUNUICcyMDI1LTEwLTIwJzo6ZGF0ZSIpCisgICAgYXNzZXJ0IHJl c3VsdCA9PSBkYXRldGltZS5kYXRlKDIwMjUsIDEwLCAyMCkKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHQsIGRhdGV0aW1lLmRhdGUpCisKKworZGVmIHRlc3RfdGltZXN0YW1wX3R5cGUoY29u bik6CisgICAgIiIiVGVzdCB0aW1lc3RhbXAgdHlwZSBjb252ZXJzaW9uLiIiIgorICAgIGltcG9y dCBkYXRldGltZQorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAnMjAyNS0xMC0yMCAx NTozMDo0NSc6OnRpbWVzdGFtcCIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBkYXRldGltZS5kYXRl dGltZSgyMDI1LCAxMCwgMjAsIDE1LCAzMCwgNDUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVz dWx0LCBkYXRldGltZS5kYXRldGltZSkKKworCitkZWYgdGVzdF90aW1lX3R5cGUoY29ubik6Cisg ICAgIiIiVGVzdCB0aW1lIHR5cGUgY29udmVyc2lvbi4iIiIKKyAgICBpbXBvcnQgZGF0ZXRpbWUK KworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgJzE1OjMwOjQ1Jzo6dGltZSIpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSBkYXRldGltZS50aW1lKDE1LCAzMCwgNDUpCisgICAgYXNzZXJ0IGlz aW5zdGFuY2UocmVzdWx0LCBkYXRldGltZS50aW1lKQorCisKK2RlZiB0ZXN0X251bWVyaWNfdHlw ZShjb25uKToKKyAgICAiIiJUZXN0IG51bWVyaWMvZGVjaW1hbCB0eXBlIGNvbnZlcnNpb24uIiIi CisgICAgaW1wb3J0IGRlY2ltYWwKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMTIz LjQ1Njo6bnVtZXJpYyIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBkZWNpbWFsLkRlY2ltYWwoIjEy My40NTYiKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGVjaW1hbC5EZWNpbWFsKQor CisKK2RlZiB0ZXN0X2ludF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IGludGVnZXIgYXJyYXkg dHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJB WVsxLCAyLCAzLCA0LCA1XSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbMSwgMiwgMywgNCwgNV0K KyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAgYXNzZXJ0IGFsbChpc2lu c3RhbmNlKHgsIGludCkgZm9yIHggaW4gcmVzdWx0KQorCisKK2RlZiB0ZXN0X3RleHRfYXJyYXko Y29ubik6CisgICAgIiIiVGVzdCB0ZXh0IGFycmF5IHR5cGUgY29udmVyc2lvbi4iIiIKKworICAg IHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbJ2hlbGxvJywgJ3dvcmxkJywgJ3Rlc3Qn XSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbImhlbGxvIiwgIndvcmxkIiwgInRlc3QiXQorICAg IGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlzaW5zdGFu Y2UoeCwgc3RyKSBmb3IgeCBpbiByZXN1bHQpCisKKworZGVmIHRlc3RfYm9vbF9hcnJheShjb25u KToKKyAgICAiIiJUZXN0IGJvb2xlYW4gYXJyYXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAg cmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVt0cnVlLCBmYWxzZSwgdHJ1ZV0iKQorICAg IGFzc2VydCByZXN1bHQgPT0gW1RydWUsIEZhbHNlLCBUcnVlXQorICAgIGFzc2VydCBpc2luc3Rh bmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlzaW5zdGFuY2UoeCwgYm9vbCkgZm9y IHggaW4gcmVzdWx0KQorCisKK2RlZiB0ZXN0X2VtcHR5X2FycmF5KGNvbm4pOgorICAgICIiIlRl c3QgZW1wdHkgYXJyYXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5z cWwoIlNFTEVDVCBBUlJBWVtdOjppbnRbXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbXQorICAg IGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKworCitkZWYgdGVzdF9qc29uX3R5cGUo Y29ubik6CisgICAgIiIiVGVzdCBKU09OIHR5cGUgKHBhcnNlZCB0byBkaWN0KS4iIiIKKworICAg IHJlc3VsdCA9IGNvbm4uc3FsKCdTRUxFQ1QgXCd7ImtleSI6ICJ2YWx1ZSJ9XCc6Ompzb24nKQor ICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGljdCkKKyAgICBhc3NlcnQgcmVzdWx0ID09 IHsia2V5IjogInZhbHVlIn0KKworCitkZWYgdGVzdF9qc29uYl90eXBlKGNvbm4pOgorICAgICIi IlRlc3QgSlNPTkIgdHlwZSAocGFyc2VkIHRvIGRpY3QpLiIiIgorCisgICAgcmVzdWx0ID0gY29u bi5zcWwoJ1NFTEVDVCBcJ3sibmFtZSI6ICJ0ZXN0IiwgImNvdW50IjogNDJ9XCc6Ompzb25iJykK KyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGRpY3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9 PSB7Im5hbWUiOiAidGVzdCIsICJjb3VudCI6IDQyfQorCisKK2RlZiB0ZXN0X2pzb25fYXJyYXko Y29ubik6CisgICAgIiIiVGVzdCBKU09OIGFycmF5IHR5cGUuIiIiCisKKyAgICByZXN1bHQgPSBj b25uLnNxbCgiU0VMRUNUICdbMSwgMiwgMywgNCwgNV0nOjpqc29uIikKKyAgICBhc3NlcnQgaXNp bnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbMSwgMiwgMywgNCwg NV0KKworCitkZWYgdGVzdF9qc29uX25lc3RlZChjb25uKToKKyAgICAiIiJUZXN0IG5lc3RlZCBK U09OIG9iamVjdC4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKAorICAgICAgICAnU0VMRUNU IFwneyJ1c2VyIjogeyJpZCI6IDEsICJuYW1lIjogIkFsaWNlIn0sICJhY3RpdmUiOiB0cnVlfVwn Ojpqc29uJworICAgICkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGRpY3QpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSB7InVzZXIiOiB7ImlkIjogMSwgIm5hbWUiOiAiQWxpY2UifSwgImFj dGl2ZSI6IFRydWV9CisKKworZGVmIHRlc3RfbWl4ZWRfdHlwZXNfd2l0aF9hcnJheXMoY29ubik6 CisgICAgIiIiVGVzdCBtaXhlZCB0eXBlcyBpbmNsdWRpbmcgYXJyYXlzIGluIGEgc2luZ2xlIHJv dy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgNDIsICd0ZXh0JywgQVJSQVlb MSwgMiwgM10sIHRydWUiKQorICAgIGFzc2VydCByZXN1bHQgPT0gKDQyLCAidGV4dCIsIFsxLCAy LCAzXSwgVHJ1ZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMF0sIGludCkKKyAgICBh c3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMV0sIHN0cikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShy ZXN1bHRbMl0sIGxpc3QpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzNdLCBib29sKQor CisKK2RlZiB0ZXN0X3V1aWRfdHlwZShjb25uKToKKyAgICAiIiJUZXN0IFVVSUQgdHlwZSBjb252 ZXJzaW9uLiIiIgorICAgIGltcG9ydCB1dWlkCisKKyAgICB0ZXN0X3V1aWQgPSAiNTUwZTg0MDAt ZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwIgorICAgIHJlc3VsdCA9IGNvbm4uc3FsKGYiU0VM RUNUICd7dGVzdF91dWlkfSc6OnV1aWQiKQorICAgIGFzc2VydCByZXN1bHQgPT0gdXVpZC5VVUlE KHRlc3RfdXVpZCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIHV1aWQuVVVJRCkKKwor CitkZWYgdGVzdF91dWlkX2dlbmVyYXRpb24oY29ubik6CisgICAgIiIiVGVzdCBnZW5lcmF0ZWQg VVVJRCB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAgaW1wb3J0IHV1aWQKKworICAgIHJlc3VsdCA9 IGNvbm4uc3FsKCJTRUxFQ1QgdXVpZHY0KCkiKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3Vs dCwgdXVpZC5VVUlEKQorICAgICMgQ2hlY2sgaXQncyBhIHZhbGlkIFVVSUQgYnkgZW5zdXJpbmcg aXQgY2FuIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcKKyAgICBhc3NlcnQgbGVuKHN0cihyZXN1bHQp KSA9PSAzNiAgIyBVVUlEIHN0cmluZyBmb3JtYXQgbGVuZ3RoCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9zc2wvcHl0L2NvbmZ0ZXN0LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQppbmRl eCA4NWQyYzk5NDgyOC4uNmU4Njk5ZTA5NzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9weXQv Y29uZnRlc3QucHkKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpAQCAtMSwxOSAr MSwxNCBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCiAKIGltcG9ydCBkYXRldGltZQotaW1wb3J0IG9zCi1pbXBvcnQgcGF0aGxpYgot aW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc2VjcmV0cwotaW1wb3J0IHNvY2tldAoraW1wb3J0IHJl CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIGNvbGxlY3Rpb25zIGlt cG9ydCBuYW1lZHR1cGxlCiAKIGltcG9ydCBweXRlc3QKIAotaW1wb3J0IHBnCi1mcm9tIHBnLmZp eHR1cmVzIGltcG9ydCAqCitmcm9tIHB5cGcuZml4dHVyZXMgaW1wb3J0ICoKIAogCiBAcHl0ZXN0 LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQpAQCAtMTM1LDEwOCArMTMwLDUxIEBAIGRlZiBjZXJ0 cyhjcnlwdG9ncmFwaHksIHRtcF9wYXRoX2ZhY3RvcnkpOgogICAgIHJldHVybiBfQ2VydHMoKQog CiAKLUBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCi1kZWYgZGF0YWRpcih0bXBfcGF0 aF9mYWN0b3J5KToKK0BweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVl KQorZGVmIHNzbF9zZXR1cChwZ19zZXJ2ZXJfbW9kdWxlLCBjZXJ0cywgZGF0YWRpcik6CiAgICAg IiIiCi0gICAgUmV0dXJucyB0aGUgZGlyZWN0b3J5IG5hbWUgdG8gdXNlIGFzIHRoZSBzZXJ2ZXIg ZGF0YSBkaXJlY3RvcnkuIElmCi0gICAgVEVTVERBVEFESVIgaXMgcHJvdmlkZWQsIHRoYXQgd2ls bCBiZSB1c2VkOyBvdGhlcndpc2UgYSBuZXcgdGVtcG9yYXJ5Ci0gICAgZGlyZWN0b3J5IGlzIGNy ZWF0ZWQgaW4gdGhlIHB5dGVzdCB0ZW1wIHJvb3QuCisgICAgU2V0cyB1cCByZXF1aXJlZCBzZXJ2 ZXIgc2V0dGluZ3MgZm9yIGFsbCB0ZXN0cyBpbiB0aGlzIG1vZHVsZS4KICAgICAiIiIKLSAgICBk ID0gb3MuZ2V0ZW52KCJURVNUREFUQURJUiIpCi0gICAgaWYgZDoKLSAgICAgICAgZCA9IHBhdGhs aWIuUGF0aChkKQotICAgIGVsc2U6Ci0gICAgICAgIGQgPSB0bXBfcGF0aF9mYWN0b3J5Lm1rdGVt cCgidG1wX2NoZWNrIikKKyAgICB0cnk6CisgICAgICAgIHdpdGggcGdfc2VydmVyX21vZHVsZS5y ZXN0YXJ0aW5nKCkgYXMgczoKKyAgICAgICAgICAgIHMuY29uZi5zZXQoCisgICAgICAgICAgICAg ICAgc3NsPSJvbiIsCisgICAgICAgICAgICAgICAgc3NsX2NhX2ZpbGU9Y2VydHMuY2EuY2VydHBh dGgsCisgICAgICAgICAgICAgICAgc3NsX2NlcnRfZmlsZT1jZXJ0cy5zZXJ2ZXIuY2VydHBhdGgs CisgICAgICAgICAgICAgICAgc3NsX2tleV9maWxlPWNlcnRzLnNlcnZlci5rZXlwYXRoLAorICAg ICAgICAgICAgKQogCi0gICAgcmV0dXJuIGQKKyAgICAgICAgICAgICMgUmVqZWN0IGJ5IGRlZmF1 bHQuCisgICAgICAgICAgICBzLmhiYS5wcmVwZW5kKCJob3N0c3NsIGFsbCBhbGwgYWxsIHJlamVj dCIpCiAKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAg ICMgVGhpcyBpcyBhIGRlY2VudCBwbGFjZSB0byBza2lwIGlmIHRoZSBzZXJ2ZXIgaXNuJ3Qgc2V0 IHVwIGZvciBTU0wuCisgICAgICAgIGxvZ3BhdGggPSBkYXRhZGlyIC8gInBvc3RncmVzcWwubG9n IgorICAgICAgICB1bnN1cHBvcnRlZCA9IHJlLmNvbXBpbGUoIlNTTCBpcyBub3Qgc3VwcG9ydGVk IikKIAotQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKLWRlZiBzb2NrZGlyKHRtcF9w YXRoX2ZhY3RvcnkpOgotICAgICIiIgotICAgIFJldHVybnMgdGhlIGRpcmVjdG9yeSBuYW1lIHRv IHVzZSBhcyB0aGUgc2VydmVyJ3MgdW5peF9zb2NrZXRfZGlyZWN0b3JpZXMKLSAgICBzZXR0aW5n LiBMb2NhbCBjbGllbnQgY29ubmVjdGlvbnMgdXNlIHRoaXMgYXMgdGhlIFBHSE9TVC4KKyAgICAg ICAgd2l0aCBvcGVuKGxvZ3BhdGgsICJyIikgYXMgbG9nOgorICAgICAgICAgICAgZm9yIGxpbmUg aW4gbG9nOgorICAgICAgICAgICAgICAgIGlmIHVuc3VwcG9ydGVkLnNlYXJjaChsaW5lKToKKyAg ICAgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9y dCBTU0wiKQogCi0gICAgQXQgdGhlIG1vbWVudCwgdGhpcyBpcyBhbHdheXMgcHV0IHVuZGVyIHRo ZSBweXRlc3QgdGVtcCByb290LgotICAgICIiIgotICAgIHJldHVybiB0bXBfcGF0aF9mYWN0b3J5 Lm1rdGVtcCgic29ja2ZpbGVzIikKKyAgICAgICAgIyBTb21lIG90aGVyIGVycm9yIGhhcHBlbmVk LgorICAgICAgICByYWlzZQogCisgICAgdXNlcnMgPSBwZ19zZXJ2ZXJfbW9kdWxlLmNyZWF0ZV91 c2Vycygic3NsIikKKyAgICBkYnMgPSBwZ19zZXJ2ZXJfbW9kdWxlLmNyZWF0ZV9kYnMoInNzbCIp CiAKLUBweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCi1kZWYgd2lucGFzc3dvcmQoKToK LSAgICAiIiJUaGUgcGVyLXNlc3Npb24gU0NSQU0gcGFzc3dvcmQgZm9yIHRoZSBzZXJ2ZXIgYWRt aW4gb24gV2luZG93cy4iIiIKLSAgICByZXR1cm4gc2VjcmV0cy50b2tlbl91cmxzYWZlKDE2KQor ICAgIHJldHVybiAodXNlcnMsIGRicykKIAogCi1AcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Np b24iKQotZGVmIHNlcnZlcl9pbnN0YW5jZShjZXJ0cywgZGF0YWRpciwgc29ja2Rpciwgd2lucGFz c3dvcmQpOgorQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiKQorZGVmIGNsaWVudF9jZXJ0 KHNzbF9zZXR1cCwgY2VydHMpOgogICAgICIiIgotICAgIFN0YXJ0cyBhIHJ1bm5pbmcgUG9zdGdy ZXMgc2VydmVyIGxpc3RlbmluZyBvbiBsb2NhbGhvc3QuIFRoZSBIQkEgaW5pdGlhbGx5Ci0gICAg YWxsb3dzIG9ubHkgbG9jYWwgVU5JWCBjb25uZWN0aW9ucyBmcm9tIHRoZSBzYW1lIHVzZXIuCi0K LSAgICBUT0RPOiB3aGVuIGluc3RhbGxjaGVjayBpcyBzdXBwb3J0ZWQsIHRoaXMgc2hvdWxkIG9w dGlvbmFsbHkgcG9pbnQgdG8gdGhlCi0gICAgY3VycmVudGx5IHJ1bm5pbmcgc2VydmVyIGluc3Rl YWQuCisgICAgQ3JlYXRlcyBhIENlcnQgZm9yIHRoZSAic3NsIiB1c2VyLgogICAgICIiIgorICAg IGZyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5CisgICAgZnJvbSBjcnlwdG9ncmFwaHkueDUw OS5vaWQgaW1wb3J0IE5hbWVPSUQKKworICAgIHVzZXJzLCBfID0gc3NsX3NldHVwCisgICAgdXNl ciA9IHVzZXJzWyJzc2wiXQogCi0gICAgIyBMb2NrIGRvd24gdGhlIEhCQSBieSBkZWZhdWx0OyB0 ZXN0cyBjYW4gb3BlbiBpdCBiYWNrIHVwIGxhdGVyLgotICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgp ID09ICJXaW5kb3dzIjoKLSAgICAgICAgIyBPbiBXaW5kb3dzLCBmb3IgYWRtaW4gY29ubmVjdGlv bnMsIHVzZSBTQ1JBTSB3aXRoIGEgZ2VuZXJhdGVkIHBhc3N3b3JkCi0gICAgICAgICMgb3ZlciBs b2NhbCBzb2NrZXRzLiBUaGlzIHJlcXVpcmVzIGFkZGl0aW9uYWwgd29yayBkdXJpbmcgaW5pdGRi LgotICAgICAgICBtZXRob2QgPSAic2NyYW0tc2hhLTI1NiIKLQotICAgICAgICAjIE5hbWVkVGVt cG9yYXJ5RmlsZSBkb2Vzbid0IHdvcmsgdmVyeSBuaWNlbHkgb24gV2luZG93cyB1bnRpbCBQeXRo b24KLSAgICAgICAgIyAzLjEyLCB3aGljaCBpbnRyb2R1Y2VzIE5hbWVkVGVtcG9yYXJ5RmlsZShk ZWxldGVfb25fY2xvc2U9RmFsc2UpLgotICAgICAgICAjIFVudGlsIHRoZW4sIHNwZWNpZnkgZGVs ZXRlPUZhbHNlIGFuZCBtYW51YWxseSB1bmxpbmsgYWZ0ZXIgdXNlLgotICAgICAgICB3aXRoIHRl bXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIGRlbGV0ZT1GYWxzZSkgYXMgcHdmaWxlOgot ICAgICAgICAgICAgcHdmaWxlLndyaXRlKHdpbnBhc3N3b3JkKQotCi0gICAgICAgIHN1YnByb2Nl c3MuY2hlY2tfY2FsbCgKLSAgICAgICAgICAgIFsiaW5pdGRiIiwgIi0tYXV0aD1zY3JhbS1zaGEt MjU2IiwgIi0tcHdmaWxlIiwgcHdmaWxlLm5hbWUsIGRhdGFkaXJdCi0gICAgICAgICkKLSAgICAg ICAgb3MudW5saW5rKHB3ZmlsZS5uYW1lKQotCi0gICAgZWxzZToKLSAgICAgICAgIyBGb3Igb3Ro ZXIgT1NlcyB3ZSBjYW4ganVzdCB1c2UgcGVlciBhdXRoLgotICAgICAgICBtZXRob2QgPSAicGVl ciIKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsicGdfY3RsIiwgIi1EIiwgZGF0YWRp ciwgImluaXQiXSkKLQotICAgIHdpdGggb3BlbihkYXRhZGlyIC8gInBnX2hiYS5jb25mIiwgInci KSBhcyBmOgotICAgICAgICBwcmludChmIiMgZGVmYXVsdDogbG9jYWwge21ldGhvZH0gY29ubmVj dGlvbnMgb25seSIsIGZpbGU9ZikKLSAgICAgICAgcHJpbnQoZiJsb2NhbCBhbGwgYWxsIHttZXRo b2R9IiwgZmlsZT1mKQotCi0gICAgIyBGaWd1cmUgb3V0IGEgcG9ydCB0byBsaXN0ZW4gb24uIEF0 dGVtcHQgdG8gcmVzZXJ2ZSBib3RoIElQdjQgYW5kIElQdjYKLSAgICAjIGFkZHJlc3NlcyBpbiBv bmUgZ28uCi0gICAgIwotICAgICMgTm90ZTogc29ja2V0Lmhhc19kdWFsc3RhY2tfaXB2Ni9jcmVh dGVfc2VydmVyIGFyZSBvbmx5IGluIFB5dGhvbiAzLjgrLgotICAgIGlmIGhhc2F0dHIoc29ja2V0 LCAiaGFzX2R1YWxzdGFja19pcHY2IikgYW5kIHNvY2tldC5oYXNfZHVhbHN0YWNrX2lwdjYoKToK LSAgICAgICAgYWRkciA9ICgiOjoxIiwgMCkKLSAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfc2Vy dmVyKGFkZHIsIGZhbWlseT1zb2NrZXQuQUZfSU5FVDYsIGR1YWxzdGFja19pcHY2PVRydWUpCi0K LSAgICAgICAgaG9zdGFkZHIsIHBvcnQsIF8sIF8gPSBzLmdldHNvY2tuYW1lKCkKLSAgICAgICAg YWRkcnMgPSBbaG9zdGFkZHIsICIxMjcuMC4wLjEiXQotCi0gICAgZWxzZToKLSAgICAgICAgYWRk ciA9ICgiMTI3LjAuMC4xIiwgMCkKLQotICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCi0gICAg ICAgIHMuYmluZChhZGRyKQotCi0gICAgICAgIGhvc3RhZGRyLCBwb3J0ID0gcy5nZXRzb2NrbmFt ZSgpCi0gICAgICAgIGFkZHJzID0gW2hvc3RhZGRyXQotCi0gICAgbG9nID0gb3MucGF0aC5qb2lu KGRhdGFkaXIsICJwb3N0Z3Jlc3FsLmxvZyIpCi0KLSAgICB3aXRoIHMsIG9wZW4ob3MucGF0aC5q b2luKGRhdGFkaXIsICJwb3N0Z3Jlc3FsLmNvbmYiKSwgImEiKSBhcyBmOgotICAgICAgICBwcmlu dChmaWxlPWYpCi0gICAgICAgIHByaW50KCJ1bml4X3NvY2tldF9kaXJlY3RvcmllcyA9ICd7fSci LmZvcm1hdChzb2NrZGlyLmFzX3Bvc2l4KCkpLCBmaWxlPWYpCi0gICAgICAgIHByaW50KCJsaXN0 ZW5fYWRkcmVzc2VzID0gJ3t9JyIuZm9ybWF0KCIsIi5qb2luKGFkZHJzKSksIGZpbGU9ZikKLSAg ICAgICAgcHJpbnQoInBvcnQgPSIsIHBvcnQsIGZpbGU9ZikKLSAgICAgICAgcHJpbnQoImxvZ19j b25uZWN0aW9ucyA9IGFsbCIsIGZpbGU9ZikKLQotICAgICMgQmV0d2VlbiBjbG9zaW5nIG9mIHRo ZSBzb2NrZXQsIHMsIGFuZCBzZXJ2ZXIgc3RhcnQsIHdlJ3JlIHJhY2luZyBhZ2FpbnN0Ci0gICAg IyBhbnl0aGluZyB0aGF0IHdhbnRzIHRvIG9wZW4gdXAgZXBoZW1lcmFsIHBvcnRzLCBzbyB0cnkg bm90IHRvIHB1dCBhbnkgbmV3Ci0gICAgIyB3b3JrIGhlcmUuCi0KLSAgICBzdWJwcm9jZXNzLmNo ZWNrX2NhbGwoWyJwZ19jdGwiLCAiLUQiLCBkYXRhZGlyLCAiLWwiLCBsb2csICJzdGFydCJdKQot ICAgIHlpZWxkIChob3N0YWRkciwgcG9ydCkKLSAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJw Z19jdGwiLCAiLUQiLCBkYXRhZGlyLCAiLWwiLCBsb2csICJzdG9wIl0pCisgICAgcmV0dXJuIGNl cnRzLm5ldyh4NTA5Lk5hbWUoW3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1PTl9OQU1F LCB1c2VyKV0pKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVudC5weSBi L3NyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkKaW5kZXggMjgxMTBhZTA3MTcuLjI0NzY4 MWY5M2NiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5CisrKyBi L3NyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkKQEAgLTEwLDEwICsxMCwxMSBAQCBmcm9t IHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKIAogaW1wb3J0IHB5dGVzdAogCi1pbXBvcnQgcGcKK2lt cG9ydCBweXBnCitmcm9tIGxpYnBxIGltcG9ydCBMaWJwcUVycm9yLCBFeGVjU3RhdHVzCiAKICMg VGhpcyBzdWl0ZSBvcGVucyB1cCBsb2NhbCBUQ1AgcG9ydHMgYW5kIGlzIGhpZGRlbiBiZWhpbmQg UEdfVEVTVF9FWFRSQT1zc2wuCi1weXRlc3RtYXJrID0gcGcucmVxdWlyZV90ZXN0X2V4dHJhKCJz c2wiKQorcHl0ZXN0bWFyayA9IHB5cGcucmVxdWlyZV90ZXN0X2V4dHJhKCJzc2wiKQogCiAKIEBw eXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIsIGF1dG91c2U9VHJ1ZSkKQEAgLTE5Miw3ICsx OTMsNyBAQCBkZWYgc3NsX3NlcnZlcih0Y3Bfc2VydmVyX2NsYXNzLCBjZXJ0cyk6CiAKIAogQHB5 dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzc2xtb2RlIiwgKCJyZXF1aXJlIiwgInZlcmlmeS1jYSIs ICJ2ZXJpZnktZnVsbCIpKQotZGVmIHRlc3Rfc2VydmVyX3dpdGhfc3NsX2Rpc2FibGVkKGxpYnBx LCB0Y3Bfc2VydmVyLCBjZXJ0cywgc3NsbW9kZSk6CitkZWYgdGVzdF9zZXJ2ZXJfd2l0aF9zc2xf ZGlzYWJsZWQoY29ubmVjdCwgdGNwX3NlcnZlciwgY2VydHMsIHNzbG1vZGUpOgogICAgICIiIgog ICAgIE1ha2Ugc3VyZSBjbGllbnQgcmVmdXNlcyB0byB0YWxrIHRvIG5vbi1TU0wgc2VydmVycyB3 aXRoIHN0cmljdGVyCiAgICAgc3NsbW9kZXMuCkBAIC0yMTQsMTYgKzIxNSwxNSBAQCBkZWYgdGVz dF9zZXJ2ZXJfd2l0aF9zc2xfZGlzYWJsZWQobGlicHEsIHRjcF9zZXJ2ZXIsIGNlcnRzLCBzc2xt b2RlKToKIAogICAgIHRjcF9zZXJ2ZXIuYmFja2dyb3VuZChyZWZ1c2Vfc3NsKQogCi0gICAgd2l0 aCBweXRlc3QucmFpc2VzKGxpYnBxLkVycm9yLCBtYXRjaD0ic2VydmVyIGRvZXMgbm90IHN1cHBv cnQgU1NMIik6Ci0gICAgICAgIHdpdGggbGlicHE6ICAjIFhYWCB0ZXN0cyBzaG91bGRuJ3QgbmVl ZCB0byBkbyB0aGlzCi0gICAgICAgICAgICBsaWJwcS5tdXN0X2Nvbm5lY3QoCi0gICAgICAgICAg ICAgICAgKip0Y3Bfc2VydmVyLmNvbm5pbmZvLAotICAgICAgICAgICAgICAgIHNzbHJvb3RjZXJ0 PWNlcnRzLmNhLmNlcnRwYXRoLAotICAgICAgICAgICAgICAgIHNzbG1vZGU9c3NsbW9kZSwKLSAg ICAgICAgICAgICkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTGlicHFFcnJvciwgbWF0Y2g9InNl cnZlciBkb2VzIG5vdCBzdXBwb3J0IFNTTCIpOgorICAgICAgICBjb25uZWN0KAorICAgICAgICAg ICAgKip0Y3Bfc2VydmVyLmNvbm5pbmZvLAorICAgICAgICAgICAgc3Nscm9vdGNlcnQ9Y2VydHMu Y2EuY2VydHBhdGgsCisgICAgICAgICAgICBzc2xtb2RlPXNzbG1vZGUsCisgICAgICAgICkKIAog Ci1kZWYgdGVzdF92ZXJpZnlfZnVsbF9jb25uZWN0aW9uKGxpYnBxLCBzc2xfc2VydmVyLCBjZXJ0 cyk6CitkZWYgdGVzdF92ZXJpZnlfZnVsbF9jb25uZWN0aW9uKGNvbm5lY3QsIHNzbF9zZXJ2ZXIs IGNlcnRzKToKICAgICAiIiJDb21wbGV0ZXMgYSB2ZXJpZnktZnVsbCBjb25uZWN0aW9uIGFuZCBl bXB0eSBxdWVyeS4iIiIKIAogICAgIGRlZiBoYW5kbGVfZW1wdHlfcXVlcnkoczogc3NsLlNTTFNv Y2tldCk6CkBAIC0yNjksMTAgKzI2OSwxMCBAQCBkZWYgdGVzdF92ZXJpZnlfZnVsbF9jb25uZWN0 aW9uKGxpYnBxLCBzc2xfc2VydmVyLCBjZXJ0cyk6CiAKICAgICBzc2xfc2VydmVyLmJhY2tncm91 bmRfc3NsKGhhbmRsZV9lbXB0eV9xdWVyeSkKIAotICAgIGNvbm4gPSBsaWJwcS5tdXN0X2Nvbm5l Y3QoCisgICAgY29ubiA9IGNvbm5lY3QoCiAgICAgICAgICoqc3NsX3NlcnZlci5jb25uaW5mbywK ICAgICAgICAgc3Nscm9vdGNlcnQ9Y2VydHMuY2EuY2VydHBhdGgsCiAgICAgICAgIHNzbG1vZGU9 InZlcmlmeS1mdWxsIiwKICAgICApCiAgICAgd2l0aCBjb25uOgotICAgICAgICBhc3NlcnQgY29u bi5leGVjKCIiKS5zdGF0dXMoKSA9PSBsaWJwcS5QR1JFU19FTVBUWV9RVUVSWQorICAgICAgICBh c3NlcnQgY29ubi5leGVjKCIiKS5zdGF0dXMoKSA9PSBFeGVjU3RhdHVzLlBHUkVTX0VNUFRZX1FV RVJZCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvcHl0L3Rlc3Rfc2VydmVyLnB5IGIvc3JjL3Rl c3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weQppbmRleCAyZDBiZTczNTM3MS4uNjA2MjhkMGMwNjcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkKKysrIGIvc3JjL3Rl c3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weQpAQCAtMSwyNSArMSwxNiBAQAogIyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKLWltcG9ydCBj b250ZXh0bGliCi1pbXBvcnQgb3MKLWltcG9ydCBwYXRobGliCi1pbXBvcnQgcGxhdGZvcm0KIGlt cG9ydCByZQotaW1wb3J0IHNodXRpbAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNzbAogaW1wb3J0 IHN0cnVjdAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0ZW1wZmlsZQotZnJvbSBjb2xsZWN0 aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QsIExpc3QsIFVu aW9uCiAKIGltcG9ydCBweXRlc3QKIAotaW1wb3J0IHBnCitpbXBvcnQgcHlwZwogCiAjIFRoaXMg c3VpdGUgb3BlbnMgdXAgbG9jYWwgVENQIHBvcnRzIGFuZCBpcyBoaWRkZW4gYmVoaW5kIFBHX1RF U1RfRVhUUkE9c3NsLgotcHl0ZXN0bWFyayA9IHBnLnJlcXVpcmVfdGVzdF9leHRyYSgic3NsIikK K3B5dGVzdG1hcmsgPSBweXBnLnJlcXVpcmVfdGVzdF9leHRyYSgic3NsIikKIAogCiAjCkBAIC0y NywzNjMgKzE4LDYgQEAgcHl0ZXN0bWFyayA9IHBnLnJlcXVpcmVfdGVzdF9leHRyYSgic3NsIikK ICMKIAogCi1AcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQotZGVmIGNvbm5lbnYoc2Vy dmVyX2luc3RhbmNlLCBzb2NrZGlyLCBkYXRhZGlyKToKLSAgICAiIiIKLSAgICBQcm92aWRlcyB0 aGUgdmFsdWVzIGZvciBzZXZlcmFsIFBHKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbmVlZGVkIGZv ciBvdXIKLSAgICB1dGlsaXR5IHByb2dyYW1zIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlcl9pbnN0 YW5jZS4KLSAgICAiIiIKLSAgICByZXR1cm4gewotICAgICAgICAiUEdIT1NUIjogc3RyKHNvY2tk aXIpLAotICAgICAgICAiUEdQT1JUIjogc3RyKHNlcnZlcl9pbnN0YW5jZVsxXSksCi0gICAgICAg ICJQR0RBVEFCQVNFIjogInBvc3RncmVzIiwKLSAgICAgICAgIlBHREFUQSI6IHN0cihkYXRhZGly KSwKLSAgICB9Ci0KLQotY2xhc3MgRmlsZUJhY2t1cChjb250ZXh0bGliLkFic3RyYWN0Q29udGV4 dE1hbmFnZXIpOgotICAgICIiIgotICAgIEEgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGJhY2tzIHVw IGEgZmlsZSdzIGNvbnRlbnRzLCByZXN0b3JpbmcgdGhlbSBvbiBleGl0LgotICAgICIiIgotCi0g ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGU6IHBhdGhsaWIuUGF0aCk6Ci0gICAgICAgIHN1cGVy KCkuX19pbml0X18oKQotCi0gICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCi0KLSAgICBkZWYgX19l bnRlcl9fKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgK LSAgICAgICAgICAgIHByZWZpeD1zZWxmLl9maWxlLm5hbWUsIGRpcj1zZWxmLl9maWxlLnBhcmVu dCwgZGVsZXRlPUZhbHNlCi0gICAgICAgICkgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuX2JhY2t1 cCA9IHBhdGhsaWIuUGF0aChmLm5hbWUpCi0KLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYu X2ZpbGUsIHNlbGYuX2JhY2t1cCkKLQotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9f ZXhpdF9fKHNlbGYsICpleGMpOgotICAgICAgICAjIFN3YXAgdGhlIGJhY2t1cCBhbmQgdGhlIG9y aWdpbmFsIGZpbGUsIHNvIHRoYXQgdGhlIG1vZGlmaWVkIGNvbnRlbnRzCi0gICAgICAgICMgY2Fu IHN0aWxsIGJlIGluc3BlY3RlZCBpbiBjYXNlIG9mIGZhaWx1cmUuCi0gICAgICAgICMKLSAgICAg ICAgIyBUT0RPOiB0aGlzIGlzIGxlc3MgaGVscGZ1bCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgbGF5 ZXJzLCBiZWNhdXNlIGl0J3MKLSAgICAgICAgIyBub3QgY2xlYXIgd2hpY2ggYmFja3VwIHRvIGxv b2sgYXQuIENhbiB0aGUgYmFja3VwIG5hbWUgYmUgcHJpbnRlZCBhcwotICAgICAgICAjIHBhcnQg b2YgdGhlIGZhaWxlZCB0ZXN0IG91dHB1dD8gU2hvdWxkIHdlIG9ubHkgc3dhcCBvbiB0ZXN0IGZh aWx1cmU/Ci0gICAgICAgIHRtcCA9IHNlbGYuX2JhY2t1cC5wYXJlbnQgLyAoc2VsZi5fYmFja3Vw Lm5hbWUgKyAiLnRtcCIpCi0KLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2ZpbGUsIHRt cCkKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2JhY2t1cCwgc2VsZi5fZmlsZSkKLSAg ICAgICAgc2h1dGlsLm1vdmUodG1wLCBzZWxmLl9iYWNrdXApCi0KLQotY2xhc3MgSEJBKEZpbGVC YWNrdXApOgotICAgICIiIgotICAgIEJhY2tzIHVwIGEgc2VydmVyJ3MgSEJBIGNvbmZpZ3VyYXRp b24gYW5kIHByb3ZpZGVzIG1lYW5zIGZvciB0ZW1wb3JhcmlseQotICAgIGVkaXRpbmcgaXQuIFNl ZSBhbHNvIHBnX3NlcnZlciwgd2hpY2ggcHJvdmlkZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFz cyBhbmQKLSAgICBjb250ZXh0IG1hbmFnZXJzIGZvciBlbmZvcmNpbmcgdGhlIHJlbG9hZC9yZXN0 YXJ0IG9yZGVyIG9mIG9wZXJhdGlvbnMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs ZiwgZGF0YWRpcjogcGF0aGxpYi5QYXRoKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRh ZGlyIC8gInBnX2hiYS5jb25mIikKLQotICAgIGRlZiBwcmVwZW5kKHNlbGYsICpsaW5lczogVW5p b25bc3RyLCBMaXN0W3N0cl1dKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlbXBvcmFyaWx5IHBy ZXBlbmRzIGxpbmVzIHRvIHRoZSBzZXJ2ZXIncyBwZ19oYmEuY29uZi4KLQotICAgICAgICBBcyBz dWdhciBmb3IgYWxpZ25pbmcgSEJBIGNvbHVtbnMgaW4gdGhlIHRlc3RzLCBlYWNoIGxpbmUgY2Fu IGJlIGVpdGhlcgotICAgICAgICBhIHN0cmluZyBvciBhIGxpc3Qgb2Ygc3RyaW5ncy4gTGlzdCBl bGVtZW50cyB3aWxsIGJlIGpvaW5lZCBieSBzaW5nbGUKLSAgICAgICAgc3BhY2VzIGJlZm9yZSB0 aGV5IGFyZSB3cml0dGVuIHRvIGZpbGUuCi0gICAgICAgICIiIgotICAgICAgICB3aXRoIG9wZW4o c2VsZi5fZmlsZSwgInIiKSBhcyBmOgotICAgICAgICAgICAgcHJpb3JfZGF0YSA9IGYucmVhZCgp Ci0KLSAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ZpbGUsICJ3IikgYXMgZjoKLSAgICAgICAgICAg IGZvciBsIGluIGxpbmVzOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobCwgbGlzdCk6 Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCpsLCBmaWxlPWYpCi0gICAgICAgICAgICAgICAg ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQobCwgZmlsZT1mKQotCi0gICAgICAgICAg ICBmLndyaXRlKHByaW9yX2RhdGEpCi0KLQotY2xhc3MgQ29uZmlnKEZpbGVCYWNrdXApOgotICAg ICIiIgotICAgIEJhY2tzIHVwIGEgc2VydmVyJ3MgcG9zdGdyZXNxbC5jb25mIGFuZCBwcm92aWRl cyBtZWFucyBmb3IgdGVtcG9yYXJpbHkKLSAgICBlZGl0aW5nIGl0LiBTZWUgYWxzbyBwZ19zZXJ2 ZXIsIHdoaWNoIHByb3ZpZGVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgYW5kCi0gICAgY29u dGV4dCBtYW5hZ2VycyBmb3IgZW5mb3JjaW5nIHRoZSByZWxvYWQvcmVzdGFydCBvcmRlciBvZiBv cGVyYXRpb25zLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGFkaXI6IHBh dGhsaWIuUGF0aCk6Ci0gICAgICAgIHN1cGVyKCkuX19pbml0X18oZGF0YWRpciAvICJwb3N0Z3Jl c3FsLmNvbmYiKQotCi0gICAgZGVmIHNldChzZWxmLCAqKmd1Y3MpOgotICAgICAgICAiIiIKLSAg ICAgICAgVGVtcG9yYXJpbHkgYXBwZW5kcyBHVUMgc2V0dGluZ3MgdG8gdGhlIHNlcnZlcidzIHBv c3RncmVzcWwuY29uZi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2Zp bGUsICJhIikgYXMgZjoKLSAgICAgICAgICAgIHByaW50KGZpbGU9ZikKLQotICAgICAgICAgICAg Zm9yIG4sIHYgaW4gZ3Vjcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHYgPSBzdHIodikKLQot ICAgICAgICAgICAgICAgICMgVE9ETzogcHJvcGVyIHF1b3RpbmcKLSAgICAgICAgICAgICAgICB2 ID0gdi5yZXBsYWNlKCJcXCIsICJcXFxcIikKLSAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNl KCInIiwgIlxcJyIpCi0gICAgICAgICAgICAgICAgdiA9ICIne30nIi5mb3JtYXQodikKLQotICAg ICAgICAgICAgICAgIHByaW50KG4sICI9IiwgdiwgZmlsZT1mKQotCi0KLUBweXRlc3QuZml4dHVy ZShzY29wZT0ic2Vzc2lvbiIpCi1kZWYgcGdfc2VydmVyX3Nlc3Npb24oc2VydmVyX2luc3RhbmNl LCBjb25uZW52LCBkYXRhZGlyLCB3aW5wYXNzd29yZCk6Ci0gICAgIiIiCi0gICAgUHJvdmlkZXMg Y29tbW9uIHJvdXRpbmVzIGZvciBjb25maWd1cmluZyBhbmQgY29ubmVjdGluZyB0byB0aGUKLSAg ICBzZXJ2ZXJfaW5zdGFuY2UuIEZvciBleGFtcGxlOgotCi0gICAgICAgIHVzZXJzID0gcGdfc2Vy dmVyX3Nlc3Npb24uY3JlYXRlX3VzZXJzKCJvbmUiLCAidHdvIikKLSAgICAgICAgZGJzID0gcGdf c2VydmVyX3Nlc3Npb24uY3JlYXRlX2RicygiZGVmYXVsdCIpCi0KLSAgICAgICAgd2l0aCBwZ19z ZXJ2ZXJfc2Vzc2lvbi5yZWxvYWRpbmcoKSBhcyBzOgotICAgICAgICAgICAgcy5oYmEucHJlcGVu ZChbImxvY2FsIiwgZGJzWyJkZWZhdWx0Il0sIHVzZXJzWyJ0d28iXSwgInBlZXIiXSkKLQotICAg ICAgICBjb25uID0gY29ubmVjdF9zb21laG93KCoqcGdfc2VydmVyX3Nlc3Npb24uY29ubmluZm8p Ci0gICAgICAgIC4uLgotCi0gICAgQXR0cmlidXRlcyBvZiBub3RlIGFyZQotICAgIC0gLmNvbm5p bmZvOiBwcm92aWRlcyBUQ1AgY29ubmVjdGlvbiBpbmZvIGZvciB0aGUgc2VydmVyCi0KLSAgICBU aGlzIGZpeHR1cmUgdW53aW5kcyBpdHMgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGF0IHRoZSBlbmQg b2YgdGhlIHB5dGVzdAotICAgIHNlc3Npb24uIEZvciBtb3JlIGdyYW51bGFyIGNoYW5nZXMsIHBn X3NlcnZlcl9zZXNzaW9uLnN1YmNvbnRleHQoKSBzcGxpdHMKLSAgICBvZmYgYSAibmVzdGVkIiBj b250ZXh0IHRvIGFsbG93IHNtYWxsZXIgc2NvcGVzLgotICAgICIiIgotCi0gICAgY2xhc3MgX1Nl cnZlcihjb250ZXh0bGliLkV4aXRTdGFjayk6Ci0gICAgICAgIGNvbm5pbmZvID0gZGljdCgKLSAg ICAgICAgICAgIGhvc3RhZGRyPXNlcnZlcl9pbnN0YW5jZVswXSwKLSAgICAgICAgICAgIHBvcnQ9 c2VydmVyX2luc3RhbmNlWzFdLAotICAgICAgICApCi0KLSAgICAgICAgIyBmb3IgX2JhY2t1cF9j b25maWd1cmF0aW9uKCkKLSAgICAgICAgX0JhY2t1cCA9IG5hbWVkdHVwbGUoIkJhY2t1cCIsICJj b25mLCBoYmEiKQotCi0gICAgICAgIGRlZiBzdWJjb250ZXh0KHNlbGYpOgotICAgICAgICAgICAg IiIiCi0gICAgICAgICAgICBDcmVhdGVzIGEgbmV3IHNlcnZlciBzdGFjayBpbnN0YW5jZSB0aGF0 IGNhbiBiZSB0aWVkIHRvIGEgc21hbGxlcgotICAgICAgICAgICAgc2NvcGUgdGhhbiAic2Vzc2lv biIuCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICMgU28gZmFyLCB0aGVyZSBkb2Vzbid0 IHNlZW0gdG8gYmUgYSBuZWVkIHRvIGxpbmsgdGhlIHR3byBvYmplY3RzLAotICAgICAgICAgICAg IyBzaW5jZSBIQkEvQ29uZmlnL0ZpbGVCYWNrdXAgb3BlcmF0ZSBkaXJlY3RseSBvbiB0aGUgZmls ZXN5c3RlbSBhbmQKLSAgICAgICAgICAgICMgd2lsbCBhcHBlYXIgdG8gIm5lc3QiIG5hdHVyYWxs eS4KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXygpCi0KLSAgICAgICAgZGVmIGNy ZWF0ZV91c2VycyhzZWxmLCAqdXNlcmtleXM6IHN0cikgLT4gRGljdFtzdHIsIHN0cl06Ci0gICAg ICAgICAgICAiIiIKLSAgICAgICAgICAgIENyZWF0ZXMgbmV3IHVzZXJzIHdoaWNoIHdpbGwgYmUg ZHJvcHBlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZXJ2ZXIKLSAgICAgICAgICAgIGNvbnRleHQuCi0K LSAgICAgICAgICAgIEZvciBlYWNoIHByb3ZpZGVkIGtleSwgYSByZWxhdGVkIHVzZXIgbmFtZSB3 aWxsIGJlIHNlbGVjdGVkIGFuZAotICAgICAgICAgICAgc3RvcmVkIGluIGEgbWFwLiBUaGlzIG1h cCBpcyByZXR1cm5lZCB0byBsZXQgY2FsbGluZyBjb2RlIGxvb2sgdXAKLSAgICAgICAgICAgIHRo ZSBzZWxlY3RlZCB1c2VybmFtZXMgKGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGFuZCBwb3Rl bnRpYWxseQotICAgICAgICAgICAgc3RvbXBpbmcgb24gYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9u KS4KLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgdXNlcm1hcCA9IHt9Ci0KLSAgICAgICAg ICAgIGZvciB1IGluIHVzZXJrZXlzOgotICAgICAgICAgICAgICAgICMgVE9ETzogdXNlIGEgdW5p cXVpZmllciB0byBzdXBwb3J0IGluc3RhbGxjaGVjawotICAgICAgICAgICAgICAgIG5hbWUgPSB1 ICsgInVzZXIiCi0gICAgICAgICAgICAgICAgdXNlcm1hcFt1XSA9IG5hbWUKLQotICAgICAgICAg ICAgICAgICMgVE9ETzogcHJvcGVyIGVzY2FwaW5nCi0gICAgICAgICAgICAgICAgc2VsZi5wc3Fs KCItYyIsICJDUkVBVEUgVVNFUiAiICsgbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmNhbGxi YWNrKHNlbGYucHNxbCwgIi1jIiwgIkRST1AgVVNFUiAiICsgbmFtZSkKLQotICAgICAgICAgICAg cmV0dXJuIHVzZXJtYXAKLQotICAgICAgICBkZWYgY3JlYXRlX2RicyhzZWxmLCAqZGJrZXlzOiBz dHIpIC0+IERpY3Rbc3RyLCBzdHJdOgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBDcmVh dGVzIG5ldyBkYXRhYmFzZXMgd2hpY2ggd2lsbCBiZSBkcm9wcGVkIGF0IHRoZSBlbmQgb2YgdGhl IHNlcnZlcgotICAgICAgICAgICAgY29udGV4dC4gU2VlIGNyZWF0ZV91c2VycygpIGZvciB0aGUg bWVhbmluZyBvZiB0aGUga2V5cyBhbmQgcmV0dXJuZWQKLSAgICAgICAgICAgIG1hcC4KLSAgICAg ICAgICAgICIiIgotICAgICAgICAgICAgZGJtYXAgPSB7fQotCi0gICAgICAgICAgICBmb3IgZCBp biBkYmtleXM6Ci0gICAgICAgICAgICAgICAgIyBUT0RPOiB1c2UgYSB1bmlxdWlmaWVyIHRvIHN1 cHBvcnQgaW5zdGFsbGNoZWNrCi0gICAgICAgICAgICAgICAgbmFtZSA9IGQgKyAiZGIiCi0gICAg ICAgICAgICAgICAgZGJtYXBbZF0gPSBuYW1lCi0KLSAgICAgICAgICAgICAgICAjIFRPRE86IHBy b3BlciBlc2NhcGluZwotICAgICAgICAgICAgICAgIHNlbGYucHNxbCgiLWMiLCAiQ1JFQVRFIERB VEFCQVNFICIgKyBuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5wc3Fs LCAiLWMiLCAiRFJPUCBEQVRBQkFTRSAiICsgbmFtZSkKLQotICAgICAgICAgICAgcmV0dXJuIGRi bWFwCi0KLSAgICAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICAgICAgZGVmIHJl bG9hZGluZyhzZWxmKToKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgUHJvdmlkZXMgYSBj b250ZXh0IG1hbmFnZXIgZm9yIG1ha2luZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuCi0KLSAgICAg ICAgICAgIElmIHRoZSBjb250ZXh0IHN1aXRlIGZpbmlzaGVzIHN1Y2Nlc3NmdWxseSwgdGhlIGNv bmZpZ3VyYXRpb24gd2lsbAotICAgICAgICAgICAgYmUgcmVsb2FkZWQgdmlhIHBnX2N0bC4gT24g dGVhcmRvd24sIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgd2lsbAotICAgICAgICAgICAgYmUg dW53b3VuZCwgYW5kIHRoZSBzZXJ2ZXIgd2lsbCBiZSBzaWduYWxlZCB0byByZWxvYWQgYWdhaW4u Ci0KLSAgICAgICAgICAgIFRoZSBjb250ZXh0IHRhcmdldCBjb250YWlucyB0aGUgZm9sbG93aW5n IGF0dHJpYnV0ZXMgd2hpY2ggY2FuIGJlCi0gICAgICAgICAgICB1c2VkIHRvIGNvbmZpZ3VyZSB0 aGUgc2VydmVyOgotICAgICAgICAgICAgLSAuY29uZjogbW9kaWZpZXMgcG9zdGdyZXNxbC5jb25m Ci0gICAgICAgICAgICAtIC5oYmE6IG1vZGlmaWVzIHBnX2hiYS5jb25mCi0KLSAgICAgICAgICAg IEZvciBleGFtcGxlOgotCi0gICAgICAgICAgICAgICAgd2l0aCBwZ19zZXJ2ZXJfc2Vzc2lvbi5y ZWxvYWRpbmcoKSBhcyBzOgotICAgICAgICAgICAgICAgICAgICBzLmNvbmYuc2V0KGxvZ19jb25u ZWN0aW9ucz0ib24iKQotICAgICAgICAgICAgICAgICAgICBzLmhiYS5wcmVwZW5kKCJsb2NhbCBh bGwgYWxsIHRydXN0IikKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgdHJ5OgotICAgICAg ICAgICAgICAgICMgUHVzaCBhIHJlbG9hZCBvbnRvIHRoZSBzdGFjayBiZWZvcmUgbWFraW5nIGFu eSBvdGhlcgotICAgICAgICAgICAgICAgICMgdW53aW5kYWJsZSBjaGFuZ2VzLiBUaGF0IHdheSB0 aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyB3aWxsIGJlCi0gICAgICAgICAgICAgICAgIwotICAgICAg ICAgICAgICAgICMgICMgdGVzdAotICAgICAgICAgICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2Ug MQotICAgICAgICAgICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMgotICAgICAgICAgICAgICAg ICMgICAtIHJlbG9hZAotICAgICAgICAgICAgICAgICMgICMgdGVhcmRvd24KLSAgICAgICAgICAg ICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMgotICAgICAgICAgICAgICAgICMgICAtIHVu ZG8gY29uZmlnIGNoYW5nZSAxCi0gICAgICAgICAgICAgICAgIyAgIC0gcmVsb2FkCi0gICAgICAg ICAgICAgICAgIwotICAgICAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5wZ19jdGwsICJy ZWxvYWQiKQotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX2JhY2t1cF9jb25maWd1cmF0aW9u KCkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0 byByZWxvYWQgYXQgdGhlIGVuZCBvZiB0aGUgc3VpdGUgaWYgdGhlcmUgd2VyZQotICAgICAgICAg ICAgICAgICMgbm8gZXJyb3JzLiBEdXJpbmcgZXhjZXB0aW9ucywgdGhlIHB1c2hlZCBjYWxsYmFj ayBoYW5kbGVzCi0gICAgICAgICAgICAgICAgIyB0aGluZ3MgaW5zdGVhZCwgc28gdGhlcmUncyBu b3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVs c2U6Ci0gICAgICAgICAgICAgICAgIyBTdWl0ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAg ICAgICAgICAgICAgIHNlbGYucGdfY3RsKCJyZWxvYWQiKQotCi0gICAgICAgIEBjb250ZXh0bGli LmNvbnRleHRtYW5hZ2VyCi0gICAgICAgIGRlZiByZXN0YXJ0aW5nKHNlbGYpOgotICAgICAgICAg ICAgIiIiTGlrZSAucmVsb2FkaW5nKCksIGJ1dCB3aXRoIGEgZnVsbCBzZXJ2ZXIgcmVzdGFydC4i IiIKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmNhbGxiYWNrKHNlbGYu cGdfY3RsLCAicmVzdGFydCIpCi0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2Nv bmZpZ3VyYXRpb24oKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHJhaXNl Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucGdfY3RsKCJyZXN0YXJ0 IikKLQotICAgICAgICBkZWYgcHNxbChzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICAiIiIKLSAg ICAgICAgICAgIFJ1bnMgcHNxbCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuIFBhc3N3b3JkIHBy b21wdHMgYXJlIGFsd2F5cwotICAgICAgICAgICAgZGlzYWJsZWQuIE9uIFdpbmRvd3MsIHRoZSBh ZG1pbiBwYXNzd29yZCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQotICAgICAgICAgICAgZW52aXJv bm1lbnQuCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgp ID09ICJXaW5kb3dzIjoKLSAgICAgICAgICAgICAgICBwdyA9IGRpY3QoUEdQQVNTV09SRD13aW5w YXNzd29yZCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHcgPSBOb25lCi0K LSAgICAgICAgICAgIHNlbGYuX3J1bigicHNxbCIsICItdyIsICphcmdzLCBhZGRlbnY9cHcpCi0K LSAgICAgICAgZGVmIHBnX2N0bChzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICAiIiIKLSAgICAg ICAgICAgIFJ1bnMgcGdfY3RsIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gTG9nIG91dHB1dCB3 aWxsIGJlIHBsYWNlZCBpbgotICAgICAgICAgICAgcG9zdGdyZXNxbC5sb2cgaW4gdGhlIHNlcnZl cidzIGRhdGEgZGlyZWN0b3J5LgotCi0gICAgICAgICAgICBUT0RPOiBwdXQgdGhlIGxvZyBpbiBU RVNUTE9HRElSCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIHNlbGYuX3J1bigicGdfY3Rs IiwgIi1sIiwgc3RyKGRhdGFkaXIgLyAicG9zdGdyZXNxbC5sb2ciKSwgKmFyZ3MpCi0KLSAgICAg ICAgZGVmIF9ydW4oc2VsZiwgY21kLCAqYXJncywgYWRkZW52OiBkaWN0ID0gTm9uZSk6Ci0gICAg ICAgICAgICAjIE92ZXJyaWRlIHRoZSBleGlzdGluZyBlbnZpcm9ubWVudCB3aXRoIHRoZSBjb25u ZW52IHZhbHVlcyBhbmQKLSAgICAgICAgICAgICMgYW55dGhpbmcgdGhlIGNhbGxlciB3YW50ZWQg dG8gYWRkLiAoUHl0aG9uIDMuOSBnaXZlcyB1cyB0aGUKLSAgICAgICAgICAgICMgbGVzcy11Z2x5 IGBvcy5lbnZpcm9uIHwgY29ubmVudmAgbWVyZ2Ugb3BlcmF0b3IuKQotICAgICAgICAgICAgc3Vi ZW52ID0gZGljdChvcy5lbnZpcm9uLCAqKmNvbm5lbnYpCi0gICAgICAgICAgICBpZiBhZGRlbnY6 Ci0gICAgICAgICAgICAgICAgc3ViZW52LnVwZGF0ZShhZGRlbnYpCi0KLSAgICAgICAgICAgIHN1 YnByb2Nlc3MuY2hlY2tfY2FsbChbY21kLCAqYXJnc10sIGVudj1zdWJlbnYpCi0KLSAgICAgICAg ZGVmIF9iYWNrdXBfY29uZmlndXJhdGlvbihzZWxmKToKLSAgICAgICAgICAgICMgV3JhcCB0aGUg ZXhpc3RpbmcgSEJBIGFuZCBjb25maWd1cmF0aW9uIHdpdGggRmlsZUJhY2t1cHMuCi0gICAgICAg ICAgICByZXR1cm4gc2VsZi5fQmFja3VwKAotICAgICAgICAgICAgICAgIGhiYT1zZWxmLmVudGVy X2NvbnRleHQoSEJBKGRhdGFkaXIpKSwKLSAgICAgICAgICAgICAgICBjb25mPXNlbGYuZW50ZXJf Y29udGV4dChDb25maWcoZGF0YWRpcikpLAotICAgICAgICAgICAgKQotCi0gICAgd2l0aCBfU2Vy dmVyKCkgYXMgczoKLSAgICAgICAgeWllbGQgcwotCi0KLUBweXRlc3QuZml4dHVyZShzY29wZT0i bW9kdWxlIiwgYXV0b3VzZT1UcnVlKQotZGVmIHNzbF9zZXR1cChwZ19zZXJ2ZXJfc2Vzc2lvbiwg Y2VydHMsIGRhdGFkaXIpOgotICAgICIiIgotICAgIFNldHMgdXAgcmVxdWlyZWQgc2VydmVyIHNl dHRpbmdzIGZvciBhbGwgdGVzdHMgaW4gdGhpcyBtb2R1bGUuIFRoZSBmaXh0dXJlCi0gICAgdmFy aWFibGUgaXMgYSB0dXBsZSAodXNlcnMsIGRicykgY29udGFpbmluZyB0aGUgdXNlciBhbmQgZGF0 YWJhc2UgbmFtZXMgdGhhdAotICAgIGhhdmUgYmVlbiBjaG9zZW4gZm9yIHRoZSB0ZXN0IHNlc3Np b24uCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICB3aXRoIHBnX3NlcnZlcl9zZXNzaW9uLnJl c3RhcnRpbmcoKSBhcyBzOgotICAgICAgICAgICAgcy5jb25mLnNldCgKLSAgICAgICAgICAgICAg ICBzc2w9Im9uIiwKLSAgICAgICAgICAgICAgICBzc2xfY2FfZmlsZT1jZXJ0cy5jYS5jZXJ0cGF0 aCwKLSAgICAgICAgICAgICAgICBzc2xfY2VydF9maWxlPWNlcnRzLnNlcnZlci5jZXJ0cGF0aCwK LSAgICAgICAgICAgICAgICBzc2xfa2V5X2ZpbGU9Y2VydHMuc2VydmVyLmtleXBhdGgsCi0gICAg ICAgICAgICApCi0KLSAgICAgICAgICAgICMgUmVqZWN0IGJ5IGRlZmF1bHQuCi0gICAgICAgICAg ICBzLmhiYS5wcmVwZW5kKCJob3N0c3NsIGFsbCBhbGwgYWxsIHJlamVjdCIpCi0KLSAgICBleGNl cHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICMgVGhpcyBpcyBhIGRl Y2VudCBwbGFjZSB0byBza2lwIGlmIHRoZSBzZXJ2ZXIgaXNuJ3Qgc2V0IHVwIGZvciBTU0wuCi0g ICAgICAgIGxvZ3BhdGggPSBkYXRhZGlyIC8gInBvc3RncmVzcWwubG9nIgotICAgICAgICB1bnN1 cHBvcnRlZCA9IHJlLmNvbXBpbGUoIlNTTCBpcyBub3Qgc3VwcG9ydGVkIikKLQotICAgICAgICB3 aXRoIG9wZW4obG9ncGF0aCwgInIiKSBhcyBsb2c6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBs b2c6Ci0gICAgICAgICAgICAgICAgaWYgdW5zdXBwb3J0ZWQuc2VhcmNoKGxpbmUpOgotICAgICAg ICAgICAgICAgICAgICBweXRlc3Quc2tpcCgidGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNT TCIpCi0KLSAgICAgICAgIyBTb21lIG90aGVyIGVycm9yIGhhcHBlbmVkLgotICAgICAgICByYWlz ZQotCi0gICAgdXNlcnMgPSBwZ19zZXJ2ZXJfc2Vzc2lvbi5jcmVhdGVfdXNlcnMoCi0gICAgICAg ICJzc2wiLAotICAgICkKLQotICAgIGRicyA9IHBnX3NlcnZlcl9zZXNzaW9uLmNyZWF0ZV9kYnMo Ci0gICAgICAgICJzc2wiLAotICAgICkKLQotICAgIHJldHVybiAodXNlcnMsIGRicykKLQotCi1A cHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCi1kZWYgY2xpZW50X2NlcnQoc3NsX3NldHVw LCBjZXJ0cyk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlcyBhIENlcnQgZm9yIHRoZSAic3NsIiB1c2Vy LgotICAgICIiIgotICAgIGZyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5Ci0gICAgZnJvbSBj cnlwdG9ncmFwaHkueDUwOS5vaWQgaW1wb3J0IE5hbWVPSUQKLQotICAgIHVzZXJzLCBfID0gc3Ns X3NldHVwCi0gICAgdXNlciA9IHVzZXJzWyJzc2wiXQotCi0gICAgcmV0dXJuIGNlcnRzLm5ldyh4 NTA5Lk5hbWUoW3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1PTl9OQU1FLCB1c2VyKV0p KQotCi0KLUBweXRlc3QuZml4dHVyZQotZGVmIHBnX3NlcnZlcihwZ19zZXJ2ZXJfc2Vzc2lvbik6 Ci0gICAgIiIiCi0gICAgQSBwZXItdGVzdCBpbnN0YW5jZSBvZiBwZ19zZXJ2ZXJfc2Vzc2lvbi4g VXNlIHRoaXMgZml4dHVyZSB0byBtYWtlIGNoYW5nZXMKLSAgICB0byB0aGUgc2VydmVyIHdoaWNo IHdpbGwgYmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBldmVyeSB0ZXN0LgotICAgICIiIgot ICAgIHdpdGggcGdfc2VydmVyX3Nlc3Npb24uc3ViY29udGV4dCgpIGFzIHM6Ci0gICAgICAgIHlp ZWxkIHMKLQotCiAjCiAjIFRlc3RzCiAjCkBAIC0zOTQsOCArMjgsOCBAQCBDTElFTlQgPSAiY2xp ZW50IgogU0VSVkVSID0gInNlcnZlciIKIAogCisjIGZtdDogb2ZmCiBAcHl0ZXN0Lm1hcmsucGFy YW1ldHJpemUoCi0gICAgIyBmbXQ6IG9mZgogICAgICJhdXRoX21ldGhvZCwgICAgICAgICAgICAg ICAgICAgIGNyZWRzLCAgZXhwZWN0ZWRfZXJyb3IiLAogWwogICAgICMgVHJ1c3QgYWxsb3dzIGFu eXRoaW5nLgpAQCAtNDE2LDEwICs1MCwxMCBAQCBTRVJWRVIgPSAic2VydmVyIgogICAgICgiY2Vy dCIsICAgICAgICAgICAgICAgICAgICAgICAgIENMSUVOVCwgTm9uZSksCiAgICAgKCJjZXJ0Iiwg ICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVSLCAiYXV0aGVudGljYXRpb24gZmFpbGVkIGZv ciB1c2VyIiksCiBdLAotICAgICMgZm10OiBvbgogKQorIyBmbXQ6IG9uCiBkZWYgdGVzdF9kaXJl Y3Rfc3NsX2NlcnRpZmljYXRlX2F1dGhlbnRpY2F0aW9uKAotICAgIHBnX3NlcnZlciwKKyAgICBw ZywKICAgICBzc2xfc2V0dXAsCiAgICAgY2VydHMsCiAgICAgY2xpZW50X2NlcnQsCkBAIC00NDAs NyArNzQsNyBAQCBkZWYgdGVzdF9kaXJlY3Rfc3NsX2NlcnRpZmljYXRlX2F1dGhlbnRpY2F0aW9u KAogICAgIHVzZXIgPSB1c2Vyc1sic3NsIl0KICAgICBkYiA9IGRic1sic3NsIl0KIAotICAgIHdp dGggcGdfc2VydmVyLnJlbG9hZGluZygpIGFzIHM6CisgICAgd2l0aCBwZy5yZWxvYWRpbmcoKSBh cyBzOgogICAgICAgICBzLmhiYS5wcmVwZW5kKAogICAgICAgICAgICAgWyJob3N0c3NsIiwgZGIs IHVzZXIsICIxMjcuMC4wLjEvMzIiLCBhdXRoX21ldGhvZF0sCiAgICAgICAgICAgICBbImhvc3Rz c2wiLCBkYiwgdXNlciwgIjo6MS8xMjgiLCBhdXRoX21ldGhvZF0sCkBAIC00NjEsNyArOTUsNyBA QCBkZWYgdGVzdF9kaXJlY3Rfc3NsX2NlcnRpZmljYXRlX2F1dGhlbnRpY2F0aW9uKAogCiAgICAg IyBNYWtlIGEgZGlyZWN0IFNTTCBjb25uZWN0aW9uLiBUaGVyZSdzIG5vIFNTTFJlcXVlc3QgaW4g dGhlIGhhbmRzaGFrZTsgd2UKICAgICAjIHNpbXBseSB3cmFwIGEgVENQIGNvbm5lY3Rpb24gd2l0 aCBPcGVuU1NMLgotICAgIGFkZHIgPSAocGdfc2VydmVyLmNvbm5pbmZvWyJob3N0YWRkciJdLCBw Z19zZXJ2ZXIuY29ubmluZm9bInBvcnQiXSkKKyAgICBhZGRyID0gKHBnLmhvc3RhZGRyLCBwZy5w b3J0KQogICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpIGFzIHM6CiAgICAg ICAgIHMuc2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgpKSAgIyBYWFggdGhpcyByZXNldHMg ZXZlcnkgb3BlcmF0aW9uCiAKLS0gCjIuNTEuMQoK --5dbd18f6a8ea1df19a1510a133c7ca40a09c81e0d1e67441ddc276828687--