<?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>132846</bug_id>
          
          <creation_ts>2014-05-12 16:57:57 -0700</creation_ts>
          <short_desc>ResourceLoadTiming should use reference instead of pointer</short_desc>
          <delta_ts>2014-05-14 10:45:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1008796</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-12 16:57:57 -0700</bug_when>
    <thetext>As promised in https://bugs.webkit.org/show_bug.cgi?id=132574 I&apos;m using references for ResourceLoadTiming, which is instanced in PerformanceResourceTiming and ResourceResponseBase.  This avoids unnecessary null checks and reference counting, and it makes the code nicer to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008809</commentid>
    <comment_count>1</comment_count>
      <attachid>231348</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-12 17:10:51 -0700</bug_when>
    <thetext>Created attachment 231348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008953</commentid>
    <comment_count>2</comment_count>
      <attachid>231382</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-13 08:28:50 -0700</bug_when>
    <thetext>Created attachment 231382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008970</commentid>
    <comment_count>3</comment_count>
      <attachid>231386</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-13 09:24:03 -0700</bug_when>
    <thetext>Created attachment 231386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009049</commentid>
    <comment_count>4</comment_count>
      <attachid>231403</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-13 12:58:03 -0700</bug_when>
    <thetext>Created attachment 231403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009062</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-13 13:47:13 -0700</bug_when>
    <thetext>The fourth patch tried to get rid of my use of mutable in ResourceResponseBase.h, but it doesn&apos;t work nicely with the way Soup uses ResourceLoadTiming.  I think the third patch is the way to go.  It uses mutable, but there are lots of mutable things in ResourceResponseBase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009068</commentid>
    <comment_count>6</comment_count>
      <attachid>231386</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-13 13:58:07 -0700</bug_when>
    <thetext>Comment on attachment 231386
Patch

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

Is there a reason why you can&apos;t just have an std::unique_ptr reference to the ResourceLoadTiming object? Maybe it doesn&apos;t matter.
r- because of the assignment operator.

&gt; Source/WebCore/platform/network/ResourceLoadTiming.h:65
&gt; +    void operator=(const ResourceLoadTiming&amp; other)
&gt; +    {
&gt; +        domainLookupStart = other.domainLookupStart;
&gt; +        domainLookupEnd = other.domainLookupEnd;
&gt; +        connectStart = other.connectStart;
&gt; +        connectEnd = other.connectEnd;
&gt; +        requestStart = other.requestStart;
&gt; +        responseStart = other.responseStart;
&gt; +        secureConnectionStart = other.secureConnectionStart;
&gt; +    }

This is not a correct assignment operator, it needs to return *this.

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:555
&gt;      lazyInit(CommonAndUncommonFields);

Do we need to call this now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009073</commentid>
    <comment_count>7</comment_count>
      <attachid>231406</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-13 14:10:30 -0700</bug_when>
    <thetext>Created attachment 231406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009279</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-14 10:04:10 -0700</bug_when>
    <thetext>&gt; Is there a reason why you can&apos;t just have an std::unique_ptr reference to the ResourceLoadTiming object? 

It seems nice to avoid a separate allocation, given that nearly(?) all of the responses will have the timing data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009280</commentid>
    <comment_count>9</comment_count>
      <attachid>231406</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-14 10:09:12 -0700</bug_when>
    <thetext>Comment on attachment 231406
Patch

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

And the downside is of course that touching ResourceTiming header will make half of WebCore rebuild, because half of WebCore indirectly includes ResourceResponse.h.

&gt; Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm:197
&gt; +        timing.domainLookupStart = domainLookupStart &lt;= 0.0 ? -1 : (domainLookupStart - referenceStart) * 1000;

I don&apos;t think that we ever need to compare to 0.0, can it be simply 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009281</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-14 10:12:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I don&apos;t think that we ever need to compare to 0.0, can it be simply 0?
I&apos;ll do this when I refactor the duplicate code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009293</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-05-14 10:45:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/168845</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231348</attachid>
            <date>2014-05-12 17:10:51 -0700</date>
            <delta_ts>2014-05-13 08:28:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132846-20140512171028.patch</filename>
            <type>text/plain</type>
            <size>34532</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA1LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyB3aXRoIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgIFJlbW92ZWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9h
ZFRpbWluZyBsaW5rZXIgc3ltYm9sLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbkxvb2t1
cFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRv
bWFpbkxvb2t1cEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpjb25uZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzdFN0YXJ0KToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaDoKKyAgICAgICAgTWFrZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgUmVm
UHRyLgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQpOgorICAgICAgICBDaGVjayB0byBzZWUgaWYg
dGhlIGxvYWRlciBleGlzdHMsIHRoZW4gdXNlIFJlc291cmNlTG9hZFRpbWluZyByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmg6CisgICAgICAg
IFJlbW92ZWQgcmVzb3VyY2VMb2FkVGltaW5nIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRUaW1pbmc6OlJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIFJlcGxhY2VkIHJlZmVyZW5j
ZSBjb3VudGluZyB3aXRoIGNvcHkgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpkZWVwQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKwogMjAxNC0wNS0xMiAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29udGVudCBzaGFkb3cgbGF5ZXIgbmVlZHMgdG8g
bW92ZSBpbiBzeW5jIHdpdGggdGhlIGNvbnRlbnQgbGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzM1MSw2ICszMzUxLDUgQEAgX19aTjdXZWJDb3JlNFBhZ2UxMXNl
dFZpZXdNb2RlRU5TMF84VmlldwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLV9f
Wk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMXNldFJlc291cmNlTG9hZFRpbWluZ0VO
M1dURjEwUGFzc1JlZlB0cklOU18xOFJlc291cmNlTG9hZFRpbWluZ0VFRQogX19aTks3V2ViQ29y
ZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxOHJlc291cmNlTG9hZFRpbWluZ0V2CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDggKzI0Myw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXIKICAgICAgICAgLnNl
dENvbm5lY3Rpb25JZChyZXNwb25zZS5jb25uZWN0aW9uSUQoKSk7CiAKICAgICByZXNwb25zZU9i
amVjdC0+c2V0RnJvbURpc2tDYWNoZShyZXNwb25zZS53YXNDYWNoZWQoKSk7Ci0gICAgaWYgKHJl
c3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQotICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0
VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKCpyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KSwgbG9hZGVyKSk7CisgICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZv
clRpbWluZyhyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSwgbG9hZGVyKSk7CiAKICAgICBy
ZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAJKHJldmlzaW9uIDE2ODY0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWlu
Zzo6ZG9tYWluCiAgICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWluZy0+ZG9tYWluTG9va3VwU3Rh
cnQgPCAwKQogICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291
cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0
KTsKKyAgICByZXR1cm4gcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWlu
Zy5kb21haW5Mb29rdXBTdGFydCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpkb21haW5Mb29rdXBFbmQoKSBjb25zdApAQCAtMTMxLDEwICsxMzEsMTAgQEAgZG91Ymxl
IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbgogICAgIGlmICghbV9zaG91bGRSZXBv
cnREZXRhaWxzKQogICAgICAgICByZXR1cm4gMC4wOwogCi0gICAgaWYgKCFtX3RpbWluZyB8fCBt
X3RpbWluZy0+ZG9tYWluTG9va3VwRW5kIDwgMCkKKyAgICBpZiAoIW1fdGltaW5nIHx8IG1fdGlt
aW5nLmRvbWFpbkxvb2t1cEVuZCA8IDApCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFy
dCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90
aW1pbmctPmRvbWFpbkxvb2t1cEVuZCk7CisgICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1l
bnRNaWxsaXNlY29uZHMobV90aW1pbmcuZG9tYWluTG9va3VwRW5kKTsKIH0KIAogZG91YmxlIFBl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmNvbm5lY3RTdGFydCgpIGNvbnN0CkBAIC0xNDMsMTMg
KzE0MywxMyBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6Y29ubmVjCiAgICAg
ICAgIHJldHVybiAwLjA7CiAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEg
bmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgotICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1p
bmctPmNvbm5lY3RTdGFydCA8IDAgfHwgbV9kaWRSZXVzZUNvbm5lY3Rpb24pCisgICAgaWYgKCFt
X3RpbWluZyB8fCBtX3RpbWluZy5jb25uZWN0U3RhcnQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0
aW9uKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBjb25uZWN0
U3RhcnQgaW5jbHVkZXMgYW55IEROUyB0aW1lLCBzbyB3ZSBtYXkgbmVlZCB0byB0cmltIHRoYXQg
b2ZmLgotICAgIGludCBjb25uZWN0U3RhcnQgPSBtX3RpbWluZy0+Y29ubmVjdFN0YXJ0OworICAg
IGludCBjb25uZWN0U3RhcnQgPSBtX3RpbWluZy5jb25uZWN0U3RhcnQ7CiAgICAgaWYgKG1fdGlt
aW5nLT5kb21haW5Mb29rdXBFbmQgPj0gMCkKLSAgICAgICAgY29ubmVjdFN0YXJ0ID0gbV90aW1p
bmctPmRvbWFpbkxvb2t1cEVuZDsKKyAgICAgICAgY29ubmVjdFN0YXJ0ID0gbV90aW1pbmcuZG9t
YWluTG9va3VwRW5kOwogCiAgICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNl
Y29uZHMoY29ubmVjdFN0YXJ0KTsKIH0KQEAgLTE2MCwxMCArMTYwLDEwIEBAIGRvdWJsZSBQZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nOjpjb25uZWMKICAgICAgICAgcmV0dXJuIDAuMDsKIAogICAg
IC8vIGNvbm5lY3RTdGFydCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3QgaXMgbm90
IG1hZGUuCi0gICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWluZy0+Y29ubmVjdEVuZCA8IDAgfHwg
bV9kaWRSZXVzZUNvbm5lY3Rpb24pCisgICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWluZy5jb25u
ZWN0RW5kIDwgMCB8fCBtX2RpZFJldXNlQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIGNvbm5l
Y3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29u
ZHMobV90aW1pbmctPmNvbm5lY3RFbmQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3Vt
ZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLmNvbm5lY3RFbmQpOwogfQogCiBkb3VibGUgUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTE3
MSwxMCArMTcxLDEwIEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpzZWN1cmUK
ICAgICBpZiAoIW1fc2hvdWxkUmVwb3J0RGV0YWlscykKICAgICAgICAgcmV0dXJuIDAuMDsKIAot
ICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8IDAp
IC8vIFNlY3VyZSBjb25uZWN0aW9uIG5vdCBuZWdvdGlhdGVkLgorICAgIGlmICghbV90aW1pbmcg
fHwgbV90aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0IDwgMCkgLy8gU2VjdXJlIGNvbm5lY3Rp
b24gbm90IG5lZ290aWF0ZWQuCiAgICAgICAgIHJldHVybiAwLjA7CiAKLSAgICByZXR1cm4gcmVz
b3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+c2VjdXJlQ29ubmVjdGlv
blN0YXJ0KTsKKyAgICByZXR1cm4gcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyht
X3RpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOwogfQogCiBkb3VibGUgUGVyZm9ybWFuY2VS
ZXNvdXJjZVRpbWluZzo6cmVxdWVzdFN0YXJ0KCkgY29uc3QKQEAgLTE4NSw3ICsxODUsNyBAQCBk
b3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzCiAgICAgaWYgKCFtX3RpbWlu
ZykKICAgICAgICAgcmV0dXJuIGNvbm5lY3RFbmQoKTsKIAotICAgIHJldHVybiByZXNvdXJjZVRp
bWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLT5yZXF1ZXN0U3RhcnQpOworICAgIHJl
dHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLnJlcXVlc3RT
dGFydCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpyZXNwb25zZUVu
ZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaAkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcg
QEAgcHJpdmF0ZToKICAgICBkb3VibGUgcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25k
cyhpbnQgZGVsdGFNaWxsaXNlY29uZHMpIGNvbnN0OwogCiAgICAgQXRvbWljU3RyaW5nIG1faW5p
dGlhdG9yVHlwZTsKLSAgICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBtX3RpbWluZzsKKyAg
ICBSZXNvdXJjZUxvYWRUaW1pbmcgbV90aW1pbmc7CiAgICAgZG91YmxlIG1fZmluaXNoVGltZTsK
ICAgICBib29sIG1fZGlkUmV1c2VDb25uZWN0aW9uOwogICAgIGJvb2wgbV9zaG91bGRSZXBvcnRE
ZXRhaWxzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAJ
KHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1p
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMzIgKzEyNCwzNCBAQCB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmZlCiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9tYWluTG9va3VwU3RhcnQoKSBjb25zdAogewotICAgIFJlc291cmNlTG9h
ZFRpbWluZyogdGltaW5nID0gcmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgaWYgKCF0aW1pbmcp
CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50TG9hZGVyKCk7CisgICAgaWYg
KCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7Ci0KKyAgICAKKyAgICBjb25z
dCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJj
ZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBUaGlzIHdpbGwgYmUgLTEgd2hlbiBhIEROUyBy
ZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBz
cGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIG5vIEROUywgd2UgImJhY2tmaWxsIiB3aXRoIGZl
dGNoU3RhcnQuCi0gICAgaW50IGRvbWFpbkxvb2t1cFN0YXJ0ID0gdGltaW5nLT5kb21haW5Mb29r
dXBTdGFydDsKLSAgICBpZiAoZG9tYWluTG9va3VwU3RhcnQgPCAwKQorICAgIGlmICh0aW1pbmcu
ZG9tYWluTG9va3VwU3RhcnQgPCAwKQogICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgpOwogCi0g
ICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoZG9tYWluTG9va3Vw
U3RhcnQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRp
bWluZy5kb21haW5Mb29rdXBTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kKCkgY29uc3QKIHsKLSAgICBSZXNvdXJjZUxvYWRU
aW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghdGltaW5nKQor
ICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudExvYWRlcigpOworICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKLQorICAgIAorICAg
IGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJl
c291cmNlTG9hZFRpbWluZygpOworICAgIAogICAgIC8vIFRoaXMgd2lsbCBiZSAtMSB3aGVuIGEg
RE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2lu
ZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAiYmFja2ZpbGwiIHdp
dGggZG9tYWluTG9va3VwU3RhcnQuCi0gICAgaW50IGRvbWFpbkxvb2t1cEVuZCA9IHRpbWluZy0+
ZG9tYWluTG9va3VwRW5kOwotICAgIGlmIChkb21haW5Mb29rdXBFbmQgPCAwKQorICAgIGlmICh0
aW1pbmcuZG9tYWluTG9va3VwRW5kIDwgMCkKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0
YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShk
b21haW5Mb29rdXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fi
c29sdXRlKHRpbWluZy5kb21haW5Mb29rdXBFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCgpIGNvbnN0CkBAIC0xNTgsMjAgKzE2MCwx
OCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvCiAgICAgaWYgKCFs
b2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBFbmQoKTsKIAotICAgIFJlc291cmNl
TG9hZFRpbWluZyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWlu
ZygpOwotICAgIGlmICghdGltaW5nKQotICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7
Ci0KKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9u
c2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2ls
bCBiZSAtMSB3aGVuIGEgbmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhl
ciB0aGFuIGV4cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29u
bmVjdGlvbiwgd2UgImJhY2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cEVuZC4KLSAgICBpbnQgY29u
bmVjdFN0YXJ0ID0gdGltaW5nLT5jb25uZWN0U3RhcnQ7CisgICAgaW50IGNvbm5lY3RTdGFydCA9
IHRpbWluZy5jb25uZWN0U3RhcnQ7CiAgICAgaWYgKGNvbm5lY3RTdGFydCA8IDAgfHwgbG9hZGVy
LT5yZXNwb25zZSgpLmNvbm5lY3Rpb25SZXVzZWQoKSkKICAgICAgICAgcmV0dXJuIGRvbWFpbkxv
b2t1cEVuZCgpOwogCiAgICAgLy8gUmVzb3VyY2VMb2FkVGltaW5nJ3MgY29ubmVjdCBwaGFzZSBp
bmNsdWRlcyBETlMsIGhvd2V2ZXIgTmF2aWdhdGlvbiBUaW1pbmcncwogICAgIC8vIGNvbm5lY3Qg
cGhhc2Ugc2hvdWxkIG5vdC4gU28gaWYgdGhlcmUgaXMgRE5TIHRpbWUsIHRyaW0gaXQgZnJvbSB0
aGUgc3RhcnQuCi0gICAgaWYgKHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID49IDAgJiYgdGltaW5n
LT5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5lY3RTdGFydCA9
IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOworICAgIGlmICh0aW1pbmcuZG9tYWluTG9va3VwRW5k
ID49IDAgJiYgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+IGNvbm5lY3RTdGFydCkKKyAgICAgICAg
Y29ubmVjdFN0YXJ0ID0gdGltaW5nLmRvbWFpbkxvb2t1cEVuZDsKIAogICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGNvbm5lY3RTdGFydCk7CiB9CkBAIC0xODIs
MTcgKzE4MiwxNCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvCiAg
ICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBjb25uZWN0U3RhcnQoKTsKIAotICAgIFJl
c291cmNlTG9hZFRpbWluZyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9h
ZFRpbWluZygpOwotICAgIGlmICghdGltaW5nKQotICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0
KCk7Ci0KKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVz
cG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBjb25uZWN0RW5kIHdp
bGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRo
ZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNv
bm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0gICAgaW50IGNvbm5l
Y3RFbmQgPSB0aW1pbmctPmNvbm5lY3RFbmQ7Ci0gICAgaWYgKGNvbm5lY3RFbmQgPCAwIHx8IGxv
YWRlci0+cmVzcG9uc2UoKS5jb25uZWN0aW9uUmV1c2VkKCkpCisgICAgaWYgKHRpbWluZy5jb25u
ZWN0RW5kIDwgMCB8fCBsb2FkZXItPnJlc3BvbnNlKCkuY29ubmVjdGlvblJldXNlZCgpKQogICAg
ICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGlt
ZVJlbGF0aXZlVG9BYnNvbHV0ZShjb25uZWN0RW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2Fk
VGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmcuY29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29u
c3QKQEAgLTIwMSwzNSArMTk4LDM2IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRp
bWluZzo6c2UKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZXNv
dXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRU
aW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcm
IHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAK
KyAgICBpZiAodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8IDApCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgaW50IHNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHRpbWluZy0+c2VjdXJlQ29u
bmVjdGlvblN0YXJ0OwotICAgIGlmIChzZWN1cmVDb25uZWN0aW9uU3RhcnQgPCAwKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29s
dXRlKHNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVS
ZWxhdGl2ZVRvQWJzb2x1dGUodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0YXJ0KCkgY29uc3QK
IHsKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygp
OwotICAgIGlmICghdGltaW5nKQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVu
dExvYWRlcigpOworICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgp
OwotCi0gICAgQVNTRVJUKHRpbWluZy0+cmVxdWVzdFN0YXJ0ID49IDApOwotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy0+cmVxdWVzdFN0YXJ0KTsK
KyAgICAKKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVz
cG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKKyAgICBBU1NFUlQodGltaW5nLnJl
cXVlc3RTdGFydCA+PSAwKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9B
YnNvbHV0ZSh0aW1pbmcucmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKIHsKLSAgICBSZXNvdXJjZUxv
YWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghdGltaW5n
KQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudExvYWRlcigpOworICAgIGlm
ICghbG9hZGVyKQogICAgICAgICByZXR1cm4gcmVxdWVzdFN0YXJ0KCk7CiAKLSAgICBBU1NFUlQo
dGltaW5nLT5yZXNwb25zZVN0YXJ0ID49IDApOwotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1l
UmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy0+cmVzcG9uc2VTdGFydCk7CisgICAgY29uc3QgUmVz
b3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2Fk
VGltaW5nKCk7CisgICAgCisgICAgQVNTRVJUKHRpbWluZy5yZXNwb25zZVN0YXJ0ID49IDApOwor
ICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy5yZXNw
b25zZVN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNwb25zZUVuZCgpIGNvbnN0CkBAIC0zMzMsMTUgKzMzMSw2IEBAIERvY3VtZW50TG9hZFRpbWlu
ZyogUGVyZm9ybWFuY2VUaW1pbmc6OmQKICAgICByZXR1cm4gbG9hZGVyLT50aW1pbmcoKTsKIH0K
IAotUmVzb3VyY2VMb2FkVGltaW5nKiBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGlt
aW5nKCkgY29uc3QKLXsKLSAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnRMb2Fk
ZXIoKTsKLSAgICBpZiAoIWxvYWRlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
bG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOwotfQotCiB1bnNpZ25lZCBs
b25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJz
b2x1dGUoaW50IHJlbGF0aXZlTWlsbGlzZWNvbmRzKSBjb25zdAogewogICAgIEFTU0VSVChyZWxh
dGl2ZU1pbGxpc2Vjb25kcyA+PSAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlVGltaW5nLmgJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNiBAQCBwcml2YXRl
OgogICAgIGNvbnN0IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZygpIGNvbnN0OwogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0OwogICAgIERvY3VtZW50TG9h
ZFRpbWluZyogZG9jdW1lbnRMb2FkVGltaW5nKCkgY29uc3Q7Ci0gICAgUmVzb3VyY2VMb2FkVGlt
aW5nKiByZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQpIGNvbnN0OwogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJsZSkg
Y29uc3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUxvYWRUaW1pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MCw0MCArMjEsNDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBSZXNvdXJjZUxv
YWRUaW1pbmdfaAogI2RlZmluZSBSZXNvdXJjZUxvYWRUaW1pbmdfaAogCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudExvYWRU
aW1pbmc7Ci0KLWNsYXNzIFJlc291cmNlTG9hZFRpbWluZyA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
c291cmNlTG9hZFRpbWluZz4geworICAgIAorY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5nIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgp
CisgICAgUmVzb3VyY2VMb2FkVGltaW5nKCkKKyAgICAgICAgOiBkb21haW5Mb29rdXBTdGFydCgt
MSkKKyAgICAgICAgLCBkb21haW5Mb29rdXBFbmQoLTEpCisgICAgICAgICwgY29ubmVjdFN0YXJ0
KC0xKQorICAgICAgICAsIGNvbm5lY3RFbmQoLTEpCisgICAgICAgICwgcmVxdWVzdFN0YXJ0KDAp
CisgICAgICAgICwgcmVzcG9uc2VTdGFydCgwKQorICAgICAgICAsIHNlY3VyZUNvbm5lY3Rpb25T
dGFydCgtMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3VyY2VMb2Fk
VGltaW5nKTsKICAgICB9Ci0KLSAgICBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gZGVl
cENvcHkoKQorICAgIAorICAgIFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRU
aW1pbmcmIG90aGVyKQorICAgICAgICA6IGRvbWFpbkxvb2t1cFN0YXJ0KG90aGVyLmRvbWFpbkxv
b2t1cFN0YXJ0KQorICAgICAgICAsIGRvbWFpbkxvb2t1cEVuZChvdGhlci5kb21haW5Mb29rdXBF
bmQpCisgICAgICAgICwgY29ubmVjdFN0YXJ0KG90aGVyLmNvbm5lY3RTdGFydCkKKyAgICAgICAg
LCBjb25uZWN0RW5kKG90aGVyLmNvbm5lY3RFbmQpCisgICAgICAgICwgcmVxdWVzdFN0YXJ0KG90
aGVyLnJlcXVlc3RTdGFydCkKKyAgICAgICAgLCByZXNwb25zZVN0YXJ0KG90aGVyLnJlc3BvbnNl
U3RhcnQpCisgICAgICAgICwgc2VjdXJlQ29ubmVjdGlvblN0YXJ0KG90aGVyLnNlY3VyZUNvbm5l
Y3Rpb25TdGFydCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IHRp
bWluZyA9IGNyZWF0ZSgpOwotICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9t
YWluTG9va3VwU3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gZG9tYWlu
TG9va3VwRW5kOwotICAgICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IGNvbm5lY3RTdGFydDsK
LSAgICAgICAgdGltaW5nLT5jb25uZWN0RW5kID0gY29ubmVjdEVuZDsKLSAgICAgICAgdGltaW5n
LT5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+cmVzcG9uc2VT
dGFydCA9IHJlc3BvbnNlU3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0
YXJ0ID0gc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgICAgICByZXR1cm4gdGltaW5nLnJlbGVh
c2UoKTsKICAgICB9Ci0KKyAgICAKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZXNvdXJjZUxv
YWRUaW1pbmcmIG90aGVyKQorICAgIHsKKyAgICAgICAgZG9tYWluTG9va3VwU3RhcnQgPSBvdGhl
ci5kb21haW5Mb29rdXBTdGFydDsKKyAgICAgICAgZG9tYWluTG9va3VwRW5kID0gb3RoZXIuZG9t
YWluTG9va3VwRW5kOworICAgICAgICBjb25uZWN0U3RhcnQgPSBvdGhlci5jb25uZWN0U3RhcnQ7
CisgICAgICAgIGNvbm5lY3RFbmQgPSBvdGhlci5jb25uZWN0RW5kOworICAgICAgICByZXF1ZXN0
U3RhcnQgPSBvdGhlci5yZXF1ZXN0U3RhcnQ7CisgICAgICAgIHJlc3BvbnNlU3RhcnQgPSBvdGhl
ci5yZXNwb25zZVN0YXJ0OworICAgICAgICBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBvdGhlci5z
ZWN1cmVDb25uZWN0aW9uU3RhcnQ7CisgICAgfQorICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0CkBAIC03OCwx
OCArODgsNiBAQCBwdWJsaWM6CiAgICAgaW50IHJlcXVlc3RTdGFydDsKICAgICBpbnQgcmVzcG9u
c2VTdGFydDsKICAgICBpbnQgc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgIAotcHJpdmF0ZToK
LSAgICBSZXNvdXJjZUxvYWRUaW1pbmcoKQotICAgICAgICA6IGRvbWFpbkxvb2t1cFN0YXJ0KC0x
KQotICAgICAgICAsIGRvbWFpbkxvb2t1cEVuZCgtMSkKLSAgICAgICAgLCBjb25uZWN0U3RhcnQo
LTEpCi0gICAgICAgICwgY29ubmVjdEVuZCgtMSkKLSAgICAgICAgLCByZXF1ZXN0U3RhcnQoMCkK
LSAgICAgICAgLCByZXNwb25zZVN0YXJ0KDApCi0gICAgICAgICwgc2VjdXJlQ29ubmVjdGlvblN0
YXJ0KC0xKQotICAgIHsKLSAgICB9CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2
aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBQYXNz
T3duUHRyPFJlc291cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzCiAKICAgICByZXNwb25zZS0+bGF6
eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFk
ZXJGaWVsZHMuYWRvcHQoZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpOwotICAgIHJlc3Bv
bnNlLT5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcucmVs
ZWFzZSgpKTsKKyAgICByZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVz
b3VyY2VMb2FkVGltaW5nKTsKICAgICByZXNwb25zZS0+ZG9QbGF0Zm9ybUFkb3B0KGRhdGEpOwog
ICAgIHJldHVybiByZXNwb25zZS5yZWxlYXNlKCk7CiB9CkBAIC0xMjIsOCArMTIyLDcgQEAgUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYQogICAgIGRhdGEtPm1faHR0cFN0
YXR1c0NvZGUgPSBodHRwU3RhdHVzQ29kZSgpOwogICAgIGRhdGEtPm1faHR0cFN0YXR1c1RleHQg
PSBodHRwU3RhdHVzVGV4dCgpLmlzb2xhdGVkQ29weSgpOwogICAgIGRhdGEtPm1faHR0cEhlYWRl
cnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsKLSAgICBpZiAobV9yZXNvdXJjZUxv
YWRUaW1pbmcpCi0gICAgICAgIGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nID0gbV9yZXNvdXJj
ZUxvYWRUaW1pbmctPmRlZXBDb3B5KCk7CisgICAgZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcg
PSBtX3Jlc291cmNlTG9hZFRpbWluZzsKICAgICByZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCku
ZG9QbGF0Zm9ybUNvcHlEYXRhKGRhdGEucmVsZWFzZSgpKTsKIH0KIApAQCAtNTUxLDE0ICs1NTAs
MTQgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbgogICAgIG1fY29u
bmVjdGlvbklEID0gY29ubmVjdGlvbklEOwogfQogCi1SZXNvdXJjZUxvYWRUaW1pbmcqIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdAorUmVzb3VyY2VMb2Fk
VGltaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QK
IHsKICAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKLSAgICByZXR1cm4g
bV9yZXNvdXJjZUxvYWRUaW1pbmcuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VMb2FkVGlt
aW5nOwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRUaW1p
bmcoUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IHJlc291cmNlTG9hZFRpbWluZykKK3Zv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNv
dXJjZUxvYWRUaW1pbmcmIHJlc291cmNlTG9hZFRpbWluZykKIHsKICAgICBsYXp5SW5pdChDb21t
b25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKQEAgLTU5MCw4ICs1ODksNiBAQCBib29sIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb21wYXJlKGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5yZXNvdXJjZUxvYWRUaW1pbmcoKSAmJiBiLnJlc291
cmNlTG9hZFRpbWluZygpICYmICphLnJlc291cmNlTG9hZFRpbWluZygpID09ICpiLnJlc291cmNl
TG9hZFRpbWluZygpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGEsIGIpOwogICAgIGlmIChhLnJlc291cmNlTG9hZFRpbWluZygpICE9IGIucmVzb3Vy
Y2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2
aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgd2FzQ2FjaGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXYXNDYWNoZWQoYm9v
bCk7CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0
OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2Fk
VGltaW5nPik7CisgICAgUmVzb3VyY2VMb2FkVGltaW5nJiByZXNvdXJjZUxvYWRUaW1pbmcoKSBj
b25zdDsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRU
aW1pbmcmKTsKIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hh
ZG93IiB0aGlzIG1ldGhvZCB0byBwcm92aWRlIHBsYXRmb3JtLXNwZWNpZmljIG1lbW9yeSB1c2Fn
ZSBpbmZvcm1hdGlvbgogICAgIHVuc2lnbmVkIG1lbW9yeVVzYWdlKCkgY29uc3QKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAg
ICAgQXRvbWljU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgSFRUUEhlYWRlck1hcCBtX2h0
dHBIZWFkZXJGaWVsZHM7Ci0gICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gbV9yZXNvdXJj
ZUxvYWRUaW1pbmc7CisgICAgbXV0YWJsZSBSZXNvdXJjZUxvYWRUaW1pbmcgbV9yZXNvdXJjZUxv
YWRUaW1pbmc7CiAKICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKICAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25JRDsKQEAgLTE5Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgaW50IG1faHR0cFN0
YXR1c0NvZGU7CiAgICAgU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgT3duUHRyPENyb3Nz
VGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7Ci0gICAgUmVmUHRyPFJlc291
cmNlTG9hZFRpbWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CisgICAgUmVzb3VyY2VMb2FkVGlt
aW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lv
biAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsOSArMTgx
LDYgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShyKTsKICNpZiBFTkFCTEUoV0VCX1RJTUlORykK
ICAgICBpZiAoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhID0gW2Nvbm5lY3Rpb24gX3RpbWluZ0Rh
dGFdKSB7Ci0gICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2FkVGltaW5nKFJl
c291cmNlTG9hZFRpbWluZzo6Y3JlYXRlKCkpOwotICAgICAgICBSZXNvdXJjZUxvYWRUaW1pbmcq
IHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgICAg
IAogICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgbmF2aWdhdGlvblN0YXJ0IHRpbWUgaW4gbW9u
b3RvbmljIHRpbWUsIGJ1dCB0aGUgb3RoZXIgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGlt
ZQogICAgICAgICAvLyBhbmQgb25seSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aW1lcyBhcmUg
c3RvcmVkLgogICAgICAgICBkb3VibGUgcmVmZXJlbmNlU3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFs
dWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFUaW1pbmdEYXRhSW5pdCJdIGRvdWJsZVZhbHVlXTsK
QEAgLTE5NiwxNSArMTkzLDE0IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY28KICAgICAgICAgZG91YmxlIHJlcXVlc3RTdGFydCA9IFtbdGltaW5nRGF0YSB2YWx1ZUZv
cktleTpAIl9rQ0ZOVGltaW5nRGF0YVJlcXVlc3RTdGFydCJdIGRvdWJsZVZhbHVlXTsKICAgICAg
ICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NG
TlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Il0gZG91YmxlVmFsdWVdOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHRpbWluZykgewotICAgICAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9
IGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVm
ZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5k
ID0gZG9tYWluTG9va3VwRW5kIDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVy
ZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IGNv
bm5lY3RTdGFydCA8PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkg
KiAxMDAwOwotICAgICAgICAgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1
cmVDb25uZWN0aW9uU3RhcnQgPD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0g
cmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9
IGNvbm5lY3RFbmQgPD0gMC4wID8gLTEgOiAoY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAq
IDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydCA8
PSAwLjAgPyAtMSA6IChyZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAg
ICAgICAgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydCA8PSAwLjAgPyAt
MSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgfQor
ICAgICAgICBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCk7CisgICAgICAgIHRpbWluZy5kb21haW5Mb29rdXBTdGFydCA9IGRv
bWFpbkxvb2t1cFN0YXJ0IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJl
bmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFp
bkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFy
dCkgKiAxMDAwOworICAgICAgICB0aW1pbmcuY29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0IDw9
IDAuMCA/IC0xIDogKGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAg
ICAgIHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQg
PD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICog
MTAwMDsKKyAgICAgICAgdGltaW5nLmNvbm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/IC0x
IDogKGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICB0aW1pbmcu
cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0IDw9IDAuMCA/IC0xIDogKHJlcXVlc3RTdGFydCAt
IHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAgICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0ID0g
cmVzcG9uc2VTdGFydCA8PSAwLjAgPyAtMSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3Rh
cnQpICogMTAwMDsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw2IEBAIC0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNvdXJjZVJlc3BvbnNlKHIpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgICAgICBp
ZiAoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhID0gW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdKSB7
Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhSZXNv
dXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgICAgIFJlc291cmNlTG9hZFRpbWlu
ZyogdGltaW5nID0gcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRpb25TdGFydCB0
aW1lIGluIG1vbm90b25pYyB0aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSByZWxhdGl2ZSB0
byB0aGlzIHRpbWUKICAgICAgICAgICAgIC8vIGFuZCBvbmx5IHRoZSBkaWZmZXJlbmNlcyBiZXR3
ZWVuIHRpbWVzIGFyZSBzdG9yZWQuCiAgICAgICAgICAgICBkb3VibGUgcmVmZXJlbmNlU3RhcnQg
PSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFUaW1pbmdEYXRhSW5p
dCJdIGRvdWJsZVZhbHVlXTsKQEAgLTIzOCwxNSArMjM1LDE0IEBAIC0gKHZvaWQpY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICAgICAgICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQg
PSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQi
XSBkb3VibGVWYWx1ZV07CiAgICAgICAgICAgICBkb3VibGUgcmVzcG9uc2VTdGFydCA9IFtbdGlt
aW5nRGF0YSB2YWx1ZUZvcktleTpAIl9rQ0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQiXSBkb3Vi
bGVWYWx1ZV07CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh0aW1pbmcpIHsKLSAgICAg
ICAgICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQg
PD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAw
OwotICAgICAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gZG9tYWluTG9va3Vw
RW5kIDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEw
MDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQg
PD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAg
ICAgICAgICAgICAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5l
Y3Rpb25TdGFydCA8PSAwLjAgPyAtMSA6IChzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVu
Y2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IGNv
bm5lY3RFbmQgPD0gMC4wID8gLTEgOiAoY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEw
MDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQg
PD0gMC4wID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAg
ICAgICAgICAgICAgICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9IDAu
MCA/IC0xIDogKHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSByZXNvdXJj
ZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOworICAgICAgICAgICAgdGltaW5nLmRvbWFp
bkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9v
a3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLmRv
bWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29r
dXBFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLmNvbm5l
Y3RTdGFydCA9IGNvbm5lY3RTdGFydCA8PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZl
cmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8PSAwLjAgPyAtMSA6IChzZWN1cmVDb25uZWN0
aW9uU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLmNv
bm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQgLSByZWZlcmVu
Y2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLnJlcXVlc3RTdGFydCA9IHJlcXVl
c3RTdGFydCA8PSAwLjAgPyAtMSA6IChyZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAx
MDAwOworICAgICAgICAgICAgdGltaW5nLnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9
IDAuMCA/IC0xIDogKHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwogICAg
ICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzNSwxMSArODM1LDcgQEAgc3RhdGljIGludCBtaWxpc2Vjb25kc1NpbmNlUmVxdWVz
dChkb3VibAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QoKQogewotICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOwotICAgIGlmICghZC0+
bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFN0YXJ0ID0gbWlsaXNl
Y29uZHNTaW5jZVJlcXVlc3QobV9yZXF1ZXN0VGltZSk7CisgICAgZ2V0SW50ZXJuYWwoKS0+bV9y
ZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5yZXF1ZXN0U3RhcnQgPSBtaWxpc2Vjb25kc1Np
bmNlUmVxdWVzdChtX3JlcXVlc3RUaW1lKTsKIH0KIAogc3RhdGljIHZvaWQgbmV0d29ya0V2ZW50
Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVh
bSosIGdwb2ludGVyIGRhdGEpCkBAIC04NTUsMjEgKzg1MSwyMSBAQCBzdGF0aWMgdm9pZCBuZXR3
b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVzCiAgICAgaW50IGRlbHRhVGltZSA9IG1pbGlzZWNvbmRz
U2luY2VSZXF1ZXN0KGhhbmRsZS0+bV9yZXF1ZXN0VGltZSk7CiAgICAgc3dpdGNoIChldmVudCkg
ewogICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX1JFU09MVklORzoKLSAgICAgICAgZC0+bV9yZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwU3RhcnQgPSBkZWx0YVRpbWU7
CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3Vw
U3RhcnQgPSBkZWx0YVRpbWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR19TT0NLRVRfQ0xJ
RU5UX1JFU09MVkVEOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygp
LT5kb21haW5Mb29rdXBFbmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwRW5kID0gZGVsdGFUaW1lOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9DT05ORUNUSU5HOgotICAgICAgICBkLT5t
X3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5jb25uZWN0U3RhcnQgPSBkZWx0YVRpbWU7
Ci0gICAgICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5kb21haW5M
b29rdXBTdGFydCAhPSAtMSkgeworICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpLmNvbm5lY3RTdGFydCA9IGRlbHRhVGltZTsKKyAgICAgICAgaWYgKGQtPm1fcmVzcG9u
c2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwU3RhcnQgIT0gLTEpIHsKICAgICAg
ICAgICAgIC8vIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0VGltaW5nVmlldy5q
cyBhc3N1bWVzCiAgICAgICAgICAgICAvLyB0aGF0IEROUyB0aW1lIGlzIGluY2x1ZGVkIGluIGNv
bm5lY3Rpb24gdGltZSBzbyBtdXN0CiAgICAgICAgICAgICAvLyBzdWJzdHJhY3QgaGVyZSB0aGUg
RE5TIGRlbHRhIHRoYXQgd2lsbCBiZSBhZGRlZCBsYXRlciAoc2VlCiAgICAgICAgICAgICAvLyBX
ZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWluZ1ZpZXcuY3JlYXRlVGltaW5nVGFibGUgaW4gdGhlCiAg
ICAgICAgICAgICAvLyBmaWxlIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgotICAgICAgICAgICAg
ZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+Y29ubmVjdFN0YXJ0IC09Ci0gICAg
ICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9v
a3VwRW5kIC0gZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3Vw
U3RhcnQ7CisgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLmNv
bm5lY3RTdGFydCAtPQorICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2Fk
VGltaW5nKCkuZG9tYWluTG9va3VwRW5kIC0gZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1p
bmcoKS5kb21haW5Mb29rdXBTdGFydDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBj
YXNlIEdfU09DS0VUX0NMSUVOVF9DT05ORUNURUQ6CkBAIC04ODEsMTIgKzg3NywxMiBAQCBzdGF0
aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVzCiAgICAgY2FzZSBHX1NPQ0tFVF9D
TElFTlRfUFJPWFlfTkVHT1RJQVRFRDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1NPQ0tF
VF9DTElFTlRfVExTX0hBTkRTSEFLSU5HOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNl
TG9hZFRpbWluZygpLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBkZWx0YVRpbWU7CisgICAgICAg
IGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuc2VjdXJlQ29ubmVjdGlvblN0YXJ0
ID0gZGVsdGFUaW1lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9U
TFNfSEFORFNIQUtFRDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRf
Q09NUExFVEU6Ci0gICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPmNv
bm5lY3RFbmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2Fk
VGltaW5nKCkuY29ubmVjdEVuZCA9IGRlbHRhVGltZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNjg2NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxNC0wNS0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9p
bnRlcnMgd2l0aCBSZXNvdXJjZUxvYWRUaW1pbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUp
OgorICAgICAgICBVc2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzIGFuZCBudWxsIGNo
ZWNrcy4KKwogMjAxNC0wNS0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcmlwbGUtYnVmZmVyIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAko
cmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5MCwxOCArNjkwLDE0IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW4KICAgICB9CiAgICAgCiAjaWYgRU5BQkxF
KFdFQl9USU1JTkcpCi0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZVJl
c3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGJvb2wgaGFzUmVzb3VyY2VMb2FkVGlt
aW5nID0gdGltaW5nOwotICAgIGVuY29kZXIgPDwgaGFzUmVzb3VyY2VMb2FkVGltaW5nOwotICAg
IGlmIChoYXNSZXNvdXJjZUxvYWRUaW1pbmcpIHsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmct
PmRvbWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+ZG9tYWluTG9v
a3VwRW5kOwotICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+Y29ubmVjdFN0YXJ0OwotICAgICAg
ICBlbmNvZGVyIDw8IHRpbWluZy0+Y29ubmVjdEVuZDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1p
bmctPnJlcXVlc3RTdGFydDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPnJlc3BvbnNlU3Rh
cnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQ7Ci0g
ICAgfQorICAgIGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gcmVzb3VyY2VSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5kb21haW5M
b29rdXBTdGFydDsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAg
ZW5jb2RlciA8PCB0aW1pbmcuY29ubmVjdFN0YXJ0OworICAgIGVuY29kZXIgPDwgdGltaW5nLmNv
bm5lY3RFbmQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcucmVxdWVzdFN0YXJ0OworICAgIGVuY29k
ZXIgPDwgdGltaW5nLnJlc3BvbnNlU3RhcnQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuc2VjdXJl
Q29ubmVjdGlvblN0YXJ0OwogI2VuZGlmCiB9CiAKQEAgLTc3MiwyMSArNzY4LDE1IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGUKICAgICB9CiAgICAgCiAjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCi0gICAgYm9vbCBoYXNSZXNvdXJjZUxvYWRUaW1pbmc7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNSZXNvdXJjZUxvYWRUaW1pbmcpKQorICAgIFJlc291cmNlTG9h
ZFRpbWluZyYgdGltaW5nID0gcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpCisgICAgICAgIHx8ICFk
ZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3VwRW5kKQorICAgICAgICB8fCAhZGVjb2Rl
ci5kZWNvZGUodGltaW5nLmNvbm5lY3RTdGFydCkKKyAgICAgICAgfHwgIWRlY29kZXIuZGVjb2Rl
KHRpbWluZy5jb25uZWN0RW5kKQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLnJl
cXVlc3RTdGFydCkKKyAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5yZXNwb25zZVN0
YXJ0KQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25T
dGFydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoaGFzUmVzb3VyY2VMb2FkVGlt
aW5nKSB7Ci0gICAgICAgIHJlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhSZXNvdXJjZUxv
YWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcg
PSByZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0KQotICAgICAgICAgICAgfHwgIWRlY29kZXIu
ZGVjb2RlKHRpbWluZy0+ZG9tYWluTG9va3VwRW5kKQotICAgICAgICAgICAgfHwgIWRlY29kZXIu
ZGVjb2RlKHRpbWluZy0+Y29ubmVjdFN0YXJ0KQotICAgICAgICAgICAgfHwgIWRlY29kZXIuZGVj
b2RlKHRpbWluZy0+Y29ubmVjdEVuZCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0
aW1pbmctPnJlcXVlc3RTdGFydCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1p
bmctPnJlc3BvbnNlU3RhcnQpCi0gICAgICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5n
LT5zZWN1cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KICNlbmRpZgogCiAgICAgcmVzb3VyY2VSZXNwb25zZSA9IHJlc3BvbnNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231382</attachid>
            <date>2014-05-13 08:28:50 -0700</date>
            <delta_ts>2014-05-13 09:23:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132846-20140513082828.patch</filename>
            <type>text/plain</type>
            <size>35955</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA1LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyB3aXRoIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgIFJlbW92ZWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9h
