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 1kKHW5-0002ls-HQ for pgadmin-hackers@arkaria.postgresql.org; Mon, 21 Sep 2020 08:49:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kKHW4-0005lz-FJ for pgadmin-hackers@arkaria.postgresql.org; Mon, 21 Sep 2020 08:49:44 +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 1kKHW4-0005lr-5T for pgadmin-hackers@lists.postgresql.org; Mon, 21 Sep 2020 08:49:44 +0000 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kKHVw-0002d4-I5 for pgadmin-hackers@postgresql.org; Mon, 21 Sep 2020 08:49:43 +0000 Received: by mail-lf1-x129.google.com with SMTP id 77so5779253lfj.0 for ; Mon, 21 Sep 2020 01:49:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=ZM/E6QqgSzBKzMrtizKorpaq600eiJw3n/eQjUjK65A=; b=FgIAHRSWNHqgjbp8QvqLSgnnPL+Z4p6h9h/Jx3T5suHSYVGeuBlaDKEnb2swcO6paI n3DYKn4GkjZa8paCzP6De2eoThLfp2ruAC8MBilH6DMGilz2Vg2VoI68HFNURKi3xWGR vFMLV2ZynYAs93AfkXYXODD+bC8niRM5LxucLFxFTPVe2ZgOhReHvjLKkKykucd4SEHK edpXNheWks8ttBED81FtOrtEuqqZkfDH35J2G2vj3NJeJwXqGSA0CWGDoIQu6eV4FqVS GLdd9Dhu5zMGdkW+S2HeHu7sQXH2cTqCcFFBOpBGtx7gZ+LJvzNAU6PoG8TZVwpx8NRH QWvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ZM/E6QqgSzBKzMrtizKorpaq600eiJw3n/eQjUjK65A=; b=XgmLGmcfL2NAQ+/aLxDjlOPFauxgee1w/26opxOoMCnsg9hm/PSu7GpUCmBk6Ymspm h2psrT1Ktalt0K46KDkUMxIGjXwZ6k9ohpjiSzYGa6+iJ2gI2s3Cj6G/ogYrCDFeTIvq btoGzjVMVX6h1NZrAHAt4zRE2Nlfd56dDM09HaobJyvr5hN5rFqQTVlKjmb714RBTgJH puK31bw5XoXCBUZFHK42BIIFLLlgXDh5jxNTfbcYM0XZF1cTwI4VAkbJcv7aRL7iXc7Q AmN+FQg132hymSTgJru60K+pSrTm6ovb0oDLMwJNvmacksTqE4Gtsdz0+QKhXFNuTXwp VI8A== X-Gm-Message-State: AOAM5338Ji/THvCKwt+1Ezhgu9WoJoS2QPR3/J5Z4n7VSF+Cgl9AlKNy IFWqqOILoZ/voVOcvTnEw7F0Pl++GZ8GbsupuQskTa3vE1AZBtvyakR34GpwEGge3Dil5KUjXkD ejZFd+pwRYohllJdST9CnDiM9yQoOFcJQY+obgmJl5eGEyder9UToQV1ldGAZw3Qc8OXLcffkWu NY2w0NT+P4M+N8aWxqR9OdDIdz6fO55lvK/iPuY9mmAlPOWL6ACJ9lUvOYHAgyabC1aQ== X-Google-Smtp-Source: ABdhPJw8szMq0ISKtiJIjg7vzWbp7LMOZ5ipTCUM1Pd6AUrw70ZbXK8YS8L8LDACqT4+pwmjNkVB1xME90f9uSONC/U= X-Received: by 2002:a19:4915:: with SMTP id w21mr17304600lfa.2.1600678174994; Mon, 21 Sep 2020 01:49:34 -0700 (PDT) MIME-Version: 1.0 From: Khushboo Vashi Date: Mon, 21 Sep 2020 14:19:30 +0530 Message-ID: Subject: [pgAdmin4][Patch] - RM 1402 - Macro support like pgAdmin3 To: pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000005678d05afceeea9" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000005678d05afceeea9 Content-Type: multipart/alternative; boundary="00000000000005678705afceeea7" --00000000000005678705afceeea7 Content-Type: text/plain; charset="UTF-8" Hi, Please find the attached patch for RM 1402 - Macro support like pgAdmin3. Thanks, Khushboo --00000000000005678705afceeea7 Content-Type: text/html; charset="UTF-8"
Hi,

Please find the attached patch for RM 1402 - Macro support like pgAdmin3.

Thanks,
Khushboo

