<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>142718</bug_id>
          
          <creation_ts>2015-03-15 18:51:05 -0700</creation_ts>
          <short_desc>REGRESSION(r181517): This patch broke GTK+ build (Requested by NVI on #webkit).</short_desc>
          <delta_ts>2015-03-16 11:12:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142712</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077299</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-15 18:51:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181517 broke the build:
This patch broke GTK+ build (Requested by NVI on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077301</commentid>
    <comment_count>1</comment_count>
      <attachid>248697</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-15 18:51:32 -0700</bug_when>
    <thetext>Created attachment 248697
ROLLOUT of r181517

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077302</commentid>
    <comment_count>2</comment_count>
      <attachid>248697</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-15 18:54:36 -0700</bug_when>
    <thetext>Comment on attachment 248697
ROLLOUT of r181517

Rejecting attachment 248697 from commit-queue.

nvasilyev@apple.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077476</commentid>
    <comment_count>3</comment_count>
      <attachid>248697</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-16 11:12:17 -0700</bug_when>
    <thetext>Comment on attachment 248697
ROLLOUT of r181517

GTK bot should just need a clean build. It is picking up a file in the derived sources that should no longer exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077477</commentid>
    <comment_count>4</comment_count>
      <attachid>248697</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-16 11:12:34 -0700</bug_when>
    <thetext>Comment on attachment 248697
ROLLOUT of r181517

Clearing flags on attachment: 248697

Committed r181567: &lt;http://trac.webkit.org/changeset/181567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077478</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-16 11:12:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248697</attachid>
            <date>2015-03-15 18:51:32 -0700</date>
            <delta_ts>2015-03-16 11:12:34 -0700</delta_ts>
            <desc>ROLLOUT of r181517</desc>
            <filename>bug-142718-20150315185104.patch</filename>
            <type>text/plain</type>
            <size>89827</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
OTg4N2I3Mjc3NjNjMTU2NTY2MTI4MWVlMWQ5NWZlMDgxYmQ3MGQzLi45MGViOTJhODA0ZjJkMjBj
Njc1YTE4NTAyMzE5MGNjMzA3OTIyNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wMy0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4MTUxNy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjcxOAorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYnJva2UgR1RLKyBidWlsZCAoUmVxdWVzdGVkIGJ5IE5WSSBvbiAjd2Vi
a2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIldlYiBJbnNw
ZWN0b3I6IFJlbmFtZSBDb25zb2xlTWVzc2FnZSBhbmQgQ29uc29sZU1lc3NhZ2VJbXBsCisgICAg
ICAgIHRvIExlZ2FjeUNvbnNvbGVNZXNzYWdlIGFuZCBMZWdhY3lDb25zb2xlTWVzc2FnZUltcGwK
KyAgICAgICAgcmVzcGVjdGl2ZWx5IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyNzEyCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE4MTUxNworCiAyMDE1LTAzLTE1ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGUgU2Nyb2xscyBVbmV4
cGVjdGVkbHkgd2hlbiBDbGlja2luZyBpbnNpZGUgdW4tc2VsZWN0ZWQgRXhwYW5kaW5nIE9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVy
LmpzCmluZGV4IDVjMmIxMDc0OTcwOGViMDczMWMxNjY2OGFjYTYwOGY4ZTI2MmRhZmUuLmI0ZDE2
MmM0NjhlNmQyNTZjOGUzNzRmNTJhYTJiYTQzNjRkYmY1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3
Q29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMKQEAgLTI3NiwxMiArMjc2
LDEyIEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoIXJlcGVhdENvdW50V2FzSW50ZXJydXB0ZWQpCiAgICAgICAgICAg
ICB0aGlzLl9wcmV2aW91c01lc3NhZ2UgPSBtc2c7CiAKLSAgICAgICAgaWYgKG1zZy50eXBlID09
PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuRW5kR3JvdXAp
IHsKKyAgICAgICAgaWYgKG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuRW5kR3JvdXApIHsKICAgICAgICAgICAgIHZhciBwYXJlbnRHcm91cCA9IHRo
aXMuX2N1cnJlbnRDb25zb2xlR3JvdXAucGFyZW50R3JvdXA7CiAgICAgICAgICAgICBpZiAocGFy
ZW50R3JvdXApCiAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91cCA9IHBh
cmVudEdyb3VwOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1zZy50eXBlID09
PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91
cCB8fCBtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQpIHsKKyAgICAgICAgICAgIGlmIChtc2cudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXAgfHwg
bXNnLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFy
dEdyb3VwQ29sbGFwc2VkKSB7CiAgICAgICAgICAgICAgICAgdmFyIGdyb3VwID0gbmV3IFdlYklu
c3BlY3Rvci5Db25zb2xlR3JvdXAodGhpcy5fY3VycmVudENvbnNvbGVHcm91cCk7CiAgICAgICAg
ICAgICAgICAgdmFyIGdyb3VwRWxlbWVudCA9IGdyb3VwLnJlbmRlcihtc2cpOwogICAgICAgICAg
ICAgICAgIHRoaXMuX2N1cnJlbnRDb25zb2xlR3JvdXAuYXBwZW5kKGdyb3VwRWxlbWVudCk7CkBA
IC0yOTAsNyArMjkwLDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENvbnNvbGVHcm91
cC5hZGRNZXNzYWdlKG1zZyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobXNnLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQgfHwg
d2FzU2Nyb2xsZWRUb0JvdHRvbSkKKyAgICAgICAgaWYgKG1zZy50eXBlID09PSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0IHx8IHdhc1Njcm9sbGVkVG9Cb3R0
b20pCiAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7CiAKICAgICAgICAgaWYgKHRo
aXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZGlkQXBwZW5kQ29uc29sZU1lc3Nh
Z2UgPT09ICJmdW5jdGlvbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9Mb2dNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTG9nTWFuYWdlci5qcwppbmRleCBkOGY4ZGJk
OGQ0OWIzODYxMmY3NWI3ZDgwMDc3OWU4Y2I2YjI3MzUwLi5hMDlkMzBmZjUyZWVjMGNhNDgwMGIz
NGI2Y2ZmNDM0N2VkODIzZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9Mb2dNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01hbmFnZXIuanMKQEAgLTQ4LDcg
KzQ4LDcgQEAgV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3IuQ29uc29sZU9ic2VydmVyLgogCiAgICAgICAgIC8v
IEZJWE1FOiBQYXNzIGEgcmVxdWVzdC4gV2UgbmVlZCBhIHdheSB0byBnZXQgaXQgZnJvbSB0aGUg
cmVxdWVzdCBJRC4KLSAgICAgICAgdmFyIGNvbnNvbGVNZXNzYWdlID0gV2ViSW5zcGVjdG9yLkxl
Z2FjeUNvbnNvbGVNZXNzYWdlLmNyZWF0ZShzb3VyY2UsIGxldmVsLCB0ZXh0LCB0eXBlLCB1cmws
IGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIG51bGwp
OworICAgICAgICB2YXIgY29uc29sZU1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuY3JlYXRlKHNvdXJjZSwgbGV2ZWwsIHRleHQsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCBy
ZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgbnVsbCk7CiAKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQu
TWVzc2FnZUFkZGVkLCB7bWVzc2FnZTogY29uc29sZU1lc3NhZ2V9KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDAwMmU1ODk2ZTE5MGZh
ODczMDI4ZWY3OTkxNGI1OGEyMjljZmI1OGIuLjM3M2I2ZmMwOTk2OGI5YzgwZmZmZjcxNDZiNzlm
ZmQ4MzY0MDEyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlw
ZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Vbml0QmV6aWVyLmpz
Ij48L3NjcmlwdD4KIAotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MZWdhY3lDb25zb2xlTWVzc2Fn
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbnNvbGVNZXNzYWdlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudFZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRhR3JpZC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzIj48L3NjcmlwdD4KQEAgLTMw
Niw3ICszMDYsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UcmVlT3V0bGluZS5qcyI+PC9z
Y3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZUlt
cGwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db25zb2xlTWVzc2FnZUlt
cGwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9ET01UcmVlQ29udGVudFZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2lkZWJhclBh
bmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvR2VuZXJhbFRyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKaW5kZXggZjEwNGRj
YTk2ZGFkNTI4MzMzYWI3YTlmNGNjZGFiYmFjMTJhYjUyNS4uMDI3MTMwZmMxZDU0MjM2MjcxZDI2
Y2VkYWQ5NWUyNTg4ZGRiMWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKQEAgLTI0
OSwxMyArMjQ5LDEzIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZSA9
IHsKICAgICBfaW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlOiBmdW5jdGlvbih0eXBlLCBpbmNy
ZW1lbnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzoKKyAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzoKICAgICAg
ICAgICAgIHRoaXMubG9ncyArPSBpbmNyZW1lbnQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldh
cm5pbmc6CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VM
ZXZlbC5XYXJuaW5nOgogICAgICAgICAgICAgdGhpcy5pc3N1ZXMgKz0gaW5jcmVtZW50OwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgogICAgICAgICAgICAgdGhpcy5lcnJvcnMg
Kz0gaW5jcmVtZW50OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVDb21tYW5k
UmVzdWx0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
c29sZUNvbW1hbmRSZXN1bHQuanMKaW5kZXggZTdjMGY1OTY0NzRkMWZkZmNlNzY0MzYyMzgxMDAz
NGIyNzNlMTIyOS4uODJiMDg5ODY5NjExZTE2MTBmYTQ5OTY1NjA1MTQwNjZlNDQ1NWUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29s
ZUNvbW1hbmRSZXN1bHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29uc29sZUNvbW1hbmRSZXN1bHQuanMKQEAgLTI5LDE0ICsyOSwxNCBAQAogCiBX
ZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIHdhc1Ro
cm93biwgb3JpZ2luYXRpbmdDb21tYW5kLCBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIHZhciBs
ZXZlbCA9ICh3YXNUaHJvd24gPyBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVz
c2FnZUxldmVsLkVycm9yIDogV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5Mb2cpOworICAgIHZhciBsZXZlbCA9ICh3YXNUaHJvd24gPyBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIDogV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2cpOwogICAgIHRoaXMub3JpZ2luYXRpbmdDb21tYW5kID0g
b3JpZ2luYXRpbmdDb21tYW5kOwogICAgIHRoaXMuc2F2ZWRSZXN1bHRJbmRleCA9IHNhdmVkUmVz
dWx0SW5kZXg7CiAKICAgICBpZiAodGhpcy5zYXZlZFJlc3VsdEluZGV4ICYmIHRoaXMuc2F2ZWRS
ZXN1bHRJbmRleCA+IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5tYXhpbXVtU2F2
ZWRSZXN1bHRJbmRleCkKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0
Lm1heGltdW1TYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5zYXZlZFJlc3VsdEluZGV4OwogCi0gICAg
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5jYWxsKHRoaXMsIFdlYkluc3Bl
Y3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBsZXZlbCwgIiIsIG51
bGwsIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW3Jlc3VsdF0pOwor
ICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwuY2FsbCh0aGlzLCBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgbGV2ZWwsICIiLCBudWxsLCBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0LCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtyZXN1bHRdKTsKIH07CiAKIFdlYkluc3Bl
Y3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5tYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCA9IDA7CkBA
IC01NSw3ICs1NSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5
cGUgPSB7CiAKICAgICB0b01lc3NhZ2VFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB2YXIgZWxlbWVudCA9IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJv
dG90eXBlLnRvTWVzc2FnZUVsZW1lbnQuY2FsbCh0aGlzKTsKKyAgICAgICAgdmFyIGVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZS50b01lc3NhZ2VFbGVt
ZW50LmNhbGwodGhpcyk7CiAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS11
c2VyLWNvbW1hbmQtcmVzdWx0Iik7CiAgICAgICAgIGlmICghZWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImRhdGEtbGFiZWxwcmVmaXgiKSkKICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJk
YXRhLWxhYmVscHJlZml4IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdXRwdXQ6ICIpKTsKQEAg
LTY4LDQgKzY4LDQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlw
ZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVHcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnNvbGVHcm91cC5qcwppbmRleCAwZDUyNTc4MTE3NjFjYjc2MmZmNjBiNmRkYzQ1ZWY1NTkyNDRm
NjFlLi43OWViNTRlM2RjYWVjZGFhMjZhYzA0ZWE1YmI1Y2ZiNjJiYTg4ZWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29s
ZUdyb3VwLmpzCkBAIC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJv
dG90eXBlID0gewogICAgICAgICB0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHRp
dGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RpdGxlQ2xpY2tlZC5i
aW5kKHRoaXMpKTsKICAgICAgICAgdGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIHRoaXMuX3RpdGxlTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgICAgICBpZiAoZ3Jv
dXBFbGVtZW50ICYmIG1lc3NhZ2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQpCisgICAgICAgIGlmIChncm91
cEVsZW1lbnQgJiYgbWVzc2FnZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkKICAgICAgICAgICAgIGdyb3VwRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKTsKIAogICAgICAgICBncm91cEVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2UuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDBhY2Q4MjExYjNjNzQ1MmMzM2IxMWU3OWZkYzI1ZmY4MWI0NmE1OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNz
YWdlLmpzCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgs
IDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBKb3NlcGggUGVjb3Jhcm8KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZSwg
bGV2ZWwsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCkKK3sKKyAgICB0aGlzLnNvdXJj
ZSA9IHNvdXJjZTsKKyAgICB0aGlzLmxldmVsID0gbGV2ZWw7CisgICAgdGhpcy51cmwgPSB1cmwg
fHwgbnVsbDsKKyAgICB0aGlzLmxpbmUgPSBsaW5lIHx8IDA7CisgICAgdGhpcy5jb2x1bW4gPSBj
b2x1bW4gfHwgMDsKKworICAgIHJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQgfHwgMTsKKyAgICB0
aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgdGhpcy5yZXBlYXREZWx0YSA9IHJl
cGVhdENvdW50OworICAgIHRoaXMudG90YWxSZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OworfTsK
KworV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKKyAgICBpc0Vycm9y
T3JXYXJuaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gKHRoaXMubGV2ZWwg
PT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCB0
aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVy
cm9yKTsKKyAgICB9LAorCisgICAgdXBkYXRlUmVwZWF0Q291bnQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IGNvbmNyZXRlIGluc3RhbmNlcworICAgIH0sCisK
KyAgICBjbG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkg
Y29uY3JldGUgaW5zdGFuY2VzCisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLmNyZWF0ZSA9IGZ1bmN0aW9uKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHR5cGUsIHVybCwg
bGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVz
dCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwoc291
cmNlLCBsZXZlbCwgbWVzc2FnZSwgbnVsbCwgdHlwZSwgdXJsLCBsaW5lLCBjb2x1bW4sIHJlcGVh
dENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KTsKK307CisKKy8vIEZJWE1F
OiBTd2l0Y2ggdG8gQ29uc29sZUFnZW50LkNvbnNvbGVNZXNzYWdlU291cmNlLgorV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UgPSB7CisgICAgSFRNTDogImh0bWwiLAor
ICAgIFhNTDogInhtbCIsCisgICAgSlM6ICJqYXZhc2NyaXB0IiwKKyAgICBOZXR3b3JrOiAibmV0
d29yayIsCisgICAgQ29uc29sZUFQSTogImNvbnNvbGUtYXBpIiwKKyAgICBPdGhlcjogIm90aGVy
IgorfTsKKworLy8gRklYTUU6IFN3aXRjaCB0byBDb25zb2xlQWdlbnQuQ29uc29sZU1lc3NhZ2VU
eXBlLgorV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlID0geworICAgIExv
ZzogImxvZyIsCisgICAgRGlyOiAiZGlyIiwKKyAgICBEaXJYTUw6ICJkaXJ4bWwiLAorICAgIFRh
YmxlOiAidGFibGUiLAorICAgIFRyYWNlOiAidHJhY2UiLAorICAgIFN0YXJ0R3JvdXA6ICJzdGFy
dEdyb3VwIiwKKyAgICBTdGFydEdyb3VwQ29sbGFwc2VkOiAic3RhcnRHcm91cENvbGxhcHNlZCIs
CisgICAgRW5kR3JvdXA6ICJlbmRHcm91cCIsCisgICAgQXNzZXJ0OiAiYXNzZXJ0IiwKKyAgICBS
ZXN1bHQ6ICJyZXN1bHQiCit9OworCisvLyBGSVhNRTogU3dpdGNoIHRvIENvbnNvbGVBZ2VudC5D
b25zb2xlTWVzc2FnZUxldmVsLgorV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VM
ZXZlbCA9IHsKKyAgICBUaXA6ICJ0aXAiLAorICAgIExvZzogImxvZyIsCisgICAgV2FybmluZzog
Indhcm5pbmciLAorICAgIEVycm9yOiAiZXJyb3IiLAorICAgIERlYnVnOiAiZGVidWciCit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
c29sZU1lc3NhZ2VJbXBsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29uc29sZU1lc3NhZ2VJbXBsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNDY5NzU1ZmNmNDEyZTgy
OWQxN2RmZTBjNTBiMjA0MTQ4NGJiMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2FnZUltcGwuanMKQEAgLTAs
MCArMSw4MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGgg
UGVjb3Jhcm8KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlLCBsaW5raWZpZXIsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwg
cGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuY2FsbCh0aGlzLCBzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIGNvbHVtbiwg
cmVwZWF0Q291bnQpOworCisgICAgdGhpcy5fbGlua2lmaWVyID0gbGlua2lmaWVyOworICAgIHRo
aXMudHlwZSA9IHR5cGUgfHwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBl
LkxvZzsKKyAgICB0aGlzLl9tZXNzYWdlVGV4dCA9IG1lc3NhZ2U7CisgICAgdGhpcy5fcGFyYW1l
dGVycyA9IHBhcmFtZXRlcnM7CisgICAgdGhpcy5fc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7Cisg
ICAgdGhpcy5fcmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICB0aGlzLl9jdXN0b21Gb3JtYXR0ZXJz
ID0geworICAgICAgICAib2JqZWN0IjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCisg
ICAgICAgICJlcnJvciI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAorICAgICAgICAi
bWFwIjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCisgICAgICAgICJzZXQiOiB0aGlz
Ll9mb3JtYXRQYXJhbWV0ZXJBc09iamVjdCwKKyAgICAgICAgIndlYWttYXAiOiB0aGlzLl9mb3Jt
YXRQYXJhbWV0ZXJBc09iamVjdCwKKyAgICAgICAgIml0ZXJhdG9yIjogdGhpcy5fZm9ybWF0UGFy
YW1ldGVyQXNPYmplY3QsCisgICAgICAgICJhcnJheSI6ICB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJB
c0FycmF5LAorICAgICAgICAibm9kZSI6ICAgdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNOb2RlLAor
ICAgICAgICAic3RyaW5nIjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNTdHJpbmcKKyAgICB9Owor
fTsKKworV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CisKKyAg
ICBlbmZvcmNlc0NsaXBib2FyZFByZWZpeFN0cmluZzogdHJ1ZSwKKworICAgIF9mb3JtYXRNZXNz
YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRN
ZXNzYWdlLmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCI7CisKKyAgICAgICAgdmFy
IG1lc3NhZ2VUZXh0OworICAgICAgICBpZiAodGhpcy5zb3VyY2UgPT09IFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkNvbnNvbGVBUEkpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAodGhpcy50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6CisgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2VUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImNvbnNvbGUudHJhY2UoKSIpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQ6CisgICAgICAgICAgICAgICAgICAg
IHZhciBhcmdzID0gW1dlYkluc3BlY3Rvci5VSVN0cmluZygiQXNzZXJ0aW9uIGZhaWxlZDoiKV07
CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wYXJhbWV0ZXJzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX3BhcmFtZXRlcnMpOworICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuRGlyOgorICAgICAgICAgICAgICAgICAgICB2YXIgb2Jq
ID0gdGhpcy5fcGFyYW1ldGVycyA/IHRoaXMuX3BhcmFtZXRlcnNbMF0gOiB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gWyIlTyIsIG9ial07CisgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KGFyZ3MpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICB2YXIgYXJncyA9IHRoaXMuX3BhcmFtZXRlcnMgfHwgW3RoaXMuX21lc3NhZ2VUZXh0XTsKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSB0aGlzLl9mb3JtYXQoYXJncyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3VyY2UgPT09IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk5ldHdvcmspIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9yZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc3RhY2tUcmFjZSA9IHRo
aXMuX3JlcXVlc3Quc3RhY2tUcmFjZTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVz
dC5pbml0aWF0b3IgJiYgdGhpcy5fcmVxdWVzdC5pbml0aWF0b3IudXJsKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMudXJsID0gdGhpcy5fcmVxdWVzdC5pbml0aWF0b3IudXJsOworICAgICAg
ICAgICAgICAgICAgICB0aGlzLmxpbmUgPSB0aGlzLl9yZXF1ZXN0LmluaXRpYXRvci5saW5lTnVt
YmVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5s
ZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcikg
eworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSh0aGlzLl9yZXF1ZXN0LnJlcXVlc3RNZXRob2QgKyAiICIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmxpbmtp
ZnlSZXF1ZXN0QXNOb2RlKHRoaXMuX3JlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRoaXMuX3JlcXVlc3QuZmFpbGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRl
eHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiICsgdGhpcy5fcmVxdWVz
dC5sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIiAiICsgdGhpcy5fcmVxdWVzdC5zdGF0dXNDb2RlICsgIiAoIiArIHRo
aXMuX3JlcXVlc3Quc3RhdHVzVGV4dCArICIpIikpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IFdlYkluc3BlY3Rvci5saW5raWZ5
U3RyaW5nQXNGcmFnbWVudFdpdGhDdXN0b21MaW5raWZpZXIodGhpcy5fbWVzc2FnZVRleHQsIFdl
Ykluc3BlY3Rvci5saW5raWZ5UmVxdWVzdEFzTm9kZS5iaW5kKG51bGwsIHRoaXMuX3JlcXVlc3Qs
ICIiKSk7CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVuZENoaWxkKGZyYWdt
ZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmICh0aGlzLnVybCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgYW5jaG9yID0g
V2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUodGhpcy51cmwsIHRoaXMudXJsLCAiY29uc29s
ZS1tZXNzYWdlLXVybCIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNz
YWdlLmFwcGVuZENoaWxkKGFuY2hvcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KFt0aGlzLl9tZXNzYWdlVGV4dF0pOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIGFyZ3MgPSB0aGlz
Ll9wYXJhbWV0ZXJzIHx8IFt0aGlzLl9tZXNzYWdlVGV4dF07CisgICAgICAgICAgICBtZXNzYWdl
VGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlz
LnNvdXJjZSAhPT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTmV0
d29yayB8fCB0aGlzLl9yZXF1ZXN0KSB7CisgICAgICAgICAgICB2YXIgZmlyc3ROb25OYXRpdmVD
YWxsRnJhbWUgPSB0aGlzLl9maXJzdE5vbk5hdGl2ZUNhbGxGcmFtZSgpOworICAgICAgICAgICAg
aWYgKGZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgdmFyIHVybEVs
ZW1lbnQgPSB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKGZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmFwcGVuZENoaWxkKHVybEVs
ZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVybCAmJiAhdGhpcy5fc2hvdWxk
SGlkZVVSTCh0aGlzLnVybCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRo
aXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCwgdGhpcy5saW5lLCB0aGlzLmNvbHVtbik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS5hcHBlbmRDaGlsZCh1cmxFbGVt
ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2Zvcm1hdHRl
ZE1lc3NhZ2UuYXBwZW5kQ2hpbGQobWVzc2FnZVRleHQpOworCisgICAgICAgIGlmICh0aGlzLnNh
dmVkUmVzdWx0SW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBzYXZlZFZhcmlhYmxlRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHNhdmVkVmFyaWFi
bGVFbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLXNhdmVkLXZhcmlhYmxlIjsKKyAgICAgICAg
ICAgIHNhdmVkVmFyaWFibGVFbGVtZW50LnRleHRDb250ZW50ID0gIiA9ICQiICsgdGhpcy5zYXZl
ZFJlc3VsdEluZGV4OworICAgICAgICAgICAgaWYgKHRoaXMuX29iamVjdFRyZWUpCisgICAgICAg
ICAgICAgICAgdGhpcy5fb2JqZWN0VHJlZS5hcHBlbmRUaXRsZVN1ZmZpeChzYXZlZFZhcmlhYmxl
RWxlbWVudCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0
dGVkTWVzc2FnZS5hcHBlbmRDaGlsZChzYXZlZFZhcmlhYmxlRWxlbWVudCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodGhpcy5fc2hvdWxkRHVtcFN0YWNrVHJhY2UoKSkgeworICAgICAgICAg
ICAgdmFyIG9sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAgICAgICAgIG9s
LmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOworICAgICAgICAgICAgdmFyIHRyZWVP
dXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKG9sKTsKKworICAgICAgICAgICAgdmFyIGNvbnRlbnQg
PSB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlOworICAgICAgICAgICAgdmFyIHJvb3QgPSBuZXcgVHJl
ZUVsZW1lbnQoY29udGVudCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICBjb250ZW50LnRyZWVF
bGVtZW50Rm9yVGVzdCA9IHJvb3Q7CisgICAgICAgICAgICB0cmVlT3V0bGluZS5hcHBlbmRDaGls
ZChyb290KTsKKyAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZSkKKyAgICAgICAgICAgICAgICByb290LmV4cGFu
ZCgpOworCisgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudChy
b290KTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBvbDsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgaW5saW5lIG1lc3NhZ2UgYnViYmxlcyBp
biBTb3VyY2VGcmFtZXMsIG9yIG90aGVyIHBsYWluLXRleHQgcmVwcmVzZW50YXRpb25zLgorICAg
ICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZVRleHQudGV4dENvbnRlbnQ7CisgICAgfSwKKwor
ICAgIF9zaG91bGREdW1wU3RhY2tUcmFjZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICEhdGhpcy5fc3RhY2tUcmFjZSAmJiB0aGlzLl9zdGFja1RyYWNlLmxlbmd0aCAmJiAodGhp
cy5zb3VyY2UgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk5l
dHdvcmsgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5FcnJvciB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlVHlwZS5UcmFjZSk7CisgICAgfSwKKworICAgIF9zaG91bGRIaWRlVVJMOiBmdW5j
dGlvbih1cmwpCisgICAgeworICAgICAgICByZXR1cm4gdXJsID09PSAidW5kZWZpbmVkIiB8fCB1
cmwgPT09ICJbbmF0aXZlIGNvZGVdIjsKKyAgICB9LAorCisgICAgX2ZpcnN0Tm9uTmF0aXZlQ2Fs
bEZyYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3N0YWNrVHJhY2Up
CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX3N0YWNrVHJhY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBmcmFtZSA9
IHRoaXMuX3N0YWNrVHJhY2VbaV07CisgICAgICAgICAgICBpZiAoIWZyYW1lLnVybCB8fCBmcmFt
ZS51cmwgPT09ICJbbmF0aXZlIGNvZGVdIikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxs
OworICAgIH0sCisKKyAgICBnZXQgbWVzc2FnZSgpCisgICAgeworICAgICAgICAvLyBmb3JjZSBt
ZXNzYWdlIGZvcm1hdHRpbmcKKyAgICAgICAgdmFyIGZvcm1hdHRlZE1lc3NhZ2UgPSB0aGlzLmZv
cm1hdHRlZE1lc3NhZ2U7CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlOworICAgIH0sCisK
KyAgICBnZXQgZm9ybWF0dGVkTWVzc2FnZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Zv
cm1hdHRlZE1lc3NhZ2UpCisgICAgICAgICAgICB0aGlzLl9mb3JtYXRNZXNzYWdlKCk7CisgICAg
ICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlOworICAgIH0sCisKKyAgICBfbGlua2lm
eUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICB7
CisgICAgICAgIC8vIENvbnNvbGVNZXNzYWdlIHN0YWNrIHRyYWNlIGxpbmUgbnVtYmVycyBhcmUg
b25lLWJhc2VkLgorICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIg
LSAxIDogMDsKKyAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1uTnVt
YmVyIC0gMSA6IDA7CisKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5TG9jYXRp
b24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7
CisgICAgfSwKKworICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWUpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0aW9uKGNhbGxGcmFtZS51cmws
IGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1uTnVtYmVyKTsKKyAgICB9LAor
CisgICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVs
Lldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5FcnJvcik7CisgICAgfSwKKworICAgIF9mb3JtYXQ6IGZ1bmN0aW9uKHBhcmFt
ZXRlcnMpCisgICAgeworICAgICAgICAvLyBUaGlzIG5vZGUgaXMgdXNlZCBsaWtlIGEgQnVpbGRl
ci4gVmFsdWVzIGFyZSBjb250aW51YWxseSBhcHBlbmRlZCBvbnRvIGl0LgorICAgICAgICB2YXIg
Zm9ybWF0dGVkUmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAg
ICBpZiAoIXBhcmFtZXRlcnMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJl
c3VsdDsKKworICAgICAgICAvLyBGb3JtYXR0aW5nIGNvZGUgYmVsb3cgYXNzdW1lcyB0aGF0IHBh
cmFtZXRlcnMgYXJlIGFsbCB3cmFwcGVycyB3aGVyZWFzIGZyb250ZW5kIGNvbnNvbGUKKyAgICAg
ICAgLy8gQVBJIGFsbG93cyBwYXNzaW5nIGFyYml0cmFyeSB2YWx1ZXMgYXMgbWVzc2FnZXMgKHN0
cmluZ3MsIG51bWJlcnMsIGV0Yy4pLiBXcmFwIHRoZW0gaGVyZS4KKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogT25seSBwYXNzIHJ1bnRpbWUgd3JhcHBlcnMgaGVyZS4KKyAgICAgICAgICAgIGlmIChwYXJh
bWV0ZXJzW2ldIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2ld
ID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2ldID0gV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXJhbWV0ZXJzW2ldKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2ldID0gV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUocGFyYW1ldGVyc1tpXSk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc3RyaW5nIGxvZyBhbmQgc3RyaW5nIGV2YWwgcmVzdWx0
LiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0gYmFzZWQgb24gbWVzc2FnZSB0eXBlLgorICAg
ICAgICB2YXIgc2hvdWxkRm9ybWF0TWVzc2FnZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
dHlwZShwYXJhbWV0ZXJzWzBdKSA9PT0gInN0cmluZyIgJiYgdGhpcy50eXBlICE9PSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0OworCisgICAgICAgIGlmIChz
aG91bGRGb3JtYXRNZXNzYWdlKSB7CisgICAgICAgICAgICAvLyBNdWx0aXBsZSBwYXJhbWV0ZXJz
IHdpdGggdGhlIGZpcnN0IGJlaW5nIGEgZm9ybWF0IHN0cmluZy4gU2F2ZSB1bnVzZWQgc3Vic3Rp
dHV0aW9ucy4KKyAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9mb3JtYXRXaXRoU3Vic3Rp
dHV0aW9uU3RyaW5nKHBhcmFtZXRlcnMsIGZvcm1hdHRlZFJlc3VsdCk7CisgICAgICAgICAgICBw
YXJhbWV0ZXJzID0gcmVzdWx0LnVudXNlZFN1YnN0aXR1dGlvbnM7CisgICAgICAgICAgICBpZiAo
cGFyYW1ldGVycy5sZW5ndGgpCisgICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVzdWx0LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VU
eXBlLlRhYmxlKSB7CisgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1bHQuYXBwZW5kQ2hpbGQodGhp
cy5fZm9ybWF0UGFyYW1ldGVyQXNUYWJsZShwYXJhbWV0ZXJzKSk7CisgICAgICAgICAgICByZXR1
cm4gZm9ybWF0dGVkUmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgLy8gU2luZ2xlIHBhcmFt
ZXRlciwgb3IgdW51c2VkIHN1YnN0aXR1dGlvbnMgZnJvbSBhYm92ZS4KKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBJ
bmxpbmUgc3RyaW5ncyB3aGVuIGZvcm1hdHRpbmcuCisgICAgICAgICAgICBpZiAoc2hvdWxkRm9y
bWF0TWVzc2FnZSAmJiBwYXJhbWV0ZXJzW2ldLnR5cGUgPT09ICJzdHJpbmciKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAg
ICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCJ0eXBlLXN0cmluZyIpOworICAgICAgICAg
ICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBwYXJhbWV0ZXJzW2ldLmRlc2NyaXB0aW9uOworICAg
ICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5hcHBlbmRDaGlsZCh0
aGlzLl9mb3JtYXRQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSwgZmFsc2UpKTsKKworICAgICAgICAg
ICAgaWYgKGkgPCBwYXJhbWV0ZXJzLmxlbmd0aCAtIDEgJiYgIXRoaXMuX2lzRXhwYW5kYWJsZShw
YXJhbWV0ZXJzW2ldKSkKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1bHQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7CisKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZm9ybWF0dGVkUmVzdWx0OworICAgIH0sCisKKyAgICBfaXNFeHBhbmRhYmxlOiBmdW5j
dGlvbihyZW1vdGVPYmplY3QpIHsKKyAgICAgICAgaWYgKCFyZW1vdGVPYmplY3QpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5oYXNDaGlsZHJl
biAmJiByZW1vdGVPYmplY3QucHJldmlldyAmJiByZW1vdGVPYmplY3QucHJldmlldy5sb3NzbGVz
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gcmVtb3RlT2Jq
ZWN0Lmhhc0NoaWxkcmVuOworICAgIH0sCisKKyAgICBfZm9ybWF0UGFyYW1ldGVyOiBmdW5jdGlv
bihvdXRwdXQsIGZvcmNlT2JqZWN0Rm9ybWF0KQorICAgIHsKKyAgICAgICAgdmFyIHR5cGU7Cisg
ICAgICAgIGlmIChmb3JjZU9iamVjdEZvcm1hdCkKKyAgICAgICAgICAgIHR5cGUgPSAib2JqZWN0
IjsKKyAgICAgICAgZWxzZSBpZiAob3V0cHV0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdCkKKyAgICAgICAgICAgIHR5cGUgPSBvdXRwdXQuc3VidHlwZSB8fCBvdXRwdXQudHlw
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHlwZSA9IHR5cGVvZiBvdXRwdXQ7CisKKyAg
ICAgICAgdmFyIGZvcm1hdHRlciA9IHRoaXMuX2N1c3RvbUZvcm1hdHRlcnNbdHlwZV07CisgICAg
ICAgIGlmICghZm9ybWF0dGVyKQorICAgICAgICAgICAgZm9ybWF0dGVyID0gdGhpcy5fZm9ybWF0
UGFyYW1ldGVyQXNWYWx1ZTsKKworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKworICAgICAgICBpZiAodGhpcy5faXNFeHBhbmRhYmxlKG91dHB1dCkp
CisgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoImV4cGFuZGFibGUiKTsKKworICAgICAg
ICBmb3JtYXR0ZXIuY2FsbCh0aGlzLCBvdXRwdXQsIHNwYW4sIGZvcmNlT2JqZWN0Rm9ybWF0KTsK
KyAgICAgICAgcmV0dXJuIHNwYW47CisgICAgfSwKKworICAgIF9mb3JtYXRQYXJhbWV0ZXJBc1Zh
bHVlOiBmdW5jdGlvbih2YWx1ZSwgZWxlbSkKKyAgICB7CisgICAgICAgIGVsZW0uYXBwZW5kQ2hp
bGQoV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRGb3JSZW1vdGVPYmpl
Y3QodmFsdWUpKTsKKyAgICB9LAorCisgICAgX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0OiBmdW5j
dGlvbihvYmosIGVsZW0sIGZvcmNlRXhwYW5zaW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5fb2Jq
ZWN0VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcob2JqLCBXZWJJbnNwZWN0
b3IuT2JqZWN0VHJlZVZpZXcuTW9kZS5Qcm9wZXJ0aWVzLCB0aGlzLl9yb290UHJvcGVydHlQYXRo
Rm9yT2JqZWN0KG9iaiksIGZvcmNlRXhwYW5zaW9uKTsKKyAgICAgICAgZWxlbS5hcHBlbmRDaGls
ZCh0aGlzLl9vYmplY3RUcmVlLmVsZW1lbnQpOworICAgIH0sCisKKyAgICBfZm9ybWF0UGFyYW1l
dGVyQXNTdHJpbmc6IGZ1bmN0aW9uKG91dHB1dCwgZWxlbSkKKyAgICB7CisgICAgICAgIHZhciBz
cGFuID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUxpbmtpZmllZEVsZW1lbnRT
dHJpbmcob3V0cHV0LmRlc2NyaXB0aW9uKTsKKyAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzcGFu
KTsKKyAgICB9LAorCisgICAgX2Zvcm1hdFBhcmFtZXRlckFzTm9kZTogZnVuY3Rpb24ob2JqZWN0
LCBlbGVtKQorICAgIHsKKyAgICAgICAgdmFyIHNwYW4gPSBXZWJJbnNwZWN0b3IuRm9ybWF0dGVk
VmFsdWUuY3JlYXRlRWxlbWVudEZvck5vZGUob2JqZWN0KTsKKyAgICAgICAgZWxlbS5hcHBlbmRD
aGlsZChzcGFuKTsKKyAgICB9LAorCisgICAgX2Zvcm1hdFBhcmFtZXRlckFzQXJyYXk6IGZ1bmN0
aW9uKGFyciwgZWxlbSkKKyAgICB7CisgICAgICAgIHRoaXMuX29iamVjdFRyZWUgPSBuZXcgV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3KGFyciwgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3
Lk1vZGUuUHJvcGVydGllcywgdGhpcy5fcm9vdFByb3BlcnR5UGF0aEZvck9iamVjdChhcnIpKTsK
KyAgICAgICAgZWxlbS5hcHBlbmRDaGlsZCh0aGlzLl9vYmplY3RUcmVlLmVsZW1lbnQpOworICAg
IH0sCisKKyAgICBfcm9vdFByb3BlcnR5UGF0aEZvck9iamVjdDogZnVuY3Rpb24ob2JqZWN0KQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnNhdmVkUmVzdWx0SW5kZXgpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBh
dGgob2JqZWN0LCAiJCIgKyB0aGlzLnNhdmVkUmVzdWx0SW5kZXgpOworICAgIH0sCisKKyAgICBf
dXNlclByb3ZpZGVkQ29sdW1uTmFtZXM6IGZ1bmN0aW9uKGNvbHVtbk5hbWVzQXJndW1lbnQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbHVtbk5hbWVzQXJndW1lbnQpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICB2YXIgcmVtb3RlT2JqZWN0ID0gV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5mcm9tUGF5bG9hZChjb2x1bW5OYW1lc0FyZ3VtZW50KTsKKworICAgICAgICAvLyBT
aW5nbGUgcHJpbWl0aXZlIGFyZ3VtZW50LgorICAgICAgICBpZiAocmVtb3RlT2JqZWN0LnR5cGUg
PT09ICJzdHJpbmciIHx8IHJlbW90ZU9iamVjdC50eXBlID09PSAibnVtYmVyIikKKyAgICAgICAg
ICAgIHJldHVybiBbU3RyaW5nKGNvbHVtbk5hbWVzQXJndW1lbnQudmFsdWUpXTsKKworICAgICAg
ICAvLyBJZ25vcmUgZXZlcnl0aGluZyB0aGF0IGlzIG5vdCBhbiBhcnJheSB3aXRoIHByb3BlcnR5
IHByZXZpZXdzLgorICAgICAgICBpZiAocmVtb3RlT2JqZWN0LnR5cGUgIT09ICJvYmplY3QiIHx8
IHJlbW90ZU9iamVjdC5zdWJ0eXBlICE9PSAiYXJyYXkiIHx8ICFyZW1vdGVPYmplY3QucHJldmll
dyB8fCAhcmVtb3RlT2JqZWN0LnByZXZpZXcucHJvcGVydHlQcmV2aWV3cykKKyAgICAgICAgICAg
IHJldHVybiBudWxsOworCisgICAgICAgIC8vIEFycmF5LiBMb29rIGludG8gdGhlIHByZXZpZXcg
YW5kIGdldCBzdHJpbmcgdmFsdWVzLgorICAgICAgICB2YXIgZXh0cmFjdGVkQ29sdW1uTmFtZXMg
PSBbXTsKKyAgICAgICAgZm9yICh2YXIgcHJvcGVydHlQcmV2aWV3IG9mIHJlbW90ZU9iamVjdC5w
cmV2aWV3LnByb3BlcnR5UHJldmlld3MpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eVByZXZp
ZXcudHlwZSA9PT0gInN0cmluZyIgfHwgcHJvcGVydHlQcmV2aWV3LnR5cGUgPT09ICJudW1iZXIi
KQorICAgICAgICAgICAgICAgIGV4dHJhY3RlZENvbHVtbk5hbWVzLnB1c2goU3RyaW5nKHByb3Bl
cnR5UHJldmlldy52YWx1ZSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGV4dHJhY3Rl
ZENvbHVtbk5hbWVzLmxlbmd0aCA/IGV4dHJhY3RlZENvbHVtbk5hbWVzIDogbnVsbDsKKyAgICB9
LAorCisgICAgX2Zvcm1hdFBhcmFtZXRlckFzVGFibGU6IGZ1bmN0aW9uKHBhcmFtZXRlcnMpCisg
ICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgdmFyIHRhYmxlID0gcGFyYW1ldGVyc1swXTsKKyAgICAgICAgaWYgKCF0YWJs
ZSB8fCAhdGFibGUucHJldmlldykKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworCisgICAg
ICAgIHZhciByb3dzID0gW107CisgICAgICAgIHZhciBjb2x1bW5OYW1lcyA9IFtdOworICAgICAg
ICB2YXIgZmxhdFZhbHVlcyA9IFtdOworICAgICAgICB2YXIgcHJldmlldyA9IHRhYmxlLnByZXZp
ZXc7CisgICAgICAgIHZhciB1c2VyUHJvdmlkZWRDb2x1bW5OYW1lcyA9IGZhbHNlOworCisgICAg
ICAgIC8vIFVzZXIgcHJvdmlkZWQgY29sdW1uTmFtZXMuCisgICAgICAgIHZhciBleHRyYWN0ZWRD
b2x1bW5OYW1lcyA9IHRoaXMuX3VzZXJQcm92aWRlZENvbHVtbk5hbWVzKHBhcmFtZXRlcnNbMV0p
OworICAgICAgICBpZiAoZXh0cmFjdGVkQ29sdW1uTmFtZXMpIHsKKyAgICAgICAgICAgIHVzZXJQ
cm92aWRlZENvbHVtbk5hbWVzID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gZXh0
cmFjdGVkQ29sdW1uTmFtZXM7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBmaXJzdCBm
b3IgdmFsdWVQcmV2aWV3cyBpbiB0aGUgcHJvcGVydGllcyBtZWFuaW5nIHRoaXMgd2FzIGFuIGFy
cmF5IG9mIG9iamVjdHMuCisgICAgICAgIGlmIChwcmV2aWV3LnByb3BlcnR5UHJldmlld3MpIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJldmlldy5wcm9wZXJ0eVByZXZpZXdz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHJvd1Byb3BlcnR5ID0gcHJldmll
dy5wcm9wZXJ0eVByZXZpZXdzW2ldOworICAgICAgICAgICAgICAgIHZhciByb3dQcmV2aWV3ID0g
cm93UHJvcGVydHkudmFsdWVQcmV2aWV3OworICAgICAgICAgICAgICAgIGlmICghcm93UHJldmll
dykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB2YXIg
cm93VmFsdWUgPSB7fTsKKyAgICAgICAgICAgICAgICBjb25zdCBtYXhDb2x1bW5zVG9SZW5kZXIg
PSAxMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJvd1ByZXZpZXcucHJv
cGVydHlQcmV2aWV3cy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICB2YXIgY2Vs
bFByb3BlcnR5ID0gcm93UHJldmlldy5wcm9wZXJ0eVByZXZpZXdzW2pdOworICAgICAgICAgICAg
ICAgICAgICB2YXIgY29sdW1uUmVuZGVyZWQgPSBjb2x1bW5OYW1lcy5jb250YWlucyhjZWxsUHJv
cGVydHkubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29sdW1uUmVuZGVyZWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VyUHJvdmlkZWRDb2x1bW5OYW1lcyB8fCBj
b2x1bW5OYW1lcy5sZW5ndGggPT09IG1heENvbHVtbnNUb1JlbmRlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblJl
bmRlcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2go
Y2VsbFByb3BlcnR5Lm5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgcm93VmFsdWVbY2VsbFByb3BlcnR5Lm5hbWVdID0gV2ViSW5zcGVjdG9yLkZvcm1h
dHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRGb3JQcm9wZXJ0eVByZXZpZXcoY2VsbFByb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcm93cy5wdXNoKFtyb3dQcm9wZXJ0
eS5uYW1lLCByb3dWYWx1ZV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gSWYgdGhlcmUgd2VyZSB2YWx1ZVByZXZpZXdzLCBjb252ZXJ0IHRvIGEgZmxhdCBsaXN0Lgor
ICAgICAgICBpZiAocm93cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGNvbnN0IGVtRGFzaCA9ICJc
dTIwMTQiOworICAgICAgICAgICAgY29sdW1uTmFtZXMudW5zaGlmdChXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIihJbmRleCkiKSk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3Mu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgcm93TmFtZSA9IHJvd3NbaV1bMF07
CisgICAgICAgICAgICAgICAgdmFyIHJvd1ZhbHVlID0gcm93c1tpXVsxXTsKKyAgICAgICAgICAg
ICAgICBmbGF0VmFsdWVzLnB1c2gocm93TmFtZSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDE7IGogPCBjb2x1bW5OYW1lcy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgY29sdW1uTmFtZSA9IGNvbHVtbk5hbWVzW2pdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIShjb2x1bW5OYW1lIGluIHJvd1ZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZs
YXRWYWx1ZXMucHVzaChlbURhc2gpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBmbGF0VmFsdWVzLnB1c2gocm93VmFsdWVbY29sdW1uTmFtZV0pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8v
IElmIHRoZXJlIHdlcmUgbm8gdmFsdWUgUHJldmlld3MsIHRoZW4gY2hlY2sgZm9yIGFuIGFycmF5
IG9mIHZhbHVlcy4KKyAgICAgICAgaWYgKCFmbGF0VmFsdWVzLmxlbmd0aCAmJiBwcmV2aWV3LnBy
b3BlcnR5UHJldmlld3MpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJldmll
dy5wcm9wZXJ0eVByZXZpZXdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHJv
d1Byb3BlcnR5ID0gcHJldmlldy5wcm9wZXJ0eVByZXZpZXdzW2ldOworICAgICAgICAgICAgICAg
IGlmICghKCJ2YWx1ZSIgaW4gcm93UHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghY29sdW1uTmFtZXMubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2goV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJ
bmRleCIpKTsKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaChXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlZhbHVlIikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGZsYXRWYWx1ZXMucHVzaChyb3dQcm9wZXJ0eS5uYW1lKTsKKyAgICAgICAgICAgICAgICBm
bGF0VmFsdWVzLnB1c2goV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRG
b3JQcm9wZXJ0eVByZXZpZXcocm93UHJvcGVydHkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIElmIGxvc3NsZXNzIG9yIG5vdCB0YWJsZSBkYXRhLCBvdXRwdXQgdGhl
IG9iamVjdCBzbyBmdWxsIGRhdGEgY2FuIGJlIGdvdHRlbi4KKyAgICAgICAgaWYgKCFwcmV2aWV3
Lmxvc3NsZXNzIHx8ICFmbGF0VmFsdWVzLmxlbmd0aCkgeworICAgICAgICAgICAgZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9mb3JtYXRQYXJhbWV0ZXIodGFibGUpKTsKKyAgICAgICAgICAgIGlm
ICghZmxhdFZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIH0KKworICAgICAgICB2YXIgZGF0YUdyaWRDb250YWluZXIgPSBlbGVtZW50LmNyZWF0
ZUNoaWxkKCJzcGFuIik7CisgICAgICAgIHZhciBkYXRhR3JpZCA9IFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkKGNvbHVtbk5hbWVzLCBmbGF0VmFsdWVzKTsKKyAg
ICAgICAgZGF0YUdyaWQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmxpbmUiKTsKKyAgICAgICAg
ZGF0YUdyaWRDb250YWluZXIuYXBwZW5kQ2hpbGQoZGF0YUdyaWQuZWxlbWVudCk7CisKKyAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfSwKKworICAgIF9mb3JtYXRXaXRoU3Vic3RpdHV0aW9u
U3RyaW5nOiBmdW5jdGlvbihwYXJhbWV0ZXJzLCBmb3JtYXR0ZWRSZXN1bHQpCisgICAgeworICAg
ICAgICB2YXIgZm9ybWF0dGVycyA9IHt9OworCisgICAgICAgIGZ1bmN0aW9uIHBhcmFtZXRlckZv
cm1hdHRlcihmb3JjZSwgb2JqKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
Zm9ybWF0UGFyYW1ldGVyKG9iaiwgZm9yY2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc3RyaW5nRm9ybWF0dGVyKG9iaikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG9i
ai5kZXNjcmlwdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGZsb2F0Rm9ybWF0
dGVyKG9iaikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmoudmFsdWUgIT09
ICJudW1iZXIiKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG9iai5kZXNjcmlw
dGlvbik7CisgICAgICAgICAgICByZXR1cm4gb2JqLnZhbHVlOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gaW50ZWdlckZvcm1hdHRlcihvYmopCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh0eXBlb2Ygb2JqLnZhbHVlICE9PSAibnVtYmVyIikKKyAgICAgICAgICAgICAgICByZXR1
cm4gcGFyc2VJbnQob2JqLmRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBNYXRoLmZs
b29yKG9iai52YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3VycmVudFN0eWxlID0g
bnVsbDsKKyAgICAgICAgZnVuY3Rpb24gc3R5bGVGb3JtYXR0ZXIob2JqKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjdXJyZW50U3R5bGUgPSB7fTsKKyAgICAgICAgICAgIHZhciBidWZmZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBidWZmZXIuc2V0QXR0
cmlidXRlKCJzdHlsZSIsIG9iai5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGJ1ZmZlci5zdHlsZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHZh
ciBwcm9wZXJ0eSA9IGJ1ZmZlci5zdHlsZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoaXNXaGl0
ZWxpc3RlZFByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0
eWxlW3Byb3BlcnR5XSA9IGJ1ZmZlci5zdHlsZVtwcm9wZXJ0eV07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBpc1doaXRlbGlzdGVkUHJvcGVydHkocHJvcGVy
dHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwcmVmaXhlcyA9IFsiYmFja2dyb3VuZCIs
ICJib3JkZXIiLCAiY29sb3IiLCAiZm9udCIsICJsaW5lIiwgIm1hcmdpbiIsICJwYWRkaW5nIiwg
InRleHQiLCAiLXdlYmtpdC1iYWNrZ3JvdW5kIiwgIi13ZWJraXQtYm9yZGVyIiwgIi13ZWJraXQt
Zm9udCIsICItd2Via2l0LW1hcmdpbiIsICItd2Via2l0LXBhZGRpbmciLCAiLXdlYmtpdC10ZXh0
Il07CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZWZpeGVzLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnN0YXJ0c1dpdGgocHJlZml4ZXNbaV0p
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpcmVidWcgdXNl
cyAlbyBmb3IgZm9ybWF0dGluZyBvYmplY3RzLgorICAgICAgICBmb3JtYXR0ZXJzLm8gPSBwYXJh
bWV0ZXJGb3JtYXR0ZXIuYmluZCh0aGlzLCBmYWxzZSk7CisgICAgICAgIGZvcm1hdHRlcnMucyA9
IHN0cmluZ0Zvcm1hdHRlcjsKKyAgICAgICAgZm9ybWF0dGVycy5mID0gZmxvYXRGb3JtYXR0ZXI7
CisKKyAgICAgICAgLy8gRmlyZWJ1ZyBhbGxvd3MgYm90aCAlaSBhbmQgJWQgZm9yIGZvcm1hdHRp
bmcgaW50ZWdlcnMuCisgICAgICAgIGZvcm1hdHRlcnMuaSA9IGludGVnZXJGb3JtYXR0ZXI7Cisg
ICAgICAgIGZvcm1hdHRlcnMuZCA9IGludGVnZXJGb3JtYXR0ZXI7CisKKyAgICAgICAgLy8gRmly
ZWJ1ZyB1c2VzICVjIGZvciBzdHlsaW5nIHRoZSBtZXNzYWdlLgorICAgICAgICBmb3JtYXR0ZXJz
LmMgPSBzdHlsZUZvcm1hdHRlcjsKKworICAgICAgICAvLyBTdXBwb3J0ICVPIHRvIGZvcmNlIG9i
amVjdCBmb3JtYXR0aW5nLCBpbnN0ZWFkIG9mIHRoZSB0eXBlLWJhc2VkICVvIGZvcm1hdHRpbmcu
CisgICAgICAgIGZvcm1hdHRlcnMuTyA9IHBhcmFtZXRlckZvcm1hdHRlci5iaW5kKHRoaXMsIHRy
dWUpOworCisgICAgICAgIGZ1bmN0aW9uIGFwcGVuZChhLCBiKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYiBpbnN0YW5jZW9mIE5vZGUpCisgICAgICAgICAgICAgICAgYS5hcHBlbmRDaGls
ZChiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGIpIHsKKyAgICAgICAgICAgICAgICB2YXIgdG9B
cHBlbmQgPSBXZWJJbnNwZWN0b3IubGlua2lmeVN0cmluZ0FzRnJhZ21lbnQoYi50b1N0cmluZygp
KTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gY3VycmVudFN0eWxlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgd3JhcHBlci5zdHlsZVtrZXldID0gY3VycmVudFN0eWxlW2tleV07CisgICAg
ICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQodG9BcHBlbmQpOworICAgICAgICAg
ICAgICAgICAgICB0b0FwcGVuZCA9IHdyYXBwZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gInR5cGUtc3RyaW5nIjsKKyAgICAgICAgICAg
ICAgICBzcGFuLmFwcGVuZENoaWxkKHRvQXBwZW5kKTsKKyAgICAgICAgICAgICAgICBhLmFwcGVu
ZENoaWxkKHNwYW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGE7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBTdHJpbmcuZm9ybWF0IGRvZXMgdHJlYXQgZm9ybWF0dGVkUmVz
dWx0IGxpa2UgYSBCdWlsZGVyLCByZXN1bHQgaXMgYW4gb2JqZWN0LgorICAgICAgICByZXR1cm4g
U3RyaW5nLmZvcm1hdChwYXJhbWV0ZXJzWzBdLmRlc2NyaXB0aW9uLCBwYXJhbWV0ZXJzLnNsaWNl
KDEpLCBmb3JtYXR0ZXJzLCBmb3JtYXR0ZWRSZXN1bHQsIGFwcGVuZCk7CisgICAgfSwKKworICAg
IGRlY29yYXRlTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Owor
CisgICAgICAgIGVsZW1lbnQubWVzc2FnZSA9IHRoaXM7CisgICAgICAgIGVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiY29uc29sZS1tZXNzYWdlIik7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVs
ZW1lbnQ7CisKKyAgICAgICAgc3dpdGNoICh0aGlzLmxldmVsKSB7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuVGlwOgorICAgICAgICAg
ICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS10aXAtbGV2ZWwiKTsKKyAgICAg
ICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbHByZWZpeCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVGlwOiAiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9n
OgorICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS1sb2ctbGV2
ZWwiKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbHBy
ZWZpeCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nOiAiKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlTGV2ZWwuRGVidWc6CisgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJj
b25zb2xlLWRlYnVnLWxldmVsIik7CisgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1
dGUoImRhdGEtbGFiZWxwcmVmaXgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnOiAiKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKKyAgICAgICAgICAgICAgICBlbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtd2FybmluZy1sZXZlbCIpOworICAgICAgICAgICAg
ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJkYXRhLWxhYmVscHJlZml4IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJXYXJuaW5nOiAiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6
CisgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLWVycm9yLWxl
dmVsIik7CisgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtbGFiZWxw
cmVmaXgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVycm9yOiAiKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cCB8fCB0aGlzLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwQ29s
bGFwc2VkKQorICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLWdyb3Vw
LXRpdGxlIik7CisKKyAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZvcm1hdHRlZE1l
c3NhZ2UpOworCisgICAgICAgIGlmICh0aGlzLnJlcGVhdENvdW50ID4gMSkKKyAgICAgICAgICAg
IHRoaXMudXBkYXRlUmVwZWF0Q291bnQoKTsKKworICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAg
ICB9LAorCisgICAgdG9NZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2VsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKwor
ICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworCisg
ICAgICAgIHJldHVybiB0aGlzLmRlY29yYXRlTWVzc2FnZUVsZW1lbnQoZWxlbWVudCk7CisgICAg
fSwKKworICAgIF9wb3B1bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudDogZnVuY3Rpb24ocGFyZW50
VHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3N0
YWNrVHJhY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBmcmFtZSA9IHRoaXMuX3N0
YWNrVHJhY2VbaV07CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgbWVzc2FnZVRleHRFbGVt
ZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCI7CisgICAgICAgICAgICB2YXIg
ZnVuY3Rpb25OYW1lID0gZnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5jdGlvbk5hbWUpKTsKKyAg
ICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobWVzc2FnZVRleHRFbGVtZW50KTsKKworICAg
ICAgICAgICAgaWYgKGZyYW1lLnVybCAmJiAhdGhpcy5fc2hvdWxkSGlkZVVSTChmcmFtZS51cmwp
KSB7CisgICAgICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9saW5raWZ5Q2FsbEZy
YW1lKGZyYW1lKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHVybEVsZW1l
bnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcg
VHJlZUVsZW1lbnQoY29udGVudCk7CisgICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5hcHBl
bmRDaGlsZCh0cmVlRWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgdXBkYXRlUmVw
ZWF0Q291bnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoIXRoaXMucmVwZWF0Q291bnRFbGVt
ZW50KSB7CisgICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50
LmNsYXNzTmFtZSA9ICJidWJibGUiOworCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2Vy
dEJlZm9yZSh0aGlzLnJlcGVhdENvdW50RWxlbWVudCwgdGhpcy5fZWxlbWVudC5maXJzdENoaWxk
KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudC50ZXh0Q29udGVu
dCA9IHRoaXMucmVwZWF0Q291bnQ7CisgICAgfSwKKworICAgIHRvU3RyaW5nOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgc291cmNlU3RyaW5nOworICAgICAgICBzd2l0Y2ggKHRoaXMu
c291cmNlKSB7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlU291cmNlLkhUTUw6CisgICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIkhUTUwi
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5YTUw6CisgICAgICAgICAgICAgICAgc291cmNl
U3RyaW5nID0gIlhNTCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTOgorICAgICAgICAg
ICAgICAgIHNvdXJjZVN0cmluZyA9ICJKUyI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk5l
dHdvcms6CisgICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIk5ldHdvcmsiOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVNvdXJjZS5Db25zb2xlQVBJOgorICAgICAgICAgICAgICAgIHNvdXJjZVN0
cmluZyA9ICJDb25zb2xlQVBJIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXI6Cisg
ICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIk90aGVyIjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0eXBlU3RyaW5nOworICAgICAgICBzd2l0
Y2ggKHRoaXMudHlwZSkgeworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVR5cGUuTG9nOgorICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiTG9n
IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkRpcjoKKyAgICAgICAgICAgICAgICB0eXBlU3Ry
aW5nID0gIkRpciI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5EaXJYTUw6CisgICAgICAgICAg
ICAgICAgdHlwZVN0cmluZyA9ICJEaXIgWE1MIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRy
YWNlOgorICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiVHJhY2UiOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXA6CisgICAgICAgICAg
ICAgICAgdHlwZVN0cmluZyA9ICJTdGFydCBHcm91cCI7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlw
ZS5FbmRHcm91cDoKKyAgICAgICAgICAgICAgICB0eXBlU3RyaW5nID0gIkVuZCBHcm91cCI7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQ6CisgICAgICAgICAgICAgICAgdHlwZVN0cmlu
ZyA9ICJBc3NlcnQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0OgorICAgICAgICAg
ICAgICAgIHR5cGVTdHJpbmcgPSAiUmVzdWx0IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBzb3VyY2VTdHJpbmcgKyAiICIgKyB0eXBlU3RyaW5n
ICsgIiAiICsgdGhpcy5sZXZlbFN0cmluZyArICI6ICIgKyB0aGlzLmZvcm1hdHRlZE1lc3NhZ2Uu
dGV4dENvbnRlbnQgKyAiXG4iICsgdGhpcy51cmwgKyAiIGxpbmUgIiArIHRoaXMubGluZTsKKyAg
ICB9LAorCisgICAgZ2V0IHRleHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21lc3Nh
Z2VUZXh0OworICAgIH0sCisKKyAgICBpc0VxdWFsOiBmdW5jdGlvbihtc2cpCisgICAgeworICAg
ICAgICBpZiAoIW1zZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAo
dGhpcy5fc3RhY2tUcmFjZSkgeworICAgICAgICAgICAgaWYgKCFtc2cuX3N0YWNrVHJhY2UpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdmFyIGwgPSB0aGlzLl9z
dGFja1RyYWNlOworICAgICAgICAgICAgdmFyIHIgPSBtc2cuX3N0YWNrVHJhY2U7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBpZiAobFtpXS51cmwgIT09IHJbaV0udXJsIHx8CisgICAgICAgICAgICAgICAgICAgIGxbaV0u
ZnVuY3Rpb25OYW1lICE9PSByW2ldLmZ1bmN0aW9uTmFtZSB8fAorICAgICAgICAgICAgICAgICAg
ICBsW2ldLmxpbmVOdW1iZXIgIT09IHJbaV0ubGluZU51bWJlciB8fAorICAgICAgICAgICAgICAg
ICAgICBsW2ldLmNvbHVtbk51bWJlciAhPT0gcltpXS5jb2x1bW5OdW1iZXIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiAodGhpcy5zb3VyY2UgPT09IG1zZy5zb3VyY2UpCisgICAgICAgICAgICAmJiAo
dGhpcy50eXBlID09PSBtc2cudHlwZSkKKyAgICAgICAgICAgICYmICh0aGlzLmxldmVsID09PSBt
c2cubGV2ZWwpCisgICAgICAgICAgICAmJiAodGhpcy5saW5lID09PSBtc2cubGluZSkKKyAgICAg
ICAgICAgICYmICh0aGlzLnVybCA9PT0gbXNnLnVybCkKKyAgICAgICAgICAgICYmICh0aGlzLm1l
c3NhZ2UgPT09IG1zZy5tZXNzYWdlKQorICAgICAgICAgICAgJiYgKHRoaXMuX3JlcXVlc3QgPT09
IG1zZy5fcmVxdWVzdCk7CisgICAgfSwKKworICAgIGdldCBzdGFja1RyYWNlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9zdGFja1RyYWNlOworICAgIH0sCisKKyAgICBjbG9uZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5jcmVhdGUodGhpcy5zb3VyY2UsIHRoaXMubGV2ZWwsIHRoaXMuX21lc3NhZ2VUZXh0LCB0aGlz
LnR5cGUsIHRoaXMudXJsLCB0aGlzLmxpbmUsIHRoaXMuY29sdW1uLCB0aGlzLnJlcGVhdENvdW50
LCB0aGlzLl9wYXJhbWV0ZXJzLCB0aGlzLl9zdGFja1RyYWNlLCB0aGlzLl9yZXF1ZXN0KTsKKyAg
ICB9LAorCisgICAgZ2V0IGxldmVsU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhp
cy5sZXZlbCkgeworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLlRpcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIlRpcCI7CisgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgor
ICAgICAgICAgICAgICAgIHJldHVybiAiTG9nIjsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nOgorICAgICAgICAgICAgICAg
IHJldHVybiAiV2FybmluZyI7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuRGVidWc6CisgICAgICAgICAgICAgICAgcmV0dXJuICJEZWJ1
ZyI7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICJFcnJvciI7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgZ2V0IGNsaXBib2FyZFByZWZpeFN0cmluZygpCisgICAgeworICAgICAg
ICByZXR1cm4gIlsiICsgdGhpcy5sZXZlbFN0cmluZyArICJdICI7CisgICAgfSwKKworICAgIHRv
Q2xpcGJvYXJkU3RyaW5nOiBmdW5jdGlvbihpc1ByZWZpeE9wdGlvbmFsKQorICAgIHsKKyAgICAg
ICAgdmFyIGlzVHJhY2UgPSB0aGlzLl9zaG91bGREdW1wU3RhY2tUcmFjZSgpOworCisgICAgICAg
IHZhciBjbGlwYm9hcmRTdHJpbmcgPSAiIjsKKyAgICAgICAgaWYgKHRoaXMuX2Zvcm1hdHRlZE1l
c3NhZ2UgJiYgIWlzVHJhY2UpCisgICAgICAgICAgICBjbGlwYm9hcmRTdHJpbmcgPSB0aGlzLl9m
b3JtYXR0ZWRNZXNzYWdlLnF1ZXJ5U2VsZWN0b3IoInNwYW4iKS5pbm5lclRleHQ7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNsaXBib2FyZFN0cmluZyA9IHRoaXMudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlID8gImNvbnNvbGUudHJhY2Uo
KSIgOiB0aGlzLl9tZXNzYWdlIHx8IHRoaXMuX21lc3NhZ2VUZXh0OworCisgICAgICAgIGlmICgh
aXNQcmVmaXhPcHRpb25hbCB8fCB0aGlzLmVuZm9yY2VzQ2xpcGJvYXJkUHJlZml4U3RyaW5nKQor
ICAgICAgICAgICAgY2xpcGJvYXJkU3RyaW5nID0gdGhpcy5jbGlwYm9hcmRQcmVmaXhTdHJpbmcg
KyBjbGlwYm9hcmRTdHJpbmc7CisKKyAgICAgICAgaWYgKGlzVHJhY2UpIHsKKyAgICAgICAgICAg
IHRoaXMuX3N0YWNrVHJhY2UuZm9yRWFjaChmdW5jdGlvbihmcmFtZSkgeworICAgICAgICAgICAg
ICAgIGNsaXBib2FyZFN0cmluZyArPSAiXG5cdCIgKyAoZnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKSk7CisgICAgICAgICAg
ICAgICAgaWYgKGZyYW1lLnVybCkKKyAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkU3RyaW5n
ICs9ICIgKCIgKyBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoZnJhbWUudXJsKSArICIs
IGxpbmUgIiArIGZyYW1lLmxpbmVOdW1iZXIgKyAiKSI7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciByZXBlYXRTdHJpbmcgPSB0aGlzLnJlcGVhdENv
dW50ID4gMSA/ICJ4IiArIHRoaXMucmVwZWF0Q291bnQgOiAiIjsKKworICAgICAgICAgICAgdmFy
IHVybExpbmUgPSAiIjsKKyAgICAgICAgICAgIGlmICh0aGlzLnVybCkgeworICAgICAgICAgICAg
ICAgIHZhciBjb21wb25lbnRzID0gW1dlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCh0aGlz
LnVybCksICJsaW5lICIgKyB0aGlzLmxpbmVdOworICAgICAgICAgICAgICAgIGlmIChyZXBlYXRT
dHJpbmcpCisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChyZXBlYXRTdHJpbmcp
OworICAgICAgICAgICAgICAgIHVybExpbmUgPSAiICgiICsgY29tcG9uZW50cy5qb2luKCIsICIp
ICsgIikiOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXBlYXRTdHJpbmcpCisgICAgICAgICAg
ICAgICAgdXJsTGluZSA9ICIgKCIgKyByZXBlYXRTdHJpbmcgKyAiKSI7CisKKyAgICAgICAgICAg
IGlmICh1cmxMaW5lKSB7CisgICAgICAgICAgICAgICAgdmFyIGxpbmVzID0gY2xpcGJvYXJkU3Ry
aW5nLnNwbGl0KCJcbiIpOworICAgICAgICAgICAgICAgIGxpbmVzWzBdICs9IHVybExpbmU7Cisg
ICAgICAgICAgICAgICAgY2xpcGJvYXJkU3RyaW5nID0gbGluZXMuam9pbigiXG4iKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbGlwYm9hcmRTdHJpbmc7Cisg
ICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNv
bGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TGVnYWN5Q29uc29sZU1lc3NhZ2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRm
OGQ3MTI2Njc2MWU2NzhhYjFkODViNWZjMzBkZTZkYmViNWMxZWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBo
IFBlY29yYXJvCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1X
ZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVs
LCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQpCi17Ci0gICAgdGhpcy5zb3VyY2UgPSBz
b3VyY2U7Ci0gICAgdGhpcy5sZXZlbCA9IGxldmVsOwotICAgIHRoaXMudXJsID0gdXJsIHx8IG51
bGw7Ci0gICAgdGhpcy5saW5lID0gbGluZSB8fCAwOwotICAgIHRoaXMuY29sdW1uID0gY29sdW1u
IHx8IDA7Ci0KLSAgICByZXBlYXRDb3VudCA9IHJlcGVhdENvdW50IHx8IDE7Ci0gICAgdGhpcy5y
ZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OwotICAgIHRoaXMucmVwZWF0RGVsdGEgPSByZXBlYXRD
b3VudDsKLSAgICB0aGlzLnRvdGFsUmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7Ci0gICAgaXNFcnJv
ck9yV2FybmluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLmxldmVs
ID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5p
bmcgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5FcnJvcik7Ci0gICAgfSwKLQotICAgIHVwZGF0ZVJlcGVhdENvdW50OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBjb25jcmV0ZSBpbnN0YW5j
ZXMKLSAgICB9LAotCi0gICAgY2xvbmU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IGNvbmNyZXRlIGluc3RhbmNlcwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlLCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMs
IHN0YWNrVHJhY2UsIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2VJbXBsKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIG51bGwsIHR5cGUs
IHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwg
cmVxdWVzdCk7Ci19OwotCi0vLyBGSVhNRTogU3dpdGNoIHRvIENvbnNvbGVBZ2VudC5Db25zb2xl
TWVzc2FnZVNvdXJjZS4KLVdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdl
U291cmNlID0gewotICAgIEhUTUw6ICJodG1sIiwKLSAgICBYTUw6ICJ4bWwiLAotICAgIEpTOiAi
amF2YXNjcmlwdCIsCi0gICAgTmV0d29yazogIm5ldHdvcmsiLAotICAgIENvbnNvbGVBUEk6ICJj
b25zb2xlLWFwaSIsCi0gICAgT3RoZXI6ICJvdGhlciIKLX07Ci0KLS8vIEZJWE1FOiBTd2l0Y2gg
dG8gQ29uc29sZUFnZW50LkNvbnNvbGVNZXNzYWdlVHlwZS4KLVdlYkluc3BlY3Rvci5MZWdhY3lD
b25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZSA9IHsKLSAgICBMb2c6ICJsb2ciLAotICAgIERpcjog
ImRpciIsCi0gICAgRGlyWE1MOiAiZGlyeG1sIiwKLSAgICBUYWJsZTogInRhYmxlIiwKLSAgICBU
cmFjZTogInRyYWNlIiwKLSAgICBTdGFydEdyb3VwOiAic3RhcnRHcm91cCIsCi0gICAgU3RhcnRH
cm91cENvbGxhcHNlZDogInN0YXJ0R3JvdXBDb2xsYXBzZWQiLAotICAgIEVuZEdyb3VwOiAiZW5k
R3JvdXAiLAotICAgIEFzc2VydDogImFzc2VydCIsCi0gICAgUmVzdWx0OiAicmVzdWx0IgotfTsK
LQotLy8gRklYTUU6IFN3aXRjaCB0byBDb25zb2xlQWdlbnQuQ29uc29sZU1lc3NhZ2VMZXZlbC4K
LVdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwgPSB7Ci0gICAg
VGlwOiAidGlwIiwKLSAgICBMb2c6ICJsb2ciLAotICAgIFdhcm5pbmc6ICJ3YXJuaW5nIiwKLSAg
ICBFcnJvcjogImVycm9yIiwKLSAgICBEZWJ1ZzogImRlYnVnIgotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xl
Z2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjNhOWQ2NTEwNjJlYTRhMTdiMzA0NjhiNGNlMDk3NjE3NjU2MmMyZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuanMKKysrIC9kZXYvbnVs
bApAQCAtMSw4MDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAx
MyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEpvc2VwaCBQZWNvcmFybwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbCA9IGZ1bmN0aW9uKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmtpZmllciwgdHlwZSwgdXJsLCBsaW5lLCBjb2x1bW4s
IHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KQotewotICAgIFdl
Ykluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5jYWxsKHRoaXMsIHNvdXJjZSwgbGV2ZWws
IHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCk7Ci0KLSAgICB0aGlzLl9saW5raWZpZXIg
PSBsaW5raWZpZXI7Ci0gICAgdGhpcy50eXBlID0gdHlwZSB8fCBXZWJJbnNwZWN0b3IuTGVnYWN5
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nOwotICAgIHRoaXMuX21lc3NhZ2VUZXh0ID0g
bWVzc2FnZTsKLSAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgICB0aGlzLl9z
dGFja1RyYWNlID0gc3RhY2tUcmFjZTsKLSAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKLQot
ICAgIHRoaXMuX2N1c3RvbUZvcm1hdHRlcnMgPSB7Ci0gICAgICAgICJvYmplY3QiOiB0aGlzLl9m
b3JtYXRQYXJhbWV0ZXJBc09iamVjdCwKLSAgICAgICAgImVycm9yIjogdGhpcy5fZm9ybWF0UGFy
YW1ldGVyQXNPYmplY3QsCi0gICAgICAgICJtYXAiOiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc09i
amVjdCwKLSAgICAgICAgInNldCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAotICAg
ICAgICAid2Vha21hcCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAotICAgICAgICAi
aXRlcmF0b3IiOiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc09iamVjdCwKLSAgICAgICAgImFycmF5
IjogIHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzQXJyYXksCi0gICAgICAgICJub2RlIjogICB0aGlz
Ll9mb3JtYXRQYXJhbWV0ZXJBc05vZGUsCi0gICAgICAgICJzdHJpbmciOiB0aGlzLl9mb3JtYXRQ
YXJhbWV0ZXJBc1N0cmluZwotICAgIH07Ci19OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29s
ZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKLQotICAgIGVuZm9yY2VzQ2xpcGJvYXJkUHJlZml4
U3RyaW5nOiB0cnVlLAotCi0gICAgX2Zvcm1hdE1lc3NhZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7Ci0gICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UuY2xhc3NOYW1lID0gImNvbnNv
bGUtbWVzc2FnZS10ZXh0IjsKLQotICAgICAgICB2YXIgbWVzc2FnZVRleHQ7Ci0gICAgICAgIGlm
ICh0aGlzLnNvdXJjZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VTb3VyY2UuQ29uc29sZUFQSSkgewotICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5UcmFjZToKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgiY29uc29sZS50cmFjZSgpIik7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydDoKLSAgICAgICAgICAgICAgICAgICAgdmFyIGFy
Z3MgPSBbV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBc3NlcnRpb24gZmFpbGVkOiIpXTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzID0gYXJncy5jb25jYXQodGhpcy5fcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KGFyZ3MpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5EaXI6Ci0gICAgICAgICAgICAgICAgICAgIHZhciBvYmog
PSB0aGlzLl9wYXJhbWV0ZXJzID8gdGhpcy5fcGFyYW1ldGVyc1swXSA6IHVuZGVmaW5lZDsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbIiVPIiwgb2JqXTsKLSAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZVRleHQgPSB0aGlzLl9mb3JtYXQoYXJncyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBhcmdzID0gdGhpcy5fcGFyYW1ldGVycyB8fCBbdGhpcy5fbWVzc2FnZVRleHRdOwotICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNvdXJjZSA9PT0gV2ViSW5zcGVjdG9y
LkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTmV0d29yaykgewotICAgICAgICAg
ICAgaWYgKHRoaXMuX3JlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zdGFja1RyYWNl
ID0gdGhpcy5fcmVxdWVzdC5zdGFja1RyYWNlOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9y
ZXF1ZXN0LmluaXRpYXRvciAmJiB0aGlzLl9yZXF1ZXN0LmluaXRpYXRvci51cmwpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLl9yZXF1ZXN0LmluaXRpYXRvci51cmw7Ci0g
ICAgICAgICAgICAgICAgICAgIHRoaXMubGluZSA9IHRoaXMuX3JlcXVlc3QuaW5pdGlhdG9yLmxp
bmVOdW1iZXI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIGlmICh0
aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLkVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3JlcXVlc3QucmVxdWVzdE1ldGhvZCArICIg
IikpOwotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChXZWJJbnNw
ZWN0b3IubGlua2lmeVJlcXVlc3RBc05vZGUodGhpcy5fcmVxdWVzdCkpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5fcmVxdWVzdC5mYWlsZWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyB0
aGlzLl9yZXF1ZXN0LmxvY2FsaXplZEZhaWxEZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyB0aGlzLl9yZXF1ZXN0LnN0YXR1c0NvZGUg
KyAiICgiICsgdGhpcy5fcmVxdWVzdC5zdGF0dXNUZXh0ICsgIikiKSk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gV2ViSW5zcGVj
dG9yLmxpbmtpZnlTdHJpbmdBc0ZyYWdtZW50V2l0aEN1c3RvbUxpbmtpZmllcih0aGlzLl9tZXNz
YWdlVGV4dCwgV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXF1ZXN0QXNOb2RlLmJpbmQobnVsbCwgdGhp
cy5fcmVxdWVzdCwgIiIpKTsKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5k
Q2hpbGQoZnJhZ21lbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudXJsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBhbmNob3IgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSh0aGlzLnVybCwgdGhpcy51
cmwsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zv
cm1hdHRlZE1lc3NhZ2UuYXBwZW5kQ2hpbGQoYW5jaG9yKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSB0aGlzLl9mb3JtYXQoW3RoaXMuX21lc3NhZ2VU
ZXh0XSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIg
YXJncyA9IHRoaXMuX3BhcmFtZXRlcnMgfHwgW3RoaXMuX21lc3NhZ2VUZXh0XTsKLSAgICAgICAg
ICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KGFyZ3MpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHRoaXMuc291cmNlICE9PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVNvdXJjZS5OZXR3b3JrIHx8IHRoaXMuX3JlcXVlc3QpIHsKLSAgICAgICAgICAgIHZh
ciBmaXJzdE5vbk5hdGl2ZUNhbGxGcmFtZSA9IHRoaXMuX2ZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1l
KCk7Ci0gICAgICAgICAgICBpZiAoZmlyc3ROb25OYXRpdmVDYWxsRnJhbWUpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX2xpbmtpZnlDYWxsRnJhbWUoZmlyc3ROb25O
YXRpdmVDYWxsRnJhbWUpOwotICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2Uu
YXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXJs
ICYmICF0aGlzLl9zaG91bGRIaWRlVVJMKHRoaXMudXJsKSkgewotICAgICAgICAgICAgICAgIHZh
ciB1cmxFbGVtZW50ID0gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmxpbmUs
IHRoaXMuY29sdW1uKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmFw
cGVuZENoaWxkKHVybEVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dCk7Ci0KLSAg
ICAgICAgaWYgKHRoaXMuc2F2ZWRSZXN1bHRJbmRleCkgewotICAgICAgICAgICAgdmFyIHNhdmVk
VmFyaWFibGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAg
ICAgICAgc2F2ZWRWYXJpYWJsZUVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtc2F2ZWQtdmFy
aWFibGUiOwotICAgICAgICAgICAgc2F2ZWRWYXJpYWJsZUVsZW1lbnQudGV4dENvbnRlbnQgPSAi
ID0gJCIgKyB0aGlzLnNhdmVkUmVzdWx0SW5kZXg7Ci0gICAgICAgICAgICBpZiAodGhpcy5fb2Jq
ZWN0VHJlZSkKLSAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RUcmVlLmFwcGVuZFRpdGxlU3Vm
Zml4KHNhdmVkVmFyaWFibGVFbGVtZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmFwcGVuZENoaWxkKHNhdmVkVmFyaWFibGVFbGVt
ZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9zaG91bGREdW1wU3RhY2tUcmFj
ZSgpKSB7Ci0gICAgICAgICAgICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIp
OwotICAgICAgICAgICAgb2wuY2xhc3NOYW1lID0gIm91dGxpbmUtZGlzY2xvc3VyZSI7Ci0gICAg
ICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUob2wpOwotCi0gICAgICAg
ICAgICB2YXIgY29udGVudCA9IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2U7Ci0gICAgICAgICAgICB2
YXIgcm9vdCA9IG5ldyBUcmVlRWxlbWVudChjb250ZW50LCBudWxsLCB0cnVlKTsKLSAgICAgICAg
ICAgIGNvbnRlbnQudHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsKLSAgICAgICAgICAgIHRyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKHJvb3QpOwotICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAg
ICAgICAgICAgICAgIHJvb3QuZXhwYW5kKCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRl
U3RhY2tUcmFjZVRyZWVFbGVtZW50KHJvb3QpOwotICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVk
TWVzc2FnZSA9IG9sOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBp
bmxpbmUgbWVzc2FnZSBidWJibGVzIGluIFNvdXJjZUZyYW1lcywgb3Igb3RoZXIgcGxhaW4tdGV4
dCByZXByZXNlbnRhdGlvbnMuCi0gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlVGV4dC50
ZXh0Q29udGVudDsKLSAgICB9LAotCi0gICAgX3Nob3VsZER1bXBTdGFja1RyYWNlOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gISF0aGlzLl9zdGFja1RyYWNlICYmIHRoaXMuX3N0
YWNrVHJhY2UubGVuZ3RoICYmICh0aGlzLnNvdXJjZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuTmV0d29yayB8fCB0aGlzLmxldmVsID09PSBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIHx8IHRoaXMu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRy
YWNlKTsKLSAgICB9LAotCi0gICAgX3Nob3VsZEhpZGVVUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB1cmwgPT09ICJ1bmRlZmluZWQiIHx8IHVybCA9PT0gIltuYXRpdmUg
Y29kZV0iOwotICAgIH0sCi0KLSAgICBfZmlyc3ROb25OYXRpdmVDYWxsRnJhbWU6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc3RhY2tUcmFjZSkKLSAgICAgICAgICAgIHJl
dHVybiBudWxsOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc3RhY2tUcmFj
ZS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fc3RhY2tUcmFj
ZVtpXTsKLSAgICAgICAgICAgIGlmICghZnJhbWUudXJsIHx8IGZyYW1lLnVybCA9PT0gIltuYXRp
dmUgY29kZV0iKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmV0dXJu
IGZyYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLQotICAg
IGdldCBtZXNzYWdlKCkKLSAgICB7Ci0gICAgICAgIC8vIGZvcmNlIG1lc3NhZ2UgZm9ybWF0dGlu
ZwotICAgICAgICB2YXIgZm9ybWF0dGVkTWVzc2FnZSA9IHRoaXMuZm9ybWF0dGVkTWVzc2FnZTsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7Ci0gICAgfSwKLQotICAgIGdldCBmb3JtYXR0
ZWRNZXNzYWdlKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fZm9ybWF0dGVkTWVzc2FnZSkK
LSAgICAgICAgICAgIHRoaXMuX2Zvcm1hdE1lc3NhZ2UoKTsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2Zvcm1hdHRlZE1lc3NhZ2U7Ci0gICAgfSwKLQotICAgIF9saW5raWZ5TG9jYXRpb246IGZ1bmN0
aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQotICAgIHsKLSAgICAgICAgLy8gQ29u
c29sZU1lc3NhZ2Ugc3RhY2sgdHJhY2UgbGluZSBudW1iZXJzIGFyZSBvbmUtYmFzZWQuCi0gICAg
ICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51bWJlciAtIDEgOiAwOwotICAgICAg
ICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKLQot
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKLSAgICB9LAotCi0gICAg
X2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwgY2FsbEZyYW1lLmxpbmVO
dW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOwotICAgIH0sCi0KLSAgICBpc0Vycm9yT3JX
YXJuaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gKHRoaXMubGV2ZWwgPT09
IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8
fCB0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLkVycm9yKTsKLSAgICB9LAotCi0gICAgX2Zvcm1hdDogZnVuY3Rpb24ocGFyYW1ldGVy
cykKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgbm9kZSBpcyB1c2VkIGxpa2UgYSBCdWlsZGVyLiBW
YWx1ZXMgYXJlIGNvbnRpbnVhbGx5IGFwcGVuZGVkIG9udG8gaXQuCi0gICAgICAgIHZhciBmb3Jt
YXR0ZWRSZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIGlm
ICghcGFyYW1ldGVycy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkUmVzdWx0
OwotCi0gICAgICAgIC8vIEZvcm1hdHRpbmcgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcGFyYW1l
dGVycyBhcmUgYWxsIHdyYXBwZXJzIHdoZXJlYXMgZnJvbnRlbmQgY29uc29sZQotICAgICAgICAv
LyBBUEkgYWxsb3dzIHBhc3NpbmcgYXJiaXRyYXJ5IHZhbHVlcyBhcyBtZXNzYWdlcyAoc3RyaW5n
cywgbnVtYmVycywgZXRjLikuIFdyYXAgdGhlbSBoZXJlLgotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBP
bmx5IHBhc3MgcnVudGltZSB3cmFwcGVycyBoZXJlLgotICAgICAgICAgICAgaWYgKHBhcmFtZXRl
cnNbaV0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtZXRlcnNbaV0gPT09
ICJvYmplY3QiKQotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNbaV0gPSBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBhcmFtZXRlcnNbaV0pOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNbaV0gPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LmZyb21QcmltaXRpdmVWYWx1ZShwYXJhbWV0ZXJzW2ldKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFRoZXJlIGNhbiBiZSBzdHJpbmcgbG9nIGFuZCBzdHJpbmcgZXZhbCByZXN1bHQuIFdl
IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSBiYXNlZCBvbiBtZXNzYWdlIHR5cGUuCi0gICAgICAg
IHZhciBzaG91bGRGb3JtYXRNZXNzYWdlID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBl
KHBhcmFtZXRlcnNbMF0pID09PSAic3RyaW5nIiAmJiB0aGlzLnR5cGUgIT09IFdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQ7Ci0KLSAgICAgICAgaWYg
KHNob3VsZEZvcm1hdE1lc3NhZ2UpIHsKLSAgICAgICAgICAgIC8vIE11bHRpcGxlIHBhcmFtZXRl
cnMgd2l0aCB0aGUgZmlyc3QgYmVpbmcgYSBmb3JtYXQgc3RyaW5nLiBTYXZlIHVudXNlZCBzdWJz
dGl0dXRpb25zLgotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zvcm1hdFdpdGhTdWJz
dGl0dXRpb25TdHJpbmcocGFyYW1ldGVycywgZm9ybWF0dGVkUmVzdWx0KTsKLSAgICAgICAgICAg
IHBhcmFtZXRlcnMgPSByZXN1bHQudW51c2VkU3Vic3RpdHV0aW9uczsKLSAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXJzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZXN1bHQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuVGFibGUpIHsKLSAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5hcHBlbmRD
aGlsZCh0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc1RhYmxlKHBhcmFtZXRlcnMpKTsKLSAgICAgICAg
ICAgIHJldHVybiBmb3JtYXR0ZWRSZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTaW5n
bGUgcGFyYW1ldGVyLCBvciB1bnVzZWQgc3Vic3RpdHV0aW9ucyBmcm9tIGFib3ZlLgotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIC8vIElubGluZSBzdHJpbmdzIHdoZW4gZm9ybWF0dGluZy4KLSAgICAgICAgICAgIGlmIChz
aG91bGRGb3JtYXRNZXNzYWdlICYmIHBhcmFtZXRlcnNbaV0udHlwZSA9PT0gInN0cmluZyIpIHsK
LSAgICAgICAgICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKLSAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoInR5cGUtc3RyaW5nIik7Ci0g
ICAgICAgICAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IHBhcmFtZXRlcnNbaV0uZGVzY3JpcHRp
b247Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVzdWx0LmFwcGVuZENoaWxkKHNwYW4pOwot
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVzdWx0LmFwcGVu
ZENoaWxkKHRoaXMuX2Zvcm1hdFBhcmFtZXRlcihwYXJhbWV0ZXJzW2ldLCBmYWxzZSkpOwotCi0g
ICAgICAgICAgICBpZiAoaSA8IHBhcmFtZXRlcnMubGVuZ3RoIC0gMSAmJiAhdGhpcy5faXNFeHBh
bmRhYmxlKHBhcmFtZXRlcnNbaV0pKQotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlc3VsdC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpKTsKLQotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBmb3JtYXR0ZWRSZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9pc0V4cGFuZGFi
bGU6IGZ1bmN0aW9uKHJlbW90ZU9iamVjdCkgewotICAgICAgICBpZiAoIXJlbW90ZU9iamVjdCkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocmVtb3RlT2JqZWN0Lmhh
c0NoaWxkcmVuICYmIHJlbW90ZU9iamVjdC5wcmV2aWV3ICYmIHJlbW90ZU9iamVjdC5wcmV2aWV3
Lmxvc3NsZXNzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBy
ZW1vdGVPYmplY3QuaGFzQ2hpbGRyZW47Ci0gICAgfSwKLQotICAgIF9mb3JtYXRQYXJhbWV0ZXI6
IGZ1bmN0aW9uKG91dHB1dCwgZm9yY2VPYmplY3RGb3JtYXQpCi0gICAgewotICAgICAgICB2YXIg
dHlwZTsKLSAgICAgICAgaWYgKGZvcmNlT2JqZWN0Rm9ybWF0KQotICAgICAgICAgICAgdHlwZSA9
ICJvYmplY3QiOwotICAgICAgICBlbHNlIGlmIChvdXRwdXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0KQotICAgICAgICAgICAgdHlwZSA9IG91dHB1dC5zdWJ0eXBlIHx8IG91
dHB1dC50eXBlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0eXBlID0gdHlwZW9mIG91dHB1
dDsKLQotICAgICAgICB2YXIgZm9ybWF0dGVyID0gdGhpcy5fY3VzdG9tRm9ybWF0dGVyc1t0eXBl
XTsKLSAgICAgICAgaWYgKCFmb3JtYXR0ZXIpCi0gICAgICAgICAgICBmb3JtYXR0ZXIgPSB0aGlz
Ll9mb3JtYXRQYXJhbWV0ZXJBc1ZhbHVlOwotCi0gICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwotCi0gICAgICAgIGlmICh0aGlzLl9pc0V4cGFuZGFibGUo
b3V0cHV0KSkKLSAgICAgICAgICAgIHNwYW4uY2xhc3NMaXN0LmFkZCgiZXhwYW5kYWJsZSIpOwot
Ci0gICAgICAgIGZvcm1hdHRlci5jYWxsKHRoaXMsIG91dHB1dCwgc3BhbiwgZm9yY2VPYmplY3RG
b3JtYXQpOwotICAgICAgICByZXR1cm4gc3BhbjsKLSAgICB9LAotCi0gICAgX2Zvcm1hdFBhcmFt
ZXRlckFzVmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtKQotICAgIHsKLSAgICAgICAgZWxlbS5h
cHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlRWxlbWVudEZvclJl
bW90ZU9iamVjdCh2YWx1ZSkpOwotICAgIH0sCi0KLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNPYmpl
Y3Q6IGZ1bmN0aW9uKG9iaiwgZWxlbSwgZm9yY2VFeHBhbnNpb24pCi0gICAgewotICAgICAgICB0
aGlzLl9vYmplY3RUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldyhvYmosIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlLlByb3BlcnRpZXMsIHRoaXMuX3Jvb3RQcm9w
ZXJ0eVBhdGhGb3JPYmplY3Qob2JqKSwgZm9yY2VFeHBhbnNpb24pOwotICAgICAgICBlbGVtLmFw
cGVuZENoaWxkKHRoaXMuX29iamVjdFRyZWUuZWxlbWVudCk7Ci0gICAgfSwKLQotICAgIF9mb3Jt
YXRQYXJhbWV0ZXJBc1N0cmluZzogZnVuY3Rpb24ob3V0cHV0LCBlbGVtKQotICAgIHsKLSAgICAg
ICAgdmFyIHNwYW4gPSBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlTGlua2lmaWVk
RWxlbWVudFN0cmluZyhvdXRwdXQuZGVzY3JpcHRpb24pOwotICAgICAgICBlbGVtLmFwcGVuZENo
aWxkKHNwYW4pOwotICAgIH0sCi0KLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNOb2RlOiBmdW5jdGlv
bihvYmplY3QsIGVsZW0pCi0gICAgewotICAgICAgICB2YXIgc3BhbiA9IFdlYkluc3BlY3Rvci5G
b3JtYXR0ZWRWYWx1ZS5jcmVhdGVFbGVtZW50Rm9yTm9kZShvYmplY3QpOwotICAgICAgICBlbGVt
LmFwcGVuZENoaWxkKHNwYW4pOwotICAgIH0sCi0KLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNBcnJh
eTogZnVuY3Rpb24oYXJyLCBlbGVtKQotICAgIHsKLSAgICAgICAgdGhpcy5fb2JqZWN0VHJlZSA9
IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcoYXJyLCBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZVZpZXcuTW9kZS5Qcm9wZXJ0aWVzLCB0aGlzLl9yb290UHJvcGVydHlQYXRoRm9yT2JqZWN0
KGFycikpOwotICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHRoaXMuX29iamVjdFRyZWUuZWxlbWVu
dCk7Ci0gICAgfSwKLQotICAgIF9yb290UHJvcGVydHlQYXRoRm9yT2JqZWN0OiBmdW5jdGlvbihv
YmplY3QpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuc2F2ZWRSZXN1bHRJbmRleCkKLSAgICAg
ICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBy
b3BlcnR5UGF0aChvYmplY3QsICIkIiArIHRoaXMuc2F2ZWRSZXN1bHRJbmRleCk7Ci0gICAgfSwK
LQotICAgIF91c2VyUHJvdmlkZWRDb2x1bW5OYW1lczogZnVuY3Rpb24oY29sdW1uTmFtZXNBcmd1
bWVudCkKLSAgICB7Ci0gICAgICAgIGlmICghY29sdW1uTmFtZXNBcmd1bWVudCkKLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHZhciByZW1vdGVPYmplY3QgPSBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGNvbHVtbk5hbWVzQXJndW1lbnQpOwotCi0gICAg
ICAgIC8vIFNpbmdsZSBwcmltaXRpdmUgYXJndW1lbnQuCi0gICAgICAgIGlmIChyZW1vdGVPYmpl
Y3QudHlwZSA9PT0gInN0cmluZyIgfHwgcmVtb3RlT2JqZWN0LnR5cGUgPT09ICJudW1iZXIiKQot
ICAgICAgICAgICAgcmV0dXJuIFtTdHJpbmcoY29sdW1uTmFtZXNBcmd1bWVudC52YWx1ZSldOwot
Ci0gICAgICAgIC8vIElnbm9yZSBldmVyeXRoaW5nIHRoYXQgaXMgbm90IGFuIGFycmF5IHdpdGgg
cHJvcGVydHkgcHJldmlld3MuCi0gICAgICAgIGlmIChyZW1vdGVPYmplY3QudHlwZSAhPT0gIm9i
amVjdCIgfHwgcmVtb3RlT2JqZWN0LnN1YnR5cGUgIT09ICJhcnJheSIgfHwgIXJlbW90ZU9iamVj
dC5wcmV2aWV3IHx8ICFyZW1vdGVPYmplY3QucHJldmlldy5wcm9wZXJ0eVByZXZpZXdzKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgLy8gQXJyYXkuIExvb2sgaW50byB0aGUg
cHJldmlldyBhbmQgZ2V0IHN0cmluZyB2YWx1ZXMuCi0gICAgICAgIHZhciBleHRyYWN0ZWRDb2x1
bW5OYW1lcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eVByZXZpZXcgb2YgcmVtb3Rl
T2JqZWN0LnByZXZpZXcucHJvcGVydHlQcmV2aWV3cykgewotICAgICAgICAgICAgaWYgKHByb3Bl
cnR5UHJldmlldy50eXBlID09PSAic3RyaW5nIiB8fCBwcm9wZXJ0eVByZXZpZXcudHlwZSA9PT0g
Im51bWJlciIpCi0gICAgICAgICAgICAgICAgZXh0cmFjdGVkQ29sdW1uTmFtZXMucHVzaChTdHJp
bmcocHJvcGVydHlQcmV2aWV3LnZhbHVlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
ZXh0cmFjdGVkQ29sdW1uTmFtZXMubGVuZ3RoID8gZXh0cmFjdGVkQ29sdW1uTmFtZXMgOiBudWxs
OwotICAgIH0sCi0KLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNUYWJsZTogZnVuY3Rpb24ocGFyYW1l
dGVycykKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOwotICAgICAgICB2YXIgdGFibGUgPSBwYXJhbWV0ZXJzWzBdOwotICAgICAgICBp
ZiAoIXRhYmxlIHx8ICF0YWJsZS5wcmV2aWV3KQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
Ci0KLSAgICAgICAgdmFyIHJvd3MgPSBbXTsKLSAgICAgICAgdmFyIGNvbHVtbk5hbWVzID0gW107
Ci0gICAgICAgIHZhciBmbGF0VmFsdWVzID0gW107Ci0gICAgICAgIHZhciBwcmV2aWV3ID0gdGFi
bGUucHJldmlldzsKLSAgICAgICAgdmFyIHVzZXJQcm92aWRlZENvbHVtbk5hbWVzID0gZmFsc2U7
Ci0KLSAgICAgICAgLy8gVXNlciBwcm92aWRlZCBjb2x1bW5OYW1lcy4KLSAgICAgICAgdmFyIGV4
dHJhY3RlZENvbHVtbk5hbWVzID0gdGhpcy5fdXNlclByb3ZpZGVkQ29sdW1uTmFtZXMocGFyYW1l
dGVyc1sxXSk7Ci0gICAgICAgIGlmIChleHRyYWN0ZWRDb2x1bW5OYW1lcykgewotICAgICAgICAg
ICAgdXNlclByb3ZpZGVkQ29sdW1uTmFtZXMgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1uTmFt
ZXMgPSBleHRyYWN0ZWRDb2x1bW5OYW1lczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENoZWNr
IGZpcnN0IGZvciB2YWx1ZVByZXZpZXdzIGluIHRoZSBwcm9wZXJ0aWVzIG1lYW5pbmcgdGhpcyB3
YXMgYW4gYXJyYXkgb2Ygb2JqZWN0cy4KLSAgICAgICAgaWYgKHByZXZpZXcucHJvcGVydHlQcmV2
aWV3cykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmV2aWV3LnByb3BlcnR5
UHJldmlld3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93UHJvcGVydHkg
PSBwcmV2aWV3LnByb3BlcnR5UHJldmlld3NbaV07Ci0gICAgICAgICAgICAgICAgdmFyIHJvd1By
ZXZpZXcgPSByb3dQcm9wZXJ0eS52YWx1ZVByZXZpZXc7Ci0gICAgICAgICAgICAgICAgaWYgKCFy
b3dQcmV2aWV3KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgIHZhciByb3dWYWx1ZSA9IHt9OwotICAgICAgICAgICAgICAgIGNvbnN0IG1heENvbHVtbnNU
b1JlbmRlciA9IDEwOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcm93UHJl
dmlldy5wcm9wZXJ0eVByZXZpZXdzLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBjZWxsUHJvcGVydHkgPSByb3dQcmV2aWV3LnByb3BlcnR5UHJldmlld3Nbal07Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBjb2x1bW5SZW5kZXJlZCA9IGNvbHVtbk5hbWVzLmNvbnRhaW5z
KGNlbGxQcm9wZXJ0eS5uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5SZW5k
ZXJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJQcm92aWRlZENvbHVtbk5h
bWVzIHx8IGNvbHVtbk5hbWVzLmxlbmd0aCA9PT0gbWF4Q29sdW1uc1RvUmVuZGVyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
Y29sdW1uUmVuZGVyZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFt
ZXMucHVzaChjZWxsUHJvcGVydHkubmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICByb3dWYWx1ZVtjZWxsUHJvcGVydHkubmFtZV0gPSBXZWJJbnNwZWN0
b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlRWxlbWVudEZvclByb3BlcnR5UHJldmlldyhjZWxsUHJv
cGVydHkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByb3dzLnB1c2goW3Jv
d1Byb3BlcnR5Lm5hbWUsIHJvd1ZhbHVlXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIHZhbHVlUHJldmlld3MsIGNvbnZlcnQgdG8gYSBmbGF0
IGxpc3QuCi0gICAgICAgIGlmIChyb3dzLmxlbmd0aCkgewotICAgICAgICAgICAgY29uc3QgZW1E
YXNoID0gIlx1MjAxNCI7Ci0gICAgICAgICAgICBjb2x1bW5OYW1lcy51bnNoaWZ0KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiKEluZGV4KSIpKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcm93cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciByb3dOYW1lID0gcm93
c1tpXVswXTsKLSAgICAgICAgICAgICAgICB2YXIgcm93VmFsdWUgPSByb3dzW2ldWzFdOwotICAg
ICAgICAgICAgICAgIGZsYXRWYWx1ZXMucHVzaChyb3dOYW1lKTsKLSAgICAgICAgICAgICAgICBm
b3IgKHZhciBqID0gMTsgaiA8IGNvbHVtbk5hbWVzLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBjb2x1bW5OYW1lID0gY29sdW1uTmFtZXNbal07Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghKGNvbHVtbk5hbWUgaW4gcm93VmFsdWUpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhdFZhbHVlcy5wdXNoKGVtRGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZsYXRWYWx1ZXMucHVzaChyb3dWYWx1ZVtjb2x1bW5O
YW1lXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gSWYgdGhlcmUgd2VyZSBubyB2YWx1ZSBQcmV2aWV3cywgdGhlbiBjaGVjayBmb3Ig
YW4gYXJyYXkgb2YgdmFsdWVzLgotICAgICAgICBpZiAoIWZsYXRWYWx1ZXMubGVuZ3RoICYmIHBy
ZXZpZXcucHJvcGVydHlQcmV2aWV3cykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcmV2aWV3LnByb3BlcnR5UHJldmlld3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgcm93UHJvcGVydHkgPSBwcmV2aWV3LnByb3BlcnR5UHJldmlld3NbaV07Ci0gICAgICAg
ICAgICAgICAgaWYgKCEoInZhbHVlIiBpbiByb3dQcm9wZXJ0eSkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5OYW1lcy5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaChXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkluZGV4IikpOwotICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgZmxhdFZhbHVlcy5wdXNoKHJvd1Byb3BlcnR5Lm5hbWUpOwotICAgICAgICAg
ICAgICAgIGZsYXRWYWx1ZXMucHVzaChXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRl
RWxlbWVudEZvclByb3BlcnR5UHJldmlldyhyb3dQcm9wZXJ0eSkpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgbG9zc2xlc3Mgb3Igbm90IHRhYmxlIGRhdGEsIG91
dHB1dCB0aGUgb2JqZWN0IHNvIGZ1bGwgZGF0YSBjYW4gYmUgZ290dGVuLgotICAgICAgICBpZiAo
IXByZXZpZXcubG9zc2xlc3MgfHwgIWZsYXRWYWx1ZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBl
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Zvcm1hdFBhcmFtZXRlcih0YWJsZSkpOwotICAgICAg
ICAgICAgaWYgKCFmbGF0VmFsdWVzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBkYXRhR3JpZENvbnRhaW5lciA9IGVsZW1l
bnQuY3JlYXRlQ2hpbGQoInNwYW4iKTsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQoY29sdW1uTmFtZXMsIGZsYXRWYWx1
ZXMpOwotICAgICAgICBkYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImlubGluZSIpOwot
ICAgICAgICBkYXRhR3JpZENvbnRhaW5lci5hcHBlbmRDaGlsZChkYXRhR3JpZC5lbGVtZW50KTsK
LQotICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9LAotCi0gICAgX2Zvcm1hdFdpdGhTdWJz
dGl0dXRpb25TdHJpbmc6IGZ1bmN0aW9uKHBhcmFtZXRlcnMsIGZvcm1hdHRlZFJlc3VsdCkKLSAg
ICB7Ci0gICAgICAgIHZhciBmb3JtYXR0ZXJzID0ge307Ci0KLSAgICAgICAgZnVuY3Rpb24gcGFy
YW1ldGVyRm9ybWF0dGVyKGZvcmNlLCBvYmopCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLl9mb3JtYXRQYXJhbWV0ZXIob2JqLCBmb3JjZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBzdHJpbmdGb3JtYXR0ZXIob2JqKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gb2JqLmRlc2NyaXB0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZmxv
YXRGb3JtYXR0ZXIob2JqKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG9iai52
YWx1ZSAhPT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQob2Jq
LmRlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBvYmoudmFsdWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBmdW5jdGlvbiBpbnRlZ2VyRm9ybWF0dGVyKG9iaikKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKHR5cGVvZiBvYmoudmFsdWUgIT09ICJudW1iZXIiKQotICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJzZUludChvYmouZGVzY3JpcHRpb24pOwotICAgICAgICAgICAgcmV0dXJu
IE1hdGguZmxvb3Iob2JqLnZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjdXJyZW50
U3R5bGUgPSBudWxsOwotICAgICAgICBmdW5jdGlvbiBzdHlsZUZvcm1hdHRlcihvYmopCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGN1cnJlbnRTdHlsZSA9IHt9OwotICAgICAgICAgICAgdmFyIGJ1
ZmZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIGJ1ZmZl
ci5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgb2JqLmRlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyLnN0eWxlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHByb3BlcnR5ID0gYnVmZmVyLnN0eWxlW2ldOwotICAgICAgICAgICAgICAgIGlm
IChpc1doaXRlbGlzdGVkUHJvcGVydHkocHJvcGVydHkpKQotICAgICAgICAgICAgICAgICAgICBj
dXJyZW50U3R5bGVbcHJvcGVydHldID0gYnVmZmVyLnN0eWxlW3Byb3BlcnR5XTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGlzV2hpdGVsaXN0ZWRQcm9wZXJ0
eShwcm9wZXJ0eSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHByZWZpeGVzID0gWyJiYWNr
Z3JvdW5kIiwgImJvcmRlciIsICJjb2xvciIsICJmb250IiwgImxpbmUiLCAibWFyZ2luIiwgInBh
ZGRpbmciLCAidGV4dCIsICItd2Via2l0LWJhY2tncm91bmQiLCAiLXdlYmtpdC1ib3JkZXIiLCAi
LXdlYmtpdC1mb250IiwgIi13ZWJraXQtbWFyZ2luIiwgIi13ZWJraXQtcGFkZGluZyIsICItd2Vi
a2l0LXRleHQiXTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuc3RhcnRzV2l0aChwcmVm
aXhlc1tpXSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmly
ZWJ1ZyB1c2VzICVvIGZvciBmb3JtYXR0aW5nIG9iamVjdHMuCi0gICAgICAgIGZvcm1hdHRlcnMu
byA9IHBhcmFtZXRlckZvcm1hdHRlci5iaW5kKHRoaXMsIGZhbHNlKTsKLSAgICAgICAgZm9ybWF0
dGVycy5zID0gc3RyaW5nRm9ybWF0dGVyOwotICAgICAgICBmb3JtYXR0ZXJzLmYgPSBmbG9hdEZv
cm1hdHRlcjsKLQotICAgICAgICAvLyBGaXJlYnVnIGFsbG93cyBib3RoICVpIGFuZCAlZCBmb3Ig
Zm9ybWF0dGluZyBpbnRlZ2Vycy4KLSAgICAgICAgZm9ybWF0dGVycy5pID0gaW50ZWdlckZvcm1h
dHRlcjsKLSAgICAgICAgZm9ybWF0dGVycy5kID0gaW50ZWdlckZvcm1hdHRlcjsKLQotICAgICAg
ICAvLyBGaXJlYnVnIHVzZXMgJWMgZm9yIHN0eWxpbmcgdGhlIG1lc3NhZ2UuCi0gICAgICAgIGZv
cm1hdHRlcnMuYyA9IHN0eWxlRm9ybWF0dGVyOwotCi0gICAgICAgIC8vIFN1cHBvcnQgJU8gdG8g
Zm9yY2Ugb2JqZWN0IGZvcm1hdHRpbmcsIGluc3RlYWQgb2YgdGhlIHR5cGUtYmFzZWQgJW8gZm9y
bWF0dGluZy4KLSAgICAgICAgZm9ybWF0dGVycy5PID0gcGFyYW1ldGVyRm9ybWF0dGVyLmJpbmQo
dGhpcywgdHJ1ZSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChiIGluc3RhbmNlb2YgTm9kZSkKLSAgICAgICAgICAgICAgICBhLmFw
cGVuZENoaWxkKGIpOwotICAgICAgICAgICAgZWxzZSBpZiAoYikgewotICAgICAgICAgICAgICAg
IHZhciB0b0FwcGVuZCA9IFdlYkluc3BlY3Rvci5saW5raWZ5U3RyaW5nQXNGcmFnbWVudChiLnRv
U3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjdXJyZW50U3R5bGUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLnN0eWxlW2tleV0gPSBjdXJyZW50U3R5bGVba2V5
XTsKLSAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZCh0b0FwcGVuZCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHRvQXBwZW5kID0gd3JhcHBlcjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7Ci0gICAgICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSAidHlwZS1zdHJpbmciOwotICAg
ICAgICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQodG9BcHBlbmQpOwotICAgICAgICAgICAgICAg
IGEuYXBwZW5kQ2hpbGQoc3Bhbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
YTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFN0cmluZy5mb3JtYXQgZG9lcyB0cmVhdCBmb3Jt
YXR0ZWRSZXN1bHQgbGlrZSBhIEJ1aWxkZXIsIHJlc3VsdCBpcyBhbiBvYmplY3QuCi0gICAgICAg
IHJldHVybiBTdHJpbmcuZm9ybWF0KHBhcmFtZXRlcnNbMF0uZGVzY3JpcHRpb24sIHBhcmFtZXRl
cnMuc2xpY2UoMSksIGZvcm1hdHRlcnMsIGZvcm1hdHRlZFJlc3VsdCwgYXBwZW5kKTsKLSAgICB9
LAotCi0gICAgZGVjb3JhdGVNZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7Ci0KLSAgICAgICAgZWxlbWVudC5tZXNzYWdlID0gdGhpczsKLSAgICAgICAgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLW1lc3NhZ2UiKTsKLQotICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gZWxlbWVudDsKLQotICAgICAgICBzd2l0Y2ggKHRoaXMubGV2ZWwpIHsKLSAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5U
aXA6Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLXRpcC1s
ZXZlbCIpOwotICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJkYXRhLWxhYmVs
cHJlZml4IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaXA6ICIpKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5Mb2c6Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjb25zb2xlLWxvZy1sZXZlbCIpOwotICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0
cmlidXRlKCJkYXRhLWxhYmVscHJlZml4IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2c6ICIp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5EZWJ1ZzoKLSAgICAgICAgICAgICAg
ICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtZGVidWctbGV2ZWwiKTsKLSAgICAgICAg
ICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbHByZWZpeCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRGVidWc6ICIpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZl
bC5XYXJuaW5nOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29s
ZS13YXJuaW5nLWxldmVsIik7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImRhdGEtbGFiZWxwcmVmaXgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhcm5pbmc6ICIpKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxl
Z2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAgICAgICBl
bGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtZXJyb3ItbGV2ZWwiKTsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbHByZWZpeCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRXJyb3I6ICIpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xl
TWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8IHRoaXMudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQp
Ci0gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtZ3JvdXAtdGl0bGUi
KTsKLQotICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7
Ci0KLSAgICAgICAgaWYgKHRoaXMucmVwZWF0Q291bnQgPiAxKQotICAgICAgICAgICAgdGhpcy51
cGRhdGVSZXBlYXRDb3VudCgpOwotCi0gICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCi0K
LSAgICB0b01lc3NhZ2VFbGVtZW50OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5fZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotCi0gICAgICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0KLSAgICAgICAg
cmV0dXJuIHRoaXMuZGVjb3JhdGVNZXNzYWdlRWxlbWVudChlbGVtZW50KTsKLSAgICB9LAotCi0g
ICAgX3BvcHVsYXRlU3RhY2tUcmFjZVRyZWVFbGVtZW50OiBmdW5jdGlvbihwYXJlbnRUcmVlRWxl
bWVudCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc3RhY2tUcmFj
ZS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fc3RhY2tUcmFj
ZVtpXTsKLQotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgICAgIHZhciBtZXNzYWdlVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xh
c3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKLSAgICAgICAgICAgIHZhciBmdW5jdGlv
bk5hbWUgPSBmcmFtZS5mdW5jdGlvbk5hbWUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5v
bnltb3VzIGZ1bmN0aW9uKSIpOwotICAgICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGZ1bmN0aW9uTmFtZSkpOwotICAgICAgICAg
ICAgY29udGVudC5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dEVsZW1lbnQpOwotCi0gICAgICAgICAg
ICBpZiAoZnJhbWUudXJsICYmICF0aGlzLl9zaG91bGRIaWRlVVJMKGZyYW1lLnVybCkpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX2xpbmtpZnlDYWxsRnJhbWUoZnJh
bWUpOwotICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBUcmVlRWxl
bWVudChjb250ZW50KTsKLSAgICAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50LmFwcGVuZENoaWxk
KHRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICB1cGRhdGVSZXBlYXRDb3Vu
dDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICghdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQpIHsK
LSAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwotICAgICAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQuY2xhc3NO
YW1lID0gImJ1YmJsZSI7Ci0KLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuaW5zZXJ0QmVmb3Jl
KHRoaXMucmVwZWF0Q291bnRFbGVtZW50LCB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpOwotICAg
ICAgICB9Ci0gICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50LnRleHRDb250ZW50ID0gdGhp
cy5yZXBlYXRDb3VudDsKLSAgICB9LAotCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHZhciBzb3VyY2VTdHJpbmc7Ci0gICAgICAgIHN3aXRjaCAodGhpcy5zb3VyY2Up
IHsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VTb3VyY2UuSFRNTDoKLSAgICAgICAgICAgICAgICBzb3VyY2VTdHJpbmcgPSAiSFRNTCI7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5M
ZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLlhNTDoKLSAgICAgICAgICAgICAgICBz
b3VyY2VTdHJpbmcgPSAiWE1MIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlM6
Ci0gICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIkpTIjsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VTb3VyY2UuTmV0d29yazoKLSAgICAgICAgICAgICAgICBzb3VyY2VTdHJpbmcgPSAi
TmV0d29yayI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkNvbnNvbGVBUEk6Ci0g
ICAgICAgICAgICAgICAgc291cmNlU3RyaW5nID0gIkNvbnNvbGVBUEkiOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1l
c3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlcjoKLSAgICAgICAgICAgICAgICBzb3VyY2VTdHJpbmcg
PSAiT3RoZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFyIHR5cGVTdHJpbmc7Ci0gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7Ci0gICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2c6
Ci0gICAgICAgICAgICAgICAgdHlwZVN0cmluZyA9ICJMb2ciOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuRGlyOgotICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAiRGlyIjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2Fj
eUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkRpclhNTDoKLSAgICAgICAgICAgICAgICB0eXBl
U3RyaW5nID0gIkRpciBYTUwiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6
Ci0gICAgICAgICAgICAgICAgdHlwZVN0cmluZyA9ICJUcmFjZSI7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwQ29sbGFwc2VkOgotICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cDoKLSAg
ICAgICAgICAgICAgICB0eXBlU3RyaW5nID0gIlN0YXJ0IEdyb3VwIjsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VUeXBlLkVuZEdyb3VwOgotICAgICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSAi
RW5kIEdyb3VwIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydDoKLSAgICAg
ICAgICAgICAgICB0eXBlU3RyaW5nID0gIkFzc2VydCI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5SZXN1bHQ6Ci0gICAgICAgICAgICAgICAgdHlwZVN0cmluZyA9ICJSZXN1bHQiOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHNvdXJj
ZVN0cmluZyArICIgIiArIHR5cGVTdHJpbmcgKyAiICIgKyB0aGlzLmxldmVsU3RyaW5nICsgIjog
IiArIHRoaXMuZm9ybWF0dGVkTWVzc2FnZS50ZXh0Q29udGVudCArICJcbiIgKyB0aGlzLnVybCAr
ICIgbGluZSAiICsgdGhpcy5saW5lOwotICAgIH0sCi0KLSAgICBnZXQgdGV4dCgpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZVRleHQ7Ci0gICAgfSwKLQotICAgIGlzRXF1YWw6
IGZ1bmN0aW9uKG1zZykKLSAgICB7Ci0gICAgICAgIGlmICghbXNnKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICh0aGlzLl9zdGFja1RyYWNlKSB7Ci0gICAgICAgICAg
ICBpZiAoIW1zZy5fc3RhY2tUcmFjZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICB2YXIgbCA9IHRoaXMuX3N0YWNrVHJhY2U7Ci0gICAgICAgICAgICB2YXIgciA9
IG1zZy5fc3RhY2tUcmFjZTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbC5sZW5n
dGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChsW2ldLnVybCAhPT0gcltpXS51cmwgfHwK
LSAgICAgICAgICAgICAgICAgICAgbFtpXS5mdW5jdGlvbk5hbWUgIT09IHJbaV0uZnVuY3Rpb25O
YW1lIHx8Ci0gICAgICAgICAgICAgICAgICAgIGxbaV0ubGluZU51bWJlciAhPT0gcltpXS5saW5l
TnVtYmVyIHx8Ci0gICAgICAgICAgICAgICAgICAgIGxbaV0uY29sdW1uTnVtYmVyICE9PSByW2ld
LmNvbHVtbk51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLnNvdXJjZSA9PT0gbXNn
LnNvdXJjZSkKLSAgICAgICAgICAgICYmICh0aGlzLnR5cGUgPT09IG1zZy50eXBlKQotICAgICAg
ICAgICAgJiYgKHRoaXMubGV2ZWwgPT09IG1zZy5sZXZlbCkKLSAgICAgICAgICAgICYmICh0aGlz
LmxpbmUgPT09IG1zZy5saW5lKQotICAgICAgICAgICAgJiYgKHRoaXMudXJsID09PSBtc2cudXJs
KQotICAgICAgICAgICAgJiYgKHRoaXMubWVzc2FnZSA9PT0gbXNnLm1lc3NhZ2UpCi0gICAgICAg
ICAgICAmJiAodGhpcy5fcmVxdWVzdCA9PT0gbXNnLl9yZXF1ZXN0KTsKLSAgICB9LAotCi0gICAg
Z2V0IHN0YWNrVHJhY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3N0YWNrVHJhY2U7
Ci0gICAgfSwKLQotICAgIGNsb25lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLmNyZWF0ZSh0aGlzLnNvdXJjZSwgdGhp
cy5sZXZlbCwgdGhpcy5fbWVzc2FnZVRleHQsIHRoaXMudHlwZSwgdGhpcy51cmwsIHRoaXMubGlu
ZSwgdGhpcy5jb2x1bW4sIHRoaXMucmVwZWF0Q291bnQsIHRoaXMuX3BhcmFtZXRlcnMsIHRoaXMu
X3N0YWNrVHJhY2UsIHRoaXMuX3JlcXVlc3QpOwotICAgIH0sCi0KLSAgICBnZXQgbGV2ZWxTdHJp
bmcoKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0aGlzLmxldmVsKSB7Ci0gICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuVGlwOgot
ICAgICAgICAgICAgICAgIHJldHVybiAiVGlwIjsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICJMb2ciOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICJXYXJuaW5nIjsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5EZWJ1ZzoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkRlYnVn
IjsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkVycm9yIjsKLSAgICAg
ICAgfQotICAgIH0sCi0KLSAgICBnZXQgY2xpcGJvYXJkUHJlZml4U3RyaW5nKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAiWyIgKyB0aGlzLmxldmVsU3RyaW5nICsgIl0gIjsKLSAgICB9LAotCi0g
ICAgdG9DbGlwYm9hcmRTdHJpbmc6IGZ1bmN0aW9uKGlzUHJlZml4T3B0aW9uYWwpCi0gICAgewot
ICAgICAgICB2YXIgaXNUcmFjZSA9IHRoaXMuX3Nob3VsZER1bXBTdGFja1RyYWNlKCk7Ci0KLSAg
ICAgICAgdmFyIGNsaXBib2FyZFN0cmluZyA9ICIiOwotICAgICAgICBpZiAodGhpcy5fZm9ybWF0
dGVkTWVzc2FnZSAmJiAhaXNUcmFjZSkKLSAgICAgICAgICAgIGNsaXBib2FyZFN0cmluZyA9IHRo
aXMuX2Zvcm1hdHRlZE1lc3NhZ2UucXVlcnlTZWxlY3Rvcigic3BhbiIpLmlubmVyVGV4dDsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2xpcGJvYXJkU3RyaW5nID0gdGhpcy50eXBlID09PSBX
ZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2UgPyAiY29u
c29sZS50cmFjZSgpIiA6IHRoaXMuX21lc3NhZ2UgfHwgdGhpcy5fbWVzc2FnZVRleHQ7Ci0KLSAg
ICAgICAgaWYgKCFpc1ByZWZpeE9wdGlvbmFsIHx8IHRoaXMuZW5mb3JjZXNDbGlwYm9hcmRQcmVm
aXhTdHJpbmcpCi0gICAgICAgICAgICBjbGlwYm9hcmRTdHJpbmcgPSB0aGlzLmNsaXBib2FyZFBy
ZWZpeFN0cmluZyArIGNsaXBib2FyZFN0cmluZzsKLQotICAgICAgICBpZiAoaXNUcmFjZSkgewot
ICAgICAgICAgICAgdGhpcy5fc3RhY2tUcmFjZS5mb3JFYWNoKGZ1bmN0aW9uKGZyYW1lKSB7Ci0g
ICAgICAgICAgICAgICAgY2xpcGJvYXJkU3RyaW5nICs9ICJcblx0IiArIChmcmFtZS5mdW5jdGlv
bk5hbWUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpKTsK
LSAgICAgICAgICAgICAgICBpZiAoZnJhbWUudXJsKQotICAgICAgICAgICAgICAgICAgICBjbGlw
Ym9hcmRTdHJpbmcgKz0gIiAoIiArIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChmcmFt
ZS51cmwpICsgIiwgbGluZSAiICsgZnJhbWUubGluZU51bWJlciArICIpIjsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHJlcGVhdFN0cmluZyA9IHRo
aXMucmVwZWF0Q291bnQgPiAxID8gIngiICsgdGhpcy5yZXBlYXRDb3VudCA6ICIiOwotCi0gICAg
ICAgICAgICB2YXIgdXJsTGluZSA9ICIiOwotICAgICAgICAgICAgaWYgKHRoaXMudXJsKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBbV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1l
Rm9yVVJMKHRoaXMudXJsKSwgImxpbmUgIiArIHRoaXMubGluZV07Ci0gICAgICAgICAgICAgICAg
aWYgKHJlcGVhdFN0cmluZykKLSAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKHJl
cGVhdFN0cmluZyk7Ci0gICAgICAgICAgICAgICAgdXJsTGluZSA9ICIgKCIgKyBjb21wb25lbnRz
LmpvaW4oIiwgIikgKyAiKSI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcGVhdFN0cmluZykK
LSAgICAgICAgICAgICAgICB1cmxMaW5lID0gIiAoIiArIHJlcGVhdFN0cmluZyArICIpIjsKLQot
ICAgICAgICAgICAgaWYgKHVybExpbmUpIHsKLSAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBj
bGlwYm9hcmRTdHJpbmcuc3BsaXQoIlxuIik7Ci0gICAgICAgICAgICAgICAgbGluZXNbMF0gKz0g
dXJsTGluZTsKLSAgICAgICAgICAgICAgICBjbGlwYm9hcmRTdHJpbmcgPSBsaW5lcy5qb2luKCJc
biIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNsaXBib2Fy
ZFN0cmluZzsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJ
bXBsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3Nh
Z2UucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwppbmRleCA4YWU3YTFkNmEzODQ5MDY1
M2MyZTFlZDk4NTExM2YxNjJkNzM4MjhhLi5lYzRmNzcwZGQ2NWMxY2FmMDY2ZmExMmNmMGZjNGNl
Y2JkM2Y4NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtMTc2LDcgKzE3Niw3IEBAIFdl
Ykluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5xdWlja0NvbnNvbGUudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgLy8gTmVzdCB0aGUg
bWVzc2FnZS4KLSAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkxlZ2Fj
eUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkVuZEdyb3VwKSB7CisgICAgICAgIGlmIChtZXNz
YWdlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRH
cm91cCkgewogICAgICAgICAgICAgdmFyIHggPSAxNiAqIHRoaXMuX25lc3RpbmdMZXZlbDsKICAg
ICAgICAgICAgIHZhciBtZXNzYWdlRWxlbWVudCA9IG1lc3NhZ2UudG9NZXNzYWdlRWxlbWVudCgp
OwogICAgICAgICAgICAgbWVzc2FnZUVsZW1lbnQuc3R5bGUubGVmdCA9IHggKyAicHgiOwpAQCAt
MTg1LDExICsxODUsMTEgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBVcGRhdGUgdGhlIG5lc3RpbmcgbGV2ZWwuCiAgICAgICAgIHN3aXRj
aCAobWVzc2FnZS50eXBlKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXA6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQ6
CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0
YXJ0R3JvdXA6CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQ6CiAgICAgICAgICAgICArK3RoaXMuX25lc3RpbmdM
ZXZlbDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MZWdh
Y3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRHcm91cDoKKyAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuRW5kR3JvdXA6CiAgICAgICAgICAg
ICAtLXRoaXMuX25lc3RpbmdMZXZlbDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0yMDIsNyArMjAyLDcgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBXZSBvbmx5IGF1dG8gc2hvdyB0aGUgY29uc29sZSBpZiB0aGUgbWVz
c2FnZSBpcyBhIHJlc3VsdC4KICAgICAgICAgLy8gVGhpcyBpcyB3aGVuIHRoZSB1c2VyIGV2YWx1
YXRlZCBzb21ldGhpbmcgZGlyZWN0bHkgaW4gdGhlIHByb21wdC4KLSAgICAgICAgaWYgKG1lc3Nh
Z2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBl
LlJlc3VsdCkKKyAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc1Nob3dpbmdDb25zb2xlVmlldygpKQpAQCAtMzMwLDcg
KzMzMCw3IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzLnB1c2goZXZlbnQuZGF0YS5tZXNzYWdl
KTsKIAogICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLmFwcGVu
ZENvbnNvbGVNZXNzYWdlKGV2ZW50LmRhdGEubWVzc2FnZSk7Ci0gICAgICAgIGlmIChtZXNzYWdl
LnR5cGUgIT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5F
bmRHcm91cCkKKyAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkVuZEdyb3VwKQogICAgICAgICAgICAgdGhpcy5fZmlsdGVy
TWVzc2FnZXMoW21lc3NhZ2UudG9NZXNzYWdlRWxlbWVudCgpXSk7CiAgICAgfSwKIApAQCAtNjc3
LDE0ICs2NzcsMTQgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gc2hvd3NBbGwgfHwgbWVzc2FnZS5jb21tYW5kIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kIHx8IG1lc3NhZ2UubWVzc2FnZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdDsKICAgICAgICAgICAg
IGlmICghdmlzaWJsZSkgewogICAgICAgICAgICAgICAgIHN3aXRjaChtZXNzYWdlLm1lc3NhZ2Uu
bGV2ZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nOgogICAg
ICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSA9IHNob3dzV2FybmluZ3M7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJy
b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gc2hvd3NFcnJvcnM7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzoKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLkRlYnVnOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRGVidWc6CiAgICAgICAgICAg
ICAgICAgICAgICAgICB2aXNpYmxlID0gc2hvd3NMb2dzOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTk2LDcgKzk5Niw3IEBAIFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgcHJv
dmlzaW9uYWxNZXNzYWdlIG9mIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMpIHsKICAgICAgICAg
ICAgIHZhciBtZXNzYWdlID0gdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kQ29uc29sZU1l
c3NhZ2UocHJvdmlzaW9uYWxNZXNzYWdlKTsKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUg
IT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRHcm91
cCkKKyAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRHcm91cCkKICAgICAgICAgICAgICAgICB0aGlzLl9maWx0
ZXJNZXNzYWdlcyhbbWVzc2FnZS50b01lc3NhZ2VFbGVtZW50KCldKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJvai9X
ZWJJbnNwZWN0b3JVSS52Y3hwcm9qIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3Rv
clVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvagppbmRleCAwNDc4Y2Y0NjIyNWE1Mjcy
MjZlNzEzMmIxYTgxNmM1OGVmM2E1ZjQ0Li40NWQyNGQ5NTU4OGE5NGNjODc0MzYzYjE5NTkzYmZl
MTQ4NjM0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9y
VUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2oKQEAgLTMx
NSw4ICszMTUsOCBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29s
ZUNvbW1hbmQuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25z
b2xlQ29tbWFuZFJlc3VsdC5qcyIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJm
YWNlXENvbnNvbGVHcm91cC5qcyIgLz4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJm
YWNlXExlZ2FjeUNvbnNvbGVNZXNzYWdlLmpzIiAvPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVz
ZXJJbnRlcmZhY2VcTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzIiAvPgorICAgIDxOb25lIElu
Y2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29sZU1lc3NhZ2UuanMiIC8+CisgICAgPE5vbmUg
SW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25zb2xlTWVzc2FnZUltcGwuanMiIC8+CiAgICAg
PE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25zb2xlT2JzZXJ2ZXIuanMiIC8+CiAg
ICAgPE5vbmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25zb2xlUHJvbXB0LmNzcyIgLz4K
ICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENvbnNvbGVQcm9tcHQuanMiIC8+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUkudmN4cHJv
ai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
V2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qLmZpbHRlcnMKaW5k
ZXggZGRhNzYyZWM2NDNkYTY5MjhlYTA1MDA1Mzk1YmY3Y2Q0MTMzMTE2YS4uOGMwZDc5MTFhNDU2
MThmMzBmNzQzYTMxNjkwMDE1MWQyZGQxMTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0
ZXJzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dl
Ykluc3BlY3RvclVJLnZjeHByb2ouZmlsdGVycwpAQCAtMTk1LDEwICsxOTUsMTAgQEAKICAgICA8
Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENvbnNvbGVHcm91cC5qcyI+CiAgICAgICA8
RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5j
bHVkZT0iLi5cVXNlckludGVyZmFjZVxMZWdhY3lDb25zb2xlTWVzc2FnZS5qcyI+CisgICAgPE5v
bmUgSW5jbHVkZT0iLi5cVXNlckludGVyZmFjZVxDb25zb2xlTWVzc2FnZS5qcyI+CiAgICAgICA8
RmlsdGVyPlVzZXJJbnRlcmZhY2U8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5j
bHVkZT0iLi5cVXNlckludGVyZmFjZVxMZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuanMiPgorICAg
IDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2VcQ29uc29sZU1lc3NhZ2VJbXBsLmpzIj4K
ICAgICAgIDxGaWx0ZXI+VXNlckludGVyZmFjZTwvRmlsdGVyPgogICAgIDwvTm9uZT4KICAgICA8
Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXENvbnNvbGVPYnNlcnZlci5qcyI+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>