ZFRpbWluZyBsaW5rZXIgc3ltYm9sLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbkxvb2t1
cFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRv
bWFpbkxvb2t1cEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpjb25uZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzdFN0YXJ0KToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaDoKKyAgICAgICAgTWFrZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgUmVm
UHRyLgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQpOgorICAgICAgICBDaGVjayB0byBzZWUgaWYg
dGhlIGxvYWRlciBleGlzdHMsIHRoZW4gdXNlIFJlc291cmNlTG9hZFRpbWluZyByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmg6CisgICAgICAg
IFJlbW92ZWQgcmVzb3VyY2VMb2FkVGltaW5nIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRUaW1pbmc6OlJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIFJlcGxhY2VkIHJlZmVyZW5j
ZSBjb3VudGluZyB3aXRoIGNvcHkgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpkZWVwQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKwogMjAxNC0wNS0xMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBhIGZldyBpY29uIGRhdGFiYXNlIGltcHJv
dmVtZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2ODY4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYzLDYgKzMz
NjMsNSBAQCBfX1pON1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNl
QmFzZTIxc2V0UmVzb3VyY2VMb2FkVGltaW5nRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4UmVzb3Vy
Y2VMb2FkVGltaW5nRUVFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE4cmVz
b3VyY2VMb2FkVGltaW5nRXYKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAkocmV2aXNpb24gMTY4NjgwKQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDMsOCArMjQzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcgogICAgICAgICAuc2V0Q29ubmVjdGlvbklkKHJlc3BvbnNlLmNvbm5l
Y3Rpb25JRCgpKTsKIAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRGcm9tRGlza0NhY2hlKHJlc3Bv
bnNlLndhc0NhY2hlZCgpKTsKLSAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkp
Ci0gICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmco
KnJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLCBsb2FkZXIpKTsKKyAgICByZXNwb25zZU9i
amVjdC0+c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLnJlc291cmNlTG9h
ZFRpbWluZygpLCBsb2FkZXIpKTsKIAogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5n
LmNwcAkocmV2aXNpb24gMTY4NjgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZVJlc291cmNlVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIGRv
dWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpkb21haW4KICAgICBpZiAoIW1fdGltaW5n
IHx8IG1fdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA8IDApCiAgICAgICAgIHJldHVybiBmZXRj
aFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25k
cyhtX3RpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVU
b0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KTsKIH0KIAog
ZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6
ZG9tYWluCiAgICAgaWYgKCFtX3Nob3VsZFJlcG9ydERldGFpbHMpCiAgICAgICAgIHJldHVybiAw
LjA7CiAKLSAgICBpZiAoIW1fdGltaW5nIHx8IG1fdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAw
KQorICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmcuZG9tYWluTG9va3VwRW5kIDwgMCkKICAg
ICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVzb3VyY2VU
aW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+ZG9tYWluTG9va3VwRW5kKTsKKyAg
ICByZXR1cm4gcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy5kb21h
aW5Mb29rdXBFbmQpOwogfQogCiBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6Y29u
bmVjdFN0YXJ0KCkgY29uc3QKQEAgLTE0MywxMyArMTQzLDEzIEBAIGRvdWJsZSBQZXJmb3JtYW5j
ZVJlc291cmNlVGltaW5nOjpjb25uZWMKICAgICAgICAgcmV0dXJuIDAuMDsKIAogICAgIC8vIGNv
bm5lY3RTdGFydCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3QgaXMgbm90IG1hZGUu
Ci0gICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWluZy0+Y29ubmVjdFN0YXJ0IDwgMCB8fCBtX2Rp
ZFJldXNlQ29ubmVjdGlvbikKKyAgICBpZiAoIW1fdGltaW5nIHx8IG1fdGltaW5nLmNvbm5lY3RT
dGFydCA8IDAgfHwgbV9kaWRSZXVzZUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBkb21haW5M
b29rdXBFbmQoKTsKIAogICAgIC8vIGNvbm5lY3RTdGFydCBpbmNsdWRlcyBhbnkgRE5TIHRpbWUs
IHNvIHdlIG1heSBuZWVkIHRvIHRyaW0gdGhhdCBvZmYuCi0gICAgaW50IGNvbm5lY3RTdGFydCA9
IG1fdGltaW5nLT5jb25uZWN0U3RhcnQ7CisgICAgaW50IGNvbm5lY3RTdGFydCA9IG1fdGltaW5n
LmNvbm5lY3RTdGFydDsKICAgICBpZiAobV90aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA+PSAwKQot
ICAgICAgICBjb25uZWN0U3RhcnQgPSBtX3RpbWluZy0+ZG9tYWluTG9va3VwRW5kOworICAgICAg
ICBjb25uZWN0U3RhcnQgPSBtX3RpbWluZy5kb21haW5Mb29rdXBFbmQ7CiAKICAgICByZXR1cm4g
cmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhjb25uZWN0U3RhcnQpOwogfQpAQCAt
MTYwLDEwICsxNjAsMTAgQEAgZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmNvbm5l
YwogICAgICAgICByZXR1cm4gMC4wOwogCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdpbGwgYmUgLTEg
d2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KLSAgICBpZiAoIW1fdGltaW5nIHx8
IG1fdGltaW5nLT5jb25uZWN0RW5kIDwgMCB8fCBtX2RpZFJldXNlQ29ubmVjdGlvbikKKyAgICBp
ZiAoIW1fdGltaW5nIHx8IG1fdGltaW5nLmNvbm5lY3RFbmQgPCAwIHx8IG1fZGlkUmV1c2VDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVz
b3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+Y29ubmVjdEVuZCk7Cisg
ICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcuY29u
bmVjdEVuZCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpzZWN1cmVD
b25uZWN0aW9uU3RhcnQoKSBjb25zdApAQCAtMTcxLDEwICsxNzEsMTAgQEAgZG91YmxlIFBlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmc6OnNlY3VyZQogICAgIGlmICghbV9zaG91bGRSZXBvcnREZXRh
aWxzKQogICAgICAgICByZXR1cm4gMC4wOwogCi0gICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWlu
Zy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0IDwgMCkgLy8gU2VjdXJlIGNvbm5lY3Rpb24gbm90IG5l
Z290aWF0ZWQuCisgICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWluZy5zZWN1cmVDb25uZWN0aW9u
U3RhcnQgPCAwKSAvLyBTZWN1cmUgY29ubmVjdGlvbiBub3QgbmVnb3RpYXRlZC4KICAgICAgICAg
cmV0dXJuIDAuMDsKIAotICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNv
bmRzKG1fdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOworICAgIHJldHVybiByZXNvdXJj
ZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQo
KSBjb25zdApAQCAtMTg1LDcgKzE4NSw3IEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpyZXF1ZXMKICAgICBpZiAoIW1fdGltaW5nKQogICAgICAgICByZXR1cm4gY29ubmVjdEVu
ZCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90
aW1pbmctPnJlcXVlc3RTdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRN
aWxsaXNlY29uZHMobV90aW1pbmcucmVxdWVzdFN0YXJ0KTsKIH0KIAogZG91YmxlIFBlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCShyZXZpc2lvbiAxNjg2
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShSRVNPVVJDRV9USU1J
TkcpCiAKICNpbmNsdWRlICJQZXJmb3JtYW5jZUVudHJ5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkVGltaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Niw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29u
ZHMoaW50IGRlbHRhTWlsbGlzZWNvbmRzKSBjb25zdDsKIAogICAgIEF0b21pY1N0cmluZyBtX2lu
aXRpYXRvclR5cGU7Ci0gICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gbV90aW1pbmc7Cisg
ICAgUmVzb3VyY2VMb2FkVGltaW5nIG1fdGltaW5nOwogICAgIGRvdWJsZSBtX2ZpbmlzaFRpbWU7
CiAgICAgYm9vbCBtX2RpZFJldXNlQ29ubmVjdGlvbjsKICAgICBib29sIG1fc2hvdWxkUmVwb3J0
RGV0YWlsczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3Bw
CShyZXZpc2lvbiAxNjg2ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGlt
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDMyICsxMjQsMzQgQEAgdW5zaWduZWQgbG9u
ZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KCkgY29uc3QKIHsKLSAgICBSZXNvdXJjZUxv
YWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghdGltaW5n
KQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudExvYWRlcigpOworICAgIGlm
ICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgpOwotCisgICAgCisgICAgY29u
c3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3Vy
Y2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAgLy8gVGhpcyB3aWxsIGJlIC0xIHdoZW4gYSBETlMg
cmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5nIGEg
c3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdlICJiYWNrZmlsbCIgd2l0aCBm
ZXRjaFN0YXJ0LgotICAgIGludCBkb21haW5Mb29rdXBTdGFydCA9IHRpbWluZy0+ZG9tYWluTG9v
a3VwU3RhcnQ7Ci0gICAgaWYgKGRvbWFpbkxvb2t1cFN0YXJ0IDwgMCkKKyAgICBpZiAodGltaW5n
LmRvbWFpbkxvb2t1cFN0YXJ0IDwgMCkKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAot
ICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGRvbWFpbkxvb2t1
cFN0YXJ0KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0
aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CiB7Ci0gICAgUmVzb3VyY2VMb2Fk
VGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykK
KyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBpZiAo
IWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0KCk7Ci0KKyAgICAKKyAg
ICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5y
ZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBUaGlzIHdpbGwgYmUgLTEgd2hlbiBh
IEROUyByZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3Np
bmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIG5vIEROUywgd2UgImJhY2tmaWxsIiB3
aXRoIGRvbWFpbkxvb2t1cFN0YXJ0LgotICAgIGludCBkb21haW5Mb29rdXBFbmQgPSB0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZDsKLSAgICBpZiAoZG9tYWluTG9va3VwRW5kIDwgMCkKKyAgICBpZiAo
dGltaW5nLmRvbWFpbkxvb2t1cEVuZCA8IDApCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBT
dGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUo
ZG9tYWluTG9va3VwRW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9B
YnNvbHV0ZSh0aW1pbmcuZG9tYWluTG9va3VwRW5kKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25n
IFBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQoKSBjb25zdApAQCAtMTU4LDIwICsxNjAs
MTggQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpjbwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7CiAKLSAgICBSZXNvdXJj
ZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1p
bmcoKTsKLSAgICBpZiAoIXRpbWluZykKLSAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgp
OwotCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJlc3Bv
bnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdp
bGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRo
ZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNv
bm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBkb21haW5Mb29rdXBFbmQuCi0gICAgaW50IGNv
bm5lY3RTdGFydCA9IHRpbWluZy0+Y29ubmVjdFN0YXJ0OworICAgIGludCBjb25uZWN0U3RhcnQg
PSB0aW1pbmcuY29ubmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0U3RhcnQgPCAwIHx8IGxvYWRl
ci0+cmVzcG9uc2UoKS5jb25uZWN0aW9uUmV1c2VkKCkpCiAgICAgICAgIHJldHVybiBkb21haW5M
b29rdXBFbmQoKTsKIAogICAgIC8vIFJlc291cmNlTG9hZFRpbWluZydzIGNvbm5lY3QgcGhhc2Ug
aW5jbHVkZXMgRE5TLCBob3dldmVyIE5hdmlnYXRpb24gVGltaW5nJ3MKICAgICAvLyBjb25uZWN0
IHBoYXNlIHNob3VsZCBub3QuIFNvIGlmIHRoZXJlIGlzIEROUyB0aW1lLCB0cmltIGl0IGZyb20g
dGhlIHN0YXJ0LgotICAgIGlmICh0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA+PSAwICYmIHRpbWlu
Zy0+ZG9tYWluTG9va3VwRW5kID4gY29ubmVjdFN0YXJ0KQotICAgICAgICBjb25uZWN0U3RhcnQg
PSB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZDsKKyAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCA+PSAwICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCisgICAgICAg
IGNvbm5lY3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CiAKICAgICByZXR1cm4gcmVz
b3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShjb25uZWN0U3RhcnQpOwogfQpAQCAtMTgy
LDE3ICsxODIsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpjbwog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAKLSAgICBS
ZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxv
YWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKLSAgICAgICAgcmV0dXJuIGNvbm5lY3RTdGFy
dCgpOwotCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJl
c3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAgLy8gY29ubmVjdEVuZCB3
aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3QgaXMgbm90IG1hZGUuCiAgICAgLy8gUmF0
aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIG5vIG5ldyBj
b25uZWN0aW9uLCB3ZSAiYmFja2ZpbGwiIHdpdGggY29ubmVjdFN0YXJ0LgotICAgIGludCBjb25u
ZWN0RW5kID0gdGltaW5nLT5jb25uZWN0RW5kOwotICAgIGlmIChjb25uZWN0RW5kIDwgMCB8fCBs
b2FkZXItPnJlc3BvbnNlKCkuY29ubmVjdGlvblJldXNlZCgpKQorICAgIGlmICh0aW1pbmcuY29u
bmVjdEVuZCA8IDAgfHwgbG9hZGVyLT5yZXNwb25zZSgpLmNvbm5lY3Rpb25SZXVzZWQoKSkKICAg
ICAgICAgcmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRp
bWVSZWxhdGl2ZVRvQWJzb2x1dGUoY29ubmVjdEVuZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9h
ZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUodGltaW5nLmNvbm5lY3RFbmQpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNv
bnN0CkBAIC0yMDEsMzUgKzE5OCwzNiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VU
aW1pbmc6OnNlCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVz
b3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2Fk
VGltaW5nKCk7Ci0gICAgaWYgKCF0aW1pbmcpCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5n
JiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAg
CisgICAgaWYgKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPCAwKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIGludCBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPSB0aW1pbmctPnNlY3VyZUNv
bm5lY3Rpb25TdGFydDsKLSAgICBpZiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IDwgMCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNv
bHV0ZShzZWN1cmVDb25uZWN0aW9uU3RhcnQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1l
UmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOwogfQogCiB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlcXVlc3RTdGFydCgpIGNvbnN0
CiB7Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmco
KTsKLSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1l
bnRMb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbm5lY3RFbmQo
KTsKLQotICAgIEFTU0VSVCh0aW1pbmctPnJlcXVlc3RTdGFydCA+PSAwKTsKLSAgICByZXR1cm4g
cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmctPnJlcXVlc3RTdGFydCk7
CisgICAgCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJl
c3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCisgICAgQVNTRVJUKHRpbWluZy5y
ZXF1ZXN0U3RhcnQgPj0gMCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
QWJzb2x1dGUodGltaW5nLnJlcXVlc3RTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0CiB7Ci0gICAgUmVzb3VyY2VM
b2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWlu
ZykKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBp
ZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIHJlcXVlc3RTdGFydCgpOwogCi0gICAgQVNTRVJU
KHRpbWluZy0+cmVzcG9uc2VTdGFydCA+PSAwKTsKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGlt
ZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmctPnJlc3BvbnNlU3RhcnQpOworICAgIGNvbnN0IFJl
c291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9h
ZFRpbWluZygpOworICAgIAorICAgIEFTU0VSVCh0aW1pbmcucmVzcG9uc2VTdGFydCA+PSAwKTsK
KyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmcucmVz
cG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6
cmVzcG9uc2VFbmQoKSBjb25zdApAQCAtMzMzLDE1ICszMzEsNiBAQCBEb2N1bWVudExvYWRUaW1p
bmcqIFBlcmZvcm1hbmNlVGltaW5nOjpkCiAgICAgcmV0dXJuIGxvYWRlci0+dGltaW5nKCk7CiB9
CiAKLVJlc291cmNlTG9hZFRpbWluZyogUGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9hZFRp
bWluZygpIGNvbnN0Ci17Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50TG9h
ZGVyKCk7Ci0gICAgaWYgKCFsb2FkZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJu
IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLX0KLQogdW5zaWduZWQg
bG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fi
c29sdXRlKGludCByZWxhdGl2ZU1pbGxpc2Vjb25kcykgY29uc3QKIHsKICAgICBBU1NFUlQocmVs
YXRpdmVNaWxsaXNlY29uZHMgPj0gMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVRpbWluZy5oCShyZXZpc2lvbiAxNjg2ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDYgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBEb2N1bWVudFRpbWluZyogZG9jdW1lbnRUaW1pbmcoKSBjb25zdDsKICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdDsKICAgICBEb2N1bWVudExv
YWRUaW1pbmcqIGRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0OwotICAgIFJlc291cmNlTG9hZFRp
bWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50KSBjb25zdDsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyhkb3VibGUp
IGNvbnN0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VMb2FkVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAkocmV2aXNpb24gMTY4NjgwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUsIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjAsNDAgKzIxLDQ5IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYgUmVzb3VyY2VM
b2FkVGltaW5nX2gKICNkZWZpbmUgUmVzb3VyY2VMb2FkVGltaW5nX2gKIAotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnRMb2Fk
VGltaW5nOwotCi1jbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZXNvdXJjZUxvYWRUaW1pbmc+IHsKKyAgICAKK2NsYXNzIFJlc291cmNlTG9hZFRpbWluZyB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBjcmVhdGUo
KQorICAgIFJlc291cmNlTG9hZFRpbWluZygpCisgICAgICAgIDogZG9tYWluTG9va3VwU3RhcnQo
LTEpCisgICAgICAgICwgZG9tYWluTG9va3VwRW5kKC0xKQorICAgICAgICAsIGNvbm5lY3RTdGFy
dCgtMSkKKyAgICAgICAgLCBjb25uZWN0RW5kKC0xKQorICAgICAgICAsIHJlcXVlc3RTdGFydCgw
KQorICAgICAgICAsIHJlc3BvbnNlU3RhcnQoMCkKKyAgICAgICAgLCBzZWN1cmVDb25uZWN0aW9u
U3RhcnQoLTEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9h
ZFRpbWluZyk7CiAgICAgfQotCi0gICAgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGRl
ZXBDb3B5KCkKKyAgICAKKyAgICBSZXNvdXJjZUxvYWRUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2Fk
VGltaW5nJiBvdGhlcikKKyAgICAgICAgOiBkb21haW5Mb29rdXBTdGFydChvdGhlci5kb21haW5M
b29rdXBTdGFydCkKKyAgICAgICAgLCBkb21haW5Mb29rdXBFbmQob3RoZXIuZG9tYWluTG9va3Vw
RW5kKQorICAgICAgICAsIGNvbm5lY3RTdGFydChvdGhlci5jb25uZWN0U3RhcnQpCisgICAgICAg
ICwgY29ubmVjdEVuZChvdGhlci5jb25uZWN0RW5kKQorICAgICAgICAsIHJlcXVlc3RTdGFydChv
dGhlci5yZXF1ZXN0U3RhcnQpCisgICAgICAgICwgcmVzcG9uc2VTdGFydChvdGhlci5yZXNwb25z
ZVN0YXJ0KQorICAgICAgICAsIHNlY3VyZUNvbm5lY3Rpb25TdGFydChvdGhlci5zZWN1cmVDb25u
ZWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiB0
aW1pbmcgPSBjcmVhdGUoKTsKLSAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9IGRv
bWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFp
bkxvb2t1cEVuZDsKLSAgICAgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQ7
Ci0gICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IGNvbm5lY3RFbmQ7Ci0gICAgICAgIHRpbWlu
Zy0+cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0OwotICAgICAgICB0aW1pbmctPnJlc3BvbnNl
U3RhcnQgPSByZXNwb25zZVN0YXJ0OwotICAgICAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICAgICAgcmV0dXJuIHRpbWluZy5yZWxl
YXNlKCk7CiAgICAgfQotCisgICAgCisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgUmVzb3VyY2VM
b2FkVGltaW5nJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRvbWFpbkxvb2t1cFN0YXJ0ID0gb3Ro
ZXIuZG9tYWluTG9va3VwU3RhcnQ7CisgICAgICAgIGRvbWFpbkxvb2t1cEVuZCA9IG90aGVyLmRv
bWFpbkxvb2t1cEVuZDsKKyAgICAgICAgY29ubmVjdFN0YXJ0ID0gb3RoZXIuY29ubmVjdFN0YXJ0
OworICAgICAgICBjb25uZWN0RW5kID0gb3RoZXIuY29ubmVjdEVuZDsKKyAgICAgICAgcmVxdWVz
dFN0YXJ0ID0gb3RoZXIucmVxdWVzdFN0YXJ0OworICAgICAgICByZXNwb25zZVN0YXJ0ID0gb3Ro
ZXIucmVzcG9uc2VTdGFydDsKKyAgICAgICAgc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gb3RoZXIu
c2VjdXJlQ29ubmVjdGlvblN0YXJ0OworICAgIH0KKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBkb21haW5Mb29rdXBTdGFydCA9PSBvdGhlci5kb21haW5Mb29rdXBTdGFydApAQCAtNzgs
MTggKzg4LDYgQEAgcHVibGljOgogICAgIGludCByZXF1ZXN0U3RhcnQ7CiAgICAgaW50IHJlc3Bv
bnNlU3RhcnQ7CiAgICAgaW50IHNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICAKLXByaXZhdGU6
Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKCkKLSAgICAgICAgOiBkb21haW5Mb29rdXBTdGFydCgt
MSkKLSAgICAgICAgLCBkb21haW5Mb29rdXBFbmQoLTEpCi0gICAgICAgICwgY29ubmVjdFN0YXJ0
KC0xKQotICAgICAgICAsIGNvbm5lY3RFbmQoLTEpCi0gICAgICAgICwgcmVxdWVzdFN0YXJ0KDAp
Ci0gICAgICAgICwgcmVzcG9uc2VTdGFydCgwKQotICAgICAgICAsIHNlY3VyZUNvbm5lY3Rpb25T
dGFydCgtMSkKLSAgICB7Ci0gICAgfQogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJl
dmlzaW9uIDE2ODY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgUGFz
c093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlcwogCiAgICAgcmVzcG9uc2UtPmxh
enlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKICAgICByZXNwb25zZS0+bV9odHRwSGVh
ZGVyRmllbGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKTsKLSAgICByZXNw
b25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nLnJl
bGVhc2UoKSk7CisgICAgcmVzcG9uc2UtPnNldFJlc291cmNlTG9hZFRpbWluZyhkYXRhLT5tX3Jl
c291cmNlTG9hZFRpbWluZyk7CiAgICAgcmVzcG9uc2UtPmRvUGxhdGZvcm1BZG9wdChkYXRhKTsK
ICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwogfQpAQCAtMTIyLDggKzEyMiw3IEBAIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGEKICAgICBkYXRhLT5tX2h0dHBT
dGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGUoKTsKICAgICBkYXRhLT5tX2h0dHBTdGF0dXNUZXh0
ID0gaHR0cFN0YXR1c1RleHQoKS5pc29sYXRlZENvcHkoKTsKICAgICBkYXRhLT5tX2h0dHBIZWFk
ZXJzID0gaHR0cEhlYWRlckZpZWxkcygpLmNvcHlEYXRhKCk7Ci0gICAgaWYgKG1fcmVzb3VyY2VM
b2FkVGltaW5nKQotICAgICAgICBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9IG1fcmVzb3Vy
Y2VMb2FkVGltaW5nLT5kZWVwQ29weSgpOworICAgIGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5n
ID0gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAgcmV0dXJuIGFzUmVzb3VyY2VSZXNwb25zZSgp
LmRvUGxhdGZvcm1Db3B5RGF0YShkYXRhLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTU1MSwxNCArNTUw
LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3Rpb24KICAgICBtX2Nv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25JRDsKIH0KIAotUmVzb3VyY2VMb2FkVGltaW5nKiBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QKK1Jlc291cmNlTG9h
ZFRpbWluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0
CiB7CiAgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCi0gICAgcmV0dXJu
IG1fcmVzb3VyY2VMb2FkVGltaW5nLmdldCgpOworICAgIHJldHVybiBtX3Jlc291cmNlTG9hZFRp
bWluZzsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0UmVzb3VyY2VMb2FkVGlt
aW5nKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiByZXNvdXJjZUxvYWRUaW1pbmcpCit2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRUaW1pbmcoY29uc3QgUmVz
b3VyY2VMb2FkVGltaW5nJiByZXNvdXJjZUxvYWRUaW1pbmcpCiB7CiAgICAgbGF6eUluaXQoQ29t
bW9uQW5kVW5jb21tb25GaWVsZHMpOwogCkBAIC01OTAsOCArNTg5LDYgQEAgYm9vbCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIuaHR0cEhlYWRlckZpZWxkcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEucmVzb3VyY2VMb2FkVGltaW5nKCkgJiYgYi5yZXNv
dXJjZUxvYWRUaW1pbmcoKSAmJiAqYS5yZXNvdXJjZUxvYWRUaW1pbmcoKSA9PSAqYi5yZXNvdXJj
ZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
Q29tcGFyZShhLCBiKTsKICAgICBpZiAoYS5yZXNvdXJjZUxvYWRUaW1pbmcoKSAhPSBiLnJlc291
cmNlTG9hZFRpbWluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJl
dmlzaW9uIDE2ODY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDggKzEwOSw4IEBAIHB1Ymxp
YzoKICAgICBib29sIHdhc0NhY2hlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0V2FzQ2FjaGVkKGJv
b2wpOwogCi0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25z
dDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFRpbWluZyhQYXNzUmVmUHRyPFJlc291cmNlTG9h
ZFRpbWluZz4pOworICAgIFJlc291cmNlTG9hZFRpbWluZyYgcmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2Fk
VGltaW5nJik7CiAKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNo
YWRvdyIgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBwbGF0Zm9ybS1zcGVjaWZpYyBtZW1vcnkgdXNh
Z2UgaW5mb3JtYXRpb24KICAgICB1bnNpZ25lZCBtZW1vcnlVc2FnZSgpIGNvbnN0CkBAIC0xNDcs
NyArMTQ3LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1lOwog
ICAgIEF0b21pY1N0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBIZWFkZXJNYXAgbV9o
dHRwSGVhZGVyRmllbGRzOwotICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3Vy
Y2VMb2FkVGltaW5nOworICAgIG11dGFibGUgUmVzb3VyY2VMb2FkVGltaW5nIG1fcmVzb3VyY2VM
b2FkVGltaW5nOwogCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgdW5zaWduZWQgbV9j
b25uZWN0aW9uSUQ7CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGludCBtX2h0dHBT
dGF0dXNDb2RlOwogICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIE93blB0cjxDcm9z
c1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJzOwotICAgIFJlZlB0cjxSZXNv
dXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAgIFJlc291cmNlTG9hZFRp
bWluZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNp
b24gMTY4NjgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDkgKzE4
MSw2IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uocik7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcp
CiAgICAgaWYgKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSA9IFtjb25uZWN0aW9uIF90aW1pbmdE
YXRhXSkgewotICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhS
ZXNvdXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5n
KiB0aW1pbmcgPSByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAgICAg
ICAKICAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRpb25TdGFydCB0aW1lIGluIG1v
bm90b25pYyB0aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRp
bWUKICAgICAgICAgLy8gYW5kIG9ubHkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGltZXMgYXJl
IHN0b3JlZC4KICAgICAgICAgZG91YmxlIHJlZmVyZW5jZVN0YXJ0ID0gW1t0aW1pbmdEYXRhIHZh
bHVlRm9yS2V5OkAiX2tDRk5UaW1pbmdEYXRhVGltaW5nRGF0YUluaXQiXSBkb3VibGVWYWx1ZV07
CkBAIC0xOTYsMTUgKzE5MywxNCBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvCiAgICAgICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFsdWVG
b3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQiXSBkb3VibGVWYWx1ZV07CiAgICAg
ICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tD
Rk5UaW1pbmdEYXRhUmVzcG9uc2VTdGFydCJdIGRvdWJsZVZhbHVlXTsKICAgICAgICAgCi0gICAg
ICAgIGlmICh0aW1pbmcpIHsKLSAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQg
PSBkb21haW5Mb29rdXBTdGFydCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBTdGFydCAtIHJl
ZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVu
ZCA9IGRvbWFpbkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSByZWZl
cmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBj
b25uZWN0U3RhcnQgPD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQp
ICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2Vj
dXJlQ29ubmVjdGlvblN0YXJ0IDw9IDAuMCA/IC0xIDogKHNlY3VyZUNvbm5lY3Rpb25TdGFydCAt
IHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPmNvbm5lY3RFbmQg
PSBjb25uZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCkg
KiAxMDAwOwotICAgICAgICAgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQg
PD0gMC4wID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAg
ICAgICAgICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IHJlc3BvbnNlU3RhcnQgPD0gMC4wID8g
LTEgOiAocmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgIH0K
KyAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSByZXNvdXJjZVJlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpOworICAgICAgICB0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQgPSBk
b21haW5Mb29rdXBTdGFydCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBTdGFydCAtIHJlZmVy
ZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAgICAgIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPSBkb21h
aW5Mb29rdXBFbmQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3VwRW5kIC0gcmVmZXJlbmNlU3Rh
cnQpICogMTAwMDsKKyAgICAgICAgdGltaW5nLmNvbm5lY3RTdGFydCA9IGNvbm5lY3RTdGFydCA8
PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAg
ICAgICB0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2VjdXJlQ29ubmVjdGlvblN0YXJ0
IDw9IDAuMCA/IC0xIDogKHNlY3VyZUNvbm5lY3Rpb25TdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAq
IDEwMDA7CisgICAgICAgIHRpbWluZy5jb25uZWN0RW5kID0gY29ubmVjdEVuZCA8PSAwLjAgPyAt
MSA6IChjb25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgdGltaW5n
LnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydCA8PSAwLjAgPyAtMSA6IChyZXF1ZXN0U3RhcnQg
LSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICB0aW1pbmcucmVzcG9uc2VTdGFydCA9
IHJlc3BvbnNlU3RhcnQgPD0gMC4wID8gLTEgOiAocmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0
YXJ0KSAqIDEwMDA7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAxNjg2ODApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyMyw5ICsyMjMsNiBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzb3VyY2VSZXNwb25zZShyKTsKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICAgICAg
aWYgKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSA9IFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSkg
ewotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVz
b3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7Ci0gICAgICAgICAgICBSZXNvdXJjZUxvYWRUaW1p
bmcqIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRoZSBuYXZpZ2F0aW9uU3RhcnQg
dGltZSBpbiBtb25vdG9uaWMgdGltZSwgYnV0IHRoZSBvdGhlciB0aW1lcyBhcmUgcmVsYXRpdmUg
dG8gdGhpcyB0aW1lCiAgICAgICAgICAgICAvLyBhbmQgb25seSB0aGUgZGlmZmVyZW5jZXMgYmV0
d2VlbiB0aW1lcyBhcmUgc3RvcmVkLgogICAgICAgICAgICAgZG91YmxlIHJlZmVyZW5jZVN0YXJ0
ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1pbmdEYXRhVGltaW5nRGF0YUlu
aXQiXSBkb3VibGVWYWx1ZV07CkBAIC0yMzgsMTUgKzIzNSwxNCBAQCAtICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgICAgICAgICBkb3VibGUgcmVxdWVzdFN0YXJ0
ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1pbmdEYXRhUmVxdWVzdFN0YXJ0
Il0gZG91YmxlVmFsdWVdOwogICAgICAgICAgICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSBbW3Rp
bWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Il0gZG91
YmxlVmFsdWVdOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodGltaW5nKSB7Ci0gICAg
ICAgICAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0
IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAw
MDsKLSAgICAgICAgICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1
cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAx
MDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0
IDw9IDAuMCA/IC0xIDogKGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0g
ICAgICAgICAgICAgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25u
ZWN0aW9uU3RhcnQgPD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJl
bmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgICAgICB0aW1pbmctPmNvbm5lY3RFbmQgPSBj
b25uZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAx
MDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0
IDw9IDAuMCA/IC0xIDogKHJlcXVlc3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0g
ICAgICAgICAgICAgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydCA8PSAw
LjAgPyAtMSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gcmVzb3Vy
Y2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAgICAgICAgIHRpbWluZy5kb21h
aW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxv
b2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5k
b21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9v
a3VwRW5kIC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5jb25u
ZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQgPD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0IC0gcmVm
ZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5zZWN1cmVDb25uZWN0aW9u
U3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVj
dGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5j
b25uZWN0RW5kID0gY29ubmVjdEVuZCA8PSAwLjAgPyAtMSA6IChjb25uZWN0RW5kIC0gcmVmZXJl
bmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5yZXF1ZXN0U3RhcnQgPSByZXF1
ZXN0U3RhcnQgPD0gMC4wID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICog
MTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydCA8
PSAwLjAgPyAtMSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKICAg
ICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDE2ODY4MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zODIsOSArMzgyLDYgQEAgc3RhdGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2soU291
cE1lc3NhZwogICAgIGlmICghaGFuZGxlIHx8IGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSA9IGQtPm1fcmVzcG9uc2U7Ci0gICAgcmVkaXJlY3RSZXNwb25zZS5zZXRSZXNvdXJjZUxv
YWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7CiAgICAgaGFuZGxlLT5tX3Jl
cXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiB9CiAjZW5kaWYKQEAg
LTgzNSwxMSArODMyLDcgQEAgc3RhdGljIGludCBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkb3Vi
bAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVlc3QoKQogewotICAgIFJlc291
cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOwotICAgIGlmICghZC0+bV9yZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZC0+bV9y
ZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFN0YXJ0ID0gbWlsaXNlY29uZHNT
aW5jZVJlcXVlc3QobV9yZXF1ZXN0VGltZSk7CisgICAgZ2V0SW50ZXJuYWwoKS0+bV9yZXNwb25z
ZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5yZXF1ZXN0U3RhcnQgPSBtaWxpc2Vjb25kc1NpbmNlUmVx
dWVzdChtX3JlcXVlc3RUaW1lKTsKIH0KIAogc3RhdGljIHZvaWQgbmV0d29ya0V2ZW50Q2FsbGJh
Y2soU291cE1lc3NhZ2UqLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSosIGdw
b2ludGVyIGRhdGEpCkBAIC04NTUsMjEgKzg0OCwyMSBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrRXZl
bnRDYWxsYmFjayhTb3VwTWVzCiAgICAgaW50IGRlbHRhVGltZSA9IG1pbGlzZWNvbmRzU2luY2VS
ZXF1ZXN0KGhhbmRsZS0+bV9yZXF1ZXN0VGltZSk7CiAgICAgc3dpdGNoIChldmVudCkgewogICAg
IGNhc2UgR19TT0NLRVRfQ0xJRU5UX1JFU09MVklORzoKLSAgICAgICAgZC0+bV9yZXNwb25zZS5y
ZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwU3RhcnQgPSBkZWx0YVRpbWU7CisgICAg
ICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwU3RhcnQg
PSBkZWx0YVRpbWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX1JF
U09MVkVEOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5kb21h
aW5Mb29rdXBFbmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VM
b2FkVGltaW5nKCkuZG9tYWluTG9va3VwRW5kID0gZGVsdGFUaW1lOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9DT05ORUNUSU5HOgotICAgICAgICBkLT5tX3Jlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5jb25uZWN0U3RhcnQgPSBkZWx0YVRpbWU7Ci0gICAg
ICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBT
dGFydCAhPSAtMSkgeworICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygp
LmNvbm5lY3RTdGFydCA9IGRlbHRhVGltZTsKKyAgICAgICAgaWYgKGQtPm1fcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwU3RhcnQgIT0gLTEpIHsKICAgICAgICAgICAg
IC8vIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0VGltaW5nVmlldy5qcyBhc3N1
bWVzCiAgICAgICAgICAgICAvLyB0aGF0IEROUyB0aW1lIGlzIGluY2x1ZGVkIGluIGNvbm5lY3Rp
b24gdGltZSBzbyBtdXN0CiAgICAgICAgICAgICAvLyBzdWJzdHJhY3QgaGVyZSB0aGUgRE5TIGRl
bHRhIHRoYXQgd2lsbCBiZSBhZGRlZCBsYXRlciAoc2VlCiAgICAgICAgICAgICAvLyBXZWJJbnNw
ZWN0b3IuUmVxdWVzdFRpbWluZ1ZpZXcuY3JlYXRlVGltaW5nVGFibGUgaW4gdGhlCiAgICAgICAg
ICAgICAvLyBmaWxlIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgotICAgICAgICAgICAgZC0+bV9y
ZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+Y29ubmVjdFN0YXJ0IC09Ci0gICAgICAgICAg
ICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwRW5k
IC0gZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwU3RhcnQ7
CisgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLmNvbm5lY3RT
dGFydCAtPQorICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5n
KCkuZG9tYWluTG9va3VwRW5kIC0gZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5k
b21haW5Mb29rdXBTdGFydDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdf
U09DS0VUX0NMSUVOVF9DT05ORUNURUQ6CkBAIC04ODEsMTIgKzg3NCwxMiBAQCBzdGF0aWMgdm9p
ZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVzCiAgICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRf
UFJPWFlfTkVHT1RJQVRFRDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1NPQ0tFVF9DTElF
TlRfVExTX0hBTkRTSEFLSU5HOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1f
cmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gZGVs
dGFUaW1lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9UTFNfSEFO
RFNIQUtFRDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRfQ09NUExF
VEU6Ci0gICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPmNvbm5lY3RF
bmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5n
KCkuY29ubmVjdEVuZCA9IGRlbHRhVGltZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NDIsNyArOTM1LDYgQEAgc3RhdGlj
IGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbgogICAgIHNvdXBfbWVzc2FnZV9zZXRf
ZmxhZ3MoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFn
cz4oc291cF9tZXNzYWdlX2dldF9mbGFncyhkLT5tX3NvdXBNZXNzYWdlLmdldCgpKSB8IFNPVVBf
TUVTU0FHRV9OT19SRURJUkVDVCkpOwogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgZC0+
bV9yZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVh
dGUoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCAibmV0
d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sobmV0d29ya0V2ZW50Q2FsbGJhY2spLCBoYW5kbGUpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwgInJlc3RhcnRlZCIs
IEdfQ0FMTEJBQ0socmVzdGFydGVkQ2FsbGJhY2spLCBoYW5kbGUpOwogI2VuZGlmCkBAIC0xMDE3
LDggKzEwMDksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiB2b2lkIFJlc291cmNl
SGFuZGxlOjpzZW5kUGVuZGluZ1JlcXVlc3QoKQogewogI2lmIEVOQUJMRShXRUJfVElNSU5HKQot
ICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQotICAgICAgICBtX3Jl
cXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV9yZXF1ZXN0
VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogI2VuZGlmCiAKICAgICBpZiAo
ZC0+bV9maXJzdFJlcXVlc3QudGltZW91dEludGVydmFsKCkgPiAwKSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjg2ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wNS0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQg
b2YgcG9pbnRlcnMgd2l0aCBSZXNvdXJjZUxvYWRUaW1pbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpk
ZWNvZGUpOgorICAgICAgICBVc2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzIGFuZCBu
dWxsIGNoZWNrcy4KKwogMjAxNC0wNS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBhIGZldyBpY29uIGRhdGFiYXNlIGltcHJvdmVtZW50cwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJl
dmlzaW9uIDE2ODY4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTAsMTggKzY5MCwxNCBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuCiAgICAgfQogICAgIAogI2lmIEVOQUJMRShX
RUJfVElNSU5HKQotICAgIFJlc291cmNlTG9hZFRpbWluZyogdGltaW5nID0gcmVzb3VyY2VSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBib29sIGhhc1Jlc291cmNlTG9hZFRpbWlu
ZyA9IHRpbWluZzsKLSAgICBlbmNvZGVyIDw8IGhhc1Jlc291cmNlTG9hZFRpbWluZzsKLSAgICBp
ZiAoaGFzUmVzb3VyY2VMb2FkVGltaW5nKSB7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5k
b21haW5Mb29rdXBTdGFydDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPmRvbWFpbkxvb2t1
cEVuZDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPmNvbm5lY3RTdGFydDsKLSAgICAgICAg
ZW5jb2RlciA8PCB0aW1pbmctPmNvbm5lY3RFbmQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5n
LT5yZXF1ZXN0U3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5yZXNwb25zZVN0YXJ0
OwotICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAg
IH0KKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc291cmNlUmVzcG9u
c2UucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9v
a3VwU3RhcnQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9va3VwRW5kOworICAgIGVu
Y29kZXIgPDwgdGltaW5nLmNvbm5lY3RTdGFydDsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5jb25u
ZWN0RW5kOworICAgIGVuY29kZXIgPDwgdGltaW5nLnJlcXVlc3RTdGFydDsKKyAgICBlbmNvZGVy
IDw8IHRpbWluZy5yZXNwb25zZVN0YXJ0OworICAgIGVuY29kZXIgPDwgdGltaW5nLnNlY3VyZUNv
bm5lY3Rpb25TdGFydDsKICNlbmRpZgogfQogCkBAIC03NzIsMjEgKzc2OCwxNSBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlCiAgICAgfQogICAgIAogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQotICAgIGJvb2wgaGFzUmVzb3VyY2VMb2FkVGltaW5nOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzUmVzb3VyY2VMb2FkVGltaW5nKSkKKyAgICBSZXNvdXJjZUxvYWRU
aW1pbmcmIHRpbWluZyA9IHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQorICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxvb2t1cEVuZCkKKyAgICAgICAgfHwgIWRlY29kZXIu
ZGVjb2RlKHRpbWluZy5jb25uZWN0U3RhcnQpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0
aW1pbmcuY29ubmVjdEVuZCkKKyAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5yZXF1
ZXN0U3RhcnQpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVzcG9uc2VTdGFy
dCkKKyAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3Rh
cnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGhhc1Jlc291cmNlTG9hZFRpbWlu
ZykgewotICAgICAgICByZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2Fk
VGltaW5nOjpjcmVhdGUoKSk7Ci0gICAgICAgIFJlc291cmNlTG9hZFRpbWluZyogdGltaW5nID0g
cmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodGltaW5nLT5kb21haW5Mb29rdXBTdGFydCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRl
Y29kZSh0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRl
Y29kZSh0aW1pbmctPmNvbm5lY3RTdGFydCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29k
ZSh0aW1pbmctPmNvbm5lY3RFbmQpCi0gICAgICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGlt
aW5nLT5yZXF1ZXN0U3RhcnQpCi0gICAgICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5n
LT5yZXNwb25zZVN0YXJ0KQotICAgICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy0+
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAjZW5kaWYKIAogICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231386</attachid>
            <date>2014-05-13 09:24:03 -0700</date>
            <delta_ts>2014-05-13 14:10:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132846-20140513092340.patch</filename>
            <type>text/plain</type>
            <size>36152</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA1LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyB3aXRoIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgIFJlbW92ZWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9h
