Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qJX5p-0002Jr-UT for pgadmin-hackers@arkaria.postgresql.org; Wed, 12 Jul 2023 10:29:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qJX5o-00062X-FF for pgadmin-hackers@arkaria.postgresql.org; Wed, 12 Jul 2023 10:29:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qJX5o-00062O-2l for pgadmin-hackers@lists.postgresql.org; Wed, 12 Jul 2023 10:29:08 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qJX5k-003eaX-R5 for pgadmin-hackers@postgresql.org; Wed, 12 Jul 2023 10:29:07 +0000 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-262e89a3ee2so3541064a91.1 for ; Wed, 12 Jul 2023 03:29:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689157742; x=1691749742; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JmSekSwcAu/ZZxBu0lIP/8+9tv6gkZwuGvMgHIvw5Go=; b=sv2l7nk/jX4jrxmqy6oMPFFXX7dpxq7ZhQIlhvFRYTTyNSbe5EGZXeLIorCu9n6GTu xPFdLXQ/kLs+60AbKDpEqUv6PZHj7+r7HCGNsEyaK30/3xoAMW9vsqLtOFdqMY6IZPzT p34FMYTIzIVFYlGpwPIlNqdLOA4T/nZrhhovziBFmDujj0bckK0n7kQzWPSR2MMxpd9p RLFrYnrclyFF+k1Uc3GPUkrjTnAtjh/Z3BQBwOg4FZOPLKAqwU0YSLdqxEjdmiHL54zC NOYBdIJAsxbOGBeeTIu8D/rKmf6K2Dpv87m7jxoDKpaMOyiPXmz9etFlxLh2xRoCBknB zanw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689157742; x=1691749742; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JmSekSwcAu/ZZxBu0lIP/8+9tv6gkZwuGvMgHIvw5Go=; b=ZaTSPf2fZP67zGVF+RNDFxYCXJcC2AMfMAJzMXYkPEUM+JLpMJvPqN0zkoLgUjWSoy eaNzJ40R3P7fxH+ZffIM6+LVeG+LvQWR9sTxhNTbHRMQLQSEosn8wNkjOBlP+PTYU6oD ytXIvzg3gi2cTFKnppPWX5U2yR2BdGVDhuVnKzF89+4G+hp/Jdxdvv3dNZzfRASQSIi1 Dy5Y88MRIpcY8aYXJAk4TuczEHQhm6n/xXORwP4gDwCq6WYt6G3CXPecqrbslza+A7oF pLeZvio9kvP2ulduOv13nVMbE9ZslxnxsS1+/UUUWeKISaC5iXm6aCIrG9UHO+UM/cKY 4Tfg== X-Gm-Message-State: ABy/qLbABNXAmtxHddXI/eZomB0ILiE7isCYDvRqMNGbazDAKtTToSVU NjoEhysUXz7J0NibQQYrJKq/qjuqx+uVHwyhw9E= X-Google-Smtp-Source: APBJJlGiVvp6BdAdzkiFqOBGU2U7HrCJuzjx6iHrBbjGE9UoE7I3ACL0tnX36cjmzrW+GkXwXuJSVTfhT4trUc8veac= X-Received: by 2002:a17:90b:3702:b0:260:fe48:360e with SMTP id mg2-20020a17090b370200b00260fe48360emr13525628pjb.29.1689157742337; Wed, 12 Jul 2023 03:29:02 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sahil Harpal Date: Wed, 12 Jul 2023 15:58:48 +0530 Message-ID: Subject: Re: Pgadmin4 System Stats Extension Design To: Khushboo Vashi Cc: Aditya Toshniwal , Ashesh Vashi , Dave Page , Akshay Joshi , pgadmin-hackers@postgresql.org Content-Type: multipart/mixed; boundary="00000000000033bcdc060047af65" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000033bcdc060047af65 Content-Type: multipart/alternative; boundary="00000000000033bcda060047af63" --00000000000033bcda060047af63 Content-Type: text/plain; charset="UTF-8" On Wed, 12 Jul 2023 at 10:47, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > It fails while applying. Can you please rebase your patch and send it? > Could you please try the attached patch. --00000000000033bcda060047af63 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, 12 Jul 2023 at 10:47, Khushboo Vashi <khushboo.vashi@enterprisedb.= com> wrote:
3D""
=C2=A0It fails while applying. Can you= please rebase your patch and send it?=C2=A0
=

