<?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>24588</bug_id>
          
          <creation_ts>2009-03-13 14:24:47 -0700</creation_ts>
          <short_desc>Update media element implementation to current spec</short_desc>
          <delta_ts>2009-03-23 08:31:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>rik</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113697</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-13 14:24:47 -0700</bug_when>
    <thetext>The current implementation of &lt;video&gt; and &lt;audio&gt; elements is out of sync with the HTML5 spec. Fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113700</commentid>
    <comment_count>1</comment_count>
      <attachid>28600</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-13 14:30:16 -0700</bug_when>
    <thetext>Created attachment 28600
Work-in-progress patch

I believe the changes to HTMLMediaElement, MediaPlayer, MediaPlayerPrivateQTKit, and LayoutTests match the 26 February 2009 spec and are complete with the exception of Cue Ranges. Still need to change all of the other media engines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113765</commentid>
    <comment_count>2</comment_count>
      <attachid>28620</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-14 11:43:55 -0700</bug_when>
    <thetext>Created attachment 28620
updated patch

This includes changes for all media engines. I have only built and tested on the Mac, but the review might as well happen while I work on getting my Windows machine working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113852</commentid>
    <comment_count>3</comment_count>
      <attachid>28644</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-15 21:20:31 -0700</bug_when>
    <thetext>Created attachment 28644
updated patch

Fix a couple of minor typos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113853</commentid>
    <comment_count>4</comment_count>
      <attachid>28645</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-15 21:23:58 -0700</bug_when>
    <thetext>Created attachment 28645
updated patch

Oops, attached the wrong version last time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114004</commentid>
    <comment_count>5</comment_count>
      <attachid>28645</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-03-17 00:23:46 -0700</bug_when>
    <thetext>Comment on attachment 28645
updated patch

Looks pretty good.  Minor comments below.  I found a problem with this patch and the load event on Windows.  Eric&apos;s going to diagnose tomorrow, so I&apos;ll r- this for now, but I expect this will be ready to check in fairly soon once that issue is figured out.

&gt; Index: WebCore/ChangeLog
typo &quot;obsolute&quot;
typo &quot;ticke&quot;

&gt; Index: WebCore/html/HTMLMediaElement.cpp
&gt; ===================================================================

I think it would be cleaner here to remove the commented out code, and stick it in a bug.  Then you can just reference the bug here.

&gt; +    // FIXME: don&apos;t schedule timeupdate or progress events unless there are registered listeners
&gt; +/*
&gt; +    if (eventType == eventNames().progressEvent &amp;&amp; !document()-&gt;hasListenerType(Document::xxxxxx_LISTENER))
&gt; +        return;
&gt; +    if (eventType == eventNames().timeupdateEvent &amp;&amp; !document()-&gt;hasListenerType(Document::xxxxxx_LISTENER))
&gt; +        return;
&gt; +*/
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114307</commentid>
    <comment_count>6</comment_count>
      <attachid>28751</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-19 07:38:45 -0700</bug_when>
    <thetext>Created attachment 28751
updated patch

Two changes:
 + don&apos;t stop timeupdate event timer when reach loaded state. 
 + minor efficiency fix on Windows, don&apos;t call setRate(0) when rate is already 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114771</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-03-23 08:31:42 -0700</bug_when>
    <thetext>Committed revision 41907.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28600</attachid>
            <date>2009-03-13 14:30:16 -0700</date>
            <delta_ts>2009-03-14 11:43:55 -0700</delta_ts>
            <desc>Work-in-progress patch</desc>
            <filename>03.13.2009.txt</filename>
            <type>text/plain</type>
            <size>133671</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMjQgKzEwMiwyNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8od2Via2l0QmVmb3JlVGV4dEluc2VydGVkKSBcCiAgICAgbWFjcm8od2Vi
a2l0RWRpdGFibGVDb250ZW50Q2hhbmdlZCkgXAogICAgIFwKLSAgICBtYWNybyhjYW5zaG93Y3Vy
cmVudGZyYW1lKSBcCiAgICAgbWFjcm8oY2FucGxheSkgXAogICAgIG1hY3JvKGNhbnBsYXl0aHJv
dWdoKSBcCi0gICAgbWFjcm8oZGF0YXVuYXZhaWxhYmxlKSBcCiAgICAgbWFjcm8oZHVyYXRpb25j
aGFuZ2UpIFwKICAgICBtYWNybyhlbXB0aWVkKSBcCiAgICAgbWFjcm8oZW5kZWQpIFwKLSAgICBt
YWNybyhsb2FkZWRmaXJzdGZyYW1lKSBcCisgICAgbWFjcm8obG9hZGVkZGF0YSkgXAogICAgIG1h
Y3JvKGxvYWRlZG1ldGFkYXRhKSBcCiAgICAgbWFjcm8ocGF1c2UpIFwKICAgICBtYWNybyhwbGF5
KSBcCisgICAgbWFjcm8ocGxheWluZykgXAogICAgIG1hY3JvKHJhdGVjaGFuZ2UpIFwKKyAgICBt
YWNybyhzZWVrZWQpIFwKKyAgICBtYWNybyhzZWVraW5nKSBcCiAgICAgbWFjcm8odGltZXVwZGF0
ZSkgXAogICAgIG1hY3JvKHZvbHVtZWNoYW5nZSkgXAogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAg
ICBcCiAgICAgbWFjcm8ocHJvZ3Jlc3MpIFwKICAgICBtYWNybyhzdGFsbGVkKSBcCisgICAgbWFj
cm8oc3VzcGVuZCkgXAogICAgIFwKICAgICBtYWNybyh3ZWJraXRBbmltYXRpb25FbmQpIFwKICAg
ICBtYWNybyh3ZWJraXRBbmltYXRpb25TdGFydCkgXApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAjaW5jbHVkZSAiUmVuZGVyUGFydE9i
amVjdC5oIgpAQCAtNTgsNiArNTksNyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTcwLDI3ICs3MiwzMyBAQCBIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgLCBtX2xvYWRUaW1lcih0aGlzLCAmSFRN
TE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpCiAgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0
aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3By
b2dyZXNzRXZlbnRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRp
bWVyRmlyZWQpCisgICAgLCBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lcih0aGlzLCAmSFRNTE1lZGlh
RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQpCisgICAgLCBtX3BsYXliYWNrUmF0
ZSgxLjBmKQogICAgICwgbV9kZWZhdWx0UGxheWJhY2tSYXRlKDEuMGYpCi0gICAgLCBtX25ldHdv
cmtTdGF0ZShFTVBUWSkKLSAgICAsIG1fcmVhZHlTdGF0ZShEQVRBX1VOQVZBSUxBQkxFKQotICAg
ICwgbV9iZWd1bihmYWxzZSkKLSAgICAsIG1fbG9hZGVkRmlyc3RGcmFtZShmYWxzZSkKLSAgICAs
IG1fYXV0b3BsYXlpbmcodHJ1ZSkKKyAgICAsIG1fbmV0d29ya1N0YXRlKE5FVFdPUktfRU1QVFkp
CisgICAgLCBtX3JlYWR5U3RhdGUoSEFWRV9OT1RISU5HKQogICAgICwgbV92b2x1bWUoMS4wZikK
LSAgICAsIG1fbXV0ZWQoZmFsc2UpCi0gICAgLCBtX3BhdXNlZCh0cnVlKQotICAgICwgbV9zZWVr
aW5nKGZhbHNlKQogICAgICwgbV9jdXJyZW50VGltZUR1cmluZ1NlZWsoMCkKICAgICAsIG1fcHJl
dmlvdXNQcm9ncmVzcygwKQogICAgICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKSkKLSAgICAsIG1fc2VudFN0YWxsZWRFdmVudChmYWxzZSkKLSAg
ICAsIG1fbG9hZE5lc3RpbmdMZXZlbCgwKQotICAgICwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0
aW5nTGV2ZWwoMCkKLSAgICAsIG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCi0gICAgLCBtX2luQWN0
aXZlRG9jdW1lbnQodHJ1ZSkKKyAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lKDAp
CisgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUobnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKSkKKyAgICAsIG1fbG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2UpCisgICAgLCBt
X2N1cnJlbnRTb3VyY2VOb2RlKDApCiAgICAgLCBtX3BsYXllcigwKQogICAgICwgbV9yZXN0cmlj
dGlvbnMoTm9SZXN0cmljdGlvbnMpCiAgICAgLCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxi
YWNrKDApCisgICAgLCBtX3Byb2Nlc3NpbmdMb2FkKGZhbHNlKQorICAgICwgbV9kZWxheWluZ1Ro
ZUxvYWRFdmVudChmYWxzZSkKKyAgICAsIG1faGF2ZUZpcmVkTG9hZGVkRGF0YShmYWxzZSkKKyAg
ICAsIG1faW5BY3RpdmVEb2N1bWVudCh0cnVlKQorICAgICwgbV9hdXRvcGxheWluZyh0cnVlKQor
ICAgICwgbV9tdXRlZChmYWxzZSkKKyAgICAsIG1fcGF1c2VkKHRydWUpCisgICAgLCBtX3NlZWtp
bmcoZmFsc2UpCisgICAgLCBtX3NlbnRTdGFsbGVkRXZlbnQoZmFsc2UpCisgICAgLCBtX3NlbnRF
bmRFdmVudChmYWxzZSkKKyAgICAsIG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAgLCBtX3Nl
bmRQcm9ncmVzc0V2ZW50cyh0cnVlKQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KQogICAgICwgbV9uZWVkV2lkZ2V0VXBkYXRlKGZhbHNlKQpAQCAtMTE3LDkgKzEyNSw4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgKIAogICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOwogICAgIGlmIChhdHRyTmFtZSA9PSBz
cmNBdHRyKSB7Ci0gICAgICAgIC8vIDMuMTQuOS4yLgotICAgICAgICAvLyBjaGFuZ2UgdG8gc3Jj
IGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkKCkKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBt
X25ldHdvcmtTdGF0ZSA9PSBFTVBUWSkKKyAgICAgICAgLy8gZG9uJ3QgaGF2ZSBhIHNyYyBvciBh
bnkgPHNvdXJjZT4gY2hpbGRyZW4sIHRyaWdnZXIgbG9hZAorICAgICAgICBpZiAoaW5Eb2N1bWVu
dCgpICYmIG1fbG9hZFN0YXRlID09IFdhaXRpbmdGb3JTb3VyY2UpCiAgICAgICAgICAgICBzY2hl
ZHVsZUxvYWQoKTsKICAgICB9IAogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
QEAgLTE2NiwxMCArMTczLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9E
b2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewot
ICAgIGlmIChuZXR3b3JrU3RhdGUoKSAhPSBFTVBUWSkgewotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjOwotICAgICAgICBwYXVzZShlYyk7Ci0gICAgfQorICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+
IE5FVFdPUktfRU1QVFkpCisgICAgICAgIHBhdXNlKCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKIH0KIApAQCAtMjAwLDQwICsyMDUsNTkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojppbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZVByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7
CiAgICAgaWYgKCFtX3NlbmRQcm9ncmVzc0V2ZW50cykKICAgICAgICAgcmV0dXJuOwogCisgICAg
Ly8gRklYTUU6IGRvbid0IHNjaGVkdWxlIHRpbWV1cGRhdGUgb3IgcHJvZ3Jlc3MgZXZlbnRzIHVu
bGVzcyB0aGVyZSBhcmUgcmVnaXN0ZXJlZCBsaXN0ZW5lcnMKKy8qCisgICAgaWYgKGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkucHJvZ3Jlc3NFdmVudCAmJiAhZG9jdW1lbnQoKS0+aGFzTGlzdGVu
ZXJUeXBlKERvY3VtZW50Ojp4eHh4eHhfTElTVEVORVIpKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50ICYmICFkb2N1bWVu
dCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6Onh4eHh4eF9MSVNURU5FUikpCisgICAgICAg
IHJldHVybjsKKyovCisKICAgICBib29sIHRvdGFsS25vd24gPSBtX3BsYXllciAmJiBtX3BsYXll
ci0+dG90YWxCeXRlc0tub3duKCk7CiAgICAgdW5zaWduZWQgbG9hZGVkID0gbV9wbGF5ZXIgPyBt
X3BsYXllci0+Ynl0ZXNMb2FkZWQoKSA6IDA7CiAgICAgdW5zaWduZWQgdG90YWwgPSBtX3BsYXll
ciA/IG1fcGxheWVyLT50b3RhbEJ5dGVzKCkgOiAwOwotICAgIGRpc3BhdGNoUHJvZ3Jlc3NFdmVu
dChldmVudE5hbWUsIHRvdGFsS25vd24sIGxvYWRlZCwgdG90YWwpOworCisgICAgUmVmUHRyPFBy
b2dyZXNzRXZlbnQ+IGV2dCA9IFByb2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHRvdGFs
S25vd24sIGxvYWRlZCwgdG90YWwpOworICAgIGVucXVldWVFdmVudChldnQpOworCiAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudEFzeW5jKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIG1fYXN5bmNFdmVudHNUb0Rp
c3BhdGNoLmFwcGVuZChldmVudE5hbWUpOworICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZSwgZmFsc2UsIHRydWUpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bnF1ZXVlRXZlbnQoUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMu
YXBwZW5kKGV2ZW50KTsKICAgICBpZiAoIW1fYXN5bmNFdmVudFRpbWVyLmlzQWN0aXZlKCkpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQo
VGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2
ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYzsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIG1fcGVu
ZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGVu
ZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3Vu
dDsgKytuZHgpIAorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbbmR4XS5yZWxl
YXNlKCksIGVjKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJG
aXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omxv
YWRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKIHsKLSAgICBWZWN0b3I8QXRv
bWljU3RyaW5nPiBhc3luY0V2ZW50c1RvRGlzcGF0Y2g7Ci0gICAgbV9hc3luY0V2ZW50c1RvRGlz
cGF0Y2guc3dhcChhc3luY0V2ZW50c1RvRGlzcGF0Y2gpOwotICAgIHVuc2lnbmVkIGNvdW50ID0g
YXN5bmNFdmVudHNUb0Rpc3BhdGNoLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBu
IDwgY291bnQ7ICsrbikKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoYXN5bmNFdmVudHNU
b0Rpc3BhdGNoW25dLCBmYWxzZSwgdHJ1ZSk7CisgICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRp
bmdGcm9tU291cmNlRWxlbWVudCkKKyAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAg
IGVsc2UKKyAgICAgICAgbG9hZEludGVybmFsKCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2VyaWFs
aXplVGltZU9mZnNldChmbG9hdCB0aW1lKQpAQCAtMzIxLDUyICszNDUsNTUgQEAgU3RyaW5nIEhU
TUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKGNvbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWQoRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVx
dWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSkgeworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxv
YWRSZXN0cmljdGlvbiAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsb2FkSW50
ZXJuYWwoZWMpOworICAgIGVsc2UKKyAgICAgICAgbG9hZEludGVybmFsKCk7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoKQogewotICAgIFN0cmluZyBtZWRpYVNyYzsK
LSAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZSgiIik7Ci0KLSAgICAvLyAzLjE0LjkuNC4gTG9h
ZGluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICAvLyAxCi0gICAgLy8gaWYgYW4gZXZlbnQgZ2Vu
ZXJhdGVkIGR1cmluZyBsb2FkKCkgZW5kcyB1cCByZS1lbnRlcmluZyBsb2FkKCksIHRlcm1pbmF0
ZSBwcmV2aW91cyBpbnN0YW5jZXMKLSAgICBtX2xvYWROZXN0aW5nTGV2ZWwrKzsKLSAgICBtX3Rl
cm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCA9IG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICAK
LSAgICBtX3Byb2dyZXNzRXZlbnRUaW1lci5zdG9wKCk7Ci0gICAgbV9zZW50U3RhbGxlZEV2ZW50
ID0gZmFsc2U7CisgICAgLy8gMSAtIElmIHRoZSBsb2FkKCkgbWV0aG9kIGZvciB0aGlzIGVsZW1l
bnQgaXMgYWxyZWFkeSBiZWluZyBpbnZva2VkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
IGlmIChtX3Byb2Nlc3NpbmdMb2FkKQorICAgICAgICByZXR1cm47CisgICAgbV9wcm9jZXNzaW5n
TG9hZCA9IHRydWU7CiAgICAgCisgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAgbV9sb2Fk
VGltZXIuc3RvcCgpOwotICAgIAotICAgIC8vIDIKLSAgICBpZiAobV9iZWd1bikgewotICAgICAg
ICBtX2JlZ3VuID0gZmFsc2U7CisgICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAg
bV9oYXZlRmlyZWRMb2FkZWREYXRhID0gZmFsc2U7CisKKyAgICAvLyAyIC0gQWJvcnQgYW55IGFs
cmVhZHktcnVubmluZyBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRo
bSBmb3IgdGhpcyBlbGVtZW50LgorICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOworCisgICAg
Ly8gMyAtIElmIHRoZXJlIGFyZSBhbnkgdGFza3MgZnJvbSB0aGUgbWVkaWEgZWxlbWVudCdzIG1l
ZGlhIGVsZW1lbnQgZXZlbnQgdGFzayBzb3VyY2UgaW4gCisgICAgLy8gb25lIG9mIHRoZSB0YXNr
IHF1ZXVlcywgdGhlbiByZW1vdmUgdGhvc2UgdGFza3MuCisgICAgbV9wZW5kaW5nRXZlbnRzLmNs
ZWFyKCk7CisgICAgCisgICAgLy8gNCAtIElmIHRoZSBtZWRpYSBlbGVtZW50J3MgbmV0d29ya1N0
YXRlIGlzIHNldCB0byBORVRXT1JLX0xPQURJTkcgb3IgTkVUV09SS19JRExFLCBzZXQgdGhlIAor
ICAgIC8vIGVycm9yIGF0dHJpYnV0ZSB0byBhIG5ldyBNZWRpYUVycm9yIG9iamVjdCB3aG9zZSBj
b2RlIGF0dHJpYnV0ZSBpcyBzZXQgdG8gTUVESUFfRVJSX0FCT1JURUQsIAorICAgIC8vIGFuZCBm
aXJlIGEgcHJvZ3Jlc3MgZXZlbnQgY2FsbGVkIGFib3J0IGF0IHRoZSBtZWRpYSBlbGVtZW50Lgor
ICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0xPQURJTkcgfHwgbV9uZXR3b3JrU3Rh
dGUgPT0gTkVUV09SS19JRExFKSB7CiAgICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVh
dGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQpOwotICAgICAgICBpZiAobV9zZW5kUHJv
Z3Jlc3NFdmVudHMpCi0gICAgICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2
ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8
IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgZ290byBlbmQ7
CisgICAgICAgIAorICAgICAgICAvLyBmaXJlIHN5bmNocm9ub3VzICdhYm9ydCcKKyAgICAgICAg
Ym9vbCB0b3RhbEtub3duID0gbV9wbGF5ZXIgJiYgbV9wbGF5ZXItPnRvdGFsQnl0ZXNLbm93bigp
OworICAgICAgICB1bnNpZ25lZCBsb2FkZWQgPSBtX3BsYXllciA/IG1fcGxheWVyLT5ieXRlc0xv
YWRlZCgpIDogMDsKKyAgICAgICAgdW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVy
LT50b3RhbEJ5dGVzKCkgOiAwOworICAgICAgICBkaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnRO
YW1lcygpLmFib3J0RXZlbnQsIHRvdGFsS25vd24sIGxvYWRlZCwgdG90YWwpOwogICAgIH0KICAg
ICAKLSAgICAvLyAzCisgICAgLy8gNSAKICAgICBtX2Vycm9yID0gMDsKLSAgICBtX2xvYWRlZEZp
cnN0RnJhbWUgPSBmYWxzZTsKICAgICBtX2F1dG9wbGF5aW5nID0gdHJ1ZTsKIAotICAgIC8vIDQK
LSAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXliYWNrUmF0ZSgpLCBlYyk7CisgICAgLy8g
NgorICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgIAotICAg
IC8vIDUKLSAgICBpZiAobmV0d29ya1N0YXRlKCkgIT0gRU1QVFkpIHsKLSAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBFTVBUWTsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJM
RTsKKyAgICAvLyA3CisgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkpIHsK
KyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOworICAgICAgICBtX3JlYWR5
U3RhdGUgPSBIQVZFX05PVEhJTkc7CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAg
bV9zZWVraW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3BsYXllcikgewpAQCAtMzc0LDMxICs0
MDEsNzggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoRXhjZQogICAgICAg
ICAgICAgbV9wbGF5ZXItPnNlZWsoMCk7CiAgICAgICAgIH0KICAgICAgICAgZGlzcGF0Y2hFdmVu
dEZvclR5cGUoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAg
ICBpZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2
ZWwpCi0gICAgICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAgICAgCi0gICAgLy8gNgotICAgIG1l
ZGlhU3JjID0gc2VsZWN0TWVkaWFVUkwoY29udGVudFR5cGUpOworICAgIHNlbGVjdE1lZGlhUmVz
b3VyY2UoKTsKKyAgICBtX3Byb2Nlc3NpbmdMb2FkID0gZmFsc2U7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCit7CisgICAgLy8gMSAtIElmIHRoZSBt
ZWRpYSBlbGVtZW50IGhhcyBuZWl0aGVyIGEgc3JjIGF0dHJpYnV0ZSBub3IgYW55IHNvdXJjZSBl
bGVtZW50IGNoaWxkcmVuLCBydW4gdGhlc2Ugc3Vic3RlcHMKKyAgICBTdHJpbmcgbWVkaWFTcmMg
PSBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgaWYgKCFtZWRpYVNyYyAmJiAhaGF2ZVBvdGVu
dGlhbFNvdXJjZUNoaWxkKCkpIHsKKyAgICAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291
cmNlOworCisgICAgICAgIC8vIDEgLSAgU2V0IHRoZSBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19O
T19TT1VSQ0UKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKyAg
ICAgICAgCisgICAgICAgIC8vIDIgLSBXaGlsZSB0aGUgbWVkaWEgZWxlbWVudCBoYXMgbmVpdGhl
ciBhIHNyYyBhdHRyaWJ1dGUgbm9yIGFueSBzb3VyY2UgZWxlbWVudCBjaGlsZHJlbiwgCisgICAg
ICAgIC8vIHdhaXQuIChUaGlzIHN0ZXBzIG1pZ2h0IHdhaXQgZm9yZXZlci4pCisKKyAgICAgICAg
bV9kZWxheWluZ1RoZUxvYWRFdmVudCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gMgorICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSB0cnVlOworCisgICAgLy8g
MworICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FESU5HOworCisgICAgLy8gNAorICAg
IHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQpOworCisg
ICAgLy8gNSAtIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBhIHNyYyBhdHRyaWJ1dGUsIHRoZW4g
cnVuIHRoZXNlIHN1YnN0ZXBzCisgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoIiIpOworICAg
IGlmICghbWVkaWFTcmMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwobWVkaWFTcmMpLnN0cmluZygpOworICAgICAgICBtX2xvYWRTdGF0ZSA9
IExvYWRpbmdGcm9tU3JjQXR0cjsKKyAgICAgICAgbG9hZFJlc291cmNlKG1lZGlhU3JjLCBjb250
ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIHRo
ZSBzb3VyY2UgZWxlbWVudHMgd2lsbCBiZSB1c2VkCisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9
IDA7CisgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWROZXh0U291cmNlQ2hpbGQoKQoreworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBl
KCIiKTsKKyAgICBTdHJpbmcgbWVkaWFTcmM7CisKKyAgICBtZWRpYVNyYyA9IG5leHRTb3VyY2VD
aGlsZCgmY29udGVudFR5cGUpOwogICAgIGlmIChtZWRpYVNyYy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgZ290byBlbmQ7CisgICAgICAgIG5v
bmVTdXBwb3J0ZWQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyA3Ci0g
ICAgbV9uZXR3b3JrU3RhdGUgPSBMT0FESU5HOwotICAgIAotICAgIC8vIDgKLSAgICBtX2N1cnJl
bnRTcmMgPSBtZWRpYVNyYzsKIAotICAgIC8vIDkKLSAgICBtX2JlZ3VuID0gdHJ1ZTsgICAgICAg
IAotICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykKLSAgICAgICAgZGlzcGF0Y2hQcm9ncmVz
c0V2ZW50KGV2ZW50TmFtZXMoKS5sb2Fkc3RhcnRFdmVudCwgZmFsc2UsIDAsIDApOwotICAgIGlm
IChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCkK
LSAgICAgICAgZ290byBlbmQ7Ci0gICAgCi0gICAgLy8gMTAsIDExLCAxMiwgMTMKKyAgICBtX2xv
YWRTdGF0ZSA9IExvYWRpbmdGcm9tU291cmNlRWxlbWVudDsKKyAgICBsb2FkUmVzb3VyY2UobWVk
aWFTcmMsIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVz
b3VyY2UoU3RyaW5nIHVybCwgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIC8vIFRo
ZSByZXNvdXJjZSBmZXRjaCBhbGdvcml0aG0gCisKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdP
UktfTE9BRElORzsKKworICAgIG1fY3VycmVudFNyYyA9IHVybDsKKworICAgIGlmIChtX3NlbmRQ
cm9ncmVzc0V2ZW50cykgCisgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CisKICNp
ZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgbV9wbGF5ZXIuY2xlYXIoKTsK
ICAgICBtX3BsYXllci5zZXQobmV3IE1lZGlhUGxheWVyKHRoaXMpKTsKQEAgLTQwOCwzMyArNDgy
LDc3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKEV4Y2UKICNlbmRpZgog
CiAgICAgdXBkYXRlVm9sdW1lKCk7CisKICAgICBtX3BsYXllci0+bG9hZChtX2N1cnJlbnRTcmMs
IGNvbnRlbnRUeXBlKTsKLSAgICBpZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVM
b2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgIGdvdG8gZW5kOwogICAgIAogICAgIGlmIChy
ZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAg
IAotICAgIC8vIDE0Ci0gICAgaWYgKG1fc2VuZFByb2dyZXNzRXZlbnRzKSB7Ci0gICAgICAgIG1f
cHJldmlvdXNQcm9ncmVzc1RpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIG1fcHJl
dmlvdXNQcm9ncmVzcyA9IDA7Ci0gICAgICAgIGlmIChtX2JlZ3VuKQotICAgICAgICAgICAgLy8g
MzUwbXMgaXMgbm90IG1hZ2ljLCBpdCBpcyBpbiB0aGUgc3BlYyEKLSAgICAgICAgICAgIG1fcHJv
Z3Jlc3NFdmVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMzUwKTsKLSAgICB9Cit9CisKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKQoreworICAgIG1fcHJl
dmlvdXNQcm9ncmVzc1RpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgbV9wcmV2aW91c1By
b2dyZXNzID0gMDsKKyAgICAvLyAzNTBtcyBpcyBub3QgbWFnaWMsIGl0IGlzIGluIHRoZSBzcGVj
IQorICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMzUwKTsKK30KKwor
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVkKCkKK3sKKyAgICBzdG9wUGVyaW9k
aWNUaW1lcnMoKTsKKyAgICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisgICAgbV9j
dXJyZW50U291cmNlTm9kZSA9IDA7CiAKLWVuZDoKLSAgICBBU1NFUlQobV9sb2FkTmVzdGluZ0xl
dmVsKTsKLSAgICBtX2xvYWROZXN0aW5nTGV2ZWwtLTsKKyAgICAvLyAzIC0gUmVhY2hpbmcgdGhp
cyBzdGVwIGluZGljYXRlcyB0aGF0IGVpdGhlciB0aGUgVVJMIGZhaWxlZCB0byByZXNvbHZlLCBv
ciB0aGUgbWVkaWEgCisgICAgLy8gcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIFNldCB0aGUgZXJy
b3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2JqZWN0IHdob3NlIAorICAgIC8vIGNv
ZGUgYXR0cmlidXRlIGlzIHNldCB0byBNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQuCisgICAgbV9l
cnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfTk9ORV9TVVBQ
T1JURUQpOworCisgICAgLy8gNC0gU2V0IHRoZSBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJp
YnV0ZSB0byB0aGUgTkVUV09SS19OT19TT1VSQ0UgdmFsdWUuCisgICAgbV9uZXR3b3JrU3RhdGUg
PSBORVRXT1JLX05PX1NPVVJDRTsKKworICAgIC8vIDUgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHByb2dyZXNzIGV2ZW50IGNhbGxlZCBlcnJvciBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBz
Y2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKKworICAgIC8v
IDYgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBmbGFnIHRvIGZh
bHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBsb2FkIGV2ZW50LgorICAgIG1fZGVsYXlpbmdU
aGVMb2FkRXZlbnQgPSBmYWxzZTsKKworICAgIC8vIEFib3J0IHRoZXNlIHN0ZXBzLiBVbnRpbCB0
aGUgbG9hZCgpIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgZWxlbWVudCB3b24ndCBhdHRlbXB0IHRv
IGxvYWQgYW5vdGhlciByZXNvdXJjZS4KKyAgICAKKyAgICBpZiAoaXNWaWRlbygpKQorICAgICAg
ICBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdl
KCk7CisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21F
bGVtZW50KCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVFcnJvcihQ
YXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycikKK3sKKyAgICAvLyAxIC0gVGhlIHVzZXIgYWdlbnQg
c2hvdWxkIGNhbmNlbCB0aGUgZmV0Y2hpbmcgcHJvY2Vzcy4KKyAgICBzdG9wUGVyaW9kaWNUaW1l
cnMoKTsKKyAgICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisKKyAgICAvLyAyIC0g
U2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hvc2Ug
Y29kZSBhdHRyaWJ1dGUgaXMgCisgICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElB
X0VSUl9ERUNPREUuCisgICAgbV9lcnJvciA9IGVycjsKKworICAgIC8vIDMgLSBRdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxlZCBlcnJvciBhdCB0aGUgbWVkaWEgZWxl
bWVudC4KKyAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQp
OyAKKworICAgIC8vIDMgLSBTZXQgdGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRl
IHRvIHRoZSBORVRXT1JLX0VNUFRZIHZhbHVlIGFuZCBxdWV1ZSBhIAorICAgIC8vIHRhc2sgdG8g
ZmlyZSBhIHNpbXBsZSBldmVudCBjYWxsZWQgZW1wdGllZCBhdCB0aGUgZWxlbWVudC4KKyAgICBt
X25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfRU1QVFk7CisgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkuZW1wdGllZEV2ZW50KTsKKworICAgIC8vIDQgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxh
eWluZy10aGUtbG9hZC1ldmVudCBmbGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRo
ZSBsb2FkIGV2ZW50LgorICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKworICAg
IC8vIDUgLSBBYm9ydCB0aGUgb3ZlcmFsbCByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgor
ICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOworCit9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBp
ZiAoIW1fYmVndW4pCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICBiZWdpblByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAgc2V0TmV0d29ya1N0YXRlKG1fcGxheWVyLT5uZXR3
b3JrU3RhdGUoKSk7CiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKQEAg
LTQ0NCw4NCArNTYyLDU4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRl
KE0KIHsKICAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkVtcHR5KSB7CiAgICAgICAgIC8v
IGp1c3QgdXBkYXRlIHRoZSBjYWNoZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBjYW4ndCBkbyBhbnl0
aGluZyAKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBFTVBUWTsKKyAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBORVRXT1JLX0VNUFRZOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAg
IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsID0gbV9sb2FkTmVzdGluZ0xldmVsOwot
ICAgIAotICAgIC8vIDMuMTQuOS40LiBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIC8v
IDE0Ci0gICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkKSB7Ci0gICAgICAg
IC8vZGVsZXRlIG1fcGxheWVyOwotICAgICAgICAvL21fcGxheWVyID0gMDsKLSAgICAgICAgLy8g
RklYTUUgYmV0dGVyIGVycm9yIGhhbmRsaW5nCi0gICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9y
OjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX05FVFdPUkspOwotICAgICAgICBtX2JlZ3Vu
ID0gZmFsc2U7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKLSAgICAgICAg
Ci0gICAgICAgIGluaXRBbmREaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9y
RXZlbnQpOyAKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9h
ZEJlbG93TmVzdGluZ0xldmVsKQorCisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpGb3Jt
YXRFcnJvciB8fCBzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yIHx8IHN0YXRlID09
IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcikgeworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMo
KTsKKworICAgICAgICAvLyBJZiB3ZSBmYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIGxvYWQgYSA8c291
cmNlPiBlbGVtZW50LCB0aGUgbW92aWUgd2FzIG5ldmVyIHBhcnNlZCwgYW5kIHRoZXJlIGFyZSBt
b3JlCisgICAgICAgIC8vIDxzb3VyY2U+IGNoaWxkcmVuLCBzY2hlZHVsZSB0aGUgbmV4dCBvbmUg
d2l0aG91dCByZXBvcnRpbmcgYW4gZXJyb3IKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhB
VkVfTUVUQURBVEEgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3VyY2VFbGVtZW50ICYm
IGhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpKSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWQo
KTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIG1fbmV0d29ya1N0YXRl
ID0gRU1QVFk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtFcnJvcikKKyAgICAgICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6
Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ORVRXT1JLKSk7CisgICAgICAgIGVsc2UgaWYg
KHN0YXRlID09IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcikKKyAgICAgICAgICAgIG1lZGlhRW5n
aW5lRXJyb3IoTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ERUNPREUp
KTsKKyAgICAgICAgZWxzZSBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKQor
ICAgICAgICAgICAgbm9uZVN1cHBvcnRlZCgpOwogCiAgICAgICAgIGlmIChpc1ZpZGVvKCkpCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBv
c3RlckltYWdlKCk7CiAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmVtcHRpZWRFdmVudCwgZmFsc2UsIHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAotICAgIGlmIChzdGF0ZSA+PSBNZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0
ZSA8IExPQURJTkcpCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTE9BRElORzsKLSAgICAKLSAg
ICBpZiAoc3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmIG1fbmV0d29ya1N0
YXRlIDwgTE9BREVEX01FVEFEQVRBKSB7Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTE9BREVE
X01FVEFEQVRBOwotICAgICAgICAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnRO
YW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1f
bG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUo
ZXZlbnROYW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAg
aWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVs
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVk
aWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWUgJiYgbV9uZXR3b3JrU3RhdGUgPCBMT0FERURfRklS
U1RfRlJBTUUpIHsKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBMT0FERURfRklSU1RfRlJBTUU7
Ci0gICAgICAgIAotICAgICAgICBzZXRSZWFkeVN0YXRlKENBTl9TSE9XX0NVUlJFTlRfRlJBTUUp
OwotICAgICAgICAKLSAgICAgICAgaWYgKGlzVmlkZW8oKSkKLSAgICAgICAgICAgIHN0YXRpY19j
YXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKS0+dXBkYXRlUG9zdGVySW1hZ2UoKTsKIAotICAg
ICAgICBpZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5n
TGV2ZWwpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX2xvYWRlZEZp
cnN0RnJhbWUgPSB0cnVlOwotI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAg
ICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIoKS0+
aXNJbWFnZSgpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVy
ZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsKLSAgICAgICAgfQotI2VuZGlmICAgICAgICAKKyAg
ICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OklkbGUgJiYgbV9uZXR3b3JrU3RhdGUgPiBORVRX
T1JLX0lETEUpIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG1fcGxh
eWVyLT5yZWFkeVN0YXRlKCkpIDwgSEFWRV9FTk9VR0hfREFUQSk7CisgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTkVUV09SS19JRExFOworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAg
ICAgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5zdXNwZW5kRXZlbnQpOwor
ICAgIH0KKworICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdv
cmtTdGF0ZSA8IE5FVFdPUktfTE9BRElORykgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
UmVhZHlTdGF0ZT4obV9wbGF5ZXItPnJlYWR5U3RhdGUoKSkgPCBIQVZFX0VOT1VHSF9EQVRBKTsK
KyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7CisgICAgICAgIHN0YXJ0
UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CisgICAgfQorCisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxh
eWVyOjpMb2FkZWQgJiYgbV9uZXR3b3JrU3RhdGUgPCBORVRXT1JLX0xPQURFRCkgeworICAgICAg
ICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BREVEOworICAgICAgICBzdG9wUGVyaW9kaWNU
aW1lcnMoKTsKKworICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgcmVhZHlTdGF0ZSBjaGFuZ2Vz
IG5lZWQgdG8gYmUgZGVhbHQgd2l0aCBiZWZvcmUgc2VuZGluZyB0aGUgCisgICAgICAgIC8vICds
b2FkJyBldmVudCBzbyB3ZSByZXBvcnQgJ2NhbnBsYXl0aG91Z2gnIGZpcnN0LiBUaGlzIGlzIG5l
Y2Vzc2FyeSBiZWNhdXNlIGEKKyAgICAgICAgLy8gIG1lZGlhIGVuZ2luZSByZXBvcnRzIHJlYWR5
U3RhdGUgYW5kIG5ldHdvcmtTdGF0ZSBjaGFuZ2VzIHNlcGFyYXRlbHkKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgY3VycmVudFN0YXRlID0gbV9wbGF5ZXItPnJlYWR5U3RhdGUoKTsK
KyAgICAgICAgaWYgKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KGN1cnJlbnRTdGF0ZSkgIT0gbV9y
ZWFkeVN0YXRlKQorICAgICAgICAgICAgc2V0UmVhZHlTdGF0ZShjdXJyZW50U3RhdGUpOwogCi0g
ICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5sb2FkZWRmaXJzdGZyYW1l
RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1f
dGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmNhbnNob3dj
dXJyZW50ZnJhbWVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAobV9sb2FkTmVzdGlu
Z0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIDE1Ci0gICAgaWYgKHN0YXRlID09IE1lZGlhUGxh
eWVyOjpMb2FkZWQgJiYgbV9uZXR3b3JrU3RhdGUgPCBMT0FERUQpIHsKLSAgICAgICAgbV9iZWd1
biA9IGZhbHNlOwotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IExPQURFRDsKLSAgICAgICAgbV9w
cm9ncmVzc0V2ZW50VGltZXIuc3RvcCgpOwotICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVz
c0V2ZW50KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOyAKKyAgICAgICAgIHNjaGVkdWxlUHJvZ3Jl
c3NFdmVudChldmVudE5hbWVzKCkubG9hZEV2ZW50KTsgCiAgICAgfQogfQogCkBAIC01MjksNjYg
KzYyMSwxMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlYWR5Uwogewog
ICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAotICAgIE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlIHN0YXRlID0gbV9wbGF5ZXItPnJlYWR5U3RhdGUoKTsKLSAgICBzZXRS
ZWFkeVN0YXRlKChSZWFkeVN0YXRlKXN0YXRlKTsKKyAgICBzZXRSZWFkeVN0YXRlKG1fcGxheWVy
LT5yZWFkeVN0YXRlKCkpOwogCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2so
KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUg
c3RhdGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgLy8gMy4xNC45LjYuIFRoZSByZWFkeSBzdGF0ZXMK
LSAgICBpZiAobV9yZWFkeVN0YXRlID09IHN0YXRlKQorICAgIFJlYWR5U3RhdGUgb2xkU3RhdGUg
PSBtX3JlYWR5U3RhdGU7CisgICAgbV9yZWFkeVN0YXRlID0gc3RhdGljX2Nhc3Q8UmVhZHlTdGF0
ZT4oc3RhdGUpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBvbGRTdGF0ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIGJvb2wgd2FzQWN0aXZlbHlQbGF5aW5nID0gYWN0aXZlbHlQbGF5
aW5nKCk7Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci0gICAgCi0gICAgaWYgKHN0YXRlID49
IENBTl9QTEFZKQorICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEpCiAg
ICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwogICAgIAotICAgIGlmIChuZXR3b3JrU3RhdGUoKSA9
PSBFTVBUWSkKKyAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGlmIChzdGF0ZSA9PSBEQVRBX1VOQVZBSUxBQkxFKSB7Ci0g
ICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5kYXRhdW5hdmFpbGFibGVF
dmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAod2FzQWN0aXZlbHlQbGF5aW5nKSB7Ci0g
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2
ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVu
dE5hbWVzKCkud2FpdGluZ0V2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKHN0YXRlID09IENBTl9TSE9XX0NVUlJFTlRfRlJBTUUpIHsKLSAgICAgICAgaWYgKG1f
bG9hZGVkRmlyc3RGcmFtZSkKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50
TmFtZXMoKS5jYW5zaG93Y3VycmVudGZyYW1lRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAg
aWYgKHdhc0FjdGl2ZWx5UGxheWluZykgewotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5
cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLndhaXRpbmdFdmVudCwgZmFsc2Us
IHRydWUpOworCisgICAgaWYgKG1fc2Vla2luZyAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJF
TlRfREFUQSkgeworICAgICAgICAvLyA0LjguMTAuMTAsIHN0ZXAgOQorICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWVraW5nRXZlbnQpOworICAgICAgICBtX3NlZWtpbmcgPSBm
YWxzZTsKKyAgICB9CisKKyAgICBib29sIHdhc1BvdGVudGlhbGx5UGxheWluZyA9IHBvdGVudGlh
bGx5UGxheWluZygpOworICAgIGlmICh3YXNQb3RlbnRpYWxseVBsYXlpbmcgJiYgbV9yZWFkeVN0
YXRlIDwgSEFWRV9GVVRVUkVfREFUQSkgeworICAgICAgICAvLyA0LjguMTAuOQorICAgICAgICBz
Y2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxzZSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLndhaXRpbmdFdmVudCk7CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+
PSBIQVZFX01FVEFEQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9NRVRBREFUQSkgeworICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKKyAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkubG9hZGVkbWV0YWRhdGFFdmVudCk7CisKKyNpZiAh
RU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgICAgIGlmIChyZW5kZXJlcigpICYm
ICFyZW5kZXJlcigpLT5pc0ltYWdlKCkpIHsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRl
clZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsKICAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAoc3RhdGUgPT0gQ0FOX1BMQVkpIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZv
clR5cGUoZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudCwgZmFsc2UsIHRydWUpOwotICAgIH0gZWxz
ZSBpZiAoc3RhdGUgPT0gQ0FOX1BMQVlfVEhST1VHSCkgewotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkuY2FucGxheXRocm91Z2hFdmVudCwgZmFsc2UsIHRydWUpOwor
I2VuZGlmICAgICAgICAKKyAgICAgICAgbV9kZWxheWluZ1RoZUxvYWRFdmVudCA9IGZhbHNlOwor
ICAgICAgICBtX3BsYXllci0+c2VlaygwKTsKKyAgICB9CisKKyAgICAvLyA0LjguMTAuNyBzYXlz
IGxvYWRlZGRhdGEgaXMgc2VudCBvbmx5IHdoZW4gdGhlIG5ldyBzdGF0ZSAqaXMqIEhBVkVfQ1VS
UkVOVF9EQVRBOiAiSWYgdGhlCisgICAgLy8gcHJldmlvdXMgcmVhZHkgc3RhdGUgd2FzIEhBVkVf
TUVUQURBVEEgYW5kIHRoZSBuZXcgcmVhZHkgc3RhdGUgaXMgSEFWRV9DVVJSRU5UX0RBVEEiLCAK
KyAgICAvLyBidXQgdGhlIGV2ZW50IHRhYmxlIGF0IHRoZSBlbmQgb2YgdGhlIHNwZWMgc2F5cyBp
dCBpcyBzZW50IHdoZW46ICJyZWFkeVN0YXRlIG5ld2x5IAorICAgIC8vIGluY3JlYXNlZCB0byBI
QVZFX0NVUlJFTlRfREFUQSAgb3IgZ3JlYXRlciBmb3IgdGhlIGZpcnN0IHRpbWUiCisgICAgLy8g
V2UgZ28gd2l0aCB0aGUgbGF0ZXIgYmVjYXVzZSBpdCBzZWVtcyB1c2VmdWwgdG8gY291bnQgb24g
Z2V0dGluZyB0aGlzIGV2ZW50CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRf
REFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBICYmICFtX2hhdmVGaXJlZExvYWRl
ZERhdGEpIHsKKyAgICAgICAgbV9oYXZlRmlyZWRMb2FkZWREYXRhID0gdHJ1ZTsKKyAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkubG9hZGVkZGF0YUV2ZW50KTsKKyAgICB9CisKKyAg
ICBib29sIGlzUG90ZW50aWFsbHlQbGF5aW5nID0gcG90ZW50aWFsbHlQbGF5aW5nKCk7CisgICAg
aWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSAmJiBvbGRTdGF0ZSA+PSBIQVZF
X0ZVVFVSRV9EQVRBKSB7CisgICAgICAgIGlmIChpc1BvdGVudGlhbGx5UGxheWluZykKKyAgICAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndhaXRpbmdFdmVudCk7CisgICAgfQor
CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDw9
IEhBVkVfQ1VSUkVOVF9EQVRBKSB7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LmNhbnBsYXlFdmVudCk7CisgICAgICAgIGlmIChpc1BvdGVudGlhbGx5UGxheWluZykKKyAgICAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisKKyAgICAg
ICAgaWYgKGlzVmlkZW8oKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1l
bnQqPih0aGlzKS0+dXBkYXRlUG9zdGVySW1hZ2UoKTsKKyAgICB9CisKKyAgICBpZiAobV9yZWFk
eVN0YXRlID09IEhBVkVfRU5PVUdIX0RBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX0VOT1VHSF9EQVRB
KSB7CisgICAgICAgIGlmIChvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudCk7CisKKyAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuY2FucGxheXRocm91Z2hFdmVudCk7CisKKyAgICAg
ICAgaWYgKGlzUG90ZW50aWFsbHlQbGF5aW5nICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9E
QVRBKQorICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50
KTsKKwogICAgICAgICBpZiAobV9hdXRvcGxheWluZyAmJiBtX3BhdXNlZCAmJiBhdXRvcGxheSgp
KSB7CiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwotICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudEZvclR5cGUoZXZlbnROYW1lcygpLnBsYXlFdmVudCwgZmFsc2UsIHRydWUpOworICAgICAg
ICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKKyAgICAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CiAgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaXNWaWRlbygpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZGVv
RWxlbWVudCo+KHRoaXMpLT51cGRhdGVQb3N0ZXJJbWFnZSgpOwogICAgIH0KKwogICAgIHVwZGF0
ZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRU
aW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKIHsKICAgICBBU1NFUlQobV9wbGF5
ZXIpOworICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0lETEUpCisgICAgICAgIHJl
dHVybjsKKwogICAgIHVuc2lnbmVkIHByb2dyZXNzID0gbV9wbGF5ZXItPmJ5dGVzTG9hZGVkKCk7
CiAgICAgZG91YmxlIHRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CiAgICAgZG91YmxlIHRpbWVk
ZWx0YSA9IHRpbWUgLSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwotICAgIAorCiAgICAgaWYgKHBy
b2dyZXNzID09IG1fcHJldmlvdXNQcm9ncmVzcykgewogICAgICAgICBpZiAodGltZWRlbHRhID4g
My4wICYmICFtX3NlbnRTdGFsbGVkRXZlbnQpIHsKLSAgICAgICAgICAgIGluaXRBbmREaXNwYXRj
aFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLnN0YWxsZWRFdmVudCk7CisgICAgICAgICAgICBz
Y2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLnN0YWxsZWRFdmVudCk7CiAgICAgICAg
ICAgICBtX3NlbnRTdGFsbGVkRXZlbnQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkucHJvZ3Jl
c3NFdmVudCk7CisgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkucHJv
Z3Jlc3NFdmVudCk7CiAgICAgICAgIG1fcHJldmlvdXNQcm9ncmVzcyA9IHByb2dyZXNzOwogICAg
ICAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lID0gdGltZTsKICAgICAgICAgbV9zZW50U3RhbGxl
ZEV2ZW50ID0gZmFsc2U7CkBAIC01OTcsMzcgKzczOCw0NSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnByb2dyZXNzRXZlbnRUaW1lCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VlayhmbG9h
dCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyAzLjE0LjkuOC4gU2Vla2luZwor
ICAgIC8vIDQuOC4xMC4xMC4gU2Vla2luZwogICAgIC8vIDEKLSAgICBpZiAobmV0d29ya1N0YXRl
KCkgPCBMT0FERURfTUVUQURBVEEpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IEhBVkVfTk9U
SElORyB8fCAhbV9wbGF5ZXIpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIDIKICAgICB0aW1lID0gbWluKHRpbWUsIGR1
cmF0aW9uKCkpOworCisgICAgLy8gMwogICAgIHRpbWUgPSBtYXgodGltZSwgMC4wZik7Ci0gICAg
Ci0gICAgLy8gNgorCisgICAgLy8gNAogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZVJh
bmdlcyA9IHNlZWthYmxlKCk7CiAgICAgaWYgKCFzZWVrYWJsZVJhbmdlcy0+Y29udGFpbih0aW1l
KSkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIC8vIDcKKyAgICAvLyBhdm9pZCBnZW5lcmF0aW5nIGV2ZW50cyB3aGVuIHRo
ZSB0aW1lIHdvbid0IGFjdHVhbGx5IGNoYW5nZQorICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1l
KCk7CisgICAgaWYgKHRpbWUgPT0gbm93KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA1CiAg
ICAgbV9jdXJyZW50VGltZUR1cmluZ1NlZWsgPSB0aW1lOwogCi0gICAgLy8gOAorICAgIC8vIDYg
LSBzZXQgdGhlIHNlZWtpbmcgZmxhZywgaXQgd2lsbCBiZSBjbGVhcmVkIHdoZW4gdGhlIGVuZ2lu
ZSB0ZWxscyBpcyB0aGUgdGltZSBoYXMgYWN0dWFsbHkgY2hhbmdlZAogICAgIG1fc2Vla2luZyA9
IHRydWU7Ci0gICAgCi0gICAgLy8gOQotICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFt
ZXMoKS50aW1ldXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAKKworICAgIC8vIDcKKyAg
ICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxzZSk7CisKKyAgICAvLyA4IC0gdGhpcyBpcyBj
b3ZlcmVkLCBpZiBuZWNlc3NhcnksIHdoZW4gdGhlIGVuZ2luZSBzaWduYWxzIGEgcmVhZHlzdGF0
ZSBjaGFuZ2UKKwogICAgIC8vIDEwCi0gICAgLy8gQXMgc29vbiBhcyB0aGUgdXNlciBhZ2VudCBo
YXMgZXN0YWJsaXNoZWQgd2hldGhlciBvciBub3QgdGhlIG1lZGlhIGRhdGEgZm9yIHRoZSBuZXcg
cGxheWJhY2sgcG9zaXRpb24gaXMgYXZhaWxhYmxlLCAKLSAgICAvLyBhbmQsIGlmIGl0IGlzLCBk
ZWNvZGVkIGVub3VnaCBkYXRhIHRvIHBsYXkgYmFjayB0aGF0IHBvc2l0aW9uLCB0aGUgc2Vla2lu
ZyBET00gYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIGZhbHNlLgotICAgIGlmIChtX3BsYXllcikK
LSAgICAgICAgbV9wbGF5ZXItPnNlZWsodGltZSk7CisgICAgbV9wbGF5ZXItPnNlZWsodGltZSk7
CisgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKIH0KIAogSFRNTE1lZGlhRWxlbWVudDo6UmVh
ZHlTdGF0ZSBIVE1MTWVkaWFFbGVtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKQEAgLTY1Nyw3ICs4
MDYsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDdXJyZW50VGltZShmbAogCiBmbG9h
dCBIVE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGxh
eWVyID8gbV9wbGF5ZXItPmR1cmF0aW9uKCkgOiAwOworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0g
SEFWRV9NRVRBREFUQSkKKyAgICAgICAgcmV0dXJuIG1fcGxheWVyLT5kdXJhdGlvbigpOworCisg
ICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7CiB9CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkKCkgY29uc3QKQEAgLTY3MCwxNSArODIyLDExIEBAIGZs
b2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1IKICAgICByZXR1cm4gbV9kZWZh
dWx0UGxheWJhY2tSYXRlOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQ
bGF5YmFja1JhdGUoZmxvYXQgcmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSkKIHsKLSAgICBpZiAo
cmF0ZSA9PSAwLjBmKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSAhPSByYXRlKSB7
CiAgICAgICAgIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSA9IHJhdGU7Ci0gICAgICAgIGRpc3BhdGNo
RXZlbnRBc3luYyhldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9CiB9CiAKQEAgLTY4
NywxNiArODM1LDE0IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGMK
ICAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+cmF0ZSgpIDogMDsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUoZmxvYXQgcmF0ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCByYXRl
KQogewotICAgIGlmIChyYXRlID09IDAuMGYpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3BsYXliYWNrUmF0ZSAhPSByYXRlKSB7
CisgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKICAgICB9Ci0gICAgaWYgKG1fcGxheWVyICYm
IG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0ZSkgeworICAgIGlmIChtX3BsYXllciAmJiBwb3RlbnRp
YWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUpCiAgICAgICAgIG1fcGxh
eWVyLT5zZXRSYXRlKHJhdGUpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnROYW1l
cygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgfQogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmVuZGVkKCkgY29uc3QKQEAgLTcxNCw3MCArODYwLDY1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0QXV0b3BsYXkoYm9vbCAKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGF1dG9wbGF5QXR0
ciwgYik7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rp
b25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VS
ZXN0cmljdGlvbiAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKLSAgICBwbGF5SW50ZXJuYWwoZWMpOworICAgIHBsYXlJbnRlcm5hbCgpOwogfQog
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIHsKLSAgICAvLyAzLjE0Ljku
Ny4gUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICBpZiAoIW1fcGxheWVyIHx8IG5ldHdv
cmtTdGF0ZSgpID09IEVNUFRZKSB7Ci0gICAgICAgIGVjID0gMDsKLSAgICAgICAgbG9hZChlYyk7
Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgRXhjZXB0
aW9uQ29kZSB1bnVzZWQ7CisgICAgLy8gNC44LjEwLjkuIFBsYXlpbmcgdGhlIG1lZGlhIHJlc291
cmNlCisgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZ
KQorICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKwogICAgIGlmIChlbmRlZFBsYXliYWNrKCkpIHsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAgIHNlZWsoMCwgdW51c2VkKTsK
ICAgICB9Ci0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSwgdW51c2Vk
KTsKKyAgICAKKyAgICAvLyBGSVhNRTogd2hhdCB0byBkbyBoZXJlIGlmIGhhdmVuJ3QgbG9hZGVk
IHBsYXllciB5ZXQgPz8/Pz8KKyAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXliYWNrUmF0
ZSgpKTsKICAgICAKICAgICBpZiAobV9wYXVzZWQpIHsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxz
ZTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwot
ICAgIH0KKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKIAor
ICAgICAgICBpZiAobV9yZWFkeVN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICAg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50KTsKKyAgICAgICAgZWxz
ZSBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEpCisgICAgICAgICAgICBzY2hl
ZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQpOworICAgIH0KICAgICBtX2F1dG9w
bGF5aW5nID0gZmFsc2U7CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZShFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cGF1c2UoKQogewotICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2Vz
dHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbiAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
IHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICBpZiAobV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlUmVzdHJpY3Rpb24gJiYgIXByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGF1c2VJ
bnRlcm5hbChlYyk7CisgICAgcGF1c2VJbnRlcm5hbCgpOwogfQogCiAKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGF1c2VJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGF1c2VJbnRlcm5hbCgpCiB7Ci0gICAgLy8gMy4xNC45LjcuIFBsYXlpbmcgdGhl
IG1lZGlhIHJlc291cmNlCi0gICAgaWYgKCFtX3BsYXllciB8fCBuZXR3b3JrU3RhdGUoKSA9PSBF
TVBUWSkgewotICAgICAgICBlYyA9IDA7Ci0gICAgICAgIGxvYWQoZWMpOwotICAgICAgICBpZiAo
ZWMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIDQuOC4xMC45LiBQbGF5aW5n
IHRoZSBtZWRpYSByZXNvdXJjZQorICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUg
PT0gTkVUV09SS19FTVBUWSkKKyAgICAgICAgc2NoZWR1bGVMb2FkKCk7CiAKKyAgICBtX2F1dG9w
bGF5aW5nID0gZmFsc2U7CisgICAgCiAgICAgaWYgKCFtX3BhdXNlZCkgewogICAgICAgICBtX3Bh
dXNlZCA9IHRydWU7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRBc3luYyhldmVudE5hbWVzKCkudGlt
ZXVwZGF0ZUV2ZW50KTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFtZXMoKS5w
YXVzZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOworICAg
ICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKICAgICB9CiAKLSAg
ICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7Ci0gICAgCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiB9
CiAKQEAgLTgyMiw3ICs5NjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZShm
bG9hdCB2CiAgICAgaWYgKG1fdm9sdW1lICE9IHZvbCkgewogICAgICAgICBtX3ZvbHVtZSA9IHZv
bDsKICAgICAgICAgdXBkYXRlVm9sdW1lKCk7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRBc3luYyhl
dmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CiAgICAgfQogfQogCkBAIC04MzYsMTggKzk3
NywxOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0CiAgICAgaWYg
KG1fbXV0ZWQgIT0gbXV0ZWQpIHsKICAgICAgICAgbV9tdXRlZCA9IG11dGVkOwogICAgICAgICB1
cGRhdGVWb2x1bWUoKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFtZXMoKS52
b2x1bWVjaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZv
bHVtZWNoYW5nZUV2ZW50KTsKICAgICB9CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9n
Z2xlUGxheVN0YXRlKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0
b2dnbGVQbGF5U3RhdGUoKQogewogICAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCB0aGUgaW50ZXJu
YWwgcGxheS9wYXVzZSBtZXRob2RzLCB3aGljaCBkb24ndCBjaGVjayByZXN0cmljdGlvbnMsIGJl
Y2F1c2UKICAgICAvLyB0aGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBidWlsdC1p
biBtZWRpYSBjb250cm9sbGVyCiAgICAgaWYgKGNhblBsYXkoKSkKLSAgICAgICAgcGxheUludGVy
bmFsKGVjKTsKKyAgICAgICAgcGxheUludGVybmFsKCk7CiAgICAgZWxzZSAKLSAgICAgICAgcGF1
c2VJbnRlcm5hbChlYyk7CisgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKIH0KIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpiZWdpblNjcnViYmluZygpCkBAIC04NTcsOCArOTk4LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnViYmluZygpCiAgICAgICAgICAgICAvLyBCZWNhdXNl
IGEgbWVkaWEgZWxlbWVudCBzdGF5cyBpbiBub24tcGF1c2VkIHN0YXRlIHdoZW4gaXQgcmVhY2hl
cyBlbmQsIHBsYXliYWNrIHJlc3VtZXMgCiAgICAgICAgICAgICAvLyB3aGVuIHRoZSBzbGlkZXIg
aXMgZHJhZ2dlZCBmcm9tIHRoZSBlbmQgdG8gYW5vdGhlciBwb3NpdGlvbiB1bmxlc3Mgd2UgcGF1
c2UgZmlyc3QuIERvIAogICAgICAgICAgICAgLy8gYSAiaGFyZCBwYXVzZSIgc28gYW4gZXZlbnQg
aXMgZ2VuZXJhdGVkLCBzaW5jZSB3ZSB3YW50IHRvIHN0YXkgcGF1c2VkIGFmdGVyIHNjcnViYmlu
ZyBmaW5pc2hlcy4KLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICBw
YXVzZShlYyk7CisgICAgICAgICAgICBwYXVzZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gTm90IGF0IHRoZSBlbmQgYnV0IHdlIHN0aWxsIHdhbnQgdG8gcGF1c2UgcGxheWJh
Y2sgc28gdGhlIG1lZGlhIGVuZ2luZSBkb2Vzbid0IHRyeSB0bwogICAgICAgICAgICAgLy8gY29u
dGludWUgcGxheWluZyBkdXJpbmcgc2NydWJiaW5nLiBQYXVzZSB3aXRob3V0IGdlbmVyYXRpbmcg
YW4gZXZlbnQgYXMgd2Ugd2lsbCAKQEAgLTg3NCw0MiArMTAxNCwxMDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjplbmRTY3J1YmJpbmcoKQogICAgICAgICBzZXRQYXVzZWRJbnRlcm5hbChmYWxz
ZSk7CiB9CiAKKy8vIFRoZSBzcGVjIHNheXMgdG8gZmlyZSBwZXJpb2RpYyB0aW1ldXBkYXRlIGV2
ZW50cyAodGhvc2Ugc2VudCB3aGlsZSBwbGF5aW5nKSBldmVyeQorLy8gIjE1IHRvIDI1MG1zIiwg
d2UgY2hvb3NlIHRoZSBzbG93ZXN0IGZyZXF1ZW5jeQorY29uc3QgZG91YmxlIG1heFRpbWV1cGRh
dGVFdmVudEZyZXF1ZW5jeSA9IDAuMjU7CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RhcnRQ
bGF5YmFja1Byb2dyZXNzVGltZXIoKQoreworICAgIGlmIChtX3BsYXliYWNrUHJvZ3Jlc3NUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NU
aW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIG1fcHJldmlvdXNQcm9ncmVzcyA9IDA7Cisg
ICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3RhcnRSZXBlYXRpbmcobWF4VGltZXVwZGF0ZUV2
ZW50RnJlcXVlbmN5KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dy
ZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCit7CisgICAgQVNTRVJUKG1f
cGxheWVyKTsKKyAgICBpZiAoIW1fcGxheWJhY2tSYXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCh0cnVlKTsKKyAgICAKKyAgICAvLyBGSVhNRTogZGVh
bCB3aXRoIGN1ZSByYW5nZXMgaGVyZQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVk
dWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCkKK3sKKyAgICBkb3VibGUgbm93
ID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSB0aW1lZGVsdGEgPSBub3cgLSBtX2xh
c3RUaW1lVXBkYXRlRXZlbnRXYWxsVGltZTsKKworICAgIC8vIHRocm90dGxlIHRoZSBwZXJpb2Rp
YyBldmVudHMKKyAgICBpZiAocGVyaW9kaWNFdmVudCAmJiB0aW1lZGVsdGEgPCBtYXhUaW1ldXBk
YXRlRXZlbnRGcmVxdWVuY3kpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNvbWUgbWVkaWEg
ZW5naW5lcyBtYWtlIG11bHRpcGxlICJ0aW1lIGNoYW5nZWQiIGNhbGxiYWNrcyBhdCB0aGUgc2Ft
ZSB0aW1lLCBidXQgd2Ugb25seSB3YW50IG9uZQorICAgIC8vIGV2ZW50IGF0IGEgZ2l2ZW4gdGlt
ZSBzbyBmaWx0ZXIgaGVyZQorICAgIGZsb2F0IG1vdmllVGltZSA9IG1fcGxheWVyID8gbV9wbGF5
ZXItPmN1cnJlbnRUaW1lKCkgOiAwOworICAgIGlmIChtb3ZpZVRpbWUgIT0gbV9sYXN0VGltZVVw
ZGF0ZUV2ZW50TW92aWVUaW1lKSB7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnRpbWV1cGRhdGVFdmVudCk7CisgICAgICAgIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1l
ID0gbm93OworICAgICAgICBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUgPSBtb3ZpZVRp
bWU7CisgICAgfQorfQorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXkoKSBjb25zdAog
ewotICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG5ldHdvcmtTdGF0ZSgpIDwgTE9B
REVEX01FVEFEQVRBOworICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG1fcmVhZHlT
dGF0ZSA8IEhBVkVfTUVUQURBVEE7CiB9CiAKLVN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3RNZWRpYVVSTChDb250ZW50VHlwZSYgY29udGVudFR5cGUpCitib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpCiB7Ci0gICAgLy8gMy4xNC45LjIuIExvY2F0
aW9uIG9mIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIFN0cmluZyBtZWRpYVNyYyA9IGdldEF0dHJp
YnV0ZShzcmNBdHRyKTsKLSAgICBpZiAobWVkaWFTcmMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZv
ciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpIHsKLSAgICAgICAgICAgICAg
ICBIVE1MU291cmNlRWxlbWVudCogc291cmNlID0gc3RhdGljX2Nhc3Q8SFRNTFNvdXJjZUVsZW1l
bnQqPihuKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS0+aGFzQXR0cmlidXRlKHNyY0F0
dHIpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCi0gICAgICAgICAgICAgICAgaWYg
KHNvdXJjZS0+aGFzQXR0cmlidXRlKG1lZGlhQXR0cikpIHsKLSAgICAgICAgICAgICAgICAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFt
ZSgpLCByZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDApOwotICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IE1lZGlhTGlzdDo6Y3JlYXRlQWxsb3dp
bmdEZXNjcmlwdGlvblN5bnRheChzb3VyY2UtPm1lZGlhKCkpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIXNjcmVlbkV2YWwuZXZhbChtZWRpYS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNv
dXJjZS0+aGFzQXR0cmlidXRlKHR5cGVBdHRyKSkgewotICAgICAgICAgICAgICAgICAgICBDb250
ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGUgd2l0aCBhbGwg
cGFyYW1ldGVycyBpbiBwbGFjZSBzbyB0aGUgbWVkaWEgZW5naW5lIGNhbiB1c2UgdGhlbQotICAg
ICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG1lZGlhU3JjID0gc291cmNlLT5zcmMoKS5zdHJpbmcoKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAvLyBTdGFzaCB0aGUgY3VycmVu
dCA8c291cmNlPiBub2RlIHNvIHdlIGNhbiByZXN0b3JlIGl0IGFmdGVyIGNoZWNraW5nCisgICAg
Ly8gdG8gc2VlIHRoZXJlIGlzIGFub3RoZXIgcG90ZW50aWFsCisgICAgTm9kZSogY3VycmVudFNv
dXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOworICAgIFN0cmluZyBuZXh0VXJsID0gbmV4
dFNvdXJjZUNoaWxkKCk7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IGN1cnJlbnRTb3VyY2VO
b2RlOworCisgICAgcmV0dXJuICFuZXh0VXJsLmlzRW1wdHkoKTsKK30KKworU3RyaW5nIEhUTUxN
ZWRpYUVsZW1lbnQ6Om5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAqY29udGVudFR5cGUpCit7
CisgICAgU3RyaW5nIG1lZGlhU3JjOworICAgIGJvb2wgbG9va2luZ0ZvclByZXZpb3VzTm9kZSA9
IG1fY3VycmVudFNvdXJjZU5vZGU7CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxk
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghbm9k
ZS0+aGFzVGFnTmFtZShzb3VyY2VUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKGxvb2tpbmdGb3JQcmV2aW91c05vZGUpIHsKKyAgICAgICAgICAgIGlmIChtX2N1cnJl
bnRTb3VyY2VOb2RlID09IG5vZGUpCisgICAgICAgICAgICAgICAgbG9va2luZ0ZvclByZXZpb3Vz
Tm9kZSA9IGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxIVE1MU291
cmNlRWxlbWVudCo+KG5vZGUpOworICAgICAgICBpZiAoIXNvdXJjZS0+aGFzQXR0cmlidXRlKHNy
Y0F0dHIpKQorICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICBpZiAoc291cmNlLT5oYXNB
dHRyaWJ1dGUobWVkaWFBdHRyKSkgeworICAgICAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBz
Y3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFtZSgpLCByZW5kZXJlcigpID8gcmVu
ZGVyZXIoKS0+c3R5bGUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVk
aWEgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgoc291cmNlLT5t
ZWRpYSgpKTsKKyAgICAgICAgICAgIGlmICghc2NyZWVuRXZhbC5ldmFsKG1lZGlhLmdldCgpKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoc291cmNl
LT5oYXNBdHRyaWJ1dGUodHlwZUF0dHIpKSB7CisgICAgICAgICAgICBDb250ZW50VHlwZSB0eXBl
KHNvdXJjZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGlmICghTWVkaWFQbGF5ZXI6OnN1cHBvcnRz
VHlwZSh0eXBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8g
cmV0dXJuIHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBzbyB0aGUgbWVkaWEgZW5n
aW5lIGNhbiB1c2UgdGhlbQorICAgICAgICAgICAgaWYgKGNvbnRlbnRUeXBlKQorICAgICAgICAg
ICAgICAgICpjb250ZW50VHlwZSA9IHR5cGU7CisgICAgICAgIH0KKyAgICAgICAgbWVkaWFTcmMg
PSBzb3VyY2UtPnNyYygpLnN0cmluZygpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0g
bm9kZTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgaWYgKCFtZWRpYVNyYy5pc0VtcHR5
KCkpCiAgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobWVkaWFTcmMp
LnN0cmluZygpOworCiAgICAgcmV0dXJuIG1lZGlhU3JjOwogfQogCkBAIC05MTcsMjIgKzExMjIs
MzUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaAogewogICAgIGJl
Z2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAotICAgIGlmIChyZWFkeVN0YXRl
KCkgPj0gQ0FOX1BMQVkpCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRfREFU
QSAmJiBtX3NlZWtpbmcpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuc2Vl
a2VkRXZlbnQpOwogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKKyAgICB9CiAgICAgCisgICAg
Ym9vbCBkaWRMb29wID0gZmFsc2U7CiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAg
ICBpZiAobm93ID49IGR1cmF0aW9uKCkpIHsKKyAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOwor
ICAgIGlmIChub3cgPj0gZHVyKSB7CiAgICAgICAgIGlmIChsb29wKCkpIHsKLSAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICBzZWVrKDAsIGVjKTsKLSAgICAgICAgICAg
IGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIGZhbHNl
LCB0cnVlKTsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKKyAg
ICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICBzZWVrKDAsIGln
bm9yZWRFeGNlcHRpb24pOworICAgICAgICAgICAgZGlkTG9vcCA9IHRydWU7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkudGlt
ZXVwZGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9y
VHlwZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAg
aWYgKCFtX3NlbnRFbmRFdmVudCkgeworICAgICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZQorICAgICAgICBtX3NlbnRF
bmRFdmVudCA9IGZhbHNlOwogCi0gICAgdXBkYXRlUGxheVN0YXRlKCk7CisgICAgLy8gRG9uJ3Qg
Y2hlY2sgcGxheSBzdGF0ZSBpZiB3ZSBqdXN0IGxvb3BlZCBhcyB0aGUgbWVkaWEgZW5naW5lIG1h
eSBoYXZlIHBhdXNlZCBwbGF5YmFjayBhbmQgd2UgZG9uJ3QKKyAgICAvLyB3YW50IHRvIHBvc3Qg
YW5vdGhlciBwbGF5IGV2ZW50CisgICAgaWYgKCFkaWRMb29wKQorICAgICAgICB1cGRhdGVQbGF5
U3RhdGUoKTsKIAogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CkBA
IC05NTIsNiArMTE3MCw0MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9s
dW1lCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciop
Cit7CisgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOworI2lmICFFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICBy
ZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgICAgICBpZiAoIXJlbmRlcmVyKCkt
PmlzSW1hZ2UoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVy
ZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsKKyAgICB9CisjZW5kaWYgICAgICAgIAorICAgIGVu
ZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit7CisgICAgYmVnaW5Q
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworICAgIC8vIFN0YXNoIHRoZSByYXRlIGlu
IGNhc2UgdGhlIG9uZSB3ZSB0cmllZCB0byBzZXQgaXNuJ3Qgd2hhdCB0aGUgZW5naW5lIGlzCisg
ICAgLy8gdXNpbmcgKGVnLiBpdCBjYW4ndCBoYW5kbGUgdGhlIHJhdGUgd2Ugc2V0KQorICAgIG1f
cGxheWJhY2tSYXRlID0gbV9wbGF5ZXItPnJhdGUoKTsKKyAgICBlbmRQcm9jZXNzaW5nTWVkaWFQ
bGF5ZXJDYWxsYmFjaygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
U2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxh
eWVyQ2FsbGJhY2soKTsKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAg
aWYgKHJlbmRlcmVyKCkgJiYgIXJlbmRlcmVyKCktPmlzSW1hZ2UoKSkKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVmlkZW8qPihyZW5kZXJlcigpKS0+dmlkZW9TaXplQ2hhbmdlZCgpOworI2Vu
ZGlmICAgICAgICAKKyAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworfQor
CisKIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDo6YnVmZmVyZWQoKSBj
b25zdAogewogICAgIC8vIEZJWE1FIHJlYWwgcmFuZ2VzIHN1cHBvcnQKQEAgLTk3NCwxNiArMTIy
NiwzMyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6CiAgICAgcmV0
dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZSgwLCBtX3BsYXllci0+bWF4VGltZVNlZWthYmxlKCkpOwog
fQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFjdGl2ZWx5UGxheWluZygpIGNvbnN0Citib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFwYXVzZWQoKSAmJiByZWFkeVN0YXRlKCkgPj0gQ0FOX1BMQVkgJiYgIWVuZGVkUGxheWJh
Y2soKTsgLy8gJiYgIXN0b3BwZWREdWVUb0Vycm9ycygpICYmICFwYXVzZWRGb3JVc2VySW50ZXJh
Y3Rpb24oKTsKKyAgICByZXR1cm4gIXBhdXNlZCgpICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZV
VFVSRV9EQVRBICYmICFlbmRlZFBsYXliYWNrKCkgJiYgIXN0b3BwZWREdWVUb0Vycm9ycygpICYm
ICFwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjplbmRlZFBsYXliYWNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV0d29ya1N0YXRlKCkgPj0g
TE9BREVEX01FVEFEQVRBICYmIGN1cnJlbnRUaW1lKCkgPj0gZHVyYXRpb24oKSAmJiAhbG9vcCgp
OworICAgIHJldHVybiBtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSAm
JiBjdXJyZW50VGltZSgpID49IGR1cmF0aW9uKCkgJiYgIWxvb3AoKTsKIH0KKworYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjpzdG9wcGVkRHVlVG9FcnJvcnMoKSBjb25zdAoreworICAgIGlmIChtX3Jl
YWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSAmJiBtX2Vycm9yKSB7CisgICAgICAgIFJlZlB0cjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcyA9IHNlZWthYmxlKCk7CisgICAgICAgIGlmICghc2Vl
a2FibGVSYW5nZXMtPmNvbnRhaW4oY3VycmVudFRpbWUoKSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CiAgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpIGNvbnN0Cit7CisvLyAgICByZXR1
cm4gIXBhdXNlZCgpICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBICYmIFtVQSBy
ZXF1aXJlcyBhIGRlY2l0aW9ucyBmcm9tIHRoZSB1c2VyXQorICAgIHJldHVybiBmYWxzZTsKK30K
Kwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogewogICAgIGlmICghbV9w
bGF5ZXIpCkBAIC0xMDA1LDE4ICsxMjc0LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlUGxheVN0YXRlKCkKIHsKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBpZiAobV9wYXVzZWRJbnRlcm5hbCkgewogICAgICAgICBpZiAoIW1fcGxheWVy
LT5wYXVzZWQoKSkKICAgICAgICAgICAgIG1fcGxheWVyLT5wYXVzZSgpOworICAgICAgICBtX3Bs
YXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBzaG91bGRCZVBsYXlpbmcgPSBhY3RpdmVseVBsYXlpbmcoKTsKLSAgICBpZiAo
c2hvdWxkQmVQbGF5aW5nICYmIG1fcGxheWVyLT5wYXVzZWQoKSkKKyAgICBib29sIHNob3VsZEJl
UGxheWluZyA9IHBvdGVudGlhbGx5UGxheWluZygpOworICAgIGJvb2wgcGxheWVyUGF1c2VkID0g
bV9wbGF5ZXItPnBhdXNlZCgpOworICAgIGlmIChzaG91bGRCZVBsYXlpbmcgJiYgcGxheWVyUGF1
c2VkKSB7CisgICAgICAgIC8vIFNldCByYXRlIGJlZm9yZSBjYWxsaW5nIHBsYXkgaW4gY2FzZSB0
aGUgcmF0ZSB3YXMgc2V0IGJlZm9yZSB0aGUgbWVkaWEgZW5naW5lIHdhc24ndCBzZXR1cC4KKyAg
ICAgICAgLy8gVGhlIG1lZGlhIGVuZ2luZSBzaG91bGQganVzdCBzdGFzaCB0aGUgcmF0ZSBzaW5j
ZSBpdCBpc24ndCBhbHJlYWR5IHBsYXlpbmcuCisgICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKG1f
cGxheWJhY2tSYXRlKTsKICAgICAgICAgbV9wbGF5ZXItPnBsYXkoKTsKLSAgICBlbHNlIGlmICgh
c2hvdWxkQmVQbGF5aW5nICYmICFtX3BsYXllci0+cGF1c2VkKCkpCisgICAgICAgIHN0YXJ0UGxh
eWJhY2tQcm9ncmVzc1RpbWVyKCk7CisgICAgfSBlbHNlIGlmICghc2hvdWxkQmVQbGF5aW5nICYm
ICFwbGF5ZXJQYXVzZWQpIHsKICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CisgICAgICAgIG1f
cGxheWJhY2tQcm9ncmVzc1RpbWVyLnN0b3AoKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKHJlbmRl
cmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CkBAIC0xMDI4
LDI1ICsxMzA1LDUwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwK
ICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpkb2N1
bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BQZXJp
b2RpY1RpbWVycygpCiB7Ci0gICAgLy8gMy4xNC45LjQuIExvYWRpbmcgdGhlIG1lZGlhIHJlc291
cmNlCi0gICAgLy8gMTQKLSAgICBpZiAobV9iZWd1bikgewotICAgICAgICAvLyBGb3Igc2ltcGxp
Y2l0eSBjYW5jZWwgdGhlIGluY29tcGxldGUgbG9hZCBieSBkZWxldGluZyB0aGUgcGxheWVyCisg
ICAgbV9wcm9ncmVzc0V2ZW50VGltZXIuc3RvcCgpOworICAgIG1fcGxheWJhY2tQcm9ncmVzc1Rp
bWVyLnN0b3AoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZCgpCit7CisgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkpIHsKKworICAg
ICAgICAvLyBJZiB0aGUgbWVkaWEgZGF0YSBmZXRjaGluZyBwcm9jZXNzIGlzIGFib3J0ZWQgYnkg
dGhlIHVzZXI6CisKKyAgICAgICAgLy8gMSAtIFRoZSB1c2VyIGFnZW50IHNob3VsZCBjYW5jZWwg
dGhlIGZldGNoaW5nIHByb2Nlc3MuCisjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KQogICAgICAgICBtX3BsYXllci5jbGVhcigpOwotICAgICAgICBtX3Byb2dyZXNzRXZlbnRUaW1l
ci5zdG9wKCk7CisjZW5kaWYKKyAgICAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAKKyAgICAg
ICAgLy8gMiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2Jq
ZWN0IHdob3NlIGNvZGUgYXR0cmlidXRlIGlzIHNldCB0byBNRURJQV9FUlJfQUJPUlQuCiAgICAg
ICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FC
T1JURUQpOwotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIGluaXRBbmREaXNwYXRj
aFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQpOwotICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPj0gTE9BRElORykgewotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBF
TVBUWTsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IERBVEFfVU5BVkFJTEFCTEU7Ci0gICAg
ICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50LCBm
YWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgLy8gMyAtIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgcHJv
Z3Jlc3MgZXZlbnQgY2FsbGVkIGFib3J0IGF0IHRoZSBtZWRpYSBlbGVtZW50LgorICAgICAgICBz
Y2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQpOworCisgICAgICAg
IC8vIDQgLSBJZiB0aGUgbWVkaWEgZWxlbWVudCdzIHJlYWR5U3RhdGUgYXR0cmlidXRlIGhhcyBh
IHZhbHVlIGVxdWFsIHRvIEhBVkVfTk9USElORywgc2V0IHRoZSAKKyAgICAgICAgLy8gZWxlbWVu
dCdzIG5ldHdvcmtTdGF0ZSBhdHRyaWJ1dGUgdG8gdGhlIE5FVFdPUktfRU1QVFkgdmFsdWUgYW5k
IHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgCisgICAgICAgIC8vIHNpbXBsZSBldmVudCBjYWxsZWQg
ZW1wdGllZCBhdCB0aGUgZWxlbWVudC4gT3RoZXJ3aXNlLCBzZXQgc2V0IHRoZSBlbGVtZW50J3Mg
bmV0d29ya1N0YXRlIAorICAgICAgICAvLyBhdHRyaWJ1dGUgdG8gdGhlIE5FVFdPUktfSURMRSB2
YWx1ZS4KKyAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlID49IE5FVFdPUktfTE9BRElORykgewor
ICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOworICAgICAgICAgICAg
bV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOworICAgICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKICAgICAgICAgfQorCisgICAgICAgIC8vIDUgLSBT
ZXQgdGhlIGVsZW1lbnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBmbGFnIHRvIGZhbHNlLiBU
aGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBsb2FkIGV2ZW50LgorICAgICAgICBtX2RlbGF5aW5nVGhl
TG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgfQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRv
Y3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkKK3sKICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBm
YWxzZTsKKyAgICB1c2VyQ2FuY2VsbGVkTG9hZCgpOworCiAgICAgLy8gU3RvcCB0aGUgcGxheWJh
Y2sgd2l0aG91dCBnZW5lcmF0aW5nIGV2ZW50cwogICAgIHNldFBhdXNlZEludGVybmFsKHRydWUp
OwogCkBAIC0xMDYxLDYgKzEzNjMsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50
RGlkQmVjb21lCiAKICAgICBpZiAobV9lcnJvciAmJiBtX2Vycm9yLT5jb2RlKCkgPT0gTWVkaWFF
cnJvcjo6TUVESUFfRVJSX0FCT1JURUQpIHsKICAgICAgICAgLy8gUmVzdGFydCB0aGUgbG9hZCBp
ZiBpdCB3YXMgYWJvcnRlZCBpbiB0aGUgbWlkZGxlIGJ5IG1vdmluZyB0aGUgZG9jdW1lbnQgdG8g
dGhlIHBhZ2UgY2FjaGUuCisgICAgICAgIC8vIG1fZXJyb3IgaXMgb25seSBsZWZ0IGF0IE1FRElB
X0VSUl9BQk9SVEVEIHdoZW4gdGhlIGRvY3VtZW50IGJlY29tZXMgaW5hY3RpdmUgKGl0IGlzIHNl
dCB0bworICAgICAgICAvLyAgTUVESUFfRVJSX0FCT1JURUQgd2hpbGUgdGhlIGFib3J0RXZlbnQg
aXMgYmVpbmcgc2VudCwgYnV0IGNsZWFyZWQgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcykuCiAgICAg
ICAgIC8vIFRoaXMgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCBidXQgaXQgc2VlbXMgbGlrZSBh
IHNlbnNpYmxlIHRoaW5nIHRvIGRvLgogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAg
ICBsb2FkKGVjKTsKQEAgLTExMjQsOSArMTQyOCwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldE1lZGlhUGxheWVyUHJvCiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojppbml0aWFsVVJM
KCkKIHsKLSAgICBDb250ZW50VHlwZSBpZ25vcmVkVHlwZTsKLSAgICBTdHJpbmcgaW5pdGlhbFNy
YyA9IHNlbGVjdE1lZGlhVVJMKGlnbm9yZWRUeXBlKTsKKyAgICBTdHJpbmcgaW5pdGlhbFNyYyA9
IG1lZGlhU3JjID0gZ2V0QXR0cmlidXRlKHNyY0F0dHIpOworICAgIAorICAgIGlmIChpbml0aWFs
U3JjLmlzRW1wdHkoKSkKKyAgICAgICAgaW5pdGlhbFNyYyA9IG5leHRTb3VyY2VDaGlsZCgpOwor
CisgICAgaWYgKCFpbml0aWFsU3JjLmlzRW1wdHkoKSkKKyAgICAgICAgaW5pdGlhbFNyYyA9IGRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKGluaXRpYWxTcmMpLnN0cmluZygpOworCiAgICAgbV9jdXJy
ZW50U3JjID0gaW5pdGlhbFNyYzsKKwogICAgIHJldHVybiBpbml0aWFsU3JjOwogfQogCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFdmVudDsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1j
bGFzcyBUaW1lUmFuZ2VzOwogY2xhc3MgS1VSTDsKK2NsYXNzIFRpbWVSYW5nZXM7CiAgICAgCiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQ
bGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAtODAsOCArODEsOSBAQCBwdWJsaWM6CiAgICAgS1VS
TCBzcmMoKSBjb25zdDsKICAgICB2b2lkIHNldFNyYyhjb25zdCBTdHJpbmcmKTsKICAgICBTdHJp
bmcgY3VycmVudFNyYygpIGNvbnN0OwotICAgIAotICAgIGVudW0gTmV0d29ya1N0YXRlIHsgRU1Q
VFksIExPQURJTkcsIExPQURFRF9NRVRBREFUQSwgTE9BREVEX0ZJUlNUX0ZSQU1FLCBMT0FERUQg
fTsKKworICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExF
LCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTE9BREVELCBORVRXT1JLX05PX1NPVVJDRSB9Owor
Ly9AQEBAQCAgICBlbnVtIE5ldHdvcmtTdGF0ZSB7IEVNUFRZLCBMT0FESU5HLCBMT0FERURfTUVU
QURBVEEsIExPQURFRF9GSVJTVF9GUkFNRSwgTE9BREVEIH07CiAgICAgTmV0d29ya1N0YXRlIG5l
dHdvcmtTdGF0ZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQo
KSBjb25zdDsKICAgICB2b2lkIGxvYWQoRXhjZXB0aW9uQ29kZSYpOwpAQCAtODksNyArOTEsOCBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQotICAgIGVudW0gUmVhZHlTdGF0ZSB7IERBVEFfVU5B
VkFJTEFCTEUsIENBTl9TSE9XX0NVUlJFTlRfRlJBTUUsIENBTl9QTEFZLCBDQU5fUExBWV9USFJP
VUdIIH07CisgICAgZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HLCBIQVZFX01FVEFEQVRB
LCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFWRV9FTk9VR0hfREFUQSB9
OworLy9AQEBAQCAgICBlbnVtIFJlYWR5U3RhdGUgeyBEQVRBX1VOQVZBSUxBQkxFLCBDQU5fU0hP
V19DVVJSRU5UX0ZSQU1FLCBDQU5fUExBWSwgQ0FOX1BMQVlfVEhST1VHSCB9OwogICAgIFJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBA
IC05OSw5ICsxMDIsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKICAg
ICBib29sIHBhdXNlZCgpIGNvbnN0OwogICAgIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBj
b25zdDsKLSAgICB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZmxvYXQpOwogICAgIGZsb2F0
IHBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQpOwogICAgIFBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxUaW1l
UmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKQEAgLTEw
OSw4ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvcGxheShib29sIGIpOwogICAg
IGJvb2wgbG9vcCgpIGNvbnN0OyAgICAKICAgICB2b2lkIHNldExvb3AoYm9vbCBiKTsKLSAgICB2
b2lkIHBsYXkoRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGF1c2UoRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgcGxheSgpOworICAgIHZvaWQgcGF1c2UoKTsKICAgICAKIC8vIGNvbnRyb2xz
CiAgICAgYm9vbCBjb250cm9scygpIGNvbnN0OwpAQCAtMTE5LDcgKzEyMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgbXV0
ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpOwotICAgIHZvaWQgdG9nZ2xlUGxh
eVN0YXRlKEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpOwog
ICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKICAgICB2b2lkIGVuZFNjcnViYmluZygpOwogCkBA
IC0xNDEsMTIgKzE0NCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRE
aWRCZWNvbWVBY3RpdmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFWb2x1bWVEaWRDaGFuZ2Uo
KTsKICAgICAKLSAgICB2b2lkIGluaXRBbmREaXNwYXRjaFByb2dyZXNzRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudE5hbWUpOwotICAgIHZvaWQgZGlzcGF0Y2hFdmVudEFzeW5jKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKLSAgICAKLSAgICB2b2lkIHNldFJlYWR5U3RhdGUo
UmVhZHlTdGF0ZSk7Ci0gICAgdm9pZCBzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBzdGF0ZSk7Ci0KKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUpOworICAgIHZvaWQgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUpOwogICAgIAogcHJpdmF0ZTogLy8gTWVkaWFQbGF5ZXJPYnNlcnZlcgogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKQEAg
LTE1NCwyOSArMTUzLDUzIEBAIHByaXZhdGU6IC8vIE1lZGlhUGxheWVyT2JzZXJ2ZXIKICAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopOwogICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllclJlcGFpbnQoTWVkaWFQbGF5ZXIqKTsKICAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CisgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKE1lZGlhUGxheWVyKik7CisgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBsYXllciopOwogCiBwcml2YXRl
OgogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAg
ICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAg
ICAgdm9pZCBwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50Piop
OwotICAgIHZvaWQgc2VlayhmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgdm9p
ZCBwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwor
ICAgIHZvaWQgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKTsKKyAgICB2b2lkIHN0YXJ0UHJv
Z3Jlc3NFdmVudFRpbWVyKCk7CisgICAgdm9pZCBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAg
IHZvaWQgc2VlayhmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjaGVja0lm
U2Vla05lZWRlZCgpOworICAgIAorICAgIHZvaWQgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoYm9v
bCBwZXJpb2RpY0V2ZW50KTsKKyAgICB2b2lkIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGVucXVldWVFdmVudChSZWZQdHI8RXZl
bnQ+IGV2ZW50KTsKKyAgICAKKyAgICAvLyBsb2FkaW5nCisgICAgdm9pZCBzZWxlY3RNZWRpYVJl
c291cmNlKCk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2UoU3RyaW5nIHVybCwgQ29udGVudFR5cGUm
IGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIGxvYWROZXh0U291cmNlQ2hpbGQoKTsKKyAgICB2b2lk
IHVzZXJDYW5jZWxsZWRMb2FkKCk7CisgICAgU3RyaW5nIG5leHRTb3VyY2VDaGlsZChDb250ZW50
VHlwZSogY29udGVudFR5cGUgPSAwKTsKKyAgICBib29sIGhhdmVQb3RlbnRpYWxTb3VyY2VDaGls
ZCgpOworICAgIHZvaWQgbm9uZVN1cHBvcnRlZCgpOworICAgIHZvaWQgbWVkaWFFbmdpbmVFcnJv
cihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycik7CiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwi
IGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KLSAgICB2
b2lkIGxvYWRJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgdm9pZCBwbGF5SW50ZXJu
YWwoRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgIHZvaWQgcGF1c2VJbnRlcm5hbChFeGNlcHRpb25D
b2RlJiBlYyk7CisgICAgdm9pZCBsb2FkSW50ZXJuYWwoKTsKKyAgICB2b2lkIHBsYXlJbnRlcm5h
bCgpOworICAgIHZvaWQgcGF1c2VJbnRlcm5hbCgpOwogICAgIAogICAgIGJvb2wgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkgY29uc3Q7CiAgICAgYm9vbCBwcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2sgPiAw
OyB9CiAgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkgeyArK21f
cHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7IH0KICAgICB2b2lkIGVuZFByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCkgeyBBU1NFUlQobV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxs
YmFjayk7IC0tbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjazsgfQogCi0gICAgU3RyaW5n
IHNlbGVjdE1lZGlhVVJMKENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCB1cGRh
dGVWb2x1bWUoKTsKICAgICB2b2lkIHVwZGF0ZVBsYXlTdGF0ZSgpOwotICAgIGJvb2wgYWN0aXZl
bHlQbGF5aW5nKCkgY29uc3Q7CisgICAgYm9vbCBwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdDsK
ICAgICBib29sIGVuZGVkUGxheWJhY2soKSBjb25zdDsKKyAgICBib29sIHN0b3BwZWREdWVUb0Vy
cm9ycygpIGNvbnN0OworICAgIGJvb2wgcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3Q7
CiAKICAgICAvLyBSZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLiBUaGlz
IGlzIGEgZWZmZWN0aXZlbHkgYSBjb21waWxlIHRpbWUgY2hvaWNlIGF0IHRoZSBtb21lbnQKICAg
ICAvLyAgYmVjYXVzZSB0aGVyZSBhcmUgbm8gYWNjZXNzb3IgbWV0aG9kcy4KQEAgLTE4Nyw0MyAr
MjEwLDM4IEBAIHByaXZhdGU6CiAgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFu
Z2VSZXN0cmljdGlvbiA9IDEgPDwgMSwKICAgICB9OwogCi0KIHByb3RlY3RlZDoKICAgICBUaW1l
cjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVt
ZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX3By
b2dyZXNzRXZlbnRUaW1lcjsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX2FzeW5jRXZlbnRz
VG9EaXNwYXRjaDsKKyAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX3BsYXliYWNrUHJvZ3Jl
c3NUaW1lcjsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKICAg
ICAKKyAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKICAgICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFj
a1JhdGU7CiAgICAgTmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlOwogICAgIFJlYWR5U3RhdGUg
bV9yZWFkeVN0YXRlOwogICAgIFN0cmluZyBtX2N1cnJlbnRTcmM7CiAgICAgCiAgICAgUmVmUHRy
PE1lZGlhRXJyb3I+IG1fZXJyb3I7Ci0gICAgCi0gICAgYm9vbCBtX2JlZ3VuOwotICAgIGJvb2wg
bV9sb2FkZWRGaXJzdEZyYW1lOwotICAgIGJvb2wgbV9hdXRvcGxheWluZzsKLSAgICAKLSAgICB1
bnNpZ25lZCBtX2N1cnJlbnRMb29wOworCiAgICAgZmxvYXQgbV92b2x1bWU7Ci0gICAgYm9vbCBt
X211dGVkOwotICAgIAotICAgIGJvb2wgbV9wYXVzZWQ7Ci0gICAgYm9vbCBtX3NlZWtpbmc7Ci0g
ICAgCiAgICAgZmxvYXQgbV9jdXJyZW50VGltZUR1cmluZ1NlZWs7CiAgICAgCiAgICAgdW5zaWdu
ZWQgbV9wcmV2aW91c1Byb2dyZXNzOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1l
OwotICAgIGJvb2wgbV9zZW50U3RhbGxlZEV2ZW50OworCisgICAgLy8gdGhlIGxhc3QgdGltZSBh
IHRpbWV1cGRhdGUgZXZlbnQgd2FzIHNlbnQgKHdhbGwgY2xvY2spCisgICAgZG91YmxlIG1fbGFz
dFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lOworCisgICAgLy8gdGhlIGxhc3QgdGltZSBhIHRpbWV1
cGRhdGUgZXZlbnQgd2FzIHNlbnQgaW4gbW92aWUgdGltZQorICAgIGZsb2F0IG1fbGFzdFRpbWVV
cGRhdGVFdmVudE1vdmllVGltZTsKICAgICAKLSAgICB1bnNpZ25lZCBtX2xvYWROZXN0aW5nTGV2
ZWw7Ci0gICAgdW5zaWduZWQgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWw7CisgICAg
Ly8gbG9hZGluZyBzdGF0ZQorICAgIGVudW0gTG9hZFN0YXRlIHsgV2FpdGluZ0ZvclNvdXJjZSwg
TG9hZGluZ0Zyb21TcmNBdHRyLCBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQgfTsKKyAgICBMb2Fk
U3RhdGUgbV9sb2FkU3RhdGU7CisgICAgTm9kZSAqbV9jdXJyZW50U291cmNlTm9kZTsKICAgICAK
LSAgICBib29sIG1fcGF1c2VkSW50ZXJuYWw7Ci0gICAgYm9vbCBtX2luQWN0aXZlRG9jdW1lbnQ7
Ci0KICAgICBPd25QdHI8TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogCiAgICAgQmVoYXZpb3JSZXN0
cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7CkBAIC0yMzIsMTIgKzI1MCwyOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gIGNhbGxpbmcgdGhlIG1lZGlhIGVuZ2luZSByZWN1cnNpdmVseQogICAgIGludCBt
X3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrOwogCisgICAgYm9vbCBtX3Byb2Nlc3NpbmdM
b2FkIDogMTsKKyAgICBib29sIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgOiAxOworICAgIGJvb2wg
bV9oYXZlRmlyZWRMb2FkZWREYXRhIDogMTsKKyAgICBib29sIG1faW5BY3RpdmVEb2N1bWVudCA6
IDE7CisgICAgYm9vbCBtX2F1dG9wbGF5aW5nIDogMTsKKyAgICBib29sIG1fbXV0ZWQgOiAxOwor
ICAgIGJvb2wgbV9wYXVzZWQgOiAxOworICAgIGJvb2wgbV9zZWVraW5nIDogMTsKKworICAgIC8v
IGRhdGEgaGFzIG5vdCBiZWVuIGxvYWRlZCBzaW5jZSBzZW5kaW5nIGEgInN0YWxsZWQiIGV2ZW50
CisgICAgYm9vbCBtX3NlbnRTdGFsbGVkRXZlbnQgOiAxOworCisgICAgLy8gdGltZSBoYXMgbm90
IGNoYW5nZWQgc2luY2Ugc2VuZGluZyBhbiAiZW5kZWQiIGV2ZW50CisgICAgYm9vbCBtX3NlbnRF
bmRFdmVudCA6IDE7CisKKyAgICBib29sIG1fcGF1c2VkSW50ZXJuYWwgOiAxOworCiAgICAgLy8g
Tm90IGFsbCBtZWRpYSBlbmdpbmVzIHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IGEg
ZmlsZSB0byBiZSBhYmxlIHRvCiAgICAgLy8gc3VwcG9ydCBwcm9ncmVzcyBldmVudHMgc28gc2V0
dGluZyBtX3NlbmRQcm9ncmVzc0V2ZW50cyBkaXNhYmxlcyB0aGVtIAotICAgIGJvb2wgbV9zZW5k
UHJvZ3Jlc3NFdmVudHM7CisgICAgYm9vbCBtX3NlbmRQcm9ncmVzc0V2ZW50cyA6IDE7CiAKICNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBib29sIG1fbmVlZFdpZGdldFVw
ZGF0ZTsKKyAgICBib29sIG1fbmVlZFdpZGdldFVwZGF0ZSA6IDE7CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMs
MTggQEAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwogICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgc3JjOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY3Vy
cmVudFNyYzsKICAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0VNUFRZID0g
MDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0lETEUgPSAxOworICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IE5FVFdPUktfTE9BRElORyA9IDI7CisgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTkVUV09SS19MT0FERUQgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVFdP
UktfTk9fU09VUkNFID0gNDsKKy8qCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU1QVFkgPSAw
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExPQURJTkcgPSAxOwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExPQURFRF9NRVRBREFUQSA9IDI7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
TE9BREVEX0ZJUlNUX0ZSQU1FID0gMzsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FERUQg
PSA0OworKi8KICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgbmV0d29ya1N0
YXRlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVyZWQ7CkBAIC00
NiwxMCArNTMsMTcgQEAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwog
ICAgIERPTVN0cmluZyBjYW5QbGF5VHlwZShpbiBET01TdHJpbmcgdHlwZSk7CiAKICAgICAvLyBy
ZWFkeSBzdGF0ZQorICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEhBVkVfTk9USElORyA9IDA7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSEFWRV9NRVRBREFUQSA9IDE7CisgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgSEFWRV9DVVJSRU5UX0RBVEEgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IEhBVkVfRlVUVVJFX0RBVEEgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEhBVkVf
RU5PVUdIX0RBVEEgPSA0OworLyoKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBEQVRBX1VOQVZB
SUxBQkxFID0gMDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQU5fU0hPV19DVVJSRU5UX0ZS
QU1FID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQU5fUExBWSA9IDI7CiAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgQ0FOX1BMQVlfVEhST1VHSCA9IDM7CisqLwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHNlZWtpbmc7CiAKQEAgLTU4LDE5ICs3MiwxNSBAQCBpbnRlcmZhY2UgW0dl
bmVyYXRlQ29uc3RydWN0b3IsIENvbmRpdGlvCiAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGR1cmF0aW9uOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHBhdXNlZDsKLSAgICBhdHRyaWJ1dGUgZmxvYXQgZGVm
YXVsdFBsYXliYWNrUmF0ZSAKLSAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
LSAgICBhdHRyaWJ1dGUgZmxvYXQgcGxheWJhY2tSYXRlIAotICAgICAgICBzZXR0ZXIgcmFpc2Vz
IChET01FeGNlcHRpb24pOworICAgIGF0dHJpYnV0ZSBmbG9hdCBkZWZhdWx0UGxheWJhY2tSYXRl
OworICAgIGF0dHJpYnV0ZSBmbG9hdCBwbGF5YmFja1JhdGU7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFRpbWVSYW5nZXMgcGxheWVkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2Vz
IHNlZWthYmxlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGVuZGVkOwogICAgIGF0
dHJpYnV0ZSBib29sZWFuIGF1dG9wbGF5OwogICAgIGF0dHJpYnV0ZSBib29sZWFuIGxvb3A7Ci0g
ICAgdm9pZCBwbGF5KCkgCi0gICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lk
IHBhdXNlKCkgCi0gICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHBsYXko
KTsKKyAgICB2b2lkIHBhdXNlKCk7CiAKICAgICAvLyBjb250cm9scwogICAgIGF0dHJpYnV0ZSBi
b29sZWFuIGNvbnRyb2xzOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBIVE1MU291cmNlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdQogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAg
IGlmIChwYXJlbnROb2RlKCkgJiYgKHBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShhdWRpb1RhZykg
fHwgIHBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZSh2aWRlb1RhZykpKSB7CiAgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVu
dE5vZGUoKSk7Ci0gICAgICAgIGlmIChtZWRpYS0+bmV0d29ya1N0YXRlKCkgPT0gSFRNTE1lZGlh
RWxlbWVudDo6RU1QVFkpCisgICAgICAgIGlmIChtZWRpYS0+bmV0d29ya1N0YXRlKCkgPT0gSFRN
TE1lZGlhRWxlbWVudDo6TkVUV09SS19FTVBUWSkKICAgICAgICAgICAgIG1lZGlhLT5zY2hlZHVs
ZUxvYWQoKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZp
c2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRl
UG9zdGVySW1hZ2UKICAgICBib29sIG9sZFNob3VsZFNob3dQb3N0ZXJJbWFnZSA9IG1fc2hvdWxk
U2hvd1Bvc3RlckltYWdlOwogI2VuZGlmCiAKLSAgICBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZSA9
ICFwb3N0ZXIoKS5pc0VtcHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPCBMT0FERURfRklSU1RfRlJB
TUU7CisgICAgbV9zaG91bGRTaG93UG9zdGVySW1hZ2UgPSAhcG9zdGVyKCkuaXNFbXB0eSgpICYm
IHJlYWR5U3RhdGUoKSA8IEhBVkVfQ1VSUkVOVF9EQVRBOwogCiAjaWYgIUVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQogICAgIGlmIChhdHRhY2hlZCgpICYmIG9sZFNob3VsZFNob3dQb3N0
ZXJJbWFnZSAhPSBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZSkgewpJbmRleDogV2ViQ29yZS9odG1s
L01lZGlhRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCShy
ZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUVy
cm9yIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFFcnJvcj4gewogcHVibGljOgotICAgIGVudW0g
Q29kZSB7IE1FRElBX0VSUl9BQk9SVEVEID0gMSwgTUVESUFfRVJSX05FVFdPUkssIE1FRElBX0VS
Ul9ERUNPREUgfTsKKyAgICBlbnVtIENvZGUgeyBNRURJQV9FUlJfQUJPUlRFRCA9IDEsIE1FRElB
X0VSUl9ORVRXT1JLLCBNRURJQV9FUlJfREVDT0RFLCBNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQg
fTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUVycm9yKGNvZGUpKTsgfQogCkluZGV4OiBXZWJD
b3JlL2h0bWwvTWVkaWFFcnJvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL01lZGlh
RXJyb3IuaWRsCShyZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0FCT1JURUQgPSAxOwogICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9ORVRXT1JLID0gMjsKICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfREVDT0RFID0gMzsKKyAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQgPSA0OwogICAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOwogICAgIH07CiB9CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2xv
YWRlci9NZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDE1ICsxNDksMTQg
QEAgdm9pZCBNZWRpYURvY3VtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKAogICAgIE5vZGUqIHRh
cmdldE5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwogICAgIGlmICh0YXJnZXROb2Rl
ICYmIHRhcmdldE5vZGUtPmhhc1RhZ05hbWUodmlkZW9UYWcpKSB7CiAgICAgICAgIEhUTUxWaWRl
b0VsZW1lbnQqIHZpZGVvID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRhcmdldE5v
ZGUpOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICAgICAgaWYgKCF2aWRlby0+
Y2FuUGxheSgpKSB7Ci0gICAgICAgICAgICAgICAgdmlkZW8tPnBhdXNlKGVjKTsKKyAgICAgICAg
ICAgICAgICB2aWRlby0+cGF1c2UoKTsKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2ZW50KSB7CiAgICAgICAgICAgICBpZiAodmlk
ZW8tPmNhblBsYXkoKSkgewotICAgICAgICAgICAgICAgIHZpZGVvLT5wbGF5KGVjKTsKKyAgICAg
ICAgICAgICAgICB2aWRlby0+cGxheSgpOwogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkg
eyB9CiAKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OyB9Ci0gICAgdmlydHVhbCBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5
ZXI6OkRhdGFVbmF2YWlsYWJsZTsgfQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsg
fQogCiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lQnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiAw
OyB9CkBAIC00NDQsNiArNDQ0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnRpbWVDaGFuZ2VkKCkK
ICAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCh0aGlz
KTsKIH0KIAordm9pZCBNZWRpYVBsYXllcjo6c2l6ZUNoYW5nZWQoKQoreworICAgIGlmIChtX21l
ZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXll
clNpemVDaGFuZ2VkKHRoaXMpOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpyZXBhaW50KCkKIHsK
ICAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMzAgQEAg
Y2xhc3MgU3RyaW5nOwogY2xhc3MgTWVkaWFQbGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfk1lZGlhUGxheWVyQ2xpZW50KCkgeyB9CisKKyAgICAvLyB0aGUgbmV0d29yayBzdGF0
ZSBoYXMgY2hhbmdlZAogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKworICAgIC8vIHRoZSByZWFkeSBzdGF0ZSBoYXMgY2hh
bmdlZAogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlh
UGxheWVyKikgeyB9CisKKyAgICAvLyB0aGUgdm9sdW1lIG9yIG11dGVkIHN0YXRlIGhhcyBjaGFu
Z2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXll
ciopIHsgfQorCisgICAgLy8gdGltZSBoYXMganVtcGVkLCBlZy4gbm90IGFzIGEgcmVzdWx0IG9m
IG5vcm1hbCBwbGF5YmFjawogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikgeyB9CisgICAgCisgICAgLy8gYSBuZXcgZnJhbWUgb2YgdmlkZW8gaXMg
YXZhaWxhYmxlCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVwYWludChNZWRpYVBsYXll
ciopIHsgfQorCisgICAgLy8gdGhlIG1lZGlhIGZpbGUgZHVyYXRpb24gaGFzIGNoYW5nZWQsIG9y
IGlzIG5vdyBrbm93bgorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdl
ZChNZWRpYVBsYXllciopIHsgfQorICAgIAorICAgIC8vIHRoZSBwbGF5YmFjayByYXRlIGhhcyBj
aGFuZ2VkCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXIqKSB7IH0KKworICAgIC8vIHRoZSBtb3ZpZSBzaXplIGhhcyBjaGFuZ2VkCisgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KIH07CiAKIGNs
YXNzIE1lZGlhUGxheWVyIDogTm9uY29weWFibGUgewpAQCAtMTE1LDE2ICsxMzQsMTkgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYpOwogICAgIAotICAgIGVudW0gTmV0d29ya1N0YXRlIHsgRW1wdHksIExvYWRGYWlsZWQsIExv
YWRpbmcsIExvYWRlZE1ldGFEYXRhLCBMb2FkZWRGaXJzdEZyYW1lLCBMb2FkZWQgfTsKKy8vQEBA
QEAgICAgZW51bSBOZXR3b3JrU3RhdGUgeyBFbXB0eSwgTG9hZEZhaWxlZCwgTG9hZGluZywgTG9h
ZGVkTWV0YURhdGEsIExvYWRlZEZpcnN0RnJhbWUsIExvYWRlZCB9OworICAgIGVudW0gTmV0d29y
a1N0YXRlIHsgRW1wdHksIElkbGUsIExvYWRpbmcsIExvYWRlZCwgRm9ybWF0RXJyb3IsIE5ldHdv
cmtFcnJvciwgRGVjb2RlRXJyb3IgfTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7
CiAKLSAgICBlbnVtIFJlYWR5U3RhdGUgIHsgRGF0YVVuYXZhaWxhYmxlLCBDYW5TaG93Q3VycmVu
dEZyYW1lLCBDYW5QbGF5LCBDYW5QbGF5VGhyb3VnaCB9OworLy9AQEBAQCAgICBlbnVtIFJlYWR5
U3RhdGUgIHsgRGF0YVVuYXZhaWxhYmxlLCBDYW5TaG93Q3VycmVudEZyYW1lLCBDYW5QbGF5LCBD
YW5QbGF5VGhyb3VnaCB9OworICAgIGVudW0gUmVhZHlTdGF0ZSAgeyBIYXZlTm90aGluZywgSGF2
ZU1ldGFkYXRhLCBIYXZlQ3VycmVudERhdGEsIEhhdmVGdXR1cmVEYXRhLCBIYXZlRW5vdWdoRGF0
YSB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpOwogICAgIAogICAgIHZvaWQgbmV0d29y
a1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lk
IHZvbHVtZUNoYW5nZWQoKTsKICAgICB2b2lkIHRpbWVDaGFuZ2VkKCk7CisgICAgdm9pZCBzaXpl
Q2hhbmdlZCgpOwogCiAgICAgdm9pZCByZXBhaW50KCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAko
cmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMSArODksMTIgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OwogICAgIGZsb2F0IGN1cnJlbnRUaW1l
KCkgY29uc3Q7CiAgICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUpOwotICAgIHZvaWQgc2V0RW5kVGlt
ZShmbG9hdCB0aW1lKTsKICAgICAKICAgICB2b2lkIHNldFJhdGUoZmxvYXQpOwogICAgIHZvaWQg
c2V0Vm9sdW1lKGZsb2F0KTsKLSAgICAKKworICAgIHZvaWQgc2V0RW5kVGltZShmbG9hdCB0aW1l
KTsKKwogICAgIGludCBkYXRhUmF0ZSgpIGNvbnN0OwogICAgIAogICAgIE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrU3RhdGU7
IH0KQEAgLTEyMywxMiArMTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1NlZWsoKTsKICAg
ICB2b2lkIGNhbmNlbFNlZWsoKTsKICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlh
UGxheWVyUHJpdmF0ZT4qKTsKLSAgICB2b2lkIGVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxNZWRp
YVBsYXllclByaXZhdGU+Kik7CiAgICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwotICAg
IHZvaWQgc3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKTsKLSAgICB2b2lkIGRpc2FibGVVbnN1
cHBvcnRlZFRyYWNrcyh1bnNpZ25lZCYgZW5hYmxlZFRyYWNrQ291bnQpOworICAgIHZvaWQgZGlz
YWJsZVVuc3VwcG9ydGVkVHJhY2tzKCk7CiAgICAgCi0gICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXRNb3ZpZSAmJiBtX25ldHdvcmtTdGF0ZSA+PSBNZWRpYVBs
YXllcjo6TG9hZGVkTWV0YURhdGE7IH0KKyAgICBib29sIG1ldGFEYXRhQXZhaWxhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9xdE1vdmllICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhOyB9CiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgUmV0YWluUHRy
PFFUTW92aWU+IG1fcXRNb3ZpZTsKQEAgLTEzNiwxNSArMTM1LDE0IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPFFUVmlkZW9SZW5kZXJlcldlYktpdE9ubHk+IG1fcXRWaWRlb1JlbmRlcmVyOwog
ICAgIFJldGFpblB0cjxXZWJDb3JlTW92aWVPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CiAgICAg
ZmxvYXQgbV9zZWVrVG87Ci0gICAgZmxvYXQgbV9lbmRUaW1lOwogICAgIFRpbWVyPE1lZGlhUGxh
eWVyUHJpdmF0ZT4gbV9zZWVrVGltZXI7Ci0gICAgVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiBt
X2VuZFBvaW50VGltZXI7CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtT
dGF0ZTsKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9v
bCBtX3N0YXJ0ZWRQbGF5aW5nOwogICAgIGJvb2wgbV9pc1N0cmVhbWluZzsKICAgICBib29sIG1f
dmlzaWJsZTsKICAgICBJbnRSZWN0IG1fcmVjdDsKKyAgICB1bnNpZ25lZCBtX2VuYWJsZWRUcmFj
a0NvdW50OwogI2lmIERSQVdfRlJBTUVfUkFURQogICAgIGludCAgbV9mcmFtZUNvdW50V2hpbGVQ
bGF5aW5nOwogICAgIGRvdWJsZSBtX3RpbWVTdGFydGVkUGxheWluZzsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tCShyZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsOCArMTU3
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgY29uc3QgZmxvYXQgZW5kUG9pbnRUaW1lckludGVydmFsID0gMC4wMjBmOwotCiAjaWZkZWYg
QlVJTERJTkdfT05fVElHRVIKIHN0YXRpYyBjb25zdCBsb25nIG1pbmltdW1RdWlja1RpbWVWZXJz
aW9uID0gMHgwNzMwMDAwMDsgLy8gNy4zCiAjZW5kaWYKQEAgLTE3OSwxNSArMTc3LDE0IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE0KICAgICA6IG1fcGxheWVyKHBs
YXllcikKICAgICAsIG1fb2JqY09ic2VydmVyKEFkb3B0TlMsIFtbV2ViQ29yZU1vdmllT2JzZXJ2
ZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pCiAgICAgLCBtX3NlZWtUbygtMSkKLSAg
ICAsIG1fZW5kVGltZShudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkpCiAgICAgLCBt
X3NlZWtUaW1lcih0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCkKLSAg
ICAsIG1fZW5kUG9pbnRUaW1lcih0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRp
bWVyRmlyZWQpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0gICAg
LCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZSkKKyAgICAsIG1fcmVh
ZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX3N0YXJ0ZWRQbGF5aW5n
KGZhbHNlKQogICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKICAgICAsIG1fdmlzaWJsZShmYWxz
ZSkKICAgICAsIG1fcmVjdCgpCisgICAgLCBtX2VuYWJsZWRUcmFja0NvdW50KDApCiAjaWYgRFJB
V19GUkFNRV9SQVRFCiAgICAgLCBtX2ZyYW1lQ291bnRXaGlsZVBsYXlpbmcoMCkKICAgICAsIG1f
dGltZVN0YXJ0ZWRQbGF5aW5nKDApCkBAIC0yMjMsNyArMjIwLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmNyZWF0ZVFUTW92aWUoYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBRVE1vdmllUHJldmVudEV4dGVy
bmFsVVJMTGlua3NBdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIFFUU2VjdXJpdHlQb2xpY3lOb0Nyb3Nz
U2l0ZUF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCBRVE1vdmllQXNrVW5yZXNvbHZlZERhdGFSZWZzQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdLCBAIlFUTW92aWVPcGVuRm9yUGxheWJhY2tBdHRyaWJ1dGUiLCAg
ICAgLy8gRklYTUU6IFVzZSBkZWZpbmVkIGF0dHJpYnV0ZSB3aGVuIHJlcXVpcmVkIHZlcnNpb24g
b2YgUVQgc3VwcG9ydHMgdGhpcyBhdHRyaWJ1dGUKKy8vQEBAQEAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIEAiUVRNb3Zp
ZU9wZW5Gb3JQbGF5YmFja0F0dHJpYnV0ZSIsICAgICAvLyBGSVhNRTogVXNlIGRlZmluZWQgYXR0
cmlidXRlIHdoZW4gcmVxdWlyZWQgdmVyc2lvbiBvZiBRVCBzdXBwb3J0cyB0aGlzIGF0dHJpYnV0
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CiAgICAgCiAgICAg
TlNFcnJvciogZXJyb3IgPSBuaWw7CkBAIC00MDcsMTIgKzQwNCwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpCiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRpbmc7CiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2Vk
KCk7CiAgICAgfQotICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2
YWlsYWJsZSkgewotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZh
aWxhYmxlOworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5n
KSB7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKICAg
ICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogICAgIGNhbmNlbFNl
ZWsoKTsKLSAgICBtX2VuZFBvaW50VGltZXIuc3RvcCgpOwogICAgIAogICAgIFttX29iamNPYnNl
cnZlci5nZXQoKSBzZXREZWxheUNhbGxiYWNrczpZRVNdOwogCkBAIC00MzMsNyArNDI5LDYgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBsYXkoKQogICAgIFttX29iamNPYnNlcnZlci5nZXQo
KSBzZXREZWxheUNhbGxiYWNrczpZRVNdOwogICAgIFttX3F0TW92aWUuZ2V0KCkgc2V0UmF0ZTpt
X3BsYXllci0+cmF0ZSgpXTsKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxs
YmFja3M6Tk9dOwotICAgIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZSgpCkBAIC00NDcsNyArNDQyLDYgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OnBhdXNlKCkKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVs
YXlDYWxsYmFja3M6WUVTXTsKICAgICBbbV9xdE1vdmllLmdldCgpIHN0b3BdOwogICAgIFttX29i
amNPYnNlcnZlci5nZXQoKSBzZXREZWxheUNhbGxiYWNrczpOT107Ci0gICAgbV9lbmRQb2ludFRp
bWVyLnN0b3AoKTsKIH0KIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbigpIGNv
bnN0CkBAIC00NjUsNyArNDU5LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlOjpjdXJyZW50
VGltZSgpIAogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgUVRUaW1lIHRpbWUgPSBbbV9xdE1vdmllLmdldCgpIGN1cnJlbnRUaW1lXTsKLSAgICBy
ZXR1cm4gbWluKHN0YXRpY19jYXN0PGZsb2F0Pih0aW1lLnRpbWVWYWx1ZSkgLyB0aW1lLnRpbWVT
Y2FsZSwgbV9lbmRUaW1lKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbWUudGlt
ZVZhbHVlKSAvIHRpbWUudGltZVNjYWxlOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
c2VlayhmbG9hdCB0aW1lKQpAQCAtNDc3LDcgKzQ3MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpzZWVrKGZsb2F0IHRpbWUKICAgICAKICAgICBpZiAodGltZSA+IGR1cmF0aW9uKCkpCiAg
ICAgICAgIHRpbWUgPSBkdXJhdGlvbigpOwotICAgIAorCiAgICAgbV9zZWVrVG8gPSB0aW1lOwog
ICAgIGlmIChtYXhUaW1lTG9hZGVkKCkgPj0gbV9zZWVrVG8pCiAgICAgICAgIGRvU2VlaygpOwpA
QCAtNDk1LDcgKzQ4OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkb1NlZWsoKSAKICAg
ICBbbV9xdE1vdmllLmdldCgpIHNldEN1cnJlbnRUaW1lOnF0dGltZV07CiAgICAgZmxvYXQgdGlt
ZUFmdGVyU2VlayA9IGN1cnJlbnRUaW1lKCk7CiAgICAgLy8gcmVzdG9yZSBwbGF5YmFjayBvbmx5
IGlmIG5vdCBhdCBlbmQsIG90aGV3aXNlIFFUTW92aWUgd2lsbCBsb29wCi0gICAgaWYgKHRpbWVB
ZnRlclNlZWsgPCBkdXJhdGlvbigpICYmIHRpbWVBZnRlclNlZWsgPCBtX2VuZFRpbWUpCisgICAg
aWYgKG9sZFJhdGUgJiYgdGltZUFmdGVyU2VlayA8IGR1cmF0aW9uKCkpCiAgICAgICAgIFttX3F0
TW92aWUuZ2V0KCkgc2V0UmF0ZTpvbGRSYXRlXTsKICAgICBjYW5jZWxTZWVrKCk7CiAgICAgW21f
b2JqY09ic2VydmVyLmdldCgpIHNldERlbGF5Q2FsbGJhY2tzOk5PXTsKQEAgLTUyOCwyNyArNTIy
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNlZWtUaW1lckZpcmVkKAogICAgIH0KIH0K
IAotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNldEVuZFRpbWUoZmxvYXQgdGltZSkKLXsKLSAg
ICBtX2VuZFRpbWUgPSB0aW1lOwotICAgIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgp
Ci17Ci0gICAgaWYgKG1fZW5kVGltZSA8IGR1cmF0aW9uKCkgJiYgbV9zdGFydGVkUGxheWluZyAm
JiAhbV9lbmRQb2ludFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZW5kUG9pbnRUaW1lci5z
dGFydFJlcGVhdGluZyhlbmRQb2ludFRpbWVySW50ZXJ2YWwpOwotfQotCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6ZW5kUG9pbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4q
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNldEVuZFRpbWUoZmxvYXQpCiB7Ci0gICAgZmxv
YXQgdGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgCi0gICAgLy8ganVzdCBkbyBlbmQgZm9yIG5v
dwotICAgIGlmICh0aW1lID49IG1fZW5kVGltZSkgewotICAgICAgICBwYXVzZSgpOwotICAgICAg
ICBkaWRFbmQoKTsKLSAgICB9CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZWQo
KSBjb25zdApAQCAtNjYwLDUwICs2MzUsNTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVw
ZGF0ZVN0YXRlcygpCiAgICAgCiAgICAgbG9uZyBsb2FkU3RhdGUgPSBtX3F0TW92aWUgPyBbW21f
cXRNb3ZpZS5nZXQoKSBhdHRyaWJ1dGVGb3JLZXk6UVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0ZV0g
bG9uZ1ZhbHVlXSA6IHN0YXRpY19jYXN0PGxvbmc+KFFUTW92aWVMb2FkU3RhdGVFcnJvcik7CiAg
ICAgCi0gICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkICYmIG1fbmV0
d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmICFtX3BsYXllci0+aW5N
ZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgdW5zaWduZWQgZW5hYmxlZFRyYWNrQ291bnQ7Ci0g
ICAgICAgIGRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcyhlbmFibGVkVHJhY2tDb3VudCk7Ci0gICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGxvYWQgZXJyb3Jz
IGFuZCBkZWNvZGUgZXJyb3JzIDxyZGFyOi8vcHJvYmxlbS81NjA1NjkyPgotICAgICAgICBpZiAo
IWVuYWJsZWRUcmFja0NvdW50KQorICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0
ZUxvYWRlZCAmJiBtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhICYmICFt
X3BsYXllci0+aW5NZWRpYURvY3VtZW50KCkpIHsKKyAgICAgICAgZGlzYWJsZVVuc3VwcG9ydGVk
VHJhY2tzKCk7CisgICAgICAgIGlmICghbV9lbmFibGVkVHJhY2tDb3VudCkKICAgICAgICAgICAg
IGxvYWRTdGF0ZSA9IFFUTW92aWVMb2FkU3RhdGVFcnJvcjsKICAgICB9CiAKLSAgICAvLyAiTG9h
ZGVkIiBpcyByZXNlcnZlZCBmb3IgZnVsbHkgYnVmZmVyZWQgbW92aWVzLCBuZXZlciB0aGUgY2Fz
ZSB3aGVuIHN0cmVhbWluZwogICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUNv
bXBsZXRlICYmICFtX2lzU3RyZWFtaW5nKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8
IE1lZGlhUGxheWVyOjpMb2FkZWQpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpMb2FkZWQ7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5Q
bGF5VGhyb3VnaDsKKyAgICAgICAgLy8gIkxvYWRlZCIgaXMgcmVzZXJ2ZWQgZm9yIGZ1bGx5IGJ1
ZmZlcmVkIG1vdmllcywgbmV2ZXIgdGhlIGNhc2Ugd2hlbiBzdHJlYW1pbmcKKyAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOworICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgfSBlbHNlIGlmIChsb2FkU3RhdGUg
Pj0gUVRNb3ZpZUxvYWRTdGF0ZVBsYXl0aHJvdWdoT0spIHsKLSAgICAgICAgaWYgKG1fbmV0d29y
a1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWUgJiYgIXNlZWtpbmcoKSkKLSAg
ICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWU7
Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5VGhyb3VnaDsKKyAg
ICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgIH0g
ZWxzZSBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVQbGF5YWJsZSkgewotICAgICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkRmlyc3RGcmFtZSAmJiAh
c2Vla2luZygpKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9h
ZGVkRmlyc3RGcmFtZTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgbm90IHdvcmsgY29y
cmVjdGx5IGluIHN0cmVhbWluZyBjYXNlLCA8cmRhcjovL3Byb2JsZW0vNTY5Mzk2Nz4KLSAgICAg
ICAgbV9yZWFkeVN0YXRlID0gY3VycmVudFRpbWUoKSA8IG1heFRpbWVMb2FkZWQoKSA/IE1lZGlh
UGxheWVyOjpDYW5QbGF5IDogTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICAgICAg
bV9yZWFkeVN0YXRlID0gY3VycmVudFRpbWUoKSA8IG1heFRpbWVMb2FkZWQoKSA/IE1lZGlhUGxh
eWVyOjpIYXZlRnV0dXJlRGF0YSA6IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CiAgICAg
fSBlbHNlIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxvYWRlZCkgewotICAgICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEpCi0gICAg
ICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YTsKLSAg
ICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsKICAgICB9IGVsc2Ug
aWYgKGxvYWRTdGF0ZSA+IFFUTW92aWVMb2FkU3RhdGVFcnJvcikgewotICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGluZykKLSAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7ICAgICAgICAKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQ
bGF5ZXI6OkhhdmVOb3RoaW5nOyAgICAgICAgCiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZEZhaWxlZDsKLSAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsgCisgICAgICAgIGZsb2F0IGxvYWRlZCA9
IG1heFRpbWVMb2FkZWQoKTsKKworICAgICAgICBpZiAoIWxvYWRlZCkKKyAgICAgICAgICAgIG1f
cmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKworICAgICAgICBpZiAoIW1f
ZW5hYmxlZFRyYWNrQ291bnQpCisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpGb3JtYXRFcnJvcjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2FkL25ldHdvcmsgZXJyb3JzIGFuZCBk
ZWNvZGUgZXJyb3JzIDxyZGFyOi8vcHJvYmxlbS81NjA1NjkyPgorICAgICAgICAgICAgaWYgKGxv
YWRlZCA+IDApCisgICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
RGVjb2RlRXJyb3I7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9yZWFkeVN0
YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKHNlZWtpbmcoKSkKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFV
bmF2YWlsYWJsZTsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nOwogICAgIAogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpCiAg
ICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgaWYgKG1fcmVhZHlT
dGF0ZSAhPSBvbGRSZWFkeVN0YXRlKQogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5n
ZWQoKTsKIAotICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxvYWRlZCAmJiBv
bGROZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEgJiYgbV9wbGF5ZXIt
PnZpc2libGUoKSkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQg
JiYgb2xkUmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYgbV9wbGF5ZXIt
PnZpc2libGUoKSkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOwogfQogCkBAIC03MTks
NiArNjk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJhdGVDaGFuZ2VkKCkKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnNpemVDaGFuZ2VkKCkKIHsKKyAgICBtX3BsYXllci0+c2l6
ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnRpbWVDaGFuZ2VkKCkK
QEAgLTcyOSw3ICs3MDcsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dGltZUNoYW5nZWQo
KQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIHsKLSAgICBtX2VuZFBvaW50
VGltZXIuc3RvcCgpOwogICAgIG1fc3RhcnRlZFBsYXlpbmcgPSBmYWxzZTsKICNpZiBEUkFXX0ZS
QU1FX1JBVEUKICAgICBtX3RpbWVTdG9wcGVkUGxheWluZyA9IFtOU0RhdGUgdGltZUludGVydmFs
U2luY2VSZWZlcmVuY2VEYXRlXTsKQEAgLTc2MSw3ICs3MzgsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZTo6c2V0VmlzaWJsZShib29sCiAgICAgaWYgKG1fdmlzaWJsZSAhPSBiKSB7CiAgICAg
ICAgIG1fdmlzaWJsZSA9IGI7CiAgICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQorICAgICAgICAgICAg
aWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKQogICAgICAgICAg
ICAgICAgIHNldFVwVmlkZW9SZW5kZXJpbmcoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CkBAIC05MDUsMTAgKzg4MiwxMCBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAgICAgCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKHVuc2lnbmVkJiBlbmFi
bGVkVHJhY2tDb3VudCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5zdXBwb3J0
ZWRUcmFja3MoKQogewogICAgIGlmICghbV9xdE1vdmllKSB7Ci0gICAgICAgIGVuYWJsZWRUcmFj
a0NvdW50ID0gMDsKKyAgICAgICAgbV9lbmFibGVkVHJhY2tDb3VudCA9IDA7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCkBAIC05MjcsNyArOTA0LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OmRpc2FibGVVbnN1cHBvcgogICAgIE5TQXJyYXkgKnRyYWNrcyA9IFttX3F0TW92aWUu
Z2V0KCkgdHJhY2tzXTsKICAgICAKICAgICB1bnNpZ25lZCB0cmFja0NvdW50ID0gW3RyYWNrcyBj
b3VudF07Ci0gICAgZW5hYmxlZFRyYWNrQ291bnQgPSB0cmFja0NvdW50OworICAgIG1fZW5hYmxl
ZFRyYWNrQ291bnQgPSB0cmFja0NvdW50OwogICAgIGZvciAodW5zaWduZWQgdHJhY2tJbmRleCA9
IDA7IHRyYWNrSW5kZXggPCB0cmFja0NvdW50OyB0cmFja0luZGV4KyspIHsKICAgICAgICAgLy8g
R3JhYiB0aGUgdHJhY2sgYXQgdGhlIGN1cnJlbnQgaW5kZXguIElmIHRoZXJlIGlzbid0IG9uZSB0
aGVyZSwgdGhlbgogICAgICAgICAvLyB3ZSBjYW4gbW92ZSBvbnRvIHRoZSBuZXh0IG9uZS4KQEAg
LTk1NSw3ICs5MzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9y
CiAgICAgICAgIGlmICghYWxsb3dlZFRyYWNrVHlwZXMtPmNvbnRhaW5zKG1lZGlhVHlwZSkpIHsK
ICAgICAgICAgICAgIC8vIElmIHRoaXMgdHJhY2sgdHlwZSBpcyBub3QgYWxsb3dlZCwgdGhlbiB3
ZSBuZWVkIHRvIGRpc2FibGUgaXQuCiAgICAgICAgICAgICBbdHJhY2sgc2V0RW5hYmxlZDpOT107
Ci0gICAgICAgICAgICAtLWVuYWJsZWRUcmFja0NvdW50OworICAgICAgICAgICAgLS1tX2VuYWJs
ZWRUcmFja0NvdW50OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEaXNhYmxlIGNo
YXB0ZXIgdHJhY2tzLiBUaGVzZSBhcmUgbW9zdCBsaWtlbHkgdG8gbGVhZCB0byB0cm91YmxlLCBh
cwpAQCAtOTg3LDcgKzk2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5z
dXBwb3IKICAgICAgICAgCiAgICAgICAgIC8vIERpc2FibGUgdGhlIGV2aWwsIGV2aWwgdHJhY2su
CiAgICAgICAgIFtjaGFwdGVyVHJhY2sgc2V0RW5hYmxlZDpOT107Ci0gICAgICAgIC0tZW5hYmxl
ZFRyYWNrQ291bnQ7CisgICAgICAgIC0tbV9lbmFibGVkVHJhY2tDb3VudDsKICAgICB9CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlz
aW9uIDQxNjU4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsOCArMTY1LDcgQEAgTWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ6Ok1lZGlhQ29udAogdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YzsKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZShlYyk7CisgICAgICAg
IG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwpAQCAtMTkwLDggKzE4OSw3IEBAIHZvaWQgTWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ6OmRlZmEKICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gdHJ1ZTsKICAg
ICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNO
b2RlKHRoaXMpOwogICAgICAgICB9Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAg
IG1fbWVkaWFFbGVtZW50LT5wYXVzZShlYyk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVz
ZSgpOwogICAgICAgICBtX3NlZWtUaW1lci5zdGFydFJlcGVhdGluZyhjU2Vla1JlcGVhdERlbGF5
KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpIHsKQEAgLTI0MSw4ICsy
MzksMTQgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQodmFsdWUoKS50b0RvdWJsZSgpKTsKLSAgICBpZiAodGltZSAhPSBtX21lZGlhRWxlbWVudC0+
Y3VycmVudFRpbWUoKSkgeworICAgIGRvdWJsZSB2YWwgPSB2YWx1ZSgpLnRvRG91YmxlKCk7Cisg
ICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsKTsKKy8vQEBAQEAgICAg
ZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsK
Ky8vQEBAQEAKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKTsK
KyAgICBpZiAodGltZSAhPSBub3cpIHsKKy8vICAgIGlmICh0aW1lICE9IG1fbWVkaWFFbGVtZW50
LT5jdXJyZW50VGltZSgpKSB7CisvL0BAQEBACiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5zZXRDdXJyZW50VGltZSh0aW1lLCBlYyk7CiAgICAgfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MjYsNyAr
MjQyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RDb250ZW50cyhjb25zdCAKIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVy
KQogewogICAgIGlmIChtX2NsaXBSZWN0cykgewotICAgICAgICBBU1NFUlQocm9vdExheWVyID09
IG1fY2xpcFJlY3RzUm9vdCk7CisvL0BAQEBAICAgICAgICBBU1NFUlQocm9vdExheWVyID09IG1f
Y2xpcFJlY3RzUm9vdCk7CiAgICAgICAgIHJldHVybjsgLy8gV2UgaGF2ZSB0aGUgY29ycmVjdCBj
YWNoZWQgdmFsdWUuCiAgICAgfQogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVkaWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNw
cAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFJlbmRlck1lZGlhOjp1cGRh
dGVDb250cm9scygpCiAgICAgaWYgKG1fcGxheUJ1dHRvbikKICAgICAgICAgbV9wbGF5QnV0dG9u
LT51cGRhdGUoKTsKICAgICBpZiAobV90aW1lbGluZSkKLSAgICAgICAgbV90aW1lbGluZS0+dXBk
YXRlKCk7CisgICAgICAgIG1fdGltZWxpbmUtPnVwZGF0ZSh0cnVlKTsKICAgICBpZiAobV9zZWVr
QmFja0J1dHRvbikKICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+dXBkYXRlKCk7CiAgICAgaWYg
KG1fc2Vla0ZvcndhcmRCdXR0b24pCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25z
dGFudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL21lZGlh
LWNvbnN0YW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb25zdGFudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIw
IEBACitUZXN0IEhUTUxNZWRpYUVsZW1lbnQgYW5kIE1lZGlhRXJyb3IgY29uc3RhbnRzLgorCitF
WFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZID09ICcwJykgT0sKK0VYUEVD
VEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfSURMRSA9PSAnMScpIE9LCitFWFBFQ1RFRCAo
SFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURJTkcgPT0gJzInKSBPSworRVhQRUNURUQgKEhU
TUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FERUQgPT0gJzMnKSBPSworRVhQRUNURUQgKEhUTUxN
ZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UgPT0gJzQnKSBPSworCitFWFBFQ1RFRCAoSFRN
TE1lZGlhRWxlbWVudC5IQVZFX05PVEhJTkcgPT0gJzAnKSBPSworRVhQRUNURUQgKEhUTUxNZWRp
YUVsZW1lbnQuSEFWRV9NRVRBREFUQSA9PSAnMScpIE9LCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxl
bWVudC5IQVZFX0NVUlJFTlRfREFUQSA9PSAnMicpIE9LCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxl
bWVudC5IQVZFX0ZVVFVSRV9EQVRBID09ICczJykgT0sKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVt
ZW50LkhBVkVfRU5PVUdIX0RBVEEgPT0gJzQnKSBPSworCitFWFBFQ1RFRCAoTWVkaWFFcnJvci5N
RURJQV9FUlJfQUJPUlRFRCA9PSAnMScpIE9LCitFWFBFQ1RFRCAoTWVkaWFFcnJvci5NRURJQV9F
UlJfTkVUV09SSyA9PSAnMicpIE9LCitFWFBFQ1RFRCAoTWVkaWFFcnJvci5NRURJQV9FUlJfREVD
T0RFID09ICczJykgT0sKK0VYUEVDVEVEIChNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NVUFBP
UlRFRCA9PSAnNCcpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1jb25zdGFudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1jb25zdGFudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL21lZGlh
LWNvbnN0YW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisKKzxwPlRlc3Qg
SFRNTE1lZGlhRWxlbWVudCBhbmQgTWVkaWFFcnJvciBjb25zdGFudHMuPC9wPgorCis8c2NyaXB0
IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCis8c2NyaXB0PgorICAgIAorICAgIHRlc3RF
eHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZIiwgMCk7CisgICAgdGVzdEV4
cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfSURMRSIsIDEpOworICAgIHRlc3RFeHBl
Y3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURJTkciLCAyKTsKKyAgICB0ZXN0RXhw
ZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FERUQiLCAzKTsKKyAgICB0ZXN0RXhw
ZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UiLCA0KTsKKyAgICBjb25z
b2xlV3JpdGUoIiIpOworCisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50LkhBVkVf
Tk9USElORyIsIDApOworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5IQVZFX01F
VEFEQVRBIiwgMSk7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50LkhBVkVfQ1VS
UkVOVF9EQVRBIiwgMik7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50LkhBVkVf
RlVUVVJFX0RBVEEiLCAzKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuSEFW
RV9FTk9VR0hfREFUQSIsIDQpOworICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICB0ZXN0RXhw
ZWN0ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX0FCT1JURUQiLCAxKTsKKyAgICB0ZXN0RXhwZWN0
ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX05FVFdPUksiLCAyKTsKKyAgICB0ZXN0RXhwZWN0ZWQo
Ik1lZGlhRXJyb3IuTUVESUFfRVJSX0RFQ09ERSIsIDMpOworICAgIHRlc3RFeHBlY3RlZCgiTWVk
aWFFcnJvci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQiLCA0KTsKKworCisgICAgZW5kVGVzdCgp
OworPC9zY3JpcHQ+CisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3Vt
ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUt
ZnJvbS1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwICsxLDEwIEBACiBUZXN0IHRoYXQgcmVtb3ZpbmcgYSBtZWRpYSBlbGVtZW50IGZy
b20gdGhlIHRyZWUgcGF1c2VzIHBsYXliYWNrIGJ1dCBkb2VzIG5vdCB1bmxvYWQgdGhlIG1lZGlh
LgogCiBFVkVOVChsb2FkKQotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9L
CitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICczJykgT0sKIEVYUEVDVEVEICh2aWRl
by5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKIFJVTihkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHZp
ZGVvKSkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSworRVhQRUNURUQg
KHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMycpIE9LCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICd0cnVlJykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3JlbW92
ZS1mcm9tLWRvY3VtZW50LW5vLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1uby1sb2FkLmh0bWwJKHJldmlzaW9uIDQxNjU4KQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9hZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQAogICAgIGRpZFJlY2VpdmVMb2FkU3RhcnRFdmVu
dCA9IGZhbHNlOwogICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRzdGFydCcsIGZ1bmN0
aW9uKCkgeyBkaWRSZWNlaXZlTG9hZFN0YXJ0RXZlbnQgPSB0cnVlOyB9KTsKICAgICB2aWRlby5z
cmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3Jr
U3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZKTsKKyAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
Lm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7CiAgICAgcnVu
KCJkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHZpZGVvKSIpOwogICAgIHRlc3RFeHBlY3RlZCgi
ZGlkUmVjZWl2ZUxvYWRTdGFydEV2ZW50IiwgZmFsc2UpOwogICAgIGVuZFRlc3QoKTsKSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQuaHRtbAkocmV2aXNpb24g
NDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE1IEBACi08dmlkZW8gY29udHJvbHM+PC92aWRlbz4K
Kzx2aWRlbyBjb250cm9scyBhdXRvcGxheT48L3ZpZGVvPgogPHA+VGVzdCB0aGF0IHJlbW92aW5n
IGEgbWVkaWEgZWxlbWVudCBmcm9tIHRoZSB0cmVlIHBhdXNlcyBwbGF5YmFjayBidXQgZG9lcyBu
b3QgdW5sb2FkIHRoZSBtZWRpYS48L3A+CiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CiAK
LSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVt
ZW50LkxPQURFRCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwg
SFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURFRCk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8ucGF1c2VkIiwgZmFsc2UpOwogCiAgICAgICAgIHJ1bigiZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZCh2aWRlbykiKTsKIAotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtT
dGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTE9BREVEKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BREVEKTsKICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKIAogICAgICAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldFRvcDsKQEAgLTE3LDUgKzE3LDQgQEAKICAgICB9ICk7CiAKIHZpZGVv
LnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLXZpZGVvLnBsYXkoKTsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFRlc3QgdGhhdCBRdWlj
a1RpbWUgZmlsZSB3aXRoIFJUU1AgVVJMIGcKIAogRVZFTlQoZXJyb3IpCiBFWFBFQ1RFRCAodmlk
ZW8uZXJyb3IgIT0gJ251bGwnKSBPSwotRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzIn
KSBPSworRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzQnKSBPSworRVhQRUNURUQgKHZp
ZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91
dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MSArMSwxNSBAQAorCiA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKwogPHA+VGVzdCB0aGF0IFF1
aWNrVGltZSBmaWxlIHdpdGggUlRTUCBVUkwgZ2VuZXJhdGVzIGEgbG9hZCBlcnJvci48cD4KKwog
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+Ci12aWRlby5zcmMg
PSAicnRzcDovL2EyMDQ3LnYxNDExYi5jMTQxMS5nLnZxLmFrYW1haXN0cmVhbS5uZXQvNS8yMDQ3
LzE0MTEvMl9oMjY0XzY1MC8xYTFhMWFlNDU0YzQzMDk1MDA2NWRlNGNiYjJmOTRjMjI2OTUwYzdh
ZTY1NWI2MWE0OGE5MTQ3NWUyNDNhY2RhM2RhYzE5NDg3OWFkZGUwZi93d2RjXzIwMDZfMl82NTAu
bW92IjsKLXdhaXRGb3JFdmVudCgiZXJyb3IiLCBmdW5jdGlvbiAoKSB7Ci0gICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5lcnJvciIsIG51bGwsICIhPSIpOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
ZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJSX05FVFdPUkspOwotICAgIGVuZFRlc3Qo
KTsKLX0pOworICAgIHZpZGVvLnNyYyA9ICJydHNwOi8vYTIwNDcudjE0MTFiLmMxNDExLmcudnEu
YWthbWFpc3RyZWFtLm5ldC81LzIwNDcvMTQxMS8yX2gyNjRfNjUwLzFhMWExYWU0NTRjNDMwOTUw
MDY1ZGU0Y2JiMmY5NGMyMjY5NTBjN2FlNjU1YjYxYTQ4YTkxNDc1ZTI0M2FjZGEzZGFjMTk0ODc5
YWRkZTBmL3d3ZGNfMjAwNl8yXzY1MC5tb3YiOworICAgIHdhaXRGb3JFdmVudCgiZXJyb3IiLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IiLCBudWxsLCAi
IT0iKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJv
ci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
Lm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UpOworICAg
ICAgICBlbmRUZXN0KCk7CisgICAgfSk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTEgQEAKK1Rlc3QgdGhhdCBzZXR0
aW5nIGN1cnJlbnRUaW1lIGNoYW5nZXMgdGhlIHRpbWUsIGFuZCB0aGF0ICdlbmRlZCcgZXZlbnQg
aXMgZmlyZWQgaW4gYSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lCisKIEVWRU5UKGxvYWQpCi1F
VkVOVCh0aW1ldXBkYXRlKQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcwJykgT0sK
K1JVTih2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC4yKQorRVhQRUNURUQg
KHZpZGVvLmN1cnJlbnRUaW1lLnRvRml4ZWQoMikgPT0gJzguMjAnKSBPSworUlVOKHZpZGVvLnBs
YXkoKSkKKwogRVZFTlQoZW5kZWQpCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNSArMSwyNyBAQAotPHZpZGVvIHNyYz1jb250ZW50L3Rlc3QubXA0IGNvbnRyb2xz
PjwvdmlkZW8+Ci08c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotPHNjcmlwdD4K
LXdhaXRGb3JFdmVudCgnbG9hZCcsICAKLWZ1bmN0aW9uICgpIHsgCi0gICAgdmlkZW8uY3VycmVu
dFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuMjsgCi0gICAgdmlkZW8ucGxheSgpOyAKLSAgICB3
YWl0Rm9yRXZlbnQoJ3RpbWV1cGRhdGUnLCBmdW5jdGlvbiAoKSB7Cis8aHRtbD4KKzxib2R5Pgor
CisgICAgPHZpZGVvIHNyYz1jb250ZW50L3Rlc3QubXA0IGNvbnRyb2xzPjwvdmlkZW8+CisgICAg
CisgICAgPHA+VGVzdCB0aGF0IHNldHRpbmcgY3VycmVudFRpbWUgY2hhbmdlcyB0aGUgdGltZSwg
YW5kIHRoYXQgJ2VuZGVkJyBldmVudCBpcyBmaXJlZCBpbiBhIHJlYXNvbmFibGUgYW1vdW50IG9m
IHRpbWU8L3A+CisgICAgCisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgIHdhaXRGb3JFdmVudCgnbG9hZCcsICAKKyAgICBmdW5jdGlvbiAo
KSB7IAorICAgICAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2VuZGVkJyk7CisgICAgCisgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCAwKTsKKyAgICAgICAgcnVuKCJ2aWRl
by5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC4yIik7IAorICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lLnRvRml4ZWQoMikiLCAodmlkZW8uZHVyYXRpb24gLSAw
LjIpLnRvRml4ZWQoMikpOworICAgICAgICBydW4oInZpZGVvLnBsYXkoKSIpOyAKKyAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKyAgICAKICAgICAgICAgdmFyIHRpbWVvdXQgPSA4MDA7Ci0gICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBsb2dSZXN1bHQoIk5vIHRpbWV1cGRhdGUgZXZl
bnQgaW4gIiArIHRpbWVvdXQvMTAwMCAgKyAic2Vjb25kcyIsIGZhbHNlKTsgfSwgdGltZW91dCk7
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBsb2dSZXN1bHQoIk5vICdlbmRlZCcg
ZXZlbnQgaW4gIiArIHRpbWVvdXQvMTAwMCAgKyAic2Vjb25kcyIsIGZhbHNlKTsgfSwgdGltZW91
dCk7CiAgICAgfSk7Ci0gICAgd2FpdEZvckV2ZW50QW5kRW5kKCdlbmRlZCcpOwotfSk7Ci12aWRl
by5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci08L3NjcmlwdD4KKyAgICB2aWRlby5zcmMgPSAi
Y29udGVudC90ZXN0Lm1wNCI7CisgICAgPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWFib3J0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1hYm9ydC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJv
cnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsNSBAQAogRVhQRUNURUQg
KHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKIEVWRU5UKGxvYWRzdGFydCkKLUVWRU5UKGFib3J0
KQotRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzEnKSBPSwotRVZFTlQobG9hZHN0YXJ0
KQogRVZFTlQobG9hZCkKIEVYUEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCiBFTkQg
T0YgVEVTVApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhp
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVy
cm9yLWRvZXMtbm90LWV4aXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsOSArMSwxMyBAQAogVGVzdCB0aGF0IHRoZSBtZWRpYSBlbGVtZW50
IGlzIGluIGNvcnJlY3Qgc3RhdGUgYWZ0ZXIgbG9hZCBmYWlscy4KIAorCiBFWFBFQ1RFRCAodmlk
ZW8uZXJyb3IgPT0gJ251bGwnKSBPSwotRVZFTlQoZW1wdGllZCkKLUVYUEVDVEVEICh2aWRlby5l
cnJvci5jb2RlID09ICcyJykgT0sKLUVYUEVDVEVEICh2aWRlby5kdXJhdGlvbiA9PSAnMCcpIE9L
CisKK0VWRU5UKGVycm9yKQorRVhQRUNURUQgKHZpZGVvLmVycm9yICE9ICdudWxsJykgT0sKK0VY
UEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5uZXR3
b3JrU3RhdGUgPT0gJzQnKSBPSworRVhQRUNURUQgKGlzTmFOKHZpZGVvLmR1cmF0aW9uKSA9PSAn
dHJ1ZScpIE9LCiBFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzAnKSBPSwogRVhQRUNU
RUQgKHZpZGVvLmJ1ZmZlcmVkLmxlbmd0aCA9PSAnMCcpIE9LCiBFWFBFQ1RFRCAodmlkZW8uc2Vl
a2FibGUubGVuZ3RoID09ICcwJykgT0sKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVy
cm9yLWRvZXMtbm90LWV4aXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDE2ICsyLDI2IEBACiA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KIDxzY3JpcHQg
c3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0PgotdGVzdEV4cGVjdGVkKCJ2aWRl
by5lcnJvciIsIG51bGwpOwotd2FpdEZvckV2ZW50QW5kVGVzdCgibG9hZCIsICJmYWxzZSIpOwot
d2FpdEZvckV2ZW50KCJlbXB0aWVkIiwgZnVuY3Rpb24gKCkgewotICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJSX05FVFdPUkspOwotICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8uZHVyYXRpb24iLCAwKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LmN1cnJlbnRUaW1lIiwgMCk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5idWZmZXJlZC5sZW5n
dGgiLCAwKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnNlZWthYmxlLmxlbmd0aCIsIDApOwot
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uYnVmZmVyZWQubGVuZ3RoIiwgMCk7Ci0gICAgZW5kVGVz
dCgpOwotfSk7Ci12aWRlby5zcmMgPSAiY29udGVudC9kb2VzLW5vdC1leGlzdC5tcGVnIjsKKwor
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51
bGwpOworCisgICAgd2FpdEZvckV2ZW50QW5kVGVzdCgibG9hZCIsICJmYWxzZSIpOworICAgIAor
ICAgIHdhaXRGb3JFdmVudCgiZXJyb3IiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uZXJyb3IiLCBudWxsLCAiIT0iKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOwor
ICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRp
YUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UpOworICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImlzTmFOKHZpZGVvLmR1cmF0aW9uKSIsIHRydWUpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmN1cnJlbnRUaW1lIiwgMCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uYnVmZmVy
ZWQubGVuZ3RoIiwgMCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uc2Vla2FibGUubGVu
Z3RoIiwgMCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uYnVmZmVyZWQubGVuZ3RoIiwg
MCk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICAKKyAgICB2aWRlby5zcmMgPSAi
Y29udGVudC9kb2VzLW5vdC1leGlzdC5tcGVnIjsKKyAgICBjb25zb2xlV3JpdGUoIiIpOwogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1u
ZXR3b3JrU3RhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMSArMSwxNyBAQAorVGVzdCB0aGF0IHNldHRpbmcgc3JjIHRvIGFuIGludmFsaWQg
dXJsIHRyaWdnZXJzIGxvYWQoKSwgd2hpY2ggc2V0cyBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19O
T19TT1VSQ0UuIFNldHRpbmcgc3JjIHRvIGEgdmFsaWQgdXJsIHNob3VsZCB0aGVuIHRyaWdnZXIg
dGhlIGxvYWRpbmcgZXZlbnRzIGFuZCBlbmQgdXAgd2l0aCBuZXR3b3JrU3RhdGUgPj0gTkVUV09S
S19MT0FESU5HLgorCisKIEVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzAnKSBPSwor
UlVOKHZpZGVvLnNyYyA9ICdib2d1cy9tb3ZpZS5tcGcnKQogRVZFTlQobG9hZHN0YXJ0KQotRVhQ
RUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMScpIE9LCi1FVkVOVChsb2FkZWRtZXRhZGF0
YSkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzInKSBPSwotRVZFTlQobG9hZGVk
Zmlyc3RmcmFtZSkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzMnKSBPSwotRVZF
TlQobG9hZCkKIEVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSworCitSVU4o
dmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnKQorRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQo
bG9hZGVkbWV0YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5U
KGNhbnBsYXl0aHJvdWdoKQorRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA+PSAnMicpIE9L
CiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdv
cmtTdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQt
bmV0d29ya1N0YXRlLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNyArMSw0
NiBAQAotPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Ci08c2NyaXB0IHNyYz12aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLSAgICBmdW5jdGlvbiB0ZXN0TmV0d29ya1N0YXRlKGV4cGVj
dGVkLCBlbmRJdCkKLSAgICB7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0
YXRlIiwgZXhwZWN0ZWQpOwotICAgICAgICBpZiAoZW5kSXQpCi0gICAgICAgICAgICBlbmRUZXN0
KCk7Ci0gICAgfQorPGh0bWw+Cis8Ym9keT4KIAotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0
d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSk7Ci0gICAgd2FpdEZvckV2ZW50KCJs
b2Fkc3RhcnQiLCBmdW5jdGlvbiAoKSB7IHRlc3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVu
dC5MT0FESU5HKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiLCBmdW5j
dGlvbiAoKSB7IHRlc3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5MT0FERURfTUVUQURB
VEEpOyB9ICk7Ci0gICAgd2FpdEZvckV2ZW50KCJsb2FkZWRmaXJzdGZyYW1lIiwgZnVuY3Rpb24g
KCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTE9BREVEX0ZJUlNUX0ZSQU1F
KTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9hZCIsIGZ1bmN0aW9uICgpIHsgdGVzdE5ldHdv
cmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkxPQURFRCwgdHJ1ZSk7IH0gKTsKLSAgICB2aWRlby5z
cmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci08L3NjcmlwdD4KKyAgICA8dmlkZW8gY29udHJvbHM+
PC92aWRlbz4KKworICAgIDxwPlRlc3QgdGhhdCBzZXR0aW5nIHNyYyB0byBhbiBpbnZhbGlkIHVy
bCB0cmlnZ2VycyBsb2FkKCksIHdoaWNoIHNldHMgbmV0d29ya1N0YXRlCisgICAgdG8gTkVUV09S
S19OT19TT1VSQ0UuIFNldHRpbmcgc3JjIHRvIGEgdmFsaWQgdXJsIHNob3VsZCB0aGVuIHRyaWdn
ZXIgdGhlIGxvYWRpbmcKKyAgICBldmVudHMgYW5kIGVuZCB1cCB3aXRoIG5ldHdvcmtTdGF0ZSA+
PSBORVRXT1JLX0xPQURJTkcuCisgICAgIDwvcD4KKyAgICAKKyAgICA8c2NyaXB0IHNyYz12aWRl
by10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3RO
ZXR3b3JrU3RhdGUoZXhwZWN0ZWQsIGVuZGl0LCBvcCkKKyAgICAgICAgeworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBleHBlY3RlZCwgb3ApOworICAgICAg
ICAgICAgaWYgKGVuZGl0KQorICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRl
ZGRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgICAgIHdhaXRG
b3JFdmVudEFuZEZhaWwoInBsYXkiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgicGxh
eWluZyIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIiwgZnVuY3Rpb24g
KCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FESU5HLCB0
cnVlLCAnPj0nICk7IH0gKTsKKyAgICAKKyAgICAgICAgZnVuY3Rpb24gc29tZVRpbWVMYXRlcigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVu
dC5ORVRXT1JLX05PX1NPVVJDRSApOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKwor
ICAgICAgICAgICAgLy8gbm93IHNldCBhIHZhbGlkIHVybAorICAgICAgICAgICAgcnVuKCJ2aWRl
by5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCciKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgLy8gZmlyc3Qgc2V0IHRoZSBzcmMgdG8gYSBib2d1cyB1cmwsIGl0IHNob3VsZCBhdHRlbXB0
IGEgbG9hZAorICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB0ZXN0TmV0d29ya1N0
YXRlKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7CisgICAgICAgIHJ1bigidmlkZW8u
c3JjID0gJ2JvZ3VzL21vdmllLm1wZyciKTsKKyAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxh
dGVyLCA0MDApIAorICAgIAorICAgIDwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3RhdGUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9h
ZC1yZWFkeVN0YXRlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSw5IEBA
CiBFWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCiBFVkVOVChsb2Fkc3RhcnQp
Ci1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCiBFVkVOVChsb2FkZWRtZXRh
ZGF0YSkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRlID09ICcwJykgT0sKLUVWRU5UKGxvYWRl
ZGZpcnN0ZnJhbWUpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnMScpIE9LCi1FVkVO
VChjYW5zaG93Y3VycmVudGZyYW1lKQotRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzEn
KSBPSworRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCiBFVkVOVChjYW5wbGF5dGhy
b3VnaCkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRlID09ICczJykgT0sKK0VYUEVDVEVEICh2
aWRlby5yZWFkeVN0YXRlID09ICc0JykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS5odG1sCShyZXZpc2lvbiA0MTY1OCkK
KysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE4ICsxLDIxIEBACiA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGZ1bmN0aW9uIHRl
c3RSZWFkeVN0YXRlKGV4cGVjdGVkLCBlbmRJdCkKKyAgICBmdW5jdGlvbiB0ZXN0UmVhZHlTdGF0
ZShleHBlY3RlZCwgZW5kaXQsIG9wKQogICAgIHsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5yZWFkeVN0YXRlIiwgZXhwZWN0ZWQpOwotICAgICAgICBpZiAoZW5kSXQpCisgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIsIGV4cGVjdGVkLCBvcCk7CisgICAgICAgIGlm
IChlbmRpdCkKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKLSAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkRBVEFfVU5BVkFJTEFCTEUp
OwotICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0IiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlT
dGF0ZShIVE1MTWVkaWFFbGVtZW50LkRBVEFfVU5BVkFJTEFCTEUpOyB9ICk7Ci0gICAgd2FpdEZv
ckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIsIGZ1bmN0aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRN
TE1lZGlhRWxlbWVudC5EQVRBX1VOQVZBSUxBQkxFKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgi
bG9hZGVkZmlyc3RmcmFtZSIsIGZ1bmN0aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1lZGlh
RWxlbWVudC5DQU5fU0hPV19DVVJSRU5UX0ZSQU1FKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgi
Y2Fuc2hvd2N1cnJlbnRmcmFtZSIsIGZ1bmN0aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1l
ZGlhRWxlbWVudC5DQU5fU0hPV19DVVJSRU5UX0ZSQU1FKTsgfSApOwotICAgIHdhaXRGb3JFdmVu
dCgiY2FucGxheXRocm91Z2giLCBmdW5jdGlvbiAoKSB7IHRlc3RSZWFkeVN0YXRlKEhUTUxNZWRp
YUVsZW1lbnQuQ0FOX1BMQVlfVEhST1VHSCwgdHJ1ZSk7IH0gKTsKKyAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLnJlYWR5U3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkhBVkVfTk9USElORyk7CisgICAg
d2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFk
YXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgd2FpdEZvckV2ZW50
KCJjYW5wbGF5Iik7CisgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgicGxheSIpOworICAgIHdhaXRG
b3JFdmVudEFuZEZhaWwoInBsYXlpbmciKTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJv
dWdoIiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkhBVkVf
RU5PVUdIX0RBVEEsIHRydWUgKTsgfSApOworCiAgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVz
dC5tcDQiOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb29wLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb29wLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1s
b29wLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsMTAgKzEzLDEyIEBAIEVWRU5U
KHBsYXkpCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCiBSVU4odmlkZW8u
Y3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNCkKIAorRVZFTlQocGxheWluZykKIEVY
UEVDVEVEICh2aWRlby5lbmRlZCA9PSAnZmFsc2UnKSBPSwogRVhQRUNURUQgKG1lZGlhLmN1cnJl
bnRUaW1lID4gJzAnKSBPSworRVhQRUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lIDwgJzguMDAnKSBP
SwogUlVOKHZpZGVvLmxvb3AgPSBmYWxzZSkKLVJVTih2aWRlby5jdXJyZW50VGltZSA9IHZpZGVv
LmR1cmF0aW9uIC0gMC40KQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24g
LSAwLjMpCiAKIEVYUEVDVEVEICh2aWRlby5lbmRlZCA9PSAndHJ1ZScpIE9LCiBFWFBFQ1RFRCAo
bWVkaWEuY3VycmVudFRpbWUgPT0gJ21lZGlhLmR1cmF0aW9uJykgT0sKSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWxvb3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1sb29wLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tbG9vcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICsxLDY0IEBACi08dmlkZW8g
Y29udHJvbHMgYXV0b3BsYXkgPjwvdmlkZW8+Ci08c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgotPHNjcmlwdD4KLQotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmlidXRl
KCdsb29wJykiLCBudWxsKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmxvb3AiLCBmYWxzZSk7
Ci0KLSAgICBydW4oInZpZGVvLmxvb3AgPSB0cnVlIik7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5sb29wIiwgdHJ1ZSk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUoJ2xv
b3AnKSIsIG51bGwsICIhPSIpOwotCi0gICAgcnVuKCJ2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ2xv
b3AnKSIpOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubG9vcCIsIGZhbHNlKTsKLQotICAgIHZh
ciByZXNwb25kVG9UaW1lVXBkYXRlID0gZmFsc2U7Ci0gICAgdmFyIGZpcnN0VGltZUNoZWNrID0g
dHJ1ZTsKLQotICAgIC8vIG1ha2Ugc3VyZSB3ZSBhcmUgcGxheWluZywgc2VlayB0byBuZWFyIHRo
ZSBlbmQgc28gdGhlIHRlc3QgZG9lc24ndCB0YWtlIHRvbyBsb25nCi0gICAgd2FpdEZvckV2ZW50
KCdwbGF5JywgZnVuY3Rpb24gKCkgeyAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVz
ZWQiLCBmYWxzZSk7Ci0gICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJh
dGlvbiAtIDAuNCIpOwotICAgICAgICAKLSAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAg
ICAgc2V0VGltZW91dCh0aW1lQ2hlY2ssIDgwMCk7Ci0gICAgfSApOworPGh0bWw+CiAKLSAgICBm
dW5jdGlvbiB0aW1lQ2hlY2soKSB7IAotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVuZGVk
IiwgIWZpcnN0VGltZUNoZWNrKTsKLSAgICAgICAgaWYgKCFmaXJzdFRpbWVDaGVjaykKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gZG9uJ3QgdXNlICJ0ZXN0RXhwZWN0ZWQoKSIgc28gd2Ugd29u
J3QgbG9nIHRoZSBhY3R1YWwgZHVyYXRpb24gdG8gdGhlCi0gICAgICAgICAgICAvLyAgcmVzdWx0
cyBmaWxlLCBhcyB0aGUgZmxvYXRpbmcgcG9pbnQgcmVzdWx0IG1heSBkaWZmZXIgd2l0aCBkaWZm
ZXJlbnQgZW5naW5lcwotICAgICAgICAgICAgcmVwb3J0RXhwZWN0ZWQobWVkaWEuY3VycmVudFRp
bWUgPT0gbWVkaWEuZHVyYXRpb24sICJtZWRpYS5jdXJyZW50VGltZSIsICI9PSIsICJtZWRpYS5k
dXJhdGlvbiIsIG1lZGlhLmN1cnJlbnRUaW1lKTsKLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIDx2aWRlbyBjb250cm9scyBhdXRvcGxh
eSA+PC92aWRlbz4KIAotICAgICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhLmN1cnJlbnRUaW1lIiwg
MCwgJz4nKTsKLSAgICAgICAgcnVuKCJ2aWRlby5sb29wID0gZmFsc2UiKTsKLSAgICAgICAgcnVu
KCJ2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC40Iik7Ci0gICAgICAgIHJl
c3BvbmRUb1RpbWVVcGRhdGUgPSB0cnVlOwotICAgICAgICBmaXJzdFRpbWVDaGVjayA9IGZhbHNl
OworICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0
PgorICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmdldEF0dHJpYnV0ZSgnbG9vcCcp
IiwgbnVsbCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubG9vcCIsIGZhbHNlKTsKKyAg
ICAKKyAgICAgICAgcnVuKCJ2aWRlby5sb29wID0gdHJ1ZSIpOworICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLmxvb3AiLCB0cnVlKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRB
dHRyaWJ1dGUoJ2xvb3AnKSIsIG51bGwsICIhPSIpOworICAgIAorICAgICAgICBydW4oInZpZGVv
LnJlbW92ZUF0dHJpYnV0ZSgnbG9vcCcpIik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
bG9vcCIsIGZhbHNlKTsKKyAgICAKKyAgICAgICAgdmFyIHJlc3BvbmRUb1RpbWVVcGRhdGUgPSBm
YWxzZTsKKyAgICAgICAgdmFyIGZpcnN0VGltZUNoZWNrID0gdHJ1ZTsKKworICAgICAgICB3YWl0
Rm9yRXZlbnQoJ3BhdXNlJyk7CisgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycpOworCisg
ICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBhcmUgcGxheWluZywgc2VlayB0byBuZWFyIHRoZSBlbmQg
c28gdGhlIHRlc3QgZG9lc24ndCB0YWtlIHRvbyBsb25nCisgICAgICAgIHdhaXRGb3JFdmVudCgn
cGxheScsIGZ1bmN0aW9uICgpIHsgCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBh
dXNlZCIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRl
by5kdXJhdGlvbiAtIDAuNCIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lQ2hlY2ssIDgwMCk7CisgICAgICAg
IH0gKTsKKyAgICAKKyAgICAgICAgZnVuY3Rpb24gdGltZUNoZWNrKCkgeyAKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8uZW5kZWQiLCAhZmlyc3RUaW1lQ2hlY2spOworICAgICAgICAg
ICAgaWYgKCFmaXJzdFRpbWVDaGVjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBkb24ndCB1c2UgInRlc3RFeHBlY3RlZCgpIiBzbyB3ZSB3b24ndCBsb2cgdGhlIGFjdHVhbCBk
dXJhdGlvbiB0byB0aGUKKyAgICAgICAgICAgICAgICAvLyAgcmVzdWx0cyBmaWxlLCBhcyB0aGUg
ZmxvYXRpbmcgcG9pbnQgcmVzdWx0IG1heSBkaWZmZXIgd2l0aCBkaWZmZXJlbnQgZW5naW5lcwor
ICAgICAgICAgICAgICAgIHJlcG9ydEV4cGVjdGVkKG1lZGlhLmN1cnJlbnRUaW1lID09IG1lZGlh
LmR1cmF0aW9uLCAibWVkaWEuY3VycmVudFRpbWUiLCAiPT0iLCAibWVkaWEuZHVyYXRpb24iLCBt
ZWRpYS5jdXJyZW50VGltZSk7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgibWVkaWEuY3VycmVudFRpbWUiLCAwLCAnPicpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJtZWRpYS5jdXJyZW50VGltZSIsICh2aWRlby5kdXJhdGlvbiAtIDAuNCkudG9GaXhlZCgy
KSwgJzwnKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8ubG9vcCA9IGZhbHNlIik7CisgICAgICAg
ICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjMiKTsKKyAg
ICAgICAgICAgIHJlc3BvbmRUb1RpbWVVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgZmlyc3RU
aW1lQ2hlY2sgPSBmYWxzZTsKKyAgICAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Cisg
ICAgICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjaywgODAwKTsKKyAgICAgICAgfQorICAgIAog
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjaywg
ODAwKTsKLSAgICB9CisgICAgICAgIHJ1bigidmlkZW8ubG9vcCA9IHRydWUiKTsKKyAgICAgICAg
cnVuKCJ2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCciKTsKKyAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICA8L3NjcmlwdD4KKworICAgIDwvaGVhZD4KIAotICAgIGNvbnNvbGVXcml0
ZSgiIik7Ci0gICAgcnVuKCJ2aWRlby5sb29wID0gdHJ1ZSIpOwotICAgIHJ1bigidmlkZW8uc3Jj
ID0gJ2NvbnRlbnQvdGVzdC5tcDQnIik7Ci0gICAgY29uc29sZVdyaXRlKCIiKTsKLTwvc2NyaXB0
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0
eS1ldmVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsMTIgQEAgVGVz
dCB0aGF0IHBhdXNlKCkgZnJvbSBFTVBUWSBuZXR3b3JrIHN0YQogCiBFWFBFQ1RFRCAodmlkZW8u
bmV0d29ya1N0YXRlID09ICcwJykgT0sKIFJVTih2aWRlby5wYXVzZSgpKQorU0NSSVBUIERPTkUK
IEVWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGR1cmF0aW9uY2hhbmdlKQorRVZFTlQobG9hZGVkbWV0
YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0
aHJvdWdoKQogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1
c2UtZW1wdHktZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tcGF1c2UtZW1wdHktZXZlbnRzLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMsOCArMywxOCBAQAogPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSk7Ci0gICAgd2Fp
dEZvckV2ZW50QW5kRW5kKCdsb2Fkc3RhcnQnKTsKKyAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5l
dHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7CisKKyAgICB3YWl0
Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOwor
ICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5n
ZSIpOworICAgIHdhaXRGb3JFdmVudCgiZHVyYXRpb25jaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZl
bnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7Cisg
ICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgd2FpdEZvckV2ZW50QW5kRW5kKCJjYW5w
bGF5dGhyb3VnaCIpOworCiAgICAgcnVuKCJ2aWRlby5wYXVzZSgpIik7CiAgICAgY29uc29sZVdy
aXRlKCJTQ1JJUFQgRE9ORSIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1wbGF5LWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxNCBAQCBUZXN0IHRoYXQgcGxh
eSgpIGZyb20gRU1QVFkgbmV0d29yayBzdGF0CiAKIEVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3Rh
dGUgPT0gJzAnKSBPSwogUlVOKHZpZGVvLnBsYXkoKSkKLUVWRU5UKGxvYWRzdGFydCkKLUVYUEVD
VEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwogU0NSSVBUIERPTkUKLUVWRU5UKHBsYXkp
CitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKK0VWRU5UKGxvYWRlZG1l
dGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChjYW5wbGF5
dGhyb3VnaCkKK0VWRU5UKHBsYXlpbmcpCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxz
ZScpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5
LWVtcHR5LWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXBsYXktZW1wdHktZXZlbnRzLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
OSArMSwyOSBAQAotPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Ci08cD5UZXN0IHRoYXQgcGxheSgp
IGZyb20gRU1QVFkgbmV0d29yayBzdGF0ZSB0cmlnZ2VycyBsb2FkKCkgYW5kIGFzeW5jIHBsYXkg
ZXZlbnQuPC9wPgotPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci0gICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSk7Cis8aHRtbD4KKzxi
b2R5PgogCi0gICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnLCBmdW5jdGlvbiAoKSB7IAotICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpOwotICAgIH0gKTsKKyAgICA8
dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKyAgICA8cD5UZXN0IHRoYXQgcGxheSgpIGZyb20gRU1Q
VFkgbmV0d29yayBzdGF0ZSB0cmlnZ2VycyBsb2FkKCkgYW5kIGFzeW5jIHBsYXkgZXZlbnQuPC9w
PgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVt
ZW50Lk5FVFdPUktfRU1QVFkpOworICAgIAorICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFy
dCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZv
ckV2ZW50KCJ3YWl0aW5nIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JF
dmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRh
Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgICAgICB3YWl0Rm9yRXZl
bnQoImNhbnBsYXl0aHJvdWdoIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicGxheSIpOworICAg
IAorICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBmdW5jdGlvbiAoKSB7IHRlc3RFeHBl
Y3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOyBlbmRUZXN0KCk7IH0gKTsKKyAgICAKKyAgICAg
ICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOworICAgICAgICBydW4oInZpZGVvLnBs
YXkoKSIpOworICAgICAgICBjb25zb2xlV3JpdGUoIlNDUklQVCBET05FIik7CisgICAgPC9zY3Jp
cHQ+CiAKLSAgICB3YWl0Rm9yRXZlbnQoJ3BsYXknLCBmdW5jdGlvbiAoKSB7IAotICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKLSAgICAgICAgZW5kVGVzdCgpOwot
ICAgIH0gKTsKLQotICAgIHJ1bigidmlkZW8ucGxheSgpIik7Ci0gICAgY29uc29sZVdyaXRlKCJT
Q1JJUFQgRE9ORSIpOwotPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1ldmVudHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1
c2UtZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDggQEAgUlVO
KHZpZGVvLnBsYXkoKSkKIFJVTih2aWRlby5wYXVzZSgpKQogU0NSSVBUIERPTkUKIEVWRU5UKHBs
YXkpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKK0VWRU5UKHdhaXRpbmcp
CiBFVkVOVCh0aW1ldXBkYXRlKQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9L
CiBFVkVOVChwYXVzZSkKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSwogRU5E
IE9GIFRFU1QKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1l
dmVudHMuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1w
bGF5LXBhdXNlLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDExICs0LDIyIEBACiA8
c2NyaXB0PgogICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKIAotICAgIHdhaXRG
b3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQi
LCB0cnVlKTt9ICk7Ci0gICAgd2FpdEZvckV2ZW50KCd0aW1ldXBkYXRlJywgZnVuY3Rpb24gKCkg
eyB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpO30gKTsKKyAgICB3YWl0Rm9yRXZl
bnQoImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgIHdh
aXRGb3JFdmVudCgid2FpdGluZyIpOworICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOwor
ICAgIHdhaXRGb3JFdmVudCgiZHVyYXRpb25jaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxv
YWRlZG1ldGFkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgd2Fp
dEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIp
OworICAgIHdhaXRGb3JFdmVudCgicGxheSIpOworICAgIHdhaXRGb3JFdmVudCgidGltZXVwZGF0
ZSIpOwogICAgIHdhaXRGb3JFdmVudCgncGF1c2UnLCBmdW5jdGlvbiAoKSB7IHRlc3RFeHBlY3Rl
ZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7IGVuZFRlc3QoKTsgfSApOwogCisKICAgICBydW4oInZp
ZGVvLnBsYXkoKSIpOwogICAgIHJ1bigidmlkZW8ucGF1c2UoKSIpOworICAgIAogICAgIGNvbnNv
bGVXcml0ZSgiU0NSSVBUIERPTkUiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNl
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSwxMCBAQAot
VmlkZW8gaGFzIG5vIHNyYy4gVGVzdCB0aGF0IHBsYXkoKSBhbmQgcGF1c2UoKSByZXRocm93IHRo
ZSBleGNlcHRpb24gZnJvbSBsb2FkKCkuIFRlc3QgdGhhdCB0aGUgcGxheSBhbmQgcGF1c2UgZXZl
bnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4KK1ZpZGVvIGhhcyBubyBzcmMuIFRlc3QgdGhhdCB0aGUg
cGxheWluZyBldmVudCBpcyBub3QgZGlzcGF0Y2hlZC4KIAotVEVTVCh2aWRlby5wbGF5KCkpIFRI
Uk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpIE9LCi1URVNUKHZpZGVvLnBhdXNl
KCkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpIE9LCitSVU4odmlkZW8u
cGxheSgpKQorUlVOKHZpZGVvLnBhdXNlKCkpCitFVkVOVCh3YWl0aW5nKQorRVZFTlQodGltZXVw
ZGF0ZSkKK0VWRU5UKHBhdXNlKQorRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcp
IE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBh
dXNlLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXBsYXktcGF1c2UtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMCArMSwyNiBAQAorCiA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KLTxwPlZpZGVvIGhh
cyBubyBzcmMuIFRlc3QgdGhhdCBwbGF5KCkgYW5kIHBhdXNlKCkgcmV0aHJvdyB0aGUgZXhjZXB0
aW9uIGZyb20gbG9hZCgpLiBUZXN0IHRoYXQgdGhlIHBsYXkgYW5kIHBhdXNlIGV2ZW50cyBhcmUg
bm90IGRpc3BhdGNoZWQuPC9wPgorCis8cD5WaWRlbyBoYXMgbm8gc3JjLiBUZXN0IHRoYXQgdGhl
IHBsYXlpbmcgZXZlbnQgaXMgbm90IGRpc3BhdGNoZWQuPC9wPgorCiA8c2NyaXB0IHNyYz12aWRl
by10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KLXdhaXRGb3JFdmVudEFuZEZhaWwoJ3BsYXkn
KTsKLXdhaXRGb3JFdmVudEFuZEZhaWwoJ3BhdXNlJyk7Ci10ZXN0RXhjZXB0aW9uKCJ2aWRlby5w
bGF5KCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIik7Ci10ZXN0RXhjZXB0aW9u
KCJ2aWRlby5wYXVzZSgpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIpOwotZW5k
VGVzdExhdGVyKCk7CisgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgncGxheWluZycpOworCisgICAg
d2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQoInRpbWV1cGRhdGUi
KTsKKyAgICB3YWl0Rm9yRXZlbnQoInBhdXNlIik7CisgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5n
Iik7CisKKyAgICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgIHJ1bigidmlkZW8ucGF1c2UoKSIp
OworCisgICAgZnVuY3Rpb24gc29tZVRpbWVMYXRlcigpCisgICAgeworICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19T
T1VSQ0UpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Cisg
ICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDQwMCkgCiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstbm8tc3JjLWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1u
by1zcmMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNlZWstbm8tc3JjLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IHNlZWtpbmcgdmlkZW8gd2l0aCBubyAnc3Jj
JyBhdHRyaWJ1dGUgdGhyb3dzIGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbi4KKworRVhQ
RUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ucmVh
ZHlTdGF0ZSA9PSAnMCcpIE9LCitURVNUKHZpZGVvLmN1cnJlbnRUaW1lID0gMS4xKSBUSFJPV1Mo
RE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSKSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1l
eGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8Ym9k
eT4KKworICAgIDx2aWRlbyBsb29wIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgCisgICAgPHA+VGVz
dCB0aGF0IHNlZWtpbmcgdmlkZW8gd2l0aCBubyAnc3JjJyBhdHRyaWJ1dGUgdGhyb3dzIGFuIElO
VkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbi48L3A+CisKKyAgICA8c2NyaXB0IHNyYz12aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5IQVZF
X05PVEhJTkcpOworICAgICAgICB0ZXN0RXhjZXB0aW9uKCJ2aWRlby5jdXJyZW50VGltZSA9IDEu
MSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiKTsKKyAgICAgICAgc2V0VGltZW91
dChlbmRUZXN0LCAyMDApIAorICAgIDwvc2NyaXB0PgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wbGF5aW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3Qt
ZW5kLXBsYXlpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTMgKzEsMTUgQEAKIFRlc3QgdGhhdCBzZWVraW5nIHZpZGVvIHdpdGggJ2xv
b3AnIHBhc3QgaXQncyBlbmQgcmV3aW5kcyB0byB0aGUgYmVnaW5uaW5nIGFuZCBjb250aW51ZXMg
cGxheWJhY2suCiAKIFJVTih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCi1SVU4odmlk
ZW8ucGxheSgpKQogCiBFVkVOVChsb2FkKQorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1
ZScpIE9LCitSVU4odmlkZW8ucGxheSgpKQogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFs
c2UnKSBPSwogCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCiBFWFBFQ1RF
RCAobWVkaWEuY3VycmVudFRpbWUgPiAnMCcpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSA1
MDApCiAKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKIEVYUEVDVEVEICht
ZWRpYS5jdXJyZW50VGltZSA+ICcwJykgT0sKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGxheWluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWluZy5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysr
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWluZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDYgKzQsOCBAQAogPHNjcmlwdD4KIAogICAgIHdhaXRGb3JFdmVudCgn
bG9hZCcsIGZ1bmN0aW9uICgpIHsgCisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2Vk
IiwgdHJ1ZSk7CisgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CiAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwogICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVj
azEsIDIwMCk7CiAgICAgfSk7CkBAIC0xNCw3ICsxNiw3IEBACiAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwogICAg
ICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhLmN1cnJlbnRUaW1lIiwgMCwgJz4nKTsKLSAgICAgICAg
dmlkZW8uY3VycmVudFRpbWUgPSA1MDA7CisgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUg
PSA1MDAiKTsKICAgICAgICAgc2V0VGltZW91dCh0aW1lQ2hlY2syLCAyMDApOwogICAgIH0KIApA
QCAtMjgsNiArMzAsNSBAQAogICAgIH0KIAogICAgIHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQv
dGVzdC5tcDQnIik7Ci0gICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKICAgICBjb25zb2xlV3JpdGUo
IiIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1zZWVraW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwzMSBAQAot
VGVzdCB0aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlzIHRydWUgaW4gdGltZXVwZGF0ZSBldmVudCBh
ZnRlciBzZWVrIGFuZCBnb2VzIGJhY2sgdG8gZmFsc2Ugd2hlbiBzZWVraW5nIGNvbXBsZXRlcwor
VGVzdCB0aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlzIHRydWUgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBz
ZWVrLCBnb2VzIGJhY2sgdG8gZmFsc2Ugd2hlbiBzZWVraW5nIGNvbXBsZXRlcywgYW5kIHRoYXQg
YSAnc2Vla2VkJyBldmVudCBpcyBmaXJlZCBmb3IgZWFjaCBzZWVrCiAKIEVWRU5UKGxvYWQpCitS
VU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQg
KHNlZWtlZENvdW50ID09ICcxJykgT0sKIEVYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICdmYWxz
ZScpIE9LCi1SVU4odmlkZW8uY3VycmVudFRpbWUgPSAyKQotRVZFTlQodGltZXVwZGF0ZSkKK0VY
UEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMC41JykgT0sKK1JVTih2aWRlby5jdXJyZW50
VGltZSA9IDEpCitFWFBFQ1RFRCAodmlkZW8uc2Vla2luZyA9PSAndHJ1ZScpIE9LCisKK0VWRU5U
KHNlZWtlZCkKKworRVhQRUNURUQgKHNlZWtlZENvdW50ID09ICcyJykgT0sKK0VYUEVDVEVEICh2
aWRlby5zZWVraW5nID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUg
PT0gJzEnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMS41KQogRVhQRUNURUQgKHZpZGVv
LnNlZWtpbmcgPT0gJ3RydWUnKSBPSwotRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcy
JykgT0sKKworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAoc2Vla2VkQ291bnQgPT0gJzMnKSBP
SwogRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEICh2aWRl
by5jdXJyZW50VGltZSA9PSAnMS41JykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDIpCitF
WFBFQ1RFRCAodmlkZW8uc2Vla2luZyA9PSAndHJ1ZScpIE9LCisKIEVORCBPRiBURVNUCiAKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWtpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vla2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDIxICsxLDUxIEBACiA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KLTxwPlRlc3QgdGhhdCBzZWVr
aW5nIGF0dHJpYnV0ZSBpcyB0cnVlIGluIHRpbWV1cGRhdGUgZXZlbnQgYWZ0ZXIgc2VlayBhbmQg
Z29lcyBiYWNrIHRvIGZhbHNlIHdoZW4gc2Vla2luZyBjb21wbGV0ZXMgPC9wPgorPHA+VGVzdCB0
aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlzIHRydWUgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBzZWVrLAor
IGdvZXMgYmFjayB0byBmYWxzZSB3aGVuIHNlZWtpbmcgY29tcGxldGVzLCBhbmQgdGhhdCBhICdz
ZWVrZWQnIGV2ZW50CisgaXMgZmlyZWQgZm9yIGVhY2ggc2VlaworIDwvcD4KIDxzY3JpcHQgc3Jj
PXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0Pgotd2FpdEZvckV2ZW50KCdsb2FkJywK
LSAgICBmdW5jdGlvbiAoKSAKKworICAgIHZhciBzZWVrZWRDb3VudCA9IDA7CisgICAgdmFyIGNv
dW50ZXI7CisKKyAgICBmdW5jdGlvbiBzZWVrZWQoKQorICAgIHsgCisgICAgICAgICsrc2Vla2Vk
Q291bnQ7IAorICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHNvbWVUaW1lTGF0ZXIoKQogICAgIHsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJzZWVrZWRDb3Vu
dCIsIGNvdW50ZXIpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnNlZWtpbmciLCBmYWxz
ZSk7Ci0gICAgICAgIHdhaXRGb3JFdmVudCgndGltZXVwZGF0ZScsIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uc2Vla2luZyIsIHRydWUpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDIpOwotICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5zZWVraW5nIiwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAg
ICAgIH0sIDIwMCk7Ci0gICAgICAgIH0pOwotICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1l
ID0gMiIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY291bnRl
ciAqIDAuNSk7CisgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsgKGNvdW50ZXIg
KyAxKSAqIDAuNSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uc2Vla2luZyIsIHRydWUp
OworCisgICAgICAgIGlmIChjb3VudGVyID09IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICArK2NvdW50ZXI7CisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgIH0KKworICAg
IGZ1bmN0aW9uIGxvYWRlZCgpIAorICAgIHsKKyAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGlt
ZSA9IDAuNSIpOworICAgICAgICBjb3VudGVyID0gMTsKKyAgICAgICAgc2V0VGltZW91dChzb21l
VGltZUxhdGVyLCAyMDApIAorICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDQwMCkg
CisgICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgNjAwKSAKKyAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKICAgICB9Ci0pOwotdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwor
ICAgIAorICAgIHdhaXRGb3JFdmVudCgnd2FpdGluZycgKTsKKyAgICB3YWl0Rm9yRXZlbnQoJ3Nl
ZWtlZCcsIHNlZWtlZCApOworICAgIHdhaXRGb3JFdmVudCgnbG9hZCcsIGxvYWRlZCk7CisKKyAg
ICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1hZGQtc3JjLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK0VWRU5UKGxvYWRzdGFy
dCkKK0VWRU5UKGxvYWRzdGFydCkKKworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJl
bnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKK1JVTih2aWRlby5zcmMgPSAnY29udGVu
dC9zaWxlbmNlLm1wZycpCisKK0VWRU5UKGR1cmF0aW9uY2hhbmdlKQorRVZFTlQobG9hZGVkbWV0
YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0
aHJvdWdoKQorCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2Nv
bnRlbnQvdGVzdC5tcDQnKSBPSworRU5EIE9GIFRFU1QKK1Rlc3QgdGhhdCBhZGRpbmcgYSAnc3Jj
JyBhdHRyaWJ1dGUgZG9lcyBub3RoaW5nIHdoZW4gYSA8c291cmNlPiBlbGVtZW50IGhhcyBhbHJl
YWR5IGJlZW4gY2hvc2VuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRk
LXNyYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1h
ZGQtc3JjLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3Vy
Y2UtYWRkLXNyYy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxi
b2R5PgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICA8dmlk
ZW8gY29udHJvbHM+CisgICAgICAgIDxzb3VyY2Ugc3JjPWNvbnRlbnQvdGVzdC5tcDQgdHlwZT0i
dmlkZW8vbXBlZzsgY29kZWNzPSZxdW90O2F2YzEuNEQ0MDBDJnF1b3Q7Ij4KKyAgICA8L3ZpZGVv
PgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAg
IHZhciBjb3VudGVyID0gMDsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tMb2FkKCkgCisgICAgICAg
IHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJjb250ZW50L3Rlc3QubXA0Iik7
CisgICAgICAgICAgICBpZiAoKytjb3VudGVyID09IDIpCisgICAgICAgICAgICAgICAgZW5kVGVz
dCgpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5zcmMgPSAnY29udGVudC9zaWxlbmNlLm1wZyci
KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tMb2FkLCAyMDApOworICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoImxv
YWRzdGFydCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICAgICAg
d2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5n
ZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hhbmdlIik7CisgICAgICAgIHdh
aXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2Fk
ZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgICAgICB3YWl0
Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicGxheSIp
OworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRzdGFydCcsIGNoZWNrTG9hZCk7CisKKyAgICA8
L3NjcmlwdD4KKworPHA+VGVzdCB0aGF0IGFkZGluZyBhICdzcmMnIGF0dHJpYnV0ZSBkb2VzIG5v
dGhpbmcgd2hlbiBhICZsdDtzb3VyY2UmZ3Q7IGVsZW1lbnQgaGFzIGFscmVhZHkgCitiZWVuIGNo
b3NlbgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMSwyMCBAQAotVGVzdCB0aGF0IGNoYW5naW5nIHNyYyBhdHRyaWJ1dGUg
dHJpZ2dlcnMgbG9hZCB3aGVuIG5ldHdvcmsgc3RhdGUgaXMgZW1wdHkuCi1UZXN0IHRoYXQgaXQg
ZG9lcyBub3QgdHJpZ2dlciBsb2FkIHdoZW4gbmV0d29yayBzdGF0ZSBpcyBub24tZW1wdHkuCi1F
VkVOVChlbXB0aWVkKQotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCi1F
VkVOVChsb2Fkc3RhcnQpCisxLiBUZXN0IHRoYXQgYW4gaW52YWxpZCBzcmMgYXR0cmlidXRlIGZp
cmVzIGFuIGVycm9yIHdoZW4gdGhlIGZpbGUgZmFpbHMgdG8gbG9hZC4KKzIuIFRlc3QgdGhhdCBj
aGFuZ2luZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgYWZ0ZXIgYSBsb2FkIGZhaWxzLgor
My4gVGVzdCB0aGF0IGNoYW5naW5nIHNyYyBkb2VzIG5vdCB0cmlnZ2VyIGxvYWQgb25jZSBhIGZp
bGUgaXMgbG9hZGVkLgorCisKK0VWRU5UKGVycm9yKQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZp
ZGVvLmN1cnJlbnRTcmMpID09ICdib2d1cycpIE9LCitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0
YXRlID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICc0JykgT0sKKwor
UlVOKHZpZGVvLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2NvbnRlbnQvdGVzdC5tcDQnKSkKKworRVZF
TlQobG9hZGVkbWV0YWRhdGEpCiBFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNy
YykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSwotRVZFTlQobG9hZCkKLUVYUEVDVEVEICh2aWRl
by5uZXR3b3JrU3RhdGUgIT0gJzAnKSBPSworRVhQRUNURUQgKGlzTmFOKHZpZGVvLmR1cmF0aW9u
KSA9PSAnZmFsc2UnKSBPSworCitSVU4odmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVu
dC9zaWxlbmNlLm1wZycpKQorCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zcmMtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tc3JjLWNoYW5nZS5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyNSArMSw0MCBA
QAotPHZpZGVvIHNyYz1ib2d1cyBjb250cm9scz48L3ZpZGVvPgotPGRpdj4KLVRlc3QgdGhhdCBj
aGFuZ2luZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgd2hlbiBuZXR3b3JrIHN0YXRlIGlz
IGVtcHR5Ljxicj4KLVRlc3QgdGhhdCBpdCBkb2VzIG5vdCB0cmlnZ2VyIGxvYWQgd2hlbiBuZXR3
b3JrIHN0YXRlIGlzIG5vbi1lbXB0eS4KLTwvZGl2PgotPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgd2FpdEZvckV2ZW50KCdlbXB0aWVkJywgZnVuY3Rp
b24gKCkgewotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxN
ZWRpYUVsZW1lbnQuRU1QVFkpOwotICAgICAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdj
b250ZW50L3Rlc3QubXA0JykKLSAgICAgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiLCBmdW5j
dGlvbiAoKSB7IHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAi
Y29udGVudC90ZXN0Lm1wNCIpOyB9KTsKKzxodG1sPgorPGJvZHk+CisgICAgCisgICAgPHZpZGVv
IHNyYz1ib2d1cyBjb250cm9scz48L3ZpZGVvPgogCi0gICAgICAgIHdhaXRGb3JFdmVudCgnbG9h
ZCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29y
a1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSwgIiE9Iik7Ci0gICAgICAgICAgICB2aWRl
by5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250ZW50L3Rlc3Qud2F2Jyk7CisgICAgPHA+CisgICAg
MS4gVGVzdCB0aGF0IGFuIGludmFsaWQgc3JjIGF0dHJpYnV0ZSBmaXJlcyBhbiBlcnJvciB3aGVu
IHRoZSBmaWxlIGZhaWxzIHRvIGxvYWQuPGJyPgorICAgIDIuIFRlc3QgdGhhdCBjaGFuZ2luZyBz
cmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgYWZ0ZXIgYSBsb2FkIGZhaWxzLjxicj4KKyAgICAz
LiBUZXN0IHRoYXQgY2hhbmdpbmcgc3JjIGRvZXMgbm90IHRyaWdnZXIgbG9hZCBvbmNlIGEgZmls
ZSBpcyBsb2FkZWQuCisgICAgPC9wCisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgorICAgIAorICAgICAgICBmdW5jdGlvbiBlcnJvckV2ZW50KCkK
KyAgICAgICAgeworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5j
dXJyZW50U3JjKSIsICJib2d1cyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5u
ZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFf
RVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICBydW4oInZpZGVvLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2NvbnRlbnQvdGVzdC5tcDQn
KSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAgIAorICAg
ICAgICBmdW5jdGlvbiBsb2FkZWRtZXRhZGF0YSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC90ZXN0
Lm1wNCIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJpc05hTih2aWRlby5kdXJhdGlvbiki
LCBmYWxzZSk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgcnVu
KCJ2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250ZW50L3NpbGVuY2UubXBnJykiKTsKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgNTAwKSA7CisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICB9CisgICAgCisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Cisg
ICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZGVkbWV0YWRhdGEnLCBsb2FkZWRtZXRhZGF0YSk7Cisg
ICAgICAgIHdhaXRGb3JFdmVudCgnZXJyb3InLCBlcnJvckV2ZW50KTsKKyAgICA8L3NjcmlwdD4K
IAotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnLCBmdW5jdGlvbiAoKSB7IAot
ICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdCgiTE9BRFNUQVJUIGZpcmVkIik7Ci0gICAgICAgICAg
ICAgICAgZW5kVGVzdCgpOwotICAgICAgICAgICAgfSApOwotCi0gICAgICAgICAgICBzZXRUaW1l
b3V0KGVuZFRlc3QsIDUwMCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1y
ZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNyYy1pbnZhbGlkLXJlbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE3IEBACisKK0VWRU5UKGxvYWRzdGFydCkKK0VYUEVDVEVEIChyZWxh
dGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnYm9ndXMubW92JykgT0sKKworRVZFTlQoZXJy
b3IpCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnNCcpIE9LCitSVU4odmlkZW8ucmVt
b3ZlQXR0cmlidXRlKCdzcmMnKSkKKworRVZFTlQobG9hZHN0YXJ0KQorRVhQRUNURUQgKHJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKKworRVZF
TlQobG9hZGVkbWV0YWRhdGEpCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNy
YykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSworRVhQRUNURUQgKGlzTmFOKHZpZGVvLmR1cmF0
aW9uKSA9PSAnZmFsc2UnKSBPSworCitFTkQgT0YgVEVTVAorVGVzdCB0aGF0IHJlbW92aW5nIGlu
dmFsaWQgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgb2YgPHNvdXJjZT4gZWxlbWVudHMK
SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWludmFsaWQt
cmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1sPgorPGJvZHk+
CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgIDx2aWRlbyBz
cmM9Ym9ndXMubW92IGNvbnRyb2xzPgorICAgICAgICA8c291cmNlIHNyYz1jb250ZW50L3Rlc3Qu
bXA0PgorICAgIDwvdmlkZW8+CisKKyAgICA8cD5UZXN0IHRoYXQgcmVtb3ZpbmcgaW52YWxpZCAn
c3JjJyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCBvZiAmbHQ7c291cmNlJmd0OyBlbGVtZW50czwv
cD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZpZGVvID0gbWVkaWEgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKworICAgICAgICB2YXIgbG9hZENvdW50ID0g
MDsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvYWRTdGFydCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgICsrbG9hZENvdW50OworICAgICAgICAgICAgaWYgKGxvYWRDb3VudCA9PSAxKQor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNy
YykiLCAiYm9ndXMubW92Iik7CisgICAgICAgICAgICBlbHNlIGlmIChsb2FkQ291bnQgPT0gMikK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRT
cmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBmYWlsVGVzdCgiJ2xvYWRDb3VudCcgZmlyZWQgIiArIGxvYWRDb3VudCArICJ0aW1lcyIg
KTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBsb2FkZWRtZXRhZGF0YSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC90ZXN0Lm1wNCIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJpc05hTih2aWRlby5kdXJhdGlvbikiLCBmYWxz
ZSk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gZXJyb3JFdmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVE
KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBlbmRUZXN0KCk7IH0gLCA1
MDApIDsKKyAgICAgICAgICAgIHJ1bigidmlkZW8ucmVtb3ZlQXR0cmlidXRlKCdzcmMnKSIpOwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZGVkbWV0YWRhdGEnLCBsb2Fk
ZWRtZXRhZGF0YSk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0YXJ0JywgbG9hZFN0YXJ0
ICk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnZXJyb3InLCBlcnJvckV2ZW50KTsKKyAgICA8L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c3JjLXBsdXMtc291cmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitFVkVOVChsb2Fkc3RhcnQpCitFWFBFQ1RFRCAocmVs
YXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvYm9ndXMubXBlZycpIE9LCisK
K0VWRU5UKGVycm9yKQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09
ICdjb250ZW50L2JvZ3VzLm1wZWcnKSBPSworRVhQRUNURUQgKG1lZGlhLmVycm9yLmNvZGUgPT0g
JzQnKSBPSworCitFTkQgT0YgVEVTVAorVGVzdCB0aGF0IGEgPHNvdXJjZT4gZWxlbWVudCBpcyBu
b3QgdXNlZCB3aGVuIGEgYm9ndXMgJ3NyYycgYXR0cmlidXRlIGlzIHByZXNlbnQKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKzxodG1sPgorPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAgIDx2aWRlbyBzcmM9Y29udGVudC9ib2d1cy5t
cGVnIGNvbnRyb2xzPgorICAgICAgICA8c291cmNlIHNyYz1jb250ZW50L3Rlc3QubXA0PgorICAg
IDwvdmlkZW8+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisK
KyAgICAgICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCBmdW5jdGlv
bigpIHsgCisgICAgICAgICAgICBmYWlsVGVzdCgiJ2xvYWRlZG1ldGFkYXRhJyBldmVudCBmaXJl
ZCIgKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnLCBm
dW5jdGlvbiAoKSB7IAorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRl
by5jdXJyZW50U3JjKSIsICJjb250ZW50L2JvZ3VzLm1wZWciKTsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgIH0gKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9y
JywgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwo
dmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC9ib2d1cy5tcGVnIik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoIm1lZGlhLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9OT05F
X1NVUFBPUlRFRCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDIwMCkgOworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfSk7CisKKyAgICA8L3NjcmlwdD4K
KworPHA+VGVzdCB0aGF0IGEgJmx0O3NvdXJjZSZndDsgZWxlbWVudCBpcyBub3QgdXNlZCB3aGVu
IGEgYm9ndXMgJ3NyYycgYXR0cmlidXRlIGlzIHByZXNlbnQKKzwvcD4KKworPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3Jj
LXJlbW92ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSwxMiBAQAotVGVz
dCB0aGF0IHJlbW92aW5nIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZAotRVZFTlQoZW1wdGll
ZCkKLUVWRU5UKGxvYWRzdGFydCkKLUVYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50
U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9LCi1FTkQgT0YgVEVTVAogCitFVkVOVChsb2Fk
ZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAn
Y29udGVudC9zaWxlbmNlLm1wZycpIE9LCitFWFBFQ1RFRCAoaXNOYU4odmlkZW8uZHVyYXRpb24p
ID09ICdmYWxzZScpIE9LCisKK1JVTih2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpKQorCitF
WFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvc2lsZW5j
ZS5tcGcnKSBPSworRVhQRUNURUQgKGlzTmFOKHZpZGVvLmR1cmF0aW9uKSA9PSAnZmFsc2UnKSBP
SworCitFTkQgT0YgVEVTVAorVGVzdCB0aGF0IHJlbW92aW5nIHZhbGlkICdzcmMnIGF0dHJpYnV0
ZSBET0VTIE5PVCB0cmlnZ2VyIGxvYWQgb2YgPHNvdXJjZT4gZWxlbWVudHMKSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zcmMtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE5ICsxLDUyIEBACis8aHRtbD4KIDxib2R5PgotPGRpdj4KLVRlc3QgdGhhdCByZW1vdmluZyBz
cmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQKLTwvZGl2PgotPHNjcmlwdCBzcmM9dmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KLTx2aWRlbyBzcmM9Ym9ndXMgY29udHJvbHM+Ci0gICAgPHNvdXJjZSBz
cmM9Y29udGVudC90ZXN0Lm1wND48L3NvdXJjZT4KLTwvdmlkZW8+Ci08c2NyaXB0PgotICAgIHZp
ZGVvID0gbWVkaWEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsK
LSAgICB3YWl0Rm9yRXZlbnQoJ2VtcHRpZWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZpZGVv
LnJlbW92ZUF0dHJpYnV0ZSgnc3JjJykKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgogCi0gICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0YXJ0JywgZnVuY3Rpb24gKCkg
eyAKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNy
YykiLCAiY29udGVudC90ZXN0Lm1wNCIpOworICAgIDx2aWRlbyBzcmM9Y29udGVudC9zaWxlbmNl
Lm1wZyBjb250cm9scz4KKyAgICAgICAgPHNvdXJjZSBzcmM9Y29udGVudC90ZXN0Lm1wND4KKyAg
ICA8L3ZpZGVvPgorCisgICAgPHA+VGVzdCB0aGF0IHJlbW92aW5nIHZhbGlkICdzcmMnIGF0dHJp
YnV0ZSBET0VTIE5PVCB0cmlnZ2VyIGxvYWQgb2YgJmx0O3NvdXJjZSZndDsgZWxlbWVudHM8L3A+
CisKKyAgICA8c2NyaXB0PgorICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAg
dmFyIGxvYWRDb3VudCA9IDA7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiB0ZXN0U3JjKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5j
dXJyZW50U3JjKSIsICJjb250ZW50L3NpbGVuY2UubXBnIik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoImlzTmFOKHZpZGVvLmR1cmF0aW9uKSIsIGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkZWRtZXRhZGF0
YSgpCisgICAgICAgIHsKKyAgICAgICAgICAgICsrbG9hZENvdW50OworICAgICAgICAgICAgaWYg
KGxvYWRDb3VudCA9PSAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RTcmMo
KTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnc3JjJykiKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+
IDogJ2xvYWRDb3VudCcgZmlyZWQgIiArIGxvYWRDb3VudCArICJ0aW1lcyIgKTsKKyAgICAgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBzb21lVGltZUxh
dGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFNyYygpOwogICAgICAgICAgICAgZW5k
VGVzdCgpOwotICAgICAgICB9ICk7Ci0gICAgfSk7Ci08L3NjcmlwdD4KKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRhJywgbG9hZGVkbWV0YWRhdGEpOwor
ICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDQwMCkgOworICAgIDwvc2NyaXB0Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMJKHJldmlzaW9u
IDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQgQEAKKwogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CkBAIC02LDExICs3LDE2IEBAIHZhciB2aWRlbzsKIHZh
ciBtZWRpYTsKIHZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotdHJ5IHsKLSAgICB2aWRlbyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwotICAgIGlmICh2aWRlbykK
LSAgICAgICAgbWVkaWEgPSB2aWRlbzsKLX0gY2F0Y2ggKGV4KSB7IH0KK2ZpbmRNZWRpYUVsZW1l
bnQoKTsKKworZnVuY3Rpb24gZmluZE1lZGlhRWxlbWVudCgpCit7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAg
ICAgICAgaWYgKHZpZGVvKQorICAgICAgICAgICAgbWVkaWEgPSB2aWRlbzsKKyAgICB9IGNhdGNo
IChleCkgeyB9Cit9CiAKIGZ1bmN0aW9uIGhhbmdlZCgpCiB7CkBAIC00Nyw5ICs1MywxMSBAQCBm
dW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJpbmcsIGV4CiAgICAgdmFyIHN1Y2Nlc3Mg
PSBmYWxzZTsKICAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCiAgICAgewotICAgICAgICBjYXNlICc8
JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA8ICBleHBlY3RlZDsgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Jz4nOiAgc3VjY2VzcyA9IG9ic2VydmVkID4gIGV4cGVjdGVkOyBicmVhazsKLSAgICAgICAgY2Fz
ZSAnIT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgIT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBj
YXNlICc8JzogICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAg
ICBjYXNlICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAg
ICAgIGNhc2UgJz4nOiAgIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgJz49Jzogc3VjY2VzcyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBicmVhazsK
KyAgICAgICAgY2FzZSAnIT0nOiAgc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVh
azsKICAgICAgICAgY2FzZSAnPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJy
ZWFrOwogICAgIH0KICAgICAKQEAgLTkzLDcgKzEwMSw3IEBAIGZ1bmN0aW9uIHdhaXRGb3JFdmVu
dChldmVudE5hbWUsIGZ1bmMsIGUKICAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCiAgICAgfQog
Ci0gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsg
ICAgCisgICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNr
KTsKIH0KIAogZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFuZEVuZChldmVudE5hbWUsIHRlc3RG
dW5jU3RyaW5nKQpAQCAtMTUwLDYgKzE1OCwxMyBAQCBmdW5jdGlvbiBmYWlsVGVzdEluKG1zKQog
ICAgIH0sIG1zKTsKIH0KIAorZnVuY3Rpb24gZmFpbFRlc3QodGV4dCkKK3sKKyAgICBsb2dSZXN1
bHQoZmFzbGUsIHRleHQpOworICAgIGVuZFRlc3QoKTsKK30KKworCiBmdW5jdGlvbiBsb2dSZXN1
bHQoc3VjY2VzcywgdGV4dCkKIHsKICAgICBpZiAoc3VjY2VzcykKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXRpbWV1cGRhdGUtd2hpbGUtcGxheWluZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS13aGlsZS1wbGF5aW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRp
bWV1cGRhdGUtd2hpbGUtcGxheWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKK1Rlc3QgJ3RpbWV1cGRhdGUnIGV2ZW50cyBhcmUgcG9zdGVkIHdoaWxlIHBsYXlp
bmcgYnV0IG5vdCB3aGlsZSBwYXVzZWQuCisKK1JVTih2aWRlby5wbGF5KCkpCisKK0VWRU5UKGxv
YWRzdGFydCkKK0VWRU5UKGR1cmF0aW9uY2hhbmdlKQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitF
VkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQor
RVZFTlQocGxheWluZykKKworUlVOKHZpZGVvLnBhdXNlKCkpCitFVkVOVChwYXVzZSkKKworRU5E
IE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS13aGls
ZS1wbGF5aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGlt
ZXVwZGF0ZS13aGlsZS1wbGF5aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NiBAQAorPGh0bWw+Cis8Ym9keT4KKyAgICAKKyAgICA8dmlkZW8gc3JjPWNvbnRl
bnQvdGVzdC5tcDQgY29udHJvbHM+PC92aWRlbz4KKworICAgIDxwPgorICAgIFRlc3QgJ3RpbWV1
cGRhdGUnIGV2ZW50cyBhcmUgcG9zdGVkIHdoaWxlIHBsYXlpbmcgYnV0IG5vdCB3aGlsZSBwYXVz
ZWQuCisgICAgPC9wCisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgIAorICAgICAgICB2YXIgdGltZXVwZGF0ZUV2ZW50Q291bnQgPSAwOwor
ICAgICAgICB2YXIgY291bnRXaGlsZVBsYXlpbmcgPSAwOworCisgICAgICAgIGZ1bmN0aW9uIHNv
bWVUaW1lTGF0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY291bnRXaGlsZVBsYXlp
bmcgIT0gdGltZXVwZGF0ZUV2ZW50Q291bnQpCisgICAgICAgICAgICAgICAgZmFpbFRlc3QoIid0
aW1ldXBkYXRlJyBldmVudHMgcG9zdGVkIGFmdGVyIHBhdXNpbmciKTsKKyAgICAgICAgICAgIGVu
ZFRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHBhdXNlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgY291bnRXaGlsZVBsYXlpbmcgPSB0aW1ldXBkYXRlRXZlbnRDb3VudDsK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgNDAwKSA7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlv
biBwbGF5aW5nKCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7IHJ1bigidmlkZW8ucGF1c2UoKSIpOyB9LCA1MDApIDsKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgIH0KKworICAgICAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCJ0
aW1ldXBkYXRlIiwgZnVuY3Rpb24gKCkgeyArK3RpbWV1cGRhdGVFdmVudENvdW50OyB9KTsKKwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJyk7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9h
ZHN0YXJ0Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgICAgICB3
YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hhbmdl
Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiZHVyYXRpb25jaGFuZ2UiKTsKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRl
ZGRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgICAgIHdhaXRG
b3JFdmVudCgiY2FucGxheXRocm91Z2giKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJwYXVzZSIs
IHBhdXNlKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJwbGF5Iik7CisgICAgICAgIHdhaXRGb3JF
dmVudCgicGxheWluZyIsIHBsYXlpbmcpOworCisgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7
CisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28620</attachid>
            <date>2009-03-14 11:43:55 -0700</date>
            <delta_ts>2009-03-15 21:20:31 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>03.14.2009_patch.txt</filename>
            <type>text/plain</type>
            <size>163945</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTY5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAwIEBACisyMDA5LTAzLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU4OAorICAgICAg
ICAKKyAgICAgICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQgaW1wbGVtZW50YXRpb24gdG8gY3VycmVu
dCBIVE1MNSBzcGVjCisKKyAgICAgICAgTmV3IHRlc3RzOiAKKyAgICAgICAgICAgICAgIG1lZGlh
L21lZGlhLWNvbnN0YW50cy5odG1sCisgICAgICAgICAgICAgICBtZWRpYS92aWRlby1zZWVrLW5v
LXNyYy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc291cmNlLWFk
ZC1zcmMuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3Zl
Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1sCisg
ICAgICAgICAgICAgICBtZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRtbAor
CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDogUmVtb3ZlIG9ic29sdXRlIGV2ZW50cywgYWRk
IG5ldyBvbmVzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyIHZhcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKTogVHJpZ2dlciBsb2FkKCkgb25seSB3aGVuIHdlIGRvbid0CisgICAg
ICAgIGhhdmUgYSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVkRnJvbURvY3VtZW50KTogRGVhbCB3aXRoIHN0YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUHJvZ3Jlc3NFdmVudCk6IE5l
dywgY3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgYW5kIAorICAgICAgICBhZGQgaXQgdG8gdGhlIGV2
ZW50IHF1ZXVlIHRvIGJlIGRpc3BhdGNoIHdoZW4gdGhlIHRpbWVyIGZpcmVzLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6IE5ldywgY3JlYXRlIGEg
Z2VuZXJpYyBldmVudCBhbmQgYWRkCisgICAgICAgIGl0IHRvIHRoZSBldmVudCBxdWV1ZSB0byBi
ZSBkaXNwYXRjaCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmVucXVldWVFdmVudCk6IEFkZCBhbiBldmVudCB0byB0aGUgcXVldWUgYW5k
IHRpY2tlIHRoZSAKKyAgICAgICAgYXN5bmNoIGV2ZW50IHRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOiBEaXNwYXRjaCBhbGwg
cGVuZGluZyBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
VGltZXJGaXJlZCk6IEVpdGhlciB0cmlnZ2VyIHRoZSBpbml0aWFsIGxvYWQgb3IKKyAgICAgICAg
dHJ5IHRvIGxvYWQgdGhlIG5leHQgPHNvdXJjZT4gdXJsLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZCk6IE1pbm9yIHN0eWxlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFRoZSBmaXJzdCBwYXJ0IG9mIHRo
ZSBzcGVjIGxvYWQgYWxnb3JpdGhtLCBjbGVhbnVwCisgICAgICAgIHRoZSBjdXJyZW50IGxvYWQg
KGlmIGFueSkgYW5kIHNldCB1cCBzdGF0ZSBmb3IgYSBuZXcgbG9hZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UpOiBEZWFsIHdpdGggbm8g
J3NyYycgb3IgPHNvdXJjZT4sIHBvc3QgJ2xvYWRzdGFydCcKKyAgICAgICAgZXZlbnQsIGFuZCBp
bml0aWF0ZSBsb2FkIGZyb20gJ3NyYycgaWYgcHJlc2VudC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hpbGQpOiBJbml0aWF0ZSBsb2FkIGZyb20g
bmV4dCA8c291cmNlPiB1cmwsIG9yIHRyaWdnZXIKKyAgICAgICAgbm9uZVN1cHBvcnRlZCgpIGlm
IG5vIG1vcmUgdG8gY29uc2lkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UpOiBJbnN0YW50aWF0ZSBhIG5ldyBNZWRpYVBsYXllciBhbmQgYXNrIGl0
IHRvIGxvYWQgYSB1cmwuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdGFy
dFByb2dyZXNzRXZlbnRUaW1lcik6IFN0YXJ0IHRoZSByZXBlYXRpbmcgcHJvZ3Jlc3MgZXZlbnQg
dGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVk
KTogUG9zdCBlcnJvciBldmVudCBhbmQgc2V0IHVwIHN0YXRlIHdoZW4gbm8gdmFsaWQgCisgICAg
ICAgIG1lZGlhIHVybCB3YXMgZm91bmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUVuZ2luZUVycm9yKTogUG9zdCBlcnJvciBldmVudCBhbmQgc2V0IHVwIHN0YXRl
IHdoZW4gbm8gdmFsaWQgCisgICAgICAgIG1lZGlhIGVuZ2luZSBmYWlsZWQgd2l0aCBhIGRlY29k
ZSBlcnJvciBvciBhIG5ldHdvcmsgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKTogVXBkYXRlZCBmb3IgbmV3IHNw
ZWMgbmV0d29yayBzdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOiBVcGRhdGVkIGZvciBuZXcgc3BlYyByZWFkeSBzdGF0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRUaW1l
ckZpcmVkKTogQmFpbCBpZiB0aGUgbmV0d29yayBpcyBub3QgYWN0aXZlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vlayk6IFJldHVybiBJTlZBTElEX1NUQVRFX0VSUiBl
eGNlcHRpb24gaWYgc3RhdGUgaXMgdG9vIGxvdyBvcgorICAgICAgICBpZiBwbGF5ZXIgaGFzbid0
IGJlZW4gc2V0IHVwIHlldC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXNlIGxvYWQoKSBpcyBhc3lu
Yy4gQ2xlYXIgdGhlIGZsYWcKKyAgICAgICAgd2UgdXNlIHRvIGd1YXJkIGFnYWluc3Qgc2VuZGlu
ZyAnZW5kZWQnIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZHVyYXRpb24pOiBEb24ndCBib3RoZXIgY2FsbGluZyBtZWRpYSBlbmdpbmUgYmVmb3Jl
IGl0IGhhcyBtZXRhZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dERlZmF1bHRQbGF5YmFja1JhdGUpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLCAwIGlzIG5vIGxv
bmdlciBhbgorICAgICAgICBpbnZhbGlkIHJhdGUuIAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKTogUmVtb3ZlIGV4Y2VwdGlvbiBwYXJhbSwgMCBp
cyBubyBsb25nZXIgYW4KKyAgICAgICAgaW52YWxpZCByYXRlLiBDYWNoZSByYXRlIGJlaW5nIHNl
dCBzbyB3ZSBjYW4gdXNlIGl0IGxhdGVyIGlmIG1lZGlhIGVuZ2luZSBpc24ndCByZWFkeSBub3cu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5KTogUmVtb3ZlIGV4Y2Vw
dGlvbiBwYXJhbSwgcGxheSgpIGJlZm9yZSBsb2FkKCkgbm93IGp1c3QKKyAgICAgICAgc3RhcnRz
IGxvYWRpbmcgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5SW50ZXJuYWwpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLiBGaXJlICd3YWl0aW5n
JyBvciAncGxheWluZycKKyAgICAgICAgZXZlbnQgZGVwZW5kaW5nIG9uIGN1cnJlbnQgc3RhdGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSk6IFJlbW92ZSBleGNl
cHRpb24gcGFyYW0sIHBhdXNlKCkgYmVmb3JlIGxvYWQoKSBub3cganVzdAorICAgICAgICBzdGFy
dHMgbG9hZGluZyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKTogZGlzcGF0Y2hFdmVudEFzeW5j
IC0+IHNjaGVkdWxlRXZlbnQKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dE11dGVkKTogZGlzcGF0Y2hFdmVudEFzeW5jIC0+IHNjaGVkdWxlRXZlbnQKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6IFJlbW92ZSBleGNlcHRp
b24gcGFyYW0uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnVi
YmluZyk6IHBhdXNlKCkgZG9lc24ndCB0YWtlIGFuIGV4Y2VwdGlvbiBwYXJhbS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0UGxheWJhY2tQcm9ncmVzc1RpbWVyKTog
TmV3LCBzdGFydHMgdGltZXIgdGhhdCBmaXJlcyA0IHRpbWVzIHBlcgorICAgICAgICBzZWNvbmQg
d2hlbiB0aGUgbW92aWUgaXMgcGxheWluZyB0byB0aW1ldXBkYXRlIHNvIHdlIGNhbiBwb3N0ICd0
aW1ldXBkYXRlJyBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
bGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZCk6IFRpbWVyIHByb2MuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCk6IEJvdHRsZW5lY2sg
YXJvdW5kIHNjaGVkdWxpbmcgYSAndGltZXVwZGF0ZScKKyAgICAgICAgZXZlbnQgYmVjYXVzZSB3
ZSBib3RoIGZpcmUgdGhlbSB0aGVtIHdoZW4gdGhlIHNwZWMgc2F5cyB3ZSBzaG91bGQgYW5kIHdo
ZW4gdGhlIG1lZGlhIGVuZ2luZQorICAgICAgICBzYXlzIHRoYXQgdGltZSBoYXMganVtcGVkLCBi
dXQgd2UgZG9uJ3Qgd2FudCB0byBmaXJlIG1vcmUgdGhhbiBvbmUgYXQgYSBnaXZlbiBtb3ZpZSB0
aW1lLiBXZSBhbHNvCisgICAgICAgIHVzZSB0aGlzIGJvdHRsZW5lY2sgdG8ga2VlcCB0cmFjayBv
ZiB0aGUgbGFzdCB0aW1lIG9uZSB3YXMgcG9zdGVkIHNvIHdlIHdvbid0IGZpcmUgdG9vIG9mdGVu
CisgICAgICAgIGR1cmluZyBwbGF5YmFjay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNhblBsYXkpOiByZWFkeVN0YXRlIG5vdyB0cmFja3Mgd2hldGhlciBvciBub3Qgd2Ug
aGF2ZSBtZXRhZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQ
b3RlbnRpYWxTb3VyY2VDaGlsZCk6IE5ldywgY2hlY2tzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYSA8
c291cmNlPgorICAgICAgICBlbGVtZW50IHdpdGggYSAnc3JjJyBhdHRyaWJ1dGUgdGhhdCB3ZSBo
YXZlIG5vdCB0cmllZCB0byBsb2FkIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om5leHRTb3VyY2VDaGlsZCk6IE5ldywgcmV0dXJucyB0aGUgdXJsIGFuZCBjb250ZW50
IHR5cGUgb2YgdGhlIG5leHQKKyAgICAgICAgPHNvdXJjZT4gZWxlbWVudCB0aGF0IHdlIGhhdmVu
J3QgdHJpZWQgdG8gbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyVGltZUNoYW5nZWQpOiBTY2hlZHVsZSAnc2Vla2VkJyBldmVudCB3aGVuIHNlZWtp
bmcgY29tcGxldGVzLgorICAgICAgICBTZXQgYSBmbGFnIHdoZW4gd2UgcG9zdCB0aGUgJ2VuZGVk
JyBldmVudCwgY2xlYXIgaXQgd2hlbiB0aW1lIGNoYW5nZWQgYW5kIHdlIGFyZW4ndCBhdCB0aGUg
ZW5kIHNpbmNlCisgICAgICAgIHNvbWUgbWVkaWEgZW5naW5lcyBjYWxsIHRoaXMgcHJvYyBtb3Jl
IHRoYW4gb25jZSB3aGVuIHBsYXliYWNrIHJlYWNoZXMgdGhlIGVuZCBhbmQgc3RvcHMsIGJ1dCB3
ZQorICAgICAgICBkb24ndCB3YW50IHRvIHBvc3QgJ2VuZGVkJyBtb3JlIHRoYW4gb25jZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25DaGFu
Z2VkKTogTmV3LCBhZGRlZCBzbyBtZWRpYSBlbmdpbmUgY2FuIGluZm9ybQorICAgICAgICB3aGVu
IHRoZSBtb3ZpZSBkdXJhdGlvbiBjaGFuZ2VzIGFuZCB3ZSBjYW4gcG9zdCAnZHVyYXRpb25jaGFu
Z2VkJyBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQpOiBOZXcsIGFkZGVkIHNvIG1lZGlhIGVuZ2luZSBjYW4gaW5mb3JtIHdo
ZW4KKyAgICAgICAgdGhlIHJhdGUgY2hhbmdlZCBhbmQgd2UgY2FuIHVwZGF0ZWQgb3VyIGNhY2hl
ZCByYXRlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBrbm93CisgICAg
ICAgIHBvc3QgcGVyaW9kaWMgJ3RpbWV1cGRhdGUnIGV2ZW50cyB3aGVuIHRoZSBtb3ZpZSBpcyBh
Y3R1YWxseSBwbGF5aW5nLCBhbmQgYmVjYXVzZSB3ZSB3YW50IHRvIGtub3cKKyAgICAgICAgdGhl
IGFjdHVhbCBwbGF5YmFjayByYXRlIHdoZW4gaXQgZGlmZmVycyBmcm9tIHdoYXQgd2UgdHJpZWQg
dG8gc2V0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJT
aXplQ2hhbmdlZCk6IE5ldywgYWRkZWQgc28gbWVkaWEgZW5naW5lIGNhbiBpbmZvcm0gd2hlbgor
ICAgICAgICBhIG1vdmllJ3MgaW50cmluc2ljIHNpemUgY2hhbmdlcyBhbmQgd2UgY2FuIGluZm9y
bSB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwb3Rl
bnRpYWxseVBsYXlpbmcpOiBSZW5hbWVkIGZyb20gYWN0aXZlbHlQbGF5aW5nIHNpbmNlIHRoZSBz
cGVjIG5vdworICAgICAgICB1c2VzICJhY3RpdmVseSBwbGF5aW5nIiBmb3IgdGhpcyBjb25jZXB0
LiBVcGRhdGUgbG9naWMgZm9yIG5ldyBzdGF0ZSBuYW1lcyBhbmQgdW4tY29tbWVudCBjYWxscwor
ICAgICAgICB0byBzdG9wcGVkRHVlVG9FcnJvcnMoKSBhbmQgcGF1c2VkRm9yVXNlckludGVyYWN0
aW9uKCkgc2luY2UgdGhlIHNwZWMgc2F5cyB0aG9zZSBjb25kaWRpdG9ucworICAgICAgICBhcmUg
cGFydCBvZiB0aGUgYW5zd2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
ZW5kZWRQbGF5YmFjayk6IFVwZGF0ZSBsb2dpYyBmb3IgbmV3IHN0YXRlIG5hbWVzLiAKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9ycyk6IE5ldywg
c3BlYyBzYXlzIHRoaXMgbG9naWMgc2hvdWxkIGJlIHBhcnQgb2YKKyAgICAgICAgdGhlIGRldGVy
bWluYXRpb24gb2YgInBvdGVudGlhbGx5IHBsYXlpbmciLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKTogTmV3LCBwbGFjZWhvbGRl
ciBmb3Igd2hlbiAoaWYpIHVzZXIKKyAgICAgICAgYWdlbnQgc3VwcG9ydHMgdGhpcyBzcGVjIGNv
bmNlcHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3Rh
dGUpOiBTdG9wIHRpbWVyIHVzZWQgdG8gZmlyZSBwZXJpb2RpYyAndGltZXVwZGF0ZScgCisgICAg
ICAgIGV2ZW50cyB3aGVuIHdlIHBhdXNlcyB0aGUgbW92aWUuIFNldCB0aGUgbWVkaWEgZW5naW5l
IHJhdGUgYmVmb3JlIGNhbGxpbmcgcGxheSgpIGluIGNhc2UgaXQKKyAgICAgICAgd2Fzbid0IHNl
dCB1cCB3aGVuIHRoZSByYXRlIHdhcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c3RvcFBlcmlvZGljVGltZXJzKTogTmV3LCBzdG9wIHRoZSBwcm9ncmVzcyBl
dmVudCBhbmQgJ3RpbWV1cGF0ZScKKyAgICAgICAgZXZlbnQgdGltZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOiBOZXcsIGxvZ2ljIHB1
bGxlZCBvdXQgb2YgZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgYW5kIHVwZGF0
ZWQgZm9yIHRoZSBjdXJyZW50IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6IE1vdmVkIHNvbWUgbG9naWMgdG8gdXNl
ckNhbmNlbGxlZExvYWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1
bWVudERpZEJlY29tZUFjdGl2ZSk6IFVwZGF0ZSBjb21tZW50cy4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmluaXRpYWxVUkwpOiBVcGRhdGUgZm9yIHJlZmFjdG9yaW5nIG9m
IGNvZGUgdGhhdCBkZXRlcm1pbmVzIHRoZSAKKyAgICAgICAgaW5pdGlhbCB1cmwuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IENoYW5nZSBSZWFkeVN0YXRlIGFuZCBOZXR3b3Jr
U3RhdGUgZW51bXMgdG8gbWF0Y2ggbmFtZXMgaW4gdGhlIHNwZWMsCisgICAgICAgIHVwZGF0ZSBm
b3IgY2hhbmdlcyBpbiAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBVcGRhdGUgcmVhZHkgc3Rh
dGUgYW5kIG5ldHdvcmsgc3RhdGUgY29uc3RhbnRzIGZvciBzcGVjIGNoYW5nZXMuCisgICAgICAg
IGRlZmF1bHRQbGF5YmFja1JhdGUsIHBsYXliYWNrUmF0ZSwgcGxheSgpLCBhbmQgcGF1c2UoKSBu
byBsb25nZXIgcmFpc2UgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KTogVXBkYXRlIGZvciBuZXR3b3JrIHN0YXRlIG5hbWUgY2hhbmdlcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVQb3N0ZXJJbWFnZSk6IFVwZGF0ZSBmb3IgcmVhZHkgc3Rh
dGUgbmFtZSBjaGFuZ2VzLgorCisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVycm9yOjopOiBhZGQgTUVESUFfRVJSX05PTkVfU1VQUE9SVEVELgor
CisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmlkbDogYWRkIE1FRElBX0VSUl9OT05FX1NVUFBP
UlRFRC4KKworICAgICAgICAqIGxvYWRlci9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRG9jdW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBwbGF5KCkgYW5kIHBh
dXNlKCkgZG9uJ3QgdGFrZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQ
cml2YXRlOjpyZWFkeVN0YXRlKTogVXBkYXRlIGZvciBuZXd0b3JrIHN0YXRlIG5hbWUgY2hhbmdl
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCk6IE5ldywgc28g
ZW5naW5lIGNhbiByZXBvcnQgaW50cmluc2ljIHNpemUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6IE5ldywgc28gZW5naW5lIGNhbiByZXBvcnQg
cmF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6IE5ldywgc28gZW5naW5lIGNhbiByZXBvcnQgZHVyYXRpb24gY2hhbmdlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOiBVcGRhdGUgTmV0d29ya1N0YXRl
IGFuZCBSZWFkeVN0YXRlIGVudW0gbmFtZXMgdG8gbWF0Y2ggc3BlYworICAgICAgICBzdGF0ZXMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlv
bkNoYW5nZWQpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJSYXRlQ2hhbmdlZCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Q2xpZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Oik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRh
dGVTdGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZGluZ0ZhaWxlZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6IFVwZGF0ZSBmb3IgbmV0d29yay9yZWFkeSBzdGF0
ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIFJlbW92ZSBlbmRQb2ludFRpbWVyLCBpdCBpcyBubyBs
b25nZXIgbmVjZXNzYXJ5LiBBZGQgbV9lbmFibGVkVHJhY2tDb3VudCBhbmQgbV9kdXJhdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bWV0YURhdGFBdmFpbGFibGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlKTogTm8gbW9yZSBtX2VuZFBvaW50VGltZXIgb3IgbV9lbmRUaW1lLiBJbml0aWFsaXpl
CisgICAgICAgIG1fZW5hYmxlZFRyYWNrQ291bnQgYW5kIG1fZHVyYXRpb24uIFVwZGF0ZSBmb3Ig
bmV0d29yay9yZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KTog
Tm8gbW9yZSBtX2VuZFBvaW50VGltZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnBhdXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGU6OmN1cnJlbnRUaW1lKTogTm8gbW9yZSBtX2VuZFRpbWUuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OnNlZWspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6ZG9TZWVrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGU6OnNldEVuZFRpbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4gUmV0dXJuCisgICAgICAgIGRpZmZlcmVudCBlcnJvcnMgZGVwZW5k
aW5nIG9uIHdoYXQgY2F1c2VzIGEgZmFpbHVyZS4gV2F0Y2ggZm9yIGFuZCByZXBvcnQgZHVyYXRp
b24gY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmF0ZUNo
YW5nZWQpOiBSZXBvcnQgcmF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpzaXplQ2hhbmdlZCk6IFJlcG9ydCBzaXplIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCk6IE5vIG1vcmUgZW5kcG9pbnQgdGlt
ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnNldFZpc2libGUpOiBV
cGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MpOiBEb24n
dCByZXR1cm4gbnVtYmVyIG9mIHVuc3VwcG9ydGVkCisgICAgICAgIHRyYWNrcywgc3RvcmUgaW4g
bV9lbmFibGVkVHJhY2tDb3VudCBzbyB3ZSBjYW4gdXNlIGl0IHRvIGhlbHAgZGV0ZXJtaW5lIGNh
dXNlcyBvZiBmYWlsdXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQ
bGF5ZXJQcml2YXRlUGhvbm9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0YXRl
IG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bG9h
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVT
dGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bmF0
dXJhbFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUpOiBObyBtb3JlIG1fZW5kUG9pbnRUaW1l
ci4gVXBkYXRlIGZvciAKKyAgICAgICAgbmV0d29yay9yZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9y
IG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLiBObyBtb3JlCisgICAgICAgIG1fZW5k
UG9pbnRUaW1lci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGxheSk6
IE5vIG1vcmUgbV9lbmRQb2ludFRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjpwYXVzZSk6IERpdHRvLiAKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6c2V0RW5kVGltZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjp1cGRhdGVTdGF0ZXMpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaWRFbmQp
OiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmg6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBVcGRhdGUgZm9yIG5l
dHdvcmsvcmVhZHkgc3RhdGUgCisgICAgICAgIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTog
RGl0dG8uCisKIDIwMDktMDMtMTMgIE1pa2UgQmVsc2hlICA8bWlrZUBiZWxzaGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlz
aW9uIDQxNjU4KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsMjQgKzEwMiwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8od2Via2l0
QmVmb3JlVGV4dEluc2VydGVkKSBcCiAgICAgbWFjcm8od2Via2l0RWRpdGFibGVDb250ZW50Q2hh
bmdlZCkgXAogICAgIFwKLSAgICBtYWNybyhjYW5zaG93Y3VycmVudGZyYW1lKSBcCiAgICAgbWFj
cm8oY2FucGxheSkgXAogICAgIG1hY3JvKGNhbnBsYXl0aHJvdWdoKSBcCi0gICAgbWFjcm8oZGF0
YXVuYXZhaWxhYmxlKSBcCiAgICAgbWFjcm8oZHVyYXRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhl
bXB0aWVkKSBcCiAgICAgbWFjcm8oZW5kZWQpIFwKLSAgICBtYWNybyhsb2FkZWRmaXJzdGZyYW1l
KSBcCisgICAgbWFjcm8obG9hZGVkZGF0YSkgXAogICAgIG1hY3JvKGxvYWRlZG1ldGFkYXRhKSBc
CiAgICAgbWFjcm8ocGF1c2UpIFwKICAgICBtYWNybyhwbGF5KSBcCisgICAgbWFjcm8ocGxheWlu
ZykgXAogICAgIG1hY3JvKHJhdGVjaGFuZ2UpIFwKKyAgICBtYWNybyhzZWVrZWQpIFwKKyAgICBt
YWNybyhzZWVraW5nKSBcCiAgICAgbWFjcm8odGltZXVwZGF0ZSkgXAogICAgIG1hY3JvKHZvbHVt
ZWNoYW5nZSkgXAogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAgICBcCiAgICAgbWFjcm8ocHJvZ3Jl
c3MpIFwKICAgICBtYWNybyhzdGFsbGVkKSBcCisgICAgbWFjcm8oc3VzcGVuZCkgXAogICAgIFwK
ICAgICBtYWNybyh3ZWJraXRBbmltYXRpb25FbmQpIFwKICAgICBtYWNybyh3ZWJraXRBbmltYXRp
b25TdGFydCkgXApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNDE2
NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NF
dmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAjaW5jbHVkZSAiUmVuZGVyUGFydE9iamVjdC5oIgpAQCAtNTgsNiArNTks
NyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTcwLDI3ICs3MiwzMyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0CiAgICAgLCBtX2xvYWRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRp
bWVyRmlyZWQpCiAgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVu
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaW1lcih0aGlz
LCAmSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX3Bs
YXliYWNrUHJvZ3Jlc3NUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9n
cmVzc1RpbWVyRmlyZWQpCisgICAgLCBtX3BsYXliYWNrUmF0ZSgxLjBmKQogICAgICwgbV9kZWZh
dWx0UGxheWJhY2tSYXRlKDEuMGYpCi0gICAgLCBtX25ldHdvcmtTdGF0ZShFTVBUWSkKLSAgICAs
IG1fcmVhZHlTdGF0ZShEQVRBX1VOQVZBSUxBQkxFKQotICAgICwgbV9iZWd1bihmYWxzZSkKLSAg
ICAsIG1fbG9hZGVkRmlyc3RGcmFtZShmYWxzZSkKLSAgICAsIG1fYXV0b3BsYXlpbmcodHJ1ZSkK
KyAgICAsIG1fbmV0d29ya1N0YXRlKE5FVFdPUktfRU1QVFkpCisgICAgLCBtX3JlYWR5U3RhdGUo
SEFWRV9OT1RISU5HKQogICAgICwgbV92b2x1bWUoMS4wZikKLSAgICAsIG1fbXV0ZWQoZmFsc2Up
Ci0gICAgLCBtX3BhdXNlZCh0cnVlKQotICAgICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9j
dXJyZW50VGltZUR1cmluZ1NlZWsoMCkKICAgICAsIG1fcHJldmlvdXNQcm9ncmVzcygwKQogICAg
ICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkK
LSAgICAsIG1fc2VudFN0YWxsZWRFdmVudChmYWxzZSkKLSAgICAsIG1fbG9hZE5lc3RpbmdMZXZl
bCgwKQotICAgICwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwoMCkKLSAgICAsIG1f
cGF1c2VkSW50ZXJuYWwoZmFsc2UpCi0gICAgLCBtX2luQWN0aXZlRG9jdW1lbnQodHJ1ZSkKKyAg
ICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lKDApCisgICAgLCBtX2xhc3RUaW1lVXBk
YXRlRXZlbnRNb3ZpZVRpbWUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSkKKyAgICAsIG1f
bG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2UpCisgICAgLCBtX2N1cnJlbnRTb3VyY2VOb2RlKDAp
CiAgICAgLCBtX3BsYXllcigwKQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMp
CiAgICAgLCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKDApCisgICAgLCBtX3Byb2Nl
c3NpbmdMb2FkKGZhbHNlKQorICAgICwgbV9kZWxheWluZ1RoZUxvYWRFdmVudChmYWxzZSkKKyAg
ICAsIG1faGF2ZUZpcmVkTG9hZGVkRGF0YShmYWxzZSkKKyAgICAsIG1faW5BY3RpdmVEb2N1bWVu
dCh0cnVlKQorICAgICwgbV9hdXRvcGxheWluZyh0cnVlKQorICAgICwgbV9tdXRlZChmYWxzZSkK
KyAgICAsIG1fcGF1c2VkKHRydWUpCisgICAgLCBtX3NlZWtpbmcoZmFsc2UpCisgICAgLCBtX3Nl
bnRTdGFsbGVkRXZlbnQoZmFsc2UpCisgICAgLCBtX3NlbnRFbmRFdmVudChmYWxzZSkKKyAgICAs
IG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAgLCBtX3NlbmRQcm9ncmVzc0V2ZW50cyh0cnVl
KQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9uZWVkV2lkZ2V0
VXBkYXRlKGZhbHNlKQpAQCAtMTE3LDkgKzEyNSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCgKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0g
YXR0ci0+bmFtZSgpOwogICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIC8v
IDMuMTQuOS4yLgotICAgICAgICAvLyBjaGFuZ2UgdG8gc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBs
b2FkKCkKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBFTVBU
WSkKKyAgICAgICAgLy8gZG9uJ3QgaGF2ZSBhIHNyYyBvciBhbnkgPHNvdXJjZT4gY2hpbGRyZW4s
IHRyaWdnZXIgbG9hZAorICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIG1fbG9hZFN0YXRlID09
IFdhaXRpbmdGb3JTb3VyY2UpCiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICB9IAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTE2NiwxMCArMTczLDggQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewotICAgIGlmIChuZXR3b3JrU3RhdGUo
KSAhPSBFTVBUWSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBwYXVzZShl
Yyk7Ci0gICAgfQorICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCisgICAg
ICAgIHBhdXNlKCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0K
IApAQCAtMjAwLDQwICsyMDUsNTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxv
YWQoKQogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojppbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnROYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVByb2dyZXNzRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgaWYgKCFtX3NlbmRQcm9n
cmVzc0V2ZW50cykKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IGRvbid0IHNjaGVk
dWxlIHRpbWV1cGRhdGUgb3IgcHJvZ3Jlc3MgZXZlbnRzIHVubGVzcyB0aGVyZSBhcmUgcmVnaXN0
ZXJlZCBsaXN0ZW5lcnMKKy8qCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucHJv
Z3Jlc3NFdmVudCAmJiAhZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50Ojp4eHh4
eHhfTElTVEVORVIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50ICYmICFkb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUo
RG9jdW1lbnQ6Onh4eHh4eF9MSVNURU5FUikpCisgICAgICAgIHJldHVybjsKKyovCisKICAgICBi
b29sIHRvdGFsS25vd24gPSBtX3BsYXllciAmJiBtX3BsYXllci0+dG90YWxCeXRlc0tub3duKCk7
CiAgICAgdW5zaWduZWQgbG9hZGVkID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+Ynl0ZXNMb2FkZWQo
KSA6IDA7CiAgICAgdW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVyLT50b3RhbEJ5
dGVzKCkgOiAwOwotICAgIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWUsIHRvdGFsS25v
d24sIGxvYWRlZCwgdG90YWwpOworCisgICAgUmVmUHRyPFByb2dyZXNzRXZlbnQ+IGV2dCA9IFBy
b2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHRvdGFsS25vd24sIGxvYWRlZCwgdG90YWwp
OworICAgIGVucXVldWVFdmVudChldnQpOworCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
IHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlzcGF0Y2hFdmVudEFzeW5jKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKQogewotICAgIG1fYXN5bmNFdmVudHNUb0Rpc3BhdGNoLmFwcGVuZChldmVudE5h
bWUpOworICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRy
dWUpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2
ZW50PiBldmVudCkKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKGV2ZW50KTsKICAgICBp
ZiAoIW1fYXN5bmNFdmVudFRpbWVyLmlzQWN0aXZlKCkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4qKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxI
VE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAKLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRp
bmdFdmVudHMpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3VudDsgKytuZHgpIAorICAgICAgICBk
aXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbbmR4XS5yZWxlYXNlKCksIGVjKTsKIH0KIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFF
bGVtZW50PiopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpbWVyPEhU
TUxNZWRpYUVsZW1lbnQ+KikKIHsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBhc3luY0V2ZW50
c1RvRGlzcGF0Y2g7Ci0gICAgbV9hc3luY0V2ZW50c1RvRGlzcGF0Y2guc3dhcChhc3luY0V2ZW50
c1RvRGlzcGF0Y2gpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gYXN5bmNFdmVudHNUb0Rpc3BhdGNo
LnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgY291bnQ7ICsrbikKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoYXN5bmNFdmVudHNUb0Rpc3BhdGNoW25dLCBmYWxzZSwg
dHJ1ZSk7CisgICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNlRWxlbWVudCkK
KyAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAgIGVsc2UKKyAgICAgICAgbG9hZElu
dGVybmFsKCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplVGltZU9mZnNldChmbG9hdCB0
aW1lKQpAQCAtMzIxLDUyICszNDUsNTUgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBs
YXlUeXBlKGNvbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9h
ZFJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbiAmJiAhcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIGVsc2UK
KyAgICAgICAgbG9hZEludGVybmFsKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZEludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
SW50ZXJuYWwoKQogewotICAgIFN0cmluZyBtZWRpYVNyYzsKLSAgICBDb250ZW50VHlwZSBjb250
ZW50VHlwZSgiIik7Ci0KLSAgICAvLyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3Vy
Y2UKLSAgICAvLyAxCi0gICAgLy8gaWYgYW4gZXZlbnQgZ2VuZXJhdGVkIGR1cmluZyBsb2FkKCkg
ZW5kcyB1cCByZS1lbnRlcmluZyBsb2FkKCksIHRlcm1pbmF0ZSBwcmV2aW91cyBpbnN0YW5jZXMK
LSAgICBtX2xvYWROZXN0aW5nTGV2ZWwrKzsKLSAgICBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3Rp
bmdMZXZlbCA9IG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICAKLSAgICBtX3Byb2dyZXNzRXZlbnRU
aW1lci5zdG9wKCk7Ci0gICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAgLy8gMSAt
IElmIHRoZSBsb2FkKCkgbWV0aG9kIGZvciB0aGlzIGVsZW1lbnQgaXMgYWxyZWFkeSBiZWluZyBp
bnZva2VkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChtX3Byb2Nlc3NpbmdMb2Fk
KQorICAgICAgICByZXR1cm47CisgICAgbV9wcm9jZXNzaW5nTG9hZCA9IHRydWU7CiAgICAgCisg
ICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAgbV9sb2FkVGltZXIuc3RvcCgpOwotICAgIAot
ICAgIC8vIDIKLSAgICBpZiAobV9iZWd1bikgewotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Cisg
ICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAgbV9oYXZlRmlyZWRMb2FkZWREYXRh
ID0gZmFsc2U7CisKKyAgICAvLyAyIC0gQWJvcnQgYW55IGFscmVhZHktcnVubmluZyBpbnN0YW5j
ZSBvZiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhpcyBlbGVtZW50Lgor
ICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOworCisgICAgLy8gMyAtIElmIHRoZXJlIGFyZSBh
bnkgdGFza3MgZnJvbSB0aGUgbWVkaWEgZWxlbWVudCdzIG1lZGlhIGVsZW1lbnQgZXZlbnQgdGFz
ayBzb3VyY2UgaW4gCisgICAgLy8gb25lIG9mIHRoZSB0YXNrIHF1ZXVlcywgdGhlbiByZW1vdmUg
dGhvc2UgdGFza3MuCisgICAgbV9wZW5kaW5nRXZlbnRzLmNsZWFyKCk7CisgICAgCisgICAgLy8g
NCAtIElmIHRoZSBtZWRpYSBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGlzIHNldCB0byBORVRXT1JL
X0xPQURJTkcgb3IgTkVUV09SS19JRExFLCBzZXQgdGhlIAorICAgIC8vIGVycm9yIGF0dHJpYnV0
ZSB0byBhIG5ldyBNZWRpYUVycm9yIG9iamVjdCB3aG9zZSBjb2RlIGF0dHJpYnV0ZSBpcyBzZXQg
dG8gTUVESUFfRVJSX0FCT1JURUQsIAorICAgIC8vIGFuZCBmaXJlIGEgcHJvZ3Jlc3MgZXZlbnQg
Y2FsbGVkIGFib3J0IGF0IHRoZSBtZWRpYSBlbGVtZW50LgorICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA9PSBORVRXT1JLX0xPQURJTkcgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19JRExFKSB7
CiAgICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFf
RVJSX0FCT1JURUQpOwotICAgICAgICBpZiAobV9zZW5kUHJvZ3Jlc3NFdmVudHMpCi0gICAgICAg
ICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50
KTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIAorICAgICAgICAv
LyBmaXJlIHN5bmNocm9ub3VzICdhYm9ydCcKKyAgICAgICAgYm9vbCB0b3RhbEtub3duID0gbV9w
bGF5ZXIgJiYgbV9wbGF5ZXItPnRvdGFsQnl0ZXNLbm93bigpOworICAgICAgICB1bnNpZ25lZCBs
b2FkZWQgPSBtX3BsYXllciA/IG1fcGxheWVyLT5ieXRlc0xvYWRlZCgpIDogMDsKKyAgICAgICAg
dW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVyLT50b3RhbEJ5dGVzKCkgOiAwOwor
ICAgICAgICBkaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRv
dGFsS25vd24sIGxvYWRlZCwgdG90YWwpOwogICAgIH0KICAgICAKLSAgICAvLyAzCisgICAgLy8g
NSAKICAgICBtX2Vycm9yID0gMDsKLSAgICBtX2xvYWRlZEZpcnN0RnJhbWUgPSBmYWxzZTsKICAg
ICBtX2F1dG9wbGF5aW5nID0gdHJ1ZTsKIAotICAgIC8vIDQKLSAgICBzZXRQbGF5YmFja1JhdGUo
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpLCBlYyk7CisgICAgLy8gNgorICAgIHNldFBsYXliYWNrUmF0
ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgIAotICAgIC8vIDUKLSAgICBpZiAobmV0d29y
a1N0YXRlKCkgIT0gRU1QVFkpIHsKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBFTVBUWTsKLSAg
ICAgICAgbV9yZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJMRTsKKyAgICAvLyA3CisgICAgaWYg
KG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkpIHsKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0VNUFRZOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7
CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3BsYXllcikgewpAQCAtMzc0LDMxICs0MDEsNzggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoRXhjZQogICAgICAgICAgICAgbV9wbGF5ZXItPnNlZWso
MCk7CiAgICAgICAgIH0KICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmVtcHRpZWRFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAobV9sb2FkTmVzdGluZ0xl
dmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBnb3Rv
IGVuZDsKICAgICB9CiAgICAgCi0gICAgLy8gNgotICAgIG1lZGlhU3JjID0gc2VsZWN0TWVkaWFV
UkwoY29udGVudFR5cGUpOworICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKKyAgICBtX3Byb2Nl
c3NpbmdMb2FkID0gZmFsc2U7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVk
aWFSZXNvdXJjZSgpCit7CisgICAgLy8gMSAtIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBuZWl0
aGVyIGEgc3JjIGF0dHJpYnV0ZSBub3IgYW55IHNvdXJjZSBlbGVtZW50IGNoaWxkcmVuLCBydW4g
dGhlc2Ugc3Vic3RlcHMKKyAgICBTdHJpbmcgbWVkaWFTcmMgPSBnZXRBdHRyaWJ1dGUoc3JjQXR0
cik7CisgICAgaWYgKCFtZWRpYVNyYyAmJiAhaGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkpIHsK
KyAgICAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNlOworCisgICAgICAgIC8vIDEg
LSAgU2V0IHRoZSBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UKKyAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKyAgICAgICAgCisgICAgICAgIC8vIDIg
LSBXaGlsZSB0aGUgbWVkaWEgZWxlbWVudCBoYXMgbmVpdGhlciBhIHNyYyBhdHRyaWJ1dGUgbm9y
IGFueSBzb3VyY2UgZWxlbWVudCBjaGlsZHJlbiwgCisgICAgICAgIC8vIHdhaXQuIChUaGlzIHN0
ZXBzIG1pZ2h0IHdhaXQgZm9yZXZlci4pCisKKyAgICAgICAgbV9kZWxheWluZ1RoZUxvYWRFdmVu
dCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMgorICAgIG1fZGVs
YXlpbmdUaGVMb2FkRXZlbnQgPSB0cnVlOworCisgICAgLy8gMworICAgIG1fbmV0d29ya1N0YXRl
ID0gTkVUV09SS19MT0FESU5HOworCisgICAgLy8gNAorICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVu
dChldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQpOworCisgICAgLy8gNSAtIElmIHRoZSBtZWRp
YSBlbGVtZW50IGhhcyBhIHNyYyBhdHRyaWJ1dGUsIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzCisg
ICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoIiIpOworICAgIGlmICghbWVkaWFTcmMuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobWVkaWFT
cmMpLnN0cmluZygpOworICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3JjQXR0cjsK
KyAgICAgICAgbG9hZFJlc291cmNlKG1lZGlhU3JjLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIHRoZSBzb3VyY2UgZWxlbWVudHMgd2ls
bCBiZSB1c2VkCisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7CisgICAgbG9hZE5leHRTb3Vy
Y2VDaGlsZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hp
bGQoKQoreworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKCIiKTsKKyAgICBTdHJpbmcgbWVk
aWFTcmM7CisKKyAgICBtZWRpYVNyYyA9IG5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUpOwog
ICAgIGlmIChtZWRpYVNyYy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKLSAgICAgICAgZ290byBlbmQ7CisgICAgICAgIG5vbmVTdXBwb3J0ZWQoKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyA3Ci0gICAgbV9uZXR3b3JrU3RhdGUgPSBM
T0FESU5HOwotICAgIAotICAgIC8vIDgKLSAgICBtX2N1cnJlbnRTcmMgPSBtZWRpYVNyYzsKIAot
ICAgIC8vIDkKLSAgICBtX2JlZ3VuID0gdHJ1ZTsgICAgICAgIAotICAgIGlmIChtX3NlbmRQcm9n
cmVzc0V2ZW50cykKLSAgICAgICAgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5s
b2Fkc3RhcnRFdmVudCwgZmFsc2UsIDAsIDApOwotICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwg
PCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCkKLSAgICAgICAgZ290byBlbmQ7Ci0g
ICAgCi0gICAgLy8gMTAsIDExLCAxMiwgMTMKKyAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9t
U291cmNlRWxlbWVudDsKKyAgICBsb2FkUmVzb3VyY2UobWVkaWFTcmMsIGNvbnRlbnRUeXBlKTsK
K30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoU3RyaW5nIHVybCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIC8vIFRoZSByZXNvdXJjZSBmZXRjaCBhbGdv
cml0aG0gCisKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElORzsKKworICAgIG1f
Y3VycmVudFNyYyA9IHVybDsKKworICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykgCisgICAg
ICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CisKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAgICAgbV9wbGF5ZXIuY2xlYXIoKTsKICAgICBtX3BsYXllci5zZXQobmV3
IE1lZGlhUGxheWVyKHRoaXMpKTsKQEAgLTQwOCwzMyArNDgyLDc3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZEludGVybmFsKEV4Y2UKICNlbmRpZgogCiAgICAgdXBkYXRlVm9sdW1lKCk7
CisKICAgICBtX3BsYXllci0+bG9hZChtX2N1cnJlbnRTcmMsIGNvbnRlbnRUeXBlKTsKLSAgICBp
ZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwp
Ci0gICAgICAgIGdvdG8gZW5kOwogICAgIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBy
ZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIAotICAgIC8vIDE0Ci0gICAgaWYg
KG1fc2VuZFByb2dyZXNzRXZlbnRzKSB7Ci0gICAgICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUg
PSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIG1fcHJldmlvdXNQcm9ncmVzcyA9IDA7Ci0g
ICAgICAgIGlmIChtX2JlZ3VuKQotICAgICAgICAgICAgLy8gMzUwbXMgaXMgbm90IG1hZ2ljLCBp
dCBpcyBpbiB0aGUgc3BlYyEKLSAgICAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0YXJ0
UmVwZWF0aW5nKDAuMzUwKTsKLSAgICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3Rh
cnRQcm9ncmVzc0V2ZW50VGltZXIoKQoreworICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSBX
VEY6OmN1cnJlbnRUaW1lKCk7CisgICAgbV9wcmV2aW91c1Byb2dyZXNzID0gMDsKKyAgICAvLyAz
NTBtcyBpcyBub3QgbWFnaWMsIGl0IGlzIGluIHRoZSBzcGVjIQorICAgIG1fcHJvZ3Jlc3NFdmVu
dFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMzUwKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpub25lU3VwcG9ydGVkKCkKK3sKKyAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICBtX2xv
YWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7
CisKKyAgICAvLyAzIC0gUmVhY2hpbmcgdGhpcyBzdGVwIGluZGljYXRlcyB0aGF0IGVpdGhlciB0
aGUgVVJMIGZhaWxlZCB0byByZXNvbHZlLCBvciB0aGUgbWVkaWEgCisgICAgLy8gcmVzb3VyY2Ug
ZmFpbGVkIHRvIGxvYWQuIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJy
b3Igb2JqZWN0IHdob3NlIAorICAgIC8vIGNvZGUgYXR0cmlidXRlIGlzIHNldCB0byBNRURJQV9F
UlJfTk9ORV9TVVBQT1JURUQuCisgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRp
YUVycm9yOjpNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworCisgICAgLy8gNC0gU2V0IHRoZSBl
bGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19OT19TT1VSQ0Ug
dmFsdWUuCisgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKworICAgIC8v
IDUgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxlZCBlcnJvciBh
dCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQpOyAKKworICAgIC8vIDYgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWlu
Zy10aGUtbG9hZC1ldmVudCBmbGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBs
b2FkIGV2ZW50LgorICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKIAotZW5kOgot
ICAgIEFTU0VSVChtX2xvYWROZXN0aW5nTGV2ZWwpOwotICAgIG1fbG9hZE5lc3RpbmdMZXZlbC0t
OworICAgIC8vIEFib3J0IHRoZXNlIHN0ZXBzLiBVbnRpbCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBp
bnZva2VkLCB0aGUgZWxlbWVudCB3b24ndCBhdHRlbXB0IHRvIGxvYWQgYW5vdGhlciByZXNvdXJj
ZS4KKyAgICAKKyAgICBpZiAoaXNWaWRlbygpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlk
ZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdlKCk7CisgICAgaWYgKHJlbmRlcmVy
KCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVFcnJvcihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+
IGVycikKK3sKKyAgICAvLyAxIC0gVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0
Y2hpbmcgcHJvY2Vzcy4KKyAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICBtX2xvYWRTdGF0
ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisKKyAgICAvLyAyIC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1
dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hvc2UgY29kZSBhdHRyaWJ1dGUgaXMgCisg
ICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9ERUNPREUuCisgICAgbV9l
cnJvciA9IGVycjsKKworICAgIC8vIDMgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNz
IGV2ZW50IGNhbGxlZCBlcnJvciBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBzY2hlZHVsZVBy
b2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKKworICAgIC8vIDMgLSBTZXQg
dGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0VNUFRZ
IHZhbHVlIGFuZCBxdWV1ZSBhIAorICAgIC8vIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBj
YWxsZWQgZW1wdGllZCBhdCB0aGUgZWxlbWVudC4KKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdP
UktfRU1QVFk7CisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsK
KworICAgIC8vIDQgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBm
bGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBsb2FkIGV2ZW50LgorICAgIG1f
ZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKworICAgIC8vIDUgLSBBYm9ydCB0aGUgb3Zl
cmFsbCByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgorICAgIG1fY3VycmVudFNvdXJjZU5v
ZGUgPSAwOworCit9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZXR3b3Jr
U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBpZiAoIW1fYmVndW4pCi0gICAgICAg
IHJldHVybjsKLSAgICAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7
CiAgICAgc2V0TmV0d29ya1N0YXRlKG1fcGxheWVyLT5uZXR3b3JrU3RhdGUoKSk7CiAgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKQEAgLTQ0NCw4NCArNTYyLDU4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE0KIHsKICAgICBpZiAoc3RhdGUg
PT0gTWVkaWFQbGF5ZXI6OkVtcHR5KSB7CiAgICAgICAgIC8vIGp1c3QgdXBkYXRlIHRoZSBjYWNo
ZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyAKLSAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBFTVBUWTsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZ
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsID0gbV9sb2FkTmVzdGluZ0xldmVsOwotICAgIAotICAgIC8vIDMuMTQuOS40
LiBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIC8vIDE0Ci0gICAgaWYgKHN0YXRlID09
IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkKSB7Ci0gICAgICAgIC8vZGVsZXRlIG1fcGxheWVyOwot
ICAgICAgICAvL21fcGxheWVyID0gMDsKLSAgICAgICAgLy8gRklYTUUgYmV0dGVyIGVycm9yIGhh
bmRsaW5nCi0gICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6
TUVESUFfRVJSX05FVFdPUkspOwotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIG1f
cHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKLSAgICAgICAgCi0gICAgICAgIGluaXRBbmREaXNw
YXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKLSAgICAgICAgaWYg
KG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQor
CisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvciB8fCBzdGF0ZSA9PSBN
ZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yIHx8IHN0YXRlID09IE1lZGlhUGxheWVyOjpEZWNvZGVF
cnJvcikgeworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAgICAgICAvLyBJZiB3
ZSBmYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIGxvYWQgYSA8c291cmNlPiBlbGVtZW50LCB0aGUgbW92
aWUgd2FzIG5ldmVyIHBhcnNlZCwgYW5kIHRoZXJlIGFyZSBtb3JlCisgICAgICAgIC8vIDxzb3Vy
Y2U+IGNoaWxkcmVuLCBzY2hlZHVsZSB0aGUgbmV4dCBvbmUgd2l0aG91dCByZXBvcnRpbmcgYW4g
ZXJyb3IKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhBVkVfTUVUQURBVEEgJiYgbV9sb2Fk
U3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3VyY2VFbGVtZW50ICYmIGhhdmVQb3RlbnRpYWxTb3VyY2VD
aGlsZCgpKSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gRU1QVFk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcikKKyAgICAg
ICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1F
RElBX0VSUl9ORVRXT1JLKSk7CisgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IE1lZGlhUGxheWVy
OjpEZWNvZGVFcnJvcikKKyAgICAgICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6
Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ERUNPREUpKTsKKyAgICAgICAgZWxzZSBpZiAo
c3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKQorICAgICAgICAgICAgbm9uZVN1cHBv
cnRlZCgpOwogCiAgICAgICAgIGlmIChpc1ZpZGVvKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdlKCk7CiAKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChzdGF0ZSA+PSBN
ZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0ZSA8IExPQURJTkcpCi0gICAgICAg
IG1fbmV0d29ya1N0YXRlID0gTE9BRElORzsKLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQ
bGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmIG1fbmV0d29ya1N0YXRlIDwgTE9BREVEX01FVEFEQVRB
KSB7Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTE9BREVEX01FVEFEQVRBOwotICAgICAgICAK
LSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdl
RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1f
dGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmxvYWRlZG1l
dGFkYXRhRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZl
bCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0
RnJhbWUgJiYgbV9uZXR3b3JrU3RhdGUgPCBMT0FERURfRklSU1RfRlJBTUUpIHsKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBMT0FERURfRklSU1RfRlJBTUU7Ci0gICAgICAgIAotICAgICAgICBz
ZXRSZWFkeVN0YXRlKENBTl9TSE9XX0NVUlJFTlRfRlJBTUUpOwotICAgICAgICAKLSAgICAgICAg
aWYgKGlzVmlkZW8oKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQq
Pih0aGlzKS0+dXBkYXRlUG9zdGVySW1hZ2UoKTsKIAotICAgICAgICBpZiAobV9sb2FkTmVzdGlu
Z0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX2xvYWRlZEZpcnN0RnJhbWUgPSB0cnVlOwotI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5n
ZWQoKTsKLSAgICAgICAgfQotI2VuZGlmICAgICAgICAKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQ
bGF5ZXI6OklkbGUgJiYgbV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0lETEUpIHsKKyAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG1fcGxheWVyLT5yZWFkeVN0YXRlKCkpIDwg
SEFWRV9FTk9VR0hfREFUQSk7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19JRExF
OworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICAgICAgc2NoZWR1bGVQcm9ncmVz
c0V2ZW50KGV2ZW50TmFtZXMoKS5zdXNwZW5kRXZlbnQpOworICAgIH0KKworICAgIGlmIChzdGF0
ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0ZSA8IE5FVFdPUktfTE9B
RElORykgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8UmVhZHlTdGF0ZT4obV9wbGF5ZXIt
PnJlYWR5U3RhdGUoKSkgPCBIQVZFX0VOT1VHSF9EQVRBKTsKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0xPQURJTkc7CisgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7
CisgICAgfQorCisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQgJiYgbV9uZXR3
b3JrU3RhdGUgPCBORVRXT1JLX0xPQURFRCkgeworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5F
VFdPUktfTE9BREVEOworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAgICAgICAv
LyBDaGVjayB0byBzZWUgaWYgcmVhZHlTdGF0ZSBjaGFuZ2VzIG5lZWQgdG8gYmUgZGVhbHQgd2l0
aCBiZWZvcmUgc2VuZGluZyB0aGUgCisgICAgICAgIC8vICdsb2FkJyBldmVudCBzbyB3ZSByZXBv
cnQgJ2NhbnBsYXl0aHJvdWdoJyBmaXJzdC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBhCisg
ICAgICAgIC8vICBtZWRpYSBlbmdpbmUgcmVwb3J0cyByZWFkeVN0YXRlIGFuZCBuZXR3b3JrU3Rh
dGUgY2hhbmdlcyBzZXBhcmF0ZWx5CisgICAgICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIGN1
cnJlbnRTdGF0ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxSZWFkeVN0YXRlPihjdXJyZW50U3RhdGUpICE9IG1fcmVhZHlTdGF0ZSkKKyAgICAgICAg
ICAgIHNldFJlYWR5U3RhdGUoY3VycmVudFN0YXRlKTsKIAotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkubG9hZGVkZmlyc3RmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05l
c3RpbmdMZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGRpc3Bh
dGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5jYW5zaG93Y3VycmVudGZyYW1lRXZlbnQsIGZh
bHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRl
TG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICAvLyAxNQotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGVkICYmIG1fbmV0
d29ya1N0YXRlIDwgTE9BREVEKSB7Ci0gICAgICAgIG1fYmVndW4gPSBmYWxzZTsKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBMT0FERUQ7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0
b3AoKTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCku
bG9hZEV2ZW50KTsgCisgICAgICAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygp
LmxvYWRFdmVudCk7IAogICAgIH0KIH0KIApAQCAtNTI5LDY2ICs2MjEsMTE1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZWFkeVMKIHsKICAgICBiZWdpblByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7Ci0gICAgc2V0UmVhZHlTdGF0ZSgoUmVhZHlTdGF0
ZSlzdGF0ZSk7CisgICAgc2V0UmVhZHlTdGF0ZShtX3BsYXllci0+cmVhZHlTdGF0ZSgpKTsKIAog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQog
ewotICAgIC8vIDMuMTQuOS42LiBUaGUgcmVhZHkgc3RhdGVzCi0gICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBzdGF0ZSkKKyAgICBSZWFkeVN0YXRlIG9sZFN0YXRlID0gbV9yZWFkeVN0YXRlOworICAg
IG1fcmVhZHlTdGF0ZSA9IHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KHN0YXRlKTsKKworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gb2xkU3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBi
b29sIHdhc0FjdGl2ZWx5UGxheWluZyA9IGFjdGl2ZWx5UGxheWluZygpOwotICAgIG1fcmVhZHlT
dGF0ZSA9IHN0YXRlOwotICAgIAotICAgIGlmIChzdGF0ZSA+PSBDQU5fUExBWSkKKyAgICBpZiAo
bV9yZWFkeVN0YXRlID49IEhBVkVfQ1VSUkVOVF9EQVRBKQogICAgICAgICBtX3NlZWtpbmcgPSBm
YWxzZTsKICAgICAKLSAgICBpZiAobmV0d29ya1N0YXRlKCkgPT0gRU1QVFkpCisgICAgaWYgKG1f
bmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBpZiAoc3RhdGUgPT0gREFUQV9VTkFWQUlMQUJMRSkgewotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkuZGF0YXVuYXZhaWxhYmxlRXZlbnQsIGZhbHNlLCB0cnVlKTsK
LSAgICAgICAgaWYgKHdhc0FjdGl2ZWx5UGxheWluZykgewotICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwot
ICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLndhaXRpbmdFdmVu
dCwgZmFsc2UsIHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBDQU5f
U0hPV19DVVJSRU5UX0ZSQU1FKSB7Ci0gICAgICAgIGlmIChtX2xvYWRlZEZpcnN0RnJhbWUpCi0g
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuY2Fuc2hvd2N1cnJl
bnRmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIGlmICh3YXNBY3RpdmVseVBsYXlp
bmcpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1l
dXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JU
eXBlKGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgIGlmICht
X3NlZWtpbmcgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9DVVJSRU5UX0RBVEEpIHsKKyAgICAgICAg
Ly8gNC44LjEwLjEwLCBzdGVwIDkKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
c2Vla2luZ0V2ZW50KTsKKyAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CisgICAgfQorCisgICAg
Ym9vbCB3YXNQb3RlbnRpYWxseVBsYXlpbmcgPSBwb3RlbnRpYWxseVBsYXlpbmcoKTsKKyAgICBp
ZiAod2FzUG90ZW50aWFsbHlQbGF5aW5nICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RB
VEEpIHsKKyAgICAgICAgLy8gNC44LjEwLjkKKyAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZl
bnQoZmFsc2UpOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZl
bnQpOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSAmJiBv
bGRTdGF0ZSA8IEhBVkVfTUVUQURBVEEpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQpOworCisjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQorICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+aXNJbWFn
ZSgpKSB7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyo+KHJlbmRlcmVyKCkp
LT52aWRlb1NpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHN0YXRlID09
IENBTl9QTEFZKSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5j
YW5wbGF5RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlID09IENBTl9Q
TEFZX1RIUk9VR0gpIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmNhbnBsYXl0aHJvdWdoRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyNlbmRpZiAgICAgICAgCisgICAg
ICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgbV9wbGF5ZXItPnNl
ZWsoMCk7CisgICAgfQorCisgICAgLy8gNC44LjEwLjcgc2F5cyBsb2FkZWRkYXRhIGlzIHNlbnQg
b25seSB3aGVuIHRoZSBuZXcgc3RhdGUgKmlzKiBIQVZFX0NVUlJFTlRfREFUQTogIklmIHRoZQor
ICAgIC8vIHByZXZpb3VzIHJlYWR5IHN0YXRlIHdhcyBIQVZFX01FVEFEQVRBIGFuZCB0aGUgbmV3
IHJlYWR5IHN0YXRlIGlzIEhBVkVfQ1VSUkVOVF9EQVRBIiwgCisgICAgLy8gYnV0IHRoZSBldmVu
dCB0YWJsZSBhdCB0aGUgZW5kIG9mIHRoZSBzcGVjIHNheXMgaXQgaXMgc2VudCB3aGVuOiAicmVh
ZHlTdGF0ZSBuZXdseSAKKyAgICAvLyBpbmNyZWFzZWQgdG8gSEFWRV9DVVJSRU5UX0RBVEEgIG9y
IGdyZWF0ZXIgZm9yIHRoZSBmaXJzdCB0aW1lIgorICAgIC8vIFdlIGdvIHdpdGggdGhlIGxhdGVy
IGJlY2F1c2UgaXQgc2VlbXMgdXNlZnVsIHRvIGNvdW50IG9uIGdldHRpbmcgdGhpcyBldmVudAor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPCBI
QVZFX0NVUlJFTlRfREFUQSAmJiAhbV9oYXZlRmlyZWRMb2FkZWREYXRhKSB7CisgICAgICAgIG1f
aGF2ZUZpcmVkTG9hZGVkRGF0YSA9IHRydWU7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlZGRhdGFFdmVudCk7CisgICAgfQorCisgICAgYm9vbCBpc1BvdGVudGlhbGx5
UGxheWluZyA9IHBvdGVudGlhbGx5UGxheWluZygpOworICAgIGlmIChtX3JlYWR5U3RhdGUgPD0g
SEFWRV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgeworICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gSEFWRV9GVVRVUkVfREFUQSAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkg
eworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOworICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQpOworCisgICAgICAgIGlmIChpc1ZpZGVvKCkpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBv
c3RlckltYWdlKCk7CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VH
SF9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9FTk9VR0hfREFUQSkgeworICAgICAgICBpZiAob2xk
U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOworCisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQpOworCisgICAgICAgIGlmIChpc1BvdGVudGlhbGx5
UGxheWluZyAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisKICAgICAgICAgaWYgKG1f
YXV0b3BsYXlpbmcgJiYgbV9wYXVzZWQgJiYgYXV0b3BsYXkoKSkgewogICAgICAgICAgICAgbV9w
YXVzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5wbGF5aW5nRXZlbnQpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVmlkZW8o
KSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKS0+dXBk
YXRlUG9zdGVySW1hZ2UoKTsKICAgICB9CisKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtTdGF0ZSA+PSBORVRXT1JLX0xP
QURFRCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdW5zaWduZWQgcHJvZ3Jlc3MgPSBtX3BsYXll
ci0+Ynl0ZXNMb2FkZWQoKTsKICAgICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsK
ICAgICBkb3VibGUgdGltZWRlbHRhID0gdGltZSAtIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7Ci0g
ICAgCisKICAgICBpZiAocHJvZ3Jlc3MgPT0gbV9wcmV2aW91c1Byb2dyZXNzKSB7CiAgICAgICAg
IGlmICh0aW1lZGVsdGEgPiAzLjAgJiYgIW1fc2VudFN0YWxsZWRFdmVudCkgewotICAgICAgICAg
ICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3RhbGxlZEV2ZW50
KTsKKyAgICAgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3RhbGxl
ZEV2ZW50KTsKICAgICAgICAgICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2
ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50
KGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KTsKICAgICAgICAgbV9wcmV2aW91c1Byb2dyZXNz
ID0gcHJvZ3Jlc3M7CiAgICAgICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSB0aW1lOwogICAg
ICAgICBtX3NlbnRTdGFsbGVkRXZlbnQgPSBmYWxzZTsKQEAgLTU5NywzNyArNzM4LDQ1IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWUKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIDMu
MTQuOS44LiBTZWVraW5nCisgICAgLy8gNC44LjEwLjEwLiBTZWVraW5nCiAgICAgLy8gMQotICAg
IGlmIChuZXR3b3JrU3RhdGUoKSA8IExPQURFRF9NRVRBREFUQSkgeworICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gSEFWRV9OT1RISU5HIHx8ICFtX3BsYXllcikgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gMgogICAgIHRp
bWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisKKyAgICAvLyAzCiAgICAgdGltZSA9IG1heCh0
aW1lLCAwLjBmKTsKLSAgICAKLSAgICAvLyA2CisKKyAgICAvLyA0CiAgICAgUmVmUHRyPFRpbWVS
YW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gc2Vla2FibGUoKTsKICAgICBpZiAoIXNlZWthYmxlUmFu
Z2VzLT5jb250YWluKHRpbWUpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgLy8gNworICAgIC8vIGF2b2lkIGdlbmVyYXRp
bmcgZXZlbnRzIHdoZW4gdGhlIHRpbWUgd29uJ3QgYWN0dWFsbHkgY2hhbmdlCisgICAgZmxvYXQg
bm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBpZiAodGltZSA9PSBub3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIDUKICAgICBtX2N1cnJlbnRUaW1lRHVyaW5nU2VlayA9IHRpbWU7CiAKLSAg
ICAvLyA4CisgICAgLy8gNiAtIHNldCB0aGUgc2Vla2luZyBmbGFnLCBpdCB3aWxsIGJlIGNsZWFy
ZWQgd2hlbiB0aGUgZW5naW5lIHRlbGxzIGlzIHRoZSB0aW1lIGhhcyBhY3R1YWxseSBjaGFuZ2Vk
CiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICAKLSAgICAvLyA5Ci0gICAgZGlzcGF0Y2hFdmVu
dEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAg
IAorCisgICAgLy8gNworICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKKworICAg
IC8vIDggLSB0aGlzIGlzIGNvdmVyZWQsIGlmIG5lY2Vzc2FyeSwgd2hlbiB0aGUgZW5naW5lIHNp
Z25hbHMgYSByZWFkeXN0YXRlIGNoYW5nZQorCiAgICAgLy8gMTAKLSAgICAvLyBBcyBzb29uIGFz
IHRoZSB1c2VyIGFnZW50IGhhcyBlc3RhYmxpc2hlZCB3aGV0aGVyIG9yIG5vdCB0aGUgbWVkaWEg
ZGF0YSBmb3IgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBhdmFpbGFibGUsIAotICAgIC8v
IGFuZCwgaWYgaXQgaXMsIGRlY29kZWQgZW5vdWdoIGRhdGEgdG8gcGxheSBiYWNrIHRoYXQgcG9z
aXRpb24sIHRoZSBzZWVraW5nIERPTSBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuCi0g
ICAgaWYgKG1fcGxheWVyKQotICAgICAgICBtX3BsYXllci0+c2Vlayh0aW1lKTsKKyAgICBtX3Bs
YXllci0+c2Vlayh0aW1lKTsKKyAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogfQogCiBIVE1M
TWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlIEhUTUxNZWRpYUVsZW1lbnQ6OnJlYWR5U3RhdGUoKSBj
b25zdApAQCAtNjU3LDcgKzgwNiwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJl
bnRUaW1lKGZsCiAKIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+ZHVyYXRpb24oKSA6IDA7CisgICAgaWYg
KG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKQorICAgICAgICByZXR1cm4gbV9wbGF5ZXIt
PmR1cmF0aW9uKCk7CisKKyAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWQoKSBjb25zdApAQCAtNjcw
LDE1ICs4MjIsMTEgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrUgog
ICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCBy
YXRlKQogewotICAgIGlmIChyYXRlID09IDAuMGYpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAobV9kZWZhdWx0UGxheWJh
Y2tSYXRlICE9IHJhdGUpIHsKICAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0gcmF0ZTsK
LSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQp
OworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwog
ICAgIH0KIH0KIApAQCAtNjg3LDE2ICs4MzUsMTQgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6
cGxheWJhY2tSYXRlKCkgYwogICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5yYXRlKCkg
OiAwOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCBy
YXRlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJh
Y2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgaWYgKHJhdGUgPT0gMC4wZikgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGxheWJh
Y2tSYXRlICE9IHJhdGUpIHsKKyAgICAgICAgbV9wbGF5YmFja1JhdGUgPSByYXRlOworICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogICAgIH0KLSAg
ICBpZiAobV9wbGF5ZXIgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRlKSB7CisgICAgaWYgKG1f
cGxheWVyICYmIHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0
ZSkKICAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUocmF0ZSk7Ci0gICAgICAgIGRpc3BhdGNoRXZl
bnRBc3luYyhldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKLSAgICB9CiB9CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6ZW5kZWQoKSBjb25zdApAQCAtNzE0LDcwICs4NjAsNjQgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRBdXRvcGxheShib29sIAogICAgIHNldEJvb2xlYW5BdHRy
aWJ1dGUoYXV0b3BsYXlBdHRyLCBiKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5
KEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCkKIHsKLSAg
ICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlUmVz
dHJpY3Rpb24gJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0
dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHBsYXlJbnRlcm5hbChlYyk7CisgICAgcGxh
eUludGVybmFsKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQog
ewotICAgIC8vIDMuMTQuOS43LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIGlmICgh
bV9wbGF5ZXIgfHwgbmV0d29ya1N0YXRlKCkgPT0gRU1QVFkpIHsKLSAgICAgICAgZWMgPSAwOwot
ICAgICAgICBsb2FkKGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKKyAgICAvLyA0LjguMTAuOS4gUGxheWlu
ZyB0aGUgbWVkaWEgcmVzb3VyY2UKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRl
ID09IE5FVFdPUktfRU1QVFkpCisgICAgICAgIHNjaGVkdWxlTG9hZCgpOworCiAgICAgaWYgKGVu
ZGVkUGxheWJhY2soKSkgeworICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAg
c2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXli
YWNrUmF0ZSgpLCB1bnVzZWQpOworICAgIAorICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxh
eWJhY2tSYXRlKCkpOwogICAgIAogICAgIGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3BhdXNl
ZCA9IGZhbHNlOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnROYW1lcygpLnBsYXlF
dmVudCk7Ci0gICAgfQorICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZl
bnQpOwogCisgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOworICAg
ICAgICBlbHNlIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisgICAgfQogICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWly
ZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbiAm
JiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAg
ICBwYXVzZUludGVybmFsKGVjKTsKKyAgICBwYXVzZUludGVybmFsKCk7CiB9CiAKIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIHsKLSAgICAvLyAzLjE0LjkuNy4gUGxh
eWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICBpZiAoIW1fcGxheWVyIHx8IG5ldHdvcmtTdGF0
ZSgpID09IEVNUFRZKSB7Ci0gICAgICAgIGVjID0gMDsKLSAgICAgICAgbG9hZChlYyk7Ci0gICAg
ICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gNC44LjEwLjku
IFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCisgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdv
cmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQorICAgICAgICBzY2hlZHVsZUxvYWQoKTsKIAorICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKKyAgICAKICAgICBpZiAoIW1fcGF1c2VkKSB7CiAgICAg
ICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFt
ZXMoKS50aW1ldXBkYXRlRXZlbnQpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnRO
YW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxz
ZSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOwogICAg
IH0KIAotICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKLSAgICAKICAgICB1cGRhdGVQbGF5U3Rh
dGUoKTsKIH0KIApAQCAtODIyLDcgKzk2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
Vm9sdW1lKGZsb2F0IHYKICAgICBpZiAobV92b2x1bWUgIT0gdm9sKSB7CiAgICAgICAgIG1fdm9s
dW1lID0gdm9sOwogICAgICAgICB1cGRhdGVWb2x1bWUoKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVu
dEFzeW5jKGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKICAgICB9CiB9CiAKQEAgLTgz
NiwxOCArOTc2LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQK
ICAgICBpZiAobV9tdXRlZCAhPSBtdXRlZCkgewogICAgICAgICBtX211dGVkID0gbXV0ZWQ7CiAg
ICAgICAgIHVwZGF0ZVZvbHVtZSgpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnRO
YW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOwogICAgIH0KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVQbGF5U3RhdGUoRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiB7CiAgICAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIHRo
ZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNrIHJlc3RyaWN0
aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhl
IGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgpKQotICAgICAgICBw
bGF5SW50ZXJuYWwoZWMpOworICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAgICBlbHNlIAotICAg
ICAgICBwYXVzZUludGVybmFsKGVjKTsKKyAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKQEAgLTg1Nyw4ICs5OTcsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKICAgICAgICAgICAgIC8v
IEJlY2F1c2UgYSBtZWRpYSBlbGVtZW50IHN0YXlzIGluIG5vbi1wYXVzZWQgc3RhdGUgd2hlbiBp
dCByZWFjaGVzIGVuZCwgcGxheWJhY2sgcmVzdW1lcyAKICAgICAgICAgICAgIC8vIHdoZW4gdGhl
IHNsaWRlciBpcyBkcmFnZ2VkIGZyb20gdGhlIGVuZCB0byBhbm90aGVyIHBvc2l0aW9uIHVubGVz
cyB3ZSBwYXVzZSBmaXJzdC4gRG8gCiAgICAgICAgICAgICAvLyBhICJoYXJkIHBhdXNlIiBzbyBh
biBldmVudCBpcyBnZW5lcmF0ZWQsIHNpbmNlIHdlIHdhbnQgdG8gc3RheSBwYXVzZWQgYWZ0ZXIg
c2NydWJiaW5nIGZpbmlzaGVzLgotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgICAgIHBhdXNlKGVjKTsKKyAgICAgICAgICAgIHBhdXNlKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBidXQgd2Ugc3RpbGwgd2FudCB0byBwYXVz
ZSBwbGF5YmFjayBzbyB0aGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgdHJ5IHRvCiAgICAgICAgICAg
ICAvLyBjb250aW51ZSBwbGF5aW5nIGR1cmluZyBzY3J1YmJpbmcuIFBhdXNlIHdpdGhvdXQgZ2Vu
ZXJhdGluZyBhbiBldmVudCBhcyB3ZSB3aWxsIApAQCAtODc0LDQyICsxMDEzLDEwNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuZFNjcnViYmluZygpCiAgICAgICAgIHNldFBhdXNlZEludGVy
bmFsKGZhbHNlKTsKIH0KIAorLy8gVGhlIHNwZWMgc2F5cyB0byBmaXJlIHBlcmlvZGljIHRpbWV1
cGRhdGUgZXZlbnRzICh0aG9zZSBzZW50IHdoaWxlIHBsYXlpbmcpIGV2ZXJ5CisvLyAiMTUgdG8g
MjUwbXMiLCB3ZSBjaG9vc2UgdGhlIHNsb3dlc3QgZnJlcXVlbmN5CitzdGF0aWMgY29uc3QgZG91
YmxlIG1heFRpbWV1cGRhdGVFdmVudEZyZXF1ZW5jeSA9IDAuMjU7CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKQoreworICAgIGlmIChtX3BsYXli
YWNrUHJvZ3Jlc3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3By
ZXZpb3VzUHJvZ3Jlc3NUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIG1fcHJldmlvdXNQ
cm9ncmVzcyA9IDA7CisgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3RhcnRSZXBlYXRpbmco
bWF4VGltZXVwZGF0ZUV2ZW50RnJlcXVlbmN5KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCit7
CisgICAgQVNTRVJUKG1fcGxheWVyKTsKKyAgICBpZiAoIW1fcGxheWJhY2tSYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCh0cnVlKTsKKyAgICAKKyAg
ICAvLyBGSVhNRTogZGVhbCB3aXRoIGN1ZSByYW5nZXMgaGVyZQorfQorCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCkKK3sK
KyAgICBkb3VibGUgbm93ID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSB0aW1lZGVs
dGEgPSBub3cgLSBtX2xhc3RUaW1lVXBkYXRlRXZlbnRXYWxsVGltZTsKKworICAgIC8vIHRocm90
dGxlIHRoZSBwZXJpb2RpYyBldmVudHMKKyAgICBpZiAocGVyaW9kaWNFdmVudCAmJiB0aW1lZGVs
dGEgPCBtYXhUaW1ldXBkYXRlRXZlbnRGcmVxdWVuY3kpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFNvbWUgbWVkaWEgZW5naW5lcyBtYWtlIG11bHRpcGxlICJ0aW1lIGNoYW5nZWQiIGNhbGxi
YWNrcyBhdCB0aGUgc2FtZSB0aW1lLCBidXQgd2Ugb25seSB3YW50IG9uZQorICAgIC8vIGV2ZW50
IGF0IGEgZ2l2ZW4gdGltZSBzbyBmaWx0ZXIgaGVyZQorICAgIGZsb2F0IG1vdmllVGltZSA9IG1f
cGxheWVyID8gbV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkgOiAwOworICAgIGlmIChtb3ZpZVRpbWUg
IT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKSB7CisgICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCk7CisgICAgICAgIG1fbGFzdFRpbWVVcGRh
dGVFdmVudFdhbGxUaW1lID0gbm93OworICAgICAgICBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWUgPSBtb3ZpZVRpbWU7CisgICAgfQorfQorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNh
blBsYXkoKSBjb25zdAogewotICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG5ldHdv
cmtTdGF0ZSgpIDwgTE9BREVEX01FVEFEQVRBOworICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRl
ZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhBVkVfTUVUQURBVEE7CiB9CiAKLVN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3RNZWRpYVVSTChDb250ZW50VHlwZSYgY29udGVudFR5cGUpCitib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpCiB7Ci0gICAgLy8g
My4xNC45LjIuIExvY2F0aW9uIG9mIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIFN0cmluZyBtZWRp
YVNyYyA9IGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKLSAgICBpZiAobWVkaWFTcmMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpIHsK
LSAgICAgICAgICAgICAgICBIVE1MU291cmNlRWxlbWVudCogc291cmNlID0gc3RhdGljX2Nhc3Q8
SFRNTFNvdXJjZUVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS0+aGFz
QXR0cmlidXRlKHNyY0F0dHIpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCi0gICAg
ICAgICAgICAgICAgaWYgKHNvdXJjZS0+aGFzQXR0cmlidXRlKG1lZGlhQXR0cikpIHsKLSAgICAg
ICAgICAgICAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBk
b2N1bWVudCgpLT5mcmFtZSgpLCByZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDAp
OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IE1lZGlhTGlz
dDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChzb3VyY2UtPm1lZGlhKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbChtZWRpYS5nZXQoKSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZS0+aGFzQXR0cmlidXRlKHR5cGVBdHRyKSkgewotICAgICAgICAg
ICAgICAgICAgICBDb250ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHR5cGUpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJu
IHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBzbyB0aGUgbWVkaWEgZW5naW5lIGNh
biB1c2UgdGhlbQotICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHR5cGU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1lZGlhU3JjID0gc291cmNlLT5zcmMoKS5z
dHJpbmcoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAvLyBT
dGFzaCB0aGUgY3VycmVudCA8c291cmNlPiBub2RlIHNvIHdlIGNhbiByZXN0b3JlIGl0IGFmdGVy
IGNoZWNraW5nCisgICAgLy8gdG8gc2VlIHRoZXJlIGlzIGFub3RoZXIgcG90ZW50aWFsCisgICAg
Tm9kZSogY3VycmVudFNvdXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOworICAgIFN0cmlu
ZyBuZXh0VXJsID0gbmV4dFNvdXJjZUNoaWxkKCk7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9
IGN1cnJlbnRTb3VyY2VOb2RlOworCisgICAgcmV0dXJuICFuZXh0VXJsLmlzRW1wdHkoKTsKK30K
KworU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAq
Y29udGVudFR5cGUpCit7CisgICAgU3RyaW5nIG1lZGlhU3JjOworICAgIGJvb2wgbG9va2luZ0Zv
clByZXZpb3VzTm9kZSA9IG1fY3VycmVudFNvdXJjZU5vZGU7CisKKyAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShzb3VyY2VUYWcpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGxvb2tpbmdGb3JQcmV2aW91c05vZGUpIHsKKyAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnRTb3VyY2VOb2RlID09IG5vZGUpCisgICAgICAgICAgICAgICAgbG9v
a2luZ0ZvclByZXZpb3VzTm9kZSA9IGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSBzdGF0
aWNfY2FzdDxIVE1MU291cmNlRWxlbWVudCo+KG5vZGUpOworICAgICAgICBpZiAoIXNvdXJjZS0+
aGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICBp
ZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgeworICAgICAgICAgICAgTWVkaWFR
dWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFtZSgpLCBy
ZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRy
PE1lZGlhTGlzdD4gbWVkaWEgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25T
eW50YXgoc291cmNlLT5tZWRpYSgpKTsKKyAgICAgICAgICAgIGlmICghc2NyZWVuRXZhbC5ldmFs
KG1lZGlhLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUodHlwZUF0dHIpKSB7CisgICAgICAgICAgICBD
b250ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGlmICghTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzVHlwZSh0eXBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBz
byB0aGUgbWVkaWEgZW5naW5lIGNhbiB1c2UgdGhlbQorICAgICAgICAgICAgaWYgKGNvbnRlbnRU
eXBlKQorICAgICAgICAgICAgICAgICpjb250ZW50VHlwZSA9IHR5cGU7CisgICAgICAgIH0KKyAg
ICAgICAgbWVkaWFTcmMgPSBzb3VyY2UtPnNyYygpLnN0cmluZygpOworICAgICAgICBtX2N1cnJl
bnRTb3VyY2VOb2RlID0gbm9kZTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgaWYgKCFt
ZWRpYVNyYy5pc0VtcHR5KCkpCiAgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwobWVkaWFTcmMpLnN0cmluZygpOworCiAgICAgcmV0dXJuIG1lZGlhU3JjOwogfQogCkBA
IC05MTcsMjIgKzExMjEsMzIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRp
bWVDaAogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAotICAg
IGlmIChyZWFkeVN0YXRlKCkgPj0gQ0FOX1BMQVkpCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBI
QVZFX0NVUlJFTlRfREFUQSAmJiBtX3NlZWtpbmcpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkuc2Vla2VkRXZlbnQpOwogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKKyAg
ICB9CiAgICAgCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBpZiAobm93ID49
IGR1cmF0aW9uKCkpIHsKKyAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGlmIChub3cg
Pj0gZHVyKSB7CiAgICAgICAgIGlmIChsb29wKCkpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgICAgICAgICBzZWVrKDAsIGVjKTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZl
bnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKKyAgICAgICAgICAgIG1f
c2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRp
b24pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUo
ZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBt
X3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRl
RXZlbnQoZmFsc2UpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LmVuZGVkRXZlbnQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UK
KyAgICAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKIAorLy9AQEBAQCBPSyBpZiB3ZSBqdXN0
IGxvb3BlZCA/Pz8/CiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisvL0BAQEBACiAKICAgICBlbmRQ
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQpAQCAtOTUyLDYgKzExNjYsMzkgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZQogICAgIGVuZFByb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vz
c2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMo
KS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyo+KHJlbmRlcmVyKCkpLT52aWRlb1NpemVDaGFu
Z2VkKCk7CisgICAgfQorI2VuZGlmICAgICAgICAKKyAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5
ZXJDYWxsYmFjaygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmF0
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKKyAgICAvLyBTdGFzaCB0aGUgcmF0ZSBpbiBjYXNlIHRoZSBvbmUgd2UgdHJp
ZWQgdG8gc2V0IGlzbid0IHdoYXQgdGhlIGVuZ2luZSBpcworICAgIC8vIHVzaW5nIChlZy4gaXQg
Y2FuJ3QgaGFuZGxlIHRoZSByYXRlIHdlIHNldCkKKyAgICBtX3BsYXliYWNrUmF0ZSA9IG1fcGxh
eWVyLT5yYXRlKCk7CisgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikKK3sKKyAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CisjaWYg
IUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIGlmIChyZW5kZXJlcigpICYmICFy
ZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4o
cmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsKKyNlbmRpZiAgICAgICAgCisgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKK30KKwogUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUg
cmVhbCByYW5nZXMgc3VwcG9ydApAQCAtOTc0LDE2ICsxMjIxLDMzIEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRl
KDAsIG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6YWN0aXZlbHlQbGF5aW5nKCkgY29uc3QKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90
ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXBhdXNlZCgpICYmIHJlYWR5
U3RhdGUoKSA+PSBDQU5fUExBWSAmJiAhZW5kZWRQbGF5YmFjaygpOyAvLyAmJiAhc3RvcHBlZER1
ZVRvRXJyb3JzKCkgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpOworICAgIHJldHVybiAh
cGF1c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgIWVuZGVkUGxh
eWJhY2soKSAmJiAhc3RvcHBlZER1ZVRvRXJyb3JzKCkgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFj
dGlvbigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2soKSBjb25z
dAogewotICAgIHJldHVybiBuZXR3b3JrU3RhdGUoKSA+PSBMT0FERURfTUVUQURBVEEgJiYgY3Vy
cmVudFRpbWUoKSA+PSBkdXJhdGlvbigpICYmICFsb29wKCk7CisgICAgcmV0dXJuIG1fcGxheWVy
ICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBICYmIGN1cnJlbnRUaW1lKCkgPj0gZHVy
YXRpb24oKSAmJiAhbG9vcCgpOwogfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWRE
dWVUb0Vycm9ycygpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFE
QVRBICYmIG1fZXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFu
Z2VzID0gc2Vla2FibGUoKTsKKyAgICAgICAgaWYgKCFzZWVrYWJsZVJhbmdlcy0+Y29udGFpbihj
dXJyZW50VGltZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNl
ckludGVyYWN0aW9uKCkgY29uc3QKK3sKKy8vICAgIHJldHVybiAhcGF1c2VkKCkgJiYgbV9yZWFk
eVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgW1VBIHJlcXVpcmVzIGEgZGVjaXRpb25zIGZy
b20gdGhlIHVzZXJdCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZVZvbHVtZSgpCiB7CiAgICAgaWYgKCFtX3BsYXllcikKQEAgLTEwMDUsMTggKzEy
NjksMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogewogICAg
IGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmIChtX3BhdXNl
ZEludGVybmFsKSB7CiAgICAgICAgIGlmICghbV9wbGF5ZXItPnBhdXNlZCgpKQogICAgICAgICAg
ICAgbV9wbGF5ZXItPnBhdXNlKCk7CisgICAgICAgIG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyLnN0
b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBib29sIHNob3VsZEJlUGxh
eWluZyA9IGFjdGl2ZWx5UGxheWluZygpOwotICAgIGlmIChzaG91bGRCZVBsYXlpbmcgJiYgbV9w
bGF5ZXItPnBhdXNlZCgpKQorICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5nID0gcG90ZW50aWFsbHlQ
bGF5aW5nKCk7CisgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+cGF1c2VkKCk7Cisg
ICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiBwbGF5ZXJQYXVzZWQpIHsKKyAgICAgICAgLy8gU2V0
IHJhdGUgYmVmb3JlIGNhbGxpbmcgcGxheSBpbiBjYXNlIHRoZSByYXRlIHdhcyBzZXQgYmVmb3Jl
IHRoZSBtZWRpYSBlbmdpbmUgd2Fzbid0IHNldHVwLgorICAgICAgICAvLyBUaGUgbWVkaWEgZW5n
aW5lIHNob3VsZCBqdXN0IHN0YXNoIHRoZSByYXRlIHNpbmNlIGl0IGlzbid0IGFscmVhZHkgcGxh
eWluZy4KKyAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUobV9wbGF5YmFja1JhdGUpOwogICAgICAg
ICBtX3BsYXllci0+cGxheSgpOwotICAgIGVsc2UgaWYgKCFzaG91bGRCZVBsYXlpbmcgJiYgIW1f
cGxheWVyLT5wYXVzZWQoKSkKKyAgICAgICAgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKTsK
KyAgICB9IGVsc2UgaWYgKCFzaG91bGRCZVBsYXlpbmcgJiYgIXBsYXllclBhdXNlZCkgewogICAg
ICAgICBtX3BsYXllci0+cGF1c2UoKTsKKyAgICAgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIu
c3RvcCgpOworICAgIH0KICAgICAKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVy
ZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKQEAgLTEwMjgsMjUgKzEzMDAsNTAgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgp
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZl
KCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcFBlcmlvZGljVGltZXJzKCkKIHsKLSAgICAv
LyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICAvLyAxNAotICAgIGlm
IChtX2JlZ3VuKSB7Ci0gICAgICAgIC8vIEZvciBzaW1wbGljaXR5IGNhbmNlbCB0aGUgaW5jb21w
bGV0ZSBsb2FkIGJ5IGRlbGV0aW5nIHRoZSBwbGF5ZXIKKyAgICBtX3Byb2dyZXNzRXZlbnRUaW1l
ci5zdG9wKCk7CisgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3RvcCgpOworfQorCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKK3sKKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSkgeworCisgICAgICAgIC8vIElmIHRoZSBtZWRpYSBk
YXRhIGZldGNoaW5nIHByb2Nlc3MgaXMgYWJvcnRlZCBieSB0aGUgdXNlcjoKKworICAgICAgICAv
LyAxIC0gVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0Y2hpbmcgcHJvY2Vzcy4K
KyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgICAgIG1fcGxheWVyLmNs
ZWFyKCk7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKKyNlbmRpZgorICAg
ICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKIAorICAgICAgICAvLyAyIC0gU2V0IHRoZSBlcnJv
ciBhdHRyaWJ1dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hvc2UgY29kZSBhdHRyaWJ1
dGUgaXMgc2V0IHRvIE1FRElBX0VSUl9BQk9SVC4KICAgICAgICAgbV9lcnJvciA9IE1lZGlhRXJy
b3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCk7Ci0gICAgICAgIG1fYmVn
dW4gPSBmYWxzZTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5h
bWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+PSBMT0FESU5H
KSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IEVNUFRZOwotICAgICAgICAgICAgbV9y
ZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRG
b3JUeXBlKGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgICAg
ICAvLyAzIC0gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgYWJv
cnQgYXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChl
dmVudE5hbWVzKCkuYWJvcnRFdmVudCk7CisKKyAgICAgICAgLy8gNCAtIElmIHRoZSBtZWRpYSBl
bGVtZW50J3MgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUgZXF1YWwgdG8gSEFWRV9O
T1RISU5HLCBzZXQgdGhlIAorICAgICAgICAvLyBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJp
YnV0ZSB0byB0aGUgTkVUV09SS19FTVBUWSB2YWx1ZSBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUg
YSAKKyAgICAgICAgLy8gc2ltcGxlIGV2ZW50IGNhbGxlZCBlbXB0aWVkIGF0IHRoZSBlbGVtZW50
LiBPdGhlcndpc2UsIHNldCBzZXQgdGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgCisgICAgICAg
IC8vIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19JRExFIHZhbHVlLgorICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPj0gTkVUV09SS19MT0FESU5HKSB7CisgICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE5FVFdPUktfRU1QVFk7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05P
VEhJTkc7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZl
bnQpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gNSAtIFNldCB0aGUgZWxlbWVudCdzIGRlbGF5
aW5nLXRoZS1sb2FkLWV2ZW50IGZsYWcgdG8gZmFsc2UuIFRoaXMgc3RvcHMgZGVsYXlpbmcgdGhl
IGxvYWQgZXZlbnQuCisgICAgICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKICAg
ICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3Rp
dmUoKQorewogICAgIG1faW5BY3RpdmVEb2N1bWVudCA9IGZhbHNlOworICAgIHVzZXJDYW5jZWxs
ZWRMb2FkKCk7CisKICAgICAvLyBTdG9wIHRoZSBwbGF5YmFjayB3aXRob3V0IGdlbmVyYXRpbmcg
ZXZlbnRzCiAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7CiAKQEAgLTEwNjEsNiArMTM1OCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWUKIAogICAgIGlmICht
X2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRF
RCkgewogICAgICAgICAvLyBSZXN0YXJ0IHRoZSBsb2FkIGlmIGl0IHdhcyBhYm9ydGVkIGluIHRo
ZSBtaWRkbGUgYnkgbW92aW5nIHRoZSBkb2N1bWVudCB0byB0aGUgcGFnZSBjYWNoZS4KKyAgICAg
ICAgLy8gbV9lcnJvciBpcyBvbmx5IGxlZnQgYXQgTUVESUFfRVJSX0FCT1JURUQgd2hlbiB0aGUg
ZG9jdW1lbnQgYmVjb21lcyBpbmFjdGl2ZSAoaXQgaXMgc2V0IHRvCisgICAgICAgIC8vICBNRURJ
QV9FUlJfQUJPUlRFRCB3aGlsZSB0aGUgYWJvcnRFdmVudCBpcyBiZWluZyBzZW50LCBidXQgY2xl
YXJlZCBpbW1lZGlhdGVseSBhZnRlcndhcmRzKS4KICAgICAgICAgLy8gVGhpcyBiZWhhdmlvciBp
cyBub3Qgc3BlY2lmaWVkIGJ1dCBpdCBzZWVtcyBsaWtlIGEgc2Vuc2libGUgdGhpbmcgdG8gZG8u
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGxvYWQoZWMpOwpAQCAtMTEyNCw5
ICsxNDIzLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm8KIAog
U3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmluaXRpYWxVUkwoKQogewotICAgIENvbnRlbnRUeXBl
IGlnbm9yZWRUeXBlOwotICAgIFN0cmluZyBpbml0aWFsU3JjID0gc2VsZWN0TWVkaWFVUkwoaWdu
b3JlZFR5cGUpOworICAgIFN0cmluZyBpbml0aWFsU3JjID0gbWVkaWFTcmMgPSBnZXRBdHRyaWJ1
dGUoc3JjQXR0cik7CisgICAgCisgICAgaWYgKGluaXRpYWxTcmMuaXNFbXB0eSgpKQorICAgICAg
ICBpbml0aWFsU3JjID0gbmV4dFNvdXJjZUNoaWxkKCk7CisKKyAgICBpZiAoIWluaXRpYWxTcmMu
aXNFbXB0eSgpKQorICAgICAgICBpbml0aWFsU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
aW5pdGlhbFNyYykuc3RyaW5nKCk7CisKICAgICBtX2N1cnJlbnRTcmMgPSBpbml0aWFsU3JjOwor
CiAgICAgcmV0dXJuIGluaXRpYWxTcmM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEV2ZW50OwogY2xhc3MgTWVkaWFFcnJvcjsKLWNsYXNzIFRpbWVSYW5nZXM7CiBjbGFz
cyBLVVJMOworY2xhc3MgVGltZVJhbmdlczsKICAgICAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6
CkBAIC04MCw4ICs4MSw5IEBAIHB1YmxpYzoKICAgICBLVVJMIHNyYygpIGNvbnN0OwogICAgIHZv
aWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjdXJyZW50U3JjKCkgY29uc3Q7
Ci0gICAgCi0gICAgZW51bSBOZXR3b3JrU3RhdGUgeyBFTVBUWSwgTE9BRElORywgTE9BREVEX01F
VEFEQVRBLCBMT0FERURfRklSU1RfRlJBTUUsIExPQURFRCB9OworCisgICAgZW51bSBOZXR3b3Jr
U3RhdGUgeyBORVRXT1JLX0VNUFRZLCBORVRXT1JLX0lETEUsIE5FVFdPUktfTE9BRElORywgTkVU
V09SS19MT0FERUQsIE5FVFdPUktfTk9fU09VUkNFIH07CisvL0BAQEBAICAgIGVudW0gTmV0d29y
a1N0YXRlIHsgRU1QVFksIExPQURJTkcsIExPQURFRF9NRVRBREFUQSwgTE9BREVEX0ZJUlNUX0ZS
QU1FLCBMT0FERUQgfTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OwogICAgIHZvaWQgbG9h
ZChFeGNlcHRpb25Db2RlJik7CkBAIC04OSw3ICs5MSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAKIC8vIHJlYWR5IHN0
YXRlCi0gICAgZW51bSBSZWFkeVN0YXRlIHsgREFUQV9VTkFWQUlMQUJMRSwgQ0FOX1NIT1dfQ1VS
UkVOVF9GUkFNRSwgQ0FOX1BMQVksIENBTl9QTEFZX1RIUk9VR0ggfTsKKyAgICBlbnVtIFJlYWR5
U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBI
QVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CisvL0BAQEBAICAgIGVudW0gUmVh
ZHlTdGF0ZSB7IERBVEFfVU5BVkFJTEFCTEUsIENBTl9TSE9XX0NVUlJFTlRfRlJBTUUsIENBTl9Q
TEFZLCBDQU5fUExBWV9USFJPVUdIIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTk5LDkgKzEwMiw5IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7
CiAgICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVm
YXVsdFBsYXliYWNrUmF0ZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGVm
YXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7CiAgICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBw
bGF5ZWQoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29u
c3Q7CiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwpAQCAtMTA5LDggKzExMiw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wgYik7CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7ICAg
IAogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwotICAgIHZvaWQgcGxheShFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBwYXVzZShFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF5KCk7Cisg
ICAgdm9pZCBwYXVzZSgpOwogICAgIAogLy8gY29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkg
Y29uc3Q7CkBAIC0xMTksNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vm9sdW1lKGZs
b2F0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0TXV0ZWQoYm9vbCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoRXhjZXB0aW9uQ29kZSYg
ZWMpOworICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCk7CiAgICAgdm9pZCBiZWdpblNjcnViYmlu
ZygpOwogICAgIHZvaWQgZW5kU2NydWJiaW5nKCk7CiAKQEAgLTE0MSwxMiArMTQ0LDggQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVZvbHVtZURpZENoYW5nZSgpOwogICAgIAotICAgIHZvaWQgaW5p
dEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7
Ci0gICAgdm9pZCBkaXNwYXRjaEV2ZW50QXN5bmMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUpOwotICAgIAotICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKLSAgICB2b2lk
IHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIHN0YXRlKTsKLQorICAg
IHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdm9pZCBz
ZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAgICAgCiBwcml2YXRl
OiAvLyBNZWRpYVBsYXllck9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTmV0
d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopOwpAQCAtMTU0LDI5ICsxNTMsNTMgQEAgcHJp
dmF0ZTogLy8gTWVkaWFQbGF5ZXJPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
clRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
UmVwYWludChNZWRpYVBsYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclZvbHVt
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEdXJh
dGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJS
YXRlQ2hhbmdlZChNZWRpYVBsYXllciopOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNp
emVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkVGltZXJG
aXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwogICAgIHZvaWQgYXN5bmNFdmVudFRpbWVy
RmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIHByb2dyZXNzRXZlbnRU
aW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7Ci0gICAgdm9pZCBzZWVrKGZsb2F0
IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NUaW1l
ckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CisgICAgdm9pZCBzdGFydFBsYXliYWNr
UHJvZ3Jlc3NUaW1lcigpOworICAgIHZvaWQgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKKyAg
ICB2b2lkIHN0b3BQZXJpb2RpY1RpbWVycygpOworCisgICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNoZWNrSWZTZWVrTmVlZGVkKCk7CisgICAgCisg
ICAgdm9pZCBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpOworICAg
IHZvaWQgc2NoZWR1bGVQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
KTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUp
OworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4gZXZlbnQpOworICAgIAorICAg
IC8vIGxvYWRpbmcKKyAgICB2b2lkIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKKyAgICB2b2lkIGxv
YWRSZXNvdXJjZShTdHJpbmcgdXJsLCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpOworICAgIHZv
aWQgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAgIHZvaWQgdXNlckNhbmNlbGxlZExvYWQoKTsK
KyAgICBTdHJpbmcgbmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSA9IDAp
OworICAgIGJvb2wgaGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCk7CisgICAgdm9pZCBub25lU3Vw
cG9ydGVkKCk7CisgICAgdm9pZCBtZWRpYUVuZ2luZUVycm9yKFBhc3NSZWZQdHI8TWVkaWFFcnJv
cj4gZXJyKTsKIAogICAgIC8vIFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVj
ayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25zLgotICAgIHZvaWQgbG9hZEludGVybmFsKEV4Y2Vw
dGlvbkNvZGUmIGVjKTsKLSAgICB2b2lkIHBsYXlJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYyk7
Ci0gICAgdm9pZCBwYXVzZUludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGxv
YWRJbnRlcm5hbCgpOworICAgIHZvaWQgcGxheUludGVybmFsKCk7CisgICAgdm9pZCBwYXVzZUlu
dGVybmFsKCk7CiAgICAgCiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsK
ICAgICBib29sIHByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjayA+IDA7IH0KICAgICB2b2lkIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSB7ICsrbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjazsgfQogICAgIHZvaWQgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSB7
IEFTU0VSVChtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKTsgLS1tX3Byb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrOyB9CiAKLSAgICBTdHJpbmcgc2VsZWN0TWVkaWFVUkwoQ29udGVu
dFR5cGUmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHVwZGF0ZVZvbHVtZSgpOwogICAgIHZvaWQg
dXBkYXRlUGxheVN0YXRlKCk7Ci0gICAgYm9vbCBhY3RpdmVseVBsYXlpbmcoKSBjb25zdDsKKyAg
ICBib29sIHBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0OwogICAgIGJvb2wgZW5kZWRQbGF5YmFj
aygpIGNvbnN0OworICAgIGJvb2wgc3RvcHBlZER1ZVRvRXJyb3JzKCkgY29uc3Q7CisgICAgYm9v
bCBwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKSBjb25zdDsKIAogICAgIC8vIFJlc3RyaWN0aW9u
cyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuIFRoaXMgaXMgYSBlZmZlY3RpdmVseSBhIGNv
bXBpbGUgdGltZSBjaG9pY2UgYXQgdGhlIG1vbWVudAogICAgIC8vICBiZWNhdXNlIHRoZXJlIGFy
ZSBubyBhY2Nlc3NvciBtZXRob2RzLgpAQCAtMTg3LDQzICsyMTAsMzggQEAgcHJpdmF0ZToKICAg
ICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uID0gMSA8PCAx
LAogICAgIH07CiAKLQogcHJvdGVjdGVkOgogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1f
bG9hZFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVy
OwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwotICAg
IFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fYXN5bmNFdmVudHNUb0Rpc3BhdGNoOworICAgIFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOworICAgIFZlY3RvcjxS
ZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwogICAgIAorICAgIGZsb2F0IG1fcGxheWJh
Y2tSYXRlOwogICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKICAgICBOZXR3b3JrU3Rh
dGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgU3Ry
aW5nIG1fY3VycmVudFNyYzsKICAgICAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsK
LSAgICAKLSAgICBib29sIG1fYmVndW47Ci0gICAgYm9vbCBtX2xvYWRlZEZpcnN0RnJhbWU7Ci0g
ICAgYm9vbCBtX2F1dG9wbGF5aW5nOwotICAgIAotICAgIHVuc2lnbmVkIG1fY3VycmVudExvb3A7
CisKICAgICBmbG9hdCBtX3ZvbHVtZTsKLSAgICBib29sIG1fbXV0ZWQ7Ci0gICAgCi0gICAgYm9v
bCBtX3BhdXNlZDsKLSAgICBib29sIG1fc2Vla2luZzsKLSAgICAKICAgICBmbG9hdCBtX2N1cnJl
bnRUaW1lRHVyaW5nU2VlazsKICAgICAKICAgICB1bnNpZ25lZCBtX3ByZXZpb3VzUHJvZ3Jlc3M7
CiAgICAgZG91YmxlIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7Ci0gICAgYm9vbCBtX3NlbnRTdGFs
bGVkRXZlbnQ7CisKKyAgICAvLyB0aGUgbGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMg
c2VudCAod2FsbCBjbG9jaykKKyAgICBkb3VibGUgbV9sYXN0VGltZVVwZGF0ZUV2ZW50V2FsbFRp
bWU7CisKKyAgICAvLyB0aGUgbGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMgc2VudCBp
biBtb3ZpZSB0aW1lCisgICAgZmxvYXQgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lOwog
ICAgIAotICAgIHVuc2lnbmVkIG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICB1bnNpZ25lZCBtX3Rl
cm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbDsKKyAgICAvLyBsb2FkaW5nIHN0YXRlCisgICAg
ZW51bSBMb2FkU3RhdGUgeyBXYWl0aW5nRm9yU291cmNlLCBMb2FkaW5nRnJvbVNyY0F0dHIsIExv
YWRpbmdGcm9tU291cmNlRWxlbWVudCB9OworICAgIExvYWRTdGF0ZSBtX2xvYWRTdGF0ZTsKKyAg
ICBOb2RlICptX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIAotICAgIGJvb2wgbV9wYXVzZWRJbnRl
cm5hbDsKLSAgICBib29sIG1faW5BY3RpdmVEb2N1bWVudDsKLQogICAgIE93blB0cjxNZWRpYVBs
YXllcj4gbV9wbGF5ZXI7CiAKICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9u
czsKQEAgLTIzMiwxMiArMjUwLDI5IEBAIHByb3RlY3RlZDoKICAgICAvLyAgY2FsbGluZyB0aGUg
bWVkaWEgZW5naW5lIHJlY3Vyc2l2ZWx5CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2s7CiAKKyAgICBib29sIG1fcHJvY2Vzc2luZ0xvYWQgOiAxOworICAgIGJvb2wgbV9k
ZWxheWluZ1RoZUxvYWRFdmVudCA6IDE7CisgICAgYm9vbCBtX2hhdmVGaXJlZExvYWRlZERhdGEg
OiAxOworICAgIGJvb2wgbV9pbkFjdGl2ZURvY3VtZW50IDogMTsKKyAgICBib29sIG1fYXV0b3Bs
YXlpbmcgOiAxOworICAgIGJvb2wgbV9tdXRlZCA6IDE7CisgICAgYm9vbCBtX3BhdXNlZCA6IDE7
CisgICAgYm9vbCBtX3NlZWtpbmcgOiAxOworCisgICAgLy8gZGF0YSBoYXMgbm90IGJlZW4gbG9h
ZGVkIHNpbmNlIHNlbmRpbmcgYSAic3RhbGxlZCIgZXZlbnQKKyAgICBib29sIG1fc2VudFN0YWxs
ZWRFdmVudCA6IDE7CisKKyAgICAvLyB0aW1lIGhhcyBub3QgY2hhbmdlZCBzaW5jZSBzZW5kaW5n
IGFuICJlbmRlZCIgZXZlbnQKKyAgICBib29sIG1fc2VudEVuZEV2ZW50IDogMTsKKworICAgIGJv
b2wgbV9wYXVzZWRJbnRlcm5hbCA6IDE7CisKICAgICAvLyBOb3QgYWxsIG1lZGlhIGVuZ2luZXMg
cHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgYSBmaWxlIHRvIGJlIGFibGUgdG8KICAg
ICAvLyBzdXBwb3J0IHByb2dyZXNzIGV2ZW50cyBzbyBzZXR0aW5nIG1fc2VuZFByb2dyZXNzRXZl
bnRzIGRpc2FibGVzIHRoZW0gCi0gICAgYm9vbCBtX3NlbmRQcm9ncmVzc0V2ZW50czsKKyAgICBi
b29sIG1fc2VuZFByb2dyZXNzRXZlbnRzIDogMTsKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQotICAgIGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlOworICAgIGJvb2wgbV9uZWVk
V2lkZ2V0VXBkYXRlIDogMTsKICNlbmRpZgogfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQCBpbnRlcmZhY2UgW0dlbmVy
YXRlQ29uc3RydWN0b3IsIENvbmRpdGlvCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmM7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjdXJyZW50U3JjOwogICAgIAotICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IEVNUFRZID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBM
T0FESU5HID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FERURfTUVUQURBVEEgPSAy
OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExPQURFRF9GSVJTVF9GUkFNRSA9IDM7Ci0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTE9BREVEID0gNDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBORVRXT1JLX0VNUFRZID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0lE
TEUgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVFdPUktfTE9BRElORyA9IDI7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19MT0FERUQgPSAzOworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IE5FVFdPUktfTk9fU09VUkNFID0gNDsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgbmV0d29ya1N0YXRlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFRpbWVSYW5nZXMgYnVmZmVyZWQ7CkBAIC00NiwxMCArNDYsMTEgQEAgaW50ZXJmYWNlIFtHZW5l
cmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwogICAgIERPTVN0cmluZyBjYW5QbGF5VHlwZShpbiBE
T01TdHJpbmcgdHlwZSk7CiAKICAgICAvLyByZWFkeSBzdGF0ZQotICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IERBVEFfVU5BVkFJTEFCTEUgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENB
Tl9TSE9XX0NVUlJFTlRfRlJBTUUgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENBTl9Q
TEFZID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQU5fUExBWV9USFJPVUdIID0gMzsK
KyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX05PVEhJTkcgPSAwOworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IEhBVkVfTUVUQURBVEEgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IEhBVkVfQ1VSUkVOVF9EQVRBID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0ZV
VFVSRV9EQVRBID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0VOT1VHSF9EQVRB
ID0gNDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzZWVraW5nOwogCkBAIC01OCwxOSArNTks
MTUgQEAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwogICAgICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9h
dCBkdXJhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7Ci0gICAg
YXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUgCi0gICAgICAgIHNldHRlciByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgYXR0cmlidXRlIGZsb2F0IHBsYXliYWNrUmF0ZSAKLSAg
ICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQg
ZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQgcGxheWJhY2tSYXRlOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBlbmRlZDsKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvcGxheTsKICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBsb29wOwotICAgIHZvaWQgcGxheSgpIAotICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7Ci0gICAgdm9pZCBwYXVzZSgpIAotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOwogCiAgICAgLy8gY29udHJv
bHMKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sczsKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MU291cmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNvdXJj
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSFRNTFNv
dXJjZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3UKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIChwYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoYXVkaW9UYWcpIHx8ICBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodmlkZW9UYWcp
KSkgewogICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYSA9IHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpOwotICAgICAgICBpZiAobWVkaWEtPm5ldHdvcmtT
dGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6OkVNUFRZKQorICAgICAgICBpZiAobWVkaWEtPm5l
dHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktfRU1QVFkpCiAgICAgICAg
ICAgICBtZWRpYS0+c2NoZWR1bGVMb2FkKCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdlCiAgICAgYm9vbCBvbGRTaG91bGRTaG93UG9z
dGVySW1hZ2UgPSBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZTsKICNlbmRpZgogCi0gICAgbV9zaG91
bGRTaG93UG9zdGVySW1hZ2UgPSAhcG9zdGVyKCkuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRl
IDwgTE9BREVEX0ZJUlNUX0ZSQU1FOworICAgIG1fc2hvdWxkU2hvd1Bvc3RlckltYWdlID0gIXBv
c3RlcigpLmlzRW1wdHkoKSAmJiByZWFkeVN0YXRlKCkgPCBIQVZFX0NVUlJFTlRfREFUQTsKIAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBpZiAoYXR0YWNoZWQoKSAm
JiBvbGRTaG91bGRTaG93UG9zdGVySW1hZ2UgIT0gbV9zaG91bGRTaG93UG9zdGVySW1hZ2UpIHsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL01lZGlhRXJyb3IuaAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvTWVkaWFF
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRXJyb3I+IHsK
IHB1YmxpYzoKLSAgICBlbnVtIENvZGUgeyBNRURJQV9FUlJfQUJPUlRFRCA9IDEsIE1FRElBX0VS
Ul9ORVRXT1JLLCBNRURJQV9FUlJfREVDT0RFIH07CisgICAgZW51bSBDb2RlIHsgTUVESUFfRVJS
X0FCT1JURUQgPSAxLCBNRURJQV9FUlJfTkVUV09SSywgTUVESUFfRVJSX0RFQ09ERSwgTUVESUFf
RVJSX05PTkVfU1VQUE9SVEVEIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUVycm9y
PiBjcmVhdGUoQ29kZSBjb2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFFcnJvcihjb2Rl
KSk7IH0KIApJbmRleDogV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3Jl
L2h0bWwvTWVkaWFFcnJvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAgbW9k
dWxlIGh0bWwgewogICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9BQk9S
VEVEID0gMTsKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09S
SyA9IDI7CiAgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9
IDM7CisgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05PTkVfU1VQUE9S
VEVEID0gNDsKICAgICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29k
ZTsKICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDQx
NjU4KQorKysgV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0OSwxNSArMTQ5LDE0IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcigKICAgICBOb2RlKiB0YXJnZXROb2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsK
ICAgICBpZiAodGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSkg
ewogICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRl
b0VsZW1lbnQqPih0YXJnZXROb2RlKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAg
ICAgICAgIGlmICghdmlkZW8tPmNhblBsYXkoKSkgewotICAgICAgICAgICAgICAgIHZpZGVvLT5w
YXVzZShlYyk7CisgICAgICAgICAgICAgICAgdmlkZW8tPnBhdXNlKCk7CiAgICAgICAgICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkgewog
ICAgICAgICAgICAgaWYgKHZpZGVvLT5jYW5QbGF5KCkpIHsKLSAgICAgICAgICAgICAgICB2aWRl
by0+cGxheShlYyk7CisgICAgICAgICAgICAgICAgdmlkZW8tPnBsYXkoKTsKICAgICAgICAgICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlz
aW9uIDQxNjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWb2x1bWUoZmxvYXQpIHsgfQogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsg
fQotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmc7IH0KIAogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZUJ1ZmZlcmVk
KCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtNDQ0LDExICs0NDQsMjkgQEAgdm9pZCBNZWRpYVBs
YXllcjo6dGltZUNoYW5nZWQoKQogICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllclRpbWVDaGFuZ2VkKHRoaXMpOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjpzaXplQ2hhbmdl
ZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPm1lZGlhUGxheWVyU2l6ZUNoYW5nZWQodGhpcyk7Cit9CisKIHZvaWQgTWVkaWFQ
bGF5ZXI6OnJlcGFpbnQoKQogewogICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQogICAgICAg
ICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclJlcGFpbnQodGhpcyk7CiB9CiAKK3Zv
aWQgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5
ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRHVyYXRp
b25DaGFuZ2VkKHRoaXMpOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCgpCit7
CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPm1lZGlhUGxheWVyUmF0ZUNoYW5nZWQodGhpcyk7Cit9CisKIH0KICNlbmRpZgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gNDE2NTgpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDExICs1MiwzMCBAQCBjbGFzcyBTdHJpbmc7CiBjbGFzcyBNZWRpYVBsYXllckNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJDbGllbnQoKSB7IH0KKworICAg
IC8vIHRoZSBuZXR3b3JrIHN0YXRlIGhhcyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGhl
IHJlYWR5IHN0YXRlIGhhcyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVh
ZHlTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKworICAgIC8vIHRoZSB2b2x1bWUgb3Ig
bXV0ZWQgc3RhdGUgaGFzIGNoYW5nZWQKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJWb2x1
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisKKyAgICAvLyB0aW1lIGhhcyBqdW1wZWQsIGVn
LiBub3QgYXMgYSByZXN1bHQgb2Ygbm9ybWFsIHBsYXliYWNrCiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICAKKyAgICAvLyBhIG5l
dyBmcmFtZSBvZiB2aWRlbyBpcyBhdmFpbGFibGUKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgeyB9CisKKyAgICAvLyB0aGUgbWVkaWEgZmlsZSBkdXJh
dGlvbiBoYXMgY2hhbmdlZCwgb3IgaXMgbm93IGtub3duCisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRHVyYXRpb25DaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgCisgICAgLy8gdGhl
IHBsYXliYWNrIHJhdGUgaGFzIGNoYW5nZWQKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJS
YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGhlIG1vdmllIHNpemUgaGFz
IGNoYW5nZWQKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBs
YXllciopIHsgfQogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXIgOiBOb25jb3B5YWJsZSB7CkBAIC0x
MTUsMTYgKzEzNCwxOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCi0gICAgZW51bSBOZXR3b3JrU3RhdGUgeyBF
bXB0eSwgTG9hZEZhaWxlZCwgTG9hZGluZywgTG9hZGVkTWV0YURhdGEsIExvYWRlZEZpcnN0RnJh
bWUsIExvYWRlZCB9OworICAgIGVudW0gTmV0d29ya1N0YXRlIHsgRW1wdHksIElkbGUsIExvYWRp
bmcsIExvYWRlZCwgRm9ybWF0RXJyb3IsIE5ldHdvcmtFcnJvciwgRGVjb2RlRXJyb3IgfTsKICAg
ICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CiAKLSAgICBlbnVtIFJlYWR5U3RhdGUgIHsg
RGF0YVVuYXZhaWxhYmxlLCBDYW5TaG93Q3VycmVudEZyYW1lLCBDYW5QbGF5LCBDYW5QbGF5VGhy
b3VnaCB9OworICAgIGVudW0gUmVhZHlTdGF0ZSAgeyBIYXZlTm90aGluZywgSGF2ZU1ldGFkYXRh
LCBIYXZlQ3VycmVudERhdGEsIEhhdmVGdXR1cmVEYXRhLCBIYXZlRW5vdWdoRGF0YSB9OwogICAg
IFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpOwogICAgIAogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hh
bmdlZCgpOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHZvbHVtZUNo
YW5nZWQoKTsKICAgICB2b2lkIHRpbWVDaGFuZ2VkKCk7CisgICAgdm9pZCBzaXplQ2hhbmdlZCgp
OworICAgIHZvaWQgcmF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpOwog
CiAgICAgdm9pZCByZXBhaW50KCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAko
cmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTQogICAgICwgbV9pc0Vu
ZFJlYWNoZWQoZmFsc2UpCiAgICAgLCBtX3ZvbHVtZSgwLjVmKQogICAgICwgbV9uZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpE
YXRhVW5hdmFpbGFibGUpCisgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nKQogICAgICwgbV9zdGFydGVkUGxheWluZyhmYWxzZSkKICAgICAsIG1faXNTdHJlYW1pbmco
ZmFsc2UpCiAgICAgLCBtX3NpemUoSW50U2l6ZSgpKQpAQCAtMTU4LDggKzE1OCw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0cmkKICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0
ZUNoYW5nZWQoKTsKICAgICB9Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6
RGF0YVVuYXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpE
YXRhVW5hdmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAKQEAg
LTQ2NiwxMiArNDY2LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMo
KQogICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAg
ICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkpIHsKLSAgICAgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5VGhyb3VnaDsKKyAgICAgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1f
bmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZCkKLSAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBN
ZWRpYVBsYXllcjo6TG9hZGVkOwogCiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4sICJz
b3VyY2UiLCAmbV9zb3VyY2UsIE5VTEwpOwogICAgICAgICBpZiAoIW1fc291cmNlKQpAQCAtNDg5
LDEyICs0ODgsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksCiAgICAgICAgICAg
ICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIGlmIChzdGF0
ZSA9PSBHU1RfU1RBVEVfUkVBRFkpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpDYW5QbGF5OworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6
OkhhdmVGdXR1cmVEYXRhOwogICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9Q
QVVTRUQpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5
OworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0
YTsKICAgICAgICAgfQotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6
TG9hZGVkTWV0YURhdGEpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpMb2FkZWRNZXRhRGF0YTsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TG9hZGluZzsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX1ZFUkJP
U0UoTWVkaWEsICJFbHNlIDogJWQiLCByZXQpOwpAQCAtNTAyLDcgKzUwMCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIH0KIAogICAgIGlmIChzZWVraW5n
KCkpCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7
CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKIAogICAg
IGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsKICAgICAgICAgTE9HX1ZF
UkJPU0UoTWVkaWEsICJOZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsCkBAIC01
NTEsMTIgKzU0OSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIGlmIChtX25ldHdv
cmtTdGF0ZSAhPSBNZWRpYVBsYXllcjo6TG9hZEZhaWxlZCkgewotICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkOworICAgIGlmIChtX25ldHdvcmtTdGF0ZSAh
PSBNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yKSB7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcjsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0
ZUNoYW5nZWQoKTsKICAgICB9Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6
RGF0YVVuYXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpE
YXRhVW5hdmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0LmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtODksMTEgKzg5LDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsK
ICAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OwogICAgIHZvaWQgc2VlayhmbG9hdCB0aW1l
KTsKLSAgICB2b2lkIHNldEVuZFRpbWUoZmxvYXQgdGltZSk7CiAgICAgCiAgICAgdm9pZCBzZXRS
YXRlKGZsb2F0KTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7Ci0gICAgCisKKyAgICB2b2lk
IHNldEVuZFRpbWUoZmxvYXQgdGltZSk7CisKICAgICBpbnQgZGF0YVJhdGUoKSBjb25zdDsKICAg
ICAKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya1N0YXRlOyB9CkBAIC0xMjMsMTIgKzEyNCwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZG9TZWVrKCk7CiAgICAgdm9pZCBjYW5jZWxTZWVrKCk7CiAgICAgdm9pZCBzZWVr
VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7Ci0gICAgdm9pZCBlbmRQb2lu
dFRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiopOwogICAgIGZsb2F0IG1heFRp
bWVMb2FkZWQoKSBjb25zdDsKLSAgICB2b2lkIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7
Ci0gICAgdm9pZCBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3ModW5zaWduZWQmIGVuYWJsZWRUcmFj
a0NvdW50KTsKKyAgICB2b2lkIGRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpOwogICAgIAotICAg
IGJvb2wgbWV0YURhdGFBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3F0TW92aWUgJiYgbV9u
ZXR3b3JrU3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOyB9CisgICAgYm9vbCBt
ZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXRNb3ZpZSAmJiBtX3JlYWR5U3Rh
dGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfQogCiAgICAgTWVkaWFQbGF5ZXIqIG1f
cGxheWVyOwogICAgIFJldGFpblB0cjxRVE1vdmllPiBtX3F0TW92aWU7CkBAIC0xMzYsMTUgKzEz
NSwxNSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxRVFZpZGVvUmVuZGVyZXJXZWJLaXRPbmx5
PiBtX3F0VmlkZW9SZW5kZXJlcjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZU1vdmllT2JzZXJ2ZXI+
IG1fb2JqY09ic2VydmVyOwogICAgIGZsb2F0IG1fc2Vla1RvOwotICAgIGZsb2F0IG1fZW5kVGlt
ZTsKICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG1fc2Vla1RpbWVyOwotICAgIFRpbWVy
PE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9lbmRQb2ludFRpbWVyOwogICAgIE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
bV9yZWFkeVN0YXRlOwogICAgIGJvb2wgbV9zdGFydGVkUGxheWluZzsKICAgICBib29sIG1faXNT
dHJlYW1pbmc7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgSW50UmVjdCBtX3JlY3Q7CisgICAg
dW5zaWduZWQgbV9lbmFibGVkVHJhY2tDb3VudDsKKyAgICBmbG9hdCBtX2R1cmF0aW9uOwogI2lm
IERSQVdfRlJBTUVfUkFURQogICAgIGludCAgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nOwogICAg
IGRvdWJsZSBtX3RpbWVTdGFydGVkUGxheWluZzsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZp
c2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsOCArMTU3LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZmxv
YXQgZW5kUG9pbnRUaW1lckludGVydmFsID0gMC4wMjBmOwotCiAjaWZkZWYgQlVJTERJTkdfT05f
VElHRVIKIHN0YXRpYyBjb25zdCBsb25nIG1pbmltdW1RdWlja1RpbWVWZXJzaW9uID0gMHgwNzMw
MDAwMDsgLy8gNy4zCiAjZW5kaWYKQEAgLTE3OSwxNSArMTc3LDE1IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE0KICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAs
IG1fb2JqY09ic2VydmVyKEFkb3B0TlMsIFtbV2ViQ29yZU1vdmllT2JzZXJ2ZXIgYWxsb2NdIGlu
aXRXaXRoQ2FsbGJhY2s6dGhpc10pCiAgICAgLCBtX3NlZWtUbygtMSkKLSAgICAsIG1fZW5kVGlt
ZShudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkpCiAgICAgLCBtX3NlZWtUaW1lcih0
aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCkKLSAgICAsIG1fZW5kUG9p
bnRUaW1lcih0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRpbWVyRmlyZWQpCiAg
ICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX3N0YXJ0ZWRQbGF5aW5nKGZhbHNlKQogICAg
ICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAsIG1f
cmVjdCgpCisgICAgLCBtX2VuYWJsZWRUcmFja0NvdW50KDApCisgICAgLCBtX2R1cmF0aW9uKC0x
LjBmKQogI2lmIERSQVdfRlJBTUVfUkFURQogICAgICwgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5n
KDApCiAgICAgLCBtX3RpbWVTdGFydGVkUGxheWluZygwKQpAQCAtNDA3LDEyICs0MDUsMTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWQoY29uc3QgU3RyaQogICAgICAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICBtX3BsYXllci0+bmV0d29y
a1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxh
eWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVy
OjpIYXZlTm90aGluZykgeworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0K
ICAgICBjYW5jZWxTZWVrKCk7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKICAgICAKICAg
ICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6WUVTXTsKIApAQCAtNDMz
LDcgKzQzMCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KCkKICAgICBbbV9vYmpj
T2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6WUVTXTsKICAgICBbbV9xdE1vdmllLmdl
dCgpIHNldFJhdGU6bV9wbGF5ZXItPnJhdGUoKV07CiAgICAgW21fb2JqY09ic2VydmVyLmdldCgp
IHNldERlbGF5Q2FsbGJhY2tzOk5PXTsKLSAgICBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2UoKQpAQCAtNDQ3LDcgKzQ0Myw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZSgpCiAgICAgW21fb2JqY09ic2VydmVy
LmdldCgpIHNldERlbGF5Q2FsbGJhY2tzOllFU107CiAgICAgW21fcXRNb3ZpZS5nZXQoKSBzdG9w
XTsKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6Tk9dOwotICAg
IG1fZW5kUG9pbnRUaW1lci5zdG9wKCk7CiB9CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6
ZHVyYXRpb24oKSBjb25zdApAQCAtNDY1LDcgKzQ2MCw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJp
dmF0ZTo6Y3VycmVudFRpbWUoKSAKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIFFUVGltZSB0aW1lID0gW21fcXRNb3ZpZS5nZXQoKSBjdXJyZW50
VGltZV07Ci0gICAgcmV0dXJuIG1pbihzdGF0aWNfY2FzdDxmbG9hdD4odGltZS50aW1lVmFsdWUp
IC8gdGltZS50aW1lU2NhbGUsIG1fZW5kVGltZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0Pih0aW1lLnRpbWVWYWx1ZSkgLyB0aW1lLnRpbWVTY2FsZTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnNlZWsoZmxvYXQgdGltZSkKQEAgLTQ3Nyw3ICs0NzIsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6c2VlayhmbG9hdCB0aW1lCiAgICAgCiAgICAgaWYgKHRpbWUgPiBk
dXJhdGlvbigpKQogICAgICAgICB0aW1lID0gZHVyYXRpb24oKTsKLSAgICAKKwogICAgIG1fc2Vl
a1RvID0gdGltZTsKICAgICBpZiAobWF4VGltZUxvYWRlZCgpID49IG1fc2Vla1RvKQogICAgICAg
ICBkb1NlZWsoKTsKQEAgLTQ5NSw3ICs0OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
ZG9TZWVrKCkgCiAgICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRDdXJyZW50VGltZTpxdHRpbWVdOwog
ICAgIGZsb2F0IHRpbWVBZnRlclNlZWsgPSBjdXJyZW50VGltZSgpOwogICAgIC8vIHJlc3RvcmUg
cGxheWJhY2sgb25seSBpZiBub3QgYXQgZW5kLCBvdGhld2lzZSBRVE1vdmllIHdpbGwgbG9vcAot
ICAgIGlmICh0aW1lQWZ0ZXJTZWVrIDwgZHVyYXRpb24oKSAmJiB0aW1lQWZ0ZXJTZWVrIDwgbV9l
bmRUaW1lKQorICAgIGlmIChvbGRSYXRlICYmIHRpbWVBZnRlclNlZWsgPCBkdXJhdGlvbigpKQog
ICAgICAgICBbbV9xdE1vdmllLmdldCgpIHNldFJhdGU6b2xkUmF0ZV07CiAgICAgY2FuY2VsU2Vl
aygpOwogICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXREZWxheUNhbGxiYWNrczpOT107CkBA
IC01MjgsMjcgKzUyMyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJl
ZCgKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRFbmRUaW1lKGZsb2F0
IHRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0RW5kVGltZShmbG9hdCkKIHsKLSAg
ICBtX2VuZFRpbWUgPSB0aW1lOwotICAgIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgp
Ci17Ci0gICAgaWYgKG1fZW5kVGltZSA8IGR1cmF0aW9uKCkgJiYgbV9zdGFydGVkUGxheWluZyAm
JiAhbV9lbmRQb2ludFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZW5kUG9pbnRUaW1lci5z
dGFydFJlcGVhdGluZyhlbmRQb2ludFRpbWVySW50ZXJ2YWwpOwotfQotCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6ZW5kUG9pbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4q
KQotewotICAgIGZsb2F0IHRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIAotICAgIC8vIGp1c3Qg
ZG8gZW5kIGZvciBub3cKLSAgICBpZiAodGltZSA+PSBtX2VuZFRpbWUpIHsKLSAgICAgICAgcGF1
c2UoKTsKLSAgICAgICAgZGlkRW5kKCk7Ci0gICAgfQogfQogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZTo6cGF1c2VkKCkgY29uc3QKQEAgLTY2MCw1MSArNjM2LDYyIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIAogICAgIGxvbmcgbG9hZFN0YXRlID0gbV9x
dE1vdmllID8gW1ttX3F0TW92aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OlFUTW92aWVMb2FkU3Rh
dGVBdHRyaWJ1dGVdIGxvbmdWYWx1ZV0gOiBzdGF0aWNfY2FzdDxsb25nPihRVE1vdmllTG9hZFN0
YXRlRXJyb3IpOwogICAgIAotICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxv
YWRlZCAmJiBtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSAmJiAh
bV9wbGF5ZXItPmluTWVkaWFEb2N1bWVudCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVuYWJsZWRU
cmFja0NvdW50OwotICAgICAgICBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoZW5hYmxlZFRyYWNr
Q291bnQpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgYmV0d2Vl
biBsb2FkIGVycm9ycyBhbmQgZGVjb2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4K
LSAgICAgICAgaWYgKCFlbmFibGVkVHJhY2tDb3VudCkKKyAgICBpZiAobG9hZFN0YXRlID49IFFU
TW92aWVMb2FkU3RhdGVMb2FkZWQgJiYgbV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSAmJiAhbV9wbGF5ZXItPmluTWVkaWFEb2N1bWVudCgpKSB7CisgICAgICAgIGRpc2Fi
bGVVbnN1cHBvcnRlZFRyYWNrcygpOworICAgICAgICBpZiAoIW1fZW5hYmxlZFRyYWNrQ291bnQp
CiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9hZFN0YXRlRXJyb3I7CiAgICAgfQog
Ci0gICAgLy8gIkxvYWRlZCIgaXMgcmVzZXJ2ZWQgZm9yIGZ1bGx5IGJ1ZmZlcmVkIG1vdmllcywg
bmV2ZXIgdGhlIGNhc2Ugd2hlbiBzdHJlYW1pbmcKICAgICBpZiAobG9hZFN0YXRlID49IFFUTW92
aWVMb2FkU3RhdGVDb21wbGV0ZSAmJiAhbV9pc1N0cmVhbWluZykgewotICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkKQotICAgICAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgIC8vICJMb2FkZWQiIGlzIHJlc2VydmVk
IGZvciBmdWxseSBidWZmZXJlZCBtb3ZpZXMsIG5ldmVyIHRoZSBjYXNlIHdoZW4gc3RyZWFtaW5n
CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAg
bV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgIH0gZWxzZSBp
ZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVQbGF5dGhyb3VnaE9LKSB7Ci0gICAgICAg
IGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFz
ZWVraW5nKCkpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2Fk
ZWRGaXJzdEZyYW1lOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxh
eVRocm91Z2g7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdo
RGF0YTsKICAgICB9IGVsc2UgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlUGxheWFi
bGUpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZEZp
cnN0RnJhbWUgJiYgIXNlZWtpbmcoKSkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWU7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0
IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBzdHJlYW1pbmcgY2FzZSwgPHJkYXI6Ly9wcm9ibGVtLzU2
OTM5Njc+Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9h
ZGVkKCkgPyBNZWRpYVBsYXllcjo6Q2FuUGxheSA6IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFi
bGU7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVk
KCkgPyBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGEgOiBNZWRpYVBsYXllcjo6SGF2ZUN1cnJl
bnREYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2Fk
ZWQpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1l
dGFEYXRhKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVk
TWV0YURhdGE7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFp
bGFibGU7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7
CiAgICAgfSBlbHNlIGlmIChsb2FkU3RhdGUgPiBRVE1vdmllTG9hZFN0YXRlRXJyb3IpIHsKLSAg
ICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRpbmcpCi0gICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwotICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOyAgICAgICAgCisgICAgICAg
IG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgICAgICAgIAogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7IAorICAgICAgICBm
bG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7CisKKyAgICAgICAgaWYgKCFsb2FkZWQpCisg
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisKKyAg
ICAgICAgaWYgKCFtX2VuYWJsZWRUcmFja0NvdW50KQorICAgICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3I7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9hZC9uZXR3b3Jr
IGVycm9ycyBhbmQgZGVjb2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4KKyAgICAg
ICAgICAgIGlmIChsb2FkZWQgPiAwKQorICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChzZWVraW5nKCkpCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpEYXRhVW5hdmFpbGFibGU7Ci0gICAgCisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKwogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGRO
ZXR3b3JrU3RhdGUpCiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAg
ICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBvbGRSZWFkeVN0YXRlKQogICAgICAgICBtX3BsYXllci0+
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKIAotICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRT
dGF0ZUxvYWRlZCAmJiBvbGROZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURh
dGEgJiYgbV9wbGF5ZXItPnZpc2libGUoKSkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVM
b2FkU3RhdGVMb2FkZWQgJiYgb2xkUmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRh
dGEgJiYgbV9wbGF5ZXItPnZpc2libGUoKSkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygp
OworCisgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkKSB7CisgICAg
ICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgICAgIGlmIChkdXIgIT0gbV9kdXJhdGlv
bikgeworICAgICAgICAgICAgaWYgKG1fZHVyYXRpb24gIT0gLTEuMGYpCisgICAgICAgICAgICAg
ICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOworICAgICAgICAgICAgbV9kdXJhdGlvbiA9
IGR1cjsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Omxv
YWRTdGF0ZUNoYW5nZWQoKQpAQCAtNzE1LDEwICs3MDIsMTIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OmxvYWRTdGF0ZUNoYW5nZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJhdGVDaGFu
Z2VkKCkKIHsKICAgICB1cGRhdGVTdGF0ZXMoKTsKKyAgICBtX3BsYXllci0+cmF0ZUNoYW5nZWQo
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNpemVDaGFuZ2VkKCkKIHsKKyAgICBt
X3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnRp
bWVDaGFuZ2VkKCkKQEAgLTcyOSw3ICs3MTgsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
dGltZUNoYW5nZWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIHsKLSAg
ICBtX2VuZFBvaW50VGltZXIuc3RvcCgpOwogICAgIG1fc3RhcnRlZFBsYXlpbmcgPSBmYWxzZTsK
ICNpZiBEUkFXX0ZSQU1FX1JBVEUKICAgICBtX3RpbWVTdG9wcGVkUGxheWluZyA9IFtOU0RhdGUg
dGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKQEAgLTc2MSw3ICs3NDksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sCiAgICAgaWYgKG1fdmlzaWJsZSAh
PSBiKSB7CiAgICAgICAgIG1fdmlzaWJsZSA9IGI7CiAgICAgICAgIGlmIChiKSB7Ci0gICAgICAg
ICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQor
ICAgICAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRh
KQogICAgICAgICAgICAgICAgIHNldFVwVmlkZW9SZW5kZXJpbmcoKTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CkBAIC05MDUsMTAgKzg5Mywx
MCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAg
ICAgCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKHVu
c2lnbmVkJiBlbmFibGVkVHJhY2tDb3VudCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNh
YmxlVW5zdXBwb3J0ZWRUcmFja3MoKQogewogICAgIGlmICghbV9xdE1vdmllKSB7Ci0gICAgICAg
IGVuYWJsZWRUcmFja0NvdW50ID0gMDsKKyAgICAgICAgbV9lbmFibGVkVHJhY2tDb3VudCA9IDA7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC05MjcsNyArOTE1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OmRpc2FibGVVbnN1cHBvcgogICAgIE5TQXJyYXkgKnRyYWNrcyA9
IFttX3F0TW92aWUuZ2V0KCkgdHJhY2tzXTsKICAgICAKICAgICB1bnNpZ25lZCB0cmFja0NvdW50
ID0gW3RyYWNrcyBjb3VudF07Ci0gICAgZW5hYmxlZFRyYWNrQ291bnQgPSB0cmFja0NvdW50Owor
ICAgIG1fZW5hYmxlZFRyYWNrQ291bnQgPSB0cmFja0NvdW50OwogICAgIGZvciAodW5zaWduZWQg
dHJhY2tJbmRleCA9IDA7IHRyYWNrSW5kZXggPCB0cmFja0NvdW50OyB0cmFja0luZGV4KyspIHsK
ICAgICAgICAgLy8gR3JhYiB0aGUgdHJhY2sgYXQgdGhlIGN1cnJlbnQgaW5kZXguIElmIHRoZXJl
IGlzbid0IG9uZSB0aGVyZSwgdGhlbgogICAgICAgICAvLyB3ZSBjYW4gbW92ZSBvbnRvIHRoZSBu
ZXh0IG9uZS4KQEAgLTk1NSw3ICs5NDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlz
YWJsZVVuc3VwcG9yCiAgICAgICAgIGlmICghYWxsb3dlZFRyYWNrVHlwZXMtPmNvbnRhaW5zKG1l
ZGlhVHlwZSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgdHJhY2sgdHlwZSBpcyBub3QgYWxs
b3dlZCwgdGhlbiB3ZSBuZWVkIHRvIGRpc2FibGUgaXQuCiAgICAgICAgICAgICBbdHJhY2sgc2V0
RW5hYmxlZDpOT107Ci0gICAgICAgICAgICAtLWVuYWJsZWRUcmFja0NvdW50OworICAgICAgICAg
ICAgLS1tX2VuYWJsZWRUcmFja0NvdW50OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBEaXNhYmxlIGNoYXB0ZXIgdHJhY2tzLiBUaGVzZSBhcmUgbW9zdCBsaWtlbHkgdG8gbGVhZCB0
byB0cm91YmxlLCBhcwpAQCAtOTg3LDcgKzk3NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
OjpkaXNhYmxlVW5zdXBwb3IKICAgICAgICAgCiAgICAgICAgIC8vIERpc2FibGUgdGhlIGV2aWws
IGV2aWwgdHJhY2suCiAgICAgICAgIFtjaGFwdGVyVHJhY2sgc2V0RW5hYmxlZDpOT107Ci0gICAg
ICAgIC0tZW5hYmxlZFRyYWNrQ291bnQ7CisgICAgICAgIC0tbV9lbmFibGVkVHJhY2tDb3VudDsK
ICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5
ZXJQcml2YXRlUGhvbm9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBob25vbi5jcHAJKHJldmlzaW9uIDQxNjU4KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIp
CiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJs
ZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBt
X21lZGlhT2JqZWN0KG5ldyBNZWRpYU9iamVjdCgpKQogICAgICwgbV92aWRlb1dpZGdldChuZXcg
VmlkZW9XaWRnZXQoMCkpCiAgICAgLCBtX2F1ZGlvT3V0cHV0KG5ldyBBdWRpb091dHB1dCgpKQpA
QCAtMTY5LDggKzE2OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0
cmkKICAgICB9CiAKICAgICAvLyBBbmQgd2UgZG9uJ3QgaGF2ZSBhbnkgZGF0YSB5ZXQKLSAgICBp
ZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAo
bV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykgeworICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5y
ZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlOjpzZWVraW5nKCkgY29uc3QKIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQ
bGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQorICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhKQogICAgICAgICByZXR1cm4gMC4wZjsKIAogICAgIGZsb2F0IGR1cmF0
aW9uID0gbV9tZWRpYU9iamVjdC0+dG90YWxUaW1lKCkgLyAxMDAwLjBmOwpAQCAtMzI5LDE4ICsz
MjksMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgUGhv
bm9uOjpTdGF0ZSBwaG9ub25TdGF0ZSA9IG1fbWVkaWFPYmplY3QtPnN0YXRlKCk7CiAKICAgICBp
ZiAocGhvbm9uU3RhdGUgPT0gUGhvbm9uOjpTdG9wcGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKG9s
ZE5ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkgewotICAgICAgICAg
ICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGE7Ci0gICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAg
ICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSkgeworICAgICAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsgLy8gRklYTUU6IHNo
b3VsZCB0aGlzIGJlIE1lZGlhUGxheWVyOjpJZGxlPworICAgICAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsKICAgICAgICAgICAgIG1fbWVkaWFPYmplY3Qt
PnBhdXNlKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHBob25vblN0YXRlID09IFBob25v
bjo6UGF1c2VkU3RhdGUpIHsKICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TG9hZGVkOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91
Z2g7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsK
ICAgICB9IGVsc2UgaWYgKHBob25vblN0YXRlID09IFBob25vbjo6RXJyb3JTdGF0ZSkgewogICAg
ICAgICAgaWYgKCFtX21lZGlhT2JqZWN0IHx8IG1fbWVkaWFPYmplY3QtPmVycm9yVHlwZSgpID09
IFBob25vbjo6RmF0YWxFcnJvcikgewotICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQ
bGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICAgICAgICAgICAvLyBGSVhNRTogaXMgaXQgcG9z
c2lsZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZGlmZmVyZW50IHR5cGVzIG9mIGVycm9ycwor
ICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcjsK
KyAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAg
ICAgICAgICAgICAgY2FuY2VsTG9hZCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICBtX21lZGlhT2JqZWN0LT5wYXVzZSgpOwpAQCAtMzQ4LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIH0KIAogICAgIGlmIChzZWVraW5nKCkp
Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7Cisg
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKIAogICAgIGlm
IChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsKICAgICAgICAgY29uc3QgUU1l
dGFPYmplY3QqIG1ldGFPYmogPSB0aGlzLT5tZXRhT2JqZWN0KCk7CkBAIC0zOTksNyArNDAwLDcg
QEAgSW50U2l6ZSBNZWRpYVBsYXllclByaXZhdGU6Om5hdHVyYWxTaXplKAogICAgICAgICByZXR1
cm4gSW50U2l6ZSgpOwogICAgIH0KIAotICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxh
eWVyOjpMb2FkZWRNZXRhRGF0YSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZVBob25vbjo6bmF0dXJhbFNpemUoKSAtPiAlZHglZCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwKTsKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lV2luLmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MiwxNiArNjIsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJlZ2lz
dGVyTWVkaWFFbgogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywg
c3VwcG9ydHNUeXBlKTsKIH0KIAotc3RhdGljIGNvbnN0IGRvdWJsZSBlbmRQb2ludFRpbWVySW50
ZXJ2YWwgPSAwLjAyMDsKLQogTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUo
TWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc2Vl
a1RvKC0xKQogICAgICwgbV9lbmRUaW1lKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHko
KSkKICAgICAsIG1fc2Vla1RpbWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6OnNlZWtUaW1l
ckZpcmVkKQotICAgICwgbV9lbmRQb2ludFRpbWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6
OmVuZFBvaW50VGltZXJGaXJlZCkKICAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpF
bXB0eSkKLSAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlKQor
ICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKKyAgICAsIG1fZW5h
YmxlZFRyYWNrQ291bnQoMCkKICAgICAsIG1fc3RhcnRlZFBsYXlpbmcoZmFsc2UpCiAgICAgLCBt
X2lzU3RyZWFtaW5nKGZhbHNlKQogI2lmIERSQVdfRlJBTUVfUkFURQpAQCAtODksNyArODcsOCBA
QCBNZWRpYVBsYXllclByaXZhdGU6On5NZWRpYVBsYXllclByaXZhdGUoCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIVFUTW92aWVX
aW46OmluaXRpYWxpemVRdWlja1RpbWUoKSkgewotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkRmFpbGVkOworICAgICAgICAvLyBGSVhNRTogaXMgdGhpcyB0aGUgcmln
aHQgZXJyb3IgdG8gcmV0dXJuPworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpEZWNvZGVFcnJvcjsgCiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05OCwxMiArOTcsMTEgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OmxvYWQoY29uc3QgU3RyaQogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdl
ZCgpOwogICAgIH0KLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpEYXRhVW5h
dmFpbGFibGUpIHsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2
YWlsYWJsZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpIYXZlTm90aGlu
ZykgeworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAg
ICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KICAgICBjYW5jZWxT
ZWVrKCk7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKIAogICAgIG1fcXRNb3ZpZS5zZXQo
bmV3IFFUTW92aWVXaW4odGhpcykpOwogICAgIG1fcXRNb3ZpZS0+bG9hZCh1cmwuY2hhcmFjdGVy
cygpLCB1cmwubGVuZ3RoKCkpOwpAQCAtMTIxLDcgKzExOSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpwbGF5KCkKICNlbmRpZgogCiAgICAgbV9xdE1vdmllLT5wbGF5KCk7Ci0gICAgc3Rh
cnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OnBhdXNlKCkKQEAgLTEzMyw3ICsxMzAsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1
c2UoKQogICAgIG1fdGltZVN0b3BwZWRQbGF5aW5nID0gR2V0VGlja0NvdW50KCk7CiAjZW5kaWYK
ICAgICBtX3F0TW92aWUtPnBhdXNlKCk7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKIH0K
IAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbigpIGNvbnN0CkBAIC0yMDksMjIg
KzIwNSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCgKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRFbmRUaW1lKGZsb2F0IHRpbWUpCiB7CiAgICAgbV9lbmRU
aW1lID0gdGltZTsKLSAgICBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgpOwotfQotCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6c3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKQotewotICAg
IGlmIChtX2VuZFRpbWUgPCBkdXJhdGlvbigpICYmIG1fc3RhcnRlZFBsYXlpbmcgJiYgIW1fZW5k
UG9pbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2VuZFBvaW50VGltZXIuc3RhcnRSZXBl
YXRpbmcoZW5kUG9pbnRUaW1lckludGVydmFsKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZh
dGU6OmVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+KikKLXsKLSAg
ICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBpZiAodGltZSA+PSBtX2VuZFRpbWUp
IHsKLSAgICAgICAgcGF1c2UoKTsKLSAgICAgICAgZGlkRW5kKCk7Ci0gICAgfQogfQogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2VkKCkgY29uc3QKQEAgLTM0MSw0MCArMzIxLDQ2IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogCiAgICAgaWYgKGxvYWRT
dGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkICYmIG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQ
bGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmICFtX3BsYXllci0+aW5NZWRpYURvY3VtZW50KCkpIHsK
ICAgICAgICAgdW5zaWduZWQgZW5hYmxlZFRyYWNrQ291bnQ7Ci0gICAgICAgIG1fcXRNb3ZpZS0+
ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKGVuYWJsZWRUcmFja0NvdW50KTsKLSAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9hZCBlcnJvcnMgYW5kIGRl
Y29kZSBlcnJvcnMgPHJkYXI6Ly9wcm9ibGVtLzU2MDU2OTI+Ci0gICAgICAgIGlmICghZW5hYmxl
ZFRyYWNrQ291bnQpCisgICAgICAgIG1fcXRNb3ZpZS0+ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tz
KCZtX2VuYWJsZWRUcmFja0NvdW50KTsKKyAgICAgICAgaWYgKCFtX2VuYWJsZWRUcmFja0NvdW50
KQogICAgICAgICAgICAgbG9hZFN0YXRlID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwogICAgIH0K
IAogICAgIC8vICJMb2FkZWQiIGlzIHJlc2VydmVkIGZvciBmdWxseSBidWZmZXJlZCBtb3ZpZXMs
IG5ldmVyIHRoZSBjYXNlIHdoZW4gc3RyZWFtaW5nCiAgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1v
dmllTG9hZFN0YXRlQ29tcGxldGUgJiYgIW1faXNTdHJlYW1pbmcpIHsKLSAgICAgICAgaWYgKG1f
bmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZCkKLSAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkNhblBsYXlUaHJvdWdoOworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpMb2FkZWQ7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZl
RW5vdWdoRGF0YTsKICAgICB9IGVsc2UgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRl
UGxheXRocm91Z2hPSykgewotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXll
cjo6TG9hZGVkRmlyc3RGcmFtZSAmJiAhc2Vla2luZygpKQotICAgICAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkRmlyc3RGcmFtZTsKLSAgICAgICAgbV9yZWFkeVN0
YXRlID0gTWVkaWFQbGF5ZXI6OkNhblBsYXlUaHJvdWdoOworICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgfSBlbHNlIGlmIChsb2FkU3RhdGUg
Pj0gUVRNb3ZpZUxvYWRTdGF0ZVBsYXlhYmxlKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFzZWVraW5nKCkpCi0gICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lOwotICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBjdXJyZW50VGltZSgpIDwgbWF4VGltZUxvYWRlZCgpID8gTWVk
aWFQbGF5ZXI6OkNhblBsYXkgOiBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAg
ICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3Qgd29yayBjb3JyZWN0bHkgaW4gc3RyZWFtaW5nIGNh
c2UsIDxyZGFyOi8vcHJvYmxlbS81NjkzOTY3PgorICAgICAgICBtX3JlYWR5U3RhdGUgPSBjdXJy
ZW50VGltZSgpIDwgbWF4VGltZUxvYWRlZCgpID8gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRh
IDogTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0YTsKICAgICB9IGVsc2UgaWYgKGxvYWRTdGF0
ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0
YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOwotICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRlID4gUVRN
b3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlh
UGxheWVyOjpMb2FkaW5nKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6TG9hZGluZzsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2
YWlsYWJsZTsgICAgICAgIAorICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpM
b2FkaW5nOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7
ICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpMb2FkRmFpbGVkOwogICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0
YVVuYXZhaWxhYmxlOyAKKworICAgICAgICBmbG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7
CisgICAgICAgIGlmICghbG9hZGVkKQorICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQ
bGF5ZXI6OkhhdmVOb3RoaW5nOworCisgICAgICAgIGlmICghbV9lbmFibGVkVHJhY2tDb3VudCkK
KyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlmZmVyZW50
aWF0ZSBiZXR3ZWVuIGxvYWQvbmV0d29yayBlcnJvcnMgYW5kIGRlY29kZSBlcnJvcnMgPHJkYXI6
Ly9wcm9ibGVtLzU2MDU2OTI+CisgICAgICAgICAgICBpZiAobG9hZGVkID4gMCkKKyAgICAgICAg
ICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcjsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
SGF2ZU5vdGhpbmc7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoc2Vla2luZygpKQotICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAg
ICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgCiAgICAgaWYg
KG1fbmV0d29ya1N0YXRlICE9IG9sZE5ldHdvcmtTdGF0ZSkKICAgICAgICAgbV9wbGF5ZXItPm5l
dHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTM4NSw3ICszNzEsNiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmRpZEVu
ZCgpCiB7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKICAgICBtX3N0YXJ0ZWRQbGF5aW5n
ID0gZmFsc2U7CiAjaWYgRFJBV19GUkFNRV9SQVRFCiAgICAgbV90aW1lU3RvcHBlZFBsYXlpbmcg
PSBHZXRUaWNrQ291bnQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oCShyZXZp
c2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZVF1aWNrVGltZVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw5ICs5Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkb1NlZWsoKTsKICAgICB2b2lkIGNhbmNlbFNlZWsoKTsKICAgICB2
b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4qKTsKLSAgICB2b2lk
IGVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7CiAgICAgZmxv
YXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwotICAgIHZvaWQgc3RhcnRFbmRQb2ludFRpbWVySWZO
ZWVkZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBtb3ZpZUVuZGVkKFFUTW92aWVXaW4qKTsKICAg
ICB2aXJ0dWFsIHZvaWQgbW92aWVMb2FkU3RhdGVDaGFuZ2VkKFFUTW92aWVXaW4qKTsKQEAgLTEx
Nyw5ICsxMTUsOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2Vla1RvOwogICAgIGZsb2F0IG1f
ZW5kVGltZTsKICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG1fc2Vla1RpbWVyOwotICAg
IFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9lbmRQb2ludFRpbWVyOwogICAgIE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIHVuc2lnbmVkIG1fZW5hYmxlZFRyYWNrQ291bnQ7CiAg
ICAgYm9vbCBtX3N0YXJ0ZWRQbGF5aW5nOwogICAgIGJvb2wgbV9pc1N0cmVhbWluZzsKICNpZiBE
UkFXX0ZSQU1FX1JBVEUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjUsOCArMTY1LDcgQEAgTWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udAogdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnRvZ2dsZVBsYXlTdGF0ZShl
Yyk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtMTkwLDggKzE4OSw3IEBAIHZvaWQgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmEKICAgICAgICAgICAgIG1fY2FwdHVyaW5n
ID0gdHJ1ZTsKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5n
TW91c2VFdmVudHNOb2RlKHRoaXMpOwogICAgICAgICB9Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZShlYyk7CisgICAgICAgIG1fbWVkaWFF
bGVtZW50LT5wYXVzZSgpOwogICAgICAgICBtX3NlZWtUaW1lci5zdGFydFJlcGVhdGluZyhjU2Vl
a1JlcGVhdERlbGF5KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
fSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpIHsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQxNjkzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMDktMDMtMTMgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQ1ODgKKyAgICAgICAgQnVnIDI0NTg4OiBVcGRhdGUgbWVkaWEgZWxlbWVudCBpbXBs
ZW1lbnRhdGlvbiB0byBjdXJyZW50IHNwZWMKKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnN0
YW50cy1leHBlY3RlZC50eHQ6IFRlc3QgYWxsIG1lZGlhIGNvbnN0YW50cy4KKyAgICAgICAgKiBt
ZWRpYS9tZWRpYS1jb25zdGFudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvcmVtb3Zl
LWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGZvciBzcGVjIGNoYW5nZXMuCisg
ICAgICAgICogbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9hZC5odG1sOiBEaXR0by4K
KyAgICAgICAgKiBtZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC5odG1sOiBEaXR0by4KKyAgICAg
ICAgKiBtZWRpYS91bnN1cHBvcnRlZC1ydHNwLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAg
ICogbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRp
YS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlk
ZW8tZXJyb3ItYWJvcnQtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1lcnJvci1kb2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWw6IERpdHRvLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAg
ICogbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbDogRGl0dG8uCisgICAgICAgICog
bWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAg
ICogbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWxvb3AtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1sb29wLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2
ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBhdXNlLWVt
cHR5LWV2ZW50cy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1wbGF5LWVtcHR5
LWV2ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBsYXkt
ZW1wdHktZXZlbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBsYXktcGF1
c2UtZXZlbnRzLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tcGxh
eS1wYXVzZS1ldmVudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tcGxheS1w
YXVzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1zZWVrLW5vLXNyYy1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBUZXN0IHRoYXQgc2Vla2luZyAK
KyAgICAgICAgd2hlbmUgdGhlcmUgaXMgbm8gJ3NyYycgYXR0cmlidXRlIHRocm93cyBhbiBJTlZB
TElEX1NUQVRFX0VSUiBleGNlcHRpb24uCisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vlay1uby1z
cmMtZXhjZXB0aW9uLmh0bWw6IAorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQt
cGxheWluZy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWst
cGFzdC1lbmQtcGxheWluZy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zZWVr
aW5nLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vla2luZy5o
dG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1leHBlY3Rl
ZC50eHQ6IFRlc3QgdGhhdCBhZGRpbmcgYSAnc3JjJyAKKyAgICAgICAgYXR0cmlidXRlIGRvZXMg
bm90aGluZyB3aGVuIGEgPHNvdXJjZT4gZWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIGNob3Nlbi4K
KyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy5odG1sOiAKKyAgICAgICAgKiBt
ZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVk
aWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1z
cmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0OiBUZXN0IHRoYXQgcmVtb3ZpbmcgaW52YWxp
ZCAKKyAgICAgICAgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJzIDxzb3VyY2U+IGVsZW1lbnRzIGxv
YWRpbmcuCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLmh0bWw6IAor
ICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBlY3RlZC50eHQ6IFRlc3Qg
dGhhdCBhIDxzb3VyY2U+IGVsZW1lbnQgCisgICAgICAgIGlzIG5vdCB1c2VkIHdoZW4gYSBib2d1
cyAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zcmMt
cGx1cy1zb3VyY2UuaHRtbDogCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS1leHBl
Y3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1yZW1vdmUuaHRtbDog
RGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5qczogCisgICAgICAgIChmaW5kTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6CisgICAgICAgICh3YWl0Rm9yRXZl
bnQpOgorICAgICAgICAoZmFpbFRlc3QpOgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRpbWV1cGRh
dGUtd2hpbGUtcGxheWluZy1leHBlY3RlZC50eHQ6IFRlc3QgJ3RpbWV1cGRhdGUnIGV2ZW50cwor
ICAgICAgICBhcmUgcG9zdGVkIGFuIGVsZW1lbnQgaXMgcGxheWluZyBidXQgbm90IHdoaWxlIHBh
dXNlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRt
bDoKKwogMjAwOS0wMy0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtY29uc3RhbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb25zdGFudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtY29uc3RhbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMCBAQAorVGVzdCBIVE1MTWVkaWFFbGVtZW50IGFuZCBNZWRpYUVycm9yIGNvbnN0YW50
cy4KKworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSA9PSAnMCcpIE9L
CitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0lETEUgPT0gJzEnKSBPSworRVhQ
RUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FESU5HID09ICcyJykgT0sKK0VYUEVD
VEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BREVEID09ICczJykgT0sKK0VYUEVDVEVE
IChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFID09ICc0JykgT0sKKworRVhQRUNU
RUQgKEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9OT1RISU5HID09ICcwJykgT0sKK0VYUEVDVEVEIChI
VE1MTWVkaWFFbGVtZW50LkhBVkVfTUVUQURBVEEgPT0gJzEnKSBPSworRVhQRUNURUQgKEhUTUxN
ZWRpYUVsZW1lbnQuSEFWRV9DVVJSRU5UX0RBVEEgPT0gJzInKSBPSworRVhQRUNURUQgKEhUTUxN
ZWRpYUVsZW1lbnQuSEFWRV9GVVRVUkVfREFUQSA9PSAnMycpIE9LCitFWFBFQ1RFRCAoSFRNTE1l
ZGlhRWxlbWVudC5IQVZFX0VOT1VHSF9EQVRBID09ICc0JykgT0sKKworRVhQRUNURUQgKE1lZGlh
RXJyb3IuTUVESUFfRVJSX0FCT1JURUQgPT0gJzEnKSBPSworRVhQRUNURUQgKE1lZGlhRXJyb3Iu
TUVESUFfRVJSX05FVFdPUksgPT0gJzInKSBPSworRVhQRUNURUQgKE1lZGlhRXJyb3IuTUVESUFf
RVJSX0RFQ09ERSA9PSAnMycpIE9LCitFWFBFQ1RFRCAoTWVkaWFFcnJvci5NRURJQV9FUlJfTk9O
RV9TVVBQT1JURUQgPT0gJzQnKSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29uc3RhbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtY29uc3RhbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jb25zdGFudHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorCis8
cD5UZXN0IEhUTUxNZWRpYUVsZW1lbnQgYW5kIE1lZGlhRXJyb3IgY29uc3RhbnRzLjwvcD4KKwor
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworPHNjcmlwdD4KKyAgICAKKyAg
ICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSIsIDApOworICAg
IHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0lETEUiLCAxKTsKKyAgICB0
ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FESU5HIiwgMik7CisgICAg
dGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BREVEIiwgMyk7CisgICAg
dGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFIiwgNCk7Cisg
ICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVu
dC5IQVZFX05PVEhJTkciLCAwKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQu
SEFWRV9NRVRBREFUQSIsIDEpOworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5I
QVZFX0NVUlJFTlRfREFUQSIsIDIpOworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVu
dC5IQVZFX0ZVVFVSRV9EQVRBIiwgMyk7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVt
ZW50LkhBVkVfRU5PVUdIX0RBVEEiLCA0KTsKKyAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAg
dGVzdEV4cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9BQk9SVEVEIiwgMSk7CisgICAgdGVz
dEV4cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9ORVRXT1JLIiwgMik7CisgICAgdGVzdEV4
cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9ERUNPREUiLCAzKTsKKyAgICB0ZXN0RXhwZWN0
ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEIiwgNCk7CisKKworICAgIGVu
ZFRlc3QoKTsKKzwvc2NyaXB0PgorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJv
bS1kb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
cmVtb3ZlLWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogVGVzdCB0aGF0IHJlbW92aW5nIGEgbWVkaWEgZWxl
bWVudCBmcm9tIHRoZSB0cmVlIHBhdXNlcyBwbGF5YmFjayBidXQgZG9lcyBub3QgdW5sb2FkIHRo
ZSBtZWRpYS4KIAogRVZFTlQobG9hZCkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0g
JzQnKSBPSworRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMycpIE9LCiBFWFBFQ1RF
RCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCiBSVU4oZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZCh2aWRlbykpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICc0JykgT0sKK0VY
UEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzMnKSBPSwogRVhQRUNURUQgKHZpZGVvLnBh
dXNlZCA9PSAndHJ1ZScpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS9yZW1vdmUtZnJvbS1kb2N1bWVudC1uby1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9hZC5odG1sCShyZXZpc2lvbiA0
MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LW5vLWxvYWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKICAgICBkaWRSZWNlaXZlTG9hZFN0
YXJ0RXZlbnQgPSBmYWxzZTsKICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2Fkc3RhcnQn
LCBmdW5jdGlvbigpIHsgZGlkUmVjZWl2ZUxvYWRTdGFydEV2ZW50ID0gdHJ1ZTsgfSk7CiAgICAg
dmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
bmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSk7CisgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkpOwog
ICAgIHJ1bigiZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh2aWRlbykiKTsKICAgICB0ZXN0RXhw
ZWN0ZWQoImRpZFJlY2VpdmVMb2FkU3RhcnRFdmVudCIsIGZhbHNlKTsKICAgICBlbmRUZXN0KCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50Lmh0bWwJKHJl
dmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNSBAQAotPHZpZGVvIGNvbnRyb2xzPjwv
dmlkZW8+Cis8dmlkZW8gY29udHJvbHMgYXV0b3BsYXk+PC92aWRlbz4KIDxwPlRlc3QgdGhhdCBy
ZW1vdmluZyBhIG1lZGlhIGVsZW1lbnQgZnJvbSB0aGUgdHJlZSBwYXVzZXMgcGxheWJhY2sgYnV0
IGRvZXMgbm90IHVubG9hZCB0aGUgbWVkaWEuPC9wPgogPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgd2FpdEZvckV2ZW50KCdsb2FkJywgZnVuY3Rpb24g
KCkgewogCi0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1l
ZGlhRWxlbWVudC5MT0FERUQpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtT
dGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FERUQpOwogICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKIAogICAgICAgICBydW4oImRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQodmlkZW8pIik7CiAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5u
ZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkxPQURFRCk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURF
RCk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CiAKICAgICAg
ICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CkBAIC0xNyw1ICsxNyw0IEBACiAgICAgfSApOwog
CiB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci12aWRlby5wbGF5KCk7CiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVk
LXJ0c3AtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQCBUZXN0IHRo
YXQgUXVpY2tUaW1lIGZpbGUgd2l0aCBSVFNQIFVSTCBnCiAKIEVWRU5UKGVycm9yKQogRVhQRUNU
RUQgKHZpZGVvLmVycm9yICE9ICdudWxsJykgT0sKLUVYUEVDVEVEICh2aWRlby5lcnJvci5jb2Rl
ID09ICcyJykgT0sKK0VYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICc0JykgT0sKK0VYUEVD
VEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AuaHRtbAkocmV2aXNpb24gNDE2NTgpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTEgKzEsMTUgQEAKKwogPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisKIDxwPlRlc3Qg
dGhhdCBRdWlja1RpbWUgZmlsZSB3aXRoIFJUU1AgVVJMIGdlbmVyYXRlcyBhIGxvYWQgZXJyb3Iu
PHA+CisKIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0Pgotdmlk
ZW8uc3JjID0gInJ0c3A6Ly9hMjA0Ny52MTQxMWIuYzE0MTEuZy52cS5ha2FtYWlzdHJlYW0ubmV0
LzUvMjA0Ny8xNDExLzJfaDI2NF82NTAvMWExYTFhZTQ1NGM0MzA5NTAwNjVkZTRjYmIyZjk0YzIy
Njk1MGM3YWU2NTViNjFhNDhhOTE0NzVlMjQzYWNkYTNkYWMxOTQ4NzlhZGRlMGYvd3dkY18yMDA2
XzJfNjUwLm1vdiI7Ci13YWl0Rm9yRXZlbnQoImVycm9yIiwgZnVuY3Rpb24gKCkgewotICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8uZXJyb3IiLCBudWxsLCAiIT0iKTsKLSAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9ORVRXT1JLKTsKLSAgICBl
bmRUZXN0KCk7Ci19KTsKKyAgICB2aWRlby5zcmMgPSAicnRzcDovL2EyMDQ3LnYxNDExYi5jMTQx
MS5nLnZxLmFrYW1haXN0cmVhbS5uZXQvNS8yMDQ3LzE0MTEvMl9oMjY0XzY1MC8xYTFhMWFlNDU0
YzQzMDk1MDA2NWRlNGNiYjJmOTRjMjI2OTUwYzdhZTY1NWI2MWE0OGE5MTQ3NWUyNDNhY2RhM2Rh
YzE5NDg3OWFkZGUwZi93d2RjXzIwMDZfMl82NTAubW92IjsKKyAgICB3YWl0Rm9yRXZlbnQoImVy
cm9yIiwgZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yIiwg
bnVsbCwgIiE9Iik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1l
ZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNF
KTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNldC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUt
c2V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDExIEBACitUZXN0IHRo
YXQgc2V0dGluZyBjdXJyZW50VGltZSBjaGFuZ2VzIHRoZSB0aW1lLCBhbmQgdGhhdCAnZW5kZWQn
IGV2ZW50IGlzIGZpcmVkIGluIGEgcmVhc29uYWJsZSBhbW91bnQgb2YgdGltZQorCiBFVkVOVChs
b2FkKQotRVZFTlQodGltZXVwZGF0ZSkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAn
MCcpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuMikKK0VY
UEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDIpID09ICc4LjIwJykgT0sKK1JVTih2
aWRlby5wbGF5KCkpCisKIEVWRU5UKGVuZGVkKQogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWwJKHJldmlzaW9uIDQxNjU4
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTUgKzEsMjcgQEAKLTx2aWRlbyBzcmM9Y29udGVudC90ZXN0Lm1wNCBj
b250cm9scz48L3ZpZGVvPgotPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci13YWl0Rm9yRXZlbnQoJ2xvYWQnLCAgCi1mdW5jdGlvbiAoKSB7IAotICAgIHZpZGVv
LmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjI7IAotICAgIHZpZGVvLnBsYXkoKTsg
Ci0gICAgd2FpdEZvckV2ZW50KCd0aW1ldXBkYXRlJywgZnVuY3Rpb24gKCkgeworPGh0bWw+Cis8
Ym9keT4KKworICAgIDx2aWRlbyBzcmM9Y29udGVudC90ZXN0Lm1wNCBjb250cm9scz48L3ZpZGVv
PgorICAgIAorICAgIDxwPlRlc3QgdGhhdCBzZXR0aW5nIGN1cnJlbnRUaW1lIGNoYW5nZXMgdGhl
IHRpbWUsIGFuZCB0aGF0ICdlbmRlZCcgZXZlbnQgaXMgZmlyZWQgaW4gYSByZWFzb25hYmxlIGFt
b3VudCBvZiB0aW1lPC9wPgorICAgIAorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3YWl0Rm9yRXZlbnQoJ2xvYWQnLCAgCisgICAgZnVu
Y3Rpb24gKCkgeyAKKyAgICAgICAgd2FpdEZvckV2ZW50QW5kRW5kKCdlbmRlZCcpOworICAgIAor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgMCk7CisgICAgICAgIHJ1
bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuMiIpOyAKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDIpIiwgKHZpZGVvLmR1cmF0
aW9uIC0gMC4yKS50b0ZpeGVkKDIpKTsKKyAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsgCisg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgCiAgICAgICAgIHZhciB0aW1lb3V0ID0gODAw
OwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9nUmVzdWx0KCJObyB0aW1ldXBk
YXRlIGV2ZW50IGluICIgKyB0aW1lb3V0LzEwMDAgICsgInNlY29uZHMiLCBmYWxzZSk7IH0sIHRp
bWVvdXQpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9nUmVzdWx0KCJObyAn
ZW5kZWQnIGV2ZW50IGluICIgKyB0aW1lb3V0LzEwMDAgICsgInNlY29uZHMiLCBmYWxzZSk7IH0s
IHRpbWVvdXQpOwogICAgIH0pOwotICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnZW5kZWQnKTsKLX0p
OwotdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotPC9zY3JpcHQ+CisgICAgdmlkZW8u
c3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOworICAgIDwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1hYm9ydC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJvcnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVy
cm9yLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDUgQEAKIEVY
UEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCiBFVkVOVChsb2Fkc3RhcnQpCi1FVkVO
VChhYm9ydCkKLUVYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICcxJykgT0sKLUVWRU5UKGxv
YWRzdGFydCkKIEVWRU5UKGxvYWQpCiBFWFBFQ1RFRCAodmlkZW8uZXJyb3IgPT0gJ251bGwnKSBP
SwogRU5EIE9GIFRFU1QKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMt
bm90LWV4aXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsMTMgQEAKIFRlc3QgdGhhdCB0aGUgbWVkaWEg
ZWxlbWVudCBpcyBpbiBjb3JyZWN0IHN0YXRlIGFmdGVyIGxvYWQgZmFpbHMuCiAKKwogRVhQRUNU
RUQgKHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKLUVWRU5UKGVtcHRpZWQpCi1FWFBFQ1RFRCAo
dmlkZW8uZXJyb3IuY29kZSA9PSAnMicpIE9LCi1FWFBFQ1RFRCAodmlkZW8uZHVyYXRpb24gPT0g
JzAnKSBPSworCitFVkVOVChlcnJvcikKK0VYUEVDVEVEICh2aWRlby5lcnJvciAhPSAnbnVsbCcp
IE9LCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnNCcpIE9LCitFWFBFQ1RFRCAodmlk
ZW8ubmV0d29ya1N0YXRlID09ICc0JykgT0sKK0VYUEVDVEVEIChpc05hTih2aWRlby5kdXJhdGlv
bikgPT0gJ3RydWUnKSBPSwogRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcwJykgT0sK
IEVYUEVDVEVEICh2aWRlby5idWZmZXJlZC5sZW5ndGggPT0gJzAnKSBPSwogRVhQRUNURUQgKHZp
ZGVvLnNlZWthYmxlLmxlbmd0aCA9PSAnMCcpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWwJKHJldmlzaW9uIDQxNjU4KQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMiwxNiArMiwyNiBAQAogPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CiA8
c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KLXRlc3RFeHBlY3Rl
ZCgidmlkZW8uZXJyb3IiLCBudWxsKTsKLXdhaXRGb3JFdmVudEFuZFRlc3QoImxvYWQiLCAiZmFs
c2UiKTsKLXdhaXRGb3JFdmVudCgiZW1wdGllZCIsIGZ1bmN0aW9uICgpIHsKLSAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9ORVRXT1JLKTsK
LSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmR1cmF0aW9uIiwgMCk7Ci0gICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5jdXJyZW50VGltZSIsIDApOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uYnVmZmVy
ZWQubGVuZ3RoIiwgMCk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5zZWVrYWJsZS5sZW5ndGgi
LCAwKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmJ1ZmZlcmVkLmxlbmd0aCIsIDApOwotICAg
IGVuZFRlc3QoKTsKLX0pOwotdmlkZW8uc3JjID0gImNvbnRlbnQvZG9lcy1ub3QtZXhpc3QubXBl
ZyI7CisKKyAgICBjb25zb2xlV3JpdGUoIiIpOworICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJy
b3IiLCBudWxsKTsKKworICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoImxvYWQiLCAiZmFsc2UiKTsK
KyAgICAKKyAgICB3YWl0Rm9yRXZlbnQoImVycm9yIiwgZnVuY3Rpb24gKCkgeworICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yIiwgbnVsbCwgIiE9Iik7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9S
VEVEKTsKKyAgICAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBI
VE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFKTsKKyAgICAKKyAgICAgICAgdGVzdEV4
cGVjdGVkKCJpc05hTih2aWRlby5kdXJhdGlvbikiLCB0cnVlKTsKKyAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDApOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LmJ1ZmZlcmVkLmxlbmd0aCIsIDApOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnNlZWth
YmxlLmxlbmd0aCIsIDApOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmJ1ZmZlcmVkLmxl
bmd0aCIsIDApOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgCisgICAgdmlkZW8u
c3JjID0gImNvbnRlbnQvZG9lcy1ub3QtZXhpc3QubXBlZyI7CisgICAgY29uc29sZVdyaXRlKCIi
KTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3Jr
U3RhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWxvYWQtbmV0d29ya1N0YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTEgKzEsMTcgQEAKK1Rlc3QgdGhhdCBzZXR0aW5nIHNyYyB0byBhbiBp
bnZhbGlkIHVybCB0cmlnZ2VycyBsb2FkKCksIHdoaWNoIHNldHMgbmV0d29ya1N0YXRlIHRvIE5F
VFdPUktfTk9fU09VUkNFLiBTZXR0aW5nIHNyYyB0byBhIHZhbGlkIHVybCBzaG91bGQgdGhlbiB0
cmlnZ2VyIHRoZSBsb2FkaW5nIGV2ZW50cyBhbmQgZW5kIHVwIHdpdGggbmV0d29ya1N0YXRlID49
IE5FVFdPUktfTE9BRElORy4KKworCiBFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcw
JykgT0sKK1JVTih2aWRlby5zcmMgPSAnYm9ndXMvbW92aWUubXBnJykKIEVWRU5UKGxvYWRzdGFy
dCkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzEnKSBPSwotRVZFTlQobG9hZGVk
bWV0YWRhdGEpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcyJykgT0sKLUVWRU5U
KGxvYWRlZGZpcnN0ZnJhbWUpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICczJykg
T0sKLUVWRU5UKGxvYWQpCiBFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICc0JykgT0sK
KworUlVOKHZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JykKK0VWRU5UKGxvYWRzdGFydCkK
K0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkp
CitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPj0g
JzInKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9h
ZC1uZXR3b3JrU3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1sb2FkLW5ldHdvcmtTdGF0ZS5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTcgKzEsNDYgQEAKLTx2aWRlbyBjb250cm9scz48L3ZpZGVvPgotPHNjcmlwdCBzcmM9dmlkZW8t
dGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24gdGVzdE5ldHdvcmtTdGF0
ZShleHBlY3RlZCwgZW5kSXQpCi0gICAgewotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5l
dHdvcmtTdGF0ZSIsIGV4cGVjdGVkKTsKLSAgICAgICAgaWYgKGVuZEl0KQotICAgICAgICAgICAg
ZW5kVGVzdCgpOwotICAgIH0KKzxodG1sPgorPGJvZHk+CiAKLSAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFkpOwotICAgIHdhaXRGb3JF
dmVudCgibG9hZHN0YXJ0IiwgZnVuY3Rpb24gKCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRp
YUVsZW1lbnQuTE9BRElORyk7IH0gKTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRh
IiwgZnVuY3Rpb24gKCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTE9BREVE
X01FVEFEQVRBKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZmlyc3RmcmFtZSIsIGZ1
bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkxPQURFRF9GSVJT
VF9GUkFNRSk7IH0gKTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWQiLCBmdW5jdGlvbiAoKSB7IHRl
c3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5MT0FERUQsIHRydWUpOyB9ICk7Ci0gICAg
dmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotPC9zY3JpcHQ+CisgICAgPHZpZGVvIGNv
bnRyb2xzPjwvdmlkZW8+CisKKyAgICA8cD5UZXN0IHRoYXQgc2V0dGluZyBzcmMgdG8gYW4gaW52
YWxpZCB1cmwgdHJpZ2dlcnMgbG9hZCgpLCB3aGljaCBzZXRzIG5ldHdvcmtTdGF0ZQorICAgIHRv
IE5FVFdPUktfTk9fU09VUkNFLiBTZXR0aW5nIHNyYyB0byBhIHZhbGlkIHVybCBzaG91bGQgdGhl
biB0cmlnZ2VyIHRoZSBsb2FkaW5nCisgICAgZXZlbnRzIGFuZCBlbmQgdXAgd2l0aCBuZXR3b3Jr
U3RhdGUgPj0gTkVUV09SS19MT0FESU5HLgorICAgICA8L3A+CisgICAgCisgICAgPHNjcmlwdCBz
cmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biB0ZXN0TmV0d29ya1N0YXRlKGV4cGVjdGVkLCBlbmRpdCwgb3ApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgZXhwZWN0ZWQsIG9wKTsK
KyAgICAgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAg
ICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
KCJsb2FkZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgICAg
ICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCJwbGF5Iik7CisgICAgICAgIHdhaXRGb3JFdmVudEFuZEZh
aWwoInBsYXlpbmciKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIsIGZ1
bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9B
RElORywgdHJ1ZSwgJz49JyApOyB9ICk7CisgICAgCisgICAgICAgIGZ1bmN0aW9uIHNvbWVUaW1l
TGF0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRp
YUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UgKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Iik7CisKKyAgICAgICAgICAgIC8vIG5vdyBzZXQgYSB2YWxpZCB1cmwKKyAgICAgICAgICAgIHJ1
bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnIik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIC8vIGZpcnN0IHNldCB0aGUgc3JjIHRvIGEgYm9ndXMgdXJsLCBpdCBzaG91bGQg
YXR0ZW1wdCBhIGxvYWQKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgdGVzdE5l
dHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkpOworICAgICAgICBydW4o
InZpZGVvLnNyYyA9ICdib2d1cy9tb3ZpZS5tcGcnIik7CisgICAgICAgIHNldFRpbWVvdXQoc29t
ZVRpbWVMYXRlciwgNDAwKSAKKyAgICAKKyAgICA8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3Rh
dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLWxvYWQtcmVhZHlTdGF0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMg
KzEsOSBAQAogRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzAnKSBPSwogRVZFTlQobG9h
ZHN0YXJ0KQotRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzAnKSBPSwogRVZFTlQobG9h
ZGVkbWV0YWRhdGEpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCi1FVkVO
VChsb2FkZWRmaXJzdGZyYW1lKQotRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzEnKSBP
SwotRVZFTlQoY2Fuc2hvd2N1cnJlbnRmcmFtZSkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRl
ID09ICcxJykgT0sKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQogRVZFTlQoY2Fu
cGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnMycpIE9LCitFWFBF
Q1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnNCcpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3RhdGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3RhdGUuaHRtbAkocmV2aXNpb24g
NDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3RhdGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxOCArMSwyMSBAQAogPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+
CiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBmdW5j
dGlvbiB0ZXN0UmVhZHlTdGF0ZShleHBlY3RlZCwgZW5kSXQpCisgICAgZnVuY3Rpb24gdGVzdFJl
YWR5U3RhdGUoZXhwZWN0ZWQsIGVuZGl0LCBvcCkKICAgICB7Ci0gICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ucmVhZHlTdGF0ZSIsIGV4cGVjdGVkKTsKLSAgICAgICAgaWYgKGVuZEl0KQorICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBleHBlY3RlZCwgb3ApOworICAg
ICAgICBpZiAoZW5kaXQpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCi0gICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5EQVRBX1VOQVZB
SUxBQkxFKTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIsIGZ1bmN0aW9uICgpIHsgdGVz
dFJlYWR5U3RhdGUoSFRNTE1lZGlhRWxlbWVudC5EQVRBX1VOQVZBSUxBQkxFKTsgfSApOwotICAg
IHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiLCBmdW5jdGlvbiAoKSB7IHRlc3RSZWFkeVN0
YXRlKEhUTUxNZWRpYUVsZW1lbnQuREFUQV9VTkFWQUlMQUJMRSk7IH0gKTsKLSAgICB3YWl0Rm9y
RXZlbnQoImxvYWRlZGZpcnN0ZnJhbWUiLCBmdW5jdGlvbiAoKSB7IHRlc3RSZWFkeVN0YXRlKEhU
TUxNZWRpYUVsZW1lbnQuQ0FOX1NIT1dfQ1VSUkVOVF9GUkFNRSk7IH0gKTsKLSAgICB3YWl0Rm9y
RXZlbnQoImNhbnNob3djdXJyZW50ZnJhbWUiLCBmdW5jdGlvbiAoKSB7IHRlc3RSZWFkeVN0YXRl
KEhUTUxNZWRpYUVsZW1lbnQuQ0FOX1NIT1dfQ1VSUkVOVF9GUkFNRSk7IH0gKTsKLSAgICB3YWl0
Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlTdGF0ZShI
VE1MTWVkaWFFbGVtZW50LkNBTl9QTEFZX1RIUk9VR0gsIHRydWUpOyB9ICk7CisgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5IQVZFX05PVEhJTkcp
OworICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2FpdEZvckV2ZW50KCJsb2Fk
ZWRtZXRhZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0YSIpOworICAgIHdhaXRG
b3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoInBsYXkiKTsKKyAg
ICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCJwbGF5aW5nIik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5w
bGF5dGhyb3VnaCIsIGZ1bmN0aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1lZGlhRWxlbWVu
dC5IQVZFX0VOT1VHSF9EQVRBLCB0cnVlICk7IH0gKTsKKwogICAgIHZpZGVvLnNyYyA9ICJjb250
ZW50L3Rlc3QubXA0IjsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
bG9vcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
bG9vcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tbG9vcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDEwICsxMywxMiBA
QCBFVkVOVChwbGF5KQogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwogUlVO
KHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjQpCiAKK0VWRU5UKHBsYXlp
bmcpCiBFWFBFQ1RFRCAodmlkZW8uZW5kZWQgPT0gJ2ZhbHNlJykgT0sKIEVYUEVDVEVEIChtZWRp
YS5jdXJyZW50VGltZSA+ICcwJykgT0sKK0VYUEVDVEVEIChtZWRpYS5jdXJyZW50VGltZSA8ICc4
LjAwJykgT0sKIFJVTih2aWRlby5sb29wID0gZmFsc2UpCi1SVU4odmlkZW8uY3VycmVudFRpbWUg
PSB2aWRlby5kdXJhdGlvbiAtIDAuNCkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1
cmF0aW9uIC0gMC4zKQogCiBFWFBFQ1RFRCAodmlkZW8uZW5kZWQgPT0gJ3RydWUnKSBPSwogRVhQ
RUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lID09ICdtZWRpYS5kdXJhdGlvbicpIE9LCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb29wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tbG9vcC5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWxvb3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMSw2NCBAQAot
PHZpZGVvIGNvbnRyb2xzIGF1dG9wbGF5ID48L3ZpZGVvPgotPHNjcmlwdCBzcmM9dmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmdldEF0
dHJpYnV0ZSgnbG9vcCcpIiwgbnVsbCk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5sb29wIiwg
ZmFsc2UpOwotCi0gICAgcnVuKCJ2aWRlby5sb29wID0gdHJ1ZSIpOwotICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ubG9vcCIsIHRydWUpOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmli
dXRlKCdsb29wJykiLCBudWxsLCAiIT0iKTsKLQotICAgIHJ1bigidmlkZW8ucmVtb3ZlQXR0cmli
dXRlKCdsb29wJykiKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmxvb3AiLCBmYWxzZSk7Ci0K
LSAgICB2YXIgcmVzcG9uZFRvVGltZVVwZGF0ZSA9IGZhbHNlOwotICAgIHZhciBmaXJzdFRpbWVD
aGVjayA9IHRydWU7Ci0KLSAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIHBsYXlpbmcsIHNlZWsgdG8g
bmVhciB0aGUgZW5kIHNvIHRoZSB0ZXN0IGRvZXNuJ3QgdGFrZSB0b28gbG9uZwotICAgIHdhaXRG
b3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsgCi0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8ucGF1c2VkIiwgZmFsc2UpOwotICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gdmlk
ZW8uZHVyYXRpb24gLSAwLjQiKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnNvbGVXcml0ZSgiIik7
Ci0gICAgICAgIHNldFRpbWVvdXQodGltZUNoZWNrLCA4MDApOwotICAgIH0gKTsKKzxodG1sPgog
Ci0gICAgZnVuY3Rpb24gdGltZUNoZWNrKCkgeyAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5lbmRlZCIsICFmaXJzdFRpbWVDaGVjayk7Ci0gICAgICAgIGlmICghZmlyc3RUaW1lQ2hlY2sp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIGRvbid0IHVzZSAidGVzdEV4cGVjdGVkKCkiIHNv
IHdlIHdvbid0IGxvZyB0aGUgYWN0dWFsIGR1cmF0aW9uIHRvIHRoZQotICAgICAgICAgICAgLy8g
IHJlc3VsdHMgZmlsZSwgYXMgdGhlIGZsb2F0aW5nIHBvaW50IHJlc3VsdCBtYXkgZGlmZmVyIHdp
dGggZGlmZmVyZW50IGVuZ2luZXMKLSAgICAgICAgICAgIHJlcG9ydEV4cGVjdGVkKG1lZGlhLmN1
cnJlbnRUaW1lID09IG1lZGlhLmR1cmF0aW9uLCAibWVkaWEuY3VycmVudFRpbWUiLCAiPT0iLCAi
bWVkaWEuZHVyYXRpb24iLCBtZWRpYS5jdXJyZW50VGltZSk7Ci0gICAgICAgICAgICBlbmRUZXN0
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICA8dmlkZW8gY29udHJvbHMg
YXV0b3BsYXkgPjwvdmlkZW8+CiAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5jdXJyZW50
VGltZSIsIDAsICc+Jyk7Ci0gICAgICAgIHJ1bigidmlkZW8ubG9vcCA9IGZhbHNlIik7Ci0gICAg
ICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNCIpOwotICAg
ICAgICByZXNwb25kVG9UaW1lVXBkYXRlID0gdHJ1ZTsKLSAgICAgICAgZmlyc3RUaW1lQ2hlY2sg
PSBmYWxzZTsKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogCisgICAg
PHNjcmlwdD4KKyAgICAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUo
J2xvb3AnKSIsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmxvb3AiLCBmYWxz
ZSk7CisgICAgCisgICAgICAgIHJ1bigidmlkZW8ubG9vcCA9IHRydWUiKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5sb29wIiwgdHJ1ZSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8uZ2V0QXR0cmlidXRlKCdsb29wJykiLCBudWxsLCAiIT0iKTsKKyAgICAKKyAgICAgICAgcnVu
KCJ2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ2xvb3AnKSIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmxvb3AiLCBmYWxzZSk7CisgICAgCisgICAgICAgIHZhciByZXNwb25kVG9UaW1lVXBk
YXRlID0gZmFsc2U7CisgICAgICAgIHZhciBmaXJzdFRpbWVDaGVjayA9IHRydWU7CisKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCdwYXVzZScpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcn
KTsKKworICAgICAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIHBsYXlpbmcsIHNlZWsgdG8gbmVhciB0
aGUgZW5kIHNvIHRoZSB0ZXN0IGRvZXNuJ3QgdGFrZSB0b28gbG9uZworICAgICAgICB3YWl0Rm9y
RXZlbnQoJ3BsYXknLCBmdW5jdGlvbiAoKSB7IAorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5wYXVzZWQiLCBmYWxzZSk7CisgICAgICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1l
ID0gdmlkZW8uZHVyYXRpb24gLSAwLjQiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGltZUNoZWNrLCA4MDApOwor
ICAgICAgICB9ICk7CisgICAgCisgICAgICAgIGZ1bmN0aW9uIHRpbWVDaGVjaygpIHsgCisgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVuZGVkIiwgIWZpcnN0VGltZUNoZWNrKTsKKyAg
ICAgICAgICAgIGlmICghZmlyc3RUaW1lQ2hlY2spCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgLy8gZG9uJ3QgdXNlICJ0ZXN0RXhwZWN0ZWQoKSIgc28gd2Ugd29uJ3QgbG9nIHRoZSBh
Y3R1YWwgZHVyYXRpb24gdG8gdGhlCisgICAgICAgICAgICAgICAgLy8gIHJlc3VsdHMgZmlsZSwg
YXMgdGhlIGZsb2F0aW5nIHBvaW50IHJlc3VsdCBtYXkgZGlmZmVyIHdpdGggZGlmZmVyZW50IGVu
Z2luZXMKKyAgICAgICAgICAgICAgICByZXBvcnRFeHBlY3RlZChtZWRpYS5jdXJyZW50VGltZSA9
PSBtZWRpYS5kdXJhdGlvbiwgIm1lZGlhLmN1cnJlbnRUaW1lIiwgIj09IiwgIm1lZGlhLmR1cmF0
aW9uIiwgbWVkaWEuY3VycmVudFRpbWUpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoIm1lZGlhLmN1cnJlbnRUaW1lIiwgMCwgJz4nKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgibWVkaWEuY3VycmVudFRpbWUiLCAodmlkZW8uZHVyYXRpb24gLSAwLjQpLnRv
Rml4ZWQoMiksICc8Jyk7CisgICAgICAgICAgICBydW4oInZpZGVvLmxvb3AgPSBmYWxzZSIpOwor
ICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC4z
Iik7CisgICAgICAgICAgICByZXNwb25kVG9UaW1lVXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGZpcnN0VGltZUNoZWNrID0gZmFsc2U7CisgICAgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lQ2hlY2ssIDgwMCk7CisgICAgICAgIH0K
KyAgICAKICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgc2V0VGltZW91dCh0aW1l
Q2hlY2ssIDgwMCk7Ci0gICAgfQorICAgICAgICBydW4oInZpZGVvLmxvb3AgPSB0cnVlIik7Cisg
ICAgICAgIHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnIik7CisgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgPC9zY3JpcHQ+CisKKyAgICA8L2hlYWQ+CiAKLSAgICBjb25z
b2xlV3JpdGUoIiIpOwotICAgIHJ1bigidmlkZW8ubG9vcCA9IHRydWUiKTsKLSAgICBydW4oInZp
ZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JyIpOwotICAgIGNvbnNvbGVXcml0ZSgiIik7Ci08
L3NjcmlwdD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1
c2UtZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDEy
IEBAIFRlc3QgdGhhdCBwYXVzZSgpIGZyb20gRU1QVFkgbmV0d29yayBzdGEKIAogRVhQRUNURUQg
KHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCiBSVU4odmlkZW8ucGF1c2UoKSkKK1NDUklQ
VCBET05FCiBFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKK0VWRU5UKGxv
YWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChj
YW5wbGF5dGhyb3VnaCkKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDggKzMsMTggQEAKIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLSAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFkpOwot
ICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnbG9hZHN0YXJ0Jyk7CisgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkpOworCisg
ICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFu
Z2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICB3YWl0Rm9yRXZlbnQoInJh
dGVjaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hhbmdlIik7CisgICAgd2Fp
dEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0
YSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JFdmVudEFuZEVu
ZCgiY2FucGxheXRocm91Z2giKTsKKwogICAgIHJ1bigidmlkZW8ucGF1c2UoKSIpOwogICAgIGNv
bnNvbGVXcml0ZSgiU0NSSVBUIERPTkUiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LWVtcHR5LWV2
ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTQgQEAgVGVzdCB0
aGF0IHBsYXkoKSBmcm9tIEVNUFRZIG5ldHdvcmsgc3RhdAogCiBFWFBFQ1RFRCAodmlkZW8ubmV0
d29ya1N0YXRlID09ICcwJykgT0sKIFJVTih2aWRlby5wbGF5KCkpCi1FVkVOVChsb2Fkc3RhcnQp
Ci1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKIFNDUklQVCBET05FCi1FVkVO
VChwbGF5KQorRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQoZHVyYXRpb25jaGFuZ2UpCitFVkVOVChs
b2FkZWRtZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQorRVZFTlQo
Y2FucGxheXRocm91Z2gpCitFVkVOVChwbGF5aW5nKQogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAnZmFsc2UnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tcGxheS1lbXB0eS1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1wbGF5LWVtcHR5LWV2ZW50cy5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTkgKzEsMjkgQEAKLTx2aWRlbyBjb250cm9scz48L3ZpZGVvPgotPHA+VGVzdCB0aGF0
IHBsYXkoKSBmcm9tIEVNUFRZIG5ldHdvcmsgc3RhdGUgdHJpZ2dlcnMgbG9hZCgpIGFuZCBhc3lu
YyBwbGF5IGV2ZW50LjwvcD4KLTxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLSAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFkpOworPGh0
bWw+Cis8Ym9keT4KIAotICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0YXJ0JywgZnVuY3Rpb24gKCkg
eyAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKLSAgICB9ICk7
CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPHA+VGVzdCB0aGF0IHBsYXkoKSBm
cm9tIEVNUFRZIG5ldHdvcmsgc3RhdGUgdHJpZ2dlcnMgbG9hZCgpIGFuZCBhc3luYyBwbGF5IGV2
ZW50LjwvcD4KKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1l
ZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50KCJs
b2Fkc3RhcnQiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hhbmdlIik7CisgICAgICAg
IHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFu
Z2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlvbmNoYW5nZSIpOworICAgICAgICB3
YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9h
ZGVkZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInBsYXki
KTsKKyAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgZnVuY3Rpb24gKCkgeyB0
ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsgZW5kVGVzdCgpOyB9ICk7CisgICAg
CisgICAgICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKKyAgICAgICAgcnVuKCJ2
aWRlby5wbGF5KCkiKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCJTQ1JJUFQgRE9ORSIpOworICAg
IDwvc2NyaXB0PgogCi0gICAgd2FpdEZvckV2ZW50KCdwbGF5JywgZnVuY3Rpb24gKCkgeyAKLSAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7Ci0gICAgICAgIGVuZFRl
c3QoKTsKLSAgICB9ICk7Ci0KLSAgICBydW4oInZpZGVvLnBsYXkoKSIpOwotICAgIGNvbnNvbGVX
cml0ZSgiU0NSSVBUIERPTkUiKTsKLTwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1ldmVudHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1w
bGF5LXBhdXNlLWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw4
IEBAIFJVTih2aWRlby5wbGF5KCkpCiBSVU4odmlkZW8ucGF1c2UoKSkKIFNDUklQVCBET05FCiBF
VkVOVChwbGF5KQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCitFVkVOVCh3
YWl0aW5nKQogRVZFTlQodGltZXVwZGF0ZSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3Ry
dWUnKSBPSwogRVZFTlQocGF1c2UpCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykg
T0sKIEVORCBPRiBURVNUCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNl
LWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXkt
cGF1c2UtZXZlbnRzLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tcGxheS1wYXVzZS1ldmVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMSArNCwy
MiBAQAogPHNjcmlwdD4KICAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7CiAKLSAg
ICB3YWl0Rm9yRXZlbnQoJ3BsYXknLCBmdW5jdGlvbiAoKSB7IHRlc3RFeHBlY3RlZCgidmlkZW8u
cGF1c2VkIiwgdHJ1ZSk7fSApOwotICAgIHdhaXRGb3JFdmVudCgndGltZXVwZGF0ZScsIGZ1bmN0
aW9uICgpIHsgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTt9ICk7CisgICAgd2Fp
dEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFuZ2UiKTsK
KyAgICB3YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFu
Z2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hhbmdlIik7CisgICAgd2FpdEZvckV2
ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0YSIpOwor
ICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheXRo
cm91Z2giKTsKKyAgICB3YWl0Rm9yRXZlbnQoInBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnQoInRp
bWV1cGRhdGUiKTsKICAgICB3YWl0Rm9yRXZlbnQoJ3BhdXNlJywgZnVuY3Rpb24gKCkgeyB0ZXN0
RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpOyBlbmRUZXN0KCk7IH0gKTsKIAorCiAgICAg
cnVuKCJ2aWRlby5wbGF5KCkiKTsKICAgICBydW4oInZpZGVvLnBhdXNlKCkiKTsKKyAgICAKICAg
ICBjb25zb2xlV3JpdGUoIlNDUklQVCBET05FIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxh
eS1wYXVzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
MTAgQEAKLVZpZGVvIGhhcyBubyBzcmMuIFRlc3QgdGhhdCBwbGF5KCkgYW5kIHBhdXNlKCkgcmV0
aHJvdyB0aGUgZXhjZXB0aW9uIGZyb20gbG9hZCgpLiBUZXN0IHRoYXQgdGhlIHBsYXkgYW5kIHBh
dXNlIGV2ZW50cyBhcmUgbm90IGRpc3BhdGNoZWQuCitWaWRlbyBoYXMgbm8gc3JjLiBUZXN0IHRo
YXQgdGhlIHBsYXlpbmcgZXZlbnQgaXMgbm90IGRpc3BhdGNoZWQuCiAKLVRFU1QodmlkZW8ucGxh
eSgpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSKSBPSwotVEVTVCh2aWRl
by5wYXVzZSgpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSKSBPSworUlVO
KHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlby5wYXVzZSgpKQorRVZFTlQod2FpdGluZykKK0VWRU5U
KHRpbWV1cGRhdGUpCitFVkVOVChwYXVzZSkKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUg
PT0gJzQnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
cGxheS1wYXVzZS1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9uLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTAgKzEsMjYgQEAKKwogPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Ci08cD5W
aWRlbyBoYXMgbm8gc3JjLiBUZXN0IHRoYXQgcGxheSgpIGFuZCBwYXVzZSgpIHJldGhyb3cgdGhl
IGV4Y2VwdGlvbiBmcm9tIGxvYWQoKS4gVGVzdCB0aGF0IHRoZSBwbGF5IGFuZCBwYXVzZSBldmVu
dHMgYXJlIG5vdCBkaXNwYXRjaGVkLjwvcD4KKworPHA+VmlkZW8gaGFzIG5vIHNyYy4gVGVzdCB0
aGF0IHRoZSBwbGF5aW5nIGV2ZW50IGlzIG5vdCBkaXNwYXRjaGVkLjwvcD4KKwogPHNjcmlwdCBz
cmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+Ci13YWl0Rm9yRXZlbnRBbmRGYWls
KCdwbGF5Jyk7Ci13YWl0Rm9yRXZlbnRBbmRGYWlsKCdwYXVzZScpOwotdGVzdEV4Y2VwdGlvbigi
dmlkZW8ucGxheSgpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIpOwotdGVzdEV4
Y2VwdGlvbigidmlkZW8ucGF1c2UoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIi
KTsKLWVuZFRlc3RMYXRlcigpOworICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoJ3BsYXlpbmcnKTsK
KworICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2FpdEZvckV2ZW50KCJ0aW1l
dXBkYXRlIik7CisgICAgd2FpdEZvckV2ZW50KCJwYXVzZSIpOworICAgIHdhaXRGb3JFdmVudCgi
d2FpdGluZyIpOworCisgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICBydW4oInZpZGVvLnBh
dXNlKCkiKTsKKworICAgIGZ1bmN0aW9uIHNvbWVUaW1lTGF0ZXIoKQorICAgIHsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdP
UktfTk9fU09VUkNFKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICB9CisgICAgCisgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCA0MDApIAog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1leGNl
cHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNlZWstbm8tc3JjLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCBzZWVraW5nIHZpZGVvIHdpdGgg
bm8gJ3NyYycgYXR0cmlidXRlIHRocm93cyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24u
CisKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzAnKSBPSworRVhQRUNURUQgKHZp
ZGVvLnJlYWR5U3RhdGUgPT0gJzAnKSBPSworVEVTVCh2aWRlby5jdXJyZW50VGltZSA9IDEuMSkg
VEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUikgT0sKK0VORCBPRiBURVNUCisK
SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstbm8tc3JjLWV4Y2VwdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstbm8tc3JjLWV4Y2Vw
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1u
by1zcmMtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1s
PgorPGJvZHk+CisKKyAgICA8dmlkZW8gbG9vcCBjb250cm9scz48L3ZpZGVvPgorICAgIAorICAg
IDxwPlRlc3QgdGhhdCBzZWVraW5nIHZpZGVvIHdpdGggbm8gJ3NyYycgYXR0cmlidXRlIHRocm93
cyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24uPC9wPgorCisgICAgPHNjcmlwdCBzcmM9
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIsIEhUTUxNZWRpYUVsZW1l
bnQuSEFWRV9OT1RISU5HKTsKKyAgICAgICAgdGVzdEV4Y2VwdGlvbigidmlkZW8uY3VycmVudFRp
bWUgPSAxLjEiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIik7CisgICAgICAgIHNl
dFRpbWVvdXQoZW5kVGVzdCwgMjAwKSAKKyAgICA8L3NjcmlwdD4KKyAgICAKKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWlu
Zy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vl
ay1wYXN0LWVuZC1wbGF5aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEzICsxLDE1IEBACiBUZXN0IHRoYXQgc2Vla2luZyB2aWRlbyB3
aXRoICdsb29wJyBwYXN0IGl0J3MgZW5kIHJld2luZHMgdG8gdGhlIGJlZ2lubmluZyBhbmQgY29u
dGludWVzIHBsYXliYWNrLgogCiBSVU4odmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnKQot
UlVOKHZpZGVvLnBsYXkoKSkKIAogRVZFTlQobG9hZCkKK0VYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ3RydWUnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ2ZhbHNlJykgT0sKIAogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwog
RVhQRUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lID4gJzAnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gNTAwKQogCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCiBFWFBF
Q1RFRCAobWVkaWEuY3VycmVudFRpbWUgPiAnMCcpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmcuaHRtbAkocmV2aXNpb24gNDE2
NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmcuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDggQEAKIDxzY3JpcHQ+CiAKICAgICB3YWl0Rm9y
RXZlbnQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IAorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LnBhdXNlZCIsIHRydWUpOworICAgICAgICBydW4oInZpZGVvLnBsYXkoKSIpOwogICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKICAgICAgICAgc2V0VGltZW91dCh0
aW1lQ2hlY2sxLCAyMDApOwogICAgIH0pOwpAQCAtMTQsNyArMTYsNyBAQAogICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNl
KTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5jdXJyZW50VGltZSIsIDAsICc+Jyk7Ci0g
ICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gNTAwOworICAgICAgICBydW4oInZpZGVvLmN1cnJl
bnRUaW1lID0gNTAwIik7CiAgICAgICAgIHNldFRpbWVvdXQodGltZUNoZWNrMiwgMjAwKTsKICAg
ICB9CiAKQEAgLTI4LDYgKzMwLDUgQEAKICAgICB9CiAKICAgICBydW4oInZpZGVvLnNyYyA9ICdj
b250ZW50L3Rlc3QubXA0JyIpOwotICAgIHJ1bigidmlkZW8ucGxheSgpIik7CiAgICAgY29uc29s
ZVdyaXRlKCIiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vl
a2luZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c2Vla2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tc2Vla2luZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEs
MzEgQEAKLVRlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVlIGluIHRpbWV1cGRhdGUg
ZXZlbnQgYWZ0ZXIgc2VlayBhbmQgZ29lcyBiYWNrIHRvIGZhbHNlIHdoZW4gc2Vla2luZyBjb21w
bGV0ZXMKK1Rlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVlIGltbWVkaWF0ZWx5IGFm
dGVyIGEgc2VlaywgZ29lcyBiYWNrIHRvIGZhbHNlIHdoZW4gc2Vla2luZyBjb21wbGV0ZXMsIGFu
ZCB0aGF0IGEgJ3NlZWtlZCcgZXZlbnQgaXMgZmlyZWQgZm9yIGVhY2ggc2VlawogCiBFVkVOVChs
b2FkKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorCitFVkVOVChzZWVrZWQpCisKK0VY
UEVDVEVEIChzZWVrZWRDb3VudCA9PSAnMScpIE9LCiBFWFBFQ1RFRCAodmlkZW8uc2Vla2luZyA9
PSAnZmFsc2UnKSBPSwotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMikKLUVWRU5UKHRpbWV1cGRh
dGUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzAuNScpIE9LCitSVU4odmlkZW8u
Y3VycmVudFRpbWUgPSAxKQorRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0gJ3RydWUnKSBPSwor
CitFVkVOVChzZWVrZWQpCisKK0VYUEVDVEVEIChzZWVrZWRDb3VudCA9PSAnMicpIE9LCitFWFBF
Q1RFRCAodmlkZW8uc2Vla2luZyA9PSAnZmFsc2UnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJl
bnRUaW1lID09ICcxJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDEuNSkKIEVYUEVDVEVE
ICh2aWRlby5zZWVraW5nID09ICd0cnVlJykgT0sKLUVYUEVDVEVEICh2aWRlby5jdXJyZW50VGlt
ZSA9PSAnMicpIE9LCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHNlZWtlZENvdW50ID09
ICczJykgT0sKIEVYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICdmYWxzZScpIE9LCitFWFBFQ1RF
RCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzEuNScpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUg
PSAyKQorRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0gJ3RydWUnKSBPSworCiBFTkQgT0YgVEVT
VAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vla2luZy5odG1sCShyZXZpc2lvbiA0MTY1
OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWtpbmcuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwyMSArMSw1MSBAQAogPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Ci08cD5UZXN0IHRo
YXQgc2Vla2luZyBhdHRyaWJ1dGUgaXMgdHJ1ZSBpbiB0aW1ldXBkYXRlIGV2ZW50IGFmdGVyIHNl
ZWsgYW5kIGdvZXMgYmFjayB0byBmYWxzZSB3aGVuIHNlZWtpbmcgY29tcGxldGVzIDwvcD4KKzxw
PlRlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVlIGltbWVkaWF0ZWx5IGFmdGVyIGEg
c2VlaywKKyBnb2VzIGJhY2sgdG8gZmFsc2Ugd2hlbiBzZWVraW5nIGNvbXBsZXRlcywgYW5kIHRo
YXQgYSAnc2Vla2VkJyBldmVudAorIGlzIGZpcmVkIGZvciBlYWNoIHNlZWsKKyA8L3A+CiA8c2Ny
aXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KLXdhaXRGb3JFdmVudCgn
bG9hZCcsCi0gICAgZnVuY3Rpb24gKCkgCisKKyAgICB2YXIgc2Vla2VkQ291bnQgPSAwOworICAg
IHZhciBjb3VudGVyOworCisgICAgZnVuY3Rpb24gc2Vla2VkKCkKKyAgICB7IAorICAgICAgICAr
K3NlZWtlZENvdW50OyAKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzb21lVGltZUxhdGVyKCkKICAgICB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgic2Vl
a2VkQ291bnQiLCBjb3VudGVyKTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5zZWVraW5n
IiwgZmFsc2UpOwotICAgICAgICB3YWl0Rm9yRXZlbnQoJ3RpbWV1cGRhdGUnLCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnNlZWtpbmciLCB0cnVlKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCAyKTsKLSAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8uc2Vla2luZyIsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7Ci0g
ICAgICAgICAgICB9LCAyMDApOwotICAgICAgICB9KTsKLSAgICAgICAgcnVuKCJ2aWRlby5jdXJy
ZW50VGltZSA9IDIiKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIs
IGNvdW50ZXIgKiAwLjUpOworICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gIiArIChj
b3VudGVyICsgMSkgKiAwLjUpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnNlZWtpbmci
LCB0cnVlKTsKKworICAgICAgICBpZiAoY291bnRlciA9PSAzKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgKytjb3VudGVyOworICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICB9
CisKKyAgICBmdW5jdGlvbiBsb2FkZWQoKSAKKyAgICB7CisgICAgICAgIHJ1bigidmlkZW8uY3Vy
cmVudFRpbWUgPSAwLjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisgICAgICAgIHNldFRpbWVv
dXQoc29tZVRpbWVMYXRlciwgMjAwKSAKKyAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVy
LCA0MDApIAorICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDYwMCkgCisgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CiAgICAgfQotKTsKLXZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3Qu
bXA0IjsKKyAgICAKKyAgICB3YWl0Rm9yRXZlbnQoJ3dhaXRpbmcnICk7CisgICAgd2FpdEZvckV2
ZW50KCdzZWVrZWQnLCBzZWVrZWQgKTsKKyAgICB3YWl0Rm9yRXZlbnQoJ2xvYWQnLCBsb2FkZWQp
OworCisgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwogPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWFkZC1zcmMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWFk
ZC1zcmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitFVkVOVChs
b2Fkc3RhcnQpCitFVkVOVChsb2Fkc3RhcnQpCisKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRl
by5jdXJyZW50U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9LCitSVU4odmlkZW8uc3JjID0g
J2NvbnRlbnQvc2lsZW5jZS5tcGcnKQorCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKK0VWRU5UKGxv
YWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChj
YW5wbGF5dGhyb3VnaCkKKworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMp
ID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKK0VORCBPRiBURVNUCitUZXN0IHRoYXQgYWRkaW5n
IGEgJ3NyYycgYXR0cmlidXRlIGRvZXMgbm90aGluZyB3aGVuIGEgPHNvdXJjZT4gZWxlbWVudCBo
YXMgYWxyZWFkeSBiZWVuIGNob3NlbgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291
cmNlLWFkZC1zcmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
b3VyY2UtYWRkLXNyYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tc291cmNlLWFkZC1zcmMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorPGh0
bWw+Cis8Ym9keT4KKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisg
ICAgPHZpZGVvIGNvbnRyb2xzPgorICAgICAgICA8c291cmNlIHNyYz1jb250ZW50L3Rlc3QubXA0
IHR5cGU9InZpZGVvL21wZWc7IGNvZGVjcz0mcXVvdDthdmMxLjRENDAwQyZxdW90OyI+CisgICAg
PC92aWRlbz4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKwor
ICAgICAgICB2YXIgY291bnRlciA9IDA7CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrTG9hZCgpIAor
ICAgICAgICB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC90ZXN0
Lm1wNCIpOworICAgICAgICAgICAgaWYgKCsrY291bnRlciA9PSAyKQorICAgICAgICAgICAgICAg
IGVuZFRlc3QoKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvc2lsZW5j
ZS5tcGcnIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTG9hZCwgMjAwKTsKKyAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH07CisKKyAgICAgICAgd2FpdEZvckV2
ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hhbmdlIik7Cisg
ICAgICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJh
dGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlvbmNoYW5nZSIpOworICAg
ICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVu
dCgibG9hZGVkZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQo
InBsYXkiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnLCBjaGVja0xvYWQpOwor
CisgICAgPC9zY3JpcHQ+CisKKzxwPlRlc3QgdGhhdCBhZGRpbmcgYSAnc3JjJyBhdHRyaWJ1dGUg
ZG9lcyBub3RoaW5nIHdoZW4gYSAmbHQ7c291cmNlJmd0OyBlbGVtZW50IGhhcyBhbHJlYWR5IAor
YmVlbiBjaG9zZW4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMjAgQEAKLVRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgYXR0
cmlidXRlIHRyaWdnZXJzIGxvYWQgd2hlbiBuZXR3b3JrIHN0YXRlIGlzIGVtcHR5LgotVGVzdCB0
aGF0IGl0IGRvZXMgbm90IHRyaWdnZXIgbG9hZCB3aGVuIG5ldHdvcmsgc3RhdGUgaXMgbm9uLWVt
cHR5LgotRVZFTlQoZW1wdGllZCkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzAn
KSBPSwotRVZFTlQobG9hZHN0YXJ0KQorMS4gVGVzdCB0aGF0IGFuIGludmFsaWQgc3JjIGF0dHJp
YnV0ZSBmaXJlcyBhbiBlcnJvciB3aGVuIHRoZSBmaWxlIGZhaWxzIHRvIGxvYWQuCisyLiBUZXN0
IHRoYXQgY2hhbmdpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIGFmdGVyIGEgbG9hZCBm
YWlscy4KKzMuIFRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgZG9lcyBub3QgdHJpZ2dlciBsb2FkIG9u
Y2UgYSBmaWxlIGlzIGxvYWRlZC4KKworCitFVkVOVChlcnJvcikKK0VYUEVDVEVEIChyZWxhdGl2
ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnYm9ndXMnKSBPSworRVhQRUNURUQgKHZpZGVvLm5l
dHdvcmtTdGF0ZSA9PSAnNCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnNCcp
IE9LCisKK1JVTih2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250ZW50L3Rlc3QubXA0Jykp
CisKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQogRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1
cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKLUVWRU5UKGxvYWQpCi1FWFBFQ1RF
RCAodmlkZW8ubmV0d29ya1N0YXRlICE9ICcwJykgT0sKK0VYUEVDVEVEIChpc05hTih2aWRlby5k
dXJhdGlvbikgPT0gJ2ZhbHNlJykgT0sKKworUlVOKHZpZGVvLnNldEF0dHJpYnV0ZSgnc3JjJywg
J2NvbnRlbnQvc2lsZW5jZS5tcGcnKSkKKwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUg
KzEsNDAgQEAKLTx2aWRlbyBzcmM9Ym9ndXMgY29udHJvbHM+PC92aWRlbz4KLTxkaXY+Ci1UZXN0
IHRoYXQgY2hhbmdpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIHdoZW4gbmV0d29yayBz
dGF0ZSBpcyBlbXB0eS48YnI+Ci1UZXN0IHRoYXQgaXQgZG9lcyBub3QgdHJpZ2dlciBsb2FkIHdo
ZW4gbmV0d29yayBzdGF0ZSBpcyBub24tZW1wdHkuCi08L2Rpdj4KLTxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIHdhaXRGb3JFdmVudCgnZW1wdGllZCcs
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUi
LCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZKTsKLSAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdz
cmMnLCAnY29udGVudC90ZXN0Lm1wNCcpCi0gICAgICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0
IiwgZnVuY3Rpb24gKCkgeyB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRT
cmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsgfSk7Cis8aHRtbD4KKzxib2R5PgorICAgIAorICAg
IDx2aWRlbyBzcmM9Ym9ndXMgY29udHJvbHM+PC92aWRlbz4KIAotICAgICAgICB3YWl0Rm9yRXZl
bnQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
Lm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFksICIhPSIpOwotICAgICAgICAg
ICAgdmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVudC90ZXN0LndhdicpOworICAgIDxw
PgorICAgIDEuIFRlc3QgdGhhdCBhbiBpbnZhbGlkIHNyYyBhdHRyaWJ1dGUgZmlyZXMgYW4gZXJy
b3Igd2hlbiB0aGUgZmlsZSBmYWlscyB0byBsb2FkLjxicj4KKyAgICAyLiBUZXN0IHRoYXQgY2hh
bmdpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIGFmdGVyIGEgbG9hZCBmYWlscy48YnI+
CisgICAgMy4gVGVzdCB0aGF0IGNoYW5naW5nIHNyYyBkb2VzIG5vdCB0cmlnZ2VyIGxvYWQgb25j
ZSBhIGZpbGUgaXMgbG9hZGVkLgorICAgIDwvcAorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gZXJyb3JF
dmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwo
dmlkZW8uY3VycmVudFNyYykiLCAiYm9ndXMiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NPVVJDRSk7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9y
Lk1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgcnVuKCJ2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250ZW50L3Rl
c3QubXA0JykiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKyAg
ICAKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkbWV0YWRhdGEoKQorICAgICAgICB7CisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRl
bnQvdGVzdC5tcDQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiaXNOYU4odmlkZW8uZHVy
YXRpb24pIiwgZmFsc2UpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAg
ICAgIHJ1bigidmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVudC9zaWxlbmNlLm1wZycp
Iik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDUwMCkgOworICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRhJywgbG9hZGVkbWV0YWRh
dGEpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJywgZXJyb3JFdmVudCk7CisgICAgPC9z
Y3JpcHQ+CiAKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0YXJ0JywgZnVuY3Rpb24g
KCkgeyAKLSAgICAgICAgICAgICAgICBsb2dSZXN1bHQoIkxPQURTVEFSVCBmaXJlZCIpOwotICAg
ICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0gKTsKLQotICAgICAgICAgICAg
c2V0VGltZW91dChlbmRUZXN0LCA1MDApOwotICAgICAgICB9KTsKLSAgICB9KTsKLTwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWlu
dmFsaWQtcmVtb3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zcmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorCitFVkVOVChsb2Fkc3RhcnQpCitFWFBFQ1RF
RCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2JvZ3VzLm1vdicpIE9LCisKK0VW
RU5UKGVycm9yKQorRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzQnKSBPSworUlVOKHZp
ZGVvLnJlbW92ZUF0dHJpYnV0ZSgnc3JjJykpCisKK0VWRU5UKGxvYWRzdGFydCkKK0VYUEVDVEVE
IChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9L
CisKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1
cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKK0VYUEVDVEVEIChpc05hTih2aWRl
by5kdXJhdGlvbikgPT0gJ2ZhbHNlJykgT0sKKworRU5EIE9GIFRFU1QKK1Rlc3QgdGhhdCByZW1v
dmluZyBpbnZhbGlkICdzcmMnIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIG9mIDxzb3VyY2U+IGVs
ZW1lbnRzCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1yZW1vdmUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1y
ZW1vdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1p
bnZhbGlkLXJlbW92ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACis8aHRtbD4K
Kzxib2R5PgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICA8
dmlkZW8gc3JjPWJvZ3VzLm1vdiBjb250cm9scz4KKyAgICAgICAgPHNvdXJjZSBzcmM9Y29udGVu
dC90ZXN0Lm1wND4KKyAgICA8L3ZpZGVvPgorCisgICAgPHA+VGVzdCB0aGF0IHJlbW92aW5nIGlu
dmFsaWQgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgb2YgJmx0O3NvdXJjZSZndDsgZWxl
bWVudHM8L3A+CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2aWRlbyA9IG1lZGlhID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisKKyAgICAgICAgdmFyIGxvYWRD
b3VudCA9IDA7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBsb2FkU3RhcnQoKQorICAgICAg
ICB7CisgICAgICAgICAgICArK2xvYWRDb3VudDsKKyAgICAgICAgICAgIGlmIChsb2FkQ291bnQg
PT0gMSkKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1
cnJlbnRTcmMpIiwgImJvZ3VzLm1vdiIpOworICAgICAgICAgICAgZWxzZSBpZiAobG9hZENvdW50
ID09IDIpCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5j
dXJyZW50U3JjKSIsICJjb250ZW50L3Rlc3QubXA0Iik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZmFpbFRlc3QoIidsb2FkQ291bnQnIGZpcmVkICIgKyBsb2FkQ291bnQgKyAi
dGltZXMiICk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9hZGVkbWV0YWRhdGEoKQorICAgICAgICB7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvdGVz
dC5tcDQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiaXNOYU4odmlkZW8uZHVyYXRpb24p
IiwgZmFsc2UpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGVycm9yRXZlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NV
UFBPUlRFRCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgZW5kVGVzdCgp
OyB9ICwgNTAwKSA7CisgICAgICAgICAgICBydW4oInZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnc3Jj
JykiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRh
JywgbG9hZGVkbWV0YWRhdGEpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRzdGFydCcsIGxv
YWRTdGFydCApOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJywgZXJyb3JFdmVudCk7Cisg
ICAgPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorRVZFTlQobG9hZHN0YXJ0KQorRVhQRUNU
RUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L2JvZ3VzLm1wZWcn
KSBPSworCitFVkVOVChlcnJvcikKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50
U3JjKSA9PSAnY29udGVudC9ib2d1cy5tcGVnJykgT0sKK0VYUEVDVEVEIChtZWRpYS5lcnJvci5j
b2RlID09ICc0JykgT0sKKworRU5EIE9GIFRFU1QKK1Rlc3QgdGhhdCBhIDxzb3VyY2U+IGVsZW1l
bnQgaXMgbm90IHVzZWQgd2hlbiBhIGJvZ3VzICdzcmMnIGF0dHJpYnV0ZSBpcyBwcmVzZW50Cklu
ZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKzxib2R5PgorICAgIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICA8dmlkZW8gc3JjPWNvbnRlbnQv
Ym9ndXMubXBlZyBjb250cm9scz4KKyAgICAgICAgPHNvdXJjZSBzcmM9Y29udGVudC90ZXN0Lm1w
ND4KKyAgICA8L3ZpZGVvPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOworCisgICAgICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywg
ZnVuY3Rpb24oKSB7IAorICAgICAgICAgICAgZmFpbFRlc3QoIidsb2FkZWRtZXRhZGF0YScgZXZl
bnQgZmlyZWQiICk7CisgICAgICAgIH0pOworCisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0
YXJ0JywgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVV
UkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC9ib2d1cy5tcGVnIik7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9ICk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50
KCdlcnJvcicsIGZ1bmN0aW9uICgpIHsgCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvYm9ndXMubXBlZyIpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJQV9F
UlJfTk9ORV9TVVBQT1JURUQpOworICAgICAgICAgICAgc2V0VGltZW91dChlbmRUZXN0LCAyMDAp
IDsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0pOworCisgICAgPC9z
Y3JpcHQ+CisKKzxwPlRlc3QgdGhhdCBhICZsdDtzb3VyY2UmZ3Q7IGVsZW1lbnQgaXMgbm90IHVz
ZWQgd2hlbiBhIGJvZ3VzICdzcmMnIGF0dHJpYnV0ZSBpcyBwcmVzZW50Cis8L3A+CisKKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1v
dmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXNyYy1yZW1vdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsMTIg
QEAKLVRlc3QgdGhhdCByZW1vdmluZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQKLUVWRU5U
KGVtcHRpZWQpCi1FVkVOVChsb2Fkc3RhcnQpCi1FWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8u
Y3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSwotRU5EIE9GIFRFU1QKIAorRVZF
TlQobG9hZGVkbWV0YWRhdGEpCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNy
YykgPT0gJ2NvbnRlbnQvc2lsZW5jZS5tcGcnKSBPSworRVhQRUNURUQgKGlzTmFOKHZpZGVvLmR1
cmF0aW9uKSA9PSAnZmFsc2UnKSBPSworCitSVU4odmlkZW8ucmVtb3ZlQXR0cmlidXRlKCdzcmMn
KSkKKworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50
L3NpbGVuY2UubXBnJykgT0sKK0VYUEVDVEVEIChpc05hTih2aWRlby5kdXJhdGlvbikgPT0gJ2Zh
bHNlJykgT0sKKworRU5EIE9GIFRFU1QKK1Rlc3QgdGhhdCByZW1vdmluZyB2YWxpZCAnc3JjJyBh
dHRyaWJ1dGUgRE9FUyBOT1QgdHJpZ2dlciBsb2FkIG9mIDxzb3VyY2U+IGVsZW1lbnRzCkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS5odG1sCShyZXZpc2lvbiA0MTY1OCkK
KysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxOSArMSw1MiBAQAorPGh0bWw+CiA8Ym9keT4KLTxkaXY+Ci1UZXN0IHRoYXQgcmVt
b3Zpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkCi08L2Rpdj4KLTxzY3JpcHQgc3JjPXZp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci08dmlkZW8gc3JjPWJvZ3VzIGNvbnRyb2xzPgotICAgIDxz
b3VyY2Ugc3JjPWNvbnRlbnQvdGVzdC5tcDQ+PC9zb3VyY2U+Ci08L3ZpZGVvPgotPHNjcmlwdD4K
LSAgICB2aWRlbyA9IG1lZGlhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVv
JylbMF07Ci0gICAgd2FpdEZvckV2ZW50KCdlbXB0aWVkJywgZnVuY3Rpb24gKCkgewotICAgICAg
ICB2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpCisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KIAotICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRzdGFydCcsIGZ1bmN0
aW9uICgpIHsgCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1
cnJlbnRTcmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsKKyAgICA8dmlkZW8gc3JjPWNvbnRlbnQv
c2lsZW5jZS5tcGcgY29udHJvbHM+CisgICAgICAgIDxzb3VyY2Ugc3JjPWNvbnRlbnQvdGVzdC5t
cDQ+CisgICAgPC92aWRlbz4KKworICAgIDxwPlRlc3QgdGhhdCByZW1vdmluZyB2YWxpZCAnc3Jj
JyBhdHRyaWJ1dGUgRE9FUyBOT1QgdHJpZ2dlciBsb2FkIG9mICZsdDtzb3VyY2UmZ3Q7IGVsZW1l
bnRzPC9wPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisg
ICAgICAgIHZhciBsb2FkQ291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNyYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwo
dmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC9zaWxlbmNlLm1wZyIpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJpc05hTih2aWRlby5kdXJhdGlvbikiLCBmYWxzZSk7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVk
bWV0YWRhdGEoKQorICAgICAgICB7CisgICAgICAgICAgICArK2xvYWRDb3VudDsKKyAgICAgICAg
ICAgIGlmIChsb2FkQ291bnQgPT0gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0
ZXN0U3JjKCk7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ3Ny
YycpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlM
PC9zcGFuPiA6ICdsb2FkQ291bnQnIGZpcmVkICIgKyBsb2FkQ291bnQgKyAidGltZXMiICk7Cisg
ICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gc29t
ZVRpbWVMYXRlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RTcmMoKTsKICAgICAgICAg
ICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfSApOwotICAgIH0pOwotPC9zY3JpcHQ+CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRhZGF0YScsIGxvYWRlZG1ldGFk
YXRhKTsKKyAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCA0MDApIDsKKyAgICA8L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
dGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCShy
ZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAtNiwxMSArNywxNiBAQCB2YXIgdmlk
ZW87CiB2YXIgbWVkaWE7CiB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlKTsKLXRyeSB7Ci0gICAgdmlk
ZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKLSAgICBpZiAo
dmlkZW8pCi0gICAgICAgIG1lZGlhID0gdmlkZW87Ci19IGNhdGNoIChleCkgeyB9CitmaW5kTWVk
aWFFbGVtZW50KCk7CisKK2Z1bmN0aW9uIGZpbmRNZWRpYUVsZW1lbnQoKQoreworICAgIHRyeSB7
CisgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylb
MF07CisgICAgICAgIGlmICh2aWRlbykKKyAgICAgICAgICAgIG1lZGlhID0gdmlkZW87CisgICAg
fSBjYXRjaCAoZXgpIHsgfQorfQogCiBmdW5jdGlvbiBoYW5nZWQoKQogewpAQCAtNDcsOSArNTMs
MTEgQEAgZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBleAogICAgIHZhciBz
dWNjZXNzID0gZmFsc2U7CiAgICAgc3dpdGNoIChjb21wYXJpc29uKQogICAgIHsKLSAgICAgICAg
Y2FzZSAnPCc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOwotICAgICAg
ICBjYXNlICc+JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgJyE9Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVhazsKKyAg
ICAgICAgY2FzZSAnPCc6ICAgc3VjY2VzcyA9IG9ic2VydmVkIDwgIGV4cGVjdGVkOyBicmVhazsK
KyAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPD0gZXhwZWN0ZWQ7IGJyZWFr
OworICAgICAgICBjYXNlICc+JzogICBzdWNjZXNzID0gb2JzZXJ2ZWQgPiAgZXhwZWN0ZWQ7IGJy
ZWFrOworICAgICAgICBjYXNlICc+PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA+PSBleHBlY3RlZDsg
YnJlYWs7CisgICAgICAgIGNhc2UgJyE9JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCAhPSBleHBlY3Rl
ZDsgYnJlYWs7CiAgICAgICAgIGNhc2UgJz09Jzogc3VjY2VzcyA9IG9ic2VydmVkID09IGV4cGVj
dGVkOyBicmVhazsKICAgICB9CiAgICAgCkBAIC05Myw3ICsxMDEsNyBAQCBmdW5jdGlvbiB3YWl0
Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jLCBlCiAgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAog
ICAgIH0KIAotICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxs
YmFjayk7ICAgIAorICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRD
YWxsYmFjayk7CiB9CiAKIGZ1bmN0aW9uIHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZXZlbnROYW1l
LCB0ZXN0RnVuY1N0cmluZykKQEAgLTE1MCw2ICsxNTgsMTMgQEAgZnVuY3Rpb24gZmFpbFRlc3RJ
bihtcykKICAgICB9LCBtcyk7CiB9CiAKK2Z1bmN0aW9uIGZhaWxUZXN0KHRleHQpCit7CisgICAg
bG9nUmVzdWx0KGZhc2xlLCB0ZXh0KTsKKyAgICBlbmRUZXN0KCk7Cit9CisKKwogZnVuY3Rpb24g
bG9nUmVzdWx0KHN1Y2Nlc3MsIHRleHQpCiB7CiAgICAgaWYgKHN1Y2Nlc3MpCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmctZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRpbWV1cGRhdGUtd2hpbGUt
cGxheWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE3IEBACitUZXN0ICd0aW1ldXBkYXRlJyBldmVudHMgYXJlIHBvc3RlZCB3aGls
ZSBwbGF5aW5nIGJ1dCBub3Qgd2hpbGUgcGF1c2VkLgorCitSVU4odmlkZW8ucGxheSgpKQorCitF
VkVOVChsb2Fkc3RhcnQpCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKK0VWRU5UKGxvYWRlZG1ldGFk
YXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChjYW5wbGF5dGhy
b3VnaCkKK0VWRU5UKHBsYXlpbmcpCisKK1JVTih2aWRlby5wYXVzZSgpKQorRVZFTlQocGF1c2Up
CisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRpbWV1cGRh
dGUtd2hpbGUtcGxheWluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXRpbWV1cGRhdGUtd2hpbGUtcGxheWluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS13aGlsZS1wbGF5aW5nLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGJvZHk+CisgICAgCisgICAgPHZpZGVvIHNy
Yz1jb250ZW50L3Rlc3QubXA0IGNvbnRyb2xzPjwvdmlkZW8+CisKKyAgICA8cD4KKyAgICBUZXN0
ICd0aW1ldXBkYXRlJyBldmVudHMgYXJlIHBvc3RlZCB3aGlsZSBwbGF5aW5nIGJ1dCBub3Qgd2hp
bGUgcGF1c2VkLgorICAgIDwvcAorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdD4KKyAgICAKKyAgICAgICAgdmFyIHRpbWV1cGRhdGVFdmVudENvdW50
ID0gMDsKKyAgICAgICAgdmFyIGNvdW50V2hpbGVQbGF5aW5nID0gMDsKKworICAgICAgICBmdW5j
dGlvbiBzb21lVGltZUxhdGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNvdW50V2hp
bGVQbGF5aW5nICE9IHRpbWV1cGRhdGVFdmVudENvdW50KQorICAgICAgICAgICAgICAgIGZhaWxU
ZXN0KCIndGltZXVwZGF0ZScgZXZlbnRzIHBvc3RlZCBhZnRlciBwYXVzaW5nIik7CisgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwYXVzZSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50V2hpbGVQbGF5aW5nID0gdGltZXVwZGF0ZUV2ZW50
Q291bnQ7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDQwMCkgOworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
ZnVuY3Rpb24gcGxheWluZygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBydW4oInZpZGVvLnBhdXNlKCkiKTsgfSwgNTAwKSA7CisgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAgICAgbWVkaWEuYWRkRXZlbnRMaXN0
ZW5lcigidGltZXVwZGF0ZSIsIGZ1bmN0aW9uICgpIHsgKyt0aW1ldXBkYXRlRXZlbnRDb3VudDsg
fSk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50KCdlcnJvcicpOworICAgICAgICB3YWl0Rm9yRXZl
bnQoImxvYWRzdGFydCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAg
ICAgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicmF0
ZWNoYW5nZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hhbmdlIik7CisgICAg
ICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
KCJsb2FkZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgICAg
ICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgi
cGF1c2UiLCBwYXVzZSk7CisgICAgICAgIHdhaXRGb3JFdmVudCgicGxheSIpOworICAgICAgICB3
YWl0Rm9yRXZlbnQoInBsYXlpbmciLCBwbGF5aW5nKTsKKworICAgICAgICBydW4oInZpZGVvLnBs
YXkoKSIpOworICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgIDwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28644</attachid>
            <date>2009-03-15 21:20:31 -0700</date>
            <delta_ts>2009-03-15 21:23:58 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>165214</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTY5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAwIEBACisyMDA5LTAzLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU4OAorICAgICAg
ICAKKyAgICAgICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQgaW1wbGVtZW50YXRpb24gdG8gY3VycmVu
dCBIVE1MNSBzcGVjCisKKyAgICAgICAgTmV3IHRlc3RzOiAKKyAgICAgICAgICAgICAgIG1lZGlh
L21lZGlhLWNvbnN0YW50cy5odG1sCisgICAgICAgICAgICAgICBtZWRpYS92aWRlby1zZWVrLW5v
LXNyYy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc291cmNlLWFk
ZC1zcmMuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3Zl
Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1sCisg
ICAgICAgICAgICAgICBtZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRtbAor
CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDogUmVtb3ZlIG9ic29sdXRlIGV2ZW50cywgYWRk
IG5ldyBvbmVzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyIHZhcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKTogVHJpZ2dlciBsb2FkKCkgb25seSB3aGVuIHdlIGRvbid0CisgICAg
ICAgIGhhdmUgYSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVkRnJvbURvY3VtZW50KTogRGVhbCB3aXRoIHN0YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUHJvZ3Jlc3NFdmVudCk6IE5l
dywgY3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgYW5kIAorICAgICAgICBhZGQgaXQgdG8gdGhlIGV2
ZW50IHF1ZXVlIHRvIGJlIGRpc3BhdGNoIHdoZW4gdGhlIHRpbWVyIGZpcmVzLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6IE5ldywgY3JlYXRlIGEg
Z2VuZXJpYyBldmVudCBhbmQgYWRkCisgICAgICAgIGl0IHRvIHRoZSBldmVudCBxdWV1ZSB0byBi
ZSBkaXNwYXRjaCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmVucXVldWVFdmVudCk6IEFkZCBhbiBldmVudCB0byB0aGUgcXVldWUgYW5k
IHRpY2tlIHRoZSAKKyAgICAgICAgYXN5bmNoIGV2ZW50IHRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOiBEaXNwYXRjaCBhbGwg
cGVuZGluZyBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
VGltZXJGaXJlZCk6IEVpdGhlciB0cmlnZ2VyIHRoZSBpbml0aWFsIGxvYWQgb3IKKyAgICAgICAg
dHJ5IHRvIGxvYWQgdGhlIG5leHQgPHNvdXJjZT4gdXJsLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZCk6IE1pbm9yIHN0eWxlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFRoZSBmaXJzdCBwYXJ0IG9mIHRo
ZSBzcGVjIGxvYWQgYWxnb3JpdGhtLCBjbGVhbnVwCisgICAgICAgIHRoZSBjdXJyZW50IGxvYWQg
KGlmIGFueSkgYW5kIHNldCB1cCBzdGF0ZSBmb3IgYSBuZXcgbG9hZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UpOiBEZWFsIHdpdGggbm8g
J3NyYycgb3IgPHNvdXJjZT4sIHBvc3QgJ2xvYWRzdGFydCcKKyAgICAgICAgZXZlbnQsIGFuZCBp
bml0aWF0ZSBsb2FkIGZyb20gJ3NyYycgaWYgcHJlc2VudC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hpbGQpOiBJbml0aWF0ZSBsb2FkIGZyb20g
bmV4dCA8c291cmNlPiB1cmwsIG9yIHRyaWdnZXIKKyAgICAgICAgbm9uZVN1cHBvcnRlZCgpIGlm
IG5vIG1vcmUgdG8gY29uc2lkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UpOiBJbnN0YW50aWF0ZSBhIG5ldyBNZWRpYVBsYXllciBhbmQgYXNrIGl0
IHRvIGxvYWQgYSB1cmwuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdGFy
dFByb2dyZXNzRXZlbnRUaW1lcik6IFN0YXJ0IHRoZSByZXBlYXRpbmcgcHJvZ3Jlc3MgZXZlbnQg
dGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVk
KTogUG9zdCBlcnJvciBldmVudCBhbmQgc2V0IHVwIHN0YXRlIHdoZW4gbm8gdmFsaWQgCisgICAg
ICAgIG1lZGlhIHVybCB3YXMgZm91bmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUVuZ2luZUVycm9yKTogUG9zdCBlcnJvciBldmVudCBhbmQgc2V0IHVwIHN0YXRl
IHdoZW4gbm8gdmFsaWQgCisgICAgICAgIG1lZGlhIGVuZ2luZSBmYWlsZWQgd2l0aCBhIGRlY29k
ZSBlcnJvciBvciBhIG5ldHdvcmsgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKTogVXBkYXRlZCBmb3IgbmV3IHNw
ZWMgbmV0d29yayBzdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOiBVcGRhdGVkIGZvciBuZXcgc3BlYyByZWFkeSBzdGF0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRUaW1l
ckZpcmVkKTogQmFpbCBpZiB0aGUgbmV0d29yayBpcyBub3QgYWN0aXZlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vlayk6IFJldHVybiBJTlZBTElEX1NUQVRFX0VSUiBl
eGNlcHRpb24gaWYgc3RhdGUgaXMgdG9vIGxvdyBvcgorICAgICAgICBpZiBwbGF5ZXIgaGFzbid0
IGJlZW4gc2V0IHVwIHlldC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXNlIGxvYWQoKSBpcyBhc3lu
Yy4gQ2xlYXIgdGhlIGZsYWcKKyAgICAgICAgd2UgdXNlIHRvIGd1YXJkIGFnYWluc3Qgc2VuZGlu
ZyAnZW5kZWQnIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZHVyYXRpb24pOiBEb24ndCBib3RoZXIgY2FsbGluZyBtZWRpYSBlbmdpbmUgYmVmb3Jl
IGl0IGhhcyBtZXRhZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dERlZmF1bHRQbGF5YmFja1JhdGUpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLCAwIGlzIG5vIGxv
bmdlciBhbgorICAgICAgICBpbnZhbGlkIHJhdGUuIAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKTogUmVtb3ZlIGV4Y2VwdGlvbiBwYXJhbSwgMCBp
cyBubyBsb25nZXIgYW4KKyAgICAgICAgaW52YWxpZCByYXRlLiBDYWNoZSByYXRlIGJlaW5nIHNl
dCBzbyB3ZSBjYW4gdXNlIGl0IGxhdGVyIGlmIG1lZGlhIGVuZ2luZSBpc24ndCByZWFkeSBub3cu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5KTogUmVtb3ZlIGV4Y2Vw
dGlvbiBwYXJhbSwgcGxheSgpIGJlZm9yZSBsb2FkKCkgbm93IGp1c3QKKyAgICAgICAgc3RhcnRz
IGxvYWRpbmcgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5SW50ZXJuYWwpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLiBGaXJlICd3YWl0aW5n
JyBvciAncGxheWluZycKKyAgICAgICAgZXZlbnQgZGVwZW5kaW5nIG9uIGN1cnJlbnQgc3RhdGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSk6IFJlbW92ZSBleGNl
cHRpb24gcGFyYW0sIHBhdXNlKCkgYmVmb3JlIGxvYWQoKSBub3cganVzdAorICAgICAgICBzdGFy
dHMgbG9hZGluZyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKTogZGlzcGF0Y2hFdmVudEFzeW5j
IC0+IHNjaGVkdWxlRXZlbnQKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dE11dGVkKTogZGlzcGF0Y2hFdmVudEFzeW5jIC0+IHNjaGVkdWxlRXZlbnQKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6IFJlbW92ZSBleGNlcHRp
b24gcGFyYW0uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnVi
YmluZyk6IHBhdXNlKCkgZG9lc24ndCB0YWtlIGFuIGV4Y2VwdGlvbiBwYXJhbS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0UGxheWJhY2tQcm9ncmVzc1RpbWVyKTog
TmV3LCBzdGFydHMgdGltZXIgdGhhdCBmaXJlcyA0IHRpbWVzIHBlcgorICAgICAgICBzZWNvbmQg
d2hlbiB0aGUgbW92aWUgaXMgcGxheWluZyB0byB0aW1ldXBkYXRlIHNvIHdlIGNhbiBwb3N0ICd0
aW1ldXBkYXRlJyBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
bGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZCk6IFRpbWVyIHByb2MuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCk6IEJvdHRsZW5lY2sg
YXJvdW5kIHNjaGVkdWxpbmcgYSAndGltZXVwZGF0ZScKKyAgICAgICAgZXZlbnQgYmVjYXVzZSB3
ZSBib3RoIGZpcmUgdGhlbSB0aGVtIHdoZW4gdGhlIHNwZWMgc2F5cyB3ZSBzaG91bGQgYW5kIHdo
ZW4gdGhlIG1lZGlhIGVuZ2luZQorICAgICAgICBzYXlzIHRoYXQgdGltZSBoYXMganVtcGVkLCBi
dXQgd2UgZG9uJ3Qgd2FudCB0byBmaXJlIG1vcmUgdGhhbiBvbmUgYXQgYSBnaXZlbiBtb3ZpZSB0
aW1lLiBXZSBhbHNvCisgICAgICAgIHVzZSB0aGlzIGJvdHRsZW5lY2sgdG8ga2VlcCB0cmFjayBv
ZiB0aGUgbGFzdCB0aW1lIG9uZSB3YXMgcG9zdGVkIHNvIHdlIHdvbid0IGZpcmUgdG9vIG9mdGVu
CisgICAgICAgIGR1cmluZyBwbGF5YmFjay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNhblBsYXkpOiByZWFkeVN0YXRlIG5vdyB0cmFja3Mgd2hldGhlciBvciBub3Qgd2Ug
aGF2ZSBtZXRhZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQ
b3RlbnRpYWxTb3VyY2VDaGlsZCk6IE5ldywgY2hlY2tzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYSA8
c291cmNlPgorICAgICAgICBlbGVtZW50IHdpdGggYSAnc3JjJyBhdHRyaWJ1dGUgdGhhdCB3ZSBo
YXZlIG5vdCB0cmllZCB0byBsb2FkIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om5leHRTb3VyY2VDaGlsZCk6IE5ldywgcmV0dXJucyB0aGUgdXJsIGFuZCBjb250ZW50
IHR5cGUgb2YgdGhlIG5leHQKKyAgICAgICAgPHNvdXJjZT4gZWxlbWVudCB0aGF0IHdlIGhhdmVu
J3QgdHJpZWQgdG8gbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyVGltZUNoYW5nZWQpOiBTY2hlZHVsZSAnc2Vla2VkJyBldmVudCB3aGVuIHNlZWtp
bmcgY29tcGxldGVzLgorICAgICAgICBTZXQgYSBmbGFnIHdoZW4gd2UgcG9zdCB0aGUgJ2VuZGVk
JyBldmVudCwgY2xlYXIgaXQgd2hlbiB0aW1lIGNoYW5nZWQgYW5kIHdlIGFyZW4ndCBhdCB0aGUg
ZW5kIHNpbmNlCisgICAgICAgIHNvbWUgbWVkaWEgZW5naW5lcyBjYWxsIHRoaXMgcHJvYyBtb3Jl
IHRoYW4gb25jZSB3aGVuIHBsYXliYWNrIHJlYWNoZXMgdGhlIGVuZCBhbmQgc3RvcHMsIGJ1dCB3
ZQorICAgICAgICBkb24ndCB3YW50IHRvIHBvc3QgJ2VuZGVkJyBtb3JlIHRoYW4gb25jZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25DaGFu
Z2VkKTogTmV3LCBhZGRlZCBzbyBtZWRpYSBlbmdpbmUgY2FuIGluZm9ybQorICAgICAgICB3aGVu
IHRoZSBtb3ZpZSBkdXJhdGlvbiBjaGFuZ2VzIGFuZCB3ZSBjYW4gcG9zdCAnZHVyYXRpb25jaGFu
Z2VkJyBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQpOiBOZXcsIGFkZGVkIHNvIG1lZGlhIGVuZ2luZSBjYW4gaW5mb3JtIHdo
ZW4KKyAgICAgICAgdGhlIHJhdGUgY2hhbmdlZCBhbmQgd2UgY2FuIHVwZGF0ZWQgb3VyIGNhY2hl
ZCByYXRlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBrbm93CisgICAg
ICAgIHBvc3QgcGVyaW9kaWMgJ3RpbWV1cGRhdGUnIGV2ZW50cyB3aGVuIHRoZSBtb3ZpZSBpcyBh
Y3R1YWxseSBwbGF5aW5nLCBhbmQgYmVjYXVzZSB3ZSB3YW50IHRvIGtub3cKKyAgICAgICAgdGhl
IGFjdHVhbCBwbGF5YmFjayByYXRlIHdoZW4gaXQgZGlmZmVycyBmcm9tIHdoYXQgd2UgdHJpZWQg
dG8gc2V0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJT
aXplQ2hhbmdlZCk6IE5ldywgYWRkZWQgc28gbWVkaWEgZW5naW5lIGNhbiBpbmZvcm0gd2hlbgor
ICAgICAgICBhIG1vdmllJ3MgaW50cmluc2ljIHNpemUgY2hhbmdlcyBhbmQgd2UgY2FuIGluZm9y
bSB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwb3Rl
bnRpYWxseVBsYXlpbmcpOiBSZW5hbWVkIGZyb20gYWN0aXZlbHlQbGF5aW5nIHNpbmNlIHRoZSBz
cGVjIG5vdworICAgICAgICB1c2VzICJhY3RpdmVseSBwbGF5aW5nIiBmb3IgdGhpcyBjb25jZXB0
LiBVcGRhdGUgbG9naWMgZm9yIG5ldyBzdGF0ZSBuYW1lcyBhbmQgdW4tY29tbWVudCBjYWxscwor
ICAgICAgICB0byBzdG9wcGVkRHVlVG9FcnJvcnMoKSBhbmQgcGF1c2VkRm9yVXNlckludGVyYWN0
aW9uKCkgc2luY2UgdGhlIHNwZWMgc2F5cyB0aG9zZSBjb25kaWRpdG9ucworICAgICAgICBhcmUg
cGFydCBvZiB0aGUgYW5zd2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
ZW5kZWRQbGF5YmFjayk6IFVwZGF0ZSBsb2dpYyBmb3IgbmV3IHN0YXRlIG5hbWVzLiAKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9ycyk6IE5ldywg
c3BlYyBzYXlzIHRoaXMgbG9naWMgc2hvdWxkIGJlIHBhcnQgb2YKKyAgICAgICAgdGhlIGRldGVy
bWluYXRpb24gb2YgInBvdGVudGlhbGx5IHBsYXlpbmciLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKTogTmV3LCBwbGFjZWhvbGRl
ciBmb3Igd2hlbiAoaWYpIHVzZXIKKyAgICAgICAgYWdlbnQgc3VwcG9ydHMgdGhpcyBzcGVjIGNv
bmNlcHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3Rh
dGUpOiBTdG9wIHRpbWVyIHVzZWQgdG8gZmlyZSBwZXJpb2RpYyAndGltZXVwZGF0ZScgCisgICAg
ICAgIGV2ZW50cyB3aGVuIHdlIHBhdXNlcyB0aGUgbW92aWUuIFNldCB0aGUgbWVkaWEgZW5naW5l
IHJhdGUgYmVmb3JlIGNhbGxpbmcgcGxheSgpIGluIGNhc2UgaXQKKyAgICAgICAgd2Fzbid0IHNl
dCB1cCB3aGVuIHRoZSByYXRlIHdhcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c3RvcFBlcmlvZGljVGltZXJzKTogTmV3LCBzdG9wIHRoZSBwcm9ncmVzcyBl
dmVudCBhbmQgJ3RpbWV1cGF0ZScKKyAgICAgICAgZXZlbnQgdGltZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOiBOZXcsIGxvZ2ljIHB1
bGxlZCBvdXQgb2YgZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgYW5kIHVwZGF0
ZWQgZm9yIHRoZSBjdXJyZW50IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6IE1vdmVkIHNvbWUgbG9naWMgdG8gdXNl
ckNhbmNlbGxlZExvYWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1
bWVudERpZEJlY29tZUFjdGl2ZSk6IFVwZGF0ZSBjb21tZW50cy4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmluaXRpYWxVUkwpOiBVcGRhdGUgZm9yIHJlZmFjdG9yaW5nIG9m
IGNvZGUgdGhhdCBkZXRlcm1pbmVzIHRoZSAKKyAgICAgICAgaW5pdGlhbCB1cmwuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IENoYW5nZSBSZWFkeVN0YXRlIGFuZCBOZXR3b3Jr
U3RhdGUgZW51bXMgdG8gbWF0Y2ggbmFtZXMgaW4gdGhlIHNwZWMsCisgICAgICAgIHVwZGF0ZSBm
b3IgY2hhbmdlcyBpbiAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBVcGRhdGUgcmVhZHkgc3Rh
dGUgYW5kIG5ldHdvcmsgc3RhdGUgY29uc3RhbnRzIGZvciBzcGVjIGNoYW5nZXMuCisgICAgICAg
IGRlZmF1bHRQbGF5YmFja1JhdGUsIHBsYXliYWNrUmF0ZSwgcGxheSgpLCBhbmQgcGF1c2UoKSBu
byBsb25nZXIgcmFpc2UgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KTogVXBkYXRlIGZvciBuZXR3b3JrIHN0YXRlIG5hbWUgY2hhbmdlcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVQb3N0ZXJJbWFnZSk6IFVwZGF0ZSBmb3IgcmVhZHkgc3Rh
dGUgbmFtZSBjaGFuZ2VzLgorCisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVycm9yOjopOiBhZGQgTUVESUFfRVJSX05PTkVfU1VQUE9SVEVELgor
CisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmlkbDogYWRkIE1FRElBX0VSUl9OT05FX1NVUFBP
UlRFRC4KKworICAgICAgICAqIGxvYWRlci9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRG9jdW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBwbGF5KCkgYW5kIHBh
dXNlKCkgZG9uJ3QgdGFrZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQ
cml2YXRlOjpyZWFkeVN0YXRlKTogVXBkYXRlIGZvciBuZXd0b3JrIHN0YXRlIG5hbWUgY2hhbmdl
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCk6IE5ldywgc28g
ZW5naW5lIGNhbiByZXBvcnQgaW50cmluc2ljIHNpemUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6IE5ldywgc28gZW5naW5lIGNhbiByZXBvcnQg
cmF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6IE5ldywgc28gZW5naW5lIGNhbiByZXBvcnQgZHVyYXRpb24gY2hhbmdlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOiBVcGRhdGUgTmV0d29ya1N0YXRl
IGFuZCBSZWFkeVN0YXRlIGVudW0gbmFtZXMgdG8gbWF0Y2ggc3BlYworICAgICAgICBzdGF0ZXMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlv
bkNoYW5nZWQpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJSYXRlQ2hhbmdlZCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Q2xpZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Oik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRh
dGVTdGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZGluZ0ZhaWxlZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6IFVwZGF0ZSBmb3IgbmV0d29yay9yZWFkeSBzdGF0
ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIFJlbW92ZSBlbmRQb2ludFRpbWVyLCBpdCBpcyBubyBs
b25nZXIgbmVjZXNzYXJ5LiBBZGQgbV9lbmFibGVkVHJhY2tDb3VudCBhbmQgbV9kdXJhdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bWV0YURhdGFBdmFpbGFibGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlKTogTm8gbW9yZSBtX2VuZFBvaW50VGltZXIgb3IgbV9lbmRUaW1lLiBJbml0aWFsaXpl
CisgICAgICAgIG1fZW5hYmxlZFRyYWNrQ291bnQgYW5kIG1fZHVyYXRpb24uIFVwZGF0ZSBmb3Ig
bmV0d29yay9yZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KTog
Tm8gbW9yZSBtX2VuZFBvaW50VGltZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnBhdXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGU6OmN1cnJlbnRUaW1lKTogTm8gbW9yZSBtX2VuZFRpbWUuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OnNlZWspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6ZG9TZWVrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGU6OnNldEVuZFRpbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4gUmV0dXJuCisgICAgICAgIGRpZmZlcmVudCBlcnJvcnMgZGVwZW5k
aW5nIG9uIHdoYXQgY2F1c2VzIGEgZmFpbHVyZS4gV2F0Y2ggZm9yIGFuZCByZXBvcnQgZHVyYXRp
b24gY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmF0ZUNo
YW5nZWQpOiBSZXBvcnQgcmF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpzaXplQ2hhbmdlZCk6IFJlcG9ydCBzaXplIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCk6IE5vIG1vcmUgZW5kcG9pbnQgdGlt
ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnNldFZpc2libGUpOiBV
cGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MpOiBEb24n
dCByZXR1cm4gbnVtYmVyIG9mIHVuc3VwcG9ydGVkCisgICAgICAgIHRyYWNrcywgc3RvcmUgaW4g
bV9lbmFibGVkVHJhY2tDb3VudCBzbyB3ZSBjYW4gdXNlIGl0IHRvIGhlbHAgZGV0ZXJtaW5lIGNh
dXNlcyBvZiBmYWlsdXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQ
bGF5ZXJQcml2YXRlUGhvbm9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0YXRl
IG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bG9h
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVT
dGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bmF0
dXJhbFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUpOiBObyBtb3JlIG1fZW5kUG9pbnRUaW1l
ci4gVXBkYXRlIGZvciAKKyAgICAgICAgbmV0d29yay9yZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9y
IG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLiBObyBtb3JlCisgICAgICAgIG1fZW5k
UG9pbnRUaW1lci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGxheSk6
IE5vIG1vcmUgbV9lbmRQb2ludFRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjpwYXVzZSk6IERpdHRvLiAKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6c2V0RW5kVGltZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjp1cGRhdGVTdGF0ZXMpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaWRFbmQp
OiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmg6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBVcGRhdGUgZm9yIG5l
dHdvcmsvcmVhZHkgc3RhdGUgCisgICAgICAgIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTog
RGl0dG8uCisKIDIwMDktMDMtMTMgIE1pa2UgQmVsc2hlICA8bWlrZUBiZWxzaGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlz
aW9uIDQxNjU4KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsMjQgKzEwMiwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8od2Via2l0
QmVmb3JlVGV4dEluc2VydGVkKSBcCiAgICAgbWFjcm8od2Via2l0RWRpdGFibGVDb250ZW50Q2hh
bmdlZCkgXAogICAgIFwKLSAgICBtYWNybyhjYW5zaG93Y3VycmVudGZyYW1lKSBcCiAgICAgbWFj
cm8oY2FucGxheSkgXAogICAgIG1hY3JvKGNhbnBsYXl0aHJvdWdoKSBcCi0gICAgbWFjcm8oZGF0
YXVuYXZhaWxhYmxlKSBcCiAgICAgbWFjcm8oZHVyYXRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhl
bXB0aWVkKSBcCiAgICAgbWFjcm8oZW5kZWQpIFwKLSAgICBtYWNybyhsb2FkZWRmaXJzdGZyYW1l
KSBcCisgICAgbWFjcm8obG9hZGVkZGF0YSkgXAogICAgIG1hY3JvKGxvYWRlZG1ldGFkYXRhKSBc
CiAgICAgbWFjcm8ocGF1c2UpIFwKICAgICBtYWNybyhwbGF5KSBcCisgICAgbWFjcm8ocGxheWlu
ZykgXAogICAgIG1hY3JvKHJhdGVjaGFuZ2UpIFwKKyAgICBtYWNybyhzZWVrZWQpIFwKKyAgICBt
YWNybyhzZWVraW5nKSBcCiAgICAgbWFjcm8odGltZXVwZGF0ZSkgXAogICAgIG1hY3JvKHZvbHVt
ZWNoYW5nZSkgXAogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAgICBcCiAgICAgbWFjcm8ocHJvZ3Jl
c3MpIFwKICAgICBtYWNybyhzdGFsbGVkKSBcCisgICAgbWFjcm8oc3VzcGVuZCkgXAogICAgIFwK
ICAgICBtYWNybyh3ZWJraXRBbmltYXRpb25FbmQpIFwKICAgICBtYWNybyh3ZWJraXRBbmltYXRp
b25TdGFydCkgXApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNDE2
NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NF
dmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAjaW5jbHVkZSAiUmVuZGVyUGFydE9iamVjdC5oIgpAQCAtNTgsNiArNTks
NyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTcwLDI3ICs3MiwzMyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0CiAgICAgLCBtX2xvYWRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRp
bWVyRmlyZWQpCiAgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVu
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaW1lcih0aGlz
LCAmSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX3Bs
YXliYWNrUHJvZ3Jlc3NUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9n
cmVzc1RpbWVyRmlyZWQpCisgICAgLCBtX3BsYXliYWNrUmF0ZSgxLjBmKQogICAgICwgbV9kZWZh
dWx0UGxheWJhY2tSYXRlKDEuMGYpCi0gICAgLCBtX25ldHdvcmtTdGF0ZShFTVBUWSkKLSAgICAs
IG1fcmVhZHlTdGF0ZShEQVRBX1VOQVZBSUxBQkxFKQotICAgICwgbV9iZWd1bihmYWxzZSkKLSAg
ICAsIG1fbG9hZGVkRmlyc3RGcmFtZShmYWxzZSkKLSAgICAsIG1fYXV0b3BsYXlpbmcodHJ1ZSkK
KyAgICAsIG1fbmV0d29ya1N0YXRlKE5FVFdPUktfRU1QVFkpCisgICAgLCBtX3JlYWR5U3RhdGUo
SEFWRV9OT1RISU5HKQogICAgICwgbV92b2x1bWUoMS4wZikKLSAgICAsIG1fbXV0ZWQoZmFsc2Up
Ci0gICAgLCBtX3BhdXNlZCh0cnVlKQotICAgICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9j
dXJyZW50VGltZUR1cmluZ1NlZWsoMCkKICAgICAsIG1fcHJldmlvdXNQcm9ncmVzcygwKQogICAg
ICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkK
LSAgICAsIG1fc2VudFN0YWxsZWRFdmVudChmYWxzZSkKLSAgICAsIG1fbG9hZE5lc3RpbmdMZXZl
bCgwKQotICAgICwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwoMCkKLSAgICAsIG1f
cGF1c2VkSW50ZXJuYWwoZmFsc2UpCi0gICAgLCBtX2luQWN0aXZlRG9jdW1lbnQodHJ1ZSkKKyAg
ICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lKDApCisgICAgLCBtX2xhc3RUaW1lVXBk
YXRlRXZlbnRNb3ZpZVRpbWUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSkKKyAgICAsIG1f
bG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2UpCisgICAgLCBtX2N1cnJlbnRTb3VyY2VOb2RlKDAp
CiAgICAgLCBtX3BsYXllcigwKQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMp
CiAgICAgLCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKDApCisgICAgLCBtX3Byb2Nl
c3NpbmdMb2FkKGZhbHNlKQorICAgICwgbV9kZWxheWluZ1RoZUxvYWRFdmVudChmYWxzZSkKKyAg
ICAsIG1faGF2ZUZpcmVkTG9hZGVkRGF0YShmYWxzZSkKKyAgICAsIG1faW5BY3RpdmVEb2N1bWVu
dCh0cnVlKQorICAgICwgbV9hdXRvcGxheWluZyh0cnVlKQorICAgICwgbV9tdXRlZChmYWxzZSkK
KyAgICAsIG1fcGF1c2VkKHRydWUpCisgICAgLCBtX3NlZWtpbmcoZmFsc2UpCisgICAgLCBtX3Nl
bnRTdGFsbGVkRXZlbnQoZmFsc2UpCisgICAgLCBtX3NlbnRFbmRFdmVudChmYWxzZSkKKyAgICAs
IG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAgLCBtX3NlbmRQcm9ncmVzc0V2ZW50cyh0cnVl
KQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9uZWVkV2lkZ2V0
VXBkYXRlKGZhbHNlKQpAQCAtMTE3LDkgKzEyNSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCgKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0g
YXR0ci0+bmFtZSgpOwogICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIC8v
IDMuMTQuOS4yLgotICAgICAgICAvLyBjaGFuZ2UgdG8gc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBs
b2FkKCkKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBFTVBU
WSkKKyAgICAgICAgLy8gZG9uJ3QgaGF2ZSBhIHNyYyBvciBhbnkgPHNvdXJjZT4gY2hpbGRyZW4s
IHRyaWdnZXIgbG9hZAorICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIG1fbG9hZFN0YXRlID09
IFdhaXRpbmdGb3JTb3VyY2UpCiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICB9IAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTE2NiwxMCArMTczLDggQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewotICAgIGlmIChuZXR3b3JrU3RhdGUo
KSAhPSBFTVBUWSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBwYXVzZShl
Yyk7Ci0gICAgfQorICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCisgICAg
ICAgIHBhdXNlKCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0K
IApAQCAtMjAwLDQwICsyMDUsNTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxv
YWQoKQogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojppbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnROYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVByb2dyZXNzRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgaWYgKCFtX3NlbmRQcm9n
cmVzc0V2ZW50cykKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IGRvbid0IHNjaGVk
dWxlIHRpbWV1cGRhdGUgb3IgcHJvZ3Jlc3MgZXZlbnRzIHVubGVzcyB0aGVyZSBhcmUgcmVnaXN0
ZXJlZCBsaXN0ZW5lcnMKKy8qCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucHJv
Z3Jlc3NFdmVudCAmJiAhZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50Ojp4eHh4
eHhfTElTVEVORVIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50ICYmICFkb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUo
RG9jdW1lbnQ6Onh4eHh4eF9MSVNURU5FUikpCisgICAgICAgIHJldHVybjsKKyovCisKICAgICBi
b29sIHRvdGFsS25vd24gPSBtX3BsYXllciAmJiBtX3BsYXllci0+dG90YWxCeXRlc0tub3duKCk7
CiAgICAgdW5zaWduZWQgbG9hZGVkID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+Ynl0ZXNMb2FkZWQo
KSA6IDA7CiAgICAgdW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVyLT50b3RhbEJ5
dGVzKCkgOiAwOwotICAgIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWUsIHRvdGFsS25v
d24sIGxvYWRlZCwgdG90YWwpOworCisgICAgUmVmUHRyPFByb2dyZXNzRXZlbnQ+IGV2dCA9IFBy
b2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHRvdGFsS25vd24sIGxvYWRlZCwgdG90YWwp
OworICAgIGVucXVldWVFdmVudChldnQpOworCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
IHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlzcGF0Y2hFdmVudEFzeW5jKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKQogewotICAgIG1fYXN5bmNFdmVudHNUb0Rpc3BhdGNoLmFwcGVuZChldmVudE5h
bWUpOworICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRy
dWUpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2
ZW50PiBldmVudCkKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKGV2ZW50KTsKICAgICBp
ZiAoIW1fYXN5bmNFdmVudFRpbWVyLmlzQWN0aXZlKCkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4qKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxI
VE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAKLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRp
bmdFdmVudHMpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3VudDsgKytuZHgpIAorICAgICAgICBk
aXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbbmR4XS5yZWxlYXNlKCksIGVjKTsKIH0KIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFF
bGVtZW50PiopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpbWVyPEhU
TUxNZWRpYUVsZW1lbnQ+KikKIHsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBhc3luY0V2ZW50
c1RvRGlzcGF0Y2g7Ci0gICAgbV9hc3luY0V2ZW50c1RvRGlzcGF0Y2guc3dhcChhc3luY0V2ZW50
c1RvRGlzcGF0Y2gpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gYXN5bmNFdmVudHNUb0Rpc3BhdGNo
LnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgY291bnQ7ICsrbikKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoYXN5bmNFdmVudHNUb0Rpc3BhdGNoW25dLCBmYWxzZSwg
dHJ1ZSk7CisgICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNlRWxlbWVudCkK
KyAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAgIGVsc2UKKyAgICAgICAgbG9hZElu
dGVybmFsKCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplVGltZU9mZnNldChmbG9hdCB0
aW1lKQpAQCAtMzIxLDUyICszNDUsNTUgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBs
YXlUeXBlKGNvbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9h
ZFJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbiAmJiAhcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIGVsc2UK
KyAgICAgICAgbG9hZEludGVybmFsKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZEludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
SW50ZXJuYWwoKQogewotICAgIFN0cmluZyBtZWRpYVNyYzsKLSAgICBDb250ZW50VHlwZSBjb250
ZW50VHlwZSgiIik7Ci0KLSAgICAvLyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3Vy
Y2UKLSAgICAvLyAxCi0gICAgLy8gaWYgYW4gZXZlbnQgZ2VuZXJhdGVkIGR1cmluZyBsb2FkKCkg
ZW5kcyB1cCByZS1lbnRlcmluZyBsb2FkKCksIHRlcm1pbmF0ZSBwcmV2aW91cyBpbnN0YW5jZXMK
LSAgICBtX2xvYWROZXN0aW5nTGV2ZWwrKzsKLSAgICBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3Rp
bmdMZXZlbCA9IG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICAKLSAgICBtX3Byb2dyZXNzRXZlbnRU
aW1lci5zdG9wKCk7Ci0gICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAgLy8gMSAt
IElmIHRoZSBsb2FkKCkgbWV0aG9kIGZvciB0aGlzIGVsZW1lbnQgaXMgYWxyZWFkeSBiZWluZyBp
bnZva2VkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChtX3Byb2Nlc3NpbmdMb2Fk
KQorICAgICAgICByZXR1cm47CisgICAgbV9wcm9jZXNzaW5nTG9hZCA9IHRydWU7CiAgICAgCisg
ICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAgbV9sb2FkVGltZXIuc3RvcCgpOwotICAgIAot
ICAgIC8vIDIKLSAgICBpZiAobV9iZWd1bikgewotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Cisg
ICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAgbV9oYXZlRmlyZWRMb2FkZWREYXRh
ID0gZmFsc2U7CisKKyAgICAvLyAyIC0gQWJvcnQgYW55IGFscmVhZHktcnVubmluZyBpbnN0YW5j
ZSBvZiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhpcyBlbGVtZW50Lgor
ICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOworCisgICAgLy8gMyAtIElmIHRoZXJlIGFyZSBh
bnkgdGFza3MgZnJvbSB0aGUgbWVkaWEgZWxlbWVudCdzIG1lZGlhIGVsZW1lbnQgZXZlbnQgdGFz
ayBzb3VyY2UgaW4gCisgICAgLy8gb25lIG9mIHRoZSB0YXNrIHF1ZXVlcywgdGhlbiByZW1vdmUg
dGhvc2UgdGFza3MuCisgICAgbV9wZW5kaW5nRXZlbnRzLmNsZWFyKCk7CisgICAgCisgICAgLy8g
NCAtIElmIHRoZSBtZWRpYSBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGlzIHNldCB0byBORVRXT1JL
X0xPQURJTkcgb3IgTkVUV09SS19JRExFLCBzZXQgdGhlIAorICAgIC8vIGVycm9yIGF0dHJpYnV0
ZSB0byBhIG5ldyBNZWRpYUVycm9yIG9iamVjdCB3aG9zZSBjb2RlIGF0dHJpYnV0ZSBpcyBzZXQg
dG8gTUVESUFfRVJSX0FCT1JURUQsIAorICAgIC8vIGFuZCBmaXJlIGEgcHJvZ3Jlc3MgZXZlbnQg
Y2FsbGVkIGFib3J0IGF0IHRoZSBtZWRpYSBlbGVtZW50LgorICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA9PSBORVRXT1JLX0xPQURJTkcgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19JRExFKSB7
CiAgICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFf
RVJSX0FCT1JURUQpOwotICAgICAgICBpZiAobV9zZW5kUHJvZ3Jlc3NFdmVudHMpCi0gICAgICAg
ICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50
KTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIAorICAgICAgICAv
LyBmaXJlIHN5bmNocm9ub3VzICdhYm9ydCcKKyAgICAgICAgYm9vbCB0b3RhbEtub3duID0gbV9w
bGF5ZXIgJiYgbV9wbGF5ZXItPnRvdGFsQnl0ZXNLbm93bigpOworICAgICAgICB1bnNpZ25lZCBs
b2FkZWQgPSBtX3BsYXllciA/IG1fcGxheWVyLT5ieXRlc0xvYWRlZCgpIDogMDsKKyAgICAgICAg
dW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVyLT50b3RhbEJ5dGVzKCkgOiAwOwor
ICAgICAgICBkaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRv
dGFsS25vd24sIGxvYWRlZCwgdG90YWwpOwogICAgIH0KICAgICAKLSAgICAvLyAzCisgICAgLy8g
NSAKICAgICBtX2Vycm9yID0gMDsKLSAgICBtX2xvYWRlZEZpcnN0RnJhbWUgPSBmYWxzZTsKICAg
ICBtX2F1dG9wbGF5aW5nID0gdHJ1ZTsKIAotICAgIC8vIDQKLSAgICBzZXRQbGF5YmFja1JhdGUo
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpLCBlYyk7CisgICAgLy8gNgorICAgIHNldFBsYXliYWNrUmF0
ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgIAotICAgIC8vIDUKLSAgICBpZiAobmV0d29y
a1N0YXRlKCkgIT0gRU1QVFkpIHsKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBFTVBUWTsKLSAg
ICAgICAgbV9yZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJMRTsKKyAgICAvLyA3CisgICAgaWYg
KG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkpIHsKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0VNUFRZOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7
CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3BsYXllcikgewpAQCAtMzc0LDMxICs0MDEsNzggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoRXhjZQogICAgICAgICAgICAgbV9wbGF5ZXItPnNlZWso
MCk7CiAgICAgICAgIH0KICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmVtcHRpZWRFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAobV9sb2FkTmVzdGluZ0xl
dmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBnb3Rv
IGVuZDsKICAgICB9CiAgICAgCi0gICAgLy8gNgotICAgIG1lZGlhU3JjID0gc2VsZWN0TWVkaWFV
UkwoY29udGVudFR5cGUpOworICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKKyAgICBtX3Byb2Nl
c3NpbmdMb2FkID0gZmFsc2U7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVk
aWFSZXNvdXJjZSgpCit7CisgICAgLy8gMSAtIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBuZWl0
aGVyIGEgc3JjIGF0dHJpYnV0ZSBub3IgYW55IHNvdXJjZSBlbGVtZW50IGNoaWxkcmVuLCBydW4g
dGhlc2Ugc3Vic3RlcHMKKyAgICBTdHJpbmcgbWVkaWFTcmMgPSBnZXRBdHRyaWJ1dGUoc3JjQXR0
cik7CisgICAgaWYgKCFtZWRpYVNyYyAmJiAhaGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkpIHsK
KyAgICAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNlOworCisgICAgICAgIC8vIDEg
LSAgU2V0IHRoZSBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UKKyAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKyAgICAgICAgCisgICAgICAgIC8vIDIg
LSBXaGlsZSB0aGUgbWVkaWEgZWxlbWVudCBoYXMgbmVpdGhlciBhIHNyYyBhdHRyaWJ1dGUgbm9y
IGFueSBzb3VyY2UgZWxlbWVudCBjaGlsZHJlbiwgCisgICAgICAgIC8vIHdhaXQuIChUaGlzIHN0
ZXBzIG1pZ2h0IHdhaXQgZm9yZXZlci4pCisKKyAgICAgICAgbV9kZWxheWluZ1RoZUxvYWRFdmVu
dCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMgorICAgIG1fZGVs
YXlpbmdUaGVMb2FkRXZlbnQgPSB0cnVlOworCisgICAgLy8gMworICAgIG1fbmV0d29ya1N0YXRl
ID0gTkVUV09SS19MT0FESU5HOworCisgICAgLy8gNAorICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVu
dChldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQpOworCisgICAgLy8gNSAtIElmIHRoZSBtZWRp
YSBlbGVtZW50IGhhcyBhIHNyYyBhdHRyaWJ1dGUsIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzCisg
ICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoIiIpOworICAgIGlmICghbWVkaWFTcmMuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobWVkaWFT
cmMpLnN0cmluZygpOworICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3JjQXR0cjsK
KyAgICAgICAgbG9hZFJlc291cmNlKG1lZGlhU3JjLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIHRoZSBzb3VyY2UgZWxlbWVudHMgd2ls
bCBiZSB1c2VkCisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7CisgICAgbG9hZE5leHRTb3Vy
Y2VDaGlsZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hp
bGQoKQoreworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKCIiKTsKKyAgICBTdHJpbmcgbWVk
aWFTcmM7CisKKyAgICBtZWRpYVNyYyA9IG5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUpOwog
ICAgIGlmIChtZWRpYVNyYy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKLSAgICAgICAgZ290byBlbmQ7CisgICAgICAgIG5vbmVTdXBwb3J0ZWQoKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyA3Ci0gICAgbV9uZXR3b3JrU3RhdGUgPSBM
T0FESU5HOwotICAgIAotICAgIC8vIDgKLSAgICBtX2N1cnJlbnRTcmMgPSBtZWRpYVNyYzsKIAot
ICAgIC8vIDkKLSAgICBtX2JlZ3VuID0gdHJ1ZTsgICAgICAgIAotICAgIGlmIChtX3NlbmRQcm9n
cmVzc0V2ZW50cykKLSAgICAgICAgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5s
b2Fkc3RhcnRFdmVudCwgZmFsc2UsIDAsIDApOwotICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwg
PCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCkKLSAgICAgICAgZ290byBlbmQ7Ci0g
ICAgCi0gICAgLy8gMTAsIDExLCAxMiwgMTMKKyAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9t
U291cmNlRWxlbWVudDsKKyAgICBsb2FkUmVzb3VyY2UobWVkaWFTcmMsIGNvbnRlbnRUeXBlKTsK
K30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoU3RyaW5nIHVybCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIC8vIFRoZSByZXNvdXJjZSBmZXRjaCBhbGdv
cml0aG0gCisKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElORzsKKworICAgIG1f
Y3VycmVudFNyYyA9IHVybDsKKworICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykgCisgICAg
ICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CisKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAgICAgbV9wbGF5ZXIuY2xlYXIoKTsKICAgICBtX3BsYXllci5zZXQobmV3
IE1lZGlhUGxheWVyKHRoaXMpKTsKQEAgLTQwOCwzMyArNDgyLDc3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZEludGVybmFsKEV4Y2UKICNlbmRpZgogCiAgICAgdXBkYXRlVm9sdW1lKCk7
CisKICAgICBtX3BsYXllci0+bG9hZChtX2N1cnJlbnRTcmMsIGNvbnRlbnRUeXBlKTsKLSAgICBp
ZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwp
Ci0gICAgICAgIGdvdG8gZW5kOwogICAgIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBy
ZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIAotICAgIC8vIDE0Ci0gICAgaWYg
KG1fc2VuZFByb2dyZXNzRXZlbnRzKSB7Ci0gICAgICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUg
PSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIG1fcHJldmlvdXNQcm9ncmVzcyA9IDA7Ci0g
ICAgICAgIGlmIChtX2JlZ3VuKQotICAgICAgICAgICAgLy8gMzUwbXMgaXMgbm90IG1hZ2ljLCBp
dCBpcyBpbiB0aGUgc3BlYyEKLSAgICAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0YXJ0
UmVwZWF0aW5nKDAuMzUwKTsKLSAgICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3Rh
cnRQcm9ncmVzc0V2ZW50VGltZXIoKQoreworICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSBX
VEY6OmN1cnJlbnRUaW1lKCk7CisgICAgbV9wcmV2aW91c1Byb2dyZXNzID0gMDsKKyAgICAvLyAz
NTBtcyBpcyBub3QgbWFnaWMsIGl0IGlzIGluIHRoZSBzcGVjIQorICAgIG1fcHJvZ3Jlc3NFdmVu
dFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMzUwKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpub25lU3VwcG9ydGVkKCkKK3sKKyAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICBtX2xv
YWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7
CisKKyAgICAvLyAzIC0gUmVhY2hpbmcgdGhpcyBzdGVwIGluZGljYXRlcyB0aGF0IGVpdGhlciB0
aGUgVVJMIGZhaWxlZCB0byByZXNvbHZlLCBvciB0aGUgbWVkaWEgCisgICAgLy8gcmVzb3VyY2Ug
ZmFpbGVkIHRvIGxvYWQuIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJy
b3Igb2JqZWN0IHdob3NlIAorICAgIC8vIGNvZGUgYXR0cmlidXRlIGlzIHNldCB0byBNRURJQV9F
UlJfTk9ORV9TVVBQT1JURUQuCisgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRp
YUVycm9yOjpNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworCisgICAgLy8gNC0gU2V0IHRoZSBl
bGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19OT19TT1VSQ0Ug
dmFsdWUuCisgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKworICAgIC8v
IDUgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxlZCBlcnJvciBh
dCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQpOyAKKworICAgIC8vIDYgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWlu
Zy10aGUtbG9hZC1ldmVudCBmbGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBs
b2FkIGV2ZW50LgorICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKIAotZW5kOgot
ICAgIEFTU0VSVChtX2xvYWROZXN0aW5nTGV2ZWwpOwotICAgIG1fbG9hZE5lc3RpbmdMZXZlbC0t
OworICAgIC8vIEFib3J0IHRoZXNlIHN0ZXBzLiBVbnRpbCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBp
bnZva2VkLCB0aGUgZWxlbWVudCB3b24ndCBhdHRlbXB0IHRvIGxvYWQgYW5vdGhlciByZXNvdXJj
ZS4KKyAgICAKKyAgICBpZiAoaXNWaWRlbygpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlk
ZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdlKCk7CisgICAgaWYgKHJlbmRlcmVy
KCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVFcnJvcihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+
IGVycikKK3sKKyAgICAvLyAxIC0gVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0
Y2hpbmcgcHJvY2Vzcy4KKyAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICBtX2xvYWRTdGF0
ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisKKyAgICAvLyAyIC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1
dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hvc2UgY29kZSBhdHRyaWJ1dGUgaXMgCisg
ICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9ERUNPREUuCisgICAgbV9l
cnJvciA9IGVycjsKKworICAgIC8vIDMgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNz
IGV2ZW50IGNhbGxlZCBlcnJvciBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBzY2hlZHVsZVBy
b2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKKworICAgIC8vIDMgLSBTZXQg
dGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0VNUFRZ
IHZhbHVlIGFuZCBxdWV1ZSBhIAorICAgIC8vIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBj
YWxsZWQgZW1wdGllZCBhdCB0aGUgZWxlbWVudC4KKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdP
UktfRU1QVFk7CisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsK
KworICAgIC8vIDQgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBm
bGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBsb2FkIGV2ZW50LgorICAgIG1f
ZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKworICAgIC8vIDUgLSBBYm9ydCB0aGUgb3Zl
cmFsbCByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgorICAgIG1fY3VycmVudFNvdXJjZU5v
ZGUgPSAwOworCit9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZXR3b3Jr
U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBpZiAoIW1fYmVndW4pCi0gICAgICAg
IHJldHVybjsKLSAgICAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7
CiAgICAgc2V0TmV0d29ya1N0YXRlKG1fcGxheWVyLT5uZXR3b3JrU3RhdGUoKSk7CiAgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKQEAgLTQ0NCw4NCArNTYyLDU4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE0KIHsKICAgICBpZiAoc3RhdGUg
PT0gTWVkaWFQbGF5ZXI6OkVtcHR5KSB7CiAgICAgICAgIC8vIGp1c3QgdXBkYXRlIHRoZSBjYWNo
ZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyAKLSAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBFTVBUWTsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZ
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsID0gbV9sb2FkTmVzdGluZ0xldmVsOwotICAgIAotICAgIC8vIDMuMTQuOS40
LiBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIC8vIDE0Ci0gICAgaWYgKHN0YXRlID09
IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkKSB7Ci0gICAgICAgIC8vZGVsZXRlIG1fcGxheWVyOwot
ICAgICAgICAvL21fcGxheWVyID0gMDsKLSAgICAgICAgLy8gRklYTUUgYmV0dGVyIGVycm9yIGhh
bmRsaW5nCi0gICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6
TUVESUFfRVJSX05FVFdPUkspOwotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIG1f
cHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKLSAgICAgICAgCi0gICAgICAgIGluaXRBbmREaXNw
YXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKLSAgICAgICAgaWYg
KG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQor
CisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvciB8fCBzdGF0ZSA9PSBN
ZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yIHx8IHN0YXRlID09IE1lZGlhUGxheWVyOjpEZWNvZGVF
cnJvcikgeworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAgICAgICAvLyBJZiB3
ZSBmYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIGxvYWQgYSA8c291cmNlPiBlbGVtZW50LCB0aGUgbW92
aWUgd2FzIG5ldmVyIHBhcnNlZCwgYW5kIHRoZXJlIGFyZSBtb3JlCisgICAgICAgIC8vIDxzb3Vy
Y2U+IGNoaWxkcmVuLCBzY2hlZHVsZSB0aGUgbmV4dCBvbmUgd2l0aG91dCByZXBvcnRpbmcgYW4g
ZXJyb3IKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhBVkVfTUVUQURBVEEgJiYgbV9sb2Fk
U3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3VyY2VFbGVtZW50ICYmIGhhdmVQb3RlbnRpYWxTb3VyY2VD
aGlsZCgpKSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gRU1QVFk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcikKKyAgICAg
ICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1F
RElBX0VSUl9ORVRXT1JLKSk7CisgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IE1lZGlhUGxheWVy
OjpEZWNvZGVFcnJvcikKKyAgICAgICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6
Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ERUNPREUpKTsKKyAgICAgICAgZWxzZSBpZiAo
c3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKQorICAgICAgICAgICAgbm9uZVN1cHBv
cnRlZCgpOwogCiAgICAgICAgIGlmIChpc1ZpZGVvKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdlKCk7CiAKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChzdGF0ZSA+PSBN
ZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0ZSA8IExPQURJTkcpCi0gICAgICAg
IG1fbmV0d29ya1N0YXRlID0gTE9BRElORzsKLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQ
bGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmIG1fbmV0d29ya1N0YXRlIDwgTE9BREVEX01FVEFEQVRB
KSB7Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTE9BREVEX01FVEFEQVRBOwotICAgICAgICAK
LSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdl
RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1f
dGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmxvYWRlZG1l
dGFkYXRhRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZl
bCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0
RnJhbWUgJiYgbV9uZXR3b3JrU3RhdGUgPCBMT0FERURfRklSU1RfRlJBTUUpIHsKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBMT0FERURfRklSU1RfRlJBTUU7Ci0gICAgICAgIAotICAgICAgICBz
ZXRSZWFkeVN0YXRlKENBTl9TSE9XX0NVUlJFTlRfRlJBTUUpOwotICAgICAgICAKLSAgICAgICAg
aWYgKGlzVmlkZW8oKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQq
Pih0aGlzKS0+dXBkYXRlUG9zdGVySW1hZ2UoKTsKIAotICAgICAgICBpZiAobV9sb2FkTmVzdGlu
Z0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX2xvYWRlZEZpcnN0RnJhbWUgPSB0cnVlOwotI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5n
ZWQoKTsKLSAgICAgICAgfQotI2VuZGlmICAgICAgICAKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQ
bGF5ZXI6OklkbGUgJiYgbV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0lETEUpIHsKKyAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG1fcGxheWVyLT5yZWFkeVN0YXRlKCkpIDwg
SEFWRV9FTk9VR0hfREFUQSk7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19JRExF
OworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICAgICAgc2NoZWR1bGVQcm9ncmVz
c0V2ZW50KGV2ZW50TmFtZXMoKS5zdXNwZW5kRXZlbnQpOworICAgIH0KKworICAgIGlmIChzdGF0
ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0ZSA8IE5FVFdPUktfTE9B
RElORykgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8UmVhZHlTdGF0ZT4obV9wbGF5ZXIt
PnJlYWR5U3RhdGUoKSkgPCBIQVZFX0VOT1VHSF9EQVRBKTsKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0xPQURJTkc7CisgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7
CisgICAgfQorCisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQgJiYgbV9uZXR3
b3JrU3RhdGUgPCBORVRXT1JLX0xPQURFRCkgeworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5F
VFdPUktfTE9BREVEOworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAgICAgICAv
LyBDaGVjayB0byBzZWUgaWYgcmVhZHlTdGF0ZSBjaGFuZ2VzIG5lZWQgdG8gYmUgZGVhbHQgd2l0
aCBiZWZvcmUgc2VuZGluZyB0aGUgCisgICAgICAgIC8vICdsb2FkJyBldmVudCBzbyB3ZSByZXBv
cnQgJ2NhbnBsYXl0aHJvdWdoJyBmaXJzdC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBhCisg
ICAgICAgIC8vICBtZWRpYSBlbmdpbmUgcmVwb3J0cyByZWFkeVN0YXRlIGFuZCBuZXR3b3JrU3Rh
dGUgY2hhbmdlcyBzZXBhcmF0ZWx5CisgICAgICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIGN1
cnJlbnRTdGF0ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxSZWFkeVN0YXRlPihjdXJyZW50U3RhdGUpICE9IG1fcmVhZHlTdGF0ZSkKKyAgICAgICAg
ICAgIHNldFJlYWR5U3RhdGUoY3VycmVudFN0YXRlKTsKIAotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkubG9hZGVkZmlyc3RmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05l
c3RpbmdMZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGRpc3Bh
dGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5jYW5zaG93Y3VycmVudGZyYW1lRXZlbnQsIGZh
bHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRl
TG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICAvLyAxNQotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGVkICYmIG1fbmV0
d29ya1N0YXRlIDwgTE9BREVEKSB7Ci0gICAgICAgIG1fYmVndW4gPSBmYWxzZTsKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBMT0FERUQ7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0
b3AoKTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCku
bG9hZEV2ZW50KTsgCisgICAgICAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygp
LmxvYWRFdmVudCk7IAogICAgIH0KIH0KIApAQCAtNTI5LDY2ICs2MjEsMTE1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZWFkeVMKIHsKICAgICBiZWdpblByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7Ci0gICAgc2V0UmVhZHlTdGF0ZSgoUmVhZHlTdGF0
ZSlzdGF0ZSk7CisgICAgc2V0UmVhZHlTdGF0ZShtX3BsYXllci0+cmVhZHlTdGF0ZSgpKTsKIAog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQog
ewotICAgIC8vIDMuMTQuOS42LiBUaGUgcmVhZHkgc3RhdGVzCi0gICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBzdGF0ZSkKKyAgICBSZWFkeVN0YXRlIG9sZFN0YXRlID0gbV9yZWFkeVN0YXRlOworICAg
IG1fcmVhZHlTdGF0ZSA9IHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KHN0YXRlKTsKKworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gb2xkU3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBi
b29sIHdhc0FjdGl2ZWx5UGxheWluZyA9IGFjdGl2ZWx5UGxheWluZygpOwotICAgIG1fcmVhZHlT
dGF0ZSA9IHN0YXRlOwotICAgIAotICAgIGlmIChzdGF0ZSA+PSBDQU5fUExBWSkKKyAgICBpZiAo
bV9yZWFkeVN0YXRlID49IEhBVkVfQ1VSUkVOVF9EQVRBKQogICAgICAgICBtX3NlZWtpbmcgPSBm
YWxzZTsKICAgICAKLSAgICBpZiAobmV0d29ya1N0YXRlKCkgPT0gRU1QVFkpCisgICAgaWYgKG1f
bmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBpZiAoc3RhdGUgPT0gREFUQV9VTkFWQUlMQUJMRSkgewotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkuZGF0YXVuYXZhaWxhYmxlRXZlbnQsIGZhbHNlLCB0cnVlKTsK
LSAgICAgICAgaWYgKHdhc0FjdGl2ZWx5UGxheWluZykgewotICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwot
ICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLndhaXRpbmdFdmVu
dCwgZmFsc2UsIHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBDQU5f
U0hPV19DVVJSRU5UX0ZSQU1FKSB7Ci0gICAgICAgIGlmIChtX2xvYWRlZEZpcnN0RnJhbWUpCi0g
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuY2Fuc2hvd2N1cnJl
bnRmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIGlmICh3YXNBY3RpdmVseVBsYXlp
bmcpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1l
dXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JU
eXBlKGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgIGlmICht
X3NlZWtpbmcgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9DVVJSRU5UX0RBVEEpIHsKKyAgICAgICAg
Ly8gNC44LjEwLjEwLCBzdGVwIDkKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
c2Vla2luZ0V2ZW50KTsKKyAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CisgICAgfQorCisgICAg
Ym9vbCB3YXNQb3RlbnRpYWxseVBsYXlpbmcgPSBwb3RlbnRpYWxseVBsYXlpbmcoKTsKKyAgICBp
ZiAod2FzUG90ZW50aWFsbHlQbGF5aW5nICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RB
VEEpIHsKKyAgICAgICAgLy8gNC44LjEwLjkKKyAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZl
bnQoZmFsc2UpOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZl
bnQpOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSAmJiBv
bGRTdGF0ZSA8IEhBVkVfTUVUQURBVEEpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQpOworCisjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQorICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+aXNJbWFn
ZSgpKSB7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyo+KHJlbmRlcmVyKCkp
LT52aWRlb1NpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHN0YXRlID09
IENBTl9QTEFZKSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5j
YW5wbGF5RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlID09IENBTl9Q
TEFZX1RIUk9VR0gpIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmNhbnBsYXl0aHJvdWdoRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyNlbmRpZiAgICAgICAgCisgICAg
ICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgbV9wbGF5ZXItPnNl
ZWsoMCk7CisgICAgfQorCisgICAgLy8gNC44LjEwLjcgc2F5cyBsb2FkZWRkYXRhIGlzIHNlbnQg
b25seSB3aGVuIHRoZSBuZXcgc3RhdGUgKmlzKiBIQVZFX0NVUlJFTlRfREFUQTogIklmIHRoZQor
ICAgIC8vIHByZXZpb3VzIHJlYWR5IHN0YXRlIHdhcyBIQVZFX01FVEFEQVRBIGFuZCB0aGUgbmV3
IHJlYWR5IHN0YXRlIGlzIEhBVkVfQ1VSUkVOVF9EQVRBIiwgCisgICAgLy8gYnV0IHRoZSBldmVu
dCB0YWJsZSBhdCB0aGUgZW5kIG9mIHRoZSBzcGVjIHNheXMgaXQgaXMgc2VudCB3aGVuOiAicmVh
ZHlTdGF0ZSBuZXdseSAKKyAgICAvLyBpbmNyZWFzZWQgdG8gSEFWRV9DVVJSRU5UX0RBVEEgIG9y
IGdyZWF0ZXIgZm9yIHRoZSBmaXJzdCB0aW1lIgorICAgIC8vIFdlIGdvIHdpdGggdGhlIGxhdGVy
IGJlY2F1c2UgaXQgc2VlbXMgdXNlZnVsIHRvIGNvdW50IG9uIGdldHRpbmcgdGhpcyBldmVudAor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPCBI
QVZFX0NVUlJFTlRfREFUQSAmJiAhbV9oYXZlRmlyZWRMb2FkZWREYXRhKSB7CisgICAgICAgIG1f
aGF2ZUZpcmVkTG9hZGVkRGF0YSA9IHRydWU7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlZGRhdGFFdmVudCk7CisgICAgfQorCisgICAgYm9vbCBpc1BvdGVudGlhbGx5
UGxheWluZyA9IHBvdGVudGlhbGx5UGxheWluZygpOworICAgIGlmIChtX3JlYWR5U3RhdGUgPD0g
SEFWRV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgeworICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gSEFWRV9GVVRVUkVfREFUQSAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkg
eworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOworICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQpOworCisgICAgICAgIGlmIChpc1ZpZGVvKCkpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBv
c3RlckltYWdlKCk7CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VH
SF9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9FTk9VR0hfREFUQSkgeworICAgICAgICBpZiAob2xk
U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOworCisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQpOworCisgICAgICAgIGlmIChpc1BvdGVudGlhbGx5
UGxheWluZyAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisKICAgICAgICAgaWYgKG1f
YXV0b3BsYXlpbmcgJiYgbV9wYXVzZWQgJiYgYXV0b3BsYXkoKSkgewogICAgICAgICAgICAgbV9w
YXVzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5wbGF5aW5nRXZlbnQpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVmlkZW8o
KSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKS0+dXBk
YXRlUG9zdGVySW1hZ2UoKTsKICAgICB9CisKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtTdGF0ZSA+PSBORVRXT1JLX0xP
QURFRCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdW5zaWduZWQgcHJvZ3Jlc3MgPSBtX3BsYXll
ci0+Ynl0ZXNMb2FkZWQoKTsKICAgICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsK
ICAgICBkb3VibGUgdGltZWRlbHRhID0gdGltZSAtIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7Ci0g
ICAgCisKICAgICBpZiAocHJvZ3Jlc3MgPT0gbV9wcmV2aW91c1Byb2dyZXNzKSB7CiAgICAgICAg
IGlmICh0aW1lZGVsdGEgPiAzLjAgJiYgIW1fc2VudFN0YWxsZWRFdmVudCkgewotICAgICAgICAg
ICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3RhbGxlZEV2ZW50
KTsKKyAgICAgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3RhbGxl
ZEV2ZW50KTsKICAgICAgICAgICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2
ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50
KGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KTsKICAgICAgICAgbV9wcmV2aW91c1Byb2dyZXNz
ID0gcHJvZ3Jlc3M7CiAgICAgICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSB0aW1lOwogICAg
ICAgICBtX3NlbnRTdGFsbGVkRXZlbnQgPSBmYWxzZTsKQEAgLTU5NywzNyArNzM4LDQ1IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWUKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIDMu
MTQuOS44LiBTZWVraW5nCisgICAgLy8gNC44LjEwLjEwLiBTZWVraW5nCiAgICAgLy8gMQotICAg
IGlmIChuZXR3b3JrU3RhdGUoKSA8IExPQURFRF9NRVRBREFUQSkgeworICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gSEFWRV9OT1RISU5HIHx8ICFtX3BsYXllcikgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gMgogICAgIHRp
bWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisKKyAgICAvLyAzCiAgICAgdGltZSA9IG1heCh0
aW1lLCAwLjBmKTsKLSAgICAKLSAgICAvLyA2CisKKyAgICAvLyA0CiAgICAgUmVmUHRyPFRpbWVS
YW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gc2Vla2FibGUoKTsKICAgICBpZiAoIXNlZWthYmxlUmFu
Z2VzLT5jb250YWluKHRpbWUpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgLy8gNworICAgIC8vIGF2b2lkIGdlbmVyYXRp
bmcgZXZlbnRzIHdoZW4gdGhlIHRpbWUgd29uJ3QgYWN0dWFsbHkgY2hhbmdlCisgICAgZmxvYXQg
bm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBpZiAodGltZSA9PSBub3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIDUKICAgICBtX2N1cnJlbnRUaW1lRHVyaW5nU2VlayA9IHRpbWU7CiAKLSAg
ICAvLyA4CisgICAgLy8gNiAtIHNldCB0aGUgc2Vla2luZyBmbGFnLCBpdCB3aWxsIGJlIGNsZWFy
ZWQgd2hlbiB0aGUgZW5naW5lIHRlbGxzIGlzIHRoZSB0aW1lIGhhcyBhY3R1YWxseSBjaGFuZ2Vk
CiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICAKLSAgICAvLyA5Ci0gICAgZGlzcGF0Y2hFdmVu
dEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAg
IAorCisgICAgLy8gNworICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKKworICAg
IC8vIDggLSB0aGlzIGlzIGNvdmVyZWQsIGlmIG5lY2Vzc2FyeSwgd2hlbiB0aGUgZW5naW5lIHNp
Z25hbHMgYSByZWFkeXN0YXRlIGNoYW5nZQorCiAgICAgLy8gMTAKLSAgICAvLyBBcyBzb29uIGFz
IHRoZSB1c2VyIGFnZW50IGhhcyBlc3RhYmxpc2hlZCB3aGV0aGVyIG9yIG5vdCB0aGUgbWVkaWEg
ZGF0YSBmb3IgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBhdmFpbGFibGUsIAotICAgIC8v
IGFuZCwgaWYgaXQgaXMsIGRlY29kZWQgZW5vdWdoIGRhdGEgdG8gcGxheSBiYWNrIHRoYXQgcG9z
aXRpb24sIHRoZSBzZWVraW5nIERPTSBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuCi0g
ICAgaWYgKG1fcGxheWVyKQotICAgICAgICBtX3BsYXllci0+c2Vlayh0aW1lKTsKKyAgICBtX3Bs
YXllci0+c2Vlayh0aW1lKTsKKyAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogfQogCiBIVE1M
TWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlIEhUTUxNZWRpYUVsZW1lbnQ6OnJlYWR5U3RhdGUoKSBj
b25zdApAQCAtNjU3LDcgKzgwNiwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJl
bnRUaW1lKGZsCiAKIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+ZHVyYXRpb24oKSA6IDA7CisgICAgaWYg
KG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKQorICAgICAgICByZXR1cm4gbV9wbGF5ZXIt
PmR1cmF0aW9uKCk7CisKKyAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWQoKSBjb25zdApAQCAtNjcw
LDE1ICs4MjIsMTEgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrUgog
ICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCBy
YXRlKQogewotICAgIGlmIChyYXRlID09IDAuMGYpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAobV9kZWZhdWx0UGxheWJh
Y2tSYXRlICE9IHJhdGUpIHsKICAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0gcmF0ZTsK
LSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQp
OworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwog
ICAgIH0KIH0KIApAQCAtNjg3LDE2ICs4MzUsMTQgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6
cGxheWJhY2tSYXRlKCkgYwogICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5yYXRlKCkg
OiAwOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCBy
YXRlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJh
Y2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgaWYgKHJhdGUgPT0gMC4wZikgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGxheWJh
Y2tSYXRlICE9IHJhdGUpIHsKKyAgICAgICAgbV9wbGF5YmFja1JhdGUgPSByYXRlOworICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogICAgIH0KLSAg
ICBpZiAobV9wbGF5ZXIgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRlKSB7CisgICAgaWYgKG1f
cGxheWVyICYmIHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0
ZSkKICAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUocmF0ZSk7Ci0gICAgICAgIGRpc3BhdGNoRXZl
bnRBc3luYyhldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKLSAgICB9CiB9CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6ZW5kZWQoKSBjb25zdApAQCAtNzE0LDcwICs4NjAsNjQgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRBdXRvcGxheShib29sIAogICAgIHNldEJvb2xlYW5BdHRy
aWJ1dGUoYXV0b3BsYXlBdHRyLCBiKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5
KEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCkKIHsKLSAg
ICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlUmVz
dHJpY3Rpb24gJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0
dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHBsYXlJbnRlcm5hbChlYyk7CisgICAgcGxh
eUludGVybmFsKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQog
ewotICAgIC8vIDMuMTQuOS43LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIGlmICgh
bV9wbGF5ZXIgfHwgbmV0d29ya1N0YXRlKCkgPT0gRU1QVFkpIHsKLSAgICAgICAgZWMgPSAwOwot
ICAgICAgICBsb2FkKGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKKyAgICAvLyA0LjguMTAuOS4gUGxheWlu
ZyB0aGUgbWVkaWEgcmVzb3VyY2UKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRl
ID09IE5FVFdPUktfRU1QVFkpCisgICAgICAgIHNjaGVkdWxlTG9hZCgpOworCiAgICAgaWYgKGVu
ZGVkUGxheWJhY2soKSkgeworICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAg
c2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXli
YWNrUmF0ZSgpLCB1bnVzZWQpOworICAgIAorICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxh
eWJhY2tSYXRlKCkpOwogICAgIAogICAgIGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3BhdXNl
ZCA9IGZhbHNlOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnROYW1lcygpLnBsYXlF
dmVudCk7Ci0gICAgfQorICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZl
bnQpOwogCisgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOworICAg
ICAgICBlbHNlIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisgICAgfQogICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWly
ZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbiAm
JiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAg
ICBwYXVzZUludGVybmFsKGVjKTsKKyAgICBwYXVzZUludGVybmFsKCk7CiB9CiAKIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIHsKLSAgICAvLyAzLjE0LjkuNy4gUGxh
eWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICBpZiAoIW1fcGxheWVyIHx8IG5ldHdvcmtTdGF0
ZSgpID09IEVNUFRZKSB7Ci0gICAgICAgIGVjID0gMDsKLSAgICAgICAgbG9hZChlYyk7Ci0gICAg
ICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gNC44LjEwLjku
IFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCisgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdv
cmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQorICAgICAgICBzY2hlZHVsZUxvYWQoKTsKIAorICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKKyAgICAKICAgICBpZiAoIW1fcGF1c2VkKSB7CiAgICAg
ICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFt
ZXMoKS50aW1ldXBkYXRlRXZlbnQpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnRO
YW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxz
ZSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOwogICAg
IH0KIAotICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKLSAgICAKICAgICB1cGRhdGVQbGF5U3Rh
dGUoKTsKIH0KIApAQCAtODIyLDcgKzk2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
Vm9sdW1lKGZsb2F0IHYKICAgICBpZiAobV92b2x1bWUgIT0gdm9sKSB7CiAgICAgICAgIG1fdm9s
dW1lID0gdm9sOwogICAgICAgICB1cGRhdGVWb2x1bWUoKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVu
dEFzeW5jKGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKICAgICB9CiB9CiAKQEAgLTgz
NiwxOCArOTc2LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQK
ICAgICBpZiAobV9tdXRlZCAhPSBtdXRlZCkgewogICAgICAgICBtX211dGVkID0gbXV0ZWQ7CiAg
ICAgICAgIHVwZGF0ZVZvbHVtZSgpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnRO
YW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOwogICAgIH0KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVQbGF5U3RhdGUoRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiB7CiAgICAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIHRo
ZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNrIHJlc3RyaWN0
aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhl
IGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgpKQotICAgICAgICBw
bGF5SW50ZXJuYWwoZWMpOworICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAgICBlbHNlIAotICAg
ICAgICBwYXVzZUludGVybmFsKGVjKTsKKyAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKQEAgLTg1Nyw4ICs5OTcsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKICAgICAgICAgICAgIC8v
IEJlY2F1c2UgYSBtZWRpYSBlbGVtZW50IHN0YXlzIGluIG5vbi1wYXVzZWQgc3RhdGUgd2hlbiBp
dCByZWFjaGVzIGVuZCwgcGxheWJhY2sgcmVzdW1lcyAKICAgICAgICAgICAgIC8vIHdoZW4gdGhl
IHNsaWRlciBpcyBkcmFnZ2VkIGZyb20gdGhlIGVuZCB0byBhbm90aGVyIHBvc2l0aW9uIHVubGVz
cyB3ZSBwYXVzZSBmaXJzdC4gRG8gCiAgICAgICAgICAgICAvLyBhICJoYXJkIHBhdXNlIiBzbyBh
biBldmVudCBpcyBnZW5lcmF0ZWQsIHNpbmNlIHdlIHdhbnQgdG8gc3RheSBwYXVzZWQgYWZ0ZXIg
c2NydWJiaW5nIGZpbmlzaGVzLgotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgICAgIHBhdXNlKGVjKTsKKyAgICAgICAgICAgIHBhdXNlKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBidXQgd2Ugc3RpbGwgd2FudCB0byBwYXVz
ZSBwbGF5YmFjayBzbyB0aGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgdHJ5IHRvCiAgICAgICAgICAg
ICAvLyBjb250aW51ZSBwbGF5aW5nIGR1cmluZyBzY3J1YmJpbmcuIFBhdXNlIHdpdGhvdXQgZ2Vu
ZXJhdGluZyBhbiBldmVudCBhcyB3ZSB3aWxsIApAQCAtODc0LDQyICsxMDEzLDEwNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuZFNjcnViYmluZygpCiAgICAgICAgIHNldFBhdXNlZEludGVy
bmFsKGZhbHNlKTsKIH0KIAorLy8gVGhlIHNwZWMgc2F5cyB0byBmaXJlIHBlcmlvZGljIHRpbWV1
cGRhdGUgZXZlbnRzICh0aG9zZSBzZW50IHdoaWxlIHBsYXlpbmcpIGV2ZXJ5CisvLyAiMTUgdG8g
MjUwbXMiLCB3ZSBjaG9vc2UgdGhlIHNsb3dlc3QgZnJlcXVlbmN5CitzdGF0aWMgY29uc3QgZG91
YmxlIG1heFRpbWV1cGRhdGVFdmVudEZyZXF1ZW5jeSA9IDAuMjU7CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKQoreworICAgIGlmIChtX3BsYXli
YWNrUHJvZ3Jlc3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3By
ZXZpb3VzUHJvZ3Jlc3NUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIG1fcHJldmlvdXNQ
cm9ncmVzcyA9IDA7CisgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3RhcnRSZXBlYXRpbmco
bWF4VGltZXVwZGF0ZUV2ZW50RnJlcXVlbmN5KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCit7
CisgICAgQVNTRVJUKG1fcGxheWVyKTsKKyAgICBpZiAoIW1fcGxheWJhY2tSYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCh0cnVlKTsKKyAgICAKKyAg
ICAvLyBGSVhNRTogZGVhbCB3aXRoIGN1ZSByYW5nZXMgaGVyZQorfQorCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCkKK3sK
KyAgICBkb3VibGUgbm93ID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSB0aW1lZGVs
dGEgPSBub3cgLSBtX2xhc3RUaW1lVXBkYXRlRXZlbnRXYWxsVGltZTsKKworICAgIC8vIHRocm90
dGxlIHRoZSBwZXJpb2RpYyBldmVudHMKKyAgICBpZiAocGVyaW9kaWNFdmVudCAmJiB0aW1lZGVs
dGEgPCBtYXhUaW1ldXBkYXRlRXZlbnRGcmVxdWVuY3kpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFNvbWUgbWVkaWEgZW5naW5lcyBtYWtlIG11bHRpcGxlICJ0aW1lIGNoYW5nZWQiIGNhbGxi
YWNrcyBhdCB0aGUgc2FtZSB0aW1lLCBidXQgd2Ugb25seSB3YW50IG9uZQorICAgIC8vIGV2ZW50
IGF0IGEgZ2l2ZW4gdGltZSBzbyBmaWx0ZXIgaGVyZQorICAgIGZsb2F0IG1vdmllVGltZSA9IG1f
cGxheWVyID8gbV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkgOiAwOworICAgIGlmIChtb3ZpZVRpbWUg
IT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKSB7CisgICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCk7CisgICAgICAgIG1fbGFzdFRpbWVVcGRh
dGVFdmVudFdhbGxUaW1lID0gbm93OworICAgICAgICBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWUgPSBtb3ZpZVRpbWU7CisgICAgfQorfQorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNh
blBsYXkoKSBjb25zdAogewotICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG5ldHdv
cmtTdGF0ZSgpIDwgTE9BREVEX01FVEFEQVRBOworICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRl
ZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhBVkVfTUVUQURBVEE7CiB9CiAKLVN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3RNZWRpYVVSTChDb250ZW50VHlwZSYgY29udGVudFR5cGUpCitib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpCiB7Ci0gICAgLy8g
My4xNC45LjIuIExvY2F0aW9uIG9mIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIFN0cmluZyBtZWRp
YVNyYyA9IGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKLSAgICBpZiAobWVkaWFTcmMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpIHsK
LSAgICAgICAgICAgICAgICBIVE1MU291cmNlRWxlbWVudCogc291cmNlID0gc3RhdGljX2Nhc3Q8
SFRNTFNvdXJjZUVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS0+aGFz
QXR0cmlidXRlKHNyY0F0dHIpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCi0gICAg
ICAgICAgICAgICAgaWYgKHNvdXJjZS0+aGFzQXR0cmlidXRlKG1lZGlhQXR0cikpIHsKLSAgICAg
ICAgICAgICAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBk
b2N1bWVudCgpLT5mcmFtZSgpLCByZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDAp
OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IE1lZGlhTGlz
dDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChzb3VyY2UtPm1lZGlhKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbChtZWRpYS5nZXQoKSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZS0+aGFzQXR0cmlidXRlKHR5cGVBdHRyKSkgewotICAgICAgICAg
ICAgICAgICAgICBDb250ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHR5cGUpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJu
IHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBzbyB0aGUgbWVkaWEgZW5naW5lIGNh
biB1c2UgdGhlbQotICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHR5cGU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1lZGlhU3JjID0gc291cmNlLT5zcmMoKS5z
dHJpbmcoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAvLyBT
dGFzaCB0aGUgY3VycmVudCA8c291cmNlPiBub2RlIHNvIHdlIGNhbiByZXN0b3JlIGl0IGFmdGVy
IGNoZWNraW5nCisgICAgLy8gdG8gc2VlIHRoZXJlIGlzIGFub3RoZXIgcG90ZW50aWFsCisgICAg
Tm9kZSogY3VycmVudFNvdXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOworICAgIFN0cmlu
ZyBuZXh0VXJsID0gbmV4dFNvdXJjZUNoaWxkKCk7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9
IGN1cnJlbnRTb3VyY2VOb2RlOworCisgICAgcmV0dXJuICFuZXh0VXJsLmlzRW1wdHkoKTsKK30K
KworU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAq
Y29udGVudFR5cGUpCit7CisgICAgU3RyaW5nIG1lZGlhU3JjOworICAgIGJvb2wgbG9va2luZ0Zv
clByZXZpb3VzTm9kZSA9IG1fY3VycmVudFNvdXJjZU5vZGU7CisKKyAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShzb3VyY2VUYWcpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGxvb2tpbmdGb3JQcmV2aW91c05vZGUpIHsKKyAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnRTb3VyY2VOb2RlID09IG5vZGUpCisgICAgICAgICAgICAgICAgbG9v
a2luZ0ZvclByZXZpb3VzTm9kZSA9IGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSBzdGF0
aWNfY2FzdDxIVE1MU291cmNlRWxlbWVudCo+KG5vZGUpOworICAgICAgICBpZiAoIXNvdXJjZS0+
aGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICBp
ZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgeworICAgICAgICAgICAgTWVkaWFR
dWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFtZSgpLCBy
ZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRy
PE1lZGlhTGlzdD4gbWVkaWEgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25T
eW50YXgoc291cmNlLT5tZWRpYSgpKTsKKyAgICAgICAgICAgIGlmICghc2NyZWVuRXZhbC5ldmFs
KG1lZGlhLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUodHlwZUF0dHIpKSB7CisgICAgICAgICAgICBD
b250ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGlmICghTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzVHlwZSh0eXBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBz
byB0aGUgbWVkaWEgZW5naW5lIGNhbiB1c2UgdGhlbQorICAgICAgICAgICAgaWYgKGNvbnRlbnRU
eXBlKQorICAgICAgICAgICAgICAgICpjb250ZW50VHlwZSA9IHR5cGU7CisgICAgICAgIH0KKyAg
ICAgICAgbWVkaWFTcmMgPSBzb3VyY2UtPnNyYygpLnN0cmluZygpOworICAgICAgICBtX2N1cnJl
bnRTb3VyY2VOb2RlID0gbm9kZTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgaWYgKCFt
ZWRpYVNyYy5pc0VtcHR5KCkpCiAgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwobWVkaWFTcmMpLnN0cmluZygpOworCiAgICAgcmV0dXJuIG1lZGlhU3JjOwogfQogCkBA
IC05MTcsMjIgKzExMjEsMzIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRp
bWVDaAogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAotICAg
IGlmIChyZWFkeVN0YXRlKCkgPj0gQ0FOX1BMQVkpCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBI
QVZFX0NVUlJFTlRfREFUQSAmJiBtX3NlZWtpbmcpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkuc2Vla2VkRXZlbnQpOwogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKKyAg
ICB9CiAgICAgCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBpZiAobm93ID49
IGR1cmF0aW9uKCkpIHsKKyAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGlmIChub3cg
Pj0gZHVyKSB7CiAgICAgICAgIGlmIChsb29wKCkpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgICAgICAgICBzZWVrKDAsIGVjKTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZl
bnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKKyAgICAgICAgICAgIG1f
c2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRp
b24pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUo
ZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBt
X3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRl
RXZlbnQoZmFsc2UpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LmVuZGVkRXZlbnQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UK
KyAgICAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKIAorLy9AQEBAQCBPSyBpZiB3ZSBqdXN0
IGxvb3BlZCA/Pz8/CiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CisvL0BAQEBACiAKICAgICBlbmRQ
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQpAQCAtOTUyLDYgKzExNjYsMzkgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZQogICAgIGVuZFByb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vz
c2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKKyAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMo
KS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyo+KHJlbmRlcmVyKCkpLT52aWRlb1NpemVDaGFu
Z2VkKCk7CisgICAgfQorI2VuZGlmICAgICAgICAKKyAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5
ZXJDYWxsYmFjaygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmF0
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKKyAgICAvLyBTdGFzaCB0aGUgcmF0ZSBpbiBjYXNlIHRoZSBvbmUgd2UgdHJp
ZWQgdG8gc2V0IGlzbid0IHdoYXQgdGhlIGVuZ2luZSBpcworICAgIC8vIHVzaW5nIChlZy4gaXQg
Y2FuJ3QgaGFuZGxlIHRoZSByYXRlIHdlIHNldCkKKyAgICBtX3BsYXliYWNrUmF0ZSA9IG1fcGxh
eWVyLT5yYXRlKCk7CisgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikKK3sKKyAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CisjaWYg
IUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIGlmIChyZW5kZXJlcigpICYmICFy
ZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4o
cmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsKKyNlbmRpZiAgICAgICAgCisgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKK30KKwogUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUg
cmVhbCByYW5nZXMgc3VwcG9ydApAQCAtOTc0LDE2ICsxMjIxLDMzIEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRl
KDAsIG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6YWN0aXZlbHlQbGF5aW5nKCkgY29uc3QKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6cG90
ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXBhdXNlZCgpICYmIHJlYWR5
U3RhdGUoKSA+PSBDQU5fUExBWSAmJiAhZW5kZWRQbGF5YmFjaygpOyAvLyAmJiAhc3RvcHBlZER1
ZVRvRXJyb3JzKCkgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpOworICAgIHJldHVybiAh
cGF1c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgIWVuZGVkUGxh
eWJhY2soKSAmJiAhc3RvcHBlZER1ZVRvRXJyb3JzKCkgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFj
dGlvbigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkUGxheWJhY2soKSBjb25z
dAogewotICAgIHJldHVybiBuZXR3b3JrU3RhdGUoKSA+PSBMT0FERURfTUVUQURBVEEgJiYgY3Vy
cmVudFRpbWUoKSA+PSBkdXJhdGlvbigpICYmICFsb29wKCk7CisgICAgcmV0dXJuIG1fcGxheWVy
ICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBICYmIGN1cnJlbnRUaW1lKCkgPj0gZHVy
YXRpb24oKSAmJiAhbG9vcCgpOwogfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWRE
dWVUb0Vycm9ycygpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFE
QVRBICYmIG1fZXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFu
Z2VzID0gc2Vla2FibGUoKTsKKyAgICAgICAgaWYgKCFzZWVrYWJsZVJhbmdlcy0+Y29udGFpbihj
dXJyZW50VGltZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNl
ckludGVyYWN0aW9uKCkgY29uc3QKK3sKKy8vICAgIHJldHVybiAhcGF1c2VkKCkgJiYgbV9yZWFk
eVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgW1VBIHJlcXVpcmVzIGEgZGVjaXRpb25zIGZy
b20gdGhlIHVzZXJdCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZVZvbHVtZSgpCiB7CiAgICAgaWYgKCFtX3BsYXllcikKQEAgLTEwMDUsMTggKzEy
NjksMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogewogICAg
IGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmIChtX3BhdXNl
ZEludGVybmFsKSB7CiAgICAgICAgIGlmICghbV9wbGF5ZXItPnBhdXNlZCgpKQogICAgICAgICAg
ICAgbV9wbGF5ZXItPnBhdXNlKCk7CisgICAgICAgIG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyLnN0
b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBib29sIHNob3VsZEJlUGxh
eWluZyA9IGFjdGl2ZWx5UGxheWluZygpOwotICAgIGlmIChzaG91bGRCZVBsYXlpbmcgJiYgbV9w
bGF5ZXItPnBhdXNlZCgpKQorICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5nID0gcG90ZW50aWFsbHlQ
bGF5aW5nKCk7CisgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+cGF1c2VkKCk7Cisg
ICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiBwbGF5ZXJQYXVzZWQpIHsKKyAgICAgICAgLy8gU2V0
IHJhdGUgYmVmb3JlIGNhbGxpbmcgcGxheSBpbiBjYXNlIHRoZSByYXRlIHdhcyBzZXQgYmVmb3Jl
IHRoZSBtZWRpYSBlbmdpbmUgd2Fzbid0IHNldHVwLgorICAgICAgICAvLyBUaGUgbWVkaWEgZW5n
aW5lIHNob3VsZCBqdXN0IHN0YXNoIHRoZSByYXRlIHNpbmNlIGl0IGlzbid0IGFscmVhZHkgcGxh
eWluZy4KKyAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUobV9wbGF5YmFja1JhdGUpOwogICAgICAg
ICBtX3BsYXllci0+cGxheSgpOwotICAgIGVsc2UgaWYgKCFzaG91bGRCZVBsYXlpbmcgJiYgIW1f
cGxheWVyLT5wYXVzZWQoKSkKKyAgICAgICAgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKTsK
KyAgICB9IGVsc2UgaWYgKCFzaG91bGRCZVBsYXlpbmcgJiYgIXBsYXllclBhdXNlZCkgewogICAg
ICAgICBtX3BsYXllci0+cGF1c2UoKTsKKyAgICAgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIu
c3RvcCgpOworICAgIH0KICAgICAKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVy
ZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKQEAgLTEwMjgsMjUgKzEzMDAsNTAgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgp
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZl
KCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcFBlcmlvZGljVGltZXJzKCkKIHsKLSAgICAv
LyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICAvLyAxNAotICAgIGlm
IChtX2JlZ3VuKSB7Ci0gICAgICAgIC8vIEZvciBzaW1wbGljaXR5IGNhbmNlbCB0aGUgaW5jb21w
bGV0ZSBsb2FkIGJ5IGRlbGV0aW5nIHRoZSBwbGF5ZXIKKyAgICBtX3Byb2dyZXNzRXZlbnRUaW1l
ci5zdG9wKCk7CisgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3RvcCgpOworfQorCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKK3sKKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSkgeworCisgICAgICAgIC8vIElmIHRoZSBtZWRpYSBk
YXRhIGZldGNoaW5nIHByb2Nlc3MgaXMgYWJvcnRlZCBieSB0aGUgdXNlcjoKKworICAgICAgICAv
LyAxIC0gVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0Y2hpbmcgcHJvY2Vzcy4K
KyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgICAgIG1fcGxheWVyLmNs
ZWFyKCk7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKKyNlbmRpZgorICAg
ICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKIAorICAgICAgICAvLyAyIC0gU2V0IHRoZSBlcnJv
ciBhdHRyaWJ1dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hvc2UgY29kZSBhdHRyaWJ1
dGUgaXMgc2V0IHRvIE1FRElBX0VSUl9BQk9SVC4KICAgICAgICAgbV9lcnJvciA9IE1lZGlhRXJy
b3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCk7Ci0gICAgICAgIG1fYmVn
dW4gPSBmYWxzZTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5h
bWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+PSBMT0FESU5H
KSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IEVNUFRZOwotICAgICAgICAgICAgbV9y
ZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRG
b3JUeXBlKGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgICAg
ICAvLyAzIC0gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgYWJv
cnQgYXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChl
dmVudE5hbWVzKCkuYWJvcnRFdmVudCk7CisKKyAgICAgICAgLy8gNCAtIElmIHRoZSBtZWRpYSBl
bGVtZW50J3MgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUgZXF1YWwgdG8gSEFWRV9O
T1RISU5HLCBzZXQgdGhlIAorICAgICAgICAvLyBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJp
YnV0ZSB0byB0aGUgTkVUV09SS19FTVBUWSB2YWx1ZSBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUg
YSAKKyAgICAgICAgLy8gc2ltcGxlIGV2ZW50IGNhbGxlZCBlbXB0aWVkIGF0IHRoZSBlbGVtZW50
LiBPdGhlcndpc2UsIHNldCBzZXQgdGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgCisgICAgICAg
IC8vIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19JRExFIHZhbHVlLgorICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPj0gTkVUV09SS19MT0FESU5HKSB7CisgICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE5FVFdPUktfRU1QVFk7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05P
VEhJTkc7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZl
bnQpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gNSAtIFNldCB0aGUgZWxlbWVudCdzIGRlbGF5
aW5nLXRoZS1sb2FkLWV2ZW50IGZsYWcgdG8gZmFsc2UuIFRoaXMgc3RvcHMgZGVsYXlpbmcgdGhl
IGxvYWQgZXZlbnQuCisgICAgICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKICAg
ICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3Rp
dmUoKQorewogICAgIG1faW5BY3RpdmVEb2N1bWVudCA9IGZhbHNlOworICAgIHVzZXJDYW5jZWxs
ZWRMb2FkKCk7CisKICAgICAvLyBTdG9wIHRoZSBwbGF5YmFjayB3aXRob3V0IGdlbmVyYXRpbmcg
ZXZlbnRzCiAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7CiAKQEAgLTEwNjEsNiArMTM1OCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWUKIAogICAgIGlmICht
X2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRF
RCkgewogICAgICAgICAvLyBSZXN0YXJ0IHRoZSBsb2FkIGlmIGl0IHdhcyBhYm9ydGVkIGluIHRo
ZSBtaWRkbGUgYnkgbW92aW5nIHRoZSBkb2N1bWVudCB0byB0aGUgcGFnZSBjYWNoZS4KKyAgICAg
ICAgLy8gbV9lcnJvciBpcyBvbmx5IGxlZnQgYXQgTUVESUFfRVJSX0FCT1JURUQgd2hlbiB0aGUg
ZG9jdW1lbnQgYmVjb21lcyBpbmFjdGl2ZSAoaXQgaXMgc2V0IHRvCisgICAgICAgIC8vICBNRURJ
QV9FUlJfQUJPUlRFRCB3aGlsZSB0aGUgYWJvcnRFdmVudCBpcyBiZWluZyBzZW50LCBidXQgY2xl
YXJlZCBpbW1lZGlhdGVseSBhZnRlcndhcmRzKS4KICAgICAgICAgLy8gVGhpcyBiZWhhdmlvciBp
cyBub3Qgc3BlY2lmaWVkIGJ1dCBpdCBzZWVtcyBsaWtlIGEgc2Vuc2libGUgdGhpbmcgdG8gZG8u
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGxvYWQoZWMpOwpAQCAtMTEyNCw5
ICsxNDIzLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm8KIAog
U3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmluaXRpYWxVUkwoKQogewotICAgIENvbnRlbnRUeXBl
IGlnbm9yZWRUeXBlOwotICAgIFN0cmluZyBpbml0aWFsU3JjID0gc2VsZWN0TWVkaWFVUkwoaWdu
b3JlZFR5cGUpOworICAgIFN0cmluZyBpbml0aWFsU3JjID0gbWVkaWFTcmMgPSBnZXRBdHRyaWJ1
dGUoc3JjQXR0cik7CisgICAgCisgICAgaWYgKGluaXRpYWxTcmMuaXNFbXB0eSgpKQorICAgICAg
ICBpbml0aWFsU3JjID0gbmV4dFNvdXJjZUNoaWxkKCk7CisKKyAgICBpZiAoIWluaXRpYWxTcmMu
aXNFbXB0eSgpKQorICAgICAgICBpbml0aWFsU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
aW5pdGlhbFNyYykuc3RyaW5nKCk7CisKICAgICBtX2N1cnJlbnRTcmMgPSBpbml0aWFsU3JjOwor
CiAgICAgcmV0dXJuIGluaXRpYWxTcmM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEV2ZW50OwogY2xhc3MgTWVkaWFFcnJvcjsKLWNsYXNzIFRpbWVSYW5nZXM7CiBjbGFz
cyBLVVJMOworY2xhc3MgVGltZVJhbmdlczsKICAgICAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6
CkBAIC04MCw4ICs4MSw5IEBAIHB1YmxpYzoKICAgICBLVVJMIHNyYygpIGNvbnN0OwogICAgIHZv
aWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjdXJyZW50U3JjKCkgY29uc3Q7
Ci0gICAgCi0gICAgZW51bSBOZXR3b3JrU3RhdGUgeyBFTVBUWSwgTE9BRElORywgTE9BREVEX01F
VEFEQVRBLCBMT0FERURfRklSU1RfRlJBTUUsIExPQURFRCB9OworCisgICAgZW51bSBOZXR3b3Jr
U3RhdGUgeyBORVRXT1JLX0VNUFRZLCBORVRXT1JLX0lETEUsIE5FVFdPUktfTE9BRElORywgTkVU
V09SS19MT0FERUQsIE5FVFdPUktfTk9fU09VUkNFIH07CisvL0BAQEBAICAgIGVudW0gTmV0d29y
a1N0YXRlIHsgRU1QVFksIExPQURJTkcsIExPQURFRF9NRVRBREFUQSwgTE9BREVEX0ZJUlNUX0ZS
QU1FLCBMT0FERUQgfTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OwogICAgIHZvaWQgbG9h
ZChFeGNlcHRpb25Db2RlJik7CkBAIC04OSw3ICs5MSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAKIC8vIHJlYWR5IHN0
YXRlCi0gICAgZW51bSBSZWFkeVN0YXRlIHsgREFUQV9VTkFWQUlMQUJMRSwgQ0FOX1NIT1dfQ1VS
UkVOVF9GUkFNRSwgQ0FOX1BMQVksIENBTl9QTEFZX1RIUk9VR0ggfTsKKyAgICBlbnVtIFJlYWR5
U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVUQURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBI
QVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9EQVRBIH07CisvL0BAQEBAICAgIGVudW0gUmVh
ZHlTdGF0ZSB7IERBVEFfVU5BVkFJTEFCTEUsIENBTl9TSE9XX0NVUlJFTlRfRlJBTUUsIENBTl9Q
TEFZLCBDQU5fUExBWV9USFJPVUdIIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3Q7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKQEAgLTk5LDkgKzEwMiw5IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7
CiAgICAgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVm
YXVsdFBsYXliYWNrUmF0ZShmbG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGVm
YXVsdFBsYXliYWNrUmF0ZShmbG9hdCk7CiAgICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBw
bGF5ZWQoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29u
c3Q7CiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwpAQCAtMTA5LDggKzExMiw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wgYik7CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7ICAg
IAogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwotICAgIHZvaWQgcGxheShFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBwYXVzZShFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF5KCk7Cisg
ICAgdm9pZCBwYXVzZSgpOwogICAgIAogLy8gY29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkg
Y29uc3Q7CkBAIC0xMTksNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vm9sdW1lKGZs
b2F0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0TXV0ZWQoYm9vbCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoRXhjZXB0aW9uQ29kZSYg
ZWMpOworICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCk7CiAgICAgdm9pZCBiZWdpblNjcnViYmlu
ZygpOwogICAgIHZvaWQgZW5kU2NydWJiaW5nKCk7CiAKQEAgLTE0MSwxMiArMTQ0LDggQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVZvbHVtZURpZENoYW5nZSgpOwogICAgIAotICAgIHZvaWQgaW5p
dEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7
Ci0gICAgdm9pZCBkaXNwYXRjaEV2ZW50QXN5bmMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUpOwotICAgIAotICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKLSAgICB2b2lk
IHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIHN0YXRlKTsKLQorICAg
IHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdm9pZCBz
ZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAgICAgCiBwcml2YXRl
OiAvLyBNZWRpYVBsYXllck9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTmV0
d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopOwpAQCAtMTU0LDI5ICsxNTMsNTMgQEAgcHJp
dmF0ZTogLy8gTWVkaWFQbGF5ZXJPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
clRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
UmVwYWludChNZWRpYVBsYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclZvbHVt
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEdXJh
dGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJS
YXRlQ2hhbmdlZChNZWRpYVBsYXllciopOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNp
emVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkVGltZXJG
aXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwogICAgIHZvaWQgYXN5bmNFdmVudFRpbWVy
RmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIHByb2dyZXNzRXZlbnRU
aW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7Ci0gICAgdm9pZCBzZWVrKGZsb2F0
IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NUaW1l
ckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CisgICAgdm9pZCBzdGFydFBsYXliYWNr
UHJvZ3Jlc3NUaW1lcigpOworICAgIHZvaWQgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKKyAg
ICB2b2lkIHN0b3BQZXJpb2RpY1RpbWVycygpOworCisgICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNoZWNrSWZTZWVrTmVlZGVkKCk7CisgICAgCisg
ICAgdm9pZCBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpOworICAg
IHZvaWQgc2NoZWR1bGVQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
KTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUp
OworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4gZXZlbnQpOworICAgIAorICAg
IC8vIGxvYWRpbmcKKyAgICB2b2lkIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKKyAgICB2b2lkIGxv
YWRSZXNvdXJjZShTdHJpbmcgdXJsLCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpOworICAgIHZv
aWQgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAgIHZvaWQgdXNlckNhbmNlbGxlZExvYWQoKTsK
KyAgICBTdHJpbmcgbmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSA9IDAp
OworICAgIGJvb2wgaGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCk7CisgICAgdm9pZCBub25lU3Vw
cG9ydGVkKCk7CisgICAgdm9pZCBtZWRpYUVuZ2luZUVycm9yKFBhc3NSZWZQdHI8TWVkaWFFcnJv
cj4gZXJyKTsKIAogICAgIC8vIFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVj
ayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25zLgotICAgIHZvaWQgbG9hZEludGVybmFsKEV4Y2Vw
dGlvbkNvZGUmIGVjKTsKLSAgICB2b2lkIHBsYXlJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYyk7
Ci0gICAgdm9pZCBwYXVzZUludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGxv
YWRJbnRlcm5hbCgpOworICAgIHZvaWQgcGxheUludGVybmFsKCk7CisgICAgdm9pZCBwYXVzZUlu
dGVybmFsKCk7CiAgICAgCiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsK
ICAgICBib29sIHByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjayA+IDA7IH0KICAgICB2b2lkIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSB7ICsrbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjazsgfQogICAgIHZvaWQgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSB7
IEFTU0VSVChtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKTsgLS1tX3Byb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrOyB9CiAKLSAgICBTdHJpbmcgc2VsZWN0TWVkaWFVUkwoQ29udGVu
dFR5cGUmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHVwZGF0ZVZvbHVtZSgpOwogICAgIHZvaWQg
dXBkYXRlUGxheVN0YXRlKCk7Ci0gICAgYm9vbCBhY3RpdmVseVBsYXlpbmcoKSBjb25zdDsKKyAg
ICBib29sIHBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0OwogICAgIGJvb2wgZW5kZWRQbGF5YmFj
aygpIGNvbnN0OworICAgIGJvb2wgc3RvcHBlZER1ZVRvRXJyb3JzKCkgY29uc3Q7CisgICAgYm9v
bCBwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24oKSBjb25zdDsKIAogICAgIC8vIFJlc3RyaWN0aW9u
cyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuIFRoaXMgaXMgYSBlZmZlY3RpdmVseSBhIGNv
bXBpbGUgdGltZSBjaG9pY2UgYXQgdGhlIG1vbWVudAogICAgIC8vICBiZWNhdXNlIHRoZXJlIGFy
ZSBubyBhY2Nlc3NvciBtZXRob2RzLgpAQCAtMTg3LDQzICsyMTAsMzggQEAgcHJpdmF0ZToKICAg
ICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uID0gMSA8PCAx
LAogICAgIH07CiAKLQogcHJvdGVjdGVkOgogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1f
bG9hZFRpbWVyOwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVy
OwogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwotICAg
IFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fYXN5bmNFdmVudHNUb0Rpc3BhdGNoOworICAgIFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOworICAgIFZlY3RvcjxS
ZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwogICAgIAorICAgIGZsb2F0IG1fcGxheWJh
Y2tSYXRlOwogICAgIGZsb2F0IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKICAgICBOZXR3b3JrU3Rh
dGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgU3Ry
aW5nIG1fY3VycmVudFNyYzsKICAgICAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsK
LSAgICAKLSAgICBib29sIG1fYmVndW47Ci0gICAgYm9vbCBtX2xvYWRlZEZpcnN0RnJhbWU7Ci0g
ICAgYm9vbCBtX2F1dG9wbGF5aW5nOwotICAgIAotICAgIHVuc2lnbmVkIG1fY3VycmVudExvb3A7
CisKICAgICBmbG9hdCBtX3ZvbHVtZTsKLSAgICBib29sIG1fbXV0ZWQ7Ci0gICAgCi0gICAgYm9v
bCBtX3BhdXNlZDsKLSAgICBib29sIG1fc2Vla2luZzsKLSAgICAKICAgICBmbG9hdCBtX2N1cnJl
bnRUaW1lRHVyaW5nU2VlazsKICAgICAKICAgICB1bnNpZ25lZCBtX3ByZXZpb3VzUHJvZ3Jlc3M7
CiAgICAgZG91YmxlIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7Ci0gICAgYm9vbCBtX3NlbnRTdGFs
bGVkRXZlbnQ7CisKKyAgICAvLyB0aGUgbGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMg
c2VudCAod2FsbCBjbG9jaykKKyAgICBkb3VibGUgbV9sYXN0VGltZVVwZGF0ZUV2ZW50V2FsbFRp
bWU7CisKKyAgICAvLyB0aGUgbGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMgc2VudCBp
biBtb3ZpZSB0aW1lCisgICAgZmxvYXQgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lOwog
ICAgIAotICAgIHVuc2lnbmVkIG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICB1bnNpZ25lZCBtX3Rl
cm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbDsKKyAgICAvLyBsb2FkaW5nIHN0YXRlCisgICAg
ZW51bSBMb2FkU3RhdGUgeyBXYWl0aW5nRm9yU291cmNlLCBMb2FkaW5nRnJvbVNyY0F0dHIsIExv
YWRpbmdGcm9tU291cmNlRWxlbWVudCB9OworICAgIExvYWRTdGF0ZSBtX2xvYWRTdGF0ZTsKKyAg
ICBOb2RlICptX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIAotICAgIGJvb2wgbV9wYXVzZWRJbnRl
cm5hbDsKLSAgICBib29sIG1faW5BY3RpdmVEb2N1bWVudDsKLQogICAgIE93blB0cjxNZWRpYVBs
YXllcj4gbV9wbGF5ZXI7CiAKICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9u
czsKQEAgLTIzMiwxMiArMjUwLDI5IEBAIHByb3RlY3RlZDoKICAgICAvLyAgY2FsbGluZyB0aGUg
bWVkaWEgZW5naW5lIHJlY3Vyc2l2ZWx5CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2s7CiAKKyAgICBib29sIG1fcHJvY2Vzc2luZ0xvYWQgOiAxOworICAgIGJvb2wgbV9k
ZWxheWluZ1RoZUxvYWRFdmVudCA6IDE7CisgICAgYm9vbCBtX2hhdmVGaXJlZExvYWRlZERhdGEg
OiAxOworICAgIGJvb2wgbV9pbkFjdGl2ZURvY3VtZW50IDogMTsKKyAgICBib29sIG1fYXV0b3Bs
YXlpbmcgOiAxOworICAgIGJvb2wgbV9tdXRlZCA6IDE7CisgICAgYm9vbCBtX3BhdXNlZCA6IDE7
CisgICAgYm9vbCBtX3NlZWtpbmcgOiAxOworCisgICAgLy8gZGF0YSBoYXMgbm90IGJlZW4gbG9h
ZGVkIHNpbmNlIHNlbmRpbmcgYSAic3RhbGxlZCIgZXZlbnQKKyAgICBib29sIG1fc2VudFN0YWxs
ZWRFdmVudCA6IDE7CisKKyAgICAvLyB0aW1lIGhhcyBub3QgY2hhbmdlZCBzaW5jZSBzZW5kaW5n
IGFuICJlbmRlZCIgZXZlbnQKKyAgICBib29sIG1fc2VudEVuZEV2ZW50IDogMTsKKworICAgIGJv
b2wgbV9wYXVzZWRJbnRlcm5hbCA6IDE7CisKICAgICAvLyBOb3QgYWxsIG1lZGlhIGVuZ2luZXMg
cHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgYSBmaWxlIHRvIGJlIGFibGUgdG8KICAg
ICAvLyBzdXBwb3J0IHByb2dyZXNzIGV2ZW50cyBzbyBzZXR0aW5nIG1fc2VuZFByb2dyZXNzRXZl
bnRzIGRpc2FibGVzIHRoZW0gCi0gICAgYm9vbCBtX3NlbmRQcm9ncmVzc0V2ZW50czsKKyAgICBi
b29sIG1fc2VuZFByb2dyZXNzRXZlbnRzIDogMTsKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQotICAgIGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlOworICAgIGJvb2wgbV9uZWVk
V2lkZ2V0VXBkYXRlIDogMTsKICNlbmRpZgogfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQCBpbnRlcmZhY2UgW0dlbmVy
YXRlQ29uc3RydWN0b3IsIENvbmRpdGlvCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmM7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjdXJyZW50U3JjOwogICAgIAotICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IEVNUFRZID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBM
T0FESU5HID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FERURfTUVUQURBVEEgPSAy
OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExPQURFRF9GSVJTVF9GUkFNRSA9IDM7Ci0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTE9BREVEID0gNDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBORVRXT1JLX0VNUFRZID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0lE
TEUgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVFdPUktfTE9BRElORyA9IDI7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19MT0FERUQgPSAzOworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IE5FVFdPUktfTk9fU09VUkNFID0gNDsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgbmV0d29ya1N0YXRlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFRpbWVSYW5nZXMgYnVmZmVyZWQ7CkBAIC00NiwxMCArNDYsMTEgQEAgaW50ZXJmYWNlIFtHZW5l
cmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwogICAgIERPTVN0cmluZyBjYW5QbGF5VHlwZShpbiBE
T01TdHJpbmcgdHlwZSk7CiAKICAgICAvLyByZWFkeSBzdGF0ZQotICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IERBVEFfVU5BVkFJTEFCTEUgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENB
Tl9TSE9XX0NVUlJFTlRfRlJBTUUgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENBTl9Q
TEFZID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQU5fUExBWV9USFJPVUdIID0gMzsK
KyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX05PVEhJTkcgPSAwOworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IEhBVkVfTUVUQURBVEEgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IEhBVkVfQ1VSUkVOVF9EQVRBID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0ZV
VFVSRV9EQVRBID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0VOT1VHSF9EQVRB
ID0gNDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzZWVraW5nOwogCkBAIC01OCwxOSArNTks
MTUgQEAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwogICAgICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9h
dCBkdXJhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7Ci0gICAg
YXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5YmFja1JhdGUgCi0gICAgICAgIHNldHRlciByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgYXR0cmlidXRlIGZsb2F0IHBsYXliYWNrUmF0ZSAKLSAg
ICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQg
ZGVmYXVsdFBsYXliYWNrUmF0ZTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQgcGxheWJhY2tSYXRlOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgVGltZVJhbmdlcyBzZWVrYWJsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBlbmRlZDsKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvcGxheTsKICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBsb29wOwotICAgIHZvaWQgcGxheSgpIAotICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7Ci0gICAgdm9pZCBwYXVzZSgpIAotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOwogCiAgICAgLy8gY29udHJv
bHMKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjb250cm9sczsKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MU291cmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNvdXJj
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSFRNTFNv
dXJjZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3UKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIChwYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoYXVkaW9UYWcpIHx8ICBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodmlkZW9UYWcp
KSkgewogICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYSA9IHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpOwotICAgICAgICBpZiAobWVkaWEtPm5ldHdvcmtT
dGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6OkVNUFRZKQorICAgICAgICBpZiAobWVkaWEtPm5l
dHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktfRU1QVFkpCiAgICAgICAg
ICAgICBtZWRpYS0+c2NoZWR1bGVMb2FkKCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdlCiAgICAgYm9vbCBvbGRTaG91bGRTaG93UG9z
dGVySW1hZ2UgPSBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZTsKICNlbmRpZgogCi0gICAgbV9zaG91
bGRTaG93UG9zdGVySW1hZ2UgPSAhcG9zdGVyKCkuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRl
IDwgTE9BREVEX0ZJUlNUX0ZSQU1FOworICAgIG1fc2hvdWxkU2hvd1Bvc3RlckltYWdlID0gIXBv
c3RlcigpLmlzRW1wdHkoKSAmJiByZWFkeVN0YXRlKCkgPCBIQVZFX0NVUlJFTlRfREFUQTsKIAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBpZiAoYXR0YWNoZWQoKSAm
JiBvbGRTaG91bGRTaG93UG9zdGVySW1hZ2UgIT0gbV9zaG91bGRTaG93UG9zdGVySW1hZ2UpIHsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL01lZGlhRXJyb3IuaAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvTWVkaWFF
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRXJyb3I+IHsK
IHB1YmxpYzoKLSAgICBlbnVtIENvZGUgeyBNRURJQV9FUlJfQUJPUlRFRCA9IDEsIE1FRElBX0VS
Ul9ORVRXT1JLLCBNRURJQV9FUlJfREVDT0RFIH07CisgICAgZW51bSBDb2RlIHsgTUVESUFfRVJS
X0FCT1JURUQgPSAxLCBNRURJQV9FUlJfTkVUV09SSywgTUVESUFfRVJSX0RFQ09ERSwgTUVESUFf
RVJSX05PTkVfU1VQUE9SVEVEIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUVycm9y
PiBjcmVhdGUoQ29kZSBjb2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFFcnJvcihjb2Rl
KSk7IH0KIApJbmRleDogV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3Jl
L2h0bWwvTWVkaWFFcnJvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAgbW9k
dWxlIGh0bWwgewogICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9BQk9S
VEVEID0gMTsKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09S
SyA9IDI7CiAgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9
IDM7CisgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05PTkVfU1VQUE9S
VEVEID0gNDsKICAgICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29k
ZTsKICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDQx
NjU4KQorKysgV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0OSwxNSArMTQ5LDE0IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcigKICAgICBOb2RlKiB0YXJnZXROb2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsK
ICAgICBpZiAodGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSkg
ewogICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRl
b0VsZW1lbnQqPih0YXJnZXROb2RlKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAg
ICAgICAgIGlmICghdmlkZW8tPmNhblBsYXkoKSkgewotICAgICAgICAgICAgICAgIHZpZGVvLT5w
YXVzZShlYyk7CisgICAgICAgICAgICAgICAgdmlkZW8tPnBhdXNlKCk7CiAgICAgICAgICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkgewog
ICAgICAgICAgICAgaWYgKHZpZGVvLT5jYW5QbGF5KCkpIHsKLSAgICAgICAgICAgICAgICB2aWRl
by0+cGxheShlYyk7CisgICAgICAgICAgICAgICAgdmlkZW8tPnBsYXkoKTsKICAgICAgICAgICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlz
aW9uIDQxNjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWb2x1bWUoZmxvYXQpIHsgfQogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsg
fQotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmc7IH0KIAogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZUJ1ZmZlcmVk
KCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtNDQ0LDExICs0NDQsMjkgQEAgdm9pZCBNZWRpYVBs
YXllcjo6dGltZUNoYW5nZWQoKQogICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllclRpbWVDaGFuZ2VkKHRoaXMpOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjpzaXplQ2hhbmdl
ZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPm1lZGlhUGxheWVyU2l6ZUNoYW5nZWQodGhpcyk7Cit9CisKIHZvaWQgTWVkaWFQ
bGF5ZXI6OnJlcGFpbnQoKQogewogICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQogICAgICAg
ICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclJlcGFpbnQodGhpcyk7CiB9CiAKK3Zv
aWQgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5
ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRHVyYXRp
b25DaGFuZ2VkKHRoaXMpOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCgpCit7
CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPm1lZGlhUGxheWVyUmF0ZUNoYW5nZWQodGhpcyk7Cit9CisKIH0KICNlbmRpZgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gNDE2NTgpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDExICs1MiwzMCBAQCBjbGFzcyBTdHJpbmc7CiBjbGFzcyBNZWRpYVBsYXllckNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJDbGllbnQoKSB7IH0KKworICAg
IC8vIHRoZSBuZXR3b3JrIHN0YXRlIGhhcyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGhl
IHJlYWR5IHN0YXRlIGhhcyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVh
ZHlTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKworICAgIC8vIHRoZSB2b2x1bWUgb3Ig
bXV0ZWQgc3RhdGUgaGFzIGNoYW5nZWQKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJWb2x1
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisKKyAgICAvLyB0aW1lIGhhcyBqdW1wZWQsIGVn
LiBub3QgYXMgYSByZXN1bHQgb2Ygbm9ybWFsIHBsYXliYWNrCiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICAKKyAgICAvLyBhIG5l
dyBmcmFtZSBvZiB2aWRlbyBpcyBhdmFpbGFibGUKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgeyB9CisKKyAgICAvLyB0aGUgbWVkaWEgZmlsZSBkdXJh
dGlvbiBoYXMgY2hhbmdlZCwgb3IgaXMgbm93IGtub3duCisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRHVyYXRpb25DaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgCisgICAgLy8gdGhl
IHBsYXliYWNrIHJhdGUgaGFzIGNoYW5nZWQKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJS
YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGhlIG1vdmllIHNpemUgaGFz
IGNoYW5nZWQKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBs
YXllciopIHsgfQogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXIgOiBOb25jb3B5YWJsZSB7CkBAIC0x
MTUsMTYgKzEzNCwxOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCi0gICAgZW51bSBOZXR3b3JrU3RhdGUgeyBF
bXB0eSwgTG9hZEZhaWxlZCwgTG9hZGluZywgTG9hZGVkTWV0YURhdGEsIExvYWRlZEZpcnN0RnJh
bWUsIExvYWRlZCB9OworICAgIGVudW0gTmV0d29ya1N0YXRlIHsgRW1wdHksIElkbGUsIExvYWRp
bmcsIExvYWRlZCwgRm9ybWF0RXJyb3IsIE5ldHdvcmtFcnJvciwgRGVjb2RlRXJyb3IgfTsKICAg
ICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CiAKLSAgICBlbnVtIFJlYWR5U3RhdGUgIHsg
RGF0YVVuYXZhaWxhYmxlLCBDYW5TaG93Q3VycmVudEZyYW1lLCBDYW5QbGF5LCBDYW5QbGF5VGhy
b3VnaCB9OworICAgIGVudW0gUmVhZHlTdGF0ZSAgeyBIYXZlTm90aGluZywgSGF2ZU1ldGFkYXRh
LCBIYXZlQ3VycmVudERhdGEsIEhhdmVGdXR1cmVEYXRhLCBIYXZlRW5vdWdoRGF0YSB9OwogICAg
IFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpOwogICAgIAogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hh
bmdlZCgpOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHZvbHVtZUNo
YW5nZWQoKTsKICAgICB2b2lkIHRpbWVDaGFuZ2VkKCk7CisgICAgdm9pZCBzaXplQ2hhbmdlZCgp
OworICAgIHZvaWQgcmF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpOwog
CiAgICAgdm9pZCByZXBhaW50KCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAko
cmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTQogICAgICwgbV9pc0Vu
ZFJlYWNoZWQoZmFsc2UpCiAgICAgLCBtX3ZvbHVtZSgwLjVmKQogICAgICwgbV9uZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpE
YXRhVW5hdmFpbGFibGUpCisgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nKQogICAgICwgbV9zdGFydGVkUGxheWluZyhmYWxzZSkKICAgICAsIG1faXNTdHJlYW1pbmco
ZmFsc2UpCiAgICAgLCBtX3NpemUoSW50U2l6ZSgpKQpAQCAtMTU4LDggKzE1OCw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0cmkKICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0
ZUNoYW5nZWQoKTsKICAgICB9Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6
RGF0YVVuYXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpE
YXRhVW5hdmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAKQEAg
LTQ2NiwxMiArNDY2LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMo
KQogICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAg
ICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkpIHsKLSAgICAgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5VGhyb3VnaDsKKyAgICAgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1f
bmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZCkKLSAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBN
ZWRpYVBsYXllcjo6TG9hZGVkOwogCiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4sICJz
b3VyY2UiLCAmbV9zb3VyY2UsIE5VTEwpOwogICAgICAgICBpZiAoIW1fc291cmNlKQpAQCAtNDg5
LDEyICs0ODgsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksCiAgICAgICAgICAg
ICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIGlmIChzdGF0
ZSA9PSBHU1RfU1RBVEVfUkVBRFkpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpDYW5QbGF5OworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6
OkhhdmVGdXR1cmVEYXRhOwogICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9Q
QVVTRUQpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5
OworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0
YTsKICAgICAgICAgfQotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6
TG9hZGVkTWV0YURhdGEpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpMb2FkZWRNZXRhRGF0YTsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TG9hZGluZzsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX1ZFUkJP
U0UoTWVkaWEsICJFbHNlIDogJWQiLCByZXQpOwpAQCAtNTAyLDcgKzUwMCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIH0KIAogICAgIGlmIChzZWVraW5n
KCkpCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7
CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKIAogICAg
IGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsKICAgICAgICAgTE9HX1ZF
UkJPU0UoTWVkaWEsICJOZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsCkBAIC01
NTEsMTIgKzU0OSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIGlmIChtX25ldHdv
cmtTdGF0ZSAhPSBNZWRpYVBsYXllcjo6TG9hZEZhaWxlZCkgewotICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkOworICAgIGlmIChtX25ldHdvcmtTdGF0ZSAh
PSBNZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yKSB7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcjsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0
ZUNoYW5nZWQoKTsKICAgICB9Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6
RGF0YVVuYXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpE
YXRhVW5hdmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0LmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtODksMTEgKzg5LDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsK
ICAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OwogICAgIHZvaWQgc2VlayhmbG9hdCB0aW1l
KTsKLSAgICB2b2lkIHNldEVuZFRpbWUoZmxvYXQgdGltZSk7CiAgICAgCiAgICAgdm9pZCBzZXRS
YXRlKGZsb2F0KTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7Ci0gICAgCisKKyAgICB2b2lk
IHNldEVuZFRpbWUoZmxvYXQgdGltZSk7CisKICAgICBpbnQgZGF0YVJhdGUoKSBjb25zdDsKICAg
ICAKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya1N0YXRlOyB9CkBAIC0xMjMsMTIgKzEyNCwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZG9TZWVrKCk7CiAgICAgdm9pZCBjYW5jZWxTZWVrKCk7CiAgICAgdm9pZCBzZWVr
VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7Ci0gICAgdm9pZCBlbmRQb2lu
dFRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiopOwogICAgIGZsb2F0IG1heFRp
bWVMb2FkZWQoKSBjb25zdDsKLSAgICB2b2lkIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7
Ci0gICAgdm9pZCBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3ModW5zaWduZWQmIGVuYWJsZWRUcmFj
a0NvdW50KTsKKyAgICB2b2lkIGRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpOwogICAgIAotICAg
IGJvb2wgbWV0YURhdGFBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3F0TW92aWUgJiYgbV9u
ZXR3b3JrU3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOyB9CisgICAgYm9vbCBt
ZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXRNb3ZpZSAmJiBtX3JlYWR5U3Rh
dGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfQogCiAgICAgTWVkaWFQbGF5ZXIqIG1f
cGxheWVyOwogICAgIFJldGFpblB0cjxRVE1vdmllPiBtX3F0TW92aWU7CkBAIC0xMzYsMTUgKzEz
NSwxNSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxRVFZpZGVvUmVuZGVyZXJXZWJLaXRPbmx5
PiBtX3F0VmlkZW9SZW5kZXJlcjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZU1vdmllT2JzZXJ2ZXI+
IG1fb2JqY09ic2VydmVyOwogICAgIGZsb2F0IG1fc2Vla1RvOwotICAgIGZsb2F0IG1fZW5kVGlt
ZTsKICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG1fc2Vla1RpbWVyOwotICAgIFRpbWVy
PE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9lbmRQb2ludFRpbWVyOwogICAgIE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
bV9yZWFkeVN0YXRlOwogICAgIGJvb2wgbV9zdGFydGVkUGxheWluZzsKICAgICBib29sIG1faXNT
dHJlYW1pbmc7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgSW50UmVjdCBtX3JlY3Q7CisgICAg
dW5zaWduZWQgbV9lbmFibGVkVHJhY2tDb3VudDsKKyAgICBmbG9hdCBtX2R1cmF0aW9uOwogI2lm
IERSQVdfRlJBTUVfUkFURQogICAgIGludCAgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nOwogICAg
IGRvdWJsZSBtX3RpbWVTdGFydGVkUGxheWluZzsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZp
c2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsOCArMTU3LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZmxv
YXQgZW5kUG9pbnRUaW1lckludGVydmFsID0gMC4wMjBmOwotCiAjaWZkZWYgQlVJTERJTkdfT05f
VElHRVIKIHN0YXRpYyBjb25zdCBsb25nIG1pbmltdW1RdWlja1RpbWVWZXJzaW9uID0gMHgwNzMw
MDAwMDsgLy8gNy4zCiAjZW5kaWYKQEAgLTE3OSwxNSArMTc3LDE1IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE0KICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAs
IG1fb2JqY09ic2VydmVyKEFkb3B0TlMsIFtbV2ViQ29yZU1vdmllT2JzZXJ2ZXIgYWxsb2NdIGlu
aXRXaXRoQ2FsbGJhY2s6dGhpc10pCiAgICAgLCBtX3NlZWtUbygtMSkKLSAgICAsIG1fZW5kVGlt
ZShudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkpCiAgICAgLCBtX3NlZWtUaW1lcih0
aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCkKLSAgICAsIG1fZW5kUG9p
bnRUaW1lcih0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRpbWVyRmlyZWQpCiAg
ICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX3N0YXJ0ZWRQbGF5aW5nKGZhbHNlKQogICAg
ICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAsIG1f
cmVjdCgpCisgICAgLCBtX2VuYWJsZWRUcmFja0NvdW50KDApCisgICAgLCBtX2R1cmF0aW9uKC0x
LjBmKQogI2lmIERSQVdfRlJBTUVfUkFURQogICAgICwgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5n
KDApCiAgICAgLCBtX3RpbWVTdGFydGVkUGxheWluZygwKQpAQCAtNDA3LDEyICs0MDUsMTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWQoY29uc3QgU3RyaQogICAgICAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICBtX3BsYXllci0+bmV0d29y
a1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxh
eWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVy
OjpIYXZlTm90aGluZykgeworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0K
ICAgICBjYW5jZWxTZWVrKCk7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKICAgICAKICAg
ICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6WUVTXTsKIApAQCAtNDMz
LDcgKzQzMCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KCkKICAgICBbbV9vYmpj
T2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6WUVTXTsKICAgICBbbV9xdE1vdmllLmdl
dCgpIHNldFJhdGU6bV9wbGF5ZXItPnJhdGUoKV07CiAgICAgW21fb2JqY09ic2VydmVyLmdldCgp
IHNldERlbGF5Q2FsbGJhY2tzOk5PXTsKLSAgICBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2UoKQpAQCAtNDQ3LDcgKzQ0Myw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZSgpCiAgICAgW21fb2JqY09ic2VydmVy
LmdldCgpIHNldERlbGF5Q2FsbGJhY2tzOllFU107CiAgICAgW21fcXRNb3ZpZS5nZXQoKSBzdG9w
XTsKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6Tk9dOwotICAg
IG1fZW5kUG9pbnRUaW1lci5zdG9wKCk7CiB9CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6
ZHVyYXRpb24oKSBjb25zdApAQCAtNDY1LDcgKzQ2MCw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJp
dmF0ZTo6Y3VycmVudFRpbWUoKSAKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIFFUVGltZSB0aW1lID0gW21fcXRNb3ZpZS5nZXQoKSBjdXJyZW50
VGltZV07Ci0gICAgcmV0dXJuIG1pbihzdGF0aWNfY2FzdDxmbG9hdD4odGltZS50aW1lVmFsdWUp
IC8gdGltZS50aW1lU2NhbGUsIG1fZW5kVGltZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0Pih0aW1lLnRpbWVWYWx1ZSkgLyB0aW1lLnRpbWVTY2FsZTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnNlZWsoZmxvYXQgdGltZSkKQEAgLTQ3Nyw3ICs0NzIsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6c2VlayhmbG9hdCB0aW1lCiAgICAgCiAgICAgaWYgKHRpbWUgPiBk
dXJhdGlvbigpKQogICAgICAgICB0aW1lID0gZHVyYXRpb24oKTsKLSAgICAKKwogICAgIG1fc2Vl
a1RvID0gdGltZTsKICAgICBpZiAobWF4VGltZUxvYWRlZCgpID49IG1fc2Vla1RvKQogICAgICAg
ICBkb1NlZWsoKTsKQEAgLTQ5NSw3ICs0OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
ZG9TZWVrKCkgCiAgICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRDdXJyZW50VGltZTpxdHRpbWVdOwog
ICAgIGZsb2F0IHRpbWVBZnRlclNlZWsgPSBjdXJyZW50VGltZSgpOwogICAgIC8vIHJlc3RvcmUg
cGxheWJhY2sgb25seSBpZiBub3QgYXQgZW5kLCBvdGhld2lzZSBRVE1vdmllIHdpbGwgbG9vcAot
ICAgIGlmICh0aW1lQWZ0ZXJTZWVrIDwgZHVyYXRpb24oKSAmJiB0aW1lQWZ0ZXJTZWVrIDwgbV9l
bmRUaW1lKQorICAgIGlmIChvbGRSYXRlICYmIHRpbWVBZnRlclNlZWsgPCBkdXJhdGlvbigpKQog
ICAgICAgICBbbV9xdE1vdmllLmdldCgpIHNldFJhdGU6b2xkUmF0ZV07CiAgICAgY2FuY2VsU2Vl
aygpOwogICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXREZWxheUNhbGxiYWNrczpOT107CkBA
IC01MjgsMjcgKzUyMyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJl
ZCgKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRFbmRUaW1lKGZsb2F0
IHRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0RW5kVGltZShmbG9hdCkKIHsKLSAg
ICBtX2VuZFRpbWUgPSB0aW1lOwotICAgIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgp
Ci17Ci0gICAgaWYgKG1fZW5kVGltZSA8IGR1cmF0aW9uKCkgJiYgbV9zdGFydGVkUGxheWluZyAm
JiAhbV9lbmRQb2ludFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZW5kUG9pbnRUaW1lci5z
dGFydFJlcGVhdGluZyhlbmRQb2ludFRpbWVySW50ZXJ2YWwpOwotfQotCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6ZW5kUG9pbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4q
KQotewotICAgIGZsb2F0IHRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIAotICAgIC8vIGp1c3Qg
ZG8gZW5kIGZvciBub3cKLSAgICBpZiAodGltZSA+PSBtX2VuZFRpbWUpIHsKLSAgICAgICAgcGF1
c2UoKTsKLSAgICAgICAgZGlkRW5kKCk7Ci0gICAgfQogfQogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZTo6cGF1c2VkKCkgY29uc3QKQEAgLTY2MCw1MSArNjM2LDYyIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIAogICAgIGxvbmcgbG9hZFN0YXRlID0gbV9x
dE1vdmllID8gW1ttX3F0TW92aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OlFUTW92aWVMb2FkU3Rh
dGVBdHRyaWJ1dGVdIGxvbmdWYWx1ZV0gOiBzdGF0aWNfY2FzdDxsb25nPihRVE1vdmllTG9hZFN0
YXRlRXJyb3IpOwogICAgIAotICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxv
YWRlZCAmJiBtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSAmJiAh
bV9wbGF5ZXItPmluTWVkaWFEb2N1bWVudCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVuYWJsZWRU
cmFja0NvdW50OwotICAgICAgICBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoZW5hYmxlZFRyYWNr
Q291bnQpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgYmV0d2Vl
biBsb2FkIGVycm9ycyBhbmQgZGVjb2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4K
LSAgICAgICAgaWYgKCFlbmFibGVkVHJhY2tDb3VudCkKKyAgICBpZiAobG9hZFN0YXRlID49IFFU
TW92aWVMb2FkU3RhdGVMb2FkZWQgJiYgbV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSAmJiAhbV9wbGF5ZXItPmluTWVkaWFEb2N1bWVudCgpKSB7CisgICAgICAgIGRpc2Fi
bGVVbnN1cHBvcnRlZFRyYWNrcygpOworICAgICAgICBpZiAoIW1fZW5hYmxlZFRyYWNrQ291bnQp
CiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9hZFN0YXRlRXJyb3I7CiAgICAgfQog
Ci0gICAgLy8gIkxvYWRlZCIgaXMgcmVzZXJ2ZWQgZm9yIGZ1bGx5IGJ1ZmZlcmVkIG1vdmllcywg
bmV2ZXIgdGhlIGNhc2Ugd2hlbiBzdHJlYW1pbmcKICAgICBpZiAobG9hZFN0YXRlID49IFFUTW92
aWVMb2FkU3RhdGVDb21wbGV0ZSAmJiAhbV9pc1N0cmVhbWluZykgewotICAgICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkKQotICAgICAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgIC8vICJMb2FkZWQiIGlzIHJlc2VydmVk
IGZvciBmdWxseSBidWZmZXJlZCBtb3ZpZXMsIG5ldmVyIHRoZSBjYXNlIHdoZW4gc3RyZWFtaW5n
CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAg
bV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgIH0gZWxzZSBp
ZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVQbGF5dGhyb3VnaE9LKSB7Ci0gICAgICAg
IGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFz
ZWVraW5nKCkpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2Fk
ZWRGaXJzdEZyYW1lOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxh
eVRocm91Z2g7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdo
RGF0YTsKICAgICB9IGVsc2UgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlUGxheWFi
bGUpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZEZp
cnN0RnJhbWUgJiYgIXNlZWtpbmcoKSkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWU7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0
IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBzdHJlYW1pbmcgY2FzZSwgPHJkYXI6Ly9wcm9ibGVtLzU2
OTM5Njc+Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9h
ZGVkKCkgPyBNZWRpYVBsYXllcjo6Q2FuUGxheSA6IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFi
bGU7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVk
KCkgPyBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGEgOiBNZWRpYVBsYXllcjo6SGF2ZUN1cnJl
bnREYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2Fk
ZWQpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1l
dGFEYXRhKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVk
TWV0YURhdGE7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFp
bGFibGU7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7
CiAgICAgfSBlbHNlIGlmIChsb2FkU3RhdGUgPiBRVE1vdmllTG9hZFN0YXRlRXJyb3IpIHsKLSAg
ICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRpbmcpCi0gICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwotICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOyAgICAgICAgCisgICAgICAg
IG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsgICAgICAgIAogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7IAorICAgICAgICBm
bG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7CisKKyAgICAgICAgaWYgKCFsb2FkZWQpCisg
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisKKyAg
ICAgICAgaWYgKCFtX2VuYWJsZWRUcmFja0NvdW50KQorICAgICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3I7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9hZC9uZXR3b3Jr
IGVycm9ycyBhbmQgZGVjb2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4KKyAgICAg
ICAgICAgIGlmIChsb2FkZWQgPiAwKQorICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkRlY29kZUVycm9yOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChzZWVraW5nKCkpCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpEYXRhVW5hdmFpbGFibGU7Ci0gICAgCisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKwogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGRO
ZXR3b3JrU3RhdGUpCiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAg
ICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBvbGRSZWFkeVN0YXRlKQogICAgICAgICBtX3BsYXllci0+
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKIAotICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRT
dGF0ZUxvYWRlZCAmJiBvbGROZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURh
dGEgJiYgbV9wbGF5ZXItPnZpc2libGUoKSkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVM
b2FkU3RhdGVMb2FkZWQgJiYgb2xkUmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRh
dGEgJiYgbV9wbGF5ZXItPnZpc2libGUoKSkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygp
OworCisgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkKSB7CisgICAg
ICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgICAgIGlmIChkdXIgIT0gbV9kdXJhdGlv
bikgeworICAgICAgICAgICAgaWYgKG1fZHVyYXRpb24gIT0gLTEuMGYpCisgICAgICAgICAgICAg
ICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOworICAgICAgICAgICAgbV9kdXJhdGlvbiA9
IGR1cjsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Omxv
YWRTdGF0ZUNoYW5nZWQoKQpAQCAtNzE1LDEwICs3MDIsMTIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OmxvYWRTdGF0ZUNoYW5nZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJhdGVDaGFu
Z2VkKCkKIHsKICAgICB1cGRhdGVTdGF0ZXMoKTsKKyAgICBtX3BsYXllci0+cmF0ZUNoYW5nZWQo
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNpemVDaGFuZ2VkKCkKIHsKKyAgICBt
X3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnRp
bWVDaGFuZ2VkKCkKQEAgLTcyOSw3ICs3MTgsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
dGltZUNoYW5nZWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIHsKLSAg
ICBtX2VuZFBvaW50VGltZXIuc3RvcCgpOwogICAgIG1fc3RhcnRlZFBsYXlpbmcgPSBmYWxzZTsK
ICNpZiBEUkFXX0ZSQU1FX1JBVEUKICAgICBtX3RpbWVTdG9wcGVkUGxheWluZyA9IFtOU0RhdGUg
dGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKQEAgLTc2MSw3ICs3NDksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sCiAgICAgaWYgKG1fdmlzaWJsZSAh
PSBiKSB7CiAgICAgICAgIG1fdmlzaWJsZSA9IGI7CiAgICAgICAgIGlmIChiKSB7Ci0gICAgICAg
ICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQor
ICAgICAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRh
KQogICAgICAgICAgICAgICAgIHNldFVwVmlkZW9SZW5kZXJpbmcoKTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICB0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCk7CkBAIC05MDUsMTAgKzg5Mywx
MCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAg
ICAgCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKHVu
c2lnbmVkJiBlbmFibGVkVHJhY2tDb3VudCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNh
YmxlVW5zdXBwb3J0ZWRUcmFja3MoKQogewogICAgIGlmICghbV9xdE1vdmllKSB7Ci0gICAgICAg
IGVuYWJsZWRUcmFja0NvdW50ID0gMDsKKyAgICAgICAgbV9lbmFibGVkVHJhY2tDb3VudCA9IDA7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC05MjcsNyArOTE1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OmRpc2FibGVVbnN1cHBvcgogICAgIE5TQXJyYXkgKnRyYWNrcyA9
IFttX3F0TW92aWUuZ2V0KCkgdHJhY2tzXTsKICAgICAKICAgICB1bnNpZ25lZCB0cmFja0NvdW50
ID0gW3RyYWNrcyBjb3VudF07Ci0gICAgZW5hYmxlZFRyYWNrQ291bnQgPSB0cmFja0NvdW50Owor
ICAgIG1fZW5hYmxlZFRyYWNrQ291bnQgPSB0cmFja0NvdW50OwogICAgIGZvciAodW5zaWduZWQg
dHJhY2tJbmRleCA9IDA7IHRyYWNrSW5kZXggPCB0cmFja0NvdW50OyB0cmFja0luZGV4KyspIHsK
ICAgICAgICAgLy8gR3JhYiB0aGUgdHJhY2sgYXQgdGhlIGN1cnJlbnQgaW5kZXguIElmIHRoZXJl
IGlzbid0IG9uZSB0aGVyZSwgdGhlbgogICAgICAgICAvLyB3ZSBjYW4gbW92ZSBvbnRvIHRoZSBu
ZXh0IG9uZS4KQEAgLTk1NSw3ICs5NDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlz
YWJsZVVuc3VwcG9yCiAgICAgICAgIGlmICghYWxsb3dlZFRyYWNrVHlwZXMtPmNvbnRhaW5zKG1l
ZGlhVHlwZSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgdHJhY2sgdHlwZSBpcyBub3QgYWxs
b3dlZCwgdGhlbiB3ZSBuZWVkIHRvIGRpc2FibGUgaXQuCiAgICAgICAgICAgICBbdHJhY2sgc2V0
RW5hYmxlZDpOT107Ci0gICAgICAgICAgICAtLWVuYWJsZWRUcmFja0NvdW50OworICAgICAgICAg
ICAgLS1tX2VuYWJsZWRUcmFja0NvdW50OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBEaXNhYmxlIGNoYXB0ZXIgdHJhY2tzLiBUaGVzZSBhcmUgbW9zdCBsaWtlbHkgdG8gbGVhZCB0
byB0cm91YmxlLCBhcwpAQCAtOTg3LDcgKzk3NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
OjpkaXNhYmxlVW5zdXBwb3IKICAgICAgICAgCiAgICAgICAgIC8vIERpc2FibGUgdGhlIGV2aWws
IGV2aWwgdHJhY2suCiAgICAgICAgIFtjaGFwdGVyVHJhY2sgc2V0RW5hYmxlZDpOT107Ci0gICAg
ICAgIC0tZW5hYmxlZFRyYWNrQ291bnQ7CisgICAgICAgIC0tbV9lbmFibGVkVHJhY2tDb3VudDsK
ICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5
ZXJQcml2YXRlUGhvbm9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBob25vbi5jcHAJKHJldmlzaW9uIDQxNjU4KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIp
CiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJs
ZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBt
X21lZGlhT2JqZWN0KG5ldyBNZWRpYU9iamVjdCgpKQogICAgICwgbV92aWRlb1dpZGdldChuZXcg
VmlkZW9XaWRnZXQoMCkpCiAgICAgLCBtX2F1ZGlvT3V0cHV0KG5ldyBBdWRpb091dHB1dCgpKQpA
QCAtMTY5LDggKzE2OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0
cmkKICAgICB9CiAKICAgICAvLyBBbmQgd2UgZG9uJ3QgaGF2ZSBhbnkgZGF0YSB5ZXQKLSAgICBp
ZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAo
bV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykgeworICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5y
ZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlOjpzZWVraW5nKCkgY29uc3QKIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQ
bGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQorICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhKQogICAgICAgICByZXR1cm4gMC4wZjsKIAogICAgIGZsb2F0IGR1cmF0
aW9uID0gbV9tZWRpYU9iamVjdC0+dG90YWxUaW1lKCkgLyAxMDAwLjBmOwpAQCAtMzI5LDE4ICsz
MjksMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgUGhv
bm9uOjpTdGF0ZSBwaG9ub25TdGF0ZSA9IG1fbWVkaWFPYmplY3QtPnN0YXRlKCk7CiAKICAgICBp
ZiAocGhvbm9uU3RhdGUgPT0gUGhvbm9uOjpTdG9wcGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKG9s
ZE5ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkgewotICAgICAgICAg
ICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGE7Ci0gICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAg
ICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSkgeworICAgICAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsgLy8gRklYTUU6IHNo
b3VsZCB0aGlzIGJlIE1lZGlhUGxheWVyOjpJZGxlPworICAgICAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsKICAgICAgICAgICAgIG1fbWVkaWFPYmplY3Qt
PnBhdXNlKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHBob25vblN0YXRlID09IFBob25v
bjo6UGF1c2VkU3RhdGUpIHsKICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TG9hZGVkOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91
Z2g7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsK
ICAgICB9IGVsc2UgaWYgKHBob25vblN0YXRlID09IFBob25vbjo6RXJyb3JTdGF0ZSkgewogICAg
ICAgICAgaWYgKCFtX21lZGlhT2JqZWN0IHx8IG1fbWVkaWFPYmplY3QtPmVycm9yVHlwZSgpID09
IFBob25vbjo6RmF0YWxFcnJvcikgewotICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQ
bGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICAgICAgICAgICAvLyBGSVhNRTogaXMgaXQgcG9z
c2lsZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZGlmZmVyZW50IHR5cGVzIG9mIGVycm9ycwor
ICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcjsK
KyAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAg
ICAgICAgICAgICAgY2FuY2VsTG9hZCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICBtX21lZGlhT2JqZWN0LT5wYXVzZSgpOwpAQCAtMzQ4LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIH0KIAogICAgIGlmIChzZWVraW5nKCkp
Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7Cisg
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKIAogICAgIGlm
IChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsKICAgICAgICAgY29uc3QgUU1l
dGFPYmplY3QqIG1ldGFPYmogPSB0aGlzLT5tZXRhT2JqZWN0KCk7CkBAIC0zOTksNyArNDAwLDcg
QEAgSW50U2l6ZSBNZWRpYVBsYXllclByaXZhdGU6Om5hdHVyYWxTaXplKAogICAgICAgICByZXR1
cm4gSW50U2l6ZSgpOwogICAgIH0KIAotICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxh
eWVyOjpMb2FkZWRNZXRhRGF0YSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXll
cjo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZVBob25vbjo6bmF0dXJhbFNpemUoKSAtPiAlZHglZCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwKTsKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24u
aAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlh
UGxheWVyUHJpdmF0ZVBob25vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxOSArNTIsMjEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBRX0VOVU1TKFJlYWR5U3RhdGUgTmV0d29ya1N0
YXRlIFBob25vblN0YXRlKQogCiAgICAgICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgICAg
ICBEYXRhVW5hdmFpbGFibGUsCi0gICAgICAgICAgICBDYW5TaG93Q3VycmVudEZyYW1lLAotICAg
ICAgICAgICAgQ2FuUGxheSwKLSAgICAgICAgICAgIENhblBsYXlUaHJvdWdoCisgICAgICAgICAg
ICBIYXZlTm90aGluZywgCisgICAgICAgICAgICBIYXZlTWV0YWRhdGEsIAorICAgICAgICAgICAg
SGF2ZUN1cnJlbnREYXRhLCAKKyAgICAgICAgICAgIEhhdmVGdXR1cmVEYXRhLCAKKyAgICAgICAg
ICAgIEhhdmVFbm91Z2hEYXRhCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBOZXR3b3JrU3Rh
dGUgewotICAgICAgICAgICAgRW1wdHksCi0gICAgICAgICAgICBMb2FkRmFpbGVkLAotICAgICAg
ICAgICAgTG9hZGluZywKLSAgICAgICAgICAgIExvYWRlZE1ldGFEYXRhLAotICAgICAgICAgICAg
TG9hZGVkRmlyc3RGcmFtZSwKLSAgICAgICAgICAgIExvYWRlZAorICAgICAgICAgICAgRW1wdHks
IAorICAgICAgICAgICAgSWRsZSwgCisgICAgICAgICAgICBMb2FkaW5nLCAKKyAgICAgICAgICAg
IExvYWRlZCwgCisgICAgICAgICAgICBGb3JtYXRFcnJvciwgCisgICAgICAgICAgICBOZXR3b3Jr
RXJyb3IsIAorICAgICAgICAgICAgRGVjb2RlRXJyb3IKICAgICAgICAgfTsKIAogICAgICAgICBl
bnVtIFBob25vblN0YXRlIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAko
cmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxNiArNjIs
MTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJlZ2lzdGVyTWVkaWFFbgogICAgICAgICBy
ZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlKTsKIH0KIAot
c3RhdGljIGNvbnN0IGRvdWJsZSBlbmRQb2ludFRpbWVySW50ZXJ2YWwgPSAwLjAyMDsKLQogTWVk
aWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikK
ICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc2Vla1RvKC0xKQogICAgICwgbV9lbmRU
aW1lKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSkKICAgICAsIG1fc2Vla1RpbWVy
KHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6OnNlZWtUaW1lckZpcmVkKQotICAgICwgbV9lbmRQ
b2ludFRpbWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6OmVuZFBvaW50VGltZXJGaXJlZCkK
ICAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKLSAgICAsIG1fcmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlKQorICAgICwgbV9yZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZykKKyAgICAsIG1fZW5hYmxlZFRyYWNrQ291bnQoMCkKICAg
ICAsIG1fc3RhcnRlZFBsYXlpbmcoZmFsc2UpCiAgICAgLCBtX2lzU3RyZWFtaW5nKGZhbHNlKQog
I2lmIERSQVdfRlJBTUVfUkFURQpAQCAtODksNyArODcsOCBAQCBNZWRpYVBsYXllclByaXZhdGU6
On5NZWRpYVBsYXllclByaXZhdGUoCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25z
dCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIVFUTW92aWVXaW46OmluaXRpYWxpemVRdWlja1Rp
bWUoKSkgewotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVk
OworICAgICAgICAvLyBGSVhNRTogaXMgdGhpcyB0aGUgcmlnaHQgZXJyb3IgdG8gcmV0dXJuPwor
ICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcjsgCiAgICAg
ICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC05OCwxMiArOTcsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWQoY29u
c3QgU3RyaQogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwog
ICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KLSAgICBpZiAo
bV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAgICAg
bV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAobV9y
ZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykgeworICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5yZWFk
eVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KICAgICBjYW5jZWxTZWVrKCk7Ci0gICAgbV9lbmRQb2lu
dFRpbWVyLnN0b3AoKTsKIAogICAgIG1fcXRNb3ZpZS5zZXQobmV3IFFUTW92aWVXaW4odGhpcykp
OwogICAgIG1fcXRNb3ZpZS0+bG9hZCh1cmwuY2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCkpOwpA
QCAtMTIxLDcgKzExOSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KCkKICNlbmRp
ZgogCiAgICAgbV9xdE1vdmllLT5wbGF5KCk7Ci0gICAgc3RhcnRFbmRQb2ludFRpbWVySWZOZWVk
ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhdXNlKCkKQEAgLTEzMyw3ICsx
MzAsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2UoKQogICAgIG1fdGltZVN0b3Bw
ZWRQbGF5aW5nID0gR2V0VGlja0NvdW50KCk7CiAjZW5kaWYKICAgICBtX3F0TW92aWUtPnBhdXNl
KCk7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKIH0KIAogZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpkdXJhdGlvbigpIGNvbnN0CkBAIC0yMDksMjIgKzIwNSw2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCgKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpz
ZXRFbmRUaW1lKGZsb2F0IHRpbWUpCiB7CiAgICAgbV9lbmRUaW1lID0gdGltZTsKLSAgICBzdGFy
dEVuZFBvaW50VGltZXJJZk5lZWRlZCgpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
c3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKQotewotICAgIGlmIChtX2VuZFRpbWUgPCBkdXJh
dGlvbigpICYmIG1fc3RhcnRlZFBsYXlpbmcgJiYgIW1fZW5kUG9pbnRUaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICBtX2VuZFBvaW50VGltZXIuc3RhcnRSZXBlYXRpbmcoZW5kUG9pbnRUaW1lcklu
dGVydmFsKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmVuZFBvaW50VGltZXJGaXJl
ZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+KikKLXsKLSAgICBmbG9hdCB0aW1lID0gY3VycmVu
dFRpbWUoKTsKLSAgICBpZiAodGltZSA+PSBtX2VuZFRpbWUpIHsKLSAgICAgICAgcGF1c2UoKTsK
LSAgICAgICAgZGlkRW5kKCk7Ci0gICAgfQogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6
cGF1c2VkKCkgY29uc3QKQEAgLTMzOSw0MiArMzE5LDQ0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAKICAgICBsb25nIGxvYWRTdGF0ZSA9IG1fcXRNb3ZpZSA/
IG1fcXRNb3ZpZS0+bG9hZFN0YXRlKCkgOiBRVE1vdmllTG9hZFN0YXRlRXJyb3I7CiAKLSAgICBp
ZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQgJiYgbV9uZXR3b3JrU3RhdGUg
PCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEgJiYgIW1fcGxheWVyLT5pbk1lZGlhRG9jdW1l
bnQoKSkgewotICAgICAgICB1bnNpZ25lZCBlbmFibGVkVHJhY2tDb3VudDsKLSAgICAgICAgbV9x
dE1vdmllLT5kaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoZW5hYmxlZFRyYWNrQ291bnQpOwotICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2FkIGVycm9y
cyBhbmQgZGVjb2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4KLSAgICAgICAgaWYg
KCFlbmFibGVkVHJhY2tDb3VudCkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3Rh
dGVMb2FkZWQgJiYgbV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSAmJiAh
bV9wbGF5ZXItPmluTWVkaWFEb2N1bWVudCgpKSB7CisgICAgICAgIG1fcXRNb3ZpZS0+ZGlzYWJs
ZVVuc3VwcG9ydGVkVHJhY2tzKG1fZW5hYmxlZFRyYWNrQ291bnQpOworICAgICAgICBpZiAoIW1f
ZW5hYmxlZFRyYWNrQ291bnQpCiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9hZFN0
YXRlRXJyb3I7CiAgICAgfQogCiAgICAgLy8gIkxvYWRlZCIgaXMgcmVzZXJ2ZWQgZm9yIGZ1bGx5
IGJ1ZmZlcmVkIG1vdmllcywgbmV2ZXIgdGhlIGNhc2Ugd2hlbiBzdHJlYW1pbmcKICAgICBpZiAo
bG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVDb21wbGV0ZSAmJiAhbV9pc1N0cmVhbWluZykg
ewotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkKQotICAg
ICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwotICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRlID49
IFFUTW92aWVMb2FkU3RhdGVQbGF5dGhyb3VnaE9LKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtT
dGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFzZWVraW5nKCkpCi0gICAg
ICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lOwot
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICB9IGVs
c2UgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlUGxheWFibGUpIHsKLSAgICAgICAg
aWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWUgJiYgIXNl
ZWtpbmcoKSkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRl
ZEZpcnN0RnJhbWU7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhU
aW1lTG9hZGVkKCkgPyBNZWRpYVBsYXllcjo6Q2FuUGxheSA6IE1lZGlhUGxheWVyOjpEYXRhVW5h
dmFpbGFibGU7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3Rs
eSBpbiBzdHJlYW1pbmcgY2FzZSwgPHJkYXI6Ly9wcm9ibGVtLzU2OTM5Njc+CisgICAgICAgIG1f
cmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVkKCkgPyBNZWRpYVBsYXll
cjo6SGF2ZUZ1dHVyZURhdGEgOiBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwogICAgIH0g
ZWxzZSBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQpIHsKLSAgICAgICAg
aWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQotICAgICAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGE7Ci0gICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CiAgICAgfSBlbHNlIGlm
IChsb2FkU3RhdGUgPiBRVE1vdmllTG9hZFN0YXRlRXJyb3IpIHsKLSAgICAgICAgaWYgKG1fbmV0
d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRpbmcpCi0gICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOyAgICAgICAgCisgICAgICAgIG1fbmV0d29ya1N0YXRl
ID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpIYXZlTm90aGluZzsgICAgICAgIAogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9
IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7IAorICAgICAgICBmbG9hdCBsb2FkZWQgPSBt
YXhUaW1lTG9hZGVkKCk7CisgICAgICAgIGlmICghbG9hZGVkKQorICAgICAgICAgICAgbV9yZWFk
eVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworCisgICAgICAgIGlmICghbV9lbmFi
bGVkVHJhY2tDb3VudCkKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkZvcm1hdEVycm9yOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGxvYWQvbmV0d29yayBlcnJvcnMgYW5kIGRlY29k
ZSBlcnJvcnMgPHJkYXI6Ly9wcm9ibGVtLzU2MDU2OTI+CisgICAgICAgICAgICBpZiAobG9hZGVk
ID4gMCkKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNv
ZGVFcnJvcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
c2Vla2luZygpKQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZh
aWxhYmxlOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7
CiAgICAgCiAgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IG9sZE5ldHdvcmtTdGF0ZSkKICAgICAg
ICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTM4NSw3ICszNjcsNiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmRpZEVuZCgpCiB7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKICAgICBt
X3N0YXJ0ZWRQbGF5aW5nID0gZmFsc2U7CiAjaWYgRFJBV19GUkFNRV9SQVRFCiAgICAgbV90aW1l
U3RvcHBlZFBsYXlpbmcgPSBHZXRUaWNrQ291bnQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVdpbi5oCShyZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Nyw5ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1NlZWsoKTsKICAgICB2b2lkIGNhbmNl
bFNlZWsoKTsKICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0
ZT4qKTsKLSAgICB2b2lkIGVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZh
dGU+Kik7CiAgICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwotICAgIHZvaWQgc3RhcnRF
bmRQb2ludFRpbWVySWZOZWVkZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBtb3ZpZUVuZGVkKFFU
TW92aWVXaW4qKTsKICAgICB2aXJ0dWFsIHZvaWQgbW92aWVMb2FkU3RhdGVDaGFuZ2VkKFFUTW92
aWVXaW4qKTsKQEAgLTExNyw5ICsxMTUsOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2Vla1Rv
OwogICAgIGZsb2F0IG1fZW5kVGltZTsKICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG1f
c2Vla1RpbWVyOwotICAgIFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9lbmRQb2ludFRpbWVy
OwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIHVuc2lnbmVkIG1fZW5hYmxl
ZFRyYWNrQ291bnQ7CiAgICAgYm9vbCBtX3N0YXJ0ZWRQbGF5aW5nOwogICAgIGJvb2wgbV9pc1N0
cmVhbWluZzsKICNpZiBEUkFXX0ZSQU1FX1JBVEUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjUsOCArMTY1
LDcgQEAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udAogdm9pZCBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQp
IHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnRv
Z2dsZVBsYXlTdGF0ZShlYyk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3Rh
dGUoKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhU
TUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtMTkwLDggKzE4
OSw3IEBAIHZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmEKICAgICAgICAg
ICAgIG1fY2FwdHVyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKHRoaXMpOwogICAgICAgICB9Ci0gICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZShlYyk7Cisg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZSgpOwogICAgICAgICBtX3NlZWtUaW1lci5zdGFy
dFJlcGVhdGluZyhjU2Vla1JlcGVhdERlbGF5KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZXVwRXZlbnQpIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxNjkzKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMDktMDMtMTMgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1ODgKKyAgICAgICAgQnVnIDI0NTg4OiBVcGRhdGUgbWVk
aWEgZWxlbWVudCBpbXBsZW1lbnRhdGlvbiB0byBjdXJyZW50IHNwZWMKKworICAgICAgICAqIG1l
ZGlhL21lZGlhLWNvbnN0YW50cy1leHBlY3RlZC50eHQ6IFRlc3QgYWxsIG1lZGlhIGNvbnN0YW50
cy4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jb25zdGFudHMuaHRtbDogRGl0dG8uCisgICAgICAg
ICogbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGZvciBz
cGVjIGNoYW5nZXMuCisgICAgICAgICogbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9h
ZC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC5odG1s
OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS91bnN1cHBvcnRlZC1ydHNwLWV4cGVjdGVkLnR4dDog
RGl0dG8uCisgICAgICAgICogbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sOiBEaXR0by4KKyAg
ICAgICAgKiBtZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQudHh0OiBEaXR0by4K
KyAgICAgICAgKiBtZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRtbDogRGl0dG8uCisgICAg
ICAgICogbWVkaWEvdmlkZW8tZXJyb3ItYWJvcnQtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBtZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQ6IERpdHRv
LgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWw6IERpdHRv
LgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLWV4cGVjdGVkLnR4dDog
RGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbDogRGl0
dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLWV4cGVjdGVkLnR4dDog
RGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLmh0bWw6IERpdHRv
LgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWxvb3AtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBtZWRpYS92aWRlby1sb29wLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVv
LXBhdXNlLWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1wbGF5LWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICog
bWVkaWEvdmlkZW8tcGxheS1wYXVzZS1ldmVudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVk
aWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBtZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sOiBEaXR0by4KKyAgICAg
ICAgKiBtZWRpYS92aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBUZXN0
IHRoYXQgc2Vla2luZyAKKyAgICAgICAgd2hlbmUgdGhlcmUgaXMgbm8gJ3NyYycgYXR0cmlidXRl
IHRocm93cyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24uCisgICAgICAgICogbWVkaWEv
dmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLmh0bWw6IAorICAgICAgICAqIG1lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGxheWluZy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWluZy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBt
ZWRpYS92aWRlby1zZWVraW5nLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEv
dmlkZW8tc2Vla2luZy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2Ut
YWRkLXNyYy1leHBlY3RlZC50eHQ6IFRlc3QgdGhhdCBhZGRpbmcgYSAnc3JjJyAKKyAgICAgICAg
YXR0cmlidXRlIGRvZXMgbm90aGluZyB3aGVuIGEgPHNvdXJjZT4gZWxlbWVudCBoYXMgYWxyZWFk
eSBiZWVuIGNob3Nlbi4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy5odG1s
OiAKKyAgICAgICAgKiBtZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dDogRGl0dG8u
CisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sOiBEaXR0by4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1zcmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0OiBUZXN0IHRoYXQg
cmVtb3ZpbmcgaW52YWxpZCAKKyAgICAgICAgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJzIDxzb3Vy
Y2U+IGVsZW1lbnRzIGxvYWRpbmcuCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLWludmFsaWQt
cmVtb3ZlLmh0bWw6IAorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBl
Y3RlZC50eHQ6IFRlc3QgdGhhdCBhIDxzb3VyY2U+IGVsZW1lbnQgCisgICAgICAgIGlzIG5vdCB1
c2VkIHdoZW4gYSBib2d1cyAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudC4KKyAgICAgICAgKiBt
ZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UuaHRtbDogCisgICAgICAgICogbWVkaWEvdmlkZW8t
c3JjLXJlbW92ZS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNy
Yy1yZW1vdmUuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5qczogCisg
ICAgICAgIChmaW5kTWVkaWFFbGVtZW50KToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6CisgICAg
ICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAoZmFpbFRlc3QpOgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXRpbWV1cGRhdGUtd2hpbGUtcGxheWluZy1leHBlY3RlZC50eHQ6IFRlc3QgJ3RpbWV1
cGRhdGUnIGV2ZW50cworICAgICAgICBhcmUgcG9zdGVkIGFuIGVsZW1lbnQgaXMgcGxheWluZyBi
dXQgbm90IHdoaWxlIHBhdXNlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby10aW1ldXBkYXRlLXdo
aWxlLXBsYXlpbmcuaHRtbDoKKwogMjAwOS0wMy0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtY29uc3RhbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25zdGFudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29uc3RhbnRzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBIVE1MTWVkaWFFbGVtZW50IGFuZCBNZWRp
YUVycm9yIGNvbnN0YW50cy4KKworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19F
TVBUWSA9PSAnMCcpIE9LCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0lETEUg
PT0gJzEnKSBPSworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FESU5HID09
ICcyJykgT0sKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BREVEID09ICcz
JykgT0sKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFID09ICc0
JykgT0sKKworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9OT1RISU5HID09ICcwJykg
T0sKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50LkhBVkVfTUVUQURBVEEgPT0gJzEnKSBPSwor
RVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9DVVJSRU5UX0RBVEEgPT0gJzInKSBPSwor
RVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9GVVRVUkVfREFUQSA9PSAnMycpIE9LCitF
WFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5IQVZFX0VOT1VHSF9EQVRBID09ICc0JykgT0sKKwor
RVhQRUNURUQgKE1lZGlhRXJyb3IuTUVESUFfRVJSX0FCT1JURUQgPT0gJzEnKSBPSworRVhQRUNU
RUQgKE1lZGlhRXJyb3IuTUVESUFfRVJSX05FVFdPUksgPT0gJzInKSBPSworRVhQRUNURUQgKE1l
ZGlhRXJyb3IuTUVESUFfRVJSX0RFQ09ERSA9PSAnMycpIE9LCitFWFBFQ1RFRCAoTWVkaWFFcnJv
ci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQgPT0gJzQnKSBPSworRU5EIE9GIFRFU1QKKwpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29uc3RhbnRzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29uc3RhbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25zdGFudHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMCBAQAorCis8cD5UZXN0IEhUTUxNZWRpYUVsZW1lbnQgYW5kIE1lZGlhRXJyb3IgY29u
c3RhbnRzLjwvcD4KKworPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworPHNj
cmlwdD4KKyAgICAKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19F
TVBUWSIsIDApOworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0lE
TEUiLCAxKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FE
SU5HIiwgMik7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9B
REVEIiwgMyk7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9f
U09VUkNFIiwgNCk7CisgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgIHRlc3RFeHBlY3RlZCgi
SFRNTE1lZGlhRWxlbWVudC5IQVZFX05PVEhJTkciLCAwKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhU
TUxNZWRpYUVsZW1lbnQuSEFWRV9NRVRBREFUQSIsIDEpOworICAgIHRlc3RFeHBlY3RlZCgiSFRN
TE1lZGlhRWxlbWVudC5IQVZFX0NVUlJFTlRfREFUQSIsIDIpOworICAgIHRlc3RFeHBlY3RlZCgi
SFRNTE1lZGlhRWxlbWVudC5IQVZFX0ZVVFVSRV9EQVRBIiwgMyk7CisgICAgdGVzdEV4cGVjdGVk
KCJIVE1MTWVkaWFFbGVtZW50LkhBVkVfRU5PVUdIX0RBVEEiLCA0KTsKKyAgICBjb25zb2xlV3Jp
dGUoIiIpOworCisgICAgdGVzdEV4cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9BQk9SVEVE
IiwgMSk7CisgICAgdGVzdEV4cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9ORVRXT1JLIiwg
Mik7CisgICAgdGVzdEV4cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9ERUNPREUiLCAzKTsK
KyAgICB0ZXN0RXhwZWN0ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEIiwg
NCk7CisKKworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgorCkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogVGVzdCB0aGF0IHJlbW92
aW5nIGEgbWVkaWEgZWxlbWVudCBmcm9tIHRoZSB0cmVlIHBhdXNlcyBwbGF5YmFjayBidXQgZG9l
cyBub3QgdW5sb2FkIHRoZSBtZWRpYS4KIAogRVZFTlQobG9hZCkKLUVYUEVDVEVEICh2aWRlby5u
ZXR3b3JrU3RhdGUgPT0gJzQnKSBPSworRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAn
MycpIE9LCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCiBSVU4oZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZCh2aWRlbykpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRl
ID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzMnKSBPSwogRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1uby1sb2FkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9hZC5o
dG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRv
Y3VtZW50LW5vLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKICAgICBk
aWRSZWNlaXZlTG9hZFN0YXJ0RXZlbnQgPSBmYWxzZTsKICAgICB2aWRlby5hZGRFdmVudExpc3Rl
bmVyKCdsb2Fkc3RhcnQnLCBmdW5jdGlvbigpIHsgZGlkUmVjZWl2ZUxvYWRTdGFydEV2ZW50ID0g
dHJ1ZTsgfSk7CiAgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSk7Cisg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5F
VFdPUktfRU1QVFkpOwogICAgIHJ1bigiZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh2aWRlbyki
KTsKICAgICB0ZXN0RXhwZWN0ZWQoImRpZFJlY2VpdmVMb2FkU3RhcnRFdmVudCIsIGZhbHNlKTsK
ICAgICBlbmRUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1
bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRv
Y3VtZW50Lmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3Zl
LWZyb20tZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNSBAQAotPHZp
ZGVvIGNvbnRyb2xzPjwvdmlkZW8+Cis8dmlkZW8gY29udHJvbHMgYXV0b3BsYXk+PC92aWRlbz4K
IDxwPlRlc3QgdGhhdCByZW1vdmluZyBhIG1lZGlhIGVsZW1lbnQgZnJvbSB0aGUgdHJlZSBwYXVz
ZXMgcGxheWJhY2sgYnV0IGRvZXMgbm90IHVubG9hZCB0aGUgbWVkaWEuPC9wPgogPHNjcmlwdCBz
cmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgd2FpdEZvckV2ZW50KCds
b2FkJywgZnVuY3Rpb24gKCkgewogCi0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29y
a1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5MT0FERUQpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FERUQpOwog
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKIAogICAgICAgICBy
dW4oImRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodmlkZW8pIik7CiAKLSAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkxPQURFRCk7Cisg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVu
dC5ORVRXT1JLX0xPQURFRCk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwg
dHJ1ZSk7CiAKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CkBAIC0xNyw1ICsxNyw0
IEBACiAgICAgfSApOwogCiB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci12aWRlby5w
bGF5KCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0
c3AtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9y
dGVkLXJ0c3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3Vuc3VwcG9ydGVkLXJ0c3AtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYg
KzIsNyBAQCBUZXN0IHRoYXQgUXVpY2tUaW1lIGZpbGUgd2l0aCBSVFNQIFVSTCBnCiAKIEVWRU5U
KGVycm9yKQogRVhQRUNURUQgKHZpZGVvLmVycm9yICE9ICdudWxsJykgT0sKLUVYUEVDVEVEICh2
aWRlby5lcnJvci5jb2RlID09ICcyJykgT0sKK0VYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09
ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSwogRU5EIE9G
IFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AuaHRtbAkocmV2
aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTUgQEAKKwogPHZpZGVvIGNvbnRyb2xzPjwvdmlk
ZW8+CisKIDxwPlRlc3QgdGhhdCBRdWlja1RpbWUgZmlsZSB3aXRoIFJUU1AgVVJMIGdlbmVyYXRl
cyBhIGxvYWQgZXJyb3IuPHA+CisKIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CiA8c2NyaXB0PgotdmlkZW8uc3JjID0gInJ0c3A6Ly9hMjA0Ny52MTQxMWIuYzE0MTEuZy52cS5h
a2FtYWlzdHJlYW0ubmV0LzUvMjA0Ny8xNDExLzJfaDI2NF82NTAvMWExYTFhZTQ1NGM0MzA5NTAw
NjVkZTRjYmIyZjk0YzIyNjk1MGM3YWU2NTViNjFhNDhhOTE0NzVlMjQzYWNkYTNkYWMxOTQ4Nzlh
ZGRlMGYvd3dkY18yMDA2XzJfNjUwLm1vdiI7Ci13YWl0Rm9yRXZlbnQoImVycm9yIiwgZnVuY3Rp
b24gKCkgewotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IiLCBudWxsLCAiIT0iKTsKLSAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9O
RVRXT1JLKTsKLSAgICBlbmRUZXN0KCk7Ci19KTsKKyAgICB2aWRlby5zcmMgPSAicnRzcDovL2Ey
MDQ3LnYxNDExYi5jMTQxMS5nLnZxLmFrYW1haXN0cmVhbS5uZXQvNS8yMDQ3LzE0MTEvMl9oMjY0
XzY1MC8xYTFhMWFlNDU0YzQzMDk1MDA2NWRlNGNiYjJmOTRjMjI2OTUwYzdhZTY1NWI2MWE0OGE5
MTQ3NWUyNDNhY2RhM2RhYzE5NDg3OWFkZGUwZi93d2RjXzIwMDZfMl82NTAubW92IjsKKyAgICB3
YWl0Rm9yRXZlbnQoImVycm9yIiwgZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmVycm9yIiwgbnVsbCwgIiE9Iik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
ZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5F
VFdPUktfTk9fU09VUkNFKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOwogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNl
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tY3VycmVudFRpbWUtc2V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDExIEBACitUZXN0IHRoYXQgc2V0dGluZyBjdXJyZW50VGltZSBjaGFuZ2VzIHRoZSB0aW1lLCBh
bmQgdGhhdCAnZW5kZWQnIGV2ZW50IGlzIGZpcmVkIGluIGEgcmVhc29uYWJsZSBhbW91bnQgb2Yg
dGltZQorCiBFVkVOVChsb2FkKQotRVZFTlQodGltZXVwZGF0ZSkKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA9PSAnMCcpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJh
dGlvbiAtIDAuMikKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDIpID09ICc4
LjIwJykgT0sKK1JVTih2aWRlby5wbGF5KCkpCisKIEVWRU5UKGVuZGVkKQogRU5EIE9GIFRFU1QK
IApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWwJ
KHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUt
c2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMjcgQEAKLTx2aWRlbyBzcmM9Y29u
dGVudC90ZXN0Lm1wNCBjb250cm9scz48L3ZpZGVvPgotPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci13YWl0Rm9yRXZlbnQoJ2xvYWQnLCAgCi1mdW5jdGlvbiAo
KSB7IAotICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjI7IAotICAg
IHZpZGVvLnBsYXkoKTsgCi0gICAgd2FpdEZvckV2ZW50KCd0aW1ldXBkYXRlJywgZnVuY3Rpb24g
KCkgeworPGh0bWw+Cis8Ym9keT4KKworICAgIDx2aWRlbyBzcmM9Y29udGVudC90ZXN0Lm1wNCBj
b250cm9scz48L3ZpZGVvPgorICAgIAorICAgIDxwPlRlc3QgdGhhdCBzZXR0aW5nIGN1cnJlbnRU
aW1lIGNoYW5nZXMgdGhlIHRpbWUsIGFuZCB0aGF0ICdlbmRlZCcgZXZlbnQgaXMgZmlyZWQgaW4g
YSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lPC9wPgorICAgIAorICAgIDxzY3JpcHQgc3JjPXZp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3YWl0Rm9yRXZlbnQoJ2xv
YWQnLCAgCisgICAgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgd2FpdEZvckV2ZW50QW5kRW5kKCdl
bmRlZCcpOworICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwg
MCk7CisgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAu
MiIpOyAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDIp
IiwgKHZpZGVvLmR1cmF0aW9uIC0gMC4yKS50b0ZpeGVkKDIpKTsKKyAgICAgICAgcnVuKCJ2aWRl
by5wbGF5KCkiKTsgCisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgCiAgICAgICAgIHZh
ciB0aW1lb3V0ID0gODAwOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9nUmVz
dWx0KCJObyB0aW1ldXBkYXRlIGV2ZW50IGluICIgKyB0aW1lb3V0LzEwMDAgICsgInNlY29uZHMi
LCBmYWxzZSk7IH0sIHRpbWVvdXQpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsg
bG9nUmVzdWx0KCJObyAnZW5kZWQnIGV2ZW50IGluICIgKyB0aW1lb3V0LzEwMDAgICsgInNlY29u
ZHMiLCBmYWxzZSk7IH0sIHRpbWVvdXQpOwogICAgIH0pOwotICAgIHdhaXRGb3JFdmVudEFuZEVu
ZCgnZW5kZWQnKTsKLX0pOwotdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotPC9zY3Jp
cHQ+CisgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOworICAgIDwvc2NyaXB0Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1h
Ym9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
ZXJyb3ItYWJvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWVycm9yLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDUgQEAKIEVYUEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCiBFVkVOVChs
b2Fkc3RhcnQpCi1FVkVOVChhYm9ydCkKLUVYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICcx
JykgT0sKLUVWRU5UKGxvYWRzdGFydCkKIEVWRU5UKGxvYWQpCiBFWFBFQ1RFRCAodmlkZW8uZXJy
b3IgPT0gJ251bGwnKSBPSwogRU5EIE9GIFRFU1QKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3Qt
ZXhpc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsMTMgQEAKIFRlc3Qg
dGhhdCB0aGUgbWVkaWEgZWxlbWVudCBpcyBpbiBjb3JyZWN0IHN0YXRlIGFmdGVyIGxvYWQgZmFp
bHMuCiAKKwogRVhQRUNURUQgKHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKLUVWRU5UKGVtcHRp
ZWQpCi1FWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnMicpIE9LCi1FWFBFQ1RFRCAodmlk
ZW8uZHVyYXRpb24gPT0gJzAnKSBPSworCitFVkVOVChlcnJvcikKK0VYUEVDVEVEICh2aWRlby5l
cnJvciAhPSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnNCcpIE9L
CitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICc0JykgT0sKK0VYUEVDVEVEIChpc05h
Tih2aWRlby5kdXJhdGlvbikgPT0gJ3RydWUnKSBPSwogRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRU
aW1lID09ICcwJykgT0sKIEVYUEVDVEVEICh2aWRlby5idWZmZXJlZC5sZW5ndGggPT0gJzAnKSBP
SwogRVhQRUNURUQgKHZpZGVvLnNlZWthYmxlLmxlbmd0aCA9PSAnMCcpIE9LCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWwJKHJl
dmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3Qt
ZXhpc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxNiArMiwyNiBAQAogPHZpZGVvIGNvbnRy
b2xzPjwvdmlkZW8+CiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlw
dD4KLXRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IiLCBudWxsKTsKLXdhaXRGb3JFdmVudEFuZFRl
c3QoImxvYWQiLCAiZmFsc2UiKTsKLXdhaXRGb3JFdmVudCgiZW1wdGllZCIsIGZ1bmN0aW9uICgp
IHsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElB
X0VSUl9ORVRXT1JLKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmR1cmF0aW9uIiwgMCk7Ci0g
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDApOwotICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8uYnVmZmVyZWQubGVuZ3RoIiwgMCk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5z
ZWVrYWJsZS5sZW5ndGgiLCAwKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmJ1ZmZlcmVkLmxl
bmd0aCIsIDApOwotICAgIGVuZFRlc3QoKTsKLX0pOwotdmlkZW8uc3JjID0gImNvbnRlbnQvZG9l
cy1ub3QtZXhpc3QubXBlZyI7CisKKyAgICBjb25zb2xlV3JpdGUoIiIpOworICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uZXJyb3IiLCBudWxsKTsKKworICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoImxv
YWQiLCAiZmFsc2UiKTsKKyAgICAKKyAgICB3YWl0Rm9yRXZlbnQoImVycm9yIiwgZnVuY3Rpb24g
KCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yIiwgbnVsbCwgIiE9Iik7Cisg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFf
RVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5u
ZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFKTsKKyAgICAK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCJpc05hTih2aWRlby5kdXJhdGlvbikiLCB0cnVlKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDApOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmJ1ZmZlcmVkLmxlbmd0aCIsIDApOworICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLnNlZWthYmxlLmxlbmd0aCIsIDApOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmJ1ZmZlcmVkLmxlbmd0aCIsIDApOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7Cisg
ICAgCisgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvZG9lcy1ub3QtZXhpc3QubXBlZyI7CisgICAg
Y29uc29sZVdyaXRlKCIiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tbG9hZC1uZXR3b3JrU3RhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTcgQEAKK1Rlc3QgdGhhdCBzZXR0
aW5nIHNyYyB0byBhbiBpbnZhbGlkIHVybCB0cmlnZ2VycyBsb2FkKCksIHdoaWNoIHNldHMgbmV0
d29ya1N0YXRlIHRvIE5FVFdPUktfTk9fU09VUkNFLiBTZXR0aW5nIHNyYyB0byBhIHZhbGlkIHVy
bCBzaG91bGQgdGhlbiB0cmlnZ2VyIHRoZSBsb2FkaW5nIGV2ZW50cyBhbmQgZW5kIHVwIHdpdGgg
bmV0d29ya1N0YXRlID49IE5FVFdPUktfTE9BRElORy4KKworCiBFWFBFQ1RFRCAodmlkZW8ubmV0
d29ya1N0YXRlID09ICcwJykgT0sKK1JVTih2aWRlby5zcmMgPSAnYm9ndXMvbW92aWUubXBnJykK
IEVWRU5UKGxvYWRzdGFydCkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzEnKSBP
SwotRVZFTlQobG9hZGVkbWV0YWRhdGEpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09
ICcyJykgT0sKLUVWRU5UKGxvYWRlZGZpcnN0ZnJhbWUpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29y
a1N0YXRlID09ICczJykgT0sKLUVWRU5UKGxvYWQpCiBFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0
YXRlID09ICc0JykgT0sKKworUlVOKHZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JykKK0VW
RU5UKGxvYWRzdGFydCkKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkK
K0VWRU5UKGNhbnBsYXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VYUEVDVEVEICh2aWRlby5u
ZXR3b3JrU3RhdGUgPj0gJzInKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS5odG1sCShyZXZpc2lvbiA0MTY1OCkK
KysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTcgKzEsNDYgQEAKLTx2aWRlbyBjb250cm9scz48L3ZpZGVvPgotPHNj
cmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgZnVuY3Rpb24g
dGVzdE5ldHdvcmtTdGF0ZShleHBlY3RlZCwgZW5kSXQpCi0gICAgewotICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIGV4cGVjdGVkKTsKLSAgICAgICAgaWYgKGVuZEl0
KQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgIH0KKzxodG1sPgorPGJvZHk+CiAKLSAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFkp
OwotICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0IiwgZnVuY3Rpb24gKCkgeyB0ZXN0TmV0d29y
a1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTE9BRElORyk7IH0gKTsKLSAgICB3YWl0Rm9yRXZlbnQo
ImxvYWRlZG1ldGFkYXRhIiwgZnVuY3Rpb24gKCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRp
YUVsZW1lbnQuTE9BREVEX01FVEFEQVRBKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9hZGVk
Zmlyc3RmcmFtZSIsIGZ1bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVt
ZW50LkxPQURFRF9GSVJTVF9GUkFNRSk7IH0gKTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWQiLCBm
dW5jdGlvbiAoKSB7IHRlc3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5MT0FERUQsIHRy
dWUpOyB9ICk7Ci0gICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotPC9zY3JpcHQ+
CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisKKyAgICA8cD5UZXN0IHRoYXQgc2V0dGlu
ZyBzcmMgdG8gYW4gaW52YWxpZCB1cmwgdHJpZ2dlcnMgbG9hZCgpLCB3aGljaCBzZXRzIG5ldHdv
cmtTdGF0ZQorICAgIHRvIE5FVFdPUktfTk9fU09VUkNFLiBTZXR0aW5nIHNyYyB0byBhIHZhbGlk
IHVybCBzaG91bGQgdGhlbiB0cmlnZ2VyIHRoZSBsb2FkaW5nCisgICAgZXZlbnRzIGFuZCBlbmQg
dXAgd2l0aCBuZXR3b3JrU3RhdGUgPj0gTkVUV09SS19MT0FESU5HLgorICAgICA8L3A+CisgICAg
CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBmdW5jdGlvbiB0ZXN0TmV0d29ya1N0YXRlKGV4cGVjdGVkLCBlbmRpdCwgb3ApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwg
ZXhwZWN0ZWQsIG9wKTsKKyAgICAgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgICAgICBl
bmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdhaXRGb3JFdmVudCgibG9h
ZHN0YXJ0Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2Fu
cGxheSIpOworICAgICAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCJwbGF5Iik7CisgICAgICAgIHdh
aXRGb3JFdmVudEFuZEZhaWwoInBsYXlpbmciKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5w
bGF5dGhyb3VnaCIsIGZ1bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVt
ZW50Lk5FVFdPUktfTE9BRElORywgdHJ1ZSwgJz49JyApOyB9ICk7CisgICAgCisgICAgICAgIGZ1
bmN0aW9uIHNvbWVUaW1lTGF0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0TmV0d29y
a1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UgKTsKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgIC8vIG5vdyBzZXQgYSB2YWxpZCB1cmwK
KyAgICAgICAgICAgIHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnIik7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIGZpcnN0IHNldCB0aGUgc3JjIHRvIGEgYm9ndXMg
dXJsLCBpdCBzaG91bGQgYXR0ZW1wdCBhIGxvYWQKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICAgICAgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkp
OworICAgICAgICBydW4oInZpZGVvLnNyYyA9ICdib2d1cy9tb3ZpZS5tcGcnIik7CisgICAgICAg
IHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgNDAwKSAKKyAgICAKKyAgICA8L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFk
eVN0YXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1sb2FkLXJlYWR5U3RhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTMgKzEsOSBAQAogRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzAn
KSBPSwogRVZFTlQobG9hZHN0YXJ0KQotRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzAn
KSBPSwogRVZFTlQobG9hZGVkbWV0YWRhdGEpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9
PSAnMCcpIE9LCi1FVkVOVChsb2FkZWRmaXJzdGZyYW1lKQotRVhQRUNURUQgKHZpZGVvLnJlYWR5
U3RhdGUgPT0gJzEnKSBPSwotRVZFTlQoY2Fuc2hvd2N1cnJlbnRmcmFtZSkKLUVYUEVDVEVEICh2
aWRlby5yZWFkeVN0YXRlID09ICcxJykgT0sKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5w
bGF5KQogRVZFTlQoY2FucGxheXRocm91Z2gpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9
PSAnMycpIE9LCitFWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnNCcpIE9LCiBFTkQgT0Yg
VEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3RhdGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJlYWR5U3RhdGUu
aHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2FkLXJl
YWR5U3RhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMSwyMSBAQAogPHZpZGVvIGNv
bnRyb2xzPjwvdmlkZW8+CiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNj
cmlwdD4KLSAgICBmdW5jdGlvbiB0ZXN0UmVhZHlTdGF0ZShleHBlY3RlZCwgZW5kSXQpCisgICAg
ZnVuY3Rpb24gdGVzdFJlYWR5U3RhdGUoZXhwZWN0ZWQsIGVuZGl0LCBvcCkKICAgICB7Ci0gICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIsIGV4cGVjdGVkKTsKLSAgICAgICAg
aWYgKGVuZEl0KQorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBleHBl
Y3RlZCwgb3ApOworICAgICAgICBpZiAoZW5kaXQpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAg
ICAgfQogCi0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgSFRNTE1lZGlhRWxl
bWVudC5EQVRBX1VOQVZBSUxBQkxFKTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIsIGZ1
bmN0aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1lZGlhRWxlbWVudC5EQVRBX1VOQVZBSUxB
QkxFKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiLCBmdW5jdGlvbiAo
KSB7IHRlc3RSZWFkeVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQuREFUQV9VTkFWQUlMQUJMRSk7IH0g
KTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGZpcnN0ZnJhbWUiLCBmdW5jdGlvbiAoKSB7IHRl
c3RSZWFkeVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQuQ0FOX1NIT1dfQ1VSUkVOVF9GUkFNRSk7IH0g
KTsKLSAgICB3YWl0Rm9yRXZlbnQoImNhbnNob3djdXJyZW50ZnJhbWUiLCBmdW5jdGlvbiAoKSB7
IHRlc3RSZWFkeVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQuQ0FOX1NIT1dfQ1VSUkVOVF9GUkFNRSk7
IH0gKTsKLSAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIiwgZnVuY3Rpb24gKCkgeyB0
ZXN0UmVhZHlTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkNBTl9QTEFZX1RIUk9VR0gsIHRydWUpOyB9
ICk7CisgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgSFRNTE1lZGlhRWxlbWVu
dC5IQVZFX05PVEhJTkcpOworICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2Fp
dEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0
YSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JFdmVudEFuZEZh
aWwoInBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCJwbGF5aW5nIik7CisgICAgd2Fp
dEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIsIGZ1bmN0aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUo
SFRNTE1lZGlhRWxlbWVudC5IQVZFX0VOT1VHSF9EQVRBLCB0cnVlICk7IH0gKTsKKwogICAgIHZp
ZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tbG9vcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tbG9vcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9vcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDEwICsxMywxMiBAQCBFVkVOVChwbGF5KQogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAn
ZmFsc2UnKSBPSwogUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjQp
CiAKK0VWRU5UKHBsYXlpbmcpCiBFWFBFQ1RFRCAodmlkZW8uZW5kZWQgPT0gJ2ZhbHNlJykgT0sK
IEVYUEVDVEVEIChtZWRpYS5jdXJyZW50VGltZSA+ICcwJykgT0sKK0VYUEVDVEVEIChtZWRpYS5j
dXJyZW50VGltZSA8ICc4LjAwJykgT0sKIFJVTih2aWRlby5sb29wID0gZmFsc2UpCi1SVU4odmlk
ZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNCkKK1JVTih2aWRlby5jdXJyZW50
VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC4zKQogCiBFWFBFQ1RFRCAodmlkZW8uZW5kZWQgPT0g
J3RydWUnKSBPSwogRVhQRUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lID09ICdtZWRpYS5kdXJhdGlv
bicpIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb29wLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9vcC5odG1sCShyZXZpc2lvbiA0MTY1OCkK
KysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvb3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1MiArMSw2NCBAQAotPHZpZGVvIGNvbnRyb2xzIGF1dG9wbGF5ID48L3ZpZGVvPgotPHNjcmlw
dCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLSAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLmdldEF0dHJpYnV0ZSgnbG9vcCcpIiwgbnVsbCk7Ci0gICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5sb29wIiwgZmFsc2UpOwotCi0gICAgcnVuKCJ2aWRlby5sb29wID0gdHJ1ZSIpOwot
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubG9vcCIsIHRydWUpOwotICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8uZ2V0QXR0cmlidXRlKCdsb29wJykiLCBudWxsLCAiIT0iKTsKLQotICAgIHJ1bigidmlk
ZW8ucmVtb3ZlQXR0cmlidXRlKCdsb29wJykiKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmxv
b3AiLCBmYWxzZSk7Ci0KLSAgICB2YXIgcmVzcG9uZFRvVGltZVVwZGF0ZSA9IGZhbHNlOwotICAg
IHZhciBmaXJzdFRpbWVDaGVjayA9IHRydWU7Ci0KLSAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIHBs
YXlpbmcsIHNlZWsgdG8gbmVhciB0aGUgZW5kIHNvIHRoZSB0ZXN0IGRvZXNuJ3QgdGFrZSB0b28g
bG9uZwotICAgIHdhaXRGb3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsgCi0gICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwotICAgICAgICBydW4oInZpZGVvLmN1
cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjQiKTsKLSAgICAgICAgCi0gICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7Ci0gICAgICAgIHNldFRpbWVvdXQodGltZUNoZWNrLCA4MDApOwotICAg
IH0gKTsKKzxodG1sPgogCi0gICAgZnVuY3Rpb24gdGltZUNoZWNrKCkgeyAKLSAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5lbmRlZCIsICFmaXJzdFRpbWVDaGVjayk7Ci0gICAgICAgIGlmICgh
Zmlyc3RUaW1lQ2hlY2spCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIGRvbid0IHVzZSAidGVz
dEV4cGVjdGVkKCkiIHNvIHdlIHdvbid0IGxvZyB0aGUgYWN0dWFsIGR1cmF0aW9uIHRvIHRoZQot
ICAgICAgICAgICAgLy8gIHJlc3VsdHMgZmlsZSwgYXMgdGhlIGZsb2F0aW5nIHBvaW50IHJlc3Vs
dCBtYXkgZGlmZmVyIHdpdGggZGlmZmVyZW50IGVuZ2luZXMKLSAgICAgICAgICAgIHJlcG9ydEV4
cGVjdGVkKG1lZGlhLmN1cnJlbnRUaW1lID09IG1lZGlhLmR1cmF0aW9uLCAibWVkaWEuY3VycmVu
dFRpbWUiLCAiPT0iLCAibWVkaWEuZHVyYXRpb24iLCBtZWRpYS5jdXJyZW50VGltZSk7Ci0gICAg
ICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICA8
dmlkZW8gY29udHJvbHMgYXV0b3BsYXkgPjwvdmlkZW8+CiAKLSAgICAgICAgdGVzdEV4cGVjdGVk
KCJtZWRpYS5jdXJyZW50VGltZSIsIDAsICc+Jyk7Ci0gICAgICAgIHJ1bigidmlkZW8ubG9vcCA9
IGZhbHNlIik7Ci0gICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlv
biAtIDAuNCIpOwotICAgICAgICByZXNwb25kVG9UaW1lVXBkYXRlID0gdHJ1ZTsKLSAgICAgICAg
Zmlyc3RUaW1lQ2hlY2sgPSBmYWxzZTsKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgogCisgICAgPHNjcmlwdD4KKyAgICAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5nZXRBdHRyaWJ1dGUoJ2xvb3AnKSIsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmxvb3AiLCBmYWxzZSk7CisgICAgCisgICAgICAgIHJ1bigidmlkZW8ubG9vcCA9IHRydWUi
KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5sb29wIiwgdHJ1ZSk7CisgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmlidXRlKCdsb29wJykiLCBudWxsLCAiIT0iKTsKKyAg
ICAKKyAgICAgICAgcnVuKCJ2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ2xvb3AnKSIpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmxvb3AiLCBmYWxzZSk7CisgICAgCisgICAgICAgIHZhciBy
ZXNwb25kVG9UaW1lVXBkYXRlID0gZmFsc2U7CisgICAgICAgIHZhciBmaXJzdFRpbWVDaGVjayA9
IHRydWU7CisKKyAgICAgICAgd2FpdEZvckV2ZW50KCdwYXVzZScpOworICAgICAgICB3YWl0Rm9y
RXZlbnQoJ3BsYXlpbmcnKTsKKworICAgICAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIHBsYXlpbmcs
IHNlZWsgdG8gbmVhciB0aGUgZW5kIHNvIHRoZSB0ZXN0IGRvZXNuJ3QgdGFrZSB0b28gbG9uZwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXknLCBmdW5jdGlvbiAoKSB7IAorICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7CisgICAgICAgICAgICBydW4oInZp
ZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjQiKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGlt
ZUNoZWNrLCA4MDApOworICAgICAgICB9ICk7CisgICAgCisgICAgICAgIGZ1bmN0aW9uIHRpbWVD
aGVjaygpIHsgCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVuZGVkIiwgIWZpcnN0
VGltZUNoZWNrKTsKKyAgICAgICAgICAgIGlmICghZmlyc3RUaW1lQ2hlY2spCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlICJ0ZXN0RXhwZWN0ZWQoKSIgc28gd2Ug
d29uJ3QgbG9nIHRoZSBhY3R1YWwgZHVyYXRpb24gdG8gdGhlCisgICAgICAgICAgICAgICAgLy8g
IHJlc3VsdHMgZmlsZSwgYXMgdGhlIGZsb2F0aW5nIHBvaW50IHJlc3VsdCBtYXkgZGlmZmVyIHdp
dGggZGlmZmVyZW50IGVuZ2luZXMKKyAgICAgICAgICAgICAgICByZXBvcnRFeHBlY3RlZChtZWRp
YS5jdXJyZW50VGltZSA9PSBtZWRpYS5kdXJhdGlvbiwgIm1lZGlhLmN1cnJlbnRUaW1lIiwgIj09
IiwgIm1lZGlhLmR1cmF0aW9uIiwgbWVkaWEuY3VycmVudFRpbWUpOworICAgICAgICAgICAgICAg
IGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhLmN1cnJlbnRUaW1lIiwgMCwgJz4nKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgibWVkaWEuY3VycmVudFRpbWUiLCAodmlkZW8uZHVy
YXRpb24gLSAwLjQpLnRvRml4ZWQoMiksICc8Jyk7CisgICAgICAgICAgICBydW4oInZpZGVvLmxv
b3AgPSBmYWxzZSIpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9IHZpZGVv
LmR1cmF0aW9uIC0gMC4zIik7CisgICAgICAgICAgICByZXNwb25kVG9UaW1lVXBkYXRlID0gdHJ1
ZTsKKyAgICAgICAgICAgIGZpcnN0VGltZUNoZWNrID0gZmFsc2U7CisgICAgCisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lQ2hlY2ssIDgw
MCk7CisgICAgICAgIH0KKyAgICAKICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAg
c2V0VGltZW91dCh0aW1lQ2hlY2ssIDgwMCk7Ci0gICAgfQorICAgICAgICBydW4oInZpZGVvLmxv
b3AgPSB0cnVlIik7CisgICAgICAgIHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQn
Iik7CisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgPC9zY3JpcHQ+CisKKyAgICA8L2hl
YWQ+CiAKLSAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgIHJ1bigidmlkZW8ubG9vcCA9IHRydWUi
KTsKLSAgICBydW4oInZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JyIpOwotICAgIGNvbnNv
bGVXcml0ZSgiIik7Ci08L3NjcmlwdD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVt
cHR5LWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMiw2ICsyLDEyIEBAIFRlc3QgdGhhdCBwYXVzZSgpIGZyb20gRU1QVFkgbmV0d29yayBz
dGEKIAogRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCiBSVU4odmlkZW8u
cGF1c2UoKSkKK1NDUklQVCBET05FCiBFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChkdXJhdGlvbmNo
YW5nZSkKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNh
bnBsYXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5odG1sCShyZXZpc2lv
biA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50cy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsMTggQEAKIDxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3Qu
bXA0IjsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVs
ZW1lbnQuRU1QVFkpOwotICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnbG9hZHN0YXJ0Jyk7CisgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdP
UktfRU1QVFkpOworCisgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9y
RXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICB3
YWl0Rm9yRXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hh
bmdlIik7CisgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgIHdhaXRGb3JF
dmVudCgibG9hZGVkZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgIHdh
aXRGb3JFdmVudEFuZEVuZCgiY2FucGxheXRocm91Z2giKTsKKwogICAgIHJ1bigidmlkZW8ucGF1
c2UoKSIpOwogICAgIGNvbnNvbGVXcml0ZSgiU0NSSVBUIERPTkUiKTsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1wbGF5LWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAg
KzIsMTQgQEAgVGVzdCB0aGF0IHBsYXkoKSBmcm9tIEVNUFRZIG5ldHdvcmsgc3RhdAogCiBFWFBF
Q1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcwJykgT0sKIFJVTih2aWRlby5wbGF5KCkpCi1F
VkVOVChsb2Fkc3RhcnQpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKIFND
UklQVCBET05FCi1FVkVOVChwbGF5KQorRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQoZHVyYXRpb25j
aGFuZ2UpCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChj
YW5wbGF5KQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFVkVOVChwbGF5aW5nKQogRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LWVtcHR5LWV2ZW50cy5odG1sCShyZXZpc2lvbiA0
MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTkgKzEsMjkgQEAKLTx2aWRlbyBjb250cm9scz48L3ZpZGVv
PgotPHA+VGVzdCB0aGF0IHBsYXkoKSBmcm9tIEVNUFRZIG5ldHdvcmsgc3RhdGUgdHJpZ2dlcnMg
bG9hZCgpIGFuZCBhc3luYyBwbGF5IGV2ZW50LjwvcD4KLTxzY3JpcHQgc3JjPXZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0
IjsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1l
bnQuRU1QVFkpOworPGh0bWw+Cis8Ym9keT4KIAotICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0YXJ0
JywgZnVuY3Rpb24gKCkgeyAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0
cnVlKTsKLSAgICB9ICk7CisgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPHA+VGVz
dCB0aGF0IHBsYXkoKSBmcm9tIEVNUFRZIG5ldHdvcmsgc3RhdGUgdHJpZ2dlcnMgbG9hZCgpIGFu
ZCBhc3luYyBwbGF5IGV2ZW50LjwvcD4KKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29y
a1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAKKyAgICAgICAg
d2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hh
bmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgICAgICB3YWl0Rm9y
RXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlvbmNoYW5n
ZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgICAgIHdh
aXRGb3JFdmVudCgibG9hZGVkZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXki
KTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgICAgICB3YWl0
Rm9yRXZlbnQoInBsYXkiKTsKKyAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywg
ZnVuY3Rpb24gKCkgeyB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsgZW5kVGVz
dCgpOyB9ICk7CisgICAgCisgICAgICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsK
KyAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCJTQ1JJ
UFQgRE9ORSIpOworICAgIDwvc2NyaXB0PgogCi0gICAgd2FpdEZvckV2ZW50KCdwbGF5JywgZnVu
Y3Rpb24gKCkgeyAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7
Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9ICk7Ci0KLSAgICBydW4oInZpZGVvLnBsYXkoKSIp
OwotICAgIGNvbnNvbGVXcml0ZSgiU0NSSVBUIERPTkUiKTsKLTwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1ldmVudHMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXkt
cGF1c2UtZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOSArNCw4IEBAIFJVTih2aWRlby5wbGF5KCkpCiBSVU4odmlkZW8ucGF1c2UoKSkK
IFNDUklQVCBET05FCiBFVkVOVChwbGF5KQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1
ZScpIE9LCitFVkVOVCh3YWl0aW5nKQogRVZFTlQodGltZXVwZGF0ZSkKLUVYUEVDVEVEICh2aWRl
by5wYXVzZWQgPT0gJ3RydWUnKSBPSwogRVZFTlQocGF1c2UpCiBFWFBFQ1RFRCAodmlkZW8ucGF1
c2VkID09ICd0cnVlJykgT0sKIEVORCBPRiBURVNUCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1wbGF5LXBhdXNlLWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1ldmVudHMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNCwxMSArNCwyMiBAQAogPHNjcmlwdD4KICAgICB2aWRlby5zcmMgPSAiY29udGVudC90
ZXN0Lm1wNCI7CiAKLSAgICB3YWl0Rm9yRXZlbnQoJ3BsYXknLCBmdW5jdGlvbiAoKSB7IHRlc3RF
eHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7fSApOwotICAgIHdhaXRGb3JFdmVudCgndGlt
ZXVwZGF0ZScsIGZ1bmN0aW9uICgpIHsgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVl
KTt9ICk7CisgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQo
InJhdGVjaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICB3YWl0Rm9y
RXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9uY2hhbmdlIik7
CisgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgi
bG9hZGVkZGF0YSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JF
dmVudCgiY2FucGxheXRocm91Z2giKTsKKyAgICB3YWl0Rm9yRXZlbnQoInBsYXkiKTsKKyAgICB3
YWl0Rm9yRXZlbnQoInRpbWV1cGRhdGUiKTsKICAgICB3YWl0Rm9yRXZlbnQoJ3BhdXNlJywgZnVu
Y3Rpb24gKCkgeyB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpOyBlbmRUZXN0KCk7
IH0gKTsKIAorCiAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKICAgICBydW4oInZpZGVvLnBhdXNl
KCkiKTsKKyAgICAKICAgICBjb25zb2xlV3JpdGUoIlNDUklQVCBET05FIik7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9uLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNl
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsMTAgQEAKLVZpZGVvIGhhcyBubyBzcmMuIFRlc3QgdGhhdCBwbGF5KCkg
YW5kIHBhdXNlKCkgcmV0aHJvdyB0aGUgZXhjZXB0aW9uIGZyb20gbG9hZCgpLiBUZXN0IHRoYXQg
dGhlIHBsYXkgYW5kIHBhdXNlIGV2ZW50cyBhcmUgbm90IGRpc3BhdGNoZWQuCitWaWRlbyBoYXMg
bm8gc3JjLiBUZXN0IHRoYXQgdGhlIHBsYXlpbmcgZXZlbnQgaXMgbm90IGRpc3BhdGNoZWQuCiAK
LVRFU1QodmlkZW8ucGxheSgpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
KSBPSwotVEVTVCh2aWRlby5wYXVzZSgpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RB
VEVfRVJSKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKK1JVTih2aWRlby5wYXVzZSgpKQorRVZFTlQo
d2FpdGluZykKK0VWRU5UKHRpbWV1cGRhdGUpCitFVkVOVChwYXVzZSkKK0VYUEVDVEVEICh2aWRl
by5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lv
biA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMjYgQEAKKwogPHZpZGVvIGNvbnRyb2xz
PjwvdmlkZW8+Ci08cD5WaWRlbyBoYXMgbm8gc3JjLiBUZXN0IHRoYXQgcGxheSgpIGFuZCBwYXVz
ZSgpIHJldGhyb3cgdGhlIGV4Y2VwdGlvbiBmcm9tIGxvYWQoKS4gVGVzdCB0aGF0IHRoZSBwbGF5
IGFuZCBwYXVzZSBldmVudHMgYXJlIG5vdCBkaXNwYXRjaGVkLjwvcD4KKworPHA+VmlkZW8gaGFz
IG5vIHNyYy4gVGVzdCB0aGF0IHRoZSBwbGF5aW5nIGV2ZW50IGlzIG5vdCBkaXNwYXRjaGVkLjwv
cD4KKwogPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+Ci13YWl0
Rm9yRXZlbnRBbmRGYWlsKCdwbGF5Jyk7Ci13YWl0Rm9yRXZlbnRBbmRGYWlsKCdwYXVzZScpOwot
dGVzdEV4Y2VwdGlvbigidmlkZW8ucGxheSgpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRF
X0VSUiIpOwotdGVzdEV4Y2VwdGlvbigidmlkZW8ucGF1c2UoKSIsICJET01FeGNlcHRpb24uSU5W
QUxJRF9TVEFURV9FUlIiKTsKLWVuZFRlc3RMYXRlcigpOworICAgIHdhaXRGb3JFdmVudEFuZEZh
aWwoJ3BsYXlpbmcnKTsKKworICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2Fp
dEZvckV2ZW50KCJ0aW1ldXBkYXRlIik7CisgICAgd2FpdEZvckV2ZW50KCJwYXVzZSIpOworICAg
IHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworCisgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKKyAg
ICBydW4oInZpZGVvLnBhdXNlKCkiKTsKKworICAgIGZ1bmN0aW9uIHNvbWVUaW1lTGF0ZXIoKQor
ICAgIHsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVk
aWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICB9CisgICAgCisgICAgc2V0VGltZW91dChzb21lVGlt
ZUxhdGVyLCA0MDApIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
ZWVrLW5vLXNyYy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXNlZWstbm8tc3JjLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1Rlc3QgdGhhdCBzZWVr
aW5nIHZpZGVvIHdpdGggbm8gJ3NyYycgYXR0cmlidXRlIHRocm93cyBhbiBJTlZBTElEX1NUQVRF
X0VSUiBleGNlcHRpb24uCisKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzAnKSBP
SworRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzAnKSBPSworVEVTVCh2aWRlby5jdXJy
ZW50VGltZSA9IDEuMSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUikgT0sK
K0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstbm8tc3Jj
LWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNl
ZWstbm8tc3JjLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKKzxodG1sPgorPGJvZHk+CisKKyAgICA8dmlkZW8gbG9vcCBjb250cm9scz48L3Zp
ZGVvPgorICAgIAorICAgIDxwPlRlc3QgdGhhdCBzZWVraW5nIHZpZGVvIHdpdGggbm8gJ3NyYycg
YXR0cmlidXRlIHRocm93cyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24uPC9wPgorCisg
ICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQu
TkVUV09SS19FTVBUWSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIs
IEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9OT1RISU5HKTsKKyAgICAgICAgdGVzdEV4Y2VwdGlvbigi
dmlkZW8uY3VycmVudFRpbWUgPSAxLjEiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
Iik7CisgICAgICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgMjAwKSAKKyAgICA8L3NjcmlwdD4KKyAg
ICAKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWst
cGFzdC1lbmQtcGxheWluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wbGF5aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmct
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICsxLDE1IEBACiBUZXN0IHRoYXQg
c2Vla2luZyB2aWRlbyB3aXRoICdsb29wJyBwYXN0IGl0J3MgZW5kIHJld2luZHMgdG8gdGhlIGJl
Z2lubmluZyBhbmQgY29udGludWVzIHBsYXliYWNrLgogCiBSVU4odmlkZW8uc3JjID0gJ2NvbnRl
bnQvdGVzdC5tcDQnKQotUlVOKHZpZGVvLnBsYXkoKSkKIAogRVZFTlQobG9hZCkKK0VYUEVDVEVE
ICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKIEVYUEVDVEVE
ICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKIAogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9
PSAnZmFsc2UnKSBPSwogRVhQRUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lID4gJzAnKSBPSworUlVO
KHZpZGVvLmN1cnJlbnRUaW1lID0gNTAwKQogCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdm
YWxzZScpIE9LCiBFWFBFQ1RFRCAobWVkaWEuY3VycmVudFRpbWUgPiAnMCcpIE9LCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmcuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmcuaHRt
bAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3Qt
ZW5kLXBsYXlpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDggQEAKIDxzY3JpcHQ+
CiAKICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IAorICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpOworICAgICAgICBydW4oInZpZGVvLnBsYXko
KSIpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKICAgICAg
ICAgc2V0VGltZW91dCh0aW1lQ2hlY2sxLCAyMDApOwogICAgIH0pOwpAQCAtMTQsNyArMTYsNyBA
QAogICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LnBhdXNlZCIsIGZhbHNlKTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5jdXJyZW50VGlt
ZSIsIDAsICc+Jyk7Ci0gICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gNTAwOworICAgICAgICBy
dW4oInZpZGVvLmN1cnJlbnRUaW1lID0gNTAwIik7CiAgICAgICAgIHNldFRpbWVvdXQodGltZUNo
ZWNrMiwgMjAwKTsKICAgICB9CiAKQEAgLTI4LDYgKzMwLDUgQEAKICAgICB9CiAKICAgICBydW4o
InZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JyIpOwotICAgIHJ1bigidmlkZW8ucGxheSgp
Iik7CiAgICAgY29uc29sZVdyaXRlKCIiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc2Vla2luZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tc2Vla2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vla2luZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzEsMzEgQEAKLVRlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVl
IGluIHRpbWV1cGRhdGUgZXZlbnQgYWZ0ZXIgc2VlayBhbmQgZ29lcyBiYWNrIHRvIGZhbHNlIHdo
ZW4gc2Vla2luZyBjb21wbGV0ZXMKK1Rlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVl
IGltbWVkaWF0ZWx5IGFmdGVyIGEgc2VlaywgZ29lcyBiYWNrIHRvIGZhbHNlIHdoZW4gc2Vla2lu
ZyBjb21wbGV0ZXMsIGFuZCB0aGF0IGEgJ3NlZWtlZCcgZXZlbnQgaXMgZmlyZWQgZm9yIGVhY2gg
c2VlawogCiBFVkVOVChsb2FkKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorCitFVkVO
VChzZWVrZWQpCisKK0VYUEVDVEVEIChzZWVrZWRDb3VudCA9PSAnMScpIE9LCiBFWFBFQ1RFRCAo
dmlkZW8uc2Vla2luZyA9PSAnZmFsc2UnKSBPSwotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMikK
LUVWRU5UKHRpbWV1cGRhdGUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzAuNScp
IE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxKQorRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcg
PT0gJ3RydWUnKSBPSworCitFVkVOVChzZWVrZWQpCisKK0VYUEVDVEVEIChzZWVrZWRDb3VudCA9
PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uc2Vla2luZyA9PSAnZmFsc2UnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9
IDEuNSkKIEVYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICd0cnVlJykgT0sKLUVYUEVDVEVEICh2
aWRlby5jdXJyZW50VGltZSA9PSAnMicpIE9LCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQg
KHNlZWtlZENvdW50ID09ICczJykgT0sKIEVYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICdmYWxz
ZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzEuNScpIE9LCitSVU4odmlk
ZW8uY3VycmVudFRpbWUgPSAyKQorRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0gJ3RydWUnKSBP
SworCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5n
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vla2luZy5odG1s
CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWtpbmcuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMSw1MSBAQAogPHZpZGVvIGNvbnRyb2xzPjwvdmlk
ZW8+Ci08cD5UZXN0IHRoYXQgc2Vla2luZyBhdHRyaWJ1dGUgaXMgdHJ1ZSBpbiB0aW1ldXBkYXRl
IGV2ZW50IGFmdGVyIHNlZWsgYW5kIGdvZXMgYmFjayB0byBmYWxzZSB3aGVuIHNlZWtpbmcgY29t
cGxldGVzIDwvcD4KKzxwPlRlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVlIGltbWVk
aWF0ZWx5IGFmdGVyIGEgc2VlaywKKyBnb2VzIGJhY2sgdG8gZmFsc2Ugd2hlbiBzZWVraW5nIGNv
bXBsZXRlcywgYW5kIHRoYXQgYSAnc2Vla2VkJyBldmVudAorIGlzIGZpcmVkIGZvciBlYWNoIHNl
ZWsKKyA8L3A+CiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4K
LXdhaXRGb3JFdmVudCgnbG9hZCcsCi0gICAgZnVuY3Rpb24gKCkgCisKKyAgICB2YXIgc2Vla2Vk
Q291bnQgPSAwOworICAgIHZhciBjb3VudGVyOworCisgICAgZnVuY3Rpb24gc2Vla2VkKCkKKyAg
ICB7IAorICAgICAgICArK3NlZWtlZENvdW50OyAKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzb21lVGltZUxhdGVyKCkKICAgICB7CisgICAgICAgIHRl
c3RFeHBlY3RlZCgic2Vla2VkQ291bnQiLCBjb3VudGVyKTsKICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5zZWVraW5nIiwgZmFsc2UpOwotICAgICAgICB3YWl0Rm9yRXZlbnQoJ3RpbWV1cGRh
dGUnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnNlZWtp
bmciLCB0cnVlKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUi
LCAyKTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uc2Vla2luZyIsIGZhbHNlKTsKLSAgICAgICAgICAgICAg
ICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9LCAyMDApOwotICAgICAgICB9KTsKLSAgICAgICAg
cnVuKCJ2aWRlby5jdXJyZW50VGltZSA9IDIiKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5jdXJyZW50VGltZSIsIGNvdW50ZXIgKiAwLjUpOworICAgICAgICBydW4oInZpZGVvLmN1cnJl
bnRUaW1lID0gIiArIChjb3VudGVyICsgMSkgKiAwLjUpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLnNlZWtpbmciLCB0cnVlKTsKKworICAgICAgICBpZiAoY291bnRlciA9PSAzKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgZW5kVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgKytjb3VudGVyOworICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICB9CisKKyAgICBmdW5jdGlvbiBsb2FkZWQoKSAKKyAgICB7CisgICAgICAg
IHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAwLjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7Cisg
ICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgMjAwKSAKKyAgICAgICAgc2V0VGltZW91
dChzb21lVGltZUxhdGVyLCA0MDApIAorICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0ZXIs
IDYwMCkgCisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgfQotKTsKLXZpZGVvLnNyYyA9
ICJjb250ZW50L3Rlc3QubXA0IjsKKyAgICAKKyAgICB3YWl0Rm9yRXZlbnQoJ3dhaXRpbmcnICk7
CisgICAgd2FpdEZvckV2ZW50KCdzZWVrZWQnLCBzZWVrZWQgKTsKKyAgICB3YWl0Rm9yRXZlbnQo
J2xvYWQnLCBsb2FkZWQpOworCisgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNl
LWFkZC1zcmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tc291cmNlLWFkZC1zcmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE1IEBACitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChsb2Fkc3RhcnQpCisKK0VYUEVDVEVEIChy
ZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9LCitS
VU4odmlkZW8uc3JjID0gJ2NvbnRlbnQvc2lsZW5jZS5tcGcnKQorCitFVkVOVChkdXJhdGlvbmNo
YW5nZSkKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNh
bnBsYXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZp
ZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKK0VORCBPRiBURVNUCitU
ZXN0IHRoYXQgYWRkaW5nIGEgJ3NyYycgYXR0cmlidXRlIGRvZXMgbm90aGluZyB3aGVuIGEgPHNv
dXJjZT4gZWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIGNob3NlbgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc291cmNlLWFkZC1zcmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWFkZC1zcmMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MyBAQAorPGh0bWw+Cis8Ym9keT4KKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgorCisgICAgPHZpZGVvIGNvbnRyb2xzPgorICAgICAgICA8c291cmNlIHNyYz1j
b250ZW50L3Rlc3QubXA0IHR5cGU9InZpZGVvL21wZWc7IGNvZGVjcz0mcXVvdDthdmMxLjRENDAw
QyZxdW90OyI+CisgICAgPC92aWRlbz4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGZpbmRNZWRp
YUVsZW1lbnQoKTsKKworICAgICAgICB2YXIgY291bnRlciA9IDA7CisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrTG9hZCgpIAorICAgICAgICB7IAorICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYyki
LCAiY29udGVudC90ZXN0Lm1wNCIpOworICAgICAgICAgICAgaWYgKCsrY291bnRlciA9PSAyKQor
ICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uc3JjID0g
J2NvbnRlbnQvc2lsZW5jZS5tcGcnIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTG9h
ZCwgMjAwKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH07CisKKyAg
ICAgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJy
YXRlY2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgICAgICB3
YWl0Rm9yRXZlbnQoInJhdGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlv
bmNoYW5nZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAg
ICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNh
bnBsYXkiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgICAg
ICB3YWl0Rm9yRXZlbnQoInBsYXkiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQn
LCBjaGVja0xvYWQpOworCisgICAgPC9zY3JpcHQ+CisKKzxwPlRlc3QgdGhhdCBhZGRpbmcgYSAn
c3JjJyBhdHRyaWJ1dGUgZG9lcyBub3RoaW5nIHdoZW4gYSAmbHQ7c291cmNlJmd0OyBlbGVtZW50
IGhhcyBhbHJlYWR5IAorYmVlbiBjaG9zZW4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMjAgQEAKLVRlc3QgdGhhdCBj
aGFuZ2luZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgd2hlbiBuZXR3b3JrIHN0YXRlIGlz
IGVtcHR5LgotVGVzdCB0aGF0IGl0IGRvZXMgbm90IHRyaWdnZXIgbG9hZCB3aGVuIG5ldHdvcmsg
c3RhdGUgaXMgbm9uLWVtcHR5LgotRVZFTlQoZW1wdGllZCkKLUVYUEVDVEVEICh2aWRlby5uZXR3
b3JrU3RhdGUgPT0gJzAnKSBPSwotRVZFTlQobG9hZHN0YXJ0KQorMS4gVGVzdCB0aGF0IGFuIGlu
dmFsaWQgc3JjIGF0dHJpYnV0ZSBmaXJlcyBhbiBlcnJvciB3aGVuIHRoZSBmaWxlIGZhaWxzIHRv
IGxvYWQuCisyLiBUZXN0IHRoYXQgY2hhbmdpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2Fk
IGFmdGVyIGEgbG9hZCBmYWlscy4KKzMuIFRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgZG9lcyBub3Qg
dHJpZ2dlciBsb2FkIG9uY2UgYSBmaWxlIGlzIGxvYWRlZC4KKworCitFVkVOVChlcnJvcikKK0VY
UEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnYm9ndXMnKSBPSworRVhQ
RUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uZXJy
b3IuY29kZSA9PSAnNCcpIE9LCisKK1JVTih2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250
ZW50L3Rlc3QubXA0JykpCisKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQogRVhQRUNURUQgKHJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKLUVWRU5U
KGxvYWQpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlICE9ICcwJykgT0sKK0VYUEVDVEVE
IChpc05hTih2aWRlby5kdXJhdGlvbikgPT0gJ2ZhbHNlJykgT0sKKworUlVOKHZpZGVvLnNldEF0
dHJpYnV0ZSgnc3JjJywgJ2NvbnRlbnQvc2lsZW5jZS5tcGcnKSkKKwogRU5EIE9GIFRFU1QKIApJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbAkocmV2aXNpb24gNDE2
NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjUgKzEsNDAgQEAKLTx2aWRlbyBzcmM9Ym9ndXMgY29udHJvbHM+PC92aWRl
bz4KLTxkaXY+Ci1UZXN0IHRoYXQgY2hhbmdpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2Fk
IHdoZW4gbmV0d29yayBzdGF0ZSBpcyBlbXB0eS48YnI+Ci1UZXN0IHRoYXQgaXQgZG9lcyBub3Qg
dHJpZ2dlciBsb2FkIHdoZW4gbmV0d29yayBzdGF0ZSBpcyBub24tZW1wdHkuCi08L2Rpdj4KLTxz
Y3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIHdhaXRGb3JF
dmVudCgnZW1wdGllZCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZKTsKLSAgICAgICAgdmlkZW8u
c2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVudC90ZXN0Lm1wNCcpCi0gICAgICAgIHdhaXRGb3JF
dmVudCgibG9hZHN0YXJ0IiwgZnVuY3Rpb24gKCkgeyB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJM
KHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsgfSk7Cis8aHRtbD4KKzxi
b2R5PgorICAgIAorICAgIDx2aWRlbyBzcmM9Ym9ndXMgY29udHJvbHM+PC92aWRlbz4KIAotICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFksICIh
PSIpOwotICAgICAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVudC90ZXN0
LndhdicpOworICAgIDxwPgorICAgIDEuIFRlc3QgdGhhdCBhbiBpbnZhbGlkIHNyYyBhdHRyaWJ1
dGUgZmlyZXMgYW4gZXJyb3Igd2hlbiB0aGUgZmlsZSBmYWlscyB0byBsb2FkLjxicj4KKyAgICAy
LiBUZXN0IHRoYXQgY2hhbmdpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIGFmdGVyIGEg
bG9hZCBmYWlscy48YnI+CisgICAgMy4gVGVzdCB0aGF0IGNoYW5naW5nIHNyYyBkb2VzIG5vdCB0
cmlnZ2VyIGxvYWQgb25jZSBhIGZpbGUgaXMgbG9hZGVkLgorICAgIDwvcAorICAgIDxzY3JpcHQg
c3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAKKyAgICAgICAg
ZnVuY3Rpb24gZXJyb3JFdmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiYm9ndXMiKTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRX
T1JLX05PX1NPVVJDRSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNv
ZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCk7CisgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5zZXRBdHRyaWJ1dGUoJ3Ny
YycsICdjb250ZW50L3Rlc3QubXA0JykiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7
CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkbWV0YWRhdGEoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJl
bnRTcmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
aXNOYU4odmlkZW8uZHVyYXRpb24pIiwgZmFsc2UpOworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVu
dC9zaWxlbmNlLm1wZycpIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDUwMCkg
OworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAgIAorICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRh
JywgbG9hZGVkbWV0YWRhdGEpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJywgZXJyb3JF
dmVudCk7CisgICAgPC9zY3JpcHQ+CiAKLSAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0
YXJ0JywgZnVuY3Rpb24gKCkgeyAKLSAgICAgICAgICAgICAgICBsb2dSZXN1bHQoIkxPQURTVEFS
VCBmaXJlZCIpOwotICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0gKTsK
LQotICAgICAgICAgICAgc2V0VGltZW91dChlbmRUZXN0LCA1MDApOwotICAgICAgICB9KTsKLSAg
ICB9KTsKLTwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3Zl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorCitFVkVOVChsb2Fk
c3RhcnQpCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2JvZ3Vz
Lm1vdicpIE9LCisKK0VWRU5UKGVycm9yKQorRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0g
JzQnKSBPSworUlVOKHZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnc3JjJykpCisKK0VWRU5UKGxvYWRz
dGFydCkKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVu
dC90ZXN0Lm1wNCcpIE9LCisKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVhQRUNURUQgKHJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKK0VYUEVD
VEVEIChpc05hTih2aWRlby5kdXJhdGlvbikgPT0gJ2ZhbHNlJykgT0sKKworRU5EIE9GIFRFU1QK
K1Rlc3QgdGhhdCByZW1vdmluZyBpbnZhbGlkICdzcmMnIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2Fk
IG9mIDxzb3VyY2U+IGVsZW1lbnRzCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMt
aW52YWxpZC1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1zcmMtaW52YWxpZC1yZW1vdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUwIEBACis8aHRtbD4KKzxib2R5PgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9z
Y3JpcHQ+CisKKyAgICA8dmlkZW8gc3JjPWJvZ3VzLm1vdiBjb250cm9scz4KKyAgICAgICAgPHNv
dXJjZSBzcmM9Y29udGVudC90ZXN0Lm1wND4KKyAgICA8L3ZpZGVvPgorCisgICAgPHA+VGVzdCB0
aGF0IHJlbW92aW5nIGludmFsaWQgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgb2YgJmx0
O3NvdXJjZSZndDsgZWxlbWVudHM8L3A+CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2aWRlbyA9
IG1lZGlhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisKKyAg
ICAgICAgdmFyIGxvYWRDb3VudCA9IDA7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBsb2Fk
U3RhcnQoKQorICAgICAgICB7CisgICAgICAgICAgICArK2xvYWRDb3VudDsKKyAgICAgICAgICAg
IGlmIChsb2FkQ291bnQgPT0gMSkKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImJvZ3VzLm1vdiIpOworICAgICAgICAgICAgZWxz
ZSBpZiAobG9hZENvdW50ID09IDIpCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxh
dGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJjb250ZW50L3Rlc3QubXA0Iik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmFpbFRlc3QoIidsb2FkQ291bnQnIGZpcmVkICIg
KyBsb2FkQ291bnQgKyAidGltZXMiICk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkbWV0YWRhdGEoKQorICAgICAgICB7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMp
IiwgImNvbnRlbnQvdGVzdC5tcDQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiaXNOYU4o
dmlkZW8uZHVyYXRpb24pIiwgZmFsc2UpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVycm9yRXZlbnQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1F
RElBX0VSUl9OT05FX1NVUFBPUlRFRCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsgZW5kVGVzdCgpOyB9ICwgNTAwKSA7CisgICAgICAgICAgICBydW4oInZpZGVvLnJlbW92
ZUF0dHJpYnV0ZSgnc3JjJykiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgIH0KKworICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB3YWl0Rm9yRXZlbnQo
J2xvYWRlZG1ldGFkYXRhJywgbG9hZGVkbWV0YWRhdGEpOworICAgICAgICB3YWl0Rm9yRXZlbnQo
J2xvYWRzdGFydCcsIGxvYWRTdGFydCApOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJywg
ZXJyb3JFdmVudCk7CisgICAgPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNv
dXJjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorRVZFTlQobG9h
ZHN0YXJ0KQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250
ZW50L2JvZ3VzLm1wZWcnKSBPSworCitFVkVOVChlcnJvcikKK0VYUEVDVEVEIChyZWxhdGl2ZVVS
TCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVudC9ib2d1cy5tcGVnJykgT0sKK0VYUEVDVEVE
IChtZWRpYS5lcnJvci5jb2RlID09ICc0JykgT0sKKworRU5EIE9GIFRFU1QKK1Rlc3QgdGhhdCBh
IDxzb3VyY2U+IGVsZW1lbnQgaXMgbm90IHVzZWQgd2hlbiBhIGJvZ3VzICdzcmMnIGF0dHJpYnV0
ZSBpcyBwcmVzZW50CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1zb3Vy
Y2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1z
b3VyY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1w
bHVzLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKzxi
b2R5PgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKyAgICA8dmlk
ZW8gc3JjPWNvbnRlbnQvYm9ndXMubXBlZyBjb250cm9scz4KKyAgICAgICAgPHNvdXJjZSBzcmM9
Y29udGVudC90ZXN0Lm1wND4KKyAgICA8L3ZpZGVvPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWRlZG1ldGFkYXRhJywgZnVuY3Rpb24oKSB7IAorICAgICAgICAgICAgZmFpbFRlc3QoIidsb2Fk
ZWRtZXRhZGF0YScgZXZlbnQgZmlyZWQiICk7CisgICAgICAgIH0pOworCisgICAgICAgIHdhaXRG
b3JFdmVudCgnbG9hZHN0YXJ0JywgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC9ib2d1cy5tcGVn
Iik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9ICk7CisKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCdlcnJvcicsIGZ1bmN0aW9uICgpIHsgCisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvYm9ndXMu
bXBlZyIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5lcnJvci5jb2RlIiwgTWVk
aWFFcnJvci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworICAgICAgICAgICAgc2V0VGltZW91
dChlbmRUZXN0LCAyMDApIDsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
IH0pOworCisgICAgPC9zY3JpcHQ+CisKKzxwPlRlc3QgdGhhdCBhICZsdDtzb3VyY2UmZ3Q7IGVs
ZW1lbnQgaXMgbm90IHVzZWQgd2hlbiBhIGJvZ3VzICdzcmMnIGF0dHJpYnV0ZSBpcyBwcmVzZW50
Cis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNyYy1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXNyYy1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsMTIgQEAKLVRlc3QgdGhhdCByZW1vdmluZyBzcmMgYXR0cmlidXRlIHRyaWdn
ZXJzIGxvYWQKLUVWRU5UKGVtcHRpZWQpCi1FVkVOVChsb2Fkc3RhcnQpCi1FWFBFQ1RFRCAocmVs
YXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSwotRU5E
IE9GIFRFU1QKIAorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwo
dmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvc2lsZW5jZS5tcGcnKSBPSworRVhQRUNURUQg
KGlzTmFOKHZpZGVvLmR1cmF0aW9uKSA9PSAnZmFsc2UnKSBPSworCitSVU4odmlkZW8ucmVtb3Zl
QXR0cmlidXRlKCdzcmMnKSkKKworRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRT
cmMpID09ICdjb250ZW50L3NpbGVuY2UubXBnJykgT0sKK0VYUEVDVEVEIChpc05hTih2aWRlby5k
dXJhdGlvbikgPT0gJ2ZhbHNlJykgT0sKKworRU5EIE9GIFRFU1QKK1Rlc3QgdGhhdCByZW1vdmlu
ZyB2YWxpZCAnc3JjJyBhdHRyaWJ1dGUgRE9FUyBOT1QgdHJpZ2dlciBsb2FkIG9mIDxzb3VyY2U+
IGVsZW1lbnRzCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcmVtb3ZlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS5odG1sCShy
ZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMSw1MiBAQAorPGh0bWw+CiA8Ym9keT4KLTxkaXY+
Ci1UZXN0IHRoYXQgcmVtb3Zpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkCi08L2Rpdj4K
LTxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci08dmlkZW8gc3JjPWJvZ3VzIGNv
bnRyb2xzPgotICAgIDxzb3VyY2Ugc3JjPWNvbnRlbnQvdGVzdC5tcDQ+PC9zb3VyY2U+Ci08L3Zp
ZGVvPgotPHNjcmlwdD4KLSAgICB2aWRlbyA9IG1lZGlhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3ZpZGVvJylbMF07Ci0gICAgd2FpdEZvckV2ZW50KCdlbXB0aWVkJywgZnVuY3Rp
b24gKCkgewotICAgICAgICB2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpCisgICAgPHNjcmlw
dCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIAotICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xv
YWRzdGFydCcsIGZ1bmN0aW9uICgpIHsgCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsKKyAgICA8dmlk
ZW8gc3JjPWNvbnRlbnQvc2lsZW5jZS5tcGcgY29udHJvbHM+CisgICAgICAgIDxzb3VyY2Ugc3Jj
PWNvbnRlbnQvdGVzdC5tcDQ+CisgICAgPC92aWRlbz4KKworICAgIDxwPlRlc3QgdGhhdCByZW1v
dmluZyB2YWxpZCAnc3JjJyBhdHRyaWJ1dGUgRE9FUyBOT1QgdHJpZ2dlciBsb2FkIG9mICZsdDtz
b3VyY2UmZ3Q7IGVsZW1lbnRzPC9wPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworCisgICAgICAgIHZhciBsb2FkQ291bnQgPSAwOworICAgICAgICAKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdFNyYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC9zaWxlbmNlLm1wZyIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJpc05hTih2aWRlby5kdXJhdGlvbikiLCBmYWxz
ZSk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9hZGVkbWV0YWRhdGEoKQorICAgICAgICB7CisgICAgICAgICAgICArK2xvYWRD
b3VudDsKKyAgICAgICAgICAgIGlmIChsb2FkQ291bnQgPT0gMSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0U3JjKCk7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5yZW1v
dmVBdHRyaWJ1dGUoJ3NyYycpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8c3BhbiBzdHlsZT0n
Y29sb3I6cmVkJz5GQUlMPC9zcGFuPiA6ICdsb2FkQ291bnQnIGZpcmVkICIgKyBsb2FkQ291bnQg
KyAidGltZXMiICk7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgZnVuY3Rpb24gc29tZVRpbWVMYXRlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RT
cmMoKTsKICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfSApOwotICAgIH0pOwotPC9z
Y3JpcHQ+CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRhZGF0
YScsIGxvYWRlZG1ldGFkYXRhKTsKKyAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCA0
MDApIDsKKyAgICA8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby10ZXN0LmpzCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAtNiwxMSAr
NywxNiBAQCB2YXIgdmlkZW87CiB2YXIgbWVkaWE7CiB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlKTsK
LXRyeSB7Ci0gICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8n
KVswXTsKLSAgICBpZiAodmlkZW8pCi0gICAgICAgIG1lZGlhID0gdmlkZW87Ci19IGNhdGNoIChl
eCkgeyB9CitmaW5kTWVkaWFFbGVtZW50KCk7CisKK2Z1bmN0aW9uIGZpbmRNZWRpYUVsZW1lbnQo
KQoreworICAgIHRyeSB7CisgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3ZpZGVvJylbMF07CisgICAgICAgIGlmICh2aWRlbykKKyAgICAgICAgICAgIG1lZGlh
ID0gdmlkZW87CisgICAgfSBjYXRjaCAoZXgpIHsgfQorfQogCiBmdW5jdGlvbiBoYW5nZWQoKQog
ewpAQCAtNDcsOSArNTMsMTEgQEAgZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5n
LCBleAogICAgIHZhciBzdWNjZXNzID0gZmFsc2U7CiAgICAgc3dpdGNoIChjb21wYXJpc29uKQog
ICAgIHsKLSAgICAgICAgY2FzZSAnPCc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7
IGJyZWFrOwotICAgICAgICBjYXNlICc+JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3Rl
ZDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJyE9Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVj
dGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPCc6ICAgc3VjY2VzcyA9IG9ic2VydmVkIDwgIGV4
cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPD0g
ZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+JzogICBzdWNjZXNzID0gb2JzZXJ2ZWQg
PiAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+PSc6IHN1Y2Nlc3MgPSBvYnNlcnZl
ZCA+PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyE9JzogIHN1Y2Nlc3MgPSBvYnNl
cnZlZCAhPSBleHBlY3RlZDsgYnJlYWs7CiAgICAgICAgIGNhc2UgJz09Jzogc3VjY2VzcyA9IG9i
c2VydmVkID09IGV4cGVjdGVkOyBicmVhazsKICAgICB9CiAgICAgCkBAIC05Myw3ICsxMDEsNyBA
QCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jLCBlCiAgICAgICAgICAgICBl
bmRUZXN0KCk7ICAgIAogICAgIH0KIAotICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lLCBfZXZlbnRDYWxsYmFjayk7ICAgIAorICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCBfZXZlbnRDYWxsYmFjayk7CiB9CiAKIGZ1bmN0aW9uIHdhaXRGb3JFdmVudFRlc3RB
bmRFbmQoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKQEAgLTE1MCw2ICsxNTgsMTMgQEAgZnVu
Y3Rpb24gZmFpbFRlc3RJbihtcykKICAgICB9LCBtcyk7CiB9CiAKK2Z1bmN0aW9uIGZhaWxUZXN0
KHRleHQpCit7CisgICAgbG9nUmVzdWx0KGZhc2xlLCB0ZXh0KTsKKyAgICBlbmRUZXN0KCk7Cit9
CisKKwogZnVuY3Rpb24gbG9nUmVzdWx0KHN1Y2Nlc3MsIHRleHQpCiB7CiAgICAgaWYgKHN1Y2Nl
c3MpCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlp
bmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRp
bWV1cGRhdGUtd2hpbGUtcGxheWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUZXN0ICd0aW1ldXBkYXRlJyBldmVudHMg
YXJlIHBvc3RlZCB3aGlsZSBwbGF5aW5nIGJ1dCBub3Qgd2hpbGUgcGF1c2VkLgorCitSVU4odmlk
ZW8ucGxheSgpKQorCitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChkdXJhdGlvbmNoYW5nZSkKK0VW
RU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitF
VkVOVChjYW5wbGF5dGhyb3VnaCkKK0VWRU5UKHBsYXlpbmcpCisKK1JVTih2aWRlby5wYXVzZSgp
KQorRVZFTlQocGF1c2UpCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXRpbWV1cGRhdGUtd2hpbGUtcGxheWluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXRpbWV1cGRhdGUtd2hpbGUtcGxheWluZy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS13aGlsZS1wbGF5aW5n
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKzxodG1sPgorPGJvZHk+CisgICAg
CisgICAgPHZpZGVvIHNyYz1jb250ZW50L3Rlc3QubXA0IGNvbnRyb2xzPjwvdmlkZW8+CisKKyAg
ICA8cD4KKyAgICBUZXN0ICd0aW1ldXBkYXRlJyBldmVudHMgYXJlIHBvc3RlZCB3aGlsZSBwbGF5
aW5nIGJ1dCBub3Qgd2hpbGUgcGF1c2VkLgorICAgIDwvcAorICAgIDxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAKKyAgICAgICAgdmFyIHRpbWV1
cGRhdGVFdmVudENvdW50ID0gMDsKKyAgICAgICAgdmFyIGNvdW50V2hpbGVQbGF5aW5nID0gMDsK
KworICAgICAgICBmdW5jdGlvbiBzb21lVGltZUxhdGVyKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGNvdW50V2hpbGVQbGF5aW5nICE9IHRpbWV1cGRhdGVFdmVudENvdW50KQorICAgICAg
ICAgICAgICAgIGZhaWxUZXN0KCIndGltZXVwZGF0ZScgZXZlbnRzIHBvc3RlZCBhZnRlciBwYXVz
aW5nIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBwYXVzZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50V2hpbGVQbGF5aW5nID0g
dGltZXVwZGF0ZUV2ZW50Q291bnQ7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0
ZXIsIDQwMCkgOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgZnVuY3Rpb24gcGxheWluZygpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBydW4oInZpZGVvLnBhdXNlKCkiKTsgfSwgNTAwKSA7
CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAgICAgICAgbWVk
aWEuYWRkRXZlbnRMaXN0ZW5lcigidGltZXVwZGF0ZSIsIGZ1bmN0aW9uICgpIHsgKyt0aW1ldXBk
YXRlRXZlbnRDb3VudDsgfSk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50KCdlcnJvcicpOworICAg
ICAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJh
dGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAgICAgIHdh
aXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9u
Y2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2Fu
cGxheSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIik7CisgICAgICAg
IHdhaXRGb3JFdmVudCgicGF1c2UiLCBwYXVzZSk7CisgICAgICAgIHdhaXRGb3JFdmVudCgicGxh
eSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInBsYXlpbmciLCBwbGF5aW5nKTsKKworICAgICAg
ICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgIDwv
c2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28645</attachid>
            <date>2009-03-15 21:23:58 -0700</date>
            <delta_ts>2009-03-19 07:38:45 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>164975</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTY5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAwIEBACisyMDA5LTAzLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU4OAorICAgICAg
ICAKKyAgICAgICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQgaW1wbGVtZW50YXRpb24gdG8gY3VycmVu
dCBIVE1MNSBzcGVjCisKKyAgICAgICAgTmV3IHRlc3RzOiAKKyAgICAgICAgICAgICAgIG1lZGlh
L21lZGlhLWNvbnN0YW50cy5odG1sCisgICAgICAgICAgICAgICBtZWRpYS92aWRlby1zZWVrLW5v
LXNyYy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc291cmNlLWFk
ZC1zcmMuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3Zl
Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1sCisg
ICAgICAgICAgICAgICBtZWRpYS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRtbAor
CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDogUmVtb3ZlIG9ic29sdXRlIGV2ZW50cywgYWRk
IG5ldyBvbmVzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyIHZhcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKTogVHJpZ2dlciBsb2FkKCkgb25seSB3aGVuIHdlIGRvbid0CisgICAg
ICAgIGhhdmUgYSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVkRnJvbURvY3VtZW50KTogRGVhbCB3aXRoIHN0YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUHJvZ3Jlc3NFdmVudCk6IE5l
dywgY3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgYW5kIAorICAgICAgICBhZGQgaXQgdG8gdGhlIGV2
ZW50IHF1ZXVlIHRvIGJlIGRpc3BhdGNoIHdoZW4gdGhlIHRpbWVyIGZpcmVzLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6IE5ldywgY3JlYXRlIGEg
Z2VuZXJpYyBldmVudCBhbmQgYWRkCisgICAgICAgIGl0IHRvIHRoZSBldmVudCBxdWV1ZSB0byBi
ZSBkaXNwYXRjaCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmVucXVldWVFdmVudCk6IEFkZCBhbiBldmVudCB0byB0aGUgcXVldWUgYW5k
IHRpY2tlIHRoZSAKKyAgICAgICAgYXN5bmNoIGV2ZW50IHRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOiBEaXNwYXRjaCBhbGwg
cGVuZGluZyBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
VGltZXJGaXJlZCk6IEVpdGhlciB0cmlnZ2VyIHRoZSBpbml0aWFsIGxvYWQgb3IKKyAgICAgICAg
dHJ5IHRvIGxvYWQgdGhlIG5leHQgPHNvdXJjZT4gdXJsLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZCk6IE1pbm9yIHN0eWxlIGNoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFRoZSBmaXJzdCBwYXJ0IG9mIHRo
ZSBzcGVjIGxvYWQgYWxnb3JpdGhtLCBjbGVhbnVwCisgICAgICAgIHRoZSBjdXJyZW50IGxvYWQg
KGlmIGFueSkgYW5kIHNldCB1cCBzdGF0ZSBmb3IgYSBuZXcgbG9hZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UpOiBEZWFsIHdpdGggbm8g
J3NyYycgb3IgPHNvdXJjZT4sIHBvc3QgJ2xvYWRzdGFydCcKKyAgICAgICAgZXZlbnQsIGFuZCBp
bml0aWF0ZSBsb2FkIGZyb20gJ3NyYycgaWYgcHJlc2VudC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hpbGQpOiBJbml0aWF0ZSBsb2FkIGZyb20g
bmV4dCA8c291cmNlPiB1cmwsIG9yIHRyaWdnZXIKKyAgICAgICAgbm9uZVN1cHBvcnRlZCgpIGlm
IG5vIG1vcmUgdG8gY29uc2lkZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UpOiBJbnN0YW50aWF0ZSBhIG5ldyBNZWRpYVBsYXllciBhbmQgYXNrIGl0
IHRvIGxvYWQgYSB1cmwuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdGFy
dFByb2dyZXNzRXZlbnRUaW1lcik6IFN0YXJ0IHRoZSByZXBlYXRpbmcgcHJvZ3Jlc3MgZXZlbnQg
dGltZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVk
KTogUG9zdCBlcnJvciBldmVudCBhbmQgc2V0IHVwIHN0YXRlIHdoZW4gbm8gdmFsaWQgCisgICAg
ICAgIG1lZGlhIHVybCB3YXMgZm91bmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUVuZ2luZUVycm9yKTogUG9zdCBlcnJvciBldmVudCBhbmQgc2V0IHVwIHN0YXRl
IHdoZW4gbm8gdmFsaWQgCisgICAgICAgIG1lZGlhIGVuZ2luZSBmYWlsZWQgd2l0aCBhIGRlY29k
ZSBlcnJvciBvciBhIG5ldHdvcmsgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKTogVXBkYXRlZCBmb3IgbmV3IHNw
ZWMgbmV0d29yayBzdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOiBVcGRhdGVkIGZvciBuZXcgc3BlYyByZWFkeSBzdGF0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRUaW1l
ckZpcmVkKTogQmFpbCBpZiB0aGUgbmV0d29yayBpcyBub3QgYWN0aXZlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vlayk6IFJldHVybiBJTlZBTElEX1NUQVRFX0VSUiBl
eGNlcHRpb24gaWYgc3RhdGUgaXMgdG9vIGxvdyBvcgorICAgICAgICBpZiBwbGF5ZXIgaGFzbid0
IGJlZW4gc2V0IHVwIHlldC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXNlIGxvYWQoKSBpcyBhc3lu
Yy4gQ2xlYXIgdGhlIGZsYWcKKyAgICAgICAgd2UgdXNlIHRvIGd1YXJkIGFnYWluc3Qgc2VuZGlu
ZyAnZW5kZWQnIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZHVyYXRpb24pOiBEb24ndCBib3RoZXIgY2FsbGluZyBtZWRpYSBlbmdpbmUgYmVmb3Jl
IGl0IGhhcyBtZXRhZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dERlZmF1bHRQbGF5YmFja1JhdGUpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLCAwIGlzIG5vIGxv
bmdlciBhbgorICAgICAgICBpbnZhbGlkIHJhdGUuIAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKTogUmVtb3ZlIGV4Y2VwdGlvbiBwYXJhbSwgMCBp
cyBubyBsb25nZXIgYW4KKyAgICAgICAgaW52YWxpZCByYXRlLiBDYWNoZSByYXRlIGJlaW5nIHNl
dCBzbyB3ZSBjYW4gdXNlIGl0IGxhdGVyIGlmIG1lZGlhIGVuZ2luZSBpc24ndCByZWFkeSBub3cu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5KTogUmVtb3ZlIGV4Y2Vw
dGlvbiBwYXJhbSwgcGxheSgpIGJlZm9yZSBsb2FkKCkgbm93IGp1c3QKKyAgICAgICAgc3RhcnRz
IGxvYWRpbmcgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5SW50ZXJuYWwpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLiBGaXJlICd3YWl0aW5n
JyBvciAncGxheWluZycKKyAgICAgICAgZXZlbnQgZGVwZW5kaW5nIG9uIGN1cnJlbnQgc3RhdGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSk6IFJlbW92ZSBleGNl
cHRpb24gcGFyYW0sIHBhdXNlKCkgYmVmb3JlIGxvYWQoKSBub3cganVzdAorICAgICAgICBzdGFy
dHMgbG9hZGluZyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKTogZGlzcGF0Y2hFdmVudEFzeW5j
IC0+IHNjaGVkdWxlRXZlbnQKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dE11dGVkKTogZGlzcGF0Y2hFdmVudEFzeW5jIC0+IHNjaGVkdWxlRXZlbnQKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSk6IFJlbW92ZSBleGNlcHRp
b24gcGFyYW0uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnVi
YmluZyk6IHBhdXNlKCkgZG9lc24ndCB0YWtlIGFuIGV4Y2VwdGlvbiBwYXJhbS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0UGxheWJhY2tQcm9ncmVzc1RpbWVyKTog
TmV3LCBzdGFydHMgdGltZXIgdGhhdCBmaXJlcyA0IHRpbWVzIHBlcgorICAgICAgICBzZWNvbmQg
d2hlbiB0aGUgbW92aWUgaXMgcGxheWluZyB0byB0aW1ldXBkYXRlIHNvIHdlIGNhbiBwb3N0ICd0
aW1ldXBkYXRlJyBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
bGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZCk6IFRpbWVyIHByb2MuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCk6IEJvdHRsZW5lY2sg
YXJvdW5kIHNjaGVkdWxpbmcgYSAndGltZXVwZGF0ZScKKyAgICAgICAgZXZlbnQgYmVjYXVzZSB3
ZSBib3RoIGZpcmUgdGhlbSB0aGVtIHdoZW4gdGhlIHNwZWMgc2F5cyB3ZSBzaG91bGQgYW5kIHdo
ZW4gdGhlIG1lZGlhIGVuZ2luZQorICAgICAgICBzYXlzIHRoYXQgdGltZSBoYXMganVtcGVkLCBi
dXQgd2UgZG9uJ3Qgd2FudCB0byBmaXJlIG1vcmUgdGhhbiBvbmUgYXQgYSBnaXZlbiBtb3ZpZSB0
aW1lLiBXZSBhbHNvCisgICAgICAgIHVzZSB0aGlzIGJvdHRsZW5lY2sgdG8ga2VlcCB0cmFjayBv
ZiB0aGUgbGFzdCB0aW1lIG9uZSB3YXMgcG9zdGVkIHNvIHdlIHdvbid0IGZpcmUgdG9vIG9mdGVu
CisgICAgICAgIGR1cmluZyBwbGF5YmFjay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNhblBsYXkpOiByZWFkeVN0YXRlIG5vdyB0cmFja3Mgd2hldGhlciBvciBub3Qgd2Ug
aGF2ZSBtZXRhZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQ
b3RlbnRpYWxTb3VyY2VDaGlsZCk6IE5ldywgY2hlY2tzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYSA8
c291cmNlPgorICAgICAgICBlbGVtZW50IHdpdGggYSAnc3JjJyBhdHRyaWJ1dGUgdGhhdCB3ZSBo
YXZlIG5vdCB0cmllZCB0byBsb2FkIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om5leHRTb3VyY2VDaGlsZCk6IE5ldywgcmV0dXJucyB0aGUgdXJsIGFuZCBjb250ZW50
IHR5cGUgb2YgdGhlIG5leHQKKyAgICAgICAgPHNvdXJjZT4gZWxlbWVudCB0aGF0IHdlIGhhdmVu
J3QgdHJpZWQgdG8gbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyVGltZUNoYW5nZWQpOiBTY2hlZHVsZSAnc2Vla2VkJyBldmVudCB3aGVuIHNlZWtp
bmcgY29tcGxldGVzLgorICAgICAgICBTZXQgYSBmbGFnIHdoZW4gd2UgcG9zdCB0aGUgJ2VuZGVk
JyBldmVudCwgY2xlYXIgaXQgd2hlbiB0aW1lIGNoYW5nZWQgYW5kIHdlIGFyZW4ndCBhdCB0aGUg
ZW5kIHNpbmNlCisgICAgICAgIHNvbWUgbWVkaWEgZW5naW5lcyBjYWxsIHRoaXMgcHJvYyBtb3Jl
IHRoYW4gb25jZSB3aGVuIHBsYXliYWNrIHJlYWNoZXMgdGhlIGVuZCBhbmQgc3RvcHMsIGJ1dCB3
ZQorICAgICAgICBkb24ndCB3YW50IHRvIHBvc3QgJ2VuZGVkJyBtb3JlIHRoYW4gb25jZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25DaGFu
Z2VkKTogTmV3LCBhZGRlZCBzbyBtZWRpYSBlbmdpbmUgY2FuIGluZm9ybQorICAgICAgICB3aGVu
IHRoZSBtb3ZpZSBkdXJhdGlvbiBjaGFuZ2VzIGFuZCB3ZSBjYW4gcG9zdCAnZHVyYXRpb25jaGFu
Z2VkJyBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQpOiBOZXcsIGFkZGVkIHNvIG1lZGlhIGVuZ2luZSBjYW4gaW5mb3JtIHdo
ZW4KKyAgICAgICAgdGhlIHJhdGUgY2hhbmdlZCBhbmQgd2UgY2FuIHVwZGF0ZWQgb3VyIGNhY2hl
ZCByYXRlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBrbm93CisgICAg
ICAgIHBvc3QgcGVyaW9kaWMgJ3RpbWV1cGRhdGUnIGV2ZW50cyB3aGVuIHRoZSBtb3ZpZSBpcyBh
Y3R1YWxseSBwbGF5aW5nLCBhbmQgYmVjYXVzZSB3ZSB3YW50IHRvIGtub3cKKyAgICAgICAgdGhl
IGFjdHVhbCBwbGF5YmFjayByYXRlIHdoZW4gaXQgZGlmZmVycyBmcm9tIHdoYXQgd2UgdHJpZWQg
dG8gc2V0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJT
aXplQ2hhbmdlZCk6IE5ldywgYWRkZWQgc28gbWVkaWEgZW5naW5lIGNhbiBpbmZvcm0gd2hlbgor
ICAgICAgICBhIG1vdmllJ3MgaW50cmluc2ljIHNpemUgY2hhbmdlcyBhbmQgd2UgY2FuIGluZm9y
bSB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwb3Rl
bnRpYWxseVBsYXlpbmcpOiBSZW5hbWVkIGZyb20gYWN0aXZlbHlQbGF5aW5nIHNpbmNlIHRoZSBz
cGVjIG5vdworICAgICAgICB1c2VzICJhY3RpdmVseSBwbGF5aW5nIiBmb3IgdGhpcyBjb25jZXB0
LiBVcGRhdGUgbG9naWMgZm9yIG5ldyBzdGF0ZSBuYW1lcyBhbmQgdW4tY29tbWVudCBjYWxscwor
ICAgICAgICB0byBzdG9wcGVkRHVlVG9FcnJvcnMoKSBhbmQgcGF1c2VkRm9yVXNlckludGVyYWN0
aW9uKCkgc2luY2UgdGhlIHNwZWMgc2F5cyB0aG9zZSBjb25kaWRpdG9ucworICAgICAgICBhcmUg
cGFydCBvZiB0aGUgYW5zd2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
ZW5kZWRQbGF5YmFjayk6IFVwZGF0ZSBsb2dpYyBmb3IgbmV3IHN0YXRlIG5hbWVzLiAKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9ycyk6IE5ldywg
c3BlYyBzYXlzIHRoaXMgbG9naWMgc2hvdWxkIGJlIHBhcnQgb2YKKyAgICAgICAgdGhlIGRldGVy
bWluYXRpb24gb2YgInBvdGVudGlhbGx5IHBsYXlpbmciLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKTogTmV3LCBwbGFjZWhvbGRl
ciBmb3Igd2hlbiAoaWYpIHVzZXIKKyAgICAgICAgYWdlbnQgc3VwcG9ydHMgdGhpcyBzcGVjIGNv
bmNlcHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3Rh
dGUpOiBTdG9wIHRpbWVyIHVzZWQgdG8gZmlyZSBwZXJpb2RpYyAndGltZXVwZGF0ZScgCisgICAg
ICAgIGV2ZW50cyB3aGVuIHdlIHBhdXNlcyB0aGUgbW92aWUuIFNldCB0aGUgbWVkaWEgZW5naW5l
IHJhdGUgYmVmb3JlIGNhbGxpbmcgcGxheSgpIGluIGNhc2UgaXQKKyAgICAgICAgd2Fzbid0IHNl
dCB1cCB3aGVuIHRoZSByYXRlIHdhcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c3RvcFBlcmlvZGljVGltZXJzKTogTmV3LCBzdG9wIHRoZSBwcm9ncmVzcyBl
dmVudCBhbmQgJ3RpbWV1cGF0ZScKKyAgICAgICAgZXZlbnQgdGltZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQpOiBOZXcsIGxvZ2ljIHB1
bGxlZCBvdXQgb2YgZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgYW5kIHVwZGF0
ZWQgZm9yIHRoZSBjdXJyZW50IHNwZWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6IE1vdmVkIHNvbWUgbG9naWMgdG8gdXNl
ckNhbmNlbGxlZExvYWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1
bWVudERpZEJlY29tZUFjdGl2ZSk6IFVwZGF0ZSBjb21tZW50cy4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmluaXRpYWxVUkwpOiBVcGRhdGUgZm9yIHJlZmFjdG9yaW5nIG9m
IGNvZGUgdGhhdCBkZXRlcm1pbmVzIHRoZSAKKyAgICAgICAgaW5pdGlhbCB1cmwuCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IENoYW5nZSBSZWFkeVN0YXRlIGFuZCBOZXR3b3Jr
U3RhdGUgZW51bXMgdG8gbWF0Y2ggbmFtZXMgaW4gdGhlIHNwZWMsCisgICAgICAgIHVwZGF0ZSBm
b3IgY2hhbmdlcyBpbiAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBVcGRhdGUgcmVhZHkgc3Rh
dGUgYW5kIG5ldHdvcmsgc3RhdGUgY29uc3RhbnRzIGZvciBzcGVjIGNoYW5nZXMuCisgICAgICAg
IGRlZmF1bHRQbGF5YmFja1JhdGUsIHBsYXliYWNrUmF0ZSwgcGxheSgpLCBhbmQgcGF1c2UoKSBu
byBsb25nZXIgcmFpc2UgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KTogVXBkYXRlIGZvciBuZXR3b3JrIHN0YXRlIG5hbWUgY2hhbmdlcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVQb3N0ZXJJbWFnZSk6IFVwZGF0ZSBmb3IgcmVhZHkgc3Rh
dGUgbmFtZSBjaGFuZ2VzLgorCisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVycm9yOjopOiBhZGQgTUVESUFfRVJSX05PTkVfU1VQUE9SVEVELgor
CisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmlkbDogYWRkIE1FRElBX0VSUl9OT05FX1NVUFBP
UlRFRC4KKworICAgICAgICAqIGxvYWRlci9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRG9jdW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBwbGF5KCkgYW5kIHBh
dXNlKCkgZG9uJ3QgdGFrZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQ
cml2YXRlOjpyZWFkeVN0YXRlKTogVXBkYXRlIGZvciBuZXd0b3JrIHN0YXRlIG5hbWUgY2hhbmdl
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCk6IE5ldywgc28g
ZW5naW5lIGNhbiByZXBvcnQgaW50cmluc2ljIHNpemUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6IE5ldywgc28gZW5naW5lIGNhbiByZXBvcnQg
cmF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hh
bmdlZCk6IE5ldywgc28gZW5naW5lIGNhbiByZXBvcnQgZHVyYXRpb24gY2hhbmdlcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOiBVcGRhdGUgTmV0d29ya1N0YXRl
IGFuZCBSZWFkeVN0YXRlIGVudW0gbmFtZXMgdG8gbWF0Y2ggc3BlYworICAgICAgICBzdGF0ZXMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlv
bkNoYW5nZWQpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVk
aWFQbGF5ZXJSYXRlQ2hhbmdlZCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Q2xpZW50OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Oik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRh
dGVTdGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZGluZ0ZhaWxlZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6IFVwZGF0ZSBmb3IgbmV0d29yay9yZWFkeSBzdGF0
ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIFJlbW92ZSBlbmRQb2ludFRpbWVyLCBpdCBpcyBubyBs
b25nZXIgbmVjZXNzYXJ5LiBBZGQgbV9lbmFibGVkVHJhY2tDb3VudCBhbmQgbV9kdXJhdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bWV0YURhdGFBdmFpbGFibGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlKTogTm8gbW9yZSBtX2VuZFBvaW50VGltZXIgb3IgbV9lbmRUaW1lLiBJbml0aWFsaXpl
CisgICAgICAgIG1fZW5hYmxlZFRyYWNrQ291bnQgYW5kIG1fZHVyYXRpb24uIFVwZGF0ZSBmb3Ig
bmV0d29yay9yZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KTog
Tm8gbW9yZSBtX2VuZFBvaW50VGltZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnBhdXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGU6OmN1cnJlbnRUaW1lKTogTm8gbW9yZSBtX2VuZFRpbWUuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OnNlZWspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6ZG9TZWVrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGU6OnNldEVuZFRpbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4gUmV0dXJuCisgICAgICAgIGRpZmZlcmVudCBlcnJvcnMgZGVwZW5k
aW5nIG9uIHdoYXQgY2F1c2VzIGEgZmFpbHVyZS4gV2F0Y2ggZm9yIGFuZCByZXBvcnQgZHVyYXRp
b24gY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmF0ZUNo
YW5nZWQpOiBSZXBvcnQgcmF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpzaXplQ2hhbmdlZCk6IFJlcG9ydCBzaXplIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCk6IE5vIG1vcmUgZW5kcG9pbnQgdGlt
ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnNldFZpc2libGUpOiBV
cGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MpOiBEb24n
dCByZXR1cm4gbnVtYmVyIG9mIHVuc3VwcG9ydGVkCisgICAgICAgIHRyYWNrcywgc3RvcmUgaW4g
bV9lbmFibGVkVHJhY2tDb3VudCBzbyB3ZSBjYW4gdXNlIGl0IHRvIGhlbHAgZGV0ZXJtaW5lIGNh
dXNlcyBvZiBmYWlsdXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQ
bGF5ZXJQcml2YXRlUGhvbm9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0YXRl
IG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bG9h
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVT
dGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bmF0
dXJhbFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUpOiBObyBtb3JlIG1fZW5kUG9pbnRUaW1l
ci4gVXBkYXRlIGZvciAKKyAgICAgICAgbmV0d29yay9yZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9y
IG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLiBObyBtb3JlCisgICAgICAgIG1fZW5k
UG9pbnRUaW1lci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGxheSk6
IE5vIG1vcmUgbV9lbmRQb2ludFRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjpwYXVzZSk6IERpdHRvLiAKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6c2V0RW5kVGltZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjp1cGRhdGVTdGF0ZXMpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaWRFbmQp
OiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmg6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBVcGRhdGUgZm9yIG5l
dHdvcmsvcmVhZHkgc3RhdGUgCisgICAgICAgIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTog
RGl0dG8uCisKIDIwMDktMDMtMTMgIE1pa2UgQmVsc2hlICA8bWlrZUBiZWxzaGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlz
aW9uIDQxNjU4KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsMjQgKzEwMiwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8od2Via2l0
QmVmb3JlVGV4dEluc2VydGVkKSBcCiAgICAgbWFjcm8od2Via2l0RWRpdGFibGVDb250ZW50Q2hh
bmdlZCkgXAogICAgIFwKLSAgICBtYWNybyhjYW5zaG93Y3VycmVudGZyYW1lKSBcCiAgICAgbWFj
cm8oY2FucGxheSkgXAogICAgIG1hY3JvKGNhbnBsYXl0aHJvdWdoKSBcCi0gICAgbWFjcm8oZGF0
YXVuYXZhaWxhYmxlKSBcCiAgICAgbWFjcm8oZHVyYXRpb25jaGFuZ2UpIFwKICAgICBtYWNybyhl
bXB0aWVkKSBcCiAgICAgbWFjcm8oZW5kZWQpIFwKLSAgICBtYWNybyhsb2FkZWRmaXJzdGZyYW1l
KSBcCisgICAgbWFjcm8obG9hZGVkZGF0YSkgXAogICAgIG1hY3JvKGxvYWRlZG1ldGFkYXRhKSBc
CiAgICAgbWFjcm8ocGF1c2UpIFwKICAgICBtYWNybyhwbGF5KSBcCisgICAgbWFjcm8ocGxheWlu
ZykgXAogICAgIG1hY3JvKHJhdGVjaGFuZ2UpIFwKKyAgICBtYWNybyhzZWVrZWQpIFwKKyAgICBt
YWNybyhzZWVraW5nKSBcCiAgICAgbWFjcm8odGltZXVwZGF0ZSkgXAogICAgIG1hY3JvKHZvbHVt
ZWNoYW5nZSkgXAogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAgICBcCiAgICAgbWFjcm8ocHJvZ3Jl
c3MpIFwKICAgICBtYWNybyhzdGFsbGVkKSBcCisgICAgbWFjcm8oc3VzcGVuZCkgXAogICAgIFwK
ICAgICBtYWNybyh3ZWJraXRBbmltYXRpb25FbmQpIFwKICAgICBtYWNybyh3ZWJraXRBbmltYXRp
b25TdGFydCkgXApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNDE2
NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NF
dmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAjaW5jbHVkZSAiUmVuZGVyUGFydE9iamVjdC5oIgpAQCAtNTgsNiArNTks
NyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTcwLDI3ICs3MiwzMyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0CiAgICAgLCBtX2xvYWRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRp
bWVyRmlyZWQpCiAgICAgLCBtX2FzeW5jRXZlbnRUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVu
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaW1lcih0aGlz
LCAmSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQpCisgICAgLCBtX3Bs
YXliYWNrUHJvZ3Jlc3NUaW1lcih0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9n
cmVzc1RpbWVyRmlyZWQpCisgICAgLCBtX3BsYXliYWNrUmF0ZSgxLjBmKQogICAgICwgbV9kZWZh
dWx0UGxheWJhY2tSYXRlKDEuMGYpCi0gICAgLCBtX25ldHdvcmtTdGF0ZShFTVBUWSkKLSAgICAs
IG1fcmVhZHlTdGF0ZShEQVRBX1VOQVZBSUxBQkxFKQotICAgICwgbV9iZWd1bihmYWxzZSkKLSAg
ICAsIG1fbG9hZGVkRmlyc3RGcmFtZShmYWxzZSkKLSAgICAsIG1fYXV0b3BsYXlpbmcodHJ1ZSkK
KyAgICAsIG1fbmV0d29ya1N0YXRlKE5FVFdPUktfRU1QVFkpCisgICAgLCBtX3JlYWR5U3RhdGUo
SEFWRV9OT1RISU5HKQogICAgICwgbV92b2x1bWUoMS4wZikKLSAgICAsIG1fbXV0ZWQoZmFsc2Up
Ci0gICAgLCBtX3BhdXNlZCh0cnVlKQotICAgICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9j
dXJyZW50VGltZUR1cmluZ1NlZWsoMCkKICAgICAsIG1fcHJldmlvdXNQcm9ncmVzcygwKQogICAg
ICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkK
LSAgICAsIG1fc2VudFN0YWxsZWRFdmVudChmYWxzZSkKLSAgICAsIG1fbG9hZE5lc3RpbmdMZXZl
bCgwKQotICAgICwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwoMCkKLSAgICAsIG1f
cGF1c2VkSW50ZXJuYWwoZmFsc2UpCi0gICAgLCBtX2luQWN0aXZlRG9jdW1lbnQodHJ1ZSkKKyAg
ICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lKDApCisgICAgLCBtX2xhc3RUaW1lVXBk
YXRlRXZlbnRNb3ZpZVRpbWUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSkKKyAgICAsIG1f
bG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2UpCisgICAgLCBtX2N1cnJlbnRTb3VyY2VOb2RlKDAp
CiAgICAgLCBtX3BsYXllcigwKQogICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMp
CiAgICAgLCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKDApCisgICAgLCBtX3Byb2Nl
c3NpbmdMb2FkKGZhbHNlKQorICAgICwgbV9kZWxheWluZ1RoZUxvYWRFdmVudChmYWxzZSkKKyAg
ICAsIG1faGF2ZUZpcmVkTG9hZGVkRGF0YShmYWxzZSkKKyAgICAsIG1faW5BY3RpdmVEb2N1bWVu
dCh0cnVlKQorICAgICwgbV9hdXRvcGxheWluZyh0cnVlKQorICAgICwgbV9tdXRlZChmYWxzZSkK
KyAgICAsIG1fcGF1c2VkKHRydWUpCisgICAgLCBtX3NlZWtpbmcoZmFsc2UpCisgICAgLCBtX3Nl
bnRTdGFsbGVkRXZlbnQoZmFsc2UpCisgICAgLCBtX3NlbnRFbmRFdmVudChmYWxzZSkKKyAgICAs
IG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAgLCBtX3NlbmRQcm9ncmVzc0V2ZW50cyh0cnVl
KQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9uZWVkV2lkZ2V0
VXBkYXRlKGZhbHNlKQpAQCAtMTE3LDkgKzEyNSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCgKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0g
YXR0ci0+bmFtZSgpOwogICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIC8v
IDMuMTQuOS4yLgotICAgICAgICAvLyBjaGFuZ2UgdG8gc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBs
b2FkKCkKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBFTVBU
WSkKKyAgICAgICAgLy8gZG9uJ3QgaGF2ZSBhIHNyYyBvciBhbnkgPHNvdXJjZT4gY2hpbGRyZW4s
IHRyaWdnZXIgbG9hZAorICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIG1fbG9hZFN0YXRlID09
IFdhaXRpbmdGb3JTb3VyY2UpCiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICB9IAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTE2NiwxMCArMTczLDggQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewotICAgIGlmIChuZXR3b3JrU3RhdGUo
KSAhPSBFTVBUWSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBwYXVzZShl
Yyk7Ci0gICAgfQorICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCisgICAg
ICAgIHBhdXNlKCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0K
IApAQCAtMjAwLDQwICsyMDUsNTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxv
YWQoKQogICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojppbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnROYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVByb2dyZXNzRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgaWYgKCFtX3NlbmRQcm9n
cmVzc0V2ZW50cykKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IGRvbid0IHNjaGVk
dWxlIHRpbWV1cGRhdGUgb3IgcHJvZ3Jlc3MgZXZlbnRzIHVubGVzcyB0aGVyZSBhcmUgcmVnaXN0
ZXJlZCBsaXN0ZW5lcnMKKy8qCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucHJv
Z3Jlc3NFdmVudCAmJiAhZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50Ojp4eHh4
eHhfTElTVEVORVIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50ICYmICFkb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUo
RG9jdW1lbnQ6Onh4eHh4eF9MSVNURU5FUikpCisgICAgICAgIHJldHVybjsKKyovCisKICAgICBi
b29sIHRvdGFsS25vd24gPSBtX3BsYXllciAmJiBtX3BsYXllci0+dG90YWxCeXRlc0tub3duKCk7
CiAgICAgdW5zaWduZWQgbG9hZGVkID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+Ynl0ZXNMb2FkZWQo
KSA6IDA7CiAgICAgdW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVyLT50b3RhbEJ5
dGVzKCkgOiAwOwotICAgIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWUsIHRvdGFsS25v
d24sIGxvYWRlZCwgdG90YWwpOworCisgICAgUmVmUHRyPFByb2dyZXNzRXZlbnQ+IGV2dCA9IFBy
b2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHRvdGFsS25vd24sIGxvYWRlZCwgdG90YWwp
OworICAgIGVucXVldWVFdmVudChldnQpOworCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
IHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlzcGF0Y2hFdmVudEFzeW5jKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKQogewotICAgIG1fYXN5bmNFdmVudHNUb0Rpc3BhdGNoLmFwcGVuZChldmVudE5h
bWUpOworICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRy
dWUpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlRXZlbnQoUmVmUHRyPEV2
ZW50PiBldmVudCkKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKGV2ZW50KTsKICAgICBp
ZiAoIW1fYXN5bmNFdmVudFRpbWVyLmlzQWN0aXZlKCkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICBtX2FzeW5jRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4qKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxI
VE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAKLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRp
bmdFdmVudHMpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3VudDsgKytuZHgpIAorICAgICAgICBk
aXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbbmR4XS5yZWxlYXNlKCksIGVjKTsKIH0KIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFF
bGVtZW50PiopCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpbWVyPEhU
TUxNZWRpYUVsZW1lbnQ+KikKIHsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBhc3luY0V2ZW50
c1RvRGlzcGF0Y2g7Ci0gICAgbV9hc3luY0V2ZW50c1RvRGlzcGF0Y2guc3dhcChhc3luY0V2ZW50
c1RvRGlzcGF0Y2gpOwotICAgIHVuc2lnbmVkIGNvdW50ID0gYXN5bmNFdmVudHNUb0Rpc3BhdGNo
LnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgY291bnQ7ICsrbikKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoYXN5bmNFdmVudHNUb0Rpc3BhdGNoW25dLCBmYWxzZSwg
dHJ1ZSk7CisgICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNlRWxlbWVudCkK
KyAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAgIGVsc2UKKyAgICAgICAgbG9hZElu
dGVybmFsKCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplVGltZU9mZnNldChmbG9hdCB0
aW1lKQpAQCAtMzIxLDUyICszNDUsNTUgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBs
YXlUeXBlKGNvbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9h
ZFJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbiAmJiAhcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsb2FkSW50ZXJuYWwoZWMpOworICAgIGVsc2UK
KyAgICAgICAgbG9hZEludGVybmFsKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZEludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
SW50ZXJuYWwoKQogewotICAgIFN0cmluZyBtZWRpYVNyYzsKLSAgICBDb250ZW50VHlwZSBjb250
ZW50VHlwZSgiIik7Ci0KLSAgICAvLyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3Vy
Y2UKLSAgICAvLyAxCi0gICAgLy8gaWYgYW4gZXZlbnQgZ2VuZXJhdGVkIGR1cmluZyBsb2FkKCkg
ZW5kcyB1cCByZS1lbnRlcmluZyBsb2FkKCksIHRlcm1pbmF0ZSBwcmV2aW91cyBpbnN0YW5jZXMK
LSAgICBtX2xvYWROZXN0aW5nTGV2ZWwrKzsKLSAgICBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3Rp
bmdMZXZlbCA9IG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICAKLSAgICBtX3Byb2dyZXNzRXZlbnRU
aW1lci5zdG9wKCk7Ci0gICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAgLy8gMSAt
IElmIHRoZSBsb2FkKCkgbWV0aG9kIGZvciB0aGlzIGVsZW1lbnQgaXMgYWxyZWFkeSBiZWluZyBp
bnZva2VkLCB0aGVuIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChtX3Byb2Nlc3NpbmdMb2Fk
KQorICAgICAgICByZXR1cm47CisgICAgbV9wcm9jZXNzaW5nTG9hZCA9IHRydWU7CiAgICAgCisg
ICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAgbV9sb2FkVGltZXIuc3RvcCgpOwotICAgIAot
ICAgIC8vIDIKLSAgICBpZiAobV9iZWd1bikgewotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Cisg
ICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gZmFsc2U7CisgICAgbV9oYXZlRmlyZWRMb2FkZWREYXRh
ID0gZmFsc2U7CisKKyAgICAvLyAyIC0gQWJvcnQgYW55IGFscmVhZHktcnVubmluZyBpbnN0YW5j
ZSBvZiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhpcyBlbGVtZW50Lgor
ICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOworCisgICAgLy8gMyAtIElmIHRoZXJlIGFyZSBh
bnkgdGFza3MgZnJvbSB0aGUgbWVkaWEgZWxlbWVudCdzIG1lZGlhIGVsZW1lbnQgZXZlbnQgdGFz
ayBzb3VyY2UgaW4gCisgICAgLy8gb25lIG9mIHRoZSB0YXNrIHF1ZXVlcywgdGhlbiByZW1vdmUg
dGhvc2UgdGFza3MuCisgICAgbV9wZW5kaW5nRXZlbnRzLmNsZWFyKCk7CisgICAgCisgICAgLy8g
NCAtIElmIHRoZSBtZWRpYSBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGlzIHNldCB0byBORVRXT1JL
X0xPQURJTkcgb3IgTkVUV09SS19JRExFLCBzZXQgdGhlIAorICAgIC8vIGVycm9yIGF0dHJpYnV0
ZSB0byBhIG5ldyBNZWRpYUVycm9yIG9iamVjdCB3aG9zZSBjb2RlIGF0dHJpYnV0ZSBpcyBzZXQg
dG8gTUVESUFfRVJSX0FCT1JURUQsIAorICAgIC8vIGFuZCBmaXJlIGEgcHJvZ3Jlc3MgZXZlbnQg
Y2FsbGVkIGFib3J0IGF0IHRoZSBtZWRpYSBlbGVtZW50LgorICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA9PSBORVRXT1JLX0xPQURJTkcgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19JRExFKSB7
CiAgICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFf
RVJSX0FCT1JURUQpOwotICAgICAgICBpZiAobV9zZW5kUHJvZ3Jlc3NFdmVudHMpCi0gICAgICAg
ICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50
KTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIAorICAgICAgICAv
LyBmaXJlIHN5bmNocm9ub3VzICdhYm9ydCcKKyAgICAgICAgYm9vbCB0b3RhbEtub3duID0gbV9w
bGF5ZXIgJiYgbV9wbGF5ZXItPnRvdGFsQnl0ZXNLbm93bigpOworICAgICAgICB1bnNpZ25lZCBs
b2FkZWQgPSBtX3BsYXllciA/IG1fcGxheWVyLT5ieXRlc0xvYWRlZCgpIDogMDsKKyAgICAgICAg
dW5zaWduZWQgdG90YWwgPSBtX3BsYXllciA/IG1fcGxheWVyLT50b3RhbEJ5dGVzKCkgOiAwOwor
ICAgICAgICBkaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRv
dGFsS25vd24sIGxvYWRlZCwgdG90YWwpOwogICAgIH0KICAgICAKLSAgICAvLyAzCisgICAgLy8g
NSAKICAgICBtX2Vycm9yID0gMDsKLSAgICBtX2xvYWRlZEZpcnN0RnJhbWUgPSBmYWxzZTsKICAg
ICBtX2F1dG9wbGF5aW5nID0gdHJ1ZTsKIAotICAgIC8vIDQKLSAgICBzZXRQbGF5YmFja1JhdGUo
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpLCBlYyk7CisgICAgLy8gNgorICAgIHNldFBsYXliYWNrUmF0
ZShkZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogICAgIAotICAgIC8vIDUKLSAgICBpZiAobmV0d29y
a1N0YXRlKCkgIT0gRU1QVFkpIHsKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBFTVBUWTsKLSAg
ICAgICAgbV9yZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJMRTsKKyAgICAvLyA3CisgICAgaWYg
KG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkpIHsKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0VNUFRZOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7
CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3BsYXllcikgewpAQCAtMzc0LDMxICs0MDEsNzggQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoRXhjZQogICAgICAgICAgICAgbV9wbGF5ZXItPnNlZWso
MCk7CiAgICAgICAgIH0KICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmVtcHRpZWRFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAobV9sb2FkTmVzdGluZ0xl
dmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBnb3Rv
IGVuZDsKICAgICB9CiAgICAgCi0gICAgLy8gNgotICAgIG1lZGlhU3JjID0gc2VsZWN0TWVkaWFV
UkwoY29udGVudFR5cGUpOworICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKKyAgICBtX3Byb2Nl
c3NpbmdMb2FkID0gZmFsc2U7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVk
aWFSZXNvdXJjZSgpCit7CisgICAgLy8gMSAtIElmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBuZWl0
aGVyIGEgc3JjIGF0dHJpYnV0ZSBub3IgYW55IHNvdXJjZSBlbGVtZW50IGNoaWxkcmVuLCBydW4g
dGhlc2Ugc3Vic3RlcHMKKyAgICBTdHJpbmcgbWVkaWFTcmMgPSBnZXRBdHRyaWJ1dGUoc3JjQXR0
cik7CisgICAgaWYgKCFtZWRpYVNyYyAmJiAhaGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkpIHsK
KyAgICAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNlOworCisgICAgICAgIC8vIDEg
LSAgU2V0IHRoZSBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UKKyAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsKKyAgICAgICAgCisgICAgICAgIC8vIDIg
LSBXaGlsZSB0aGUgbWVkaWEgZWxlbWVudCBoYXMgbmVpdGhlciBhIHNyYyBhdHRyaWJ1dGUgbm9y
IGFueSBzb3VyY2UgZWxlbWVudCBjaGlsZHJlbiwgCisgICAgICAgIC8vIHdhaXQuIChUaGlzIHN0
ZXBzIG1pZ2h0IHdhaXQgZm9yZXZlci4pCisKKyAgICAgICAgbV9kZWxheWluZ1RoZUxvYWRFdmVu
dCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMgorICAgIG1fZGVs
YXlpbmdUaGVMb2FkRXZlbnQgPSB0cnVlOworCisgICAgLy8gMworICAgIG1fbmV0d29ya1N0YXRl
ID0gTkVUV09SS19MT0FESU5HOworCisgICAgLy8gNAorICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVu
dChldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQpOworCisgICAgLy8gNSAtIElmIHRoZSBtZWRp
YSBlbGVtZW50IGhhcyBhIHNyYyBhdHRyaWJ1dGUsIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzCisg
ICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoIiIpOworICAgIGlmICghbWVkaWFTcmMuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobWVkaWFT
cmMpLnN0cmluZygpOworICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3JjQXR0cjsK
KyAgICAgICAgbG9hZFJlc291cmNlKG1lZGlhU3JjLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2UsIHRoZSBzb3VyY2UgZWxlbWVudHMgd2ls
bCBiZSB1c2VkCisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7CisgICAgbG9hZE5leHRTb3Vy
Y2VDaGlsZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0U291cmNlQ2hp
bGQoKQoreworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKCIiKTsKKyAgICBTdHJpbmcgbWVk
aWFTcmM7CisKKyAgICBtZWRpYVNyYyA9IG5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUpOwog
ICAgIGlmIChtZWRpYVNyYy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKLSAgICAgICAgZ290byBlbmQ7CisgICAgICAgIG5vbmVTdXBwb3J0ZWQoKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyA3Ci0gICAgbV9uZXR3b3JrU3RhdGUgPSBM
T0FESU5HOwotICAgIAotICAgIC8vIDgKLSAgICBtX2N1cnJlbnRTcmMgPSBtZWRpYVNyYzsKIAot
ICAgIC8vIDkKLSAgICBtX2JlZ3VuID0gdHJ1ZTsgICAgICAgIAotICAgIGlmIChtX3NlbmRQcm9n
cmVzc0V2ZW50cykKLSAgICAgICAgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5s
b2Fkc3RhcnRFdmVudCwgZmFsc2UsIDAsIDApOwotICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwg
PCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCkKLSAgICAgICAgZ290byBlbmQ7Ci0g
ICAgCi0gICAgLy8gMTAsIDExLCAxMiwgMTMKKyAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9t
U291cmNlRWxlbWVudDsKKyAgICBsb2FkUmVzb3VyY2UobWVkaWFTcmMsIGNvbnRlbnRUeXBlKTsK
K30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoU3RyaW5nIHVybCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIC8vIFRoZSByZXNvdXJjZSBmZXRjaCBhbGdv
cml0aG0gCisKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElORzsKKworICAgIG1f
Y3VycmVudFNyYyA9IHVybDsKKworICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykgCisgICAg
ICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CisKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiAgICAgbV9wbGF5ZXIuY2xlYXIoKTsKICAgICBtX3BsYXllci5zZXQobmV3
IE1lZGlhUGxheWVyKHRoaXMpKTsKQEAgLTQwOCwzMyArNDgyLDc3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZEludGVybmFsKEV4Y2UKICNlbmRpZgogCiAgICAgdXBkYXRlVm9sdW1lKCk7
CisKICAgICBtX3BsYXllci0+bG9hZChtX2N1cnJlbnRTcmMsIGNvbnRlbnRUeXBlKTsKLSAgICBp
ZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwp
Ci0gICAgICAgIGdvdG8gZW5kOwogICAgIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICBy
ZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIAotICAgIC8vIDE0Ci0gICAgaWYg
KG1fc2VuZFByb2dyZXNzRXZlbnRzKSB7Ci0gICAgICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUg
PSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIG1fcHJldmlvdXNQcm9ncmVzcyA9IDA7Ci0g
ICAgICAgIGlmIChtX2JlZ3VuKQotICAgICAgICAgICAgLy8gMzUwbXMgaXMgbm90IG1hZ2ljLCBp
dCBpcyBpbiB0aGUgc3BlYyEKLSAgICAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0YXJ0
UmVwZWF0aW5nKDAuMzUwKTsKLSAgICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3Rh
cnRQcm9ncmVzc0V2ZW50VGltZXIoKQoreworICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSBX
VEY6OmN1cnJlbnRUaW1lKCk7CisgICAgbV9wcmV2aW91c1Byb2dyZXNzID0gMDsKKyAgICAvLyAz
NTBtcyBpcyBub3QgbWFnaWMsIGl0IGlzIGluIHRoZSBzcGVjIQorICAgIG1fcHJvZ3Jlc3NFdmVu
dFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMzUwKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpub25lU3VwcG9ydGVkKCkKK3sKKyAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICBtX2xv
YWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7
CiAKLWVuZDoKLSAgICBBU1NFUlQobV9sb2FkTmVzdGluZ0xldmVsKTsKLSAgICBtX2xvYWROZXN0
aW5nTGV2ZWwtLTsKKyAgICAvLyAzIC0gUmVhY2hpbmcgdGhpcyBzdGVwIGluZGljYXRlcyB0aGF0
IGVpdGhlciB0aGUgVVJMIGZhaWxlZCB0byByZXNvbHZlLCBvciB0aGUgbWVkaWEgCisgICAgLy8g
cmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3
IE1lZGlhRXJyb3Igb2JqZWN0IHdob3NlIAorICAgIC8vIGNvZGUgYXR0cmlidXRlIGlzIHNldCB0
byBNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQuCisgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNy
ZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworCisgICAgLy8gNC0g
U2V0IHRoZSBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19O
T19TT1VSQ0UgdmFsdWUuCisgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTsK
KworICAgIC8vIDUgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxl
ZCBlcnJvciBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKKworICAgIC8vIDYgLSBTZXQgdGhlIGVsZW1lbnQn
cyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBmbGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5
aW5nIHRoZSBsb2FkIGV2ZW50LgorICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsK
KworICAgIC8vIEFib3J0IHRoZXNlIHN0ZXBzLiBVbnRpbCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBp
bnZva2VkLCB0aGUgZWxlbWVudCB3b24ndCBhdHRlbXB0IHRvIGxvYWQgYW5vdGhlciByZXNvdXJj
ZS4KKyAgICAKKyAgICBpZiAoaXNWaWRlbygpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlk
ZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdlKCk7CisgICAgaWYgKHJlbmRlcmVy
KCkpCisgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVFcnJvcihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+
IGVycikKK3sKKyAgICAvLyAxIC0gVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0
Y2hpbmcgcHJvY2Vzcy4KKyAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICBtX2xvYWRTdGF0
ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CisKKyAgICAvLyAyIC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1
dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hvc2UgY29kZSBhdHRyaWJ1dGUgaXMgCisg
ICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9ERUNPREUuCisgICAgbV9l
cnJvciA9IGVycjsKKworICAgIC8vIDMgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNz
IGV2ZW50IGNhbGxlZCBlcnJvciBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICBzY2hlZHVsZVBy
b2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKKworICAgIC8vIDMgLSBTZXQg
dGhlIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0VNUFRZ
IHZhbHVlIGFuZCBxdWV1ZSBhIAorICAgIC8vIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBj
YWxsZWQgZW1wdGllZCBhdCB0aGUgZWxlbWVudC4KKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdP
UktfRU1QVFk7CisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsK
KworICAgIC8vIDQgLSBTZXQgdGhlIGVsZW1lbnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBm
bGFnIHRvIGZhbHNlLiBUaGlzIHN0b3BzIGRlbGF5aW5nIHRoZSBsb2FkIGV2ZW50LgorICAgIG1f
ZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKworICAgIC8vIDUgLSBBYm9ydCB0aGUgb3Zl
cmFsbCByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgorICAgIG1fY3VycmVudFNvdXJjZU5v
ZGUgPSAwOworCit9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJOZXR3b3Jr
U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBpZiAoIW1fYmVndW4pCi0gICAgICAg
IHJldHVybjsKLSAgICAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7
CiAgICAgc2V0TmV0d29ya1N0YXRlKG1fcGxheWVyLT5uZXR3b3JrU3RhdGUoKSk7CiAgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKQEAgLTQ0NCw4NCArNTYyLDU4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE0KIHsKICAgICBpZiAoc3RhdGUg
PT0gTWVkaWFQbGF5ZXI6OkVtcHR5KSB7CiAgICAgICAgIC8vIGp1c3QgdXBkYXRlIHRoZSBjYWNo
ZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyAKLSAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBFTVBUWTsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZ
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsID0gbV9sb2FkTmVzdGluZ0xldmVsOwotICAgIAotICAgIC8vIDMuMTQuOS40
LiBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIC8vIDE0Ci0gICAgaWYgKHN0YXRlID09
IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkKSB7Ci0gICAgICAgIC8vZGVsZXRlIG1fcGxheWVyOwot
ICAgICAgICAvL21fcGxheWVyID0gMDsKLSAgICAgICAgLy8gRklYTUUgYmV0dGVyIGVycm9yIGhh
bmRsaW5nCi0gICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6
TUVESUFfRVJSX05FVFdPUkspOwotICAgICAgICBtX2JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIG1f
cHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKLSAgICAgICAgCi0gICAgICAgIGluaXRBbmREaXNw
YXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOyAKLSAgICAgICAgaWYg
KG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQor
CisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvciB8fCBzdGF0ZSA9PSBN
ZWRpYVBsYXllcjo6TmV0d29ya0Vycm9yIHx8IHN0YXRlID09IE1lZGlhUGxheWVyOjpEZWNvZGVF
cnJvcikgeworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAgICAgICAvLyBJZiB3
ZSBmYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIGxvYWQgYSA8c291cmNlPiBlbGVtZW50LCB0aGUgbW92
aWUgd2FzIG5ldmVyIHBhcnNlZCwgYW5kIHRoZXJlIGFyZSBtb3JlCisgICAgICAgIC8vIDxzb3Vy
Y2U+IGNoaWxkcmVuLCBzY2hlZHVsZSB0aGUgbmV4dCBvbmUgd2l0aG91dCByZXBvcnRpbmcgYW4g
ZXJyb3IKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhBVkVfTUVUQURBVEEgJiYgbV9sb2Fk
U3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3VyY2VFbGVtZW50ICYmIGhhdmVQb3RlbnRpYWxTb3VyY2VD
aGlsZCgpKSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gRU1QVFk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcikKKyAgICAg
ICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1F
RElBX0VSUl9ORVRXT1JLKSk7CisgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IE1lZGlhUGxheWVy
OjpEZWNvZGVFcnJvcikKKyAgICAgICAgICAgIG1lZGlhRW5naW5lRXJyb3IoTWVkaWFFcnJvcjo6
Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ERUNPREUpKTsKKyAgICAgICAgZWxzZSBpZiAo
c3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKQorICAgICAgICAgICAgbm9uZVN1cHBv
cnRlZCgpOwogCiAgICAgICAgIGlmIChpc1ZpZGVvKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdlKCk7CiAKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChzdGF0ZSA+PSBN
ZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0ZSA8IExPQURJTkcpCi0gICAgICAg
IG1fbmV0d29ya1N0YXRlID0gTE9BRElORzsKLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQ
bGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmIG1fbmV0d29ya1N0YXRlIDwgTE9BREVEX01FVEFEQVRB
KSB7Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTE9BREVEX01FVEFEQVRBOwotICAgICAgICAK
LSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdl
RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1f
dGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmxvYWRlZG1l
dGFkYXRhRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZl
bCA8IG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0
RnJhbWUgJiYgbV9uZXR3b3JrU3RhdGUgPCBMT0FERURfRklSU1RfRlJBTUUpIHsKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBMT0FERURfRklSU1RfRlJBTUU7Ci0gICAgICAgIAotICAgICAgICBz
ZXRSZWFkeVN0YXRlKENBTl9TSE9XX0NVUlJFTlRfRlJBTUUpOwotICAgICAgICAKLSAgICAgICAg
aWYgKGlzVmlkZW8oKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQq
Pih0aGlzKS0+dXBkYXRlUG9zdGVySW1hZ2UoKTsKIAotICAgICAgICBpZiAobV9sb2FkTmVzdGlu
Z0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX2xvYWRlZEZpcnN0RnJhbWUgPSB0cnVlOwotI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5n
ZWQoKTsKLSAgICAgICAgfQotI2VuZGlmICAgICAgICAKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQ
bGF5ZXI6OklkbGUgJiYgbV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0lETEUpIHsKKyAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG1fcGxheWVyLT5yZWFkeVN0YXRlKCkpIDwg
SEFWRV9FTk9VR0hfREFUQSk7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19JRExF
OworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKyAgICAgICAgc2NoZWR1bGVQcm9ncmVz
c0V2ZW50KGV2ZW50TmFtZXMoKS5zdXNwZW5kRXZlbnQpOworICAgIH0KKworICAgIGlmIChzdGF0
ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGluZyAmJiBtX25ldHdvcmtTdGF0ZSA8IE5FVFdPUktfTE9B
RElORykgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8UmVhZHlTdGF0ZT4obV9wbGF5ZXIt
PnJlYWR5U3RhdGUoKSkgPCBIQVZFX0VOT1VHSF9EQVRBKTsKKyAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0xPQURJTkc7CisgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7
CisgICAgfQorCisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQgJiYgbV9uZXR3
b3JrU3RhdGUgPCBORVRXT1JLX0xPQURFRCkgeworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5F
VFdPUktfTE9BREVEOworICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKKworICAgICAgICAv
LyBDaGVjayB0byBzZWUgaWYgcmVhZHlTdGF0ZSBjaGFuZ2VzIG5lZWQgdG8gYmUgZGVhbHQgd2l0
aCBiZWZvcmUgc2VuZGluZyB0aGUgCisgICAgICAgIC8vICdsb2FkJyBldmVudCBzbyB3ZSByZXBv
cnQgJ2NhbnBsYXl0aHJvdWdoJyBmaXJzdC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBhCisg
ICAgICAgIC8vICBtZWRpYSBlbmdpbmUgcmVwb3J0cyByZWFkeVN0YXRlIGFuZCBuZXR3b3JrU3Rh
dGUgY2hhbmdlcyBzZXBhcmF0ZWx5CisgICAgICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIGN1
cnJlbnRTdGF0ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7CisgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxSZWFkeVN0YXRlPihjdXJyZW50U3RhdGUpICE9IG1fcmVhZHlTdGF0ZSkKKyAgICAgICAg
ICAgIHNldFJlYWR5U3RhdGUoY3VycmVudFN0YXRlKTsKIAotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkubG9hZGVkZmlyc3RmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05l
c3RpbmdMZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGRpc3Bh
dGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5jYW5zaG93Y3VycmVudGZyYW1lRXZlbnQsIGZh
bHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRl
TG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICAvLyAxNQotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGVkICYmIG1fbmV0
d29ya1N0YXRlIDwgTE9BREVEKSB7Ci0gICAgICAgIG1fYmVndW4gPSBmYWxzZTsKLSAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBMT0FERUQ7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0
b3AoKTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCku
bG9hZEV2ZW50KTsgCisgICAgICAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygp
LmxvYWRFdmVudCk7IAogICAgIH0KIH0KIApAQCAtNTI5LDY2ICs2MjEsMTE1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZWFkeVMKIHsKICAgICBiZWdpblByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKLSAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7Ci0gICAgc2V0UmVhZHlTdGF0ZSgoUmVhZHlTdGF0
ZSlzdGF0ZSk7CisgICAgc2V0UmVhZHlTdGF0ZShtX3BsYXllci0+cmVhZHlTdGF0ZSgpKTsKIAog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQog
ewotICAgIC8vIDMuMTQuOS42LiBUaGUgcmVhZHkgc3RhdGVzCi0gICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBzdGF0ZSkKKyAgICBSZWFkeVN0YXRlIG9sZFN0YXRlID0gbV9yZWFkeVN0YXRlOworICAg
IG1fcmVhZHlTdGF0ZSA9IHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KHN0YXRlKTsKKworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gb2xkU3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBi
b29sIHdhc0FjdGl2ZWx5UGxheWluZyA9IGFjdGl2ZWx5UGxheWluZygpOwotICAgIG1fcmVhZHlT
dGF0ZSA9IHN0YXRlOwotICAgIAotICAgIGlmIChzdGF0ZSA+PSBDQU5fUExBWSkKKyAgICBpZiAo
bV9yZWFkeVN0YXRlID49IEhBVkVfQ1VSUkVOVF9EQVRBKQogICAgICAgICBtX3NlZWtpbmcgPSBm
YWxzZTsKICAgICAKLSAgICBpZiAobmV0d29ya1N0YXRlKCkgPT0gRU1QVFkpCisgICAgaWYgKG1f
bmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBpZiAoc3RhdGUgPT0gREFUQV9VTkFWQUlMQUJMRSkgewotICAgICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShldmVudE5hbWVzKCkuZGF0YXVuYXZhaWxhYmxlRXZlbnQsIGZhbHNlLCB0cnVlKTsK
LSAgICAgICAgaWYgKHdhc0FjdGl2ZWx5UGxheWluZykgewotICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwot
ICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLndhaXRpbmdFdmVu
dCwgZmFsc2UsIHRydWUpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBDQU5f
U0hPV19DVVJSRU5UX0ZSQU1FKSB7Ci0gICAgICAgIGlmIChtX2xvYWRlZEZpcnN0RnJhbWUpCi0g
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuY2Fuc2hvd2N1cnJl
bnRmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIGlmICh3YXNBY3RpdmVseVBsYXlp
bmcpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1l
dXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JU
eXBlKGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQsIGZhbHNlLCB0cnVlKTsKKworICAgIGlmICht
X3NlZWtpbmcgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9DVVJSRU5UX0RBVEEpIHsKKyAgICAgICAg
Ly8gNC44LjEwLjEwLCBzdGVwIDkKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
c2Vla2luZ0V2ZW50KTsKKyAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CisgICAgfQorCisgICAg
Ym9vbCB3YXNQb3RlbnRpYWxseVBsYXlpbmcgPSBwb3RlbnRpYWxseVBsYXlpbmcoKTsKKyAgICBp
ZiAod2FzUG90ZW50aWFsbHlQbGF5aW5nICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RB
VEEpIHsKKyAgICAgICAgLy8gNC44LjEwLjkKKyAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZl
bnQoZmFsc2UpOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZl
bnQpOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSAmJiBv
bGRTdGF0ZSA8IEhBVkVfTUVUQURBVEEpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQpOworCisjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQorICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+aXNJbWFn
ZSgpKSB7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyo+KHJlbmRlcmVyKCkp
LT52aWRlb1NpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHN0YXRlID09
IENBTl9QTEFZKSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5j
YW5wbGF5RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlID09IENBTl9Q
TEFZX1RIUk9VR0gpIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygp
LmNhbnBsYXl0aHJvdWdoRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyNlbmRpZiAgICAgICAgCisgICAg
ICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgbV9wbGF5ZXItPnNl
ZWsoMCk7CisgICAgfQorCisgICAgLy8gNC44LjEwLjcgc2F5cyBsb2FkZWRkYXRhIGlzIHNlbnQg
b25seSB3aGVuIHRoZSBuZXcgc3RhdGUgKmlzKiBIQVZFX0NVUlJFTlRfREFUQTogIklmIHRoZQor
ICAgIC8vIHByZXZpb3VzIHJlYWR5IHN0YXRlIHdhcyBIQVZFX01FVEFEQVRBIGFuZCB0aGUgbmV3
IHJlYWR5IHN0YXRlIGlzIEhBVkVfQ1VSUkVOVF9EQVRBIiwgCisgICAgLy8gYnV0IHRoZSBldmVu
dCB0YWJsZSBhdCB0aGUgZW5kIG9mIHRoZSBzcGVjIHNheXMgaXQgaXMgc2VudCB3aGVuOiAicmVh
ZHlTdGF0ZSBuZXdseSAKKyAgICAvLyBpbmNyZWFzZWQgdG8gSEFWRV9DVVJSRU5UX0RBVEEgIG9y
IGdyZWF0ZXIgZm9yIHRoZSBmaXJzdCB0aW1lIgorICAgIC8vIFdlIGdvIHdpdGggdGhlIGxhdGVy
IGJlY2F1c2UgaXQgc2VlbXMgdXNlZnVsIHRvIGNvdW50IG9uIGdldHRpbmcgdGhpcyBldmVudAor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPCBI
QVZFX0NVUlJFTlRfREFUQSAmJiAhbV9oYXZlRmlyZWRMb2FkZWREYXRhKSB7CisgICAgICAgIG1f
aGF2ZUZpcmVkTG9hZGVkRGF0YSA9IHRydWU7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmxvYWRlZGRhdGFFdmVudCk7CisgICAgfQorCisgICAgYm9vbCBpc1BvdGVudGlhbGx5
UGxheWluZyA9IHBvdGVudGlhbGx5UGxheWluZygpOworICAgIGlmIChtX3JlYWR5U3RhdGUgPD0g
SEFWRV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkgeworICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOworICAgIH0KKworICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gSEFWRV9GVVRVUkVfREFUQSAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkg
eworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOworICAg
ICAgICBpZiAoaXNQb3RlbnRpYWxseVBsYXlpbmcpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQpOworCisgICAgICAgIGlmIChpc1ZpZGVvKCkpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBv
c3RlckltYWdlKCk7CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VH
SF9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9FTk9VR0hfREFUQSkgeworICAgICAgICBpZiAob2xk
U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS5jYW5wbGF5RXZlbnQpOworCisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQpOworCisgICAgICAgIGlmIChpc1BvdGVudGlhbGx5
UGxheWluZyAmJiBvbGRTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisKICAgICAgICAgaWYgKG1f
YXV0b3BsYXlpbmcgJiYgbV9wYXVzZWQgJiYgYXV0b3BsYXkoKSkgewogICAgICAgICAgICAgbV9w
YXVzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFt
ZXMoKS5wbGF5RXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5wbGF5aW5nRXZlbnQpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVmlkZW8o
KSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKS0+dXBk
YXRlUG9zdGVySW1hZ2UoKTsKICAgICB9CisKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSB8fCBtX25ldHdvcmtTdGF0ZSA+PSBORVRXT1JLX0xP
QURFRCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdW5zaWduZWQgcHJvZ3Jlc3MgPSBtX3BsYXll
ci0+Ynl0ZXNMb2FkZWQoKTsKICAgICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsK
ICAgICBkb3VibGUgdGltZWRlbHRhID0gdGltZSAtIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7Ci0g
ICAgCisKICAgICBpZiAocHJvZ3Jlc3MgPT0gbV9wcmV2aW91c1Byb2dyZXNzKSB7CiAgICAgICAg
IGlmICh0aW1lZGVsdGEgPiAzLjAgJiYgIW1fc2VudFN0YWxsZWRFdmVudCkgewotICAgICAgICAg
ICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3RhbGxlZEV2ZW50
KTsKKyAgICAgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3RhbGxl
ZEV2ZW50KTsKICAgICAgICAgICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2
ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50
KGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KTsKICAgICAgICAgbV9wcmV2aW91c1Byb2dyZXNz
ID0gcHJvZ3Jlc3M7CiAgICAgICAgIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSB0aW1lOwogICAg
ICAgICBtX3NlbnRTdGFsbGVkRXZlbnQgPSBmYWxzZTsKQEAgLTU5NywzNyArNzM4LDQ1IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWUKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIDMu
MTQuOS44LiBTZWVraW5nCisgICAgLy8gNC44LjEwLjEwLiBTZWVraW5nCiAgICAgLy8gMQotICAg
IGlmIChuZXR3b3JrU3RhdGUoKSA8IExPQURFRF9NRVRBREFUQSkgeworICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gSEFWRV9OT1RISU5HIHx8ICFtX3BsYXllcikgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gMgogICAgIHRp
bWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisKKyAgICAvLyAzCiAgICAgdGltZSA9IG1heCh0
aW1lLCAwLjBmKTsKLSAgICAKLSAgICAvLyA2CisKKyAgICAvLyA0CiAgICAgUmVmUHRyPFRpbWVS
YW5nZXM+IHNlZWthYmxlUmFuZ2VzID0gc2Vla2FibGUoKTsKICAgICBpZiAoIXNlZWthYmxlUmFu
Z2VzLT5jb250YWluKHRpbWUpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgLy8gNworICAgIC8vIGF2b2lkIGdlbmVyYXRp
bmcgZXZlbnRzIHdoZW4gdGhlIHRpbWUgd29uJ3QgYWN0dWFsbHkgY2hhbmdlCisgICAgZmxvYXQg
bm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBpZiAodGltZSA9PSBub3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIDUKICAgICBtX2N1cnJlbnRUaW1lRHVyaW5nU2VlayA9IHRpbWU7CiAKLSAg
ICAvLyA4CisgICAgLy8gNiAtIHNldCB0aGUgc2Vla2luZyBmbGFnLCBpdCB3aWxsIGJlIGNsZWFy
ZWQgd2hlbiB0aGUgZW5naW5lIHRlbGxzIGlzIHRoZSB0aW1lIGhhcyBhY3R1YWxseSBjaGFuZ2Vk
CiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICAKLSAgICAvLyA5Ci0gICAgZGlzcGF0Y2hFdmVu
dEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAg
IAorCisgICAgLy8gNworICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKKworICAg
IC8vIDggLSB0aGlzIGlzIGNvdmVyZWQsIGlmIG5lY2Vzc2FyeSwgd2hlbiB0aGUgZW5naW5lIHNp
Z25hbHMgYSByZWFkeXN0YXRlIGNoYW5nZQorCiAgICAgLy8gMTAKLSAgICAvLyBBcyBzb29uIGFz
IHRoZSB1c2VyIGFnZW50IGhhcyBlc3RhYmxpc2hlZCB3aGV0aGVyIG9yIG5vdCB0aGUgbWVkaWEg
ZGF0YSBmb3IgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBhdmFpbGFibGUsIAotICAgIC8v
IGFuZCwgaWYgaXQgaXMsIGRlY29kZWQgZW5vdWdoIGRhdGEgdG8gcGxheSBiYWNrIHRoYXQgcG9z
aXRpb24sIHRoZSBzZWVraW5nIERPTSBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuCi0g
ICAgaWYgKG1fcGxheWVyKQotICAgICAgICBtX3BsYXllci0+c2Vlayh0aW1lKTsKKyAgICBtX3Bs
YXllci0+c2Vlayh0aW1lKTsKKyAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogfQogCiBIVE1M
TWVkaWFFbGVtZW50OjpSZWFkeVN0YXRlIEhUTUxNZWRpYUVsZW1lbnQ6OnJlYWR5U3RhdGUoKSBj
b25zdApAQCAtNjU3LDcgKzgwNiwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJl
bnRUaW1lKGZsCiAKIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+ZHVyYXRpb24oKSA6IDA7CisgICAgaWYg
KG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKQorICAgICAgICByZXR1cm4gbV9wbGF5ZXIt
PmR1cmF0aW9uKCk7CisKKyAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWQoKSBjb25zdApAQCAtNjcw
LDE1ICs4MjIsMTEgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrUgog
ICAgIHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCByYXRlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZShmbG9hdCBy
YXRlKQogewotICAgIGlmIChyYXRlID09IDAuMGYpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAobV9kZWZhdWx0UGxheWJh
Y2tSYXRlICE9IHJhdGUpIHsKICAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0gcmF0ZTsK
LSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQp
OworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwog
ICAgIH0KIH0KIApAQCAtNjg3LDE2ICs4MzUsMTQgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6
cGxheWJhY2tSYXRlKCkgYwogICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5yYXRlKCkg
OiAwOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZShmbG9hdCBy
YXRlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJh
Y2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgaWYgKHJhdGUgPT0gMC4wZikgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGxheWJh
Y2tSYXRlICE9IHJhdGUpIHsKKyAgICAgICAgbV9wbGF5YmFja1JhdGUgPSByYXRlOworICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwogICAgIH0KLSAg
ICBpZiAobV9wbGF5ZXIgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRlKSB7CisgICAgaWYgKG1f
cGxheWVyICYmIHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fcGxheWVyLT5yYXRlKCkgIT0gcmF0
ZSkKICAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUocmF0ZSk7Ci0gICAgICAgIGRpc3BhdGNoRXZl
bnRBc3luYyhldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKLSAgICB9CiB9CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6ZW5kZWQoKSBjb25zdApAQCAtNzE0LDcwICs4NjAsNjQgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRBdXRvcGxheShib29sIAogICAgIHNldEJvb2xlYW5BdHRy
aWJ1dGUoYXV0b3BsYXlBdHRyLCBiKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5
KEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCkKIHsKLSAg
ICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlUmVz
dHJpY3Rpb24gJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0
dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHBsYXlJbnRlcm5hbChlYyk7CisgICAgcGxh
eUludGVybmFsKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQog
ewotICAgIC8vIDMuMTQuOS43LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIGlmICgh
bV9wbGF5ZXIgfHwgbmV0d29ya1N0YXRlKCkgPT0gRU1QVFkpIHsKLSAgICAgICAgZWMgPSAwOwot
ICAgICAgICBsb2FkKGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKKyAgICAvLyA0LjguMTAuOS4gUGxheWlu
ZyB0aGUgbWVkaWEgcmVzb3VyY2UKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRl
ID09IE5FVFdPUktfRU1QVFkpCisgICAgICAgIHNjaGVkdWxlTG9hZCgpOworCiAgICAgaWYgKGVu
ZGVkUGxheWJhY2soKSkgeworICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAg
c2VlaygwLCB1bnVzZWQpOwogICAgIH0KLSAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXli
YWNrUmF0ZSgpLCB1bnVzZWQpOworICAgIAorICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxh
eWJhY2tSYXRlKCkpOwogICAgIAogICAgIGlmIChtX3BhdXNlZCkgewogICAgICAgICBtX3BhdXNl
ZCA9IGZhbHNlOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnROYW1lcygpLnBsYXlF
dmVudCk7Ci0gICAgfQorICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZl
bnQpOwogCisgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEpCisg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53YWl0aW5nRXZlbnQpOworICAg
ICAgICBlbHNlIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSkKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CisgICAgfQogICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWly
ZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbiAm
JiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAg
ICBwYXVzZUludGVybmFsKGVjKTsKKyAgICBwYXVzZUludGVybmFsKCk7CiB9CiAKIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIHsKLSAgICAvLyAzLjE0LjkuNy4gUGxh
eWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICBpZiAoIW1fcGxheWVyIHx8IG5ldHdvcmtTdGF0
ZSgpID09IEVNUFRZKSB7Ci0gICAgICAgIGVjID0gMDsKLSAgICAgICAgbG9hZChlYyk7Ci0gICAg
ICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gNC44LjEwLjku
IFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCisgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdv
cmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQorICAgICAgICBzY2hlZHVsZUxvYWQoKTsKIAorICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKKyAgICAKICAgICBpZiAoIW1fcGF1c2VkKSB7CiAgICAg
ICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5jKGV2ZW50TmFt
ZXMoKS50aW1ldXBkYXRlRXZlbnQpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnRO
YW1lcygpLnBhdXNlRXZlbnQpOworICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxz
ZSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQpOwogICAg
IH0KIAotICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKLSAgICAKICAgICB1cGRhdGVQbGF5U3Rh
dGUoKTsKIH0KIApAQCAtODIyLDcgKzk2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
Vm9sdW1lKGZsb2F0IHYKICAgICBpZiAobV92b2x1bWUgIT0gdm9sKSB7CiAgICAgICAgIG1fdm9s
dW1lID0gdm9sOwogICAgICAgICB1cGRhdGVWb2x1bWUoKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVu
dEFzeW5jKGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKICAgICB9CiB9CiAKQEAgLTgz
NiwxOCArOTc2LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXQK
ICAgICBpZiAobV9tdXRlZCAhPSBtdXRlZCkgewogICAgICAgICBtX211dGVkID0gbXV0ZWQ7CiAg
ICAgICAgIHVwZGF0ZVZvbHVtZSgpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnRO
YW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOwogICAgIH0KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVQbGF5U3RhdGUoRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiB7CiAgICAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIHRo
ZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNrIHJlc3RyaWN0
aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhl
IGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKICAgICBpZiAoY2FuUGxheSgpKQotICAgICAgICBw
bGF5SW50ZXJuYWwoZWMpOworICAgICAgICBwbGF5SW50ZXJuYWwoKTsKICAgICBlbHNlIAotICAg
ICAgICBwYXVzZUludGVybmFsKGVjKTsKKyAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKQEAgLTg1Nyw4ICs5OTcsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKICAgICAgICAgICAgIC8v
IEJlY2F1c2UgYSBtZWRpYSBlbGVtZW50IHN0YXlzIGluIG5vbi1wYXVzZWQgc3RhdGUgd2hlbiBp
dCByZWFjaGVzIGVuZCwgcGxheWJhY2sgcmVzdW1lcyAKICAgICAgICAgICAgIC8vIHdoZW4gdGhl
IHNsaWRlciBpcyBkcmFnZ2VkIGZyb20gdGhlIGVuZCB0byBhbm90aGVyIHBvc2l0aW9uIHVubGVz
cyB3ZSBwYXVzZSBmaXJzdC4gRG8gCiAgICAgICAgICAgICAvLyBhICJoYXJkIHBhdXNlIiBzbyBh
biBldmVudCBpcyBnZW5lcmF0ZWQsIHNpbmNlIHdlIHdhbnQgdG8gc3RheSBwYXVzZWQgYWZ0ZXIg
c2NydWJiaW5nIGZpbmlzaGVzLgotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgICAgIHBhdXNlKGVjKTsKKyAgICAgICAgICAgIHBhdXNlKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBidXQgd2Ugc3RpbGwgd2FudCB0byBwYXVz
ZSBwbGF5YmFjayBzbyB0aGUgbWVkaWEgZW5naW5lIGRvZXNuJ3QgdHJ5IHRvCiAgICAgICAgICAg
ICAvLyBjb250aW51ZSBwbGF5aW5nIGR1cmluZyBzY3J1YmJpbmcuIFBhdXNlIHdpdGhvdXQgZ2Vu
ZXJhdGluZyBhbiBldmVudCBhcyB3ZSB3aWxsIApAQCAtODc0LDQyICsxMDEzLDEwNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuZFNjcnViYmluZygpCiAgICAgICAgIHNldFBhdXNlZEludGVy
bmFsKGZhbHNlKTsKIH0KIAorLy8gVGhlIHNwZWMgc2F5cyB0byBmaXJlIHBlcmlvZGljIHRpbWV1
cGRhdGUgZXZlbnRzICh0aG9zZSBzZW50IHdoaWxlIHBsYXlpbmcpIGV2ZXJ5CisvLyAiMTUgdG8g
MjUwbXMiLCB3ZSBjaG9vc2UgdGhlIHNsb3dlc3QgZnJlcXVlbmN5CitzdGF0aWMgY29uc3QgZG91
YmxlIG1heFRpbWV1cGRhdGVFdmVudEZyZXF1ZW5jeSA9IDAuMjU7CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIoKQoreworICAgIGlmIChtX3BsYXli
YWNrUHJvZ3Jlc3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3By
ZXZpb3VzUHJvZ3Jlc3NUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIG1fcHJldmlvdXNQ
cm9ncmVzcyA9IDA7CisgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3RhcnRSZXBlYXRpbmco
bWF4VGltZXVwZGF0ZUV2ZW50RnJlcXVlbmN5KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCit7
CisgICAgQVNTRVJUKG1fcGxheWVyKTsKKyAgICBpZiAoIW1fcGxheWJhY2tSYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudCh0cnVlKTsKKyAgICAKKyAg
ICAvLyBGSVhNRTogZGVhbCB3aXRoIGN1ZSByYW5nZXMgaGVyZQorfQorCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCkKK3sK
KyAgICBkb3VibGUgbm93ID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSB0aW1lZGVs
dGEgPSBub3cgLSBtX2xhc3RUaW1lVXBkYXRlRXZlbnRXYWxsVGltZTsKKworICAgIC8vIHRocm90
dGxlIHRoZSBwZXJpb2RpYyBldmVudHMKKyAgICBpZiAocGVyaW9kaWNFdmVudCAmJiB0aW1lZGVs
dGEgPCBtYXhUaW1ldXBkYXRlRXZlbnRGcmVxdWVuY3kpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFNvbWUgbWVkaWEgZW5naW5lcyBtYWtlIG11bHRpcGxlICJ0aW1lIGNoYW5nZWQiIGNhbGxi
YWNrcyBhdCB0aGUgc2FtZSB0aW1lLCBidXQgd2Ugb25seSB3YW50IG9uZQorICAgIC8vIGV2ZW50
IGF0IGEgZ2l2ZW4gdGltZSBzbyBmaWx0ZXIgaGVyZQorICAgIGZsb2F0IG1vdmllVGltZSA9IG1f
cGxheWVyID8gbV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkgOiAwOworICAgIGlmIChtb3ZpZVRpbWUg
IT0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKSB7CisgICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCk7CisgICAgICAgIG1fbGFzdFRpbWVVcGRh
dGVFdmVudFdhbGxUaW1lID0gbm93OworICAgICAgICBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWUgPSBtb3ZpZVRpbWU7CisgICAgfQorfQorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNh
blBsYXkoKSBjb25zdAogewotICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRlZCgpIHx8IG5ldHdv
cmtTdGF0ZSgpIDwgTE9BREVEX01FVEFEQVRBOworICAgIHJldHVybiBwYXVzZWQoKSB8fCBlbmRl
ZCgpIHx8IG1fcmVhZHlTdGF0ZSA8IEhBVkVfTUVUQURBVEE7CiB9CiAKLVN0cmluZyBIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3RNZWRpYVVSTChDb250ZW50VHlwZSYgY29udGVudFR5cGUpCitib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpCiB7Ci0gICAgLy8g
My4xNC45LjIuIExvY2F0aW9uIG9mIHRoZSBtZWRpYSByZXNvdXJjZQotICAgIFN0cmluZyBtZWRp
YVNyYyA9IGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKLSAgICBpZiAobWVkaWFTcmMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpIHsK
LSAgICAgICAgICAgICAgICBIVE1MU291cmNlRWxlbWVudCogc291cmNlID0gc3RhdGljX2Nhc3Q8
SFRNTFNvdXJjZUVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS0+aGFz
QXR0cmlidXRlKHNyY0F0dHIpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCi0gICAg
ICAgICAgICAgICAgaWYgKHNvdXJjZS0+aGFzQXR0cmlidXRlKG1lZGlhQXR0cikpIHsKLSAgICAg
ICAgICAgICAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBk
b2N1bWVudCgpLT5mcmFtZSgpLCByZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDAp
OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IE1lZGlhTGlz
dDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChzb3VyY2UtPm1lZGlhKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbChtZWRpYS5nZXQoKSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZS0+aGFzQXR0cmlidXRlKHR5cGVBdHRyKSkgewotICAgICAgICAg
ICAgICAgICAgICBDb250ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHR5cGUpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJu
IHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBzbyB0aGUgbWVkaWEgZW5naW5lIGNh
biB1c2UgdGhlbQotICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHR5cGU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1lZGlhU3JjID0gc291cmNlLT5zcmMoKS5z
dHJpbmcoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAvLyBT
dGFzaCB0aGUgY3VycmVudCA8c291cmNlPiBub2RlIHNvIHdlIGNhbiByZXN0b3JlIGl0IGFmdGVy
IGNoZWNraW5nCisgICAgLy8gdG8gc2VlIHRoZXJlIGlzIGFub3RoZXIgcG90ZW50aWFsCisgICAg
Tm9kZSogY3VycmVudFNvdXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOworICAgIFN0cmlu
ZyBuZXh0VXJsID0gbmV4dFNvdXJjZUNoaWxkKCk7CisgICAgbV9jdXJyZW50U291cmNlTm9kZSA9
IGN1cnJlbnRTb3VyY2VOb2RlOworCisgICAgcmV0dXJuICFuZXh0VXJsLmlzRW1wdHkoKTsKK30K
KworU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAq
Y29udGVudFR5cGUpCit7CisgICAgU3RyaW5nIG1lZGlhU3JjOworICAgIGJvb2wgbG9va2luZ0Zv
clByZXZpb3VzTm9kZSA9IG1fY3VycmVudFNvdXJjZU5vZGU7CisKKyAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShzb3VyY2VUYWcpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGxvb2tpbmdGb3JQcmV2aW91c05vZGUpIHsKKyAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnRTb3VyY2VOb2RlID09IG5vZGUpCisgICAgICAgICAgICAgICAgbG9v
a2luZ0ZvclByZXZpb3VzTm9kZSA9IGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSBzdGF0
aWNfY2FzdDxIVE1MU291cmNlRWxlbWVudCo+KG5vZGUpOworICAgICAgICBpZiAoIXNvdXJjZS0+
aGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICBp
ZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgeworICAgICAgICAgICAgTWVkaWFR
dWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFtZSgpLCBy
ZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRy
PE1lZGlhTGlzdD4gbWVkaWEgPSBNZWRpYUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25T
eW50YXgoc291cmNlLT5tZWRpYSgpKTsKKyAgICAgICAgICAgIGlmICghc2NyZWVuRXZhbC5ldmFs
KG1lZGlhLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUodHlwZUF0dHIpKSB7CisgICAgICAgICAgICBD
b250ZW50VHlwZSB0eXBlKHNvdXJjZS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGlmICghTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzVHlwZSh0eXBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgLy8gcmV0dXJuIHR5cGUgd2l0aCBhbGwgcGFyYW1ldGVycyBpbiBwbGFjZSBz
byB0aGUgbWVkaWEgZW5naW5lIGNhbiB1c2UgdGhlbQorICAgICAgICAgICAgaWYgKGNvbnRlbnRU
eXBlKQorICAgICAgICAgICAgICAgICpjb250ZW50VHlwZSA9IHR5cGU7CiAgICAgICAgIH0KKyAg
ICAgICAgbWVkaWFTcmMgPSBzb3VyY2UtPnNyYygpLnN0cmluZygpOworICAgICAgICBtX2N1cnJl
bnRTb3VyY2VOb2RlID0gbm9kZTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgaWYgKCFt
ZWRpYVNyYy5pc0VtcHR5KCkpCiAgICAgICAgIG1lZGlhU3JjID0gZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwobWVkaWFTcmMpLnN0cmluZygpOworCiAgICAgcmV0dXJuIG1lZGlhU3JjOwogfQogCkBA
IC05MTcsMjMgKzExMjEsMzAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRp
bWVDaAogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIAotICAg
IGlmIChyZWFkeVN0YXRlKCkgPj0gQ0FOX1BMQVkpCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBI
QVZFX0NVUlJFTlRfREFUQSAmJiBtX3NlZWtpbmcpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkuc2Vla2VkRXZlbnQpOwogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKKyAg
ICB9CiAgICAgCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBpZiAobm93ID49
IGR1cmF0aW9uKCkpIHsKKyAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOworICAgIGlmIChub3cg
Pj0gZHVyKSB7CiAgICAgICAgIGlmIChsb29wKCkpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgICAgICAgICBzZWVrKDAsIGVjKTsKLSAgICAgICAgICAgIGRpc3BhdGNoRXZl
bnRGb3JUeXBlKGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZEV4Y2VwdGlvbjsKKyAgICAgICAgICAgIG1f
c2VudEVuZEV2ZW50ID0gZmFsc2U7CisgICAgICAgICAgICBzZWVrKDAsIGlnbm9yZWRFeGNlcHRp
b24pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUo
ZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBt
X3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVUaW1ldXBkYXRl
RXZlbnQoZmFsc2UpOworICAgICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LmVuZGVkRXZlbnQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UK
KyAgICAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgp
OwotCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApAQCAtOTUy
LDYgKzExNjMsMzkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZQog
ICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKQorewor
ICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKKyAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKKyNpZiAhRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgcmVuZGVy
ZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5pc0lt
YWdlKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyo+KHJlbmRlcmVyKCkp
LT52aWRlb1NpemVDaGFuZ2VkKCk7CisgICAgfQorI2VuZGlmICAgICAgICAKKyAgICBlbmRQcm9j
ZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vz
c2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKKyAgICAvLyBTdGFzaCB0aGUgcmF0ZSBpbiBjYXNl
IHRoZSBvbmUgd2UgdHJpZWQgdG8gc2V0IGlzbid0IHdoYXQgdGhlIGVuZ2luZSBpcworICAgIC8v
IHVzaW5nIChlZy4gaXQgY2FuJ3QgaGFuZGxlIHRoZSByYXRlIHdlIHNldCkKKyAgICBtX3BsYXli
YWNrUmF0ZSA9IG1fcGxheWVyLT5yYXRlKCk7CisgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNpemVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKK3sKKyAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CisjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIGlmIChy
ZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAgIHN0YXRpY19jYXN0
PFJlbmRlclZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsKKyNlbmRpZiAg
ICAgICAgCisgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKK30KKwogUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OjpidWZmZXJlZCgpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUUgcmVhbCByYW5nZXMgc3VwcG9ydApAQCAtOTc0LDE2ICsxMjE4LDMzIEBA
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKICAgICByZXR1cm4gVGlt
ZVJhbmdlczo6Y3JlYXRlKDAsIG1fcGxheWVyLT5tYXhUaW1lU2Vla2FibGUoKSk7CiB9CiAKLWJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6YWN0aXZlbHlQbGF5aW5nKCkgY29uc3QKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6cG90ZW50aWFsbHlQbGF5aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXBh
dXNlZCgpICYmIHJlYWR5U3RhdGUoKSA+PSBDQU5fUExBWSAmJiAhZW5kZWRQbGF5YmFjaygpOyAv
LyAmJiAhc3RvcHBlZER1ZVRvRXJyb3JzKCkgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigp
OworICAgIHJldHVybiAhcGF1c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RB
VEEgJiYgIWVuZGVkUGxheWJhY2soKSAmJiAhc3RvcHBlZER1ZVRvRXJyb3JzKCkgJiYgIXBhdXNl
ZEZvclVzZXJJbnRlcmFjdGlvbigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVk
UGxheWJhY2soKSBjb25zdAogewotICAgIHJldHVybiBuZXR3b3JrU3RhdGUoKSA+PSBMT0FERURf
TUVUQURBVEEgJiYgY3VycmVudFRpbWUoKSA+PSBkdXJhdGlvbigpICYmICFsb29wKCk7CisgICAg
cmV0dXJuIG1fcGxheWVyICYmIG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBICYmIGN1cnJl
bnRUaW1lKCkgPj0gZHVyYXRpb24oKSAmJiAhbG9vcCgpOwogfQorCitib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9ycygpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0
ZSA+PSBIQVZFX01FVEFEQVRBICYmIG1fZXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IHNlZWthYmxlUmFuZ2VzID0gc2Vla2FibGUoKTsKKyAgICAgICAgaWYgKCFzZWVrYWJsZVJh
bmdlcy0+Y29udGFpbihjdXJyZW50VGltZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KICAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6cGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3QKK3sKKy8vICAgIHJldHVybiAhcGF1
c2VkKCkgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfRlVUVVJFX0RBVEEgJiYgW1VBIHJlcXVpcmVz
IGEgZGVjaXRpb25zIGZyb20gdGhlIHVzZXJdCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiB7CiAgICAgaWYgKCFtX3BsYXllcikK
QEAgLTEwMDUsMTggKzEyNjYsMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUoKQogewogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwog
ICAgIGlmIChtX3BhdXNlZEludGVybmFsKSB7CiAgICAgICAgIGlmICghbV9wbGF5ZXItPnBhdXNl
ZCgpKQogICAgICAgICAgICAgbV9wbGF5ZXItPnBhdXNlKCk7CisgICAgICAgIG1fcGxheWJhY2tQ
cm9ncmVzc1RpbWVyLnN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBi
b29sIHNob3VsZEJlUGxheWluZyA9IGFjdGl2ZWx5UGxheWluZygpOwotICAgIGlmIChzaG91bGRC
ZVBsYXlpbmcgJiYgbV9wbGF5ZXItPnBhdXNlZCgpKQorICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5n
ID0gcG90ZW50aWFsbHlQbGF5aW5nKCk7CisgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXll
ci0+cGF1c2VkKCk7CisgICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiBwbGF5ZXJQYXVzZWQpIHsK
KyAgICAgICAgLy8gU2V0IHJhdGUgYmVmb3JlIGNhbGxpbmcgcGxheSBpbiBjYXNlIHRoZSByYXRl
IHdhcyBzZXQgYmVmb3JlIHRoZSBtZWRpYSBlbmdpbmUgd2Fzbid0IHNldHVwLgorICAgICAgICAv
LyBUaGUgbWVkaWEgZW5naW5lIHNob3VsZCBqdXN0IHN0YXNoIHRoZSByYXRlIHNpbmNlIGl0IGlz
bid0IGFscmVhZHkgcGxheWluZy4KKyAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUobV9wbGF5YmFj
a1JhdGUpOwogICAgICAgICBtX3BsYXllci0+cGxheSgpOwotICAgIGVsc2UgaWYgKCFzaG91bGRC
ZVBsYXlpbmcgJiYgIW1fcGxheWVyLT5wYXVzZWQoKSkKKyAgICAgICAgc3RhcnRQbGF5YmFja1By
b2dyZXNzVGltZXIoKTsKKyAgICB9IGVsc2UgaWYgKCFzaG91bGRCZVBsYXlpbmcgJiYgIXBsYXll
clBhdXNlZCkgewogICAgICAgICBtX3BsYXllci0+cGF1c2UoKTsKKyAgICAgICAgbV9wbGF5YmFj
a1Byb2dyZXNzVGltZXIuc3RvcCgpOworICAgIH0KICAgICAKICAgICBpZiAocmVuZGVyZXIoKSkK
ICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKQEAgLTEwMjgsMjUgKzEy
OTcsNTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQYXVzZWRJbnRlcm5hbAogICAgIHVw
ZGF0ZVBsYXlTdGF0ZSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2ls
bEJlY29tZUluYWN0aXZlKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcFBlcmlvZGljVGlt
ZXJzKCkKIHsKLSAgICAvLyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAg
ICAvLyAxNAotICAgIGlmIChtX2JlZ3VuKSB7Ci0gICAgICAgIC8vIEZvciBzaW1wbGljaXR5IGNh
bmNlbCB0aGUgaW5jb21wbGV0ZSBsb2FkIGJ5IGRlbGV0aW5nIHRoZSBwbGF5ZXIKKyAgICBtX3By
b2dyZXNzRXZlbnRUaW1lci5zdG9wKCk7CisgICAgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIuc3Rv
cCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKK3sK
KyAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gTkVUV09SS19FTVBUWSkgeworCisgICAgICAgIC8v
IElmIHRoZSBtZWRpYSBkYXRhIGZldGNoaW5nIHByb2Nlc3MgaXMgYWJvcnRlZCBieSB0aGUgdXNl
cjoKKworICAgICAgICAvLyAxIC0gVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0
Y2hpbmcgcHJvY2Vzcy4KKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAg
ICAgIG1fcGxheWVyLmNsZWFyKCk7Ci0gICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3Ao
KTsKKyNlbmRpZgorICAgICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKIAorICAgICAgICAvLyAy
IC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmplY3Qgd2hv
c2UgY29kZSBhdHRyaWJ1dGUgaXMgc2V0IHRvIE1FRElBX0VSUl9BQk9SVC4KICAgICAgICAgbV9l
cnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCk7
Ci0gICAgICAgIG1fYmVndW4gPSBmYWxzZTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jl
c3NFdmVudChldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgICAgIGlmIChtX25ldHdvcmtT
dGF0ZSA+PSBMT0FESU5HKSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IEVNUFRZOwot
ICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gREFUQV9VTkFWQUlMQUJMRTsKLSAgICAgICAgICAg
IGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQsIGZhbHNlLCB0
cnVlKTsKKworICAgICAgICAvLyAzIC0gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBwcm9ncmVzcyBl
dmVudCBjYWxsZWQgYWJvcnQgYXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIHNjaGVkdWxl
UHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7CisKKyAgICAgICAgLy8gNCAt
IElmIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUg
ZXF1YWwgdG8gSEFWRV9OT1RISU5HLCBzZXQgdGhlIAorICAgICAgICAvLyBlbGVtZW50J3MgbmV0
d29ya1N0YXRlIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19FTVBUWSB2YWx1ZSBhbmQgcXVldWUg
YSB0YXNrIHRvIGZpcmUgYSAKKyAgICAgICAgLy8gc2ltcGxlIGV2ZW50IGNhbGxlZCBlbXB0aWVk
IGF0IHRoZSBlbGVtZW50LiBPdGhlcndpc2UsIHNldCBzZXQgdGhlIGVsZW1lbnQncyBuZXR3b3Jr
U3RhdGUgCisgICAgICAgIC8vIGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19JRExFIHZhbHVlLgor
ICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPj0gTkVUV09SS19MT0FESU5HKSB7CisgICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfRU1QVFk7CisgICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBIQVZFX05PVEhJTkc7CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFt
ZXMoKS5lbXB0aWVkRXZlbnQpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gNSAtIFNldCB0aGUg
ZWxlbWVudCdzIGRlbGF5aW5nLXRoZS1sb2FkLWV2ZW50IGZsYWcgdG8gZmFsc2UuIFRoaXMgc3Rv
cHMgZGVsYXlpbmcgdGhlIGxvYWQgZXZlbnQuCisgICAgICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZl
bnQgPSBmYWxzZTsKICAgICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRX
aWxsQmVjb21lSW5hY3RpdmUoKQorewogICAgIG1faW5BY3RpdmVEb2N1bWVudCA9IGZhbHNlOwor
ICAgIHVzZXJDYW5jZWxsZWRMb2FkKCk7CisKICAgICAvLyBTdG9wIHRoZSBwbGF5YmFjayB3aXRo
b3V0IGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7CiAKQEAg
LTEwNjEsNiArMTM1NSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNv
bWUKIAogICAgIGlmIChtX2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpN
RURJQV9FUlJfQUJPUlRFRCkgewogICAgICAgICAvLyBSZXN0YXJ0IHRoZSBsb2FkIGlmIGl0IHdh
cyBhYm9ydGVkIGluIHRoZSBtaWRkbGUgYnkgbW92aW5nIHRoZSBkb2N1bWVudCB0byB0aGUgcGFn
ZSBjYWNoZS4KKyAgICAgICAgLy8gbV9lcnJvciBpcyBvbmx5IGxlZnQgYXQgTUVESUFfRVJSX0FC
T1JURUQgd2hlbiB0aGUgZG9jdW1lbnQgYmVjb21lcyBpbmFjdGl2ZSAoaXQgaXMgc2V0IHRvCisg
ICAgICAgIC8vICBNRURJQV9FUlJfQUJPUlRFRCB3aGlsZSB0aGUgYWJvcnRFdmVudCBpcyBiZWlu
ZyBzZW50LCBidXQgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlcndhcmRzKS4KICAgICAgICAgLy8g
VGhpcyBiZWhhdmlvciBpcyBub3Qgc3BlY2lmaWVkIGJ1dCBpdCBzZWVtcyBsaWtlIGEgc2Vuc2li
bGUgdGhpbmcgdG8gZG8uCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGxvYWQo
ZWMpOwpAQCAtMTEyNCw5ICsxNDIwLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVk
aWFQbGF5ZXJQcm8KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmluaXRpYWxVUkwoKQogewot
ICAgIENvbnRlbnRUeXBlIGlnbm9yZWRUeXBlOwotICAgIFN0cmluZyBpbml0aWFsU3JjID0gc2Vs
ZWN0TWVkaWFVUkwoaWdub3JlZFR5cGUpOworICAgIFN0cmluZyBpbml0aWFsU3JjID0gbWVkaWFT
cmMgPSBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgCisgICAgaWYgKGluaXRpYWxTcmMuaXNF
bXB0eSgpKQorICAgICAgICBpbml0aWFsU3JjID0gbmV4dFNvdXJjZUNoaWxkKCk7CisKKyAgICBp
ZiAoIWluaXRpYWxTcmMuaXNFbXB0eSgpKQorICAgICAgICBpbml0aWFsU3JjID0gZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoaW5pdGlhbFNyYykuc3RyaW5nKCk7CisKICAgICBtX2N1cnJlbnRTcmMg
PSBpbml0aWFsU3JjOworCiAgICAgcmV0dXJuIGluaXRpYWxTcmM7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCwxMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50OwogY2xhc3MgTWVkaWFFcnJvcjsKLWNsYXNzIFRp
bWVSYW5nZXM7CiBjbGFzcyBLVVJMOworY2xhc3MgVGltZVJhbmdlczsKICAgICAKIGNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNs
aWVudCB7CiBwdWJsaWM6CkBAIC04MCw4ICs4MSw4IEBAIHB1YmxpYzoKICAgICBLVVJMIHNyYygp
IGNvbnN0OwogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjdXJy
ZW50U3JjKCkgY29uc3Q7Ci0gICAgCi0gICAgZW51bSBOZXR3b3JrU3RhdGUgeyBFTVBUWSwgTE9B
RElORywgTE9BREVEX01FVEFEQVRBLCBMT0FERURfRklSU1RfRlJBTUUsIExPQURFRCB9OworCisg
ICAgZW51bSBOZXR3b3JrU3RhdGUgeyBORVRXT1JLX0VNUFRZLCBORVRXT1JLX0lETEUsIE5FVFdP
UktfTE9BRElORywgTkVUV09SS19MT0FERUQsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0
d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdDsKICAgICB2b2lkIGxvYWQoRXhjZXB0aW9uQ29kZSYpOwpAQCAt
ODksNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNhblBsYXlUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQotICAgIGVudW0gUmVhZHlTdGF0
ZSB7IERBVEFfVU5BVkFJTEFCTEUsIENBTl9TSE9XX0NVUlJFTlRfRlJBTUUsIENBTl9QTEFZLCBD
QU5fUExBWV9USFJPVUdIIH07CisgICAgZW51bSBSZWFkeVN0YXRlIHsgSEFWRV9OT1RISU5HLCBI
QVZFX01FVEFEQVRBLCBIQVZFX0NVUlJFTlRfREFUQSwgSEFWRV9GVVRVUkVfREFUQSwgSEFWRV9F
Tk9VR0hfREFUQSB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJv
b2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC05OSw5ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgZHVyYXRpb24oKSBjb25zdDsKICAgICBib29sIHBhdXNlZCgpIGNvbnN0OwogICAgIGZsb2F0
IGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldERlZmF1bHRQbGF5YmFj
a1JhdGUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldERlZmF1bHRQbGF5YmFj
a1JhdGUoZmxvYXQpOwogICAgIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0UGxheWJhY2tSYXRlKGZsb2F0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRQbGF5
YmFja1JhdGUoZmxvYXQpOwogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCkgY29u
c3Q7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0OwogICAgIGJv
b2wgZW5kZWQoKSBjb25zdDsKQEAgLTEwOSw4ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRBdXRvcGxheShib29sIGIpOwogICAgIGJvb2wgbG9vcCgpIGNvbnN0OyAgICAKICAgICB2b2lk
IHNldExvb3AoYm9vbCBiKTsKLSAgICB2b2lkIHBsYXkoRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgcGF1c2UoRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxheSgpOworICAgIHZvaWQgcGF1
c2UoKTsKICAgICAKIC8vIGNvbnRyb2xzCiAgICAgYm9vbCBjb250cm9scygpIGNvbnN0OwpAQCAt
MTE5LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE11dGVkKGJv
b2wpOwotICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2
b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpOwogICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKICAgICB2
b2lkIGVuZFNjcnViYmluZygpOwogCkBAIC0xNDEsMTIgKzE0Miw4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFWb2x1bWVEaWRDaGFuZ2UoKTsKICAgICAKLSAgICB2b2lkIGluaXRBbmREaXNwYXRj
aFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwotICAgIHZvaWQg
ZGlzcGF0Y2hFdmVudEFzeW5jKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKLSAgICAK
LSAgICB2b2lkIHNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7Ci0gICAgdm9pZCBzZXROZXR3b3Jr
U3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBzdGF0ZSk7Ci0KKyAgICB2b2lkIHNldFJl
YWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAgIHZvaWQgc2V0TmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogICAgIAogcHJpdmF0ZTogLy8gTWVkaWFQ
bGF5ZXJPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKTsKQEAgLTE1NCwyOSArMTUxLDUzIEBAIHByaXZhdGU6IC8vIE1l
ZGlhUGxheWVyT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJUaW1lQ2hhbmdl
ZChNZWRpYVBsYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlcGFpbnQoTWVk
aWFQbGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1l
ZGlhUGxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2Vk
KE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChN
ZWRpYVBsYXllciopOwogCiBwcml2YXRlOgogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8
SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAgdm9pZCBwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChU
aW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwotICAgIHZvaWQgc2VlayhmbG9hdCB0aW1lLCBFeGNl
cHRpb25Db2RlJiBlYyk7CisgICAgdm9pZCBwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1l
cjxIVE1MTWVkaWFFbGVtZW50PiopOworICAgIHZvaWQgc3RhcnRQbGF5YmFja1Byb2dyZXNzVGlt
ZXIoKTsKKyAgICB2b2lkIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CisgICAgdm9pZCBzdG9w
UGVyaW9kaWNUaW1lcnMoKTsKKworICAgIHZvaWQgc2VlayhmbG9hdCB0aW1lLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBjaGVja0lmU2Vla05lZWRlZCgpOworICAgIAorICAgIHZvaWQgc2No
ZWR1bGVUaW1ldXBkYXRlRXZlbnQoYm9vbCBwZXJpb2RpY0V2ZW50KTsKKyAgICB2b2lkIHNjaGVk
dWxlUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9p
ZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lk
IGVucXVldWVFdmVudChSZWZQdHI8RXZlbnQ+IGV2ZW50KTsKKyAgICAKKyAgICAvLyBsb2FkaW5n
CisgICAgdm9pZCBzZWxlY3RNZWRpYVJlc291cmNlKCk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2Uo
U3RyaW5nIHVybCwgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIGxvYWROZXh0
U291cmNlQ2hpbGQoKTsKKyAgICB2b2lkIHVzZXJDYW5jZWxsZWRMb2FkKCk7CisgICAgU3RyaW5n
IG5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUgPSAwKTsKKyAgICBib29s
IGhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpOworICAgIHZvaWQgbm9uZVN1cHBvcnRlZCgpOwor
ICAgIHZvaWQgbWVkaWFFbmdpbmVFcnJvcihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycik7CiAK
ICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0
dXJlIHJlc3RyaWN0aW9ucy4KLSAgICB2b2lkIGxvYWRJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBl
Yyk7Ci0gICAgdm9pZCBwbGF5SW50ZXJuYWwoRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgIHZvaWQg
cGF1c2VJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgdm9pZCBsb2FkSW50ZXJuYWwo
KTsKKyAgICB2b2lkIHBsYXlJbnRlcm5hbCgpOworICAgIHZvaWQgcGF1c2VJbnRlcm5hbCgpOwog
ICAgIAogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29uc3Q7CiAgICAgYm9vbCBw
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2lu
Z01lZGlhUGxheWVyQ2FsbGJhY2sgPiAwOyB9CiAgICAgdm9pZCBiZWdpblByb2Nlc3NpbmdNZWRp
YVBsYXllckNhbGxiYWNrKCkgeyArK21fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7IH0K
ICAgICB2b2lkIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCkgeyBBU1NFUlQobV9w
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjayk7IC0tbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJD
YWxsYmFjazsgfQogCi0gICAgU3RyaW5nIHNlbGVjdE1lZGlhVVJMKENvbnRlbnRUeXBlJiBjb250
ZW50VHlwZSk7CiAgICAgdm9pZCB1cGRhdGVWb2x1bWUoKTsKICAgICB2b2lkIHVwZGF0ZVBsYXlT
dGF0ZSgpOwotICAgIGJvb2wgYWN0aXZlbHlQbGF5aW5nKCkgY29uc3Q7CisgICAgYm9vbCBwb3Rl
bnRpYWxseVBsYXlpbmcoKSBjb25zdDsKICAgICBib29sIGVuZGVkUGxheWJhY2soKSBjb25zdDsK
KyAgICBib29sIHN0b3BwZWREdWVUb0Vycm9ycygpIGNvbnN0OworICAgIGJvb2wgcGF1c2VkRm9y
VXNlckludGVyYWN0aW9uKCkgY29uc3Q7CiAKICAgICAvLyBSZXN0cmljdGlvbnMgdG8gY2hhbmdl
IGRlZmF1bHQgYmVoYXZpb3JzLiBUaGlzIGlzIGEgZWZmZWN0aXZlbHkgYSBjb21waWxlIHRpbWUg
Y2hvaWNlIGF0IHRoZSBtb21lbnQKICAgICAvLyAgYmVjYXVzZSB0aGVyZSBhcmUgbm8gYWNjZXNz
b3IgbWV0aG9kcy4KQEAgLTE4Nyw0MyArMjA4LDM4IEBAIHByaXZhdGU6CiAgICAgICAgIFJlcXVp
cmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbiA9IDEgPDwgMSwKICAgICB9Owog
Ci0KIHByb3RlY3RlZDoKICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2xvYWRUaW1lcjsK
ICAgICBUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiBtX2FzeW5jRXZlbnRUaW1lcjsKICAgICBUaW1l
cjxIVE1MTWVkaWFFbGVtZW50PiBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKLSAgICBWZWN0b3I8QXRv
bWljU3RyaW5nPiBtX2FzeW5jRXZlbnRzVG9EaXNwYXRjaDsKKyAgICBUaW1lcjxIVE1MTWVkaWFF
bGVtZW50PiBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lcjsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50
PiA+IG1fcGVuZGluZ0V2ZW50czsKICAgICAKKyAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKICAg
ICBmbG9hdCBtX2RlZmF1bHRQbGF5YmFja1JhdGU7CiAgICAgTmV0d29ya1N0YXRlIG1fbmV0d29y
a1N0YXRlOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIFN0cmluZyBtX2N1cnJl
bnRTcmM7CiAgICAgCiAgICAgUmVmUHRyPE1lZGlhRXJyb3I+IG1fZXJyb3I7Ci0gICAgCi0gICAg
Ym9vbCBtX2JlZ3VuOwotICAgIGJvb2wgbV9sb2FkZWRGaXJzdEZyYW1lOwotICAgIGJvb2wgbV9h
dXRvcGxheWluZzsKLSAgICAKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRMb29wOworCiAgICAgZmxv
YXQgbV92b2x1bWU7Ci0gICAgYm9vbCBtX211dGVkOwotICAgIAotICAgIGJvb2wgbV9wYXVzZWQ7
Ci0gICAgYm9vbCBtX3NlZWtpbmc7Ci0gICAgCiAgICAgZmxvYXQgbV9jdXJyZW50VGltZUR1cmlu
Z1NlZWs7CiAgICAgCiAgICAgdW5zaWduZWQgbV9wcmV2aW91c1Byb2dyZXNzOwogICAgIGRvdWJs
ZSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwotICAgIGJvb2wgbV9zZW50U3RhbGxlZEV2ZW50Owor
CisgICAgLy8gdGhlIGxhc3QgdGltZSBhIHRpbWV1cGRhdGUgZXZlbnQgd2FzIHNlbnQgKHdhbGwg
Y2xvY2spCisgICAgZG91YmxlIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lOworCisgICAg
Ly8gdGhlIGxhc3QgdGltZSBhIHRpbWV1cGRhdGUgZXZlbnQgd2FzIHNlbnQgaW4gbW92aWUgdGlt
ZQorICAgIGZsb2F0IG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZTsKICAgICAKLSAgICB1
bnNpZ25lZCBtX2xvYWROZXN0aW5nTGV2ZWw7Ci0gICAgdW5zaWduZWQgbV90ZXJtaW5hdGVMb2Fk
QmVsb3dOZXN0aW5nTGV2ZWw7CisgICAgLy8gbG9hZGluZyBzdGF0ZQorICAgIGVudW0gTG9hZFN0
YXRlIHsgV2FpdGluZ0ZvclNvdXJjZSwgTG9hZGluZ0Zyb21TcmNBdHRyLCBMb2FkaW5nRnJvbVNv
dXJjZUVsZW1lbnQgfTsKKyAgICBMb2FkU3RhdGUgbV9sb2FkU3RhdGU7CisgICAgTm9kZSAqbV9j
dXJyZW50U291cmNlTm9kZTsKICAgICAKLSAgICBib29sIG1fcGF1c2VkSW50ZXJuYWw7Ci0gICAg
Ym9vbCBtX2luQWN0aXZlRG9jdW1lbnQ7Ci0KICAgICBPd25QdHI8TWVkaWFQbGF5ZXI+IG1fcGxh
eWVyOwogCiAgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7CkBAIC0yMzIs
MTIgKzI0OCwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gIGNhbGxpbmcgdGhlIG1lZGlhIGVuZ2lu
ZSByZWN1cnNpdmVseQogICAgIGludCBtX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrOwog
CisgICAgYm9vbCBtX3Byb2Nlc3NpbmdMb2FkIDogMTsKKyAgICBib29sIG1fZGVsYXlpbmdUaGVM
b2FkRXZlbnQgOiAxOworICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkZWREYXRhIDogMTsKKyAgICBi
b29sIG1faW5BY3RpdmVEb2N1bWVudCA6IDE7CisgICAgYm9vbCBtX2F1dG9wbGF5aW5nIDogMTsK
KyAgICBib29sIG1fbXV0ZWQgOiAxOworICAgIGJvb2wgbV9wYXVzZWQgOiAxOworICAgIGJvb2wg
bV9zZWVraW5nIDogMTsKKworICAgIC8vIGRhdGEgaGFzIG5vdCBiZWVuIGxvYWRlZCBzaW5jZSBz
ZW5kaW5nIGEgInN0YWxsZWQiIGV2ZW50CisgICAgYm9vbCBtX3NlbnRTdGFsbGVkRXZlbnQgOiAx
OworCisgICAgLy8gdGltZSBoYXMgbm90IGNoYW5nZWQgc2luY2Ugc2VuZGluZyBhbiAiZW5kZWQi
IGV2ZW50CisgICAgYm9vbCBtX3NlbnRFbmRFdmVudCA6IDE7CisKKyAgICBib29sIG1fcGF1c2Vk
SW50ZXJuYWwgOiAxOworCiAgICAgLy8gTm90IGFsbCBtZWRpYSBlbmdpbmVzIHByb3ZpZGUgZW5v
dWdoIGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZSB0byBiZSBhYmxlIHRvCiAgICAgLy8gc3VwcG9y
dCBwcm9ncmVzcyBldmVudHMgc28gc2V0dGluZyBtX3NlbmRQcm9ncmVzc0V2ZW50cyBkaXNhYmxl
cyB0aGVtIAotICAgIGJvb2wgbV9zZW5kUHJvZ3Jlc3NFdmVudHM7CisgICAgYm9vbCBtX3NlbmRQ
cm9ncmVzc0V2ZW50cyA6IDE7CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
LSAgICBib29sIG1fbmVlZFdpZGdldFVwZGF0ZTsKKyAgICBib29sIG1fbmVlZFdpZGdldFVwZGF0
ZSA6IDE7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVj
dG9yLCBDb25kaXRpbwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgY3VycmVudFNyYzsKICAgICAKLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBFTVBUWSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTE9BRElORyA9IDE7
Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTE9BREVEX01FVEFEQVRBID0gMjsKLSAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBMT0FERURfRklSU1RfRlJBTUUgPSAzOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExPQURFRCA9IDQ7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19F
TVBUWSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVUV09SS19JRExFID0gMTsKKyAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0xPQURJTkcgPSAyOworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IE5FVFdPUktfTE9BREVEID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBORVRXT1JLX05PX1NPVVJDRSA9IDQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0IG5ldHdvcmtTdGF0ZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2Vz
IGJ1ZmZlcmVkOwpAQCAtNDYsMTAgKzQ2LDExIEBAIGludGVyZmFjZSBbR2VuZXJhdGVDb25zdHJ1
Y3RvciwgQ29uZGl0aW8KICAgICBET01TdHJpbmcgY2FuUGxheVR5cGUoaW4gRE9NU3RyaW5nIHR5
cGUpOwogCiAgICAgLy8gcmVhZHkgc3RhdGUKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBEQVRB
X1VOQVZBSUxBQkxFID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQU5fU0hPV19DVVJS
RU5UX0ZSQU1FID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDQU5fUExBWSA9IDI7Ci0g
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0FOX1BMQVlfVEhST1VHSCA9IDM7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgSEFWRV9OT1RISU5HID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBIQVZFX01FVEFEQVRBID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0NVUlJF
TlRfREFUQSA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSEFWRV9GVVRVUkVfREFUQSA9
IDM7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSEFWRV9FTk9VR0hfREFUQSA9IDQ7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gc2Vla2luZzsKIApAQCAtNTgsMTkgKzU5LDE1IEBAIGludGVy
ZmFjZSBbR2VuZXJhdGVDb25zdHJ1Y3RvciwgQ29uZGl0aW8KICAgICAgICAgc2V0dGVyIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgZHVyYXRpb247
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gcGF1c2VkOwotICAgIGF0dHJpYnV0ZSBm
bG9hdCBkZWZhdWx0UGxheWJhY2tSYXRlIAotICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNl
cHRpb24pOwotICAgIGF0dHJpYnV0ZSBmbG9hdCBwbGF5YmFja1JhdGUgCi0gICAgICAgIHNldHRl
ciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgYXR0cmlidXRlIGZsb2F0IGRlZmF1bHRQbGF5
YmFja1JhdGU7CisgICAgYXR0cmlidXRlIGZsb2F0IHBsYXliYWNrUmF0ZTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBwbGF5ZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRp
bWVSYW5nZXMgc2Vla2FibGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZW5kZWQ7
CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gYXV0b3BsYXk7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4g
bG9vcDsKLSAgICB2b2lkIHBsYXkoKSAKLSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwot
ICAgIHZvaWQgcGF1c2UoKSAKLSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIHZv
aWQgcGxheSgpOworICAgIHZvaWQgcGF1c2UoKTsKIAogICAgIC8vIGNvbnRyb2xzCiAgICAgYXR0
cmlidXRlIGJvb2xlYW4gY29udHJvbHM7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50
KCk7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGF1
ZGlvVGFnKSB8fCAgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSkpIHsKICAgICAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWEgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50
Kj4ocGFyZW50Tm9kZSgpKTsKLSAgICAgICAgaWYgKG1lZGlhLT5uZXR3b3JrU3RhdGUoKSA9PSBI
VE1MTWVkaWFFbGVtZW50OjpFTVBUWSkKKyAgICAgICAgaWYgKG1lZGlhLT5uZXR3b3JrU3RhdGUo
KSA9PSBIVE1MTWVkaWFFbGVtZW50OjpORVRXT1JLX0VNUFRZKQogICAgICAgICAgICAgbWVkaWEt
PnNjaGVkdWxlTG9hZCgpOwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50
Ojp1cGRhdGVQb3N0ZXJJbWFnZQogICAgIGJvb2wgb2xkU2hvdWxkU2hvd1Bvc3RlckltYWdlID0g
bV9zaG91bGRTaG93UG9zdGVySW1hZ2U7CiAjZW5kaWYKIAotICAgIG1fc2hvdWxkU2hvd1Bvc3Rl
ckltYWdlID0gIXBvc3RlcigpLmlzRW1wdHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA8IExPQURFRF9G
SVJTVF9GUkFNRTsKKyAgICBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZSA9ICFwb3N0ZXIoKS5pc0Vt
cHR5KCkgJiYgcmVhZHlTdGF0ZSgpIDwgSEFWRV9DVVJSRU5UX0RBVEE7CiAKICNpZiAhRU5BQkxF
KFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgaWYgKGF0dGFjaGVkKCkgJiYgb2xkU2hvdWxk
U2hvd1Bvc3RlckltYWdlICE9IG1fc2hvdWxkU2hvd1Bvc3RlckltYWdlKSB7CkluZGV4OiBXZWJD
b3JlL2h0bWwvTWVkaWFFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9NZWRpYUVy
cm9yLmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUVycm9yPiB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBDb2RlIHsgTUVESUFfRVJSX0FCT1JURUQgPSAxLCBNRURJQV9FUlJfTkVUV09SSywg
TUVESUFfRVJSX0RFQ09ERSB9OworICAgIGVudW0gQ29kZSB7IE1FRElBX0VSUl9BQk9SVEVEID0g
MSwgTUVESUFfRVJSX05FVFdPUkssIE1FRElBX0VSUl9ERUNPREUsIE1FRElBX0VSUl9OT05FX1NV
UFBPUlRFRCB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFFcnJvcj4gY3JlYXRlKENv
ZGUgY29kZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRXJyb3IoY29kZSkpOyB9CiAKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvTWVkaWFFcnJvci5pZGwJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9odG1sL01lZGlh
RXJyb3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfQUJPUlRFRCA9IDE7CiAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05FVFdPUksgPSAyOwogICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9ERUNPREUgPSAzOworICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCA9IDQ7CiAg
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvZGU7CiAgICAgfTsK
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA0MTY1OCkKKysrIFdl
YkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTUg
KzE0OSwxNCBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoCiAgICAg
Tm9kZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7CiAgICAgaWYgKHRh
cmdldE5vZGUgJiYgdGFyZ2V0Tm9kZS0+aGFzVGFnTmFtZSh2aWRlb1RhZykpIHsKICAgICAgICAg
SFRNTFZpZGVvRWxlbWVudCogdmlkZW8gPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4o
dGFyZ2V0Tm9kZSk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgICAgICBpZiAo
IXZpZGVvLT5jYW5QbGF5KCkpIHsKLSAgICAgICAgICAgICAgICB2aWRlby0+cGF1c2UoZWMpOwor
ICAgICAgICAgICAgICAgIHZpZGVvLT5wYXVzZSgpOwogICAgICAgICAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmRibGNsaWNrRXZlbnQpIHsKICAgICAgICAgICAg
IGlmICh2aWRlby0+Y2FuUGxheSgpKSB7Ci0gICAgICAgICAgICAgICAgdmlkZW8tPnBsYXkoZWMp
OworICAgICAgICAgICAgICAgIHZpZGVvLT5wbGF5KCk7CiAgICAgICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiA0MTY1OCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1l
KGZsb2F0KSB7IH0KIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3
b3JrU3RhdGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7IH0KLSAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBN
ZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOyB9CisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVO
b3RoaW5nOyB9CiAKICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVCdWZmZXJlZCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KQEAgLTQ0NCwxMSArNDQ0LDI5IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnRpbWVD
aGFuZ2VkKCkKICAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJUaW1lQ2hh
bmdlZCh0aGlzKTsKIH0KIAordm9pZCBNZWRpYVBsYXllcjo6c2l6ZUNoYW5nZWQoKQoreworICAg
IGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5t
ZWRpYVBsYXllclNpemVDaGFuZ2VkKHRoaXMpOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpyZXBh
aW50KCkKIHsKICAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKICAgICAgICAgbV9tZWRpYVBs
YXllckNsaWVudC0+bWVkaWFQbGF5ZXJSZXBhaW50KHRoaXMpOwogfQogCit2b2lkIE1lZGlhUGxh
eWVyOjpkdXJhdGlvbkNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQor
ICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCh0
aGlzKTsKK30KKwordm9pZCBNZWRpYVBsYXllcjo6cmF0ZUNoYW5nZWQoKQoreworICAgIGlmICht
X21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllclJhdGVDaGFuZ2VkKHRoaXMpOworfQorCiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDQxNjU4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSAr
NTIsMzAgQEAgY2xhc3MgU3RyaW5nOwogY2xhc3MgTWVkaWFQbGF5ZXJDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyQ2xpZW50KCkgeyB9CisKKyAgICAvLyB0aGUgbmV0
d29yayBzdGF0ZSBoYXMgY2hhbmdlZAogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdv
cmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKworICAgIC8vIHRoZSByZWFkeSBzdGF0
ZSBoYXMgY2hhbmdlZAogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlYWR5U3RhdGVDaGFu
Z2VkKE1lZGlhUGxheWVyKikgeyB9CisKKyAgICAvLyB0aGUgdm9sdW1lIG9yIG11dGVkIHN0YXRl
IGhhcyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChN
ZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGltZSBoYXMganVtcGVkLCBlZy4gbm90IGFzIGEg
cmVzdWx0IG9mIG5vcm1hbCBwbGF5YmFjawogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclRp
bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgCisgICAgLy8gYSBuZXcgZnJhbWUgb2Yg
dmlkZW8gaXMgYXZhaWxhYmxlCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVwYWludChN
ZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGhlIG1lZGlhIGZpbGUgZHVyYXRpb24gaGFzIGNo
YW5nZWQsIG9yIGlzIG5vdyBrbm93bgorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckR1cmF0
aW9uQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorICAgIAorICAgIC8vIHRoZSBwbGF5YmFjayBy
YXRlIGhhcyBjaGFuZ2VkCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKSB7IH0KKworICAgIC8vIHRoZSBtb3ZpZSBzaXplIGhhcyBjaGFuZ2VkCisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSB7IH0K
IH07CiAKIGNsYXNzIE1lZGlhUGxheWVyIDogTm9uY29weWFibGUgewpAQCAtMTE1LDE2ICsxMzQs
MTkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYpOwogICAgIAotICAgIGVudW0gTmV0d29ya1N0YXRlIHsgRW1wdHksIExvYWRG
YWlsZWQsIExvYWRpbmcsIExvYWRlZE1ldGFEYXRhLCBMb2FkZWRGaXJzdEZyYW1lLCBMb2FkZWQg
fTsKKyAgICBlbnVtIE5ldHdvcmtTdGF0ZSB7IEVtcHR5LCBJZGxlLCBMb2FkaW5nLCBMb2FkZWQs
IEZvcm1hdEVycm9yLCBOZXR3b3JrRXJyb3IsIERlY29kZUVycm9yIH07CiAgICAgTmV0d29ya1N0
YXRlIG5ldHdvcmtTdGF0ZSgpOwogCi0gICAgZW51bSBSZWFkeVN0YXRlICB7IERhdGFVbmF2YWls
YWJsZSwgQ2FuU2hvd0N1cnJlbnRGcmFtZSwgQ2FuUGxheSwgQ2FuUGxheVRocm91Z2ggfTsKKyAg
ICBlbnVtIFJlYWR5U3RhdGUgIHsgSGF2ZU5vdGhpbmcsIEhhdmVNZXRhZGF0YSwgSGF2ZUN1cnJl
bnREYXRhLCBIYXZlRnV0dXJlRGF0YSwgSGF2ZUVub3VnaERhdGEgfTsKICAgICBSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKTsKICAgICAKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAg
ICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKCk7CiAg
ICAgdm9pZCB0aW1lQ2hhbmdlZCgpOworICAgIHZvaWQgc2l6ZUNoYW5nZWQoKTsKKyAgICB2b2lk
IHJhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKTsKIAogICAgIHZvaWQg
cmVwYWludCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDQx
NjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE0KICAgICAsIG1faXNFbmRSZWFjaGVkKGZh
bHNlKQogICAgICwgbV92b2x1bWUoMC41ZikKICAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxh
eWVyOjpFbXB0eSkKLSAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxh
YmxlKQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKICAgICAs
IG1fc3RhcnRlZFBsYXlpbmcoZmFsc2UpCiAgICAgLCBtX2lzU3RyZWFtaW5nKGZhbHNlKQogICAg
ICwgbV9zaXplKEludFNpemUoKSkKQEAgLTE1OCw4ICsxNTgsOCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpCiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6OkxvYWRpbmc7CiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7
CiAgICAgfQotICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWls
YWJsZSkgewotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxh
YmxlOworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKSB7
CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKICAgICAg
ICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC00NjYsMTIgKzQ2
NiwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAogICAgICAgICBpZiAo
c3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0g
R1NUX1NUQVRFX1BBVVNFRCkgewotICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkNhblBsYXlUaHJvdWdoOworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWQpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkxvYWRlZDsKIAogICAgICAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLCAic291cmNlIiwgJm1f
c291cmNlLCBOVUxMKTsKICAgICAgICAgaWYgKCFtX3NvdXJjZSkKQEAgLTQ4OSwxMiArNDg4LDEx
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLAogICAgICAgICAgICAgZ3N0X2VsZW1l
bnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NU
QVRFX1JFQURZKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2Fu
UGxheTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJl
RGF0YTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0g
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheTsKKyAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFE
YXRhKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0
YURhdGE7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAi
RWxzZSA6ICVkIiwgcmV0KTsKQEAgLTUwMiw3ICs1MDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6dXBkYXRlU3RhdGVzKCkKICAgICB9CiAKICAgICBpZiAoc2Vla2luZygpKQotICAgICAg
ICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAKICAgICBpZiAobV9uZXR3
b3JrU3RhdGUgIT0gb2xkTmV0d29ya1N0YXRlKSB7CiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlh
LCAiTmV0d29yayBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLApAQCAtNTUxLDEyICs1NDks
MTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCgpCiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjpsb2FkaW5nRmFpbGVkKCkKIHsKLSAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0g
TWVkaWFQbGF5ZXI6OkxvYWRGYWlsZWQpIHsKLSAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TG9hZEZhaWxlZDsKKyAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtFcnJvcikgeworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpOZXR3b3JrRXJyb3I7CiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7
CiAgICAgfQotICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWls
YWJsZSkgewotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxh
YmxlOworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKSB7
CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKICAgICAg
ICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oCShyZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDExICs4
OSwxMiBAQCBwcml2YXRlOgogICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CiAgICAgZmxvYXQg
Y3VycmVudFRpbWUoKSBjb25zdDsKICAgICB2b2lkIHNlZWsoZmxvYXQgdGltZSk7Ci0gICAgdm9p
ZCBzZXRFbmRUaW1lKGZsb2F0IHRpbWUpOwogICAgIAogICAgIHZvaWQgc2V0UmF0ZShmbG9hdCk7
CiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOwotICAgIAorCisgICAgdm9pZCBzZXRFbmRUaW1l
KGZsb2F0IHRpbWUpOworCiAgICAgaW50IGRhdGFSYXRlKCkgY29uc3Q7CiAgICAgCiAgICAgTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25l
dHdvcmtTdGF0ZTsgfQpAQCAtMTIzLDEyICsxMjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRv
U2VlaygpOwogICAgIHZvaWQgY2FuY2VsU2VlaygpOwogICAgIHZvaWQgc2Vla1RpbWVyRmlyZWQo
VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiopOwotICAgIHZvaWQgZW5kUG9pbnRUaW1lckZpcmVk
KFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4qKTsKICAgICBmbG9hdCBtYXhUaW1lTG9hZGVkKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgpOwotICAgIHZvaWQg
ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKHVuc2lnbmVkJiBlbmFibGVkVHJhY2tDb3VudCk7Cisg
ICAgdm9pZCBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoKTsKICAgICAKLSAgICBib29sIG1ldGFE
YXRhQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9xdE1vdmllICYmIG1fbmV0d29ya1N0YXRl
ID49IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YTsgfQorICAgIGJvb2wgbWV0YURhdGFBdmFp
bGFibGUoKSBjb25zdCB7IHJldHVybiBtX3F0TW92aWUgJiYgbV9yZWFkeVN0YXRlID49IE1lZGlh
UGxheWVyOjpIYXZlTWV0YWRhdGE7IH0KIAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKICAg
ICBSZXRhaW5QdHI8UVRNb3ZpZT4gbV9xdE1vdmllOwpAQCAtMTM2LDE1ICsxMzUsMTUgQEAgcHJp
dmF0ZToKICAgICBSZXRhaW5QdHI8UVRWaWRlb1JlbmRlcmVyV2ViS2l0T25seT4gbV9xdFZpZGVv
UmVuZGVyZXI7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVNb3ZpZU9ic2VydmVyPiBtX29iamNPYnNl
cnZlcjsKICAgICBmbG9hdCBtX3NlZWtUbzsKLSAgICBmbG9hdCBtX2VuZFRpbWU7CiAgICAgVGlt
ZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiBtX3NlZWtUaW1lcjsKLSAgICBUaW1lcjxNZWRpYVBsYXll
clByaXZhdGU+IG1fZW5kUG9pbnRUaW1lcjsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
IG1fbmV0d29ya1N0YXRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKICAgICBib29sIG1fc3RhcnRlZFBsYXlpbmc7CiAgICAgYm9vbCBtX2lzU3RyZWFtaW5nOwog
ICAgIGJvb2wgbV92aXNpYmxlOwogICAgIEludFJlY3QgbV9yZWN0OworICAgIHVuc2lnbmVkIG1f
ZW5hYmxlZFRyYWNrQ291bnQ7CisgICAgZmxvYXQgbV9kdXJhdGlvbjsKICNpZiBEUkFXX0ZSQU1F
X1JBVEUKICAgICBpbnQgIG1fZnJhbWVDb3VudFdoaWxlUGxheWluZzsKICAgICBkb3VibGUgbV90
aW1lU3RhcnRlZFBsYXlpbmc7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkocmV2aXNpb24gNDE2NTgp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDggKzE1Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGZsb2F0IGVuZFBvaW50
VGltZXJJbnRlcnZhbCA9IDAuMDIwZjsKLQogI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCiBzdGF0
aWMgY29uc3QgbG9uZyBtaW5pbXVtUXVpY2tUaW1lVmVyc2lvbiA9IDB4MDczMDAwMDA7IC8vIDcu
MwogI2VuZGlmCkBAIC0xNzksMTUgKzE3NywxNSBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZShNCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX29iamNPYnNl
cnZlcihBZG9wdE5TLCBbW1dlYkNvcmVNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxi
YWNrOnRoaXNdKQogICAgICwgbV9zZWVrVG8oLTEpCi0gICAgLCBtX2VuZFRpbWUobnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpKQogICAgICwgbV9zZWVrVGltZXIodGhpcywgJk1lZGlh
UGxheWVyUHJpdmF0ZTo6c2Vla1RpbWVyRmlyZWQpCi0gICAgLCBtX2VuZFBvaW50VGltZXIodGhp
cywgJk1lZGlhUGxheWVyUHJpdmF0ZTo6ZW5kUG9pbnRUaW1lckZpcmVkKQogICAgICwgbV9uZXR3
b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxh
eWVyOjpEYXRhVW5hdmFpbGFibGUpCisgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6Okhh
dmVOb3RoaW5nKQogICAgICwgbV9zdGFydGVkUGxheWluZyhmYWxzZSkKICAgICAsIG1faXNTdHJl
YW1pbmcoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX3JlY3QoKQorICAg
ICwgbV9lbmFibGVkVHJhY2tDb3VudCgwKQorICAgICwgbV9kdXJhdGlvbigtMS4wZikKICNpZiBE
UkFXX0ZSQU1FX1JBVEUKICAgICAsIG1fZnJhbWVDb3VudFdoaWxlUGxheWluZygwKQogICAgICwg
bV90aW1lU3RhcnRlZFBsYXlpbmcoMCkKQEAgLTQwNywxMiArNDA1LDExIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0cmkKICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBN
ZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5n
ZWQoKTsKICAgICB9Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6RGF0YVVu
YXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5h
dmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwog
ICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAgICAgY2FuY2Vs
U2VlaygpOwotICAgIG1fZW5kUG9pbnRUaW1lci5zdG9wKCk7CiAgICAgCiAgICAgW21fb2JqY09i
c2VydmVyLmdldCgpIHNldERlbGF5Q2FsbGJhY2tzOllFU107CiAKQEAgLTQzMyw3ICs0MzAsNiBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGxheSgpCiAgICAgW21fb2JqY09ic2VydmVyLmdl
dCgpIHNldERlbGF5Q2FsbGJhY2tzOllFU107CiAgICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRSYXRl
Om1fcGxheWVyLT5yYXRlKCldOwogICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXREZWxheUNh
bGxiYWNrczpOT107Ci0gICAgc3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnBhdXNlKCkKQEAgLTQ0Nyw3ICs0NDMsNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2UoKQogICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXRE
ZWxheUNhbGxiYWNrczpZRVNdOwogICAgIFttX3F0TW92aWUuZ2V0KCkgc3RvcF07CiAgICAgW21f
b2JqY09ic2VydmVyLmdldCgpIHNldERlbGF5Q2FsbGJhY2tzOk5PXTsKLSAgICBtX2VuZFBvaW50
VGltZXIuc3RvcCgpOwogfQogCiBmbG9hdCBNZWRpYVBsYXllclByaXZhdGU6OmR1cmF0aW9uKCkg
Y29uc3QKQEAgLTQ2NSw3ICs0NjAsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGU6OmN1cnJl
bnRUaW1lKCkgCiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICBRVFRpbWUgdGltZSA9IFttX3F0TW92aWUuZ2V0KCkgY3VycmVudFRpbWVdOwotICAg
IHJldHVybiBtaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbWUudGltZVZhbHVlKSAvIHRpbWUudGlt
ZVNjYWxlLCBtX2VuZFRpbWUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odGltZS50
aW1lVmFsdWUpIC8gdGltZS50aW1lU2NhbGU7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
OjpzZWVrKGZsb2F0IHRpbWUpCkBAIC00NzcsNyArNDcyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OnNlZWsoZmxvYXQgdGltZQogICAgIAogICAgIGlmICh0aW1lID4gZHVyYXRpb24oKSkK
ICAgICAgICAgdGltZSA9IGR1cmF0aW9uKCk7Ci0gICAgCisKICAgICBtX3NlZWtUbyA9IHRpbWU7
CiAgICAgaWYgKG1heFRpbWVMb2FkZWQoKSA+PSBtX3NlZWtUbykKICAgICAgICAgZG9TZWVrKCk7
CkBAIC00OTUsNyArNDkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmRvU2VlaygpIAog
ICAgIFttX3F0TW92aWUuZ2V0KCkgc2V0Q3VycmVudFRpbWU6cXR0aW1lXTsKICAgICBmbG9hdCB0
aW1lQWZ0ZXJTZWVrID0gY3VycmVudFRpbWUoKTsKICAgICAvLyByZXN0b3JlIHBsYXliYWNrIG9u
bHkgaWYgbm90IGF0IGVuZCwgb3RoZXdpc2UgUVRNb3ZpZSB3aWxsIGxvb3AKLSAgICBpZiAodGlt
ZUFmdGVyU2VlayA8IGR1cmF0aW9uKCkgJiYgdGltZUFmdGVyU2VlayA8IG1fZW5kVGltZSkKKyAg
ICBpZiAob2xkUmF0ZSAmJiB0aW1lQWZ0ZXJTZWVrIDwgZHVyYXRpb24oKSkKICAgICAgICAgW21f
cXRNb3ZpZS5nZXQoKSBzZXRSYXRlOm9sZFJhdGVdOwogICAgIGNhbmNlbFNlZWsoKTsKICAgICBb
bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6Tk9dOwpAQCAtNTI4LDI3ICs1
MjMsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2Vla1RpbWVyRmlyZWQoCiAgICAgfQog
fQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0RW5kVGltZShmbG9hdCB0aW1lKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnNldEVuZFRpbWUoZmxvYXQpCiB7Ci0gICAgbV9lbmRUaW1l
ID0gdGltZTsKLSAgICBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgpOwotfQotCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6c3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKQotewotICAgIGlm
IChtX2VuZFRpbWUgPCBkdXJhdGlvbigpICYmIG1fc3RhcnRlZFBsYXlpbmcgJiYgIW1fZW5kUG9p
bnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2VuZFBvaW50VGltZXIuc3RhcnRSZXBlYXRp
bmcoZW5kUG9pbnRUaW1lckludGVydmFsKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OmVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+KikKLXsKLSAgICBm
bG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsKLSAgICAKLSAgICAvLyBqdXN0IGRvIGVuZCBmb3Ig
bm93Ci0gICAgaWYgKHRpbWUgPj0gbV9lbmRUaW1lKSB7Ci0gICAgICAgIHBhdXNlKCk7Ci0gICAg
ICAgIGRpZEVuZCgpOwotICAgIH0KIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OnBhdXNl
ZCgpIGNvbnN0CkBAIC02NjAsNTEgKzYzNiw2MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
dXBkYXRlU3RhdGVzKCkKICAgICAKICAgICBsb25nIGxvYWRTdGF0ZSA9IG1fcXRNb3ZpZSA/IFtb
bV9xdE1vdmllLmdldCgpIGF0dHJpYnV0ZUZvcktleTpRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRl
XSBsb25nVmFsdWVdIDogc3RhdGljX2Nhc3Q8bG9uZz4oUVRNb3ZpZUxvYWRTdGF0ZUVycm9yKTsK
ICAgICAKLSAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQgJiYgbV9u
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEgJiYgIW1fcGxheWVyLT5p
bk1lZGlhRG9jdW1lbnQoKSkgewotICAgICAgICB1bnNpZ25lZCBlbmFibGVkVHJhY2tDb3VudDsK
LSAgICAgICAgZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKGVuYWJsZWRUcmFja0NvdW50KTsKLSAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9hZCBlcnJv
cnMgYW5kIGRlY29kZSBlcnJvcnMgPHJkYXI6Ly9wcm9ibGVtLzU2MDU2OTI+Ci0gICAgICAgIGlm
ICghZW5hYmxlZFRyYWNrQ291bnQpCisgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0
YXRlTG9hZGVkICYmIG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYg
IW1fcGxheWVyLT5pbk1lZGlhRG9jdW1lbnQoKSkgeworICAgICAgICBkaXNhYmxlVW5zdXBwb3J0
ZWRUcmFja3MoKTsKKyAgICAgICAgaWYgKCFtX2VuYWJsZWRUcmFja0NvdW50KQogICAgICAgICAg
ICAgbG9hZFN0YXRlID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwogICAgIH0KIAotICAgIC8vICJM
b2FkZWQiIGlzIHJlc2VydmVkIGZvciBmdWxseSBidWZmZXJlZCBtb3ZpZXMsIG5ldmVyIHRoZSBj
YXNlIHdoZW4gc3RyZWFtaW5nCiAgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRl
Q29tcGxldGUgJiYgIW1faXNTdHJlYW1pbmcpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRl
IDwgTWVkaWFQbGF5ZXI6OkxvYWRlZCkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRlZDsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkNh
blBsYXlUaHJvdWdoOworICAgICAgICAvLyAiTG9hZGVkIiBpcyByZXNlcnZlZCBmb3IgZnVsbHkg
YnVmZmVyZWQgbW92aWVzLCBuZXZlciB0aGUgY2FzZSB3aGVuIHN0cmVhbWluZworICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgICAgIG1fcmVhZHlTdGF0
ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICB9IGVsc2UgaWYgKGxvYWRTdGF0
ZSA+PSBRVE1vdmllTG9hZFN0YXRlUGxheXRocm91Z2hPSykgewotICAgICAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkRmlyc3RGcmFtZSAmJiAhc2Vla2luZygpKQot
ICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkRmlyc3RGcmFt
ZTsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkNhblBsYXlUaHJvdWdoOwor
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAg
fSBlbHNlIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZVBsYXlhYmxlKSB7Ci0gICAg
ICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYm
ICFzZWVraW5nKCkpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpM
b2FkZWRGaXJzdEZyYW1lOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3Qgd29yayBj
b3JyZWN0bHkgaW4gc3RyZWFtaW5nIGNhc2UsIDxyZGFyOi8vcHJvYmxlbS81NjkzOTY3PgotICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBjdXJyZW50VGltZSgpIDwgbWF4VGltZUxvYWRlZCgpID8gTWVk
aWFQbGF5ZXI6OkNhblBsYXkgOiBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAg
ICBtX3JlYWR5U3RhdGUgPSBjdXJyZW50VGltZSgpIDwgbWF4VGltZUxvYWRlZCgpID8gTWVkaWFQ
bGF5ZXI6OkhhdmVGdXR1cmVEYXRhIDogTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0YTsKICAg
ICB9IGVsc2UgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkKSB7Ci0gICAg
ICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkKLSAg
ICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOwot
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOwogICAgIH0gZWxz
ZSBpZiAobG9hZFN0YXRlID4gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0gICAgICAgIGlmICht
X25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkaW5nKQotICAgICAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsgICAgICAgIAorICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6SGF2ZU5vdGhpbmc7ICAgICAgICAKICAgICB9IGVsc2UgewotICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkOwotICAgICAgICBtX3JlYWR5U3Rh
dGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOyAKKyAgICAgICAgZmxvYXQgbG9hZGVk
ID0gbWF4VGltZUxvYWRlZCgpOworCisgICAgICAgIGlmICghbG9hZGVkKQorICAgICAgICAgICAg
bV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworCisgICAgICAgIGlmICgh
bV9lbmFibGVkVHJhY2tDb3VudCkKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6OkZvcm1hdEVycm9yOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGxvYWQvbmV0d29yayBlcnJvcnMgYW5k
IGRlY29kZSBlcnJvcnMgPHJkYXI6Ly9wcm9ibGVtLzU2MDU2OTI+CisgICAgICAgICAgICBpZiAo
bG9hZGVkID4gMCkKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpEZWNvZGVFcnJvcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoc2Vla2luZygpKQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0
YVVuYXZhaWxhYmxlOwotICAgIAorICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
SGF2ZU5vdGhpbmc7CisKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gb2xkTmV0d29ya1N0YXRl
KQogICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIGlmIChtX3Jl
YWR5U3RhdGUgIT0gb2xkUmVhZHlTdGF0ZSkKICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVD
aGFuZ2VkKCk7CiAKLSAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQg
JiYgb2xkTmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhICYmIG1fcGxh
eWVyLT52aXNpYmxlKCkpCisgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9h
ZGVkICYmIG9sZFJlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhICYmIG1fcGxh
eWVyLT52aXNpYmxlKCkpCiAgICAgICAgIHNldFVwVmlkZW9SZW5kZXJpbmcoKTsKKworICAgIGlm
IChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxvYWRlZCkgeworICAgICAgICBmbG9hdCBk
dXIgPSBkdXJhdGlvbigpOworICAgICAgICBpZiAoZHVyICE9IG1fZHVyYXRpb24pIHsKKyAgICAg
ICAgICAgIGlmIChtX2R1cmF0aW9uICE9IC0xLjBmKQorICAgICAgICAgICAgICAgIG1fcGxheWVy
LT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBkdXI7CisgICAg
ICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkU3RhdGVDaGFu
Z2VkKCkKQEAgLTcxNSwxMCArNzAyLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2Fk
U3RhdGVDaGFuZ2UKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpyYXRlQ2hhbmdlZCgpCiB7CiAg
ICAgdXBkYXRlU3RhdGVzKCk7CisgICAgbV9wbGF5ZXItPnJhdGVDaGFuZ2VkKCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzaXplQ2hhbmdlZCgpCiB7CisgICAgbV9wbGF5ZXItPnNp
emVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp0aW1lQ2hhbmdlZCgp
CkBAIC03MjksNyArNzE4LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnRpbWVDaGFuZ2Vk
KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmRpZEVuZCgpCiB7Ci0gICAgbV9lbmRQb2lu
dFRpbWVyLnN0b3AoKTsKICAgICBtX3N0YXJ0ZWRQbGF5aW5nID0gZmFsc2U7CiAjaWYgRFJBV19G
UkFNRV9SQVRFCiAgICAgbV90aW1lU3RvcHBlZFBsYXlpbmcgPSBbTlNEYXRlIHRpbWVJbnRlcnZh
bFNpbmNlUmVmZXJlbmNlRGF0ZV07CkBAIC03NjEsNyArNzQ5LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OnNldFZpc2libGUoYm9vbAogICAgIGlmIChtX3Zpc2libGUgIT0gYikgewogICAg
ICAgICBtX3Zpc2libGUgPSBiOwogICAgICAgICBpZiAoYikgewotICAgICAgICAgICAgaWYgKG1f
bmV0d29ya1N0YXRlID49IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkKKyAgICAgICAgICAg
IGlmIChtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSkKICAgICAgICAg
ICAgICAgICBzZXRVcFZpZGVvUmVuZGVyaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgdGVhckRvd25WaWRlb1JlbmRlcmluZygpOwpAQCAtOTA1LDEwICs4OTMsMTAgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGU6OmlzQXZhaWxhYmxlKCkKICNlbmRpZgogfQogICAgIAotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcyh1bnNpZ25lZCYgZW5h
YmxlZFRyYWNrQ291bnQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9y
dGVkVHJhY2tzKCkKIHsKICAgICBpZiAoIW1fcXRNb3ZpZSkgewotICAgICAgICBlbmFibGVkVHJh
Y2tDb3VudCA9IDA7CisgICAgICAgIG1fZW5hYmxlZFRyYWNrQ291bnQgPSAwOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIApAQCAtOTI3LDcgKzkxNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpkaXNhYmxlVW5zdXBwb3IKICAgICBOU0FycmF5ICp0cmFja3MgPSBbbV9xdE1vdmll
LmdldCgpIHRyYWNrc107CiAgICAgCiAgICAgdW5zaWduZWQgdHJhY2tDb3VudCA9IFt0cmFja3Mg
Y291bnRdOwotICAgIGVuYWJsZWRUcmFja0NvdW50ID0gdHJhY2tDb3VudDsKKyAgICBtX2VuYWJs
ZWRUcmFja0NvdW50ID0gdHJhY2tDb3VudDsKICAgICBmb3IgKHVuc2lnbmVkIHRyYWNrSW5kZXgg
PSAwOyB0cmFja0luZGV4IDwgdHJhY2tDb3VudDsgdHJhY2tJbmRleCsrKSB7CiAgICAgICAgIC8v
IEdyYWIgdGhlIHRyYWNrIGF0IHRoZSBjdXJyZW50IGluZGV4LiBJZiB0aGVyZSBpc24ndCBvbmUg
dGhlcmUsIHRoZW4KICAgICAgICAgLy8gd2UgY2FuIG1vdmUgb250byB0aGUgbmV4dCBvbmUuCkBA
IC05NTUsNyArOTQzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmRpc2FibGVVbnN1cHBv
cgogICAgICAgICBpZiAoIWFsbG93ZWRUcmFja1R5cGVzLT5jb250YWlucyhtZWRpYVR5cGUpKSB7
CiAgICAgICAgICAgICAvLyBJZiB0aGlzIHRyYWNrIHR5cGUgaXMgbm90IGFsbG93ZWQsIHRoZW4g
d2UgbmVlZCB0byBkaXNhYmxlIGl0LgogICAgICAgICAgICAgW3RyYWNrIHNldEVuYWJsZWQ6Tk9d
OwotICAgICAgICAgICAgLS1lbmFibGVkVHJhY2tDb3VudDsKKyAgICAgICAgICAgIC0tbV9lbmFi
bGVkVHJhY2tDb3VudDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGlzYWJsZSBj
aGFwdGVyIHRyYWNrcy4gVGhlc2UgYXJlIG1vc3QgbGlrZWx5IHRvIGxlYWQgdG8gdHJvdWJsZSwg
YXMKQEAgLTk4Nyw3ICs5NzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVu
c3VwcG9yCiAgICAgICAgIAogICAgICAgICAvLyBEaXNhYmxlIHRoZSBldmlsLCBldmlsIHRyYWNr
LgogICAgICAgICBbY2hhcHRlclRyYWNrIHNldEVuYWJsZWQ6Tk9dOwotICAgICAgICAtLWVuYWJs
ZWRUcmFja0NvdW50OworICAgICAgICAtLW1fZW5hYmxlZFRyYWNrQ291bnQ7CiAgICAgfQogfQog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBo
b25vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRp
YVBsYXllclByaXZhdGVQaG9ub24uY3BwCShyZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBNZWRpYVBsYXllclBy
aXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9w
bGF5ZXIocGxheWVyKQogICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQot
ICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpCisgICAgLCBt
X3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQogICAgICwgbV9tZWRpYU9iamVj
dChuZXcgTWVkaWFPYmplY3QoKSkKICAgICAsIG1fdmlkZW9XaWRnZXQobmV3IFZpZGVvV2lkZ2V0
KDApKQogICAgICwgbV9hdWRpb091dHB1dChuZXcgQXVkaW9PdXRwdXQoKSkKQEAgLTE2OSw4ICsx
NjksOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpCiAgICAgfQog
CiAgICAgLy8gQW5kIHdlIGRvbid0IGhhdmUgYW55IGRhdGEgeWV0Ci0gICAgaWYgKG1fcmVhZHlT
dGF0ZSAhPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0
ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNo
YW5nZWQoKTsKICAgICB9CiAKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZTo6c2Vla2luZygpIGNvbnN0CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6ZHVyYXRp
b24oKSBjb25zdAogewotICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2Fk
ZWRNZXRhRGF0YSkKKyAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRh
ZGF0YSkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVk
aWFPYmplY3QtPnRvdGFsVGltZSgpIC8gMTAwMC4wZjsKQEAgLTMyOSwxOCArMzI5LDE5IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgIFBob25vbjo6U3RhdGUg
cGhvbm9uU3RhdGUgPSBtX21lZGlhT2JqZWN0LT5zdGF0ZSgpOwogCiAgICAgaWYgKHBob25vblN0
YXRlID09IFBob25vbjo6U3RvcHBlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChvbGROZXR3b3JrU3Rh
dGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEpIHsKLSAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOwotICAgICAgICAgICAgbV9yZWFk
eVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICAgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEpIHsKKyAgICAgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7IC8vIEZJWE1FOiBzaG91bGQgdGhpcyBi
ZSBNZWRpYVBsYXllcjo6SWRsZT8KKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpIYXZlTWV0YWRhdGE7CiAgICAgICAgICAgICBtX21lZGlhT2JqZWN0LT5wYXVzZSgpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChwaG9ub25TdGF0ZSA9PSBQaG9ub246OlBhdXNlZFN0
YXRlKSB7CiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKLSAg
ICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkNhblBsYXlUaHJvdWdoOworICAgICAg
ICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgfSBlbHNl
IGlmIChwaG9ub25TdGF0ZSA9PSBQaG9ub246OkVycm9yU3RhdGUpIHsKICAgICAgICAgIGlmICgh
bV9tZWRpYU9iamVjdCB8fCBtX21lZGlhT2JqZWN0LT5lcnJvclR5cGUoKSA9PSBQaG9ub246OkZh
dGFsRXJyb3IpIHsKLSAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpM
b2FkRmFpbGVkOwotICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRh
VW5hdmFpbGFibGU7CisgICAgICAgICAgICAgLy8gRklYTUU6IGlzIGl0IHBvc3NpbGUgdG8gZGlm
ZmVyZW50aWF0ZSBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBlcnJvcnMKKyAgICAgICAgICAg
ICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrRXJyb3I7CisgICAgICAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgICAgICAgICAg
IGNhbmNlbExvYWQoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgbV9tZWRpYU9i
amVjdC0+cGF1c2UoKTsKQEAgLTM0OCw3ICszNDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6dXBkYXRlU3RhdGVzKCkKICAgICB9CiAKICAgICBpZiAoc2Vla2luZygpKQotICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAKICAgICBpZiAobV9uZXR3b3Jr
U3RhdGUgIT0gb2xkTmV0d29ya1N0YXRlKSB7CiAgICAgICAgIGNvbnN0IFFNZXRhT2JqZWN0KiBt
ZXRhT2JqID0gdGhpcy0+bWV0YU9iamVjdCgpOwpAQCAtMzk5LDcgKzQwMCw3IEBAIEludFNpemUg
TWVkaWFQbGF5ZXJQcml2YXRlOjpuYXR1cmFsU2l6ZSgKICAgICAgICAgcmV0dXJuIEludFNpemUo
KTsKICAgICB9CiAKLSAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVk
TWV0YURhdGEpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRh
ZGF0YSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVQaG9ub246Om5h
dHVyYWxTaXplKCkgLT4gJWR4JWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7
CiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBob25vbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmgJKHJldmlzaW9u
IDQxNjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZh
dGVQaG9ub24uaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTkgKzUyLDIxIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUV9FTlVNUyhSZWFkeVN0YXRlIE5ldHdvcmtTdGF0ZSBQaG9ub25T
dGF0ZSkKIAogICAgICAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICAgICAgRGF0YVVuYXZh
aWxhYmxlLAotICAgICAgICAgICAgQ2FuU2hvd0N1cnJlbnRGcmFtZSwKLSAgICAgICAgICAgIENh
blBsYXksCi0gICAgICAgICAgICBDYW5QbGF5VGhyb3VnaAorICAgICAgICAgICAgSGF2ZU5vdGhp
bmcsIAorICAgICAgICAgICAgSGF2ZU1ldGFkYXRhLCAKKyAgICAgICAgICAgIEhhdmVDdXJyZW50
RGF0YSwgCisgICAgICAgICAgICBIYXZlRnV0dXJlRGF0YSwgCisgICAgICAgICAgICBIYXZlRW5v
dWdoRGF0YQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gTmV0d29ya1N0YXRlIHsKLSAgICAg
ICAgICAgIEVtcHR5LAotICAgICAgICAgICAgTG9hZEZhaWxlZCwKLSAgICAgICAgICAgIExvYWRp
bmcsCi0gICAgICAgICAgICBMb2FkZWRNZXRhRGF0YSwKLSAgICAgICAgICAgIExvYWRlZEZpcnN0
RnJhbWUsCi0gICAgICAgICAgICBMb2FkZWQKKyAgICAgICAgICAgIEVtcHR5LCAKKyAgICAgICAg
ICAgIElkbGUsIAorICAgICAgICAgICAgTG9hZGluZywgCisgICAgICAgICAgICBMb2FkZWQsIAor
ICAgICAgICAgICAgRm9ybWF0RXJyb3IsIAorICAgICAgICAgICAgTmV0d29ya0Vycm9yLCAKKyAg
ICAgICAgICAgIERlY29kZUVycm9yCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBQaG9ub25T
dGF0ZSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAJKHJldmlzaW9uIDQx
NjU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTYgKzYyLDE0IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpyZWdpc3Rlck1lZGlhRW4KICAgICAgICAgcmVnaXN0cmFyKGNy
ZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSk7CiB9CiAKLXN0YXRpYyBjb25z
dCBkb3VibGUgZW5kUG9pbnRUaW1lckludGVydmFsID0gMC4wMjA7Ci0KIE1lZGlhUGxheWVyUHJp
dmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBtX3Bs
YXllcihwbGF5ZXIpCiAgICAgLCBtX3NlZWtUbygtMSkKICAgICAsIG1fZW5kVGltZShudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkpCiAgICAgLCBtX3NlZWtUaW1lcih0aGlzLCAmTWVk
aWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCkKLSAgICAsIG1fZW5kUG9pbnRUaW1lcih0
aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRpbWVyRmlyZWQpCiAgICAgLCBtX25l
dHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OkRhdGFVbmF2YWlsYWJsZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
SGF2ZU5vdGhpbmcpCisgICAgLCBtX2VuYWJsZWRUcmFja0NvdW50KDApCiAgICAgLCBtX3N0YXJ0
ZWRQbGF5aW5nKGZhbHNlKQogICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKICNpZiBEUkFXX0ZS
QU1FX1JBVEUKQEAgLTg5LDcgKzg3LDggQEAgTWVkaWFQbGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5
ZXJQcml2YXRlKAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWQoY29uc3QgU3RyaW5nJiB1
cmwpCiB7CiAgICAgaWYgKCFRVE1vdmllV2luOjppbml0aWFsaXplUXVpY2tUaW1lKCkpIHsKLSAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZEZhaWxlZDsKKyAgICAgICAg
Ly8gRklYTUU6IGlzIHRoaXMgdGhlIHJpZ2h0IGVycm9yIHRvIHJldHVybj8KKyAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6RGVjb2RlRXJyb3I7IAogICAgICAgICBtX3BsYXll
ci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTgs
MTIgKzk3LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0cmkKICAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICAgICAgbV9w
bGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB9Ci0gICAgaWYgKG1fcmVhZHlTdGF0
ZSAhPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0
ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAh
PSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5n
ZWQoKTsKICAgICB9CiAgICAgY2FuY2VsU2VlaygpOwotICAgIG1fZW5kUG9pbnRUaW1lci5zdG9w
KCk7CiAKICAgICBtX3F0TW92aWUuc2V0KG5ldyBRVE1vdmllV2luKHRoaXMpKTsKICAgICBtX3F0
TW92aWUtPmxvYWQodXJsLmNoYXJhY3RlcnMoKSwgdXJsLmxlbmd0aCgpKTsKQEAgLTEyMSw3ICsx
MTksNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGxheSgpCiAjZW5kaWYKIAogICAgIG1f
cXRNb3ZpZS0+cGxheSgpOwotICAgIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZSgpCkBAIC0xMzMsNyArMTMwLDYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnBhdXNlKCkKICAgICBtX3RpbWVTdG9wcGVkUGxheWluZyA9
IEdldFRpY2tDb3VudCgpOwogI2VuZGlmCiAgICAgbV9xdE1vdmllLT5wYXVzZSgpOwotICAgIG1f
ZW5kUG9pbnRUaW1lci5zdG9wKCk7CiB9CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6ZHVy
YXRpb24oKSBjb25zdApAQCAtMjA5LDIyICsyMDUsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6c2Vla1RpbWVyRmlyZWQoCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0RW5kVGltZShm
bG9hdCB0aW1lKQogewogICAgIG1fZW5kVGltZSA9IHRpbWU7Ci0gICAgc3RhcnRFbmRQb2ludFRp
bWVySWZOZWVkZWQoKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnN0YXJ0RW5kUG9p
bnRUaW1lcklmTmVlZGVkKCkKLXsKLSAgICBpZiAobV9lbmRUaW1lIDwgZHVyYXRpb24oKSAmJiBt
X3N0YXJ0ZWRQbGF5aW5nICYmICFtX2VuZFBvaW50VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAg
bV9lbmRQb2ludFRpbWVyLnN0YXJ0UmVwZWF0aW5nKGVuZFBvaW50VGltZXJJbnRlcnZhbCk7Ci19
Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRpbWVyRmlyZWQoVGltZXI8TWVk
aWFQbGF5ZXJQcml2YXRlPiopCi17Ci0gICAgZmxvYXQgdGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0g
ICAgaWYgKHRpbWUgPj0gbV9lbmRUaW1lKSB7Ci0gICAgICAgIHBhdXNlKCk7Ci0gICAgICAgIGRp
ZEVuZCgpOwotICAgIH0KIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OnBhdXNlZCgpIGNv
bnN0CkBAIC0zMzksNDIgKzMxOSw0NCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRl
U3RhdGVzKCkKICAgCiAgICAgbG9uZyBsb2FkU3RhdGUgPSBtX3F0TW92aWUgPyBtX3F0TW92aWUt
PmxvYWRTdGF0ZSgpIDogUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwogCi0gICAgaWYgKGxvYWRTdGF0
ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkICYmIG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5
ZXI6OkxvYWRlZE1ldGFEYXRhICYmICFtX3BsYXllci0+aW5NZWRpYURvY3VtZW50KCkpIHsKLSAg
ICAgICAgdW5zaWduZWQgZW5hYmxlZFRyYWNrQ291bnQ7Ci0gICAgICAgIG1fcXRNb3ZpZS0+ZGlz
YWJsZVVuc3VwcG9ydGVkVHJhY2tzKGVuYWJsZWRUcmFja0NvdW50KTsKLSAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9hZCBlcnJvcnMgYW5kIGRlY29k
ZSBlcnJvcnMgPHJkYXI6Ly9wcm9ibGVtLzU2MDU2OTI+Ci0gICAgICAgIGlmICghZW5hYmxlZFRy
YWNrQ291bnQpCisgICAgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkICYm
IG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYgIW1fcGxheWVyLT5p
bk1lZGlhRG9jdW1lbnQoKSkgeworICAgICAgICBtX3F0TW92aWUtPmRpc2FibGVVbnN1cHBvcnRl
ZFRyYWNrcyhtX2VuYWJsZWRUcmFja0NvdW50KTsKKyAgICAgICAgaWYgKCFtX2VuYWJsZWRUcmFj
a0NvdW50KQogICAgICAgICAgICAgbG9hZFN0YXRlID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwog
ICAgIH0KIAogICAgIC8vICJMb2FkZWQiIGlzIHJlc2VydmVkIGZvciBmdWxseSBidWZmZXJlZCBt
b3ZpZXMsIG5ldmVyIHRoZSBjYXNlIHdoZW4gc3RyZWFtaW5nCiAgICAgaWYgKGxvYWRTdGF0ZSA+
PSBRVE1vdmllTG9hZFN0YXRlQ29tcGxldGUgJiYgIW1faXNTdHJlYW1pbmcpIHsKLSAgICAgICAg
aWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZCkKLSAgICAgICAgICAgIG1f
bmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKLSAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkNhblBsYXlUaHJvdWdoOworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9
IE1lZGlhUGxheWVyOjpMb2FkZWQ7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVy
OjpIYXZlRW5vdWdoRGF0YTsKICAgICB9IGVsc2UgaWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9h
ZFN0YXRlUGxheXRocm91Z2hPSykgewotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRp
YVBsYXllcjo6TG9hZGVkRmlyc3RGcmFtZSAmJiAhc2Vla2luZygpKQotICAgICAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkRmlyc3RGcmFtZTsKLSAgICAgICAgbV9y
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkNhblBsYXlUaHJvdWdoOworICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgfSBlbHNlIGlmIChsb2Fk
U3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZVBsYXlhYmxlKSB7Ci0gICAgICAgIGlmIChtX25ldHdv
cmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFzZWVraW5nKCkpCi0g
ICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1l
OwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBjdXJyZW50VGltZSgpIDwgbWF4VGltZUxvYWRlZCgp
ID8gTWVkaWFQbGF5ZXI6OkNhblBsYXkgOiBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOwor
ICAgICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3Qgd29yayBjb3JyZWN0bHkgaW4gc3RyZWFt
aW5nIGNhc2UsIDxyZGFyOi8vcHJvYmxlbS81NjkzOTY3PgorICAgICAgICBtX3JlYWR5U3RhdGUg
PSBjdXJyZW50VGltZSgpIDwgbWF4VGltZUxvYWRlZCgpID8gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1
cmVEYXRhIDogTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0YTsKICAgICB9IGVsc2UgaWYgKGxv
YWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkKSB7Ci0gICAgICAgIGlmIChtX25ldHdv
cmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkKLSAgICAgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOwotICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAgICBtX3JlYWR5U3Rh
dGUgPSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRl
ID4gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8
IE1lZGlhUGxheWVyOjpMb2FkaW5nKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TG9hZGluZzsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRh
dGFVbmF2YWlsYWJsZTsgICAgICAgIAorICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpMb2FkaW5nOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5v
dGhpbmc7ICAgICAgICAKICAgICB9IGVsc2UgewotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkRmFpbGVkOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6RGF0YVVuYXZhaWxhYmxlOyAKKyAgICAgICAgZmxvYXQgbG9hZGVkID0gbWF4VGltZUxvYWRl
ZCgpOworICAgICAgICBpZiAoIWxvYWRlZCkKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKworICAgICAgICBpZiAoIW1fZW5hYmxlZFRyYWNrQ291
bnQpCisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJv
cjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpZmZl
cmVudGlhdGUgYmV0d2VlbiBsb2FkL25ldHdvcmsgZXJyb3JzIGFuZCBkZWNvZGUgZXJyb3JzIDxy
ZGFyOi8vcHJvYmxlbS81NjA1NjkyPgorICAgICAgICAgICAgaWYgKGxvYWRlZCA+IDApCisgICAg
ICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6RGVjb2RlRXJyb3I7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHNlZWtpbmcoKSkK
LSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAg
ICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgIAogICAg
IGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpCiAgICAgICAgIG1fcGxheWVy
LT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC0zODUsNyArMzY3LDYgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpk
aWRFbmQoKQogewotICAgIG1fZW5kUG9pbnRUaW1lci5zdG9wKCk7CiAgICAgbV9zdGFydGVkUGxh
eWluZyA9IGZhbHNlOwogI2lmIERSQVdfRlJBTUVfUkFURQogICAgIG1fdGltZVN0b3BwZWRQbGF5
aW5nID0gR2V0VGlja0NvdW50KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uaAko
cmV2aXNpb24gNDE2NTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtOTcsOSArOTcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZG9TZWVrKCk7CiAgICAgdm9pZCBjYW5jZWxTZWVrKCk7CiAg
ICAgdm9pZCBzZWVrVGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7Ci0gICAg
dm9pZCBlbmRQb2ludFRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiopOwogICAg
IGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdDsKLSAgICB2b2lkIHN0YXJ0RW5kUG9pbnRUaW1l
cklmTmVlZGVkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbW92aWVFbmRlZChRVE1vdmllV2luKik7
CiAgICAgdmlydHVhbCB2b2lkIG1vdmllTG9hZFN0YXRlQ2hhbmdlZChRVE1vdmllV2luKik7CkBA
IC0xMTcsOSArMTE1LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3NlZWtUbzsKICAgICBmbG9h
dCBtX2VuZFRpbWU7CiAgICAgVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiBtX3NlZWtUaW1lcjsK
LSAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG1fZW5kUG9pbnRUaW1lcjsKICAgICBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlOwogICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICB1bnNpZ25lZCBtX2VuYWJsZWRUcmFja0NvdW50
OwogICAgIGJvb2wgbV9zdGFydGVkUGxheWluZzsKICAgICBib29sIG1faXNTdHJlYW1pbmc7CiAj
aWYgRFJBV19GUkFNRV9SQVRFCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCShyZXZpc2lvbiA0MTY1OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY1LDggKzE2NSw3IEBAIE1lZGlh
Q29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnQKIHZvaWQgTWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3Rh
dGUoZWMpOworICAgICAgICBtX21lZGlhRWxlbWVudC0+dG9nZ2xlUGxheVN0YXRlKCk7CiAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTE5MCw4ICsxODksNyBAQCB2b2lk
IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpkZWZhCiAgICAgICAgICAgICBtX2NhcHR1
cmluZyA9IHRydWU7CiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1
cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsKICAgICAgICAgfQotICAgICAgICBFeGNlcHRpb25D
b2RlIGVjOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UoZWMpOworICAgICAgICBtX21l
ZGlhRWxlbWVudC0+cGF1c2UoKTsKICAgICAgICAgbV9zZWVrVGltZXIuc3RhcnRSZXBlYXRpbmco
Y1NlZWtSZXBlYXREZWxheSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MTY5MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDA5LTAzLTEzICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0NTg4CisgICAgICAgIEJ1ZyAyNDU4ODogVXBkYXRlIG1lZGlhIGVsZW1lbnQg
aW1wbGVtZW50YXRpb24gdG8gY3VycmVudCBzcGVjCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1j
b25zdGFudHMtZXhwZWN0ZWQudHh0OiBUZXN0IGFsbCBtZWRpYSBjb25zdGFudHMuCisgICAgICAg
ICogbWVkaWEvbWVkaWEtY29uc3RhbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3Jl
bW92ZS1mcm9tLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogVXBkYXRlZCBmb3Igc3BlYyBjaGFuZ2Vz
LgorICAgICAgICAqIG1lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LW5vLWxvYWQuaHRtbDogRGl0
dG8uCisgICAgICAgICogbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQuaHRtbDogRGl0dG8uCisg
ICAgICAgICogbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1leHBlY3RlZC50eHQ6IERpdHRvLgorICAg
ICAgICAqIG1lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVk
aWEvdmlkZW8tY3VycmVudFRpbWUtc2V0LWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICog
bWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLWVycm9yLWFib3J0LWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEv
dmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC5odG1sOiBEaXR0by4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAg
ICAgICAqIG1lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLmh0bWw6IERpdHRvLgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAg
ICAgICAqIG1lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS5odG1sOiBEaXR0by4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1sb29wLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEv
dmlkZW8tbG9vcC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1wYXVzZS1lbXB0
eS1ldmVudHMtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1wYXVz
ZS1lbXB0eS1ldmVudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tcGxheS1l
bXB0eS1ldmVudHMtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1w
bGF5LWVtcHR5LWV2ZW50cy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1wbGF5
LXBhdXNlLWV2ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVv
LXBsYXktcGF1c2UtZXZlbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBs
YXktcGF1c2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEv
dmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24uaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEv
dmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogVGVzdCB0aGF0IHNlZWtp
bmcgCisgICAgICAgIHdoZW5lIHRoZXJlIGlzIG5vICdzcmMnIGF0dHJpYnV0ZSB0aHJvd3MgYW4g
SU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWst
bm8tc3JjLWV4Y2VwdGlvbi5odG1sOiAKKyAgICAgICAgKiBtZWRpYS92aWRlby1zZWVrLXBhc3Qt
ZW5kLXBsYXlpbmctZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1z
ZWVrLXBhc3QtZW5kLXBsYXlpbmcuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8t
c2Vla2luZy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWtp
bmcuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tc291cmNlLWFkZC1zcmMtZXhw
ZWN0ZWQudHh0OiBUZXN0IHRoYXQgYWRkaW5nIGEgJ3NyYycgCisgICAgICAgIGF0dHJpYnV0ZSBk
b2VzIG5vdGhpbmcgd2hlbiBhIDxzb3VyY2U+IGVsZW1lbnQgaGFzIGFscmVhZHkgYmVlbiBjaG9z
ZW4uCisgICAgICAgICogbWVkaWEvdmlkZW8tc291cmNlLWFkZC1zcmMuaHRtbDogCisgICAgICAg
ICogbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAq
IG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlk
ZW8tc3JjLWludmFsaWQtcmVtb3ZlLWV4cGVjdGVkLnR4dDogVGVzdCB0aGF0IHJlbW92aW5nIGlu
dmFsaWQgCisgICAgICAgICdzcmMnIGF0dHJpYnV0ZSB0cmlnZ2VycyA8c291cmNlPiBlbGVtZW50
cyBsb2FkaW5nLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS5odG1s
OiAKKyAgICAgICAgKiBtZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UtZXhwZWN0ZWQudHh0OiBU
ZXN0IHRoYXQgYSA8c291cmNlPiBlbGVtZW50IAorICAgICAgICBpcyBub3QgdXNlZCB3aGVuIGEg
Ym9ndXMgJ3NyYycgYXR0cmlidXRlIGlzIHByZXNlbnQuCisgICAgICAgICogbWVkaWEvdmlkZW8t
c3JjLXBsdXMtc291cmNlLmh0bWw6IAorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1yZW1vdmUt
ZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zcmMtcmVtb3ZlLmh0
bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRlc3QuanM6IAorICAgICAgICAoZmlu
ZE1lZGlhRWxlbWVudCk6CisgICAgICAgICh0ZXN0RXhwZWN0ZWQpOgorICAgICAgICAod2FpdEZv
ckV2ZW50KToKKyAgICAgICAgKGZhaWxUZXN0KToKKyAgICAgICAgKiBtZWRpYS92aWRlby10aW1l
dXBkYXRlLXdoaWxlLXBsYXlpbmctZXhwZWN0ZWQudHh0OiBUZXN0ICd0aW1ldXBkYXRlJyBldmVu
dHMKKyAgICAgICAgYXJlIHBvc3RlZCBhbiBlbGVtZW50IGlzIHBsYXlpbmcgYnV0IG5vdCB3aGls
ZSBwYXVzZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS13aGlsZS1wbGF5aW5n
Lmh0bWw6CisKIDIwMDktMDMtMTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L21lZGlhLWNvbnN0YW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29uc3RhbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnN0YW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjAgQEAKK1Rlc3QgSFRNTE1lZGlhRWxlbWVudCBhbmQgTWVkaWFFcnJvciBjb25z
dGFudHMuCisKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkgPT0gJzAn
KSBPSworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19JRExFID09ICcxJykgT0sK
K0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BRElORyA9PSAnMicpIE9LCitF
WFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURFRCA9PSAnMycpIE9LCitFWFBF
Q1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NPVVJDRSA9PSAnNCcpIE9LCisKK0VY
UEVDVEVEIChIVE1MTWVkaWFFbGVtZW50LkhBVkVfTk9USElORyA9PSAnMCcpIE9LCitFWFBFQ1RF
RCAoSFRNTE1lZGlhRWxlbWVudC5IQVZFX01FVEFEQVRBID09ICcxJykgT0sKK0VYUEVDVEVEIChI
VE1MTWVkaWFFbGVtZW50LkhBVkVfQ1VSUkVOVF9EQVRBID09ICcyJykgT0sKK0VYUEVDVEVEIChI
VE1MTWVkaWFFbGVtZW50LkhBVkVfRlVUVVJFX0RBVEEgPT0gJzMnKSBPSworRVhQRUNURUQgKEhU
TUxNZWRpYUVsZW1lbnQuSEFWRV9FTk9VR0hfREFUQSA9PSAnNCcpIE9LCisKK0VYUEVDVEVEIChN
ZWRpYUVycm9yLk1FRElBX0VSUl9BQk9SVEVEID09ICcxJykgT0sKK0VYUEVDVEVEIChNZWRpYUVy
cm9yLk1FRElBX0VSUl9ORVRXT1JLID09ICcyJykgT0sKK0VYUEVDVEVEIChNZWRpYUVycm9yLk1F
RElBX0VSUl9ERUNPREUgPT0gJzMnKSBPSworRVhQRUNURUQgKE1lZGlhRXJyb3IuTUVESUFfRVJS
X05PTkVfU1VQUE9SVEVEID09ICc0JykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL21lZGlhLWNvbnN0YW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL21lZGlhLWNvbnN0YW50cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtY29uc3RhbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAK
KworPHA+VGVzdCBIVE1MTWVkaWFFbGVtZW50IGFuZCBNZWRpYUVycm9yIGNvbnN0YW50cy48L3A+
CisKKzxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisgICAg
CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkiLCAwKTsK
KyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19JRExFIiwgMSk7Cisg
ICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BRElORyIsIDIpOwor
ICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURFRCIsIDMpOwor
ICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NPVVJDRSIsIDQp
OworICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVs
ZW1lbnQuSEFWRV9OT1RISU5HIiwgMCk7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVt
ZW50LkhBVkVfTUVUQURBVEEiLCAxKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1l
bnQuSEFWRV9DVVJSRU5UX0RBVEEiLCAyKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVs
ZW1lbnQuSEFWRV9GVVRVUkVfREFUQSIsIDMpOworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlh
RWxlbWVudC5IQVZFX0VOT1VHSF9EQVRBIiwgNCk7CisgICAgY29uc29sZVdyaXRlKCIiKTsKKwor
ICAgIHRlc3RFeHBlY3RlZCgiTWVkaWFFcnJvci5NRURJQV9FUlJfQUJPUlRFRCIsIDEpOworICAg
IHRlc3RFeHBlY3RlZCgiTWVkaWFFcnJvci5NRURJQV9FUlJfTkVUV09SSyIsIDIpOworICAgIHRl
c3RFeHBlY3RlZCgiTWVkaWFFcnJvci5NRURJQV9FUlJfREVDT0RFIiwgMyk7CisgICAgdGVzdEV4
cGVjdGVkKCJNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCIsIDQpOworCisKKyAg
ICBlbmRUZXN0KCk7Cis8L3NjcmlwdD4KKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3Zl
LWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIFRlc3QgdGhhdCByZW1vdmluZyBhIG1lZGlh
IGVsZW1lbnQgZnJvbSB0aGUgdHJlZSBwYXVzZXMgcGxheWJhY2sgYnV0IGRvZXMgbm90IHVubG9h
ZCB0aGUgbWVkaWEuCiAKIEVWRU5UKGxvYWQpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRl
ID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzMnKSBPSwogRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwogUlVOKGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQodmlkZW8pKQotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9L
CitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICczJykgT0sKIEVYUEVDVEVEICh2aWRl
by5wYXVzZWQgPT0gJ3RydWUnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9hZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LW5vLWxvYWQuaHRtbAkocmV2aXNp
b24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1uby1s
b2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAgICAgZGlkUmVjZWl2ZUxv
YWRTdGFydEV2ZW50ID0gZmFsc2U7CiAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZHN0
YXJ0JywgZnVuY3Rpb24oKSB7IGRpZFJlY2VpdmVMb2FkU3RhcnRFdmVudCA9IHRydWU7IH0pOwog
ICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLSAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFkpOworICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZ
KTsKICAgICBydW4oImRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodmlkZW8pIik7CiAgICAgdGVz
dEV4cGVjdGVkKCJkaWRSZWNlaXZlTG9hZFN0YXJ0RXZlbnQiLCBmYWxzZSk7CiAgICAgZW5kVGVz
dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC5odG1s
CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3Vt
ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAKLTx2aWRlbyBjb250cm9s
cz48L3ZpZGVvPgorPHZpZGVvIGNvbnRyb2xzIGF1dG9wbGF5PjwvdmlkZW8+CiA8cD5UZXN0IHRo
YXQgcmVtb3ZpbmcgYSBtZWRpYSBlbGVtZW50IGZyb20gdGhlIHRyZWUgcGF1c2VzIHBsYXliYWNr
IGJ1dCBkb2VzIG5vdCB1bmxvYWQgdGhlIG1lZGlhLjwvcD4KIDxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIHdhaXRGb3JFdmVudCgnbG9hZCcsIGZ1bmN0
aW9uICgpIHsKIAotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhU
TUxNZWRpYUVsZW1lbnQuTE9BREVEKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3
b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfTE9BREVEKTsKICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7CiAKICAgICAgICAgcnVuKCJkb2N1bWVu
dC5ib2R5LnJlbW92ZUNoaWxkKHZpZGVvKSIpOwogCi0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5MT0FERUQpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19M
T0FERUQpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIHRydWUpOwogCiAg
ICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwpAQCAtMTcsNSArMTcsNCBAQAogICAgIH0g
KTsKIAogdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwotdmlkZW8ucGxheSgpOwogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBv
cnRlZC1ydHNwLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAgVGVz
dCB0aGF0IFF1aWNrVGltZSBmaWxlIHdpdGggUlRTUCBVUkwgZwogCiBFVkVOVChlcnJvcikKIEVY
UEVDVEVEICh2aWRlby5lcnJvciAhPSAnbnVsbCcpIE9LCi1FWFBFQ1RFRCAodmlkZW8uZXJyb3Iu
Y29kZSA9PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnNCcpIE9LCitF
WFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICc0JykgT0sKIEVORCBPRiBURVNUCiAKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3AuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLmh0bWwJKHJldmlzaW9uIDQxNjU4
KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICsxLDE1IEBACisKIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgorCiA8cD5U
ZXN0IHRoYXQgUXVpY2tUaW1lIGZpbGUgd2l0aCBSVFNQIFVSTCBnZW5lcmF0ZXMgYSBsb2FkIGVy
cm9yLjxwPgorCiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4K
LXZpZGVvLnNyYyA9ICJydHNwOi8vYTIwNDcudjE0MTFiLmMxNDExLmcudnEuYWthbWFpc3RyZWFt
Lm5ldC81LzIwNDcvMTQxMS8yX2gyNjRfNjUwLzFhMWExYWU0NTRjNDMwOTUwMDY1ZGU0Y2JiMmY5
NGMyMjY5NTBjN2FlNjU1YjYxYTQ4YTkxNDc1ZTI0M2FjZGEzZGFjMTk0ODc5YWRkZTBmL3d3ZGNf
MjAwNl8yXzY1MC5tb3YiOwotd2FpdEZvckV2ZW50KCJlcnJvciIsIGZ1bmN0aW9uICgpIHsKLSAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yIiwgbnVsbCwgIiE9Iik7Ci0gICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJQV9FUlJfTkVUV09SSyk7Ci0g
ICAgZW5kVGVzdCgpOwotfSk7CisgICAgdmlkZW8uc3JjID0gInJ0c3A6Ly9hMjA0Ny52MTQxMWIu
YzE0MTEuZy52cS5ha2FtYWlzdHJlYW0ubmV0LzUvMjA0Ny8xNDExLzJfaDI2NF82NTAvMWExYTFh
ZTQ1NGM0MzA5NTAwNjVkZTRjYmIyZjk0YzIyNjk1MGM3YWU2NTViNjFhNDhhOTE0NzVlMjQzYWNk
YTNkYWMxOTQ4NzlhZGRlMGYvd3dkY18yMDA2XzJfNjUwLm1vdiI7CisgICAgd2FpdEZvckV2ZW50
KCJlcnJvciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJv
ciIsIG51bGwsICIhPSIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUi
LCBNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NP
VVJDRSk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRU
aW1lLXNldC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwxMSBAQAorVGVz
dCB0aGF0IHNldHRpbmcgY3VycmVudFRpbWUgY2hhbmdlcyB0aGUgdGltZSwgYW5kIHRoYXQgJ2Vu
ZGVkJyBldmVudCBpcyBmaXJlZCBpbiBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWUKKwogRVZF
TlQobG9hZCkKLUVWRU5UKHRpbWV1cGRhdGUpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUg
PT0gJzAnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjIp
CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgyKSA9PSAnOC4yMCcpIE9LCitS
VU4odmlkZW8ucGxheSgpKQorCiBFVkVOVChlbmRlZCkKIEVORCBPRiBURVNUCiAKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNldC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNldC5odG1sCShyZXZpc2lvbiA0
MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNldC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDI3IEBACi08dmlkZW8gc3JjPWNvbnRlbnQvdGVzdC5t
cDQgY29udHJvbHM+PC92aWRlbz4KLTxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
Ci08c2NyaXB0Pgotd2FpdEZvckV2ZW50KCdsb2FkJywgIAotZnVuY3Rpb24gKCkgeyAKLSAgICB2
aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC4yOyAKLSAgICB2aWRlby5wbGF5
KCk7IAotICAgIHdhaXRGb3JFdmVudCgndGltZXVwZGF0ZScsIGZ1bmN0aW9uICgpIHsKKzxodG1s
PgorPGJvZHk+CisKKyAgICA8dmlkZW8gc3JjPWNvbnRlbnQvdGVzdC5tcDQgY29udHJvbHM+PC92
aWRlbz4KKyAgICAKKyAgICA8cD5UZXN0IHRoYXQgc2V0dGluZyBjdXJyZW50VGltZSBjaGFuZ2Vz
IHRoZSB0aW1lLCBhbmQgdGhhdCAnZW5kZWQnIGV2ZW50IGlzIGZpcmVkIGluIGEgcmVhc29uYWJs
ZSBhbW91bnQgb2YgdGltZTwvcD4KKyAgICAKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2FpdEZvckV2ZW50KCdsb2FkJywgIAorICAg
IGZ1bmN0aW9uICgpIHsgCisgICAgICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnZW5kZWQnKTsKKyAg
ICAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDApOworICAgICAg
ICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjIiKTsgCisgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgyKSIsICh2aWRlby5k
dXJhdGlvbiAtIDAuMikudG9GaXhlZCgyKSk7CisgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7
IAorICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgIAogICAgICAgICB2YXIgdGltZW91dCA9
IDgwMDsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvZ1Jlc3VsdCgiTm8gdGlt
ZXVwZGF0ZSBldmVudCBpbiAiICsgdGltZW91dC8xMDAwICArICJzZWNvbmRzIiwgZmFsc2UpOyB9
LCB0aW1lb3V0KTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvZ1Jlc3VsdCgi
Tm8gJ2VuZGVkJyBldmVudCBpbiAiICsgdGltZW91dC8xMDAwICArICJzZWNvbmRzIiwgZmFsc2Up
OyB9LCB0aW1lb3V0KTsKICAgICB9KTsKLSAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2VuZGVkJyk7
Ci19KTsKLXZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLTwvc2NyaXB0PgorICAgIHZp
ZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKKyAgICA8L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJvcnQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWFib3J0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1lcnJvci1hYm9ydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw1IEBA
CiBFWFBFQ1RFRCAodmlkZW8uZXJyb3IgPT0gJ251bGwnKSBPSwogRVZFTlQobG9hZHN0YXJ0KQot
RVZFTlQoYWJvcnQpCi1FWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29kZSA9PSAnMScpIE9LCi1FVkVO
VChsb2Fkc3RhcnQpCiBFVkVOVChsb2FkKQogRVhQRUNURUQgKHZpZGVvLmVycm9yID09ICdudWxs
JykgT0sKIEVORCBPRiBURVNUCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1k
b2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1
OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDEzIEBACiBUZXN0IHRoYXQgdGhlIG1l
ZGlhIGVsZW1lbnQgaXMgaW4gY29ycmVjdCBzdGF0ZSBhZnRlciBsb2FkIGZhaWxzLgogCisKIEVY
UEVDVEVEICh2aWRlby5lcnJvciA9PSAnbnVsbCcpIE9LCi1FVkVOVChlbXB0aWVkKQotRVhQRUNU
RUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzInKSBPSwotRVhQRUNURUQgKHZpZGVvLmR1cmF0aW9u
ID09ICcwJykgT0sKKworRVZFTlQoZXJyb3IpCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IgIT0gJ251
bGwnKSBPSworRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzQnKSBPSworRVhQRUNURUQg
KHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCitFWFBFQ1RFRCAoaXNOYU4odmlkZW8uZHVy
YXRpb24pID09ICd0cnVlJykgT0sKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMCcp
IE9LCiBFWFBFQ1RFRCAodmlkZW8uYnVmZmVyZWQubGVuZ3RoID09ICcwJykgT0sKIEVYUEVDVEVE
ICh2aWRlby5zZWVrYWJsZS5sZW5ndGggPT0gJzAnKSBPSwpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC5odG1sCShyZXZpc2lvbiA0MTY1
OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMTYgKzIsMjYgQEAKIDx2aWRlbyBjb250cm9scz48L3ZpZGVv
PgogPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+Ci10ZXN0RXhw
ZWN0ZWQoInZpZGVvLmVycm9yIiwgbnVsbCk7Ci13YWl0Rm9yRXZlbnRBbmRUZXN0KCJsb2FkIiwg
ImZhbHNlIik7Ci13YWl0Rm9yRXZlbnQoImVtcHRpZWQiLCBmdW5jdGlvbiAoKSB7Ci0gICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJQV9FUlJfTkVUV09S
Syk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5kdXJhdGlvbiIsIDApOwotICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCAwKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmJ1
ZmZlcmVkLmxlbmd0aCIsIDApOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uc2Vla2FibGUubGVu
Z3RoIiwgMCk7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5idWZmZXJlZC5sZW5ndGgiLCAwKTsK
LSAgICBlbmRUZXN0KCk7Ci19KTsKLXZpZGVvLnNyYyA9ICJjb250ZW50L2RvZXMtbm90LWV4aXN0
Lm1wZWciOworCisgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LmVycm9yIiwgbnVsbCk7CisKKyAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KCJsb2FkIiwgImZhbHNl
Iik7CisgICAgCisgICAgd2FpdEZvckV2ZW50KCJlcnJvciIsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51bGwsICIhPSIpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmVycm9yLmNvZGUiLCBNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NV
UFBPUlRFRCk7CisgICAgCisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRl
IiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NPVVJDRSk7CisgICAgCisgICAgICAgIHRl
c3RFeHBlY3RlZCgiaXNOYU4odmlkZW8uZHVyYXRpb24pIiwgdHJ1ZSk7CisgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCAwKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5idWZmZXJlZC5sZW5ndGgiLCAwKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5z
ZWVrYWJsZS5sZW5ndGgiLCAwKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5idWZmZXJl
ZC5sZW5ndGgiLCAwKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIAorICAgIHZp
ZGVvLnNyYyA9ICJjb250ZW50L2RvZXMtbm90LWV4aXN0Lm1wZWciOworICAgIGNvbnNvbGVXcml0
ZSgiIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtbmV0
d29ya1N0YXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDE3IEBACitUZXN0IHRoYXQgc2V0dGluZyBzcmMgdG8g
YW4gaW52YWxpZCB1cmwgdHJpZ2dlcnMgbG9hZCgpLCB3aGljaCBzZXRzIG5ldHdvcmtTdGF0ZSB0
byBORVRXT1JLX05PX1NPVVJDRS4gU2V0dGluZyBzcmMgdG8gYSB2YWxpZCB1cmwgc2hvdWxkIHRo
ZW4gdHJpZ2dlciB0aGUgbG9hZGluZyBldmVudHMgYW5kIGVuZCB1cCB3aXRoIG5ldHdvcmtTdGF0
ZSA+PSBORVRXT1JLX0xPQURJTkcuCisKKwogRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9
PSAnMCcpIE9LCitSVU4odmlkZW8uc3JjID0gJ2JvZ3VzL21vdmllLm1wZycpCiBFVkVOVChsb2Fk
c3RhcnQpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcxJykgT0sKLUVWRU5UKGxv
YWRlZG1ldGFkYXRhKQotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMicpIE9LCi1F
VkVOVChsb2FkZWRmaXJzdGZyYW1lKQotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAn
MycpIE9LCi1FVkVOVChsb2FkKQogRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcp
IE9LCisKK1JVTih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCitFVkVOVChsb2Fkc3Rh
cnQpCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5w
bGF5KQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRl
ID49ICcyJykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWxvYWQtbmV0d29ya1N0YXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE3ICsxLDQ2IEBACi08dmlkZW8gY29udHJvbHM+PC92aWRlbz4KLTxzY3JpcHQgc3JjPXZp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIGZ1bmN0aW9uIHRlc3ROZXR3b3Jr
U3RhdGUoZXhwZWN0ZWQsIGVuZEl0KQotICAgIHsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by5uZXR3b3JrU3RhdGUiLCBleHBlY3RlZCk7Ci0gICAgICAgIGlmIChlbmRJdCkKLSAgICAgICAg
ICAgIGVuZFRlc3QoKTsKLSAgICB9Cis8aHRtbD4KKzxib2R5PgogCi0gICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZKTsKLSAgICB3YWl0
Rm9yRXZlbnQoImxvYWRzdGFydCIsIGZ1bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1M
TWVkaWFFbGVtZW50LkxPQURJTkcpOyB9ICk7Ci0gICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRh
ZGF0YSIsIGZ1bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkxP
QURFRF9NRVRBREFUQSk7IH0gKTsKLSAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGZpcnN0ZnJhbWUi
LCBmdW5jdGlvbiAoKSB7IHRlc3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5MT0FERURf
RklSU1RfRlJBTUUpOyB9ICk7Ci0gICAgd2FpdEZvckV2ZW50KCJsb2FkIiwgZnVuY3Rpb24gKCkg
eyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTE9BREVELCB0cnVlKTsgfSApOwot
ICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLTwvc2NyaXB0PgorICAgIDx2aWRl
byBjb250cm9scz48L3ZpZGVvPgorCisgICAgPHA+VGVzdCB0aGF0IHNldHRpbmcgc3JjIHRvIGFu
IGludmFsaWQgdXJsIHRyaWdnZXJzIGxvYWQoKSwgd2hpY2ggc2V0cyBuZXR3b3JrU3RhdGUKKyAg
ICB0byBORVRXT1JLX05PX1NPVVJDRS4gU2V0dGluZyBzcmMgdG8gYSB2YWxpZCB1cmwgc2hvdWxk
IHRoZW4gdHJpZ2dlciB0aGUgbG9hZGluZworICAgIGV2ZW50cyBhbmQgZW5kIHVwIHdpdGggbmV0
d29ya1N0YXRlID49IE5FVFdPUktfTE9BRElORy4KKyAgICAgPC9wPgorICAgIAorICAgIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVu
Y3Rpb24gdGVzdE5ldHdvcmtTdGF0ZShleHBlY3RlZCwgZW5kaXQsIG9wKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIGV4cGVjdGVkLCBv
cCk7CisgICAgICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgICAgIHdhaXRGb3JF
dmVudCgibG9hZGVkZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAg
ICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgicGxheSIpOworICAgICAgICB3YWl0Rm9yRXZlbnRB
bmRGYWlsKCJwbGF5aW5nIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheXRocm91Z2gi
LCBmdW5jdGlvbiAoKSB7IHRlc3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JL
X0xPQURJTkcsIHRydWUsICc+PScgKTsgfSApOworICAgIAorICAgICAgICBmdW5jdGlvbiBzb21l
VGltZUxhdGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdE5ldHdvcmtTdGF0ZShIVE1M
TWVkaWFFbGVtZW50Lk5FVFdPUktfTk9fU09VUkNFICk7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworCisgICAgICAgICAgICAvLyBub3cgc2V0IGEgdmFsaWQgdXJsCisgICAgICAgICAg
ICBydW4oInZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JyIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICAvLyBmaXJzdCBzZXQgdGhlIHNyYyB0byBhIGJvZ3VzIHVybCwgaXQgc2hv
dWxkIGF0dGVtcHQgYSBsb2FkCisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIHRl
c3ROZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAgICAg
cnVuKCJ2aWRlby5zcmMgPSAnYm9ndXMvbW92aWUubXBnJyIpOworICAgICAgICBzZXRUaW1lb3V0
KHNvbWVUaW1lTGF0ZXIsIDQwMCkgCisgICAgCisgICAgPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFk
eVN0YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1sb2FkLXJlYWR5U3RhdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEzICsxLDkgQEAKIEVYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRlID09ICcwJykgT0sKIEVWRU5U
KGxvYWRzdGFydCkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRlID09ICcwJykgT0sKIEVWRU5U
KGxvYWRlZG1ldGFkYXRhKQotRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzAnKSBPSwot
RVZFTlQobG9hZGVkZmlyc3RmcmFtZSkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRlID09ICcx
JykgT0sKLUVWRU5UKGNhbnNob3djdXJyZW50ZnJhbWUpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlT
dGF0ZSA9PSAnMScpIE9LCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKIEVWRU5U
KGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzMnKSBPSwor
RVhQRUNURUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzQnKSBPSwogRU5EIE9GIFRFU1QKIApJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLmh0bWwJKHJldmlz
aW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTggKzEsMjEgQEAKIDx2aWRlbyBjb250cm9scz48L3Zp
ZGVvPgogPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAg
ZnVuY3Rpb24gdGVzdFJlYWR5U3RhdGUoZXhwZWN0ZWQsIGVuZEl0KQorICAgIGZ1bmN0aW9uIHRl
c3RSZWFkeVN0YXRlKGV4cGVjdGVkLCBlbmRpdCwgb3ApCiAgICAgewotICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBleHBlY3RlZCk7Ci0gICAgICAgIGlmIChlbmRJdCkK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgZXhwZWN0ZWQsIG9wKTsK
KyAgICAgICAgaWYgKGVuZGl0KQogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAotICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuREFUQV9V
TkFWQUlMQUJMRSk7Ci0gICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiLCBmdW5jdGlvbiAoKSB7
IHRlc3RSZWFkeVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQuREFUQV9VTkFWQUlMQUJMRSk7IH0gKTsK
LSAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVh
ZHlTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkRBVEFfVU5BVkFJTEFCTEUpOyB9ICk7Ci0gICAgd2Fp
dEZvckV2ZW50KCJsb2FkZWRmaXJzdGZyYW1lIiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlTdGF0
ZShIVE1MTWVkaWFFbGVtZW50LkNBTl9TSE9XX0NVUlJFTlRfRlJBTUUpOyB9ICk7Ci0gICAgd2Fp
dEZvckV2ZW50KCJjYW5zaG93Y3VycmVudGZyYW1lIiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlT
dGF0ZShIVE1MTWVkaWFFbGVtZW50LkNBTl9TSE9XX0NVUlJFTlRfRlJBTUUpOyB9ICk7Ci0gICAg
d2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIsIGZ1bmN0aW9uICgpIHsgdGVzdFJlYWR5U3Rh
dGUoSFRNTE1lZGlhRWxlbWVudC5DQU5fUExBWV9USFJPVUdILCB0cnVlKTsgfSApOworICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9OT1RI
SU5HKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JFdmVudCgi
bG9hZGVkbWV0YWRhdGEiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGRhdGEiKTsKKyAgICB3
YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCJwbGF5Iik7
CisgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgicGxheWluZyIpOworICAgIHdhaXRGb3JFdmVudCgi
Y2FucGxheXRocm91Z2giLCBmdW5jdGlvbiAoKSB7IHRlc3RSZWFkeVN0YXRlKEhUTUxNZWRpYUVs
ZW1lbnQuSEFWRV9FTk9VR0hfREFUQSwgdHJ1ZSApOyB9ICk7CisKICAgICB2aWRlby5zcmMgPSAi
Y29udGVudC90ZXN0Lm1wNCI7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLWxvb3AtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLWxvb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWxvb3AtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMCArMTMs
MTIgQEAgRVZFTlQocGxheSkKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sK
IFJVTih2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC40KQogCitFVkVOVChw
bGF5aW5nKQogRVhQRUNURUQgKHZpZGVvLmVuZGVkID09ICdmYWxzZScpIE9LCiBFWFBFQ1RFRCAo
bWVkaWEuY3VycmVudFRpbWUgPiAnMCcpIE9LCitFWFBFQ1RFRCAobWVkaWEuY3VycmVudFRpbWUg
PCAnOC4wMCcpIE9LCiBSVU4odmlkZW8ubG9vcCA9IGZhbHNlKQotUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjQpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSB2aWRl
by5kdXJhdGlvbiAtIDAuMykKIAogRVhQRUNURUQgKHZpZGVvLmVuZGVkID09ICd0cnVlJykgT0sK
IEVYUEVDVEVEIChtZWRpYS5jdXJyZW50VGltZSA9PSAnbWVkaWEuZHVyYXRpb24nKSBPSwpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9vcC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLWxvb3AuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1sb29wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzEsNjQg
QEAKLTx2aWRlbyBjb250cm9scyBhdXRvcGxheSA+PC92aWRlbz4KLTxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5n
ZXRBdHRyaWJ1dGUoJ2xvb3AnKSIsIG51bGwpOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubG9v
cCIsIGZhbHNlKTsKLQotICAgIHJ1bigidmlkZW8ubG9vcCA9IHRydWUiKTsKLSAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLmxvb3AiLCB0cnVlKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmdldEF0
dHJpYnV0ZSgnbG9vcCcpIiwgbnVsbCwgIiE9Iik7Ci0KLSAgICBydW4oInZpZGVvLnJlbW92ZUF0
dHJpYnV0ZSgnbG9vcCcpIik7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5sb29wIiwgZmFsc2Up
OwotCi0gICAgdmFyIHJlc3BvbmRUb1RpbWVVcGRhdGUgPSBmYWxzZTsKLSAgICB2YXIgZmlyc3RU
aW1lQ2hlY2sgPSB0cnVlOwotCi0gICAgLy8gbWFrZSBzdXJlIHdlIGFyZSBwbGF5aW5nLCBzZWVr
IHRvIG5lYXIgdGhlIGVuZCBzbyB0aGUgdGVzdCBkb2Vzbid0IHRha2UgdG9vIGxvbmcKLSAgICB3
YWl0Rm9yRXZlbnQoJ3BsYXknLCBmdW5jdGlvbiAoKSB7IAotICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKLSAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9
IHZpZGVvLmR1cmF0aW9uIC0gMC40Iik7Ci0gICAgICAgIAotICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOwotICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjaywgODAwKTsKLSAgICB9ICk7Cis8aHRt
bD4KIAotICAgIGZ1bmN0aW9uIHRpbWVDaGVjaygpIHsgCi0gICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8uZW5kZWQiLCAhZmlyc3RUaW1lQ2hlY2spOwotICAgICAgICBpZiAoIWZpcnN0VGltZUNo
ZWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBkb24ndCB1c2UgInRlc3RFeHBlY3RlZCgp
IiBzbyB3ZSB3b24ndCBsb2cgdGhlIGFjdHVhbCBkdXJhdGlvbiB0byB0aGUKLSAgICAgICAgICAg
IC8vICByZXN1bHRzIGZpbGUsIGFzIHRoZSBmbG9hdGluZyBwb2ludCByZXN1bHQgbWF5IGRpZmZl
ciB3aXRoIGRpZmZlcmVudCBlbmdpbmVzCi0gICAgICAgICAgICByZXBvcnRFeHBlY3RlZChtZWRp
YS5jdXJyZW50VGltZSA9PSBtZWRpYS5kdXJhdGlvbiwgIm1lZGlhLmN1cnJlbnRUaW1lIiwgIj09
IiwgIm1lZGlhLmR1cmF0aW9uIiwgbWVkaWEuY3VycmVudFRpbWUpOwotICAgICAgICAgICAgZW5k
VGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgPHZpZGVvIGNvbnRy
b2xzIGF1dG9wbGF5ID48L3ZpZGVvPgogCi0gICAgICAgIHRlc3RFeHBlY3RlZCgibWVkaWEuY3Vy
cmVudFRpbWUiLCAwLCAnPicpOwotICAgICAgICBydW4oInZpZGVvLmxvb3AgPSBmYWxzZSIpOwot
ICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjQiKTsK
LSAgICAgICAgcmVzcG9uZFRvVGltZVVwZGF0ZSA9IHRydWU7Ci0gICAgICAgIGZpcnN0VGltZUNo
ZWNrID0gZmFsc2U7CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIAor
ICAgIDxzY3JpcHQ+CisgICAgCisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmli
dXRlKCdsb29wJykiLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5sb29wIiwg
ZmFsc2UpOworICAgIAorICAgICAgICBydW4oInZpZGVvLmxvb3AgPSB0cnVlIik7CisgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ubG9vcCIsIHRydWUpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmdldEF0dHJpYnV0ZSgnbG9vcCcpIiwgbnVsbCwgIiE9Iik7CisgICAgCisgICAgICAg
IHJ1bigidmlkZW8ucmVtb3ZlQXR0cmlidXRlKCdsb29wJykiKTsKKyAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5sb29wIiwgZmFsc2UpOworICAgIAorICAgICAgICB2YXIgcmVzcG9uZFRvVGlt
ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICB2YXIgZmlyc3RUaW1lQ2hlY2sgPSB0cnVlOworCisg
ICAgICAgIHdhaXRGb3JFdmVudCgncGF1c2UnKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdwbGF5
aW5nJyk7CisKKyAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGFyZSBwbGF5aW5nLCBzZWVrIHRvIG5l
YXIgdGhlIGVuZCBzbyB0aGUgdGVzdCBkb2Vzbid0IHRha2UgdG9vIGxvbmcKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCdwbGF5JywgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50
VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC40Iik7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjaywgODAw
KTsKKyAgICAgICAgfSApOworICAgIAorICAgICAgICBmdW5jdGlvbiB0aW1lQ2hlY2soKSB7IAor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lbmRlZCIsICFmaXJzdFRpbWVDaGVjayk7
CisgICAgICAgICAgICBpZiAoIWZpcnN0VGltZUNoZWNrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIGRvbid0IHVzZSAidGVzdEV4cGVjdGVkKCkiIHNvIHdlIHdvbid0IGxvZyB0
aGUgYWN0dWFsIGR1cmF0aW9uIHRvIHRoZQorICAgICAgICAgICAgICAgIC8vICByZXN1bHRzIGZp
bGUsIGFzIHRoZSBmbG9hdGluZyBwb2ludCByZXN1bHQgbWF5IGRpZmZlciB3aXRoIGRpZmZlcmVu
dCBlbmdpbmVzCisgICAgICAgICAgICAgICAgcmVwb3J0RXhwZWN0ZWQobWVkaWEuY3VycmVudFRp
bWUgPT0gbWVkaWEuZHVyYXRpb24sICJtZWRpYS5jdXJyZW50VGltZSIsICI9PSIsICJtZWRpYS5k
dXJhdGlvbiIsIG1lZGlhLmN1cnJlbnRUaW1lKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5jdXJyZW50VGltZSIsIDAsICc+Jyk7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoIm1lZGlhLmN1cnJlbnRUaW1lIiwgKHZpZGVvLmR1cmF0aW9uIC0gMC40
KS50b0ZpeGVkKDIpLCAnPCcpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5sb29wID0gZmFsc2Ui
KTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAt
IDAuMyIpOworICAgICAgICAgICAgcmVzcG9uZFRvVGltZVVwZGF0ZSA9IHRydWU7CisgICAgICAg
ICAgICBmaXJzdFRpbWVDaGVjayA9IGZhbHNlOworICAgIAorICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGltZUNoZWNrLCA4MDApOworICAgICAg
ICB9CisgICAgCiAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgIHNldFRpbWVvdXQo
dGltZUNoZWNrLCA4MDApOwotICAgIH0KKyAgICAgICAgcnVuKCJ2aWRlby5sb29wID0gdHJ1ZSIp
OworICAgICAgICBydW4oInZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0JyIpOworICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgIDwvc2NyaXB0PgorCisgICAgPC9oZWFkPgogCi0gICAg
Y29uc29sZVdyaXRlKCIiKTsKLSAgICBydW4oInZpZGVvLmxvb3AgPSB0cnVlIik7Ci0gICAgcnVu
KCJ2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCciKTsKLSAgICBjb25zb2xlV3JpdGUoIiIp
OwotPC9zY3JpcHQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXBhdXNlLWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiAr
MiwxMiBAQCBUZXN0IHRoYXQgcGF1c2UoKSBmcm9tIEVNUFRZIG5ldHdvcmsgc3RhCiAKIEVYUEVD
VEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzAnKSBPSwogUlVOKHZpZGVvLnBhdXNlKCkpCitT
Q1JJUFQgRE9ORQogRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQoZHVyYXRpb25jaGFuZ2UpCitFVkVO
VChsb2FkZWRtZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQorRVZF
TlQoY2FucGxheXRocm91Z2gpCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMuaHRtbAkocmV2aXNpb24gNDE2NTgpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDE4IEBACiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2Ny
aXB0PgogPHNjcmlwdD4KICAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci0gICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZ
KTsKLSAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2xvYWRzdGFydCcpOworICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0VNUFRZKTsK
KworICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2FpdEZvckV2ZW50KCJyYXRl
Y2hhbmdlIik7CisgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAgd2FpdEZvckV2ZW50
KCJyYXRlY2hhbmdlIik7CisgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlvbmNoYW5nZSIpOworICAg
IHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRl
ZGRhdGEiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnRB
bmRFbmQoImNhbnBsYXl0aHJvdWdoIik7CisKICAgICBydW4oInZpZGVvLnBhdXNlKCkiKTsKICAg
ICBjb25zb2xlV3JpdGUoIlNDUklQVCBET05FIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LWVtcHR5LWV2ZW50cy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1lbXB0
eS1ldmVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDE0IEBAIFRl
c3QgdGhhdCBwbGF5KCkgZnJvbSBFTVBUWSBuZXR3b3JrIHN0YXQKIAogRVhQRUNURUQgKHZpZGVv
Lm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCiBSVU4odmlkZW8ucGxheSgpKQotRVZFTlQobG9hZHN0
YXJ0KQotRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCiBTQ1JJUFQgRE9ORQot
RVZFTlQocGxheSkKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGR1cmF0aW9uY2hhbmdlKQorRVZF
TlQobG9hZGVkbWV0YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VW
RU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQocGxheWluZykKIEVYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMuaHRtbAkocmV2aXNpb24gNDE2NTgpCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LWVtcHR5LWV2ZW50cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE5ICsxLDI5IEBACi08dmlkZW8gY29udHJvbHM+PC92aWRlbz4KLTxwPlRlc3Qg
dGhhdCBwbGF5KCkgZnJvbSBFTVBUWSBuZXR3b3JrIHN0YXRlIHRyaWdnZXJzIGxvYWQoKSBhbmQg
YXN5bmMgcGxheSBldmVudC48L3A+Ci08c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0
PgotPHNjcmlwdD4KLSAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci0gICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZKTsK
KzxodG1sPgorPGJvZHk+CiAKLSAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRzdGFydCcsIGZ1bmN0aW9u
ICgpIHsgCi0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7Ci0gICAg
fSApOworICAgIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgorICAgIDxwPlRlc3QgdGhhdCBwbGF5
KCkgZnJvbSBFTVBUWSBuZXR3b3JrIHN0YXRlIHRyaWdnZXJzIGxvYWQoKSBhbmQgYXN5bmMgcGxh
eSBldmVudC48L3A+CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhU
TUxNZWRpYUVsZW1lbnQuTkVUV09SS19FTVBUWSk7CisgICAgCisgICAgICAgIHdhaXRGb3JFdmVu
dCgibG9hZHN0YXJ0Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAg
ICAgICB3YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRl
Y2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiZHVyYXRpb25jaGFuZ2UiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQo
ImxvYWRlZGRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgICAg
IHdhaXRGb3JFdmVudCgiY2FucGxheXRocm91Z2giKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJw
bGF5Iik7CisgICAgCisgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWluZycsIGZ1bmN0aW9uICgp
IHsgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7IGVuZFRlc3QoKTsgfSApOwor
ICAgIAorICAgICAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7CisgICAgICAgIHJ1
bigidmlkZW8ucGxheSgpIik7CisgICAgICAgIGNvbnNvbGVXcml0ZSgiU0NSSVBUIERPTkUiKTsK
KyAgICA8L3NjcmlwdD4KIAotICAgIHdhaXRGb3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsg
Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwotICAgICAgICBl
bmRUZXN0KCk7Ci0gICAgfSApOwotCi0gICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKLSAgICBjb25z
b2xlV3JpdGUoIlNDUklQVCBET05FIik7Ci08L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV2ZW50
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tcGxheS1wYXVzZS1ldmVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDkg
KzQsOCBAQCBSVU4odmlkZW8ucGxheSgpKQogUlVOKHZpZGVvLnBhdXNlKCkpCiBTQ1JJUFQgRE9O
RQogRVZFTlQocGxheSkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworRVZF
TlQod2FpdGluZykKIEVWRU5UKHRpbWV1cGRhdGUpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICd0cnVlJykgT0sKIEVWRU5UKHBhdXNlKQogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1
ZScpIE9LCiBFTkQgT0YgVEVTVApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1w
YXVzZS1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1w
bGF5LXBhdXNlLWV2ZW50cy5odG1sCShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTEg
KzQsMjIgQEAKIDxzY3JpcHQ+CiAgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwog
Ci0gICAgd2FpdEZvckV2ZW50KCdwbGF5JywgZnVuY3Rpb24gKCkgeyB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLnBhdXNlZCIsIHRydWUpO30gKTsKLSAgICB3YWl0Rm9yRXZlbnQoJ3RpbWV1cGRhdGUnLCBm
dW5jdGlvbiAoKSB7IHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7fSApOworICAg
IHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hhbmdl
Iik7CisgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAgd2FpdEZvckV2ZW50KCJyYXRl
Y2hhbmdlIik7CisgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlvbmNoYW5nZSIpOworICAgIHdhaXRG
b3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGRhdGEi
KTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBs
YXl0aHJvdWdoIik7CisgICAgd2FpdEZvckV2ZW50KCJwbGF5Iik7CisgICAgd2FpdEZvckV2ZW50
KCJ0aW1ldXBkYXRlIik7CiAgICAgd2FpdEZvckV2ZW50KCdwYXVzZScsIGZ1bmN0aW9uICgpIHsg
dGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsgZW5kVGVzdCgpOyB9ICk7CiAKKwog
ICAgIHJ1bigidmlkZW8ucGxheSgpIik7CiAgICAgcnVuKCJ2aWRlby5wYXVzZSgpIik7CisgICAg
CiAgICAgY29uc29sZVdyaXRlKCJTQ1JJUFQgRE9ORSIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXBsYXktcGF1c2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDEwIEBACi1WaWRlbyBoYXMgbm8gc3JjLiBUZXN0IHRoYXQgcGxheSgpIGFuZCBwYXVzZSgp
IHJldGhyb3cgdGhlIGV4Y2VwdGlvbiBmcm9tIGxvYWQoKS4gVGVzdCB0aGF0IHRoZSBwbGF5IGFu
ZCBwYXVzZSBldmVudHMgYXJlIG5vdCBkaXNwYXRjaGVkLgorVmlkZW8gaGFzIG5vIHNyYy4gVGVz
dCB0aGF0IHRoZSBwbGF5aW5nIGV2ZW50IGlzIG5vdCBkaXNwYXRjaGVkLgogCi1URVNUKHZpZGVv
LnBsYXkoKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUikgT0sKLVRFU1Qo
dmlkZW8ucGF1c2UoKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUikgT0sK
K1JVTih2aWRlby5wbGF5KCkpCitSVU4odmlkZW8ucGF1c2UoKSkKK0VWRU5UKHdhaXRpbmcpCitF
VkVOVCh0aW1ldXBkYXRlKQorRVZFTlQocGF1c2UpCitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0
YXRlID09ICc0JykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gNDE2NTgpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwICsxLDI2IEBACisKIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgot
PHA+VmlkZW8gaGFzIG5vIHNyYy4gVGVzdCB0aGF0IHBsYXkoKSBhbmQgcGF1c2UoKSByZXRocm93
IHRoZSBleGNlcHRpb24gZnJvbSBsb2FkKCkuIFRlc3QgdGhhdCB0aGUgcGxheSBhbmQgcGF1c2Ug
ZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC48L3A+CisKKzxwPlZpZGVvIGhhcyBubyBzcmMuIFRl
c3QgdGhhdCB0aGUgcGxheWluZyBldmVudCBpcyBub3QgZGlzcGF0Y2hlZC48L3A+CisKIDxzY3Jp
cHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8c2NyaXB0Pgotd2FpdEZvckV2ZW50QW5k
RmFpbCgncGxheScpOwotd2FpdEZvckV2ZW50QW5kRmFpbCgncGF1c2UnKTsKLXRlc3RFeGNlcHRp
b24oInZpZGVvLnBsYXkoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiKTsKLXRl
c3RFeGNlcHRpb24oInZpZGVvLnBhdXNlKCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVf
RVJSIik7Ci1lbmRUZXN0TGF0ZXIoKTsKKyAgICB3YWl0Rm9yRXZlbnRBbmRGYWlsKCdwbGF5aW5n
Jyk7CisKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JFdmVudCgi
dGltZXVwZGF0ZSIpOworICAgIHdhaXRGb3JFdmVudCgicGF1c2UiKTsKKyAgICB3YWl0Rm9yRXZl
bnQoIndhaXRpbmciKTsKKworICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgcnVuKCJ2aWRl
by5wYXVzZSgpIik7CisKKyAgICBmdW5jdGlvbiBzb21lVGltZUxhdGVyKCkKKyAgICB7CisgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5O
RVRXT1JLX05PX1NPVVJDRSk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgfQorICAgIAorICAgIHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgNDAw
KSAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1uby1zcmMt
ZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitUZXN0IHRoYXQgc2Vla2luZyB2aWRlbyB3
aXRoIG5vICdzcmMnIGF0dHJpYnV0ZSB0aHJvd3MgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0
aW9uLgorCitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcwJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5yZWFkeVN0YXRlID09ICcwJykgT0sKK1RFU1QodmlkZW8uY3VycmVudFRpbWUgPSAx
LjEpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpIE9LCitFTkQgT0YgVEVT
VAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1l
eGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNl
ZWstbm8tc3JjLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8
aHRtbD4KKzxib2R5PgorCisgICAgPHZpZGVvIGxvb3AgY29udHJvbHM+PC92aWRlbz4KKyAgICAK
KyAgICA8cD5UZXN0IHRoYXQgc2Vla2luZyB2aWRlbyB3aXRoIG5vICdzcmMnIGF0dHJpYnV0ZSB0
aHJvd3MgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uLjwvcD4KKworICAgIDxzY3JpcHQg
c3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1Q
VFkpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBIVE1MTWVkaWFF
bGVtZW50LkhBVkVfTk9USElORyk7CisgICAgICAgIHRlc3RFeGNlcHRpb24oInZpZGVvLmN1cnJl
bnRUaW1lID0gMS4xIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIpOworICAgICAg
ICBzZXRUaW1lb3V0KGVuZFRlc3QsIDIwMCkgCisgICAgPC9zY3JpcHQ+CisgICAgCis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBs
YXlpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGxheWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxNjU4KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wbGF5aW5nLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwxNSBAQAogVGVzdCB0aGF0IHNlZWtpbmcgdmlk
ZW8gd2l0aCAnbG9vcCcgcGFzdCBpdCdzIGVuZCByZXdpbmRzIHRvIHRoZSBiZWdpbm5pbmcgYW5k
IGNvbnRpbnVlcyBwbGF5YmFjay4KIAogUlVOKHZpZGVvLnNyYyA9ICdjb250ZW50L3Rlc3QubXA0
JykKLVJVTih2aWRlby5wbGF5KCkpCiAKIEVWRU5UKGxvYWQpCitFWFBFQ1RFRCAodmlkZW8ucGF1
c2VkID09ICd0cnVlJykgT0sKK1JVTih2aWRlby5wbGF5KCkpCiBFWFBFQ1RFRCAodmlkZW8ucGF1
c2VkID09ICdmYWxzZScpIE9LCiAKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykg
T0sKIEVYUEVDVEVEIChtZWRpYS5jdXJyZW50VGltZSA+ICcwJykgT0sKK1JVTih2aWRlby5jdXJy
ZW50VGltZSA9IDUwMCkKIAogRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwog
RVhQRUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lID4gJzAnKSBPSwpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wbGF5aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wbGF5aW5nLmh0bWwJKHJldmlzaW9u
IDQxNjU4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wbGF5aW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw4IEBACiA8c2NyaXB0PgogCiAgICAgd2Fp
dEZvckV2ZW50KCdsb2FkJywgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5wYXVzZWQiLCB0cnVlKTsKKyAgICAgICAgcnVuKCJ2aWRlby5wbGF5KCkiKTsKICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7CiAgICAgICAgIHNldFRpbWVv
dXQodGltZUNoZWNrMSwgMjAwKTsKICAgICB9KTsKQEAgLTE0LDcgKzE2LDcgQEAKICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBm
YWxzZSk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgibWVkaWEuY3VycmVudFRpbWUiLCAwLCAnPicp
OwotICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IDUwMDsKKyAgICAgICAgcnVuKCJ2aWRlby5j
dXJyZW50VGltZSA9IDUwMCIpOwogICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjazIsIDIwMCk7
CiAgICAgfQogCkBAIC0yOCw2ICszMCw1IEBACiAgICAgfQogCiAgICAgcnVuKCJ2aWRlby5zcmMg
PSAnY29udGVudC90ZXN0Lm1wNCciKTsKLSAgICBydW4oInZpZGVvLnBsYXkoKSIpOwogICAgIGNv
bnNvbGVXcml0ZSgiIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNlZWtpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXNlZWtpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTY1OCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNlZWtpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEx
ICsxLDMxIEBACi1UZXN0IHRoYXQgc2Vla2luZyBhdHRyaWJ1dGUgaXMgdHJ1ZSBpbiB0aW1ldXBk
YXRlIGV2ZW50IGFmdGVyIHNlZWsgYW5kIGdvZXMgYmFjayB0byBmYWxzZSB3aGVuIHNlZWtpbmcg
Y29tcGxldGVzCitUZXN0IHRoYXQgc2Vla2luZyBhdHRyaWJ1dGUgaXMgdHJ1ZSBpbW1lZGlhdGVs
eSBhZnRlciBhIHNlZWssIGdvZXMgYmFjayB0byBmYWxzZSB3aGVuIHNlZWtpbmcgY29tcGxldGVz
LCBhbmQgdGhhdCBhICdzZWVrZWQnIGV2ZW50IGlzIGZpcmVkIGZvciBlYWNoIHNlZWsKIAogRVZF
TlQobG9hZCkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKKworRVZFTlQoc2Vla2VkKQor
CitFWFBFQ1RFRCAoc2Vla2VkQ291bnQgPT0gJzEnKSBPSwogRVhQRUNURUQgKHZpZGVvLnNlZWtp
bmcgPT0gJ2ZhbHNlJykgT0sKLVJVTih2aWRlby5jdXJyZW50VGltZSA9IDIpCi1FVkVOVCh0aW1l
dXBkYXRlKQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcwLjUnKSBPSworUlVOKHZp
ZGVvLmN1cnJlbnRUaW1lID0gMSkKK0VYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICd0cnVlJykg
T0sKKworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAoc2Vla2VkQ291bnQgPT0gJzInKSBPSwor
RVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA9PSAnMScpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjUpCiBFWFBF
Q1RFRCAodmlkZW8uc2Vla2luZyA9PSAndHJ1ZScpIE9LCi1FWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUgPT0gJzInKSBPSworCitFVkVOVChzZWVrZWQpCisKK0VYUEVDVEVEIChzZWVrZWRDb3Vu
dCA9PSAnMycpIE9LCiBFWFBFQ1RFRCAodmlkZW8uc2Vla2luZyA9PSAnZmFsc2UnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxLjUnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gMikKK0VYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICd0cnVlJykgT0sKKwogRU5EIE9G
IFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vla2luZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWtpbmcuaHRtbAkocmV2aXNpb24g
NDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjEgKzEsNTEgQEAKIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgotPHA+VGVz
dCB0aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlzIHRydWUgaW4gdGltZXVwZGF0ZSBldmVudCBhZnRl
ciBzZWVrIGFuZCBnb2VzIGJhY2sgdG8gZmFsc2Ugd2hlbiBzZWVraW5nIGNvbXBsZXRlcyA8L3A+
Cis8cD5UZXN0IHRoYXQgc2Vla2luZyBhdHRyaWJ1dGUgaXMgdHJ1ZSBpbW1lZGlhdGVseSBhZnRl
ciBhIHNlZWssCisgZ29lcyBiYWNrIHRvIGZhbHNlIHdoZW4gc2Vla2luZyBjb21wbGV0ZXMsIGFu
ZCB0aGF0IGEgJ3NlZWtlZCcgZXZlbnQKKyBpcyBmaXJlZCBmb3IgZWFjaCBzZWVrCisgPC9wPgog
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+Ci13YWl0Rm9yRXZl
bnQoJ2xvYWQnLAotICAgIGZ1bmN0aW9uICgpIAorCisgICAgdmFyIHNlZWtlZENvdW50ID0gMDsK
KyAgICB2YXIgY291bnRlcjsKKworICAgIGZ1bmN0aW9uIHNlZWtlZCgpCisgICAgeyAKKyAgICAg
ICAgKytzZWVrZWRDb3VudDsgCisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc29tZVRpbWVMYXRlcigpCiAgICAgeworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InNlZWtlZENvdW50IiwgY291bnRlcik7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uc2Vl
a2luZyIsIGZhbHNlKTsKLSAgICAgICAgd2FpdEZvckV2ZW50KCd0aW1ldXBkYXRlJywgZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5zZWVraW5nIiwgdHJ1ZSk7
Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgMik7Ci0gICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLnNlZWtpbmciLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgp
OwotICAgICAgICAgICAgfSwgMjAwKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJ1bigidmlkZW8u
Y3VycmVudFRpbWUgPSAyIik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRp
bWUiLCBjb3VudGVyICogMC41KTsKKyAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIg
KyAoY291bnRlciArIDEpICogMC41KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5zZWVr
aW5nIiwgdHJ1ZSk7CisKKyAgICAgICAgaWYgKGNvdW50ZXIgPT0gMykKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgICsrY291bnRlcjsKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAg
ICAgfQorCisgICAgZnVuY3Rpb24gbG9hZGVkKCkgCisgICAgeworICAgICAgICBydW4oInZpZGVv
LmN1cnJlbnRUaW1lID0gMC41Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworICAgICAgICBzZXRU
aW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDIwMCkgCisgICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVM
YXRlciwgNDAwKSAKKyAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCA2MDApIAorICAg
ICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgIH0KLSk7Ci12aWRlby5zcmMgPSAiY29udGVudC90
ZXN0Lm1wNCI7CisgICAgCisgICAgd2FpdEZvckV2ZW50KCd3YWl0aW5nJyApOworICAgIHdhaXRG
b3JFdmVudCgnc2Vla2VkJywgc2Vla2VkICk7CisgICAgd2FpdEZvckV2ZW50KCdsb2FkJywgbG9h
ZGVkKTsKKworICAgIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc291cmNlLWFkZC1zcmMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1hZGQtc3JjLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJj
ZS1hZGQtc3JjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorRVZF
TlQobG9hZHN0YXJ0KQorRVZFTlQobG9hZHN0YXJ0KQorCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwo
dmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSworUlVOKHZpZGVvLnNy
YyA9ICdjb250ZW50L3NpbGVuY2UubXBnJykKKworRVZFTlQoZHVyYXRpb25jaGFuZ2UpCitFVkVO
VChsb2FkZWRtZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQorRVZF
TlQoY2FucGxheXRocm91Z2gpCisKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50
U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9LCitFTkQgT0YgVEVTVAorVGVzdCB0aGF0IGFk
ZGluZyBhICdzcmMnIGF0dHJpYnV0ZSBkb2VzIG5vdGhpbmcgd2hlbiBhIDxzb3VyY2U+IGVsZW1l
bnQgaGFzIGFscmVhZHkgYmVlbiBjaG9zZW4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNvdXJjZS1hZGQtc3JjLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tc291cmNlLWFkZC1zcmMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXNvdXJjZS1hZGQtc3JjLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAK
KzxodG1sPgorPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4K
KworICAgIDx2aWRlbyBjb250cm9scz4KKyAgICAgICAgPHNvdXJjZSBzcmM9Y29udGVudC90ZXN0
Lm1wNCB0eXBlPSJ2aWRlby9tcGVnOyBjb2RlY3M9JnF1b3Q7YXZjMS40RDQwMEMmcXVvdDsiPgor
ICAgIDwvdmlkZW8+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7
CisKKyAgICAgICAgdmFyIGNvdW50ZXIgPSAwOworICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWQo
KSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQv
dGVzdC5tcDQiKTsKKyAgICAgICAgICAgIGlmICgrK2NvdW50ZXIgPT0gMikKKyAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICBydW4oInZpZGVvLnNyYyA9ICdjb250ZW50L3Np
bGVuY2UubXBnJyIpOworICAgICAgICAgICAgc2V0VGltZW91dChjaGVja0xvYWQsIDIwMCk7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9OworCisgICAgICAgIHdhaXRG
b3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIp
OworICAgICAgICB3YWl0Rm9yRXZlbnQoIndhaXRpbmciKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
KCJyYXRlY2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiZHVyYXRpb25jaGFuZ2UiKTsK
KyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOworICAgICAgICB3YWl0Rm9y
RXZlbnQoImxvYWRlZGRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7Cisg
ICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheXRocm91Z2giKTsKKyAgICAgICAgd2FpdEZvckV2
ZW50KCJwbGF5Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZHN0YXJ0JywgY2hlY2tMb2Fk
KTsKKworICAgIDwvc2NyaXB0PgorCis8cD5UZXN0IHRoYXQgYWRkaW5nIGEgJ3NyYycgYXR0cmli
dXRlIGRvZXMgbm90aGluZyB3aGVuIGEgJmx0O3NvdXJjZSZndDsgZWxlbWVudCBoYXMgYWxyZWFk
eSAKK2JlZW4gY2hvc2VuCis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0
MTY1OCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDIwIEBACi1UZXN0IHRoYXQgY2hhbmdpbmcgc3Jj
IGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIHdoZW4gbmV0d29yayBzdGF0ZSBpcyBlbXB0eS4KLVRl
c3QgdGhhdCBpdCBkb2VzIG5vdCB0cmlnZ2VyIGxvYWQgd2hlbiBuZXR3b3JrIHN0YXRlIGlzIG5v
bi1lbXB0eS4KLUVWRU5UKGVtcHRpZWQpCi1FWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09
ICcwJykgT0sKLUVWRU5UKGxvYWRzdGFydCkKKzEuIFRlc3QgdGhhdCBhbiBpbnZhbGlkIHNyYyBh
dHRyaWJ1dGUgZmlyZXMgYW4gZXJyb3Igd2hlbiB0aGUgZmlsZSBmYWlscyB0byBsb2FkLgorMi4g
VGVzdCB0aGF0IGNoYW5naW5nIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCBhZnRlciBhIGxv
YWQgZmFpbHMuCiszLiBUZXN0IHRoYXQgY2hhbmdpbmcgc3JjIGRvZXMgbm90IHRyaWdnZXIgbG9h
ZCBvbmNlIGEgZmlsZSBpcyBsb2FkZWQuCisKKworRVZFTlQoZXJyb3IpCitFWFBFQ1RFRCAocmVs
YXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2JvZ3VzJykgT0sKK0VYUEVDVEVEICh2aWRl
by5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSworRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUgPT0g
JzQnKSBPSworCitSVU4odmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVudC90ZXN0Lm1w
NCcpKQorCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKIEVYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRl
by5jdXJyZW50U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9LCi1FVkVOVChsb2FkKQotRVhQ
RUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSAhPSAnMCcpIE9LCitFWFBFQ1RFRCAoaXNOYU4odmlk
ZW8uZHVyYXRpb24pID09ICdmYWxzZScpIE9LCisKK1JVTih2aWRlby5zZXRBdHRyaWJ1dGUoJ3Ny
YycsICdjb250ZW50L3NpbGVuY2UubXBnJykpCisKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDQxNjU4KQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI1ICsxLDQwIEBACi08dmlkZW8gc3JjPWJvZ3VzIGNvbnRyb2xzPjwvdmlkZW8+Ci08ZGl2Pgot
VGVzdCB0aGF0IGNoYW5naW5nIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCB3aGVuIG5ldHdv
cmsgc3RhdGUgaXMgZW1wdHkuPGJyPgotVGVzdCB0aGF0IGl0IGRvZXMgbm90IHRyaWdnZXIgbG9h
ZCB3aGVuIG5ldHdvcmsgc3RhdGUgaXMgbm9uLWVtcHR5LgotPC9kaXY+Ci08c2NyaXB0IHNyYz12
aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotPHNjcmlwdD4KLSAgICB3YWl0Rm9yRXZlbnQoJ2VtcHRp
ZWQnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0
YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBUWSk7Ci0gICAgICAgIHZpZGVvLnNldEF0dHJpYnV0
ZSgnc3JjJywgJ2NvbnRlbnQvdGVzdC5tcDQnKQotICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRz
dGFydCIsIGZ1bmN0aW9uICgpIHsgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJy
ZW50U3JjKSIsICJjb250ZW50L3Rlc3QubXA0Iik7IH0pOworPGh0bWw+Cis8Ym9keT4KKyAgICAK
KyAgICA8dmlkZW8gc3JjPWJvZ3VzIGNvbnRyb2xzPjwvdmlkZW8+CiAKLSAgICAgICAgd2FpdEZv
ckV2ZW50KCdsb2FkJywgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZLCAiIT0iKTsKLSAgICAg
ICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2NvbnRlbnQvdGVzdC53YXYnKTsKKyAg
ICA8cD4KKyAgICAxLiBUZXN0IHRoYXQgYW4gaW52YWxpZCBzcmMgYXR0cmlidXRlIGZpcmVzIGFu
IGVycm9yIHdoZW4gdGhlIGZpbGUgZmFpbHMgdG8gbG9hZC48YnI+CisgICAgMi4gVGVzdCB0aGF0
IGNoYW5naW5nIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCBhZnRlciBhIGxvYWQgZmFpbHMu
PGJyPgorICAgIDMuIFRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgZG9lcyBub3QgdHJpZ2dlciBsb2Fk
IG9uY2UgYSBmaWxlIGlzIGxvYWRlZC4KKyAgICA8L3AKKyAgICA8c2NyaXB0IHNyYz12aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgCisgICAgICAgIGZ1bmN0aW9uIGVy
cm9yRXZlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZl
VVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImJvZ3VzIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VS
Q0UpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvci5jb2RlIiwgTWVkaWFF
cnJvci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uc2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVu
dC90ZXN0Lm1wNCcpIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9
CisgICAgCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZG1ldGFkYXRhKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJj
b250ZW50L3Rlc3QubXA0Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImlzTmFOKHZpZGVv
LmR1cmF0aW9uKSIsIGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICBydW4oInZpZGVvLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2NvbnRlbnQvc2lsZW5jZS5t
cGcnKSIpOworICAgICAgICAgICAgc2V0VGltZW91dChlbmRUZXN0LCA1MDApIDsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRhZGF0YScsIGxvYWRlZG1l
dGFkYXRhKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdlcnJvcicsIGVycm9yRXZlbnQpOworICAg
IDwvc2NyaXB0PgogCi0gICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRzdGFydCcsIGZ1bmN0
aW9uICgpIHsgCi0gICAgICAgICAgICAgICAgbG9nUmVzdWx0KCJMT0FEU1RBUlQgZmlyZWQiKTsK
LSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9ICk7Ci0KLSAgICAgICAg
ICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgNTAwKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci08L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNy
Yy1pbnZhbGlkLXJlbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKworRVZFTlQobG9hZHN0YXJ0KQorRVhQ
RUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdib2d1cy5tb3YnKSBPSwor
CitFVkVOVChlcnJvcikKK0VYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICc0JykgT0sKK1JV
Tih2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpKQorCitFVkVOVChsb2Fkc3RhcnQpCitFWFBF
Q1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQn
KSBPSworCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRl
by5jdXJyZW50U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9LCitFWFBFQ1RFRCAoaXNOYU4o
dmlkZW8uZHVyYXRpb24pID09ICdmYWxzZScpIE9LCisKK0VORCBPRiBURVNUCitUZXN0IHRoYXQg
cmVtb3ZpbmcgaW52YWxpZCAnc3JjJyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCBvZiA8c291cmNl
PiBlbGVtZW50cwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVt
b3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWludmFs
aWQtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
cmMtaW52YWxpZC1yZW1vdmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0
bWw+Cis8Ym9keT4KKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisg
ICAgPHZpZGVvIHNyYz1ib2d1cy5tb3YgY29udHJvbHM+CisgICAgICAgIDxzb3VyY2Ugc3JjPWNv
bnRlbnQvdGVzdC5tcDQ+CisgICAgPC92aWRlbz4KKworICAgIDxwPlRlc3QgdGhhdCByZW1vdmlu
ZyBpbnZhbGlkICdzcmMnIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkIG9mICZsdDtzb3VyY2UmZ3Q7
IGVsZW1lbnRzPC9wPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgdmlkZW8gPSBtZWRpYSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOworCisgICAgICAgIHZhciBs
b2FkQ291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gbG9hZFN0YXJ0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgKytsb2FkQ291bnQ7CisgICAgICAgICAgICBpZiAobG9hZENv
dW50ID09IDEpCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRl
by5jdXJyZW50U3JjKSIsICJib2d1cy5tb3YiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGxvYWRD
b3VudCA9PSAyKQorICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlk
ZW8uY3VycmVudFNyYykiLCAiY29udGVudC90ZXN0Lm1wNCIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCInbG9hZENvdW50JyBmaXJlZCAiICsgbG9hZENvdW50
ICsgInRpbWVzIiApOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZG1ldGFkYXRhKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJjb250ZW50
L3Rlc3QubXA0Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImlzTmFOKHZpZGVvLmR1cmF0
aW9uKSIsIGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBlcnJvckV2ZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJQV9FUlJfTk9O
RV9TVVBQT1JURUQpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGVuZFRl
c3QoKTsgfSAsIDUwMCkgOworICAgICAgICAgICAgcnVuKCJ2aWRlby5yZW1vdmVBdHRyaWJ1dGUo
J3NyYycpIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisKKyAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRh
ZGF0YScsIGxvYWRlZG1ldGFkYXRhKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQn
LCBsb2FkU3RhcnQgKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdlcnJvcicsIGVycm9yRXZlbnQp
OworICAgIDwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK0VWRU5UKGxvYWRzdGFydCkKK0VY
UEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVudC9ib2d1cy5t
cGVnJykgT0sKKworRVZFTlQoZXJyb3IpCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3Vy
cmVudFNyYykgPT0gJ2NvbnRlbnQvYm9ndXMubXBlZycpIE9LCitFWFBFQ1RFRCAobWVkaWEuZXJy
b3IuY29kZSA9PSAnNCcpIE9LCisKK0VORCBPRiBURVNUCitUZXN0IHRoYXQgYSA8c291cmNlPiBl
bGVtZW50IGlzIG5vdCB1c2VkIHdoZW4gYSBib2d1cyAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2Vu
dApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2Uu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+Cis8Ym9keT4KKyAgICA8
c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorCisgICAgPHZpZGVvIHNyYz1jb250
ZW50L2JvZ3VzLm1wZWcgY29udHJvbHM+CisgICAgICAgIDxzb3VyY2Ugc3JjPWNvbnRlbnQvdGVz
dC5tcDQ+CisgICAgPC92aWRlbz4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGZpbmRNZWRpYUVs
ZW1lbnQoKTsKKworICAgICAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0
YScsIGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgICAgIGZhaWxUZXN0KCInbG9hZGVkbWV0YWRhdGEn
IGV2ZW50IGZpcmVkIiApOworICAgICAgICB9KTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xv
YWRzdGFydCcsIGZ1bmN0aW9uICgpIHsgCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvYm9ndXMubXBlZyIpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfSApOworCisgICAgICAgIHdhaXRGb3JF
dmVudCgnZXJyb3InLCBmdW5jdGlvbiAoKSB7IAorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJy
ZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJjb250ZW50L2JvZ3VzLm1wZWciKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgibWVkaWEuZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVE
SUFfRVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZW5kVGVzdCwg
MjAwKSA7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9KTsKKworICAg
IDwvc2NyaXB0PgorCis8cD5UZXN0IHRoYXQgYSAmbHQ7c291cmNlJmd0OyBlbGVtZW50IGlzIG5v
dCB1c2VkIHdoZW4gYSBib2d1cyAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudAorPC9wPgorCis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcmVtb3Zl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMt
cmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zcmMtcmVtb3ZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDEyIEBACi1UZXN0IHRoYXQgcmVtb3Zpbmcgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBsb2FkCi1F
VkVOVChlbXB0aWVkKQotRVZFTlQobG9hZHN0YXJ0KQotRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZp
ZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0JykgT0sKLUVORCBPRiBURVNUCiAK
K0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJl
bnRTcmMpID09ICdjb250ZW50L3NpbGVuY2UubXBnJykgT0sKK0VYUEVDVEVEIChpc05hTih2aWRl
by5kdXJhdGlvbikgPT0gJ2ZhbHNlJykgT0sKKworUlVOKHZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgn
c3JjJykpCisKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29u
dGVudC9zaWxlbmNlLm1wZycpIE9LCitFWFBFQ1RFRCAoaXNOYU4odmlkZW8uZHVyYXRpb24pID09
ICdmYWxzZScpIE9LCisKK0VORCBPRiBURVNUCitUZXN0IHRoYXQgcmVtb3ZpbmcgdmFsaWQgJ3Ny
YycgYXR0cmlidXRlIERPRVMgTk9UIHRyaWdnZXIgbG9hZCBvZiA8c291cmNlPiBlbGVtZW50cwpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUuaHRtbAkocmV2aXNpb24gNDE2
NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcmVtb3ZlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTkgKzEsNTIgQEAKKzxodG1sPgogPGJvZHk+Ci08ZGl2PgotVGVzdCB0aGF0
IHJlbW92aW5nIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZAotPC9kaXY+Ci08c2NyaXB0IHNy
Yz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotPHZpZGVvIHNyYz1ib2d1cyBjb250cm9scz4KLSAg
ICA8c291cmNlIHNyYz1jb250ZW50L3Rlc3QubXA0Pjwvc291cmNlPgotPC92aWRlbz4KLTxzY3Jp
cHQ+Ci0gICAgdmlkZW8gPSBtZWRpYSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2
aWRlbycpWzBdOwotICAgIHdhaXRGb3JFdmVudCgnZW1wdGllZCcsIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdmlkZW8ucmVtb3ZlQXR0cmlidXRlKCdzcmMnKQorICAgIDxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+CiAKLSAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnLCBm
dW5jdGlvbiAoKSB7IAotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRl
by5jdXJyZW50U3JjKSIsICJjb250ZW50L3Rlc3QubXA0Iik7CisgICAgPHZpZGVvIHNyYz1jb250
ZW50L3NpbGVuY2UubXBnIGNvbnRyb2xzPgorICAgICAgICA8c291cmNlIHNyYz1jb250ZW50L3Rl
c3QubXA0PgorICAgIDwvdmlkZW8+CisKKyAgICA8cD5UZXN0IHRoYXQgcmVtb3ZpbmcgdmFsaWQg
J3NyYycgYXR0cmlidXRlIERPRVMgTk9UIHRyaWdnZXIgbG9hZCBvZiAmbHQ7c291cmNlJmd0OyBl
bGVtZW50czwvcD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KworICAgICAgICB2YXIgbG9hZENvdW50ID0gMDsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RTcmMoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZl
VVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvc2lsZW5jZS5tcGciKTsKKyAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgiaXNOYU4odmlkZW8uZHVyYXRpb24pIiwgZmFsc2UpOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxv
YWRlZG1ldGFkYXRhKCkKKyAgICAgICAgeworICAgICAgICAgICAgKytsb2FkQ291bnQ7CisgICAg
ICAgICAgICBpZiAobG9hZENvdW50ID09IDEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGVzdFNyYygpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucmVtb3ZlQXR0cmlidXRl
KCdzcmMnKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+
RkFJTDwvc3Bhbj4gOiAnbG9hZENvdW50JyBmaXJlZCAiICsgbG9hZENvdW50ICsgInRpbWVzIiAp
OworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9u
IHNvbWVUaW1lTGF0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0U3JjKCk7CiAgICAg
ICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgIH0gKTsKLSAgICB9KTsKLTwvc2NyaXB0PgorICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZGVkbWV0YWRhdGEnLCBsb2FkZWRt
ZXRhZGF0YSk7CisgICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVMYXRlciwgNDAwKSA7CisgICAg
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5q
cwkocmV2aXNpb24gNDE2NTgpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorCiBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKQEAgLTYsMTEgKzcsMTYgQEAgdmFy
IHZpZGVvOwogdmFyIG1lZGlhOwogdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7Ci10cnkgewotICAg
IHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07Ci0gICAg
aWYgKHZpZGVvKQotICAgICAgICBtZWRpYSA9IHZpZGVvOwotfSBjYXRjaCAoZXgpIHsgfQorZmlu
ZE1lZGlhRWxlbWVudCgpOworCitmdW5jdGlvbiBmaW5kTWVkaWFFbGVtZW50KCkKK3sKKyAgICB0
cnkgeworICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRl
bycpWzBdOworICAgICAgICBpZiAodmlkZW8pCisgICAgICAgICAgICBtZWRpYSA9IHZpZGVvOwor
ICAgIH0gY2F0Y2ggKGV4KSB7IH0KK30KIAogZnVuY3Rpb24gaGFuZ2VkKCkKIHsKQEAgLTQ3LDkg
KzUzLDExIEBAIGZ1bmN0aW9uIHRlc3RFeHBlY3RlZCh0ZXN0RnVuY1N0cmluZywgZXgKICAgICB2
YXIgc3VjY2VzcyA9IGZhbHNlOwogICAgIHN3aXRjaCAoY29tcGFyaXNvbikKICAgICB7Ci0gICAg
ICAgIGNhc2UgJzwnOiAgc3VjY2VzcyA9IG9ic2VydmVkIDwgIGV4cGVjdGVkOyBicmVhazsKLSAg
ICAgICAgY2FzZSAnPic6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPiAgZXhwZWN0ZWQ7IGJyZWFrOwot
ICAgICAgICBjYXNlICchPSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCAhPSBleHBlY3RlZDsgYnJlYWs7
CisgICAgICAgIGNhc2UgJzwnOiAgIHN1Y2Nlc3MgPSBvYnNlcnZlZCA8ICBleHBlY3RlZDsgYnJl
YWs7CisgICAgICAgIGNhc2UgJzw9Jzogc3VjY2VzcyA9IG9ic2VydmVkIDw9IGV4cGVjdGVkOyBi
cmVhazsKKyAgICAgICAgY2FzZSAnPic6ICAgc3VjY2VzcyA9IG9ic2VydmVkID4gIGV4cGVjdGVk
OyBicmVhazsKKyAgICAgICAgY2FzZSAnPj0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPj0gZXhwZWN0
ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICchPSc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgIT0gZXhw
ZWN0ZWQ7IGJyZWFrOwogICAgICAgICBjYXNlICc9PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA9PSBl
eHBlY3RlZDsgYnJlYWs7CiAgICAgfQogICAgIApAQCAtOTMsNyArMTAxLDcgQEAgZnVuY3Rpb24g
d2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZQogICAgICAgICAgICAgZW5kVGVzdCgpOyAg
ICAKICAgICB9CiAKLSAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50
Q2FsbGJhY2spOyAgICAKKyAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2
ZW50Q2FsbGJhY2spOwogfQogCiBmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKGV2ZW50
TmFtZSwgdGVzdEZ1bmNTdHJpbmcpCkBAIC0xNTAsNiArMTU4LDEzIEBAIGZ1bmN0aW9uIGZhaWxU
ZXN0SW4obXMpCiAgICAgfSwgbXMpOwogfQogCitmdW5jdGlvbiBmYWlsVGVzdCh0ZXh0KQorewor
ICAgIGxvZ1Jlc3VsdChmYXNsZSwgdGV4dCk7CisgICAgZW5kVGVzdCgpOworfQorCisKIGZ1bmN0
aW9uIGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQogewogICAgIGlmIChzdWNjZXNzKQpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS13aGlsZS1wbGF5aW5nLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10aW1ldXBkYXRlLXdo
aWxlLXBsYXlpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tdGltZXVwZGF0ZS13aGlsZS1wbGF5aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNyBAQAorVGVzdCAndGltZXVwZGF0ZScgZXZlbnRzIGFyZSBwb3N0ZWQg
d2hpbGUgcGxheWluZyBidXQgbm90IHdoaWxlIHBhdXNlZC4KKworUlVOKHZpZGVvLnBsYXkoKSkK
KworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQoZHVyYXRpb25jaGFuZ2UpCitFVkVOVChsb2FkZWRt
ZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQorRVZFTlQoY2FucGxh
eXRocm91Z2gpCitFVkVOVChwbGF5aW5nKQorCitSVU4odmlkZW8ucGF1c2UoKSkKK0VWRU5UKHBh
dXNlKQorCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10aW1l
dXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby10aW1ldXBkYXRlLXdoaWxlLXBsYXlpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXRpbWV1cGRhdGUtd2hpbGUtcGxheWluZy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACis8aHRtbD4KKzxib2R5PgorICAgIAorICAgIDx2aWRl
byBzcmM9Y29udGVudC90ZXN0Lm1wNCBjb250cm9scz48L3ZpZGVvPgorCisgICAgPHA+CisgICAg
VGVzdCAndGltZXVwZGF0ZScgZXZlbnRzIGFyZSBwb3N0ZWQgd2hpbGUgcGxheWluZyBidXQgbm90
IHdoaWxlIHBhdXNlZC4KKyAgICA8L3AKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgCisgICAgICAgIHZhciB0aW1ldXBkYXRlRXZlbnRD
b3VudCA9IDA7CisgICAgICAgIHZhciBjb3VudFdoaWxlUGxheWluZyA9IDA7CisKKyAgICAgICAg
ZnVuY3Rpb24gc29tZVRpbWVMYXRlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb3Vu
dFdoaWxlUGxheWluZyAhPSB0aW1ldXBkYXRlRXZlbnRDb3VudCkKKyAgICAgICAgICAgICAgICBm
YWlsVGVzdCgiJ3RpbWV1cGRhdGUnIGV2ZW50cyBwb3N0ZWQgYWZ0ZXIgcGF1c2luZyIpOworICAg
ICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcGF1c2Uo
KQorICAgICAgICB7CisgICAgICAgICAgICBjb3VudFdoaWxlUGxheWluZyA9IHRpbWV1cGRhdGVF
dmVudENvdW50OworICAgICAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCA0MDApIDsK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGZ1bmN0aW9uIHBsYXlpbmcoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsgcnVuKCJ2aWRlby5wYXVzZSgpIik7IH0sIDUwMCkgOworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lZGlhLmFkZEV2ZW50
TGlzdGVuZXIoInRpbWV1cGRhdGUiLCBmdW5jdGlvbiAoKSB7ICsrdGltZXVwZGF0ZUV2ZW50Q291
bnQ7IH0pOworCisgICAgICAgIHdhaXRGb3JFdmVudCgnZXJyb3InKTsKKyAgICAgICAgd2FpdEZv
ckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hhbmdlIik7
CisgICAgICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgICAgICB3YWl0Rm9yRXZlbnQo
InJhdGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJkdXJhdGlvbmNoYW5nZSIpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgICAgIHdhaXRGb3JF
dmVudCgibG9hZGVkZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAg
ICAgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgICAgICB3YWl0Rm9yRXZl
bnQoInBhdXNlIiwgcGF1c2UpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInBsYXkiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCJwbGF5aW5nIiwgcGxheWluZyk7CisKKyAgICAgICAgcnVuKCJ2aWRl
by5wbGF5KCkiKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICA8L3NjcmlwdD4KKwor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="14102"
          type_id="1"
          status="-"
          setter="adele"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28751</attachid>
            <date>2009-03-19 07:38:45 -0700</date>
            <delta_ts>2009-03-20 11:55:11 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>03.19.2009.txt</filename>
            <type>text/plain</type>
            <size>165630</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTgyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAxIEBACisyMDA5LTAzLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU4OAorICAgICAg
ICAKKyAgICAgICAgVXBkYXRlIG1lZGlhIGVsZW1lbnQgaW1wbGVtZW50YXRpb24gdG8gY3VycmVu
dCBIVE1MNSBzcGVjCisKKyAgICAgICAgTmV3IHRlc3RzOiAKKyAgICAgICAgICAgICAgIG1lZGlh
L21lZGlhLWNvbnN0YW50cy5odG1sCisgICAgICAgICAgICAgICBtZWRpYS92aWRlby1zZWVrLW5v
LXNyYy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc291cmNlLWFk
ZC1zcmMuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3Zl
Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS5odG1sCisg
ICAgICAgICAgICAgICBtZWRpYS92aWRlby10aW1ldXBkYXRlLWR1cmluZy1wbGF5YmFjay5odG1s
CisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBSZW1vdmUgb2Jzb2x1dGUgZXZlbnRzLCBh
ZGQgbmV3IG9uZXMuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFs
aXplIG5ldyBtZW1iZXIgdmFycy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQpOiBUcmlnZ2VyIGxvYWQoKSBvbmx5IHdoZW4gd2UgZG9uJ3QKKyAg
ICAgICAgaGF2ZSBhIHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQpOiBEZWFsIHdpdGggc3RhdGUgbmFtZSBjaGFuZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVQcm9ncmVzc0V2ZW50KTog
TmV3LCBjcmVhdGUgYSBwcm9ncmVzcyBldmVudCBhbmQgCisgICAgICAgIGFkZCBpdCB0byB0aGUg
ZXZlbnQgcXVldWUgdG8gYmUgZGlzcGF0Y2ggd2hlbiB0aGUgdGltZXIgZmlyZXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KTogTmV3LCBjcmVhdGUg
YSBnZW5lcmljIGV2ZW50IGFuZCBhZGQKKyAgICAgICAgaXQgdG8gdGhlIGV2ZW50IHF1ZXVlIHRv
IGJlIGRpc3BhdGNoIHdoZW4gdGhlIHRpbWVyIGZpcmVzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZW5xdWV1ZUV2ZW50KTogQWRkIGFuIGV2ZW50IHRvIHRoZSBxdWV1ZSBh
bmQgdGlja2UgdGhlIAorICAgICAgICBhc3luY2ggZXZlbnQgdGltZXIuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJGaXJlZCk6IERpc3BhdGNoIGFs
bCBwZW5kaW5nIGV2ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omxv
YWRUaW1lckZpcmVkKTogRWl0aGVyIHRyaWdnZXIgdGhlIGluaXRpYWwgbG9hZCBvcgorICAgICAg
ICB0cnkgdG8gbG9hZCB0aGUgbmV4dCA8c291cmNlPiB1cmwuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkKTogTWlub3Igc3R5bGUgY2hhbmdlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKTogVGhlIGZpcnN0IHBhcnQgb2Yg
dGhlIHNwZWMgbG9hZCBhbGdvcml0aG0sIGNsZWFudXAKKyAgICAgICAgdGhlIGN1cnJlbnQgbG9h
ZCAoaWYgYW55KSBhbmQgc2V0IHVwIHN0YXRlIGZvciBhIG5ldyBsb2FkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSk6IERlYWwgd2l0aCBu
byAnc3JjJyBvciA8c291cmNlPiwgcG9zdCAnbG9hZHN0YXJ0JworICAgICAgICBldmVudCwgYW5k
IGluaXRpYXRlIGxvYWQgZnJvbSAnc3JjJyBpZiBwcmVzZW50LgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRTb3VyY2VDaGlsZCk6IEluaXRpYXRlIGxvYWQgZnJv
bSBuZXh0IDxzb3VyY2U+IHVybCwgb3IgdHJpZ2dlcgorICAgICAgICBub25lU3VwcG9ydGVkKCkg
aWYgbm8gbW9yZSB0byBjb25zaWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWRSZXNvdXJjZSk6IEluc3RhbnRpYXRlIGEgbmV3IE1lZGlhUGxheWVyIGFuZCBhc2sg
aXQgdG8gbG9hZCBhIHVybC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0
YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKTogU3RhcnQgdGhlIHJlcGVhdGluZyBwcm9ncmVzcyBldmVu
dCB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBwb3J0
ZWQpOiBQb3N0IGVycm9yIGV2ZW50IGFuZCBzZXQgdXAgc3RhdGUgd2hlbiBubyB2YWxpZCAKKyAg
ICAgICAgbWVkaWEgdXJsIHdhcyBmb3VuZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhRW5naW5lRXJyb3IpOiBQb3N0IGVycm9yIGV2ZW50IGFuZCBzZXQgdXAgc3Rh
dGUgd2hlbiBubyB2YWxpZCAKKyAgICAgICAgbWVkaWEgZW5naW5lIGZhaWxlZCB3aXRoIGEgZGVj
b2RlIGVycm9yIG9yIGEgbmV0d29yayBlcnJvci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUpOiBVcGRhdGVkIGZvciBuZXcg
c3BlYyBuZXR3b3JrIHN0YXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6IFVwZGF0ZWQgZm9yIG5ldyBzcGVjIHJlYWR5IHN0
YXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRp
bWVyRmlyZWQpOiBCYWlsIGlmIHRoZSBuZXR3b3JrIGlzIG5vdCBhY3RpdmUuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVrKTogUmV0dXJuIElOVkFMSURfU1RBVEVfRVJS
IGV4Y2VwdGlvbiBpZiBzdGF0ZSBpcyB0b28gbG93IG9yCisgICAgICAgIGlmIHBsYXllciBoYXNu
J3QgYmVlbiBzZXQgdXAgeWV0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhc2UgbG9hZCgpIGlzIGFz
eW5jLiBDbGVhciB0aGUgZmxhZworICAgICAgICB3ZSB1c2UgdG8gZ3VhcmQgYWdhaW5zdCBzZW5k
aW5nICdlbmRlZCcgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpkdXJhdGlvbik6IERvbid0IGJvdGhlciBjYWxsaW5nIG1lZGlhIGVuZ2luZSBiZWZv
cmUgaXQgaGFzIG1ldGFkYXRhLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0RGVmYXVsdFBsYXliYWNrUmF0ZSk6IFJlbW92ZSBleGNlcHRpb24gcGFyYW0sIDAgaXMgbm8g
bG9uZ2VyIGFuCisgICAgICAgIGludmFsaWQgcmF0ZS4gCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUpOiBSZW1vdmUgZXhjZXB0aW9uIHBhcmFtLCAw
IGlzIG5vIGxvbmdlciBhbgorICAgICAgICBpbnZhbGlkIHJhdGUuIENhY2hlIHJhdGUgYmVpbmcg
c2V0IHNvIHdlIGNhbiB1c2UgaXQgbGF0ZXIgaWYgbWVkaWEgZW5naW5lIGlzbid0IHJlYWR5IG5v
dy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOiBSZW1vdmUgZXhj
ZXB0aW9uIHBhcmFtLCBwbGF5KCkgYmVmb3JlIGxvYWQoKSBub3cganVzdAorICAgICAgICBzdGFy
dHMgbG9hZGluZyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IFJlbW92ZSBleGNlcHRpb24gcGFyYW0uIEZpcmUgJ3dhaXRp
bmcnIG9yICdwbGF5aW5nJworICAgICAgICBldmVudCBkZXBlbmRpbmcgb24gY3VycmVudCBzdGF0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKTogUmVtb3ZlIGV4
Y2VwdGlvbiBwYXJhbSwgcGF1c2UoKSBiZWZvcmUgbG9hZCgpIG5vdyBqdXN0CisgICAgICAgIHN0
YXJ0cyBsb2FkaW5nIGFzeW5jaHJvbm91c2x5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGF1c2VJbnRlcm5hbCk6IFJlbW92ZSBleGNlcHRpb24gcGFyYW0uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUpOiBkaXNwYXRjaEV2ZW50QXN5
bmMgLT4gc2NoZWR1bGVFdmVudAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0TXV0ZWQpOiBkaXNwYXRjaEV2ZW50QXN5bmMgLT4gc2NoZWR1bGVFdmVudAorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKTogUmVtb3ZlIGV4Y2Vw
dGlvbiBwYXJhbS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2Ny
dWJiaW5nKTogcGF1c2UoKSBkb2Vzbid0IHRha2UgYW4gZXhjZXB0aW9uIHBhcmFtLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIp
OiBOZXcsIHN0YXJ0cyB0aW1lciB0aGF0IGZpcmVzIDQgdGltZXMgcGVyCisgICAgICAgIHNlY29u
ZCB3aGVuIHRoZSBtb3ZpZSBpcyBwbGF5aW5nIHRvIHRpbWV1cGRhdGUgc28gd2UgY2FuIHBvc3Qg
J3RpbWV1cGRhdGUnIGV2ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKTogVGltZXIgcHJvYy4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KTogQm90dGxlbmVj
ayBhcm91bmQgc2NoZWR1bGluZyBhICd0aW1ldXBkYXRlJworICAgICAgICBldmVudCBiZWNhdXNl
IHdlIGJvdGggZmlyZSB0aGVtIHRoZW0gd2hlbiB0aGUgc3BlYyBzYXlzIHdlIHNob3VsZCBhbmQg
d2hlbiB0aGUgbWVkaWEgZW5naW5lCisgICAgICAgIHNheXMgdGhhdCB0aW1lIGhhcyBqdW1wZWQs
IGJ1dCB3ZSBkb24ndCB3YW50IHRvIGZpcmUgbW9yZSB0aGFuIG9uZSBhdCBhIGdpdmVuIG1vdmll
IHRpbWUuIFdlIGFsc28KKyAgICAgICAgdXNlIHRoaXMgYm90dGxlbmVjayB0byBrZWVwIHRyYWNr
IG9mIHRoZSBsYXN0IHRpbWUgb25lIHdhcyBwb3N0ZWQgc28gd2Ugd29uJ3QgZmlyZSB0b28gb2Z0
ZW4KKyAgICAgICAgZHVyaW5nIHBsYXliYWNrLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6Y2FuUGxheSk6IHJlYWR5U3RhdGUgbm93IHRyYWNrcyB3aGV0aGVyIG9yIG5vdCB3
ZSBoYXZlIG1ldGFkYXRhLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aGF2
ZVBvdGVudGlhbFNvdXJjZUNoaWxkKTogTmV3LCBjaGVja3MgdG8gc2VlIGlmIHRoZXJlIGFyZSBh
IDxzb3VyY2U+CisgICAgICAgIGVsZW1lbnQgd2l0aCBhICdzcmMnIGF0dHJpYnV0ZSB0aGF0IHdl
IGhhdmUgbm90IHRyaWVkIHRvIGxvYWQgeWV0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bmV4dFNvdXJjZUNoaWxkKTogTmV3LCByZXR1cm5zIHRoZSB1cmwgYW5kIGNvbnRl
bnQgdHlwZSBvZiB0aGUgbmV4dAorICAgICAgICA8c291cmNlPiBlbGVtZW50IHRoYXQgd2UgaGF2
ZW4ndCB0cmllZCB0byBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6IFNjaGVkdWxlICdzZWVrZWQnIGV2ZW50IHdoZW4gc2Vl
a2luZyBjb21wbGV0ZXMuCisgICAgICAgIFNldCBhIGZsYWcgd2hlbiB3ZSBwb3N0IHRoZSAnZW5k
ZWQnIGV2ZW50LCBjbGVhciBpdCB3aGVuIHRpbWUgY2hhbmdlZCBhbmQgd2UgYXJlbid0IGF0IHRo
ZSBlbmQgc2luY2UKKyAgICAgICAgc29tZSBtZWRpYSBlbmdpbmVzIGNhbGwgdGhpcyBwcm9jIG1v
cmUgdGhhbiBvbmNlIHdoZW4gcGxheWJhY2sgcmVhY2hlcyB0aGUgZW5kIGFuZCBzdG9wcywgYnV0
IHdlCisgICAgICAgIGRvbid0IHdhbnQgdG8gcG9zdCAnZW5kZWQnIG1vcmUgdGhhbiBvbmNlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNo
YW5nZWQpOiBOZXcsIGFkZGVkIHNvIG1lZGlhIGVuZ2luZSBjYW4gaW5mb3JtCisgICAgICAgIHdo
ZW4gdGhlIG1vdmllIGR1cmF0aW9uIGNoYW5nZXMgYW5kIHdlIGNhbiBwb3N0ICdkdXJhdGlvbmNo
YW5nZWQnIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJSYXRlQ2hhbmdlZCk6IE5ldywgYWRkZWQgc28gbWVkaWEgZW5naW5lIGNhbiBpbmZvcm0g
d2hlbgorICAgICAgICB0aGUgcmF0ZSBjaGFuZ2VkIGFuZCB3ZSBjYW4gdXBkYXRlZCBvdXIgY2Fj
aGVkIHJhdGUuIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGtub3cKKyAg
ICAgICAgcG9zdCBwZXJpb2RpYyAndGltZXVwZGF0ZScgZXZlbnRzIHdoZW4gdGhlIG1vdmllIGlz
IGFjdHVhbGx5IHBsYXlpbmcsIGFuZCBiZWNhdXNlIHdlIHdhbnQgdG8ga25vdworICAgICAgICB0
aGUgYWN0dWFsIHBsYXliYWNrIHJhdGUgd2hlbiBpdCBkaWZmZXJzIGZyb20gd2hhdCB3ZSB0cmll
ZCB0byBzZXQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clNpemVDaGFuZ2VkKTogTmV3LCBhZGRlZCBzbyBtZWRpYSBlbmdpbmUgY2FuIGluZm9ybSB3aGVu
CisgICAgICAgIGEgbW92aWUncyBpbnRyaW5zaWMgc2l6ZSBjaGFuZ2VzIGFuZCB3ZSBjYW4gaW5m
b3JtIHRoZSByZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBv
dGVudGlhbGx5UGxheWluZyk6IFJlbmFtZWQgZnJvbSBhY3RpdmVseVBsYXlpbmcgc2luY2UgdGhl
IHNwZWMgbm93CisgICAgICAgIHVzZXMgImFjdGl2ZWx5IHBsYXlpbmciIGZvciB0aGlzIGNvbmNl
cHQuIFVwZGF0ZSBsb2dpYyBmb3IgbmV3IHN0YXRlIG5hbWVzIGFuZCB1bi1jb21tZW50IGNhbGxz
CisgICAgICAgIHRvIHN0b3BwZWREdWVUb0Vycm9ycygpIGFuZCBwYXVzZWRGb3JVc2VySW50ZXJh
Y3Rpb24oKSBzaW5jZSB0aGUgc3BlYyBzYXlzIHRob3NlIGNvbmRpZGl0b25zCisgICAgICAgIGFy
ZSBwYXJ0IG9mIHRoZSBhbnN3ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjplbmRlZFBsYXliYWNrKTogVXBkYXRlIGxvZ2ljIGZvciBuZXcgc3RhdGUgbmFtZXMuIAorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3RvcHBlZER1ZVRvRXJyb3JzKTogTmV3
LCBzcGVjIHNheXMgdGhpcyBsb2dpYyBzaG91bGQgYmUgcGFydCBvZgorICAgICAgICB0aGUgZGV0
ZXJtaW5hdGlvbiBvZiAicG90ZW50aWFsbHkgcGxheWluZyIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZWRGb3JVc2VySW50ZXJhY3Rpb24pOiBOZXcsIHBsYWNlaG9s
ZGVyIGZvciB3aGVuIChpZikgdXNlcgorICAgICAgICBhZ2VudCBzdXBwb3J0cyB0aGlzIHNwZWMg
Y29uY2VwdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlT
dGF0ZSk6IFN0b3AgdGltZXIgdXNlZCB0byBmaXJlIHBlcmlvZGljICd0aW1ldXBkYXRlJyAKKyAg
ICAgICAgZXZlbnRzIHdoZW4gd2UgcGF1c2VzIHRoZSBtb3ZpZS4gU2V0IHRoZSBtZWRpYSBlbmdp
bmUgcmF0ZSBiZWZvcmUgY2FsbGluZyBwbGF5KCkgaW4gY2FzZSBpdAorICAgICAgICB3YXNuJ3Qg
c2V0IHVwIHdoZW4gdGhlIHJhdGUgd2FzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzdG9wUGVyaW9kaWNUaW1lcnMpOiBOZXcsIHN0b3AgdGhlIHByb2dyZXNz
IGV2ZW50IGFuZCAndGltZXVwYXRlJworICAgICAgICBldmVudCB0aW1lcnMuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCk6IE5ldywgbG9naWMg
cHVsbGVkIG91dCBvZiBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZQorICAgICAgICBhbmQgdXBk
YXRlZCBmb3IgdGhlIGN1cnJlbnQgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKTogTW92ZWQgc29tZSBsb2dpYyB0byB1
c2VyQ2FuY2VsbGVkTG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRv
Y3VtZW50RGlkQmVjb21lQWN0aXZlKTogVXBkYXRlIGNvbW1lbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6aW5pdGlhbFVSTCk6IFVwZGF0ZSBmb3IgcmVmYWN0b3Jpbmcg
b2YgY29kZSB0aGF0IGRldGVybWluZXMgdGhlIAorICAgICAgICBpbml0aWFsIHVybC4KKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogQ2hhbmdlIFJlYWR5U3RhdGUgYW5kIE5ldHdv
cmtTdGF0ZSBlbnVtcyB0byBtYXRjaCBuYW1lcyBpbiB0aGUgc3BlYywKKyAgICAgICAgdXBkYXRl
IGZvciBjaGFuZ2VzIGluIC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjopOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6IFVwZGF0ZSByZWFkeSBz
dGF0ZSBhbmQgbmV0d29yayBzdGF0ZSBjb25zdGFudHMgZm9yIHNwZWMgY2hhbmdlcy4KKyAgICAg
ICAgZGVmYXVsdFBsYXliYWNrUmF0ZSwgcGxheWJhY2tSYXRlLCBwbGF5KCksIGFuZCBwYXVzZSgp
IG5vIGxvbmdlciByYWlzZSBleGNlcHRpb25zLgorCisgICAgICAgICogaHRtbC9IVE1MU291cmNl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQpOiBVcGRhdGUgZm9yIG5ldHdvcmsgc3RhdGUgbmFtZSBjaGFuZ2VzLgor
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZVBvc3RlckltYWdlKTogVXBkYXRlIGZvciByZWFkeSBz
dGF0ZSBuYW1lIGNoYW5nZXMuCisKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRXJyb3I6Oik6IGFkZCBNRURJQV9FUlJfTk9ORV9TVVBQT1JURUQu
CisKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaWRsOiBhZGQgTUVESUFfRVJSX05PTkVfU1VQ
UE9SVEVELgorCisgICAgICAgICogbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IHBsYXkoKSBhbmQg
cGF1c2UoKSBkb24ndCB0YWtlIGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bGxNZWRpYVBsYXll
clByaXZhdGU6OnJlYWR5U3RhdGUpOiBVcGRhdGUgZm9yIG5ld3Rvcmsgc3RhdGUgbmFtZSBjaGFu
Z2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNpemVDaGFuZ2VkKTogTmV3LCBz
byBlbmdpbmUgY2FuIHJlcG9ydCBpbnRyaW5zaWMgc2l6ZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OnJhdGVDaGFuZ2VkKTogTmV3LCBzbyBlbmdpbmUgY2FuIHJlcG9y
dCByYXRlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6ZHVyYXRpb25D
aGFuZ2VkKTogTmV3LCBzbyBlbmdpbmUgY2FuIHJlcG9ydCBkdXJhdGlvbiBjaGFuZ2VzLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6IFVwZGF0ZSBOZXR3b3JrU3Rh
dGUgYW5kIFJlYWR5U3RhdGUgZW51bSBuYW1lcyB0byBtYXRjaCBzcGVjCisgICAgICAgIHN0YXRl
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckR1cmF0
aW9uQ2hhbmdlZCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50Ojpt
ZWRpYVBsYXllclJhdGVDaGFuZ2VkKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQpOiBOZXcuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkg
c3RhdGUgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
Ojpsb2FkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnVw
ZGF0ZVN0YXRlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
Ojpsb2FkaW5nRmFpbGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaDogVXBkYXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0
YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgUmVtb3ZlIGVuZFBvaW50VGltZXIsIGl0IGlzIG5v
IGxvbmdlciBuZWNlc3NhcnkuIEFkZCBtX2VuYWJsZWRUcmFja0NvdW50IGFuZCBtX2R1cmF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjptZXRhRGF0YUF2YWlsYWJs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXll
clByaXZhdGUpOiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lciBvciBtX2VuZFRpbWUuIEluaXRpYWxp
emUKKyAgICAgICAgbV9lbmFibGVkVHJhY2tDb3VudCBhbmQgbV9kdXJhdGlvbi4gVXBkYXRlIGZv
ciBuZXR3b3JrL3JlYWR5IHN0YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6bG9hZCk6IFVwZGF0ZSBmb3IgbmV0d29yay9yZWFkeSBzdGF0ZSBu
YW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnBsYXkp
OiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6cGF1c2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZTo6Y3VycmVudFRpbWUpOiBObyBtb3JlIG1fZW5kVGltZS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZTo6c2Vlayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjpkb1NlZWspOiBEaXR0bywgcGx1cyBkb24ndCBjYWxsIHNldFJhdGUo
MCkgd2hlbiB0aGUgcmF0ZSBpcworICAgICAgICBhbHJlYWR5IHplcm8uCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnNldEVuZFRpbWUpOiBObyBtb3JlIG1fZW5kVGltZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKTogVXBk
YXRlIGZvciBuZXR3b3JrL3JlYWR5IHN0YXRlIG5hbWUgY2hhbmdlcy4gUmV0dXJuCisgICAgICAg
IGRpZmZlcmVudCBlcnJvcnMgZGVwZW5kaW5nIG9uIHdoYXQgY2F1c2VzIGEgZmFpbHVyZS4gV2F0
Y2ggZm9yIGFuZCByZXBvcnQgZHVyYXRpb24gY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6cmF0ZUNoYW5nZWQpOiBSZXBvcnQgcmF0ZSBjaGFuZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzaXplQ2hhbmdlZCk6IFJlcG9ydCBz
aXplIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmRpZEVu
ZCk6IE5vIG1vcmUgZW5kcG9pbnQgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGU6OnNldFZpc2libGUpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxl
VW5zdXBwb3J0ZWRUcmFja3MpOiBEb24ndCByZXR1cm4gbnVtYmVyIG9mIHVuc3VwcG9ydGVkCisg
ICAgICAgIHRyYWNrcywgc3RvcmUgaW4gbV9lbmFibGVkVHJhY2tDb3VudCBzbyB3ZSBjYW4gdXNl
IGl0IHRvIGhlbHAgZGV0ZXJtaW5lIGNhdXNlcyBvZiBmYWlsdXJlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKTogVXBkYXRl
IGZvciBuZXR3b3JrL3JlYWR5IHN0YXRlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZTo6bmF0dXJhbFNpemUpOiBEaXR0by4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUp
OiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lci4gVXBkYXRlIGZvciAKKyAgICAgICAgbmV0d29yay9y
ZWFkeSBzdGF0ZSBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OmxvYWQpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2Vz
LiBObyBtb3JlCisgICAgICAgIG1fZW5kUG9pbnRUaW1lci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6cGxheSk6IE5vIG1vcmUgbV9lbmRQb2ludFRpbWVyLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwYXVzZSk6IERpdHRvLiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0RW5kVGltZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMpOiBVcGRhdGUgZm9y
IG5ldHdvcmsvcmVhZHkgc3RhdGUgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjpkaWRFbmQpOiBObyBtb3JlIG1fZW5kUG9pbnRUaW1lci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2lu
Lmg6CisKKyAgICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIpOiBVcGRhdGUgZm9yIG5ldHdvcmsvcmVhZHkgc3RhdGUgCisgICAgICAgIG5hbWUg
Y2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisKIDIwMDktMDMtMTkgIENhbWVyb24gWndh
cmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xp
dmVyIEh1bnQuCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA0MTgyNykKKysrIFdlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDI0ICsxMDIsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHdlYmtpdEJlZm9yZVRleHRJbnNlcnRlZCkgXAogICAg
IG1hY3JvKHdlYmtpdEVkaXRhYmxlQ29udGVudENoYW5nZWQpIFwKICAgICBcCi0gICAgbWFjcm8o
Y2Fuc2hvd2N1cnJlbnRmcmFtZSkgXAogICAgIG1hY3JvKGNhbnBsYXkpIFwKICAgICBtYWNybyhj
YW5wbGF5dGhyb3VnaCkgXAotICAgIG1hY3JvKGRhdGF1bmF2YWlsYWJsZSkgXAogICAgIG1hY3Jv
KGR1cmF0aW9uY2hhbmdlKSBcCiAgICAgbWFjcm8oZW1wdGllZCkgXAogICAgIG1hY3JvKGVuZGVk
KSBcCi0gICAgbWFjcm8obG9hZGVkZmlyc3RmcmFtZSkgXAorICAgIG1hY3JvKGxvYWRlZGRhdGEp
IFwKICAgICBtYWNybyhsb2FkZWRtZXRhZGF0YSkgXAogICAgIG1hY3JvKHBhdXNlKSBcCiAgICAg
bWFjcm8ocGxheSkgXAorICAgIG1hY3JvKHBsYXlpbmcpIFwKICAgICBtYWNybyhyYXRlY2hhbmdl
KSBcCisgICAgbWFjcm8oc2Vla2VkKSBcCisgICAgbWFjcm8oc2Vla2luZykgXAogICAgIG1hY3Jv
KHRpbWV1cGRhdGUpIFwKICAgICBtYWNybyh2b2x1bWVjaGFuZ2UpIFwKICAgICBtYWNybyh3YWl0
aW5nKSBcCiAgICAgXAogICAgIG1hY3JvKHByb2dyZXNzKSBcCiAgICAgbWFjcm8oc3RhbGxlZCkg
XAorICAgIG1hY3JvKHN1c3BlbmQpIFwKICAgICBcCiAgICAgbWFjcm8od2Via2l0QW5pbWF0aW9u
RW5kKSBcCiAgICAgbWFjcm8od2Via2l0QW5pbWF0aW9uU3RhcnQpIFwKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDQxODI3KQorKysgV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWRlby5oIgogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogI2luY2x1ZGUgIlJl
bmRlclBhcnRPYmplY3QuaCIKQEAgLTU4LDYgKzU5LDcgQEAKICNlbmRpZgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
bGltaXRzPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC03MCwyNyArNzIsMzMgQEAgSFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogICAgICwgbV9sb2FkVGltZXIo
dGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKQogICAgICwgbV9hc3luY0V2
ZW50VGltZXIodGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OmFzeW5jRXZlbnRUaW1lckZpcmVkKQog
ICAgICwgbV9wcm9ncmVzc0V2ZW50VGltZXIodGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnByb2dy
ZXNzRXZlbnRUaW1lckZpcmVkKQorICAgICwgbV9wbGF5YmFja1Byb2dyZXNzVGltZXIodGhpcywg
JkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKQorICAgICwgbV9w
bGF5YmFja1JhdGUoMS4wZikKICAgICAsIG1fZGVmYXVsdFBsYXliYWNrUmF0ZSgxLjBmKQotICAg
ICwgbV9uZXR3b3JrU3RhdGUoRU1QVFkpCi0gICAgLCBtX3JlYWR5U3RhdGUoREFUQV9VTkFWQUlM
QUJMRSkKLSAgICAsIG1fYmVndW4oZmFsc2UpCi0gICAgLCBtX2xvYWRlZEZpcnN0RnJhbWUoZmFs
c2UpCi0gICAgLCBtX2F1dG9wbGF5aW5nKHRydWUpCisgICAgLCBtX25ldHdvcmtTdGF0ZShORVRX
T1JLX0VNUFRZKQorICAgICwgbV9yZWFkeVN0YXRlKEhBVkVfTk9USElORykKICAgICAsIG1fdm9s
dW1lKDEuMGYpCi0gICAgLCBtX211dGVkKGZhbHNlKQotICAgICwgbV9wYXVzZWQodHJ1ZSkKLSAg
ICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1fY3VycmVudFRpbWVEdXJpbmdTZWVrKDApCiAg
ICAgLCBtX3ByZXZpb3VzUHJvZ3Jlc3MoMCkKICAgICAsIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUo
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpCi0gICAgLCBtX3NlbnRTdGFsbGVkRXZlbnQo
ZmFsc2UpCi0gICAgLCBtX2xvYWROZXN0aW5nTGV2ZWwoMCkKLSAgICAsIG1fdGVybWluYXRlTG9h
ZEJlbG93TmVzdGluZ0xldmVsKDApCi0gICAgLCBtX3BhdXNlZEludGVybmFsKGZhbHNlKQotICAg
ICwgbV9pbkFjdGl2ZURvY3VtZW50KHRydWUpCisgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRX
YWxsVGltZSgwKQorICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKG51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkpCisgICAgLCBtX2xvYWRTdGF0ZShXYWl0aW5nRm9yU291cmNl
KQorICAgICwgbV9jdXJyZW50U291cmNlTm9kZSgwKQogICAgICwgbV9wbGF5ZXIoMCkKICAgICAs
IG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQogICAgICwgbV9wcm9jZXNzaW5nTWVkaWFQ
bGF5ZXJDYWxsYmFjaygwKQorICAgICwgbV9wcm9jZXNzaW5nTG9hZChmYWxzZSkKKyAgICAsIG1f
ZGVsYXlpbmdUaGVMb2FkRXZlbnQoZmFsc2UpCisgICAgLCBtX2hhdmVGaXJlZExvYWRlZERhdGEo
ZmFsc2UpCisgICAgLCBtX2luQWN0aXZlRG9jdW1lbnQodHJ1ZSkKKyAgICAsIG1fYXV0b3BsYXlp
bmcodHJ1ZSkKKyAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3BhdXNlZCh0cnVlKQorICAg
ICwgbV9zZWVraW5nKGZhbHNlKQorICAgICwgbV9zZW50U3RhbGxlZEV2ZW50KGZhbHNlKQorICAg
ICwgbV9zZW50RW5kRXZlbnQoZmFsc2UpCisgICAgLCBtX3BhdXNlZEludGVybmFsKGZhbHNlKQog
ICAgICwgbV9zZW5kUHJvZ3Jlc3NFdmVudHModHJ1ZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKICAgICAsIG1fbmVlZFdpZGdldFVwZGF0ZShmYWxzZSkKQEAgLTExNyw5ICsx
MjUsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoCiAKICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKICAgICBpZiAoYXR0
ck5hbWUgPT0gc3JjQXR0cikgewotICAgICAgICAvLyAzLjE0LjkuMi4KLSAgICAgICAgLy8gY2hh
bmdlIHRvIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCgpCi0gICAgICAgIGlmIChpbkRvY3Vt
ZW50KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gRU1QVFkpCisgICAgICAgIC8vIGRvbid0IGhhdmUg
YSBzcmMgb3IgYW55IDxzb3VyY2U+IGNoaWxkcmVuLCB0cmlnZ2VyIGxvYWQKKyAgICAgICAgaWYg
KGluRG9jdW1lbnQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBXYWl0aW5nRm9yU291cmNlKQogICAgICAg
ICAgICAgc2NoZWR1bGVMb2FkKCk7CiAgICAgfSAKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCkBAIC0xNjYsMTAgKzE3Myw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCkKIHsKLSAgICBpZiAobmV0d29ya1N0YXRlKCkgIT0gRU1QVFkpIHsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgcGF1c2UoZWMpOwotICAgIH0KKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPiBORVRXT1JLX0VNUFRZKQorICAgICAgICBwYXVzZSgpOwogICAgIEhUTUxFbGVt
ZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CiAKQEAgLTIwMCw0MCArMjA1LDU5IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2FkKCkKICAgICBtX2xvYWRUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aW5pdEFuZERpc3BhdGNo
UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2NoZWR1bGVQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lKQogewogICAgIGlmICghbV9zZW5kUHJvZ3Jlc3NFdmVudHMpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIC8vIEZJWE1FOiBkb24ndCBzY2hlZHVsZSB0aW1ldXBkYXRlIG9yIHByb2dyZXNz
IGV2ZW50cyB1bmxlc3MgdGhlcmUgYXJlIHJlZ2lzdGVyZWQgbGlzdGVuZXJzCisvKgorICAgIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnByb2dyZXNzRXZlbnQgJiYgIWRvY3VtZW50KCkt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6eHh4eHh4X0xJU1RFTkVSKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCAm
JiAhZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50Ojp4eHh4eHhfTElTVEVORVIp
KQorICAgICAgICByZXR1cm47CisqLworCiAgICAgYm9vbCB0b3RhbEtub3duID0gbV9wbGF5ZXIg
JiYgbV9wbGF5ZXItPnRvdGFsQnl0ZXNLbm93bigpOwogICAgIHVuc2lnbmVkIGxvYWRlZCA9IG1f
cGxheWVyID8gbV9wbGF5ZXItPmJ5dGVzTG9hZGVkKCkgOiAwOwogICAgIHVuc2lnbmVkIHRvdGFs
ID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dG90YWxCeXRlcygpIDogMDsKLSAgICBkaXNwYXRjaFBy
b2dyZXNzRXZlbnQoZXZlbnROYW1lLCB0b3RhbEtub3duLCBsb2FkZWQsIHRvdGFsKTsKKworICAg
IFJlZlB0cjxQcm9ncmVzc0V2ZW50PiBldnQgPSBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lLCB0b3RhbEtub3duLCBsb2FkZWQsIHRvdGFsKTsKKyAgICBlbnF1ZXVlRXZlbnQoZXZ0KTsK
KwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxl
bWVudCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnRBc3luYyhj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2No
ZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBtX2FzeW5j
RXZlbnRzVG9EaXNwYXRjaC5hcHBlbmQoZXZlbnROYW1lKTsKKyAgICBlbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6ZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgbV9wZW5k
aW5nRXZlbnRzLmFwcGVuZChldmVudCk7CiAgICAgaWYgKCFtX2FzeW5jRXZlbnRUaW1lci5pc0Fj
dGl2ZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgbV9hc3luY0V2ZW50
VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRU
aW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewotICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZl
bnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgbG9hZEludGVybmFsKGVjKTsK
KyAgICBtX3BlbmRpbmdFdmVudHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICB1bnNpZ25lZCBj
b3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsg
bmR4IDwgY291bnQ7ICsrbmR4KSAKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRz
W25keF0ucmVsZWFzZSgpLCBlYyk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXN5bmNF
dmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQordm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAg
VmVjdG9yPEF0b21pY1N0cmluZz4gYXN5bmNFdmVudHNUb0Rpc3BhdGNoOwotICAgIG1fYXN5bmNF
dmVudHNUb0Rpc3BhdGNoLnN3YXAoYXN5bmNFdmVudHNUb0Rpc3BhdGNoKTsKLSAgICB1bnNpZ25l
ZCBjb3VudCA9IGFzeW5jRXZlbnRzVG9EaXNwYXRjaC5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBuID0gMDsgbiA8IGNvdW50OyArK24pCi0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGFz
eW5jRXZlbnRzVG9EaXNwYXRjaFtuXSwgZmFsc2UsIHRydWUpOworICAgIGlmIChtX2xvYWRTdGF0
ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCisgICAgICAgIGxvYWROZXh0U291cmNlQ2hp
bGQoKTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRJbnRlcm5hbCgpOwogfQogCiBzdGF0aWMgU3Ry
aW5nIHNlcmlhbGl6ZVRpbWVPZmZzZXQoZmxvYXQgdGltZSkKQEAgLTMyMSw1MiArMzQ1LDU1IEBA
IFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb24KIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3Jlc3RyaWN0
aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWRSZXN0cmljdGlvbiAmJiAhcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpIHsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdl
c3R1cmVGb3JMb2FkUmVzdHJpY3Rpb24gJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQogICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbG9hZEludGVybmFsKGVjKTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRJbnRlcm5hbCgpOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKIHsKLSAgICBTdHJpbmcg
bWVkaWFTcmM7Ci0gICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoIiIpOwotCi0gICAgLy8gMy4x
NC45LjQuIExvYWRpbmcgdGhlIG1lZGlhIHJlc291cmNlCi0gICAgLy8gMQotICAgIC8vIGlmIGFu
IGV2ZW50IGdlbmVyYXRlZCBkdXJpbmcgbG9hZCgpIGVuZHMgdXAgcmUtZW50ZXJpbmcgbG9hZCgp
LCB0ZXJtaW5hdGUgcHJldmlvdXMgaW5zdGFuY2VzCi0gICAgbV9sb2FkTmVzdGluZ0xldmVsKys7
Ci0gICAgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwgPSBtX2xvYWROZXN0aW5nTGV2
ZWw7Ci0gICAgCi0gICAgbV9wcm9ncmVzc0V2ZW50VGltZXIuc3RvcCgpOwotICAgIG1fc2VudFN0
YWxsZWRFdmVudCA9IGZhbHNlOworICAgIC8vIDEgLSBJZiB0aGUgbG9hZCgpIG1ldGhvZCBmb3Ig
dGhpcyBlbGVtZW50IGlzIGFscmVhZHkgYmVpbmcgaW52b2tlZCwgdGhlbiBhYm9ydCB0aGVzZSBz
dGVwcy4KKyAgICBpZiAobV9wcm9jZXNzaW5nTG9hZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
cHJvY2Vzc2luZ0xvYWQgPSB0cnVlOwogICAgIAorICAgIHN0b3BQZXJpb2RpY1RpbWVycygpOwog
ICAgIG1fbG9hZFRpbWVyLnN0b3AoKTsKLSAgICAKLSAgICAvLyAyCi0gICAgaWYgKG1fYmVndW4p
IHsKLSAgICAgICAgbV9iZWd1biA9IGZhbHNlOworICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IGZh
bHNlOworICAgIG1faGF2ZUZpcmVkTG9hZGVkRGF0YSA9IGZhbHNlOworCisgICAgLy8gMiAtIEFi
b3J0IGFueSBhbHJlYWR5LXJ1bm5pbmcgaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlIHNlbGVjdGlv
biBhbGdvcml0aG0gZm9yIHRoaXMgZWxlbWVudC4KKyAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0g
MDsKKworICAgIC8vIDMgLSBJZiB0aGVyZSBhcmUgYW55IHRhc2tzIGZyb20gdGhlIG1lZGlhIGVs
ZW1lbnQncyBtZWRpYSBlbGVtZW50IGV2ZW50IHRhc2sgc291cmNlIGluIAorICAgIC8vIG9uZSBv
ZiB0aGUgdGFzayBxdWV1ZXMsIHRoZW4gcmVtb3ZlIHRob3NlIHRhc2tzLgorICAgIG1fcGVuZGlu
Z0V2ZW50cy5jbGVhcigpOworICAgIAorICAgIC8vIDQgLSBJZiB0aGUgbWVkaWEgZWxlbWVudCdz
IG5ldHdvcmtTdGF0ZSBpcyBzZXQgdG8gTkVUV09SS19MT0FESU5HIG9yIE5FVFdPUktfSURMRSwg
c2V0IHRoZSAKKyAgICAvLyBlcnJvciBhdHRyaWJ1dGUgdG8gYSBuZXcgTWVkaWFFcnJvciBvYmpl
Y3Qgd2hvc2UgY29kZSBhdHRyaWJ1dGUgaXMgc2V0IHRvIE1FRElBX0VSUl9BQk9SVEVELCAKKyAg
ICAvLyBhbmQgZmlyZSBhIHByb2dyZXNzIGV2ZW50IGNhbGxlZCBhYm9ydCBhdCB0aGUgbWVkaWEg
ZWxlbWVudC4KKyAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19MT0FESU5HIHx8IG1f
bmV0d29ya1N0YXRlID09IE5FVFdPUktfSURMRSkgewogICAgICAgICBtX2Vycm9yID0gTWVkaWFF
cnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9BQk9SVEVEKTsKLSAgICAgICAgaWYg
KG1fc2VuZFByb2dyZXNzRXZlbnRzKQotICAgICAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jl
c3NFdmVudChldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgICAgIGlmIChtX2xvYWROZXN0
aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCkKLSAgICAgICAgICAg
IGdvdG8gZW5kOworICAgICAgICAKKyAgICAgICAgLy8gZmlyZSBzeW5jaHJvbm91cyAnYWJvcnQn
CisgICAgICAgIGJvb2wgdG90YWxLbm93biA9IG1fcGxheWVyICYmIG1fcGxheWVyLT50b3RhbEJ5
dGVzS25vd24oKTsKKyAgICAgICAgdW5zaWduZWQgbG9hZGVkID0gbV9wbGF5ZXIgPyBtX3BsYXll
ci0+Ynl0ZXNMb2FkZWQoKSA6IDA7CisgICAgICAgIHVuc2lnbmVkIHRvdGFsID0gbV9wbGF5ZXIg
PyBtX3BsYXllci0+dG90YWxCeXRlcygpIDogMDsKKyAgICAgICAgZGlzcGF0Y2hQcm9ncmVzc0V2
ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCB0b3RhbEtub3duLCBsb2FkZWQsIHRvdGFsKTsK
ICAgICB9CiAgICAgCi0gICAgLy8gMworICAgIC8vIDUgCiAgICAgbV9lcnJvciA9IDA7Ci0gICAg
bV9sb2FkZWRGaXJzdEZyYW1lID0gZmFsc2U7CiAgICAgbV9hdXRvcGxheWluZyA9IHRydWU7CiAK
LSAgICAvLyA0Ci0gICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1JhdGUoKSwgZWMp
OworICAgIC8vIDYKKyAgICBzZXRQbGF5YmFja1JhdGUoZGVmYXVsdFBsYXliYWNrUmF0ZSgpKTsK
ICAgICAKLSAgICAvLyA1Ci0gICAgaWYgKG5ldHdvcmtTdGF0ZSgpICE9IEVNUFRZKSB7Ci0gICAg
ICAgIG1fbmV0d29ya1N0YXRlID0gRU1QVFk7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IERBVEFf
VU5BVkFJTEFCTEU7CisgICAgLy8gNworICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JL
X0VNUFRZKSB7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKKyAgICAg
ICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOwogICAgICAgICBtX3BhdXNlZCA9IHRydWU7
CiAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwogICAgICAgICBpZiAobV9wbGF5ZXIpIHsKQEAg
LTM3NCwzMSArNDAxLDc4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKEV4
Y2UKICAgICAgICAgICAgIG1fcGxheWVyLT5zZWVrKDApOwogICAgICAgICB9CiAgICAgICAgIGRp
c3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQsIGZhbHNlLCB0cnVl
KTsKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJlbG93
TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgfQogICAgIAotICAgIC8v
IDYKLSAgICBtZWRpYVNyYyA9IHNlbGVjdE1lZGlhVVJMKGNvbnRlbnRUeXBlKTsKKyAgICBzZWxl
Y3RNZWRpYVJlc291cmNlKCk7CisgICAgbV9wcm9jZXNzaW5nTG9hZCA9IGZhbHNlOworfQorCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQoreworICAgIC8vIDEg
LSBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgbmVpdGhlciBhIHNyYyBhdHRyaWJ1dGUgbm9yIGFu
eSBzb3VyY2UgZWxlbWVudCBjaGlsZHJlbiwgcnVuIHRoZXNlIHN1YnN0ZXBzCisgICAgU3RyaW5n
IG1lZGlhU3JjID0gZ2V0QXR0cmlidXRlKHNyY0F0dHIpOworICAgIGlmICghbWVkaWFTcmMgJiYg
IWhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpKSB7CisgICAgICAgIG1fbG9hZFN0YXRlID0gV2Fp
dGluZ0ZvclNvdXJjZTsKKworICAgICAgICAvLyAxIC0gIFNldCB0aGUgbmV0d29ya1N0YXRlIHRv
IE5FVFdPUktfTk9fU09VUkNFCisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19OT19T
T1VSQ0U7CisgICAgICAgIAorICAgICAgICAvLyAyIC0gV2hpbGUgdGhlIG1lZGlhIGVsZW1lbnQg
aGFzIG5laXRoZXIgYSBzcmMgYXR0cmlidXRlIG5vciBhbnkgc291cmNlIGVsZW1lbnQgY2hpbGRy
ZW4sIAorICAgICAgICAvLyB3YWl0LiAoVGhpcyBzdGVwcyBtaWdodCB3YWl0IGZvcmV2ZXIuKQor
CisgICAgICAgIG1fZGVsYXlpbmdUaGVMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIDIKKyAgICBtX2RlbGF5aW5nVGhlTG9hZEV2ZW50ID0gdHJ1ZTsK
KworICAgIC8vIDMKKyAgICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTE9BRElORzsKKworICAg
IC8vIDQKKyAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmxvYWRzdGFydEV2
ZW50KTsKKworICAgIC8vIDUgLSBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBzcmMgYXR0cmli
dXRlLCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwcworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBl
KCIiKTsKKyAgICBpZiAoIW1lZGlhU3JjLmlzRW1wdHkoKSkgeworICAgICAgICBtZWRpYVNyYyA9
IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1lZGlhU3JjKS5zdHJpbmcoKTsKKyAgICAgICAgbV9s
b2FkU3RhdGUgPSBMb2FkaW5nRnJvbVNyY0F0dHI7CisgICAgICAgIGxvYWRSZXNvdXJjZShtZWRp
YVNyYywgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gT3Ro
ZXJ3aXNlLCB0aGUgc291cmNlIGVsZW1lbnRzIHdpbGwgYmUgdXNlZAorICAgIG1fY3VycmVudFNv
dXJjZU5vZGUgPSAwOworICAgIGxvYWROZXh0U291cmNlQ2hpbGQoKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKK3sKKyAgICBDb250ZW50VHlwZSBj
b250ZW50VHlwZSgiIik7CisgICAgU3RyaW5nIG1lZGlhU3JjOworCisgICAgbWVkaWFTcmMgPSBu
ZXh0U291cmNlQ2hpbGQoJmNvbnRlbnRUeXBlKTsKICAgICBpZiAobWVkaWFTcmMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIGdvdG8gZW5kOwor
ICAgICAgICBub25lU3VwcG9ydGVkKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0g
ICAgLy8gNwotICAgIG1fbmV0d29ya1N0YXRlID0gTE9BRElORzsKLSAgICAKLSAgICAvLyA4Ci0g
ICAgbV9jdXJyZW50U3JjID0gbWVkaWFTcmM7CiAKLSAgICAvLyA5Ci0gICAgbV9iZWd1biA9IHRy
dWU7ICAgICAgICAKLSAgICBpZiAobV9zZW5kUHJvZ3Jlc3NFdmVudHMpCi0gICAgICAgIGRpc3Bh
dGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQsIGZhbHNlLCAwLCAw
KTsKLSAgICBpZiAobV9sb2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0
aW5nTGV2ZWwpCi0gICAgICAgIGdvdG8gZW5kOwotICAgIAotICAgIC8vIDEwLCAxMSwgMTIsIDEz
CisgICAgbV9sb2FkU3RhdGUgPSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQ7CisgICAgbG9hZFJl
c291cmNlKG1lZGlhU3JjLCBjb250ZW50VHlwZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bG9hZFJlc291cmNlKFN0cmluZyB1cmwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKK3sK
KyAgICAvLyBUaGUgcmVzb3VyY2UgZmV0Y2ggYWxnb3JpdGhtIAorCisgICAgbV9uZXR3b3JrU3Rh
dGUgPSBORVRXT1JLX0xPQURJTkc7CisKKyAgICBtX2N1cnJlbnRTcmMgPSB1cmw7CisKKyAgICBp
ZiAobV9zZW5kUHJvZ3Jlc3NFdmVudHMpIAorICAgICAgICBzdGFydFByb2dyZXNzRXZlbnRUaW1l
cigpOworCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIG1fcGxheWVy
LmNsZWFyKCk7CiAgICAgbV9wbGF5ZXIuc2V0KG5ldyBNZWRpYVBsYXllcih0aGlzKSk7CkBAIC00
MDgsMzMgKzQ4Miw3NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbChFeGNl
CiAjZW5kaWYKIAogICAgIHVwZGF0ZVZvbHVtZSgpOworCiAgICAgbV9wbGF5ZXItPmxvYWQobV9j
dXJyZW50U3JjLCBjb250ZW50VHlwZSk7Ci0gICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1f
dGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsKQotICAgICAgICBnb3RvIGVuZDsKICAgICAK
ICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1l
bnQoKTsKLSAgICAKLSAgICAvLyAxNAotICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykgewot
ICAgICAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwotICAg
ICAgICBtX3ByZXZpb3VzUHJvZ3Jlc3MgPSAwOwotICAgICAgICBpZiAobV9iZWd1bikKLSAgICAg
ICAgICAgIC8vIDM1MG1zIGlzIG5vdCBtYWdpYywgaXQgaXMgaW4gdGhlIHNwZWMhCi0gICAgICAg
ICAgICBtX3Byb2dyZXNzRXZlbnRUaW1lci5zdGFydFJlcGVhdGluZygwLjM1MCk7Ci0gICAgfQor
fQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCkKK3sK
KyAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIG1f
cHJldmlvdXNQcm9ncmVzcyA9IDA7CisgICAgLy8gMzUwbXMgaXMgbm90IG1hZ2ljLCBpdCBpcyBp
biB0aGUgc3BlYyEKKyAgICBtX3Byb2dyZXNzRXZlbnRUaW1lci5zdGFydFJlcGVhdGluZygwLjM1
MCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bm9uZVN1cHBvcnRlZCgpCit7CisgICAg
c3RvcFBlcmlvZGljVGltZXJzKCk7CisgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNl
OworICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOworCisgICAgLy8gMyAtIFJlYWNoaW5nIHRo
aXMgc3RlcCBpbmRpY2F0ZXMgdGhhdCBlaXRoZXIgdGhlIFVSTCBmYWlsZWQgdG8gcmVzb2x2ZSwg
b3IgdGhlIG1lZGlhIAorICAgIC8vIHJlc291cmNlIGZhaWxlZCB0byBsb2FkLiBTZXQgdGhlIGVy
cm9yIGF0dHJpYnV0ZSB0byBhIG5ldyBNZWRpYUVycm9yIG9iamVjdCB3aG9zZSAKKyAgICAvLyBj
b2RlIGF0dHJpYnV0ZSBpcyBzZXQgdG8gTUVESUFfRVJSX05PTkVfU1VQUE9SVEVELgorICAgIG1f
ZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX05PTkVfU1VQ
UE9SVEVEKTsKIAotZW5kOgotICAgIEFTU0VSVChtX2xvYWROZXN0aW5nTGV2ZWwpOwotICAgIG1f
bG9hZE5lc3RpbmdMZXZlbC0tOworICAgIC8vIDQtIFNldCB0aGUgZWxlbWVudCdzIG5ldHdvcmtT
dGF0ZSBhdHRyaWJ1dGUgdG8gdGhlIE5FVFdPUktfTk9fU09VUkNFIHZhbHVlLgorICAgIG1fbmV0
d29ya1N0YXRlID0gTkVUV09SS19OT19TT1VSQ0U7CisKKyAgICAvLyA1IC0gUXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgZXJyb3IgYXQgdGhlIG1lZGlhIGVsZW1l
bnQuCisgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsg
CisKKyAgICAvLyA2IC0gU2V0IHRoZSBlbGVtZW50J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQg
ZmxhZyB0byBmYWxzZS4gVGhpcyBzdG9wcyBkZWxheWluZyB0aGUgbG9hZCBldmVudC4KKyAgICBt
X2RlbGF5aW5nVGhlTG9hZEV2ZW50ID0gZmFsc2U7CisKKyAgICAvLyBBYm9ydCB0aGVzZSBzdGVw
cy4gVW50aWwgdGhlIGxvYWQoKSBtZXRob2QgaXMgaW52b2tlZCwgdGhlIGVsZW1lbnQgd29uJ3Qg
YXR0ZW1wdCB0byBsb2FkIGFub3RoZXIgcmVzb3VyY2UuCisgICAgCisgICAgaWYgKGlzVmlkZW8o
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMpLT51cGRhdGVQ
b3N0ZXJJbWFnZSgpOworICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigpLT51
cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lRXJyb3IoUGFzc1JlZlB0cjxNZWRpYUVycm9yPiBlcnIpCit7CisgICAgLy8gMSAtIFRoZSB1
c2VyIGFnZW50IHNob3VsZCBjYW5jZWwgdGhlIGZldGNoaW5nIHByb2Nlc3MuCisgICAgc3RvcFBl
cmlvZGljVGltZXJzKCk7CisgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNlOworCisg
ICAgLy8gMiAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2Jq
ZWN0IHdob3NlIGNvZGUgYXR0cmlidXRlIGlzIAorICAgIC8vIHNldCB0byBNRURJQV9FUlJfTkVU
V09SSy9NRURJQV9FUlJfREVDT0RFLgorICAgIG1fZXJyb3IgPSBlcnI7CisKKyAgICAvLyAzIC0g
UXVldWUgYSB0YXNrIHRvIGZpcmUgYSBwcm9ncmVzcyBldmVudCBjYWxsZWQgZXJyb3IgYXQgdGhl
IG1lZGlhIGVsZW1lbnQuCisgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50KTsgCisKKyAgICAvLyAzIC0gU2V0IHRoZSBlbGVtZW50J3MgbmV0d29ya1N0YXRl
IGF0dHJpYnV0ZSB0byB0aGUgTkVUV09SS19FTVBUWSB2YWx1ZSBhbmQgcXVldWUgYSAKKyAgICAv
LyB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgY2FsbGVkIGVtcHRpZWQgYXQgdGhlIGVsZW1l
bnQuCisgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOworICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCk7CisKKyAgICAvLyA0IC0gU2V0IHRoZSBlbGVt
ZW50J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQgZmxhZyB0byBmYWxzZS4gVGhpcyBzdG9wcyBk
ZWxheWluZyB0aGUgbG9hZCBldmVudC4KKyAgICBtX2RlbGF5aW5nVGhlTG9hZEV2ZW50ID0gZmFs
c2U7CisKKyAgICAvLyA1IC0gQWJvcnQgdGhlIG92ZXJhbGwgcmVzb3VyY2Ugc2VsZWN0aW9uIGFs
Z29yaXRobS4KKyAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0gMDsKKworfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciop
CiB7Ci0gICAgaWYgKCFtX2JlZ3VuKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgYmVnaW5Q
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIHNldE5ldHdvcmtTdGF0ZShtX3Bs
YXllci0+bmV0d29ya1N0YXRlKCkpOwogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxi
YWNrKCk7CkBAIC00NDQsODQgKzU2Miw1OCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE5l
dHdvcmtTdGF0ZShNCiB7CiAgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpFbXB0eSkgewog
ICAgICAgICAvLyBqdXN0IHVwZGF0ZSB0aGUgY2FjaGVkIHN0YXRlIGFuZCBsZWF2ZSwgd2UgY2Fu
J3QgZG8gYW55dGhpbmcgCi0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gRU1QVFk7CisgICAgICAg
IG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKLSAgICBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCA9IG1fbG9hZE5lc3Rp
bmdMZXZlbDsKLSAgICAKLSAgICAvLyAzLjE0LjkuNC4gTG9hZGluZyB0aGUgbWVkaWEgcmVzb3Vy
Y2UKLSAgICAvLyAxNAotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TG9hZEZhaWxlZCkg
ewotICAgICAgICAvL2RlbGV0ZSBtX3BsYXllcjsKLSAgICAgICAgLy9tX3BsYXllciA9IDA7Ci0g
ICAgICAgIC8vIEZJWE1FIGJldHRlciBlcnJvciBoYW5kbGluZwotICAgICAgICBtX2Vycm9yID0g
TWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ORVRXT1JLKTsKLSAgICAg
ICAgbV9iZWd1biA9IGZhbHNlOwotICAgICAgICBtX3Byb2dyZXNzRXZlbnRUaW1lci5zdG9wKCk7
Ci0gICAgICAgIAotICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50KTsgCi0gICAgICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rl
cm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdMZXZlbCkKKworICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBs
YXllcjo6Rm9ybWF0RXJyb3IgfHwgc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvciB8
fCBzdGF0ZSA9PSBNZWRpYVBsYXllcjo6RGVjb2RlRXJyb3IpIHsKKyAgICAgICAgc3RvcFBlcmlv
ZGljVGltZXJzKCk7CisKKyAgICAgICAgLy8gSWYgd2UgZmFpbGVkIHdoaWxlIHRyeWluZyB0byBs
b2FkIGEgPHNvdXJjZT4gZWxlbWVudCwgdGhlIG1vdmllIHdhcyBuZXZlciBwYXJzZWQsIGFuZCB0
aGVyZSBhcmUgbW9yZQorICAgICAgICAvLyA8c291cmNlPiBjaGlsZHJlbiwgc2NoZWR1bGUgdGhl
IG5leHQgb25lIHdpdGhvdXQgcmVwb3J0aW5nIGFuIGVycm9yCisgICAgICAgIGlmIChtX3JlYWR5
U3RhdGUgPCBIQVZFX01FVEFEQVRBICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNl
RWxlbWVudCAmJiBoYXZlUG90ZW50aWFsU291cmNlQ2hpbGQoKSkgeworICAgICAgICAgICAgc2No
ZWR1bGVMb2FkKCk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IEVNUFRZOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXRlID09IE1l
ZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IpCisgICAgICAgICAgICBtZWRpYUVuZ2luZUVycm9yKE1l
ZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfTkVUV09SSykpOworICAgICAg
ICBlbHNlIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6RGVjb2RlRXJyb3IpCisgICAgICAgICAg
ICBtZWRpYUVuZ2luZUVycm9yKE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9F
UlJfREVDT0RFKSk7CisgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpGb3Jt
YXRFcnJvcikKKyAgICAgICAgICAgIG5vbmVTdXBwb3J0ZWQoKTsKIAogICAgICAgICBpZiAoaXNW
aWRlbygpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMp
LT51cGRhdGVQb3N0ZXJJbWFnZSgpOwogCi0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2
ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKLSAgICBpZiAoc3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRpbmcgJiYgbV9u
ZXR3b3JrU3RhdGUgPCBMT0FESU5HKQotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IExPQURJTkc7
Ci0gICAgCi0gICAgaWYgKHN0YXRlID49IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSAmJiBt
X25ldHdvcmtTdGF0ZSA8IExPQURFRF9NRVRBREFUQSkgewotICAgICAgICBtX25ldHdvcmtTdGF0
ZSA9IExPQURFRF9NRVRBREFUQTsKLSAgICAgICAgCi0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JU
eXBlKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAg
ICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdM
ZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGRpc3BhdGNoRXZl
bnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50LCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05l
c3RpbmdMZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHN0
YXRlID49IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmIG1fbmV0d29ya1N0YXRlIDwg
TE9BREVEX0ZJUlNUX0ZSQU1FKSB7Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0gTE9BREVEX0ZJ
UlNUX0ZSQU1FOwotICAgICAgICAKLSAgICAgICAgc2V0UmVhZHlTdGF0ZShDQU5fU0hPV19DVVJS
RU5UX0ZSQU1FKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc1ZpZGVvKCkpCi0gICAgICAgICAg
ICBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4odGhpcyktPnVwZGF0ZVBvc3RlckltYWdl
KCk7CiAKLSAgICAgICAgaWYgKG1fbG9hZE5lc3RpbmdMZXZlbCA8IG1fdGVybWluYXRlTG9hZEJl
bG93TmVzdGluZ0xldmVsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAg
bV9sb2FkZWRGaXJzdEZyYW1lID0gdHJ1ZTsKLSNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCi0gICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXJl
bmRlcmVyKCktPmlzSW1hZ2UoKSk7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWRl
byo+KHJlbmRlcmVyKCkpLT52aWRlb1NpemVDaGFuZ2VkKCk7Ci0gICAgICAgIH0KLSNlbmRpZiAg
ICAgICAgCisgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpJZGxlICYmIG1fbmV0d29ya1N0
YXRlID4gTkVUV09SS19JRExFKSB7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxSZWFkeVN0
YXRlPihtX3BsYXllci0+cmVhZHlTdGF0ZSgpKSA8IEhBVkVfRU5PVUdIX0RBVEEpOworICAgICAg
ICBtX25ldHdvcmtTdGF0ZSA9IE5FVFdPUktfSURMRTsKKyAgICAgICAgc3RvcFBlcmlvZGljVGlt
ZXJzKCk7CisgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkuc3VzcGVu
ZEV2ZW50KTsKKyAgICB9CiAKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1l
cygpLmxvYWRlZGZpcnN0ZnJhbWVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICBpZiAobV9s
b2FkTmVzdGluZ0xldmVsIDwgbV90ZXJtaW5hdGVMb2FkQmVsb3dOZXN0aW5nTGV2ZWwpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShl
dmVudE5hbWVzKCkuY2Fuc2hvd2N1cnJlbnRmcmFtZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAg
ICAgIGlmIChtX2xvYWROZXN0aW5nTGV2ZWwgPCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05lc3RpbmdM
ZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6
OkxvYWRpbmcgJiYgbV9uZXR3b3JrU3RhdGUgPCBORVRXT1JLX0xPQURJTkcpIHsKKyAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG1fcGxheWVyLT5yZWFkeVN0YXRlKCkpIDwg
SEFWRV9FTk9VR0hfREFUQSk7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FE
SU5HOworICAgICAgICBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigpOwogICAgIH0KLSAgICAKLSAg
ICAvLyAxNQotICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6TG9hZGVkICYmIG1fbmV0d29y
a1N0YXRlIDwgTE9BREVEKSB7Ci0gICAgICAgIG1fYmVndW4gPSBmYWxzZTsKLSAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBMT0FERUQ7CisKKyAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6Okxv
YWRlZCAmJiBtX25ldHdvcmtTdGF0ZSA8IE5FVFdPUktfTE9BREVEKSB7CisgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTkVUV09SS19MT0FERUQ7CiAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVy
LnN0b3AoKTsKLSAgICAgICAgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudChldmVudE5hbWVz
KCkubG9hZEV2ZW50KTsgCisKKyAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlYWR5U3RhdGUg
Y2hhbmdlcyBuZWVkIHRvIGJlIGRlYWx0IHdpdGggYmVmb3JlIHNlbmRpbmcgdGhlIAorICAgICAg
ICAvLyAnbG9hZCcgZXZlbnQgc28gd2UgcmVwb3J0ICdjYW5wbGF5dGhyb3VnaCcgZmlyc3QuIFRo
aXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgYQorICAgICAgICAvLyAgbWVkaWEgZW5naW5lIHJlcG9y
dHMgcmVhZHlTdGF0ZSBhbmQgbmV0d29ya1N0YXRlIGNoYW5nZXMgc2VwYXJhdGVseQorICAgICAg
ICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBjdXJyZW50U3RhdGUgPSBtX3BsYXllci0+cmVhZHlT
dGF0ZSgpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UmVhZHlTdGF0ZT4oY3VycmVudFN0YXRl
KSAhPSBtX3JlYWR5U3RhdGUpCisgICAgICAgICAgICBzZXRSZWFkeVN0YXRlKGN1cnJlbnRTdGF0
ZSk7CisKKyAgICAgICAgIHNjaGVkdWxlUHJvZ3Jlc3NFdmVudChldmVudE5hbWVzKCkubG9hZEV2
ZW50KTsgCiAgICAgfQogfQogCkBAIC01MjksNjYgKzYyMSwxMTUgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlYWR5UwogewogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxh
eWVyQ2FsbGJhY2soKTsKIAotICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlID0gbV9w
bGF5ZXItPnJlYWR5U3RhdGUoKTsKLSAgICBzZXRSZWFkeVN0YXRlKChSZWFkeVN0YXRlKXN0YXRl
KTsKKyAgICBzZXRSZWFkeVN0YXRlKG1fcGxheWVyLT5yZWFkeVN0YXRlKCkpOwogCiAgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgc3RhdGUpCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiB7Ci0gICAg
Ly8gMy4xNC45LjYuIFRoZSByZWFkeSBzdGF0ZXMKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IHN0
YXRlKQorICAgIFJlYWR5U3RhdGUgb2xkU3RhdGUgPSBtX3JlYWR5U3RhdGU7CisgICAgbV9yZWFk
eVN0YXRlID0gc3RhdGljX2Nhc3Q8UmVhZHlTdGF0ZT4oc3RhdGUpOworCisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBvbGRTdGF0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJvb2wgd2Fz
QWN0aXZlbHlQbGF5aW5nID0gYWN0aXZlbHlQbGF5aW5nKCk7Ci0gICAgbV9yZWFkeVN0YXRlID0g
c3RhdGU7Ci0gICAgCi0gICAgaWYgKHN0YXRlID49IENBTl9QTEFZKQorICAgIGlmIChtX3JlYWR5
U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEpCiAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwog
ICAgIAotICAgIGlmIChuZXR3b3JrU3RhdGUoKSA9PSBFTVBUWSkKKyAgICBpZiAobV9uZXR3b3Jr
U3RhdGUgPT0gTkVUV09SS19FTVBUWSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChz
dGF0ZSA9PSBEQVRBX1VOQVZBSUxBQkxFKSB7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBl
KGV2ZW50TmFtZXMoKS5kYXRhdW5hdmFpbGFibGVFdmVudCwgZmFsc2UsIHRydWUpOwotICAgICAg
ICBpZiAod2FzQWN0aXZlbHlQbGF5aW5nKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9y
VHlwZShldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAg
ICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50LCBmYWxz
ZSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHN0YXRlID09IENBTl9TSE9XX0NV
UlJFTlRfRlJBTUUpIHsKLSAgICAgICAgaWYgKG1fbG9hZGVkRmlyc3RGcmFtZSkKLSAgICAgICAg
ICAgIGRpc3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5jYW5zaG93Y3VycmVudGZyYW1l
RXZlbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgaWYgKHdhc0FjdGl2ZWx5UGxheWluZykgewot
ICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZl
bnROYW1lcygpLndhaXRpbmdFdmVudCwgZmFsc2UsIHRydWUpOworCisgICAgaWYgKG1fc2Vla2lu
ZyAmJiBtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJFTlRfREFUQSkgeworICAgICAgICAvLyA0Ljgu
MTAuMTAsIHN0ZXAgOQorICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWVraW5n
RXZlbnQpOworICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIHdh
c1BvdGVudGlhbGx5UGxheWluZyA9IHBvdGVudGlhbGx5UGxheWluZygpOworICAgIGlmICh3YXNQ
b3RlbnRpYWxseVBsYXlpbmcgJiYgbV9yZWFkeVN0YXRlIDwgSEFWRV9GVVRVUkVfREFUQSkgewor
ICAgICAgICAvLyA0LjguMTAuOQorICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxz
ZSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndhaXRpbmdFdmVudCk7Cisg
ICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBICYmIG9sZFN0YXRl
IDwgSEFWRV9NRVRBREFUQSkgeworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5k
dXJhdGlvbmNoYW5nZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
bG9hZGVkbWV0YWRhdGFFdmVudCk7CisKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCisgICAgICAgIGlmIChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc0ltYWdlKCkpIHsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVv
U2l6ZUNoYW5nZWQoKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gQ0FOX1BM
QVkpIHsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmNhbnBsYXlF
dmVudCwgZmFsc2UsIHRydWUpOwotICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gQ0FOX1BMQVlfVEhS
T1VHSCkgewotICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuY2FucGxh
eXRocm91Z2hFdmVudCwgZmFsc2UsIHRydWUpOworI2VuZGlmICAgICAgICAKKyAgICAgICAgbV9k
ZWxheWluZ1RoZUxvYWRFdmVudCA9IGZhbHNlOworICAgICAgICBtX3BsYXllci0+c2VlaygwKTsK
KyAgICB9CisKKyAgICAvLyA0LjguMTAuNyBzYXlzIGxvYWRlZGRhdGEgaXMgc2VudCBvbmx5IHdo
ZW4gdGhlIG5ldyBzdGF0ZSAqaXMqIEhBVkVfQ1VSUkVOVF9EQVRBOiAiSWYgdGhlCisgICAgLy8g
cHJldmlvdXMgcmVhZHkgc3RhdGUgd2FzIEhBVkVfTUVUQURBVEEgYW5kIHRoZSBuZXcgcmVhZHkg
c3RhdGUgaXMgSEFWRV9DVVJSRU5UX0RBVEEiLCAKKyAgICAvLyBidXQgdGhlIGV2ZW50IHRhYmxl
IGF0IHRoZSBlbmQgb2YgdGhlIHNwZWMgc2F5cyBpdCBpcyBzZW50IHdoZW46ICJyZWFkeVN0YXRl
IG5ld2x5IAorICAgIC8vIGluY3JlYXNlZCB0byBIQVZFX0NVUlJFTlRfREFUQSAgb3IgZ3JlYXRl
ciBmb3IgdGhlIGZpcnN0IHRpbWUiCisgICAgLy8gV2UgZ28gd2l0aCB0aGUgbGF0ZXIgYmVjYXVz
ZSBpdCBzZWVtcyB1c2VmdWwgdG8gY291bnQgb24gZ2V0dGluZyB0aGlzIGV2ZW50CisgICAgaWYg
KG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRfREFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfQ1VS
UkVOVF9EQVRBICYmICFtX2hhdmVGaXJlZExvYWRlZERhdGEpIHsKKyAgICAgICAgbV9oYXZlRmly
ZWRMb2FkZWREYXRhID0gdHJ1ZTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
bG9hZGVkZGF0YUV2ZW50KTsKKyAgICB9CisKKyAgICBib29sIGlzUG90ZW50aWFsbHlQbGF5aW5n
ID0gcG90ZW50aWFsbHlQbGF5aW5nKCk7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NV
UlJFTlRfREFUQSAmJiBvbGRTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKSB7CisgICAgICAgIGlm
IChpc1BvdGVudGlhbGx5UGxheWluZykKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLndhaXRpbmdFdmVudCk7CisgICAgfQorCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBI
QVZFX0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKSB7CisgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmNhbnBsYXlFdmVudCk7CisgICAgICAgIGlm
IChpc1BvdGVudGlhbGx5UGxheWluZykKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnRO
YW1lcygpLnBsYXlpbmdFdmVudCk7CisKKyAgICAgICAgaWYgKGlzVmlkZW8oKSkKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKS0+dXBkYXRlUG9zdGVySW1h
Z2UoKTsKKyAgICB9CisKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IEhBVkVfRU5PVUdIX0RBVEEg
JiYgb2xkU3RhdGUgPCBIQVZFX0VOT1VHSF9EQVRBKSB7CisgICAgICAgIGlmIChvbGRTdGF0ZSA8
PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLmNhbnBsYXlFdmVudCk7CisKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
Y2FucGxheXRocm91Z2hFdmVudCk7CisKKyAgICAgICAgaWYgKGlzUG90ZW50aWFsbHlQbGF5aW5n
ICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KTsKKwogICAgICAgICBpZiAobV9hdXRvcGxh
eWluZyAmJiBtX3BhdXNlZCAmJiBhdXRvcGxheSgpKSB7CiAgICAgICAgICAgICBtX3BhdXNlZCA9
IGZhbHNlOwotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLnBs
YXlFdmVudCwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkucGxheUV2ZW50KTsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LnBsYXlpbmdFdmVudCk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNWaWRlbygpKQorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMpLT51cGRhdGVQb3N0
ZXJJbWFnZSgpOwogICAgIH0KKwogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwogfQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVs
ZW1lbnQ+KikKIHsKICAgICBBU1NFUlQobV9wbGF5ZXIpOworICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA9PSBORVRXT1JLX0VNUFRZIHx8IG1fbmV0d29ya1N0YXRlID49IE5FVFdPUktfTE9BREVEKQor
ICAgICAgICByZXR1cm47CisKICAgICB1bnNpZ25lZCBwcm9ncmVzcyA9IG1fcGxheWVyLT5ieXRl
c0xvYWRlZCgpOwogICAgIGRvdWJsZSB0aW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwogICAgIGRv
dWJsZSB0aW1lZGVsdGEgPSB0aW1lIC0gbV9wcmV2aW91c1Byb2dyZXNzVGltZTsKLSAgICAKKwog
ICAgIGlmIChwcm9ncmVzcyA9PSBtX3ByZXZpb3VzUHJvZ3Jlc3MpIHsKICAgICAgICAgaWYgKHRp
bWVkZWx0YSA+IDMuMCAmJiAhbV9zZW50U3RhbGxlZEV2ZW50KSB7Ci0gICAgICAgICAgICBpbml0
QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5zdGFsbGVkRXZlbnQpOworICAg
ICAgICAgICAgc2NoZWR1bGVQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5zdGFsbGVkRXZlbnQp
OwogICAgICAgICAgICAgbV9zZW50U3RhbGxlZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGluaXRBbmREaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1l
cygpLnByb2dyZXNzRXZlbnQpOworICAgICAgICBzY2hlZHVsZVByb2dyZXNzRXZlbnQoZXZlbnRO
YW1lcygpLnByb2dyZXNzRXZlbnQpOwogICAgICAgICBtX3ByZXZpb3VzUHJvZ3Jlc3MgPSBwcm9n
cmVzczsKICAgICAgICAgbV9wcmV2aW91c1Byb2dyZXNzVGltZSA9IHRpbWU7CiAgICAgICAgIG1f
c2VudFN0YWxsZWRFdmVudCA9IGZhbHNlOwpAQCAtNTk3LDM3ICs3MzgsNDUgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gMy4xNC45Ljgu
IFNlZWtpbmcKKyAgICAvLyA0LjguMTAuMTAuIFNlZWtpbmcKICAgICAvLyAxCi0gICAgaWYgKG5l
dHdvcmtTdGF0ZSgpIDwgTE9BREVEX01FVEFEQVRBKSB7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBIQVZFX05PVEhJTkcgfHwgIW1fcGxheWVyKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyAyCiAgICAgdGltZSA9IG1p
bih0aW1lLCBkdXJhdGlvbigpKTsKKworICAgIC8vIDMKICAgICB0aW1lID0gbWF4KHRpbWUsIDAu
MGYpOwotICAgIAotICAgIC8vIDYKKworICAgIC8vIDQKICAgICBSZWZQdHI8VGltZVJhbmdlcz4g
c2Vla2FibGVSYW5nZXMgPSBzZWVrYWJsZSgpOwogICAgIGlmICghc2Vla2FibGVSYW5nZXMtPmNv
bnRhaW4odGltZSkpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICAvLyA3CisgICAgLy8gYXZvaWQgZ2VuZXJhdGluZyBldmVu
dHMgd2hlbiB0aGUgdGltZSB3b24ndCBhY3R1YWxseSBjaGFuZ2UKKyAgICBmbG9hdCBub3cgPSBj
dXJyZW50VGltZSgpOworICAgIGlmICh0aW1lID09IG5vdykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gNQogICAgIG1fY3VycmVudFRpbWVEdXJpbmdTZWVrID0gdGltZTsKIAotICAgIC8vIDgK
KyAgICAvLyA2IC0gc2V0IHRoZSBzZWVraW5nIGZsYWcsIGl0IHdpbGwgYmUgY2xlYXJlZCB3aGVu
IHRoZSBlbmdpbmUgdGVsbHMgaXMgdGhlIHRpbWUgaGFzIGFjdHVhbGx5IGNoYW5nZWQKICAgICBt
X3NlZWtpbmcgPSB0cnVlOwotICAgIAotICAgIC8vIDkKLSAgICBkaXNwYXRjaEV2ZW50Rm9yVHlw
ZShldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgCisKKyAg
ICAvLyA3CisgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOworCisgICAgLy8gOCAt
IHRoaXMgaXMgY292ZXJlZCwgaWYgbmVjZXNzYXJ5LCB3aGVuIHRoZSBlbmdpbmUgc2lnbmFscyBh
IHJlYWR5c3RhdGUgY2hhbmdlCisKICAgICAvLyAxMAotICAgIC8vIEFzIHNvb24gYXMgdGhlIHVz
ZXIgYWdlbnQgaGFzIGVzdGFibGlzaGVkIHdoZXRoZXIgb3Igbm90IHRoZSBtZWRpYSBkYXRhIGZv
ciB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGF2YWlsYWJsZSwgCi0gICAgLy8gYW5kLCBp
ZiBpdCBpcywgZGVjb2RlZCBlbm91Z2ggZGF0YSB0byBwbGF5IGJhY2sgdGhhdCBwb3NpdGlvbiwg
dGhlIHNlZWtpbmcgRE9NIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byBmYWxzZS4KLSAgICBpZiAo
bV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5zZWVrKHRpbWUpOworICAgIG1fcGxheWVyLT5z
ZWVrKHRpbWUpOworICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CiB9CiAKIEhUTUxNZWRpYUVs
ZW1lbnQ6OlJlYWR5U3RhdGUgSFRNTE1lZGlhRWxlbWVudDo6cmVhZHlTdGF0ZSgpIGNvbnN0CkBA
IC02NTcsNyArODA2LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q3VycmVudFRpbWUo
ZmwKIAogZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogewotICAgIHJl
dHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5kdXJhdGlvbigpIDogMDsKKyAgICBpZiAobV9yZWFk
eVN0YXRlID49IEhBVkVfTUVUQURBVEEpCisgICAgICAgIHJldHVybiBtX3BsYXllci0+ZHVyYXRp
b24oKTsKKworICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOwog
fQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgpIGNvbnN0CkBAIC02NzAsMTUgKzgy
MiwxMSBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0UGxheWJhY2tSCiAgICAgcmV0
dXJuIG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7
Ci0gICAgaWYgKHJhdGUgPT0gMC4wZikgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUg
IT0gcmF0ZSkgewogICAgICAgICBtX2RlZmF1bHRQbGF5YmFja1JhdGUgPSByYXRlOwotICAgICAg
ICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7CisgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7CiAgICAgfQog
fQogCkBAIC02ODcsMTYgKzgzNSwxNCBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFj
a1JhdGUoKSBjCiAgICAgcmV0dXJuIG1fcGxheWVyID8gbV9wbGF5ZXItPnJhdGUoKSA6IDA7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUo
ZmxvYXQgcmF0ZSkKIHsKLSAgICBpZiAocmF0ZSA9PSAwLjBmKSB7Ci0gICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9wbGF5YmFja1JhdGUg
IT0gcmF0ZSkgeworICAgICAgICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CisgICAgICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7CiAgICAgfQotICAgIGlmICht
X3BsYXllciAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJhdGUpIHsKKyAgICBpZiAobV9wbGF5ZXIg
JiYgcG90ZW50aWFsbHlQbGF5aW5nKCkgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRlKQogICAg
ICAgICBtX3BsYXllci0+c2V0UmF0ZShyYXRlKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudEFzeW5j
KGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwotICAgIH0KIH0KIAogYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjplbmRlZCgpIGNvbnN0CkBAIC03MTQsNzAgKzg2MCw2NCBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldEF1dG9wbGF5KGJvb2wgCiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShh
dXRvcGxheUF0dHIsIGIpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoKQogewotICAgIGlmICht
X3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlv
biAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JS
YXRlQ2hhbmdlUmVzdHJpY3Rpb24gJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxheUludGVybmFsKGVjKTsKKyAgICBwbGF5SW50ZXJu
YWwoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiB7Ci0gICAg
Ly8gMy4xNC45LjcuIFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCi0gICAgaWYgKCFtX3BsYXll
ciB8fCBuZXR3b3JrU3RhdGUoKSA9PSBFTVBUWSkgewotICAgICAgICBlYyA9IDA7Ci0gICAgICAg
IGxvYWQoZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOworICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBt
ZWRpYSByZXNvdXJjZQorICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVU
V09SS19FTVBUWSkKKyAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisKICAgICBpZiAoZW5kZWRQbGF5
YmFjaygpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwogICAgICAgICBzZWVrKDAs
IHVudXNlZCk7CiAgICAgfQotICAgIHNldFBsYXliYWNrUmF0ZShkZWZhdWx0UGxheWJhY2tSYXRl
KCksIHVudXNlZCk7CisgICAgCisgICAgc2V0UGxheWJhY2tSYXRlKGRlZmF1bHRQbGF5YmFja1Jh
dGUoKSk7CiAgICAgCiAgICAgaWYgKG1fcGF1c2VkKSB7CiAgICAgICAgIG1fcGF1c2VkID0gZmFs
c2U7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRBc3luYyhldmVudE5hbWVzKCkucGxheUV2ZW50KTsK
LSAgICB9CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlFdmVudCk7CiAK
KyAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8PSBIQVZFX0NVUlJFTlRfREFUQSkKKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndhaXRpbmdFdmVudCk7CisgICAgICAgIGVs
c2UgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0ZVVFVSRV9EQVRBKQorICAgICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KTsKKyAgICB9CiAgICAgbV9hdXRv
cGxheWluZyA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGF1c2UoRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlKCkKIHsKLSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdl
c3R1cmVGb3JSYXRlQ2hhbmdlUmVzdHJpY3Rpb24gJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgaWYgKG1fcmVzdHJpY3Rp
b25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uICYmICFwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHBhdXNl
SW50ZXJuYWwoZWMpOworICAgIHBhdXNlSW50ZXJuYWwoKTsKIH0KIAogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogewotICAgIC8vIDMuMTQuOS43LiBQbGF5aW5nIHRo
ZSBtZWRpYSByZXNvdXJjZQotICAgIGlmICghbV9wbGF5ZXIgfHwgbmV0d29ya1N0YXRlKCkgPT0g
RU1QVFkpIHsKLSAgICAgICAgZWMgPSAwOwotICAgICAgICBsb2FkKGVjKTsKLSAgICAgICAgaWYg
KGVjKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAvLyA0LjguMTAuOS4gUGxheWlu
ZyB0aGUgbWVkaWEgcmVzb3VyY2UKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRl
ID09IE5FVFdPUktfRU1QVFkpCisgICAgICAgIHNjaGVkdWxlTG9hZCgpOwogCisgICAgbV9hdXRv
cGxheWluZyA9IGZhbHNlOworICAgIAogICAgIGlmICghbV9wYXVzZWQpIHsKICAgICAgICAgbV9w
YXVzZWQgPSB0cnVlOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMoZXZlbnROYW1lcygpLnRp
bWV1cGRhdGVFdmVudCk7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRBc3luYyhldmVudE5hbWVzKCku
cGF1c2VFdmVudCk7CisgICAgICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKKyAg
ICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCk7CiAgICAgfQogCi0g
ICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwotICAgIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwog
fQogCkBAIC04MjIsNyArOTYyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUo
ZmxvYXQgdgogICAgIGlmIChtX3ZvbHVtZSAhPSB2b2wpIHsKICAgICAgICAgbV92b2x1bWUgPSB2
b2w7CiAgICAgICAgIHVwZGF0ZVZvbHVtZSgpOwotICAgICAgICBkaXNwYXRjaEV2ZW50QXN5bmMo
ZXZlbnROYW1lcygpLnZvbHVtZWNoYW5nZUV2ZW50KTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOwogICAgIH0KIH0KIApAQCAtODM2LDE4ICs5
NzYsMTggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11dAogICAgIGlm
IChtX211dGVkICE9IG11dGVkKSB7CiAgICAgICAgIG1fbXV0ZWQgPSBtdXRlZDsKICAgICAgICAg
dXBkYXRlVm9sdW1lKCk7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnRBc3luYyhldmVudE5hbWVzKCku
dm9sdW1lY2hhbmdlRXZlbnQpOworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52
b2x1bWVjaGFuZ2VFdmVudCk7CiAgICAgfQogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRv
Z2dsZVBsYXlTdGF0ZShFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dG9nZ2xlUGxheVN0YXRlKCkKIHsKICAgICAvLyBXZSBjYW4gc2FmZWx5IGNhbGwgdGhlIGludGVy
bmFsIHBsYXkvcGF1c2UgbWV0aG9kcywgd2hpY2ggZG9uJ3QgY2hlY2sgcmVzdHJpY3Rpb25zLCBi
ZWNhdXNlCiAgICAgLy8gdGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYnVpbHQt
aW4gbWVkaWEgY29udHJvbGxlcgogICAgIGlmIChjYW5QbGF5KCkpCi0gICAgICAgIHBsYXlJbnRl
cm5hbChlYyk7CisgICAgICAgIHBsYXlJbnRlcm5hbCgpOwogICAgIGVsc2UgCi0gICAgICAgIHBh
dXNlSW50ZXJuYWwoZWMpOworICAgICAgICBwYXVzZUludGVybmFsKCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQpAQCAtODU3LDggKzk5Nyw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQogICAgICAgICAgICAgLy8gQmVjYXVz
ZSBhIG1lZGlhIGVsZW1lbnQgc3RheXMgaW4gbm9uLXBhdXNlZCBzdGF0ZSB3aGVuIGl0IHJlYWNo
ZXMgZW5kLCBwbGF5YmFjayByZXN1bWVzIAogICAgICAgICAgICAgLy8gd2hlbiB0aGUgc2xpZGVy
IGlzIGRyYWdnZWQgZnJvbSB0aGUgZW5kIHRvIGFub3RoZXIgcG9zaXRpb24gdW5sZXNzIHdlIHBh
dXNlIGZpcnN0LiBEbyAKICAgICAgICAgICAgIC8vIGEgImhhcmQgcGF1c2UiIHNvIGFuIGV2ZW50
IGlzIGdlbmVyYXRlZCwgc2luY2Ugd2Ugd2FudCB0byBzdGF5IHBhdXNlZCBhZnRlciBzY3J1YmJp
bmcgZmluaXNoZXMuCi0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAg
cGF1c2UoZWMpOworICAgICAgICAgICAgcGF1c2UoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIE5vdCBhdCB0aGUgZW5kIGJ1dCB3ZSBzdGlsbCB3YW50IHRvIHBhdXNlIHBsYXli
YWNrIHNvIHRoZSBtZWRpYSBlbmdpbmUgZG9lc24ndCB0cnkgdG8KICAgICAgICAgICAgIC8vIGNv
bnRpbnVlIHBsYXlpbmcgZHVyaW5nIHNjcnViYmluZy4gUGF1c2Ugd2l0aG91dCBnZW5lcmF0aW5n
IGFuIGV2ZW50IGFzIHdlIHdpbGwgCkBAIC04NzQsNDIgKzEwMTMsMTA3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6ZW5kU2NydWJiaW5nKCkKICAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwoZmFs
c2UpOwogfQogCisvLyBUaGUgc3BlYyBzYXlzIHRvIGZpcmUgcGVyaW9kaWMgdGltZXVwZGF0ZSBl
dmVudHMgKHRob3NlIHNlbnQgd2hpbGUgcGxheWluZykgZXZlcnkKKy8vICIxNSB0byAyNTBtcyIs
IHdlIGNob29zZSB0aGUgc2xvd2VzdCBmcmVxdWVuY3kKK3N0YXRpYyBjb25zdCBkb3VibGUgbWF4
VGltZXVwZGF0ZUV2ZW50RnJlcXVlbmN5ID0gMC4yNTsKKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzdGFydFBsYXliYWNrUHJvZ3Jlc3NUaW1lcigpCit7CisgICAgaWYgKG1fcGxheWJhY2tQcm9n
cmVzc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJldmlvdXNQ
cm9ncmVzc1RpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgbV9wcmV2aW91c1Byb2dyZXNz
ID0gMDsKKyAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdGFydFJlcGVhdGluZyhtYXhUaW1l
dXBkYXRlRXZlbnRGcmVxdWVuY3kpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXli
YWNrUHJvZ3Jlc3NUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKK3sKKyAgICBB
U1NFUlQobV9wbGF5ZXIpOworICAgIGlmICghbV9wbGF5YmFja1JhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KHRydWUpOworICAgIAorICAgIC8vIEZJ
WE1FOiBkZWFsIHdpdGggY3VlIHJhbmdlcyBoZXJlCit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoYm9vbCBwZXJpb2RpY0V2ZW50KQoreworICAgIGRv
dWJsZSBub3cgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHRpbWVkZWx0YSA9IG5v
dyAtIG1fbGFzdFRpbWVVcGRhdGVFdmVudFdhbGxUaW1lOworCisgICAgLy8gdGhyb3R0bGUgdGhl
IHBlcmlvZGljIGV2ZW50cworICAgIGlmIChwZXJpb2RpY0V2ZW50ICYmIHRpbWVkZWx0YSA8IG1h
eFRpbWV1cGRhdGVFdmVudEZyZXF1ZW5jeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU29t
ZSBtZWRpYSBlbmdpbmVzIG1ha2UgbXVsdGlwbGUgInRpbWUgY2hhbmdlZCIgY2FsbGJhY2tzIGF0
IHRoZSBzYW1lIHRpbWUsIGJ1dCB3ZSBvbmx5IHdhbnQgb25lCisgICAgLy8gZXZlbnQgYXQgYSBn
aXZlbiB0aW1lIHNvIGZpbHRlciBoZXJlCisgICAgZmxvYXQgbW92aWVUaW1lID0gbV9wbGF5ZXIg
PyBtX3BsYXllci0+Y3VycmVudFRpbWUoKSA6IDA7CisgICAgaWYgKG1vdmllVGltZSAhPSBtX2xh
c3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUpIHsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKKyAgICAgICAgbV9sYXN0VGltZVVwZGF0ZUV2ZW50
V2FsbFRpbWUgPSBub3c7CisgICAgICAgIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZSA9
IG1vdmllVGltZTsKKyAgICB9Cit9CisKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhdXNlZCgpIHx8IGVuZGVkKCkgfHwgbmV0d29ya1N0YXRl
KCkgPCBMT0FERURfTUVUQURBVEE7CisgICAgcmV0dXJuIHBhdXNlZCgpIHx8IGVuZGVkKCkgfHwg
bV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQTsKIH0KIAotU3RyaW5nIEhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE1lZGlhVVJMKENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKIHsKLSAgICAvLyAzLjE0Ljku
Mi4gTG9jYXRpb24gb2YgdGhlIG1lZGlhIHJlc291cmNlCi0gICAgU3RyaW5nIG1lZGlhU3JjID0g
Z2V0QXR0cmlidXRlKHNyY0F0dHIpOwotICAgIGlmIChtZWRpYVNyYy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoc291cmNlVGFnKSkgewotICAgICAg
ICAgICAgICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxIVE1MU291
cmNlRWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgIGlmICghc291cmNlLT5oYXNBdHRyaWJ1
dGUoc3JjQXR0cikpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAKLSAgICAgICAgICAg
ICAgICBpZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgewotICAgICAgICAgICAg
ICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIGRvY3VtZW50
KCktPmZyYW1lKCksIHJlbmRlcmVyKCkgPyByZW5kZXJlcigpLT5zdHlsZSgpIDogMCk7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gTWVkaWFMaXN0OjpjcmVh
dGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KHNvdXJjZS0+bWVkaWEoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghc2NyZWVuRXZhbC5ldmFsKG1lZGlhLmdldCgpKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoc291cmNlLT5oYXNBdHRyaWJ1dGUodHlwZUF0dHIpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIENvbnRlbnRUeXBlIHR5cGUoc291cmNlLT50eXBlKCkpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUodHlwZSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gdHlwZSB3
aXRoIGFsbCBwYXJhbWV0ZXJzIGluIHBsYWNlIHNvIHRoZSBtZWRpYSBlbmdpbmUgY2FuIHVzZSB0
aGVtCi0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gdHlwZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbWVkaWFTcmMgPSBzb3VyY2UtPnNyYygpLnN0cmluZygp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgIC8vIFN0YXNoIHRo
ZSBjdXJyZW50IDxzb3VyY2U+IG5vZGUgc28gd2UgY2FuIHJlc3RvcmUgaXQgYWZ0ZXIgY2hlY2tp
bmcKKyAgICAvLyB0byBzZWUgdGhlcmUgaXMgYW5vdGhlciBwb3RlbnRpYWwKKyAgICBOb2RlKiBj
dXJyZW50U291cmNlTm9kZSA9IG1fY3VycmVudFNvdXJjZU5vZGU7CisgICAgU3RyaW5nIG5leHRV
cmwgPSBuZXh0U291cmNlQ2hpbGQoKTsKKyAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0gY3VycmVu
dFNvdXJjZU5vZGU7CisKKyAgICByZXR1cm4gIW5leHRVcmwuaXNFbXB0eSgpOworfQorCitTdHJp
bmcgSFRNTE1lZGlhRWxlbWVudDo6bmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlICpjb250ZW50
VHlwZSkKK3sKKyAgICBTdHJpbmcgbWVkaWFTcmM7CisgICAgYm9vbCBsb29raW5nRm9yUHJldmlv
dXNOb2RlID0gbV9jdXJyZW50U291cmNlTm9kZTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
aWYgKCFub2RlLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAobG9va2luZ0ZvclByZXZpb3VzTm9kZSkgeworICAgICAgICAgICAgaWYg
KG1fY3VycmVudFNvdXJjZU5vZGUgPT0gbm9kZSkKKyAgICAgICAgICAgICAgICBsb29raW5nRm9y
UHJldmlvdXNOb2RlID0gZmFsc2U7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgSFRNTFNvdXJjZUVsZW1lbnQqIHNvdXJjZSA9IHN0YXRpY19jYXN0
PEhUTUxTb3VyY2VFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIGlmICghc291cmNlLT5oYXNBdHRy
aWJ1dGUoc3JjQXR0cikpCisgICAgICAgICAgICBjb250aW51ZTsgCisgICAgICAgIGlmIChzb3Vy
Y2UtPmhhc0F0dHJpYnV0ZShtZWRpYUF0dHIpKSB7CisgICAgICAgICAgICBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIGRvY3VtZW50KCktPmZyYW1lKCksIHJlbmRlcmVy
KCkgPyByZW5kZXJlcigpLT5zdHlsZSgpIDogMCk7CisgICAgICAgICAgICBSZWZQdHI8TWVkaWFM
aXN0PiBtZWRpYSA9IE1lZGlhTGlzdDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChz
b3VyY2UtPm1lZGlhKCkpOworICAgICAgICAgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWwobWVkaWEu
Z2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChzb3VyY2UtPmhhc0F0dHJpYnV0ZSh0eXBlQXR0cikpIHsKKyAgICAgICAgICAgIENvbnRlbnRU
eXBlIHR5cGUoc291cmNlLT50eXBlKCkpOworICAgICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6
c3VwcG9ydHNUeXBlKHR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAvLyByZXR1cm4gdHlwZSB3aXRoIGFsbCBwYXJhbWV0ZXJzIGluIHBsYWNlIHNvIHRoZSBt
ZWRpYSBlbmdpbmUgY2FuIHVzZSB0aGVtCisgICAgICAgICAgICBpZiAoY29udGVudFR5cGUpCisg
ICAgICAgICAgICAgICAgKmNvbnRlbnRUeXBlID0gdHlwZTsKICAgICAgICAgfQorICAgICAgICBt
ZWRpYVNyYyA9IHNvdXJjZS0+c3JjKCkuc3RyaW5nKCk7CisgICAgICAgIG1fY3VycmVudFNvdXJj
ZU5vZGUgPSBub2RlOworICAgICAgICBicmVhazsKICAgICB9CisKICAgICBpZiAoIW1lZGlhU3Jj
LmlzRW1wdHkoKSkKICAgICAgICAgbWVkaWFTcmMgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTCht
ZWRpYVNyYykuc3RyaW5nKCk7CisKICAgICByZXR1cm4gbWVkaWFTcmM7CiB9CiAKQEAgLTkxNywy
MyArMTEyMSwzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoCiB7
CiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogCi0gICAgaWYgKHJl
YWR5U3RhdGUoKSA+PSBDQU5fUExBWSkKKyAgICBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfQ1VS
UkVOVF9EQVRBICYmIG1fc2Vla2luZykgeworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFt
ZXMoKS5zZWVrZWRFdmVudCk7CiAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOworICAgIH0KICAg
ICAKICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwotICAgIGlmIChub3cgPj0gZHVyYXRp
b24oKSkgeworICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7CisgICAgaWYgKG5vdyA+PSBkdXIp
IHsKICAgICAgICAgaWYgKGxvb3AoKSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
LSAgICAgICAgICAgIHNlZWsoMCwgZWMpOwotICAgICAgICAgICAgZGlzcGF0Y2hFdmVudEZvclR5
cGUoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgZmFsc2UsIHRydWUpOworICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uOworICAgICAgICAgICAgbV9zZW50RW5k
RXZlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIHNlZWsoMCwgaWdub3JlZEV4Y2VwdGlvbik7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5h
bWVzKCkudGltZXVwZGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBkaXNwYXRj
aEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIHRydWUpOworICAg
ICAgICAgICAgaWYgKCFtX3NlbnRFbmRFdmVudCkgeworICAgICAgICAgICAgICAgIG1fc2VudEVu
ZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChm
YWxzZSk7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRF
dmVudCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZQorICAgICAg
ICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7Ci0KICAg
ICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQogCkBAIC05NTIsNiArMTE2
MywzOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lCiAgICAgZW5k
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciopCit7CisgICAgYmVn
aW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOworI2lmICFFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKKyAgICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICByZW5kZXJlcigpLT51
cGRhdGVGcm9tRWxlbWVudCgpOworICAgICAgICBpZiAoIXJlbmRlcmVyKCktPmlzSW1hZ2UoKSkK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclZpZGVvKj4ocmVuZGVyZXIoKSktPnZpZGVv
U2l6ZUNoYW5nZWQoKTsKKyAgICB9CisjZW5kaWYgICAgICAgIAorICAgIGVuZFByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopCit7CisgICAgYmVnaW5Qcm9jZXNzaW5nTWVk
aWFQbGF5ZXJDYWxsYmFjaygpOworICAgIC8vIFN0YXNoIHRoZSByYXRlIGluIGNhc2UgdGhlIG9u
ZSB3ZSB0cmllZCB0byBzZXQgaXNuJ3Qgd2hhdCB0aGUgZW5naW5lIGlzCisgICAgLy8gdXNpbmcg
KGVnLiBpdCBjYW4ndCBoYW5kbGUgdGhlIHJhdGUgd2Ugc2V0KQorICAgIG1fcGxheWJhY2tSYXRl
ID0gbV9wbGF5ZXItPnJhdGUoKTsKKyAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFj
aygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKQoreworICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2so
KTsKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgaWYgKHJlbmRlcmVy
KCkgJiYgIXJlbmRlcmVyKCktPmlzSW1hZ2UoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVy
VmlkZW8qPihyZW5kZXJlcigpKS0+dmlkZW9TaXplQ2hhbmdlZCgpOworI2VuZGlmICAgICAgICAK
KyAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOworfQorCiBQYXNzUmVmUHRy
PFRpbWVSYW5nZXM+IEhUTUxNZWRpYUVsZW1lbnQ6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRSByZWFsIHJhbmdlcyBzdXBwb3J0CkBAIC05NzQsMTYgKzEyMTgsMzMgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVkaWFFbGVtZW50OgogICAgIHJldHVybiBUaW1lUmFuZ2Vz
OjpjcmVhdGUoMCwgbV9wbGF5ZXItPm1heFRpbWVTZWVrYWJsZSgpKTsKIH0KIAotYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjphY3RpdmVseVBsYXlpbmcoKSBjb25zdAorYm9vbCBIVE1MTWVkaWFFbGVt
ZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdAogewotICAgIHJldHVybiAhcGF1c2VkKCkg
JiYgcmVhZHlTdGF0ZSgpID49IENBTl9QTEFZICYmICFlbmRlZFBsYXliYWNrKCk7IC8vICYmICFz
dG9wcGVkRHVlVG9FcnJvcnMoKSAmJiAhcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCk7CisgICAg
cmV0dXJuICFwYXVzZWQoKSAmJiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSAmJiAh
ZW5kZWRQbGF5YmFjaygpICYmICFzdG9wcGVkRHVlVG9FcnJvcnMoKSAmJiAhcGF1c2VkRm9yVXNl
ckludGVyYWN0aW9uKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFj
aygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5ldHdvcmtTdGF0ZSgpID49IExPQURFRF9NRVRBREFU
QSAmJiBjdXJyZW50VGltZSgpID49IGR1cmF0aW9uKCkgJiYgIWxvb3AoKTsKKyAgICByZXR1cm4g
bV9wbGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEgJiYgY3VycmVudFRpbWUo
KSA+PSBkdXJhdGlvbigpICYmICFsb29wKCk7CiB9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6
c3RvcHBlZER1ZVRvRXJyb3JzKCkgY29uc3QKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID49IEhB
VkVfTUVUQURBVEEgJiYgbV9lcnJvcikgeworICAgICAgICBSZWZQdHI8VGltZVJhbmdlcz4gc2Vl
a2FibGVSYW5nZXMgPSBzZWVrYWJsZSgpOworICAgICAgICBpZiAoIXNlZWthYmxlUmFuZ2VzLT5j
b250YWluKGN1cnJlbnRUaW1lKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
ICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZWRGb3JVc2VySW50ZXJhY3Rpb24oKSBjb25zdAoreworLy8gICAgcmV0dXJuICFwYXVzZWQoKSAm
JiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9GVVRVUkVfREFUQSAmJiBbVUEgcmVxdWlyZXMgYSBkZWNp
dGlvbnMgZnJvbSB0aGUgdXNlcl0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlVm9sdW1lKCkKIHsKICAgICBpZiAoIW1fcGxheWVyKQpAQCAtMTAw
NSwxOCArMTI2NiwyNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgp
CiB7CiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYg
KG1fcGF1c2VkSW50ZXJuYWwpIHsKICAgICAgICAgaWYgKCFtX3BsYXllci0+cGF1c2VkKCkpCiAg
ICAgICAgICAgICBtX3BsYXllci0+cGF1c2UoKTsKKyAgICAgICAgbV9wbGF5YmFja1Byb2dyZXNz
VGltZXIuc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGJvb2wgc2hv
dWxkQmVQbGF5aW5nID0gYWN0aXZlbHlQbGF5aW5nKCk7Ci0gICAgaWYgKHNob3VsZEJlUGxheWlu
ZyAmJiBtX3BsYXllci0+cGF1c2VkKCkpCisgICAgYm9vbCBzaG91bGRCZVBsYXlpbmcgPSBwb3Rl
bnRpYWxseVBsYXlpbmcoKTsKKyAgICBib29sIHBsYXllclBhdXNlZCA9IG1fcGxheWVyLT5wYXVz
ZWQoKTsKKyAgICBpZiAoc2hvdWxkQmVQbGF5aW5nICYmIHBsYXllclBhdXNlZCkgeworICAgICAg
ICAvLyBTZXQgcmF0ZSBiZWZvcmUgY2FsbGluZyBwbGF5IGluIGNhc2UgdGhlIHJhdGUgd2FzIHNl
dCBiZWZvcmUgdGhlIG1lZGlhIGVuZ2luZSB3YXNuJ3Qgc2V0dXAuCisgICAgICAgIC8vIFRoZSBt
ZWRpYSBlbmdpbmUgc2hvdWxkIGp1c3Qgc3Rhc2ggdGhlIHJhdGUgc2luY2UgaXQgaXNuJ3QgYWxy
ZWFkeSBwbGF5aW5nLgorICAgICAgICBtX3BsYXllci0+c2V0UmF0ZShtX3BsYXliYWNrUmF0ZSk7
CiAgICAgICAgIG1fcGxheWVyLT5wbGF5KCk7Ci0gICAgZWxzZSBpZiAoIXNob3VsZEJlUGxheWlu
ZyAmJiAhbV9wbGF5ZXItPnBhdXNlZCgpKQorICAgICAgICBzdGFydFBsYXliYWNrUHJvZ3Jlc3NU
aW1lcigpOworICAgIH0gZWxzZSBpZiAoIXNob3VsZEJlUGxheWluZyAmJiAhcGxheWVyUGF1c2Vk
KSB7CiAgICAgICAgIG1fcGxheWVyLT5wYXVzZSgpOworICAgICAgICBtX3BsYXliYWNrUHJvZ3Jl
c3NUaW1lci5zdG9wKCk7CisgICAgfQogICAgIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAg
ICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAtMTAyOCwyNSArMTI5Nyw1MCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBhdXNlZEludGVybmFsCiAgICAgdXBkYXRlUGxh
eVN0YXRlKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21l
SW5hY3RpdmUoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wUGVyaW9kaWNUaW1lcnMoKQor
eworICAgIG1fcHJvZ3Jlc3NFdmVudFRpbWVyLnN0b3AoKTsKKyAgICBtX3BsYXliYWNrUHJvZ3Jl
c3NUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxl
ZExvYWQoKQogewotICAgIC8vIDMuMTQuOS40LiBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQot
ICAgIC8vIDE0Ci0gICAgaWYgKG1fYmVndW4pIHsKLSAgICAgICAgLy8gRm9yIHNpbXBsaWNpdHkg
Y2FuY2VsIHRoZSBpbmNvbXBsZXRlIGxvYWQgYnkgZGVsZXRpbmcgdGhlIHBsYXllcgorICAgIGlm
IChtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZKSB7CisKKyAgICAgICAgLy8gSWYgdGhl
IG1lZGlhIGRhdGEgZmV0Y2hpbmcgcHJvY2VzcyBpcyBhYm9ydGVkIGJ5IHRoZSB1c2VyOgorCisg
ICAgICAgIC8vIDEgLSBUaGUgdXNlciBhZ2VudCBzaG91bGQgY2FuY2VsIHRoZSBmZXRjaGluZyBw
cm9jZXNzLgorI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICAgICAgbV9w
bGF5ZXIuY2xlYXIoKTsKLSAgICAgICAgbV9wcm9ncmVzc0V2ZW50VGltZXIuc3RvcCgpOworI2Vu
ZGlmCisgICAgICAgIHN0b3BQZXJpb2RpY1RpbWVycygpOwogCisgICAgICAgIC8vIDIgLSBTZXQg
dGhlIGVycm9yIGF0dHJpYnV0ZSB0byBhIG5ldyBNZWRpYUVycm9yIG9iamVjdCB3aG9zZSBjb2Rl
IGF0dHJpYnV0ZSBpcyBzZXQgdG8gTUVESUFfRVJSX0FCT1JULgogICAgICAgICBtX2Vycm9yID0g
TWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9BQk9SVEVEKTsKLSAgICAg
ICAgbV9iZWd1biA9IGZhbHNlOwotICAgICAgICBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50
KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlID49
IExPQURJTkcpIHsKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gRU1QVFk7Ci0gICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBEQVRBX1VOQVZBSUxBQkxFOwotICAgICAgICAgICAgZGlzcGF0
Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCwgZmFsc2UsIHRydWUpOwor
CisgICAgICAgIC8vIDMgLSBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHByb2dyZXNzIGV2ZW50IGNh
bGxlZCBhYm9ydCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KKyAgICAgICAgc2NoZWR1bGVQcm9ncmVz
c0V2ZW50KGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsKKworICAgICAgICAvLyA0IC0gSWYgdGhl
IG1lZGlhIGVsZW1lbnQncyByZWFkeVN0YXRlIGF0dHJpYnV0ZSBoYXMgYSB2YWx1ZSBlcXVhbCB0
byBIQVZFX05PVEhJTkcsIHNldCB0aGUgCisgICAgICAgIC8vIGVsZW1lbnQncyBuZXR3b3JrU3Rh
dGUgYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0VNUFRZIHZhbHVlIGFuZCBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIAorICAgICAgICAvLyBzaW1wbGUgZXZlbnQgY2FsbGVkIGVtcHRpZWQgYXQgdGhl
IGVsZW1lbnQuIE90aGVyd2lzZSwgc2V0IHNldCB0aGUgZWxlbWVudCdzIG5ldHdvcmtTdGF0ZSAK
KyAgICAgICAgLy8gYXR0cmlidXRlIHRvIHRoZSBORVRXT1JLX0lETEUgdmFsdWUuCisgICAgICAg
IGlmIChtX25ldHdvcmtTdGF0ZSA+PSBORVRXT1JLX0xPQURJTkcpIHsKKyAgICAgICAgICAgIG1f
bmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9
IEhBVkVfTk9USElORzsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVt
cHRpZWRFdmVudCk7CiAgICAgICAgIH0KKworICAgICAgICAvLyA1IC0gU2V0IHRoZSBlbGVtZW50
J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQgZmxhZyB0byBmYWxzZS4gVGhpcyBzdG9wcyBkZWxh
eWluZyB0aGUgbG9hZCBldmVudC4KKyAgICAgICAgbV9kZWxheWluZ1RoZUxvYWRFdmVudCA9IGZh
bHNlOwogICAgIH0KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNv
bWVJbmFjdGl2ZSgpCit7CiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7CisgICAgdXNl
ckNhbmNlbGxlZExvYWQoKTsKKwogICAgIC8vIFN0b3AgdGhlIHBsYXliYWNrIHdpdGhvdXQgZ2Vu
ZXJhdGluZyBldmVudHMKICAgICBzZXRQYXVzZWRJbnRlcm5hbCh0cnVlKTsKIApAQCAtMTA2MSw2
ICsxMzU1LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZQogCiAg
ICAgaWYgKG1fZXJyb3IgJiYgbV9lcnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElBX0VS
Ul9BQk9SVEVEKSB7CiAgICAgICAgIC8vIFJlc3RhcnQgdGhlIGxvYWQgaWYgaXQgd2FzIGFib3J0
ZWQgaW4gdGhlIG1pZGRsZSBieSBtb3ZpbmcgdGhlIGRvY3VtZW50IHRvIHRoZSBwYWdlIGNhY2hl
LgorICAgICAgICAvLyBtX2Vycm9yIGlzIG9ubHkgbGVmdCBhdCBNRURJQV9FUlJfQUJPUlRFRCB3
aGVuIHRoZSBkb2N1bWVudCBiZWNvbWVzIGluYWN0aXZlIChpdCBpcyBzZXQgdG8KKyAgICAgICAg
Ly8gIE1FRElBX0VSUl9BQk9SVEVEIHdoaWxlIHRoZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNlbnQs
IGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5IGFmdGVyd2FyZHMpLgogICAgICAgICAvLyBUaGlzIGJl
aGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQgYnV0IGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0aGlu
ZyB0byBkby4KICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAgICAgbG9hZChlYyk7CkBA
IC0xMTI0LDkgKzE0MjAsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYVBsYXll
clBybwogCiBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6aW5pdGlhbFVSTCgpCiB7Ci0gICAgQ29u
dGVudFR5cGUgaWdub3JlZFR5cGU7Ci0gICAgU3RyaW5nIGluaXRpYWxTcmMgPSBzZWxlY3RNZWRp
YVVSTChpZ25vcmVkVHlwZSk7CisgICAgU3RyaW5nIGluaXRpYWxTcmMgPSBtZWRpYVNyYyA9IGdl
dEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAKKyAgICBpZiAoaW5pdGlhbFNyYy5pc0VtcHR5KCkp
CisgICAgICAgIGluaXRpYWxTcmMgPSBuZXh0U291cmNlQ2hpbGQoKTsKKworICAgIGlmICghaW5p
dGlhbFNyYy5pc0VtcHR5KCkpCisgICAgICAgIGluaXRpYWxTcmMgPSBkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChpbml0aWFsU3JjKS5zdHJpbmcoKTsKKwogICAgIG1fY3VycmVudFNyYyA9IGluaXRp
YWxTcmM7CisKICAgICByZXR1cm4gaW5pdGlhbFNyYzsKIH0KIApJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCShyZXZpc2lvbiA0MTgyNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRXZlbnQ7CiBjbGFzcyBNZWRpYUVycm9yOwotY2xhc3MgVGltZVJhbmdl
czsKIGNsYXNzIEtVUkw7CitjbGFzcyBUaW1lUmFuZ2VzOwogICAgIAogY2xhc3MgSFRNTE1lZGlh
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50IHsK
IHB1YmxpYzoKQEAgLTgwLDggKzgxLDggQEAgcHVibGljOgogICAgIEtVUkwgc3JjKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTcmMoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1cnJlbnRTcmMo
KSBjb25zdDsKLSAgICAKLSAgICBlbnVtIE5ldHdvcmtTdGF0ZSB7IEVNUFRZLCBMT0FESU5HLCBM
T0FERURfTUVUQURBVEEsIExPQURFRF9GSVJTVF9GUkFNRSwgTE9BREVEIH07CisKKyAgICBlbnVt
IE5ldHdvcmtTdGF0ZSB7IE5FVFdPUktfRU1QVFksIE5FVFdPUktfSURMRSwgTkVUV09SS19MT0FE
SU5HLCBORVRXT1JLX0xPQURFRCwgTkVUV09SS19OT19TT1VSQ0UgfTsKICAgICBOZXR3b3JrU3Rh
dGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZm
ZXJlZCgpIGNvbnN0OwogICAgIHZvaWQgbG9hZChFeGNlcHRpb25Db2RlJik7CkBAIC04OSw3ICs5
MCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3Q7CiAKIC8vIHJlYWR5IHN0YXRlCi0gICAgZW51bSBSZWFkeVN0YXRlIHsgREFU
QV9VTkFWQUlMQUJMRSwgQ0FOX1NIT1dfQ1VSUkVOVF9GUkFNRSwgQ0FOX1BMQVksIENBTl9QTEFZ
X1RIUk9VR0ggfTsKKyAgICBlbnVtIFJlYWR5U3RhdGUgeyBIQVZFX05PVEhJTkcsIEhBVkVfTUVU
QURBVEEsIEhBVkVfQ1VSUkVOVF9EQVRBLCBIQVZFX0ZVVFVSRV9EQVRBLCBIQVZFX0VOT1VHSF9E
QVRBIH07CiAgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBzZWVr
aW5nKCkgY29uc3Q7CiAKQEAgLTk5LDkgKzEwMCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkdXJh
dGlvbigpIGNvbnN0OwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7CiAgICAgZmxvYXQgZGVmYXVs
dFBsYXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShm
bG9hdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShm
bG9hdCk7CiAgICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQbGF5
YmFja1JhdGUoZmxvYXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFBsYXliYWNrUmF0
ZShmbG9hdCk7CiAgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSBjb25zdDsKICAg
ICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBlbmRl
ZCgpIGNvbnN0OwpAQCAtMTA5LDggKzExMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9w
bGF5KGJvb2wgYik7CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7ICAgIAogICAgIHZvaWQgc2V0TG9v
cChib29sIGIpOwotICAgIHZvaWQgcGxheShFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwYXVz
ZShFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOwog
ICAgIAogLy8gY29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkgY29uc3Q7CkBAIC0xMTksNyAr
MTIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCk7Ci0g
ICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIHZvaWQgdG9n
Z2xlUGxheVN0YXRlKCk7CiAgICAgdm9pZCBiZWdpblNjcnViYmluZygpOwogICAgIHZvaWQgZW5k
U2NydWJiaW5nKCk7CiAKQEAgLTE0MSwxMiArMTQyLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVZvbHVtZURpZENoYW5nZSgpOwogICAgIAotICAgIHZvaWQgaW5pdEFuZERpc3BhdGNoUHJvZ3Jl
c3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdm9pZCBkaXNwYXRj
aEV2ZW50QXN5bmMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwotICAgIAotICAgIHZv
aWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKLSAgICB2b2lkIHNldE5ldHdvcmtTdGF0ZShN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIHN0YXRlKTsKLQorICAgIHZvaWQgc2V0UmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdm9pZCBzZXROZXR3b3JrU3RhdGUoTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAgICAgCiBwcml2YXRlOiAvLyBNZWRpYVBsYXllck9i
c2VydmVyCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZChN
ZWRpYVBsYXllciopOwpAQCAtMTU0LDI5ICsxNTEsNTMgQEAgcHJpdmF0ZTogLy8gTWVkaWFQbGF5
ZXJPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlh
UGxheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVwYWludChNZWRpYVBsYXll
ciopOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoTWVkaWFQbGF5
ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQ
bGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBs
YXllciopOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxh
eWVyKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MTWVk
aWFFbGVtZW50PiopOwogICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIHByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhU
TUxNZWRpYUVsZW1lbnQ+Kik7Ci0gICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKTsKKyAgICB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+Kik7CisgICAgdm9pZCBzdGFydFBsYXliYWNrUHJvZ3Jlc3NUaW1lcigpOwor
ICAgIHZvaWQgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKKyAgICB2b2lkIHN0b3BQZXJpb2Rp
Y1RpbWVycygpOworCisgICAgdm9pZCBzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIGNoZWNrSWZTZWVrTmVlZGVkKCk7CisgICAgCisgICAgdm9pZCBzY2hlZHVsZVRp
bWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpOworICAgIHZvaWQgc2NoZWR1bGVQcm9n
cmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIHNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgZW5xdWV1
ZUV2ZW50KFJlZlB0cjxFdmVudD4gZXZlbnQpOworICAgIAorICAgIC8vIGxvYWRpbmcKKyAgICB2
b2lkIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShTdHJpbmcg
dXJsLCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpOworICAgIHZvaWQgbG9hZE5leHRTb3VyY2VD
aGlsZCgpOworICAgIHZvaWQgdXNlckNhbmNlbGxlZExvYWQoKTsKKyAgICBTdHJpbmcgbmV4dFNv
dXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSA9IDApOworICAgIGJvb2wgaGF2ZVBv
dGVudGlhbFNvdXJjZUNoaWxkKCk7CisgICAgdm9pZCBub25lU3VwcG9ydGVkKCk7CisgICAgdm9p
ZCBtZWRpYUVuZ2luZUVycm9yKFBhc3NSZWZQdHI8TWVkaWFFcnJvcj4gZXJyKTsKIAogICAgIC8v
IFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVz
dHJpY3Rpb25zLgotICAgIHZvaWQgbG9hZEludGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAg
ICB2b2lkIHBsYXlJbnRlcm5hbChFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgdm9pZCBwYXVzZUlu
dGVybmFsKEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGxvYWRJbnRlcm5hbCgpOworICAg
IHZvaWQgcGxheUludGVybmFsKCk7CisgICAgdm9pZCBwYXVzZUludGVybmFsKCk7CiAgICAgCiAg
ICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsKICAgICBib29sIHByb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTWVkaWFQ
bGF5ZXJDYWxsYmFjayA+IDA7IH0KICAgICB2b2lkIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKSB7ICsrbV9wcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjazsgfQogICAgIHZv
aWQgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKSB7IEFTU0VSVChtX3Byb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKTsgLS1tX3Byb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNr
OyB9CiAKLSAgICBTdHJpbmcgc2VsZWN0TWVkaWFVUkwoQ29udGVudFR5cGUmIGNvbnRlbnRUeXBl
KTsKICAgICB2b2lkIHVwZGF0ZVZvbHVtZSgpOwogICAgIHZvaWQgdXBkYXRlUGxheVN0YXRlKCk7
Ci0gICAgYm9vbCBhY3RpdmVseVBsYXlpbmcoKSBjb25zdDsKKyAgICBib29sIHBvdGVudGlhbGx5
UGxheWluZygpIGNvbnN0OwogICAgIGJvb2wgZW5kZWRQbGF5YmFjaygpIGNvbnN0OworICAgIGJv
b2wgc3RvcHBlZER1ZVRvRXJyb3JzKCkgY29uc3Q7CisgICAgYm9vbCBwYXVzZWRGb3JVc2VySW50
ZXJhY3Rpb24oKSBjb25zdDsKIAogICAgIC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVs
dCBiZWhhdmlvcnMuIFRoaXMgaXMgYSBlZmZlY3RpdmVseSBhIGNvbXBpbGUgdGltZSBjaG9pY2Ug
YXQgdGhlIG1vbWVudAogICAgIC8vICBiZWNhdXNlIHRoZXJlIGFyZSBubyBhY2Nlc3NvciBtZXRo
b2RzLgpAQCAtMTg3LDQzICsyMDgsMzggQEAgcHJpdmF0ZToKICAgICAgICAgUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yUmF0ZUNoYW5nZVJlc3RyaWN0aW9uID0gMSA8PCAxLAogICAgIH07CiAKLQogcHJv
dGVjdGVkOgogICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbG9hZFRpbWVyOwogICAgIFRp
bWVyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fYXN5bmNFdmVudFRpbWVyOwogICAgIFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwotICAgIFZlY3RvcjxBdG9taWNTdHJp
bmc+IG1fYXN5bmNFdmVudHNUb0Rpc3BhdGNoOworICAgIFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+
IG1fcGxheWJhY2tQcm9ncmVzc1RpbWVyOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9w
ZW5kaW5nRXZlbnRzOwogICAgIAorICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlOwogICAgIGZsb2F0
IG1fZGVmYXVsdFBsYXliYWNrUmF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7
CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgU3RyaW5nIG1fY3VycmVudFNyYzsK
ICAgICAKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKLSAgICAKLSAgICBib29sIG1f
YmVndW47Ci0gICAgYm9vbCBtX2xvYWRlZEZpcnN0RnJhbWU7Ci0gICAgYm9vbCBtX2F1dG9wbGF5
aW5nOwotICAgIAotICAgIHVuc2lnbmVkIG1fY3VycmVudExvb3A7CisKICAgICBmbG9hdCBtX3Zv
bHVtZTsKLSAgICBib29sIG1fbXV0ZWQ7Ci0gICAgCi0gICAgYm9vbCBtX3BhdXNlZDsKLSAgICBi
b29sIG1fc2Vla2luZzsKLSAgICAKICAgICBmbG9hdCBtX2N1cnJlbnRUaW1lRHVyaW5nU2VlazsK
ICAgICAKICAgICB1bnNpZ25lZCBtX3ByZXZpb3VzUHJvZ3Jlc3M7CiAgICAgZG91YmxlIG1fcHJl
dmlvdXNQcm9ncmVzc1RpbWU7Ci0gICAgYm9vbCBtX3NlbnRTdGFsbGVkRXZlbnQ7CisKKyAgICAv
LyB0aGUgbGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMgc2VudCAod2FsbCBjbG9jaykK
KyAgICBkb3VibGUgbV9sYXN0VGltZVVwZGF0ZUV2ZW50V2FsbFRpbWU7CisKKyAgICAvLyB0aGUg
bGFzdCB0aW1lIGEgdGltZXVwZGF0ZSBldmVudCB3YXMgc2VudCBpbiBtb3ZpZSB0aW1lCisgICAg
ZmxvYXQgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lOwogICAgIAotICAgIHVuc2lnbmVk
IG1fbG9hZE5lc3RpbmdMZXZlbDsKLSAgICB1bnNpZ25lZCBtX3Rlcm1pbmF0ZUxvYWRCZWxvd05l
c3RpbmdMZXZlbDsKKyAgICAvLyBsb2FkaW5nIHN0YXRlCisgICAgZW51bSBMb2FkU3RhdGUgeyBX
YWl0aW5nRm9yU291cmNlLCBMb2FkaW5nRnJvbVNyY0F0dHIsIExvYWRpbmdGcm9tU291cmNlRWxl
bWVudCB9OworICAgIExvYWRTdGF0ZSBtX2xvYWRTdGF0ZTsKKyAgICBOb2RlICptX2N1cnJlbnRT
b3VyY2VOb2RlOwogICAgIAotICAgIGJvb2wgbV9wYXVzZWRJbnRlcm5hbDsKLSAgICBib29sIG1f
aW5BY3RpdmVEb2N1bWVudDsKLQogICAgIE93blB0cjxNZWRpYVBsYXllcj4gbV9wbGF5ZXI7CiAK
ICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKQEAgLTIzMiwxMiArMjQ4
LDI5IEBAIHByb3RlY3RlZDoKICAgICAvLyAgY2FsbGluZyB0aGUgbWVkaWEgZW5naW5lIHJlY3Vy
c2l2ZWx5CiAgICAgaW50IG1fcHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2s7CiAKKyAgICBi
b29sIG1fcHJvY2Vzc2luZ0xvYWQgOiAxOworICAgIGJvb2wgbV9kZWxheWluZ1RoZUxvYWRFdmVu
dCA6IDE7CisgICAgYm9vbCBtX2hhdmVGaXJlZExvYWRlZERhdGEgOiAxOworICAgIGJvb2wgbV9p
bkFjdGl2ZURvY3VtZW50IDogMTsKKyAgICBib29sIG1fYXV0b3BsYXlpbmcgOiAxOworICAgIGJv
b2wgbV9tdXRlZCA6IDE7CisgICAgYm9vbCBtX3BhdXNlZCA6IDE7CisgICAgYm9vbCBtX3NlZWtp
bmcgOiAxOworCisgICAgLy8gZGF0YSBoYXMgbm90IGJlZW4gbG9hZGVkIHNpbmNlIHNlbmRpbmcg
YSAic3RhbGxlZCIgZXZlbnQKKyAgICBib29sIG1fc2VudFN0YWxsZWRFdmVudCA6IDE7CisKKyAg
ICAvLyB0aW1lIGhhcyBub3QgY2hhbmdlZCBzaW5jZSBzZW5kaW5nIGFuICJlbmRlZCIgZXZlbnQK
KyAgICBib29sIG1fc2VudEVuZEV2ZW50IDogMTsKKworICAgIGJvb2wgbV9wYXVzZWRJbnRlcm5h
bCA6IDE7CisKICAgICAvLyBOb3QgYWxsIG1lZGlhIGVuZ2luZXMgcHJvdmlkZSBlbm91Z2ggaW5m
b3JtYXRpb24gYWJvdXQgYSBmaWxlIHRvIGJlIGFibGUgdG8KICAgICAvLyBzdXBwb3J0IHByb2dy
ZXNzIGV2ZW50cyBzbyBzZXR0aW5nIG1fc2VuZFByb2dyZXNzRXZlbnRzIGRpc2FibGVzIHRoZW0g
Ci0gICAgYm9vbCBtX3NlbmRQcm9ncmVzc0V2ZW50czsKKyAgICBib29sIG1fc2VuZFByb2dyZXNz
RXZlbnRzIDogMTsKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIGJv
b2wgbV9uZWVkV2lkZ2V0VXBkYXRlOworICAgIGJvb2wgbV9uZWVkV2lkZ2V0VXBkYXRlIDogMTsK
ICNlbmRpZgogfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkocmV2aXNpb24g
NDE4MjcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDExICszMywxMSBAQCBpbnRlcmZhY2UgW0dlbmVyYXRlQ29uc3RydWN0b3IsIENv
bmRpdGlvCiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmM7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBjdXJyZW50U3JjOwogICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IEVNUFRZID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FESU5HID0gMTsKLSAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBMT0FERURfTUVUQURBVEEgPSAyOwotICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExPQURFRF9GSVJTVF9GUkFNRSA9IDM7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgTE9BREVEID0gNDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0VNUFRZID0g
MDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORVRXT1JLX0lETEUgPSAxOworICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IE5FVFdPUktfTE9BRElORyA9IDI7CisgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTkVUV09SS19MT0FERUQgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVFdP
UktfTk9fU09VUkNFID0gNDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQg
bmV0d29ya1N0YXRlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVy
ZWQ7CkBAIC00NiwxMCArNDYsMTEgQEAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVjdG9yLCBD
b25kaXRpbwogICAgIERPTVN0cmluZyBjYW5QbGF5VHlwZShpbiBET01TdHJpbmcgdHlwZSk7CiAK
ICAgICAvLyByZWFkeSBzdGF0ZQotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERBVEFfVU5BVkFJ
TEFCTEUgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENBTl9TSE9XX0NVUlJFTlRfRlJB
TUUgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENBTl9QTEFZID0gMjsKLSAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBDQU5fUExBWV9USFJPVUdIID0gMzsKKyAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBIQVZFX05PVEhJTkcgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEhBVkVf
TUVUQURBVEEgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEhBVkVfQ1VSUkVOVF9EQVRB
ID0gMjsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0ZVVFVSRV9EQVRBID0gMzsKKyAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIQVZFX0VOT1VHSF9EQVRBID0gNDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBzZWVraW5nOwogCkBAIC01OCwxOSArNTksMTUgQEAgaW50ZXJmYWNlIFtH
ZW5lcmF0ZUNvbnN0cnVjdG9yLCBDb25kaXRpbwogICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBkdXJhdGlvbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwYXVzZWQ7Ci0gICAgYXR0cmlidXRlIGZsb2F0IGRl
ZmF1bHRQbGF5YmFja1JhdGUgCi0gICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7
Ci0gICAgYXR0cmlidXRlIGZsb2F0IHBsYXliYWNrUmF0ZSAKLSAgICAgICAgc2V0dGVyIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQgZGVmYXVsdFBsYXliYWNrUmF0
ZTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQgcGxheWJhY2tSYXRlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBUaW1lUmFuZ2VzIHBsYXllZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdl
cyBzZWVrYWJsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBlbmRlZDsKICAgICBh
dHRyaWJ1dGUgYm9vbGVhbiBhdXRvcGxheTsKICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBsb29wOwot
ICAgIHZvaWQgcGxheSgpIAotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgdm9p
ZCBwYXVzZSgpIAotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBwbGF5
KCk7CisgICAgdm9pZCBwYXVzZSgpOwogCiAgICAgLy8gY29udHJvbHMKICAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBjb250cm9sczsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2
aXNpb24gNDE4MjcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3UKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAg
ICBpZiAocGFyZW50Tm9kZSgpICYmIChwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoYXVkaW9UYWcp
IHx8ICBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodmlkZW9UYWcpKSkgewogICAgICAgICBIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYSA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJl
bnROb2RlKCkpOwotICAgICAgICBpZiAobWVkaWEtPm5ldHdvcmtTdGF0ZSgpID09IEhUTUxNZWRp
YUVsZW1lbnQ6OkVNUFRZKQorICAgICAgICBpZiAobWVkaWEtPm5ldHdvcmtTdGF0ZSgpID09IEhU
TUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktfRU1QVFkpCiAgICAgICAgICAgICBtZWRpYS0+c2NoZWR1
bGVMb2FkKCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2
aXNpb24gNDE4MjcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0
ZVBvc3RlckltYWdlCiAgICAgYm9vbCBvbGRTaG91bGRTaG93UG9zdGVySW1hZ2UgPSBtX3Nob3Vs
ZFNob3dQb3N0ZXJJbWFnZTsKICNlbmRpZgogCi0gICAgbV9zaG91bGRTaG93UG9zdGVySW1hZ2Ug
PSAhcG9zdGVyKCkuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlIDwgTE9BREVEX0ZJUlNUX0ZS
QU1FOworICAgIG1fc2hvdWxkU2hvd1Bvc3RlckltYWdlID0gIXBvc3RlcigpLmlzRW1wdHkoKSAm
JiByZWFkeVN0YXRlKCkgPCBIQVZFX0NVUlJFTlRfREFUQTsKIAogI2lmICFFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKICAgICBpZiAoYXR0YWNoZWQoKSAmJiBvbGRTaG91bGRTaG93UG9z
dGVySW1hZ2UgIT0gbV9zaG91bGRTaG93UG9zdGVySW1hZ2UpIHsKSW5kZXg6IFdlYkNvcmUvaHRt
bC9NZWRpYUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaAko
cmV2aXNpb24gNDE4MjcpCisrKyBXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFF
cnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRXJyb3I+IHsKIHB1YmxpYzoKLSAgICBlbnVt
IENvZGUgeyBNRURJQV9FUlJfQUJPUlRFRCA9IDEsIE1FRElBX0VSUl9ORVRXT1JLLCBNRURJQV9F
UlJfREVDT0RFIH07CisgICAgZW51bSBDb2RlIHsgTUVESUFfRVJSX0FCT1JURUQgPSAxLCBNRURJ
QV9FUlJfTkVUV09SSywgTUVESUFfRVJSX0RFQ09ERSwgTUVESUFfRVJSX05PTkVfU1VQUE9SVEVE
IH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUVycm9yPiBjcmVhdGUoQ29kZSBjb2Rl
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFFcnJvcihjb2RlKSk7IH0KIApJbmRleDogV2Vi
Q29yZS9odG1sL01lZGlhRXJyb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbAkocmV2aXNpb24gNDE4MjcpCisrKyBXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9BQk9SVEVEID0gMTsKICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09SSyA9IDI7CiAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9IDM7CisgICAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEID0gNDsKICAgICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKICAgICB9OwogfQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDQxODI3KQorKysgV2ViQ29yZS9s
b2FkZXIvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxNSArMTQ5LDE0
IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcigKICAgICBOb2RlKiB0
YXJnZXROb2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKICAgICBpZiAodGFyZ2V0Tm9k
ZSAmJiB0YXJnZXROb2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSkgewogICAgICAgICBIVE1MVmlk
ZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0YXJnZXRO
b2RlKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgICAgIGlmICghdmlkZW8t
PmNhblBsYXkoKSkgewotICAgICAgICAgICAgICAgIHZpZGVvLT5wYXVzZShlYyk7CisgICAgICAg
ICAgICAgICAgdmlkZW8tPnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkgewogICAgICAgICAgICAgaWYgKHZp
ZGVvLT5jYW5QbGF5KCkpIHsKLSAgICAgICAgICAgICAgICB2aWRlby0+cGxheShlYyk7CisgICAg
ICAgICAgICAgICAgdmlkZW8tPnBsYXkoKTsKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDQxODI3KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQp
IHsgfQogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfQotICAgIHZpcnR1YWwgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxh
eWVyOjpEYXRhVW5hdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7
IH0KIAogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZUJ1ZmZlcmVkKCkgY29uc3QgeyByZXR1cm4g
MDsgfQpAQCAtNDUyLDExICs0NTIsMjkgQEAgdm9pZCBNZWRpYVBsYXllcjo6dGltZUNoYW5nZWQo
KQogICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclRpbWVDaGFuZ2VkKHRo
aXMpOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCgpCit7CisgICAgaWYgKG1f
bWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxh
eWVyU2l6ZUNoYW5nZWQodGhpcyk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6OnJlcGFpbnQoKQog
ewogICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQogICAgICAgICBtX21lZGlhUGxheWVyQ2xp
ZW50LT5tZWRpYVBsYXllclJlcGFpbnQodGhpcyk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OmR1
cmF0aW9uQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKHRoaXMpOwor
fQorCit2b2lkIE1lZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQ
bGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyUmF0
ZUNoYW5nZWQodGhpcyk7Cit9CisKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gNDE4MjcpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDExICs1MiwzMCBA
QCBjbGFzcyBTdHJpbmc7CiBjbGFzcyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TWVkaWFQbGF5ZXJDbGllbnQoKSB7IH0KKworICAgIC8vIHRoZSBuZXR3b3JrIHN0
YXRlIGhhcyBjaGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRl
Q2hhbmdlZChNZWRpYVBsYXllciopIHsgfQorCisgICAgLy8gdGhlIHJlYWR5IHN0YXRlIGhhcyBj
aGFuZ2VkCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKSB7IH0KKworICAgIC8vIHRoZSB2b2x1bWUgb3IgbXV0ZWQgc3RhdGUgaGFzIGNo
YW5nZWQKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlhUGxh
eWVyKikgeyB9CisKKyAgICAvLyB0aW1lIGhhcyBqdW1wZWQsIGVnLiBub3QgYXMgYSByZXN1bHQg
b2Ygbm9ybWFsIHBsYXliYWNrCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVGltZUNoYW5n
ZWQoTWVkaWFQbGF5ZXIqKSB7IH0KKyAgICAKKyAgICAvLyBhIG5ldyBmcmFtZSBvZiB2aWRlbyBp
cyBhdmFpbGFibGUKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlhUGxh
eWVyKikgeyB9CisKKyAgICAvLyB0aGUgbWVkaWEgZmlsZSBkdXJhdGlvbiBoYXMgY2hhbmdlZCwg
b3IgaXMgbm93IGtub3duCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFu
Z2VkKE1lZGlhUGxheWVyKikgeyB9CisgICAgCisgICAgLy8gdGhlIHBsYXliYWNrIHJhdGUgaGFz
IGNoYW5nZWQKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBs
YXllciopIHsgfQorCisgICAgLy8gdGhlIG1vdmllIHNpemUgaGFzIGNoYW5nZWQKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBsYXllciopIHsgfQogfTsKIAog
Y2xhc3MgTWVkaWFQbGF5ZXIgOiBOb25jb3B5YWJsZSB7CkBAIC0xMTUsMTYgKzEzNCwxOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0Jik7CiAgICAgCi0gICAgZW51bSBOZXR3b3JrU3RhdGUgeyBFbXB0eSwgTG9hZEZhaWxlZCwg
TG9hZGluZywgTG9hZGVkTWV0YURhdGEsIExvYWRlZEZpcnN0RnJhbWUsIExvYWRlZCB9OworICAg
IGVudW0gTmV0d29ya1N0YXRlIHsgRW1wdHksIElkbGUsIExvYWRpbmcsIExvYWRlZCwgRm9ybWF0
RXJyb3IsIE5ldHdvcmtFcnJvciwgRGVjb2RlRXJyb3IgfTsKICAgICBOZXR3b3JrU3RhdGUgbmV0
d29ya1N0YXRlKCk7CiAKLSAgICBlbnVtIFJlYWR5U3RhdGUgIHsgRGF0YVVuYXZhaWxhYmxlLCBD
YW5TaG93Q3VycmVudEZyYW1lLCBDYW5QbGF5LCBDYW5QbGF5VGhyb3VnaCB9OworICAgIGVudW0g
UmVhZHlTdGF0ZSAgeyBIYXZlTm90aGluZywgSGF2ZU1ldGFkYXRhLCBIYXZlQ3VycmVudERhdGEs
IEhhdmVGdXR1cmVEYXRhLCBIYXZlRW5vdWdoRGF0YSB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpOwogICAgIAogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQg
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHZvbHVtZUNoYW5nZWQoKTsKICAgICB2b2lk
IHRpbWVDaGFuZ2VkKCk7CisgICAgdm9pZCBzaXplQ2hhbmdlZCgpOworICAgIHZvaWQgcmF0ZUNo
YW5nZWQoKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpOwogCiAgICAgdm9pZCByZXBhaW50
KCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gNDE4MjcpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgTWVkaWFQbGF5ZXJQcml2
YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTQogICAgICwgbV9pc0VuZFJlYWNoZWQoZmFsc2UpCiAg
ICAgLCBtX3ZvbHVtZSgwLjVmKQogICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVt
cHR5KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpCisg
ICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQogICAgICwgbV9zdGFy
dGVkUGxheWluZyhmYWxzZSkKICAgICAsIG1faXNTdHJlYW1pbmcoZmFsc2UpCiAgICAgLCBtX3Np
emUoSW50U2l6ZSgpKQpAQCAtMTYzLDggKzE2Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
Ojpsb2FkKGNvbnN0IFN0cmkKICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TG9hZGluZzsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB9
Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlKSB7
Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgICAgICBtX3Bs
YXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAKQEAgLTQ3NSwxMiArNDc1LDExIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAgICAgICAgIGlmIChzdGF0ZSA9
PSBHU1RfU1RBVEVfUkVBRFkpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpDYW5QbGF5VGhyb3VnaDsKKyAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBHU1RfU1RB
VEVfUEFVU0VEKSB7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2Fu
UGxheVRocm91Z2g7CisgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2
ZUVub3VnaERhdGE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVk
aWFQbGF5ZXI6OkxvYWRlZCkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5
ZXI6OkxvYWRlZDsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVk
OwogCiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4sICJzb3VyY2UiLCAmbV9zb3VyY2Us
IE5VTEwpOwogICAgICAgICBpZiAoIW1fc291cmNlKQpAQCAtNDk4LDEyICs0OTcsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBnc3RfZWxl
bWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksCiAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0
ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUkVB
RFkpIHsKLSAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5Owor
ICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhOwog
ICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsKLSAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpDYW5QbGF5OworICAgICAgICAgICAgbV9y
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0YTsKICAgICAgICAgfQotICAg
ICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEpCi0g
ICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YTsK
KyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJFbHNlIDog
JWQiLCByZXQpOwpAQCAtNTExLDcgKzUwOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1
cGRhdGVTdGF0ZXMoKQogICAgIH0KIAogICAgIGlmIChzZWVraW5nKCkpCi0gICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKIAogICAgIGlmIChtX25ldHdvcmtTdGF0
ZSAhPSBvbGROZXR3b3JrU3RhdGUpIHsKICAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJOZXR3
b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsCkBAIC01NjAsMTIgKzU1OCwxMiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGU6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBNZWRpYVBs
YXllcjo6TG9hZEZhaWxlZCkgewotICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpMb2FkRmFpbGVkOworICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBNZWRpYVBsYXllcjo6TmV0
d29ya0Vycm9yKSB7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtFcnJvcjsKICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKICAgICB9
Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlKSB7
Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgICAgICBtX3Bs
YXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgJ
KHJldmlzaW9uIDQxODI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksMTEgKzg5LDEyIEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdDsKICAgICBmbG9hdCBjdXJyZW50
VGltZSgpIGNvbnN0OwogICAgIHZvaWQgc2VlayhmbG9hdCB0aW1lKTsKLSAgICB2b2lkIHNldEVu
ZFRpbWUoZmxvYXQgdGltZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSYXRlKGZsb2F0KTsKICAgICB2
b2lkIHNldFZvbHVtZShmbG9hdCk7Ci0gICAgCisKKyAgICB2b2lkIHNldEVuZFRpbWUoZmxvYXQg
dGltZSk7CisKICAgICBpbnQgZGF0YVJhdGUoKSBjb25zdDsKICAgICAKICAgICBNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1N0
YXRlOyB9CkBAIC0xMjMsMTIgKzEyNCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9TZWVrKCk7
CiAgICAgdm9pZCBjYW5jZWxTZWVrKCk7CiAgICAgdm9pZCBzZWVrVGltZXJGaXJlZChUaW1lcjxN
ZWRpYVBsYXllclByaXZhdGU+Kik7Ci0gICAgdm9pZCBlbmRQb2ludFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFQbGF5ZXJQcml2YXRlPiopOwogICAgIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdDsK
LSAgICB2b2lkIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7Ci0gICAgdm9pZCBkaXNhYmxl
VW5zdXBwb3J0ZWRUcmFja3ModW5zaWduZWQmIGVuYWJsZWRUcmFja0NvdW50KTsKKyAgICB2b2lk
IGRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpOwogICAgIAotICAgIGJvb2wgbWV0YURhdGFBdmFp
bGFibGUoKSBjb25zdCB7IHJldHVybiBtX3F0TW92aWUgJiYgbV9uZXR3b3JrU3RhdGUgPj0gTWVk
aWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhOyB9CisgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcXRNb3ZpZSAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6
OkhhdmVNZXRhZGF0YTsgfQogCiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwogICAgIFJldGFp
blB0cjxRVE1vdmllPiBtX3F0TW92aWU7CkBAIC0xMzYsMTUgKzEzNSwxNSBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxRVFZpZGVvUmVuZGVyZXJXZWJLaXRPbmx5PiBtX3F0VmlkZW9SZW5kZXJl
cjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZU1vdmllT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwog
ICAgIGZsb2F0IG1fc2Vla1RvOwotICAgIGZsb2F0IG1fZW5kVGltZTsKICAgICBUaW1lcjxNZWRp
YVBsYXllclByaXZhdGU+IG1fc2Vla1RpbWVyOwotICAgIFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0
ZT4gbV9lbmRQb2ludFRpbWVyOwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3
b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAg
IGJvb2wgbV9zdGFydGVkUGxheWluZzsKICAgICBib29sIG1faXNTdHJlYW1pbmc7CiAgICAgYm9v
bCBtX3Zpc2libGU7CiAgICAgSW50UmVjdCBtX3JlY3Q7CisgICAgdW5zaWduZWQgbV9lbmFibGVk
VHJhY2tDb3VudDsKKyAgICBmbG9hdCBtX2R1cmF0aW9uOwogI2lmIERSQVdfRlJBTUVfUkFURQog
ICAgIGludCAgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nOwogICAgIGRvdWJsZSBtX3RpbWVTdGFy
dGVkUGxheWluZzsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiA0MTgyNykKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTcsOCArMTU3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZmxvYXQgZW5kUG9pbnRUaW1lcklu
dGVydmFsID0gMC4wMjBmOwotCiAjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKIHN0YXRpYyBjb25z
dCBsb25nIG1pbmltdW1RdWlja1RpbWVWZXJzaW9uID0gMHgwNzMwMDAwMDsgLy8gNy4zCiAjZW5k
aWYKQEAgLTE3OSwxNSArMTc3LDE1IEBAIE1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlKE0KICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fb2JqY09ic2VydmVyKEFk
b3B0TlMsIFtbV2ViQ29yZU1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhp
c10pCiAgICAgLCBtX3NlZWtUbygtMSkKLSAgICAsIG1fZW5kVGltZShudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCkpCiAgICAgLCBtX3NlZWtUaW1lcih0aGlzLCAmTWVkaWFQbGF5ZXJQ
cml2YXRlOjpzZWVrVGltZXJGaXJlZCkKLSAgICAsIG1fZW5kUG9pbnRUaW1lcih0aGlzLCAmTWVk
aWFQbGF5ZXJQcml2YXRlOjplbmRQb2ludFRpbWVyRmlyZWQpCiAgICAgLCBtX25ldHdvcmtTdGF0
ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkRh
dGFVbmF2YWlsYWJsZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmcpCiAgICAgLCBtX3N0YXJ0ZWRQbGF5aW5nKGZhbHNlKQogICAgICwgbV9pc1N0cmVhbWluZyhm
YWxzZSkKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAsIG1fcmVjdCgpCisgICAgLCBtX2Vu
YWJsZWRUcmFja0NvdW50KDApCisgICAgLCBtX2R1cmF0aW9uKC0xLjBmKQogI2lmIERSQVdfRlJB
TUVfUkFURQogICAgICwgbV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nKDApCiAgICAgLCBtX3RpbWVT
dGFydGVkUGxheWluZygwKQpAQCAtNDA3LDEyICs0MDUsMTEgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OmxvYWQoY29uc3QgU3RyaQogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpMb2FkaW5nOwogICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwog
ICAgIH0KLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFi
bGUpIHsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJs
ZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykgewor
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAg
IG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KICAgICBjYW5jZWxTZWVrKCk7
Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKICAgICAKICAgICBbbV9vYmpjT2JzZXJ2ZXIu
Z2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6WUVTXTsKIApAQCAtNDMzLDcgKzQzMCw2IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KCkKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2V0
RGVsYXlDYWxsYmFja3M6WUVTXTsKICAgICBbbV9xdE1vdmllLmdldCgpIHNldFJhdGU6bV9wbGF5
ZXItPnJhdGUoKV07CiAgICAgW21fb2JqY09ic2VydmVyLmdldCgpIHNldERlbGF5Q2FsbGJhY2tz
Ok5PXTsKLSAgICBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6cGF1c2UoKQpAQCAtNDQ3LDcgKzQ0Myw2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjpwYXVzZSgpCiAgICAgW21fb2JqY09ic2VydmVyLmdldCgpIHNldERlbGF5Q2Fs
bGJhY2tzOllFU107CiAgICAgW21fcXRNb3ZpZS5nZXQoKSBzdG9wXTsKICAgICBbbV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgc2V0RGVsYXlDYWxsYmFja3M6Tk9dOwotICAgIG1fZW5kUG9pbnRUaW1lci5z
dG9wKCk7CiB9CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6ZHVyYXRpb24oKSBjb25zdApA
QCAtNDY1LDcgKzQ2MCw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZTo6Y3VycmVudFRpbWUo
KSAKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IFFUVGltZSB0aW1lID0gW21fcXRNb3ZpZS5nZXQoKSBjdXJyZW50VGltZV07Ci0gICAgcmV0dXJu
IG1pbihzdGF0aWNfY2FzdDxmbG9hdD4odGltZS50aW1lVmFsdWUpIC8gdGltZS50aW1lU2NhbGUs
IG1fZW5kVGltZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0aW1lLnRpbWVWYWx1
ZSkgLyB0aW1lLnRpbWVTY2FsZTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnNlZWso
ZmxvYXQgdGltZSkKQEAgLTQ3Nyw3ICs0NzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
c2VlayhmbG9hdCB0aW1lCiAgICAgCiAgICAgaWYgKHRpbWUgPiBkdXJhdGlvbigpKQogICAgICAg
ICB0aW1lID0gZHVyYXRpb24oKTsKLSAgICAKKwogICAgIG1fc2Vla1RvID0gdGltZTsKICAgICBp
ZiAobWF4VGltZUxvYWRlZCgpID49IG1fc2Vla1RvKQogICAgICAgICBkb1NlZWsoKTsKQEAgLTQ5
NSw3ICs0OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZG9TZWVrKCkgCiAgICAgW21f
cXRNb3ZpZS5nZXQoKSBzZXRDdXJyZW50VGltZTpxdHRpbWVdOwogICAgIGZsb2F0IHRpbWVBZnRl
clNlZWsgPSBjdXJyZW50VGltZSgpOwogICAgIC8vIHJlc3RvcmUgcGxheWJhY2sgb25seSBpZiBu
b3QgYXQgZW5kLCBvdGhld2lzZSBRVE1vdmllIHdpbGwgbG9vcAotICAgIGlmICh0aW1lQWZ0ZXJT
ZWVrIDwgZHVyYXRpb24oKSAmJiB0aW1lQWZ0ZXJTZWVrIDwgbV9lbmRUaW1lKQorICAgIGlmIChv
bGRSYXRlICYmIHRpbWVBZnRlclNlZWsgPCBkdXJhdGlvbigpKQogICAgICAgICBbbV9xdE1vdmll
LmdldCgpIHNldFJhdGU6b2xkUmF0ZV07CiAgICAgY2FuY2VsU2VlaygpOwogICAgIFttX29iamNP
YnNlcnZlci5nZXQoKSBzZXREZWxheUNhbGxiYWNrczpOT107CkBAIC01MjgsMjcgKzUyMyw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrVGltZXJGaXJlZCgKICAgICB9CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRFbmRUaW1lKGZsb2F0IHRpbWUpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6c2V0RW5kVGltZShmbG9hdCkKIHsKLSAgICBtX2VuZFRpbWUgPSB0aW1l
OwotICAgIHN0YXJ0RW5kUG9pbnRUaW1lcklmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjpzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgpCi17Ci0gICAgaWYgKG1fZW5k
VGltZSA8IGR1cmF0aW9uKCkgJiYgbV9zdGFydGVkUGxheWluZyAmJiAhbV9lbmRQb2ludFRpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZW5kUG9pbnRUaW1lci5zdGFydFJlcGVhdGluZyhlbmRQ
b2ludFRpbWVySW50ZXJ2YWwpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZW5kUG9p
bnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4qKQotewotICAgIGZsb2F0IHRp
bWUgPSBjdXJyZW50VGltZSgpOwotICAgIAotICAgIC8vIGp1c3QgZG8gZW5kIGZvciBub3cKLSAg
ICBpZiAodGltZSA+PSBtX2VuZFRpbWUpIHsKLSAgICAgICAgcGF1c2UoKTsKLSAgICAgICAgZGlk
RW5kKCk7Ci0gICAgfQogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2VkKCkgY29u
c3QKQEAgLTY2MCw1MSArNjM2LDYyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVT
dGF0ZXMoKQogICAgIAogICAgIGxvbmcgbG9hZFN0YXRlID0gbV9xdE1vdmllID8gW1ttX3F0TW92
aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OlFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGVdIGxvbmdW
YWx1ZV0gOiBzdGF0aWNfY2FzdDxsb25nPihRVE1vdmllTG9hZFN0YXRlRXJyb3IpOwogICAgIAot
ICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxvYWRlZCAmJiBtX25ldHdvcmtT
dGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSAmJiAhbV9wbGF5ZXItPmluTWVkaWFE
b2N1bWVudCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVuYWJsZWRUcmFja0NvdW50OwotICAgICAg
ICBkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoZW5hYmxlZFRyYWNrQ291bnQpOwotICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2FkIGVycm9ycyBhbmQg
ZGVjb2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4KLSAgICAgICAgaWYgKCFlbmFi
bGVkVHJhY2tDb3VudCkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2Fk
ZWQgJiYgbV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSAmJiAhbV9wbGF5
ZXItPmluTWVkaWFEb2N1bWVudCgpKSB7CisgICAgICAgIGRpc2FibGVVbnN1cHBvcnRlZFRyYWNr
cygpOworICAgICAgICBpZiAoIW1fZW5hYmxlZFRyYWNrQ291bnQpCiAgICAgICAgICAgICBsb2Fk
U3RhdGUgPSBRVE1vdmllTG9hZFN0YXRlRXJyb3I7CiAgICAgfQogCi0gICAgLy8gIkxvYWRlZCIg
aXMgcmVzZXJ2ZWQgZm9yIGZ1bGx5IGJ1ZmZlcmVkIG1vdmllcywgbmV2ZXIgdGhlIGNhc2Ugd2hl
biBzdHJlYW1pbmcKICAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVDb21wbGV0
ZSAmJiAhbV9pc1N0cmVhbWluZykgewotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRp
YVBsYXllcjo6TG9hZGVkKQotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6TG9hZGVkOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRo
cm91Z2g7CisgICAgICAgIC8vICJMb2FkZWQiIGlzIHJlc2VydmVkIGZvciBmdWxseSBidWZmZXJl
ZCBtb3ZpZXMsIG5ldmVyIHRoZSBjYXNlIHdoZW4gc3RyZWFtaW5nCisgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRlID49IFFU
TW92aWVMb2FkU3RhdGVQbGF5dGhyb3VnaE9LKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFzZWVraW5nKCkpCi0gICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lOwotICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICB9IGVsc2Ug
aWYgKGxvYWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlUGxheWFibGUpIHsKLSAgICAgICAgaWYg
KG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWUgJiYgIXNlZWtp
bmcoKSkKLSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZEZp
cnN0RnJhbWU7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3Rs
eSBpbiBzdHJlYW1pbmcgY2FzZSwgPHJkYXI6Ly9wcm9ibGVtLzU2OTM5Njc+Ci0gICAgICAgIG1f
cmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVkKCkgPyBNZWRpYVBsYXll
cjo6Q2FuUGxheSA6IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVkKCkgPyBNZWRpYVBsYXllcjo6
SGF2ZUZ1dHVyZURhdGEgOiBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwogICAgIH0gZWxz
ZSBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQpIHsKLSAgICAgICAgaWYg
KG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQotICAgICAgICAg
ICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGE7Ci0gICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgICAgIG1f
cmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CiAgICAgfSBlbHNlIGlmIChs
b2FkU3RhdGUgPiBRVE1vdmllTG9hZFN0YXRlRXJyb3IpIHsKLSAgICAgICAgaWYgKG1fbmV0d29y
a1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRpbmcpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0
ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6RGF0YVVuYXZhaWxhYmxlOyAgICAgICAgCisgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVy
OjpIYXZlTm90aGluZzsgICAgICAgIAogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbmV0d29ya1N0
YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7IAorICAgICAgICBmbG9hdCBsb2FkZWQgPSBtYXhU
aW1lTG9hZGVkKCk7CisKKyAgICAgICAgaWYgKCFsb2FkZWQpCisgICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisKKyAgICAgICAgaWYgKCFtX2VuYWJs
ZWRUcmFja0NvdW50KQorICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
Rm9ybWF0RXJyb3I7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9hZC9uZXR3b3JrIGVycm9ycyBhbmQgZGVjb2Rl
IGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4KKyAgICAgICAgICAgIGlmIChsb2FkZWQg
PiAwKQorICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkRlY29k
ZUVycm9yOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9
IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChz
ZWVraW5nKCkpCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFp
bGFibGU7Ci0gICAgCisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZzsKKwogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpCiAgICAg
ICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgaWYgKG1fcmVhZHlTdGF0
ZSAhPSBvbGRSZWFkeVN0YXRlKQogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQo
KTsKIAotICAgIGlmIChsb2FkU3RhdGUgPj0gUVRNb3ZpZUxvYWRTdGF0ZUxvYWRlZCAmJiBvbGRO
ZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGEgJiYgbV9wbGF5ZXItPnZp
c2libGUoKSkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQgJiYg
b2xkUmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGEgJiYgbV9wbGF5ZXItPnZp
c2libGUoKSkKICAgICAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOworCisgICAgaWYgKGxvYWRT
dGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlTG9hZGVkKSB7CisgICAgICAgIGZsb2F0IGR1ciA9IGR1
cmF0aW9uKCk7CisgICAgICAgIGlmIChkdXIgIT0gbV9kdXJhdGlvbikgeworICAgICAgICAgICAg
aWYgKG1fZHVyYXRpb24gIT0gLTEuMGYpCisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmR1cmF0
aW9uQ2hhbmdlZCgpOworICAgICAgICAgICAgbV9kdXJhdGlvbiA9IGR1cjsKKyAgICAgICAgfQor
ICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWRTdGF0ZUNoYW5nZWQoKQpA
QCAtNzE1LDEwICs3MDIsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWRTdGF0ZUNo
YW5nZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJhdGVDaGFuZ2VkKCkKIHsKICAgICB1cGRh
dGVTdGF0ZXMoKTsKKyAgICBtX3BsYXllci0+cmF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OnNpemVDaGFuZ2VkKCkKIHsKKyAgICBtX3BsYXllci0+c2l6ZUNoYW5n
ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnRpbWVDaGFuZ2VkKCkKQEAgLTcy
OSw3ICs3MTgsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dGltZUNoYW5nZWQoKQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlkRW5kKCkKIHsKLSAgICBtX2VuZFBvaW50VGltZXIu
c3RvcCgpOwogICAgIG1fc3RhcnRlZFBsYXlpbmcgPSBmYWxzZTsKICNpZiBEUkFXX0ZSQU1FX1JB
VEUKICAgICBtX3RpbWVTdG9wcGVkUGxheWluZyA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VS
ZWZlcmVuY2VEYXRlXTsKQEAgLTc2MSw3ICs3NDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6c2V0VmlzaWJsZShib29sCiAgICAgaWYgKG1fdmlzaWJsZSAhPSBiKSB7CiAgICAgICAgIG1f
dmlzaWJsZSA9IGI7CiAgICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBpZiAobV9uZXR3b3Jr
U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQorICAgICAgICAgICAgaWYgKG1f
cmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKQogICAgICAgICAgICAgICAg
IHNldFVwVmlkZW9SZW5kZXJpbmcoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0ZWFy
RG93blZpZGVvUmVuZGVyaW5nKCk7CkBAIC05MDUsMTAgKzg5MywxMCBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAgICAgCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKHVuc2lnbmVkJiBlbmFibGVkVHJh
Y2tDb3VudCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFj
a3MoKQogewogICAgIGlmICghbV9xdE1vdmllKSB7Ci0gICAgICAgIGVuYWJsZWRUcmFja0NvdW50
ID0gMDsKKyAgICAgICAgbV9lbmFibGVkVHJhY2tDb3VudCA9IDA7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCkBAIC05MjcsNyArOTE1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OmRpc2FibGVVbnN1cHBvcgogICAgIE5TQXJyYXkgKnRyYWNrcyA9IFttX3F0TW92aWUuZ2V0KCkg
dHJhY2tzXTsKICAgICAKICAgICB1bnNpZ25lZCB0cmFja0NvdW50ID0gW3RyYWNrcyBjb3VudF07
Ci0gICAgZW5hYmxlZFRyYWNrQ291bnQgPSB0cmFja0NvdW50OworICAgIG1fZW5hYmxlZFRyYWNr
Q291bnQgPSB0cmFja0NvdW50OwogICAgIGZvciAodW5zaWduZWQgdHJhY2tJbmRleCA9IDA7IHRy
YWNrSW5kZXggPCB0cmFja0NvdW50OyB0cmFja0luZGV4KyspIHsKICAgICAgICAgLy8gR3JhYiB0
aGUgdHJhY2sgYXQgdGhlIGN1cnJlbnQgaW5kZXguIElmIHRoZXJlIGlzbid0IG9uZSB0aGVyZSwg
dGhlbgogICAgICAgICAvLyB3ZSBjYW4gbW92ZSBvbnRvIHRoZSBuZXh0IG9uZS4KQEAgLTk1NSw3
ICs5NDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZGlzYWJsZVVuc3VwcG9yCiAgICAg
ICAgIGlmICghYWxsb3dlZFRyYWNrVHlwZXMtPmNvbnRhaW5zKG1lZGlhVHlwZSkpIHsKICAgICAg
ICAgICAgIC8vIElmIHRoaXMgdHJhY2sgdHlwZSBpcyBub3QgYWxsb3dlZCwgdGhlbiB3ZSBuZWVk
IHRvIGRpc2FibGUgaXQuCiAgICAgICAgICAgICBbdHJhY2sgc2V0RW5hYmxlZDpOT107Ci0gICAg
ICAgICAgICAtLWVuYWJsZWRUcmFja0NvdW50OworICAgICAgICAgICAgLS1tX2VuYWJsZWRUcmFj
a0NvdW50OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEaXNhYmxlIGNoYXB0ZXIg
dHJhY2tzLiBUaGVzZSBhcmUgbW9zdCBsaWtlbHkgdG8gbGVhZCB0byB0cm91YmxlLCBhcwpAQCAt
OTg3LDcgKzk3NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkaXNhYmxlVW5zdXBwb3IK
ICAgICAgICAgCiAgICAgICAgIC8vIERpc2FibGUgdGhlIGV2aWwsIGV2aWwgdHJhY2suCiAgICAg
ICAgIFtjaGFwdGVyVHJhY2sgc2V0RW5hYmxlZDpOT107Ci0gICAgICAgIC0tZW5hYmxlZFRyYWNr
Q291bnQ7CisgICAgICAgIC0tbV9lbmFibGVkVHJhY2tDb3VudDsKICAgICB9CiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVBob25vbi5jcHAJKHJldmlzaW9uIDQxODI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1lZGlhUGxheWVyUHJpdmF0ZTo6
TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBtX3BsYXllcihw
bGF5ZXIpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0gICAgLCBt
X3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZSkKKyAgICAsIG1fcmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX21lZGlhT2JqZWN0KG5ldyBN
ZWRpYU9iamVjdCgpKQogICAgICwgbV92aWRlb1dpZGdldChuZXcgVmlkZW9XaWRnZXQoMCkpCiAg
ICAgLCBtX2F1ZGlvT3V0cHV0KG5ldyBBdWRpb091dHB1dCgpKQpAQCAtMTY5LDggKzE2OSw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFN0cmkKICAgICB9CiAKICAgICAv
LyBBbmQgd2UgZG9uJ3QgaGF2ZSBhbnkgZGF0YSB5ZXQKLSAgICBpZiAobV9yZWFkeVN0YXRlICE9
IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1l
ZGlhUGxheWVyOjpIYXZlTm90aGluZykgeworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgp
OwogICAgIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpz
ZWVraW5nKCkgY29uc3QKIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFE
YXRhKQorICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKQog
ICAgICAgICByZXR1cm4gMC4wZjsKIAogICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYU9iamVj
dC0+dG90YWxUaW1lKCkgLyAxMDAwLjBmOwpAQCAtMzI5LDE4ICszMjksMTkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgUGhvbm9uOjpTdGF0ZSBwaG9ub25T
dGF0ZSA9IG1fbWVkaWFPYmplY3QtPnN0YXRlKCk7CiAKICAgICBpZiAocGhvbm9uU3RhdGUgPT0g
UGhvbm9uOjpTdG9wcGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKG9sZE5ldHdvcmtTdGF0ZSA8IE1l
ZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0YSkgewotICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUg
PSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGE7Ci0gICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOworICAgICAgICBpZiAobV9yZWFkeVN0YXRl
IDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSkgeworICAgICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsgLy8gRklYTUU6IHNob3VsZCB0aGlzIGJlIE1lZGlh
UGxheWVyOjpJZGxlPworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6Okhh
dmVNZXRhZGF0YTsKICAgICAgICAgICAgIG1fbWVkaWFPYmplY3QtPnBhdXNlKCk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKHBob25vblN0YXRlID09IFBob25vbjo6UGF1c2VkU3RhdGUpIHsK
ICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwotICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICB9IGVsc2UgaWYgKHBo
b25vblN0YXRlID09IFBob25vbjo6RXJyb3JTdGF0ZSkgewogICAgICAgICAgaWYgKCFtX21lZGlh
T2JqZWN0IHx8IG1fbWVkaWFPYmplY3QtPmVycm9yVHlwZSgpID09IFBob25vbjo6RmF0YWxFcnJv
cikgewotICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRGYWls
ZWQ7Ci0gICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkRhdGFVbmF2YWls
YWJsZTsKKyAgICAgICAgICAgICAvLyBGSVhNRTogaXMgaXQgcG9zc2lsZSB0byBkaWZmZXJlbnRp
YXRlIGJldHdlZW4gZGlmZmVyZW50IHR5cGVzIG9mIGVycm9ycworICAgICAgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvcjsKKyAgICAgICAgICAgICBtX3Jl
YWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgICAgICAgY2FuY2Vs
TG9hZCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBtX21lZGlhT2JqZWN0LT5w
YXVzZSgpOwpAQCAtMzQ4LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRh
dGVTdGF0ZXMoKQogICAgIH0KIAogICAgIGlmIChzZWVraW5nKCkpCi0gICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgICAgIG1fcmVhZHlTdGF0
ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKIAogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAh
PSBvbGROZXR3b3JrU3RhdGUpIHsKICAgICAgICAgY29uc3QgUU1ldGFPYmplY3QqIG1ldGFPYmog
PSB0aGlzLT5tZXRhT2JqZWN0KCk7CkBAIC0zOTksNyArNDAwLDcgQEAgSW50U2l6ZSBNZWRpYVBs
YXllclByaXZhdGU6Om5hdHVyYWxTaXplKAogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogICAg
IH0KIAotICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkZWRNZXRhRGF0
YSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKSB7
CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVBob25vbjo6bmF0dXJhbFNp
emUoKSAtPiAlZHglZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwKTsKICAgICAg
ICAgcmV0dXJuIEludFNpemUoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
TWVkaWFQbGF5ZXJQcml2YXRlUGhvbm9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVQaG9ub24uaAkocmV2aXNpb24gNDE4Mjcp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVBob25v
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxOSArNTIsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBRX0VOVU1TKFJlYWR5U3RhdGUgTmV0d29ya1N0YXRlIFBob25vblN0YXRlKQog
CiAgICAgICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgICAgICBEYXRhVW5hdmFpbGFibGUs
Ci0gICAgICAgICAgICBDYW5TaG93Q3VycmVudEZyYW1lLAotICAgICAgICAgICAgQ2FuUGxheSwK
LSAgICAgICAgICAgIENhblBsYXlUaHJvdWdoCisgICAgICAgICAgICBIYXZlTm90aGluZywgCisg
ICAgICAgICAgICBIYXZlTWV0YWRhdGEsIAorICAgICAgICAgICAgSGF2ZUN1cnJlbnREYXRhLCAK
KyAgICAgICAgICAgIEhhdmVGdXR1cmVEYXRhLCAKKyAgICAgICAgICAgIEhhdmVFbm91Z2hEYXRh
CiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBOZXR3b3JrU3RhdGUgewotICAgICAgICAgICAg
RW1wdHksCi0gICAgICAgICAgICBMb2FkRmFpbGVkLAotICAgICAgICAgICAgTG9hZGluZywKLSAg
ICAgICAgICAgIExvYWRlZE1ldGFEYXRhLAotICAgICAgICAgICAgTG9hZGVkRmlyc3RGcmFtZSwK
LSAgICAgICAgICAgIExvYWRlZAorICAgICAgICAgICAgRW1wdHksIAorICAgICAgICAgICAgSWRs
ZSwgCisgICAgICAgICAgICBMb2FkaW5nLCAKKyAgICAgICAgICAgIExvYWRlZCwgCisgICAgICAg
ICAgICBGb3JtYXRFcnJvciwgCisgICAgICAgICAgICBOZXR3b3JrRXJyb3IsIAorICAgICAgICAg
ICAgRGVjb2RlRXJyb3IKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBob25vblN0YXRlIHsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAkocmV2aXNpb24gNDE4MjcpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxNiArNjIsMTQgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnJlZ2lzdGVyTWVkaWFFbgogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBn
ZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlKTsKIH0KIAotc3RhdGljIGNvbnN0IGRvdWJs
ZSBlbmRQb2ludFRpbWVySW50ZXJ2YWwgPSAwLjAyMDsKLQogTWVkaWFQbGF5ZXJQcml2YXRlOjpN
ZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBs
YXllcikKICAgICAsIG1fc2Vla1RvKC0xKQogICAgICwgbV9lbmRUaW1lKG51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKSkKICAgICAsIG1fc2Vla1RpbWVyKHRoaXMsICZNZWRpYVBsYXll
clByaXZhdGU6OnNlZWtUaW1lckZpcmVkKQotICAgICwgbV9lbmRQb2ludFRpbWVyKHRoaXMsICZN
ZWRpYVBsYXllclByaXZhdGU6OmVuZFBvaW50VGltZXJGaXJlZCkKICAgICAsIG1fbmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKLSAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
RGF0YVVuYXZhaWxhYmxlKQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZykKKyAgICAsIG1fZW5hYmxlZFRyYWNrQ291bnQoMCkKICAgICAsIG1fc3RhcnRlZFBsYXlp
bmcoZmFsc2UpCiAgICAgLCBtX2lzU3RyZWFtaW5nKGZhbHNlKQogI2lmIERSQVdfRlJBTUVfUkFU
RQpAQCAtODksNyArODcsOCBAQCBNZWRpYVBsYXllclByaXZhdGU6On5NZWRpYVBsYXllclByaXZh
dGUoCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsK
ICAgICBpZiAoIVFUTW92aWVXaW46OmluaXRpYWxpemVRdWlja1RpbWUoKSkgewotICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkRmFpbGVkOworICAgICAgICAvLyBGSVhN
RTogaXMgdGhpcyB0aGUgcmlnaHQgZXJyb3IgdG8gcmV0dXJuPworICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcjsgCiAgICAgICAgIG1fcGxheWVyLT5uZXR3
b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05OCwxMiArOTcs
MTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWQoY29uc3QgU3RyaQogICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICBtX3BsYXllci0+
bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KLSAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1l
ZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGUpIHsKLSAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkRhdGFVbmF2YWlsYWJsZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZykgeworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwog
ICAgIH0KICAgICBjYW5jZWxTZWVrKCk7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKIAog
ICAgIG1fcXRNb3ZpZS5zZXQobmV3IFFUTW92aWVXaW4odGhpcykpOwogICAgIG1fcXRNb3ZpZS0+
bG9hZCh1cmwuY2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCkpOwpAQCAtMTIxLDcgKzExOSw2IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF5KCkKICNlbmRpZgogCiAgICAgbV9xdE1vdmll
LT5wbGF5KCk7Ci0gICAgc3RhcnRFbmRQb2ludFRpbWVySWZOZWVkZWQoKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OnBhdXNlKCkKQEAgLTEzMyw3ICsxMzAsNiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6cGF1c2UoKQogICAgIG1fdGltZVN0b3BwZWRQbGF5aW5nID0gR2V0VGlj
a0NvdW50KCk7CiAjZW5kaWYKICAgICBtX3F0TW92aWUtPnBhdXNlKCk7Ci0gICAgbV9lbmRQb2lu
dFRpbWVyLnN0b3AoKTsKIH0KIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkdXJhdGlvbigp
IGNvbnN0CkBAIC0xNzAsMTEgKzE2NiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c2Vl
ayhmbG9hdCB0aW1lCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZG9TZWVrKCkgCiB7CiAgICAg
ZmxvYXQgb2xkUmF0ZSA9IG1fcXRNb3ZpZS0+cmF0ZSgpOwotICAgIG1fcXRNb3ZpZS0+c2V0UmF0
ZSgwKTsKKyAgICBpZiAob2xkUmF0ZSkKKyAgICAgICAgbV9xdE1vdmllLT5zZXRSYXRlKDApOwog
ICAgIG1fcXRNb3ZpZS0+c2V0Q3VycmVudFRpbWUobV9zZWVrVG8pOwogICAgIGZsb2F0IHRpbWVB
ZnRlclNlZWsgPSBjdXJyZW50VGltZSgpOwogICAgIC8vIHJlc3RvcmUgcGxheWJhY2sgb25seSBp
ZiBub3QgYXQgZW5kLCBvdGhld2lzZSBRVE1vdmllIHdpbGwgbG9vcAotICAgIGlmICh0aW1lQWZ0
ZXJTZWVrIDwgZHVyYXRpb24oKSAmJiB0aW1lQWZ0ZXJTZWVrIDwgbV9lbmRUaW1lKQorICAgIGlm
IChvbGRSYXRlICYmIHRpbWVBZnRlclNlZWsgPCBkdXJhdGlvbigpICYmIHRpbWVBZnRlclNlZWsg
PCBtX2VuZFRpbWUpCiAgICAgICAgIG1fcXRNb3ZpZS0+c2V0UmF0ZShvbGRSYXRlKTsKICAgICBj
YW5jZWxTZWVrKCk7CiB9CkBAIC0yMDksMjIgKzIwNiw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpzZWVrVGltZXJGaXJlZCgKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRFbmRUaW1l
KGZsb2F0IHRpbWUpCiB7CiAgICAgbV9lbmRUaW1lID0gdGltZTsKLSAgICBzdGFydEVuZFBvaW50
VGltZXJJZk5lZWRlZCgpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3RhcnRFbmRQ
b2ludFRpbWVySWZOZWVkZWQoKQotewotICAgIGlmIChtX2VuZFRpbWUgPCBkdXJhdGlvbigpICYm
IG1fc3RhcnRlZFBsYXlpbmcgJiYgIW1fZW5kUG9pbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAg
ICBtX2VuZFBvaW50VGltZXIuc3RhcnRSZXBlYXRpbmcoZW5kUG9pbnRUaW1lckludGVydmFsKTsK
LX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxN
ZWRpYVBsYXllclByaXZhdGU+KikKLXsKLSAgICBmbG9hdCB0aW1lID0gY3VycmVudFRpbWUoKTsK
LSAgICBpZiAodGltZSA+PSBtX2VuZFRpbWUpIHsKLSAgICAgICAgcGF1c2UoKTsKLSAgICAgICAg
ZGlkRW5kKCk7Ci0gICAgfQogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2VkKCkg
Y29uc3QKQEAgLTMzOSw0MiArMzIwLDQ0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRh
dGVTdGF0ZXMoKQogICAKICAgICBsb25nIGxvYWRTdGF0ZSA9IG1fcXRNb3ZpZSA/IG1fcXRNb3Zp
ZS0+bG9hZFN0YXRlKCkgOiBRVE1vdmllTG9hZFN0YXRlRXJyb3I7CiAKLSAgICBpZiAobG9hZFN0
YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQgJiYgbV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBs
YXllcjo6TG9hZGVkTWV0YURhdGEgJiYgIW1fcGxheWVyLT5pbk1lZGlhRG9jdW1lbnQoKSkgewot
ICAgICAgICB1bnNpZ25lZCBlbmFibGVkVHJhY2tDb3VudDsKLSAgICAgICAgbV9xdE1vdmllLT5k
aXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoZW5hYmxlZFRyYWNrQ291bnQpOwotICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2FkIGVycm9ycyBhbmQgZGVj
b2RlIGVycm9ycyA8cmRhcjovL3Byb2JsZW0vNTYwNTY5Mj4KLSAgICAgICAgaWYgKCFlbmFibGVk
VHJhY2tDb3VudCkKKyAgICBpZiAobG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQg
JiYgbV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSAmJiAhbV9wbGF5ZXIt
PmluTWVkaWFEb2N1bWVudCgpKSB7CisgICAgICAgIG1fcXRNb3ZpZS0+ZGlzYWJsZVVuc3VwcG9y
dGVkVHJhY2tzKG1fZW5hYmxlZFRyYWNrQ291bnQpOworICAgICAgICBpZiAoIW1fZW5hYmxlZFRy
YWNrQ291bnQpCiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9hZFN0YXRlRXJyb3I7
CiAgICAgfQogCiAgICAgLy8gIkxvYWRlZCIgaXMgcmVzZXJ2ZWQgZm9yIGZ1bGx5IGJ1ZmZlcmVk
IG1vdmllcywgbmV2ZXIgdGhlIGNhc2Ugd2hlbiBzdHJlYW1pbmcKICAgICBpZiAobG9hZFN0YXRl
ID49IFFUTW92aWVMb2FkU3RhdGVDb21wbGV0ZSAmJiAhbV9pc1N0cmVhbWluZykgewotICAgICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPCBNZWRpYVBsYXllcjo6TG9hZGVkKQotICAgICAgICAgICAg
bV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwotICAgICAgICBtX3JlYWR5U3Rh
dGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgIG1fbmV0d29ya1N0YXRl
ID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5
ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgIH0gZWxzZSBpZiAobG9hZFN0YXRlID49IFFUTW92aWVM
b2FkU3RhdGVQbGF5dGhyb3VnaE9LKSB7Ci0gICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA8IE1l
ZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lICYmICFzZWVraW5nKCkpCi0gICAgICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWRGaXJzdEZyYW1lOwotICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6Q2FuUGxheVRocm91Z2g7CisgICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICB9IGVsc2UgaWYgKGxv
YWRTdGF0ZSA+PSBRVE1vdmllTG9hZFN0YXRlUGxheWFibGUpIHsKLSAgICAgICAgaWYgKG1fbmV0
d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJhbWUgJiYgIXNlZWtpbmcoKSkK
LSAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZEZpcnN0RnJh
bWU7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVk
KCkgPyBNZWRpYVBsYXllcjo6Q2FuUGxheSA6IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7
CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBzdHJl
YW1pbmcgY2FzZSwgPHJkYXI6Ly9wcm9ibGVtLzU2OTM5Njc+CisgICAgICAgIG1fcmVhZHlTdGF0
ZSA9IGN1cnJlbnRUaW1lKCkgPCBtYXhUaW1lTG9hZGVkKCkgPyBNZWRpYVBsYXllcjo6SGF2ZUZ1
dHVyZURhdGEgOiBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwogICAgIH0gZWxzZSBpZiAo
bG9hZFN0YXRlID49IFFUTW92aWVMb2FkU3RhdGVMb2FkZWQpIHsKLSAgICAgICAgaWYgKG1fbmV0
d29ya1N0YXRlIDwgTWVkaWFQbGF5ZXI6OkxvYWRlZE1ldGFEYXRhKQotICAgICAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkTWV0YURhdGE7Ci0gICAgICAgIG1fcmVh
ZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpEYXRhVW5hdmFpbGFibGU7CisgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CiAgICAgfSBlbHNlIGlmIChsb2FkU3Rh
dGUgPiBRVE1vdmllTG9hZFN0YXRlRXJyb3IpIHsKLSAgICAgICAgaWYgKG1fbmV0d29ya1N0YXRl
IDwgTWVkaWFQbGF5ZXI6OkxvYWRpbmcpCi0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkaW5nOwotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
RGF0YVVuYXZhaWxhYmxlOyAgICAgICAgCisgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZzsgICAgICAgIAogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkxvYWRGYWlsZWQ7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpEYXRhVW5hdmFpbGFibGU7IAorICAgICAgICBmbG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9h
ZGVkKCk7CisgICAgICAgIGlmICghbG9hZGVkKQorICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworCisgICAgICAgIGlmICghbV9lbmFibGVkVHJhY2tD
b3VudCkKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVy
cm9yOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlm
ZmVyZW50aWF0ZSBiZXR3ZWVuIGxvYWQvbmV0d29yayBlcnJvcnMgYW5kIGRlY29kZSBlcnJvcnMg
PHJkYXI6Ly9wcm9ibGVtLzU2MDU2OTI+CisgICAgICAgICAgICBpZiAobG9hZGVkID4gMCkKKyAg
ICAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpEZWNvZGVFcnJvcjsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmc7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoc2Vla2luZygp
KQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6RGF0YVVuYXZhaWxhYmxlOwor
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgCiAg
ICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IG9sZE5ldHdvcmtTdGF0ZSkKICAgICAgICAgbV9wbGF5
ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTM4NSw3ICszNjgsNiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6
OmRpZEVuZCgpCiB7Ci0gICAgbV9lbmRQb2ludFRpbWVyLnN0b3AoKTsKICAgICBtX3N0YXJ0ZWRQ
bGF5aW5nID0gZmFsc2U7CiAjaWYgRFJBV19GUkFNRV9SQVRFCiAgICAgbV90aW1lU3RvcHBlZFBs
YXlpbmcgPSBHZXRUaWNrQ291bnQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5o
CShyZXZpc2lvbiA0MTgyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw5ICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1NlZWsoKTsKICAgICB2b2lkIGNhbmNlbFNlZWsoKTsK
ICAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4qKTsKLSAg
ICB2b2lkIGVuZFBvaW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7CiAg
ICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwotICAgIHZvaWQgc3RhcnRFbmRQb2ludFRp
bWVySWZOZWVkZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBtb3ZpZUVuZGVkKFFUTW92aWVXaW4q
KTsKICAgICB2aXJ0dWFsIHZvaWQgbW92aWVMb2FkU3RhdGVDaGFuZ2VkKFFUTW92aWVXaW4qKTsK
QEAgLTExNyw5ICsxMTUsOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2Vla1RvOwogICAgIGZs
b2F0IG1fZW5kVGltZTsKICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+IG1fc2Vla1RpbWVy
OwotICAgIFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9lbmRQb2ludFRpbWVyOwogICAgIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIHVuc2lnbmVkIG1fZW5hYmxlZFRyYWNrQ291
bnQ7CiAgICAgYm9vbCBtX3N0YXJ0ZWRQbGF5aW5nOwogICAgIGJvb2wgbV9pc1N0cmVhbWluZzsK
ICNpZiBEUkFXX0ZSQU1FX1JBVEUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDQxODI3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjUsOCArMTY1LDcgQEAgTWVk
aWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udAogdm9pZCBNZWRpYUNvbnRyb2xQ
bGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnRvZ2dsZVBsYXlT
dGF0ZShlYyk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT50b2dnbGVQbGF5U3RhdGUoKTsKICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtMTkwLDggKzE4OSw3IEBAIHZv
aWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmEKICAgICAgICAgICAgIG1fY2Fw
dHVyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNOb2RlKHRoaXMpOwogICAgICAgICB9Ci0gICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZShlYyk7CisgICAgICAgIG1f
bWVkaWFFbGVtZW50LT5wYXVzZSgpOwogICAgICAgICBtX3NlZWtUaW1lci5zdGFydFJlcGVhdGlu
ZyhjU2Vla1JlcGVhdERlbGF5KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZl
bnQpIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMDktMDMtMTkgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQ1ODgKKyAgICAgICAgQnVnIDI0NTg4OiBVcGRhdGUgbWVkaWEgZWxlbWVu
dCBpbXBsZW1lbnRhdGlvbiB0byBjdXJyZW50IHNwZWMKKworICAgICAgICAqIG1lZGlhL21lZGlh
LWNvbnN0YW50cy1leHBlY3RlZC50eHQ6IFRlc3QgYWxsIG1lZGlhIGNvbnN0YW50cy4KKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1jb25zdGFudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEv
cmVtb3ZlLWZyb20tZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGZvciBzcGVjIGNoYW5n
ZXMuCisgICAgICAgICogbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQtbm8tbG9hZC5odG1sOiBE
aXR0by4KKyAgICAgICAgKiBtZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC5odG1sOiBEaXR0by4K
KyAgICAgICAgKiBtZWRpYS91bnN1cHBvcnRlZC1ydHNwLWV4cGVjdGVkLnR4dDogRGl0dG8uCisg
ICAgICAgICogbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBt
ZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVk
aWEvdmlkZW8tZXJyb3ItYWJvcnQtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRp
YS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWw6IERpdHRvLgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLWV4cGVjdGVkLnR4dDogRGl0dG8uCisg
ICAgICAgICogbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbDogRGl0dG8uCisgICAg
ICAgICogbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLWV4cGVjdGVkLnR4dDogRGl0dG8uCisg
ICAgICAgICogbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLmh0bWw6IERpdHRvLgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLWxvb3AtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRp
YS92aWRlby1sb29wLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBhdXNlLWVt
cHR5LWV2ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBh
dXNlLWVtcHR5LWV2ZW50cy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1wbGF5
LWVtcHR5LWV2ZW50cy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVv
LXBsYXktZW1wdHktZXZlbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXBs
YXktcGF1c2UtZXZlbnRzLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlk
ZW8tcGxheS1wYXVzZS1ldmVudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8t
cGxheS1wYXVzZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBtZWRp
YS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRp
YS92aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBUZXN0IHRoYXQgc2Vl
a2luZyAKKyAgICAgICAgd2hlbmUgdGhlcmUgaXMgbm8gJ3NyYycgYXR0cmlidXRlIHRocm93cyBh
biBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24uCisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vl
ay1uby1zcmMtZXhjZXB0aW9uLmh0bWw6IAorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWstcGFz
dC1lbmQtcGxheWluZy1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGxheWluZy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1zZWVraW5nLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vl
a2luZy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1l
eHBlY3RlZC50eHQ6IFRlc3QgdGhhdCBhZGRpbmcgYSAnc3JjJyAKKyAgICAgICAgYXR0cmlidXRl
IGRvZXMgbm90aGluZyB3aGVuIGEgPHNvdXJjZT4gZWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIGNo
b3Nlbi4KKyAgICAgICAgKiBtZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy5odG1sOiAKKyAgICAg
ICAgKiBtZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAg
ICogbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sOiBEaXR0by4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1zcmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0OiBUZXN0IHRoYXQgcmVtb3Zpbmcg
aW52YWxpZCAKKyAgICAgICAgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJzIDxzb3VyY2U+IGVsZW1l
bnRzIGxvYWRpbmcuCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLmh0
bWw6IAorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1wbHVzLXNvdXJjZS1leHBlY3RlZC50eHQ6
IFRlc3QgdGhhdCBhIDxzb3VyY2U+IGVsZW1lbnQgCisgICAgICAgIGlzIG5vdCB1c2VkIHdoZW4g
YSBib2d1cyAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudC4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1zcmMtcGx1cy1zb3VyY2UuaHRtbDogCisgICAgICAgICogbWVkaWEvdmlkZW8tc3JjLXJlbW92
ZS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1yZW1vdmUu
aHRtbDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5qczogCisgICAgICAgIChm
aW5kTWVkaWFFbGVtZW50KToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6CisgICAgICAgICh3YWl0
Rm9yRXZlbnQpOgorICAgICAgICAoZmFpbFRlc3QpOgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRp
bWV1cGRhdGUtZHVyaW5nLXBsYXliYWNrLWV4cGVjdGVkLnR4dDogVGVzdCAndGltZXVwZGF0ZScg
ZXZlbnRzCisgICAgICAgIGFyZSBwb3N0ZWQgYW4gZWxlbWVudCBpcyBwbGF5aW5nIGJ1dCBub3Qg
d2hpbGUgcGF1c2VkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRpbWV1cGRhdGUtZHVyaW5nLXBs
YXliYWNrLmh0bWw6CisKIDIwMDktMDMtMTkgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1
d2F0ZXJsb28uY2E+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25zdGFudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnN0YW50cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25zdGFudHMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACitUZXN0IEhUTUxNZWRpYUVsZW1lbnQgYW5k
IE1lZGlhRXJyb3IgY29uc3RhbnRzLgorCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRX
T1JLX0VNUFRZID09ICcwJykgT0sKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktf
SURMRSA9PSAnMScpIE9LCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURJ
TkcgPT0gJzInKSBPSworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19MT0FERUQg
PT0gJzMnKSBPSworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0Ug
PT0gJzQnKSBPSworCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5IQVZFX05PVEhJTkcgPT0g
JzAnKSBPSworRVhQRUNURUQgKEhUTUxNZWRpYUVsZW1lbnQuSEFWRV9NRVRBREFUQSA9PSAnMScp
IE9LCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5IQVZFX0NVUlJFTlRfREFUQSA9PSAnMicp
IE9LCitFWFBFQ1RFRCAoSFRNTE1lZGlhRWxlbWVudC5IQVZFX0ZVVFVSRV9EQVRBID09ICczJykg
T0sKK0VYUEVDVEVEIChIVE1MTWVkaWFFbGVtZW50LkhBVkVfRU5PVUdIX0RBVEEgPT0gJzQnKSBP
SworCitFWFBFQ1RFRCAoTWVkaWFFcnJvci5NRURJQV9FUlJfQUJPUlRFRCA9PSAnMScpIE9LCitF
WFBFQ1RFRCAoTWVkaWFFcnJvci5NRURJQV9FUlJfTkVUV09SSyA9PSAnMicpIE9LCitFWFBFQ1RF
RCAoTWVkaWFFcnJvci5NRURJQV9FUlJfREVDT0RFID09ICczJykgT0sKK0VYUEVDVEVEIChNZWRp
YUVycm9yLk1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCA9PSAnNCcpIE9LCitFTkQgT0YgVEVTVAor
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25zdGFudHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb25zdGFudHMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnN0YW50cy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMwIEBACisKKzxwPlRlc3QgSFRNTE1lZGlhRWxlbWVudCBhbmQgTWVkaWFFcnJv
ciBjb25zdGFudHMuPC9wPgorCis8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0Pgor
Cis8c2NyaXB0PgorICAgIAorICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRX
T1JLX0VNUFRZIiwgMCk7CisgICAgdGVzdEV4cGVjdGVkKCJIVE1MTWVkaWFFbGVtZW50Lk5FVFdP
UktfSURMRSIsIDEpOworICAgIHRlc3RFeHBlY3RlZCgiSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JL
X0xPQURJTkciLCAyKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09S
S19MT0FERUQiLCAzKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuTkVUV09S
S19OT19TT1VSQ0UiLCA0KTsKKyAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgdGVzdEV4cGVj
dGVkKCJIVE1MTWVkaWFFbGVtZW50LkhBVkVfTk9USElORyIsIDApOworICAgIHRlc3RFeHBlY3Rl
ZCgiSFRNTE1lZGlhRWxlbWVudC5IQVZFX01FVEFEQVRBIiwgMSk7CisgICAgdGVzdEV4cGVjdGVk
KCJIVE1MTWVkaWFFbGVtZW50LkhBVkVfQ1VSUkVOVF9EQVRBIiwgMik7CisgICAgdGVzdEV4cGVj
dGVkKCJIVE1MTWVkaWFFbGVtZW50LkhBVkVfRlVUVVJFX0RBVEEiLCAzKTsKKyAgICB0ZXN0RXhw
ZWN0ZWQoIkhUTUxNZWRpYUVsZW1lbnQuSEFWRV9FTk9VR0hfREFUQSIsIDQpOworICAgIGNvbnNv
bGVXcml0ZSgiIik7CisKKyAgICB0ZXN0RXhwZWN0ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX0FC
T1JURUQiLCAxKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX05FVFdP
UksiLCAyKTsKKyAgICB0ZXN0RXhwZWN0ZWQoIk1lZGlhRXJyb3IuTUVESUFfRVJSX0RFQ09ERSIs
IDMpOworICAgIHRlc3RFeHBlY3RlZCgiTWVkaWFFcnJvci5NRURJQV9FUlJfTk9ORV9TVVBQT1JU
RUQiLCA0KTsKKworCisgICAgZW5kVGVzdCgpOworPC9zY3JpcHQ+CisKSW5kZXg6IExheW91dFRl
c3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZyb20tZG9jdW1lbnQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiBUZXN0IHRoYXQg
cmVtb3ZpbmcgYSBtZWRpYSBlbGVtZW50IGZyb20gdGhlIHRyZWUgcGF1c2VzIHBsYXliYWNrIGJ1
dCBkb2VzIG5vdCB1bmxvYWQgdGhlIG1lZGlhLgogCiBFVkVOVChsb2FkKQotRVhQRUNURUQgKHZp
ZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRl
ID09ICczJykgT0sKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ2ZhbHNlJykgT0sKIFJVTihk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHZpZGVvKSkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3Jr
U3RhdGUgPT0gJzQnKSBPSworRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnMycpIE9L
CiBFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKIEVORCBPRiBURVNUCiAKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9tLWRvY3VtZW50LW5vLWxvYWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdmUtZnJvbS1kb2N1bWVudC1uby1s
b2FkLmh0bWwJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZy
b20tZG9jdW1lbnQtbm8tbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQAog
ICAgIGRpZFJlY2VpdmVMb2FkU3RhcnRFdmVudCA9IGZhbHNlOwogICAgIHZpZGVvLmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWRzdGFydCcsIGZ1bmN0aW9uKCkgeyBkaWRSZWNlaXZlTG9hZFN0YXJ0RXZl
bnQgPSB0cnVlOyB9KTsKICAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci0gICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkVNUFRZ
KTsKKyAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1l
bnQuTkVUV09SS19FTVBUWSk7CiAgICAgcnVuKCJkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHZp
ZGVvKSIpOwogICAgIHRlc3RFeHBlY3RlZCgiZGlkUmVjZWl2ZUxvYWRTdGFydEV2ZW50IiwgZmFs
c2UpOwogICAgIGVuZFRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3JlbW92ZS1mcm9t
LWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3ZlLWZy
b20tZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9y
ZW1vdmUtZnJvbS1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE1IEBA
Ci08dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKzx2aWRlbyBjb250cm9scyBhdXRvcGxheT48L3Zp
ZGVvPgogPHA+VGVzdCB0aGF0IHJlbW92aW5nIGEgbWVkaWEgZWxlbWVudCBmcm9tIHRoZSB0cmVl
IHBhdXNlcyBwbGF5YmFjayBidXQgZG9lcyBub3QgdW5sb2FkIHRoZSBtZWRpYS48L3A+CiA8c2Ny
aXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KICAgICB3YWl0Rm9yRXZl
bnQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CiAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5u
ZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50LkxPQURFRCk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX0xPQURF
RCk7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwogCiAgICAg
ICAgIHJ1bigiZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh2aWRlbykiKTsKIAotICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTE9BREVE
KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFF
bGVtZW50Lk5FVFdPUktfTE9BREVEKTsKICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVz
ZWQiLCB0cnVlKTsKIAogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKQEAgLTE3LDUg
KzE3LDQgQEAKICAgICB9ICk7CiAKIHZpZGVvLnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKLXZp
ZGVvLnBsYXkoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0
ZWQtcnRzcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdW5z
dXBwb3J0ZWQtcnRzcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIsNiArMiw3IEBAIFRlc3QgdGhhdCBRdWlja1RpbWUgZmlsZSB3aXRoIFJUU1AgVVJMIGcKIAog
RVZFTlQoZXJyb3IpCiBFWFBFQ1RFRCAodmlkZW8uZXJyb3IgIT0gJ251bGwnKSBPSwotRVhQRUNU
RUQgKHZpZGVvLmVycm9yLmNvZGUgPT0gJzInKSBPSworRVhQRUNURUQgKHZpZGVvLmVycm9yLmNv
ZGUgPT0gJzQnKSBPSworRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCiBF
TkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS91bnN1cHBvcnRlZC1ydHNwLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC5odG1s
CShyZXZpc2lvbiA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlhL3Vuc3VwcG9ydGVkLXJ0c3Au
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNSBAQAorCiA8dmlkZW8gY29udHJvbHM+
PC92aWRlbz4KKwogPHA+VGVzdCB0aGF0IFF1aWNrVGltZSBmaWxlIHdpdGggUlRTUCBVUkwgZ2Vu
ZXJhdGVzIGEgbG9hZCBlcnJvci48cD4KKwogPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3Nj
cmlwdD4KIDxzY3JpcHQ+Ci12aWRlby5zcmMgPSAicnRzcDovL2EyMDQ3LnYxNDExYi5jMTQxMS5n
LnZxLmFrYW1haXN0cmVhbS5uZXQvNS8yMDQ3LzE0MTEvMl9oMjY0XzY1MC8xYTFhMWFlNDU0YzQz
MDk1MDA2NWRlNGNiYjJmOTRjMjI2OTUwYzdhZTY1NWI2MWE0OGE5MTQ3NWUyNDNhY2RhM2RhYzE5
NDg3OWFkZGUwZi93d2RjXzIwMDZfMl82NTAubW92IjsKLXdhaXRGb3JFdmVudCgiZXJyb3IiLCBm
dW5jdGlvbiAoKSB7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51bGwsICIhPSIp
OwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFf
RVJSX05FVFdPUkspOwotICAgIGVuZFRlc3QoKTsKLX0pOworICAgIHZpZGVvLnNyYyA9ICJydHNw
Oi8vYTIwNDcudjE0MTFiLmMxNDExLmcudnEuYWthbWFpc3RyZWFtLm5ldC81LzIwNDcvMTQxMS8y
X2gyNjRfNjUwLzFhMWExYWU0NTRjNDMwOTUwMDY1ZGU0Y2JiMmY5NGMyMjY5NTBjN2FlNjU1YjYx
YTQ4YTkxNDc1ZTI0M2FjZGEzZGFjMTk0ODc5YWRkZTBmL3d3ZGNfMjAwNl8yXzY1MC5tb3YiOwor
ICAgIHdhaXRGb3JFdmVudCgiZXJyb3IiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uZXJyb3IiLCBudWxsLCAiIT0iKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5NRURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOwor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1l
bnQuTkVUV09SS19OT19TT1VSQ0UpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CiA8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWN1cnJlbnRUaW1lLXNldC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY3VycmVudFRp
bWUtc2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1jdXJyZW50VGltZS1zZXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsMTEgQEAKK1Rlc3QgdGhhdCBzZXR0aW5nIGN1cnJlbnRUaW1lIGNoYW5nZXMgdGhlIHRp
bWUsIGFuZCB0aGF0ICdlbmRlZCcgZXZlbnQgaXMgZmlyZWQgaW4gYSByZWFzb25hYmxlIGFtb3Vu
dCBvZiB0aW1lCisKIEVWRU5UKGxvYWQpCi1FVkVOVCh0aW1ldXBkYXRlKQorRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lID09ICcwJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IHZpZGVv
LmR1cmF0aW9uIC0gMC4yKQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lLnRvRml4ZWQoMikg
PT0gJzguMjAnKSBPSworUlVOKHZpZGVvLnBsYXkoKSkKKwogRVZFTlQoZW5kZWQpCiBFTkQgT0Yg
VEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50VGltZS1zZXQu
aHRtbAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jdXJyZW50
VGltZS1zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwyNyBAQAotPHZpZGVvIHNy
Yz1jb250ZW50L3Rlc3QubXA0IGNvbnRyb2xzPjwvdmlkZW8+Ci08c2NyaXB0IHNyYz12aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgotPHNjcmlwdD4KLXdhaXRGb3JFdmVudCgnbG9hZCcsICAKLWZ1bmN0
aW9uICgpIHsgCi0gICAgdmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuMjsg
Ci0gICAgdmlkZW8ucGxheSgpOyAKLSAgICB3YWl0Rm9yRXZlbnQoJ3RpbWV1cGRhdGUnLCBmdW5j
dGlvbiAoKSB7Cis8aHRtbD4KKzxib2R5PgorCisgICAgPHZpZGVvIHNyYz1jb250ZW50L3Rlc3Qu
bXA0IGNvbnRyb2xzPjwvdmlkZW8+CisgICAgCisgICAgPHA+VGVzdCB0aGF0IHNldHRpbmcgY3Vy
cmVudFRpbWUgY2hhbmdlcyB0aGUgdGltZSwgYW5kIHRoYXQgJ2VuZGVkJyBldmVudCBpcyBmaXJl
ZCBpbiBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWU8L3A+CisgICAgCisgICAgPHNjcmlwdCBz
cmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdhaXRGb3JFdmVu
dCgnbG9hZCcsICAKKyAgICBmdW5jdGlvbiAoKSB7IAorICAgICAgICB3YWl0Rm9yRXZlbnRBbmRF
bmQoJ2VuZGVkJyk7CisgICAgCisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRp
bWUiLCAwKTsKKyAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9u
IC0gMC4yIik7IAorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lLnRvRml4
ZWQoMikiLCAodmlkZW8uZHVyYXRpb24gLSAwLjIpLnRvRml4ZWQoMikpOworICAgICAgICBydW4o
InZpZGVvLnBsYXkoKSIpOyAKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAKICAgICAg
ICAgdmFyIHRpbWVvdXQgPSA4MDA7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBs
b2dSZXN1bHQoIk5vIHRpbWV1cGRhdGUgZXZlbnQgaW4gIiArIHRpbWVvdXQvMTAwMCAgKyAic2Vj
b25kcyIsIGZhbHNlKTsgfSwgdGltZW91dCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkgeyBsb2dSZXN1bHQoIk5vICdlbmRlZCcgZXZlbnQgaW4gIiArIHRpbWVvdXQvMTAwMCAgKyAi
c2Vjb25kcyIsIGZhbHNlKTsgfSwgdGltZW91dCk7CiAgICAgfSk7Ci0gICAgd2FpdEZvckV2ZW50
QW5kRW5kKCdlbmRlZCcpOwotfSk7Ci12aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci08
L3NjcmlwdD4KKyAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7CisgICAgPC9zY3Jp
cHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVy
cm9yLWFib3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1lcnJvci1hYm9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJvcnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDggKzEsNSBAQAogRVhQRUNURUQgKHZpZGVvLmVycm9yID09ICdudWxsJykgT0sKIEVW
RU5UKGxvYWRzdGFydCkKLUVWRU5UKGFib3J0KQotRVhQRUNURUQgKHZpZGVvLmVycm9yLmNvZGUg
PT0gJzEnKSBPSwotRVZFTlQobG9hZHN0YXJ0KQogRVZFTlQobG9hZCkKIEVYUEVDVEVEICh2aWRl
by5lcnJvciA9PSAnbnVsbCcpIE9LCiBFTkQgT0YgVEVTVApJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2Vz
LW5vdC1leGlzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSwxMyBAQAog
VGVzdCB0aGF0IHRoZSBtZWRpYSBlbGVtZW50IGlzIGluIGNvcnJlY3Qgc3RhdGUgYWZ0ZXIgbG9h
ZCBmYWlscy4KIAorCiBFWFBFQ1RFRCAodmlkZW8uZXJyb3IgPT0gJ251bGwnKSBPSwotRVZFTlQo
ZW1wdGllZCkKLUVYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICcyJykgT0sKLUVYUEVDVEVE
ICh2aWRlby5kdXJhdGlvbiA9PSAnMCcpIE9LCisKK0VWRU5UKGVycm9yKQorRVhQRUNURUQgKHZp
ZGVvLmVycm9yICE9ICdudWxsJykgT0sKK0VYUEVDVEVEICh2aWRlby5lcnJvci5jb2RlID09ICc0
JykgT0sKK0VYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzQnKSBPSworRVhQRUNURUQg
KGlzTmFOKHZpZGVvLmR1cmF0aW9uKSA9PSAndHJ1ZScpIE9LCiBFWFBFQ1RFRCAodmlkZW8uY3Vy
cmVudFRpbWUgPT0gJzAnKSBPSwogRVhQRUNURUQgKHZpZGVvLmJ1ZmZlcmVkLmxlbmd0aCA9PSAn
MCcpIE9LCiBFWFBFQ1RFRCAodmlkZW8uc2Vla2FibGUubGVuZ3RoID09ICcwJykgT0sKSW5kZXg6
IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3QuaHRt
bAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2Vz
LW5vdC1leGlzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE2ICsyLDI2IEBACiA8dmlkZW8g
Y29udHJvbHM+PC92aWRlbz4KIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8
c2NyaXB0PgotdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51bGwpOwotd2FpdEZvckV2ZW50
QW5kVGVzdCgibG9hZCIsICJmYWxzZSIpOwotd2FpdEZvckV2ZW50KCJlbXB0aWVkIiwgZnVuY3Rp
b24gKCkgewotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJyb3Iu
TUVESUFfRVJSX05FVFdPUkspOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZHVyYXRpb24iLCAw
KTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgMCk7Ci0gICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5idWZmZXJlZC5sZW5ndGgiLCAwKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLnNlZWthYmxlLmxlbmd0aCIsIDApOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uYnVmZmVy
ZWQubGVuZ3RoIiwgMCk7Ci0gICAgZW5kVGVzdCgpOwotfSk7Ci12aWRlby5zcmMgPSAiY29udGVu
dC9kb2VzLW5vdC1leGlzdC5tcGVnIjsKKworICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5lcnJvciIsIG51bGwpOworCisgICAgd2FpdEZvckV2ZW50QW5kVGVz
dCgibG9hZCIsICJmYWxzZSIpOworICAgIAorICAgIHdhaXRGb3JFdmVudCgiZXJyb3IiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IiLCBudWxsLCAiIT0i
KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5lcnJvci5jb2RlIiwgTWVkaWFFcnJvci5N
RURJQV9FUlJfTk9ORV9TVVBQT1JURUQpOworICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UpOwor
ICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQoImlzTmFOKHZpZGVvLmR1cmF0aW9uKSIsIHRydWUp
OworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgMCk7CisgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8uYnVmZmVyZWQubGVuZ3RoIiwgMCk7CisgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8uc2Vla2FibGUubGVuZ3RoIiwgMCk7CisgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8uYnVmZmVyZWQubGVuZ3RoIiwgMCk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9
KTsKKyAgICAKKyAgICB2aWRlby5zcmMgPSAiY29udGVudC9kb2VzLW5vdC1leGlzdC5tcGVnIjsK
KyAgICBjb25zb2xlV3JpdGUoIiIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNyBAQAorVGVzdCB0aGF0
IHNldHRpbmcgc3JjIHRvIGFuIGludmFsaWQgdXJsIHRyaWdnZXJzIGxvYWQoKSwgd2hpY2ggc2V0
cyBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19OT19TT1VSQ0UuIFNldHRpbmcgc3JjIHRvIGEgdmFs
aWQgdXJsIHNob3VsZCB0aGVuIHRyaWdnZXIgdGhlIGxvYWRpbmcgZXZlbnRzIGFuZCBlbmQgdXAg
d2l0aCBuZXR3b3JrU3RhdGUgPj0gTkVUV09SS19MT0FESU5HLgorCisKIEVYUEVDVEVEICh2aWRl
by5uZXR3b3JrU3RhdGUgPT0gJzAnKSBPSworUlVOKHZpZGVvLnNyYyA9ICdib2d1cy9tb3ZpZS5t
cGcnKQogRVZFTlQobG9hZHN0YXJ0KQotRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAn
MScpIE9LCi1FVkVOVChsb2FkZWRtZXRhZGF0YSkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3Rh
dGUgPT0gJzInKSBPSwotRVZFTlQobG9hZGVkZmlyc3RmcmFtZSkKLUVYUEVDVEVEICh2aWRlby5u
ZXR3b3JrU3RhdGUgPT0gJzMnKSBPSwotRVZFTlQobG9hZCkKIEVYUEVDVEVEICh2aWRlby5uZXR3
b3JrU3RhdGUgPT0gJzQnKSBPSworCitSVU4odmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQn
KQorRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFVkVOVChsb2FkZWRk
YXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVhQRUNURUQgKHZp
ZGVvLm5ldHdvcmtTdGF0ZSA+PSAnMicpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1sb2FkLW5ldHdvcmtTdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtbmV0d29ya1N0YXRlLmh0bWwJKHJldmlzaW9uIDQx
ODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1uZXR3b3JrU3RhdGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxNyArMSw0NiBAQAotPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+
Ci08c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotPHNjcmlwdD4KLSAgICBmdW5j
dGlvbiB0ZXN0TmV0d29ya1N0YXRlKGV4cGVjdGVkLCBlbmRJdCkKLSAgICB7Ci0gICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgZXhwZWN0ZWQpOwotICAgICAgICBpZiAo
ZW5kSXQpCi0gICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgfQorPGh0bWw+Cis8Ym9keT4KIAot
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5F
TVBUWSk7Ci0gICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiLCBmdW5jdGlvbiAoKSB7IHRlc3RO
ZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5MT0FESU5HKTsgfSApOwotICAgIHdhaXRGb3JF
dmVudCgibG9hZGVkbWV0YWRhdGEiLCBmdW5jdGlvbiAoKSB7IHRlc3ROZXR3b3JrU3RhdGUoSFRN
TE1lZGlhRWxlbWVudC5MT0FERURfTUVUQURBVEEpOyB9ICk7Ci0gICAgd2FpdEZvckV2ZW50KCJs
b2FkZWRmaXJzdGZyYW1lIiwgZnVuY3Rpb24gKCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRp
YUVsZW1lbnQuTE9BREVEX0ZJUlNUX0ZSQU1FKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9h
ZCIsIGZ1bmN0aW9uICgpIHsgdGVzdE5ldHdvcmtTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkxPQURF
RCwgdHJ1ZSk7IH0gKTsKLSAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1wNCI7Ci08L3Nj
cmlwdD4KKyAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKworICAgIDxwPlRlc3QgdGhhdCBz
ZXR0aW5nIHNyYyB0byBhbiBpbnZhbGlkIHVybCB0cmlnZ2VycyBsb2FkKCksIHdoaWNoIHNldHMg
bmV0d29ya1N0YXRlCisgICAgdG8gTkVUV09SS19OT19TT1VSQ0UuIFNldHRpbmcgc3JjIHRvIGEg
dmFsaWQgdXJsIHNob3VsZCB0aGVuIHRyaWdnZXIgdGhlIGxvYWRpbmcKKyAgICBldmVudHMgYW5k
IGVuZCB1cCB3aXRoIG5ldHdvcmtTdGF0ZSA+PSBORVRXT1JLX0xPQURJTkcuCisgICAgIDwvcD4K
KyAgICAKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3ROZXR3b3JrU3RhdGUoZXhwZWN0ZWQsIGVuZGl0LCBv
cCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3Rh
dGUiLCBleHBlY3RlZCwgb3ApOworICAgICAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50
KCJsb2Fkc3RhcnQiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGRhdGEiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
KCJjYW5wbGF5Iik7CisgICAgICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoInBsYXkiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50QW5kRmFpbCgicGxheWluZyIpOworICAgICAgICB3YWl0Rm9yRXZlbnQo
ImNhbnBsYXl0aHJvdWdoIiwgZnVuY3Rpb24gKCkgeyB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRp
YUVsZW1lbnQuTkVUV09SS19MT0FESU5HLCB0cnVlLCAnPj0nICk7IH0gKTsKKyAgICAKKyAgICAg
ICAgZnVuY3Rpb24gc29tZVRpbWVMYXRlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RO
ZXR3b3JrU3RhdGUoSFRNTE1lZGlhRWxlbWVudC5ORVRXT1JLX05PX1NPVVJDRSApOworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgLy8gbm93IHNldCBhIHZhbGlk
IHVybAorICAgICAgICAgICAgcnVuKCJ2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCciKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gZmlyc3Qgc2V0IHRoZSBzcmMgdG8gYSBi
b2d1cyB1cmwsIGl0IHNob3VsZCBhdHRlbXB0IGEgbG9hZAorICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICB0ZXN0TmV0d29ya1N0YXRlKEhUTUxNZWRpYUVsZW1lbnQuTkVUV09SS19F
TVBUWSk7CisgICAgICAgIHJ1bigidmlkZW8uc3JjID0gJ2JvZ3VzL21vdmllLm1wZyciKTsKKyAg
ICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCA0MDApIAorICAgIAorICAgIDwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb2Fk
LXJlYWR5U3RhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWxvYWQtcmVhZHlTdGF0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxODI3KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9hZC1yZWFkeVN0YXRlLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMyArMSw5IEBACiBFWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9
PSAnMCcpIE9LCiBFVkVOVChsb2Fkc3RhcnQpCi1FWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9
PSAnMCcpIE9LCiBFVkVOVChsb2FkZWRtZXRhZGF0YSkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0
YXRlID09ICcwJykgT0sKLUVWRU5UKGxvYWRlZGZpcnN0ZnJhbWUpCi1FWFBFQ1RFRCAodmlkZW8u
cmVhZHlTdGF0ZSA9PSAnMScpIE9LCi1FVkVOVChjYW5zaG93Y3VycmVudGZyYW1lKQotRVhQRUNU
RUQgKHZpZGVvLnJlYWR5U3RhdGUgPT0gJzEnKSBPSworRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5U
KGNhbnBsYXkpCiBFVkVOVChjYW5wbGF5dGhyb3VnaCkKLUVYUEVDVEVEICh2aWRlby5yZWFkeVN0
YXRlID09ICczJykgT0sKK0VYUEVDVEVEICh2aWRlby5yZWFkeVN0YXRlID09ICc0JykgT0sKIEVO
RCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlTdGF0
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvYWQtcmVhZHlT
dGF0ZS5odG1sCShyZXZpc2lvbiA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxv
YWQtcmVhZHlTdGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICsxLDIxIEBACiA8dmlk
ZW8gY29udHJvbHM+PC92aWRlbz4KIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CiA8c2NyaXB0PgotICAgIGZ1bmN0aW9uIHRlc3RSZWFkeVN0YXRlKGV4cGVjdGVkLCBlbmRJdCkK
KyAgICBmdW5jdGlvbiB0ZXN0UmVhZHlTdGF0ZShleHBlY3RlZCwgZW5kaXQsIG9wKQogICAgIHsK
LSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0YXRlIiwgZXhwZWN0ZWQpOwotICAg
ICAgICBpZiAoZW5kSXQpCisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucmVhZHlTdGF0ZSIs
IGV4cGVjdGVkLCBvcCk7CisgICAgICAgIGlmIChlbmRpdCkKICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKICAgICB9CiAKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBIVE1MTWVk
aWFFbGVtZW50LkRBVEFfVU5BVkFJTEFCTEUpOwotICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0
IiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlTdGF0ZShIVE1MTWVkaWFFbGVtZW50LkRBVEFfVU5B
VkFJTEFCTEUpOyB9ICk7Ci0gICAgd2FpdEZvckV2ZW50KCJsb2FkZWRtZXRhZGF0YSIsIGZ1bmN0
aW9uICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1lZGlhRWxlbWVudC5EQVRBX1VOQVZBSUxBQkxF
KTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZmlyc3RmcmFtZSIsIGZ1bmN0aW9uICgp
IHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1lZGlhRWxlbWVudC5DQU5fU0hPV19DVVJSRU5UX0ZSQU1F
KTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgiY2Fuc2hvd2N1cnJlbnRmcmFtZSIsIGZ1bmN0aW9u
ICgpIHsgdGVzdFJlYWR5U3RhdGUoSFRNTE1lZGlhRWxlbWVudC5DQU5fU0hPV19DVVJSRU5UX0ZS
QU1FKTsgfSApOwotICAgIHdhaXRGb3JFdmVudCgiY2FucGxheXRocm91Z2giLCBmdW5jdGlvbiAo
KSB7IHRlc3RSZWFkeVN0YXRlKEhUTUxNZWRpYUVsZW1lbnQuQ0FOX1BMQVlfVEhST1VHSCwgdHJ1
ZSk7IH0gKTsKKyAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnJlYWR5U3RhdGUiLCBIVE1MTWVkaWFF
bGVtZW50LkhBVkVfTk9USElORyk7CisgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAg
ICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJsb2Fk
ZWRkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgd2FpdEZvckV2ZW50
QW5kRmFpbCgicGxheSIpOworICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoInBsYXlpbmciKTsKKyAg
ICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIiwgZnVuY3Rpb24gKCkgeyB0ZXN0UmVhZHlT
dGF0ZShIVE1MTWVkaWFFbGVtZW50LkhBVkVfRU5PVUdIX0RBVEEsIHRydWUgKTsgfSApOworCiAg
ICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1sb29wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1sb29wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE4MjcpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb29wLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTMsMTAgKzEzLDEyIEBAIEVWRU5UKHBsYXkpCiBFWFBFQ1RFRCAodmlkZW8ucGF1c2Vk
ID09ICdmYWxzZScpIE9LCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAt
IDAuNCkKIAorRVZFTlQocGxheWluZykKIEVYUEVDVEVEICh2aWRlby5lbmRlZCA9PSAnZmFsc2Un
KSBPSwogRVhQRUNURUQgKG1lZGlhLmN1cnJlbnRUaW1lID4gJzAnKSBPSworRVhQRUNURUQgKG1l
ZGlhLmN1cnJlbnRUaW1lIDwgJzguMDAnKSBPSwogUlVOKHZpZGVvLmxvb3AgPSBmYWxzZSkKLVJV
Tih2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC40KQorUlVOKHZpZGVvLmN1
cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24gLSAwLjMpCiAKIEVYUEVDVEVEICh2aWRlby5lbmRl
ZCA9PSAndHJ1ZScpIE9LCiBFWFBFQ1RFRCAobWVkaWEuY3VycmVudFRpbWUgPT0gJ21lZGlhLmR1
cmF0aW9uJykgT0sKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWxvb3AuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1sb29wLmh0bWwJKHJldmlzaW9uIDQx
ODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbG9vcC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUyICsxLDY0IEBACi08dmlkZW8gY29udHJvbHMgYXV0b3BsYXkgPjwvdmlkZW8+Ci08
c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8uZ2V0QXR0cmlidXRlKCdsb29wJykiLCBudWxsKTsKLSAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLmxvb3AiLCBmYWxzZSk7Ci0KLSAgICBydW4oInZpZGVvLmxvb3AgPSB0cnVl
Iik7Ci0gICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5sb29wIiwgdHJ1ZSk7Ci0gICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUoJ2xvb3AnKSIsIG51bGwsICIhPSIpOwotCi0gICAgcnVu
KCJ2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ2xvb3AnKSIpOwotICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8ubG9vcCIsIGZhbHNlKTsKLQotICAgIHZhciByZXNwb25kVG9UaW1lVXBkYXRlID0gZmFsc2U7
Ci0gICAgdmFyIGZpcnN0VGltZUNoZWNrID0gdHJ1ZTsKLQotICAgIC8vIG1ha2Ugc3VyZSB3ZSBh
cmUgcGxheWluZywgc2VlayB0byBuZWFyIHRoZSBlbmQgc28gdGhlIHRlc3QgZG9lc24ndCB0YWtl
IHRvbyBsb25nCi0gICAgd2FpdEZvckV2ZW50KCdwbGF5JywgZnVuY3Rpb24gKCkgeyAKLSAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7Ci0gICAgICAgIHJ1bigidmlk
ZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNCIpOwotICAgICAgICAKLSAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAgICAgc2V0VGltZW91dCh0aW1lQ2hlY2ssIDgwMCk7
Ci0gICAgfSApOworPGh0bWw+CiAKLSAgICBmdW5jdGlvbiB0aW1lQ2hlY2soKSB7IAotICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmVuZGVkIiwgIWZpcnN0VGltZUNoZWNrKTsKLSAgICAgICAg
aWYgKCFmaXJzdFRpbWVDaGVjaykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gZG9uJ3QgdXNl
ICJ0ZXN0RXhwZWN0ZWQoKSIgc28gd2Ugd29uJ3QgbG9nIHRoZSBhY3R1YWwgZHVyYXRpb24gdG8g
dGhlCi0gICAgICAgICAgICAvLyAgcmVzdWx0cyBmaWxlLCBhcyB0aGUgZmxvYXRpbmcgcG9pbnQg
cmVzdWx0IG1heSBkaWZmZXIgd2l0aCBkaWZmZXJlbnQgZW5naW5lcwotICAgICAgICAgICAgcmVw
b3J0RXhwZWN0ZWQobWVkaWEuY3VycmVudFRpbWUgPT0gbWVkaWEuZHVyYXRpb24sICJtZWRpYS5j
dXJyZW50VGltZSIsICI9PSIsICJtZWRpYS5kdXJhdGlvbiIsIG1lZGlhLmN1cnJlbnRUaW1lKTsK
LSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgIDx2aWRlbyBjb250cm9scyBhdXRvcGxheSA+PC92aWRlbz4KIAotICAgICAgICB0ZXN0RXhw
ZWN0ZWQoIm1lZGlhLmN1cnJlbnRUaW1lIiwgMCwgJz4nKTsKLSAgICAgICAgcnVuKCJ2aWRlby5s
b29wID0gZmFsc2UiKTsKLSAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1
cmF0aW9uIC0gMC40Iik7Ci0gICAgICAgIHJlc3BvbmRUb1RpbWVVcGRhdGUgPSB0cnVlOwotICAg
ICAgICBmaXJzdFRpbWVDaGVjayA9IGZhbHNlOworICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0PgorICAgIAorICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmdldEF0dHJpYnV0ZSgnbG9vcCcpIiwgbnVsbCk7CisgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ubG9vcCIsIGZhbHNlKTsKKyAgICAKKyAgICAgICAgcnVuKCJ2aWRlby5sb29wID0g
dHJ1ZSIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmxvb3AiLCB0cnVlKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUoJ2xvb3AnKSIsIG51bGwsICIhPSIp
OworICAgIAorICAgICAgICBydW4oInZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnbG9vcCcpIik7Cisg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubG9vcCIsIGZhbHNlKTsKKyAgICAKKyAgICAgICAg
dmFyIHJlc3BvbmRUb1RpbWVVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgdmFyIGZpcnN0VGltZUNo
ZWNrID0gdHJ1ZTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BhdXNlJyk7CisgICAgICAgIHdh
aXRGb3JFdmVudCgncGxheWluZycpOworCisgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBhcmUgcGxh
eWluZywgc2VlayB0byBuZWFyIHRoZSBlbmQgc28gdGhlIHRlc3QgZG9lc24ndCB0YWtlIHRvbyBs
b25nCisgICAgICAgIHdhaXRGb3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsgCisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJ1
bigidmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuNCIpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgc2V0VGltZW91
dCh0aW1lQ2hlY2ssIDgwMCk7CisgICAgICAgIH0gKTsKKyAgICAKKyAgICAgICAgZnVuY3Rpb24g
dGltZUNoZWNrKCkgeyAKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZW5kZWQiLCAh
Zmlyc3RUaW1lQ2hlY2spOworICAgICAgICAgICAgaWYgKCFmaXJzdFRpbWVDaGVjaykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBkb24ndCB1c2UgInRlc3RFeHBlY3RlZCgpIiBz
byB3ZSB3b24ndCBsb2cgdGhlIGFjdHVhbCBkdXJhdGlvbiB0byB0aGUKKyAgICAgICAgICAgICAg
ICAvLyAgcmVzdWx0cyBmaWxlLCBhcyB0aGUgZmxvYXRpbmcgcG9pbnQgcmVzdWx0IG1heSBkaWZm
ZXIgd2l0aCBkaWZmZXJlbnQgZW5naW5lcworICAgICAgICAgICAgICAgIHJlcG9ydEV4cGVjdGVk
KG1lZGlhLmN1cnJlbnRUaW1lID09IG1lZGlhLmR1cmF0aW9uLCAibWVkaWEuY3VycmVudFRpbWUi
LCAiPT0iLCAibWVkaWEuZHVyYXRpb24iLCBtZWRpYS5jdXJyZW50VGltZSk7CisgICAgICAgICAg
ICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgibWVkaWEuY3VycmVudFRpbWUiLCAwLCAn
PicpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJtZWRpYS5jdXJyZW50VGltZSIsICh2aWRl
by5kdXJhdGlvbiAtIDAuNCkudG9GaXhlZCgyKSwgJzwnKTsKKyAgICAgICAgICAgIHJ1bigidmlk
ZW8ubG9vcCA9IGZhbHNlIik7CisgICAgICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0g
dmlkZW8uZHVyYXRpb24gLSAwLjMiKTsKKyAgICAgICAgICAgIHJlc3BvbmRUb1RpbWVVcGRhdGUg
PSB0cnVlOworICAgICAgICAgICAgZmlyc3RUaW1lQ2hlY2sgPSBmYWxzZTsKKyAgICAKKyAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVj
aywgODAwKTsKKyAgICAgICAgfQorICAgIAogICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAg
ICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjaywgODAwKTsKLSAgICB9CisgICAgICAgIHJ1bigidmlk
ZW8ubG9vcCA9IHRydWUiKTsKKyAgICAgICAgcnVuKCJ2aWRlby5zcmMgPSAnY29udGVudC90ZXN0
Lm1wNCciKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICA8L3NjcmlwdD4KKworICAg
IDwvaGVhZD4KIAotICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgcnVuKCJ2aWRlby5sb29wID0g
dHJ1ZSIpOwotICAgIHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnIik7Ci0gICAg
Y29uc29sZVdyaXRlKCIiKTsKLTwvc2NyaXB0PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBhdXNlLWVtcHR5LWV2ZW50
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1
c2UtZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1wYXVzZS1lbXB0eS1ldmVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yLDYgKzIsMTIgQEAgVGVzdCB0aGF0IHBhdXNlKCkgZnJvbSBFTVBUWSBuZXR3
b3JrIHN0YQogCiBFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICcwJykgT0sKIFJVTih2
aWRlby5wYXVzZSgpKQorU0NSSVBUIERPTkUKIEVWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGR1cmF0
aW9uY2hhbmdlKQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZF
TlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQogRU5EIE9GIFRFU1QKIApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZlbnRzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZlbnRzLmh0bWwJKHJl
dmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGF1c2UtZW1wdHktZXZl
bnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMywxOCBAQAogPHNjcmlwdCBzcmM9dmlk
ZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgdmlkZW8uc3JjID0gImNvbnRlbnQv
dGVzdC5tcDQiOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1l
ZGlhRWxlbWVudC5FTVBUWSk7Ci0gICAgd2FpdEZvckV2ZW50QW5kRW5kKCdsb2Fkc3RhcnQnKTsK
KyAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQu
TkVUV09SS19FTVBUWSk7CisKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgIHdh
aXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOwor
ICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgIHdhaXRGb3JFdmVudCgiZHVyYXRp
b25jaGFuZ2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgd2Fp
dEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7Cisg
ICAgd2FpdEZvckV2ZW50QW5kRW5kKCJjYW5wbGF5dGhyb3VnaCIpOworCiAgICAgcnVuKCJ2aWRl
by5wYXVzZSgpIik7CiAgICAgY29uc29sZVdyaXRlKCJTQ1JJUFQgRE9ORSIpOwogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LWVtcHR5LWV2ZW50cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1lbXB0eS1l
dmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MiwxMCArMiwxNCBAQCBUZXN0IHRoYXQgcGxheSgpIGZyb20gRU1QVFkgbmV0d29yayBzdGF0CiAK
IEVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgPT0gJzAnKSBPSwogUlVOKHZpZGVvLnBsYXko
KSkKLUVWRU5UKGxvYWRzdGFydCkKLUVYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBP
SwogU0NSSVBUIERPTkUKLUVWRU5UKHBsYXkpCitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChkdXJh
dGlvbmNoYW5nZSkKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VW
RU5UKGNhbnBsYXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VWRU5UKHBsYXlpbmcpCiBFWFBF
Q1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LWVtcHR5LWV2ZW50cy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktZW1wdHktZXZlbnRzLmh0bWwJKHJldmlz
aW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1lbXB0eS1ldmVudHMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMSwyOSBAQAotPHZpZGVvIGNvbnRyb2xzPjwv
dmlkZW8+Ci08cD5UZXN0IHRoYXQgcGxheSgpIGZyb20gRU1QVFkgbmV0d29yayBzdGF0ZSB0cmln
Z2VycyBsb2FkKCkgYW5kIGFzeW5jIHBsYXkgZXZlbnQuPC9wPgotPHNjcmlwdCBzcmM9dmlkZW8t
dGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVz
dC5tcDQiOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlh
RWxlbWVudC5FTVBUWSk7Cis8aHRtbD4KKzxib2R5PgogCi0gICAgd2FpdEZvckV2ZW50KCdsb2Fk
c3RhcnQnLCBmdW5jdGlvbiAoKSB7IAotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNl
ZCIsIHRydWUpOwotICAgIH0gKTsKKyAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKyAgICA8
cD5UZXN0IHRoYXQgcGxheSgpIGZyb20gRU1QVFkgbmV0d29yayBzdGF0ZSB0cmlnZ2VycyBsb2Fk
KCkgYW5kIGFzeW5jIHBsYXkgZXZlbnQuPC9wPgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5u
ZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50Lk5FVFdPUktfRU1QVFkpOworICAgIAorICAg
ICAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoInJh
dGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAgICAgIHdh
aXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImR1cmF0aW9u
Y2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2Fu
cGxheSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIik7CisgICAgICAg
IHdhaXRGb3JFdmVudCgicGxheSIpOworICAgIAorICAgICAgICB3YWl0Rm9yRXZlbnQoJ3BsYXlp
bmcnLCBmdW5jdGlvbiAoKSB7IHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOyBl
bmRUZXN0KCk7IH0gKTsKKyAgICAKKyAgICAgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVzdC5t
cDQiOworICAgICAgICBydW4oInZpZGVvLnBsYXkoKSIpOworICAgICAgICBjb25zb2xlV3JpdGUo
IlNDUklQVCBET05FIik7CisgICAgPC9zY3JpcHQ+CiAKLSAgICB3YWl0Rm9yRXZlbnQoJ3BsYXkn
LCBmdW5jdGlvbiAoKSB7IAotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIsIGZh
bHNlKTsKLSAgICAgICAgZW5kVGVzdCgpOwotICAgIH0gKTsKLQotICAgIHJ1bigidmlkZW8ucGxh
eSgpIik7Ci0gICAgY29uc29sZVdyaXRlKCJTQ1JJUFQgRE9ORSIpOwotPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV2
ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
cGxheS1wYXVzZS1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MTgyNykKKysrIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw5ICs0LDggQEAgUlVOKHZpZGVvLnBsYXkoKSkKIFJVTih2aWRlby5wYXVz
ZSgpKQogU0NSSVBUIERPTkUKIEVWRU5UKHBsYXkpCi1FWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09
ICd0cnVlJykgT0sKK0VWRU5UKHdhaXRpbmcpCiBFVkVOVCh0aW1ldXBkYXRlKQotRVhQRUNURUQg
KHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCiBFVkVOVChwYXVzZSkKIEVYUEVDVEVEICh2aWRl
by5wYXVzZWQgPT0gJ3RydWUnKSBPSwogRU5EIE9GIFRFU1QKSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1ldmVudHMuaHRtbAkocmV2aXNpb24gNDE4MjcpCisr
KyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV2ZW50cy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC00LDExICs0LDIyIEBACiA8c2NyaXB0PgogICAgIHZpZGVvLnNyYyA9ICJjb250
ZW50L3Rlc3QubXA0IjsKIAotICAgIHdhaXRGb3JFdmVudCgncGxheScsIGZ1bmN0aW9uICgpIHsg
dGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTt9ICk7Ci0gICAgd2FpdEZvckV2ZW50
KCd0aW1ldXBkYXRlJywgZnVuY3Rpb24gKCkgeyB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNlZCIs
IHRydWUpO30gKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JF
dmVudCgicmF0ZWNoYW5nZSIpOworICAgIHdhaXRGb3JFdmVudCgid2FpdGluZyIpOworICAgIHdh
aXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgIHdhaXRGb3JFdmVudCgiZHVyYXRpb25jaGFu
Z2UiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZG1ldGFkYXRhIik7CisgICAgd2FpdEZvckV2
ZW50KCJsb2FkZWRkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgd2Fp
dEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgIHdhaXRGb3JFdmVudCgicGxheSIpOwor
ICAgIHdhaXRGb3JFdmVudCgidGltZXVwZGF0ZSIpOwogICAgIHdhaXRGb3JFdmVudCgncGF1c2Un
LCBmdW5jdGlvbiAoKSB7IHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7IGVuZFRl
c3QoKTsgfSApOwogCisKICAgICBydW4oInZpZGVvLnBsYXkoKSIpOwogICAgIHJ1bigidmlkZW8u
cGF1c2UoKSIpOworICAgIAogICAgIGNvbnNvbGVXcml0ZSgiU0NSSVBUIERPTkUiKTsKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXkt
cGF1c2UtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSwxMCBAQAotVmlkZW8gaGFzIG5vIHNyYy4gVGVzdCB0aGF0IHBs
YXkoKSBhbmQgcGF1c2UoKSByZXRocm93IHRoZSBleGNlcHRpb24gZnJvbSBsb2FkKCkuIFRlc3Qg
dGhhdCB0aGUgcGxheSBhbmQgcGF1c2UgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4KK1ZpZGVv
IGhhcyBubyBzcmMuIFRlc3QgdGhhdCB0aGUgcGxheWluZyBldmVudCBpcyBub3QgZGlzcGF0Y2hl
ZC4KIAotVEVTVCh2aWRlby5wbGF5KCkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFU
RV9FUlIpIE9LCi1URVNUKHZpZGVvLnBhdXNlKCkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIpIE9LCitSVU4odmlkZW8ucGxheSgpKQorUlVOKHZpZGVvLnBhdXNlKCkpCitF
VkVOVCh3YWl0aW5nKQorRVZFTlQodGltZXVwZGF0ZSkKK0VWRU5UKHBhdXNlKQorRVhQRUNURUQg
KHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAnNCcpIE9LCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1wbGF5LXBhdXNlLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBsYXktcGF1c2UtZXhjZXB0aW9uLmh0bWwJKHJl
dmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wYXVzZS1leGNl
cHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwyNiBAQAorCiA8dmlkZW8gY29u
dHJvbHM+PC92aWRlbz4KLTxwPlZpZGVvIGhhcyBubyBzcmMuIFRlc3QgdGhhdCBwbGF5KCkgYW5k
IHBhdXNlKCkgcmV0aHJvdyB0aGUgZXhjZXB0aW9uIGZyb20gbG9hZCgpLiBUZXN0IHRoYXQgdGhl
IHBsYXkgYW5kIHBhdXNlIGV2ZW50cyBhcmUgbm90IGRpc3BhdGNoZWQuPC9wPgorCis8cD5WaWRl
byBoYXMgbm8gc3JjLiBUZXN0IHRoYXQgdGhlIHBsYXlpbmcgZXZlbnQgaXMgbm90IGRpc3BhdGNo
ZWQuPC9wPgorCiA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4K
LXdhaXRGb3JFdmVudEFuZEZhaWwoJ3BsYXknKTsKLXdhaXRGb3JFdmVudEFuZEZhaWwoJ3BhdXNl
Jyk7Ci10ZXN0RXhjZXB0aW9uKCJ2aWRlby5wbGF5KCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURf
U1RBVEVfRVJSIik7Ci10ZXN0RXhjZXB0aW9uKCJ2aWRlby5wYXVzZSgpIiwgIkRPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUiIpOwotZW5kVGVzdExhdGVyKCk7CisgICAgd2FpdEZvckV2ZW50
QW5kRmFpbCgncGxheWluZycpOworCisgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAg
ICB3YWl0Rm9yRXZlbnQoInRpbWV1cGRhdGUiKTsKKyAgICB3YWl0Rm9yRXZlbnQoInBhdXNlIik7
CisgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisKKyAgICBydW4oInZpZGVvLnBsYXkoKSIp
OworICAgIHJ1bigidmlkZW8ucGF1c2UoKSIpOworCisgICAgZnVuY3Rpb24gc29tZVRpbWVMYXRl
cigpCisgICAgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhU
TUxNZWRpYUVsZW1lbnQuTkVUV09SS19OT19TT1VSQ0UpOworICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0KHNv
bWVUaW1lTGF0ZXIsIDQwMCkgCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXNlZWstbm8tc3JjLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstbm8tc3JjLWV4Y2Vw
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0
IHNlZWtpbmcgdmlkZW8gd2l0aCBubyAnc3JjJyBhdHRyaWJ1dGUgdGhyb3dzIGFuIElOVkFMSURf
U1RBVEVfRVJSIGV4Y2VwdGlvbi4KKworRVhQRUNURUQgKHZpZGVvLm5ldHdvcmtTdGF0ZSA9PSAn
MCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCitURVNUKHZpZGVv
LmN1cnJlbnRUaW1lID0gMS4xKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
KSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1u
by1zcmMtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tc2Vlay1uby1zcmMtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1zZWVrLW5vLXNyYy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNyBAQAorPGh0bWw+Cis8Ym9keT4KKworICAgIDx2aWRlbyBsb29wIGNvbnRyb2xz
PjwvdmlkZW8+CisgICAgCisgICAgPHA+VGVzdCB0aGF0IHNlZWtpbmcgdmlkZW8gd2l0aCBubyAn
c3JjJyBhdHRyaWJ1dGUgdGhyb3dzIGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbi48L3A+
CisKKyAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxl
bWVudC5ORVRXT1JLX0VNUFRZKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5yZWFkeVN0
YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5IQVZFX05PVEhJTkcpOworICAgICAgICB0ZXN0RXhjZXB0
aW9uKCJ2aWRlby5jdXJyZW50VGltZSA9IDEuMSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFU
RV9FUlIiKTsKKyAgICAgICAgc2V0VGltZW91dChlbmRUZXN0LCAyMDApIAorICAgIDwvc2NyaXB0
PgorICAgIAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c2Vlay1wYXN0LWVuZC1wbGF5aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zZWVrLXBhc3QtZW5kLXBsYXlpbmctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxh
eWluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzEsMTUgQEAKIFRlc3Qg
dGhhdCBzZWVraW5nIHZpZGVvIHdpdGggJ2xvb3AnIHBhc3QgaXQncyBlbmQgcmV3aW5kcyB0byB0
aGUgYmVnaW5uaW5nIGFuZCBjb250aW51ZXMgcGxheWJhY2suCiAKIFJVTih2aWRlby5zcmMgPSAn
Y29udGVudC90ZXN0Lm1wNCcpCi1SVU4odmlkZW8ucGxheSgpKQogCiBFVkVOVChsb2FkKQorRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCitSVU4odmlkZW8ucGxheSgpKQogRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSwogCiBFWFBFQ1RFRCAodmlkZW8ucGF1
c2VkID09ICdmYWxzZScpIE9LCiBFWFBFQ1RFRCAobWVkaWEuY3VycmVudFRpbWUgPiAnMCcpIE9L
CitSVU4odmlkZW8uY3VycmVudFRpbWUgPSA1MDApCiAKIEVYUEVDVEVEICh2aWRlby5wYXVzZWQg
PT0gJ2ZhbHNlJykgT0sKIEVYUEVDVEVEIChtZWRpYS5jdXJyZW50VGltZSA+ICcwJykgT0sKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWluZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGxheWlu
Zy5odG1sCShyZXZpc2lvbiA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWst
cGFzdC1lbmQtcGxheWluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsOCBAQAogPHNj
cmlwdD4KIAogICAgIHdhaXRGb3JFdmVudCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsgCisgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisgICAgICAgIHJ1bigidmlkZW8u
cGxheSgpIik7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwog
ICAgICAgICBzZXRUaW1lb3V0KHRpbWVDaGVjazEsIDIwMCk7CiAgICAgfSk7CkBAIC0xNCw3ICsx
Niw3IEBACiAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8ucGF1c2VkIiwgZmFsc2UpOwogICAgICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhLmN1cnJl
bnRUaW1lIiwgMCwgJz4nKTsKLSAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSA1MDA7CisgICAg
ICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSA1MDAiKTsKICAgICAgICAgc2V0VGltZW91dCh0
aW1lQ2hlY2syLCAyMDApOwogICAgIH0KIApAQCAtMjgsNiArMzAsNSBAQAogICAgIH0KIAogICAg
IHJ1bigidmlkZW8uc3JjID0gJ2NvbnRlbnQvdGVzdC5tcDQnIik7Ci0gICAgcnVuKCJ2aWRlby5w
bGF5KCkiKTsKICAgICBjb25zb2xlV3JpdGUoIiIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE4Mjcp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5nLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMSwzMSBAQAotVGVzdCB0aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlz
IHRydWUgaW4gdGltZXVwZGF0ZSBldmVudCBhZnRlciBzZWVrIGFuZCBnb2VzIGJhY2sgdG8gZmFs
c2Ugd2hlbiBzZWVraW5nIGNvbXBsZXRlcworVGVzdCB0aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlz
IHRydWUgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBzZWVrLCBnb2VzIGJhY2sgdG8gZmFsc2Ugd2hlbiBz
ZWVraW5nIGNvbXBsZXRlcywgYW5kIHRoYXQgYSAnc2Vla2VkJyBldmVudCBpcyBmaXJlZCBmb3Ig
ZWFjaCBzZWVrCiAKIEVWRU5UKGxvYWQpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCisK
K0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHNlZWtlZENvdW50ID09ICcxJykgT0sKIEVYUEVD
VEVEICh2aWRlby5zZWVraW5nID09ICdmYWxzZScpIE9LCi1SVU4odmlkZW8uY3VycmVudFRpbWUg
PSAyKQotRVZFTlQodGltZXVwZGF0ZSkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAn
MC41JykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDEpCitFWFBFQ1RFRCAodmlkZW8uc2Vl
a2luZyA9PSAndHJ1ZScpIE9LCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHNlZWtlZENv
dW50ID09ICcyJykgT0sKK0VYUEVDVEVEICh2aWRlby5zZWVraW5nID09ICdmYWxzZScpIE9LCitF
WFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzEnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRU
aW1lID0gMS41KQogRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0gJ3RydWUnKSBPSwotRVhQRUNU
RUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcyJykgT0sKKworRVZFTlQoc2Vla2VkKQorCitFWFBF
Q1RFRCAoc2Vla2VkQ291bnQgPT0gJzMnKSBPSwogRVhQRUNURUQgKHZpZGVvLnNlZWtpbmcgPT0g
J2ZhbHNlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMS41JykgT0sKK1JV
Tih2aWRlby5jdXJyZW50VGltZSA9IDIpCitFWFBFQ1RFRCAodmlkZW8uc2Vla2luZyA9PSAndHJ1
ZScpIE9LCisKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNl
ZWtpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVraW5n
Lmh0bWwJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vla2lu
Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxICsxLDUxIEBACiA8dmlkZW8gY29udHJvbHM+
PC92aWRlbz4KLTxwPlRlc3QgdGhhdCBzZWVraW5nIGF0dHJpYnV0ZSBpcyB0cnVlIGluIHRpbWV1
cGRhdGUgZXZlbnQgYWZ0ZXIgc2VlayBhbmQgZ29lcyBiYWNrIHRvIGZhbHNlIHdoZW4gc2Vla2lu
ZyBjb21wbGV0ZXMgPC9wPgorPHA+VGVzdCB0aGF0IHNlZWtpbmcgYXR0cmlidXRlIGlzIHRydWUg
aW1tZWRpYXRlbHkgYWZ0ZXIgYSBzZWVrLAorIGdvZXMgYmFjayB0byBmYWxzZSB3aGVuIHNlZWtp
bmcgY29tcGxldGVzLCBhbmQgdGhhdCBhICdzZWVrZWQnIGV2ZW50CisgaXMgZmlyZWQgZm9yIGVh
Y2ggc2VlaworIDwvcD4KIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CiA8c2Ny
aXB0Pgotd2FpdEZvckV2ZW50KCdsb2FkJywKLSAgICBmdW5jdGlvbiAoKSAKKworICAgIHZhciBz
ZWVrZWRDb3VudCA9IDA7CisgICAgdmFyIGNvdW50ZXI7CisKKyAgICBmdW5jdGlvbiBzZWVrZWQo
KQorICAgIHsgCisgICAgICAgICsrc2Vla2VkQ291bnQ7IAorICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNvbWVUaW1lTGF0ZXIoKQogICAgIHsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJzZWVrZWRDb3VudCIsIGNvdW50ZXIpOwogICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLnNlZWtpbmciLCBmYWxzZSk7Ci0gICAgICAgIHdhaXRGb3JFdmVudCgndGlt
ZXVwZGF0ZScsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
c2Vla2luZyIsIHRydWUpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50
VGltZSIsIDIpOwotICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5zZWVraW5nIiwgZmFsc2UpOwotICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0sIDIwMCk7Ci0gICAgICAgIH0pOwotICAg
ICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1lID0gMiIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmN1cnJlbnRUaW1lIiwgY291bnRlciAqIDAuNSk7CisgICAgICAgIHJ1bigidmlkZW8u
Y3VycmVudFRpbWUgPSAiICsgKGNvdW50ZXIgKyAxKSAqIDAuNSk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uc2Vla2luZyIsIHRydWUpOworCisgICAgICAgIGlmIChjb3VudGVyID09IDMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBl
bmRUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICArK2NvdW50ZXI7CisgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgIH0KKworICAgIGZ1bmN0aW9uIGxvYWRlZCgpIAorICAgIHsKKyAg
ICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9IDAuNSIpOworICAgICAgICBjb3VudGVyID0g
MTsKKyAgICAgICAgc2V0VGltZW91dChzb21lVGltZUxhdGVyLCAyMDApIAorICAgICAgICBzZXRU
aW1lb3V0KHNvbWVUaW1lTGF0ZXIsIDQwMCkgCisgICAgICAgIHNldFRpbWVvdXQoc29tZVRpbWVM
YXRlciwgNjAwKSAKKyAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICB9Ci0pOwotdmlkZW8u
c3JjID0gImNvbnRlbnQvdGVzdC5tcDQiOworICAgIAorICAgIHdhaXRGb3JFdmVudCgnd2FpdGlu
ZycgKTsKKyAgICB3YWl0Rm9yRXZlbnQoJ3NlZWtlZCcsIHNlZWtlZCApOworICAgIHdhaXRGb3JF
dmVudCgnbG9hZCcsIGxvYWRlZCk7CisKKyAgICB2aWRlby5zcmMgPSAiY29udGVudC90ZXN0Lm1w
NCI7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1hZGQt
c3JjLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
b3VyY2UtYWRkLXNyYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGxvYWRzdGFydCkKKworRVhQRUNU
RUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L3Rlc3QubXA0Jykg
T0sKK1JVTih2aWRlby5zcmMgPSAnY29udGVudC9zaWxlbmNlLm1wZycpCisKK0VWRU5UKGR1cmF0
aW9uY2hhbmdlKQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZF
TlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCitFWFBFQ1RFRCAocmVsYXRpdmVV
UkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSworRU5EIE9GIFRF
U1QKK1Rlc3QgdGhhdCBhZGRpbmcgYSAnc3JjJyBhdHRyaWJ1dGUgZG9lcyBub3RoaW5nIHdoZW4g
YSA8c291cmNlPiBlbGVtZW50IGhhcyBhbHJlYWR5IGJlZW4gY2hvc2VuCkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXNvdXJjZS1hZGQtc3JjLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zb3VyY2UtYWRkLXNyYy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxib2R5PgorICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CisKKyAgICA8dmlkZW8gY29udHJvbHM+CisgICAgICAgIDxzb3VyY2Ug
c3JjPWNvbnRlbnQvdGVzdC5tcDQgdHlwZT0idmlkZW8vbXBlZzsgY29kZWNzPSZxdW90O2F2YzEu
NEQ0MDBDJnF1b3Q7Ij4KKyAgICA8L3ZpZGVvPgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgZmlu
ZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHZhciBjb3VudGVyID0gMDsKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tMb2FkKCkgCisgICAgICAgIHsgCisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50
U3JjKSIsICJjb250ZW50L3Rlc3QubXA0Iik7CisgICAgICAgICAgICBpZiAoKytjb3VudGVyID09
IDIpCisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5z
cmMgPSAnY29udGVudC9zaWxlbmNlLm1wZyciKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoY2hl
Y2tMb2FkLCAyMDApOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfTsK
KworICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgICAgICB3YWl0Rm9yRXZl
bnQoInJhdGVjaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJ3YWl0aW5nIik7CisgICAg
ICAgIHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImR1
cmF0aW9uY2hhbmdlIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZGVkbWV0YWRhdGEiKTsK
KyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgICAgIHdhaXRGb3JFdmVu
dCgiY2FucGxheSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXl0aHJvdWdoIik7Cisg
ICAgICAgIHdhaXRGb3JFdmVudCgicGxheSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRz
dGFydCcsIGNoZWNrTG9hZCk7CisKKyAgICA8L3NjcmlwdD4KKworPHA+VGVzdCB0aGF0IGFkZGlu
ZyBhICdzcmMnIGF0dHJpYnV0ZSBkb2VzIG5vdGhpbmcgd2hlbiBhICZsdDtzb3VyY2UmZ3Q7IGVs
ZW1lbnQgaGFzIGFscmVhZHkgCitiZWVuIGNob3NlbgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNDE4MjcpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtY2hh
bmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwyMCBAQAotVGVzdCB0
aGF0IGNoYW5naW5nIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCB3aGVuIG5ldHdvcmsgc3Rh
dGUgaXMgZW1wdHkuCi1UZXN0IHRoYXQgaXQgZG9lcyBub3QgdHJpZ2dlciBsb2FkIHdoZW4gbmV0
d29yayBzdGF0ZSBpcyBub24tZW1wdHkuCi1FVkVOVChlbXB0aWVkKQotRVhQRUNURUQgKHZpZGVv
Lm5ldHdvcmtTdGF0ZSA9PSAnMCcpIE9LCi1FVkVOVChsb2Fkc3RhcnQpCisxLiBUZXN0IHRoYXQg
YW4gaW52YWxpZCBzcmMgYXR0cmlidXRlIGZpcmVzIGFuIGVycm9yIHdoZW4gdGhlIGZpbGUgZmFp
bHMgdG8gbG9hZC4KKzIuIFRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJz
IGxvYWQgYWZ0ZXIgYSBsb2FkIGZhaWxzLgorMy4gVGVzdCB0aGF0IGNoYW5naW5nIHNyYyBkb2Vz
IG5vdCB0cmlnZ2VyIGxvYWQgb25jZSBhIGZpbGUgaXMgbG9hZGVkLgorCisKK0VWRU5UKGVycm9y
KQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdib2d1cycpIE9L
CitFWFBFQ1RFRCAodmlkZW8ubmV0d29ya1N0YXRlID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRl
by5lcnJvci5jb2RlID09ICc0JykgT0sKKworUlVOKHZpZGVvLnNldEF0dHJpYnV0ZSgnc3JjJywg
J2NvbnRlbnQvdGVzdC5tcDQnKSkKKworRVZFTlQobG9hZGVkbWV0YWRhdGEpCiBFWFBFQ1RFRCAo
cmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSwot
RVZFTlQobG9hZCkKLUVYUEVDVEVEICh2aWRlby5uZXR3b3JrU3RhdGUgIT0gJzAnKSBPSworRVhQ
RUNURUQgKGlzTmFOKHZpZGVvLmR1cmF0aW9uKSA9PSAnZmFsc2UnKSBPSworCitSVU4odmlkZW8u
c2V0QXR0cmlidXRlKCdzcmMnLCAnY29udGVudC9zaWxlbmNlLm1wZycpKQorCiBFTkQgT0YgVEVT
VAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtY2hhbmdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS5odG1sCShyZXZpc2lv
biA0MTgyNykKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwyNSArMSw0MCBAQAotPHZpZGVvIHNyYz1ib2d1cyBjb250cm9scz48
L3ZpZGVvPgotPGRpdj4KLVRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJz
IGxvYWQgd2hlbiBuZXR3b3JrIHN0YXRlIGlzIGVtcHR5Ljxicj4KLVRlc3QgdGhhdCBpdCBkb2Vz
IG5vdCB0cmlnZ2VyIGxvYWQgd2hlbiBuZXR3b3JrIHN0YXRlIGlzIG5vbi1lbXB0eS4KLTwvZGl2
PgotPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgd2Fp
dEZvckV2ZW50KCdlbXB0aWVkJywgZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLm5ldHdvcmtTdGF0ZSIsIEhUTUxNZWRpYUVsZW1lbnQuRU1QVFkpOwotICAgICAgICB2
aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250ZW50L3Rlc3QubXA0JykKLSAgICAgICAgd2Fp
dEZvckV2ZW50KCJsb2Fkc3RhcnQiLCBmdW5jdGlvbiAoKSB7IHRlc3RFeHBlY3RlZCgicmVsYXRp
dmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC90ZXN0Lm1wNCIpOyB9KTsKKzxodG1s
PgorPGJvZHk+CisgICAgCisgICAgPHZpZGVvIHNyYz1ib2d1cyBjb250cm9scz48L3ZpZGVvPgog
Ci0gICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8ubmV0d29ya1N0YXRlIiwgSFRNTE1lZGlhRWxlbWVudC5FTVBU
WSwgIiE9Iik7Ci0gICAgICAgICAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdjb250ZW50
L3Rlc3Qud2F2Jyk7CisgICAgPHA+CisgICAgMS4gVGVzdCB0aGF0IGFuIGludmFsaWQgc3JjIGF0
dHJpYnV0ZSBmaXJlcyBhbiBlcnJvciB3aGVuIHRoZSBmaWxlIGZhaWxzIHRvIGxvYWQuPGJyPgor
ICAgIDIuIFRlc3QgdGhhdCBjaGFuZ2luZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQgYWZ0
ZXIgYSBsb2FkIGZhaWxzLjxicj4KKyAgICAzLiBUZXN0IHRoYXQgY2hhbmdpbmcgc3JjIGRvZXMg
bm90IHRyaWdnZXIgbG9hZCBvbmNlIGEgZmlsZSBpcyBsb2FkZWQuCisgICAgPC9wCisgICAgPHNj
cmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIAorICAg
ICAgICBmdW5jdGlvbiBlcnJvckV2ZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJib2d1cyIpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5uZXR3b3JrU3RhdGUiLCBIVE1MTWVkaWFFbGVtZW50
Lk5FVFdPUktfTk9fU09VUkNFKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJy
b3IuY29kZSIsIE1lZGlhRXJyb3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBydW4oInZpZGVvLnNldEF0dHJpYnV0
ZSgnc3JjJywgJ2NvbnRlbnQvdGVzdC5tcDQnKSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBmdW5jdGlvbiBsb2FkZWRtZXRhZGF0YSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8u
Y3VycmVudFNyYykiLCAiY29udGVudC90ZXN0Lm1wNCIpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJpc05hTih2aWRlby5kdXJhdGlvbikiLCBmYWxzZSk7CisgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5zZXRBdHRyaWJ1dGUoJ3NyYycsICdj
b250ZW50L3NpbGVuY2UubXBnJykiKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZW5kVGVzdCwg
NTAwKSA7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisgICAgCisg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZGVkbWV0
YWRhdGEnLCBsb2FkZWRtZXRhZGF0YSk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnZXJyb3InLCBl
cnJvckV2ZW50KTsKKyAgICA8L3NjcmlwdD4KIAotICAgICAgICAgICAgd2FpdEZvckV2ZW50KCds
b2Fkc3RhcnQnLCBmdW5jdGlvbiAoKSB7IAotICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdCgiTE9B
RFNUQVJUIGZpcmVkIik7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICAgICAg
fSApOwotCi0gICAgICAgICAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDUwMCk7Ci0gICAgICAgIH0p
OwotICAgIH0pOwotPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtaW52YWxpZC1y
ZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACisKK0VWRU5U
KGxvYWRzdGFydCkKK0VYUEVDVEVEIChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAn
Ym9ndXMubW92JykgT0sKKworRVZFTlQoZXJyb3IpCitFWFBFQ1RFRCAodmlkZW8uZXJyb3IuY29k
ZSA9PSAnNCcpIE9LCitSVU4odmlkZW8ucmVtb3ZlQXR0cmlidXRlKCdzcmMnKSkKKworRVZFTlQo
bG9hZHN0YXJ0KQorRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdj
b250ZW50L3Rlc3QubXA0JykgT0sKKworRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFWFBFQ1RFRCAo
cmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0gJ2NvbnRlbnQvdGVzdC5tcDQnKSBPSwor
RVhQRUNURUQgKGlzTmFOKHZpZGVvLmR1cmF0aW9uKSA9PSAnZmFsc2UnKSBPSworCitFTkQgT0Yg
VEVTVAorVGVzdCB0aGF0IHJlbW92aW5nIGludmFsaWQgJ3NyYycgYXR0cmlidXRlIHRyaWdnZXJz
IGxvYWQgb2YgPHNvdXJjZT4gZWxlbWVudHMKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LXNyYy1pbnZhbGlkLXJlbW92ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXNyYy1pbnZhbGlkLXJlbW92ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTAgQEAKKzxodG1sPgorPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KKworICAgIDx2aWRlbyBzcmM9Ym9ndXMubW92IGNvbnRyb2xzPgorICAgICAg
ICA8c291cmNlIHNyYz1jb250ZW50L3Rlc3QubXA0PgorICAgIDwvdmlkZW8+CisKKyAgICA8cD5U
ZXN0IHRoYXQgcmVtb3ZpbmcgaW52YWxpZCAnc3JjJyBhdHRyaWJ1dGUgdHJpZ2dlcnMgbG9hZCBv
ZiAmbHQ7c291cmNlJmd0OyBlbGVtZW50czwvcD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZp
ZGVvID0gbWVkaWEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsK
KworICAgICAgICB2YXIgbG9hZENvdW50ID0gMDsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9u
IGxvYWRTdGFydCgpCisgICAgICAgIHsKKyAgICAgICAgICAgICsrbG9hZENvdW50OworICAgICAg
ICAgICAgaWYgKGxvYWRDb3VudCA9PSAxKQorICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
cmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiYm9ndXMubW92Iik7CisgICAgICAgICAg
ICBlbHNlIGlmIChsb2FkQ291bnQgPT0gMikKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InJlbGF0aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpIiwgImNvbnRlbnQvdGVzdC5tcDQiKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsVGVzdCgiJ2xvYWRDb3VudCcgZmly
ZWQgIiArIGxvYWRDb3VudCArICJ0aW1lcyIgKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Iik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkZWRtZXRhZGF0YSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVu
dFNyYykiLCAiY29udGVudC90ZXN0Lm1wNCIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJp
c05hTih2aWRlby5kdXJhdGlvbikiLCBmYWxzZSk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZXJyb3JFdmVudCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZXJyb3IuY29kZSIsIE1lZGlhRXJy
b3IuTUVESUFfRVJSX05PTkVfU1VQUE9SVEVEKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBlbmRUZXN0KCk7IH0gLCA1MDApIDsKKyAgICAgICAgICAgIHJ1bigidmlkZW8u
cmVtb3ZlQXR0cmlidXRlKCdzcmMnKSIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIHdhaXRGb3JF
dmVudCgnbG9hZGVkbWV0YWRhdGEnLCBsb2FkZWRtZXRhZGF0YSk7CisgICAgICAgIHdhaXRGb3JF
dmVudCgnbG9hZHN0YXJ0JywgbG9hZFN0YXJ0ICk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnZXJy
b3InLCBlcnJvckV2ZW50KTsKKyAgICA8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBsdXMtc291cmNlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcGx1cy1zb3VyY2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXBs
dXMtc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitFVkVO
VChsb2Fkc3RhcnQpCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykgPT0g
J2NvbnRlbnQvYm9ndXMubXBlZycpIE9LCisKK0VWRU5UKGVycm9yKQorRVhQRUNURUQgKHJlbGF0
aXZlVVJMKHZpZGVvLmN1cnJlbnRTcmMpID09ICdjb250ZW50L2JvZ3VzLm1wZWcnKSBPSworRVhQ
RUNURUQgKG1lZGlhLmVycm9yLmNvZGUgPT0gJzQnKSBPSworCitFTkQgT0YgVEVTVAorVGVzdCB0
aGF0IGEgPHNvdXJjZT4gZWxlbWVudCBpcyBub3QgdXNlZCB3aGVuIGEgYm9ndXMgJ3NyYycgYXR0
cmlidXRlIGlzIHByZXNlbnQKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1wbHVz
LXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1w
bHVzLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c3JjLXBsdXMtc291cmNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKzxodG1s
PgorPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKworICAg
IDx2aWRlbyBzcmM9Y29udGVudC9ib2d1cy5tcGVnIGNvbnRyb2xzPgorICAgICAgICA8c291cmNl
IHNyYz1jb250ZW50L3Rlc3QubXA0PgorICAgIDwvdmlkZW8+CisKKyAgICA8c2NyaXB0PgorICAg
ICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZGVkbWV0YWRhdGEnLCBmdW5jdGlvbigpIHsgCisgICAgICAgICAgICBmYWlsVGVzdCgi
J2xvYWRlZG1ldGFkYXRhJyBldmVudCBmaXJlZCIgKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
d2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnLCBmdW5jdGlvbiAoKSB7IAorICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJjb250ZW50L2JvZ3Vz
Lm1wZWciKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0gKTsKKwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJywgZnVuY3Rpb24gKCkgeyAKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC9i
b2d1cy5tcGVnIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm1lZGlhLmVycm9yLmNvZGUi
LCBNZWRpYUVycm9yLk1FRElBX0VSUl9OT05FX1NVUFBPUlRFRCk7CisgICAgICAgICAgICBzZXRU
aW1lb3V0KGVuZFRlc3QsIDIwMCkgOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAg
ICAgICAgfSk7CisKKyAgICA8L3NjcmlwdD4KKworPHA+VGVzdCB0aGF0IGEgJmx0O3NvdXJjZSZn
dDsgZWxlbWVudCBpcyBub3QgdXNlZCB3aGVuIGEgYm9ndXMgJ3NyYycgYXR0cmlidXRlIGlzIHBy
ZXNlbnQKKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tc3JjLXJlbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tc3JjLXJlbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQxODI3KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSwxMiBAQAotVGVzdCB0aGF0IHJlbW92aW5nIHNyYyBhdHRyaWJ1dGUg
dHJpZ2dlcnMgbG9hZAotRVZFTlQoZW1wdGllZCkKLUVWRU5UKGxvYWRzdGFydCkKLUVYUEVDVEVE
IChyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVudC90ZXN0Lm1wNCcpIE9L
Ci1FTkQgT0YgVEVTVAogCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VYUEVDVEVEIChyZWxhdGl2
ZVVSTCh2aWRlby5jdXJyZW50U3JjKSA9PSAnY29udGVudC9zaWxlbmNlLm1wZycpIE9LCitFWFBF
Q1RFRCAoaXNOYU4odmlkZW8uZHVyYXRpb24pID09ICdmYWxzZScpIE9LCisKK1JVTih2aWRlby5y
ZW1vdmVBdHRyaWJ1dGUoJ3NyYycpKQorCitFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8uY3Vy
cmVudFNyYykgPT0gJ2NvbnRlbnQvc2lsZW5jZS5tcGcnKSBPSworRVhQRUNURUQgKGlzTmFOKHZp
ZGVvLmR1cmF0aW9uKSA9PSAnZmFsc2UnKSBPSworCitFTkQgT0YgVEVTVAorVGVzdCB0aGF0IHJl
bW92aW5nIHZhbGlkICdzcmMnIGF0dHJpYnV0ZSBET0VTIE5PVCB0cmlnZ2VyIGxvYWQgb2YgPHNv
dXJjZT4gZWxlbWVudHMKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNyYy1yZW1vdmUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtcmVtb3ZlLmh0
bWwJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLXJlbW92
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5ICsxLDUyIEBACis8aHRtbD4KIDxib2R5Pgot
PGRpdj4KLVRlc3QgdGhhdCByZW1vdmluZyBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGxvYWQKLTwv
ZGl2PgotPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLTx2aWRlbyBzcmM9Ym9n
dXMgY29udHJvbHM+Ci0gICAgPHNvdXJjZSBzcmM9Y29udGVudC90ZXN0Lm1wND48L3NvdXJjZT4K
LTwvdmlkZW8+Ci08c2NyaXB0PgotICAgIHZpZGVvID0gbWVkaWEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKLSAgICB3YWl0Rm9yRXZlbnQoJ2VtcHRpZWQnLCBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIHZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnc3JjJykKKyAgICA8
c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgogCi0gICAgICAgIHdhaXRGb3JFdmVu
dCgnbG9hZHN0YXJ0JywgZnVuY3Rpb24gKCkgeyAKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
cmVsYXRpdmVVUkwodmlkZW8uY3VycmVudFNyYykiLCAiY29udGVudC90ZXN0Lm1wNCIpOworICAg
IDx2aWRlbyBzcmM9Y29udGVudC9zaWxlbmNlLm1wZyBjb250cm9scz4KKyAgICAgICAgPHNvdXJj
ZSBzcmM9Y29udGVudC90ZXN0Lm1wND4KKyAgICA8L3ZpZGVvPgorCisgICAgPHA+VGVzdCB0aGF0
IHJlbW92aW5nIHZhbGlkICdzcmMnIGF0dHJpYnV0ZSBET0VTIE5PVCB0cmlnZ2VyIGxvYWQgb2Yg
Jmx0O3NvdXJjZSZndDsgZWxlbWVudHM8L3A+CisKKyAgICA8c2NyaXB0PgorICAgICAgICBmaW5k
TWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgdmFyIGxvYWRDb3VudCA9IDA7CisgICAgICAgIAor
ICAgICAgICBmdW5jdGlvbiB0ZXN0U3JjKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5jdXJyZW50U3JjKSIsICJjb250ZW50L3NpbGVuY2Uu
bXBnIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImlzTmFOKHZpZGVvLmR1cmF0aW9uKSIs
IGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBsb2FkZWRtZXRhZGF0YSgpCisgICAgICAgIHsKKyAgICAgICAgICAgICsr
bG9hZENvdW50OworICAgICAgICAgICAgaWYgKGxvYWRDb3VudCA9PSAxKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHRlc3RTcmMoKTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVv
LnJlbW92ZUF0dHJpYnV0ZSgnc3JjJykiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxzcGFuIHN0
eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+IDogJ2xvYWRDb3VudCcgZmlyZWQgIiArIGxvYWRD
b3VudCArICJ0aW1lcyIgKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBmdW5jdGlvbiBzb21lVGltZUxhdGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dGVzdFNyYygpOwogICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICB9ICk7Ci0gICAgfSk7
Ci08L3NjcmlwdD4KKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgIH0KKwor
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1l
dGFkYXRhJywgbG9hZGVkbWV0YWRhdGEpOworICAgICAgICBzZXRUaW1lb3V0KHNvbWVUaW1lTGF0
ZXIsIDQwMCkgOworICAgIDwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXRlc3QuanMJKHJldmlzaW9uIDQxODI3KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKwogaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CkBAIC02
LDExICs3LDE2IEBAIHZhciB2aWRlbzsKIHZhciBtZWRpYTsKIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNv
bGUpOwotdHJ5IHsKLSAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2
aWRlbycpWzBdOwotICAgIGlmICh2aWRlbykKLSAgICAgICAgbWVkaWEgPSB2aWRlbzsKLX0gY2F0
Y2ggKGV4KSB7IH0KK2ZpbmRNZWRpYUVsZW1lbnQoKTsKKworZnVuY3Rpb24gZmluZE1lZGlhRWxl
bWVudCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICAgICAgaWYgKHZpZGVvKQorICAgICAgICAgICAg
bWVkaWEgPSB2aWRlbzsKKyAgICB9IGNhdGNoIChleCkgeyB9Cit9CiAKIGZ1bmN0aW9uIGhhbmdl
ZCgpCiB7CkBAIC00Nyw5ICs1MywxMSBAQCBmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNT
dHJpbmcsIGV4CiAgICAgdmFyIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBzd2l0Y2ggKGNvbXBhcmlz
b24pCiAgICAgewotICAgICAgICBjYXNlICc8JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA8ICBleHBl
Y3RlZDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz4nOiAgc3VjY2VzcyA9IG9ic2VydmVkID4gIGV4
cGVjdGVkOyBicmVhazsKLSAgICAgICAgY2FzZSAnIT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgIT0g
ZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc8JzogICBzdWNjZXNzID0gb2JzZXJ2ZWQg
PCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZl
ZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz4nOiAgIHN1Y2Nlc3MgPSBvYnNl
cnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz49Jzogc3VjY2VzcyA9IG9i
c2VydmVkID49IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnIT0nOiAgc3VjY2VzcyA9
IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVhazsKICAgICAgICAgY2FzZSAnPT0nOiBzdWNjZXNz
ID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOwogICAgIH0KICAgICAKQEAgLTkzLDcgKzEw
MSw3IEBAIGZ1bmN0aW9uIHdhaXRGb3JFdmVudChldmVudE5hbWUsIGZ1bmMsIGUKICAgICAgICAg
ICAgIGVuZFRlc3QoKTsgICAgCiAgICAgfQogCi0gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsgICAgCisgICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsKIH0KIAogZnVuY3Rpb24gd2FpdEZvckV2ZW50
VGVzdEFuZEVuZChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQpAQCAtMTUwLDYgKzE1OCwxMyBA
QCBmdW5jdGlvbiBmYWlsVGVzdEluKG1zKQogICAgIH0sIG1zKTsKIH0KIAorZnVuY3Rpb24gZmFp
bFRlc3QodGV4dCkKK3sKKyAgICBsb2dSZXN1bHQoZmFzbGUsIHRleHQpOworICAgIGVuZFRlc3Qo
KTsKK30KKworCiBmdW5jdGlvbiBsb2dSZXN1bHQoc3VjY2VzcywgdGV4dCkKIHsKICAgICBpZiAo
c3VjY2VzcykKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRpbWV1cGRhdGUtZHVyaW5n
LXBsYXliYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby10aW1ldXBkYXRlLWR1cmluZy1wbGF5YmFjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10aW1ldXBkYXRlLWR1cmluZy1wbGF5YmFjay1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3QgJ3RpbWV1cGRh
dGUnIGV2ZW50cyBhcmUgcG9zdGVkIHdoaWxlIHBsYXlpbmcgYnV0IG5vdCB3aGlsZSBwYXVzZWQu
CisKK1JVTih2aWRlby5wbGF5KCkpCisKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGR1cmF0aW9u
Y2hhbmdlKQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQo
Y2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQocGxheWluZykKKworUlVOKHZp
ZGVvLnBhdXNlKCkpCitFVkVOVChwYXVzZSkKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0ZS1kdXJpbmctcGxheWJhY2suaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10aW1ldXBkYXRlLWR1cmluZy1wbGF5YmFj
ay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGltZXVwZGF0
ZS1kdXJpbmctcGxheWJhY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorPGh0
bWw+Cis8Ym9keT4KKyAgICAKKyAgICA8dmlkZW8gc3JjPWNvbnRlbnQvdGVzdC5tcDQgY29udHJv
bHM+PC92aWRlbz4KKworICAgIDxwPgorICAgIFRlc3QgJ3RpbWV1cGRhdGUnIGV2ZW50cyBhcmUg
cG9zdGVkIHdoaWxlIHBsYXlpbmcgYnV0IG5vdCB3aGlsZSBwYXVzZWQuCisgICAgPC9wCisgICAg
PHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIAor
ICAgICAgICB2YXIgdGltZXVwZGF0ZUV2ZW50Q291bnQgPSAwOworICAgICAgICB2YXIgY291bnRX
aGlsZVBsYXlpbmcgPSAwOworCisgICAgICAgIGZ1bmN0aW9uIHNvbWVUaW1lTGF0ZXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoY291bnRXaGlsZVBsYXlpbmcgIT0gdGltZXVwZGF0ZUV2
ZW50Q291bnQpCisgICAgICAgICAgICAgICAgZmFpbFRlc3QoIid0aW1ldXBkYXRlJyBldmVudHMg
cG9zdGVkIGFmdGVyIHBhdXNpbmciKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHBhdXNlKCkKKyAgICAgICAgeworICAgICAgICAgICAgY291
bnRXaGlsZVBsYXlpbmcgPSB0aW1ldXBkYXRlRXZlbnRDb3VudDsKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoc29tZVRpbWVMYXRlciwgNDAwKSA7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBwbGF5aW5nKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJ1bigidmlkZW8ucGF1
c2UoKSIpOyB9LCA1MDApIDsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
IH0KKworICAgICAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCJ0aW1ldXBkYXRlIiwgZnVuY3Rp
b24gKCkgeyArK3RpbWV1cGRhdGVFdmVudENvdW50OyB9KTsKKworICAgICAgICB3YWl0Rm9yRXZl
bnQoJ2Vycm9yJyk7CisgICAgICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgICAg
IHdhaXRGb3JFdmVudCgicmF0ZWNoYW5nZSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoIndhaXRp
bmciKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJyYXRlY2hhbmdlIik7CisgICAgICAgIHdhaXRG
b3JFdmVudCgiZHVyYXRpb25jaGFuZ2UiKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRt
ZXRhZGF0YSIpOworICAgICAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGRhdGEiKTsKKyAgICAgICAg
d2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgiY2FucGxheXRo
cm91Z2giKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCJwYXVzZSIsIHBhdXNlKTsKKyAgICAgICAg
d2FpdEZvckV2ZW50KCJwbGF5Iik7CisgICAgICAgIHdhaXRGb3JFdmVudCgicGxheWluZyIsIHBs
YXlpbmcpOworCisgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="14208"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>