<?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>136991</bug_id>
          
          <creation_ts>2014-09-21 18:45:19 -0700</creation_ts>
          <short_desc>Update HTMLMediaElement logging</short_desc>
          <delta_ts>2014-09-22 08:51:35 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036409</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-09-21 18:45:19 -0700</bug_when>
    <thetext>Some of the logging in HTMLMediaElement does not log &apos;this&apos;, making it difficult to use when a page has multiple media elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036410</commentid>
    <comment_count>1</comment_count>
      <attachid>238443</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-09-21 18:52:10 -0700</bug_when>
    <thetext>Created attachment 238443
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036412</commentid>
    <comment_count>2</comment_count>
      <attachid>238443</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-21 18:57:16 -0700</bug_when>
    <thetext>Comment on attachment 238443
Proposed patch.

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:673
&gt; +    LOG(Media, &quot;HTMLMediaElement::removedFrom(%p)&quot;, this);

I&apos;d log this as HTMLMediaElement %p removedFrom&quot;, to make it clear that it&apos;s not an argument. Ditto elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036534</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-09-22 08:14:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 238443 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238443&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:673
&gt; &gt; +    LOG(Media, &quot;HTMLMediaElement::removedFrom(%p)&quot;, this);
&gt; 
&gt; I&apos;d log this as HTMLMediaElement %p removedFrom&quot;, to make it clear that it&apos;s not an argument. Ditto elsewhere.

All &quot;Media&quot; logging uses this pattern. I don&apos;t think there is much danger of it being mistaken for an argument because only &apos;this&apos; is in parenthesis, so I will leave it as is for now at least.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036540</commentid>
    <comment_count>4</comment_count>
      <attachid>238443</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-22 08:51:33 -0700</bug_when>
    <thetext>Comment on attachment 238443
Proposed patch.

Clearing flags on attachment: 238443

Committed r173838: &lt;http://trac.webkit.org/changeset/173838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036541</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-22 08:51:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238443</attachid>
            <date>2014-09-21 18:52:10 -0700</date>
            <delta_ts>2014-09-22 08:51:32 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>45649</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzgwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA5LTIxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBIVE1MTWVk
