<?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>162911</bug_id>
          
          <creation_ts>2016-10-04 09:33:13 -0700</creation_ts>
          <short_desc>[GStreamer][MSE][EME] Remove MSE code from regular player and add EME support</short_desc>
          <delta_ts>2016-10-26 01:47:43 -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>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>calvaris</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236208</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 09:33:13 -0700</bug_when>
    <thetext>Now that the MSE responsibility has been refactored to the dedicated MediaPlayerPrivateGStreamerMSE subclass, the regular player no longer needs the MSE code, just to expose some more methods to the subclass. Also, small changes to accomodate the EME support are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236218</commentid>
    <comment_count>1</comment_count>
      <attachid>290609</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 09:59:51 -0700</bug_when>
    <thetext>Created attachment 290609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236222</commentid>
    <comment_count>2</comment_count>
      <attachid>290609</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 10:07:07 -0700</bug_when>
    <thetext>Comment on attachment 290609
Patch

Wait until all the patches in 157314 are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237968</commentid>
    <comment_count>3</comment_count>
      <attachid>290609</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-08 07:23:19 -0700</bug_when>
    <thetext>Comment on attachment 290609
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:309
&gt; +        auto mediaDuration = durationMediaTime();

Type this, please

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:625
&gt; +    if (!m_pipeline || !m_source)

UNLIKELY?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:690
&gt; +    if (!m_pipeline || !m_source)

UNLIKELY?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:743
&gt; +    if (!m_pipeline || !m_source)

UNLIKELY?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1272
&gt; +    if (!m_pipeline || !durationMediaTime() || (!isMediaSource() &amp;&amp; !totalBytes()))

UNLIKELY?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1645
&gt; +    auto now = currentMediaTime();

Type this, please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240769</commentid>
    <comment_count>4</comment_count>
      <attachid>291768</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-16 12:09:19 -0700</bug_when>
    <thetext>Created attachment 291768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244680</commentid>
    <comment_count>5</comment_count>
      <attachid>292898</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:22:39 -0700</bug_when>
    <thetext>Created attachment 292898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244718</commentid>
    <comment_count>6</comment_count>
      <attachid>292898</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:47:35 -0700</bug_when>
    <thetext>Comment on attachment 292898
Patch

Clearing flags on attachment: 292898

Committed r207885: &lt;http://trac.webkit.org/changeset/207885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244719</commentid>
    <comment_count>7</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:47:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290609</attachid>
            <date>2016-10-04 09:59:51 -0700</date>
            <delta_ts>2016-10-16 12:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162911-20161004165639.patch</filename>
            <type>text/plain</type>
            <size>33149</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM3YzE2ZmMyNmNmYTQ5
