<?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>169888</bug_id>
          
          <creation_ts>2017-03-20 13:54:15 -0700</creation_ts>
          <short_desc>Charts page show an inconsistent list of revisions for Git and Subversion</short_desc>
          <delta_ts>2017-03-20 18:19:47 -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>Perf Dashboard</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289562</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 13:54:15 -0700</bug_when>
    <thetext>When using Git, we end up showing the last data point&apos;s revision
instead of all revisions after the last data point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289603</commentid>
    <comment_count>1</comment_count>
      <attachid>304960</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 15:44:23 -0700</bug_when>
    <thetext>Created attachment 304960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289640</commentid>
    <comment_count>2</comment_count>
      <attachid>304970</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 17:11:08 -0700</bug_when>
    <thetext>Created attachment 304970
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289641</commentid>
    <comment_count>3</comment_count>
      <attachid>304970</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-20 17:12:40 -0700</bug_when>
    <thetext>Comment on attachment 304970
Patch for landing

Rejecting attachment 304970 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 304970, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Websites/perf.webkit.org/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/3372326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289650</commentid>
    <comment_count>4</comment_count>
      <attachid>304973</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 17:20:16 -0700</bug_when>
    <thetext>Created attachment 304973
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289653</commentid>
    <comment_count>5</comment_count>
      <attachid>304973</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-20 17:21:38 -0700</bug_when>
    <thetext>Comment on attachment 304973
Patch for landing

Rejecting attachment 304973 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 304973, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/perf.webkit.org/public/v3/models/data-model.js
patching file Websites/perf.webkit.org/public/v3/remote.js
patching file Websites/perf.webkit.org/server-tests/api-commits-tests.js
patching file Websites/perf.webkit.org/server-tests/api-commits.js
rm &apos;Websites/perf.webkit.org/server-tests/api-commits.js&apos;
patching file Websites/perf.webkit.org/unit-tests/commit-log-tests.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/3372444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289655</commentid>
    <comment_count>6</comment_count>
      <attachid>304976</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 17:25:52 -0700</bug_when>
    <thetext>Created attachment 304976
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289656</commentid>
    <comment_count>7</comment_count>
      <attachid>304976</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-20 17:28:10 -0700</bug_when>
    <thetext>Comment on attachment 304976
Patch for landing

Rejecting attachment 304976 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 304976, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/perf.webkit.org/public/v3/models/data-model.js
patching file Websites/perf.webkit.org/public/v3/remote.js
patching file Websites/perf.webkit.org/server-tests/api-commits-tests.js
patching file Websites/perf.webkit.org/server-tests/api-commits.js
rm &apos;Websites/perf.webkit.org/server-tests/api-commits.js&apos;
patching file Websites/perf.webkit.org/unit-tests/commit-log-tests.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/3372483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289668</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 18:19:47 -0700</bug_when>
    <thetext>Committed r214202: &lt;http://trac.webkit.org/changeset/214202&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304960</attachid>
            <date>2017-03-20 15:44:23 -0700</date>
            <delta_ts>2017-03-20 17:11:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169888-20170320154422.patch</filename>
            <type>text/plain</type>
            <size>126511</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDk5CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBmZGJhNmZkMWEzMzkwNzIwYjhmYmEwNjhhOWMyNDUxYjFiNDU4NmU4Li4wOTA4NjRkYTU0
ZWRhNzhmN2ExNThlYTgzMDM3ZTYxNGFmNjlmM2QxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMjUgQEAKKzIwMTctMDMtMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2hhcnRzIHBhZ2Ugc2hvdyBhbiBpbmNvbnNpc3RlbnQg
bGlzdCBvZiByZXZpc2lvbnMgZm9yIEdpdCBhbmQgU3VidmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBHaXQsIENvbW1pdExvZ1ZpZXdl
ciB3YXMgc2hvd2luZyB0aGUgbGlzdCBvZiByZXZpc2lvbnMgaW5jbHVkaW5nIHRoZSBzdGFydGlu
ZyBoYXNoLAorICAgICAgICB3aGljaCB3YXMgdGhlIGxhc3QgZGF0YSBwb2ludCdzIHJldmlzaW9u
IGluc3RlYWQgb2YgYWxsIHJldmlzaW9ucyBhZnRlciB0aGUgbGFzdCBkYXRhIHBvaW50LgorCisg
ICAgICAgIEZpeGVkIHRoZSBidWcgYnkgYWx3YXlzIHNwZWNpZnlpbmcgdGhlIHJldmlzaW9uIGF0
IHRoZSBsYXN0IGRhdGEgcG9pbnQgaW4gYm90aCBTdWJ2ZXJzaW9uCisgICAgICAgIGFuZCBHaXQg
YW5kIHRoZW4gbWFraW5nIC9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vP2Zyb209WCZ0bz1ZIGV4
Y2x1ZGUgdGhlIGZpcnN0IHJldmlzaW9uLgorICAgICAgICBGb3IgY2xhcml0eSwgImZyb20iIGFu
ZCAidG8iIHF1ZXJ5IHBhcmFtZXRlcnMgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gInByZWNlZGluZ1Jl
dmlzaW9uIiBhbmQKKyAgICAgICAgImxhc3RSZXZpc2lvbiIgcmVzcGVjdGl2ZWx5LgorCisgICAg
ICAgIFdlIGFsc28gbm8gbG9uZ2VyIGFkZHMgMSB0byB0aGUgc3RhcnRpbmcgcmV2aXNpb24gb2Yg
U3VidmVyc2lvbi1saWtlIHN0YXJ0aW5nIHJldmlzaW9ucy4gZS5nLgorICAgICAgICB3aGVuIHRo
ZSBsYXN0IGRhdGEgcG9pbnQgd2FzIGF0IHIxMjM0LCBuZXcgZGF0YSBwb2ludCBpcyBhdCByMTI1
MCwgdGhlIGxhYmVsIGlzIG5vdyAicjEyMzQtcjEyNTAiCisgICAgICAgIGluc3RlYWQgb2YgInIx
MjM1LXIxMjUwIi4KKworICAgICAgICAqIGJyb3dzZXItdGVzdHMvY2hhcnQtcmV2aXNpb24tcmFu
Z2UtdGVzdHMuanM6IEZpeGVkIHRoZSB0ZXN0cyBzaW5jZSByZXZpc2lvbkxpc3Qgbm8gbG9uZ2Vy
CisgICAgICAgIHNwZWNpZmllcyBmcm9tL3RvIHJldmlzaW9ucy4KKyAgICAgICAgKiBicm93c2Vy
LXRlc3RzL2NvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzOiBBZGRlZC4gQWRkZWQgdGVzdHMgZm9y
IENvbW1pdExvZ1ZpZXdlci4KKyAgICAgICAgKiBicm93c2VyLXRlc3RzL2luZGV4Lmh0bWw6IElu
Y2x1ZGUgdGhlIG5ldyB0ZXN0LiBBbHNvIHVzZSBhIGxvY2FsIGNvcHkgb2YgbW9jaGEuanMvY3Nz
LgorCisgICAgICAgICogcHVibGljL2FwaS9jb21taXRzLnBocDoKKyAgICAgICAgKG1haW4pOiBS
ZW5hbWVkICJmcm9tIiBhbmQgInRvIiBxdWVyeSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogcHVi
bGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocDoKKyAgICAgICAgKENvbW1pdExvZ0Zl
dGNoZXI6OmZldGNoX2JldHdlZW4pOiBBZGRlZCBhIGNoZWNrIHRoYXQgY29tbWl0IHRpbWUgc2hv
dWxkIGVpdGhlciBiZSBzcGVjaWZpZWQKKyAgICAgICAgaW4gYm90aCByb3dzIG9yIG5vdCBzcGVj
aWZpZWQgaW4gZWl0aGVyLiBBbHNvIHJlamVjdCB3aGVuIGJlZm9yZV9maXJzdF9yZXZpc2lvbiBp
cyBpZGVudGljYWwKKyAgICAgICAgb3IgYWZ0ZXIgbGFzdF9yZXZpc2lvbiBpbnN0ZWFkIG9mIHJl
LW9yZGVyaW5nIHRoZW0gc2luY2UgaXQgbm8gbG9uZ2VyIG1ha2VzIHNlbnNlIHRvIGRvIHNvIHdp
dGgKKyAgICAgICAgbmV3IHF1ZXJ5IHBhcmFtZXRlciBuYW1lcy4KKworICAgICAgICAqIHB1Ymxp
Yy92My9jb21wb25lbnRzL2Jhc2UuanM6CisgICAgICAgIChDb21wb25lbnRCYXNlLl9hZGRDb250
ZW50VG9FbGVtZW50KTogVXNlIEFycmF5LmlzQXJyYXkgaW5zdGVhZCBvZiBpbnN0YW5jZW9mLiBJ
dCdzIHJlc2lsaWVudAorICAgICAgICBhZ2FpbnQgcmVhbG0gKGdsb2JhbCBvYmplY3QpIGRpZmZl
cmVuY2VzLgorCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNl
LmpzOgorICAgICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90b3R5cGUuX3VwZGF0ZUNvbW1pdExvZ1Zp
ZXdlcik6IE5vIGxvbmdlciBjYWxscyBlbnF1ZXVlVG9SZW5kZXIgb24gdGhpcyBzaW5jZQorICAg
ICAgICBDb21taXRMb2dWaWV3ZXIgZG9lcyB0aGF0IG9uIGl0cyBvd24gbm93LgorICAgICAgICAo
Q2hhcnRQYW5lQmFzZS5wcm90b3R5cGUucmVuZGVyKTogSnVzZSB1c2UgdGhpcy5fb3BlblJlcG9z
aXRvcnkgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENvbW1pdExvZ1ZpZXdlcgorICAgICAgICB0byBy
ZW1lbWJlciB3aGljaCByZXBvc2l0b3J5IGlzIGN1cnJlbnQuIFRoaXMgd2FzIHRoZSBvbmx5IHVz
ZSBvZiBjdXJyZW50UmVwb3NpdG9yeS4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRz
L2NvbW1pdC1sb2ctdmlld2VyLmpzOgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyKToKKyAgICAg
ICAgKENvbW1pdExvZ1ZpZXdlci5wcm90b3R5cGUuY3VycmVudFJlcG9zaXRvcnkpOiBEZWxldGVk
LgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLnByb3RvdHlwZS52aWV3KToKKyAgICAgICAgKENv
bW1pdExvZ1ZpZXdlci5wcm90b3R5cGUuX2ZldGNoQ29tbWl0TG9ncyk6IE1vZGVybml6ZWQgYW5k
IGV4dHJhY3RlZCBmcm9tIHZpZXcgdG8gbWFrZSBpdCBsYXp5LgorICAgICAgICBDYWxsIGZldGNo
Rm9yU2luZ2xlUmV2aXNpb24gd2hlbiBwcmVjZWRpbmdSZXZpc2lvbiBpcyBub3Qgc3BlY2lmaWVk
IG9yIGl0J3MgaWRlbnRpY2FsIHRvIGxhc3RSZXZpc2lvbgorICAgICAgICBzaW5jZSB0aGUgZ2Vu
ZXJpYyBKU09OIEFQSSBubyBsb25nZXIgc3VwcG9ydHMgYmVpbmcgY2FsbGVkIHdpdGggdGhlIGlk
ZW50aWNhbCByZXZpc2lvbnMuCisgICAgICAgIChDb21taXRMb2dWaWV3ZXIucHJvdG90eXBlLnJl
bmRlcik6IE1vZGVybml6ZWQgJiBzaW1wbGlmaWVkIHRoZSBjb2RlLgorICAgICAgICAoQ29tbWl0
TG9nVmlld2VyLnByb3RvdHlwZS5fcmVuZGVyQ29tbWl0TGlzdCk6IEV4dHJhY3RlZCBmcm9tIHJl
bmRlciB0byBtYWtlIGl0IGxhenkuCisgICAgICAgIChDb21taXRMb2dWaWV3ZXIuaHRtbFRlbXBs
YXRlKTogQWRkIElEIG9uIGNhcHRpb24gJiB0Ym9keSBzbyB0aGF0IHRoZXkncmUgbW9yZSBlYXNp
bHkgYWRkcmVzc2FibGUuCisgICAgICAgIChDb21taXRMb2dWaWV3ZXIuY3NzVGVtcGxhdGUpOgor
CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9jb21taXQtbG9nLmpzOgorICAgICAgICAoQ29t
bWl0TG9nLnByb3RvdHlwZS5kaWZmKTogTm8gbG9uZ2VyIGluY2x1ZGVzIGZyb20vdG8gcmV2aXNp
b25zIGluIHRoZSByZXN1bHQuIEFsc28gYXZvaWQgYWRkaW5nCisgICAgICAgIDEgdG8gYSBTdWJ2
ZXJzaW9uLWxpa2Ugc3RhcnRpbmcgcmV2aXNpb24gZm9yIGNyZWF0aW5nIHRoZSBsYWJlbC4gU2Vl
IGFib3ZlLiBCdXQgd2Ugc3RpbGwgZG8gdGhpcworICAgICAgICBmb3IgZm9ybWluZyBVUkxzIGR1
ZSB0byB0aGUgd2F5IHRvb2xzIGxpa2UgVHJhYyB3b3JrIHdpdGggU3VidmVyc2lvbiByZXZpc2lv
bnMuCisgICAgICAgIChDb21taXRMb2cuZmV0Y2hCZXR3ZWVuUmV2aXNpb25zKTogUmV3cml0dGVu
IHVzaW5nIERhdGFNb2RlbC5wcm90b3R5cGUuY2FjaGVkRmV0Y2ggd2l0aCBGSVhNRSBmb3IKKyAg
ICAgICAgd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIGRvaW5nLgorICAgICAg
ICAoQ29tbWl0TG9nLl9jYWNoZWRDb21taXRMb2dzKTogRGVsZXRlZC4KKyAgICAgICAgKENvbW1p
dExvZy5mZXRjaEZvclNpbmdsZVJldmlzaW9uKTogQWRkZWQuCisgICAgICAgIChDb21taXRMb2cu
X2NvbnN0cnVjdEZyb21SYXdEYXRhKTogQWRkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9k
ZWxzL2RhdGEtbW9kZWwuanM6CisgICAgICAgIChEYXRhTW9kZWxPYmplY3QuY2FjaGVkRmV0Y2gp
OiBEb24ndCBwYXJzZSBxdWVyeSB2YWx1ZXMgYXMgYW4gaW50ZWdlci4gSnVzdCBVUkwtZXNjYXBl
IHRoZW0uCisKKyAgICAgICAgKiBwdWJsaWMvdjMvcmVtb3RlLmpzOgorICAgICAgICAoQnJvd3Nl
clJlbW90ZUFQSS5wcm90b3R5cGUuc2VuZEh0dHBSZXF1ZXN0KTogRml4ZWQgYSB0eXBvLgorCisg
ICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRlc3RzLmpzOiBSZW5hbWVkIGZyb20g
YXBpLWNvbW1pdHMuanMuIFVwZGF0ZWQgdGhlIGV4aXN0aW5nIHRlc3RzIHRvCisgICAgICAgIHVz
ZSBuZXcgcXVlcnkgcGFyYW1ldGVycyBhbmQgYWRkZWQgbW9yZSB0ZXN0IGNhc2VzLgorCisgICAg
ICAgICogdW5pdC10ZXN0cy9jb21taXQtbG9nLXRlc3RzLmpzOiBVcGRhdGVkIHRoZSB0ZXN0IGNh
c2VzIG5vdyB0aGF0IENvbW1pdExvZy5wcm90b3R5cGUuZGlmZiBubyBsb25nZXIKKyAgICAgICAg
aW5jbHVkZXMgZnJvbS90byB2YWx1ZXMuIFRoZXkncmUgY29tcHV0ZWQgaW4gQ2hhcnRSZXZpc2lv
blJhbmdlIGluc3RlYWQuCisKKzIwMTctMDMtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRml4IG9zLWJ1aWxkLWZldGNoZXIuanMgYW5kIHN1YnByb2Nlc3Mu
anMgdG8gbWFrZSB0aGVtIHdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBzY3JpcHQgYWRkZWQgaW4gcjIxMzk3NiBoYXMgYSBidWcgdGhhdCBp
dCBjYW4gZXhlY3V0ZSBjb21tYW5kcyB0byBmZXRjaCBzdWJjb21taXRzIGluIHBhcmFsbGVsLgor
ICAgICAgICBTb21lIGNvbW1hbmRzIHRvIHBvbGwgdGhlIGxzaXQgb2Ygc3lzdGVtIGNvbXBvbmVu
dHMgaXMgbm90IGRlc2lyYWJsZSB0byBiZSByYW4gaW4gcGFyYWxsZWwuCisKKyAgICAgICAgKiBz
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stc3VicHJvY2Vzcy5qczoKKyAgICAgICAgKE1vY2tT
dWJwcm9jZXNzKTogVXNlIGNvbnN0IGRlY2xhcmF0aW9uLgorICAgICAgICAoTW9ja1N1YnByb2Nl
c3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbik6IEFkZGVkLgorICAgICAgICAoTW9ja1N1YnBy
b2Nlc3Mud2FpdEZvckludm9jYXRpb24pOiBSZW5hbWVkIGZyb20gd2FpdGluZ0Zvckludm9jYXRp
b24uIEEgZnVuY3Rpb24gbmFtZSBtdXN0IGJlIGEgdmVyYi4KKyAgICAgICAgU2VlIGh0dHBzOi8v
d2Via2l0Lm9yZy9jb2RlLXN0eWxlLWd1aWRlbGluZXMvI25hbWVzLXZlcmIKKyAgICAgICAgKE1v
Y2tTdWJwcm9jZXNzLnJlc2V0KTogU2V0IGludm9jYXRpb25zLmxlbmd0aCB0byAwIHNvIHRoYXQg
dGVzdHMgY2FuIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheQorICAgICAgICByZWdhcmRs
ZXNzIG9mIHdoZXRoZXIgcmVzZXQgaXMgY2FsbGVkIG9yIHdoZW4gaXQncyBjYWxsZWQuCisKKyAg
ICAgICAgKiBzZXJ2ZXItdGVzdHMvdG9vbHMtb3MtYnVpbGQtZmV0Y2hlci10ZXN0cy5qczogVXBk
YXRlZCB0ZXN0cyBwZXIgdGhlIGNvZGUgY2hhbmdlLiBNb3N0IG9mIGNvZGVzIG5vdworICAgICAg
ICBleHBlY3QgZWFjaCBjb21tYW5kIHRvIGJlIHJhbiBzZXByYXRlbHkuIGUuZy4gaWYgdGhlcmUg
d2VyZSB0d28gY29tbWFuZHMgdG8gcnVuLCBpbnN0ZWFkIG9mIGV4cGVjdGluZworICAgICAgICB0
aGVtIHRvIGJlIGJvdGggcmFuLCBhbmQgcmVzb2x2aW5nIGludm9jYXRpb24gcHJvbWlzZXMsIHdl
J2Qgd2FpdCBmb3Igb25lIGNvbW1hbmQgdG8gcnVuLCByZXNvbHZlLAorICAgICAgICBpdHMgc3Vi
Y29tbWFuZCB0byBydW4sIGFuZCB0aGVuIG1vdmUgb250byB0aGUgc2Vjb25kIHRvcC1sZXZlbCBj
b21tYW5kLiBBbHNvIHVzZSBhIGxvY2FsIHJlZmVyZW5jZQorICAgICAgICB0byBNb2NrU3VicHJv
Y2Vzcy5pbnZvY2F0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFt
ZS4KKworICAgICAgICAqIHRvb2xzL2pzL29zLWJ1aWxkLWZldGNoZXIuanM6CisgICAgICAgICht
YXBJblNlcmlhbFByb21pc2VDaGFpbik6IEFkZGVkLiBDYWxsaW5nIGEgY2xvc3VyZSB0aGF0IHJl
dHVybnMgYSBwcm9taXNlIG9uIGVhY2ggaXRlbSBpbiBhbiBhcnJheQorICAgICAgICBpbiBzZXJp
YWwgKG5vdCBhc3luY2hyb25vdXMpIGlzIGEgdmVyeSBjb21tb24gcGF0dGVybiBpbiB0aGlzIGNs
YXNzLgorICAgICAgICAoT1NCdWlsZEZldGNoZXIuZmV0Y2hBbmRSZXBvcnRBbGxJbk9yZGVyKTog
QWRkZWQuCisgICAgICAgIChPU0J1aWxkRmV0Y2hlci5wcm90b3R5cGUuZmV0Y2hBbmRSZXBvcnRO
ZXdCdWlsZHMpOiBMb2cgd2hhdCB0aGUgbnVtYmVyIG9mIGJ1aWxkcyBiZWluZyBzdWJtaXR0ZWQu
CisgICAgICAgIChPU0J1aWxkRmV0Y2hlci5wcm90b3R5cGUuX2ZldGNoQXZhaWxhYmxlQnVpbGRz
KTogRml4ZWQgdGhlIG1haW4gYnVnLiBVc2luZyBQcm9taXNlLmFsbCB3b3VsZCByZXN1bHQKKyAg
ICAgICAgaW4gZWFjaCB0b3AtbGV2ZWwgY29tbWFuZCB0byBiZSBleGVjdWVkIGluIHBhcmFsbGVs
LiBTaW5jZSBlYWNoIHN1YmNvbW1hbmQgaXMgZXhlY3V0ZWQgYXMgc29vbiBhcworICAgICAgICBp
dHMgcGFyZW50IGNvbW1hbmQgaXMgZXhlY3V0ZWQsIHRoaXMgcmVzdWx0cyBpbiBjb21tYW5kcyB0
byBiZSBleGVjdXRlZCBpbiBwYXJhbGxlbC4KKyAgICAgICAgQWRkZWQgYSB3aG9sZSBidW5jaCBv
ZiBsb2dnaW5nIHNvIHRoYXQgd2UgY2FuIGF0IGxlYXN0IGRldGVjdCBhIGJ1ZyBsaWtlIHRoaXMg
aW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgKE9TQnVpbGRGZXRjaGVyLnByb3RvdHlwZS5fY29tbWl0
c0ZvckF2YWlsYWJsZUJ1aWxkcyk6IENsZWFudXAgdGhlIGNvZGluZyBzdHlsZS4KKyAgICAgICAg
KE9TQnVpbGRGZXRjaGVyLnByb3RvdHlwZS5fYWRkU3ViQ29tbWl0c0ZvckJ1aWxkKTogVXNlIG1h
cEluU2VyaWFsUHJvbWlzZUNoYWluLiBUaWdodGVuZWQgdGhlIGFzc2VydGlvbgorICAgICAgICBh
Ym91dCB0aGUgY29udGVudCByZXR1cm5lZCBieSBhIHN1YmNvbW1hbmQuCisKKyAgICAgICAgKiB0
b29scy9qcy9zdWJwcm9jZXNzLmpzOiBGaXhlZCB0aGUgYnVnIHRoYXQgd2Ugd2VyZSBpbXBvcnRp
bmcgcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLkNoaWxkUHJvY2Vzcy4KKyAgICAgICAgZXhlY0Zp
bGUgaXMgZGVmaW5lZCBvbiByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykgaXRzZWxmLgorICAgICAg
ICAoU3VicHJvY2Vzcy5wcm90b3R5cGUuZXhlY3V0ZSk6IEZpeGVkIGEgdHlwby4gdGhpcy5fY2hp
bGRQcm9jZXNzIGRvZXNuJ3QgZXhpc3QuCisgICAgICAgIChTdWJwcm9jZXNzKToKKworICAgICAg
ICAqIHRvb2xzL3N5bmMtb3MtdmVyc2lvbnMuanM6IFJlbmFtZWQgZnJvbSB0b29scy9wdWxsLW9z
LXZlcnNpb25zLmpzLgorICAgICAgICAoc3luY0xvb3ApOiBDbGVhbmVkIHVwIHRoZSBjb2Rpbmcg
c3R5bGUgYSBsaXR0bGUuIEFsc28gYWRkZWQgbG9nZ2luZyBhYm91dCBob3cgbG9uZyB3ZSdyZSBh
Ym91dCB0byBzbGVlcC4KKwogMjAxNy0wMy0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBBZGQgdGhlIGZpbGUgdXBsb2FkaW5nIGNhcGFiaWxpdHkgdG8gdGhl
IHBlcmYgZGFzaGJvYXJkLgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jy
b3dzZXItdGVzdHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcwpp
bmRleCAzZTcwMzIzYzk0YTFkNGU1ZjQ4ZTFlOTU2MWM4NTJlMjE2NzY5NzRkLi5iMWI3MDY2OTli
MjRmZmRkZjVhYzQ0NmM2MDAwNGUzMzIyMmY1OTM1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcwor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lv
bi1yYW5nZS10ZXN0cy5qcwpAQCAtMzMsMTMgKzMzLDkgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2aXNp
b25SYW5nZScsICgpID0+IHsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3Rb
MF0ucmVwb3NpdG9yeS5sYWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwogICAgICAgICAgICAgICAg
IGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNicpOwotICAgICAgICAg
ICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUobnVsbCk7Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKIAogICAg
ICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9yeS5sYWJlbCgpKS50
by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFdLmxh
YmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxp
c3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogICAgICAgICAgICAgfSkKICAgICAgICAgfSk7CiAg
ICAgfSk7CkBAIC05NiwxNCArOTIsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2aXNpb25SYW5nZScs
ICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxlbmd0aCkudG8u
YmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnJlcG9zaXRv
cnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2
aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDUtcjQwMDYnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmZyb20pLnRvLmJlKCc0MDA1Jyk7Ci0gICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDQtcjQwMDYn
KTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9yeS5s
YWJlbCgpKS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25M
aXN0WzFdLmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2
aXNpb25MaXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChy
ZXZpc2lvbkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogCiAgICAgICAgICAgICAgICAgY2hh
cnQuc2V0SW5kaWNhdG9yKDEwMDQsIHRydWUpOyAvLyBBY3Jvc3MgbWFjT1MgY2hhbmdlLgogCkBA
IC0xMTEsMTQgKzEwMywxMCBAQCBkZXNjcmliZSgnQ2hhcnRSZXZpc2lvblJhbmdlJywgKCkgPT4g
ewogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3QubGVuZ3RoKS50by5iZSgyKTsK
IAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ucmVwb3NpdG9yeS5sYWJl
bCgpKS50by5iZSgnU29tZUFwcCcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxp
c3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNC1yNDAwNCcpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUoJzQwMDQnKTsKLSAgICAgICAgICAgICAgICBl
eHBlY3QocmV2aXNpb25MaXN0WzBdLnRvKS50by5iZSgnNDAwNCcpOworICAgICAgICAgICAgICAg
IGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwMy1yNDAwNCcpOwogCiAg
ICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVsKCkp
LnRvLmJlKCdtYWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0u
bGFiZWwpLnRvLmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHJl
dmlzaW9uTGlzdFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBleHBl
Y3QocmV2aXNpb25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKIApAQCAtMTUwLDE0ICsxMzgsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2aXNp
b25SYW5nZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxl
bmd0aCkudG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBd
LnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAgICBl
eHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDMtcjQwMDQnKTsgLy8gNDAw
MiBhbmQgNDAwNSBhcmUgb3V0bGllcnMgYW5kIHNraXBwZWQuCi0gICAgICAgICAgICAgICAgZXhw
ZWN0KHJldmlzaW9uTGlzdFswXS5mcm9tKS50by5iZSgnNDAwMycpOwotICAgICAgICAgICAgICAg
IGV4cGVjdChyZXZpc2lvbkxpc3RbMF0udG8pLnRvLmJlKCc0MDA0Jyk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5sYWJlbCkudG8uYmUoJ3I0MDAyLXI0MDA0Jyk7IC8v
IDQwMDEgYW5kIDQwMDUgYXJlIG91dGxpZXJzIGFuZCBza2lwcGVkLgogCiAgICAgICAgICAgICAg
ICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVsKCkpLnRvLmJlKCdtYWNP
UycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ubGFiZWwpLnRvLmJl
KCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsx
XS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25M
aXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRl
c3RzL2NvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2Jyb3dzZXItdGVzdHMvY29tbWl0LWxvZy12aWV3ZXItdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y1
MmRjMWIzNTZkM2QzMmUwYjg4MzJhYTBjYjNlODg3Nzk3NmZmOAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2NvbW1pdC1sb2ctdmlld2Vy
LXRlc3RzLmpzCkBAIC0wLDAgKzEsMTIzIEBACitkZXNjcmliZSgnQ29tbWl0TG9nVmlld2VyJywg
KCkgPT4geworCisgICAgZnVuY3Rpb24gaW1wb3J0Q29tbWl0TG9nVmlld2VyKGNvbnRleHQpCisg
ICAgeworICAgICAgICBjb25zdCBzY3JpcHRzID0gWworICAgICAgICAgICAgJy4uL3NoYXJlZC9z
dGF0aXN0aWNzLmpzJywKKyAgICAgICAgICAgICdpbnN0cnVtZW50YXRpb24uanMnLAorICAgICAg
ICAgICAgJ2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24uanMnLAorICAgICAgICAgICAgJ21vZGVs
cy9kYXRhLW1vZGVsLmpzJywKKyAgICAgICAgICAgICdtb2RlbHMvcmVwb3NpdG9yeS5qcycsCisg
ICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1zZXQuanMnLAorICAgICAgICAgICAgJ21vZGVscy9j
b21taXQtbG9nLmpzJywKKyAgICAgICAgICAgICdjb21wb25lbnRzL2Jhc2UuanMnLAorICAgICAg
ICAgICAgJ2NvbXBvbmVudHMvc3Bpbm5lci1pY29uLmpzJywKKyAgICAgICAgICAgICdjb21wb25l
bnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzJ107CisgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9y
dFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnQ29tbWl0TG9nVmlld2VyJywgJ1Jl
cG9zaXRvcnknLCAnQ29tbWl0TG9nJywgJ1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuc3ltYm9scy5Db21taXRMb2dWaWV3ZXI7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGNvbnN0IHdlYmtpdENvbW1pdDIxMDk0OSA9IHsKKyAgICAgICAgImlk
IjogIjE4NTMzNCIsCisgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAorICAgICAgICAicHJl
dmlvdXNDb21taXQiOiBudWxsLAorICAgICAgICAidGltZSI6ICtuZXcgRGF0ZSgiMjAxNy0wMS0y
MFQwMzoyMzo1MC42NDVaIiksCisgICAgICAgICJhdXRob3JOYW1lIjogIkNocmlzIER1bWV6IiwK
KyAgICAgICAgImF1dGhvckVtYWlsIjogImNkdW1lekBhcHBsZS5jb20iLAorICAgICAgICAibWVz
c2FnZSI6ICJzb21lIG1lc3NhZ2UiLAorICAgIH07CisKKyAgICBjb25zdCB3ZWJraXRDb21taXQy
MTA5NTAgPSB7CisgICAgICAgICJpZCI6ICIxODUzMzgiLAorICAgICAgICAicmV2aXNpb24iOiAi
MjEwOTUwIiwKKyAgICAgICAgInByZXZpb3VzQ29tbWl0IjogbnVsbCwKKyAgICAgICAgInRpbWUi
OiArbmV3IERhdGUoIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIpLAorICAgICAgICAiYXV0aG9y
TmFtZSI6ICJDb21taXQgUXVldWUiLAorICAgICAgICAiYXV0aG9yRW1haWwiOiAiY29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmciLAorICAgICAgICAibWVzc2FnZSI6ICJhbm90aGVyIG1lc3NhZ2UiLAor
ICAgIH07CisKKyAgICBpdCgnc2hvdWxkIGluaXRpYWxseSBiZSBlbXB0eSB3aXRoIG5vIHNwaW5u
ZXInLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0
KCk7CisgICAgICAgIHJldHVybiBpbXBvcnRDb21taXRMb2dWaWV3ZXIoY29udGV4dCkudGhlbigo
Q29tbWl0TG9nVmlld2VyKSA9PiB7CisgICAgICAgICAgICBjb25zdCB2aWV3ZXIgPSBuZXcgQ29t
bWl0TG9nVmlld2VyOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKHZpZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRl
cigpOworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4
dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdz
cGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHkn
KSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdy
ZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNob3cgdGhl
IHJlcG9zaXRvcnkgbmFtZSBhbmQgdGhlIHNwaW5uZXIgb25jZSBpdCBzdGFydGVkIGZldGNoaW5n
IHRoZSBsaXN0IG9mIGNvbW1pdHMgJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0ID0g
bmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gaW1wb3J0Q29tbWl0TG9nVmll
d2VyKGNvbnRleHQpLnRoZW4oKENvbW1pdExvZ1ZpZXdlcikgPT4geworICAgICAgICAgICAgY29u
c3QgUmVwb3NpdG9yeSA9IGNvbnRleHQuc3ltYm9scy5SZXBvc2l0b3J5OworICAgICAgICAgICAg
Y29uc3QgU3Bpbm5lckljb24gPSBjb250ZXh0LnN5bWJvbHMuU3Bpbm5lckljb247CisgICAgICAg
ICAgICBjb25zdCBDb21wb25lbnRCYXNlID0gY29udGV4dC5zeW1ib2xzLkNvbXBvbmVudEJhc2U7
CisgICAgICAgICAgICBjb25zdCBSZW1vdGVBUEkgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3RlQVBJ
OworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsKKyAgICAg
ICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2ViS2l0J30p
OworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZXdlci5l
bGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOworICAgICAg
ICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNvbnRh
aW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZp
ZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1
ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdyZXBvc2l0b3J5LW5h
bWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KFJlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgICAgIHZpZXdl
ci52aWV3KHdlYmtpdCwgJzIxMDk0OCcsICcyMTA5NTAnKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3QoUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ3NwaW5uZXIt
Y29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5ub3QuYmUoMCk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHknKSku
dG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdyZXBv
c2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUoZmFsc2UpOworICAgICAgICAg
ICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykudGV4dENvbnRl
bnQpLnRvLmNvbnRhaW4oJ1dlYktpdCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaG93IHRoZSByZXBvc2l0b3J5IG5hbWUsIHRoZSBs
aXN0IG9mIGNvbW1pdHMsIGFuZCBoaWRlIHRoZSBzcGlubmVyIG9uY2UgdGhlIGxpc3Qgb2YgY29t
bWl0cyBhcmUgZmV0Y2hlZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBC
cm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGltcG9ydENvbW1pdExvZ1ZpZXdlcihj
b250ZXh0KS50aGVuKChDb21taXRMb2dWaWV3ZXIpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IFJl
cG9zaXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeTsKKyAgICAgICAgICAgIGNvbnN0
IFNwaW5uZXJJY29uID0gY29udGV4dC5zeW1ib2xzLlNwaW5uZXJJY29uOworICAgICAgICAgICAg
Y29uc3QgQ29tcG9uZW50QmFzZSA9IGNvbnRleHQuc3ltYm9scy5Db21wb25lbnRCYXNlOworICAg
ICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3RlQVBJLnJlcXVl
c3RzOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsKKyAg
ICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2ViS2l0
J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZXdl
ci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOworICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgdmlld2VyLnZpZXcod2Via2l0LCAnMjEwOTQ4JywgJzIx
MDk1MCcpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVy
KGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdodCku
dG8ubm90LmJlKDApOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgnY29t
bWl0cy1saXN0JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKHRydWUpOworICAgICAgICAgICAg
ICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykubWF0Y2hlcygnOmVt
cHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRl
bnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250YWluKCdXZWJLaXQnKTsK
KyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRzLzEv
P3ByZWNlZGluZ1JldmlzaW9uPTIxMDk0OCZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAgICAg
ICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgICAgICJzdGF0
dXMiOiAiT0siLAorICAgICAgICAgICAgICAgICAgICAiY29tbWl0cyI6IFt3ZWJraXRDb21taXQy
MTA5NDksIHdlYmtpdENvbW1pdDIxMDk1MF0sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNv
bnRlbnQoJ3NwaW5uZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2NvbW1pdHMtbGlzdCcpLm1hdGNoZXMo
JzplbXB0eScpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5j
b250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8uY29udGFpbigncjIxMDk0OScp
OworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgnY29tbWl0cy1saXN0Jyku
dGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NocmlzIER1bWV6Jyk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8uY29u
dGFpbigncjIxMDk1MCcpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgn
Y29tbWl0cy1saXN0JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NvbW1pdCBRdWV1ZScpOwor
ICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJyku
bWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
dmlld2VyLmNvbnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250YWlu
KCdXZWJLaXQnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2NvbW1p
dHMtbGlzdCcpLnF1ZXJ5U2VsZWN0b3IoJ2EnKSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKaW5kZXggMjUyYTM5Yjk4MWNlZDFkYTYz
NTFhMGFiOGIwMzQyYjBlN2E0ZTQ5MC4uNjMzMDQ1MjU2YTQ3ZGMzNjgzOGQzMzQ2MDAzNDkyODNm
MGVmYTFhZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVz
dHMvaW5kZXguaHRtbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0
cy9pbmRleC5odG1sCkBAIC0xLDkgKzEsMTAgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDx0aXRsZT5Jbi1Ccm93c2VyIFRlc3RzIGZv
ciBQZXJmb3JtYW5jZSBEYXNoYm9hcmQ8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJodHRwczovL2Nkbi5yYXdnaXQuY29tL21vY2hhanMvbW9jaGEvMi4yLjUvbW9jaGEuY3Nz
Ij4KLTxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9t
b2NoYS8yLjIuNS9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL25v
ZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6
Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZXhwZWN0LmpzLzAuMi4wL2V4cGVjdC5t
aW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIApAQCAtMjEsNiArMjIsNyBAQCBtb2NoYS5zZXR1
cCgnYmRkJyk7CiA8c2NyaXB0IHNyYz0iaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQtdGVz
dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXN0YXR1cy1ldmFsdWF0b3ItdGVz
dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXJldmlzaW9uLXJhbmdlLXRlc3Rz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb21taXQtbG9nLXZpZXdlci10ZXN0cy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBhZnRlckVhY2goKCkgPT4gewpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvY29tbWl0cy5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9jb21taXRzLnBocAppbmRleCBhNmE0ZGI4NmZhOGNh
MDFlY2E5NTE0NjRlOGQ1MDVmMGQ2NTk5YTMxLi5jMTFkZDZiZDc3NjZkNWMxMmI0YTg5Y2I0MDUx
NTkxZThmMTk4MWU1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FwaS9jb21taXRzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2Fw
aS9jb21taXRzLnBocApAQCAtMjQsOSArMjQsOSBAQCBmdW5jdGlvbiBtYWluKCRwYXRocykgewog
ICAgICRjb21taXRzID0gYXJyYXkoKTsKICAgICBpZiAoISRmaWx0ZXIpIHsKICAgICAgICAgJGtl
eXdvcmQgPSBhcnJheV9nZXQoJF9HRVQsICdrZXl3b3JkJyk7IC8vIFYyIFVJIGNvbXBhdGliaWxp
dHkuCi0gICAgICAgICRmcm9tID0gYXJyYXlfZ2V0KCRfR0VULCAnZnJvbScpOwotICAgICAgICAk
dG8gPSBhcnJheV9nZXQoJF9HRVQsICd0bycpOwotICAgICAgICAkY29tbWl0cyA9ICRmZXRjaGVy
LT5mZXRjaF9iZXR3ZWVuKCRyZXBvc2l0b3J5X2lkLCAkZnJvbSwgJHRvLCAka2V5d29yZCk7Cisg
ICAgICAgICRwcmVjZWRpbmdfcmV2aXNpb24gPSBhcnJheV9nZXQoJF9HRVQsICdwcmVjZWRpbmdS
ZXZpc2lvbicpOworICAgICAgICAkbGFzdF9yZXZpc2lvbiA9IGFycmF5X2dldCgkX0dFVCwgJ2xh
c3RSZXZpc2lvbicpOworICAgICAgICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9iZXR3ZWVu
KCRyZXBvc2l0b3J5X2lkLCAkcHJlY2VkaW5nX3JldmlzaW9uLCAkbGFzdF9yZXZpc2lvbiwgJGtl
eXdvcmQpOwogICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnb2xkZXN0JykgewogICAgICAgICAk
Y29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9vbGRlc3QoJHJlcG9zaXRvcnlfaWQpOwogICAgIH0g
ZWxzZSBpZiAoJGZpbHRlciA9PSAnbGF0ZXN0JykgewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBo
cAppbmRleCAwNWQwYTAxY2NhYWY3NDUwOTdhMTg5ZTllMWM2YzY4Zjg5ZjFlZGYyLi43YzE1NjYw
YmJhMTI1NjhlODc5ZGM2ZDdiYmJjZDIzNGE4OWMzN2EyIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAorKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRj
aGVyLnBocApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAgICAg
ICAgcmV0dXJuICRyZXBvc2l0b3J5X3Jvd1sncmVwb3NpdG9yeV9pZCddOwogICAgIH0KIAotICAg
IGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRvcnlfaWQsICRmaXJzdCwgJHNlY29uZCwg
JGtleXdvcmQgPSBOVUxMKQorICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRvcnlf
aWQsICRiZWZvcmVfZmlyc3RfcmV2aXNpb24sICRsYXN0X3JldmlzaW9uLCAka2V5d29yZCA9IE5V
TEwpCiAgICAgewogICAgICAgICAkc3RhdGVtZW50cyA9ICdTRUxFQ1QgY29tbWl0X2lkIGFzICJp
ZCIsCiAgICAgICAgICAgICBjb21taXRfcmV2aXNpb24gYXMgInJldmlzaW9uIiwKQEAgLTQ2LDIy
ICs0NiwyOSBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAgICAgICAgICAgIFdIRVJFIGNv
bW1pdF9yZXBvc2l0b3J5ID0gJDEgQU5EIGNvbW1pdF9yZXBvcnRlZCA9IHRydWUnOwogICAgICAg
ICAkdmFsdWVzID0gYXJyYXkoJHJlcG9zaXRvcnlfaWQpOwogCi0gICAgICAgIGlmICgkZmlyc3Qg
JiYgJHNlY29uZCkgewotICAgICAgICAgICAgJGZpcnN0X2NvbW1pdCA9ICR0aGlzLT5jb21taXRf
Zm9yX3JldmlzaW9uKCRyZXBvc2l0b3J5X2lkLCAkZmlyc3QpOwotICAgICAgICAgICAgJHNlY29u
ZF9jb21taXQgPSAkdGhpcy0+Y29tbWl0X2Zvcl9yZXZpc2lvbigkcmVwb3NpdG9yeV9pZCwgJHNl
Y29uZCk7Ci0gICAgICAgICAgICAkZmlyc3QgPSAkZmlyc3RfY29tbWl0Wydjb21taXRfdGltZSdd
OwotICAgICAgICAgICAgJHNlY29uZCA9ICRzZWNvbmRfY29tbWl0Wydjb21taXRfdGltZSddOwot
ICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKLSAgICAgICAgICAgIGlm
ICghJGZpcnN0IHx8ICEkc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgJGZpcnN0ID0gJGZpcnN0
X2NvbW1pdFsnY29tbWl0X29yZGVyJ107Ci0gICAgICAgICAgICAgICAgJHNlY29uZCA9ICRzZWNv
bmRfY29tbWl0Wydjb21taXRfb3JkZXInXTsKKyAgICAgICAgaWYgKCRiZWZvcmVfZmlyc3RfcmV2
aXNpb24gJiYgJGxhc3RfcmV2aXNpb24pIHsKKyAgICAgICAgICAgICRwcmVjZWRpbmdfY29tbWl0
ID0gJHRoaXMtPmNvbW1pdF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRiZWZvcmVfZmly
c3RfcmV2aXNpb24pOworICAgICAgICAgICAgJGxhc3RfY29tbWl0ID0gJHRoaXMtPmNvbW1pdF9m
b3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRsYXN0X3JldmlzaW9uKTsKKworICAgICAgICAg
ICAgJHByZWNlZGluZyA9ICRwcmVjZWRpbmdfY29tbWl0Wydjb21taXRfdGltZSddOworICAgICAg
ICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRbJ2NvbW1pdF90aW1lJ107CisgICAgICAgICAgICBp
ZiAoISRwcmVjZWRpbmcgIT0gISRsYXN0KQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignSW5jb25zaXN0ZW50Q29tbWl0cycpOworICAgICAgICAgICAgaWYgKCRwcmVjZWRpbmcpCisg
ICAgICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICRwcmVjZWRpbmcgPSAkcHJlY2VkaW5nX2NvbW1pdFsn
Y29tbWl0X29yZGVyJ107CisgICAgICAgICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRbJ2Nv
bW1pdF9vcmRlciddOwogICAgICAgICAgICAgICAgICRjb2x1bW5fbmFtZSA9ICdjb21taXRfb3Jk
ZXInOworICAgICAgICAgICAgICAgIGlmICghJHByZWNlZGluZyB8fCAhJGxhc3QpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCRwcmVjZWRpbmcgPj0gJGxhc3QpCisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdJbnZhbGlkQ29tbWl0UmFuZ2UnKTsKIAotICAgICAgICAgICAgJGluX29yZGVyID0gJGZpcnN0
IDwgJHNlY29uZDsKLSAgICAgICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJGluX29yZGVyID8g
JGZpcnN0IDogJHNlY29uZCk7Ci0gICAgICAgICAgICAkc3RhdGVtZW50cyAuPSAnIEFORCAnIC4g
JGNvbHVtbl9uYW1lIC4gJyA+PSAkJyAuIGNvdW50KCR2YWx1ZXMpOwotICAgICAgICAgICAgYXJy
YXlfcHVzaCgkdmFsdWVzLCAkaW5fb3JkZXIgPyAkc2Vjb25kIDogJGZpcnN0KTsKKyAgICAgICAg
ICAgIGFycmF5X3B1c2goJHZhbHVlcywgJHByZWNlZGluZyk7CisgICAgICAgICAgICAkc3RhdGVt
ZW50cyAuPSAnIEFORCAnIC4gJGNvbHVtbl9uYW1lIC4gJyA+ICQnIC4gY291bnQoJHZhbHVlcyk7
CisgICAgICAgICAgICBhcnJheV9wdXNoKCR2YWx1ZXMsICRsYXN0KTsKICAgICAgICAgICAgICRz
dGF0ZW1lbnRzIC49ICcgQU5EICcgLiAkY29sdW1uX25hbWUgLiAnIDw9ICQnIC4gY291bnQoJHZh
bHVlcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2Jhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcwppbmRleCA5Zjc1Y2QwYTE5NGU0ZDYyNTFmNzgw
NWNlNThjOWMxNzFjOGFhNjhmLi4zNjUzNjNkOGI4NDk4MjkwOTIxNDA5Y2M4ODFiZDAwODM4ZWRk
N2E2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvYmFzZS5qcwpAQCAtMjM4LDcgKzIzOCw3IEBAIGNsYXNzIENvbXBvbmVudEJhc2Ug
ewogCiAgICAgc3RhdGljIF9hZGRDb250ZW50VG9FbGVtZW50KGVsZW1lbnQsIGNvbnRlbnQpCiAg
ICAgewotICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgIGlm
IChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7CiAgICAgICAgICAgICBmb3IgKHZhciBuZXN0ZWRD
aGlsZCBvZiBjb250ZW50KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRUb0VsZW1l
bnQoZWxlbWVudCwgbmVzdGVkQ2hpbGQpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnQgaW5z
dGFuY2VvZiBOb2RlKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKaW5kZXggNTc0M2Jh
YjU2M2JkMGI2MjgyYzM1ZDg4NTYzNTMzZDNkOGY2NDFkNi4uYWUxZjFlYWU5YTZmNWJiOWFhNDJh
NDQ3YjNjNTI2ZWRhNTEzZjRlOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpzCkBA
IC0xNjMsOSArMTYzLDggQEAgY2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJh
c2UgewogICAgIF91cGRhdGVDb21taXRMb2dWaWV3ZXIoKQogICAgIHsKICAgICAgICAgY29uc3Qg
cmFuZ2UgPSB0aGlzLl9yZXZpc2lvblJhbmdlLnJhbmdlRm9yUmVwb3NpdG9yeSh0aGlzLl9vcGVu
UmVwb3NpdG9yeSk7Ci0gICAgICAgIGNvbnN0IHVwZGF0ZVJlbmRlcmluZyA9ICgpID0+IHsgdGhp
cy5lbnF1ZXVlVG9SZW5kZXIoKTsgfTsKLSAgICAgICAgdGhpcy5fY29tbWl0TG9nVmlld2VyLnZp
ZXcodGhpcy5fb3BlblJlcG9zaXRvcnksIHJhbmdlLmZyb20sIHJhbmdlLnRvKS50aGVuKHVwZGF0
ZVJlbmRlcmluZyk7Ci0gICAgICAgIHVwZGF0ZVJlbmRlcmluZygpOworICAgICAgICB0aGlzLl9j
b21taXRMb2dWaWV3ZXIudmlldyh0aGlzLl9vcGVuUmVwb3NpdG9yeSwgcmFuZ2UuZnJvbSwgcmFu
Z2UudG8pOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAogICAgIF9v
cGVuQW5hbHlzaXNUYXNrKGFubm90YXRpb24pCkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3MgQ2hh
cnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgdGhpcy5fbWFp
bkNoYXJ0U3RhdHVzLmVucXVldWVUb1JlbmRlcigpOwogCiAgICAgICAgIHZhciBib2R5ID0gdGhp
cy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtYm9keScpOwotICAgICAgICBp
ZiAodGhpcy5fY29tbWl0TG9nVmlld2VyICYmIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5jdXJyZW50
UmVwb3NpdG9yeSgpKSB7CisgICAgICAgIGlmICh0aGlzLl9vcGVuUmVwb3NpdG9yeSkgewogICAg
ICAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdoYXMtc2Vjb25kLXNpZGViYXInKTsKICAgICAg
ICAgICAgIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMKaW5kZXggNGVjYzMyNjlm
N2I2OWE4YTk4Mjk2Njg3NDQ2ODZjOTA4NTMxNWJlNS4uOWE1ZDE3NGE1MTk2MGFiNGI4ZjExNDU4
OThlMDZlYzZhYjM5Mjk2MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jb21taXQtbG9nLXZpZXdlci5qcwpA
QCAtNCw5MiArNCw4NyBAQCBjbGFzcyBDb21taXRMb2dWaWV3ZXIgZXh0ZW5kcyBDb21wb25lbnRC
YXNlIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcignY29tbWl0LWxv
Zy12aWV3ZXInKTsKKyAgICAgICAgdGhpcy5fbGF6aWx5RmV0Y2hDb21taXRMb2dzID0gbmV3IExh
emlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX2ZldGNoQ29tbWl0TG9ncy5iaW5kKHRoaXMpKTsK
ICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ZldGNoaW5n
UHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwotICAgICAgICB0
aGlzLl9mcm9tID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdG8gPSBudWxsOworICAgICAgICB0aGlz
Ll9yZW5kZXJDb21taXRMaXN0TGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRo
aXMuX3JlbmRlckNvbW1pdExpc3QuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgY3VycmVudFJl
cG9zaXRvcnkoKSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5OyB9Ci0KLSAgICB2aWV3KHJlcG9z
aXRvcnksIGZyb20sIHRvKQorICAgIHZpZXcocmVwb3NpdG9yeSwgcHJlY2VkaW5nUmV2aXNpb24s
IGxhc3RSZXZpc2lvbikKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ID09IHJl
cG9zaXRvcnkgJiYgdGhpcy5fZnJvbSA9PSBmcm9tICYmIHRoaXMuX3RvID09IHRvKQotICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKKyAgICAgICAgdGhpcy5fbGF6aWx5
RmV0Y2hDb21taXRMb2dzLmV2YWx1YXRlKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9uLCBs
YXN0UmV2aXNpb24pOworICAgIH0KIAorICAgIF9mZXRjaENvbW1pdExvZ3MocmVwb3NpdG9yeSwg
cHJlY2VkaW5nUmV2aXNpb24sIGxhc3RSZXZpc2lvbikKKyAgICB7CisgICAgICAgIHRoaXMuX2Zl
dGNoaW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwotICAg
ICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTsKLSAgICAgICAgdGhpcy5fZnJvbSA9
IGZyb207Ci0gICAgICAgIHRoaXMuX3RvID0gdG87CiAKLSAgICAgICAgaWYgKCFyZXBvc2l0b3J5
KSB7Ci0gICAgICAgICAgICB0aGlzLl9mZXRjaGluZ1Byb21pc2UgPSBudWxsOworICAgICAgICBp
ZiAoIXJlcG9zaXRvcnkgfHwgIWxhc3RSZXZpc2lvbikgewogICAgICAgICAgICAgdGhpcy5fcmVw
b3NpdG9yeSA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0bykgewotICAgICAgICAgICAgdGhpcy5fZmV0
Y2hpbmdQcm9taXNlID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7
Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpOworICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHByb21pc2UgPSBDb21taXRMb2cuZmV0
Y2hCZXR3ZWVuUmV2aXNpb25zKHJlcG9zaXRvcnksIGZyb20gfHwgdG8sIHRvKTsKKyAgICAgICAg
bGV0IHByb21pc2U7CisgICAgICAgIGlmICghcHJlY2VkaW5nUmV2aXNpb24gfHwgcHJlY2VkaW5n
UmV2aXNpb24gPT0gbGFzdFJldmlzaW9uKQorICAgICAgICAgICAgcHJvbWlzZSA9IENvbW1pdExv
Zy5mZXRjaEZvclNpbmdsZVJldmlzaW9uKHJlcG9zaXRvcnksIGxhc3RSZXZpc2lvbik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHByb21pc2UgPSBDb21taXRMb2cuZmV0Y2hCZXR3ZWVuUmV2
aXNpb25zKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb24pOwogCisg
ICAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSByZXBvc2l0b3J5OwogICAgICAgICB0aGlzLl9mZXRj
aGluZ1Byb21pc2UgPSBwcm9taXNlOwogCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAg
ICAgdmFyIHNwaW5uZXJUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgc2VsZi5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSwgMzAwKTsKLQotICAgICAgICB0
aGlzLl9mZXRjaGluZ1Byb21pc2UudGhlbihmdW5jdGlvbiAoY29tbWl0cykgewotICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KHNwaW5uZXJUaW1lcik7Ci0gICAgICAgICAgICBpZiAoc2VsZi5fZmV0
Y2hpbmdQcm9taXNlICE9IHByb21pc2UpCisgICAgICAgIHRoaXMuX2ZldGNoaW5nUHJvbWlzZS50
aGVuKChjb21taXRzKSA9PiB7CisgICAgICAgICAgICBpZiAodGhpcy5fZmV0Y2hpbmdQcm9taXNl
ICE9IHByb21pc2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc2VsZi5f
ZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdHMgPSBjb21t
aXRzOwotICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChzZWxm
Ll9mZXRjaGluZ1Byb21pc2UgIT0gcHJvbWlzZSkKKyAgICAgICAgICAgIHRoaXMuX2ZldGNoaW5n
UHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRzID0gY29tbWl0czsKKyAg
ICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0sIChlcnJvcikgPT4g
eworICAgICAgICAgICAgaWYgKHRoaXMuX2ZldGNoaW5nUHJvbWlzZSAhPSBwcm9taXNlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX2ZldGNoaW5nUHJvbWlzZSA9
IG51bGw7Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRzID0gbnVsbDsKKyAgICAgICAgICAgIHRo
aXMuX2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRzID0g
bnVsbDsKKyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaGluZ1Byb21pc2U7CisgICAgICAgIHRoaXMuZW5x
dWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgcmVuZGVyKCkKICAgICB7Ci0gICAgICAgIHZh
ciBjYXB0aW9uID0gJyc7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ICYmICh0aGlzLl9j
b21taXRzIHx8IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSkpCi0gICAgICAgICAgICBjYXB0aW9uID0g
dGhpcy5fcmVwb3NpdG9yeS5uYW1lKCk7Ci0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2Vs
ZWN0b3IoJ2NhcHRpb24nKS50ZXh0Q29udGVudCA9IGNhcHRpb247CisgICAgICAgIHRoaXMucGFy
dCgnc3Bpbm5lcicpLmVucXVldWVUb1JlbmRlcigpOworCisgICAgICAgIGNvbnN0IHNob3VsZFNo
b3dSZXBvc2l0b3J5TmFtZSA9IHRoaXMuX3JlcG9zaXRvcnkgJiYgKHRoaXMuX2NvbW1pdHMgfHwg
dGhpcy5fZmV0Y2hpbmdQcm9taXNlKTsKKyAgICAgICAgdGhpcy5jb250ZW50KCdyZXBvc2l0b3J5
LW5hbWUnKS50ZXh0Q29udGVudCA9IHNob3VsZFNob3dSZXBvc2l0b3J5TmFtZSA/IHRoaXMuX3Jl
cG9zaXRvcnkubmFtZSgpIDogJyc7CisgICAgICAgIHRoaXMuY29udGVudCgnc3Bpbm5lci1jb250
YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fZmV0Y2hpbmdQcm9taXNlID8gbnVsbCA6ICdu
b25lJzsKKyAgICAgICAgdGhpcy5fcmVuZGVyQ29tbWl0TGlzdExhemlseS5ldmFsdWF0ZSh0aGlz
Ll9jb21taXRzKTsKKyAgICB9CiAKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnRCYXNl
LmNyZWF0ZUVsZW1lbnQ7Ci0gICAgICAgIHZhciBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVM
aW5rOworICAgIF9yZW5kZXJDb21taXRMaXN0KGNvbW1pdHMpCisgICAgeworICAgICAgICBjb25z
dCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBjb25zdCBs
aW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCi0gICAgICAgIHRoaXMucmVuZGVyUmVw
bGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpLCAodGhpcy5fY29tbWl0
cyB8fCBbXSkubWFwKGZ1bmN0aW9uIChjb21taXQpIHsKLSAgICAgICAgICAgIHZhciBsYWJlbCA9
IGNvbW1pdC5sYWJlbCgpOwotICAgICAgICAgICAgdmFyIHVybCA9IGNvbW1pdC51cmwoKTsKKyAg
ICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnY29tbWl0cy1saXN0JyksIChj
b21taXRzIHx8IFtdKS5tYXAoKGNvbW1pdCkgPT4geworICAgICAgICAgICAgY29uc3QgbGFiZWwg
PSBjb21taXQubGFiZWwoKTsKKyAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbW1pdC51cmwoKTsK
ICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICBlbGVt
ZW50KCd0aCcsIFtlbGVtZW50KCdoNCcsIHtjbGFzczogJ3JldmlzaW9uJ30sIHVybCA/IGxpbmso
bGFiZWwsIGNvbW1pdC50aXRsZSgpLCB1cmwpIDogbGFiZWwpLCBjb21taXQuYXV0aG9yKCkgfHwg
JyddKSwKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGNvbW1pdC5tZXNzYWdlKCkgPyBj
b21taXQubWVzc2FnZSgpLnN1YnN0cmluZygwLCA4MCkgOiAnJyldKTsKICAgICAgICAgfSkpOwot
Ci0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jb21taXRzLXZpZXdlci1z
cGlubmVyJykuc3R5bGUuZGlzcGxheSA9IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA/IG51bGwgOiAn
bm9uZSc7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gYAogICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWl0cy12aWV3ZXItY29udGFp
bmVyIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21taXRzLXZpZXdlci1zcGlubmVy
Ij48c3Bpbm5lci1pY29uPjwvc3Bpbm5lci1pY29uPjwvZGl2PgotICAgICAgICAgICAgICAgIDx0
YWJsZSBjbGFzcz0iY29tbWl0cy12aWV3ZXItdGFibGUiPgotICAgICAgICAgICAgICAgICAgICA8
Y2FwdGlvbj48L2NhcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KLSAgICAgICAg
ICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzcGlubmVyLWNv
bnRhaW5lciI+PHNwaW5uZXItaWNvbiBpZD0ic3Bpbm5lciI+PC9zcGlubmVyLWljb24+PC9kaXY+
CisgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJjb21taXRzLXZpZXdlci10YWJsZSI+CisgICAg
ICAgICAgICAgICAgICAgIDxjYXB0aW9uIGlkPSJyZXBvc2l0b3J5LW5hbWUiPjwvY2FwdGlvbj4K
KyAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJjb21taXRzLWxpc3QiPjwvdGJvZHk+CiAg
ICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgIDwvZGl2PgogYDsKQEAgLTEwNCwz
MSArOTksMjcgQEAgY2xhc3MgQ29tbWl0TG9nVmlld2VyIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7
CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgeworICAgICAgICAg
ICAgI2NvbW1pdHMtdmlld2VyLXRhYmxlIHsKICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsK
KyAgICAgICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAgICAg
ICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgY2FwdGlvbiB7CisgICAgICAgICAgICBjYXB0
aW9uIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAgICAg
ICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgLmNvbW1pdHMtdmlld2VyLXRhYmxlIHsKLSAgICAgICAgICAgICAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwotICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlk
IDFweCAjY2NjOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXIt
dGFibGUgLnJldmlzaW9uIHsKKyAgICAgICAgICAgIC5yZXZpc2lvbiB7CiAgICAgICAgICAgICAg
ICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9y
bWFsOwogICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgICBwYWRkaW5n
OiAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUg
dGQsCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgdGggeworICAgICAgICAgICAg
dGQsIHRoIHsKICAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICAg
ICAgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgICAgIHBh
ZGRpbmc6IDAuMnJlbTsKQEAgLTEzNyw3ICsxMjgsNyBAQCBjbGFzcyBDb21taXRMb2dWaWV3ZXIg
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9y
bWFsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItc3Bpbm5l
ciB7CisgICAgICAgICAgICAjc3Bpbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAgIG1h
cmdpbi10b3A6IDJyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvY29tbWl0LWxvZy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL2NvbW1pdC1sb2cuanMKaW5kZXggNGViYTdlMTAxMmFlMDFkOWU1MTJmOTA2NDg4
N2M3YzA2YTUxNDY1OS4uNTYyNGFmNTRiZTZlOGRjOGI4ZjU1YWQ2Yjk2NzcyZDUyNjhlYmViNSAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29t
bWl0LWxvZy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9jb21taXQtbG9nLmpzCkBAIC00OSw3MCArNDksNDYgQEAgY2xhc3MgQ29tbWl0TG9nIGV4dGVu
ZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgaWYgKHRoaXMgPT0gcHJldmlvdXNDb21taXQp
CiAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdCA9IG51bGw7CiAKLSAgICAgICAgdmFyIHJlcG9z
aXRvcnkgPSB0aGlzLl9yZXBvc2l0b3J5OworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gdGhp
cy5fcmVwb3NpdG9yeTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NvbW1pdCkKLSAgICAgICAgICAg
IHJldHVybiB7ZnJvbTogbnVsbCwgdG86IHRoaXMucmV2aXNpb24oKSwgcmVwb3NpdG9yeTogcmVw
b3NpdG9yeSwgbGFiZWw6IHRoaXMubGFiZWwoKSwgdXJsOiB0aGlzLnVybCgpfTsKLQotICAgICAg
ICB2YXIgdG8gPSB0aGlzLnJldmlzaW9uKCk7Ci0gICAgICAgIHZhciBmcm9tID0gcHJldmlvdXND
b21taXQucmV2aXNpb24oKTsKLSAgICAgICAgdmFyIGxhYmVsID0gbnVsbDsKLSAgICAgICAgaWYg
KHBhcnNlSW50KHRvKSA9PSB0bykgeyAvLyBlLmcuIHIxMjM0NS4KLSAgICAgICAgICAgIGZyb20g
PSAocGFyc2VJbnQoZnJvbSkgKyAxKS50b1N0cmluZygpOworICAgICAgICAgICAgcmV0dXJuIHty
ZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogdGhpcy5sYWJlbCgpLCB1cmw6IHRoaXMudXJs
KCl9OworCisgICAgICAgIGNvbnN0IHRvID0gdGhpcy5yZXZpc2lvbigpOworICAgICAgICBjb25z
dCBmcm9tID0gcHJldmlvdXNDb21taXQucmV2aXNpb24oKTsKKyAgICAgICAgbGV0IGZyb21SZXZp
c2lvbkZvclVSTCA9IGZyb207CisgICAgICAgIGxldCBsYWJlbCA9IG51bGw7CisgICAgICAgIGlm
IChwYXJzZUludChmcm9tKSA9PSBmcm9tKSB7IC8vIGUuZy4gcjEyMzQ1LgorICAgICAgICAgICAg
ZnJvbVJldmlzaW9uRm9yVVJMID0gKHBhcnNlSW50KGZyb20pICsgMSkudG9TdHJpbmc7CiAgICAg
ICAgICAgICBsYWJlbCA9IGByJHtmcm9tfS1yJHt0aGlzLnJldmlzaW9uKCl9YDsKLSAgICAgICAg
fSBlbHNlIGlmICh0by5sZW5ndGggPT0gNDApIHsgLy8gZS5nLiBnaXQgaGFzaAorICAgICAgICB9
IGVsc2UgaWYgKHRvLmxlbmd0aCA9PSA0MCkgLy8gZS5nLiBnaXQgaGFzaAogICAgICAgICAgICAg
bGFiZWwgPSBgJHtmcm9tLnN1YnN0cmluZygwLCA4KX0uLiR7dG8uc3Vic3RyaW5nKDAsIDgpfWA7
Ci0gICAgICAgIH0gZWxzZQorICAgICAgICBlbHNlCiAgICAgICAgICAgICBsYWJlbCA9IGAke2Zy
b219IC0gJHt0b31gOwogCi0gICAgICAgIHJldHVybiB7ZnJvbTogZnJvbSwgdG86IHRvLCByZXBv
c2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogbGFiZWwsIHVybDogcmVwb3NpdG9yeS51cmxGb3JS
ZXZpc2lvblJhbmdlKGZyb20sIHRvKX07CisgICAgICAgIHJldHVybiB7cmVwb3NpdG9yeTogcmVw
b3NpdG9yeSwgbGFiZWw6IGxhYmVsLCB1cmw6IHJlcG9zaXRvcnkudXJsRm9yUmV2aXNpb25SYW5n
ZShmcm9tLCB0byl9OwogICAgIH0KIAotICAgIHN0YXRpYyBmZXRjaEJldHdlZW5SZXZpc2lvbnMo
cmVwb3NpdG9yeSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoQmV0d2VlblJldmlzaW9ucyhy
ZXBvc2l0b3J5LCBwcmVjZWRpbmdSZXZpc2lvbiwgbGFzdFJldmlzaW9uKQogICAgIHsKLSAgICAg
ICAgdmFyIHBhcmFtcyA9IFtdOwotICAgICAgICBpZiAoZnJvbSAmJiB0bykgewotICAgICAgICAg
ICAgcGFyYW1zLnB1c2goWydmcm9tJywgZnJvbV0pOwotICAgICAgICAgICAgcGFyYW1zLnB1c2go
Wyd0bycsIHRvXSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdXJsID0gJy4uL2FwaS9jb21t
aXRzLycgKyByZXBvc2l0b3J5LmlkKCkgKyAnLz8nICsgcGFyYW1zLm1hcChmdW5jdGlvbiAoa2V5
VmFsdWUpIHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5VmFsdWVb
MF0pICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdKTsKLSAgICAgICAgfSku
am9pbignJicpOwotCi0KLSAgICAgICAgdmFyIGNhY2hlZExvZ3MgPSB0aGlzLl9jYWNoZWRDb21t
aXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvKTsKLSAgICAgICAgaWYgKGNhY2hlZExvZ3MpCi0g
ICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2
ZShjYWNoZWRMb2dzKTsgfSk7Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBy
ZXR1cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHVybCkudGhlbihmdW5jdGlvbiAoZGF0
YSkgewotICAgICAgICAgICAgdmFyIGNvbW1pdHMgPSBkYXRhWydjb21taXRzJ10ubWFwKGZ1bmN0
aW9uIChyYXdEYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmF3RGF0YS5yZXBvc2l0b3J5ID0gcmVw
b3NpdG9yeTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRv
bihyYXdEYXRhLmlkLCByYXdEYXRhKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc2Vs
Zi5fY2FjaGVDb21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBjb21taXRzKTsKLSAgICAg
ICAgICAgIHJldHVybiBjb21taXRzOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRklYTUU6IFRo
ZSBjYWNoZSBzaG91bGQgYmUgc21hcnRlciBhYm91dCBmZXRjaGluZyBhIHJhbmdlIHdpdGhpbiBh
biBhbHJlYWR5IGZldGNoZWQgcmFuZ2UsIGV0Yy4uLgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGV2aWN0IHNvbWUgZW50aXJlcyBmcm9tIHRoZSBjYWNoZSBpbiBjYWNoZWRGZXRjaC4KKyAg
ICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvY29tbWl0cy8ke3JlcG9zaXRvcnku
aWQoKX0vYCwge3ByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb259KQorICAgICAgICAgICAg
LnRoZW4oKGRhdGEpID0+IHRoaXMuX2NvbnN0cnVjdEZyb21SYXdEYXRhKHJlcG9zaXRvcnksIGRh
dGEpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2NhY2hlZENvbW1pdExvZ3MocmVwb3NpdG9yeSwg
ZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoRm9yU2luZ2xlUmV2aXNpb24ocmVwb3NpdG9yeSwg
cmV2aXNpb24pCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2NhY2hlcykKLSAgICAgICAgICAg
IHJldHVybiBudWxsOwotICAgICAgICB2YXIgY2FjaGUgPSB0aGlzLl9jYWNoZXNbcmVwb3NpdG9y
eS5pZCgpXTsKLSAgICAgICAgaWYgKCFjYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwot
ICAgICAgICAvLyBGSVhNRTogTWFrZSBlYWNoIGNvbW1pdCBrbm93IG9mIGl0cyBwYXJlbnQsIHRo
ZW4gd2UgY2FuIGRvIGEgYmV0dGVyIGNhY2hpbmcuIAotICAgICAgICByZXR1cm4gY2FjaGVbZnJv
bSArICd8JyArIHRvXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvY29t
bWl0cy8ke3JlcG9zaXRvcnkuaWQoKX0vJHtyZXZpc2lvbn1gKS50aGVuKChkYXRhKSA9PiB7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0RnJvbVJhd0RhdGEocmVwb3NpdG9yeSwg
ZGF0YSk7CisgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBfY2FjaGVDb21taXRMb2dz
KHJlcG9zaXRvcnksIGZyb20sIHRvLCBsb2dzKQorICAgIHN0YXRpYyBfY29uc3RydWN0RnJvbVJh
d0RhdGEocmVwb3NpdG9yeSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2FjaGVz
KQotICAgICAgICAgICAgdGhpcy5fY2FjaGVzID0ge307Ci0gICAgICAgIGlmICghdGhpcy5fY2Fj
aGVzW3JlcG9zaXRvcnkuaWQoKV0pCi0gICAgICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3NpdG9y
eS5pZCgpXSA9IHt9OwotICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3NpdG9yeS5pZCgpXVtmcm9t
ICsgJ3wnICsgdG9dID0gbG9nczsKKyAgICAgICAgcmV0dXJuIGRhdGFbJ2NvbW1pdHMnXS5tYXAo
KHJhd0RhdGEpID0+IHsKKyAgICAgICAgICAgIHJhd0RhdGEucmVwb3NpdG9yeSA9IHJlcG9zaXRv
cnk7CisgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyYXdEYXRh
LmlkLCByYXdEYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcwppbmRl
eCBmODA1YzU2MDhkMmQwYzAzNWQ5MmQ5OTM1ZWJjNDZkMTc1MTFkMjhlLi42MzE3MGY3YTM1ODQ5
OGQwNmViZjRiY2U2NTM0NzY4YThjMWU0NTM2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2RhdGEtbW9kZWwuanMKQEAgLTYyLDEwICs2
MiwxMCBAQCBjbGFzcyBEYXRhTW9kZWxPYmplY3QgewogCiAgICAgc3RhdGljIGNhY2hlZEZldGNo
KHBhdGgsIHBhcmFtcywgbm9DYWNoZSkKICAgICB7Ci0gICAgICAgIHZhciBxdWVyeSA9IFtdOwor
ICAgICAgICBjb25zdCBxdWVyeSA9IFtdOwogICAgICAgICBpZiAocGFyYW1zKSB7Ci0gICAgICAg
ICAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zKQotICAgICAgICAgICAgICAgIHF1ZXJ5LnB1c2go
a2V5ICsgJz0nICsgcGFyc2VJbnQocGFyYW1zW2tleV0pKTsKKyAgICAgICAgICAgIGZvciAobGV0
IGtleSBpbiBwYXJhbXMpCisgICAgICAgICAgICAgICAgcXVlcnkucHVzaChrZXkgKyAnPScgKyBl
c2NhcGUocGFyYW1zW2tleV0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAocXVlcnkubGVuZ3Ro
KQogICAgICAgICAgICAgcGF0aCArPSAnPycgKyBxdWVyeS5qb2luKCcmJyk7CmRpZmYgLS1naXQg
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3JlbW90ZS5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCmluZGV4IDBlZWU4MzMzOTI5YTVj
NGM2ZjRhYjkzODliMjMyNTA3YWUxYmVjNmEuLjhkOTIwM2I2YmEyM2JiMmUxMjU4Y2M4MjkwZDcx
NDZlM2EzZjYxODcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvcmVtb3RlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVt
b3RlLmpzCkBAIC0xMiw3ICsxMiw3IEBAIGNsYXNzIEJyb3dzZXJSZW1vdGVBUEkgZXh0ZW5kcyBD
b21tb25SZW1vdGVBUEkgewogICAgICAgICAgICAgZnVuY3Rpb24gb25sb2FkKCkgewogICAgICAg
ICAgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdSZW1vdGUnLCAnc2Vu
ZEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgIT0gMjAwKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzamVjdCh4aHIuc3RhdHVzKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh4aHIuc3RhdHVzKTsKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKHtzdGF0dXNDb2RlOiB4aHIuc3RhdHVzLCByZXNwb25zZVRleHQ6IHhoci5yZXNwb25z
ZVRleHR9KTsKICAgICAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWNvbW1pdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRlc3RzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjliOWM5MzU4MDY5M2E2Yzk3ZTQ3MjliMGViZjhhZDkxYjhiNTg3MWMKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRl
c3RzLmpzCkBAIC0wLDAgKzEsNTcyIEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzc2VydCA9
IHJlcXVpcmUoJ2Fzc2VydCcpOworCitjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKK2NvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVxdWly
ZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9ydDsK
K2NvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9w
ZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKKworZGVzY3JpYmUoIi9hcGkvY29tbWl0
cy8iLCBmdW5jdGlvbiAoKSB7CisgICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CisKKyAgICBj
b25zdCBzdWJ2ZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xh
dmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAi
Y29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDgiLAorICAgICAg
ICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDI6NTI6MzQuNTc3WiIsCisgICAgICAgICAg
ICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJaYWxhbiBCdWp0YXMiLCAiYWNjb3VudCI6ICJ6YWxh
bkBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJhIG1lc3NhZ2UiLAor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAorICAg
ICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WiIsCisgICAgICAg
ICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDaHJpcyBEdW1leiIsICJhY2NvdW50IjogImNk
dW1lekBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJzb21lIG1lc3Nh
Z2UiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVw
b3NpdG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJwcmV2aW91c0NvbW1pdCI6ICIy
MTA5NDkiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NTAiLAorICAgICAgICAg
ICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIsCisgICAgICAgICAgICAg
ICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21taXQt
cXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICJtZXNzYWdlIjogImFub3RoZXIg
bWVzc2FnZSIsCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25zdCBz
eXN0ZW1WZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xhdmUi
LAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAiY29t
bWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJP
U1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkQzMiIsCisgICAgICAgICAgICAg
ICAgIm9yZGVyIjogNgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIx
NkM2OCIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjogNQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAg
ICAgICAgICJyZXZpc2lvbiI6ICIxNkM2NyIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjogNAor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkIyNjU3IiwKKyAgICAg
ICAgICAgICAgICAib3JkZXIiOiAzCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlz
aW9uIjogIjE2QjI1NTUiLAorICAgICAgICAgICAgICAgICJvcmRlciI6IDIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwK
KyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTZBMzIzIiwKKyAgICAgICAgICAgICAgICAi
b3JkZXIiOiAxCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25zdCBu
b3RZZXRSZXBvcnRlZENvbW1pdCA9IHsKKyAgICAgICAgcmV2aXNpb246ICcyMTA5NTEnLAorICAg
ICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo1NjoyMC4wNDVaJworICAgIH0KKworICAgIGZ1bmN0
aW9uIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKGNvbW1pdCwgc3VibWl0dGVkKQor
ICAgIHsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsncmV2aXNpb24nXSwgc3VibWl0dGVk
WydyZXZpc2lvbiddKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKG5ldyBEYXRlKGNvbW1pdFsndGlt
ZSddKS50b0lTT1N0cmluZygpLCBzdWJtaXR0ZWRbJ3RpbWUnXSk7CisgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRbJ21lc3NhZ2UnXSwgc3VibWl0dGVkWydtZXNzYWdlJ10pOworICAgICAgICBh
c3NlcnQuZXF1YWwoY29tbWl0WydhdXRob3JOYW1lJ10sIHN1Ym1pdHRlZFsnYXV0aG9yJ11bJ25h
bWUnXSk7CisgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvckVtYWlsJ10sIHN1Ym1p
dHRlZFsnYXV0aG9yJ11bJ2FjY291bnQnXSk7CisgICAgICAgIGlmKHN1Ym1pdHRlZFsncHJldmlv
dXNDb21taXQnXSkgeworICAgICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdFsncHJldmlvdXNDb21t
aXQnXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
WydwcmV2aW91c0NvbW1pdCddLCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlc2Ny
aWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+LycsICgpID0+IHsKKyAgICAgICAgaXQoInNo
b3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5n
IHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0JykudGhlbigocmVzcG9uc2UpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnUmVw
b3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gdGhlcmUgYXJlIG5vIHJl
cG9ydGVkIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2Vi
S2l0J30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQn
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qgb2Yg
YWxsIGNvbW1pdHMgZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04o
Jy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNvbW1pdHMpOworICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LycpOworICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworCisgICAgICAgICAgICAgICAgY29u
c3QgY29tbWl0cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICAgICAgY29uc3Qgc3VibWl0dGVk
Q29tbWl0cyA9IHN1YnZlcnNpb25Db21taXRzWydjb21taXRzJ107CisgICAgICAgICAgICAgICAg
YXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1swXSwgc3VibWl0dGVkQ29t
bWl0c1swXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0
ZWQoY29tbWl0c1sxXSwgc3VibWl0dGVkQ29tbWl0c1sxXSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1syXSwgc3VibWl0dGVkQ29tbWl0
c1syXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3ByZXZpb3Vz
Q29tbWl0J10sIGNvbW1pdHNbMV1bJ2lkJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsaXN0IG9mIG9yZGVyZWQgY29tbWl0
cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIGFk
ZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBv
cnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvJyk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0cyA9
IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdHRlZENvbW1p
dHMgPSBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0cyddOworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRzLmxlbmd0aCwgc3VibWl0dGVkQ29tbWl0cy5sZW5ndGgpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBdWydyZXZpc2lvbiddLCBzdWJtaXR0
ZWRDb21taXRzWzVdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29tbWl0c1sxXVsncmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1s0XVsncmV2aXNpb24nXSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3JldmlzaW9uJ10sIHN1
Ym1pdHRlZENvbW1pdHNbM11bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRzWzNdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzJdWydyZXZpc2lv
biddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s0XVsncmV2aXNpb24n
XSwgc3VibWl0dGVkQ29tbWl0c1sxXVsncmV2aXNpb24nXSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbW1pdHNbNV1bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbMF1bJ3Jl
dmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAg
ZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vb2xkZXN0JywgKCkgPT4geworICAg
ICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBhcmUg
bm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0Jyku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0cyB3
aGVuIHRoZXJlIGFyZSBubyBjb21taXRzIiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFt
ZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3QnKTsK
KyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBjb21t
aXQiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25D
b21taXRzKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RK
U09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVt
b3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0Jyk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0
SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25Db21t
aXRzWydjb21taXRzJ11bMF0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgY29tbWl0IGJhc2VkIG9uICdjb21taXRf
b3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5nIiwgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0cykudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkv
cmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1pdHMpOworICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBp
L2NvbW1pdHMvT1NYL29sZGVzdCcpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdP
SycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5n
dGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXVsw
XVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVs1XVsncmV2aXNp
b24nXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNj
cmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXRlc3QnLCAoKSA9PiB7CisgICAgICAg
IGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBt
YXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKS50aGVu
KChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHRzIHdoZW4g
dGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzog
J1dlYktpdCd9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOworICAg
ICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgb2xkZXN0IGNvbW1pdCIs
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCk7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1p
dHMpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05X
aXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1
bHRbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1Nh
bWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgc3VidmVyc2lvbkNvbW1pdHNb
J2NvbW1pdHMnXS5zbGljZSgpLnBvcCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgbGF0ZXN0IGNvbW1pdCBiYXNlZCBvbiAn
Y29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CisgICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVz
KCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNP
TignL2FwaS9jb21taXRzL09TWC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1
cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRz
J10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21t
aXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ11bMF1b
J3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisg
ICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vbGFzdC1yZXBvcnRlZCcsICgp
ID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
L2xhc3QtcmVwb3J0ZWQnKS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBh
biBlbXB0eSByZXN1bHQgd2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Jl
cG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIx
MDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQorICAgICAgICAgICAg
XSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7CisgICAg
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdHMgd2hl
biB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzog
MSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvbGFz
dC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0
aGUgb2xkZXN0IHJlcG9ydGVkIGNvbW1pdCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRi
ID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLAorICAg
ICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzog
J1dlYktpdCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9z
aXRvcnknOiAxLCAncmV2aXNpb24nOiBub3RZZXRSZXBvcnRlZENvbW1pdC5yZXZpc2lvbiwgJ3Rp
bWUnOiBub3RZZXRSZXBvcnRlZENvbW1pdC50aW1lfSksCisgICAgICAgICAgICBdKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygn
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9h
cGkvY29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsn
c3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2Nv
bW1pdHMnXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFz
T25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1snY29t
bWl0cyddLnNsaWNlKCkucG9wKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXN0IHJlcG9ydGVkIGNvbW1pdCBiYXNlZCBv
biAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CisgICAg
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3Rh
dHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkJyk7CisgICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
dWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29t
bWl0cyddWzBdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhc3QtcmVw
b3J0ZWQ/ZnJvbT08c3RhcnRfb3JkZXI+JnRvPTxlbmRfb3JkZXI+JywgKCkgPT4geworICAgICAg
ICBpdCgic2hvdWxkIHJldHVybiBhIGxpc3Qgb2YgY29tbWl0IGluIGdpdmVuIHZhbGlkIG9yZGVy
IHJhbmdlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAg
IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ09TWCd9KSwKKyAg
ICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2
aXNpb24nOiAnU2llcnJhMTZDNjcnLCAnb3JkZXInOiAzNjcsICdyZXBvcnRlZCc6IHRydWV9KSwK
KyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnU2llcnJhMTZDNjgnLCAnb3JkZXInOiAzNjgsICdyZXBvcnRlZCc6IHRydWV9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjknLCAnb3JkZXInOiAzNjksICdyZXBvcnRlZCc6IGZh
bHNlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5
JzogMSwgJ3JldmlzaW9uJzogJ1NpZXJyYTE2RDMyJywgJ29yZGVyJzogNDMyLCAncmVwb3J0ZWQn
OiB0cnVlfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvbGFz
dC1yZXBvcnRlZD9mcm9tPTM2NyZ0bz0zNzAnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlc3BvbnNlWydjb21t
aXRzJ107CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdHMubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSByZXN1bHRzWzBdOworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb21taXQucmV2aXNpb24sICdTaWVycmExNkM2OCcpOworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209
MzcwJnRvPTM2NycpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MjAwJnRvPTI5
OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNP
TignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY5JnRvPTQzMicpOworICAg
ICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBjb25zdCBy
ZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHJl
c3VsdHNbMF07CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbiwg
J1NpZXJyYTE2RDMyJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
KyAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi88Y29tbWl0PicsICgpID0+
IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4gdGhl
cmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LzIx
MDk0OScpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFVua25vd25Db21t
aXQgd2hlbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBjb21taXQgZG9lcyBub3QgZXhpc3QgaW4gdGhl
IGRhdGFiYXNlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
J30pCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LzIxMDk0
OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRo
ZSBjb21taXQgZXZlbiBpZiBpdCBoYWQgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3Jp
ZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRiLmlu
c2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAn
dGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdl
dEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvMjEwOTUwJyk7CisgICAgICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0
dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnY29tbWl0
cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVT
dWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHsKKyAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOiAnMjEwOTUw
JywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wics
CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6IG51bGwsIGFjY291bnQ6IG51bGx9
LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLAorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0
dXJuIHRoZSBmdWxsIHJlc3VsdCBmb3IgYSByZXBvcnRlZCBjb21taXQiLCAoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOworICAgICAgICAg
ICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygnL2Fw
aS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9hcGkv
Y29tbWl0cy9XZWJLaXQvMjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5n
dGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVk
KHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddWzFdKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgIH0pOworCisgICAgZGVzY3JpYmUo
Jy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vP3ByZWNlZGluZ1JldmlzaW9uPTxjb21taXQtMT4m
bGFzdFJldmlzaW9uPTxjb21taXQtMj4nLCAoKSA9PiB7CisgICAgICAgIGl0KCJzaG91bGQgcmV0
dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0
b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
Z2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJykudGhl
bigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Vb
J3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9u
ZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2Ui
LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAg
ICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lv
bic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAgICAg
ICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1Jldmlz
aW9uPTIxMDkwMCZsYXN0UmV2aXNpb249MjExMDAwJyk7CisgICAgICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3Rh
dHVzJ10sICdVbmtub3duQ29tbWl0Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gY29tbWl0cyBp
biB0aGUgc3BlY2lmaWVkIHJhbmdlIGhhdmUgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NDkn
LCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonfSksCisgICAgICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk1
MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KSwKKyAgICAgICAgICAgIF0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1JldmlzaW9uPTIxMDk0
OSZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdP
SycpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMn
XSwgW10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91
bGQgcmV0dXJuIEludmFsaWRDb21taXRSYW5nZSB3aGVuIHRoZSBzcGVjaWZpZWQgcmFuZ2UgaXMg
YmFja3dhcmRzIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVa
J30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6
IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4
N1onfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0Lz9w
cmVjZWRpbmdSZXZpc2lvbj0yMTA5NTAmbGFzdFJldmlzaW9uPTIxMDk0OScpOworICAgICAgICAg
ICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZENvbW1pdFJhbmdlJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdXNlIHRoZSBjb21t
aXQgb3JkZXIgd2hlbiB0aW1lIGlzIG5vdCBzcGVjaWZpZWQiLCAoKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7
J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdj
b21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9y
ZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdj
b21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBv
cmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgn
Y29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3Jywg
b3JkZXI6IDMsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04o
Jy9hcGkvY29tbWl0cy9tYWNPUy8/cHJlY2VkaW5nUmV2aXNpb249MTAuMTIlMjAxNkEzMjMmbGFz
dFJldmlzaW9uPTEwLjEyJTIwMTZCMjY1NycpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9u
c2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cydd
LCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21t
aXRzJ10ubWFwKChjb21taXQpID0+IGNvbW1pdFsncmV2aXNpb24nXSksIFsnMTAuMTIgMTZCMjU1
NScsICcxMC4xMiAxNkIyNjU3J10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIEluY29uc2lzdGVudENvbW1pdHMgd2hlbiBwcmVjZWRp
bmdSZXZpc2lvbiBzcGVjaWZpZXMgYSB0aW1lIGJ1dCBsYXN0UmV2aXNpb24gZG9lcyBub3QiLCAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzog
JzEwLjEyIDE2QTMyMycsIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonLCBvcmRlcjog
MSwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0
cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNTU1Jywgb3JkZXI6
IDIsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjY1NycsIG9yZGVy
OiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBp
L2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIwMTZBMzIzJmxhc3RSZXZp
c2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0lu
Y29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAg
ICAgICBpdCgic2hvdWxkIHJldHVybiBJbmNvbnNpc3RlbnRDb21taXRzIHdoZW4gcHJlY2VkaW5n
UmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgaGFzIGEgdGltZSBidXQgbGFzdFJldmlz
aW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSks
CisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwg
J3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVlfSks
CisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwg
J3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1ZX0p
LAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEs
ICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgdGltZTogJzIwMTctMDEtMjBUMDM6MjM6NTAu
NjQ1WicsIG9yZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5n
ZXRKU09OKCcvYXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIwMTZB
MzIzJmxhc3RSZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydz
dGF0dXMnXSwgJ0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBlbXB0eSByZXN1bHRzIHdoZW4gcHJl
Y2VkaW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgb3IgYW4gb3JkZXIgaGFzIGEg
dGltZSBidXQgbGFzdFJldmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwg
J25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywg
eydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsICdyZXBvcnRlZCc6
IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRv
cnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjU1NScsIG9yZGVyOiAyLCAncmVwb3J0ZWQn
OiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0
b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI2NTcnLCBvcmRlcjogMywgJ3JlcG9ydGVk
JzogdHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21hY09T
Lz9wcmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIlMjAx
NkIyNjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGVtcHR5
IHJlc3VsdHMgd2hlbiBwcmVjZWRpbmdSZXZpc2lvbiBhbiBvcmRlciBoYXMgYSB0aW1lIGJ1dCBs
YXN0UmV2aXNpb24gZG9lcyBub3QiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUn
OiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBv
c2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVwb3J0
ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBv
c2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgJ3JlcG9ydGVkJzogdHJ1
ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21hY09TLz9wcmVj
ZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIlMjAxNkIyNjU3
Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHJlcG9ydGVkIGNv
bW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAx
LCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0OCcsICd0aW1lJzogJzIwMTct
MDEtMjBUMDI6NTI6MzQuNTc3WicsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMjEw
OTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzogdHJ1
ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6
IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4
N1onLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBp
L2NvbW1pdHMvV2ViS2l0Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NDgmbGFzdFJldmlzaW9uPTIx
MDk1MCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAyKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMn
XVswXSwgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKKyAgICAg
ICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NDknLAorICAgICAgICAgICAgICAgICAgICB0
aW1lOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywKKyAgICAgICAgICAgICAgICAgICAgYXV0
aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCisgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U6IG51bGwsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMV0sIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uOiAnMjEwOTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTctMDEt
MjBUMDM6NDk6MzcuODg3WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6IG51
bGwsIGFjY291bnQ6IG51bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLAor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGl0KCJzaG91bGQgbm90IGluY2x1ZGUgYSByZXZpc2lvbiBub3Qgd2l0aGluIHRoZSBzcGVj
aWZpZWQgcmFuZ2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAg
IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwK
KyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnMjEwOTQ3JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMjozODo0NS40ODVaJywg
J3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMn
LCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTQ4JywgJ3RpbWUnOiAnMjAxNy0w
MS0yMFQwMjo1MjozNC41NzdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMjEw
OTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzogZmFs
c2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44
ODdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0
cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJz
aW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1Jl
dmlzaW9uPTIxMDk0NyZsYXN0UmV2aXNpb249MjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0
dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRbJ2Nv
bW1pdHMnXS5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFz
T25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1snY29t
bWl0cyddWzBdKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1p
dHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVsx
XSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsKKworfSk7CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRz
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktY29tbWl0cy5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlYzU0YTMyYmRhNDFlYTEwOWFhYzc5
Y2RmZjRiOGViM2E2YzI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRz
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDc2ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotY29u
c3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Ci0KLWNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwotY29uc3QgYWRkU2xhdmVGb3JSZXBv
cnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFNsYXZl
Rm9yUmVwb3J0OwotY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNl
cy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwotCi1kZXNjcmliZSgi
L2FwaS9jb21taXRzLyIsIGZ1bmN0aW9uICgpIHsKLSAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlz
KTsKLQotICAgIGNvbnN0IHN1YnZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVOYW1l
IjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIs
Ci0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIxMDk0
OCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMjo1MjozNC41NzdaIiwK
LSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIlphbGFuIEJ1anRhcyIsICJhY2Nv
dW50IjogInphbGFuQGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdlIjogImEg
bWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIx
MDk0OSIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVa
IiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNocmlzIER1bWV6IiwgImFj
Y291bnQiOiAiY2R1bWV6QGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdlIjog
InNvbWUgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInByZXZpb3Vz
Q29tbWl0IjogIjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIxMDk1MCIs
Ci0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaIiwKLSAg
ICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2NvdW50
IjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCi0gICAgICAgICAgICAgICAgIm1lc3NhZ2Ui
OiAiYW5vdGhlciBtZXNzYWdlIiwKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0KLQot
ICAgIGNvbnN0IHN5c3RlbVZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVOYW1lIjog
InNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCi0g
ICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJyZXBv
c2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2RDMyIiwKLSAg
ICAgICAgICAgICAgICAib3JkZXIiOiA2Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjE2QzY4IiwKLSAgICAgICAgICAgICAgICAib3JkZXIiOiA1Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIs
Ci0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2QzY3IiwKLSAgICAgICAgICAgICAgICAi
b3JkZXIiOiA0Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2QjI2
NTciLAotICAgICAgICAgICAgICAgICJvcmRlciI6IDMKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwKLSAgICAgICAgICAg
ICAgICAicmV2aXNpb24iOiAiMTZCMjU1NSIsCi0gICAgICAgICAgICAgICAgIm9yZGVyIjogMgot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJPU1giLAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkEzMjMiLAotICAgICAg
ICAgICAgICAgICJvcmRlciI6IDEKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0KLQot
ICAgIGNvbnN0IG5vdFlldFJlcG9ydGVkQ29tbWl0ID0gewotICAgICAgICByZXZpc2lvbjogJzIx
MDk1MScsCi0gICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjU2OjIwLjA0NVonCi0gICAgfQot
Ci0gICAgZnVuY3Rpb24gYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0LCBz
dWJtaXR0ZWQpCi0gICAgewotICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0WydyZXZpc2lvbidd
LCBzdWJtaXR0ZWRbJ3JldmlzaW9uJ10pOwotICAgICAgICBhc3NlcnQuZXF1YWwobmV3IERhdGUo
Y29tbWl0Wyd0aW1lJ10pLnRvSVNPU3RyaW5nKCksIHN1Ym1pdHRlZFsndGltZSddKTsKLSAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnbWVzc2FnZSddLCBzdWJtaXR0ZWRbJ21lc3NhZ2UnXSk7
Ci0gICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvck5hbWUnXSwgc3VibWl0dGVkWydh
dXRob3InXVsnbmFtZSddKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnYXV0aG9yRW1h
aWwnXSwgc3VibWl0dGVkWydhdXRob3InXVsnYWNjb3VudCddKTsKLSAgICAgICAgaWYoc3VibWl0
dGVkWydwcmV2aW91c0NvbW1pdCddKSB7Ci0gICAgICAgICAgICBhc3NlcnQub2soY29tbWl0Wydw
cmV2aW91c0NvbW1pdCddKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRbJ3ByZXZpb3VzQ29tbWl0J10sIG51bGwpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vJywgKCkgPT4gewotICAg
ICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBhcmUg
bm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQnKS50aGVuKChy
ZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3Rh
dHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHQgd2hlbiB0aGVy
ZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRi
ID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAn
bmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywg
eydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEt
MjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21t
aXRzL1dlYktpdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0
aGUgbGlzdCBvZiBhbGwgY29tbWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50
aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJL
aXQvJyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0KLSAgICAgICAg
ICAgICAgICBjb25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAzKTsKLSAgICAgICAgICAgICAgICBjb25z
dCBzdWJtaXR0ZWRDb21taXRzID0gc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzBdLCBz
dWJtaXR0ZWRDb21taXRzWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVB
c09uZVN1Ym1pdHRlZChjb21taXRzWzFdLCBzdWJtaXR0ZWRDb21taXRzWzFdKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzJdLCBzdWJt
aXR0ZWRDb21taXRzWzJdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1sy
XVsncHJldmlvdXNDb21taXQnXSwgY29tbWl0c1sxXVsnaWQnXSk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qgb2Ygb3Jk
ZXJlZCBjb21taXRzIGZvciBhIGdpdmVuIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKLSAgICAgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC8nKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBjb25z
dCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAgICAgICAgY29uc3Qgc3Vi
bWl0dGVkQ29tbWl0cyA9IHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ107Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCBzdWJtaXR0ZWRDb21taXRzLmxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMF1bJ3JldmlzaW9u
J10sIHN1Ym1pdHRlZENvbW1pdHNbNV1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRzWzFdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzRdWydy
ZXZpc2lvbiddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1syXVsncmV2
aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1szXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbM11bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNb
Ml1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzRd
WydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzFdWydyZXZpc2lvbiddKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s1XVsncmV2aXNpb24nXSwgc3VibWl0dGVkQ29t
bWl0c1swXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9vbGRlc3QnLCAo
KSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVu
IHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4gewotICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktp
dC9vbGRlc3QnKS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0
eSByZXN1bHRzIHdoZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydp
ZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
L29sZGVzdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUg
b2xkZXN0IGNvbW1pdCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQo
c3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBy
ZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNp
b25Db21taXRzKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAg
IHJldHVybiByZW1vdGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3QnKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgc3Vi
dmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVswXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBjb21taXQgYmFzZWQg
b24gJ2NvbW1pdF9vcmRlcicgd2hlbiAnY29tbWl0X3RpbWUnIGlzIG1pc3NpbmciLCAoKSA9PiB7
Ci0gICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAg
ICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRzKS50
aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0
YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7Ci0gICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdl
dEpTT04oJy9hcGkvY29tbWl0cy9PU1gvb2xkZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnY29t
bWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0cydd
WzVdWydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsK
LQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhdGVzdCcsICgpID0+
IHsKLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4gdGhl
cmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xh
dGVzdCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHJl
c3VsdHMgd2hlbiB0aGVyZSBhcmUgbm8gY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzog
MSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvbGF0
ZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBvbGRl
c3QgY29tbWl0IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2
ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90
ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNv
bW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwotICAgICAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJz
aW9uQ29tbWl0c1snY29tbWl0cyddLnNsaWNlKCkucG9wKCkpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXRlc3QgY29tbWl0
IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5nIiwg
KCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVBUEko
KTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29t
bWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNP
TldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1pdHMp
OwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
bW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhdGVzdCcpOwotICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1
bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNbJ2Nv
bW1pdHMnXVswXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXN0LXJl
cG9ydGVkJywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90
Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29t
bWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RG
b3VuZCcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91
bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdCB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBjb21t
aXRzIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwKLSAg
ICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2
aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJ30pCi0g
ICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhc3QtcmVwb3J0
ZWQnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkg
cmVzdWx0cyB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBjb21taXRzIiwgKCkgPT4gewotICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRvcmll
cycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRz
L1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkg
PT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdP
SycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMn
XSwgW10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91
bGQgcmV0dXJuIHRoZSBvbGRlc3QgcmVwb3J0ZWQgY29tbWl0IiwgKCkgPT4gewotICAgICAgICAg
ICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgICAgICBjb25zdCBy
ZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKLSAgICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29t
bWl0cyksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzog
MSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0
cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IG5vdFlldFJlcG9ydGVkQ29tbWl0LnJl
dmlzaW9uLCAndGltZSc6IG5vdFlldFJlcG9ydGVkQ29tbWl0LnRpbWV9KSwKLSAgICAgICAgICAg
IF0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05X
aXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0Q29t
bWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25D
b21taXRzWydjb21taXRzJ10uc2xpY2UoKS5wb3AoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxhc3QgcmVwb3J0ZWQgY29t
bWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5n
IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9u
Q29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0
SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1p
dHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQnKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNpb25D
b21taXRzWydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9y
eT4vbGFzdC1yZXBvcnRlZD9mcm9tPTxzdGFydF9vcmRlcj4mdG89PGVuZF9vcmRlcj4nLCAoKSA9
PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGEgbGlzdCBvZiBjb21taXQgaW4gZ2l2ZW4g
dmFsaWQgb3JkZXIgcmFuZ2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAg
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAn
T1NYJ30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2NycsICdvcmRlcic6IDM2NywgJ3JlcG9ydGVk
JzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OCcsICdvcmRlcic6IDM2OCwgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OScsICdvcmRlcic6IDM2OSwgJ3Jl
cG9ydGVkJzogZmFsc2V9KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7
J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZEMzInLCAnb3JkZXInOiA0MzIs
ICdyZXBvcnRlZCc6IHRydWV9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21t
aXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY3JnRvPTM3MCcpOwotICAgICAgICAgICAgfSku
dGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVz
cG9uc2VbJ2NvbW1pdHMnXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0cy5s
ZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHJlc3VsdHNbMF07Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbiwgJ1NpZXJyYTE2QzY4
Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVw
b3J0ZWQ/ZnJvbT0zNzAmdG89MzY3Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkg
PT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdP
SycpOwotICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cydd
OwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0gICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/ZnJv
bT0yMDAmdG89Mjk5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAg
ICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/ZnJvbT0zNjkmdG89
NDMyJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAg
ICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
Y29tbWl0ID0gcmVzdWx0c1swXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
LnJldmlzaW9uLCAnU2llcnJhMTZEMzInKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+Lzxjb21t
aXQ+JywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91
bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0
cy9XZWJLaXQvMjEwOTQ5JykudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4g
VW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBl
eGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUn
OiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAz
OjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9X
ZWJLaXQvMjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdVbmtub3duQ29t
bWl0Jyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3Vs
ZCByZXR1cm4gdGhlIGNvbW1pdCBldmVuIGlmIGl0IGhhZCBub3QgYmVlbiByZXBvcnRlZCIsICgp
ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQo
J3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzog
JzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAgICAg
ICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NTAnKTsKLSAgICAgICAg
ICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
dWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJ
c1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgewotICAgICAgICAgICAg
ICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNp
b246ICcyMTA5NTAnLAotICAgICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo0
OTozNy44ODdaJywKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwgYWNj
b3VudDogbnVsbH0sCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQo
InNob3VsZCByZXR1cm4gdGhlIGZ1bGwgcmVzdWx0IGZvciBhIHJlcG9ydGVkIGNvbW1pdCIsICgp
ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7
Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRo
U3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0
SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NDknKTsKLSAgICAgICAgICAgIH0pLnRoZW4o
KHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1
cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdFsnY29t
bWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNP
bmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25Db21taXRzWydjb21t
aXRzJ11bMV0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgfSk7Ci0KLSAg
ICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi8/ZnJvbT08Y29tbWl0LTE+JnRv
PTxjb21taXQtMj4nLCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRv
cnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2Fw
aS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJykudGhlbigocmVzcG9uc2Up
ID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
UmVwb3NpdG9yeU5vdEZvdW5kJyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUgc3Bl
Y2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7Ci0g
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAn
LCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0pLnRo
ZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP2Zyb209MjEwOTAwJnRvPTIxMTAwMCcpOwot
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5
IHJlc3VsdCB3aGVuIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBoYXZlIG5vdCByZXBv
cnRlZCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFz
ZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0g
ICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3Jl
dmlzaW9uJzogJzIxMDk0OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1Wid9KSwK
LSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJ30p
LAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0y
MTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwot
ICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10p
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0
dXJuIHJlcG9ydGVkIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRv
cmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAgZGIu
aW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0OScs
ICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WicsICdyZXBvcnRlZCc6IHRydWV9KSwK
LSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJywg
J3JlcG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21t
aXRzL1dlYktpdC8/ZnJvbT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0
dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRbJ2Nv
bW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFz
T25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCB7Ci0gICAgICAgICAgICAgICAgICAg
IHByZXZpb3VzQ29tbWl0OiBudWxsLAotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjogJzIx
MDk0OScsCi0gICAgICAgICAgICAgICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0
NVonLAotICAgICAgICAgICAgICAgICAgICBhdXRob3I6IHtuYW1lOiBudWxsLCBhY2NvdW50OiBu
dWxsfSwKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbnVsbCwKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChy
ZXN1bHRbJ2NvbW1pdHMnXVsxXSwgewotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbW1p
dDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NTAnLAotICAgICAg
ICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJywKLSAgICAgICAg
ICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCi0gICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCBub3QgaW5jbHVkZSBh
IHJldmlzaW9uIG5vdCB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKLSAgICAg
ICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBp
L3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDgmdG89MjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1
Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMn
XVsxXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICB9KTsKLQotfSk7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNl
cy9tb2NrLXN1YnByb2Nlc3MuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRl
c3RzL3Jlc291cmNlcy9tb2NrLXN1YnByb2Nlc3MuanMKaW5kZXggOTc1YjkzYTMzZGE4YmVmYmVh
MmIyZThiZWZhZDA4YWYwOWU0MzU1OC4uZjhlMmE5Nzc3NjQxYzBkYjg4ZTBlNzc3YzYwN2RlYjQw
ZjNiMTYzNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9yZXNvdXJjZXMvbW9jay1zdWJwcm9jZXNzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stc3VicHJvY2Vzcy5qcwpAQCAtMSw0ICsx
LDQgQEAKLXZhciBNb2NrU3VicHJvY2VzcyA9IHsKK2NvbnN0IE1vY2tTdWJwcm9jZXNzID0gewog
ICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChjb21tYW5kKQogICAgIHsKICAgICAgICAgY29uc3QgaW52
b2NhdGlvbiA9IHtjb21tYW5kfTsKQEAgLTE2LDcgKzE2LDEyIEBAIHZhciBNb2NrU3VicHJvY2Vz
cyA9IHsKICAgICAgICAgdGhpcy5pbnZvY2F0aW9ucy5wdXNoKGludm9jYXRpb24pOwogICAgICAg
ICByZXR1cm4gaW52b2NhdGlvbi5wcm9taXNlOwogICAgIH0sCi0gICAgd2FpdGluZ0Zvckludm9j
YXRpb246IGZ1bmN0aW9uICgpCisgICAgcmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbjogZnVuY3Rp
b24gKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
d2FpdEZvckludm9jYXRpb24oKTsKKyAgICB9LAorICAgIHdhaXRGb3JJbnZvY2F0aW9uOiBmdW5j
dGlvbiAoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl93YWl0aW5nSW52b2NhdGlvbikgewog
ICAgICAgICAgICAgdGhpcy5fd2FpdGluZ0ludm9jYXRpb24gPSBuZXcgUHJvbWlzZShmdW5jdGlv
biAocmVzb2x2ZSwgcmVqZWN0KSB7CkBAIC00Myw3ICs0OCw3IEBAIHZhciBNb2NrU3VicHJvY2Vz
cyA9IHsKICAgICB9LAogICAgIHJlc2V0OiBmdW5jdGlvbiAoKQogICAgIHsKLSAgICAgICAgTW9j
a1N1YnByb2Nlc3MuaW52b2NhdGlvbnMgPSBbXTsKKyAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52
b2NhdGlvbnMubGVuZ3RoID0gMDsKICAgICAgICAgTW9ja1N1YnByb2Nlc3MuX3dhaXRpbmdJbnZv
Y2F0aW9uID0gbnVsbDsKICAgICAgICAgTW9ja1N1YnByb2Nlc3MuX3dhaXRpbmdJbnZvY2F0aW9u
UmVzb2x2ZXIgPSBudWxsOwogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLW9zLWJ1aWxkLWZldGNoZXItdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLW9zLWJ1aWxkLWZldGNoZXIt
dGVzdHMuanMKaW5kZXggNzU5ZGMxZGJmMGQxZDQ5NmMyNDY5OGJlMjdmYzgwZjUxNGVhYmE5ZC4u
OWRhYWJkMGY4NDJhMjhmNDZmN2Q4M2Y3MzBjY2ExMDdhZGViODI4ZCAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1vcy1idWlsZC1mZXRjaGVy
LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9v
bHMtb3MtYnVpbGQtZmV0Y2hlci10ZXN0cy5qcwpAQCAtMTI1LDEwICsxMjUsMTAgQEAgZGVzY3Jp
YmUoJ09TQnVpbGRGZXRjaGVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGl0KCdzaG91bGQgb25s
eSByZXR1cm4gY29tbWl0cyB3aG9zZSBvcmRlcnMgYXJlIGhpZ2hlciB0aGFuIHNwZWNpZmllZCBv
cmRlcicsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2Vy
OwogICAgICAgICAgICAgY29uc3QgZmV0Y2h0ZXIgPSBuZXcgT1NCdWlsZEZldGNoZXIobnVsbCwg
bnVsbCwgbnVsbCwgTW9ja1N1YnByb2Nlc3MsIGxvZ2dlcik7Ci0gICAgICAgICAgICBjb25zdCB3
YWl0aW5nRm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52
b2NhdGlvbigpOworICAgICAgICAgICAgY29uc3Qgd2FpdEZvckludm9jYXRpb25Qcm9taXNlID0g
TW9ja1N1YnByb2Nlc3Mud2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIGNvbnN0IGZl
dGNoQ29tbWl0c1Byb21pc2UgPSBmZXRjaHRlci5fY29tbWl0c0ZvckF2YWlsYWJsZUJ1aWxkcygn
T1NYJywgWydsaXN0JywgJ2J1aWxkMSddLCAnXlxcLiokJywgMTYwNDAwMDAwMCk7CiAKLSAgICAg
ICAgICAgIHJldHVybiB3YWl0aW5nRm9ySW52b2NhdGlvblByb21pc2UudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICByZXR1cm4gd2FpdEZvckludm9jYXRpb25Qcm9taXNlLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nl
c3MuaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ2J1aWxkMSddKTsKICAgICAgICAg
ICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKCcxNkQzMjFcbjE2
RTMyMXpcblxuMTZGMzIxJyk7CkBAIC0xNDUsMTUgKzE0NSwxNSBAQCBkZXNjcmliZSgnT1NCdWls
ZEZldGNoZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgaXQoJ3Nob3VsZCBhZGQgc3ViLWNvbW1p
dCBpbmZvIGZvciBjb21taXRzJywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0g
bmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICBjb25zdCBmZXRjaHRlciA9IG5ldyBPU0J1aWxk
RmV0Y2hlcihudWxsLCBudWxsLCBudWxsLCBNb2NrU3VicHJvY2VzcywgbG9nZ2VyKTsKLSAgICAg
ICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZSA9IE1vY2tTdWJwcm9jZXNz
LndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICBjb25zdCB3YWl0Rm9ySW52b2Nh
dGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAg
ICAgICAgY29uc3QgYWRkU3ViQ29tbWl0UHJvbWlzZSA9IGZldGNodGVyLl9hZGRTdWJDb21taXRz
Rm9yQnVpbGQoW29zeENvbW1pdCwgYW5vdGhlck9TWENvbW1pdF0sIFsnc3ViQ29tbWl0JywgJ2Zv
cicsICdyZXZpc2lvbiddKTsKIAotICAgICAgICAgICAgcmV0dXJuIHdhaXRpbmdGb3JJbnZvY2F0
aW9uUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB3YWl0Rm9ySW52b2Nh
dGlvblByb21pc2UudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tTdWJwcm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ3N1
YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJhMTZEMzInXSk7CiAgICAgICAgICAg
ICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0ucmVzb2x2ZShKU09OLnN0cmluZ2lm
eShzdWJDb21taXRXaXRoV2ViS2l0KSk7CiAgICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3Mu
cmVzZXQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3Mud2FpdGluZ0Zv
ckludm9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3Mud2Fp
dEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2Nh
dGlvbnNbMF0uY29tbWFuZCwgWydzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJy
YTE2RTMyJ10pOwpAQCAtMTczLDEwICsxNzMsMTAgQEAgZGVzY3JpYmUoJ09TQnVpbGRGZXRjaGVy
JywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGl0KCdzaG91bGQgZmFpbCBpZiB0aGUgY29tbWFuZCB0
byBnZXQgc3ViLWNvbW1pdCBpbmZvIGZhaWxzJywgKCkgPT4gewogICAgICAgICAgICAgY29uc3Qg
bG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICBjb25zdCBmZXRjaHRlciA9IG5l
dyBPU0J1aWxkRmV0Y2hlcihudWxsLCBudWxsLCBudWxsLCBNb2NrU3VicHJvY2VzcywgbG9nZ2Vy
KTsKLSAgICAgICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZSA9IE1vY2tT
dWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICBjb25zdCB3YWl0
Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlvbigp
OwogICAgICAgICAgICAgY29uc3QgYWRkU3ViQ29tbWl0UHJvbWlzZSA9IGZldGNodGVyLl9hZGRT
dWJDb21taXRzRm9yQnVpbGQoW29zeENvbW1pdF0sIFsnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZp
c2lvbiddKQogCi0gICAgICAgICAgICByZXR1cm4gd2FpdGluZ0Zvckludm9jYXRpb25Qcm9taXNl
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JJbnZvY2F0aW9uUHJvbWlz
ZS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1YnByb2Nl
c3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnc3ViQ29tbWl0Jywg
J2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkQzMiddKTsKICAgICAgICAgICAgICAgICBNb2Nr
U3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZWplY3QoJ0ZhaWxlZCBnZXR0aW5nIHN1Yi1jb21t
aXQnKTsKQEAgLTE5NCwxMCArMTk0LDEwIEBAIGRlc2NyaWJlKCdPU0J1aWxkRmV0Y2hlcicsIGZ1
bmN0aW9uKCkgewogICAgICAgICBpdCgnc2hvdWxkIGZhaWwgaWYgZW50cmllcyBpbiBzdWItY29t
bWl0cyBkb2VzIG5vdCBjb250YWluIHJldmlzaW9uJywgKCkgPT4gewogICAgICAgICAgICAgY29u
c3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICBjb25zdCBmZXRjaHRlciA9
IG5ldyBPU0J1aWxkRmV0Y2hlcihudWxsLCBudWxsLCBudWxsLCBNb2NrU3VicHJvY2VzcywgbG9n
Z2VyKTsKLSAgICAgICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZSA9IE1v
Y2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICBjb25zdCB3
YWl0Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlv
bigpOwogICAgICAgICAgICAgY29uc3QgYWRkU3ViQ29tbWl0UHJvbWlzZSA9IGZldGNodGVyLl9h
ZGRTdWJDb21taXRzRm9yQnVpbGQoW29zeENvbW1pdF0sIFsnc3ViQ29tbWl0JywgJ2ZvcicsICdy
ZXZpc2lvbiddKQogCi0gICAgICAgICAgICByZXR1cm4gd2FpdGluZ0Zvckludm9jYXRpb25Qcm9t
aXNlLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JJbnZvY2F0aW9uUHJv
bWlzZS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1YnBy
b2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnc3ViQ29tbWl0
JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkQzMiddKTsKICAgICAgICAgICAgICAgICBN
b2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKCd7IldlYktpdCI6eyJSYW5kb21L
ZXkiOiAiUmFuZG9tVmFsdWUifX0nKTsKQEAgLTIxMyw2ICsyMTMsNyBAQCBkZXNjcmliZSgnT1NC
dWlsZEZldGNoZXInLCBmdW5jdGlvbigpIHsKICAgICB9KQogCiAgICAgZGVzY3JpYmUoJ09TQnVp
bGRGZXRjaGVyLmZldGNoQW5kUmVwb3J0TmV3QnVpbGRzJywgKCkgPT4geworICAgICAgICBjb25z
dCBpbnZvY2F0aW9ucyA9IE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zOwogCiAgICAgICAgIGJl
Zm9yZUVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgVGVzdFNlcnZlci5kYXRhYmFzZSgp
LmNvbm5lY3Qoe2tlZXBBbGl2ZTogdHJ1ZX0pOwpAQCAtMjIyLDcgKzIyMyw2IEBAIGRlc2NyaWJl
KCdPU0J1aWxkRmV0Y2hlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgVGVzdFNlcnZlci5k
YXRhYmFzZSgpLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgfSk7CiAKLQogICAgICAgICBpdCgnc2hv
dWxkIHJlcG9ydCBhbGwgYnVpbGQgY29tbWl0cyB3aXRoIHN1Yi1jb21taXRzJywgKCkgPT4gewog
ICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICBj
b25zdCBmZXRjaHRlciA9IG5ldyBPU0J1aWxkRmV0Y2hlcihjb25maWcsIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCksIHNsYXZlQXV0aCwgTW9ja1N1YnByb2Nlc3MsIGxvZ2dlcik7CkBAIC0yNTAsNjYg
KzI1MCw2MyBAQCBkZXNjcmliZSgnT1NCdWlsZEZldGNoZXInLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9u
J10sICdTaWVycmExNkUzM2cnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
Wydjb21taXRzJ11bMF1bJ29yZGVyJ10sIDE2MDQwMDMzMDcpOwotICAgICAgICAgICAgICAgIGNv
bnN0IHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZSA9IE1vY2tTdWJwcm9jZXNzLndhaXRpbmdG
b3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgY29uc3Qgd2FpdEZvckludm9jYXRpb25Q
cm9taXNlID0gTW9ja1N1YnByb2Nlc3Mud2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAg
ICAgICBmZXRjaEF2YWlsYWJsZUJ1aWxkc1Byb21pc2UgPSBmZXRjaHRlci5fZmV0Y2hBdmFpbGFi
bGVCdWlsZHMoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gd2FpdGluZ0Zvckludm9jYXRpb25Q
cm9taXNlOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9ySW52b2NhdGlvblByb21pc2U7
CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdhbGwgb3N4IDE2RHh4
IGJ1aWxkcyddKTsKKyAgICAgICAgICAgICAgICBpbnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxu
U2llcnJhMTZENjhcblNpZXJyYTE2RDY5XG4nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMu
c29ydCgoaW52b2NhdGlvbiwgYW50b2hlckludm9jYXRpb24pID0+IGludm9jYXRpb25bJ2NvbW1h
bmQnXSA+IGFudG9oZXJJbnZvY2F0aW9uWydjb21tYW5kJ10pOwotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5sZW5ndGgsIDIpOwotICAgICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0u
Y29tbWFuZCwgWydsaXN0JywgJ2FsbCBvc3ggMTZEeHggYnVpbGRzJ10pOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0uY29tbWFu
ZCwgWydsaXN0JywgJ2FsbCBvc3ggMTZFeHggYnVpbGRzJ10pOwotICAgICAgICAgICAgICAgIE1v
Y2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLnJlc29sdmUoJ1xuXG5TaWVycmExNkQ2OFxuU2ll
cnJhMTZENjlcbicpOwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25z
WzFdLnJlc29sdmUoJ1xuXG5TaWVycmExNkUzMlxuU2llcnJhMTZFMzNcblNpZXJyYTE2RTMzaFxu
U2llcnJhMTZFMzQnKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5yZXNldCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlv
bigpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0aW9ucy5sZW5ndGgsIDEp
OworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2NhdGlvbnNbMF0uY29tbWFu
ZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJhMTZENjkn
XSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZShKU09OLnN0cmluZ2lm
eShzdWJDb21taXRXaXRoV2ViS2l0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJw
cm9jZXNzLnJlc2V0QW5kV2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIH0pLnRoZW4o
KCkgPT4gewotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLnNvcnQo
KGludm9jYXRpb24sIGFudG9oZXJJbnZvY2F0aW9uKSA9PiBpbnZvY2F0aW9uWydjb21tYW5kJ10g
PiBhbnRvaGVySW52b2NhdGlvblsnY29tbWFuZCddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1h
bmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RDY5
J10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52
b2NhdGlvbnNbMV0uY29tbWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNp
b24nLCAnU2llcnJhMTZFMzNoJ10pOwotCi0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3Mu
aW52b2NhdGlvbnNbMF0ucmVzb2x2ZShKU09OLnN0cmluZ2lmeShzdWJDb21taXRXaXRoV2ViS2l0
KSk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0ucmVzb2x2
ZShKU09OLnN0cmluZ2lmeShhbm90aGVyU3ViQ29tbWl0V2l0aFdlYktpdCkpOwotICAgICAgICAg
ICAgICAgIE1vY2tTdWJwcm9jZXNzLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1v
Y2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkV4
eCBidWlsZHMnXSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZSgnXG5c
blNpZXJyYTE2RTMyXG5TaWVycmExNkUzM1xuU2llcnJhMTZFMzNoXG5TaWVycmExNkUzNCcpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZv
Y2F0aW9uKCk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBd
LmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJy
YTE2RTM0J10pOwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBd
LnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXRBbmRKYXZh
U2NyaXB0Q29yZSkpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0aW9ucy5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2NhdGlvbnNb
MF0uY29tbWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2ll
cnJhMTZFMzNoJ10pOworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoSlNP
Ti5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbigpOworICAg
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGlu
dm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChp
bnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZp
c2lvbicsICdTaWVycmExNkUzNCddKTsKKyAgICAgICAgICAgICAgICBpbnZvY2F0aW9uc1swXS5y
ZXNvbHZlKEpTT04uc3RyaW5naWZ5KGFub3RoZXJTdWJDb21taXRXaXRoV2ViS2l0QW5kSmF2YVNj
cmlwdENvcmUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hBdmFpbGFibGVCdWlsZHNQ
cm9taXNlOwogICAgICAgICAgICAgfSkudGhlbigocmVzdWx0cykgPT4gewogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAgTW9j
a1N1YnByb2Nlc3MucmVzZXQoKTsKICAgICAgICAgICAgICAgICBmZXRjaEFuZFJlcG9ydFByb21p
c2UgPSBmZXRjaHRlci5mZXRjaEFuZFJlcG9ydE5ld0J1aWxkcygpOwotICAgICAgICAgICAgICAg
IHJldHVybiBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlvbigpOworICAgICAgICAg
ICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9j
ZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkR4eCBidWlsZHMn
XSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2
RDY4XG5TaWVycmExNkQ2OVxuJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9j
ZXNzLnJlc2V0QW5kV2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLnNvcnQoKGlu
dm9jYXRpb24sIGFudG9oZXJJbnZvY2F0aW9uKSA9PiBpbnZvY2F0aW9uWydjb21tYW5kJ10gPiBh
bnRvaGVySW52b2NhdGlvblsnY29tbWFuZCddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQs
IFsnbGlzdCcsICdhbGwgb3N4IDE2RHh4IGJ1aWxkcyddKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzFdLmNvbW1hbmQsIFsnbGlz
dCcsICdhbGwgb3N4IDE2RXh4IGJ1aWxkcyddKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJv
Y2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJhMTZENjhcblNpZXJyYTE2RDY5
XG4nKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sxXS5yZXNv
bHZlKCdcblxuU2llcnJhMTZFMzJcblNpZXJyYTE2RTMzXG5TaWVycmExNkUzM2hcblNpZXJyYTE2
RTM0Jyk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MucmVzZXQoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9jYXRpb24oKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlz
dCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RDY5J10pOworICAg
ICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoc3ViQ29t
bWl0V2l0aFdlYktpdCkpOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5y
ZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9uKCk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5zb3J0KChpbnZvY2F0
aW9uLCBhbnRvaGVySW52b2NhdGlvbikgPT4gaW52b2NhdGlvblsnY29tbWFuZCddID4gYW50b2hl
ckludm9jYXRpb25bJ2NvbW1hbmQnXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tTdWJwcm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xp
c3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkQ2OSddKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25z
WzFdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1Np
ZXJyYTE2RTMzaCddKTsKLQotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRp
b25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoc3ViQ29tbWl0V2l0aFdlYktpdCkpOwotICAg
ICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzFdLnJlc29sdmUoSlNPTi5z
dHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsKLQotICAgICAgICAgICAgICAg
IE1vY2tTdWJwcm9jZXNzLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJw
cm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkV4eCBidWls
ZHMnXSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJy
YTE2RTMyXG5TaWVycmExNkUzM1xuU2llcnJhMTZFMzNoXG5TaWVycmExNkUzNCcpOworICAgICAg
ICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9u
KCk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAg
ICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKEpTT04uc3RyaW5naWZ5
KGFub3RoZXJTdWJDb21taXRXaXRoV2ViS2l0QW5kSmF2YVNjcmlwdENvcmUpKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNv
bW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2
RTM0J10pOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0aW9ucy5sZW5ndGgs
IDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2NhdGlvbnNbMF0uY29t
bWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJhMTZF
MzNoJ10pOworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJp
bmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbigpOworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGludm9jYXRp
b25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZShK
U09OLnN0cmluZ2lmeShhbm90aGVyU3ViQ29tbWl0V2l0aFdlYktpdEFuZEphdmFTY3JpcHRDb3Jl
KSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChpbnZvY2F0aW9uc1swXS5jb21t
YW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkUz
NCddKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaEFuZFJlcG9ydFByb21pc2U7CiAg
ICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKQEAgLTM4NiwxOCArMzgzLDE4IEBAIGRl
c2NyaWJlKCdPU0J1aWxkRmV0Y2hlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSwgJ1NpZXJyYTE2
RTMzZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXVsw
XVsnb3JkZXInXSwgMTYwNDAwMzMwNyk7Ci0gICAgICAgICAgICAgICAgY29uc3Qgd2FpdGluZ0Zv
ckludm9jYXRpb25Qcm9taXNlID0gTW9ja1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9jYXRpb24o
KTsKKyAgICAgICAgICAgICAgICBjb25zdCB3YWl0Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2Nr
U3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAgICAgICAgICAgIGZldGNoQW5k
UmVwb3J0UHJvbWlzZSA9IGZldGNodGVyLmZldGNoQW5kUmVwb3J0TmV3QnVpbGRzKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gd2FpdEZvckludm9jYXRpb25Qcm9taXNlOwogICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLndhaXRp
bmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGludm9jYXRp
b25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChpbnZvY2F0
aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkR4eCBidWlsZHMnXSk7CisgICAg
ICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RDY4XG5TaWVy
cmExNkQ2OVxuJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLnJlc2V0
QW5kV2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAg
ICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLnNvcnQoKGludm9jYXRpb24s
IGFudG9oZXJJbnZvY2F0aW9uKSA9PiBpbnZvY2F0aW9uWydjb21tYW5kJ10gPiBhbnRvaGVySW52
b2NhdGlvblsnY29tbWFuZCddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1
YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcs
ICdhbGwgb3N4IDE2RHh4IGJ1aWxkcyddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzFdLmNvbW1hbmQsIFsnbGlzdCcsICdhbGwg
b3N4IDE2RXh4IGJ1aWxkcyddKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZv
Y2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJhMTZENjhcblNpZXJyYTE2RDY5XG4nKTsKLSAg
ICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sxXS5yZXNvbHZlKCdcblxu
U2llcnJhMTZFMzJcblNpZXJyYTE2RTMzXG5TaWVycmExNkUzM2hcblNpZXJyYTE2RTM0Jyk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xp
c3QnLCAnYWxsIG9zeCAxNkV4eCBidWlsZHMnXSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlv
bnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RTMyXG5TaWVycmExNkUzM1xuU2llcnJhMTZFMzNo
XG5TaWVycmExNkUzNCcpOwogICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaEFuZFJlcG9ydFBy
b21pc2U7CiAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CkBAIC00NzEsMzUgKzQ2OCwz
MiBAQCBkZXNjcmliZSgnT1NCdWlsZEZldGNoZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10sICdTaWVy
cmExNkUzM2cnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRz
J11bMF1bJ29yZGVyJ10sIDE2MDQwMDMzMDcpOwogCi0gICAgICAgICAgICAgICAgY29uc3Qgd2Fp
dGluZ0Zvckludm9jYXRpb25Qcm9taXNlID0gTW9ja1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9j
YXRpb24oKTsKKyAgICAgICAgICAgICAgICBjb25zdCB3YWl0Rm9ySW52b2NhdGlvblByb21pc2Ug
PSBNb2NrU3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAgICAgICAgICAgIGZl
dGNoQW5kUmVwb3J0UHJvbWlzZSA9IGZldGNodGVyLmZldGNoQW5kUmVwb3J0TmV3QnVpbGRzKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckludm9jYXRpb25Qcm9taXNlOwogICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNz
LndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGlu
dm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChp
bnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkR4eCBidWlsZHMnXSk7
CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RDY4
XG5TaWVycmExNkQ2OVxuJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNz
LnJlc2V0QW5kV2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLnNvcnQoKGludm9j
YXRpb24sIGFudG9oZXJJbnZvY2F0aW9uKSA9PiBpbnZvY2F0aW9uWydjb21tYW5kJ10gPiBhbnRv
aGVySW52b2NhdGlvblsnY29tbWFuZCddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsn
bGlzdCcsICdhbGwgb3N4IDE2RHh4IGJ1aWxkcyddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzFdLmNvbW1hbmQsIFsnbGlzdCcs
ICdhbGwgb3N4IDE2RXh4IGJ1aWxkcyddKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vz
cy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJhMTZENjhcblNpZXJyYTE2RDY5XG4n
KTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sxXS5yZXNvbHZl
KCdcblxuU2llcnJhMTZFMzJcblNpZXJyYTE2RTMzXG5TaWVycmExNkUzM2hcblNpZXJyYTE2RTM0
Jyk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MucmVzZXQoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9jYXRpb24oKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmlu
dm9jYXRpb25zLnNvcnQoKGludm9jYXRpb24sIGFudG9oZXJJbnZvY2F0aW9uKSA9PiBpbnZvY2F0
aW9uWydjb21tYW5kJ10gPiBhbnRvaGVySW52b2NhdGlvblsnY29tbWFuZCddKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAy
KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9j
YXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9u
JywgJ1NpZXJyYTE2RDY5J10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9j
a1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0uY29tbWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcs
ICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJhMTZFMzNoJ10pOwotCisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0
JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkQ2OSddKTsKICAgICAgICAgICAgICAgICBN
b2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKEpTT04uc3RyaW5naWZ5KHN1YkNv
bW1pdFdpdGhXZWJLaXQpKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0
aW9uc1sxXS5yZXNvbHZlKEpTT04uc3RyaW5naWZ5KGFub3RoZXJTdWJDb21taXRXaXRoV2ViS2l0
KSk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MucmVzZXQoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9jYXRpb24oKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlv
bigpOwogICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMSk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5jb21t
YW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkUz
NCddKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZWpl
Y3QoJ0NvbW1hbmQgZmFpbGVkJyk7Ci0KKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW52
b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGlu
dm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdhbGwgb3N4IDE2RXh4IGJ1aWxkcyddKTsK
KyAgICAgICAgICAgICAgICBpbnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJhMTZFMzJc
blNpZXJyYTE2RTMzXG5TaWVycmExNkUzM2hcblNpZXJyYTE2RTM0Jyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLnJlc2V0QW5kV2FpdEZvckludm9jYXRpb24oKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAn
cmV2aXNpb24nLCAnU2llcnJhMTZFMzNoJ10pOworICAgICAgICAgICAgICAgIGludm9jYXRpb25z
WzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52
b2NhdGlvbigpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0
JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkUzNCddKTsKKyAgICAgICAgICAgICAgICBp
bnZvY2F0aW9uc1swXS5yZWplY3QoJ0NvbW1hbmQgZmFpbGVkJyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZldGNoQW5kUmVwb3J0UHJvbWlzZS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKICAgICAgICAg
ICAgICAgICB9LCAoZXJyb3Jfb3V0cHV0KSA9PiB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvanMvb3MtYnVpbGQtZmV0Y2hlci5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9qcy9vcy1idWlsZC1mZXRjaGVyLmpzCmluZGV4IDIyNTZlMmUyOGI0
MzFlMWVkYjRiMzU0MTEyM2Q4ODc0M2QxODk0YzMuLjBlYjJkYzNkMmI5Y2NlYmJiOGUyMjdlMDM0
MWZhNTgyNjc4MGY2ZTEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy9vcy1idWlsZC1mZXRjaGVyLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9vcy1idWlsZC1mZXRjaGVyLmpzCkBAIC0yLDYgKzIsMTQgQEAKIAogbGV0IGFzc2Vy
dCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwogCitmdW5jdGlvbiBtYXBJblNlcmlhbFByb21pc2VDaGFp
bihsaXN0LCBjYWxsYmFjaykKK3sKKyAgICBjb25zdCByZXN1bHRzID0gW107CisgICAgcmV0dXJu
IGxpc3QucmVkdWNlKChjaGFpbmVkUHJvbWlzZSwgaXRlbSkgPT4geworICAgICAgICByZXR1cm4g
Y2hhaW5lZFByb21pc2UudGhlbigoKSA9PiBjYWxsYmFjayhpdGVtKSkudGhlbigocmVzdWx0KSA9
PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7CisgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4o
KCkgPT4gcmVzdWx0cyk7Cit9CisKIGNsYXNzIE9TQnVpbGRGZXRjaGVyIHsKIAogICAgIGNvbnN0
cnVjdG9yKG9zQ29uZmlnLCByZW1vdGVBUEksIHNsYXZlQXV0aCwgc3VicHJvY2VzcywgbG9nZ2Vy
KQpAQCAtMTQsOSArMjIsMTUgQEAgY2xhc3MgT1NCdWlsZEZldGNoZXIgewogICAgICAgICB0aGlz
Ll9zdWJwcm9jZXNzID0gc3VicHJvY2VzczsKICAgICB9CiAKKyAgICBzdGF0aWMgZmV0Y2hBbmRS
ZXBvcnRBbGxJbk9yZGVyKGZldGNoZXJMaXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1hcElu
U2VyaWFsUHJvbWlzZUNoYWluKGZldGNoZXJMaXN0LCAoZmV0Y2hlcikgPT4gZmV0Y2hlci5mZXRj
aEFuZFJlcG9ydE5ld0J1aWxkcygpKTsKKyAgICB9CisKICAgICBmZXRjaEFuZFJlcG9ydE5ld0J1
aWxkcygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hBdmFpbGFibGVCdWlsZHMo
KS50aGVuKChyZXN1bHRzKSA9PnsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoQXZhaWxhYmxl
QnVpbGRzKCkudGhlbigocmVzdWx0cykgPT4geworICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmxv
ZyhgU3VibWl0dGluZyAke3Jlc3VsdHMubGVuZ3RofSBidWlsZHMgZm9yICR7dGhpcy5fb3NDb25m
aWdbJ25hbWUnXX1gKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRDb21taXRzKHJl
c3VsdHMpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0yNywyNCArNDEsMjkgQEAgY2xhc3MgT1NC
dWlsZEZldGNoZXIgewogICAgICAgICBjb25zdCByZXBvc2l0b3J5TmFtZSA9IGNvbmZpZ1snbmFt
ZSddOwogICAgICAgICBsZXQgY3VzdG9tQ29tbWFuZHMgPSBjb25maWdbJ2N1c3RvbUNvbW1hbmRz
J107CiAKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGN1c3RvbUNvbW1hbmRzLm1hcCgoY29t
bWFuZCkgPT4geworICAgICAgICByZXR1cm4gbWFwSW5TZXJpYWxQcm9taXNlQ2hhaW4oY3VzdG9t
Q29tbWFuZHMsIChjb21tYW5kKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQoY29tbWFuZFsnbWlu
UmV2aXNpb24nXSk7CiAgICAgICAgICAgICBhc3NlcnQoY29tbWFuZFsnbWF4UmV2aXNpb24nXSk7
CiAgICAgICAgICAgICBjb25zdCBtaW5SZXZpc2lvbk9yZGVyID0gdGhpcy5fY29tcHV0ZU9yZGVy
KGNvbW1hbmRbJ21pblJldmlzaW9uJ10pOwogICAgICAgICAgICAgY29uc3QgbWF4UmV2aXNpb25P
cmRlciA9IHRoaXMuX2NvbXB1dGVPcmRlcihjb21tYW5kWydtYXhSZXZpc2lvbiddKTsKIAotICAg
ICAgICAgICAgbGV0IGZldGNoQ29tbWl0c1Byb21pc2UgPSB0aGlzLl9yZW1vdGVBUEkuZ2V0SlNP
TldpdGhTdGF0dXMoYC9hcGkvY29tbWl0cy8ke2VzY2FwZShyZXBvc2l0b3J5TmFtZSl9L2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT0ke21pblJldmlzaW9uT3JkZXJ9JnRvPSR7bWF4UmV2aXNpb25PcmRlcn1g
KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHVybCA9IGAvYXBpL2NvbW1p
dHMvJHtlc2NhcGUocmVwb3NpdG9yeU5hbWUpfS9sYXN0LXJlcG9ydGVkP2Zyb209JHttaW5SZXZp
c2lvbk9yZGVyfSZ0bz0ke21heFJldmlzaW9uT3JkZXJ9YDsKKworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3JlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyh1cmwpLnRoZW4oKHJlc3VsdCkgPT4g
ewogICAgICAgICAgICAgICAgIGNvbnN0IG1pbk9yZGVyID0gcmVzdWx0Wydjb21taXRzJ10ubGVu
Z3RoID09IDEgPyBwYXJzZUludChyZXN1bHRbJ2NvbW1pdHMnXVswXVsnb3JkZXInXSkgOiAwOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21taXRzRm9yQXZhaWxhYmxlQnVpbGRzKHJl
cG9zaXRvcnlOYW1lLCBjb21tYW5kWydjb21tYW5kJ10sIGNvbW1hbmRbJ2xpbmVzVG9JZ25vcmUn
XSwgbWluT3JkZXIpOwotICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIH0pLnRoZW4oKGNvbW1p
dHMpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9ICduYW1lJyBpbiBjb21tYW5k
ID8gYCIke2NvbW1hbmRbJ25hbWUnXX0iYCA6IGAiY29tbWFuZFsnbWluUmV2aXNpb24nXSIgdG8g
ImNvbW1hbmRbJ21heFJldmlzaW9uJ10iYDsKKyAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIu
bG9nKGBGb3VuZCAke2NvbW1pdHMubGVuZ3RofSBidWlsZHMgZm9yICR7bGFiZWx9YCk7CiAKLSAg
ICAgICAgICAgIGlmICgnc3ViQ29tbWl0Q29tbWFuZCcgaW4gY29tbWFuZCkKLSAgICAgICAgICAg
ICAgICBmZXRjaENvbW1pdHNQcm9taXNlID0gZmV0Y2hDb21taXRzUHJvbWlzZS50aGVuKChjb21t
aXRzKSA9PiB0aGlzLl9hZGRTdWJDb21taXRzRm9yQnVpbGQoY29tbWl0cywgY29tbWFuZFsnc3Vi
Q29tbWl0Q29tbWFuZCddKSk7CisgICAgICAgICAgICAgICAgaWYgKCdzdWJDb21taXRDb21tYW5k
JyBpbiBjb21tYW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coYFJl
c29sdmluZyBzdWJjb21taXRzIGZvciAiJHtsYWJlbH0iYCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9hZGRTdWJDb21taXRzRm9yQnVpbGQoY29tbWl0cywgY29tbWFuZFsnc3Vi
Q29tbWl0Q29tbWFuZCddKTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVy
biBmZXRjaENvbW1pdHNQcm9taXNlOwotICAgICAgICB9KSkudGhlbihyZXN1bHRzID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCByZXN1bHRz
KTsKLSAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdHM7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSkudGhlbigocmVzdWx0cykgPT4gW10uY29uY2F0KC4uLnJlc3Vs
dHMpKTsKICAgICB9CiAKICAgICBfY29tcHV0ZU9yZGVyKHJldmlzaW9uKQpAQCAtNjUsMjcgKzg0
LDI3IEBAIGNsYXNzIE9TQnVpbGRGZXRjaGVyIHsKICAgICAgICAgICAgIGxldCBsaW5lcyA9IG91
dHB1dC5zcGxpdCgnXG4nKTsKICAgICAgICAgICAgIGlmIChsaW5lc1RvSWdub3JlKXsKICAgICAg
ICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAobGluZXNUb0lnbm9yZSk7Ci0gICAg
ICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoZnVuY3Rpb24obGluZSkge3JldHVybiAh
cmVnZXguZXhlYyhsaW5lKTt9KTsKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGxpbmVzLmZpbHRl
cigobGluZSkgPT4gIXJlZ2V4LmV4ZWMobGluZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIGxpbmVzLm1hcChyZXZpc2lvbiA9PiAoe3JlcG9zaXRvcnksIHJldmlzaW9uLCAn
b3JkZXInOiB0aGlzLl9jb21wdXRlT3JkZXIocmV2aXNpb24pfSkpCi0gICAgICAgICAgICAgICAg
LmZpbHRlcihjb21taXQgPT4gY29tbWl0WydvcmRlciddID4gbWluT3JkZXIpOworICAgICAgICAg
ICAgcmV0dXJuIGxpbmVzLm1hcCgocmV2aXNpb24pID0+ICh7cmVwb3NpdG9yeSwgcmV2aXNpb24s
ICdvcmRlcic6IHRoaXMuX2NvbXB1dGVPcmRlcihyZXZpc2lvbil9KSkKKyAgICAgICAgICAgICAg
ICAuZmlsdGVyKChjb21taXQpID0+IGNvbW1pdFsnb3JkZXInXSA+IG1pbk9yZGVyKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCiAgICAgX2FkZFN1YkNvbW1pdHNGb3JCdWlsZChjb21taXRzLCBjb21t
YW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbW1pdHMucmVkdWNlKChwcm9taXNlLCBjb21t
aXQpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJwcm9jZXNzLmV4ZWN1dGUoY29tbWFuZC5jb25jYXQo
Y29tbWl0WydyZXZpc2lvbiddKSk7Ci0gICAgICAgICAgICB9KS50aGVuKChzdWJDb21taXRPdXRw
dXQpID0+IHsKKyAgICAgICAgcmV0dXJuIG1hcEluU2VyaWFsUHJvbWlzZUNoYWluKGNvbW1pdHMs
IChjb21taXQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJwcm9jZXNzLmV4ZWN1
dGUoY29tbWFuZC5jb25jYXQoY29tbWl0WydyZXZpc2lvbiddKSkudGhlbigoc3ViQ29tbWl0T3V0
cHV0KSA9PiB7CiAgICAgICAgICAgICAgICAgY29uc3Qgc3ViQ29tbWl0cyA9IEpTT04ucGFyc2Uo
c3ViQ29tbWl0T3V0cHV0KTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5TmFt
ZSBpbiBzdWJDb21taXRzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YkNvbW1pdCA9
IHN1YkNvbW1pdHNbcmVwb3NpdG9yeU5hbWVdOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQo
c3ViQ29tbWl0WydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChPYmplY3Qua2V5cyhzdWJDb21taXQpLCBbJ3JldmlzaW9uJ10pOworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQodHlwZW9mKHN1YkNvbW1pdFsncmV2aXNpb24nXSkgPT0gJ3N0cmluZycp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb21taXRbJ3N1YkNvbW1pdHMn
XSA9IHN1YkNvbW1pdHM7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdDsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSkudGhlbigoKSA9PiBjb21taXRz
KTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgX3N1Ym1pdENvbW1pdHMoY29tbWl0cykKQEAg
LTk0LDUgKzExMyw2IEBAIGNsYXNzIE9TQnVpbGRGZXRjaGVyIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3JlbW90ZUFQSS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywg
Y29tbWl0c1RvUmVwb3J0KTsKICAgICB9CiB9CisKIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRl
ZmluZWQnKQogICAgIG1vZHVsZS5leHBvcnRzLk9TQnVpbGRGZXRjaGVyID0gT1NCdWlsZEZldGNo
ZXI7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvc3VicHJv
Y2Vzcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9zdWJwcm9jZXNzLmpz
CmluZGV4IDhlNWFiOWM4NjE1NDJiMmI2MDU1ZmIxZjViMmE0ZmJlY2ZmODlhMjIuLjRlZGYwYTZj
ZGY4YmIwMTI3OWJlODg1YzdhYTI3OWMyMTNhZmU2YzQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy90b29scy9qcy9zdWJwcm9jZXNzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9qcy9zdWJwcm9jZXNzLmpzCkBAIC0xLDEwICsxLDEwIEBACiAndXNl
IHN0cmljdCc7Ci1jb25zdCBjaGlsZFByb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyku
Q2hpbGRQcm9jZXNzOworY29uc3QgY2hpbGRQcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2Vz
cycpOwogCiBjbGFzcyBTdWJwcm9jZXNzIHsKICAgICBleGVjdXRlKGNvbW1hbmQpIHsKICAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAg
IHRoaXMuX2NoaWxkUHJvY2Vzcy5leGVjRmlsZShjb21tYW5kWzBdLCBjb21tYW5kLnNsaWNlKDEp
LCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7CisgICAgICAgICAgICBjaGlsZFByb2Nlc3Mu
ZXhlY0ZpbGUoY29tbWFuZFswXSwgY29tbWFuZC5zbGljZSgxKSwgKGVycm9yLCBzdGRvdXQsIHN0
ZGVycikgPT4gewogICAgICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICAgICAg
ICAgcmVqZWN0KHN0ZGVycik7CiAgICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3B1bGwtb3MtdmVyc2lvbnMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcHVsbC1vcy12ZXJzaW9ucy5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDk5OTEwYTY3Yjk4NmJjNzI2MTViYTVmYmU0MzgyN2NhZGJhNDk1
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcHVsbC1vcy12ZXJzaW9ucy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDQ2ICswLDAgQEAKLSMhL3Vzci9sb2NhbC9iaW4vbm9kZQotJ3VzZSBzdHJpY3QnOwot
Ci0KLWxldCBPU0J1aWxkRmV0Y2hlciA9IHJlcXVpcmUoJy4vanMvb3MtYnVpbGQtZmV0Y2hlci5q
cycpLk9TQnVpbGRGZXRjaGVyOwotbGV0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3Rl
LmpzJykuUmVtb3RlQVBJOwotbGV0IFN1YnByb2Nlc3MgPSByZXF1aXJlKCcuL2pzL3N1YnByb2Nl
c3MuanMnKS5TdWJwcm9jZXNzOwotbGV0IGZzID0gcmVxdWlyZSgnZnMnKTsKLWxldCBwYXJzZUFy
Z3VtZW50cyA9IHJlcXVpcmUoJy4vanMvcGFyc2UtYXJndW1lbnRzLmpzJykucGFyc2VBcmd1bWVu
dHM7Ci0KLWZ1bmN0aW9uIG1haW4oYXJndikKLXsKLSAgICBsZXQgb3B0aW9ucyA9IHBhcnNlQXJn
dW1lbnRzKGFyZ3YsIFsKLSAgICAgICAge25hbWU6ICctLW9zLWNvbmZpZy1qc29uJywgcmVxdWly
ZWQ6IHRydWV9LAotICAgICAgICB7bmFtZTogJy0tc2VydmVyLWNvbmZpZy1qc29uJywgcmVxdWly
ZWQ6IHRydWV9LAotICAgICAgICB7bmFtZTogJy0tc2Vjb25kcy10by1zbGVlcCcsIHR5cGU6IHBh
cnNlRmxvYXQsIGRlZmF1bHQ6IDQzMjAwfSwKLSAgICBdKTsKLSAgICBpZiAoIW9wdGlvbnMpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHN5bmNMb29wKG9wdGlvbnMpOwotfQotCi1mdW5jdGlvbiBz
eW5jTG9vcChvcHRpb25zKQotewotICAgIGxldCBvc0NvbmZpZ0xpc3QgPSBKU09OLnBhcnNlKGZz
LnJlYWRGaWxlU3luYyhvcHRpb25zWyctLW9zLWNvbmZpZy1qc29uJ10sICd1dGY4JykpOwotICAg
IGxldCBzZXJ2ZXJDb25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyct
LXNlcnZlci1jb25maWctanNvbiddLCAndXRmOCcpKTsKLQotICAgIGNvbnN0IHJlbW90ZUFQSSA9
IG5ldyBSZW1vdGVBUEkoc2VydmVyQ29uZmlnLnNlcnZlcik7Ci0KLSAgICBQcm9taXNlLmFsbChv
c0NvbmZpZ0xpc3QubWFwKG9zQ29uZmlnID0+IG5ldyBPU0J1aWxkRmV0Y2hlcihvc0NvbmZpZywg
cmVtb3RlQVBJLCBzZXJ2ZXJDb25maWcuc2xhdmUsIG5ldyBTdWJwcm9jZXNzLCBjb25zb2xlKSkp
LnRoZW4oKGZldGNoZXJzKSA9PiB7Ci0gICAgICAgIHJldHVybiBmZXRjaGVycy5yZWR1Y2UoKHBy
b21pc2UsIGZldGNoZXIpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCkg
PT4gZmV0Y2hlci5mZXRjaEFuZFJlcG9ydE5ld0J1aWxkcygpKTsKLSAgICAgICAgfSwgUHJvbWlz
ZS5yZXNvbHZlKCkpOwotICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewotICAgICAgICBjb25zb2xl
LmVycm9yKGVycm9yKTsKLSAgICAgICAgaWYgKHR5cGVvZihlcnJvci5zdGFjaykgPT0gJ3N0cmlu
ZycpIHsKLSAgICAgICAgICAgIGZvciAobGV0IGxpbmUgb2YgZXJyb3Iuc3RhY2suc3BsaXQoJ1xu
JykpCi0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihsaW5lKTsKLSAgICAgICAgfQotICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICBzZXRUaW1lb3V0KHN5bmNMb29wLmJpbmQo
Z2xvYmFsLCBvcHRpb25zKSwgb3B0aW9uc1snLS1zZWNvbmRzLXRvLXNsZWVwJ10gKiAxMDAwKTsK
LSAgICB9KTsKLX0KLQotbWFpbihwcm9jZXNzLmFyZ3YpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtb3MtdmVyc2lvbnMuanMgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvc3luYy1vcy12ZXJzaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2Y0YTBh
N2QzNDM4MTk0MzA3NmI4M2VjNDhkNWJjOTBiNDgzNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtb3MtdmVyc2lvbnMuanMKQEAgLTAsMCAr
MSw0NSBAQAorIyEvdXNyL2xvY2FsL2Jpbi9ub2RlCisndXNlIHN0cmljdCc7CisKKworbGV0IE9T
QnVpbGRGZXRjaGVyID0gcmVxdWlyZSgnLi9qcy9vcy1idWlsZC1mZXRjaGVyLmpzJykuT1NCdWls
ZEZldGNoZXI7CitsZXQgUmVtb3RlQVBJID0gcmVxdWlyZSgnLi9qcy9yZW1vdGUuanMnKS5SZW1v
dGVBUEk7CitsZXQgU3VicHJvY2VzcyA9IHJlcXVpcmUoJy4vanMvc3VicHJvY2Vzcy5qcycpLlN1
YnByb2Nlc3M7CitsZXQgZnMgPSByZXF1aXJlKCdmcycpOworbGV0IHBhcnNlQXJndW1lbnRzID0g
cmVxdWlyZSgnLi9qcy9wYXJzZS1hcmd1bWVudHMuanMnKS5wYXJzZUFyZ3VtZW50czsKKworZnVu
Y3Rpb24gbWFpbihhcmd2KQoreworICAgIGxldCBvcHRpb25zID0gcGFyc2VBcmd1bWVudHMoYXJn
diwgWworICAgICAgICB7bmFtZTogJy0tb3MtY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0s
CisgICAgICAgIHtuYW1lOiAnLS1zZXJ2ZXItY29uZmlnLWpzb24nLCByZXF1aXJlZDogdHJ1ZX0s
CisgICAgICAgIHtuYW1lOiAnLS1zZWNvbmRzLXRvLXNsZWVwJywgdHlwZTogcGFyc2VGbG9hdCwg
ZGVmYXVsdDogNDMyMDB9LAorICAgIF0pOworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3luY0xvb3Aob3B0aW9ucyk7Cit9CisKK2Z1bmN0aW9uIHN5bmNMb29wKG9w
dGlvbnMpCit7CisgICAgbGV0IG9zQ29uZmlnTGlzdCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVT
eW5jKG9wdGlvbnNbJy0tb3MtY29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7CisgICAgbGV0IHNlcnZl
ckNvbmZpZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnNbJy0tc2VydmVyLWNv
bmZpZy1qc29uJ10sICd1dGY4JykpOworCisgICAgY29uc3QgcmVtb3RlQVBJID0gbmV3IFJlbW90
ZUFQSShzZXJ2ZXJDb25maWcuc2VydmVyKTsKKworICAgIGNvbnN0IGZldGNoZXJzID0gb3NDb25m
aWdMaXN0Lm1hcCgob3NDb25maWcpID0+IG5ldyBPU0J1aWxkRmV0Y2hlcihvc0NvbmZpZywgcmVt
b3RlQVBJLCBzZXJ2ZXJDb25maWcuc2xhdmUsIG5ldyBTdWJwcm9jZXNzLCBjb25zb2xlKSk7Cisg
ICAgT1NCdWlsZEZldGNoZXIuZmV0Y2hBbmRSZXBvcnRBbGxJbk9yZGVyKGZldGNoZXJzKS5jYXRj
aCgoZXJyb3IpID0+IHsKKyAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICAgIGlm
ICh0eXBlb2YoZXJyb3Iuc3RhY2spID09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICBmb3IgKGxl
dCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KCdcbicpKQorICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IobGluZSk7CisgICAgICAgIH0KKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAg
Y29uc3Qgc2Vjb25kc1RvU2xlZXAgPSBvcHRpb25zWyctLXNlY29uZHMtdG8tc2xlZXAnXTsKKyAg
ICAgICAgY29uc29sZS5sb2coYFNsZWVwaW5nIGZvciAke01hdGguZmxvb3Ioc2Vjb25kc1RvU2xl
ZXAgLyAzNjAwKX1oICR7TWF0aC5mbG9vcihzZWNvbmRzVG9TbGVlcCAvIDYwKSAlIDYwfW0gJHtz
ZWNvbmRzVG9TbGVlcCAlIDYwfXNgKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzeW5jTG9v
cChvcHRpb25zKSwgc2Vjb25kc1RvU2xlZXAgKiAxMDAwKTsKKyAgICB9KTsKK30KKworbWFpbihw
cm9jZXNzLmFyZ3YpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQt
dGVzdHMvY29tbWl0LWxvZy10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL2NvbW1pdC1sb2ctdGVzdHMuanMKaW5kZXggODQyNWFiMDU3ZGYwZjNkZTIzNTJiYmUy
ZjVlNDI4N2RiYzYwNDlhNi4uNDYyMTBkZDQ4Yzc1NThmYTQwODU1NjI2MzVhOWUxMzkyNjFiMzM4
MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0
LWxvZy10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9j
b21taXQtbG9nLXRlc3RzLmpzCkBAIC05MywyNCArOTMsMTggQEAgZGVzY3JpYmUoJ0NvbW1pdExv
ZycsIGZ1bmN0aW9uICgpIHsKICAgICBkZXNjcmliZSgnZGlmZicsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgaXQoJ3Nob3VsZCB1c2UgbGFiZWwoKSBhcyB0aGUgbGFiZWwgdGhlIHByZXZpb3VzIGNv
bW1pdCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbCh3ZWJraXRDb21taXQoKS5kaWZmKCksIHsKLSAgICAgICAgICAgICAgICBmcm9tOiBudWxs
LAotICAgICAgICAgICAgICAgIHRvOiAnMjAwODA1JywKICAgICAgICAgICAgICAgICBsYWJlbDog
J3IyMDA4MDUnLAogICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzIwMDgwNScsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVs
cy53ZWJraXQKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGdpdFdlYktpdENvbW1pdCgpLmRpZmYoKSwgewotICAgICAgICAgICAgICAgIGZyb206IG51bGws
Ci0gICAgICAgICAgICAgICAgdG86ICc2ZjhiMGRiYmRhOTVhNDQwNTAzYjg4ZGIxZGQwM2RhZDNh
N2IwN2ZiJywKICAgICAgICAgICAgICAgICBsYWJlbDogJzZmOGIwZGJiJywKICAgICAgICAgICAg
ICAgICB1cmw6ICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82ZjhiMGRiYmRhOTVh
NDQwNTAzYjg4ZGIxZGQwM2RhZDNhN2IwN2ZiJywKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5
OiBNb2NrTW9kZWxzLndlYmtpdCwKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKG9zeENvbW1pdCgpLmRpZmYoKSwgewotICAgICAgICAgICAgICAgIGZyb206
IG51bGwsCi0gICAgICAgICAgICAgICAgdG86ICcxMC4xMS40IDE1RTY1JywKICAgICAgICAgICAg
ICAgICBsYWJlbDogJzEwLjExLjQgMTVFNjUnLAogICAgICAgICAgICAgICAgIHVybDogJycsCiAg
ICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy5vc3gsCkBAIC0xMTksOSArMTEz
LDcgQEAgZGVzY3JpYmUoJ0NvbW1pdExvZycsIGZ1bmN0aW9uICgpIHsKIAogICAgICAgICBpdCgn
c2hvdWxkIHVzZSBpbmNyZW1lbnQgdGhlIG9sZCBTVk4gcmV2aXNpb24gYnkgMScsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwod2Via2l0Q29tbWl0KCkuZGlmZihv
bGRXZWJLaXRDb21taXQoKSksIHsKLSAgICAgICAgICAgICAgICBmcm9tOiAnMjAwNTc1JywKLSAg
ICAgICAgICAgICAgICB0bzogJzIwMDgwNScsCi0gICAgICAgICAgICAgICAgbGFiZWw6ICdyMjAw
NTc1LXIyMDA4MDUnLAorICAgICAgICAgICAgICAgIGxhYmVsOiAncjIwMDU3NC1yMjAwODA1JywK
ICAgICAgICAgICAgICAgICB1cmw6ICcnLAogICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6IE1v
Y2tNb2RlbHMud2Via2l0CiAgICAgICAgICAgICB9KTsKQEAgLTEyOSw4ICsxMjEsNiBAQCBkZXNj
cmliZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgdHJ1
bmNhdGUgYSBHaXQgaGFzaCBhdCA4dGggY2hhcmFjdGVyJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChnaXRXZWJLaXRDb21taXQoKS5kaWZmKG9sZEdpdFdlYktp
dENvbW1pdCgpKSwgewotICAgICAgICAgICAgICAgIGZyb206ICdmZmRhMTRlNmRiMDc0NmQxMGQw
ZjA1MDkwN2U0YTczMjU4NTFlNTAyJywKLSAgICAgICAgICAgICAgICB0bzogJzZmOGIwZGJiZGE5
NWE0NDA1MDNiODhkYjFkZDAzZGFkM2E3YjA3ZmInLAogICAgICAgICAgICAgICAgIGxhYmVsOiAn
ZmZkYTE0ZTYuLjZmOGIwZGJiJywKICAgICAgICAgICAgICAgICB1cmw6ICcnLAogICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMud2Via2l0CkBAIC0xMzksOCArMTI5LDYgQEAg
ZGVzY3JpYmUoJ0NvbW1pdExvZycsIGZ1bmN0aW9uICgpIHsKIAogICAgICAgICBpdCgnc2hvdWxk
IHN1cnJvdW5kICItIiB3aXRoIHNwYWNlcycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwob3N4Q29tbWl0KCkuZGlmZihvbGRPU1hDb21taXQoKSksIHsKLSAgICAg
ICAgICAgICAgICBmcm9tOiAnMTAuMTEuMyAxNUQyMScsCi0gICAgICAgICAgICAgICAgdG86ICcx
MC4xMS40IDE1RTY1JywKICAgICAgICAgICAgICAgICBsYWJlbDogJzEwLjExLjMgMTVEMjEgLSAx
MC4xMS40IDE1RTY1JywKICAgICAgICAgICAgICAgICB1cmw6ICcnLAogICAgICAgICAgICAgICAg
IHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMub3N4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304970</attachid>
            <date>2017-03-20 17:11:08 -0700</date>
            <delta_ts>2017-03-20 17:20:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169888-20170320171108.patch</filename>
            <type>text/plain</type>
            <size>92241</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDk5CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlOWZmNGM0NzZhNGVmYWVlNmExM2M4Yjg3ZDM3N2I3MGY0MjY0NzBiLi4wOTA4NjRkYTU0
ZWRhNzhmN2ExNThlYTgzMDM3ZTYxNGFmNjlmM2QxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNy0wMy0yMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBDaGFydHMgcGFnZSBzaG93IGFuIGluY29uc2lzdGVudCBs
aXN0IG9mIHJldmlzaW9ucyBmb3IgR2l0IGFuZCBTdWJ2ZXJzaW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4ODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIEdpdCwgQ29tbWl0TG9nVmlld2Vy
IHdhcyBzaG93aW5nIHRoZSBsaXN0IG9mIHJldmlzaW9ucyBpbmNsdWRpbmcgdGhlIHN0YXJ0aW5n
IGhhc2gsCisgICAgICAgIHdoaWNoIHdhcyB0aGUgbGFzdCBkYXRhIHBvaW50J3MgcmV2aXNpb24g
aW5zdGVhZCBvZiBhbGwgcmV2aXNpb25zIGFmdGVyIHRoZSBsYXN0IGRhdGEgcG9pbnQuCisKKyAg
ICAgICAgRml4ZWQgdGhlIGJ1ZyBieSBhbHdheXMgc3BlY2lmeWluZyB0aGUgcmV2aXNpb24gYXQg
dGhlIGxhc3QgZGF0YSBwb2ludCBpbiBib3RoIFN1YnZlcnNpb24KKyAgICAgICAgYW5kIEdpdCBh
bmQgdGhlbiBtYWtpbmcgL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi8/ZnJvbT1YJnRvPVkgZXhj
bHVkZSB0aGUgZmlyc3QgcmV2aXNpb24uCisgICAgICAgIEZvciBjbGFyaXR5LCAiZnJvbSIgYW5k
ICJ0byIgcXVlcnkgcGFyYW1ldGVycyBoYXZlIGJlZW4gcmVuYW1lZCB0byAicHJlY2VkaW5nUmV2
aXNpb24iIGFuZAorICAgICAgICAibGFzdFJldmlzaW9uIiByZXNwZWN0aXZlbHkuCisKKyAgICAg
ICAgV2UgYWxzbyBubyBsb25nZXIgYWRkcyAxIHRvIHRoZSBzdGFydGluZyByZXZpc2lvbiBvZiBT
dWJ2ZXJzaW9uLWxpa2Ugc3RhcnRpbmcgcmV2aXNpb25zLiBlLmcuCisgICAgICAgIHdoZW4gdGhl
IGxhc3QgZGF0YSBwb2ludCB3YXMgYXQgcjEyMzQsIG5ldyBkYXRhIHBvaW50IGlzIGF0IHIxMjUw
LCB0aGUgbGFiZWwgaXMgbm93ICJyMTIzNC1yMTI1MCIKKyAgICAgICAgaW5zdGVhZCBvZiAicjEy
MzUtcjEyNTAiLgorCisgICAgICAgICogYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5n
ZS10ZXN0cy5qczogRml4ZWQgdGhlIHRlc3RzIHNpbmNlIHJldmlzaW9uTGlzdCBubyBsb25nZXIK
KyAgICAgICAgc3BlY2lmaWVzIGZyb20vdG8gcmV2aXNpb25zLgorICAgICAgICAqIGJyb3dzZXIt
dGVzdHMvY29tbWl0LWxvZy12aWV3ZXItdGVzdHMuanM6IEFkZGVkLiBBZGRlZCB0ZXN0cyBmb3Ig
Q29tbWl0TG9nVmlld2VyLgorICAgICAgICAqIGJyb3dzZXItdGVzdHMvaW5kZXguaHRtbDogSW5j
bHVkZSB0aGUgbmV3IHRlc3QuIEFsc28gdXNlIGEgbG9jYWwgY29weSBvZiBtb2NoYS5qcy9jc3Mu
CisKKyAgICAgICAgKiBwdWJsaWMvYXBpL2NvbW1pdHMucGhwOgorICAgICAgICAobWFpbik6IFJl
bmFtZWQgImZyb20iIGFuZCAidG8iIHF1ZXJ5IHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBwdWJs
aWMvaW5jbHVkZS9jb21taXQtbG9nLWZldGNoZXIucGhwOgorICAgICAgICAoQ29tbWl0TG9nRmV0
Y2hlcjo6ZmV0Y2hfYmV0d2Vlbik6IEFkZGVkIGEgY2hlY2sgdGhhdCBjb21taXQgdGltZSBzaG91
bGQgZWl0aGVyIGJlIHNwZWNpZmllZAorICAgICAgICBpbiBib3RoIHJvd3Mgb3Igbm90IHNwZWNp
ZmllZCBpbiBlaXRoZXIuIEFsc28gcmVqZWN0IHdoZW4gYmVmb3JlX2ZpcnN0X3JldmlzaW9uIGlz
IGlkZW50aWNhbAorICAgICAgICBvciBhZnRlciBsYXN0X3JldmlzaW9uIGluc3RlYWQgb2YgcmUt
b3JkZXJpbmcgdGhlbSBzaW5jZSBpdCBubyBsb25nZXIgbWFrZXMgc2Vuc2UgdG8gZG8gc28gd2l0
aAorICAgICAgICBuZXcgcXVlcnkgcGFyYW1ldGVyIG5hbWVzLgorCisgICAgICAgICogcHVibGlj
L3YzL2NvbXBvbmVudHMvYmFzZS5qczoKKyAgICAgICAgKENvbXBvbmVudEJhc2UuX2FkZENvbnRl
bnRUb0VsZW1lbnQpOiBVc2UgQXJyYXkuaXNBcnJheSBpbnN0ZWFkIG9mIGluc3RhbmNlb2YuIEl0
J3MgcmVzaWxpZW50CisgICAgICAgIGFnYWludCByZWFsbSAoZ2xvYmFsIG9iamVjdCkgZGlmZmVy
ZW5jZXMuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2Uu
anM6CisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5fdXBkYXRlQ29tbWl0TG9nVmll
d2VyKTogTm8gbG9uZ2VyIGNhbGxzIGVucXVldWVUb1JlbmRlciBvbiB0aGlzIHNpbmNlCisgICAg
ICAgIENvbW1pdExvZ1ZpZXdlciBkb2VzIHRoYXQgb24gaXRzIG93biBub3cuCisgICAgICAgIChD
aGFydFBhbmVCYXNlLnByb3RvdHlwZS5yZW5kZXIpOiBKdXNlIHVzZSB0aGlzLl9vcGVuUmVwb3Np
dG9yeSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ29tbWl0TG9nVmlld2VyCisgICAgICAgIHRvIHJl
bWVtYmVyIHdoaWNoIHJlcG9zaXRvcnkgaXMgY3VycmVudC4gVGhpcyB3YXMgdGhlIG9ubHkgdXNl
IG9mIGN1cnJlbnRSZXBvc2l0b3J5LgorCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMv
Y29tbWl0LWxvZy12aWV3ZXIuanM6CisgICAgICAgIChDb21taXRMb2dWaWV3ZXIpOgorICAgICAg
ICAoQ29tbWl0TG9nVmlld2VyLnByb3RvdHlwZS5jdXJyZW50UmVwb3NpdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChDb21taXRMb2dWaWV3ZXIucHJvdG90eXBlLnZpZXcpOgorICAgICAgICAoQ29t
bWl0TG9nVmlld2VyLnByb3RvdHlwZS5fZmV0Y2hDb21taXRMb2dzKTogTW9kZXJuaXplZCBhbmQg
ZXh0cmFjdGVkIGZyb20gdmlldyB0byBtYWtlIGl0IGxhenkuCisgICAgICAgIENhbGwgZmV0Y2hG
b3JTaW5nbGVSZXZpc2lvbiB3aGVuIHByZWNlZGluZ1JldmlzaW9uIGlzIG5vdCBzcGVjaWZpZWQg
b3IgaXQncyBpZGVudGljYWwgdG8gbGFzdFJldmlzaW9uCisgICAgICAgIHNpbmNlIHRoZSBnZW5l
cmljIEpTT04gQVBJIG5vIGxvbmdlciBzdXBwb3J0cyBiZWluZyBjYWxsZWQgd2l0aCB0aGUgaWRl
bnRpY2FsIHJldmlzaW9ucy4KKyAgICAgICAgKENvbW1pdExvZ1ZpZXdlci5wcm90b3R5cGUucmVu
ZGVyKTogTW9kZXJuaXplZCAmIHNpbXBsaWZpZWQgdGhlIGNvZGUuCisgICAgICAgIChDb21taXRM
b2dWaWV3ZXIucHJvdG90eXBlLl9yZW5kZXJDb21taXRMaXN0KTogRXh0cmFjdGVkIGZyb20gcmVu
ZGVyIHRvIG1ha2UgaXQgbGF6eS4KKyAgICAgICAgKENvbW1pdExvZ1ZpZXdlci5odG1sVGVtcGxh
dGUpOiBBZGQgSUQgb24gY2FwdGlvbiAmIHRib2R5IHNvIHRoYXQgdGhleSdyZSBtb3JlIGVhc2ls
eSBhZGRyZXNzYWJsZS4KKyAgICAgICAgKENvbW1pdExvZ1ZpZXdlci5jc3NUZW1wbGF0ZSk6CisK
KyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cuanM6CisgICAgICAgIChDb21t
aXRMb2cucHJvdG90eXBlLmRpZmYpOiBObyBsb25nZXIgaW5jbHVkZXMgZnJvbS90byByZXZpc2lv
bnMgaW4gdGhlIHJlc3VsdC4gQWxzbyBhdm9pZCBhZGRpbmcKKyAgICAgICAgMSB0byBhIFN1YnZl
cnNpb24tbGlrZSBzdGFydGluZyByZXZpc2lvbiBmb3IgY3JlYXRpbmcgdGhlIGxhYmVsLiBTZWUg
YWJvdmUuIEJ1dCB3ZSBzdGlsbCBkbyB0aGlzCisgICAgICAgIGZvciBmb3JtaW5nIFVSTHMgZHVl
IHRvIHRoZSB3YXkgdG9vbHMgbGlrZSBUcmFjIHdvcmsgd2l0aCBTdWJ2ZXJzaW9uIHJldmlzaW9u
cy4KKyAgICAgICAgKENvbW1pdExvZy5mZXRjaEJldHdlZW5SZXZpc2lvbnMpOiBSZXdyaXR0ZW4g
dXNpbmcgRGF0YU1vZGVsLnByb3RvdHlwZS5jYWNoZWRGZXRjaCB3aXRoIEZJWE1FIGZvcgorICAg
ICAgICB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgZG9pbmcuCisgICAgICAg
IChDb21taXRMb2cuX2NhY2hlZENvbW1pdExvZ3MpOiBEZWxldGVkLgorICAgICAgICAoQ29tbWl0
TG9nLmZldGNoRm9yU2luZ2xlUmV2aXNpb24pOiBBZGRlZC4KKyAgICAgICAgKENvbW1pdExvZy5f
Y29uc3RydWN0RnJvbVJhd0RhdGEpOiBBZGRlZC4KKworICAgICAgICAqIHB1YmxpYy92My9tb2Rl
bHMvZGF0YS1tb2RlbC5qczoKKyAgICAgICAgKERhdGFNb2RlbE9iamVjdC5jYWNoZWRGZXRjaCk6
IERvbid0IHBhcnNlIHF1ZXJ5IHZhbHVlcyBhcyBhbiBpbnRlZ2VyLiBKdXN0IFVSTC1lc2NhcGUg
dGhlbS4KKworICAgICAgICAqIHB1YmxpYy92My9yZW1vdGUuanM6CisgICAgICAgIChCcm93c2Vy
UmVtb3RlQVBJLnByb3RvdHlwZS5zZW5kSHR0cFJlcXVlc3QpOiBGaXhlZCBhIHR5cG8uCisKKyAg
ICAgICAgKiBzZXJ2ZXItdGVzdHMvYXBpLWNvbW1pdHMtdGVzdHMuanM6IFJlbmFtZWQgZnJvbSBh
cGktY29tbWl0cy5qcy4gVXBkYXRlZCB0aGUgZXhpc3RpbmcgdGVzdHMgdG8KKyAgICAgICAgdXNl
IG5ldyBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBhZGRlZCBtb3JlIHRlc3QgY2FzZXMuCisKKyAgICAg
ICAgKiB1bml0LXRlc3RzL2NvbW1pdC1sb2ctdGVzdHMuanM6IFVwZGF0ZWQgdGhlIHRlc3QgY2Fz
ZXMgbm93IHRoYXQgQ29tbWl0TG9nLnByb3RvdHlwZS5kaWZmIG5vIGxvbmdlcgorICAgICAgICBp
bmNsdWRlcyBmcm9tL3RvIHZhbHVlcy4gVGhleSdyZSBjb21wdXRlZCBpbiBDaGFydFJldmlzaW9u
UmFuZ2UgaW5zdGVhZC4KKwogMjAxNy0wMy0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBGaXggb3MtYnVpbGQtZmV0Y2hlci5qcyBhbmQgc3VicHJvY2Vzcy5q
cyB0byBtYWtlIHRoZW0gd29yawpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2Jyb3dzZXItdGVzdHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5q
cwppbmRleCAzZTcwMzIzYzk0YTFkNGU1ZjQ4ZTFlOTU2MWM4NTJlMjE2NzY5NzRkLi5iMWI3MDY2
OTliMjRmZmRkZjVhYzQ0NmM2MDAwNGUzMzIyMmY1OTM1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZp
c2lvbi1yYW5nZS10ZXN0cy5qcwpAQCAtMzMsMTMgKzMzLDkgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2
aXNpb25SYW5nZScsICgpID0+IHsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxp
c3RbMF0ucmVwb3NpdG9yeS5sYWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwogICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNicpOwotICAgICAg
ICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUobnVsbCk7Ci0gICAg
ICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKIAog
ICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9yeS5sYWJlbCgp
KS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFd
LmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25M
aXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogICAgICAgICAgICAgfSkKICAgICAgICAgfSk7
CiAgICAgfSk7CkBAIC05NiwxNCArOTIsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2aXNpb25SYW5n
ZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxlbmd0aCku
dG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnJlcG9z
aXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
cmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDUtcjQwMDYnKTsKLSAgICAgICAgICAg
ICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmZyb20pLnRvLmJlKCc0MDA1Jyk7Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDQtcjQw
MDYnKTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9y
eS5sYWJlbCgpKS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0WzFdLmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
cmV2aXNpb25MaXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChyZXZpc2lvbkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogCiAgICAgICAgICAgICAgICAg
Y2hhcnQuc2V0SW5kaWNhdG9yKDEwMDQsIHRydWUpOyAvLyBBY3Jvc3MgbWFjT1MgY2hhbmdlLgog
CkBAIC0xMTEsMTQgKzEwMywxMCBAQCBkZXNjcmliZSgnQ2hhcnRSZXZpc2lvblJhbmdlJywgKCkg
PT4gewogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3QubGVuZ3RoKS50by5iZSgy
KTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ucmVwb3NpdG9yeS5s
YWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNC1yNDAwNCcpOwotICAgICAgICAgICAgICAgIGV4
cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUoJzQwMDQnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnRvKS50by5iZSgnNDAwNCcpOworICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwMy1yNDAwNCcpOwog
CiAgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVs
KCkpLnRvLmJlKCdtYWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3Rb
MV0ubGFiZWwpLnRvLmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0
KHJldmlzaW9uTGlzdFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBl
eHBlY3QocmV2aXNpb25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKIApAQCAtMTUwLDE0ICsxMzgsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2
aXNpb25SYW5nZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
Lmxlbmd0aCkudG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
WzBdLnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDMtcjQwMDQnKTsgLy8g
NDAwMiBhbmQgNDAwNSBhcmUgb3V0bGllcnMgYW5kIHNraXBwZWQuCi0gICAgICAgICAgICAgICAg
ZXhwZWN0KHJldmlzaW9uTGlzdFswXS5mcm9tKS50by5iZSgnNDAwMycpOwotICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0udG8pLnRvLmJlKCc0MDA0Jyk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5sYWJlbCkudG8uYmUoJ3I0MDAyLXI0MDA0Jyk7
IC8vIDQwMDEgYW5kIDQwMDUgYXJlIG91dGxpZXJzIGFuZCBza2lwcGVkLgogCiAgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVsKCkpLnRvLmJlKCdt
YWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ubGFiZWwpLnRv
LmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlz
dFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2Vy
LXRlc3RzL2NvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL2Jyb3dzZXItdGVzdHMvY29tbWl0LWxvZy12aWV3ZXItdGVzdHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2Y1MmRjMWIzNTZkM2QzMmUwYjg4MzJhYTBjYjNlODg3Nzk3NmZmOAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2NvbW1pdC1sb2ctdmll
d2VyLXRlc3RzLmpzCkBAIC0wLDAgKzEsMTIzIEBACitkZXNjcmliZSgnQ29tbWl0TG9nVmlld2Vy
JywgKCkgPT4geworCisgICAgZnVuY3Rpb24gaW1wb3J0Q29tbWl0TG9nVmlld2VyKGNvbnRleHQp
CisgICAgeworICAgICAgICBjb25zdCBzY3JpcHRzID0gWworICAgICAgICAgICAgJy4uL3NoYXJl
ZC9zdGF0aXN0aWNzLmpzJywKKyAgICAgICAgICAgICdpbnN0cnVtZW50YXRpb24uanMnLAorICAg
ICAgICAgICAgJ2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24uanMnLAorICAgICAgICAgICAgJ21v
ZGVscy9kYXRhLW1vZGVsLmpzJywKKyAgICAgICAgICAgICdtb2RlbHMvcmVwb3NpdG9yeS5qcycs
CisgICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1zZXQuanMnLAorICAgICAgICAgICAgJ21vZGVs
cy9jb21taXQtbG9nLmpzJywKKyAgICAgICAgICAgICdjb21wb25lbnRzL2Jhc2UuanMnLAorICAg
ICAgICAgICAgJ2NvbXBvbmVudHMvc3Bpbm5lci1pY29uLmpzJywKKyAgICAgICAgICAgICdjb21w
b25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzJ107CisgICAgICAgIHJldHVybiBjb250ZXh0Lmlt
cG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnQ29tbWl0TG9nVmlld2VyJywg
J1JlcG9zaXRvcnknLCAnQ29tbWl0TG9nJywgJ1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3ltYm9scy5Db21taXRMb2dWaWV3ZXI7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGNvbnN0IHdlYmtpdENvbW1pdDIxMDk0OSA9IHsKKyAgICAgICAg
ImlkIjogIjE4NTMzNCIsCisgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAorICAgICAgICAi
cHJldmlvdXNDb21taXQiOiBudWxsLAorICAgICAgICAidGltZSI6ICtuZXcgRGF0ZSgiMjAxNy0w
MS0yMFQwMzoyMzo1MC42NDVaIiksCisgICAgICAgICJhdXRob3JOYW1lIjogIkNocmlzIER1bWV6
IiwKKyAgICAgICAgImF1dGhvckVtYWlsIjogImNkdW1lekBhcHBsZS5jb20iLAorICAgICAgICAi
bWVzc2FnZSI6ICJzb21lIG1lc3NhZ2UiLAorICAgIH07CisKKyAgICBjb25zdCB3ZWJraXRDb21t
aXQyMTA5NTAgPSB7CisgICAgICAgICJpZCI6ICIxODUzMzgiLAorICAgICAgICAicmV2aXNpb24i
OiAiMjEwOTUwIiwKKyAgICAgICAgInByZXZpb3VzQ29tbWl0IjogbnVsbCwKKyAgICAgICAgInRp
bWUiOiArbmV3IERhdGUoIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIpLAorICAgICAgICAiYXV0
aG9yTmFtZSI6ICJDb21taXQgUXVldWUiLAorICAgICAgICAiYXV0aG9yRW1haWwiOiAiY29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmciLAorICAgICAgICAibWVzc2FnZSI6ICJhbm90aGVyIG1lc3NhZ2Ui
LAorICAgIH07CisKKyAgICBpdCgnc2hvdWxkIGluaXRpYWxseSBiZSBlbXB0eSB3aXRoIG5vIHNw
aW5uZXInLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250
ZXh0KCk7CisgICAgICAgIHJldHVybiBpbXBvcnRDb21taXRMb2dWaWV3ZXIoY29udGV4dCkudGhl
bigoQ29tbWl0TG9nVmlld2VyKSA9PiB7CisgICAgICAgICAgICBjb25zdCB2aWV3ZXIgPSBuZXcg
Q29tbWl0TG9nVmlld2VyOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHZpZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1Jl
bmRlcigpOworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50
KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1w
dHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50
KCdyZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNob3cg
dGhlIHJlcG9zaXRvcnkgbmFtZSBhbmQgdGhlIHNwaW5uZXIgb25jZSBpdCBzdGFydGVkIGZldGNo
aW5nIHRoZSBsaXN0IG9mIGNvbW1pdHMgJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0
ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gaW1wb3J0Q29tbWl0TG9n
Vmlld2VyKGNvbnRleHQpLnRoZW4oKENvbW1pdExvZ1ZpZXdlcikgPT4geworICAgICAgICAgICAg
Y29uc3QgUmVwb3NpdG9yeSA9IGNvbnRleHQuc3ltYm9scy5SZXBvc2l0b3J5OworICAgICAgICAg
ICAgY29uc3QgU3Bpbm5lckljb24gPSBjb250ZXh0LnN5bWJvbHMuU3Bpbm5lckljb247CisgICAg
ICAgICAgICBjb25zdCBDb21wb25lbnRCYXNlID0gY29udGV4dC5zeW1ib2xzLkNvbXBvbmVudEJh
c2U7CisgICAgICAgICAgICBjb25zdCBSZW1vdGVBUEkgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3Rl
QVBJOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsKKyAg
ICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2ViS2l0
J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZXdl
ci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOworICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNv
bnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUo
dHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdyZXBvc2l0b3J5
LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KFJlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgICAgIHZp
ZXdlci52aWV3KHdlYmtpdCwgJzIxMDk0OCcsICcyMTA5NTAnKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ3NwaW5u
ZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5ub3QuYmUoMCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHkn
KSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdy
ZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUoZmFsc2UpOworICAgICAg
ICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykudGV4dENv
bnRlbnQpLnRvLmNvbnRhaW4oJ1dlYktpdCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaG93IHRoZSByZXBvc2l0b3J5IG5hbWUsIHRo
ZSBsaXN0IG9mIGNvbW1pdHMsIGFuZCBoaWRlIHRoZSBzcGlubmVyIG9uY2UgdGhlIGxpc3Qgb2Yg
Y29tbWl0cyBhcmUgZmV0Y2hlZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5l
dyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGltcG9ydENvbW1pdExvZ1ZpZXdl
cihjb250ZXh0KS50aGVuKChDb21taXRMb2dWaWV3ZXIpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IFJlcG9zaXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeTsKKyAgICAgICAgICAgIGNv
bnN0IFNwaW5uZXJJY29uID0gY29udGV4dC5zeW1ib2xzLlNwaW5uZXJJY29uOworICAgICAgICAg
ICAgY29uc3QgQ29tcG9uZW50QmFzZSA9IGNvbnRleHQuc3ltYm9scy5Db21wb25lbnRCYXNlOwor
ICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3RlQVBJLnJl
cXVlc3RzOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsK
KyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2Vi
S2l0J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZp
ZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgdmlld2VyLnZpZXcod2Via2l0LCAnMjEwOTQ4Jywg
JzIxMDk1MCcpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdo
dCkudG8ubm90LmJlKDApOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgn
Y29tbWl0cy1saXN0JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKHRydWUpOworICAgICAgICAg
ICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykubWF0Y2hlcygn
OmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNv
bnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250YWluKCdXZWJLaXQn
KTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRz
LzEvP3ByZWNlZGluZ1JldmlzaW9uPTIxMDk0OCZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAg
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgICAgICJz
dGF0dXMiOiAiT0siLAorICAgICAgICAgICAgICAgICAgICAiY29tbWl0cyI6IFt3ZWJraXRDb21t
aXQyMTA5NDksIHdlYmtpdENvbW1pdDIxMDk1MF0sCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2Vy
LmNvbnRlbnQoJ3NwaW5uZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2NvbW1pdHMtbGlzdCcpLm1hdGNo
ZXMoJzplbXB0eScpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdl
ci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8uY29udGFpbigncjIxMDk0
OScpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgnY29tbWl0cy1saXN0
JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NocmlzIER1bWV6Jyk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8u
Y29udGFpbigncjIxMDk1MCcpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVu
dCgnY29tbWl0cy1saXN0JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NvbW1pdCBRdWV1ZScp
OworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1l
JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3Qodmlld2VyLmNvbnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250
YWluKCdXZWJLaXQnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2Nv
bW1pdHMtbGlzdCcpLnF1ZXJ5U2VsZWN0b3IoJ2EnKSkudG8uYmUobnVsbCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKaW5kZXggMjUyYTM5Yjk4MWNlZDFk
YTYzNTFhMGFiOGIwMzQyYjBlN2E0ZTQ5MC4uNjMzMDQ1MjU2YTQ3ZGMzNjgzOGQzMzQ2MDAzNDky
ODNmMGVmYTFhZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXIt
dGVzdHMvaW5kZXguaHRtbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10
ZXN0cy9pbmRleC5odG1sCkBAIC0xLDkgKzEsMTAgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDx0aXRsZT5Jbi1Ccm93c2VyIFRlc3Rz
IGZvciBQZXJmb3JtYW5jZSBEYXNoYm9hcmQ8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJodHRwczovL2Nkbi5yYXdnaXQuY29tL21vY2hhanMvbW9jaGEvMi4yLjUvbW9jaGEu
Y3NzIj4KLTxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGli
cy9tb2NoYS8yLjIuNS9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZXhwZWN0LmpzLzAuMi4wL2V4cGVj
dC5taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIApAQCAtMjEsNiArMjIsNyBAQCBtb2NoYS5z
ZXR1cCgnYmRkJyk7CiA8c2NyaXB0IHNyYz0iaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQt
dGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXN0YXR1cy1ldmFsdWF0b3It
dGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXJldmlzaW9uLXJhbmdlLXRl
c3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb21taXQtbG9nLXZpZXdlci10ZXN0cy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBhZnRlckVhY2goKCkgPT4gewpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvY29tbWl0cy5waHAgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9jb21taXRzLnBocAppbmRleCBhNmE0ZGI4NmZh
OGNhMDFlY2E5NTE0NjRlOGQ1MDVmMGQ2NTk5YTMxLi5jMTFkZDZiZDc3NjZkNWMxMmI0YTg5Y2I0
MDUxNTkxZThmMTk4MWU1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2FwaS9jb21taXRzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FwaS9jb21taXRzLnBocApAQCAtMjQsOSArMjQsOSBAQCBmdW5jdGlvbiBtYWluKCRwYXRocykg
ewogICAgICRjb21taXRzID0gYXJyYXkoKTsKICAgICBpZiAoISRmaWx0ZXIpIHsKICAgICAgICAg
JGtleXdvcmQgPSBhcnJheV9nZXQoJF9HRVQsICdrZXl3b3JkJyk7IC8vIFYyIFVJIGNvbXBhdGli
aWxpdHkuCi0gICAgICAgICRmcm9tID0gYXJyYXlfZ2V0KCRfR0VULCAnZnJvbScpOwotICAgICAg
ICAkdG8gPSBhcnJheV9nZXQoJF9HRVQsICd0bycpOwotICAgICAgICAkY29tbWl0cyA9ICRmZXRj
aGVyLT5mZXRjaF9iZXR3ZWVuKCRyZXBvc2l0b3J5X2lkLCAkZnJvbSwgJHRvLCAka2V5d29yZCk7
CisgICAgICAgICRwcmVjZWRpbmdfcmV2aXNpb24gPSBhcnJheV9nZXQoJF9HRVQsICdwcmVjZWRp
bmdSZXZpc2lvbicpOworICAgICAgICAkbGFzdF9yZXZpc2lvbiA9IGFycmF5X2dldCgkX0dFVCwg
J2xhc3RSZXZpc2lvbicpOworICAgICAgICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9iZXR3
ZWVuKCRyZXBvc2l0b3J5X2lkLCAkcHJlY2VkaW5nX3JldmlzaW9uLCAkbGFzdF9yZXZpc2lvbiwg
JGtleXdvcmQpOwogICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnb2xkZXN0JykgewogICAgICAg
ICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9vbGRlc3QoJHJlcG9zaXRvcnlfaWQpOwogICAg
IH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGF0ZXN0JykgewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVy
LnBocAppbmRleCAwNWQwYTAxY2NhYWY3NDUwOTdhMTg5ZTllMWM2YzY4Zjg5ZjFlZGYyLi43YzE1
NjYwYmJhMTI1NjhlODc5ZGM2ZDdiYmJjZDIzNGE4OWMzN2EyIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1m
ZXRjaGVyLnBocApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAg
ICAgICAgcmV0dXJuICRyZXBvc2l0b3J5X3Jvd1sncmVwb3NpdG9yeV9pZCddOwogICAgIH0KIAot
ICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRvcnlfaWQsICRmaXJzdCwgJHNlY29u
ZCwgJGtleXdvcmQgPSBOVUxMKQorICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRv
cnlfaWQsICRiZWZvcmVfZmlyc3RfcmV2aXNpb24sICRsYXN0X3JldmlzaW9uLCAka2V5d29yZCA9
IE5VTEwpCiAgICAgewogICAgICAgICAkc3RhdGVtZW50cyA9ICdTRUxFQ1QgY29tbWl0X2lkIGFz
ICJpZCIsCiAgICAgICAgICAgICBjb21taXRfcmV2aXNpb24gYXMgInJldmlzaW9uIiwKQEAgLTQ2
LDIyICs0NiwyOSBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAgICAgICAgICAgIFdIRVJF
IGNvbW1pdF9yZXBvc2l0b3J5ID0gJDEgQU5EIGNvbW1pdF9yZXBvcnRlZCA9IHRydWUnOwogICAg
ICAgICAkdmFsdWVzID0gYXJyYXkoJHJlcG9zaXRvcnlfaWQpOwogCi0gICAgICAgIGlmICgkZmly
c3QgJiYgJHNlY29uZCkgewotICAgICAgICAgICAgJGZpcnN0X2NvbW1pdCA9ICR0aGlzLT5jb21t
aXRfZm9yX3JldmlzaW9uKCRyZXBvc2l0b3J5X2lkLCAkZmlyc3QpOwotICAgICAgICAgICAgJHNl
Y29uZF9jb21taXQgPSAkdGhpcy0+Y29tbWl0X2Zvcl9yZXZpc2lvbigkcmVwb3NpdG9yeV9pZCwg
JHNlY29uZCk7Ci0gICAgICAgICAgICAkZmlyc3QgPSAkZmlyc3RfY29tbWl0Wydjb21taXRfdGlt
ZSddOwotICAgICAgICAgICAgJHNlY29uZCA9ICRzZWNvbmRfY29tbWl0Wydjb21taXRfdGltZSdd
OwotICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKLSAgICAgICAgICAg
IGlmICghJGZpcnN0IHx8ICEkc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgJGZpcnN0ID0gJGZp
cnN0X2NvbW1pdFsnY29tbWl0X29yZGVyJ107Ci0gICAgICAgICAgICAgICAgJHNlY29uZCA9ICRz
ZWNvbmRfY29tbWl0Wydjb21taXRfb3JkZXInXTsKKyAgICAgICAgaWYgKCRiZWZvcmVfZmlyc3Rf
cmV2aXNpb24gJiYgJGxhc3RfcmV2aXNpb24pIHsKKyAgICAgICAgICAgICRwcmVjZWRpbmdfY29t
bWl0ID0gJHRoaXMtPmNvbW1pdF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRiZWZvcmVf
Zmlyc3RfcmV2aXNpb24pOworICAgICAgICAgICAgJGxhc3RfY29tbWl0ID0gJHRoaXMtPmNvbW1p
dF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRsYXN0X3JldmlzaW9uKTsKKworICAgICAg
ICAgICAgJHByZWNlZGluZyA9ICRwcmVjZWRpbmdfY29tbWl0Wydjb21taXRfdGltZSddOworICAg
ICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRbJ2NvbW1pdF90aW1lJ107CisgICAgICAgICAg
ICBpZiAoISRwcmVjZWRpbmcgIT0gISRsYXN0KQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9l
cnJvcignSW5jb25zaXN0ZW50Q29tbWl0cycpOworICAgICAgICAgICAgaWYgKCRwcmVjZWRpbmcp
CisgICAgICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICRwcmVjZWRpbmcgPSAkcHJlY2VkaW5nX2NvbW1p
dFsnY29tbWl0X29yZGVyJ107CisgICAgICAgICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRb
J2NvbW1pdF9vcmRlciddOwogICAgICAgICAgICAgICAgICRjb2x1bW5fbmFtZSA9ICdjb21taXRf
b3JkZXInOworICAgICAgICAgICAgICAgIGlmICghJHByZWNlZGluZyB8fCAhJGxhc3QpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCRwcmVjZWRpbmcgPj0gJGxhc3QpCisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdJbnZhbGlkQ29tbWl0UmFuZ2UnKTsKIAotICAgICAgICAgICAgJGluX29yZGVyID0gJGZp
cnN0IDwgJHNlY29uZDsKLSAgICAgICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJGluX29yZGVy
ID8gJGZpcnN0IDogJHNlY29uZCk7Ci0gICAgICAgICAgICAkc3RhdGVtZW50cyAuPSAnIEFORCAn
IC4gJGNvbHVtbl9uYW1lIC4gJyA+PSAkJyAuIGNvdW50KCR2YWx1ZXMpOwotICAgICAgICAgICAg
YXJyYXlfcHVzaCgkdmFsdWVzLCAkaW5fb3JkZXIgPyAkc2Vjb25kIDogJGZpcnN0KTsKKyAgICAg
ICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJHByZWNlZGluZyk7CisgICAgICAgICAgICAkc3Rh
dGVtZW50cyAuPSAnIEFORCAnIC4gJGNvbHVtbl9uYW1lIC4gJyA+ICQnIC4gY291bnQoJHZhbHVl
cyk7CisgICAgICAgICAgICBhcnJheV9wdXNoKCR2YWx1ZXMsICRsYXN0KTsKICAgICAgICAgICAg
ICRzdGF0ZW1lbnRzIC49ICcgQU5EICcgLiAkY29sdW1uX25hbWUgLiAnIDw9ICQnIC4gY291bnQo
JHZhbHVlcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2Jhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcwppbmRleCA5Zjc1Y2QwYTE5NGU0ZDYyNTFm
NzgwNWNlNThjOWMxNzFjOGFhNjhmLi4zNjUzNjNkOGI4NDk4MjkwOTIxNDA5Y2M4ODFiZDAwODM4
ZWRkN2E2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvYmFzZS5qcwpAQCAtMjM4LDcgKzIzOCw3IEBAIGNsYXNzIENvbXBvbmVudEJh
c2UgewogCiAgICAgc3RhdGljIF9hZGRDb250ZW50VG9FbGVtZW50KGVsZW1lbnQsIGNvbnRlbnQp
CiAgICAgewotICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAg
IGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7CiAgICAgICAgICAgICBmb3IgKHZhciBuZXN0
ZWRDaGlsZCBvZiBjb250ZW50KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRUb0Vs
ZW1lbnQoZWxlbWVudCwgbmVzdGVkQ2hpbGQpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnQg
aW5zdGFuY2VvZiBOb2RlKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKaW5kZXggNTc0
M2JhYjU2M2JkMGI2MjgyYzM1ZDg4NTYzNTMzZDNkOGY2NDFkNi4uYWUxZjFlYWU5YTZmNWJiOWFh
NDJhNDQ3YjNjNTI2ZWRhNTEzZjRlOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpz
CkBAIC0xNjMsOSArMTYzLDggQEAgY2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVu
dEJhc2UgewogICAgIF91cGRhdGVDb21taXRMb2dWaWV3ZXIoKQogICAgIHsKICAgICAgICAgY29u
c3QgcmFuZ2UgPSB0aGlzLl9yZXZpc2lvblJhbmdlLnJhbmdlRm9yUmVwb3NpdG9yeSh0aGlzLl9v
cGVuUmVwb3NpdG9yeSk7Ci0gICAgICAgIGNvbnN0IHVwZGF0ZVJlbmRlcmluZyA9ICgpID0+IHsg
dGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsgfTsKLSAgICAgICAgdGhpcy5fY29tbWl0TG9nVmlld2Vy
LnZpZXcodGhpcy5fb3BlblJlcG9zaXRvcnksIHJhbmdlLmZyb20sIHJhbmdlLnRvKS50aGVuKHVw
ZGF0ZVJlbmRlcmluZyk7Ci0gICAgICAgIHVwZGF0ZVJlbmRlcmluZygpOworICAgICAgICB0aGlz
Ll9jb21taXRMb2dWaWV3ZXIudmlldyh0aGlzLl9vcGVuUmVwb3NpdG9yeSwgcmFuZ2UuZnJvbSwg
cmFuZ2UudG8pOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAogICAg
IF9vcGVuQW5hbHlzaXNUYXNrKGFubm90YXRpb24pCkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3Mg
Q2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgdGhpcy5f
bWFpbkNoYXJ0U3RhdHVzLmVucXVldWVUb1JlbmRlcigpOwogCiAgICAgICAgIHZhciBib2R5ID0g
dGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtYm9keScpOwotICAgICAg
ICBpZiAodGhpcy5fY29tbWl0TG9nVmlld2VyICYmIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5jdXJy
ZW50UmVwb3NpdG9yeSgpKSB7CisgICAgICAgIGlmICh0aGlzLl9vcGVuUmVwb3NpdG9yeSkgewog
ICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdoYXMtc2Vjb25kLXNpZGViYXInKTsKICAg
ICAgICAgICAgIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMKaW5kZXggNGVjYzMy
NjlmN2I2OWE4YTk4Mjk2Njg3NDQ2ODZjOTA4NTMxNWJlNS4uOWE1ZDE3NGE1MTk2MGFiNGI4ZjEx
NDU4OThlMDZlYzZhYjM5Mjk2MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jb21taXQtbG9nLXZpZXdlci5q
cwpAQCAtNCw5MiArNCw4NyBAQCBjbGFzcyBDb21taXRMb2dWaWV3ZXIgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcignY29tbWl0
LWxvZy12aWV3ZXInKTsKKyAgICAgICAgdGhpcy5fbGF6aWx5RmV0Y2hDb21taXRMb2dzID0gbmV3
IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX2ZldGNoQ29tbWl0TG9ncy5iaW5kKHRoaXMp
KTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ZldGNo
aW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwotICAgICAg
ICB0aGlzLl9mcm9tID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdG8gPSBudWxsOworICAgICAgICB0
aGlzLl9yZW5kZXJDb21taXRMaXN0TGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlckNvbW1pdExpc3QuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgY3VycmVu
dFJlcG9zaXRvcnkoKSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5OyB9Ci0KLSAgICB2aWV3KHJl
cG9zaXRvcnksIGZyb20sIHRvKQorICAgIHZpZXcocmVwb3NpdG9yeSwgcHJlY2VkaW5nUmV2aXNp
b24sIGxhc3RSZXZpc2lvbikKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ID09
IHJlcG9zaXRvcnkgJiYgdGhpcy5fZnJvbSA9PSBmcm9tICYmIHRoaXMuX3RvID09IHRvKQotICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKKyAgICAgICAgdGhpcy5fbGF6
aWx5RmV0Y2hDb21taXRMb2dzLmV2YWx1YXRlKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9u
LCBsYXN0UmV2aXNpb24pOworICAgIH0KIAorICAgIF9mZXRjaENvbW1pdExvZ3MocmVwb3NpdG9y
eSwgcHJlY2VkaW5nUmV2aXNpb24sIGxhc3RSZXZpc2lvbikKKyAgICB7CisgICAgICAgIHRoaXMu
X2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwot
ICAgICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTsKLSAgICAgICAgdGhpcy5fZnJv
bSA9IGZyb207Ci0gICAgICAgIHRoaXMuX3RvID0gdG87CiAKLSAgICAgICAgaWYgKCFyZXBvc2l0
b3J5KSB7Ci0gICAgICAgICAgICB0aGlzLl9mZXRjaGluZ1Byb21pc2UgPSBudWxsOworICAgICAg
ICBpZiAoIXJlcG9zaXRvcnkgfHwgIWxhc3RSZXZpc2lvbikgewogICAgICAgICAgICAgdGhpcy5f
cmVwb3NpdG9yeSA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51
bGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0bykgewotICAgICAgICAgICAgdGhpcy5f
ZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHByb21pc2UgPSBDb21taXRMb2cu
ZmV0Y2hCZXR3ZWVuUmV2aXNpb25zKHJlcG9zaXRvcnksIGZyb20gfHwgdG8sIHRvKTsKKyAgICAg
ICAgbGV0IHByb21pc2U7CisgICAgICAgIGlmICghcHJlY2VkaW5nUmV2aXNpb24gfHwgcHJlY2Vk
aW5nUmV2aXNpb24gPT0gbGFzdFJldmlzaW9uKQorICAgICAgICAgICAgcHJvbWlzZSA9IENvbW1p
dExvZy5mZXRjaEZvclNpbmdsZVJldmlzaW9uKHJlcG9zaXRvcnksIGxhc3RSZXZpc2lvbik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb21pc2UgPSBDb21taXRMb2cuZmV0Y2hCZXR3ZWVu
UmV2aXNpb25zKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb24pOwog
CisgICAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSByZXBvc2l0b3J5OwogICAgICAgICB0aGlzLl9m
ZXRjaGluZ1Byb21pc2UgPSBwcm9taXNlOwogCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAg
ICAgICAgdmFyIHNwaW5uZXJUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgc2VsZi5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSwgMzAwKTsKLQotICAgICAg
ICB0aGlzLl9mZXRjaGluZ1Byb21pc2UudGhlbihmdW5jdGlvbiAoY29tbWl0cykgewotICAgICAg
ICAgICAgY2xlYXJUaW1lb3V0KHNwaW5uZXJUaW1lcik7Ci0gICAgICAgICAgICBpZiAoc2VsZi5f
ZmV0Y2hpbmdQcm9taXNlICE9IHByb21pc2UpCisgICAgICAgIHRoaXMuX2ZldGNoaW5nUHJvbWlz
ZS50aGVuKChjb21taXRzKSA9PiB7CisgICAgICAgICAgICBpZiAodGhpcy5fZmV0Y2hpbmdQcm9t
aXNlICE9IHByb21pc2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc2Vs
Zi5fZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdHMgPSBj
b21taXRzOwotICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChz
ZWxmLl9mZXRjaGluZ1Byb21pc2UgIT0gcHJvbWlzZSkKKyAgICAgICAgICAgIHRoaXMuX2ZldGNo
aW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRzID0gY29tbWl0czsK
KyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0sIChlcnJvcikg
PT4geworICAgICAgICAgICAgaWYgKHRoaXMuX2ZldGNoaW5nUHJvbWlzZSAhPSBwcm9taXNlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX2ZldGNoaW5nUHJvbWlz
ZSA9IG51bGw7Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRzID0gbnVsbDsKKyAgICAgICAgICAg
IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRz
ID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0p
OwogCi0gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaGluZ1Byb21pc2U7CisgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgcmVuZGVyKCkKICAgICB7Ci0gICAgICAg
IHZhciBjYXB0aW9uID0gJyc7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ICYmICh0aGlz
Ll9jb21taXRzIHx8IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSkpCi0gICAgICAgICAgICBjYXB0aW9u
ID0gdGhpcy5fcmVwb3NpdG9yeS5uYW1lKCk7Ci0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5
U2VsZWN0b3IoJ2NhcHRpb24nKS50ZXh0Q29udGVudCA9IGNhcHRpb247CisgICAgICAgIHRoaXMu
cGFydCgnc3Bpbm5lcicpLmVucXVldWVUb1JlbmRlcigpOworCisgICAgICAgIGNvbnN0IHNob3Vs
ZFNob3dSZXBvc2l0b3J5TmFtZSA9IHRoaXMuX3JlcG9zaXRvcnkgJiYgKHRoaXMuX2NvbW1pdHMg
fHwgdGhpcy5fZmV0Y2hpbmdQcm9taXNlKTsKKyAgICAgICAgdGhpcy5jb250ZW50KCdyZXBvc2l0
b3J5LW5hbWUnKS50ZXh0Q29udGVudCA9IHNob3VsZFNob3dSZXBvc2l0b3J5TmFtZSA/IHRoaXMu
X3JlcG9zaXRvcnkubmFtZSgpIDogJyc7CisgICAgICAgIHRoaXMuY29udGVudCgnc3Bpbm5lci1j
b250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fZmV0Y2hpbmdQcm9taXNlID8gbnVsbCA6
ICdub25lJzsKKyAgICAgICAgdGhpcy5fcmVuZGVyQ29tbWl0TGlzdExhemlseS5ldmFsdWF0ZSh0
aGlzLl9jb21taXRzKTsKKyAgICB9CiAKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnRC
YXNlLmNyZWF0ZUVsZW1lbnQ7Ci0gICAgICAgIHZhciBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVh
dGVMaW5rOworICAgIF9yZW5kZXJDb21taXRMaXN0KGNvbW1pdHMpCisgICAgeworICAgICAgICBj
b25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBjb25z
dCBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCi0gICAgICAgIHRoaXMucmVuZGVy
UmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpLCAodGhpcy5fY29t
bWl0cyB8fCBbXSkubWFwKGZ1bmN0aW9uIChjb21taXQpIHsKLSAgICAgICAgICAgIHZhciBsYWJl
bCA9IGNvbW1pdC5sYWJlbCgpOwotICAgICAgICAgICAgdmFyIHVybCA9IGNvbW1pdC51cmwoKTsK
KyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnY29tbWl0cy1saXN0Jyks
IChjb21taXRzIHx8IFtdKS5tYXAoKGNvbW1pdCkgPT4geworICAgICAgICAgICAgY29uc3QgbGFi
ZWwgPSBjb21taXQubGFiZWwoKTsKKyAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbW1pdC51cmwo
KTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICBl
bGVtZW50KCd0aCcsIFtlbGVtZW50KCdoNCcsIHtjbGFzczogJ3JldmlzaW9uJ30sIHVybCA/IGxp
bmsobGFiZWwsIGNvbW1pdC50aXRsZSgpLCB1cmwpIDogbGFiZWwpLCBjb21taXQuYXV0aG9yKCkg
fHwgJyddKSwKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGNvbW1pdC5tZXNzYWdlKCkg
PyBjb21taXQubWVzc2FnZSgpLnN1YnN0cmluZygwLCA4MCkgOiAnJyldKTsKICAgICAgICAgfSkp
OwotCi0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jb21taXRzLXZpZXdl
ci1zcGlubmVyJykuc3R5bGUuZGlzcGxheSA9IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA/IG51bGwg
OiAnbm9uZSc7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gYAogICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWl0cy12aWV3ZXItY29u
dGFpbmVyIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21taXRzLXZpZXdlci1zcGlu
bmVyIj48c3Bpbm5lci1pY29uPjwvc3Bpbm5lci1pY29uPjwvZGl2PgotICAgICAgICAgICAgICAg
IDx0YWJsZSBjbGFzcz0iY29tbWl0cy12aWV3ZXItdGFibGUiPgotICAgICAgICAgICAgICAgICAg
ICA8Y2FwdGlvbj48L2NhcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KLSAgICAg
ICAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzcGlubmVy
LWNvbnRhaW5lciI+PHNwaW5uZXItaWNvbiBpZD0ic3Bpbm5lciI+PC9zcGlubmVyLWljb24+PC9k
aXY+CisgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJjb21taXRzLXZpZXdlci10YWJsZSI+Cisg
ICAgICAgICAgICAgICAgICAgIDxjYXB0aW9uIGlkPSJyZXBvc2l0b3J5LW5hbWUiPjwvY2FwdGlv
bj4KKyAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJjb21taXRzLWxpc3QiPjwvdGJvZHk+
CiAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgIDwvZGl2PgogYDsKQEAgLTEw
NCwzMSArOTksMjcgQEAgY2xhc3MgQ29tbWl0TG9nVmlld2VyIGV4dGVuZHMgQ29tcG9uZW50QmFz
ZSB7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgeworICAgICAg
ICAgICAgI2NvbW1pdHMtdmlld2VyLXRhYmxlIHsKICAgICAgICAgICAgICAgICB3aWR0aDogMTAw
JTsKKyAgICAgICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAg
ICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgY2FwdGlvbiB7CisgICAgICAgICAgICBj
YXB0aW9uIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAg
ICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLmNvbW1pdHMtdmlld2VyLXRhYmxlIHsKLSAgICAgICAgICAgICAgICBib3Jk
ZXItY29sbGFwc2U6IGNvbGxhcHNlOwotICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNv
bGlkIDFweCAjY2NjOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3
ZXItdGFibGUgLnJldmlzaW9uIHsKKyAgICAgICAgICAgIC5yZXZpc2lvbiB7CiAgICAgICAgICAg
ICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgICBwYWRk
aW5nOiAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFi
bGUgdGQsCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgdGggeworICAgICAgICAg
ICAgdGQsIHRoIHsKICAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAg
ICAgICAgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgICAg
IHBhZGRpbmc6IDAuMnJlbTsKQEAgLTEzNyw3ICsxMjgsNyBAQCBjbGFzcyBDb21taXRMb2dWaWV3
ZXIgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItc3Bp
bm5lciB7CisgICAgICAgICAgICAjc3Bpbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAg
IG1hcmdpbi10b3A6IDJyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvY29tbWl0LWxvZy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cuanMKaW5kZXggNGViYTdlMTAxMmFlMDFkOWU1MTJmOTA2
NDg4N2M3YzA2YTUxNDY1OS4uNTYyNGFmNTRiZTZlOGRjOGI4ZjU1YWQ2Yjk2NzcyZDUyNjhlYmVi
NSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
Y29tbWl0LWxvZy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9jb21taXQtbG9nLmpzCkBAIC00OSw3MCArNDksNDYgQEAgY2xhc3MgQ29tbWl0TG9nIGV4
dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgaWYgKHRoaXMgPT0gcHJldmlvdXNDb21t
aXQpCiAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdCA9IG51bGw7CiAKLSAgICAgICAgdmFyIHJl
cG9zaXRvcnkgPSB0aGlzLl9yZXBvc2l0b3J5OworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0g
dGhpcy5fcmVwb3NpdG9yeTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NvbW1pdCkKLSAgICAgICAg
ICAgIHJldHVybiB7ZnJvbTogbnVsbCwgdG86IHRoaXMucmV2aXNpb24oKSwgcmVwb3NpdG9yeTog
cmVwb3NpdG9yeSwgbGFiZWw6IHRoaXMubGFiZWwoKSwgdXJsOiB0aGlzLnVybCgpfTsKLQotICAg
ICAgICB2YXIgdG8gPSB0aGlzLnJldmlzaW9uKCk7Ci0gICAgICAgIHZhciBmcm9tID0gcHJldmlv
dXNDb21taXQucmV2aXNpb24oKTsKLSAgICAgICAgdmFyIGxhYmVsID0gbnVsbDsKLSAgICAgICAg
aWYgKHBhcnNlSW50KHRvKSA9PSB0bykgeyAvLyBlLmcuIHIxMjM0NS4KLSAgICAgICAgICAgIGZy
b20gPSAocGFyc2VJbnQoZnJvbSkgKyAxKS50b1N0cmluZygpOworICAgICAgICAgICAgcmV0dXJu
IHtyZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogdGhpcy5sYWJlbCgpLCB1cmw6IHRoaXMu
dXJsKCl9OworCisgICAgICAgIGNvbnN0IHRvID0gdGhpcy5yZXZpc2lvbigpOworICAgICAgICBj
b25zdCBmcm9tID0gcHJldmlvdXNDb21taXQucmV2aXNpb24oKTsKKyAgICAgICAgbGV0IGZyb21S
ZXZpc2lvbkZvclVSTCA9IGZyb207CisgICAgICAgIGxldCBsYWJlbCA9IG51bGw7CisgICAgICAg
IGlmIChwYXJzZUludChmcm9tKSA9PSBmcm9tKSB7IC8vIGUuZy4gcjEyMzQ1LgorICAgICAgICAg
ICAgZnJvbVJldmlzaW9uRm9yVVJMID0gKHBhcnNlSW50KGZyb20pICsgMSkudG9TdHJpbmc7CiAg
ICAgICAgICAgICBsYWJlbCA9IGByJHtmcm9tfS1yJHt0aGlzLnJldmlzaW9uKCl9YDsKLSAgICAg
ICAgfSBlbHNlIGlmICh0by5sZW5ndGggPT0gNDApIHsgLy8gZS5nLiBnaXQgaGFzaAorICAgICAg
ICB9IGVsc2UgaWYgKHRvLmxlbmd0aCA9PSA0MCkgLy8gZS5nLiBnaXQgaGFzaAogICAgICAgICAg
ICAgbGFiZWwgPSBgJHtmcm9tLnN1YnN0cmluZygwLCA4KX0uLiR7dG8uc3Vic3RyaW5nKDAsIDgp
fWA7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICBlbHNlCiAgICAgICAgICAgICBsYWJlbCA9IGAk
e2Zyb219IC0gJHt0b31gOwogCi0gICAgICAgIHJldHVybiB7ZnJvbTogZnJvbSwgdG86IHRvLCBy
ZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogbGFiZWwsIHVybDogcmVwb3NpdG9yeS51cmxG
b3JSZXZpc2lvblJhbmdlKGZyb20sIHRvKX07CisgICAgICAgIHJldHVybiB7cmVwb3NpdG9yeTog
cmVwb3NpdG9yeSwgbGFiZWw6IGxhYmVsLCB1cmw6IHJlcG9zaXRvcnkudXJsRm9yUmV2aXNpb25S
YW5nZShmcm9tLCB0byl9OwogICAgIH0KIAotICAgIHN0YXRpYyBmZXRjaEJldHdlZW5SZXZpc2lv
bnMocmVwb3NpdG9yeSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoQmV0d2VlblJldmlzaW9u
cyhyZXBvc2l0b3J5LCBwcmVjZWRpbmdSZXZpc2lvbiwgbGFzdFJldmlzaW9uKQogICAgIHsKLSAg
ICAgICAgdmFyIHBhcmFtcyA9IFtdOwotICAgICAgICBpZiAoZnJvbSAmJiB0bykgewotICAgICAg
ICAgICAgcGFyYW1zLnB1c2goWydmcm9tJywgZnJvbV0pOwotICAgICAgICAgICAgcGFyYW1zLnB1
c2goWyd0bycsIHRvXSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdXJsID0gJy4uL2FwaS9j
b21taXRzLycgKyByZXBvc2l0b3J5LmlkKCkgKyAnLz8nICsgcGFyYW1zLm1hcChmdW5jdGlvbiAo
a2V5VmFsdWUpIHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5VmFs
dWVbMF0pICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdKTsKLSAgICAgICAg
fSkuam9pbignJicpOwotCi0KLSAgICAgICAgdmFyIGNhY2hlZExvZ3MgPSB0aGlzLl9jYWNoZWRD
b21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvKTsKLSAgICAgICAgaWYgKGNhY2hlZExvZ3Mp
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVz
b2x2ZShjYWNoZWRMb2dzKTsgfSk7Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAg
ICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHVybCkudGhlbihmdW5jdGlvbiAo
ZGF0YSkgewotICAgICAgICAgICAgdmFyIGNvbW1pdHMgPSBkYXRhWydjb21taXRzJ10ubWFwKGZ1
bmN0aW9uIChyYXdEYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmF3RGF0YS5yZXBvc2l0b3J5ID0g
cmVwb3NpdG9yeTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmds
ZXRvbihyYXdEYXRhLmlkLCByYXdEYXRhKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
c2VsZi5fY2FjaGVDb21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBjb21taXRzKTsKLSAg
ICAgICAgICAgIHJldHVybiBjb21taXRzOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRklYTUU6
IFRoZSBjYWNoZSBzaG91bGQgYmUgc21hcnRlciBhYm91dCBmZXRjaGluZyBhIHJhbmdlIHdpdGhp
biBhbiBhbHJlYWR5IGZldGNoZWQgcmFuZ2UsIGV0Yy4uLgorICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGV2aWN0IHNvbWUgZW50aXJlcyBmcm9tIHRoZSBjYWNoZSBpbiBjYWNoZWRGZXRjaC4K
KyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvY29tbWl0cy8ke3JlcG9zaXRv
cnkuaWQoKX0vYCwge3ByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb259KQorICAgICAgICAg
ICAgLnRoZW4oKGRhdGEpID0+IHRoaXMuX2NvbnN0cnVjdEZyb21SYXdEYXRhKHJlcG9zaXRvcnks
IGRhdGEpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2NhY2hlZENvbW1pdExvZ3MocmVwb3NpdG9y
eSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoRm9yU2luZ2xlUmV2aXNpb24ocmVwb3NpdG9y
eSwgcmV2aXNpb24pCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2NhY2hlcykKLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotICAgICAgICB2YXIgY2FjaGUgPSB0aGlzLl9jYWNoZXNbcmVwb3Np
dG9yeS5pZCgpXTsKLSAgICAgICAgaWYgKCFjYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
OwotICAgICAgICAvLyBGSVhNRTogTWFrZSBlYWNoIGNvbW1pdCBrbm93IG9mIGl0cyBwYXJlbnQs
IHRoZW4gd2UgY2FuIGRvIGEgYmV0dGVyIGNhY2hpbmcuIAotICAgICAgICByZXR1cm4gY2FjaGVb
ZnJvbSArICd8JyArIHRvXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkv
Y29tbWl0cy8ke3JlcG9zaXRvcnkuaWQoKX0vJHtyZXZpc2lvbn1gKS50aGVuKChkYXRhKSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0RnJvbVJhd0RhdGEocmVwb3NpdG9y
eSwgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBfY2FjaGVDb21taXRM
b2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBsb2dzKQorICAgIHN0YXRpYyBfY29uc3RydWN0RnJv
bVJhd0RhdGEocmVwb3NpdG9yeSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2Fj
aGVzKQotICAgICAgICAgICAgdGhpcy5fY2FjaGVzID0ge307Ci0gICAgICAgIGlmICghdGhpcy5f
Y2FjaGVzW3JlcG9zaXRvcnkuaWQoKV0pCi0gICAgICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3Np
dG9yeS5pZCgpXSA9IHt9OwotICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3NpdG9yeS5pZCgpXVtm
cm9tICsgJ3wnICsgdG9dID0gbG9nczsKKyAgICAgICAgcmV0dXJuIGRhdGFbJ2NvbW1pdHMnXS5t
YXAoKHJhd0RhdGEpID0+IHsKKyAgICAgICAgICAgIHJhd0RhdGEucmVwb3NpdG9yeSA9IHJlcG9z
aXRvcnk7CisgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyYXdE
YXRhLmlkLCByYXdEYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcwpp
bmRleCBmODA1YzU2MDhkMmQwYzAzNWQ5MmQ5OTM1ZWJjNDZkMTc1MTFkMjhlLi42MzE3MGY3YTM1
ODQ5OGQwNmViZjRiY2U2NTM0NzY4YThjMWU0NTM2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2RhdGEtbW9kZWwuanMKQEAgLTYyLDEw
ICs2MiwxMCBAQCBjbGFzcyBEYXRhTW9kZWxPYmplY3QgewogCiAgICAgc3RhdGljIGNhY2hlZEZl
dGNoKHBhdGgsIHBhcmFtcywgbm9DYWNoZSkKICAgICB7Ci0gICAgICAgIHZhciBxdWVyeSA9IFtd
OworICAgICAgICBjb25zdCBxdWVyeSA9IFtdOwogICAgICAgICBpZiAocGFyYW1zKSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zKQotICAgICAgICAgICAgICAgIHF1ZXJ5LnB1
c2goa2V5ICsgJz0nICsgcGFyc2VJbnQocGFyYW1zW2tleV0pKTsKKyAgICAgICAgICAgIGZvciAo
bGV0IGtleSBpbiBwYXJhbXMpCisgICAgICAgICAgICAgICAgcXVlcnkucHVzaChrZXkgKyAnPScg
KyBlc2NhcGUocGFyYW1zW2tleV0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAocXVlcnkubGVu
Z3RoKQogICAgICAgICAgICAgcGF0aCArPSAnPycgKyBxdWVyeS5qb2luKCcmJyk7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3JlbW90ZS5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCmluZGV4IDBlZWU4MzMzOTI5
YTVjNGM2ZjRhYjkzODliMjMyNTA3YWUxYmVjNmEuLjhkOTIwM2I2YmEyM2JiMmUxMjU4Y2M4Mjkw
ZDcxNDZlM2EzZjYxODcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcmVtb3RlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
cmVtb3RlLmpzCkBAIC0xMiw3ICsxMiw3IEBAIGNsYXNzIEJyb3dzZXJSZW1vdGVBUEkgZXh0ZW5k
cyBDb21tb25SZW1vdGVBUEkgewogICAgICAgICAgICAgZnVuY3Rpb24gb25sb2FkKCkgewogICAg
ICAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdSZW1vdGUnLCAn
c2VuZEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgIT0gMjAw
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzamVjdCh4aHIuc3RhdHVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh4aHIuc3RhdHVzKTsKICAgICAgICAgICAgICAg
ICByZXNvbHZlKHtzdGF0dXNDb2RlOiB4aHIuc3RhdHVzLCByZXNwb25zZVRleHQ6IHhoci5yZXNw
b25zZVRleHR9KTsKICAgICAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWNvbW1pdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRlc3RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliOWM5MzU4MDY5M2E2Yzk3ZTQ3MjliMGViZjhhZDkxYjhiNTg3MWMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRz
LXRlc3RzLmpzCkBAIC0wLDAgKzEsNTcyIEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzc2Vy
dCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworCitjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKK2NvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVx
dWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9y
dDsKK2NvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9u
LW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKKworZGVzY3JpYmUoIi9hcGkvY29t
bWl0cy8iLCBmdW5jdGlvbiAoKSB7CisgICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CisKKyAg
ICBjb25zdCBzdWJ2ZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21l
U2xhdmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAg
ICAiY29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDgiLAorICAg
ICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDI6NTI6MzQuNTc3WiIsCisgICAgICAg
ICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJaYWxhbiBCdWp0YXMiLCAiYWNjb3VudCI6ICJ6
YWxhbkBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJhIG1lc3NhZ2Ui
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAor
ICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WiIsCisgICAg
ICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDaHJpcyBEdW1leiIsICJhY2NvdW50Ijog
ImNkdW1lekBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJzb21lIG1l
c3NhZ2UiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJwcmV2aW91c0NvbW1pdCI6
ICIyMTA5NDkiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NTAiLAorICAgICAg
ICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIsCisgICAgICAgICAg
ICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21t
aXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICJtZXNzYWdlIjogImFub3Ro
ZXIgbWVzc2FnZSIsCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25z
dCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xh
dmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAi
Y29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkQzMiIsCisgICAgICAgICAg
ICAgICAgIm9yZGVyIjogNgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6
ICIxNkM2OCIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjogNQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkM2NyIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjog
NAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkIyNjU3IiwKKyAg
ICAgICAgICAgICAgICAib3JkZXIiOiAzCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjE2QjI1NTUiLAorICAgICAgICAgICAgICAgICJvcmRlciI6IDIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NY
IiwKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTZBMzIzIiwKKyAgICAgICAgICAgICAg
ICAib3JkZXIiOiAxCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25z
dCBub3RZZXRSZXBvcnRlZENvbW1pdCA9IHsKKyAgICAgICAgcmV2aXNpb246ICcyMTA5NTEnLAor
ICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo1NjoyMC4wNDVaJworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKGNvbW1pdCwgc3VibWl0dGVk
KQorICAgIHsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsncmV2aXNpb24nXSwgc3VibWl0
dGVkWydyZXZpc2lvbiddKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKG5ldyBEYXRlKGNvbW1pdFsn
dGltZSddKS50b0lTT1N0cmluZygpLCBzdWJtaXR0ZWRbJ3RpbWUnXSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRbJ21lc3NhZ2UnXSwgc3VibWl0dGVkWydtZXNzYWdlJ10pOworICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0WydhdXRob3JOYW1lJ10sIHN1Ym1pdHRlZFsnYXV0aG9yJ11b
J25hbWUnXSk7CisgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvckVtYWlsJ10sIHN1
Ym1pdHRlZFsnYXV0aG9yJ11bJ2FjY291bnQnXSk7CisgICAgICAgIGlmKHN1Ym1pdHRlZFsncHJl
dmlvdXNDb21taXQnXSkgeworICAgICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdFsncHJldmlvdXND
b21taXQnXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0WydwcmV2aW91c0NvbW1pdCddLCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRl
c2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+LycsICgpID0+IHsKKyAgICAgICAgaXQo
InNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNo
aW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0JykudGhlbigocmVzcG9uc2Up
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
UmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gdGhlcmUgYXJlIG5v
IHJlcG9ydGVkIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAn
V2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5
OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJL
aXQnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qg
b2YgYWxsIGNvbW1pdHMgZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNvbW1pdHMpOworICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LycpOwor
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworCisgICAgICAgICAgICAgICAg
Y29uc3QgY29tbWl0cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICAgICAgY29uc3Qgc3VibWl0
dGVkQ29tbWl0cyA9IHN1YnZlcnNpb25Db21taXRzWydjb21taXRzJ107CisgICAgICAgICAgICAg
ICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1swXSwgc3VibWl0dGVk
Q29tbWl0c1swXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJt
aXR0ZWQoY29tbWl0c1sxXSwgc3VibWl0dGVkQ29tbWl0c1sxXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1syXSwgc3VibWl0dGVkQ29t
bWl0c1syXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3ByZXZp
b3VzQ29tbWl0J10sIGNvbW1pdHNbMV1bJ2lkJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsaXN0IG9mIG9yZGVyZWQgY29t
bWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvJyk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0
cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdHRlZENv
bW1pdHMgPSBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0cyddOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzLmxlbmd0aCwgc3VibWl0dGVkQ29tbWl0cy5sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBdWydyZXZpc2lvbiddLCBzdWJt
aXR0ZWRDb21taXRzWzVdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0c1sxXVsncmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1s0XVsncmV2aXNpb24n
XSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3JldmlzaW9uJ10s
IHN1Ym1pdHRlZENvbW1pdHNbM11bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRzWzNdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzJdWydyZXZp
c2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s0XVsncmV2aXNp
b24nXSwgc3VibWl0dGVkQ29tbWl0c1sxXVsncmV2aXNpb24nXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdHNbNV1bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbMF1b
J3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisg
ICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vb2xkZXN0JywgKCkgPT4gewor
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBh
cmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0
JykudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0
cyB3aGVuIHRoZXJlIGFyZSBubyBjb21taXRzIiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAn
bmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3Qn
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBj
b21taXQiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNp
b25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBv
c3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0
cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0Jyk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29t
bWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25D
b21taXRzWydjb21taXRzJ11bMF0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgY29tbWl0IGJhc2VkIG9uICdjb21t
aXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5nIiwgKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAg
IHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0cykudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9h
cGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1pdHMpOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvT1NYL29sZGVzdCcpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMn
XVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVs1XVsncmV2
aXNpb24nXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk
ZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXRlc3QnLCAoKSA9PiB7CisgICAg
ICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBu
byBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKS50
aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHRzIHdo
ZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1l
JzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwor
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgb2xkZXN0IGNvbW1p
dCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCk7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNv
bW1pdHMpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsK
KyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
dWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJ
c1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgc3VidmVyc2lvbkNvbW1p
dHNbJ2NvbW1pdHMnXS5zbGljZSgpLnBvcCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgbGF0ZXN0IGNvbW1pdCBiYXNlZCBv
biAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CisgICAg
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3Rh
dHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0
YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21t
aXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydj
b21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ11b
MF1bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vbGFzdC1yZXBvcnRlZCcs
ICgpID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdo
ZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2Vi
S2l0L2xhc3QtcmVwb3J0ZWQnKS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVy
biBhbiBlbXB0eSByZXN1bHQgd2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQo
J3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzog
JzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQorICAgICAgICAg
ICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Cisg
ICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdHMg
d2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQv
bGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVy
biB0aGUgb2xkZXN0IHJlcG9ydGVkIGNvbW1pdCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgY29uc3QgcmVtb3RlID0g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLAor
ICAgICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1l
JzogJ1dlYktpdCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3Jl
cG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiBub3RZZXRSZXBvcnRlZENvbW1pdC5yZXZpc2lvbiwg
J3RpbWUnOiBub3RZZXRSZXBvcnRlZENvbW1pdC50aW1lfSksCisgICAgICAgICAgICBdKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1
cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04o
Jy9hcGkvY29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddLnNsaWNlKCkucG9wKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXN0IHJlcG9ydGVkIGNvbW1pdCBiYXNl
ZCBvbiAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRo
U3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkJyk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT08c3RhcnRfb3JkZXI+JnRvPTxlbmRfb3JkZXI+JywgKCkgPT4geworICAg
ICAgICBpdCgic2hvdWxkIHJldHVybiBhIGxpc3Qgb2YgY29tbWl0IGluIGdpdmVuIHZhbGlkIG9y
ZGVyIHJhbmdlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ09TWCd9KSwK
KyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnU2llcnJhMTZDNjcnLCAnb3JkZXInOiAzNjcsICdyZXBvcnRlZCc6IHRydWV9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjgnLCAnb3JkZXInOiAzNjgsICdyZXBvcnRlZCc6IHRy
dWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjknLCAnb3JkZXInOiAzNjksICdyZXBvcnRlZCc6
IGZhbHNlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0
b3J5JzogMSwgJ3JldmlzaW9uJzogJ1NpZXJyYTE2RDMyJywgJ29yZGVyJzogNDMyLCAncmVwb3J0
ZWQnOiB0cnVlfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gv
bGFzdC1yZXBvcnRlZD9mcm9tPTM2NyZ0bz0zNzAnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJl
c3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0
dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlc3BvbnNlWydj
b21taXRzJ107CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSByZXN1bHRzWzBdOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb21taXQucmV2aXNpb24sICdTaWVycmExNkM2OCcpOworICAg
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zy
b209MzcwJnRvPTM2NycpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MjAwJnRv
PTI5OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY5JnRvPTQzMicpOwor
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBjb25z
dCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9
IHJlc3VsdHNbMF07CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lv
biwgJ1NpZXJyYTE2RDMyJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi88Y29tbWl0PicsICgp
ID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
LzIxMDk0OScpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFVua25vd25D
b21taXQgd2hlbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBjb21taXQgZG9lcyBub3QgZXhpc3QgaW4g
dGhlIGRhdGFiYXNlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktp
dCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44
ODdaJ30pCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LzIx
MDk0OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJu
IHRoZSBjb21taXQgZXZlbiBpZiBpdCBoYWQgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAn
LCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvMjEwOTUwJyk7CisgICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnY29t
bWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNP
bmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOiAnMjEw
OTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3
WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6IG51bGwsIGFjY291bnQ6IG51
bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLAorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIHRoZSBmdWxsIHJlc3VsdCBmb3IgYSByZXBvcnRlZCBjb21taXQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOworICAgICAg
ICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygn
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9h
cGkvY29tbWl0cy9XZWJLaXQvMjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09L
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0
dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddWzFd
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgIH0pOworCisgICAgZGVzY3Jp
YmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vP3ByZWNlZGluZ1JldmlzaW9uPTxjb21taXQt
MT4mbGFzdFJldmlzaW9uPTxjb21taXQtMj4nLCAoKSA9PiB7CisgICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBv
c2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJyku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVu
IG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJh
c2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIu
aW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAg
ICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZp
c2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAg
ICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1Jl
dmlzaW9uPTIxMDkwMCZsYXN0UmV2aXNpb249MjExMDAwJyk7CisgICAgICAgICAgICB9KS50aGVu
KChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdVbmtub3duQ29tbWl0Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gY29tbWl0
cyBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIGhhdmUgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5
NDknLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonfSksCisgICAgICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIx
MDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KSwKKyAgICAgICAgICAg
IF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1JldmlzaW9uPTIx
MDk0OSZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1p
dHMnXSwgW10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIEludmFsaWRDb21taXRSYW5nZSB3aGVuIHRoZSBzcGVjaWZpZWQgcmFuZ2Ug
aXMgYmFja3dhcmRzIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktp
dCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42
NDVaJ30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NTAmbGFzdFJldmlzaW9uPTIxMDk0OScpOworICAgICAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZENvbW1pdFJhbmdlJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdXNlIHRoZSBj
b21taXQgb3JkZXIgd2hlbiB0aW1lIGlzIG5vdCBzcGVjaWZpZWQiLCAoKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycs
IG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUn
LCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3
Jywgb3JkZXI6IDMsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T04oJy9hcGkvY29tbWl0cy9tYWNPUy8/cHJlY2VkaW5nUmV2aXNpb249MTAuMTIlMjAxNkEzMjMm
bGFzdFJldmlzaW9uPTEwLjEyJTIwMTZCMjY1NycpOworICAgICAgICAgICAgfSkudGhlbigocmVz
cG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydj
b21taXRzJ10ubWFwKChjb21taXQpID0+IGNvbW1pdFsncmV2aXNpb24nXSksIFsnMTAuMTIgMTZC
MjU1NScsICcxMC4xMiAxNkIyNjU3J10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIEluY29uc2lzdGVudENvbW1pdHMgd2hlbiBwcmVj
ZWRpbmdSZXZpc2lvbiBzcGVjaWZpZXMgYSB0aW1lIGJ1dCBsYXN0UmV2aXNpb24gZG9lcyBub3Qi
LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9u
JzogJzEwLjEyIDE2QTMyMycsIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonLCBvcmRl
cjogMSwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNTU1Jywgb3Jk
ZXI6IDIsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2Nv
bW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjY1NycsIG9y
ZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIwMTZBMzIzJmxhc3RS
ZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBJbmNvbnNpc3RlbnRDb21taXRzIHdoZW4gcHJlY2Vk
aW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgaGFzIGEgdGltZSBidXQgbGFzdFJl
dmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1Mn
fSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzog
MSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVl
fSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzog
MSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1
ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6
IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgdGltZTogJzIwMTctMDEtMjBUMDM6MjM6
NTAuNjQ1WicsIG9yZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIw
MTZBMzIzJmxhc3RSZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBlbXB0eSByZXN1bHRzIHdoZW4g
cHJlY2VkaW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgb3IgYW4gb3JkZXIgaGFz
IGEgdGltZSBidXQgbGFzdFJldmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzog
MSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsICdyZXBvcnRl
ZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9z
aXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjU1NScsIG9yZGVyOiAyLCAncmVwb3J0
ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBv
c2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI2NTcnLCBvcmRlcjogMywgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21h
Y09TLz9wcmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIl
MjAxNkIyNjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGVt
cHR5IHJlc3VsdHMgd2hlbiBwcmVjZWRpbmdSZXZpc2lvbiBhbiBvcmRlciBoYXMgYSB0aW1lIGJ1
dCBsYXN0UmV2aXNpb24gZG9lcyBub3QiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25h
bWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydy
ZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVw
b3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydy
ZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3Jl
cG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgJ3JlcG9ydGVkJzog
dHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21hY09TLz9w
cmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIlMjAxNkIy
NjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHJlcG9ydGVk
IGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQn
OiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0OCcsICd0aW1lJzogJzIw
MTctMDEtMjBUMDI6NTI6MzQuNTc3WicsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAn
MjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzog
dHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvV2ViS2l0Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NDgmbGFzdFJldmlzaW9u
PTIxMDk1MCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1p
dHMnXVswXSwgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKKyAg
ICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NDknLAorICAgICAgICAgICAgICAgICAg
ICB0aW1lOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywKKyAgICAgICAgICAgICAgICAgICAg
YXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U6IG51bGwsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMV0sIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uOiAnMjEwOTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTct
MDEtMjBUMDM6NDk6MzcuODg3WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6
IG51bGwsIGFjY291bnQ6IG51bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxs
LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgbm90IGluY2x1ZGUgYSByZXZpc2lvbiBub3Qgd2l0aGluIHRoZSBz
cGVjaWZpZWQgcmFuZ2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTQ3JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMjozODo0NS40ODVa
JywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTQ4JywgJ3RpbWUnOiAnMjAx
Ny0wMS0yMFQwMjo1MjozNC41NzdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAn
MjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzog
ZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRv
cnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OToz
Ny44ODdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29t
bWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2
ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGlu
Z1JldmlzaW9uPTIxMDk0NyZsYXN0UmV2aXNpb249MjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1
Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMn
XVsxXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsKKworfSk7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktY29tbWl0
cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlYzU0YTMyYmRhNDFlYTEwOWFh
Yzc5Y2RmZjRiOGViM2E2YzI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDc2ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQot
Y29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Ci0KLWNvbnN0IFRlc3RTZXJ2ZXIgPSBy
ZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwotY29uc3QgYWRkU2xhdmVGb3JS
ZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFNs
YXZlRm9yUmVwb3J0OwotY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291
cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwotCi1kZXNjcmli
ZSgiL2FwaS9jb21taXRzLyIsIGZ1bmN0aW9uICgpIHsKLSAgICBwcmVwYXJlU2VydmVyVGVzdCh0
aGlzKTsKLQotICAgIGNvbnN0IHN1YnZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVO
YW1lIjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29y
ZCIsCi0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIx
MDk0OCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMjo1MjozNC41Nzda
IiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIlphbGFuIEJ1anRhcyIsICJh
Y2NvdW50IjogInphbGFuQGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdlIjog
ImEgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjog
IjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzoyMzo1MC42
NDVaIiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNocmlzIER1bWV6Iiwg
ImFjY291bnQiOiAiY2R1bWV6QGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdl
IjogInNvbWUgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInByZXZp
b3VzQ29tbWl0IjogIjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIxMDk1
MCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaIiwK
LSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2Nv
dW50IjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCi0gICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiOiAiYW5vdGhlciBtZXNzYWdlIiwKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0K
LQotICAgIGNvbnN0IHN5c3RlbVZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVOYW1l
IjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIs
Ci0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2RDMyIiwK
LSAgICAgICAgICAgICAgICAib3JkZXIiOiA2Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAg
InJldmlzaW9uIjogIjE2QzY4IiwKLSAgICAgICAgICAgICAgICAib3JkZXIiOiA1Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9T
WCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2QzY3IiwKLSAgICAgICAgICAgICAg
ICAib3JkZXIiOiA0Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2
QjI2NTciLAotICAgICAgICAgICAgICAgICJvcmRlciI6IDMKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwKLSAgICAgICAg
ICAgICAgICAicmV2aXNpb24iOiAiMTZCMjU1NSIsCi0gICAgICAgICAgICAgICAgIm9yZGVyIjog
MgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJPU1giLAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkEzMjMiLAotICAg
ICAgICAgICAgICAgICJvcmRlciI6IDEKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0K
LQotICAgIGNvbnN0IG5vdFlldFJlcG9ydGVkQ29tbWl0ID0gewotICAgICAgICByZXZpc2lvbjog
JzIxMDk1MScsCi0gICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjU2OjIwLjA0NVonCi0gICAg
fQotCi0gICAgZnVuY3Rpb24gYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0
LCBzdWJtaXR0ZWQpCi0gICAgewotICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0WydyZXZpc2lv
biddLCBzdWJtaXR0ZWRbJ3JldmlzaW9uJ10pOwotICAgICAgICBhc3NlcnQuZXF1YWwobmV3IERh
dGUoY29tbWl0Wyd0aW1lJ10pLnRvSVNPU3RyaW5nKCksIHN1Ym1pdHRlZFsndGltZSddKTsKLSAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnbWVzc2FnZSddLCBzdWJtaXR0ZWRbJ21lc3NhZ2Un
XSk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvck5hbWUnXSwgc3VibWl0dGVk
WydhdXRob3InXVsnbmFtZSddKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnYXV0aG9y
RW1haWwnXSwgc3VibWl0dGVkWydhdXRob3InXVsnYWNjb3VudCddKTsKLSAgICAgICAgaWYoc3Vi
bWl0dGVkWydwcmV2aW91c0NvbW1pdCddKSB7Ci0gICAgICAgICAgICBhc3NlcnQub2soY29tbWl0
WydwcmV2aW91c0NvbW1pdCddKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRbJ3ByZXZpb3VzQ29tbWl0J10sIG51bGwpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vJywgKCkgPT4gewot
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBh
cmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQnKS50aGVu
KChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHQgd2hlbiB0
aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAx
LCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTct
MDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVy
biB0aGUgbGlzdCBvZiBhbGwgY29tbWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRz
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7
Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9X
ZWJLaXQvJyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0KLSAgICAg
ICAgICAgICAgICBjb25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAzKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBzdWJtaXR0ZWRDb21taXRzID0gc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzBd
LCBzdWJtaXR0ZWRDb21taXRzWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1Nh
bWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzFdLCBzdWJtaXR0ZWRDb21taXRzWzFdKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzJdLCBz
dWJtaXR0ZWRDb21taXRzWzJdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
c1syXVsncHJldmlvdXNDb21taXQnXSwgY29tbWl0c1sxXVsnaWQnXSk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qgb2Yg
b3JkZXJlZCBjb21taXRzIGZvciBhIGdpdmVuIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC8nKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAgICAgICAgY29uc3Qg
c3VibWl0dGVkQ29tbWl0cyA9IHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ107Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCBzdWJtaXR0ZWRDb21taXRz
Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMF1bJ3Jldmlz
aW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbNV1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzWzFdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzRd
WydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1syXVsn
cmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1szXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbM11bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1p
dHNbMl1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRz
WzRdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzFdWydyZXZpc2lvbiddKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s1XVsncmV2aXNpb24nXSwgc3VibWl0dGVk
Q29tbWl0c1swXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9vbGRlc3Qn
LCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3
aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dl
YktpdC9vbGRlc3QnKS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBl
bXB0eSByZXN1bHRzIHdoZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywg
eydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2Vi
S2l0L29sZGVzdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0
aGUgb2xkZXN0IGNvbW1pdCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBv
cnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVy
biByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZl
cnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3QnKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwg
c3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVswXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBjb21taXQgYmFz
ZWQgb24gJ2NvbW1pdF9vcmRlcicgd2hlbiAnY29tbWl0X3RpbWUnIGlzIG1pc3NpbmciLCAoKSA9
PiB7Ci0gICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwot
ICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRz
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0
aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3Rl
LmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvb2xkZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0
cyddWzVdWydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhdGVzdCcsICgp
ID0+IHsKLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
L2xhdGVzdCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5
IHJlc3VsdHMgd2hlbiB0aGVyZSBhcmUgbm8gY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQv
bGF0ZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBv
bGRlc3QgY29tbWl0IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChz
dWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
bW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lv
bkNvbW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFz
c2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2
ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddLnNsaWNlKCkucG9wKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXRlc3QgY29t
bWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5n
IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9u
Q29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0
SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1p
dHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhdGVzdCcpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXN1bHRbJ2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNb
J2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7
Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXN0
LXJlcG9ydGVkJywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5
Tm90Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsK
LSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkv
Y29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlO
b3RGb3VuZCcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdCB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBj
b21taXRzIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAg
IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwK
LSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJ30p
Ci0gICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhc3QtcmVw
b3J0ZWQnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1w
dHkgcmVzdWx0cyB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBjb21taXRzIiwgKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRv
cmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21t
aXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1p
dHMnXSwgW10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgcmVwb3J0ZWQgY29tbWl0IiwgKCkgPT4gewotICAgICAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgICAgICBjb25z
dCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9u
Q29tbWl0cyksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IG5vdFlldFJlcG9ydGVkQ29tbWl0
LnJldmlzaW9uLCAndGltZSc6IG5vdFlldFJlcG9ydGVkQ29tbWl0LnRpbWV9KSwKLSAgICAgICAg
ICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNp
b25Db21taXRzWydjb21taXRzJ10uc2xpY2UoKS5wb3AoKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxhc3QgcmVwb3J0ZWQg
Y29tbWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNz
aW5nIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJz
aW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5w
b3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNv
bW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQnKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNp
b25Db21taXRzWydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3Np
dG9yeT4vbGFzdC1yZXBvcnRlZD9mcm9tPTxzdGFydF9vcmRlcj4mdG89PGVuZF9vcmRlcj4nLCAo
KSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGEgbGlzdCBvZiBjb21taXQgaW4gZ2l2
ZW4gdmFsaWQgb3JkZXIgcmFuZ2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUn
OiAnT1NYJ30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2NycsICdvcmRlcic6IDM2NywgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OCcsICdvcmRlcic6IDM2OCwgJ3Jl
cG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OScsICdvcmRlcic6IDM2OSwg
J3JlcG9ydGVkJzogZmFsc2V9KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMn
LCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZEMzInLCAnb3JkZXInOiA0
MzIsICdyZXBvcnRlZCc6IHRydWV9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY3JnRvPTM3MCcpOwotICAgICAgICAgICAg
fSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0g
cmVzcG9uc2VbJ2NvbW1pdHMnXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
cy5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHJlc3VsdHNbMF07
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbiwgJ1NpZXJyYTE2
QzY4Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT0zNzAmdG89MzY3Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0
cyddOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/
ZnJvbT0yMDAmdG89Mjk5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/ZnJvbT0zNjkm
dG89NDMyJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAg
ICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY29tbWl0ID0gcmVzdWx0c1swXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0LnJldmlzaW9uLCAnU2llcnJhMTZEMzInKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+Lzxj
b21taXQ+JywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90
Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29t
bWl0cy9XZWJLaXQvMjEwOTQ5JykudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1
cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5v
dCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25h
bWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIw
VDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0
cy9XZWJLaXQvMjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdVbmtub3du
Q29tbWl0Jyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNo
b3VsZCByZXR1cm4gdGhlIGNvbW1pdCBldmVuIGlmIGl0IGhhZCBub3QgYmVlbiByZXBvcnRlZCIs
ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9u
JzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAg
ICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NTAnKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21t
aXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgewotICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb246ICcyMTA5NTAnLAotICAgICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQw
Mzo0OTozNy44ODdaJywKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwg
YWNjb3VudDogbnVsbH0sCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
aXQoInNob3VsZCByZXR1cm4gdGhlIGZ1bGwgcmVzdWx0IGZvciBhIHJlcG9ydGVkIGNvbW1pdCIs
ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1p
dHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05X
aXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NDknKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0
YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1l
QXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25Db21taXRzWydj
b21taXRzJ11bMV0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgfSk7Ci0K
LSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi8/ZnJvbT08Y29tbWl0LTE+
JnRvPTxjb21taXQtMj4nLCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9z
aXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkg
PT4gewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTign
L2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJykudGhlbigocmVzcG9u
c2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cydd
LCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUg
c3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7
Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5
NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP2Zyb209MjEwOTAwJnRvPTIxMTAwMCcp
OwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVt
cHR5IHJlc3VsdCB3aGVuIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBoYXZlIG5vdCBy
ZXBvcnRlZCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSks
Ci0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwg
J3JldmlzaW9uJzogJzIxMDk0OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1Wid9
KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
J30pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJv
bT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
ewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycp
OwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwg
W10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIHJlcG9ydGVkIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsK
LSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9z
aXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0
OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WicsICdyZXBvcnRlZCc6IHRydWV9
KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
JywgJ3JlcG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCB7Ci0gICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzQ29tbWl0OiBudWxsLAotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjog
JzIxMDk0OScsCi0gICAgICAgICAgICAgICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUw
LjY0NVonLAotICAgICAgICAgICAgICAgICAgICBhdXRob3I6IHtuYW1lOiBudWxsLCBhY2NvdW50
OiBudWxsfSwKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbnVsbCwKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRl
ZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgewotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Nv
bW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NTAnLAotICAg
ICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJywKLSAgICAg
ICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCi0gICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCBub3QgaW5jbHVk
ZSBhIHJldmlzaW9uIG5vdCB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcv
YXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2Fw
aS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDgmdG89MjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9
KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1
bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElz
U2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0
c1snY29tbWl0cyddWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09u
ZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1p
dHMnXVsxXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICB9KTsKLQotfSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQt
bG9nLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0
LWxvZy10ZXN0cy5qcwppbmRleCA4NDI1YWIwNTdkZjBmM2RlMjM1MmJiZTJmNWU0Mjg3ZGJjNjA0
OWE2Li40NjIxMGRkNDhjNzU1OGZhNDA4NTU2MjYzNWE5ZTEzOTI2MWIzMzgwIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtbG9nLXRlc3RzLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1sb2ctdGVz
dHMuanMKQEAgLTkzLDI0ICs5MywxOCBAQCBkZXNjcmliZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24g
KCkgewogICAgIGRlc2NyaWJlKCdkaWZmJywgZnVuY3Rpb24gKCkgewogICAgICAgICBpdCgnc2hv
dWxkIHVzZSBsYWJlbCgpIGFzIHRoZSBsYWJlbCB0aGUgcHJldmlvdXMgY29tbWl0IGlzIG1pc3Np
bmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHdlYmtpdENv
bW1pdCgpLmRpZmYoKSwgewotICAgICAgICAgICAgICAgIGZyb206IG51bGwsCi0gICAgICAgICAg
ICAgICAgdG86ICcyMDA4MDUnLAogICAgICAgICAgICAgICAgIGxhYmVsOiAncjIwMDgwNScsCiAg
ICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjAw
ODA1JywKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdAogICAg
ICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoZ2l0V2ViS2l0Q29t
bWl0KCkuZGlmZigpLCB7Ci0gICAgICAgICAgICAgICAgZnJvbTogbnVsbCwKLSAgICAgICAgICAg
ICAgICB0bzogJzZmOGIwZGJiZGE5NWE0NDA1MDNiODhkYjFkZDAzZGFkM2E3YjA3ZmInLAogICAg
ICAgICAgICAgICAgIGxhYmVsOiAnNmY4YjBkYmInLAogICAgICAgICAgICAgICAgIHVybDogJ2h0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzZmOGIwZGJiZGE5NWE0NDA1MDNiODhkYjFk
ZDAzZGFkM2E3YjA3ZmInLAogICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMu
d2Via2l0LAogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
b3N4Q29tbWl0KCkuZGlmZigpLCB7Ci0gICAgICAgICAgICAgICAgZnJvbTogbnVsbCwKLSAgICAg
ICAgICAgICAgICB0bzogJzEwLjExLjQgMTVFNjUnLAogICAgICAgICAgICAgICAgIGxhYmVsOiAn
MTAuMTEuNCAxNUU2NScsCiAgICAgICAgICAgICAgICAgdXJsOiAnJywKICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLm9zeCwKQEAgLTExOSw5ICsxMTMsNyBAQCBkZXNjcmli
ZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgdXNlIGlu
Y3JlbWVudCB0aGUgb2xkIFNWTiByZXZpc2lvbiBieSAxJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh3ZWJraXRDb21taXQoKS5kaWZmKG9sZFdlYktpdENvbW1p
dCgpKSwgewotICAgICAgICAgICAgICAgIGZyb206ICcyMDA1NzUnLAotICAgICAgICAgICAgICAg
IHRvOiAnMjAwODA1JywKLSAgICAgICAgICAgICAgICBsYWJlbDogJ3IyMDA1NzUtcjIwMDgwNScs
CisgICAgICAgICAgICAgICAgbGFiZWw6ICdyMjAwNTc0LXIyMDA4MDUnLAogICAgICAgICAgICAg
ICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy53ZWJr
aXQKICAgICAgICAgICAgIH0pOwpAQCAtMTI5LDggKzEyMSw2IEBAIGRlc2NyaWJlKCdDb21taXRM
b2cnLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCB0cnVuY2F0ZSBhIEdpdCBo
YXNoIGF0IDh0aCBjaGFyYWN0ZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGdpdFdlYktpdENvbW1pdCgpLmRpZmYob2xkR2l0V2ViS2l0Q29tbWl0KCkpLCB7
Ci0gICAgICAgICAgICAgICAgZnJvbTogJ2ZmZGExNGU2ZGIwNzQ2ZDEwZDBmMDUwOTA3ZTRhNzMy
NTg1MWU1MDInLAotICAgICAgICAgICAgICAgIHRvOiAnNmY4YjBkYmJkYTk1YTQ0MDUwM2I4OGRi
MWRkMDNkYWQzYTdiMDdmYicsCiAgICAgICAgICAgICAgICAgbGFiZWw6ICdmZmRhMTRlNi4uNmY4
YjBkYmInLAogICAgICAgICAgICAgICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeTogTW9ja01vZGVscy53ZWJraXQKQEAgLTEzOSw4ICsxMjksNiBAQCBkZXNjcmliZSgnQ29t
bWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgc3Vycm91bmQgIi0i
IHdpdGggc3BhY2VzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChvc3hDb21taXQoKS5kaWZmKG9sZE9TWENvbW1pdCgpKSwgewotICAgICAgICAgICAgICAgIGZy
b206ICcxMC4xMS4zIDE1RDIxJywKLSAgICAgICAgICAgICAgICB0bzogJzEwLjExLjQgMTVFNjUn
LAogICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAuMTEuMyAxNUQyMSAtIDEwLjExLjQgMTVFNjUn
LAogICAgICAgICAgICAgICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTog
TW9ja01vZGVscy5vc3gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304973</attachid>
            <date>2017-03-20 17:20:16 -0700</date>
            <delta_ts>2017-03-20 17:25:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169888-20170320172015.patch</filename>
            <type>text/plain</type>
            <size>92583</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDk5CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlOWZmNGM0NzZhNGVmYWVlNmExM2M4Yjg3ZDM3N2I3MGY0MjY0NzBiLi41N2ZiYTIyMTZk
NTU3NmI4ZjUwNTc3ZmY2OTdmMTVmNzNhYmQ2ZGYzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsOSArMSw4NiBAQAorMjAxNy0wMy0yMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBDaGFydHMgcGFnZSBzaG93IGFuIGluY29uc2lzdGVudCBs
aXN0IG9mIHJldmlzaW9ucyBmb3IgR2l0IGFuZCBTdWJ2ZXJzaW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4ODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFdpdGggR2l0LCBDb21taXRMb2dWaWV3ZXIg
d2FzIHNob3dpbmcgdGhlIGxpc3Qgb2YgcmV2aXNpb25zIGluY2x1ZGluZyB0aGUgc3RhcnRpbmcg
aGFzaCwKKyAgICAgICAgd2hpY2ggd2FzIHRoZSBsYXN0IGRhdGEgcG9pbnQncyByZXZpc2lvbiBp
bnN0ZWFkIG9mIGFsbCByZXZpc2lvbnMgYWZ0ZXIgdGhlIGxhc3QgZGF0YSBwb2ludC4KKworICAg
ICAgICBGaXhlZCB0aGUgYnVnIGJ5IGFsd2F5cyBzcGVjaWZ5aW5nIHRoZSByZXZpc2lvbiBhdCB0
aGUgbGFzdCBkYXRhIHBvaW50IGluIGJvdGggU3VidmVyc2lvbgorICAgICAgICBhbmQgR2l0IGFu
ZCB0aGVuIG1ha2luZyAvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+Lz9mcm9tPVgmdG89WSBleGNs
dWRlIHRoZSBmaXJzdCByZXZpc2lvbi4KKyAgICAgICAgRm9yIGNsYXJpdHksICJmcm9tIiBhbmQg
InRvIiBxdWVyeSBwYXJhbWV0ZXJzIGhhdmUgYmVlbiByZW5hbWVkIHRvICJwcmVjZWRpbmdSZXZp
c2lvbiIgYW5kCisgICAgICAgICJsYXN0UmV2aXNpb24iIHJlc3BlY3RpdmVseS4KKworICAgICAg
ICBXZSBhbHNvIG5vIGxvbmdlciBhZGRzIDEgdG8gdGhlIHN0YXJ0aW5nIHJldmlzaW9uIG9mIFN1
YnZlcnNpb24tbGlrZSBzdGFydGluZyByZXZpc2lvbnMuIGUuZy4KKyAgICAgICAgd2hlbiB0aGUg
bGFzdCBkYXRhIHBvaW50IHdhcyBhdCByMTIzNCwgbmV3IGRhdGEgcG9pbnQgaXMgYXQgcjEyNTAs
IHRoZSBsYWJlbCBpcyBub3cgInIxMjM0LXIxMjUwIgorICAgICAgICBpbnN0ZWFkIG9mICJyMTIz
NS1yMTI1MCIuCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL2NoYXJ0LXJldmlzaW9uLXJhbmdl
LXRlc3RzLmpzOiBGaXhlZCB0aGUgdGVzdHMgc2luY2UgcmV2aXNpb25MaXN0IG5vIGxvbmdlcgor
ICAgICAgICBzcGVjaWZpZXMgZnJvbS90byByZXZpc2lvbnMuCisgICAgICAgICogYnJvd3Nlci10
ZXN0cy9jb21taXQtbG9nLXZpZXdlci10ZXN0cy5qczogQWRkZWQuIEFkZGVkIHRlc3RzIGZvciBD
b21taXRMb2dWaWV3ZXIuCisgICAgICAgICogYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sOiBJbmNs
dWRlIHRoZSBuZXcgdGVzdC4gQWxzbyB1c2UgYSBsb2NhbCBjb3B5IG9mIG1vY2hhLmpzL2Nzcy4K
KworICAgICAgICAqIHB1YmxpYy9hcGkvY29tbWl0cy5waHA6CisgICAgICAgIChtYWluKTogUmVu
YW1lZCAiZnJvbSIgYW5kICJ0byIgcXVlcnkgcGFyYW1ldGVycy4KKworICAgICAgICAqIHB1Ymxp
Yy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHA6CisgICAgICAgIChDb21taXRMb2dGZXRj
aGVyOjpmZXRjaF9iZXR3ZWVuKTogQWRkZWQgYSBjaGVjayB0aGF0IGNvbW1pdCB0aW1lIHNob3Vs
ZCBlaXRoZXIgYmUgc3BlY2lmaWVkCisgICAgICAgIGluIGJvdGggcm93cyBvciBub3Qgc3BlY2lm
aWVkIGluIGVpdGhlci4gQWxzbyByZWplY3Qgd2hlbiBiZWZvcmVfZmlyc3RfcmV2aXNpb24gaXMg
aWRlbnRpY2FsCisgICAgICAgIG9yIGFmdGVyIGxhc3RfcmV2aXNpb24gaW5zdGVhZCBvZiByZS1v
cmRlcmluZyB0aGVtIHNpbmNlIGl0IG5vIGxvbmdlciBtYWtlcyBzZW5zZSB0byBkbyBzbyB3aXRo
CisgICAgICAgIG5ldyBxdWVyeSBwYXJhbWV0ZXIgbmFtZXMuCisKKyAgICAgICAgKiBwdWJsaWMv
djMvY29tcG9uZW50cy9iYXNlLmpzOgorICAgICAgICAoQ29tcG9uZW50QmFzZS5fYWRkQ29udGVu
dFRvRWxlbWVudCk6IFVzZSBBcnJheS5pc0FycmF5IGluc3RlYWQgb2YgaW5zdGFuY2VvZi4gSXQn
cyByZXNpbGllbnQKKyAgICAgICAgYWdhaW50IHJlYWxtIChnbG9iYWwgb2JqZWN0KSBkaWZmZXJl
bmNlcy4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5q
czoKKyAgICAgICAgKENoYXJ0UGFuZUJhc2UucHJvdG90eXBlLl91cGRhdGVDb21taXRMb2dWaWV3
ZXIpOiBObyBsb25nZXIgY2FsbHMgZW5xdWV1ZVRvUmVuZGVyIG9uIHRoaXMgc2luY2UKKyAgICAg
ICAgQ29tbWl0TG9nVmlld2VyIGRvZXMgdGhhdCBvbiBpdHMgb3duIG5vdy4KKyAgICAgICAgKENo
YXJ0UGFuZUJhc2UucHJvdG90eXBlLnJlbmRlcik6IEp1c2UgdXNlIHRoaXMuX29wZW5SZXBvc2l0
b3J5IGluc3RlYWQgb2YgcmVseWluZyBvbiBDb21taXRMb2dWaWV3ZXIKKyAgICAgICAgdG8gcmVt
ZW1iZXIgd2hpY2ggcmVwb3NpdG9yeSBpcyBjdXJyZW50LiBUaGlzIHdhcyB0aGUgb25seSB1c2Ug
b2YgY3VycmVudFJlcG9zaXRvcnkuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9j
b21taXQtbG9nLXZpZXdlci5qczoKKyAgICAgICAgKENvbW1pdExvZ1ZpZXdlcik6CisgICAgICAg
IChDb21taXRMb2dWaWV3ZXIucHJvdG90eXBlLmN1cnJlbnRSZXBvc2l0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKENvbW1pdExvZ1ZpZXdlci5wcm90b3R5cGUudmlldyk6CisgICAgICAgIChDb21t
aXRMb2dWaWV3ZXIucHJvdG90eXBlLl9mZXRjaENvbW1pdExvZ3MpOiBNb2Rlcm5pemVkIGFuZCBl
eHRyYWN0ZWQgZnJvbSB2aWV3IHRvIG1ha2UgaXQgbGF6eS4KKyAgICAgICAgQ2FsbCBmZXRjaEZv
clNpbmdsZVJldmlzaW9uIHdoZW4gcHJlY2VkaW5nUmV2aXNpb24gaXMgbm90IHNwZWNpZmllZCBv
ciBpdCdzIGlkZW50aWNhbCB0byBsYXN0UmV2aXNpb24KKyAgICAgICAgc2luY2UgdGhlIGdlbmVy
aWMgSlNPTiBBUEkgbm8gbG9uZ2VyIHN1cHBvcnRzIGJlaW5nIGNhbGxlZCB3aXRoIHRoZSBpZGVu
dGljYWwgcmV2aXNpb25zLgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLnByb3RvdHlwZS5yZW5k
ZXIpOiBNb2Rlcm5pemVkICYgc2ltcGxpZmllZCB0aGUgY29kZS4KKyAgICAgICAgKENvbW1pdExv
Z1ZpZXdlci5wcm90b3R5cGUuX3JlbmRlckNvbW1pdExpc3QpOiBFeHRyYWN0ZWQgZnJvbSByZW5k
ZXIgdG8gbWFrZSBpdCBsYXp5LgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLmh0bWxUZW1wbGF0
ZSk6IEFkZCBJRCBvbiBjYXB0aW9uICYgdGJvZHkgc28gdGhhdCB0aGV5J3JlIG1vcmUgZWFzaWx5
IGFkZHJlc3NhYmxlLgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLmNzc1RlbXBsYXRlKToKKwor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29tbWl0LWxvZy5qczoKKyAgICAgICAgKENvbW1p
dExvZy5wcm90b3R5cGUuZGlmZik6IE5vIGxvbmdlciBpbmNsdWRlcyBmcm9tL3RvIHJldmlzaW9u
cyBpbiB0aGUgcmVzdWx0LiBBbHNvIGF2b2lkIGFkZGluZworICAgICAgICAxIHRvIGEgU3VidmVy
c2lvbi1saWtlIHN0YXJ0aW5nIHJldmlzaW9uIGZvciBjcmVhdGluZyB0aGUgbGFiZWwuIFNlZSBh
Ym92ZS4gQnV0IHdlIHN0aWxsIGRvIHRoaXMKKyAgICAgICAgZm9yIGZvcm1pbmcgVVJMcyBkdWUg
dG8gdGhlIHdheSB0b29scyBsaWtlIFRyYWMgd29yayB3aXRoIFN1YnZlcnNpb24gcmV2aXNpb25z
LgorICAgICAgICAoQ29tbWl0TG9nLmZldGNoQmV0d2VlblJldmlzaW9ucyk6IFJld3JpdHRlbiB1
c2luZyBEYXRhTW9kZWwucHJvdG90eXBlLmNhY2hlZEZldGNoIHdpdGggRklYTUUgZm9yCisgICAg
ICAgIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBkb2luZy4KKyAgICAgICAg
KENvbW1pdExvZy5fY2FjaGVkQ29tbWl0TG9ncyk6IERlbGV0ZWQuCisgICAgICAgIChDb21taXRM
b2cuZmV0Y2hGb3JTaW5nbGVSZXZpc2lvbik6IEFkZGVkLgorICAgICAgICAoQ29tbWl0TG9nLl9j
b25zdHJ1Y3RGcm9tUmF3RGF0YSk6IEFkZGVkLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVs
cy9kYXRhLW1vZGVsLmpzOgorICAgICAgICAoRGF0YU1vZGVsT2JqZWN0LmNhY2hlZEZldGNoKTog
RG9uJ3QgcGFyc2UgcXVlcnkgdmFsdWVzIGFzIGFuIGludGVnZXIuIEp1c3QgVVJMLWVzY2FwZSB0
aGVtLgorCisgICAgICAgICogcHVibGljL3YzL3JlbW90ZS5qczoKKyAgICAgICAgKEJyb3dzZXJS
ZW1vdGVBUEkucHJvdG90eXBlLnNlbmRIdHRwUmVxdWVzdCk6IEZpeGVkIGEgdHlwby4KKworICAg
ICAgICAqIHNlcnZlci10ZXN0cy9hcGktY29tbWl0cy10ZXN0cy5qczogUmVuYW1lZCBmcm9tIGFw
aS1jb21taXRzLmpzLiBVcGRhdGVkIHRoZSBleGlzdGluZyB0ZXN0cyB0bworICAgICAgICB1c2Ug
bmV3IHF1ZXJ5IHBhcmFtZXRlcnMgYW5kIGFkZGVkIG1vcmUgdGVzdCBjYXNlcy4KKworICAgICAg
ICAqIHVuaXQtdGVzdHMvY29tbWl0LWxvZy10ZXN0cy5qczogVXBkYXRlZCB0aGUgdGVzdCBjYXNl
cyBub3cgdGhhdCBDb21taXRMb2cucHJvdG90eXBlLmRpZmYgbm8gbG9uZ2VyCisgICAgICAgIGlu
Y2x1ZGVzIGZyb20vdG8gdmFsdWVzLiBUaGV5J3JlIGNvbXB1dGVkIGluIENoYXJ0UmV2aXNpb25S
YW5nZSBpbnN0ZWFkLgorCiAyMDE3LTAzLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCBvcy1idWlsZC1mZXRjaGVyLmpzIGFuZCBzdWJwcm9jZXNzLmpz
IHRvIG1ha2UgdGhlbSB3b3JrCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk4NDQKIAotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KIAogICAgICAgICBUaGUgc2NyaXB0
IGFkZGVkIGluIHIyMTM5NzYgaGFzIGEgYnVnIHRoYXQgaXQgY2FuIGV4ZWN1dGUgY29tbWFuZHMg
dG8gZmV0Y2ggc3ViY29tbWl0cyBpbiBwYXJhbGxlbC4KICAgICAgICAgU29tZSBjb21tYW5kcyB0
byBwb2xsIHRoZSBsc2l0IG9mIHN5c3RlbSBjb21wb25lbnRzIGlzIG5vdCBkZXNpcmFibGUgdG8g
YmUgcmFuIGluIHBhcmFsbGVsLgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2Jyb3dzZXItdGVzdHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5q
cwppbmRleCAzZTcwMzIzYzk0YTFkNGU1ZjQ4ZTFlOTU2MWM4NTJlMjE2NzY5NzRkLi5iMWI3MDY2
OTliMjRmZmRkZjVhYzQ0NmM2MDAwNGUzMzIyMmY1OTM1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZp
c2lvbi1yYW5nZS10ZXN0cy5qcwpAQCAtMzMsMTMgKzMzLDkgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2
aXNpb25SYW5nZScsICgpID0+IHsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxp
c3RbMF0ucmVwb3NpdG9yeS5sYWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwogICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNicpOwotICAgICAg
ICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUobnVsbCk7Ci0gICAg
ICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKIAog
ICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9yeS5sYWJlbCgp
KS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFd
LmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25M
aXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogICAgICAgICAgICAgfSkKICAgICAgICAgfSk7
CiAgICAgfSk7CkBAIC05NiwxNCArOTIsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2aXNpb25SYW5n
ZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxlbmd0aCku
dG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnJlcG9z
aXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
cmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDUtcjQwMDYnKTsKLSAgICAgICAgICAg
ICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmZyb20pLnRvLmJlKCc0MDA1Jyk7Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDQtcjQw
MDYnKTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9y
eS5sYWJlbCgpKS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0WzFdLmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
cmV2aXNpb25MaXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChyZXZpc2lvbkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogCiAgICAgICAgICAgICAgICAg
Y2hhcnQuc2V0SW5kaWNhdG9yKDEwMDQsIHRydWUpOyAvLyBBY3Jvc3MgbWFjT1MgY2hhbmdlLgog
CkBAIC0xMTEsMTQgKzEwMywxMCBAQCBkZXNjcmliZSgnQ2hhcnRSZXZpc2lvblJhbmdlJywgKCkg
PT4gewogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3QubGVuZ3RoKS50by5iZSgy
KTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ucmVwb3NpdG9yeS5s
YWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNC1yNDAwNCcpOwotICAgICAgICAgICAgICAgIGV4
cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUoJzQwMDQnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnRvKS50by5iZSgnNDAwNCcpOworICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwMy1yNDAwNCcpOwog
CiAgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVs
KCkpLnRvLmJlKCdtYWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3Rb
MV0ubGFiZWwpLnRvLmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0
KHJldmlzaW9uTGlzdFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBl
eHBlY3QocmV2aXNpb25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKIApAQCAtMTUwLDE0ICsxMzgsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2
aXNpb25SYW5nZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
Lmxlbmd0aCkudG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
WzBdLnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDMtcjQwMDQnKTsgLy8g
NDAwMiBhbmQgNDAwNSBhcmUgb3V0bGllcnMgYW5kIHNraXBwZWQuCi0gICAgICAgICAgICAgICAg
ZXhwZWN0KHJldmlzaW9uTGlzdFswXS5mcm9tKS50by5iZSgnNDAwMycpOwotICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0udG8pLnRvLmJlKCc0MDA0Jyk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5sYWJlbCkudG8uYmUoJ3I0MDAyLXI0MDA0Jyk7
IC8vIDQwMDEgYW5kIDQwMDUgYXJlIG91dGxpZXJzIGFuZCBza2lwcGVkLgogCiAgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVsKCkpLnRvLmJlKCdt
YWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ubGFiZWwpLnRv
LmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlz
dFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2Vy
LXRlc3RzL2NvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL2Jyb3dzZXItdGVzdHMvY29tbWl0LWxvZy12aWV3ZXItdGVzdHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2Y1MmRjMWIzNTZkM2QzMmUwYjg4MzJhYTBjYjNlODg3Nzk3NmZmOAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2NvbW1pdC1sb2ctdmll
d2VyLXRlc3RzLmpzCkBAIC0wLDAgKzEsMTIzIEBACitkZXNjcmliZSgnQ29tbWl0TG9nVmlld2Vy
JywgKCkgPT4geworCisgICAgZnVuY3Rpb24gaW1wb3J0Q29tbWl0TG9nVmlld2VyKGNvbnRleHQp
CisgICAgeworICAgICAgICBjb25zdCBzY3JpcHRzID0gWworICAgICAgICAgICAgJy4uL3NoYXJl
ZC9zdGF0aXN0aWNzLmpzJywKKyAgICAgICAgICAgICdpbnN0cnVtZW50YXRpb24uanMnLAorICAg
ICAgICAgICAgJ2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24uanMnLAorICAgICAgICAgICAgJ21v
ZGVscy9kYXRhLW1vZGVsLmpzJywKKyAgICAgICAgICAgICdtb2RlbHMvcmVwb3NpdG9yeS5qcycs
CisgICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1zZXQuanMnLAorICAgICAgICAgICAgJ21vZGVs
cy9jb21taXQtbG9nLmpzJywKKyAgICAgICAgICAgICdjb21wb25lbnRzL2Jhc2UuanMnLAorICAg
ICAgICAgICAgJ2NvbXBvbmVudHMvc3Bpbm5lci1pY29uLmpzJywKKyAgICAgICAgICAgICdjb21w
b25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzJ107CisgICAgICAgIHJldHVybiBjb250ZXh0Lmlt
cG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnQ29tbWl0TG9nVmlld2VyJywg
J1JlcG9zaXRvcnknLCAnQ29tbWl0TG9nJywgJ1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3ltYm9scy5Db21taXRMb2dWaWV3ZXI7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGNvbnN0IHdlYmtpdENvbW1pdDIxMDk0OSA9IHsKKyAgICAgICAg
ImlkIjogIjE4NTMzNCIsCisgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAorICAgICAgICAi
cHJldmlvdXNDb21taXQiOiBudWxsLAorICAgICAgICAidGltZSI6ICtuZXcgRGF0ZSgiMjAxNy0w
MS0yMFQwMzoyMzo1MC42NDVaIiksCisgICAgICAgICJhdXRob3JOYW1lIjogIkNocmlzIER1bWV6
IiwKKyAgICAgICAgImF1dGhvckVtYWlsIjogImNkdW1lekBhcHBsZS5jb20iLAorICAgICAgICAi
bWVzc2FnZSI6ICJzb21lIG1lc3NhZ2UiLAorICAgIH07CisKKyAgICBjb25zdCB3ZWJraXRDb21t
aXQyMTA5NTAgPSB7CisgICAgICAgICJpZCI6ICIxODUzMzgiLAorICAgICAgICAicmV2aXNpb24i
OiAiMjEwOTUwIiwKKyAgICAgICAgInByZXZpb3VzQ29tbWl0IjogbnVsbCwKKyAgICAgICAgInRp
bWUiOiArbmV3IERhdGUoIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIpLAorICAgICAgICAiYXV0
aG9yTmFtZSI6ICJDb21taXQgUXVldWUiLAorICAgICAgICAiYXV0aG9yRW1haWwiOiAiY29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmciLAorICAgICAgICAibWVzc2FnZSI6ICJhbm90aGVyIG1lc3NhZ2Ui
LAorICAgIH07CisKKyAgICBpdCgnc2hvdWxkIGluaXRpYWxseSBiZSBlbXB0eSB3aXRoIG5vIHNw
aW5uZXInLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250
ZXh0KCk7CisgICAgICAgIHJldHVybiBpbXBvcnRDb21taXRMb2dWaWV3ZXIoY29udGV4dCkudGhl
bigoQ29tbWl0TG9nVmlld2VyKSA9PiB7CisgICAgICAgICAgICBjb25zdCB2aWV3ZXIgPSBuZXcg
Q29tbWl0TG9nVmlld2VyOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHZpZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1Jl
bmRlcigpOworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50
KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1w
dHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50
KCdyZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNob3cg
dGhlIHJlcG9zaXRvcnkgbmFtZSBhbmQgdGhlIHNwaW5uZXIgb25jZSBpdCBzdGFydGVkIGZldGNo
aW5nIHRoZSBsaXN0IG9mIGNvbW1pdHMgJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0
ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gaW1wb3J0Q29tbWl0TG9n
Vmlld2VyKGNvbnRleHQpLnRoZW4oKENvbW1pdExvZ1ZpZXdlcikgPT4geworICAgICAgICAgICAg
Y29uc3QgUmVwb3NpdG9yeSA9IGNvbnRleHQuc3ltYm9scy5SZXBvc2l0b3J5OworICAgICAgICAg
ICAgY29uc3QgU3Bpbm5lckljb24gPSBjb250ZXh0LnN5bWJvbHMuU3Bpbm5lckljb247CisgICAg
ICAgICAgICBjb25zdCBDb21wb25lbnRCYXNlID0gY29udGV4dC5zeW1ib2xzLkNvbXBvbmVudEJh
c2U7CisgICAgICAgICAgICBjb25zdCBSZW1vdGVBUEkgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3Rl
QVBJOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsKKyAg
ICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2ViS2l0
J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZXdl
ci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOworICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNv
bnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUo
dHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdyZXBvc2l0b3J5
LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KFJlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgICAgIHZp
ZXdlci52aWV3KHdlYmtpdCwgJzIxMDk0OCcsICcyMTA5NTAnKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ3NwaW5u
ZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5ub3QuYmUoMCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHkn
KSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdy
ZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUoZmFsc2UpOworICAgICAg
ICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykudGV4dENv
bnRlbnQpLnRvLmNvbnRhaW4oJ1dlYktpdCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaG93IHRoZSByZXBvc2l0b3J5IG5hbWUsIHRo
ZSBsaXN0IG9mIGNvbW1pdHMsIGFuZCBoaWRlIHRoZSBzcGlubmVyIG9uY2UgdGhlIGxpc3Qgb2Yg
Y29tbWl0cyBhcmUgZmV0Y2hlZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5l
dyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGltcG9ydENvbW1pdExvZ1ZpZXdl
cihjb250ZXh0KS50aGVuKChDb21taXRMb2dWaWV3ZXIpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IFJlcG9zaXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeTsKKyAgICAgICAgICAgIGNv
bnN0IFNwaW5uZXJJY29uID0gY29udGV4dC5zeW1ib2xzLlNwaW5uZXJJY29uOworICAgICAgICAg
ICAgY29uc3QgQ29tcG9uZW50QmFzZSA9IGNvbnRleHQuc3ltYm9scy5Db21wb25lbnRCYXNlOwor
ICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3RlQVBJLnJl
cXVlc3RzOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsK
KyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2Vi
S2l0J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZp
ZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgdmlld2VyLnZpZXcod2Via2l0LCAnMjEwOTQ4Jywg
JzIxMDk1MCcpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdo
dCkudG8ubm90LmJlKDApOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgn
Y29tbWl0cy1saXN0JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKHRydWUpOworICAgICAgICAg
ICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykubWF0Y2hlcygn
OmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNv
bnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250YWluKCdXZWJLaXQn
KTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRz
LzEvP3ByZWNlZGluZ1JldmlzaW9uPTIxMDk0OCZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAg
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgICAgICJz
dGF0dXMiOiAiT0siLAorICAgICAgICAgICAgICAgICAgICAiY29tbWl0cyI6IFt3ZWJraXRDb21t
aXQyMTA5NDksIHdlYmtpdENvbW1pdDIxMDk1MF0sCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2Vy
LmNvbnRlbnQoJ3NwaW5uZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2NvbW1pdHMtbGlzdCcpLm1hdGNo
ZXMoJzplbXB0eScpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdl
ci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8uY29udGFpbigncjIxMDk0
OScpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgnY29tbWl0cy1saXN0
JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NocmlzIER1bWV6Jyk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8u
Y29udGFpbigncjIxMDk1MCcpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVu
dCgnY29tbWl0cy1saXN0JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NvbW1pdCBRdWV1ZScp
OworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1l
JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3Qodmlld2VyLmNvbnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250
YWluKCdXZWJLaXQnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2Nv
bW1pdHMtbGlzdCcpLnF1ZXJ5U2VsZWN0b3IoJ2EnKSkudG8uYmUobnVsbCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKaW5kZXggMjUyYTM5Yjk4MWNlZDFk
YTYzNTFhMGFiOGIwMzQyYjBlN2E0ZTQ5MC4uNjMzMDQ1MjU2YTQ3ZGMzNjgzOGQzMzQ2MDAzNDky
ODNmMGVmYTFhZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXIt
dGVzdHMvaW5kZXguaHRtbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10
ZXN0cy9pbmRleC5odG1sCkBAIC0xLDkgKzEsMTAgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDx0aXRsZT5Jbi1Ccm93c2VyIFRlc3Rz
IGZvciBQZXJmb3JtYW5jZSBEYXNoYm9hcmQ8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJodHRwczovL2Nkbi5yYXdnaXQuY29tL21vY2hhanMvbW9jaGEvMi4yLjUvbW9jaGEu
Y3NzIj4KLTxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGli
cy9tb2NoYS8yLjIuNS9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZXhwZWN0LmpzLzAuMi4wL2V4cGVj
dC5taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIApAQCAtMjEsNiArMjIsNyBAQCBtb2NoYS5z
ZXR1cCgnYmRkJyk7CiA8c2NyaXB0IHNyYz0iaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQt
dGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXN0YXR1cy1ldmFsdWF0b3It
dGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXJldmlzaW9uLXJhbmdlLXRl
c3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb21taXQtbG9nLXZpZXdlci10ZXN0cy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBhZnRlckVhY2goKCkgPT4gewpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvY29tbWl0cy5waHAgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9jb21taXRzLnBocAppbmRleCBhNmE0ZGI4NmZh
OGNhMDFlY2E5NTE0NjRlOGQ1MDVmMGQ2NTk5YTMxLi5jMTFkZDZiZDc3NjZkNWMxMmI0YTg5Y2I0
MDUxNTkxZThmMTk4MWU1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2FwaS9jb21taXRzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FwaS9jb21taXRzLnBocApAQCAtMjQsOSArMjQsOSBAQCBmdW5jdGlvbiBtYWluKCRwYXRocykg
ewogICAgICRjb21taXRzID0gYXJyYXkoKTsKICAgICBpZiAoISRmaWx0ZXIpIHsKICAgICAgICAg
JGtleXdvcmQgPSBhcnJheV9nZXQoJF9HRVQsICdrZXl3b3JkJyk7IC8vIFYyIFVJIGNvbXBhdGli
aWxpdHkuCi0gICAgICAgICRmcm9tID0gYXJyYXlfZ2V0KCRfR0VULCAnZnJvbScpOwotICAgICAg
ICAkdG8gPSBhcnJheV9nZXQoJF9HRVQsICd0bycpOwotICAgICAgICAkY29tbWl0cyA9ICRmZXRj
aGVyLT5mZXRjaF9iZXR3ZWVuKCRyZXBvc2l0b3J5X2lkLCAkZnJvbSwgJHRvLCAka2V5d29yZCk7
CisgICAgICAgICRwcmVjZWRpbmdfcmV2aXNpb24gPSBhcnJheV9nZXQoJF9HRVQsICdwcmVjZWRp
bmdSZXZpc2lvbicpOworICAgICAgICAkbGFzdF9yZXZpc2lvbiA9IGFycmF5X2dldCgkX0dFVCwg
J2xhc3RSZXZpc2lvbicpOworICAgICAgICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9iZXR3
ZWVuKCRyZXBvc2l0b3J5X2lkLCAkcHJlY2VkaW5nX3JldmlzaW9uLCAkbGFzdF9yZXZpc2lvbiwg
JGtleXdvcmQpOwogICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnb2xkZXN0JykgewogICAgICAg
ICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9vbGRlc3QoJHJlcG9zaXRvcnlfaWQpOwogICAg
IH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGF0ZXN0JykgewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVy
LnBocAppbmRleCAwNWQwYTAxY2NhYWY3NDUwOTdhMTg5ZTllMWM2YzY4Zjg5ZjFlZGYyLi43YzE1
NjYwYmJhMTI1NjhlODc5ZGM2ZDdiYmJjZDIzNGE4OWMzN2EyIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1m
ZXRjaGVyLnBocApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAg
ICAgICAgcmV0dXJuICRyZXBvc2l0b3J5X3Jvd1sncmVwb3NpdG9yeV9pZCddOwogICAgIH0KIAot
ICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRvcnlfaWQsICRmaXJzdCwgJHNlY29u
ZCwgJGtleXdvcmQgPSBOVUxMKQorICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRv
cnlfaWQsICRiZWZvcmVfZmlyc3RfcmV2aXNpb24sICRsYXN0X3JldmlzaW9uLCAka2V5d29yZCA9
IE5VTEwpCiAgICAgewogICAgICAgICAkc3RhdGVtZW50cyA9ICdTRUxFQ1QgY29tbWl0X2lkIGFz
ICJpZCIsCiAgICAgICAgICAgICBjb21taXRfcmV2aXNpb24gYXMgInJldmlzaW9uIiwKQEAgLTQ2
LDIyICs0NiwyOSBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAgICAgICAgICAgIFdIRVJF
IGNvbW1pdF9yZXBvc2l0b3J5ID0gJDEgQU5EIGNvbW1pdF9yZXBvcnRlZCA9IHRydWUnOwogICAg
ICAgICAkdmFsdWVzID0gYXJyYXkoJHJlcG9zaXRvcnlfaWQpOwogCi0gICAgICAgIGlmICgkZmly
c3QgJiYgJHNlY29uZCkgewotICAgICAgICAgICAgJGZpcnN0X2NvbW1pdCA9ICR0aGlzLT5jb21t
aXRfZm9yX3JldmlzaW9uKCRyZXBvc2l0b3J5X2lkLCAkZmlyc3QpOwotICAgICAgICAgICAgJHNl
Y29uZF9jb21taXQgPSAkdGhpcy0+Y29tbWl0X2Zvcl9yZXZpc2lvbigkcmVwb3NpdG9yeV9pZCwg
JHNlY29uZCk7Ci0gICAgICAgICAgICAkZmlyc3QgPSAkZmlyc3RfY29tbWl0Wydjb21taXRfdGlt
ZSddOwotICAgICAgICAgICAgJHNlY29uZCA9ICRzZWNvbmRfY29tbWl0Wydjb21taXRfdGltZSdd
OwotICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKLSAgICAgICAgICAg
IGlmICghJGZpcnN0IHx8ICEkc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgJGZpcnN0ID0gJGZp
cnN0X2NvbW1pdFsnY29tbWl0X29yZGVyJ107Ci0gICAgICAgICAgICAgICAgJHNlY29uZCA9ICRz
ZWNvbmRfY29tbWl0Wydjb21taXRfb3JkZXInXTsKKyAgICAgICAgaWYgKCRiZWZvcmVfZmlyc3Rf
cmV2aXNpb24gJiYgJGxhc3RfcmV2aXNpb24pIHsKKyAgICAgICAgICAgICRwcmVjZWRpbmdfY29t
bWl0ID0gJHRoaXMtPmNvbW1pdF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRiZWZvcmVf
Zmlyc3RfcmV2aXNpb24pOworICAgICAgICAgICAgJGxhc3RfY29tbWl0ID0gJHRoaXMtPmNvbW1p
dF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRsYXN0X3JldmlzaW9uKTsKKworICAgICAg
ICAgICAgJHByZWNlZGluZyA9ICRwcmVjZWRpbmdfY29tbWl0Wydjb21taXRfdGltZSddOworICAg
ICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRbJ2NvbW1pdF90aW1lJ107CisgICAgICAgICAg
ICBpZiAoISRwcmVjZWRpbmcgIT0gISRsYXN0KQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9l
cnJvcignSW5jb25zaXN0ZW50Q29tbWl0cycpOworICAgICAgICAgICAgaWYgKCRwcmVjZWRpbmcp
CisgICAgICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICRwcmVjZWRpbmcgPSAkcHJlY2VkaW5nX2NvbW1p
dFsnY29tbWl0X29yZGVyJ107CisgICAgICAgICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRb
J2NvbW1pdF9vcmRlciddOwogICAgICAgICAgICAgICAgICRjb2x1bW5fbmFtZSA9ICdjb21taXRf
b3JkZXInOworICAgICAgICAgICAgICAgIGlmICghJHByZWNlZGluZyB8fCAhJGxhc3QpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCRwcmVjZWRpbmcgPj0gJGxhc3QpCisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdJbnZhbGlkQ29tbWl0UmFuZ2UnKTsKIAotICAgICAgICAgICAgJGluX29yZGVyID0gJGZp
cnN0IDwgJHNlY29uZDsKLSAgICAgICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJGluX29yZGVy
ID8gJGZpcnN0IDogJHNlY29uZCk7Ci0gICAgICAgICAgICAkc3RhdGVtZW50cyAuPSAnIEFORCAn
IC4gJGNvbHVtbl9uYW1lIC4gJyA+PSAkJyAuIGNvdW50KCR2YWx1ZXMpOwotICAgICAgICAgICAg
YXJyYXlfcHVzaCgkdmFsdWVzLCAkaW5fb3JkZXIgPyAkc2Vjb25kIDogJGZpcnN0KTsKKyAgICAg
ICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJHByZWNlZGluZyk7CisgICAgICAgICAgICAkc3Rh
dGVtZW50cyAuPSAnIEFORCAnIC4gJGNvbHVtbl9uYW1lIC4gJyA+ICQnIC4gY291bnQoJHZhbHVl
cyk7CisgICAgICAgICAgICBhcnJheV9wdXNoKCR2YWx1ZXMsICRsYXN0KTsKICAgICAgICAgICAg
ICRzdGF0ZW1lbnRzIC49ICcgQU5EICcgLiAkY29sdW1uX25hbWUgLiAnIDw9ICQnIC4gY291bnQo
JHZhbHVlcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2Jhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcwppbmRleCA5Zjc1Y2QwYTE5NGU0ZDYyNTFm
NzgwNWNlNThjOWMxNzFjOGFhNjhmLi4zNjUzNjNkOGI4NDk4MjkwOTIxNDA5Y2M4ODFiZDAwODM4
ZWRkN2E2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvYmFzZS5qcwpAQCAtMjM4LDcgKzIzOCw3IEBAIGNsYXNzIENvbXBvbmVudEJh
c2UgewogCiAgICAgc3RhdGljIF9hZGRDb250ZW50VG9FbGVtZW50KGVsZW1lbnQsIGNvbnRlbnQp
CiAgICAgewotICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAg
IGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7CiAgICAgICAgICAgICBmb3IgKHZhciBuZXN0
ZWRDaGlsZCBvZiBjb250ZW50KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRUb0Vs
ZW1lbnQoZWxlbWVudCwgbmVzdGVkQ2hpbGQpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnQg
aW5zdGFuY2VvZiBOb2RlKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKaW5kZXggNTc0
M2JhYjU2M2JkMGI2MjgyYzM1ZDg4NTYzNTMzZDNkOGY2NDFkNi4uYWUxZjFlYWU5YTZmNWJiOWFh
NDJhNDQ3YjNjNTI2ZWRhNTEzZjRlOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpz
CkBAIC0xNjMsOSArMTYzLDggQEAgY2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVu
dEJhc2UgewogICAgIF91cGRhdGVDb21taXRMb2dWaWV3ZXIoKQogICAgIHsKICAgICAgICAgY29u
c3QgcmFuZ2UgPSB0aGlzLl9yZXZpc2lvblJhbmdlLnJhbmdlRm9yUmVwb3NpdG9yeSh0aGlzLl9v
cGVuUmVwb3NpdG9yeSk7Ci0gICAgICAgIGNvbnN0IHVwZGF0ZVJlbmRlcmluZyA9ICgpID0+IHsg
dGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsgfTsKLSAgICAgICAgdGhpcy5fY29tbWl0TG9nVmlld2Vy
LnZpZXcodGhpcy5fb3BlblJlcG9zaXRvcnksIHJhbmdlLmZyb20sIHJhbmdlLnRvKS50aGVuKHVw
ZGF0ZVJlbmRlcmluZyk7Ci0gICAgICAgIHVwZGF0ZVJlbmRlcmluZygpOworICAgICAgICB0aGlz
Ll9jb21taXRMb2dWaWV3ZXIudmlldyh0aGlzLl9vcGVuUmVwb3NpdG9yeSwgcmFuZ2UuZnJvbSwg
cmFuZ2UudG8pOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAogICAg
IF9vcGVuQW5hbHlzaXNUYXNrKGFubm90YXRpb24pCkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3Mg
Q2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgdGhpcy5f
bWFpbkNoYXJ0U3RhdHVzLmVucXVldWVUb1JlbmRlcigpOwogCiAgICAgICAgIHZhciBib2R5ID0g
dGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtYm9keScpOwotICAgICAg
ICBpZiAodGhpcy5fY29tbWl0TG9nVmlld2VyICYmIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5jdXJy
ZW50UmVwb3NpdG9yeSgpKSB7CisgICAgICAgIGlmICh0aGlzLl9vcGVuUmVwb3NpdG9yeSkgewog
ICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdoYXMtc2Vjb25kLXNpZGViYXInKTsKICAg
ICAgICAgICAgIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMKaW5kZXggNGVjYzMy
NjlmN2I2OWE4YTk4Mjk2Njg3NDQ2ODZjOTA4NTMxNWJlNS4uOWE1ZDE3NGE1MTk2MGFiNGI4ZjEx
NDU4OThlMDZlYzZhYjM5Mjk2MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jb21taXQtbG9nLXZpZXdlci5q
cwpAQCAtNCw5MiArNCw4NyBAQCBjbGFzcyBDb21taXRMb2dWaWV3ZXIgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcignY29tbWl0
LWxvZy12aWV3ZXInKTsKKyAgICAgICAgdGhpcy5fbGF6aWx5RmV0Y2hDb21taXRMb2dzID0gbmV3
IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX2ZldGNoQ29tbWl0TG9ncy5iaW5kKHRoaXMp
KTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ZldGNo
aW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwotICAgICAg
ICB0aGlzLl9mcm9tID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdG8gPSBudWxsOworICAgICAgICB0
aGlzLl9yZW5kZXJDb21taXRMaXN0TGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlckNvbW1pdExpc3QuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgY3VycmVu
dFJlcG9zaXRvcnkoKSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5OyB9Ci0KLSAgICB2aWV3KHJl
cG9zaXRvcnksIGZyb20sIHRvKQorICAgIHZpZXcocmVwb3NpdG9yeSwgcHJlY2VkaW5nUmV2aXNp
b24sIGxhc3RSZXZpc2lvbikKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ID09
IHJlcG9zaXRvcnkgJiYgdGhpcy5fZnJvbSA9PSBmcm9tICYmIHRoaXMuX3RvID09IHRvKQotICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKKyAgICAgICAgdGhpcy5fbGF6
aWx5RmV0Y2hDb21taXRMb2dzLmV2YWx1YXRlKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9u
LCBsYXN0UmV2aXNpb24pOworICAgIH0KIAorICAgIF9mZXRjaENvbW1pdExvZ3MocmVwb3NpdG9y
eSwgcHJlY2VkaW5nUmV2aXNpb24sIGxhc3RSZXZpc2lvbikKKyAgICB7CisgICAgICAgIHRoaXMu
X2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwot
ICAgICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTsKLSAgICAgICAgdGhpcy5fZnJv
bSA9IGZyb207Ci0gICAgICAgIHRoaXMuX3RvID0gdG87CiAKLSAgICAgICAgaWYgKCFyZXBvc2l0
b3J5KSB7Ci0gICAgICAgICAgICB0aGlzLl9mZXRjaGluZ1Byb21pc2UgPSBudWxsOworICAgICAg
ICBpZiAoIXJlcG9zaXRvcnkgfHwgIWxhc3RSZXZpc2lvbikgewogICAgICAgICAgICAgdGhpcy5f
cmVwb3NpdG9yeSA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51
bGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0bykgewotICAgICAgICAgICAgdGhpcy5f
ZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHByb21pc2UgPSBDb21taXRMb2cu
ZmV0Y2hCZXR3ZWVuUmV2aXNpb25zKHJlcG9zaXRvcnksIGZyb20gfHwgdG8sIHRvKTsKKyAgICAg
ICAgbGV0IHByb21pc2U7CisgICAgICAgIGlmICghcHJlY2VkaW5nUmV2aXNpb24gfHwgcHJlY2Vk
aW5nUmV2aXNpb24gPT0gbGFzdFJldmlzaW9uKQorICAgICAgICAgICAgcHJvbWlzZSA9IENvbW1p
dExvZy5mZXRjaEZvclNpbmdsZVJldmlzaW9uKHJlcG9zaXRvcnksIGxhc3RSZXZpc2lvbik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb21pc2UgPSBDb21taXRMb2cuZmV0Y2hCZXR3ZWVu
UmV2aXNpb25zKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb24pOwog
CisgICAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSByZXBvc2l0b3J5OwogICAgICAgICB0aGlzLl9m
ZXRjaGluZ1Byb21pc2UgPSBwcm9taXNlOwogCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAg
ICAgICAgdmFyIHNwaW5uZXJUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgc2VsZi5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSwgMzAwKTsKLQotICAgICAg
ICB0aGlzLl9mZXRjaGluZ1Byb21pc2UudGhlbihmdW5jdGlvbiAoY29tbWl0cykgewotICAgICAg
ICAgICAgY2xlYXJUaW1lb3V0KHNwaW5uZXJUaW1lcik7Ci0gICAgICAgICAgICBpZiAoc2VsZi5f
ZmV0Y2hpbmdQcm9taXNlICE9IHByb21pc2UpCisgICAgICAgIHRoaXMuX2ZldGNoaW5nUHJvbWlz
ZS50aGVuKChjb21taXRzKSA9PiB7CisgICAgICAgICAgICBpZiAodGhpcy5fZmV0Y2hpbmdQcm9t
aXNlICE9IHByb21pc2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc2Vs
Zi5fZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdHMgPSBj
b21taXRzOwotICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChz
ZWxmLl9mZXRjaGluZ1Byb21pc2UgIT0gcHJvbWlzZSkKKyAgICAgICAgICAgIHRoaXMuX2ZldGNo
aW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRzID0gY29tbWl0czsK
KyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0sIChlcnJvcikg
PT4geworICAgICAgICAgICAgaWYgKHRoaXMuX2ZldGNoaW5nUHJvbWlzZSAhPSBwcm9taXNlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX2ZldGNoaW5nUHJvbWlz
ZSA9IG51bGw7Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRzID0gbnVsbDsKKyAgICAgICAgICAg
IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRz
ID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0p
OwogCi0gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaGluZ1Byb21pc2U7CisgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgcmVuZGVyKCkKICAgICB7Ci0gICAgICAg
IHZhciBjYXB0aW9uID0gJyc7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ICYmICh0aGlz
Ll9jb21taXRzIHx8IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSkpCi0gICAgICAgICAgICBjYXB0aW9u
ID0gdGhpcy5fcmVwb3NpdG9yeS5uYW1lKCk7Ci0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5
U2VsZWN0b3IoJ2NhcHRpb24nKS50ZXh0Q29udGVudCA9IGNhcHRpb247CisgICAgICAgIHRoaXMu
cGFydCgnc3Bpbm5lcicpLmVucXVldWVUb1JlbmRlcigpOworCisgICAgICAgIGNvbnN0IHNob3Vs
ZFNob3dSZXBvc2l0b3J5TmFtZSA9IHRoaXMuX3JlcG9zaXRvcnkgJiYgKHRoaXMuX2NvbW1pdHMg
fHwgdGhpcy5fZmV0Y2hpbmdQcm9taXNlKTsKKyAgICAgICAgdGhpcy5jb250ZW50KCdyZXBvc2l0
b3J5LW5hbWUnKS50ZXh0Q29udGVudCA9IHNob3VsZFNob3dSZXBvc2l0b3J5TmFtZSA/IHRoaXMu
X3JlcG9zaXRvcnkubmFtZSgpIDogJyc7CisgICAgICAgIHRoaXMuY29udGVudCgnc3Bpbm5lci1j
b250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fZmV0Y2hpbmdQcm9taXNlID8gbnVsbCA6
ICdub25lJzsKKyAgICAgICAgdGhpcy5fcmVuZGVyQ29tbWl0TGlzdExhemlseS5ldmFsdWF0ZSh0
aGlzLl9jb21taXRzKTsKKyAgICB9CiAKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnRC
YXNlLmNyZWF0ZUVsZW1lbnQ7Ci0gICAgICAgIHZhciBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVh
dGVMaW5rOworICAgIF9yZW5kZXJDb21taXRMaXN0KGNvbW1pdHMpCisgICAgeworICAgICAgICBj
b25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBjb25z
dCBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCi0gICAgICAgIHRoaXMucmVuZGVy
UmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpLCAodGhpcy5fY29t
bWl0cyB8fCBbXSkubWFwKGZ1bmN0aW9uIChjb21taXQpIHsKLSAgICAgICAgICAgIHZhciBsYWJl
bCA9IGNvbW1pdC5sYWJlbCgpOwotICAgICAgICAgICAgdmFyIHVybCA9IGNvbW1pdC51cmwoKTsK
KyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnY29tbWl0cy1saXN0Jyks
IChjb21taXRzIHx8IFtdKS5tYXAoKGNvbW1pdCkgPT4geworICAgICAgICAgICAgY29uc3QgbGFi
ZWwgPSBjb21taXQubGFiZWwoKTsKKyAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbW1pdC51cmwo
KTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICBl
bGVtZW50KCd0aCcsIFtlbGVtZW50KCdoNCcsIHtjbGFzczogJ3JldmlzaW9uJ30sIHVybCA/IGxp
bmsobGFiZWwsIGNvbW1pdC50aXRsZSgpLCB1cmwpIDogbGFiZWwpLCBjb21taXQuYXV0aG9yKCkg
fHwgJyddKSwKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGNvbW1pdC5tZXNzYWdlKCkg
PyBjb21taXQubWVzc2FnZSgpLnN1YnN0cmluZygwLCA4MCkgOiAnJyldKTsKICAgICAgICAgfSkp
OwotCi0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jb21taXRzLXZpZXdl
ci1zcGlubmVyJykuc3R5bGUuZGlzcGxheSA9IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA/IG51bGwg
OiAnbm9uZSc7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gYAogICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWl0cy12aWV3ZXItY29u
dGFpbmVyIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21taXRzLXZpZXdlci1zcGlu
bmVyIj48c3Bpbm5lci1pY29uPjwvc3Bpbm5lci1pY29uPjwvZGl2PgotICAgICAgICAgICAgICAg
IDx0YWJsZSBjbGFzcz0iY29tbWl0cy12aWV3ZXItdGFibGUiPgotICAgICAgICAgICAgICAgICAg
ICA8Y2FwdGlvbj48L2NhcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KLSAgICAg
ICAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzcGlubmVy
LWNvbnRhaW5lciI+PHNwaW5uZXItaWNvbiBpZD0ic3Bpbm5lciI+PC9zcGlubmVyLWljb24+PC9k
aXY+CisgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJjb21taXRzLXZpZXdlci10YWJsZSI+Cisg
ICAgICAgICAgICAgICAgICAgIDxjYXB0aW9uIGlkPSJyZXBvc2l0b3J5LW5hbWUiPjwvY2FwdGlv
bj4KKyAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJjb21taXRzLWxpc3QiPjwvdGJvZHk+
CiAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgIDwvZGl2PgogYDsKQEAgLTEw
NCwzMSArOTksMjcgQEAgY2xhc3MgQ29tbWl0TG9nVmlld2VyIGV4dGVuZHMgQ29tcG9uZW50QmFz
ZSB7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgeworICAgICAg
ICAgICAgI2NvbW1pdHMtdmlld2VyLXRhYmxlIHsKICAgICAgICAgICAgICAgICB3aWR0aDogMTAw
JTsKKyAgICAgICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAg
ICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgY2FwdGlvbiB7CisgICAgICAgICAgICBj
YXB0aW9uIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAg
ICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLmNvbW1pdHMtdmlld2VyLXRhYmxlIHsKLSAgICAgICAgICAgICAgICBib3Jk
ZXItY29sbGFwc2U6IGNvbGxhcHNlOwotICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNv
bGlkIDFweCAjY2NjOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3
ZXItdGFibGUgLnJldmlzaW9uIHsKKyAgICAgICAgICAgIC5yZXZpc2lvbiB7CiAgICAgICAgICAg
ICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgICBwYWRk
aW5nOiAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFi
bGUgdGQsCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgdGggeworICAgICAgICAg
ICAgdGQsIHRoIHsKICAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAg
ICAgICAgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgICAg
IHBhZGRpbmc6IDAuMnJlbTsKQEAgLTEzNyw3ICsxMjgsNyBAQCBjbGFzcyBDb21taXRMb2dWaWV3
ZXIgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItc3Bp
bm5lciB7CisgICAgICAgICAgICAjc3Bpbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAg
IG1hcmdpbi10b3A6IDJyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvY29tbWl0LWxvZy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cuanMKaW5kZXggNGViYTdlMTAxMmFlMDFkOWU1MTJmOTA2
NDg4N2M3YzA2YTUxNDY1OS4uNTYyNGFmNTRiZTZlOGRjOGI4ZjU1YWQ2Yjk2NzcyZDUyNjhlYmVi
NSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
Y29tbWl0LWxvZy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9jb21taXQtbG9nLmpzCkBAIC00OSw3MCArNDksNDYgQEAgY2xhc3MgQ29tbWl0TG9nIGV4
dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgaWYgKHRoaXMgPT0gcHJldmlvdXNDb21t
aXQpCiAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdCA9IG51bGw7CiAKLSAgICAgICAgdmFyIHJl
cG9zaXRvcnkgPSB0aGlzLl9yZXBvc2l0b3J5OworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0g
dGhpcy5fcmVwb3NpdG9yeTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NvbW1pdCkKLSAgICAgICAg
ICAgIHJldHVybiB7ZnJvbTogbnVsbCwgdG86IHRoaXMucmV2aXNpb24oKSwgcmVwb3NpdG9yeTog
cmVwb3NpdG9yeSwgbGFiZWw6IHRoaXMubGFiZWwoKSwgdXJsOiB0aGlzLnVybCgpfTsKLQotICAg
ICAgICB2YXIgdG8gPSB0aGlzLnJldmlzaW9uKCk7Ci0gICAgICAgIHZhciBmcm9tID0gcHJldmlv
dXNDb21taXQucmV2aXNpb24oKTsKLSAgICAgICAgdmFyIGxhYmVsID0gbnVsbDsKLSAgICAgICAg
aWYgKHBhcnNlSW50KHRvKSA9PSB0bykgeyAvLyBlLmcuIHIxMjM0NS4KLSAgICAgICAgICAgIGZy
b20gPSAocGFyc2VJbnQoZnJvbSkgKyAxKS50b1N0cmluZygpOworICAgICAgICAgICAgcmV0dXJu
IHtyZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogdGhpcy5sYWJlbCgpLCB1cmw6IHRoaXMu
dXJsKCl9OworCisgICAgICAgIGNvbnN0IHRvID0gdGhpcy5yZXZpc2lvbigpOworICAgICAgICBj
b25zdCBmcm9tID0gcHJldmlvdXNDb21taXQucmV2aXNpb24oKTsKKyAgICAgICAgbGV0IGZyb21S
ZXZpc2lvbkZvclVSTCA9IGZyb207CisgICAgICAgIGxldCBsYWJlbCA9IG51bGw7CisgICAgICAg
IGlmIChwYXJzZUludChmcm9tKSA9PSBmcm9tKSB7IC8vIGUuZy4gcjEyMzQ1LgorICAgICAgICAg
ICAgZnJvbVJldmlzaW9uRm9yVVJMID0gKHBhcnNlSW50KGZyb20pICsgMSkudG9TdHJpbmc7CiAg
ICAgICAgICAgICBsYWJlbCA9IGByJHtmcm9tfS1yJHt0aGlzLnJldmlzaW9uKCl9YDsKLSAgICAg
ICAgfSBlbHNlIGlmICh0by5sZW5ndGggPT0gNDApIHsgLy8gZS5nLiBnaXQgaGFzaAorICAgICAg
ICB9IGVsc2UgaWYgKHRvLmxlbmd0aCA9PSA0MCkgLy8gZS5nLiBnaXQgaGFzaAogICAgICAgICAg
ICAgbGFiZWwgPSBgJHtmcm9tLnN1YnN0cmluZygwLCA4KX0uLiR7dG8uc3Vic3RyaW5nKDAsIDgp
fWA7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICBlbHNlCiAgICAgICAgICAgICBsYWJlbCA9IGAk
e2Zyb219IC0gJHt0b31gOwogCi0gICAgICAgIHJldHVybiB7ZnJvbTogZnJvbSwgdG86IHRvLCBy
ZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogbGFiZWwsIHVybDogcmVwb3NpdG9yeS51cmxG
b3JSZXZpc2lvblJhbmdlKGZyb20sIHRvKX07CisgICAgICAgIHJldHVybiB7cmVwb3NpdG9yeTog
cmVwb3NpdG9yeSwgbGFiZWw6IGxhYmVsLCB1cmw6IHJlcG9zaXRvcnkudXJsRm9yUmV2aXNpb25S
YW5nZShmcm9tLCB0byl9OwogICAgIH0KIAotICAgIHN0YXRpYyBmZXRjaEJldHdlZW5SZXZpc2lv
bnMocmVwb3NpdG9yeSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoQmV0d2VlblJldmlzaW9u
cyhyZXBvc2l0b3J5LCBwcmVjZWRpbmdSZXZpc2lvbiwgbGFzdFJldmlzaW9uKQogICAgIHsKLSAg
ICAgICAgdmFyIHBhcmFtcyA9IFtdOwotICAgICAgICBpZiAoZnJvbSAmJiB0bykgewotICAgICAg
ICAgICAgcGFyYW1zLnB1c2goWydmcm9tJywgZnJvbV0pOwotICAgICAgICAgICAgcGFyYW1zLnB1
c2goWyd0bycsIHRvXSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdXJsID0gJy4uL2FwaS9j
b21taXRzLycgKyByZXBvc2l0b3J5LmlkKCkgKyAnLz8nICsgcGFyYW1zLm1hcChmdW5jdGlvbiAo
a2V5VmFsdWUpIHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5VmFs
dWVbMF0pICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdKTsKLSAgICAgICAg
fSkuam9pbignJicpOwotCi0KLSAgICAgICAgdmFyIGNhY2hlZExvZ3MgPSB0aGlzLl9jYWNoZWRD
b21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvKTsKLSAgICAgICAgaWYgKGNhY2hlZExvZ3Mp
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVz
b2x2ZShjYWNoZWRMb2dzKTsgfSk7Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAg
ICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHVybCkudGhlbihmdW5jdGlvbiAo
ZGF0YSkgewotICAgICAgICAgICAgdmFyIGNvbW1pdHMgPSBkYXRhWydjb21taXRzJ10ubWFwKGZ1
bmN0aW9uIChyYXdEYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmF3RGF0YS5yZXBvc2l0b3J5ID0g
cmVwb3NpdG9yeTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmds
ZXRvbihyYXdEYXRhLmlkLCByYXdEYXRhKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
c2VsZi5fY2FjaGVDb21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBjb21taXRzKTsKLSAg
ICAgICAgICAgIHJldHVybiBjb21taXRzOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRklYTUU6
IFRoZSBjYWNoZSBzaG91bGQgYmUgc21hcnRlciBhYm91dCBmZXRjaGluZyBhIHJhbmdlIHdpdGhp
biBhbiBhbHJlYWR5IGZldGNoZWQgcmFuZ2UsIGV0Yy4uLgorICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGV2aWN0IHNvbWUgZW50aXJlcyBmcm9tIHRoZSBjYWNoZSBpbiBjYWNoZWRGZXRjaC4K
KyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvY29tbWl0cy8ke3JlcG9zaXRv
cnkuaWQoKX0vYCwge3ByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb259KQorICAgICAgICAg
ICAgLnRoZW4oKGRhdGEpID0+IHRoaXMuX2NvbnN0cnVjdEZyb21SYXdEYXRhKHJlcG9zaXRvcnks
IGRhdGEpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2NhY2hlZENvbW1pdExvZ3MocmVwb3NpdG9y
eSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoRm9yU2luZ2xlUmV2aXNpb24ocmVwb3NpdG9y
eSwgcmV2aXNpb24pCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2NhY2hlcykKLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotICAgICAgICB2YXIgY2FjaGUgPSB0aGlzLl9jYWNoZXNbcmVwb3Np
dG9yeS5pZCgpXTsKLSAgICAgICAgaWYgKCFjYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
OwotICAgICAgICAvLyBGSVhNRTogTWFrZSBlYWNoIGNvbW1pdCBrbm93IG9mIGl0cyBwYXJlbnQs
IHRoZW4gd2UgY2FuIGRvIGEgYmV0dGVyIGNhY2hpbmcuIAotICAgICAgICByZXR1cm4gY2FjaGVb
ZnJvbSArICd8JyArIHRvXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkv
Y29tbWl0cy8ke3JlcG9zaXRvcnkuaWQoKX0vJHtyZXZpc2lvbn1gKS50aGVuKChkYXRhKSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0RnJvbVJhd0RhdGEocmVwb3NpdG9y
eSwgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBfY2FjaGVDb21taXRM
b2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBsb2dzKQorICAgIHN0YXRpYyBfY29uc3RydWN0RnJv
bVJhd0RhdGEocmVwb3NpdG9yeSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2Fj
aGVzKQotICAgICAgICAgICAgdGhpcy5fY2FjaGVzID0ge307Ci0gICAgICAgIGlmICghdGhpcy5f
Y2FjaGVzW3JlcG9zaXRvcnkuaWQoKV0pCi0gICAgICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3Np
dG9yeS5pZCgpXSA9IHt9OwotICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3NpdG9yeS5pZCgpXVtm
cm9tICsgJ3wnICsgdG9dID0gbG9nczsKKyAgICAgICAgcmV0dXJuIGRhdGFbJ2NvbW1pdHMnXS5t
YXAoKHJhd0RhdGEpID0+IHsKKyAgICAgICAgICAgIHJhd0RhdGEucmVwb3NpdG9yeSA9IHJlcG9z
aXRvcnk7CisgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyYXdE
YXRhLmlkLCByYXdEYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcwpp
bmRleCBmODA1YzU2MDhkMmQwYzAzNWQ5MmQ5OTM1ZWJjNDZkMTc1MTFkMjhlLi42MzE3MGY3YTM1
ODQ5OGQwNmViZjRiY2U2NTM0NzY4YThjMWU0NTM2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2RhdGEtbW9kZWwuanMKQEAgLTYyLDEw
ICs2MiwxMCBAQCBjbGFzcyBEYXRhTW9kZWxPYmplY3QgewogCiAgICAgc3RhdGljIGNhY2hlZEZl
dGNoKHBhdGgsIHBhcmFtcywgbm9DYWNoZSkKICAgICB7Ci0gICAgICAgIHZhciBxdWVyeSA9IFtd
OworICAgICAgICBjb25zdCBxdWVyeSA9IFtdOwogICAgICAgICBpZiAocGFyYW1zKSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zKQotICAgICAgICAgICAgICAgIHF1ZXJ5LnB1
c2goa2V5ICsgJz0nICsgcGFyc2VJbnQocGFyYW1zW2tleV0pKTsKKyAgICAgICAgICAgIGZvciAo
bGV0IGtleSBpbiBwYXJhbXMpCisgICAgICAgICAgICAgICAgcXVlcnkucHVzaChrZXkgKyAnPScg
KyBlc2NhcGUocGFyYW1zW2tleV0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAocXVlcnkubGVu
Z3RoKQogICAgICAgICAgICAgcGF0aCArPSAnPycgKyBxdWVyeS5qb2luKCcmJyk7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3JlbW90ZS5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCmluZGV4IDBlZWU4MzMzOTI5
YTVjNGM2ZjRhYjkzODliMjMyNTA3YWUxYmVjNmEuLjhkOTIwM2I2YmEyM2JiMmUxMjU4Y2M4Mjkw
ZDcxNDZlM2EzZjYxODcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcmVtb3RlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
cmVtb3RlLmpzCkBAIC0xMiw3ICsxMiw3IEBAIGNsYXNzIEJyb3dzZXJSZW1vdGVBUEkgZXh0ZW5k
cyBDb21tb25SZW1vdGVBUEkgewogICAgICAgICAgICAgZnVuY3Rpb24gb25sb2FkKCkgewogICAg
ICAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdSZW1vdGUnLCAn
c2VuZEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgIT0gMjAw
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzamVjdCh4aHIuc3RhdHVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh4aHIuc3RhdHVzKTsKICAgICAgICAgICAgICAg
ICByZXNvbHZlKHtzdGF0dXNDb2RlOiB4aHIuc3RhdHVzLCByZXNwb25zZVRleHQ6IHhoci5yZXNw
b25zZVRleHR9KTsKICAgICAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWNvbW1pdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRlc3RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliOWM5MzU4MDY5M2E2Yzk3ZTQ3MjliMGViZjhhZDkxYjhiNTg3MWMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRz
LXRlc3RzLmpzCkBAIC0wLDAgKzEsNTcyIEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzc2Vy
dCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworCitjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKK2NvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVx
dWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9y
dDsKK2NvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9u
LW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKKworZGVzY3JpYmUoIi9hcGkvY29t
bWl0cy8iLCBmdW5jdGlvbiAoKSB7CisgICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CisKKyAg
ICBjb25zdCBzdWJ2ZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21l
U2xhdmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAg
ICAiY29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDgiLAorICAg
ICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDI6NTI6MzQuNTc3WiIsCisgICAgICAg
ICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJaYWxhbiBCdWp0YXMiLCAiYWNjb3VudCI6ICJ6
YWxhbkBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJhIG1lc3NhZ2Ui
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAor
ICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WiIsCisgICAg
ICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDaHJpcyBEdW1leiIsICJhY2NvdW50Ijog
ImNkdW1lekBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJzb21lIG1l
c3NhZ2UiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJwcmV2aW91c0NvbW1pdCI6
ICIyMTA5NDkiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NTAiLAorICAgICAg
ICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIsCisgICAgICAgICAg
ICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21t
aXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICJtZXNzYWdlIjogImFub3Ro
ZXIgbWVzc2FnZSIsCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25z
dCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xh
dmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAi
Y29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkQzMiIsCisgICAgICAgICAg
ICAgICAgIm9yZGVyIjogNgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6
ICIxNkM2OCIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjogNQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkM2NyIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjog
NAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkIyNjU3IiwKKyAg
ICAgICAgICAgICAgICAib3JkZXIiOiAzCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjE2QjI1NTUiLAorICAgICAgICAgICAgICAgICJvcmRlciI6IDIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NY
IiwKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTZBMzIzIiwKKyAgICAgICAgICAgICAg
ICAib3JkZXIiOiAxCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25z
dCBub3RZZXRSZXBvcnRlZENvbW1pdCA9IHsKKyAgICAgICAgcmV2aXNpb246ICcyMTA5NTEnLAor
ICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo1NjoyMC4wNDVaJworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKGNvbW1pdCwgc3VibWl0dGVk
KQorICAgIHsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsncmV2aXNpb24nXSwgc3VibWl0
dGVkWydyZXZpc2lvbiddKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKG5ldyBEYXRlKGNvbW1pdFsn
dGltZSddKS50b0lTT1N0cmluZygpLCBzdWJtaXR0ZWRbJ3RpbWUnXSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRbJ21lc3NhZ2UnXSwgc3VibWl0dGVkWydtZXNzYWdlJ10pOworICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0WydhdXRob3JOYW1lJ10sIHN1Ym1pdHRlZFsnYXV0aG9yJ11b
J25hbWUnXSk7CisgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvckVtYWlsJ10sIHN1
Ym1pdHRlZFsnYXV0aG9yJ11bJ2FjY291bnQnXSk7CisgICAgICAgIGlmKHN1Ym1pdHRlZFsncHJl
dmlvdXNDb21taXQnXSkgeworICAgICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdFsncHJldmlvdXND
b21taXQnXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0WydwcmV2aW91c0NvbW1pdCddLCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRl
c2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+LycsICgpID0+IHsKKyAgICAgICAgaXQo
InNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNo
aW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0JykudGhlbigocmVzcG9uc2Up
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
UmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gdGhlcmUgYXJlIG5v
IHJlcG9ydGVkIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAn
V2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5
OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJL
aXQnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qg
b2YgYWxsIGNvbW1pdHMgZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNvbW1pdHMpOworICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LycpOwor
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworCisgICAgICAgICAgICAgICAg
Y29uc3QgY29tbWl0cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICAgICAgY29uc3Qgc3VibWl0
dGVkQ29tbWl0cyA9IHN1YnZlcnNpb25Db21taXRzWydjb21taXRzJ107CisgICAgICAgICAgICAg
ICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1swXSwgc3VibWl0dGVk
Q29tbWl0c1swXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJt
aXR0ZWQoY29tbWl0c1sxXSwgc3VibWl0dGVkQ29tbWl0c1sxXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1syXSwgc3VibWl0dGVkQ29t
bWl0c1syXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3ByZXZp
b3VzQ29tbWl0J10sIGNvbW1pdHNbMV1bJ2lkJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsaXN0IG9mIG9yZGVyZWQgY29t
bWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvJyk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0
cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdHRlZENv
bW1pdHMgPSBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0cyddOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzLmxlbmd0aCwgc3VibWl0dGVkQ29tbWl0cy5sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBdWydyZXZpc2lvbiddLCBzdWJt
aXR0ZWRDb21taXRzWzVdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0c1sxXVsncmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1s0XVsncmV2aXNpb24n
XSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3JldmlzaW9uJ10s
IHN1Ym1pdHRlZENvbW1pdHNbM11bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRzWzNdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzJdWydyZXZp
c2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s0XVsncmV2aXNp
b24nXSwgc3VibWl0dGVkQ29tbWl0c1sxXVsncmV2aXNpb24nXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdHNbNV1bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbMF1b
J3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisg
ICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vb2xkZXN0JywgKCkgPT4gewor
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBh
cmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0
JykudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0
cyB3aGVuIHRoZXJlIGFyZSBubyBjb21taXRzIiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAn
bmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3Qn
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBj
b21taXQiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNp
b25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBv
c3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0
cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0Jyk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29t
bWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25D
b21taXRzWydjb21taXRzJ11bMF0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgY29tbWl0IGJhc2VkIG9uICdjb21t
aXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5nIiwgKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAg
IHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0cykudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9h
cGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1pdHMpOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvT1NYL29sZGVzdCcpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMn
XVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVs1XVsncmV2
aXNpb24nXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk
ZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXRlc3QnLCAoKSA9PiB7CisgICAg
ICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBu
byBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKS50
aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHRzIHdo
ZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1l
JzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwor
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgb2xkZXN0IGNvbW1p
dCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCk7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNv
bW1pdHMpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsK
KyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
dWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJ
c1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgc3VidmVyc2lvbkNvbW1p
dHNbJ2NvbW1pdHMnXS5zbGljZSgpLnBvcCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgbGF0ZXN0IGNvbW1pdCBiYXNlZCBv
biAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CisgICAg
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3Rh
dHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0
YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21t
aXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydj
b21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ11b
MF1bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vbGFzdC1yZXBvcnRlZCcs
ICgpID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdo
ZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2Vi
S2l0L2xhc3QtcmVwb3J0ZWQnKS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVy
biBhbiBlbXB0eSByZXN1bHQgd2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQo
J3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzog
JzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQorICAgICAgICAg
ICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Cisg
ICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdHMg
d2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQv
bGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVy
biB0aGUgb2xkZXN0IHJlcG9ydGVkIGNvbW1pdCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgY29uc3QgcmVtb3RlID0g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLAor
ICAgICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1l
JzogJ1dlYktpdCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3Jl
cG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiBub3RZZXRSZXBvcnRlZENvbW1pdC5yZXZpc2lvbiwg
J3RpbWUnOiBub3RZZXRSZXBvcnRlZENvbW1pdC50aW1lfSksCisgICAgICAgICAgICBdKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1
cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04o
Jy9hcGkvY29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddLnNsaWNlKCkucG9wKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXN0IHJlcG9ydGVkIGNvbW1pdCBiYXNl
ZCBvbiAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRo
U3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkJyk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT08c3RhcnRfb3JkZXI+JnRvPTxlbmRfb3JkZXI+JywgKCkgPT4geworICAg
ICAgICBpdCgic2hvdWxkIHJldHVybiBhIGxpc3Qgb2YgY29tbWl0IGluIGdpdmVuIHZhbGlkIG9y
ZGVyIHJhbmdlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ09TWCd9KSwK
KyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnU2llcnJhMTZDNjcnLCAnb3JkZXInOiAzNjcsICdyZXBvcnRlZCc6IHRydWV9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjgnLCAnb3JkZXInOiAzNjgsICdyZXBvcnRlZCc6IHRy
dWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjknLCAnb3JkZXInOiAzNjksICdyZXBvcnRlZCc6
IGZhbHNlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0
b3J5JzogMSwgJ3JldmlzaW9uJzogJ1NpZXJyYTE2RDMyJywgJ29yZGVyJzogNDMyLCAncmVwb3J0
ZWQnOiB0cnVlfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gv
bGFzdC1yZXBvcnRlZD9mcm9tPTM2NyZ0bz0zNzAnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJl
c3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0
dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlc3BvbnNlWydj
b21taXRzJ107CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSByZXN1bHRzWzBdOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb21taXQucmV2aXNpb24sICdTaWVycmExNkM2OCcpOworICAg
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zy
b209MzcwJnRvPTM2NycpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MjAwJnRv
PTI5OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY5JnRvPTQzMicpOwor
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBjb25z
dCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9
IHJlc3VsdHNbMF07CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lv
biwgJ1NpZXJyYTE2RDMyJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi88Y29tbWl0PicsICgp
ID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
LzIxMDk0OScpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFVua25vd25D
b21taXQgd2hlbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBjb21taXQgZG9lcyBub3QgZXhpc3QgaW4g
dGhlIGRhdGFiYXNlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktp
dCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44
ODdaJ30pCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LzIx
MDk0OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJu
IHRoZSBjb21taXQgZXZlbiBpZiBpdCBoYWQgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAn
LCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvMjEwOTUwJyk7CisgICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnY29t
bWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNP
bmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOiAnMjEw
OTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3
WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6IG51bGwsIGFjY291bnQ6IG51
bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLAorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIHRoZSBmdWxsIHJlc3VsdCBmb3IgYSByZXBvcnRlZCBjb21taXQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOworICAgICAg
ICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygn
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9h
cGkvY29tbWl0cy9XZWJLaXQvMjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09L
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0
dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddWzFd
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgIH0pOworCisgICAgZGVzY3Jp
YmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vP3ByZWNlZGluZ1JldmlzaW9uPTxjb21taXQt
MT4mbGFzdFJldmlzaW9uPTxjb21taXQtMj4nLCAoKSA9PiB7CisgICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBv
c2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJyku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVu
IG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJh
c2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIu
aW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAg
ICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZp
c2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAg
ICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1Jl
dmlzaW9uPTIxMDkwMCZsYXN0UmV2aXNpb249MjExMDAwJyk7CisgICAgICAgICAgICB9KS50aGVu
KChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdVbmtub3duQ29tbWl0Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gY29tbWl0
cyBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIGhhdmUgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5
NDknLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonfSksCisgICAgICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIx
MDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KSwKKyAgICAgICAgICAg
IF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1JldmlzaW9uPTIx
MDk0OSZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1p
dHMnXSwgW10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIEludmFsaWRDb21taXRSYW5nZSB3aGVuIHRoZSBzcGVjaWZpZWQgcmFuZ2Ug
aXMgYmFja3dhcmRzIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktp
dCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42
NDVaJ30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NTAmbGFzdFJldmlzaW9uPTIxMDk0OScpOworICAgICAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZENvbW1pdFJhbmdlJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdXNlIHRoZSBj
b21taXQgb3JkZXIgd2hlbiB0aW1lIGlzIG5vdCBzcGVjaWZpZWQiLCAoKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycs
IG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUn
LCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3
Jywgb3JkZXI6IDMsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T04oJy9hcGkvY29tbWl0cy9tYWNPUy8/cHJlY2VkaW5nUmV2aXNpb249MTAuMTIlMjAxNkEzMjMm
bGFzdFJldmlzaW9uPTEwLjEyJTIwMTZCMjY1NycpOworICAgICAgICAgICAgfSkudGhlbigocmVz
cG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydj
b21taXRzJ10ubWFwKChjb21taXQpID0+IGNvbW1pdFsncmV2aXNpb24nXSksIFsnMTAuMTIgMTZC
MjU1NScsICcxMC4xMiAxNkIyNjU3J10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIEluY29uc2lzdGVudENvbW1pdHMgd2hlbiBwcmVj
ZWRpbmdSZXZpc2lvbiBzcGVjaWZpZXMgYSB0aW1lIGJ1dCBsYXN0UmV2aXNpb24gZG9lcyBub3Qi
LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9u
JzogJzEwLjEyIDE2QTMyMycsIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonLCBvcmRl
cjogMSwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNTU1Jywgb3Jk
ZXI6IDIsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2Nv
bW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjY1NycsIG9y
ZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIwMTZBMzIzJmxhc3RS
ZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBJbmNvbnNpc3RlbnRDb21taXRzIHdoZW4gcHJlY2Vk
aW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgaGFzIGEgdGltZSBidXQgbGFzdFJl
dmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1Mn
fSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzog
MSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVl
fSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzog
MSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1
ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6
IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgdGltZTogJzIwMTctMDEtMjBUMDM6MjM6
NTAuNjQ1WicsIG9yZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIw
MTZBMzIzJmxhc3RSZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBlbXB0eSByZXN1bHRzIHdoZW4g
cHJlY2VkaW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgb3IgYW4gb3JkZXIgaGFz
IGEgdGltZSBidXQgbGFzdFJldmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzog
MSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsICdyZXBvcnRl
ZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9z
aXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjU1NScsIG9yZGVyOiAyLCAncmVwb3J0
ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBv
c2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI2NTcnLCBvcmRlcjogMywgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21h
Y09TLz9wcmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIl
MjAxNkIyNjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGVt
cHR5IHJlc3VsdHMgd2hlbiBwcmVjZWRpbmdSZXZpc2lvbiBhbiBvcmRlciBoYXMgYSB0aW1lIGJ1
dCBsYXN0UmV2aXNpb24gZG9lcyBub3QiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25h
bWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydy
ZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVw
b3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydy
ZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3Jl
cG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgJ3JlcG9ydGVkJzog
dHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21hY09TLz9w
cmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIlMjAxNkIy
NjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHJlcG9ydGVk
IGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQn
OiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0OCcsICd0aW1lJzogJzIw
MTctMDEtMjBUMDI6NTI6MzQuNTc3WicsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAn
MjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzog
dHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvV2ViS2l0Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NDgmbGFzdFJldmlzaW9u
PTIxMDk1MCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1p
dHMnXVswXSwgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKKyAg
ICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NDknLAorICAgICAgICAgICAgICAgICAg
ICB0aW1lOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywKKyAgICAgICAgICAgICAgICAgICAg
YXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U6IG51bGwsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMV0sIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uOiAnMjEwOTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTct
MDEtMjBUMDM6NDk6MzcuODg3WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6
IG51bGwsIGFjY291bnQ6IG51bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxs
LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgbm90IGluY2x1ZGUgYSByZXZpc2lvbiBub3Qgd2l0aGluIHRoZSBz
cGVjaWZpZWQgcmFuZ2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTQ3JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMjozODo0NS40ODVa
JywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTQ4JywgJ3RpbWUnOiAnMjAx
Ny0wMS0yMFQwMjo1MjozNC41NzdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAn
MjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzog
ZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRv
cnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OToz
Ny44ODdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29t
bWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2
ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGlu
Z1JldmlzaW9uPTIxMDk0NyZsYXN0UmV2aXNpb249MjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1
Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMn
XVsxXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsKKworfSk7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktY29tbWl0
cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlYzU0YTMyYmRhNDFlYTEwOWFh
Yzc5Y2RmZjRiOGViM2E2YzI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDc2ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQot
Y29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Ci0KLWNvbnN0IFRlc3RTZXJ2ZXIgPSBy
ZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwotY29uc3QgYWRkU2xhdmVGb3JS
ZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFNs
YXZlRm9yUmVwb3J0OwotY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291
cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwotCi1kZXNjcmli
ZSgiL2FwaS9jb21taXRzLyIsIGZ1bmN0aW9uICgpIHsKLSAgICBwcmVwYXJlU2VydmVyVGVzdCh0
aGlzKTsKLQotICAgIGNvbnN0IHN1YnZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVO
YW1lIjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29y
ZCIsCi0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIx
MDk0OCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMjo1MjozNC41Nzda
IiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIlphbGFuIEJ1anRhcyIsICJh
Y2NvdW50IjogInphbGFuQGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdlIjog
ImEgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjog
IjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzoyMzo1MC42
NDVaIiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNocmlzIER1bWV6Iiwg
ImFjY291bnQiOiAiY2R1bWV6QGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdl
IjogInNvbWUgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInByZXZp
b3VzQ29tbWl0IjogIjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIxMDk1
MCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaIiwK
LSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2Nv
dW50IjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCi0gICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiOiAiYW5vdGhlciBtZXNzYWdlIiwKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0K
LQotICAgIGNvbnN0IHN5c3RlbVZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVOYW1l
IjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIs
Ci0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2RDMyIiwK
LSAgICAgICAgICAgICAgICAib3JkZXIiOiA2Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAg
InJldmlzaW9uIjogIjE2QzY4IiwKLSAgICAgICAgICAgICAgICAib3JkZXIiOiA1Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9T
WCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2QzY3IiwKLSAgICAgICAgICAgICAg
ICAib3JkZXIiOiA0Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2
QjI2NTciLAotICAgICAgICAgICAgICAgICJvcmRlciI6IDMKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwKLSAgICAgICAg
ICAgICAgICAicmV2aXNpb24iOiAiMTZCMjU1NSIsCi0gICAgICAgICAgICAgICAgIm9yZGVyIjog
MgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJPU1giLAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkEzMjMiLAotICAg
ICAgICAgICAgICAgICJvcmRlciI6IDEKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0K
LQotICAgIGNvbnN0IG5vdFlldFJlcG9ydGVkQ29tbWl0ID0gewotICAgICAgICByZXZpc2lvbjog
JzIxMDk1MScsCi0gICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjU2OjIwLjA0NVonCi0gICAg
fQotCi0gICAgZnVuY3Rpb24gYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0
LCBzdWJtaXR0ZWQpCi0gICAgewotICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0WydyZXZpc2lv
biddLCBzdWJtaXR0ZWRbJ3JldmlzaW9uJ10pOwotICAgICAgICBhc3NlcnQuZXF1YWwobmV3IERh
dGUoY29tbWl0Wyd0aW1lJ10pLnRvSVNPU3RyaW5nKCksIHN1Ym1pdHRlZFsndGltZSddKTsKLSAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnbWVzc2FnZSddLCBzdWJtaXR0ZWRbJ21lc3NhZ2Un
XSk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvck5hbWUnXSwgc3VibWl0dGVk
WydhdXRob3InXVsnbmFtZSddKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnYXV0aG9y
RW1haWwnXSwgc3VibWl0dGVkWydhdXRob3InXVsnYWNjb3VudCddKTsKLSAgICAgICAgaWYoc3Vi
bWl0dGVkWydwcmV2aW91c0NvbW1pdCddKSB7Ci0gICAgICAgICAgICBhc3NlcnQub2soY29tbWl0
WydwcmV2aW91c0NvbW1pdCddKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRbJ3ByZXZpb3VzQ29tbWl0J10sIG51bGwpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vJywgKCkgPT4gewot
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBh
cmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQnKS50aGVu
KChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHQgd2hlbiB0
aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAx
LCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTct
MDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVy
biB0aGUgbGlzdCBvZiBhbGwgY29tbWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRz
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7
Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9X
ZWJLaXQvJyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0KLSAgICAg
ICAgICAgICAgICBjb25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAzKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBzdWJtaXR0ZWRDb21taXRzID0gc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzBd
LCBzdWJtaXR0ZWRDb21taXRzWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1Nh
bWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzFdLCBzdWJtaXR0ZWRDb21taXRzWzFdKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzJdLCBz
dWJtaXR0ZWRDb21taXRzWzJdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
c1syXVsncHJldmlvdXNDb21taXQnXSwgY29tbWl0c1sxXVsnaWQnXSk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qgb2Yg
b3JkZXJlZCBjb21taXRzIGZvciBhIGdpdmVuIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC8nKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAgICAgICAgY29uc3Qg
c3VibWl0dGVkQ29tbWl0cyA9IHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ107Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCBzdWJtaXR0ZWRDb21taXRz
Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMF1bJ3Jldmlz
aW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbNV1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzWzFdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzRd
WydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1syXVsn
cmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1szXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbM11bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1p
dHNbMl1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRz
WzRdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzFdWydyZXZpc2lvbiddKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s1XVsncmV2aXNpb24nXSwgc3VibWl0dGVk
Q29tbWl0c1swXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9vbGRlc3Qn
LCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3
aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dl
YktpdC9vbGRlc3QnKS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBl
bXB0eSByZXN1bHRzIHdoZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywg
eydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2Vi
S2l0L29sZGVzdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0
aGUgb2xkZXN0IGNvbW1pdCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBv
cnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVy
biByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZl
cnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3QnKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwg
c3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVswXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBjb21taXQgYmFz
ZWQgb24gJ2NvbW1pdF9vcmRlcicgd2hlbiAnY29tbWl0X3RpbWUnIGlzIG1pc3NpbmciLCAoKSA9
PiB7Ci0gICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwot
ICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRz
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0
aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3Rl
LmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvb2xkZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0
cyddWzVdWydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhdGVzdCcsICgp
ID0+IHsKLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
L2xhdGVzdCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5
IHJlc3VsdHMgd2hlbiB0aGVyZSBhcmUgbm8gY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQv
bGF0ZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBv
bGRlc3QgY29tbWl0IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChz
dWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
bW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lv
bkNvbW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFz
c2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2
ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddLnNsaWNlKCkucG9wKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXRlc3QgY29t
bWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5n
IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9u
Q29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0
SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1p
dHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhdGVzdCcpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXN1bHRbJ2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNb
J2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7
Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXN0
LXJlcG9ydGVkJywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5
Tm90Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsK
LSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkv
Y29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlO
b3RGb3VuZCcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdCB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBj
b21taXRzIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAg
IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwK
LSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJ30p
Ci0gICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhc3QtcmVw
b3J0ZWQnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1w
dHkgcmVzdWx0cyB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBjb21taXRzIiwgKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRv
cmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21t
aXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1p
dHMnXSwgW10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgcmVwb3J0ZWQgY29tbWl0IiwgKCkgPT4gewotICAgICAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgICAgICBjb25z
dCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9u
Q29tbWl0cyksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IG5vdFlldFJlcG9ydGVkQ29tbWl0
LnJldmlzaW9uLCAndGltZSc6IG5vdFlldFJlcG9ydGVkQ29tbWl0LnRpbWV9KSwKLSAgICAgICAg
ICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNp
b25Db21taXRzWydjb21taXRzJ10uc2xpY2UoKS5wb3AoKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxhc3QgcmVwb3J0ZWQg
Y29tbWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNz
aW5nIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJz
aW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5w
b3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNv
bW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQnKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNp
b25Db21taXRzWydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3Np
dG9yeT4vbGFzdC1yZXBvcnRlZD9mcm9tPTxzdGFydF9vcmRlcj4mdG89PGVuZF9vcmRlcj4nLCAo
KSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGEgbGlzdCBvZiBjb21taXQgaW4gZ2l2
ZW4gdmFsaWQgb3JkZXIgcmFuZ2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUn
OiAnT1NYJ30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2NycsICdvcmRlcic6IDM2NywgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OCcsICdvcmRlcic6IDM2OCwgJ3Jl
cG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OScsICdvcmRlcic6IDM2OSwg
J3JlcG9ydGVkJzogZmFsc2V9KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMn
LCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZEMzInLCAnb3JkZXInOiA0
MzIsICdyZXBvcnRlZCc6IHRydWV9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY3JnRvPTM3MCcpOwotICAgICAgICAgICAg
fSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0g
cmVzcG9uc2VbJ2NvbW1pdHMnXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
cy5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHJlc3VsdHNbMF07
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbiwgJ1NpZXJyYTE2
QzY4Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT0zNzAmdG89MzY3Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0
cyddOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/
ZnJvbT0yMDAmdG89Mjk5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/ZnJvbT0zNjkm
dG89NDMyJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAg
ICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY29tbWl0ID0gcmVzdWx0c1swXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0LnJldmlzaW9uLCAnU2llcnJhMTZEMzInKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+Lzxj
b21taXQ+JywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90
Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29t
bWl0cy9XZWJLaXQvMjEwOTQ5JykudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1
cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5v
dCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25h
bWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIw
VDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0
cy9XZWJLaXQvMjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdVbmtub3du
Q29tbWl0Jyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNo
b3VsZCByZXR1cm4gdGhlIGNvbW1pdCBldmVuIGlmIGl0IGhhZCBub3QgYmVlbiByZXBvcnRlZCIs
ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9u
JzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAg
ICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NTAnKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21t
aXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgewotICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb246ICcyMTA5NTAnLAotICAgICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQw
Mzo0OTozNy44ODdaJywKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwg
YWNjb3VudDogbnVsbH0sCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
aXQoInNob3VsZCByZXR1cm4gdGhlIGZ1bGwgcmVzdWx0IGZvciBhIHJlcG9ydGVkIGNvbW1pdCIs
ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1p
dHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05X
aXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NDknKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0
YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1l
QXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25Db21taXRzWydj
b21taXRzJ11bMV0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgfSk7Ci0K
LSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi8/ZnJvbT08Y29tbWl0LTE+
JnRvPTxjb21taXQtMj4nLCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9z
aXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkg
PT4gewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTign
L2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJykudGhlbigocmVzcG9u
c2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cydd
LCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUg
c3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7
Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5
NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP2Zyb209MjEwOTAwJnRvPTIxMTAwMCcp
OwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVt
cHR5IHJlc3VsdCB3aGVuIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBoYXZlIG5vdCBy
ZXBvcnRlZCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSks
Ci0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwg
J3JldmlzaW9uJzogJzIxMDk0OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1Wid9
KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
J30pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJv
bT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
ewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycp
OwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwg
W10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIHJlcG9ydGVkIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsK
LSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9z
aXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0
OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WicsICdyZXBvcnRlZCc6IHRydWV9
KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
JywgJ3JlcG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCB7Ci0gICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzQ29tbWl0OiBudWxsLAotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjog
JzIxMDk0OScsCi0gICAgICAgICAgICAgICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUw
LjY0NVonLAotICAgICAgICAgICAgICAgICAgICBhdXRob3I6IHtuYW1lOiBudWxsLCBhY2NvdW50
OiBudWxsfSwKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbnVsbCwKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRl
ZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgewotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Nv
bW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NTAnLAotICAg
ICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJywKLSAgICAg
ICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCi0gICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCBub3QgaW5jbHVk
ZSBhIHJldmlzaW9uIG5vdCB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcv
YXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2Fw
aS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDgmdG89MjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9
KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1
bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElz
U2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0
c1snY29tbWl0cyddWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09u
ZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1p
dHMnXVsxXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICB9KTsKLQotfSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQt
bG9nLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0
LWxvZy10ZXN0cy5qcwppbmRleCA4NDI1YWIwNTdkZjBmM2RlMjM1MmJiZTJmNWU0Mjg3ZGJjNjA0
OWE2Li40NjIxMGRkNDhjNzU1OGZhNDA4NTU2MjYzNWE5ZTEzOTI2MWIzMzgwIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtbG9nLXRlc3RzLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1sb2ctdGVz
dHMuanMKQEAgLTkzLDI0ICs5MywxOCBAQCBkZXNjcmliZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24g
KCkgewogICAgIGRlc2NyaWJlKCdkaWZmJywgZnVuY3Rpb24gKCkgewogICAgICAgICBpdCgnc2hv
dWxkIHVzZSBsYWJlbCgpIGFzIHRoZSBsYWJlbCB0aGUgcHJldmlvdXMgY29tbWl0IGlzIG1pc3Np
bmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHdlYmtpdENv
bW1pdCgpLmRpZmYoKSwgewotICAgICAgICAgICAgICAgIGZyb206IG51bGwsCi0gICAgICAgICAg
ICAgICAgdG86ICcyMDA4MDUnLAogICAgICAgICAgICAgICAgIGxhYmVsOiAncjIwMDgwNScsCiAg
ICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjAw
ODA1JywKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdAogICAg
ICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoZ2l0V2ViS2l0Q29t
bWl0KCkuZGlmZigpLCB7Ci0gICAgICAgICAgICAgICAgZnJvbTogbnVsbCwKLSAgICAgICAgICAg
ICAgICB0bzogJzZmOGIwZGJiZGE5NWE0NDA1MDNiODhkYjFkZDAzZGFkM2E3YjA3ZmInLAogICAg
ICAgICAgICAgICAgIGxhYmVsOiAnNmY4YjBkYmInLAogICAgICAgICAgICAgICAgIHVybDogJ2h0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzZmOGIwZGJiZGE5NWE0NDA1MDNiODhkYjFk
ZDAzZGFkM2E3YjA3ZmInLAogICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMu
d2Via2l0LAogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
b3N4Q29tbWl0KCkuZGlmZigpLCB7Ci0gICAgICAgICAgICAgICAgZnJvbTogbnVsbCwKLSAgICAg
ICAgICAgICAgICB0bzogJzEwLjExLjQgMTVFNjUnLAogICAgICAgICAgICAgICAgIGxhYmVsOiAn
MTAuMTEuNCAxNUU2NScsCiAgICAgICAgICAgICAgICAgdXJsOiAnJywKICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLm9zeCwKQEAgLTExOSw5ICsxMTMsNyBAQCBkZXNjcmli
ZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgdXNlIGlu
Y3JlbWVudCB0aGUgb2xkIFNWTiByZXZpc2lvbiBieSAxJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh3ZWJraXRDb21taXQoKS5kaWZmKG9sZFdlYktpdENvbW1p
dCgpKSwgewotICAgICAgICAgICAgICAgIGZyb206ICcyMDA1NzUnLAotICAgICAgICAgICAgICAg
IHRvOiAnMjAwODA1JywKLSAgICAgICAgICAgICAgICBsYWJlbDogJ3IyMDA1NzUtcjIwMDgwNScs
CisgICAgICAgICAgICAgICAgbGFiZWw6ICdyMjAwNTc0LXIyMDA4MDUnLAogICAgICAgICAgICAg
ICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy53ZWJr
aXQKICAgICAgICAgICAgIH0pOwpAQCAtMTI5LDggKzEyMSw2IEBAIGRlc2NyaWJlKCdDb21taXRM
b2cnLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCB0cnVuY2F0ZSBhIEdpdCBo
YXNoIGF0IDh0aCBjaGFyYWN0ZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGdpdFdlYktpdENvbW1pdCgpLmRpZmYob2xkR2l0V2ViS2l0Q29tbWl0KCkpLCB7
Ci0gICAgICAgICAgICAgICAgZnJvbTogJ2ZmZGExNGU2ZGIwNzQ2ZDEwZDBmMDUwOTA3ZTRhNzMy
NTg1MWU1MDInLAotICAgICAgICAgICAgICAgIHRvOiAnNmY4YjBkYmJkYTk1YTQ0MDUwM2I4OGRi
MWRkMDNkYWQzYTdiMDdmYicsCiAgICAgICAgICAgICAgICAgbGFiZWw6ICdmZmRhMTRlNi4uNmY4
YjBkYmInLAogICAgICAgICAgICAgICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeTogTW9ja01vZGVscy53ZWJraXQKQEAgLTEzOSw4ICsxMjksNiBAQCBkZXNjcmliZSgnQ29t
bWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgc3Vycm91bmQgIi0i
IHdpdGggc3BhY2VzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChvc3hDb21taXQoKS5kaWZmKG9sZE9TWENvbW1pdCgpKSwgewotICAgICAgICAgICAgICAgIGZy
b206ICcxMC4xMS4zIDE1RDIxJywKLSAgICAgICAgICAgICAgICB0bzogJzEwLjExLjQgMTVFNjUn
LAogICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAuMTEuMyAxNUQyMSAtIDEwLjExLjQgMTVFNjUn
LAogICAgICAgICAgICAgICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTog
TW9ja01vZGVscy5vc3gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304976</attachid>
            <date>2017-03-20 17:25:52 -0700</date>
            <delta_ts>2017-03-20 17:28:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169888-20170320172552.patch</filename>
            <type>text/plain</type>
            <size>92583</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MTk3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAwZGE4YjQ5MjU1N2VlNWEyMjc4ZWI4YmEzMWQ3MjBkNDAwNzM1MjMyLi5iOGYzMzNjNTA4
ZjdiNjliNGRlNTIwMzJlM2E3MDZiODcyNmZkNjcwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsOSArMSw4NiBAQAorMjAxNy0wMy0yMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBDaGFydHMgcGFnZSBzaG93IGFuIGluY29uc2lzdGVudCBs
aXN0IG9mIHJldmlzaW9ucyBmb3IgR2l0IGFuZCBTdWJ2ZXJzaW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4ODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFdpdGggR2l0LCBDb21taXRMb2dWaWV3ZXIg
d2FzIHNob3dpbmcgdGhlIGxpc3Qgb2YgcmV2aXNpb25zIGluY2x1ZGluZyB0aGUgc3RhcnRpbmcg
aGFzaCwKKyAgICAgICAgd2hpY2ggd2FzIHRoZSBsYXN0IGRhdGEgcG9pbnQncyByZXZpc2lvbiBp
bnN0ZWFkIG9mIGFsbCByZXZpc2lvbnMgYWZ0ZXIgdGhlIGxhc3QgZGF0YSBwb2ludC4KKworICAg
ICAgICBGaXhlZCB0aGUgYnVnIGJ5IGFsd2F5cyBzcGVjaWZ5aW5nIHRoZSByZXZpc2lvbiBhdCB0
aGUgbGFzdCBkYXRhIHBvaW50IGluIGJvdGggU3VidmVyc2lvbgorICAgICAgICBhbmQgR2l0IGFu
ZCB0aGVuIG1ha2luZyAvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+Lz9mcm9tPVgmdG89WSBleGNs
dWRlIHRoZSBmaXJzdCByZXZpc2lvbi4KKyAgICAgICAgRm9yIGNsYXJpdHksICJmcm9tIiBhbmQg
InRvIiBxdWVyeSBwYXJhbWV0ZXJzIGhhdmUgYmVlbiByZW5hbWVkIHRvICJwcmVjZWRpbmdSZXZp
c2lvbiIgYW5kCisgICAgICAgICJsYXN0UmV2aXNpb24iIHJlc3BlY3RpdmVseS4KKworICAgICAg
ICBXZSBhbHNvIG5vIGxvbmdlciBhZGRzIDEgdG8gdGhlIHN0YXJ0aW5nIHJldmlzaW9uIG9mIFN1
YnZlcnNpb24tbGlrZSBzdGFydGluZyByZXZpc2lvbnMuIGUuZy4KKyAgICAgICAgd2hlbiB0aGUg
bGFzdCBkYXRhIHBvaW50IHdhcyBhdCByMTIzNCwgbmV3IGRhdGEgcG9pbnQgaXMgYXQgcjEyNTAs
IHRoZSBsYWJlbCBpcyBub3cgInIxMjM0LXIxMjUwIgorICAgICAgICBpbnN0ZWFkIG9mICJyMTIz
NS1yMTI1MCIuCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL2NoYXJ0LXJldmlzaW9uLXJhbmdl
LXRlc3RzLmpzOiBGaXhlZCB0aGUgdGVzdHMgc2luY2UgcmV2aXNpb25MaXN0IG5vIGxvbmdlcgor
ICAgICAgICBzcGVjaWZpZXMgZnJvbS90byByZXZpc2lvbnMuCisgICAgICAgICogYnJvd3Nlci10
ZXN0cy9jb21taXQtbG9nLXZpZXdlci10ZXN0cy5qczogQWRkZWQuIEFkZGVkIHRlc3RzIGZvciBD
b21taXRMb2dWaWV3ZXIuCisgICAgICAgICogYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sOiBJbmNs
dWRlIHRoZSBuZXcgdGVzdC4gQWxzbyB1c2UgYSBsb2NhbCBjb3B5IG9mIG1vY2hhLmpzL2Nzcy4K
KworICAgICAgICAqIHB1YmxpYy9hcGkvY29tbWl0cy5waHA6CisgICAgICAgIChtYWluKTogUmVu
YW1lZCAiZnJvbSIgYW5kICJ0byIgcXVlcnkgcGFyYW1ldGVycy4KKworICAgICAgICAqIHB1Ymxp
Yy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHA6CisgICAgICAgIChDb21taXRMb2dGZXRj
aGVyOjpmZXRjaF9iZXR3ZWVuKTogQWRkZWQgYSBjaGVjayB0aGF0IGNvbW1pdCB0aW1lIHNob3Vs
ZCBlaXRoZXIgYmUgc3BlY2lmaWVkCisgICAgICAgIGluIGJvdGggcm93cyBvciBub3Qgc3BlY2lm
aWVkIGluIGVpdGhlci4gQWxzbyByZWplY3Qgd2hlbiBiZWZvcmVfZmlyc3RfcmV2aXNpb24gaXMg
aWRlbnRpY2FsCisgICAgICAgIG9yIGFmdGVyIGxhc3RfcmV2aXNpb24gaW5zdGVhZCBvZiByZS1v
cmRlcmluZyB0aGVtIHNpbmNlIGl0IG5vIGxvbmdlciBtYWtlcyBzZW5zZSB0byBkbyBzbyB3aXRo
CisgICAgICAgIG5ldyBxdWVyeSBwYXJhbWV0ZXIgbmFtZXMuCisKKyAgICAgICAgKiBwdWJsaWMv
djMvY29tcG9uZW50cy9iYXNlLmpzOgorICAgICAgICAoQ29tcG9uZW50QmFzZS5fYWRkQ29udGVu
dFRvRWxlbWVudCk6IFVzZSBBcnJheS5pc0FycmF5IGluc3RlYWQgb2YgaW5zdGFuY2VvZi4gSXQn
cyByZXNpbGllbnQKKyAgICAgICAgYWdhaW50IHJlYWxtIChnbG9iYWwgb2JqZWN0KSBkaWZmZXJl
bmNlcy4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5q
czoKKyAgICAgICAgKENoYXJ0UGFuZUJhc2UucHJvdG90eXBlLl91cGRhdGVDb21taXRMb2dWaWV3
ZXIpOiBObyBsb25nZXIgY2FsbHMgZW5xdWV1ZVRvUmVuZGVyIG9uIHRoaXMgc2luY2UKKyAgICAg
ICAgQ29tbWl0TG9nVmlld2VyIGRvZXMgdGhhdCBvbiBpdHMgb3duIG5vdy4KKyAgICAgICAgKENo
YXJ0UGFuZUJhc2UucHJvdG90eXBlLnJlbmRlcik6IEp1c2UgdXNlIHRoaXMuX29wZW5SZXBvc2l0
b3J5IGluc3RlYWQgb2YgcmVseWluZyBvbiBDb21taXRMb2dWaWV3ZXIKKyAgICAgICAgdG8gcmVt
ZW1iZXIgd2hpY2ggcmVwb3NpdG9yeSBpcyBjdXJyZW50LiBUaGlzIHdhcyB0aGUgb25seSB1c2Ug
b2YgY3VycmVudFJlcG9zaXRvcnkuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9j
b21taXQtbG9nLXZpZXdlci5qczoKKyAgICAgICAgKENvbW1pdExvZ1ZpZXdlcik6CisgICAgICAg
IChDb21taXRMb2dWaWV3ZXIucHJvdG90eXBlLmN1cnJlbnRSZXBvc2l0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKENvbW1pdExvZ1ZpZXdlci5wcm90b3R5cGUudmlldyk6CisgICAgICAgIChDb21t
aXRMb2dWaWV3ZXIucHJvdG90eXBlLl9mZXRjaENvbW1pdExvZ3MpOiBNb2Rlcm5pemVkIGFuZCBl
eHRyYWN0ZWQgZnJvbSB2aWV3IHRvIG1ha2UgaXQgbGF6eS4KKyAgICAgICAgQ2FsbCBmZXRjaEZv
clNpbmdsZVJldmlzaW9uIHdoZW4gcHJlY2VkaW5nUmV2aXNpb24gaXMgbm90IHNwZWNpZmllZCBv
ciBpdCdzIGlkZW50aWNhbCB0byBsYXN0UmV2aXNpb24KKyAgICAgICAgc2luY2UgdGhlIGdlbmVy
aWMgSlNPTiBBUEkgbm8gbG9uZ2VyIHN1cHBvcnRzIGJlaW5nIGNhbGxlZCB3aXRoIHRoZSBpZGVu
dGljYWwgcmV2aXNpb25zLgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLnByb3RvdHlwZS5yZW5k
ZXIpOiBNb2Rlcm5pemVkICYgc2ltcGxpZmllZCB0aGUgY29kZS4KKyAgICAgICAgKENvbW1pdExv
Z1ZpZXdlci5wcm90b3R5cGUuX3JlbmRlckNvbW1pdExpc3QpOiBFeHRyYWN0ZWQgZnJvbSByZW5k
ZXIgdG8gbWFrZSBpdCBsYXp5LgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLmh0bWxUZW1wbGF0
ZSk6IEFkZCBJRCBvbiBjYXB0aW9uICYgdGJvZHkgc28gdGhhdCB0aGV5J3JlIG1vcmUgZWFzaWx5
IGFkZHJlc3NhYmxlLgorICAgICAgICAoQ29tbWl0TG9nVmlld2VyLmNzc1RlbXBsYXRlKToKKwor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29tbWl0LWxvZy5qczoKKyAgICAgICAgKENvbW1p
dExvZy5wcm90b3R5cGUuZGlmZik6IE5vIGxvbmdlciBpbmNsdWRlcyBmcm9tL3RvIHJldmlzaW9u
cyBpbiB0aGUgcmVzdWx0LiBBbHNvIGF2b2lkIGFkZGluZworICAgICAgICAxIHRvIGEgU3VidmVy
c2lvbi1saWtlIHN0YXJ0aW5nIHJldmlzaW9uIGZvciBjcmVhdGluZyB0aGUgbGFiZWwuIFNlZSBh
Ym92ZS4gQnV0IHdlIHN0aWxsIGRvIHRoaXMKKyAgICAgICAgZm9yIGZvcm1pbmcgVVJMcyBkdWUg
dG8gdGhlIHdheSB0b29scyBsaWtlIFRyYWMgd29yayB3aXRoIFN1YnZlcnNpb24gcmV2aXNpb25z
LgorICAgICAgICAoQ29tbWl0TG9nLmZldGNoQmV0d2VlblJldmlzaW9ucyk6IFJld3JpdHRlbiB1
c2luZyBEYXRhTW9kZWwucHJvdG90eXBlLmNhY2hlZEZldGNoIHdpdGggRklYTUUgZm9yCisgICAg
ICAgIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBkb2luZy4KKyAgICAgICAg
KENvbW1pdExvZy5fY2FjaGVkQ29tbWl0TG9ncyk6IERlbGV0ZWQuCisgICAgICAgIChDb21taXRM
b2cuZmV0Y2hGb3JTaW5nbGVSZXZpc2lvbik6IEFkZGVkLgorICAgICAgICAoQ29tbWl0TG9nLl9j
b25zdHJ1Y3RGcm9tUmF3RGF0YSk6IEFkZGVkLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVs
cy9kYXRhLW1vZGVsLmpzOgorICAgICAgICAoRGF0YU1vZGVsT2JqZWN0LmNhY2hlZEZldGNoKTog
RG9uJ3QgcGFyc2UgcXVlcnkgdmFsdWVzIGFzIGFuIGludGVnZXIuIEp1c3QgVVJMLWVzY2FwZSB0
aGVtLgorCisgICAgICAgICogcHVibGljL3YzL3JlbW90ZS5qczoKKyAgICAgICAgKEJyb3dzZXJS
ZW1vdGVBUEkucHJvdG90eXBlLnNlbmRIdHRwUmVxdWVzdCk6IEZpeGVkIGEgdHlwby4KKworICAg
ICAgICAqIHNlcnZlci10ZXN0cy9hcGktY29tbWl0cy10ZXN0cy5qczogUmVuYW1lZCBmcm9tIGFw
aS1jb21taXRzLmpzLiBVcGRhdGVkIHRoZSBleGlzdGluZyB0ZXN0cyB0bworICAgICAgICB1c2Ug
bmV3IHF1ZXJ5IHBhcmFtZXRlcnMgYW5kIGFkZGVkIG1vcmUgdGVzdCBjYXNlcy4KKworICAgICAg
ICAqIHVuaXQtdGVzdHMvY29tbWl0LWxvZy10ZXN0cy5qczogVXBkYXRlZCB0aGUgdGVzdCBjYXNl
cyBub3cgdGhhdCBDb21taXRMb2cucHJvdG90eXBlLmRpZmYgbm8gbG9uZ2VyCisgICAgICAgIGlu
Y2x1ZGVzIGZyb20vdG8gdmFsdWVzLiBUaGV5J3JlIGNvbXB1dGVkIGluIENoYXJ0UmV2aXNpb25S
YW5nZSBpbnN0ZWFkLgorCiAyMDE3LTAzLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCBvcy1idWlsZC1mZXRjaGVyLmpzIGFuZCBzdWJwcm9jZXNzLmpz
IHRvIG1ha2UgdGhlbSB3b3JrCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk4NDQKIAotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KIAogICAgICAgICBUaGUgc2NyaXB0
IGFkZGVkIGluIHIyMTM5NzYgaGFzIGEgYnVnIHRoYXQgaXQgY2FuIGV4ZWN1dGUgY29tbWFuZHMg
dG8gZmV0Y2ggc3ViY29tbWl0cyBpbiBwYXJhbGxlbC4KICAgICAgICAgU29tZSBjb21tYW5kcyB0
byBwb2xsIHRoZSBsc2l0IG9mIHN5c3RlbSBjb21wb25lbnRzIGlzIG5vdCBkZXNpcmFibGUgdG8g
YmUgcmFuIGluIHBhcmFsbGVsLgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L2Jyb3dzZXItdGVzdHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5q
cwppbmRleCAzZTcwMzIzYzk0YTFkNGU1ZjQ4ZTFlOTU2MWM4NTJlMjE2NzY5NzRkLi5iMWI3MDY2
OTliMjRmZmRkZjVhYzQ0NmM2MDAwNGUzMzIyMmY1OTM1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZp
c2lvbi1yYW5nZS10ZXN0cy5qcwpAQCAtMzMsMTMgKzMzLDkgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2
aXNpb25SYW5nZScsICgpID0+IHsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxp
c3RbMF0ucmVwb3NpdG9yeS5sYWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwogICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNicpOwotICAgICAg
ICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUobnVsbCk7Ci0gICAg
ICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKIAog
ICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9yeS5sYWJlbCgp
KS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFd
LmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25M
aXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogICAgICAgICAgICAgfSkKICAgICAgICAgfSk7
CiAgICAgfSk7CkBAIC05NiwxNCArOTIsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2aXNpb25SYW5n
ZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxlbmd0aCku
dG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnJlcG9z
aXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
cmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDUtcjQwMDYnKTsKLSAgICAgICAgICAg
ICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmZyb20pLnRvLmJlKCc0MDA1Jyk7Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDQtcjQw
MDYnKTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9y
eS5sYWJlbCgpKS50by5iZSgnbWFjT1MnKTsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0WzFdLmxhYmVsKS50by5iZSgnMTVDNTAnKTsKLSAgICAgICAgICAgICAgICBleHBlY3Qo
cmV2aXNpb25MaXN0WzFdLmZyb20pLnRvLmJlKG51bGwpOwotICAgICAgICAgICAgICAgIGV4cGVj
dChyZXZpc2lvbkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcpOwogCiAgICAgICAgICAgICAgICAg
Y2hhcnQuc2V0SW5kaWNhdG9yKDEwMDQsIHRydWUpOyAvLyBBY3Jvc3MgbWFjT1MgY2hhbmdlLgog
CkBAIC0xMTEsMTQgKzEwMywxMCBAQCBkZXNjcmliZSgnQ2hhcnRSZXZpc2lvblJhbmdlJywgKCkg
PT4gewogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3QubGVuZ3RoKS50by5iZSgy
KTsKIAogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ucmVwb3NpdG9yeS5s
YWJlbCgpKS50by5iZSgnU29tZUFwcCcpOwotICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNC1yNDAwNCcpOwotICAgICAgICAgICAgICAgIGV4
cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUoJzQwMDQnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnRvKS50by5iZSgnNDAwNCcpOworICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwMy1yNDAwNCcpOwog
CiAgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVs
KCkpLnRvLmJlKCdtYWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3Rb
MV0ubGFiZWwpLnRvLmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0
KHJldmlzaW9uTGlzdFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBl
eHBlY3QocmV2aXNpb25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKIApAQCAtMTUwLDE0ICsxMzgsMTAgQEAgZGVzY3JpYmUoJ0NoYXJ0UmV2
aXNpb25SYW5nZScsICgpID0+IHsKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
Lmxlbmd0aCkudG8uYmUoMik7CiAKICAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0
WzBdLnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUoJ1NvbWVBcHAnKTsKLSAgICAgICAgICAgICAg
ICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVsKS50by5iZSgncjQwMDMtcjQwMDQnKTsgLy8g
NDAwMiBhbmQgNDAwNSBhcmUgb3V0bGllcnMgYW5kIHNraXBwZWQuCi0gICAgICAgICAgICAgICAg
ZXhwZWN0KHJldmlzaW9uTGlzdFswXS5mcm9tKS50by5iZSgnNDAwMycpOwotICAgICAgICAgICAg
ICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0udG8pLnRvLmJlKCc0MDA0Jyk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5sYWJlbCkudG8uYmUoJ3I0MDAyLXI0MDA0Jyk7
IC8vIDQwMDEgYW5kIDQwMDUgYXJlIG91dGxpZXJzIGFuZCBza2lwcGVkLgogCiAgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVsKCkpLnRvLmJlKCdt
YWNPUycpOwogICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0ubGFiZWwpLnRv
LmJlKCcxNUI0MiAtIDE1QzUwJyk7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlz
dFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKLSAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2Vy
LXRlc3RzL2NvbW1pdC1sb2ctdmlld2VyLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL2Jyb3dzZXItdGVzdHMvY29tbWl0LWxvZy12aWV3ZXItdGVzdHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2Y1MmRjMWIzNTZkM2QzMmUwYjg4MzJhYTBjYjNlODg3Nzk3NmZmOAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2NvbW1pdC1sb2ctdmll
d2VyLXRlc3RzLmpzCkBAIC0wLDAgKzEsMTIzIEBACitkZXNjcmliZSgnQ29tbWl0TG9nVmlld2Vy
JywgKCkgPT4geworCisgICAgZnVuY3Rpb24gaW1wb3J0Q29tbWl0TG9nVmlld2VyKGNvbnRleHQp
CisgICAgeworICAgICAgICBjb25zdCBzY3JpcHRzID0gWworICAgICAgICAgICAgJy4uL3NoYXJl
ZC9zdGF0aXN0aWNzLmpzJywKKyAgICAgICAgICAgICdpbnN0cnVtZW50YXRpb24uanMnLAorICAg
ICAgICAgICAgJ2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24uanMnLAorICAgICAgICAgICAgJ21v
ZGVscy9kYXRhLW1vZGVsLmpzJywKKyAgICAgICAgICAgICdtb2RlbHMvcmVwb3NpdG9yeS5qcycs
CisgICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1zZXQuanMnLAorICAgICAgICAgICAgJ21vZGVs
cy9jb21taXQtbG9nLmpzJywKKyAgICAgICAgICAgICdjb21wb25lbnRzL2Jhc2UuanMnLAorICAg
ICAgICAgICAgJ2NvbXBvbmVudHMvc3Bpbm5lci1pY29uLmpzJywKKyAgICAgICAgICAgICdjb21w
b25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzJ107CisgICAgICAgIHJldHVybiBjb250ZXh0Lmlt
cG9ydFNjcmlwdHMoc2NyaXB0cywgJ0NvbXBvbmVudEJhc2UnLCAnQ29tbWl0TG9nVmlld2VyJywg
J1JlcG9zaXRvcnknLCAnQ29tbWl0TG9nJywgJ1JlbW90ZUFQSScpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3ltYm9scy5Db21taXRMb2dWaWV3ZXI7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGNvbnN0IHdlYmtpdENvbW1pdDIxMDk0OSA9IHsKKyAgICAgICAg
ImlkIjogIjE4NTMzNCIsCisgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAorICAgICAgICAi
cHJldmlvdXNDb21taXQiOiBudWxsLAorICAgICAgICAidGltZSI6ICtuZXcgRGF0ZSgiMjAxNy0w
MS0yMFQwMzoyMzo1MC42NDVaIiksCisgICAgICAgICJhdXRob3JOYW1lIjogIkNocmlzIER1bWV6
IiwKKyAgICAgICAgImF1dGhvckVtYWlsIjogImNkdW1lekBhcHBsZS5jb20iLAorICAgICAgICAi
bWVzc2FnZSI6ICJzb21lIG1lc3NhZ2UiLAorICAgIH07CisKKyAgICBjb25zdCB3ZWJraXRDb21t
aXQyMTA5NTAgPSB7CisgICAgICAgICJpZCI6ICIxODUzMzgiLAorICAgICAgICAicmV2aXNpb24i
OiAiMjEwOTUwIiwKKyAgICAgICAgInByZXZpb3VzQ29tbWl0IjogbnVsbCwKKyAgICAgICAgInRp
bWUiOiArbmV3IERhdGUoIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIpLAorICAgICAgICAiYXV0
aG9yTmFtZSI6ICJDb21taXQgUXVldWUiLAorICAgICAgICAiYXV0aG9yRW1haWwiOiAiY29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmciLAorICAgICAgICAibWVzc2FnZSI6ICJhbm90aGVyIG1lc3NhZ2Ui
LAorICAgIH07CisKKyAgICBpdCgnc2hvdWxkIGluaXRpYWxseSBiZSBlbXB0eSB3aXRoIG5vIHNw
aW5uZXInLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250
ZXh0KCk7CisgICAgICAgIHJldHVybiBpbXBvcnRDb21taXRMb2dWaWV3ZXIoY29udGV4dCkudGhl
bigoQ29tbWl0TG9nVmlld2VyKSA9PiB7CisgICAgICAgICAgICBjb25zdCB2aWV3ZXIgPSBuZXcg
Q29tbWl0TG9nVmlld2VyOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHZpZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1Jl
bmRlcigpOworICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29u
dGV4dCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50
KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1w
dHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50
KCdyZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHNob3cg
dGhlIHJlcG9zaXRvcnkgbmFtZSBhbmQgdGhlIHNwaW5uZXIgb25jZSBpdCBzdGFydGVkIGZldGNo
aW5nIHRoZSBsaXN0IG9mIGNvbW1pdHMgJywgKCkgPT4geworICAgICAgICBjb25zdCBjb250ZXh0
ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICByZXR1cm4gaW1wb3J0Q29tbWl0TG9n
Vmlld2VyKGNvbnRleHQpLnRoZW4oKENvbW1pdExvZ1ZpZXdlcikgPT4geworICAgICAgICAgICAg
Y29uc3QgUmVwb3NpdG9yeSA9IGNvbnRleHQuc3ltYm9scy5SZXBvc2l0b3J5OworICAgICAgICAg
ICAgY29uc3QgU3Bpbm5lckljb24gPSBjb250ZXh0LnN5bWJvbHMuU3Bpbm5lckljb247CisgICAg
ICAgICAgICBjb25zdCBDb21wb25lbnRCYXNlID0gY29udGV4dC5zeW1ib2xzLkNvbXBvbmVudEJh
c2U7CisgICAgICAgICAgICBjb25zdCBSZW1vdGVBUEkgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3Rl
QVBJOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsKKyAg
ICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2ViS2l0
J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZXdl
ci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOworICAg
ICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNv
bnRhaW5lcicpLm9mZnNldEhlaWdodCkudG8uYmUoMCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUo
dHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdyZXBvc2l0b3J5
LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KFJlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgICAgIHZp
ZXdlci52aWV3KHdlYmtpdCwgJzIxMDk0OCcsICcyMTA5NTAnKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ3NwaW5u
ZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5ub3QuYmUoMCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS5tYXRjaGVzKCc6ZW1wdHkn
KSkudG8uYmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdy
ZXBvc2l0b3J5LW5hbWUnKS5tYXRjaGVzKCc6ZW1wdHknKSkudG8uYmUoZmFsc2UpOworICAgICAg
ICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykudGV4dENv
bnRlbnQpLnRvLmNvbnRhaW4oJ1dlYktpdCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzaG93IHRoZSByZXBvc2l0b3J5IG5hbWUsIHRo
ZSBsaXN0IG9mIGNvbW1pdHMsIGFuZCBoaWRlIHRoZSBzcGlubmVyIG9uY2UgdGhlIGxpc3Qgb2Yg
Y29tbWl0cyBhcmUgZmV0Y2hlZCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgY29udGV4dCA9IG5l
dyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGltcG9ydENvbW1pdExvZ1ZpZXdl
cihjb250ZXh0KS50aGVuKChDb21taXRMb2dWaWV3ZXIpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IFJlcG9zaXRvcnkgPSBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeTsKKyAgICAgICAgICAgIGNv
bnN0IFNwaW5uZXJJY29uID0gY29udGV4dC5zeW1ib2xzLlNwaW5uZXJJY29uOworICAgICAgICAg
ICAgY29uc3QgQ29tcG9uZW50QmFzZSA9IGNvbnRleHQuc3ltYm9scy5Db21wb25lbnRCYXNlOwor
ICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuUmVtb3RlQVBJLnJl
cXVlc3RzOworICAgICAgICAgICAgY29uc3Qgdmlld2VyID0gbmV3IENvbW1pdExvZ1ZpZXdlcjsK
KyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IG5ldyBSZXBvc2l0b3J5KDEsIHtuYW1lOiAnV2Vi
S2l0J30pOworICAgICAgICAgICAgY29udGV4dC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZp
ZXdlci5lbGVtZW50KCkpOworICAgICAgICAgICAgdmlld2VyLmVucXVldWVUb1JlbmRlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgdmlld2VyLnZpZXcod2Via2l0LCAnMjEwOTQ4Jywg
JzIxMDk1MCcpOworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVu
ZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdzcGlubmVyLWNvbnRhaW5lcicpLm9mZnNldEhlaWdo
dCkudG8ubm90LmJlKDApOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgn
Y29tbWl0cy1saXN0JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKHRydWUpOworICAgICAgICAg
ICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1lJykubWF0Y2hlcygn
OmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNv
bnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250YWluKCdXZWJLaXQn
KTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHNbMF0udXJsKS50by5iZSgnL2FwaS9jb21taXRz
LzEvP3ByZWNlZGluZ1JldmlzaW9uPTIxMDk0OCZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAg
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZSh7CisgICAgICAgICAgICAgICAgICAgICJz
dGF0dXMiOiAiT0siLAorICAgICAgICAgICAgICAgICAgICAiY29tbWl0cyI6IFt3ZWJraXRDb21t
aXQyMTA5NDksIHdlYmtpdENvbW1pdDIxMDk1MF0sCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2Vy
LmNvbnRlbnQoJ3NwaW5uZXItY29udGFpbmVyJykub2Zmc2V0SGVpZ2h0KS50by5iZSgwKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2NvbW1pdHMtbGlzdCcpLm1hdGNo
ZXMoJzplbXB0eScpKS50by5iZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHZpZXdl
ci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8uY29udGFpbigncjIxMDk0
OScpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgnY29tbWl0cy1saXN0
JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NocmlzIER1bWV6Jyk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHZpZXdlci5jb250ZW50KCdjb21taXRzLWxpc3QnKS50ZXh0Q29udGVudCkudG8u
Y29udGFpbigncjIxMDk1MCcpOworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVu
dCgnY29tbWl0cy1saXN0JykudGV4dENvbnRlbnQpLnRvLmNvbnRhaW4oJ0NvbW1pdCBRdWV1ZScp
OworICAgICAgICAgICAgICAgIGV4cGVjdCh2aWV3ZXIuY29udGVudCgncmVwb3NpdG9yeS1uYW1l
JykubWF0Y2hlcygnOmVtcHR5JykpLnRvLmJlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3Qodmlld2VyLmNvbnRlbnQoJ3JlcG9zaXRvcnktbmFtZScpLnRleHRDb250ZW50KS50by5jb250
YWluKCdXZWJLaXQnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qodmlld2VyLmNvbnRlbnQoJ2Nv
bW1pdHMtbGlzdCcpLnF1ZXJ5U2VsZWN0b3IoJ2EnKSkudG8uYmUobnVsbCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKaW5kZXggMjUyYTM5Yjk4MWNlZDFk
YTYzNTFhMGFiOGIwMzQyYjBlN2E0ZTQ5MC4uNjMzMDQ1MjU2YTQ3ZGMzNjgzOGQzMzQ2MDAzNDky
ODNmMGVmYTFhZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXIt
dGVzdHMvaW5kZXguaHRtbAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10
ZXN0cy9pbmRleC5odG1sCkBAIC0xLDkgKzEsMTAgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDx0aXRsZT5Jbi1Ccm93c2VyIFRlc3Rz
IGZvciBQZXJmb3JtYW5jZSBEYXNoYm9hcmQ8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJodHRwczovL2Nkbi5yYXdnaXQuY29tL21vY2hhanMvbW9jaGEvMi4yLjUvbW9jaGEu
Y3NzIj4KLTxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGli
cy9tb2NoYS8yLjIuNS9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L25vZGVfbW9kdWxlcy9tb2NoYS9tb2NoYS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZXhwZWN0LmpzLzAuMi4wL2V4cGVj
dC5taW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIApAQCAtMjEsNiArMjIsNyBAQCBtb2NoYS5z
ZXR1cCgnYmRkJyk7CiA8c2NyaXB0IHNyYz0iaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQt
dGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXN0YXR1cy1ldmFsdWF0b3It
dGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImNoYXJ0LXJldmlzaW9uLXJhbmdlLXRl
c3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb21taXQtbG9nLXZpZXdlci10ZXN0cy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBhZnRlckVhY2goKCkgPT4gewpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvY29tbWl0cy5waHAgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9jb21taXRzLnBocAppbmRleCBhNmE0ZGI4NmZh
OGNhMDFlY2E5NTE0NjRlOGQ1MDVmMGQ2NTk5YTMxLi5jMTFkZDZiZDc3NjZkNWMxMmI0YTg5Y2I0
MDUxNTkxZThmMTk4MWU1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2FwaS9jb21taXRzLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FwaS9jb21taXRzLnBocApAQCAtMjQsOSArMjQsOSBAQCBmdW5jdGlvbiBtYWluKCRwYXRocykg
ewogICAgICRjb21taXRzID0gYXJyYXkoKTsKICAgICBpZiAoISRmaWx0ZXIpIHsKICAgICAgICAg
JGtleXdvcmQgPSBhcnJheV9nZXQoJF9HRVQsICdrZXl3b3JkJyk7IC8vIFYyIFVJIGNvbXBhdGli
aWxpdHkuCi0gICAgICAgICRmcm9tID0gYXJyYXlfZ2V0KCRfR0VULCAnZnJvbScpOwotICAgICAg
ICAkdG8gPSBhcnJheV9nZXQoJF9HRVQsICd0bycpOwotICAgICAgICAkY29tbWl0cyA9ICRmZXRj
aGVyLT5mZXRjaF9iZXR3ZWVuKCRyZXBvc2l0b3J5X2lkLCAkZnJvbSwgJHRvLCAka2V5d29yZCk7
CisgICAgICAgICRwcmVjZWRpbmdfcmV2aXNpb24gPSBhcnJheV9nZXQoJF9HRVQsICdwcmVjZWRp
bmdSZXZpc2lvbicpOworICAgICAgICAkbGFzdF9yZXZpc2lvbiA9IGFycmF5X2dldCgkX0dFVCwg
J2xhc3RSZXZpc2lvbicpOworICAgICAgICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9iZXR3
ZWVuKCRyZXBvc2l0b3J5X2lkLCAkcHJlY2VkaW5nX3JldmlzaW9uLCAkbGFzdF9yZXZpc2lvbiwg
JGtleXdvcmQpOwogICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnb2xkZXN0JykgewogICAgICAg
ICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9vbGRlc3QoJHJlcG9zaXRvcnlfaWQpOwogICAg
IH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGF0ZXN0JykgewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVy
LnBocAppbmRleCAwNWQwYTAxY2NhYWY3NDUwOTdhMTg5ZTllMWM2YzY4Zjg5ZjFlZGYyLi43YzE1
NjYwYmJhMTI1NjhlODc5ZGM2ZDdiYmJjZDIzNGE4OWMzN2EyIDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1m
ZXRjaGVyLnBocApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAg
ICAgICAgcmV0dXJuICRyZXBvc2l0b3J5X3Jvd1sncmVwb3NpdG9yeV9pZCddOwogICAgIH0KIAot
ICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRvcnlfaWQsICRmaXJzdCwgJHNlY29u
ZCwgJGtleXdvcmQgPSBOVUxMKQorICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJlcG9zaXRv
cnlfaWQsICRiZWZvcmVfZmlyc3RfcmV2aXNpb24sICRsYXN0X3JldmlzaW9uLCAka2V5d29yZCA9
IE5VTEwpCiAgICAgewogICAgICAgICAkc3RhdGVtZW50cyA9ICdTRUxFQ1QgY29tbWl0X2lkIGFz
ICJpZCIsCiAgICAgICAgICAgICBjb21taXRfcmV2aXNpb24gYXMgInJldmlzaW9uIiwKQEAgLTQ2
LDIyICs0NiwyOSBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKICAgICAgICAgICAgIFdIRVJF
IGNvbW1pdF9yZXBvc2l0b3J5ID0gJDEgQU5EIGNvbW1pdF9yZXBvcnRlZCA9IHRydWUnOwogICAg
ICAgICAkdmFsdWVzID0gYXJyYXkoJHJlcG9zaXRvcnlfaWQpOwogCi0gICAgICAgIGlmICgkZmly
c3QgJiYgJHNlY29uZCkgewotICAgICAgICAgICAgJGZpcnN0X2NvbW1pdCA9ICR0aGlzLT5jb21t
aXRfZm9yX3JldmlzaW9uKCRyZXBvc2l0b3J5X2lkLCAkZmlyc3QpOwotICAgICAgICAgICAgJHNl
Y29uZF9jb21taXQgPSAkdGhpcy0+Y29tbWl0X2Zvcl9yZXZpc2lvbigkcmVwb3NpdG9yeV9pZCwg
JHNlY29uZCk7Ci0gICAgICAgICAgICAkZmlyc3QgPSAkZmlyc3RfY29tbWl0Wydjb21taXRfdGlt
ZSddOwotICAgICAgICAgICAgJHNlY29uZCA9ICRzZWNvbmRfY29tbWl0Wydjb21taXRfdGltZSdd
OwotICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKLSAgICAgICAgICAg
IGlmICghJGZpcnN0IHx8ICEkc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgJGZpcnN0ID0gJGZp
cnN0X2NvbW1pdFsnY29tbWl0X29yZGVyJ107Ci0gICAgICAgICAgICAgICAgJHNlY29uZCA9ICRz
ZWNvbmRfY29tbWl0Wydjb21taXRfb3JkZXInXTsKKyAgICAgICAgaWYgKCRiZWZvcmVfZmlyc3Rf
cmV2aXNpb24gJiYgJGxhc3RfcmV2aXNpb24pIHsKKyAgICAgICAgICAgICRwcmVjZWRpbmdfY29t
bWl0ID0gJHRoaXMtPmNvbW1pdF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRiZWZvcmVf
Zmlyc3RfcmV2aXNpb24pOworICAgICAgICAgICAgJGxhc3RfY29tbWl0ID0gJHRoaXMtPmNvbW1p
dF9mb3JfcmV2aXNpb24oJHJlcG9zaXRvcnlfaWQsICRsYXN0X3JldmlzaW9uKTsKKworICAgICAg
ICAgICAgJHByZWNlZGluZyA9ICRwcmVjZWRpbmdfY29tbWl0Wydjb21taXRfdGltZSddOworICAg
ICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRbJ2NvbW1pdF90aW1lJ107CisgICAgICAgICAg
ICBpZiAoISRwcmVjZWRpbmcgIT0gISRsYXN0KQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9l
cnJvcignSW5jb25zaXN0ZW50Q29tbWl0cycpOworICAgICAgICAgICAgaWYgKCRwcmVjZWRpbmcp
CisgICAgICAgICAgICAgICAgJGNvbHVtbl9uYW1lID0gJ2NvbW1pdF90aW1lJzsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICRwcmVjZWRpbmcgPSAkcHJlY2VkaW5nX2NvbW1p
dFsnY29tbWl0X29yZGVyJ107CisgICAgICAgICAgICAgICAgJGxhc3QgPSAkbGFzdF9jb21taXRb
J2NvbW1pdF9vcmRlciddOwogICAgICAgICAgICAgICAgICRjb2x1bW5fbmFtZSA9ICdjb21taXRf
b3JkZXInOworICAgICAgICAgICAgICAgIGlmICghJHByZWNlZGluZyB8fCAhJGxhc3QpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCRwcmVjZWRpbmcgPj0gJGxhc3QpCisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdJbnZhbGlkQ29tbWl0UmFuZ2UnKTsKIAotICAgICAgICAgICAgJGluX29yZGVyID0gJGZp
cnN0IDwgJHNlY29uZDsKLSAgICAgICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJGluX29yZGVy
ID8gJGZpcnN0IDogJHNlY29uZCk7Ci0gICAgICAgICAgICAkc3RhdGVtZW50cyAuPSAnIEFORCAn
IC4gJGNvbHVtbl9uYW1lIC4gJyA+PSAkJyAuIGNvdW50KCR2YWx1ZXMpOwotICAgICAgICAgICAg
YXJyYXlfcHVzaCgkdmFsdWVzLCAkaW5fb3JkZXIgPyAkc2Vjb25kIDogJGZpcnN0KTsKKyAgICAg
ICAgICAgIGFycmF5X3B1c2goJHZhbHVlcywgJHByZWNlZGluZyk7CisgICAgICAgICAgICAkc3Rh
dGVtZW50cyAuPSAnIEFORCAnIC4gJGNvbHVtbl9uYW1lIC4gJyA+ICQnIC4gY291bnQoJHZhbHVl
cyk7CisgICAgICAgICAgICBhcnJheV9wdXNoKCR2YWx1ZXMsICRsYXN0KTsKICAgICAgICAgICAg
ICRzdGF0ZW1lbnRzIC49ICcgQU5EICcgLiAkY29sdW1uX25hbWUgLiAnIDw9ICQnIC4gY291bnQo
JHZhbHVlcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2Jhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYmFzZS5qcwppbmRleCA5Zjc1Y2QwYTE5NGU0ZDYyNTFm
NzgwNWNlNThjOWMxNzFjOGFhNjhmLi4zNjUzNjNkOGI4NDk4MjkwOTIxNDA5Y2M4ODFiZDAwODM4
ZWRkN2E2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvYmFzZS5qcwpAQCAtMjM4LDcgKzIzOCw3IEBAIGNsYXNzIENvbXBvbmVudEJh
c2UgewogCiAgICAgc3RhdGljIF9hZGRDb250ZW50VG9FbGVtZW50KGVsZW1lbnQsIGNvbnRlbnQp
CiAgICAgewotICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAg
IGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7CiAgICAgICAgICAgICBmb3IgKHZhciBuZXN0
ZWRDaGlsZCBvZiBjb250ZW50KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRUb0Vs
ZW1lbnQoZWxlbWVudCwgbmVzdGVkQ2hpbGQpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnQg
aW5zdGFuY2VvZiBOb2RlKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKaW5kZXggNTc0
M2JhYjU2M2JkMGI2MjgyYzM1ZDg4NTYzNTMzZDNkOGY2NDFkNi4uYWUxZjFlYWU5YTZmNWJiOWFh
NDJhNDQ3YjNjNTI2ZWRhNTEzZjRlOCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpz
CkBAIC0xNjMsOSArMTYzLDggQEAgY2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVu
dEJhc2UgewogICAgIF91cGRhdGVDb21taXRMb2dWaWV3ZXIoKQogICAgIHsKICAgICAgICAgY29u
c3QgcmFuZ2UgPSB0aGlzLl9yZXZpc2lvblJhbmdlLnJhbmdlRm9yUmVwb3NpdG9yeSh0aGlzLl9v
cGVuUmVwb3NpdG9yeSk7Ci0gICAgICAgIGNvbnN0IHVwZGF0ZVJlbmRlcmluZyA9ICgpID0+IHsg
dGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsgfTsKLSAgICAgICAgdGhpcy5fY29tbWl0TG9nVmlld2Vy
LnZpZXcodGhpcy5fb3BlblJlcG9zaXRvcnksIHJhbmdlLmZyb20sIHJhbmdlLnRvKS50aGVuKHVw
ZGF0ZVJlbmRlcmluZyk7Ci0gICAgICAgIHVwZGF0ZVJlbmRlcmluZygpOworICAgICAgICB0aGlz
Ll9jb21taXRMb2dWaWV3ZXIudmlldyh0aGlzLl9vcGVuUmVwb3NpdG9yeSwgcmFuZ2UuZnJvbSwg
cmFuZ2UudG8pOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAogICAg
IF9vcGVuQW5hbHlzaXNUYXNrKGFubm90YXRpb24pCkBAIC0yNTcsNyArMjU2LDcgQEAgY2xhc3Mg
Q2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgdGhpcy5f
bWFpbkNoYXJ0U3RhdHVzLmVucXVldWVUb1JlbmRlcigpOwogCiAgICAgICAgIHZhciBib2R5ID0g
dGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtYm9keScpOwotICAgICAg
ICBpZiAodGhpcy5fY29tbWl0TG9nVmlld2VyICYmIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5jdXJy
ZW50UmVwb3NpdG9yeSgpKSB7CisgICAgICAgIGlmICh0aGlzLl9vcGVuUmVwb3NpdG9yeSkgewog
ICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdoYXMtc2Vjb25kLXNpZGViYXInKTsKICAg
ICAgICAgICAgIHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvY29tbWl0LWxvZy12aWV3ZXIuanMKaW5kZXggNGVjYzMy
NjlmN2I2OWE4YTk4Mjk2Njg3NDQ2ODZjOTA4NTMxNWJlNS4uOWE1ZDE3NGE1MTk2MGFiNGI4ZjEx
NDU4OThlMDZlYzZhYjM5Mjk2MCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2NvbW1pdC1sb2ctdmlld2VyLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jb21taXQtbG9nLXZpZXdlci5q
cwpAQCAtNCw5MiArNCw4NyBAQCBjbGFzcyBDb21taXRMb2dWaWV3ZXIgZXh0ZW5kcyBDb21wb25l
bnRCYXNlIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICBzdXBlcignY29tbWl0
LWxvZy12aWV3ZXInKTsKKyAgICAgICAgdGhpcy5fbGF6aWx5RmV0Y2hDb21taXRMb2dzID0gbmV3
IExhemlseUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX2ZldGNoQ29tbWl0TG9ncy5iaW5kKHRoaXMp
KTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ZldGNo
aW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwotICAgICAg
ICB0aGlzLl9mcm9tID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdG8gPSBudWxsOworICAgICAgICB0
aGlzLl9yZW5kZXJDb21taXRMaXN0TGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlckNvbW1pdExpc3QuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgY3VycmVu
dFJlcG9zaXRvcnkoKSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5OyB9Ci0KLSAgICB2aWV3KHJl
cG9zaXRvcnksIGZyb20sIHRvKQorICAgIHZpZXcocmVwb3NpdG9yeSwgcHJlY2VkaW5nUmV2aXNp
b24sIGxhc3RSZXZpc2lvbikKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ID09
IHJlcG9zaXRvcnkgJiYgdGhpcy5fZnJvbSA9PSBmcm9tICYmIHRoaXMuX3RvID09IHRvKQotICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTsKKyAgICAgICAgdGhpcy5fbGF6
aWx5RmV0Y2hDb21taXRMb2dzLmV2YWx1YXRlKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9u
LCBsYXN0UmV2aXNpb24pOworICAgIH0KIAorICAgIF9mZXRjaENvbW1pdExvZ3MocmVwb3NpdG9y
eSwgcHJlY2VkaW5nUmV2aXNpb24sIGxhc3RSZXZpc2lvbikKKyAgICB7CisgICAgICAgIHRoaXMu
X2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdHMgPSBudWxsOwot
ICAgICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTsKLSAgICAgICAgdGhpcy5fZnJv
bSA9IGZyb207Ci0gICAgICAgIHRoaXMuX3RvID0gdG87CiAKLSAgICAgICAgaWYgKCFyZXBvc2l0
b3J5KSB7Ci0gICAgICAgICAgICB0aGlzLl9mZXRjaGluZ1Byb21pc2UgPSBudWxsOworICAgICAg
ICBpZiAoIXJlcG9zaXRvcnkgfHwgIWxhc3RSZXZpc2lvbikgewogICAgICAgICAgICAgdGhpcy5f
cmVwb3NpdG9yeSA9IG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51
bGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0bykgewotICAgICAgICAgICAgdGhpcy5f
ZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVy
KCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHByb21pc2UgPSBDb21taXRMb2cu
ZmV0Y2hCZXR3ZWVuUmV2aXNpb25zKHJlcG9zaXRvcnksIGZyb20gfHwgdG8sIHRvKTsKKyAgICAg
ICAgbGV0IHByb21pc2U7CisgICAgICAgIGlmICghcHJlY2VkaW5nUmV2aXNpb24gfHwgcHJlY2Vk
aW5nUmV2aXNpb24gPT0gbGFzdFJldmlzaW9uKQorICAgICAgICAgICAgcHJvbWlzZSA9IENvbW1p
dExvZy5mZXRjaEZvclNpbmdsZVJldmlzaW9uKHJlcG9zaXRvcnksIGxhc3RSZXZpc2lvbik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb21pc2UgPSBDb21taXRMb2cuZmV0Y2hCZXR3ZWVu
UmV2aXNpb25zKHJlcG9zaXRvcnksIHByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb24pOwog
CisgICAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSByZXBvc2l0b3J5OwogICAgICAgICB0aGlzLl9m
ZXRjaGluZ1Byb21pc2UgPSBwcm9taXNlOwogCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAg
ICAgICAgdmFyIHNwaW5uZXJUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgc2VsZi5lbnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfSwgMzAwKTsKLQotICAgICAg
ICB0aGlzLl9mZXRjaGluZ1Byb21pc2UudGhlbihmdW5jdGlvbiAoY29tbWl0cykgewotICAgICAg
ICAgICAgY2xlYXJUaW1lb3V0KHNwaW5uZXJUaW1lcik7Ci0gICAgICAgICAgICBpZiAoc2VsZi5f
ZmV0Y2hpbmdQcm9taXNlICE9IHByb21pc2UpCisgICAgICAgIHRoaXMuX2ZldGNoaW5nUHJvbWlz
ZS50aGVuKChjb21taXRzKSA9PiB7CisgICAgICAgICAgICBpZiAodGhpcy5fZmV0Y2hpbmdQcm9t
aXNlICE9IHByb21pc2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc2Vs
Zi5fZmV0Y2hpbmdQcm9taXNlID0gbnVsbDsKLSAgICAgICAgICAgIHNlbGYuX2NvbW1pdHMgPSBj
b21taXRzOwotICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChz
ZWxmLl9mZXRjaGluZ1Byb21pc2UgIT0gcHJvbWlzZSkKKyAgICAgICAgICAgIHRoaXMuX2ZldGNo
aW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRzID0gY29tbWl0czsK
KyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0sIChlcnJvcikg
PT4geworICAgICAgICAgICAgaWYgKHRoaXMuX2ZldGNoaW5nUHJvbWlzZSAhPSBwcm9taXNlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHNlbGYuX2ZldGNoaW5nUHJvbWlz
ZSA9IG51bGw7Ci0gICAgICAgICAgICBzZWxmLl9jb21taXRzID0gbnVsbDsKKyAgICAgICAgICAg
IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9jb21taXRz
ID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0p
OwogCi0gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaGluZ1Byb21pc2U7CisgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgcmVuZGVyKCkKICAgICB7Ci0gICAgICAg
IHZhciBjYXB0aW9uID0gJyc7Ci0gICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5ICYmICh0aGlz
Ll9jb21taXRzIHx8IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSkpCi0gICAgICAgICAgICBjYXB0aW9u
ID0gdGhpcy5fcmVwb3NpdG9yeS5uYW1lKCk7Ci0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5
U2VsZWN0b3IoJ2NhcHRpb24nKS50ZXh0Q29udGVudCA9IGNhcHRpb247CisgICAgICAgIHRoaXMu
cGFydCgnc3Bpbm5lcicpLmVucXVldWVUb1JlbmRlcigpOworCisgICAgICAgIGNvbnN0IHNob3Vs
ZFNob3dSZXBvc2l0b3J5TmFtZSA9IHRoaXMuX3JlcG9zaXRvcnkgJiYgKHRoaXMuX2NvbW1pdHMg
fHwgdGhpcy5fZmV0Y2hpbmdQcm9taXNlKTsKKyAgICAgICAgdGhpcy5jb250ZW50KCdyZXBvc2l0
b3J5LW5hbWUnKS50ZXh0Q29udGVudCA9IHNob3VsZFNob3dSZXBvc2l0b3J5TmFtZSA/IHRoaXMu
X3JlcG9zaXRvcnkubmFtZSgpIDogJyc7CisgICAgICAgIHRoaXMuY29udGVudCgnc3Bpbm5lci1j
b250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fZmV0Y2hpbmdQcm9taXNlID8gbnVsbCA6
ICdub25lJzsKKyAgICAgICAgdGhpcy5fcmVuZGVyQ29tbWl0TGlzdExhemlseS5ldmFsdWF0ZSh0
aGlzLl9jb21taXRzKTsKKyAgICB9CiAKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnRC
YXNlLmNyZWF0ZUVsZW1lbnQ7Ci0gICAgICAgIHZhciBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVh
dGVMaW5rOworICAgIF9yZW5kZXJDb21taXRMaXN0KGNvbW1pdHMpCisgICAgeworICAgICAgICBj
b25zdCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBjb25z
dCBsaW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOwogCi0gICAgICAgIHRoaXMucmVuZGVy
UmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpLCAodGhpcy5fY29t
bWl0cyB8fCBbXSkubWFwKGZ1bmN0aW9uIChjb21taXQpIHsKLSAgICAgICAgICAgIHZhciBsYWJl
bCA9IGNvbW1pdC5sYWJlbCgpOwotICAgICAgICAgICAgdmFyIHVybCA9IGNvbW1pdC51cmwoKTsK
KyAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRoaXMuY29udGVudCgnY29tbWl0cy1saXN0Jyks
IChjb21taXRzIHx8IFtdKS5tYXAoKGNvbW1pdCkgPT4geworICAgICAgICAgICAgY29uc3QgbGFi
ZWwgPSBjb21taXQubGFiZWwoKTsKKyAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbW1pdC51cmwo
KTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICBl
bGVtZW50KCd0aCcsIFtlbGVtZW50KCdoNCcsIHtjbGFzczogJ3JldmlzaW9uJ30sIHVybCA/IGxp
bmsobGFiZWwsIGNvbW1pdC50aXRsZSgpLCB1cmwpIDogbGFiZWwpLCBjb21taXQuYXV0aG9yKCkg
fHwgJyddKSwKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGNvbW1pdC5tZXNzYWdlKCkg
PyBjb21taXQubWVzc2FnZSgpLnN1YnN0cmluZygwLCA4MCkgOiAnJyldKTsKICAgICAgICAgfSkp
OwotCi0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jb21taXRzLXZpZXdl
ci1zcGlubmVyJykuc3R5bGUuZGlzcGxheSA9IHRoaXMuX2ZldGNoaW5nUHJvbWlzZSA/IG51bGwg
OiAnbm9uZSc7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gYAogICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWl0cy12aWV3ZXItY29u
dGFpbmVyIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21taXRzLXZpZXdlci1zcGlu
bmVyIj48c3Bpbm5lci1pY29uPjwvc3Bpbm5lci1pY29uPjwvZGl2PgotICAgICAgICAgICAgICAg
IDx0YWJsZSBjbGFzcz0iY29tbWl0cy12aWV3ZXItdGFibGUiPgotICAgICAgICAgICAgICAgICAg
ICA8Y2FwdGlvbj48L2NhcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KLSAgICAg
ICAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzcGlubmVy
LWNvbnRhaW5lciI+PHNwaW5uZXItaWNvbiBpZD0ic3Bpbm5lciI+PC9zcGlubmVyLWljb24+PC9k
aXY+CisgICAgICAgICAgICAgICAgPHRhYmxlIGlkPSJjb21taXRzLXZpZXdlci10YWJsZSI+Cisg
ICAgICAgICAgICAgICAgICAgIDxjYXB0aW9uIGlkPSJyZXBvc2l0b3J5LW5hbWUiPjwvY2FwdGlv
bj4KKyAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJjb21taXRzLWxpc3QiPjwvdGJvZHk+
CiAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgIDwvZGl2PgogYDsKQEAgLTEw
NCwzMSArOTksMjcgQEAgY2xhc3MgQ29tbWl0TG9nVmlld2VyIGV4dGVuZHMgQ29tcG9uZW50QmFz
ZSB7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgeworICAgICAg
ICAgICAgI2NvbW1pdHMtdmlld2VyLXRhYmxlIHsKICAgICAgICAgICAgICAgICB3aWR0aDogMTAw
JTsKKyAgICAgICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAg
ICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgY2FwdGlvbiB7CisgICAgICAgICAgICBj
YXB0aW9uIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAg
ICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLmNvbW1pdHMtdmlld2VyLXRhYmxlIHsKLSAgICAgICAgICAgICAgICBib3Jk
ZXItY29sbGFwc2U6IGNvbGxhcHNlOwotICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNv
bGlkIDFweCAjY2NjOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3
ZXItdGFibGUgLnJldmlzaW9uIHsKKyAgICAgICAgICAgIC5yZXZpc2lvbiB7CiAgICAgICAgICAg
ICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgICBwYWRk
aW5nOiAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFi
bGUgdGQsCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItdGFibGUgdGggeworICAgICAgICAg
ICAgdGQsIHRoIHsKICAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAg
ICAgICAgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgICAg
IHBhZGRpbmc6IDAuMnJlbTsKQEAgLTEzNyw3ICsxMjgsNyBAQCBjbGFzcyBDb21taXRMb2dWaWV3
ZXIgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY29tbWl0cy12aWV3ZXItc3Bp
bm5lciB7CisgICAgICAgICAgICAjc3Bpbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAg
IG1hcmdpbi10b3A6IDJyZW07CiAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvY29tbWl0LWxvZy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cuanMKaW5kZXggNGViYTdlMTAxMmFlMDFkOWU1MTJmOTA2
NDg4N2M3YzA2YTUxNDY1OS4uNTYyNGFmNTRiZTZlOGRjOGI4ZjU1YWQ2Yjk2NzcyZDUyNjhlYmVi
NSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
Y29tbWl0LWxvZy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9jb21taXQtbG9nLmpzCkBAIC00OSw3MCArNDksNDYgQEAgY2xhc3MgQ29tbWl0TG9nIGV4
dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgaWYgKHRoaXMgPT0gcHJldmlvdXNDb21t
aXQpCiAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdCA9IG51bGw7CiAKLSAgICAgICAgdmFyIHJl
cG9zaXRvcnkgPSB0aGlzLl9yZXBvc2l0b3J5OworICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0g
dGhpcy5fcmVwb3NpdG9yeTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NvbW1pdCkKLSAgICAgICAg
ICAgIHJldHVybiB7ZnJvbTogbnVsbCwgdG86IHRoaXMucmV2aXNpb24oKSwgcmVwb3NpdG9yeTog
cmVwb3NpdG9yeSwgbGFiZWw6IHRoaXMubGFiZWwoKSwgdXJsOiB0aGlzLnVybCgpfTsKLQotICAg
ICAgICB2YXIgdG8gPSB0aGlzLnJldmlzaW9uKCk7Ci0gICAgICAgIHZhciBmcm9tID0gcHJldmlv
dXNDb21taXQucmV2aXNpb24oKTsKLSAgICAgICAgdmFyIGxhYmVsID0gbnVsbDsKLSAgICAgICAg
aWYgKHBhcnNlSW50KHRvKSA9PSB0bykgeyAvLyBlLmcuIHIxMjM0NS4KLSAgICAgICAgICAgIGZy
b20gPSAocGFyc2VJbnQoZnJvbSkgKyAxKS50b1N0cmluZygpOworICAgICAgICAgICAgcmV0dXJu
IHtyZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogdGhpcy5sYWJlbCgpLCB1cmw6IHRoaXMu
dXJsKCl9OworCisgICAgICAgIGNvbnN0IHRvID0gdGhpcy5yZXZpc2lvbigpOworICAgICAgICBj
b25zdCBmcm9tID0gcHJldmlvdXNDb21taXQucmV2aXNpb24oKTsKKyAgICAgICAgbGV0IGZyb21S
ZXZpc2lvbkZvclVSTCA9IGZyb207CisgICAgICAgIGxldCBsYWJlbCA9IG51bGw7CisgICAgICAg
IGlmIChwYXJzZUludChmcm9tKSA9PSBmcm9tKSB7IC8vIGUuZy4gcjEyMzQ1LgorICAgICAgICAg
ICAgZnJvbVJldmlzaW9uRm9yVVJMID0gKHBhcnNlSW50KGZyb20pICsgMSkudG9TdHJpbmc7CiAg
ICAgICAgICAgICBsYWJlbCA9IGByJHtmcm9tfS1yJHt0aGlzLnJldmlzaW9uKCl9YDsKLSAgICAg
ICAgfSBlbHNlIGlmICh0by5sZW5ndGggPT0gNDApIHsgLy8gZS5nLiBnaXQgaGFzaAorICAgICAg
ICB9IGVsc2UgaWYgKHRvLmxlbmd0aCA9PSA0MCkgLy8gZS5nLiBnaXQgaGFzaAogICAgICAgICAg
ICAgbGFiZWwgPSBgJHtmcm9tLnN1YnN0cmluZygwLCA4KX0uLiR7dG8uc3Vic3RyaW5nKDAsIDgp
fWA7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICBlbHNlCiAgICAgICAgICAgICBsYWJlbCA9IGAk
e2Zyb219IC0gJHt0b31gOwogCi0gICAgICAgIHJldHVybiB7ZnJvbTogZnJvbSwgdG86IHRvLCBy
ZXBvc2l0b3J5OiByZXBvc2l0b3J5LCBsYWJlbDogbGFiZWwsIHVybDogcmVwb3NpdG9yeS51cmxG
b3JSZXZpc2lvblJhbmdlKGZyb20sIHRvKX07CisgICAgICAgIHJldHVybiB7cmVwb3NpdG9yeTog
cmVwb3NpdG9yeSwgbGFiZWw6IGxhYmVsLCB1cmw6IHJlcG9zaXRvcnkudXJsRm9yUmV2aXNpb25S
YW5nZShmcm9tLCB0byl9OwogICAgIH0KIAotICAgIHN0YXRpYyBmZXRjaEJldHdlZW5SZXZpc2lv
bnMocmVwb3NpdG9yeSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoQmV0d2VlblJldmlzaW9u
cyhyZXBvc2l0b3J5LCBwcmVjZWRpbmdSZXZpc2lvbiwgbGFzdFJldmlzaW9uKQogICAgIHsKLSAg
ICAgICAgdmFyIHBhcmFtcyA9IFtdOwotICAgICAgICBpZiAoZnJvbSAmJiB0bykgewotICAgICAg
ICAgICAgcGFyYW1zLnB1c2goWydmcm9tJywgZnJvbV0pOwotICAgICAgICAgICAgcGFyYW1zLnB1
c2goWyd0bycsIHRvXSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdXJsID0gJy4uL2FwaS9j
b21taXRzLycgKyByZXBvc2l0b3J5LmlkKCkgKyAnLz8nICsgcGFyYW1zLm1hcChmdW5jdGlvbiAo
a2V5VmFsdWUpIHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5VmFs
dWVbMF0pICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGtleVZhbHVlWzFdKTsKLSAgICAgICAg
fSkuam9pbignJicpOwotCi0KLSAgICAgICAgdmFyIGNhY2hlZExvZ3MgPSB0aGlzLl9jYWNoZWRD
b21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvKTsKLSAgICAgICAgaWYgKGNhY2hlZExvZ3Mp
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVz
b2x2ZShjYWNoZWRMb2dzKTsgfSk7Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAg
ICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT05XaXRoU3RhdHVzKHVybCkudGhlbihmdW5jdGlvbiAo
ZGF0YSkgewotICAgICAgICAgICAgdmFyIGNvbW1pdHMgPSBkYXRhWydjb21taXRzJ10ubWFwKGZ1
bmN0aW9uIChyYXdEYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmF3RGF0YS5yZXBvc2l0b3J5ID0g
cmVwb3NpdG9yeTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmds
ZXRvbihyYXdEYXRhLmlkLCByYXdEYXRhKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
c2VsZi5fY2FjaGVDb21taXRMb2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBjb21taXRzKTsKLSAg
ICAgICAgICAgIHJldHVybiBjb21taXRzOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRklYTUU6
IFRoZSBjYWNoZSBzaG91bGQgYmUgc21hcnRlciBhYm91dCBmZXRjaGluZyBhIHJhbmdlIHdpdGhp
biBhbiBhbHJlYWR5IGZldGNoZWQgcmFuZ2UsIGV0Yy4uLgorICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGV2aWN0IHNvbWUgZW50aXJlcyBmcm9tIHRoZSBjYWNoZSBpbiBjYWNoZWRGZXRjaC4K
KyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvY29tbWl0cy8ke3JlcG9zaXRv
cnkuaWQoKX0vYCwge3ByZWNlZGluZ1JldmlzaW9uLCBsYXN0UmV2aXNpb259KQorICAgICAgICAg
ICAgLnRoZW4oKGRhdGEpID0+IHRoaXMuX2NvbnN0cnVjdEZyb21SYXdEYXRhKHJlcG9zaXRvcnks
IGRhdGEpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2NhY2hlZENvbW1pdExvZ3MocmVwb3NpdG9y
eSwgZnJvbSwgdG8pCisgICAgc3RhdGljIGZldGNoRm9yU2luZ2xlUmV2aXNpb24ocmVwb3NpdG9y
eSwgcmV2aXNpb24pCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2NhY2hlcykKLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotICAgICAgICB2YXIgY2FjaGUgPSB0aGlzLl9jYWNoZXNbcmVwb3Np
dG9yeS5pZCgpXTsKLSAgICAgICAgaWYgKCFjYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
OwotICAgICAgICAvLyBGSVhNRTogTWFrZSBlYWNoIGNvbW1pdCBrbm93IG9mIGl0cyBwYXJlbnQs
IHRoZW4gd2UgY2FuIGRvIGEgYmV0dGVyIGNhY2hpbmcuIAotICAgICAgICByZXR1cm4gY2FjaGVb
ZnJvbSArICd8JyArIHRvXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkv
Y29tbWl0cy8ke3JlcG9zaXRvcnkuaWQoKX0vJHtyZXZpc2lvbn1gKS50aGVuKChkYXRhKSA9PiB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0RnJvbVJhd0RhdGEocmVwb3NpdG9y
eSwgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBfY2FjaGVDb21taXRM
b2dzKHJlcG9zaXRvcnksIGZyb20sIHRvLCBsb2dzKQorICAgIHN0YXRpYyBfY29uc3RydWN0RnJv
bVJhd0RhdGEocmVwb3NpdG9yeSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY2Fj
aGVzKQotICAgICAgICAgICAgdGhpcy5fY2FjaGVzID0ge307Ci0gICAgICAgIGlmICghdGhpcy5f
Y2FjaGVzW3JlcG9zaXRvcnkuaWQoKV0pCi0gICAgICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3Np
dG9yeS5pZCgpXSA9IHt9OwotICAgICAgICB0aGlzLl9jYWNoZXNbcmVwb3NpdG9yeS5pZCgpXVtm
cm9tICsgJ3wnICsgdG9dID0gbG9nczsKKyAgICAgICAgcmV0dXJuIGRhdGFbJ2NvbW1pdHMnXS5t
YXAoKHJhd0RhdGEpID0+IHsKKyAgICAgICAgICAgIHJhd0RhdGEucmVwb3NpdG9yeSA9IHJlcG9z
aXRvcnk7CisgICAgICAgICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyYXdE
YXRhLmlkLCByYXdEYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvZGF0YS1tb2RlbC5qcwpp
bmRleCBmODA1YzU2MDhkMmQwYzAzNWQ5MmQ5OTM1ZWJjNDZkMTc1MTFkMjhlLi42MzE3MGY3YTM1
ODQ5OGQwNmViZjRiY2U2NTM0NzY4YThjMWU0NTM2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9kYXRhLW1vZGVsLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2RhdGEtbW9kZWwuanMKQEAgLTYyLDEw
ICs2MiwxMCBAQCBjbGFzcyBEYXRhTW9kZWxPYmplY3QgewogCiAgICAgc3RhdGljIGNhY2hlZEZl
dGNoKHBhdGgsIHBhcmFtcywgbm9DYWNoZSkKICAgICB7Ci0gICAgICAgIHZhciBxdWVyeSA9IFtd
OworICAgICAgICBjb25zdCBxdWVyeSA9IFtdOwogICAgICAgICBpZiAocGFyYW1zKSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zKQotICAgICAgICAgICAgICAgIHF1ZXJ5LnB1
c2goa2V5ICsgJz0nICsgcGFyc2VJbnQocGFyYW1zW2tleV0pKTsKKyAgICAgICAgICAgIGZvciAo
bGV0IGtleSBpbiBwYXJhbXMpCisgICAgICAgICAgICAgICAgcXVlcnkucHVzaChrZXkgKyAnPScg
KyBlc2NhcGUocGFyYW1zW2tleV0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAocXVlcnkubGVu
Z3RoKQogICAgICAgICAgICAgcGF0aCArPSAnPycgKyBxdWVyeS5qb2luKCcmJyk7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3JlbW90ZS5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCmluZGV4IDBlZWU4MzMzOTI5
YTVjNGM2ZjRhYjkzODliMjMyNTA3YWUxYmVjNmEuLjhkOTIwM2I2YmEyM2JiMmUxMjU4Y2M4Mjkw
ZDcxNDZlM2EzZjYxODcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvcmVtb3RlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
cmVtb3RlLmpzCkBAIC0xMiw3ICsxMiw3IEBAIGNsYXNzIEJyb3dzZXJSZW1vdGVBUEkgZXh0ZW5k
cyBDb21tb25SZW1vdGVBUEkgewogICAgICAgICAgICAgZnVuY3Rpb24gb25sb2FkKCkgewogICAg
ICAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdSZW1vdGUnLCAn
c2VuZEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgIT0gMjAw
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzamVjdCh4aHIuc3RhdHVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh4aHIuc3RhdHVzKTsKICAgICAgICAgICAgICAg
ICByZXNvbHZlKHtzdGF0dXNDb2RlOiB4aHIuc3RhdHVzLCByZXNwb25zZVRleHQ6IHhoci5yZXNw
b25zZVRleHR9KTsKICAgICAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWNvbW1pdHMtdGVzdHMuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRlc3RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliOWM5MzU4MDY5M2E2Yzk3ZTQ3MjliMGViZjhhZDkxYjhiNTg3MWMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRz
LXRlc3RzLmpzCkBAIC0wLDAgKzEsNTcyIEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzc2Vy
dCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworCitjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKK2NvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVx
dWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9y
dDsKK2NvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9u
LW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKKworZGVzY3JpYmUoIi9hcGkvY29t
bWl0cy8iLCBmdW5jdGlvbiAoKSB7CisgICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CisKKyAg
ICBjb25zdCBzdWJ2ZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21l
U2xhdmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAg
ICAiY29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDgiLAorICAg
ICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDI6NTI6MzQuNTc3WiIsCisgICAgICAg
ICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJaYWxhbiBCdWp0YXMiLCAiYWNjb3VudCI6ICJ6
YWxhbkBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJhIG1lc3NhZ2Ui
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NDkiLAor
ICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WiIsCisgICAg
ICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDaHJpcyBEdW1leiIsICJhY2NvdW50Ijog
ImNkdW1lekBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJzb21lIG1l
c3NhZ2UiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJwcmV2aW91c0NvbW1pdCI6
ICIyMTA5NDkiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTA5NTAiLAorICAgICAg
ICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjBUMDM6NDk6MzcuODg3WiIsCisgICAgICAgICAg
ICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21t
aXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICJtZXNzYWdlIjogImFub3Ro
ZXIgbWVzc2FnZSIsCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25z
dCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xh
dmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAi
Y29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkQzMiIsCisgICAgICAgICAg
ICAgICAgIm9yZGVyIjogNgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6
ICIxNkM2OCIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjogNQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkM2NyIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjog
NAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkIyNjU3IiwKKyAg
ICAgICAgICAgICAgICAib3JkZXIiOiAzCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjE2QjI1NTUiLAorICAgICAgICAgICAgICAgICJvcmRlciI6IDIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NY
IiwKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTZBMzIzIiwKKyAgICAgICAgICAgICAg
ICAib3JkZXIiOiAxCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25z
dCBub3RZZXRSZXBvcnRlZENvbW1pdCA9IHsKKyAgICAgICAgcmV2aXNpb246ICcyMTA5NTEnLAor
ICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo1NjoyMC4wNDVaJworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKGNvbW1pdCwgc3VibWl0dGVk
KQorICAgIHsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsncmV2aXNpb24nXSwgc3VibWl0
dGVkWydyZXZpc2lvbiddKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFsKG5ldyBEYXRlKGNvbW1pdFsn
dGltZSddKS50b0lTT1N0cmluZygpLCBzdWJtaXR0ZWRbJ3RpbWUnXSk7CisgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRbJ21lc3NhZ2UnXSwgc3VibWl0dGVkWydtZXNzYWdlJ10pOworICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0WydhdXRob3JOYW1lJ10sIHN1Ym1pdHRlZFsnYXV0aG9yJ11b
J25hbWUnXSk7CisgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvckVtYWlsJ10sIHN1
Ym1pdHRlZFsnYXV0aG9yJ11bJ2FjY291bnQnXSk7CisgICAgICAgIGlmKHN1Ym1pdHRlZFsncHJl
dmlvdXNDb21taXQnXSkgeworICAgICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdFsncHJldmlvdXND
b21taXQnXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0WydwcmV2aW91c0NvbW1pdCddLCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRl
c2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+LycsICgpID0+IHsKKyAgICAgICAgaXQo
InNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNo
aW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0JykudGhlbigocmVzcG9uc2Up
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
UmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gdGhlcmUgYXJlIG5v
IHJlcG9ydGVkIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAn
V2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5
OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJL
aXQnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qg
b2YgYWxsIGNvbW1pdHMgZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNvbW1pdHMpOworICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LycpOwor
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworCisgICAgICAgICAgICAgICAg
Y29uc3QgY29tbWl0cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRzLmxlbmd0aCwgMyk7CisgICAgICAgICAgICAgICAgY29uc3Qgc3VibWl0
dGVkQ29tbWl0cyA9IHN1YnZlcnNpb25Db21taXRzWydjb21taXRzJ107CisgICAgICAgICAgICAg
ICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1swXSwgc3VibWl0dGVk
Q29tbWl0c1swXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJt
aXR0ZWQoY29tbWl0c1sxXSwgc3VibWl0dGVkQ29tbWl0c1sxXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0c1syXSwgc3VibWl0dGVkQ29t
bWl0c1syXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3ByZXZp
b3VzQ29tbWl0J10sIGNvbW1pdHNbMV1bJ2lkJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsaXN0IG9mIG9yZGVyZWQgY29t
bWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvJyk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0
cyA9IHJlc3VsdFsnY29tbWl0cyddOworICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdHRlZENv
bW1pdHMgPSBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0cyddOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzLmxlbmd0aCwgc3VibWl0dGVkQ29tbWl0cy5sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBdWydyZXZpc2lvbiddLCBzdWJt
aXR0ZWRDb21taXRzWzVdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0c1sxXVsncmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1s0XVsncmV2aXNpb24n
XSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMl1bJ3JldmlzaW9uJ10s
IHN1Ym1pdHRlZENvbW1pdHNbM11bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRzWzNdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzJdWydyZXZp
c2lvbiddKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s0XVsncmV2aXNp
b24nXSwgc3VibWl0dGVkQ29tbWl0c1sxXVsncmV2aXNpb24nXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdHNbNV1bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbMF1b
J3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisg
ICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vb2xkZXN0JywgKCkgPT4gewor
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBh
cmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0
JykudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0
cyB3aGVuIHRoZXJlIGFyZSBubyBjb21taXRzIiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAn
bmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3Qn
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBj
b21taXQiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNp
b25Db21taXRzKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBv
c3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0
cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvb2xkZXN0Jyk7CisgICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29t
bWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25D
b21taXRzWydjb21taXRzJ11bMF0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgY29tbWl0IGJhc2VkIG9uICdjb21t
aXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5nIiwgKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAg
IHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0cykudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9h
cGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1pdHMpOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvT1NYL29sZGVzdCcpOworICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMn
XVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVs1XVsncmV2
aXNpb24nXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk
ZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXRlc3QnLCAoKSA9PiB7CisgICAg
ICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBu
byBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKS50
aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHRzIHdo
ZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1l
JzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwor
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgb2xkZXN0IGNvbW1p
dCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCk7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNv
bW1pdHMpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsK
KyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
dWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJ
c1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgc3VidmVyc2lvbkNvbW1p
dHNbJ2NvbW1pdHMnXS5zbGljZSgpLnBvcCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0aGUgbGF0ZXN0IGNvbW1pdCBiYXNlZCBv
biAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CisgICAg
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3Rh
dHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXRlc3QnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0
YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21t
aXRzJ10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydj
b21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ11b
MF1bJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vbGFzdC1yZXBvcnRlZCcs
ICgpID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdo
ZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2Vi
S2l0L2xhc3QtcmVwb3J0ZWQnKS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVy
biBhbiBlbXB0eSByZXN1bHQgd2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQo
J3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzog
JzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQorICAgICAgICAg
ICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Cisg
ICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdHMg
d2hlbiB0aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQv
bGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVy
biB0aGUgb2xkZXN0IHJlcG9ydGVkIGNvbW1pdCIsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgY29uc3QgcmVtb3RlID0g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLAor
ICAgICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1l
JzogJ1dlYktpdCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3Jl
cG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiBub3RZZXRSZXBvcnRlZENvbW1pdC5yZXZpc2lvbiwg
J3RpbWUnOiBub3RZZXRSZXBvcnRlZENvbW1pdC50aW1lfSksCisgICAgICAgICAgICBdKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1
cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04o
Jy9hcGkvY29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpOworICAgICAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddLnNsaWNlKCkucG9wKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXN0IHJlcG9ydGVkIGNvbW1pdCBiYXNl
ZCBvbiAnY29tbWl0X29yZGVyJyB3aGVuICdjb21taXRfdGltZScgaXMgbWlzc2luZyIsICgpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdHMp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRo
U3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkJyk7CisgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT08c3RhcnRfb3JkZXI+JnRvPTxlbmRfb3JkZXI+JywgKCkgPT4geworICAg
ICAgICBpdCgic2hvdWxkIHJldHVybiBhIGxpc3Qgb2YgY29tbWl0IGluIGdpdmVuIHZhbGlkIG9y
ZGVyIHJhbmdlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ09TWCd9KSwK
KyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnU2llcnJhMTZDNjcnLCAnb3JkZXInOiAzNjcsICdyZXBvcnRlZCc6IHRydWV9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjgnLCAnb3JkZXInOiAzNjgsICdyZXBvcnRlZCc6IHRy
dWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZDNjknLCAnb3JkZXInOiAzNjksICdyZXBvcnRlZCc6
IGZhbHNlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0
b3J5JzogMSwgJ3JldmlzaW9uJzogJ1NpZXJyYTE2RDMyJywgJ29yZGVyJzogNDMyLCAncmVwb3J0
ZWQnOiB0cnVlfSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gv
bGFzdC1yZXBvcnRlZD9mcm9tPTM2NyZ0bz0zNzAnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJl
c3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0
dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlc3BvbnNlWydj
b21taXRzJ107CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdHMubGVuZ3RoLCAx
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSByZXN1bHRzWzBdOworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb21taXQucmV2aXNpb24sICdTaWVycmExNkM2OCcpOworICAg
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zy
b209MzcwJnRvPTM2NycpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAg
fSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MjAwJnRv
PTI5OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzdWx0cy5sZW5ndGgsIDApOworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTignL2FwaS9jb21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY5JnRvPTQzMicpOwor
ICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBjb25z
dCByZXN1bHRzID0gcmVzcG9uc2VbJ2NvbW1pdHMnXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9
IHJlc3VsdHNbMF07CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lv
biwgJ1NpZXJyYTE2RDMyJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi88Y29tbWl0PicsICgp
ID0+IHsKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
LzIxMDk0OScpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFVua25vd25D
b21taXQgd2hlbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBjb21taXQgZG9lcyBub3QgZXhpc3QgaW4g
dGhlIGRhdGFiYXNlIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktp
dCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44
ODdaJ30pCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0LzIx
MDk0OScpOworICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJu
IHRoZSBjb21taXQgZXZlbiBpZiBpdCBoYWQgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAn
LCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAgICAgICAgICAgIF0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvMjEwOTUwJyk7CisgICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnY29t
bWl0cyddLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1lQXNP
bmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOiAnMjEw
OTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3
WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6IG51bGwsIGFjY291bnQ6IG51
bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLAorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIHRoZSBmdWxsIHJlc3VsdCBmb3IgYSByZXBvcnRlZCBjb21taXQiLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOworICAgICAg
ICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRzKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygn
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9h
cGkvY29tbWl0cy9XZWJLaXQvMjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09L
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0
dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddWzFd
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgIH0pOworCisgICAgZGVzY3Jp
YmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vP3ByZWNlZGluZ1JldmlzaW9uPTxjb21taXQt
MT4mbGFzdFJldmlzaW9uPTxjb21taXQtMj4nLCAoKSA9PiB7CisgICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBv
c2l0b3J5IiwgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJyku
dGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVu
IG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJh
c2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIu
aW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAg
ICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZp
c2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKKyAg
ICAgICAgICAgIF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1Jl
dmlzaW9uPTIxMDkwMCZsYXN0UmV2aXNpb249MjExMDAwJyk7CisgICAgICAgICAgICB9KS50aGVu
KChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdVbmtub3duQ29tbWl0Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0IHdoZW4gY29tbWl0
cyBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIGhhdmUgbm90IGJlZW4gcmVwb3J0ZWQiLCAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAorICAgICAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5
NDknLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonfSksCisgICAgICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIx
MDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KSwKKyAgICAgICAgICAg
IF0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGluZ1JldmlzaW9uPTIx
MDk0OSZsYXN0UmV2aXNpb249MjEwOTUwJyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1p
dHMnXSwgW10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIEludmFsaWRDb21taXRSYW5nZSB3aGVuIHRoZSBzcGVjaWZpZWQgcmFuZ2Ug
aXMgYmFja3dhcmRzIiwgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktp
dCd9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiAnMjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42
NDVaJ30pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NTAmbGFzdFJldmlzaW9uPTIxMDk0OScpOworICAgICAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZENvbW1pdFJhbmdlJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdXNlIHRoZSBj
b21taXQgb3JkZXIgd2hlbiB0aW1lIGlzIG5vdCBzcGVjaWZpZWQiLCAoKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycs
IG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0
KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUn
LCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3
Jywgb3JkZXI6IDMsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T04oJy9hcGkvY29tbWl0cy9tYWNPUy8/cHJlY2VkaW5nUmV2aXNpb249MTAuMTIlMjAxNkEzMjMm
bGFzdFJldmlzaW9uPTEwLjEyJTIwMTZCMjY1NycpOworICAgICAgICAgICAgfSkudGhlbigocmVz
cG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydj
b21taXRzJ10ubWFwKChjb21taXQpID0+IGNvbW1pdFsncmV2aXNpb24nXSksIFsnMTAuMTIgMTZC
MjU1NScsICcxMC4xMiAxNkIyNjU3J10pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIEluY29uc2lzdGVudENvbW1pdHMgd2hlbiBwcmVj
ZWRpbmdSZXZpc2lvbiBzcGVjaWZpZXMgYSB0aW1lIGJ1dCBsYXN0UmV2aXNpb24gZG9lcyBub3Qi
LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9u
JzogJzEwLjEyIDE2QTMyMycsIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUwLjY0NVonLCBvcmRl
cjogMSwgJ3JlcG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNTU1Jywgb3Jk
ZXI6IDIsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2Nv
bW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjY1NycsIG9y
ZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIwMTZBMzIzJmxhc3RS
ZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBJbmNvbnNpc3RlbnRDb21taXRzIHdoZW4gcHJlY2Vk
aW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgaGFzIGEgdGltZSBidXQgbGFzdFJl
dmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnbWFjT1Mn
fSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzog
MSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVwb3J0ZWQnOiB0cnVl
fSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzog
MSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3JlcG9ydGVkJzogdHJ1
ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6
IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgdGltZTogJzIwMTctMDEtMjBUMDM6MjM6
NTAuNjQ1WicsIG9yZGVyOiAzLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvbWFjT1MvP3ByZWNlZGluZ1JldmlzaW9uPTEwLjEyJTIw
MTZBMzIzJmxhc3RSZXZpc2lvbj0xMC4xMiUyMDE2QjI2NTcnKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0luY29uc2lzdGVudENvbW1pdHMnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgic2hvdWxkIHJldHVybiBlbXB0eSByZXN1bHRzIHdoZW4g
cHJlY2VkaW5nUmV2aXNpb24gZG9lcyBub3Qgc3BlY2lmeSBhIHRpbWUgb3IgYW4gb3JkZXIgaGFz
IGEgdGltZSBidXQgbGFzdFJldmlzaW9uIGRvZXMiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzog
MSwgJ25hbWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsICdyZXBvcnRl
ZCc6IHRydWV9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9z
aXRvcnknOiAxLCAncmV2aXNpb24nOiAnMTAuMTIgMTZCMjU1NScsIG9yZGVyOiAyLCAncmVwb3J0
ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBv
c2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI2NTcnLCBvcmRlcjogMywgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21h
Y09TLz9wcmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIl
MjAxNkIyNjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGVt
cHR5IHJlc3VsdHMgd2hlbiBwcmVjZWRpbmdSZXZpc2lvbiBhbiBvcmRlciBoYXMgYSB0aW1lIGJ1
dCBsYXN0UmV2aXNpb24gZG9lcyBub3QiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25h
bWUnOiAnbWFjT1MnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydy
ZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QTMyMycsIG9yZGVyOiAxLCAncmVw
b3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydy
ZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzEwLjEyIDE2QjI1NTUnLCBvcmRlcjogMiwgJ3Jl
cG9ydGVkJzogdHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcxMC4xMiAxNkIyNjU3JywgJ3JlcG9ydGVkJzog
dHJ1ZX0pLAorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL21hY09TLz9w
cmVjZWRpbmdSZXZpc2lvbj0xMC4xMiUyMDE2QTMyMyZsYXN0UmV2aXNpb249MTAuMTIlMjAxNkIy
NjU3Jyk7CisgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHJlcG9ydGVk
IGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQn
OiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0OCcsICd0aW1lJzogJzIw
MTctMDEtMjBUMDI6NTI6MzQuNTc3WicsICdyZXBvcnRlZCc6IHRydWV9KSwKKyAgICAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAn
MjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzog
dHJ1ZX0pLAorICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9y
eSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3
Ljg4N1onLCAncmVwb3J0ZWQnOiB0cnVlfSksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL2NvbW1pdHMvV2ViS2l0Lz9wcmVjZWRpbmdSZXZpc2lvbj0yMTA5NDgmbGFzdFJldmlzaW9u
PTIxMDk1MCcpOworICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAyKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1p
dHMnXVswXSwgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKKyAg
ICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NDknLAorICAgICAgICAgICAgICAgICAg
ICB0aW1lOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywKKyAgICAgICAgICAgICAgICAgICAg
YXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U6IG51bGwsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMV0sIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb21taXQ6IG51bGwsCisgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uOiAnMjEwOTUwJywKKyAgICAgICAgICAgICAgICAgICAgdGltZTogJzIwMTct
MDEtMjBUMDM6NDk6MzcuODg3WicsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoge25hbWU6
IG51bGwsIGFjY291bnQ6IG51bGx9LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxs
LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGl0KCJzaG91bGQgbm90IGluY2x1ZGUgYSByZXZpc2lvbiBub3Qgd2l0aGluIHRoZSBz
cGVjaWZpZWQgcmFuZ2UiLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9
KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTQ3JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMjozODo0NS40ODVa
JywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTQ4JywgJ3RpbWUnOiAnMjAx
Ny0wMS0yMFQwMjo1MjozNC41NzdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAn
MjEwOTQ5JywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzoyMzo1MC42NDVaJywgJ3JlcG9ydGVkJzog
ZmFsc2V9KSwKKyAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRv
cnknOiAxLCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OToz
Ny44ODdaJywgJ3JlcG9ydGVkJzogZmFsc2V9KSwKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29t
bWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2
ZXJzaW9uQ29tbWl0cyk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVtb3RlLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP3ByZWNlZGlu
Z1JldmlzaW9uPTIxMDk0NyZsYXN0UmV2aXNpb249MjEwOTQ5Jyk7CisgICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOworICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0c1sn
Y29tbWl0cyddWzBdKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1
Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMn
XVsxXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsKKworfSk7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktY29tbWl0
cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlYzU0YTMyYmRhNDFlYTEwOWFh
Yzc5Y2RmZjRiOGViM2E2YzI4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDc2ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQot
Y29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Ci0KLWNvbnN0IFRlc3RTZXJ2ZXIgPSBy
ZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwotY29uc3QgYWRkU2xhdmVGb3JS
ZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFNs
YXZlRm9yUmVwb3J0OwotY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291
cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwotCi1kZXNjcmli
ZSgiL2FwaS9jb21taXRzLyIsIGZ1bmN0aW9uICgpIHsKLSAgICBwcmVwYXJlU2VydmVyVGVzdCh0
aGlzKTsKLQotICAgIGNvbnN0IHN1YnZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVO
YW1lIjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29y
ZCIsCi0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIx
MDk0OCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMjo1MjozNC41Nzda
IiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIlphbGFuIEJ1anRhcyIsICJh
Y2NvdW50IjogInphbGFuQGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdlIjog
ImEgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjog
IjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzoyMzo1MC42
NDVaIiwKLSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNocmlzIER1bWV6Iiwg
ImFjY291bnQiOiAiY2R1bWV6QGFwcGxlLmNvbSJ9LAotICAgICAgICAgICAgICAgICJtZXNzYWdl
IjogInNvbWUgbWVzc2FnZSIsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCi0gICAgICAgICAgICAgICAgInByZXZp
b3VzQ29tbWl0IjogIjIxMDk0OSIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjIxMDk1
MCIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaIiwK
LSAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2Nv
dW50IjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCi0gICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiOiAiYW5vdGhlciBtZXNzYWdlIiwKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0K
LQotICAgIGNvbnN0IHN5c3RlbVZlcnNpb25Db21taXRzID0gewotICAgICAgICAic2xhdmVOYW1l
IjogInNvbWVTbGF2ZSIsCi0gICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIs
Ci0gICAgICAgICJjb21taXRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2RDMyIiwK
LSAgICAgICAgICAgICAgICAib3JkZXIiOiA2Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAg
InJldmlzaW9uIjogIjE2QzY4IiwKLSAgICAgICAgICAgICAgICAib3JkZXIiOiA1Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9T
WCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2QzY3IiwKLSAgICAgICAgICAgICAg
ICAib3JkZXIiOiA0Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE2
QjI2NTciLAotICAgICAgICAgICAgICAgICJvcmRlciI6IDMKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwKLSAgICAgICAg
ICAgICAgICAicmV2aXNpb24iOiAiMTZCMjU1NSIsCi0gICAgICAgICAgICAgICAgIm9yZGVyIjog
MgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICJPU1giLAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNkEzMjMiLAotICAg
ICAgICAgICAgICAgICJvcmRlciI6IDEKLSAgICAgICAgICAgIH0KLSAgICAgICAgXQotICAgIH0K
LQotICAgIGNvbnN0IG5vdFlldFJlcG9ydGVkQ29tbWl0ID0gewotICAgICAgICByZXZpc2lvbjog
JzIxMDk1MScsCi0gICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjU2OjIwLjA0NVonCi0gICAg
fQotCi0gICAgZnVuY3Rpb24gYXNzZXJ0Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQoY29tbWl0
LCBzdWJtaXR0ZWQpCi0gICAgewotICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0WydyZXZpc2lv
biddLCBzdWJtaXR0ZWRbJ3JldmlzaW9uJ10pOwotICAgICAgICBhc3NlcnQuZXF1YWwobmV3IERh
dGUoY29tbWl0Wyd0aW1lJ10pLnRvSVNPU3RyaW5nKCksIHN1Ym1pdHRlZFsndGltZSddKTsKLSAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnbWVzc2FnZSddLCBzdWJtaXR0ZWRbJ21lc3NhZ2Un
XSk7Ci0gICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ2F1dGhvck5hbWUnXSwgc3VibWl0dGVk
WydhdXRob3InXVsnbmFtZSddKTsKLSAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsnYXV0aG9y
RW1haWwnXSwgc3VibWl0dGVkWydhdXRob3InXVsnYWNjb3VudCddKTsKLSAgICAgICAgaWYoc3Vi
bWl0dGVkWydwcmV2aW91c0NvbW1pdCddKSB7Ci0gICAgICAgICAgICBhc3NlcnQub2soY29tbWl0
WydwcmV2aW91c0NvbW1pdCddKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRbJ3ByZXZpb3VzQ29tbWl0J10sIG51bGwpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3NpdG9yeT4vJywgKCkgPT4gewot
ICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90Rm91bmQgd2hlbiB0aGVyZSBh
cmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQnKS50aGVu
KChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBlbXB0eSByZXN1bHQgd2hlbiB0
aGVyZSBhcmUgbm8gcmVwb3J0ZWQgY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAx
LCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRz
JywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTct
MDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVy
biB0aGUgbGlzdCBvZiBhbGwgY29tbWl0cyBmb3IgYSBnaXZlbiByZXBvc2l0b3J5IiwgKCkgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXRz
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0cyk7
Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9X
ZWJLaXQvJyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0KLSAgICAg
ICAgICAgICAgICBjb25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAzKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBzdWJtaXR0ZWRDb21taXRzID0gc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzBd
LCBzdWJtaXR0ZWRDb21taXRzWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1Nh
bWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzFdLCBzdWJtaXR0ZWRDb21taXRzWzFdKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChjb21taXRzWzJdLCBz
dWJtaXR0ZWRDb21taXRzWzJdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
c1syXVsncHJldmlvdXNDb21taXQnXSwgY29tbWl0c1sxXVsnaWQnXSk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxpc3Qgb2Yg
b3JkZXJlZCBjb21taXRzIGZvciBhIGdpdmVuIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRzKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL09TWC8nKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBjb21taXRzID0gcmVzdWx0Wydjb21taXRzJ107Ci0gICAgICAgICAgICAgICAgY29uc3Qg
c3VibWl0dGVkQ29tbWl0cyA9IHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ107Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCBzdWJtaXR0ZWRDb21taXRz
Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMF1bJ3Jldmlz
aW9uJ10sIHN1Ym1pdHRlZENvbW1pdHNbNV1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzWzFdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzRd
WydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1syXVsn
cmV2aXNpb24nXSwgc3VibWl0dGVkQ29tbWl0c1szXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbM11bJ3JldmlzaW9uJ10sIHN1Ym1pdHRlZENvbW1p
dHNbMl1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRz
WzRdWydyZXZpc2lvbiddLCBzdWJtaXR0ZWRDb21taXRzWzFdWydyZXZpc2lvbiddKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1s1XVsncmV2aXNpb24nXSwgc3VibWl0dGVk
Q29tbWl0c1swXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9vbGRlc3Qn
LCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9zaXRvcnlOb3RGb3VuZCB3
aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dl
YktpdC9vbGRlc3QnKS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdSZXBvc2l0b3J5Tm90Rm91bmQnKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBhbiBl
bXB0eSByZXN1bHRzIHdoZW4gdGhlcmUgYXJlIG5vIGNvbW1pdHMiLCAoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgncmVwb3NpdG9yaWVzJywg
eydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2Vi
S2l0L29sZGVzdCcpOwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3BvbnNlWydjb21taXRzJ10sIFtdKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgic2hvdWxkIHJldHVybiB0
aGUgb2xkZXN0IGNvbW1pdCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBv
cnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVy
biByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZl
cnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9vbGRlc3QnKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwg
c3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1pdHMnXVswXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIG9sZGVzdCBjb21taXQgYmFz
ZWQgb24gJ2NvbW1pdF9vcmRlcicgd2hlbiAnY29tbWl0X3RpbWUnIGlzIG1pc3NpbmciLCAoKSA9
PiB7Ci0gICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwot
ICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRz
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0
aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0cyk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3Rl
LmdldEpTT04oJy9hcGkvY29tbWl0cy9PU1gvb2xkZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Vs
dFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddLCBzeXN0ZW1WZXJzaW9uQ29tbWl0c1snY29tbWl0
cyddWzVdWydyZXZpc2lvbiddKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xhdGVzdCcsICgp
ID0+IHsKLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gUmVwb3NpdG9yeU5vdEZvdW5kIHdoZW4g
dGhlcmUgYXJlIG5vIG1hdGNoaW5nIHJlcG9zaXRvcnkiLCAoKSA9PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0
L2xhdGVzdCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5
IHJlc3VsdHMgd2hlbiB0aGVyZSBhcmUgbm8gY29tbWl0cyIsICgpID0+IHsKLSAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQv
bGF0ZXN0Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwgW10pOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBv
bGRlc3QgY29tbWl0IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChz
dWJ2ZXJzaW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
bW90ZS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lv
bkNvbW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdCcpOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFz
c2VydENvbW1pdElzU2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2
ZXJzaW9uQ29tbWl0c1snY29tbWl0cyddLnNsaWNlKCkucG9wKCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBsYXRlc3QgY29t
bWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNzaW5n
IiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9u
Q29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0
SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1p
dHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhdGVzdCcpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXN1bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXN1bHRbJ2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSwgc3lzdGVtVmVyc2lvbkNvbW1pdHNb
J2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7
Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi9sYXN0
LXJlcG9ydGVkJywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5
Tm90Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsK
LSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkv
Y29tbWl0cy9XZWJLaXQvbGFzdC1yZXBvcnRlZCcpLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlO
b3RGb3VuZCcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIGFuIGVtcHR5IHJlc3VsdCB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBj
b21taXRzIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAg
IGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwK
LSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAxLCAn
cmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJ30p
Ci0gICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhc3QtcmVw
b3J0ZWQnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXNwb25zZVsnY29tbWl0cyddLCBbXSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gYW4gZW1w
dHkgcmVzdWx0cyB3aGVuIHRoZXJlIGFyZSBubyByZXBvcnRlZCBjb21taXRzIiwgKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ3JlcG9zaXRv
cmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21t
aXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1p
dHMnXSwgW10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJz
aG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgcmVwb3J0ZWQgY29tbWl0IiwgKCkgPT4gewotICAgICAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgICAgICBjb25z
dCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9u
Q29tbWl0cyksCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lk
JzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IG5vdFlldFJlcG9ydGVkQ29tbWl0
LnJldmlzaW9uLCAndGltZSc6IG5vdFlldFJlcG9ydGVkQ29tbWl0LnRpbWV9KSwKLSAgICAgICAg
ICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC9sYXN0LXJlcG9ydGVkJyk7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
Q29tbWl0SXNTYW1lQXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNp
b25Db21taXRzWydjb21taXRzJ10uc2xpY2UoKS5wb3AoKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gdGhlIGxhc3QgcmVwb3J0ZWQg
Y29tbWl0IGJhc2VkIG9uICdjb21taXRfb3JkZXInIHdoZW4gJ2NvbW1pdF90aW1lJyBpcyBtaXNz
aW5nIiwgKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKTsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJz
aW9uQ29tbWl0cykudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5w
b3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNv
bW1pdHMpOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlbW90ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQnKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10sIHN5c3RlbVZlcnNp
b25Db21taXRzWydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10pOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJy9hcGkvY29tbWl0cy88cmVwb3Np
dG9yeT4vbGFzdC1yZXBvcnRlZD9mcm9tPTxzdGFydF9vcmRlcj4mdG89PGVuZF9vcmRlcj4nLCAo
KSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGEgbGlzdCBvZiBjb21taXQgaW4gZ2l2
ZW4gdmFsaWQgb3JkZXIgcmFuZ2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUn
OiAnT1NYJ30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3Np
dG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2NycsICdvcmRlcic6IDM2NywgJ3JlcG9y
dGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OCcsICdvcmRlcic6IDM2OCwgJ3Jl
cG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICdTaWVycmExNkM2OScsICdvcmRlcic6IDM2OSwg
J3JlcG9ydGVkJzogZmFsc2V9KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMn
LCB7J3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiAnU2llcnJhMTZEMzInLCAnb3JkZXInOiA0
MzIsICdyZXBvcnRlZCc6IHRydWV9KQotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL09TWC9sYXN0LXJlcG9ydGVkP2Zyb209MzY3JnRvPTM3MCcpOwotICAgICAgICAgICAg
fSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0g
cmVzcG9uc2VbJ2NvbW1pdHMnXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
cy5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9IHJlc3VsdHNbMF07
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbiwgJ1NpZXJyYTE2
QzY4Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3Qt
cmVwb3J0ZWQ/ZnJvbT0zNzAmdG89MzY3Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0
cyddOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/
ZnJvbT0yMDAmdG89Mjk5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvT1NYL2xhc3QtcmVwb3J0ZWQ/ZnJvbT0zNjkm
dG89NDMyJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwotICAgICAgICAg
ICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXNwb25zZVsnY29tbWl0cyddOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY29tbWl0ID0gcmVzdWx0c1swXTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0LnJldmlzaW9uLCAnU2llcnJhMTZEMzInKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+Lzxj
b21taXQ+JywgKCkgPT4gewotICAgICAgICBpdCgic2hvdWxkIHJldHVybiBSZXBvc2l0b3J5Tm90
Rm91bmQgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcmVwb3NpdG9yeSIsICgpID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29t
bWl0cy9XZWJLaXQvMjEwOTQ5JykudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCByZXR1
cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5v
dCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25h
bWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsn
cmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5NTAnLCAndGltZSc6ICcyMDE3LTAxLTIw
VDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvY29tbWl0
cy9XZWJLaXQvMjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdVbmtub3du
Q29tbWl0Jyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNo
b3VsZCByZXR1cm4gdGhlIGNvbW1pdCBldmVuIGlmIGl0IGhhZCBub3QgYmVlbiByZXBvcnRlZCIs
ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9u
JzogJzIxMDk1MCcsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6NDk6MzcuODg3Wid9KQotICAgICAg
ICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NTAnKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0Wydjb21taXRzJ10ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21t
aXRJc1NhbWVBc09uZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVswXSwgewotICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0NvbW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb246ICcyMTA5NTAnLAotICAgICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQw
Mzo0OTozNy44ODdaJywKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwg
YWNjb3VudDogbnVsbH0sCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
aXQoInNob3VsZCByZXR1cm4gdGhlIGZ1bGwgcmVzdWx0IGZvciBhIHJlcG9ydGVkIGNvbW1pdCIs
ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1p
dHMpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05X
aXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
Z2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8yMTA5NDknKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ3N0
YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdFsn
Y29tbWl0cyddLmxlbmd0aCwgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0Q29tbWl0SXNTYW1l
QXNPbmVTdWJtaXR0ZWQocmVzdWx0Wydjb21taXRzJ11bMF0sIHN1YnZlcnNpb25Db21taXRzWydj
b21taXRzJ11bMV0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgfSk7Ci0K
LSAgICBkZXNjcmliZSgnL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5Pi8/ZnJvbT08Y29tbWl0LTE+
JnRvPTxjb21taXQtMj4nLCAoKSA9PiB7Ci0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIFJlcG9z
aXRvcnlOb3RGb3VuZCB3aGVuIHRoZXJlIGFyZSBubyBtYXRjaGluZyByZXBvc2l0b3J5IiwgKCkg
PT4gewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTign
L2FwaS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5MDAmdG89MjExMDAwJykudGhlbigocmVzcG9u
c2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cydd
LCAnUmVwb3NpdG9yeU5vdEZvdW5kJyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgaXQoInNob3VsZCByZXR1cm4gVW5rbm93bkNvbW1pdCB3aGVuIG9uZSBvZiB0aGUg
c3BlY2lmaWVkIGNvbW1pdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UiLCAoKSA9PiB7
Ci0gICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBv
c2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAotICAgICAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6ICcyMTA5
NTAnLCAndGltZSc6ICcyMDE3LTAxLTIwVDAzOjQ5OjM3Ljg4N1onfSkKLSAgICAgICAgICAgIF0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLmdldEpTT04oJy9hcGkvY29tbWl0cy9XZWJLaXQvP2Zyb209MjEwOTAwJnRvPTIxMTAwMCcp
OwotICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVW5rbm93bkNvbW1pdCcpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIGFuIGVt
cHR5IHJlc3VsdCB3aGVuIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBoYXZlIG5vdCBy
ZXBvcnRlZCIsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSks
Ci0gICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwg
J3JldmlzaW9uJzogJzIxMDk0OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1Wid9
KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
J30pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9jb21taXRzL1dlYktpdC8/ZnJv
bT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
ewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycp
OwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVzcG9uc2VbJ2NvbW1pdHMnXSwg
W10pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCJzaG91bGQg
cmV0dXJuIHJlcG9ydGVkIGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsK
LSAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9z
aXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCi0gICAgICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogJzIxMDk0
OScsICd0aW1lJzogJzIwMTctMDEtMjBUMDM6MjM6NTAuNjQ1WicsICdyZXBvcnRlZCc6IHRydWV9
KSwKLSAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiAx
LCAncmV2aXNpb24nOiAnMjEwOTUwJywgJ3RpbWUnOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODda
JywgJ3JlcG9ydGVkJzogdHJ1ZX0pLAotICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9j
b21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDkmdG89MjEwOTUwJyk7Ci0gICAgICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydz
dGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHRb
J2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElzU2Ft
ZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCB7Ci0gICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzQ29tbWl0OiBudWxsLAotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjog
JzIxMDk0OScsCi0gICAgICAgICAgICAgICAgICAgIHRpbWU6ICcyMDE3LTAxLTIwVDAzOjIzOjUw
LjY0NVonLAotICAgICAgICAgICAgICAgICAgICBhdXRob3I6IHtuYW1lOiBudWxsLCBhY2NvdW50
OiBudWxsfSwKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbnVsbCwKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09uZVN1Ym1pdHRl
ZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgewotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0Nv
bW1pdDogbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246ICcyMTA5NTAnLAotICAg
ICAgICAgICAgICAgICAgICB0aW1lOiAnMjAxNy0wMS0yMFQwMzo0OTozNy44ODdaJywKLSAgICAg
ICAgICAgICAgICAgICAgYXV0aG9yOiB7bmFtZTogbnVsbCwgYWNjb3VudDogbnVsbH0sCi0gICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNob3VsZCBub3QgaW5jbHVk
ZSBhIHJldmlzaW9uIG5vdCB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZSIsICgpID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcv
YXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTignL2Fw
aS9jb21taXRzL1dlYktpdC8/ZnJvbT0yMTA5NDgmdG89MjEwOTQ5Jyk7Ci0gICAgICAgICAgICB9
KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1
bHRbJ2NvbW1pdHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydENvbW1pdElz
U2FtZUFzT25lU3VibWl0dGVkKHJlc3VsdFsnY29tbWl0cyddWzBdLCBzdWJ2ZXJzaW9uQ29tbWl0
c1snY29tbWl0cyddWzBdKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRDb21taXRJc1NhbWVBc09u
ZVN1Ym1pdHRlZChyZXN1bHRbJ2NvbW1pdHMnXVsxXSwgc3VidmVyc2lvbkNvbW1pdHNbJ2NvbW1p
dHMnXVsxXSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICB9KTsKLQotfSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQt
bG9nLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0
LWxvZy10ZXN0cy5qcwppbmRleCA4NDI1YWIwNTdkZjBmM2RlMjM1MmJiZTJmNWU0Mjg3ZGJjNjA0
OWE2Li40NjIxMGRkNDhjNzU1OGZhNDA4NTU2MjYzNWE5ZTEzOTI2MWIzMzgwIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtbG9nLXRlc3RzLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1sb2ctdGVz
dHMuanMKQEAgLTkzLDI0ICs5MywxOCBAQCBkZXNjcmliZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24g
KCkgewogICAgIGRlc2NyaWJlKCdkaWZmJywgZnVuY3Rpb24gKCkgewogICAgICAgICBpdCgnc2hv
dWxkIHVzZSBsYWJlbCgpIGFzIHRoZSBsYWJlbCB0aGUgcHJldmlvdXMgY29tbWl0IGlzIG1pc3Np
bmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHdlYmtpdENv
bW1pdCgpLmRpZmYoKSwgewotICAgICAgICAgICAgICAgIGZyb206IG51bGwsCi0gICAgICAgICAg
ICAgICAgdG86ICcyMDA4MDUnLAogICAgICAgICAgICAgICAgIGxhYmVsOiAncjIwMDgwNScsCiAg
ICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjAw
ODA1JywKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdAogICAg
ICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoZ2l0V2ViS2l0Q29t
bWl0KCkuZGlmZigpLCB7Ci0gICAgICAgICAgICAgICAgZnJvbTogbnVsbCwKLSAgICAgICAgICAg
ICAgICB0bzogJzZmOGIwZGJiZGE5NWE0NDA1MDNiODhkYjFkZDAzZGFkM2E3YjA3ZmInLAogICAg
ICAgICAgICAgICAgIGxhYmVsOiAnNmY4YjBkYmInLAogICAgICAgICAgICAgICAgIHVybDogJ2h0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzZmOGIwZGJiZGE5NWE0NDA1MDNiODhkYjFk
ZDAzZGFkM2E3YjA3ZmInLAogICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMu
d2Via2l0LAogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
b3N4Q29tbWl0KCkuZGlmZigpLCB7Ci0gICAgICAgICAgICAgICAgZnJvbTogbnVsbCwKLSAgICAg
ICAgICAgICAgICB0bzogJzEwLjExLjQgMTVFNjUnLAogICAgICAgICAgICAgICAgIGxhYmVsOiAn
MTAuMTEuNCAxNUU2NScsCiAgICAgICAgICAgICAgICAgdXJsOiAnJywKICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLm9zeCwKQEAgLTExOSw5ICsxMTMsNyBAQCBkZXNjcmli
ZSgnQ29tbWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgdXNlIGlu
Y3JlbWVudCB0aGUgb2xkIFNWTiByZXZpc2lvbiBieSAxJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh3ZWJraXRDb21taXQoKS5kaWZmKG9sZFdlYktpdENvbW1p
dCgpKSwgewotICAgICAgICAgICAgICAgIGZyb206ICcyMDA1NzUnLAotICAgICAgICAgICAgICAg
IHRvOiAnMjAwODA1JywKLSAgICAgICAgICAgICAgICBsYWJlbDogJ3IyMDA1NzUtcjIwMDgwNScs
CisgICAgICAgICAgICAgICAgbGFiZWw6ICdyMjAwNTc0LXIyMDA4MDUnLAogICAgICAgICAgICAg
ICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy53ZWJr
aXQKICAgICAgICAgICAgIH0pOwpAQCAtMTI5LDggKzEyMSw2IEBAIGRlc2NyaWJlKCdDb21taXRM
b2cnLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgaXQoJ3Nob3VsZCB0cnVuY2F0ZSBhIEdpdCBo
YXNoIGF0IDh0aCBjaGFyYWN0ZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGdpdFdlYktpdENvbW1pdCgpLmRpZmYob2xkR2l0V2ViS2l0Q29tbWl0KCkpLCB7
Ci0gICAgICAgICAgICAgICAgZnJvbTogJ2ZmZGExNGU2ZGIwNzQ2ZDEwZDBmMDUwOTA3ZTRhNzMy
NTg1MWU1MDInLAotICAgICAgICAgICAgICAgIHRvOiAnNmY4YjBkYmJkYTk1YTQ0MDUwM2I4OGRi
MWRkMDNkYWQzYTdiMDdmYicsCiAgICAgICAgICAgICAgICAgbGFiZWw6ICdmZmRhMTRlNi4uNmY4
YjBkYmInLAogICAgICAgICAgICAgICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeTogTW9ja01vZGVscy53ZWJraXQKQEAgLTEzOSw4ICsxMjksNiBAQCBkZXNjcmliZSgnQ29t
bWl0TG9nJywgZnVuY3Rpb24gKCkgewogCiAgICAgICAgIGl0KCdzaG91bGQgc3Vycm91bmQgIi0i
IHdpdGggc3BhY2VzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChvc3hDb21taXQoKS5kaWZmKG9sZE9TWENvbW1pdCgpKSwgewotICAgICAgICAgICAgICAgIGZy
b206ICcxMC4xMS4zIDE1RDIxJywKLSAgICAgICAgICAgICAgICB0bzogJzEwLjExLjQgMTVFNjUn
LAogICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAuMTEuMyAxNUQyMSAtIDEwLjExLjQgMTVFNjUn
LAogICAgICAgICAgICAgICAgIHVybDogJycsCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTog
TW9ja01vZGVscy5vc3gK
</data>
<flag name="commit-queue"
          id="326459"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>