<?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>169069</bug_id>
          
          <creation_ts>2017-03-01 21:05:19 -0800</creation_ts>
          <short_desc>Make baseline data points selectable</short_desc>
          <delta_ts>2017-03-02 13:22:01 -0800</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>InRadar</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>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>krollin</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1282614</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-01 21:05:19 -0800</bug_when>
    <thetext>Make baseline data points on the perf dashboard selectable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282651</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-01 23:50:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/29209427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282661</commentid>
    <comment_count>2</comment_count>
      <attachid>303179</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-02 01:23:46 -0800</bug_when>
    <thetext>Created attachment 303179
Adds the feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282675</commentid>
    <comment_count>3</comment_count>
      <attachid>303179</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-02 03:00:40 -0800</bug_when>
    <thetext>Comment on attachment 303179
Adds the feature

View in context: https://bugs.webkit.org/attachment.cgi?id=303179&amp;action=review

&gt; Websites/perf.webkit.org/ChangeLog:16
&gt; +        to know whenever these values changed. Because of this entangled, ChartStatusView had to be aware of

&quot;Because of this entanglement&quot;

&gt; Websites/perf.webkit.org/ChangeLog:19
&gt; +        This patch dramatically simplifies the siuation by adding referencePoints() on TimeSeriesChart and

&quot;situation&quot;

&gt; Websites/perf.webkit.org/ChangeLog:29
&gt; +        memoizes the return value of a function when called with the same arguments. Delaying the computation of

&quot;memoize&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282856</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-02 13:22:01 -0800</bug_when>
    <thetext>Committed r213300: &lt;http://trac.webkit.org/changeset/213300&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303179</attachid>
            <date>2017-03-02 01:23:46 -0800</date>
            <delta_ts>2017-03-02 03:00:40 -0800</delta_ts>
            <desc>Adds the feature</desc>
            <filename>bug-169069-20170302012351.patch</filename>
            <type>text/plain</type>
            <size>105744</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMjcyKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1NCBAQAorMjAxNy0wMy0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBNYWtlIGJhc2VsaW5lIGRhdGEgcG9pbnRzIHNlbGVjdGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTA2OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjkyMDk0Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIHNlbGVjdCBkYXRhIHBvaW50