ZFRpbWluZyBsaW5rZXIgc3ltYm9sLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbkxvb2t1
cFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRv
bWFpbkxvb2t1cEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpjb25uZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzdFN0YXJ0KToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaDoKKyAgICAgICAgTWFrZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgUmVm
UHRyLgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQpOgorICAgICAgICBDaGVjayB0byBzZWUgaWYg
dGhlIGxvYWRlciBleGlzdHMsIHRoZW4gdXNlIFJlc291cmNlTG9hZFRpbWluZyByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmg6CisgICAgICAg
IFJlbW92ZWQgcmVzb3VyY2VMb2FkVGltaW5nIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRUaW1pbmc6OlJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIFJlcGxhY2VkIHJlZmVyZW5j
ZSBjb3VudGluZyB3aXRoIGNvcHkgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpkZWVwQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKwogMjAxNC0wNS0xMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTY3Nzcx
KTogW0dUS10gVGV4dCBmaWVsZHMgYW5kIGFyZWFzIGFyZSByZW5kZXJlZCB1bnRoZW1lZApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUxLDYgKzMzNTEsNSBAQCBfX1pO
N1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxc2V0UmVz
b3VyY2VMb2FkVGltaW5nRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4UmVzb3VyY2VMb2FkVGltaW5n
RUVFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE4cmVzb3VyY2VMb2FkVGlt
aW5nRXYKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDMsOCArMjQzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcgogICAgICAgICAuc2V0Q29ubmVjdGlvbklkKHJlc3BvbnNlLmNvbm5lY3Rpb25JRCgpKTsK
IAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRGcm9tRGlza0NhY2hlKHJlc3BvbnNlLndhc0NhY2hl
ZCgpKTsKLSAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpCi0gICAgICAgIHJl
c3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcoKnJlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpLCBsb2FkZXIpKTsKKyAgICByZXNwb25zZU9iamVjdC0+c2V0VGlt
aW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLCBs
b2FkZXIpKTsKIAogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAkocmV2aXNp
b24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDEwICsxMjAsMTAgQEAgZG91YmxlIFBlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbgogICAgIGlmICghbV9zaG91bGRSZXBvcnREZXRh
aWxzKQogICAgICAgICByZXR1cm4gMC4wOwogCi0gICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWlu
Zy0+ZG9tYWluTG9va3VwU3RhcnQgPCAwKQorICAgIGlmIChtX3RpbWluZy5kb21haW5Mb29rdXBT
dGFydCA8IDApCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVz
b3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+ZG9tYWluTG9va3VwU3Rh
cnQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGlt
aW5nLmRvbWFpbkxvb2t1cFN0YXJ0KTsKIH0KIAogZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBkb3Vi
bGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6ZG9tYWluCiAgICAgaWYgKCFtX3Nob3VsZFJl
cG9ydERldGFpbHMpCiAgICAgICAgIHJldHVybiAwLjA7CiAKLSAgICBpZiAoIW1fdGltaW5nIHx8
IG1fdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAwKQorICAgIGlmIChtX3RpbWluZy5kb21haW5M
b29rdXBFbmQgPCAwKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAg
IHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLT5kb21h
aW5Mb29rdXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNv
bmRzKG1fdGltaW5nLmRvbWFpbkxvb2t1cEVuZCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nOjpjb25uZWN0U3RhcnQoKSBjb25zdApAQCAtMTQzLDEzICsxNDMsMTMgQEAg
ZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmNvbm5lYwogICAgICAgICByZXR1cm4g
MC4wOwogCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVx
dWVzdCBpcyBub3QgbWFkZS4KLSAgICBpZiAoIW1fdGltaW5nIHx8IG1fdGltaW5nLT5jb25uZWN0
U3RhcnQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0aW9uKQorICAgIGlmIChtX3RpbWluZy5jb25u
ZWN0U3RhcnQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gZG9t
YWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBjb25uZWN0U3RhcnQgaW5jbHVkZXMgYW55IEROUyB0
aW1lLCBzbyB3ZSBtYXkgbmVlZCB0byB0cmltIHRoYXQgb2ZmLgotICAgIGludCBjb25uZWN0U3Rh
cnQgPSBtX3RpbWluZy0+Y29ubmVjdFN0YXJ0OwotICAgIGlmIChtX3RpbWluZy0+ZG9tYWluTG9v
a3VwRW5kID49IDApCi0gICAgICAgIGNvbm5lY3RTdGFydCA9IG1fdGltaW5nLT5kb21haW5Mb29r
dXBFbmQ7CisgICAgaW50IGNvbm5lY3RTdGFydCA9IG1fdGltaW5nLmNvbm5lY3RTdGFydDsKKyAg
ICBpZiAobV90aW1pbmcuZG9tYWluTG9va3VwRW5kID49IDApCisgICAgICAgIGNvbm5lY3RTdGFy
dCA9IG1fdGltaW5nLmRvbWFpbkxvb2t1cEVuZDsKIAogICAgIHJldHVybiByZXNvdXJjZVRpbWVU
b0RvY3VtZW50TWlsbGlzZWNvbmRzKGNvbm5lY3RTdGFydCk7CiB9CkBAIC0xNjAsMTAgKzE2MCwx
MCBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6Y29ubmVjCiAgICAgICAgIHJl
dHVybiAwLjA7CiAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEgbmV0d29y
ayByZXF1ZXN0IGlzIG5vdCBtYWRlLgotICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmctPmNv
bm5lY3RFbmQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0aW9uKQorICAgIGlmIChtX3RpbWluZy5j
b25uZWN0RW5kIDwgMCB8fCBtX2RpZFJldXNlQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIGNv
bm5lY3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNl
Y29uZHMobV90aW1pbmctPmNvbm5lY3RFbmQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0Rv
Y3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLmNvbm5lY3RFbmQpOwogfQogCiBkb3VibGUgUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAg
LTE3MSwxMCArMTcxLDEwIEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpzZWN1
cmUKICAgICBpZiAoIW1fc2hvdWxkUmVwb3J0RGV0YWlscykKICAgICAgICAgcmV0dXJuIDAuMDsK
IAotICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8
IDApIC8vIFNlY3VyZSBjb25uZWN0aW9uIG5vdCBuZWdvdGlhdGVkLgorICAgIGlmIChtX3RpbWlu
Zy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPCAwKSAvLyBTZWN1cmUgY29ubmVjdGlvbiBub3QgbmVn
b3RpYXRlZC4KICAgICAgICAgcmV0dXJuIDAuMDsKIAotICAgIHJldHVybiByZXNvdXJjZVRpbWVU
b0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOwor
ICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLnNl
Y3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMTgyLDEwICsxODIsNyBAQCBkb3VibGUgUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzCiAgICAgaWYgKCFtX3Nob3VsZFJlcG9ydERl
dGFpbHMpCiAgICAgICAgIHJldHVybiAwLjA7CiAKLSAgICBpZiAoIW1fdGltaW5nKQotICAgICAg
ICByZXR1cm4gY29ubmVjdEVuZCgpOwotCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1l
bnRNaWxsaXNlY29uZHMobV90aW1pbmctPnJlcXVlc3RTdGFydCk7CisgICAgcmV0dXJuIHJlc291
cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcucmVxdWVzdFN0YXJ0KTsKIH0K
IAogZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWlu
Zy5oCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
UmVzb3VyY2VUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVO
QUJMRShSRVNPVVJDRV9USU1JTkcpCiAKICNpbmNsdWRlICJQZXJmb3JtYW5jZUVudHJ5LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHJlc291cmNlVGltZVRv
RG9jdW1lbnRNaWxsaXNlY29uZHMoaW50IGRlbHRhTWlsbGlzZWNvbmRzKSBjb25zdDsKIAogICAg
IEF0b21pY1N0cmluZyBtX2luaXRpYXRvclR5cGU7Ci0gICAgUmVmUHRyPFJlc291cmNlTG9hZFRp
bWluZz4gbV90aW1pbmc7CisgICAgUmVzb3VyY2VMb2FkVGltaW5nIG1fdGltaW5nOwogICAgIGRv
dWJsZSBtX2ZpbmlzaFRpbWU7CiAgICAgYm9vbCBtX2RpZFJldXNlQ29ubmVjdGlvbjsKICAgICBi
b29sIG1fc2hvdWxkUmVwb3J0RGV0YWlsczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDMyICsxMjQs
MzQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KCkgY29uc3QK
IHsKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygp
OwotICAgIGlmICghdGltaW5nKQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVu
dExvYWRlcigpOworICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgp
OwotCisgICAgCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXIt
PnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAgLy8gVGhpcyB3aWxs
IGJlIC0xIHdoZW4gYSBETlMgcmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhl
ciB0aGFuIGV4cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdl
ICJiYWNrZmlsbCIgd2l0aCBmZXRjaFN0YXJ0LgotICAgIGludCBkb21haW5Mb29rdXBTdGFydCA9
IHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgaWYgKGRvbWFpbkxvb2t1cFN0YXJ0IDwg
MCkKKyAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0IDwgMCkKICAgICAgICAgcmV0dXJu
IGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fi
c29sdXRlKGRvbWFpbkxvb2t1cFN0YXJ0KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJl
bGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CiB7
Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmcoKTsK
LSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnRM
b2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0
YXJ0KCk7Ci0KKyAgICAKKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBUaGlz
IHdpbGwgYmUgLTEgd2hlbiBhIEROUyByZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAgICAgLy8g
UmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIG5vIERO
Uywgd2UgImJhY2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cFN0YXJ0LgotICAgIGludCBkb21haW5M
b29rdXBFbmQgPSB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZDsKLSAgICBpZiAoZG9tYWluTG9va3Vw
RW5kIDwgMCkKKyAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA8IDApCiAgICAgICAgIHJl
dHVybiBkb21haW5Mb29rdXBTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVS
ZWxhdGl2ZVRvQWJzb2x1dGUoZG9tYWluTG9va3VwRW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VM
b2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmcuZG9tYWluTG9va3VwRW5kKTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQoKSBjb25z
dApAQCAtMTU4LDIwICsxNjAsMTggQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpjbwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5k
KCk7CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2Uo
KS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKLSAgICAgICAgcmV0dXJu
IGRvbWFpbkxvb2t1cEVuZCgpOwotCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1p
bmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAg
Ly8gY29ubmVjdFN0YXJ0IHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3Qg
bWFkZS4KICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBp
bmRpY2F0ZXMgbm8gbmV3IGNvbm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBkb21haW5Mb29r
dXBFbmQuCi0gICAgaW50IGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29ubmVjdFN0YXJ0OworICAg
IGludCBjb25uZWN0U3RhcnQgPSB0aW1pbmcuY29ubmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0
U3RhcnQgPCAwIHx8IGxvYWRlci0+cmVzcG9uc2UoKS5jb25uZWN0aW9uUmV1c2VkKCkpCiAgICAg
ICAgIHJldHVybiBkb21haW5Mb29rdXBFbmQoKTsKIAogICAgIC8vIFJlc291cmNlTG9hZFRpbWlu
ZydzIGNvbm5lY3QgcGhhc2UgaW5jbHVkZXMgRE5TLCBob3dldmVyIE5hdmlnYXRpb24gVGltaW5n
J3MKICAgICAvLyBjb25uZWN0IHBoYXNlIHNob3VsZCBub3QuIFNvIGlmIHRoZXJlIGlzIEROUyB0
aW1lLCB0cmltIGl0IGZyb20gdGhlIHN0YXJ0LgotICAgIGlmICh0aW1pbmctPmRvbWFpbkxvb2t1
cEVuZCA+PSAwICYmIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID4gY29ubmVjdFN0YXJ0KQotICAg
ICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZDsKKyAgICBpZiAodGlt
aW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25u
ZWN0U3RhcnQpCisgICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7
CiAKICAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShjb25uZWN0
U3RhcnQpOwogfQpAQCAtMTgyLDE3ICsxODIsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZv
cm1hbmNlVGltaW5nOjpjbwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVj
dFN0YXJ0KCk7CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVz
cG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKLSAgICAgICAg
cmV0dXJuIGNvbm5lY3RTdGFydCgpOwotCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAg
ICAgLy8gY29ubmVjdEVuZCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3QgaXMgbm90
IG1hZGUuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQg
aW5kaWNhdGVzIG5vIG5ldyBjb25uZWN0aW9uLCB3ZSAiYmFja2ZpbGwiIHdpdGggY29ubmVjdFN0
YXJ0LgotICAgIGludCBjb25uZWN0RW5kID0gdGltaW5nLT5jb25uZWN0RW5kOwotICAgIGlmIChj
b25uZWN0RW5kIDwgMCB8fCBsb2FkZXItPnJlc3BvbnNlKCkuY29ubmVjdGlvblJldXNlZCgpKQor
ICAgIGlmICh0aW1pbmcuY29ubmVjdEVuZCA8IDAgfHwgbG9hZGVyLT5yZXNwb25zZSgpLmNvbm5l
Y3Rpb25SZXVzZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgcmV0
dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoY29ubmVjdEVuZCk7CisgICAg
cmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUodGltaW5nLmNvbm5lY3RF
bmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNv
bm5lY3Rpb25TdGFydCgpIGNvbnN0CkBAIC0yMDEsMzUgKzE5OCwzNiBAQCB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSBsb2FkZXItPnJlc3Bv
bnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgaWYgKCF0aW1pbmcpCisgICAgY29uc3Qg
UmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VM
b2FkVGltaW5nKCk7CisgICAgCisgICAgaWYgKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQg
PCAwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGludCBzZWN1cmVDb25uZWN0aW9uU3RhcnQg
PSB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICBpZiAoc2VjdXJlQ29ubmVjdGlv
blN0YXJ0IDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2VMb2Fk
VGltZVJlbGF0aXZlVG9BYnNvbHV0ZShzZWN1cmVDb25uZWN0aW9uU3RhcnQpOworICAgIHJldHVy
biByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy5zZWN1cmVDb25uZWN0
aW9uU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJl
cXVlc3RTdGFydCgpIGNvbnN0CiB7Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSBy
ZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRl
ciogbG9hZGVyID0gZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbm5lY3RFbmQoKTsKLQotICAgIEFTU0VSVCh0aW1pbmctPnJlcXVlc3RTdGFydCA+
PSAwKTsKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1p
bmctPnJlcXVlc3RTdGFydCk7CisgICAgCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCisg
ICAgQVNTRVJUKHRpbWluZy5yZXF1ZXN0U3RhcnQgPj0gMCk7CisgICAgcmV0dXJuIHJlc291cmNl
TG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUodGltaW5nLnJlcXVlc3RTdGFydCk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0
CiB7Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmco
KTsKLSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1l
bnRMb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIHJlcXVlc3RTdGFy
dCgpOwogCi0gICAgQVNTRVJUKHRpbWluZy0+cmVzcG9uc2VTdGFydCA+PSAwKTsKLSAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmctPnJlc3BvbnNlU3Rh
cnQpOworICAgIGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gbG9hZGVyLT5yZXNw
b25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOworICAgIAorICAgIEFTU0VSVCh0aW1pbmcucmVz
cG9uc2VTdGFydCA+PSAwKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9B
YnNvbHV0ZSh0aW1pbmcucmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApAQCAtMzMzLDE1ICszMzEsNiBA
QCBEb2N1bWVudExvYWRUaW1pbmcqIFBlcmZvcm1hbmNlVGltaW5nOjpkCiAgICAgcmV0dXJuIGxv
YWRlci0+dGltaW5nKCk7CiB9CiAKLVJlc291cmNlTG9hZFRpbWluZyogUGVyZm9ybWFuY2VUaW1p
bmc6OnJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0Ci17Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciA9IGRvY3VtZW50TG9hZGVyKCk7Ci0gICAgaWYgKCFsb2FkZXIpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmco
KTsKLX0KLQogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGludCByZWxhdGl2ZU1pbGxpc2Vjb25kcykgY29uc3QK
IHsKICAgICBBU1NFUlQocmVsYXRpdmVNaWxsaXNlY29uZHMgPj0gMCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBEb2N1bWVudFRpbWluZyogZG9jdW1lbnRU
aW1pbmcoKSBjb25zdDsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25z
dDsKICAgICBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0Owot
ICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50
KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50ZWdlck1p
bGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAkocmV2aXNpb24gMTY4
NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1p
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAsNDAgKzIxLDQ5IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpZm5kZWYgUmVzb3VyY2VMb2FkVGltaW5nX2gKICNkZWZpbmUgUmVzb3VyY2VMb2FkVGltaW5n
X2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nOwotCi1jbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmcgOiBw
dWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1pbmc+IHsKKyAgICAKK2NsYXNzIFJlc291
cmNlTG9hZFRpbWluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VM
b2FkVGltaW5nPiBjcmVhdGUoKQorICAgIFJlc291cmNlTG9hZFRpbWluZygpCisgICAgICAgIDog
ZG9tYWluTG9va3VwU3RhcnQoLTEpCisgICAgICAgICwgZG9tYWluTG9va3VwRW5kKC0xKQorICAg
ICAgICAsIGNvbm5lY3RTdGFydCgtMSkKKyAgICAgICAgLCBjb25uZWN0RW5kKC0xKQorICAgICAg
ICAsIHJlcXVlc3RTdGFydCgwKQorICAgICAgICAsIHJlc3BvbnNlU3RhcnQoMCkKKyAgICAgICAg
LCBzZWN1cmVDb25uZWN0aW9uU3RhcnQoLTEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlc291cmNlTG9hZFRpbWluZyk7CiAgICAgfQotCi0gICAgUGFzc1JlZlB0cjxSZXNv
dXJjZUxvYWRUaW1pbmc+IGRlZXBDb3B5KCkKKyAgICAKKyAgICBSZXNvdXJjZUxvYWRUaW1pbmco
Y29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikKKyAgICAgICAgOiBkb21haW5Mb29rdXBT
dGFydChvdGhlci5kb21haW5Mb29rdXBTdGFydCkKKyAgICAgICAgLCBkb21haW5Mb29rdXBFbmQo
b3RoZXIuZG9tYWluTG9va3VwRW5kKQorICAgICAgICAsIGNvbm5lY3RTdGFydChvdGhlci5jb25u
ZWN0U3RhcnQpCisgICAgICAgICwgY29ubmVjdEVuZChvdGhlci5jb25uZWN0RW5kKQorICAgICAg
ICAsIHJlcXVlc3RTdGFydChvdGhlci5yZXF1ZXN0U3RhcnQpCisgICAgICAgICwgcmVzcG9uc2VT
dGFydChvdGhlci5yZXNwb25zZVN0YXJ0KQorICAgICAgICAsIHNlY3VyZUNvbm5lY3Rpb25TdGFy
dChvdGhlci5zZWN1cmVDb25uZWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBSZWZQdHI8UmVz
b3VyY2VMb2FkVGltaW5nPiB0aW1pbmcgPSBjcmVhdGUoKTsKLSAgICAgICAgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICB0aW1pbmctPmRvbWFp
bkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZDsKLSAgICAgICAgdGltaW5nLT5jb25uZWN0U3Rh
cnQgPSBjb25uZWN0U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IGNvbm5lY3RF
bmQ7Ci0gICAgICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0OwotICAgICAg
ICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0OwotICAgICAgICB0aW1pbmct
PnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICAgICAg
cmV0dXJuIHRpbWluZy5yZWxlYXNlKCk7CiAgICAgfQotCisgICAgCisgICAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRvbWFp
bkxvb2t1cFN0YXJ0ID0gb3RoZXIuZG9tYWluTG9va3VwU3RhcnQ7CisgICAgICAgIGRvbWFpbkxv
b2t1cEVuZCA9IG90aGVyLmRvbWFpbkxvb2t1cEVuZDsKKyAgICAgICAgY29ubmVjdFN0YXJ0ID0g
b3RoZXIuY29ubmVjdFN0YXJ0OworICAgICAgICBjb25uZWN0RW5kID0gb3RoZXIuY29ubmVjdEVu
ZDsKKyAgICAgICAgcmVxdWVzdFN0YXJ0ID0gb3RoZXIucmVxdWVzdFN0YXJ0OworICAgICAgICBy
ZXNwb25zZVN0YXJ0ID0gb3RoZXIucmVzcG9uc2VTdGFydDsKKyAgICAgICAgc2VjdXJlQ29ubmVj
dGlvblN0YXJ0ID0gb3RoZXIuc2VjdXJlQ29ubmVjdGlvblN0YXJ0OworICAgIH0KKyAgICAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCA9PSBvdGhlci5kb21haW5M
b29rdXBTdGFydApAQCAtNzgsMTggKzg4LDYgQEAgcHVibGljOgogICAgIGludCByZXF1ZXN0U3Rh
cnQ7CiAgICAgaW50IHJlc3BvbnNlU3RhcnQ7CiAgICAgaW50IHNlY3VyZUNvbm5lY3Rpb25TdGFy
dDsKLSAgICAKLXByaXZhdGU6Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKCkKLSAgICAgICAgOiBk
b21haW5Mb29rdXBTdGFydCgtMSkKLSAgICAgICAgLCBkb21haW5Mb29rdXBFbmQoLTEpCi0gICAg
ICAgICwgY29ubmVjdFN0YXJ0KC0xKQotICAgICAgICAsIGNvbm5lY3RFbmQoLTEpCi0gICAgICAg
ICwgcmVxdWVzdFN0YXJ0KDApCi0gICAgICAgICwgcmVzcG9uc2VTdGFydCgwKQotICAgICAgICAs
IHNlY3VyZUNvbm5lY3Rpb25TdGFydCgtMSkKLSAgICB7Ci0gICAgfQogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNyArMTA2LDcgQEAgUGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlcwog
CiAgICAgcmVzcG9uc2UtPmxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKICAgICBy
ZXNwb25zZS0+bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVs
ZWFzZSgpKTsKLSAgICByZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVz
b3VyY2VMb2FkVGltaW5nLnJlbGVhc2UoKSk7CisgICAgcmVzcG9uc2UtPnNldFJlc291cmNlTG9h
ZFRpbWluZyhkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyk7CiAgICAgcmVzcG9uc2UtPmRvUGxh
dGZvcm1BZG9wdChkYXRhKTsKICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwogfQpAQCAt
MTIyLDggKzEyMiw3IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGEK
ICAgICBkYXRhLT5tX2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGUoKTsKICAgICBkYXRh
LT5tX2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0YXR1c1RleHQoKS5pc29sYXRlZENvcHkoKTsKICAg
ICBkYXRhLT5tX2h0dHBIZWFkZXJzID0gaHR0cEhlYWRlckZpZWxkcygpLmNvcHlEYXRhKCk7Ci0g
ICAgaWYgKG1fcmVzb3VyY2VMb2FkVGltaW5nKQotICAgICAgICBkYXRhLT5tX3Jlc291cmNlTG9h
ZFRpbWluZyA9IG1fcmVzb3VyY2VMb2FkVGltaW5nLT5kZWVwQ29weSgpOworICAgIGRhdGEtPm1f
cmVzb3VyY2VMb2FkVGltaW5nID0gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAgcmV0dXJuIGFz
UmVzb3VyY2VSZXNwb25zZSgpLmRvUGxhdGZvcm1Db3B5RGF0YShkYXRhLnJlbGVhc2UoKSk7CiB9
CiAKQEAgLTU1MSwxNCArNTUwLDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENv
bm5lY3Rpb24KICAgICBtX2Nvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25JRDsKIH0KIAotUmVzb3Vy
Y2VMb2FkVGltaW5nKiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3QKK1Jlc291cmNlTG9hZFRpbWluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnJlc291cmNl
TG9hZFRpbWluZygpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVs
ZHMpOwogCi0gICAgcmV0dXJuIG1fcmVzb3VyY2VMb2FkVGltaW5nLmdldCgpOworICAgIHJldHVy
biBtX3Jlc291cmNlTG9hZFRpbWluZzsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiByZXNv
dXJjZUxvYWRUaW1pbmcpCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxv
YWRUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiByZXNvdXJjZUxvYWRUaW1pbmcpCiB7
CiAgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCkBAIC01OTAsOCArNTg5
LDYgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIuaHR0cEhlYWRl
ckZpZWxkcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEucmVzb3VyY2VMb2Fk
VGltaW5nKCkgJiYgYi5yZXNvdXJjZUxvYWRUaW1pbmcoKSAmJiAqYS5yZXNvdXJjZUxvYWRUaW1p
bmcoKSA9PSAqYi5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKICAgICBpZiAoYS5yZXNvdXJjZUxvYWRU
aW1pbmcoKSAhPSBiLnJlc291cmNlTG9hZFRpbWluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDggKzEwOSw4IEBAIHB1YmxpYzoKICAgICBib29sIHdhc0NhY2hlZCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0V2FzQ2FjaGVkKGJvb2wpOwogCi0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNvdXJj
ZUxvYWRUaW1pbmcoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFRpbWluZyhQYXNz
UmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4pOworICAgIFJlc291cmNlTG9hZFRpbWluZyYgcmVz
b3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRUaW1pbmco
Y29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJik7CiAKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25z
ZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBwbGF0Zm9ybS1z
cGVjaWZpYyBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRpb24KICAgICB1bnNpZ25lZCBtZW1vcnlVc2Fn
ZSgpIGNvbnN0CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX3N1
Z2dlc3RlZEZpbGVuYW1lOwogICAgIEF0b21pY1N0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAg
IEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwotICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAgIG11dGFibGUgUmVzb3VyY2VMb2Fk
VGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7
CiAgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uSUQ7CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGlj
OgogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0
OwogICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJz
OwotICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOwor
ICAgIFJlc291cmNlTG9hZFRpbWluZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTgxLDkgKzE4MSw2IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0
aW9uICopY28KICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uocik7CiAjaWYg
RU5BQkxFKFdFQl9USU1JTkcpCiAgICAgaWYgKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSA9IFtj
b25uZWN0aW9uIF90aW1pbmdEYXRhXSkgewotICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFJl
c291cmNlTG9hZFRpbWluZyhSZXNvdXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAg
UmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9h
ZFRpbWluZygpOwotICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRp
b25TdGFydCB0aW1lIGluIG1vbm90b25pYyB0aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSBy
ZWxhdGl2ZSB0byB0aGlzIHRpbWUKICAgICAgICAgLy8gYW5kIG9ubHkgdGhlIGRpZmZlcmVuY2Vz
IGJldHdlZW4gdGltZXMgYXJlIHN0b3JlZC4KICAgICAgICAgZG91YmxlIHJlZmVyZW5jZVN0YXJ0
ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1pbmdEYXRhVGltaW5nRGF0YUlu
aXQiXSBkb3VibGVWYWx1ZV07CkBAIC0xOTYsMTUgKzE5MywxNCBAQCAtICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQgPSBb
W3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQiXSBk
b3VibGVWYWx1ZV07CiAgICAgICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gW1t0aW1pbmdEYXRh
IHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1pbmdEYXRhUmVzcG9uc2VTdGFydCJdIGRvdWJsZVZhbHVl
XTsKICAgICAgICAgCi0gICAgICAgIGlmICh0aW1pbmcpIHsKLSAgICAgICAgICAgIHRpbWluZy0+
ZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29rdXBTdGFydCA8PSAwLjAgPyAtMSA6IChkb21h
aW5Mb29rdXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21h
aW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgdGltaW5n
LT5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQgPD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0
IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+c2VjdXJlQ29u
bmVjdGlvblN0YXJ0ID0gc2VjdXJlQ29ubmVjdGlvblN0YXJ0IDw9IDAuMCA/IC0xIDogKHNlY3Vy
ZUNvbm5lY3Rpb25TdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0
aW1pbmctPmNvbm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQg
LSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgdGltaW5nLT5yZXF1ZXN0U3Rh
cnQgPSByZXF1ZXN0U3RhcnQgPD0gMC4wID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0gcmVmZXJlbmNl
U3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IHJlc3Bv
bnNlU3RhcnQgPD0gMC4wID8gLTEgOiAocmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAq
IDEwMDA7Ci0gICAgICAgIH0KKyAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBy
ZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOworICAgICAgICB0aW1pbmcuZG9t
YWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29rdXBTdGFydCA8PSAwLjAgPyAtMSA6IChkb21haW5M
b29rdXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAgICAgIHRpbWluZy5kb21h
aW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3Vw
RW5kIC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgdGltaW5nLmNvbm5lY3RTdGFy
dCA9IGNvbm5lY3RTdGFydCA8PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VT
dGFydCkgKiAxMDAwOworICAgICAgICB0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2Vj
dXJlQ29ubmVjdGlvblN0YXJ0IDw9IDAuMCA/IC0xIDogKHNlY3VyZUNvbm5lY3Rpb25TdGFydCAt
IHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAgICAgIHRpbWluZy5jb25uZWN0RW5kID0gY29u
bmVjdEVuZCA8PSAwLjAgPyAtMSA6IChjb25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpICogMTAw
MDsKKyAgICAgICAgdGltaW5nLnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydCA8PSAwLjAgPyAt
MSA6IChyZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICB0aW1p
bmcucmVzcG9uc2VTdGFydCA9IHJlc3BvbnNlU3RhcnQgPD0gMC4wID8gLTEgOiAocmVzcG9uc2VT
dGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAxNjg2NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyMyw5
ICsyMjMsNiBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShyKTsKICNpZiBFTkFCTEUoV0VC
X1RJTUlORykKICAgICAgICAgaWYgKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSA9IFtjb25uZWN0
aW9uIF90aW1pbmdEYXRhXSkgewotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRSZXNv
dXJjZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7Ci0gICAgICAgICAg
ICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VM
b2FkVGltaW5nKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRo
ZSBuYXZpZ2F0aW9uU3RhcnQgdGltZSBpbiBtb25vdG9uaWMgdGltZSwgYnV0IHRoZSBvdGhlciB0
aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhpcyB0aW1lCiAgICAgICAgICAgICAvLyBhbmQgb25seSB0
aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aW1lcyBhcmUgc3RvcmVkLgogICAgICAgICAgICAgZG91
YmxlIHJlZmVyZW5jZVN0YXJ0ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1p
bmdEYXRhVGltaW5nRGF0YUluaXQiXSBkb3VibGVWYWx1ZV07CkBAIC0yMzgsMTUgKzIzNSwxNCBA
QCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgICAgICAgICBk
b3VibGUgcmVxdWVzdFN0YXJ0ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1p
bmdEYXRhUmVxdWVzdFN0YXJ0Il0gZG91YmxlVmFsdWVdOwogICAgICAgICAgICAgZG91YmxlIHJl
c3BvbnNlU3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFS
ZXNwb25zZVN0YXJ0Il0gZG91YmxlVmFsdWVdOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAodGltaW5nKSB7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9
IGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVm
ZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1
cEVuZCA9IGRvbWFpbkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSBy
ZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+Y29ubmVjdFN0
YXJ0ID0gY29ubmVjdFN0YXJ0IDw9IDAuMCA/IC0xIDogKGNvbm5lY3RTdGFydCAtIHJlZmVyZW5j
ZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9u
U3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVj
dGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgICAgICB0aW1p
bmctPmNvbm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQgLSBy
ZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+cmVxdWVzdFN0
YXJ0ID0gcmVxdWVzdFN0YXJ0IDw9IDAuMCA/IC0xIDogKHJlcXVlc3RTdGFydCAtIHJlZmVyZW5j
ZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0g
cmVzcG9uc2VTdGFydCA8PSAwLjAgPyAtMSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3Rh
cnQpICogMTAwMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlc291cmNlTG9hZFRpbWlu
ZyYgdGltaW5nID0gcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAg
ICAgICAgIHRpbWluZy5kb21haW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAu
MCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAg
ICAgICAgICAgIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQgPD0gMC4w
ID8gLTEgOiAoZG9tYWluTG9va3VwRW5kIC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAg
ICAgICAgIHRpbWluZy5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQgPD0gMC4wID8gLTEgOiAo
Y29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWlu
Zy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPD0gMC4wID8g
LTEgOiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAg
ICAgICAgICAgIHRpbWluZy5jb25uZWN0RW5kID0gY29ubmVjdEVuZCA8PSAwLjAgPyAtMSA6IChj
b25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5y
ZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQgPD0gMC4wID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0g
cmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0
ID0gcmVzcG9uc2VTdGFydCA8PSAwLjAgPyAtMSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNl
U3RhcnQpICogMTAwMDsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDE2ODY0NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsOSArMzgyLDYgQEAgc3RhdGljIHZvaWQgcmVz
dGFydGVkQ2FsbGJhY2soU291cE1lc3NhZwogICAgIGlmICghaGFuZGxlIHx8IGhhbmRsZS0+Y2Fu
Y2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7Ci0gICAgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSA9IGQtPm1fcmVzcG9uc2U7Ci0gICAgcmVkaXJlY3RSZXNw
b25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7
CiAgICAgaGFuZGxlLT5tX3JlcXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CiB9CiAjZW5kaWYKQEAgLTgzNSwxMSArODMyLDcgQEAgc3RhdGljIGludCBtaWxpc2Vjb25k
c1NpbmNlUmVxdWVzdChkb3VibAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRTdGFydFJlcXVl
c3QoKQogewotICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOwot
ICAgIGlmICghZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFN0
YXJ0ID0gbWlsaXNlY29uZHNTaW5jZVJlcXVlc3QobV9yZXF1ZXN0VGltZSk7CisgICAgZ2V0SW50
ZXJuYWwoKS0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5yZXF1ZXN0U3RhcnQgPSBt
aWxpc2Vjb25kc1NpbmNlUmVxdWVzdChtX3JlcXVlc3RUaW1lKTsKIH0KIAogc3RhdGljIHZvaWQg
bmV0d29ya0V2ZW50Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZl
bnQsIEdJT1N0cmVhbSosIGdwb2ludGVyIGRhdGEpCkBAIC04NTUsMjEgKzg0OCwyMSBAQCBzdGF0
aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVzCiAgICAgaW50IGRlbHRhVGltZSA9
IG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGhhbmRsZS0+bV9yZXF1ZXN0VGltZSk7CiAgICAgc3dp
dGNoIChldmVudCkgewogICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX1JFU09MVklORzoKLSAgICAg
ICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwU3RhcnQg
PSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCku
ZG9tYWluTG9va3VwU3RhcnQgPSBkZWx0YVRpbWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
R19TT0NLRVRfQ0xJRU5UX1JFU09MVkVEOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNl
TG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBFbmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1f
cmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwRW5kID0gZGVsdGFUaW1l
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9DT05ORUNUSU5HOgot
ICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5jb25uZWN0U3RhcnQg
PSBkZWx0YVRpbWU7Ci0gICAgICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpLT5kb21haW5Mb29rdXBTdGFydCAhPSAtMSkgeworICAgICAgICBkLT5tX3Jlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpLmNvbm5lY3RTdGFydCA9IGRlbHRhVGltZTsKKyAgICAgICAgaWYg
KGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwU3RhcnQgIT0g
LTEpIHsKICAgICAgICAgICAgIC8vIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXF1ZXN0
VGltaW5nVmlldy5qcyBhc3N1bWVzCiAgICAgICAgICAgICAvLyB0aGF0IEROUyB0aW1lIGlzIGlu
Y2x1ZGVkIGluIGNvbm5lY3Rpb24gdGltZSBzbyBtdXN0CiAgICAgICAgICAgICAvLyBzdWJzdHJh
Y3QgaGVyZSB0aGUgRE5TIGRlbHRhIHRoYXQgd2lsbCBiZSBhZGRlZCBsYXRlciAoc2VlCiAgICAg
ICAgICAgICAvLyBXZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWluZ1ZpZXcuY3JlYXRlVGltaW5nVGFi
bGUgaW4gdGhlCiAgICAgICAgICAgICAvLyBmaWxlIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgot
ICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+Y29ubmVjdFN0
YXJ0IC09Ci0gICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KS0+ZG9tYWluTG9va3VwRW5kIC0gZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+
ZG9tYWluTG9va3VwU3RhcnQ7CisgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9h
ZFRpbWluZygpLmNvbm5lY3RTdGFydCAtPQorICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2Uu
cmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwRW5kIC0gZC0+bV9yZXNwb25zZS5yZXNv
dXJjZUxvYWRUaW1pbmcoKS5kb21haW5Mb29rdXBTdGFydDsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9DT05ORUNURUQ6CkBAIC04ODEsMTIgKzg3
NCwxMiBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVzCiAgICAgY2Fz
ZSBHX1NPQ0tFVF9DTElFTlRfUFJPWFlfTkVHT1RJQVRFRDoKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBHX1NPQ0tFVF9DTElFTlRfVExTX0hBTkRTSEFLSU5HOgotICAgICAgICBkLT5tX3Jlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBkZWx0YVRp
bWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuc2VjdXJlQ29u
bmVjdGlvblN0YXJ0ID0gZGVsdGFUaW1lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09D
S0VUX0NMSUVOVF9UTFNfSEFORFNIQUtFRDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1NP
Q0tFVF9DTElFTlRfQ09NUExFVEU6Ci0gICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2Fk
VGltaW5nKCktPmNvbm5lY3RFbmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2Uu
cmVzb3VyY2VMb2FkVGltaW5nKCkuY29ubmVjdEVuZCA9IGRlbHRhVGltZTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NDIs
NyArOTM1LDYgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbgogICAg
IHNvdXBfbWVzc2FnZV9zZXRfZmxhZ3MoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwgc3RhdGljX2Nh
c3Q8U291cE1lc3NhZ2VGbGFncz4oc291cF9tZXNzYWdlX2dldF9mbGFncyhkLT5tX3NvdXBNZXNz
YWdlLmdldCgpKSB8IFNPVVBfTUVTU0FHRV9OT19SRURJUkVDVCkpOwogCiAjaWYgRU5BQkxFKFdF
Ql9USU1JTkcpCi0gICAgZC0+bV9yZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVzb3Vy
Y2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChkLT5tX3NvdXBN
ZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sobmV0d29ya0V2ZW50Q2Fs
bGJhY2spLCBoYW5kbGUpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9zb3VwTWVzc2FnZS5n
ZXQoKSwgInJlc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVzdGFydGVkQ2FsbGJhY2spLCBoYW5kbGUp
OwogI2VuZGlmCkBAIC0xMDE3LDggKzEwMDksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFy
dCgpCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzZW5kUGVuZGluZ1JlcXVlc3QoKQogewogI2lmIEVO
QUJMRShXRUJfVElNSU5HKQotICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpKQotICAgICAgICBtX3JlcXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CisgICAgbV9yZXF1ZXN0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwog
I2VuZGlmCiAKICAgICBpZiAoZC0+bV9maXJzdFJlcXVlc3QudGltZW91dEludGVydmFsKCkgPiAw
KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg2NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wNS0xMyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBy
ZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgd2l0aCBSZXNvdXJjZUxvYWRUaW1pbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
c291cmNlUmVzcG9uc2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
c291cmNlUmVzcG9uc2U+OjpkZWNvZGUpOgorICAgICAgICBVc2UgcmVmZXJlbmNlcyBpbnN0ZWFk
IG9mIHBvaW50ZXJzIGFuZCBudWxsIGNoZWNrcy4KKwogMjAxNC0wNS0xMiAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcmlwbGUtYnVmZmVyIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
MCwxOCArNjkwLDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW4K
ICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgUmVzb3VyY2VMb2FkVGlt
aW5nKiB0aW1pbmcgPSByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAg
IGJvb2wgaGFzUmVzb3VyY2VMb2FkVGltaW5nID0gdGltaW5nOwotICAgIGVuY29kZXIgPDwgaGFz
UmVzb3VyY2VMb2FkVGltaW5nOwotICAgIGlmIChoYXNSZXNvdXJjZUxvYWRUaW1pbmcpIHsKLSAg
ICAgICAgZW5jb2RlciA8PCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICBlbmNv
ZGVyIDw8IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwotICAgICAgICBlbmNvZGVyIDw8IHRpbWlu
Zy0+Y29ubmVjdFN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+Y29ubmVjdEVuZDsK
LSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPnJlcXVlc3RTdGFydDsKLSAgICAgICAgZW5jb2Rl
ciA8PCB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5z
ZWN1cmVDb25uZWN0aW9uU3RhcnQ7Ci0gICAgfQorICAgIGNvbnN0IFJlc291cmNlTG9hZFRpbWlu
ZyYgdGltaW5nID0gcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICBl
bmNvZGVyIDw8IHRpbWluZy5kb21haW5Mb29rdXBTdGFydDsKKyAgICBlbmNvZGVyIDw8IHRpbWlu
Zy5kb21haW5Mb29rdXBFbmQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuY29ubmVjdFN0YXJ0Owor
ICAgIGVuY29kZXIgPDwgdGltaW5nLmNvbm5lY3RFbmQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcu
cmVxdWVzdFN0YXJ0OworICAgIGVuY29kZXIgPDwgdGltaW5nLnJlc3BvbnNlU3RhcnQ7CisgICAg
ZW5jb2RlciA8PCB0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwogI2VuZGlmCiB9CiAKQEAg
LTc3MiwyMSArNzY4LDE1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6
ZGUKICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgYm9vbCBoYXNSZXNv
dXJjZUxvYWRUaW1pbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNSZXNvdXJjZUxvYWRU
aW1pbmcpKQorICAgIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gcmVzcG9uc2UucmVzb3Vy
Y2VMb2FkVGltaW5nKCk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9v
a3VwU3RhcnQpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3Vw
RW5kKQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLmNvbm5lY3RTdGFydCkKKyAg
ICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5jb25uZWN0RW5kKQorICAgICAgICB8fCAh
ZGVjb2Rlci5kZWNvZGUodGltaW5nLnJlcXVlc3RTdGFydCkKKyAgICAgICAgfHwgIWRlY29kZXIu
ZGVjb2RlKHRpbWluZy5yZXNwb25zZVN0YXJ0KQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUo
dGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoaGFzUmVzb3VyY2VMb2FkVGltaW5nKSB7Ci0gICAgICAgIHJlc3BvbnNlLnNldFJlc291
cmNlTG9hZFRpbWluZyhSZXNvdXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgUmVz
b3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0KQot
ICAgICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy0+ZG9tYWluTG9va3VwRW5kKQot
ICAgICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy0+Y29ubmVjdFN0YXJ0KQotICAg
ICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy0+Y29ubmVjdEVuZCkKLSAgICAgICAg
ICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmctPnJlcXVlc3RTdGFydCkKLSAgICAgICAgICAg
IHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmctPnJlc3BvbnNlU3RhcnQpCi0gICAgICAgICAgICB8
fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICNlbmRpZgogCiAgICAgcmVzb3VyY2VSZXNwb25z
ZSA9IHJlc3BvbnNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231403</attachid>
            <date>2014-05-13 12:58:03 -0700</date>
            <delta_ts>2014-05-13 13:47:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132846-20140513125740.patch</filename>
            <type>text/plain</type>
            <size>36290</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA1LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyB3aXRoIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgIFVwZGF0ZWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9h