NjY0MmFjZDdjNDc3NjlmYWUyNGVkN2ZmYS4uYTM4OGI1YTVkOGRlOWNmNzNlYjI5OTg0NDY5MDQ5
ZDJhMWViNGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXVtFTUVdIFJlbW92ZSBNU0UgY29kZSBmcm9tIHJlZ3VsYXIgcGxheWVyIGFu
ZCBhZGQgRU1FIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MjkxMQorCisgICAgICAgIE5vdyB0aGF0IHRoZSBNU0UgcmVzcG9uc2liaWxp
dHkgaGFzIGJlZW4gcmVmYWN0b3JlZCB0byB0aGUgZGVkaWNhdGVkCisgICAgICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRSBzdWJjbGFzcywgdGhlIHJlZ3VsYXIgcGxheWVyIG5vIGxv
bmdlciBuZWVkcyB0aGUgTVNFIGNvZGUsCisgICAgICAgIGp1c3QgdG8gZXhwb3NlIHNvbWUgbW9y
ZSBtZXRob2RzIHRvIHRoZSBzdWJjbGFzcy4gRmxvYXQgdGltZXN0YW1wcyBoYXZlIGJlZW4gbWln
cmF0ZWQgdG8KKyAgICAgICAgZG91YmxlLiBBbHNvLCBzbWFsbCBjaGFuZ2VzIHRvIGFjY29tb2Rh
dGUgdGhlIEVNRSBzdXBwb3J0IGFyZSBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBj
by1hdXRob3JlZCB3aXRoIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+IChFTUUg
c3VwcG9ydCkgYW5kCisgICAgICAgIMW9YW4gRG9iZXLFoWVrIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+IChkb3VibGUgdGltZXN0YW1wcykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1c01lc3NhZ2VDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUdTdHJlYW1l
ckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnBsYXliYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpkdXJhdGlvbk1lZGlhVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRNZWRpYVRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG9TZWVrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXll
ck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4VGltZVNlZWth
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4
VGltZUxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmRpZExvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNvdXJjZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb21taXRMb2FkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0No
YW5nZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvQ2Fwcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0
b3RhbEJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRTdGF0ZUNoYW5nZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0aW1lQ2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZVNldCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1
ZGlvU2luayk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVQbGF5U2luayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVXZWFrUHRyKTog
RGVsZXRlZC4KKworMjAxNi0xMC0wNCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5o
YUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHU3RyZWFtZXJdW0VNRV0gQWRkIEVNRSBzdXBwb3J0
IHRvIGJhc2UgcHJpdmF0ZSBwbGF5ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MjkwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDA3ODQ2Y2E1ZmI2YTNiZTI5Njc1ZTJiMTIwNTBhMTA4
NmMzNzUyNDguLjMwOWU3MTQwZDkyMjg0ZTA2NGJjYjkwODdjODY5ZTMxYTQ5MjlhNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zLDgg
KzMsOSBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25v
bWUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEln
YWxpYSBTLkwKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMywg
MjAxNSwgMjAxNiBJZ2FsaWEgUy5MCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2FibGUgVGVsZXZp
c2lvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBNZXRy
b2xvZ2ljYWwgR3JvdXAgQi5WLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03Nyw2ICs3OCwxMSBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2
b2lkIGJ1c01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKK3sKKyAgICBwbGF5ZXItPmhhbmRsZU1l
c3NhZ2UobWVzc2FnZSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
ZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIqIHBsYXllciwgR09iamVjdCogb2JqZWN0KQogewogICAgIHBsYXllci0+c2V0QXVkaW9TdHJl
YW1Qcm9wZXJ0aWVzKG9iamVjdCk7CkBAIC05OSw3ICsxMDUsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpcwogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQogICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIGdldFN1cHBvcnRl
ZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKIH0KIAog
Ym9vbCBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpCkBAIC0x
MDcsMTcgKzExMywxNCBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktp
dEVsZW1lbnRzKCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXIoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgcmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50cygpOworCiAg
ICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gc3JjRmFjdG9yeSA9IGFkb3B0R1JlZihnc3Rf
ZWxlbWVudF9mYWN0b3J5X2ZpbmQoIndlYmtpdHdlYnNyYyIpKTsKICAgICBpZiAoIXNyY0ZhY3Rv
cnkpIHsKICAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21lZGlhX3BsYXll
cl9kZWJ1ZywgIndlYmtpdG1lZGlhcGxheWVyIiwgMCwgIldlYktpdCBtZWRpYSBwbGF5ZXIiKTsK
ICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdHdlYnNyYyIsIEdTVF9SQU5L
X1BSSU1BUlkgKyAxMDAsIFdFQktJVF9UWVBFX1dFQl9TUkMpOwogICAgIH0KIAotI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gV2ViS2l0TWVk
aWFTcmNGYWN0b3J5ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2ZhY3RvcnlfZmluZCgid2Via2l0
bWVkaWFzcmMiKSk7Ci0gICAgaWYgKCFXZWJLaXRNZWRpYVNyY0ZhY3RvcnkpCi0gICAgICAgIGdz
dF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRtZWRpYXNyYyIsIEdTVF9SQU5LX1BSSU1BUlkg
KyAxMDAsIFdFQktJVF9UWVBFX01FRElBX1NSQyk7Ci0jZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTMyLDM0ICsxMzUsMzUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmlzQXZhaWxhYmxlKCkKIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UocGxheWVyKQotICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0
aGlzKQotICAgICwgbV9zb3VyY2UoMCkKLSAgICAsIG1fc2Vla1RpbWUoMCkKKyAgICAsIG1fYnVm
ZmVyaW5nKGZhbHNlKQorICAgICwgbV9idWZmZXJpbmdQZXJjZW50YWdlKDApCisgICAgLCBtX2Nh
bkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX2NoYW5n
aW5nUmF0ZShmYWxzZSkKKyAgICAsIG1fZG93bmxvYWRGaW5pc2hlZChmYWxzZSkKKyAgICAsIG1f
ZXJyb3JPY2N1cmVkKGZhbHNlKQogICAgICwgbV9pc0VuZFJlYWNoZWQoZmFsc2UpCiAgICAgLCBt
X2lzU3RyZWFtaW5nKGZhbHNlKQotICAgICwgbV9tZWRpYUxvY2F0aW9ucygwKQotICAgICwgbV9t
ZWRpYUxvY2F0aW9uQ3VycmVudEluZGV4KDApCi0gICAgLCBtX3Jlc2V0UGlwZWxpbmUoZmFsc2Up
CisgICAgLCBtX2R1cmF0aW9uQXRFT1MoMCkKICAgICAsIG1fcGF1c2VkKHRydWUpCi0gICAgLCBt
X3BsYXliYWNrUmF0ZVBhdXNlKGZhbHNlKQorICAgICwgbV9wbGF5YmFja1JhdGUoMSkKKyAgICAs
IG1fcmVxdWVzdGVkU3RhdGUoR1NUX1NUQVRFX1ZPSURfUEVORElORykKKyAgICAsIG1fcmVzZXRQ
aXBlbGluZShmYWxzZSkKICAgICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1fc2Vla0lzUGVu
ZGluZyhmYWxzZSkKKyAgICAsIG1fc2Vla1RpbWUoMCkKKyAgICAsIG1fc291cmNlKDApCisgICAg
LCBtX3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1fd2Vha1B0ckZhY3Rv
cnkodGhpcykKKyAgICAsIG1fbWVkaWFMb2NhdGlvbnMoMCkKKyAgICAsIG1fbWVkaWFMb2NhdGlv
bkN1cnJlbnRJbmRleCgwKQorICAgICwgbV9wbGF5YmFja1JhdGVQYXVzZShmYWxzZSkKICAgICAs
IG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrKC0xKQotICAgICwgbV9jYW5GYWxsQmFja1RvTGFzdEZp
bmlzaGVkU2Vla1Bvc2l0aW9uKGZhbHNlKQotICAgICwgbV9idWZmZXJpbmcoZmFsc2UpCi0gICAg
LCBtX3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9sYXN0UGxheWJhY2tSYXRlKDEpCi0gICAgLCBt
X2Vycm9yT2NjdXJlZChmYWxzZSkKLSAgICAsIG1fZG93bmxvYWRGaW5pc2hlZChmYWxzZSkKLSAg
ICAsIG1fZHVyYXRpb25BdEVPUygwKQogICAgICwgbV9maWxsVGltZXIoKnRoaXMsICZNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKQogICAgICwgbV9tYXhUaW1lTG9h
ZGVkKDApCi0gICAgLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UoMCkKICAgICAsIG1fcHJlbG9hZChw
bGF5ZXItPnByZWxvYWQoKSkKICAgICAsIG1fZGVsYXlpbmdMb2FkKGZhbHNlKQogICAgICwgbV9t
YXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzKDApCi0gICAgLCBtX3ZvbHVtZUFu
ZE11dGVJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1faGFzVmlkZW8oZmFsc2UpCiAgICAgLCBt
X2hhc0F1ZGlvKGZhbHNlKQogICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5VGltZXJGaXJlZCkK
QEAgLTE2OCw3ICsxNzIsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogI2lmIEVOQUJMRShXRUJf
QVVESU8pCiAgICAgLCBtX2F1ZGlvU291cmNlUHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpKQogI2VuZGlmCi0gICAgLCBtX3JlcXVlc3RlZFN0
YXRlKEdTVF9TVEFURV9WT0lEX1BFTkRJTkcpCiB7CiAjaWYgVVNFKEdMSUIpICYmICFQTEFURk9S
TShFRkwpCiAgICAgbV9yZWFkeVRpbWVySGFuZGxlci5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RF
RkFVTFRfSURMRSk7CkBAIC0yMDUsMTggKzIwOCwyMCBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBtX21pc3NpbmdQ
bHVnaW5zQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChtX3ZpZGVvU2luaykg
eworICAgICAgICBHUmVmUHRyPEdzdFBhZD4gdmlkZW9TaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9l
bGVtZW50X2dldF9zdGF0aWNfcGFkKG1fdmlkZW9TaW5rLmdldCgpLCAic2luayIpKTsKKyAgICAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKHZpZGVvU2lua1BhZC5nZXQo
KSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7Cisg
ICAgfQorCiAgICAgaWYgKG1fcGlwZWxpbmUpIHsKICAgICAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1
cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGlu
ZS5nZXQoKSkpKTsKICAgICAgICAgQVNTRVJUKGJ1cyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMuZ2V0KCksIGdwb2ludGVyKGJ1c01lc3NhZ2VDYWxs
YmFjayksIHRoaXMpOworICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2goYnVzLmdl
dCgpKTsKICAgICAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfbWF0Y2hlZChtX3BpcGVsaW5lLmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBu
dWxscHRyLCBudWxscHRyLCB0aGlzKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1f
cGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKICAgICB9Ci0KLSAgICBpZiAobV92aWRl
b1NpbmspIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHZpZGVvU2lua1BhZCA9IGFkb3B0R1Jl
Zihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3ZpZGVvU2luay5nZXQoKSwgInNpbmsiKSk7
Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh2aWRlb1NpbmtQ
YWQuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHZpZGVvU2lua0NhcHNDaGFuZ2Vk
Q2FsbGJhY2spLCB0aGlzKTsKLSAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMjY1LDExICsyNzAsOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopCiB7Ci0gICAg
U3RyaW5nIG1lZGlhc291cmNlVXJpID0gU3RyaW5nOjpmb3JtYXQoIm1lZGlhc291cmNlJXMiLCB1
cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwotICAg
IGxvYWQobWVkaWFzb3VyY2VVcmkpOworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAjZW5kaWYK
IApAQCAtMjkzLDcgKzI5Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpj
b21taXRMb2FkKCkKICAgICB1cGRhdGVTdGF0ZXMoKTsKIH0KIAotZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3QKK2RvdWJsZSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAogewogICAgIGlm
IChtX2lzRW5kUmVhY2hlZCkgewogICAgICAgICAvLyBQb3NpdGlvbiBxdWVyaWVzIG9uIGEgbnVs
bCBwaXBlbGluZSByZXR1cm4gMC4gSWYgd2UncmUgYXQKQEAgLTMwMyw5ICszMDYsOSBAQCBmbG9h
dCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAog
ICAgICAgICBpZiAobV9zZWVraW5nKQogICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7CiAK
LSAgICAgICAgZmxvYXQgbWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9uKCk7CisgICAgICAgIGF1dG8g
bWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9uTWVkaWFUaW1lKCk7CiAgICAgICAgIGlmIChtZWRpYUR1
cmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuIG1lZGlhRHVyYXRpb247CisgICAgICAgICAgICBy
ZXR1cm4gbWVkaWFEdXJhdGlvbi50b0RvdWJsZSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKQEAgLTMxOCwxMSArMzIxLDExIEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGxheWJhY2tQb3NpdGlvbigpIGNvbnN0CiAKICAgICBHU1RfREVCVUcoIlBvc2l0aW9uICUi
IEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikpOwogCi0gICAgZmxvYXQg
cmVzdWx0ID0gMC4wZjsKKyAgICBkb3VibGUgcmVzdWx0ID0gMC4wZjsKICAgICBpZiAoc3RhdGlj
X2Nhc3Q8R3N0Q2xvY2tUaW1lPihwb3NpdGlvbikgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgewog
ICAgICAgICBHVGltZVZhbCB0aW1lVmFsdWU7CiAgICAgICAgIEdTVF9USU1FX1RPX1RJTUVWQUwo
cG9zaXRpb24sIHRpbWVWYWx1ZSk7Ci0gICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PGZsb2F0
Pih0aW1lVmFsdWUudHZfc2VjICsgKHRpbWVWYWx1ZS50dl91c2VjIC8gMTAwMDAwMC4wKSk7Cisg
ICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZVZhbHVlLnR2X3NlYyArICh0
aW1lVmFsdWUudHZfdXNlYyAvIDEwMDAwMDAuMCkpOwogICAgIH0gZWxzZSBpZiAobV9jYW5GYWxs
QmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0aW9uKQogICAgICAgICByZXN1bHQgPSBtX3NlZWtU
aW1lOwogCkBAIC00MTMsMjAgKzQxNiwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cGF1c2UoKQogICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7
CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24oKSBjb25z
dAorTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25NZWRpYVRp
bWUoKSBjb25zdAogewogICAgIGlmICghbV9waXBlbGluZSkKLSAgICAgICAgcmV0dXJuIDAuMGY7
CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAobV9lcnJvck9jY3VyZWQpCi0gICAgICAg
IHJldHVybiAwLjBmOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKG1fZHVyYXRpb25B
dEVPUykKLSAgICAgICAgcmV0dXJuIG1fZHVyYXRpb25BdEVPUzsKKyAgICAgICAgcmV0dXJuIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KG1fZHVyYXRpb25BdEVPUyk7CiAKICAgICAvLyBUaGUg
ZHVyYXRpb24gcXVlcnkgd291bGQgZmFpbCBvbiBhIG5vdC1wcmVyb2xsZWQgcGlwZWxpbmUuCiAg
ICAgaWYgKEdTVF9TVEFURShtX3BpcGVsaW5lLmdldCgpKSA8IEdTVF9TVEFURV9QQVVTRUQpCi0g
ICAgICAgIHJldHVybiAwLjBmOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgR3N0Rm9ybWF0
IHRpbWVGb3JtYXQgPSBHU1RfRk9STUFUX1RJTUU7CiAgICAgZ2ludDY0IHRpbWVMZW5ndGggPSAw
OwpAQCAtNDM0LDI1ICs0MzcsMjUgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpkdXJhdGlvbigpIGNvbnN0CiAgICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5
X2R1cmF0aW9uKG1fcGlwZWxpbmUuZ2V0KCksIHRpbWVGb3JtYXQsICZ0aW1lTGVuZ3RoKSB8fCBz
dGF0aWNfY2FzdDxndWludDY0Pih0aW1lTGVuZ3RoKSA9PSBHU1RfQ0xPQ0tfVElNRV9OT05FOwog
ICAgIGlmIChmYWlsdXJlKSB7CiAgICAgICAgIEdTVF9ERUJVRygiVGltZSBkdXJhdGlvbiBxdWVy
eSBmYWlsZWQgZm9yICVzIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgICAgIHJldHVy
biBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgfQogCiAgICAgR1NUX0RF
QlVHKCJEdXJhdGlvbjogJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHRpbWVMZW5n
dGgpKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVMZW5ndGgpIC8gR1NU
X1NFQ09ORDsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXRpY19j
YXN0PGRvdWJsZT4odGltZUxlbmd0aCkgLyBHU1RfU0VDT05EKTsKICAgICAvLyBGSVhNRTogaGFu
ZGxlIDMuMTQuOS41IHByb3Blcmx5CiB9CiAKLWZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3VycmVudFRpbWUoKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BpcGVsaW5l
KQotICAgICAgICByZXR1cm4gMC4wZjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICht
X2Vycm9yT2NjdXJlZCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBpZiAobV9zZWVraW5nKQotICAgICAgICByZXR1cm4gbV9zZWVrVGltZTsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KG1fc2Vla1RpbWUpOwogCiAgICAg
Ly8gV29ya2Fyb3VuZCBmb3IKICAgICAvLyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjM5OTQxIEluIEdTdHJlYW1lcgpAQCAtNDYwLDkgKzQ2Myw5IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVudFRpbWUoKSBjb25zdAogICAgIC8v
IG5lZ2F0aXZlIHBsYXliYWNrIHJhdGUuIFRoZXJlJ3Mgbm8gdXBzdHJlYW0gYWNjZXB0ZWQgcGF0
Y2ggZm9yCiAgICAgLy8gdGhpcyBidWcgeWV0LCBoZW5jZSB0aGlzIHRlbXBvcmFyeSB3b3JrYXJv
dW5kLgogICAgIGlmIChtX2lzRW5kUmVhY2hlZCAmJiBtX3BsYXliYWNrUmF0ZSA8IDApCi0gICAg
ICAgIHJldHVybiAwLjBmOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBsYXli
YWNrUG9zaXRpb24oKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHBs
YXliYWNrUG9zaXRpb24oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzZWVrKGZsb2F0IHRpbWUpCkBAIC00NzYsNyArNDc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKICAgICBHU1RfSU5GTygiW1NlZWtdIHNl
ZWsgYXR0ZW1wdCB0byAlZiBzZWNzIiwgdGltZSk7CiAKICAgICAvLyBBdm9pZCB1c2VsZXNzIHNl
ZWtpbmcuCi0gICAgaWYgKHRpbWUgPT0gY3VycmVudFRpbWUoKSkKKyAgICBpZiAoTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRmxvYXQodGltZSkgPT0gY3VycmVudE1lZGlhVGltZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoaXNMaXZlU3RyZWFtKCkpCkBAIC01MzcsNyArNTQwLDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvU2VlayhnaW50NjQgcG9zaXRpb24sIGZs
b2F0IHJhdGUsIEdzdFNlZWtGbGEKICAgICAgICAgLy8gSWYgd2UgYXJlIGF0IGJlZ2lubmluZyBv
ZiBtZWRpYSwgc3RhcnQgZnJvbSB0aGUgZW5kIHRvCiAgICAgICAgIC8vIGF2b2lkIGltbWVkaWF0
ZSBFT1MuCiAgICAgICAgIGlmIChwb3NpdGlvbiA8IDApCi0gICAgICAgICAgICBlbmRUaW1lID0g
c3RhdGljX2Nhc3Q8Z2ludDY0PihkdXJhdGlvbigpICogR1NUX1NFQ09ORCk7CisgICAgICAgICAg
ICBlbmRUaW1lID0gc3RhdGljX2Nhc3Q8Z2ludDY0PihkdXJhdGlvbk1lZGlhVGltZSgpLnRvRG91
YmxlKCkgKiBHU1RfU0VDT05EKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5kVGltZSA9
IHBvc2l0aW9uOwogICAgIH0KQEAgLTYwNCw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGF1c2VkKCkgY29uc3QKIAogICAgIEdzdFN0YXRlIHN0YXRlOwogICAg
IGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCAmc3RhdGUsIG51bGxwdHIs
IDApOwotICAgIHJldHVybiBzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEOworICAgIHJldHVybiBz
dGF0ZSA8PSBHU1RfU1RBVEVfUEFVU0VEOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6c2Vla2luZygpIGNvbnN0CkBAIC02MTksMTEgKzYyMiwyMyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9DaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
UGxheWVyT2ZWaWRlbygpCiB7CisgICAgaWYgKCFtX3BpcGVsaW5lIHx8ICFtX3NvdXJjZSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgZ2ludCBudW1UcmFja3MgPSAwOwotICAgIGlmIChtX3BpcGVs
aW5lKQotICAgICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgIm4tdmlkZW8iLCAm
bnVtVHJhY2tzLCBudWxscHRyKTsKKyAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNv
dXJjZSgpOworICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291
cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsKKyAgICBnX29iamVjdF9nZXQoZWxlbWVudCwg
Im4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKIAogICAgIG1faGFzVmlkZW8gPSBudW1U
cmFja3MgPiAwOworICAgIGlmIChtX2hhc1ZpZGVvKQorICAgICAgICBtX3BsYXllci0+c2l6ZUNo
YW5nZWQoKTsKKworICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgeworICAgICAgICBHU1RfREVCVUco
IlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cuIik7Cisg
ICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9wbGF5
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
ICAgIGZvciAoZ2ludCBpID0gMDsgaSA8IG51bVRyYWNrczsgKytpKSB7CkBAIC02NzIsMTIgKzY4
NywyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2Fs
bGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiB7CisgICAgaWYgKCFtX3BpcGVsaW5l
IHx8ICFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ2ludCBudW1UcmFja3MgPSAw
OwotICAgIGlmIChtX3BpcGVsaW5lKQotICAgICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5n
ZXQoKSwgIm4tYXVkaW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKKyAgICBib29sIHVzZU1lZGlh
U291cmNlID0gaXNNZWRpYVNvdXJjZSgpOworICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQgPSB1c2VN
ZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsKKyAgICBnX29i
amVjdF9nZXQoZWxlbWVudCwgIm4tYXVkaW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKIAogICAg
IG1faGFzQXVkaW8gPSBudW1UcmFja3MgPiAwOwogCisgICAgaWYgKHVzZU1lZGlhU291cmNlKSB7
CisgICAgICAgIEdTVF9ERUJVRygiVHJhY2tzIG1hbmFnZWQgYnkgc291cmNlIGVsZW1lbnQuIEJh
aWxpbmcgb3V0IG5vdy4iKTsKKyAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
RW5naW5lVXBkYXRlZChtX3BsYXllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyAr
K2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKQEAgLTcxNSw5ICs3NDAsMTggQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkQ2FsbGJhY2soTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiB7CisgICAgaWYgKCFtX3BpcGVsaW5lIHx8ICFtX3Nv
dXJjZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ2ludCBudW1UcmFja3MgPSAwOwotICAgIGlm
IChtX3BpcGVsaW5lKQotICAgICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgIm4t
dGV4dCIsICZudW1UcmFja3MsIG51bGxwdHIpOworICAgIGJvb2wgdXNlTWVkaWFTb3VyY2UgPSBp
c01lZGlhU291cmNlKCk7CisgICAgR3N0RWxlbWVudCogZWxlbWVudCA9IHVzZU1lZGlhU291cmNl
ID8gbV9zb3VyY2UuZ2V0KCkgOiBtX3BpcGVsaW5lLmdldCgpOworICAgIGdfb2JqZWN0X2dldChl
bGVtZW50LCAibi10ZXh0IiwgJm51bVRyYWNrcywgbnVsbHB0cik7CisKKyAgICBpZiAodXNlTWVk
aWFTb3VyY2UpIHsKKyAgICAgICAgR1NUX0RFQlVHKCJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2Ug
ZWxlbWVudC4gQmFpbGluZyBvdXQgbm93LiIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0
cjxHc3RQYWQ+IHBhZDsKQEAgLTg0MSw3ICs4NzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29u
cwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0
dXJuIHRpbWVSYW5nZXM7CiAKLSAgICBmbG9hdCBtZWRpYUR1cmF0aW9uKGR1cmF0aW9uKCkpOwor
ICAgIGZsb2F0IG1lZGlhRHVyYXRpb24oZHVyYXRpb25NZWRpYVRpbWUoKS50b0RvdWJsZSgpKTsK
ICAgICBpZiAoIW1lZGlhRHVyYXRpb24gfHwgc3RkOjppc2luZihtZWRpYUR1cmF0aW9uKSkKICAg
ICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTk1OSw3ICs5OTMsOCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdl
KQogICAgICAgICBwcm9jZXNzQnVmZmVyaW5nU3RhdHMobWVzc2FnZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgR1NUX01FU1NBR0VfRFVSQVRJT05fQ0hBTkdFRDoKLSAgICAgICAgaWYgKG1l
c3NhZ2VTb3VyY2VJc1BsYXliaW4pCisgICAgICAgIC8vIER1cmF0aW9uIGluIE1TRSBpcyBtYW5h
Z2VkIGJ5IE1lZGlhU291cmNlLCBTb3VyY2VCdWZmZXIgYW5kIEFwcGVuZFBpcGVsaW5lLgorICAg
ICAgICBpZiAobWVzc2FnZVNvdXJjZUlzUGxheWJpbiAmJiAhaXNNZWRpYVNvdXJjZSgpKQogICAg
ICAgICAgICAgZHVyYXRpb25DaGFuZ2VkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NU
X01FU1NBR0VfUkVRVUVTVF9TVEFURToKQEAgLTExMDcsNyArMTE0Miw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVndHNTZWN0
aW9uKiBzZWN0aW9uCiAgICAgICAgIGdzaXplIHNpemU7CiAgICAgICAgIGNvbnN0IHZvaWQqIGJ5
dGVzID0gZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCAmc2l6ZSk7CiAKLSAgICAgICAgdHJh
Y2stPmFkZERhdGFDdWUoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGN1cnJlbnRUaW1lRG91
YmxlKCkpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoY3VycmVudFRpbWVEb3VibGUoKSks
IGJ5dGVzLCBzaXplKTsKKyAgICAgICAgdHJhY2stPmFkZERhdGFDdWUoY3VycmVudE1lZGlhVGlt
ZSgpLCBjdXJyZW50TWVkaWFUaW1lKCksIGJ5dGVzLCBzaXplKTsKICAgICB9CiB9CiAjZW5kaWYK
QEAgLTExODEsNyArMTIxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpm
aWxsVGltZXJGaXJlZCgpCiAKICAgICBHU1RfREVCVUcoIltCdWZmZXJpbmddIERvd25sb2FkIGJ1
ZmZlciBmaWxsZWQgdXAgdG8gJWYlJSIsIGZpbGxTdGF0dXMpOwogCi0gICAgZmxvYXQgbWVkaWFE
dXJhdGlvbiA9IGR1cmF0aW9uKCk7CisgICAgZmxvYXQgbWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9u
TWVkaWFUaW1lKCkudG9Eb3VibGUoKTsKIAogICAgIC8vIFVwZGF0ZSBtYXhUaW1lTG9hZGVkIG9u
bHkgaWYgdGhlIG1lZGlhIGR1cmF0aW9uIGlzCiAgICAgLy8gYXZhaWxhYmxlLiBPdGhlcndpc2Ug
d2UgY2FuJ3QgY29tcHV0ZSBpdC4KQEAgLTEyMTEsNyArMTI0Niw3IEBAIGZsb2F0IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKICAgICBpZiAobV9l
cnJvck9jY3VyZWQpCiAgICAgICAgIHJldHVybiAwLjBmOwogCi0gICAgZmxvYXQgbWVkaWFEdXJh
dGlvbiA9IGR1cmF0aW9uKCk7CisgICAgZmxvYXQgbWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9uTWVk
aWFUaW1lKCkudG9Eb3VibGUoKTsKICAgICBHU1RfREVCVUcoIm1heFRpbWVTZWVrYWJsZSwgZHVy
YXRpb246ICVmIiwgbWVkaWFEdXJhdGlvbik7CiAgICAgLy8gaW5maW5pdGUgZHVyYXRpb24gbWVh
bnMgbGl2ZSBzdHJlYW0KICAgICBpZiAoc3RkOjppc2luZihtZWRpYUR1cmF0aW9uKSkKQEAgLTEy
MjcsMTQgKzEyNjIsMTQgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptYXhU
aW1lTG9hZGVkKCkgY29uc3QKIAogICAgIGZsb2F0IGxvYWRlZCA9IG1fbWF4VGltZUxvYWRlZDsK
ICAgICBpZiAobV9pc0VuZFJlYWNoZWQpCi0gICAgICAgIGxvYWRlZCA9IGR1cmF0aW9uKCk7Cisg
ICAgICAgIGxvYWRlZCA9IGR1cmF0aW9uTWVkaWFUaW1lKCkudG9Eb3VibGUoKTsKICAgICBHU1Rf
REVCVUcoIm1heFRpbWVMb2FkZWQ6ICVmIiwgbG9hZGVkKTsKICAgICByZXR1cm4gbG9hZGVkOwog
fQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGlwZWxpbmUgfHwgIWR1cmF0aW9uKCkgfHwgKCFpc01l
ZGlhU291cmNlKCkgJiYgIXRvdGFsQnl0ZXMoKSkpCisgICAgaWYgKCFtX3BpcGVsaW5lIHx8ICFk
dXJhdGlvbk1lZGlhVGltZSgpIHx8ICghaXNNZWRpYVNvdXJjZSgpICYmICF0b3RhbEJ5dGVzKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZmxvYXQgY3VycmVudE1heFRpbWVMb2FkZWQg
PSBtYXhUaW1lTG9hZGVkKCk7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MgPSBjdXJyZW50
TWF4VGltZUxvYWRlZCAhPSBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7
CkBAIC0xMzEwLDExICsxMzQ1LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNvdXJjZUNoYW5nZWQoKQogCiAgICAgaWYgKFdFQktJVF9JU19XRUJfU1JDKG1fc291cmNlLmdl
dCgpKSkKICAgICAgICAgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV0VCS0lUX1dFQl9TUkMo
bV9zb3VyY2UuZ2V0KCkpLCBtX3BsYXllcik7Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAg
ICBpZiAobV9tZWRpYVNvdXJjZSAmJiBXRUJLSVRfSVNfTUVESUFfU1JDKG1fc291cmNlLmdldCgp
KSkgewotICAgICAgICBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3BlbihtX21lZGlhU291cmNlLmdl
dCgpLCBXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSk7Ci0gICAgfQotI2VuZGlmCiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYW5jZWxMb2FkKCkKQEAgLTE2
MTIsOCArMTY0Miw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQo
KQogICAgIC8vIFN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBkdXJhdGlvbiB2YWx1ZXMgdG8gbm90
IGNvbmZ1c2UgdGhlCiAgICAgLy8gSFRNTE1lZGlhRWxlbWVudC4gSW4gc29tZSBjYXNlcyBsaWtl
IHJldmVyc2UgcGxheWJhY2sgdGhlCiAgICAgLy8gcG9zaXRpb24gaXMgbm90IGFsd2F5cyByZXBv
cnRlZCBhcyAwIGZvciBpbnN0YW5jZS4KLSAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwot
ICAgIGlmIChub3cgPiAwICYmIG5vdyA8PSBkdXJhdGlvbigpKQorICAgIGF1dG8gbm93ID0gY3Vy
cmVudE1lZGlhVGltZSgpOworICAgIGlmIChub3cgPiBNZWRpYVRpbWUgeyB9ICYmIG5vdyA8PSBk
dXJhdGlvbk1lZGlhVGltZSgpKQogICAgICAgICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7
CiAKICAgICBtX2lzRW5kUmVhY2hlZCA9IHRydWU7CkBAIC0xNjIxLDcgKzE2NTEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKIAogICAgIGlmICghbV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVySXNMb29waW5nKCkpIHsKICAgICAgICAgbV9wYXVzZWQg
PSB0cnVlOwotICAgICAgICBtX2R1cmF0aW9uQXRFT1MgPSBkdXJhdGlvbigpOworICAgICAgICBt
X2R1cmF0aW9uQXRFT1MgPSBkdXJhdGlvbk1lZGlhVGltZSgpLnRvRG91YmxlKCk7CiAgICAgICAg
IGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAgICAgICAgbV9kb3dubG9h
ZEZpbmlzaGVkID0gZmFsc2U7CiAgICAgfQpAQCAtMTYyOSwxMiArMTY1OSwxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCiB7Ci0gICAgZmxvYXQgcHJldmlvdXNE
dXJhdGlvbiA9IGR1cmF0aW9uKCk7CisgICAgZmxvYXQgcHJldmlvdXNEdXJhdGlvbiA9IGR1cmF0
aW9uTWVkaWFUaW1lKCkudG9Eb3VibGUoKTsKIAogICAgIC8vIEF2b2lkIGVtaXRpbmcgZHVyYXRp
b25jaGFuZ2VkIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBwcmV2aW91cwogICAgIC8vIGR1cmF0aW9u
IHdhcyAwIGJlY2F1c2UgdGhhdCBjYXNlIGlzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUKICAgICAv
LyBIVE1MTWVkaWFFbGVtZW50LgotICAgIGlmIChwcmV2aW91c0R1cmF0aW9uICYmIGR1cmF0aW9u
KCkgIT0gcHJldmlvdXNEdXJhdGlvbikKKyAgICBpZiAocHJldmlvdXNEdXJhdGlvbiAmJiBkdXJh
dGlvbk1lZGlhVGltZSgpLnRvRG91YmxlKCkgIT0gcHJldmlvdXNEdXJhdGlvbikKICAgICAgICAg
bV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogfQogCkBAIC0xNzg5LDE4ICsxODE5LDI1IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zCiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIHJlc3VsdCA9IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSBpcyBp
biBjaGFyZ2Ugb2YgbWVkaWFzb3VyY2UgcGxheWJhY2ssIG5vdCB1cy4KKyAgICBpZiAocGFyYW1l
dGVycy5pc01lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCisKICAg
ICAvLyBNZWRpYVN0cmVhbSBwbGF5YmFjayBpcyBoYW5kbGVkIGJ5IHRoZSBPcGVuV2ViUlRDIHBs
YXllci4KICAgICBpZiAocGFyYW1ldGVycy5pc01lZGlhU3RyZWFtKQotICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwotCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
ICAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzTnVsbCgpIHx8IHBhcmFtZXRlcnMudHlwZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAvLyBzcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCByZXR1
cm4gInByb2JhYmx5IiBpZiB0aGUgY29kZWNzIHN0cmluZyBpcyBlbXB0eQogICAgIGlmIChtaW1l
VHlwZVNldCgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCi0gICAgICAgIHJldHVybiBwYXJh
bWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBN
ZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKKyAgICAgICAgcmVzdWx0ID0gcGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpID8g
TWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwor
CisgICAgcmV0dXJuIGV4dGVuZGVkU3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMsIHJlc3VsdCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXREb3dubG9hZEJ1ZmZlcmlu
ZygpCkBAIC0xOTI1LDE4ICsxOTYyLDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVz
LmdldCgpLCBbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciB1c2VyRGF0
YSkgewogICAgICAgICBhdXRvJiBwbGF5ZXIgPSAqc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKj4odXNlckRhdGEpOwogCi0gICAgICAgIGlmICghcGxheWVyLmhhbmRsZVN5
bmNNZXNzYWdlKG1lc3NhZ2UpKSB7Ci0gICAgICAgICAgICBHUmVmUHRyPEdzdE1lc3NhZ2U+IHBy
b3RlY3RlZE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgICAgICBhdXRvIHdlYWtUaGlzID0gcGxh
eWVyLmNyZWF0ZVdlYWtQdHIoKTsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbd2Vha1RoaXMsIHByb3RlY3RlZE1lc3NhZ2VdIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVNZXNzYWdlKHByb3Rl
Y3RlZE1lc3NhZ2UuZ2V0KCkpOwotICAgICAgICAgICAgfSk7CisgICAgICAgIGlmIChwbGF5ZXIu
aGFuZGxlU3luY01lc3NhZ2UobWVzc2FnZSkpIHsKKyAgICAgICAgICAgIGdzdF9tZXNzYWdlX3Vu
cmVmKG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEdTVF9CVVNfRFJPUDsKICAgICAgICAg
fQotICAgICAgICBnc3RfbWVzc2FnZV91bnJlZihtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIEdT
VF9CVVNfRFJPUDsKKworICAgICAgICByZXR1cm4gR1NUX0JVU19QQVNTOwogICAgIH0sIHRoaXMs
IG51bGxwdHIpOwogCisgICAgLy8gTGV0IGFsc28gb3RoZXIgbGlzdGVuZXJzIHN1YnNjcmliZSB0
byAoYXBwbGljYXRpb24pIG1lc3NhZ2VzIGluIHRoaXMgYnVzLgorICAgIGdzdF9idXNfYWRkX3Np
Z25hbF93YXRjaChidXMuZ2V0KCkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLmdldCgpLCAi
bWVzc2FnZSIsIEdfQ0FMTEJBQ0soYnVzTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CisKICAgICBn
X29iamVjdF9zZXQobV9waXBlbGluZS5nZXQoKSwgIm11dGUiLCBtX3BsYXllci0+bXV0ZWQoKSwg
bnVsbHB0cik7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9waXBlbGluZS5nZXQo
KSwgIm5vdGlmeTo6c291cmNlIiwgR19DQUxMQkFDSyhzb3VyY2VDaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKQEAgLTE5NjMsNiArMjAwMCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIAogICAgIGdfb2JqZWN0X3NldChtX3BpcGVsaW5lLmdl
dCgpLCAidmlkZW8tc2luayIsIGNyZWF0ZVZpZGVvU2luaygpLCAiYXVkaW8tc2luayIsIGNyZWF0
ZUF1ZGlvU2luaygpLCBudWxscHRyKTsKIAorICAgIGNvbmZpZ3VyZVBsYXlTaW5rKCk7CisKICAg
ICAvLyBPbiAxLjQuMiBhbmQgbmV3ZXIgd2UgdXNlIHRoZSBhdWRpby1maWx0ZXIgcHJvcGVydHkg
aW5zdGVhZC4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcu
Y2dpP2lkPTczNTc0OCBmb3IKICAgICAvLyB0aGUgcmVhc29uIGZvciB1c2luZyA+PSAxLjQuMiBp
bnN0ZWFkIG9mID49IDEuNC4wLgpAQCAtMjAxNSw2ICsyMDU0LDExIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVTeW5j
TWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIHJldHVybiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpoYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKTsKK30KKwogfQog
CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAppbmRleCBhY2Q3NjlmZTI5YmQ2YWIzMTIxNzRiMzAwYjA5YzU2OTcw
MDVmYzIwLi4xOGNiYWFmMDE5YzJiNzNmNWUwMDU5YmZkOWJjZTk5YzIyNDNjMWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yLDggKzIsOSBA
QAogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29t
PgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIElnYWxpYSBTLkwKKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2FibGUgVGVsZXZpc2lvbiBMYWJvcmF0b3JpZXMsIEluYy4K
KyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC00MCwxMCArNDEsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZ0hhc2guaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSNp
bmNsdWRlICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgotI2VuZGlmCi0KIHR5cGVkZWYgc3RydWN0
IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVz
c2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1lbnQ7CkBAIC02MiwxMCAr
NTksMTQgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjsKIGNsYXNzIE1l
ZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOwogY2xhc3MgVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI7CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorY2xh
c3MgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50OworI2VuZGlmCisKIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVk
aWFQbGF5ZXIqKTsKLSAgICB+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKCk7CisgICAgdmly
dHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKICAgICB2b2lkIGhhbmRs
ZU1lc3NhZ2UoR3N0TWVzc2FnZSopOwpAQCAtOTEsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBwYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZmxvYXQg
Y3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRpb25NZWRp
YVRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2VlayhmbG9hdCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHNldFJhdGUoZmxvYXQpIG92ZXJyaWRlOwpAQCAtMTExLDIwICsxMTIsMjYgQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZFN0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgdGltZUNoYW5nZWQoKTsK
ICAgICB2b2lkIGRpZEVuZCgpOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpOwogICAgIHZvaWQgbG9hZGluZ0ZhaWxlZChNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotICAgIHZvaWQgc291cmNlQ2hhbmdlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkKCk7CisKICAgICBHc3RFbGVtZW50KiBhdWRpb1Np
bmsoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29uZmlndXJlUGxheVNpbmso
KSB7IH0KIAogICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpIG92ZXJyaWRlOwog
Ci0gICAgYm9vbCBjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlk
ZSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEF1ZGlvU291cmNlUHJvdmlkZXIqPihtX2F1ZGlv
U291cmNlUHJvdmlkZXIuZ2V0KCkpOyB9CiAjZW5kaWYKIAorICAgIGJvb2wgaXNMaXZlU3RyZWFt
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1N0cmVhbWluZzsgfQorCisgICAgYm9vbCBo
YW5kbGVTeW5jTWVzc2FnZShHc3RNZXNzYWdlKikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwpAQCAtMTM1
LDE3ICsxNDIsMTcgQEAgcHJpdmF0ZToKIAogICAgIEdzdEVsZW1lbnQqIGNyZWF0ZUF1ZGlvU2lu
aygpIG92ZXJyaWRlOwogCi0gICAgZmxvYXQgcGxheWJhY2tQb3NpdGlvbigpIGNvbnN0OworICAg
IGRvdWJsZSBwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRl
cygpOwotICAgIHZvaWQgYXN5bmNTdGF0ZUNoYW5nZURvbmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU3RhdGVzKCk7CisgICAgdmlydHVhbCB2b2lkIGFzeW5jU3RhdGVDaGFuZ2VEb25lKCk7
CiAKICAgICB2b2lkIGNyZWF0ZUdTVFBsYXlCaW4oKTsKIAogICAgIGJvb2wgbG9hZE5leHRMb2Nh
dGlvbigpOwogICAgIHZvaWQgbWVkaWFMb2NhdGlvbkNoYW5nZWQoR3N0TWVzc2FnZSopOwogCi0g
ICAgdm9pZCBzZXREb3dubG9hZEJ1ZmZlcmluZygpOworICAgIHZpcnR1YWwgdm9pZCBzZXREb3du
bG9hZEJ1ZmZlcmluZygpOwogICAgIHZvaWQgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3Nh
Z2UqKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJfTVBFR1RTKQog
ICAgIHZvaWQgcHJvY2Vzc01wZWdUc1NlY3Rpb24oR3N0TXBlZ3RzU2VjdGlvbiopOwpAQCAtMTU0
LDIxICsxNjEsMzUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMo
R3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRv
Y0VudHJ5KiwgR3N0VG9jRW50cnkqIHBhcmVudCk7CiAjZW5kaWYKLSAgICBib29sIGRvU2Vlayhn
aW50NjQgcG9zaXRpb24sIGZsb2F0IHJhdGUsIEdzdFNlZWtGbGFncyBzZWVrVHlwZSk7Ci0gICAg
dm9pZCB1cGRhdGVQbGF5YmFja1JhdGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZG9TZWVrKGdpbnQ2
NCBwb3NpdGlvbiwgZmxvYXQgcmF0ZSwgR3N0U2Vla0ZsYWdzIHNlZWtUeXBlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUGxheWJhY2tSYXRlKCk7CiAKICAgICBTdHJpbmcgZW5naW5lRGVzY3Jp
cHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQotICAgIGJvb2wg
aXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1N0cmVhbWluZzsgfQog
ICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCi0jaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKLSAgICAvLyBUT0RPOiBJbXBsZW1lbnQKLSAgICB1bnNpZ25lZCBsb25nIHRvdGFs
VmlkZW9GcmFtZXMoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdW5zaWduZWQgbG9uZyBk
cm9wcGVkVmlkZW9GcmFtZXMoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdW5zaWduZWQg
bG9uZyBjb3JydXB0ZWRWaWRlb0ZyYW1lcygpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICBN
ZWRpYVRpbWUgdG90YWxGcmFtZURlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFUaW1lOjp6
ZXJvVGltZSgpOyB9Ci0jZW5kaWYKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGNhY2hlRHVyYXRpb24o
KTsKKworICAgIGJvb2wgbV9idWZmZXJpbmc7CisgICAgaW50IG1fYnVmZmVyaW5nUGVyY2VudGFn
ZTsKKyAgICBtdXRhYmxlIGZsb2F0IG1fY2FjaGVkUG9zaXRpb247CisgICAgYm9vbCBtX2NhbkZh
bGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRpb247CisgICAgYm9vbCBtX2NoYW5naW5nUmF0
ZTsKKyAgICBib29sIG1fZG93bmxvYWRGaW5pc2hlZDsKKyAgICBib29sIG1fZXJyb3JPY2N1cmVk
OworICAgIG11dGFibGUgYm9vbCBtX2lzRW5kUmVhY2hlZDsKKyAgICBtdXRhYmxlIGJvb2wgbV9p
c1N0cmVhbWluZzsKKyAgICBtdXRhYmxlIGdmbG9hdCBtX2R1cmF0aW9uQXRFT1M7CisgICAgYm9v
bCBtX3BhdXNlZDsKKyAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKKyAgICBHc3RTdGF0ZSBtX3Jl
cXVlc3RlZFN0YXRlOworICAgIGJvb2wgbV9yZXNldFBpcGVsaW5lOworICAgIGJvb2wgbV9zZWVr
aW5nOworICAgIGJvb2wgbV9zZWVrSXNQZW5kaW5nOworICAgIGZsb2F0IG1fc2Vla1RpbWU7Cisg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NvdXJjZTsKKyAgICBib29sIG1fdm9sdW1lQW5kTXV0
ZUluaXRpYWxpemVkOwogCiAgICAgdm9pZCByZWFkeVRpbWVyRmlyZWQoKTsKIApAQCAtMTk0LDM5
ICsyMTUsMjMgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgR3N0Rmxvd1JldHVybiBuZXdUZXh0U2Ft
cGxlQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CiAjZW5kaWYKIAorcHJp
dmF0ZToKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1f
d2Vha1B0ckZhY3Rvcnk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc291cmNlOwogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fdGV4dEFwcFNp
bms7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1fdGV4dEFwcFNpbmtQYWQ7CiAjZW5kaWYKLSAgICBm
bG9hdCBtX3NlZWtUaW1lOwotICAgIGJvb2wgbV9jaGFuZ2luZ1JhdGU7Ci0gICAgYm9vbCBtX2lz
RW5kUmVhY2hlZDsKLSAgICBtdXRhYmxlIGJvb2wgbV9pc1N0cmVhbWluZzsKICAgICBHc3RTdHJ1
Y3R1cmUqIG1fbWVkaWFMb2NhdGlvbnM7CiAgICAgaW50IG1fbWVkaWFMb2NhdGlvbkN1cnJlbnRJ
bmRleDsKLSAgICBib29sIG1fcmVzZXRQaXBlbGluZTsKLSAgICBib29sIG1fcGF1c2VkOwogICAg
IGJvb2wgbV9wbGF5YmFja1JhdGVQYXVzZTsKLSAgICBib29sIG1fc2Vla2luZzsKLSAgICBib29s
IG1fc2Vla0lzUGVuZGluZzsKICAgICBmbG9hdCBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlazsKLSAg
ICBib29sIG1fY2FuRmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdGlvbjsKLSAgICBib29s
IG1fYnVmZmVyaW5nOwotICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlOwogICAgIGZsb2F0IG1fbGFz
dFBsYXliYWNrUmF0ZTsKLSAgICBib29sIG1fZXJyb3JPY2N1cmVkOwotICAgIGJvb2wgbV9kb3du
bG9hZEZpbmlzaGVkOwotICAgIGZsb2F0IG1fZHVyYXRpb25BdEVPUzsKICAgICBUaW1lciBtX2Zp
bGxUaW1lcjsKICAgICBmbG9hdCBtX21heFRpbWVMb2FkZWQ7Ci0gICAgaW50IG1fYnVmZmVyaW5n
UGVyY2VudGFnZTsKICAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgYm9v
bCBtX2RlbGF5aW5nTG9hZDsKICAgICBtdXRhYmxlIGZsb2F0IG1fbWF4VGltZUxvYWRlZEF0TGFz
dERpZExvYWRpbmdQcm9ncmVzczsKLSAgICBib29sIG1fdm9sdW1lQW5kTXV0ZUluaXRpYWxpemVk
OwogICAgIGJvb2wgbV9oYXNWaWRlbzsKICAgICBib29sIG1faGFzQXVkaW87CiAgICAgUnVuTG9v
cDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBtX3JlYWR5VGltZXJIYW5kbGVy
OwpAQCAtMjM2LDcgKzI0MSw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4gbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyOwogI2VuZGlmCi0gICAgR3N0U3RhdGUgbV9yZXF1ZXN0ZWRTdGF0ZTsKICAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsKICAgICBSZWZQdHI8TWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IG1fbWlzc2luZ1BsdWdp
bnNDYWxsYmFjazsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yNDgsMTIgKzI1Miw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdU
UykKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fbWV0YWRhdGFUcmFja3M7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1f
bWVkaWFTb3VyY2U7Ci0gICAgYm9vbCBpc01lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZWRpYVNvdXJjZTsgfQotI2Vsc2UKLSAgICBib29sIGlzTWVkaWFTb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotI2VuZGlmCisgICAgdmlydHVhbCBib29sIGlzTWVkaWFTb3VyY2UoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291768</attachid>
            <date>2016-10-16 12:09:19 -0700</date>
            <delta_ts>2016-10-26 01:22:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162911-20161016190547.patch</filename>
            <type>text/plain</type>
            <size>33208</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM0NjFiYTlhOThjZjU4