cyBvdGhlciB0aGFuICJjdXJyZW50IiBjb25maWd1cmF0aW9uIHR5cGUuCisKKyAgICAgICAgVGhp
cyBwYXRjaCByZWZhY3RvcnMgdGhlIHdheSB0aGUgImNoYXJ0IHN0YXR1cyIgaXMgY29tcHV0ZWQu
IEJlZm9yZSB0aGlzIHBhdGNoLCBDaGFydFN0YXR1c1ZpZXcgd2FzCisgICAgICAgIHJlc3BvbnNp
YmxlIGZvciBkZXRlcm1pbmluZyB0d28gZGF0YSBwb2ludHMgZm9yIHdoaWNoIHRvIGNvbXB1dGUg
dGhlIHN0YXR1cywgYW5kIGNvbXB1dGluZyB0aGUgc3RhdHVzCisgICAgICAgIGJldHdlZW4gdHdv
IGRhdGEgcG9pbnRzLiBDaGFydFBhbmVTdGF0dXNWaWV3IHdoaWNoIGluaGVyaXRzIGZyb20gQ2hh
cnRTdGF0dXNWaWV3IGFuZCB1c2VkIGluIHRoZSBjaGFydHMKKyAgICAgICAgcGFnZSByZWxpZWQg
dXBvbiBDaGFydFN0YXR1c1ZpZXcgdG8gY29tcHV0ZSB0aGVzZSB2YWx1ZXMsIGFuZCBjb21wdXRl
ZCB0aGUgbGlzdCBvZiByZXZpc2lvbiByYW5nZXMgZm9yCisgICAgICAgIGVhY2ggcmVsZXZhbnQg
cmVwb3NpdG9yeSBiZXR3ZWVuIHRoZSBkYXRhIHBvaW50cy4gQ2hhcnRQYW5lIHRoZW4gaGFkIGNh
bGxiYWNrcyBvbiBDaGFydFBhbmVTdGF0dXNWaWV3CisgICAgICAgIHRvIGtub3cgd2hlbmV2ZXIg
dGhlc2UgdmFsdWVzIGNoYW5nZWQuIEJlY2F1c2Ugb2YgdGhpcyBlbnRhbmdsZWQsIENoYXJ0U3Rh
dHVzVmlldyBoYWQgdG8gYmUgYXdhcmUgb2YKKyAgICAgICAgSW50ZXJhY3RpdmVUaW1lU2VyaWVz
Q2hhcnQgZXZlbiB0aG91Z2ggb25seSBDaGFydFBhbmVTdGF0dXNWaWV3IGNvdWxkIGJlIHVzZWQg
d2l0aCBpdC4KKworICAgICAgICBUaGlzIHBhdGNoIGRyYW1hdGljYWxseSBzaW1wbGlmaWVzIHRo
ZSBzaXVhdGlvbiBieSBhZGRpbmcgcmVmZXJlbmNlUG9pbnRzKCkgb24gVGltZVNlcmllc0NoYXJ0
IGFuZAorICAgICAgICBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCB3aGljaCByZXR1cm5zIHRo
ZSBjdXJyZW50IHBvaW50LCB0aGUgcHJldmlvdXMgcG9pbnQgaWYgdGhlcmUgaXMgYW55LCBhbmQK
KyAgICAgICAgdGhlaXIgdGltZSBzZXJpZXMgdmlldy4gSXQgYWxzbyBleHRyYWN0cyBDaGFydFN0
YXR1c0V2YWx1YXRvciB3aGljaCBjb21wdXRlcyB0aGUgY3VycmVudCBzdGF0dXMgdmFsdWVzCisg
ICAgICAgIGFuZCBDaGFydFJldmlzaW9uUmFuZ2Ugd2hpY2ggY29tcHV0ZXMgYSBsaXN0IG9mIHJl
dmlzaW9uIGRpZmZlcmVuY2VzIGJvdGggYmFzZWQgb24gdGhlIHJlZmVyZW5jZVBvaW50cy4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIENoYXJ0UGFuZVN0YXR1c1ZpZXcgbm8gbG9uZ2VyIGluaGVyaXRz
IGZyb20gQ2hhcnRTdGF0dXNWaWV3LCBhbmQgQ2hhcnRTdGF0dXNWaWV3IGhhcyBiZWVuCisgICAg
ICAgIHJlbmFtZWQgdG8gRGFzaGJvYXJkQ2hhcnRTdGF0dXNWaWV3IHRvIHJlZmxlY3QgaXRzIHB1
cnBvc2UuIEZ1cnRoZXJtb3JlLCBDaGFydFBhbmUgd2hpY2ggdXNlZCB0byByZWx5IG9uCisgICAg
ICAgIENoYXJ0UGFuZVN0YXR1c1ZpZXcncyByZXZpc2lvbkNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUg
Y29tbWl0IGxvZyB2aWV3ZXIgc2ltcGx5IHVzZXMgYW5vdGhlciBpbnN0YW5jZSBvZgorICAgICAg
ICBDaGFydFJldmlzaW9uUmFuZ2UsIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciB0aGUgY2FsbGJh
Y2suCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoZXNlIGNsYXNzZXMgZWFzaWx5LCB0aGlzIHBh
dGNoIGFsc28gaW50cm9kdWNlcyBhIG5ldyBjbGFzcywgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24g
dG8KKyAgICAgICAgbWVtb2l6ZXMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIHdoZW4g
Y2FsbGVkIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzLiBEZWxheWluZyB0aGUgY29tcHV0YXRpb24g
b2YKKyAgICAgICAgYSB2YWx1ZSBhbmQgYXZvaWRpbmcgdGhlIHdvcmsgd2hlbiB0aGUgdmFsdWVz
IGFyZSB0aGUgc2FtZSBpcyBhIHZlcnkgY29tbW9uIHBhdHRlcm4gaW4gdGhlIHBlcmYgZGFzaGJv
YXJkCisgICAgICAgIHNvIEkgZXhwZWN0IHRoaXMgY2xhc3Mgd291bGQgYmUgdXNlZCBpbiBhIGxv
dCBtb3JlIHBsYWNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogYnJvd3Nlci10ZXN0cy9j
aGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qczogQWRkZWQuIFRlc3RzIGZvciBDaGFydFJldmlz
aW9uUmFuZ2UuCisgICAgICAgICogYnJvd3Nlci10ZXN0cy9jaGFydC1zdGF0dXMtZXZhbHVhdG9y
LXRlc3RzLmpzOiBBZGRlZC4gVGVzdHMgZm9yIENoYXJ0U3RhdHVzRXZhbHVhdG9yLgorCisgICAg
ICAgICogYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sOgorICAgICAgICAoQnJvd3NpbmdDb250ZXh0
KToKKyAgICAgICAgKEJyb3dzaW5nQ29udGV4dC5pbXBvcnRTY3JpcHRzKTogRml4ZWQgdGhlIGJ1
ZyB0aGF0IGNhbGxpbmcgaW1wb3J0U2NyaXB0cyB0d2ljZSByZXN1bHRzIGluIE1vY2tSZW1vdGVB
UEkKKyAgICAgICAgYmVpbmcgbG9hZGVkIHR3aWNlLgorICAgICAgICAoQ2hhcnRUZXN0LmltcG9y
dENoYXJ0U2NyaXB0cyk6IEltcG9ydCBtb3JlIG1vZGVsIG9iamVjdHMuCisgICAgICAgIChDaGFy
dFRlc3Quc2FtcGxlQ2x1c3Rlcik6IE1hZGUgdGhpcyBhIGdldHRlci4KKyAgICAgICAgKENoYXJ0
VGVzdC5tYWtlTW9kZWxPYmplY3RzRm9yU2FtcGxlQ2x1c3Rlcik6CisgICAgICAgIChDaGFydFRl
c3QubWFrZVNhbXBsZUNsdXN0ZXIpOiBBZGRlZC4gQ3V0b21pemVzIHRoZSB2YWx1cyBvZiBiYXNl
bGluZSAvIHRhcmdldCBiYXNlZCBvbiBvcHRpb25zLgorICAgICAgICAoQ2hhcnRUZXN0LnJlc3Bv
bmRXaXRoU2FtcGxlQ2x1c3Rlcik6IE5vdyB0YWtlcyBhbiBvcHRpb25zIGFyZ3VtZW50IGZvciBt
YWtlU2FtcGxlQ2x1c3Rlci4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0
LXBhbmUtYmFzZS5qczoKKyAgICAgICAgKENoYXJ0UGFuZUJhc2UpOiBBZGRlZCBfb3BlblJlcG9z
aXRvcnkgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudGx5IG9wZW4gcmVwb3NpdG9yeSBpbnN0
ZWFkIG9mIHJlbHlpbmcKKyAgICAgICAgb24gX21haW5DaGFydFN0YXR1cyBvciBfY29tbWl0TG9n
Vmlld2VyIHRvIGtlZXAgdHJhY2sgb2YgaXQuCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3Rv
dHlwZS5jb25maWd1cmUpOiAgVGhlIGNhbGxiYWNrIGZvciB3aGVuIHRoZSB1c2VyIGNsaWNrZWQg
b24gYSByZXBvc2l0b3J5IG5hbWUgaW4KKyAgICAgICAgQ2hhcnRQYW5lU3RhdHVzVmlldyBoYXMg
YmVlbiByZXBsYWNlZCBieSAib3BlblJlcG9zaXRvcnkiIGFjdGlvbi4KKyAgICAgICAgKENoYXJ0
UGFuZUJhc2UucHJvdG90eXBlLnNldE9wZW5SZXBvc2l0b3J5KTogTW92ZWQgZnJvbSBDaGFydFBh
bmUuCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5fbWFpblNlbGVjdGlvbkRpZENo
YW5nZSk6CisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5faW5kaWNhdG9yRGlkQ2hh
bmdlKToKKyAgICAgICAgKENoYXJ0UGFuZUJhc2UucHJvdG90eXBlLl9kaWRGZXRjaERhdGEpOgor
ICAgICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90b3R5cGUuX3VwZGF0ZUNvbW1pdExvZ1ZpZXdlcik6
IFJlbmFtZWQgZnJvbSBfdXBkYXRlU3RhdHVzLgorICAgICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90
b3R5cGUub3Blbk5ld1JlcG9zaXRvcnkpOiBSZW5hbWVkIGZyb20gX3JlcXVlc3RPcGVuaW5nQ29t
bWl0Vmlld2VyLiBGaXhlZCBhIGJ1ZyB0aGF0CisgICAgICAgIGNsaWNraW5nIG9uIHRoZSByZXBv
c2l0b3J5IG5hbWUgaW5zaWRlIENoYXJ0UGFuZVN0YXR1c1ZpZXcgd291bGQgbm90IGZvY3VzIHRo
ZSBwYW5lLCB3aGljaCByZXN1bHRlZCBpbgorICAgICAgICBhcnJvdyBrZXlzIHRvIGJlIGlnbm9y
ZWQgaW5zdGVhZCBvZiBtb3ZpbmcgdGhlIG1haW4gY2hhcnQncyBpbmRpY2F0b3Igb3IgdGhlIGN1
cnJlbnRseSBvcGVuIHJlcG9zaXRvcnkuCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlw
ZS5fa2V5dXApOgorICAgICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90b3R5cGUuX21vdmVPcGVuUmVw
b3NpdG9yeSk6IE1vdmVkIGZyb20gQ2hhcnRQYW5lU3RhdHVzVmlldydzCisgICAgICAgIG1vdmVS
ZXBvc2l0b3J5V2l0aE5vdGlmaWNhdGlvbi4gVXNlZCB3aGVuIGNoYW5naW5nIHRoZSBvcGVuIHJl
cG9zaXRvcnkgYnkgdXAvZG93biBhcnJvdyBrZXlzLgorCisgICAgICAgICogcHVibGljL3YzL2Nv
bXBvbmVudHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UuanM6IEFkZGVkLiBFeHRyYWN0ZWQgZnJvbSBD
aGFydFBhbmVTdGF0dXNWaWV3LgorICAgICAgICAoQ2hhcnRSZXZpc2lvblJhbmdlKTogQWRkZWQu
CisgICAgICAgIChDaGFydFJldmlzaW9uUmFuZ2UucHJvdG90eXBlLnJldmlzaW9uTGlzdCk6IEFk
ZGVkLgorICAgICAgICAoQ2hhcnRSZXZpc2lvblJhbmdlLnByb3RvdHlwZS5yYW5nZUZvclJlcG9z
aXRvcnkpOiBBZGRlZC4KKyAgICAgICAgKENoYXJ0UmV2aXNpb25SYW5nZS5fcmV2aXNpb25Gb3JQ
b2ludCk6IEFkZGVkLiBFeHRyYWN0ZWQgZnJvbSBDaGFydFBhbmVTdGF0dXNWaWV3J3MKKyAgICAg
ICAgX3VwZGF0ZVJldmlzaW9uTGlzdEZvck5ld0N1cnJlbnRSZXBvc2l0b3J5LgorICAgICAgICAo
Q2hhcnRSZXZpc2lvblJhbmdlLl9jb21wdXRlUmV2aXNpb25MaXN0KTogRGl0dG8gZnJvbSBjb21w
dXRlQ2hhcnRTdGF0dXNMYWJlbHMuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9j
aGFydC1zdGF0dXMtZXZhbHVhdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKENoYXJ0U3RhdHVzRXZh
bHVhdG9yKTogQWRkZWQuCisgICAgICAgIChDaGFydFN0YXR1c0V2YWx1YXRvci5wcm90b3R5cGUu
c3RhdHVzKTogQWRkZWQuCisgICAgICAgIChDaGFydFN0YXR1c0V2YWx1YXRvci5jb21wdXRlQ2hh
cnRTdGF0dXMpOiBBZGRlZC4gRXh0cmFjdGVkIGZyb20gQ2hhcnRTdGF0dXNWaWV3J3MgdXBkYXRl
U3RhdHVzSWZOZWVkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1z
dGF0dXMtdmlldy5qczogUmVtb3ZlZC4KKyAgICAgICAgKENoYXJ0U3RhdHVzVmlldyk6IERlbGV0
ZWQuIFNwbGl0IGludG8gQ2hhcnRTdGF0dXNFdmFsdWF0b3IgYW5kIERhc2hib2FyZENoYXJ0U3Rh
dHVzVmlldy4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXN0eWxlcy5q
czoKKyAgICAgICAgKENoYXJ0U3R5bGVzLmJhc2VsaW5lU3R5bGUpOiBNYWtlIGJhc2VsaW5lIGRh
dGEgcG9pbnRzIGludGVyYWN0aXZlLiBUaGlzIHNpbmdsZSBsaW5lIGNoYW5nZSBpcyB3aGF0Cisg
ICAgICAgIGVuYWJsZXMgdGhlIHVzZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZGF0YSBwb2ludHMu
IFRoZSByZXN0IG9mIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBtb3N0bHkgZGVhbHMgd2l0aAorICAg
ICAgICB0aGUgc3RhdHVzIHRleHQgc3VjaCBhcyAiNSUgd29yc2UgdGhhbiBiYXNlbGluZSIgYW5k
IHRoZSBsaXN0IG9mIHJldmlzaW9ucyBzaG93biBpbiB0aGUgY29tbWl0IGxvZyB2aWV3ZXIKKyAg
ICAgICAgd2hpY2ggd291bGQgaGF2ZSBzaG93biB0aGUgd3JvbmcgcmFuZ2Ugd2l0aG91dCB0aGVz
ZSBjaGFuZ2VzLgorCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvZGFzaGJvYXJkLWNo
YXJ0LXN0YXR1cy12aWV3LmpzOiBBZGRlZC4gRXh0cmFjdGVkIGZyb20gQ2hhcnRTdGF0dXNWaWV3
LgorICAgICAgICAoRGFzaGJvYXJkQ2hhcnRTdGF0dXNWaWV3KTogQWRkZWQuCisgICAgICAgIChE
YXNoYm9hcmRDaGFydFN0YXR1c1ZpZXcucHJvdG90eXBlLnJlbmRlcik6IEFkZGVkLgorICAgICAg
ICAoRGFzaGJvYXJkQ2hhcnRTdGF0dXNWaWV3Lmh0bWxUZW1wbGF0ZSk6IEFkZGVkLgorICAgICAg
ICAoRGFzaGJvYXJkQ2hhcnRTdGF0dXNWaWV3LmNzc1RlbXBsYXRlKTogQWRkZWQuCisKKyAgICAg
ICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC5q
czoKKyAgICAgICAgKEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5yZWZlcmVu
Y2VQb2ludHMpOiBBZGRlZC4gUmV0dXJuIHRoZSBmaXJzdCBwb2ludCBhbmQgdGhlIGxhc3QgcG9p
bnQKKyAgICAgICAgYXMgdGhlIHJlZmVyZW5jZSBwb2ludHMgd2hlbiB0aGVyZSBpcyBhIHNlbGVj
dGlvbi4gT25seSByZXBvcnQgdGhlIHByZXZpb3VzIHBvaW50IGlmIHRoZXkgYXJlIGRpc3RpbmN0
IGFzCisgICAgICAgIHNob3dpbmcgYSByYW5nZSBvZiByZXZpc2lvbnMgZnJvbSBhIGRhdGEgcG9p
bnQgdG8gaXRzZWxmIG1ha2VzIG5vIHNlbnNlLiBXaGVuIHRoZXJlIGlzIGEgaW5kaWNhdG9yIHNp
bXBseQorICAgICAgICByZXR1cm4gaXQgYW5kIGl0cyBwcmV2aW91cyBwb2ludCBhcyByZWZlcmVu
Y2UgcG9pbnRzLiBPdGhlcndpc2UgcmV0dXJuIG51bGwgdW5saWtlIFRpbWVTZXJpZXNDaGFydCdz
CisgICAgICAgIHJlZmVyZW5jZVBvaW50cyB3aGljaCBhbHdheXMgcmV0dXJucyB0aGUgbGF0ZXN0
IHBvaW50IGFzIHRoZSByZWZlcmVuY2UgcG9pbnQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvY29t
cG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5qczoKKyAgICAgICAgKFRpbWVTZXJpZXNDaGFydC5w
cm90b3R5cGUucmVmZXJlbmNlUG9pbnRzKTogQWRkZWQuIFJldHVybiB0aGUgbGF0ZXN0IHBvaW50
IGFzIHRoZSByZWZlcmVuY2UgcG9pbnQuIEl0CisgICAgICAgIG5ldmVyIHJldHVybnMgdGhlIHBy
ZXZpb3VzIHBvaW50IGV2ZW4gaWYgdGhlcmUgd2VyZSBtb3JlIGRhdGEgcG9pbnRzIGFzIHRoZXJl
IGlzIG5vIHdheSBmb3IgdGhlIHVzZXIgdG8KKyAgICAgICAgc3BlY2lmeSB3aGljaCBkYXRhIHBv
aW50cyB0byBjb21wYXJlLgorCisgICAgICAgICogcHVibGljL3YzL2luZGV4Lmh0bWw6IEluY2x1
ZGUgbmV3bHkgYWRkZWQgZmlsZXMuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbGF6aWx5LWV2YWx1
YXRlZC1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChMYXppbHlFdmFsdWF0ZWRGdW5jdGlv
bik6IEFkZGVkLgorICAgICAgICAoTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24ucHJvdG90eXBlLmV2
YWx1YXRlKTogQWRkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cu
anM6CisgICAgICAgIChDb21taXRMb2cucHJvdG90eXBlLmRpZmYpOiBGaXhlZCBhIGJ1ZyB0aGF0
IGNvbXB1dGluZyB0aGUgZGlmZiBvZiB0d28gU3VidmVyc2lvbi1saWtlIHJldmlzaW9ucyByZXN1
bHRzCisgICAgICAgIGluICJmcm9tIiBmaWVsZCB0byBiZSB1bmV4cGVjdGVkbHkgYW4gaW50ZWdl
ciBpbnN0ZWFkIG9mIGEgc3RyaW5nLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9tZXRy
aWMuanM6CisgICAgICAgIChNZXRyaWMpOiBNb3ZlZCB0aGUgY29kZSB0byBjb21wdXRlIHRoZSB1
bml0IGZyb20gdGhlIG1ldHJpYyBuYW1lIGZyb20gdjIncyBSdW5zRGF0YSBjbGFzcy4gVGhpcyBt
YWtlcworICAgICAgICB3cml0aW5nIHRlc3RzIGVhc2llciBzaW5jZSBpdCBlbGltaW5hdGVzIHRo
ZSBuZWVkIHRvIGxvYWQgdjIncyBkYXRhLmpzLgorICAgICAgICAoTWV0cmljLnByb3RvdHlwZS51
bml0KToKKyAgICAgICAgKE1ldHJpYy5wcm90b3R5cGUuaXNTbWFsbGVyQmV0dGVyKTogRGl0dG8g
Zm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIHVuaXQgaXMgc21hbGxlci1pcy1iZXR0ZXIuCisK
KyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAgICAg
ICAoQW5hbHlzaXNUYXNrQ2hhcnRQYW5lLnByb3RvdHlwZS5fdXBkYXRlU3RhdHVzKTogRGVsZXRl
ZCB0aGUgdW51c2VkIGNvZGUuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFu
ZS1zdGF0dXMtdmlldy5qczoKKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcpOiBObyBsb25n
ZXIgaW5oZXJpdHMgZnJvbSBDaGFydFN0YXR1c1ZpZXcuIFVzZXMgQ2hhcnRTdGF0dXNFdmFsdWF0
b3IgYW5kCisgICAgICAgIENoYXJ0UmV2aXNpb25SYW5nZSB0byB0byBjb21wdXRlIHRoZSBjaGFy
dCBzdGF0dXMgYW5kIHRoZSBsaXN0IG9mIHJldmlzaW9uIGNoYW5nZXMuCisgICAgICAgIChDaGFy
dFBhbmVTdGF0dXNWaWV3LnByb3RvdHlwZS5wb2ludHNSYW5nZUZvckFuYWx5c2lzKTogRGVsZXRl
ZC4KKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLnJlbmRlcik6IFNwbGl0
IGl0IGludG8gX3JlbmRlclN0YXR1cyBhbmQgX3JlbmRlckJ1aWxkUmV2aXNpb25UYWJsZSB1c2lu
ZworICAgICAgICBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbi4KKyAgICAgICAgKENoYXJ0UGFuZVN0
YXR1c1ZpZXcucHJvdG90eXBlLl9yZW5kZXJTdGF0dXMpOiBBZGRlZC4KKyAgICAgICAgKENoYXJ0
UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLl9yZW5kZXJCdWlsZFJldmlzaW9uVGFibGUpOiBBZGRl
ZC4KKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLnNldEN1cnJlbnRSZXBv
c2l0b3J5KTogX3VwZGF0ZVJldmlzaW9uTGlzdEZvck5ld0N1cnJlbnRSZXBvc2l0b3J5IGhhcyBi
ZWVuCisgICAgICAgIG1vdmVkIGludG8gQ2hhcnRSZXZpc2lvblJhbmdlLiBKdXN0IGVucXVldWUg
aXRzZWxmIHRvIHJlLXJlbmRlci4KKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90
eXBlLl9zZXRSZXZpc2lvblJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1
c1ZpZXcucHJvdG90eXBlLm1vdmVSZXBvc2l0b3J5V2l0aE5vdGlmaWNhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChDaGFydFBhbmVTdGF0dXNWaWV3LnByb3RvdHlwZS51cGRhdGVSZXZpc2lvbkxp
c3QpOiBEZWxldGVkLgorICAgICAgICAoQ2hhcnRQYW5lU3RhdHVzVmlldy5wcm90b3R5cGUuX3Vw
ZGF0ZVJldmlzaW9uTGlzdEZvck5ld0N1cnJlbnRSZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLmNvbXB1dGVDaGFydFN0YXR1c0xhYmVs
cyk6IERlbGV0ZWQuCisgICAgICAgIChDaGFydFBhbmVTdGF0dXNWaWV3Lmh0bWxUZW1wbGF0ZSk6
CisgICAgICAgIChDaGFydFBhbmVTdGF0dXNWaWV3LmNzc1RlbXBsYXRlKToKKworICAgICAgICAq
IHB1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzOgorICAgICAgICAoQ2hhcnRQYW5lLnByb3Rv
dHlwZS5vcGVuTmV3UmVwb3NpdG9yeSk6IE92ZXJyaWRlcyB0aGUgb25lIGluIENoYXJ0UGFuZUJh
c2UsIHdoaWNoIGhhcyBiZWVuIHJlbmFtZWQgZnJvbQorICAgICAgICBfcmVxdWVzdE9wZW5pbmdD
b21taXRWaWV3ZXIuCisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBlLl9hbmFseXplUmFuZ2Up
OgorICAgICAgICAoQ2hhcnRQYW5lLnByb3RvdHlwZS5fcmVuZGVyQWN0aW9uVG9vbGJhcik6IFVz
ZSB0aGUgbWFpbiBjaGFydCdzIHNlbGVjdGlvbiBkaXJlY3RseSB0byBkZXRlcm1pbmUgd2hldGhl
cgorICAgICAgICBhbiBhbmFseXNpcyB0YXNrIGNhbiBiZSBjcmVhdGVkIGZvciB0aGUgY3VycmVu
dHkgc2VsZWN0ZWQgcmFuZ2UuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvZGFzaGJvYXJk
LXBhZ2UuanM6CisgICAgICAgIChEYXNoYm9hcmRQYWdlLnByb3RvdHlwZS5fY3JlYXRlQ2hhcnRG
b3JDZWxsKToKKworICAgICAgICAqIHVuaXQtdGVzdHMvbGF6aWx5LWV2YWx1YXRlZC1mdW5jdGlv
bi10ZXN0cy5qczogQWRkZWQuIFRlc3RzIGZvciBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbi4KKwog
MjAxNy0wMy0wMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBC
dWlsZCBmaXggYWZ0ZXIgcjIxMjg1My4gTWFrZSBjcmVhdGluZyBhbiBhbmFseXNpcyB0YXNrIHdv
cmsgYWdhaW4uCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9j
aGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcwko
bm9uZXhpc3RlbnQpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9j
aGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
NSBAQAorCitkZXNjcmliZSgnQ2hhcnRSZXZpc2lvblJhbmdlJywgKCkgPT4geworCisgICAgZnVu
Y3Rpb24gaW1wb3J0UmV2aXNpb25MaXN0KGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4g
Q2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgIENoYXJ0VGVzdC5tYWtlTW9kZWxPYmplY3RzRm9yU2FtcGxlQ2x1c3Rlcihjb250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoWydsYXppbHktZXZh
bHVhdGVkLWZ1bmN0aW9uLmpzJywgJ2NvbXBvbmVudHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UuanMn
XSwgJ0NoYXJ0UmV2aXNpb25SYW5nZScpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBkZXNj
cmliZSgncmV2aXNpb25MaXN0IG9uIGEgbm9uLWludGVyYWN0aXZlIGNoYXJ0JywgKCkgPT4gewor
ICAgICAgICBpdCgnc2hvdWxkIHJlcG9ydCB0aGUgbGlzdCBvZiByZXZpc2lvbiBmb3IgdGhlIGxh
dGVzdCBwb2ludCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJv
d3NpbmdDb250ZXh0KCk7CisgICAgICAgICAgICBsZXQgZXZhbHVhdG9yOworICAgICAgICAgICAg
cmV0dXJuIGltcG9ydFJldmlzaW9uTGlzdChjb250ZXh0KS50aGVuKChDaGFydFJldmlzaW9uUmFu
Z2UpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVD
aGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQpOworICAgICAgICAgICAgICAgIGNoYXJ0LnNl
dERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1w
bGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1l
bnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3lt
Ym9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXF1
ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25k
V2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICAgICAgZXZhbHVh
dG9yID0gbmV3IENoYXJ0UmV2aXNpb25SYW5nZShjaGFydCk7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KGV2YWx1YXRvci5yZXZpc2lvbkxpc3QoKSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uTGlzdCA9
IGV2YWx1YXRvci5yZXZpc2lvbkxpc3QoKTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNp
b25MaXN0KS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9u
TGlzdC5sZW5ndGgpLnRvLmJlKDIpOworCisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9u
TGlzdFswXS5yZXBvc2l0b3J5LmxhYmVsKCkpLnRvLmJlKCdTb21lQXBwJyk7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5sYWJlbCkudG8uYmUoJ3I0MDA2Jyk7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5mcm9tKS50by5iZShudWxsKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnRvKS50by5iZSgnNDAwNicpOwor
CisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0b3J5LmxhYmVs
KCkpLnRvLmJlKCdtYWNPUycpOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3Rb
MV0ubGFiZWwpLnRvLmJlKCcxNUM1MCcpOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMV0uZnJvbSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlz
aW9uTGlzdFsxXS50bykudG8uYmUoJzE1QzUwJyk7CisgICAgICAgICAgICB9KQorICAgICAgICB9
KTsKKyAgICB9KTsKKworCisgICAgZGVzY3JpYmUoJ3JldmlzaW9uTGlzdCBvbiBhbiBpbnRlcmFj
dGl2ZSBjaGFydCcsICgpID0+IHsKKworICAgICAgICBpdCgnc2hvdWxkIG5vdCByZXBvcnQgdGhl
IGxpc3Qgb2YgcmV2aXNpb24gZm9yIHRoZSBsYXRlc3QgcG9pbnQgd2hlbiB0aGVyZSBpcyBubyBz
ZWxlY3Rpb24gb3IgaW5kaWNhdG9yJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29udGV4
dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIGxldCBldmFsdWF0b3I7Cisg
ICAgICAgICAgICByZXR1cm4gaW1wb3J0UmV2aXNpb25MaXN0KGNvbnRleHQpLnRoZW4oKENoYXJ0
UmV2aXNpb25SYW5nZSkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRU
ZXN0LmNyZWF0ZUludGVyYWN0aXZlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKyAg
ICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3Rh
cnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgICAg
ICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworCisgICAgICAgICAgICAgICAgY29uc3Qg
cmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgICAg
ICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBdKTsKKwor
ICAgICAgICAgICAgICAgIGV2YWx1YXRvciA9IG5ldyBDaGFydFJldmlzaW9uUmFuZ2UoY2hhcnQp
OworICAgICAgICAgICAgICAgIGV4cGVjdChldmFsdWF0b3IucmV2aXNpb25MaXN0KCkpLnRvLmJl
KG51bGwpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5k
ZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBleHBlY3QoZXZhbHVhdG9yLnJldmlzaW9uTGlzdCgpKS50by5iZShudWxsKTsKKyAgICAgICAg
ICAgIH0pCisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmVwb3J0IHRoZSBsaXN0
IG9mIHJldmlzaW9uIGZvciB0aGUgbG9ja2VkIGluZGljYXRvciB3aXRoIGRpZmZlcmVuY2VzIHRv
IHRoZSBwcmV2aW91cyBwb2ludCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQg
PSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgICAgICBsZXQgY2hhcnQ7CisgICAgICAg
ICAgICBsZXQgZXZhbHVhdG9yOworICAgICAgICAgICAgcmV0dXJuIGltcG9ydFJldmlzaW9uTGlz
dChjb250ZXh0KS50aGVuKChDaGFydFJldmlzaW9uUmFuZ2UpID0+IHsKKyAgICAgICAgICAgICAg
ICBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0
ZXIoY29udGV4dCk7CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5z
YW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7
CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKworICAgICAg
ICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEku
cmVxdWVzdHM7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUo
MSk7CisgICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3Rlcihy
ZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgICAgICBldmFsdWF0b3IgPSBuZXcgQ2hhcnRSZXZp
c2lvblJhbmdlKGNoYXJ0KTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnJldmlz
aW9uTGlzdCgpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9y
Q29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgZXhwZWN0KGV2YWx1YXRvci5yZXZpc2lvbkxpc3QoKSkudG8uYmUo
bnVsbCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBs
ZWRUaW1lU2VyaWVzRGF0YSgnY3VycmVudCcpOworICAgICAgICAgICAgICAgIGNoYXJ0LnNldElu
ZGljYXRvcihjdXJyZW50Vmlldy5sYXN0UG9pbnQoKS5pZCwgdHJ1ZSk7CisKKyAgICAgICAgICAg
ICAgICBsZXQgcmV2aXNpb25MaXN0ID0gZXZhbHVhdG9yLnJldmlzaW9uTGlzdCgpOworICAgICAg
ICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3QpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxlbmd0aCkudG8uYmUoMik7CisKKyAgICAgICAg
ICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUo
J1NvbWVBcHAnKTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVs
KS50by5iZSgncjQwMDUtcjQwMDYnKTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25M
aXN0WzBdLmZyb20pLnRvLmJlKCc0MDA1Jyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlz
aW9uTGlzdFswXS50bykudG8uYmUoJzQwMDYnKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChy
ZXZpc2lvbkxpc3RbMV0ucmVwb3NpdG9yeS5sYWJlbCgpKS50by5iZSgnbWFjT1MnKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFdLmxhYmVsKS50by5iZSgnMTVDNTAnKTsK
KyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFdLmZyb20pLnRvLmJlKG51bGwp
OworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1
MCcpOworCisgICAgICAgICAgICAgICAgY2hhcnQuc2V0SW5kaWNhdG9yKDEwMDQsIHRydWUpOyAv
LyBBY3Jvc3MgbWFjT1MgY2hhbmdlLgorCisgICAgICAgICAgICAgICAgcmV2aXNpb25MaXN0ID0g
ZXZhbHVhdG9yLnJldmlzaW9uTGlzdCgpOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3QubGVuZ3RoKS50by5iZSgyKTsKKworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lv
bkxpc3RbMF0ucmVwb3NpdG9yeS5sYWJlbCgpKS50by5iZSgnU29tZUFwcCcpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0ubGFiZWwpLnRvLmJlKCdyNDAwNC1yNDAwNCcp
OworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0uZnJvbSkudG8uYmUoJzQw
MDQnKTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnRvKS50by5iZSgn
NDAwNCcpOworCisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5yZXBvc2l0
b3J5LmxhYmVsKCkpLnRvLmJlKCdtYWNPUycpOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZp
c2lvbkxpc3RbMV0ubGFiZWwpLnRvLmJlKCcxNUI0MiAtIDE1QzUwJyk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHJldmlzaW9uTGlzdFsxXS5mcm9tKS50by5iZSgnMTVCNDInKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFdLnRvKS50by5iZSgnMTVDNTAnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJlcG9ydCB0aGUg
bGlzdCBvZiByZXZpc2lvbiBmb3IgdGhlIHNlbGVjdGVkIHJhbmdlJywgKCkgPT4geworICAgICAg
ICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAg
IGxldCBjaGFydDsKKyAgICAgICAgICAgIGxldCBldmFsdWF0b3I7CisgICAgICAgICAgICByZXR1
cm4gaW1wb3J0UmV2aXNpb25MaXN0KGNvbnRleHQpLnRoZW4oKENoYXJ0UmV2aXNpb25SYW5nZSkg
PT4geworICAgICAgICAgICAgICAgIGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUludGVyYWN0aXZl
Q2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBjaGFydC5z
ZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2Ft
cGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVt
ZW50U2V0cygpOworCisgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5
bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVx
dWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9u
ZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAgICAgIGV2YWx1
YXRvciA9IG5ldyBDaGFydFJldmlzaW9uUmFuZ2UoY2hhcnQpOworICAgICAgICAgICAgICAgIGV4
cGVjdChldmFsdWF0b3IucmV2aXNpb25MaXN0KCkpLnRvLmJlKG51bGwpOworCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAg
ICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnJl
dmlzaW9uTGlzdCgpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJl
bnRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CisgICAgICAg
ICAgICAgICAgY2hhcnQuc2V0U2VsZWN0aW9uKFtjdXJyZW50Vmlldy5maXJzdFBvaW50KCkudGlt
ZSArIDEsIGN1cnJlbnRWaWV3Lmxhc3RQb2ludCgpLnRpbWUgLSAxXSk7CisKKyAgICAgICAgICAg
ICAgICBsZXQgcmV2aXNpb25MaXN0ID0gZXZhbHVhdG9yLnJldmlzaW9uTGlzdCgpOworICAgICAg
ICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3QpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0Lmxlbmd0aCkudG8uYmUoMik7CisKKyAgICAgICAg
ICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUo
J1NvbWVBcHAnKTsKKyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzBdLmxhYmVs
KS50by5iZSgncjQwMDMtcjQwMDQnKTsgLy8gNDAwMiBhbmQgNDAwNSBhcmUgb3V0bGllcnMgYW5k
IHNraXBwZWQuCisgICAgICAgICAgICAgICAgZXhwZWN0KHJldmlzaW9uTGlzdFswXS5mcm9tKS50
by5iZSgnNDAwMycpOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMF0udG8p
LnRvLmJlKCc0MDA0Jyk7CisKKyAgICAgICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFd
LnJlcG9zaXRvcnkubGFiZWwoKSkudG8uYmUoJ21hY09TJyk7CisgICAgICAgICAgICAgICAgZXhw
ZWN0KHJldmlzaW9uTGlzdFsxXS5sYWJlbCkudG8uYmUoJzE1QjQyIC0gMTVDNTAnKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3QocmV2aXNpb25MaXN0WzFdLmZyb20pLnRvLmJlKCcxNUI0MicpOwor
ICAgICAgICAgICAgICAgIGV4cGVjdChyZXZpc2lvbkxpc3RbMV0udG8pLnRvLmJlKCcxNUM1MCcp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCit9KTsKSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2NoYXJ0LXN0YXR1cy1ldmFsdWF0
b3ItdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dz
ZXItdGVzdHMvY2hhcnQtc3RhdHVzLWV2YWx1YXRvci10ZXN0cy5qcwkobm9uZXhpc3RlbnQpCisr
KyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9jaGFydC1zdGF0dXMtZXZh
bHVhdG9yLXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDc3IEBACisKK2Rlc2Ny
aWJlKCdDaGFydFN0YXR1c0V2YWx1YXRvcicsICgpID0+IHsKKworICAgIGZ1bmN0aW9uIGltcG9y
dEV2YWx1YXRvcihjb250ZXh0KQorICAgIHsKKyAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFsKKyAg
ICAgICAgICAgICdsYXppbHktZXZhbHVhdGVkLWZ1bmN0aW9uLmpzJywKKyAgICAgICAgICAgICdj
b21wb25lbnRzL2NoYXJ0LXN0YXR1cy1ldmFsdWF0b3IuanMnXTsKKworICAgICAgICByZXR1cm4g
Q2hhcnRUZXN0LmltcG9ydENoYXJ0U2NyaXB0cyhjb250ZXh0KS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmltcG9ydFNjcmlwdHMoc2NyaXB0cywgJ1Rlc3QnLCAnTWV0
cmljJywgJ0NoYXJ0U3RhdHVzRXZhbHVhdG9yJyk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3ltYm9scy5DaGFydFN0YXR1c0V2YWx1YXRvcjsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFrZU1ldHJpYyhjb250ZXh0LCBu
YW1lKSB7CisgICAgICAgIGNvbnN0IFRlc3QgPSBjb250ZXh0LnN5bWJvbHMuVGVzdDsKKyAgICAg
ICAgY29uc3QgTWV0cmljID0gY29udGV4dC5zeW1ib2xzLk1ldHJpYzsKKworICAgICAgICBjb25z
dCB0ZXN0ID0gbmV3IFRlc3QoMTAsIHtuYW1lOiAnU29tZVRlc3QnfSk7CisgICAgICAgIGNvbnN0
IG1ldHJpYyA9IG5ldyBNZXRyaWMoMSwge25hbWU6IG5hbWUsIHRlc3Q6IHRlc3R9KTsKKworICAg
ICAgICByZXR1cm4gbWV0cmljOworICAgIH0KKworICAgIGRlc2NyaWJlKCdzdGF0dXMgb24gYSBu
b24taW50ZXJhY3RpdmUgY2hhcnQnLCAoKSA9PiB7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXBv
cnQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxhdGVzdCBkYXRhIHBvaW50JywgKCkgPT4gewor
ICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAg
ICAgICAgIGxldCBldmFsdWF0b3I7CisgICAgICAgICAgICByZXR1cm4gaW1wb3J0RXZhbHVhdG9y
KGNvbnRleHQpLnRoZW4oKENoYXJ0U3RhdHVzRXZhbHVhdG9yKSA9PiB7CisgICAgICAgICAgICAg
ICAgY29uc3QgY2hhcnQgPSBDaGFydFRlc3QuY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihj
b250ZXh0KTsKKyAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBs
ZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAg
ICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworCisgICAgICAgICAg
ICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0czsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsK
KyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVl
c3RzWzBdKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IG1ha2VNZXRyaWMoY29u
dGV4dCwgJ1RpbWUnKTsKKyAgICAgICAgICAgICAgICBldmFsdWF0b3IgPSBuZXcgQ2hhcnRTdGF0
dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGV2YWx1
YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gd2Fp
dEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0dXMoKTsK
KyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZShudWxsKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc3RhdHVzLmN1cnJlbnRWYWx1ZSkudG8uYmUoJzExNiBtcycpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChzdGF0dXMucmVsYXRpdmVEZWx0YSkudG8uYmUobnVsbCk7CisgICAgICAg
ICAgICB9KQorICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNvbXBhcmUgdGhlIGxh
dGVzdCBjdXJyZW50IGRhdGEgcG9pbnQgdG8gdGhlIGJhc2VsaW5lIHdoZW4gZm9yIGEgc21hbGxl
ci1pcy1iZXR0ZXIgdW5pdCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBu
ZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgICAgICBsZXQgZXZhbHVhdG9yOworICAgICAg
ICAgICAgcmV0dXJuIGltcG9ydEV2YWx1YXRvcihjb250ZXh0KS50aGVuKChDaGFydFN0YXR1c0V2
YWx1YXRvcikgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNy
ZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgW3t0eXBlOiAnY3VycmVudCd9LCB7
dHlwZTogJ2Jhc2VsaW5lJ31dKTsKKyAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hh
cnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5l
bmRUaW1lKTsKKyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwor
CisgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0czsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3Ro
KS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVD
bHVzdGVyKHJlcXVlc3RzWzBdKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IG1h
a2VNZXRyaWMoY29udGV4dCwgJ1RpbWUnKTsKKyAgICAgICAgICAgICAgICBldmFsdWF0b3IgPSBu
ZXcgQ2hhcnRTdGF0dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KGV2YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAgICAg
ICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGV2YWx1YXRv
ci5zdGF0dXMoKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVs
bCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZSgnYmV0
dGVyJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5sYWJlbCkudG8uYmUoJzExLjUl
IGJldHRlciB0aGFuIGJhc2VsaW5lICgxMzEgbXMpJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KHN0YXR1cy5jdXJyZW50VmFsdWUpLnRvLmJlKCcxMTYgbXMnKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3Qoc3RhdHVzLnJlbGF0aXZlRGVsdGEpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgfSkK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBjb21wYXJlIHRoZSBsYXRlc3QgY3Vy
cmVudCBkYXRhIHBvaW50IHRvIHRoZSBiYXNlbGluZSB3aGVuIGZvciBhIGJpZ2dlci1pcy1iZXR0
ZXIgdW5pdCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3Np
bmdDb250ZXh0KCk7CisgICAgICAgICAgICBsZXQgZXZhbHVhdG9yOworICAgICAgICAgICAgcmV0
dXJuIGltcG9ydEV2YWx1YXRvcihjb250ZXh0KS50aGVuKChDaGFydFN0YXR1c0V2YWx1YXRvcikg
PT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUNoYXJ0
V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgW3t0eXBlOiAnY3VycmVudCd9LCB7dHlwZTogJ2Jh
c2VsaW5lJ31dKTsKKyAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNh
bXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsK
KyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworCisgICAgICAg
ICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0czsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgx
KTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJl
cXVlc3RzWzBdKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IG1ha2VNZXRyaWMo
Y29udGV4dCwgJ1Njb3JlJyk7CisgICAgICAgICAgICAgICAgZXZhbHVhdG9yID0gbmV3IENoYXJ0
U3RhdHVzRXZhbHVhdG9yKGNoYXJ0LCBtZXRyaWMpOworICAgICAgICAgICAgICAgIGV4cGVjdChl
dmFsdWF0b3Iuc3RhdHVzKCkpLnRvLmJlKG51bGwpOworCisgICAgICAgICAgICAgICAgcmV0dXJu
IHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBldmFsdWF0b3Iuc3RhdHVz
KCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cykudG8ubm90LmJlKG51bGwpOworICAg
ICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMuY29tcGFyaXNvbikudG8uYmUoJ3dvcnNlJyk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5sYWJlbCkudG8uYmUoJzExLjUlIHdvcnNlIHRo
YW4gYmFzZWxpbmUgKDEzMSBwdCknKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmN1
cnJlbnRWYWx1ZSkudG8uYmUoJzExNiBwdCcpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0
dXMucmVsYXRpdmVEZWx0YSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICB9KQorICAgICAgICB9
KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNvbXBhcmUgdGhlIGxhdGVzdCBjdXJyZW50IGRhdGEg
cG9pbnQgdG8gdGhlIHRhcmdldCB3aGVuIGZvciBhIHNtYWxsZXItaXMtYmV0dGVyIHVuaXQnLCAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgp
OworICAgICAgICAgICAgbGV0IGV2YWx1YXRvcjsKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnRF
dmFsdWF0b3IoY29udGV4dCkudGhlbigoQ2hhcnRTdGF0dXNFdmFsdWF0b3IpID0+IHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVD
bHVzdGVyKGNvbnRleHQsIFt7dHlwZTogJ2N1cnJlbnQnfSwge3R5cGU6ICd0YXJnZXQnfV0pOwor
ICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5z
dGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAg
ICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25z
dCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAg
ICAgICAgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAg
ICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOwor
CisgICAgICAgICAgICAgICAgY29uc3QgbWV0cmljID0gbWFrZU1ldHJpYyhjb250ZXh0LCAnVGlt
ZScpOworICAgICAgICAgICAgICAgIGV2YWx1YXRvciA9IG5ldyBDaGFydFN0YXR1c0V2YWx1YXRv
cihjaGFydCwgbWV0cmljKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnN0YXR1
cygpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9u
ZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXZhbHVhdG9yLnN0YXR1cygpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChzdGF0dXMpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBl
eHBlY3Qoc3RhdHVzLmNvbXBhcmlzb24pLnRvLmJlKCd3b3JzZScpOworICAgICAgICAgICAgICAg
IGV4cGVjdChzdGF0dXMubGFiZWwpLnRvLmJlKCcyNy41JSB1bnRpbCB0YXJnZXQgKDkxLjAgbXMp
Jyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jdXJyZW50VmFsdWUpLnRvLmJlKCcx
MTYgbXMnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLnJlbGF0aXZlRGVsdGEpLnRv
LmJlKG51bGwpOworICAgICAgICAgICAgfSkKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3No
b3VsZCBjb21wYXJlIHRoZSBsYXRlc3QgY3VycmVudCBkYXRhIHBvaW50IHRvIHRoZSB0YXJnZXQg
d2hlbiBmb3IgYSBiaWdnZXItaXMtYmV0dGVyIHVuaXQnLCAoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICAgICAgbGV0IGV2
YWx1YXRvcjsKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnRFdmFsdWF0b3IoY29udGV4dCkudGhl
bigoQ2hhcnRTdGF0dXNFdmFsdWF0b3IpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFy
dCA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIFt7dHlw
ZTogJ2N1cnJlbnQnfSwge3R5cGU6ICd0YXJnZXQnfV0pOworICAgICAgICAgICAgICAgIGNoYXJ0
LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5z
YW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3Vy
ZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQu
c3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAgICAgICAgICAgICAgIGV4cGVjdChy
ZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNw
b25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworCisgICAgICAgICAgICAgICAgY29u
c3QgbWV0cmljID0gbWFrZU1ldHJpYyhjb250ZXh0LCAnU2NvcmUnKTsKKyAgICAgICAgICAgICAg
ICBldmFsdWF0b3IgPSBuZXcgQ2hhcnRTdGF0dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KGV2YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0
YXR1cyA9IGV2YWx1YXRvci5zdGF0dXMoKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVz
KS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJp
c29uKS50by5iZSgnYmV0dGVyJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5sYWJl
bCkudG8uYmUoJzI3LjUlIHVudGlsIHRhcmdldCAoOTEuMCBwdCknKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc3RhdHVzLmN1cnJlbnRWYWx1ZSkudG8uYmUoJzExNiBwdCcpOworICAgICAgICAg
ICAgICAgIGV4cGVjdChzdGF0dXMucmVsYXRpdmVEZWx0YSkudG8uYmUobnVsbCk7CisgICAgICAg
ICAgICB9KQorICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGNvbXBhcmUgdGhlIGxh
dGVzdCBjdXJyZW50IGRhdGEgcG9pbnQgdG8gdGhlIHRhcmdldCB3aGVuIGl0IGlzIHNtYWxsZXIg
dGhhbiB0aGUgYmFzZWxpbmUgZm9yIGEgc21hbGxlci1pcy1iZXR0ZXIgdW5pdCcsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAg
ICAgICAgICBsZXQgZXZhbHVhdG9yOworICAgICAgICAgICAgcmV0dXJuIGltcG9ydEV2YWx1YXRv
cihjb250ZXh0KS50aGVuKChDaGFydFN0YXR1c0V2YWx1YXRvcikgPT4geworICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0LmNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIo
Y29udGV4dCwgW3t0eXBlOiAnY3VycmVudCd9LCB7dHlwZTogJ3RhcmdldCd9LCB7dHlwZTogJ2Jh
c2VsaW5lJ31dKTsKKyAgICAgICAgICAgICAgICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNh
bXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsK
KyAgICAgICAgICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOworCisgICAgICAg
ICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBjb250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0czsKKyAgICAgICAgICAgICAgICBleHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgx
KTsKKyAgICAgICAgICAgICAgICBDaGFydFRlc3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJl
cXVlc3RzWzBdKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IG1ha2VNZXRyaWMo
Y29udGV4dCwgJ1RpbWUnKTsKKyAgICAgICAgICAgICAgICBldmFsdWF0b3IgPSBuZXcgQ2hhcnRT
dGF0dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGV2
YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
d2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0dXMo
KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZShudWxsKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZSgnMjcuNSUgdW50aWwgdGFyZ2V0
ICg5MS4wIG1zKScpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMuY3VycmVudFZhbHVl
KS50by5iZSgnMTE2IG1zJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5yZWxhdGl2
ZURlbHRhKS50by5iZShudWxsKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAg
ICAgICBpdCgnc2hvdWxkIGNvbXBhcmUgdGhlIGxhdGVzdCBjdXJyZW50IGRhdGEgcG9pbnQgdG8g
dGhlIGJhc2VsaW5lIHdoZW4gaXQgaXMgc21hbGxlciB0aGFuIHRoZSBiYXNlbGluZSBmb3IgYSBi
aWdnZXItaXMtYmV0dGVyIHVuaXQnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb250ZXh0
ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICAgICAgbGV0IGV2YWx1YXRvcjsKKyAg
ICAgICAgICAgIHJldHVybiBpbXBvcnRFdmFsdWF0b3IoY29udGV4dCkudGhlbigoQ2hhcnRTdGF0
dXNFdmFsdWF0b3IpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IENoYXJ0VGVz
dC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIFt7dHlwZTogJ2N1cnJlbnQn
fSwge3R5cGU6ICd0YXJnZXQnfSwge3R5cGU6ICdiYXNlbGluZSd9XSk7CisgICAgICAgICAgICAg
ICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hh
cnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0
Y2hNZWFzdXJlbWVudFNldHMoKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0g
Y29udGV4dC5zeW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHM7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgICAgICAgICAgQ2hhcnRU
ZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAg
ICAgICBjb25zdCBtZXRyaWMgPSBtYWtlTWV0cmljKGNvbnRleHQsICdTY29yZScpOworICAgICAg
ICAgICAgICAgIGV2YWx1YXRvciA9IG5ldyBDaGFydFN0YXR1c0V2YWx1YXRvcihjaGFydCwgbWV0
cmljKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnN0YXR1cygpKS50by5iZShu
dWxsKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVy
KGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
Y29uc3Qgc3RhdHVzID0gZXZhbHVhdG9yLnN0YXR1cygpOworICAgICAgICAgICAgICAgIGV4cGVj
dChzdGF0dXMpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVz
LmNvbXBhcmlzb24pLnRvLmJlKCd3b3JzZScpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0
dXMubGFiZWwpLnRvLmJlKCcxMS41JSB3b3JzZSB0aGFuIGJhc2VsaW5lICgxMzEgcHQpJyk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jdXJyZW50VmFsdWUpLnRvLmJlKCcxMTYgcHQn
KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLnJlbGF0aXZlRGVsdGEpLnRvLmJlKG51
bGwpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
Y29tcGFyZSB0aGUgbGF0ZXN0IGN1cnJlbnQgZGF0YSBwb2ludCB0byB0aGUgYmFzZWxpbmUgd2hl
biBpdCBpcyBiaWdnZXIgdGhhbiB0aGUgYmFzZWxpbmUgYW5kIHRoZSB0YXJnZXQgZm9yIGEgc21h
bGxlci1pcy1iZXR0ZXIgdW5pdCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNvbnRleHQg
PSBuZXcgQnJvd3NpbmdDb250ZXh0KCk7CisgICAgICAgICAgICBsZXQgZXZhbHVhdG9yOworICAg
ICAgICAgICAgcmV0dXJuIGltcG9ydEV2YWx1YXRvcihjb250ZXh0KS50aGVuKChDaGFydFN0YXR1
c0V2YWx1YXRvcikgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0ID0gQ2hhcnRUZXN0
LmNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgW3t0eXBlOiAnY3VycmVudCd9
LCB7dHlwZTogJ3RhcmdldCd9LCB7dHlwZTogJ2Jhc2VsaW5lJ31dKTsKKyAgICAgICAgICAgICAg
ICBjaGFydC5zZXREb21haW4oQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuc3RhcnRUaW1lLCBDaGFy
dFRlc3Quc2FtcGxlQ2x1c3Rlci5lbmRUaW1lKTsKKyAgICAgICAgICAgICAgICBjaGFydC5mZXRj
aE1lYXN1cmVtZW50U2V0cygpOworCisgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBj
b250ZXh0LnN5bWJvbHMuTW9ja1JlbW90ZUFQSS5yZXF1ZXN0czsKKyAgICAgICAgICAgICAgICBl
eHBlY3QocmVxdWVzdHMubGVuZ3RoKS50by5iZSgxKTsKKyAgICAgICAgICAgICAgICBDaGFydFRl
c3QucmVzcG9uZFdpdGhTYW1wbGVDbHVzdGVyKHJlcXVlc3RzWzBdLCB7YmFzZWxpbmVJc1NtYWxs
ZXI6IHRydWV9KTsKKworICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IG1ha2VNZXRyaWMo
Y29udGV4dCwgJ1RpbWUnKTsKKyAgICAgICAgICAgICAgICBldmFsdWF0b3IgPSBuZXcgQ2hhcnRT
dGF0dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGV2
YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
d2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0dXMo
KTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZSgnd29yc2UnKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZSgnMjc0LjIlIHdvcnNlIHRo
YW4gYmFzZWxpbmUgKDMxLjAgbXMpJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5j
dXJyZW50VmFsdWUpLnRvLmJlKCcxMTYgbXMnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3Rh
dHVzLnJlbGF0aXZlRGVsdGEpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY29tcGFyZSB0aGUgbGF0ZXN0IGN1cnJlbnQgZGF0
YSBwb2ludCB0byB0aGUgdGFyZ2V0IHdoZW4gaXQgaXMgYmlnZ2VyIHRoYW4gdGhlIGJhc2VsaW5l
IGJ1dCBzbWFsbGVyIHRoYW4gdGhlIHRhcmdldCBmb3IgYSBiaWdnZXItaXMtYmV0dGVyIHVuaXQn
LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4
dCgpOworICAgICAgICAgICAgbGV0IGV2YWx1YXRvcjsKKyAgICAgICAgICAgIHJldHVybiBpbXBv
cnRFdmFsdWF0b3IoY29udGV4dCkudGhlbigoQ2hhcnRTdGF0dXNFdmFsdWF0b3IpID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1w
bGVDbHVzdGVyKGNvbnRleHQsIFt7dHlwZTogJ2N1cnJlbnQnfSwge3R5cGU6ICd0YXJnZXQnfSwg
e3R5cGU6ICdiYXNlbGluZSd9XSk7CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENo
YXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIu
ZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsK
KworICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tS
ZW1vdGVBUEkucmVxdWVzdHM7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0
aCkudG8uYmUoMSk7CisgICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxl
Q2x1c3RlcihyZXF1ZXN0c1swXSwge2Jhc2VsaW5lSXNTbWFsbGVyOiB0cnVlLCB0YXJnZXRJc0Jp
Z2dlcjogdHJ1ZX0pOworCisgICAgICAgICAgICAgICAgY29uc3QgbWV0cmljID0gbWFrZU1ldHJp
Yyhjb250ZXh0LCAnU2NvcmUnKTsKKyAgICAgICAgICAgICAgICBldmFsdWF0b3IgPSBuZXcgQ2hh
cnRTdGF0dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KGV2YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0
dXMoKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZShudWxsKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZSgnNC4xJSB1bnRpbCB0YXJn
ZXQgKDEyMSBwdCknKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmN1cnJlbnRWYWx1
ZSkudG8uYmUoJzExNiBwdCcpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMucmVsYXRp
dmVEZWx0YSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaXQoJ3Nob3VsZCBjb21wYXJlIHRoZSBsYXRlc3QgY3VycmVudCBkYXRhIHBvaW50IHRv
IHRoZSB0YXJnZXQgd2hlbiBpdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHRhcmdldCBmb3IgYSBzbWFs
bGVyLWlzLWJldHRlciB1bml0JywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9
IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIGxldCBldmFsdWF0b3I7CisgICAg
ICAgICAgICByZXR1cm4gaW1wb3J0RXZhbHVhdG9yKGNvbnRleHQpLnRoZW4oKENoYXJ0U3RhdHVz
RXZhbHVhdG9yKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBDaGFydFRlc3Qu
Y3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBbe3R5cGU6ICdjdXJyZW50J30s
IHt0eXBlOiAndGFyZ2V0J30sIHt0eXBlOiAnYmFzZWxpbmUnfV0pOworICAgICAgICAgICAgICAg
IGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0
VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNo
TWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNv
bnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAgICAgICAgICAgICAgIGV4
cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAgICAgICAgIENoYXJ0VGVz
dC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0sIHt0YXJnZXRJc0JpZ2dlcjog
dHJ1ZX0pOworCisgICAgICAgICAgICAgICAgY29uc3QgbWV0cmljID0gbWFrZU1ldHJpYyhjb250
ZXh0LCAnVGltZScpOworICAgICAgICAgICAgICAgIGV2YWx1YXRvciA9IG5ldyBDaGFydFN0YXR1
c0V2YWx1YXRvcihjaGFydCwgbWV0cmljKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVh
dG9yLnN0YXR1cygpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0
Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXZhbHVhdG9yLnN0YXR1cygpOwor
ICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3Qoc3RhdHVzLmNvbXBhcmlzb24pLnRvLmJlKCdiZXR0ZXInKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZSgnNC4xJSBiZXR0ZXIgdGhhbiB0
YXJnZXQgKDEyMSBtcyknKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmN1cnJlbnRW
YWx1ZSkudG8uYmUoJzExNiBtcycpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMucmVs
YXRpdmVEZWx0YSkudG8uYmUobnVsbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoJ3Nob3VsZCBjb21wYXJlIHRoZSBsYXRlc3QgY3VycmVudCBkYXRhIHBvaW50
IHRvIHRoZSBiYXNlbGluZSB3aGVuIGl0IGlzIHNtYWxsZXIgdGhhbiB0aGUgdGFyZ2V0IGJ1dCBi
aWdnZXIgdGhhbiB0aGUgYmFzZWxpbmUgZm9yIGEgYmlnZ2VyLWlzLWJldHRlciB1bml0JywgKCkg
PT4geworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsK
KyAgICAgICAgICAgIGxldCBldmFsdWF0b3I7CisgICAgICAgICAgICByZXR1cm4gaW1wb3J0RXZh
bHVhdG9yKGNvbnRleHQpLnRoZW4oKENoYXJ0U3RhdHVzRXZhbHVhdG9yKSA9PiB7CisgICAgICAg
ICAgICAgICAgY29uc3QgY2hhcnQgPSBDaGFydFRlc3QuY3JlYXRlQ2hhcnRXaXRoU2FtcGxlQ2x1
c3Rlcihjb250ZXh0LCBbe3R5cGU6ICdjdXJyZW50J30sIHt0eXBlOiAndGFyZ2V0J30sIHt0eXBl
OiAnYmFzZWxpbmUnfV0pOworICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRl
c3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRp
bWUpOworICAgICAgICAgICAgICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAg
ICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzOworICAgICAgICAgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRv
LmJlKDEpOworICAgICAgICAgICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0
ZXIocmVxdWVzdHNbMF0sIHtiYXNlbGluZUlzU21hbGxlcjogdHJ1ZSwgdGFyZ2V0SXNCaWdnZXI6
IHRydWV9KTsKKworICAgICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IG1ha2VNZXRyaWMoY29u
dGV4dCwgJ1Njb3JlJyk7CisgICAgICAgICAgICAgICAgZXZhbHVhdG9yID0gbmV3IENoYXJ0U3Rh
dHVzRXZhbHVhdG9yKGNoYXJ0LCBtZXRyaWMpOworICAgICAgICAgICAgICAgIGV4cGVjdChldmFs
dWF0b3Iuc3RhdHVzKCkpLnRvLmJlKG51bGwpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHdh
aXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBldmFsdWF0b3Iuc3RhdHVzKCk7
CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cykudG8ubm90LmJlKG51bGwpOworICAgICAg
ICAgICAgICAgIGV4cGVjdChzdGF0dXMuY29tcGFyaXNvbikudG8uYmUobnVsbCk7CisgICAgICAg
ICAgICAgICAgZXhwZWN0KHN0YXR1cy5sYWJlbCkudG8uYmUoJzQuMSUgdW50aWwgdGFyZ2V0ICgx
MjEgcHQpJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jdXJyZW50VmFsdWUpLnRv
LmJlKCcxMTYgcHQnKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLnJlbGF0aXZlRGVs
dGEpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgZGVzY3JpYmUoJ3N0YXR1cyBvbiBhbiBpbnRlcmFjdGl2ZSBjaGFydCcsICgpID0+IHsK
KworICAgICAgICBpdCgnc2hvdWxkIG5vdCByZXBvcnQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhl
IGxhdGVzdCBkYXRhIHBvaW50JywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9
IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAgIGxldCBldmFsdWF0b3I7CisgICAg
ICAgICAgICByZXR1cm4gaW1wb3J0RXZhbHVhdG9yKGNvbnRleHQpLnRoZW4oKENoYXJ0U3RhdHVz
RXZhbHVhdG9yKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBDaGFydFRlc3Qu
Y3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQpOworICAgICAg
ICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5zdGFydFRp
bWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAgICAgIGNo
YXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCByZXF1
ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAgICAgICAg
ICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAgICAgICAg
IENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOworCisgICAg
ICAgICAgICAgICAgY29uc3QgbWV0cmljID0gbWFrZU1ldHJpYyhjb250ZXh0LCAnVGltZScpOwor
ICAgICAgICAgICAgICAgIGV2YWx1YXRvciA9IG5ldyBDaGFydFN0YXR1c0V2YWx1YXRvcihjaGFy
dCwgbWV0cmljKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnN0YXR1cygpKS50
by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1Rv
UmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgZXhwZWN0KGV2YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisgICAgICAgICAg
ICB9KQorICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJlcG9ydCB0aGUgY3VycmVu
dCB2YWx1ZSBhbmQgdGhlIHJlbGF0aXZlIGRlbHRhIHdoZW4gdGhlcmUgaXMgYSBsb2NrZWQgaW5k
aWNhdG9yJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBCcm93c2lu
Z0NvbnRleHQoKTsKKyAgICAgICAgICAgIGxldCBjaGFydDsKKyAgICAgICAgICAgIGxldCBldmFs
dWF0b3I7CisgICAgICAgICAgICByZXR1cm4gaW1wb3J0RXZhbHVhdG9yKGNvbnRleHQpLnRoZW4o
KENoYXJ0U3RhdHVzRXZhbHVhdG9yKSA9PiB7CisgICAgICAgICAgICAgICAgY2hhcnQgPSBDaGFy
dFRlc3QuY3JlYXRlSW50ZXJhY3RpdmVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQpOwor
ICAgICAgICAgICAgICAgIGNoYXJ0LnNldERvbWFpbihDaGFydFRlc3Quc2FtcGxlQ2x1c3Rlci5z
dGFydFRpbWUsIENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLmVuZFRpbWUpOworICAgICAgICAgICAg
ICAgIGNoYXJ0LmZldGNoTWVhc3VyZW1lbnRTZXRzKCk7CisKKyAgICAgICAgICAgICAgICBjb25z
dCByZXF1ZXN0cyA9IGNvbnRleHQuc3ltYm9scy5Nb2NrUmVtb3RlQVBJLnJlcXVlc3RzOworICAg
ICAgICAgICAgICAgIGV4cGVjdChyZXF1ZXN0cy5sZW5ndGgpLnRvLmJlKDEpOworICAgICAgICAg
ICAgICAgIENoYXJ0VGVzdC5yZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVxdWVzdHNbMF0pOwor
CisgICAgICAgICAgICAgICAgY29uc3QgbWV0cmljID0gbWFrZU1ldHJpYyhjb250ZXh0LCAnVGlt
ZScpOworICAgICAgICAgICAgICAgIGV2YWx1YXRvciA9IG5ldyBDaGFydFN0YXR1c0V2YWx1YXRv
cihjaGFydCwgbWV0cmljKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnN0YXR1
cygpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIHJldHVybiB3YWl0Rm9yQ29tcG9u
ZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgZXhwZWN0KGV2YWx1YXRvci5zdGF0dXMoKSkudG8uYmUobnVsbCk7CisKKyAg
ICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmlldyA9IGNoYXJ0LnNhbXBsZWRUaW1lU2VyaWVz
RGF0YSgnY3VycmVudCcpOworICAgICAgICAgICAgICAgIGNoYXJ0LnNldEluZGljYXRvcihjdXJy
ZW50Vmlldy5sYXN0UG9pbnQoKS5pZCwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBsZXQgc3Rh
dHVzID0gZXZhbHVhdG9yLnN0YXR1cygpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMp
LnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmNvbXBhcmlz
b24pLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMubGFiZWwpLnRv
LmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMuY3VycmVudFZhbHVlKS50
by5iZSgnMTE2IG1zJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5yZWxhdGl2ZURl
bHRhKS50by5iZSgnLTYlJyk7CisKKyAgICAgICAgICAgICAgICBjaGFydC5zZXRJbmRpY2F0b3Io
Y3VycmVudFZpZXcucHJldmlvdXNQb2ludChjdXJyZW50Vmlldy5sYXN0UG9pbnQoKSkuaWQsIHRy
dWUpOworICAgICAgICAgICAgICAgIHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0dXMoKTsKKyAgICAg
ICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAg
ICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBl
Y3Qoc3RhdHVzLmN1cnJlbnRWYWx1ZSkudG8uYmUoJzEyNCBtcycpOworICAgICAgICAgICAgICAg
IGV4cGVjdChzdGF0dXMucmVsYXRpdmVEZWx0YSkudG8uYmUoJzEwJScpOworCisgICAgICAgICAg
ICAgICAgY2hhcnQuc2V0SW5kaWNhdG9yKGN1cnJlbnRWaWV3LmZpcnN0UG9pbnQoKS5pZCwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gZXZhbHVhdG9yLnN0YXR1cygpOworICAgICAg
ICAgICAgICAgIGV4cGVjdChzdGF0dXMpLnRvLm5vdC5iZShudWxsKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc3RhdHVzLmNvbXBhcmlzb24pLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAg
IGV4cGVjdChzdGF0dXMubGFiZWwpLnRvLmJlKG51bGwpOworICAgICAgICAgICAgICAgIGV4cGVj
dChzdGF0dXMuY3VycmVudFZhbHVlKS50by5iZSgnMTAwIG1zJyk7CisgICAgICAgICAgICAgICAg
ZXhwZWN0KHN0YXR1cy5yZWxhdGl2ZURlbHRhKS50by5iZShudWxsKTsKKworICAgICAgICAgICAg
ICAgIHJldHVybiB3YWl0Rm9yQ29tcG9uZW50c1RvUmVuZGVyKGNvbnRleHQpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmVwb3J0IHRoZSBjdXJy
ZW50IHZhbHVlIGFuZCB0aGUgcmVsYXRpdmUgZGVsdGEgd2hlbiB0aGVyZSBpcyBhIHNlbGVjdGlv
biB3aXRoIGF0IGxlYXN0IHR3byBwb2ludHMnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBj
b250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICAgICAgbGV0IGNoYXJ0Owor
ICAgICAgICAgICAgbGV0IGV2YWx1YXRvcjsKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnRFdmFs
dWF0b3IoY29udGV4dCkudGhlbigoQ2hhcnRTdGF0dXNFdmFsdWF0b3IpID0+IHsKKyAgICAgICAg
ICAgICAgICBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBs
ZUNsdXN0ZXIoY29udGV4dCk7CisgICAgICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0
VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5k
VGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJlbWVudFNldHMoKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5zeW1ib2xzLk1vY2tSZW1v
dGVBUEkucmVxdWVzdHM7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJlcXVlc3RzLmxlbmd0aCku
dG8uYmUoMSk7CisgICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3BvbmRXaXRoU2FtcGxlQ2x1
c3RlcihyZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBtZXRyaWMgPSBtYWtl
TWV0cmljKGNvbnRleHQsICdUaW1lJyk7CisgICAgICAgICAgICAgICAgZXZhbHVhdG9yID0gbmV3
IENoYXJ0U3RhdHVzRXZhbHVhdG9yKGNoYXJ0LCBtZXRyaWMpOworICAgICAgICAgICAgICAgIGV4
cGVjdChldmFsdWF0b3Iuc3RhdHVzKCkpLnRvLmJlKG51bGwpOworCisgICAgICAgICAgICAgICAg
cmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZhbHVhdG9yLnN0YXR1cygp
KS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gY2hh
cnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CisgICAgICAgICAgICAgICAgY29u
c3QgZmlyc3RQb2ludCA9IGN1cnJlbnRWaWV3LmZpcnN0UG9pbnQoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBsYXN0UG9pbnQgPSBjdXJyZW50Vmlldy5sYXN0UG9pbnQoKTsKKyAgICAgICAgICAg
ICAgICBjaGFydC5zZXRTZWxlY3Rpb24oW2ZpcnN0UG9pbnQudGltZSArIDEsIGxhc3RQb2ludC50
aW1lIC0gMV0pOworCisgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0
dXMoKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0KHN0YXR1cy5jb21wYXJpc29uKS50by5iZShudWxsKTsKKyAg
ICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVzLmxhYmVsKS50by5iZShudWxsKTsKKyAgICAgICAg
ICAgICAgICBleHBlY3Qoc3RhdHVzLmN1cnJlbnRWYWx1ZSkudG8uYmUoJzEyNCBtcycpOworICAg
ICAgICAgICAgICAgIGV4cGVjdChzdGF0dXMucmVsYXRpdmVEZWx0YSkudG8uYmUoJzIlJyk7CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJl
cG9ydCB0aGUgY3VycmVudCB2YWx1ZSBidXQgbm90IHRoZSByZWxhdGl2ZSBkZWx0YSB3aGVuIHRo
ZXJlIGlzIGEgc2VsZWN0aW9uIHdpdGggZXhhY2x5dCBvbmUgcG9pbnQnLCAoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEJyb3dzaW5nQ29udGV4dCgpOworICAgICAgICAg
ICAgbGV0IGNoYXJ0OworICAgICAgICAgICAgbGV0IGV2YWx1YXRvcjsKKyAgICAgICAgICAgIHJl
dHVybiBpbXBvcnRFdmFsdWF0b3IoY29udGV4dCkudGhlbigoQ2hhcnRTdGF0dXNFdmFsdWF0b3Ip
ID0+IHsKKyAgICAgICAgICAgICAgICBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVJbnRlcmFjdGl2
ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCk7CisgICAgICAgICAgICAgICAgY2hhcnQu
c2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNh
bXBsZUNsdXN0ZXIuZW5kVGltZSk7CisgICAgICAgICAgICAgICAgY2hhcnQuZmV0Y2hNZWFzdXJl
bWVudFNldHMoKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gY29udGV4dC5z
eW1ib2xzLk1vY2tSZW1vdGVBUEkucmVxdWVzdHM7CisgICAgICAgICAgICAgICAgZXhwZWN0KHJl
cXVlc3RzLmxlbmd0aCkudG8uYmUoMSk7CisgICAgICAgICAgICAgICAgQ2hhcnRUZXN0LnJlc3Bv
bmRXaXRoU2FtcGxlQ2x1c3RlcihyZXF1ZXN0c1swXSk7CisKKyAgICAgICAgICAgICAgICBjb25z
dCBtZXRyaWMgPSBtYWtlTWV0cmljKGNvbnRleHQsICdUaW1lJyk7CisgICAgICAgICAgICAgICAg
ZXZhbHVhdG9yID0gbmV3IENoYXJ0U3RhdHVzRXZhbHVhdG9yKGNoYXJ0LCBtZXRyaWMpOworICAg
ICAgICAgICAgICAgIGV4cGVjdChldmFsdWF0b3Iuc3RhdHVzKCkpLnRvLmJlKG51bGwpOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRGb3JDb21wb25lbnRzVG9SZW5kZXIoY29udGV4dCk7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoZXZh
bHVhdG9yLnN0YXR1cygpKS50by5iZShudWxsKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGN1
cnJlbnRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdjdXJyZW50Jyk7CisgICAg
ICAgICAgICAgICAgY29uc3QgZmlyc3RQb2ludCA9IGN1cnJlbnRWaWV3LmZpcnN0UG9pbnQoKTsK
KyAgICAgICAgICAgICAgICBjaGFydC5zZXRTZWxlY3Rpb24oW2ZpcnN0UG9pbnQudGltZSArIDEs
IGN1cnJlbnRWaWV3Lm5leHRQb2ludChmaXJzdFBvaW50KS50aW1lICsgMV0pOworCisgICAgICAg
ICAgICAgICAgbGV0IHN0YXR1cyA9IGV2YWx1YXRvci5zdGF0dXMoKTsKKyAgICAgICAgICAgICAg
ICBleHBlY3Qoc3RhdHVzKS50by5ub3QuYmUobnVsbCk7CisgICAgICAgICAgICAgICAgZXhwZWN0
KHN0YXR1cy5jb21wYXJpc29uKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
c3RhdHVzLmxhYmVsKS50by5iZShudWxsKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qoc3RhdHVz
LmN1cnJlbnRWYWx1ZSkudG8uYmUoJzEyMiBtcycpOworICAgICAgICAgICAgICAgIGV4cGVjdChz
dGF0dXMucmVsYXRpdmVEZWx0YSkudG8uYmUobnVsbCk7CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gd2FpdEZvckNvbXBvbmVudHNUb1JlbmRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKworICAgIH0pOworCit9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbAkocmV2aXNpb24gMjEzMjYyKQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTksNiArMTksOCBAQCBtb2NoYS5zZXR1cCgnYmRkJyk7CiA8c2NyaXB0
IHNyYz0iZWRpdGFibGUtdGV4dC10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idGlt
ZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImludGVyYWN0
aXZlLXRpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJj
aGFydC1zdGF0dXMtZXZhbHVhdG9yLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJj
aGFydC1yZXZpc2lvbi1yYW5nZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBhZnRl
ckVhY2goKCkgPT4gewpAQCAtNDAsNiArNDIsNyBAQCBjbGFzcyBCcm93c2luZ0NvbnRleHQgewog
ICAgICAgICB0aGlzLnN5bWJvbHMgPSB7fTsKICAgICAgICAgdGhpcy5nbG9iYWwgPSB0aGlzLmlm
cmFtZS5jb250ZW50V2luZG93OwogICAgICAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5pZnJhbWUu
Y29udGVudERvY3VtZW50OworICAgICAgICB0aGlzLl9kaWRMb2FkTW9ja1JlbW90ZSA9IGZhbHNl
OwogICAgIH0KIAogICAgIGltcG9ydFNjcmlwdHMocGF0aExpc3QsIC4uLnN5bWJvbExpc3QpCkBA
IC00OCw4ICs1MSwxMiBAQCBjbGFzcyBCcm93c2luZ0NvbnRleHQgewogICAgICAgICBjb25zdCBn
bG9iYWwgPSB0aGlzLmlmcmFtZS5jb250ZW50V2luZG93OwogCiAgICAgICAgIHBhdGhMaXN0ID0g
cGF0aExpc3QubWFwKChwYXRoKSA9PiBgLi4vcHVibGljL3YzLyR7cGF0aH1gKTsKKyAgICAgICAg
aWYgKCF0aGlzLl9kaWRMb2FkTW9ja1JlbW90ZSkgeworICAgICAgICAgICAgdGhpcy5fZGlkTG9h
ZE1vY2tSZW1vdGUgPSB0cnVlOworICAgICAgICAgICAgcGF0aExpc3QudW5zaGlmdCgnLi4vdW5p
dC10ZXN0cy9yZXNvdXJjZXMvbW9jay1yZW1vdGUtYXBpLmpzJyk7CisgICAgICAgIH0KIAotICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWycuLi91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXJl
bW90ZS1hcGkuanMnLCAuLi5wYXRoTGlzdF0ubWFwKChwYXRoKSA9PiB7CisgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChwYXRoTGlzdC5tYXAoKHBhdGgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0
IHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICAgICAgICAgICBz
Y3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlc29sdmUpOwpAQCAtMTk2LDIyICsyMDMs
NDUgQEAgY29uc3QgQ2hhcnRUZXN0ID0gewogICAgICAgICAgICAgJy4uL3NoYXJlZC9zdGF0aXN0
aWNzLmpzJywKICAgICAgICAgICAgICdpbnN0cnVtZW50YXRpb24uanMnLAogICAgICAgICAgICAg
J21vZGVscy9kYXRhLW1vZGVsLmpzJywKLSAgICAgICAgICAgICdtb2RlbHMvbWV0cmljLmpzJywK
ICAgICAgICAgICAgICdtb2RlbHMvdGltZS1zZXJpZXMuanMnLAogICAgICAgICAgICAgJ21vZGVs
cy9tZWFzdXJlbWVudC1zZXQuanMnLAogICAgICAgICAgICAgJ21vZGVscy9tZWFzdXJlbWVudC1j
bHVzdGVyLmpzJywKICAgICAgICAgICAgICdtb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5qcycs
CisgICAgICAgICAgICAnbW9kZWxzL3JlcG9zaXRvcnkuanMnLAorICAgICAgICAgICAgJ21vZGVs
cy9wbGF0Zm9ybS5qcycsCisgICAgICAgICAgICAnbW9kZWxzL3Rlc3QuanMnLAorICAgICAgICAg
ICAgJ21vZGVscy9tZXRyaWMuanMnLAorICAgICAgICAgICAgJ21vZGVscy9yb290LXNldC5qcycs
CisgICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1sb2cuanMnLAogICAgICAgICAgICAgJ2NvbXBv
bmVudHMvYmFzZS5qcycsCiAgICAgICAgICAgICAnY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFy
dC5qcycsCiAgICAgICAgICAgICAnY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1j
aGFydC5qcyddLAotICAgICAgICAgICAgJ0NvbXBvbmVudEJhc2UnLCAnVGltZVNlcmllc0NoYXJ0
JywgJ0ludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0JywgJ01ldHJpYycsICdNZWFzdXJlbWVudFNl
dCcsICdNb2NrUmVtb3RlQVBJJykudGhlbigoKSA9PiB7CisgICAgICAgICAgICAnQ29tcG9uZW50
QmFzZScsICdUaW1lU2VyaWVzQ2hhcnQnLCAnSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQnLAor
ICAgICAgICAgICAgJ1BsYXRmb3JtJywgJ01ldHJpYycsICdUZXN0JywgJ1JlcG9zaXRvcnknLCAn
TWVhc3VyZW1lbnRTZXQnLCAnTW9ja1JlbW90ZUFQSScpLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LnN5bWJvbHMuVGltZVNlcmllc0NoYXJ0OwogICAgICAgICAg
ICAgfSkKICAgICB9LAogCiAgICAgcG9zaXhUaW1lOiBwb3NpeFRpbWUsCiAKLSAgICBzYW1wbGVD
bHVzdGVyOiB7CisgICAgZ2V0IHNhbXBsZUNsdXN0ZXIoKSB7IHJldHVybiB0aGlzLm1ha2VTYW1w
bGVDbHVzdGVyKCk7IH0sCisKKyAgICBtYWtlTW9kZWxPYmplY3RzRm9yU2FtcGxlQ2x1c3Rlcihj
b250ZXh0KQorICAgIHsKKyAgICAgICAgY29uc3QgdGVzdCA9IGNvbnRleHQuc3ltYm9scy5UZXN0
LmVuc3VyZVNpbmdsZXRvbigyLCB7bmFtZTogJ1Rlc3QnfSk7CisgICAgICAgIGNvbnN0IG1ldHJp
YyA9IGNvbnRleHQuc3ltYm9scy5NZXRyaWMuZW5zdXJlU2luZ2xldG9uKDEsIHtuYW1lOiAnVGlt
ZScsIHRlc3R9KQorICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IGNvbnRleHQuc3ltYm9scy5QbGF0
Zm9ybS5lbnN1cmVTaW5nbGV0b24oMSwKKyAgICAgICAgICAgIHtuYW1lOiAnU29tZVBsYXRmb3Jt
JywgbWV0cmljczogW21ldHJpY10sIGxhc3RNb2RpZmllZEJ5TWV0cmljOiBbcG9zaXhUaW1lKCcy
MDE2LTAxLTE4VDAwOjAwOjAwWicpXX0pOworICAgICAgICBtZXRyaWMuYWRkUGxhdGZvcm0ocGxh
dGZvcm0pOworICAgICAgICBjb250ZXh0LnN5bWJvbHMuUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0
b24oMSwge25hbWU6ICdTb21lQXBwJ30pOworICAgICAgICBjb250ZXh0LnN5bWJvbHMuUmVwb3Np
dG9yeS5lbnN1cmVTaW5nbGV0b24oMiwge25hbWU6ICdtYWNPUyd9KTsKKyAgICB9LAorCisgICAg
bWFrZVNhbXBsZUNsdXN0ZXIob3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc3QgYmFz
ZWxpbmVTdGFydCA9IG9wdGlvbnMuYmFzZWxpbmVJc1NtYWxsZXIgPyAzMCA6IDEzMDsKKyAgICAg
ICAgY29uc3QgdGFyZ2V0U3RhcnQgPSBvcHRpb25zLnRhcmdldElzQmlnZ2VyID8gMTIwIDogOTA7
CisgICAgICAgIHJldHVybiB7CiAgICAgICAgICJjbHVzdGVyU3RhcnQiOiBwb3NpeFRpbWUoJzIw
MTYtMDEtMDFUMDA6MDA6MDBaJyksCiAgICAgICAgICJjbHVzdGVyU2l6ZSI6IDcgKiBkYXlJbk1p
bGxpc2Vjb25kcywKICAgICAgICAgInN0YXJ0VGltZSI6IHBvc2l4VGltZSgnMjAxNi0wMS0wMVQw
MDowMDowMFonKSwKQEAgLTIyOCw0MSArMjU4LDY1IEBAIGNvbnN0IENoYXJ0VGVzdCA9IHsKICAg
ICAgICAgICAgICJjdXJyZW50IjogWwogICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAg
ICAgICAgMTAwMCwgMTAwLCAxLCAxMDAsIDEwMCAqIDEwMCwgZmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgIFsgWyAyMDAwLCAxLCAiNDAwMCIsIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQxNzozNTow
MFonKV0gXSwKKyAgICAgICAgICAgICAgICAgICAgWyBbMjAwMCwgMSwgIjQwMDAiLCBwb3NpeFRp
bWUoJzIwMTYtMDEtMDVUMTc6MzU6MDBaJyldLCBbMzAwMCwgMiwgIjE1QjQyIiwgMF0gXSwKICAg
ICAgICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDE3OjM1OjAwWicpLCA1MDAw
LCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMTk6MjM6MDBaJyksICIxMCIsIDcKICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgMTAwMSwgMTMx
LCAxLCAxMzEsIDEzMSAqIDEzMSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgWyBbIDIwMDEs
IDEsICI0MDAxIiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDE4OjQzOjAxWicpXSBdLAorICAgICAg
ICAgICAgICAgICAgICBbIFsyMDAxLCAxLCAiNDAwMSIsIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQx
ODo0MzowMVonKV0sIFszMDAwLCAyLCAiMTVCNDIiLCAwXSBdLAogICAgICAgICAgICAgICAgICAg
ICBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMTg6NDM6MDFaJyksIDUwMDEsIHBvc2l4VGltZSgnMjAx
Ni0wMS0wNVQyMDo1ODowMVonKSwgIjExIiwgNwogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAxMDAyLCAxMjIsIDEsIDEyMiwgMTIyICog
MTIyLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgWyBbIDIwMDIsIDEsICI0MDAyIiwgcG9z
aXhUaW1lKCcyMDE2LTAxLTA1VDIwOjAxOjAyWicpIF0gXSwKKyAgICAgICAgICAgICAgICAgICAg
WyBbMjAwMiwgMSwgIjQwMDIiLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMjA6MDE6MDJaJyldLCBb
MzAwMCwgMiwgIjE1QjQyIiwgMF0gXSwKICAgICAgICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcy
MDE2LTAxLTA1VDIwOjAxOjAyWicpLCA1MDAyLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMjI6Mzc6
MDJaJyksICIxMiIsIDcKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIFsKICAg
ICAgICAgICAgICAgICAgICAgMTAwMywgMTEzLCAxLCAxMTMsIDExMyAqIDExMywgZmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgIFsgWyAyMDAzLCAxLCAiNDAwMyIsIHBvc2l4VGltZSgnMjAxNi0w
MS0wNVQyMzoxOTowM1onKSBdIF0sCisgICAgICAgICAgICAgICAgICAgIFsgWzIwMDMsIDEsICI0
MDAzIiwgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDIzOjE5OjAzWicpXSwgWzMwMDAsIDIsICIxNUI0
MiIsIDBdIF0sCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQyMzox
OTowM1onKSwgNTAwMywgcG9zaXhUaW1lKCcyMDE2LTAxLTA2VDIzOjE5OjAzWicpLCAiMTMiLCA3
CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAg
ICAgIDEwMDQsIDEyNCwgMSwgMTI0LCAxMjQgKiAxMjQsIGZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICBbIFsgMjAwNCwgMSwgIjQwMDQiLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDE6NTI6MDRa
JykgXSBdLAorICAgICAgICAgICAgICAgICAgICBbIFsyMDA0LCAxLCAiNDAwNCIsIHBvc2l4VGlt
ZSgnMjAxNi0wMS0wNlQwMTo1MjowNFonKV0sIFszMDAxLCAyLCAiMTVDNTAiLCAwXSBdLAogICAg
ICAgICAgICAgICAgICAgICBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDE6NTI6MDRaJyksIDUwMDQs
IHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwMjo0MjowNFonKSwgIjE0IiwgNwogICAgICAgICAgICAg
ICAgIF0sCiAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAxMDA1LCAxMTUs
IDEsIDExNSwgMTE1ICogMTE1LCB0cnVlLAotICAgICAgICAgICAgICAgICAgICBbIFsgMjAwNSwg
MSwgIjQwMDUiLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDM6MjI6MDVaJykgXSBdLAorICAgICAg
ICAgICAgICAgICAgICBbIFsyMDA1LCAxLCAiNDAwNSIsIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQw
MzoyMjowNVonKV0sIFszMDAxLCAyLCAiMTVDNTAiLCAwXSBdLAogICAgICAgICAgICAgICAgICAg
ICBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDM6MjI6MDVaJyksIDUwMDUsIHBvc2l4VGltZSgnMjAx
Ni0wMS0wNlQwNjowMTowNVonKSwgIjE1IiwgNwogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAxMDA2LCAxMTYsIDEsIDExNiwgMTE2ICog
MTE2LCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgWyBbIDIwMDYsIDEsICI0MDA2IiwgcG9z
aXhUaW1lKCcyMDE2LTAxLTA2VDA1OjU5OjA2WicpIF0gXSwKKyAgICAgICAgICAgICAgICAgICAg
WyBbMjAwNiwgMSwgIjQwMDYiLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDU6NTk6MDZaJyldLCBb
MzAwMSwgMiwgIjE1QzUwIiwgMF0gXSwKICAgICAgICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcy
MDE2LTAxLTA2VDA1OjU5OjA2WicpLCA1MDA2LCBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDg6MzQ6
MDZaJyksICIxNiIsIDcKICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgImJhc2VsaW5lIjogWworICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgNzAwMCwgYmFzZWxpbmVTdGFydCwgMSwgYmFzZWxpbmVTdGFydCwgYmFzZWxpbmVTdGFydCAq
IGJhc2VsaW5lU3RhcnQsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBbIF0sCisgICAgICAg
ICAgICAgICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0wNVQxMjowMDozMFonKSwgNTAzMCwgcG9z
aXhUaW1lKCcyMDE2LTAxLTA1VDEyOjAwOjMwWicpLCAiMzAiLCA3CisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIDcwMDEsIGJhc2VsaW5l
U3RhcnQgKyAxLCAxLCBiYXNlbGluZVN0YXJ0ICsgMSwgTWF0aC5wb3coYmFzZWxpbmVTdGFydCAr
IDEsIDIpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgWyBdLAorICAgICAgICAgICAgICAg
ICAgICBwb3NpeFRpbWUoJzIwMTYtMDEtMDZUMDA6MDA6MzFaJyksIDUwMzEsIHBvc2l4VGltZSgn
MjAxNi0wMS0wNlQwMDowMDozMVonKSwgIjMxIiwgNworICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgInRhcmdldCI6IFsKKyAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgIDgwMDAsIHRhcmdldFN0YXJ0LCAxLCB0YXJnZXRTdGFydCwgdGFy
Z2V0U3RhcnQgKiB0YXJnZXRTdGFydCwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIFsgXSwK
KyAgICAgICAgICAgICAgICAgICAgcG9zaXhUaW1lKCcyMDE2LTAxLTA1VDEyOjAwOjMwWicpLCA1
MDMwLCBwb3NpeFRpbWUoJzIwMTYtMDEtMDVUMTI6MDA6MzBaJyksICI5MCIsIDcKKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgODAwMSwg
dGFyZ2V0U3RhcnQgKyAxLCAxLCB0YXJnZXRTdGFydCArIDEsIE1hdGgucG93KHRhcmdldFN0YXJ0
ICsgMSwgMiksIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBbIF0sCisgICAgICAgICAgICAg
ICAgICAgIHBvc2l4VGltZSgnMjAxNi0wMS0wNlQwMDowMDozMVonKSwgNTAzMSwgcG9zaXhUaW1l
KCcyMDE2LTAxLTA2VDAwOjAwOjMxWicpLCAiOTEiLCA3CisgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgIF0KLSAgICAgICAgfSwKKyAgICAgICAgfX07CiAgICAgfSwKIAogICAgIGNyZWF0
ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgc291cmNlTGlzdCA9IG51bGwsIGNoYXJ0
T3B0aW9ucyA9IHt9LCBjbGFzc05hbWUgPSAnVGltZVNlcmllc0NoYXJ0JykKQEAgLTI5NiwxMSAr
MzUwLDExIEBAIGNvbnN0IENoYXJ0VGVzdCA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRl
Q2hhcnRXaXRoU2FtcGxlQ2x1c3Rlcihjb250ZXh0LCBzb3VyY2VMaXN0LCBjaGFydE9wdGlvbnMs
ICdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcpOwogICAgIH0sCiAKLSAgICByZXNwb25kV2l0
aFNhbXBsZUNsdXN0ZXIocmVxdWVzdCkKKyAgICByZXNwb25kV2l0aFNhbXBsZUNsdXN0ZXIocmVx
dWVzdCwgb3B0aW9ucykKICAgICB7CiAgICAgICAgIGV4cGVjdChyZXF1ZXN0LnVybCkudG8uYmUo
Jy4uL2RhdGEvbWVhc3VyZW1lbnQtc2V0LTEtMS5qc29uJyk7CiAgICAgICAgIGV4cGVjdChyZXF1
ZXN0Lm1ldGhvZCkudG8uYmUoJ0dFVCcpOwotICAgICAgICByZXF1ZXN0LnJlc29sdmUodGhpcy5z
YW1wbGVDbHVzdGVyKTsKKyAgICAgICAgcmVxdWVzdC5yZXNvbHZlKHRoaXMubWFrZVNhbXBsZUNs
dXN0ZXIob3B0aW9ucykpOwogICAgIH0sCiB9OwogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9pbmRleC5odG1sCShyZXZpc2lvbiAyMTMyNjIpCisrKyBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEyICszOCwxMiBAQCBSdW4gdG9vbHMvYnVuZGxlLXYzLXNjcmlwdHMgdG8gc3BlZWQg
dXAgCiAKICAgICA8dGVtcGxhdGUgaWQ9InVuYnVuZGxlZC1zY3JpcHRzIj4KICAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL3NoYXJlZC9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL3YyL2RhdGEuanMiPjwvc2NyaXB0PgogCiAgICAgICAgIDxzY3JpcHQgc3Jj
PSJpbnN0cnVtZW50YXRpb24uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0icmVt
b3RlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9InByaXZpbGVnZWQtYXBpLmpz
Ij48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImFzeW5jLXRhc2suanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0ibGF6aWx5LWV2YWx1YXRlZC1mdW5jdGlvbi5qcyI+PC9z
Y3JpcHQ+CiAKICAgICAgICAgPHNjcmlwdCBzcmM9Im1vZGVscy90aW1lLXNlcmllcy5qcyI+PC9z
Y3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5q
cyI+PC9zY3JpcHQ+CkBAIC03NSw3ICs3NSw3IEBAIFJ1biB0b29scy9idW5kbGUtdjMtc2NyaXB0
cyB0byBzcGVlZCB1cCAKICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvZWRpdGFibGUt
dGV4dC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3RpbWUt
c2VyaWVzLWNoYXJ0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVu
dHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanMiPjwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0IHNyYz0iY29tcG9uZW50cy9jaGFydC1zdGF0dXMtdmlldy5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2Rhc2hib2FyZC1jaGFydC1zdGF0dXMtdmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3BhbmUtc2Vs
ZWN0b3IuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9iYXIt
Z3JhcGgtZ3JvdXAuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50
cy9yZXN1bHRzLXRhYmxlLmpzIj48L3NjcmlwdD4KQEAgLTg0LDYgKzg0LDggQEAgUnVuIHRvb2xz
L2J1bmRsZS12My1zY3JpcHRzIHRvIHNwZWVkIHVwIAogICAgICAgICA8c2NyaXB0IHNyYz0iY29t
cG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNy
Yz0iY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzIj48L3NjcmlwdD4K
ICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvY2hhcnQtc3R5bGVzLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvY2hhcnQtc3RhdHVzLWV2YWx1YXRv
ci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL2NoYXJ0LXJl
dmlzaW9uLXJhbmdlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVu
dHMvY2hhcnQtcGFuZS1iYXNlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNv
bXBvbmVudHMvbXV0YWJsZS1saXN0LXZpZXcuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0
IHNyYz0iY29tcG9uZW50cy9yYXRpby1iYXItZ3JhcGguanMiPjwvc2NyaXB0PgpJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9sYXppbHktZXZhbHVhdGVkLWZ1bmN0aW9u
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbGF6
aWx5LWV2YWx1YXRlZC1mdW5jdGlvbi5qcwkobm9uZXhpc3RlbnQpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24uanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorY2xhc3MgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24g
eworICAgIGNvbnN0cnVjdG9yKGNhbGxiYWNrLCAuLi5vYnNlcnZlZFByb3BlcnRpZXNMaXN0KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mKGNhbGxiYWNrKSA9PSAnZnVuY3Rp
b24nKTsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5f
b2JzZXJ2ZWRQcm9wZXJ0aWVzTGlzdCA9IG9ic2VydmVkUHJvcGVydGllc0xpc3Q7CisgICAgICAg
IHRoaXMuX2NhY2hlZEFyZ3VtZW50cyA9IG51bGw7CisgICAgICAgIHRoaXMuX2NhY2hlZFJlc3Vs
dCA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBldmFsdWF0ZSguLi5hcmdzKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX2NhY2hlZEFyZ3VtZW50cykgeworICAgICAgICAgICAgY29uc3QgbGVu
Z3RoID0gdGhpcy5fY2FjaGVkQXJndW1lbnRzLmxlbmd0aDsKKyAgICAgICAgICAgIGlmIChhcmdz
Lmxlbmd0aCA9PSBsZW5ndGggJiYgKCFsZW5ndGggfHwgdGhpcy5fY2FjaGVkQXJndW1lbnRzLmV2
ZXJ5KChjYWNoZWQsIGkpID0+IGNhY2hlZCA9PT0gYXJnc1tpXSkpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9jYWNoZWRSZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9j
YWNoZWRBcmd1bWVudHMgPSBhcmdzOworICAgICAgICB0aGlzLl9jYWNoZWRSZXN1bHQgPSB0aGlz
Ll9jYWxsYmFjay5hcHBseShudWxsLCBhcmdzKTsKKworICAgICAgICByZXR1cm4gdGhpcy5fY2Fj
aGVkUmVzdWx0OworICAgIH0KK30KKworaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcp
CisgICAgbW9kdWxlLmV4cG9ydHMuTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24gPSBMYXppbHlFdmFs
dWF0ZWRGdW5jdGlvbjsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcwkocmV2
aXNpb24gMjEzMjYyKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21w
b25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBA
QCBjbGFzcyBDaGFydFBhbmVCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzCiAgICAgICAgIHRoaXMu
X21ldHJpYyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2Rpc2FibGVTYW1wbGluZyA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl9zaG93T3V0bGllcnMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fb3BlblJl
cG9zaXRvcnkgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2hhcnQgPSBudWxsOwog
ICAgICAgICB0aGlzLl9tYWluQ2hhcnQgPSBudWxsOwpAQCAtNTMsMTAgKzU0LDEzIEBAIGNsYXNz
IENoYXJ0UGFuZUJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXMKICAgICAgICAgdGhpcy5fbWFpbkNo
YXJ0Lmxpc3RlblRvQWN0aW9uKCdhbm5vdGF0aW9uQ2xpY2snLCB0aGlzLl9vcGVuQW5hbHlzaXNU
YXNrLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtbWFpbicpLCB0aGlzLl9tYWluQ2hhcnQpOwog
Ci0gICAgICAgIHRoaXMuX21haW5DaGFydFN0YXR1cyA9IG5ldyBDaGFydFBhbmVTdGF0dXNWaWV3
KHJlc3VsdC5tZXRyaWMsIHRoaXMuX21haW5DaGFydCwgdGhpcy5fcmVxdWVzdE9wZW5pbmdDb21t
aXRWaWV3ZXIuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3JldmlzaW9uUmFuZ2UgPSBuZXcg
Q2hhcnRSZXZpc2lvblJhbmdlKHRoaXMuX21haW5DaGFydCk7CisKKyAgICAgICAgdGhpcy5fbWFp
bkNoYXJ0U3RhdHVzID0gbmV3IENoYXJ0UGFuZVN0YXR1c1ZpZXcocmVzdWx0Lm1ldHJpYywgdGhp
cy5fbWFpbkNoYXJ0KTsKKyAgICAgICAgdGhpcy5fbWFpbkNoYXJ0U3RhdHVzLmxpc3RlblRvQWN0
aW9uKCdvcGVuUmVwb3NpdG9yeScsIHRoaXMub3Blbk5ld1JlcG9zaXRvcnkuYmluZCh0aGlzKSk7
CiAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9y
KCcuY2hhcnQtcGFuZS1kZXRhaWxzJyksIHRoaXMuX21haW5DaGFydFN0YXR1cyk7CiAKLSAgICAg
ICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUnKS5hZGRFdmVudExp
c3RlbmVyKCdrZXl1cCcsIHRoaXMuX2tleXVwLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmNv
bnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFuZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2tl
eWRvd24nLCB0aGlzLl9rZXl1cC5iaW5kKHRoaXMpKTsKIAogICAgICAgICB0aGlzLmZldGNoQW5h
bHlzaXNUYXNrcyhmYWxzZSk7CiAgICAgfQpAQCAtMTI1LDExICsxMjksMTggQEAgY2xhc3MgQ2hh
cnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJhcwogICAgICAgICAgICAgdGhpcy5fbWFpbkNo
YXJ0LnNldFNlbGVjdGlvbihzZWxlY3Rpb24pOwogICAgIH0KIAorICAgIHNldE9wZW5SZXBvc2l0
b3J5KHJlcG9zaXRvcnkpCisgICAgeworICAgICAgICB0aGlzLl9vcGVuUmVwb3NpdG9yeSA9IHJl
cG9zaXRvcnk7CisgICAgICAgIHRoaXMuX21haW5DaGFydFN0YXR1cy5zZXRDdXJyZW50UmVwb3Np
dG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ29tbWl0TG9nVmlld2VyKCk7
CisgICAgfQorCiAgICAgX292ZXJ2aWV3U2VsZWN0aW9uRGlkQ2hhbmdlKGRvbWFpbiwgZGlkRW5k
RHJhZykgeyB9CiAKICAgICBfbWFpblNlbGVjdGlvbkRpZENoYW5nZShzZWxlY3Rpb24sIGRpZEVu
ZERyYWcpCiAgICAgewotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKKyAgICAgICAgdGhp
cy5fdXBkYXRlQ29tbWl0TG9nVmlld2VyKCk7CiAgICAgfQogCiAgICAgX21haW5TZWxlY3Rpb25E
aWRab29tKHNlbGVjdGlvbikKQEAgLTE0MSwxOSArMTUyLDE5IEBAIGNsYXNzIENoYXJ0UGFuZUJh
c2UgZXh0ZW5kcyBDb21wb25lbnRCYXMKIAogICAgIF9pbmRpY2F0b3JEaWRDaGFuZ2UoaW5kaWNh
dG9ySUQsIGlzTG9ja2VkKQogICAgIHsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdExvZ1ZpZXdlcigpOwogICAgIH0KIAogICAgIF9kaWRG
ZXRjaERhdGEoKQogICAgIHsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CisgICAgICAg
IHRoaXMuX3VwZGF0ZUNvbW1pdExvZ1ZpZXdlcigpOwogICAgIH0KIAotICAgIF91cGRhdGVTdGF0
dXMoKQorICAgIF91cGRhdGVDb21taXRMb2dWaWV3ZXIoKQogICAgIHsKLSAgICAgICAgdmFyIHJh
bmdlID0gdGhpcy5fbWFpbkNoYXJ0U3RhdHVzLnVwZGF0ZVJldmlzaW9uTGlzdCgpOworICAgICAg
ICBjb25zdCByYW5nZSA9IHRoaXMuX3JldmlzaW9uUmFuZ2UucmFuZ2VGb3JSZXBvc2l0b3J5KHRo
aXMuX29wZW5SZXBvc2l0b3J5KTsKICAgICAgICAgY29uc3QgdXBkYXRlUmVuZGVyaW5nID0gKCkg
PT4geyB0aGlzLmVucXVldWVUb1JlbmRlcigpOyB9OwotICAgICAgICB0aGlzLl9jb21taXRMb2dW
aWV3ZXIudmlldyhyYW5nZS5yZXBvc2l0b3J5LCByYW5nZS5mcm9tLCByYW5nZS50bykudGhlbih1
cGRhdGVSZW5kZXJpbmcpOworICAgICAgICB0aGlzLl9jb21taXRMb2dWaWV3ZXIudmlldyh0aGlz
Ll9vcGVuUmVwb3NpdG9yeSwgcmFuZ2UuZnJvbSwgcmFuZ2UudG8pLnRoZW4odXBkYXRlUmVuZGVy
aW5nKTsKICAgICAgICAgdXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgfQogCkBAIC0xNjYsMTIgKzE3
NywxMCBAQCBjbGFzcyBDaGFydFBhbmVCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzCiAKICAgICBy
b3V0ZXIoKSB7IHJldHVybiBudWxsOyB9CiAKLSAgICBfcmVxdWVzdE9wZW5pbmdDb21taXRWaWV3
ZXIocmVwb3NpdG9yeSwgZnJvbSwgdG8pCisgICAgb3Blbk5ld1JlcG9zaXRvcnkocmVwb3NpdG9y
eSkKICAgICB7Ci0gICAgICAgIHRoaXMuX21haW5DaGFydFN0YXR1cy5zZXRDdXJyZW50UmVwb3Np
dG9yeShyZXBvc2l0b3J5KTsKLSAgICAgICAgY29uc3QgdXBkYXRlUmVuZGVyaW5nID0gKCkgPT4g
eyB0aGlzLmVucXVldWVUb1JlbmRlcigpOyB9OwotICAgICAgICB0aGlzLl9jb21taXRMb2dWaWV3
ZXIudmlldyhyZXBvc2l0b3J5LCBmcm9tLCB0bykudGhlbih1cGRhdGVSZW5kZXJpbmcpOwotICAg
ICAgICB1cGRhdGVSZW5kZXJpbmcoKTsKKyAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxl
Y3RvcignLmNoYXJ0LXBhbmUnKS5mb2N1cygpOworICAgICAgICB0aGlzLnNldE9wZW5SZXBvc2l0
b3J5KHJlcG9zaXRvcnkpOwogICAgIH0KIAogICAgIF9rZXl1cChldmVudCkKQEAgLTE4NiwxMSAr
MTk1LDEzIEBAIGNsYXNzIENoYXJ0UGFuZUJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXMKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAzODog
Ly8gVXAKLSAgICAgICAgICAgIGlmICghdGhpcy5fbWFpbkNoYXJ0U3RhdHVzLm1vdmVSZXBvc2l0
b3J5V2l0aE5vdGlmaWNhdGlvbihmYWxzZSkpCisgICAgICAgICAgICBpZiAoIXRoaXMuX21vdmVP
cGVuUmVwb3NpdG9yeShmYWxzZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDA6IC8vIERvd24KLSAgICAgICAgICAgIGlmICghdGhp
cy5fbWFpbkNoYXJ0U3RhdHVzLm1vdmVSZXBvc2l0b3J5V2l0aE5vdGlmaWNhdGlvbih0cnVlKSkK
KyAgICAgICAgICAgIGlmICghdGhpcy5fbW92ZU9wZW5SZXBvc2l0b3J5KHRydWUpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMDEsNiArMjEyLDI4IEBAIGNsYXNz
IENoYXJ0UGFuZUJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXMKICAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CiAgICAgfQogCisgICAgX21vdmVPcGVuUmVwb3NpdG9yeShmb3J3YXJkKQor
ICAgIHsKKyAgICAgICAgY29uc3Qgb3BlblJlcG9zaXRvcnkgPSB0aGlzLl9vcGVuUmVwb3NpdG9y
eTsKKyAgICAgICAgaWYgKCFvcGVuUmVwb3NpdG9yeSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBjb25zdCByZXZpc2lvbkxpc3QgPSB0aGlzLl9yZXZpc2lvblJhbmdlLnJl
dmlzaW9uTGlzdCgpOworICAgICAgICBpZiAoIXJldmlzaW9uTGlzdCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSByZXZpc2lvbkxpc3Qu
ZmluZEluZGV4KChpbmZvKSA9PiBpbmZvLnJlcG9zaXRvcnkgPT0gb3BlblJlcG9zaXRvcnkpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50SW5kZXggPj0gMCk7CisKKyAgICAgICAgY29u
c3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggKyAoZm9yd2FyZCA/IDEgOiAtMSk7CisgICAgICAg
IGlmIChuZXdJbmRleCA8IDAgfHwgbmV3SW5kZXggPj0gcmV2aXNpb25MaXN0Lmxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB0aGlzLm9wZW5OZXdSZXBvc2l0b3J5
KHJldmlzaW9uTGlzdFtuZXdJbmRleF0ucmVwb3NpdG9yeSk7CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAgICAgIEluc3RydW1lbnRhdGlv
bi5zdGFydE1lYXN1cmluZ1RpbWUoJ0NoYXJ0UGFuZScsICdyZW5kZXInKTsKSW5kZXg6IFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1yZXZpc2lvbi1y
YW5nZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UuanMJKG5vbmV4aXN0ZW50KQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXJldmlzaW9u
LXJhbmdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKworY2xhc3MgQ2hhcnRS
ZXZpc2lvblJhbmdlIHsKKworICAgIGNvbnN0cnVjdG9yKGNoYXJ0LCBtZXRyaWMpCisgICAgewor
ICAgICAgICB0aGlzLl9jaGFydCA9IGNoYXJ0OworCisgICAgICAgIGNvbnN0IHRoaXNDbGFzcyA9
IG5ldy50YXJnZXQ7CisgICAgICAgIHRoaXMuX2NvbXB1dGVSZXZpc2lvbkxpc3QgPSBuZXcgTGF6
aWx5RXZhbHVhdGVkRnVuY3Rpb24oKGN1cnJlbnRQb2ludCwgcHJldm9pdXNQb2ludCkgPT4gewor
ICAgICAgICAgICAgcmV0dXJuIHRoaXNDbGFzcy5fY29tcHV0ZVJldmlzaW9uTGlzdChjdXJyZW50
UG9pbnQsIHByZXZvaXVzUG9pbnQpOworICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9jb21w
dXRlUmV2aXNpb25SYW5nZSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigocmVwb3NpdG9y
eSwgY3VycmVudFBvaW50LCBwcmV2aW91c1BvaW50KSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgIHJlcG9zaXRvcnksCisgICAgICAgICAgICAgICAgZnJvbTogdGhp
c0NsYXNzLl9yZXZpc2lvbkZvclBvaW50KHJlcG9zaXRvcnksIHByZXZpb3VzUG9pbnQpLAorICAg
ICAgICAgICAgICAgIHRvOiB0aGlzQ2xhc3MuX3JldmlzaW9uRm9yUG9pbnQocmVwb3NpdG9yeSwg
Y3VycmVudFBvaW50KX07CisgICAgICAgIH0pOworICAgIH0KKworICAgIHJldmlzaW9uTGlzdCgp
CisgICAgeworICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludHMgPSB0aGlzLl9jaGFydC5yZWZl
cmVuY2VQb2ludHMoJ2N1cnJlbnQnKTsKKyAgICAgICAgY29uc3QgY3VycmVudFBvaW50ID0gcmVm
ZXJlbmNlUG9pbnRzID8gcmVmZXJlbmNlUG9pbnRzLmN1cnJlbnRQb2ludCA6IG51bGw7CisgICAg
ICAgIGNvbnN0IHByZXZpb3VzUG9pbnQgPSByZWZlcmVuY2VQb2ludHMgPyByZWZlcmVuY2VQb2lu
dHMucHJldmlvdXNQb2ludCA6IG51bGw7CisgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlUmV2
aXNpb25MaXN0LmV2YWx1YXRlKGN1cnJlbnRQb2ludCwgcHJldmlvdXNQb2ludCk7CisgICAgfQor
CisgICAgcmFuZ2VGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCisgICAgeworICAgICAgICBjb25z
dCByZWZlcmVuY2VQb2ludHMgPSB0aGlzLl9jaGFydC5yZWZlcmVuY2VQb2ludHMoJ2N1cnJlbnQn
KTsKKyAgICAgICAgY29uc3QgY3VycmVudFBvaW50ID0gcmVmZXJlbmNlUG9pbnRzID8gcmVmZXJl
bmNlUG9pbnRzLmN1cnJlbnRQb2ludCA6IG51bGw7CisgICAgICAgIGNvbnN0IHByZXZpb3VzUG9p
bnQgPSByZWZlcmVuY2VQb2ludHMgPyByZWZlcmVuY2VQb2ludHMucHJldmlvdXNQb2ludCA6IG51
bGw7CisgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlUmV2aXNpb25SYW5nZS5ldmFsdWF0ZShy
ZXBvc2l0b3J5LCBjdXJyZW50UG9pbnQsIHByZXZpb3VzUG9pbnQpOworICAgIH0KKworICAgIHN0
YXRpYyBfcmV2aXNpb25Gb3JQb2ludChyZXBvc2l0b3J5LCBwb2ludCkKKyAgICB7CisgICAgICAg
IGlmICghcG9pbnQgfHwgIXJlcG9zaXRvcnkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgICAgY29uc3Qgcm9vdFNldCA9IHBvaW50LnJvb3RTZXQoKTsKKyAgICAgICAgaWYgKCFyb290
U2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGNvbnN0IGNvbW1pdCA9IHJv
b3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgaWYgKCFjb21t
aXQpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuIGNvbW1pdC5yZXZp
c2lvbigpOworICAgIH0KKworICAgIHN0YXRpYyBfY29tcHV0ZVJldmlzaW9uTGlzdChjdXJyZW50
UG9pbnQsIHByZXZpb3VzUG9pbnQpCisgICAgeworICAgICAgICBpZiAoIWN1cnJlbnRQb2ludCkK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGNvbnN0IGN1cnJlbnRSb290U2V0
ID0gY3VycmVudFBvaW50LnJvb3RTZXQoKTsKKyAgICAgICAgY29uc3QgcHJldmlvdXNSb290U2V0
ID0gcHJldmlvdXNQb2ludCA/IHByZXZpb3VzUG9pbnQucm9vdFNldCgpIDogbnVsbDsKKworICAg
ICAgICBjb25zdCByZXBvc2l0b3JpZXNJbkN1cnJlbnRSb290U2V0ID0gUmVwb3NpdG9yeS5zb3J0
QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKGN1cnJlbnRSb290U2V0LnJlcG9zaXRvcmllcygp
KTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25MaXN0ID0gW107CisgICAgICAgIGZvciAobGV0IHJl
cG9zaXRvcnkgb2YgcmVwb3NpdG9yaWVzSW5DdXJyZW50Um9vdFNldCkgeworICAgICAgICAgICAg
bGV0IGN1cnJlbnRDb21taXQgPSBjdXJyZW50Um9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpOworICAgICAgICAgICAgbGV0IHByZXZpb3VzQ29tbWl0ID0gcHJldmlvdXNSb290
U2V0ID8gcHJldmlvdXNSb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgOiBu
dWxsOworICAgICAgICAgICAgcmV2aXNpb25MaXN0LnB1c2goY3VycmVudENvbW1pdC5kaWZmKHBy
ZXZpb3VzQ29tbWl0KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldmlzaW9uTGlzdDsK
KyAgICB9CisKK30KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9jaGFydC1zdGF0dXMtZXZhbHVhdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdGF0dXMtZXZhbHVh
dG9yLmpzCShub25leGlzdGVudCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvY29tcG9uZW50cy9jaGFydC1zdGF0dXMtZXZhbHVhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzkgQEAKKworY2xhc3MgQ2hhcnRTdGF0dXNFdmFsdWF0b3IgeworCisgICAgY29u
c3RydWN0b3IoY2hhcnQsIG1ldHJpYykKKyAgICB7CisgICAgICAgIHRoaXMuX2NoYXJ0ID0gY2hh
cnQ7CisgICAgICAgIHRoaXMuX2NvbXB1dGVTdGF0dXMgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVu
Y3Rpb24oKGN1cnJlbnRQb2ludCwgcHJldmlvdXNQb2ludCwgdmlldykgPT4geworICAgICAgICAg
ICAgaWYgKCFjdXJyZW50UG9pbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAg
ICAgICAgICAgIGNvbnN0IGJhc2VsaW5lVmlldyA9IHRoaXMuX2NoYXJ0LnNhbXBsZWRUaW1lU2Vy
aWVzRGF0YSgnYmFzZWxpbmUnKTsKKyAgICAgICAgICAgIGNvbnN0IHRhcmdldFZpZXcgPSB0aGlz
Ll9jaGFydC5zYW1wbGVkVGltZVNlcmllc0RhdGEoJ3RhcmdldCcpOworICAgICAgICAgICAgcmV0
dXJuIENoYXJ0U3RhdHVzRXZhbHVhdG9yLmNvbXB1dGVDaGFydFN0YXR1cyhtZXRyaWMsIGN1cnJl
bnRQb2ludCwgcHJldmlvdXNQb2ludCwgdmlldywgYmFzZWxpbmVWaWV3LCB0YXJnZXRWaWV3KTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdHVzKCkKKyAgICB7CisgICAgICAgIGNvbnN0
IHJlZmVyZW5jZVBvaW50cyA9IHRoaXMuX2NoYXJ0LnJlZmVyZW5jZVBvaW50cygnY3VycmVudCcp
OworICAgICAgICBjb25zdCBjdXJyZW50UG9pbnQgPSByZWZlcmVuY2VQb2ludHMgPyByZWZlcmVu
Y2VQb2ludHMuY3VycmVudFBvaW50IDogbnVsbDsKKyAgICAgICAgY29uc3QgcHJldmlvdXNQb2lu
dCA9IHJlZmVyZW5jZVBvaW50cyA/IHJlZmVyZW5jZVBvaW50cy5wcmV2aW91c1BvaW50IDogbnVs
bDsKKyAgICAgICAgY29uc3QgdmlldyA9IHJlZmVyZW5jZVBvaW50cyA/IHJlZmVyZW5jZVBvaW50
cy52aWV3IDogbnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVTdGF0dXMuZXZhbHVh
dGUoY3VycmVudFBvaW50LCBwcmV2aW91c1BvaW50LCB2aWV3KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgY29tcHV0ZUNoYXJ0U3RhdHVzKG1ldHJpYywgY3VycmVudFBvaW50LCBwcmV2aW91c1BvaW50
LCBjdXJyZW50VmlldywgYmFzZWxpbmVWaWV3LCB0YXJnZXRWaWV3KQorICAgIHsKKyAgICAgICAg
Y29uc3QgZm9ybWF0dGVyID0gbWV0cmljLm1ha2VGb3JtYXR0ZXIoMyk7CisgICAgICAgIGNvbnN0
IGRlbHRhRm9ybWF0dGVyID0gbWV0cmljLm1ha2VGb3JtYXR0ZXIoMiwgdHJ1ZSk7CisgICAgICAg
IGNvbnN0IHNtYWxsZXJJc0JldHRlciA9IG1ldHJpYy5pc1NtYWxsZXJCZXR0ZXIoKTsKKworICAg
ICAgICBjb25zdCBsYWJlbEZvckRpZmYgPSAoZGlmZiwgcmVmZXJlbmNlUG9pbnQsIG5hbWUsIGNv
bXBhcmlzb24pID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlbGF0aXZlRGlmZiA9IE1hdGguYWJz
KGRpZmYgKiAxMDApLnRvRml4ZWQoMSk7CisgICAgICAgICAgICBjb25zdCByZWZlcmVuY2VWYWx1
ZSA9IHJlZmVyZW5jZVBvaW50ID8gYCAoJHtmb3JtYXR0ZXIocmVmZXJlbmNlUG9pbnQudmFsdWUp
fSlgIDogJyc7CisgICAgICAgICAgICBpZiAoY29tcGFyaXNvbiAhPSAndW50aWwnKQorICAgICAg
ICAgICAgICAgIGNvbXBhcmlzb24gKz0gJyB0aGFuJzsKKyAgICAgICAgICAgIHJldHVybiBgJHty
ZWxhdGl2ZURpZmZ9JSAke2NvbXBhcmlzb259ICR7bmFtZX0ke3JlZmVyZW5jZVZhbHVlfWA7Cisg
ICAgICAgIH0KKworICAgICAgICBjb25zdCBwb2ludElzSW5DdXJyZW50U2VyaWVzID0gYmFzZWxp
bmVWaWV3ICE9IGN1cnJlbnRWaWV3ICYmIHRhcmdldFZpZXcgIT0gY3VycmVudFZpZXc7CisKKyAg
ICAgICAgY29uc3QgYmFzZWxpbmVQb2ludCA9IHBvaW50SXNJbkN1cnJlbnRTZXJpZXMgJiYgYmFz
ZWxpbmVWaWV3ID8gYmFzZWxpbmVWaWV3Lmxhc3RQb2ludEluVGltZVJhbmdlKDAsIGN1cnJlbnRQ
b2ludC50aW1lKSA6IG51bGw7CisgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gcG9pbnRJc0lu
Q3VycmVudFNlcmllcyAmJiB0YXJnZXRWaWV3ID8gdGFyZ2V0Vmlldy5sYXN0UG9pbnRJblRpbWVS
YW5nZSgwLCBjdXJyZW50UG9pbnQudGltZSkgOiBudWxsOworCisgICAgICAgIGNvbnN0IGRpZmZG
cm9tQmFzZWxpbmUgPSBiYXNlbGluZVBvaW50ID8gKGN1cnJlbnRQb2ludC52YWx1ZSAtIGJhc2Vs
aW5lUG9pbnQudmFsdWUpIC8gYmFzZWxpbmVQb2ludC52YWx1ZSA6IHVuZGVmaW5lZDsKKyAgICAg
ICAgY29uc3QgZGlmZkZyb21UYXJnZXQgPSB0YXJnZXRQb2ludCA/IChjdXJyZW50UG9pbnQudmFs
dWUgLSB0YXJnZXRQb2ludC52YWx1ZSkgLyB0YXJnZXRQb2ludC52YWx1ZSA6IHVuZGVmaW5lZDsK
KworICAgICAgICBsZXQgbGFiZWwgPSBudWxsOworICAgICAgICBsZXQgY29tcGFyaXNvbiA9IG51
bGw7CisKKyAgICAgICAgaWYgKGRpZmZGcm9tQmFzZWxpbmUgIT09IHVuZGVmaW5lZCAmJiBkaWZm
RnJvbVRhcmdldCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBpZiAoZGlmZkZyb21CYXNl
bGluZSA+IDAgPT0gc21hbGxlcklzQmV0dGVyKSB7CisgICAgICAgICAgICAgICAgY29tcGFyaXNv
biA9ICd3b3JzZSc7CisgICAgICAgICAgICAgICAgbGFiZWwgPSBsYWJlbEZvckRpZmYoZGlmZkZy
b21CYXNlbGluZSwgYmFzZWxpbmVQb2ludCwgJ2Jhc2VsaW5lJywgY29tcGFyaXNvbik7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGRpZmZGcm9tVGFyZ2V0IDwgMCA9PSBzbWFsbGVySXNCZXR0ZXIp
IHsKKyAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gJ2JldHRlcic7CisgICAgICAgICAgICAg
ICAgbGFiZWwgPSBsYWJlbEZvckRpZmYoZGlmZkZyb21UYXJnZXQsIHRhcmdldFBvaW50LCAndGFy
Z2V0JywgY29tcGFyaXNvbik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBs
YWJlbCA9IGxhYmVsRm9yRGlmZihkaWZmRnJvbVRhcmdldCwgdGFyZ2V0UG9pbnQsICd0YXJnZXQn
LCAndW50aWwnKTsKKyAgICAgICAgfSBlbHNlIGlmIChkaWZmRnJvbUJhc2VsaW5lICE9PSB1bmRl
ZmluZWQpIHsKKyAgICAgICAgICAgIGNvbXBhcmlzb24gPSBkaWZmRnJvbUJhc2VsaW5lID4gMCA9
PSBzbWFsbGVySXNCZXR0ZXIgPyAnd29yc2UnIDogJ2JldHRlcic7CisgICAgICAgICAgICBsYWJl
bCA9IGxhYmVsRm9yRGlmZihkaWZmRnJvbUJhc2VsaW5lLCBiYXNlbGluZVBvaW50LCAnYmFzZWxp
bmUnLCBjb21wYXJpc29uKTsKKyAgICAgICAgfSBlbHNlIGlmIChkaWZmRnJvbVRhcmdldCAhPT0g
dW5kZWZpbmVkKSB7CisgICAgICAgICAgICBjb21wYXJpc29uID0gZGlmZkZyb21UYXJnZXQgPCAw
ID09IHNtYWxsZXJJc0JldHRlciA/ICdiZXR0ZXInIDogJ3dvcnNlJzsKKyAgICAgICAgICAgIGxh
YmVsID0gbGFiZWxGb3JEaWZmKGRpZmZGcm9tVGFyZ2V0LCB0YXJnZXRQb2ludCwgJ3RhcmdldCcs
ICd1bnRpbCcpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHZhbHVlRGVsdGEgPSBudWxsOwor
ICAgICAgICBsZXQgcmVsYXRpdmVEZWx0YSA9IG51bGw7CisgICAgICAgIGlmIChwcmV2aW91c1Bv
aW50KSB7CisgICAgICAgICAgICB2YWx1ZURlbHRhID0gZGVsdGFGb3JtYXR0ZXIoY3VycmVudFBv
aW50LnZhbHVlIC0gcHJldmlvdXNQb2ludC52YWx1ZSk7CisgICAgICAgICAgICByZWxhdGl2ZURl
bHRhID0gKGN1cnJlbnRQb2ludC52YWx1ZSAtIHByZXZpb3VzUG9pbnQudmFsdWUpIC8gcHJldmlv
dXNQb2ludC52YWx1ZTsKKyAgICAgICAgICAgIHJlbGF0aXZlRGVsdGEgPSAocmVsYXRpdmVEZWx0
YSAqIDEwMCkudG9GaXhlZCgwKSArICclJzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB7
Y29tcGFyaXNvbiwgbGFiZWwsIGN1cnJlbnRWYWx1ZTogZm9ybWF0dGVyKGN1cnJlbnRQb2ludC52
YWx1ZSksIHZhbHVlRGVsdGEsIHJlbGF0aXZlRGVsdGF9OworICAgIH0KKworfQpJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXN0YXR1cy12
aWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9jaGFydC1zdGF0dXMtdmlldy5qcwkocmV2aXNpb24gMjEzMjYyKQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXN0YXR1cy12
aWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsMTgxICswLDAgQEAKLQotY2xhc3MgQ2hhcnRTdGF0
dXNWaWV3IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7Ci0KLSAgICBjb25zdHJ1Y3RvcihtZXRyaWMs
IGNoYXJ0KQotICAgIHsKLSAgICAgICAgc3VwZXIoJ2NoYXJ0LXN0YXR1cycpOwotICAgICAgICB0
aGlzLl9tZXRyaWMgPSBtZXRyaWM7Ci0gICAgICAgIHRoaXMuX2NoYXJ0ID0gY2hhcnQ7Ci0KLSAg
ICAgICAgdGhpcy5fdXNlZFNlbGVjdGlvbiA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3VzZWRDdXJy
ZW50UG9pbnQgPSBudWxsOwotICAgICAgICB0aGlzLl91c2VkUHJldmlvdXNQb2ludCA9IG51bGw7
Ci0KLSAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gbnVsbDsKLSAgICAgICAgdGhpcy5fY29t
cGFyaXNvbkNsYXNzID0gbnVsbDsKLSAgICAgICAgdGhpcy5fY29tcGFyaXNvbkxhYmVsID0gbnVs
bDsKLQotICAgICAgICB0aGlzLl9yZW5kZXJlZEN1cnJlbnRWYWx1ZSA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX3JlbmRlcmVkQ29tcGFyaXNvbkNsYXNzID0gbnVsbDsKLSAgICAgICAgdGhpcy5fcmVu
ZGVyZWRDb21wYXJpc29uTGFiZWwgPSBudWxsOwotICAgIH0KLQotICAgIHJlbmRlcigpCi0gICAg
ewotICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1c0lmTmVlZGVkKCk7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX3JlbmRlcmVkQ3VycmVudFZhbHVlID09IHRoaXMuX2N1cnJlbnRWYWx1ZQotICAgICAgICAg
ICAgJiYgdGhpcy5fcmVuZGVyZWRDb21wYXJpc29uQ2xhc3MgPT0gdGhpcy5fY29tcGFyaXNvbkNs
YXNzCi0gICAgICAgICAgICAmJiB0aGlzLl9yZW5kZXJlZENvbXBhcmlzb25MYWJlbCA9PSB0aGlz
Ll9jb21wYXJpc29uTGFiZWwpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5f
cmVuZGVyZWRDdXJyZW50VmFsdWUgPSB0aGlzLl9jdXJyZW50VmFsdWU7Ci0gICAgICAgIHRoaXMu
X3JlbmRlcmVkQ29tcGFyaXNvbkNsYXNzID0gdGhpcy5fY29tcGFyaXNvbkNsYXNzOwotICAgICAg
ICB0aGlzLl9yZW5kZXJlZENvbXBhcmlzb25MYWJlbCA9IHRoaXMuX2NvbXBhcmlzb25MYWJlbDsK
LQotICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtc3RhdHVzLWN1
cnJlbnQtdmFsdWUnKS50ZXh0Q29udGVudCA9IHRoaXMuX2N1cnJlbnRWYWx1ZSB8fCAnJzsKLSAg
ICAgICAgdmFyIGNvbXBhcmlzb24gPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hh
cnQtc3RhdHVzLWNvbXBhcmlzb24nKTsKLSAgICAgICAgY29tcGFyaXNvbi5jbGFzc05hbWUgPSAn
Y2hhcnQtc3RhdHVzLWNvbXBhcmlzb24gJyArICh0aGlzLl9jb21wYXJpc29uQ2xhc3MgfHwgJycp
OwotICAgICAgICBjb21wYXJpc29uLnRleHRDb250ZW50ID0gdGhpcy5fY29tcGFyaXNvbkxhYmVs
OwotICAgIH0KLQotICAgIHVwZGF0ZVN0YXR1c0lmTmVlZGVkKCkKLSAgICB7Ci0gICAgICAgIHZh
ciBjdXJyZW50UG9pbnQ7Ci0gICAgICAgIHZhciBwcmV2aW91c1BvaW50OwotCi0gICAgICAgIGlm
ICh0aGlzLl9jaGFydCBpbnN0YW5jZW9mIEludGVyYWN0aXZlVGltZVNlcmllc0NoYXJ0KSB7Ci0g
ICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fY2hhcnQuY3VycmVudFNlbGVjdGlvbigp
OwotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiB0aGlzLl91c2VkU2VsZWN0aW9uID09IHNl
bGVjdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlm
IChzZWxlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5fY2hhcnQu
c2VsZWN0ZWRQb2ludHMoJ2N1cnJlbnQnKTsKLSAgICAgICAgICAgICAgICBpZiAoIXZpZXcpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIGlmICh2
aWV3ICYmIHZpZXcubGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Vz
ZWRTZWxlY3Rpb24gPSBzZWxlY3Rpb247Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb2lu
dCA9IHZpZXcubGFzdFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnQg
PSB2aWV3LmZpcnN0UG9pbnQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2F0b3IgPSB0aGlzLl9jaGFydC5jdXJy
ZW50SW5kaWNhdG9yKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGluZGljYXRvcikgewotICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50UG9pbnQgPSBpbmRpY2F0b3IucG9pbnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzUG9pbnQgPSBpbmRpY2F0b3Iudmlldy5wcmV2aW91c1BvaW50KGN1
cnJlbnRQb2ludCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9jaGFydC5zYW1wbGVkVGltZVNl
cmllc0RhdGEoJ2N1cnJlbnQnKTsKLSAgICAgICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGgoKSkKLSAgICAg
ICAgICAgICAgICBjdXJyZW50UG9pbnQgPSBkYXRhLmxhc3RQb2ludCgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGN1cnJlbnRQb2ludCA9PSB0aGlzLl91c2VkQ3VycmVudFBvaW50ICYmIHBy
ZXZpb3VzUG9pbnQgPT0gdGhpcy5fdXNlZFByZXZpb3VzUG9pbnQpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fdXNlZEN1cnJlbnRQb2ludCA9IGN1cnJlbnRQb2lu
dDsKLSAgICAgICAgdGhpcy5fdXNlZFByZXZpb3VzUG9pbnQgPSBwcmV2aW91c1BvaW50OwotCi0g
ICAgICAgIHRoaXMuY29tcHV0ZUNoYXJ0U3RhdHVzTGFiZWxzKGN1cnJlbnRQb2ludCwgcHJldmlv
dXNQb2ludCk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgY29tcHV0ZUNo
YXJ0U3RhdHVzTGFiZWxzKGN1cnJlbnRQb2ludCwgcHJldmlvdXNQb2ludCkKLSAgICB7Ci0gICAg
ICAgIHZhciBzdGF0dXMgPSBjdXJyZW50UG9pbnQgPyB0aGlzLl9jb21wdXRlQ2hhcnRTdGF0dXMo
dGhpcy5fbWV0cmljLCB0aGlzLl9jaGFydCwgY3VycmVudFBvaW50LCBwcmV2aW91c1BvaW50KSA6
IG51bGw7Ci0gICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRW
YWx1ZSA9IHN0YXR1cy5jdXJyZW50VmFsdWU7Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNQb2lu
dCkKLSAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgKz0gYCAoJHtzdGF0dXMudmFs
dWVEZWx0YX0gLyAke3N0YXR1cy5yZWxhdGl2ZURlbHRhfSlgOwotICAgICAgICAgICAgdGhpcy5f
Y29tcGFyaXNvbkNsYXNzID0gc3RhdHVzLmNsYXNzTmFtZTsKLSAgICAgICAgICAgIHRoaXMuX2Nv
bXBhcmlzb25MYWJlbCA9IHN0YXR1cy5sYWJlbDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IG51bGw7Ci0gICAgICAgICAgICB0aGlzLl9jb21wYXJp
c29uQ2xhc3MgPSBudWxsOwotICAgICAgICAgICAgdGhpcy5fY29tcGFyaXNvbkxhYmVsID0gbnVs
bDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF9jb21wdXRlQ2hhcnRTdGF0dXMobWV0cmljLCBj
aGFydCwgY3VycmVudFBvaW50LCBwcmV2aW91c1BvaW50KQotICAgIHsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoY3VycmVudFBvaW50KTsKLSAgICAgICAgY29uc3QgYmFzZWxpbmVWaWV3ID0gY2hh
cnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCdiYXNlbGluZScpOwotICAgICAgICBjb25zdCB0YXJn
ZXRWaWV3ID0gY2hhcnQuc2FtcGxlZFRpbWVTZXJpZXNEYXRhKCd0YXJnZXQnKTsKLQotICAgICAg
ICBjb25zdCBmb3JtYXR0ZXIgPSBtZXRyaWMubWFrZUZvcm1hdHRlcigzKTsKLSAgICAgICAgY29u
c3QgZGVsdGFGb3JtYXR0ZXIgPSBtZXRyaWMubWFrZUZvcm1hdHRlcigyLCB0cnVlKTsKLSAgICAg
ICAgY29uc3Qgc21hbGxlcklzQmV0dGVyID0gbWV0cmljLmlzU21hbGxlckJldHRlcigpOwotCi0g
ICAgICAgIGNvbnN0IGxhYmVsRm9yRGlmZiA9IChkaWZmLCByZWZlcmVuY2VQb2ludCwgbmFtZSwg
Y29tcGFyaXNvbikgPT4gewotICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVEaWZmID0gTWF0aC5h
YnMoZGlmZiAqIDEwMCkudG9GaXhlZCgxKTsKLSAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZVZh
bHVlID0gcmVmZXJlbmNlUG9pbnQgPyBgICgke2Zvcm1hdHRlcihyZWZlcmVuY2VQb2ludC52YWx1
ZSl9KWAgOiAnJzsKLSAgICAgICAgICAgIHJldHVybiBgJHtyZWxhdGl2ZURpZmZ9JSAke2NvbXBh
cmlzb259IHRoYW4gJHtuYW1lfSR7cmVmZXJlbmNlVmFsdWV9YDsKLSAgICAgICAgfTsKLQotICAg
ICAgICBjb25zdCBiYXNlbGluZVBvaW50ID0gYmFzZWxpbmVWaWV3ID8gYmFzZWxpbmVWaWV3Lmxh
c3RQb2ludEluVGltZVJhbmdlKDAsIGN1cnJlbnRQb2ludC50aW1lKSA6IG51bGw7Ci0gICAgICAg
IGNvbnN0IHRhcmdldFBvaW50ID0gdGFyZ2V0VmlldyA/IHRhcmdldFZpZXcubGFzdFBvaW50SW5U
aW1lUmFuZ2UoMCwgY3VycmVudFBvaW50LnRpbWUpIDogbnVsbDsKLQotICAgICAgICBjb25zdCBk
aWZmRnJvbUJhc2VsaW5lID0gYmFzZWxpbmVQb2ludCA/IChjdXJyZW50UG9pbnQudmFsdWUgLSBi
YXNlbGluZVBvaW50LnZhbHVlKSAvIGJhc2VsaW5lUG9pbnQudmFsdWUgOiB1bmRlZmluZWQ7Ci0g
ICAgICAgIGNvbnN0IGRpZmZGcm9tVGFyZ2V0ID0gdGFyZ2V0UG9pbnQgPyAoY3VycmVudFBvaW50
LnZhbHVlIC0gdGFyZ2V0UG9pbnQudmFsdWUpIC8gdGFyZ2V0UG9pbnQudmFsdWUgOiB1bmRlZmlu
ZWQ7Ci0KLSAgICAgICAgbGV0IGxhYmVsID0gbnVsbDsKLSAgICAgICAgbGV0IGNvbXBhcmlzb24g
PSBudWxsOwotCi0gICAgICAgIGlmIChkaWZmRnJvbUJhc2VsaW5lICE9PSB1bmRlZmluZWQgJiYg
ZGlmZkZyb21UYXJnZXQgIT09IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgaWYgKGRpZmZGcm9t
QmFzZWxpbmUgPiAwID09IHNtYWxsZXJJc0JldHRlcikgewotICAgICAgICAgICAgICAgIGNvbXBh
cmlzb24gPSAnd29yc2UnOwotICAgICAgICAgICAgICAgIGxhYmVsID0gbGFiZWxGb3JEaWZmKGRp
ZmZGcm9tQmFzZWxpbmUsIGJhc2VsaW5lUG9pbnQsICdiYXNlbGluZScsIGNvbXBhcmlzb24pOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmRnJvbVRhcmdldCA8IDAgPT0gc21hbGxlcklzQmV0
dGVyKSB7Ci0gICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9ICdiZXR0ZXInOwotICAgICAgICAg
ICAgICAgIGxhYmVsID0gbGFiZWxGb3JEaWZmKGRpZmZGcm9tVGFyZ2V0LCB0YXJnZXRQb2ludCwg
J3RhcmdldCcsIGNvbXBhcmlzb24pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgbGFiZWwgPSBsYWJlbEZvckRpZmYoZGlmZkZyb21UYXJnZXQsIHRhcmdldFBvaW50LCAndGFy
Z2V0JywgJ3VudGlsJyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZGlmZkZyb21CYXNlbGluZSAhPT0g
dW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICBjb21wYXJpc29uID0gZGlmZkZyb21CYXNlbGluZSA+
IDAgPT0gc21hbGxlcklzQmV0dGVyID8gJ3dvcnNlJyA6ICdiZXR0ZXInOwotICAgICAgICAgICAg
bGFiZWwgPSBsYWJlbEZvckRpZmYoZGlmZkZyb21CYXNlbGluZSwgYmFzZWxpbmVQb2ludCwgJ2Jh
c2VsaW5lJywgY29tcGFyaXNvbik7Ci0gICAgICAgIH0gZWxzZSBpZiAoZGlmZkZyb21UYXJnZXQg
IT09IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgY29tcGFyaXNvbiA9IGRpZmZGcm9tVGFyZ2V0
IDwgMCA9PSBzbWFsbGVySXNCZXR0ZXIgPyAnYmV0dGVyJyA6ICd3b3JzZSc7Ci0gICAgICAgICAg
ICBsYWJlbCA9IGxhYmVsRm9yRGlmZihkaWZmRnJvbVRhcmdldCwgdGFyZ2V0UG9pbnQsICd0YXJn
ZXQnLCBjb21wYXJpc29uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCB2YWx1ZURlbHRhID0g
bnVsbDsKLSAgICAgICAgbGV0IHJlbGF0aXZlRGVsdGEgPSBudWxsOwotICAgICAgICBpZiAocHJl
dmlvdXNQb2ludCkgewotICAgICAgICAgICAgdmFsdWVEZWx0YSA9IGRlbHRhRm9ybWF0dGVyKGN1
cnJlbnRQb2ludC52YWx1ZSAtIHByZXZpb3VzUG9pbnQudmFsdWUpOwotICAgICAgICAgICAgcmVs
YXRpdmVEZWx0YSA9IChjdXJyZW50UG9pbnQudmFsdWUgLSBwcmV2aW91c1BvaW50LnZhbHVlKSAv
IHByZXZpb3VzUG9pbnQudmFsdWU7Ci0gICAgICAgICAgICByZWxhdGl2ZURlbHRhID0gKHJlbGF0
aXZlRGVsdGEgKiAxMDApLnRvRml4ZWQoMCkgKyAnJSc7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4ge2NsYXNzTmFtZTogY29tcGFyaXNvbiwgbGFiZWwsIGN1cnJlbnRWYWx1ZTogZm9ybWF0
dGVyKGN1cnJlbnRQb2ludC52YWx1ZSksIHZhbHVlRGVsdGEsIHJlbGF0aXZlRGVsdGF9OwotICAg
IH0KLQotICAgIHN0YXRpYyBodG1sVGVtcGxhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGAK
LSAgICAgICAgICAgIDxkaXY+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXJ0LXN0
YXR1cy1jdXJyZW50LXZhbHVlIj48L3NwYW4+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9
ImNoYXJ0LXN0YXR1cy1jb21wYXJpc29uIj48L3NwYW4+Ci0gICAgICAgICAgICA8L2Rpdj5gOwot
ICAgIH0KLQotICAgIHN0YXRpYyBjc3NUZW1wbGF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YAotICAgICAgICAgICAgLmNoYXJ0LXN0YXR1cy1jdXJyZW50LXZhbHVlIHsKLSAgICAgICAgICAg
ICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC5jaGFydC1zdGF0dXMtY29tcGFyaXNvbi53b3JzZSB7Ci0gICAgICAgICAgICAgICAgY29sb3I6
ICNjMzM7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC5jaGFydC1zdGF0dXMtY29tcGFy
aXNvbi5iZXR0ZXIgewotICAgICAgICAgICAgICAgIGNvbG9yOiAjMzNjOwotICAgICAgICAgICAg
fWA7Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdHlsZXMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRz
L2NoYXJ0LXN0eWxlcy5qcwkocmV2aXNpb24gMjEzMjYyKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXN0eWxlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBDaGFydFN0eWxlcyB7CiAgICAgICAgICAgICBiYWNr
Z3JvdW5kSW50ZXJ2YWxTdHlsZTogJ3JnYmEoMjU1LCAxNTMsIDE1MywgMC4xKScsCiAgICAgICAg
ICAgICBiYWNrZ3JvdW5kUG9pbnRTdHlsZTogJyNmOTknLAogICAgICAgICAgICAgYmFja2dyb3Vu
ZExpbmVTdHlsZTogJyNmY2MnLAorICAgICAgICAgICAgaW50ZXJhY3RpdmU6IHRydWUsCiAgICAg
ICAgIH07CiAgICAgfQogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2NvbXBvbmVudHMvZGFzaGJvYXJkLWNoYXJ0LXN0YXR1cy12aWV3LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9kYXNoYm9hcmQt
Y2hhcnQtc3RhdHVzLXZpZXcuanMJKG5vbmV4aXN0ZW50KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2Rhc2hib2FyZC1jaGFydC1zdGF0dXMtdmlldy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisKK2NsYXNzIERhc2hib2FyZENoYXJ0
U3RhdHVzVmlldyBleHRlbmRzIENvbXBvbmVudEJhc2UgeworCisgICAgY29uc3RydWN0b3IobWV0
cmljLCBjaGFydCkKKyAgICB7CisgICAgICAgIHN1cGVyKCdjaGFydC1zdGF0dXMtdmlldycpOwor
ICAgICAgICB0aGlzLl9zdGF0dXNFdmFsdWF0b3IgPSBuZXcgQ2hhcnRTdGF0dXNFdmFsdWF0b3Io
Y2hhcnQsIG1ldHJpYyk7CisgICAgICAgIHRoaXMuX3JlbmRlckxhemlseSA9IG5ldyBMYXppbHlF
dmFsdWF0ZWRGdW5jdGlvbigoc3RhdHVzKSA9PiB7CisgICAgICAgICAgICBzdGF0dXMgPSBzdGF0
dXMgfHwge307CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ2N1cnJlbnQtdmFsdWUnKS50ZXh0
Q29udGVudCA9IHN0YXR1cy5jdXJyZW50VmFsdWUgfHwgJyc7CisgICAgICAgICAgICB0aGlzLmNv
bnRlbnQoJ2NvbXBhcmlzb24nKS50ZXh0Q29udGVudCA9IHN0YXR1cy5sYWJlbCB8fCAnJzsKKyAg
ICAgICAgICAgIHRoaXMuY29udGVudCgnY29tcGFyaXNvbicpLmNsYXNzTmFtZSA9IHN0YXR1cy5j
b21wYXJpc29uIHx8ICcnOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICByZW5kZXIoKQorICAg
IHsKKyAgICAgICAgdGhpcy5fcmVuZGVyTGF6aWx5LmV2YWx1YXRlKHRoaXMuX3N0YXR1c0V2YWx1
YXRvci5zdGF0dXMoKSk7CisgICAgfQorCisgICAgc3RhdGljIGh0bWxUZW1wbGF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYDxzcGFuIGlkPSJjdXJyZW50LXZhbHVlIj48L3NwYW4+IDxzcGFu
IGlkPSJjb21wYXJpc29uIj48L3NwYW4+YDsKKyAgICB9CisKKyAgICBzdGF0aWMgY3NzVGVtcGxh
dGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGAKKyAgICAgICAgICAgIDpob3N0IHsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
I2NvbXBhcmlzb24geworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAjY29tcGFyaXNvbi53b3JzZSB7CisgICAgICAgICAg
ICAgICAgY29sb3I6ICNjMzM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNjb21wYXJp
c29uLmJldHRlciB7CisgICAgICAgICAgICAgICAgY29sb3I6ICMzM2M7CisgICAgICAgICAgICB9
YDsKKyAgICB9Cit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ludGVyYWN0aXZl
LXRpbWUtc2VyaWVzLWNoYXJ0LmpzCShyZXZpc2lvbiAyMTMyNjIpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMt
Y2hhcnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDI3IEBAIGNsYXNzIEludGVyYWN0
aXZlVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbiAmJiBk
YXRhID8gZGF0YS5maXJzdFBvaW50SW5UaW1lUmFuZ2Uoc2VsZWN0aW9uWzBdLCBzZWxlY3Rpb25b
MV0pIDogbnVsbDsKICAgICB9CiAKKyAgICByZWZlcmVuY2VQb2ludHModHlwZSkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuY3VycmVudFNlbGVjdGlvbigpOworICAgICAg
ICBpZiAoc2VsZWN0aW9uKSB7CisgICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5zZWxlY3Rl
ZFBvaW50cygnY3VycmVudCcpOworICAgICAgICAgICAgaWYgKCF2aWV3KQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgY29uc3QgZmlyc3RQb2ludCA9IHZpZXcubGFz
dFBvaW50KCk7CisgICAgICAgICAgICBjb25zdCBsYXN0UG9pbnQgPSB2aWV3LmZpcnN0UG9pbnQo
KTsKKyAgICAgICAgICAgIGlmICghZmlyc3RQb2ludCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgICAgIHJldHVybiB7dmlldywgY3VycmVudFBvaW50OiBmaXJzdFBvaW50
LCBwcmV2aW91c1BvaW50OiBmaXJzdFBvaW50ICE9IGxhc3RQb2ludCA/IGxhc3RQb2ludCA6IG51
bGx9OworICAgICAgICB9IGVsc2UgIHsKKyAgICAgICAgICAgIGNvbnN0IGluZGljYXRvciA9IHRo
aXMuY3VycmVudEluZGljYXRvcigpOworICAgICAgICAgICAgaWYgKCFpbmRpY2F0b3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICByZXR1cm4ge3ZpZXc6IGluZGlj
YXRvci52aWV3LCBjdXJyZW50UG9pbnQ6IGluZGljYXRvci5wb2ludCwgcHJldmlvdXNQb2ludDog
aW5kaWNhdG9yLnZpZXcucHJldmlvdXNQb2ludChpbmRpY2F0b3IucG9pbnQpfTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKICAgICBzZXRJbmRpY2F0b3IoaWQsIHNo
b3VsZExvY2spCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0aW9uRGlkQ2hhbmdlID0gISF0aGlz
Ll9zYW1wbGVkVGltZVNlcmllc0RhdGE7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVz
LWNoYXJ0LmpzCShyZXZpc2lvbiAyMTMyNjIpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEzMSw2ICsxMzEsMTcgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29tcG9u
ZW50QgogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKKyAgICByZWZlcmVuY2VQb2ludHMo
dHlwZSkKKyAgICB7CisgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnNhbXBsZWRUaW1lU2VyaWVz
RGF0YSh0eXBlKTsKKyAgICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLl9zdGFydFRpbWUgfHwgIXRo
aXMuX2VuZFRpbWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgY29uc3QgcG9p
bnQgPSB2aWV3Lmxhc3RQb2ludEluVGltZVJhbmdlKHRoaXMuX3N0YXJ0VGltZSwgdGhpcy5fZW5k
VGltZSk7CisgICAgICAgIGlmICghcG9pbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgICAgcmV0dXJuIHt2aWV3LCBjdXJyZW50UG9pbnQ6IHBvaW50LCBwcmV2aW91c1BvaW50OiBu
dWxsfTsKKyAgICB9CisKICAgICBzZXRBbm5vdGF0aW9ucyhhbm5vdGF0aW9ucykKICAgICB7CiAg
ICAgICAgIHRoaXMuX2Fubm90YXRpb25zID0gYW5ub3RhdGlvbnM7CkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtbG9nLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cu
anMJKHJldmlzaW9uIDIxMzI2MikKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL2NvbW1pdC1sb2cuanMJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAg
Y2xhc3MgQ29tbWl0TG9nIGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IAogICAgICAgICB2YXIgZnJv
bSA9IHByZXZpb3VzQ29tbWl0LnJldmlzaW9uKCk7CiAgICAgICAgIHZhciBsYWJlbCA9IG51bGw7
CiAgICAgICAgIGlmIChwYXJzZUludCh0bykgPT0gdG8pIHsgLy8gZS5nLiByMTIzNDUuCi0gICAg
ICAgICAgICBmcm9tID0gcGFyc2VJbnQoZnJvbSkgKyAxOworICAgICAgICAgICAgZnJvbSA9IChw
YXJzZUludChmcm9tKSArIDEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBsYWJlbCA9IGByJHtm
cm9tfS1yJHt0aGlzLnJldmlzaW9uKCl9YDsKICAgICAgICAgfSBlbHNlIGlmICh0by5sZW5ndGgg
PT0gNDApIHsgLy8gZS5nLiBnaXQgaGFzaAogICAgICAgICAgICAgbGFiZWwgPSBgJHtmcm9tLnN1
YnN0cmluZygwLCA4KX0uLiR7dG8uc3Vic3RyaW5nKDAsIDgpfWA7CkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZXRyaWMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCShyZXZp
c2lvbiAyMTMyNjIpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9tZXRyaWMuanMJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCwxOSBAQCBjbGFzcyBNZXRyaWMg
ZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgb2JqZWN0LnRlc3QuYWRkTWV0cmljKHRo
aXMpOwogICAgICAgICB0aGlzLl90ZXN0ID0gb2JqZWN0LnRlc3Q7CiAgICAgICAgIHRoaXMuX3Bs
YXRmb3JtcyA9IFtdOworCisgICAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMubmFtZSgpLm1hdGNo
KCcoW0Etel1bYS16XSt8RnJhbWVSYXRlKSQnKVswXTsKKyAgICAgICAgdGhpcy5fdW5pdCA9IHsK
KyAgICAgICAgICAgICdGcmFtZVJhdGUnOiAnZnBzJywKKyAgICAgICAgICAgICdSdW5zJzogJy9z
JywKKyAgICAgICAgICAgICdUaW1lJzogJ21zJywKKyAgICAgICAgICAgICdEdXJhdGlvbic6ICdt
cycsCisgICAgICAgICAgICAnTWFsbG9jJzogJ0InLAorICAgICAgICAgICAgJ0hlYXAnOiAnQics
CisgICAgICAgICAgICAnQWxsb2NhdGlvbnMnOiAnQicsCisgICAgICAgICAgICAnU2l6ZSc6ICdC
JywKKyAgICAgICAgICAgICdTY29yZSc6ICdwdCcsCisgICAgICAgIH1bc3VmZml4XTsKICAgICB9
CiAKICAgICBhZ2dyZWdhdG9yTmFtZSgpIHsgcmV0dXJuIHRoaXMuX2FnZ3JlZ2F0b3JOYW1lOyB9
CkBAIC01Nyw4ICs3MCwxMyBAQCBjbGFzcyBNZXRyaWMgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsK
ICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSgpICsgc3VmZml4OwogICAgIH0KIAotICAgIHVuaXQo
KSB7IHJldHVybiBSdW5zRGF0YS51bml0RnJvbU1ldHJpY05hbWUodGhpcy5uYW1lKCkpOyB9Ci0g
ICAgaXNTbWFsbGVyQmV0dGVyKCkgeyByZXR1cm4gUnVuc0RhdGEuaXNTbWFsbGVyQmV0dGVyKHRo
aXMudW5pdCgpKTsgfQorICAgIHVuaXQoKSB7IHJldHVybiB0aGlzLl91bml0OyB9CisKKyAgICBp
c1NtYWxsZXJCZXR0ZXIoKQorICAgIHsKKyAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuX3VuaXQ7
CisgICAgICAgIHJldHVybiB1bml0ICE9ICdmcHMnICYmIHVuaXQgIT0gJy9zJyAmJiB1bml0ICE9
ICdwdCc7CisgICAgfQogCiAgICAgbWFrZUZvcm1hdHRlcihzaWdGaWcsIGFsd2F5c1Nob3dTaWdu
KSB7IHJldHVybiBNZXRyaWMubWFrZUZvcm1hdHRlcih0aGlzLnVuaXQoKSwgc2lnRmlnLCBhbHdh
eXNTaG93U2lnbik7IH0KIApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJKHJldmlz
aW9uIDIxMzI2MikKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMv
YW5hbHlzaXMtdGFzay1wYWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxMiArMTYsNiBAQCBj
bGFzcyBBbmFseXNpc1Rhc2tDaGFydFBhbmUgZXh0ZW5kcyBDaGFyCiAgICAgICAgICAgICB0aGlz
Ll9wYWdlLl9jaGFydFNlbGVjdGlvbkRpZENoYW5nZSgpOwogICAgIH0KIAotICAgIF91cGRhdGVT
dGF0dXMoKQotICAgIHsKLSAgICAgICAgc3VwZXIuX3VwZGF0ZVN0YXR1cygpOwotICAgICAgICB0
aGlzLl9wYWdlLmVucXVldWVUb1JlbmRlcigpOwotICAgIH0KLQogICAgIHNlbGVjdGVkUG9pbnRz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYWluQ2hhcnQgPyB0aGlzLl9tYWluQ2hh
cnQuc2VsZWN0ZWRQb2ludHMoJ2N1cnJlbnQnKSA6IG51bGw7CkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUtc3RhdHVzLXZpZXcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFy
dC1wYW5lLXN0YXR1cy12aWV3LmpzCShyZXZpc2lvbiAyMTMyNjIpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUtc3RhdHVzLXZpZXcuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTg5ICsxLDExMCBAQAogCi1jbGFzcyBDaGFydFBhbmVTdGF0dXNW
aWV3IGV4dGVuZHMgQ2hhcnRTdGF0dXNWaWV3IHsKLSAgICAKLSAgICBjb25zdHJ1Y3RvcihtZXRy
aWMsIGNoYXJ0LCByZXZpc2lvbkNhbGxiYWNrKQorY2xhc3MgQ2hhcnRQYW5lU3RhdHVzVmlldyBl
eHRlbmRzIENvbXBvbmVudEJhc2UgeworICAgIGNvbnN0cnVjdG9yKG1ldHJpYywgY2hhcnQpCiAg
ICAgewotICAgICAgICBzdXBlcihtZXRyaWMsIGNoYXJ0KTsKKyAgICAgICAgc3VwZXIoJ2NoYXJ0
LXBhbmUtc3RhdHVzLXZpZXcnKTsKIAotICAgICAgICB0aGlzLl9idWlsZExhYmVsID0gbnVsbDsK
LSAgICAgICAgdGhpcy5fYnVpbGRVcmwgPSBudWxsOwotCi0gICAgICAgIHRoaXMuX3JldmlzaW9u
TGlzdCA9IFtdOworICAgICAgICB0aGlzLl9jaGFydCA9IGNoYXJ0OworICAgICAgICB0aGlzLl9z
dGF0dXMgPSBuZXcgQ2hhcnRTdGF0dXNFdmFsdWF0b3IoY2hhcnQsIG1ldHJpYyk7CisgICAgICAg
IHRoaXMuX3JldmlzaW9uUmFuZ2UgPSBuZXcgQ2hhcnRSZXZpc2lvblJhbmdlKGNoYXJ0KTsKICAg
ICAgICAgdGhpcy5fY3VycmVudFJlcG9zaXRvcnkgPSBudWxsOwotICAgICAgICB0aGlzLl9yZXZp
c2lvbkNhbGxiYWNrID0gcmV2aXNpb25DYWxsYmFjazsKLSAgICAgICAgdGhpcy5fcG9pbnRzUmFu
Z2VGb3JBbmFseXNpcyA9IG51bGw7Ci0KLSAgICAgICAgdGhpcy5fcmVuZGVyZWRSZXZpc2lvbkxp
c3QgPSBudWxsOwotICAgICAgICB0aGlzLl9yZW5kZXJlZFJlcG9zaXRvcnkgPSBudWxsOwogCi0g
ICAgICAgIHRoaXMuX3VzZWRSZXZpc2lvblJhbmdlID0gW251bGwsIG51bGwsIG51bGxdOworICAg
ICAgICB0aGlzLl9yZW5kZXJTdGF0dXNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rp
b24odGhpcy5fcmVuZGVyU3RhdHVzLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9yZW5kZXJC
dWlsZFJldmlzaW9uVGFibGVMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhp
cy5fcmVuZGVyQnVpbGRSZXZpc2lvblRhYmxlLmJpbmQodGhpcykpOwogICAgIH0KIAotICAgIHBv
aW50c1JhbmdlRm9yQW5hbHlzaXMoKSB7IHJldHVybiB0aGlzLl9wb2ludHNSYW5nZUZvckFuYWx5
c2lzOyB9Ci0KICAgICByZW5kZXIoKQogICAgIHsKICAgICAgICAgc3VwZXIucmVuZGVyKCk7CiAK
LSAgICAgICAgaWYgKHRoaXMuX3JlbmRlcmVkUmV2aXNpb25MaXN0ID09IHRoaXMuX3JldmlzaW9u
TGlzdCAmJiB0aGlzLl9yZW5kZXJlZFJlcG9zaXRvcnkgPT0gdGhpcy5fY3VycmVudFJlcG9zaXRv
cnkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3JlbmRlcmVkUmV2aXNpb25M
aXN0ID0gdGhpcy5fcmV2aXNpb25MaXN0OyAgICAKLSAgICAgICAgdGhpcy5fcmVuZGVyZWRSZXBv
c2l0b3J5ID0gdGhpcy5fY3VycmVudFJlcG9zaXRvcnk7Ci0KLSAgICAgICAgdmFyIGVsZW1lbnQg
PSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7Ci0gICAgICAgIHZhciBsaW5rID0gQ29tcG9u
ZW50QmFzZS5jcmVhdGVMaW5rOwotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZh
ciBidWlsZEluZm8gPSB0aGlzLl9idWlsZEluZm87Ci0gICAgICAgIHZhciB0YWJsZUNvbnRlbnQg
PSB0aGlzLl9yZXZpc2lvbkxpc3QubWFwKGZ1bmN0aW9uIChpbmZvLCByb3dJbmRleCkgewotICAg
ICAgICAgICAgdmFyIHNlbGVjdGVkID0gaW5mby5yZXBvc2l0b3J5ID09IHNlbGYuX2N1cnJlbnRS
ZXBvc2l0b3J5OwotICAgICAgICAgICAgdmFyIGFjdGlvbiA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoc2VsZi5fY3VycmVudFJlcG9zaXRvcnkgPT0gaW5mby5yZXBvc2l0b3J5
KQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXRSZXZpc2lvblJhbmdlKHRydWUsIG51bGws
IG51bGwsIG51bGwpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fc2V0UmV2aXNpb25SYW5nZSh0cnVlLCBpbmZvLnJlcG9zaXRvcnksIGluZm8uZnJvbSwg
aW5mby50byk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudCgn
dHInLCB7Y2xhc3M6IHNlbGVjdGVkID8gJ3NlbGVjdGVkJyA6ICcnfSwgWwotICAgICAgICAgICAg
ICAgIGVsZW1lbnQoJ3RkJywgaW5mby5yZXBvc2l0b3J5Lm5hbWUoKSksCi0gICAgICAgICAgICAg
ICAgZWxlbWVudCgndGQnLCBpbmZvLnVybCA/IGxpbmsoaW5mby5sYWJlbCwgaW5mby5sYWJlbCwg
aW5mby51cmwsIHRydWUpIDogaW5mby5sYWJlbCksCi0gICAgICAgICAgICAgICAgZWxlbWVudCgn
dGQnLCB7Y2xhc3M6ICdjb21taXQtdmlld2VyLW9wZW5lcid9LCBsaW5rKCdcdTAwQkInLCBhY3Rp
b24pKSwKLSAgICAgICAgICAgIF0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpZiAodGhpcy5f
YnVpbGRJbmZvKSB7Ci0gICAgICAgICAgICB2YXIgYnVpbGQgPSB0aGlzLl9idWlsZEluZm87Ci0g
ICAgICAgICAgICB2YXIgbnVtYmVyID0gYnVpbGQuYnVpbGROdW1iZXIoKTsKLSAgICAgICAgICAg
IHZhciBidWlsZFRpbWUgPSB0aGlzLl9mb3JtYXRUaW1lKGJ1aWxkLmJ1aWxkVGltZSgpKTsKLSAg
ICAgICAgICAgIHZhciB1cmwgPSBidWlsZC51cmwoKTsKLQotICAgICAgICAgICAgdGFibGVDb250
ZW50LnVuc2hpZnQoZWxlbWVudCgndHInLCBbCi0gICAgICAgICAgICAgICAgZWxlbWVudCgndGQn
LCAnQnVpbGQnKSwKLSAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwg
W3VybCA/IGxpbmsobnVtYmVyLCBidWlsZC5sYWJlbCgpLCB1cmwsIHRydWUpIDogbnVtYmVyLCBg
ICgke2J1aWxkVGltZX0pYF0pLAotICAgICAgICAgICAgXSkpOwotICAgICAgICB9CisgICAgICAg
IHRoaXMuX3JlbmRlclN0YXR1c0xhemlseS5ldmFsdWF0ZSh0aGlzLl9zdGF0dXMuc3RhdHVzKCkp
OwogCi0gICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVj
dG9yKCcuY2hhcnQtcGFuZS1yZXZpc2lvbnMnKSwgdGFibGVDb250ZW50KTsKKyAgICAgICAgY29u
c3QgaW5kaWNhdG9yID0gdGhpcy5fY2hhcnQuY3VycmVudEluZGljYXRvcigpOworICAgICAgICBj
b25zdCBidWlsZCA9IGluZGljYXRvciA/IGluZGljYXRvci5wb2ludC5idWlsZCgpIDogbnVsbDsK
KyAgICAgICAgdGhpcy5fcmVuZGVyQnVpbGRSZXZpc2lvblRhYmxlTGF6aWx5LmV2YWx1YXRlKGJ1
aWxkLCB0aGlzLl9jdXJyZW50UmVwb3NpdG9yeSwgdGhpcy5fcmV2aXNpb25SYW5nZS5yZXZpc2lv
bkxpc3QoKSk7CiAgICAgfQogCi0gICAgX2Zvcm1hdFRpbWUoZGF0ZSkKKyAgICBfcmVuZGVyU3Rh
dHVzKHN0YXR1cykKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGUgaW5zdGFuY2Vv
ZiBEYXRlKTsKLSAgICAgICAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKS5yZXBsYWNlKCdUJywg
JyAnKS5yZXBsYWNlKC9cLlxkK1okLywgJycpOwotICAgIH0KKyAgICAgICAgc3RhdHVzID0gc3Rh
dHVzIHx8IHt9OworICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gc3RhdHVzLmN1cnJlbnRWYWx1
ZSB8fCAnJzsKKyAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgICAgIGN1cnJlbnRW
YWx1ZSArPSBgICgke3N0YXR1cy52YWx1ZURlbHRhfSAvICR7c3RhdHVzLnJlbGF0aXZlRGVsdGF9
KWA7CiAKLSAgICBzZXRDdXJyZW50UmVwb3NpdG9yeShyZXBvc2l0b3J5KQotICAgIHsKLSAgICAg
ICAgdGhpcy5fY3VycmVudFJlcG9zaXRvcnkgPSByZXBvc2l0b3J5OwotICAgICAgICByZXR1cm4g
dGhpcy5fdXBkYXRlUmV2aXNpb25MaXN0Rm9yTmV3Q3VycmVudFJlcG9zaXRvcnkoKTsKLSAgICB9
Ci0KLSAgICBfc2V0UmV2aXNpb25SYW5nZShzaG91bGROb3RpZnksIHJlcG9zaXRvcnksIGZyb20s
IHRvKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3VzZWRSZXZpc2lvblJhbmdlWzBdID09IHJl
cG9zaXRvcnkKLSAgICAgICAgICAgICYmIHRoaXMuX3VzZWRSZXZpc2lvblJhbmdlWzFdID09IGZy
b20gJiYgdGhpcy5fdXNlZFJldmlzaW9uUmFuZ2VbMl0gPT0gdG8pCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHRoaXMuX3VzZWRSZXZpc2lvblJhbmdlID0gW3JlcG9zaXRvcnksIGZyb20s
IHRvXTsKLSAgICAgICAgaWYgKHNob3VsZE5vdGlmeSkKLSAgICAgICAgICAgIHRoaXMuX3Jldmlz
aW9uQ2FsbGJhY2socmVwb3NpdG9yeSwgZnJvbSwgdG8pOworICAgICAgICB0aGlzLmNvbnRlbnQo
J2N1cnJlbnQtdmFsdWUnKS50ZXh0Q29udGVudCA9IGN1cnJlbnRWYWx1ZTsKKyAgICAgICAgdGhp
cy5jb250ZW50KCdjb21wYXJpc29uJykudGV4dENvbnRlbnQgPSBzdGF0dXMubGFiZWwgfHwgJyc7
CisgICAgICAgIHRoaXMuY29udGVudCgnY29tcGFyaXNvbicpLmNsYXNzTmFtZSA9IHN0YXR1cy5j
b21wYXJpc29uIHx8ICcnOwogICAgIH0KIAotICAgIG1vdmVSZXBvc2l0b3J5V2l0aE5vdGlmaWNh
dGlvbihmb3J3YXJkKQorICAgIF9yZW5kZXJCdWlsZFJldmlzaW9uVGFibGUoYnVpbGQsIGN1cnJl
bnRSZXBvc2l0b3J5LCByZXZpc2lvbkxpc3QpCiAgICAgewotICAgICAgICB2YXIgY3VycmVudFJl
cG9zaXRvcnkgPSB0aGlzLl9jdXJyZW50UmVwb3NpdG9yeTsKLSAgICAgICAgaWYgKCFjdXJyZW50
UmVwb3NpdG9yeSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFyIGluZGV4
ID0gdGhpcy5fcmV2aXNpb25MaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoaW5mbykgeyByZXR1cm4g
aW5mby5yZXBvc2l0b3J5ID09IGN1cnJlbnRSZXBvc2l0b3J5OyB9KTsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoaW5kZXggPj0gMCk7Ci0KLSAgICAgICAgdmFyIG5ld0luZGV4ID0gaW5kZXggKyAo
Zm9yd2FyZCA/IDEgOiAtMSk7Ci0gICAgICAgIG5ld0luZGV4ID0gTWF0aC5taW4odGhpcy5fcmV2
aXNpb25MaXN0Lmxlbmd0aCAtIDEsIE1hdGgubWF4KDAsIG5ld0luZGV4KSk7Ci0gICAgICAgIGlm
IChuZXdJbmRleCA9PSBpbmRleCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Y29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKyAgICAgICAgY29u
c3QgbGluayA9IENvbXBvbmVudEJhc2UuY3JlYXRlTGluazsKKyAgICAgICAgbGV0IHRhYmxlQ29u
dGVudCA9IFtdOwogCi0gICAgICAgIHZhciBpdGVtID0gdGhpcy5fcmV2aXNpb25MaXN0W25ld0lu
ZGV4XTsKLSAgICAgICAgdGhpcy5zZXRDdXJyZW50UmVwb3NpdG9yeShpdGVtID8gaXRlbS5yZXBv
c2l0b3J5IDogbnVsbCk7CisgICAgICAgIGlmIChidWlsZCkgeworICAgICAgICAgICAgY29uc3Qg
dXJsID0gYnVpbGQudXJsKCk7CisgICAgICAgICAgICBjb25zdCBidWlsZE51bWJlciA9IGJ1aWxk
LmJ1aWxkTnVtYmVyKCk7CisgICAgICAgICAgICB0YWJsZUNvbnRlbnQucHVzaChlbGVtZW50KCd0
cicsIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsICdCdWlsZCcpLAorICAgICAgICAg
ICAgICAgIGVsZW1lbnQoJ3RkJywge2NvbHNwYW46IDJ9LCBbCisgICAgICAgICAgICAgICAgICAg
IHVybCA/IGxpbmsoYnVpbGROdW1iZXIsIGJ1aWxkLmxhYmVsKCksIHVybCwgdHJ1ZSkgOiBidWls
ZE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgYCAoJHt0aGlzLl9mb3JtYXRUaW1lKGJ1aWxk
LmJ1aWxkVGltZSgpKX0pYAorICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgXSkpOwor
ICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgICAgICBpZiAocmV2
aXNpb25MaXN0KSB7CisgICAgICAgICAgICBmb3IgKGxldCBpbmZvIG9mIHJldmlzaW9uTGlzdCkg
eworICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gaW5mby5yZXBvc2l0b3J5ID09IHRo
aXMuX2N1cnJlbnRSZXBvc2l0b3J5OworICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9ICgp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbignb3BlblJlcG9z
aXRvcnknLCB0aGlzLl9jdXJyZW50UmVwb3NpdG9yeSA9PSBpbmZvLnJlcG9zaXRvcnkgPyBudWxs
IDogaW5mby5yZXBvc2l0b3J5KTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAg
ICAgdGFibGVDb250ZW50LnB1c2goZWxlbWVudCgndHInLCB7Y2xhc3M6IHNlbGVjdGVkID8gJ3Nl
bGVjdGVkJyA6ICcnfSwgWworICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGluZm8u
cmVwb3NpdG9yeS5uYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCd0ZCcsIGlu
Zm8udXJsID8gbGluayhpbmZvLmxhYmVsLCBpbmZvLmxhYmVsLCBpbmZvLnVybCwgdHJ1ZSkgOiBp
bmZvLmxhYmVsKSwKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgndGQnLCB7Y2xhc3M6ICdj
b21taXQtdmlld2VyLW9wZW5lcid9LCBsaW5rKCdcdTAwQkInLCBhY3Rpb24pKSwKKyAgICAgICAg
ICAgICAgICBdKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAgIHVwZGF0ZVJldmlz
aW9uTGlzdCgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRSZXBvc2l0b3J5KQot
ICAgICAgICAgICAgcmV0dXJuIHtyZXBvc2l0b3J5OiBudWxsLCBmcm9tOiBudWxsLCB0bzogbnVs
bH07Ci0gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVSZXZpc2lvbkxpc3RGb3JOZXdDdXJyZW50
UmVwb3NpdG9yeSgpOworICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCdi
dWlsZC1yZXZpc2lvbicpLCB0YWJsZUNvbnRlbnQpOwogICAgIH0KIAotICAgIF91cGRhdGVSZXZp
c2lvbkxpc3RGb3JOZXdDdXJyZW50UmVwb3NpdG9yeSgpCisgICAgX2Zvcm1hdFRpbWUoZGF0ZSkK
ICAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlU3RhdHVzSWZOZWVkZWQoKTsKLQotICAgICAgICBm
b3IgKHZhciBpbmZvIG9mIHRoaXMuX3JldmlzaW9uTGlzdCkgewotICAgICAgICAgICAgaWYgKGlu
Zm8ucmVwb3NpdG9yeSA9PSB0aGlzLl9jdXJyZW50UmVwb3NpdG9yeSkgewotICAgICAgICAgICAg
ICAgIHRoaXMuX3NldFJldmlzaW9uUmFuZ2UoZmFsc2UsIGluZm8ucmVwb3NpdG9yeSwgaW5mby5m
cm9tLCBpbmZvLnRvKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ge3JlcG9zaXRvcnk6IGluZm8u
cmVwb3NpdG9yeSwgZnJvbTogaW5mby5mcm9tLCB0bzogaW5mby50b307Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fc2V0UmV2aXNpb25SYW5nZShmYWxzZSwgbnVsbCwg
bnVsbCwgbnVsbCk7Ci0gICAgICAgIHJldHVybiB7cmVwb3NpdG9yeTogdGhpcy5fY3VycmVudFJl
cG9zaXRvcnksIGZyb206IG51bGwsIHRvOiBudWxsfTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
ZGF0ZSBpbnN0YW5jZW9mIERhdGUpOworICAgICAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygp
LnJlcGxhY2UoJ1QnLCAnICcpLnJlcGxhY2UoL1wuXGQrWiQvLCAnJyk7CiAgICAgfQogCi0gICAg
Y29tcHV0ZUNoYXJ0U3RhdHVzTGFiZWxzKGN1cnJlbnRQb2ludCwgcHJldmlvdXNQb2ludCkKKyAg
ICBzZXRDdXJyZW50UmVwb3NpdG9yeShyZXBvc2l0b3J5KQogICAgIHsKLSAgICAgICAgc3VwZXIu
Y29tcHV0ZUNoYXJ0U3RhdHVzTGFiZWxzKGN1cnJlbnRQb2ludCwgcHJldmlvdXNQb2ludCk7Ci0K
LSAgICAgICAgdGhpcy5fYnVpbGRJbmZvID0gbnVsbDsKLSAgICAgICAgdGhpcy5fcmV2aXNpb25M
aXN0ID0gW107Ci0gICAgICAgIHRoaXMuX3BvaW50c1JhbmdlRm9yQW5hbHlzaXMgPSBudWxsOwot
Ci0gICAgICAgIGlmICghY3VycmVudFBvaW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGlmICghdGhpcy5fY2hhcnQuY3VycmVudFNlbGVjdGlvbigpKQotICAgICAgICAgICAgdGhp
cy5fYnVpbGRJbmZvID0gY3VycmVudFBvaW50LmJ1aWxkKCk7Ci0KLSAgICAgICAgaWYgKGN1cnJl
bnRQb2ludCAmJiBwcmV2aW91c1BvaW50ICYmIHRoaXMuX2NoYXJ0LmN1cnJlbnRTZWxlY3Rpb24o
KSkgewotICAgICAgICAgICAgdGhpcy5fcG9pbnRzUmFuZ2VGb3JBbmFseXNpcyA9IHsKLSAgICAg
ICAgICAgICAgICBzdGFydFBvaW50SWQ6IHByZXZpb3VzUG9pbnQuaWQsCi0gICAgICAgICAgICAg
ICAgZW5kUG9pbnRJZDogY3VycmVudFBvaW50LmlkLAotICAgICAgICAgICAgfTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIEZJWE1FOiBSZXdyaXRlIHRoZSBpbnRlcmZhY2UgdG8gb2J0YWluIHRo
ZSBsaXN0IG9mIHJldmlzaW9uIGNoYW5nZXMuCi0gICAgICAgIHZhciBjdXJyZW50Um9vdFNldCA9
IGN1cnJlbnRQb2ludC5yb290U2V0KCk7Ci0gICAgICAgIHZhciBwcmV2aW91c1Jvb3RTZXQgPSBw
cmV2aW91c1BvaW50ID8gcHJldmlvdXNQb2ludC5yb290U2V0KCkgOiBudWxsOwotCi0gICAgICAg
IHZhciByZXBvc2l0b3JpZXNJbkN1cnJlbnRSb290U2V0ID0gUmVwb3NpdG9yeS5zb3J0QnlOYW1l
UHJlZmVycmluZ09uZXNXaXRoVVJMKGN1cnJlbnRSb290U2V0LnJlcG9zaXRvcmllcygpKTsKLSAg
ICAgICAgdmFyIHJldmlzaW9uTGlzdCA9IFtdOwotICAgICAgICBmb3IgKHZhciByZXBvc2l0b3J5
IG9mIHJlcG9zaXRvcmllc0luQ3VycmVudFJvb3RTZXQpIHsKLSAgICAgICAgICAgIHZhciBjdXJy
ZW50Q29tbWl0ID0gY3VycmVudFJvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5
KTsKLSAgICAgICAgICAgIHZhciBwcmV2aW91c0NvbW1pdCA9IHByZXZpb3VzUm9vdFNldCA/IHBy
ZXZpb3VzUm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIDogbnVsbDsKLSAg
ICAgICAgICAgIHJldmlzaW9uTGlzdC5wdXNoKGN1cnJlbnRDb21taXQuZGlmZihwcmV2aW91c0Nv
bW1pdCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcmV2aXNpb25MaXN0ID0gcmV2aXNp
b25MaXN0OworICAgICAgICB0aGlzLl9jdXJyZW50UmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7Cisg
ICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGh0bWxU
ZW1wbGF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYAotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iY2hhcnQtcGFuZS1zdGF0dXMiPgotICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iY2hhcnQt
c3RhdHVzLWN1cnJlbnQtdmFsdWUiPjwvaDM+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9
ImNoYXJ0LXN0YXR1cy1jb21wYXJpc29uIj48L3NwYW4+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
aGFydC1wYW5lLXN0YXR1cyI+CisgICAgICAgICAgICAgICAgPGgzIGlkPSJjdXJyZW50LXZhbHVl
Ij48L2gzPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJjb21wYXJpc29uIj48L3NwYW4+CiAg
ICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iY2hhcnQtcGFuZS1y
ZXZpc2lvbnMiPjwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgaWQ9ImJ1aWxkLXJldmlzaW9u
Ij48L3RhYmxlPgogICAgICAgICBgOwogICAgIH0KIAogICAgIHN0YXRpYyBjc3NUZW1wbGF0ZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gVG9vbGJhci5jc3NUZW1wbGF0ZSgpICsgQ2hhcnRTdGF0
dXNWaWV3LmNzc1RlbXBsYXRlKCkgKyBgCi0gICAgICAgICAgICAuY2hhcnQtcGFuZS1zdGF0dXMg
eworICAgICAgICByZXR1cm4gVG9vbGJhci5jc3NUZW1wbGF0ZSgpICsgYAorICAgICAgICAgICAg
I2NoYXJ0LXBhbmUtc3RhdHVzIHsKICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAg
ICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIC5jaGFydC1wYW5lLXN0YXR1cyAuY2hhcnQtc3RhdHVzLWN1cnJlbnQtdmFsdWUsCi0g
ICAgICAgICAgICAuY2hhcnQtcGFuZS1zdGF0dXMgLmNoYXJ0LXN0YXR1cy1jb21wYXJpc29uIHsK
KyAgICAgICAgICAgICNjdXJyZW50LXZhbHVlLAorICAgICAgICAgICAgI2NvbXBhcmlzb24gewog
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICAgICAgIG1hcmdpbjog
MDsKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwpAQCAtMTkxLDcgKzExMiwxNSBAQCBjbGFz
cyBDaGFydFBhbmVTdGF0dXNWaWV3IGV4dGVuZHMgQ2hhcnRTCiAgICAgICAgICAgICAgICAgZm9u
dC1zaXplOiAxcmVtOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY2hhcnQtcGFuZS1y
ZXZpc2lvbnMgeworICAgICAgICAgICAgI2NvbXBhcmlzb24ud29yc2UgeworICAgICAgICAgICAg
ICAgIGNvbG9yOiAjYzMzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY29tcGFyaXNv
bi5iZXR0ZXIgeworICAgICAgICAgICAgICAgIGNvbG9yOiAjMzNjOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAjYnVpbGQtcmV2aXNpb24gewogICAgICAgICAgICAgICAgIGxpbmUtaGVp
Z2h0OiAxcmVtOwogICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAg
ICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CkBAIC0yMDMsMjMgKzEzMiwyMyBAQCBjbGFzcyBD
aGFydFBhbmVTdGF0dXNWaWV3IGV4dGVuZHMgQ2hhcnRTCiAgICAgICAgICAgICAgICAgd2lkdGg6
IDEwMCU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC5jaGFydC1wYW5lLXJldmlzaW9u
cyB0aCwKLSAgICAgICAgICAgIC5jaGFydC1wYW5lLXJldmlzaW9ucyB0ZCB7CisgICAgICAgICAg
ICAjYnVpbGQtcmV2aXNpb24gdGgsCisgICAgICAgICAgICAjYnVpbGQtcmV2aXNpb24gdGQgewog
ICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogICAgICAgICAgICAgICAgIGJv
cmRlci10b3A6IHNvbGlkIDFweCAjY2NjOwogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMnJl
bSAwLjJyZW07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC5jaGFy
dC1wYW5lLXJldmlzaW9ucyAuc2VsZWN0ZWQgPiB0aCwKLSAgICAgICAgICAgIC5jaGFydC1wYW5l
LXJldmlzaW9ucyAuc2VsZWN0ZWQgPiB0ZCB7CisgICAgICAgICAgICAjYnVpbGQtcmV2aXNpb24g
LnNlbGVjdGVkID4gdGgsCisgICAgICAgICAgICAjYnVpbGQtcmV2aXNpb24gLnNlbGVjdGVkID4g
dGQgewogICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjA0LCAxNTMsIDUxLCAwLjEp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY2hhcnQtcGFuZS1yZXZpc2lvbnMgLmNv
bW1pdC12aWV3ZXItb3BlbmVyIHsKKyAgICAgICAgICAgICNidWlsZC1yZXZpc2lvbiAuY29tbWl0
LXZpZXdlci1vcGVuZXIgewogICAgICAgICAgICAgICAgIHdpZHRoOiAxcmVtOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAuY2hhcnQtcGFuZS1yZXZpc2lvbnMgLmNvbW1pdC12aWV3ZXIt
b3BlbmVyIGEgeworICAgICAgICAgICAgI2J1aWxkLXJldmlzaW9uIC5jb21taXQtdmlld2VyLW9w
ZW5lciBhIHsKICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAg
ICAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGlu
aGVyaXQ7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2No
YXJ0LXBhbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9wYWdlcy9jaGFydC1wYW5lLmpzCShyZXZpc2lvbiAyMTMyNjIpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTE4MSwyMSArMTgxLDEyIEBAIGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFu
ZUJhc2UgewogCiAgICAgcm91dGVyKCkgeyByZXR1cm4gdGhpcy5fY2hhcnRzUGFnZS5yb3V0ZXIo
KTsgfQogCi0gICAgX3JlcXVlc3RPcGVuaW5nQ29tbWl0Vmlld2VyKHJlcG9zaXRvcnksIGZyb20s
IHRvKQorICAgIG9wZW5OZXdSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCiAgICAgewotICAgICAgICBz
dXBlci5fcmVxdWVzdE9wZW5pbmdDb21taXRWaWV3ZXIocmVwb3NpdG9yeSwgZnJvbSwgdG8pOwor
ICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFuZScpLmZvY3Vz
KCk7CiAgICAgICAgIHRoaXMuX2NoYXJ0c1BhZ2Uuc2V0T3BlblJlcG9zaXRvcnkocmVwb3NpdG9y
eSk7CiAgICAgfQogCi0gICAgc2V0T3BlblJlcG9zaXRvcnkocmVwb3NpdG9yeSkKLSAgICB7Ci0g
ICAgICAgIGlmIChyZXBvc2l0b3J5ICE9IHRoaXMuX2NvbW1pdExvZ1ZpZXdlci5jdXJyZW50UmVw
b3NpdG9yeSgpKSB7Ci0gICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9tYWluQ2hhcnRTdGF0
dXMuc2V0Q3VycmVudFJlcG9zaXRvcnkocmVwb3NpdG9yeSk7Ci0gICAgICAgICAgICB0aGlzLl9j
b21taXRMb2dWaWV3ZXIudmlldyhyZXBvc2l0b3J5LCByYW5nZS5mcm9tLCByYW5nZS50bykudGhl
bigoKSA9PiB7IHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7IH0pOwotICAgICAgICAgICAgdGhpcy5l
bnF1ZXVlVG9SZW5kZXIoKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIF9pbmRpY2F0b3JEaWRD
aGFuZ2UoaW5kaWNhdG9ySUQsIGlzTG9ja2VkKQogICAgIHsKICAgICAgICAgdGhpcy5fY2hhcnRz
UGFnZS5tYWluQ2hhcnRJbmRpY2F0b3JEaWRDaGFuZ2UodGhpcywgaXNMb2NrZWQgIT0gdGhpcy5f
bWFpbkNoYXJ0SW5kaWNhdG9yV2FzTG9ja2VkKTsKQEAgLTIwMywxNyArMTk0LDE2IEBAIGNsYXNz
IENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICBzdXBlci5faW5kaWNh
dG9yRGlkQ2hhbmdlKGluZGljYXRvcklELCBpc0xvY2tlZCk7CiAgICAgfQogCi0gICAgX2FuYWx5
emVSYW5nZShwb2ludHNSYW5nZUZvckFuYWx5c2lzKQorICAgIF9hbmFseXplUmFuZ2Uoc3RhcnRQ
b2ludCwgZW5kUG9pbnQpCiAgICAgewogICAgICAgICB2YXIgcm91dGVyID0gdGhpcy5fY2hhcnRz
UGFnZS5yb3V0ZXIoKTsKICAgICAgICAgdmFyIG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHJvdXRl
ci51cmwoJ2FuYWx5c2lzL3Rhc2svY3JlYXRlJyksICdfYmxhbmsnKTsKIAogICAgICAgICB2YXIg
YW5hbHl6ZVBvcG92ZXIgPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFu
ZS1hbmFseXplLXBvcG92ZXInKTsKICAgICAgICAgdmFyIG5hbWUgPSBhbmFseXplUG9wb3Zlci5x
dWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOwotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0g
ICAgICAgIEFuYWx5c2lzVGFzay5jcmVhdGUobmFtZSwgcG9pbnRzUmFuZ2VGb3JBbmFseXNpcy5z
dGFydFBvaW50SWQsIHBvaW50c1JhbmdlRm9yQW5hbHlzaXMuZW5kUG9pbnRJZCkudGhlbihmdW5j
dGlvbiAoZGF0YSkgeworICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9p
bnQuaWQsIGVuZFBvaW50LmlkKS50aGVuKChkYXRhKSA9PiB7CiAgICAgICAgICAgICBuZXdXaW5k
b3cubG9jYXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svJyArIGRhdGFbJ3Rh
c2tJZCddKTsKLSAgICAgICAgICAgIHNlbGYuZmV0Y2hBbmFseXNpc1Rhc2tzKHRydWUpOworICAg
ICAgICAgICAgdGhpcy5mZXRjaEFuYWx5c2lzVGFza3ModHJ1ZSk7CiAgICAgICAgIH0sIGZ1bmN0
aW9uIChlcnJvcikgewogICAgICAgICAgICAgbmV3V2luZG93LmxvY2F0aW9uLmhyZWYgPSByb3V0
ZXIudXJsKCdhbmFseXNpcy90YXNrL2NyZWF0ZScsIHtlcnJvcjogZXJyb3J9KTsKICAgICAgICAg
fSk7CkBAIC0yNzksMTYgKzI2OSwxNyBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBh
bmVCYXNlIHsKICAgICAgICAgICAgIHBsYXRmb3JtUG9wb3Zlci5zdHlsZS5kaXNwbGF5ID0gJ25v
bmUnOwogCiAgICAgICAgIHZhciBhbmFseXplUG9wb3ZlciA9IHRoaXMuY29udGVudCgpLnF1ZXJ5
U2VsZWN0b3IoJy5jaGFydC1wYW5lLWFuYWx5emUtcG9wb3ZlcicpOwotICAgICAgICB2YXIgcG9p
bnRzUmFuZ2VGb3JBbmFseXNpcyA9IHRoaXMuX21haW5DaGFydFN0YXR1cy5wb2ludHNSYW5nZUZv
ckFuYWx5c2lzKCk7Ci0gICAgICAgIGlmIChwb2ludHNSYW5nZUZvckFuYWx5c2lzKSB7CisgICAg
ICAgIGNvbnN0IHNlbGVjdGVkUG9pbnRzID0gdGhpcy5fbWFpbkNoYXJ0LnNlbGVjdGVkUG9pbnRz
KCdjdXJyZW50Jyk7CisgICAgICAgIGNvbnN0IGhhc1NlbGVjdGVkUG9pbnRzID0gc2VsZWN0ZWRQ
b2ludHMgJiYgc2VsZWN0ZWRQb2ludHMubGVuZ3RoKCk7CisgICAgICAgIGlmIChoYXNTZWxlY3Rl
ZFBvaW50cykgewogICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHRoaXMuX21ha2VQb3BvdmVyQWN0
aW9uSXRlbShhbmFseXplUG9wb3ZlciwgJ0FuYWx5emUnLCBmYWxzZSkpOwotICAgICAgICAgICAg
YW5hbHl6ZVBvcG92ZXIub25zdWJtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgIHNlbGYuX2FuYWx5
emVSYW5nZShwb2ludHNSYW5nZUZvckFuYWx5c2lzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGFuYWx5emVQb3BvdmVyLm9uc3VibWl0ID0gdGhpcy5jcmVhdGVFdmVudEhhbmRsZXIoKCkg
PT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHNlbGVjdGVkUG9pbnRzLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmFseXplUmFuZ2Uoc2VsZWN0ZWRQb2ludHMuZmly
c3RQb2ludCgpLCBzZWxlY3RlZFBvaW50cy5sYXN0UG9pbnQoKSk7CisgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFuYWx5emVQb3BvdmVyLnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICBhbmFseXplUG9wb3Zlci5vbnN1Ym1pdCA9IGZ1bmN0
aW9uIChldmVudCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9CisgICAgICAgICAgICBhbmFs
eXplUG9wb3Zlci5vbnN1Ym1pdCA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHt9KTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZhciBmaWx0ZXJpbmdPcHRpb25zID0gdGhpcy5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtZmlsdGVyaW5nLW9wdGlvbnMnKTsKSW5kZXg6
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvZGFzaGJvYXJkLXBhZ2Uu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdl
cy9kYXNoYm9hcmQtcGFnZS5qcwkocmV2aXNpb24gMjEzMjYyKQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9kYXNoYm9hcmQtcGFnZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIERhc2hib2FyZFBhZ2UgZXh0ZW5kcyBQYWdlV2l0
aEhlYWQKICAgICAgICAgY2hhcnQubGlzdGVuVG9BY3Rpb24oJ2RhdGFDaGFuZ2UnLCAoKSA9PiB0
aGlzLl9mZXRjaGVkRGF0YSgpKQogICAgICAgICB0aGlzLl9jaGFydHMucHVzaChjaGFydCk7CiAK
LSAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgQ2hhcnRTdGF0dXNWaWV3KHJlc3VsdC5tZXRy
aWMsIGNoYXJ0KTsKKyAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgRGFzaGJvYXJkQ2hhcnRT
dGF0dXNWaWV3KHJlc3VsdC5tZXRyaWMsIGNoYXJ0KTsKICAgICAgICAgdGhpcy5fc3RhdHVzVmll
d3MucHVzaChzdGF0dXNWaWV3KTsKIAogICAgICAgICByZXR1cm4gewpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbGF6aWx5LWV2YWx1YXRlZC1mdW5jdGlvbi10ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9s
YXppbHktZXZhbHVhdGVkLWZ1bmN0aW9uLXRlc3RzLmpzCShub25leGlzdGVudCkKKysrIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2xhemlseS1ldmFsdWF0ZWQtZnVuY3Rpb24t
dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODcgQEAKKworY29uc3QgYXNzZXJ0
ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Citjb25zdCBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbiA9IHJl
cXVpcmUoJy4uL3B1YmxpYy92My9sYXppbHktZXZhbHVhdGVkLWZ1bmN0aW9uLmpzJykuTGF6aWx5
RXZhbHVhdGVkRnVuY3Rpb247CisKK2Rlc2NyaWJlKCdMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbics
ICgpID0+IHsKKworICAgIGRlc2NyaWJlKCdldmFsdWF0ZScsICgpID0+IHsKKyAgICAgICAgaXQo
J3Nob3VsZCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSB2ZXJ5IGZpcnN0IGNhbGwgd2l0aCBu
byBhcmd1bWVudHMnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjYWxscyA9IFtdOworICAg
ICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1YXRlKCk7
CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbW11dKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXRydW4gdGhlIGNhY2hlZCByZXN1bHRzIHdpdGhvdXQg
aW52b2tpbmcgdGhlIGNhbGxiYWNrIG9uIHRoZSBzZWNvbmQgY2FsbCB3aXRoIG5vIGFyZ3VtZW50
cycsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNhbGxzID0gW107CisgICAgICAgICAgICBj
b25zdCBsYXp5RnVuY3Rpb24gPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4uLmFyZ3Mp
ID0+IGNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNh
bGxzLCBbXSk7CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbXV0pOworICAgICAgICAgICAgbGF6eUZ1bmN0
aW9uLmV2YWx1YXRlKCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbW11d
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBpbnZva2UgdGhlIGNhbGxiYWNr
IHdoZW4gY2FsbGQgd2l0aCBhbiBhcmd1bWVudCBhZnRlciBiZWluZyBjYWxsZWQgd2l0aCBubyBh
cmd1bWVudCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNhbGxzID0gW107CisgICAgICAg
ICAgICBjb25zdCBsYXp5RnVuY3Rpb24gPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4u
LmFyZ3MpID0+IGNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGNhbGxzLCBbXSk7CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbXV0pOworICAgICAgICAgICAgbGF6
eUZ1bmN0aW9uLmV2YWx1YXRlKDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxs
cywgW1tdLCBbMV1dKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBpbnZva2Ug
dGhlIGNhbGxiYWNrIHdoZW4gY2FsbGQgd2l0aCBubyBhcmd1bWVudHMgYWZ0ZXIgYmVpbmcgY2Fs
bGVkIHdpdGggYW4gYXJndW1lbnQnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjYWxscyA9
IFtdOworICAgICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExhemlseUV2YWx1YXRl
ZEZ1bmN0aW9uKCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2
YWx1YXRlKCdmb28nKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbJ2Zv
byddXSk7CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUoKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbJ2ZvbyddLCBbXV0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgd2hlbiBjYWxsZCB3aXRoIG51
bGwgYWZ0ZXIgYmVpbmcgY2FsbGVkIHdpdGggdW5kZWZpbmVkJywgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgY2FsbHMgPSBbXTsKKyAgICAgICAgICAgIGNvbnN0IGxhenlGdW5jdGlvbiA9IG5l
dyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7
CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtdKTsKKyAgICAgICAgICAg
IGxhenlGdW5jdGlvbi5ldmFsdWF0ZSh1bmRlZmluZWQpOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjYWxscywgW1t1bmRlZmluZWRdXSk7CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24u
ZXZhbHVhdGUobnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbW3Vu
ZGVmaW5lZF0sIFtudWxsXV0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGlu
dm9rZSB0aGUgY2FsbGJhY2sgd2hlbiBjYWxsZCB3aXRoIDAgYWZ0ZXIgYmVpbmcgY2FsbGVkIHdp
dGggIjAiJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2FsbHMgPSBbXTsKKyAgICAgICAg
ICAgIGNvbnN0IGxhenlGdW5jdGlvbiA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4u
YXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoY2FsbHMsIFtdKTsKKyAgICAgICAgICAgIGxhenlGdW5jdGlvbi5ldmFsdWF0ZSgwKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbMF1dKTsKKyAgICAgICAgICAgIGxh
enlGdW5jdGlvbi5ldmFsdWF0ZSgiMCIpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
YWxscywgW1swXSwgWyIwIl1dKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBp
bnZva2UgdGhlIGNhbGxiYWNrIHdoZW4gY2FsbGQgd2l0aCBhbiBvYmplY3QgYWZ0ZXIgYmVpbmcg
Y2FsbGVkIHdpdGggYW5vdGhlciBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzZXQgb2YgcHJvcGVydGll
cycsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNhbGxzID0gW107CisgICAgICAgICAgICBj
b25zdCBsYXp5RnVuY3Rpb24gPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4uLmFyZ3Mp
ID0+IGNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNh
bGxzLCBbXSk7CisgICAgICAgICAgICBjb25zdCB4ID0ge307CisgICAgICAgICAgICBjb25zdCB5
ID0ge307CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUoeCk7CisgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbW3hdXSk7CisgICAgICAgICAgICBsYXp5RnVuY3Rp
b24uZXZhbHVhdGUoeSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbW3hd
LCBbeV1dKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNh
Y2hlZCByZXN1bHQgd2l0aG91dCBpbnZva2luZyB0aGUgY2FsbGJhY2sgd2hlbiBjYWxsZCB3aXRo
IGEgc3RyaW5nIGFmdGVyIGJlaW5nIGNhbGxlZCB3aXRoIHRoZSBzYW1lIHN0cmluZycsICgpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IGNhbGxzID0gW107CisgICAgICAgICAgICBjb25zdCBsYXp5
RnVuY3Rpb24gPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4uLmFyZ3MpID0+IGNhbGxz
LnB1c2goYXJncykpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbXSk7
CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUoImZvbyIpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW1siZm9vIl1dKTsKKyAgICAgICAgICAgIGxhenlGdW5j
dGlvbi5ldmFsdWF0ZSgiZm9vIik7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxz
LCBbWyJmb28iXV0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0
aGUgY2FsbGJhY2sgd2hlbiBjYWxsZCB3aXRoIGEgc3RyaW5nIGFmdGVyIGJlaW5nIGNhbGxlZCB3
aXRoIGFub3RoZXIgc3RyaW5nJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgY2FsbHMgPSBb
XTsKKyAgICAgICAgICAgIGNvbnN0IGxhenlGdW5jdGlvbiA9IG5ldyBMYXppbHlFdmFsdWF0ZWRG
dW5jdGlvbigoLi4uYXJncykgPT4gY2FsbHMucHVzaChhcmdzKSk7CisKKyAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY2FsbHMsIFtdKTsKKyAgICAgICAgICAgIGxhenlGdW5jdGlvbi5ldmFs
dWF0ZSgiZm9vIik7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbWyJmb28i
XV0pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1YXRlKCJiYXIiKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbImZvbyJdLCBbImJhciJdXSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjYWNoZWQgcmVzdWx0IHdpdGhv
dXQgaW52b2tpbmcgdGhlIGNhbGxiYWNrIHdoZW4gY2FsbGQgd2l0aCBhIG51bWJlciBhZnRlciBi
ZWluZyBjYWxsZWQgd2l0aCB0aGUgc2FtZSBudW1iZXInLCAoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCBjYWxscyA9IFtdOworICAgICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExh
emlseUV2YWx1YXRlZEZ1bmN0aW9uKCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6
eUZ1bmN0aW9uLmV2YWx1YXRlKDgpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxs
cywgW1s4XV0pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1YXRlKDgpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW1s4XV0pOworICAgICAgICB9KTsKKworICAg
ICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgd2hlbiBjYWxsZCB3aXRoIGEgbnVt
YmVyIGFmdGVyIGJlaW5nIGNhbGxlZCB3aXRoIGFub3RoZXIgbnVtYmVyJywgKCkgPT4geworICAg
ICAgICAgICAgY29uc3QgY2FsbHMgPSBbXTsKKyAgICAgICAgICAgIGNvbnN0IGxhenlGdW5jdGlv
biA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYXJncykgPT4gY2FsbHMucHVzaChh
cmdzKSk7CisKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtdKTsKKyAgICAg
ICAgICAgIGxhenlGdW5jdGlvbi5ldmFsdWF0ZSg0KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoY2FsbHMsIFtbNF1dKTsKKyAgICAgICAgICAgIGxhenlGdW5jdGlvbi5ldmFsdWF0ZSgy
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2FsbHMsIFtbNF0sIFsyXV0pOworICAg
ICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY2FjaGVkIHJlc3VsdCB3
aXRob3V0IGludm9raW5nIHRoZSBjYWxsYmFjayB3aGVuIGNhbGxkIHdpdGggWyJoZWxsbyIsIDMs
ICJ3b3JsZCJdIGZvciB0aGUgc2Vjb25kIHRpbWUnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBjYWxscyA9IFtdOworICAgICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExhemls
eUV2YWx1YXRlZEZ1bmN0aW9uKCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6eUZ1
bmN0aW9uLmV2YWx1YXRlKCJoZWxsbyIsIDMsICJ3b3JsZCIpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjYWxscywgW1siaGVsbG8iLCAzLCAid29ybGQiXV0pOworICAgICAgICAgICAg
bGF6eUZ1bmN0aW9uLmV2YWx1YXRlKCJoZWxsbyIsIDMsICJ3b3JsZCIpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW1siaGVsbG8iLCAzLCAid29ybGQiXV0pOworICAgICAg
ICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0aGUgY2FsbGJhY2sgd2hlbiBjYWxs
ZCB3aXRoIFsiaGVsbG8iLCAzLCAid29ybGQiXSBhZnRlciBiZWluZyBjYWxsZWQgd2l0aCBbImhl
bGxvIiwgNCwgIndvcmxkIl0nLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjYWxscyA9IFtd
OworICAgICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExhemlseUV2YWx1YXRlZEZ1
bmN0aW9uKCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1
YXRlKCJoZWxsbyIsIDMsICJ3b3JsZCIpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
YWxscywgW1siaGVsbG8iLCAzLCAid29ybGQiXV0pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9u
LmV2YWx1YXRlKCJoZWxsbyIsIDQsICJ3b3JsZCIpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjYWxscywgW1siaGVsbG8iLCAzLCAid29ybGQiXSwgWyJoZWxsbyIsIDQsICJ3b3JsZCJd
XSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjYWNoZWQg
cmVzdWx0IHdpdGhvdXQgaW52b2tpbmcgdGhlIGNhbGxiYWNrIHdoZW4gY2FsbGVkIHdpdGggW251
bGwsIG51bGxdIGZvciB0aGUgc2Vjb25kIHRpbWUnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25z
dCBjYWxscyA9IFtdOworICAgICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExhemls
eUV2YWx1YXRlZEZ1bmN0aW9uKCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6eUZ1
bmN0aW9uLmV2YWx1YXRlKG51bGwsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjYWxscywgW1tudWxsLCBudWxsXV0pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1
YXRlKG51bGwsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW1tu
dWxsLCBudWxsXV0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGludm9rZSB0
aGUgY2FsbGJhY2sgd2hlbiBjYWxsZCB3aXRoIFtudWxsXSBhZnRlciBiZWluZyBjYWxsZWQgd2l0
aCBbbnVsbCwgbnVsbF0nLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjYWxscyA9IFtdOwor
ICAgICAgICAgICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0
aW9uKCguLi5hcmdzKSA9PiBjYWxscy5wdXNoKGFyZ3MpKTsKKworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjYWxscywgW10pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1YXRl
KG51bGwsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW1tudWxs
LCBudWxsXV0pOworICAgICAgICAgICAgbGF6eUZ1bmN0aW9uLmV2YWx1YXRlKG51bGwpOworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjYWxscywgW1tudWxsLCBudWxsXSwgW251bGxdXSk7
CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgaW52b2tlIHRoZSBjYWxsYmFjayB3
aGVuIGNhbGxkIHdpdGggW251bGwsIDRdIGFmdGVyIGJlaW5nIGNhbGxlZCB3aXRoIFtudWxsXScs
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNhbGxzID0gW107CisgICAgICAgICAgICBjb25z
dCBsYXp5RnVuY3Rpb24gPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24oKC4uLmFyZ3MpID0+
IGNhbGxzLnB1c2goYXJncykpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxz
LCBbXSk7CisgICAgICAgICAgICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUobnVsbCwgNCk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNhbGxzLCBbW251bGwsIDRdXSk7CisgICAgICAgICAg
ICBsYXp5RnVuY3Rpb24uZXZhbHVhdGUobnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGNhbGxzLCBbW251bGwsIDRdLCBbbnVsbF1dKTsKKyAgICAgICAgfSk7CisKKyAgICB9KTsK
KworfSk7CisK
</data>
<flag name="review"
          id="324854"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>