ZFRpbWluZyBsaW5rZXIgc3ltYm9sLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbkxvb2t1
cFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRv
bWFpbkxvb2t1cEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpjb25uZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzdFN0YXJ0KToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaDoKKyAgICAgICAgTWFrZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgUmVm
UHRyLgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQpOgorICAgICAgICBDaGVjayB0byBzZWUgaWYg
dGhlIGxvYWRlciBleGlzdHMsIHRoZW4gdXNlIFJlc291cmNlTG9hZFRpbWluZyByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmg6CisgICAgICAg
IFJlbW92ZWQgcmVzb3VyY2VMb2FkVGltaW5nIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRUaW1pbmc6OlJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIFJlcGxhY2VkIHJlZmVyZW5j
ZSBjb3VudGluZyB3aXRoIGNvcHkgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpkZWVwQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKwogMjAxNC0wNS0xMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTY3Nzcx
KTogW0dUS10gVGV4dCBmaWVsZHMgYW5kIGFyZWFzIGFyZSByZW5kZXJlZCB1bnRoZW1lZApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUxLDYgKzMzNTEsNiBAQCBfX1pO
N1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxc2V0UmVz
b3VyY2VMb2FkVGltaW5nRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4UmVzb3VyY2VMb2FkVGltaW5n
RUVFCitfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjFzZXRSZXNvdXJjZUxvYWRU
aW1pbmdFUktOU18xOFJlc291cmNlTG9hZFRpbWluZ0UKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNl
UmVzcG9uc2VCYXNlMThyZXNvdXJjZUxvYWRUaW1pbmdFdgogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCShy
ZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw4ICsyNDMsNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyCiAgICAgICAgIC5zZXRDb25uZWN0aW9u
SWQocmVzcG9uc2UuY29ubmVjdGlvbklEKCkpOwogCiAgICAgcmVzcG9uc2VPYmplY3QtPnNldEZy
b21EaXNrQ2FjaGUocmVzcG9uc2Uud2FzQ2FjaGVkKCkpOwotICAgIGlmIChyZXNwb25zZS5yZXNv
dXJjZUxvYWRUaW1pbmcoKSkKLSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWls
ZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCksIGxvYWRlcikp
OworICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcocmVz
cG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCksIGxvYWRlcikpOwogCiAgICAgcmV0dXJuIHJlc3Bv
bnNlT2JqZWN0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcuY3BwCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsMTAgKzEyMCwxMCBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6ZG9tYWlu
CiAgICAgaWYgKCFtX3Nob3VsZFJlcG9ydERldGFpbHMpCiAgICAgICAgIHJldHVybiAwLjA7CiAK
LSAgICBpZiAoIW1fdGltaW5nIHx8IG1fdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA8IDApCisg
ICAgaWYgKG1fdGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0IDwgMCkKICAgICAgICAgcmV0dXJuIGZl
dGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNv
bmRzKG1fdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlVGlt
ZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpOwogfQog
CiBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kKCkgY29u
c3QKQEAgLTEzMSwxMCArMTMxLDEwIEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5n
Ojpkb21haW4KICAgICBpZiAoIW1fc2hvdWxkUmVwb3J0RGV0YWlscykKICAgICAgICAgcmV0dXJu
IDAuMDsKIAotICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA8
IDApCisgICAgaWYgKG1fdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA8IDApCiAgICAgICAgIHJldHVy
biBkb21haW5Mb29rdXBTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1l
bnRNaWxsaXNlY29uZHMobV90aW1pbmctPmRvbWFpbkxvb2t1cEVuZCk7CisgICAgcmV0dXJuIHJl
c291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcuZG9tYWluTG9va3VwRW5k
KTsKIH0KIAogZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmNvbm5lY3RTdGFydCgp
IGNvbnN0CkBAIC0xNDMsMTMgKzE0MywxMyBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZzo6Y29ubmVjCiAgICAgICAgIHJldHVybiAwLjA7CiAKICAgICAvLyBjb25uZWN0U3RhcnQg
d2lsbCBiZSAtMSB3aGVuIGEgbmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgotICAgIGlmICgh
bV90aW1pbmcgfHwgbV90aW1pbmctPmNvbm5lY3RTdGFydCA8IDAgfHwgbV9kaWRSZXVzZUNvbm5l
Y3Rpb24pCisgICAgaWYgKG1fdGltaW5nLmNvbm5lY3RTdGFydCA8IDAgfHwgbV9kaWRSZXVzZUNv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBFbmQoKTsKIAogICAgIC8vIGNv
bm5lY3RTdGFydCBpbmNsdWRlcyBhbnkgRE5TIHRpbWUsIHNvIHdlIG1heSBuZWVkIHRvIHRyaW0g
dGhhdCBvZmYuCi0gICAgaW50IGNvbm5lY3RTdGFydCA9IG1fdGltaW5nLT5jb25uZWN0U3RhcnQ7
Ci0gICAgaWYgKG1fdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPj0gMCkKLSAgICAgICAgY29ubmVj
dFN0YXJ0ID0gbV90aW1pbmctPmRvbWFpbkxvb2t1cEVuZDsKKyAgICBpbnQgY29ubmVjdFN0YXJ0
ID0gbV90aW1pbmcuY29ubmVjdFN0YXJ0OworICAgIGlmIChtX3RpbWluZy5kb21haW5Mb29rdXBF
bmQgPj0gMCkKKyAgICAgICAgY29ubmVjdFN0YXJ0ID0gbV90aW1pbmcuZG9tYWluTG9va3VwRW5k
OwogCiAgICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMoY29ubmVj
dFN0YXJ0KTsKIH0KQEAgLTE2MCwxMCArMTYwLDEwIEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nOjpjb25uZWMKICAgICAgICAgcmV0dXJuIDAuMDsKIAogICAgIC8vIGNvbm5lY3RT
dGFydCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3QgaXMgbm90IG1hZGUuCi0gICAg
aWYgKCFtX3RpbWluZyB8fCBtX3RpbWluZy0+Y29ubmVjdEVuZCA8IDAgfHwgbV9kaWRSZXVzZUNv
bm5lY3Rpb24pCisgICAgaWYgKG1fdGltaW5nLmNvbm5lY3RFbmQgPCAwIHx8IG1fZGlkUmV1c2VD
b25uZWN0aW9uKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAKLSAgICByZXR1cm4g
cmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+Y29ubmVjdEVuZCk7
CisgICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcu
Y29ubmVjdEVuZCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpzZWN1
cmVDb25uZWN0aW9uU3RhcnQoKSBjb25zdApAQCAtMTcxLDEwICsxNzEsMTAgQEAgZG91YmxlIFBl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OnNlY3VyZQogICAgIGlmICghbV9zaG91bGRSZXBvcnRE
ZXRhaWxzKQogICAgICAgICByZXR1cm4gMC4wOwogCi0gICAgaWYgKCFtX3RpbWluZyB8fCBtX3Rp
bWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0IDwgMCkgLy8gU2VjdXJlIGNvbm5lY3Rpb24gbm90
IG5lZ290aWF0ZWQuCisgICAgaWYgKG1fdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8IDAp
IC8vIFNlY3VyZSBjb25uZWN0aW9uIG5vdCBuZWdvdGlhdGVkLgogICAgICAgICByZXR1cm4gMC4w
OwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1p
bmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9j
dW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKIH0KIAog
ZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OnJlcXVlc3RTdGFydCgpIGNvbnN0CkBA
IC0xODIsMTAgKzE4Miw3IEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpyZXF1
ZXMKICAgICBpZiAoIW1fc2hvdWxkUmVwb3J0RGV0YWlscykKICAgICAgICAgcmV0dXJuIDAuMDsK
IAotICAgIGlmICghbV90aW1pbmcpCi0gICAgICAgIHJldHVybiBjb25uZWN0RW5kKCk7Ci0KLSAg
ICByZXR1cm4gcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+cmVx
dWVzdFN0YXJ0KTsKKyAgICByZXR1cm4gcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25k
cyhtX3RpbWluZy5yZXF1ZXN0U3RhcnQpOwogfQogCiBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgJKHJldmlzaW9uIDE2ODY0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlORykKIAogI2lu
Y2x1ZGUgIlBlcmZvcm1hbmNlRW50cnkuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRUaW1pbmcu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhpbnQgZGVs
dGFNaWxsaXNlY29uZHMpIGNvbnN0OwogCiAgICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9yVHlw
ZTsKLSAgICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBtX3RpbWluZzsKKyAgICBSZXNvdXJj
ZUxvYWRUaW1pbmcgbV90aW1pbmc7CiAgICAgZG91YmxlIG1fZmluaXNoVGltZTsKICAgICBib29s
IG1fZGlkUmV1c2VDb25uZWN0aW9uOwogICAgIGJvb2wgbV9zaG91bGRSZXBvcnREZXRhaWxzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAJKHJldmlzaW9u
IDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsMzIgKzEyNCwzNCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVy
Zm9ybWFuY2VUaW1pbmc6OmZlCiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWlu
Zzo6ZG9tYWluTG9va3VwU3RhcnQoKSBjb25zdAogewotICAgIFJlc291cmNlTG9hZFRpbWluZyog
dGltaW5nID0gcmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgaWYgKCF0aW1pbmcpCisgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50TG9hZGVyKCk7CisgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7Ci0KKyAgICAKKyAgICBjb25zdCBSZXNvdXJj
ZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1p
bmcoKTsKKyAgICAKICAgICAvLyBUaGlzIHdpbGwgYmUgLTEgd2hlbiBhIEROUyByZXF1ZXN0IGlz
IG5vdCBwZXJmb3JtZWQuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZh
bHVlIHRoYXQgaW5kaWNhdGVzIG5vIEROUywgd2UgImJhY2tmaWxsIiB3aXRoIGZldGNoU3RhcnQu
Ci0gICAgaW50IGRvbWFpbkxvb2t1cFN0YXJ0ID0gdGltaW5nLT5kb21haW5Mb29rdXBTdGFydDsK
LSAgICBpZiAoZG9tYWluTG9va3VwU3RhcnQgPCAwKQorICAgIGlmICh0aW1pbmcuZG9tYWluTG9v
a3VwU3RhcnQgPCAwKQogICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgpOwogCi0gICAgcmV0dXJu
IHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoZG9tYWluTG9va3VwU3RhcnQpOwor
ICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy5kb21h
aW5Mb29rdXBTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWlu
Zzo6ZG9tYWluTG9va3VwRW5kKCkgY29uc3QKIHsKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRp
bWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghdGltaW5nKQorICAgIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudExvYWRlcigpOworICAgIGlmICghbG9hZGVyKQog
ICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKLQorICAgIAorICAgIGNvbnN0IFJl
c291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9h
ZFRpbWluZygpOworICAgIAogICAgIC8vIFRoaXMgd2lsbCBiZSAtMSB3aGVuIGEgRE5TIHJlcXVl
c3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNp
YWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAiYmFja2ZpbGwiIHdpdGggZG9tYWlu
TG9va3VwU3RhcnQuCi0gICAgaW50IGRvbWFpbkxvb2t1cEVuZCA9IHRpbWluZy0+ZG9tYWluTG9v
a3VwRW5kOwotICAgIGlmIChkb21haW5Mb29rdXBFbmQgPCAwKQorICAgIGlmICh0aW1pbmcuZG9t
YWluTG9va3VwRW5kIDwgMCkKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShkb21haW5Mb29r
dXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRp
bWluZy5kb21haW5Mb29rdXBFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmNvbm5lY3RTdGFydCgpIGNvbnN0CkBAIC0xNTgsMjAgKzE2MCwxOCBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvCiAgICAgaWYgKCFsb2FkZXIpCiAg
ICAgICAgIHJldHVybiBkb21haW5Mb29rdXBFbmQoKTsKIAotICAgIFJlc291cmNlTG9hZFRpbWlu
ZyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOwotICAg
IGlmICghdGltaW5nKQotICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7Ci0KKyAgICBj
b25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNv
dXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3
aGVuIGEgbmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhlciB0aGFuIGV4
cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29ubmVjdGlvbiwg
d2UgImJhY2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cEVuZC4KLSAgICBpbnQgY29ubmVjdFN0YXJ0
ID0gdGltaW5nLT5jb25uZWN0U3RhcnQ7CisgICAgaW50IGNvbm5lY3RTdGFydCA9IHRpbWluZy5j
b25uZWN0U3RhcnQ7CiAgICAgaWYgKGNvbm5lY3RTdGFydCA8IDAgfHwgbG9hZGVyLT5yZXNwb25z
ZSgpLmNvbm5lY3Rpb25SZXVzZWQoKSkKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgp
OwogCiAgICAgLy8gUmVzb3VyY2VMb2FkVGltaW5nJ3MgY29ubmVjdCBwaGFzZSBpbmNsdWRlcyBE
TlMsIGhvd2V2ZXIgTmF2aWdhdGlvbiBUaW1pbmcncwogICAgIC8vIGNvbm5lY3QgcGhhc2Ugc2hv
dWxkIG5vdC4gU28gaWYgdGhlcmUgaXMgRE5TIHRpbWUsIHRyaW0gaXQgZnJvbSB0aGUgc3RhcnQu
Ci0gICAgaWYgKHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID49IDAgJiYgdGltaW5nLT5kb21haW5M
b29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+
ZG9tYWluTG9va3VwRW5kOworICAgIGlmICh0aW1pbmcuZG9tYWluTG9va3VwRW5kID49IDAgJiYg
dGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+IGNvbm5lY3RTdGFydCkKKyAgICAgICAgY29ubmVjdFN0
YXJ0ID0gdGltaW5nLmRvbWFpbkxvb2t1cEVuZDsKIAogICAgIHJldHVybiByZXNvdXJjZUxvYWRU
aW1lUmVsYXRpdmVUb0Fic29sdXRlKGNvbm5lY3RTdGFydCk7CiB9CkBAIC0xODIsMTcgKzE4Miwx
NCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvCiAgICAgaWYgKCFs
b2FkZXIpCiAgICAgICAgIHJldHVybiBjb25uZWN0U3RhcnQoKTsKIAotICAgIFJlc291cmNlTG9h
ZFRpbWluZyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygp
OwotICAgIGlmICghdGltaW5nKQotICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7Ci0KKyAg
ICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5y
ZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBjb25uZWN0RW5kIHdpbGwgYmUgLTEg
d2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRoZXIgdGhhbiBl
eHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNvbm5lY3Rpb24s
IHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0gICAgaW50IGNvbm5lY3RFbmQgPSB0
aW1pbmctPmNvbm5lY3RFbmQ7Ci0gICAgaWYgKGNvbm5lY3RFbmQgPCAwIHx8IGxvYWRlci0+cmVz
cG9uc2UoKS5jb25uZWN0aW9uUmV1c2VkKCkpCisgICAgaWYgKHRpbWluZy5jb25uZWN0RW5kIDwg
MCB8fCBsb2FkZXItPnJlc3BvbnNlKCkuY29ubmVjdGlvblJldXNlZCgpKQogICAgICAgICByZXR1
cm4gY29ubmVjdFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZl
VG9BYnNvbHV0ZShjb25uZWN0RW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0
aXZlVG9BYnNvbHV0ZSh0aW1pbmcuY29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9u
ZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIw
MSwzNSArMTk4LDM2IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2UK
ICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZXNvdXJjZUxvYWRU
aW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsK
LSAgICBpZiAoIXRpbWluZykKKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9
IGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKKyAgICBpZiAo
dGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgaW50IHNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0
YXJ0OwotICAgIGlmIChzZWN1cmVDb25uZWN0aW9uU3RhcnQgPCAwKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHNlY3Vy
ZUNvbm5lY3Rpb25TdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
QWJzb2x1dGUodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxv
bmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0YXJ0KCkgY29uc3QKIHsKLSAgICBS
ZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlm
ICghdGltaW5nKQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudExvYWRlcigp
OworICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgpOwotCi0gICAg
QVNTRVJUKHRpbWluZy0+cmVxdWVzdFN0YXJ0ID49IDApOwotICAgIHJldHVybiByZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy0+cmVxdWVzdFN0YXJ0KTsKKyAgICAKKyAg
ICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5y
ZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKKyAgICBBU1NFUlQodGltaW5nLnJlcXVlc3RTdGFy
dCA+PSAwKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0
aW1pbmcucmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNl
VGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKIHsKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcq
IHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghdGltaW5nKQorICAgIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVudExvYWRlcigpOworICAgIGlmICghbG9hZGVy
KQogICAgICAgICByZXR1cm4gcmVxdWVzdFN0YXJ0KCk7CiAKLSAgICBBU1NFUlQodGltaW5nLT5y
ZXNwb25zZVN0YXJ0ID49IDApOwotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVU
b0Fic29sdXRlKHRpbWluZy0+cmVzcG9uc2VTdGFydCk7CisgICAgY29uc3QgUmVzb3VyY2VMb2Fk
VGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7
CisgICAgCisgICAgQVNTRVJUKHRpbWluZy5yZXNwb25zZVN0YXJ0ID49IDApOworICAgIHJldHVy
biByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy5yZXNwb25zZVN0YXJ0
KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZUVu
ZCgpIGNvbnN0CkBAIC0zMzMsMTUgKzMzMSw2IEBAIERvY3VtZW50TG9hZFRpbWluZyogUGVyZm9y
bWFuY2VUaW1pbmc6OmQKICAgICByZXR1cm4gbG9hZGVyLT50aW1pbmcoKTsKIH0KIAotUmVzb3Vy
Y2VMb2FkVGltaW5nKiBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29u
c3QKLXsKLSAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnRMb2FkZXIoKTsKLSAg
ICBpZiAoIWxvYWRlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gbG9hZGVyLT5y
ZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOwotfQotCiB1bnNpZ25lZCBsb25nIGxvbmcg
UGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50
IHJlbGF0aXZlTWlsbGlzZWNvbmRzKSBjb25zdAogewogICAgIEFTU0VSVChyZWxhdGl2ZU1pbGxp
c2Vjb25kcyA+PSAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1p
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5n
LmgJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VU
aW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNiBAQCBwcml2YXRlOgogICAgIGNv
bnN0IERvY3VtZW50VGltaW5nKiBkb2N1bWVudFRpbWluZygpIGNvbnN0OwogICAgIERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0OwogICAgIERvY3VtZW50TG9hZFRpbWluZyog
ZG9jdW1lbnRMb2FkVGltaW5nKCkgY29uc3Q7Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiByZXNv
dXJjZUxvYWRUaW1pbmcoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzb3VyY2VM
b2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1p
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlTG9hZFRpbWluZy5oCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMCw0MCArMjEs
NDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBSZXNvdXJjZUxvYWRUaW1pbmdf
aAogI2RlZmluZSBSZXNvdXJjZUxvYWRUaW1pbmdfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudExvYWRUaW1pbmc7Ci0K
LWNsYXNzIFJlc291cmNlTG9hZFRpbWluZyA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZFRpbWluZz4geworICAgIAorY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5nIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgpCisgICAgUmVz
b3VyY2VMb2FkVGltaW5nKCkKKyAgICAgICAgOiBkb21haW5Mb29rdXBTdGFydCgtMSkKKyAgICAg
ICAgLCBkb21haW5Mb29rdXBFbmQoLTEpCisgICAgICAgICwgY29ubmVjdFN0YXJ0KC0xKQorICAg
ICAgICAsIGNvbm5lY3RFbmQoLTEpCisgICAgICAgICwgcmVxdWVzdFN0YXJ0KDApCisgICAgICAg
ICwgcmVzcG9uc2VTdGFydCgwKQorICAgICAgICAsIHNlY3VyZUNvbm5lY3Rpb25TdGFydCgtMSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3VyY2VMb2FkVGltaW5nKTsK
ICAgICB9Ci0KLSAgICBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gZGVlcENvcHkoKQor
ICAgIAorICAgIFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIG90
aGVyKQorICAgICAgICA6IGRvbWFpbkxvb2t1cFN0YXJ0KG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0
KQorICAgICAgICAsIGRvbWFpbkxvb2t1cEVuZChvdGhlci5kb21haW5Mb29rdXBFbmQpCisgICAg
ICAgICwgY29ubmVjdFN0YXJ0KG90aGVyLmNvbm5lY3RTdGFydCkKKyAgICAgICAgLCBjb25uZWN0
RW5kKG90aGVyLmNvbm5lY3RFbmQpCisgICAgICAgICwgcmVxdWVzdFN0YXJ0KG90aGVyLnJlcXVl
c3RTdGFydCkKKyAgICAgICAgLCByZXNwb25zZVN0YXJ0KG90aGVyLnJlc3BvbnNlU3RhcnQpCisg
ICAgICAgICwgc2VjdXJlQ29ubmVjdGlvblN0YXJ0KG90aGVyLnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IHRpbWluZyA9IGNy
ZWF0ZSgpOwotICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3Vw
U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gZG9tYWluTG9va3VwRW5k
OwotICAgICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IGNvbm5lY3RTdGFydDsKLSAgICAgICAg
dGltaW5nLT5jb25uZWN0RW5kID0gY29ubmVjdEVuZDsKLSAgICAgICAgdGltaW5nLT5yZXF1ZXN0
U3RhcnQgPSByZXF1ZXN0U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IHJl
c3BvbnNlU3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2Vj
dXJlQ29ubmVjdGlvblN0YXJ0OwotICAgICAgICByZXR1cm4gdGltaW5nLnJlbGVhc2UoKTsKICAg
ICB9Ci0KKyAgICAKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcm
IG90aGVyKQorICAgIHsKKyAgICAgICAgZG9tYWluTG9va3VwU3RhcnQgPSBvdGhlci5kb21haW5M
b29rdXBTdGFydDsKKyAgICAgICAgZG9tYWluTG9va3VwRW5kID0gb3RoZXIuZG9tYWluTG9va3Vw
RW5kOworICAgICAgICBjb25uZWN0U3RhcnQgPSBvdGhlci5jb25uZWN0U3RhcnQ7CisgICAgICAg
IGNvbm5lY3RFbmQgPSBvdGhlci5jb25uZWN0RW5kOworICAgICAgICByZXF1ZXN0U3RhcnQgPSBv
dGhlci5yZXF1ZXN0U3RhcnQ7CisgICAgICAgIHJlc3BvbnNlU3RhcnQgPSBvdGhlci5yZXNwb25z
ZVN0YXJ0OworICAgICAgICBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBvdGhlci5zZWN1cmVDb25u
ZWN0aW9uU3RhcnQ7CisgICAgfQorICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNv
dXJjZUxvYWRUaW1pbmcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGRvbWFp
bkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0CkBAIC03OCwxOCArODgsNiBA
QCBwdWJsaWM6CiAgICAgaW50IHJlcXVlc3RTdGFydDsKICAgICBpbnQgcmVzcG9uc2VTdGFydDsK
ICAgICBpbnQgc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgIAotcHJpdmF0ZToKLSAgICBSZXNv
dXJjZUxvYWRUaW1pbmcoKQotICAgICAgICA6IGRvbWFpbkxvb2t1cFN0YXJ0KC0xKQotICAgICAg
ICAsIGRvbWFpbkxvb2t1cEVuZCgtMSkKLSAgICAgICAgLCBjb25uZWN0U3RhcnQoLTEpCi0gICAg
ICAgICwgY29ubmVjdEVuZCgtMSkKLSAgICAgICAgLCByZXF1ZXN0U3RhcnQoMCkKLSAgICAgICAg
LCByZXNwb25zZVN0YXJ0KDApCi0gICAgICAgICwgc2VjdXJlQ29ubmVjdGlvblN0YXJ0KC0xKQot
ICAgIHsKLSAgICB9CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMTY4
NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBQYXNzT3duUHRyPFJl
c291cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzCiAKICAgICByZXNwb25zZS0+bGF6eUluaXQoQ29t
bW9uQW5kVW5jb21tb25GaWVsZHMpOwogICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMu
YWRvcHQoZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpOwotICAgIHJlc3BvbnNlLT5zZXRS
ZXNvdXJjZUxvYWRUaW1pbmcoZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcucmVsZWFzZSgpKTsK
KyAgICByZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVzb3VyY2VMb2Fk
VGltaW5nKTsKICAgICByZXNwb25zZS0+ZG9QbGF0Zm9ybUFkb3B0KGRhdGEpOwogICAgIHJldHVy
biByZXNwb25zZS5yZWxlYXNlKCk7CiB9CkBAIC0xMjIsOCArMTIyLDcgQEAgUGFzc093blB0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYQogICAgIGRhdGEtPm1faHR0cFN0YXR1c0NvZGUg
PSBodHRwU3RhdHVzQ29kZSgpOwogICAgIGRhdGEtPm1faHR0cFN0YXR1c1RleHQgPSBodHRwU3Rh
dHVzVGV4dCgpLmlzb2xhdGVkQ29weSgpOwogICAgIGRhdGEtPm1faHR0cEhlYWRlcnMgPSBodHRw
SGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsKLSAgICBpZiAobV9yZXNvdXJjZUxvYWRUaW1pbmcp
Ci0gICAgICAgIGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nID0gbV9yZXNvdXJjZUxvYWRUaW1p
bmctPmRlZXBDb3B5KCk7CisgICAgZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcgPSBtX3Jlc291
cmNlTG9hZFRpbWluZzsKICAgICByZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCkuZG9QbGF0Zm9y
bUNvcHlEYXRhKGRhdGEucmVsZWFzZSgpKTsKIH0KIApAQCAtNTUxLDE0ICs1NTAsMTQgQEAgdm9p
ZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbgogICAgIG1fY29ubmVjdGlvbklE
ID0gY29ubmVjdGlvbklEOwogfQogCi1SZXNvdXJjZUxvYWRUaW1pbmcqIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdAorY29uc3QgUmVzb3VyY2VMb2FkVGlt
aW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QKIHsK
ICAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKLSAgICByZXR1cm4gbV9y
ZXNvdXJjZUxvYWRUaW1pbmcuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VMb2FkVGltaW5n
OwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRUaW1pbmco
UGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IHJlc291cmNlTG9hZFRpbWluZykKK3ZvaWQg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNvdXJj
ZUxvYWRUaW1pbmcmIHJlc291cmNlTG9hZFRpbWluZykKIHsKICAgICBsYXp5SW5pdChDb21tb25B
bmRVbmNvbW1vbkZpZWxkcyk7CiAKQEAgLTU5MCw4ICs1ODksNiBAQCBib29sIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpjb21wYXJlKGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
YS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoYS5yZXNvdXJjZUxvYWRUaW1pbmcoKSAmJiBiLnJlc291cmNl
TG9hZFRpbWluZygpICYmICphLnJlc291cmNlTG9hZFRpbWluZygpID09ICpiLnJlc291cmNlTG9h
ZFRpbWluZygpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21w
YXJlKGEsIGIpOwogICAgIGlmIChhLnJlc291cmNlTG9hZFRpbWluZygpICE9IGIucmVzb3VyY2VM
b2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNp
b24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgog
ICAgIGJvb2wgd2FzQ2FjaGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXYXNDYWNoZWQoYm9vbCk7
CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0Owot
ICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGlt
aW5nPik7CisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiByZXNvdXJjZUxvYWRUaW1pbmco
KSBjb25zdDsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNvdXJjZUxv
YWRUaW1pbmcmKTsKIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAi
c2hhZG93IiB0aGlzIG1ldGhvZCB0byBwcm92aWRlIHBsYXRmb3JtLXNwZWNpZmljIG1lbW9yeSB1
c2FnZSBpbmZvcm1hdGlvbgogICAgIHVuc2lnbmVkIG1lbW9yeVVzYWdlKCkgY29uc3QKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7
CiAgICAgQXRvbWljU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgSFRUUEhlYWRlck1hcCBt
X2h0dHBIZWFkZXJGaWVsZHM7Ci0gICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gbV9yZXNv
dXJjZUxvYWRUaW1pbmc7CisgICAgUmVzb3VyY2VMb2FkVGltaW5nIG1fcmVzb3VyY2VMb2FkVGlt
aW5nOwogCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgdW5zaWduZWQgbV9jb25uZWN0
aW9uSUQ7CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgIGludCBtX2h0dHBTdGF0dXND
b2RlOwogICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIE93blB0cjxDcm9zc1RocmVh
ZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJzOwotICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAgIFJlc291cmNlTG9hZFRpbWluZyBt
X3Jlc291cmNlTG9hZFRpbWluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTY4
NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDkgKzE4MSw2IEBA
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc291cmNlUmVzcG9uc2Uocik7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAg
aWYgKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSA9IFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSkg
ewotICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhSZXNvdXJj
ZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1p
bmcgPSByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAgICAgICAKICAg
ICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRpb25TdGFydCB0aW1lIGluIG1vbm90b25p
YyB0aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRpbWUKICAg
ICAgICAgLy8gYW5kIG9ubHkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGltZXMgYXJlIHN0b3Jl
ZC4KICAgICAgICAgZG91YmxlIHJlZmVyZW5jZVN0YXJ0ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9y
S2V5OkAiX2tDRk5UaW1pbmdEYXRhVGltaW5nRGF0YUluaXQiXSBkb3VibGVWYWx1ZV07CkBAIC0x
OTYsMTUgKzE5MywxNSBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
CiAgICAgICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6
QCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQiXSBkb3VibGVWYWx1ZV07CiAgICAgICAgIGRv
dWJsZSByZXNwb25zZVN0YXJ0ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1p
bmdEYXRhUmVzcG9uc2VTdGFydCJdIGRvdWJsZVZhbHVlXTsKICAgICAgICAgCi0gICAgICAgIGlm
ICh0aW1pbmcpIHsKLSAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQgPSBkb21h
aW5Mb29rdXBTdGFydCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBTdGFydCAtIHJlZmVyZW5j
ZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IGRv
bWFpbkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VT
dGFydCkgKiAxMDAwOwotICAgICAgICAgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBjb25uZWN0
U3RhcnQgPD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAw
MDsKLSAgICAgICAgICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gc2VjdXJlQ29u
bmVjdGlvblN0YXJ0IDw9IDAuMCA/IC0xIDogKHNlY3VyZUNvbm5lY3Rpb25TdGFydCAtIHJlZmVy
ZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPmNvbm5lY3RFbmQgPSBjb25u
ZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAw
OwotICAgICAgICAgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQgPD0gMC4w
ID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAg
ICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IHJlc3BvbnNlU3RhcnQgPD0gMC4wID8gLTEgOiAo
cmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgIH0KKyAgICAg
ICAgUmVzb3VyY2VMb2FkVGltaW5nIHRpbWluZzsKKyAgICAgICAgdGltaW5nLmRvbWFpbkxvb2t1
cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3VwU3Rh
cnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICB0aW1pbmcuZG9tYWluTG9va3Vw
RW5kID0gZG9tYWluTG9va3VwRW5kIDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cEVuZCAtIHJl
ZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAgICAgIHRpbWluZy5jb25uZWN0U3RhcnQgPSBjb25u
ZWN0U3RhcnQgPD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICog
MTAwMDsKKyAgICAgICAgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5l
Y3Rpb25TdGFydCA8PSAwLjAgPyAtMSA6IChzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVu
Y2VTdGFydCkgKiAxMDAwOworICAgICAgICB0aW1pbmcuY29ubmVjdEVuZCA9IGNvbm5lY3RFbmQg
PD0gMC4wID8gLTEgOiAoY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAg
ICAgIHRpbWluZy5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQgPD0gMC4wID8gLTEgOiAocmVx
dWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgdGltaW5nLnJlc3Bv
bnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9IDAuMCA/IC0xIDogKHJlc3BvbnNlU3RhcnQgLSBy
ZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFJlc291
cmNlTG9hZFRpbWluZyh0aW1pbmcpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTY4NjQ3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOSArMjIzLDYg
QEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAgICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uocik7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcp
CiAgICAgICAgIGlmIChOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEgPSBbY29ubmVjdGlvbiBfdGlt
aW5nRGF0YV0pIHsKLSAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2Fk
VGltaW5nKFJlc291cmNlTG9hZFRpbWluZzo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgUmVzb3Vy
Y2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgbmF2aWdh
dGlvblN0YXJ0IHRpbWUgaW4gbW9ub3RvbmljIHRpbWUsIGJ1dCB0aGUgb3RoZXIgdGltZXMgYXJl
IHJlbGF0aXZlIHRvIHRoaXMgdGltZQogICAgICAgICAgICAgLy8gYW5kIG9ubHkgdGhlIGRpZmZl
cmVuY2VzIGJldHdlZW4gdGltZXMgYXJlIHN0b3JlZC4KICAgICAgICAgICAgIGRvdWJsZSByZWZl
cmVuY2VTdGFydCA9IFtbdGltaW5nRGF0YSB2YWx1ZUZvcktleTpAIl9rQ0ZOVGltaW5nRGF0YVRp
bWluZ0RhdGFJbml0Il0gZG91YmxlVmFsdWVdOwpAQCAtMjM4LDE1ICsyMzUsMTUgQEAgLSAodm9p
ZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAgICAgICAgICAgZG91YmxlIHJl
cXVlc3RTdGFydCA9IFtbdGltaW5nRGF0YSB2YWx1ZUZvcktleTpAIl9rQ0ZOVGltaW5nRGF0YVJl
cXVlc3RTdGFydCJdIGRvdWJsZVZhbHVlXTsKICAgICAgICAgICAgIGRvdWJsZSByZXNwb25zZVN0
YXJ0ID0gW1t0aW1pbmdEYXRhIHZhbHVlRm9yS2V5OkAiX2tDRk5UaW1pbmdEYXRhUmVzcG9uc2VT
dGFydCJdIGRvdWJsZVZhbHVlXTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHRpbWlu
ZykgewotICAgICAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5M
b29rdXBTdGFydCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBTdGFydCAtIHJlZmVyZW5jZVN0
YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPSBk
b21haW5Mb29rdXBFbmQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3VwRW5kIC0gcmVmZXJlbmNl
U3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IGNv
bm5lY3RTdGFydCA8PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkg
KiAxMDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0g
c2VjdXJlQ29ubmVjdGlvblN0YXJ0IDw9IDAuMCA/IC0xIDogKHNlY3VyZUNvbm5lY3Rpb25TdGFy
dCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5jb25u
ZWN0RW5kID0gY29ubmVjdEVuZCA8PSAwLjAgPyAtMSA6IChjb25uZWN0RW5kIC0gcmVmZXJlbmNl
U3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgICAgICB0aW1pbmctPnJlcXVlc3RTdGFydCA9IHJl
cXVlc3RTdGFydCA8PSAwLjAgPyAtMSA6IChyZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkg
KiAxMDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IHJlc3BvbnNl
U3RhcnQgPD0gMC4wID8gLTEgOiAocmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEw
MDA7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBSZXNvdXJjZUxvYWRUaW1pbmcgdGltaW5n
OworICAgICAgICAgICAgdGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3Rh
cnQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAx
MDAwOworICAgICAgICAgICAgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVu
ZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAw
OworICAgICAgICAgICAgdGltaW5nLmNvbm5lY3RTdGFydCA9IGNvbm5lY3RTdGFydCA8PSAwLjAg
PyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAg
ICAgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8
PSAwLjAgPyAtMSA6IChzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAx
MDAwOworICAgICAgICAgICAgdGltaW5nLmNvbm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/
IC0xIDogKGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAg
dGltaW5nLnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydCA8PSAwLjAgPyAtMSA6IChyZXF1ZXN0
U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLnJlc3Bv
bnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9IDAuMCA/IC0xIDogKHJlc3BvbnNlU3RhcnQgLSBy
ZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRS
ZXNvdXJjZUxvYWRUaW1pbmcodGltaW5nKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlz
aW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsOSArMzgyLDYgQEAgc3Rh
dGljIHZvaWQgcmVzdGFydGVkQ2FsbGJhY2soU291cE1lc3NhZwogICAgIGlmICghaGFuZGxlIHx8
IGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7Ci0gICAg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSA9IGQtPm1fcmVzcG9uc2U7Ci0gICAg
cmVkaXJlY3RSZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5n
OjpjcmVhdGUoKSk7CiAgICAgaGFuZGxlLT5tX3JlcXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CiB9CiAjZW5kaWYKQEAgLTgzNSwxMSArODMyLDcgQEAgc3RhdGljIGlu
dCBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChkb3VibAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpk
aWRTdGFydFJlcXVlc3QoKQogewotICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJ
bnRlcm5hbCgpOwotICAgIGlmICghZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KS0+cmVxdWVzdFN0YXJ0ID0gbWlsaXNlY29uZHNTaW5jZVJlcXVlc3QobV9yZXF1ZXN0VGltZSk7
CisgICAgZ2V0SW50ZXJuYWwoKS0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5yZXF1
ZXN0U3RhcnQgPSBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChtX3JlcXVlc3RUaW1lKTsKIH0KIAog
c3RhdGljIHZvaWQgbmV0d29ya0V2ZW50Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBHU29ja2V0Q2xp
ZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSosIGdwb2ludGVyIGRhdGEpCkBAIC04NTUsMjEgKzg0
OCwyMSBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3VwTWVzCiAgICAgaW50
IGRlbHRhVGltZSA9IG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGhhbmRsZS0+bV9yZXF1ZXN0VGlt
ZSk7CiAgICAgc3dpdGNoIChldmVudCkgewogICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX1JFU09M
VklORzoKLSAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+ZG9tYWlu
TG9va3VwU3RhcnQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VM
b2FkVGltaW5nKCkuZG9tYWluTG9va3VwU3RhcnQgPSBkZWx0YVRpbWU7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX1JFU09MVkVEOgotICAgICAgICBkLT5tX3Jlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBFbmQgPSBkZWx0YVRpbWU7Cisg
ICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwRW5k
ID0gZGVsdGFUaW1lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9D
T05ORUNUSU5HOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5j
b25uZWN0U3RhcnQgPSBkZWx0YVRpbWU7Ci0gICAgICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291
cmNlTG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBTdGFydCAhPSAtMSkgeworICAgICAgICBkLT5t
X3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLmNvbm5lY3RTdGFydCA9IGRlbHRhVGltZTsK
KyAgICAgICAgaWYgKGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9v
a3VwU3RhcnQgIT0gLTEpIHsKICAgICAgICAgICAgIC8vIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXF1ZXN0VGltaW5nVmlldy5qcyBhc3N1bWVzCiAgICAgICAgICAgICAvLyB0aGF0IERO
UyB0aW1lIGlzIGluY2x1ZGVkIGluIGNvbm5lY3Rpb24gdGltZSBzbyBtdXN0CiAgICAgICAgICAg
ICAvLyBzdWJzdHJhY3QgaGVyZSB0aGUgRE5TIGRlbHRhIHRoYXQgd2lsbCBiZSBhZGRlZCBsYXRl
ciAoc2VlCiAgICAgICAgICAgICAvLyBXZWJJbnNwZWN0b3IuUmVxdWVzdFRpbWluZ1ZpZXcuY3Jl
YXRlVGltaW5nVGFibGUgaW4gdGhlCiAgICAgICAgICAgICAvLyBmaWxlIGFib3ZlIGZvciBtb3Jl
IGRldGFpbHMpLgotICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KS0+Y29ubmVjdFN0YXJ0IC09Ci0gICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJj
ZUxvYWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwRW5kIC0gZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxv
YWRUaW1pbmcoKS0+ZG9tYWluTG9va3VwU3RhcnQ7CisgICAgICAgICAgICBkLT5tX3Jlc3BvbnNl
LnJlc291cmNlTG9hZFRpbWluZygpLmNvbm5lY3RTdGFydCAtPQorICAgICAgICAgICAgICAgIGQt
Pm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuZG9tYWluTG9va3VwRW5kIC0gZC0+bV9y
ZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5kb21haW5Mb29rdXBTdGFydDsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9DT05ORUNURUQ6CkBA
IC04ODEsMTIgKzg3NCwxMiBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFjayhTb3Vw
TWVzCiAgICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRfUFJPWFlfTkVHT1RJQVRFRDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRfVExTX0hBTkRTSEFLSU5HOgotICAgICAg
ICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5zZWN1cmVDb25uZWN0aW9uU3Rh
cnQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5n
KCkuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gZGVsdGFUaW1lOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEdfU09DS0VUX0NMSUVOVF9UTFNfSEFORFNIQUtFRDoKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRfQ09NUExFVEU6Ci0gICAgICAgIGQtPm1fcmVzcG9uc2Uu
cmVzb3VyY2VMb2FkVGltaW5nKCktPmNvbm5lY3RFbmQgPSBkZWx0YVRpbWU7CisgICAgICAgIGQt
Pm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuY29ubmVjdEVuZCA9IGRlbHRhVGltZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC05NDIsNyArOTM1LDYgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JI
YW5kbGVBbgogICAgIHNvdXBfbWVzc2FnZV9zZXRfZmxhZ3MoZC0+bV9zb3VwTWVzc2FnZS5nZXQo
KSwgc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291cF9tZXNzYWdlX2dldF9mbGFncyhk
LT5tX3NvdXBNZXNzYWdlLmdldCgpKSB8IFNPVVBfTUVTU0FHRV9OT19SRURJUkVDVCkpOwogCiAj
aWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgZC0+bV9yZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRU
aW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7CiAgICAgZ19zaWduYWxfY29ubmVj
dChkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sobmV0
d29ya0V2ZW50Q2FsbGJhY2spLCBoYW5kbGUpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9z
b3VwTWVzc2FnZS5nZXQoKSwgInJlc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVzdGFydGVkQ2FsbGJh
Y2spLCBoYW5kbGUpOwogI2VuZGlmCkBAIC0xMDE3LDggKzEwMDksNyBAQCBib29sIFJlc291cmNl
SGFuZGxlOjpzdGFydCgpCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzZW5kUGVuZGluZ1JlcXVlc3Qo
KQogewogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIGlmIChkLT5tX3Jlc3BvbnNlLnJlc291
cmNlTG9hZFRpbWluZygpKQotICAgICAgICBtX3JlcXVlc3RUaW1lID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CisgICAgbV9yZXF1ZXN0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOwogI2VuZGlmCiAKICAgICBpZiAoZC0+bV9maXJzdFJlcXVlc3QudGltZW91dElu
dGVydmFsKCkgPiAwKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg2NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
NC0wNS0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgd2l0aCBSZXNvdXJjZUxv
YWRUaW1pbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzI4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUpOgorICAgICAgICBVc2UgcmVmZXJl
bmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzIGFuZCBudWxsIGNoZWNrcy4KKwogMjAxNC0wNS0xMiAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcmlwbGUt
YnVmZmVyIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTY4NjQ3KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY5MCwxOCArNjkwLDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
c3BvbnNlPjo6ZW4KICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgUmVz
b3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNlTG9hZFRp
bWluZygpOwotICAgIGJvb2wgaGFzUmVzb3VyY2VMb2FkVGltaW5nID0gdGltaW5nOwotICAgIGVu
Y29kZXIgPDwgaGFzUmVzb3VyY2VMb2FkVGltaW5nOwotICAgIGlmIChoYXNSZXNvdXJjZUxvYWRU
aW1pbmcpIHsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0Owot
ICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwotICAgICAgICBlbmNv
ZGVyIDw8IHRpbWluZy0+Y29ubmVjdFN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+
Y29ubmVjdEVuZDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPnJlcXVlc3RTdGFydDsKLSAg
ICAgICAgZW5jb2RlciA8PCB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIg
PDwgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQ7Ci0gICAgfQorICAgIGNvbnN0IFJlc291
cmNlTG9hZFRpbWluZyYgdGltaW5nID0gcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1p
bmcoKTsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5kb21haW5Mb29rdXBTdGFydDsKKyAgICBlbmNv
ZGVyIDw8IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuY29u
bmVjdFN0YXJ0OworICAgIGVuY29kZXIgPDwgdGltaW5nLmNvbm5lY3RFbmQ7CisgICAgZW5jb2Rl
ciA8PCB0aW1pbmcucmVxdWVzdFN0YXJ0OworICAgIGVuY29kZXIgPDwgdGltaW5nLnJlc3BvbnNl
U3RhcnQ7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwogI2Vu
ZGlmCiB9CiAKQEAgLTc3MiwyMSArNzY4LDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlc3BvbnNlPjo6ZGUKICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAg
Ym9vbCBoYXNSZXNvdXJjZUxvYWRUaW1pbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNS
ZXNvdXJjZUxvYWRUaW1pbmcpKQorICAgIFJlc291cmNlTG9hZFRpbWluZyB0aW1pbmc7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpCisgICAgICAgIHx8
ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3VwRW5kKQorICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUodGltaW5nLmNvbm5lY3RTdGFydCkKKyAgICAgICAgfHwgIWRlY29kZXIuZGVj
b2RlKHRpbWluZy5jb25uZWN0RW5kKQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5n
LnJlcXVlc3RTdGFydCkKKyAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5yZXNwb25z
ZVN0YXJ0KQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLnNlY3VyZUNvbm5lY3Rp
b25TdGFydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoaGFzUmVzb3VyY2VMb2Fk
VGltaW5nKSB7Ci0gICAgICAgIHJlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhSZXNvdXJj
ZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1p
bmcgPSByZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0KQotICAgICAgICAgICAgfHwgIWRlY29k
ZXIuZGVjb2RlKHRpbWluZy0+ZG9tYWluTG9va3VwRW5kKQotICAgICAgICAgICAgfHwgIWRlY29k
ZXIuZGVjb2RlKHRpbWluZy0+Y29ubmVjdFN0YXJ0KQotICAgICAgICAgICAgfHwgIWRlY29kZXIu
ZGVjb2RlKHRpbWluZy0+Y29ubmVjdEVuZCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29k
ZSh0aW1pbmctPnJlcXVlc3RTdGFydCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0
aW1pbmctPnJlc3BvbnNlU3RhcnQpCi0gICAgICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGlt
aW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KKyAgICByZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcodGltaW5nKTsKICNlbmRp
ZgogCiAgICAgcmVzb3VyY2VSZXNwb25zZSA9IHJlc3BvbnNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231406</attachid>
            <date>2014-05-13 14:10:30 -0700</date>
            <delta_ts>2014-05-14 10:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132846-20140513141007.patch</filename>
            <type>text/plain</type>
            <size>36190</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE0LTA1LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyB3aXRoIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgIFJlbW92ZWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9h