NjBhZGI2YWNkZjgxYTI5OTNmZGExOTkxYi4uNTZlZTU3NmJkYzJmY2Y4MjFlZWRmMWE0ZTM1Yjkz
NjIzMjU3YjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXVtFTUVdIFJlbW92ZSBNU0UgY29kZSBmcm9tIHJlZ3VsYXIgcGxheWVyIGFu
ZCBhZGQgRU1FIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MjkxMQorCisgICAgICAgIE5vdyB0aGF0IHRoZSBNU0UgcmVzcG9uc2liaWxp
dHkgaGFzIGJlZW4gcmVmYWN0b3JlZCB0byB0aGUgZGVkaWNhdGVkCisgICAgICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRSBzdWJjbGFzcywgdGhlIHJlZ3VsYXIgcGxheWVyIG5vIGxv
bmdlciBuZWVkcyB0aGUgTVNFIGNvZGUsCisgICAgICAgIGp1c3QgdG8gZXhwb3NlIHNvbWUgbW9y
ZSBtZXRob2RzIHRvIHRoZSBzdWJjbGFzcy4gRmxvYXQgdGltZXN0YW1wcyBoYXZlIGJlZW4gbWln
cmF0ZWQgdG8KKyAgICAgICAgZG91YmxlLiBBbHNvLCBzbWFsbCBjaGFuZ2VzIHRvIGFjY29tb2Rh
dGUgdGhlIEVNRSBzdXBwb3J0IGFyZSBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBj
by1hdXRob3JlZCB3aXRoIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+IChFTUUg
c3VwcG9ydCkgYW5kCisgICAgICAgIMW9YW4gRG9iZXLFoWVrIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+IChkb3VibGUgdGltZXN0YW1wcykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJv
ZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1c01l
c3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbk1lZGlhVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRNZWRpYVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG9TZWVrKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZW
aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5v
dGlmeVBsYXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4
VGltZVNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bWF4VGltZUxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmRpZExvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNvdXJjZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQ
bGF5QmluKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aGFuZGxlU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb21taXRMb2FkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp2aWRlb0NoYW5nZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2spOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlQbGF5ZXJPZlZpZGVvQ2Fwcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp0b3RhbEJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRTdGF0ZUNoYW5nZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp0aW1lQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZVNldCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNyZWF0ZUF1ZGlvU2luayk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVQbGF5U2luayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzTWVkaWFTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVX
ZWFrUHRyKTogRGVsZXRlZC4KKworMjAxNi0xMC0wNCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6
ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHU3RyZWFtZXJdW0VNRV0gQWRkIEVN
RSBzdXBwb3J0IHRvIGJhc2UgcHJpdmF0ZSBwbGF5ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDA3ODQ2Y2E1ZmI2YTNiZTI5Njc1ZTJi
MTIwNTBhMTA4NmMzNzUyNDguLmYwMDU1ODAzN2YzMWFjNzM2MTQyYjg2MmI2MTAzNzNiZDlmNTcz
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0zLDggKzMsOSBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxw
QGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR3VzdGF2byBOb3JvbmhhIFNpbHZh
IDxnbnNAZ25vbWUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEy
LCAyMDEzIElnYWxpYSBTLkwKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMywgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2Fi
bGUgVGVsZXZpc2lvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwg
MjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03Nyw2
ICs3OCwxMSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyB2b2lkIGJ1c01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNz
YWdlLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKK3sKKyAgICBwbGF5ZXIt
PmhhbmRsZU1lc3NhZ2UobWVzc2FnZSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayhNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIqIHBsYXllciwgR09iamVjdCogb2JqZWN0KQogewogICAgIHBsYXllci0+c2V0
QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKG9iamVjdCk7CkBAIC05OSw3ICsxMDUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpcwogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQogICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIGdl
dFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVt
KTsKIH0KIAogYm9vbCBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50
cygpCkBAIC0xMDcsMTcgKzExMywxNCBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXIoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgcmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cygpOworCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gc3JjRmFjdG9yeSA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoIndlYmtpdHdlYnNyYyIpKTsKICAgICBpZiAo
IXNyY0ZhY3RvcnkpIHsKICAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21l
ZGlhX3BsYXllcl9kZWJ1ZywgIndlYmtpdG1lZGlhcGxheWVyIiwgMCwgIldlYktpdCBtZWRpYSBw
bGF5ZXIiKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdHdlYnNyYyIs
IEdTVF9SQU5LX1BSSU1BUlkgKyAxMDAsIFdFQktJVF9UWVBFX1dFQl9TUkMpOwogICAgIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4g
V2ViS2l0TWVkaWFTcmNGYWN0b3J5ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2ZhY3RvcnlfZmlu
ZCgid2Via2l0bWVkaWFzcmMiKSk7Ci0gICAgaWYgKCFXZWJLaXRNZWRpYVNyY0ZhY3RvcnkpCi0g
ICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRtZWRpYXNyYyIsIEdTVF9SQU5L
X1BSSU1BUlkgKyAxMDAsIFdFQktJVF9UWVBFX01FRElBX1NSQyk7Ci0jZW5kaWYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTMyLDM0ICsxMzUsMzUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKCkKIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UocGxheWVyKQotICAgICwgbV93ZWFrUHRy
RmFjdG9yeSh0aGlzKQotICAgICwgbV9zb3VyY2UoMCkKLSAgICAsIG1fc2Vla1RpbWUoMCkKKyAg
ICAsIG1fYnVmZmVyaW5nKGZhbHNlKQorICAgICwgbV9idWZmZXJpbmdQZXJjZW50YWdlKDApCisg
ICAgLCBtX2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRpb24oZmFsc2UpCiAgICAg
LCBtX2NoYW5naW5nUmF0ZShmYWxzZSkKKyAgICAsIG1fZG93bmxvYWRGaW5pc2hlZChmYWxzZSkK
KyAgICAsIG1fZXJyb3JPY2N1cmVkKGZhbHNlKQogICAgICwgbV9pc0VuZFJlYWNoZWQoZmFsc2Up
CiAgICAgLCBtX2lzU3RyZWFtaW5nKGZhbHNlKQotICAgICwgbV9tZWRpYUxvY2F0aW9ucygwKQot
ICAgICwgbV9tZWRpYUxvY2F0aW9uQ3VycmVudEluZGV4KDApCi0gICAgLCBtX3Jlc2V0UGlwZWxp
bmUoZmFsc2UpCisgICAgLCBtX2R1cmF0aW9uQXRFT1MoMCkKICAgICAsIG1fcGF1c2VkKHRydWUp
Ci0gICAgLCBtX3BsYXliYWNrUmF0ZVBhdXNlKGZhbHNlKQorICAgICwgbV9wbGF5YmFja1JhdGUo
MSkKKyAgICAsIG1fcmVxdWVzdGVkU3RhdGUoR1NUX1NUQVRFX1ZPSURfUEVORElORykKKyAgICAs
IG1fcmVzZXRQaXBlbGluZShmYWxzZSkKICAgICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1f
c2Vla0lzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fc2Vla1RpbWUoMCkKKyAgICAsIG1fc291cmNl
KDApCisgICAgLCBtX3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1fd2Vh
a1B0ckZhY3RvcnkodGhpcykKKyAgICAsIG1fbWVkaWFMb2NhdGlvbnMoMCkKKyAgICAsIG1fbWVk
aWFMb2NhdGlvbkN1cnJlbnRJbmRleCgwKQorICAgICwgbV9wbGF5YmFja1JhdGVQYXVzZShmYWxz
ZSkKICAgICAsIG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrKC0xKQotICAgICwgbV9jYW5GYWxsQmFj
a1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0aW9uKGZhbHNlKQotICAgICwgbV9idWZmZXJpbmcoZmFs
c2UpCi0gICAgLCBtX3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9sYXN0UGxheWJhY2tSYXRlKDEp
Ci0gICAgLCBtX2Vycm9yT2NjdXJlZChmYWxzZSkKLSAgICAsIG1fZG93bmxvYWRGaW5pc2hlZChm
YWxzZSkKLSAgICAsIG1fZHVyYXRpb25BdEVPUygwKQogICAgICwgbV9maWxsVGltZXIoKnRoaXMs
ICZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKQogICAgICwgbV9t
YXhUaW1lTG9hZGVkKDApCi0gICAgLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UoMCkKICAgICAsIG1f
cHJlbG9hZChwbGF5ZXItPnByZWxvYWQoKSkKICAgICAsIG1fZGVsYXlpbmdMb2FkKGZhbHNlKQog
ICAgICwgbV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzKDApCi0gICAgLCBt
X3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1faGFzVmlkZW8oZmFsc2Up
CiAgICAgLCBtX2hhc0F1ZGlvKGZhbHNlKQogICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5VGlt
ZXJGaXJlZCkKQEAgLTE2OCw3ICsxNzIsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAgICAgLCBtX2F1ZGlvU291cmNlUHJvdmlkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpKQogI2VuZGlmCi0gICAgLCBtX3Jl
cXVlc3RlZFN0YXRlKEdTVF9TVEFURV9WT0lEX1BFTkRJTkcpCiB7CiAjaWYgVVNFKEdMSUIpICYm
ICFQTEFURk9STShFRkwpCiAgICAgbV9yZWFkeVRpbWVySGFuZGxlci5zZXRQcmlvcml0eShHX1BS
SU9SSVRZX0RFRkFVTFRfSURMRSk7CkBAIC0yMDUsMTggKzIwOCwyMCBAQCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBt
X21pc3NpbmdQbHVnaW5zQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChtX3Zp
ZGVvU2luaykgeworICAgICAgICBHUmVmUHRyPEdzdFBhZD4gdmlkZW9TaW5rUGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fdmlkZW9TaW5rLmdldCgpLCAic2luayIp
KTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKHZpZGVvU2lu
a1BhZC5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwg
dGhpcyk7CisgICAgfQorCiAgICAgaWYgKG1fcGlwZWxpbmUpIHsKICAgICAgICAgR1JlZlB0cjxH
c3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUo
bV9waXBlbGluZS5nZXQoKSkpKTsKICAgICAgICAgQVNTRVJUKGJ1cyk7CisgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMuZ2V0KCksIGdwb2ludGVyKGJ1c01l
c3NhZ2VDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0
Y2goYnVzLmdldCgpKTsKICAgICAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJz
X2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3BpcGVsaW5lLmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRB
LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKICAgICB9Ci0KLSAgICBp
ZiAobV92aWRlb1NpbmspIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHZpZGVvU2lua1BhZCA9
IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3ZpZGVvU2luay5nZXQoKSwg
InNpbmsiKSk7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh2
aWRlb1NpbmtQYWQuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHZpZGVvU2lua0Nh
cHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMjY1LDEx
ICsyNzAsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCwgTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCop
CiB7Ci0gICAgU3RyaW5nIG1lZGlhc291cmNlVXJpID0gU3RyaW5nOjpmb3JtYXQoIm1lZGlhc291
cmNlJXMiLCB1cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291
cmNlOwotICAgIGxvYWQobWVkaWFzb3VyY2VVcmkpOworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAjZW5kaWYKIApAQCAtMjkzLDcgKzI5Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpjb21taXRMb2FkKCkKICAgICB1cGRhdGVTdGF0ZXMoKTsKIH0KIAotZmxvYXQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3QKK2RvdWJs
ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAog
ewogICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgewogICAgICAgICAvLyBQb3NpdGlvbiBxdWVyaWVz
IG9uIGEgbnVsbCBwaXBlbGluZSByZXR1cm4gMC4gSWYgd2UncmUgYXQKQEAgLTMwMyw5ICszMDYs
OSBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24o
KSBjb25zdAogICAgICAgICBpZiAobV9zZWVraW5nKQogICAgICAgICAgICAgcmV0dXJuIG1fc2Vl
a1RpbWU7CiAKLSAgICAgICAgZmxvYXQgbWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9uKCk7CisgICAg
ICAgIE1lZGlhVGltZSBtZWRpYUR1cmF0aW9uID0gZHVyYXRpb25NZWRpYVRpbWUoKTsKICAgICAg
ICAgaWYgKG1lZGlhRHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gbWVkaWFEdXJhdGlvbjsK
KyAgICAgICAgICAgIHJldHVybiBtZWRpYUR1cmF0aW9uLnRvRG91YmxlKCk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMzE4LDExICszMjEsMTEgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3QKIAogICAgIEdTVF9ERUJV
RygiUG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHBvc2l0aW9uKSk7
CiAKLSAgICBmbG9hdCByZXN1bHQgPSAwLjBmOworICAgIGRvdWJsZSByZXN1bHQgPSAwLjBmOwog
ICAgIGlmIChzdGF0aWNfY2FzdDxHc3RDbG9ja1RpbWU+KHBvc2l0aW9uKSAhPSBHU1RfQ0xPQ0tf
VElNRV9OT05FKSB7CiAgICAgICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKICAgICAgICAgR1NUX1RJ
TUVfVE9fVElNRVZBTChwb3NpdGlvbiwgdGltZVZhbHVlKTsKLSAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRpbWVWYWx1ZS50dl9zZWMgKyAodGltZVZhbHVlLnR2X3VzZWMgLyAx
MDAwMDAwLjApKTsKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lVmFs
dWUudHZfc2VjICsgKHRpbWVWYWx1ZS50dl91c2VjIC8gMTAwMDAwMC4wKSk7CiAgICAgfSBlbHNl
IGlmIChtX2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRpb24pCiAgICAgICAgIHJl
c3VsdCA9IG1fc2Vla1RpbWU7CiAKQEAgLTQxMywyMCArNDE2LDIwIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSgpCiAgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQ
bGF5ZXI6OkVtcHR5KTsKIH0KIAotZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpk
dXJhdGlvbigpIGNvbnN0CitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpk
dXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BpcGVsaW5lKQotICAgICAg
ICByZXR1cm4gMC4wZjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChtX2Vycm9yT2Nj
dXJlZCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBp
ZiAobV9kdXJhdGlvbkF0RU9TKQotICAgICAgICByZXR1cm4gbV9kdXJhdGlvbkF0RU9TOworICAg
ICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQobV9kdXJhdGlvbkF0RU9TKTsK
IAogICAgIC8vIFRoZSBkdXJhdGlvbiBxdWVyeSB3b3VsZCBmYWlsIG9uIGEgbm90LXByZXJvbGxl
ZCBwaXBlbGluZS4KICAgICBpZiAoR1NUX1NUQVRFKG1fcGlwZWxpbmUuZ2V0KCkpIDwgR1NUX1NU
QVRFX1BBVVNFRCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBHc3RGb3JtYXQgdGltZUZvcm1hdCA9IEdTVF9GT1JNQVRfVElNRTsKICAgICBnaW50NjQg
dGltZUxlbmd0aCA9IDA7CkBAIC00MzQsMjUgKzQzNywyNSBAQCBmbG9hdCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKCkgY29uc3QKICAgICBib29sIGZhaWx1cmUgPSAhZ3N0
X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24obV9waXBlbGluZS5nZXQoKSwgdGltZUZvcm1hdCwgJnRp
bWVMZW5ndGgpIHx8IHN0YXRpY19jYXN0PGd1aW50NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9D
S19USU1FX05PTkU7CiAgICAgaWYgKGZhaWx1cmUpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUaW1l
IGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsK
KyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICB9
CiAKICAgICBHU1RfREVCVUcoIkR1cmF0aW9uOiAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1F
X0FSR1ModGltZUxlbmd0aCkpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odGlt
ZUxlbmd0aCkgLyBHU1RfU0VDT05EOworICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lTGVuZ3RoKSAvIEdTVF9TRUNPTkQpOwogICAg
IC8vIEZJWE1FOiBoYW5kbGUgMy4xNC45LjUgcHJvcGVybHkKIH0KIAotZmxvYXQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CitNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcGlwZWxpbmUpCi0gICAgICAgIHJldHVybiAwLjBmOworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkKQotICAgICAgICByZXR1cm4gMC4wZjsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChtX3NlZWtpbmcpCi0gICAgICAgIHJldHVybiBtX3Nl
ZWtUaW1lOworICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQobV9zZWVr
VGltZSk7CiAKICAgICAvLyBXb3JrYXJvdW5kIGZvcgogICAgIC8vIGh0dHBzOi8vYnVnemlsbGEu
Z25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzk5NDEgSW4gR1N0cmVhbWVyCkBAIC00NjAsOSAr
NDYzLDkgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgp
IGNvbnN0CiAgICAgLy8gbmVnYXRpdmUgcGxheWJhY2sgcmF0ZS4gVGhlcmUncyBubyB1cHN0cmVh
bSBhY2NlcHRlZCBwYXRjaCBmb3IKICAgICAvLyB0aGlzIGJ1ZyB5ZXQsIGhlbmNlIHRoaXMgdGVt
cG9yYXJ5IHdvcmthcm91bmQuCiAgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmIG1fcGxheWJhY2tS
YXRlIDwgMCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICByZXR1cm4gcGxheWJhY2tQb3NpdGlvbigpOworICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUocGxheWJhY2tQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKQEAgLTQ3Niw3ICs0NzksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2VlayhmbG9hdCB0aW1lKQogICAgIEdTVF9J
TkZPKCJbU2Vla10gc2VlayBhdHRlbXB0IHRvICVmIHNlY3MiLCB0aW1lKTsKIAogICAgIC8vIEF2
b2lkIHVzZWxlc3Mgc2Vla2luZy4KLSAgICBpZiAodGltZSA9PSBjdXJyZW50VGltZSgpKQorICAg
IGlmIChNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCh0aW1lKSA9PSBjdXJyZW50TWVkaWFUaW1l
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc0xpdmVTdHJlYW0oKSkKQEAgLTUzNyw3
ICs1NDAsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG9TZWVrKGdpbnQ2
NCBwb3NpdGlvbiwgZmxvYXQgcmF0ZSwgR3N0U2Vla0ZsYQogICAgICAgICAvLyBJZiB3ZSBhcmUg
YXQgYmVnaW5uaW5nIG9mIG1lZGlhLCBzdGFydCBmcm9tIHRoZSBlbmQgdG8KICAgICAgICAgLy8g
YXZvaWQgaW1tZWRpYXRlIEVPUy4KICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkKLSAgICAgICAg
ICAgIGVuZFRpbWUgPSBzdGF0aWNfY2FzdDxnaW50NjQ+KGR1cmF0aW9uKCkgKiBHU1RfU0VDT05E
KTsKKyAgICAgICAgICAgIGVuZFRpbWUgPSBzdGF0aWNfY2FzdDxnaW50NjQ+KGR1cmF0aW9uTWVk
aWFUaW1lKCkudG9Eb3VibGUoKSAqIEdTVF9TRUNPTkQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBlbmRUaW1lID0gcG9zaXRpb247CiAgICAgfQpAQCAtNjA0LDcgKzYwNyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQoKSBjb25zdAogCiAgICAgR3N0U3Rh
dGUgc3RhdGU7CiAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksICZz
dGF0ZSwgbnVsbHB0ciwgMCk7Ci0gICAgcmV0dXJuIHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQ7
CisgICAgcmV0dXJuIHN0YXRlIDw9IEdTVF9TVEFURV9QQVVTRUQ7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVraW5nKCkgY29uc3QKQEAgLTYxOSwxMSArNjIyLDIz
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NoYW5nZWRDYWxsYmFj
ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKIHsKKyAgICBpZiAoVU5MSUtFTFkoIW1fcGlw
ZWxpbmUgfHwgIW1fc291cmNlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ2ludCBudW1UcmFj
a3MgPSAwOwotICAgIGlmIChtX3BpcGVsaW5lKQotICAgICAgICBnX29iamVjdF9nZXQobV9waXBl
bGluZS5nZXQoKSwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKKyAgICBib29sIHVz
ZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOworICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQg
PSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsKKyAg
ICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsK
IAogICAgIG1faGFzVmlkZW8gPSBudW1UcmFja3MgPiAwOworICAgIGlmIChtX2hhc1ZpZGVvKQor
ICAgICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKKworICAgIGlmICh1c2VNZWRpYVNvdXJj
ZSkgeworICAgICAgICBHU1RfREVCVUcoIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50
LiBCYWlsaW5nIG91dCBub3cuIik7CisgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGZvciAoZ2ludCBpID0gMDsgaSA8IG51bVRyYWNr
czsgKytpKSB7CkBAIC02NzIsMTIgKzY4NywyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiB7CisgICAgaWYgKFVOTElLRUxZKCFtX3BpcGVsaW5lIHx8ICFtX3NvdXJjZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGdpbnQgbnVtVHJhY2tzID0gMDsKLSAgICBpZiAobV9waXBlbGluZSkK
LSAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJuLWF1ZGlvIiwgJm51bVRy
YWNrcywgbnVsbHB0cik7CisgICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3VyY2Uo
KTsKKyAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5n
ZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7CisgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLWF1
ZGlvIiwgJm51bVRyYWNrcywgbnVsbHB0cik7CiAKICAgICBtX2hhc0F1ZGlvID0gbnVtVHJhY2tz
ID4gMDsKIAorICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgeworICAgICAgICBHU1RfREVCVUcoIlRy
YWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cuIik7CisgICAg
ICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IGZvciAoZ2ludCBpID0gMDsgaSA8IG51bVRyYWNrczsgKytpKSB7CiAgICAgICAgIEdSZWZQdHI8
R3N0UGFkPiBwYWQ7CkBAIC03MTUsOSArNzQwLDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp0ZXh0Q2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQo
KQogeworICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQorICAgICAg
ICByZXR1cm47CisKICAgICBnaW50IG51bVRyYWNrcyA9IDA7Ci0gICAgaWYgKG1fcGlwZWxpbmUp
Ci0gICAgICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAibi10ZXh0IiwgJm51bVRy
YWNrcywgbnVsbHB0cik7CisgICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3VyY2Uo
KTsKKyAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5n
ZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7CisgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLXRl
eHQiLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKKworICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewor
ICAgICAgICBHU1RfREVCVUcoIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWls
aW5nIG91dCBub3cuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3IgKGdpbnQg
aSA9IDA7IGkgPCBudW1UcmFja3M7ICsraSkgewogICAgICAgICBHUmVmUHRyPEdzdFBhZD4gcGFk
OwpAQCAtODQxLDcgKzg3NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zCiAgICAgaWYgKG1f
ZXJyb3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdl
czsKIAotICAgIGZsb2F0IG1lZGlhRHVyYXRpb24oZHVyYXRpb24oKSk7CisgICAgZmxvYXQgbWVk
aWFEdXJhdGlvbihkdXJhdGlvbk1lZGlhVGltZSgpLnRvRG91YmxlKCkpOwogICAgIGlmICghbWVk
aWFEdXJhdGlvbiB8fCBzdGQ6OmlzaW5mKG1lZGlhRHVyYXRpb24pKQogICAgICAgICByZXR1cm4g
dGltZVJhbmdlczsKIApAQCAtOTU5LDcgKzk5Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIHBy
b2Nlc3NCdWZmZXJpbmdTdGF0cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBH
U1RfTUVTU0FHRV9EVVJBVElPTl9DSEFOR0VEOgotICAgICAgICBpZiAobWVzc2FnZVNvdXJjZUlz
UGxheWJpbikKKyAgICAgICAgLy8gRHVyYXRpb24gaW4gTVNFIGlzIG1hbmFnZWQgYnkgTWVkaWFT
b3VyY2UsIFNvdXJjZUJ1ZmZlciBhbmQgQXBwZW5kUGlwZWxpbmUuCisgICAgICAgIGlmIChtZXNz
YWdlU291cmNlSXNQbGF5YmluICYmICFpc01lZGlhU291cmNlKCkpCiAgICAgICAgICAgICBkdXJh
dGlvbkNoYW5nZWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9SRVFV
RVNUX1NUQVRFOgpAQCAtMTEwNyw3ICsxMTQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnByb2Nlc3NNcGVnVHNTZWN0aW9uKEdzdE1wZWd0c1NlY3Rpb24qIHNlY3Rpb24K
ICAgICAgICAgZ3NpemUgc2l6ZTsKICAgICAgICAgY29uc3Qgdm9pZCogYnl0ZXMgPSBnX2J5dGVz
X2dldF9kYXRhKGRhdGEuZ2V0KCksICZzaXplKTsKIAotICAgICAgICB0cmFjay0+YWRkRGF0YUN1
ZShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoY3VycmVudFRpbWVEb3VibGUoKSksIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShjdXJyZW50VGltZURvdWJsZSgpKSwgYnl0ZXMsIHNpemUp
OworICAgICAgICB0cmFjay0+YWRkRGF0YUN1ZShjdXJyZW50TWVkaWFUaW1lKCksIGN1cnJlbnRN
ZWRpYVRpbWUoKSwgYnl0ZXMsIHNpemUpOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTE4MSw3ICsx
MjE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVk
KCkKIAogICAgIEdTVF9ERUJVRygiW0J1ZmZlcmluZ10gRG93bmxvYWQgYnVmZmVyIGZpbGxlZCB1
cCB0byAlZiUlIiwgZmlsbFN0YXR1cyk7CiAKLSAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVy
YXRpb24oKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVyYXRpb25NZWRpYVRpbWUoKS50
b0RvdWJsZSgpOwogCiAgICAgLy8gVXBkYXRlIG1heFRpbWVMb2FkZWQgb25seSBpZiB0aGUgbWVk
aWEgZHVyYXRpb24gaXMKICAgICAvLyBhdmFpbGFibGUuIE90aGVyd2lzZSB3ZSBjYW4ndCBjb21w
dXRlIGl0LgpAQCAtMTIxMSw3ICsxMjQ2LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkK
ICAgICAgICAgcmV0dXJuIDAuMGY7CiAKLSAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVyYXRp
b24oKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVyYXRpb25NZWRpYVRpbWUoKS50b0Rv
dWJsZSgpOwogICAgIEdTVF9ERUJVRygibWF4VGltZVNlZWthYmxlLCBkdXJhdGlvbjogJWYiLCBt
ZWRpYUR1cmF0aW9uKTsKICAgICAvLyBpbmZpbml0ZSBkdXJhdGlvbiBtZWFucyBsaXZlIHN0cmVh
bQogICAgIGlmIChzdGQ6OmlzaW5mKG1lZGlhRHVyYXRpb24pKQpAQCAtMTIyNywxNCArMTI2Miwx
NCBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1heFRpbWVMb2FkZWQoKSBj
b25zdAogCiAgICAgZmxvYXQgbG9hZGVkID0gbV9tYXhUaW1lTG9hZGVkOwogICAgIGlmIChtX2lz
RW5kUmVhY2hlZCkKLSAgICAgICAgbG9hZGVkID0gZHVyYXRpb24oKTsKKyAgICAgICAgbG9hZGVk
ID0gZHVyYXRpb25NZWRpYVRpbWUoKS50b0RvdWJsZSgpOwogICAgIEdTVF9ERUJVRygibWF4VGlt
ZUxvYWRlZDogJWYiLCBsb2FkZWQpOwogICAgIHJldHVybiBsb2FkZWQ7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAogewot
ICAgIGlmICghbV9waXBlbGluZSB8fCAhZHVyYXRpb24oKSB8fCAoIWlzTWVkaWFTb3VyY2UoKSAm
JiAhdG90YWxCeXRlcygpKSkKKyAgICBpZiAoVU5MSUtFTFkoIW1fcGlwZWxpbmUgfHwgIWR1cmF0
aW9uTWVkaWFUaW1lKCkgfHwgKCFpc01lZGlhU291cmNlKCkgJiYgIXRvdGFsQnl0ZXMoKSkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZmxvYXQgY3VycmVudE1heFRpbWVMb2FkZWQgPSBt
YXhUaW1lTG9hZGVkKCk7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MgPSBjdXJyZW50TWF4
VGltZUxvYWRlZCAhPSBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7CkBA
IC0xMzEwLDExICsxMzQ1LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNv
dXJjZUNoYW5nZWQoKQogCiAgICAgaWYgKFdFQktJVF9JU19XRUJfU1JDKG1fc291cmNlLmdldCgp
KSkKICAgICAgICAgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV0VCS0lUX1dFQl9TUkMobV9z
b3VyY2UuZ2V0KCkpLCBtX3BsYXllcik7Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBp
ZiAobV9tZWRpYVNvdXJjZSAmJiBXRUJLSVRfSVNfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSkg
ewotICAgICAgICBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3BlbihtX21lZGlhU291cmNlLmdldCgp
LCBXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYW5jZWxMb2FkKCkKQEAgLTE2MTIs
OCArMTY0Miw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQog
ICAgIC8vIFN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBkdXJhdGlvbiB2YWx1ZXMgdG8gbm90IGNv
bmZ1c2UgdGhlCiAgICAgLy8gSFRNTE1lZGlhRWxlbWVudC4gSW4gc29tZSBjYXNlcyBsaWtlIHJl
dmVyc2UgcGxheWJhY2sgdGhlCiAgICAgLy8gcG9zaXRpb24gaXMgbm90IGFsd2F5cyByZXBvcnRl
ZCBhcyAwIGZvciBpbnN0YW5jZS4KLSAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwotICAg
IGlmIChub3cgPiAwICYmIG5vdyA8PSBkdXJhdGlvbigpKQorICAgIE1lZGlhVGltZSBub3cgPSBj
dXJyZW50TWVkaWFUaW1lKCk7CisgICAgaWYgKG5vdyA+IE1lZGlhVGltZSB7IH0gJiYgbm93IDw9
IGR1cmF0aW9uTWVkaWFUaW1lKCkpCiAgICAgICAgIG1fcGxheWVyLT5kdXJhdGlvbkNoYW5nZWQo
KTsKIAogICAgIG1faXNFbmRSZWFjaGVkID0gdHJ1ZTsKQEAgLTE2MjEsNyArMTY1MSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQogCiAgICAgaWYgKCFtX3Bs
YXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSkgewogICAgICAgICBtX3BhdXNl
ZCA9IHRydWU7Ci0gICAgICAgIG1fZHVyYXRpb25BdEVPUyA9IGR1cmF0aW9uKCk7CisgICAgICAg
IG1fZHVyYXRpb25BdEVPUyA9IGR1cmF0aW9uTWVkaWFUaW1lKCkudG9Eb3VibGUoKTsKICAgICAg
ICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUkVBRFkpOwogICAgICAgICBtX2Rvd25s
b2FkRmluaXNoZWQgPSBmYWxzZTsKICAgICB9CkBAIC0xNjI5LDEyICsxNjU5LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFuZ2VkKCkKIHsKLSAgICBmbG9hdCBwcmV2aW91
c0R1cmF0aW9uID0gZHVyYXRpb24oKTsKKyAgICBmbG9hdCBwcmV2aW91c0R1cmF0aW9uID0gZHVy
YXRpb25NZWRpYVRpbWUoKS50b0RvdWJsZSgpOwogCiAgICAgLy8gQXZvaWQgZW1pdGluZyBkdXJh
dGlvbmNoYW5nZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHByZXZpb3VzCiAgICAgLy8gZHVyYXRp
b24gd2FzIDAgYmVjYXVzZSB0aGF0IGNhc2UgaXMgYWxyZWFkeSBoYW5kbGVkIGJ5IHRoZQogICAg
IC8vIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgaWYgKHByZXZpb3VzRHVyYXRpb24gJiYgZHVyYXRp
b24oKSAhPSBwcmV2aW91c0R1cmF0aW9uKQorICAgIGlmIChwcmV2aW91c0R1cmF0aW9uICYmIGR1
cmF0aW9uTWVkaWFUaW1lKCkudG9Eb3VibGUoKSAhPSBwcmV2aW91c0R1cmF0aW9uKQogICAgICAg
ICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7CiB9CiAKQEAgLTE3ODksMTggKzE4MTksMjUg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnMKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFIGlz
IGluIGNoYXJnZSBvZiBtZWRpYXNvdXJjZSBwbGF5YmFjaywgbm90IHVzLgorICAgIGlmIChwYXJh
bWV0ZXJzLmlzTWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisjZW5kaWYKKwog
ICAgIC8vIE1lZGlhU3RyZWFtIHBsYXliYWNrIGlzIGhhbmRsZWQgYnkgdGhlIE9wZW5XZWJSVEMg
cGxheWVyLgogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0pCi0gICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7Ci0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNOdWxsKCkgfHwgcGFyYW1ldGVycy50eXBlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIHNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJl
dHVybiAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5CiAgICAgaWYgKG1p
bWVUeXBlU2V0KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKLSAgICAgICAgcmV0dXJuIHBh
cmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6
IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOworICAgICAgICByZXN1bHQgPSBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkg
PyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7
CisKKyAgICByZXR1cm4gZXh0ZW5kZWRTdXBwb3J0c1R5cGUocGFyYW1ldGVycywgcmVzdWx0KTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldERvd25sb2FkQnVmZmVy
aW5nKCkKQEAgLTE5MjUsMTggKzE5NjIsMTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihi
dXMuZ2V0KCksIFtdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJE
YXRhKSB7CiAgICAgICAgIGF1dG8mIHBsYXllciA9ICpzdGF0aWNfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7CiAKLSAgICAgICAgaWYgKCFwbGF5ZXIuaGFuZGxl
U3luY01lc3NhZ2UobWVzc2FnZSkpIHsKLSAgICAgICAgICAgIEdSZWZQdHI8R3N0TWVzc2FnZT4g
cHJvdGVjdGVkTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIGF1dG8gd2Vha1RoaXMgPSBw
bGF5ZXIuY3JlYXRlV2Vha1B0cigpOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrVGhpcywgcHJvdGVjdGVkTWVzc2FnZV0gewotICAgICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKLSAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmhhbmRsZU1lc3NhZ2UocHJv
dGVjdGVkTWVzc2FnZS5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgaWYgKHBsYXll
ci5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKSkgeworICAgICAgICAgICAgZ3N0X21lc3NhZ2Vf
dW5yZWYobWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gR1NUX0JVU19EUk9QOwogICAgICAg
ICB9Ci0gICAgICAgIGdzdF9tZXNzYWdlX3VucmVmKG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4g
R1NUX0JVU19EUk9QOworCisgICAgICAgIHJldHVybiBHU1RfQlVTX1BBU1M7CiAgICAgfSwgdGhp
cywgbnVsbHB0cik7CiAKKyAgICAvLyBMZXQgYWxzbyBvdGhlciBsaXN0ZW5lcnMgc3Vic2NyaWJl
IHRvIChhcHBsaWNhdGlvbikgbWVzc2FnZXMgaW4gdGhpcyBidXMuCisgICAgZ3N0X2J1c19hZGRf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCks
ICJtZXNzYWdlIiwgR19DQUxMQkFDSyhidXNNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKwogICAg
IGdfb2JqZWN0X3NldChtX3BpcGVsaW5lLmdldCgpLCAibXV0ZSIsIG1fcGxheWVyLT5tdXRlZCgp
LCBudWxscHRyKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3BpcGVsaW5lLmdl
dCgpLCAibm90aWZ5Ojpzb3VyY2UiLCBHX0NBTExCQUNLKHNvdXJjZUNoYW5nZWRDYWxsYmFjayks
IHRoaXMpOwpAQCAtMTk2Myw2ICsyMDAwLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogCiAgICAgZ19vYmplY3Rfc2V0KG1fcGlwZWxpbmUu
Z2V0KCksICJ2aWRlby1zaW5rIiwgY3JlYXRlVmlkZW9TaW5rKCksICJhdWRpby1zaW5rIiwgY3Jl
YXRlQXVkaW9TaW5rKCksIG51bGxwdHIpOwogCisgICAgY29uZmlndXJlUGxheVNpbmsoKTsKKwog
ICAgIC8vIE9uIDEuNC4yIGFuZCBuZXdlciB3ZSB1c2UgdGhlIGF1ZGlvLWZpbHRlciBwcm9wZXJ0
eSBpbnN0ZWFkLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM1NzQ4IGZvcgogICAgIC8vIHRoZSByZWFzb24gZm9yIHVzaW5nID49IDEuNC4y
IGluc3RlYWQgb2YgPj0gMS40LjAuCkBAIC0yMDE1LDYgKzIwNTQsMTEgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVN5
bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmhhbmRsZVN5bmNNZXNzYWdlKG1lc3NhZ2UpOworfQorCiB9
CiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGFjZDc2OWZlMjliZDZhYjMxMjE3NGIzMDBiMDljNTY5
NzAwNWZjMjAuLjE4Y2JhYWYwMTljMmI3M2Y1ZTAwNTliZmQ5YmNlOTljMjI0M2MxZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIsOCArMiw5
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE1LCAyMDE2IElnYWxpYSBTLkwK
ICAqIENvcHlyaWdodCAoQykgMjAxNCBDYWJsZSBUZWxldmlzaW9uIExhYm9yYXRvcmllcywgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
I2luY2x1ZGUgIk1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jZW5kaWYKLQogdHlwZWRlZiBzdHJ1
Y3QgX0dzdEJ1ZmZlciBHc3RCdWZmZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RN
ZXNzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKQEAgLTYyLDEw
ICs1OSwxNCBAQCBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOwogY2xhc3Mg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s7CiBjbGFzcyBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitj
bGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7CisjZW5kaWYKKwogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihN
ZWRpYVBsYXllciopOwotICAgIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKTsKKyAgICB2
aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKTsKIAogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogICAgIHZvaWQgaGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CkBAIC05MSw4ICs5Miw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBmbG9h
dCBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBkdXJhdGlvbk1l
ZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWVrKGZsb2F0KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgc2V0UmF0ZShmbG9hdCkgb3ZlcnJpZGU7CkBAIC0xMTEsMjAgKzExMiwyNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCB0aW1lQ2hhbmdlZCgp
OwogICAgIHZvaWQgZGlkRW5kKCk7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCi0gICAgdm9pZCBzb3VyY2VDaGFuZ2VkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWQoKTsKKwogICAgIEdzdEVsZW1lbnQqIGF1ZGlv
U2luaygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVQbGF5U2lu
aygpIHsgfQogCiAgICAgdm9pZCBzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkgb3ZlcnJpZGU7
CiAKLSAgICBib29sIGNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUpOworICAgIHZpcnR1YWwg
Ym9vbCBjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlKTsKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIG92ZXJy
aWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9Tb3VyY2VQcm92aWRlcio+KG1fYXVk
aW9Tb3VyY2VQcm92aWRlci5nZXQoKSk7IH0KICNlbmRpZgogCisgICAgYm9vbCBpc0xpdmVTdHJl
YW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzU3RyZWFtaW5nOyB9CisKKyAgICBib29s
IGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CkBAIC0x
MzUsMTcgKzE0MiwxNyBAQCBwcml2YXRlOgogCiAgICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9T
aW5rKCkgb3ZlcnJpZGU7CiAKLSAgICBmbG9hdCBwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3Q7Cisg
ICAgZG91YmxlIHBsYXliYWNrUG9zaXRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlU3Rh
dGVzKCk7Ci0gICAgdm9pZCBhc3luY1N0YXRlQ2hhbmdlRG9uZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTdGF0ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXN5bmNTdGF0ZUNoYW5nZURvbmUo
KTsKIAogICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbigpOwogCiAgICAgYm9vbCBsb2FkTmV4dExv
Y2F0aW9uKCk7CiAgICAgdm9pZCBtZWRpYUxvY2F0aW9uQ2hhbmdlZChHc3RNZXNzYWdlKik7CiAK
LSAgICB2b2lkIHNldERvd25sb2FkQnVmZmVyaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldERv
d25sb2FkQnVmZmVyaW5nKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVz
c2FnZSopOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgVVNFKEdTVFJFQU1FUl9NUEVHVFMp
CiAgICAgdm9pZCBwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKik7CkBAIC0x
NTQsMjEgKzE2MSwzNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50
cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0
VG9jRW50cnkqLCBHc3RUb2NFbnRyeSogcGFyZW50KTsKICNlbmRpZgotICAgIGJvb2wgZG9TZWVr
KGdpbnQ2NCBwb3NpdGlvbiwgZmxvYXQgcmF0ZSwgR3N0U2Vla0ZsYWdzIHNlZWtUeXBlKTsKLSAg
ICB2b2lkIHVwZGF0ZVBsYXliYWNrUmF0ZSgpOworICAgIHZpcnR1YWwgYm9vbCBkb1NlZWsoZ2lu
dDY0IHBvc2l0aW9uLCBmbG9hdCByYXRlLCBHc3RTZWVrRmxhZ3Mgc2Vla1R5cGUpOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVQbGF5YmFja1JhdGUoKTsKIAogICAgIFN0cmluZyBlbmdpbmVEZXNj
cmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9Ci0gICAgYm9v
bCBpc0xpdmVTdHJlYW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzU3RyZWFtaW5nOyB9
CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQotICAgIC8vIFRPRE86IEltcGxlbWVudAotICAgIHVuc2lnbmVkIGxvbmcgdG90
YWxWaWRlb0ZyYW1lcygpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB1bnNpZ25lZCBsb25n
IGRyb3BwZWRWaWRlb0ZyYW1lcygpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB1bnNpZ25l
ZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAg
IE1lZGlhVGltZSB0b3RhbEZyYW1lRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7IH0KLSNlbmRpZgorcHJvdGVjdGVkOgorICAgIHZvaWQgY2FjaGVEdXJhdGlv
bigpOworCisgICAgYm9vbCBtX2J1ZmZlcmluZzsKKyAgICBpbnQgbV9idWZmZXJpbmdQZXJjZW50
YWdlOworICAgIG11dGFibGUgZmxvYXQgbV9jYWNoZWRQb3NpdGlvbjsKKyAgICBib29sIG1fY2Fu
RmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdGlvbjsKKyAgICBib29sIG1fY2hhbmdpbmdS
YXRlOworICAgIGJvb2wgbV9kb3dubG9hZEZpbmlzaGVkOworICAgIGJvb2wgbV9lcnJvck9jY3Vy
ZWQ7CisgICAgbXV0YWJsZSBib29sIG1faXNFbmRSZWFjaGVkOworICAgIG11dGFibGUgYm9vbCBt
X2lzU3RyZWFtaW5nOworICAgIG11dGFibGUgZ2Zsb2F0IG1fZHVyYXRpb25BdEVPUzsKKyAgICBi
b29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlOworICAgIEdzdFN0YXRlIG1f
cmVxdWVzdGVkU3RhdGU7CisgICAgYm9vbCBtX3Jlc2V0UGlwZWxpbmU7CisgICAgYm9vbCBtX3Nl
ZWtpbmc7CisgICAgYm9vbCBtX3NlZWtJc1BlbmRpbmc7CisgICAgZmxvYXQgbV9zZWVrVGltZTsK
KyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc291cmNlOworICAgIGJvb2wgbV92b2x1bWVBbmRN
dXRlSW5pdGlhbGl6ZWQ7CiAKICAgICB2b2lkIHJlYWR5VGltZXJGaXJlZCgpOwogCkBAIC0xOTQs
MzkgKzIxNSwyMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBHc3RGbG93UmV0dXJuIG5ld1RleHRT
YW1wbGVDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKICNlbmRpZgogCitw
cml2YXRlOgogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4g
bV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zb3VyY2U7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV90ZXh0QXBw
U2luazsKICAgICBHUmVmUHRyPEdzdFBhZD4gbV90ZXh0QXBwU2lua1BhZDsKICNlbmRpZgotICAg
IGZsb2F0IG1fc2Vla1RpbWU7Ci0gICAgYm9vbCBtX2NoYW5naW5nUmF0ZTsKLSAgICBib29sIG1f
aXNFbmRSZWFjaGVkOwotICAgIG11dGFibGUgYm9vbCBtX2lzU3RyZWFtaW5nOwogICAgIEdzdFN0
cnVjdHVyZSogbV9tZWRpYUxvY2F0aW9uczsKICAgICBpbnQgbV9tZWRpYUxvY2F0aW9uQ3VycmVu
dEluZGV4OwotICAgIGJvb2wgbV9yZXNldFBpcGVsaW5lOwotICAgIGJvb2wgbV9wYXVzZWQ7CiAg
ICAgYm9vbCBtX3BsYXliYWNrUmF0ZVBhdXNlOwotICAgIGJvb2wgbV9zZWVraW5nOwotICAgIGJv
b2wgbV9zZWVrSXNQZW5kaW5nOwogICAgIGZsb2F0IG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrOwot
ICAgIGJvb2wgbV9jYW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0aW9uOwotICAgIGJv
b2wgbV9idWZmZXJpbmc7Ci0gICAgZmxvYXQgbV9wbGF5YmFja1JhdGU7CiAgICAgZmxvYXQgbV9s
YXN0UGxheWJhY2tSYXRlOwotICAgIGJvb2wgbV9lcnJvck9jY3VyZWQ7Ci0gICAgYm9vbCBtX2Rv
d25sb2FkRmluaXNoZWQ7Ci0gICAgZmxvYXQgbV9kdXJhdGlvbkF0RU9TOwogICAgIFRpbWVyIG1f
ZmlsbFRpbWVyOwogICAgIGZsb2F0IG1fbWF4VGltZUxvYWRlZDsKLSAgICBpbnQgbV9idWZmZXJp
bmdQZXJjZW50YWdlOwogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIG1fcHJlbG9hZDsKICAgICBi
b29sIG1fZGVsYXlpbmdMb2FkOwogICAgIG11dGFibGUgZmxvYXQgbV9tYXhUaW1lTG9hZGVkQXRM
YXN0RGlkTG9hZGluZ1Byb2dyZXNzOwotICAgIGJvb2wgbV92b2x1bWVBbmRNdXRlSW5pdGlhbGl6
ZWQ7CiAgICAgYm9vbCBtX2hhc1ZpZGVvOwogICAgIGJvb2wgbV9oYXNBdWRpbzsKICAgICBSdW5M
b29wOjpUaW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1fcmVhZHlUaW1lckhhbmRs
ZXI7CkBAIC0yMzYsNyArMjQxLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVRElPKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPiBtX2F1ZGlv
U291cmNlUHJvdmlkZXI7CiAjZW5kaWYKLSAgICBHc3RTdGF0ZSBtX3JlcXVlc3RlZFN0YXRlOwog
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdXRvQXVkaW9TaW5rOwogICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbV9taXNzaW5nUGx1
Z2luc0NhbGxiYWNrOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTI0OCwxMiArMjUyLDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJfTVBF
R1RTKQogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV9tZXRhZGF0YVRyYWNrczsKICNlbmRpZgotI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4g
bV9tZWRpYVNvdXJjZTsKLSAgICBib29sIGlzTWVkaWFTb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhU291cmNlOyB9Ci0jZWxzZQotICAgIGJvb2wgaXNNZWRpYVNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292898</attachid>
            <date>2016-10-26 01:22:39 -0700</date>
            <delta_ts>2016-10-26 01:47:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162911-20161026081851.patch</filename>
            <type>text/plain</type>
            <size>33208</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI5ZDAxZTRjY2UxMmU3
