<?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>142612</bug_id>
          
          <creation_ts>2015-03-11 23:08:26 -0700</creation_ts>
          <short_desc>XMLHttpRequests should not prevent a page from entering PageCache</short_desc>
          <delta_ts>2015-04-07 17:28:14 -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>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=143505</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076569</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-11 23:08:26 -0700</bug_when>
    <thetext>XMLHttpRequests should not prevent a page from entering PageCache.

Radar: &lt;rdar://problem/19923085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076573</commentid>
    <comment_count>1</comment_count>
      <attachid>248495</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-11 23:22:05 -0700</bug_when>
    <thetext>Created attachment 248495
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076745</commentid>
    <comment_count>2</comment_count>
      <attachid>248541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-12 13:56:34 -0700</bug_when>
    <thetext>Created attachment 248541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076753</commentid>
    <comment_count>3</comment_count>
      <attachid>248544</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-12 14:11:21 -0700</bug_when>
    <thetext>Created attachment 248544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076761</commentid>
    <comment_count>4</comment_count>
      <attachid>248544</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-12 14:57:52 -0700</bug_when>
    <thetext>Comment on attachment 248544
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:111
&gt; +        // Only image and XHR loads do prevent the page from entering the PageCache.
&gt; +        switch (cachedResource-&gt;type()) {
&gt; +        case CachedResource::RawResource:

Is this an accurate check for XHR? I think that there are more raw resources, such as icons, media, and maybe anything loaded by workers.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1298
&gt; +        m_resumeTimer.startOneShot(0);

What if we are suspended again while the timer is pending?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076800</commentid>
    <comment_count>5</comment_count>
      <attachid>248557</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-12 17:36:17 -0700</bug_when>
    <thetext>Created attachment 248557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076803</commentid>
    <comment_count>6</comment_count>
      <attachid>248544</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-12 17:40:33 -0700</bug_when>
    <thetext>Comment on attachment 248544
Patch

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

&gt;&gt; Source/WebCore/loader/DocumentLoader.cpp:111
&gt;&gt; +        case CachedResource::RawResource:
&gt; 
&gt; Is this an accurate check for XHR? I think that there are more raw resources, such as icons, media, and maybe anything loaded by workers.

You are right, this is not strictly correct. I made it correct by making sure all the clients of the resource&apos;s clients are XHR. So there is now an isXHR() API on CachedResourceClient. This is a bit annoying but I did not find a better way to do it.

&gt;&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1298
&gt;&gt; +        m_resumeTimer.startOneShot(0);
&gt; 
&gt; What if we are suspended again while the timer is pending?

Right, good catch. It is now handled in suspend().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076852</commentid>
    <comment_count>7</comment_count>
      <attachid>248557</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-12 22:55:16 -0700</bug_when>
    <thetext>Comment on attachment 248557
Patch

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

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:99
&gt; +        bool isXHR() const override final;

I don&apos;t think that we use this abbreviation in code often, I&apos;d prefer &quot;isXMLHttpRequest&quot;.

&gt; Source/WebCore/loader/cache/CachedResource.h:161
&gt; +    bool isLoadedViaXHROnly() const;

Maybe &quot;allClientsAreXMLHttpRequests&quot;?

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1255
&gt; +    // Dot not attempt to suspend loading XMLHttpRequests in workers threads for now.
&gt; +    if (!is&lt;Document&gt;(*scriptExecutionContext()))
&gt; +        return !m_loader;

Not sure if I prefer a runtime check or an assertion that this function isn&apos;t called in workers (it cannot be called there now).

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1309
&gt; +    dispatchErrorEvents(eventNames().errorEvent);
&gt; +    m_dispatchErrorOnResuming = false;

Is this the right order? Error event handlers can do many things, and it&apos;s not clear to me that anything even guarantees that the object is still alive after returning from one. I think that an event handler can probably also start a new load using this XHR object, and synchronously navigate away from the page (with a javascript: URL navigation), in which case we&apos;d incorrectly overwrite the value of m_dispatchErrorOnResuming.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1314
&gt; +    NoEventDispatchAssertion assertNoEventDispatch;

I presume that you ran tests in a debug build locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076956</commentid>
    <comment_count>8</comment_count>
      <attachid>248588</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-13 10:11:41 -0700</bug_when>
    <thetext>Created attachment 248588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076957</commentid>
    <comment_count>9</comment_count>
      <attachid>248557</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-13 10:13:05 -0700</bug_when>
    <thetext>Comment on attachment 248557
Patch

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

&gt;&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1314
&gt;&gt; +    NoEventDispatchAssertion assertNoEventDispatch;
&gt; 
&gt; I presume that you ran tests in a debug build locally.

I did and it does not hit assertions, surprisingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076966</commentid>
    <comment_count>10</comment_count>
      <attachid>248588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 10:59:22 -0700</bug_when>
    <thetext>Comment on attachment 248588
Patch

Clearing flags on attachment: 248588

Committed r181480: &lt;http://trac.webkit.org/changeset/181480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076967</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 10:59:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248495</attachid>
            <date>2015-03-11 23:22:05 -0700</date>
            <delta_ts>2015-03-12 13:56:30 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>142612_XHR_suspendable_wip.patch</filename>
            <type>text/plain</type>
            <size>9526</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hl
LXhoci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFn
ZS1jYWNoZS14aHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjdiZTlkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcGFnZS1jYWNoZS14aHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgYSBwYWdlIHdpdGggYSBsb2FkaW5nIFhNTEh0dHBSZXF1ZXN0IGdvZXMgaW50byB0
aGUgcGFnZSBjYWNoZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3BhZ2VzaG93
IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJpbmcgY2FjaGUKK3BhZ2VzaG93IC0g
ZnJvbSBjYWNoZQorUEFTUyBQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhl
IHBhZ2UgY2FjaGUKK1BBU1MgRXhlY3V0ZWQgdGhlIGVycm9yIGhhbmRsZXIgYWZ0ZXIgcmVzdG9y
aW5nIGZyb20gcGFnZSBjYWNoZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wYWdlLWNhY2hlLXhoci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3BhZ2UtY2FjaGUteGhyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjEyYzRkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9wYWdlLWNhY2hlLXhoci5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGEg
cGFnZSB3aXRoIGEgbG9hZGluZyBYTUxIdHRwUmVxdWVzdCBnb2VzIGludG8gdGhlIHBhZ2UgY2Fj
aGUuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciByZXN0b3JlZEZyb21Q
YWdlQ2FjaGUgPSBmYWxzZTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIs
IDEpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZXNob3ciLCBmdW5jdGlvbihldmVu
dCkgeworICAgIGRlYnVnKCJwYWdlc2hvdyAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAi
bm90ICIpICsgImZyb20gY2FjaGUiKTsKKworICAgIGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRo
ZSBwYWdlIGNhY2hlIik7CisgICAgICAgIHJlc3RvcmVkRnJvbVBhZ2VDYWNoZSA9IHRydWU7Cisg
ICAgfQorfSwgZmFsc2UpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBm
dW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlaGlkZSAtICIgKyAoZXZlbnQucGVyc2lz
dGVkID8gIiIgOiAibm90ICIpICsgImVudGVyaW5nIGNhY2hlIik7CisgICAgaWYgKCFldmVudC5w
ZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUGFnZSBkaWQgbm90IGVudGVyIHRoZSBw
YWdlIGNhY2hlLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9LCBmYWxzZSk7
CisKK2Z1bmN0aW9uIHhockxvYWRlZCgpCit7CisgICAgdGVzdEZhaWxlZCgiVGhlIFhNTEh0dHBS
ZXF1ZXN0IHNob3VsZCBub3QgaGF2ZWQgbG9hZGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIHhockVycm9yKCkgeworICAgIGlmIChyZXN0b3JlZEZyb21QYWdlQ2FjaGUp
CisgICAgICAgIHRlc3RQYXNzZWQoIkV4ZWN1dGVkIHRoZSBlcnJvciBoYW5kbGVyIGFmdGVyIHJl
c3RvcmluZyBmcm9tIHBhZ2UgY2FjaGUiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQo
IkV4ZWN1dGVkIHRoZSBlcnJvciBoYW5kbGVyIGJlZm9yZSByZXN0b3JpbmcgZnJvbSBwYWdlIGNh
Y2hlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICB4aHIub25sb2FkID0geGhyTG9hZGVkOworICAgIHhoci5vbmVycm9yID0geGhyRXJyb3I7
CisgICAgeGhyLm9wZW4oIkdFVCIsICIvcmVzb3VyY2VzL2xvYWQtYW5kLXN0YWxsLmNnaT9uYW1l
PS4uLy4uLy4uL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdGltZW91dC94bWxodHRwcmVxdWVz
dC10aW1lb3V0LmpzJnN0YWxsRm9yPTAuNiZzdGFsbEF0PTAmbWltZVR5cGU9dGV4dC9wbGFpbiIs
IHRydWUpOworICAgIHhoci5zZW5kKCk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgLy8gRm9yY2UgYSBiYWNrIG5hdmlnYXRpb24gYmFjayB0byB0aGlzIHBhZ2UuCisgICAg
ICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRt
bCI7CisgICAgfSwgMCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3Jlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjNhMGY3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVyLmh0bWwKQEAg
LTAsMCArMSw5IEBACitUaGlzIHBhZ2Ugc2hvdWxkIGdvIGJhY2suIElmIGEgdGVzdCBvdXRwdXRz
IHRoZSBjb250ZW50cyBvZiB0aGlzCitwYWdlLCB0aGVuIHRoZSB0ZXN0IHBhZ2UgZmFpbGVkIHRv
IGVudGVyIHRoZSBwYWdlIGNhY2hlLgorPHNjcmlwdD4KKyAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgaGlzdG9yeS5iYWNrKCk7CisgICAgfSwgMCk7CisgIH0sIGZhbHNlKTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDAxY2M0NTUuLjk5ZjU2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTEyOCwxNCArMTI4LDExIEBAIHN0
YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUmIGZyYW1lLCBEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudCYKICAgICBpZiAoIWZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkpIHsKICAgICAgICAgUENMT0coIiAg
IC1NYWluIGRvY3VtZW50IGhhcyBhbiBlcnJvciIpOwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWls
dXJlRGlhZ25vc3RpY01lc3NhZ2UoZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQsIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6bWFpbkRvY3VtZW50RXJyb3JLZXkoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykK
LSAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IE1haW5Eb2N1bWVudEVycm9yOwotI2Vsc2UK
KwogICAgICAgICBpZiAoZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3Vt
ZW50RXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpICYmIGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPnN1YnJlc291cmNlTG9hZGVyc0FyZVBhZ2VDYWNoZUFjY2VwdGFibGUoKSkKLSAgICAg
ICAgICAgIFBDTE9HKCIgICAgLUJ1dCwgaXQgd2FzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgbG9h
ZGVycyBkdXJpbmcgdGhlIGNhbmNlbCB3ZXJlIGxvYWRpbmcgaW1hZ2VzLiIpOworICAgICAgICAg
ICAgUENMT0coIiAgICAtQnV0LCBpdCB3YXMgYSBjYW5jZWxsYXRpb24gYW5kIGFsbCBsb2FkZXJz
IGR1cmluZyB0aGUgY2FuY2VsYXRpb24gd2VyZSBsb2FkaW5nIGltYWdlcyBvciBYSFIuIik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBNYWluRG9jdW1l
bnRFcnJvcjsKLSNlbmRpZgogICAgIH0KICAgICBpZiAoZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgZnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgYW4gZXJyb3IgcGFnZSIpOwpAQCAtMzA0LDEx
ICszMDEsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFt
ZShGcmFtZSYgZnJhbWUpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQo
KTsKICAgICAKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIKLSNpZiAhUExBVEZPUk0oSU9TKQot
ICAgICAgICAmJiBkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQot
I2Vsc2UKICAgICAgICAgJiYgKGRvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpLmlz
TnVsbCgpIHx8IChkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc0NhbmNlbGxh
dGlvbigpICYmIGRvY3VtZW50TG9hZGVyLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVB
Y2NlcHRhYmxlKCkpKQotI2VuZGlmCiAgICAgICAgIC8vIERvIG5vdCBjYWNoZSBlcnJvciBwYWdl
cyAodGhlc2UgY2FuIGJlIHJlY29nbml6ZWQgYXMgcGFnZXMgd2l0aCBzdWJzdGl0dXRlIGRhdGEg
b3IgdW5yZWFjaGFibGUgVVJMcykuCiAgICAgICAgICYmICEoZG9jdW1lbnRMb2FkZXItPnN1YnN0
aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmICFkb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEo
KS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKQogICAgICAgICAmJiAoIWZyYW1lTG9hZGVyLnN1YmZy
YW1lTG9hZGVyKCkuY29udGFpbnNQbHVnaW5zKCkgfHwgZnJhbWUucGFnZSgpLT5zZXR0aW5ncygp
LnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggNjE1MTIwOS4uNjhjOTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC05OSwyMCArOTksMjMgQEAgc3RhdGljIGJvb2wgYXJl
QWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFibGUoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxv
YWRlcnMpCiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5Owog
ICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7CiAgICAgZm9yIChh
dXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkgewotICAgICAgICBSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlID0gbG9hZGVyLT5oYW5kbGUoKTsKLSAgICAgICAgaWYgKCFoYW5kbGUpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgaWYgKCFsb2FkZXItPmZyYW1lTG9hZGVyKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yVVJMKGhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5w
YWdlKCktPnNlc3Npb25JRCgpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291
cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yVVJMKGxvYWRlci0+cmVx
dWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkucGFnZSgpLT5zZXNz
aW9uSUQoKSk7CiAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gQWxsIG5vbi1pbWFnZSBsb2FkcyB3aWxsIHByZXZlbnQg
dGhlIHBhZ2UgZnJvbSBlbnRlcmluZyB0aGUgUGFnZUNhY2hlLgotICAgICAgICBpZiAoIWNhY2hl
ZFJlc291cmNlLT5pc0ltYWdlKCkpCisgICAgICAgIC8vIE9ubHkgaW1hZ2UgYW5kIFhIUiBsb2Fk
cyBkbyBwcmV2ZW50IHRoZSBwYWdlIGZyb20gZW50ZXJpbmcgdGhlIFBhZ2VDYWNoZS4KKyAgICAg
ICAgc3dpdGNoIChjYWNoZWRSZXNvdXJjZS0+dHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlJhd1Jlc291cmNlOgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKKyNlbmRpZgorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBjMDk2Y2IxLi4xYWRlMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTEzOSw2ICsxMzksOCBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcHJvZ3Jlc3NF
dmVudFRocm90dGxlKHRoaXMpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZUNvZGUoUmVzcG9uc2VUeXBl
RGVmYXVsdCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCisgICAgLCBtX3Jl
c3VtZVRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnJlc3VtZVRpbWVyRmlyZWQpCisgICAg
LCBtX2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nKGZhbHNlKQogewogI2lmbmRlZiBOREVCVUcKICAg
ICB4bWxIdHRwUmVxdWVzdENvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0xMjUzLDcgKzEyNTUsNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRUaW1lb3V0KCkKIAogYm9vbCBYTUxIdHRwUmVxdWVz
dDo6Y2FuU3VzcGVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2xvYWRlcjsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogY29uc3QgY2hhciogWE1MSHR0cFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdApAQCAtMTI2MSwxNCArMTI2MywzNCBAQCBjb25zdCBjaGFyKiBYTUxIdHRw
UmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJYTUxIdHRw
UmVxdWVzdCI7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
biByZWFzb24pCiB7CiAgICAgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUuc3VzcGVuZCgpOworCisg
ICAgaWYgKHJlYXNvbiA9PSBBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlY29tZUluYWN0
aXZlICYmIG1fbG9hZGVyKSB7CisgICAgICAgIC8vIEdvaW5nIGludG8gUGFnZUNhY2hlLCBhYm9y
dCB0aGUgcmVxdWVzdCBhbmQgZGlzcGF0Y2ggYSBuZXR3b3JrIGVycm9yIG9uIHJlc3VtaW5nLgor
ICAgICAgICBnZW5lcmljRXJyb3IoKTsKKyAgICAgICAgbV9kaXNwYXRjaEVycm9yT25SZXN1bWlu
ZyA9IHRydWU7CisgICAgICAgIGludGVybmFsQWJvcnQoKTsKKyAgICAgICAgQVNTRVJUKCFtX2xv
YWRlcik7CisgICAgfQogfQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpyZXN1bWUoKQogewogICAg
IG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlLnJlc3VtZSgpOworCisgICAgLy8gV2UgYXJlIG5vdCBh
bGxvd2VkIHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGluIHJlc3VtZSgpIHNvIGRpc3BhdGNoCisg
ICAgLy8gdGhlIGVycm9yIGV2ZW50IGluIGEgdGltZXIuCisgICAgaWYgKG1fZGlzcGF0Y2hFcnJv
ck9uUmVzdW1pbmcgJiYgIW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZXN1
bWVUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlc3Vt
ZVRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVChtX2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nKTsK
KyAgICBkaXNwYXRjaEVycm9yRXZlbnRzKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAgICBt
X2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OnN0b3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAxODQwOWI0Li5m
ZTk0NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjA1LDYgKzIwNSw4
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudHMoY29uc3QgQXRvbWlj
U3RyaW5nJik7CiAKKyAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoKTsKKwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxYTUxIdHRwUmVxdWVzdFVwbG9hZD4gbV91cGxvYWQ7CiAKICAgICBVUkwgbV91cmw7
CkBAIC0yNTQsNiArMjU2LDkgQEAgcHJpdmF0ZToKICAgICAvLyBBbiBlbnVtIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIGFsbG93ZWQgc3RyaW5nIHZhbHVlcyBmb3IgdGhlIHJlc3BvbnNlVHlwZSBhdHRy
aWJ1dGUuCiAgICAgUmVzcG9uc2VUeXBlQ29kZSBtX3Jlc3BvbnNlVHlwZUNvZGU7CiAgICAgYm9v
bCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkOworCisgICAgVGltZXIgbV9yZXN1bWVUaW1lcjsKKyAg
ICBib29sIG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248541</attachid>
            <date>2015-03-12 13:56:34 -0700</date>
            <delta_ts>2015-03-12 14:11:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142612-20150312135607.patch</filename>
            <type>text/plain</type>
            <size>15090</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTU5MzUzMzhiYTBj
ZTdjY2RkZGUzNzMxOWJkZWQ4MGY5NmE4OC4uY2M5NjczYzFkOGUzY2VjZmIzNDVjOWM3NGFiZmVl
OGUxMmY5ZTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTAzLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIHNo
b3VsZCBub3QgcHJldmVudCBhIHBhZ2UgZnJvbSBlbnRlcmluZyBQYWdlQ2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjYxMgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTk5MjMwODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBYTUxIdHRwUmVxdWVzdCBBY3RpdmVET01PYmplY3RzIHN1
c3BlbmRhYmxlIGluIG1vc3QgY2FzZXMgdG8KKyAgICAgICAgZHJhc3RpY2FsbHkgaW1wcm92ZSB0
aGUgbGlrZWxpaG9vZCBvZiBwYWdlcyB1c2luZyB0aGVtIHRvIGVudGVyCisgICAgICAgIFBhZ2VD
YWNoZS4gWE1MSHR0cFJlcXVlc3QgdXNlZCB0byBiZSBvbmx5IHN1c3BlbmRhYmxlIHdoZW4gbm90
CisgICAgICAgIGxvYWRpbmcuIEFmdGVyIHRoaXMgcGF0Y2gsIGlmIHRoZSBYTUxIdHRwUmVxdWVz
dCBpcyBsb2FkaW5nIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIHBhZ2Us
IGl0IHdpbGwgYmUgYWJvcnRlZCBhbmQgdGhlIHBhZ2UKKyAgICAgICAgd2lsbCBlbnRlciB0aGUg
UGFnZUNhY2hlLiBVcG9uIHJlc3RvcmluZyB0aGUgcGFnZSBmcm9tIFBhZ2VDYWNoZSwKKyAgICAg
ICAgdGhlIFhNTEh0dHBSZXF1ZXN0cycgZXJyb3IgaGFuZGxlcnMgd2lsbCBiZSBleGVjdXRlZCB0
byBnaXZlIHRoZW0KKyAgICAgICAgYSBjaGFuY2UgdG8gcmVsb2FkIGlmIHRoZXkgd2FudCB0by4K
KworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIuaHRt
bAorCisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6
Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgIERvIG5vdCBwcmV2ZW50
IGEgcGFnZSB0byBlbnRlciB0aGUgcGFnZSBjYWNoZSBmZiB0aGUgbWFpbiBkb2N1bWVudCBoYXMK
KyAgICAgICAgYW4gZXJyb3IgdGhhdCBpcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIHJlbWFpbmlu
ZyBzdWJyZXNvdXJjZSBsb2FkZXJzCisgICAgICAgIGFyZSBmb3IgWEhSLiBXZSBleHRlbmQgdGhl
IHByZS1leGlzdGluZyBtZWNoYW5pc20gdXNlZCBvbiBpT1MsIHdoaWNoCisgICAgICAgIGFsbG93
ZWQgUGFnZUNhY2hpbmcgaWYgdGhlIHJlbWFpbmluZyByZXNvdXJjZSBsb2FkcyBhcmUgZm9yIGlt
YWdlcy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJsZSk6CisgICAgICAgIE1hcmsg
WEhSIGxvYWRlcnMgYXMgUGFnZUNhY2hlIGFjY2VwdGFibGUuCisKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYW5TdXNwZW5k
KToKKyAgICAgICAgUmVwb3J0IHRoYXQgd2UgY2FuIHN1c3BlbmQgWE1MSHR0cFJlcXVlc3RzIGFz
IGxvbmcgYXMgdGhlIHdpbmRvdyBsb2FkCisgICAgICAgIGV2ZW50IGhhcyBhbHJlYWR5IGZpcmVk
LiBJZiB0aGUgd2luZG93IGxvYWQgZXZlbnQgaGFzIG5vdCBmaXJlZCB5ZXQsCisgICAgICAgIGl0
IHdvdWxkIGJlIHVuc2FmZSB0byBjYW5jZWwgdGhlIGxvYWQgaW4gc3VzcGVuZCgpIGFzIGl0IHdv
dWxkCisgICAgICAgIHBvdGVudGlhbGx5IGNhdXNlIGFyYml0cmFyeSBKUyBleGVjdXRpb24gd2hp
bGUgc3VzcGVuZGluZy4KKworICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnN1c3Bl
bmQpOgorICAgICAgICBJZiBzdXNwZW5kaW5nIGZvciBQYWdlQ2FjaGUgYW5kIHRoZSByZXF1ZXN0
IGlzIGN1cnJlbnRseSBsb2FkaW5nLCBhYm9ydAorICAgICAgICB0aGUgbG9hZCBhbmQgbWFyayB0
aGF0IHdlIHNob3VsZCBmaXJlIHRoZSBlcnJvciBldmVudCB1cG9uIHJlc3RvcmluZworICAgICAg
ICBmcm9tIFBhZ2VDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJl
c3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzdW1lVGltZXJGaXJl
ZCk6CisgICAgICAgIFVwb24gcmVzdW1pbmcsIGZpcmUgdGhlIGVycm9yIGV2ZW50IGluIGEgdGlt
ZXIgaWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQKKyAgICAgICAgZm9yIHN1c3BlbmRpbmcuIFdlIG5l
ZWQgdG8gZG8gdGhpcyBpbiBhIHRpbWVyIGJlY2F1c2Ugd2UgYXJlIG5vdCBhbGxvd2VkCisgICAg
ICAgIHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGluc2lkZSByZXN1bWUoKS4KKworICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnN0b3ApOgorICAgICAgICBBZGQgYSBhc3NlcnRpb24g
dG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgZmlyaW5nIGV2ZW50IGluc2lkZSBzdG9wKCkgYXMKKyAg
ICAgICAgdGhpcyB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBhcmJpdHJhcnkgSlMgZXhlY3V0aW9u
IGFuZCBpdCB3b3VsZCBiZQorICAgICAgICB1bnNhZmUuIEl0IHNlZW1zIHRvIG1lIHRoYXQgb3Vy
IGNvZGUgaXMgY3VycmVudGx5IHVuc2FmZSBidXQgdGhlCisgICAgICAgIGFzc2VydGlvbiBkb2Vz
IG5vdCBzZWVtIHRvIGJlIGhpdCBieSBvdXIgY3VycmVudCBsYXlvdXQgdGVzdHMuIEkgYW0KKyAg
ICAgICAgYWRkaW5nIHRoZSBhc3NlcnRpb24gYXMgaXQgd291bGQgbWFrZSBpdCBjbGVhciB3ZSBo
YXZlIGEgYnVnIGFuZCB3ZQorICAgICAgICBuZWVkIHRvIGZpeCBpdC4KKworICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDE1LTAzLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTb21lIGV2ZW50IGhhbmRsZXIgZml4ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMWNjNDU1OTEwZjkyMWE1MDEyMjUxNzUzYmI2MGZk
NDY0YzE1YmQ3Li45OWY1NjMwY2M2MjYzMmI5NThlOTMwZDdhY2I2Y2IyODQzZjEzYWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC0xMjgsMTQgKzEyOCwxMSBAQCBzdGF0
aWMgdW5zaWduZWQgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKEZyYW1lJiBmcmFtZSwgRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQmCiAgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAt
TWFpbiBkb2N1bWVudCBoYXMgYW4gZXJyb3IiKTsKICAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVy
ZURpYWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6Om1haW5Eb2N1bWVudEVycm9yS2V5KCkpOwotI2lmICFQTEFURk9STShJT1MpCi0g
ICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBNYWluRG9jdW1lbnRFcnJvcjsKLSNlbHNlCisK
ICAgICAgICAgaWYgKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVu
dEVycm9yKCkuaXNDYW5jZWxsYXRpb24oKSAmJiBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKCkpCi0gICAgICAg
ICAgICBQQ0xPRygiICAgIC1CdXQsIGl0IHdhcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIGxvYWRl
cnMgZHVyaW5nIHRoZSBjYW5jZWwgd2VyZSBsb2FkaW5nIGltYWdlcy4iKTsKKyAgICAgICAgICAg
IFBDTE9HKCIgICAgLUJ1dCwgaXQgd2FzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgbG9hZGVycyBk
dXJpbmcgdGhlIGNhbmNlbGF0aW9uIHdlcmUgbG9hZGluZyBpbWFnZXMgb3IgWEhSLiIpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgTWFpbkRvY3VtZW50
RXJyb3I7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmIGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIGFuIGVycm9yIHBhZ2UiKTsKQEAgLTMwNCwxMSAr
MzAxLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUo
RnJhbWUmIGZyYW1lKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7
CiAgICAgCiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyCi0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgJiYgZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkKLSNl
bHNlCiAgICAgICAgICYmIChkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051
bGwoKSB8fCAoZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCkuaXNDYW5jZWxsYXRp
b24oKSAmJiBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNj
ZXB0YWJsZSgpKSkKLSNlbmRpZgogICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJyb3IgcGFnZXMg
KHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0ZSBkYXRhIG9y
IHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAmJiAhKGRvY3VtZW50TG9hZGVyLT5zdWJzdGl0
dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCku
ZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgJiYgKCFmcmFtZUxvYWRlci5zdWJmcmFt
ZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpIHx8IGZyYW1lLnBhZ2UoKS0+c2V0dGluZ3MoKS5w
YWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDYxNTEyMDk1NjdhMDMzYTFhMzMyYmQyMmMzZDMyZGM4M2I3N2YxYzIu
LjY4YzkyNDE5OWQyMGY0M2E5MmVjMGFjMGU4NzQxMDU5NTBjNzkwYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtOTksMjAgKzk5LDIzIEBAIHN0YXRpYyBi
b29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKGNvbnN0IFJlc291cmNlTG9hZGVy
TWFwJiBsb2FkZXJzKQogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJz
Q29weTsKICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVyc0NvcHkpOwogICAg
IGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IGxvYWRlci0+aGFuZGxlKCk7Ci0gICAgICAgIGlmICghaGFuZGxlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRl
cigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVS
TChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZy
YW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVSTChsb2Fk
ZXItPnJlcXVlc3QoKS51cmwoKSwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnBhZ2Uo
KS0+c2Vzc2lvbklEKCkpOwogICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIEFsbCBub24taW1hZ2UgbG9hZHMgd2lsbCBw
cmV2ZW50IHRoZSBwYWdlIGZyb20gZW50ZXJpbmcgdGhlIFBhZ2VDYWNoZS4KLSAgICAgICAgaWYg
KCFjYWNoZWRSZXNvdXJjZS0+aXNJbWFnZSgpKQorICAgICAgICAvLyBPbmx5IGltYWdlIGFuZCBY
SFIgbG9hZHMgZG8gcHJldmVudCB0aGUgcGFnZSBmcm9tIGVudGVyaW5nIHRoZSBQYWdlQ2FjaGUu
CisgICAgICAgIHN3aXRjaCAoY2FjaGVkUmVzb3VyY2UtPnR5cGUoKSkgeworICAgICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CisjZW5kaWYKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggYzA5NmNiMWFjMGEwZWY5ZGQ5MTE2YWQwNjVjNTc3MjIxMzY1
ZWRmYy4uOWRhNmUwMTM2ODE4ODg1NDUxYzBiZGMzMzZmMTNhOTFmZjVhOTljZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMzksNiArMTM5LDggQEAgWE1MSHR0cFJl
cXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAg
ICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSh0aGlzKQogICAgICwgbV9yZXNwb25zZVR5cGVD
b2RlKFJlc3BvbnNlVHlwZURlZmF1bHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZh
bHNlKQorICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0OjpyZXN1bWVU
aW1lckZpcmVkKQorICAgICwgbV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyhmYWxzZSkKIHsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgeG1sSHR0cFJlcXVlc3RDb3VudGVyLmluY3JlbWVudCgpOwpAQCAt
MTI1Myw3ICsxMjU1LDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFRpbWVvdXQoKQogCiBi
b29sIFhNTEh0dHBSZXF1ZXN0OjpjYW5TdXNwZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1f
bG9hZGVyOworICAgIC8vIElmIHdlJ3JlIGluIGEgZG9jdW1lbnQgYW5kIHRoZSBsb2FkIGV2ZW50
IGhhcyBub3QgZmlyZWQgeWV0LCBjYW5jZWxsaW5nIHRoZSBsb2FkCisgICAgLy8gaW4gc3VzcGVu
ZCgpIG1heSBjYXVzZSB0aGUgbG9hZCBldmVudCB0byBiZSBmaXJlZCBhbmQgYXJiaXRyYXJ5IEpT
IGV4ZWN1dGlvbiwgd2hpY2gKKyAgICAvLyB3b3VsZCBiZSB1bnNhZmUuIFRoZXJlZm9yZSwgd2Ug
cHJldmVudCBzdXNwZW5kaW5nIGluIHRoaXMgY2FzZS4KKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICYmICFkb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29u
c3QgY2hhciogWE1MSHR0cFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAt
MTI2MSwxOCArMTI2OSw0NSBAQCBjb25zdCBjaGFyKiBYTUxIdHRwUmVxdWVzdDo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJYTUxIdHRwUmVxdWVzdCI7CiB9CiAKLXZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3ZvaWQgWE1M
SHR0cFJlcXVlc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiB7CisgICAg
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKwogICAgIG1f
cHJvZ3Jlc3NFdmVudFRocm90dGxlLnN1c3BlbmQoKTsKKworICAgIGlmIChyZWFzb24gPT0gQWN0
aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSAmJiBtX2xvYWRlcikgewor
ICAgICAgICAvLyBHb2luZyBpbnRvIFBhZ2VDYWNoZSwgYWJvcnQgdGhlIHJlcXVlc3QgYW5kIGRp
c3BhdGNoIGEgbmV0d29yayBlcnJvciBvbiByZXN1bWluZy4KKyAgICAgICAgZ2VuZXJpY0Vycm9y
KCk7CisgICAgICAgIG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmcgPSB0cnVlOworICAgICAgICBi
b29sIGFib3J0ZWQgPSBpbnRlcm5hbEFib3J0KCk7CisgICAgICAgIC8vIEl0IHNob3VsZCBub3Qg
YmUgcG9zc2libGUgdG8gcmVzdGFydCB0aGUgbG9hZCB3aGVuIGFib3J0aW5nIGluIHN1c3BlbmQo
KSBiZWNhdXNlCisgICAgICAgIC8vIHdlIGFyZSBub3QgYWxsb3dlZCB0byBleGVjdXRlIGluIEpT
IGluIHN1c3BlbmQoKS4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChhYm9ydGVkLCBhYm9ydGVkKTsK
KyAgICB9CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlc3VtZSgpCiB7CisgICAgTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKwogICAgIG1fcHJvZ3Jl
c3NFdmVudFRocm90dGxlLnJlc3VtZSgpOworCisgICAgLy8gV2UgYXJlIG5vdCBhbGxvd2VkIHRv
IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGluIHJlc3VtZSgpIHNvIGRpc3BhdGNoCisgICAgLy8gdGhl
IGVycm9yIGV2ZW50IGluIGEgdGltZXIuCisgICAgaWYgKG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1p
bmcgJiYgIW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZXN1bWVUaW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlc3VtZVRpbWVyRmly
ZWQoKQoreworICAgIEFTU0VSVChtX2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nKTsKKyAgICBkaXNw
YXRjaEVycm9yRXZlbnRzKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAgICBtX2Rpc3BhdGNo
RXJyb3JPblJlc3VtaW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN0b3Ao
KQogeworICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7
CiAgICAgaW50ZXJuYWxBYm9ydCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CmluZGV4IDE4NDA5YjQ4MzM3NjkwNWZkYjc4ODFkY2QzMGQ1MDZjZTRlN2ZiZjUuLmZlOTQ2MDIz
YWUyOTI4MDcxYTc5MGUzYmQ1NTRhODUxZjgxZWM5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCkBAIC0yMDUsNiArMjA1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzcGF0
Y2hFcnJvckV2ZW50cyhjb25zdCBBdG9taWNTdHJpbmcmKTsKIAorICAgIHZvaWQgcmVzdW1lVGlt
ZXJGaXJlZCgpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBt
X3VwbG9hZDsKIAogICAgIFVSTCBtX3VybDsKQEAgLTI1NCw2ICsyNTYsOSBAQCBwcml2YXRlOgog
ICAgIC8vIEFuIGVudW0gY29ycmVzcG9uZGluZyB0byB0aGUgYWxsb3dlZCBzdHJpbmcgdmFsdWVz
IGZvciB0aGUgcmVzcG9uc2VUeXBlIGF0dHJpYnV0ZS4KICAgICBSZXNwb25zZVR5cGVDb2RlIG1f
cmVzcG9uc2VUeXBlQ29kZTsKICAgICBib29sIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQ7CisKKyAg
ICBUaW1lciBtX3Jlc3VtZVRpbWVyOworICAgIGJvb2wgbV9kaXNwYXRjaEVycm9yT25SZXN1bWlu
ZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMjczMDVlZDg1NmIwNmQ4
MzlmNGE2ZjMzZWU2OTQ1ZDM3NTRlOGU3Li5iNzk3MDhlNTM0YmVhYzczZDMzYTdmMjA5ZTY3Y2Jm
OGIzYWZmZWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDMtMTIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdHMgc2hvdWxkIG5v
dCBwcmV2ZW50IGEgcGFnZSBmcm9tIGVudGVyaW5nIFBhZ2VDYWNoZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjEyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xOTkyMzA4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBsb2FkaW5nIFhNTEh0dHBS
ZXF1ZXN0cyBkbyBub3QgcHJldmVudCBhCisgICAgICAgIHBhZ2UgZnJvbSBlbnRlcmluZyBQYWdl
Q2FjaGUuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFn
ZS1jYWNoZS14aHIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sOiBBZGRlZC4KKwogMjAxNS0wMy0wOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBldmVudCBoYW5k
bGVyIGZpeGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cGFnZS1jYWNoZS14aHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3BhZ2UtY2FjaGUteGhyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmZmYWNmMjBi
ZTBjY2I3YzU1ZGNiNjc0ZGIyNjhlMzkwOTUzYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgbG9hZGluZyBYTUxIdHRw
UmVxdWVzdCBnb2VzIGludG8gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVyaW5n
IGNhY2hlCitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdh
cyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hlCitQQVNTIEV4ZWN1dGVkIHRoZSBYSFIgZXJy
b3IgaGFuZGxlciBhZnRlciByZXN0b3JpbmcgZnJvbSBwYWdlIGNhY2hlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMzZlMTBjMDdiNjg5ZmFiZDFkZDBmMDIzYzQ3MzJlNWE2Zjc4YTBiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLmh0
bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgbG9hZGluZyBYTUxIdHRwUmVx
dWVzdCBnb2VzIGludG8gdGhlIHBhZ2UgY2FjaGUuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK3ZhciByZXN0b3JlZEZyb21QYWdlQ2FjaGUgPSBmYWxzZTsKKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRV
c2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigicGFnZXNob3ciLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlc2hvdyAtICIg
KyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImZyb20gY2FjaGUiKTsKKworICAg
IGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSBkaWQgZW50
ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hlIik7CisgICAgICAgIHJlc3Rv
cmVkRnJvbVBhZ2VDYWNoZSA9IHRydWU7CisgICAgfQorfSwgZmFsc2UpOworCit3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJw
YWdlaGlkZSAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImVudGVyaW5n
IGNhY2hlIik7CisgICAgaWYgKCFldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiUGFnZSBkaWQgbm90IGVudGVyIHRoZSBwYWdlIGNhY2hlLiIpOworICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHhockxvYWRlZCgpCit7Cisg
ICAgdGVzdEZhaWxlZCgiVGhlIFhNTEh0dHBSZXF1ZXN0IHNob3VsZCBub3QgaGF2ZWQgbG9hZGVk
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHhockVycm9yKCkgeworICAg
IGlmIChyZXN0b3JlZEZyb21QYWdlQ2FjaGUpCisgICAgICAgIHRlc3RQYXNzZWQoIkV4ZWN1dGVk
IHRoZSBYSFIgZXJyb3IgaGFuZGxlciBhZnRlciByZXN0b3JpbmcgZnJvbSBwYWdlIGNhY2hlIik7
CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJFeGVjdXRlZCB0aGUgWEhSIGVycm9yIGhh
bmRsZXIgYmVmb3JlIHJlc3RvcmluZyBmcm9tIHBhZ2UgY2FjaGUiKTsKKworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkg
eworICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vbmxvYWQgPSB4aHJM
b2FkZWQ7CisgICAgeGhyLm9uZXJyb3IgPSB4aHJFcnJvcjsKKyAgICAvLyBTbG93IGxvYWRpbmcg
WEhSICgzLXNlY29uZCBzdGFsbCkuCisgICAgeGhyLm9wZW4oIkdFVCIsICIvcmVzb3VyY2VzL2xv
YWQtYW5kLXN0YWxsLmNnaT9uYW1lPS4uLy4uLy4uL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
dGltZW91dC94bWxodHRwcmVxdWVzdC10aW1lb3V0LmpzJnN0YWxsRm9yPTMmc3RhbGxBdD0wJm1p
bWVUeXBlPXRleHQvcGxhaW4iLCB0cnVlKTsKKyAgICB4aHIuc2VuZCgpOworCisgICAgLy8gVGhp
cyBuZWVkcyB0byBoYXBwZW4gaW4gYSBzZXRUaW1lb3V0IGJlY2F1c2UgYSBuYXZpZ2F0aW9uIGlu
c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgd291bGQKKyAgICAvLyBub3QgY3JlYXRlIGEgaGlzdG9y
eSBlbnRyeS4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgLy8gRm9yY2UgYSBi
YWNrIG5hdmlnYXRpb24gYmFjayB0byB0aGlzIHBhZ2UuCisgICAgICB3aW5kb3cubG9jYXRpb24u
aHJlZiA9ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCI7CisgICAgfSwgMCk7Cit9
LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1jYWNo
ZS1oZWxwZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTBmNzcxMTg3NWM5ODUxZjFjMzg1ZmZjOWQ3NTRi
YTcyOWJkZGUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sCkBAIC0wLDAgKzEsOSBAQAor
VGhpcyBwYWdlIHNob3VsZCBnbyBiYWNrLiBJZiBhIHRlc3Qgb3V0cHV0cyB0aGUgY29udGVudHMg
b2YgdGhpcworcGFnZSwgdGhlbiB0aGUgdGVzdCBwYWdlIGZhaWxlZCB0byBlbnRlciB0aGUgcGFn
ZSBjYWNoZS4KKzxzY3JpcHQ+CisgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVu
Y3Rpb24oKSB7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIGhpc3RvcnkuYmFj
aygpOworICAgIH0sIDApOworICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248544</attachid>
            <date>2015-03-12 14:11:21 -0700</date>
            <delta_ts>2015-03-12 17:36:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142612-20150312141054.patch</filename>
            <type>text/plain</type>
            <size>15146</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTU5MzUzMzhiYTBj
ZTdjY2RkZGUzNzMxOWJkZWQ4MGY5NmE4OC4uY2M5NjczYzFkOGUzY2VjZmIzNDVjOWM3NGFiZmVl
OGUxMmY5ZTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTAzLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIHNo
b3VsZCBub3QgcHJldmVudCBhIHBhZ2UgZnJvbSBlbnRlcmluZyBQYWdlQ2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjYxMgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTk5MjMwODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBYTUxIdHRwUmVxdWVzdCBBY3RpdmVET01PYmplY3RzIHN1
c3BlbmRhYmxlIGluIG1vc3QgY2FzZXMgdG8KKyAgICAgICAgZHJhc3RpY2FsbHkgaW1wcm92ZSB0
aGUgbGlrZWxpaG9vZCBvZiBwYWdlcyB1c2luZyB0aGVtIHRvIGVudGVyCisgICAgICAgIFBhZ2VD
YWNoZS4gWE1MSHR0cFJlcXVlc3QgdXNlZCB0byBiZSBvbmx5IHN1c3BlbmRhYmxlIHdoZW4gbm90
CisgICAgICAgIGxvYWRpbmcuIEFmdGVyIHRoaXMgcGF0Y2gsIGlmIHRoZSBYTUxIdHRwUmVxdWVz
dCBpcyBsb2FkaW5nIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIHBhZ2Us
IGl0IHdpbGwgYmUgYWJvcnRlZCBhbmQgdGhlIHBhZ2UKKyAgICAgICAgd2lsbCBlbnRlciB0aGUg
UGFnZUNhY2hlLiBVcG9uIHJlc3RvcmluZyB0aGUgcGFnZSBmcm9tIFBhZ2VDYWNoZSwKKyAgICAg
ICAgdGhlIFhNTEh0dHBSZXF1ZXN0cycgZXJyb3IgaGFuZGxlcnMgd2lsbCBiZSBleGVjdXRlZCB0
byBnaXZlIHRoZW0KKyAgICAgICAgYSBjaGFuY2UgdG8gcmVsb2FkIGlmIHRoZXkgd2FudCB0by4K
KworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIuaHRt
bAorCisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6
Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgIERvIG5vdCBwcmV2ZW50
IGEgcGFnZSB0byBlbnRlciB0aGUgcGFnZSBjYWNoZSBmZiB0aGUgbWFpbiBkb2N1bWVudCBoYXMK
KyAgICAgICAgYW4gZXJyb3IgdGhhdCBpcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIHJlbWFpbmlu
ZyBzdWJyZXNvdXJjZSBsb2FkZXJzCisgICAgICAgIGFyZSBmb3IgWEhSLiBXZSBleHRlbmQgdGhl
IHByZS1leGlzdGluZyBtZWNoYW5pc20gdXNlZCBvbiBpT1MsIHdoaWNoCisgICAgICAgIGFsbG93
ZWQgUGFnZUNhY2hpbmcgaWYgdGhlIHJlbWFpbmluZyByZXNvdXJjZSBsb2FkcyBhcmUgZm9yIGlt
YWdlcy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJsZSk6CisgICAgICAgIE1hcmsg
WEhSIGxvYWRlcnMgYXMgUGFnZUNhY2hlIGFjY2VwdGFibGUuCisKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYW5TdXNwZW5k
KToKKyAgICAgICAgUmVwb3J0IHRoYXQgd2UgY2FuIHN1c3BlbmQgWE1MSHR0cFJlcXVlc3RzIGFz
IGxvbmcgYXMgdGhlIHdpbmRvdyBsb2FkCisgICAgICAgIGV2ZW50IGhhcyBhbHJlYWR5IGZpcmVk
LiBJZiB0aGUgd2luZG93IGxvYWQgZXZlbnQgaGFzIG5vdCBmaXJlZCB5ZXQsCisgICAgICAgIGl0
IHdvdWxkIGJlIHVuc2FmZSB0byBjYW5jZWwgdGhlIGxvYWQgaW4gc3VzcGVuZCgpIGFzIGl0IHdv
dWxkCisgICAgICAgIHBvdGVudGlhbGx5IGNhdXNlIGFyYml0cmFyeSBKUyBleGVjdXRpb24gd2hp
bGUgc3VzcGVuZGluZy4KKworICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnN1c3Bl
bmQpOgorICAgICAgICBJZiBzdXNwZW5kaW5nIGZvciBQYWdlQ2FjaGUgYW5kIHRoZSByZXF1ZXN0
IGlzIGN1cnJlbnRseSBsb2FkaW5nLCBhYm9ydAorICAgICAgICB0aGUgbG9hZCBhbmQgbWFyayB0
aGF0IHdlIHNob3VsZCBmaXJlIHRoZSBlcnJvciBldmVudCB1cG9uIHJlc3RvcmluZworICAgICAg
ICBmcm9tIFBhZ2VDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJl
c3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzdW1lVGltZXJGaXJl
ZCk6CisgICAgICAgIFVwb24gcmVzdW1pbmcsIGZpcmUgdGhlIGVycm9yIGV2ZW50IGluIGEgdGlt
ZXIgaWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQKKyAgICAgICAgZm9yIHN1c3BlbmRpbmcuIFdlIG5l
ZWQgdG8gZG8gdGhpcyBpbiBhIHRpbWVyIGJlY2F1c2Ugd2UgYXJlIG5vdCBhbGxvd2VkCisgICAg
ICAgIHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGluc2lkZSByZXN1bWUoKS4KKworICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnN0b3ApOgorICAgICAgICBBZGQgYSBhc3NlcnRpb24g
dG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgZmlyaW5nIGV2ZW50IGluc2lkZSBzdG9wKCkgYXMKKyAg
ICAgICAgdGhpcyB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBhcmJpdHJhcnkgSlMgZXhlY3V0aW9u
IGFuZCBpdCB3b3VsZCBiZQorICAgICAgICB1bnNhZmUuIEl0IHNlZW1zIHRvIG1lIHRoYXQgb3Vy
IGNvZGUgaXMgY3VycmVudGx5IHVuc2FmZSBidXQgdGhlCisgICAgICAgIGFzc2VydGlvbiBkb2Vz
IG5vdCBzZWVtIHRvIGJlIGhpdCBieSBvdXIgY3VycmVudCBsYXlvdXQgdGVzdHMuIEkgYW0KKyAg
ICAgICAgYWRkaW5nIHRoZSBhc3NlcnRpb24gYXMgaXQgd291bGQgbWFrZSBpdCBjbGVhciB3ZSBo
YXZlIGEgYnVnIGFuZCB3ZQorICAgICAgICBuZWVkIHRvIGZpeCBpdC4KKworICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDE1LTAzLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTb21lIGV2ZW50IGhhbmRsZXIgZml4ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMWNjNDU1OTEwZjkyMWE1MDEyMjUxNzUzYmI2MGZk
NDY0YzE1YmQ3Li45OWY1NjMwY2M2MjYzMmI5NThlOTMwZDdhY2I2Y2IyODQzZjEzYWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC0xMjgsMTQgKzEyOCwxMSBAQCBzdGF0
aWMgdW5zaWduZWQgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKEZyYW1lJiBmcmFtZSwgRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQmCiAgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAt
TWFpbiBkb2N1bWVudCBoYXMgYW4gZXJyb3IiKTsKICAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVy
ZURpYWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6Om1haW5Eb2N1bWVudEVycm9yS2V5KCkpOwotI2lmICFQTEFURk9STShJT1MpCi0g
ICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBNYWluRG9jdW1lbnRFcnJvcjsKLSNlbHNlCisK
ICAgICAgICAgaWYgKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVu
dEVycm9yKCkuaXNDYW5jZWxsYXRpb24oKSAmJiBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKCkpCi0gICAgICAg
ICAgICBQQ0xPRygiICAgIC1CdXQsIGl0IHdhcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIGxvYWRl
cnMgZHVyaW5nIHRoZSBjYW5jZWwgd2VyZSBsb2FkaW5nIGltYWdlcy4iKTsKKyAgICAgICAgICAg
IFBDTE9HKCIgICAgLUJ1dCwgaXQgd2FzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgbG9hZGVycyBk
dXJpbmcgdGhlIGNhbmNlbGF0aW9uIHdlcmUgbG9hZGluZyBpbWFnZXMgb3IgWEhSLiIpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgTWFpbkRvY3VtZW50
RXJyb3I7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmIGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIGFuIGVycm9yIHBhZ2UiKTsKQEAgLTMwNCwxMSAr
MzAxLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUo
RnJhbWUmIGZyYW1lKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7
CiAgICAgCiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyCi0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgJiYgZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkKLSNl
bHNlCiAgICAgICAgICYmIChkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051
bGwoKSB8fCAoZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCkuaXNDYW5jZWxsYXRp
b24oKSAmJiBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNj
ZXB0YWJsZSgpKSkKLSNlbmRpZgogICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJyb3IgcGFnZXMg
KHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0ZSBkYXRhIG9y
IHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAmJiAhKGRvY3VtZW50TG9hZGVyLT5zdWJzdGl0
dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCku
ZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgJiYgKCFmcmFtZUxvYWRlci5zdWJmcmFt
ZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpIHx8IGZyYW1lLnBhZ2UoKS0+c2V0dGluZ3MoKS5w
YWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDYxNTEyMDk1NjdhMDMzYTFhMzMyYmQyMmMzZDMyZGM4M2I3N2YxYzIu
LjY4YzkyNDE5OWQyMGY0M2E5MmVjMGFjMGU4NzQxMDU5NTBjNzkwYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtOTksMjAgKzk5LDIzIEBAIHN0YXRpYyBi
b29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKGNvbnN0IFJlc291cmNlTG9hZGVy
TWFwJiBsb2FkZXJzKQogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJz
Q29weTsKICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVyc0NvcHkpOwogICAg
IGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IGxvYWRlci0+aGFuZGxlKCk7Ci0gICAgICAgIGlmICghaGFuZGxlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRl
cigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVS
TChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZy
YW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVSTChsb2Fk
ZXItPnJlcXVlc3QoKS51cmwoKSwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnBhZ2Uo
KS0+c2Vzc2lvbklEKCkpOwogICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIEFsbCBub24taW1hZ2UgbG9hZHMgd2lsbCBw
cmV2ZW50IHRoZSBwYWdlIGZyb20gZW50ZXJpbmcgdGhlIFBhZ2VDYWNoZS4KLSAgICAgICAgaWYg
KCFjYWNoZWRSZXNvdXJjZS0+aXNJbWFnZSgpKQorICAgICAgICAvLyBPbmx5IGltYWdlIGFuZCBY
SFIgbG9hZHMgZG8gcHJldmVudCB0aGUgcGFnZSBmcm9tIGVudGVyaW5nIHRoZSBQYWdlQ2FjaGUu
CisgICAgICAgIHN3aXRjaCAoY2FjaGVkUmVzb3VyY2UtPnR5cGUoKSkgeworICAgICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CisjZW5kaWYKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggYzA5NmNiMWFjMGEwZWY5ZGQ5MTE2YWQwNjVjNTc3MjIxMzY1
ZWRmYy4uOWRhNmUwMTM2ODE4ODg1NDUxYzBiZGMzMzZmMTNhOTFmZjVhOTljZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMzksNiArMTM5LDggQEAgWE1MSHR0cFJl
cXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAg
ICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSh0aGlzKQogICAgICwgbV9yZXNwb25zZVR5cGVD
b2RlKFJlc3BvbnNlVHlwZURlZmF1bHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZh
bHNlKQorICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0OjpyZXN1bWVU
aW1lckZpcmVkKQorICAgICwgbV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyhmYWxzZSkKIHsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgeG1sSHR0cFJlcXVlc3RDb3VudGVyLmluY3JlbWVudCgpOwpAQCAt
MTI1Myw3ICsxMjU1LDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFRpbWVvdXQoKQogCiBi
b29sIFhNTEh0dHBSZXF1ZXN0OjpjYW5TdXNwZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1f
bG9hZGVyOworICAgIC8vIElmIHdlJ3JlIGluIGEgZG9jdW1lbnQgYW5kIHRoZSBsb2FkIGV2ZW50
IGhhcyBub3QgZmlyZWQgeWV0LCBjYW5jZWxsaW5nIHRoZSBsb2FkCisgICAgLy8gaW4gc3VzcGVu
ZCgpIG1heSBjYXVzZSB0aGUgbG9hZCBldmVudCB0byBiZSBmaXJlZCBhbmQgYXJiaXRyYXJ5IEpT
IGV4ZWN1dGlvbiwgd2hpY2gKKyAgICAvLyB3b3VsZCBiZSB1bnNhZmUuIFRoZXJlZm9yZSwgd2Ug
cHJldmVudCBzdXNwZW5kaW5nIGluIHRoaXMgY2FzZS4KKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICYmICFkb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29u
c3QgY2hhciogWE1MSHR0cFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAt
MTI2MSwxOCArMTI2OSw0NSBAQCBjb25zdCBjaGFyKiBYTUxIdHRwUmVxdWVzdDo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJYTUxIdHRwUmVxdWVzdCI7CiB9CiAKLXZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3ZvaWQgWE1M
SHR0cFJlcXVlc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiB7CisgICAg
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKwogICAgIG1f
cHJvZ3Jlc3NFdmVudFRocm90dGxlLnN1c3BlbmQoKTsKKworICAgIGlmIChyZWFzb24gPT0gQWN0
aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSAmJiBtX2xvYWRlcikgewor
ICAgICAgICAvLyBHb2luZyBpbnRvIFBhZ2VDYWNoZSwgYWJvcnQgdGhlIHJlcXVlc3QgYW5kIGRp
c3BhdGNoIGEgbmV0d29yayBlcnJvciBvbiByZXN1bWluZy4KKyAgICAgICAgZ2VuZXJpY0Vycm9y
KCk7CisgICAgICAgIG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmcgPSB0cnVlOworICAgICAgICBi
b29sIGFib3J0ZWQgPSBpbnRlcm5hbEFib3J0KCk7CisgICAgICAgIC8vIEl0IHNob3VsZCBub3Qg
YmUgcG9zc2libGUgdG8gcmVzdGFydCB0aGUgbG9hZCB3aGVuIGFib3J0aW5nIGluIHN1c3BlbmQo
KSBiZWNhdXNlCisgICAgICAgIC8vIHdlIGFyZSBub3QgYWxsb3dlZCB0byBleGVjdXRlIGluIEpT
IGluIHN1c3BlbmQoKS4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChhYm9ydGVkLCBhYm9ydGVkKTsK
KyAgICB9CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlc3VtZSgpCiB7CisgICAgTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKwogICAgIG1fcHJvZ3Jl
c3NFdmVudFRocm90dGxlLnJlc3VtZSgpOworCisgICAgLy8gV2UgYXJlIG5vdCBhbGxvd2VkIHRv
IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGluIHJlc3VtZSgpIHNvIGRpc3BhdGNoCisgICAgLy8gdGhl
IGVycm9yIGV2ZW50IGluIGEgdGltZXIuCisgICAgaWYgKG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1p
bmcgJiYgIW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZXN1bWVUaW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlc3VtZVRpbWVyRmly
ZWQoKQoreworICAgIEFTU0VSVChtX2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nKTsKKyAgICBkaXNw
YXRjaEVycm9yRXZlbnRzKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAgICBtX2Rpc3BhdGNo
RXJyb3JPblJlc3VtaW5nID0gZmFsc2U7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN0b3Ao
KQogeworICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7
CiAgICAgaW50ZXJuYWxBYm9ydCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CmluZGV4IDE4NDA5YjQ4MzM3NjkwNWZkYjc4ODFkY2QzMGQ1MDZjZTRlN2ZiZjUuLmZlOTQ2MDIz
YWUyOTI4MDcxYTc5MGUzYmQ1NTRhODUxZjgxZWM5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCkBAIC0yMDUsNiArMjA1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzcGF0
Y2hFcnJvckV2ZW50cyhjb25zdCBBdG9taWNTdHJpbmcmKTsKIAorICAgIHZvaWQgcmVzdW1lVGlt
ZXJGaXJlZCgpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBt
X3VwbG9hZDsKIAogICAgIFVSTCBtX3VybDsKQEAgLTI1NCw2ICsyNTYsOSBAQCBwcml2YXRlOgog
ICAgIC8vIEFuIGVudW0gY29ycmVzcG9uZGluZyB0byB0aGUgYWxsb3dlZCBzdHJpbmcgdmFsdWVz
IGZvciB0aGUgcmVzcG9uc2VUeXBlIGF0dHJpYnV0ZS4KICAgICBSZXNwb25zZVR5cGVDb2RlIG1f
cmVzcG9uc2VUeXBlQ29kZTsKICAgICBib29sIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQ7CisKKyAg
ICBUaW1lciBtX3Jlc3VtZVRpbWVyOworICAgIGJvb2wgbV9kaXNwYXRjaEVycm9yT25SZXN1bWlu
ZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMjczMDVlZDg1NmIwNmQ4
MzlmNGE2ZjMzZWU2OTQ1ZDM3NTRlOGU3Li5iNzk3MDhlNTM0YmVhYzczZDMzYTdmMjA5ZTY3Y2Jm
OGIzYWZmZWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDMtMTIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdHMgc2hvdWxkIG5v
dCBwcmV2ZW50IGEgcGFnZSBmcm9tIGVudGVyaW5nIFBhZ2VDYWNoZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjEyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xOTkyMzA4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBsb2FkaW5nIFhNTEh0dHBS
ZXF1ZXN0cyBkbyBub3QgcHJldmVudCBhCisgICAgICAgIHBhZ2UgZnJvbSBlbnRlcmluZyBQYWdl
Q2FjaGUuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFn
ZS1jYWNoZS14aHIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sOiBBZGRlZC4KKwogMjAxNS0wMy0wOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBldmVudCBoYW5k
bGVyIGZpeGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cGFnZS1jYWNoZS14aHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3BhZ2UtY2FjaGUteGhyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjQ3YTJhNzg2
YTQ5ODc4ZWQ1YjExNTNmZjU0YjNjM2Y3YzdiNjY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgbG9hZGluZyBYTUxIdHRw
UmVxdWVzdCBnb2VzIGludG8gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVyaW5n
IGNhY2hlCitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdh
cyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hlCitQQVNTIEV4ZWN1dGVkIHRoZSBYSFIgZXJy
b3IgaGFuZGxlciBhZnRlciByZXN0b3JpbmcgZnJvbSBwYWdlIGNhY2hlCitQQVNTIHhoci5zdGF0
dXMgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNh
Y2hlLXhoci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2Fj
aGUteGhyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJmNjlhNDQyMDBhNzRmZTZiOGVmNDU3ZmMwMGY5NTY0
ZjA5MjkzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wYWdlLWNhY2hlLXhoci5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0
aCBhIGxvYWRpbmcgWE1MSHR0cFJlcXVlc3QgZ29lcyBpbnRvIHRoZSBwYWdlIGNhY2hlLicpOwor
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcmVzdG9yZWRGcm9tUGFnZUNhY2hl
ID0gZmFsc2U7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKwor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBkZWJ1ZygicGFnZXNob3cgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/ICIiIDogIm5vdCAiKSAr
ICJmcm9tIGNhY2hlIik7CisKKyAgICBpZiAoZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIlBhZ2UgZGlkIGVudGVyIGFuZCB3YXMgcmVzdG9yZWQgZnJvbSB0aGUgcGFnZSBj
YWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21QYWdlQ2FjaGUgPSB0cnVlOworICAgIH0KK30s
IGZhbHNlKTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZWhpZGUgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/ICIi
IDogIm5vdCAiKSArICJlbnRlcmluZyBjYWNoZSIpOworICAgIGlmICghZXZlbnQucGVyc2lzdGVk
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlBhZ2UgZGlkIG5vdCBlbnRlciB0aGUgcGFnZSBjYWNo
ZS4iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfSwgZmFsc2UpOworCitmdW5j
dGlvbiB4aHJMb2FkZWQoKQoreworICAgIHRlc3RGYWlsZWQoIlRoZSBYTUxIdHRwUmVxdWVzdCBz
aG91bGQgbm90IGhhdmVkIGxvYWRlZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5j
dGlvbiB4aHJFcnJvcigpIHsKKyAgICBpZiAocmVzdG9yZWRGcm9tUGFnZUNhY2hlKQorICAgICAg
ICB0ZXN0UGFzc2VkKCJFeGVjdXRlZCB0aGUgWEhSIGVycm9yIGhhbmRsZXIgYWZ0ZXIgcmVzdG9y
aW5nIGZyb20gcGFnZSBjYWNoZSIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiRXhl
Y3V0ZWQgdGhlIFhIUiBlcnJvciBoYW5kbGVyIGJlZm9yZSByZXN0b3JpbmcgZnJvbSBwYWdlIGNh
Y2hlIik7CisKKyAgICBzaG91bGRCZSgieGhyLnN0YXR1cyIsICIwIik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7
CisgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9ubG9hZCA9IHhockxv
YWRlZDsKKyAgICB4aHIub25lcnJvciA9IHhockVycm9yOworICAgIC8vIFNsb3cgbG9hZGluZyBY
SFIgKDMtc2Vjb25kIHN0YWxsKS4KKyAgICB4aHIub3BlbigiR0VUIiwgIi9yZXNvdXJjZXMvbG9h
ZC1hbmQtc3RhbGwuY2dpP25hbWU9Li4vLi4vLi4vaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC90
aW1lb3V0L3htbGh0dHByZXF1ZXN0LXRpbWVvdXQuanMmc3RhbGxGb3I9MyZzdGFsbEF0PTAmbWlt
ZVR5cGU9dGV4dC9wbGFpbiIsIHRydWUpOworICAgIHhoci5zZW5kKCk7CisKKyAgICAvLyBUaGlz
IG5lZWRzIHRvIGhhcHBlbiBpbiBhIHNldFRpbWVvdXQgYmVjYXVzZSBhIG5hdmlnYXRpb24gaW5z
aWRlIHRoZSBvbmxvYWQgaGFuZGxlciB3b3VsZAorICAgIC8vIG5vdCBjcmVhdGUgYSBoaXN0b3J5
IGVudHJ5LgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAvLyBGb3JjZSBhIGJh
Y2sgbmF2aWdhdGlvbiBiYWNrIHRvIHRoaXMgcGFnZS4KKyAgICAgIHdpbmRvdy5sb2NhdGlvbi5o
cmVmID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIjsKKyAgICB9LCAwKTsKK30s
IGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9wYWdlLWNhY2hl
LWhlbHBlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMGY3NzExODc1Yzk4NTFmMWMzODVmZmM5ZDc1NGJh
NzI5YmRkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcmVzb3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVyLmh0bWwKQEAgLTAsMCArMSw5IEBACitU
aGlzIHBhZ2Ugc2hvdWxkIGdvIGJhY2suIElmIGEgdGVzdCBvdXRwdXRzIHRoZSBjb250ZW50cyBv
ZiB0aGlzCitwYWdlLCB0aGVuIHRoZSB0ZXN0IHBhZ2UgZmFpbGVkIHRvIGVudGVyIHRoZSBwYWdl
IGNhY2hlLgorPHNjcmlwdD4KKyAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5j
dGlvbigpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgaGlzdG9yeS5iYWNr
KCk7CisgICAgfSwgMCk7CisgIH0sIGZhbHNlKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248557</attachid>
            <date>2015-03-12 17:36:17 -0700</date>
            <delta_ts>2015-03-13 10:11:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142612-20150312173550.patch</filename>
            <type>text/plain</type>
            <size>21166</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTU5MzUzMzhiYTBj
ZTdjY2RkZGUzNzMxOWJkZWQ4MGY5NmE4OC4uY2M5NjczYzFkOGUzY2VjZmIzNDVjOWM3NGFiZmVl
OGUxMmY5ZTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTAzLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIHNo
b3VsZCBub3QgcHJldmVudCBhIHBhZ2UgZnJvbSBlbnRlcmluZyBQYWdlQ2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjYxMgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTk5MjMwODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBYTUxIdHRwUmVxdWVzdCBBY3RpdmVET01PYmplY3RzIHN1
c3BlbmRhYmxlIGluIG1vc3QgY2FzZXMgdG8KKyAgICAgICAgZHJhc3RpY2FsbHkgaW1wcm92ZSB0
aGUgbGlrZWxpaG9vZCBvZiBwYWdlcyB1c2luZyB0aGVtIHRvIGVudGVyCisgICAgICAgIFBhZ2VD
YWNoZS4gWE1MSHR0cFJlcXVlc3QgdXNlZCB0byBiZSBvbmx5IHN1c3BlbmRhYmxlIHdoZW4gbm90
CisgICAgICAgIGxvYWRpbmcuIEFmdGVyIHRoaXMgcGF0Y2gsIGlmIHRoZSBYTUxIdHRwUmVxdWVz
dCBpcyBsb2FkaW5nIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIHBhZ2Us
IGl0IHdpbGwgYmUgYWJvcnRlZCBhbmQgdGhlIHBhZ2UKKyAgICAgICAgd2lsbCBlbnRlciB0aGUg
UGFnZUNhY2hlLiBVcG9uIHJlc3RvcmluZyB0aGUgcGFnZSBmcm9tIFBhZ2VDYWNoZSwKKyAgICAg
ICAgdGhlIFhNTEh0dHBSZXF1ZXN0cycgZXJyb3IgaGFuZGxlcnMgd2lsbCBiZSBleGVjdXRlZCB0
byBnaXZlIHRoZW0KKyAgICAgICAgYSBjaGFuY2UgdG8gcmVsb2FkIGlmIHRoZXkgd2FudCB0by4K
KworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIuaHRt
bAorCisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6
Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgIERvIG5vdCBwcmV2ZW50
IGEgcGFnZSB0byBlbnRlciB0aGUgcGFnZSBjYWNoZSBmZiB0aGUgbWFpbiBkb2N1bWVudCBoYXMK
KyAgICAgICAgYW4gZXJyb3IgdGhhdCBpcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIHJlbWFpbmlu
ZyBzdWJyZXNvdXJjZSBsb2FkZXJzCisgICAgICAgIGFyZSBmb3IgWEhSLiBXZSBleHRlbmQgdGhl
IHByZS1leGlzdGluZyBtZWNoYW5pc20gdXNlZCBvbiBpT1MsIHdoaWNoCisgICAgICAgIGFsbG93
ZWQgUGFnZUNhY2hpbmcgaWYgdGhlIHJlbWFpbmluZyByZXNvdXJjZSBsb2FkcyBhcmUgZm9yIGlt
YWdlcy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJsZSk6CisgICAgICAgIE1hcmsg
WEhSIGxvYWRlcnMgYXMgUGFnZUNhY2hlIGFjY2VwdGFibGUuCisKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYW5TdXNwZW5k
KToKKyAgICAgICAgUmVwb3J0IHRoYXQgd2UgY2FuIHN1c3BlbmQgWE1MSHR0cFJlcXVlc3RzIGFz
IGxvbmcgYXMgdGhlIHdpbmRvdyBsb2FkCisgICAgICAgIGV2ZW50IGhhcyBhbHJlYWR5IGZpcmVk
LiBJZiB0aGUgd2luZG93IGxvYWQgZXZlbnQgaGFzIG5vdCBmaXJlZCB5ZXQsCisgICAgICAgIGl0
IHdvdWxkIGJlIHVuc2FmZSB0byBjYW5jZWwgdGhlIGxvYWQgaW4gc3VzcGVuZCgpIGFzIGl0IHdv
dWxkCisgICAgICAgIHBvdGVudGlhbGx5IGNhdXNlIGFyYml0cmFyeSBKUyBleGVjdXRpb24gd2hp
bGUgc3VzcGVuZGluZy4KKworICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnN1c3Bl
bmQpOgorICAgICAgICBJZiBzdXNwZW5kaW5nIGZvciBQYWdlQ2FjaGUgYW5kIHRoZSByZXF1ZXN0
IGlzIGN1cnJlbnRseSBsb2FkaW5nLCBhYm9ydAorICAgICAgICB0aGUgbG9hZCBhbmQgbWFyayB0
aGF0IHdlIHNob3VsZCBmaXJlIHRoZSBlcnJvciBldmVudCB1cG9uIHJlc3RvcmluZworICAgICAg
ICBmcm9tIFBhZ2VDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJl
c3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzdW1lVGltZXJGaXJl
ZCk6CisgICAgICAgIFVwb24gcmVzdW1pbmcsIGZpcmUgdGhlIGVycm9yIGV2ZW50IGluIGEgdGlt
ZXIgaWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQKKyAgICAgICAgZm9yIHN1c3BlbmRpbmcuIFdlIG5l
ZWQgdG8gZG8gdGhpcyBpbiBhIHRpbWVyIGJlY2F1c2Ugd2UgYXJlIG5vdCBhbGxvd2VkCisgICAg
ICAgIHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IEpTIGluc2lkZSByZXN1bWUoKS4KKworICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnN0b3ApOgorICAgICAgICBBZGQgYSBhc3NlcnRpb24g
dG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgZmlyaW5nIGV2ZW50IGluc2lkZSBzdG9wKCkgYXMKKyAg
ICAgICAgdGhpcyB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBhcmJpdHJhcnkgSlMgZXhlY3V0aW9u
IGFuZCBpdCB3b3VsZCBiZQorICAgICAgICB1bnNhZmUuIEl0IHNlZW1zIHRvIG1lIHRoYXQgb3Vy
IGNvZGUgaXMgY3VycmVudGx5IHVuc2FmZSBidXQgdGhlCisgICAgICAgIGFzc2VydGlvbiBkb2Vz
IG5vdCBzZWVtIHRvIGJlIGhpdCBieSBvdXIgY3VycmVudCBsYXlvdXQgdGVzdHMuIEkgYW0KKyAg
ICAgICAgYWRkaW5nIHRoZSBhc3NlcnRpb24gYXMgaXQgd291bGQgbWFrZSBpdCBjbGVhciB3ZSBo
YXZlIGEgYnVnIGFuZCB3ZQorICAgICAgICBuZWVkIHRvIGZpeCBpdC4KKworICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDE1LTAzLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTb21lIGV2ZW50IGhhbmRsZXIgZml4ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMWNjNDU1OTEwZjkyMWE1MDEyMjUxNzUzYmI2MGZk
NDY0YzE1YmQ3Li45OWY1NjMwY2M2MjYzMmI5NThlOTMwZDdhY2I2Y2IyODQzZjEzYWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC0xMjgsMTQgKzEyOCwxMSBAQCBzdGF0
aWMgdW5zaWduZWQgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKEZyYW1lJiBmcmFtZSwgRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQmCiAgICAgaWYgKCFmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVsbCgpKSB7CiAgICAgICAgIFBDTE9HKCIgICAt
TWFpbiBkb2N1bWVudCBoYXMgYW4gZXJyb3IiKTsKICAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVy
ZURpYWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6Om1haW5Eb2N1bWVudEVycm9yS2V5KCkpOwotI2lmICFQTEFURk9STShJT1MpCi0g
ICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBNYWluRG9jdW1lbnRFcnJvcjsKLSNlbHNlCisK
ICAgICAgICAgaWYgKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5Eb2N1bWVu
dEVycm9yKCkuaXNDYW5jZWxsYXRpb24oKSAmJiBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKCkpCi0gICAgICAg
ICAgICBQQ0xPRygiICAgIC1CdXQsIGl0IHdhcyBhIGNhbmNlbGxhdGlvbiBhbmQgYWxsIGxvYWRl
cnMgZHVyaW5nIHRoZSBjYW5jZWwgd2VyZSBsb2FkaW5nIGltYWdlcy4iKTsKKyAgICAgICAgICAg
IFBDTE9HKCIgICAgLUJ1dCwgaXQgd2FzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgbG9hZGVycyBk
dXJpbmcgdGhlIGNhbmNlbGF0aW9uIHdlcmUgbG9hZGluZyBpbWFnZXMgb3IgWEhSLiIpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgTWFpbkRvY3VtZW50
RXJyb3I7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmIGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIGFuIGVycm9yIHBhZ2UiKTsKQEAgLTMwNCwxMSAr
MzAxLDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUo
RnJhbWUmIGZyYW1lKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7
CiAgICAgCiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyCi0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgJiYgZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkKLSNl
bHNlCiAgICAgICAgICYmIChkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051
bGwoKSB8fCAoZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVycm9yKCkuaXNDYW5jZWxsYXRp
b24oKSAmJiBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNj
ZXB0YWJsZSgpKSkKLSNlbmRpZgogICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJyb3IgcGFnZXMg
KHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0ZSBkYXRhIG9y
IHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAmJiAhKGRvY3VtZW50TG9hZGVyLT5zdWJzdGl0
dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCku
ZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgJiYgKCFmcmFtZUxvYWRlci5zdWJmcmFt
ZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpIHx8IGZyYW1lLnBhZ2UoKS0+c2V0dGluZ3MoKS5w
YWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDYxNTEyMDk1NjdhMDMzYTFhMzMyYmQyMmMzZDMyZGM4M2I3N2YxYzIu
LjdlMzM4MzRkM2MyYjVlNzVjMmQ5NzJlMTI5ODlhMTdmYmM1ZmVjNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtOTksMTkgKzk5LDE2IEBAIHN0YXRpYyBi
b29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKGNvbnN0IFJlc291cmNlTG9hZGVy
TWFwJiBsb2FkZXJzKQogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJz
Q29weTsKICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVyc0NvcHkpOwogICAg
IGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IGxvYWRlci0+aGFuZGxlKCk7Ci0gICAgICAgIGlmICghaGFuZGxlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRl
cigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVS
TChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZy
YW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclVSTChsb2Fk
ZXItPnJlcXVlc3QoKS51cmwoKSwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnBhZ2Uo
KS0+c2Vzc2lvbklEKCkpOwogICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIC8vIE9ubHkgaW1hZ2UgYW5kIFhIUiBsb2FkcyBk
byBwcmV2ZW50IHRoZSBwYWdlIGZyb20gZW50ZXJpbmcgdGhlIFBhZ2VDYWNoZS4KICAgICAgICAg
Ly8gQWxsIG5vbi1pbWFnZSBsb2FkcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgZnJvbSBlbnRlcmlu
ZyB0aGUgUGFnZUNhY2hlLgotICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlLT5pc0ltYWdlKCkp
CisgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UtPmlzSW1hZ2UoKSAmJiAhY2FjaGVkUmVzb3Vy
Y2UtPmlzTG9hZGVkVmlhWEhST25seSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYzM5OWM0NjgxM2QyYjgzZGM2Njg1Y2JiZjMy
OGY5ZWIzYTYwMWMzYy4uYjE0Zjg4ZmU3NTkyODM0MmNjY2UxY2JkOTc1YzMxNTM0NzRjMTJiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkNyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAt
NDE4LDYgKzQxOSwxMSBAQCBib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2Vk
UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIG1fc2FtZU9yaWdpblJlcXVlc3Qg
JiYgc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCitib29sIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6aXNYSFIoKSBjb25zdAoreworICAgIHJldHVybiBtX29wdGlvbnMu
aW5pdGlhdG9yID09IGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS54bWxodHRwcmVx
dWVzdDsKK30KKwogU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6c2Vj
dXJpdHlPcmlnaW4oKSBjb25zdAogewogICAgIHJldHVybiBtX29wdGlvbnMuc2VjdXJpdHlPcmln
aW4gPyBtX29wdGlvbnMuc2VjdXJpdHlPcmlnaW4uZ2V0KCkgOiBtX2RvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmgKaW5kZXggMmEzZjJmMDI3MTY1NmZlYzJkMDgzZTZhZDU2YjMyZDE2YjQwZDMzMy4u
OTQ0ZTI5OGE3YmI0NDJiMDBiMzcwZTU3MGI4ZjNiNThkNDcwZWQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtOTYsNiArOTYs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbG9hZFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7CiAgICAgICAgIGJvb2wgaXNB
bGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJik7CiAKKyAgICAgICAgYm9vbCBpc1hIUigpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOworCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OwogCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBtX3Jlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgK
aW5kZXggMGM5YTBmMjUzNGU0NzExNDQ2MGFmMTdhZjZmMTk5YjlkMGNiMWE4Zi4uY2JiODRjNDMx
MWI3MDAxOWYzMGIyYTg4M2ViYmJmNjljMDFjYTVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlci5oCkBAIC0zNiwxMCArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OSw5ICs2
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUHJlZmxpZ2h0UG9saWN5IHByZWZs
aWdodFBvbGljeTsgLy8gSWYgQWNjZXNzQ29udHJvbCBpcyB1c2VkLCBob3cgdG8gZGV0ZXJtaW5l
IGlmIGEgcHJlZmxpZ2h0IGlzIG5lZWRlZC4KICAgICAgICAgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbjsKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQogICAgICAg
ICBBdG9taWNTdHJpbmcgaW5pdGlhdG9yOwotI2VuZGlmCiAgICAgfTsKIAogICAgIC8vIFVzZWZ1
bCBmb3IgZG9pbmcgbG9hZGVyIG9wZXJhdGlvbnMgZnJvbSBhbnkgdGhyZWFkIChub3QgdGhyZWFk
c2FmZSwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCA3NTY0ZGUzZjM2NGEyODUzZWY5ZTU0OTlmNGMzZDZlNDY3MjNkNmJhLi5iZmFmM2E0
OTg5ZjE4OWI3YTIxNjYxYWMxZGNiN2YwYTk1YjFlYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTczNSw2ICs3MzUsMTggQEAgdW5z
aWduZWQgQ2FjaGVkUmVzb3VyY2U6Om92ZXJoZWFkU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNp
emVvZihDYWNoZWRSZXNvdXJjZSkgKyBtX3Jlc3BvbnNlLm1lbW9yeVVzYWdlKCkgKyBrQXZlcmFn
ZUNsaWVudHNIYXNoTWFwU2l6ZSArIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxl
bmd0aCgpICogMjsKIH0KIAorYm9vbCBDYWNoZWRSZXNvdXJjZTo6aXNMb2FkZWRWaWFYSFJPbmx5
KCkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IFJhd1Jlc291cmNlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykgeworICAgICAg
ICBpZiAoIWNsaWVudC5rZXktPmlzWEhSKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRMb2Fk
UHJpb3JpdHkoY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBsb2FkUHJpb3Jp
dHkpCiB7CiAgICAgaWYgKGxvYWRQcmlvcml0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMWRhMTFjZWZkMzVhNzJmODVhZjM1NzgwYWRkOGNl
ZjY2OTY1ZmUzMS4uYTY5MjIxZWU4YTRkNTFkMWExNDk2YTRmMTMxOTA1YWRmZjZmYjRlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTE1OCw2
ICsxNTgsOCBAQCBwdWJsaWM6CiAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgeyBy
ZXR1cm4gbV9sb2FkZXIuZ2V0KCk7IH0KIAorICAgIGJvb2wgaXNMb2FkZWRWaWFYSFJPbmx5KCkg
Y29uc3Q7CisKICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSW1h
Z2VSZXNvdXJjZTsgfQogICAgIC8vIEZJWE1FOiBDYWNoZWRSYXdSZXNvdXJjZSBjb3VsZCBiZSBl
aXRoZXIgYSBtYWluIHJlc291cmNlIG9yIGEgcmF3IFhIUiByZXNvdXJjZS4KICAgICBib29sIGlz
TWFpbk9yUmF3UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gTWFpblJlc291cmNl
IHx8IHR5cGUoKSA9PSBSYXdSZXNvdXJjZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAppbmRleCA3NTk1MTEwNDk3MTZkMjg4YjNk
ZmE0YThlYzhmYjcxNjAyMzY4YmNmLi5hZTQ1YmU1NDM0YzQ0ZWRhMjFhYWQ0YzUyOGU1NmQ0MDEz
OWQzYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaApAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2Fj
aGVkUmVzb3VyY2VDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVwcmVjYXRlZERpZFJlY2Vp
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1hIUigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIEJhc2VSZXNvdXJjZVR5cGU7IH0K
ICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUo
KSBjb25zdCB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggYzA5NmNiMWFjMGEwZWY5ZGQ5MTE2YWQwNjVjNTc3MjIxMzY1ZWRm
Yy4uYjIyNTM0M2FiOGEyYTY1YjE4NzBmNzAzZWQwMDQ2OTBkZTFjNGYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5
LmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRE9N
Rm9ybURhdGEuaCIKQEAgLTY0LDEwICs2NSw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShSRVNPVVJD
RV9USU1JTkcpCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFM
KFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB4bWxIdHRwUmVxdWVzdENvdW50ZXIsICgiWE1M
SHR0cFJlcXVlc3QiKSk7CkBAIC0xMzksNiArMTM2LDggQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3Byb2dy
ZXNzRXZlbnRUaHJvdHRsZSh0aGlzKQogICAgICwgbV9yZXNwb25zZVR5cGVDb2RlKFJlc3BvbnNl
VHlwZURlZmF1bHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQorICAgICwg
bV9yZXN1bWVUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0OjpyZXN1bWVUaW1lckZpcmVkKQor
ICAgICwgbV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyhmYWxzZSkKIHsKICNpZm5kZWYgTkRFQlVH
CiAgICAgeG1sSHR0cFJlcXVlc3RDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtNzY0LDkgKzc2Myw3
IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgb3B0aW9ucy5zZXRBbGxvd0NyZWRlbnRpYWxzKChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8
IG1faW5jbHVkZUNyZWRlbnRpYWxzKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5ID0gVXNlQWNjZXNzQ29udHJvbDsKICAgICBvcHRpb25zLnNlY3VyaXR5T3JpZ2luID0gc2Vj
dXJpdHlPcmlnaW4oKTsKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQogICAgIG9wdGlvbnMu
aW5pdGlhdG9yID0gY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLnhtbGh0dHByZXF1
ZXN0OwotI2VuZGlmCiAKICNpZiBFTkFCTEUoWEhSX1RJTUVPVVQpCiAgICAgaWYgKG1fdGltZW91
dE1pbGxpc2Vjb25kcykKQEAgLTEyNTMsNyArMTI1MCwxNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRUaW1lb3V0KCkKIAogYm9vbCBYTUxIdHRwUmVxdWVzdDo6Y2FuU3VzcGVuZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFtX2xvYWRlcjsKKyAgICAvLyBEb3Qgbm90IGF0dGVtcHQgdG8gc3Vz
cGVuZCBsb2FkaW5nIFhNTEh0dHBSZXF1ZXN0cyBpbiB3b3JrZXJzIHRocmVhZHMgZm9yIG5vdy4K
KyAgICBpZiAoIWlzPERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAg
ICAgcmV0dXJuICFtX2xvYWRlcjsKKworICAgIC8vIElmIHdlJ3JlIGluIGEgZG9jdW1lbnQgYW5k
IHRoZSBsb2FkIGV2ZW50IGhhcyBub3QgZmlyZWQgeWV0LCBjYW5jZWxsaW5nIHRoZSBsb2FkCisg
ICAgLy8gaW4gc3VzcGVuZCgpIG1heSBjYXVzZSB0aGUgbG9hZCBldmVudCB0byBiZSBmaXJlZCBh
bmQgYXJiaXRyYXJ5IEpTIGV4ZWN1dGlvbiwgd2hpY2gKKyAgICAvLyB3b3VsZCBiZSB1bnNhZmUu
IFRoZXJlZm9yZSwgd2UgcHJldmVudCBzdXNwZW5kaW5nIGluIHRoaXMgY2FzZS4KKyAgICBpZiAo
IWRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBYTUxIdHRwUmVxdWVzdDo6YWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC0xMjYxLDE4ICsxMjY4LDUwIEBAIGNvbnN0IGNo
YXIqIFhNTEh0dHBSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gIlhNTEh0dHBSZXF1ZXN0IjsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6c3VzcGVuZChS
ZWFzb25Gb3JTdXNwZW5zaW9uKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6c3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uIHJlYXNvbikKIHsKKyAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNz
ZXJ0Tm9FdmVudERpc3BhdGNoOworCiAgICAgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUuc3VzcGVu
ZCgpOworCisgICAgaWYgKG1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3Jl
c3VtZVRpbWVyLnN0b3AoKTsKKyAgICAgICAgbV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyA9IHRy
dWU7CisgICAgfQorCisgICAgaWYgKHJlYXNvbiA9PSBBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50
V2lsbEJlY29tZUluYWN0aXZlICYmIG1fbG9hZGVyKSB7CisgICAgICAgIC8vIEdvaW5nIGludG8g
UGFnZUNhY2hlLCBhYm9ydCB0aGUgcmVxdWVzdCBhbmQgZGlzcGF0Y2ggYSBuZXR3b3JrIGVycm9y
IG9uIHJlc3VtaW5nLgorICAgICAgICBnZW5lcmljRXJyb3IoKTsKKyAgICAgICAgbV9kaXNwYXRj
aEVycm9yT25SZXN1bWluZyA9IHRydWU7CisgICAgICAgIGJvb2wgYWJvcnRlZCA9IGludGVybmFs
QWJvcnQoKTsKKyAgICAgICAgLy8gSXQgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZSB0byByZXN0YXJ0
IHRoZSBsb2FkIHdoZW4gYWJvcnRpbmcgaW4gc3VzcGVuZCgpIGJlY2F1c2UKKyAgICAgICAgLy8g
d2UgYXJlIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgaW4gSlMgaW4gc3VzcGVuZCgpLgorICAgICAg
ICBBU1NFUlRfVU5VU0VEKGFib3J0ZWQsIGFib3J0ZWQpOworICAgIH0KIH0KIAogdm9pZCBYTUxI
dHRwUmVxdWVzdDo6cmVzdW1lKCkKIHsKKyAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNz
ZXJ0Tm9FdmVudERpc3BhdGNoOworCiAgICAgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUucmVzdW1l
KCk7CisKKyAgICAvLyBXZSBhcmUgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgSlMg
aW4gcmVzdW1lKCkgc28gZGlzcGF0Y2gKKyAgICAvLyB0aGUgZXJyb3IgZXZlbnQgaW4gYSB0aW1l
ci4KKyAgICBpZiAobV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyAmJiAhbV9yZXN1bWVUaW1lci5p
c0FjdGl2ZSgpKQorICAgICAgICBtX3Jlc3VtZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwor
dm9pZCBYTUxIdHRwUmVxdWVzdDo6cmVzdW1lVGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKG1f
ZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmcpOworICAgIGRpc3BhdGNoRXJyb3JFdmVudHMoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQpOworICAgIG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmcgPSBmYWxz
ZTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c3RvcCgpCiB7CisgICAgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKICAgICBpbnRlcm5hbEFib3J0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMTg0MDliNDgzMzc2OTA1
ZmRiNzg4MWRjZDMwZDUwNmNlNGU3ZmJmNS4uZmU5NDYwMjNhZTI5MjgwNzFhNzkwZTNiZDU1NGE4
NTFmODFlYzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTIwNSw2ICsy
MDUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnRzKGNvbnN0IEF0
b21pY1N0cmluZyYpOwogCisgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKCk7CisKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+IG1fdXBsb2FkOwogCiAgICAgVVJMIG1f
dXJsOwpAQCAtMjU0LDYgKzI1Niw5IEBAIHByaXZhdGU6CiAgICAgLy8gQW4gZW51bSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBhbGxvd2VkIHN0cmluZyB2YWx1ZXMgZm9yIHRoZSByZXNwb25zZVR5cGUg
YXR0cmlidXRlLgogICAgIFJlc3BvbnNlVHlwZUNvZGUgbV9yZXNwb25zZVR5cGVDb2RlOwogICAg
IGJvb2wgbV9yZXNwb25zZUNhY2hlSXNWYWxpZDsKKworICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7
CisgICAgYm9vbCBtX2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGEyNzMwNWVkODU2YjA2ZDgzOWY0YTZmMzNlZTY5NDVkMzc1NGU4
ZTcuLmI3OTcwOGU1MzRiZWFjNzNkMzNhN2YyMDllNjdjYmY4YjNhZmZlYTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wMy0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFhNTEh0dHBSZXF1ZXN0cyBzaG91bGQgbm90IHByZXZlbnQgYSBwYWdlIGZyb20g
ZW50ZXJpbmcgUGFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDI2MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5OTIzMDg1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3Rz
IHRvIG1ha2Ugc3VyZSB0aGF0IGxvYWRpbmcgWE1MSHR0cFJlcXVlc3RzIGRvIG5vdCBwcmV2ZW50
IGEKKyAgICAgICAgcGFnZSBmcm9tIGVudGVyaW5nIFBhZ2VDYWNoZS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXhoci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXhoci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtY2FjaGUt
aGVscGVyLmh0bWw6IEFkZGVkLgorCiAyMDE1LTAzLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTb21lIGV2ZW50IGhhbmRsZXIgZml4ZXMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXhoci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNDdhMmE3ODZhNDk4NzhlZDViMTE1M2ZmNTRiM2Mz
ZjdjN2I2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcGFnZS1jYWNoZS14aHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3Rz
IHRoYXQgYSBwYWdlIHdpdGggYSBsb2FkaW5nIFhNTEh0dHBSZXF1ZXN0IGdvZXMgaW50byB0aGUg
cGFnZSBjYWNoZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3BhZ2VzaG93IC0g
bm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJpbmcgY2FjaGUKK3BhZ2VzaG93IC0gZnJv
bSBjYWNoZQorUEFTUyBQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIHBh
Z2UgY2FjaGUKK1BBU1MgRXhlY3V0ZWQgdGhlIFhIUiBlcnJvciBoYW5kbGVyIGFmdGVyIHJlc3Rv
cmluZyBmcm9tIHBhZ2UgY2FjaGUKK1BBU1MgeGhyLnN0YXR1cyBpcyAwCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14aHIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YmY2OWE0NDIwMGE3NGZlNmI4ZWY0NTdmYzAwZjk1NjRmMDkyOTNlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLmh0
bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgbG9hZGluZyBYTUxIdHRwUmVx
dWVzdCBnb2VzIGludG8gdGhlIHBhZ2UgY2FjaGUuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK3ZhciByZXN0b3JlZEZyb21QYWdlQ2FjaGUgPSBmYWxzZTsKKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRV
c2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigicGFnZXNob3ciLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlc2hvdyAtICIg
KyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImZyb20gY2FjaGUiKTsKKworICAg
IGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSBkaWQgZW50
ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBwYWdlIGNhY2hlIik7CisgICAgICAgIHJlc3Rv
cmVkRnJvbVBhZ2VDYWNoZSA9IHRydWU7CisgICAgfQorfSwgZmFsc2UpOworCit3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJw
YWdlaGlkZSAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImVudGVyaW5n
IGNhY2hlIik7CisgICAgaWYgKCFldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiUGFnZSBkaWQgbm90IGVudGVyIHRoZSBwYWdlIGNhY2hlLiIpOworICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9Cit9LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHhockxvYWRlZCgpCit7Cisg
ICAgdGVzdEZhaWxlZCgiVGhlIFhNTEh0dHBSZXF1ZXN0IHNob3VsZCBub3QgaGF2ZWQgbG9hZGVk
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHhockVycm9yKCkgeworICAg
IGlmIChyZXN0b3JlZEZyb21QYWdlQ2FjaGUpCisgICAgICAgIHRlc3RQYXNzZWQoIkV4ZWN1dGVk
IHRoZSBYSFIgZXJyb3IgaGFuZGxlciBhZnRlciByZXN0b3JpbmcgZnJvbSBwYWdlIGNhY2hlIik7
CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJFeGVjdXRlZCB0aGUgWEhSIGVycm9yIGhh
bmRsZXIgYmVmb3JlIHJlc3RvcmluZyBmcm9tIHBhZ2UgY2FjaGUiKTsKKworICAgIHNob3VsZEJl
KCJ4aHIuc3RhdHVzIiwgIjAiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKKyAgICB4aHIub25sb2FkID0geGhyTG9hZGVkOworICAgIHhoci5vbmVycm9y
ID0geGhyRXJyb3I7CisgICAgLy8gU2xvdyBsb2FkaW5nIFhIUiAoMy1zZWNvbmQgc3RhbGwpLgor
ICAgIHhoci5vcGVuKCJHRVQiLCAiL3Jlc291cmNlcy9sb2FkLWFuZC1zdGFsbC5jZ2k/bmFtZT0u
Li8uLi8uLi9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3RpbWVvdXQveG1saHR0cHJlcXVlc3Qt
dGltZW91dC5qcyZzdGFsbEZvcj0zJnN0YWxsQXQ9MCZtaW1lVHlwZT10ZXh0L3BsYWluIiwgdHJ1
ZSk7CisgICAgeGhyLnNlbmQoKTsKKworICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGluIGEg
c2V0VGltZW91dCBiZWNhdXNlIGEgbmF2aWdhdGlvbiBpbnNpZGUgdGhlIG9ubG9hZCBoYW5kbGVy
IHdvdWxkCisgICAgLy8gbm90IGNyZWF0ZSBhIGhpc3RvcnkgZW50cnkuCisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgIC8vIEZvcmNlIGEgYmFjayBuYXZpZ2F0aW9uIGJhY2sgdG8g
dGhpcyBwYWdlLgorICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2VzL3BhZ2Ut
Y2FjaGUtaGVscGVyLmh0bWwiOworICAgIH0sIDApOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2EwZjc3MTE4NzVjOTg1MWYxYzM4NWZmYzlkNzU0YmE3MjliZGRlMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1j
YWNoZS1oZWxwZXIuaHRtbApAQCAtMCwwICsxLDkgQEAKK1RoaXMgcGFnZSBzaG91bGQgZ28gYmFj
ay4gSWYgYSB0ZXN0IG91dHB1dHMgdGhlIGNvbnRlbnRzIG9mIHRoaXMKK3BhZ2UsIHRoZW4gdGhl
IHRlc3QgcGFnZSBmYWlsZWQgdG8gZW50ZXIgdGhlIHBhZ2UgY2FjaGUuCis8c2NyaXB0PgorICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICBoaXN0b3J5LmJhY2soKTsKKyAgICB9LCAwKTsKKyAgfSwg
ZmFsc2UpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248588</attachid>
            <date>2015-03-13 10:11:41 -0700</date>
            <delta_ts>2015-03-13 10:59:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142612-20150313101120.patch</filename>
            <type>text/plain</type>
            <size>21525</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTU5MzUzMzhiYTBj
ZTdjY2RkZGUzNzMxOWJkZWQ4MGY5NmE4OC4uNGMzNjYwYjQzNzgyOGMxOTUwMzQ5MTliMjcwYWIy
YzMzZTgzNzJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE1LTAzLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIHNo
b3VsZCBub3QgcHJldmVudCBhIHBhZ2UgZnJvbSBlbnRlcmluZyBQYWdlQ2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjYxMgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTk5MjMwODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KKworICAgICAgICBNYWtlIFhNTEh0dHBSZXF1ZXN0IEFjdGl2ZURPTU9iamVj
dHMgc3VzcGVuZGFibGUgaW4gbW9zdCBjYXNlcyB0bworICAgICAgICBkcmFzdGljYWxseSBpbXBy
b3ZlIHRoZSBsaWtlbGlob29kIG9mIHBhZ2VzIHVzaW5nIHRoZW0gdG8gZW50ZXIKKyAgICAgICAg
UGFnZUNhY2hlLiBYTUxIdHRwUmVxdWVzdCB1c2VkIHRvIGJlIG9ubHkgc3VzcGVuZGFibGUgd2hl
biBub3QKKyAgICAgICAgbG9hZGluZy4gQWZ0ZXIgdGhpcyBwYXRjaCwgaWYgdGhlIFhNTEh0dHBS
ZXF1ZXN0IGlzIGxvYWRpbmcgd2hlbgorICAgICAgICBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUg
cGFnZSwgaXQgd2lsbCBiZSBhYm9ydGVkIGFuZCB0aGUgcGFnZQorICAgICAgICB3aWxsIGVudGVy
IHRoZSBQYWdlQ2FjaGUuIFVwb24gcmVzdG9yaW5nIHRoZSBwYWdlIGZyb20gUGFnZUNhY2hlLAor
ICAgICAgICB0aGUgWE1MSHR0cFJlcXVlc3RzJyBlcnJvciBoYW5kbGVycyB3aWxsIGJlIGV4ZWN1
dGVkIHRvIGdpdmUgdGhlbQorICAgICAgICBhIGNoYW5jZSB0byByZWxvYWQgaWYgdGhleSB3YW50
IHRvLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXho
ci5odG1sCisKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNh
Y2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgRG8gbm90IHBy
ZXZlbnQgYSBwYWdlIHRvIGVudGVyIHRoZSBwYWdlIGNhY2hlIGZmIHRoZSBtYWluIGRvY3VtZW50
IGhhcworICAgICAgICBhbiBlcnJvciB0aGF0IGlzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgcmVt
YWluaW5nIHN1YnJlc291cmNlIGxvYWRlcnMKKyAgICAgICAgYXJlIGZvciBYSFIuIFdlIGV4dGVu
ZCB0aGUgcHJlLWV4aXN0aW5nIG1lY2hhbmlzbSB1c2VkIG9uIGlPUywgd2hpY2gKKyAgICAgICAg
YWxsb3dlZCBQYWdlQ2FjaGluZyBpZiB0aGUgcmVtYWluaW5nIHJlc291cmNlIGxvYWRzIGFyZSBm
b3IgaW1hZ2VzLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKToKKyAgICAgICAg
TWFyayBYSFIgbG9hZGVycyBhcyBQYWdlQ2FjaGUgYWNjZXB0YWJsZS4KKworICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc1hNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFyZUFsbENsaWVudHNYTUxIdHRwUmVx
dWVzdHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnQ6OmlzWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNhblN1c3BlbmQp
OgorICAgICAgICBSZXBvcnQgdGhhdCB3ZSBjYW4gc3VzcGVuZCBYTUxIdHRwUmVxdWVzdHMgYXMg
bG9uZyBhcyB0aGUgd2luZG93IGxvYWQKKyAgICAgICAgZXZlbnQgaGFzIGFscmVhZHkgZmlyZWQu
IElmIHRoZSB3aW5kb3cgbG9hZCBldmVudCBoYXMgbm90IGZpcmVkIHlldCwKKyAgICAgICAgaXQg
d291bGQgYmUgdW5zYWZlIHRvIGNhbmNlbCB0aGUgbG9hZCBpbiBzdXNwZW5kKCkgYXMgaXQgd291
bGQKKyAgICAgICAgcG90ZW50aWFsbHkgY2F1c2UgYXJiaXRyYXJ5IEpTIGV4ZWN1dGlvbiB3aGls
ZSBzdXNwZW5kaW5nLgorCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c3VzcGVu
ZCk6CisgICAgICAgIElmIHN1c3BlbmRpbmcgZm9yIFBhZ2VDYWNoZSBhbmQgdGhlIHJlcXVlc3Qg
aXMgY3VycmVudGx5IGxvYWRpbmcsIGFib3J0CisgICAgICAgIHRoZSBsb2FkIGFuZCBtYXJrIHRo
YXQgd2Ugc2hvdWxkIGZpcmUgdGhlIGVycm9yIGV2ZW50IHVwb24gcmVzdG9yaW5nCisgICAgICAg
IGZyb20gUGFnZUNhY2hlLgorCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVz
dW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXN1bWVUaW1lckZpcmVk
KToKKyAgICAgICAgVXBvbiByZXN1bWluZywgZmlyZSB0aGUgZXJyb3IgZXZlbnQgaW4gYSB0aW1l
ciBpZiB0aGUgbG9hZCB3YXMgYWJvcnRlZAorICAgICAgICBmb3Igc3VzcGVuZGluZy4gV2UgbmVl
ZCB0byBkbyB0aGlzIGluIGEgdGltZXIgYmVjYXVzZSB3ZSBhcmUgbm90IGFsbG93ZWQKKyAgICAg
ICAgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgSlMgaW5zaWRlIHJlc3VtZSgpLgorCisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c3RvcCk6CisgICAgICAgIEFkZCBhIGFzc2VydGlvbiB0
byBtYWtlIHN1cmUgd2UgYXJlIG5vdCBmaXJpbmcgZXZlbnQgaW5zaWRlIHN0b3AoKSBhcworICAg
ICAgICB0aGlzIHdvdWxkIHBvdGVudGlhbGx5IGNhdXNlIGFyYml0cmFyeSBKUyBleGVjdXRpb24g
YW5kIGl0IHdvdWxkIGJlCisgICAgICAgIHVuc2FmZS4gSXQgc2VlbXMgdG8gbWUgdGhhdCBvdXIg
Y29kZSBpcyBjdXJyZW50bHkgdW5zYWZlIGJ1dCB0aGUKKyAgICAgICAgYXNzZXJ0aW9uIGRvZXMg
bm90IHNlZW0gdG8gYmUgaGl0IGJ5IG91ciBjdXJyZW50IGxheW91dCB0ZXN0cy4gSSBhbQorICAg
ICAgICBhZGRpbmcgdGhlIGFzc2VydGlvbiBhcyBpdCB3b3VsZCBtYWtlIGl0IGNsZWFyIHdlIGhh
dmUgYSBidWcgYW5kIHdlCisgICAgICAgIG5lZWQgdG8gZml4IGl0LgorCisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTUtMDMtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFNvbWUgZXZlbnQgaGFuZGxlciBmaXhlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDAxY2M0NTU5MTBmOTIxYTUwMTIyNTE3NTNiYjYwZmQ0
NjRjMTViZDcuLjk5ZjU2MzBjYzYyNjMyYjk1OGU5MzBkN2FjYjZjYjI4NDNmMTNhZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTEyOCwxNCArMTI4LDExIEBAIHN0YXRp
YyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhbWUmIGZyYW1lLCBEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCYKICAgICBpZiAoIWZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPm1haW5Eb2N1bWVudEVycm9yKCkuaXNOdWxsKCkpIHsKICAgICAgICAgUENMT0coIiAgIC1N
YWluIGRvY3VtZW50IGhhcyBhbiBlcnJvciIpOwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJl
RGlhZ25vc3RpY01lc3NhZ2UoZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQsIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6bWFpbkRvY3VtZW50RXJyb3JLZXkoKSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IE1haW5Eb2N1bWVudEVycm9yOwotI2Vsc2UKKwog
ICAgICAgICBpZiAoZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3VtZW50
RXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpICYmIGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnN1YnJlc291cmNlTG9hZGVyc0FyZVBhZ2VDYWNoZUFjY2VwdGFibGUoKSkKLSAgICAgICAg
ICAgIFBDTE9HKCIgICAgLUJ1dCwgaXQgd2FzIGEgY2FuY2VsbGF0aW9uIGFuZCBhbGwgbG9hZGVy
cyBkdXJpbmcgdGhlIGNhbmNlbCB3ZXJlIGxvYWRpbmcgaW1hZ2VzLiIpOworICAgICAgICAgICAg
UENMT0coIiAgICAtQnV0LCBpdCB3YXMgYSBjYW5jZWxsYXRpb24gYW5kIGFsbCBsb2FkZXJzIGR1
cmluZyB0aGUgY2FuY2VsYXRpb24gd2VyZSBsb2FkaW5nIGltYWdlcyBvciBYSFIuIik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBNYWluRG9jdW1lbnRF
cnJvcjsKLSNlbmRpZgogICAgIH0KICAgICBpZiAoZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaXMgYW4gZXJyb3IgcGFnZSIpOwpAQCAtMzA0LDExICsz
MDEsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZShG
cmFtZSYgZnJhbWUpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKTsK
ICAgICAKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIKLSNpZiAhUExBVEZPUk0oSU9TKQotICAg
ICAgICAmJiBkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQotI2Vs
c2UKICAgICAgICAgJiYgKGRvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpLmlzTnVs
bCgpIHx8IChkb2N1bWVudExvYWRlci0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc0NhbmNlbGxhdGlv
bigpICYmIGRvY3VtZW50TG9hZGVyLT5zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVBY2Nl
cHRhYmxlKCkpKQotI2VuZGlmCiAgICAgICAgIC8vIERvIG5vdCBjYWNoZSBlcnJvciBwYWdlcyAo
dGhlc2UgY2FuIGJlIHJlY29nbml6ZWQgYXMgcGFnZXMgd2l0aCBzdWJzdGl0dXRlIGRhdGEgb3Ig
dW5yZWFjaGFibGUgVVJMcykuCiAgICAgICAgICYmICEoZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1
dGVEYXRhKCkuaXNWYWxpZCgpICYmICFkb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5m
YWlsaW5nVVJMKCkuaXNFbXB0eSgpKQogICAgICAgICAmJiAoIWZyYW1lTG9hZGVyLnN1YmZyYW1l
TG9hZGVyKCkuY29udGFpbnNQbHVnaW5zKCkgfHwgZnJhbWUucGFnZSgpLT5zZXR0aW5ncygpLnBh
Z2VDYWNoZVN1cHBvcnRzUGx1Z2lucygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggNjE1MTIwOTU2N2EwMzNhMWEzMzJiZDIyYzNkMzJkYzgzYjc3ZjFjMi4u
MDA5NzA0MzFiMDZmZTUxMTc4NDBjZmViMjQ2ODUxZDE4YjRjMGZmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC05OSwxOSArOTksMTYgQEAgc3RhdGljIGJv
b2wgYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFibGUoY29uc3QgUmVzb3VyY2VMb2FkZXJN
YXAmIGxvYWRlcnMpCiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnND
b3B5OwogICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7CiAgICAg
Zm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkgewotICAgICAgICBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlID0gbG9hZGVyLT5oYW5kbGUoKTsKLSAgICAgICAgaWYgKCFoYW5kbGUpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgaWYgKCFsb2FkZXItPmZyYW1lTG9hZGVy
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yVVJM
KGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJh
bWUoKS5wYWdlKCktPnNlc3Npb25JRCgpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yVVJMKGxvYWRl
ci0+cmVxdWVzdCgpLnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkucGFnZSgp
LT5zZXNzaW9uSUQoKSk7CiAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gT25seSBpbWFnZSBhbmQgWEhSIGxvYWRzIGRv
IHByZXZlbnQgdGhlIHBhZ2UgZnJvbSBlbnRlcmluZyB0aGUgUGFnZUNhY2hlLgogICAgICAgICAv
LyBBbGwgbm9uLWltYWdlIGxvYWRzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBmcm9tIGVudGVyaW5n
IHRoZSBQYWdlQ2FjaGUuCi0gICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UtPmlzSW1hZ2UoKSkK
KyAgICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZS0+aXNJbWFnZSgpICYmICFjYWNoZWRSZXNvdXJj
ZS0+YXJlQWxsQ2xpZW50c1hNTEh0dHBSZXF1ZXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYzM5OWM0NjgxM2QyYjgzZGM2
Njg1Y2JiZjMyOGY5ZWIzYTYwMWMzYy4uNTMxZTlhMzVlZTI0NzU1NmIyYTMxZGQ4ODNkMWZiYmIx
MDgzM2NlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5p
dGlhdG9ycy5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1
ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgpAQCAtNDE4LDYgKzQxOSwxMSBAQCBib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIG1fc2FtZU9yaWdp
blJlcXVlc3QgJiYgc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCitib29s
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNYTUxIdHRwUmVxdWVzdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fb3B0aW9ucy5pbml0aWF0b3IgPT0gY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5p
dGlhdG9ycygpLnhtbGh0dHByZXF1ZXN0OworfQorCiBTZWN1cml0eU9yaWdpbiogRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
b3B0aW9ucy5zZWN1cml0eU9yaWdpbiA/IG1fb3B0aW9ucy5zZWN1cml0eU9yaWdpbi5nZXQoKSA6
IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCAyYTNmMmYwMjcxNjU2ZmVjMmQwODNl
NmFkNTZiMzJkMTZiNDBkMzMzLi4xN2QzY2VkY2JhYzY3NTI3YTJkYjI3Zjk4ZDIzYzAwNWVjMjE0
OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5oCkBAIC05Niw2ICs5Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5
KTsKICAgICAgICAgYm9vbCBpc0FsbG93ZWRSZWRpcmVjdChjb25zdCBVUkwmKTsKIAorICAgICAg
ICBib29sIGlzWE1MSHR0cFJlcXVlc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKwogICAgICAg
ICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDBjOWEwZjI1MzRlNDcxMTQ0NjBh
ZjE3YWY2ZjE5OWI5ZDBjYjFhOGYuLmNiYjg0YzQzMTFiNzAwMTlmMzBiMmE4ODNlYmJiZjY5YzAx
Y2E1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaApAQCAtMzYs
MTAgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VElNSU5HKQogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjksOSArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3k7IC8vIElmIEFjY2Vzc0Nv
bnRyb2wgaXMgdXNlZCwgaG93IHRvIGRldGVybWluZSBpZiBhIHByZWZsaWdodCBpcyBuZWVkZWQu
CiAgICAgICAgIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xp
Y3k7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47Ci0jaWYg
RU5BQkxFKFJFU09VUkNFX1RJTUlORykKICAgICAgICAgQXRvbWljU3RyaW5nIGluaXRpYXRvcjsK
LSNlbmRpZgogICAgIH07CiAKICAgICAvLyBVc2VmdWwgZm9yIGRvaW5nIGxvYWRlciBvcGVyYXRp
b25zIGZyb20gYW55IHRocmVhZCAobm90IHRocmVhZHNhZmUsIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNzU2NGRlM2YzNjRhMjg1M2Vm
OWU1NDk5ZjRjM2Q2ZTQ2NzIzZDZiYS4uZDQ5ZGQ3MjFkODYyNTU3NDVlNmIwOGZkN2QzNWVmNTMz
NWNlODJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCkBAIC03MzUsNiArNzM1LDE4IEBAIHVuc2lnbmVkIENhY2hlZFJlc291cmNlOjpvdmVy
aGVhZFNpemUoKSBjb25zdAogICAgIHJldHVybiBzaXplb2YoQ2FjaGVkUmVzb3VyY2UpICsgbV9y
ZXNwb25zZS5tZW1vcnlVc2FnZSgpICsga0F2ZXJhZ2VDbGllbnRzSGFzaE1hcFNpemUgKyBtX3Jl
c291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sZW5ndGgoKSAqIDI7CiB9CiAKK2Jvb2wgQ2Fj
aGVkUmVzb3VyY2U6OmFyZUFsbENsaWVudHNYTUxIdHRwUmVxdWVzdHMoKSBjb25zdAoreworICAg
IGlmICh0eXBlKCkgIT0gUmF3UmVzb3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKSB7CisgICAgICAgIGlmICghY2xpZW50Lmtl
eS0+aXNYTUxIdHRwUmVxdWVzdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0TG9hZFByaW9y
aXR5KGNvbnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYgbG9hZFByaW9yaXR5KQog
ewogICAgIGlmIChsb2FkUHJpb3JpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCmluZGV4IDFkYTExY2VmZDM1YTcyZjg1YWYzNTc4MGFkZDhjZWY2Njk2
NWZlMzEuLjE3ZjY2NTY4NWY3MmNjMzkxMTU5NjQ3M2JlMGViMWFhMTIzMTI5YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xNTgsNiArMTU4
LDggQEAgcHVibGljOgogCiAgICAgU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIHsgcmV0dXJu
IG1fbG9hZGVyLmdldCgpOyB9CiAKKyAgICBib29sIGFyZUFsbENsaWVudHNYTUxIdHRwUmVxdWVz
dHMoKSBjb25zdDsKKwogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBJbWFnZVJlc291cmNlOyB9CiAgICAgLy8gRklYTUU6IENhY2hlZFJhd1Jlc291cmNlIGNvdWxk
IGJlIGVpdGhlciBhIG1haW4gcmVzb3VyY2Ugb3IgYSByYXcgWEhSIHJlc291cmNlLgogICAgIGJv
b2wgaXNNYWluT3JSYXdSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBNYWluUmVz
b3VyY2UgfHwgdHlwZSgpID09IFJhd1Jlc291cmNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCmluZGV4IDc1OTUxMTA0OTcxNmQy
ODhiM2RmYTRhOGVjOGZiNzE2MDIzNjhiY2YuLjBiNDU0M2Q1YTU5NzllY2M0MmY2ZDI2NGI0NDJl
NzQ5MzEzYTVjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUNsaWVudC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DYWNoZWRSZXNvdXJjZUNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXByZWNhdGVkRGlk
UmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKikgeyB9CisgICAgdmlydHVhbCBi
b29sIGlzWE1MSHR0cFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3Rh
dGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBCYXNl
UmVzb3VyY2VUeXBlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVz
b3VyY2VDbGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGMwOTZjYjFhYzBhMGVmOWRkOTExNmFk
MDY1YzU3NzIyMTM2NWVkZmMuLjQxMzU2MmE5MTdmYjE3MzRiZjdkNDVlZGJiZGNjZjNmZWE0MTAy
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJCbG9iLmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5o
IgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCkBAIC02NCwxMCArNjUsNiBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNp
ZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERFRklORV9E
RUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgeG1sSHR0cFJlcXVl
c3RDb3VudGVyLCAoIlhNTEh0dHBSZXF1ZXN0IikpOwpAQCAtMTM5LDYgKzEzNiw4IEBAIFhNTEh0
dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUodGhpcykKICAgICAsIG1fcmVzcG9uc2VU
eXBlQ29kZShSZXNwb25zZVR5cGVEZWZhdWx0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZChmYWxzZSkKKyAgICAsIG1fcmVzdW1lVGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6cmVz
dW1lVGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmcoZmFsc2UpCiB7
CiAjaWZuZGVmIE5ERUJVRwogICAgIHhtbEh0dHBSZXF1ZXN0Q291bnRlci5pbmNyZW1lbnQoKTsK
QEAgLTc2NCw5ICs3NjMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscygobV9zYW1l
T3JpZ2luUmVxdWVzdCB8fCBtX2luY2x1ZGVDcmVkZW50aWFscykgPyBBbGxvd1N0b3JlZENyZWRl
bnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICBvcHRpb25zLmNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSA9IFVzZUFjY2Vzc0NvbnRyb2w7CiAgICAgb3B0aW9ucy5zZWN1
cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlO
RykKICAgICBvcHRpb25zLmluaXRpYXRvciA9IGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMoKS54bWxodHRwcmVxdWVzdDsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFhIUl9USU1FT1VUKQog
ICAgIGlmIChtX3RpbWVvdXRNaWxsaXNlY29uZHMpCkBAIC0xMjUzLDcgKzEyNTAsMTAgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkVGltZW91dCgpCiAKIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmNh
blN1c3BlbmQoKSBjb25zdAogewotICAgIHJldHVybiAhbV9sb2FkZXI7CisgICAgLy8gSWYgdGhl
IGxvYWQgZXZlbnQgaGFzIG5vdCBmaXJlZCB5ZXQsIGNhbmNlbGxpbmcgdGhlIGxvYWQgaW4gc3Vz
cGVuZCgpIG1heSBjYXVzZQorICAgIC8vIHRoZSBsb2FkIGV2ZW50IHRvIGJlIGZpcmVkIGFuZCBh
cmJpdHJhcnkgSlMgZXhlY3V0aW9uLCB3aGljaCB3b3VsZCBiZSB1bnNhZmUuCisgICAgLy8gVGhl
cmVmb3JlLCB3ZSBwcmV2ZW50IHN1c3BlbmRpbmcgaW4gdGhpcyBjYXNlLgorICAgIHJldHVybiBk
b2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpOwogfQogCiBjb25zdCBjaGFyKiBYTUxIdHRw
UmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC0xMjYxLDE4ICsxMjYxLDUw
IEBAIGNvbnN0IGNoYXIqIFhNTEh0dHBSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKICAgICByZXR1cm4gIlhNTEh0dHBSZXF1ZXN0IjsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVz
dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6c3Vz
cGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKIHsKKyAgICBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworCiAgICAgbV9wcm9ncmVzc0V2ZW50VGhy
b3R0bGUuc3VzcGVuZCgpOworCisgICAgaWYgKG1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkgewor
ICAgICAgICBtX3Jlc3VtZVRpbWVyLnN0b3AoKTsKKyAgICAgICAgbV9kaXNwYXRjaEVycm9yT25S
ZXN1bWluZyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHJlYXNvbiA9PSBBY3RpdmVET01PYmpl
Y3Q6OkRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlICYmIG1fbG9hZGVyKSB7CisgICAgICAgIC8v
IEdvaW5nIGludG8gUGFnZUNhY2hlLCBhYm9ydCB0aGUgcmVxdWVzdCBhbmQgZGlzcGF0Y2ggYSBu
ZXR3b3JrIGVycm9yIG9uIHJlc3VtaW5nLgorICAgICAgICBnZW5lcmljRXJyb3IoKTsKKyAgICAg
ICAgbV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyA9IHRydWU7CisgICAgICAgIGJvb2wgYWJvcnRl
ZCA9IGludGVybmFsQWJvcnQoKTsKKyAgICAgICAgLy8gSXQgc2hvdWxkIG5vdCBiZSBwb3NzaWJs
ZSB0byByZXN0YXJ0IHRoZSBsb2FkIHdoZW4gYWJvcnRpbmcgaW4gc3VzcGVuZCgpIGJlY2F1c2UK
KyAgICAgICAgLy8gd2UgYXJlIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgaW4gSlMgaW4gc3VzcGVu
ZCgpLgorICAgICAgICBBU1NFUlRfVU5VU0VEKGFib3J0ZWQsIGFib3J0ZWQpOworICAgIH0KIH0K
IAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6cmVzdW1lKCkKIHsKKyAgICBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworCiAgICAgbV9wcm9ncmVzc0V2ZW50VGhy
b3R0bGUucmVzdW1lKCk7CisKKyAgICAvLyBXZSBhcmUgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSBh
cmJpdHJhcnkgSlMgaW4gcmVzdW1lKCkgc28gZGlzcGF0Y2gKKyAgICAvLyB0aGUgZXJyb3IgZXZl
bnQgaW4gYSB0aW1lci4KKyAgICBpZiAobV9kaXNwYXRjaEVycm9yT25SZXN1bWluZyAmJiAhbV9y
ZXN1bWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Jlc3VtZVRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBYTUxIdHRwUmVxdWVzdDo6cmVzdW1lVGltZXJGaXJlZCgpCit7Cisg
ICAgQVNTRVJUKG1fZGlzcGF0Y2hFcnJvck9uUmVzdW1pbmcpOworICAgIG1fZGlzcGF0Y2hFcnJv
ck9uUmVzdW1pbmcgPSBmYWxzZTsKKyAgICBkaXNwYXRjaEVycm9yRXZlbnRzKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50KTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c3RvcCgpCiB7CisgICAg
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKICAgICBpbnRl
cm5hbEFib3J0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMTg0
MDliNDgzMzc2OTA1ZmRiNzg4MWRjZDMwZDUwNmNlNGU3ZmJmNS4uZmU5NDYwMjNhZTI5MjgwNzFh
NzkwZTNiZDU1NGE4NTFmODFlYzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTIwNSw2ICsyMDUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaEVycm9yRXZl
bnRzKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCisgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKCk7
CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+IG1fdXBsb2FkOwog
CiAgICAgVVJMIG1fdXJsOwpAQCAtMjU0LDYgKzI1Niw5IEBAIHByaXZhdGU6CiAgICAgLy8gQW4g
ZW51bSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbGxvd2VkIHN0cmluZyB2YWx1ZXMgZm9yIHRoZSBy
ZXNwb25zZVR5cGUgYXR0cmlidXRlLgogICAgIFJlc3BvbnNlVHlwZUNvZGUgbV9yZXNwb25zZVR5
cGVDb2RlOwogICAgIGJvb2wgbV9yZXNwb25zZUNhY2hlSXNWYWxpZDsKKworICAgIFRpbWVyIG1f
cmVzdW1lVGltZXI7CisgICAgYm9vbCBtX2Rpc3BhdGNoRXJyb3JPblJlc3VtaW5nOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEyNzMwNWVkODU2YjA2ZDgzOWY0YTZmMzNl
ZTY5NDVkMzc1NGU4ZTcuLjFiNjIzMzBhMWVhODI5MmViZmI5YmRiOGE2NDY5MjY0Yzk1OTczMDkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wMy0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0cyBzaG91bGQgbm90IHByZXZlbnQg
YSBwYWdlIGZyb20gZW50ZXJpbmcgUGFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5
OTIzMDg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAg
ICAgICAgQWRkIGEgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgbG9hZGluZyBYTUxIdHRwUmVxdWVz
dHMgZG8gbm90IHByZXZlbnQgYQorICAgICAgICBwYWdlIGZyb20gZW50ZXJpbmcgUGFnZUNhY2hl
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUteGhyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2Fj
aGUteGhyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbDogQWRkZWQuCisKIDIwMTUtMDMtMDkgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgZXZlbnQgaGFuZGxlciBm
aXhlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2Ut
Y2FjaGUteGhyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9wYWdlLWNhY2hlLXhoci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0N2EyYTc4NmE0OTg3
OGVkNWIxMTUzZmY1NGIzYzNmN2M3YjY2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXhoci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNSBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBhIGxvYWRpbmcgWE1MSHR0cFJlcXVl
c3QgZ29lcyBpbnRvIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworcGFnZXNob3cgLSBub3QgZnJvbSBjYWNoZQorcGFnZWhpZGUgLSBlbnRlcmluZyBjYWNo
ZQorcGFnZXNob3cgLSBmcm9tIGNhY2hlCitQQVNTIFBhZ2UgZGlkIGVudGVyIGFuZCB3YXMgcmVz
dG9yZWQgZnJvbSB0aGUgcGFnZSBjYWNoZQorUEFTUyBFeGVjdXRlZCB0aGUgWEhSIGVycm9yIGhh
bmRsZXIgYWZ0ZXIgcmVzdG9yaW5nIGZyb20gcGFnZSBjYWNoZQorUEFTUyB4aHIuc3RhdHVzIGlz
IDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS14
aHIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLXho
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiZjY5YTQ0MjAwYTc0ZmU2YjhlZjQ1N2ZjMDBmOTU2NGYwOTI5
M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cGFnZS1jYWNoZS14aHIuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggYSBs
b2FkaW5nIFhNTEh0dHBSZXF1ZXN0IGdvZXMgaW50byB0aGUgcGFnZSBjYWNoZS4nKTsKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlc3RvcmVkRnJvbVBhZ2VDYWNoZSA9IGZh
bHNlOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVi
dWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZnJv
bSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0UGFz
c2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIHBhZ2UgY2FjaGUi
KTsKKyAgICAgICAgcmVzdG9yZWRGcm9tUGFnZUNhY2hlID0gdHJ1ZTsKKyAgICB9Cit9LCBmYWxz
ZSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgZGVidWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJu
b3QgIikgKyAiZW50ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIHBhZ2UgY2FjaGUuIik7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30sIGZhbHNlKTsKKworZnVuY3Rpb24g
eGhyTG9hZGVkKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJUaGUgWE1MSHR0cFJlcXVlc3Qgc2hvdWxk
IG5vdCBoYXZlZCBsb2FkZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24g
eGhyRXJyb3IoKSB7CisgICAgaWYgKHJlc3RvcmVkRnJvbVBhZ2VDYWNoZSkKKyAgICAgICAgdGVz
dFBhc3NlZCgiRXhlY3V0ZWQgdGhlIFhIUiBlcnJvciBoYW5kbGVyIGFmdGVyIHJlc3RvcmluZyBm
cm9tIHBhZ2UgY2FjaGUiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIkV4ZWN1dGVk
IHRoZSBYSFIgZXJyb3IgaGFuZGxlciBiZWZvcmUgcmVzdG9yaW5nIGZyb20gcGFnZSBjYWNoZSIp
OworCisgICAgc2hvdWxkQmUoInhoci5zdGF0dXMiLCAiMCIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAg
IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vbmxvYWQgPSB4aHJMb2FkZWQ7
CisgICAgeGhyLm9uZXJyb3IgPSB4aHJFcnJvcjsKKyAgICAvLyBTbG93IGxvYWRpbmcgWEhSICgz
LXNlY29uZCBzdGFsbCkuCisgICAgeGhyLm9wZW4oIkdFVCIsICIvcmVzb3VyY2VzL2xvYWQtYW5k
LXN0YWxsLmNnaT9uYW1lPS4uLy4uLy4uL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdGltZW91
dC94bWxodHRwcmVxdWVzdC10aW1lb3V0LmpzJnN0YWxsRm9yPTMmc3RhbGxBdD0wJm1pbWVUeXBl
PXRleHQvcGxhaW4iLCB0cnVlKTsKKyAgICB4aHIuc2VuZCgpOworCisgICAgLy8gVGhpcyBuZWVk
cyB0byBoYXBwZW4gaW4gYSBzZXRUaW1lb3V0IGJlY2F1c2UgYSBuYXZpZ2F0aW9uIGluc2lkZSB0
aGUgb25sb2FkIGhhbmRsZXIgd291bGQKKyAgICAvLyBub3QgY3JlYXRlIGEgaGlzdG9yeSBlbnRy
eS4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgLy8gRm9yY2UgYSBiYWNrIG5h
dmlnYXRpb24gYmFjayB0byB0aGlzIHBhZ2UuCisgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9
ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCI7CisgICAgfSwgMCk7Cit9LCBmYWxz
ZSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxw
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYTBmNzcxMTg3NWM5ODUxZjFjMzg1ZmZjOWQ3NTRiYTcyOWJk
ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sCkBAIC0wLDAgKzEsOSBAQAorVGhpcyBw
YWdlIHNob3VsZCBnbyBiYWNrLiBJZiBhIHRlc3Qgb3V0cHV0cyB0aGUgY29udGVudHMgb2YgdGhp
cworcGFnZSwgdGhlbiB0aGUgdGVzdCBwYWdlIGZhaWxlZCB0byBlbnRlciB0aGUgcGFnZSBjYWNo
ZS4KKzxzY3JpcHQ+CisgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24o
KSB7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIGhpc3RvcnkuYmFjaygpOwor
ICAgIH0sIDApOworICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>