Could you please try the attached patch.
--00000000000033bcda060047af63-- --00000000000033bcdc060047af65 Content-Type: application/octet-stream; name="WIP.patch" Content-Disposition: attachment; filename="WIP.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ljzkw4ee0 RnJvbSBiMWI1ZjhhMmUzODEwZDcxOGY3NGYxYTQ3NWM2MWVmMDc1OTNkZGUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB1bmtub3duIDxzYW50b3NoLjJAaWl0ai5hYy5pbj4KRGF0ZTog V2VkLCAyMSBKdW4gMjAyMyAxMzowNTowOCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEFkZGVkIGRh c2hib2FyZCBiYXNlIGxheW91dAoKLS0tCiB3ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pz L0Rhc2hib2FyZC5qc3ggfCAxNzUgKysrKysrKysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTE2IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Rhc2hib2FyZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeCBiL3dlYi9wZ2FkbWluL2Rhc2hi b2FyZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeAppbmRleCA3MTk0ZmNjMTAuLjU4ODU4M2ViMyAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9EYXNoYm9hcmQuanN4 CisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeApAQCAt MTQ4LDkgKzE0OCwxMyBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQoewogfSkg ewogICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CiAgIGxldCB0YWJzID0gW2dldHRleHQo J1Nlc3Npb25zJyksIGdldHRleHQoJ0xvY2tzJyksIGdldHRleHQoJ1ByZXBhcmVkIFRyYW5zYWN0 aW9ucycpXTsKKyAgbGV0IG1haW5UYWJzID0gW2dldHRleHQoJ0dlbmVyYWwnKSwgZ2V0dGV4dCgn U3lzdGVtIFN0YXRpc3RpY3MnKV07CisgIGxldCBzeXN0ZW1TdGF0c1RhYnMgPSBbZ2V0dGV4dCgn U3VtbWFyeScpLCBnZXR0ZXh0KCdDUFUnKSwgZ2V0dGV4dCgnTWVtb3J5JyksIGdldHRleHQoJ1N0 b3JhZ2UnKV07CiAgIGNvbnN0IFtkYXNoRGF0YSwgc2V0ZGFzaERhdGFdID0gdXNlU3RhdGUoW10p OwogICBjb25zdCBbbXNnLCBzZXRNc2ddID0gdXNlU3RhdGUoJycpOwogICBjb25zdCBbdGFiVmFs LCBzZXRUYWJWYWxdID0gdXNlU3RhdGUoMCk7CisgIGNvbnN0IFttYWluVGFiVmFsLCBzZXRtYWlu VGFiVmFsXSA9IHVzZVN0YXRlKDApOworICBjb25zdCBbc3lzdGVtU3RhdHNUYWJWYWwsIHNldFN5 c3RlbVN0YXRzVGFiVmFsXSA9IHVzZVN0YXRlKDApOwogICBjb25zdCBbcmVmcmVzaCwgc2V0UmVm cmVzaF0gPSB1c2VTdGF0ZShmYWxzZSk7CiAgIGNvbnN0IFthY3RpdmVPbmx5LCBzZXRBY3RpdmVP bmx5XSA9IHVzZVN0YXRlKGZhbHNlKTsKICAgY29uc3QgW3NjaGVtYURpY3QsIHNldFNjaGVtYURp Y3RdID0gUmVhY3QudXNlU3RhdGUoe30pOwpAQCAtMTYzLDYgKzE2NywxNCBAQCBleHBvcnQgZGVm YXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQoewogICAgIHNldFRhYlZhbCh0YWJWYWwpOwogICB9Owog CisgIGNvbnN0IG1haW5UYWJDaGFuZ2VkID0gKGUsIHRhYlZhbCkgPT4geworICAgIHNldG1haW5U YWJWYWwodGFiVmFsKTsKKyAgfTsKKworICBjb25zdCBzeXN0ZW1TdGF0c1RhYkNoYW5nZWQgPSAo ZSwgdGFiVmFsKSA9PiB7CisgICAgc2V0U3lzdGVtU3RhdHNUYWJWYWwodGFiVmFsKTsKKyAgfTsK KwogICBjb25zdCBzZXJ2ZXJDb25maWdDb2x1bW5zID0gWwogICAgIHsKICAgICAgIGFjY2Vzc29y OiAnbmFtZScsCkBAIC04NjcsNjggKzg3OSwxMTMgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24g RGFzaGJvYXJkKHsKICAgICAgIHtzaWQgJiYgcHJvcHMuc2VydmVyQ29ubmVjdGVkID8gKAogICAg ICAgICA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5kYXNoYm9hcmRQYW5lbH0+CiAgICAgICAgICAg PEJveCBjbGFzc05hbWU9e2NsYXNzZXMuZW1wdHlQYW5lbH0+Ci0gICAgICAgICAgICB7IV8uaXNV bmRlZmluZWQocHJlZmVyZW5jZXMpICYmIHByZWZlcmVuY2VzLnNob3dfZ3JhcGhzICYmICgKLSAg ICAgICAgICAgICAgPEdyYXBocwotICAgICAgICAgICAgICAgIGtleT17c2lkICsgZGlkfQotICAg ICAgICAgICAgICAgIHByZWZlcmVuY2VzPXtwcmVmZXJlbmNlc30KLSAgICAgICAgICAgICAgICBz aWQ9e3NpZH0KLSAgICAgICAgICAgICAgICBkaWQ9e2RpZH0KLSAgICAgICAgICAgICAgICBwYWdl VmlzaWJsZT17cHJvcHMucGFuZWxWaXNpYmxlfQotICAgICAgICAgICAgICA+PC9HcmFwaHM+Ci0g ICAgICAgICAgICApfQotICAgICAgICAgICAgeyFfLmlzVW5kZWZpbmVkKHByZWZlcmVuY2VzKSAm JiBwcmVmZXJlbmNlcy5zaG93X2FjdGl2aXR5ICYmICgKLSAgICAgICAgICAgICAgPEJveCBjbGFz c05hbWU9e2NsYXNzZXMucGFuZWxDb250ZW50fT4KLSAgICAgICAgICAgICAgICA8Qm94Ci0gICAg ICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY2FyZEhlYWRlcn0KLSAgICAgICAgICAg ICAgICAgIHRpdGxlPXtwcm9wcy5kYkNvbm5lY3RlZCA/ICBnZXR0ZXh0KCdEYXRhYmFzZSBhY3Rp dml0eScpIDogZ2V0dGV4dCgnU2VydmVyIGFjdGl2aXR5Jyl9Ci0gICAgICAgICAgICAgICAgPgot ICAgICAgICAgICAgICAgICAge3Byb3BzLmRiQ29ubmVjdGVkID8gIGdldHRleHQoJ0RhdGFiYXNl IGFjdGl2aXR5JykgOiBnZXR0ZXh0KCdTZXJ2ZXIgYWN0aXZpdHknKX17JyAnfQorICAgICAgICAg ICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMucGFuZWxDb250ZW50fT4KKyAgICAgICAgICAgICAg PEJveCBoZWlnaHQ9IjEwMCUiIGRpc3BsYXk9ImZsZXgiIGZsZXhEaXJlY3Rpb249ImNvbHVtbiI+ CisgICAgICAgICAgICAgICAgPEJveD4KKyAgICAgICAgICAgICAgICAgIDxUYWJzCisgICAgICAg ICAgICAgICAgICAgIHZhbHVlPXttYWluVGFiVmFsfQorICAgICAgICAgICAgICAgICAgICBvbkNo YW5nZT17bWFpblRhYkNoYW5nZWR9CisgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAg ICAgICAgIHttYWluVGFicy5tYXAoKHRhYlZhbHVlKSA9PiB7CisgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIDxUYWIga2V5PXt0YWJWYWx1ZX0gbGFiZWw9e3RhYlZhbHVlfSAvPjsKKyAgICAg ICAgICAgICAgICAgICAgfSl9CisgICAgICAgICAgICAgICAgICAgIDxSZWZyZXNoQnV0dG9uLz4K KyAgICAgICAgICAgICAgICAgIDwvVGFicz4KICAgICAgICAgICAgICAgICA8L0JveD4KLSAgICAg ICAgICAgICAgICA8Qm94IGhlaWdodD0iMTAwJSIgZGlzcGxheT0iZmxleCIgZmxleERpcmVjdGlv bj0iY29sdW1uIj4KLSAgICAgICAgICAgICAgICAgIDxCb3g+Ci0gICAgICAgICAgICAgICAgICAg IDxUYWJzCi0gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RhYlZhbH0KLSAgICAgICAgICAg ICAgICAgICAgICBvbkNoYW5nZT17dGFiQ2hhbmdlZH0KLSAgICAgICAgICAgICAgICAgICAgPgot ICAgICAgICAgICAgICAgICAgICAgIHt0YWJzLm1hcCgodGFiVmFsdWUpID0+IHsKLSAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiA8VGFiIGtleT17dGFiVmFsdWV9IGxhYmVsPXt0YWJWYWx1 ZX0gLz47Ci0gICAgICAgICAgICAgICAgICAgICAgfSl9Ci0gICAgICAgICAgICAgICAgICAgICAg PFJlZnJlc2hCdXR0b24vPgotICAgICAgICAgICAgICAgICAgICA8L1RhYnM+CisgICAgICAgICAg ICAgICAgey8qIEdlbmVyYWwgU3RhdGlzdGljcyAqL30KKyAgICAgICAgICAgICAgICA8VGFiUGFu ZWwgdmFsdWU9e21haW5UYWJWYWx9IGluZGV4PXswfSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRh YlBhbmVsfT4KKyAgICAgICAgICAgICAgICAgIHshXy5pc1VuZGVmaW5lZChwcmVmZXJlbmNlcykg JiYgcHJlZmVyZW5jZXMuc2hvd19ncmFwaHMgJiYgKAorICAgICAgICAgICAgICAgICAgICA8R3Jh cGhzCisgICAgICAgICAgICAgICAgICAgICAga2V5PXtzaWQgKyBkaWR9CisgICAgICAgICAgICAg ICAgICAgICAgcHJlZmVyZW5jZXM9e3ByZWZlcmVuY2VzfQorICAgICAgICAgICAgICAgICAgICAg IHNpZD17c2lkfQorICAgICAgICAgICAgICAgICAgICAgIGRpZD17ZGlkfQorICAgICAgICAgICAg ICAgICAgICAgIHBhZ2VWaXNpYmxlPXtwcm9wcy5wYW5lbFZpc2libGV9CisgICAgICAgICAgICAg ICAgICAgID48L0dyYXBocz4KKyAgICAgICAgICAgICAgICAgICl9CisgICAgICAgICAgICAgICAg ICB7IV8uaXNVbmRlZmluZWQocHJlZmVyZW5jZXMpICYmIHByZWZlcmVuY2VzLnNob3dfYWN0aXZp dHkgJiYgKAorICAgICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5l bENvbnRlbnR9PgorICAgICAgICAgICAgICAgICAgICAgIDxCb3gKKyAgICAgICAgICAgICAgICAg ICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5jYXJkSGVhZGVyfQorICAgICAgICAgICAgICAgICAg ICAgICAgdGl0bGU9e3Byb3BzLmRiQ29ubmVjdGVkID8gIGdldHRleHQoJ0RhdGFiYXNlIGFjdGl2 aXR5JykgOiBnZXR0ZXh0KCdTZXJ2ZXIgYWN0aXZpdHknKX0KKyAgICAgICAgICAgICAgICAgICAg ICA+CisgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuZGJDb25uZWN0ZWQgPyAgZ2V0dGV4 dCgnRGF0YWJhc2UgYWN0aXZpdHknKSA6IGdldHRleHQoJ1NlcnZlciBhY3Rpdml0eScpfXsnICd9 CisgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+CisgICAgICAgICAgICAgICAgICAgICAgPEJv eCBoZWlnaHQ9IjEwMCUiIGRpc3BsYXk9ImZsZXgiIGZsZXhEaXJlY3Rpb249ImNvbHVtbiI+Cisg ICAgICAgICAgICAgICAgICAgICAgICA8Qm94PgorICAgICAgICAgICAgICAgICAgICAgICAgICA8 VGFicworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJWYWx9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RhYkNoYW5nZWR9CisgICAgICAgICAgICAg ICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFicy5tYXAoKHRh YlZhbHVlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFRhYiBr ZXk9e3RhYlZhbHVlfSBsYWJlbD17dGFiVmFsdWV9IC8+OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0pfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWZyZXNoQnV0dG9uLz4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJzPgorICAgICAgICAgICAgICAgICAgICAg ICAgPC9Cb3g+CisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3RhYlZh bH0gaW5kZXg9ezB9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9PgorICAgICAgICAg ICAgICAgICAgICAgICAgICA8UGdUYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh dmVUYWJsZT17ZmFsc2V9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSGVhZGVy PXtDdXN0b21BY3RpdmVPbmx5SGVhZGVyfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bHVtbnM9e2FjdGl2aXR5Q29sdW1uc30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PXtmaWx0ZXJlZERhc2hEYXRhfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYT17 c2NoZW1hRGljdH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvUGdUYWJsZT4KKyAgICAg ICAgICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8 VGFiUGFuZWwgdmFsdWU9e3RhYlZhbH0gaW5kZXg9ezF9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMu dGFiUGFuZWx9PgorICAgICAgICAgICAgICAgICAgICAgICAgICA8UGdUYWJsZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhdmVUYWJsZT17ZmFsc2V9CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29sdW1ucz17ZGF0YWJhc2VMb2Nrc0NvbHVtbnN9CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT17ZGFzaERhdGF9CisgICAgICAgICAgICAgICAgICAgICAgICAgID48 L1BnVGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYlBhbmVsPgorICAgICAgICAg ICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXt0YWJWYWx9IGluZGV4PXsyfSBjbGFzc05h bWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPFBn VGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXZlVGFibGU9e2ZhbHNlfQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2RhdGFiYXNlUHJlcGFyZWRDb2x1bW5z fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9e2Rhc2hEYXRhfQorICAgICAgICAg ICAgICAgICAgICAgICAgICA+PC9QZ1RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9U YWJQYW5lbD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dGFiVmFs fSBpbmRleD17M30gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+CisgICAgICAgICAg ICAgICAgICAgICAgICAgIDxQZ1RhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F2 ZVRhYmxlPXtmYWxzZX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtzZXJ2 ZXJDb25maWdDb2x1bW5zfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9e2Rhc2hE YXRhfQorICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9QZ1RhYmxlPgorICAgICAgICAgICAg ICAgICAgICAgICAgPC9UYWJQYW5lbD4KKyAgICAgICAgICAgICAgICAgICAgICA8L0JveD4KKyAg ICAgICAgICAgICAgICAgICAgPC9Cb3g+CisgICAgICAgICAgICAgICAgICApfQorICAgICAgICAg ICAgICAgIDwvVGFiUGFuZWw+CisgICAgICAgICAgICAgICAgey8qIFN5c3RlbSBTdGF0aXN0aWNz ICovfQorICAgICAgICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17bWFpblRhYlZhbH0gaW5kZXg9 ezF9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9PgorICAgICAgICAgICAgICAgICAg PEJveCBoZWlnaHQ9IjEwMCUiIGRpc3BsYXk9ImZsZXgiIGZsZXhEaXJlY3Rpb249ImNvbHVtbiI+ CisgICAgICAgICAgICAgICAgICAgIDxCb3g+CisgICAgICAgICAgICAgICAgICAgICAgPFRhYnMK KyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzeXN0ZW1TdGF0c1RhYlZhbH0KKyAgICAg ICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzeXN0ZW1TdGF0c1RhYkNoYW5nZWR9CisgICAg ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAge3N5c3RlbVN0YXRz VGFicy5tYXAoKHRhYlZhbHVlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biA8VGFiIGtleT17dGFiVmFsdWV9IGxhYmVsPXt0YWJWYWx1ZX0gLz47CisgICAgICAgICAgICAg ICAgICAgICAgICB9KX0KKyAgICAgICAgICAgICAgICAgICAgICA8L1RhYnM+CisgICAgICAgICAg ICAgICAgICAgIDwvQm94PgorICAgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3N5 c3RlbVN0YXRzVGFiVmFsfSBpbmRleD17MH0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5l bH0+CisgICAgICAgICAgICAgICAgICAgICAgU3VtbWFyeQorICAgICAgICAgICAgICAgICAgICA8 L1RhYlBhbmVsPgorICAgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3N5c3RlbVN0 YXRzVGFiVmFsfSBpbmRleD17MX0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+Cisg ICAgICAgICAgICAgICAgICAgICAgQ1BVCisgICAgICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+ CisgICAgICAgICAgICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17c3lzdGVtU3RhdHNUYWJWYWx9 IGluZGV4PXsyfSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KKyAgICAgICAgICAg ICAgICAgICAgICBNZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgPC9UYWJQYW5lbD4KKyAgICAg ICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXtzeXN0ZW1TdGF0c1RhYlZhbH0gaW5kZXg9 ezN9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9PgorICAgICAgICAgICAgICAgICAg ICAgIFN0b3JhZ2UKKyAgICAgICAgICAgICAgICAgICAgPC9UYWJQYW5lbD4KICAgICAgICAgICAg ICAgICAgIDwvQm94PgotICAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXt0YWJWYWx9 IGluZGV4PXswfSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KLSAgICAgICAgICAg ICAgICAgICAgPFBnVGFibGUKLSAgICAgICAgICAgICAgICAgICAgICBjYXZlVGFibGU9e2ZhbHNl fQotICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUhlYWRlcj17Q3VzdG9tQWN0aXZlT25seUhl YWRlcn0KLSAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXthY3Rpdml0eUNvbHVtbnN9Ci0g ICAgICAgICAgICAgICAgICAgICAgZGF0YT17ZmlsdGVyZWREYXNoRGF0YX0KLSAgICAgICAgICAg ICAgICAgICAgICBzY2hlbWE9e3NjaGVtYURpY3R9Ci0gICAgICAgICAgICAgICAgICAgID48L1Bn VGFibGU+Ci0gICAgICAgICAgICAgICAgICA8L1RhYlBhbmVsPgotICAgICAgICAgICAgICAgICAg PFRhYlBhbmVsIHZhbHVlPXt0YWJWYWx9IGluZGV4PXsxfSBjbGFzc05hbWVSb290PXtjbGFzc2Vz LnRhYlBhbmVsfT4KLSAgICAgICAgICAgICAgICAgICAgPFBnVGFibGUKLSAgICAgICAgICAgICAg ICAgICAgICBjYXZlVGFibGU9e2ZhbHNlfQotICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9 e2RhdGFiYXNlTG9ja3NDb2x1bW5zfQotICAgICAgICAgICAgICAgICAgICAgIGRhdGE9e2Rhc2hE YXRhfQotICAgICAgICAgICAgICAgICAgICA+PC9QZ1RhYmxlPgotICAgICAgICAgICAgICAgICAg PC9UYWJQYW5lbD4KLSAgICAgICAgICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dGFiVmFsfSBp bmRleD17Mn0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+Ci0gICAgICAgICAgICAg ICAgICAgIDxQZ1RhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgY2F2ZVRhYmxlPXtmYWxzZX0K LSAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtkYXRhYmFzZVByZXBhcmVkQ29sdW1uc30K LSAgICAgICAgICAgICAgICAgICAgICBkYXRhPXtkYXNoRGF0YX0KLSAgICAgICAgICAgICAgICAg ICAgPjwvUGdUYWJsZT4KLSAgICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+Ci0gICAgICAgICAg ICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3RhYlZhbH0gaW5kZXg9ezN9IGNsYXNzTmFtZVJvb3Q9 e2NsYXNzZXMudGFiUGFuZWx9PgotICAgICAgICAgICAgICAgICAgICA8UGdUYWJsZQotICAgICAg ICAgICAgICAgICAgICAgIGNhdmVUYWJsZT17ZmFsc2V9Ci0gICAgICAgICAgICAgICAgICAgICAg Y29sdW1ucz17c2VydmVyQ29uZmlnQ29sdW1uc30KLSAgICAgICAgICAgICAgICAgICAgICBkYXRh PXtkYXNoRGF0YX0KLSAgICAgICAgICAgICAgICAgICAgPjwvUGdUYWJsZT4KLSAgICAgICAgICAg ICAgICAgIDwvVGFiUGFuZWw+Ci0gICAgICAgICAgICAgICAgPC9Cb3g+CisgICAgICAgICAgICAg ICAgPC9UYWJQYW5lbD4KICAgICAgICAgICAgICAgPC9Cb3g+Ci0gICAgICAgICAgICApfQorICAg ICAgICAgICAgPC9Cb3g+CiAgICAgICAgICAgPC9Cb3g+CiAgICAgICAgIDwvQm94PgogICAgICAg KSA6IHNob3dEZWZhdWx0Q29udGVudHMoKSB9Ci0tIAoyLjQxLjAud2luZG93cy4xCgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vZGFz aGJvYXJkL19faW5pdF9fLnB5CmluZGV4IDFkYWM1NGU3NC4uMTJmNDkxZWE2IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vZGFz aGJvYXJkL19faW5pdF9fLnB5CkBAIC0xOTcsNiArMTk3LDkgQEAgY2xhc3MgRGFzaGJvYXJkTW9k dWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICAgICAgJ2Rhc2hib2FyZC5nZXRfcHJlcGFyZWRf YnlfZGF0YWJhc2VfaWQnLAogICAgICAgICAgICAgJ2Rhc2hib2FyZC5jb25maWcnLAogICAgICAg ICAgICAgJ2Rhc2hib2FyZC5nZXRfY29uZmlnX2J5X3NlcnZlcl9pZCcsCisgICAgICAgICAgICAn ZGFzaGJvYXJkLnN5c3RlbV9zdGF0aXN0aWNzJywKKyAgICAgICAgICAgICdkYXNoYm9hcmQuc3lz dGVtX3N0YXRpc3RpY3Nfc2lkJywKKyAgICAgICAgICAgICdkYXNoYm9hcmQuc3lzdGVtX3N0YXRp c3RpY3NfZGlkJywKICAgICAgICAgXQogCiAKQEAgLTUzNiwzICs1MzksMzggQEAgZGVmIHRlcm1p bmF0ZV9zZXNzaW9uKHNpZD1Ob25lLCBkaWQ9Tm9uZSwgcGlkPU5vbmUpOgogICAgICAgICByZXNw b25zZT1nZXR0ZXh0KCJTdWNjZXNzIikgaWYgcmVzIGVsc2UgZ2V0dGV4dCgiRmFpbGVkIiksCiAg ICAgICAgIHN0YXR1cz0yMDAKICAgICApCisKKworIyBTeXN0ZW0gU3RhdGlzdGljcyBCYWNrZW5k CitAYmx1ZXByaW50LnJvdXRlKCcvc3lzdGVtX3N0YXRpc3RpY3MnLAorICAgICAgICAgICAgICAg ICBlbmRwb2ludD0nc3lzdGVtX3N0YXRpc3RpY3MnLCBtZXRob2RzPVsnR0VUJ10pCitAYmx1ZXBy aW50LnJvdXRlKCcvc3lzdGVtX3N0YXRpc3RpY3MvPGludDpzaWQ+JywKKyAgICAgICAgICAgICAg ICAgZW5kcG9pbnQ9J3N5c3RlbV9zdGF0aXN0aWNzX3NpZCcsIG1ldGhvZHM9WydHRVQnXSkKK0Bi bHVlcHJpbnQucm91dGUoJy9zeXN0ZW1fc3RhdGlzdGljcy88aW50OnNpZD4vPGludDpkaWQ+JywK KyAgICAgICAgICAgICAgICAgZW5kcG9pbnQ9J3N5c3RlbV9zdGF0aXN0aWNzX2RpZCcsIG1ldGhv ZHM9WydHRVQnXSkKKworQGxvZ2luX3JlcXVpcmVkCitAY2hlY2tfcHJlY29uZGl0aW9uCitkZWYg c3lzdGVtX3N0YXRpc3RpY3Moc2lkPU5vbmUsIGRpZD1Ob25lKToKKyAgICByZXNwX2RhdGEgPSB7 fQorCisgICAgaWYgcmVxdWVzdC5hcmdzWydjaGFydF9uYW1lcyddICE9ICcnOgorICAgICAgICBj aGFydF9uYW1lcyA9IHJlcXVlc3QuYXJnc1snY2hhcnRfbmFtZXMnXS5zcGxpdCgnLCcpCisKKyAg ICAgICAgaWYgbm90IHNpZDoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9J1NlcnZlciBJRCBub3Qgc3BlY2lmaWVkLicpCisKKyAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW2cudGVtcGxhdGVfcGF0aCwg J3N5c3RlbV9zdGF0aXN0aWNzLnNxbCddKSwgZGlkPWRpZCwKKyAgICAgICAgICAgIGNoYXJ0X25h bWVzPWNoYXJ0X25hbWVzLAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVzID0gZy5jb25u LmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgZm9yIGNoYXJ0X3JvdyBpbiByZXNbJ3Jvd3Mn XToKKyAgICAgICAgICAgIHJlc3BfZGF0YVtjaGFydF9yb3dbJ2NoYXJ0X25hbWUnXV0gPSBqc29u LmxvYWRzKAorICAgICAgICAgICAgICAgIGNoYXJ0X3Jvd1snY2hhcnRfZGF0YSddKQorCisgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgIHJlc3BvbnNlPXJlc3BfZGF0YSwKKyAgICAg ICAgc3RhdHVzPTIwMAorICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9z dGF0aWMvanMvQ1BVLmpzeCBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvQ1BVLmpz eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjk0NDJmNDc1NAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvQ1BVLmpzeApAQCAt MCwwICsxLDMyNCBAQAoraW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJl ZiwgdXNlUmVkdWNlciwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCBQZ1RhYmxlIGZy b20gJ3NvdXJjZXMvY29tcG9uZW50cy9QZ1RhYmxlJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3Nv dXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1w b3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7CitpbXBv cnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOworaW1wb3J0IGdldEFwaUluc3RhbmNl IGZyb20gJ3NvdXJjZXMvYXBpX2luc3RhbmNlJzsKK2ltcG9ydCB7Z2V0RXBvY2h9IGZyb20gJ3Nv dXJjZXMvdXRpbHMnOworaW1wb3J0IHtDaGFydENvbnRhaW5lcn0gZnJvbSAnLi9EYXNoYm9hcmQn OworaW1wb3J0IHsgR3JpZCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCB7IERB VEFfUE9JTlRfU0laRSB9IGZyb20gJ3NvdXJjZXMvY2hhcnRqcyc7CitpbXBvcnQgU3RyZWFtaW5n Q2hhcnQgZnJvbSAnLi4vLi4vLi4vc3RhdGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9TdHJlYW1p bmdDaGFydCc7CitpbXBvcnQge3VzZUludGVydmFsfSBmcm9tICdzb3VyY2VzL2N1c3RvbV9ob29r cyc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnOworCitleHBvcnQgY29uc3QgWF9BWElTX0xF TkdUSCA9IDc1OworCitjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkgPT4gKHsK KyAgYXV0b1Jlc2l6ZXI6IHsKKyAgICBoZWlnaHQ6ICcxMDAlICFpbXBvcnRhbnQnLAorICAgIHdp ZHRoOiAnMTAwJSAhaW1wb3J0YW50JywKKyAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdy ZXlbNDAwXSwKKyAgICBwYWRkaW5nOiAnNy41cHgnLAorICAgIG92ZXJmbG93WDogJ2F1dG8gIWlt cG9ydGFudCcsCisgICAgb3ZlcmZsb3dZOiAnaGlkZGVuICFpbXBvcnRhbnQnLAorICAgIG1pbkhl aWdodDogJzEwMCUnLAorICAgIG1pbldpZHRoOiAnMTAwJScsCisgIH0sCisgIGNvbnRhaW5lcjog eworICAgIGhlaWdodDogJ2F1dG8nLAorICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUuZ3Jl eVsyMDBdLAorICAgIHBhZGRpbmc6ICcxMHB4JywKKyAgICBtYXJnaW5Cb3R0b206ICczMHB4JywK KyAgfSwKKyAgZml4ZWRDb250YWluZXI6IHsKKyAgICBoZWlnaHQ6ICc1NzdweCcsCisgICAgYmFj a2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzIwMF0sCisgICAgcGFkZGluZzogJzEwcHgnLAor ICAgIG1hcmdpbkJvdHRvbTogJzMwcHgnLAorICB9LAorICBjb250YWluZXJIZWFkZXI6IHsKKyAg ICBmb250U2l6ZTogJzE2cHgnLAorICAgIGZvbnRXZWlnaHQ6ICdib2xkJywKKyAgICBtYXJnaW5C b3R0b206ICc1cHgnLAorICB9Cit9KSk7CisKK2V4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRh KGxhYmVscywgcmVmcmVzaFJhdGUpIHsKKyAgY29uc3QgY29sb3JzID0gWycjRkY2Mzg0JywnIzM2 QTJFQicsJyNGRkNFNTYnLCcjNEJDMEMwJywnIzk5NjZGRicsJyNGRjlGNDAnLCcjOEQ2RTYzJywn IzIxOTZGMycsJyNGRkVCM0InLCcjOUMyN0IwJywnIzAwQkNENCcsJyNDRERDMzknXTsKKyAgbGV0 IGRhdGFzZXRzID0gT2JqZWN0LmtleXMobGFiZWxzKS5tYXAoKGxhYmVsLCBpKT0+eworICAgIHJl dHVybiB7CisgICAgICBsYWJlbDogbGFiZWwsCisgICAgICBkYXRhOiBsYWJlbHNbbGFiZWxdIHx8 IFtdLAorICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yc1tpXSwKKyAgICAgIHBvaW50SGl0UmFkaXVz OiBEQVRBX1BPSU5UX1NJWkUsCisgICAgfTsKKyAgfSkgfHwgW107CisKKyAgcmV0dXJuIHsKKyAg ICBkYXRhc2V0czogZGF0YXNldHMsCisgICAgcmVmcmVzaFJhdGU6IHJlZnJlc2hSYXRlLAorICB9 OworfQorCisvKiBVUkwgZm9yIGZldGNoaW5nIGdyYXBocyBkYXRhICovCitleHBvcnQgZnVuY3Rp b24gZ2V0U3RhdHNVcmwoc2lkPS0xLCBkaWQ9LTEsIGNoYXJ0X25hbWVzPVtdKSB7CisgIGxldCBi YXNlX3VybCA9IHVybF9mb3IoJ2Rhc2hib2FyZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICBiYXNl X3VybCArPSAnLycgKyBzaWQ7CisgIGJhc2VfdXJsICs9IChkaWQgPiAwKSA/ICgnLycgKyBkaWQp IDogJyc7CisgIGJhc2VfdXJsICs9ICc/Y2hhcnRfbmFtZXM9JyArIGNoYXJ0X25hbWVzLmpvaW4o JywnKTsKKyAgCisgIHJldHVybiBiYXNlX3VybDsKK30KKworLyogVGhpcyB3aWxsIHByb2Nlc3Mg aW5jb21pbmcgY2hhcnRzIGRhdGEgYWRkIGl0IHRoZSBwcmV2aW91cyBjaGFydHMKKyAqIGRhdGEg dG8gZ2V0IHRoZSBuZXcgc3RhdGUuCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBzdGF0c1JlZHVjZXIo c3RhdGUsIGFjdGlvbikgeworCisgIGlmKGFjdGlvbi5yZXNldCkgeworICAgIHJldHVybiBhY3Rp b24ucmVzZXQ7CisgIH0KKworICBpZighYWN0aW9uLmluY29taW5nKSB7CisgICAgcmV0dXJuIHN0 YXRlOworICB9CisKKyAgaWYoIWFjdGlvbi5jb3VudGVyRGF0YSkgeworICAgIGFjdGlvbi5jb3Vu dGVyRGF0YSA9IGFjdGlvbi5pbmNvbWluZzsKKyAgfQorCisgIGxldCBuZXdTdGF0ZSA9IHt9Owor ICBPYmplY3Qua2V5cyhhY3Rpb24uaW5jb21pbmcpLmZvckVhY2gobGFiZWwgPT4geworICAgIGlm KHN0YXRlW2xhYmVsXSkgeworICAgICAgbmV3U3RhdGVbbGFiZWxdID0gWworICAgICAgICBhY3Rp b24uY291bnRlciA/ICBhY3Rpb24uaW5jb21pbmdbbGFiZWxdIC0gYWN0aW9uLmNvdW50ZXJEYXRh W2xhYmVsXSA6IGFjdGlvbi5pbmNvbWluZ1tsYWJlbF0sCisgICAgICAgIC4uLnN0YXRlW2xhYmVs XS5zbGljZSgwLCBYX0FYSVNfTEVOR1RILTEpLAorICAgICAgXTsKKyAgICB9IGVsc2UgeworICAg ICAgbmV3U3RhdGVbbGFiZWxdID0gWworICAgICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rpb24u aW5jb21pbmdbbGFiZWxdIC0gYWN0aW9uLmNvdW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5pbmNv bWluZ1tsYWJlbF0sCisgICAgICBdOworICAgIH0KKyAgfSk7CisgIHJldHVybiBuZXdTdGF0ZTsK K30KKworY29uc3QgY2hhcnRzRGVmYXVsdCA9IHsKKyAgJ2N1X3N0YXRzJzogeydVc2VyIE5vcm1h bCc6IFtdLCAnVXNlciBOaWNlZCc6IFtdLCAnS2VybmVsJzogW10sICdJZGxlJzogW119LAorICAn bGFfc3RhdHMnOiB7JzEgbWluJzogW10sICc1IG1pbnMnOiBbXSwgJzEwIG1pbnMnOiBbXSwgJzE1 IG1pbnMnOiBbXX0sCisgICdwY3Vfc3RhdHMnOiB7fSwKK307CisKK2V4cG9ydCBkZWZhdWx0IGZ1 bmN0aW9uIENQVSh7IHNpZCwgZGlkLCBzZXJ2ZXJDb25lbmN0ZWQsIHBhZ2VWaXNpYmxlLCBlbmFi bGVQb2xsPXRydWV9KSB7CisgIGNvbnN0IHJlZnJlc2hPbiA9IHVzZVJlZihudWxsKTsKKyAgCisg IGNvbnN0IFtjcHVVc2FnZUluZm8sIGNwdVVzYWdlSW5mb1JlZHVjZV0gPSB1c2VSZWR1Y2VyKHN0 YXRzUmVkdWNlciwgY2hhcnRzRGVmYXVsdFsnY3Vfc3RhdHMnXSk7CisgIGNvbnN0IFtsb2FkQXZn SW5mbywgbG9hZEF2Z0luZm9SZWR1Y2VdID0gdXNlUmVkdWNlcihzdGF0c1JlZHVjZXIsIGNoYXJ0 c0RlZmF1bHRbJ2xhX3N0YXRzJ10pOworICBjb25zdCBbcHJvY2Vzc0NwdVVzYWdlU3RhdHMsIHNl dFByb2Nlc3NDcHVVc2FnZVN0YXRzXSA9IHVzZVN0YXRlKFtdKTsKKworICBjb25zdCBbY291bnRl ckRhdGEsIHNldENvdW50ZXJEYXRhXSA9IHVzZVN0YXRlKHt9KTsKKworICBjb25zdCBbcG9sbERl bGF5LCBzZXRQb2xsRGVsYXldID0gdXNlU3RhdGUoNTAwMCk7CisgIGNvbnN0IHRhYmxlSGVhZGVy ID0gWworICAgIHsKKyAgICAgICAgSGVhZGVyOiAnUElEJywKKyAgICAgICAgYWNjZXNzb3I6ICdw aWQnLAorICAgICAgICBzb3J0YWJsZTogdHJ1ZSwKKyAgICAgICAgcmVzaXphYmxlOiB0cnVlLAor ICAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIHsKKyAgICAg ICAgSGVhZGVyOiAnTmFtZScsCisgICAgICAgIGFjY2Vzc29yOiAnbmFtZScsCisgICAgICAgIHNv cnRhYmxlOiB0cnVlLAorICAgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICAgIGRpc2FibGVH bG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgIH0sCisgICAgeworICAgICAgICBIZWFkZXI6ICdDUFUg VXNhZ2UnLAorICAgICAgICBhY2Nlc3NvcjogJ2NwdV91c2FnZScsCisgICAgICAgIHNvcnRhYmxl OiB0cnVlLAorICAgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICAgIGRpc2FibGVHbG9iYWxG aWx0ZXI6IGZhbHNlLAorICAgIH0sCisgIF07CisgIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JN c2ddID0gdXNlU3RhdGUobnVsbCk7CisgIGNvbnN0IFtjaGFydERyYXduT25jZSwgc2V0Q2hhcnRE cmF3bk9uY2VdID0gdXNlU3RhdGUoZmFsc2UpOworCisgIGNvbnN0IFtyZWZyZXNoUHJlZmVyZW5j ZXMsIHNldFJlZnJlc2hQcmVmZXJlbmNlc10gPSB1c2VTdGF0ZSh7J2N1X3N0YXRzJzogNSwgJ2xh X3N0YXRzJzogNjAsICdwY3Vfc3RhdHMnOiAxMH0pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAg IC8qIENoYXJ0cyByZW5kZXJlZCBhcmUgbm90IHZpc2libGUgd2hlbiwgdGhlIGRhc2hib2FyZCBp cyBoaWRkZW4gYnV0IGxhdGVyIHZpc2libGUgKi8KKyAgICBpZihwYWdlVmlzaWJsZSAmJiAhY2hh cnREcmF3bk9uY2UpIHsKKyAgICAgIHNldENoYXJ0RHJhd25PbmNlKHRydWUpOworICAgIH0KKyAg fSwgW3BhZ2VWaXNpYmxlXSk7CisKKyAgdXNlSW50ZXJ2YWwoKCk9PnsKKyAgICBjb25zdCBjdXJy RXBvY2ggPSBnZXRFcG9jaCgpOworICAgIGlmKHJlZnJlc2hPbi5jdXJyZW50ID09PSBudWxsKSB7 CisgICAgICBsZXQgdG1wUmVmID0ge307CisgICAgICBPYmplY3Qua2V5cyhjaGFydHNEZWZhdWx0 KS5mb3JFYWNoKChuYW1lKT0+eworICAgICAgICB0bXBSZWZbbmFtZV0gPSBjdXJyRXBvY2g7Cisg ICAgICB9KTsKKyAgICAgIHJlZnJlc2hPbi5jdXJyZW50ID0gdG1wUmVmOworICAgIH0KKworICAg IGxldCBnZXRGb3IgPSBbXTsKKyAgICBPYmplY3Qua2V5cyhjaGFydHNEZWZhdWx0KS5mb3JFYWNo KChuYW1lKT0+eworICAgICAgaWYoY3VyckVwb2NoID49IHJlZnJlc2hPbi5jdXJyZW50W25hbWVd KSB7CisgICAgICAgIGdldEZvci5wdXNoKG5hbWUpOworICAgICAgICByZWZyZXNoT24uY3VycmVu dFtuYW1lXSA9IGN1cnJFcG9jaCArIHJlZnJlc2hQcmVmZXJlbmNlc1tuYW1lXTsKKyAgICAgIH0K KyAgICB9KTsKKworICAgIGxldCBwYXRoID0gZ2V0U3RhdHNVcmwoc2lkLCBkaWQsIGdldEZvcik7 CisgICAgaWYgKCFwYWdlVmlzaWJsZSl7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGF4aW9z LmdldChwYXRoKQorICAgICAgLnRoZW4oKHJlc3ApPT57CisgICAgICAgIGxldCBkYXRhID0gcmVz cC5kYXRhOworICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsKKyAgICAgICAgc2V0RXJyb3JNc2co bnVsbCk7CisgICAgICAgIGlmKGRhdGEuaGFzT3duUHJvcGVydHkoJ2N1X3N0YXRzJykpeworICAg ICAgICAgIGxldCBuZXdfY3Vfc3RhdHMgPSB7CisgICAgICAgICAgICAnVXNlciBOb3JtYWwnOiBk YXRhWydjdV9zdGF0cyddWyd1c2VybW9kZV9ub3JtYWxfcHJvY2Vzc19wZXJjZW50J10/ZGF0YVsn Y3Vfc3RhdHMnXVsndXNlcm1vZGVfbm9ybWFsX3Byb2Nlc3NfcGVyY2VudCddOjAsIAorICAgICAg ICAgICAgJ1VzZXIgTmljZWQnOiBkYXRhWydjdV9zdGF0cyddWyd1c2VybW9kZV9uaWNlZF9wcm9j ZXNzX3BlcmNlbnQnXT9kYXRhWydjdV9zdGF0cyddWyd1c2VybW9kZV9uaWNlZF9wcm9jZXNzX3Bl cmNlbnQnXTowLCAKKyAgICAgICAgICAgICdLZXJuZWwnOiBkYXRhWydjdV9zdGF0cyddWydrZXJu ZWxtb2RlX3Byb2Nlc3NfcGVyY2VudCddP2RhdGFbJ2N1X3N0YXRzJ11bJ2tlcm5lbG1vZGVfcHJv Y2Vzc19wZXJjZW50J106MCwgCisgICAgICAgICAgICAnSWRsZSc6IGRhdGFbJ2N1X3N0YXRzJ11b J2lkbGVfbW9kZV9wZXJjZW50J10/ZGF0YVsnY3Vfc3RhdHMnXVsnaWRsZV9tb2RlX3BlcmNlbnQn XTowLAorICAgICAgICAgIH07CisgICAgICAgICAgY3B1VXNhZ2VJbmZvUmVkdWNlKHtpbmNvbWlu ZzogbmV3X2N1X3N0YXRzfSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmKGRhdGEu aGFzT3duUHJvcGVydHkoJ2xhX3N0YXRzJykpeworICAgICAgICAgIGxldCBuZXdfbGFfc3RhdHMg PSB7CisgICAgICAgICAgICAnMSBtaW4nOiBkYXRhWydsYV9zdGF0cyddWydsb2FkX2F2Z19vbmVf bWludXRlJ10/ZGF0YVsnbGFfc3RhdHMnXVsnbG9hZF9hdmdfb25lX21pbnV0ZSddOjAsIAorICAg ICAgICAgICAgJzUgbWlucyc6IGRhdGFbJ2xhX3N0YXRzJ11bJ2xvYWRfYXZnX2ZpdmVfbWludXRl cyddP2RhdGFbJ2xhX3N0YXRzJ11bJ2xvYWRfYXZnX2ZpdmVfbWludXRlcyddOjAsIAorICAgICAg ICAgICAgJzEwIG1pbnMnOiBkYXRhWydsYV9zdGF0cyddWydsb2FkX2F2Z190ZW5fbWludXRlcydd P2RhdGFbJ2xhX3N0YXRzJ11bJ2xvYWRfYXZnX3Rlbl9taW51dGVzJ106MCwgCisgICAgICAgICAg ICAnMTUgbWlucyc6IGRhdGFbJ2xhX3N0YXRzJ11bJ2xvYWRfYXZnX2ZpZnRlZW5fbWludXRlcydd P2RhdGFbJ2xhX3N0YXRzJ11bJ2xvYWRfYXZnX2ZpZnRlZW5fbWludXRlcyddOjAsCisgICAgICAg ICAgfTsKKyAgICAgICAgICBsb2FkQXZnSW5mb1JlZHVjZSh7aW5jb21pbmc6IG5ld19sYV9zdGF0 c30pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZihkYXRhLmhhc093blByb3BlcnR5 KCdwY3Vfc3RhdHMnKSl7CisgICAgICAgICAgbGV0IHBjdV9pbmZvX2xpc3QgPSBbXTsKKyAgICAg ICAgICBjb25zdCBwY3VfaW5mb19vYmogPSBkYXRhWydwY3Vfc3RhdHMnXTsKKyAgICAgICAgICBm b3IgKGNvbnN0IGtleSBpbiBwY3VfaW5mb19vYmopIHsKKyAgICAgICAgICAgIHBjdV9pbmZvX2xp c3QucHVzaCh7IGljb246ICcnLCBwaWQ6IHBjdV9pbmZvX29ialtrZXldWydwaWQnXSwgbmFtZTog cGN1X2luZm9fb2JqW2tleV1bJ25hbWUnXSwgY3B1X3VzYWdlOiBwY3VfaW5mb19vYmpba2V5XVsn Y3B1X3VzYWdlJ10gfSk7CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICAgIHNldFBy b2Nlc3NDcHVVc2FnZVN0YXRzKHBjdV9pbmZvX2xpc3QpOworICAgICAgICB9CisKKyAgICAgICAg c2V0Q291bnRlckRhdGEoKHByZXZDb3VudGVyRGF0YSk9PnsKKyAgICAgICAgICByZXR1cm4gewor ICAgICAgICAgICAgLi4ucHJldkNvdW50ZXJEYXRhLAorICAgICAgICAgICAgLi4uZGF0YSwKKyAg ICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgIH0pCisgICAgICAuY2F0Y2goKGVycm9yKT0+ eworICAgICAgICBpZighZXJyb3JNc2cpIHsKKyAgICAgICAgICBjcHVVc2FnZUluZm9SZWR1Y2Uo e3Jlc2V0OmNoYXJ0c0RlZmF1bHRbJ2N1X3N0YXRzJ119KTsKKyAgICAgICAgICBsb2FkQXZnSW5m b1JlZHVjZSh7cmVzZXQ6Y2hhcnRzRGVmYXVsdFsnbGFfc3RhdHMnXX0pOworICAgICAgICAgIHNl dENvdW50ZXJEYXRhKHt9KTsKKyAgICAgICAgICBpZihlcnJvci5yZXNwb25zZSkgeworICAgICAg ICAgICAgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1cyA9PT0gNDI4KSB7CisgICAgICAgICAgICAg IHNldEVycm9yTXNnKGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBzZWxlY3RlZCBzZXJ2 ZXIgdG8gdmlldyB0aGUgZ3JhcGguJykpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IHJlbmRl cmluZyB0aGUgZ3JhcGguJykpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSBpZihl cnJvci5yZXF1ZXN0KSB7CisgICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0ZXh0KCdOb3QgY29u bmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMg YmVlbiBjbG9zZWQuJykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgIH0pOworICB9LCBlbmFibGVQb2xsID8gcG9sbERlbGF5IDogLTEpOworCisgIHJl dHVybiAoCisgICAgPD4KKyAgICAgIDxkaXYgZGF0YS10ZXN0aWQ9J2dyYXBoLXBvbGwtZGVsYXkn IHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0+e3BvbGxEZWxheX08L2Rpdj4KKyAgICAgIHtjaGFy dERyYXduT25jZSAmJgorICAgICAgICA8Q1BVV3JhcHBlcgorICAgICAgICAgIGNwdVVzYWdlSW5m bz17dHJhbnNmb3JtRGF0YShjcHVVc2FnZUluZm8sIHJlZnJlc2hQcmVmZXJlbmNlc1snY3Vfc3Rh dHMnXSl9CisgICAgICAgICAgbG9hZEF2Z0luZm89e3RyYW5zZm9ybURhdGEobG9hZEF2Z0luZm8s IHJlZnJlc2hQcmVmZXJlbmNlc1snbGFfc3RhdHMnXSl9CisgICAgICAgICAgcHJvY2Vzc0NwdVVz YWdlU3RhdHM9e3Byb2Nlc3NDcHVVc2FnZVN0YXRzfQorICAgICAgICAgIHRhYmxlSGVhZGVyPXt0 YWJsZUhlYWRlcn0KKyAgICAgICAgICBlcnJvck1zZz17ZXJyb3JNc2d9CisgICAgICAgICAgc2hv d1Rvb2x0aXA9e3RydWV9CisgICAgICAgICAgc2hvd0RhdGFQb2ludHM9e2ZhbHNlfQorICAgICAg ICAgIGxpbmVCb3JkZXJXaWR0aD17MX0KKyAgICAgICAgICBpc0RhdGFiYXNlPXtkaWQgPiAwfQor ICAgICAgICAgIGlzVGVzdD17ZmFsc2V9CisgICAgICAgIC8+CisgICAgICB9CisgICAgPC8+Cisg ICk7Cit9CisKK0NQVS5wcm9wVHlwZXMgPSB7CisgIHNpZDogUHJvcFR5cGVzLm9uZU9mVHlwZShb UHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRd KSwKKyAgZGlkOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWly ZWQsIFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZF0pLAorICBzZXJ2ZXJDb25uZWN0ZWQ6IFBy b3BUeXBlcy5ib29sLAorICBwYWdlVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsCisgIGVuYWJsZVBv bGw6IFByb3BUeXBlcy5ib29sLAorfTsKKworZXhwb3J0IGZ1bmN0aW9uIENQVVdyYXBwZXIocHJv cHMpIHsKKyAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBjb25zdCBvcHRpb25zID0g dXNlTWVtbygoKT0+KHsKKyAgICBzaG93RGF0YVBvaW50czogcHJvcHMuc2hvd0RhdGFQb2ludHMs CisgICAgc2hvd1Rvb2x0aXA6IHByb3BzLnNob3dUb29sdGlwLAorICAgIGxpbmVCb3JkZXJXaWR0 aDogcHJvcHMubGluZUJvcmRlcldpZHRoLAorICB9KSwgW3Byb3BzLnNob3dUb29sdGlwLCBwcm9w cy5zaG93RGF0YVBvaW50cywgcHJvcHMubGluZUJvcmRlcldpZHRoXSk7CisgIHJldHVybiAoCisg ICAgPD4KKyAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNz ZXMuY29udGFpbmVyfT4KKyAgICAgICAgPEdyaWQgaXRlbSBtZD17Nn0+CisgICAgICAgICAgPGRp diBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dCgnQ1BVIFVzYWdl Jyl9PC9kaXY+CisgICAgICAgICAgPENoYXJ0Q29udGFpbmVyIGlkPSdjdS1ncmFwaCcgdGl0bGU9 e2dldHRleHQoJycpfSBkYXRhc2V0cz17cHJvcHMuY3B1VXNhZ2VJbmZvLmRhdGFzZXRzfSAgZXJy b3JNc2c9e3Byb3BzLmVycm9yTXNnfSBpc1Rlc3Q9e3Byb3BzLmlzVGVzdH0+CisgICAgICAgICAg ICA8U3RyZWFtaW5nQ2hhcnQgZGF0YT17cHJvcHMuY3B1VXNhZ2VJbmZvfSBkYXRhUG9pbnRTaXpl PXtEQVRBX1BPSU5UX1NJWkV9IHhSYW5nZT17WF9BWElTX0xFTkdUSH0gb3B0aW9ucz17b3B0aW9u c30gLz4KKyAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgorICAgICAgICA8L0dyaWQ+CisgICAg ICAgIDxHcmlkIGl0ZW0gbWQ9ezZ9PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2Vz LmNvbnRhaW5lckhlYWRlcn0+e2dldHRleHQoJ0xvYWQgQXZlcmFnZScpfTwvZGl2PgorICAgICAg ICAgIDxDaGFydENvbnRhaW5lciBpZD0nbGEtZ3JhcGgnIHRpdGxlPXtnZXR0ZXh0KCcnKX0gZGF0 YXNldHM9e3Byb3BzLmxvYWRBdmdJbmZvLmRhdGFzZXRzfSAgZXJyb3JNc2c9e3Byb3BzLmVycm9y TXNnfSBpc1Rlc3Q9e3Byb3BzLmlzVGVzdH0+CisgICAgICAgICAgICA8U3RyZWFtaW5nQ2hhcnQg ZGF0YT17cHJvcHMubG9hZEF2Z0luZm99IGRhdGFQb2ludFNpemU9e0RBVEFfUE9JTlRfU0laRX0g eFJhbmdlPXtYX0FYSVNfTEVOR1RIfSBvcHRpb25zPXtvcHRpb25zfSAvPgorICAgICAgICAgIDwv Q2hhcnRDb250YWluZXI+CisgICAgICAgIDwvR3JpZD4KKyAgICAgIDwvR3JpZD4KKyAgICAgIDxH cmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuZml4ZWRDb250YWlu ZXJ9PgorICAgICAgICA8UGdUYWJsZQorICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hdXRv UmVzaXplcn0KKyAgICAgICAgICBjb2x1bW5zPXtwcm9wcy50YWJsZUhlYWRlcn0KKyAgICAgICAg ICBkYXRhPXtwcm9wcy5wcm9jZXNzQ3B1VXNhZ2VTdGF0c30KKyAgICAgICAgICBtc2c9e3Byb3Bz LmVycm9yTXNnfQorICAgICAgICAgIHR5cGU9eydwYW5lbCd9CisgICAgICAgID48L1BnVGFibGU+ CisgICAgICA8L0dyaWQ+CisgICAgPC8+CisgICk7Cit9CisKK2NvbnN0IHByb3BUeXBlU3RhdHMg PSBQcm9wVHlwZXMuc2hhcGUoeworICBkYXRhc2V0czogUHJvcFR5cGVzLmFycmF5LAorICByZWZy ZXNoUmF0ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLAorfSk7CitDUFVXcmFwcGVyLnBy b3BUeXBlcyA9IHsKKyAgY3B1VXNhZ2VJbmZvOiBwcm9wVHlwZVN0YXRzLmlzUmVxdWlyZWQsCisg IGxvYWRBdmdJbmZvOiBwcm9wVHlwZVN0YXRzLmlzUmVxdWlyZWQsCisgIHByb2Nlc3NDcHVVc2Fn ZVN0YXRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCwKKyAgdGFibGVIZWFkZXI6IFByb3BU eXBlcy5hcnJheS5pc1JlcXVpcmVkLAorICBlcnJvck1zZzogUHJvcFR5cGVzLnN0cmluZywKKyAg c2hvd1Rvb2x0aXA6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsCisgIHNob3dEYXRhUG9pbnRz OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLAorICBsaW5lQm9yZGVyV2lkdGg6IFByb3BUeXBl cy5udW1iZXIuaXNSZXF1aXJlZCwKKyAgaXNEYXRhYmFzZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1 aXJlZCwKKyAgaXNUZXN0OiBQcm9wVHlwZXMuYm9vbCwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9EYXNo Ym9hcmQuanN4IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9EYXNoYm9hcmQuanN4 CmluZGV4IDU4ODU4M2ViMy4uNWU4NjE2MDllIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNo Ym9hcmQvc3RhdGljL2pzL0Rhc2hib2FyZC5qc3gKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJk L3N0YXRpYy9qcy9EYXNoYm9hcmQuanN4CkBAIC0yOSw2ICsyOSw5IEBAIGltcG9ydCBfIGZyb20g J2xvZGFzaCc7CiBpbXBvcnQgQ2FjaGVkT3V0bGluZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9p Y29ucy9DYWNoZWRPdXRsaW5lZCc7CiBpbXBvcnQgRW1wdHlQYW5lbE1lc3NhZ2UgZnJvbSAnLi4v Li4vLi4vc3RhdGljL2pzL2NvbXBvbmVudHMvRW1wdHlQYW5lbE1lc3NhZ2UnOwogaW1wb3J0IFRh YlBhbmVsIGZyb20gJy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL1RhYlBhbmVsJzsKK2lt cG9ydCBTdW1tYXJ5IGZyb20gJy4vU3VtbWFyeSc7CitpbXBvcnQgQ1BVIGZyb20gJy4vQ1BVJzsK K2ltcG9ydCBNZW1vcnkgZnJvbSAnLi9NZW1vcnknOwogCiBmdW5jdGlvbiBwYXJzZURhdGEoZGF0 YSkgewogICBsZXQgcmVzID0gW107CkBAIC0xNTQsMTAgKzE1NywxNCBAQCBleHBvcnQgZGVmYXVs dCBmdW5jdGlvbiBEYXNoYm9hcmQoewogICBjb25zdCBbbXNnLCBzZXRNc2ddID0gdXNlU3RhdGUo JycpOwogICBjb25zdCBbdGFiVmFsLCBzZXRUYWJWYWxdID0gdXNlU3RhdGUoMCk7CiAgIGNvbnN0 IFttYWluVGFiVmFsLCBzZXRtYWluVGFiVmFsXSA9IHVzZVN0YXRlKDApOwotICBjb25zdCBbc3lz dGVtU3RhdHNUYWJWYWwsIHNldFN5c3RlbVN0YXRzVGFiVmFsXSA9IHVzZVN0YXRlKDApOwogICBj b25zdCBbcmVmcmVzaCwgc2V0UmVmcmVzaF0gPSB1c2VTdGF0ZShmYWxzZSk7CiAgIGNvbnN0IFth Y3RpdmVPbmx5LCBzZXRBY3RpdmVPbmx5XSA9IHVzZVN0YXRlKGZhbHNlKTsKICAgY29uc3QgW3Nj aGVtYURpY3QsIHNldFNjaGVtYURpY3RdID0gUmVhY3QudXNlU3RhdGUoe30pOworICBjb25zdCBb c3lzdGVtU3RhdHNUYWJWYWwsIHNldFN5c3RlbVN0YXRzVGFiVmFsXSA9IHVzZVN0YXRlKDApOwor ICAgICAgCisgIGNvbnN0IHN5c3RlbVN0YXRzVGFiQ2hhbmdlZCA9IChlLCB0YWJWYWwpID0+IHsK KyAgICAgIHNldFN5c3RlbVN0YXRzVGFiVmFsKHRhYlZhbCk7CisgIH07CiAKICAgaWYgKCFkaWQp IHsKICAgICB0YWJzLnB1c2goZ2V0dGV4dCgnQ29uZmlndXJhdGlvbicpKTsKQEAgLTE3MSwxMCAr MTc4LDYgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGFzaGJvYXJkKHsKICAgICBzZXRtYWlu VGFiVmFsKHRhYlZhbCk7CiAgIH07CiAKLSAgY29uc3Qgc3lzdGVtU3RhdHNUYWJDaGFuZ2VkID0g KGUsIHRhYlZhbCkgPT4gewotICAgIHNldFN5c3RlbVN0YXRzVGFiVmFsKHRhYlZhbCk7Ci0gIH07 Ci0KICAgY29uc3Qgc2VydmVyQ29uZmlnQ29sdW1ucyA9IFsKICAgICB7CiAgICAgICBhY2Nlc3Nv cjogJ25hbWUnLApAQCAtOTU5LDggKzk2Miw4IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERh c2hib2FyZCh7CiAgICAgICAgICAgICAgICAgPC9UYWJQYW5lbD4KICAgICAgICAgICAgICAgICB7 LyogU3lzdGVtIFN0YXRpc3RpY3MgKi99CiAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVl PXttYWluVGFiVmFsfSBpbmRleD17MX0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+ Ci0gICAgICAgICAgICAgICAgICA8Qm94IGhlaWdodD0iMTAwJSIgZGlzcGxheT0iZmxleCIgZmxl eERpcmVjdGlvbj0iY29sdW1uIj4KLSAgICAgICAgICAgICAgICAgICAgPEJveD4KKyAgICAgICAg ICAgICAgICA8Qm94IGhlaWdodD0iMTAwJSIgZGlzcGxheT0iZmxleCIgZmxleERpcmVjdGlvbj0i Y29sdW1uIj4KKyAgICAgICAgICAgICAgICAgIDxCb3g+CiAgICAgICAgICAgICAgICAgICAgICAg PFRhYnMKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzeXN0ZW1TdGF0c1RhYlZhbH0K ICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzeXN0ZW1TdGF0c1RhYkNoYW5nZWR9 CkBAIC05NjksMjAgKzk3MiwzOCBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQo ewogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFRhYiBrZXk9e3RhYlZhbHVlfSBs YWJlbD17dGFiVmFsdWV9IC8+OwogICAgICAgICAgICAgICAgICAgICAgICAgfSl9CiAgICAgICAg ICAgICAgICAgICAgICAgPC9UYWJzPgotICAgICAgICAgICAgICAgICAgICA8L0JveD4KLSAgICAg ICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXtzeXN0ZW1TdGF0c1RhYlZhbH0gaW5kZXg9 ezB9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9PgotICAgICAgICAgICAgICAgICAg ICAgIFN1bW1hcnkKLSAgICAgICAgICAgICAgICAgICAgPC9UYWJQYW5lbD4KLSAgICAgICAgICAg ICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXtzeXN0ZW1TdGF0c1RhYlZhbH0gaW5kZXg9ezF9IGNs YXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9PgotICAgICAgICAgICAgICAgICAgICAgIENQ VQotICAgICAgICAgICAgICAgICAgICA8L1RhYlBhbmVsPgotICAgICAgICAgICAgICAgICAgICA8 VGFiUGFuZWwgdmFsdWU9e3N5c3RlbVN0YXRzVGFiVmFsfSBpbmRleD17Mn0gY2xhc3NOYW1lUm9v dD17Y2xhc3Nlcy50YWJQYW5lbH0+Ci0gICAgICAgICAgICAgICAgICAgICAgTWVtb3J5Ci0gICAg ICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+Ci0gICAgICAgICAgICAgICAgICAgIDxUYWJQYW5l bCB2YWx1ZT17c3lzdGVtU3RhdHNUYWJWYWx9IGluZGV4PXszfSBjbGFzc05hbWVSb290PXtjbGFz c2VzLnRhYlBhbmVsfT4KLSAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlCi0gICAgICAgICAg ICAgICAgICAgIDwvVGFiUGFuZWw+CiAgICAgICAgICAgICAgICAgICA8L0JveD4KKyAgICAgICAg ICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17c3lzdGVtU3RhdHNUYWJWYWx9IGluZGV4PXswfSBj bGFzc05hbWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KKyAgICAgICAgICAgICAgICAgICAgPFN1 bW1hcnkKKyAgICAgICAgICAgICAgICAgICAgICBrZXk9e3NpZCArIGRpZH0KKyAgICAgICAgICAg ICAgICAgICAgICBzaWQ9e3NpZH0gCisgICAgICAgICAgICAgICAgICAgICAgZGlkPXtkaWR9Cisg ICAgICAgICAgICAgICAgICAgICAgcGFnZVZpc2libGU9e3Byb3BzLnBhbmVsVmlzaWJsZX0KKyAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0ZWQ9e3Byb3BzLnNlcnZlckNvbm5lY3Rl ZH0KKyAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+ CisgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3N5c3RlbVN0YXRzVGFiVmFsfSBp bmRleD17MX0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+CisgICAgICAgICAgICAg ICAgICAgIDxDUFUKKyAgICAgICAgICAgICAgICAgICAgICBrZXk9e3NpZCArIGRpZH0KKyAgICAg ICAgICAgICAgICAgICAgICBzaWQ9e3NpZH0gCisgICAgICAgICAgICAgICAgICAgICAgZGlkPXtk aWR9CisgICAgICAgICAgICAgICAgICAgICAgcGFnZVZpc2libGU9e3Byb3BzLnBhbmVsVmlzaWJs ZX0KKyAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0ZWQ9e3Byb3BzLnNlcnZlckNv bm5lY3RlZH0KKyAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgIDwvVGFi UGFuZWw+CisgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3N5c3RlbVN0YXRzVGFi VmFsfSBpbmRleD17Mn0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+CisgICAgICAg ICAgICAgICAgICAgIDxNZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgICBrZXk9e3NpZCArIGRp ZH0KKyAgICAgICAgICAgICAgICAgICAgICBzaWQ9e3NpZH0gCisgICAgICAgICAgICAgICAgICAg ICAgZGlkPXtkaWR9CisgICAgICAgICAgICAgICAgICAgICAgcGFnZVZpc2libGU9e3Byb3BzLnBh bmVsVmlzaWJsZX0KKyAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0ZWQ9e3Byb3Bz LnNlcnZlckNvbm5lY3RlZH0KKyAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAg ICAgIDwvVGFiUGFuZWw+CisgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3N5c3Rl bVN0YXRzVGFiVmFsfSBpbmRleD17M30gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+ CisgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZQorICAgICAgICAgICAgICAgICAgPC9UYWJQ YW5lbD4KKyAgICAgICAgICAgICAgPC9Cb3g+CiAgICAgICAgICAgICAgICAgPC9UYWJQYW5lbD4K ICAgICAgICAgICAgICAgPC9Cb3g+CiAgICAgICAgICAgICA8L0JveD4KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvTWVtb3J5LmpzeCBiL3dlYi9wZ2FkbWluL2Rh c2hib2FyZC9zdGF0aWMvanMvTWVtb3J5LmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLjgyODMxYTk3NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hi b2FyZC9zdGF0aWMvanMvTWVtb3J5LmpzeApAQCAtMCwwICsxLDMyOSBAQAoraW1wb3J0IFJlYWN0 LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlUmVkdWNlciwgdXNlTWVtbyB9IGZy b20gJ3JlYWN0JzsKK2ltcG9ydCBQZ1RhYmxlIGZyb20gJ3NvdXJjZXMvY29tcG9uZW50cy9QZ1Rh YmxlJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgUHJv cFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0Bt YXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3Vy bF9mb3InOworaW1wb3J0IGdldEFwaUluc3RhbmNlIGZyb20gJ3NvdXJjZXMvYXBpX2luc3RhbmNl JzsKK2ltcG9ydCB7Z2V0RXBvY2h9IGZyb20gJ3NvdXJjZXMvdXRpbHMnOworaW1wb3J0IHtDaGFy dENvbnRhaW5lcn0gZnJvbSAnLi9EYXNoYm9hcmQnOworaW1wb3J0IHsgR3JpZCB9IGZyb20gJ0Bt YXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCB7IERBVEFfUE9JTlRfU0laRSB9IGZyb20gJ3NvdXJj ZXMvY2hhcnRqcyc7CitpbXBvcnQgU3RyZWFtaW5nQ2hhcnQgZnJvbSAnLi4vLi4vLi4vc3RhdGlj L2pzL2NvbXBvbmVudHMvUGdDaGFydC9TdHJlYW1pbmdDaGFydCc7CitpbXBvcnQge3VzZUludGVy dmFsfSBmcm9tICdzb3VyY2VzL2N1c3RvbV9ob29rcyc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhp b3MnOworCitleHBvcnQgY29uc3QgWF9BWElTX0xFTkdUSCA9IDc1OworCitjb25zdCB1c2VTdHls ZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkgPT4gKHsKKyAgYXV0b1Jlc2l6ZXI6IHsKKyAgICBoZWln aHQ6ICcxMDAlICFpbXBvcnRhbnQnLAorICAgIHdpZHRoOiAnMTAwJSAhaW1wb3J0YW50JywKKyAg ICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdyZXlbNDAwXSwKKyAgICBwYWRkaW5nOiAnNy41 cHgnLAorICAgIG92ZXJmbG93WDogJ2F1dG8gIWltcG9ydGFudCcsCisgICAgb3ZlcmZsb3dZOiAn aGlkZGVuICFpbXBvcnRhbnQnLAorICAgIG1pbkhlaWdodDogJzEwMCUnLAorICAgIG1pbldpZHRo OiAnMTAwJScsCisgIH0sCisgIGNvbnRhaW5lcjogeworICAgIGhlaWdodDogJ2F1dG8nLAorICAg IGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUuZ3JleVsyMDBdLAorICAgIHBhZGRpbmc6ICcxMHB4 JywKKyAgICBtYXJnaW5Cb3R0b206ICczMHB4JywKKyAgfSwKKyAgZml4ZWRDb250YWluZXI6IHsK KyAgICBoZWlnaHQ6ICc1NzdweCcsCisgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5 WzIwMF0sCisgICAgcGFkZGluZzogJzEwcHgnLAorICAgIG1hcmdpbkJvdHRvbTogJzMwcHgnLAor ICB9LAorICBjb250YWluZXJIZWFkZXI6IHsKKyAgICBmb250U2l6ZTogJzE2cHgnLAorICAgIGZv bnRXZWlnaHQ6ICdib2xkJywKKyAgICBtYXJnaW5Cb3R0b206ICc1cHgnLAorICB9Cit9KSk7CisK K2V4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGxhYmVscywgcmVmcmVzaFJhdGUpIHsKKyAg Y29uc3QgY29sb3JzID0gWycjRkY2Mzg0JywnIzM2QTJFQicsJyNGRkNFNTYnLCcjNEJDMEMwJywn Izk5NjZGRicsJyNGRjlGNDAnLCcjOEQ2RTYzJywnIzIxOTZGMycsJyNGRkVCM0InLCcjOUMyN0Iw JywnIzAwQkNENCcsJyNDRERDMzknXTsKKyAgbGV0IGRhdGFzZXRzID0gT2JqZWN0LmtleXMobGFi ZWxzKS5tYXAoKGxhYmVsLCBpKT0+eworICAgIHJldHVybiB7CisgICAgICBsYWJlbDogbGFiZWws CisgICAgICBkYXRhOiBsYWJlbHNbbGFiZWxdIHx8IFtdLAorICAgICAgYm9yZGVyQ29sb3I6IGNv bG9yc1tpXSwKKyAgICAgIHBvaW50SGl0UmFkaXVzOiBEQVRBX1BPSU5UX1NJWkUsCisgICAgfTsK KyAgfSkgfHwgW107CisKKyAgcmV0dXJuIHsKKyAgICBkYXRhc2V0czogZGF0YXNldHMsCisgICAg cmVmcmVzaFJhdGU6IHJlZnJlc2hSYXRlLAorICB9OworfQorCisvKiBVUkwgZm9yIGZldGNoaW5n IGdyYXBocyBkYXRhICovCitleHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHNVcmwoc2lkPS0xLCBkaWQ9 LTEsIGNoYXJ0X25hbWVzPVtdKSB7CisgIGxldCBiYXNlX3VybCA9IHVybF9mb3IoJ2Rhc2hib2Fy ZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICBiYXNlX3VybCArPSAnLycgKyBzaWQ7CisgIGJhc2Vf dXJsICs9IChkaWQgPiAwKSA/ICgnLycgKyBkaWQpIDogJyc7CisgIGJhc2VfdXJsICs9ICc/Y2hh cnRfbmFtZXM9JyArIGNoYXJ0X25hbWVzLmpvaW4oJywnKTsKKyAgCisgIHJldHVybiBiYXNlX3Vy bDsKK30KKworLyogVGhpcyB3aWxsIHByb2Nlc3MgaW5jb21pbmcgY2hhcnRzIGRhdGEgYWRkIGl0 IHRoZSBwcmV2aW91cyBjaGFydHMKKyAqIGRhdGEgdG8gZ2V0IHRoZSBuZXcgc3RhdGUuCisgKi8K K2V4cG9ydCBmdW5jdGlvbiBzdGF0c1JlZHVjZXIoc3RhdGUsIGFjdGlvbikgeworCisgIGlmKGFj dGlvbi5yZXNldCkgeworICAgIHJldHVybiBhY3Rpb24ucmVzZXQ7CisgIH0KKworICBpZighYWN0 aW9uLmluY29taW5nKSB7CisgICAgcmV0dXJuIHN0YXRlOworICB9CisKKyAgaWYoIWFjdGlvbi5j b3VudGVyRGF0YSkgeworICAgIGFjdGlvbi5jb3VudGVyRGF0YSA9IGFjdGlvbi5pbmNvbWluZzsK KyAgfQorCisgIGxldCBuZXdTdGF0ZSA9IHt9OworICBPYmplY3Qua2V5cyhhY3Rpb24uaW5jb21p bmcpLmZvckVhY2gobGFiZWwgPT4geworICAgIGlmKHN0YXRlW2xhYmVsXSkgeworICAgICAgbmV3 U3RhdGVbbGFiZWxdID0gWworICAgICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rpb24uaW5jb21p bmdbbGFiZWxdIC0gYWN0aW9uLmNvdW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5pbmNvbWluZ1ts YWJlbF0sCisgICAgICAgIC4uLnN0YXRlW2xhYmVsXS5zbGljZSgwLCBYX0FYSVNfTEVOR1RILTEp LAorICAgICAgXTsKKyAgICB9IGVsc2UgeworICAgICAgbmV3U3RhdGVbbGFiZWxdID0gWworICAg ICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rpb24uaW5jb21pbmdbbGFiZWxdIC0gYWN0aW9uLmNv dW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5pbmNvbWluZ1tsYWJlbF0sCisgICAgICBdOworICAg IH0KKyAgfSk7CisgIHJldHVybiBuZXdTdGF0ZTsKK30KKworY29uc3QgY2hhcnRzRGVmYXVsdCA9 IHsKKyAgJ21fc3RhdHMnOiB7J1RvdGFsJzogW10sICdVc2VkJzogW10sICdGcmVlJzogW119LAor ICAnc21fc3RhdHMnOiB7J1RvdGFsJzogW10sICdVc2VkJzogW10sICdGcmVlJzogW119LAorICAn cG11X3N0YXRzJzoge30sCit9OworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNZW1vcnkoeyBz aWQsIGRpZCwgc2VydmVyQ29uZW5jdGVkLCBwYWdlVmlzaWJsZSwgZW5hYmxlUG9sbD10cnVlfSkg eworICBjb25zdCByZWZyZXNoT24gPSB1c2VSZWYobnVsbCk7CisgIAorICBjb25zdCBbbWVtb3J5 VXNhZ2VJbmZvLCBtZW1vcnlVc2FnZUluZm9SZWR1Y2VdID0gdXNlUmVkdWNlcihzdGF0c1JlZHVj ZXIsIGNoYXJ0c0RlZmF1bHRbJ21fc3RhdHMnXSk7CisgIGNvbnN0IFtzd2FwTWVtb3J5VXNhZ2VJ bmZvLCBzd2FwTWVtb3J5VXNhZ2VJbmZvUmVkdWNlXSA9IHVzZVJlZHVjZXIoc3RhdHNSZWR1Y2Vy LCBjaGFydHNEZWZhdWx0WydzbV9zdGF0cyddKTsKKyAgY29uc3QgW3Byb2Nlc3NNZW1vcnlVc2Fn ZVN0YXRzLCBzZXRQcm9jZXNzTWVtb3J5VXNhZ2VTdGF0c10gPSB1c2VTdGF0ZShbXSk7CisKKyAg Y29uc3QgW2NvdW50ZXJEYXRhLCBzZXRDb3VudGVyRGF0YV0gPSB1c2VTdGF0ZSh7fSk7CisKKyAg Y29uc3QgW3BvbGxEZWxheSwgc2V0UG9sbERlbGF5XSA9IHVzZVN0YXRlKDUwMDApOworICBjb25z dCB0YWJsZUhlYWRlciA9IFsKKyAgICB7CisgICAgICAgIEhlYWRlcjogJ1BJRCcsCisgICAgICAg IGFjY2Vzc29yOiAncGlkJywKKyAgICAgICAgc29ydGFibGU6IHRydWUsCisgICAgICAgIHJlc2l6 YWJsZTogdHJ1ZSwKKyAgICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwK KyAgICB7CisgICAgICAgIEhlYWRlcjogJ05hbWUnLAorICAgICAgICBhY2Nlc3NvcjogJ25hbWUn LAorICAgICAgICBzb3J0YWJsZTogdHJ1ZSwKKyAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAg ICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIHsKKyAgICAgICAg SGVhZGVyOiAnTWVtb3J5IFVzYWdlJywKKyAgICAgICAgYWNjZXNzb3I6ICdtZW1vcnlfdXNhZ2Un LAorICAgICAgICBzb3J0YWJsZTogdHJ1ZSwKKyAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAg ICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIHsKKyAgICAgIEhl YWRlcjogJ01lbW9yeSBCeXRlcycsCisgICAgICBhY2Nlc3NvcjogJ21lbW9yeV9ieXRlcycsCisg ICAgICBzb3J0YWJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAgIGRpc2Fi bGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgIH0sCisgIF07CisgIGNvbnN0IFtlcnJvck1zZywg c2V0RXJyb3JNc2ddID0gdXNlU3RhdGUobnVsbCk7CisgIGNvbnN0IFtjaGFydERyYXduT25jZSwg c2V0Q2hhcnREcmF3bk9uY2VdID0gdXNlU3RhdGUoZmFsc2UpOworCisgIGNvbnN0IFtyZWZyZXNo UHJlZmVyZW5jZXMsIHNldFJlZnJlc2hQcmVmZXJlbmNlc10gPSB1c2VTdGF0ZSh7J21fc3RhdHMn OiA1LCAnc21fc3RhdHMnOiA1LCAncG11X3N0YXRzJzogNX0pOworCisgIHVzZUVmZmVjdCgoKT0+ eworICAgIC8qIENoYXJ0cyByZW5kZXJlZCBhcmUgbm90IHZpc2libGUgd2hlbiwgdGhlIGRhc2hi b2FyZCBpcyBoaWRkZW4gYnV0IGxhdGVyIHZpc2libGUgKi8KKyAgICBpZihwYWdlVmlzaWJsZSAm JiAhY2hhcnREcmF3bk9uY2UpIHsKKyAgICAgIHNldENoYXJ0RHJhd25PbmNlKHRydWUpOworICAg IH0KKyAgfSwgW3BhZ2VWaXNpYmxlXSk7CisKKyAgdXNlSW50ZXJ2YWwoKCk9PnsKKyAgICBjb25z dCBjdXJyRXBvY2ggPSBnZXRFcG9jaCgpOworICAgIGlmKHJlZnJlc2hPbi5jdXJyZW50ID09PSBu dWxsKSB7CisgICAgICBsZXQgdG1wUmVmID0ge307CisgICAgICBPYmplY3Qua2V5cyhjaGFydHNE ZWZhdWx0KS5mb3JFYWNoKChuYW1lKT0+eworICAgICAgICB0bXBSZWZbbmFtZV0gPSBjdXJyRXBv Y2g7CisgICAgICB9KTsKKyAgICAgIHJlZnJlc2hPbi5jdXJyZW50ID0gdG1wUmVmOworICAgIH0K KworICAgIGxldCBnZXRGb3IgPSBbXTsKKyAgICBPYmplY3Qua2V5cyhjaGFydHNEZWZhdWx0KS5m b3JFYWNoKChuYW1lKT0+eworICAgICAgaWYoY3VyckVwb2NoID49IHJlZnJlc2hPbi5jdXJyZW50 W25hbWVdKSB7CisgICAgICAgIGdldEZvci5wdXNoKG5hbWUpOworICAgICAgICByZWZyZXNoT24u Y3VycmVudFtuYW1lXSA9IGN1cnJFcG9jaCArIHJlZnJlc2hQcmVmZXJlbmNlc1tuYW1lXTsKKyAg ICAgIH0KKyAgICB9KTsKKworICAgIGxldCBwYXRoID0gZ2V0U3RhdHNVcmwoc2lkLCBkaWQsIGdl dEZvcik7CisgICAgaWYgKCFwYWdlVmlzaWJsZSl7CisgICAgICByZXR1cm47CisgICAgfQorICAg IGF4aW9zLmdldChwYXRoKQorICAgICAgLnRoZW4oKHJlc3ApPT57CisgICAgICAgIGxldCBkYXRh ID0gcmVzcC5kYXRhOworICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsKKyAgICAgICAgc2V0RXJy b3JNc2cobnVsbCk7CisgICAgICAgIGlmKGRhdGEuaGFzT3duUHJvcGVydHkoJ21fc3RhdHMnKSl7 CisgICAgICAgICAgbGV0IG5ld19tX3N0YXRzID0geworICAgICAgICAgICAgJ1RvdGFsJzogZGF0 YVsnbV9zdGF0cyddWyd0b3RhbF9tZW1vcnknXT9kYXRhWydtX3N0YXRzJ11bJ3RvdGFsX21lbW9y eSddOjAsIAorICAgICAgICAgICAgJ1VzZWQnOiBkYXRhWydtX3N0YXRzJ11bJ3VzZWRfbWVtb3J5 J10/ZGF0YVsnbV9zdGF0cyddWyd1c2VkX21lbW9yeSddOjAsIAorICAgICAgICAgICAgJ0ZyZWUn OiBkYXRhWydtX3N0YXRzJ11bJ2ZyZWVfbWVtb3J5J10/ZGF0YVsnbV9zdGF0cyddWydmcmVlX21l bW9yeSddOjAsIAorICAgICAgICAgIH07CisgICAgICAgICAgbWVtb3J5VXNhZ2VJbmZvUmVkdWNl KHtpbmNvbWluZzogbmV3X21fc3RhdHN9KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg aWYoZGF0YS5oYXNPd25Qcm9wZXJ0eSgnc21fc3RhdHMnKSl7CisgICAgICAgICAgbGV0IG5ld19z bV9zdGF0cyA9IHsKKyAgICAgICAgICAgICdUb3RhbCc6IGRhdGFbJ3NtX3N0YXRzJ11bJ3N3YXBf dG90YWwnXT9kYXRhWydzbV9zdGF0cyddWydzd2FwX3RvdGFsJ106MCwgCisgICAgICAgICAgICAn VXNlZCc6IGRhdGFbJ3NtX3N0YXRzJ11bJ3N3YXBfdXNlZCddP2RhdGFbJ3NtX3N0YXRzJ11bJ3N3 YXBfdXNlZCddOjAsIAorICAgICAgICAgICAgJ0ZyZWUnOiBkYXRhWydzbV9zdGF0cyddWydzd2Fw X2ZyZWUnXT9kYXRhWydzbV9zdGF0cyddWydzd2FwX2ZyZWUnXTowLCAKKyAgICAgICAgICB9Owor ICAgICAgICAgIHN3YXBNZW1vcnlVc2FnZUluZm9SZWR1Y2Uoe2luY29taW5nOiBuZXdfc21fc3Rh dHN9KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYoZGF0YS5oYXNPd25Qcm9wZXJ0 eSgncG11X3N0YXRzJykpeworICAgICAgICAgIGxldCBwbXVfaW5mb19saXN0ID0gW107CisgICAg ICAgICAgY29uc3QgcG11X2luZm9fb2JqID0gZGF0YVsncG11X3N0YXRzJ107CisgICAgICAgICAg Zm9yIChjb25zdCBrZXkgaW4gcG11X2luZm9fb2JqKSB7CisgICAgICAgICAgICBwbXVfaW5mb19s aXN0LnB1c2goeyBpY29uOiAnJywgcGlkOiBwbXVfaW5mb19vYmpba2V5XVsncGlkJ10sIG5hbWU6 IHBtdV9pbmZvX29ialtrZXldWyduYW1lJ10sIG1lbW9yeV91c2FnZTogcG11X2luZm9fb2JqW2tl eV1bJ21lbW9yeV91c2FnZSddLCBtZW1vcnlfYnl0ZXM6IHBtdV9pbmZvX29ialtrZXldWydtZW1v cnlfYnl0ZXMnXSB9KTsKKyAgICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgICAgc2V0UHJv Y2Vzc01lbW9yeVVzYWdlU3RhdHMocG11X2luZm9fbGlzdCk7CisgICAgICAgIH0KKworICAgICAg ICBzZXRDb3VudGVyRGF0YSgocHJldkNvdW50ZXJEYXRhKT0+eworICAgICAgICAgIHJldHVybiB7 CisgICAgICAgICAgICAuLi5wcmV2Q291bnRlckRhdGEsCisgICAgICAgICAgICAuLi5kYXRhLAor ICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgfSkKKyAgICAgIC5jYXRjaCgoZXJyb3Ip PT57CisgICAgICAgIGlmKCFlcnJvck1zZykgeworICAgICAgICAgIG1lbW9yeVVzYWdlSW5mb1Jl ZHVjZSh7cmVzZXQ6Y2hhcnRzRGVmYXVsdFsnbV9zdGF0cyddfSk7CisgICAgICAgICAgc3dhcE1l bW9yeVVzYWdlSW5mb1JlZHVjZSh7cmVzZXQ6Y2hhcnRzRGVmYXVsdFsnc21fc3RhdHMnXX0pOwor ICAgICAgICAgIHNldENvdW50ZXJEYXRhKHt9KTsKKyAgICAgICAgICBpZihlcnJvci5yZXNwb25z ZSkgeworICAgICAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1cyA9PT0gNDI4KSB7Cisg ICAgICAgICAgICAgIHNldEVycm9yTXNnKGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBz ZWxlY3RlZCBzZXJ2ZXIgdG8gdmlldyB0aGUgZ3JhcGguJykpOworICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQg d2hpbHN0IHJlbmRlcmluZyB0aGUgZ3JhcGguJykpOworICAgICAgICAgICAgfQorICAgICAgICAg IH0gZWxzZSBpZihlcnJvci5yZXF1ZXN0KSB7CisgICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0 ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhl IHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICAgIH0pOworICB9LCBlbmFibGVQb2xsID8gcG9sbERlbGF5IDog LTEpOworCisgIHJldHVybiAoCisgICAgPD4KKyAgICAgIDxkaXYgZGF0YS10ZXN0aWQ9J2dyYXBo LXBvbGwtZGVsYXknIHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0+e3BvbGxEZWxheX08L2Rpdj4K KyAgICAgIHtjaGFydERyYXduT25jZSAmJgorICAgICAgICA8TWVtb3J5V3JhcHBlcgorICAgICAg ICAgIG1lbW9yeVVzYWdlSW5mbz17dHJhbnNmb3JtRGF0YShtZW1vcnlVc2FnZUluZm8sIHJlZnJl c2hQcmVmZXJlbmNlc1snbV9zdGF0cyddKX0KKyAgICAgICAgICBzd2FwTWVtb3J5VXNhZ2VJbmZv PXt0cmFuc2Zvcm1EYXRhKHN3YXBNZW1vcnlVc2FnZUluZm8sIHJlZnJlc2hQcmVmZXJlbmNlc1sn c21fc3RhdHMnXSl9CisgICAgICAgICAgcHJvY2Vzc01lbW9yeVVzYWdlU3RhdHM9e3Byb2Nlc3NN ZW1vcnlVc2FnZVN0YXRzfQorICAgICAgICAgIHRhYmxlSGVhZGVyPXt0YWJsZUhlYWRlcn0KKyAg ICAgICAgICBlcnJvck1zZz17ZXJyb3JNc2d9CisgICAgICAgICAgc2hvd1Rvb2x0aXA9e3RydWV9 CisgICAgICAgICAgc2hvd0RhdGFQb2ludHM9e2ZhbHNlfQorICAgICAgICAgIGxpbmVCb3JkZXJX aWR0aD17MX0KKyAgICAgICAgICBpc0RhdGFiYXNlPXtkaWQgPiAwfQorICAgICAgICAgIGlzVGVz dD17ZmFsc2V9CisgICAgICAgIC8+CisgICAgICB9CisgICAgPC8+CisgICk7Cit9CisKK01lbW9y eS5wcm9wVHlwZXMgPSB7CisgIHNpZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0 cmluZy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRdKSwKKyAgZGlkOiBQ cm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsIFByb3BUeXBl cy5udW1iZXIuaXNSZXF1aXJlZF0pLAorICBzZXJ2ZXJDb25uZWN0ZWQ6IFByb3BUeXBlcy5ib29s LAorICBwYWdlVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsCisgIGVuYWJsZVBvbGw6IFByb3BUeXBl cy5ib29sLAorfTsKKworZXhwb3J0IGZ1bmN0aW9uIE1lbW9yeVdyYXBwZXIocHJvcHMpIHsKKyAg Y29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBjb25zdCBvcHRpb25zID0gdXNlTWVtbygo KT0+KHsKKyAgICBzaG93RGF0YVBvaW50czogcHJvcHMuc2hvd0RhdGFQb2ludHMsCisgICAgc2hv d1Rvb2x0aXA6IHByb3BzLnNob3dUb29sdGlwLAorICAgIGxpbmVCb3JkZXJXaWR0aDogcHJvcHMu bGluZUJvcmRlcldpZHRoLAorICB9KSwgW3Byb3BzLnNob3dUb29sdGlwLCBwcm9wcy5zaG93RGF0 YVBvaW50cywgcHJvcHMubGluZUJvcmRlcldpZHRoXSk7CisgIHJldHVybiAoCisgICAgPD4KKyAg ICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFp bmVyfT4KKyAgICAgICAgPEdyaWQgaXRlbSBtZD17Nn0+CisgICAgICAgICAgPGRpdiBjbGFzc05h bWU9e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dCgnTWVtb3J5Jyl9PC9kaXY+Cisg ICAgICAgICAgPENoYXJ0Q29udGFpbmVyIGlkPSdtLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9 IGRhdGFzZXRzPXtwcm9wcy5tZW1vcnlVc2FnZUluZm8uZGF0YXNldHN9ICBlcnJvck1zZz17cHJv cHMuZXJyb3JNc2d9IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KKyAgICAgICAgICAgIDxTdHJlYW1p bmdDaGFydCBkYXRhPXtwcm9wcy5tZW1vcnlVc2FnZUluZm99IGRhdGFQb2ludFNpemU9e0RBVEFf UE9JTlRfU0laRX0geFJhbmdlPXtYX0FYSVNfTEVOR1RIfSBvcHRpb25zPXtvcHRpb25zfSAvPgor ICAgICAgICAgIDwvQ2hhcnRDb250YWluZXI+CisgICAgICAgIDwvR3JpZD4KKyAgICAgICAgPEdy aWQgaXRlbSBtZD17Nn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFp bmVySGVhZGVyfT57Z2V0dGV4dCgnU3dhcCBNZW1vcnknKX08L2Rpdj4KKyAgICAgICAgICA8Q2hh cnRDb250YWluZXIgaWQ9J3NtLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9IGRhdGFzZXRzPXtw cm9wcy5zd2FwTWVtb3J5VXNhZ2VJbmZvLmRhdGFzZXRzfSAgZXJyb3JNc2c9e3Byb3BzLmVycm9y TXNnfSBpc1Rlc3Q9e3Byb3BzLmlzVGVzdH0+CisgICAgICAgICAgICA8U3RyZWFtaW5nQ2hhcnQg ZGF0YT17cHJvcHMuc3dhcE1lbW9yeVVzYWdlSW5mb30gZGF0YVBvaW50U2l6ZT17REFUQV9QT0lO VF9TSVpFfSB4UmFuZ2U9e1hfQVhJU19MRU5HVEh9IG9wdGlvbnM9e29wdGlvbnN9IC8+CisgICAg ICAgICAgPC9DaGFydENvbnRhaW5lcj4KKyAgICAgICAgPC9HcmlkPgorICAgICAgPC9HcmlkPgor ICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5maXhl ZENvbnRhaW5lcn0+CisgICAgICAgIDxQZ1RhYmxlCisgICAgICAgICAgY2xhc3NOYW1lPXtjbGFz c2VzLmF1dG9SZXNpemVyfQorICAgICAgICAgIGNvbHVtbnM9e3Byb3BzLnRhYmxlSGVhZGVyfQor ICAgICAgICAgIGRhdGE9e3Byb3BzLnByb2Nlc3NNZW1vcnlVc2FnZVN0YXRzfQorICAgICAgICAg IG1zZz17cHJvcHMuZXJyb3JNc2d9CisgICAgICAgICAgdHlwZT17J3BhbmVsJ30KKyAgICAgICAg PjwvUGdUYWJsZT4KKyAgICAgIDwvR3JpZD4KKyAgICA8Lz4KKyAgKTsKK30KKworY29uc3QgcHJv cFR5cGVTdGF0cyA9IFByb3BUeXBlcy5zaGFwZSh7CisgIGRhdGFzZXRzOiBQcm9wVHlwZXMuYXJy YXksCisgIHJlZnJlc2hSYXRlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsCit9KTsKK01l bW9yeVdyYXBwZXIucHJvcFR5cGVzID0geworICBtZW1vcnlVc2FnZUluZm86IHByb3BUeXBlU3Rh dHMuaXNSZXF1aXJlZCwKKyAgc3dhcE1lbW9yeVVzYWdlSW5mbzogcHJvcFR5cGVTdGF0cy5pc1Jl cXVpcmVkLAorICBwcm9jZXNzTWVtb3J5VXNhZ2VTdGF0czogUHJvcFR5cGVzLmFycmF5LmlzUmVx dWlyZWQsCisgIHRhYmxlSGVhZGVyOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCwKKyAgZXJy b3JNc2c6IFByb3BUeXBlcy5zdHJpbmcsCisgIHNob3dUb29sdGlwOiBQcm9wVHlwZXMuYm9vbC5p c1JlcXVpcmVkLAorICBzaG93RGF0YVBvaW50czogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCwK KyAgbGluZUJvcmRlcldpZHRoOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsCisgIGlzRGF0 YWJhc2U6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsCisgIGlzVGVzdDogUHJvcFR5cGVzLmJv b2wsCit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Rhc2hib2FyZC9zdGF0aWMvanMvU3VtbWFyeS5qc3ggYi93ZWIvcGdhZG1pbi9kYXNoYm9h cmQvc3RhdGljL2pzL1N1bW1hcnkuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uY2JmY2VlNGRiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJk L3N0YXRpYy9qcy9TdW1tYXJ5LmpzeApAQCAtMCwwICsxLDM2NiBAQAoraW1wb3J0IFJlYWN0LCB7 IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlUmVkdWNlciwgdXNlTWVtbyB9IGZyb20g J3JlYWN0JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQg UHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20g J0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2Vz L3VybF9mb3InOworaW1wb3J0IGdldEFwaUluc3RhbmNlIGZyb20gJ3NvdXJjZXMvYXBpX2luc3Rh bmNlJzsKK2ltcG9ydCB7Z2V0RXBvY2h9IGZyb20gJ3NvdXJjZXMvdXRpbHMnOworaW1wb3J0IHtD aGFydENvbnRhaW5lcn0gZnJvbSAnLi9EYXNoYm9hcmQnOworaW1wb3J0IHsgR3JpZCB9IGZyb20g J0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCB7IERBVEFfUE9JTlRfU0laRSB9IGZyb20gJ3Nv dXJjZXMvY2hhcnRqcyc7CitpbXBvcnQgU3RyZWFtaW5nQ2hhcnQgZnJvbSAnLi4vLi4vLi4vc3Rh dGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9TdHJlYW1pbmdDaGFydCc7CitpbXBvcnQgRG9udXRD aGFydCBmcm9tICcuLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9QZ0NoYXJ0L0RvbnV0Q2hh cnQnOworaW1wb3J0IHt1c2VJbnRlcnZhbH0gZnJvbSAnc291cmNlcy9jdXN0b21faG9va3MnOwor aW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJzsKKworZXhwb3J0IGNvbnN0IFhfQVhJU19MRU5HVEgg PSA3NTsKKworY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CisgIGF1 dG9SZXNpemVyOiB7CisgICAgaGVpZ2h0OiAnMTAwJSAhaW1wb3J0YW50JywKKyAgICB3aWR0aDog JzEwMCUgIWltcG9ydGFudCcsCisgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzQw MF0sCisgICAgcGFkZGluZzogJzcuNXB4JywKKyAgICBvdmVyZmxvd1g6ICdhdXRvICFpbXBvcnRh bnQnLAorICAgIG92ZXJmbG93WTogJ2hpZGRlbiAhaW1wb3J0YW50JywKKyAgICBtaW5IZWlnaHQ6 ICcxMDAlJywKKyAgICBtaW5XaWR0aDogJzEwMCUnLAorICB9LAorICB0YWJsZTogeworICAgIHdp ZHRoOiAnMTAwJScsCisgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5vdGhlclZhcnMudGFibGVC ZywKKyAgICBib3JkZXI6ICcxcHggc29saWQgcmdiKDIyMSwgMjI0LCAyMzApJywKKyAgfSwKKyAg dGFibGVWYWw6IHsKKyAgICBib3JkZXI6ICcxcHggc29saWQgcmdiKDIyMSwgMjI0LCAyMzApICFp bXBvcnRhbnQnLAorICAgIHBhZGRpbmc6ICcxMHB4ICFpbXBvcnRhbnQnLAorICB9LAorICBjb250 YWluZXI6IHsKKyAgICBoZWlnaHQ6ICdhdXRvJywKKyAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxl dHRlLmdyZXlbMjAwXSwKKyAgICBwYWRkaW5nOiAnMTBweCcsCisgICAgbWFyZ2luQm90dG9tOiAn MzBweCcsCisgIH0sCisgIGNvbnRhaW5lckhlYWRlcjogeworICAgIGZvbnRTaXplOiAnMTZweCcs CisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICAgIG1hcmdpbkJvdHRvbTogJzVweCcsCisgIH0s Cit9KSk7CisKK2V4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGxhYmVscywgcmVmcmVzaFJh dGUpIHsKKyAgY29uc3QgY29sb3JzID0gWycjRkY2Mzg0JywnIzM2QTJFQicsJyNGRkNFNTYnLCcj NEJDMEMwJywnIzk5NjZGRicsJyNGRjlGNDAnLCcjOEQ2RTYzJywnIzIxOTZGMycsJyNGRkVCM0In LCcjOUMyN0IwJywnIzAwQkNENCcsJyNDRERDMzknXTsKKyAgbGV0IGRhdGFzZXRzID0gT2JqZWN0 LmtleXMobGFiZWxzKS5tYXAoKGxhYmVsLCBpKT0+eworICAgIHJldHVybiB7CisgICAgICBsYWJl bDogbGFiZWwsCisgICAgICBkYXRhOiBsYWJlbHNbbGFiZWxdIHx8IFtdLAorICAgICAgYm9yZGVy Q29sb3I6IGNvbG9yc1tpXSwKKyAgICAgIHBvaW50SGl0UmFkaXVzOiBEQVRBX1BPSU5UX1NJWkUs CisgICAgfTsKKyAgfSkgfHwgW107CisKKyAgcmV0dXJuIHsKKyAgICBkYXRhc2V0czogZGF0YXNl dHMsCisgICAgcmVmcmVzaFJhdGU6IHJlZnJlc2hSYXRlLAorICB9OworfQorCisvKiBVUkwgZm9y IGZldGNoaW5nIGdyYXBocyBkYXRhICovCitleHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHNVcmwoc2lk PS0xLCBkaWQ9LTEsIGNoYXJ0X25hbWVzPVtdKSB7CisgIGxldCBiYXNlX3VybCA9IHVybF9mb3Io J2Rhc2hib2FyZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICBiYXNlX3VybCArPSAnLycgKyBzaWQ7 CisgIGJhc2VfdXJsICs9IChkaWQgPiAwKSA/ICgnLycgKyBkaWQpIDogJyc7CisgIGJhc2VfdXJs ICs9ICc/Y2hhcnRfbmFtZXM9JyArIGNoYXJ0X25hbWVzLmpvaW4oJywnKTsKKyAgCisgIHJldHVy biBiYXNlX3VybDsKK30KKworLyogVGhpcyB3aWxsIHByb2Nlc3MgaW5jb21pbmcgY2hhcnRzIGRh dGEgYWRkIGl0IHRoZSBwcmV2aW91cyBjaGFydHMKKyAqIGRhdGEgdG8gZ2V0IHRoZSBuZXcgc3Rh dGUuCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBzdGF0c1JlZHVjZXIoc3RhdGUsIGFjdGlvbikgewor CisgIGlmKGFjdGlvbi5yZXNldCkgeworICAgIHJldHVybiBhY3Rpb24ucmVzZXQ7CisgIH0KKwor ICBpZighYWN0aW9uLmluY29taW5nKSB7CisgICAgcmV0dXJuIHN0YXRlOworICB9CisKKyAgaWYo IWFjdGlvbi5jb3VudGVyRGF0YSkgeworICAgIGFjdGlvbi5jb3VudGVyRGF0YSA9IGFjdGlvbi5p bmNvbWluZzsKKyAgfQorCisgIGxldCBuZXdTdGF0ZSA9IHt9OworICBPYmplY3Qua2V5cyhhY3Rp b24uaW5jb21pbmcpLmZvckVhY2gobGFiZWwgPT4geworICAgIGlmKHN0YXRlW2xhYmVsXSkgewor ICAgICAgbmV3U3RhdGVbbGFiZWxdID0gWworICAgICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rp b24uaW5jb21pbmdbbGFiZWxdIC0gYWN0aW9uLmNvdW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5p bmNvbWluZ1tsYWJlbF0sCisgICAgICAgIC4uLnN0YXRlW2xhYmVsXS5zbGljZSgwLCBYX0FYSVNf TEVOR1RILTEpLAorICAgICAgXTsKKyAgICB9IGVsc2UgeworICAgICAgbmV3U3RhdGVbbGFiZWxd ID0gWworICAgICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rpb24uaW5jb21pbmdbbGFiZWxdIC0g YWN0aW9uLmNvdW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5pbmNvbWluZ1tsYWJlbF0sCisgICAg ICBdOworICAgIH0KKyAgfSk7CisgIHJldHVybiBuZXdTdGF0ZTsKK30KKworY29uc3QgY2hhcnRz RGVmYXVsdCA9IHsKKyAgJ2hwY19zdGF0cyc6IHsnSGFuZGxlJzogW10sICdQcm9jZXNzJzogW119 LAorfTsKKworY29uc3QgU3VtbWFyeVRhYmxlID0gKHsgZGF0YSB9KSA9PiB7CisgIGNvbnN0IGNs YXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgcmV0dXJuICgKKyAgICA8dGFibGUgY2xhc3NOYW1lPXtj bGFzc2VzLnRhYmxlfT4KKyAgICAgIDx0aGVhZD4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0 aCBjbGFzc05hbWU9e2NsYXNzZXMudGFibGVWYWx9PlByb3BlcnR5PC90aD4KKyAgICAgICAgICA8 dGggY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlVmFsfT5WYWx1ZTwvdGg+CisgICAgICAgIDwvdHI+ CisgICAgICA8L3RoZWFkPgorICAgICAgPHRib2R5PgorICAgICAgICB7ZGF0YS5tYXAoKGl0ZW0s IGluZGV4KSA9PiAoCisgICAgICAgICAgPHRyIGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZVZhbH0g a2V5PXtpbmRleH0+CisgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlVmFs fT57aXRlbS5uYW1lfTwvdGQ+CisgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPXtjbGFzc2VzLnRh YmxlVmFsfT57aXRlbS52YWx1ZX08L3RkPgorICAgICAgICAgIDwvdHI+CisgICAgICAgICkpfQor ICAgICAgPC90Ym9keT4KKyAgICA8L3RhYmxlPgorICApOworfQorCitleHBvcnQgZGVmYXVsdCBm dW5jdGlvbiBTdW1tYXJ5KHsgc2lkLCBkaWQsIHNlcnZlckNvbmVuY3RlZCwgcGFnZVZpc2libGUs IGVuYWJsZVBvbGw9dHJ1ZX0pIHsKKyAgY29uc3QgcmVmcmVzaE9uID0gdXNlUmVmKG51bGwpOwor ICAKKyAgY29uc3QgW3Byb2Nlc3NIYW5kbGVDb3VudCwgcHJvY2Vzc0hhbmRsZUNvdW50UmVkdWNl XSA9IHVzZVJlZHVjZXIoc3RhdHNSZWR1Y2VyLCBjaGFydHNEZWZhdWx0WydocGNfc3RhdHMnXSk7 CisgIGNvbnN0IFtvc1N0YXRzLCBzZXRPc1N0YXRzXSA9IHVzZVN0YXRlKFtdKTsKKyAgY29uc3Qg W2NwdVN0YXRzLCBzZXRDcHVTdGF0c10gPSB1c2VTdGF0ZShbXSk7CisgIGNvbnN0IFtwcm9jZXNz SW5mb1N0YXRzLCBzZXRQcm9jZXNzSW5mb1N0YXRzXSA9IHVzZVN0YXRlKHsnUnVubmluZyc6IDQs ICdTbGVlcGluZyc6IDIsICdTdG9wcGVkJzogMSwgJ1pvbWJpZSc6IDJ9KTsKKworICBjb25zdCBb Y291bnRlckRhdGEsIHNldENvdW50ZXJEYXRhXSA9IHVzZVN0YXRlKHt9KTsKKworICBjb25zdCBb cG9sbERlbGF5LCBzZXRQb2xsRGVsYXldID0gdXNlU3RhdGUoNTAwMCk7CisgIGNvbnN0IFtsb25n UG9sbERlbGF5LCBzZXRMb25nUG9sbERlbGF5XSA9IHVzZVN0YXRlKDE4MDAwMCk7CisgIGNvbnN0 IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUobnVsbCk7CisKKyAgY29uc3QgdGFi bGVIZWFkZXIgPSBbCisgICAgeworICAgICAgSGVhZGVyOiAnUHJvcGVydHknLAorICAgICAgYWNj ZXNzb3I6ICduYW1lJywKKyAgICAgIHNvcnRhYmxlOiB0cnVlLAorICAgICAgcmVzaXphYmxlOiB0 cnVlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7Cisg ICAgICBIZWFkZXI6ICdWYWx1ZScsCisgICAgICBhY2Nlc3NvcjogJ3ZhbHVlJywKKyAgICAgIHNv cnRhYmxlOiB0cnVlLAorICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgZGlzYWJsZUdsb2Jh bEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgXTsKKworICB1c2VFZmZlY3QoKCkgPT4geworICAg IHRyeSB7CisgICAgICAvLyBGZXRjaCB0aGUgbGF0ZXN0IGRhdGEgcG9pbnQgZnJvbSB0aGUgQVBJ IGVuZHBvaW50CisgICAgICBsZXQgdXJsOworICAgICAgdXJsID0gdXJsX2ZvcignZGFzaGJvYXJk LnN5c3RlbV9zdGF0aXN0aWNzJyk7CisgICAgICB1cmwgKz0gJy8nICsgc2lkOworICAgICAgdXJs ICs9IGRpZCA+IDAgPyAnLycgKyBkaWQgOiAnJzsKKyAgICAgIHVybCArPSAnP2NoYXJ0X25hbWVz PScgKyAncGdfc3lzX29zX2luZm8scGdfc3lzX2NwdV9pbmZvJzsKKyAgICAgIGNvbnN0IGFwaSA9 IGdldEFwaUluc3RhbmNlKCk7CisgICAgICBhcGkoeworICAgICAgICB1cmw6IHVybCwKKyAgICAg ICAgdHlwZTogJ0dFVCcsCisgICAgICB9KQorICAgICAgICAudGhlbigocmVzKSA9PiB7CisgICAg ICAgICAgbGV0IGRhdGEgPSByZXMuZGF0YTsKKworICAgICAgICAgIGNvbnN0IG9zX2luZm9fb2Jq ID0gZGF0YVsncGdfc3lzX29zX2luZm8nXTsKKyAgICAgICAgICBsZXQgb3NfaW5mb19saXN0ID0g WworICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ05hbWUnLCB2YWx1ZTogb3NfaW5mb19v YmpbJ25hbWUnXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ1ZlcnNpb24nLCB2 YWx1ZTogb3NfaW5mb19vYmpbJ3ZlcnNpb24nXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywg bmFtZTogJ0hvc3QgbmFtZScsIHZhbHVlOiBvc19pbmZvX29ialsnaG9zdF9uYW1lJ10gfSwKKyAg ICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdEb21haW4gbmFtZScsIHZhbHVlOiBvc19pbmZv X29ialsnZG9tYWluX25hbWUnXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ0Fy Y2hpdGVjdHVyZScsIHZhbHVlOiBvc19pbmZvX29ialsnYXJjaGl0ZWN0dXJlJ10gfSwKKyAgICAg ICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdPcyB1cCBzaW5jZSBzZWNvbmRzJywgdmFsdWU6IG9z X2luZm9fb2JqWydvc191cF9zaW5jZV9zZWNvbmRzJ10gfSwKKyAgICAgICAgICBdOworICAgICAg ICAgIHNldE9zU3RhdHMob3NfaW5mb19saXN0KTsKKworICAgICAgICAgIGNvbnN0IGNwdV9pbmZv X29iaiA9IGRhdGFbJ3BnX3N5c19jcHVfaW5mbyddOworICAgICAgICAgIGxldCBjcHVfaW5mb19s aXN0ID0gWworICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ1ZlbmRvcicsIHZhbHVlOiBj cHVfaW5mb19vYmpbJ3ZlbmRvciddIH0sCisgICAgICAgICAgICB7IGljb246ICcnLCBuYW1lOiAn RGVzY3JpcHRpb24nLCB2YWx1ZTogY3B1X2luZm9fb2JqWydkZXNjcmlwdGlvbiddIH0sCisgICAg ICAgICAgICB7IGljb246ICcnLCBuYW1lOiAnTW9kZWwgbmFtZScsIHZhbHVlOiBjcHVfaW5mb19v YmpbJ21vZGVsX25hbWUnXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ05vIG9m IGNvcmVzJywgdmFsdWU6IGNwdV9pbmZvX29ialsnbm9fb2ZfY29yZXMnXSB9LAorICAgICAgICAg ICAgeyBpY29uOiAnJywgbmFtZTogJ0FyY2hpdGVjdHVyZScsIHZhbHVlOiBjcHVfaW5mb19vYmpb J2FyY2hpdGVjdHVyZSddIH0sCisgICAgICAgICAgICB7IGljb246ICcnLCBuYW1lOiAnQ2xvY2sg c3BlZWQgSHonLCB2YWx1ZTogY3B1X2luZm9fb2JqWydjbG9ja19zcGVlZF9oeiddIH0sCisgICAg ICAgICAgICB7IGljb246ICcnLCBuYW1lOiAnTDEgZGNhY2hlIHNpemUnLCB2YWx1ZTogY3B1X2lu Zm9fb2JqWydsMWRjYWNoZV9zaXplJ10gfSwKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6 ICdMMSBpY2FjaGUgc2l6ZScsIHZhbHVlOiBjcHVfaW5mb19vYmpbJ2wxaWNhY2hlX3NpemUnXSB9 LAorICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ0wyIGNhY2hlIHNpemUnLCB2YWx1ZTog Y3B1X2luZm9fb2JqWydsMmNhY2hlX3NpemUnXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywg bmFtZTogJ0wzIGNhY2hlIHNpemUnLCB2YWx1ZTogY3B1X2luZm9fb2JqWydsM2NhY2hlX3NpemUn XSB9LAorICAgICAgICAgIF07CisgICAgICAgICAgc2V0Q3B1U3RhdHMoY3B1X2luZm9fbGlzdCk7 CisKKyAgICAgICAgICBzZXRFcnJvck1zZyhudWxsKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNh dGNoKChlcnJvcikgPT4geworICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5n IGRhdGE6JywgZXJyb3IpOworICAgICAgICB9KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAg ICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTonLCBlcnJvcik7CisgICAgfQor ICB9LCBbc2lkLCBkaWQsIGVuYWJsZVBvbGwsIHBhZ2VWaXNpYmxlXSk7CisKKyAgdXNlSW50ZXJ2 YWwoKCk9PnsKKyAgICBjb25zdCBjdXJyRXBvY2ggPSBnZXRFcG9jaCgpOworICAgIGlmKHJlZnJl c2hPbi5jdXJyZW50ID09PSBudWxsKSB7CisgICAgICBsZXQgdG1wUmVmID0ge307CisgICAgICBP YmplY3Qua2V5cyhjaGFydHNEZWZhdWx0KS5mb3JFYWNoKChuYW1lKT0+eworICAgICAgICB0bXBS ZWZbbmFtZV0gPSBjdXJyRXBvY2g7CisgICAgICB9KTsKKyAgICAgIHJlZnJlc2hPbi5jdXJyZW50 ID0gdG1wUmVmOworICAgIH0KKworICAgIGxldCBnZXRGb3IgPSBbXTsKKyAgICBPYmplY3Qua2V5 cyhjaGFydHNEZWZhdWx0KS5mb3JFYWNoKChuYW1lKT0+eworICAgICAgaWYoY3VyckVwb2NoID49 IHJlZnJlc2hPbi5jdXJyZW50W25hbWVdKSB7CisgICAgICAgIGdldEZvci5wdXNoKG5hbWUpOwor ICAgICAgICByZWZyZXNoT24uY3VycmVudFtuYW1lXSA9IGN1cnJFcG9jaCArIDU7CisgICAgICB9 CisgICAgfSk7CisKKyAgICBsZXQgcGF0aCA9IGdldFN0YXRzVXJsKHNpZCwgZGlkLCBnZXRGb3Ip OworICAgIGlmICghcGFnZVZpc2libGUpeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBheGlv cy5nZXQocGF0aCkKKyAgICAgIC50aGVuKChyZXNwKT0+eworICAgICAgICBsZXQgZGF0YSA9IHJl c3AuZGF0YTsKKyAgICAgICAgc2V0RXJyb3JNc2cobnVsbCk7CisgICAgICAgIHByb2Nlc3NIYW5k bGVDb3VudFJlZHVjZSh7aW5jb21pbmc6IGRhdGFbJ2hwY19zdGF0cyddfSk7CisKKyAgICAgICAg c2V0Q291bnRlckRhdGEoKHByZXZDb3VudGVyRGF0YSk9PnsKKyAgICAgICAgICByZXR1cm4gewor ICAgICAgICAgICAgLi4ucHJldkNvdW50ZXJEYXRhLAorICAgICAgICAgICAgLi4uZGF0YSwKKyAg ICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgIH0pCisgICAgICAuY2F0Y2goKGVycm9yKT0+ eworICAgICAgICBpZighZXJyb3JNc2cpIHsKKyAgICAgICAgICBwcm9jZXNzSGFuZGxlQ291bnRS ZWR1Y2Uoe3Jlc2V0OmNoYXJ0c0RlZmF1bHRbJ2hwY19zdGF0cyddfSk7CisgICAgICAgICAgc2V0 Q291bnRlckRhdGEoe30pOworICAgICAgICAgIGlmKGVycm9yLnJlc3BvbnNlKSB7CisgICAgICAg ICAgICBpZiAoZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09PSA0MjgpIHsKKyAgICAgICAgICAgICAg c2V0RXJyb3JNc2coZ2V0dGV4dCgnUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlbGVjdGVkIHNlcnZl ciB0byB2aWV3IHRoZSBncmFwaC4nKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICBzZXRFcnJvck1zZyhnZXR0ZXh0KCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsc3QgcmVuZGVy aW5nIHRoZSBncmFwaC4nKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIGlmKGVy cm9yLnJlcXVlc3QpIHsKKyAgICAgICAgICAgIHNldEVycm9yTXNnKGdldHRleHQoJ05vdCBjb25u ZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBi ZWVuIGNsb3NlZC4nKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgfSk7CisgIH0sIGVuYWJsZVBvbGwgPyBwb2xsRGVsYXkgOiAtMSk7CisKKyAgdXNl SW50ZXJ2YWwoKCk9PnsKKyAgICBsZXQgdXJsOworICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2Fy ZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICAgIHVybCArPSAnLycgKyBzaWQ7CisgICAgdXJsICs9 IGRpZCA+IDAgPyAnLycgKyBkaWQgOiAnJzsKKyAgICB1cmwgKz0gJz9jaGFydF9uYW1lcz0nICsg J3BpX3N0YXRzJzsKKyAgICAvLyBheGlvcy5nZXQodXJsKQorICAgIC8vICAgLnRoZW4oKHJlc3Ap PT57CisgICAgLy8gICAgIGxldCBkYXRhID0gcmVzcC5kYXRhOworICAgIC8vICAgICBjb25zb2xl LmxvZygicGkgZGF0YTogIiwgZGF0YSk7CisgICAgLy8gICB9KQorICAgIC8vICAgLmNhdGNoKChl cnJvcik9PnsKKyAgICAvLyAgICAgaWYoIWVycm9yTXNnKSB7CisgICAgLy8gICAgICAgaWYoZXJy b3IucmVzcG9uc2UpIHsKKyAgICAvLyAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5zdGF0dXMg PT09IDQyOCkgeworICAgIC8vICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0ZXh0KCdQbGVhc2Ug Y29ubmVjdCB0byB0aGUgc2VsZWN0ZWQgc2VydmVyIHRvIHZpZXcgdGhlIGdyYXBoLicpKTsKKyAg ICAvLyAgICAgICAgIH0gZWxzZSB7CisgICAgLy8gICAgICAgICAgIHNldEVycm9yTXNnKGdldHRl eHQoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxzdCByZW5kZXJpbmcgdGhlIGdyYXBoLicpKTsKKyAg ICAvLyAgICAgICAgIH0KKyAgICAvLyAgICAgICB9IGVsc2UgaWYoZXJyb3IucmVxdWVzdCkgewor ICAgIC8vICAgICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUg c2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicp KTsKKyAgICAvLyAgICAgICAgIHJldHVybjsKKyAgICAvLyAgICAgICB9IGVsc2UgeworICAgIC8v ICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgLy8gICAgICAgfQorICAgIC8vICAg ICB9CisgICAgLy8gICB9KTsKKyAgICB9LCBlbmFibGVQb2xsID8gbG9uZ1BvbGxEZWxheSA6IC0x KTsKKworICByZXR1cm4gKAorICAgIDw+CisgICAgICA8U3VtbWFyeVdyYXBwZXIKKyAgICAgICAg ICBwcm9jZXNzSGFuZGxlQ291bnQ9e3RyYW5zZm9ybURhdGEocHJvY2Vzc0hhbmRsZUNvdW50LCA1 KX0KKyAgICAgICAgICBvc1N0YXRzPXtvc1N0YXRzfQorICAgICAgICAgIGNwdVN0YXRzPXtjcHVT dGF0c30KKyAgICAgICAgICBwcm9jZXNzSW5mb1N0YXRzPXt0cmFuc2Zvcm1EYXRhKHByb2Nlc3NJ bmZvU3RhdHMsIDUpfQorICAgICAgICAgIHRhYmxlSGVhZGVyPXt0YWJsZUhlYWRlcn0KKyAgICAg ICAgICBlcnJvck1zZz17ZXJyb3JNc2d9CisgICAgICAgICAgc2hvd1Rvb2x0aXA9e3RydWV9Cisg ICAgICAgICAgc2hvd0RhdGFQb2ludHM9e2ZhbHNlfQorICAgICAgICAgIGxpbmVCb3JkZXJXaWR0 aD17MX0KKyAgICAgICAgICBpc0RhdGFiYXNlPXtkaWQgPiAwfQorICAgICAgICAgIGlzVGVzdD17 ZmFsc2V9CisgICAgICAgIC8+CisgICAgPC8+CisgICk7Cit9CisKK1N1bW1hcnkucHJvcFR5cGVz ID0geworICBzaWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcuaXNSZXF1 aXJlZCwgUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXSksCisgIGRpZDogUHJvcFR5cGVzLm9u ZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMubnVtYmVyLmlz UmVxdWlyZWRdKSwKKyAgc2VydmVyQ29ubmVjdGVkOiBQcm9wVHlwZXMuYm9vbCwKKyAgcGFnZVZp c2libGU6IFByb3BUeXBlcy5ib29sLAorICBlbmFibGVQb2xsOiBQcm9wVHlwZXMuYm9vbCwKK307 CisKK2V4cG9ydCBmdW5jdGlvbiBTdW1tYXJ5V3JhcHBlcihwcm9wcykgeworICBjb25zdCBjbGFz c2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpPT4oeworICAg IHNob3dEYXRhUG9pbnRzOiBwcm9wcy5zaG93RGF0YVBvaW50cywKKyAgICBzaG93VG9vbHRpcDog cHJvcHMuc2hvd1Rvb2x0aXAsCisgICAgbGluZUJvcmRlcldpZHRoOiBwcm9wcy5saW5lQm9yZGVy V2lkdGgsCisgIH0pLCBbcHJvcHMuc2hvd1Rvb2x0aXAsIHByb3BzLnNob3dEYXRhUG9pbnRzLCBw cm9wcy5saW5lQm9yZGVyV2lkdGhdKTsKKyAgcmV0dXJuICgKKyAgICA8PgorICAgICAgPEdyaWQg Y29udGFpbmVyIHNwYWNpbmc9ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJ9PgorICAg ICAgICA8R3JpZCBpdGVtIG1kPXs2fT4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nl cy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdPUyBJbmZvcm1hdGlvbicpfTwvZGl2PgorICAg ICAgICAgIDxTdW1tYXJ5VGFibGUgZGF0YT17cHJvcHMub3NTdGF0c30gLz4KKyAgICAgICAgPC9H cmlkPgorICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fT4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFt ZT17Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdIYW5kbGUgJiBQcm9jZXNzIENv dW50Jyl9PC9kaXY+CisgICAgICAgICAgPENoYXJ0Q29udGFpbmVyIGlkPSdocGMtZ3JhcGgnIHRp dGxlPXtnZXR0ZXh0KCcnKX0gZGF0YXNldHM9e3Byb3BzLnByb2Nlc3NIYW5kbGVDb3VudC5kYXRh c2V0c30gIGVycm9yTXNnPXtwcm9wcy5lcnJvck1zZ30gaXNUZXN0PXtwcm9wcy5pc1Rlc3R9Pgor ICAgICAgICAgICAgPFN0cmVhbWluZ0NoYXJ0IGRhdGE9e3Byb3BzLnByb2Nlc3NIYW5kbGVDb3Vu dH0gZGF0YVBvaW50U2l6ZT17REFUQV9QT0lOVF9TSVpFfSB4UmFuZ2U9e1hfQVhJU19MRU5HVEh9 IG9wdGlvbnM9e29wdGlvbnN9IHNob3dTZWNvbmRBeGlzPXt0cnVlfSAvPgorICAgICAgICAgIDwv Q2hhcnRDb250YWluZXI+CisgICAgICAgIDwvR3JpZD4KKyAgICAgIDwvR3JpZD4KKyAgICAgIDxH cmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVyfT4K KyAgICAgICAgPEdyaWQgaXRlbSBtZD17Nn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ns YXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dCgnQ1BVIEluZm9ybWF0aW9uJyl9PC9kaXY+ CisgICAgICAgICAgPFN1bW1hcnlUYWJsZSBkYXRhPXtwcm9wcy5jcHVTdGF0c30gLz4KKyAgICAg ICAgPC9HcmlkPgorICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fT4KKyAgICAgICAgICA8ZGl2IGNs YXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdQcm9jZXNzIEluZm9y bWF0aW9uJyl9PC9kaXY+CisgICAgICAgICAgPENoYXJ0Q29udGFpbmVyIGlkPSdwaS1ncmFwaCcg dGl0bGU9e2dldHRleHQoJycpfSBkYXRhc2V0cz17cHJvcHMucHJvY2Vzc0luZm9TdGF0cy5kYXRh c2V0c30gIGVycm9yTXNnPXtwcm9wcy5lcnJvck1zZ30gaXNUZXN0PXtwcm9wcy5pc1Rlc3R9Pgor ICAgICAgICAgICAgPERvbnV0Q2hhcnQgZGF0YT17cHJvcHMucHJvY2Vzc0luZm9TdGF0cy5kYXRh c2V0c30gLz4KKyAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgorICAgICAgICA8L0dyaWQ+Cisg ICAgICA8L0dyaWQ+CisgICAgPC8+CisgICk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQv c3FsL2RlZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3FsIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJk L3RlbXBsYXRlcy9kYXNoYm9hcmQvc3FsL2RlZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDFmY2VkNDMzCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQvc3FsL2Rl ZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3FsCkBAIC0wLDAgKzEsODcgQEAKK3slIHNldCBhZGRf dW5pb24gPSBmYWxzZSAlfQoreyUgaWYgJ3BnX3N5c19vc19pbmZvJyBpbiBjaGFydF9uYW1lcyAl fQoreyUgc2V0IGFkZF91bmlvbiA9IHRydWUgJX0KKyAgICBTRUxFQ1QgJ3BnX3N5c19vc19pbmZv JyBBUyBjaGFydF9uYW1lLCBwZ19jYXRhbG9nLnJvd190b19qc29uKHQpIEFTIGNoYXJ0X2RhdGEK KyAgICBGUk9NIChTRUxFQ1QgKiBGUk9NIHBnX3N5c19vc19pbmZvKCkpIHQKK3slIGVuZGlmICV9 Cit7JSBpZiBhZGRfdW5pb24gYW5kICdwZ19zeXNfY3B1X2luZm8nIGluIGNoYXJ0X25hbWVzICV9 CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAlfQoreyUgaWYgJ3BnX3N5c19jcHVfaW5mbycgaW4g Y2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNUICdw Z19zeXNfY3B1X2luZm8nIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFsb2cucm93X3RvX2pzb24odCkg QVMgY2hhcnRfZGF0YQorICAgIEZST00gKFNFTEVDVCAqIEZST00gcGdfc3lzX2NwdV9pbmZvKCkp IHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24gYW5kICdocGNfc3RhdHMnIGluIGNoYXJ0 X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAlfQoreyUgaWYgJ2hwY19zdGF0cycg aW4gY2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNU ICdocGNfc3RhdHMnIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFsb2cucm93X3RvX2pzb24odCkgQVMg Y2hhcnRfZGF0YQorICAgIEZST00gKFNFTEVDVCAKKyAgICAgICAgKFNFTEVDVCBoYW5kbGVfY291 bnQgRlJPTSBwZ19zeXNfb3NfaW5mbygpKSAgQVMgInt7IF8oJ0hhbmRsZScpIH19IiwKKyAgICAg ICAgKFNFTEVDVCBwcm9jZXNzX2NvdW50IEZST00gcGdfc3lzX29zX2luZm8oKSkgIEFTICJ7eyBf KCdQcm9jZXNzJykgfX0iCisgICAgKSB0Cit7JSBlbmRpZiAlfQoreyUgaWYgYWRkX3VuaW9uIGFu ZCAnY3Vfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAl fQoreyUgaWYgJ2N1X3N0YXRzJyBpbiBjaGFydF9uYW1lcyAlfQoreyUgc2V0IGFkZF91bmlvbiA9 IHRydWUgJX0KKyAgICBTRUxFQ1QgJ2N1X3N0YXRzJyBBUyBjaGFydF9uYW1lLCBwZ19jYXRhbG9n LnJvd190b19qc29uKHQpIEFTIGNoYXJ0X2RhdGEKKyAgICBGUk9NIChTRUxFQ1QgKiBGUk9NIHBn X3N5c19jcHVfdXNhZ2VfaW5mbygpKSB0Cit7JSBlbmRpZiAlfQoreyUgaWYgYWRkX3VuaW9uIGFu ZCAnbGFfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAl fQoreyUgaWYgJ2xhX3N0YXRzJyBpbiBjaGFydF9uYW1lcyAlfQoreyUgc2V0IGFkZF91bmlvbiA9 IHRydWUgJX0KKyAgICBTRUxFQ1QgJ2xhX3N0YXRzJyBBUyBjaGFydF9uYW1lLCBwZ19jYXRhbG9n LnJvd190b19qc29uKHQpIEFTIGNoYXJ0X2RhdGEgRlJPTSAoU0VMRUNUICogRlJPTSBwZ19zeXNf bG9hZF9hdmdfaW5mbygpKSB0Cit7JSBlbmRpZiAlfQoreyUgaWYgYWRkX3VuaW9uIGFuZCAncGN1 X3N0YXRzJyBpbiBjaGFydF9uYW1lcyAlfQorICAgIFVOSU9OIEFMTAoreyUgZW5kaWYgJX0KK3sl IGlmICdwY3Vfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9Cit7JSBzZXQgYWRkX3VuaW9uID0gdHJ1 ZSAlfQorICAgIFNFTEVDVCAncGN1X3N0YXRzJyBBUyBjaGFydF9uYW1lLCAoCisgICAgU0VMRUNU IHRvX2pzb24ocGdfY2F0YWxvZy5qc29uYl9vYmplY3RfYWdnKCdwcm9jZXNzJ3x8cm93X251bWJl ciwgcGdfY2F0YWxvZy5yb3dfdG9fanNvbih0KSkpCisgICAgRlJPTSAoCisgICAgICAgIFNFTEVD VCBwaWQsIG5hbWUsIGNwdV91c2FnZSwgUk9XX05VTUJFUigpIE9WRVIgKE9SREVSIEJZIHBpZCkg QVMgcm93X251bWJlcgorICAgICAgICBGUk9NIHBnX3N5c19jcHVfbWVtb3J5X2J5X3Byb2Nlc3Mo KQorICAgICkgdAorICAgICkgQVMgY2hhcnRfZGF0YQoreyUgZW5kaWYgJX0KK3slIGlmIGFkZF91 bmlvbiBhbmQgJ21fc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBl bmRpZiAlfQoreyUgaWYgJ21fc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9Cit7JSBzZXQgYWRkX3Vu aW9uID0gdHJ1ZSAlfQorICAgIFNFTEVDVCAnbV9zdGF0cycgQVMgY2hhcnRfbmFtZSwgcGdfY2F0 YWxvZy5yb3dfdG9fanNvbih0KSBBUyBjaGFydF9kYXRhIEZST00gKFNFTEVDVCB0b3RhbF9tZW1v cnksIHVzZWRfbWVtb3J5LCBmcmVlX21lbW9yeSBGUk9NIHBnX3N5c19tZW1vcnlfaW5mbygpKSB0 Cit7JSBlbmRpZiAlfQoreyUgaWYgYWRkX3VuaW9uIGFuZCAnc21fc3RhdHMnIGluIGNoYXJ0X25h bWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAlfQoreyUgaWYgJ3NtX3N0YXRzJyBpbiBj aGFydF9uYW1lcyAlfQoreyUgc2V0IGFkZF91bmlvbiA9IHRydWUgJX0KKyAgICBTRUxFQ1QgJ3Nt X3N0YXRzJyBBUyBjaGFydF9uYW1lLCBwZ19jYXRhbG9nLnJvd190b19qc29uKHQpIEFTIGNoYXJ0 X2RhdGEgRlJPTSAoU0VMRUNUIHN3YXBfdG90YWwsIHN3YXBfdXNlZCwgc3dhcF9mcmVlIEZST00g cGdfc3lzX21lbW9yeV9pbmZvKCkpIHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24gYW5k ICdwbXVfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAl fQoreyUgaWYgJ3BtdV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24g PSB0cnVlICV9CisgICAgU0VMRUNUICdwbXVfc3RhdHMnIEFTIGNoYXJ0X25hbWUsICgKKyAgICBT RUxFQ1QgdG9fanNvbihwZ19jYXRhbG9nLmpzb25iX29iamVjdF9hZ2coJ3Byb2Nlc3MnfHxyb3df bnVtYmVyLCBwZ19jYXRhbG9nLnJvd190b19qc29uKHQpKSkKKyAgICBGUk9NICgKKyAgICAgICAg U0VMRUNUIHBpZCwgbmFtZSwgbWVtb3J5X3VzYWdlLCBtZW1vcnlfYnl0ZXMsIFJPV19OVU1CRVIo KSBPVkVSIChPUkRFUiBCWSBwaWQpIEFTIHJvd19udW1iZXIKKyAgICAgICAgRlJPTSBwZ19zeXNf Y3B1X21lbW9yeV9ieV9wcm9jZXNzKCkKKyAgICApIHQKKyAgICApIEFTIGNoYXJ0X2RhdGEKK3sl IGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24gYW5kICdwaV9zdGF0cycgaW4gY2hhcnRfbmFtZXMg JX0KKyAgICBVTklPTiBBTEwKK3slIGVuZGlmICV9Cit7JSBpZiAncGlfc3RhdHMnIGluIGNoYXJ0 X25hbWVzICV9Cit7JSBzZXQgYWRkX3VuaW9uID0gdHJ1ZSAlfQorICAgIFNFTEVDVCAncGlfc3Rh dHMnIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFsb2cucm93X3RvX2pzb24odCkgQVMgY2hhcnRfZGF0 YSBGUk9NIChTRUxFQ1QgKiBGUk9NIHBnX3N5c19wcm9jZXNzX2luZm8oKSkgdAoreyUgZW5kaWYg JX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvY29tcG9uZW50cy9QZ0NoYXJ0L0RvbnV0Q2hhcnQuanN4IGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9Eb251dENoYXJ0LmpzeApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjljOTE3Y2MyMAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1BnQ2hhcnQvRG9udXRDaGFydC5qc3gKQEAg LTAsMCArMSw2OCBAQAoraW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAn cmVhY3QnOworaW1wb3J0IENoYXJ0IGZyb20gJ2NoYXJ0LmpzL2F1dG8nOworaW1wb3J0IHsgdXNl UmVzaXplRGV0ZWN0b3IgfSBmcm9tICdyZWFjdC1yZXNpemUtZGV0ZWN0b3InOworCitjb25zdCBE b251dENoYXJ0ID0gKHsgZGF0YSB9KSA9PiB7CisgICAgY29uc3QgY2hhcnRSZWYgPSB1c2VSZWYo bnVsbCk7CisgICAgY29uc3QgY2hhcnRJbnN0YW5jZSA9IHVzZVJlZihudWxsKTsKKworICAgIHVz ZUVmZmVjdCgoKSA9PiB7CisgICAgICAgIGlmIChkYXRhICYmIE9iamVjdC5rZXlzKGRhdGEpLmxl bmd0aCA+IDApIHsKKyAgICAgICAgaWYgKGNoYXJ0SW5zdGFuY2UuY3VycmVudCkgeworICAgICAg ICAgICAgLy8gSWYgY2hhcnQgaW5zdGFuY2UgZXhpc3RzLCB1cGRhdGUgdGhlIGRhdGEKKyAgICAg ICAgICAgIGNoYXJ0SW5zdGFuY2UuY3VycmVudC5kYXRhLmxhYmVscyA9IGRhdGEubWFwKChpdGVt KSA9PiBpdGVtLmxhYmVsKTsKKyAgICAgICAgICAgIGNoYXJ0SW5zdGFuY2UuY3VycmVudC5kYXRh LmRhdGFzZXRzWzBdLmRhdGEgPSBkYXRhLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRhKTsKKyAgICAg ICAgICAgIGNoYXJ0SW5zdGFuY2UuY3VycmVudC51cGRhdGUoKTsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIC8vIElmIGNoYXJ0IGluc3RhbmNlIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBh IG5ldyBjaGFydAorICAgICAgICAgICAgY29uc3QgY2hhcnRPcHRpb25zID0geworICAgICAgICAg ICAgICAgIHJlc3BvbnNpdmU6IHRydWUsCisgICAgICAgICAgICAgICAgbWFpbnRhaW5Bc3BlY3RS YXRpbzogZmFsc2UsCisgICAgICAgICAgICAgICAgcGx1Z2luczogeworICAgICAgICAgICAgICAg ICAgICBsZWdlbmQ6IHsKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsIC8vIEhp ZGUgdGhlIGxhYmVscyBhdCB0aGUgdG9wCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBhbmltYXRpb246IHsKKyAgICAgICAgICAgICAg ICAgICAgZHVyYXRpb246IDAsIC8vIERpc2FibGUgdGhlIGFuaW1hdGlvbgorICAgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKKyAgICAgICAgICAgICAgICAgICAg Y2FsbGJhY2tzOiB7CisgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmdW5jdGlvbiAodG9vbHRp cEl0ZW0sIGNoYXJ0RGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YXNl dCA9IGNoYXJ0RGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdOworICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSBkYXRhc2V0LmRhdGEucmVkdWNlKChwcmV2 aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpID0+IHByZXZpb3VzVmFsdWUgKyBjdXJyZW50VmFsdWUp OworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZGF0YXNldC5k YXRhW3Rvb2x0aXBJdGVtLmluZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBl cmNlbnRhZ2UgPSAoKGN1cnJlbnRWYWx1ZSAvIHRvdGFsKSAqIDEwMCkudG9GaXhlZCgyKSArICcl JzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhc2V0LmxhYmVsICsgJzogJyAr IGN1cnJlbnRWYWx1ZSArICcgKCcgKyBwZXJjZW50YWdlICsgJyknOworICAgICAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAg ICAgICAgICB9OworCisgICAgICAgICAgICBjb25zdCBjaGFydERhdGEgPSB7CisgICAgICAgICAg ICBsYWJlbHM6IGRhdGEubWFwKChpdGVtKSA9PiBpdGVtLmxhYmVsKSwKKyAgICAgICAgICAgIGRh dGFzZXRzOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEu bWFwKChpdGVtKSA9PiBpdGVtLmRhdGEpLAorICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xv cjogZGF0YS5tYXAoKGl0ZW0pID0+IGl0ZW0uYm9yZGVyQ29sb3IpLAorICAgICAgICAgICAgICAg IGhvdmVyQmFja2dyb3VuZENvbG9yOiBkYXRhLm1hcCgoaXRlbSkgPT4gaXRlbS5ib3JkZXJDb2xv ciksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9Owor CisgICAgICAgICAgICBjb25zdCBjdHggPSBjaGFydFJlZi5jdXJyZW50LmdldENvbnRleHQoJzJk Jyk7CisgICAgICAgICAgICBjaGFydEluc3RhbmNlLmN1cnJlbnQgPSBuZXcgQ2hhcnQoY3R4LCB7 CisgICAgICAgICAgICB0eXBlOiAnZG91Z2hudXQnLAorICAgICAgICAgICAgZGF0YTogY2hhcnRE YXRhLAorICAgICAgICAgICAgb3B0aW9uczogY2hhcnRPcHRpb25zLAorICAgICAgICAgICAgfSk7 CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sIFtkYXRhXSk7CisKKyAgICByZXR1cm4gKAor ICAgICAgICA8Y2FudmFzIHJlZj17Y2hhcnRSZWZ9IC8+CisgICAgKTsKK307CisKK2V4cG9ydCBk ZWZhdWx0IERvbnV0Q2hhcnQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29t cG9uZW50cy9QZ0NoYXJ0L1N0cmVhbWluZ0NoYXJ0LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQuanN4CmluZGV4IGJkNDY1ZTNkYS4u ZWJhMzAxZjA1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9Q Z0NoYXJ0L1N0cmVhbWluZ0NoYXJ0LmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29t cG9uZW50cy9QZ0NoYXJ0L1N0cmVhbWluZ0NoYXJ0LmpzeApAQCAtNTgsNDQgKzU4LDg5IEBAIGZ1 bmN0aW9uIHRvb2x0aXBQbHVnaW4ocmVmcmVzaFJhdGUpIHsKICAgfTsKIH0KIAotZXhwb3J0IGRl ZmF1bHQgZnVuY3Rpb24gU3RyZWFtaW5nQ2hhcnQoe3hSYW5nZT03NSwgZGF0YSwgb3B0aW9uc30p IHsKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN0cmVhbWluZ0NoYXJ0KHt4UmFuZ2U9NzUsIGRh dGEsIG9wdGlvbnMsIHNob3dTZWNvbmRBeGlzPWZhbHNlfSkgewogICBjb25zdCBjaGFydFJlZiA9 IHVzZVJlZigpOwogICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7CiAgIGNvbnN0IHsgd2lkdGgs IGhlaWdodCwgcmVmOmNvbnRhaW5lclJlZiB9ID0gdXNlUmVzaXplRGV0ZWN0b3IoKTsKLSAgY29u c3QgZGVmYXVsdE9wdGlvbnMgPSB1c2VNZW1vKCgpPT4oewotICAgIHRpdGxlOiAnJywKLSAgICB3 aWR0aDogd2lkdGgsCi0gICAgaGVpZ2h0OiBoZWlnaHQsCi0gICAgcGFkZGluZzogWzEwLCAwLCAx MCwgMF0sCi0gICAgZm9jdXM6IHsKLSAgICAgIGFscGhhOiAwLjMsCi0gICAgfSwKLSAgICBjdXJz b3I6IHsKLSAgICAgIHk6IGZhbHNlLAotICAgICAgZHJhZzogewotICAgICAgICBzZXRTY2FsZTog ZmFsc2UsCi0gICAgICB9Ci0gICAgfSwKLSAgICBzZXJpZXM6IFsKKyAgY29uc3QgZGVmYXVsdE9w dGlvbnMgPSB1c2VNZW1vKCgpPT4geworICAgIGNvbnN0IHNlcmllcyA9IFsKICAgICAgIHt9LAot ICAgICAgLi4uKGRhdGEuZGF0YXNldHM/Lm1hcCgoZGF0dW0pPT4oeworICAgICAgLi4uKGRhdGEu ZGF0YXNldHM/Lm1hcCgoZGF0dW0sIGluZGV4KSA9PiAoewogICAgICAgICBsYWJlbDogZGF0dW0u bGFiZWwsCiAgICAgICAgIHN0cm9rZTogZGF0dW0uYm9yZGVyQ29sb3IsCiAgICAgICAgIHdpZHRo OiBvcHRpb25zLmxpbmVCb3JkZXJXaWR0aCA/PyAxLAotICAgICAgICBwb2ludHM6IHsgc2hvdzog b3B0aW9ucy5zaG93RGF0YVBvaW50cyA/PyBmYWxzZSwgc2l6ZTogZGF0dW0ucG9pbnRIaXRSYWRp dXMqMiB9Ci0gICAgICB9KSk/P3t9KQotICAgIF0sCi0gICAgc2NhbGVzOiB7Ci0gICAgICB4OiB7 Ci0gICAgICAgIHRpbWU6IGZhbHNlLAotICAgICAgfQotICAgIH0sCi0gICAgYXhlczogWworICAg ICAgICBzY2FsZTogc2hvd1NlY29uZEF4aXMgJiYgKGluZGV4ID09PSAxKSA/ICd5MScgOiAneScs CisgICAgICAgIHBvaW50czogeyBzaG93OiBvcHRpb25zLnNob3dEYXRhUG9pbnRzID8/IGZhbHNl LCBzaXplOiBkYXR1bS5wb2ludEhpdFJhZGl1cyAqIDIgfSwKKyAgICAgIH0pKSA/PyBbXSksCisg ICAgXTsKKworICAgIGNvbnN0IGF4ZXMgPSBbCiAgICAgICB7CiAgICAgICAgIHNob3c6IGZhbHNl LAogICAgICAgICBzdHJva2U6IHRoZW1lLnBhbGV0dGUudGV4dC5wcmltYXJ5LAogICAgICAgfSwK LSAgICAgIHsKKyAgICBdOworCisgICAgaWYoc2hvd1NlY29uZEF4aXMpeworICAgICAgYXhlcy5w dXNoKHsKKyAgICAgICAgc2NhbGU6ICd5JywKKyAgICAgICAgZ3JpZDogeworICAgICAgICAgIHN0 cm9rZTogdGhlbWUub3RoZXJWYXJzLmJvcmRlckNvbG9yLAorICAgICAgICAgIHdpZHRoOiAwLjUs CisgICAgICAgIH0sCisgICAgICAgIHN0cm9rZTogdGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnks CisgICAgICAgIHNpemU6IGZ1bmN0aW9uKF9vYmosIHZhbHVlcykgeworICAgICAgICAgIGxldCBz aXplID0gNDA7CisgICAgICAgICAgaWYodmFsdWVzPy5sZW5ndGggPiAwKSB7CisgICAgICAgICAg ICBzaXplID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGgtMV0ubGVuZ3RoKjEyOworICAgICAgICAgICAg aWYoc2l6ZSA8IDQwKSBzaXplID0gNDA7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBz aXplOworICAgICAgICB9LAorICAgICAgICAvLyB5LWF4aXMgY29uZmlndXJhdGlvbgorICAgICAg ICB2YWx1ZXM6IChzZWxmLCB0aWNrcykgPT4geworICAgICAgICAgIC8vIEZvcm1hdCB0aGUgbGFi ZWwKKyAgICAgICAgICByZXR1cm4gdGlja3MubWFwKCh2YWx1ZSkgPT4geworICAgICAgICAgICAg aWYodmFsdWUgPCAxKXsKKyAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKyIiOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgY29uc3Qgc3VmZml4ZXMgPSBbIiIsICJrIiwgIk0iLCAiQiIsICJU Il07CisgICAgICAgICAgICBjb25zdCBzdWZmaXhOdW0gPSBNYXRoLmZsb29yKE1hdGgubG9nMTAo dmFsdWUpIC8gMyk7CisgICAgICAgICAgICBjb25zdCBzaG9ydFZhbHVlID0gKHZhbHVlIC8gTWF0 aC5wb3coMTAwMCwgc3VmZml4TnVtKSkudG9GaXhlZCgxKTsKKyAgICAgICAgICAgIHJldHVybiBz aG9ydFZhbHVlICsgc3VmZml4ZXNbc3VmZml4TnVtXTsKKyAgICAgICAgICB9KTsKKyAgICAgICAg fQorICAgICAgfSk7CisgICAgICBheGVzLnB1c2goeworICAgICAgICBzY2FsZTogJ3kxJywKKyAg ICAgICAgc2lkZTogMSwKKyAgICAgICAgc3Ryb2tlOiB0aGVtZS5wYWxldHRlLnRleHQucHJpbWFy eSwKKyAgICAgICAgZ3JpZDoge3Nob3c6IGZhbHNlfSwKKyAgICAgICAgc2l6ZTogZnVuY3Rpb24o X29iaiwgdmFsdWVzKSB7CisgICAgICAgICAgbGV0IHNpemUgPSA0MDsKKyAgICAgICAgICBpZih2 YWx1ZXM/Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHNpemUgPSB2YWx1ZXNbdmFsdWVzLmxl bmd0aC0xXS5sZW5ndGgqMTI7CisgICAgICAgICAgICBpZihzaXplIDwgNDApIHNpemUgPSA0MDsK KyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgIH0sCisgICAgICAg IC8vIHktYXhpcyBjb25maWd1cmF0aW9uCisgICAgICAgIHZhbHVlczogKHNlbGYsIHRpY2tzKSA9 PiB7CisgICAgICAgICAgLy8gRm9ybWF0IHRoZSBsYWJlbAorICAgICAgICAgIHJldHVybiB0aWNr cy5tYXAoKHZhbHVlKSA9PiB7CisgICAgICAgICAgICBpZih2YWx1ZSA8IDEpeworICAgICAgICAg ICAgICByZXR1cm4gdmFsdWUrIiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBz dWZmaXhlcyA9IFsiIiwgImsiLCAiTSIsICJCIiwgIlQiXTsKKyAgICAgICAgICAgIGNvbnN0IHN1 ZmZpeE51bSA9IE1hdGguZmxvb3IoTWF0aC5sb2cxMCh2YWx1ZSkgLyAzKTsKKyAgICAgICAgICAg IGNvbnN0IHNob3J0VmFsdWUgPSAodmFsdWUgLyBNYXRoLnBvdygxMDAwLCBzdWZmaXhOdW0pKS50 b0ZpeGVkKDEpOworICAgICAgICAgICAgcmV0dXJuIHNob3J0VmFsdWUgKyBzdWZmaXhlc1tzdWZm aXhOdW1dOworICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9IGVsc2V7 CisgICAgICBheGVzLnB1c2goeworICAgICAgICBzY2FsZTogJ3knLAogICAgICAgICBncmlkOiB7 CiAgICAgICAgICAgc3Ryb2tlOiB0aGVtZS5vdGhlclZhcnMuYm9yZGVyQ29sb3IsCiAgICAgICAg ICAgd2lkdGg6IDAuNSwKQEAgLTEwOCwxMSArMTUzLDQ3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0 aW9uIFN0cmVhbWluZ0NoYXJ0KHt4UmFuZ2U9NzUsIGRhdGEsIG9wdGlvbnN9KSB7CiAgICAgICAg ICAgICBpZihzaXplIDwgNDApIHNpemUgPSA0MDsKICAgICAgICAgICB9CiAgICAgICAgICAgcmV0 dXJuIHNpemU7CisgICAgICAgIH0sCisgICAgICAgIC8vIHktYXhpcyBjb25maWd1cmF0aW9uCisg ICAgICAgIHZhbHVlczogKHNlbGYsIHRpY2tzKSA9PiB7CisgICAgICAgICAgLy8gRm9ybWF0IHRo ZSBsYWJlbAorICAgICAgICAgIHJldHVybiB0aWNrcy5tYXAoKHZhbHVlKSA9PiB7CisgICAgICAg ICAgICBpZih2YWx1ZSA8IDEpeworICAgICAgICAgICAgICByZXR1cm4gdmFsdWUrIiI7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBzdWZmaXhlcyA9IFsiIiwgImsiLCAiTSIsICJC IiwgIlQiXTsKKyAgICAgICAgICAgIGNvbnN0IHN1ZmZpeE51bSA9IE1hdGguZmxvb3IoTWF0aC5s b2cxMCh2YWx1ZSkgLyAzKTsKKyAgICAgICAgICAgIGNvbnN0IHNob3J0VmFsdWUgPSAodmFsdWUg LyBNYXRoLnBvdygxMDAwLCBzdWZmaXhOdW0pKS50b0ZpeGVkKDEpOworICAgICAgICAgICAgcmV0 dXJuIHNob3J0VmFsdWUgKyBzdWZmaXhlc1tzdWZmaXhOdW1dOworICAgICAgICAgIH0pOworICAg ICAgICB9CisgICAgICB9KTsKKyAgICB9CisgIAorICAgIHJldHVybiB7CisgICAgICB0aXRsZTog JycsCisgICAgICB3aWR0aDogd2lkdGgsCisgICAgICBoZWlnaHQ6IGhlaWdodCwKKyAgICAgIHBh ZGRpbmc6IFsxMCwgMCwgMTAsIDBdLAorICAgICAgZm9jdXM6IHsKKyAgICAgICAgYWxwaGE6IDAu MywKKyAgICAgIH0sCisgICAgICBjdXJzb3I6IHsKKyAgICAgICAgeTogZmFsc2UsCisgICAgICAg IGRyYWc6IHsKKyAgICAgICAgICBzZXRTY2FsZTogZmFsc2UsCisgICAgICAgIH0KKyAgICAgIH0s CisgICAgICBzZXJpZXM6IHNlcmllcywKKyAgICAgIHNjYWxlczogeworICAgICAgICB4OiB7Cisg ICAgICAgICAgdGltZTogZmFsc2UsCiAgICAgICAgIH0KLSAgICAgIH0KLSAgICBdLAotICAgIHBs dWdpbnM6IG9wdGlvbnMuc2hvd1Rvb2x0aXAgPyBbdG9vbHRpcFBsdWdpbihkYXRhLnJlZnJlc2hS YXRlKV0gOiBbXSwKLSAgfSksIFtkYXRhLnJlZnJlc2hSYXRlLCBkYXRhPy5kYXRhc2V0cz8ubGVu Z3RoLCB3aWR0aCwgaGVpZ2h0LCBvcHRpb25zXSk7CisgICAgICB9LAorICAgICAgYXhlczogYXhl cywKKyAgICAgIHBsdWdpbnM6IG9wdGlvbnMuc2hvd1Rvb2x0aXAgPyBbdG9vbHRpcFBsdWdpbihk YXRhLnJlZnJlc2hSYXRlKV0gOiBbXSwKKyAgICB9OworICB9LCBbZGF0YS5yZWZyZXNoUmF0ZSwg ZGF0YT8uZGF0YXNldHM/Lmxlbmd0aCwgd2lkdGgsIGhlaWdodCwgb3B0aW9uc10pOwogCiAgIGNv bnN0IGluaXRpYWxTdGF0ZSA9IFsKICAgICBBcnJheS5mcm9tKG5ldyBBcnJheSh4UmFuZ2UpLmtl eXMoKSksCkBAIC0xNDAsNCArMjIxLDUgQEAgU3RyZWFtaW5nQ2hhcnQucHJvcFR5cGVzID0gewog ICB4UmFuZ2U6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCwKICAgZGF0YTogcHJvcFR5cGVE YXRhLmlzUmVxdWlyZWQsCiAgIG9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsCisgIHNob3dTZWNv bmRBeGlzOiBQcm9wVHlwZXMuYm9vbCwKIH07Cg== --00000000000033bcdc060047af65--