aWFFbGVtZW50IGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNjk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgb25seSBsb2dnaW5nIHdhcyBjaGFuZ2VkLgorCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorCiAyMDE0LTA5LTIxICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcG9zdC1tb3J0ZW0gbml0cyBm
b3IgcjE3MzcyNApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNzM3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgSFRNTE1lZGlhRWxlbWVu
dDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogICAgICwgbV9tZWRpYVN0cmVhbVNyY09iamVjdChu
dWxscHRyKQogI2VuZGlmCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoJXApIiwgdGhpcyk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2Fs
bGJhY2tzKCk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihI
VE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKQEAgLTM2
OSw3ICszNjksNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAK
IEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKIHsKLSAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCIpOworICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCVwKSIsIHRoaXMpOwogCiAgICAg
bV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKIApAQCAtNjQ1LDcgKzY0NSw3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGUKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvKCVwKSIsIHRoaXMpOwogCiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNl
cnRpb25Qb2ludCk7CiAgICAgaWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSkgewpAQCAt
NjcwLDcgKzY3MCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNl
cnRpb25Qb2ludCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVk
RnJvbSIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tKCVw
KSIsIHRoaXMpOwogCiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7CiAgICAgaWYgKGlu
c2VydGlvblBvaW50LmluRG9jdW1lbnQoKSkgewpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZURlbGF5ZWRBY3Rpb24oRGVsYXllZEFjdGlvblR5cGUgYWN0aW9uVHlwZSkKIHsK
LSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQiKTsKKyAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoJXApIiwgdGhpcyk7CiAK
ICAgICBpZiAoKGFjdGlvblR5cGUgJiBMb2FkTWVkaWFSZXNvdXJjZSkgJiYgIShtX3BlbmRpbmdB
Y3Rpb25GbGFncyAmIExvYWRNZWRpYVJlc291cmNlKSkgewogICAgICAgICBwcmVwYXJlRm9yTG9h
ZCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVO
ZXh0U291cmMKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKICNpZiBMT0dfTUVESUFfRVZFTlRTCi0gICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCAtIHNjaGVkdWxpbmcgJyVzJyIs
IGV2ZW50TmFtZS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCglcCkgLSBzY2hlZHVsaW5nICclcyciLCB0aGlz
LCBldmVudE5hbWUuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgCkBAIC04MzgsNyArODM4LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlU
eXBlKGNvbgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKCVzLCAlcywgJXMpIC0+ICVzIiwgbWltZVR5
cGUudXRmOCgpLmRhdGEoKSwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpLCBjYW5QbGF5LnV0ZjgoKS5kYXRh
KCkpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKCVwKSAt
IFslcywgJXMsICVzXSAtPiAlcyIsIHRoaXMsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIGtleVN5
c3RlbS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCku
dXRmOCgpLmRhdGEoKSwgY2FuUGxheS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBjYW5Q
bGF5OwogfQpAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgp
CiB7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBsb2FkSW50
ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVudCwgd2hpY2ggY2FuIG1ha2Ug
YXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAgICAgCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6bG9hZCgpIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZCglcCkiLCB0aGlzKTsKICAgICAKICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5kYXRhTG9hZGlu
Z1Blcm1pdHRlZCgqdGhpcykpCiAgICAgICAgIHJldHVybjsKQEAgLTg2MSw3ICs4NjEsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBy
ZXBhcmVGb3JMb2FkKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwcmVw
YXJlRm9yTG9hZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVG
b3JMb2FkKCVwKSIsIHRoaXMpOwogCiAgICAgLy8gUGVyZm9ybSB0aGUgY2xlYW51cCByZXF1aXJl
ZCBmb3IgdGhlIHJlc291cmNlIGxvYWQgYWxnb3JpdGhtIHRvIHJ1bi4KICAgICBzdG9wUGVyaW9k
aWNUaW1lcnMoKTsKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bG9hZEludGVybmFsKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291
cmNlKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJl
c291cmNlIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFS
ZXNvdXJjZSglcCkiLCB0aGlzKTsKIAogICAgIGVudW0gTW9kZSB7IGF0dHJpYnV0ZSwgY2hpbGRy
ZW4gfTsKIApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3RNZWRpYVJlc291cgogICAgICAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2Up
OwogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOwogCi0gICAgICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBu
b3RoaW5nIHRvIGxvYWQiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoJXApIC0gbm90aGluZyB0byBsb2FkIiwgdGhpcyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDY3LDcgKzEwNjcsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyCiAgICAgICAgIFVSTCBt
ZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBpZiAo
bWVkaWFVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVk
aWFQbGF5ZXI6OkZvcm1hdEVycm9yKTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UsIGVtcHR5ICdzcmMnIik7CisgICAgICAgICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCVwKSAt
ICBlbXB0eSAnc3JjJyIsIHRoaXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTEwODEsNyArMTA4MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFS
ZXNvdXIKICAgICAgICAgLy8gd2lsbCBoYXZlIHRvIHBpY2sgYSBtZWRpYSBlbmdpbmUgYmFzZWQg
b24gdGhlIGZpbGUgZXh0ZW5zaW9uLgogICAgICAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZSgo
U3RyaW5nKCkpKTsKICAgICAgICAgbG9hZFJlc291cmNlKG1lZGlhVVJMLCBjb250ZW50VHlwZSwg
U3RyaW5nKCkpOwotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RN
ZWRpYVJlc291cmNlLCB1c2luZyAnc3JjJyBhdHRyaWJ1dGUgdXJsIik7CisgICAgICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoJXApIC0gdXNpbmcg
J3NyYycgYXR0cmlidXRlIHVybCIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMTI5LDcgKzExMjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShj
b25zCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0aWFsVVJMLCBDb21wbGFpbikp
OwogCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKCVzLCAl
cywgJXMpIiwgdXJsRm9yTG9nZ2luZ01lZGlhKGluaXRpYWxVUkwpLnV0ZjgoKS5kYXRhKCksIGNv
bnRlbnRUeXBlLnJhdygpLnV0ZjgoKS5kYXRhKCksIGtleVN5c3RlbS51dGY4KCkuZGF0YSgpKTsK
KyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoJXApIC0gJXMs
ICVzLCAlcyIsIHRoaXMsIHVybEZvckxvZ2dpbmdNZWRpYShpbml0aWFsVVJMKS51dGY4KCkuZGF0
YSgpLCBjb250ZW50VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRmOCgpLmRh
dGEoKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkgewpAQCAtMTE2NSwxMCArMTE2NSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRSZXNvdXJjZShjb25zCiAKICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgdXJsID0g
Y3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShyZXNvdXJjZS0+cGF0aCgp
KTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlIC0g
d2lsbCBsb2FkIGZyb20gYXBwIGNhY2hlIC0+ICVzIiwgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Omxv
YWRSZXNvdXJjZSglcCkgLSB3aWxsIGxvYWQgZnJvbSBhcHAgY2FjaGUgLT4gJXMiLCB0aGlzLCB1
cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKLSAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UgLSBtX2N1cnJlbnRTcmMgLT4g
JXMiLCB1cmxGb3JMb2dnaW5nTWVkaWEobV9jdXJyZW50U3JjKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoJXApIC0gbV9jdXJy
ZW50U3JjIC0+ICVzIiwgdGhpcywgdXJsRm9yTG9nZ2luZ01lZGlhKG1fY3VycmVudFNyYykudXRm
OCgpLmRhdGEoKSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChNZWRpYVN0
cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLmxvb2t1cCh1cmwuc3RyaW5nKCkpKQpAQCAtMTI2Nyw3
ICsxMjY3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VAogICAg
IGlmIChpZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tzIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrcyglcCkiLCB0aGlzKTsKIAogICAgIC8vIDEgLSBMZXQgY3VycmVudCBjdWVzIGJlIGEg
bGlzdCBvZiBjdWVzLCBpbml0aWFsaXplZCB0byBjb250YWluIGFsbCB0aGUKICAgICAvLyBjdWVz
IG9mIGFsbCB0aGUgaGlkZGVuLCBzaG93aW5nLCBvciBzaG93aW5nIGJ5IGRlZmF1bHQgdGV4dCB0
cmFja3Mgb2YgdGhlCkBAIC0xNjcyLDcgKzE2NzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja1JlbW92ZUN1CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVS
TChjb25zdCBVUkwmIHVybCwgSW52YWxpZFVSTEFjdGlvbiBhY3Rpb25JZkludmFsaWQpCiB7CiAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykgLT4gRkFMU0UgYmVjYXVzZSB1cmwgaXMgaW52YWxp
ZCIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXApIC0gJXMgLT4gRkFM
U0UgYmVjYXVzZSB1cmwgaXMgaW52YWxpZCIsIHRoaXMsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNjgw
LDEyICsxNjgwLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGMK
ICAgICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3Bs
YXkodXJsKSkgewogICAgICAgICBpZiAoYWN0aW9uSWZJbnZhbGlkID09IENvbXBsYWluKQogICAg
ICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKCVzKSAtPiBGQUxTRSByZWplY3RlZCBieSBT
ZWN1cml0eU9yaWdpbiIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXAp
IC0gJXMgLT4gRkFMU0UgcmVqZWN0ZWQgYnkgU2VjdXJpdHlPcmlnaW4iLCB0aGlzLCB1cmxGb3JM
b2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dNZWRpYUZyb21Tb3VyY2UodXJsKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IHJlamVjdGVkIGJ5IENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IiwgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcCkgLSAl
cyAtPiByZWplY3RlZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSIsIHRoaXMsIHVybEZvckxv
Z2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0xNzA0LDcgKzE3MDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0
UHJvZ3Jlc3NFdmVuCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclNvdXJjZUNoYW5n
ZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclNvdXJjZUNo
YW5nZSIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JTb3VyY2VD
aGFuZ2UoJXApIiwgdGhpcyk7CiAKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKICAgICBtX2xv
YWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBAIC0xNzIzLDcgKzE3MjMsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JTb3VyY2VDaGFuCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bm9uZVN1cHBvcnRlZCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
bm9uZVN1cHBvcnRlZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVT
dXBwb3J0ZWQoJXApIiwgdGhpcyk7CiAKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKICAgICBt
X2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBAIC0xNzY0LDcgKzE3NjQsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBwb3J0ZWQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBl
cnJvcikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdG
YWlsZWRGYXRhbGx5KCVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IpKTsKKyAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KCVwKSAtIGVy
cm9yID0gJWQiLCB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yKSk7CiAKICAgICAvLyAxIC0g
VGhlIHVzZXIgYWdlbnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0Y2hpbmcgcHJvY2Vzcy4KICAgICBz
dG9wUGVyaW9kaWNUaW1lcnMoKTsKQEAgLTE4MDUsNyArMTgwNSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGUKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYW5j
ZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzIik7CisgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENhbGxiYWNrcygl
cCkiLCB0aGlzKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsKIAog
ICAgIGZvciAoYXV0byYgc291cmNlIDogY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+
KCp0aGlzKSkKQEAgLTE4NjksNyArMTg2OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFMb2FkaW5nRmFpbGUKICAgICAgICAgaWYgKG1fY3VycmVudFNvdXJjZU5vZGUpCiAgICAgICAg
ICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlLT5zY2hlZHVsZUVycm9yRXZlbnQoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29y
a1N0YXRlIC0gZXJyb3IgZXZlbnQgbm90IHNlbnQsIDxzb3VyY2U+IHdhcyByZW1vdmVkIik7Cisg
ICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUo
JXApIC0gZXJyb3IgZXZlbnQgbm90IHNlbnQsIDxzb3VyY2U+IHdhcyByZW1vdmVkIiwgdGhpcyk7
CiAgICAgICAgIAogICAgICAgICAvLyA5Lk90aGVyd2lzZS4xMCAtIEFzeW5jaHJvbm91c2x5IGF3
YWl0IGEgc3RhYmxlIHN0YXRlLiBUaGUgc3luY2hyb25vdXMgc2VjdGlvbiBjb25zaXN0cyBvZiBh
bGwgdGhlIHJlbWFpbmluZyBzdGVwcyBvZiB0aGlzIGFsZ29yaXRobSB1bnRpbCB0aGUgYWxnb3Jp
dGhtIHNheXMgdGhlIHN5bmNocm9ub3VzIHNlY3Rpb24gaGFzIGVuZGVkLgogICAgICAgICAKQEAg
LTE4NzcsMTAgKzE4NzcsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdG
YWlsZQogICAgICAgICBmb3JnZXRSZXNvdXJjZVNwZWNpZmljVHJhY2tzKCk7CiAKICAgICAgICAg
aWYgKGhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUgLSBzY2hlZHVsaW5nIG5leHQgPHNv
dXJjZT4iKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldE5l
dHdvcmtTdGF0ZSglcCkgLSBzY2hlZHVsaW5nIG5leHQgPHNvdXJjZT4iLCB0aGlzKTsKICAgICAg
ICAgICAgIHNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUgLSBu
byBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzLCB3YWl0aW5nIik7CisgICAgICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3JrU3RhdGUoJXApIC0gbm8gbW9yZSA8c291
cmNlPiBlbGVtZW50cywgd2FpdGluZyIsIHRoaXMpOwogICAgICAgICAgICAgd2FpdEZvclNvdXJj
ZUNoYW5nZSgpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTkwMyw3ICsxOTAzLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIHN0YXRlKQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZSglZCkg
LSBjdXJyZW50IHN0YXRlIGlzICVkIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSksIHN0YXRpY19j
YXN0PGludD4obV9uZXR3b3JrU3RhdGUpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZXROZXR3b3JrU3RhdGUoJXApIC0gbmV3IHN0YXRlID0gJWQsIGN1cnJlbnQgc3RhdGUg
PSAlZCIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4oc3RhdGUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
bmV0d29ya1N0YXRlKSk7CiAKICAgICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkVtcHR5KSB7
CiAgICAgICAgIC8vIEp1c3QgdXBkYXRlIHRoZSBjYWNoZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBj
YW4ndCBkbyBhbnl0aGluZy4KQEAgLTE5NjUsNyArMTk2NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJSZWFkeVMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogewotICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoJWQpIC0gY3VycmVudCBzdGF0ZSBpcyAl
ZCwiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSwgc3RhdGljX2Nhc3Q8aW50PihtX3JlYWR5U3Rh
dGUpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKCVw
KSAtIG5ldyBzdGF0ZSA9ICVkLCBjdXJyZW50IHN0YXRlID0gJWQsIiwgdGhpcywgc3RhdGljX2Nh
c3Q8aW50PihzdGF0ZSksIHN0YXRpY19jYXN0PGludD4obV9yZWFkeVN0YXRlKSk7CiAKICAgICAv
LyBTZXQgIndhc1BvdGVudGlhbGx5UGxheWluZyIgQkVGT1JFIHVwZGF0aW5nIG1fcmVhZHlTdGF0
ZSwgcG90ZW50aWFsbHlQbGF5aW5nKCkgdXNlcyBpdAogICAgIGJvb2wgd2FzUG90ZW50aWFsbHlQ
bGF5aW5nID0gcG90ZW50aWFsbHlQbGF5aW5nKCk7CkBAIC0yMjMzLDE5ICsyMjMzLDE5IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWUKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZXdpbmQoZG91YmxlIHRpbWVEZWx0YSkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpyZXdpbmQoJWYpIiwgdGltZURlbHRhKTsKKyAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpyZXdpbmQoJXApIC0gJWYiLCB0aGlzLCB0aW1lRGVsdGEpOwogICAg
IHNldEN1cnJlbnRUaW1lKHN0ZDo6bWF4KGN1cnJlbnRNZWRpYVRpbWUoKSAtIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZSh0aW1lRGVsdGEpLCBtaW5UaW1lU2Vla2FibGUoKSkpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJldHVyblRvUmVhbHRpbWUoKQogewotICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJldHVyblRvUmVhbHRpbWUiKTsKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpyZXR1cm5Ub1JlYWx0aW1lKCVwKSIsIHRoaXMpOwogICAgIHNl
dEN1cnJlbnRUaW1lKG1heFRpbWVTZWVrYWJsZSgpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjphZGRQbGF5ZWRSYW5nZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjphZGRQbGF5ZWRS
YW5nZSglcywgJXMpIiwgdG9TdHJpbmcoc3RhcnQpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGVu
ZCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6YWRk
UGxheWVkUmFuZ2UoJXApIC0gWyVzLCAlc10iLCB0aGlzLCB0b1N0cmluZyhzdGFydCkudXRmOCgp
LmRhdGEoKSwgdG9TdHJpbmcoZW5kKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIW1fcGxheWVk
VGltZVJhbmdlcykKICAgICAgICAgbV9wbGF5ZWRUaW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3Jl
YXRlKCk7CiAgICAgbV9wbGF5ZWRUaW1lUmFuZ2VzLT5yYW5nZXMoKS5hZGQoc3RhcnQsIGVuZCk7
CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKGRv
dWJsZSB0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmFzdFNlZWsoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKCVz
KSIsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OmZhc3RTZWVrKCVwKSAtICVzIiwgdGhpcywgdG9TdHJpbmcodGltZSkudXRm
OCgpLmRhdGEoKSk7CiAgICAgLy8gNC43LjEwLjkgU2Vla2luZwogICAgIC8vIDkuIElmIHRoZSBh
cHByb3hpbWF0ZS1mb3Itc3BlZWQgZmxhZyBpcyBzZXQsIGFkanVzdCB0aGUgbmV3IHBsYXliYWNr
IHBvc2l0aW9uIHRvIGEgdmFsdWUgdGhhdCB3aWxsCiAgICAgLy8gYWxsb3cgZm9yIHBsYXliYWNr
IHRvIHJlc3VtZSBwcm9tcHRseS4gSWYgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGJlZm9yZSB0aGlz
IHN0ZXAgaXMgYmVmb3JlIGN1cnJlbnQKQEAgLTIyOTQsMTMgKzIyOTQsMTMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpmYXN0U2Vlayhjb25zdCBNZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlZWsoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNlZWsoJXMpIiwgdG9TdHJpbmcodGltZSkudXRmOCgpLmRhdGEoKSk7CisgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VlayglcCkgLSAlcyIsIHRoaXMsIHRvU3Ry
aW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHNlZWtXaXRoVG9sZXJhbmNlKHRpbWUsIE1l
ZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCB0cnVlKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrSW50ZXJuYWwoY29uc3QgTWVkaWFUaW1lJiB0aW1l
KQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtJbnRlcm5hbCglcyki
LCB0b1N0cmluZyh0aW1lKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpzZWVrSW50ZXJuYWwoJXApIC0gJXMiLCB0aGlzLCB0b1N0cmluZyh0aW1lKS51
dGY4KCkuZGF0YSgpKTsKICAgICBzZWVrV2l0aFRvbGVyYW5jZSh0aW1lLCBNZWRpYVRpbWU6Onpl
cm9UaW1lKCksIE1lZGlhVGltZTo6emVyb1RpbWUoKSwgZmFsc2UpOwogfQogCkBAIC0yMzgwLDcg
KzIzODAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpCiAjaWYg
IUxPR19ESVNBQkxFRAogICAgIE1lZGlhVGltZSBtZWRpYVRpbWUgPSBtX3BsYXllci0+bWVkaWFU
aW1lRm9yVGltZVZhbHVlKHRpbWUpOwogICAgIGlmICh0aW1lICE9IG1lZGlhVGltZSkKLSAgICAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoJXMpIC0gbWVk
aWEgdGltZWxpbmUgZXF1aXZhbGVudCBpcyAlcyIsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRh
KCksIHRvU3RyaW5nKG1lZGlhVGltZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKCVwKSAtICVzIC0gbWVkaWEgdGlt
ZWxpbmUgZXF1aXZhbGVudCBpcyAlcyIsIHRoaXMsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRh
KCksIHRvU3RyaW5nKG1lZGlhVGltZSkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICB0aW1l
ID0gbV9wbGF5ZXItPm1lZGlhVGltZUZvclRpbWVWYWx1ZSh0aW1lKTsKIApAQCAtMjQyOSw3ICsy
NDI5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGltZXJGaXJlZChUaQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFNlZWsoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaFNlZWsiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpmaW5pc2hTZWVrKCVwKSIsIHRoaXMpOwogCiAgICAgLy8gNC44LjEwLjkgU2Vla2luZwog
ICAgIC8vIDE0IC0gU2V0IHRoZSBzZWVraW5nIElETCBhdHRyaWJ1dGUgdG8gZmFsc2UuCkBAIC0y
NDg3LDcgKzI0ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRU
CiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2NhY2hlZFRpbWUuaXNWYWxpZCgpKQot
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkVGlt
ZSIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2Fj
aGVkVGltZSglcCkiLCB0aGlzKTsKICNlbmRpZgogCiAgICAgLy8gRG9uJ3QgdHJ5IHRvIGNhY2hl
IG1vdmllIHRpbWUgd2hlbiBwbGF5YmFjayBmaXJzdCBzdGFydHMgYXMgdGhlIHRpbWUgcmVwb3J0
ZWQgYnkgdGhlIGVuZ2luZQpAQCAtMjUxNSw3ICsyNTE1LDcgQEAgTWVkaWFUaW1lIEhUTUxNZWRp
YUVsZW1lbnQ6OmN1cnJlbnRNZWRpYQogICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpOwogCiAgICAgaWYgKG1fc2Vla2luZykgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpjdXJyZW50VGltZSAtIHNlZWtpbmcsIHJldHVybmluZyAlcyIsIHRvU3RyaW5n
KG1fbGFzdFNlZWtUaW1lKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUoJXApIC0gc2Vla2luZywgcmV0dXJuaW5nICVzIiwg
dGhpcywgdG9TdHJpbmcobV9sYXN0U2Vla1RpbWUpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gbV9sYXN0U2Vla1RpbWU7CiAgICAgfQogCkBAIC0yNTIzLDcgKzI1MjMsNyBAQCBNZWRp
YVRpbWUgSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudE1lZGlhCiAjaWYgTE9HX0NBQ0hFRF9USU1F
X1dBUk5JTkdTCiAgICAgICAgIE1lZGlhVGltZSBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxh
eWVyLT5jdXJyZW50VGltZSgpOwogICAgICAgICBpZiAoZGVsdGEgPiBtaW5DYWNoZWREZWx0YUZv
cldhcm5pbmcpCi0gICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJy
ZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0aW1lIGlzICVzIHNlY29uZHMgb2ZmIG9mIG1lZGlh
IHRpbWUgd2hlbiBwYXVzZWQiLCB0b1N0cmluZyhkZWx0YSkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSglcCkgLSBX
QVJOSU5HLCBjYWNoZWQgdGltZSBpcyAlcyBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4g
cGF1c2VkIiwgdGhpcywgdG9TdHJpbmcoZGVsdGEpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAg
ICAgICAgIHJldHVybiBtX2NhY2hlZFRpbWU7CiAgICAgfQpAQCAtMjU0Miw3ICsyNTQyLDcgQEAg
TWVkaWFUaW1lIEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRNZWRpYQogI2lmIExPR19DQUNIRURf
VElNRV9XQVJOSU5HUwogICAgICAgICAgICAgTWVkaWFUaW1lIGRlbHRhID0gYWRqdXN0ZWRDYWNo
ZVRpbWUgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgIGlmIChkZWx0YSA+
IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKLSAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIFdBUk5JTkcsIGNhY2hlZCB0aW1lIGlzICVm
IHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwbGF5aW5nIiwgZGVsdGEpOworICAgICAg
ICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKCVwKSAt
IFdBUk5JTkcsIGNhY2hlZCB0aW1lIGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hl
biBwbGF5aW5nIiwgdGhpcywgZGVsdGEpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gYWRq
dXN0ZWRDYWNoZVRpbWU7CiAgICAgICAgIH0KQEAgLTI1NTIsNyArMjU1Miw3IEBAIE1lZGlhVGlt
ZSBIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50TWVkaWEKICAgICBpZiAobWF4aW11bUR1cmF0aW9u
VG9DYWNoZU1lZGlhVGltZSAmJiBub3cgPiBtX21pbmltdW1DbG9ja1RpbWVUb1VwZGF0ZUNhY2hl
ZFRpbWUgJiYgbV9jYWNoZWRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CiAg
ICAgICAgIGRvdWJsZSBjbG9ja0RlbHRhID0gbm93IC0gbV9jbG9ja1RpbWVBdExhc3RDYWNoZWRU
aW1lVXBkYXRlOwogICAgICAgICBNZWRpYVRpbWUgZGVsdGEgPSBtX2NhY2hlZFRpbWUgKyBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZWZmZWN0aXZlUGxheWJhY2tSYXRlKCkgKiBjbG9ja0Rl
bHRhKSAtIG1fcGxheWVyLT5jdXJyZW50VGltZSgpOwotICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIGNhY2hlZCB0aW1lIHdhcyAlcyBzZWNvbmRzIG9m
ZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhwaXJlZCIsIHRvU3RyaW5nKGRlbHRhKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRp
bWUoJXApIC0gY2FjaGVkIHRpbWUgd2FzICVzIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hl
biBpdCBleHBpcmVkIiwgdGhpcywgdG9TdHJpbmcoZGVsdGEpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0KICNlbmRpZgogCkBAIC0yNjM5LDcgKzI2MzksNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVu
dDo6cGxheWJhY2tSYXRlKCkgCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tS
YXRlKGRvdWJsZSByYXRlKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFBsYXliYWNrUmF0ZSglZikiLCByYXRlKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZXRQbGF5YmFja1JhdGUoJXApIC0gJWYiLCB0aGlzLCByYXRlKTsKIAogICAgIGlmICht
X3BsYXllciAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiBtX3BsYXllci0+cmF0ZSgpICE9IHJh
dGUgJiYgIW1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX3BsYXllci0+c2V0UmF0ZShyYXRl
KTsKQEAgLTI2NjUsNyArMjY2NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0UHJl
c2VydmVzUGkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRXZWJraXRQcmVzZXJ2ZXNQaXRj
aChib29sIHByZXNlcnZlc1BpdGNoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnNldFdlYmtpdFByZXNlcnZlc1BpdGNoKCVzKSIsIGJvb2xTdHJpbmcocHJlc2VydmVzUGl0
Y2gpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRXZWJraXRQcmVzZXJ2
ZXNQaXRjaCglcCkgLSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcocHJlc2VydmVzUGl0Y2gpKTsKIAog
ICAgIG1fd2Via2l0UHJlc2VydmVzUGl0Y2ggPSBwcmVzZXJ2ZXNQaXRjaDsKICAgICAKQEAgLTI3
MTUsMTMgKzI3MTUsMTMgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OnByZWxvYWQoKSBjb25z
dAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZWxvYWQoY29uc3QgU3RyaW5nJiBwcmVs
b2FkKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZWxvYWQoJXMp
IiwgcHJlbG9hZC51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZXRQcmVsb2FkKCVwKSAtICVzIiwgdGhpcywgcHJlbG9hZC51dGY4KCkuZGF0YSgpKTsK
ICAgICBzZXRBdHRyaWJ1dGUocHJlbG9hZEF0dHIsIHByZWxvYWQpOwogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXkoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXkoKSIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoJXApIiwg
dGhpcyk7CiAKICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhp
cykpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MzMsNyArMjczMyw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkK
IHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwiKTsKKyAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoJXApIiwgdGhpcyk7
CiAgICAgCiAgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2so
KSkgewogICAgICAgICBMT0coTWVkaWEsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVw
dGlvbiIpOwpAQCAtMjc2Nyw3ICsyNzY3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5
SW50ZXJuYWwoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlKCkKIHsKLSAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpIik7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6cGF1c2UoJXApIiwgdGhpcyk7CiAKICAgICBpZiAoIW1fbWVkaWFTZXNz
aW9uLT5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Nzgs
NyArMjc3OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2UoKQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpwYXVzZUludGVybmFsKCVwKSIsIHRoaXMpOwogCiAgICAgaWYgKCFtX21lZGlhU2Vzc2lv
bi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKSkgewogICAgICAgICBMT0coTWVkaWEsICIgIHJl
dHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOwpAQCAtMjkyNiw3ICsyOTI2LDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojpsb29wKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRMb29wKGJvb2wgYikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZXRMb29wKCVzKSIsIGJvb2xTdHJpbmcoYikpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNldExvb3AoJXApIC0gJXMiLCB0aGlzLCBib29sU3RyaW5nKGIpKTsKICAgICBz
ZXRCb29sZWFuQXR0cmlidXRlKGxvb3BBdHRyLCBiKTsKIH0KIApAQCAtMjk1MSw3ICsyOTUxLDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9scygpIGNvbnN0CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0Q29udHJvbHMoYm9vbCBiKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xzKCVzKSIsIGJvb2xTdHJpbmcoYikpOworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xzKCVwKSAtICVzIiwgdGhpcywgYm9v
bFN0cmluZyhiKSk7CiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShjb250cm9sc0F0dHIsIGIpOwog
fQogCkBAIC0yOTYyLDcgKzI5NjIsNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6dm9sdW1l
KCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoZG91YmxlIHZvbCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
c2V0Vm9sdW1lKCVmKSIsIHZvbCk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
c2V0Vm9sdW1lKCVwKSAtICVmIiwgdGhpcywgdm9sKTsKIAogICAgIGlmICh2b2wgPCAwLjBmIHx8
IHZvbCA+IDEuMGYpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKQEAgLTI5ODYsNyAr
Mjk4Niw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bXV0ZWQoKSBjb25zdAogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoJXMpIiwgYm9vbFN0cmluZyhtdXRlZCkpOworICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKCVwKSAtICVzIiwgdGhpcywg
Ym9vbFN0cmluZyhtdXRlZCkpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFVOVVNFRF9QQVJB
TShtdXRlZCk7CkBAIC0zMDA5LDcgKzMwMDksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dE11dGVkKGJvb2wgbXV0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRl
KCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUg
LSBjYW5QbGF5KCkgaXMgJXMiLCBib29sU3RyaW5nKGNhblBsYXkoKSkpOworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0ZSglcCkgLSBjYW5QbGF5KCkgaXMg
JXMiLCB0aGlzLCBib29sU3RyaW5nKGNhblBsYXkoKSkpOwogCiAgICAgLy8gV2UgY2FuIHNhZmVs
eSBjYWxsIHRoZSBpbnRlcm5hbCBwbGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNr
IHJlc3RyaWN0aW9ucywgYmVjYXVzZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVk
IGZyb20gdGhlIGJ1aWx0LWluIG1lZGlhIGNvbnRyb2xsZXIKQEAgLTMwMjIsNyArMzAyMiw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpiZWdpblNjcnViYmluZygpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6YmVnaW5TY3J1YmJpbmcgLSBwYXVzZWQoKSBpcyAlcyIsIGJvb2xTdHJpbmcocGF1
c2VkKCkpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnViYmlu
ZyglcCkgLSBwYXVzZWQoKSBpcyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcocGF1c2VkKCkpKTsKIAog
ICAgIGlmICghcGF1c2VkKCkpIHsKICAgICAgICAgaWYgKGVuZGVkKCkpIHsKQEAgLTMwNDEsNyAr
MzA0MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuZFNjcnViYmluZygpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6ZW5kU2NydWJiaW5nIC0gbV9wYXVzZWRJbnRlcm5hbCBpcyAlcyIsIGJv
b2xTdHJpbmcobV9wYXVzZWRJbnRlcm5hbCkpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OmVuZFNjcnViYmluZyglcCkgLSBtX3BhdXNlZEludGVybmFsIGlzICVzIiwgdGhpcywg
Ym9vbFN0cmluZyhtX3BhdXNlZEludGVybmFsKSk7CiAKICAgICBpZiAobV9wYXVzZWRJbnRlcm5h
bCkKICAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwoZmFsc2UpOwpAQCAtMzUyMSw3ICszNTIxLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhYwogI2lmICFMT0dfRElT
QUJMRUQKICAgICBpZiAodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewogICAg
ICAgICBVUkwgdXJsID0gdHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNB
dHRyKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJh
Y2sgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUcmFjaygl
cCkgLSAnc3JjJyBpcyAlcyIsIHRoaXMsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNTQ5LDcgKzM1NDksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFjCiB7CiAgICAgQVNTRVJUKGdyb3VwLnRyYWNr
cy5zaXplKCkpOwogCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJl
VGV4dFRyYWNrR3JvdXAiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpjb25m
aWd1cmVUZXh0VHJhY2tHcm91cCglcCkiLCB0aGlzKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLnBhZ2UoKTsKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVy
ZW5jZXMgPSBwYWdlPyBwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpIDogMDsKQEAg
LTM1NzksNyArMzU3OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRy
YWMKICAgICAgICAgICAgIGN1cnJlbnRseUVuYWJsZWRUcmFja3MuYXBwZW5kKHRleHRUcmFjayk7
CiAKICAgICAgICAgaW50IHRyYWNrU2NvcmUgPSBjYXB0aW9uUHJlZmVyZW5jZXMgPyBjYXB0aW9u
UHJlZmVyZW5jZXMtPnRleHRUcmFja1NlbGVjdGlvblNjb3JlKHRleHRUcmFjay5nZXQoKSwgdGhp
cykgOiAwOwotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVU
ZXh0VHJhY2tHcm91cCAtICAnJXMnIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBoYXMgc2NvcmUg
JWkiLCB0ZXh0VHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0ZXh0VHJhY2st
Pmxhbmd1YWdlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTY29yZSk7CisgICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3VwKCVw
KSAtICAnJXMnIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBoYXMgc2NvcmUgJWkiLCB0aGlzLCB0
ZXh0VHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0ZXh0VHJhY2stPmxhbmd1
YWdlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTY29yZSk7CiAKICAgICAgICAgaWYg
KHRyYWNrU2NvcmUpIHsKIApAQCAtMzY4OCw3ICszNjg4LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb250cm9sbGVySlNWYWx1ZShKUwogICAgIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVDYXB0aW9uQ29udGFpbmVyKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lciglcCkiLCB0aGlzKTsKICNpZiBFTkFCTEUoTUVE
SUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCkBAIC0zODY0LDEzICszODY0LDEzIEBAIFVSTCBIVE1MTWVkaWFFbGVt
ZW50OjpzZWxlY3ROZXh0U291cmNlQ2gKICAgICAvLyBEb24ndCBsb2cgaWYgdGhpcyB3YXMganVz
dCBjYWxsZWQgdG8gZmluZCBvdXQgaWYgdGhlcmUgYXJlIGFueSB2YWxpZCA8c291cmNlPiBlbGVt
ZW50cy4KICAgICBib29sIHNob3VsZExvZyA9IGFjdGlvbklmSW52YWxpZCAhPSBEb05vdGhpbmc7
CiAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkIik7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkiLCB0aGlzKTsKICNlbmRpZgogCiAg
ICAgaWYgKCFtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyKSB7CiAjaWYgIUxPR19ESVNBQkxFRAog
ICAgICAgICBpZiAoc2hvdWxkTG9nKQotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkIC0+IDB4MDAwMCwgXCJcIiIpOworICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KCVwKSAtIGVuZCBvZiBsaXN0LCBzdG9wcGluZyIsIHRoaXMpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiBVUkwoKTsKICAgICB9CkBAIC0zOTAzLDcgKzM5MDMsNyBAQCBVUkwgSFRNTE1lZGlhRWxl
bWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoCiAgICAgICAgIG1lZGlhVVJMID0gc291cmNlLT5nZXRO
b25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAg
IGlmIChzaG91bGRMb2cpCi0gICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmdNZWRp
YShtZWRpYVVSTCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoJXApIC0gJ3NyYycgaXMgJXMiLCB0
aGlzLCB1cmxGb3JMb2dnaW5nTWVkaWEobWVkaWFVUkwpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlm
CiAgICAgICAgIGlmIChtZWRpYVVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBnb3RvIGNoZWNr
X2FnYWluOwpAQCAtMzkxMyw3ICszOTEzLDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE5leHRTb3VyY2VDaAogICAgICAgICAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhID0g
TWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChzb3VyY2UtPm1l
ZGlhKCkpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChzaG91bGRMb2cpCi0g
ICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNv
dXJjZUNoaWxkIC0gJ21lZGlhJyBpcyAlcyIsIHNvdXJjZS0+bWVkaWEoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RO
ZXh0U291cmNlQ2hpbGQoJXApIC0gJ21lZGlhJyBpcyAlcyIsIHRoaXMsIHNvdXJjZS0+bWVkaWEo
KS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKCFzY3JlZW5FdmFsLmV2
YWwobWVkaWEuZ2V0KCkpKSAKICAgICAgICAgICAgICAgICBnb3RvIGNoZWNrX2FnYWluOwpAQCAt
MzkyNiw3ICszOTI2LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VD
aAogICAgICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpIHx8ICFzeXN0ZW0uaXNFbXB0eSgpKSB7CiAj
aWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQg
LSAndHlwZScgaXMgJyVzJyAtIGtleSBzeXN0ZW0gaXMgJyVzJyIsIHR5cGUudXRmOCgpLmRhdGEo
KSwgc3lzdGVtLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkgLSAndHlwZScgaXMgJyVz
JyAtIGtleSBzeXN0ZW0gaXMgJyVzJyIsIHRoaXMsIHR5cGUudXRmOCgpLmRhdGEoKSwgc3lzdGVt
LnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBDb250ZW50VHlwZSBjb250ZW50VHlw
ZSh0eXBlKTsKQEAgLTM5NDgsNyArMzk0OCw3IEBAIFVSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3ROZXh0U291cmNlQ2gKIAogICAgICAgICAvLyBBICdiZWZvcmVsb2FkJyBldmVudCBoYW5kbGVy
IGNhbiBtdXRhdGUgdGhlIERPTSwgc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBzb3VyY2UgZWxlbWVu
dCBpcyBzdGlsbCBhIGNoaWxkIG5vZGUuCiAgICAgICAgIGlmIChub2RlLnBhcmVudE5vZGUoKSAh
PSB0aGlzKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3ROZXh0U291cmNlQ2hpbGQgOiAnYmVmb3JlbG9hZCcgcmVtb3ZlZCBjdXJyZW50IGVsZW1lbnQi
KTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRT
b3VyY2VDaGlsZCglcCkgLSAnYmVmb3JlbG9hZCcgcmVtb3ZlZCBjdXJyZW50IGVsZW1lbnQiLCB0
aGlzKTsKICAgICAgICAgICAgIHNvdXJjZSA9IDA7CiAgICAgICAgICAgICBnb3RvIGNoZWNrX2Fn
YWluOwogICAgICAgICB9CkBAIC0zOTc4LDE5ICszOTc4LDE5IEBAIGNoZWNrX2FnYWluOgogCiAj
aWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCAtPiAlcCwgJXMiLCBtX2N1
cnJlbnRTb3VyY2VOb2RlLmdldCgpLCBjYW5Vc2VTb3VyY2VFbGVtZW50ID8gdXJsRm9yTG9nZ2lu
Z01lZGlhKG1lZGlhVVJMKS51dGY4KCkuZGF0YSgpIDogIiIpOworICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoJXApIC0+ICVwLCAlcyIs
IHRoaXMsIG1fY3VycmVudFNvdXJjZU5vZGUuZ2V0KCksIGNhblVzZVNvdXJjZUVsZW1lbnQgPyB1
cmxGb3JMb2dnaW5nTWVkaWEobWVkaWFVUkwpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CiAjZW5kaWYK
ICAgICByZXR1cm4gY2FuVXNlU291cmNlRWxlbWVudCA/IG1lZGlhVVJMIDogVVJMKCk7CiB9CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoSFRNTFNvdXJjZUVsZW1lbnQq
IHNvdXJjZSkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNB
ZGRlZCglcCkiLCBzb3VyY2UpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNv
dXJjZVdhc0FkZGVkKCVwKSAtICVwIiwgdGhpcywgc291cmNlKTsKIAogI2lmICFMT0dfRElTQUJM
RUQKICAgICBpZiAoc291cmNlLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpIHsKICAgICAgICAgVVJM
IHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7Ci0gICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMg
JXMiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoJXApIC0gJ3NyYycgaXMg
JXMiLCB0aGlzLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9
CiAjZW5kaWYKICAgICAKQEAgLTQwMDgsNyArNDAwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c291cmNlV2FzQWRkZWQoSFQKICAgICB9CiAKICAgICBpZiAobV9jdXJyZW50U291cmNlTm9k
ZSAmJiBzb3VyY2UgPT0gbV9jdXJyZW50U291cmNlTm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCAtIDxzb3Vy
Y2U+IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIGN1cnJlbnQgc291cmNlIik7CisgICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKCVwKSAtIDxzb3Vy
Y2U+IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIGN1cnJlbnQgc291cmNlIiwgdGhpcyk7CiAg
ICAgICAgIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgPSBzb3VyY2U7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC00MDMzLDEyICs0MDMzLDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c291cmNlV2FzQWRkZWQoSFQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNSZW1v
dmVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZCglcCkiLCBzb3VyY2UpOworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc1JlbW92ZWQoJXApIC0gJXAiLCB0aGlzLCBz
b3VyY2UpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2UtPmhhc1RhZ05hbWUo
c291cmNlVGFnKSkgewogICAgICAgICBVUkwgdXJsID0gc291cmNlLT5nZXROb25FbXB0eVVSTEF0
dHJpYnV0ZShzcmNBdHRyKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
c291cmNlV2FzUmVtb3ZlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNv
dXJjZVdhc1JlbW92ZWQoJXApIC0gJ3NyYycgaXMgJXMiLCB0aGlzLCB1cmxGb3JMb2dnaW5nTWVk
aWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNDA0OCwxOSArNDA0
OCwxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc1JlbW92ZWQoCiAgICAgaWYg
KHNvdXJjZSA9PSBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyKSB7CiAgICAgICAgIGlmIChtX2N1
cnJlbnRTb3VyY2VOb2RlKQogICAgICAgICAgICAgbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlciA9
IG1fY3VycmVudFNvdXJjZU5vZGUtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVJlbW92ZWQgLSBtX25leHRDaGlsZE5vZGVUb0NvbnNp
ZGVyIHNldCB0byAlcCIsIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIuZ2V0KCkpOworICAgICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VSZW1vdmVkKCVwKSAtIG1fbmV4
dENoaWxkTm9kZVRvQ29uc2lkZXIgc2V0IHRvICVwIiwgdGhpcywgbV9uZXh0Q2hpbGROb2RlVG9D
b25zaWRlci5nZXQoKSk7CiAgICAgfSBlbHNlIGlmIChzb3VyY2UgPT0gbV9jdXJyZW50U291cmNl
Tm9kZSkgewogICAgICAgICAvLyBDbGVhciB0aGUgY3VycmVudCBzb3VyY2Ugbm9kZSBwb2ludGVy
LCBidXQgZG9uJ3QgY2hhbmdlIHRoZSBtb3ZpZSBhcyB0aGUgc3BlYyBzYXlzOgogICAgICAgICAv
LyA0LjguOCAtIER5bmFtaWNhbGx5IG1vZGlmeWluZyBhIHNvdXJjZSBlbGVtZW50IGFuZCBpdHMg
YXR0cmlidXRlIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSAKICAgICAgICAgLy8gaW5zZXJ0
ZWQgaW4gYSB2aWRlbyBvciBhdWRpbyBlbGVtZW50IHdpbGwgaGF2ZSBubyBlZmZlY3QuCiAgICAg
ICAgIG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOwotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50Ojpzb3VyY2VSZW1vdmVkIC0gbV9jdXJyZW50U291cmNlTm9kZSBzZXQgdG8gMCIp
OworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VSZW1vdmVkKCVw
KSAtIG1fY3VycmVudFNvdXJjZU5vZGUgc2V0IHRvIDAiLCB0aGlzKTsKICAgICB9CiB9CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciop
CiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hh
bmdlZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGlt
ZUNoYW5nZWQoJXApIiwgdGhpcyk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKQEAgLTQxMjgsNyArNDEyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJUaW1lQ2gKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZv
bHVtZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZCglcCkiLCB0aGlzKTsKIAogICAg
IGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKICAgICBpZiAobV9wbGF5ZXIp
IHsKQEAgLTQxNDQsNyArNDE0NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJWb2x1bWUKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck11dGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllck11dGVDaGFuZ2VkIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCglcCkiLCB0aGlzKTsKIAogICAgIGJlZ2luUHJvY2Vzc2lu
Z01lZGlhUGxheWVyQ2FsbGJhY2soKTsKICAgICBpZiAobV9wbGF5ZXIpCkBAIC00MTU0LDcgKzQx
NTQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNoCiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIq
IHBsYXllcikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckR1cmF0aW9uQ2hhbmdlZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKCVwKSIsIHRoaXMpOwogCiAgICAgYmVnaW5Qcm9jZXNz
aW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogCkBAIC00MTcxLDcgKzQxNzEsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopCiB7Ci0gICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCIpOworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoJXApIiwgdGhp
cyk7CiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKQEAgLTQx
ODgsNyArNDE4OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSYXRlQ2gK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclBsYXliYWNrU3RhdGVDaGFuZ2VkIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCglcCkiLCB0aGlzKTsKIAog
ICAgIGlmICghbV9wbGF5ZXIgfHwgbV9wYXVzZWRJbnRlcm5hbCkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDIwMyw3ICs0MjAzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBs
YXliYQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRU
cmFja3MoTWVkaWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MiKTsKKyAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKCVwKSIsIHRoaXMp
OwogCiAgICAgLy8gVGhlIE1lZGlhUGxheWVyIGNhbWUgYWNyb3NzIGNvbnRlbnQgaXQgY2Fubm90
IGNvbXBsZXRlbHkgaGFuZGxlLgogICAgIC8vIFRoaXMgaXMgbm9ybWFsbHkgYWNjZXB0YWJsZSBl
eGNlcHQgd2hlbiB3ZSBhcmUgaW4gYSBzdGFuZGFsb25lCkBAIC00MjE0LDcgKzQyMTQsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZChNZWRpYVBsYXllciopCiB7
Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXNvdXJjZU5v
dFN1cHBvcnRlZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoJXApIiwgdGhpcyk7CiAKICAgICAvLyBUaGUgTWVkaWFQ
bGF5ZXIgY2FtZSBhY3Jvc3MgY29udGVudCB3aGljaCBubyBpbnN0YWxsZWQgZW5naW5lIHN1cHBv
cnRzLgogICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOwpA
QCAtNDIzMiw3ICs0MjMyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJl
cGFpbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyU2l6ZUNoYW5nZWQiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclNpemVDaGFuZ2VkKCVwKSIsIHRoaXMpOwogCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVk
aWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIGlmIChyZW5kZXJlcigpKQpAQCAtNDI0OSw3ICs0MjQ5
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcgogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoTWVkaWFQbGF5
ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVu
ZGVyaW5nTW9kZUNoYW5nZWQiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCVwKSIsIHRoaXMpOwogCiAgICAgLy8gS2lj
ayBvZmYgYSBmYWtlIHJlY2FsY1N0eWxlIHRoYXQgd2lsbCB1cGRhdGUgdGhlIGNvbXBvc2l0aW5n
IHRyZWUuCiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CkBA
IC00MjY3LDcgKzQyNjcsNyBAQCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIEhUTUxNZWRpYUVsZW1l
bnQ6CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1l
ZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoJXApIiwgdGhpcyk7CiAgICAgYmVnaW5Qcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5k
ZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAtNDMwMiw3ICs0MzAyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VgogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGlj
Q2hhbmdlZCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
Q2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCVwKSIsIHRoaXMpOwogICAgIAogICAgIGJlZ2luUHJvY2Vz
c2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIApAQCAtNDQ5OSw4ICs0NDk5LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogICAgIGJvb2wgc2hvdWxkQmVQbGF5
aW5nID0gcG90ZW50aWFsbHlQbGF5aW5nKCk7CiAgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3Bs
YXllci0+cGF1c2VkKCk7CiAKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVQbGF5U3RhdGUgLSBzaG91bGRCZVBsYXlpbmcgPSAlcywgcGxheWVyUGF1c2VkID0gJXMiLAot
ICAgICAgICBib29sU3RyaW5nKHNob3VsZEJlUGxheWluZyksIGJvb2xTdHJpbmcocGxheWVyUGF1
c2VkKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRl
KCVwKSAtIHNob3VsZEJlUGxheWluZyA9ICVzLCBwbGF5ZXJQYXVzZWQgPSAlcyIsIHRoaXMsIGJv
b2xTdHJpbmcoc2hvdWxkQmVQbGF5aW5nKSwgYm9vbFN0cmluZyhwbGF5ZXJQYXVzZWQpKTsKIAog
ICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAgICAgICAgc2V0RGlzcGxheU1vZGUoVmlkZW8p
OwpAQCAtNDU2Nyw3ICs0NTY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wUGVyaW9k
aWNUaW1lcgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCkKIHsK
LSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCIpOwor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKCVwKSIs
IHRoaXMpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0aGUg
aU9TIGFuZCBub24taU9TIGNvZGUgKGJlbG93KS4KICNpZiBQTEFURk9STShJT1MpCkBAIC00NjU5
LDcgKzQ2NTgsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblN1c3BlbmQoKSBjb25zCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c3RvcCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN0
b3AoJXApIiwgdGhpcyk7CiAgICAgaWYgKG1faXNJblZpZGVvRnVsbHNjcmVlbikKICAgICAgICAg
ZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAKQEAgLTQ2ODksNyArNDY4OCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c3RvcCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uIHdoeSkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzdXNwZW5kIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCgl
cCkiLCB0aGlzKTsKIAogICAgIHN3aXRjaCAod2h5KQogICAgIHsKQEAgLTQ3MDgsNyArNDcwNyw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3IKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZXN1bWUoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnJlc3VtZSIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSgl
cCkiLCB0aGlzKTsKIAogICAgIG1faW5BY3RpdmVEb2N1bWVudCA9IHRydWU7CiAKQEAgLTQ3Mzks
MTMgKzQ3MzgsMTMgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZpdAog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIHsKLSAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVZvbHVtZURpZENoYW5nZSIpOworICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCVwKSIs
IHRoaXMpOwogICAgIHVwZGF0ZVZvbHVtZSgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCVwKSIsIHRoaXMpOwogICAgIG1fZWxl
bWVudElzSGlkZGVuID0gZG9jdW1lbnQoKS5oaWRkZW4oKTsKICAgICB1cGRhdGVTbGVlcERpc2Fi
bGluZygpOwogICAgIG1fbWVkaWFTZXNzaW9uLT52aXNpYmlsaXR5Q2hhbmdlZCgpOwpAQCAtNDc4
Myw3ICs0NzgyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRDdXJyZW50UGxheQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzc0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0No
YW5nZWQgLSB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzID0gJXMiLCBib29s
U3RyaW5nKHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSkpOworICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFy
Z2V0SXNXaXJlbGVzc0NoYW5nZWQoJXApIC0gd2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzcyA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyh3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzKCkpKTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRj
dXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50KTsKIH0KIApAQCAtNDgw
NCw3ICs0ODAzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKAog
ICAgIGlmIChpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExpc3RlbmVyKQogICAgICAgICBtX21l
ZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRo
aXMsIHRydWUpOwogCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRM
aXN0ZW5lcignd2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkJykiKTsKKyAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKCVwKSAtICd3
ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWQnIiwgdGhpcyk7CiAgICAgCiAg
ICAgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7IC8vIEVu
c3VyZSB0aGUgZXZlbnQgbGlzdGVuZXIgZ2V0cyBhdCBsZWFzdCBvbmUgZXZlbnQuCiAgICAgcmV0
dXJuIHRydWU7CkBAIC00ODI3LDcgKzQ4MjYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZl
bnQiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoJXApIiwgdGhpcyk7CiAgICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZl
bnQsIG1fbWVkaWFTZXNzaW9uLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygqdGhpcykpOwog
ICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1
ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CkBAIC00ODU5LDcgKzQ4NTgsNyBAQCBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmlzRnVsbHNjcmVlbigpIGNvCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dG9nZ2xlRnVsbHNjcmVlblN0YXRlKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVGdWxsc2NyZWVuU3RhdGUgLSBpc0Z1bGxzY3JlZW4oKSBpcyAlcyIsIGJvb2xT
dHJpbmcoaXNGdWxsc2NyZWVuKCkpKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojp0b2dnbGVGdWxsc2NyZWVuU3RhdGUoJXApIC0gaXNGdWxsc2NyZWVuKCkgaXMgJXMiLCB0aGlz
LCBib29sU3RyaW5nKGlzRnVsbHNjcmVlbigpKSk7CiAgICAgCiAgICAgaWYgKGlzRnVsbHNjcmVl
bigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwpAQCAtNDg2OSw3ICs0ODY4LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVGdWxsc2NyZWVuUwogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6ZW50ZXJGdWxsc2NyZWVuIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6ZW50ZXJGdWxsc2NyZWVuKCVwKSIsIHRoaXMpOwogICAgIGlmIChtX2lzSW5WaWRlb0Z1bGxz
Y3JlZW4pCiAgICAgICAgIHJldHVybjsKIApAQCAtNDg5NCw3ICs0ODkzLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmV4aXRGdWxsc2NyZWVuKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpl
eGl0RnVsbHNjcmVlbiIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRG
dWxsc2NyZWVuKCVwKSIsIHRoaXMpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKSB7CkBAIC01MDE3LDcgKzUwMTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVRleHRUcmFja0RpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvblZpc2libGUpCiB7Ci0gICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCVzKSIs
IGJvb2xTdHJpbmcoY2xvc2VkQ2FwdGlvblZpc2libGUpKTsKKyAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoJXApIC0gJXMiLCB0aGlzLCBi
b29sU3RyaW5nKGNsb3NlZENhcHRpb25WaXNpYmxlKSk7CiAKICAgICBtX2Nsb3NlZENhcHRpb25z
VmlzaWJsZSA9IGZhbHNlOwogCkBAIC01MDczLDcgKzUwNzIsNyBAQCB1bnNpZ25lZCBIVE1MTWVk
aWFFbGVtZW50Ojp3ZWJraXRWaWRlb0RlCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFD
YW5TdGFydCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDYW5T
dGFydCIpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ2FuU3RhcnQo
JXApIiwgdGhpcyk7CiAKICAgICBBU1NFUlQobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQg
fHwgbV9wYXVzZWRJbnRlcm5hbCk7CiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0
YXJ0KSB7CkBAIC01MDk0LDcgKzUwOTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNo
b3VsZERlbGF5TG9hCiAgICAgaWYgKG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQgPT0gc2hvdWxkRGVs
YXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KCVzKSIsIGJvb2xTdHJpbmcoc2hvdWxkRGVsYXkpKTsK
KyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVu
dCglcCkgLSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoc2hvdWxkRGVsYXkpKTsKIAogICAgIG1fc2hv
dWxkRGVsYXlMb2FkRXZlbnQgPSBzaG91bGREZWxheTsKICAgICBpZiAoc2hvdWxkRGVsYXkpCkBA
IC01MTMwLDcgKzUxMjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2lu
Z1N0CiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgp
LnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKLSAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENo
YW5nZSglcykiLCBib29sU3RyaW5nKHByaXZhdGVNb2RlKSk7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoJXApIC0gJXMiLCB0
aGlzLCBib29sU3RyaW5nKHByaXZhdGVNb2RlKSk7CiAgICAgbV9wbGF5ZXItPnNldFByaXZhdGVC
cm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogfQogCkBAIC01MjE1LDcgKzUyMTQsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFjCiAgICAgaWYgKG1fcHJvY2Vzc2lu
Z1ByZWZlcmVuY2VDaGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkiKTsKKyAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCVwKSIsIHRo
aXMpOwogCiAgICAgYm9vbCBoYXZlVmlzaWJsZVRleHRUcmFjayA9IGZhbHNlOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpIHsKQEAgLTUy
ODIsNyArNTI4MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWIK
ICAgICBpZiAoIW1fdGV4dFRyYWNrcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25m
aWd1cmVkIik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25B
bmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCVwKSIsIHRoaXMpOwogCiAgICAgLy8gTWFy
ayBhbGwgdHJhY2tzIGFzIG5vdCAiY29uZmlndXJlZCIgc28gdGhhdCBjb25maWd1cmVUZXh0VHJh
Y2tzKCkKICAgICAvLyB3aWxsIHJlY29uc2lkZXIgd2hpY2ggdHJhY2tzIHRvIGRpc3BsYXkgaW4g
bGlnaHQgb2YgbmV3IHVzZXIgcHJlZmVyZW5jZXMKQEAgLTU3NTIsNyArNTc1MSw3IEBAIERPTVdy
YXBwZXJXb3JsZCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXIKIAogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogewotICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCIp
OworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJ
bmplY3RlZFNjcmlwdCglcCkiLCB0aGlzKTsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5w
YWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01Nzk1LDcg
KzU3OTQsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JQcm9wZXJ0eShKCiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290
KiByb290KQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QiKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KCVwKSIsIHRoaXMpOwogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NzEs
NyArNTg3MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2gKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVG
YWN0b3IoYm9vbCBkZXBlbmRzT25QYWdlU2NhbGUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUNvbnRyb2xzRGVwZW5kUGFnZVNjYWxlRmFjdG9yID0gJXMiLCBib29s
U3RyaW5nKGRlcGVuZHNPblBhZ2VTY2FsZSkpOworICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFDb250cm9sc0RlcGVuZFBhZ2VTY2FsZUZhY3RvciglcCkgPSAlcyIsIHRoaXMs
IGJvb2xTdHJpbmcoZGVwZW5kc09uUGFnZVNjYWxlKSk7CiAgICAgaWYgKG1fbWVkaWFDb250cm9s
c0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yID09IGRlcGVuZHNPblBhZ2VTY2FsZSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC01ODg5LDcgKzU4ODgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBh
Z2VTY2FsZUZhY3RvckNoCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwYWdlU2NhbGVGYWN0b3JDaGFuZ2VkID0gJWYi
LCBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6cGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCglcCkgPSAlZiIsIHRoaXMsIHBhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpKTsKICAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gZW5zdXJlSXNvbGF0
ZWRXb3JsZCgpOwogICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBwYWdl
LT5tYWluRnJhbWUoKS5zY3JpcHQoKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLmds
b2JhbE9iamVjdCh3b3JsZCkpOwpAQCAtNTkzOCwxNCArNTkzNywxNCBAQCBzaXplX3QgSFRNTE1l
ZGlhRWxlbWVudDo6bWF4aW11bVNvdXJjZUJ1CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1
c2VQbGF5YmFjaygpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VQ
bGF5YmFjayAtIHBhdXNlZCA9ICVzIiwgYm9vbFN0cmluZyhwYXVzZWQoKSkpOworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlUGxheWJhY2soJXApIC0gcGF1c2VkID0gJXMi
LCB0aGlzLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAgaWYgKCFwYXVzZWQoKSkKICAgICAg
ICAgcGF1c2UoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWVQbGF5YmFjaygp
CiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lUGxheWJhY2sgLSBw
YXVzZWQgPSAlcyIsIGJvb2xTdHJpbmcocGF1c2VkKCkpKTsKKyAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpyZXN1bWVQbGF5YmFjayglcCkgLSBwYXVzZWQgPSAlcyIsIHRoaXMsIGJv
b2xTdHJpbmcocGF1c2VkKCkpKTsKICAgICBpZiAocGF1c2VkKCkpCiAgICAgICAgIHBsYXkoKTsK
IH0KQEAgLTU5NjAsNyArNTk1OSw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVNl
c3Npb25UaXQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkK
IHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmQoJWkpIiwgc3RhdGljX2Nhc3Q8aW50Pihjb21tYW5kKSk7CisgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKCVw
KSAtICVpIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50Pihjb21tYW5kKSk7CiAKICAgICBzd2l0Y2gg
KGNvbW1hbmQpIHsKICAgICBjYXNlIE1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQ6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>