--00000000000005678705afceeea7-- --00000000000005678d05afceeea9 Content-Type: application/octet-stream; name="RM_1402.patch" Content-Disposition: attachment; filename="RM_1402.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfca83ad0 ZGlmZiAtLWdpdCBhL3dlYi9taWdyYXRpb25zL3ZlcnNpb25zLzM5ODY5N2RjOTU1MF8ucHkgYi93 ZWIvbWlncmF0aW9ucy92ZXJzaW9ucy8zOTg2OTdkYzk1NTBfLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMC4uYzk2NTFmNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL21p Z3JhdGlvbnMvdmVyc2lvbnMvMzk4Njk3ZGM5NTUwXy5weQpAQCAtMCwwICsxLDU2IEBACisKKyIi ImVtcHR5IG1lc3NhZ2UKKworUmV2aXNpb24gSUQ6IDM5ODY5N2RjOTU1MAorUmV2aXNlczogYTA5 MWM5NjExZDIwCitDcmVhdGUgRGF0ZTogMjAyMC0wOS0wNyAxNToxNzo1OS40NzM4NzkKKworIiIi Citmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiCisKKyMgcmV2aXNpb24gaWRlbnRpZmllcnMs IHVzZWQgYnkgQWxlbWJpYy4KK3JldmlzaW9uID0gJzM5ODY5N2RjOTU1MCcKK2Rvd25fcmV2aXNp b24gPSAnYTA5MWM5NjExZDIwJworYnJhbmNoX2xhYmVscyA9IE5vbmUKK2RlcGVuZHNfb24gPSBO b25lCisKKworZGVmIHVwZ3JhZGUoKToKKyAgICBkYi5lbmdpbmUuZXhlY3V0ZSgiIiIKKyAgICAg ICAgQ1JFQVRFIFRBQkxFIG1hY3JvcyAoCisgICAgICAgICAgICBpZCBJTlRFR0VSIE5PVCBOVUxM LAorICAgICAgICAgICAgYWx0IEJPT0xFQU4gTk9UIE5VTEwsCisgICAgICAgICAgICBjb250cm9s IEJPT0xFQU4gTk9UIE5VTEwsCisgICAgICAgICAgICBrZXkJVkFSQ0hBUigxMjgpIE5PVCBOVUxM LAorICAgICAgICAgICAga2V5X2NvZGUgSU5URUdFUiBOT1QgTlVMTCwKKyAgICAgICAgICAgIFBS SU1BUlkgS0VZKGlkKQorICAgICAgICApOworICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVj dXRlKCIiIgorICAgICAgICBDUkVBVEUgVEFCTEUgdXNlcl9tYWNyb3MgKAorICAgICAgICAgICAg bWlkIElOVEVHRVIgTk9UIE5VTEwsCisgICAgICAgICAgICB1aWQgSU5URUdFUiBOT1QgTlVMTCwK KyAgICAgICAgICAgIG5hbWUgVkFSQ0hBUigxMDI0KSBOT1QgTlVMTCwKKyAgICAgICAgICAgIHNx bAlURVhUIE5PVCBOVUxMLAorICAgICAgICAgICAgUFJJTUFSWSBLRVkobWlkLCB1aWQpLAorICAg ICAgICAgICAgRk9SRUlHTiBLRVkobWlkKSBSRUZFUkVOQ0VTIG1hY3JvcyAoaWQpLAorICAgICAg ICAgICAgRk9SRUlHTiBLRVkodWlkKSBSRUZFUkVOQ0VTIHVzZXIgKGlkKQorICAgICAgICApOwor ICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBJTlNFUlQgSU5U TyBtYWNyb3MgKGlkLCBhbHQsIGNvbnRyb2wsIGtleSwga2V5X2NvZGUpIFZBTFVFUyAoMSwgZmFs c2UsIHRydWUsICcxJywgNDkpLAorICAgICAgICAoMiwgZmFsc2UsIHRydWUsICcyJywgNTApLCAo MywgZmFsc2UsIHRydWUsICczJywgNTEpLCAoNCwgZmFsc2UsIHRydWUsICc0JywgNTIpLAorICAg ICAgICAoNSwgZmFsc2UsIHRydWUsICc1JywgNTMpLCAoNiwgZmFsc2UsIHRydWUsICc2JywgNTQp LCAoNywgZmFsc2UsIHRydWUsICc3JywgNTUpLAorICAgICAgICAoOCwgZmFsc2UsIHRydWUsICc4 JywgNTYpLCAoOSwgZmFsc2UsIHRydWUsICc5JywgNTcpLCAoMTAsIGZhbHNlLCB0cnVlLCAnMCcs IDQ4KSwKKyAgICAgICAgKDExLCB0cnVlLCBmYWxzZSwgJ0YxJywgMTEyKSwgKDEyLCB0cnVlLCBm YWxzZSwgJ0YyJywgMTEzKSwgKDEzLCB0cnVlLCBmYWxzZSwgJ0YzJywgMTE0KSwKKyAgICAgICAg KDE0LCB0cnVlLCBmYWxzZSwgJ0Y0JywgMTE1KSwgKDE1LCB0cnVlLCBmYWxzZSwgJ0Y1JywgMTE2 KSwgKDE2LCB0cnVlLCBmYWxzZSwgJ0Y2JywgMTE3KSwKKyAgICAgICAgKDE3LCB0cnVlLCBmYWxz ZSwgJ0Y3JywgMTE4KSwgKDE4LCB0cnVlLCBmYWxzZSwgJ0Y4JywgMTE5KSwgKDE5LCB0cnVlLCBm YWxzZSwgJ0Y5JywgMTIwKSwKKyAgICAgICAgKDIwLCB0cnVlLCBmYWxzZSwgJ0YxMCcsIDEyMSks ICgyMSwgdHJ1ZSwgZmFsc2UsICdGMTEnLCAxMjIpLCAoMjIsIHRydWUsIGZhbHNlLCAnRjEyJywg MTIzKTsKKyAgICAiIiIpCisKKworZGVmIGRvd25ncmFkZSgpOgorICAgICMgcGdBZG1pbiBvbmx5 IHVwZ3JhZGVzLCBkb3duZ3JhZGUgbm90IGltcGxlbWVudGVkLgorICAgIHBhc3MKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vbW9kZWwvX19p bml0X18ucHkKaW5kZXggYjMzYWRjMDYyLi40MjVjOWU2NDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL21vZGVsL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5 CkBAIC0yOSw3ICsyOSw3IEBAIGZyb20gZmxhc2tfc3FsYWxjaGVteSBpbXBvcnQgU1FMQWxjaGVt eQogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotU0NIRU1BX1ZFUlNJT04gPSAyNgorU0NIRU1BX1ZF UlNJT04gPSAyNwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwpAQCAtMzkxLDMgKzM5MSwyNiBAQCBj bGFzcyBTaGFyZWRTZXJ2ZXIoZGIuTW9kZWwpOgogICAgIHR1bm5lbF9pZGVudGl0eV9maWxlID0g ZGIuQ29sdW1uKGRiLlN0cmluZyg2NCksIG51bGxhYmxlPVRydWUpCiAgICAgdHVubmVsX3Bhc3N3 b3JkID0gZGIuQ29sdW1uKGRiLlN0cmluZyg2NCksIG51bGxhYmxlPVRydWUpCiAgICAgc2hhcmVk ID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4oKSwgbnVsbGFibGU9RmFsc2UpCisKKworY2xhc3MgTWFj cm9zKGRiLk1vZGVsKToKKyAgICAiIiJEZWZpbmUgYSBwYXJ0aWN1bGFyIG1hY3JvLiIiIgorICAg IF9fdGFibGVuYW1lX18gPSAnbWFjcm9zJworICAgIGlkID0gZGIuQ29sdW1uKGRiLkludGVnZXIs IHByaW1hcnlfa2V5PVRydWUpCisgICAgYWx0ID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4oKSwgbnVs bGFibGU9RmFsc2UpCisgICAgY29udHJvbCA9IGRiLkNvbHVtbihkYi5Cb29sZWFuKCksIG51bGxh YmxlPUZhbHNlKQorICAgIGtleSA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMzIpLCBudWxsYWJsZT1G YWxzZSkKKyAgICBrZXlfY29kZSA9IGRiLkNvbHVtbihkYi5JbnRlZ2VyLCBudWxsYWJsZT1GYWxz ZSkKKworCitjbGFzcyBVc2VyTWFjcm9zKGRiLk1vZGVsKToKKyAgICAiIiJEZWZpbmUgdGhlIG1h Y3JvIGZvciBhIHBhcnRpY3VsYXIgdXNlci4iIiIKKyAgICBfX3RhYmxlbmFtZV9fID0gJ3VzZXJf bWFjcm9zJworICAgIG1pZCA9IGRiLkNvbHVtbigKKyAgICAgICAgZGIuSW50ZWdlciwgZGIuRm9y ZWlnbktleSgnbWFjcm9zLmlkJyksIHByaW1hcnlfa2V5PVRydWUKKyAgICApCisgICAgdWlkID0g ZGIuQ29sdW1uKAorICAgICAgICBkYi5JbnRlZ2VyLCBkYi5Gb3JlaWduS2V5KCd1c2VyLmlkJyks IHByaW1hcnlfa2V5PVRydWUKKyAgICApCisgICAgbmFtZSA9IGRiLkNvbHVtbihkYi5TdHJpbmco MTAyNCksIG51bGxhYmxlPUZhbHNlKQorICAgIHNxbCA9IGRiLkNvbHVtbihkYi5UZXh0KCksIG51 bGxhYmxlPUZhbHNlKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlk LnBnYWRtaW4uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcwpp bmRleCBlNDE3ZGM3OGQuLjYzOTRjMTc5NCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tncmlkLnBnYWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tn cmlkLnBnYWRtaW4uanMKQEAgLTksMTAgKzksMTAgQEAKIAogZGVmaW5lKFsKICAgJ3NvdXJjZXMv Z2V0dGV4dCcsICd1bmRlcnNjb3JlJywgJ2pxdWVyeScsICdiYWNrYm9uZScsICdiYWNrZm9ybScs ICdiYWNrZ3JpZCcsICdhbGVydGlmeScsCi0gICdtb21lbnQnLCAnYmlnbnVtYmVyJywgJ3NvdXJj ZXMvdXRpbHMnLCAnc291cmNlcy9rZXlib2FyZF9zaG9ydGN1dHMnLCAnc291cmNlcy9zZWxlY3Qy L2NvbmZpZ3VyZV9zaG93X29uX3Njcm9sbCcsCisgICdtb21lbnQnLCAnYmlnbnVtYmVyJywgJ2Nv ZGVtaXJyb3InLCAnc291cmNlcy91dGlscycsICdzb3VyY2VzL2tleWJvYXJkX3Nob3J0Y3V0cycs ICdzb3VyY2VzL3NlbGVjdDIvY29uZmlndXJlX3Nob3dfb25fc2Nyb2xsJywKICAgJ2Jvb3RzdHJh cC5kYXRldGltZXBpY2tlcicsICdiYWNrZ3JpZC5maWx0ZXInLCAnYm9vdHN0cmFwLnRvZ2dsZScs CiBdLCBmdW5jdGlvbigKLSAgZ2V0dGV4dCwgXywgJCwgQmFja2JvbmUsIEJhY2tmb3JtLCBCYWNr Z3JpZCwgQWxlcnRpZnksIG1vbWVudCwgQmlnTnVtYmVyLAorICBnZXR0ZXh0LCBfLCAkLCBCYWNr Ym9uZSwgQmFja2Zvcm0sIEJhY2tncmlkLCBBbGVydGlmeSwgbW9tZW50LCBCaWdOdW1iZXIsIENv ZGVNaXJyb3IsCiAgIGNvbW1vblV0aWxzLCBrZXlib2FyZFNob3J0Y3V0cywgY29uZmlndXJlX3No b3dfb25fc2Nyb2xsCiApIHsKICAgLyoKQEAgLTQ0LDcgKzQ0LDcgQEAgZGVmaW5lKFsKICAgXy5l eHRlbmQoQmFja2dyaWQuSW5wdXRDZWxsRWRpdG9yLnByb3RvdHlwZS5ldmVudHMsIHsKICAgICAn a2V5ZG93bic6IGZ1bmN0aW9uKGUpIHsKICAgICAgIGxldCBwcmVmZXJlbmNlcyA9IHBnQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOwotICAgICAgaWYoa2V5Ym9h cmRTaG9ydGN1dHMudmFsaWRhdGVTaG9ydGN1dEtleXMocHJlZmVyZW5jZXMuYWRkX2dyaWRfcm93 LGUpKSB7CisgICAgICBpZihwcmVmZXJlbmNlcyAmJiBrZXlib2FyZFNob3J0Y3V0cy52YWxpZGF0 ZVNob3J0Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZSkpIHsKICAgICAgICAgcGdC cm93c2VyLmtleWJvYXJkTmF2aWdhdGlvbi5iaW5kQWRkR3JpZFJvdygpOwogICAgICAgfSBlbHNl IHsKICAgICAgICAgQmFja2dyaWQuSW5wdXRDZWxsRWRpdG9yLnByb3RvdHlwZS5zYXZlT3JDYW5j ZWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKQEAgLTMyNCw3ICszMjQsNyBAQCBkZWZpbmUoWwog ICAgICAgICBldmVudHM6IHsKICAgICAgICAgICAna2V5ZG93bic6IGZ1bmN0aW9uIChldmVudCkg ewogICAgICAgICAgICAgbGV0IHByZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNl c19mb3JfbW9kdWxlKCdicm93c2VyJyk7Ci0gICAgICAgICAgICBpZihrZXlib2FyZFNob3J0Y3V0 cy52YWxpZGF0ZVNob3J0Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZXZlbnQpKSB7 CisgICAgICAgICAgICBpZihwcmVmZXJlbmNlcyAmJiBrZXlib2FyZFNob3J0Y3V0cy52YWxpZGF0 ZVNob3J0Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZXZlbnQpKSB7CiAgICAgICAg ICAgICAgIHBnQnJvd3Nlci5rZXlib2FyZE5hdmlnYXRpb24uYmluZEFkZEdyaWRSb3coKTsKICAg ICAgICAgICAgIH0KICAgICAgICAgICB9LApAQCAtNjA2LDYgKzYwNiw5NSBAQCBkZWZpbmUoWwog ICAgIH0sCiAgIH0pOwogCisKKyAgQmFja2dyaWQuRXh0ZW5zaW9uLkNsZWFyQ2VsbCA9IEJhY2tn cmlkLkNlbGwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogXy5kZWZhdWx0cyh7CisgICAgICBkZWZh dWx0Q2xlYXJNc2c6IGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBjbGVhciB0aGlz IHJvdz8nKSwKKyAgICAgIGRlZmF1bHRDbGVhclRpdGxlOiBnZXR0ZXh0KCdDbGVhciBSb3cnKSwK KyAgICB9LCBCYWNrZ3JpZC5DZWxsLnByb3RvdHlwZS5kZWZhdWx0cyksCisKKyAgICAvKiogQHBy b3BlcnR5ICovCisgICAgY2xhc3NOYW1lOiAnY2xlYXItY2VsbCcsCisgICAgZXZlbnRzOiB7Cisg ICAgICAnY2xpY2snOiAnY2xlYXJSb3cnLAorICAgIH0sCisgICAgY2xlYXJSb3c6IGZ1bmN0aW9u KGUpIHsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIHZhciB0aGF0ID0gdGhpczsK KyAgICAgIC8vIFdlIHdpbGwgY2hlY2sgaWYgcm93IGlzIGRlbGV0YWJsZSBvciBub3QKKworICAg ICAgdmFyIGNsZWFyX21zZyA9ICFfLmlzVW5kZWZpbmVkKHRoaXMuY29sdW1uLmdldCgnY3VzdG9t Q2xlYXJNc2cnKSkgPworICAgICAgICB0aGlzLmNvbHVtbi5nZXQoJ2N1c3RvbUNsZWFyTXNnJykg OiB0aGF0LmRlZmF1bHRzLmRlZmF1bHRDbGVhck1zZzsKKyAgICAgIHZhciBjbGVhcl90aXRsZSA9 ICFfLmlzVW5kZWZpbmVkKHRoaXMuY29sdW1uLmdldCgnY3VzdG9tQ2xlYXJUaXRsZScpKSA/Cisg ICAgICAgIHRoaXMuY29sdW1uLmdldCgnY3VzdG9tQ2xlYXJUaXRsZScpIDogdGhhdC5kZWZhdWx0 cy5kZWZhdWx0Q2xlYXJUaXRsZTsKKyAgICAgIEFsZXJ0aWZ5LmNvbmZpcm0oCisgICAgICAgIGNs ZWFyX3RpdGxlLAorICAgICAgICBjbGVhcl9tc2csCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAg ICAgICAgIHRoYXQubW9kZWwuc2V0KCduYW1lJywgbnVsbCk7CisgICAgICAgICAgdGhhdC5tb2Rl bC5zZXQoJ3NxbCcsIG51bGwpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbigpIHsKKyAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgKTsKKworICAgIH0sCisgICAg ZXhpdEVkaXRNb2RlOiBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMuJGVsLnJlbW92ZUNsYXNzKCdl ZGl0b3InKTsKKyAgICB9LAorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAgICAgQmFj a2dyaWQuQ2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgIH0sCisgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBzZWxmID0gdGhpczsK KyAgICAgIHRoaXMuJGVsLmVtcHR5KCk7CisgICAgICAkKHRoaXMuJGVsKS5hdHRyKCd0YWJpbmRl eCcsIDApOworICAgICAgaWYgKHRoaXMubW9kZWwuZ2V0KCduYW1lJykgIT09IG51bGwgJiYgdGhp cy5tb2RlbC5nZXQoJ3NxbCcpICE9PSBudWxsKQorICAgICAgICB0aGlzLiRlbC5odG1sKCc8aSBh cmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnQ2xlYXIgcm93JykgKyAnIiBjbGFzcz1cJ2ZhIGZhLWVy YXNlclwnIHRpdGxlPVwnJyArIGdldHRleHQoJ0NsZWFyIHJvdycpICsgJ1wnPjwvaT4nKTsKKyAg ICAgIC8vIExpc3RlbiBmb3IgVGFiL1NoaWZ0LVRhYiBrZXkKKyAgICAgIHRoaXMuJGVsLm9uKCdr ZXlkb3duJywgZnVuY3Rpb24oZSkgeworICAgICAgICAvLyB3aXRoIGtleWJvYXJkIG5hdmlnYXRp b24gb24gc3BhY2Uga2V5LCBtYXJrIHJvdyBmb3IgZGVsZXRpb24KKyAgICAgICAgaWYgKGUua2V5 Q29kZSA9PSAzMikgeworICAgICAgICAgIHNlbGYuJGVsLmNsaWNrKCk7CisgICAgICAgIH0KKyAg ICAgICAgdmFyIGdvdG9DZWxsOworICAgICAgICBpZiAoZS5rZXlDb2RlID09IDkgfHwgZS5rZXlD b2RlID09IDE2KSB7CisgICAgICAgICAgLy8gZ28gdG8gTmV4dCBDZWxsICYgaWYgU2hpZnQgaXMg YWxzbyBwcmVzc2VkIGdvIHRvIFByZXZpb3VzIENlbGwKKyAgICAgICAgICBnb3RvQ2VsbCA9IGUu c2hpZnRLZXkgPyBzZWxmLiRlbC5wcmV2KCkgOiBzZWxmLiRlbC5uZXh0KCk7CisgICAgICAgIH0K KworICAgICAgICBpZiAoZ290b0NlbGwpIHsKKyAgICAgICAgICBsZXQgY29tbWFuZCA9IG5ldyBC YWNrZ3JpZC5Db21tYW5kKHsKKyAgICAgICAgICAgIGtleTogJ1RhYicsCisgICAgICAgICAgICBr ZXlDb2RlOiA5LAorICAgICAgICAgICAgd2hpY2g6IDksCisgICAgICAgICAgICBzaGlmdEtleTog ZS5zaGlmdEtleSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIEVkaXRhYmxlIENlbGwKKyAgICAgICAg ICAgIGlmIChnb3RvQ2VsbC5oYXNDbGFzcygnZWRpdGFibGUnKSkgeworICAgICAgICAgICAgICBl LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Cisg ICAgICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcignYmFja2dyaWQ6ZWRpdGVkJywgc2VsZi5t b2RlbCwKKyAgICAgICAgICAgICAgICBzZWxmLmNvbHVtbiwgY29tbWFuZCk7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIE5v bi1FZGl0YWJsZSBDZWxsCisgICAgICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcignYmFja2dy aWQ6ZWRpdGVkJywgc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgICBzZWxmLmNvbHVtbiwgY29t bWFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgMjApOworICAgICAgICB9CisgICAg ICB9KTsKKworCisgICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICByZXR1cm4gdGhp czsKKyAgICB9LAorICB9KTsKKworCiAgIEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJD ZWxsID0gQmFja2dyaWQuSGVhZGVyQ2VsbC5leHRlbmQoewogICAgIGluaXRpYWxpemU6IGZ1bmN0 aW9uKCkgewogICAgICAgLy8gSGVyZSwgd2Ugd2lsbCBhZGQgY3VzdG9tIGNsYXNzZXMgdG8gaGVh ZGVyIGNlbGwKQEAgLTIwODEsNiArMjE3MCw4NCBAQCBkZWZpbmUoWwogICAgIH0sCiAgIH0pOwog CisgIEJhY2tncmlkLkV4dGVuc2lvbi5TcWxDZWxsID0gQmFja2dyaWQuRXh0ZW5zaW9uLlRleHRh cmVhQ2VsbC5leHRlbmQoeworICAgIGNsYXNzTmFtZTogJ3NxbC1jZWxsJywKKyAgICBkZWZhdWx0 czogeworICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLAorICAgIH0sCisgICAgdGVtcGxhdGU6IF8u dGVtcGxhdGUoWworICAgICAgJzxkaXYgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2Vt ZW50PSJ0b3AiIGRhdGEtaHRtbD0idHJ1ZSIgdGl0bGU9IjwlLSB2YWwgJT4iPjx0ZXh0YXJlYSBh cmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnU1FMJykgKyciICsgc3R5bGU9ImRpc3BsYXk6IG5vbmU7 Ij48JS0gdmFsICU+PC90ZXh0YXJlYT48ZGl2PicsCisgICAgXS5qb2luKCdcbicpKSwKKworICAg IHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICBsZXQgc2VsZiA9IHRoaXMsCisgICAgICAgIGNv bCA9IF8uZGVmYXVsdHModGhpcy5jb2x1bW4udG9KU09OKCksIHRoaXMuZGVmYXVsdHMpLAorICAg ICAgICBtb2RlbCA9IHRoaXMubW9kZWwsCisgICAgICAgIGNvbHVtbiA9IHRoaXMuY29sdW1uLAor ICAgICAgICBjb2x1bW5OYW1lID0gdGhpcy5jb2x1bW4uZ2V0KCduYW1lJyksCisgICAgICAgIGVk aXRhYmxlID0gQmFja2dyaWQuY2FsbEJ5TmVlZChjb2wuZWRpdGFibGUsIGNvbHVtbiwgbW9kZWwp OworCisgICAgICBpZiAodGhpcy5zcWxDZWxsKSB7CisgICAgICAgIHRoaXMuc3FsQ2VsbC50b1Rl eHRBcmVhKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLnNxbENlbGw7CisgICAgICAgIHRoaXMuc3Fs Q2VsbCA9IG51bGw7CisgICAgICB9CisKKyAgICAgIHRoaXMuJGVsLmVtcHR5KCk7CisgICAgICB0 aGlzLiRlbC5hcHBlbmQodGhpcy50ZW1wbGF0ZSh7CisgICAgICAgIHZhbDp0aGlzLmZvcm1hdHRl ci5mcm9tUmF3KG1vZGVsLmdldChjb2x1bW5OYW1lKSwgbW9kZWwpLAorICAgICAgfSkKKyAgICAg ICk7CisgICAgICB0aGlzLiRlbC5hZGRDbGFzcyhjb2x1bW5OYW1lKTsKKyAgICAgIHRoaXMudXBk YXRlU3RhdGVDbGFzc2VzTWF5YmUoKTsKKyAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKKwor ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5zcWxDZWxsID0gQ29k ZU1pcnJvci5mcm9tVGV4dEFyZWEoCisgICAgICAgICAgKHNlbGYuJGVsLmZpbmQoJ3RleHRhcmVh JylbMF0pLCB7CisgICAgICAgICAgICBtb2RlOiAndGV4dC94LXBnc3FsJywKKyAgICAgICAgICAg IHJlYWRPbmx5OiAhZWRpdGFibGUsCisgICAgICAgICAgICBsaW5lV3JhcHBpbmc6IGNvbC5saW5l V3JhcHBpbmcsCisgICAgICAgICAgICBzY3JlZW5SZWFkZXJMYWJlbDogY29sdW1uTmFtZSwKKyAg ICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorICAg IGVudGVyRWRpdE1vZGU6IGZ1bmN0aW9uICgpIHsKKyAgICAgIGlmICghdGhpcy4kZWwuaGFzQ2xh c3MoJ2VkaXRvcicpKSB0aGlzLiRlbC5hZGRDbGFzcygnZWRpdG9yJyk7CisgICAgICB0aGlzLnNx bENlbGwuZm9jdXMoKTsKKyAgICAgIHRoaXMuc3FsQ2VsbC5vbignYmx1cicsIHRoaXMuZXhpdEVk aXRNb2RlLmJpbmQodGhpcykpOworICAgIH0sCisgICAgZXhpdEVkaXRNb2RlOiBmdW5jdGlvbiAo KSB7CisgICAgICB0aGlzLiRlbC5yZW1vdmVDbGFzcygnZWRpdG9yJyk7CisgICAgICB0aGlzLnNh dmVPckNhbmNlbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH0sCisgICAgc2F2ZU9yQ2Fu Y2VsOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBtb2RlbCA9IHRoaXMubW9kZWw7CisgICAgICB2 YXIgY29sdW1uID0gdGhpcy5jb2x1bW47CisgICAgICBpZiAodGhpcy5zcWxDZWxsKSB7CisgICAg ICAgIHZhciB2YWwgPSB0aGlzLnNxbENlbGwuZ2V0VGV4dEFyZWEoKS52YWx1ZTsKKyAgICAgICAg dmFyIG5ld1ZhbHVlID0gdGhpcy5zcWxDZWxsLmdldFZhbHVlKCk7CisgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKG5ld1ZhbHVlKSkgeworICAgICAgICAgIG1vZGVsLnRyaWdnZXIoJ2JhY2tncmlk OmVycm9yJywgbW9kZWwsIGNvbHVtbiwgdmFsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK KyAgICAgICAgICBtb2RlbC5zZXQoY29sdW1uLmdldCgnbmFtZScpLCBuZXdWYWx1ZSk7CisgICAg ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CisgICAgICBp ZiAodGhpcy5zcWxDZWxsKSB7CisgICAgICAgICQodGhpcy4kZWwuZmluZCgnW2RhdGEtdG9nZ2xl PSJ0b29sdGlwIl0nKSkudG9vbHRpcCgnZGlzcG9zZScpOworICAgICAgICB0aGlzLnNxbENlbGwu dG9UZXh0QXJlYSgpOworICAgICAgICBkZWxldGUgdGhpcy5zcWxDZWxsOworICAgICAgICB0aGlz LnNxbENlbGwgPSBudWxsOworICAgICAgfQorICAgICAgcmV0dXJuIEJhY2tncmlkLkV4dGVuc2lv bi5UZXh0YXJlYUNlbGwucHJvdG90eXBlLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgIH0sCisgIH0pOworCiAgIHJldHVybiBCYWNrZ3JpZDsKIAogfSk7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRzLmpzIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5qcwppbmRleCBmMDI4NTE3MjAuLmFiZGE4ZDhm MiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5q cworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRzLmpzCkBAIC0z MjQsMTUgKzMyNCwzOCBAQCBmdW5jdGlvbiBrZXlib2FyZFNob3J0Y3V0c1F1ZXJ5VG9vbCgKICAg ICAgICAgfQogICAgICAgfQogICAgIH0KKyAgfSBlbHNlIHsKKyAgICAvLyBNYWNyb3MKKyAgICBs ZXQgbWFjcm9JZCA9IHRoaXMudmFsaWRhdGVNYWNyb3Moc3FsRWRpdG9yQ29udHJvbGxlciwgZXZl bnQpOworCisgICAgaWYgIChtYWNyb0lkICE9PSBmYWxzZSkgeworICAgICAgdGhpcy5fc3RvcEV2 ZW50UHJvcGFnYXRpb24oZXZlbnQpOworICAgICAgcXVlcnlUb29sQWN0aW9ucy5leGVjdXRlTWFj cm8oc3FsRWRpdG9yQ29udHJvbGxlciwgbWFjcm9JZCk7CisgICAgfQogICB9CiAKICAgcmV0dXJu IHBhbmVsX3R5cGU7CiB9CiAKK2Z1bmN0aW9uIHZhbGlkYXRlTWFjcm9zKHNxbEVkaXRvckNvbnRy b2xsZXIsIGV2ZW50KSB7CisgIGxldCBrZXlDb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5 Q29kZTsKKworICBsZXQgbWFjcm8gPSBzcWxFZGl0b3JDb250cm9sbGVyLm1hY3Jvcy5maWx0ZXIo bWMgPT4KKyAgICBtYy5hbHQgPT0gZXZlbnQuYWx0S2V5ICYmCisgICAgbWMuY29udHJvbCAgPT0g ZXZlbnQuY3RybEtleSAmJgorICAgIG1jLmtleV9jb2RlID09IGtleUNvZGUpOworCisgIGlmICht YWNyby5sZW5ndGggPT0gMSkgeworICAgIHJldHVybiBtYWNyb1swXS5pZDsKKyAgfQorCisgIHJl dHVybiBmYWxzZTsKK30KKwogZXhwb3J0IHsKICAga2V5Ym9hcmRTaG9ydGN1dHNEZWJ1Z2dlciBh cyBwcm9jZXNzRXZlbnREZWJ1Z2dlciwKICAga2V5Ym9hcmRTaG9ydGN1dHNRdWVyeVRvb2wgYXMg cHJvY2Vzc0V2ZW50UXVlcnlUb29sLAotICBmb2N1c0RvY2tlclBhbmVsLCB2YWxpZGF0ZVNob3J0 Y3V0S2V5cywKKyAgZm9jdXNEb2NrZXJQYW5lbCwgdmFsaWRhdGVTaG9ydGN1dEtleXMsIHZhbGlk YXRlTWFjcm9zLAogICBfc3RvcEV2ZW50UHJvcGFnYXRpb24sIGlzTWFjLCBpc0tleUN0cmxBbHQs IGlzS2V5QWx0U2hpZnQsIGlzS2V5Q3RybFNoaWZ0LAogICBpc0tleUN0cmxBbHRTaGlmdCwgaXNB bHRTaGlmdEJvdGgsIGlzQ3RybFNoaWZ0Qm90aCwgaXNDdHJsQWx0Qm90aCwKICAgc2hvcnRjdXRf a2V5LCBzaG9ydGN1dF90aXRsZSwgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlLApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9tYWNyby5qcyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9zcWxlZGl0b3IvbWFjcm8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi5iNzYxMDAyZmMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvc3FsZWRpdG9yL21hY3JvLmpzCkBAIC0wLDAgKzEsMzI1IEBACisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8g cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMjAsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9y dCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdz b3VyY2VzL3VybF9mb3InOworaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKK2ltcG9ydCBBbGVydGlm eSBmcm9tICdwZ2FkbWluLmFsZXJ0aWZ5anMnOworaW1wb3J0IHBnQWRtaW4gZnJvbSAnc291cmNl cy9wZ2FkbWluJzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9tICdwZ2FkbWluLmJhY2tmb3JtJzsKK2lt cG9ydCBtYWNyb01vZGVsIGZyb20gJ3NvdXJjZXMvc3FsZWRpdG9yL21hY3JvX21vZGVsJzsKK2lt cG9ydCBheGlvcyBmcm9tICdheGlvcyc7CisKK2xldCBNYWNyb0RpYWxvZyA9IHsKKyAgJ2RpYWxv Zyc6IGZ1bmN0aW9uKGhhbmRsZXIpIHsKKyAgICBsZXQgdGl0bGUgPSBnZXR0ZXh0KCdNYW5hZ2Ug TWFjcm9zJyk7CisKKyAgICAvLyBDaGVjayB0aGUgYWxlcnRpZnkgZGlhbG9nIGFscmVhZHkgbG9h ZGVkIHRoZW4gZGVsZXRlIGl0IHRvIGNsZWFyCisgICAgLy8gdGhlIGNhY2hlCisgICAgaWYgKEFs ZXJ0aWZ5Lm1hY3JvRGlhbG9nKSB7CisgICAgICBkZWxldGUgQWxlcnRpZnkubWFjcm9EaWFsb2c7 CisgICAgfQorCisgICAgLy8gQ3JlYXRlIERpYWxvZworICAgIEFsZXJ0aWZ5LmRpYWxvZygnbWFj cm9EaWFsb2cnLCBmdW5jdGlvbiBmYWN0b3J5KCkgeworICAgICAgbGV0ICRjb250YWluZXIgPSAk KCc8ZGl2IGNsYXNzPVwnbWFjcm9fZGlhbG9nXCc+PC9kaXY+Jyk7CisgICAgICByZXR1cm4gewor ICAgICAgICBtYWluOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCAn PGkgY2xhc3M9ImZhIGZhLXNjcm9sbCBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiIHJv bGU9ImltZyI+PC9pPiAnICsgZ2V0dGV4dCgnTWFuYWdlIE1hY3JvcycpKTsKKyAgICAgICAgfSwK KyAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29u dGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisgICAgICAgICAgQWxlcnRpZnku cGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0dXA6IGZ1 bmN0aW9uKCkgeworICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBidXR0b25zOiBbewor ICAgICAgICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAgICAgICAga2V5OiAxMTIsCisgICAgICAg ICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeS1pY29uIHB1bGwtbGVmdCBmYSBmYS1x dWVzdGlvbiBwZy1hbGVydGlmeS1pY29uLWJ1dHRvbicsCisgICAgICAgICAgICAgIGF0dHJzOiB7 CisgICAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICAgICAgICB0 eXBlOiAnYnV0dG9uJywKKyAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnSGVscCcpLAor ICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogZ2V0dGV4dCgnSGVscCcpLAorICAgICAgICAg ICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7CisgICAgICAgICAgICAgICAgICAn ZmlsZW5hbWUnOiAncXVlcnl0b29sLmh0bWwnLAorICAgICAgICAgICAgICAgIH0pLAorICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0 KCdDYW5jZWwnKSwKKyAgICAgICAgICAgICAga2V5OiAyNywKKyAgICAgICAgICAgICAgY2xhc3NO YW1lOiAnYnRuIGJ0bi1zZWNvbmRhcnkgZmEgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywK KyAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnY2FuY2VsJywKKyAgICAgICAgICAgIH0s IHsKKyAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnU2F2ZScpLAorICAgICAgICAgICAgICBj bGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtc2F2ZSBwZy1hbGVydGlmeS1idXR0b24n LAorICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdvaycsCisgICAgICAgICAgICB9XSwK KyAgICAgICAgICAgIC8vIFNldCBvcHRpb25zIGZvciBkaWFsb2cKKyAgICAgICAgICAgIG9wdGlv bnM6IHsKKyAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLAorICAgICAgICAgICAgICAvL2Rpc2Fi bGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgorICAgICAgICAgICAgICBwYWRk aW5nOiAhMSwKKyAgICAgICAgICAgICAgb3ZlcmZsb3c6ICExLAorICAgICAgICAgICAgICBtb2Rl bDogMCwKKyAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgICAgICAgICBtYXhp bWl6YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgcGlubmFibGU6IGZhbHNlLAorICAgICAgICAg ICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZSwKKyAgICAgICAgICAgICAgbW9kYWw6IGZhbHNl LAorICAgICAgICAgICAgICBhdXRvUmVzZXQ6IGZhbHNlLAorICAgICAgICAgICAgfSwKKyAgICAg ICAgICB9OworICAgICAgICB9LAorICAgICAgICBob29rczogeworICAgICAgICAvLyB0cmlnZ2Vy ZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAorICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgaWYgKHRoaXMudmlldykgeworICAgICAgICAgICAgICB0aGlzLm1h Y3JvQ29sbGVjdGlvbk1vZGVsLnN0b3BTZXNzaW9uKCk7CisgICAgICAgICAgICAgIHRoaXMudmll dy5tb2RlbC5zdG9wU2Vzc2lvbigpOworICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHsK KyAgICAgICAgICAgICAgICBkYXRhOiB0cnVlLAorICAgICAgICAgICAgICAgIGludGVybmFsOiB0 cnVlLAorICAgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKKyAgICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgcHJlcGFyZTog ZnVuY3Rpb24oKSB7CisgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICAgICRjb250 YWluZXIuaHRtbCgnJyk7CisgICAgICAgICAgLy8gU3RhdHVzIGJhcgorICAgICAgICAgIHRoaXMu c3RhdHVzQmFyID0gJCgKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwncGctcHJvcC1zdGF0dXMt YmFyIHBnLWVsLXhzLTEyIGQtbm9uZVwnPicgKworICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImVy cm9yLWluLWZvb3RlciI+ICcgKworICAgICAgICAgICcgICAgPGRpdiBjbGFzcz0iZC1mbGV4IHB4 LTIgcHktMSI+ICcgKworICAgICAgICAgICcgICAgICA8ZGl2IGNsYXNzPSJwci0yIj4gJyArCisg ICAgICAgICAgJyAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHRl eHQtZGFuZ2VyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiAnICsKKyAgICAgICAgICAnICAgICAg PC9kaXY+ICcgKworICAgICAgICAgICcgICAgICA8ZGl2IGNsYXNzPSJhbGVydC10ZXh0IiByb2xl PSJhbGVydCI+PC9kaXY+ICcgKworICAgICAgICAgICcgICAgPC9kaXY+ICcgKworICAgICAgICAg ICcgIDwvZGl2PiAnICsKKyAgICAgICAgICAnPC9kaXY+JykuYXBwZW5kVG8oJGNvbnRhaW5lcik7 CisKKyAgICAgICAgICAvLyBUbyBzaG93IHByb2dyZXNzIG9uIGZpbHRlciBTYXZpbmcvVXBkYXRp bmcgb24gQUpBWAorICAgICAgICAgIHRoaXMuc2hvd0ZpbHRlclByb2dyZXNzID0gJCgKKyAgICAg ICAgICAgIGA8ZGl2IGlkPSJzaG93X2ZpbHRlcl9wcm9ncmVzcyIgY2xhc3M9InBnLXNwLWNvbnRh aW5lciBzcWwtZWRpdG9yLWJ1c3ktZmV0Y2hpbmcgZC1ub25lIj4KKyAgICAgICAgICAgICAgPGRp diBjbGFzcz0icGctc3AtY29udGVudCI+CisgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJy b3ciPjxkaXYgY2xhc3M9ImNvbC0xMiBwZy1zcC1pY29uIHNxbC1lZGl0b3ItYnVzeS1pY29uIj48 L2Rpdj48L2Rpdj4KKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFz cz0iY29sLTEyIHBnLXNwLXRleHQgc3FsLWVkaXRvci1idXN5LXRleHQiPmAgKyBnZXR0ZXh0KCdM b2FkaW5nIGRhdGEuLi4nKSArIGA8L2Rpdj48L2Rpdj4KKyAgICAgICAgICAgICAgPC9kaXY+Cisg ICAgICAgICAgPC9kaXY+YAorICAgICAgICAgICkuYXBwZW5kVG8oJGNvbnRhaW5lcik7CisKKyAg ICAgICAgICBzZWxmLm1hY3JvQ29sbGVjdGlvbk1vZGVsID0gbWFjcm9Nb2RlbChoYW5kbGVyLnRy YW5zSWQpOworCisgICAgICAgICAgbGV0IGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1Nj aGVtYSgKKyAgICAgICAgICAgIG51bGwsIHNlbGYubWFjcm9Db2xsZWN0aW9uTW9kZWwsICdlZGl0 JywgbnVsbCwgbnVsbCwgdHJ1ZQorICAgICAgICAgICk7CisKKyAgICAgICAgICBsZXQgTWFuYWdl TWFjcm9EaWFsb2cgPSBCYWNrZm9ybS5EaWFsb2cuZXh0ZW5kKHsKKyAgICAgICAgICAgIHRlbXBs YXRlOiB7CisgICAgICAgICAgICAgICdwYW5lbCc6IF8udGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgJzxkaXYgcm9sZT0idGFicGFuZWwiIHRhYmluZGV4PSItMSIgY2xhc3M9InRhYi1wYW5lIDwl PWxhYmVsJT4gPCU9dGFiUGFuZWxDb2RlQ2xhc3MlPiBwZy1lbC1zbS0xMiBwZy1lbC1tZC0xMiBw Zy1lbC1sZy0xMiBwZy1lbC0xMiBmYWRlIiBpZD0iPCU9Y0lkJT4iPjwvZGl2PicKKyAgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICB0aGlzLmNsZWFudXAoKTsKKworICAgICAgICAgICAgICB2YXIgIG0g PSB0aGlzLm1vZGVsLAorICAgICAgICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5jb250cm9scywK KyAgICAgICAgICAgICAgICB0bXBscyA9IHRoaXMudGVtcGxhdGUsCisgICAgICAgICAgICAgICAg ZGlhbG9nX29iaiA9IHRoaXMsCisgICAgICAgICAgICAgICAgaWR4ID0gKHRoaXMudGFiSW5kZXgg KiAxMDApLAorICAgICAgICAgICAgICAgIGV2YWxGID0gZnVuY3Rpb24oZiwgZCwgbW9kZWwpIHsK KyAgICAgICAgICAgICAgICAgIHJldHVybiAoXy5pc0Z1bmN0aW9uKGYpID8gISFmLmFwcGx5KGQs IFttb2RlbF0pIDogISFmKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgIHRo aXMuJGVsCisgICAgICAgICAgICAgICAgLmVtcHR5KCkKKyAgICAgICAgICAgICAgICAuYXR0cign cm9sZScsICd0YWJwYW5lbCcpCisgICAgICAgICAgICAgICAgLmF0dHIoJ2NsYXNzJywgXy5yZXN1 bHQodGhpcywgJ3RhYlBhbmVsQ2xhc3NOYW1lJykpOworICAgICAgICAgICAgICBtLnBhbmVsRWwg PSB0aGlzLiRlbDsKKworICAgICAgICAgICAgICB2YXIgdGFiQ29udGVudCA9ICQoJzxkaXYgY2xh c3M9InRhYi1jb250ZW50IHBnLWVsLXNtLTEyIHBnLWVsLW1kLTEyIHBnLWVsLWxnLTEyIHBnLWVs LTEyIG1hY3JvLXRhYiI+PC9kaXY+JykKKyAgICAgICAgICAgICAgICAuYXBwZW5kVG8odGhpcy4k ZWwpOworCisgICAgICAgICAgICAgIF8uZWFjaCh0aGlzLnNjaGVtYSwgZnVuY3Rpb24obykgewor ICAgICAgICAgICAgICAgIGlkeCsrOworICAgICAgICAgICAgICAgIGlmICghby52ZXJzaW9uX2Nv bXBhdGlibGUgfHwgIWV2YWxGKG8udmlzaWJsZSwgbywgbSkpIHsKKyAgICAgICAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGVsID0gJCgo dG1wbHNbJ3BhbmVsJ10pKF8uZXh0ZW5kKG8sIHsKKyAgICAgICAgICAgICAgICAgICd0YWJJbmRl eCc6IGlkeCwKKyAgICAgICAgICAgICAgICAgICd0YWJQYW5lbENvZGVDbGFzcyc6IG8udGFiUGFu ZWxDb2RlQ2xhc3MgPyBvLnRhYlBhbmVsQ29kZUNsYXNzIDogJycsCisgICAgICAgICAgICAgICAg fSkpKQorICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKHRhYkNvbnRlbnQpCisgICAgICAgICAg ICAgICAgICAucmVtb3ZlQ2xhc3MoJ2NvbGxhcHNlJykuYWRkQ2xhc3MoJ2NvbGxhcHNlJyk7CisK KyAgICAgICAgICAgICAgICBvLmZpZWxkcy5lYWNoKGZ1bmN0aW9uKGYpIHsKKyAgICAgICAgICAg ICAgICAgIHZhciBjbnRyID0gbmV3KGYuZ2V0KCdjb250cm9sJykpKHsKKyAgICAgICAgICAgICAg ICAgICAgZmllbGQ6IGYsCisgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBtLAorICAgICAgICAg ICAgICAgICAgICBkaWFsb2c6IGRpYWxvZ19vYmosCisgICAgICAgICAgICAgICAgICAgIHRhYklu ZGV4OiBpZHgsCisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIGVsLmFw cGVuZChjbnRyLnJlbmRlcigpLiRlbCk7CisgICAgICAgICAgICAgICAgICBjb250cm9scy5wdXNo KGNudHIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9KTsKKworICAgICAg ICAgICAgICB0YWJDb250ZW50LmZpbmQoJy50YWItcGFuZScpLmZpcnN0KCkuYWRkQ2xhc3MoJ2Fj dGl2ZSBzaG93Jyk7CisKKyAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9 LAorICAgICAgICAgIH0pOworCisgICAgICAgICAgbGV0IHZpZXcgPSBzZWxmLnZpZXcgPSBuZXcg TWFuYWdlTWFjcm9EaWFsb2coeworICAgICAgICAgICAgZWw6ICc8ZGl2PjwvZGl2PicsCisgICAg ICAgICAgICBtb2RlbDogc2VsZi5tYWNyb0NvbGxlY3Rpb25Nb2RlbCwKKyAgICAgICAgICAgIHNj aGVtYTogZmllbGRzLAorICAgICAgICAgIH0pOworCisgICAgICAgICAgc2VsZi5tYWNyb0NvbGxl Y3Rpb25Nb2RlbC5mZXRjaCh7CisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpIHsKKwor ICAgICAgICAgICAgICAvLyBXZSBnb3QgdGhlIGxhdGVzdCBhdHRyaWJ1dGVzIG9mIHRoZSBvYmpl Y3QuIFJlbmRlciB0aGUgdmlldworICAgICAgICAgICAgICAvLyBub3cuCisgICAgICAgICAgICAg ICRjb250YWluZXIuYXBwZW5kKHNlbGYudmlldy5yZW5kZXIoKS4kZWwpOworCisgICAgICAgICAg ICAgIC8vIEVuYWJsZS9kaXNhYmxlIHNhdmUgYnV0dG9uIGFuZCBzaG93L2hpZGUgc3RhdHVzYmFy IGJhc2VkIG9uIHNlc3Npb24KKyAgICAgICAgICAgICAgc2VsZi52aWV3Lmxpc3RlblRvKHNlbGYu dmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjpzdGFydCcsIGZ1bmN0aW9uKCkgeworICAgICAg ICAgICAgICAgIHNlbGYudmlldy5saXN0ZW5UbyhzZWxmLnZpZXcubW9kZWwsICdwZ2FkbWluLXNl c3Npb246aW52YWxpZCcsIGZ1bmN0aW9uKG1zZykgeworICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0dXNCYXIucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgICAgICAgICAgJChzZWxm LnN0YXR1c0Jhci5maW5kKCcuYWxlcnQtdGV4dCcpKS5odG1sKG1zZyk7CisgICAgICAgICAgICAg ICAgICAvLyBEaXNhYmxlIE9rYXkgYnV0dG9uCisgICAgICAgICAgICAgICAgICBzZWxmLl9faW50 ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg ICB9KTsKKworICAgICAgICAgICAgICAgIHZpZXcubGlzdGVuVG8oc2VsZi52aWV3Lm1vZGVsLCAn cGdhZG1pbi1zZXNzaW9uOnZhbGlkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXR1c0Jhci5hZGRDbGFzcygnZC1ub25lJyk7CisgICAgICAgICAgICAgICAgICAkKHNl bGYuc3RhdHVzQmFyLmZpbmQoJy5hbGVydC10ZXh0JykpLmh0bWwoJycpOworICAgICAgICAgICAg ICAgICAgLy8gRW5hYmxlIE9rYXkgYnV0dG9uCisgICAgICAgICAgICAgICAgICBzZWxmLl9faW50 ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICAg ICAgfSk7CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIHZpZXcubGlzdGVuVG8o c2VsZi52aWV3Lm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOnN0b3AnLCBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICB2aWV3LnN0b3BMaXN0ZW5pbmcoc2VsZi52aWV3Lm1vZGVsLCAncGdhZG1p bi1zZXNzaW9uOmludmFsaWQnKTsKKyAgICAgICAgICAgICAgICB2aWV3LnN0b3BMaXN0ZW5pbmco c2VsZi52aWV3Lm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOnZhbGlkJyk7CisgICAgICAgICAgICAg IH0pOworCisgICAgICAgICAgICAgIC8vIFN0YXJ0cyBtb25pdG9yaW5nIGNoYW5nZXMgdG8gbW9k ZWwKKyAgICAgICAgICAgICAgc2VsZi52aWV3Lm1vZGVsLnN0YXJ0TmV3U2Vzc2lvbigpOworCisg ICAgICAgICAgICB9fSk7CisKKyAgICAgICAgICAkKHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5v ZGVzWzBdKS5hZGRDbGFzcygKKyAgICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJv cGVydGllcyBvYmpfcHJvcGVydGllcycKKyAgICAgICAgICApOworCisKKworICAgICAgICB9LAor ICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBjbGljayBvbiB0aGUgYnV0dG9ucyBv ZiB0aGUgQWxlcnRpZnkgZGlhbG9ncworICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oZSkgewor ICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKworICAgICAgICAgIGlmIChlLmJ1dHRvbi5lbGVt ZW50Lm5hbWUgPT0gJ2RpYWxvZ19oZWxwJykgeworICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVl OworICAgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLnNob3dIZWxwKGUuYnV0dG9uLmVsZW1lbnQu bmFtZSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VybCcpLAorICAgICAgICAgICAg ICBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9IGVsc2UgaWYg KGUuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdvaycpIHsKKyAgICAgICAgICAgIGUuY2Fu Y2VsID0gdHJ1ZTsgLy8gRG8gbm90IGNsb3NlIGRpYWxvZworCisgICAgICAgICAgICBsZXQgZGF0 YSA9IHNlbGYudmlldy5tb2RlbC5nZXQoJ21hY3JvJykudG9KU09OKHRydWUpOworCisgICAgICAg ICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQgfHwgZGF0YSA9PSBudWxsKSB7CisgICAgICAgICAg ICAgIHNlbGYuY2xvc2UoKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICBheGlvcy5wdXQoCisgICAgICAgICAgICAgIHVybF9mb3IoJ3NxbGVkaXRv ci5zZXRfbWFjcm9zJywgeworICAgICAgICAgICAgICAgICd0cmFuc19pZCc6IGhhbmRsZXIudHJh bnNJZCwKKyAgICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgIGRhdGEKKyAgICAgICAgICAg ICkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAvLyBIaWRlIFByb2dyZXNz IC4uLgorICAgICAgICAgICAgICAkKAorICAgICAgICAgICAgICAgIHNlbGYuc2hvd0ZpbHRlclBy b2dyZXNzWzBdCisgICAgICAgICAgICAgICkuYWRkQ2xhc3MoJ2Qtbm9uZScpOworCisgICAgICAg ICAgICAgIGxldCBtYWNyb1Jlc3BvbnNlID0gcmVzdWx0OworCisgICAgICAgICAgICAgIGlmICht YWNyb1Jlc3BvbnNlLnN0YXR1cykgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoCisgICAg ICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRl IE1hY3JvIE1lbnUKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1hY3JvcyA9IHNlbGYudmlldy5t b2RlbC5nZXQoJ21hY3JvJykudG9KU09OKCkuZmlsdGVyKG0gPT4gbS5uYW1lICE9PSB1bmRlZmlu ZWQgfHwgbS5uYW1lICE9PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5tYWNy b3MgPSBtYWNyb3M7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBgCisgICAgICAgICAg ICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJv cGRvd24taXRlbSIgaWQ9ImJ0bi1tYW5hZ2UtbWFjcm9zIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+ CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gTWFuYWdlIE1hY3Jvcy4uLiA8 L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgICAgICAg ICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24tZGl2 aWRlciI+PC9saT5gOworICAgICAgICAgICAgICAgICAgICBfLmVhY2gobWFjcm9zLCBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKG0ubmFtZSkgeworICAgICAgICAgICAg ICAgICAgICAgICAgc3RyICs9IGA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFz cz0iZHJvcGRvd24taXRlbSBidG4tbWFjcm8iIGRhdGEtbWFjcm8taWQ9ImArIG0uaWQgK2AiIGhy ZWY9IiMiIHRhYmluZGV4PSIwIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5g ICsgbS5uYW1lICsgYDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4g KGAgKyBtLmtleV9sYWJlbCArIGApIDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwv YT4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gOworICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgJCgkLmZp bmQoJ2Rpdi5idG4tZ3JvdXAubXItMS51c2VyX21hY3JvcyB1bC5kcm9wZG93bi1tZW51JykpLmh0 bWwoJChzdHIpKTsKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7IC8vIENsb3Nl IHRoZSBkaWFsb2cgbm93CisgICAgICAgICAgICAgICAgICAgIEFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0 dGV4dCgnTWFjcm8gdXBkYXRlZCBzdWNjZXNzZnVsbHknKSk7CisgICAgICAgICAgICAgICAgICB9 LCAxMAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgQWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdWYWxp ZGF0aW9uIEVycm9yJyksCisgICAgICAgICAgICAgICAgICBtYWNyb1Jlc3BvbnNlLnJlc3VsdAor ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfSkuY2F0 Y2goZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgICAgICAvLyBIaWRlIFByb2dyZXNzIC4uLgor ICAgICAgICAgICAgICAkKAorICAgICAgICAgICAgICAgIHNlbGYuc2hvd0ZpbHRlclByb2dyZXNz WzBdCisgICAgICAgICAgICAgICkuYWRkQ2xhc3MoJ2Qtbm9uZScpOworCisgICAgICAgICAgICAg IHNldFRpbWVvdXQoCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgICBBbGVydGlmeS5lcnJvcihlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ybXNnKTsKKyAgICAg ICAgICAgICAgICB9LCAxMAorICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisKKyAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi5jbG9zZSgpOworICAgICAgICAgIH0K KyAgICAgICAgfSwKKyAgICAgIH07CisgICAgfSk7CisKKyAgICBBbGVydGlmeS5tYWNyb0RpYWxv Zyh0aXRsZSkucmVzaXplVG8ocGdBZG1pbi5Ccm93c2VyLnN0ZFcuY2FsYyhwZ0FkbWluLkJyb3dz ZXIuc3RkVy5sZyksCisgICAgICBwZ0FkbWluLkJyb3dzZXIuc3RkSC5jYWxjKHBnQWRtaW4uQnJv d3Nlci5zdGRILmxnKSk7CisgIH0sCit9OworCittb2R1bGUuZXhwb3J0cyA9IE1hY3JvRGlhbG9n OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9tYWNyb19tb2Rl bC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvbWFjcm9fbW9kZWwuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5jNjZkODVjNmUKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL21hY3JvX21vZGVsLmpzCkBA IC0wLDAgKzEsMjEzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0 dGV4dCc7CitpbXBvcnQgcGdBZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRtaW4nOworaW1wb3J0IEJh Y2tmb3JtIGZyb20gJ3BnYWRtaW4uYmFja2Zvcm0nOworaW1wb3J0IEJhY2tncmlkIGZyb20gJ3Bn YWRtaW4uYmFja2dyaWQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxfZm9yJzsK K2ltcG9ydCAkIGZyb20gJ2pxdWVyeSc7CitpbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsKK2lt cG9ydCBBbGVydGlmeSBmcm9tICdwZ2FkbWluLmFsZXJ0aWZ5anMnOworCitleHBvcnQgZGVmYXVs dCBmdW5jdGlvbiBtYWNyb01vZGVsKHRyYW5zSWQpIHsKKworICBsZXQgTWFjcm9Nb2RlbCA9IHBn QWRtaW4uQnJvd3Nlci5EYXRhTW9kZWwuZXh0ZW5kKHsKKyAgICBpZEF0dHJpYnV0ZTogJ2lkJywK KyAgICBkZWZhdWx0czogeworICAgICAgaWQ6IHVuZGVmaW5lZCwKKyAgICAgIGtleTogdW5kZWZp bmVkLAorICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAgc3FsOiB1bmRlZmluZWQsCisgICAg ICBrZXlfbGFiZWw6IHVuZGVmaW5lZCwKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlk OiAna2V5X2xhYmVsJywKKyAgICAgIG5hbWU6ICdrZXlfbGFiZWwnLAorICAgICAgbGFiZWw6IGdl dHRleHQoJ0tleScpLAorICAgICAgdHlwZTogJ3RleHQnLAorICAgICAgY2VsbDogJ3N0cmluZycs CisgICAgICBlZGl0YWJsZTogZmFsc2UsCisgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRo X3BlcmNlbnRfMTAnLAorICAgICAgaGVhZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1c3Rv bUhlYWRlckNlbGwsCisgICAgICBkaXNhYmxlZDogZmFsc2UsCisgICAgfSwgeworICAgICAgaWQ6 ICduYW1lJywKKyAgICAgIG5hbWU6ICduYW1lJywKKyAgICAgIGxhYmVsOiBnZXR0ZXh0KCdOYW1l JyksCisgICAgICBjZWxsOiAnc3RyaW5nJywKKyAgICAgIHR5cGU6ICd0ZXh0JywKKyAgICAgIGVk aXRhYmxlOiB0cnVlLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIw JywKKyAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxs LAorICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgIH0sIHsKKyAgICAgIGlkOiAnc3FsJywKKyAg ICAgIG5hbWU6ICdzcWwnLAorICAgICAgbGFiZWw6IGdldHRleHQoJ1NRTCcpLAorICAgICAgY2Vs bDogQmFja2dyaWQuRXh0ZW5zaW9uLlNxbENlbGwsCisgICAgICB0eXBlOiAnbXVsdGlsaW5lJywK KyAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlNxbENvZGVDb250cm9sLAorICAgICAgZWRpdGFibGU6 IHRydWUsCisgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNzAnLAorICAg ICAgaGVhZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1c3RvbUhlYWRlckNlbGwsCisgICAg ICBkaXNhYmxlZDogZmFsc2UsCisgICAgfSwKKyAgICBdLAorICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0sCisgIH0pOworCisgIGxldCBNYWNyb0Nv bGxlY3Rpb25Nb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5EYXRhTW9kZWwuZXh0ZW5kKHsKKyAgICBk ZWZhdWx0czogeworICAgICAgbWFjcm86IHVuZGVmaW5lZCwKKyAgICB9LAorICAgIHVybFJvb3Q6 IHVybF9mb3IoJ3NxbGVkaXRvci5nZXRfbWFjcm9zJywgeyd0cmFuc19pZCc6IHRyYW5zSWR9KSwK KyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ21hY3JvJywKKyAgICAgIG5hbWU6ICdtYWNybycs CisgICAgICBsYWJlbDogZ2V0dGV4dCgnTWFjcm9zJyksCisgICAgICBtb2RlbDogTWFjcm9Nb2Rl bCwKKyAgICAgIGVkaXRhYmxlOiB0cnVlLAorICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAg ICAgY29udHJvbDogQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rpb25Db250cm9sLmV4dGVuZCh7Cisg ICAgICAgIHNob3dHcmlkQ29udHJvbDogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgIHZhciBz ZWxmID0gdGhpcywKKyAgICAgICAgICAgIGdyaWRCb2R5ID0gJCgnPGRpdiBjbGFzcz1cJ3BnYWRt aW4tY29udHJvbC1ncm91cCBiYWNrZ3JpZCBmb3JtLWdyb3VwIHBnLWVsLTEyIG9iamVjdCBzdWJu b2RlXCc+PC9kaXY+Jyk7CisKKyAgICAgICAgICB2YXIgc3Vibm9kZSA9IGRhdGEuc3Vibm9kZS5z Y2hlbWEgPyBkYXRhLnN1Ym5vZGUgOiBkYXRhLnN1Ym5vZGUucHJvdG90eXBlLAorICAgICAgICAg ICAgZ3JpZFNjaGVtYSA9IEJhY2tmb3JtLmdlbmVyYXRlR3JpZENvbHVtbnNGcm9tTW9kZWwoCisg ICAgICAgICAgICAgIGRhdGEubm9kZV9pbmZvLCBzdWJub2RlLCB0aGlzLmZpZWxkLmdldCgnbW9k ZScpLCBkYXRhLmNvbHVtbnMsIGRhdGEuc2NoZW1hX25vZGUKKyAgICAgICAgICAgICk7CisKKyAg ICAgICAgICAvLyBDbGVhbiB1cCBleGlzdGluZyBncmlkIGlmIGFueSAoaW4gY2FzZSBvZiByZS1y ZW5kZXIpCisgICAgICAgICAgaWYgKHNlbGYuZ3JpZCkgeworICAgICAgICAgICAgc2VsZi5ncmlk LnJlbW92ZSgpOworICAgICAgICAgIH0KKworICAgICAgICAgIC8vIFNldCB2aXNpYmlsaXR5IG9m IEFkZCBidXR0b24KKyAgICAgICAgICBpZiAoZGF0YS5kaXNhYmxlZCB8fCBkYXRhLmNhbkFkZCA9 PSBmYWxzZSkgeworICAgICAgICAgICAgJChncmlkQm9keSkuZmluZCgnYnV0dG9uLmFkZCcpLnJl bW92ZSgpOworICAgICAgICAgIH0KKworICAgICAgICAgIC8vIEluc2VydCBDbGVhciBDZWxsIGlu dG8gR3JpZAorICAgICAgICAgIGdyaWRTY2hlbWEuY29sdW1ucy51bnNoaWZ0KHsKKyAgICAgICAg ICAgIG5hbWU6ICdwZy1iYWNrZm9ybS1jbGVhcicsCisgICAgICAgICAgICBsYWJlbDogJzxpIGFy aWEtbGFiZWw9IicgKyBnZXR0ZXh0KCdDbGVhciByb3cnKSArICciIGNsYXNzPSJmYSBmYS1lcmFz ZXIiIHRpdGxlPSInICsgZ2V0dGV4dCgnQ2xlYXIgcm93JykgKyAnIj48L2k+JywKKyAgICAgICAg ICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DbGVhckNlbGwsCisgICAgICAgICAgICBlZGl0 YWJsZTogZmFsc2UsCisgICAgICAgICAgICBjZWxsX3ByaW9yaXR5OiAtMSwKKyAgICAgICAgICAg IHNvcnRhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVu c2lvbi5DdXN0b21IZWFkZXJDZWxsLmV4dGVuZCh7CisgICAgICAgICAgICAgIGNsYXNzTmFtZTog J2hlYWRlci1pY29uLWNlbGwnLAorICAgICAgICAgICAgICBldmVudHM6IHsKKyAgICAgICAgICAg ICAgICAnY2xpY2snOiAnY2xlYXJyQWxsJywKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgY2xlYXJyQWxsOiBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVm YXVsdCgpOworICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsKKyAgICAgICAgICAgICAg ICAvLyBXZSB3aWxsIGNoZWNrIGlmIHJvdyBpcyBkZWxldGFibGUgb3Igbm90CisKKyAgICAgICAg ICAgICAgICBBbGVydGlmeS5jb25maXJtKAorICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnQ2xl YXIgQWxsIFJvd3MnKSwKKyAgICAgICAgICAgICAgICAgIGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5 b3Ugd2lzaCB0byBjbGVhciBhbGwgcm93cz8nKSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAgICAgICBfLmVhY2godGhhdC5jb2xsZWN0aW9uLnRvSlNPTigp LCBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jb2xsZWN0aW9uLmdl dChtLmlkKS5zZXQoeyduYW1lJzogbnVsbCwgJ3NxbCc6IG51bGx9KTsKKyAgICAgICAgICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsK KyAgICAgICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW47CisgICAgICAgICAgICAg ICAgdmFyIGxhYmVsID0gJCgnPGJ1dHRvbiB0eXBlPSJidXR0b24iIHRpdGxlPSInICsgZ2V0dGV4 dCgnQ2xlYXIgcm93JykgKyAnIiBhcmlhLWxhYmVsPSJDbGVhciByb3ciIGFyaWEtZXhwYW5kZWQ9 ImZhbHNlIiB0YWJpbmRleD0iMCI+JykuaHRtbChjb2x1bW4uZ2V0KCdsYWJlbCcpKS5hcHBlbmQo JzxzcGFuIGNsYXNzPVwnc29ydC1jYXJldFwnIGFyaWEtaGlkZGVuPVwndHJ1ZVwnPjwvc3Bhbj4n KTsKKworICAgICAgICAgICAgICAgIHRoaXMuJGVsLmFwcGVuZChsYWJlbCk7CisgICAgICAgICAg ICAgICAgdGhpcy4kZWwuYWRkQ2xhc3MoY29sdW1uLmdldCgnbmFtZScpKTsKKyAgICAgICAgICAg ICAgICB0aGlzLiRlbC5hZGRDbGFzcyhjb2x1bW4uZ2V0KCdkaXJlY3Rpb24nKSk7CisgICAgICAg ICAgICAgICAgdGhpcy4kZWwuYXR0cigncm9sZScsICdjb2x1bW5oZWFkZXInKTsKKyAgICAgICAg ICAgICAgICB0aGlzLiRlbC5hdHRyKCdhcmlhLWxhYmVsJywgJ2NvbHVtbmhlYWRlcicpOworICAg ICAgICAgICAgICAgIHRoaXMuJGVsLmF0dHIoJ2FsdCcsICdjb2x1bW5oZWFkZXInKTsKKyAgICAg ICAgICAgICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu IHRoaXM7CisKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0pLAorICAgICAgICAgIH0p OworCisKKyAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IHNlbGYubW9kZWwuZ2V0KGRhdGEubmFt ZSk7CisKKyAgICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIGNvbGxlY3Rp b24gPSBuZXcocGdBZG1pbi5Ccm93c2VyLk5vZGUuQ29sbGVjdGlvbikobnVsbCwgeworICAgICAg ICAgICAgICBoYW5kbGVyOiBzZWxmLm1vZGVsLmhhbmRsZXIgfHwgc2VsZi5tb2RlbCwKKyAgICAg ICAgICAgICAgbW9kZWw6IGRhdGEubW9kZWwsCisgICAgICAgICAgICAgIHRvcDogc2VsZi5tb2Rl bC50b3AgfHwgc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAorICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICBzZWxmLm1vZGVsLnNldChkYXRhLm5hbWUsIGNvbGxlY3Rp b24sIHsKKyAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAorICAgICAgICAgICAgfSk7CisgICAg ICAgICAgfQorCisgICAgICAgICAgdmFyIGNlbGxFZGl0aW5nID0gZnVuY3Rpb24oYXJncykgewor ICAgICAgICAgICAgdmFyIGN0eCA9IHRoaXMsCisgICAgICAgICAgICAgIGNlbGwgPSBhcmdzWzBd OworICAgICAgICAgICAgLy8gU2VhcmNoIGZvciBhbnkgb3RoZXIgcm93cyB3aGljaCBhcmUgb3Bl bi4KKyAgICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgIC8v IENoZWNrIGlmIHJvdyB3aGljaCB3ZSBhcmUgYWJvdXQgdG8gY2xvc2UgaXMgbm90IGN1cnJlbnQg cm93LgorICAgICAgICAgICAgICBpZiAoY2VsbC5tb2RlbCAhPSBtKSB7CisgICAgICAgICAgICAg ICAgdmFyIGlkeCA9IGN0eC5pbmRleE9mKG0pOworICAgICAgICAgICAgICAgIGlmIChpZHggPiAt MSkgeworICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IGdyaWQuYm9keS5yb3dzW2lkeF0sCisg ICAgICAgICAgICAgICAgICAgIHJvd0VkaXRDZWxsID0gcm93LiRlbC5maW5kKCcuc3Vibm9kZS1l ZGl0LWluLXByb2Nlc3MnKS5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY2xv c2Ugcm93IGlmIGl0J3Mgb3Blbi4KKyAgICAgICAgICAgICAgICAgIGlmIChyb3dFZGl0Q2VsbC5s ZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgn Y2xpY2snKTsKKyAgICAgICAgICAgICAgICAgICAgcm93RWRpdENlbGxbMF0uZGlzcGF0Y2hFdmVu dChldmVudCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9OworICAgICAgICAgIC8vIExp c3RlbiBmb3IgYW55IHJvdyB3aGljaCBpcyBhYm91dCB0byBlbnRlciBpbiBlZGl0IG1vZGUuCisg ICAgICAgICAgY29sbGVjdGlvbi5vbignZW50ZXJpbmdFZGl0TW9kZScsIGNlbGxFZGl0aW5nLCBj b2xsZWN0aW9uKTsKKworICAgICAgICAgIC8vIEluaXRpYWxpemUgYSBuZXcgR3JpZCBpbnN0YW5j ZQorICAgICAgICAgIHZhciBncmlkID0gc2VsZi5ncmlkID0gbmV3IEJhY2tncmlkLkdyaWQoewor ICAgICAgICAgICAgY29sdW1uczogZ3JpZFNjaGVtYS5jb2x1bW5zLAorICAgICAgICAgICAgY29s bGVjdGlvbjogY29sbGVjdGlvbiwKKyAgICAgICAgICAgIHJvdzogdGhpcy5yb3csCisgICAgICAg ICAgICBjbGFzc05hbWU6ICdiYWNrZ3JpZCB0YWJsZSBwcmVzZW50YXRpb24gdGFibGUtYm9yZGVy ZWQgdGFibGUtbm9vdXRlci1ib3JkZXIgdGFibGUtaG92ZXInLAorICAgICAgICAgIH0pOworCisg ICAgICAgICAgLy8gUmVuZGVyIHN1Yk5vZGUgZ3JpZAorICAgICAgICAgIHZhciBzdWJOb2RlR3Jp ZCA9IGdyaWQucmVuZGVyKCkuJGVsOworCisgICAgICAgICAgdmFyICRkaWFsb2cgPSBncmlkQm9k eS5hcHBlbmQoc3ViTm9kZUdyaWQpOworCisgICAgICAgICAgcmV0dXJuICRkaWFsb2c7CisgICAg ICAgIH0sCisgICAgICB9KSwKKyAgICAgIGNvbHVtbnM6IFsna2V5X2xhYmVsJywgJ25hbWUnLCAn c3FsJ10sCisgICAgICB2aXNpYmxlOiB0cnVlLAorICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5j dGlvbigpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0sCisgIH0pOworCisgIGxldCBtb2Rl bCA9IG5ldyBNYWNyb0NvbGxlY3Rpb25Nb2RlbCgpOworICByZXR1cm4gbW9kZWw7Cit9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9u cy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25z LmpzCmluZGV4IDk4Mjk3Y2YxOC4uODE5MzcwNThjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9ucy5qcworKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9ucy5qcwpAQCAtMzksNiArMzks MTEgQEAgbGV0IHF1ZXJ5VG9vbEFjdGlvbnMgPSB7CiAgICAgJCgnLnNxbC1lZGl0b3ItbWVzc2Fn ZScpLmh0bWwoJycpOwogICB9LAogCisgIGV4ZWN1dGVNYWNybzogZnVuY3Rpb24gKHNxbEVkaXRv ckNvbnRyb2xsZXIsIE1hY3JvSWQpIHsKKyAgICB0aGlzLl9jbGVhck1lc3NhZ2VUYWIoKTsKKyAg ICBzcWxFZGl0b3JDb250cm9sbGVyLmNoZWNrX2RhdGFfY2hhbmdlc190b19leGVjdXRlX3F1ZXJ5 KG51bGwsIGZhbHNlLCBNYWNyb0lkKTsKKyAgfSwKKwogICBleGVjdXRlUXVlcnk6IGZ1bmN0aW9u IChzcWxFZGl0b3JDb250cm9sbGVyKSB7CiAgICAgdGhpcy5fY2xlYXJNZXNzYWdlVGFiKCk7CiAg ICAgc3FsRWRpdG9yQ29udHJvbGxlci5jaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVy eSgpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2JhY2tncmlkLm92ZXJy aWRlcy5zY3NzIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2JhY2tncmlkLm92ZXJyaWRlcy5z Y3NzCmluZGV4IDRmYzFmNWYxOS4uMzU4NDBjZmFlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9z dGF0aWMvc2Nzcy9fYmFja2dyaWQub3ZlcnJpZGVzLnNjc3MKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL3Njc3MvX2JhY2tncmlkLm92ZXJyaWRlcy5zY3NzCkBAIC0zNTksMyArMzU5LDMxIEBAIHRh YmxlIHRyIHRoIGJ1dHRvbiB7CiAgICAgIH0KICAgIH0KIH0KKworLmJhY2tncmlkIC5zcWwtY2Vs bCAuQ29kZU1pcnJvci1zY3JvbGwgeworICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7Cit9 CisKKy5iYWNrZ3JpZCAuc3FsLWNlbGwgLmNtLXMtZGVmYXVsdCB7CisgIGhlaWdodDogNTBweCAh aW1wb3J0YW50OworfQorCisuYmFja2dyaWQgLnNxbC1jZWxsIC5Db2RlTWlycm9yLWhzY3JvbGxi YXIgPiBkaXYgeworICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OworfQorCisuYmFja2dyaWQgLnNx bC1jZWxsIC5Db2RlTWlycm9yLWhzY3JvbGxiYXIgeworICBvdmVyZmxvdy14OiBoaWRkZW4gIWlt cG9ydGFudDsKK30KKworLmJhY2tncmlkIC5zcWwtY2VsbCAuQ29kZU1pcnJvci12c2Nyb2xsYmFy IHsKKyAgb3ZlcmZsb3cteTogaGlkZGVuICFpbXBvcnRhbnQ7Cit9CisKKy5iYWNrZ3JpZCAuc3Fs LWNlbGwgLkNvZGVNaXJyb3Itc2l6ZXIgeworICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50 OworfQorCisuYmFja2dyaWQgLnNxbC1jZWxsIC5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXIg eworICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlk L19faW5pdF9fLnB5CmluZGV4IGY1ZmM3OGM0Zi4uMWJkODQxZjIwIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9fX2luaXRfXy5weQpAQCAtMzMsNiArMzMsNyBAQCBmcm9tIHBnYWRtaW4uc2V0 dGluZ3MgaW1wb3J0IGdldF9zZXR0aW5nCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBv cnQgdW5kZXJzY29yZV91bmVzY2FwZQogZnJvbSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBv cnQgT2JqZWN0R29uZQogZnJvbSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgTUlNRVRZ UEVfQVBQX0pTCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLm1hY3JvcyBpbXBv cnQgZ2V0X3VzZXJfbWFjcm9zCiAKIE1PRFVMRV9OQU1FID0gJ2RhdGFncmlkJwogCkBAIC0yNzQs NiArMjc1LDggQEAgZGVmIHBhbmVsKHRyYW5zX2lkKToKIAogICAgIGxheW91dCA9IGdldF9zZXR0 aW5nKCdTUUxFZGl0b3IvTGF5b3V0JykKIAorICAgIG1hY3JvcyA9IGdldF91c2VyX21hY3Jvcygp CisKICAgICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAiZGF0YWdyaWQvaW5kZXgu aHRtbCIsCiAgICAgICAgIF89Z2V0dGV4dCwKQEAgLTI4Niw2ICsyODksNyBAQCBkZWYgcGFuZWwo dHJhbnNfaWQpOgogICAgICAgICBiZ2NvbG9yPWJnY29sb3IsCiAgICAgICAgIGZnY29sb3I9Zmdj b2xvciwKICAgICAgICAgbGF5b3V0PWxheW91dCwKKyAgICAgICAgbWFjcm9zPW1hY3JvcwogICAg ICkKIAogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMv ZGF0YWdyaWQvaW5kZXguaHRtbCBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRl cy9kYXRhZ3JpZC9pbmRleC5odG1sCmluZGV4IDA5N2E0MmU5MS4uYTBlZWJjOGNmIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQvaW5kZXgu aHRtbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQv aW5kZXguaHRtbApAQCAtMzc3LDYgKzM3NywzMSBAQAogICAgICAgICAgICAgICAgICAgICA8aSBj bGFzcz0iZmEgZmEtZG93bmxvYWQgc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0cnVlIiByb2xl PSJpbWciPjwvaT4KICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgIDwvZGl2 PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1yLTEgdXNlcl9tYWNyb3MiIHJv bGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgorICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0 bi1tYWNyby1kcm9wZG93biIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJp bWFyeS1pY29uIGRyb3Bkb3duLXRvZ2dsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEt dG9nZ2xlPSJkcm9wZG93biIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFs c2UiCisgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSJ7eyBfKCdNYWNyb3MnKSB9 fSIgdGl0bGU9Int7IF8oJ01hY3JvcycpIH19IiB0YWJpbmRleD0iMCI+CisgICAgICAgICAgICAg ICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zY3JvbGwgc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0 cnVlIiByb2xlPSJpbWciPjwvaT4KKyAgICAgICAgICAgICAgICA8L2J1dHRvbj4KKyAgICAgICAg ICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgorICAgICAgICAgICAgICAgICAgICA8 bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaWQ9 ImJ0bi1tYW5hZ2UtbWFjcm9zIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8oJ01hbmFnZSBNYWNyb3MuLi4nKSB9fSA8L3NwYW4+ CisgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+ CisgICAgICAgICAgICAgICAgICAgIHslIGlmIG1hY3Jvc3xsZW5ndGggPiAwICV9CisgICAgICAg ICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24tZGl2aWRlciI+PC9saT4KKyAgICAgICAg ICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgICAgICAgICAgICAgeyUgZm9yIGkgaW4g bWFjcm9zICV9CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAg ICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIGJ0bi1tYWNybyIgZGF0YS1tYWNyby1pZD0ie3sg aS5pZCB9fSIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxzcGFuPiB7eyBfKGkubmFtZSkgfX0gPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxzcGFuPiAoe3sgaS5rZXlfbGFiZWwgfX0pIDwvc3Bhbj4KKyAgICAgICAgICAgICAg ICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAg ICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICA8L2Rpdj4KIAogICAgICAgICA8ZGl2IGNsYXNzPSJjb25uZWN0aW9uX3N0 YXR1c193cmFwcGVyIGQtZmxleCI+CkBAIC00NTksNyArNDg0LDggQEAgcmVxdWlyZShbJ3NvdXJj ZXMvZ2VuZXJhdGVkL2Jyb3dzZXJfbm9kZXMnLCAnc291cmNlcy9nZW5lcmF0ZWQvY29kZW1pcnJv cicsICdzb3UKICAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlci5zdGFydCgKICAgICAgICAgICAg IHt7IHVuaXF1ZUlkIH19LAogICAgICAgICAgICAge3sgdXJsX3BhcmFtc3xzYWZlfX0sCi0gICAg ICAgICAgICAne3sgbGF5b3V0fHNhZmUgfX0nCisgICAgICAgICAgICAne3sgbGF5b3V0fHNhZmUg fX0nLAorICAgICAgICAgICAge3sgbWFjcm9zfHNhZmUgfX0KICAgICAgICAgKTsKIAogICAgICAg ICAvLyBJZiBvcGVuaW5nIGZyb20gc2NoZW1hIGRpZmYsIHNldCB0aGUgZ2VuZXJhdGVkIHNjcmlw dCB0byB0aGUgU1FMIEVkaXRvcgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5 CmluZGV4IGM2MmJjN2NiYy4uOWQwOTAzYjI1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L19faW5pdF9fLnB5CkBAIC0zMiw3ICszMiw3IEBAIGZyb20gcGdhZG1pbi50b29scy5zcWxlZGl0 b3IudXRpbHMudXBkYXRlX3Nlc3Npb25fZ3JpZF90cmFuc2FjdGlvbiBpbXBvcnQgXAogZnJvbSBw Z2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlCiBmcm9tIHBnYWRtaW4udXRpbHMgaW1w b3J0IGdldF9zdG9yYWdlX2RpcmVjdG9yeQogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0 IG1ha2VfanNvbl9yZXNwb25zZSwgYmFkX3JlcXVlc3QsIFwKLSAgICBzdWNjZXNzX3JldHVybiwg aW50ZXJuYWxfc2VydmVyX2Vycm9yCisgICAgc3VjY2Vzc19yZXR1cm4sIGludGVybmFsX3NlcnZl cl9lcnJvciwgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlCiBmcm9tIHBnYWRtaW4udXRp bHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCiBmcm9tIHBnYWRtaW4udXRpbHMubWVudSBpbXBv cnQgTWVudUl0ZW0KIGZyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IENvbm5lY3Rp b25Mb3N0LCBTU0hUdW5uZWxDb25uZWN0aW9uTG9zdCxcCkBAIC00Niw2ICs0Niw4IEBAIGZyb20g cGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuZmlsdGVyX2RpYWxvZyBpbXBvcnQgRmlsdGVy RGlhbG9nCiBmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLnF1ZXJ5X2hpc3Rvcnkg aW1wb3J0IFF1ZXJ5SGlzdG9yeQogZnJvbSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQg TUlNRVRZUEVfQVBQX0pTLCBTRVJWRVJfQ09OTkVDVElPTl9DTE9TRUQsXAogICAgIEVSUk9SX01T R19UUkFOU19JRF9OT1RfRk9VTkQKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMu bWFjcm9zIGltcG9ydCBnZXRfbWFjcm9zLFwKKyAgICBnZXRfdXNlcl9tYWNyb3MsIHNldF9tYWNy b3MKIAogTU9EVUxFX05BTUUgPSAnc3FsZWRpdG9yJwogCkBAIC0xMDksNiArMTExLDkgQEAgY2xh c3MgU3FsRWRpdG9yTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICAgICAgJ3NxbGVkaXRv ci5nZXRfcXVlcnlfaGlzdG9yeScsCiAgICAgICAgICAgICAnc3FsZWRpdG9yLmFkZF9xdWVyeV9o aXN0b3J5JywKICAgICAgICAgICAgICdzcWxlZGl0b3IuY2xlYXJfcXVlcnlfaGlzdG9yeScsCisg ICAgICAgICAgICAnc3FsZWRpdG9yLmdldF9tYWNybycsCisgICAgICAgICAgICAnc3FsZWRpdG9y LmdldF9tYWNyb3MnLAorICAgICAgICAgICAgJ3NxbGVkaXRvci5zZXRfbWFjcm9zJwogICAgICAg ICBdCiAKICAgICBkZWYgcmVnaXN0ZXJfcHJlZmVyZW5jZXMoc2VsZik6CkBAIC0xNTQ3LDMgKzE1 NTIsNDYgQEAgZGVmIGdldF9xdWVyeV9oaXN0b3J5KHRyYW5zX2lkKToKICAgICAgICAgY2hlY2tf dHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQogCiAgICAgcmV0dXJuIFF1ZXJ5SGlzdG9yeS5n ZXQoY3VycmVudF91c2VyLmlkLCB0cmFuc19vYmouc2lkLCBjb25uLmRiKQorCisKK0BibHVlcHJp bnQucm91dGUoCisgICAgJy9nZXRfbWFjcm9zLzxpbnQ6dHJhbnNfaWQ+JywKKyAgICBtZXRob2Rz PVsiR0VUIl0sIGVuZHBvaW50PSdnZXRfbWFjcm9zJworKQorQGJsdWVwcmludC5yb3V0ZSgKKyAg ICAnL2dldF9tYWNyb3MvPGludDptYWNyb19pZD4vPGludDp0cmFuc19pZD4nLAorICAgIG1ldGhv ZHM9WyJHRVQiXSwgZW5kcG9pbnQ9J2dldF9tYWNybycKKykKK0Bsb2dpbl9yZXF1aXJlZAorZGVm IG1hY3Jvcyh0cmFuc19pZCwgbWFjcm9faWQ9Tm9uZSwganNvbl9yZXNwPVRydWUpOgorICAgICIi IgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IGFsbCB0aGUgY29sdW1ucyBmb3IgZGF0 YSBzb3J0aW5nIGRpYWxvZy4KKworICAgIEFyZ3M6CisgICAgICAgIHRyYW5zX2lkOiB1bmlxdWUg dHJhbnNhY3Rpb24gaWQKKyAgICAgICAgbWFjcm9faWQ6IE1hY3JvIGlkCisgICAgIiIiCisKKyAg ICBzdGF0dXMsIGVycm9yX21zZywgY29ubiwgdHJhbnNfb2JqLCBzZXNzaW9uX29iID0gXAorICAg ICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCisKKyAgICByZXR1cm4gZ2V0 X21hY3JvcyhtYWNyb19pZCwganNvbl9yZXNwKQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAg Jy9zZXRfbWFjcm9zLzxpbnQ6dHJhbnNfaWQ+JywKKyAgICBtZXRob2RzPVsiUFVUIl0sIGVuZHBv aW50PSdzZXRfbWFjcm9zJworKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgdXBkYXRlX21hY3Jvcyh0 cmFuc19pZCk6CisgICAgIiIiCisgICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBnZXQgYWxsIHRo ZSBjb2x1bW5zIGZvciBkYXRhIHNvcnRpbmcgZGlhbG9nLgorCisgICAgQXJnczoKKyAgICAgICAg dHJhbnNfaWQ6IHVuaXF1ZSB0cmFuc2FjdGlvbiBpZAorICAgICIiIgorCisgICAgc3RhdHVzLCBl cnJvcl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYiA9IFwKKyAgICAgICAgY2hlY2tf dHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQorCisgICAgcmV0dXJuIHNldF9tYWNyb3MoKQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRp dG9yLmNzcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRv ci5jc3MKaW5kZXggMDA1NDNmZjY5Li41ZjY3M2IwNGQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcwpAQCAtMzk1LDMgKzM5 NSwyNCBAQCBpbnB1dC5lZGl0b3ItY2hlY2tib3g6Zm9jdXMgewogLmhpZGUtdmVydGljYWwtc2Ny b2xsYmFyIHsKICAgb3ZlcmZsb3cteTogaGlkZGVuOwogfQorCisKKy8qICBNYWNyb3MgKi8KKwor Lm1hY3JvLXRhYiB7CisgIHRvcDogMHB4ICFpbXBvcnRhbnQ7Cit9CisKKy5tYWNyby10YWIgLnRh Yi1wYW5lIHsKKyAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7Cit9CisKKy5Db2RlTWlycm9yIHsK KyAgb3ZlcmZsb3cteTogYXV0bzsKKyAgcmVzaXplOiB2ZXJ0aWNhbDsKK30KKy5zcWwtY2VsbCA+ IGRpdiB7CisgIG92ZXJmbG93LXk6IGF1dG87CisgIHJlc2l6ZTogdmVydGljYWw7Cit9CisKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9y LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMK aW5kZXggZGRkOWFkNzAxLi4yMDNlM2E1NzMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCkBAIC00Myw2ICs0Myw3IEBAIGRlZmlu ZSgndG9vbHMucXVlcnl0b29sJywgWwogICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFn cmlkX3BhbmVsX3RpdGxlJywKICAgJ3NvdXJjZXMvd2luZG93JywKICAgJ3NvdXJjZXMvaXNfbmF0 aXZlJywKKyAgJ3NvdXJjZXMvc3FsZWRpdG9yL21hY3JvJywKICAgJ3NvdXJjZXMvLi4vYnVuZGxl L3NsaWNrZ3JpZCcsCiAgICdwZ2FkbWluLmZpbGVfbWFuYWdlcicsCiAgICdzbGljay5wZ2FkbWlu LmZvcm1hdHRlcnMnLApAQCAtNTcsNyArNTgsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcs IFsKICAgR2VvbWV0cnlWaWV3ZXIsIGhpc3RvcnlDb2xsLCBxdWVyeUhpc3QsIHF1ZXJ5U291cmNl cywKICAga2V5Ym9hcmRTaG9ydGN1dHMsIHF1ZXJ5VG9vbEFjdGlvbnMsIHF1ZXJ5VG9vbE5vdGlm aWNhdGlvbnMsIERhdGFncmlkLAogICBtb2RpZnlBbmltYXRpb24sIGNhbGN1bGF0ZVF1ZXJ5UnVu VGltZSwgY2FsbFJlbmRlckFmdGVyUG9sbCwgcXVlcnlUb29sUHJlZiwgcXVlcnlUeG5TdGF0dXMs IGNzcmZUb2tlbiwgcGFuZWxUaXRsZUZ1bmMsCi0gIHBnV2luZG93LCBpc05hdGl2ZSkgeworICBw Z1dpbmRvdywgaXNOYXRpdmUsIE1hY3JvSGFuZGxlcikgewogICAvKiBSZXR1cm4gYmFjaywgdGhp cyBoYXMgYmVlbiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgKi8KICAgaWYgKHBnQWRtaW4uU3FsRWRp dG9yKQogICAgIHJldHVybiBwZ0FkbWluLlNxbEVkaXRvcjsKQEAgLTE0OSw2ICsxNTAsOSBAQCBk ZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgIC8vIFRyYW5zYWN0aW9uIGNvbnRyb2wK ICAgICAgICdjbGljayAjYnRuLWNvbW1pdCc6ICdvbl9jb21taXRfdHJhbnNhY3Rpb24nLAogICAg ICAgJ2NsaWNrICNidG4tcm9sbGJhY2snOiAnb25fcm9sbGJhY2tfdHJhbnNhY3Rpb24nLAorICAg ICAgLy8gTWFuYWdlIE1hY3JvcworICAgICAgJ2NsaWNrICNidG4tbWFuYWdlLW1hY3Jvcyc6ICdv bl9tYW5hZ2VfbWFjcm9zJywKKyAgICAgICdjbGljayAuYnRuLW1hY3JvJzogJ29uX2V4ZWN1dGVf bWFjcm8nLAogICAgIH0sCiAKICAgICByZWZsZWN0UHJlZmVyZW5jZXM6IGZ1bmN0aW9uKCkgewpA QCAtMjAzOCw4ICsyMDQyLDMwIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogCiAgICAg ICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVSb2xsYmFjayh0aGlzLmhhbmRsZXIpOwogICAgIH0s CisKKyAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWFuYWdlIG1hY3JvcyBidXR0b24gY2xp Y2suCisgICAgb25fbWFuYWdlX21hY3JvczogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc2VsZiA9 IHRoaXM7CisKKyAgICAgIC8vIFRyaWdnZXIgdGhlIHNob3dfZmlsdGVyIHNpZ25hbCB0byB0aGUg U3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcworICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCisg ICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246bWFuYWdlX21hY3JvcycsCisgICAgICAg IHNlbGYsCisgICAgICAgIHNlbGYuaGFuZGxlcgorICAgICAgKTsKKyAgICB9LAorCisgICAgLy8g Q2FsbGJhY2sgZnVuY3Rpb24gZm9yIG1hbmFnZSBtYWNyb3MgYnV0dG9uIGNsaWNrLgorICAgIG9u X2V4ZWN1dGVfbWFjcm86IGZ1bmN0aW9uKGUpIHsKKyAgICAgIGxldCBtYWNyb0lkID0gJChlLmN1 cnJlbnRUYXJnZXQpLmRhdGEoJ21hY3JvLWlkJyk7CisgICAgICB0aGlzLmhhbmRsZXIuaGlzdG9y eV9xdWVyeV9zb3VyY2UgPSBRdWVyeVNvdXJjZXMuRVhFQ1VURTsKKyAgICAgIHF1ZXJ5VG9vbEFj dGlvbnMuZXhlY3V0ZU1hY3JvKHRoaXMuaGFuZGxlciwgbWFjcm9JZCk7CisgICAgfSwKKwogICB9 KTsKIAorCisKICAgLyogRGVmaW5pbmcgY29udHJvbGxlciBjbGFzcyBmb3IgZGF0YSBncmlkLCB3 aGljaCBhY3R1YWxseQogICAgKiBwZXJmb3JtIHRoZSBvcGVyYXRpb25zIGxpa2UgZXhlY3V0aW5n IHRoZSBzcWwgcXVlcnksIHBvbGwgdGhlIHJlc3VsdCwKICAgICogcmVuZGVyIHRoZSBkYXRhIGlu IHRoZSBncmlkLCBTYXZlL1JlZnJlc2ggdGhlIGRhdGEgZXRjLi4uCkBAIC0yMzA4LDcgKzIzMzQs NyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAqIGNhbGwgdGhlIHJlbmRl ciBtZXRob2Qgb2YgdGhlIGdyaWQgdmlldyB0byByZW5kZXIgdGhlIHNsaWNrZ3JpZAogICAgICAg ICogaGVhZGVyIGFuZCBsb2FkaW5nIGljb24gYW5kIHN0YXJ0IGV4ZWN1dGlvbiBvZiB0aGUgc3Fs IHF1ZXJ5LgogICAgICAgICovCi0gICAgICBzdGFydDogZnVuY3Rpb24odHJhbnNJZCwgdXJsX3Bh cmFtcywgbGF5b3V0KSB7CisgICAgICBzdGFydDogZnVuY3Rpb24odHJhbnNJZCwgdXJsX3BhcmFt cywgbGF5b3V0LCBtYWNyb3MpIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCiAgICAgICAg IHNlbGYuaXNfcXVlcnlfdG9vbCA9IHVybF9wYXJhbXMuaXNfcXVlcnlfdG9vbD09PSd0cnVlJz90 cnVlOmZhbHNlOwpAQCAtMjMzMyw2ICsyMzU5LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICAgICAgbGF5b3V0OiBsYXlvdXQsCiAgICAgICAgIH0pOwogICAgICAgICBzZWxm LnRyYW5zSWQgPSBzZWxmLmdyaWRWaWV3LnRyYW5zSWQgPSB0cmFuc0lkOworICAgICAgICBzZWxm Lm1hY3JvcyA9IHNlbGYuZ3JpZFZpZXcubWFjcm9zID0gbWFjcm9zOwogCiAgICAgICAgIHNlbGYu Z3JpZFZpZXcuY3VycmVudF9maWxlID0gdW5kZWZpbmVkOwogCkBAIC0yNDc0LDEyICsyNTAxLDE0 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICBzZWxmLm9uKCdwZ2FkbWlu LXNxbGVkaXRvcjp1bmluZGVudF9zZWxlY3RlZF9jb2RlJywgc2VsZi5fdW5pbmRlbnRfc2VsZWN0 ZWRfY29kZSwgc2VsZik7CiAgICAgICAgIC8vIEZvcm1hdAogICAgICAgICBzZWxmLm9uKCdwZ2Fk bWluLXNxbGVkaXRvcjpmb3JtYXRfc3FsJywgc2VsZi5fZm9ybWF0X3NxbCwgc2VsZik7CisgICAg ICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjptYW5hZ2VfbWFjcm9zJywgc2Vs Zi5fbWFuYWdlX21hY3Jvcywgc2VsZik7CisgICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRp dG9yOmJ1dHRvbjpleGVjdXRlX21hY3JvJywgc2VsZi5fZXhlY3V0ZV9tYWNybywgc2VsZik7CiAK ICAgICAgICAgd2luZG93LnBhcmVudC4kKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQpLm9uKCdwZ2Fk bWluLXNxbGVkaXRvcjpyb3dzLWNvcGllZCcsIHNlbGYuX2NvcGllZF9pbl9vdGhlcl9zZXNzaW9u KTsKICAgICAgIH0sCiAKICAgICAgIC8vIENoZWNrcyBpZiB0aGVyZSBpcyBhbnkgZGlydHkgZGF0 YSBpbiB0aGUgZ3JpZCBiZWZvcmUgZXhlY3V0aW5nIGEgcXVlcnkKLSAgICAgIGNoZWNrX2RhdGFf Y2hhbmdlc190b19leGVjdXRlX3F1ZXJ5OiBmdW5jdGlvbihleHBsYWluX3ByZWZpeD1udWxsLCBz aG91bGRSZWNvbm5lY3Q9ZmFsc2UpIHsKKyAgICAgIGNoZWNrX2RhdGFfY2hhbmdlc190b19leGVj dXRlX3F1ZXJ5OiBmdW5jdGlvbihleHBsYWluX3ByZWZpeD1udWxsLCBzaG91bGRSZWNvbm5lY3Q9 ZmFsc2UsIG1hY3JvSWQ9dW5kZWZpbmVkKSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKIAog ICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBncmlkIGhhcyBhbnkgY2hhbmdlcyBiZWZvcmUg cnVubmluZyBxdWVyeQpAQCAtMjQ5Miw3ICsyNTIxLDEwIEBAIGRlZmluZSgndG9vbHMucXVlcnl0 b29sJywgWwogICAgICAgICAgICAgZ2V0dGV4dCgnVGhlIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQs IGJ1dCBub3Qgc2F2ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBkaXNjYXJkIHRoZSBjaGFu Z2VzPycpLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgIC8vIFRoZSB1 c2VyIGRvZXMgbm90IHdhbnQgdG8gc2F2ZSwganVzdCBjb250aW51ZQotICAgICAgICAgICAgICBp ZihzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKKyAgICAgICAgICAgICAgaWYgKG1hY3JvSWQgIT09IHVu ZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfbWFjcm9fcXVlcnkoZXhw bGFpbl9wcmVmaXgsIHNob3VsZFJlY29ubmVjdCwgbWFjcm9JZCk7CisgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgZWxzZSBpZihzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKICAgICAgICAgICAg ICAgICBzZWxmLl9leGVjdXRlX3NxbF9xdWVyeShleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25u ZWN0KTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI1MDgsNyAr MjU0MCwxMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgIGNhbmNl bDogZ2V0dGV4dCgnTm8nKSwKICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICBpZihzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKKyAgICAgICAgICBpZiAobWFjcm9JZCAhPT0g dW5kZWZpbmVkKSB7CisgICAgICAgICAgICBzZWxmLl9leGVjdXRlX21hY3JvX3F1ZXJ5KGV4cGxh aW5fcHJlZml4LCBzaG91bGRSZWNvbm5lY3QsIG1hY3JvSWQpOworICAgICAgICAgIH0KKyAgICAg ICAgICBlbHNlIGlmKHNlbGYuaXNfcXVlcnlfdG9vbCkgewogICAgICAgICAgICAgc2VsZi5fZXhl Y3V0ZV9zcWxfcXVlcnkoZXhwbGFpbl9wcmVmaXgsIHNob3VsZFJlY29ubmVjdCk7CiAgICAgICAg ICAgfQogICAgICAgICAgIGVsc2UgewpAQCAtMjYwMiw2ICsyNjM3LDM3IEBAIGRlZmluZSgndG9v bHMucXVlcnl0b29sJywgWwogICAgICAgICAgIH0pOwogICAgICAgfSwKIAorICAgICAgLy8gRXhl Y3V0ZXMgc3FsIHF1ZXJ5ICBmb3IgbWFjcm9pbiB0aGUgZWRpdG9yIGluIFF1ZXJ5IFRvb2wgbW9k ZQorICAgICAgX2V4ZWN1dGVfbWFjcm9fcXVlcnk6IGZ1bmN0aW9uKGV4cGxhaW5fcHJlZml4LCBz aG91bGRSZWNvbm5lY3QsIG1hY3JvSWQpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisg ICAgICAgIHNlbGYuaGFzX21vcmVfcm93cyA9IGZhbHNlOworICAgICAgICBzZWxmLmZldGNoaW5n X3Jvd3MgPSBmYWxzZTsKKworICAgICAgICAkLmFqYXgoeworICAgICAgICAgIHVybDogdXJsX2Zv cignc3FsZWRpdG9yLmdldF9tYWNybycsIHsnbWFjcm9faWQnOiBtYWNyb0lkLCAndHJhbnNfaWQn OiBzZWxmLnRyYW5zSWR9KSwKKyAgICAgICAgICBtZXRob2Q6ICdHRVQnLAorICAgICAgICAgIGNv bnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCisgICAgICAgICAgZGF0YVR5cGU6ICdqc29u JywKKyAgICAgICAgfSkKKyAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAg ICAgIGlmIChyZXMpIHsKKyAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgcGxhY2UgaG9sZGVy CisgICAgICAgICAgICAgIGxldCBxdWVyeSA9IHJlcy5zcWwucmVwbGFjZUFsbCgnJFNFTEVDVElP TiQnLCBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmdldFNlbGVjdGlvbigpKTsKKworICAg ICAgICAgICAgICBjb25zdCBleGVjdXRlUXVlcnkgPSBuZXcgRXhlY3V0ZVF1ZXJ5LkV4ZWN1dGVR dWVyeShzZWxmLCBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQpOworICAgICAgICAgICAg ICBleGVjdXRlUXVlcnkucG9sbCA9IHBnQnJvd3Nlci5vdmVycmlkZV9hY3Rpdml0eV9ldmVudF9k ZWNvcmF0b3IoZXhlY3V0ZVF1ZXJ5LnBvbGwpLmJpbmQoZXhlY3V0ZVF1ZXJ5KTsKKyAgICAgICAg ICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUocXVlcnksIGV4cGxhaW5fcHJlZml4LCBzaG91bGRS ZWNvbm5lY3QpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgLy8gTGV0IGl0 IGJlIGZvciBub3cKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICAgIC5mYWls KGZ1bmN0aW9uKCkgeworICAgICAgICAgIC8qIGZhaWx1cmUgc2hvdWxkIG5vdCBiZSBpZ25vcmVk ICovCisgICAgICAgICAgfSk7CisKKyAgICAgIH0sCisKICAgICAgIC8vIEV4ZWN1dGVzIHNxbCBx dWVyeSBpbiB0aGUgZWRpdG9yIGluIFF1ZXJ5IFRvb2wgbW9kZQogICAgICAgX2V4ZWN1dGVfc3Fs X3F1ZXJ5OiBmdW5jdGlvbihleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KSB7CiAgICAg ICAgIHZhciBzZWxmID0gdGhpcywgc3FsID0gJyc7CkBAIC0zOTY4LDYgKzQwMzQsNyBAQCBkZWZp bmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgJCgnI2J0bi1maWxlLW1lbnUtZHJvcGRv d24nKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwogICAgICAgICAkKCcjYnRuLWZp bmQnKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwogICAgICAgICAkKCcjYnRuLWZp bmQtbWVudS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7CisgICAg ICAgICQoJyNidG4tbWFjcm8tZHJvcGRvd24nKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJs ZWQpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX3F1ZXJ5X3Rvb2wpIHsKIApAQCAtNDM3NSw2ICs0 NDQyLDI0IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIH0pOwogICAg ICAgfSwKIAorICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIG9wZW4gdGhlIG1hbmFnZSBtYWNy byBkaWFsb2cKKyAgICAgIF9tYW5hZ2VfbWFjcm9zOiBmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0 IHNlbGYgPSB0aGlzOworCisgICAgICAgIC8qIFdoZW4gc2VydmVyIGlzIGRpc2Nvbm5lY3RlZCBh bmQgY29ubmVjdGVkLCBjb25uZWN0aW9uIGlzIGxvc3QsCisgICAgICAgICAqIFRvIHJlY29ubmVj dCBwYXNzIHRydWUKKyAgICAgICAgICovCisgICAgICAgIE1hY3JvSGFuZGxlci5kaWFsb2coc2Vs Zik7CisgICAgICB9LAorCisgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgb3BlbiB0aGUgbWFu YWdlIG1hY3JvIGRpYWxvZworICAgICAgX2V4ZWN1dGVfbWFjcm86IGZ1bmN0aW9uKCkgeworCisg ICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhlY3V0ZU1hY3JvKHRoaXMuaGFuZGxlcik7CisKKyAg ICAgIH0sCisKKwogICAgICAgaXNRdWVyeVJ1bm5pbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICBy ZXR1cm4gaXNfcXVlcnlfcnVubmluZzsKICAgICAgIH0sCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9tYWNyb3MucHkgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9tYWNyb3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwLi4wMzc1ZjAxYTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9tYWNyb3MucHkKQEAgLTAsMCArMSwxMjEgQEAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMg Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor IyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK KyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBqc29uCisKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFz IFwKKyAgICBkYXRhYmFzZV91dGlscworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0 Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKK2ltcG9ydCByYW5kb20KKworCitjbGFzcyBUZXN0TWFjcm9zKEJhc2VUZXN0R2VuZXJh dG9yKToKKyAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIHRlc3QgdGhlIHF1ZXJ5IHRvb2wgcG9sbGlu Zy4gIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ0dldCBhbGwgbWFjcm9zJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgdXJsPSdnZXRfbWFjcm9zJywKKyAgICAgICAgICAg ICBtZXRob2Q9J2dldCcKKyAgICAgICAgICkpLAorICAgICAgICAoJ1NldCBNYWNyb3MnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICB1cmw9J3NldF9tYWNyb3MnLAorICAgICAgICAgICAg IG1ldGhvZD0ncHV0JywKKyAgICAgICAgICAgICBvcGVyYXRpb249J3VwZGF0ZScsCisgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICdjaGFuZ2VkJzogWworICAgICAgICAgICAg ICAgICAgICAgeydpZCc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAnVGVzdCBN YWNybyAxJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3FsJzogJ1NFTEVDVCAxOycKKyAgICAg ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgeydpZCc6IDIsCisgICAg ICAgICAgICAgICAgICAgICAgJ25hbWUnOiAnVGVzdCBNYWNybyAyJywKKyAgICAgICAgICAgICAg ICAgICAgICAnc3FsJzogJ1NFTEVDVCAyOycKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICAgICAgICAgeydpZCc6IDMsCisgICAgICAgICAgICAgICAgICAgICAgJ25hbWUn OiAnVGVzdCBNYWNybyAzJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3FsJzogJ1NFTEVDVCAz OycKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICBdCisgICAgICAg ICAgICAgfQorICAgICAgICAgKSksCisgICAgICAgICgnQ2xlYXIgTWFjcm9zJywKKyAgICAgICAg IGRpY3QoCisgICAgICAgICAgICAgdXJsPSdzZXRfbWFjcm9zJywKKyAgICAgICAgICAgICBtZXRo b2Q9J3B1dCcsCisgICAgICAgICAgICAgb3BlcmF0aW9uPSdjbGVhcicsCisgICAgICAgICAgICAg ZGF0YT17CisgICAgICAgICAgICAgICAgICdjaGFuZ2VkJzogWworICAgICAgICAgICAgICAgICAg ICAgeydpZCc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAnJywKKyAgICAgICAg ICAgICAgICAgICAgICAnc3FsJzogJycKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgICAgICAgeydpZCc6IDMsCisgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn JywKKyAgICAgICAgICAgICAgICAgICAgICAnc3FsJzogJycKKyAgICAgICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfQorICAgICAgICAgKSkKKyAg ICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgY2hlY2sgbWVzc2FnZXMgcmV0dXJuIGJ5IHF1ZXJ5IHRvb2wgcG9sbGluZy4gIiIiCisgICAg ICAgIGRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXQorICAg ICAgICBzZWxmLnNlcnZlcl9pZCA9IGRhdGFiYXNlX2luZm9bInNlcnZlcl9pZCJdCisKKyAgICAg ICAgc2VsZi5kYl9pZCA9IGRhdGFiYXNlX2luZm9bImRiX2lkIl0KKyAgICAgICAgZGJfY29uID0g ZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmRiX2lkKQorICAgICAgICBpZiBub3QgZGJfY29uWyJpbmZvIl0gPT0gIkRhdGFiYXNlIGNvbm5l Y3RlZC4iOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0 byB0aGUgZGF0YWJhc2UuIikKKworICAgICAgICAjIEluaXRpYWxpemUgcXVlcnkgdG9vbAorICAg ICAgICBzZWxmLnRyYW5zX2lkID0gc3RyKHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAg ICAgICB1cmwgPSAnL2RhdGFncmlkL2luaXRpYWxpemUvcXVlcnlfdG9vbC97MH0vezF9L3syfS97 M30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYudHJhbnNfaWQsIHV0aWxzLlNFUlZFUl9HUk9V UCwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50 ZXN0ZXIucG9zdCh1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz X2NvZGUsIDIwMCkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICB1cmwgPSAnL3Nx bGVkaXRvci97MH0vezF9Jy5mb3JtYXQoc2VsZi51cmwsIHNlbGYudHJhbnNfaWQpCisKKyAgICAg ICAgaWYgc2VsZi5tZXRob2QgPT0gJ2dldCc6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYu dGVzdGVyLmdldCh1cmwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCisKKyAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRz KHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChsZW4ocmVzcG9uc2VfZGF0YVsnbWFjcm8nXSksIDIyKQorICAgICAgICBlbHNlOgorICAg ICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQodXJsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYuZGF0YSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUp CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp CisKKyAgICAgICAgICAgIGZvciBtIGluIHNlbGYuZGF0YVsnY2hhbmdlZCddOgorICAgICAgICAg ICAgICAgIHVybCA9ICcvc3FsZWRpdG9yL2dldF9tYWNyb3MvezB9L3sxfScuZm9ybWF0KG1bJ2lk J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi50cmFuc19pZCkKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYu dGVzdGVyLmdldCh1cmwpCisKKyAgICAgICAgICAgICAgICBpZiBzZWxmLm9wZXJhdGlvbiA9PSAn Y2xlYXInOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCA0MTApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgICAg ICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVj b2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv bnNlX2RhdGFbJ25hbWUnXSwgbVsnbmFtZSddKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHJlc3BvbnNlX2RhdGFbJ3NxbCddLCBtWydzcWwnXSkKKworICAgIGRlZiB0ZWFy RG93bihzZWxmKToKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBk YXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBz ZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxz L21hY3Jvcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9tYWNyb3MucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi41ZGQxODNjMzAKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvbWFjcm9zLnB5CkBA IC0wLDAgKzEsMTY1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJIYW5kbGUgTWFj cm9zIGZvciBTUUwgRWRpdG9yLiIiIgorCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCitmcm9t IGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRf YXBwLCByZXF1ZXN0Citmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBsb2dpbl9yZXF1aXJlZCwg Y3VycmVudF91c2VyCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9yZXNwb25z ZSBhcyBhamF4X3Jlc3BvbnNlLFwKKyAgICBtYWtlX2pzb25fcmVzcG9uc2UKK2Zyb20gcGdhZG1p bi5tb2RlbCBpbXBvcnQgZGIsIE1hY3JvcywgVXNlck1hY3JvcworCisKK2RlZiBnZXRfbWFjcm9z KG1hY3JvX2lkLCBqc29uX3Jlc3ApOgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQg dG8gZ2V0IGFsbCB0aGUgbWFjcm9zL3NwZWNpZmljIG1hY3JvLgorICAgIDpwYXJhbSBtYWNyb19p ZDogTWFjcm8gSUQKKyAgICA6cGFyYW0ganNvbl9yZXNwOiBTZXQgVHJ1ZSB0byByZXR1cm4ganNv biByZXNwb25zZQorICAgICIiIgorICAgIGlmIG1hY3JvX2lkOgorICAgICAgICBtYWNybyA9IFVz ZXJNYWNyb3MucXVlcnkuZmlsdGVyX2J5KG1pZD1tYWNyb19pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aWQ9Y3VycmVudF91c2VyLmlkKS5maXJzdCgpCisg ICAgICAgIGlmIG1hY3JvIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoIk1hY3JvIG5vdCBmb3Vu ZC4iKQorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9eydpZCc6IG1hY3JvLm1pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBtYWNyby5uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAnc3FsJzogbWFjcm8uc3FsfSwKKyAgICAgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgbWFjcm9zID0gZGIuc2Vz c2lvbi5xdWVyeShNYWNyb3MuaWQsIE1hY3Jvcy5hbHQsIE1hY3Jvcy5jb250cm9sLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcy5rZXksIE1hY3Jvcy5rZXlfY29kZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyTWFjcm9zLm5hbWUsIFVzZXJN YWNyb3Muc3FsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5vdXRlcmpvaW4o CisgICAgICAgICAgICBVc2VyTWFjcm9zLCBNYWNyb3MuaWQgPT0gVXNlck1hY3Jvcy5taWQpLmFs bCgpCisKKyAgICAgICAgZGF0YSA9IFtdCisKKyAgICAgICAgZm9yIG0gaW4gbWFjcm9zOgorICAg ICAgICAgICAga2V5X2xhYmVsID0gJ0N0cmwgKyAnICsgbVszXSBpZiBtWzJdIGlzIFRydWUgZWxz ZSAnQWx0ICsgJyArIG1bM10KKyAgICAgICAgICAgIGRhdGEuYXBwZW5kKHsnaWQnOiBtWzBdLCAn YWx0JzogbVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnY29udHJvbCc6IG1bMl0sICdr ZXknOiBtWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICdrZXlfY29kZSc6IG1bNF0sICdu YW1lJzogbVs1XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3FsJzogbVs2XSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAna2V5X2xhYmVsJzoga2V5X2xhYmVsfSkKKworICAgICAgICBp ZiBub3QganNvbl9yZXNwOgorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXsnbWFjcm8nOiBkYXRhfSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisKK2RlZiBnZXRfdXNlcl9tYWNy b3MoKToKKyAgICAiIiIKKyAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdldCBhbGwgdGhlIHVz ZXIgbWFjcm9zLgorICAgICIiIgorCisgICAgbWFjcm9zID0gZGIuc2Vzc2lvbi5xdWVyeShVc2Vy TWFjcm9zLm5hbWUsIE1hY3Jvcy5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1h Y3Jvcy5hbHQsIE1hY3Jvcy5jb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TWFjcm9zLmtleSwgTWFjcm9zLmtleV9jb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApLm91dGVyam9pbigKKyAgICAgICAgTWFjcm9zLCBVc2VyTWFjcm9zLm1pZCA9PSBNYWNyb3Mu aWQpLmFsbCgpCisKKyAgICBkYXRhID0gW10KKworICAgIGZvciBtIGluIG1hY3JvczoKKyAgICAg ICAga2V5X2xhYmVsID0gJ0N0cmwgKyAnICsgbVs0XSBpZiBtWzNdIGlzIFRydWUgZWxzZSAnQWx0 ICsgJyArIG1bNF0KKyAgICAgICAgZGF0YS5hcHBlbmQoeyduYW1lJzogbVswXSwgJ2lkJzogbVsx XSwgJ2tleSc6IG1bNF0sCisgICAgICAgICAgICAgICAgICAgICAna2V5X2xhYmVsJzoga2V5X2xh YmVsLCAnYWx0JzogMSBpZiBtWzJdIGVsc2UgMCwKKyAgICAgICAgICAgICAgICAgICAgICdjb250 cm9sJzogMSBpZiBtWzNdIGVsc2UgMCwgJ2tleV9jb2RlJzogbVs1XX0pCisKKyAgICByZXR1cm4g ZGF0YQorCisKK2RlZiBzZXRfbWFjcm9zKCk6CisgICAgIiIiCisgICAgVGhpcyBtZXRob2QgaXMg dXNlZCB0byB1cGRhdGUgdGhlIHVzZXIgZGVmaW5lZCBtYWNyb3MuCisgICAgIiIiCisKKyAgICBk YXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCisgICAg ICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rpbmc9J3V0Zi04JworICAgICkKKworICAgIGlmICdjaGFu Z2VkJyBub3QgaW4gZGF0YToKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgIGluZm89Z2V0dGV4dCgnTm90aGluZyB0 byB1cGRhdGUuJykKKyAgICAgICAgKQorCisgICAgZm9yIG0gaW4gZGF0YVsnY2hhbmdlZCddOgor ICAgICAgICBpZiBtWydpZCddOgorICAgICAgICAgICAgbWFjcm8gPSBVc2VyTWFjcm9zLnF1ZXJ5 LmZpbHRlcl9ieSgKKyAgICAgICAgICAgICAgICB1aWQ9Y3VycmVudF91c2VyLmlkLAorICAgICAg ICAgICAgICAgIG1pZD1tWydpZCddKS5maXJzdCgpCisgICAgICAgICAgICBpZiBtYWNybzoKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHVwZGF0ZV9tYWNybyhtLCBtYWNybykKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBjcmVhdGVfbWFjcm8o bSkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9NDEwLCBzdWNj ZXNzPTAsIGVycm9ybXNnPW1zZworICAgICAgICAgICAgICAgICkKKyAgICByZXR1cm4gYWpheF9y ZXNwb25zZShzdGF0dXM9MjAwKQorCisKK2RlZiBjcmVhdGVfbWFjcm8obWFjcm8pOgorICAgICIi IgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIHRoZSB1c2VyIGRlZmluZWQgbWFj cm9zLgorICAgIDpwYXJhbSBtYWNybzogbWFjcm8KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAg IG5ld19tYWNybyA9IFVzZXJNYWNyb3MoCisgICAgICAgICAgICB1aWQ9Y3VycmVudF91c2VyLmlk LAorICAgICAgICAgICAgbWlkPW1hY3JvWydpZCddLAorICAgICAgICAgICAgbmFtZT1tYWNyb1sn bmFtZSddLAorICAgICAgICAgICAgc3FsPW1hY3JvWydzcWwnXQorICAgICAgICApCisgICAgICAg IGRiLnNlc3Npb24uYWRkKG5ld19tYWNybykKKyAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQoKQor ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgZGIuc2Vzc2lvbi5yb2xsYmFjaygp CisgICAgICAgIHJldHVybiBGYWxzZSwgc3RyKGUpCisKKyAgICByZXR1cm4gVHJ1ZSwgTm9uZQor CisKK2RlZiB1cGRhdGVfbWFjcm8oZGF0YSwgbWFjcm8pOgorICAgICIiIgorICAgIFRoaXMgbWV0 aG9kIGlzIHVzZWQgdG8gY2xlYXIvdXBkYXRlIHRoZSB1c2VyIGRlZmluZWQgbWFjcm9zLgorICAg IDpwYXJhbSBkYXRhOiB1cGRhdGVkIG1hY3JvIGRhdGEKKyAgICA6cGFyYW0gbWFjcm86IG1hY3Jv CisgICAgIiIiCisgICAgbmFtZSA9IGRhdGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNl IE5vbmUKKyAgICBzcWwgPSBkYXRhWydzcWwnXSBpZiAnc3FsJyBpbiBkYXRhIGVsc2UgTm9uZQor ICAgIHRyeToKKyAgICAgICAgaWYgKG5hbWUgaXMgTm9uZSBhbmQgc3FsIGlzIE5vbmUpIG9yIChu YW1lID09ICcnIGFuZCBzcWwgPT0gJycpOgorICAgICAgICAgICAgZGIuc2Vzc2lvbi5kZWxldGUo bWFjcm8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAg ICAgIG1hY3JvLm5hbWUgPSBuYW1lCisgICAgICAgICAgICBpZiBzcWw6CisgICAgICAgICAgICAg ICAgbWFjcm8uc3FsID0gc3FsCisgICAgICAgIGRiLnNlc3Npb24uY29tbWl0KCkKKyAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGRiLnNlc3Npb24ucm9sbGJhY2soKQorICAgICAg ICByZXR1cm4gRmFsc2UsIHN0cihlKQorCisgICAgcmV0dXJuIFRydWUsIE5vbmUKZGlmZiAtLWdp dCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2tleWJvYXJkX3Nob3J0Y3V0 c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3Iva2V5Ym9hcmRf c2hvcnRjdXRzX3NwZWMuanMKaW5kZXggYzg0MTVhMDg5Li4wNDM2NWJmNDggMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2tleWJvYXJkX3Nob3J0Y3V0c19z cGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2tleWJvYXJk X3Nob3J0Y3V0c19zcGVjLmpzCkBAIC0xOCw3ICsxOCw4IEBAIGRlc2NyaWJlKCd0aGUga2V5Ym9h cmQgc2hvcnRjdXRzJywgKCkgPT4gewogICAgIEY3X0tFWSA9IDExOCwKICAgICBGOF9LRVkgPSAx MTksCiAgICAgUEVSSU9EX0tFWSA9IDE5MCwKLSAgICBGV0RfU0xBU0hfS0VZID0gMTkxOworICAg IEZXRF9TTEFTSF9LRVkgPSAxOTEsCisgICAgQzFfS0VZID0gNDk7CiAKICAgbGV0IHNxbEVkaXRv ckNvbnRyb2xsZXJTcHksIGV2ZW50LCBxdWVyeVRvb2xBY3Rpb25zU3B5OwogICBiZWZvcmVFYWNo KCgpID0+IHsKQEAgLTEyMCw2ICsxMjEsMTkgQEAgZGVzY3JpYmUoJ3RoZSBrZXlib2FyZCBzaG9y dGN1dHMnLCAoKSA9PiB7CiAgICAgICB9LAogICAgIH07CiAKKyAgICBzcWxFZGl0b3JDb250cm9s bGVyU3B5Lm1hY3JvcyA9IFsKKyAgICAgIHsKKyAgICAgICAgYWx0OiBmYWxzZSwKKyAgICAgICAg Y29udHJvbDogdHJ1ZSwKKyAgICAgICAgaWQ6IDEsCisgICAgICAgIGtleTogJzEnLAorICAgICAg ICBrZXlfY29kZTogQzFfS0VZLAorICAgICAgICBrZXlfbGFiZWw6ICdDdHJsICsgMScsCisgICAg ICAgIG5hbWU6ICdDMScsCisgICAgICAgIHNxbDogJ1NlbGVjdCAxOycsCisgICAgICB9LAorICAg IF07CisKICAgICBxdWVyeVRvb2xBY3Rpb25zU3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmoocXVl cnlUb29sQWN0aW9ucywgWwogICAgICAgJ2V4cGxhaW5BbmFseXplJywKICAgICAgICdleHBsYWlu JywKQEAgLTEzMSw2ICsxNDUsNyBAQCBkZXNjcmliZSgndGhlIGtleWJvYXJkIHNob3J0Y3V0cycs ICgpID0+IHsKICAgICAgICdleGVjdXRlQ29tbWl0JywKICAgICAgICdleGVjdXRlUm9sbGJhY2sn LAogICAgICAgJ3NhdmVEYXRhQ2hhbmdlcycsCisgICAgICAnZXhlY3V0ZU1hY3JvJywKICAgICBd KTsKICAgfSk7CiAKQEAgLTY2Nyw2ICs2ODIsNDcgQEAgZGVzY3JpYmUoJ3RoZSBrZXlib2FyZCBz aG9ydGN1dHMnLCAoKSA9PiB7CiAgICAgfSk7CiAgIH0pOwogCisgIGRlc2NyaWJlKCdNYWNybyBD dHJsICsgMScsICgpID0+IHsKKyAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBub3QgYSBxdWVy eSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgZXZlbnQud2hpY2ggPSBDMV9LRVk7CisgICAgICAgIGV2ZW50LmFsdEtleSA9IGZhbHNl OworICAgICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNlOworICAgICAgICBldmVudC5jdHJsS2V5 ID0gdHJ1ZTsKKworICAgICAgICBrZXlib2FyZFNob3J0Y3V0cy5wcm9jZXNzRXZlbnRRdWVyeVRv b2woCisgICAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweSwgcXVlcnlUb29sQWN0aW9uc1Nw eSwgZXZlbnQKKyAgICAgICAgKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2hvdWxkIGV4ZWN1 dGUgdGhlIG1hY3JvJywgKCkgPT4geworICAgICAgICBleHBlY3QocXVlcnlUb29sQWN0aW9uc1Nw eS5leGVjdXRlTWFjcm8pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNxbEVkaXRvckNvbnRyb2xsZXJT cHksCisgICAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweS5tYWNyb3NbMF0uaWQpOworICAg ICAgfSk7CisKKyAgICAgIGl0KCdzaG91bGQgc3RvcCBldmVudCBwcm9wYWdhdGlvbicsICgpID0+ IHsKKyAgICAgICAgZXhwZWN0KGV2ZW50LnByZXZlbnREZWZhdWx0KS50b0hhdmVCZWVuQ2FsbGVk KCk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBxdWVyeSBp cyBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3RoaW5nJywgKCkg PT4geworICAgICAgICBldmVudC5rZXlDb2RlID0gQzFfS0VZOworICAgICAgICBldmVudC5hbHRL ZXkgPSBmYWxzZTsKKyAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSBmYWxzZTsKKyAgICAgICAgZXZl bnQuY3RybEtleSA9IHRydWU7CisKKyAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweS5pc1F1 ZXJ5UnVubmluZy5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7CisKKyAgICAgICAga2V5Ym9hcmRTaG9y dGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAorICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xs ZXJTcHksIHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50CisgICAgICAgICk7CisKKyAgICAgICAg ZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuZXhlY3V0ZU1hY3JvKS5ub3QudG9IYXZlQmVlbkNh bGxlZCgpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCiAgIGZ1bmN0aW9uIGV4cGVjdEV2 ZW50UHJvcGFnYXRpb25Ub1N0b3AoKSB7CiAgICAgZGVzY3JpYmUoJ3N0b3BzIGFsbCBldmVudCBw cm9wb2dhdGlvbicsICgpID0+IHsKIAo= --00000000000005678d05afceeea9--