ZFRpbWluZyBsaW5rZXIgc3ltYm9sLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbkxvb2t1
cFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRv
bWFpbkxvb2t1cEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpjb25uZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzdFN0YXJ0KToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaDoKKyAgICAgICAgTWFrZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgUmVm
UHRyLgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQpOgorICAgICAgICBDaGVjayB0byBzZWUgaWYg
dGhlIGxvYWRlciBleGlzdHMsIHRoZW4gdXNlIFJlc291cmNlTG9hZFRpbWluZyByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmg6CisgICAgICAg
IFJlbW92ZWQgcmVzb3VyY2VMb2FkVGltaW5nIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRUaW1pbmc6OlJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIFJlcGxhY2VkIHJlZmVyZW5j
ZSBjb3VudGluZyB3aXRoIGNvcHkgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjpkZWVwQ29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkU3RhcnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Om5ldHdvcmtFdmVudENhbGxiYWNrKToKKyAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKwogMjAxNC0wNS0xMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTY3Nzcx
KTogW0dUS10gVGV4dCBmaWVsZHMgYW5kIGFyZWFzIGFyZSByZW5kZXJlZCB1bnRoZW1lZApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUxLDYgKzMzNTEsNSBAQCBfX1pO
N1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxc2V0UmVz
b3VyY2VMb2FkVGltaW5nRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4UmVzb3VyY2VMb2FkVGltaW5n
RUVFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE4cmVzb3VyY2VMb2FkVGlt
aW5nRXYKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDMsOCArMjQzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcgogICAgICAgICAuc2V0Q29ubmVjdGlvbklkKHJlc3BvbnNlLmNvbm5lY3Rpb25JRCgpKTsK
IAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRGcm9tRGlza0NhY2hlKHJlc3BvbnNlLndhc0NhY2hl
ZCgpKTsKLSAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpCi0gICAgICAgIHJl
c3BvbnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcoKnJlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpLCBsb2FkZXIpKTsKKyAgICByZXNwb25zZU9iamVjdC0+c2V0VGlt
aW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLCBs
b2FkZXIpKTsKIAogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAkocmV2aXNp
b24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDEwICsxMjAsMTAgQEAgZG91YmxlIFBlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmc6OmRvbWFpbgogICAgIGlmICghbV9zaG91bGRSZXBvcnREZXRh
aWxzKQogICAgICAgICByZXR1cm4gMC4wOwogCi0gICAgaWYgKCFtX3RpbWluZyB8fCBtX3RpbWlu
Zy0+ZG9tYWluTG9va3VwU3RhcnQgPCAwKQorICAgIGlmIChtX3RpbWluZy5kb21haW5Mb29rdXBT
dGFydCA8IDApCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gcmVz
b3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhtX3RpbWluZy0+ZG9tYWluTG9va3VwU3Rh
cnQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGlt
aW5nLmRvbWFpbkxvb2t1cFN0YXJ0KTsKIH0KIAogZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBkb3Vi
bGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6ZG9tYWluCiAgICAgaWYgKCFtX3Nob3VsZFJl
cG9ydERldGFpbHMpCiAgICAgICAgIHJldHVybiAwLjA7CiAKLSAgICBpZiAoIW1fdGltaW5nIHx8
IG1fdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAwKQorICAgIGlmIChtX3RpbWluZy5kb21haW5M
b29rdXBFbmQgPCAwKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAg
IHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLT5kb21h
aW5Mb29rdXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNv
bmRzKG1fdGltaW5nLmRvbWFpbkxvb2t1cEVuZCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nOjpjb25uZWN0U3RhcnQoKSBjb25zdApAQCAtMTQzLDEzICsxNDMsMTMgQEAg
ZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmNvbm5lYwogICAgICAgICByZXR1cm4g
MC4wOwogCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVx
dWVzdCBpcyBub3QgbWFkZS4KLSAgICBpZiAoIW1fdGltaW5nIHx8IG1fdGltaW5nLT5jb25uZWN0
U3RhcnQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0aW9uKQorICAgIGlmIChtX3RpbWluZy5jb25u
ZWN0U3RhcnQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gZG9t
YWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBjb25uZWN0U3RhcnQgaW5jbHVkZXMgYW55IEROUyB0
aW1lLCBzbyB3ZSBtYXkgbmVlZCB0byB0cmltIHRoYXQgb2ZmLgotICAgIGludCBjb25uZWN0U3Rh
cnQgPSBtX3RpbWluZy0+Y29ubmVjdFN0YXJ0OwotICAgIGlmIChtX3RpbWluZy0+ZG9tYWluTG9v
a3VwRW5kID49IDApCi0gICAgICAgIGNvbm5lY3RTdGFydCA9IG1fdGltaW5nLT5kb21haW5Mb29r
dXBFbmQ7CisgICAgaW50IGNvbm5lY3RTdGFydCA9IG1fdGltaW5nLmNvbm5lY3RTdGFydDsKKyAg
ICBpZiAobV90aW1pbmcuZG9tYWluTG9va3VwRW5kID49IDApCisgICAgICAgIGNvbm5lY3RTdGFy
dCA9IG1fdGltaW5nLmRvbWFpbkxvb2t1cEVuZDsKIAogICAgIHJldHVybiByZXNvdXJjZVRpbWVU
b0RvY3VtZW50TWlsbGlzZWNvbmRzKGNvbm5lY3RTdGFydCk7CiB9CkBAIC0xNjAsMTAgKzE2MCwx
MCBAQCBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6Y29ubmVjCiAgICAgICAgIHJl
dHVybiAwLjA7CiAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEgbmV0d29y
ayByZXF1ZXN0IGlzIG5vdCBtYWRlLgotICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmctPmNv
bm5lY3RFbmQgPCAwIHx8IG1fZGlkUmV1c2VDb25uZWN0aW9uKQorICAgIGlmIChtX3RpbWluZy5j
b25uZWN0RW5kIDwgMCB8fCBtX2RpZFJldXNlQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIGNv
bm5lY3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNl
Y29uZHMobV90aW1pbmctPmNvbm5lY3RFbmQpOworICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0Rv
Y3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLmNvbm5lY3RFbmQpOwogfQogCiBkb3VibGUgUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAg
LTE3MSwxMCArMTcxLDEwIEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpzZWN1
cmUKICAgICBpZiAoIW1fc2hvdWxkUmVwb3J0RGV0YWlscykKICAgICAgICAgcmV0dXJuIDAuMDsK
IAotICAgIGlmICghbV90aW1pbmcgfHwgbV90aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8
IDApIC8vIFNlY3VyZSBjb25uZWN0aW9uIG5vdCBuZWdvdGlhdGVkLgorICAgIGlmIChtX3RpbWlu
Zy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPCAwKSAvLyBTZWN1cmUgY29ubmVjdGlvbiBub3QgbmVn
b3RpYXRlZC4KICAgICAgICAgcmV0dXJuIDAuMDsKIAotICAgIHJldHVybiByZXNvdXJjZVRpbWVU
b0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOwor
ICAgIHJldHVybiByZXNvdXJjZVRpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fdGltaW5nLnNl
Y3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMTgyLDEwICsxODIsNyBAQCBkb3VibGUgUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVxdWVzCiAgICAgaWYgKCFtX3Nob3VsZFJlcG9ydERl
dGFpbHMpCiAgICAgICAgIHJldHVybiAwLjA7CiAKLSAgICBpZiAoIW1fdGltaW5nKQotICAgICAg
ICByZXR1cm4gY29ubmVjdEVuZCgpOwotCi0gICAgcmV0dXJuIHJlc291cmNlVGltZVRvRG9jdW1l
bnRNaWxsaXNlY29uZHMobV90aW1pbmctPnJlcXVlc3RTdGFydCk7CisgICAgcmV0dXJuIHJlc291
cmNlVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV90aW1pbmcucmVxdWVzdFN0YXJ0KTsKIH0K
IAogZG91YmxlIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWlu
Zy5oCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
UmVzb3VyY2VUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVO
QUJMRShSRVNPVVJDRV9USU1JTkcpCiAKICNpbmNsdWRlICJQZXJmb3JtYW5jZUVudHJ5LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHJlc291cmNlVGltZVRv
RG9jdW1lbnRNaWxsaXNlY29uZHMoaW50IGRlbHRhTWlsbGlzZWNvbmRzKSBjb25zdDsKIAogICAg
IEF0b21pY1N0cmluZyBtX2luaXRpYXRvclR5cGU7Ci0gICAgUmVmUHRyPFJlc291cmNlTG9hZFRp
bWluZz4gbV90aW1pbmc7CisgICAgUmVzb3VyY2VMb2FkVGltaW5nIG1fdGltaW5nOwogICAgIGRv
dWJsZSBtX2ZpbmlzaFRpbWU7CiAgICAgYm9vbCBtX2RpZFJldXNlQ29ubmVjdGlvbjsKICAgICBi
b29sIG1fc2hvdWxkUmVwb3J0RGV0YWlsczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuY3BwCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDMyICsxMjQs
MzQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpmZQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KCkgY29uc3QK
IHsKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygp
OwotICAgIGlmICghdGltaW5nKQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBkb2N1bWVu
dExvYWRlcigpOworICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCgp
OwotCisgICAgCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXIt
PnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAgLy8gVGhpcyB3aWxs
IGJlIC0xIHdoZW4gYSBETlMgcmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhl
ciB0aGFuIGV4cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdl
ICJiYWNrZmlsbCIgd2l0aCBmZXRjaFN0YXJ0LgotICAgIGludCBkb21haW5Mb29rdXBTdGFydCA9
IHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgaWYgKGRvbWFpbkxvb2t1cFN0YXJ0IDwg
MCkKKyAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0IDwgMCkKICAgICAgICAgcmV0dXJu
IGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fi
c29sdXRlKGRvbWFpbkxvb2t1cFN0YXJ0KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJl
bGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CiB7
Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmcoKTsK
LSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnRM
b2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0
YXJ0KCk7Ci0KKyAgICAKKyAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAgICAKICAgICAvLyBUaGlz
IHdpbGwgYmUgLTEgd2hlbiBhIEROUyByZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAgICAgLy8g
UmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIG5vIERO
Uywgd2UgImJhY2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cFN0YXJ0LgotICAgIGludCBkb21haW5M
b29rdXBFbmQgPSB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZDsKLSAgICBpZiAoZG9tYWluTG9va3Vw
RW5kIDwgMCkKKyAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA8IDApCiAgICAgICAgIHJl
dHVybiBkb21haW5Mb29rdXBTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVS
ZWxhdGl2ZVRvQWJzb2x1dGUoZG9tYWluTG9va3VwRW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VM
b2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmcuZG9tYWluTG9va3VwRW5kKTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQoKSBjb25z
dApAQCAtMTU4LDIwICsxNjAsMTggQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpjbwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5k
KCk7CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2Uo
KS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKLSAgICAgICAgcmV0dXJu
IGRvbWFpbkxvb2t1cEVuZCgpOwotCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1p
bmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAgICAg
Ly8gY29ubmVjdFN0YXJ0IHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3Qg
bWFkZS4KICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBp
bmRpY2F0ZXMgbm8gbmV3IGNvbm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBkb21haW5Mb29r
dXBFbmQuCi0gICAgaW50IGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29ubmVjdFN0YXJ0OworICAg
IGludCBjb25uZWN0U3RhcnQgPSB0aW1pbmcuY29ubmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0
U3RhcnQgPCAwIHx8IGxvYWRlci0+cmVzcG9uc2UoKS5jb25uZWN0aW9uUmV1c2VkKCkpCiAgICAg
ICAgIHJldHVybiBkb21haW5Mb29rdXBFbmQoKTsKIAogICAgIC8vIFJlc291cmNlTG9hZFRpbWlu
ZydzIGNvbm5lY3QgcGhhc2UgaW5jbHVkZXMgRE5TLCBob3dldmVyIE5hdmlnYXRpb24gVGltaW5n
J3MKICAgICAvLyBjb25uZWN0IHBoYXNlIHNob3VsZCBub3QuIFNvIGlmIHRoZXJlIGlzIEROUyB0
aW1lLCB0cmltIGl0IGZyb20gdGhlIHN0YXJ0LgotICAgIGlmICh0aW1pbmctPmRvbWFpbkxvb2t1
cEVuZCA+PSAwICYmIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID4gY29ubmVjdFN0YXJ0KQotICAg
ICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZDsKKyAgICBpZiAodGlt
aW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25u
ZWN0U3RhcnQpCisgICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7
CiAKICAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShjb25uZWN0
U3RhcnQpOwogfQpAQCAtMTgyLDE3ICsxODIsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZv
cm1hbmNlVGltaW5nOjpjbwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVj
dFN0YXJ0KCk7CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IGxvYWRlci0+cmVz
cG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKLSAgICAgICAg
cmV0dXJuIGNvbm5lY3RTdGFydCgpOwotCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCiAg
ICAgLy8gY29ubmVjdEVuZCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3QgaXMgbm90
IG1hZGUuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQg
aW5kaWNhdGVzIG5vIG5ldyBjb25uZWN0aW9uLCB3ZSAiYmFja2ZpbGwiIHdpdGggY29ubmVjdFN0
YXJ0LgotICAgIGludCBjb25uZWN0RW5kID0gdGltaW5nLT5jb25uZWN0RW5kOwotICAgIGlmIChj
b25uZWN0RW5kIDwgMCB8fCBsb2FkZXItPnJlc3BvbnNlKCkuY29ubmVjdGlvblJldXNlZCgpKQor
ICAgIGlmICh0aW1pbmcuY29ubmVjdEVuZCA8IDAgfHwgbG9hZGVyLT5yZXNwb25zZSgpLmNvbm5l
Y3Rpb25SZXVzZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgcmV0
dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoY29ubmVjdEVuZCk7CisgICAg
cmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUodGltaW5nLmNvbm5lY3RF
bmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNv
bm5lY3Rpb25TdGFydCgpIGNvbnN0CkBAIC0yMDEsMzUgKzE5OCwzNiBAQCB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSBsb2FkZXItPnJlc3Bv
bnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgaWYgKCF0aW1pbmcpCisgICAgY29uc3Qg
UmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VM
b2FkVGltaW5nKCk7CisgICAgCisgICAgaWYgKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQg
PCAwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGludCBzZWN1cmVDb25uZWN0aW9uU3RhcnQg
PSB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICBpZiAoc2VjdXJlQ29ubmVjdGlv
blN0YXJ0IDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2VMb2Fk
VGltZVJlbGF0aXZlVG9BYnNvbHV0ZShzZWN1cmVDb25uZWN0aW9uU3RhcnQpOworICAgIHJldHVy
biByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKHRpbWluZy5zZWN1cmVDb25uZWN0
aW9uU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJl
cXVlc3RTdGFydCgpIGNvbnN0CiB7Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSBy
ZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRl
ciogbG9hZGVyID0gZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbm5lY3RFbmQoKTsKLQotICAgIEFTU0VSVCh0aW1pbmctPnJlcXVlc3RTdGFydCA+
PSAwKTsKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1p
bmctPnJlcXVlc3RTdGFydCk7CisgICAgCisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkucmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgCisg
ICAgQVNTRVJUKHRpbWluZy5yZXF1ZXN0U3RhcnQgPj0gMCk7CisgICAgcmV0dXJuIHJlc291cmNl
TG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUodGltaW5nLnJlcXVlc3RTdGFydCk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0
CiB7Ci0gICAgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcgPSByZXNvdXJjZUxvYWRUaW1pbmco
KTsKLSAgICBpZiAoIXRpbWluZykKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1l
bnRMb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIHJlcXVlc3RTdGFy
dCgpOwogCi0gICAgQVNTRVJUKHRpbWluZy0+cmVzcG9uc2VTdGFydCA+PSAwKTsKLSAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZSh0aW1pbmctPnJlc3BvbnNlU3Rh
cnQpOworICAgIGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nID0gbG9hZGVyLT5yZXNw
b25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOworICAgIAorICAgIEFTU0VSVCh0aW1pbmcucmVz
cG9uc2VTdGFydCA+PSAwKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9B
YnNvbHV0ZSh0aW1pbmcucmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApAQCAtMzMzLDE1ICszMzEsNiBA
QCBEb2N1bWVudExvYWRUaW1pbmcqIFBlcmZvcm1hbmNlVGltaW5nOjpkCiAgICAgcmV0dXJuIGxv
YWRlci0+dGltaW5nKCk7CiB9CiAKLVJlc291cmNlTG9hZFRpbWluZyogUGVyZm9ybWFuY2VUaW1p
bmc6OnJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0Ci17Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciA9IGRvY3VtZW50TG9hZGVyKCk7Ci0gICAgaWYgKCFsb2FkZXIpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIGxvYWRlci0+cmVzcG9uc2UoKS5yZXNvdXJjZUxvYWRUaW1pbmco
KTsKLX0KLQogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0Fic29sdXRlKGludCByZWxhdGl2ZU1pbGxpc2Vjb25kcykgY29uc3QK
IHsKICAgICBBU1NFUlQocmVsYXRpdmVNaWxsaXNlY29uZHMgPj0gMCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBEb2N1bWVudFRpbWluZyogZG9jdW1lbnRU
aW1pbmcoKSBjb25zdDsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25z
dDsKICAgICBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0Owot
ICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUoaW50
KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW9ub3RvbmljVGltZVRvSW50ZWdlck1p
bGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAkocmV2aXNpb24gMTY4
NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1p
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAsNDAgKzIxLDUwIEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpZm5kZWYgUmVzb3VyY2VMb2FkVGltaW5nX2gKICNkZWZpbmUgUmVzb3VyY2VMb2FkVGltaW5n
X2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nOwotCi1jbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmcgOiBw
dWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1pbmc+IHsKKyAgICAKK2NsYXNzIFJlc291
cmNlTG9hZFRpbWluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VM
b2FkVGltaW5nPiBjcmVhdGUoKQorICAgIFJlc291cmNlTG9hZFRpbWluZygpCisgICAgICAgIDog
ZG9tYWluTG9va3VwU3RhcnQoLTEpCisgICAgICAgICwgZG9tYWluTG9va3VwRW5kKC0xKQorICAg
ICAgICAsIGNvbm5lY3RTdGFydCgtMSkKKyAgICAgICAgLCBjb25uZWN0RW5kKC0xKQorICAgICAg
ICAsIHJlcXVlc3RTdGFydCgwKQorICAgICAgICAsIHJlc3BvbnNlU3RhcnQoMCkKKyAgICAgICAg
LCBzZWN1cmVDb25uZWN0aW9uU3RhcnQoLTEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlc291cmNlTG9hZFRpbWluZyk7CiAgICAgfQotCi0gICAgUGFzc1JlZlB0cjxSZXNv
dXJjZUxvYWRUaW1pbmc+IGRlZXBDb3B5KCkKKyAgICAKKyAgICBSZXNvdXJjZUxvYWRUaW1pbmco
Y29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikKKyAgICAgICAgOiBkb21haW5Mb29rdXBT
dGFydChvdGhlci5kb21haW5Mb29rdXBTdGFydCkKKyAgICAgICAgLCBkb21haW5Mb29rdXBFbmQo
b3RoZXIuZG9tYWluTG9va3VwRW5kKQorICAgICAgICAsIGNvbm5lY3RTdGFydChvdGhlci5jb25u
ZWN0U3RhcnQpCisgICAgICAgICwgY29ubmVjdEVuZChvdGhlci5jb25uZWN0RW5kKQorICAgICAg
ICAsIHJlcXVlc3RTdGFydChvdGhlci5yZXF1ZXN0U3RhcnQpCisgICAgICAgICwgcmVzcG9uc2VT
dGFydChvdGhlci5yZXNwb25zZVN0YXJ0KQorICAgICAgICAsIHNlY3VyZUNvbm5lY3Rpb25TdGFy
dChvdGhlci5zZWN1cmVDb25uZWN0aW9uU3RhcnQpCiAgICAgewotICAgICAgICBSZWZQdHI8UmVz
b3VyY2VMb2FkVGltaW5nPiB0aW1pbmcgPSBjcmVhdGUoKTsKLSAgICAgICAgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0OwotICAgICAgICB0aW1pbmctPmRvbWFp
bkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZDsKLSAgICAgICAgdGltaW5nLT5jb25uZWN0U3Rh
cnQgPSBjb25uZWN0U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IGNvbm5lY3RF
bmQ7Ci0gICAgICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0OwotICAgICAg
ICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0OwotICAgICAgICB0aW1pbmct
PnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICAgICAg
cmV0dXJuIHRpbWluZy5yZWxlYXNlKCk7CiAgICAgfQotCisgICAgCisgICAgUmVzb3VyY2VMb2Fk
VGltaW5nJiBvcGVyYXRvcj0oY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikKKyAgICB7
CisgICAgICAgIGRvbWFpbkxvb2t1cFN0YXJ0ID0gb3RoZXIuZG9tYWluTG9va3VwU3RhcnQ7Cisg
ICAgICAgIGRvbWFpbkxvb2t1cEVuZCA9IG90aGVyLmRvbWFpbkxvb2t1cEVuZDsKKyAgICAgICAg
Y29ubmVjdFN0YXJ0ID0gb3RoZXIuY29ubmVjdFN0YXJ0OworICAgICAgICBjb25uZWN0RW5kID0g
b3RoZXIuY29ubmVjdEVuZDsKKyAgICAgICAgcmVxdWVzdFN0YXJ0ID0gb3RoZXIucmVxdWVzdFN0
YXJ0OworICAgICAgICByZXNwb25zZVN0YXJ0ID0gb3RoZXIucmVzcG9uc2VTdGFydDsKKyAgICAg
ICAgc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gb3RoZXIuc2VjdXJlQ29ubmVjdGlvblN0YXJ0Owor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0CkBAIC03OCwx
OCArODksNiBAQCBwdWJsaWM6CiAgICAgaW50IHJlcXVlc3RTdGFydDsKICAgICBpbnQgcmVzcG9u
c2VTdGFydDsKICAgICBpbnQgc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgIAotcHJpdmF0ZToK
LSAgICBSZXNvdXJjZUxvYWRUaW1pbmcoKQotICAgICAgICA6IGRvbWFpbkxvb2t1cFN0YXJ0KC0x
KQotICAgICAgICAsIGRvbWFpbkxvb2t1cEVuZCgtMSkKLSAgICAgICAgLCBjb25uZWN0U3RhcnQo
LTEpCi0gICAgICAgICwgY29ubmVjdEVuZCgtMSkKLSAgICAgICAgLCByZXF1ZXN0U3RhcnQoMCkK
LSAgICAgICAgLCByZXNwb25zZVN0YXJ0KDApCi0gICAgICAgICwgc2VjdXJlQ29ubmVjdGlvblN0
YXJ0KC0xKQotICAgIHsKLSAgICB9CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2
aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBQYXNz
T3duUHRyPFJlc291cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzCiAKICAgICByZXNwb25zZS0+bGF6
eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFk
ZXJGaWVsZHMuYWRvcHQoZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpOwotICAgIHJlc3Bv
bnNlLT5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcucmVs
ZWFzZSgpKTsKKyAgICByZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEtPm1fcmVz
b3VyY2VMb2FkVGltaW5nKTsKICAgICByZXNwb25zZS0+ZG9QbGF0Zm9ybUFkb3B0KGRhdGEpOwog
ICAgIHJldHVybiByZXNwb25zZS5yZWxlYXNlKCk7CiB9CkBAIC0xMjIsOCArMTIyLDcgQEAgUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYQogICAgIGRhdGEtPm1faHR0cFN0
YXR1c0NvZGUgPSBodHRwU3RhdHVzQ29kZSgpOwogICAgIGRhdGEtPm1faHR0cFN0YXR1c1RleHQg
PSBodHRwU3RhdHVzVGV4dCgpLmlzb2xhdGVkQ29weSgpOwogICAgIGRhdGEtPm1faHR0cEhlYWRl
cnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsKLSAgICBpZiAobV9yZXNvdXJjZUxv
YWRUaW1pbmcpCi0gICAgICAgIGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5nID0gbV9yZXNvdXJj
ZUxvYWRUaW1pbmctPmRlZXBDb3B5KCk7CisgICAgZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcg
PSBtX3Jlc291cmNlTG9hZFRpbWluZzsKICAgICByZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCku
ZG9QbGF0Zm9ybUNvcHlEYXRhKGRhdGEucmVsZWFzZSgpKTsKIH0KIApAQCAtNTUxLDE0ICs1NTAs
MTQgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbgogICAgIG1fY29u
bmVjdGlvbklEID0gY29ubmVjdGlvbklEOwogfQogCi1SZXNvdXJjZUxvYWRUaW1pbmcqIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdAorUmVzb3VyY2VMb2Fk
VGltaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QK
IHsKICAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKLSAgICByZXR1cm4g
bV9yZXNvdXJjZUxvYWRUaW1pbmcuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VMb2FkVGlt
aW5nOwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRUaW1p
bmcoUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IHJlc291cmNlTG9hZFRpbWluZykKK3Zv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNv
dXJjZUxvYWRUaW1pbmcmIHJlc291cmNlTG9hZFRpbWluZykKIHsKICAgICBsYXp5SW5pdChDb21t
b25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKQEAgLTU5MCw4ICs1ODksNiBAQCBib29sIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb21wYXJlKGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5yZXNvdXJjZUxvYWRUaW1pbmcoKSAmJiBiLnJlc291
cmNlTG9hZFRpbWluZygpICYmICphLnJlc291cmNlTG9hZFRpbWluZygpID09ICpiLnJlc291cmNl
TG9hZFRpbWluZygpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGEsIGIpOwogICAgIGlmIChhLnJlc291cmNlTG9hZFRpbWluZygpICE9IGIucmVzb3Vy
Y2VMb2FkVGltaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2
aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgd2FzQ2FjaGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXYXNDYWNoZWQoYm9v
bCk7CiAKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0
OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkVGltaW5nKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2Fk
VGltaW5nPik7CisgICAgUmVzb3VyY2VMb2FkVGltaW5nJiByZXNvdXJjZUxvYWRUaW1pbmcoKSBj
b25zdDsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRU
aW1pbmcmKTsKIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hh
ZG93IiB0aGlzIG1ldGhvZCB0byBwcm92aWRlIHBsYXRmb3JtLXNwZWNpZmljIG1lbW9yeSB1c2Fn
ZSBpbmZvcm1hdGlvbgogICAgIHVuc2lnbmVkIG1lbW9yeVVzYWdlKCkgY29uc3QKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAg
ICAgQXRvbWljU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgSFRUUEhlYWRlck1hcCBtX2h0
dHBIZWFkZXJGaWVsZHM7Ci0gICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gbV9yZXNvdXJj
ZUxvYWRUaW1pbmc7CisgICAgbXV0YWJsZSBSZXNvdXJjZUxvYWRUaW1pbmcgbV9yZXNvdXJjZUxv
YWRUaW1pbmc7CiAKICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKICAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25JRDsKQEAgLTE5Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgaW50IG1faHR0cFN0
YXR1c0NvZGU7CiAgICAgU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgT3duUHRyPENyb3Nz
VGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7Ci0gICAgUmVmUHRyPFJlc291
cmNlTG9hZFRpbWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CisgICAgUmVzb3VyY2VMb2FkVGlt
aW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lv
biAxNjg2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsOSArMTgx
LDYgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShyKTsKICNpZiBFTkFCTEUoV0VCX1RJTUlORykK
ICAgICBpZiAoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhID0gW2Nvbm5lY3Rpb24gX3RpbWluZ0Rh
dGFdKSB7Ci0gICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2FkVGltaW5nKFJl
c291cmNlTG9hZFRpbWluZzo6Y3JlYXRlKCkpOwotICAgICAgICBSZXNvdXJjZUxvYWRUaW1pbmcq
IHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgICAg
IAogICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgbmF2aWdhdGlvblN0YXJ0IHRpbWUgaW4gbW9u
b3RvbmljIHRpbWUsIGJ1dCB0aGUgb3RoZXIgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGlt
ZQogICAgICAgICAvLyBhbmQgb25seSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aW1lcyBhcmUg
c3RvcmVkLgogICAgICAgICBkb3VibGUgcmVmZXJlbmNlU3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFs
dWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFUaW1pbmdEYXRhSW5pdCJdIGRvdWJsZVZhbHVlXTsK
QEAgLTE5NiwxNSArMTkzLDE0IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9u
ICopY28KICAgICAgICAgZG91YmxlIHJlcXVlc3RTdGFydCA9IFtbdGltaW5nRGF0YSB2YWx1ZUZv
cktleTpAIl9rQ0ZOVGltaW5nRGF0YVJlcXVlc3RTdGFydCJdIGRvdWJsZVZhbHVlXTsKICAgICAg
ICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NG
TlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Il0gZG91YmxlVmFsdWVdOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHRpbWluZykgewotICAgICAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9
IGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVm
ZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5k
ID0gZG9tYWluTG9va3VwRW5kIDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVy
ZW5jZVN0YXJ0KSAqIDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IGNv
bm5lY3RTdGFydCA8PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkg
KiAxMDAwOwotICAgICAgICAgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1
cmVDb25uZWN0aW9uU3RhcnQgPD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0g
cmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9
IGNvbm5lY3RFbmQgPD0gMC4wID8gLTEgOiAoY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAq
IDEwMDA7Ci0gICAgICAgICAgICB0aW1pbmctPnJlcXVlc3RTdGFydCA9IHJlcXVlc3RTdGFydCA8
PSAwLjAgPyAtMSA6IChyZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAg
ICAgICAgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydCA8PSAwLjAgPyAt
MSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAgICAgICAgfQor
ICAgICAgICBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCk7CisgICAgICAgIHRpbWluZy5kb21haW5Mb29rdXBTdGFydCA9IGRv
bWFpbkxvb2t1cFN0YXJ0IDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJl
bmNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFp
bkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFy
dCkgKiAxMDAwOworICAgICAgICB0aW1pbmcuY29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0IDw9
IDAuMCA/IC0xIDogKGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAg
ICAgIHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBzZWN1cmVDb25uZWN0aW9uU3RhcnQg
PD0gMC4wID8gLTEgOiAoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICog
MTAwMDsKKyAgICAgICAgdGltaW5nLmNvbm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/IC0x
IDogKGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICB0aW1pbmcu
cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0IDw9IDAuMCA/IC0xIDogKHJlcXVlc3RTdGFydCAt
IHJlZmVyZW5jZVN0YXJ0KSAqIDEwMDA7CisgICAgICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0ID0g
cmVzcG9uc2VTdGFydCA8PSAwLjAgPyAtMSA6IChyZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3Rh
cnQpICogMTAwMDsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDkgKzIyMyw2IEBAIC0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNvdXJjZVJlc3BvbnNlKHIpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgICAgICBp
ZiAoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhID0gW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdKSB7
Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhSZXNv
dXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKLSAgICAgICAgICAgIFJlc291cmNlTG9hZFRpbWlu
ZyogdGltaW5nID0gcmVzb3VyY2VSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKLSAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRpb25TdGFydCB0
aW1lIGluIG1vbm90b25pYyB0aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSByZWxhdGl2ZSB0
byB0aGlzIHRpbWUKICAgICAgICAgICAgIC8vIGFuZCBvbmx5IHRoZSBkaWZmZXJlbmNlcyBiZXR3
ZWVuIHRpbWVzIGFyZSBzdG9yZWQuCiAgICAgICAgICAgICBkb3VibGUgcmVmZXJlbmNlU3RhcnQg
PSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFUaW1pbmdEYXRhSW5p
dCJdIGRvdWJsZVZhbHVlXTsKQEAgLTIzOCwxNSArMjM1LDE0IEBAIC0gKHZvaWQpY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICAgICAgICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQg
PSBbW3RpbWluZ0RhdGEgdmFsdWVGb3JLZXk6QCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQi
XSBkb3VibGVWYWx1ZV07CiAgICAgICAgICAgICBkb3VibGUgcmVzcG9uc2VTdGFydCA9IFtbdGlt
aW5nRGF0YSB2YWx1ZUZvcktleTpAIl9rQ0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQiXSBkb3Vi
bGVWYWx1ZV07CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh0aW1pbmcpIHsKLSAgICAg
ICAgICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQg
PD0gMC4wID8gLTEgOiAoZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAw
OwotICAgICAgICAgICAgICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gZG9tYWluTG9va3Vw
RW5kIDw9IDAuMCA/IC0xIDogKGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEw
MDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQg
PD0gMC4wID8gLTEgOiAoY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAg
ICAgICAgICAgICAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IHNlY3VyZUNvbm5l
Y3Rpb25TdGFydCA8PSAwLjAgPyAtMSA6IChzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVu
Y2VTdGFydCkgKiAxMDAwOwotICAgICAgICAgICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IGNv
bm5lY3RFbmQgPD0gMC4wID8gLTEgOiAoY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KSAqIDEw
MDA7Ci0gICAgICAgICAgICAgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQgPSByZXF1ZXN0U3RhcnQg
PD0gMC4wID8gLTEgOiAocmVxdWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpICogMTAwMDsKLSAg
ICAgICAgICAgICAgICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9IDAu
MCA/IC0xIDogKHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSByZXNvdXJj
ZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOworICAgICAgICAgICAgdGltaW5nLmRvbWFp
bkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQgPD0gMC4wID8gLTEgOiAoZG9tYWluTG9v
a3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLmRv
bWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZCA8PSAwLjAgPyAtMSA6IChkb21haW5Mb29r
dXBFbmQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLmNvbm5l
Y3RTdGFydCA9IGNvbm5lY3RTdGFydCA8PSAwLjAgPyAtMSA6IChjb25uZWN0U3RhcnQgLSByZWZl
cmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA9IHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8PSAwLjAgPyAtMSA6IChzZWN1cmVDb25uZWN0
aW9uU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLmNv
bm5lY3RFbmQgPSBjb25uZWN0RW5kIDw9IDAuMCA/IC0xIDogKGNvbm5lY3RFbmQgLSByZWZlcmVu
Y2VTdGFydCkgKiAxMDAwOworICAgICAgICAgICAgdGltaW5nLnJlcXVlc3RTdGFydCA9IHJlcXVl
c3RTdGFydCA8PSAwLjAgPyAtMSA6IChyZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAx
MDAwOworICAgICAgICAgICAgdGltaW5nLnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0IDw9
IDAuMCA/IC0xIDogKHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VTdGFydCkgKiAxMDAwOwogICAg
ICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMTY4NjQ3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4Miw5ICszODIsNiBAQCBzdGF0aWMgdm9pZCByZXN0YXJ0ZWRDYWxsYmFjayhTb3Vw
TWVzc2FnCiAgICAgaWYgKCFoYW5kbGUgfHwgaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhh
bmRsZS0+Z2V0SW50ZXJuYWwoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlID0gZC0+bV9yZXNwb25zZTsKLSAgICByZWRpcmVjdFJlc3BvbnNlLnNldFJlc291cmNlTG9h
ZFRpbWluZyhSZXNvdXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSgpKTsKICAgICBoYW5kbGUtPm1fcmVx
dWVzdFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIH0KICNlbmRpZgpAQCAt
ODM1LDExICs4MzIsNyBAQCBzdGF0aWMgaW50IG1pbGlzZWNvbmRzU2luY2VSZXF1ZXN0KGRvdWJs
CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFN0YXJ0UmVxdWVzdCgpCiB7Ci0gICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7Ci0gICAgaWYgKCFkLT5tX3Jlc3Bv
bnNlLnJlc291cmNlTG9hZFRpbWluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkLT5tX3Jl
c3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5yZXF1ZXN0U3RhcnQgPSBtaWxpc2Vjb25kc1Np
bmNlUmVxdWVzdChtX3JlcXVlc3RUaW1lKTsKKyAgICBnZXRJbnRlcm5hbCgpLT5tX3Jlc3BvbnNl
LnJlc291cmNlTG9hZFRpbWluZygpLnJlcXVlc3RTdGFydCA9IG1pbGlzZWNvbmRzU2luY2VSZXF1
ZXN0KG1fcmVxdWVzdFRpbWUpOwogfQogCiBzdGF0aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxsYmFj
ayhTb3VwTWVzc2FnZSosIEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR0lPU3RyZWFtKiwgZ3Bv
aW50ZXIgZGF0YSkKQEAgLTg1NSwyMSArODQ4LDIxIEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtFdmVu
dENhbGxiYWNrKFNvdXBNZXMKICAgICBpbnQgZGVsdGFUaW1lID0gbWlsaXNlY29uZHNTaW5jZVJl
cXVlc3QoaGFuZGxlLT5tX3JlcXVlc3RUaW1lKTsKICAgICBzd2l0Y2ggKGV2ZW50KSB7CiAgICAg
Y2FzZSBHX1NPQ0tFVF9DTElFTlRfUkVTT0xWSU5HOgotICAgICAgICBkLT5tX3Jlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBTdGFydCA9IGRlbHRhVGltZTsKKyAgICAg
ICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5kb21haW5Mb29rdXBTdGFydCA9
IGRlbHRhVGltZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHX1NPQ0tFVF9DTElFTlRfUkVT
T0xWRUQ6Ci0gICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPmRvbWFp
bkxvb2t1cEVuZCA9IGRlbHRhVGltZTsKKyAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxv
YWRUaW1pbmcoKS5kb21haW5Mb29rdXBFbmQgPSBkZWx0YVRpbWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX0NPTk5FQ1RJTkc6Ci0gICAgICAgIGQtPm1fcmVzcG9u
c2UucmVzb3VyY2VMb2FkVGltaW5nKCktPmNvbm5lY3RTdGFydCA9IGRlbHRhVGltZTsKLSAgICAg
ICAgaWYgKGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCktPmRvbWFpbkxvb2t1cFN0
YXJ0ICE9IC0xKSB7CisgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCku
Y29ubmVjdFN0YXJ0ID0gZGVsdGFUaW1lOworICAgICAgICBpZiAoZC0+bV9yZXNwb25zZS5yZXNv
dXJjZUxvYWRUaW1pbmcoKS5kb21haW5Mb29rdXBTdGFydCAhPSAtMSkgewogICAgICAgICAgICAg
Ly8gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RUaW1pbmdWaWV3LmpzIGFzc3Vt
ZXMKICAgICAgICAgICAgIC8vIHRoYXQgRE5TIHRpbWUgaXMgaW5jbHVkZWQgaW4gY29ubmVjdGlv
biB0aW1lIHNvIG11c3QKICAgICAgICAgICAgIC8vIHN1YnN0cmFjdCBoZXJlIHRoZSBETlMgZGVs
dGEgdGhhdCB3aWxsIGJlIGFkZGVkIGxhdGVyIChzZWUKICAgICAgICAgICAgIC8vIFdlYkluc3Bl
Y3Rvci5SZXF1ZXN0VGltaW5nVmlldy5jcmVhdGVUaW1pbmdUYWJsZSBpbiB0aGUKICAgICAgICAg
ICAgIC8vIGZpbGUgYWJvdmUgZm9yIG1vcmUgZGV0YWlscykuCi0gICAgICAgICAgICBkLT5tX3Jl
c3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5jb25uZWN0U3RhcnQgLT0KLSAgICAgICAgICAg
ICAgICBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBFbmQg
LSBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLT5kb21haW5Mb29rdXBTdGFydDsK
KyAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkuY29ubmVjdFN0
YXJ0IC09CisgICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KS5kb21haW5Mb29rdXBFbmQgLSBkLT5tX3Jlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLmRv
bWFpbkxvb2t1cFN0YXJ0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR19T
T0NLRVRfQ0xJRU5UX0NPTk5FQ1RFRDoKQEAgLTg4MSwxMiArODc0LDEyIEBAIHN0YXRpYyB2b2lk
IG5ldHdvcmtFdmVudENhbGxiYWNrKFNvdXBNZXMKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9Q
Uk9YWV9ORUdPVElBVEVEOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVO
VF9UTFNfSEFORFNIQUtJTkc6Ci0gICAgICAgIGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGlt
aW5nKCktPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IGRlbHRhVGltZTsKKyAgICAgICAgZC0+bV9y
ZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBkZWx0
YVRpbWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR19TT0NLRVRfQ0xJRU5UX1RMU19IQU5E
U0hBS0VEOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEdfU09DS0VUX0NMSUVOVF9DT01QTEVU
RToKLSAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+Y29ubmVjdEVu
ZCA9IGRlbHRhVGltZTsKKyAgICAgICAgZC0+bV9yZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmco
KS5jb25uZWN0RW5kID0gZGVsdGFUaW1lOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk0Miw3ICs5MzUsNiBAQCBzdGF0aWMg
Ym9vbCBjcmVhdGVTb3VwTWVzc2FnZUZvckhhbmRsZUFuCiAgICAgc291cF9tZXNzYWdlX3NldF9m
bGFncyhkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCBzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdz
Pihzb3VwX21lc3NhZ2VfZ2V0X2ZsYWdzKGQtPm1fc291cE1lc3NhZ2UuZ2V0KCkpIHwgU09VUF9N
RVNTQUdFX05PX1JFRElSRUNUKSk7CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBkLT5t
X3Jlc3BvbnNlLnNldFJlc291cmNlTG9hZFRpbWluZyhSZXNvdXJjZUxvYWRUaW1pbmc6OmNyZWF0
ZSgpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3
b3JrLWV2ZW50IiwgR19DQUxMQkFDSyhuZXR3b3JrRXZlbnRDYWxsYmFjayksIGhhbmRsZSk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCAicmVzdGFydGVkIiwg
R19DQUxMQkFDSyhyZXN0YXJ0ZWRDYWxsYmFjayksIGhhbmRsZSk7CiAjZW5kaWYKQEAgLTEwMTcs
OCArMTAwOSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnNlbmRQZW5kaW5nUmVxdWVzdCgpCiB7CiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0g
ICAgaWYgKGQtPm1fcmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpCi0gICAgICAgIG1fcmVx
dWVzdFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX3JlcXVlc3RU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAjZW5kaWYKIAogICAgIGlmIChk
LT5tX2ZpcnN0UmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSA+IDApIHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE2ODY1NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA1LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHJlZmVyZW5jZXMgaW5zdGVhZCBv
ZiBwb2ludGVycyB3aXRoIFJlc291cmNlTG9hZFRpbWluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRl
Y29kZSk6CisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgYW5kIG51
bGwgY2hlY2tzLgorCiAyMDE0LTA1LTEyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIFRyaXBsZS1idWZmZXIgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCShyZXZpc2lvbiAxNjg2NDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkwLDE4ICs2OTAsMTQgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbgogICAgIH0KICAgICAKICNpZiBF
TkFCTEUoV0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRpbWluZyA9IHJlc291
cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgYm9vbCBoYXNSZXNvdXJjZUxv
YWRUaW1pbmcgPSB0aW1pbmc7Ci0gICAgZW5jb2RlciA8PCBoYXNSZXNvdXJjZUxvYWRUaW1pbmc7
Ci0gICAgaWYgKGhhc1Jlc291cmNlTG9hZFRpbWluZykgewotICAgICAgICBlbmNvZGVyIDw8IHRp
bWluZy0+ZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5kb21h
aW5Mb29rdXBFbmQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5jb25uZWN0U3RhcnQ7Ci0g
ICAgICAgIGVuY29kZXIgPDwgdGltaW5nLT5jb25uZWN0RW5kOwotICAgICAgICBlbmNvZGVyIDw8
IHRpbWluZy0+cmVxdWVzdFN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IHRpbWluZy0+cmVzcG9u
c2VTdGFydDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFy
dDsKLSAgICB9CisgICAgY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcgPSByZXNvdXJj
ZVJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOworICAgIGVuY29kZXIgPDwgdGltaW5nLmRv
bWFpbkxvb2t1cFN0YXJ0OworICAgIGVuY29kZXIgPDwgdGltaW5nLmRvbWFpbkxvb2t1cEVuZDsK
KyAgICBlbmNvZGVyIDw8IHRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAgZW5jb2RlciA8PCB0aW1p
bmcuY29ubmVjdEVuZDsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5yZXF1ZXN0U3RhcnQ7CisgICAg
ZW5jb2RlciA8PCB0aW1pbmcucmVzcG9uc2VTdGFydDsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5z
ZWN1cmVDb25uZWN0aW9uU3RhcnQ7CiAjZW5kaWYKIH0KIApAQCAtNzcyLDIxICs3NjgsMTUgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZQogICAgIH0KICAgICAKICNp
ZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBib29sIGhhc1Jlc291cmNlTG9hZFRpbWluZzsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1Jlc291cmNlTG9hZFRpbWluZykpCisgICAgUmVzb3Vy
Y2VMb2FkVGltaW5nJiB0aW1pbmcgPSByZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpbWluZy5kb21haW5Mb29rdXBTdGFydCkKKyAgICAgICAg
fHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5kb21haW5Mb29rdXBFbmQpCisgICAgICAgIHx8ICFk
ZWNvZGVyLmRlY29kZSh0aW1pbmcuY29ubmVjdFN0YXJ0KQorICAgICAgICB8fCAhZGVjb2Rlci5k
ZWNvZGUodGltaW5nLmNvbm5lY3RFbmQpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1p
bmcucmVxdWVzdFN0YXJ0KQorICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLnJlc3Bv
bnNlU3RhcnQpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcuc2VjdXJlQ29ubmVj
dGlvblN0YXJ0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChoYXNSZXNvdXJjZUxv
YWRUaW1pbmcpIHsKLSAgICAgICAgcmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2FkVGltaW5nKFJlc291
cmNlTG9hZFRpbWluZzo6Y3JlYXRlKCkpOwotICAgICAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHRp
bWluZyA9IHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQpCi0gICAgICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUodGltaW5nLT5kb21haW5Mb29rdXBFbmQpCi0gICAgICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUodGltaW5nLT5jb25uZWN0U3RhcnQpCi0gICAgICAgICAgICB8fCAhZGVjb2Rl
ci5kZWNvZGUodGltaW5nLT5jb25uZWN0RW5kKQotICAgICAgICAgICAgfHwgIWRlY29kZXIuZGVj
b2RlKHRpbWluZy0+cmVxdWVzdFN0YXJ0KQotICAgICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2Rl
KHRpbWluZy0+cmVzcG9uc2VTdGFydCkKLSAgICAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0
aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQogI2VuZGlmCiAKICAgICByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7Cg==
</data>
<flag name="review"
          id="255852"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>