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 1mZtjT-0005Jd-Qe for pgadmin-hackers@arkaria.postgresql.org; Mon, 11 Oct 2021 11:44:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mZtix-0002LA-5I for pgadmin-hackers@arkaria.postgresql.org; Mon, 11 Oct 2021 11:44:07 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mZtiv-0002KP-UK for pgadmin-hackers@lists.postgresql.org; Mon, 11 Oct 2021 11:44:06 +0000 Received: from mail-ua1-x92b.google.com ([2607:f8b0:4864:20::92b]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mZtis-00015N-IH for pgadmin-hackers@postgresql.org; Mon, 11 Oct 2021 11:44:04 +0000 Received: by mail-ua1-x92b.google.com with SMTP id i15so7972364uap.0 for ; Mon, 11 Oct 2021 04:44:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=pp+zOpOLsa5KQBXEDdpMME/Eo4eBMvZ+9ZSlprtfrrk=; b=Ekcf+uE4X4lGhTVIqQ7J1LSf8liEm3+vAv+dC9o7B6XbZoB7Bos+ydpz9Zozn3wn5R kCDsiiN4pEPJo0hMgWOWkSKG8z33SU1Z+dJq4UDkEHDZ1Bpr2paufloe4omHVYr1dOll yx2sEvv8a/H94s3P9Xe+hzPtXR2k1Jixc2j1DhG8ef2PDxl/tjp4/h1aJB4mesghBpsU n1gERp47t1ks9FU1YUoUgtDOLM7i3hnPXgV7Bgtaz3IeCMS+4GbOhE2x9vd80u1gUZ0T 3p/oJ3ZL7VxvHbkeyyvqFO8ODOlyVmq59C+CzIwQU7Ljdb2ams1oMO1HmGfzHKCCACfP 6Q3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=pp+zOpOLsa5KQBXEDdpMME/Eo4eBMvZ+9ZSlprtfrrk=; b=3RRjGamOF3+D9Sckl7dsJ+o2ZLtQ1OWcl/fdbZjM3km6k0POC93hx9Hw+QkAP6OFta x94unPZeHrm0yr2i9vATFU7VO8NZ59DY3Ru5BkHCYrpYp8bwCAwZ24Wj0ODiIvoWF6fE EdUntpGHPsE5fC1h6ZTP3jMEcaMXYC5qsIfm0Haz3+PcC0uFJJ+1Jn3JBpuROB7qFDkx Xb/qdTYN7OfzzOEJFm1FIBf3a1SinNOiNnrFFIzfpvfuvtuJbLSIaO2nuNzIapRwxpSQ JLUrW7j69QAPOD0epD0wtgArE90H3SbQOaKzjHhXy79IAs2ZuDayz7pc6HW/Al8MxAWu F83Q== X-Gm-Message-State: AOAM530H0rYzfZgLygLB96vcvvZ6iM84tqmS0Ur1ZFFiz+yC2SByyV9j LNrGjSAbxMKXqoKvCDDR2m4kRFntHaVqSQhs8a3BhD18P1UvxUYQ+eOYnF1oATkLsmOuxHKl+pN CImgTer7zmspYdQ6AmQmLs4qhkO43VaVQnUtP8QfZ3uVr1rKB4EosBMrWDC0U83J4n+2gtfDLuT iR1gVWZ1X7M9yxzm6ek0s7P1RE7IiJEerSM0+UL7mRbnadWY36Zn4WRhqklFSRm8EfjA== X-Google-Smtp-Source: ABdhPJxFGJHZXNKw6Y9X7n+VQETm9epFsuypULP52335KLbLY2tBfP4o57z2bDMVp4cqXgYgqewl+TVLf4gb8qcjlvw= X-Received: by 2002:a05:6102:4af:: with SMTP id r15mr7842671vsa.10.1633952641015; Mon, 11 Oct 2021 04:44:01 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Mon, 11 Oct 2021 17:13:25 +0530 Message-ID: Subject: [pgAdmin][RM6081] Advanced table fields in ERD To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000bf91ce05ce123e62" 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: Archived-At: Precedence: bulk --000000000000bf91ce05ce123e62 Content-Type: multipart/alternative; boundary="000000000000bf91cc05ce123e60" --000000000000bf91cc05ce123e60 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached patch will port Backbone based dialogs in ERD to React based using the schema view UI framework. This allows us to use the existing table UI, remove repeated code and enable advanced fields. I have hidden fields from the existing table UI for ERD. Please note, this also fixes #6529. Please review. -- Thanks, Aditya Toshniwal pgAdmin Hacker | Software Architect | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --000000000000bf91cc05ce123e60 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached=C2=A0patch will port Backbone based d= ialogs in ERD to React based using the schema view UI framework. This allow= s us to use the existing table UI, remove repeated code and enable advanced= fields. I have hidden fields from the existing table UI for ERD.
Please=C2= =A0note, this also fixes #6529.

Please review.

-- =
=
Thanks,
Aditya Toshniwal<= /font>
pgAdmin Hacker=C2=A0| Software Architect=C2=A0| edbpostgres.com<= /div>
"Don't Complain about Heat, Plant a TREE"
--000000000000bf91cc05ce123e60-- --000000000000bf91ce05ce123e62 Content-Type: application/octet-stream; name="RM6081_6529.patch" Content-Disposition: attachment; filename="RM6081_6529.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kuml5p2b0 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDA0 NjEyNmM2Ni4uZDdiYjNkNTA1IDEwMDY0NAotLS0gYS93ZWIvcGFja2FnZS5qc29uCisrKyBiL3dl Yi9wYWNrYWdlLmpzb24KQEAgLTgzLDcgKzgzLDcgQEAKICAgICAiQG1hdGVyaWFsLXVpL2ljb25z IjogIl40LjExLjIiLAogICAgICJAbWF0ZXJpYWwtdWkvbGFiIjogIjQuMC4wLWFscGhhLjU4IiwK ICAgICAiQG1hdGVyaWFsLXVpL3BpY2tlcnMiOiAiXjMuMi4xMCIsCi0gICAgIkBwcm9qZWN0c3Rv cm0vcmVhY3QtZGlhZ3JhbXMiOiAiXjYuNC4yIiwKKyAgICAiQHByb2plY3RzdG9ybS9yZWFjdC1k aWFncmFtcyI6ICJeNi42LjEiLAogICAgICJAc2ltb253ZXAvcGlja3IiOiAiXjEuNS4xIiwKICAg ICAiQHRpcHB5anMvcmVhY3QiOiAiXjQuMi4wIiwKICAgICAiQHR5cGVzL2NsYXNzbmFtZXMiOiAi XjIuMi42IiwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW5zL3N0YXRpYy9qcy9jb2x1bW4u dWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29sdW1ucy9zdGF0aWMvanMvY29sdW1uLnVpLmpzCmluZGV4IGVl NmVkY2QxYi4uZjU3ZDU0MGYwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1ucy9zdGF0aWMv anMvY29sdW1uLnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW5zL3N0YXRpYy9qcy9jb2x1bW4u dWkuanMKQEAgLTE5LDcgKzE5LDcgQEAgZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVDb2x1bW5TY2hl bWEodHJlZU5vZGVJbmZvLCBpdGVtTm9kZURhdGEsIHBnQnJvd3NlcikgewogfQogCiBleHBvcnQg ZGVmYXVsdCBjbGFzcyBDb2x1bW5TY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewotICBjb25z dHJ1Y3RvcihnZXRQcml2aWxlZ2VSb2xlU2NoZW1hLCBub2RlSW5mbywgY2x0eXBlT3B0aW9ucywg Y29sbHNwY25hbWVPcHRpb25zKSB7CisgIGNvbnN0cnVjdG9yKGdldFByaXZpbGVnZVJvbGVTY2hl bWEsIG5vZGVJbmZvLCBjbHR5cGVPcHRpb25zLCBjb2xsc3BjbmFtZU9wdGlvbnMsIGluRXJkPWZh bHNlKSB7CiAgICAgc3VwZXIoewogICAgICAgbmFtZTogdW5kZWZpbmVkLAogICAgICAgYXR0b3du ZXI6IHVuZGVmaW5lZCwKQEAgLTU3LDYgKzU3LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29s dW1uU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICB0aGlzLm5vZGVJbmZvID0gbm9k ZUluZm87CiAgICAgdGhpcy5jbHR5cGVPcHRpb25zID0gY2x0eXBlT3B0aW9uczsKICAgICB0aGlz LmNvbGxzcGNuYW1lT3B0aW9ucyA9IGNvbGxzcGNuYW1lT3B0aW9uczsKKyAgICB0aGlzLmluRXJk ID0gaW5FcmQ7CiAKICAgICB0aGlzLmRhdGF0eXBlcyA9IFtdOwogICB9CkBAIC03MSw4ICs3Miw3 IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbHVtblNjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVt YSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZignc2NoZW1hJyBpbiB0aGlz Lm5vZGVJbmZvKQotICAgIHsKKyAgICBpZih0aGlzLm5vZGVJbmZvICYmICAoJ3NjaGVtYScgaW4g dGhpcy5ub2RlSW5mbykpIHsKICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBjb250cm9sIGlmIGl0 J3Mgc3lzdGVtIGNvbHVtbnMKICAgICAgIC8vIGluaGVyaXRlZGZyb20gY2hlY2sgaXMgdXNlZnVs IHdoZW4gd2UgdXNlIHRoaXMgc2NoZW1hIGluIHRhYmxlIG5vZGUKICAgICAgIC8vIGluaGVyaXRl ZGZyb20gaGFzIHZhbHVlIHRoZW4gd2Ugc2hvdWxkIGRpc2FibGUgaXQKQEAgLTg2LDcgKzg2LDcg QEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sdW1uU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1h IHsKICAgICAgIC8vIGllOiBpdCdzIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiAxCiAgICAgICByZXR1 cm4gISghXy5pc1VuZGVmaW5lZChzdGF0ZS5hdHRudW0pICYmIHN0YXRlLmF0dG51bSA+IDApOwog ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBlZGl0 YWJsZUNoZWNrRm9yVGFibGUoc3RhdGUpIHsKQEAgLTE3OSw3ICsxNzksNyBAQCBleHBvcnQgZGVm YXVsdCBjbGFzcyBDb2x1bW5TY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgICAg ICkgfHwgKAogICAgICAgICAgICAgJ2lzX3BhcnRpdGlvbmVkJyBpbiBvYmoudG9wLm9yaWdEYXRh CiAgICAgICAgICAgICAmJiBvYmoudG9wLm9yaWdEYXRhWydpc19wYXJ0aXRpb25lZCddCi0gICAg ICAgICAgICAmJiBvYmoubm9kZUluZm8uc2VydmVyICYmIG9iai5ub2RlSW5mby5zZXJ2ZXIudmVy c2lvbiA8IDExMDAwCisgICAgICAgICAgICAmJiBvYmouZ2V0U2VydmVyVmVyc2lvbigpIDwgMTEw MDAKICAgICAgICAgICApKQogICAgICAgICApIHsKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg LTIzOSw3ICsyMzksNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBDb2x1bW5TY2hlbWEgZXh0ZW5k cyBCYXNlVUlTY2hlbWEgewogICAgICAgICAgICAgZmlsdGVyOiAob3B0aW9ucyk9PnsKICAgICAg ICAgICAgICAgbGV0IHJlc3VsdCA9IG9wdGlvbnM7CiAgICAgICAgICAgICAgIGxldCBlZGl0X3R5 cGVzID0gc3RhdGU/LmVkaXRfdHlwZXMgfHwgW107Ci0gICAgICAgICAgICAgIGlmKCFvYmouaXNO ZXcoc3RhdGUpKSB7CisgICAgICAgICAgICAgIGlmKCFvYmouaXNOZXcoc3RhdGUpICYmICF0aGlz LmluRXJkKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gXy5maWx0ZXIob3B0aW9ucywgKG8p PT5lZGl0X3R5cGVzLmluZGV4T2Yoby52YWx1ZSkgPiAtMSk7CiAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI1Niw3ICsyNTYsNyBAQCBleHBvcnQgZGVm YXVsdCBjbGFzcyBDb2x1bW5TY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgICAg ICAgZmlsdGVyOiAob3B0aW9ucyk9PnsKICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG9wdGlv bnM7CiAgICAgICAgICAgICAgIGxldCBlZGl0X3R5cGVzID0gcm93Py5lZGl0X3R5cGVzIHx8IFtd OwotICAgICAgICAgICAgICBpZighb2JqLmlzTmV3KHJvdykpIHsKKyAgICAgICAgICAgICAgaWYo IW9iai5pc05ldyhyb3cpICYmICF0aGlzLmluRXJkKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0 ID0gXy5maWx0ZXIob3B0aW9ucywgKG8pPT5lZGl0X3R5cGVzLmluZGV4T2Yoby52YWx1ZSkgPiAt MSk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI3 Miw3ICsyNzIsMTAgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sdW1uU2NoZW1hIGV4dGVuZHMg QmFzZVVJU2NoZW1hIHsKICAgICAgIGlkOiAnaW5oZXJpdGVkZnJvbScsIGxhYmVsOiBnZXR0ZXh0 KCdJbmhlcml0ZWQgZnJvbSB0YWJsZScpLAogICAgICAgdHlwZTogJ3RleHQnLCByZWFkb25seTog dHJ1ZSwgZWRpdGFibGU6IGZhbHNlLAogICAgICAgdmlzaWJsZTogZnVuY3Rpb24oKSB7Ci0gICAg ICAgIHJldHVybiBfLmlzVW5kZWZpbmVkKHRoaXMubm9kZUluZm9bJ3RhYmxlJ10gfHwgdGhpcy5u b2RlSW5mb1sndmlldyddIHx8IHRoaXMubm9kZUluZm9bJ212aWV3J10pOworICAgICAgICBpZih0 aGlzLm5vZGVJbmZvKSB7CisgICAgICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQodGhpcy5ub2Rl SW5mb1sndGFibGUnXSB8fCB0aGlzLm5vZGVJbmZvWyd2aWV3J10gfHwgdGhpcy5ub2RlSW5mb1sn bXZpZXcnXSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfSwKICAg ICB9LHsKICAgICAgIGlkOiAnYXR0bGVuJywgbGFiZWw6IGdldHRleHQoJ0xlbmd0aC9QcmVjaXNp b24nKSwKQEAgLTQxNyw4ICs0MjAsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBDb2x1bW5TY2hl bWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgICAgIHsnbGFiZWwnOiBnZXR0ZXh0KCdJ REVOVElUWScpLCAndmFsdWUnOiAnaSd9LAogICAgICAgICBdOwogCi0gICAgICAgIGlmICh0aGlz Lm5vZGVJbmZvICYmIHRoaXMubm9kZUluZm8uc2VydmVyICYmCi0gICAgICAgICAgICB0aGlzLm5v ZGVJbmZvLnNlcnZlci52ZXJzaW9uID49IDEyMDAwMCkgeworICAgICAgICBpZiAodGhpcy5nZXRT ZXJ2ZXJWZXJzaW9uKCkgPj0gMTIwMDAwKSB7CiAgICAgICAgICAgLy8gWW91IGNhbid0IGNoYW5n ZSB0aGUgZXhpc3RpbmcgY29sdW1uIHRvIEdlbmVyYXRlZCBjb2x1bW4uCiAgICAgICAgICAgaWYg KHRoaXMuaXNOZXcoc3RhdGUpKSB7CiAgICAgICAgICAgICBvcHRpb25zLnB1c2goewpAQCAtNTI5 LDE1ICs1MzEsMTggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sdW1uU2NoZW1hIGV4dGVuZHMg QmFzZVVJU2NoZW1hIHsKICAgICAgIF0sIG51bGwsIG51bGwsIFsnbmFtZScsICd2YWx1ZSddKSwK ICAgICAgIHVuaXF1ZUNvbCA6IFsnbmFtZSddLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCiAg ICAgICBjYW5BZGQ6IHRydWUsIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IHRydWUsCi0gICAg fSwgeworICAgIH0seworICAgICAgaWQ6ICdzZWN1cml0eScsIGxhYmVsOiBnZXR0ZXh0KCdTZWN1 cml0eScpLCB0eXBlOiAnZ3JvdXAnLAorICAgICAgdmlzaWJsZTogIXRoaXMuaW5FcmQsCisgICAg fSx7CiAgICAgICBpZDogJ2F0dGFjbCcsIGxhYmVsOiBnZXR0ZXh0KCdQcml2aWxlZ2VzJyksIHR5 cGU6ICdjb2xsZWN0aW9uJywKLSAgICAgIGdyb3VwOiBnZXR0ZXh0KCdTZWN1cml0eScpLAorICAg ICAgZ3JvdXA6ICdzZWN1cml0eScsCiAgICAgICBzY2hlbWE6IHRoaXMuZ2V0UHJpdmlsZWdlUm9s ZVNjaGVtYShbJ2EnLCdyJywndycsJ3gnXSksCiAgICAgICBtb2RlOiBbJ2VkaXQnXSwgY2FuQWRk OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCiAgICAgICB1bmlxdWVDb2wgOiBbJ2dyYW50ZWUnXSwK ICAgICB9LHsKICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6IGdldHRleHQoJ1NlY3VyaXR5 IGxhYmVscycpLCBjYW5BZGQ6IHRydWUsCi0gICAgICBzY2hlbWE6IG5ldyBTZWNMYWJlbFNjaGVt YSgpLCBncm91cDogZ2V0dGV4dCgnU2VjdXJpdHknKSwKKyAgICAgIHNjaGVtYTogbmV3IFNlY0xh YmVsU2NoZW1hKCksIGdyb3VwOiAnc2VjdXJpdHknLAogICAgICAgbW9kZTogWydlZGl0JywgJ2Ny ZWF0ZSddLCBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKICAgICAgIG1pbl92 ZXJzaW9uOiA5MDEwMCwgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwKICAgICAgIHVu aXF1ZUNvbCA6IFsncHJvdmlkZXInXSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkudWkuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29u c3RyYWludHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LnVpLmpzCmluZGV4IDU5 MDNmNTM5NC4uMmRmZmE1ZjAyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9y ZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25z dHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkudWkuanMKQEAgLTg2LDcg Kzg2LDcgQEAgY2xhc3MgRm9yZWlnbktleUhlYWRlclNjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVt YSB7CiAgIH0KIH0KIAotY2xhc3MgRm9yZWlnbktleUNvbHVtblNjaGVtYSBleHRlbmRzIEJhc2VV SVNjaGVtYSB7CitleHBvcnQgY2xhc3MgRm9yZWlnbktleUNvbHVtblNjaGVtYSBleHRlbmRzIEJh c2VVSVNjaGVtYSB7CiAgIGNvbnN0cnVjdG9yKCkgewogICAgIHN1cGVyKHsKICAgICAgIGxvY2Fs X2NvbHVtbjogdW5kZWZpbmVkLApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEZvcmVpZ25LZXlD b2x1bW5TY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogfQogCiBleHBvcnQgZGVmYXVsdCBj bGFzcyBGb3JlaWduS2V5U2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKLSAgY29uc3RydWN0 b3IoZmllbGRPcHRpb25zPXt9LCBub2RlSW5mbywgZ2V0Q29sdW1ucywgaW5pdERhdGE9e30pIHsK KyAgY29uc3RydWN0b3IoZmllbGRPcHRpb25zPXt9LCBub2RlSW5mbywgZ2V0Q29sdW1ucywgaW5p dFZhbHVlcz17fSwgaW5FcmQ9ZmFsc2UpIHsKICAgICBzdXBlcih7CiAgICAgICBuYW1lOiB1bmRl ZmluZWQsCiAgICAgICByZWZ0YWI6IHVuZGVmaW5lZCwKQEAgLTEyOCw3ICsxMjgsNyBAQCBleHBv cnQgZGVmYXVsdCBjbGFzcyBGb3JlaWduS2V5U2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsK ICAgICAgIGF1dG9pbmRleDogdHJ1ZSwKICAgICAgIGNvdmVyaW5naW5kZXg6IHVuZGVmaW5lZCwK ICAgICAgIGhhc2luZGV4OnVuZGVmaW5lZCwKLSAgICAgIC4uLmluaXREYXRhLAorICAgICAgLi4u aW5pdFZhbHVlcywKICAgICB9KTsKIAogICAgIHRoaXMubm9kZUluZm8gPSBub2RlSW5mbzsKQEAg LTEzNiw3ICsxMzYsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JlaWduS2V5U2NoZW1hIGV4 dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICB0aGlzLmZrSGVhZGVyU2NoZW1hID0gbmV3IEZvcmVp Z25LZXlIZWFkZXJTY2hlbWEoZmllbGRPcHRpb25zLCBnZXRDb2x1bW5zKTsKICAgICB0aGlzLmZr SGVhZGVyU2NoZW1hLmZrT2JqID0gdGhpczsKICAgICB0aGlzLmZrQ29sdW1uU2NoZW1hID0gbmV3 IEZvcmVpZ25LZXlDb2x1bW5TY2hlbWEoKTsKLQorICAgIHRoaXMuaW5FcmQgPSBpbkVyZDsKICAg fQogCiAgIGdldCBpZEF0dHJpYnV0ZSgpIHsKQEAgLTI0MCw5ICsyNDAsNyBAQCBleHBvcnQgZGVm YXVsdCBjbGFzcyBGb3JlaWduS2V5U2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGFi bGUgZWRpdCBtb2RlIHRoZW4KLSAgICAgICAgaWYob2JqLmluVGFibGUpIHsKLSAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmKHN0YXRlLmhhc2luZGV4KSB7CisgICAgICAg IGlmKHN0YXRlLmhhc2luZGV4KSB7CiAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjUyLDcgKzI1MCw3IEBAIGV4cG9ydCBkZWZhdWx0 IGNsYXNzIEZvcmVpZ25LZXlTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgICAg IHJldHVybiB7fTsKICAgICAgICAgfQogICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGFibGUgZWRp dCBtb2RlCi0gICAgICAgIGlmKG9iai5pblRhYmxlKSB7CisgICAgICAgIGlmKG9iai5pblRhYmxl ICYmICF0aGlzLmluRXJkKSB7CiAgICAgICAgICAgaWYob2JqLmlzTmV3KHN0YXRlKSAmJiBvYmou dG9wLmlzTmV3KCkpIHsKICAgICAgICAgICAgIHJldHVybiB7YXV0b2luZGV4OiBmYWxzZSwgY292 ZXJpbmdpbmRleDogJyd9OwogICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0 aWMvanMvdGFibGUudWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLnVpLmpzCmluZGV4 IDk0NjIyZTJiMy4uMTI5MGU2Y2UzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3Rh YmxlLnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUudWkuanMKQEAgLTcwLDcg KzcwLDcgQEAgZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVUYWJsZVNjaGVtYSh0cmVlTm9kZUluZm8s IGl0ZW1Ob2RlRGF0YSwgcGdCcm93c2VyKSB7CiB9CiAKIGV4cG9ydCBjbGFzcyBDb25zdHJhaW50 c1NjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVtYSB7Ci0gIGNvbnN0cnVjdG9yKG5vZGVJbmZvLCBn ZXRGa09iaiwgZ2V0RXhDb25zT2JqLCBvdGhlck9wdGlvbnMpIHsKKyAgY29uc3RydWN0b3Iobm9k ZUluZm8sIGdldEZrT2JqLCBnZXRFeENvbnNPYmosIG90aGVyT3B0aW9ucywgaW5FcmQ9ZmFsc2Up IHsKICAgICBzdXBlcigpOwogICAgIHRoaXMubm9kZUluZm8gPSBub2RlSW5mbzsKICAgICB0aGlz LnByaW1hcnlLZXlPYmogPSBuZXcgUHJpbWFyeUtleVNjaGVtYSh7CkBAIC04MSwxMyArODEsMTYg QEAgZXhwb3J0IGNsYXNzIENvbnN0cmFpbnRzU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsK ICAgICAgIHNwY25hbWU6IG90aGVyT3B0aW9ucy5zcGNuYW1lLAogICAgIH0sIG5vZGVJbmZvKTsK ICAgICB0aGlzLmV4Q29uc09iaiA9IGdldEV4Q29uc09iaigpOworICAgIHRoaXMuaW5FcmQgPSBp bkVyZDsKICAgfQogCiAgIGNoYW5nZUNvbHVtbk9wdGlvbnMoY29sT3B0aW9ucykgewogICAgIHRo aXMucHJpbWFyeUtleU9iai5jaGFuZ2VDb2x1bW5PcHRpb25zKGNvbE9wdGlvbnMpOwogICAgIHRo aXMuZmtPYmouY2hhbmdlQ29sdW1uT3B0aW9ucyhjb2xPcHRpb25zKTsKLSAgICB0aGlzLnVuaXF1 ZUNvbnNPYmouY2hhbmdlQ29sdW1uT3B0aW9ucyhjb2xPcHRpb25zKTsKLSAgICB0aGlzLmV4Q29u c09iai5jaGFuZ2VDb2x1bW5PcHRpb25zKGNvbE9wdGlvbnMpOworICAgIGlmKCF0aGlzLmluRXJk KSB7CisgICAgICB0aGlzLnVuaXF1ZUNvbnNPYmouY2hhbmdlQ29sdW1uT3B0aW9ucyhjb2xPcHRp b25zKTsKKyAgICAgIHRoaXMuZXhDb25zT2JqLmNoYW5nZUNvbHVtbk9wdGlvbnMoY29sT3B0aW9u cyk7CisgICAgfQogICB9CiAKICAgYW55Q29sdW1uQWRkZWQoc3RhdGUpIHsKQEAgLTE0NywyMCAr MTUwLDI0IEBAIGV4cG9ydCBjbGFzcyBDb25zdHJhaW50c1NjaGVtYSBleHRlbmRzIEJhc2VVSVNj aGVtYSB7CiAgICAgICAgICAgcmV0dXJuIHtmb3JlaWduX2tleTogW119OwogICAgICAgICB9CiAg ICAgICB9CisgICAgfSx7CisgICAgICBpZDogJ2NoZWNrX2dyb3VwJywgdHlwZTogJ2dyb3VwJywg bGFiZWw6IGdldHRleHQoJ0NoZWNrJyksIHZpc2libGU6ICF0aGlzLmluRXJkLAogICAgIH0sewog ICAgICAgaWQ6ICdjaGVja19jb25zdHJhaW50JywgbGFiZWw6ICcnLAogICAgICAgc2NoZW1hOiBu ZXcgQ2hlY2tDb25zdHJhaW50U2NoZW1hKCksCiAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6 ICdjb2xsZWN0aW9uJywKLSAgICAgIGdyb3VwOiBnZXR0ZXh0KCdDaGVjaycpLCBtb2RlOiBbJ2Vk aXQnLCAnY3JlYXRlJ10sCisgICAgICBncm91cDogJ2NoZWNrX2dyb3VwJywgbW9kZTogWydlZGl0 JywgJ2NyZWF0ZSddLAogICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBz OlsnaXNfcGFydGl0aW9uZWQnXSwKICAgICAgIGNhbkFkZDogdHJ1ZSwKICAgICAgIGNvbHVtbnMg OiBbJ25hbWUnLCAnY29uc3JjJ10sCiAgICAgICBkaXNhYmxlZDogdGhpcy5pbkNhdGFsb2csCisg ICAgfSx7CisgICAgICBpZDogJ3VuaXF1ZV9ncm91cCcsIHR5cGU6ICdncm91cCcsIGxhYmVsOiBn ZXR0ZXh0KCdVbmlxdWUnKSwgdmlzaWJsZTogIXRoaXMuaW5FcmQsCiAgICAgfSx7CiAgICAgICBp ZDogJ3VuaXF1ZV9jb25zdHJhaW50JywgbGFiZWw6ICcnLAogICAgICAgc2NoZW1hOiB0aGlzLnVu aXF1ZUNvbnNPYmosCiAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywK LSAgICAgIGdyb3VwOiBnZXR0ZXh0KCdVbmlxdWUnKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSdd LAorICAgICAgZ3JvdXA6ICd1bmlxdWVfZ3JvdXAnLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10s CiAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRp b25lZCcsICd0eXBuYW1lJ10sCiAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMnXSwK ICAgICAgIGRpc2FibGVkOiB0aGlzLmluQ2F0YWxvZywKQEAgLTE3NiwxMSArMTgzLDEzIEBAIGV4 cG9ydCBjbGFzcyBDb25zdHJhaW50c1NjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVtYSB7CiAgICAg ICAgICAgcmV0dXJuIHt1bmlxdWVfY29uc3RyYWludDogW119OwogICAgICAgICB9CiAgICAgICB9 CisgICAgfSx7CisgICAgICBpZDogJ2V4Y2x1ZGVfZ3JvdXAnLCB0eXBlOiAnZ3JvdXAnLCBsYWJl bDogZ2V0dGV4dCgnRXhjbHVkZScpLCB2aXNpYmxlOiAhdGhpcy5pbkVyZCwKICAgICB9LHsKICAg ICAgIGlkOiAnZXhjbHVkZV9jb25zdHJhaW50JywgbGFiZWw6ICcnLAogICAgICAgc2NoZW1hOiB0 aGlzLmV4Q29uc09iaiwKICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24n LAotICAgICAgZ3JvdXA6IGdldHRleHQoJ0V4Y2x1ZGUnKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0 ZSddLAorICAgICAgZ3JvdXA6ICdleGNsdWRlX2dyb3VwJywgbW9kZTogWydlZGl0JywgJ2NyZWF0 ZSddLAogICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBzOlsnaXNfcGFy dGl0aW9uZWQnXSwKICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnLCAnY29sdW1ucycsICdjb25zdHJh aW50J10sCiAgICAgICBkaXNhYmxlZDogdGhpcy5pbkNhdGFsb2csCkBAIC0yNzYsNyArMjg1LDcg QEAgZXhwb3J0IGNsYXNzIExpa2VTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogCiBleHBv cnQgZGVmYXVsdCBjbGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVtYSB7CiAgIGNv bnN0cnVjdG9yKGZpZWxkT3B0aW9ucz17fSwgbm9kZUluZm8sIHNjaGVtYXM9e30sIGdldFByaXZp bGVnZVJvbGVTY2hlbWE9KCk9Pnt9LCBnZXRDb2x1bW5zPSgpPT5bXSwKLSAgICBnZXRDb2xsYXRp b25zPSgpPT5bXSwgZ2V0T3BlcmF0b3JDbGFzcz0oKT0+W10sIGdldEF0dGFjaFRhYmxlcz0oKT0+ W10sIGluaXRWYWx1ZXM9e30pIHsKKyAgICBnZXRDb2xsYXRpb25zPSgpPT5bXSwgZ2V0T3BlcmF0 b3JDbGFzcz0oKT0+W10sIGdldEF0dGFjaFRhYmxlcz0oKT0+W10sIGluaXRWYWx1ZXM9e30sIGlu RXJkPWZhbHNlKSB7CiAgICAgc3VwZXIoewogICAgICAgbmFtZTogdW5kZWZpbmVkLAogICAgICAg b2lkOiB1bmRlZmluZWQsCkBAIC0zMDcsNiArMzE2LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3Mg VGFibGVTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgYXV0b3ZhY3V1bV9lbmFi bGVkOiAneCcsCiAgICAgICBwcmltYXJ5X2tleTogW10sCiAgICAgICBmb3JlaWduX2tleTogW10s CisgICAgICBwYXJ0aXRpb25fa2V5czogW10sCiAgICAgICBwYXJ0aXRpb25zOiBbXSwKICAgICAg IHBhcnRpdGlvbl90eXBlOiAncmFuZ2UnLAogICAgICAgaXNfcGFydGl0aW9uZWQ6IGZhbHNlLApA QCAtMzI1LDYgKzMzNSwyNCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZVNjaGVtYSBleHRl bmRzIEJhc2VVSVNjaGVtYSB7CiAgICAgdGhpcy5jb2x1bW5zU2NoZW1hID0gdGhpcy5zY2hlbWFz LmNvbHVtbnMgJiYgdGhpcy5zY2hlbWFzLmNvbHVtbnMoKSB8fCB7fTsKICAgICB0aGlzLnZhY3V1 bVNldHRpbmdzU2NoZW1hID0gdGhpcy5zY2hlbWFzLnZhY3V1bV9zZXR0aW5ncyAmJiB0aGlzLnNj aGVtYXMudmFjdXVtX3NldHRpbmdzKCkgfHwge307CiAgICAgdGhpcy5wYXJ0aXRpb25LZXlzT2Jq ID0gbmV3IFBhcnRpdGlvbktleXNTY2hlbWEoW10sIGdldENvbGxhdGlvbnMsIGdldE9wZXJhdG9y Q2xhc3MpOworICAgIHRoaXMuaW5FcmQgPSBpbkVyZDsKKyAgfQorCisgIHN0YXRpYyBnZXRFcmRT dXBwb3J0ZWREYXRhKGRhdGEpIHsKKyAgICBsZXQgbmV3RGF0YSA9IHsuLi5kYXRhfTsKKyAgICBj b25zdCBTVVBQT1JURURfS0VZUyA9IFsKKyAgICAgICduYW1lJywgJ3NjaGVtYScsICdkZXNjcmlw dGlvbicsICdybHNwb2xpY3knLCAnZm9yY2VybHNwb2xpY3knLCAnZmlsbGZhY3RvcicsCisgICAg ICAndG9hc3RfdHVwbGVfdGFyZ2V0JywgJ3BhcmFsbGVsX3dvcmtlcnMnLCAncmVsaGFzb2lkcycs ICdyZWxwZXJzaXN0ZW5jZScsCisgICAgICAnY29sdW1ucycsICdwcmltYXJ5X2tleScsICdmb3Jl aWduX2tleScsCisgICAgXTsKKyAgICBuZXdEYXRhID0gXy5waWNrKG5ld0RhdGEsIFNVUFBPUlRF RF9LRVlTKTsKKworICAgIC8qIFJlbW92ZSBpbmhlcml0ZWQgcmVmZXJlbmNlcyAqLworICAgIG5l d0RhdGEuY29sdW1ucyA9IG5ld0RhdGEuY29sdW1ucy5tYXAoKGMpPT57CisgICAgICBkZWxldGUg Yy5pbmhlcml0ZWRmcm9tdGFibGU7CisgICAgICByZXR1cm4gYzsKKyAgICB9KTsKKyAgICByZXR1 cm4gbmV3RGF0YTsKICAgfQogCiAgIGdldCBpZEF0dHJpYnV0ZSgpIHsKQEAgLTM5Nyw5ICs0MjUs OSBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVt YSB7CiAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgdHlwZTogJ3RleHQn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKICAgICB9LHsKICAgICAgIGlkOiAncmVsb3duZXInLCBs YWJlbDogZ2V0dGV4dCgnT3duZXInKSwgdHlwZTogJ3NlbGVjdCcsCi0gICAgICBvcHRpb25zOiB0 aGlzLmZpZWxkT3B0aW9ucy5yZWxvd25lciwgbm9FbXB0eTogdHJ1ZSwKKyAgICAgIG9wdGlvbnM6 IHRoaXMuZmllbGRPcHRpb25zLnJlbG93bmVyLCBub0VtcHR5OiB0aGlzLmluRXJkID8gZmFsc2Ug OiB0cnVlLAogICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGNv bnRyb2xQcm9wczoge2FsbG93Q2xlYXI6IGZhbHNlfSwKLSAgICAgIHJlYWRvbmx5OiB0aGlzLmlu Q2F0YWxvZywKKyAgICAgIHJlYWRvbmx5OiB0aGlzLmluQ2F0YWxvZywgdmlzaWJsZTogIXRoaXMu aW5FcmQsCiAgICAgfSx7CiAgICAgICBpZDogJ3NjaGVtYScsIGxhYmVsOiBnZXR0ZXh0KCdTY2hl bWEnKSwgdHlwZTogJ3NlbGVjdCcsCiAgICAgICBvcHRpb25zOiB0aGlzLmZpZWxkT3B0aW9ucy5z Y2hlbWEsIG5vRW1wdHk6IHRydWUsCkBAIC00MDcsNyArNDM1LDcgQEAgZXhwb3J0IGRlZmF1bHQg Y2xhc3MgVGFibGVTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgcmVhZG9ubHk6 IHRoaXMuaW5DYXRhbG9nLAogICAgIH0sewogICAgICAgaWQ6ICdzcGNuYW1lJywgbGFiZWw6IGdl dHRleHQoJ1RhYmxlc3BhY2UnKSwKLQorICAgICAgdmlzaWJsZTogIXRoaXMuaW5FcmQsCiAgICAg ICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZGVwczogWydpc19wYXJ0 aXRpb25lZCddLAogICAgICAgcmVhZG9ubHk6IHRoaXMuaW5DYXRhbG9nLCB0eXBlOiAoc3RhdGUp PT57CiAgICAgICAgIHJldHVybiB7CkBAIC00MjEsNiArNDQ5LDkgQEAgZXhwb3J0IGRlZmF1bHQg Y2xhc3MgVGFibGVTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgaWQ6ICdwYXJ0 aXRpb24nLCB0eXBlOiAnZ3JvdXAnLCBsYWJlbDogZ2V0dGV4dCgnUGFydGl0aW9ucycpLAogICAg ICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLCBtaW5fdmVyc2lvbjogMTAwMDAwLAogICAgICAg dmlzaWJsZTogZnVuY3Rpb24oc3RhdGUpIHsKKyAgICAgICAgaWYodGhpcy5pbkVyZCkgeworICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICAvLyBBbHdheXMgc2hvdyBp biBjYXNlIG9mIGNyZWF0ZSBtb2RlCiAgICAgICAgIGlmIChvYmouaXNOZXcoc3RhdGUpIHx8IHN0 YXRlLmlzX3BhcnRpdGlvbmVkKQogICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDI5LDcgKzQ2 MCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2No ZW1hIHsKICAgICB9LHsKICAgICAgIGlkOiAnaXNfcGFydGl0aW9uZWQnLCBsYWJlbDpnZXR0ZXh0 KCdQYXJ0aXRpb25lZCB0YWJsZT8nKSwgY2VsbDogJ3N3aXRjaCcsCiAgICAgICB0eXBlOiAnc3dp dGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICBtaW5f dmVyc2lvbjogMTAwMDAwLAorICAgICAgbWluX3ZlcnNpb246IDEwMDAwMCwgdmlzaWJsZTogIXRo aXMuaW5FcmQsCiAgICAgICByZWFkb25seTogZnVuY3Rpb24oc3RhdGUpIHsKICAgICAgICAgaWYg KCFvYmouaXNOZXcoc3RhdGUpKQogICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDQ3LDcgKzQ3 OCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2No ZW1hIHsKICAgICAgIHR5cGU6ICdzZWxlY3QnLCBncm91cDogZ2V0dGV4dCgnQ29sdW1ucycpLAog ICAgICAgZGVwczogWyd0eXBuYW1lJywgJ2lzX3BhcnRpdGlvbmVkJ10sIG1vZGU6IFsnY3JlYXRl JywgJ2VkaXQnXSwKICAgICAgIGNvbnRyb2xQcm9wczogeyBtdWx0aXBsZTogdHJ1ZSwgYWxsb3dD bGVhcjogZmFsc2UsIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdTZWxlY3QgdG8gaW5oZXJpdCBmcm9t Li4uJyl9LAotICAgICAgb3B0aW9uczogdGhpcy5maWVsZE9wdGlvbnMuY29sbF9pbmhlcml0cywK KyAgICAgIG9wdGlvbnM6IHRoaXMuZmllbGRPcHRpb25zLmNvbGxfaW5oZXJpdHMsIHZpc2libGU6 ICF0aGlzLmluRXJkLAogICAgICAgb3B0aW9uc0xvYWRlZDogKHJlcyk9Pm9iai5pbmhlcml0ZWRU YWJsZUxpc3Q9cmVzLAogICAgICAgZGlzYWJsZWQ6IChzdGF0ZSk9PnsKICAgICAgICAgaWYoc3Rh dGUuYWRkaW5nX2luaGVyaXRfY29scyB8fCBzdGF0ZS5pc19wYXJ0aXRpb25lZCl7CkBAIC01ODEs NyArNjEyLDE4IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlU2NoZW1hIGV4dGVuZHMgQmFz ZVVJU2NoZW1hIHsKICAgICAgIGRlcHM6IFsndHlwbmFtZScsICdpc19wYXJ0aXRpb25lZCddLAog ICAgICAgZGVwQ2hhbmdlOiAoc3RhdGUsIHNvdXJjZSwgdG9wU3RhdGUsIGFjdGlvbk9iaik9PnsK ICAgICAgICAgaWYoc291cmNlWzBdID09PSAnY29sdW1ucycpIHsKLSAgICAgICAgICBvYmouY2hh bmdlQ29sdW1uT3B0aW9ucyhzdGF0ZS5jb2x1bW5zKTsKKyAgICAgICAgICAvKiBJbiBFUkQsIGF0 dG51bSBpcyBhbiBpbXAgdmFyIGZvciBzZXR0aW5nIHRoZSBsaW5rcworICAgICAgICAgIEhlcmUs IGF0dG51bSBpcyBzZXQgdG8gbWF4IGF2YWlsIHZhbHVlLgorICAgICAgICAgICovCisgICAgICAg ICAgbGV0IGNvbHVtbnMgPSBzdGF0ZS5jb2x1bW5zOworICAgICAgICAgIGlmKGFjdGlvbk9iai50 eXBlID09PSBTQ0hFTUFfU1RBVEVfQUNUSU9OUy5BRERfUk9XICYmIHRoaXMuaW5FcmQpIHsKKyAg ICAgICAgICAgIGxldCBsYXN0QXR0bnVtID0gXy5tYXhCeShjb2x1bW5zLCAoYyk9PmMuYXR0bnVt KT8uYXR0bnVtOworICAgICAgICAgICAgaWYoXy5pc1VuZGVmaW5lZChsYXN0QXR0bnVtKSB8fCBf LmlzTnVsbChsYXN0QXR0bnVtKSkgeworICAgICAgICAgICAgICBsYXN0QXR0bnVtID0gLTE7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbnMubGVuZ3RoLTFdLmF0dG51 bSA9IGxhc3RBdHRudW0gKyAxOworICAgICAgICAgIH0KKyAgICAgICAgICBvYmouY2hhbmdlQ29s dW1uT3B0aW9ucyhjb2x1bW5zKTsKICAgICAgICAgICAvKiBJZiBwcmltYXJ5IGtleSBzd2l0Y2gg Y2hhbmdlcywgcHJpbWFyeSBrZXkgY29sbGVjdGlvbiBuZWVkIHRvIGNoYW5nZSAqLwogICAgICAg ICAgIGlmKGFjdGlvbk9iai5wYXRoLmluZGV4T2YoJ2lzX3ByaW1hcnlfa2V5JykgPiAtMSkgewog ICAgICAgICAgICAgbGV0IHRhYkNvbFBhdGggPSBfLnNsaWNlKGFjdGlvbk9iai5wYXRoLCAwLCAt MSk7CkBAIC02MzEsNiArNjczLDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVTY2hlbWEg ZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgIH0sewogICAgICAgaWQ6ICd0eXBuYW1lJywgbGFi ZWw6IGdldHRleHQoJ09mIHR5cGUnKSwgdHlwZTogJ3NlbGVjdCcsCiAgICAgICBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICdhZHZhbmNlZCcsIGRlcHM6IFsn Y29sbF9pbmhlcml0cyddLAorICAgICAgdmlzaWJsZTogIXRoaXMuaW5FcmQsCiAgICAgICBkaXNh YmxlZDogKHN0YXRlKT0+ewogICAgICAgICBpZighb2JqLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2so c3RhdGUpICYmIGlzRW1wdHlTdHJpbmcoc3RhdGUuY29sbF9pbmhlcml0cykpIHsKICAgICAgICAg ICByZXR1cm4gZmFsc2U7CkBAIC03NDMsNiArNzg2LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3Mg VGFibGVTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgICAgdHlwZTogJ25lc3RlZC1m aWVsZHNldCcsIGxhYmVsOiBnZXR0ZXh0KCdMaWtlJyksCiAgICAgICBncm91cDogJ2FkdmFuY2Vk JywgbW9kZTogWydjcmVhdGUnXSwKICAgICAgIHNjaGVtYTogbmV3IExpa2VTY2hlbWEodGhpcy5m aWVsZE9wdGlvbnMubGlrZV9yZWxhdGlvbiksCisgICAgICB2aXNpYmxlOiAhdGhpcy5pbkVyZCwK ICAgICB9LHsKICAgICAgIGlkOiAncGFydGl0aW9uX3R5cGUnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0 aXRpb24gVHlwZScpLAogICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnc2VsZWN0JywgY29u dHJvbFByb3BzOiB7YWxsb3dDbGVhcjogZmFsc2V9LApAQCAtNzc0LDYgKzgxOCw3IEBAIGV4cG9y dCBkZWZhdWx0IGNsYXNzIFRhYmxlU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICAg IGlkOiAncGFydGl0aW9uX2tleXMnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb24gS2V5cycpLAog ICAgICAgc2NoZW1hOiBvYmoucGFydGl0aW9uS2V5c09iaiwKICAgICAgIGVkaXRhYmxlOiB0cnVl LCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAgICBjb2x1bW5zOiBbJ2tleV90eXBlJywgJ3B0X2Nv bHVtbicsICdleHByZXNzaW9uJ10uY29uY2F0KCF0aGlzLmluRXJkID8gWydjb2xsYXRpb25hbWUn LCAnb3BfY2xhc3MnXSA6IFtdKSwKICAgICAgIGdyb3VwOiAncGFydGl0aW9uJywgbW9kZTogWydj cmVhdGUnXSwKICAgICAgIGRlcHM6IFsnaXNfcGFydGl0aW9uZWQnLCAncGFydGl0aW9uX3R5cGUn LCAndHlwbmFtZSddLAogICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwKQEAg LTg4NSwyOCArOTMwLDMyIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlU2NoZW1hIGV4dGVu ZHMgQmFzZVVJU2NoZW1hIHsKICAgICAgICAgJzwvbGk+PC91bD4nLAogICAgICAgXS5qb2luKCcn KSwKICAgICAgIG1pbl92ZXJzaW9uOiAxMDAwMDAsCi0gICAgfSwKLSAgICB7CisgICAgfSx7Cisg ICAgICB0eXBlOiAnZ3JvdXAnLCBpZDogJ3BhcmFtZXRlcnMnLCBsYWJlbDogZ2V0dGV4dCgnUGFy YW1ldGVycycpLAorICAgICAgdmlzaWJsZTogIXRoaXMuaW5FcmQsCisgICAgfSx7CiAgICAgICAv LyBIZXJlIC0gd2Ugd2lsbCBjcmVhdGUgdGFiIGNvbnRyb2wgZm9yIHN0b3JhZ2UgcGFyYW1ldGVy cwogICAgICAgLy8gKGF1dG8gdmFjdXVtKS4KLSAgICAgIHR5cGU6ICduZXN0ZWQtdGFiJywgZ3Jv dXA6IGdldHRleHQoJ1BhcmFtZXRlcnMnKSwKKyAgICAgIHR5cGU6ICduZXN0ZWQtdGFiJywgZ3Jv dXA6ICdwYXJhbWV0ZXJzJywKICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwgZGVwczog Wydpc19wYXJ0aXRpb25lZCddLAotICAgICAgc2NoZW1hOiB0aGlzLnZhY3V1bVNldHRpbmdzU2No ZW1hLAorICAgICAgc2NoZW1hOiB0aGlzLnZhY3V1bVNldHRpbmdzU2NoZW1hLCB2aXNpYmxlOiAh dGhpcy5pbkVyZCwKKyAgICB9LHsKKyAgICAgIGlkOiAnc2VjdXJpdHlfZ3JvdXAnLCB0eXBlOiAn Z3JvdXAnLCBsYWJlbDogZ2V0dGV4dCgnU2VjdXJpdHknKSwgdmlzaWJsZTogIXRoaXMuaW5FcmQs CiAgICAgfSwKICAgICB7CiAgICAgICBpZDogJ3JlbGFjbF9zdHInLCBsYWJlbDogZ2V0dGV4dCgn UHJpdmlsZWdlcycpLCBkaXNhYmxlZDogdGhpcy5pbkNhdGFsb2csCi0gICAgICB0eXBlOiAndGV4 dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogZ2V0dGV4dCgnU2VjdXJpdHknKSwKKyAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3VwOiAnc2VjdXJpdHlf Z3JvdXAnLAogICAgIH0sCiAgICAgewogICAgICAgaWQ6ICdyZWxhY2wnLCBsYWJlbDogZ2V0dGV4 dCgnUHJpdmlsZWdlcycpLCB0eXBlOiAnY29sbGVjdGlvbicsCi0gICAgICBncm91cDogZ2V0dGV4 dCgnU2VjdXJpdHknKSwgc2NoZW1hOiB0aGlzLmdldFByaXZpbGVnZVJvbGVTY2hlbWEoWydhJywn cicsJ3cnLCdkJywnRCcsJ3gnLCd0J10pLAorICAgICAgZ3JvdXA6ICdzZWN1cml0eV9ncm91cCcs IHNjaGVtYTogdGhpcy5nZXRQcml2aWxlZ2VSb2xlU2NoZW1hKFsnYScsJ3InLCd3JywnZCcsJ0Qn LCd4JywndCddKSwKICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwgY2FuQWRkOiB0cnVl LCBjYW5EZWxldGU6IHRydWUsCiAgICAgICB1bmlxdWVDb2wgOiBbJ2dyYW50ZWUnXSwKICAgICB9 LHsKICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6IGdldHRleHQoJ1NlY3VyaXR5IGxhYmVs cycpLCBjYW5FZGl0OiBmYWxzZSwKICAgICAgIHNjaGVtYTogbmV3IFNlY0xhYmVsU2NoZW1hKCks IGVkaXRhYmxlOiBmYWxzZSwgY2FuQWRkOiB0cnVlLAogICAgICAgdHlwZTogJ2NvbGxlY3Rpb24n LCBtaW5fdmVyc2lvbjogOTAxMDAsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKLSAgICAgIGdy b3VwOiBnZXR0ZXh0KCdTZWN1cml0eScpLCBjYW5EZWxldGU6IHRydWUsIGNvbnRyb2w6ICd1bmlx dWUtY29sLWNvbGxlY3Rpb24nLAorICAgICAgZ3JvdXA6ICdzZWN1cml0eV9ncm91cCcsIGNhbkRl bGV0ZTogdHJ1ZSwgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCiAgICAgfSx7CiAg ICAgICBpZDogJ3ZhY3V1bV9zZXR0aW5nc19zdHInLCBsYWJlbDogZ2V0dGV4dCgnU3RvcmFnZSBz ZXR0aW5ncycpLAogICAgICAgdHlwZTogJ211bHRpbGluZScsIGdyb3VwOiAnYWR2YW5jZWQnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGlscy5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy91dGlscy5weQppbmRleCBlMDA5OTM5NmUuLjlmMzcwYTk1MSAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy91dGlscy5weQpAQCAtMTEyNSw3ICsx MTI1LDcgQEAgY2xhc3MgQmFzZVRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIEJhc2VQYXJ0aXRp b25UYWJsZSwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBlbGlmIHBhcnRfdHlwZSBpbiBkYXRh IGFuZCBkYXRhW3BhcnRfdHlwZV0gPT0gJ2hhc2gnOgogICAgICAgICAgICAgcGFydGl0aW9uX3Nj aGVtZSA9ICdIQVNIICgnCiAKLSAgICAgICAgZm9yIHJvdyBpbiBkYXRhW3BhcnRfa2V5c106Cisg ICAgICAgIGZvciByb3cgaW4gZGF0YS5nZXQocGFydF9rZXlzLCBbXSk6CiAgICAgICAgICAgICBp ZiByb3dbJ2tleV90eXBlJ10gPT0gJ2NvbHVtbic6CiAgICAgICAgICAgICAgICAgcGFydGl0aW9u X3NjaGVtZSArPSBzZWxmLnF0SWRlbnQoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29ubiwg cm93WydwdF9jb2x1bW4nXSkKQEAgLTExNDEsNyArMTE0MSw3IEBAIGNsYXNzIEJhc2VUYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBCYXNlUGFydGl0aW9uVGFibGUsIFZhY3V1bVNldHRpbmdzKToK ICAgICAgICAgICAgICAgICBwYXJ0aXRpb25fc2NoZW1lICs9IHJvd1snZXhwcmVzc2lvbiddICsg JywgJwogCiAgICAgICAgICMgUmVtb3ZlIGV4dHJhIHNwYWNlIGFuZCBjb21tYQotICAgICAgICBp ZiBsZW4oZGF0YVtwYXJ0X2tleXNdKSA+IDA6CisgICAgICAgIGlmIGxlbihkYXRhLmdldChwYXJ0 X2tleXMsIFtdKSkgPiAwOgogICAgICAgICAgICAgcGFydGl0aW9uX3NjaGVtZSA9IHBhcnRpdGlv bl9zY2hlbWVbOi0yXQogICAgICAgICBwYXJ0aXRpb25fc2NoZW1lICs9ICcpJwogCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3ggYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3gKaW5kZXggMTczNzEyMDJl Li43NGZhMmJiMmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3 L0Zvcm1WaWV3LmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9Gb3Jt Vmlldy5qc3gKQEAgLTIwNSw2ICsyMDUsMTMgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9y bVZpZXcoewogCiAgICAgaWYobW9kZVN1cHBvcnRlZCkgewogICAgICAgbGV0IHtncm91cCwgQ3Vz dG9tQ29udHJvbH0gPSBmaWVsZDsKKyAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdncm91cCcpIHsK KyAgICAgICAgZ3JvdXBMYWJlbHNbZmllbGQuaWRdID0gZmllbGQubGFiZWw7CisgICAgICAgIGlm KCF2aXNpYmxlKSB7CisgICAgICAgICAgc2NoZW1hUmVmLmN1cnJlbnQuZmlsdGVyR3JvdXBzLnB1 c2goZmllbGQubGFiZWwpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KICAg ICAgIGdyb3VwID0gZ3JvdXBMYWJlbHNbZ3JvdXBdIHx8IGdyb3VwIHx8IGRlZmF1bHRUYWI7CiAK ICAgICAgIGlmKCF0YWJzW2dyb3VwXSkgdGFic1tncm91cF0gPSBbXTsKQEAgLTI2MSwxMSArMjY4 LDYgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9ybVZpZXcoewogICAgICAgICB9IGVsc2Ug ewogICAgICAgICAgIHRhYnNbZ3JvdXBdLnB1c2goPERhdGFHcmlkVmlldyB7Li4ucHJvcHN9Lz4p OwogICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYoZmllbGQudHlwZSA9PT0gJ2dyb3VwJykgewot ICAgICAgICBncm91cExhYmVsc1tmaWVsZC5pZF0gPSBmaWVsZC5sYWJlbDsKLSAgICAgICAgaWYo IXZpc2libGUpIHsKLSAgICAgICAgICBzY2hlbWFSZWYuY3VycmVudC5maWx0ZXJHcm91cHMucHVz aChmaWVsZC5sYWJlbCk7Ci0gICAgICAgIH0KICAgICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIEl0 cyBhIGZvcm0gY29udHJvbCAqLwogICAgICAgICBjb25zdCBoYXNFcnJvciA9IF8uaXNFcXVhbChh Y2Nlc3NQYXRoLmNvbmNhdChmaWVsZC5pZCksIHN0YXRlVXRpbHMuZm9ybUVyci5uYW1lKTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4LmpzeCBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4LmpzeAppbmRleCAwZjMwNzNlOWUu LmQ3OGJhN2E3YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1NjaGVtYVZpZXcv aW5kZXguanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4Lmpz eApAQCAtODksNyArODksOCBAQCBmdW5jdGlvbiBpc1ZhbHVlRXF1YWwodmFsMSwgdmFsMikgewog ICAvKiBJZiB0aGUgb3JpZyB2YWx1ZSBhbmQgbmV3IHZhbHVlIGFyZSBvZiBkaWZmZXJlbnQgZGF0 YXR5cGUgYnV0IG9mIHNhbWUgdmFsdWUobnVtZXJpYykgIm5vIGNoYW5nZSIgKi8KICAgLyogSWYg dGhlIG9yaWcgdmFsdWUgaXMgdW5kZWZpbmVkIG9yIG51bGwgYW5kIG5ldyB2YWx1ZSBpcyBib29s ZWFuIGZhbHNlICJubyBjaGFuZ2UiICovCiAgIGlmICgoXy5pc0VxdWFsKHZhbDEsIHZhbDIpCi0g ICAgfHwgKCh2YWwxID09PSBudWxsIHx8IF8uaXNVbmRlZmluZWQodmFsMSkpICYmICF2YWwyKQor ICAgIHx8ICgodmFsMSA9PT0gbnVsbCB8fCBfLmlzVW5kZWZpbmVkKHZhbDEpKSAmJiB2YWwyID09 PSAnJykKKyAgICB8fCAoKHZhbDEgPT09IG51bGwgfHwgXy5pc1VuZGVmaW5lZCh2YWwxKSkgJiYg dHlwZW9mKHZhbDIpID09PSAnYm9vbGVhbicgJiYgIXZhbDIpCiAgICAgfHwgKGF0dHJEZWZpbmVk ID8gXy5pc0VxdWFsKHZhbDEudG9TdHJpbmcoKSwgdmFsMi50b1N0cmluZygpKSA6IGZhbHNlCiAg ICAgKSkpIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk4LDIyICs5OSw2IEBAIGZ1bmN0aW9uIGlz VmFsdWVFcXVhbCh2YWwxLCB2YWwyKSB7CiAgIH0KIH0KIAotZnVuY3Rpb24gb2JqZWN0Q29tcGFy YXRvcihvYmoxLCBvYmoyKSB7Ci0gIGZvcihjb25zdCBrZXkgb2YgXy51bmlvbihPYmplY3Qua2V5 cyhvYmoxKSwgT2JqZWN0LmtleXMob2JqMikpKSB7Ci0gICAgbGV0IGVxdWFsID0gaXNWYWx1ZUVx dWFsKG9iajFba2V5XSwgb2JqMltrZXldKTsKLSAgICBpZihlcXVhbCkgewotICAgICAgY29udGlu dWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0 dXJuIHRydWU7Ci19Ci0KLWNvbnN0IGRpZmZBcnJheU9wdGlvbnMgPSB7Ci0gIGNvbXBhcmVGdW5j dGlvbjogb2JqZWN0Q29tcGFyYXRvciwKLX07Ci0KIGZ1bmN0aW9uIGdldENoYW5nZWREYXRhKHRv cFNjaGVtYSwgdmlld0hlbHBlclByb3BzLCBzZXNzRGF0YSwgc3RyaW5naWZ5PWZhbHNlLCBpbmNs dWRlU2tpcENoYW5nZT10cnVlKSB7CiAgIGxldCBjaGFuZ2VkRGF0YSA9IHt9OwogICBsZXQgaXNF ZGl0ID0gdmlld0hlbHBlclByb3BzLm1vZGUgPT09ICdlZGl0JzsKQEAgLTE3MywxMyArMTU4LDEz IEBAIGZ1bmN0aW9uIGdldENoYW5nZWREYXRhKHRvcFNjaGVtYSwgdmlld0hlbHBlclByb3BzLCBz ZXNzRGF0YSwgc3RyaW5naWZ5PWZhbHNlLCBpCiAgICAgICAgICAgICApOwogICAgICAgICAgICAg Y2hhbmdlID0ge307CiAgICAgICAgICAgICBpZihjaGFuZ2VEaWZmLmFkZGVkLmxlbmd0aCA+IDAp IHsKLSAgICAgICAgICAgICAgY2hhbmdlWydhZGRlZCddID0gY2xlYW5DaWQoY2hhbmdlRGlmZi5h ZGRlZCk7CisgICAgICAgICAgICAgIGNoYW5nZVsnYWRkZWQnXSA9IGNsZWFuQ2lkKGNoYW5nZURp ZmYuYWRkZWQsIHZpZXdIZWxwZXJQcm9wcy5rZWVwQ2lkKTsKICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIGlmKGNoYW5nZURpZmYucmVtb3ZlZC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAg IGNoYW5nZVsnZGVsZXRlZCddID0gY2xlYW5DaWQoY2hhbmdlRGlmZi5yZW1vdmVkLm1hcCgocm93 KT0+ewogICAgICAgICAgICAgICAgIC8qIERlbGV0ZWQgcmVjb3JkcyBzaG91bGQgYmUgb3JpZ2lu YWwsIG5vdCB0aGUgY2hhbmdlZCAqLwogICAgICAgICAgICAgICAgIHJldHVybiBfLmZpbmQoXy5n ZXQob3JpZ1ZhbCwgZmllbGQuaWQpLCBbJ2NpZCcsIHJvdy5jaWRdKTsKLSAgICAgICAgICAgICAg fSkpOworICAgICAgICAgICAgICB9KSwgdmlld0hlbHBlclByb3BzLmtlZXBDaWQpOwogICAgICAg ICAgICAgfQogICAgICAgICAgICAgaWYoY2hhbmdlRGlmZi51cGRhdGVkLmxlbmd0aCA+IDApIHsK ICAgICAgICAgICAgICAgLyogVGhlcmUgaXMgY2hhbmdlIGluIGNvbGxlY3Rpb24uIFBhcnNlIGZ1 cnRoZXIgdG8gZ28gZGVlcCAqLwpAQCAtMjA0LDcgKzE4OSw3IEBAIGZ1bmN0aW9uIGdldENoYW5n ZWREYXRhKHRvcFNjaGVtYSwgdmlld0hlbHBlclByb3BzLCBzZXNzRGF0YSwgc3RyaW5naWZ5PWZh bHNlLCBpCiAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgY2hhbmdlWydjaGFuZ2VkJ10gPSBjbGVhbkNpZChjaGFu Z2VbJ2NoYW5nZWQnXSk7CisgICAgICAgICAgICAgIGNoYW5nZVsnY2hhbmdlZCddID0gY2xlYW5D aWQoY2hhbmdlWydjaGFuZ2VkJ10sIHZpZXdIZWxwZXJQcm9wcy5rZWVwQ2lkKTsKICAgICAgICAg ICAgIH0KICAgICAgICAgICAgIGlmKE9iamVjdC5rZXlzKGNoYW5nZSkubGVuZ3RoID4gMCkgewog ICAgICAgICAgICAgICBhdHRyQ2hhbmdlZChmaWVsZC5pZCwgY2hhbmdlLCB0cnVlKTsKQEAgLTIx NCwyMSArMTk5LDE4IEBAIGZ1bmN0aW9uIGdldENoYW5nZWREYXRhKHRvcFNjaGVtYSwgdmlld0hl bHBlclByb3BzLCBzZXNzRGF0YSwgc3RyaW5naWZ5PWZhbHNlLCBpCiAgICAgICAgICAgfQogICAg ICAgICB9IGVsc2UgaWYoIWlzRWRpdCkgewogICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdj b2xsZWN0aW9uJykgewotICAgICAgICAgICAgLyogRm9yIGZpeGVkIHJvd3MsIGNoZWNrIHRoZSB1 cGRhdGVkIGNoYW5nZXMgKi8KLSAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKGZpZWxkLmZp eGVkUm93cykpIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhbmdlRGlmZiA9IGRpZmZBcnJheSgK LSAgICAgICAgICAgICAgICBfLmdldChvcmlnVmFsLCBmaWVsZC5pZCkgfHwgW10sCi0gICAgICAg ICAgICAgICAgXy5nZXQoc2Vzc1ZhbCwgZmllbGQuaWQpIHx8IFtdLAotICAgICAgICAgICAgICAg ICdjaWQnLAotICAgICAgICAgICAgICAgIGRpZmZBcnJheU9wdGlvbnMKLSAgICAgICAgICAgICAg KTsKLSAgICAgICAgICAgICAgaWYoY2hhbmdlRGlmZi51cGRhdGVkLmxlbmd0aCA+IDApIHsKLSAg ICAgICAgICAgICAgICBsZXQgY2hhbmdlID0gY2xlYW5DaWQoXy5nZXQoc2Vzc1ZhbCwgZmllbGQu aWQpKTsKLSAgICAgICAgICAgICAgICBhdHRyQ2hhbmdlZChmaWVsZC5pZCwgY2hhbmdlLCB0cnVl KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg bGV0IGNoYW5nZSA9IGNsZWFuQ2lkKF8uZ2V0KHNlc3NWYWwsIGZpZWxkLmlkKSk7Ci0gICAgICAg ICAgICAgIGF0dHJDaGFuZ2VkKGZpZWxkLmlkLCBjaGFuZ2UpOworICAgICAgICAgICAgY29uc3Qg Y2hhbmdlRGlmZiA9IGRpZmZBcnJheSgKKyAgICAgICAgICAgICAgXy5nZXQob3JpZ1ZhbCwgZmll bGQuaWQpIHx8IFtdLAorICAgICAgICAgICAgICBfLmdldChzZXNzVmFsLCBmaWVsZC5pZCkgfHwg W10sCisgICAgICAgICAgICAgICdjaWQnLAorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIC8q IEZvciBmaXhlZCByb3dzLCBjaGVjayBvbmx5IHRoZSB1cGRhdGVkIGNoYW5nZXMgKi8KKyAgICAg ICAgICAgIGlmKCghXy5pc1VuZGVmaW5lZChmaWVsZC5maXhlZFJvd3MpICYmIGNoYW5nZURpZmYu dXBkYXRlZC5sZW5ndGggPiAwKQorICAgICAgICAgICAgICB8fCAoXy5pc1VuZGVmaW5lZChmaWVs ZC5maXhlZFJvd3MpICYmICgKKyAgICAgICAgICAgICAgICBjaGFuZ2VEaWZmLmFkZGVkLmxlbmd0 aCA+IDAgfHwgY2hhbmdlRGlmZi5yZW1vdmVkLmxlbmd0aCA+IDAgfHwgY2hhbmdlRGlmZi51cGRh dGVkLmxlbmd0aCA+IDAKKyAgICAgICAgICAgICAgKSkpIHsKKyAgICAgICAgICAgICAgbGV0IGNo YW5nZSA9IGNsZWFuQ2lkKF8uZ2V0KHNlc3NWYWwsIGZpZWxkLmlkKSwgdmlld0hlbHBlclByb3Bz LmtlZXBDaWQpOworICAgICAgICAgICAgICBhdHRyQ2hhbmdlZChmaWVsZC5pZCwgY2hhbmdlLCB0 cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXR0 ckNoYW5nZWQoZmllbGQuaWQpOwpAQCAtNDA5LDE4ICszOTEsMTggQEAgY29uc3Qgc2Vzc0RhdGFS ZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pPT57CiB9OwogCiAvKiBSZW1vdmUgY2lkIGtleSBhZGRl ZCBieSBwcmVwYXJlRGF0YSAqLwotZnVuY3Rpb24gY2xlYW5DaWQoY29sbCkgewotICBpZighY29s bCkgeworZnVuY3Rpb24gY2xlYW5DaWQoY29sbCwga2VlcENpZD1mYWxzZSkgeworICBpZighY29s bCB8fCBrZWVwQ2lkKSB7CiAgICAgcmV0dXJuIGNvbGw7CiAgIH0KICAgcmV0dXJuIGNvbGwubWFw KChvKT0+Xy5waWNrQnkobywgKHYsIGspPT5rIT0nY2lkJykpOwogfQogCi1mdW5jdGlvbiBwcmVw YXJlRGF0YSh2YWwpIHsKK2Z1bmN0aW9uIHByZXBhcmVEYXRhKHZhbCwgY3JlYXRlTW9kZT1mYWxz ZSkgewogICBpZihfLmlzUGxhaW5PYmplY3QodmFsKSkgewogICAgIF8uZm9ySW4odmFsLCBmdW5j dGlvbiAoZWwpIHsKICAgICAgIGlmIChfLmlzT2JqZWN0KGVsKSkgewotICAgICAgICBwcmVwYXJl RGF0YShlbCk7CisgICAgICAgIHByZXBhcmVEYXRhKGVsLCBjcmVhdGVNb2RlKTsKICAgICAgIH0K ICAgICB9KTsKICAgfSBlbHNlIGlmKF8uaXNBcnJheSh2YWwpKSB7CkBAIC00MzIsOCArNDE0LDgg QEAgZnVuY3Rpb24gcHJlcGFyZURhdGEodmFsKSB7CiAgICAgICAgIFNvIHRvIGRlY2lkZSB3aGV0 aGVyIHJvdyBpcyBuZXcgb3Igbm90IHNldCwgdGhlIGNpZCBzdGFydHMgd2l0aAogICAgICAgICBu biAobm90IG5ldykgZm9yIGV4aXN0aW5nIHJvd3MuIE5ld2x5IGFkZGVkIHdpbGwgc3RhcnQgd2l0 aCAnYycgKGNyZWF0ZWQpCiAgICAgICAgICovCi0gICAgICAgIGVsWydjaWQnXSA9IF8udW5pcXVl SWQoJ25uJyk7Ci0gICAgICAgIHByZXBhcmVEYXRhKGVsKTsKKyAgICAgICAgZWxbJ2NpZCddID0g Y3JlYXRlTW9kZSA/IF8udW5pcXVlSWQoJ2MnKSA6IF8udW5pcXVlSWQoJ25uJyk7CisgICAgICAg IHByZXBhcmVEYXRhKGVsLCBjcmVhdGVNb2RlKTsKICAgICAgIH0KICAgICB9KTsKICAgfQpAQCAt NTMyLDcgKzUxNCw3IEBAIGZ1bmN0aW9uIFNjaGVtYURpYWxvZ1ZpZXcoewogICAgICAgfSk7CiAg ICAgfSBlbHNlIHsKICAgICAgIC8qIFVzZSB0aGUgZGVmYXVsdHMgYXMgdGhlIGluaXRpdGFsIGRh dGEgKi8KLSAgICAgIHNjaGVtYS5vcmlnRGF0YSA9IHByZXBhcmVEYXRhKHNjaGVtYS5kZWZhdWx0 cyk7CisgICAgICBzY2hlbWEub3JpZ0RhdGEgPSBwcmVwYXJlRGF0YShzY2hlbWEuZGVmYXVsdHMs IHRydWUpOwogICAgICAgc2NoZW1hLmluaXRpYWxpc2Uoc2NoZW1hLm9yaWdEYXRhKTsKICAgICAg IHNlc3NEaXNwYXRjaCh7CiAgICAgICAgIHR5cGU6IFNDSEVNQV9TVEFURV9BQ1RJT05TLklOSVQs CkBAIC02MjQsNiArNjA2LDcgQEAgZnVuY3Rpb24gU2NoZW1hRGlhbG9nVmlldyh7CiAgICAgICAg ICAgKTsKICAgICAgICAgfQogICAgICAgfSkuY2F0Y2goKGVycik9PnsKKyAgICAgICAgY29uc29s ZS5lcnJvcihlcnIpOwogICAgICAgICBzZXRGb3JtRXJyKHsKICAgICAgICAgICBuYW1lOiAnYXBp ZXJyb3InLAogICAgICAgICAgIG1lc3NhZ2U6IHBhcnNlQXBpRXJyb3IoZXJyKSwKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9UaGVtZS9pbmRleC5qc3ggYi93ZWIvcGdhZG1pbi9z dGF0aWMvanMvVGhlbWUvaW5kZXguanN4CmluZGV4IGIyNzY5Mjg3NS4uM2EwMTE4ODAyIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvaW5kZXguanN4CisrKyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9UaGVtZS9pbmRleC5qc3gKQEAgLTEwNiwyMyArMTA2LDYgQEAgYmFz aWNTZXR0aW5ncyA9IGNyZWF0ZU11aVRoZW1lKGJhc2ljU2V0dGluZ3MsIHsKICAgICAgICAgcGFk ZGluZ1JpZ2h0OiBiYXNpY1NldHRpbmdzLnNwYWNpbmcoMS41KSwKICAgICAgIH0KICAgICB9LAot ICAgIE11aVRvZ2dsZUJ1dHRvbjogewotICAgICAgcm9vdDogewotICAgICAgICB0ZXh0VHJhbnNm b3JtOiAnbm9uZSwnLAotICAgICAgICBwYWRkaW5nOiBiYXNpY1NldHRpbmdzLnNwYWNpbmcoMC41 LCAyLjUsIDAuNSwgMC41KSwKLSAgICAgICAgY29sb3I6ICdhYmMnLAotICAgICAgICAnJjpob3Zl cic6ewotICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2FiYycsCi0gICAgICAgIH0sCi0gICAg ICAgICcmJHNlbGVjdGVkJzogewotICAgICAgICAgIGNvbG9yOiAnYWJjJywKLSAgICAgICAgICBi YWNrZ3JvdW5kQ29sb3I6ICdhYmMnLAotICAgICAgICAgICcmOmhvdmVyJzp7Ci0gICAgICAgICAg ICBiYWNrZ3JvdW5kQ29sb3I6ICdhYmMnLAotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg fQotICAgIH0sCiAgICAgTXVpQWNjb3JkaW9uOiB7CiAgICAgICByb290OiB7CiAgICAgICAgIGJv eFNoYWRvdzogJ25vbmUnLApAQCAtMTcyLDYgKzE1NSwxNyBAQCBiYXNpY1NldHRpbmdzID0gY3Jl YXRlTXVpVGhlbWUoYmFzaWNTZXR0aW5ncywgewogICAgICAgYm9keTE6IHsKICAgICAgICAgZm9u dFNpemU6ICcxZW0nLAogICAgICAgfQorICAgIH0sCisgICAgTXVpRGlhbG9nOiB7CisgICAgICBw YXBlcjogeworICAgICAgICBtYXJnaW46IDAsCisgICAgICB9CisgICAgfSwKKyAgICBNdWlUb29s dGlwOiB7CisgICAgICBwb3BwZXI6IHsKKyAgICAgICAgdG9wOiAwLAorICAgICAgICB6SW5kZXg6 IDk5OTksCisgICAgICB9CiAgICAgfQogICB9LAogICB0cmFuc2l0aW9uczogewpAQCAtMzc0LDYg KzM2OCw3IEBAIGZ1bmN0aW9uIGdldEZpbmFsVGhlbWUoYmFzZVRoZW1lKSB7CiAgICAgICB9LAog ICAgICAgTXVpVG9nZ2xlQnV0dG9uOiB7CiAgICAgICAgIHJvb3Q6IHsKKyAgICAgICAgICBwYWRk aW5nOiAnYWJjJywKICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IGJhc2VUaGVtZS5zcGFjaW5nKDIu NSksCiAgICAgICAgICAgcGFkZGluZ0xlZnQ6IGJhc2VUaGVtZS5zcGFjaW5nKDAuNSksCiAgICAg ICAgICAgY29sb3I6ICdhYmMnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3Mv X2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3NzIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2FsZXJ0 aWZ5Lm92ZXJyaWRlcy5zY3NzCmluZGV4IDQwZjZhYzM4My4uZGRhYWVlMThkIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fYWxlcnRpZnkub3ZlcnJpZGVzLnNjc3MKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3NzCkBAIC00Miw3 ICs0Miw3IEBACiAgICAgfQogCiAgICAgJiAuYWpzLWhhbmRsZSB7Ci0gICAgICB6LWluZGV4OiA1 OworICAgICAgei1pbmRleDogMTAyMDsKICAgICB9CiAgIH0KIApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvZXJkL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL19faW5p dF9fLnB5CmluZGV4IDZkMTZjYmQ3OS4uNjk3OGQ1ZGIxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi90b29scy9lcmQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL19faW5p dF9fLnB5CkBAIC01MzIsNiArNTMyLDM1IEBAIGRlZiBwcmVxdWlzaXRlKHRyYW5zX2lkLCBzZ2lk LCBzaWQsIGRpZCk6CiAgICAgKQogCiAKK2RlZiB0cmFuc2xhdGVfZm9yZWlnbl9rZXlzKHRhYl9m a3MsIHRhYl9kYXRhLCBhbGxfbm9kZXMpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2ls bCB0YWtlIHRoZSBmcm9tIHRhYmxlIGZvcmVpZ24ga2V5cyBhbmQgdHJhbnNsYXRlCisgICAgaXQg aW50byBub24gb2lkIGJhc2VkIGZvcm1hdC4gSXQgd2lsbCBhbGxvdyBjcmVhdGluZyBGSyBzcWwg ZXZlbgorICAgIGlmIHRhYmxlIGlzIG5vdCBhbHJlYWR5IGNyZWF0ZWQuCisgICAgOnBhcmFtIHRh Yl9ma3M6IFRhYmxlIGZvcmVpZ24ga2V5c3MKKyAgICA6cGFyYW0gdGFiX2RhdGE6IFRhYmxlIGRh dGEKKyAgICA6cGFyYW0gYWxsX25vZGVzOiBBbGwgdGhlIG5vZGVzIGluZm8gZnJvbSBFUkQKKyAg ICA6cmV0dXJuOiBUcmFuc2xhdGVkIGZvcmVpZ24ga2V5IGRhdGEKKyAgICAiIiIKKyAgICBmb3Ig dGFiX2ZrIGluIHRhYl9ma3M6CisgICAgICAgIGlmICdjb2x1bW5zJyBub3QgaW4gdGFiX2ZrOgor ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcHJpbnQodGFiX2RhdGEpCisgICAgICAgIHJl bW90ZV90YWJsZSA9IGFsbF9ub2Rlc1t0YWJfZmtbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcydd XQorICAgICAgICB0YWJfZmtbJ3NjaGVtYSddID0gdGFiX2RhdGFbJ3NjaGVtYSddCisgICAgICAg IHRhYl9ma1sndGFibGUnXSA9IHRhYl9kYXRhWyduYW1lJ10KKyAgICAgICAgdGFiX2ZrWydyZW1v dGVfc2NoZW1hJ10gPSByZW1vdGVfdGFibGVbJ3NjaGVtYSddCisgICAgICAgIHRhYl9ma1sncmVt b3RlX3RhYmxlJ10gPSByZW1vdGVfdGFibGVbJ25hbWUnXQorCisgICAgICAgIG5ld19jb2x1bW4g PSB7CisgICAgICAgICAgICAnbG9jYWxfY29sdW1uJzogdGFiX2ZrWydjb2x1bW5zJ11bMF1bJ2xv Y2FsX2NvbHVtbiddLAorICAgICAgICAgICAgJ3JlZmVyZW5jZWQnOiB0YWJfZmtbJ2NvbHVtbnMn XVswXVsncmVmZXJlbmNlZCddCisgICAgICAgIH0KKyAgICAgICAgdGFiX2ZrWydjb2x1bW5zJ11b MF0gPSBuZXdfY29sdW1uCisKKyAgICByZXR1cm4gdGFiX2ZrcworCisKIEBibHVlcHJpbnQucm91 dGUoJy9zcWwvPGludDp0cmFuc19pZD4vPGludDpzZ2lkPi88aW50OnNpZD4vPGludDpkaWQ+JywK ICAgICAgICAgICAgICAgICAgbWV0aG9kcz1bIlBPU1QiXSwKICAgICAgICAgICAgICAgICAgZW5k cG9pbnQ9J3NxbCcpCkBAIC01NDIsMTIgKzU3MSwxNiBAQCBkZWYgc3FsKHRyYW5zX2lkLCBzZ2lk LCBzaWQsIGRpZCk6CiAgICAgY29ubiA9IF9nZXRfY29ubmVjdGlvbihzaWQsIGRpZCwgdHJhbnNf aWQpCiAKICAgICBzcWwgPSAnJwotICAgIGZvciB0YWJfa2V5LCB0YWJfZGF0YSBpbiBkYXRhLmdl dCgnbm9kZXMnLCB7fSkuaXRlbXMoKToKKyAgICB0YWJfZm9yZWlnbl9rZXlzID0gW10KKyAgICBh bGxfbm9kZXMgPSBkYXRhLmdldCgnbm9kZXMnLCB7fSkKKyAgICBmb3IgdGFiX2tleSwgdGFiX2Rh dGEgaW4gYWxsX25vZGVzLml0ZW1zKCk6CisgICAgICAgIHRhYl9ma3MgPSB0YWJfZGF0YS5wb3Ao J2ZvcmVpZ25fa2V5JywgW10pCisgICAgICAgIHRhYl9mb3JlaWduX2tleXMuZXh0ZW5kKHRyYW5z bGF0ZV9mb3JlaWduX2tleXModGFiX2ZrcywgdGFiX2RhdGEsIGFsbF9ub2RlcykpCiAgICAgICAg IHNxbCArPSAnXG5cbicgKyBoZWxwZXIuZ2V0X3RhYmxlX3NxbCh0YWJfZGF0YSkKIAotICAgIGZv ciBsaW5rX2tleSwgbGlua19kYXRhIGluIGRhdGEuZ2V0KCdsaW5rcycsIHt9KS5pdGVtcygpOgot ICAgICAgICBsaW5rX3NxbCwgbmFtZSA9IGZrZXlfdXRpbHMuZ2V0X3NxbChjb25uLCBsaW5rX2Rh dGEsIE5vbmUpCi0gICAgICAgIHNxbCArPSAnXG5cbicgKyBsaW5rX3NxbAorICAgIGZvciB0YWJf ZmsgaW4gdGFiX2ZvcmVpZ25fa2V5czoKKyAgICAgICAgZmtfc3FsLCBuYW1lID0gZmtleV91dGls cy5nZXRfc3FsKGNvbm4sIHRhYl9maywgTm9uZSkKKyAgICAgICAgc3FsICs9ICdcblxuJyArIGZr X3NxbAogCiAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgZGF0YT1zcWws CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL0VS RENvcmUuanMgYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL0VSRENv cmUuanMKaW5kZXggMjNiNTkyMTQ5Li5iNjNiMTc4NmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvRVJEQ29yZS5qcworKysgYi93ZWIvcGdhZG1p bi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL0VSRENvcmUuanMKQEAgLTEzLDExICsxMywx NiBAQAogaW1wb3J0IGNyZWF0ZUVuZ2luZSBmcm9tICdAcHJvamVjdHN0b3JtL3JlYWN0LWRpYWdy YW1zJzsKIGltcG9ydCB7RGFncmVFbmdpbmUsIFBhdGhGaW5kaW5nTGlua0ZhY3RvcnksIFBvcnRN b2RlbEFsaWdubWVudH0gZnJvbSAnQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcyc7CiBpbXBv cnQgeyBab29tQ2FudmFzQWN0aW9uIH0gZnJvbSAnQHByb2plY3RzdG9ybS9yZWFjdC1jYW52YXMt Y29yZSc7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOwogCiBpbXBvcnQge1RhYmxlTm9kZUZhY3Rv cnksIFRhYmxlTm9kZU1vZGVsIH0gZnJvbSAnLi9ub2Rlcy9UYWJsZU5vZGUnOwogaW1wb3J0IHtP bmVUb01hbnlMaW5rRmFjdG9yeSwgT25lVG9NYW55TGlua01vZGVsIH0gZnJvbSAnLi9saW5rcy9P bmVUb01hbnlMaW5rJzsKIGltcG9ydCB7IE9uZVRvTWFueVBvcnRGYWN0b3J5IH0gZnJvbSAnLi9w b3J0cy9PbmVUb01hbnlQb3J0JzsKIGltcG9ydCBFUkRNb2RlbCBmcm9tICcuL0VSRE1vZGVsJzsK K2ltcG9ydCBGb3JlaWduS2V5U2NoZW1hIGZyb20gJy4uLy4uLy4uLy4uLy4uL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9m b3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkudWknOworaW1wb3J0IGRpZmZBcnJheSBm cm9tICdkaWZmLWFycmF5cy1vZi1vYmplY3RzJzsKK2ltcG9ydCBUYWJsZVNjaGVtYSBmcm9tICcu Li8uLi8uLi8uLi8uLi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLnVpJzsKK2ltcG9ydCBDb2x1bW5TY2hlbWEgZnJv bSAnLi4vLi4vLi4vLi4vLi4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbHVtbnMvc3RhdGljL2pzL2NvbHVtbi51aSc7CiAKIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEVSRENvcmUgewogICBjb25zdHJ1Y3RvcigpIHsKQEAgLTY2LDggKzcxLDgg QEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgRVJEQ29yZSB7CiAgICAgICAgICAgZWxzZSBpZihlLmZ1 bmN0aW9uID09PSAnc2hvd05vdGUnKSB7CiAgICAgICAgICAgICB0aGlzLmZpcmVFdmVudCh7bm9k ZTogZS5lbnRpdHl9LCAnc2hvd05vdGUnLCB0cnVlKTsKICAgICAgICAgICB9Ci0gICAgICAgICAg ZWxzZSBpZihlLmZ1bmN0aW9uID09PSAnZWRpdE5vZGUnKSB7Ci0gICAgICAgICAgICB0aGlzLmZp cmVFdmVudCh7bm9kZTogZS5lbnRpdHl9LCAnZWRpdE5vZGUnLCB0cnVlKTsKKyAgICAgICAgICBl bHNlIGlmKGUuZnVuY3Rpb24gPT09ICdlZGl0VGFibGUnKSB7CisgICAgICAgICAgICB0aGlzLmZp cmVFdmVudCh7bm9kZTogZS5lbnRpdHl9LCAnZWRpdFRhYmxlJywgdHJ1ZSk7CiAgICAgICAgICAg fQogICAgICAgICAgIGVsc2UgaWYoZS5mdW5jdGlvbiA9PT0gJ25vZGVVcGRhdGVkJykgewogICAg ICAgICAgICAgdGhpcy5maXJlRXZlbnQoe30sICdub2Rlc1VwZGF0ZWQnLCB0cnVlKTsKQEAgLTIz Miw2ICsyMzcsMTg4IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEVSRENvcmUgewogICAgIHJldHVy biBuZXdMaW5rOwogICB9CiAKKyAgcmVtb3ZlUG9ydExpbmtzKHBvcnQpIHsKKyAgICBsZXQgbGlu a3MgPSBwb3J0LmdldExpbmtzKCk7CisgICAgT2JqZWN0LnZhbHVlcyhsaW5rcykuZm9yRWFjaCgo bGluayk9PnsKKyAgICAgIGxpbmsuZ2V0VGFyZ2V0UG9ydCgpLnJlbW92ZSgpOworICAgICAgbGlu ay5nZXRTb3VyY2VQb3J0KCkucmVtb3ZlKCk7CisgICAgICBsaW5rLnNldFNlbGVjdGVkKGZhbHNl KTsKKyAgICAgIGxpbmsucmVtb3ZlKCk7CisgICAgfSk7CisgIH0KKworICBzeW5jVGFibGVMaW5r cyh0YWJsZU5vZGUsIG9sZFRhYmxlRGF0YSkgeworICAgIGxldCB0YWJsZURhdGEgPSB0YWJsZU5v ZGUuZ2V0RGF0YSgpOworICAgIGxldCB0YWJsZU5vZGVzRGljdCA9IHRoaXMuZ2V0TW9kZWwoKS5n ZXROb2Rlc0RpY3QoKTsKKworICAgIGNvbnN0IGFkZExpbmsgPSAodGhlRmspPT57CisgICAgICBs ZXQgbmV3RGF0YSA9IHsKKyAgICAgICAgbG9jYWxfdGFibGVfdWlkOiB0YWJsZU5vZGUuZ2V0SUQo KSwKKyAgICAgICAgbG9jYWxfY29sdW1uX2F0dG51bTogdW5kZWZpbmVkLAorICAgICAgICByZWZl cmVuY2VkX3RhYmxlX3VpZDogdGhlRmsucmVmZXJlbmNlcywKKyAgICAgICAgcmVmZXJlbmNlZF9j b2x1bW5fYXR0bnVtOiB1bmRlZmluZWQsCisgICAgICB9OworICAgICAgbGV0IHNvdXJjZU5vZGUg PSB0YWJsZU5vZGVzRGljdFtuZXdEYXRhLnJlZmVyZW5jZWRfdGFibGVfdWlkXTsKKworICAgICAg bmV3RGF0YS5sb2NhbF9jb2x1bW5fYXR0bnVtID0gXy5maW5kKHRhYmxlTm9kZS5nZXRDb2x1bW5z KCksIChjb2wpPT5jb2wubmFtZT09dGhlRmsubG9jYWxfY29sdW1uKS5hdHRudW07CisgICAgICBu ZXdEYXRhLnJlZmVyZW5jZWRfY29sdW1uX2F0dG51bSA9IF8uZmluZChzb3VyY2VOb2RlLmdldENv bHVtbnMoKSwgKGNvbCk9PmNvbC5uYW1lPT10aGVGay5yZWZlcmVuY2VkKS5hdHRudW07CisKKyAg ICAgIHRoaXMuYWRkTGluayhuZXdEYXRhLCAnb25ldG9tYW55Jyk7CisgICAgfTsKKworICAgIGNv bnN0IHJlbW92ZUxpbmsgPSAodGhlRmspPT57CisgICAgICBsZXQgYXR0bnVtID0gXy5maW5kKHRh YmxlTm9kZS5nZXRDb2x1bW5zKCksIChjb2wpPT5jb2wubmFtZT09dGhlRmsubG9jYWxfY29sdW1u KS5hdHRudW07CisgICAgICBsZXQgZXhpc3RQb3J0ID0gdGFibGVOb2RlLmdldFBvcnQodGFibGVO b2RlLmdldFBvcnROYW1lKGF0dG51bSkpOworICAgICAgaWYoZXhpc3RQb3J0ICYmIGV4aXN0UG9y dC5nZXRTdWJ0eXBlKCkgPT0gJ21hbnknKSB7CisgICAgICAgIGV4aXN0UG9ydC5yZW1vdmVBbGxM aW5rcygpOworICAgICAgICB0YWJsZU5vZGUucmVtb3ZlUG9ydChleGlzdFBvcnQpOworICAgICAg fQorICAgIH07CisKKyAgICBjb25zdCBjaGFuZ2VEaWZmID0gZGlmZkFycmF5KAorICAgICAgb2xk VGFibGVEYXRhPy5mb3JlaWduX2tleSB8fCBbXSwKKyAgICAgIHRhYmxlRGF0YT8uZm9yZWlnbl9r ZXkgfHwgW10sCisgICAgICAnY2lkJworICAgICk7CisKKyAgICBjaGFuZ2VEaWZmLmFkZGVkLmZv ckVhY2goKHRoZUZrKT0+eworICAgICAgYWRkTGluayh0aGVGay5jb2x1bW5zWzBdKTsKKyAgICB9 KTsKKyAgICBjaGFuZ2VEaWZmLnJlbW92ZWQuZm9yRWFjaCgodGhlRmspPT57CisgICAgICByZW1v dmVMaW5rKHRoZUZrLmNvbHVtbnNbMF0pOworICAgIH0pOworCisgICAgaWYoY2hhbmdlRGlmZi51 cGRhdGVkLmxlbmd0aCA+IDApIHsKKyAgICAgIGZvcihjb25zdCBjaGFuZ2VkUm93IG9mIGNoYW5n ZURpZmYudXBkYXRlZCkgeworICAgICAgICBsZXQgcm93SW5keCA9IF8uZmluZEluZGV4KHRhYmxl RGF0YS5mb3JlaWduX2tleSwgKGYpPT5mLmNpZD09Y2hhbmdlZFJvdy5jaWQpOworICAgICAgICBj b25zdCBjaGFuZ2VEaWZmQ29scyA9IGRpZmZBcnJheSgKKyAgICAgICAgICBvbGRUYWJsZURhdGEu Zm9yZWlnbl9rZXlbcm93SW5keF0uY29sdW1ucywKKyAgICAgICAgICB0YWJsZURhdGEuZm9yZWln bl9rZXlbcm93SW5keF0uY29sdW1ucywKKyAgICAgICAgICAnY2lkJworICAgICAgICApOworICAg ICAgICBpZihjaGFuZ2VEaWZmQ29scy5yZW1vdmVkLmxlbmd0aCA+IDAgfHwgY2hhbmdlRGlmZkNv bHMuYWRkZWQubGVuZ3RoID4gMCkgeworICAgICAgICAgIHJlbW92ZUxpbmsoY2hhbmdlRGlmZkNv bHMucmVtb3ZlZFswXSk7CisgICAgICAgICAgYWRkTGluayhjaGFuZ2VEaWZmQ29scy5hZGRlZFsw XSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICBhZGRPbmVUb01hbnlMaW5r KG9uZXRvbWFueURhdGEpIHsKKyAgICBsZXQgbmV3RmsgPSBuZXcgRm9yZWlnbktleVNjaGVtYSh7 fSwge30sICgpPT57fSwge2F1dG9pbmRleDogZmFsc2V9KTsKKyAgICBsZXQgdGFibGVOb2Rlc0Rp Y3QgPSB0aGlzLmdldE1vZGVsKCkuZ2V0Tm9kZXNEaWN0KCk7CisgICAgbGV0IGZrQ29sdW1uID0g e307CisgICAgbGV0IHNvdXJjZU5vZGUgPSB0YWJsZU5vZGVzRGljdFtvbmV0b21hbnlEYXRhLnJl ZmVyZW5jZWRfdGFibGVfdWlkXTsKKyAgICBsZXQgdGFyZ2V0Tm9kZSA9IHRhYmxlTm9kZXNEaWN0 W29uZXRvbWFueURhdGEubG9jYWxfdGFibGVfdWlkXTsKKworICAgIGZrQ29sdW1uLmxvY2FsX2Nv bHVtbiA9IF8uZmluZCh0YXJnZXROb2RlLmdldENvbHVtbnMoKSwgKGNvbCk9PmNvbC5hdHRudW09 PW9uZXRvbWFueURhdGEubG9jYWxfY29sdW1uX2F0dG51bSkubmFtZTsKKyAgICBma0NvbHVtbi5y ZWZlcmVuY2VkID0gXy5maW5kKHNvdXJjZU5vZGUuZ2V0Q29sdW1ucygpLCAoY29sKT0+Y29sLmF0 dG51bT09b25ldG9tYW55RGF0YS5yZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0pLm5hbWU7CisgICAg ZmtDb2x1bW4ucmVmZXJlbmNlcyA9IG9uZXRvbWFueURhdGEucmVmZXJlbmNlZF90YWJsZV91aWQ7 CisgICAgZmtDb2x1bW4ucmVmZXJlbmNlc190YWJsZV9uYW1lID0gc291cmNlTm9kZS5nZXREYXRh KCkubmFtZTsKKworICAgIGxldCB0YWJsZURhdGEgPSB0YXJnZXROb2RlLmdldERhdGEoKTsKKyAg ICB0YWJsZURhdGEuZm9yZWlnbl9rZXkgPSB0YWJsZURhdGEuZm9yZWlnbl9rZXkgfHwgW107CisK KyAgICBsZXQgY29sID0gbmV3RmsuZmtDb2x1bW5TY2hlbWEuZ2V0TmV3RGF0YShma0NvbHVtbik7 CisgICAgdGFibGVEYXRhLmZvcmVpZ25fa2V5LnB1c2goCisgICAgICBuZXdGay5nZXROZXdEYXRh KHsKKyAgICAgICAgY29sdW1uczogW2NvbF0sCisgICAgICB9KQorICAgICk7CisgICAgdGFyZ2V0 Tm9kZS5zZXREYXRhKHRhYmxlRGF0YSk7CisgICAgbGV0IG5ld0xpbmsgPSB0aGlzLmFkZExpbmso b25ldG9tYW55RGF0YSwgJ29uZXRvbWFueScpOworICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTsK KyAgICBuZXdMaW5rLnNldFNlbGVjdGVkKHRydWUpOworICAgIHRoaXMucmVwYWludCgpOworICB9 CisKKyAgcmVtb3ZlT25lVG9NYW55TGluayhsaW5rKSB7CisgICAgbGV0IGxpbmtEYXRhID0gbGlu ay5nZXREYXRhKCk7CisgICAgbGV0IHRhYmxlTm9kZSA9IHRoaXMuZ2V0TW9kZWwoKS5nZXROb2Rl c0RpY3QoKVtsaW5rRGF0YS5sb2NhbF90YWJsZV91aWRdOworICAgIGxldCB0YWJsZURhdGEgPSB0 YWJsZU5vZGUuZ2V0RGF0YSgpOworCisgICAgbGV0IG5ld0ZvcmVpbmdLZXlzID0gW107CisgICAg dGFibGVEYXRhLmZvcmVpZ25fa2V5Py5mb3JFYWNoKCh0aGVGa1Jvdyk9PnsKKyAgICAgIGxldCB0 aGVGayA9IHRoZUZrUm93LmNvbHVtbnNbMF07CisgICAgICBsZXQgYXR0bnVtID0gXy5maW5kKHRh YmxlTm9kZS5nZXRDb2x1bW5zKCksIChjb2wpPT5jb2wubmFtZT09dGhlRmsubG9jYWxfY29sdW1u KS5hdHRudW07CisgICAgICAvKiBTa2lwIGFsbCB0aG9zZSB3aG9zZSBhdHRudW0gbWF0Y2hlcyB0 byB0aGUgbGluayAqLworICAgICAgaWYobGlua0RhdGEubG9jYWxfY29sdW1uX2F0dG51bSAhPSBh dHRudW0pIHsKKyAgICAgICAgbmV3Rm9yZWluZ0tleXMucHVzaCh0aGVGa1Jvdyk7CisgICAgICB9 CisgICAgfSk7CisgICAgdGFibGVEYXRhLmZvcmVpZ25fa2V5ID0gbmV3Rm9yZWluZ0tleXM7Cisg ICAgdGFibGVOb2RlLnNldERhdGEodGFibGVEYXRhKTsKKyAgICBsaW5rLmdldFRhcmdldFBvcnQo KS5yZW1vdmUoKTsKKyAgICBsaW5rLmdldFNvdXJjZVBvcnQoKS5yZW1vdmUoKTsKKyAgICBsaW5r LnNldFNlbGVjdGVkKGZhbHNlKTsKKyAgICBsaW5rLnJlbW92ZSgpOworICB9CisKKyAgYWRkTWFu eVRvTWFueUxpbmsobWFueXRvbWFueURhdGEpIHsKKyAgICBsZXQgbm9kZXMgPSB0aGlzLmdldE1v ZGVsKCkuZ2V0Tm9kZXNEaWN0KCk7CisgICAgbGV0IGxlZnROb2RlID0gbm9kZXNbbWFueXRvbWFu eURhdGEubGVmdF90YWJsZV91aWRdOworICAgIGxldCByaWdodE5vZGUgPSBub2Rlc1ttYW55dG9t YW55RGF0YS5yaWdodF90YWJsZV91aWRdOworCisgICAgbGV0IHRhYmxlT2JqID0gbmV3IFRhYmxl U2NoZW1hKHt9LCB7fSwgeworICAgICAgY29uc3RyYWludHM6KCk9Pnt9LAorICAgICAgY29sdW1u czooKT0+bmV3IENvbHVtblNjaGVtYSgoKT0+e30sIHt9LCB7fSwge30pLAorICAgICAgdmFjdXVt X3NldHRpbmdzOigpPT57fSwKKyAgICB9LCAoKT0+e30sICgpPT57fSwgKCk9Pnt9LCAoKT0+e30p OworCisgICAgbGV0IHRhYmxlRGF0YSA9IHRhYmxlT2JqLmdldE5ld0RhdGEoeworICAgICAgbmFt ZTogYCR7bGVmdE5vZGUuZ2V0RGF0YSgpLm5hbWV9XyR7cmlnaHROb2RlLmdldERhdGEoKS5uYW1l fWAsCisgICAgICBzY2hlbWE6IGxlZnROb2RlLmdldERhdGEoKS5zY2hlbWEsCisgICAgICBjb2x1 bW5zOiBbdGFibGVPYmouY29sdW1uc1NjaGVtYS5nZXROZXdEYXRhKHsKKyAgICAgICAgLi4ubGVm dE5vZGUuZ2V0Q29sdW1uQXQobWFueXRvbWFueURhdGEubGVmdF90YWJsZV9jb2x1bW5fYXR0bnVt KSwKKyAgICAgICAgJ25hbWUnOiBgJHtsZWZ0Tm9kZS5nZXREYXRhKCkubmFtZX1fJHtsZWZ0Tm9k ZS5nZXRDb2x1bW5BdChtYW55dG9tYW55RGF0YS5sZWZ0X3RhYmxlX2NvbHVtbl9hdHRudW0pLm5h bWV9YCwKKyAgICAgICAgJ2F0dG51bSc6IDAsCisgICAgICAgICdpc19wcmltYXJ5X2tleSc6IGZh bHNlLAorICAgICAgfSksdGFibGVPYmouY29sdW1uc1NjaGVtYS5nZXROZXdEYXRhKHsKKyAgICAg ICAgLi4ucmlnaHROb2RlLmdldENvbHVtbkF0KG1hbnl0b21hbnlEYXRhLnJpZ2h0X3RhYmxlX2Nv bHVtbl9hdHRudW0pLAorICAgICAgICAnbmFtZSc6IGAke3JpZ2h0Tm9kZS5nZXREYXRhKCkubmFt ZX1fJHtyaWdodE5vZGUuZ2V0Q29sdW1uQXQobWFueXRvbWFueURhdGEucmlnaHRfdGFibGVfY29s dW1uX2F0dG51bSkubmFtZX1gLAorICAgICAgICAnYXR0bnVtJzogMSwKKyAgICAgICAgJ2lzX3By aW1hcnlfa2V5JzogZmFsc2UsCisgICAgICB9KV0sCisgICAgfSk7CisKKyAgICAvLyBsZXQgdGFi bGVEYXRhID0geworICAgIC8vICAgbmFtZTogYCR7bGVmdE5vZGUuZ2V0RGF0YSgpLm5hbWV9XyR7 cmlnaHROb2RlLmdldERhdGEoKS5uYW1lfWAsCisgICAgLy8gICBzY2hlbWE6IGxlZnROb2RlLmdl dERhdGEoKS5zY2hlbWEsCisgICAgLy8gICBjb2x1bW5zOiBbeworICAgIC8vICAgICAuLi5sZWZ0 Tm9kZS5nZXRDb2x1bW5BdChtYW55dG9tYW55RGF0YS5sZWZ0X3RhYmxlX2NvbHVtbl9hdHRudW0p LAorICAgIC8vICAgICAnbmFtZSc6IGAke2xlZnROb2RlLmdldERhdGEoKS5uYW1lfV8ke2xlZnRO b2RlLmdldENvbHVtbkF0KG1hbnl0b21hbnlEYXRhLmxlZnRfdGFibGVfY29sdW1uX2F0dG51bSku bmFtZX1gLAorICAgIC8vICAgICAnaXNfcHJpbWFyeV9rZXknOiBmYWxzZSwKKyAgICAvLyAgICAg J2F0dG51bSc6IDAsCisgICAgLy8gICB9LHsKKyAgICAvLyAgICAgLi4ucmlnaHROb2RlLmdldENv bHVtbkF0KG1hbnl0b21hbnlEYXRhLnJpZ2h0X3RhYmxlX2NvbHVtbl9hdHRudW0pLAorICAgIC8v ICAgICAnbmFtZSc6IGAke3JpZ2h0Tm9kZS5nZXREYXRhKCkubmFtZX1fJHtyaWdodE5vZGUuZ2V0 Q29sdW1uQXQobWFueXRvbWFueURhdGEucmlnaHRfdGFibGVfY29sdW1uX2F0dG51bSkubmFtZX1g LAorICAgIC8vICAgICAnaXNfcHJpbWFyeV9rZXknOiBmYWxzZSwKKyAgICAvLyAgICAgJ2F0dG51 bSc6IDEsCisgICAgLy8gICB9XSwKKyAgICAvLyB9OworICAgIGxldCBuZXdOb2RlID0gdGhpcy5h ZGROb2RlKHRhYmxlRGF0YSk7CisgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpOworICAgIG5ld05v ZGUuc2V0U2VsZWN0ZWQodHJ1ZSk7CisKKyAgICBsZXQgbGlua0RhdGEgPSB7CisgICAgICBsb2Nh bF90YWJsZV91aWQ6IG5ld05vZGUuZ2V0SUQoKSwKKyAgICAgIGxvY2FsX2NvbHVtbl9hdHRudW06 IG5ld05vZGUuZ2V0Q29sdW1ucygpWzBdLmF0dG51bSwKKyAgICAgIHJlZmVyZW5jZWRfdGFibGVf dWlkOiBtYW55dG9tYW55RGF0YS5sZWZ0X3RhYmxlX3VpZCwKKyAgICAgIHJlZmVyZW5jZWRfY29s dW1uX2F0dG51bSA6IG1hbnl0b21hbnlEYXRhLmxlZnRfdGFibGVfY29sdW1uX2F0dG51bSwKKyAg ICB9OworICAgIHRoaXMuYWRkT25lVG9NYW55TGluayhsaW5rRGF0YSk7CisKKyAgICBsaW5rRGF0 YSA9IHsKKyAgICAgIGxvY2FsX3RhYmxlX3VpZDogbmV3Tm9kZS5nZXRJRCgpLAorICAgICAgbG9j YWxfY29sdW1uX2F0dG51bTogbmV3Tm9kZS5nZXRDb2x1bW5zKClbMV0uYXR0bnVtLAorICAgICAg cmVmZXJlbmNlZF90YWJsZV91aWQ6IG1hbnl0b21hbnlEYXRhLnJpZ2h0X3RhYmxlX3VpZCwKKyAg ICAgIHJlZmVyZW5jZWRfY29sdW1uX2F0dG51bSA6IG1hbnl0b21hbnlEYXRhLnJpZ2h0X3RhYmxl X2NvbHVtbl9hdHRudW0sCisgICAgfTsKKyAgICB0aGlzLmFkZE9uZVRvTWFueUxpbmsobGlua0Rh dGEpOworCisgICAgdGhpcy5yZXBhaW50KCk7CisgIH0KKwogICBzZXJpYWxpemUodmVyc2lvbikg ewogICAgIHJldHVybiB7CiAgICAgICB2ZXJzaW9uOiB2ZXJzaW9ufHwwLApAQCAtMjQ2LDY1ICs0 MzMsNTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgRVJEQ29yZSB7CiAgIH0KIAogICBzZXJpYWxp emVEYXRhKCkgewotICAgIGxldCBub2RlcyA9IHt9LCBsaW5rcyA9IHt9OworICAgIGxldCBub2Rl cyA9IHt9OwogICAgIGxldCBub2Rlc0RpY3QgPSB0aGlzLmdldE1vZGVsKCkuZ2V0Tm9kZXNEaWN0 KCk7CiAKICAgICBPYmplY3Qua2V5cyhub2Rlc0RpY3QpLmZvckVhY2goKGlkKT0+ewogICAgICAg bm9kZXNbaWRdID0gbm9kZXNEaWN0W2lkXS5zZXJpYWxpemVEYXRhKCk7CiAgICAgfSk7CiAKLSAg ICB0aGlzLmdldE1vZGVsKCkuZ2V0TGlua3MoKS5tYXAoKGxpbmspPT57Ci0gICAgICBsaW5rc1ts aW5rLmdldElEKCldID0gbGluay5zZXJpYWxpemVEYXRhKG5vZGVzRGljdCk7Ci0gICAgfSk7Ci0K LSAgICAvKiBTZXBhcmF0ZSB0aGUgbGlua3MgZnJvbSBub2RlcyBzbyB0aGF0IHdlIGRvbid0IGhh dmUgYW55IGRlcGVuZGFuY3kgaXNzdWVzICovCiAgICAgcmV0dXJuIHsKICAgICAgICdub2Rlcyc6 IG5vZGVzLAotICAgICAgJ2xpbmtzJzogbGlua3MsCiAgICAgfTsKICAgfQogCiAgIGRlc2VyaWFs aXplRGF0YShkYXRhKXsKICAgICBsZXQgb2lkVWlkTWFwID0ge307Ci0gICAgbGV0IHVpZEZrcyA9 IFtdOwotICAgIGRhdGEuZm9yRWFjaCgobm9kZSk9PnsKLSAgICAgIGxldCBuZXdEYXRhID0gewot ICAgICAgICBuYW1lOiBub2RlLm5hbWUsCi0gICAgICAgIHNjaGVtYTogbm9kZS5zY2hlbWEsCi0g ICAgICAgIGRlc2NyaXB0aW9uOiBub2RlLmRlc2NyaXB0aW9uLAotICAgICAgICBjb2x1bW5zOiBu b2RlLmNvbHVtbnMsCi0gICAgICAgIHByaW1hcnlfa2V5OiBub2RlLnByaW1hcnlfa2V5LAotICAg ICAgfTsKLSAgICAgIGxldCBuZXdOb2RlID0gdGhpcy5hZGROb2RlKG5ld0RhdGEpOwotICAgICAg b2lkVWlkTWFwW25vZGUub2lkXSA9IG5ld05vZGUuZ2V0SUQoKTsKLSAgICAgIGlmKG5vZGUuZm9y ZWlnbl9rZXkpIHsKLSAgICAgICAgbm9kZS5mb3JlaWduX2tleS5mb3JFYWNoKChhX2ZrKT0+ewot ICAgICAgICAgIHVpZEZrcy5wdXNoKHsKLSAgICAgICAgICAgIHVpZDogbmV3Tm9kZS5nZXRJRCgp LAotICAgICAgICAgICAgZGF0YTogYV9may5jb2x1bW5zWzBdLAotICAgICAgICAgIH0pOwotICAg ICAgICB9KTsKLSAgICAgIH0KKworICAgIC8qIEFkZCB0aGUgbm9kZXMgKi8KKyAgICBkYXRhLmZv ckVhY2goKG5vZGVEYXRhKT0+eworICAgICAgbGV0IG5ld05vZGUgPSB0aGlzLmFkZE5vZGUoVGFi bGVTY2hlbWEuZ2V0RXJkU3VwcG9ydGVkRGF0YShub2RlRGF0YSkpOworICAgICAgb2lkVWlkTWFw W25vZGVEYXRhLm9pZF0gPSBuZXdOb2RlLmdldElEKCk7CiAgICAgfSk7CiAKICAgICAvKiBMZXRz IHVzZSB0aGUgb2lkVWlkTWFwIGZvciBjcmVhdGluZyB0aGUgbGlua3MgKi8KLSAgICB1aWRGa3Mu Zm9yRWFjaCgoZmtEYXRhKT0+ewotICAgICAgbGV0IHRhYmxlTm9kZXNEaWN0ID0gdGhpcy5nZXRN b2RlbCgpLmdldE5vZGVzRGljdCgpOwotICAgICAgbGV0IG5ld0RhdGEgPSB7Ci0gICAgICAgIGxv Y2FsX3RhYmxlX3VpZDogZmtEYXRhLnVpZCwKLSAgICAgICAgbG9jYWxfY29sdW1uX2F0dG51bTog dW5kZWZpbmVkLAotICAgICAgICByZWZlcmVuY2VkX3RhYmxlX3VpZDogb2lkVWlkTWFwW2ZrRGF0 YS5kYXRhLnJlZmVyZW5jZXNdLAotICAgICAgICByZWZlcmVuY2VkX2NvbHVtbl9hdHRudW06IHVu ZGVmaW5lZCwKLSAgICAgIH07Ci0KLSAgICAgIGxldCBzb3VyY2VOb2RlID0gdGFibGVOb2Rlc0Rp Y3RbbmV3RGF0YS5yZWZlcmVuY2VkX3RhYmxlX3VpZF07Ci0gICAgICBsZXQgdGFyZ2V0Tm9kZSA9 IHRhYmxlTm9kZXNEaWN0W25ld0RhdGEubG9jYWxfdGFibGVfdWlkXTsKLQotICAgICAgbmV3RGF0 YS5sb2NhbF9jb2x1bW5fYXR0bnVtID0gXy5maW5kKHRhcmdldE5vZGUuZ2V0Q29sdW1ucygpLCAo Y29sKT0+Y29sLm5hbWU9PWZrRGF0YS5kYXRhLmxvY2FsX2NvbHVtbikuYXR0bnVtOwotICAgICAg bmV3RGF0YS5yZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0gPSBfLmZpbmQoc291cmNlTm9kZS5nZXRD b2x1bW5zKCksIChjb2wpPT5jb2wubmFtZT09ZmtEYXRhLmRhdGEucmVmZXJlbmNlZCkuYXR0bnVt OwotCi0gICAgICB0aGlzLmFkZExpbmsobmV3RGF0YSwgJ29uZXRvbWFueScpOworICAgIGxldCB0 YWJsZU5vZGVzRGljdCA9IHRoaXMuZ2V0TW9kZWwoKS5nZXROb2Rlc0RpY3QoKTsKKyAgICBfLmZv ckluKHRhYmxlTm9kZXNEaWN0LCAobm9kZSwgdWlkKT0+eworICAgICAgbGV0IG5vZGVEYXRhID0g bm9kZS5nZXREYXRhKCk7CisgICAgICBpZihub2RlRGF0YS5mb3JlaWduX2tleSkgeworICAgICAg ICBub2RlRGF0YS5mb3JlaWduX2tleS5mb3JFYWNoKCh0aGVGayk9PnsKKyAgICAgICAgICBkZWxl dGUgdGhlRmsub2lkOworICAgICAgICAgIHRoZUZrID0gdGhlRmsuY29sdW1uc1swXTsKKyAgICAg ICAgICB0aGVGay5yZWZlcmVuY2VzID0gb2lkVWlkTWFwW3RoZUZrLnJlZmVyZW5jZXNdOworICAg ICAgICAgIGxldCBuZXdEYXRhID0geworICAgICAgICAgICAgbG9jYWxfdGFibGVfdWlkOiB1aWQs CisgICAgICAgICAgICBsb2NhbF9jb2x1bW5fYXR0bnVtOiB1bmRlZmluZWQsCisgICAgICAgICAg ICByZWZlcmVuY2VkX3RhYmxlX3VpZDogdGhlRmsucmVmZXJlbmNlcywKKyAgICAgICAgICAgIHJl ZmVyZW5jZWRfY29sdW1uX2F0dG51bTogdW5kZWZpbmVkLAorICAgICAgICAgIH07CisgICAgICAg ICAgbGV0IHNvdXJjZU5vZGUgPSB0YWJsZU5vZGVzRGljdFtuZXdEYXRhLnJlZmVyZW5jZWRfdGFi bGVfdWlkXTsKKyAgICAgICAgICBsZXQgdGFyZ2V0Tm9kZSA9IHRhYmxlTm9kZXNEaWN0W25ld0Rh dGEubG9jYWxfdGFibGVfdWlkXTsKKworICAgICAgICAgIG5ld0RhdGEubG9jYWxfY29sdW1uX2F0 dG51bSA9IF8uZmluZCh0YXJnZXROb2RlLmdldENvbHVtbnMoKSwgKGNvbCk9PmNvbC5uYW1lPT10 aGVGay5sb2NhbF9jb2x1bW4pLmF0dG51bTsKKyAgICAgICAgICBuZXdEYXRhLnJlZmVyZW5jZWRf Y29sdW1uX2F0dG51bSA9IF8uZmluZChzb3VyY2VOb2RlLmdldENvbHVtbnMoKSwgKGNvbCk9PmNv bC5uYW1lPT10aGVGay5yZWZlcmVuY2VkKS5hdHRudW07CisKKyAgICAgICAgICB0aGlzLmFkZExp bmsobmV3RGF0YSwgJ29uZXRvbWFueScpOworICAgICAgICB9KTsKKyAgICAgIH0KICAgICB9KTsK KwogICAgIHNldFRpbWVvdXQodGhpcy5kYWdyZURpc3RyaWJ1dGVOb2Rlcy5iaW5kKHRoaXMpLCAy NTApOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMv ZXJkX3Rvb2wvZGlhbG9ncy9EaWFsb2dXcmFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJk L3N0YXRpYy9qcy9lcmRfdG9vbC9kaWFsb2dzL0RpYWxvZ1dyYXBwZXIuanMKaW5kZXggY2IwYjFm ZjUyLi4wZWQ3NjE2MjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMv anMvZXJkX3Rvb2wvZGlhbG9ncy9EaWFsb2dXcmFwcGVyLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9EaWFsb2dXcmFwcGVyLmpzCkBAIC03 LDE1MiArNyw5OCBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLWltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMv Z2V0dGV4dCc7Ci1pbXBvcnQgKiBhcyBjb21tb25VdGlscyBmcm9tICdzb3VyY2VzL3V0aWxzJzsK K2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CitpbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3Qt ZG9tJzsKK2ltcG9ydCBTY2hlbWFWaWV3IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9q cy9TY2hlbWFWaWV3JzsKIAogZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlhbG9nV3JhcHBlciB7Ci0g IGNvbnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRsZSwgdHlwZU9m RGlhbG9nLAotICAgIGpxdWVyeSwgcGdCcm93c2VyLCBhbGVydGlmeSwgYmFja2Zvcm0sIGJhY2tn cmlkKSB7Ci0KKyAgY29uc3RydWN0b3IoZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1Rp dGxlLCB0eXBlT2ZEaWFsb2csIGFsZXJ0aWZ5LCBzZXJ2ZXJJbmZvKSB7CiAgICAgdGhpcy5kaWFs b2dDb250YWluZXJTZWxlY3RvciA9IGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yOwogICAgIHRoaXMu ZGlhbG9nVGl0bGUgPSBkaWFsb2dUaXRsZTsKLSAgICB0aGlzLmpxdWVyeSA9IGpxdWVyeTsKLSAg ICB0aGlzLnBnQnJvd3NlciA9IHBnQnJvd3NlcjsKICAgICB0aGlzLmFsZXJ0aWZ5ID0gYWxlcnRp Znk7Ci0gICAgdGhpcy5iYWNrZm9ybSA9IGJhY2tmb3JtOwotICAgIHRoaXMuYmFja2dyaWQgPSBi YWNrZ3JpZDsKICAgICB0aGlzLnR5cGVPZkRpYWxvZyA9IHR5cGVPZkRpYWxvZzsKKyAgICB0aGlz LnNlcnZlckluZm8gPSBzZXJ2ZXJJbmZvOworCisgICAgbGV0IHNlbGYgPSB0aGlzOworICAgIHRo aXMuaG9va3MgPSB7CisgICAgICBvbnNob3c6ICgpPT57CisgICAgICAgIHNlbGYuY3JlYXRlRGlh bG9nKHNlbGYuZWxlbWVudHMuY29udGVudCk7CisgICAgICB9LAorICAgICAgb25jbG9zZTogKCk9 PnsKKyAgICAgICAgc2VsZi5jbGVhbnVwRGlhbG9nKHNlbGYuZWxlbWVudHMuY29udGVudCk7Cisg ICAgICB9CisgICAgfTsKICAgfQogCi0gIG1haW4odGl0bGUsIGRpYWxvZ01vZGVsLCBva0NhbGxi YWNrKSB7CisgIG1haW4odGl0bGUsIGRpYWxvZ1NjaGVtYSwgb2tDYWxsYmFjaykgewogICAgIHRo aXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKLSAgICB0aGlzLmRpYWxvZ01vZGVsID0gZGlhbG9nTW9k ZWw7CisgICAgdGhpcy5kaWFsb2dTY2hlbWEgPSBkaWFsb2dTY2hlbWE7CiAgICAgdGhpcy5va0Nh bGxiYWNrID0gb2tDYWxsYmFjazsKICAgfQogCiAgIGJ1aWxkKCkgewotICAgIHRoaXMuYWxlcnRp ZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKLSAgfQotCi0gIGRpc2FibGVPS0J1dHRvbigp IHsKLSAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1sxXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1 ZTsKKyAgICB0aGlzLmVsZW1lbnRzLmRpYWxvZy5jbGFzc0xpc3QuYWRkKCdlcmQtZGlhbG9nJyk7 CiAgIH0KIAotICBlbmFibGVPS0J1dHRvbigpIHsKLSAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9u c1sxXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7Ci0gIH0KLQotICBmb2N1c09uRGlhbG9nKGFs ZXJ0aWZ5RGlhbG9nKSB7Ci0gICAgbGV0IGJhY2tmb3JtX3RhYiA9IHRoaXMuanF1ZXJ5KGFsZXJ0 aWZ5RGlhbG9nLmVsZW1lbnRzLmJvZHkpLmZpbmQoJy5iYWNrZm9ybS10YWInKTsKLSAgICBiYWNr Zm9ybV90YWIuYXR0cigndGFiaW5kZXgnLCAtMSk7Ci0gICAgdGhpcy5wZ0Jyb3dzZXIua2V5Ym9h cmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih0aGlzLmpxdWVyeShhbGVydGlmeURp YWxvZy5lbGVtZW50cy5kaWFsb2cpKTsKLSAgICBsZXQgY29udGFpbmVyID0gYmFja2Zvcm1fdGFi LmZpbmQoJy50YWItY29udGVudDpmaXJzdCA+IC50YWItcGFuZS5hY3RpdmU6Zmlyc3QnKTsKLQot ICAgIGlmKGNvbnRhaW5lci5sZW5ndGggPT09IDAgJiYgYWxlcnRpZnlEaWFsb2cuZWxlbWVudHMu Y29udGVudC5pbm5lckhUTUwpIHsKLSAgICAgIGNvbnRhaW5lciA9IHRoaXMuanF1ZXJ5KGFsZXJ0 aWZ5RGlhbG9nLmVsZW1lbnRzLmNvbnRlbnQpOwotICAgIH0KLSAgICBjb21tb25VdGlscy5maW5k QW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKKyAgcHJlcGFyZSgpIHsKKyAgICAvKiBJZiB0b29sdGlw IGlzIG1vdW50ZWQgYWZ0ZXIgYWxlcnRpZnkgaW4gZG9tIGFuZCBidXR0b24gaXMgY2xpY2ssCisg ICAgYWxlcnRpZnkgcmUtcG9zaXRpb25zIGl0c2VsZiBvbiBET00gdG8gY29tZSBpbiBmb2N1cy4g VGhpcyBtYWtlcyBpdCBsb3NlCisgICAgdGhlIGJ1dHRvbiBjbGljayBldmVudHMuIE1ha2luZyBp dCBtb2RhbCBhbG9uZyB3aXRoIGZvbGxvd2luZyBmaXhlcyB0aGluZ3MuICovCisgICAgdGhpcy5l bGVtZW50cy5tb2RhbC5zdHlsZS5tYXhIZWlnaHQ9MDsKKyAgICB0aGlzLmVsZW1lbnRzLm1vZGFs LnN0eWxlLm1heFdpZHRoPSdub25lJzsKKyAgICB0aGlzLmVsZW1lbnRzLm1vZGFsLnN0eWxlLm92 ZXJmbG93PSd2aXNpYmxlJzsKKyAgICB0aGlzLmVsZW1lbnRzLmRpbW1lci5zdHlsZS5kaXNwbGF5 PSdub25lJzsKICAgfQogCiAgIHNldHVwKCkgewogICAgIHJldHVybiB7Ci0gICAgICBidXR0b25z OiBbewotICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwKLSAgICAgICAga2V5OiAyNywK LSAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1zZWNvbmRhcnkgZmEgZmEtbGcgZmEtdGltZXMg cGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnY2FuY2VsJywK LSAgICAgIH0sIHsKLSAgICAgICAgdGV4dDogZ2V0dGV4dCgnT0snKSwKLSAgICAgICAga2V5OiAx MywKLSAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUg cGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnb2snLAotICAg ICAgfV0sCisgICAgICBidXR0b25zOiBbXSwKICAgICAgIC8vIFNldCBvcHRpb25zIGZvciBkaWFs b2cKICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgdGl0bGU6IHRoaXMuZGlhbG9nVGl0bGUsCiAg ICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCiAgICAg ICAgIHBhZGRpbmc6ICExLAogICAgICAgICBvdmVyZmxvdzogITEsCi0gICAgICAgIG1vZGVsOiAw LAogICAgICAgICByZXNpemFibGU6IHRydWUsCiAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLAog ICAgICAgICBwaW5uYWJsZTogZmFsc2UsCiAgICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNl LAotICAgICAgICBtb2RhbDogZmFsc2UsCisgICAgICAgIG1vZGFsOiB0cnVlLAorICAgICAgICBh dXRvUmVzZXQ6IGZhbHNlLAogICAgICAgfSwKICAgICB9OwogICB9CiAKLSAgcHJlcGFyZSgpIHsK LSAgICBjb25zdCAkY29udGFpbmVyID0gdGhpcy5qcXVlcnkodGhpcy5kaWFsb2dDb250YWluZXJT ZWxlY3Rvcik7Ci0gICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVEaWFsb2coJGNvbnRhaW5l cik7Ci0gICAgZGlhbG9nLnJlbmRlcigpOwotICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5pbm5l ckhUTUwgPSAnJzsKLSAgICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRh aW5lci5nZXQoMCkpOwotICAgIHRoaXMuanF1ZXJ5KHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5v ZGVzWzBdKS5hZGRDbGFzcygKLSAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGll cyBvYmpfcHJvcGVydGllcycKLSAgICApOwotICAgIGNvbnN0IHN0YXR1c0JhciA9IHRoaXMuanF1 ZXJ5KAotICAgICAgJzxkaXYgY2xhc3M9XCdwZy1wcm9wLXN0YXR1cy1iYXIgcGctcHJvcC1zdGF0 dXMtYmFyLWFic29sdXRlIHBnLWVsLXhzLTEyIGQtbm9uZVwnPicgKwotICAgICAgJyAgPGRpdiBj bGFzcz0iZXJyb3ItaW4tZm9vdGVyIj4gJyArCi0gICAgICAnICAgIDxkaXYgY2xhc3M9ImQtZmxl eCBweC0yIHB5LTEiPiAnICsKLSAgICAgICcgICAgICA8ZGl2IGNsYXNzPSJwci0yIj4gJyArCi0g ICAgICAnICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4dC1k YW5nZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+ICcgKwotICAgICAgJyAgICAgIDwvZGl2PiAn ICsKLSAgICAgICcgICAgICA8ZGl2IGNsYXNzPSJhbGVydC10ZXh0IiByb2xlPSJhbGVydCI+PC9k aXY+ICcgKwotICAgICAgJyAgICAgICA8ZGl2IGNsYXNzPSJtbC1hdXRvIGNsb3NlLWVycm9yLWJh ciI+ICcgKwotICAgICAgJyAgICAgICAgICA8YSBhcmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnQ2xv c2UgZXJyb3IgYmFyJykgKyAnIiBjbGFzcz0iY2xvc2UtZXJyb3IgZmEgZmEtdGltZXMgdGV4dC1k YW5nZXIiPjwvYT4gJyArCi0gICAgICAnICAgICAgICA8L2Rpdj4gJyArCi0gICAgICAnICAgIDwv ZGl2PiAnICsKLSAgICAgICcgIDwvZGl2PiAnICsKLSAgICAgICc8L2Rpdj4nKS5hcHBlbmRUbygk Y29udGFpbmVyKTsKLQotICAgIHN0YXR1c0Jhci5maW5kKCcuY2xvc2UtZXJyb3InKS5vbignY2xp Y2snLCAoKT0+ewotICAgICAgc3RhdHVzQmFyLmFkZENsYXNzKCdkLW5vbmUnKTsKKyAgb25TYXZl Q2xpY2soaXNOZXcsIGRhdGEpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57 CisgICAgICB0aGlzLm9rQ2FsbGJhY2soZGF0YSk7CisgICAgICB0aGlzLmNsb3NlKCk7CisgICAg ICByZXNvbHZlKCk7CiAgICAgfSk7Ci0KLSAgICB2YXIgb25TZXNzaW9uSW52YWxpZCA9IChtc2cp ID0+IHsKLSAgICAgIHN0YXR1c0Jhci5maW5kKCcuYWxlcnQtdGV4dCcpLnRleHQobXNnKTsKLSAg ICAgIHN0YXR1c0Jhci5yZW1vdmVDbGFzcygnZC1ub25lJyk7Ci0gICAgICB0aGlzLmRpc2FibGVP S0J1dHRvbigpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfTsKLQotICAgIHZhciBvblNlc3Np b25WYWxpZGF0ZWQgPSAoKSA9PiB7Ci0gICAgICBzdGF0dXNCYXIuZmluZCgnLmFsZXJ0LXRleHQn KS50ZXh0KCcnKTsKLSAgICAgIHN0YXR1c0Jhci5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAgICB0 aGlzLmVuYWJsZU9LQnV0dG9uKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotCi0gICAg dGhpcy5kaWFsb2dNb2RlbC5vbigncGdhZG1pbi1zZXNzaW9uOnZhbGlkJywgb25TZXNzaW9uVmFs aWRhdGVkKTsKLSAgICB0aGlzLmRpYWxvZ01vZGVsLm9uKCdwZ2FkbWluLXNlc3Npb246aW52YWxp ZCcsIG9uU2Vzc2lvbkludmFsaWQpOwotICAgIHRoaXMuZGlhbG9nTW9kZWwuc3RhcnROZXdTZXNz aW9uKCk7Ci0gICAgdGhpcy5kaXNhYmxlT0tCdXR0b24oKTsKLSAgICB0aGlzLmZvY3VzT25EaWFs b2codGhpcyk7CiAgIH0KIAotICBjYWxsYmFjayhldmVudCkgewotICAgIGlmICh0aGlzLndhc09r QnV0dG9uUHJlc3NlZChldmVudCkpIHsKLSAgICAgIHRoaXMub2tDYWxsYmFjayh0aGlzLnZpZXcu bW9kZWwudG9KU09OKHRydWUpKTsKLSAgICB9Ci0gIH0KLQotICBjcmVhdGVEaWFsb2coJGNvbnRh aW5lcikgewotICAgIGxldCBmaWVsZHMgPSB0aGlzLmJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVt YSgKLSAgICAgIG51bGwsIHRoaXMuZGlhbG9nTW9kZWwsICdjcmVhdGUnLCBudWxsLCBudWxsLCB0 cnVlLCBudWxsCi0gICAgKTsKLQotICAgIHRoaXMudmlldyA9IG5ldyB0aGlzLmJhY2tmb3JtLkRp YWxvZyh7Ci0gICAgICBlbDogJGNvbnRhaW5lciwKLSAgICAgIG1vZGVsOiB0aGlzLmRpYWxvZ01v ZGVsLAotICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAgfSk7Ci0KLSAgICByZXR1cm4gdGhpcy52 aWV3OworICBjcmVhdGVEaWFsb2coY29udGFpbmVyKSB7CisgICAgbGV0IHNlbGYgPSB0aGlzOwor ICAgIFJlYWN0RE9NLnJlbmRlcigKKyAgICAgIDxTY2hlbWFWaWV3CisgICAgICAgIGZvcm1UeXBl PXsnZGlhbG9nJ30KKyAgICAgICAgZ2V0SW5pdERhdGE9eygpPT5Qcm9taXNlLnJlc29sdmUoe30p fQorICAgICAgICBzY2hlbWE9e3RoaXMuZGlhbG9nU2NoZW1hfQorICAgICAgICB2aWV3SGVscGVy UHJvcHM9e3sKKyAgICAgICAgICBtb2RlOiAnY3JlYXRlJywKKyAgICAgICAgICBrZWVwQ2lkOiB0 cnVlLAorICAgICAgICAgIHNlcnZlckluZm86IHRoaXMuc2VydmVySW5mbywKKyAgICAgICAgfX0K KyAgICAgICAgb25TYXZlPXt0aGlzLm9uU2F2ZUNsaWNrLmJpbmQodGhpcyl9CisgICAgICAgIG9u Q2xvc2U9eygpPT5zZWxmLmNsb3NlKCl9CisgICAgICAgIG9uRGF0YUNoYW5nZT17KCk9Pnt9fQor ICAgICAgICBoYXNTUUw9e2ZhbHNlfQorICAgICAgICBkaXNhYmxlU3FsSGVscD17dHJ1ZX0KKyAg ICAgICAgZGlzYWJsZURpYWxvZ0hlbHA9e3RydWV9CisgICAgICAvPiwgY29udGFpbmVyKTsKICAg fQogCi0gIHdhc09rQnV0dG9uUHJlc3NlZChldmVudCkgewotICAgIHJldHVybiBldmVudC5idXR0 b25bJ2RhdGEtYnRuLW5hbWUnXSA9PT0gJ29rJzsKKyAgY2xlYW51cERpYWxvZyhjb250YWluZXIp IHsKKyAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcik7CiAgIH0K IH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv ZGlhbG9ncy9NYW55VG9NYW55RGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRp Yy9qcy9lcmRfdG9vbC9kaWFsb2dzL01hbnlUb01hbnlEaWFsb2cuanMKaW5kZXggNWEzNTI0M2Fi Li5kYzI0MjFiN2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMv ZXJkX3Rvb2wvZGlhbG9ncy9NYW55VG9NYW55RGlhbG9nLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9NYW55VG9NYW55RGlhbG9nLmpzCkBA IC04LDEzICs4LDQ4IEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dl dHRleHQnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJ3NvdXJjZXMvYmFja2Zvcm0ucGdhZG1pbic7 CiBpbXBvcnQgQWxlcnRpZnkgZnJvbSAncGdhZG1pbi5hbGVydGlmeWpzJzsKLWltcG9ydCAkIGZy b20gJ2pxdWVyeSc7CitpbXBvcnQgQmFzZVVJU2NoZW1hIGZyb20gJ3NvdXJjZXMvU2NoZW1hVmll dy9iYXNlX3NjaGVtYS51aSc7CiAKIGltcG9ydCBEaWFsb2dXcmFwcGVyIGZyb20gJy4vRGlhbG9n V3JhcHBlcic7CiBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOwogCitjbGFzcyBNYW55VG9NYW55U2No ZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKKyAgY29uc3RydWN0b3IoZmllbGRPcHRpb25zPXt9 LCBpbml0VmFsdWVzPXt9KSB7CisgICAgc3VwZXIoeworICAgICAgbGVmdF90YWJsZV91aWQ6IHVu ZGVmaW5lZCwKKyAgICAgIGxlZnRfdGFibGVfY29sdW1uX2F0dG51bTogdW5kZWZpbmVkLAorICAg ICAgcmlnaHRfdGFibGVfdWlkOiB1bmRlZmluZWQsCisgICAgICByaWdodF90YWJsZV9jb2x1bW5f YXR0bnVtOiB1bmRlZmluZWQsCisgICAgICAuLi5pbml0VmFsdWVzLAorICAgIH0pOworICAgIHRo aXMuZmllbGRPcHRpb25zID0gZmllbGRPcHRpb25zOworICB9CisgIGdldCBiYXNlRmllbGRzKCkg eworICAgIHJldHVybiBbeworICAgICAgaWQ6ICdsZWZ0X3RhYmxlX3VpZCcsIGxhYmVsOiBnZXR0 ZXh0KCdMb2NhbCBUYWJsZScpLAorICAgICAgdHlwZTogJ3NlbGVjdCcsIHJlYWRvbmx5OiB0cnVl LCBjb250cm9sUHJvcHM6IHthbGxvd0NsZWFyOiBmYWxzZX0sCisgICAgICBvcHRpb25zOiB0aGlz LmZpZWxkT3B0aW9ucy5sZWZ0X3RhYmxlX3VpZCwKKyAgICB9LCB7CisgICAgICBpZDogJ2xlZnRf dGFibGVfY29sdW1uX2F0dG51bScsIGxhYmVsOiBnZXR0ZXh0KCdMb2NhbCBDb2x1bW4nKSwKKyAg ICAgIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiB0aGlzLmZpZWxkT3B0aW9ucy5sZWZ0X3RhYmxl X2NvbHVtbl9hdHRudW0sCisgICAgICBjb250cm9sUHJvcHM6IHthbGxvd0NsZWFyOiBmYWxzZX0s IG5vRW1wdHk6IHRydWUsCisgICAgfSx7CisgICAgICBpZDogJ3JpZ2h0X3RhYmxlX3VpZCcsIGxh YmVsOiBnZXR0ZXh0KCdSZWZlcmVuY2VkIFRhYmxlJyksCisgICAgICB0eXBlOiAnc2VsZWN0Jywg b3B0aW9uczogdGhpcy5maWVsZE9wdGlvbnMucmlnaHRfdGFibGVfdWlkLAorICAgICAgY29udHJv bFByb3BzOiB7YWxsb3dDbGVhcjogZmFsc2V9LCBub0VtcHR5OiB0cnVlLAorICAgIH0seworICAg ICAgaWQ6ICdyaWdodF90YWJsZV9jb2x1bW5fYXR0bnVtJywgbGFiZWw6IGdldHRleHQoJ1JlZmVy ZW5jZWQgQ29sdW1uJyksCisgICAgICBjb250cm9sUHJvcHM6IHthbGxvd0NsZWFyOiBmYWxzZX0s IGRlcHM6IFsncmlnaHRfdGFibGVfdWlkJ10sCisgICAgICB0eXBlOiAoc3RhdGUpPT4oeworICAg ICAgICB0eXBlOiAnc2VsZWN0JywKKyAgICAgICAgb3B0aW9uczogc3RhdGUucmlnaHRfdGFibGVf dWlkID8gKCk9PnRoaXMuZmllbGRPcHRpb25zLmdldFJlZkNvbHVtbnMoc3RhdGUucmlnaHRfdGFi bGVfdWlkKSA6IFtdLAorICAgICAgICBvcHRpb25zUmVsb2FkQmFzaXM6IHN0YXRlLnJpZ2h0X3Rh YmxlX3VpZCwKKyAgICAgIH0pLAorICAgIH1dOworICB9Cit9CisKIGV4cG9ydCBkZWZhdWx0IGNs YXNzIE1hbnlUb01hbnlEaWFsb2cgewogICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIpIHsKICAgICB0 aGlzLnBnQnJvd3NlciA9IHBnQnJvd3NlcjsKQEAgLTI0LDkzICs1OSwyOSBAQCBleHBvcnQgZGVm YXVsdCBjbGFzcyBNYW55VG9NYW55RGlhbG9nIHsKICAgICByZXR1cm4gJ21hbnl0b21hbnlfZGlh bG9nJzsKICAgfQogCi0gIGdldERhdGFNb2RlbChhdHRyaWJ1dGVzLCB0YWJsZU5vZGVzRGljdCkg ewotICAgIGNvbnN0IHBhcnNlQ29sdW1ucyA9IChjb2x1bW5zKT0+ewotICAgICAgcmV0dXJuIGNv bHVtbnMubWFwKChjb2wpPT57CisgIGdldFVJU2NoZW1hKGF0dHJpYnV0ZXMsIHRhYmxlTm9kZXNE aWN0KSB7CisgICAgbGV0IHRhYmxlc0RhdGEgPSBbXTsKKyAgICBfLmZvckVhY2godGFibGVOb2Rl c0RpY3QsIChub2RlLCB1aWQpPT57CisgICAgICBsZXQgW3NjaGVtYSwgbmFtZV0gPSBub2RlLmdl dFNjaGVtYVRhYmxlTmFtZSgpOworICAgICAgdGFibGVzRGF0YS5wdXNoKHt2YWx1ZTogdWlkLCBs YWJlbDogYCgke3NjaGVtYX0pICR7bmFtZX1gLCBpbWFnZTogJ2ljb24tdGFibGUnfSk7CisgICAg fSk7CisKKyAgICByZXR1cm4gbmV3IE1hbnlUb01hbnlTY2hlbWEoeworICAgICAgbGVmdF90YWJs ZV91aWQ6IHRhYmxlc0RhdGEsCisgICAgICBsZWZ0X3RhYmxlX2NvbHVtbl9hdHRudW06IHRhYmxl Tm9kZXNEaWN0W2F0dHJpYnV0ZXMubGVmdF90YWJsZV91aWRdLmdldENvbHVtbnMoKS5tYXAoKGNv bCk9PnsKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICB2YWx1ZTogY29sLmF0dG51bSwgbGFi ZWw6IGNvbC5uYW1lLAorICAgICAgICAgIHZhbHVlOiBjb2wuYXR0bnVtLCBsYWJlbDogY29sLm5h bWUsICdpbWFnZSc6ICdpY29uLWNvbHVtbicsCiAgICAgICAgIH07Ci0gICAgICB9KTsKLSAgICB9 OwotCi0gICAgbGV0IGRpYWxvZ01vZGVsID0gdGhpcy5wZ0Jyb3dzZXIuRGF0YU1vZGVsLmV4dGVu ZCh7Ci0gICAgICBkZWZhdWx0czogewotICAgICAgICBsZWZ0X3RhYmxlX3VpZDogdW5kZWZpbmVk LAotICAgICAgICBsZWZ0X3RhYmxlX2NvbHVtbl9hdHRudW06IHVuZGVmaW5lZCwKLSAgICAgICAg cmlnaHRfdGFibGVfdWlkOiB1bmRlZmluZWQsCi0gICAgICAgIHJpZ2h0X3RhYmxlX2NvbHVtbl9h dHRudW06IHVuZGVmaW5lZCwKKyAgICAgIH0pLAorICAgICAgcmlnaHRfdGFibGVfdWlkOiB0YWJs ZXNEYXRhLAorICAgICAgZ2V0UmVmQ29sdW1uczogKHVpZCk9PnsKKyAgICAgICAgcmV0dXJuIHRh YmxlTm9kZXNEaWN0W3VpZF0uZ2V0Q29sdW1ucygpLm1hcCgoY29sKT0+eworICAgICAgICAgIHJl dHVybiB7CisgICAgICAgICAgICB2YWx1ZTogY29sLmF0dG51bSwgbGFiZWw6IGNvbC5uYW1lLCAn aW1hZ2UnOiAnaWNvbi1jb2x1bW4nLAorICAgICAgICAgIH07CisgICAgICAgIH0pOwogICAgICAg fSwKLSAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgaWQ6ICdsZWZ0X3RhYmxlX3VpZCcsIGxhYmVs OiBnZXR0ZXh0KCdMZWZ0IFRhYmxlJyksCi0gICAgICAgIHR5cGU6ICdzZWxlY3QyJywgcmVhZG9u bHk6IHRydWUsCi0gICAgICAgIG9wdGlvbnM6ICgpPT57Ci0gICAgICAgICAgbGV0IHJldE9wdHMg PSBbXTsKLSAgICAgICAgICBfLmZvckVhY2godGFibGVOb2Rlc0RpY3QsIChub2RlLCB1aWQpPT57 Ci0gICAgICAgICAgICBsZXQgW3NjaGVtYSwgbmFtZV0gPSBub2RlLmdldFNjaGVtYVRhYmxlTmFt ZSgpOwotICAgICAgICAgICAgcmV0T3B0cy5wdXNoKHt2YWx1ZTogdWlkLCBsYWJlbDogYCgke3Nj aGVtYX0pICR7bmFtZX1gfSk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgICAgcmV0dXJuIHJldE9w dHM7Ci0gICAgICAgIH0sCi0gICAgICB9LCB7Ci0gICAgICAgIGlkOiAnbGVmdF90YWJsZV9jb2x1 bW5fYXR0bnVtJywgbGFiZWw6IGdldHRleHQoJ0xlZnQgdGFibGUgQ29sdW1uJyksCi0gICAgICAg IHR5cGU6ICdzZWxlY3QyJywgZGlzYWJsZWQ6IGZhbHNlLCBmaXJzdF9lbXB0eTogZmFsc2UsCi0g ICAgICAgIGVkaXRhYmxlOiB0cnVlLCBvcHRpb25zOiAodmlldyk9PnsKLSAgICAgICAgICByZXR1 cm4gcGFyc2VDb2x1bW5zKHRhYmxlTm9kZXNEaWN0W3ZpZXcubW9kZWwuZ2V0KCdsZWZ0X3RhYmxl X3VpZCcpXS5nZXRDb2x1bW5zKCkpOwotICAgICAgICB9LAotICAgICAgfSx7Ci0gICAgICAgIGlk OiAncmlnaHRfdGFibGVfdWlkJywgbGFiZWw6IGdldHRleHQoJ1JpZ2h0IFRhYmxlJyksCi0gICAg ICAgIHR5cGU6ICdzZWxlY3QyJywgZGlzYWJsZWQ6IGZhbHNlLAotICAgICAgICBlZGl0YWJsZTog dHJ1ZSwgb3B0aW9uczogKHZpZXcpPT57Ci0gICAgICAgICAgbGV0IHJldE9wdHMgPSBbXTsKLSAg ICAgICAgICBfLmZvckVhY2godGFibGVOb2Rlc0RpY3QsIChub2RlLCB1aWQpPT57Ci0gICAgICAg ICAgICBpZih1aWQgPT09IHZpZXcubW9kZWwuZ2V0KCdsZWZ0X3RhYmxlX3VpZCcpKSB7Ci0gICAg ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxldCBbc2NoZW1h LCBuYW1lXSA9IG5vZGUuZ2V0U2NoZW1hVGFibGVOYW1lKCk7Ci0gICAgICAgICAgICByZXRPcHRz LnB1c2goe3ZhbHVlOiB1aWQsIGxhYmVsOiBgKCR7c2NoZW1hfSkgJHtuYW1lfWB9KTsKLSAgICAg ICAgICB9KTsKLSAgICAgICAgICByZXR1cm4gcmV0T3B0czsKLSAgICAgICAgfSwKLSAgICAgIH0s ewotICAgICAgICBpZDogJ3JpZ2h0X3RhYmxlX2NvbHVtbl9hdHRudW0nLCBsYWJlbDogZ2V0dGV4 dCgnUmlnaHQgdGFibGUgQ29sdW1uJyksCi0gICAgICAgIHR5cGU6ICdzZWxlY3QyJywgZGlzYWJs ZWQ6IGZhbHNlLCBkZXBzOiBbJ3JpZ2h0X3RhYmxlX3VpZCddLAotICAgICAgICBlZGl0YWJsZTog dHJ1ZSwgb3B0aW9uczogKHZpZXcpPT57Ci0gICAgICAgICAgaWYodmlldy5tb2RlbC5nZXQoJ3Jp Z2h0X3RhYmxlX3VpZCcpKSB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VDb2x1bW5zKHRhYmxl Tm9kZXNEaWN0W3ZpZXcubW9kZWwuZ2V0KCdyaWdodF90YWJsZV91aWQnKV0uZ2V0Q29sdW1ucygp KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIFtdOwotICAgICAgICB9LAotICAgICAg fV0sCi0gICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykgewotICAgICAgICB2YXIgbXNnID0g dW5kZWZpbmVkOwotCi0gICAgICAgIC8vIE5vdGhpbmcgdG8gdmFsaWRhdGUKLSAgICAgICAgaWYg KGtleXMgJiYga2V5cy5sZW5ndGggPT0gMCkgewotICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5j bGVhcigpOwotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9IGVsc2UgewotICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ2xlZnRfdGFibGVfY29sdW1uX2F0dG51bScpKSB8fCB0aGlz LmdldCgnbGVmdF90YWJsZV9jb2x1bW5fYXR0bnVtJykgPT0gJycpIHsKLSAgICAgICAgICBtc2cg PSBnZXR0ZXh0KCdTZWxlY3QgdGhlIGxlZnQgdGFibGUgY29sdW1uLicpOwotICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5zZXQoJ2xlZnRfdGFibGVfY29sdW1uX2F0dG51bScsIG1zZyk7Ci0gICAg ICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgfQotICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0 aGlzLmdldCgncmlnaHRfdGFibGVfdWlkJykpIHx8IHRoaXMuZ2V0KCdyaWdodF90YWJsZV91aWQn KSA9PSAnJykgewotICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1NlbGVjdCB0aGUgcmlnaHQgdGFi bGUuJyk7Ci0gICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncmlnaHRfdGFibGVfdWlkJywg bXNnKTsKLSAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICB9Ci0gICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdyaWdodF90YWJsZV9jb2x1bW5fYXR0bnVtJykpIHx8IHRoaXMu Z2V0KCdyaWdodF90YWJsZV9jb2x1bW5fYXR0bnVtJykgPT0gJycpIHsKLSAgICAgICAgICBtc2cg PSBnZXR0ZXh0KCdTZWxlY3QgdGhlIHJpZ2h0IHRhYmxlIGNvbHVtbi4nKTsKLSAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCdyaWdodF90YWJsZV9jb2x1bW5fYXR0bnVtJywgbXNnKTsKLSAg ICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICB9Ci0gICAgICB9LAotICAgIH0pOwotCi0gICAg cmV0dXJuIG5ldyBkaWFsb2dNb2RlbChhdHRyaWJ1dGVzKTsKKyAgICB9LCBhdHRyaWJ1dGVzKTsK ICAgfQogCiAgIGNyZWF0ZU9yR2V0RGlhbG9nKHRpdGxlKSB7CkBAIC0xMjIsMTkgKzkzLDE2IEBA IGV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hbnlUb01hbnlEaWFsb2cgewogICAgICAgICAgIGA8ZGl2 IGNsYXNzPSIke2RpYWxvZ05hbWV9Ij48L2Rpdj5gLAogICAgICAgICAgIHRpdGxlLAogICAgICAg ICAgIG51bGwsCi0gICAgICAgICAgJCwKLSAgICAgICAgICB0aGlzLnBnQnJvd3NlciwKICAgICAg ICAgICBBbGVydGlmeSwKLSAgICAgICAgICBCYWNrZm9ybQogICAgICAgICApOwogICAgICAgfSk7 CiAgICAgfQogICAgIHJldHVybiBBbGVydGlmeVtkaWFsb2dOYW1lXTsKICAgfQogCi0gIHNob3co dGl0bGUsIGF0dHJpYnV0ZXMsIHRhYmxlc0RhdGEsIHNWZXJzaW9uLCBjYWxsYmFjaykgeworICBz aG93KHRpdGxlLCBhdHRyaWJ1dGVzLCB0YWJsZXNEYXRhLCBzZXJ2ZXJJbmZvLCBjYWxsYmFjaykg ewogICAgIGxldCBkaWFsb2dUaXRsZSA9IHRpdGxlIHx8IGdldHRleHQoJ1Vua25vd24nKTsKLSAg ICBjb25zdCBkaWFsb2cgPSB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9nKCdtYW55dG9tYW55X2RpYWxv ZycpOwotICAgIGRpYWxvZyhkaWFsb2dUaXRsZSwgdGhpcy5nZXREYXRhTW9kZWwoYXR0cmlidXRl cywgdGFibGVzRGF0YSksIGNhbGxiYWNrKS5yZXNpemVUbyh0aGlzLnBnQnJvd3Nlci5zdGRXLnNt LCB0aGlzLnBnQnJvd3Nlci5zdGRILm1kKTsKKyAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmNyZWF0 ZU9yR2V0RGlhbG9nKCdtYW55dG9tYW55X2RpYWxvZycsIHNlcnZlckluZm8pOworICAgIGRpYWxv ZyhkaWFsb2dUaXRsZSwgdGhpcy5nZXRVSVNjaGVtYShhdHRyaWJ1dGVzLCB0YWJsZXNEYXRhKSwg Y2FsbGJhY2spLnJlc2l6ZVRvKHRoaXMucGdCcm93c2VyLnN0ZFcuc20sIHRoaXMucGdCcm93c2Vy LnN0ZEgubWQpOwogICB9CiB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3Rh dGljL2pzL2VyZF90b29sL2RpYWxvZ3MvT25lVG9NYW55RGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4v dG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9kaWFsb2dzL09uZVRvTWFueURpYWxvZy5qcwpp bmRleCBlZmNjNWU2M2IuLjdjYjQ1ODEwZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv ZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9kaWFsb2dzL09uZVRvTWFueURpYWxvZy5qcworKysgYi93 ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL2RpYWxvZ3MvT25lVG9NYW55 RGlhbG9nLmpzCkBAIC04LDEzICs4LDQ4IEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBpbXBvcnQgZ2V0dGV4dCBmcm9t ICdzb3VyY2VzL2dldHRleHQnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJ3NvdXJjZXMvYmFja2Zv cm0ucGdhZG1pbic7CiBpbXBvcnQgQWxlcnRpZnkgZnJvbSAncGdhZG1pbi5hbGVydGlmeWpzJzsK LWltcG9ydCAkIGZyb20gJ2pxdWVyeSc7CitpbXBvcnQgQmFzZVVJU2NoZW1hIGZyb20gJ3NvdXJj ZXMvU2NoZW1hVmlldy9iYXNlX3NjaGVtYS51aSc7CiAKIGltcG9ydCBEaWFsb2dXcmFwcGVyIGZy b20gJy4vRGlhbG9nV3JhcHBlcic7CiBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOwogCitjbGFzcyBP bmVUb01hbnlTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgeworICBjb25zdHJ1Y3RvcihmaWVs ZE9wdGlvbnM9e30sIGluaXRWYWx1ZXM9e30pIHsKKyAgICBzdXBlcih7CisgICAgICBsb2NhbF90 YWJsZV91aWQ6IHVuZGVmaW5lZCwKKyAgICAgIGxvY2FsX2NvbHVtbl9hdHRudW06IHVuZGVmaW5l ZCwKKyAgICAgIHJlZmVyZW5jZWRfdGFibGVfdWlkOiB1bmRlZmluZWQsCisgICAgICByZWZlcmVu Y2VkX2NvbHVtbl9hdHRudW06IHVuZGVmaW5lZCwKKyAgICAgIC4uLmluaXRWYWx1ZXMsCisgICAg fSk7CisgICAgdGhpcy5maWVsZE9wdGlvbnMgPSBmaWVsZE9wdGlvbnM7CisgIH0KKyAgZ2V0IGJh c2VGaWVsZHMoKSB7CisgICAgcmV0dXJuIFt7CisgICAgICBpZDogJ2xvY2FsX3RhYmxlX3VpZCcs IGxhYmVsOiBnZXR0ZXh0KCdMb2NhbCBUYWJsZScpLAorICAgICAgdHlwZTogJ3NlbGVjdCcsIHJl YWRvbmx5OiB0cnVlLCBjb250cm9sUHJvcHM6IHthbGxvd0NsZWFyOiBmYWxzZX0sCisgICAgICBv cHRpb25zOiB0aGlzLmZpZWxkT3B0aW9ucy5sb2NhbF90YWJsZV91aWQsCisgICAgfSwgeworICAg ICAgaWQ6ICdsb2NhbF9jb2x1bW5fYXR0bnVtJywgbGFiZWw6IGdldHRleHQoJ0xvY2FsIENvbHVt bicpLAorICAgICAgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IHRoaXMuZmllbGRPcHRpb25zLmxv Y2FsX2NvbHVtbl9hdHRudW0sCisgICAgICBjb250cm9sUHJvcHM6IHthbGxvd0NsZWFyOiBmYWxz ZX0sIG5vRW1wdHk6IHRydWUsCisgICAgfSx7CisgICAgICBpZDogJ3JlZmVyZW5jZWRfdGFibGVf dWlkJywgbGFiZWw6IGdldHRleHQoJ1JlZmVyZW5jZWQgVGFibGUnKSwKKyAgICAgIHR5cGU6ICdz ZWxlY3QnLCBvcHRpb25zOiB0aGlzLmZpZWxkT3B0aW9ucy5yZWZlcmVuY2VkX3RhYmxlX3VpZCwK KyAgICAgIGNvbnRyb2xQcm9wczoge2FsbG93Q2xlYXI6IGZhbHNlfSwgbm9FbXB0eTogdHJ1ZSwK KyAgICB9LHsKKyAgICAgIGlkOiAncmVmZXJlbmNlZF9jb2x1bW5fYXR0bnVtJywgbGFiZWw6IGdl dHRleHQoJ1JlZmVyZW5jZWQgQ29sdW1uJyksCisgICAgICBjb250cm9sUHJvcHM6IHthbGxvd0Ns ZWFyOiBmYWxzZX0sIGRlcHM6IFsncmVmZXJlbmNlZF90YWJsZV91aWQnXSwgbm9FbXB0eTogdHJ1 ZSwKKyAgICAgIHR5cGU6IChzdGF0ZSk9Pih7CisgICAgICAgIHR5cGU6ICdzZWxlY3QnLAorICAg ICAgICBvcHRpb25zOiBzdGF0ZS5yZWZlcmVuY2VkX3RhYmxlX3VpZCA/ICgpPT50aGlzLmZpZWxk T3B0aW9ucy5nZXRSZWZDb2x1bW5zKHN0YXRlLnJlZmVyZW5jZWRfdGFibGVfdWlkKSA6IFtdLAor ICAgICAgICBvcHRpb25zUmVsb2FkQmFzaXM6IHN0YXRlLnJlZmVyZW5jZWRfdGFibGVfdWlkLAor ICAgICAgfSksCisgICAgfV07CisgIH0KK30KKwogZXhwb3J0IGRlZmF1bHQgY2xhc3MgT25lVG9N YW55RGlhbG9nIHsKICAgY29uc3RydWN0b3IocGdCcm93c2VyKSB7CiAgICAgdGhpcy5wZ0Jyb3dz ZXIgPSBwZ0Jyb3dzZXI7CkBAIC0yNCw5MyArNTksMzIgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3Mg T25lVG9NYW55RGlhbG9nIHsKICAgICByZXR1cm4gJ29uZXRvbWFueV9kaWFsb2cnOwogICB9CiAK LSAgZ2V0RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIHRhYmxlTm9kZXNEaWN0KSB7Ci0gICAgY29uc3Qg cGFyc2VDb2x1bW5zID0gKGNvbHVtbnMpPT57Ci0gICAgICByZXR1cm4gY29sdW1ucy5tYXAoKGNv bCk9PnsKKyAgZ2V0VUlTY2hlbWEoYXR0cmlidXRlcywgdGFibGVOb2Rlc0RpY3QpIHsKKyAgICBs ZXQgdGFibGVzRGF0YSA9IFtdOworICAgIF8uZm9yRWFjaCh0YWJsZU5vZGVzRGljdCwgKG5vZGUs IHVpZCk9PnsKKyAgICAgIGxldCBbc2NoZW1hLCBuYW1lXSA9IG5vZGUuZ2V0U2NoZW1hVGFibGVO YW1lKCk7CisgICAgICB0YWJsZXNEYXRhLnB1c2goe3ZhbHVlOiB1aWQsIGxhYmVsOiBgKCR7c2No ZW1hfSkgJHtuYW1lfWAsIGltYWdlOiAnaWNvbi10YWJsZSd9KTsKKyAgICB9KTsKKworICAgIHJl dHVybiBuZXcgT25lVG9NYW55U2NoZW1hKHsKKyAgICAgIGxvY2FsX3RhYmxlX3VpZDogdGFibGVz RGF0YSwKKyAgICAgIGxvY2FsX2NvbHVtbl9hdHRudW06IHRhYmxlTm9kZXNEaWN0W2F0dHJpYnV0 ZXMubG9jYWxfdGFibGVfdWlkXS5nZXRDb2x1bW5zKCkubWFwKChjb2wpPT57CiAgICAgICAgIHJl dHVybiB7Ci0gICAgICAgICAgdmFsdWU6IGNvbC5hdHRudW0sIGxhYmVsOiBjb2wubmFtZSwKKyAg ICAgICAgICB2YWx1ZTogY29sLmF0dG51bSwgbGFiZWw6IGNvbC5uYW1lLCAnaW1hZ2UnOiAnaWNv bi1jb2x1bW4nLAogICAgICAgICB9OwotICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGxldCBkaWFs b2dNb2RlbCA9IHRoaXMucGdCcm93c2VyLkRhdGFNb2RlbC5leHRlbmQoewotICAgICAgZGVmYXVs dHM6IHsKLSAgICAgICAgbG9jYWxfdGFibGVfdWlkOiB1bmRlZmluZWQsCi0gICAgICAgIGxvY2Fs X2NvbHVtbl9hdHRudW06IHVuZGVmaW5lZCwKLSAgICAgICAgcmVmZXJlbmNlZF90YWJsZV91aWQ6 IHVuZGVmaW5lZCwKLSAgICAgICAgcmVmZXJlbmNlZF9jb2x1bW5fYXR0bnVtOiB1bmRlZmluZWQs CisgICAgICB9KSwKKyAgICAgIHJlZmVyZW5jZWRfdGFibGVfdWlkOiB0YWJsZXNEYXRhLAorICAg ICAgZ2V0UmVmQ29sdW1uczogKHVpZCk9PnsKKyAgICAgICAgcmV0dXJuIHRhYmxlTm9kZXNEaWN0 W3VpZF0uZ2V0Q29sdW1ucygpLm1hcCgoY29sKT0+eworICAgICAgICAgIHJldHVybiB7CisgICAg ICAgICAgICB2YWx1ZTogY29sLmF0dG51bSwgbGFiZWw6IGNvbC5uYW1lLCAnaW1hZ2UnOiAnaWNv bi1jb2x1bW4nLAorICAgICAgICAgIH07CisgICAgICAgIH0pOwogICAgICAgfSwKLSAgICAgIHNj aGVtYTogW3sKLSAgICAgICAgaWQ6ICdsb2NhbF90YWJsZV91aWQnLCBsYWJlbDogZ2V0dGV4dCgn TG9jYWwgVGFibGUnKSwKLSAgICAgICAgdHlwZTogJ3NlbGVjdDInLCByZWFkb25seTogdHJ1ZSwK LSAgICAgICAgb3B0aW9uczogKCk9PnsKLSAgICAgICAgICBsZXQgcmV0T3B0cyA9IFtdOwotICAg ICAgICAgIF8uZm9yRWFjaCh0YWJsZU5vZGVzRGljdCwgKG5vZGUsIHVpZCk9PnsKLSAgICAgICAg ICAgIGxldCBbc2NoZW1hLCBuYW1lXSA9IG5vZGUuZ2V0U2NoZW1hVGFibGVOYW1lKCk7Ci0gICAg ICAgICAgICByZXRPcHRzLnB1c2goe3ZhbHVlOiB1aWQsIGxhYmVsOiBgKCR7c2NoZW1hfSkgJHtu YW1lfWB9KTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgICByZXR1cm4gcmV0T3B0czsKLSAgICAg ICAgfSwKLSAgICAgIH0sIHsKLSAgICAgICAgaWQ6ICdsb2NhbF9jb2x1bW5fYXR0bnVtJywgbGFi ZWw6IGdldHRleHQoJ0xvY2FsIENvbHVtbicpLAotICAgICAgICB0eXBlOiAnc2VsZWN0MicsIGRp c2FibGVkOiBmYWxzZSwgZmlyc3RfZW1wdHk6IGZhbHNlLAotICAgICAgICBlZGl0YWJsZTogdHJ1 ZSwgb3B0aW9uczogKHZpZXcpPT57Ci0gICAgICAgICAgcmV0dXJuIHBhcnNlQ29sdW1ucyh0YWJs ZU5vZGVzRGljdFt2aWV3Lm1vZGVsLmdldCgnbG9jYWxfdGFibGVfdWlkJyldLmdldENvbHVtbnMo KSk7Ci0gICAgICAgIH0sCi0gICAgICB9LHsKLSAgICAgICAgaWQ6ICdyZWZlcmVuY2VkX3RhYmxl X3VpZCcsIGxhYmVsOiBnZXR0ZXh0KCdSZWZlcmVuY2VkIFRhYmxlJyksCi0gICAgICAgIHR5cGU6 ICdzZWxlY3QyJywgZGlzYWJsZWQ6IGZhbHNlLAotICAgICAgICBlZGl0YWJsZTogdHJ1ZSwgb3B0 aW9uczogKCk9PnsKLSAgICAgICAgICBsZXQgcmV0T3B0cyA9IFtdOwotICAgICAgICAgIF8uZm9y RWFjaCh0YWJsZU5vZGVzRGljdCwgKG5vZGUsIHVpZCk9PnsKLSAgICAgICAgICAgIGxldCBbc2No ZW1hLCBuYW1lXSA9IG5vZGUuZ2V0U2NoZW1hVGFibGVOYW1lKCk7Ci0gICAgICAgICAgICByZXRP cHRzLnB1c2goe3ZhbHVlOiB1aWQsIGxhYmVsOiBgKCR7c2NoZW1hfSkgJHtuYW1lfWB9KTsKLSAg ICAgICAgICB9KTsKLSAgICAgICAgICByZXR1cm4gcmV0T3B0czsKLSAgICAgICAgfSwKLSAgICAg IH0sewotICAgICAgICBpZDogJ3JlZmVyZW5jZWRfY29sdW1uX2F0dG51bScsIGxhYmVsOiBnZXR0 ZXh0KCdSZWZlcmVuY2VkIENvbHVtbicpLAotICAgICAgICB0eXBlOiAnc2VsZWN0MicsIGRpc2Fi bGVkOiBmYWxzZSwgZGVwczogWydyZWZlcmVuY2VkX3RhYmxlX3VpZCddLAotICAgICAgICBlZGl0 YWJsZTogdHJ1ZSwgb3B0aW9uczogKHZpZXcpPT57Ci0gICAgICAgICAgaWYodmlldy5tb2RlbC5n ZXQoJ3JlZmVyZW5jZWRfdGFibGVfdWlkJykpIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZUNv bHVtbnModGFibGVOb2Rlc0RpY3Rbdmlldy5tb2RlbC5nZXQoJ3JlZmVyZW5jZWRfdGFibGVfdWlk JyldLmdldENvbHVtbnMoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBbXTsKLSAg ICAgICAgfSwKLSAgICAgIH1dLAotICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKLSAg ICAgICAgdmFyIG1zZyA9IHVuZGVmaW5lZDsKLQotICAgICAgICAvLyBOb3RoaW5nIHRvIHZhbGlk YXRlCi0gICAgICAgIGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgfQot Ci0gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdsb2NhbF9jb2x1bW5fYXR0bnVt JykpIHx8IHRoaXMuZ2V0KCdsb2NhbF9jb2x1bW5fYXR0bnVtJykgPT0gJycpIHsKLSAgICAgICAg ICBtc2cgPSBnZXR0ZXh0KCdTZWxlY3QgdGhlIGxvY2FsIGNvbHVtbi4nKTsKLSAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCdsb2NhbF9jb2x1bW5fYXR0bnVtJywgbXNnKTsKLSAgICAgICAg ICByZXR1cm4gbXNnOwotICAgICAgICB9Ci0gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCdyZWZlcmVuY2VkX3RhYmxlX3VpZCcpKSB8fCB0aGlzLmdldCgncmVmZXJlbmNlZF90YWJs ZV91aWQnKSA9PSAnJykgewotICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1NlbGVjdCB0aGUgcmVm ZXJlbmNlZCB0YWJsZS4nKTsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdyZWZlcmVu Y2VkX3RhYmxlX3VpZCcsIG1zZyk7Ci0gICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgfQot ICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgncmVmZXJlbmNlZF9jb2x1bW5fYXR0 bnVtJykpIHx8IHRoaXMuZ2V0KCdyZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0nKSA9PSAnJykgewot ICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1NlbGVjdCB0aGUgcmVmZXJlbmNlZCB0YWJsZSBjb2x1 bW4uJyk7Ci0gICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncmVmZXJlbmNlZF9jb2x1bW5f YXR0bnVtJywgbXNnKTsKLSAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICB9Ci0gICAgICB9 LAotICAgIH0pOwotCi0gICAgcmV0dXJuIG5ldyBkaWFsb2dNb2RlbChhdHRyaWJ1dGVzKTsKKyAg ICB9LCBhdHRyaWJ1dGVzKTsKICAgfQogCi0gIGNyZWF0ZU9yR2V0RGlhbG9nKHRpdGxlKSB7Cisg IGNyZWF0ZU9yR2V0RGlhbG9nKHRpdGxlLCBzVmVyc2lvbikgewogICAgIGNvbnN0IGRpYWxvZ05h bWUgPSB0aGlzLmRpYWxvZ05hbWUoKTsKIAogICAgIGlmICghQWxlcnRpZnlbZGlhbG9nTmFtZV0p IHsKQEAgLTExOSwxOSArOTMsMTcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgT25lVG9NYW55RGlh bG9nIHsKICAgICAgICAgICBgPGRpdiBjbGFzcz0iJHtkaWFsb2dOYW1lfSI+PC9kaXY+YCwKICAg ICAgICAgICB0aXRsZSwKICAgICAgICAgICBudWxsLAotICAgICAgICAgICQsCi0gICAgICAgICAg dGhpcy5wZ0Jyb3dzZXIsCiAgICAgICAgICAgQWxlcnRpZnksCi0gICAgICAgICAgQmFja2Zvcm0K KyAgICAgICAgICBzVmVyc2lvbgogICAgICAgICApOwogICAgICAgfSk7CiAgICAgfQogICAgIHJl dHVybiBBbGVydGlmeVtkaWFsb2dOYW1lXTsKICAgfQogCi0gIHNob3codGl0bGUsIGF0dHJpYnV0 ZXMsIHRhYmxlc0RhdGEsIHNWZXJzaW9uLCBjYWxsYmFjaykgeworICBzaG93KHRpdGxlLCBhdHRy aWJ1dGVzLCB0YWJsZXNEYXRhLCBzZXJ2ZXJJbmZvLCBjYWxsYmFjaykgewogICAgIGxldCBkaWFs b2dUaXRsZSA9IHRpdGxlIHx8IGdldHRleHQoJ1Vua25vd24nKTsKLSAgICBjb25zdCBkaWFsb2cg PSB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9nKCdvbmV0b21hbnlfZGlhbG9nJyk7Ci0gICAgZGlhbG9n KGRpYWxvZ1RpdGxlLCB0aGlzLmdldERhdGFNb2RlbChhdHRyaWJ1dGVzLCB0YWJsZXNEYXRhKSwg Y2FsbGJhY2spLnJlc2l6ZVRvKHRoaXMucGdCcm93c2VyLnN0ZFcuc20sIHRoaXMucGdCcm93c2Vy LnN0ZEgubWQpOworICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuY3JlYXRlT3JHZXREaWFsb2coJ29u ZXRvbWFueV9kaWFsb2cnLCBzZXJ2ZXJJbmZvKTsKKyAgICBkaWFsb2coZGlhbG9nVGl0bGUsIHRo aXMuZ2V0VUlTY2hlbWEoYXR0cmlidXRlcywgdGFibGVzRGF0YSksIGNhbGxiYWNrKS5yZXNpemVU byh0aGlzLnBnQnJvd3Nlci5zdGRXLnNtLCB0aGlzLnBnQnJvd3Nlci5zdGRILm1kKTsKICAgfQog fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9k aWFsb2dzL1RhYmxlRGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9l cmRfdG9vbC9kaWFsb2dzL1RhYmxlRGlhbG9nLmpzCmluZGV4IDMzNzVmZGM2Zi4uZWFmYzg4MWU3 IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL2Rp YWxvZ3MvVGFibGVEaWFsb2cuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9q cy9lcmRfdG9vbC9kaWFsb2dzL1RhYmxlRGlhbG9nLmpzCkBAIC04LDM3ICs4LDIyIEBACiAvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LwogCiBpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOwotaW1wb3J0IEJhY2tn cmlkIGZyb20gJ3NvdXJjZXMvYmFja2dyaWQucGdhZG1pbic7Ci1pbXBvcnQgQmFja2Zvcm0gZnJv bSAnc291cmNlcy9iYWNrZm9ybS5wZ2FkbWluJzsKIGltcG9ydCBBbGVydGlmeSBmcm9tICdwZ2Fk bWluLmFsZXJ0aWZ5anMnOwotaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKIGltcG9ydCBfIGZyb20g J2xvZGFzaCc7CitpbXBvcnQgQmFzZVVJU2NoZW1hIGZyb20gJ3NvdXJjZXMvU2NoZW1hVmlldy9i YXNlX3NjaGVtYS51aSc7CiAKIGltcG9ydCBEaWFsb2dXcmFwcGVyIGZyb20gJy4vRGlhbG9nV3Jh cHBlcic7CitpbXBvcnQgVGFibGVTY2hlbWEsIHsgQ29uc3RyYWludHNTY2hlbWEgfSBmcm9tICcu Li8uLi8uLi8uLi8uLi8uLi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLnVpJzsKK2ltcG9ydCBDb2x1bW5TY2hlbWEg ZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbnMvc3RhdGljL2pzL2NvbHVtbi51aSc7CitpbXBv cnQgRm9yZWlnbktleVNjaGVtYSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9y ZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LnVpJzsKIAotZXhwb3J0IGZ1bmN0aW9uIHRy YW5zZm9ybVRvU3VwcG9ydGVkKGRhdGEpIHsKLSAgLyogVGFibGUgZmllbGRzICovCi0gIGRhdGEg PSBfLnBpY2soZGF0YSwgWydvaWQnLCAnbmFtZScsICdzY2hlbWEnLCAnZGVzY3JpcHRpb24nLCAn Y29sdW1ucycsICdwcmltYXJ5X2tleScsICdmb3JlaWduX2tleSddKTsKLQotICAvKiBDb2x1bW5z ICovCi0gIGRhdGFbJ2NvbHVtbnMnXSA9IGRhdGFbJ2NvbHVtbnMnXS5tYXAoKGNvbHVtbik9PnsK LSAgICByZXR1cm4gXy5waWNrKGNvbHVtbixbCi0gICAgICAnbmFtZScsJ2Rlc2NyaXB0aW9uJywn YXR0b3duZXInLCdhdHRudW0nLCdjbHR5cGUnLCdtaW5fdmFsX2F0dGxlbicsJ21pbl92YWxfYXR0 cHJlY2lzaW9uJywnbWF4X3ZhbF9hdHRsZW4nLAotICAgICAgJ21heF92YWxfYXR0cHJlY2lzaW9u JywgJ2lzX3ByaW1hcnlfa2V5JywnYXR0bm90bnVsbCcsJ2F0dGxlbicsJ2F0dHByZWNpc2lvbics J2F0dGlkZW50aXR5JywnY29sY29uc3R5cGUnLAotICAgICAgJ3NlcWluY3JlbWVudCcsJ3NlcXN0 YXJ0Jywnc2VxbWluJywnc2VxbWF4Jywnc2VxY2FjaGUnLCdzZXFjeWNsZScsCi0gICAgXSk7Ci0g IH0pOwotCi0gIC8qIFByaW1hcnkga2V5ICovCi0gIGRhdGFbJ3ByaW1hcnlfa2V5J10gPSBkYXRh WydwcmltYXJ5X2tleSddLm1hcCgocHJpbWFyeV9rZXkpPT57Ci0gICAgcHJpbWFyeV9rZXkgPSBf LnBpY2socHJpbWFyeV9rZXksIFsnY29sdW1ucyddKTsKLSAgICBwcmltYXJ5X2tleVsnY29sdW1u cyddID0gcHJpbWFyeV9rZXlbJ2NvbHVtbnMnXS5tYXAoKGNvbHVtbik9PnsKLSAgICAgIHJldHVy biBfLnBpY2soY29sdW1uLCBbJ2NvbHVtbiddKTsKLSAgICB9KTsKLSAgICByZXR1cm4gcHJpbWFy eV9rZXk7Ci0gIH0pOworY2xhc3MgRW1wdHlTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewor ICBnZXQgYmFzZUZpZWxkcygpIHsKKyAgICByZXR1cm4gW107CisgIH0KKyAgY2hhbmdlQ29sdW1u T3B0aW9ucygpIHsKIAotICByZXR1cm4gZGF0YTsKKyAgfQogfQogCiBleHBvcnQgZGVmYXVsdCBj bGFzcyBUYWJsZURpYWxvZyB7CkBAIC00Nyw2ODIgKzMyLDgxIEBAIGV4cG9ydCBkZWZhdWx0IGNs YXNzIFRhYmxlRGlhbG9nIHsKICAgfQogCiAgIGRpYWxvZ05hbWUoKSB7Ci0gICAgcmV0dXJuICdl bnRpdHlfZGlhbG9nJzsKKyAgICByZXR1cm4gJ3RhYmxlX2RpYWxvZyc7CiAgIH0KIAotICBnZXRE YXRhTW9kZWwoYXR0cmlidXRlcywgaXNOZXcsIGFsbFRhYmxlcywgY29sVHlwZXMsIHNjaGVtYXMs IHNWZXJzaW9uKSB7Ci0gICAgbGV0IGRpYWxvZ09iaiA9IHRoaXM7Ci0gICAgbGV0IGNvbHVtbnNN b2RlbCA9IHRoaXMucGdCcm93c2VyLkRhdGFNb2RlbC5leHRlbmQoewotICAgICAgaWRBdHRyaWJ1 dGU6ICdhdHRudW0nLAotICAgICAgZGVmYXVsdHM6IHsKLSAgICAgICAgbmFtZTogdW5kZWZpbmVk LAotICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAotICAgICAgICBhdHRvd25lcjogdW5k ZWZpbmVkLAotICAgICAgICBhdHRudW06IHVuZGVmaW5lZCwKLSAgICAgICAgY2x0eXBlOiB1bmRl ZmluZWQsCi0gICAgICAgIG1pbl92YWxfYXR0bGVuOiB1bmRlZmluZWQsCi0gICAgICAgIG1pbl92 YWxfYXR0cHJlY2lzaW9uOiB1bmRlZmluZWQsCi0gICAgICAgIG1heF92YWxfYXR0bGVuOiB1bmRl ZmluZWQsCi0gICAgICAgIG1heF92YWxfYXR0cHJlY2lzaW9uOiB1bmRlZmluZWQsCi0gICAgICAg IGlzX3ByaW1hcnlfa2V5OiBmYWxzZSwKLSAgICAgICAgYXR0bm90bnVsbDogZmFsc2UsCi0gICAg ICAgIGF0dGxlbjogbnVsbCwKLSAgICAgICAgYXR0cHJlY2lzaW9uOiBudWxsLAotICAgICAgICBh dHRpZGVudGl0eTogJ2EnLAotICAgICAgICBjb2xjb25zdHlwZTogJ24nLAotICAgICAgICBzZXFp bmNyZW1lbnQ6IHVuZGVmaW5lZCwKLSAgICAgICAgc2Vxc3RhcnQ6IHVuZGVmaW5lZCwKLSAgICAg ICAgc2VxbWluOiB1bmRlZmluZWQsCi0gICAgICAgIHNlcW1heDogdW5kZWZpbmVkLAotICAgICAg ICBzZXFjYWNoZTogdW5kZWZpbmVkLAotICAgICAgICBzZXFjeWNsZTogdW5kZWZpbmVkLAotICAg ICAgfSwKLSAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzKSB7Ci0gICAgICAgIGlmIChf LnNpemUoYXR0cnMpICE9PSAwKSB7Ci0gICAgICAgICAgdGhpcy5zZXQoewotICAgICAgICAgICAg J29sZF9hdHRpZGVudGl0eSc6IHRoaXMuZ2V0KCdhdHRpZGVudGl0eScpLAotICAgICAgICAgIH0s IHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgfQotICAgICAgICBkaWFsb2dPYmoucGdCcm93c2Vy LkRhdGFNb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwot Ci0gICAgICAgIGlmKCF0aGlzLmdldCgnY2x0eXBlJykgJiYgY29sVHlwZXMubGVuZ3RoID4gMCkg ewotICAgICAgICAgIHRoaXMuc2V0KHsKLSAgICAgICAgICAgICdjbHR5cGUnOiBjb2xUeXBlc1sw XVsndmFsdWUnXSwKLSAgICAgICAgICB9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgIH0KLSAg ICAgIH0sCi0gICAgICBzY2hlbWE6IFt7Ci0gICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0 ZXh0KCdOYW1lJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2Fi bGVkOiBmYWxzZSwKLSAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMw JywKLSAgICAgICAgZWRpdGFibGU6IHRydWUsCi0gICAgICB9LCB7Ci0gICAgICAgIC8vIE5lZWQg dG8gc2hvdyB0aGlzIGZpZWxkIG9ubHkgd2hlbiBjcmVhdGluZyBuZXcgdGFibGUKLSAgICAgICAg Ly8gW2luIFN1Yk5vZGUgY29udHJvbF0KLSAgICAgICAgaWQ6ICdpc19wcmltYXJ5X2tleScsIGxh YmVsOiBnZXR0ZXh0KCdQcmltYXJ5IGtleT8nKSwKLSAgICAgICAgY2VsbDogQmFja2dyaWQuRXh0 ZW5zaW9uLlRhYmxlQ2hpbGRTd2l0Y2hDZWxsLCB0eXBlOiAnc3dpdGNoJywKLSAgICAgICAgZGVw czogWyduYW1lJ10sIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81JywKLSAgICAg ICAgb3B0aW9uczogewotICAgICAgICAgIG9uVGV4dDogZ2V0dGV4dCgnWWVzJyksIG9mZlRleHQ6 IGdldHRleHQoJ05vJyksCi0gICAgICAgICAgb25Db2xvcjogJ3N1Y2Nlc3MnLCBvZmZDb2xvcjog J3Rlcm5hcnknLAotICAgICAgICB9LAotICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0sCi0gICAgICAgIGRpc2FibGVkOiBmYWxz ZSwKLSAgICAgICAgZWRpdGFibGU6IHRydWUsCi0gICAgICB9LCB7Ci0gICAgICAgIGlkOiAnZGVz Y3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBjZWxsOiAnc3RyaW5nJywgdHlw ZTogJ211bHRpbGluZScsCi0gICAgICB9LCB7Ci0gICAgICAgIGlkOiAnY2x0eXBlJywgbGFiZWw6 IGdldHRleHQoJ0RhdGEgdHlwZScpLAotICAgICAgICBjZWxsOiAnc2VsZWN0MicsCi0gICAgICAg IHR5cGU6ICdzZWxlY3QyJywgZGlzYWJsZWQ6IGZhbHNlLAotICAgICAgICBjb250cm9sOiAnc2Vs ZWN0MicsCi0gICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcsCi0g ICAgICAgIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2UsIGZpcnN0X2VtcHR5OiBmYWxzZSB9 LCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLAotICAgICAgICBvcHRpb25zOiBmdW5jdGlv biAoKSB7Ci0gICAgICAgICAgcmV0dXJuIGNvbFR5cGVzOwotICAgICAgICB9LAotICAgICAgfSwg ewotICAgICAgICBpZDogJ2F0dGxlbicsIGxhYmVsOiBnZXR0ZXh0KCdMZW5ndGgvUHJlY2lzaW9u JyksIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5JbnRlZ2VyRGVwQ2VsbCwKLSAgICAgICAgZGVw czogWydjbHR5cGUnXSwgdHlwZTogJ2ludCcsIGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyks IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcsCi0gICAgICAgIGRpc2FibGVk OiBmdW5jdGlvbiAobSkgewotICAgICAgICAgIHZhciBvZl90eXBlID0gbS5nZXQoJ2NsdHlwZScp LAotICAgICAgICAgICAgZmxhZyA9IHRydWU7Ci0gICAgICAgICAgXy5lYWNoKGNvbFR5cGVzLCBm dW5jdGlvbiAobykgewotICAgICAgICAgICAgaWYgKG9mX3R5cGUgPT0gby52YWx1ZSkgewotICAg ICAgICAgICAgICBpZiAoby5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBtLnNldCgnbWluX3Zh bF9hdHRsZW4nLCBvLm1pbl92YWwsIHsgc2lsZW50OiB0cnVlIH0pOwotICAgICAgICAgICAgICAg IG0uc2V0KCdtYXhfdmFsX2F0dGxlbicsIG8ubWF4X3ZhbCwgeyBzaWxlbnQ6IHRydWUgfSk7Ci0g ICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBmbGFnICYmIHNldFRpbWVvdXQoZnVuY3Rp b24gKCkgewotICAgICAgICAgICAgaWYgKG0uZ2V0KCdhdHRsZW4nKSkgewotICAgICAgICAgICAg ICBtLnNldCgnYXR0bGVuJywgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwgMTAp OwotCi0gICAgICAgICAgcmV0dXJuIGZsYWc7Ci0gICAgICAgIH0sCi0gICAgICAgIGVkaXRhYmxl OiBmdW5jdGlvbiAobSkgewotICAgICAgICAgIHZhciBvZl90eXBlID0gbS5nZXQoJ2NsdHlwZScp LAotICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwotICAgICAgICAgIF8uZWFjaChjb2xUeXBlcywg ZnVuY3Rpb24gKG8pIHsKLSAgICAgICAgICAgIGlmIChvZl90eXBlID09IG8udmFsdWUpIHsKLSAg ICAgICAgICAgICAgaWYgKG8ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92 YWxfYXR0bGVuJywgby5taW5fdmFsLCB7IHNpbGVudDogdHJ1ZSB9KTsKLSAgICAgICAgICAgICAg ICBtLnNldCgnbWF4X3ZhbF9hdHRsZW4nLCBvLm1heF92YWwsIHsgc2lsZW50OiB0cnVlIH0pOwot ICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAhZmxhZyAmJiBzZXRUaW1lb3V0KGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICAgIGlmIChtLmdldCgnYXR0bGVuJykpIHsKLSAgICAgICAgICAg ICAgbS5zZXQoJ2F0dGxlbicsIG51bGwpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0sIDEw KTsKLQotICAgICAgICAgIHJldHVybiBmbGFnOwotICAgICAgICB9LAotICAgICAgfSwgewotICAg ICAgICBpZDogJ2F0dHByZWNpc2lvbicsIGxhYmVsOiBnZXR0ZXh0KCdTY2FsZScpLCBjZWxsOiBC YWNrZ3JpZC5FeHRlbnNpb24uSW50ZWdlckRlcENlbGwsCi0gICAgICAgIGRlcHM6IFsnY2x0eXBl J10sIHR5cGU6ICdpbnQnLCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLCBjZWxsSGVhZGVy Q2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAotICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24g KG0pIHsKLSAgICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCdjbHR5cGUnKSwKLSAgICAgICAg ICAgIGZsYWcgPSB0cnVlOwotICAgICAgICAgIF8uZWFjaChjb2xUeXBlcywgZnVuY3Rpb24gKG8p IHsKLSAgICAgICAgICAgIGlmIChvZl90eXBlID09IG8udmFsdWUpIHsKLSAgICAgICAgICAgICAg aWYgKG8ucHJlY2lzaW9uKSB7Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWxfYXR0cHJl Y2lzaW9uJywgMCwgeyBzaWxlbnQ6IHRydWUgfSk7Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ21h eF92YWxfYXR0cHJlY2lzaW9uJywgby5tYXhfdmFsLCB7IHNpbGVudDogdHJ1ZSB9KTsKLSAgICAg ICAgICAgICAgICBmbGFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGZsYWcgJiYgc2V0VGltZW91dChmdW5jdGlvbiAo KSB7Ci0gICAgICAgICAgICBpZiAobS5nZXQoJ2F0dHByZWNpc2lvbicpKSB7Ci0gICAgICAgICAg ICAgIG0uc2V0KCdhdHRwcmVjaXNpb24nLCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICB9LCAxMCk7Ci0gICAgICAgICAgcmV0dXJuIGZsYWc7Ci0gICAgICAgIH0sCi0gICAgICAgIGVk aXRhYmxlOiBmdW5jdGlvbiAobSkgewotICAgICAgICAgIGlmICghY29sVHlwZXMpIHsKLSAgICAg ICAgICAgIC8vIGRhdGF0eXBlcyBub3QgbG9hZGVkIHlldCwgbWF5IGJlIHRoaXMgY2FsbCBpcyBm cm9tIENhbGxCeU5lZWQgZnJvbSBiYWNrZ3JpZCBjZWxsIGluaXRpYWxpemUuCi0gICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICB2YXIgb2ZfdHlwZSA9IG0u Z2V0KCdjbHR5cGUnKSwKLSAgICAgICAgICAgIGZsYWcgPSBmYWxzZTsKLSAgICAgICAgICBfLmVh Y2goY29sVHlwZXMsIGZ1bmN0aW9uIChvKSB7Ci0gICAgICAgICAgICBpZiAob2ZfdHlwZSA9PSBv LnZhbHVlKSB7Ci0gICAgICAgICAgICAgIGlmIChvLnByZWNpc2lvbikgewotICAgICAgICAgICAg ICAgIG0uc2V0KCdtaW5fdmFsX2F0dHByZWNpc2lvbicsIDAsIHsgc2lsZW50OiB0cnVlIH0pOwot ICAgICAgICAgICAgICAgIG0uc2V0KCdtYXhfdmFsX2F0dHByZWNpc2lvbicsIG8ubWF4X3ZhbCwg eyBzaWxlbnQ6IHRydWUgfSk7Ci0gICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7Ci0gICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLQotICAgICAgICAgICFmbGFn ICYmIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKG0uZ2V0KCdhdHRw cmVjaXNpb24nKSkgewotICAgICAgICAgICAgICBtLnNldCgnYXR0cHJlY2lzaW9uJywgbnVsbCk7 Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwgMTApOwotCi0gICAgICAgICAgcmV0dXJuIGZs YWc7Ci0gICAgICAgIH0sCi0gICAgICB9LCB7Ci0gICAgICAgIGlkOiAnYXR0bm90bnVsbCcsIGxh YmVsOiBnZXR0ZXh0KCdOb3QgTlVMTD8nKSwgY2VsbDogJ3N3aXRjaCcsCi0gICAgICAgIHR5cGU6 ICdzd2l0Y2gnLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAotICAgICAg ICBncm91cDogZ2V0dGV4dCgnQ29uc3RyYWludHMnKSwKLSAgICAgICAgb3B0aW9uczogeyBvblRl eHQ6IGdldHRleHQoJ1llcycpLCBvZmZUZXh0OiBnZXR0ZXh0KCdObycpLCBvbkNvbG9yOiAnc3Vj Y2VzcycsIG9mZkNvbG9yOiAndGVybmFyeScgfSwKLSAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9u KG0pIHsKLSAgICAgICAgICBpZiAobS5nZXQoJ2NvbGNvbnN0eXBlJykgPT0gJ2knKSB7Ci0gICAg ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgbS5zZXQoJ2F0 dG5vdG51bGwnLCB0cnVlKTsKLSAgICAgICAgICAgIH0sIDEwKTsKLSAgICAgICAgICB9Ci0gICAg ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LAotICAgICAgfSwgewotICAgICAgICBpZDog J2NvbGNvbnN0eXBlJywKLSAgICAgICAgbGFiZWw6IGdldHRleHQoJ1R5cGUnKSwKLSAgICAgICAg Y2VsbDogJ3N0cmluZycsCi0gICAgICAgIHR5cGU6ICdyYWRpb01vZGVybicsCi0gICAgICAgIGNv bnRyb2xzQ2xhc3NOYW1lOiAncGdhZG1pbi1jb250cm9scyBjb2wtMTIgY29sLXNtLTknLAotICAg ICAgICBjb250cm9sTGFiZWxDbGFzc05hbWU6ICdjb250cm9sLWxhYmVsIGNvbC1zbS0zIGNvbC0x MicsCi0gICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAotICAgICAgICBvcHRp b25zOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB2YXIgb3B0X2FycmF5ID0gWwotICAgICAgICAg ICAgeydsYWJlbCc6IGdldHRleHQoJ05PTkUnKSwgJ3ZhbHVlJzogJ24nfSwKLSAgICAgICAgICAg IHsnbGFiZWwnOiBnZXR0ZXh0KCdJREVOVElUWScpLCAndmFsdWUnOiAnaSd9LAotICAgICAgICAg IF07Ci0KLSAgICAgICAgICBpZiAoc1ZlcnNpb24gPj0gMTIwMDAwKSB7Ci0gICAgICAgICAgICBv cHRfYXJyYXkucHVzaCh7Ci0gICAgICAgICAgICAgICdsYWJlbCc6IGdldHRleHQoJ0dFTkVSQVRF RCcpLAotICAgICAgICAgICAgICAndmFsdWUnOiAnZycsCi0gICAgICAgICAgICB9KTsKLSAgICAg ICAgICB9Ci0KLSAgICAgICAgICByZXR1cm4gb3B0X2FycmF5OwotICAgICAgICB9LAotICAgICAg ICBkaXNhYmxlZDogZmFsc2UsCi0gICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKCkgewotICAgICAg ICAgIGlmIChzVmVyc2lvbiA+PSAxMDAwMDApIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot ICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0sCi0gICAgICB9 LCB7Ci0gICAgICAgIGlkOiAnYXR0aWRlbnRpdHknLCBsYWJlbDogZ2V0dGV4dCgnSWRlbnRpdHkn KSwgY29udHJvbDogJ3NlbGVjdDInLAotICAgICAgICBjZWxsOiAnc2VsZWN0MicsCi0gICAgICAg IHNlbGVjdDI6IHtwbGFjZWhvbGRlcjogJ1NlbGVjdCBpZGVudGl0eScsIGFsbG93Q2xlYXI6IGZh bHNlLCB3aWR0aDogJzEwMCUnfSwKLSAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0NvbnN0cmFpbnRz JyksCi0gICAgICAgICdvcHRpb25zJzogWwotICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnQUxX QVlTJyksIHZhbHVlOiAnYSd9LAotICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnQlkgREVGQVVM VCcpLCB2YWx1ZTogJ2QnfSwKLSAgICAgICAgXSwKLSAgICAgICAgZGVwczogWydjb2xjb25zdHlw ZSddLAotICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgaWYgKHNWZXJz aW9uID49IDEwMDAwMCAmJiBtLmlzVHlwZUlkZW50aXR5KG0pKSB7Ci0gICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9 LAotICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNl OwotICAgICAgICB9LAotICAgICAgfSwgewotICAgICAgICBpZDogJ3NlcWluY3JlbWVudCcsIGxh YmVsOiBnZXR0ZXh0KCdJbmNyZW1lbnQnKSwgdHlwZTogJ2ludCcsCi0gICAgICAgIG1vZGU6IFsn cHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogZ2V0dGV4dCgnQ29uc3RyYWlu dHMnKSwKLSAgICAgICAgbWluOiAxLCBkZXBzOiBbJ2F0dGlkZW50aXR5JywgJ2NvbGNvbnN0eXBl J10sIGRpc2FibGVkOiAnaXNJZGVudGl0eUNvbHVtbicsCi0gICAgICAgIHZpc2libGU6ICdpc1R5 cGVJZGVudGl0eScsCi0gICAgICB9LHsKLSAgICAgICAgaWQ6ICdzZXFzdGFydCcsIGxhYmVsOiBn ZXR0ZXh0KCdTdGFydCcpLCB0eXBlOiAnaW50JywKLSAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAotICAg ICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewotICAgICAgICAgIGxldCBpc0lkZW50aXR5ID0g bS5nZXQoJ2F0dGlkZW50aXR5Jyk7Ci0gICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoaXNJZGVu dGl0eSkgJiYgIV8uaXNOdWxsKGlzSWRlbnRpdHkpICYmICFfLmlzRW1wdHkoaXNJZGVudGl0eSkp Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg ICAgIH0sIGRlcHM6IFsnYXR0aWRlbnRpdHknLCAnY29sY29uc3R5cGUnXSwKLSAgICAgICAgdmlz aWJsZTogJ2lzVHlwZUlkZW50aXR5JywKLSAgICAgIH0sewotICAgICAgICBpZDogJ3NlcW1pbics IGxhYmVsOiBnZXR0ZXh0KCdNaW5pbXVtJyksIHR5cGU6ICdpbnQnLAotICAgICAgICBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6IGdldHRleHQoJ0NvbnN0cmFp bnRzJyksCi0gICAgICAgIGRlcHM6IFsnYXR0aWRlbnRpdHknLCAnY29sY29uc3R5cGUnXSwgZGlz YWJsZWQ6ICdpc0lkZW50aXR5Q29sdW1uJywKLSAgICAgICAgdmlzaWJsZTogJ2lzVHlwZUlkZW50 aXR5JywKLSAgICAgIH0sewotICAgICAgICBpZDogJ3NlcW1heCcsIGxhYmVsOiBnZXR0ZXh0KCdN YXhpbXVtJyksIHR5cGU6ICdpbnQnLAotICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3Jl YXRlJywgJ2VkaXQnXSwgZ3JvdXA6IGdldHRleHQoJ0NvbnN0cmFpbnRzJyksCi0gICAgICAgIGRl cHM6IFsnYXR0aWRlbnRpdHknLCAnY29sY29uc3R5cGUnXSwgZGlzYWJsZWQ6ICdpc0lkZW50aXR5 Q29sdW1uJywKLSAgICAgICAgdmlzaWJsZTogJ2lzVHlwZUlkZW50aXR5JywKLSAgICAgIH0sewot ICAgICAgICBpZDogJ3NlcWNhY2hlJywgbGFiZWw6IGdldHRleHQoJ0NhY2hlJyksIHR5cGU6ICdp bnQnLAotICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3Jv dXA6IGdldHRleHQoJ0NvbnN0cmFpbnRzJyksCi0gICAgICAgIG1pbjogMSwgZGVwczogWydhdHRp ZGVudGl0eScsICdjb2xjb25zdHlwZSddLCBkaXNhYmxlZDogJ2lzSWRlbnRpdHlDb2x1bW4nLAot ICAgICAgICB2aXNpYmxlOiAnaXNUeXBlSWRlbnRpdHknLAotICAgICAgfSx7Ci0gICAgICAgIGlk OiAnc2VxY3ljbGUnLCBsYWJlbDogZ2V0dGV4dCgnQ3ljbGVkJyksIHR5cGU6ICdzd2l0Y2gnLAot ICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6IGdl dHRleHQoJ0NvbnN0cmFpbnRzJyksCi0gICAgICAgIGRlcHM6IFsnYXR0aWRlbnRpdHknLCAnY29s Y29uc3R5cGUnXSwgZGlzYWJsZWQ6ICdpc0lkZW50aXR5Q29sdW1uJywKLSAgICAgICAgdmlzaWJs ZTogJ2lzVHlwZUlkZW50aXR5JywKLSAgICAgIH1dLAotICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9u KGtleXMpIHsKLSAgICAgICAgdmFyIG1zZyA9IHVuZGVmaW5lZDsKLQotICAgICAgICAvLyBOb3Ro aW5nIHRvIHZhbGlkYXRlCi0gICAgICAgIGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09IDApIHsK LSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICByZXR1cm4gbnVs bDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsK LSAgICAgICAgfQotCi0gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduYW1lJykp Ci0gICAgICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xc cyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0NvbHVtbiBuYW1l IGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1l JywgbXNnKTsKLSAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg KF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2NsdHlwZScpKQotICAgICAgICAgICAgfHwgU3RyaW5n KHRoaXMuZ2V0KCdjbHR5cGUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewot ICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0NvbHVtbiB0eXBlIGNhbm5vdCBiZSBlbXB0eS4nKTsK LSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjbHR5cGUnLCBtc2cpOwotICAgICAgICAg IHJldHVybiBtc2c7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhp cy5nZXQoJ2NsdHlwZScpKQotICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZCh0aGlzLmdl dCgnYXR0bGVuJykpCi0gICAgICAgICAgICAgICYmICFfLmlzTnVsbCh0aGlzLmdldCgnYXR0bGVu JykpCi0gICAgICAgICAgICAgICYmIHRoaXMuZ2V0KCdhdHRsZW4nKSAhPT0gJycpIHsKLSAgICAg ICAgICAvLyBWYWxpZGF0aW9uIGZvciBMZW5ndGggZmllbGQKLSAgICAgICAgICBpZiAodGhpcy5n ZXQoJ2F0dGxlbicpIDwgdGhpcy5nZXQoJ21pbl92YWxfYXR0bGVuJykpCi0gICAgICAgICAgICBt c2cgPSBnZXR0ZXh0KCdMZW5ndGgvUHJlY2lzaW9uIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuOiAn KSArIHRoaXMuZ2V0KCdtaW5fdmFsX2F0dGxlbicpOwotICAgICAgICAgIGlmICh0aGlzLmdldCgn YXR0bGVuJykgPiB0aGlzLmdldCgnbWF4X3ZhbF9hdHRsZW4nKSkKLSAgICAgICAgICAgIG1zZyA9 IGdldHRleHQoJ0xlbmd0aC9QcmVjaXNpb24gc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW46ICcp ICsgdGhpcy5nZXQoJ21heF92YWxfYXR0bGVuJyk7Ci0gICAgICAgICAgLy8gSWYgd2UgaGF2ZSBh bnkgZXJyb3Igc2V0IHRoZW4gdGhyb3cgaXQgdG8gdXNlcgotICAgICAgICAgIGlmKG1zZykgewot ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnYXR0bGVuJywgbXNnKTsKLSAgICAgICAg ICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFf LmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdjbHR5cGUnKSkKLSAgICAgICAgICAgICAgJiYgIV8uaXNV bmRlZmluZWQodGhpcy5nZXQoJ2F0dHByZWNpc2lvbicpKQotICAgICAgICAgICAgICAmJiAhXy5p c051bGwodGhpcy5nZXQoJ2F0dHByZWNpc2lvbicpKQotICAgICAgICAgICAgICAmJiB0aGlzLmdl dCgnYXR0cHJlY2lzaW9uJykgIT09ICcnKSB7Ci0gICAgICAgICAgLy8gVmFsaWRhdGlvbiBmb3Ig cHJlY2lzaW9uIGZpZWxkCi0gICAgICAgICAgaWYgKHRoaXMuZ2V0KCdhdHRwcmVjaXNpb24nKSA8 IHRoaXMuZ2V0KCdtaW5fdmFsX2F0dHByZWNpc2lvbicpKQotICAgICAgICAgICAgbXNnID0gZ2V0 dGV4dCgnU2NhbGUgc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW46ICcpICsgdGhpcy5nZXQoJ21pbl92 YWxfYXR0cHJlY2lzaW9uJyk7Ci0gICAgICAgICAgaWYgKHRoaXMuZ2V0KCdhdHRwcmVjaXNpb24n KSA+IHRoaXMuZ2V0KCdtYXhfdmFsX2F0dHByZWNpc2lvbicpKQotICAgICAgICAgICAgbXNnID0g Z2V0dGV4dCgnU2NhbGUgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW46ICcpICsgdGhpcy5nZXQo J21heF92YWxfYXR0cHJlY2lzaW9uJyk7Ci0gICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbnkgZXJy b3Igc2V0IHRoZW4gdGhyb3cgaXQgdG8gdXNlcgotICAgICAgICAgIGlmKG1zZykgewotICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnYXR0cHJlY2lzaW9uJywgbXNnKTsKLSAgICAgICAg ICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG1p bmltdW0gPSB0aGlzLmdldCgnc2VxbWluJyksCi0gICAgICAgICAgbWF4aW11bSA9IHRoaXMuZ2V0 KCdzZXFtYXgnKSwKLSAgICAgICAgICBzdGFydCA9IHRoaXMuZ2V0KCdzZXFzdGFydCcpOwotCi0g ICAgICAgIGlmICghdGhpcy5pc05ldygpICYmIHRoaXMuZ2V0KCdjb2xjb25zdHlwZScpID09ICdp JyAmJgotICAgICAgICAgICh0aGlzLmdldCgnb2xkX2F0dGlkZW50aXR5JykgPT0gJ2EnIHx8IHRo aXMuZ2V0KCdvbGRfYXR0aWRlbnRpdHknKSA9PSAnZCcpICYmCi0gICAgICAgICAgKHRoaXMuZ2V0 KCdhdHRpZGVudGl0eScpID09ICdhJyB8fCB0aGlzLmdldCgnYXR0aWRlbnRpdHknKSA9PSAnZCcp KSB7Ci0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ3NlcWluY3JlbWVudCcp KQotICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCdzZXFpbmNyZW1lbnQnKSkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgn SW5jcmVtZW50IHZhbHVlIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC5zZXQoJ3NlcWluY3JlbWVudCcsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNn OwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQo J3NlcWluY3JlbWVudCcpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCdzZXFtaW4nKSkKLSAgICAgICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgn c2VxbWluJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAg IG1zZyA9IGdldHRleHQoJ01pbmltdW0gdmFsdWUgY2Fubm90IGJlIGVtcHR5LicpOwotICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc2VxbWluJywgbXNnKTsKLSAgICAgICAgICAgIHJl dHVybiBtc2c7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC51bnNldCgnc2VxbWluJyk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKF8uaXNVbmRl ZmluZWQodGhpcy5nZXQoJ3NlcW1heCcpKQotICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0 KCdzZXFtYXgnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAg ICAgbXNnID0gZ2V0dGV4dCgnTWF4aW11bSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0gICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZXFtYXgnLCBtc2cpOwotICAgICAgICAgICAg cmV0dXJuIG1zZzsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnVuc2V0KCdzZXFtYXgnKTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoXy5pc1Vu ZGVmaW5lZCh0aGlzLmdldCgnc2VxY2FjaGUnKSkKLSAgICAgICAgICAgIHx8IFN0cmluZyh0aGlz LmdldCgnc2VxY2FjaGUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAg ICAgICAgICAgbXNnID0gZ2V0dGV4dCgnQ2FjaGUgdmFsdWUgY2Fubm90IGJlIGVtcHR5LicpOwot ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc2VxY2FjaGUnLCBtc2cpOwotICAgICAg ICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnVuc2V0KCdzZXFjYWNoZScpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAg ICAgICB2YXIgbWluX2x0ID0gZ2V0dGV4dCgnTWluaW11bSB2YWx1ZSBtdXN0IGJlIGxlc3MgdGhh biBtYXhpbXVtIHZhbHVlLicpLAotICAgICAgICAgIHN0YXJ0X2x0ID0gZ2V0dGV4dCgnU3RhcnQg dmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiBtaW5pbXVtIHZhbHVlLicpLAotICAgICAgICAgIHN0 YXJ0X2d0ID0gZ2V0dGV4dCgnU3RhcnQgdmFsdWUgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBtYXhp bXVtIHZhbHVlLicpOwotCi0gICAgICAgIGlmIChfLmlzRW1wdHkobWluaW11bSkgfHwgXy5pc0Vt cHR5KG1heGltdW0pKQotICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIGlmICgobWlu aW11bSA9PSAwICYmIG1heGltdW0gPT0gMCkgfHwKLSAgICAgICAgICAgIChwYXJzZUludChtaW5p bXVtLCAxMCkgPj0gcGFyc2VJbnQobWF4aW11bSwgMTApKSkgewotICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC5zZXQoJ3NlcW1pbicsIG1pbl9sdCk7Ci0gICAgICAgICAgcmV0dXJuIG1pbl9sdDsK LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3NlcW1p bicpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXJ0ICYmIG1pbmltdW0gJiYgcGFyc2VJ bnQoc3RhcnQpIDwgcGFyc2VJbnQobWluaW11bSkpIHsKLSAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCdzZXFzdGFydCcsIHN0YXJ0X2x0KTsKLSAgICAgICAgICByZXR1cm4gc3RhcnRfbHQ7 Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdzZXFz dGFydCcpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXJ0ICYmIG1heGltdW0gJiYgcGFy c2VJbnQoc3RhcnQpID4gcGFyc2VJbnQobWF4aW11bSkpIHsKLSAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdzZXFzdGFydCcsIHN0YXJ0X2d0KTsKLSAgICAgICAgICByZXR1cm4gc3RhcnRf Z3Q7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdz ZXFzdGFydCcpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICB9LAot ICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiBvciBu b3QKLSAgICAgIGlzSWRlbnRpdHlDb2x1bW46IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgbGV0IGlz SWRlbnRpdHkgPSBtLmdldCgnYXR0aWRlbnRpdHknKTsKLSAgICAgICAgaWYoIV8uaXNVbmRlZmlu ZWQoaXNJZGVudGl0eSkgJiYgIV8uaXNOdWxsKGlzSWRlbnRpdHkpICYmICFfLmlzRW1wdHkoaXNJ ZGVudGl0eSkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsK LSAgICAgIH0sCi0gICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBjb2x1bW4gaXMgYSBpZGVudGl0 eSBjb2x1bW4KLSAgICAgIGlzVHlwZUlkZW50aXR5OiBmdW5jdGlvbihtKSB7Ci0gICAgICAgIGxl dCBjb2xjb25zdHlwZSA9IG0uZ2V0KCdjb2xjb25zdHlwZScpOwotICAgICAgICBpZiAoIV8uaXNV bmRlZmluZWQoY29sY29uc3R5cGUpICYmICFfLmlzTnVsbChjb2xjb25zdHlwZSkgJiYgY29sY29u c3R5cGUgPT0gJ2knKSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICAgfSwKLSAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGNv bHVtbiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4KLSAgICAgIGlzVHlwZUdlbmVyYXRlZDogZnVuY3Rp b24obSkgewotICAgICAgICBsZXQgY29sY29uc3R5cGUgPSBtLmdldCgnY29sY29uc3R5cGUnKTsK LSAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGNvbGNvbnN0eXBlKSAmJiAhXy5pc051bGwoY29s Y29uc3R5cGUpICYmIGNvbGNvbnN0eXBlID09ICdnJykgewotICAgICAgICAgIHJldHVybiB0cnVl OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0sCi0gICAgfSk7Ci0K LSAgICBjb25zdCBmb3JtYXRTY2hlbWFJdGVtID0gZnVuY3Rpb24ob3B0KSB7Ci0gICAgICBpZiAo IW9wdC5pZCkgewotICAgICAgICByZXR1cm4gb3B0LnRleHQ7Ci0gICAgICB9Ci0KLSAgICAgIHZh ciBvcHRpbWFnZSA9ICQob3B0LmVsZW1lbnQpLmRhdGEoJ2ltYWdlJyk7Ci0KLSAgICAgIGlmICgh b3B0aW1hZ2UpIHsKLSAgICAgICAgcmV0dXJuIG9wdC50ZXh0OwotICAgICAgfSBlbHNlIHsKLSAg ICAgICAgcmV0dXJuICQoJzxzcGFuPjwvc3Bhbj4nKS5hcHBlbmQoCi0gICAgICAgICAgJCgnPHNw YW4+PC9zcGFuPicsIHsKLSAgICAgICAgICAgIGNsYXNzOiAnd2NUYWJJY29uICcgKyBvcHRpbWFn ZSwKLSAgICAgICAgICB9KQotICAgICAgICApLmFwcGVuZCgkKCc8c3Bhbj48L3NwYW4+JykudGV4 dChvcHQudGV4dCkpOwotICAgICAgfQotICAgIH07Ci0KLSAgICBsZXQgZGlhbG9nTW9kZWwgPSB0 aGlzLnBnQnJvd3Nlci5EYXRhTW9kZWwuZXh0ZW5kKHsKLSAgICAgIGRlZmF1bHRzOiB7Ci0gICAg ICAgIG5hbWU6IHVuZGVmaW5lZCwKLSAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsCi0gICAgICAg IGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsCi0gICAgICAgIGNvbHVtbnM6IFtdLAotICAgICAgICBw cmltYXJ5X2tleTogW10sCi0gICAgICB9LAotICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7 Ci0gICAgICAgIGRpYWxvZ09iai5wZ0Jyb3dzZXIuRGF0YU1vZGVsLnByb3RvdHlwZS5pbml0aWFs aXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgICAgICAgaWYoIXRoaXMuZ2V0KCdzY2hl bWEnKSAmJiBzY2hlbWFzLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICB0aGlzLnNldCh7Ci0gICAg ICAgICAgICAnc2NoZW1hJzogc2NoZW1hc1swXVsnbmFtZSddLAotICAgICAgICAgIH0sIHtzaWxl bnQ6IHRydWV9KTsKLSAgICAgICAgfQorICBnZXRVSVNjaGVtYShhdHRyaWJ1dGVzLCBpc05ldywg dGFibGVOb2Rlc0RpY3QsIGNvbFR5cGVzLCBzY2hlbWFzKSB7CisgICAgbGV0IHRyZWVOb2RlSW5m byA9IHVuZGVmaW5lZDsKKworICAgIGxldCBjb2x1bW5TY2hlbWEgPSBuZXcgQ29sdW1uU2NoZW1h KAorICAgICAgKCk9Pnt9LAorICAgICAgdHJlZU5vZGVJbmZvLAorICAgICAgKCk9PmNvbFR5cGVz LAorICAgICAgKCk9PltdLAorICAgICAgKCk9PltdLAorICAgICAgdHJ1ZSwKKyAgICApOworCisg ICAgcmV0dXJuIG5ldyBUYWJsZVNjaGVtYSgKKyAgICAgIHsKKyAgICAgICAgcmVsb3duZXI6IFtd LAorICAgICAgICBzY2hlbWE6IHNjaGVtYXMubWFwKChzY2hlbWEpPT57CisgICAgICAgICAgcmV0 dXJuIHsKKyAgICAgICAgICAgICd2YWx1ZSc6IHNjaGVtYVsnbmFtZSddLAorICAgICAgICAgICAg J2ltYWdlJzogJ2ljb24tc2NoZW1hJywKKyAgICAgICAgICAgICdsYWJlbCc6IHNjaGVtYVsnbmFt ZSddLAorICAgICAgICAgIH07CisgICAgICAgIH0pLAorICAgICAgICBzcGNuYW1lOiBbXSwKKyAg ICAgICAgY29sbF9pbmhlcml0czogW10sCisgICAgICAgIHR5cG5hbWU6IFtdLAorICAgICAgICBs aWtlX3JlbGF0aW9uOiBbXSwKICAgICAgIH0sCi0gICAgICBzY2hlbWE6IFt7Ci0gICAgICAgIGlk OiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6 IGZhbHNlLAotICAgICAgfSx7Ci0gICAgICAgIGlkOiAnc2NoZW1hJywgbGFiZWw6IGdldHRleHQo J1NjaGVtYScpLCB0eXBlOiAndGV4dCcsCi0gICAgICAgIGNvbnRyb2w6ICdzZWxlY3QyJywgc2Vs ZWN0MjogewotICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLCBmaXJzdF9lbXB0eTogZmFsc2Us Ci0gICAgICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZvcm1hdFNjaGVtYUl0ZW0sCi0gICAgICAgICAg dGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdFNjaGVtYUl0ZW0sCi0gICAgICAgIH0sCi0gICAgICAg IG9wdGlvbnM6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICByZXR1cm4gc2NoZW1hcy5tYXAoKHNj aGVtYSk9PnsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICd2YWx1ZSc6IHNj aGVtYVsnbmFtZSddLAotICAgICAgICAgICAgICAnaW1hZ2UnOiAnaWNvbi1zY2hlbWEnLAotICAg ICAgICAgICAgICAnbGFiZWwnOiBzY2hlbWFbJ25hbWUnXSwKLSAgICAgICAgICAgIH07Ci0gICAg ICAgICAgfSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZCkgewotICAg ICAgICAgIC8vIElmIHNjaGVtYSBuYW1lIHN0YXJ0IHdpdGggcGdfKiB0aGVuIHdlIG5lZWQgdG8g ZXhjbHVkZSB0aGVtCi0gICAgICAgICAgaWYoZCAmJiBkLmxhYmVsLm1hdGNoKC9ecGdfLykpCi0g ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwKLSAgICAgIH0sewotICAgICAgICBpZDogJ2Rl c2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgdHlwZTogJ211bHRpbGluZScs Ci0gICAgICB9LHsKLSAgICAgICAgaWQ6ICdjb2x1bW5zJywgbGFiZWw6IGdldHRleHQoJ0NvbHVt bnMnKSwgdHlwZTogJ2NvbGxlY3Rpb24nLCBtb2RlOiBbJ2NyZWF0ZSddLAotICAgICAgICBncm91 cDogZ2V0dGV4dCgnQ29sdW1ucycpLAotICAgICAgICBtb2RlbDogY29sdW1uc01vZGVsLAotICAg ICAgICBzdWJub2RlOiBjb2x1bW5zTW9kZWwsCi0gICAgICAgIGRpc2FibGVkOiBmYWxzZSwKLSAg ICAgICAgdW5pcXVlQ29sIDogWyduYW1lJ10sCi0gICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnICwg J2NsdHlwZScsICdhdHRsZW4nLCAnYXR0cHJlY2lzaW9uJywgJ2F0dG5vdG51bGwnLCAnaXNfcHJp bWFyeV9rZXknXSwKLSAgICAgICAgY29udHJvbDogQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlv bkNvbnRyb2wuZXh0ZW5kKHsKLSAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKLQot ICAgICAgICAgICAgQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wucHJvdG90eXBl LmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICAgIHZhciBzZWxm ID0gdGhpcywKLSAgICAgICAgICAgICAgY29sbGVjdGlvbiA9IHNlbGYubW9kZWwuZ2V0KHNlbGYu ZmllbGQuZ2V0KCduYW1lJykpOwotCi0gICAgICAgICAgICBpZihjb2xsZWN0aW9uLmlzRW1wdHko KSkgewotICAgICAgICAgICAgICBzZWxmLmxhc3RfYXR0bnVtID0gLTE7Ci0gICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICB2YXIgbGFzdENvbCA9IGNvbGxlY3Rpb24ubWF4KGZ1bmN0 aW9uKGNvbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb2wuZ2V0KCdhdHRudW0nKTsKKyAg ICAgIHRyZWVOb2RlSW5mbywKKyAgICAgIHsKKyAgICAgICAgY29sdW1uczogKCk9PmNvbHVtblNj aGVtYSwKKyAgICAgICAgdmFjdXVtX3NldHRpbmdzOiAoKT0+bmV3IEVtcHR5U2NoZW1hKCksCisg ICAgICAgIGNvbnN0cmFpbnRzOiAoKT0+bmV3IENvbnN0cmFpbnRzU2NoZW1hKAorICAgICAgICAg IHRyZWVOb2RlSW5mbywKKyAgICAgICAgICAoKT0+bmV3IEZvcmVpZ25LZXlTY2hlbWEoeworICAg ICAgICAgICAgbG9jYWxfY29sdW1uOiBbXSwKKyAgICAgICAgICAgIHJlZmVyZW5jZXM6ICgpPT57 CisgICAgICAgICAgICAgIGxldCByZXRPcHRzID0gW107CisgICAgICAgICAgICAgIF8uZm9yRWFj aCh0YWJsZU5vZGVzRGljdCwgKG5vZGUsIHVpZCk9PnsKKyAgICAgICAgICAgICAgICBsZXQgW3Nj aGVtYSwgbmFtZV0gPSBub2RlLmdldFNjaGVtYVRhYmxlTmFtZSgpOworICAgICAgICAgICAgICAg IHJldE9wdHMucHVzaCh7dmFsdWU6IHVpZCwgbGFiZWw6IGAoJHtzY2hlbWF9KSAke25hbWV9YH0p OwogICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgc2VsZi5sYXN0X2F0dG51bSA9IGxh c3RDb2wuZ2V0KCdhdHRudW0nKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHJldE9wdHM7CiAgICAg ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbGxlY3Rpb24ub24oJ2NoYW5nZTppc19wcmltYXJ5 X2tleScsIGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgICAgdmFyIHByaW1hcnlfa2V5X2NvbGwg PSBzZWxmLm1vZGVsLmdldCgncHJpbWFyeV9rZXknKSwKLSAgICAgICAgICAgICAgICBjb2x1bW5f bmFtZSA9IG0uZ2V0KCduYW1lJyksCi0gICAgICAgICAgICAgICAgcHJpbWFyeV9rZXksIHByaW1h cnlfa2V5X2NvbHVtbl9jb2xsOwotCi0gICAgICAgICAgICAgIGlmKG0uZ2V0KCdpc19wcmltYXJ5 X2tleScpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIGNvbHVtbiB0byBwcmltYXJ5IGtleS4K LSAgICAgICAgICAgICAgICBpZiAocHJpbWFyeV9rZXlfY29sbC5sZW5ndGggPCAxKSB7Ci0gICAg ICAgICAgICAgICAgICBwcmltYXJ5X2tleSA9IG5ldyAocHJpbWFyeV9rZXlfY29sbC5tb2RlbCko e30sIHsKLSAgICAgICAgICAgICAgICAgICAgdG9wOiBzZWxmLm1vZGVsLAotICAgICAgICAgICAg ICAgICAgICBjb2xsZWN0aW9uOiBwcmltYXJ5X2tleV9jb2xsLAotICAgICAgICAgICAgICAgICAg ICBoYW5kbGVyOiBwcmltYXJ5X2tleV9jb2xsLAotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg ICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2xsLmFkZChwcmltYXJ5X2tleSk7Ci0gICAgICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5ID0gcHJpbWFy eV9rZXlfY29sbC5maXJzdCgpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg IHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsID0gcHJpbWFyeV9rZXkuZ2V0KCdjb2x1bW5zJyk7Ci0g ICAgICAgICAgICAgICAgdmFyIHByaW1hcnlfa2V5X2NvbHVtbl9leGlzdCA9IHByaW1hcnlfa2V5 X2NvbHVtbl9jb2xsLndoZXJlKHtjb2x1bW46Y29sdW1uX25hbWV9KTsKLQotICAgICAgICAgICAg ICAgIGlmIChwcmltYXJ5X2tleV9jb2x1bW5fZXhpc3QubGVuZ3RoID09IDApIHsKLSAgICAgICAg ICAgICAgICAgIHZhciBwcmltYXJ5X2tleV9jb2x1bW4gPSBuZXcgKAotICAgICAgICAgICAgICAg ICAgICBwcmltYXJ5X2tleV9jb2x1bW5fY29sbC5tb2RlbAotICAgICAgICAgICAgICAgICAgKSh7 Y29sdW1uOiBjb2x1bW5fbmFtZX0sIHsKLSAgICAgICAgICAgICAgICAgICAgc2lsZW50OiB0cnVl LAotICAgICAgICAgICAgICAgICAgICB0b3A6IHNlbGYubW9kZWwsCi0gICAgICAgICAgICAgICAg ICAgIGNvbGxlY3Rpb246IHByaW1hcnlfa2V5X2NvbGwsCi0gICAgICAgICAgICAgICAgICAgIGhh bmRsZXI6IHByaW1hcnlfa2V5X2NvbGwsCi0gICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAg ICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwuYWRkKHByaW1hcnlfa2V5X2NvbHVt bik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29s dW1uX2NvbGwudHJpZ2dlcigKLSAgICAgICAgICAgICAgICAgICdwZ2FkbWluOm11bHRpY29sdW1u OnVwZGF0ZWQnLCBwcmltYXJ5X2tleV9jb2x1bW5fY29sbAotICAgICAgICAgICAgICAgICk7Ci0g ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGNvbHVtbiBm cm9tIHByaW1hcnkga2V5LgotICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5X2tleV9jb2xsLmxl bmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5ID0gcHJpbWFyeV9rZXlf Y29sbC5maXJzdCgpOwotICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFsdGVyIGV4aXN0aW5n IHByaW1hcnkga2V5IGNvbHVtbnMuCi0gICAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmlu ZWQocHJpbWFyeV9rZXkuZ2V0KCdvaWQnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu OwotICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9j b2x1bW5fY29sbCA9IHByaW1hcnlfa2V5LmdldCgnY29sdW1ucycpOwotICAgICAgICAgICAgICAg ICAgdmFyIHJlbW92ZWRDb2xzID0gcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwud2hlcmUoe2NvbHVt bjpjb2x1bW5fbmFtZX0pOwotICAgICAgICAgICAgICAgICAgaWYgKHJlbW92ZWRDb2xzLmxlbmd0 aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29sdW1uX2NvbGwucmVt b3ZlKHJlbW92ZWRDb2xzKTsKLSAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlbW92ZWRDb2xz LCBmdW5jdGlvbihsb2NhbF9tb2RlbCkgewotICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX21v ZGVsLmRlc3Ryb3koKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg ICAgIGlmIChwcmltYXJ5X2tleV9jb2x1bW5fY29sbC5sZW5ndGggPT0gMCkgewotICAgICAgICAg ICAgICAgICAgICAgIC8qIElkZWFsbHkgYWJvdmUgbGluZSBvZiBjb2RlIHNob3VsZCBiZSAicHJp bWFyeV9rZXlfY29sbC5yZXNldCgpIi4KLSAgICAgICAgICAgICAgICAgICAgICAgKiBCdXQgb3Vy IGN1c3RvbSBEYXRhQ29sbGVjdGlvbiAoZXh0ZW5kZWQgZnJvbSBCYWNrYm9uZSBjb2xsZWN0aW9u IGluIGRhdGFtb2RlbC5qcykKLSAgICAgICAgICAgICAgICAgICAgICAgKiBkb2VzIG5vdCByZXNw b25kIHRvIHJlc2V0IGV2ZW50LCBpdCBvbmx5IHN1cHBvcnRzIGFkZCwgcmVtb3ZlLCBjaGFuZ2Ug ZXZlbnRzLgotICAgICAgICAgICAgICAgICAgICAgICAqIEFuZCBoZW5jZSBubyBjdXN0b20gZXZl bnQgbGlzdGVuZXJzL3ZhbGlkYXRvcnMgZ2V0IGNhbGxlZCBmb3IgcmVzZXQgZXZlbnQuCi0gICAg ICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlf Y29sbC5yZW1vdmUocHJpbWFyeV9rZXlfY29sbC5maXJzdCgpKTsKLSAgICAgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlf Y29sdW1uX2NvbGwudHJpZ2dlcigncGdhZG1pbjptdWx0aWNvbHVtbjp1cGRhdGVkJywgcHJpbWFy eV9rZXlfY29sdW1uX2NvbGwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGNvbGxlY3Rpb24ub24oJ2NoYW5nZTpuYW1l JywgZnVuY3Rpb24obSkgewotICAgICAgICAgICAgICBsZXQgcHJpbWFyeV9rZXkgPSBzZWxmLm1v ZGVsLmdldCgncHJpbWFyeV9rZXknKS5maXJzdCgpOwotICAgICAgICAgICAgICBpZihwcmltYXJ5 X2tleSkgewotICAgICAgICAgICAgICAgIGxldCB1cGRhdGVkQ29scyA9IHByaW1hcnlfa2V5Lmdl dCgnY29sdW1ucycpLndoZXJlKAotICAgICAgICAgICAgICAgICAge2NvbHVtbjogbS5wcmV2aW91 cygnbmFtZScpfQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgaWYgKHVwZGF0 ZWRDb2xzLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAg ICAgICAqIFRhYmxlIGNvbHVtbiBuYW1lIGhhcyBjaGFuZ2VkIHNvIHVwZGF0ZQotICAgICAgICAg ICAgICAgICAgKiBjb2x1bW4gbmFtZSBpbiBwcmltYXJ5IGtleSBhcyB3ZWxsLgotICAgICAgICAg ICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb2xzWzBdLnNldCgKLSAgICAg ICAgICAgICAgICAgICAgeydjb2x1bW4nOiBtLmdldCgnbmFtZScpfSwKLSAgICAgICAgICAgICAg ICAgICAge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg fQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGNvbGxlY3Rpb24ub24oJ3JlbW92ZScs IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgICAgbGV0IHByaW1hcnlfa2V5ID0gc2VsZi5tb2Rl bC5nZXQoJ3ByaW1hcnlfa2V5JykuZmlyc3QoKTsKLSAgICAgICAgICAgICAgaWYocHJpbWFyeV9r ZXkpIHsKLSAgICAgICAgICAgICAgICBsZXQgcmVtb3ZlZENvbHMgPSBwcmltYXJ5X2tleS5nZXQo J2NvbHVtbnMnKS53aGVyZSgKLSAgICAgICAgICAgICAgICAgIHtjb2x1bW46IG0uZ2V0KCduYW1l Jyl9Ci0gICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5Lmdl dCgnY29sdW1ucycpLnJlbW92ZShyZW1vdmVkQ29scyk7Ci0gICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIH0pOwogICAgICAgICAgIH0sCi0gICAgICAgIH0pLAotICAgICAgICBjYW5BZGQ6IHRy dWUsCi0gICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKLSAgICAgICAgLy8g Rm9yIGVhY2ggcm93IGVkaXQvZGVsZXRlIGJ1dHRvbiBlbmFibGUvZGlzYWJsZQotICAgICAgICBj YW5FZGl0Um93OiB0cnVlLAotICAgICAgICBjYW5EZWxldGVSb3c6IHRydWUsCi0gICAgICAgIGFs bG93TXVsdGlwbGVFbXB0eVJvdzogZmFsc2UsCi0gICAgICAgIGJlZm9yZUFkZDogZnVuY3Rpb24o bmV3TW9kZWwpIHsKLSAgICAgICAgICB0aGlzLmxhc3RfYXR0bnVtKys7Ci0gICAgICAgICAgbmV3 TW9kZWwuc2V0KCdhdHRudW0nLCB0aGlzLmxhc3RfYXR0bnVtKTsKLSAgICAgICAgICByZXR1cm4g bmV3TW9kZWw7Ci0gICAgICAgIH0sCi0gICAgICB9LHsKLSAgICAgICAgLy8gSGVyZSB3ZSB3aWxs IGNyZWF0ZSB0YWIgY29udHJvbCBmb3IgY29uc3RyYWludHMKLSAgICAgICAgLy8gV2Ugd2lsbCBo aWRlIHRoZSB0YWIgZm9yIEVSRAotICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ3Rh YicsIGdyb3VwOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwK LSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlkOiAncHJpbWFyeV9rZXknLCBsYWJlbDog JycsCi0gICAgICAgICAgbW9kZWw6IHRoaXMucGdCcm93c2VyLk5vZGVzWydwcmltYXJ5X2tleSdd Lm1vZGVsLmV4dGVuZCh7Ci0gICAgICAgICAgICB2YWxpZGF0ZTogKCk9Pnt9LAotICAgICAgICAg IH0pLAotICAgICAgICAgIHN1Ym5vZGU6IHRoaXMucGdCcm93c2VyLk5vZGVzWydwcmltYXJ5X2tl eSddLm1vZGVsLmV4dGVuZCh7Ci0gICAgICAgICAgICB2YWxpZGF0ZTogKCk9Pnt9LAotICAgICAg ICAgIH0pLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAot ICAgICAgICB9LAotICAgICAgICBdLAotICAgICAgfV0sCi0gICAgICB2YWxpZGF0ZTogZnVuY3Rp b24oKSB7Ci0gICAgICAgIHZhciBtc2csCi0gICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0KCduYW1l JyksCi0gICAgICAgICAgc2NoZW1hID0gdGhpcy5nZXQoJ3NjaGVtYScpOwotCi0gICAgICAgIGlm ICgKLSAgICAgICAgICBfLmlzVW5kZWZpbmVkKG5hbWUpIHx8IF8uaXNOdWxsKG5hbWUpIHx8Ci0g ICAgICAgICAgICBTdHJpbmcobmFtZSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJwot ICAgICAgICApIHsKLSAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBuYW1lIGNhbm5vdCBi ZSBlbXB0eS4nKTsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsK LSAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogQ2hlY2sgZXhp c3RpbmcgdGFibGUgbmFtZXMgKi8KLSAgICAgICAgbGV0IHNhbWVOYW1lQ291bnQgPSBfLmZpbHRl cihhbGxUYWJsZXMsICh0YWJsZSk9PnRhYmxlWzBdPT1zY2hlbWEmJnRhYmxlWzFdPT1uYW1lKS5s ZW5ndGg7Ci0gICAgICAgIGlmKGlzTmV3ICYmIHRoaXMuc2Vzc0F0dHJzWyduYW1lJ10gJiYgc2Ft ZU5hbWVDb3VudCA+IDAgfHwgaXNOZXcgJiYgc2FtZU5hbWVDb3VudCA+IDApIHsKLSAgICAgICAg ICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBuYW1lIGFscmVhZHkgZXhpc3RzLicpOwotICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwotICAgICAgICAgIHJldHVybiBtc2c7 Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7Ci0gICAg ICAgIGlmICgKLSAgICAgICAgICBfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwgXy5pc051bGwoc2No ZW1hKSB8fAotICAgICAgICAgICAgU3RyaW5nKHNjaGVtYSkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJwotICAgICAgICApIHsKLSAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBz Y2hlbWEgY2Fubm90IGJlIGVtcHR5LicpOwotICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J3NjaGVtYScsIG1zZyk7Ci0gICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgfQotICAgICAg ICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3NjaGVtYScpOwotCi0KLSAgICAgICAgcmV0dXJuIG51 bGw7CisgICAgICAgICAgdHJlZU5vZGVJbmZvLAorICAgICAgICAgIChwYXJhbXMpPT57CisgICAg ICAgICAgICBpZihwYXJhbXMudGlkKSB7CisgICAgICAgICAgICAgIHJldHVybiB0YWJsZU5vZGVz RGljdFtwYXJhbXMudGlkXS5nZXRDb2x1bW5zKCkubWFwKChjb2wpPT57CisgICAgICAgICAgICAg ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2wubmFtZSwgbGFiZWw6IGNv bC5uYW1lLCAnaW1hZ2UnOiAnaWNvbi1jb2x1bW4nLAorICAgICAgICAgICAgICAgIH07CisgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHthdXRvaW5kZXg6IGZh bHNlfSwgdHJ1ZSksCisgICAgICAgICAgKCk9Pm5ldyBFbXB0eVNjaGVtYSgpLAorICAgICAgICAg IHtzcGNuYW1lOiBbXX0sCisgICAgICAgICAgdHJ1ZQorICAgICAgICApLAogICAgICAgfSwKLSAg ICB9KTsKLQotICAgIHJldHVybiBuZXcgZGlhbG9nTW9kZWwoYXR0cmlidXRlcyk7CisgICAgICAo KT0+bmV3IEVtcHR5U2NoZW1hKCksCisgICAgICAoKT0+W10sCisgICAgICAoKT0+W10sCisgICAg ICAoKT0+W10sCisgICAgICAoKT0+W10sCisgICAgICBpc05ldyA/IHsKKyAgICAgICAgc2NoZW1h OiBzY2hlbWFzWzBdPy5uYW1lLAorICAgICAgfSA6IGF0dHJpYnV0ZXMsCisgICAgICB0cnVlCisg ICAgKTsKICAgfQogCi0gIGNyZWF0ZU9yR2V0RGlhbG9nKHR5cGUpIHsKKyAgY3JlYXRlT3JHZXRE aWFsb2codHlwZSwgc1ZlcnNpb24pIHsKICAgICBjb25zdCBkaWFsb2dOYW1lID0gdGhpcy5kaWFs b2dOYW1lKCk7CiAKICAgICBpZiAoIUFsZXJ0aWZ5W2RpYWxvZ05hbWVdKSB7CkBAIC03MzEsMTkg KzExNSwxNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZURpYWxvZyB7CiAgICAgICAgICAg YDxkaXYgY2xhc3M9IiR7ZGlhbG9nTmFtZX0iPjwvZGl2PmAsCiAgICAgICAgICAgbnVsbCwKICAg ICAgICAgICB0eXBlLAotICAgICAgICAgICQsCi0gICAgICAgICAgdGhpcy5wZ0Jyb3dzZXIsCiAg ICAgICAgICAgQWxlcnRpZnksCi0gICAgICAgICAgQmFja2Zvcm0KKyAgICAgICAgICBzVmVyc2lv bgogICAgICAgICApOwogICAgICAgfSk7CiAgICAgfQogICAgIHJldHVybiBBbGVydGlmeVtkaWFs b2dOYW1lXTsKICAgfQogCi0gIHNob3codGl0bGUsIGF0dHJpYnV0ZXMsIGlzTmV3LCBhbGxUYWJs ZXMsIGNvbFR5cGVzLCBzY2hlbWFzLCBzVmVyc2lvbiwgY2FsbGJhY2spIHsKKyAgc2hvdyh0aXRs ZSwgYXR0cmlidXRlcywgaXNOZXcsIHRhYmxlTm9kZXNEaWN0LCBjb2xUeXBlcywgc2NoZW1hcywg c2VydmVySW5mbywgY2FsbGJhY2spIHsKICAgICBsZXQgZGlhbG9nVGl0bGUgPSB0aXRsZSB8fCBn ZXR0ZXh0KCdVbmtub3duJyk7Ci0gICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVPckdldERp YWxvZygndGFibGVfZGlhbG9nJyk7Ci0gICAgZGlhbG9nKGRpYWxvZ1RpdGxlLCB0aGlzLmdldERh dGFNb2RlbChhdHRyaWJ1dGVzLCBpc05ldywgYWxsVGFibGVzLCBjb2xUeXBlcywgc2NoZW1hcywg c1ZlcnNpb24pLCBjYWxsYmFjaykucmVzaXplVG8odGhpcy5wZ0Jyb3dzZXIuc3RkVy5tZCwgdGhp cy5wZ0Jyb3dzZXIuc3RkSC5tZCk7CisgICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVPckdl dERpYWxvZygndGFibGVfZGlhbG9nJywgc2VydmVySW5mbyk7CisgICAgZGlhbG9nKGRpYWxvZ1Rp dGxlLCB0aGlzLmdldFVJU2NoZW1hKGF0dHJpYnV0ZXMsIGlzTmV3LCB0YWJsZU5vZGVzRGljdCwg Y29sVHlwZXMsIHNjaGVtYXMsIHNlcnZlckluZm8pLCBjYWxsYmFjaykucmVzaXplVG8odGhpcy5w Z0Jyb3dzZXIuc3RkVy5sZywgdGhpcy5wZ0Jyb3dzZXIuc3RkSC5tZCk7CiAgIH0KIH0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9p bmRleC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9n cy9pbmRleC5qcwppbmRleCBkNThkM2Y5YTYuLjM1OTA4NWNkMiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9kaWFsb2dzL2luZGV4LmpzCisrKyBi L3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9pbmRleC5q cwpAQCAtNyw3ICs3LDcgQEAKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1pbXBvcnQgVGFibGVEaWFsb2csIHt0cmFu c2Zvcm1Ub1N1cHBvcnRlZCBhcyB0cmFuc2Zvcm1Ub1N1cHBvcnRlZFRhYmxlfSBmcm9tICcuL1Rh YmxlRGlhbG9nJzsKK2ltcG9ydCBUYWJsZURpYWxvZyBmcm9tICcuL1RhYmxlRGlhbG9nJzsKIGlt cG9ydCBPbmVUb01hbnlEaWFsb2cgZnJvbSAnLi9PbmVUb01hbnlEaWFsb2cnOwogaW1wb3J0IE1h bnlUb01hbnlEaWFsb2cgZnJvbSAnLi9NYW55VG9NYW55RGlhbG9nJzsKIGltcG9ydCBwZ0Jyb3dz ZXIgZnJvbSAndG9wL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXInOwpAQCAtMTUsNyArMTUsNyBA QCBpbXBvcnQgJ3NvdXJjZXMvYmFja2dyaWQucGdhZG1pbic7CiBpbXBvcnQgJ3NvdXJjZXMvYmFj a2Zvcm0ucGdhZG1pbic7CiAKIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERpYWxvZyhkaWFs b2dOYW1lKSB7Ci0gIGlmKGRpYWxvZ05hbWUgPT09ICdlbnRpdHlfZGlhbG9nJykgeworICBpZihk aWFsb2dOYW1lID09PSAndGFibGVfZGlhbG9nJykgewogICAgIHJldHVybiBuZXcgVGFibGVEaWFs b2cocGdCcm93c2VyKTsKICAgfSBlbHNlIGlmKGRpYWxvZ05hbWUgPT09ICdvbmV0b21hbnlfZGlh bG9nJykgewogICAgIHJldHVybiBuZXcgT25lVG9NYW55RGlhbG9nKHBnQnJvd3Nlcik7CkBAIC0y MywxMCArMjMsMyBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREaWFsb2coZGlhbG9nTmFt ZSkgewogICAgIHJldHVybiBuZXcgTWFueVRvTWFueURpYWxvZyhwZ0Jyb3dzZXIpOwogICB9CiB9 Ci0KLWV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1Ub1N1cHBvcnRlZCh0eXBlLCBkYXRhKSB7Ci0g IGlmKHR5cGUgPT0gJ3RhYmxlJykgewotICAgIHJldHVybiB0cmFuc2Zvcm1Ub1N1cHBvcnRlZFRh YmxlKGRhdGEpOwotICB9Ci0gIHJldHVybiBkYXRhOwotfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9pbmRleC5qcyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvaW5kZXguanMKaW5kZXggZTg2NWMyOWJkLi4yYjE5 MDZmMTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rv b2wvaW5kZXguanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9v bC9pbmRleC5qcwpAQCAtMTIsNyArMTIsNyBAQCBpbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3Qt ZG9tJzsKIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CiAKIGltcG9ydCBCb2R5V2lkZ2V0IGZyb20g Jy4vdWlfY29tcG9uZW50cy9Cb2R5V2lkZ2V0JzsKLWltcG9ydCBnZXREaWFsb2csIHt0cmFuc2Zv cm1Ub1N1cHBvcnRlZH0gZnJvbSAnLi9kaWFsb2dzJzsKK2ltcG9ydCBnZXREaWFsb2cgZnJvbSAn Li9kaWFsb2dzJzsKIGltcG9ydCBBbGVydGlmeSBmcm9tICdwZ2FkbWluLmFsZXJ0aWZ5anMnOwog aW1wb3J0IHBnV2luZG93IGZyb20gJ3NvdXJjZXMvd2luZG93JzsKIGltcG9ydCBwZ0FkbWluIGZy b20gJ3NvdXJjZXMvcGdhZG1pbic7CkBAIC00MCw3ICs0MCw2IEBAIGV4cG9ydCBkZWZhdWx0IGNs YXNzIEVSRFRvb2wgewogICAgICAgPEJvZHlXaWRnZXQKICAgICAgICAgcGFyYW1zPXt0aGlzLnBh cmFtc30KICAgICAgICAgZ2V0RGlhbG9nPXtnZXREaWFsb2d9Ci0gICAgICAgIHRyYW5zZm9ybVRv U3VwcG9ydGVkPXt0cmFuc2Zvcm1Ub1N1cHBvcnRlZH0KICAgICAgICAgcGdXaW5kb3c9e3BnV2lu ZG93fQogICAgICAgICBwZ0FkbWluPXtwZ0FkbWlufQogICAgICAgICBwYW5lbD17cGFuZWx9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL25vZGVz L1RhYmxlTm9kZS5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29s L25vZGVzL1RhYmxlTm9kZS5qc3gKaW5kZXggYzRjNjJiNGI0Li5kYjJmZjMwNTAgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvbm9kZXMvVGFibGVO b2RlLmpzeAorKysgYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL25v ZGVzL1RhYmxlTm9kZS5qc3gKQEAgLTE4OCw3ICsxODgsNyBAQCBleHBvcnQgY2xhc3MgVGFibGVO b2RlV2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgcmVuZGVyKCkgewogICAgIGxl dCBub2RlX2RhdGEgPSB0aGlzLnByb3BzLm5vZGUuZ2V0RGF0YSgpOwogICAgIHJldHVybiAoCi0g ICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYmxlLW5vZGUgJyArICh0aGlzLnByb3BzLm5vZGUuaXNT ZWxlY3RlZCgpID8gJ3NlbGVjdGVkJzogJycpIH0gb25Eb3VibGVDbGljaz17KCk9Pnt0aGlzLnBy b3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnZWRpdE5vZGUnKTt9fT4KKyAgICAgIDxkaXYgY2xhc3NO YW1lPXsndGFibGUtbm9kZSAnICsgKHRoaXMucHJvcHMubm9kZS5pc1NlbGVjdGVkKCkgPyAnc2Vs ZWN0ZWQnOiAnJykgfSBvbkRvdWJsZUNsaWNrPXsoKT0+e3RoaXMucHJvcHMubm9kZS5maXJlRXZl bnQoe30sICdlZGl0VGFibGUnKTt9fT4KICAgICAgICAgPGRpdiBjbGFzc05hbWU9InRhYmxlLXRv b2xiYXIiPgogICAgICAgICAgIDxEZXRhaWxzVG9nZ2xlQnV0dG9uIGNsYXNzTmFtZT0nYnRuLXhz JyBzaG93RGV0YWlscz17dGhpcy5zdGF0ZS5zaG93X2RldGFpbHN9IG9uQ2xpY2s9e3RoaXMudG9n Z2xlU2hvd0RldGFpbHN9IG9uRG91YmxlQ2xpY2s9eyhlKT0+e2Uuc3RvcFByb3BhZ2F0aW9uKCk7 fX0gLz4KICAgICAgICAgICB7dGhpcy5wcm9wcy5ub2RlLmdldE5vdGUoKSAmJgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25lbnRz L0JvZHlXaWRnZXQuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9v bC91aV9jb21wb25lbnRzL0JvZHlXaWRnZXQuanN4CmluZGV4IDBlNjljMGI5YS4uNGZmODgyNWMx IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3Vp X2NvbXBvbmVudHMvQm9keVdpZGdldC5qc3gKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0 YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25lbnRzL0JvZHlXaWRnZXQuanN4CkBAIC0yNSw2ICsy NSw3IEBAIGltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CiBpbXBvcnQgdXJs X2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOwogaW1wb3J0IHtzaG93RVJEU3FsVG9vbH0gZnJv bSAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbCc7CiBpbXBvcnQgJ3dj ZG9ja2VyJzsKK2ltcG9ydCBUaGVtZSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMv VGhlbWUnOwogCiAvKiBDdXN0b20gcmVhY3QtZGlhZ3JhbSBhY3Rpb24gZm9yIGtleWJvYXJkIGV2 ZW50cyAqLwogZXhwb3J0IGNsYXNzIEtleWJvYXJkU2hvcnRjdXRBY3Rpb24gZXh0ZW5kcyBBY3Rp b24gewpAQCAtNzYsNiArNzcsOSBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4 dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAgIHNob3dfZGV0YWlsczogdHJ1ZSwKICAgICAg IGlzX25ld190YWI6IGZhbHNlLAogICAgICAgcHJlZmVyZW5jZXM6IHt9LAorICAgICAgdGFibGVf ZGlhbG9nX29wZW46IHRydWUsCisgICAgICBvdG9fZGlhbG9nX29wZW46IHRydWUsCisgICAgICBv dG1fZGlhbG9nX29wZW46IHRydWUsCiAgICAgfTsKICAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRVJE Q29yZSgpOwogICAgIC8qIEZsYWcgZm9yIGNoZWNraW5nIGlmIHVzZXIgaGFzIG9wdGVkIGZvciBz YXZlIGJlZm9yZSBjbG9zZSAqLwpAQCAtODgsNyArOTIsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFz cyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICB0aGlzLmtleWJvYXJk QWN0aW9uT2JqID0gbnVsbDsKIAogICAgIF8uYmluZEFsbCh0aGlzLCBbJ29uTG9hZERpYWdyYW0n LCAnb25TYXZlRGlhZ3JhbScsICdvblNhdmVBc0RpYWdyYW0nLCAnb25TUUxDbGljaycsCi0gICAg ICAnb25JbWFnZUNsaWNrJywgJ29uQWRkTmV3Tm9kZScsICdvbkVkaXROb2RlJywgJ29uQ2xvbmVO b2RlJywgJ29uRGVsZXRlTm9kZScsICdvbk5vdGVDbGljaycsCisgICAgICAnb25JbWFnZUNsaWNr JywgJ29uQWRkTmV3Tm9kZScsICdvbkVkaXRUYWJsZScsICdvbkNsb25lTm9kZScsICdvbkRlbGV0 ZU5vZGUnLCAnb25Ob3RlQ2xpY2snLAogICAgICAgJ29uTm90ZUNsb3NlJywgJ29uT25lVG9NYW55 Q2xpY2snLCAnb25NYW55VG9NYW55Q2xpY2snLCAnb25BdXRvRGlzdHJpYnV0ZScsICdvbkRldGFp bHNUb2dnbGUnLAogICAgICAgJ29uRGV0YWlsc1RvZ2dsZScsICdvbkhlbHBDbGljaycKICAgICBd KTsKQEAgLTEzMCw4ICsxMzQsOCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4 dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAgICdzaG93Tm90ZSc6IChldmVudCk9PnsKICAg ICAgICAgdGhpcy5zaG93Tm90ZShldmVudC5ub2RlKTsKICAgICAgIH0sCi0gICAgICAnZWRpdE5v ZGUnOiAoZXZlbnQpID0+IHsKLSAgICAgICAgdGhpcy5hZGRFZGl0Tm9kZShldmVudC5ub2RlKTsK KyAgICAgICdlZGl0VGFibGUnOiAoZXZlbnQpID0+IHsKKyAgICAgICAgdGhpcy5hZGRFZGl0VGFi bGUoZXZlbnQubm9kZSk7CiAgICAgICB9LAogICAgIH07CiAgICAgT2JqZWN0LmtleXMoZGlhZ3Jh bUV2ZW50cykuZm9yRWFjaChldmVudE5hbWUgPT4gewpAQCAtMTUwLDcgKzE1NCw3IEBAIGV4cG9y dCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAg ICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuZ2VuZXJhdGVfc3FsLCB0aGlzLm9uU1FMQ2xpY2td LAogICAgICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuZG93bmxvYWRfaW1hZ2UsIHRoaXMub25J bWFnZUNsaWNrXSwKICAgICAgIFt0aGlzLnN0YXRlLnByZWZlcmVuY2VzLmFkZF90YWJsZSwgdGhp cy5vbkFkZE5ld05vZGVdLAotICAgICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuZWRpdF90YWJs ZSwgdGhpcy5vbkVkaXROb2RlXSwKKyAgICAgIFt0aGlzLnN0YXRlLnByZWZlcmVuY2VzLmVkaXRf dGFibGUsIHRoaXMub25FZGl0VGFibGVdLAogICAgICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMu Y2xvbmVfdGFibGUsIHRoaXMub25DbG9uZU5vZGVdLAogICAgICAgW3RoaXMuc3RhdGUucHJlZmVy ZW5jZXMuZHJvcF90YWJsZSwgdGhpcy5vbkRlbGV0ZU5vZGVdLAogICAgICAgW3RoaXMuc3RhdGUu cHJlZmVyZW5jZXMuYWRkX2VkaXRfbm90ZSwgdGhpcy5vbk5vdGVDbGlja10sCkBAIC0yOTcsMTkg KzMwMSwyMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3Qu Q29tcG9uZW50IHsKICAgfQogCiAgIGdldERpYWxvZyhkaWFsb2dOYW1lKSB7Ci0gICAgaWYoZGlh bG9nTmFtZSA9PT0gJ2VudGl0eV9kaWFsb2cnKSB7Ci0gICAgICBsZXQgYWxsVGFibGVzID0gdGhp cy5kaWFncmFtLmdldE1vZGVsKCkuZ2V0Tm9kZXMoKS5tYXAoKG5vZGUpPT57Ci0gICAgICAgIHJl dHVybiBub2RlLmdldFNjaGVtYVRhYmxlTmFtZSgpOwotICAgICAgfSk7CisgICAgbGV0IHNlcnZl ckluZm8gPSB7CisgICAgICB0eXBlOiB0aGlzLnByb3BzLnBhcmFtcy5zZXJ2ZXJfdHlwZSwKKyAg ICAgIHZlcnNpb246IHRoaXMuc3RhdGUuc2VydmVyX3ZlcnNpb24sCisgICAgfTsKKyAgICBpZihk aWFsb2dOYW1lID09PSAndGFibGVfZGlhbG9nJykgewogICAgICAgcmV0dXJuICh0aXRsZSwgYXR0 cmlidXRlcywgaXNOZXcsIGNhbGxiYWNrKT0+ewogICAgICAgICB0aGlzLnByb3BzLmdldERpYWxv ZyhkaWFsb2dOYW1lKS5zaG93KAotICAgICAgICAgIHRpdGxlLCBhdHRyaWJ1dGVzLCBpc05ldywg YWxsVGFibGVzLCB0aGlzLmRpYWdyYW0uZ2V0Q2FjaGUoJ2NvbFR5cGVzJyksIHRoaXMuZGlhZ3Jh bS5nZXRDYWNoZSgnc2NoZW1hcycpLCB0aGlzLnN0YXRlLnNlcnZlcl92ZXJzaW9uLCBjYWxsYmFj aworICAgICAgICAgIHRpdGxlLCBhdHRyaWJ1dGVzLCBpc05ldywgdGhpcy5kaWFncmFtLmdldE1v ZGVsKCkuZ2V0Tm9kZXNEaWN0KCksIHRoaXMuZGlhZ3JhbS5nZXRDYWNoZSgnY29sVHlwZXMnKSwg dGhpcy5kaWFncmFtLmdldENhY2hlKCdzY2hlbWFzJyksIHNlcnZlckluZm8sIGNhbGxiYWNrCiAg ICAgICAgICk7CiAgICAgICB9OwogICAgIH0gZWxzZSBpZihkaWFsb2dOYW1lID09PSAnb25ldG9t YW55X2RpYWxvZycgfHwgZGlhbG9nTmFtZSA9PT0gJ21hbnl0b21hbnlfZGlhbG9nJykgewogICAg ICAgcmV0dXJuICh0aXRsZSwgYXR0cmlidXRlcywgY2FsbGJhY2spPT57CiAgICAgICAgIHRoaXMu cHJvcHMuZ2V0RGlhbG9nKGRpYWxvZ05hbWUpLnNob3coCi0gICAgICAgICAgdGl0bGUsIGF0dHJp YnV0ZXMsIHRoaXMuZGlhZ3JhbS5nZXRNb2RlbCgpLmdldE5vZGVzRGljdCgpLCB0aGlzLnN0YXRl LnNlcnZlcl92ZXJzaW9uLCBjYWxsYmFjaworICAgICAgICAgIHRpdGxlLCBhdHRyaWJ1dGVzLCB0 aGlzLmRpYWdyYW0uZ2V0TW9kZWwoKS5nZXROb2Rlc0RpY3QoKSwgc2VydmVySW5mbywgY2FsbGJh Y2sKICAgICAgICAgKTsKICAgICAgIH07CiAgICAgfQpAQCAtMzI4LDE3ICszMzMsMjAgQEAgZXhw b3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7CiAg ICAgfQogICB9CiAKLSAgYWRkRWRpdE5vZGUobm9kZSkgewotICAgIGxldCBkaWFsb2cgPSB0aGlz LmdldERpYWxvZygnZW50aXR5X2RpYWxvZycpOworICBhZGRFZGl0VGFibGUobm9kZSkgeworICAg IGxldCBkaWFsb2cgPSB0aGlzLmdldERpYWxvZygndGFibGVfZGlhbG9nJyk7CiAgICAgaWYobm9k ZSkgewogICAgICAgbGV0IFtzY2hlbWEsIHRhYmxlXSA9IG5vZGUuZ2V0U2NoZW1hVGFibGVOYW1l KCk7CiAgICAgICBkaWFsb2coZ2V0dGV4dCgnVGFibGU6ICVzICglcyknLCBfLmVzY2FwZSh0YWJs ZSksXy5lc2NhcGUoc2NoZW1hKSksIG5vZGUuZ2V0RGF0YSgpLCBmYWxzZSwgKG5ld0RhdGEpPT57 CisgICAgICAgIGxldCBvbGREYXRhID0gbm9kZS5nZXREYXRhKCk7CiAgICAgICAgIG5vZGUuc2V0 RGF0YShuZXdEYXRhKTsKKyAgICAgICAgdGhpcy5kaWFncmFtLnN5bmNUYWJsZUxpbmtzKG5vZGUs IG9sZERhdGEpOwogICAgICAgICB0aGlzLmRpYWdyYW0ucmVwYWludCgpOwogICAgICAgfSk7CiAg ICAgfSBlbHNlIHsKLSAgICAgIGRpYWxvZyhnZXR0ZXh0KCdOZXcgdGFibGUnKSwge25hbWU6IHRo aXMuZGlhZ3JhbS5nZXROZXh0VGFibGVOYW1lKCl9LCB0cnVlLCAobmV3RGF0YSk9PnsKKyAgICAg IGRpYWxvZyhnZXR0ZXh0KCdOZXcgdGFibGUnKSwge30sIHRydWUsIChuZXdEYXRhKT0+ewogICAg ICAgICBsZXQgbmV3Tm9kZSA9IHRoaXMuZGlhZ3JhbS5hZGROb2RlKG5ld0RhdGEpOworICAgICAg ICB0aGlzLmRpYWdyYW0uc3luY1RhYmxlTGlua3MobmV3Tm9kZSk7CiAgICAgICAgIG5ld05vZGUu c2V0U2VsZWN0ZWQodHJ1ZSk7CiAgICAgICB9KTsKICAgICB9CkBAIC0zNTMsMTUgKzM2MSwxNSBA QCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50 IHsKICAgICB9CiAgIH0KIAotICBvbkVkaXROb2RlKCkgeworICBvbkVkaXRUYWJsZSgpIHsKICAg ICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZGlhZ3JhbS5nZXRTZWxlY3RlZE5vZGVzKCk7CiAgICAg aWYoc2VsZWN0ZWQubGVuZ3RoID09IDEpIHsKLSAgICAgIHRoaXMuYWRkRWRpdE5vZGUoc2VsZWN0 ZWRbMF0pOworICAgICAgdGhpcy5hZGRFZGl0VGFibGUoc2VsZWN0ZWRbMF0pOwogICAgIH0KICAg fQogCiAgIG9uQWRkTmV3Tm9kZSgpIHsKLSAgICB0aGlzLmFkZEVkaXROb2RlKCk7CisgICAgdGhp cy5hZGRFZGl0VGFibGUoKTsKICAgfQogCiAgIG9uQ2xvbmVOb2RlKCkgewpAQCAtMzg1LDEwICsz OTMsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29t cG9uZW50IHsKICAgICAgICAgICBub2RlLnJlbW92ZSgpOwogICAgICAgICB9KTsKICAgICAgICAg dGhpcy5kaWFncmFtLmdldFNlbGVjdGVkTGlua3MoKS5mb3JFYWNoKChsaW5rKT0+ewotICAgICAg ICAgIGxpbmsuZ2V0VGFyZ2V0UG9ydCgpLnJlbW92ZSgpOwotICAgICAgICAgIGxpbmsuZ2V0U291 cmNlUG9ydCgpLnJlbW92ZSgpOwotICAgICAgICAgIGxpbmsuc2V0U2VsZWN0ZWQoZmFsc2UpOwot ICAgICAgICAgIGxpbmsucmVtb3ZlKCk7CisgICAgICAgICAgdGhpcy5kaWFncmFtLnJlbW92ZU9u ZVRvTWFueUxpbmsobGluayk7CiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLmRpYWdyYW0ucmVw YWludCgpOwogICAgICAgfSwKQEAgLTY1NiwxMCArNjYxLDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xh c3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7CiAgICAgbGV0IGRpYWxvZyA9 IHRoaXMuZ2V0RGlhbG9nKCdvbmV0b21hbnlfZGlhbG9nJyk7CiAgICAgbGV0IGluaXREYXRhID0g e2xvY2FsX3RhYmxlX3VpZDogdGhpcy5kaWFncmFtLmdldFNlbGVjdGVkTm9kZXMoKVswXS5nZXRJ RCgpfTsKICAgICBkaWFsb2coZ2V0dGV4dCgnT25lIHRvIG1hbnkgcmVsYXRpb24nKSwgaW5pdERh dGEsIChuZXdEYXRhKT0+ewotICAgICAgbGV0IG5ld0xpbmsgPSB0aGlzLmRpYWdyYW0uYWRkTGlu ayhuZXdEYXRhLCAnb25ldG9tYW55Jyk7Ci0gICAgICB0aGlzLmRpYWdyYW0uY2xlYXJTZWxlY3Rp b24oKTsKLSAgICAgIG5ld0xpbmsuc2V0U2VsZWN0ZWQodHJ1ZSk7Ci0gICAgICB0aGlzLmRpYWdy YW0ucmVwYWludCgpOworICAgICAgdGhpcy5kaWFncmFtLmFkZE9uZVRvTWFueUxpbmsobmV3RGF0 YSk7CiAgICAgfSk7CiAgIH0KIApAQCAtNjY3LDQ2ICs2NjksNyBAQCBleHBvcnQgZGVmYXVsdCBj bGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICBsZXQgZGlhbG9n ID0gdGhpcy5nZXREaWFsb2coJ21hbnl0b21hbnlfZGlhbG9nJyk7CiAgICAgbGV0IGluaXREYXRh ID0ge2xlZnRfdGFibGVfdWlkOiB0aGlzLmRpYWdyYW0uZ2V0U2VsZWN0ZWROb2RlcygpWzBdLmdl dElEKCl9OwogICAgIGRpYWxvZyhnZXR0ZXh0KCdNYW55IHRvIG1hbnkgcmVsYXRpb24nKSwgaW5p dERhdGEsIChuZXdEYXRhKT0+ewotICAgICAgbGV0IG5vZGVzID0gdGhpcy5kaWFncmFtLmdldE1v ZGVsKCkuZ2V0Tm9kZXNEaWN0KCk7Ci0gICAgICBsZXQgbGVmdF90YWJsZSA9IG5vZGVzW25ld0Rh dGEubGVmdF90YWJsZV91aWRdOwotICAgICAgbGV0IHJpZ2h0X3RhYmxlID0gbm9kZXNbbmV3RGF0 YS5yaWdodF90YWJsZV91aWRdOwotICAgICAgbGV0IHRhYmxlRGF0YSA9IHsKLSAgICAgICAgbmFt ZTogYCR7bGVmdF90YWJsZS5nZXREYXRhKCkubmFtZX1fJHtyaWdodF90YWJsZS5nZXREYXRhKCku bmFtZX1gLAotICAgICAgICBzY2hlbWE6IGxlZnRfdGFibGUuZ2V0RGF0YSgpLnNjaGVtYSwKLSAg ICAgICAgY29sdW1uczogW3sKLSAgICAgICAgICAuLi5sZWZ0X3RhYmxlLmdldENvbHVtbkF0KG5l d0RhdGEubGVmdF90YWJsZV9jb2x1bW5fYXR0bnVtKSwKLSAgICAgICAgICAnbmFtZSc6IGAke2xl ZnRfdGFibGUuZ2V0RGF0YSgpLm5hbWV9XyR7bGVmdF90YWJsZS5nZXRDb2x1bW5BdChuZXdEYXRh LmxlZnRfdGFibGVfY29sdW1uX2F0dG51bSkubmFtZX1gLAotICAgICAgICAgICdpc19wcmltYXJ5 X2tleSc6IGZhbHNlLAotICAgICAgICAgICdhdHRudW0nOiAwLAotICAgICAgICB9LHsKLSAgICAg ICAgICAuLi5yaWdodF90YWJsZS5nZXRDb2x1bW5BdChuZXdEYXRhLnJpZ2h0X3RhYmxlX2NvbHVt bl9hdHRudW0pLAotICAgICAgICAgICduYW1lJzogYCR7cmlnaHRfdGFibGUuZ2V0RGF0YSgpLm5h bWV9XyR7cmlnaHRfdGFibGUuZ2V0Q29sdW1uQXQobmV3RGF0YS5yaWdodF90YWJsZV9jb2x1bW5f YXR0bnVtKS5uYW1lfWAsCi0gICAgICAgICAgJ2lzX3ByaW1hcnlfa2V5JzogZmFsc2UsCi0gICAg ICAgICAgJ2F0dG51bSc6IDEsCi0gICAgICAgIH1dLAotICAgICAgfTsKLSAgICAgIGxldCBuZXdO b2RlID0gdGhpcy5kaWFncmFtLmFkZE5vZGUodGFibGVEYXRhKTsKLSAgICAgIHRoaXMuZGlhZ3Jh bS5jbGVhclNlbGVjdGlvbigpOwotICAgICAgbmV3Tm9kZS5zZXRTZWxlY3RlZCh0cnVlKTsKLQot ICAgICAgbGV0IGxpbmtEYXRhID0gewotICAgICAgICBsb2NhbF90YWJsZV91aWQ6IG5ld05vZGUu Z2V0SUQoKSwKLSAgICAgICAgbG9jYWxfY29sdW1uX2F0dG51bTogbmV3Tm9kZS5nZXRDb2x1bW5z KClbMF0uYXR0bnVtLAotICAgICAgICByZWZlcmVuY2VkX3RhYmxlX3VpZDogbmV3RGF0YS5sZWZ0 X3RhYmxlX3VpZCwKLSAgICAgICAgcmVmZXJlbmNlZF9jb2x1bW5fYXR0bnVtIDogbmV3RGF0YS5s ZWZ0X3RhYmxlX2NvbHVtbl9hdHRudW0sCi0gICAgICB9OwotICAgICAgdGhpcy5kaWFncmFtLmFk ZExpbmsobGlua0RhdGEsICdvbmV0b21hbnknKTsKLQotICAgICAgbGlua0RhdGEgPSB7Ci0gICAg ICAgIGxvY2FsX3RhYmxlX3VpZDogbmV3Tm9kZS5nZXRJRCgpLAotICAgICAgICBsb2NhbF9jb2x1 bW5fYXR0bnVtOiBuZXdOb2RlLmdldENvbHVtbnMoKVsxXS5hdHRudW0sCi0gICAgICAgIHJlZmVy ZW5jZWRfdGFibGVfdWlkOiBuZXdEYXRhLnJpZ2h0X3RhYmxlX3VpZCwKLSAgICAgICAgcmVmZXJl bmNlZF9jb2x1bW5fYXR0bnVtIDogbmV3RGF0YS5yaWdodF90YWJsZV9jb2x1bW5fYXR0bnVtLAot ICAgICAgfTsKLQotICAgICAgdGhpcy5kaWFncmFtLmFkZExpbmsobGlua0RhdGEsICdvbmV0b21h bnknKTsKLQotICAgICAgdGhpcy5kaWFncmFtLnJlcGFpbnQoKTsKKyAgICAgIHRoaXMuZGlhZ3Jh bS5hZGRNYW55VG9NYW55TGluayhuZXdEYXRhKTsKICAgICB9KTsKICAgfQogCkBAIC03OTQsMTAg Kzc1Nyw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5D b21wb25lbnQgewogCiAgICAgdHJ5IHsKICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGF4aW9z LmdldCh1cmwpOwotICAgICAgbGV0IHRhYmxlcyA9IHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKHRh YmxlKT0+ewotICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy50cmFuc2Zvcm1Ub1N1cHBvcnRlZCgn dGFibGUnLCB0YWJsZSk7Ci0gICAgICB9KTsKLSAgICAgIHRoaXMuZGlhZ3JhbS5kZXNlcmlhbGl6 ZURhdGEodGFibGVzKTsKKyAgICAgIHRoaXMuZGlhZ3JhbS5kZXNlcmlhbGl6ZURhdGEocmVzcG9u c2UuZGF0YS5kYXRhKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gY2F0Y2ggKGVycm9yKSB7 CiAgICAgICB0aGlzLmhhbmRsZUF4aW9zQ2F0Y2goZXJyb3IpOwpAQCAtODA5LDcgKzc2OSw3IEBA IGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQg ewogCiAgIHJlbmRlcigpIHsKICAgICByZXR1cm4gKAotICAgICAgPD4KKyAgICAgIDxUaGVtZT4K ICAgICAgICAgPFRvb2xCYXIgaWQ9ImJ0bi10b29sYmFyIj4KICAgICAgICAgICA8QnV0dG9uR3Jv dXA+CiAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0ib3Blbi1maWxlIiBpY29uPSJmYSBmYS1m b2xkZXItb3BlbiIgb25DbGljaz17dGhpcy5vbkxvYWREaWFncmFtfSB0aXRsZT17Z2V0dGV4dCgn TG9hZCBmcm9tIGZpbGUnKX0KQEAgLTgyOCw3ICs3ODgsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFz cyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAgICAgICA8QnV0dG9u R3JvdXA+CiAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0iYWRkLW5vZGUiIGljb249ImZhIGZh LXBsdXMtc3F1YXJlIiBvbkNsaWNrPXt0aGlzLm9uQWRkTmV3Tm9kZX0gdGl0bGU9e2dldHRleHQo J0FkZCB0YWJsZScpfQogICAgICAgICAgICAgICBzaG9ydGN1dD17dGhpcy5zdGF0ZS5wcmVmZXJl bmNlcy5hZGRfdGFibGV9Lz4KLSAgICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJlZGl0LW5vZGUi IGljb249ImZhIGZhLXBlbmNpbC1hbHQiIG9uQ2xpY2s9e3RoaXMub25FZGl0Tm9kZX0gdGl0bGU9 e2dldHRleHQoJ0VkaXQgdGFibGUnKX0KKyAgICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJlZGl0 LW5vZGUiIGljb249ImZhIGZhLXBlbmNpbC1hbHQiIG9uQ2xpY2s9e3RoaXMub25FZGl0VGFibGV9 IHRpdGxlPXtnZXR0ZXh0KCdFZGl0IHRhYmxlJyl9CiAgICAgICAgICAgICAgIHNob3J0Y3V0PXt0 aGlzLnN0YXRlLnByZWZlcmVuY2VzLmVkaXRfdGFibGV9IGRpc2FibGVkPXshdGhpcy5zdGF0ZS5z aW5nbGVfbm9kZV9zZWxlY3RlZCB8fCB0aGlzLnN0YXRlLnNpbmdsZV9saW5rX3NlbGVjdGVkfS8+ CiAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0iY2xvbmUtbm9kZSIgaWNvbj0iZmEgZmEtY2xv bmUiIG9uQ2xpY2s9e3RoaXMub25DbG9uZU5vZGV9IHRpdGxlPXtnZXR0ZXh0KCdDbG9uZSB0YWJs ZScpfQogICAgICAgICAgICAgICBzaG9ydGN1dD17dGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy5jbG9u ZV90YWJsZX0gZGlzYWJsZWQ9eyF0aGlzLnN0YXRlLnNpbmdsZV9ub2RlX3NlbGVjdGVkIHx8IHRo aXMuc3RhdGUuc2luZ2xlX2xpbmtfc2VsZWN0ZWR9Lz4KQEAgLTg2OSw3ICs4MjksNyBAQCBleHBv cnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAg ICAgICAgICA8TG9hZGVyIG1lc3NhZ2U9e3RoaXMuc3RhdGUubG9hZGluZ19tc2d9IGF1dG9FbGxp cHNpcz17dHJ1ZX0vPgogICAgICAgICAgIDxDYW52YXNXaWRnZXQgY2xhc3NOYW1lPSJkaWFncmFt LWNhbnZhcyBmbGV4LWdyb3ctMSIgcmVmPXsoZWxlKT0+e3RoaXMuY2FudmFzRWxlID0gZWxlPy5y ZWY/LmN1cnJlbnQ7fX0gZW5naW5lPXt0aGlzLmRpYWdyYW0uZ2V0RW5naW5lKCl9IC8+CiAgICAg ICAgIDwvZGl2PgotICAgICAgPC8+CisgICAgICA8L1RoZW1lPgogICAgICk7CiAgIH0KIH0KQEAg LTg4OCw3ICs4NDgsNiBAQCBCb2R5V2lkZ2V0LnByb3BUeXBlcyA9IHsKICAgICBnZW46IFByb3BU eXBlcy5ib29sLmlzUmVxdWlyZWQsCiAgIH0pLAogICBnZXREaWFsb2c6IFByb3BUeXBlcy5mdW5j LmlzUmVxdWlyZWQsCi0gIHRyYW5zZm9ybVRvU3VwcG9ydGVkOiBQcm9wVHlwZXMuZnVuYy5pc1Jl cXVpcmVkLAogICBwZ1dpbmRvdzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLAogICBwZ0Fk bWluOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsCiAgIGFsZXJ0aWZ5OiBQcm9wVHlwZXMu b2JqZWN0LmlzUmVxdWlyZWQsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3Rh dGljL3Njc3MvX2VyZC5zY3NzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9zY3NzL19l cmQuc2NzcwppbmRleCBmNDhkNjViNGMuLjE1MGVmNjc3OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvZXJkL3N0YXRpYy9zY3NzL19lcmQuc2NzcworKysgYi93ZWIvcGdhZG1pbi90b29s cy9lcmQvc3RhdGljL3Njc3MvX2VyZC5zY3NzCkBAIC0yMDUsMyArMjA1LDE0IEBACiAgICAgfQog ICB9CiB9CisKKy5hbGVydGlmeSB7CisgIC5lcmQtZGlhbG9nIHsKKyAgICAuYWpzLWJvZHkgLmFq cy1jb250ZW50IHsKKyAgICAgIGJvdHRvbTogMCFpbXBvcnRhbnQ7CisgICAgfQorICAgIC5hanMt Zm9vdGVyIHsKKyAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQg YS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2VyZC9lcmRfY29yZV9zcGVjLmpzIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvZXJkX2NvcmVfc3BlYy5qcwppbmRleCBiMjZhNWZjMDUu LjYzNWQ0ODhkNCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvZXJk X2NvcmVfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2VyZC9lcmRfY29y ZV9zcGVjLmpzCkBAIC05LDYgKzksNyBAQAogaW1wb3J0IEVSRENvcmUgZnJvbSAncGdhZG1pbi50 b29scy5lcmQvZXJkX3Rvb2wvRVJEQ29yZSc7CiBpbXBvcnQgKiBhcyBjcmVhdGVFbmdpbmVMaWIg ZnJvbSAnQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcyc7CiBpbXBvcnQgVEVTVF9UQUJMRVNf REFUQSBmcm9tICcuL3Rlc3RfdGFibGVzJzsKK2ltcG9ydCB7IEZha2VMaW5rLCBGYWtlTm9kZSB9 IGZyb20gJy4vZmFrZV9pdGVtJzsKIAogZGVzY3JpYmUoJ0VSRENvcmUnLCAoKT0+ewogICBsZXQg ZWxlRmFjdG9yeSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdub2RlRmFjdG9yaWVzJywgewpAQCAt MTMyLDcgKzEzMyw4IEBAIGRlc2NyaWJlKCdFUkRDb3JlJywgKCk9PnsKICAgICB9KTsKIAogICAg IGl0KCdhZGROb2RlJywgKCk9PnsKLSAgICAgIGxldCBuZXdOb2RlID0gamFzbWluZS5jcmVhdGVT cHlPYmooJ25ld05vZGUnLCBbJ3NldFBvc2l0aW9uJ10pOworICAgICAgbGV0IG5ld05vZGUgPSBu ZXcgRmFrZU5vZGUoe30pOworICAgICAgc3B5T24obmV3Tm9kZSwgJ3NldFBvc2l0aW9uJyk7CiAg ICAgICBzcHlPbihlcmRDb3JlT2JqLCAnZ2V0TmV3Tm9kZScpLmFuZC5yZXR1cm5WYWx1ZShuZXdO b2RlKTsKICAgICAgIHNweU9uKGVyZENvcmVPYmosICdjbGVhclNlbGVjdGlvbicpOwogCkBAIC0x NTEsMzMgKzE1MywxNyBAQCBkZXNjcmliZSgnRVJEQ29yZScsICgpPT57CiAKIAogICAgIGl0KCdh ZGRMaW5rJywgKCk9PnsKKyAgICAgIGxldCBub2RlMSA9IG5ldyBGYWtlTm9kZSh7J25hbWUnOiAn dGFibGUxJ30sICdpZDEnKTsKKyAgICAgIGxldCBub2RlMiA9IG5ldyBGYWtlTm9kZSh7J25hbWUn OiAndGFibGUyJ30sICdpZDInKTsKKyAgICAgIHNweU9uKG5vZGUxLCAnYWRkUG9ydCcpLmFuZC5j YWxsVGhyb3VnaCgpOworICAgICAgc3B5T24obm9kZTIsICdhZGRQb3J0JykuYW5kLmNhbGxUaHJv dWdoKCk7CiAgICAgICBsZXQgbm9kZXNEaWN0ID0gewotICAgICAgICAnaWQxJzogewotICAgICAg ICAgIHNlcmlhbGl6ZURhdGE6IGZ1bmN0aW9uKCl7IHJldHVybiB7Ci0gICAgICAgICAgICAnbmFt ZSc6ICd0YWJsZTEnLAotICAgICAgICAgIH07fSwKLSAgICAgICAgICBnZXRQb3J0TmFtZTogZnVu Y3Rpb24oYXR0bnVtKSB7Ci0gICAgICAgICAgICByZXR1cm4gYHBvcnQtJHthdHRudW19YDsKLSAg ICAgICAgICB9LAotICAgICAgICAgIGdldFBvcnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg cmV0dXJuIG51bGw7Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBhZGRQb3J0OiBqYXNtaW5lLmNy ZWF0ZVNweSgnYWRkUG9ydCcpLmFuZC5jYWxsRmFrZSgob2JqKT0+b2JqKSwKLSAgICAgICAgfSwK LSAgICAgICAgJ2lkMic6IHsKLSAgICAgICAgICBzZXJpYWxpemVEYXRhOiBmdW5jdGlvbigpeyBy ZXR1cm4gewotICAgICAgICAgICAgJ25hbWUnOiAndGFibGUyJywKLSAgICAgICAgICB9O30sCi0g ICAgICAgICAgZ2V0UG9ydE5hbWU6IGZ1bmN0aW9uKGF0dG51bSkgewotICAgICAgICAgICAgcmV0 dXJuIGBwb3J0LSR7YXR0bnVtfWA7Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBnZXRQb3J0OiBm dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgIH0sCi0gICAg ICAgICAgYWRkUG9ydDogamFzbWluZS5jcmVhdGVTcHkoJ2FkZFBvcnQnKS5hbmQuY2FsbEZha2Uo KG9iaik9Pm9iaiksCi0gICAgICAgIH0sCisgICAgICAgICdpZDEnOiBub2RlMSwKKyAgICAgICAg J2lkMic6IG5vZGUyLAogICAgICAgfTsKLSAgICAgIGxldCBsaW5rID0gamFzbWluZS5jcmVhdGVT cHlPYmooJ2xpbmsnLCBbJ3NldFNvdXJjZVBvcnQnLCAnc2V0VGFyZ2V0UG9ydCddKTsKKyAgICAg IGxldCBsaW5rID0gbmV3IEZha2VMaW5rKCk7CisgICAgICBzcHlPbihsaW5rLCAnc2V0U291cmNl UG9ydCcpLmFuZC5jYWxsVGhyb3VnaCgpOworICAgICAgc3B5T24obGluaywgJ3NldFRhcmdldFBv cnQnKS5hbmQuY2FsbFRocm91Z2goKTsKICAgICAgIHNweU9uKGVyZEVuZ2luZS5nZXRNb2RlbCgp LCAnZ2V0Tm9kZXNEaWN0JykuYW5kLnJldHVyblZhbHVlKG5vZGVzRGljdCk7CiAgICAgICBzcHlP bihlcmRDb3JlT2JqLCAnZ2V0TmV3TGluaycpLmFuZC5jYWxsRmFrZShmdW5jdGlvbigpIHsKICAg ICAgICAgcmV0dXJuIGxpbms7CkBAIC0xOTksNyArMTg1LDYgQEAgZGVzY3JpYmUoJ0VSRENvcmUn LCAoKT0+ewogICAgICAgZXhwZWN0KG5vZGVzRGljdFsnaWQyJ10uYWRkUG9ydCkudG9IYXZlQmVl bkNhbGxlZFdpdGgoe25hbWU6ICdwb3J0LTMnfSk7CiAgICAgICBleHBlY3QobGluay5zZXRTb3Vy Y2VQb3J0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7bmFtZTogJ3BvcnQtMSd9KTsKICAgICAgIGV4 cGVjdChsaW5rLnNldFRhcmdldFBvcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtuYW1lOiAncG9y dC0zJ30pOwotCiAgICAgfSk7CiAKICAgICBpdCgnc2VyaWFsaXplJywgKCk9PnsKQEAgLTIyMiw0 MSArMjA3LDI2IEBAIGRlc2NyaWJlKCdFUkRDb3JlJywgKCk9PnsKICAgICB9KTsKIAogICAgIGl0 KCdzZXJpYWxpemVEYXRhJywgKCk9PnsKLSAgICAgIHNweU9uKGVyZEVuZ2luZS5nZXRNb2RlbCgp LCAnZ2V0Tm9kZXNEaWN0JykuYW5kLnJldHVyblZhbHVlKHsKLSAgICAgICAgJ2lkMSc6IHsKLSAg ICAgICAgICBzZXJpYWxpemVEYXRhOiBmdW5jdGlvbigpeyByZXR1cm4gewotICAgICAgICAgICAg J25hbWUnOiAndGFibGUxJywKLSAgICAgICAgICB9O30sCi0gICAgICAgIH0sCi0gICAgICAgICdp ZDInOiB7Ci0gICAgICAgICAgc2VyaWFsaXplRGF0YTogZnVuY3Rpb24oKXsgcmV0dXJuIHsKLSAg ICAgICAgICAgICduYW1lJzogJ3RhYmxlMicsCi0gICAgICAgICAgfTt9LAotICAgICAgICB9LAot ICAgICAgfSk7CisgICAgICBsZXQgbm9kZTEgPSBuZXcgRmFrZU5vZGUoeyduYW1lJzogJ3RhYmxl MSd9LCAnaWQxJyk7CisgICAgICBsZXQgbm9kZTIgPSBuZXcgRmFrZU5vZGUoeyduYW1lJzogJ3Rh YmxlMid9LCAnaWQyJyk7CisgICAgICBsZXQgbm9kZXNEaWN0ID0geworICAgICAgICAnaWQxJzog bm9kZTEsCisgICAgICAgICdpZDInOiBub2RlMiwKKyAgICAgIH07CisgICAgICBzcHlPbihlcmRF bmdpbmUuZ2V0TW9kZWwoKSwgJ2dldE5vZGVzRGljdCcpLmFuZC5yZXR1cm5WYWx1ZShub2Rlc0Rp Y3QpOwogICAgICAgc3B5T24oZXJkRW5naW5lLmdldE1vZGVsKCksICdnZXRMaW5rcycpLmFuZC5y ZXR1cm5WYWx1ZShbCi0gICAgICAgIHsKLSAgICAgICAgICBzZXJpYWxpemVEYXRhOiAgZnVuY3Rp b24oKXsgcmV0dXJuIHsKLSAgICAgICAgICAgICduYW1lJzogJ2xpbmsxJywKLSAgICAgICAgICB9 O30sCi0gICAgICAgICAgZ2V0SUQ6ICBmdW5jdGlvbigpeyByZXR1cm4gJ2xpZDEnOyB9LAotICAg ICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgc2VyaWFsaXplRGF0YTogIGZ1bmN0aW9uKCl7 IHJldHVybiB7Ci0gICAgICAgICAgICAnbmFtZSc6ICdsaW5rMicsCi0gICAgICAgICAgfTt9LAot ICAgICAgICAgIGdldElEOiAgZnVuY3Rpb24oKXsgcmV0dXJuICdsaWQyJzsgfSwKLSAgICAgICAg fSwKKyAgICAgICAgbmV3IEZha2VMaW5rKHsKKyAgICAgICAgICAnbmFtZSc6ICdsaW5rMScsCisg ICAgICAgIH0sICdsaWQxJyksCisgICAgICAgIG5ldyBGYWtlTGluayh7CisgICAgICAgICAgJ25h bWUnOiAnbGluazInLAorICAgICAgICB9LCAnbGlkMicpLAogICAgICAgXSk7CiAgICAgICBleHBl Y3QoSlNPTi5zdHJpbmdpZnkoZXJkQ29yZU9iai5zZXJpYWxpemVEYXRhKCkpKS50b0VxdWFsKEpT T04uc3RyaW5naWZ5KHsKICAgICAgICAgbm9kZXM6IHsKICAgICAgICAgICAnaWQxJzogeyduYW1l JzogJ3RhYmxlMSd9LAogICAgICAgICAgICdpZDInOiB7J25hbWUnOiAndGFibGUyJ30sCiAgICAg ICAgIH0sCi0gICAgICAgIGxpbmtzOiB7Ci0gICAgICAgICAgJ2xpZDEnOiB7J25hbWUnOiAnbGlu azEnfSwKLSAgICAgICAgICAnbGlkMic6IHsnbmFtZSc6ICdsaW5rMid9LAotICAgICAgICB9LAog ICAgICAgfSkpOwogICAgIH0pOwogCkBAIC0yNzYsNiArMjQ2LDkgQEAgZGVzY3JpYmUoJ0VSRENv cmUnLCAoKT0+ewogICAgICAgICAgIGFkZFBvcnQ6IGZ1bmN0aW9uKCkgewogCiAgICAgICAgICAg fSwKKyAgICAgICAgICBnZXREYXRhOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiB0 YWJsZTsKKyAgICAgICAgICB9CiAgICAgICAgIH07CiAgICAgICB9KTsKICAgICAgIHNweU9uKGVy ZEVuZ2luZS5nZXRNb2RlbCgpLCAnZ2V0Tm9kZXNEaWN0JykuYW5kLnJldHVyblZhbHVlKG5vZGVz RGljdCk7CkBAIC0yODgsMTEgKzI2MSw3IEBAIGRlc2NyaWJlKCdFUkRDb3JlJywgKCk9PnsKICAg ICAgIH0pOwogICAgICAgc3B5T24oZXJkQ29yZU9iaiwgJ2dldE5ld1BvcnQnKS5hbmQucmV0dXJu VmFsdWUoe2lkOiAnaWQnfSk7CiAgICAgICBzcHlPbihlcmRDb3JlT2JqLCAnYWRkTm9kZScpLmFu ZC5jYWxsRmFrZShmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg Z2V0SUQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIGBpZC0ke2RhdGEubmFtZX1g OwotICAgICAgICAgIH0sCi0gICAgICAgIH07CisgICAgICAgIHJldHVybiBuZXcgRmFrZU5vZGUo e30sIGBpZC0ke2RhdGEubmFtZX1gKTsKICAgICAgIH0pOwogICAgICAgc3B5T24oZXJkQ29yZU9i aiwgJ2FkZExpbmsnKTsKICAgICAgIHNweU9uKGVyZENvcmVPYmosICdkYWdyZURpc3RyaWJ1dGVO b2RlcycpOwpAQCAtMzE5LDggKzI4OCw4IEBAIGRlc2NyaWJlKCdFUkRDb3JlJywgKCk9PnsKIAog ICAgIGl0KCdnZXROb2Rlc0RhdGEnLCAoKT0+ewogICAgICAgc3B5T24oZXJkRW5naW5lLmdldE1v ZGVsKCksICdnZXROb2RlcycpLmFuZC5yZXR1cm5WYWx1ZShbCi0gICAgICAgIHtnZXREYXRhOiBm dW5jdGlvbiAoKSB7cmV0dXJuIHtuYW1lOidub2RlMSd9O319LAotICAgICAgICB7Z2V0RGF0YTog ZnVuY3Rpb24gKCkge3JldHVybiB7bmFtZTonbm9kZTInfTt9fSwKKyAgICAgICAgbmV3IEZha2VO b2RlKHtuYW1lOidub2RlMSd9KSwKKyAgICAgICAgbmV3IEZha2VOb2RlKHtuYW1lOidub2RlMid9 KSwKICAgICAgIF0pOwogICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KGVyZENvcmVPYmouZ2V0 Tm9kZXNEYXRhKCkpKS50b0VxdWFsKEpTT04uc3RyaW5naWZ5KFsKICAgICAgICAge25hbWU6J25v ZGUxJ30sIHtuYW1lOidub2RlMid9LApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9lcmQvZmFrZV9pdGVtLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvZmFr ZV9pdGVtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDk4ZWYxZGIx Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvZmFrZV9p dGVtLmpzCkBAIC0wLDAgKzEsNDIgQEAKK2ltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CisKK2V4cG9y dCBjbGFzcyBGYWtlTm9kZSB7CisgIGNvbnN0cnVjdG9yKGRhdGEsIGlkPSduaWQxJykgeworICAg IHRoaXMuZGF0YSA9IGRhdGEgfHwge307CisgICAgdGhpcy5pZCA9IGlkOworICB9CisgIHNldFNl bGVjdGVkKCkge30KKyAgZ2V0Q29sdW1ucygpIHtyZXR1cm4gdGhpcy5kYXRhLmNvbHVtbnM7fQor ICBnZXRJRCgpIHtyZXR1cm4gdGhpcy5pZDt9CisgIHNldERhdGEoZGF0YSkge3RoaXMuZGF0YSA9 IGRhdGE7fQorICBnZXREYXRhKCkge3JldHVybiB0aGlzLmRhdGE7fQorICBnZXRQb3NpdGlvbigp IHtyZXR1cm4ge3g6IDMwLCB5OiAzMH07fQorICBzZXRQb3NpdGlvbigpIHt9CisgIHNlcmlhbGl6 ZURhdGEoKSB7cmV0dXJuIHRoaXMuZ2V0RGF0YSgpO30KKyAgZ2V0UG9ydE5hbWUoYXR0bnVtKSB7 cmV0dXJuIGBwb3J0LSR7YXR0bnVtfWA7fQorICBnZXRQb3J0KCkge3JldHVybiBudWxsO30KKyAg YWRkUG9ydChvYmopIHtyZXR1cm4gb2JqO30KKyAgZ2V0Q29sdW1uQXQocG9zKSB7cmV0dXJuIF8u ZmluZCh0aGlzLmdldENvbHVtbnMoKXx8W10sIChjKT0+Yy5hdHRudW09PXBvcyk7fQorICByZW1v dmUoKSB7fQorICBnZXRTY2hlbWFUYWJsZU5hbWUoKSB7cmV0dXJuIFt0aGlzLmRhdGEuc2NoZW1h LCB0aGlzLmRhdGEubmFtZV07fQorICBjbG9uZURhdGEodGFiTmFtZSkgeworICAgIGxldCByZXRW YWwgPSB7Li4udGhpcy5kYXRhfTsKKyAgICByZXRWYWwubmFtZSA9IHRhYk5hbWU7CisgICAgcmV0 dXJuIHJldFZhbDsKKyAgfQorfQorCitleHBvcnQgY2xhc3MgRmFrZUxpbmsgeworICBjb25zdHJ1 Y3RvcihkYXRhLCBpZD0nbGlkMScpIHsKKyAgICB0aGlzLmRhdGEgPSBkYXRhOworICAgIHRoaXMu aWQgPSBpZDsKKyAgfQorICBzZXRTZWxlY3RlZCgpIHt9CisgIGdldElEKCkge3JldHVybiB0aGlz LmlkO30KKyAgZ2V0RGF0YSgpIHtyZXR1cm4gdGhpcy5kYXRhO30KKyAgZ2V0U291cmNlUG9ydCgp IHtyZXR1cm4ge3JlbW92ZTogKCk9Pnt9fTt9CisgIHNldFNvdXJjZVBvcnQoKSB7fQorICBnZXRU YXJnZXRQb3J0KCkge3JldHVybiB7cmVtb3ZlOiAoKT0+e319O30KKyAgc2V0VGFyZ2V0UG9ydCgp IHt9CisgIHJlbW92ZSgpIHt9Cit9CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMgYi93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMKaW5kZXgg MjA5NWVjZDkwLi5jYTMwZjYzZmYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvZXJkL3VpX2NvbXBvbmVudHMvYm9keV93aWRnZXRfc3BlYy5qcworKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMKQEAg LTEwLDYgKzEwLDcgQEAgaW1wb3J0ICogYXMgZXJkTW9kdWxlIGZyb20gJ3BnYWRtaW4udG9vbHMu ZXJkL2VyZF9tb2R1bGUnOwogaW1wb3J0IGVyZFByZWYgZnJvbSAnLi9lcmRfcHJlZmVyZW5jZXMn OwogaW1wb3J0IEJvZHlXaWRnZXQgZnJvbSAncGdhZG1pbi50b29scy5lcmQvZXJkX3Rvb2wvdWlf Y29tcG9uZW50cy9Cb2R5V2lkZ2V0JzsKIGltcG9ydCAqIGFzIEVSRFNxbFRvb2wgZnJvbSAndG9v bHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbCc7CitpbXBvcnQgeyBGYWtlTGlu aywgRmFrZU5vZGUgfSBmcm9tICcuLi9mYWtlX2l0ZW0nOwogCiBsZXQgcGdBZG1pbiA9IHsKICAg QnJvd3NlcjogewpAQCAtNjAsNyArNjEsNyBAQCBsZXQgbXRtRGlhbG9nID0gamFzbWluZS5jcmVh dGVTcHlPYmooJ210bURpYWxvZycsIFsnc2hvdyddKTsKIAogbGV0IGdldERpYWxvZyA9IChkaWFs b2dOYW1lKT0+ewogICBzd2l0Y2goZGlhbG9nTmFtZSkgewotICBjYXNlICdlbnRpdHlfZGlhbG9n JzogcmV0dXJuIHRhYmxlRGlhbG9nOworICBjYXNlICd0YWJsZV9kaWFsb2cnOiByZXR1cm4gdGFi bGVEaWFsb2c7CiAgIGNhc2UgJ29uZXRvbWFueV9kaWFsb2cnOiByZXR1cm4gb3RtRGlhbG9nOwog ICBjYXNlICdtYW55dG9tYW55X2RpYWxvZyc6IHJldHVybiBtdG1EaWFsb2c7CiAgIH0KQEAgLTkz LDE5ICs5NCwxNiBAQCBkZXNjcmliZSgnRVJEIEJvZHlXaWRnZXQnLCAoKT0+ewogICAgIHRpdGxl OiAncG9zdGdyZXMvcG9zdGdyZXNAUG9zdGdyZVNRTCAxMicsCiAgICAgdHJhbnNfaWQ6IDExMDAw OCwKICAgfTsKKyAgbGV0IG5ld05vZGUgPSBuZXcgRmFrZU5vZGUoeworICAgIGNvbHVtbnM6IFt7 YXR0bnVtOiAwfSwge2F0dG51bTogMX1dLAorICB9LCAnbmV3aWQxJyk7CiAKICAgYmVmb3JlQWxs KCgpPT57CiAgICAgc3B5T24oZXJkTW9kdWxlLCAnc2V0UGFuZWxUaXRsZScpOwogICAgIHNweU9u KEVSRENvcmUucHJvdG90eXBlLCAncmVwYWludCcpOwogICAgIHNweU9uKEVSRENvcmUucHJvdG90 eXBlLCAnZGVzZXJpYWxpemVEYXRhJyk7Ci0gICAgc3B5T24oRVJEQ29yZS5wcm90b3R5cGUsICdh ZGROb2RlJykuYW5kLnJldHVyblZhbHVlKHsKLSAgICAgIHNldFNlbGVjdGVkOiAoKT0+e30sCi0g ICAgICBnZXRDb2x1bW5zOiAoKT0+KFt7YXR0bnVtOiAwfSwge2F0dG51bTogMX1dKSwKLSAgICAg IGdldElEOiAoKT0+J25ld2lkMScsCi0gICAgfSk7Ci0gICAgc3B5T24oRVJEQ29yZS5wcm90b3R5 cGUsICdhZGRMaW5rJykuYW5kLnJldHVyblZhbHVlKHsKLSAgICAgIHNldFNlbGVjdGVkOiAoKT0+ e30sCi0gICAgfSk7CisgICAgc3B5T24oRVJEQ29yZS5wcm90b3R5cGUsICdhZGROb2RlJykuYW5k LnJldHVyblZhbHVlKG5ld05vZGUpOworICAgIHNweU9uKEVSRENvcmUucHJvdG90eXBlLCAnYWRk TGluaycpLmFuZC5yZXR1cm5WYWx1ZShuZXcgRmFrZUxpbmsoKSk7CiAgICAgc3B5T24oYWxlcnRp ZnksICdjb25maXJtJykuYW5kLmNhbGxGYWtlKChhcmcxLCBhcmcyLCBva0NhbGxiYWNrKT0+ewog ICAgICAgb2tDYWxsYmFjaygpOwogICAgIH0pOwpAQCAtMTI4LDcgKzEyNiw3IEBAIGRlc2NyaWJl KCdFUkQgQm9keVdpZGdldCcsICgpPT57CiAKICAgYmVmb3JlRWFjaCgoKT0+ewogICAgIGphc21p bmVFbnp5bWUoKTsKLSAgICBib2R5ID0gbW91bnQoPEJvZHlXaWRnZXQgcGFyYW1zPXtwYXJhbXN9 IHBnQWRtaW49e3BnQWRtaW59IHBnV2luZG93PXtwZ1dpbmRvd30gZ2V0RGlhbG9nPXtnZXREaWFs b2d9IHRyYW5zZm9ybVRvU3VwcG9ydGVkPXsoKT0+e319IGFsZXJ0aWZ5PXthbGVydGlmeX0vPik7 CisgICAgYm9keSA9IG1vdW50KDxCb2R5V2lkZ2V0IHBhcmFtcz17cGFyYW1zfSBwZ0FkbWluPXtw Z0FkbWlufSBwZ1dpbmRvdz17cGdXaW5kb3d9IGdldERpYWxvZz17Z2V0RGlhbG9nfSBhbGVydGlm eT17YWxlcnRpZnl9Lz4pOwogICAgIGJvZHlJbnN0YW5jZSA9IGJvZHkuaW5zdGFuY2UoKTsKICAg fSk7CiAKQEAgLTIyNSwxOCArMjIzLDE4IEBAIGRlc2NyaWJlKCdFUkQgQm9keVdpZGdldCcsICgp PT57CiAgICAgfSk7CiAgIH0pOwogCi0gIGl0KCdldmVudCBlZGl0Tm9kZScsIChkb25lKT0+ewor ICBpdCgnZXZlbnQgZWRpdFRhYmxlJywgKGRvbmUpPT57CiAgICAgbGV0IG5vZGUgPSB7a2V5OiAn dmFsdWUnLCBnZXROb3RlOiAoKT0+J2Egbm90ZSd9OwotICAgIHNweU9uKGJvZHlJbnN0YW5jZSwg J2FkZEVkaXROb2RlJyk7Ci0gICAgYm9keUluc3RhbmNlLmRpYWdyYW0uZmlyZUV2ZW50KHtub2Rl OiBub2RlfSwgJ2VkaXROb2RlJywgdHJ1ZSk7CisgICAgc3B5T24oYm9keUluc3RhbmNlLCAnYWRk RWRpdFRhYmxlJyk7CisgICAgYm9keUluc3RhbmNlLmRpYWdyYW0uZmlyZUV2ZW50KHtub2RlOiBu b2RlfSwgJ2VkaXRUYWJsZScsIHRydWUpOwogICAgIHNldFRpbWVvdXQoKCk9PnsKLSAgICAgIGV4 cGVjdChib2R5SW5zdGFuY2UuYWRkRWRpdE5vZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG5vZGUp OworICAgICAgZXhwZWN0KGJvZHlJbnN0YW5jZS5hZGRFZGl0VGFibGUpLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKG5vZGUpOwogICAgICAgZG9uZSgpOwogICAgIH0pOwogICB9KTsKIAogICBpdCgnZ2V0 RGlhbG9nJywgKCk9PnsKLSAgICBib2R5SW5zdGFuY2UuZ2V0RGlhbG9nKCdlbnRpdHlfZGlhbG9n JykoKTsKKyAgICBib2R5SW5zdGFuY2UuZ2V0RGlhbG9nKCd0YWJsZV9kaWFsb2cnKSgpOwogICAg IGV4cGVjdCh0YWJsZURpYWxvZy5zaG93KS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAKICAgICBib2R5 SW5zdGFuY2UuZ2V0RGlhbG9nKCdvbmV0b21hbnlfZGlhbG9nJykoKTsKQEAgLTI0NiwxMCArMjQ0 LDIwIEBAIGRlc2NyaWJlKCdFUkQgQm9keVdpZGdldCcsICgpPT57CiAgICAgZXhwZWN0KG10bURp YWxvZy5zaG93KS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAgIH0pOwogCi0gIGl0KCdhZGRFZGl0Tm9k ZScsICgpPT57CisgIGl0KCdhZGRFZGl0VGFibGUnLCAoKT0+eworICAgIGxldCBub2RlMSA9IG5l dyBGYWtlTm9kZSh7J25hbWUnOiAndGFibGUxJywgc2NoZW1hOiAnZXJkMScsIGNvbHVtbnM6IFt7 bmFtZTogJ2NvbDEnLCB0eXBlOiAndHlwZTEnLCBhdHRudW06IDF9XX0sICdpZDEnKTsKKyAgICBs ZXQgbm9kZTIgPSBuZXcgRmFrZU5vZGUoeyduYW1lJzogJ3RhYmxlMicsIHNjaGVtYTogJ2VyZDIn LCBjb2x1bW5zOiBbe25hbWU6ICdjb2wyJywgdHlwZTogJ3R5cGUyJywgYXR0bnVtOiAyfV19LCAn aWQyJyk7CisgICAgbGV0IG5vZGVzRGljdCA9IHsKKyAgICAgICdpZDEnOiBub2RlMSwKKyAgICAg ICdpZDInOiBub2RlMiwKKyAgICB9OworICAgIHNweU9uKGJvZHlJbnN0YW5jZS5kaWFncmFtLCAn Z2V0TW9kZWwnKS5hbmQucmV0dXJuVmFsdWUoeworICAgICAgJ2dldE5vZGVzRGljdCc6ICgpPT5u b2Rlc0RpY3QsCisgICAgfSk7CisgICAgc3B5T24oYm9keUluc3RhbmNlLmRpYWdyYW0sICdhZGRM aW5rJyk7CiAgICAgLyogTmV3ICovCiAgICAgdGFibGVEaWFsb2cuc2hvdy5jYWxscy5yZXNldCgp OwotICAgIGJvZHlJbnN0YW5jZS5hZGRFZGl0Tm9kZSgpOworICAgIGJvZHlJbnN0YW5jZS5hZGRF ZGl0VGFibGUoKTsKICAgICBleHBlY3QodGFibGVEaWFsb2cuc2hvdykudG9IYXZlQmVlbkNhbGxl ZCgpOwogCiAgICAgbGV0IHNhdmVDYWxsYmFjayA9IHRhYmxlRGlhbG9nLnNob3cuY2FsbHMubW9z dFJlY2VudCgpLmFyZ3NbN107CkBAIC0yNTksMTIgKzI2Nyw5IEBAIGRlc2NyaWJlKCdFUkQgQm9k eVdpZGdldCcsICgpPT57CiAKICAgICAvKiBFeGlzdGluZyAqLwogICAgIHRhYmxlRGlhbG9nLnNo b3cuY2FsbHMucmVzZXQoKTsKLSAgICBsZXQgbm9kZSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdu b2RlJyx7Ci0gICAgICBnZXRTY2hlbWFUYWJsZU5hbWU6IFsnZXJkMScsICd0YWJsZTEnXSwKLSAg ICAgIHNldERhdGE6IG51bGwsCi0gICAgICBnZXREYXRhOiBudWxsLAotICAgIH0pOwotICAgIGJv ZHlJbnN0YW5jZS5hZGRFZGl0Tm9kZShub2RlKTsKKyAgICBsZXQgbm9kZSA9IG5ldyBGYWtlTm9k ZSh7bmFtZTogJ3RhYmxlMScsIHNjaGVtYTogJ2VyZDEnfSk7CisgICAgc3B5T24obm9kZSwgJ3Nl dERhdGEnKTsKKyAgICBib2R5SW5zdGFuY2UuYWRkRWRpdFRhYmxlKG5vZGUpOwogICAgIGV4cGVj dCh0YWJsZURpYWxvZy5zaG93KS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAKICAgICBzYXZlQ2FsbGJh Y2sgPSB0YWJsZURpYWxvZy5zaG93LmNhbGxzLm1vc3RSZWNlbnQoKS5hcmdzWzddOwpAQCAtMjcz LDQ5ICsyNzgsNDQgQEAgZGVzY3JpYmUoJ0VSRCBCb2R5V2lkZ2V0JywgKCk9PnsKICAgICBleHBl Y3Qobm9kZS5zZXREYXRhKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChuZXdEYXRhKTsKICAgfSk7CiAK LSAgaXQoJ29uRWRpdE5vZGUnLCAoKT0+eworICBpdCgnb25FZGl0VGFibGUnLCAoKT0+ewogICAg IGxldCBub2RlID0ge2tleTogJ3ZhbHVlJ307Ci0gICAgc3B5T24oYm9keUluc3RhbmNlLCAnYWRk RWRpdE5vZGUnKTsKKyAgICBzcHlPbihib2R5SW5zdGFuY2UsICdhZGRFZGl0VGFibGUnKTsKICAg ICBzcHlPbihib2R5SW5zdGFuY2UuZGlhZ3JhbSwgJ2dldFNlbGVjdGVkTm9kZXMnKS5hbmQucmV0 dXJuVmFsdWUoW25vZGVdKTsKLSAgICBib2R5SW5zdGFuY2Uub25FZGl0Tm9kZSgpOwotICAgIGV4 cGVjdChib2R5SW5zdGFuY2UuYWRkRWRpdE5vZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG5vZGUp OworICAgIGJvZHlJbnN0YW5jZS5vbkVkaXRUYWJsZSgpOworICAgIGV4cGVjdChib2R5SW5zdGFu Y2UuYWRkRWRpdFRhYmxlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChub2RlKTsKICAgfSk7CiAKICAg aXQoJ29uQWRkTmV3Tm9kZScsICgpPT57Ci0gICAgc3B5T24oYm9keUluc3RhbmNlLCAnYWRkRWRp dE5vZGUnKTsKKyAgICBzcHlPbihib2R5SW5zdGFuY2UsICdhZGRFZGl0VGFibGUnKTsKICAgICBi b2R5SW5zdGFuY2Uub25BZGROZXdOb2RlKCk7Ci0gICAgZXhwZWN0KGJvZHlJbnN0YW5jZS5hZGRF ZGl0Tm9kZSkudG9IYXZlQmVlbkNhbGxlZCgpOworICAgIGV4cGVjdChib2R5SW5zdGFuY2UuYWRk RWRpdFRhYmxlKS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAgIH0pOwogCiAgIGl0KCdvbkNsb25lTm9k ZScsICgpPT57Ci0gICAgbGV0IG5vZGUgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignbm9kZScsewot ICAgICAgZ2V0U2NoZW1hVGFibGVOYW1lOiBbJ2VyZDEnLCAndGFibGUxJ10sCi0gICAgICBzZXRE YXRhOiBudWxsLAotICAgICAgZ2V0RGF0YTogbnVsbCwKLSAgICAgIGNsb25lRGF0YToge2tleTog J3ZhbHVlJ30sCi0gICAgICBnZXRQb3NpdGlvbjoge3g6IDMwLCB5OiAzMH0sCi0gICAgfSk7Cisg ICAgbGV0IG5vZGUgPSBuZXcgRmFrZU5vZGUoe25hbWU6ICd0YWJsZTEnLCBzY2hlbWE6ICdlcmQx J30pOwogICAgIHNweU9uKGJvZHlJbnN0YW5jZS5kaWFncmFtLCAnZ2V0U2VsZWN0ZWROb2Rlcycp LmFuZC5yZXR1cm5WYWx1ZShbbm9kZV0pOwogICAgIHNweU9uKGJvZHlJbnN0YW5jZS5kaWFncmFt LCAnZ2V0TmV4dFRhYmxlTmFtZScpLmFuZC5yZXR1cm5WYWx1ZSgnbmV3dGFibGUxJyk7CisgICAg Ym9keUluc3RhbmNlLmRpYWdyYW0uYWRkTm9kZS5jYWxscy5yZXNldCgpOwogICAgIGJvZHlJbnN0 YW5jZS5vbkNsb25lTm9kZSgpOwotICAgIGV4cGVjdChib2R5SW5zdGFuY2UuZGlhZ3JhbS5hZGRO b2RlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7a2V5OiAndmFsdWUnfSwgWzUwLCA1MF0pOworICAg IGxldCBjbG9uZUFyZ3MgPSBib2R5SW5zdGFuY2UuZGlhZ3JhbS5hZGROb2RlLmNhbGxzLmFyZ3NG b3IoMCk7CisgICAgZXhwZWN0KGNsb25lQXJnc1swXSkudG9FcXVhbChqYXNtaW5lLm9iamVjdENv bnRhaW5pbmcoeworICAgICAgbmFtZTogJ25ld3RhYmxlMScsCisgICAgICBzY2hlbWE6ICdlcmQx JywKKyAgICB9KSk7CisgICAgZXhwZWN0KGNsb25lQXJnc1sxXSkudG9FcXVhbChbNTAsIDUwXSk7 CiAgIH0pOwogCiAgIGl0KCdvbkRlbGV0ZU5vZGUnLCAoZG9uZSk9PnsKLSAgICBsZXQgbm9kZSA9 IGphc21pbmUuY3JlYXRlU3B5T2JqKCdub2RlJyx7Ci0gICAgICBnZXRTY2hlbWFUYWJsZU5hbWU6 IFsnZXJkMScsICd0YWJsZTEnXSwKLSAgICAgIHNldERhdGE6IG51bGwsCi0gICAgICBnZXREYXRh OiBudWxsLAotICAgICAgY2xvbmVEYXRhOiB7a2V5OiAndmFsdWUnfSwKLSAgICAgIGdldFBvc2l0 aW9uOiB7eDogMzAsIHk6IDMwfSwKLSAgICAgIHJlbW92ZTogbnVsbCwKLSAgICAgIHNldFNlbGVj dGVkOiBudWxsLAotICAgIH0pOwotICAgIGxldCBsaW5rID0gamFzbWluZS5jcmVhdGVTcHlPYmoo J2xpbmsnLCB7Ci0gICAgICByZW1vdmU6IG51bGwsCi0gICAgICBzZXRTZWxlY3RlZDogbnVsbCwK LSAgICAgIGdldFRhcmdldFBvcnQ6IGphc21pbmUuY3JlYXRlU3B5T2JqKCdwb3J0JywgWydyZW1v dmUnXSksCi0gICAgICBnZXRTb3VyY2VQb3J0OiBqYXNtaW5lLmNyZWF0ZVNweU9iaigncG9ydCcs IFsncmVtb3ZlJ10pLAorICAgIGxldCBub2RlID0gbmV3IEZha2VOb2RlKHtuYW1lOiAndGFibGUx Jywgc2NoZW1hOiAnZXJkMSd9KTsKKyAgICBzcHlPbihub2RlLCAncmVtb3ZlJyk7CisgICAgbGV0 IGxpbmsgPSBuZXcgRmFrZUxpbmsoe2xvY2FsX3RhYmxlX3VpZDogJ3RpZDEnfSk7CisgICAgc3B5 T24obGluaywgJ3JlbW92ZScpOworICAgIGxldCBub2Rlc0RpY3QgPSB7CisgICAgICAndGlkMSc6 IG5vZGUKKyAgICB9OworICAgIHNweU9uKGJvZHlJbnN0YW5jZS5kaWFncmFtLCAnZ2V0TW9kZWwn KS5hbmQucmV0dXJuVmFsdWUoeworICAgICAgJ2dldE5vZGVzRGljdCc6ICgpPT5ub2Rlc0RpY3Qs CiAgICAgfSk7CiAgICAgc3B5T24oYm9keUluc3RhbmNlLmRpYWdyYW0sICdnZXRTZWxlY3RlZE5v ZGVzJykuYW5kLnJldHVyblZhbHVlKFtub2RlXSk7CiAgICAgc3B5T24oYm9keUluc3RhbmNlLmRp YWdyYW0sICdnZXRTZWxlY3RlZExpbmtzJykuYW5kLnJldHVyblZhbHVlKFtsaW5rXSk7CkBAIC00 MTMsOSArNDEzLDE3IEBAIGRlc2NyaWJlKCdFUkQgQm9keVdpZGdldCcsICgpPT57CiAgIH0pOwog CiAgIGl0KCdvbk9uZVRvTWFueUNsaWNrJywgKCk9PnsKLSAgICBsZXQgbm9kZSA9IGphc21pbmUu Y3JlYXRlU3B5T2JqKCdub2RlJyx7Ci0gICAgICBnZXRJRDogJ2lkMScsCisgICAgbGV0IG5vZGUg PSBuZXcgRmFrZU5vZGUoe30sICdpZDEnKTsKKyAgICBsZXQgbm9kZTEgPSBuZXcgRmFrZU5vZGUo eyduYW1lJzogJ3RhYmxlMScsIHNjaGVtYTogJ2VyZDEnLCBjb2x1bW5zOiBbe25hbWU6ICdjb2wx JywgdHlwZTogJ3R5cGUxJywgYXR0bnVtOiAxfV19LCAnaWQxJyk7CisgICAgbGV0IG5vZGUyID0g bmV3IEZha2VOb2RlKHsnbmFtZSc6ICd0YWJsZTInLCBzY2hlbWE6ICdlcmQyJywgY29sdW1uczog W3tuYW1lOiAnY29sMicsIHR5cGU6ICd0eXBlMicsIGF0dG51bTogMn1dfSwgJ2lkMicpOworICAg IGxldCBub2Rlc0RpY3QgPSB7CisgICAgICAnaWQxJzogbm9kZTEsCisgICAgICAnaWQyJzogbm9k ZTIsCisgICAgfTsKKyAgICBzcHlPbihib2R5SW5zdGFuY2UuZGlhZ3JhbSwgJ2dldE1vZGVsJyku YW5kLnJldHVyblZhbHVlKHsKKyAgICAgICdnZXROb2Rlc0RpY3QnOiAoKT0+bm9kZXNEaWN0LAog ICAgIH0pOworICAgIHNweU9uKGJvZHlJbnN0YW5jZS5kaWFncmFtLCAnYWRkTGluaycpOwogICAg IHNweU9uKGJvZHlJbnN0YW5jZS5kaWFncmFtLCAnZ2V0U2VsZWN0ZWROb2RlcycpLmFuZC5yZXR1 cm5WYWx1ZShbbm9kZV0pOwogCiAgICAgb3RtRGlhbG9nLnNob3cuY2FsbHMucmVzZXQoKTsKQEAg LTQyMywxNSArNDMxLDE4IEBAIGRlc2NyaWJlKCdFUkQgQm9keVdpZGdldCcsICgpPT57CiAgICAg ZXhwZWN0KG90bURpYWxvZy5zaG93KS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAKICAgICBsZXQgc2F2 ZUNhbGxiYWNrID0gb3RtRGlhbG9nLnNob3cuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbNF07Ci0g ICAgbGV0IG5ld0RhdGEgPSB7a2V5OiAndmFsdWUnfTsKKyAgICBsZXQgbmV3RGF0YSA9IHsKKyAg ICAgIGxvY2FsX3RhYmxlX3VpZDogJ2lkMScsCisgICAgICBsb2NhbF9jb2x1bW5fYXR0bnVtOiAx LAorICAgICAgcmVmZXJlbmNlZF90YWJsZV91aWQ6ICdpZDInLAorICAgICAgcmVmZXJlbmNlZF9j b2x1bW5fYXR0bnVtOiAyLAorICAgIH07CiAgICAgc2F2ZUNhbGxiYWNrKG5ld0RhdGEpOwogICAg IGV4cGVjdChib2R5SW5zdGFuY2UuZGlhZ3JhbS5hZGRMaW5rKS50b0hhdmVCZWVuQ2FsbGVkV2l0 aChuZXdEYXRhLCAnb25ldG9tYW55Jyk7CiAgIH0pOwogCiAgIGl0KCdvbk1hbnlUb01hbnlDbGlj aycsICgpPT57Ci0gICAgbGV0IG5vZGUgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignbm9kZScsewot ICAgICAgZ2V0SUQ6ICdpZDEnLAotICAgIH0pOworICAgIGxldCBub2RlID0gbmV3IEZha2VOb2Rl KHt9LCAnaWQxJyk7CiAgICAgc3B5T24oYm9keUluc3RhbmNlLmRpYWdyYW0sICdnZXRTZWxlY3Rl ZE5vZGVzJykuYW5kLnJldHVyblZhbHVlKFtub2RlXSk7CiAKICAgICBtdG1EaWFsb2cuc2hvdy5j YWxscy5yZXNldCgpOwpAQCAtNDM5LDE5ICs0NTAsMTIgQEAgZGVzY3JpYmUoJ0VSRCBCb2R5V2lk Z2V0JywgKCk9PnsKICAgICBleHBlY3QobXRtRGlhbG9nLnNob3cpLnRvSGF2ZUJlZW5DYWxsZWQo KTsKIAogICAgIC8qIG9uU2F2ZSAqLworICAgIGxldCBub2RlMSA9IG5ldyBGYWtlTm9kZSh7J25h bWUnOiAndGFibGUxJywgc2NoZW1hOiAnZXJkMScsIGNvbHVtbnM6IFt7bmFtZTogJ2NvbDEnLCB0 eXBlOiAndHlwZTEnLCBhdHRudW06IDF9XX0sICdpZDEnKTsKKyAgICBsZXQgbm9kZTIgPSBuZXcg RmFrZU5vZGUoeyduYW1lJzogJ3RhYmxlMicsIHNjaGVtYTogJ2VyZDInLCBjb2x1bW5zOiBbe25h bWU6ICdjb2wyJywgdHlwZTogJ3R5cGUyJywgYXR0bnVtOiAyfV19LCAnaWQyJyk7CiAgICAgbGV0 IG5vZGVzRGljdCA9IHsKLSAgICAgICdpZDEnOiB7Ci0gICAgICAgIGdldElEOiAoKT0+J2lkMScs Ci0gICAgICAgIGdldERhdGE6ICgpPT4oe25hbWU6ICd0YWJsZTEnLCBzY2hlbWE6ICdlcmQxJ30p LAotICAgICAgICBnZXRDb2x1bW5BdDogKCk9Pih7bmFtZTogJ2NvbDEnLCB0eXBlOiAndHlwZTEn LCBhdHRudW06IDB9KSwKLSAgICAgICAgYWRkUG9ydDogamFzbWluZS5jcmVhdGVTcHkoJ2FkZFBv cnQnKS5hbmQuY2FsbEZha2UoKG9iaik9Pm9iaiksCi0gICAgICB9LAotICAgICAgJ2lkMic6IHsK LSAgICAgICAgZ2V0SUQ6ICgpPT4naWQyJywKLSAgICAgICAgZ2V0RGF0YTogKCk9Pih7bmFtZTog J3RhYmxlMicsIHNjaGVtYTogJ2VyZDInfSksCi0gICAgICAgIGdldENvbHVtbkF0OiAoKT0+KHtu YW1lOiAnY29sMicsIHR5cGU6ICd0eXBlMicsIGF0dG51bTogMX0pLAotICAgICAgICBhZGRQb3J0 OiBqYXNtaW5lLmNyZWF0ZVNweSgnYWRkUG9ydCcpLmFuZC5jYWxsRmFrZSgob2JqKT0+b2JqKSwK LSAgICAgIH0sCisgICAgICAnaWQxJzogbm9kZTEsCisgICAgICAnaWQyJzogbm9kZTIsCisgICAg ICAnbmV3aWQxJzogbmV3Tm9kZSwKICAgICB9OwogICAgIHNweU9uKGJvZHlJbnN0YW5jZS5kaWFn cmFtLCAnZ2V0TW9kZWwnKS5hbmQucmV0dXJuVmFsdWUoewogICAgICAgJ2dldE5vZGVzRGljdCc6 ICgpPT5ub2Rlc0RpY3QsCkBAIC00NjgsMjQgKzQ3MiwyMSBAQCBkZXNjcmliZSgnRVJEIEJvZHlX aWRnZXQnLCAoKT0+ewogICAgIGJvZHlJbnN0YW5jZS5kaWFncmFtLmFkZE5vZGUuY2FsbHMucmVz ZXQoKTsKICAgICBib2R5SW5zdGFuY2UuZGlhZ3JhbS5hZGRMaW5rLmNhbGxzLnJlc2V0KCk7CiAg ICAgc2F2ZUNhbGxiYWNrKG5ld0RhdGEpOwotICAgIGV4cGVjdChib2R5SW5zdGFuY2UuZGlhZ3Jh bS5hZGROb2RlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7CisgICAgbGV0IHRhYmxlRGF0YSA9IGJv ZHlJbnN0YW5jZS5kaWFncmFtLmFkZE5vZGUuY2FsbHMuYXJnc0ZvcigwKVswXTsKKyAgICBleHBl Y3QodGFibGVEYXRhKS50b0VxdWFsKGphc21pbmUub2JqZWN0Q29udGFpbmluZyh7CiAgICAgICBu YW1lOiAndGFibGUxX3RhYmxlMicsCiAgICAgICBzY2hlbWE6ICdlcmQxJywKLSAgICAgIGNvbHVt bnM6IFsKLSAgICAgICAgewotICAgICAgICAgIHR5cGU6ICd0eXBlMScsCi0gICAgICAgICAgbmFt ZTogJ3RhYmxlMV9jb2wxJywKLSAgICAgICAgICBpc19wcmltYXJ5X2tleTogZmFsc2UsCi0gICAg ICAgICAgYXR0bnVtOiAwLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgdHlwZTog J3R5cGUyJywKLSAgICAgICAgICBuYW1lOiAndGFibGUyX2NvbDInLAotICAgICAgICAgIGlzX3By aW1hcnlfa2V5OiBmYWxzZSwKLSAgICAgICAgICBhdHRudW06IDEsCi0gICAgICAgIH0sCi0gICAg ICBdLAotICAgIH0pOworICAgIH0pKTsKKyAgICBleHBlY3QodGFibGVEYXRhLmNvbHVtbnNbMF0p LnRvRXF1YWwoamFzbWluZS5vYmplY3RDb250YWluaW5nKHsKKyAgICAgIHR5cGU6ICd0eXBlMScs CisgICAgICBuYW1lOiAndGFibGUxX2NvbDEnLAorICAgICAgYXR0bnVtOiAwLAorICAgIH0pKTsK KyAgICBleHBlY3QodGFibGVEYXRhLmNvbHVtbnNbMV0pLnRvRXF1YWwoamFzbWluZS5vYmplY3RD b250YWluaW5nKHsKKyAgICAgIHR5cGU6ICd0eXBlMicsCisgICAgICBuYW1lOiAndGFibGUyX2Nv bDInLAorICAgICAgYXR0bnVtOiAxLAorICAgIH0pKTsKIAogICAgIGxldCBsaW5rRGF0YSA9IHsK ICAgICAgIGxvY2FsX3RhYmxlX3VpZDogJ25ld2lkMScsCmRpZmYgLS1naXQgYS93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L3NjaGVtYV91aV9maWxlcy9jb2x1bW4udWkuc3BlYy5qcyBiL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvc2NoZW1hX3VpX2ZpbGVzL2NvbHVtbi51aS5zcGVjLmpzCmlu ZGV4IGE2NTI4YWIxNi4uYmRlM2FmZjI3IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L3NjaGVtYV91aV9maWxlcy9jb2x1bW4udWkuc3BlYy5qcworKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L3NjaGVtYV91aV9maWxlcy9jb2x1bW4udWkuc3BlYy5qcwpAQCAtMjAy LDEzICsyMDIsMTMgQEAgZGVzY3JpYmUoJ0NvbHVtblNjaGVtYScsICgpPT57CiAgICAgZXhwZWN0 KHNjaGVtYU9iai5pblNjaGVtYVdpdGhDb2x1bW5DaGVjayhzdGF0ZSkpLnRvQmUodHJ1ZSk7CiAK ICAgICBzY2hlbWFPYmoubm9kZUluZm8gPSB7fTsKLSAgICBleHBlY3Qoc2NoZW1hT2JqLmluU2No ZW1hV2l0aENvbHVtbkNoZWNrKHN0YXRlKSkudG9CZSh0cnVlKTsKKyAgICBleHBlY3Qoc2NoZW1h T2JqLmluU2NoZW1hV2l0aENvbHVtbkNoZWNrKHN0YXRlKSkudG9CZShmYWxzZSk7CiAgIH0pOwog CiAgIGl0KCdlZGl0YWJsZUNoZWNrRm9yVGFibGUnLCAoKT0+ewogICAgIGxldCBzdGF0ZSA9IHt9 OwogICAgIHNjaGVtYU9iai5ub2RlSW5mbyA9IHt9OwotICAgIGV4cGVjdChzY2hlbWFPYmouZWRp dGFibGVDaGVja0ZvclRhYmxlKHN0YXRlKSkudG9CZShmYWxzZSk7CisgICAgZXhwZWN0KHNjaGVt YU9iai5lZGl0YWJsZUNoZWNrRm9yVGFibGUoc3RhdGUpKS50b0JlKHRydWUpOwogICB9KTsKIAog ICBpdCgnZGVwQ2hhbmdlJywgKCk9PnsKZGlmZiAtLWdpdCBhL3dlYi95YXJuLmxvY2sgYi93ZWIv eWFybi5sb2NrCmluZGV4IGI5MmM0OWEyZC4uMjU0YTM3YTlkIDEwMDY0NAotLS0gYS93ZWIveWFy bi5sb2NrCisrKyBiL3dlYi95YXJuLmxvY2sKQEAgLTE0NjQsNTAgKzE0NjQsNTAgQEAKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHBvcHBlcmpzL2NvcmUvLS9jb3Jl LTIuOS4wLnRneiMzMmU2MzIxMjI5M2RkM2VmYmI1MjFjZDM1YTUwMjBhYjY2ZWFhNTQ2IgogICBp bnRlZ3JpdHkgc2hhNTEyLXdqdEtlaEZBSUFScTJPeEs4ajNKcmdnTmxFc2xKZk51U20yQXJ0ZUli S3lSTXRzMmcwYTdLelR4ZlJWTlVNK08wZ25CSjJoTlY4bldQT1lCZ0kxc2V3PT0KIAotIkBwcm9q ZWN0c3Rvcm0vZ2VvbWV0cnlAXjYuNS4yIjoKLSAgdmVyc2lvbiAiNi41LjIiCi0gIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bwcm9qZWN0c3Rvcm0vZ2VvbWV0cnkvLS9n ZW9tZXRyeS02LjUuMi50Z3ojNzZjY2M3MjgwYTQ5YzY0OTUzMDM2YWE5NjI4N2Y0MDg5ODFlNTkx MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1QR3JjTVhyNkNrZEgxRHZjWStNRFl6ZzZzdVduT1hlaFA4 UzY5RGhpRWVXVUZtUWhLSlNDQVBFb3ZkUU9wb2hMNnVybEthU05iRE04YXVVeXBGYlRmdz09Ci0K LSJAcHJvamVjdHN0b3JtL3JlYWN0LWNhbnZhcy1jb3JlQF42LjUuMiI6Ci0gIHZlcnNpb24gIjYu NS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AcHJvamVjdHN0 b3JtL3JlYWN0LWNhbnZhcy1jb3JlLy0vcmVhY3QtY2FudmFzLWNvcmUtNi41LjIudGd6IzY1NzI2 ZGYzOWMxNTQ4N2Q5YzZiMjM2MTZjZmE2YjE4MmQ4MmZjYmUiCi0gIGludGVncml0eSBzaGE1MTIt dEZmV3BhUFo3MWxNREZSTDY5alJGVGptWWl0NkZLTnBrQWlJOXNxWWVIMkk0WTdPanV4bUNxWW9t bHpoOFpTTFZ3S0h0Y0k2VmQ3aGhvYXRFQnVwRVE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBw cm9qZWN0c3Rvcm0vZ2VvbWV0cnkiICJeNi41LjIiCi0KLSJAcHJvamVjdHN0b3JtL3JlYWN0LWRp YWdyYW1zLWNvcmVAXjYuNS4yIjoKLSAgdmVyc2lvbiAiNi41LjIiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMtY29y ZS8tL3JlYWN0LWRpYWdyYW1zLWNvcmUtNi41LjIudGd6IzRjOGM5MmVkMjg4YjI5MzRkZTExYzFh NTJmZGE3MjI0OWIxNTE5MzIiCi0gIGludGVncml0eSBzaGE1MTItN2dhbkpHczdsY1JCMXNUdlVz K01ROVJpU0NHRCtJSGdJU280NWFTODErWEZsbE84dTd1WlJhUGRJeU9iaHora2h3WnZNazJwV21Y WVBOSndHVGhPWlE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBwcm9qZWN0c3Rvcm0vZ2VvbWV0 cnkiICJeNi41LjIiCi0gICAgIkBwcm9qZWN0c3Rvcm0vcmVhY3QtY2FudmFzLWNvcmUiICJeNi41 LjIiCi0KLSJAcHJvamVjdHN0b3JtL3JlYWN0LWRpYWdyYW1zLWRlZmF1bHRzQF42LjUuMiI6Ci0g IHZlcnNpb24gIjYuNS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AcHJvamVjdHN0b3JtL3JlYWN0LWRpYWdyYW1zLWRlZmF1bHRzLy0vcmVhY3QtZGlhZ3JhbXMt ZGVmYXVsdHMtNi41LjIudGd6IzA4NDEzOGU4YjJhYzI2NDNiY2ZhMTE1ZmI1NDNmNjljMGVhZjg4 ZjMiCi0gIGludGVncml0eSBzaGE1MTItOCtoQWU4OExqN3VCc3VnQVQ3ZjVTc2pxeG1qWWZlQll3 VmlhRnBuSWlsbXVZRi91WE4wdy9uczhNY3EyRkU0OXdHT1h0Qm94RnVzb1dtRFd3Z0UrZlE9PQot ICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMtY29yZSIg Il42LjUuMiIKLQotIkBwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMtcm91dGluZ0BeNi41LjIi OgotICB2ZXJzaW9uICI2LjUuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr Zy5jb20vQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcy1yb3V0aW5nLy0vcmVhY3QtZGlhZ3Jh bXMtcm91dGluZy02LjUuMi50Z3ojODI0ZGFkYmNkOGMxNGM2NDc4MjliZGQ0NzYxYWZlZjY5ZGVj NTYyMiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1wV3NEbWsvNGhieDZJaTJaM1V2ZDlkWi94QjlGN3U2 Nm1HVkdNV2IzdHh4VFQ2OFk2bXdkVkpSUUZ1L2ZybS9TazNzWnY3Z05mMUVxYWRzaWxJaDd2Zz09 Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQHByb2plY3RzdG9ybS9nZW9tZXRyeSIgIl42LjUuMiIK LSAgICAiQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcy1jb3JlIiAiXjYuNS4yIgotICAgICJA cHJvamVjdHN0b3JtL3JlYWN0LWRpYWdyYW1zLWRlZmF1bHRzIiAiXjYuNS4yIgotCi0iQHByb2pl Y3RzdG9ybS9yZWFjdC1kaWFncmFtc0BeNi40LjIiOgotICB2ZXJzaW9uICI2LjUuMiIKLSAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHByb2plY3RzdG9ybS9yZWFjdC1k aWFncmFtcy8tL3JlYWN0LWRpYWdyYW1zLTYuNS4yLnRneiMzZjY1YTkwM2IxODUzZTUxZDY4MTA5 YTUxM2Q5MWQxOTBkMjc4ODY0IgotICBpbnRlZ3JpdHkgc2hhNTEyLTF4bHoxalZmZldxNVI3T3Fq L0JFWTA2Q2YrMnVMVjVlRVk2cEd4dUdGZnA1U1hlVE5DU0lTL2toa2JGb3U3MDdHb3IzRDhNT3Fk QnBadkYyTmZvTG1BPT0KLSAgZGVwZW5kZW5jaWVzOgotICAgICJAcHJvamVjdHN0b3JtL3JlYWN0 LWRpYWdyYW1zLWNvcmUiICJeNi41LjIiCi0gICAgIkBwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3Jh bXMtZGVmYXVsdHMiICJeNi41LjIiCi0gICAgIkBwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMt cm91dGluZyIgIl42LjUuMiIKKyJAcHJvamVjdHN0b3JtL2dlb21ldHJ5QF42LjYuMSI6CisgIHZl cnNpb24gIjYuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9A cHJvamVjdHN0b3JtL2dlb21ldHJ5Ly0vZ2VvbWV0cnktNi42LjEudGd6IzRhNDJmNWM4ZmRmY2Mz ZDk1MWU3M2Y1ZGI3ZmU5NTQ2NTE0YWNjM2QiCisgIGludGVncml0eSBzaGE1MTItZ1dSa3YrZm0r Vklwb2ZmSHpESFBtR1lsRXF4OHhXR2ZFL0pSN1RYQVp3ZU5kakVJeHloVCsraFZsQ0ppRkpTKy9j R3FnTjN6K2VQN1BOandaVVBHUmc9PQorCisiQHByb2plY3RzdG9ybS9yZWFjdC1jYW52YXMtY29y ZUBeNi42LjEiOgorICB2ZXJzaW9uICI2LjYuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQHByb2plY3RzdG9ybS9yZWFjdC1jYW52YXMtY29yZS8tL3JlYWN0LWNh bnZhcy1jb3JlLTYuNi4xLnRneiM5M2NjNmU3MGU5ODZmZTYyMGI2ZmFkNmI1OTdkM2FhMDM4MDc1 MjQ0IgorICBpbnRlZ3JpdHkgc2hhNTEyLXdBeEVoNFdqYTJBdTBRQXVMcXhKTmFXcFZ4WUlmZlRG VVpoakg4d3RXOE1LQ1dTNlc5Um5QNnVwZUM4UVZRaTI5TlM1OVVJWDR3WE56YjZlNmh0NXd3PT0K KyAgZGVwZW5kZW5jaWVzOgorICAgICJAcHJvamVjdHN0b3JtL2dlb21ldHJ5IiAiXjYuNi4xIgor CisiQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcy1jb3JlQF42LjYuMSI6CisgIHZlcnNpb24g IjYuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AcHJvamVj dHN0b3JtL3JlYWN0LWRpYWdyYW1zLWNvcmUvLS9yZWFjdC1kaWFncmFtcy1jb3JlLTYuNi4xLnRn eiNmNjI2YzYyNTNkZDZmNGIwNGMzMjU2OTc2YjU1Mzc3ZmZhYzJiMWJiIgorICBpbnRlZ3JpdHkg c2hhNTEyLVRpRHdwY0grdDJiMnRHL1VIRFF2aGx5eDNnT1FSSlh4VHlORG83cCs0MzBpa1Rydnox Zjh1TmU1UnQzU3J6eXF4ZVVhekxGWFlCZ2JHcEVhbnFPeWtRPT0KKyAgZGVwZW5kZW5jaWVzOgor ICAgICJAcHJvamVjdHN0b3JtL2dlb21ldHJ5IiAiXjYuNi4xIgorICAgICJAcHJvamVjdHN0b3Jt L3JlYWN0LWNhbnZhcy1jb3JlIiAiXjYuNi4xIgorCisiQHByb2plY3RzdG9ybS9yZWFjdC1kaWFn cmFtcy1kZWZhdWx0c0BeNi42LjEiOgorICB2ZXJzaW9uICI2LjYuMSIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcy1k ZWZhdWx0cy8tL3JlYWN0LWRpYWdyYW1zLWRlZmF1bHRzLTYuNi4xLnRneiNhOTdjZGRhNTZkNzMz NmI4NDc3NWY3NmE5MjViOTAyODZlYTI4MzNkIgorICBpbnRlZ3JpdHkgc2hhNTEyLUZKdThCTkJq dkFOVlo4Tjk5V1hTL2Y2TXU1L3lNQzRQaTU1a1RHM3ZxN28xNHRzVk1jZ2hvc214c3Q1ZW9lTDI1 MU80SSt1bE52US95Q2MxTWM1b3JnPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgICJAcHJvamVjdHN0 b3JtL3JlYWN0LWRpYWdyYW1zLWNvcmUiICJeNi42LjEiCisKKyJAcHJvamVjdHN0b3JtL3JlYWN0 LWRpYWdyYW1zLXJvdXRpbmdAXjYuNi4xIjoKKyAgdmVyc2lvbiAiNi42LjEiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3Jh bXMtcm91dGluZy8tL3JlYWN0LWRpYWdyYW1zLXJvdXRpbmctNi42LjEudGd6IzA2Yjc3YWIxZjk0 ZjQ1NjczOTEwOTlmZmU1ZTFkOTFkYjM0NDA4ZmYiCisgIGludGVncml0eSBzaGE1MTItbThha0p5 bmhhbnhtcGMvQTJVN2JjZ0Z4SU14c2piM3ptWUJSR0ZsdFZKdmU4N21pcjhBQ2FIMmdtaUhZY0Fm Z0VIeGRoK3g3bUN1VWxmTlAyNDJZdHc9PQorICBkZXBlbmRlbmNpZXM6CisgICAgIkBwcm9qZWN0 c3Rvcm0vZ2VvbWV0cnkiICJeNi42LjEiCisgICAgIkBwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3Jh bXMtY29yZSIgIl42LjYuMSIKKyAgICAiQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcy1kZWZh dWx0cyIgIl42LjYuMSIKKworIkBwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXNAXjYuNi4xIjoK KyAgdmVyc2lvbiAiNi42LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0Bwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMvLS9yZWFjdC1kaWFncmFtcy02LjYuMS50 Z3ojM2FmNDAwNzYxM2Y0ODdiYTU4ODAxY2RjZGVkOTU1NjgzYjNmMDFjNSIKKyAgaW50ZWdyaXR5 IHNoYTUxMi10TFNYZkVmL2RHRlVOOEpDQ1JNcll5SUJoaG4rZVZ3MjR4UW9kbXRjUmVKeFFwS2Ez MUVXaDlDbUo2VUVnN3hVbmFiTUc5ZjJwbE9QeUpxeUZzc0dUQT09CisgIGRlcGVuZGVuY2llczoK KyAgICAiQHByb2plY3RzdG9ybS9yZWFjdC1kaWFncmFtcy1jb3JlIiAiXjYuNi4xIgorICAgICJA cHJvamVjdHN0b3JtL3JlYWN0LWRpYWdyYW1zLWRlZmF1bHRzIiAiXjYuNi4xIgorICAgICJAcHJv amVjdHN0b3JtL3JlYWN0LWRpYWdyYW1zLXJvdXRpbmciICJeNi42LjEiCiAKICJAc2ltb253ZXAv cGlja3JAXjEuNS4xIjoKICAgdmVyc2lvbiAiMS44LjEiCg== --000000000000bf91ce05ce123e62--