NWE3Mjg1ZGY4MjA4ZDE2N2IxOGFiMjhmMy4uYTY5N2U2YjI3ZTgzZjllOWM0ZDdlNjY1MTgyNjg3
ZmVjNWE0ZWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDE2LTEwLTI2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXVtFTUVdIFJlbW92ZSBNU0UgY29kZSBmcm9tIHJlZ3VsYXIgcGxheWVyIGFu
ZCBhZGQgRU1FIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MjkxMQorCisgICAgICAgIE5vdyB0aGF0IHRoZSBNU0UgcmVzcG9uc2liaWxp
dHkgaGFzIGJlZW4gcmVmYWN0b3JlZCB0byB0aGUgZGVkaWNhdGVkCisgICAgICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRSBzdWJjbGFzcywgdGhlIHJlZ3VsYXIgcGxheWVyIG5vIGxv
bmdlciBuZWVkcyB0aGUgTVNFIGNvZGUsCisgICAgICAgIGp1c3QgdG8gZXhwb3NlIHNvbWUgbW9y
ZSBtZXRob2RzIHRvIHRoZSBzdWJjbGFzcy4gRmxvYXQgdGltZXN0YW1wcyBoYXZlIGJlZW4gbWln
cmF0ZWQgdG8KKyAgICAgICAgZG91YmxlLiBBbHNvLCBzbWFsbCBjaGFuZ2VzIHRvIGFjY29tb2Rh
dGUgdGhlIEVNRSBzdXBwb3J0IGFyZSBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBj
by1hdXRob3JlZCB3aXRoIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+IChFTUUg
c3VwcG9ydCkgYW5kCisgICAgICAgIMW9YW4gRG9iZXLFoWVrIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+IChkb3VibGUgdGltZXN0YW1wcykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJv
ZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1c01l
c3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbk1lZGlhVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRNZWRpYVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG9TZWVrKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZW
aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5v
dGlmeVBsYXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4
VGltZVNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bWF4VGltZUxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmRpZExvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNvdXJjZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQ
bGF5QmluKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aGFuZGxlU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb21taXRMb2FkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp2aWRlb0NoYW5nZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2spOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlQbGF5ZXJPZlZpZGVvQ2Fwcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp0b3RhbEJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRTdGF0ZUNoYW5nZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp0aW1lQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZVNldCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNyZWF0ZUF1ZGlvU2luayk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVQbGF5U2luayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzTWVkaWFTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVX
ZWFrUHRyKTogRGVsZXRlZC4KKworMjAxNi0xMC0yNiAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6
ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHU3RyZWFtZXJdW0VNRV0gQWRkIEVN
RSBzdXBwb3J0IHRvIGJhc2UgcHJpdmF0ZSBwbGF5ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDA3ODQ2Y2E1ZmI2YTNiZTI5Njc1ZTJi
MTIwNTBhMTA4NmMzNzUyNDguLmYwMDU1ODAzN2YzMWFjNzM2MTQyYjg2MmI2MTAzNzNiZDlmNTcz
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0zLDggKzMsOSBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IENvbGxhYm9yYSBMdGQuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxw
QGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR3VzdGF2byBOb3JvbmhhIFNpbHZh
IDxnbnNAZ25vbWUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEy
LCAyMDEzIElnYWxpYSBTLkwKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMywgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2Fi
bGUgVGVsZXZpc2lvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwg
MjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03Nyw2
ICs3OCwxMSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyB2b2lkIGJ1c01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNz
YWdlLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKK3sKKyAgICBwbGF5ZXIt
PmhhbmRsZU1lc3NhZ2UobWVzc2FnZSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayhNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIqIHBsYXllciwgR09iamVjdCogb2JqZWN0KQogewogICAgIHBsYXllci0+c2V0
QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKG9iamVjdCk7CkBAIC05OSw3ICsxMDUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpcwogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQogICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIGdl
dFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVt
KTsKIH0KIAogYm9vbCBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50
cygpCkBAIC0xMDcsMTcgKzExMywxNCBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXIoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgcmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cygpOworCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gc3JjRmFjdG9yeSA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoIndlYmtpdHdlYnNyYyIpKTsKICAgICBpZiAo
IXNyY0ZhY3RvcnkpIHsKICAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21l
ZGlhX3BsYXllcl9kZWJ1ZywgIndlYmtpdG1lZGlhcGxheWVyIiwgMCwgIldlYktpdCBtZWRpYSBw
bGF5ZXIiKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdHdlYnNyYyIs
IEdTVF9SQU5LX1BSSU1BUlkgKyAxMDAsIFdFQktJVF9UWVBFX1dFQl9TUkMpOwogICAgIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4g
V2ViS2l0TWVkaWFTcmNGYWN0b3J5ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2ZhY3RvcnlfZmlu
ZCgid2Via2l0bWVkaWFzcmMiKSk7Ci0gICAgaWYgKCFXZWJLaXRNZWRpYVNyY0ZhY3RvcnkpCi0g
ICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRtZWRpYXNyYyIsIEdTVF9SQU5L
X1BSSU1BUlkgKyAxMDAsIFdFQktJVF9UWVBFX01FRElBX1NSQyk7Ci0jZW5kaWYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTMyLDM0ICsxMzUsMzUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKCkKIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UocGxheWVyKQotICAgICwgbV93ZWFrUHRy
RmFjdG9yeSh0aGlzKQotICAgICwgbV9zb3VyY2UoMCkKLSAgICAsIG1fc2Vla1RpbWUoMCkKKyAg
ICAsIG1fYnVmZmVyaW5nKGZhbHNlKQorICAgICwgbV9idWZmZXJpbmdQZXJjZW50YWdlKDApCisg
ICAgLCBtX2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRpb24oZmFsc2UpCiAgICAg
LCBtX2NoYW5naW5nUmF0ZShmYWxzZSkKKyAgICAsIG1fZG93bmxvYWRGaW5pc2hlZChmYWxzZSkK
KyAgICAsIG1fZXJyb3JPY2N1cmVkKGZhbHNlKQogICAgICwgbV9pc0VuZFJlYWNoZWQoZmFsc2Up
CiAgICAgLCBtX2lzU3RyZWFtaW5nKGZhbHNlKQotICAgICwgbV9tZWRpYUxvY2F0aW9ucygwKQot
ICAgICwgbV9tZWRpYUxvY2F0aW9uQ3VycmVudEluZGV4KDApCi0gICAgLCBtX3Jlc2V0UGlwZWxp
bmUoZmFsc2UpCisgICAgLCBtX2R1cmF0aW9uQXRFT1MoMCkKICAgICAsIG1fcGF1c2VkKHRydWUp
Ci0gICAgLCBtX3BsYXliYWNrUmF0ZVBhdXNlKGZhbHNlKQorICAgICwgbV9wbGF5YmFja1JhdGUo
MSkKKyAgICAsIG1fcmVxdWVzdGVkU3RhdGUoR1NUX1NUQVRFX1ZPSURfUEVORElORykKKyAgICAs
IG1fcmVzZXRQaXBlbGluZShmYWxzZSkKICAgICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1f
c2Vla0lzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fc2Vla1RpbWUoMCkKKyAgICAsIG1fc291cmNl
KDApCisgICAgLCBtX3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1fd2Vh
a1B0ckZhY3RvcnkodGhpcykKKyAgICAsIG1fbWVkaWFMb2NhdGlvbnMoMCkKKyAgICAsIG1fbWVk
aWFMb2NhdGlvbkN1cnJlbnRJbmRleCgwKQorICAgICwgbV9wbGF5YmFja1JhdGVQYXVzZShmYWxz
ZSkKICAgICAsIG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrKC0xKQotICAgICwgbV9jYW5GYWxsQmFj
a1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0aW9uKGZhbHNlKQotICAgICwgbV9idWZmZXJpbmcoZmFs
c2UpCi0gICAgLCBtX3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9sYXN0UGxheWJhY2tSYXRlKDEp
Ci0gICAgLCBtX2Vycm9yT2NjdXJlZChmYWxzZSkKLSAgICAsIG1fZG93bmxvYWRGaW5pc2hlZChm
YWxzZSkKLSAgICAsIG1fZHVyYXRpb25BdEVPUygwKQogICAgICwgbV9maWxsVGltZXIoKnRoaXMs
ICZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKQogICAgICwgbV9t
YXhUaW1lTG9hZGVkKDApCi0gICAgLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UoMCkKICAgICAsIG1f
cHJlbG9hZChwbGF5ZXItPnByZWxvYWQoKSkKICAgICAsIG1fZGVsYXlpbmdMb2FkKGZhbHNlKQog
ICAgICwgbV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzKDApCi0gICAgLCBt
X3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1faGFzVmlkZW8oZmFsc2Up
CiAgICAgLCBtX2hhc0F1ZGlvKGZhbHNlKQogICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5VGlt
ZXJGaXJlZCkKQEAgLTE2OCw3ICsxNzIsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAgICAgLCBtX2F1ZGlvU291cmNlUHJvdmlkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpKQogI2VuZGlmCi0gICAgLCBtX3Jl
cXVlc3RlZFN0YXRlKEdTVF9TVEFURV9WT0lEX1BFTkRJTkcpCiB7CiAjaWYgVVNFKEdMSUIpICYm
ICFQTEFURk9STShFRkwpCiAgICAgbV9yZWFkeVRpbWVySGFuZGxlci5zZXRQcmlvcml0eShHX1BS
SU9SSVRZX0RFRkFVTFRfSURMRSk7CkBAIC0yMDUsMTggKzIwOCwyMCBAQCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBt
X21pc3NpbmdQbHVnaW5zQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChtX3Zp
ZGVvU2luaykgeworICAgICAgICBHUmVmUHRyPEdzdFBhZD4gdmlkZW9TaW5rUGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fdmlkZW9TaW5rLmdldCgpLCAic2luayIp
KTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKHZpZGVvU2lu
a1BhZC5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwg
dGhpcyk7CisgICAgfQorCiAgICAgaWYgKG1fcGlwZWxpbmUpIHsKICAgICAgICAgR1JlZlB0cjxH
c3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUo
bV9waXBlbGluZS5nZXQoKSkpKTsKICAgICAgICAgQVNTRVJUKGJ1cyk7CisgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMuZ2V0KCksIGdwb2ludGVyKGJ1c01l
c3NhZ2VDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0
Y2goYnVzLmdldCgpKTsKICAgICAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJz
X2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3BpcGVsaW5lLmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRB
LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKICAgICB9Ci0KLSAgICBp
ZiAobV92aWRlb1NpbmspIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHZpZGVvU2lua1BhZCA9
IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3ZpZGVvU2luay5nZXQoKSwg
InNpbmsiKSk7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh2
aWRlb1NpbmtQYWQuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHZpZGVvU2lua0Nh
cHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMjY1LDEx
ICsyNzAsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCwgTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCop
CiB7Ci0gICAgU3RyaW5nIG1lZGlhc291cmNlVXJpID0gU3RyaW5nOjpmb3JtYXQoIm1lZGlhc291
cmNlJXMiLCB1cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291
cmNlOwotICAgIGxvYWQobWVkaWFzb3VyY2VVcmkpOworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAjZW5kaWYKIApAQCAtMjkzLDcgKzI5Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpjb21taXRMb2FkKCkKICAgICB1cGRhdGVTdGF0ZXMoKTsKIH0KIAotZmxvYXQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3QKK2RvdWJs
ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAog
ewogICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgewogICAgICAgICAvLyBQb3NpdGlvbiBxdWVyaWVz
IG9uIGEgbnVsbCBwaXBlbGluZSByZXR1cm4gMC4gSWYgd2UncmUgYXQKQEAgLTMwMyw5ICszMDYs
OSBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24o
KSBjb25zdAogICAgICAgICBpZiAobV9zZWVraW5nKQogICAgICAgICAgICAgcmV0dXJuIG1fc2Vl
a1RpbWU7CiAKLSAgICAgICAgZmxvYXQgbWVkaWFEdXJhdGlvbiA9IGR1cmF0aW9uKCk7CisgICAg
ICAgIE1lZGlhVGltZSBtZWRpYUR1cmF0aW9uID0gZHVyYXRpb25NZWRpYVRpbWUoKTsKICAgICAg
ICAgaWYgKG1lZGlhRHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gbWVkaWFEdXJhdGlvbjsK
KyAgICAgICAgICAgIHJldHVybiBtZWRpYUR1cmF0aW9uLnRvRG91YmxlKCk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMzE4LDExICszMjEsMTEgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3QKIAogICAgIEdTVF9ERUJV
RygiUG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHBvc2l0aW9uKSk7
CiAKLSAgICBmbG9hdCByZXN1bHQgPSAwLjBmOworICAgIGRvdWJsZSByZXN1bHQgPSAwLjBmOwog
ICAgIGlmIChzdGF0aWNfY2FzdDxHc3RDbG9ja1RpbWU+KHBvc2l0aW9uKSAhPSBHU1RfQ0xPQ0tf
VElNRV9OT05FKSB7CiAgICAgICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKICAgICAgICAgR1NUX1RJ
TUVfVE9fVElNRVZBTChwb3NpdGlvbiwgdGltZVZhbHVlKTsKLSAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRpbWVWYWx1ZS50dl9zZWMgKyAodGltZVZhbHVlLnR2X3VzZWMgLyAx
MDAwMDAwLjApKTsKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lVmFs
dWUudHZfc2VjICsgKHRpbWVWYWx1ZS50dl91c2VjIC8gMTAwMDAwMC4wKSk7CiAgICAgfSBlbHNl
IGlmIChtX2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRpb24pCiAgICAgICAgIHJl
c3VsdCA9IG1fc2Vla1RpbWU7CiAKQEAgLTQxMywyMCArNDE2LDIwIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSgpCiAgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQ
bGF5ZXI6OkVtcHR5KTsKIH0KIAotZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpk
dXJhdGlvbigpIGNvbnN0CitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpk
dXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BpcGVsaW5lKQotICAgICAg
ICByZXR1cm4gMC4wZjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChtX2Vycm9yT2Nj
dXJlZCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBp
ZiAobV9kdXJhdGlvbkF0RU9TKQotICAgICAgICByZXR1cm4gbV9kdXJhdGlvbkF0RU9TOworICAg
ICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQobV9kdXJhdGlvbkF0RU9TKTsK
IAogICAgIC8vIFRoZSBkdXJhdGlvbiBxdWVyeSB3b3VsZCBmYWlsIG9uIGEgbm90LXByZXJvbGxl
ZCBwaXBlbGluZS4KICAgICBpZiAoR1NUX1NUQVRFKG1fcGlwZWxpbmUuZ2V0KCkpIDwgR1NUX1NU
QVRFX1BBVVNFRCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBHc3RGb3JtYXQgdGltZUZvcm1hdCA9IEdTVF9GT1JNQVRfVElNRTsKICAgICBnaW50NjQg
dGltZUxlbmd0aCA9IDA7CkBAIC00MzQsMjUgKzQzNywyNSBAQCBmbG9hdCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKCkgY29uc3QKICAgICBib29sIGZhaWx1cmUgPSAhZ3N0
X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24obV9waXBlbGluZS5nZXQoKSwgdGltZUZvcm1hdCwgJnRp
bWVMZW5ndGgpIHx8IHN0YXRpY19jYXN0PGd1aW50NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9D
S19USU1FX05PTkU7CiAgICAgaWYgKGZhaWx1cmUpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUaW1l
IGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsK
KyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICB9
CiAKICAgICBHU1RfREVCVUcoIkR1cmF0aW9uOiAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1F
X0FSR1ModGltZUxlbmd0aCkpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odGlt
ZUxlbmd0aCkgLyBHU1RfU0VDT05EOworICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lTGVuZ3RoKSAvIEdTVF9TRUNPTkQpOwogICAg
IC8vIEZJWE1FOiBoYW5kbGUgMy4xNC45LjUgcHJvcGVybHkKIH0KIAotZmxvYXQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CitNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcGlwZWxpbmUpCi0gICAgICAgIHJldHVybiAwLjBmOworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkKQotICAgICAgICByZXR1cm4gMC4wZjsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChtX3NlZWtpbmcpCi0gICAgICAgIHJldHVybiBtX3Nl
ZWtUaW1lOworICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQobV9zZWVr
VGltZSk7CiAKICAgICAvLyBXb3JrYXJvdW5kIGZvcgogICAgIC8vIGh0dHBzOi8vYnVnemlsbGEu
Z25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzk5NDEgSW4gR1N0cmVhbWVyCkBAIC00NjAsOSAr
NDYzLDkgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgp
IGNvbnN0CiAgICAgLy8gbmVnYXRpdmUgcGxheWJhY2sgcmF0ZS4gVGhlcmUncyBubyB1cHN0cmVh
bSBhY2NlcHRlZCBwYXRjaCBmb3IKICAgICAvLyB0aGlzIGJ1ZyB5ZXQsIGhlbmNlIHRoaXMgdGVt
cG9yYXJ5IHdvcmthcm91bmQuCiAgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmIG1fcGxheWJhY2tS
YXRlIDwgMCkKLSAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICByZXR1cm4gcGxheWJhY2tQb3NpdGlvbigpOworICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUocGxheWJhY2tQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKQEAgLTQ3Niw3ICs0NzksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2VlayhmbG9hdCB0aW1lKQogICAgIEdTVF9J
TkZPKCJbU2Vla10gc2VlayBhdHRlbXB0IHRvICVmIHNlY3MiLCB0aW1lKTsKIAogICAgIC8vIEF2
b2lkIHVzZWxlc3Mgc2Vla2luZy4KLSAgICBpZiAodGltZSA9PSBjdXJyZW50VGltZSgpKQorICAg
IGlmIChNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdCh0aW1lKSA9PSBjdXJyZW50TWVkaWFUaW1l
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc0xpdmVTdHJlYW0oKSkKQEAgLTUzNyw3
ICs1NDAsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG9TZWVrKGdpbnQ2
NCBwb3NpdGlvbiwgZmxvYXQgcmF0ZSwgR3N0U2Vla0ZsYQogICAgICAgICAvLyBJZiB3ZSBhcmUg
YXQgYmVnaW5uaW5nIG9mIG1lZGlhLCBzdGFydCBmcm9tIHRoZSBlbmQgdG8KICAgICAgICAgLy8g
YXZvaWQgaW1tZWRpYXRlIEVPUy4KICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkKLSAgICAgICAg
ICAgIGVuZFRpbWUgPSBzdGF0aWNfY2FzdDxnaW50NjQ+KGR1cmF0aW9uKCkgKiBHU1RfU0VDT05E
KTsKKyAgICAgICAgICAgIGVuZFRpbWUgPSBzdGF0aWNfY2FzdDxnaW50NjQ+KGR1cmF0aW9uTWVk
aWFUaW1lKCkudG9Eb3VibGUoKSAqIEdTVF9TRUNPTkQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBlbmRUaW1lID0gcG9zaXRpb247CiAgICAgfQpAQCAtNjA0LDcgKzYwNyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQoKSBjb25zdAogCiAgICAgR3N0U3Rh
dGUgc3RhdGU7CiAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksICZz
dGF0ZSwgbnVsbHB0ciwgMCk7Ci0gICAgcmV0dXJuIHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQ7
CisgICAgcmV0dXJuIHN0YXRlIDw9IEdTVF9TVEFURV9QQVVTRUQ7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVraW5nKCkgY29uc3QKQEAgLTYxOSwxMSArNjIyLDIz
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NoYW5nZWRDYWxsYmFj
ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKIHsKKyAgICBpZiAoVU5MSUtFTFkoIW1fcGlw
ZWxpbmUgfHwgIW1fc291cmNlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ2ludCBudW1UcmFj
a3MgPSAwOwotICAgIGlmIChtX3BpcGVsaW5lKQotICAgICAgICBnX29iamVjdF9nZXQobV9waXBl
bGluZS5nZXQoKSwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKKyAgICBib29sIHVz
ZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOworICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQg
PSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsKKyAg
ICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsK
IAogICAgIG1faGFzVmlkZW8gPSBudW1UcmFja3MgPiAwOworICAgIGlmIChtX2hhc1ZpZGVvKQor
ICAgICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKKworICAgIGlmICh1c2VNZWRpYVNvdXJj
ZSkgeworICAgICAgICBHU1RfREVCVUcoIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50
LiBCYWlsaW5nIG91dCBub3cuIik7CisgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGZvciAoZ2ludCBpID0gMDsgaSA8IG51bVRyYWNr
czsgKytpKSB7CkBAIC02NzIsMTIgKzY4NywyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiB7CisgICAgaWYgKFVOTElLRUxZKCFtX3BpcGVsaW5lIHx8ICFtX3NvdXJjZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGdpbnQgbnVtVHJhY2tzID0gMDsKLSAgICBpZiAobV9waXBlbGluZSkK
LSAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJuLWF1ZGlvIiwgJm51bVRy
YWNrcywgbnVsbHB0cik7CisgICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3VyY2Uo
KTsKKyAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5n
ZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7CisgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLWF1
ZGlvIiwgJm51bVRyYWNrcywgbnVsbHB0cik7CiAKICAgICBtX2hhc0F1ZGlvID0gbnVtVHJhY2tz
ID4gMDsKIAorICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgeworICAgICAgICBHU1RfREVCVUcoIlRy
YWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cuIik7CisgICAg
ICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQobV9wbGF5ZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IGZvciAoZ2ludCBpID0gMDsgaSA8IG51bVRyYWNrczsgKytpKSB7CiAgICAgICAgIEdSZWZQdHI8
R3N0UGFkPiBwYWQ7CkBAIC03MTUsOSArNzQwLDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp0ZXh0Q2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQo
KQogeworICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQorICAgICAg
ICByZXR1cm47CisKICAgICBnaW50IG51bVRyYWNrcyA9IDA7Ci0gICAgaWYgKG1fcGlwZWxpbmUp
Ci0gICAgICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAibi10ZXh0IiwgJm51bVRy
YWNrcywgbnVsbHB0cik7CisgICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3VyY2Uo
KTsKKyAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5n
ZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7CisgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLXRl
eHQiLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKKworICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewor
ICAgICAgICBHU1RfREVCVUcoIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWls
aW5nIG91dCBub3cuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3IgKGdpbnQg
aSA9IDA7IGkgPCBudW1UcmFja3M7ICsraSkgewogICAgICAgICBHUmVmUHRyPEdzdFBhZD4gcGFk
OwpAQCAtODQxLDcgKzg3NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zCiAgICAgaWYgKG1f
ZXJyb3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdl
czsKIAotICAgIGZsb2F0IG1lZGlhRHVyYXRpb24oZHVyYXRpb24oKSk7CisgICAgZmxvYXQgbWVk
aWFEdXJhdGlvbihkdXJhdGlvbk1lZGlhVGltZSgpLnRvRG91YmxlKCkpOwogICAgIGlmICghbWVk
aWFEdXJhdGlvbiB8fCBzdGQ6OmlzaW5mKG1lZGlhRHVyYXRpb24pKQogICAgICAgICByZXR1cm4g
dGltZVJhbmdlczsKIApAQCAtOTU5LDcgKzk5Myw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIHBy
b2Nlc3NCdWZmZXJpbmdTdGF0cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBH
U1RfTUVTU0FHRV9EVVJBVElPTl9DSEFOR0VEOgotICAgICAgICBpZiAobWVzc2FnZVNvdXJjZUlz
UGxheWJpbikKKyAgICAgICAgLy8gRHVyYXRpb24gaW4gTVNFIGlzIG1hbmFnZWQgYnkgTWVkaWFT
b3VyY2UsIFNvdXJjZUJ1ZmZlciBhbmQgQXBwZW5kUGlwZWxpbmUuCisgICAgICAgIGlmIChtZXNz
YWdlU291cmNlSXNQbGF5YmluICYmICFpc01lZGlhU291cmNlKCkpCiAgICAgICAgICAgICBkdXJh
dGlvbkNoYW5nZWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9SRVFV
RVNUX1NUQVRFOgpAQCAtMTEwNyw3ICsxMTQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnByb2Nlc3NNcGVnVHNTZWN0aW9uKEdzdE1wZWd0c1NlY3Rpb24qIHNlY3Rpb24K
ICAgICAgICAgZ3NpemUgc2l6ZTsKICAgICAgICAgY29uc3Qgdm9pZCogYnl0ZXMgPSBnX2J5dGVz
X2dldF9kYXRhKGRhdGEuZ2V0KCksICZzaXplKTsKIAotICAgICAgICB0cmFjay0+YWRkRGF0YUN1
ZShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoY3VycmVudFRpbWVEb3VibGUoKSksIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShjdXJyZW50VGltZURvdWJsZSgpKSwgYnl0ZXMsIHNpemUp
OworICAgICAgICB0cmFjay0+YWRkRGF0YUN1ZShjdXJyZW50TWVkaWFUaW1lKCksIGN1cnJlbnRN
ZWRpYVRpbWUoKSwgYnl0ZXMsIHNpemUpOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTE4MSw3ICsx
MjE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVk
KCkKIAogICAgIEdTVF9ERUJVRygiW0J1ZmZlcmluZ10gRG93bmxvYWQgYnVmZmVyIGZpbGxlZCB1
cCB0byAlZiUlIiwgZmlsbFN0YXR1cyk7CiAKLSAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVy
YXRpb24oKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVyYXRpb25NZWRpYVRpbWUoKS50
b0RvdWJsZSgpOwogCiAgICAgLy8gVXBkYXRlIG1heFRpbWVMb2FkZWQgb25seSBpZiB0aGUgbWVk
aWEgZHVyYXRpb24gaXMKICAgICAvLyBhdmFpbGFibGUuIE90aGVyd2lzZSB3ZSBjYW4ndCBjb21w
dXRlIGl0LgpAQCAtMTIxMSw3ICsxMjQ2LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkK
ICAgICAgICAgcmV0dXJuIDAuMGY7CiAKLSAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVyYXRp
b24oKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gZHVyYXRpb25NZWRpYVRpbWUoKS50b0Rv
dWJsZSgpOwogICAgIEdTVF9ERUJVRygibWF4VGltZVNlZWthYmxlLCBkdXJhdGlvbjogJWYiLCBt
ZWRpYUR1cmF0aW9uKTsKICAgICAvLyBpbmZpbml0ZSBkdXJhdGlvbiBtZWFucyBsaXZlIHN0cmVh
bQogICAgIGlmIChzdGQ6OmlzaW5mKG1lZGlhRHVyYXRpb24pKQpAQCAtMTIyNywxNCArMTI2Miwx
NCBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1heFRpbWVMb2FkZWQoKSBj
b25zdAogCiAgICAgZmxvYXQgbG9hZGVkID0gbV9tYXhUaW1lTG9hZGVkOwogICAgIGlmIChtX2lz
RW5kUmVhY2hlZCkKLSAgICAgICAgbG9hZGVkID0gZHVyYXRpb24oKTsKKyAgICAgICAgbG9hZGVk
ID0gZHVyYXRpb25NZWRpYVRpbWUoKS50b0RvdWJsZSgpOwogICAgIEdTVF9ERUJVRygibWF4VGlt
ZUxvYWRlZDogJWYiLCBsb2FkZWQpOwogICAgIHJldHVybiBsb2FkZWQ7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAogewot
ICAgIGlmICghbV9waXBlbGluZSB8fCAhZHVyYXRpb24oKSB8fCAoIWlzTWVkaWFTb3VyY2UoKSAm
JiAhdG90YWxCeXRlcygpKSkKKyAgICBpZiAoVU5MSUtFTFkoIW1fcGlwZWxpbmUgfHwgIWR1cmF0
aW9uTWVkaWFUaW1lKCkgfHwgKCFpc01lZGlhU291cmNlKCkgJiYgIXRvdGFsQnl0ZXMoKSkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZmxvYXQgY3VycmVudE1heFRpbWVMb2FkZWQgPSBt
YXhUaW1lTG9hZGVkKCk7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MgPSBjdXJyZW50TWF4
VGltZUxvYWRlZCAhPSBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7CkBA
IC0xMzEwLDExICsxMzQ1LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNv
dXJjZUNoYW5nZWQoKQogCiAgICAgaWYgKFdFQktJVF9JU19XRUJfU1JDKG1fc291cmNlLmdldCgp
KSkKICAgICAgICAgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV0VCS0lUX1dFQl9TUkMobV9z
b3VyY2UuZ2V0KCkpLCBtX3BsYXllcik7Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBp
ZiAobV9tZWRpYVNvdXJjZSAmJiBXRUJLSVRfSVNfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSkg
ewotICAgICAgICBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6b3BlbihtX21lZGlhU291cmNlLmdldCgp
LCBXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYW5jZWxMb2FkKCkKQEAgLTE2MTIs
OCArMTY0Miw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQog
ICAgIC8vIFN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBkdXJhdGlvbiB2YWx1ZXMgdG8gbm90IGNv
bmZ1c2UgdGhlCiAgICAgLy8gSFRNTE1lZGlhRWxlbWVudC4gSW4gc29tZSBjYXNlcyBsaWtlIHJl
dmVyc2UgcGxheWJhY2sgdGhlCiAgICAgLy8gcG9zaXRpb24gaXMgbm90IGFsd2F5cyByZXBvcnRl
ZCBhcyAwIGZvciBpbnN0YW5jZS4KLSAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwotICAg
IGlmIChub3cgPiAwICYmIG5vdyA8PSBkdXJhdGlvbigpKQorICAgIE1lZGlhVGltZSBub3cgPSBj
dXJyZW50TWVkaWFUaW1lKCk7CisgICAgaWYgKG5vdyA+IE1lZGlhVGltZSB7IH0gJiYgbm93IDw9
IGR1cmF0aW9uTWVkaWFUaW1lKCkpCiAgICAgICAgIG1fcGxheWVyLT5kdXJhdGlvbkNoYW5nZWQo
KTsKIAogICAgIG1faXNFbmRSZWFjaGVkID0gdHJ1ZTsKQEAgLTE2MjEsNyArMTY1MSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQogCiAgICAgaWYgKCFtX3Bs
YXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSkgewogICAgICAgICBtX3BhdXNl
ZCA9IHRydWU7Ci0gICAgICAgIG1fZHVyYXRpb25BdEVPUyA9IGR1cmF0aW9uKCk7CisgICAgICAg
IG1fZHVyYXRpb25BdEVPUyA9IGR1cmF0aW9uTWVkaWFUaW1lKCkudG9Eb3VibGUoKTsKICAgICAg
ICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUkVBRFkpOwogICAgICAgICBtX2Rvd25s
b2FkRmluaXNoZWQgPSBmYWxzZTsKICAgICB9CkBAIC0xNjI5LDEyICsxNjU5LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFuZ2VkKCkKIHsKLSAgICBmbG9hdCBwcmV2aW91
c0R1cmF0aW9uID0gZHVyYXRpb24oKTsKKyAgICBmbG9hdCBwcmV2aW91c0R1cmF0aW9uID0gZHVy
YXRpb25NZWRpYVRpbWUoKS50b0RvdWJsZSgpOwogCiAgICAgLy8gQXZvaWQgZW1pdGluZyBkdXJh
dGlvbmNoYW5nZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHByZXZpb3VzCiAgICAgLy8gZHVyYXRp
b24gd2FzIDAgYmVjYXVzZSB0aGF0IGNhc2UgaXMgYWxyZWFkeSBoYW5kbGVkIGJ5IHRoZQogICAg
IC8vIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgaWYgKHByZXZpb3VzRHVyYXRpb24gJiYgZHVyYXRp
b24oKSAhPSBwcmV2aW91c0R1cmF0aW9uKQorICAgIGlmIChwcmV2aW91c0R1cmF0aW9uICYmIGR1
cmF0aW9uTWVkaWFUaW1lKCkudG9Eb3VibGUoKSAhPSBwcmV2aW91c0R1cmF0aW9uKQogICAgICAg
ICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7CiB9CiAKQEAgLTE3ODksMTggKzE4MTksMjUg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnMKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFIGlz
IGluIGNoYXJnZSBvZiBtZWRpYXNvdXJjZSBwbGF5YmFjaywgbm90IHVzLgorICAgIGlmIChwYXJh
bWV0ZXJzLmlzTWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisjZW5kaWYKKwog
ICAgIC8vIE1lZGlhU3RyZWFtIHBsYXliYWNrIGlzIGhhbmRsZWQgYnkgdGhlIE9wZW5XZWJSVEMg
cGxheWVyLgogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0pCi0gICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7Ci0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNOdWxsKCkgfHwgcGFyYW1ldGVycy50eXBlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIHNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJl
dHVybiAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5CiAgICAgaWYgKG1p
bWVUeXBlU2V0KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKLSAgICAgICAgcmV0dXJuIHBh
cmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6
IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOworICAgICAgICByZXN1bHQgPSBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkg
PyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7
CisKKyAgICByZXR1cm4gZXh0ZW5kZWRTdXBwb3J0c1R5cGUocGFyYW1ldGVycywgcmVzdWx0KTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldERvd25sb2FkQnVmZmVy
aW5nKCkKQEAgLTE5MjUsMTggKzE5NjIsMTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihi
dXMuZ2V0KCksIFtdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJE
YXRhKSB7CiAgICAgICAgIGF1dG8mIHBsYXllciA9ICpzdGF0aWNfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7CiAKLSAgICAgICAgaWYgKCFwbGF5ZXIuaGFuZGxl
U3luY01lc3NhZ2UobWVzc2FnZSkpIHsKLSAgICAgICAgICAgIEdSZWZQdHI8R3N0TWVzc2FnZT4g
cHJvdGVjdGVkTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIGF1dG8gd2Vha1RoaXMgPSBw
bGF5ZXIuY3JlYXRlV2Vha1B0cigpOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrVGhpcywgcHJvdGVjdGVkTWVzc2FnZV0gewotICAgICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKLSAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmhhbmRsZU1lc3NhZ2UocHJv
dGVjdGVkTWVzc2FnZS5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgaWYgKHBsYXll
ci5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKSkgeworICAgICAgICAgICAgZ3N0X21lc3NhZ2Vf
dW5yZWYobWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gR1NUX0JVU19EUk9QOwogICAgICAg
ICB9Ci0gICAgICAgIGdzdF9tZXNzYWdlX3VucmVmKG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4g
R1NUX0JVU19EUk9QOworCisgICAgICAgIHJldHVybiBHU1RfQlVTX1BBU1M7CiAgICAgfSwgdGhp
cywgbnVsbHB0cik7CiAKKyAgICAvLyBMZXQgYWxzbyBvdGhlciBsaXN0ZW5lcnMgc3Vic2NyaWJl
IHRvIChhcHBsaWNhdGlvbikgbWVzc2FnZXMgaW4gdGhpcyBidXMuCisgICAgZ3N0X2J1c19hZGRf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCks
ICJtZXNzYWdlIiwgR19DQUxMQkFDSyhidXNNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKwogICAg
IGdfb2JqZWN0X3NldChtX3BpcGVsaW5lLmdldCgpLCAibXV0ZSIsIG1fcGxheWVyLT5tdXRlZCgp
LCBudWxscHRyKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3BpcGVsaW5lLmdl
dCgpLCAibm90aWZ5Ojpzb3VyY2UiLCBHX0NBTExCQUNLKHNvdXJjZUNoYW5nZWRDYWxsYmFjayks
IHRoaXMpOwpAQCAtMTk2Myw2ICsyMDAwLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogCiAgICAgZ19vYmplY3Rfc2V0KG1fcGlwZWxpbmUu
Z2V0KCksICJ2aWRlby1zaW5rIiwgY3JlYXRlVmlkZW9TaW5rKCksICJhdWRpby1zaW5rIiwgY3Jl
YXRlQXVkaW9TaW5rKCksIG51bGxwdHIpOwogCisgICAgY29uZmlndXJlUGxheVNpbmsoKTsKKwog
ICAgIC8vIE9uIDEuNC4yIGFuZCBuZXdlciB3ZSB1c2UgdGhlIGF1ZGlvLWZpbHRlciBwcm9wZXJ0
eSBpbnN0ZWFkLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM1NzQ4IGZvcgogICAgIC8vIHRoZSByZWFzb24gZm9yIHVzaW5nID49IDEuNC4y
IGluc3RlYWQgb2YgPj0gMS40LjAuCkBAIC0yMDE1LDYgKzIwNTQsMTEgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVN5
bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmhhbmRsZVN5bmNNZXNzYWdlKG1lc3NhZ2UpOworfQorCiB9
CiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGFjZDc2OWZlMjliZDZhYjMxMjE3NGIzMDBiMDljNTY5
NzAwNWZjMjAuLjE4Y2JhYWYwMTljMmI3M2Y1ZTAwNTliZmQ5YmNlOTljMjI0M2MxZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIsOCArMiw5
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE1LCAyMDE2IElnYWxpYSBTLkwK
ICAqIENvcHlyaWdodCAoQykgMjAxNCBDYWJsZSBUZWxldmlzaW9uIExhYm9yYXRvcmllcywgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
I2luY2x1ZGUgIk1lZGlhU291cmNlR1N0cmVhbWVyLmgiCi0jZW5kaWYKLQogdHlwZWRlZiBzdHJ1
Y3QgX0dzdEJ1ZmZlciBHc3RCdWZmZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RN
ZXNzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKQEAgLTYyLDEw
ICs1OSwxNCBAQCBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOwogY2xhc3Mg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s7CiBjbGFzcyBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitj
bGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7CisjZW5kaWYKKwogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihN
ZWRpYVBsYXllciopOwotICAgIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKTsKKyAgICB2
aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKTsKIAogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogICAgIHZvaWQgaGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CkBAIC05MSw4ICs5Miw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBmbG9h
dCBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBkdXJhdGlvbk1l
ZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWVrKGZsb2F0KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgc2V0UmF0ZShmbG9hdCkgb3ZlcnJpZGU7CkBAIC0xMTEsMjAgKzExMiwyNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCB0aW1lQ2hhbmdlZCgp
OwogICAgIHZvaWQgZGlkRW5kKCk7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCi0gICAgdm9pZCBzb3VyY2VDaGFuZ2VkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWQoKTsKKwogICAgIEdzdEVsZW1lbnQqIGF1ZGlv
U2luaygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVQbGF5U2lu
aygpIHsgfQogCiAgICAgdm9pZCBzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkgb3ZlcnJpZGU7
CiAKLSAgICBib29sIGNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUpOworICAgIHZpcnR1YWwg
Ym9vbCBjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlKTsKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIG92ZXJy
aWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9Tb3VyY2VQcm92aWRlcio+KG1fYXVk
aW9Tb3VyY2VQcm92aWRlci5nZXQoKSk7IH0KICNlbmRpZgogCisgICAgYm9vbCBpc0xpdmVTdHJl
YW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzU3RyZWFtaW5nOyB9CisKKyAgICBib29s
IGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CkBAIC0x
MzUsMTcgKzE0MiwxNyBAQCBwcml2YXRlOgogCiAgICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9T
aW5rKCkgb3ZlcnJpZGU7CiAKLSAgICBmbG9hdCBwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3Q7Cisg
ICAgZG91YmxlIHBsYXliYWNrUG9zaXRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlU3Rh
dGVzKCk7Ci0gICAgdm9pZCBhc3luY1N0YXRlQ2hhbmdlRG9uZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTdGF0ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXN5bmNTdGF0ZUNoYW5nZURvbmUo
KTsKIAogICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbigpOwogCiAgICAgYm9vbCBsb2FkTmV4dExv
Y2F0aW9uKCk7CiAgICAgdm9pZCBtZWRpYUxvY2F0aW9uQ2hhbmdlZChHc3RNZXNzYWdlKik7CiAK
LSAgICB2b2lkIHNldERvd25sb2FkQnVmZmVyaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldERv
d25sb2FkQnVmZmVyaW5nKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVz
c2FnZSopOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgVVNFKEdTVFJFQU1FUl9NUEVHVFMp
CiAgICAgdm9pZCBwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKik7CkBAIC0x
NTQsMjEgKzE2MSwzNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50
cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0
VG9jRW50cnkqLCBHc3RUb2NFbnRyeSogcGFyZW50KTsKICNlbmRpZgotICAgIGJvb2wgZG9TZWVr
KGdpbnQ2NCBwb3NpdGlvbiwgZmxvYXQgcmF0ZSwgR3N0U2Vla0ZsYWdzIHNlZWtUeXBlKTsKLSAg
ICB2b2lkIHVwZGF0ZVBsYXliYWNrUmF0ZSgpOworICAgIHZpcnR1YWwgYm9vbCBkb1NlZWsoZ2lu
dDY0IHBvc2l0aW9uLCBmbG9hdCByYXRlLCBHc3RTZWVrRmxhZ3Mgc2Vla1R5cGUpOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVQbGF5YmFja1JhdGUoKTsKIAogICAgIFN0cmluZyBlbmdpbmVEZXNj
cmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9Ci0gICAgYm9v
bCBpc0xpdmVTdHJlYW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzU3RyZWFtaW5nOyB9
CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQotICAgIC8vIFRPRE86IEltcGxlbWVudAotICAgIHVuc2lnbmVkIGxvbmcgdG90
YWxWaWRlb0ZyYW1lcygpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB1bnNpZ25lZCBsb25n
IGRyb3BwZWRWaWRlb0ZyYW1lcygpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB1bnNpZ25l
ZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAg
IE1lZGlhVGltZSB0b3RhbEZyYW1lRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7IH0KLSNlbmRpZgorcHJvdGVjdGVkOgorICAgIHZvaWQgY2FjaGVEdXJhdGlv
bigpOworCisgICAgYm9vbCBtX2J1ZmZlcmluZzsKKyAgICBpbnQgbV9idWZmZXJpbmdQZXJjZW50
YWdlOworICAgIG11dGFibGUgZmxvYXQgbV9jYWNoZWRQb3NpdGlvbjsKKyAgICBib29sIG1fY2Fu
RmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdGlvbjsKKyAgICBib29sIG1fY2hhbmdpbmdS
YXRlOworICAgIGJvb2wgbV9kb3dubG9hZEZpbmlzaGVkOworICAgIGJvb2wgbV9lcnJvck9jY3Vy
ZWQ7CisgICAgbXV0YWJsZSBib29sIG1faXNFbmRSZWFjaGVkOworICAgIG11dGFibGUgYm9vbCBt
X2lzU3RyZWFtaW5nOworICAgIG11dGFibGUgZ2Zsb2F0IG1fZHVyYXRpb25BdEVPUzsKKyAgICBi
b29sIG1fcGF1c2VkOworICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlOworICAgIEdzdFN0YXRlIG1f
cmVxdWVzdGVkU3RhdGU7CisgICAgYm9vbCBtX3Jlc2V0UGlwZWxpbmU7CisgICAgYm9vbCBtX3Nl
ZWtpbmc7CisgICAgYm9vbCBtX3NlZWtJc1BlbmRpbmc7CisgICAgZmxvYXQgbV9zZWVrVGltZTsK
KyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc291cmNlOworICAgIGJvb2wgbV92b2x1bWVBbmRN
dXRlSW5pdGlhbGl6ZWQ7CiAKICAgICB2b2lkIHJlYWR5VGltZXJGaXJlZCgpOwogCkBAIC0xOTQs
MzkgKzIxNSwyMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBHc3RGbG93UmV0dXJuIG5ld1RleHRT
YW1wbGVDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKICNlbmRpZgogCitw
cml2YXRlOgogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4g
bV93ZWFrUHRyRmFjdG9yeTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zb3VyY2U7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV90ZXh0QXBw
U2luazsKICAgICBHUmVmUHRyPEdzdFBhZD4gbV90ZXh0QXBwU2lua1BhZDsKICNlbmRpZgotICAg
IGZsb2F0IG1fc2Vla1RpbWU7Ci0gICAgYm9vbCBtX2NoYW5naW5nUmF0ZTsKLSAgICBib29sIG1f
aXNFbmRSZWFjaGVkOwotICAgIG11dGFibGUgYm9vbCBtX2lzU3RyZWFtaW5nOwogICAgIEdzdFN0
cnVjdHVyZSogbV9tZWRpYUxvY2F0aW9uczsKICAgICBpbnQgbV9tZWRpYUxvY2F0aW9uQ3VycmVu
dEluZGV4OwotICAgIGJvb2wgbV9yZXNldFBpcGVsaW5lOwotICAgIGJvb2wgbV9wYXVzZWQ7CiAg
ICAgYm9vbCBtX3BsYXliYWNrUmF0ZVBhdXNlOwotICAgIGJvb2wgbV9zZWVraW5nOwotICAgIGJv
b2wgbV9zZWVrSXNQZW5kaW5nOwogICAgIGZsb2F0IG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrOwot
ICAgIGJvb2wgbV9jYW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0aW9uOwotICAgIGJv
b2wgbV9idWZmZXJpbmc7Ci0gICAgZmxvYXQgbV9wbGF5YmFja1JhdGU7CiAgICAgZmxvYXQgbV9s
YXN0UGxheWJhY2tSYXRlOwotICAgIGJvb2wgbV9lcnJvck9jY3VyZWQ7Ci0gICAgYm9vbCBtX2Rv
d25sb2FkRmluaXNoZWQ7Ci0gICAgZmxvYXQgbV9kdXJhdGlvbkF0RU9TOwogICAgIFRpbWVyIG1f
ZmlsbFRpbWVyOwogICAgIGZsb2F0IG1fbWF4VGltZUxvYWRlZDsKLSAgICBpbnQgbV9idWZmZXJp
bmdQZXJjZW50YWdlOwogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIG1fcHJlbG9hZDsKICAgICBi
b29sIG1fZGVsYXlpbmdMb2FkOwogICAgIG11dGFibGUgZmxvYXQgbV9tYXhUaW1lTG9hZGVkQXRM
YXN0RGlkTG9hZGluZ1Byb2dyZXNzOwotICAgIGJvb2wgbV92b2x1bWVBbmRNdXRlSW5pdGlhbGl6
ZWQ7CiAgICAgYm9vbCBtX2hhc1ZpZGVvOwogICAgIGJvb2wgbV9oYXNBdWRpbzsKICAgICBSdW5M
b29wOjpUaW1lcjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1fcmVhZHlUaW1lckhhbmRs
ZXI7CkBAIC0yMzYsNyArMjQxLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVRElPKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPiBtX2F1ZGlv
U291cmNlUHJvdmlkZXI7CiAjZW5kaWYKLSAgICBHc3RTdGF0ZSBtX3JlcXVlc3RlZFN0YXRlOwog
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdXRvQXVkaW9TaW5rOwogICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbV9taXNzaW5nUGx1
Z2luc0NhbGxiYWNrOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTI0OCwxMiArMjUyLDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJfTVBF
R1RTKQogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV9tZXRhZGF0YVRyYWNrczsKICNlbmRpZgotI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4g
bV9tZWRpYVNvdXJjZTsKLSAgICBib29sIGlzTWVkaWFTb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhU291cmNlOyB9Ci0jZWxzZQotICAgIGJvb2wgaXNNZWRpYVNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>