<?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>24683</bug_id>
          
          <creation_ts>2009-03-18 15:15:51 -0700</creation_ts>
          <short_desc>XHR in Workers doesn&apos;t set the referrer correctly.</short_desc>
          <delta_ts>2011-03-21 20:28:26 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55266</dependson>
    
    <dependson>55415</dependson>
    
    <dependson>55590</dependson>
    
    <dependson>55903</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114236</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-18 15:15:51 -0700</bug_when>
    <thetext>It currently sends the url document as the referrer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114238</commentid>
    <comment_count>1</comment_count>
      <attachid>28734</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-18 15:25:02 -0700</bug_when>
    <thetext>Created attachment 28734
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114239</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-18 15:34:24 -0700</bug_when>
    <thetext>Does this fix Origin for cross-origin requests, as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114241</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-18 15:46:22 -0700</bug_when>
    <thetext>&gt; Does this fix Origin for cross-origin requests, as well?
Yes, this line in WorkerThreadableLoader::WorkerThreadableLoader: FrameLoader::addHTTPOriginIfNeeded()

But I haven&apos;t added a test for that yet.  Perhaps I should remove this line and just get in this fix w/o it.  Then, add this line with the appropriate test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114298</commentid>
    <comment_count>4</comment_count>
      <attachid>28734</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-19 03:08:40 -0700</bug_when>
    <thetext>Comment on attachment 28734
Proposed fix.

+        * http/tests/xmlhttprequest/workers/resources/print-referrer.cgi: Added.

There is no need to copy this file - the one from xmlhttprequest/resources can be used instead.

+Test for bug 11611: REGRESSION: No http referer header sent on XMLHttpRequest.

That&apos;s a lie!

    // FIXME: the created loader has no knowledge of the origin of the worker doing the load request.

How is this FIXME from in WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader() affected by this change? It certainly doesn&apos;t look good that we&apos;re setting request fields hoping that SubresourceLoader won&apos;t override them, and that it won&apos;t add anything improper. E.g., the setResponseContentDispositionEncodingFallbackArray() call it makes via FrameLoader::addExtraFieldsToRequest() is incorrect, but harmless - it&apos;s awfully fragile to assume that this function will never change.

This is not subject of this bug, but I&apos;d like to understand what the right cookie policy URL is for XHRs made from workers.

+    // FIXME: Combine this code into a shared function with similar code from FrameLoader.

It would be nice to move this code to a separate function at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114960</commentid>
    <comment_count>5</comment_count>
      <attachid>28734</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-03-24 10:56:16 -0700</bug_when>
    <thetext>Comment on attachment 28734
Proposed fix.

r- based on Alexey&apos;s comments just to get this bug moving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346058</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-04 21:05:46 -0800</bug_when>
    <thetext>David, you&apos;ve been doing some related work today, would you like to finish this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346463</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-06 21:34:10 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; David, you&apos;ve been doing some related work today, would you like to finish this one?

I&apos;ll try to get to it this week (but if not this week, at least soon).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349885</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-11 11:42:24 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; David, you&apos;ve been doing some related work today, would you like to finish this one?

I&apos;ve been looking at this and the feedback from before. I&apos;ve been trying to consider how to make this less fragile and here&apos;s what I came up with:

It looks like FrameLoader::outgoingOrigin and outgoingReferrer are the two fields that may cause problems. One simple solution would be to pass them a url and if that url is not empty, use it as an override. This url could be in the ResourceRequest (m_originatingURL or m_requesteeURL).

The worker would be the only place that sets the URL (and I&apos;d add the logic to copy it cross thread of course).

How does that sound?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349909</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-11 12:19:50 -0800</bug_when>
    <thetext>Adding things to ResourceRequest sounds undesirable. Im not sure if we pass these requests over Mac API boundary as NSURLRequest, but even if we don&apos;t, we probably should start doing that one day.

Logically, this also doesn&apos;t sound great. ResourceRequest encapsulates a network layer view of the request, and network layer shouldn&apos;t know that there is some page or worker somewhere originating the request. It&apos;s a higher level task to prepare correct Referer and Origin headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349944</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-11 12:56:38 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Adding things to ResourceRequest sounds undesirable. Im not sure if we pass these requests over Mac API boundary as NSURLRequest, but even if we don&apos;t, we probably should start doing that one day.
&gt; 
&gt; Logically, this also doesn&apos;t sound great. ResourceRequest encapsulates a network layer view of the request, and network layer shouldn&apos;t know that there is some page or worker somewhere originating the request. It&apos;s a higher level task to prepare correct Referer and Origin headers.

Ok, so instead of ResourceRequest, we can just the url to the SubresourceLoader::create api, plumb it through to there (and the rest remains the same).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353666</commentid>
    <comment_count>11</comment_count>
      <attachid>82980</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-18 10:45:43 -0800</bug_when>
    <thetext>Created attachment 82980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353672</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-18 10:49:02 -0800</bug_when>
    <thetext>Attachment 82980 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/loader/WorkerThreadableLoader.h:49:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/loader/SubresourceLoader.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353754</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-18 12:37:29 -0800</bug_when>
    <thetext>fyi, Adam lest you think that Alexey will review this since he looked at it last time. (In irc) He suggested that you are likely the best reviewer for it.

No rush at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353759</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-18 12:44:02 -0800</bug_when>
    <thetext>I looked at it enough to know that it will require a more careful look.  Will look soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353902</commentid>
    <comment_count>15</comment_count>
      <attachid>82980</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-18 15:53:57 -0800</bug_when>
    <thetext>Comment on attachment 82980
Patch

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

I&apos;m not in love with this patch.  It&apos;s not really clear when it&apos;s safe to pass an empty originating URL.

I&apos;ve wanted to add a mechanism like this for a long time.  Another place we need something like this so that data URLs can inherit the origin of their requestor.  Given that we can&apos;t extend the ResourceRequest structure (due to sadness in the Mac port), the approach I had looked at before was to create a structure that contained both the resource request and the origin information.  At some level, that&apos;s just a syntactic change from what you&apos;ve done in this patch (which just passes the two next to each other), but that seems like a better road forward.

Concretely, if you don&apos;t want to introduce the larger structure (which will likely require some refactoring), it might be worth looking at whether we can avoid using an empty KURL as an originating URL.  For example, if you disentangle createOutgoingReferrer from FrameLoader, then you can rename originatingURL to outgoingReferrer and do the URL tweaking on the worker thread.

I&apos;m going to mark this R- for now, but if you think I&apos;m way off base, please feel free to re-nominate it.

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:72
&gt; -DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest&amp; request, const ThreadableLoaderOptions&amp; options)
&gt; +DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest&amp; request, const ThreadableLoaderOptions&amp; options, const KURL&amp; originatingURL)

What is an originatingURL ?  That&apos;s like the referrer but without the fragment (and friends) removed?

&gt; Source/WebCore/loader/FrameLoader.cpp:644
&gt; -void FrameLoader::setOutgoingReferrer(const KURL&amp; url)
&gt; +KURL FrameLoader::createOutgoingReferrer(const KURL&amp; url)
&gt;  {
&gt;      KURL outgoingReferrer(url);
&gt;      outgoingReferrer.setUser(String());
&gt;      outgoingReferrer.setPass(String());
&gt;      outgoingReferrer.removeFragmentIdentifier();
&gt; -    m_outgoingReferrer = outgoingReferrer.string();
&gt; +    return outgoingReferrer;
&gt; +}

Should this be a method on KURL?  Maybe a free function somewhere?  It seems unrelated to FrameLoader now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353943</commentid>
    <comment_count>16</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-02-18 17:43:46 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 82980 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82980&amp;action=review
&gt; 
&gt; I&apos;m not in love with this patch.  It&apos;s not really clear when it&apos;s safe to pass an empty originating URL.

Fair enough.

&gt; the approach I had looked at before was to create a structure that contained both the resource request and the origin information.  At some level, that&apos;s just a syntactic change from what you&apos;ve done in this patch (which just passes the two next to each other), but that seems like a better road forward.

I&apos;ll work something up and run it by you.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:644
&gt; &gt; +KURL FrameLoader::createOutgoingReferrer(const KURL&amp; url)
&gt; Should this be a method on KURL?  Maybe a free function somewhere?  It seems unrelated to FrameLoader now.

Sounds good. I wanted it to be somewhere else but couldn&apos;t think of a good place (and loader_util.h was a cop-out that I didn&apos;t want to do).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353949</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-18 17:48:16 -0800</bug_when>
    <thetext>WebKit is generally ok with free functions in header files that also contain classes.  (Although personally, I think they&apos;re hard to find the implementation of.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360048</commentid>
    <comment_count>18</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-01 11:39:35 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt;   the approach I had looked at before was to create a structure that contained both the resource request and the origin information.  At some level, that&apos;s just a syntactic change from what you&apos;ve done in this patch (which just passes the two next to each other), but that seems like a better road forward.

What is the benefit of this larger structure?

I&apos;m not opposed to the work but I don&apos;t understand why. I see only downsides: more complicated and more importantly two pieces of information which can be out of sync.

&gt;   you can rename originatingURL to outgoingReferrer and do the URL tweaking on the worker thread.

So I can change the parameter to be &quot;KURL* outgoingReferrerOverride&quot;. One can pass in 0 if no override is desired. If one passes in an override, it will apply to the referrer and origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370962</commentid>
    <comment_count>19</comment_count>
      <attachid>86377</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-21 15:37:53 -0700</bug_when>
    <thetext>Created attachment 86377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371174</commentid>
    <comment_count>20</comment_count>
      <attachid>86377</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 20:28:20 -0700</bug_when>
    <thetext>Comment on attachment 86377
Patch

Clearing flags on attachment: 86377

Committed r81639: &lt;http://trac.webkit.org/changeset/81639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371175</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 20:28:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28734</attachid>
            <date>2009-03-18 15:25:02 -0700</date>
            <delta_ts>2011-02-18 10:45:40 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug24683.txt</filename>
            <type>text/plain</type>
            <size>8084</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwY2RmYTlmLi4wZmRkYWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDMt
MTggIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDY4MworICAgICAgICBYSFIgaW4gV29ya2VycyBkb2Vzbid0IHNldCB0
aGUgcmVmZXJyZXIgY29ycmVjdGx5LgorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC93b3JrZXJzL3JlZmVycmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3JlZmVycmVyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvcHJpbnQt
cmVmZXJyZXIuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3JlZmVycmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGxvZyk6Cisg
ICAgICAgIChkb25lKToKKyAgICAgICAgKHByb2Nlc3NTdGF0ZUNoYW5nZSk6CisKIDIwMDktMDMt
MTcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcnJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJyZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzk4OTIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJy
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3IgYnVnIDExNjExOiBSRUdS
RVNTSU9OOiBObyBodHRwIHJlZmVyZXIgaGVhZGVyIHNlbnQgb24gWE1MSHR0cFJlcXVlc3QuCisK
K1N5bmMgcmVmZXJyZXI6IFBBU1MKK0FzeW5jIHJlZmVycmVyOiBQQVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJyZXIuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcnJl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YmE5MTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtl
cnMvcmVmZXJyZXIuaHRtbApAQCAtMCwwICsxLDM2IEBACis8Ym9keT4KKzxwPkVuc3VyZSB0aGF0
IHRoZSBodHRwIHJlZmVycmVyIGhlYWRlciBpcyBzZW50IGNvcnJlY3RseSBmb3IgWE1MSHR0cFJl
cXVlc3QgaW4gd29ya2Vycy48L3A+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQor
CisgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CisKKyAg
ICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBw
ZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorCisgICAgdmFyIHdvcmtlclVybCA9IGxvY2F0aW9uLnBy
b3RvY29sICsgIi8vTXlVc2VyTmFtZTpNeVNlY3VyZVBhc3N3b3JkQCIgKyBsb2NhdGlvbi5ob3N0
ICsgbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXC9bXlwvXSokLywgIiIpICsgJy9yZXNvdXJj
ZXMvcmVmZXJyZXIuanMjcmVmJzsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJV
cmwpOworCisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKKyAgICB7CisgICAg
ICAgIGlmICgvbG9nIC4rLy50ZXN0KGV2dC5kYXRhKSkKKyAgICAgICAgICAgIGxvZyhldnQuZGF0
YS5zdWJzdHIoNCkpOworICAgICAgICBlbHNlIGlmICgvRE9ORS8udGVzdChldnQuZGF0YSkpIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbG9nKCJFUlJPUiIpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNv
dXJjZXMvcHJpbnQtcmVmZXJyZXIuY2dpIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9wcmludC1yZWZlcnJlci5jZ2kKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjRiNzdlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvcHJpbnQt
cmVmZXJyZXIuY2dpCkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCit1c2Ug
Q0dJIHF3KDpzdGFuZGFyZCk7CitteSAkY2dpID0gbmV3IENHSTsKKworcHJpbnQgIkNvbnRlbnQt
dHlwZTogdGV4dC9wbGFpblxuXG4iOworaWYgKCRjZ2ktPnJlZmVyZXIpIHsKKyAgcHJpbnQgJGNn
aS0+cmVmZXJlcjsKK30gZWxzZSB7CisgIHByaW50ICJOTyBSRUZFUkVSIjsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvcmVmZXJyZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3JlZmVycmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmEwYzRmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3JlZmVycmVyLmpzCkBAIC0wLDAgKzEs
MzQgQEAKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHBvc3RNZXNzYWdlKCJsb2cgIiAr
IG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBwb3N0TWVzc2FnZSgiRE9O
RSIpOworfQorCit2YXIgcmVmZXJyYWxMb2NhdGlvbiA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSgv
OlwvXC8uKlxALywgIjovLyIpLnJlcGxhY2UoLyMuKiQvLCAiIik7CisKK3hociA9IG5ldyBYTUxI
dHRwUmVxdWVzdDsKK3hoci5vcGVuKCJHRVQiLCAicHJpbnQtcmVmZXJyZXIuY2dpIiwgZmFsc2Up
OworeGhyLnNlbmQobnVsbCk7CitpZiAoeGhyLnJlc3BvbnNlVGV4dCA9PSByZWZlcnJhbExvY2F0
aW9uKQorICAgIGxvZygiU3luYyByZWZlcnJlcjogUEFTUyIpOworZWxzZQorICAgIGxvZygiU3lu
YyByZWZlcnJlcjogIiArIHhoci5yZXNwb25zZVRleHQpOworCit4aHIub3BlbigiR0VUIiwgInBy
aW50LXJlZmVycmVyLmNnaSIsIHRydWUpOworeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nl
c3NTdGF0ZUNoYW5nZTsKK3hoci5zZW5kKG51bGwpOworCitmdW5jdGlvbiBwcm9jZXNzU3RhdGVD
aGFuZ2UoKQoreworICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CisgICAgICAgIGlmICh4
aHIucmVzcG9uc2VUZXh0ID09IHJlZmVycmFsTG9jYXRpb24pCisgICAgICAgICAgICBsb2coIkFz
eW5jIHJlZmVycmVyOiBQQVNTIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiQXN5
bmMgcmVmZXJyZXI6ICIgKyB4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgZG9uZSgpOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMjdmMjA2My4uZGQ2NDM3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wMy0xOCAgRGF2aWQg
TGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0NjgzCisgICAgICAgIFhIUiBpbiBXb3JrZXJzIGRvZXNuJ3Qgc2V0IHRoZSByZWZlcnJl
ciBjb3JyZWN0bHkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93
b3JrZXJzL3JlZmVycmVyLmh0bWwKKworICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Oldv
cmtlclRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oOgorCiAyMDA5LTAzLTE3ICBEYXZpZCBDYXJzb24gIDxkYWNhcnNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDczMWZmY2IuLjhjNDQ4MTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zNCwxMCArMzQs
MTMgQEAKIAogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKQEAgLTU4
LDE0ICs2MSwyNiBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIFRocgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQog
ICAgIDogbV93b3JrZXJDb250ZXh0KHdvcmtlckNvbnRleHQpCiAgICAgLCBtX3dvcmtlckNsaWVu
dFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQpKQot
ICAgICwgbV9icmlkZ2UoKihuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBw
ZXIsICooc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPihtX3dvcmtlckNvbnRleHQt
PnRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpKSksIHRhc2tNb2RlLCByZXF1ZXN0LCBjYWxs
YmFja3NTZXR0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZW50U25pZmYpKSkKKyAgICAsIG1fYnJpZGdlKDApCiB7CisgICAgUmVzb3VyY2VSZXF1ZXN0IG5l
d1JlcXVlc3QgPSByZXF1ZXN0OworCisgICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5l
ZWRlZChuZXdSZXF1ZXN0LCB3b3JrZXJDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpKTsKKworICAgIC8vIEZJWE1FOiBDb21iaW5lIHRoaXMgY29kZSBpbnRvIGEgc2hhcmVkIGZ1
bmN0aW9uIHdpdGggc2ltaWxhciBjb2RlIGZyb20gRnJhbWVMb2FkZXIuCisgICAgS1VSTCBvdXRn
b2luZ1JlZmVycmVyKHdvcmtlckNvbnRleHQtPnVybCgpKTsKKyAgICBvdXRnb2luZ1JlZmVycmVy
LnNldFVzZXIoU3RyaW5nKCkpOworICAgIG91dGdvaW5nUmVmZXJyZXIuc2V0UGFzcyhTdHJpbmco
KSk7CisgICAgb3V0Z29pbmdSZWZlcnJlci5zZXRSZWYoU3RyaW5nKCkpOworICAgIG5ld1JlcXVl
c3Quc2V0SFRUUFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOworCisgICAgV29ya2VyTWVzc2Fn
aW5nUHJveHkmIHByb3h5ID0gKnN0YXRpY19jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5Kj4obV93
b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKSk7CisgICAgbV9icmlk
Z2UgPSBuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIsIHByb3h5LCB0
YXNrTW9kZSwgbmV3UmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKIH0K
IAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIoKQogewot
ICAgIG1fYnJpZGdlLmRlc3Ryb3koKTsKKyAgICBtX2JyaWRnZS0+ZGVzdHJveSgpOwogfQogCiB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29y
a2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQpCkBAIC04OSw3ICsxMDQsNyBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udAogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNhbmNl
bCgpCiB7Ci0gICAgbV9icmlkZ2UuY2FuY2VsKCk7CisgICAgbV9icmlkZ2UtPmNhbmNlbCgpOwog
fQogCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFk
QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIsIFdvcmtlck1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApp
bmRleCA1NDYyYTk3Li5kNTUwYzk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oCkBAIC0xMzcsNyArMTM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IFJlZlB0cjxXb3JrZXJDb250ZXh0PiBtX3dvcmtlckNvbnRleHQ7CiAgICAgICAgIFJlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAg
ICAgICBNYWluVGhyZWFkQnJpZGdlJiBtX2JyaWRnZTsKKyAgICAgICAgTWFpblRocmVhZEJyaWRn
ZSogbV9icmlkZ2U7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82980</attachid>
            <date>2011-02-18 10:45:43 -0800</date>
            <delta_ts>2011-03-21 15:37:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-24683-20110218104541.patch</filename>
            <type>text/plain</type>
            <size>29790</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgyNzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNzk3ZTcyYTgwOTVjN2M3YThmOTcx
ZDY5NWVlNmM5NmExMjQwZmMyLi5lNjA5ZmIwMmE2ZjUzODVlZThkMWQzYjg4OTcwMzc2NTM2ZmRm
YzY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDItMTYgIERhdmlkIExldmluICA8bGV2
aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFhIUiBpbiBXb3JrZXJzIGRvZXNuJ3Qgc2V0IHRoZSByZWZlcnJlciBjb3JyZWN0
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY4
MworCisgICAgICAgIFZlcmlmeSB0aGF0IHRoZSByZWZlcnJlciBpcyBzZXQgZm9yIHN5bmMgYW5k
IGFzeW5jIFhIUiByZXF1ZXN0cworICAgICAgICBmcm9tIGJvdGggd29ya2VycyBhbmQgc2hhcmVk
IHdvcmtlcnMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMv
cmVmZXJlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvd29ya2Vycy9yZWZlcmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvcmVmZXJlci10ZXN0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3JlZmVyZXIuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXJlZmVyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZWZl
cmVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTAyLTEwICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmViYXNlbGluZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcmVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZl
cmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjZkOTQ3NWU3MmZlMmNkMGFhNTI1YjcxYjdk
Mzc3YTg1YzFlOTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC93b3JrZXJzL3JlZmVyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorUmVmZXJlciBzaG91bGQgYmUgc2V0IGZvciBYTUxIdHRwUmVxdWVzdCBmcm9tIFdvcmtlcnMu
CisKK1BBU1M6IFN5bmMgcmVmZXJlcgorUEFTUzogQXN5bmMgcmVmZXJlci4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcmVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI4NDYxNWFkYzAzNTQxYzE3OTc3ZDRhNzQzNzU1N2EzYTRhMzkz
NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3dvcmtlcnMvcmVmZXJlci5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+Cis8Ym9keT4K
KzxwPlJlZmVyZXIgc2hvdWxkIGJlIHNldCBmb3IgWE1MSHR0cFJlcXVlc3QgZnJvbSBXb3JrZXJz
LjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2VyLWNyZWF0ZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZmVyZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3JlZmVyZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvcmVmZXJlci10ZXN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI4ZDQ5NzdmNGIzNTk0ZjQ4MzYzZDU3M2RlYzFiNjUxZDhhYTQ0MzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3JlZmVyZXItdGVzdC5qcwpAQCAtMCwwICsxLDMxIEBACitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIpOwor
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKworZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJs
aSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2Fn
ZSkpOworICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CisKK3ZhciB3
b3JrZXJVcmwgPSBsb2NhdGlvbi5wcm90b2NvbCArICIvL015VXNlck5hbWU6TXlTZWN1cmVQYXNz
d29yZEAiICsgbG9jYXRpb24uaG9zdCArIGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvW15c
L10qJC8sICIiKSArICcvcmVzb3VyY2VzL3JlZmVyZXIuanMjcmVmJzsKK3ZhciB3b3JrZXIgPSBj
cmVhdGVXb3JrZXIod29ya2VyVXJsKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkKK3sKKyAgICBpZiAoL2xvZyAuKy8udGVzdChldnQuZGF0YSkpCisgICAgICAgIGxvZyhldnQu
ZGF0YS5zdWJzdHIoNCkpOworICAgIGVsc2UgaWYgKC9ET05FLy50ZXN0KGV2dC5kYXRhKSkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxv
ZygiRVJST1IiKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3JlZmVyZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3JlZmVyZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ2MjJhZWMyM2Rk
NWJhMmM0MjhmMWJlZGJjNjlhMjllOTAzOTExMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvcmVmZXJlci5q
cwpAQCAtMCwwICsxLDQwIEBACit2YXIgcmVmZXJlckxvY2F0aW9uID0gbG9jYXRpb24uaHJlZi5y
ZXBsYWNlKC86XC9cLy4qXEAvLCAiOi8vIikucmVwbGFjZSgvIy4qJC8sICIiKTsKK3ZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisKK2ltcG9ydFNjcmlwdHMoIndvcmtlci1wcmUuanMiKTsK
KworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2UoImxvZyAiICsgbWVz
c2FnZSk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIHBvc3RNZXNzYWdlKCJET05FIik7
Cit9CisKK2Z1bmN0aW9uIHByb2Nlc3NTdGF0ZUNoYW5nZSgpCit7CisgICAgaWYgKHhoci5yZWFk
eVN0YXRlID09IDQpIHsKKyAgICAgICAgaWYgKHhoci5yZXNwb25zZVRleHQgPT0gcmVmZXJlckxv
Y2F0aW9uKQorICAgICAgICAgICAgbG9nKCJQQVNTOiBBc3luYyByZWZlcmVyLiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUw6IEFzeW5jIHJlZmVyZXIgIiArIHhoci5yZXNw
b25zZVRleHQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBpbml0KCkK
K3sKKyAgICB4aHIub3BlbigiR0VUIiwgIi4uLy4uL3Jlc291cmNlcy9wcmludC1yZWZlcmVyLmNn
aSIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBpZiAoeGhyLnJlc3BvbnNlVGV4
dCA9PSByZWZlcmVyTG9jYXRpb24pCisgICAgICAgIGxvZygiUEFTUzogU3luYyByZWZlcmVyIik7
CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IFN5bmMgcmVmZXJlciAiICsgeGhyLnJlc3Bv
bnNlVGV4dCk7CisKKyAgICB4aHIub3BlbigiR0VUIiwgIi4uLy4uL3Jlc291cmNlcy9wcmludC1y
ZWZlcmVyLmNnaSIsIHRydWUpOworICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNz
U3RhdGVDaGFuZ2U7CisgICAgeGhyLnNlbmQobnVsbCk7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJl
ZmVyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVmZXJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgyNWU5MGUyMDhiZTExMjE5MGZkZmMwOWFlMzQ5YzU3ZDllOGNiMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLXJlZmVyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUmVmZXJlciBzaG91
bGQgYmUgc2V0IGZvciBYTUxIdHRwUmVxdWVzdCBmcm9tIFNoYXJlZFdvcmtlcnMuCisKK1BBU1M6
IFN5bmMgcmVmZXJlcgorUEFTUzogQXN5bmMgcmVmZXJlci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJlZmVy
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLXJlZmVyZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGIzYjhiOWQ2ZTM1MWQ2MTk4
MjU0NTFlNGFkOGE1YmEyNTRiMTRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVmZXJlci5odG1s
CkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlJlZmVyZXIgc2hvdWxkIGJlIHNl
dCBmb3IgWE1MSHR0cFJlcXVlc3QgZnJvbSBTaGFyZWRXb3JrZXJzLjwvcD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jcmVhdGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yZWZlcmVyLXRlc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGJiNjgwYzlmZDhlY2MxYTk2ODA3ZThmOTI1ZjlkOGY4ZTAyY2IyZWUu
LmI4MzcxMTdhMzJlNzcxYTAwNzljOGMwMjlhZmJjMDBkZGJhNjM2N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxMS0wMi0xNiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgWEhS
IGluIFdvcmtlcnMgZG9lc24ndCBzZXQgdGhlIHJlZmVycmVyIGNvcnJlY3RseS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NjgzCisKKyAgICAgICAg
VGVzdHM6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcmVyLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXJlZmVyZXIuaHRtbAorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOiBGaWxsIGluIGVtcHR5IFVSTCBmb3IgdGhlIG9yaWdp
bmF0aW5nIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKTogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IHRoZSBvcmlnaW5hdGluZyBVUkwuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNyZWF0ZU91dGdvaW5nUmVmZXJyZXIpOiBQdWxs
IG91dCB0aGUgbG9naWMgdG8gdGhhdCBjcmVhdGVzIGFuIG91dGdvaW5nIHJlZmVycmVyIGZyb20g
YSBVUkwuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0T3V0Z29pbmdSZWZlcnJl
cik6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZCk6IEFkZGVkIHRoZSBhYmls
aXR5IHRvIHNldCB0aGUgb3JpZ2luYXRpbmcgVVJMLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJl
YWRCcmlkZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIpOiBEaXR0by4KKyAg
ICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKTogRmlsbCBpbiBlbXB0eSBVUkwgZm9yIHRoZSBvcmln
aW5hdGluZyBVUkwuCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOiBGaWxsIGluIGVtcHR5IFVS
TCBmb3IgdGhlIG9yaWdpbmF0aW5nIFVSTC4KKwogMjAxMS0wMi0xMCAgRGlyayBTY2h1bHplICA8
a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IDBhMTMyYjE2ODMxYzUzMjBlMGRjZTNkNzQ1MjQzNzU5OWYwZTkyMWQuLjE5NGJlZWMx
YTVjNjU4OGIxZGQ1MjczNzQzOTg5ZmVmODA0NzU1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCkBAIC01MCwyNyArNTEsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgLy8gVGhlIGxvYWRlciB3aWxsIGJlIGRlbGV0ZWQgYXMgc29vbiBhcyB0
aGlzIGZ1bmN0aW9uIGV4aXRzLgotICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+
IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1lbnQs
ICZjbGllbnQsIExvYWRTeW5jaHJvbm91c2x5LCByZXF1ZXN0LCBvcHRpb25zKSk7CisgICAgUmVm
UHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3IERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgJmNsaWVudCwgTG9hZFN5bmNocm9ub3VzbHks
IHJlcXVlc3QsIG9wdGlvbnMsIEtVUkwoKSkpOwogICAgIEFTU0VSVChsb2FkZXItPmhhc09uZVJl
ZigpKTsKIH0KIAogUGFzc1JlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIFJlZlB0cjxEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9hZEFzeW5jaHJvbm91c2x5LCByZXF1ZXN0LCBv
cHRpb25zKSk7CisgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRv
Y3VtZW50LCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMsIEtVUkwoKSk7Cit9CisKKworUGFzc1Jl
ZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBLVVJMJiBvcmlnaW5hdGluZ1VSTCkKK3sKKyAgICBSZWZQ
dHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGllbnQsIExvYWRBc3luY2hyb25vdXNseSwg
cmVxdWVzdCwgb3B0aW9ucywgb3JpZ2luYXRpbmdVUkwpKTsKICAgICBpZiAoIWxvYWRlci0+bV9s
b2FkZXIpCiAgICAgICAgIGxvYWRlciA9IDA7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7
CiB9CiAKLURvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
KERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBCbG9j
a2luZ0JlaGF2aW9yIGJsb2NraW5nQmVoYXZpb3IsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCogZG9jdW1l
bnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgQmxvY2tpbmdCZWhhdmlvciBibG9j
a2luZ0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBLVVJMJiBvcmlnaW5hdGluZ1VSTCkK
ICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKKyAgICAsIG1fb3JpZ2luYXRpbmdVUkwob3JpZ2luYXRpbmdV
UkwpCiAgICAgLCBtX3NhbWVPcmlnaW5SZXF1ZXN0KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQogICAgICwgbV9hc3luYyhibG9ja2luZ0JlaGF2
aW9yID09IExvYWRBc3luY2hyb25vdXNseSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAg
IEFTU0VSVChjbGllbnQpOworICAgIC8vIFNldHRpbmcgYW4gb3JpZ2luYXRpbmcgdXJsIGlzIG9u
bHkgc3VwcG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBhdGguCisgICAgQVNTRVJUKG1fYXN5bmMg
fHwgbV9vcmlnaW5hdGluZ1VSTC5pc0VtcHR5KCkpOwogCiAgICAgaWYgKG1fc2FtZU9yaWdpblJl
cXVlc3QgfHwgbV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBBbGxvd0Nyb3Nz
T3JpZ2luUmVxdWVzdHMpIHsKICAgICAgICAgbG9hZFJlcXVlc3QocmVxdWVzdCwgRG9TZWN1cml0
eUNoZWNrKTsKQEAgLTMyNCw3ICszMzQsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogCiAg
ICAgICAgIC8vIENsZWFyIHRoZSBsb2FkZXIgc28gdGhhdCBhbnkgY2FsbGJhY2tzIGZyb20gU3Vi
cmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSB3aWxsIG5vdCBoYXZlIHRoZSBvbGQgbG9hZGVyLgogICAg
ICAgICBtX2xvYWRlciA9IDA7Ci0gICAgICAgIG1fbG9hZGVyID0gcmVzb3VyY2VMb2FkU2NoZWR1
bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKG1fZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMs
IHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBzZWN1cml0eUNoZWNrLCBzZW5k
TG9hZENhbGxiYWNrcywgc25pZmZDb250ZW50KTsKKyAgICAgICAgbV9sb2FkZXIgPSByZXNvdXJj
ZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1bWVudC0+ZnJh
bWUoKSwgdGhpcywgcmVxdWVzdCwgbV9vcmlnaW5hdGluZ1VSTCwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHlNZWRpdW0sIHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlmZkNvbnRlbnQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDNhM2NjNjRiZTEzYjUxYTA1Zjk0
NWM2MTQ0NTc5NWY3NGIxOTEzNWYuLjg3M2U3MmYwYzNmMDViODQzMTFlMTY5ODJmNDAzMzU0YzEz
MGMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyX2gKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQyLDcgKzQzLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtV
Ukw7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQ7CiAKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1
bWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBj
b25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0
IEtVUkwmIG9yaWdpbmF0aW5nVVJMKTsKICAgICAgICAgdmlydHVhbCB+RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwpAQCAtNjgsNyAr
NjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBMb2FkQXN5bmNocm9ub3Vz
bHkKICAgICAgICAgfTsKIAotICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1l
bnQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgQmxvY2tpbmdCZWhhdmlvciBibG9ja2luZ0Jl
aGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucyk7CisgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVu
dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBCbG9ja2luZ0JlaGF2aW9yLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IEtVUkwm
IG9yaWdpbmF0aW5nVVJMKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFN1YnJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YShTdWJyZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwpAQCAtOTUsNiArOTYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIG1fY2xpZW50
OwogICAgICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMgbV9vcHRpb25zOworICAgICAgICBLVVJMIG1fb3JpZ2luYXRpbmdVUkw7CiAgICAg
ICAgIGJvb2wgbV9zYW1lT3JpZ2luUmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwogICAg
ICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX2FjdHVhbFJlcXVlc3Q7ICAvLyBub24tbnVs
bCBkdXJpbmcgQWNjZXNzIENvbnRyb2wgcHJlZmxpZ2h0IGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMDY3NzUyMmIxYjM5NWJjZWE2NjY5MjQzNzIzYjY3NmZh
YWY4YmQ0OS4uMTBhZGVkZjZhMTkwZjNhYWRkMWQ5NWJkYmRmYjc3NTYzODg3OTQxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02MzQsMTMgKzYzNCwxOCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiAgICAgbV9mcmFtZS0+bmF2aWdhdGlv
blNjaGVkdWxlcigpLT5zY2hlZHVsZVJlZGlyZWN0KGRlbGF5LCB1cmwpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpzZXRPdXRnb2luZ1JlZmVycmVyKGNvbnN0IEtVUkwmIHVybCkKK0tVUkwgRnJh
bWVMb2FkZXI6OmNyZWF0ZU91dGdvaW5nUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsKQogewogICAg
IEtVUkwgb3V0Z29pbmdSZWZlcnJlcih1cmwpOwogICAgIG91dGdvaW5nUmVmZXJyZXIuc2V0VXNl
cihTdHJpbmcoKSk7CiAgICAgb3V0Z29pbmdSZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKICAg
ICBvdXRnb2luZ1JlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIG1fb3V0
Z29pbmdSZWZlcnJlciA9IG91dGdvaW5nUmVmZXJyZXIuc3RyaW5nKCk7CisgICAgcmV0dXJuIG91
dGdvaW5nUmVmZXJyZXI7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJy
ZXIoY29uc3QgS1VSTCYgdXJsKQoreworICAgIG1fb3V0Z29pbmdSZWZlcnJlciA9IGNyZWF0ZU91
dGdvaW5nUmVmZXJyZXIodXJsKS5zdHJpbmcoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlk
QmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAppbmRleCAzNzA4YmY4MmVhZTkzYzE2NmUxODg4MTQ3MjdiNTdiZDA0NGI0NTg5Li4xZGU1MmFj
MzA4Y2Y3MDhjMTA3MWIyOGFkNjUxOTU1MWMwYTBjNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaApAQCAtMjY3LDYgKzI2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZnJhbWVE
ZXRhY2hlZCgpOwogCisgICAgc3RhdGljIEtVUkwgY3JlYXRlT3V0Z29pbmdSZWZlcnJlcihjb25z
dCBLVVJMJik7CiAgICAgdm9pZCBzZXRPdXRnb2luZ1JlZmVycmVyKGNvbnN0IEtVUkwmKTsKIAog
ICAgIHZvaWQgbG9hZERvbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAKaW5kZXggZGJiNjkxNGM0NWE0YjUxZmJlYjVkMjkxMGQyZjljYWEz
ZjI0ZDBlNy4uYjhjZGIxYmZmYmIzOGQ0YTViZTBjNGQyM2JiYzk3NDBjYmY2YmFkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTgz
LDEyICs4MywxMiBAQCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OlJlc291cmNlTG9hZFNjaGVkdWxl
cigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2Vj
dXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZikKK1Bhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJj
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IEtVUkwmIG9yaWdpbmF0aW5nVVJMLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwg
U2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQogewotICAgIFBhc3NSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUs
IGNsaWVudCwgcmVxdWVzdCwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cywgc2hvdWxkQ29udGVudFNuaWZmKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxv
YWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCwg
b3JpZ2luYXRpbmdVUkwsIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Ms
IHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAgc2NoZWR1bGVM
b2FkKGxvYWRlci5nZXQoKSwgcHJpb3JpdHkpOwotICAgIHJldHVybiBsb2FkZXI7CisgICAgcmV0
dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2Fk
KEZyYW1lKiBmcmFtZSwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IGYyZTYyN2YwM2JjYzNjMWFjMTJiZTVhZGFk
Mjc2YjMyY2IyY2U3MzUuLmZhYmQ3MTZmMjhkNmM3YTg4NjBjYWM5N2M2MzdjM2Q3ZmU0NmNlZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU2NoZWR1bGVyIHsKIHB1YmxpYzoKICAg
ICBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsK
IAotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VM
b2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBTZWN1
cml0eUNoZWNrUG9saWN5ID0gRG9TZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUpOworICAgIFBh
c3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1l
KiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBLVVJMJiBvcmlnaW5hdGluZ1VSTCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxv
YWRQcmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYgPSB0cnVlKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBz
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgYWRkTWFpblJlc291
cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVy
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0
ZjczNTNhMGQ5YTM4NzdhZGFlNWU3NGNhYjQ1NTE5NmZjYWVhYWQ0Li5mNjE2NzhhNDEzYzdkMzI2
YmM0ZDE0ZTJjZDhjNmYzYTBkODRlYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3VicmVzb3VyY2VMb2FkZXI6On5T
dWJyZXNvdXJjZUxvYWRlcigpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNl
TG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2Vj
dXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNl
TG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgS1VSTCYgb3JpZ2luYXRpbmdVUkwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVj
aywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZikKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTc1LDEyICs3NSwy
MyBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKEZyYW1lKiBmcmFtZSwgU3VicmVzb3VyYwogICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0
TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIAotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlk
ZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIGZsLT5vdXRnb2luZ1JlZmVycmVyKCkpKQorCisgICAg
U3RyaW5nIG91dGdvaW5nUmVmZXJyZXI7CisgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2luOworICAg
IGlmICghb3JpZ2luYXRpbmdVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dGdvaW5nUmVmZXJy
ZXIgPSBGcmFtZUxvYWRlcjo6Y3JlYXRlT3V0Z29pbmdSZWZlcnJlcihvcmlnaW5hdGluZ1VSTCku
c3RyaW5nKCk7CisgICAgICAgIG91dGdvaW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShvcmlnaW5hdGluZ1VSTCktPnRvU3RyaW5nKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb3V0
Z29pbmdSZWZlcnJlciA9IGZsLT5vdXRnb2luZ1JlZmVycmVyKCk7CisgICAgICAgIG91dGdvaW5n
T3JpZ2luID0gZmwtPm91dGdvaW5nT3JpZ2luKCk7CisgICAgfQorCisgICAgaWYgKFNlY3VyaXR5
T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIocmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cikpCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICBlbHNlIGlm
ICghcmVxdWVzdC5odHRwUmVmZXJyZXIoKSkKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQUmVm
ZXJyZXIoZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7Ci0gICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBP
cmlnaW5JZk5lZWRlZChuZXdSZXF1ZXN0LCBmbC0+b3V0Z29pbmdPcmlnaW4oKSk7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOworCisgICAgRnJh
bWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChuZXdSZXF1ZXN0LCBvdXRnb2luZ09yaWdp
bik7CiAKICAgICBmbC0+YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1
ZXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBj
YjdlZDgxZWM0YThlYjc0NTkwOWNjNmUwZDNhYjZhZjBhMmQwZDYzLi4yODM4YmFkYjZjMDUzOTAx
ZDU2NzU1ZmYxODAwZmU1NWMzODY3NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaApAQCAtMzQsMTIgKzM0LDEzIEBACiAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlckNsaWVudDsKICAgICAKICAgICBjbGFzcyBTdWJyZXNvdXJjZUxv
YWRlciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3Vy
Y2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9s
aWN5ID0gRG9TZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0
cnVlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VMb2Fk
ZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLVVJMJiBvcmlnaW5hdGlu
Z1VSTCwgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSB0cnVl
KTsKIAogICAgICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDRkMThjMjhmNTBlZDcxMGZkYzk0MTkyMGY1OTYyOTc1N2Y0MDQxOTQuLmE1NTc3MWFjYWEyYjVk
MGY3ZjIxZmM1Y2MwZDBmNzEzYWRkYmEyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAogI2luY2x1
ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJl
YWRUYXNrLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgpAQCAtNTUsNyArNTcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNbwogV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJDb250ZXh0
KiB3b3JrZXJDb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0
cmluZyYgdGFza01vZGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX3dvcmtlckNvbnRleHQod29y
a2VyQ29udGV4dCkKICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlcjo6Y3JlYXRlKGNsaWVudCkpCi0gICAgLCBtX2JyaWRnZSgqKG5ldyBNYWlu
VGhyZWFkQnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV93b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIHJlcXVlc3QsIG9wdGlvbnMpKSkK
KyAgICAsIG1fYnJpZGdlKCoobmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFw
cGVyLCBtX3dvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNr
TW9kZSwgcmVxdWVzdCwgb3B0aW9ucywgd29ya2VyQ29udGV4dC0+dXJsKCkpKSkKIHsKIH0KIApA
QCAtODcsMzIgKzg5LDMwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkK
IH0KIAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVh
ZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNvbnN0IFN0cmlu
ZyYgdGFza01vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEtV
UkwmIG9yaWdpbmF0aW5nVVJMKQogICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKHdvcmtlckNs
aWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQogICAgICwgbV90
YXNrTW9kZSh0YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQogewogICAgIEFTU0VSVChtX3dv
cmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVh
dGVMb2FkZXIsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWlu
VGhyZWFkQ3JlYXRlTG9hZGVyLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zLCBvcmlnaW5hdGluZ1VS
TCkpOwogfQogCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjp+TWFp
blRocmVhZEJyaWRnZSgpCiB7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyLCBQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEsIFRocmVhZGFibGVMb2FkZXJP
cHRpb25zIG9wdGlvbnMpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBv
cHRpb25zLCBjb25zdCBLVVJMJiBvcmlnaW5hdGluZ1VSTCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCAgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOwogCi0gICAg
Ly8gRklYTUU6IHRoZSBjcmVhdGVkIGxvYWRlciBoYXMgbm8ga25vd2xlZGdlIG9mIHRoZSBvcmln
aW4gb2YgdGhlIHdvcmtlciBkb2luZyB0aGUgbG9hZCByZXF1ZXN0LgotICAgIC8vIEJhc2ljYWxs
eSBldmVyeSBzZXR0aW5nIGRvbmUgaW4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSAoaW5jbHVk
aW5nIHRoZSBjb250ZW50cyBvZiBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCkKLSAgICAvLyBuZWVk
cyB0byBiZSBleGFtaW5lZCBmb3IgaG93IGl0IHNob3VsZCB0YWtlIGludG8gYWNjb3VudCBhIGRp
ZmZlcmVudCBvcmlnaW5hdG9yLgogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkpOwogICAgIC8vIEZJWE1FOiBJZiB0
aGUgYSBzaXRlIHJlcXVlc3RzIGEgbG9jYWwgcmVzb3VyY2UsIHRoZW4gdGhpcyB3aWxsIHJldHVy
biBhIG5vbi16ZXJvIHZhbHVlIGJ1dCB0aGUgc3luYyBwYXRoCiAgICAgLy8gd2lsbCByZXR1cm4g
YSAwIHZhbHVlLiAgRWl0aGVyIHRoaXMgc2hvdWxkIHJldHVybiAwIG9yIHRoZSBvdGhlciBjb2Rl
IHBhdGggc2hvdWxkIGRvIGEgY2FsbGJhY2sgd2l0aAogICAgIC8vIGEgZmFpbHVyZS4KLSAgICB0
aGlzUHRyLT5tX21haW5UaHJlYWRMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoY29u
dGV4dCwgdGhpc1B0ciwgKnJlcXVlc3QsIG9wdGlvbnMpOworICAgIHRoaXNQdHItPm1fbWFpblRo
cmVhZExvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvY3VtZW50LCB0
aGlzUHRyLCAqcmVxdWVzdCwgb3B0aW9ucywgb3JpZ2luYXRpbmdVUkwpOwogICAgIEFTU0VSVCh0
aGlzUHRyLT5tX21haW5UaHJlYWRMb2FkZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAppbmRleCA2NWNjNjM3ZmM1NzZmNzI5ZDA5NzQ2
NzdkZTA3ZmQyMmQ2YzYwYzg5Li5iZDUxMzI4NjU5NjQ3ODcwMDA1OGM2ZjdhMjJmODAxOTg2ZjY0
MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3Mg
S1VSTDsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwpAQCAtOTgsNyArOTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1haW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFsbCBl
eGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCi0gICAgICAgICAgICBNYWlu
VGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+LCBX
b3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAgICAgICBN
YWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+
LCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgS1VSTCYg
b3JpZ2luYXRpbmdVUkwpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWwoKTsKICAgICAgICAgICAg
IHZvaWQgZGVzdHJveSgpOwogCkBAIC0xMTAsNyArMTExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIH5NYWluVGhyZWFk
QnJpZGdlKCk7CiAKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2Fk
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
KTsKKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25zLCBjb25zdCBL
VVJMJiBvcmlnaW5hdGluZ1VSTCk7CiAgICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFk
Q2FuY2VsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7CiAgICAg
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKaW5kZXggMWQyZjcwNjk4ZmFmYjM1ZDVhOTgwNjAzZmZjZTllZjUwYWVmYWYy
OC4uNDUwYzcyMjgwMDVkZGE2OWFkZjM5NjkwOTZiYjkxMDVkZDkzODg0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCkBAIC0xMTUsOCArMTE2LDggQEAgUGFz
c1JlZlB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJlc291cmNlUmVxdWVzdDo6bG9h
ZChDYWNoZWRSZXNvdXJjZUxvYWQKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9
IHJlc291cmNlLT5sb2FkUHJpb3JpdHkoKTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3Jp
dHkocHJpb3JpdHkpOwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZyYW1lKCksCi0gICAgICAgIHJlcXVlc3QuZ2V0KCks
IHJlc291cmNlUmVxdWVzdCwgcHJpb3JpdHksIHNlY3VyaXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxv
YWRDYWxsYmFja3MpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcmVz
b3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKGNhY2hlZFJlc291
cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5mcmFtZSgpLCByZXF1ZXN0LmdldCgpLCByZXNvdXJjZVJl
cXVlc3QsIEtVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSwg
c2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgaWYgKCFsb2Fk
ZXIgfHwgbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlz
IHJldmFsaWRhdGlvbj8KICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFy
dCBsb2FkaW5nICclcyciLCByZXNvdXJjZS0+dXJsKCkubGF0aW4xKCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXggYmI3MzhlOGNiODBmZmY1
MjUzMmE4M2ExMjgxNDEzZjVkZTIxNjIzNS4uODYxODk4Yzg1ZTZkOGMzZGNjYjA1MzZhM2FlM2Zm
YWExODkwNDY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAi
S1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAtNzIsNyArNzMsNyBAQCB2
b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291
cmNlUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvblVSTCgpKTsKICAgICByZXNvdXJjZVJl
cXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOwogCi0gICAgUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2No
ZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9mcmFtZSwgdGhpcywgcmVzb3VyY2VSZXF1ZXN0KTsKKyAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxl
cigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2ZyYW1lLCB0aGlzLCByZXNvdXJjZVJlcXVl
c3QsIEtVUkwoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmlj
b25VUkwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86377</attachid>
            <date>2011-03-21 15:37:53 -0700</date>
            <delta_ts>2011-03-21 20:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-24683-20110321153752.patch</filename>
            <type>text/plain</type>
            <size>19591</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2MDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZDRiOTZhYjEzOWY2NjA2Y2NiNWY3
N2M2MmZmMmRlOGFiZjI1ODU5Li5hZWZkOTg4NjAzOTlmZGNjNmIyMDI0Yjg5OWE4MjU4MWJjOWJm
OGI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMjEgIERhdmlkIExldmluICA8bGV2
aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFhIUiBpbiBXb3JrZXJzIGRvZXNuJ3Qgc2V0IHRoZSByZWZlcnJlciBjb3JyZWN0
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY4
MworCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3JlZmVyZXIt
ZXhwZWN0ZWQudHh0OiBGaXhlZCBleHBlY3RhdGlvbnMgbm93IHRoYXQgdGhpcyB3b3JrcyBjb3Jy
ZWN0bHkuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItcmVmZXJlci1leHBlY3RlZC50eHQ6IERpdHRvLgorCiAyMDExLTAzLTIxICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJlci1leHBlY3RlZC50eHQKaW5kZXgg
NTRmNzY0YjZkNjY2OTRiNTRhOWIyODAwYThmOGU0YTU1ZmE0NmE4Zi4uMDQwZDJmNGEyMDIwOWQ2
MDEyY2UxMGYwZmUzNzNmOWVkYzUzYTkwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3JlZmVyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcmVyLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIFJlZmVyZXIgc2hvdWxkIGJlIHNldCBmb3IgWE1MSHR0
cFJlcXVlc3QgZnJvbSBXb3JrZXJzLgogCi1GQUlMOiBTeW5jLiBFeHBlY3RlZCByZWZlcmVyOiAn
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3Jl
ZmVyZXIuanMnIEFjdHVhbCByZWZlcmVyOiAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHBy
ZXF1ZXN0L3dvcmtlcnMvcmVmZXJlci5odG1sJwotRkFJTDogQXN5bmMuIEV4cGVjdGVkIHJlZmVy
ZXI6ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvcmVmZXJlci5qcycgQWN0dWFsIHJlZmVyZXI6ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1s
aHR0cHJlcXVlc3Qvd29ya2Vycy9yZWZlcmVyLmh0bWwnCitQQVNTOiBTeW5jIHJlZmVyZXIuCitQ
QVNTOiBBc3luYyByZWZlcmVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVmZXJlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1yZWZlcmVyLWV4cGVjdGVkLnR4dAppbmRleCA2YWYwMWE5ODk2ODdmOGNmMzAyZmRmZjkx
OTdlZGM2YmU3OTUxZjUwLi5mNTg1ZGI3ODhhNWUwNjE5OWU2MDRlYmFiZWU1NmIzZWI2MWE5NTky
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1yZWZlcmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZWZlcmVyLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIFJlZmVyZXIgc2hvdWxkIGJlIHNldCBmb3IgWE1M
SHR0cFJlcXVlc3QgZnJvbSBTaGFyZWRXb3JrZXJzLgogCi1GQUlMOiBTeW5jLiBFeHBlY3RlZCBy
ZWZlcmVyOiAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVz
b3VyY2VzL3JlZmVyZXIuanMnIEFjdHVhbCByZWZlcmVyOiAnaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZWZlcmVyLmh0bWwnCi1GQUlM
OiBBc3luYy4gRXhwZWN0ZWQgcmVmZXJlcjogJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRw
cmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9yZWZlcmVyLmpzJyBBY3R1YWwgcmVmZXJlcjogJ2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
cmVmZXJlci5odG1sJworUEFTUzogU3luYyByZWZlcmVyLgorUEFTUzogQXN5bmMgcmVmZXJlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNmI1NjE0NzljNTgyODMwMDkyMDJkYzQ4ZDJiMzE1Yjc1MmQ0ZjBkLi4x
MmNmYjFlOTcyODY1OWUxMmYyZjAzZjE2YWM1ZGNiMzMyM2U2Yzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTEtMDMtMjEgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFhIUiBp
biBXb3JrZXJzIGRvZXNuJ3Qgc2V0IHRoZSByZWZlcnJlciBjb3JyZWN0bHkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY4MworCisgICAgICAgIFRl
c3RzOiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVmZXJlci5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1yZWZlcmVyLmh0bWwKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KTogRmlsbCBpbiBlbXB0eSBzdHJpbmcgZm9yIHRoZSBvdXRn
b2luZyByZWZlcnJlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKTogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IHRoZSBvdXRnb2luZyByZWZlcnJl
ci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5oOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmg6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KTogRml4ZWQgYnVnIChjYXVnaHQgYnkgdGhlIHRlc3QpIGluIGxhc3QgbWludXRlIGNoYW5nZSBk
b25lIGluIHByZXZpb3VzIGNoZWNrLWluLgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6
OldvcmtlclRocmVhZGFibGVMb2FkZXIpOiBGaWxsIGluIHRoZSBvdXRnb2luZyByZWZlcnJlci4K
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Ok1haW5UaHJlYWRCcmlkZ2UpOiBQbHVtYmluZyBmb3IgdGhlIG91dGdvaW5nIHJlZmVycmVy
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcik6IFBsdW1iaW5nIGZvciB0aGUgb3V0Z29pbmcg
cmVmZXJyZXIuCisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaDoKKwog
MjAxMS0wMy0wNyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNzMyYTg0ZTQ0MDUxN2Y1ZThlZTI4Y2Ni
NGU3OGI0OWUwZTgwYWFhNy4uNzNjM2U4MGE0NTQwNmQ2YjdjYTMyZjg3NTIyZTExNmEyYjczOTU2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTUxLDI3ICs1MSwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICAvLyBUaGUgbG9hZGVyIHdpbGwgYmUgZGVsZXRlZCBhcyBzb29uIGFzIHRoaXMg
ZnVuY3Rpb24gZXhpdHMuCi0gICAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9h
ZGVyID0gYWRvcHRSZWYobmV3IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgJmNs
aWVudCwgTG9hZFN5bmNocm9ub3VzbHksIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBSZWZQdHI8
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCAmY2xpZW50LCBMb2FkU3luY2hyb25vdXNseSwgcmVx
dWVzdCwgb3B0aW9ucywgU3RyaW5nKCkpKTsKICAgICBBU1NFUlQobG9hZGVyLT5oYXNPbmVSZWYo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1Bhc3NSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgU3RyaW5nJiBvcHRpb25hbE91dGdvaW5nUmVmZXJyZXIpCiB7Ci0gICAgUmVmUHRyPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3IERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkQXN5bmNocm9ub3VzbHksIHJlcXVl
c3QsIG9wdGlvbnMpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2Fk
ZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGll
bnQsIExvYWRBc3luY2hyb25vdXNseSwgcmVxdWVzdCwgb3B0aW9ucywgb3B0aW9uYWxPdXRnb2lu
Z1JlZmVycmVyKSk7CiAgICAgaWYgKCFsb2FkZXItPm1fbG9hZGVyKQogICAgICAgICBsb2FkZXIg
PSAwOwogICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOwogfQogCi1Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgQmxvY2tpbmdCZWhhdmlvciBibG9ja2luZ0Jl
aGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQorRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50KiBjbGllbnQsIEJsb2NraW5nQmVoYXZpb3IgYmxvY2tpbmdCZWhhdmlvciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBvcHRpb25hbE91dGdvaW5nUmVmZXJyZXIpCiAgICAgOiBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9vcHRpb25z
KG9wdGlvbnMpCisgICAgLCBtX29wdGlvbmFsT3V0Z29pbmdSZWZlcnJlcihvcHRpb25hbE91dGdv
aW5nUmVmZXJyZXIpCiAgICAgLCBtX3NhbWVPcmlnaW5SZXF1ZXN0KGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQogICAgICwgbV9hc3luYyhibG9j
a2luZ0JlaGF2aW9yID09IExvYWRBc3luY2hyb25vdXNseSkKIHsKICAgICBBU1NFUlQoZG9jdW1l
bnQpOwogICAgIEFTU0VSVChjbGllbnQpOworICAgIC8vIFNldHRpbmcgYW4gb3V0Z29pbmcgcmVm
ZXJlciBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgYXN5bmMgY29kZSBwYXRoLgorICAgIEFTU0VS
VChtX2FzeW5jIHx8IG1fb3B0aW9uYWxPdXRnb2luZ1JlZmVycmVyLmlzRW1wdHkoKSk7CiAKICAg
ICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCBtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgewogICAgICAgICBsb2FkUmVxdWVz
dChyZXF1ZXN0LCBEb1NlY3VyaXR5Q2hlY2spOwpAQCAtMzQ2LDcgKzM0OSw4IEBAIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFNlY3VyCiAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFu
eSBjYWxsYmFja3MgZnJvbSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUg
dGhlIG9sZCBsb2FkZXIuCiAgICAgICAgIG1fbG9hZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIg
PSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQobV9kb2N1
bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0s
IHNlY3VyaXR5Q2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlmZkNvbnRlbnQpOworICAgICAg
ICBtX2xvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNl
TG9hZChtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlv
cml0eU1lZGl1bSwgc2VjdXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNuaWZmQ29udGVudCwgbV9vcHRpb25hbE91dGdvaW5nUmVmZXJyZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oCmluZGV4IDk0ODg0Y2VkOTBjNTVmOTU4YWYyZjQ4YWJjNGZkNmQ3NmZi
NTcyMzMuLmM1MTEzMDY4YzkxYTQ0YzcwZGQ2MDViYTkzNzljNDE1NDcxMDIzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7
CkBAIC01MCw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRl
KERvY3VtZW50KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50KiwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBvcHRpb25hbE91dGdvaW5nUmVmZXJyZXIg
PSBTdHJpbmcoKSk7CiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKQEAgLTY5LDcgKzcwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgTG9hZEFzeW5jaHJvbm91c2x5CiAgICAgICAg
IH07CiAKLSAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50KiwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCosIEJsb2NraW5nQmVoYXZpb3IgYmxvY2tpbmdCZWhhdmlvciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMpOworICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQqLCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiwgQmxvY2tpbmdCZWhhdmlvciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG9wdGlvbmFs
T3V0Z29pbmdSZWZlcnJlcik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVz
dChTdWJyZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKQEAgLTk3LDYgKzk4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVu
dDsKICAgICAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgICAgIFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zIG1fb3B0aW9uczsKKyAgICAgICAgU3RyaW5nIG1fb3B0aW9uYWxPdXRnb2luZ1Jl
ZmVycmVyOwogICAgICAgICBib29sIG1fc2FtZU9yaWdpblJlcXVlc3Q7CiAgICAgICAgIGJvb2wg
bV9hc3luYzsKICAgICAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gbV9hY3R1YWxSZXF1ZXN0
OyAgLy8gbm9uLW51bGwgZHVyaW5nIEFjY2VzcyBDb250cm9sIHByZWZsaWdodCBjaGVja3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXgg
ZGJiNjkxNGM0NWE0YjUxZmJlYjVkMjkxMGQyZjljYWEzZjI0ZDBlNy4uN2NjZWZmNzBkMTQ4MDkx
MmVjY2E1OTE5MTRhMGIwMGIyYmEyZjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTgzLDEyICs4MywxMyBAQCBSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OlJlc291cmNlTG9hZFNjaGVkdWxlcigpCiAjZW5kaWYKIH0KIAotUGFzc1Jl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1
YnJlc291cmNlTG9hZChGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkg
cHJpb3JpdHksIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKK1Bhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNv
dXJjZUxvYWQoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIGNvbnN0IFN0cmluZyYgb3B0aW9uYWxPdXRnb2luZ1JlZmVycmVyKQogewotICAgIFBhc3NS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9h
ZENhbGxiYWNrcywgc2hvdWxkQ29udGVudFNuaWZmKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwg
cmVxdWVzdCwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgc2hvdWxk
Q29udGVudFNuaWZmLCBvcHRpb25hbE91dGdvaW5nUmVmZXJyZXIpOwogICAgIGlmIChsb2FkZXIp
CiAgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHByaW9yaXR5KTsKLSAgICByZXR1
cm4gbG9hZGVyOworICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRy
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVk
dWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCBmMmU2Mjdm
MDNiY2MzYzFhYzEyYmU1YWRhZDI3NmIzMmNiMmNlNzM1Li40OWE0NTQ2YjdhNzA1OTMzZGM4NzE0
YmFmZTQ1MDNhYjZjOTE5MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIg
ewogcHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9h
ZFNjaGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJp
b3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRydWUsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0g
dHJ1ZSk7CisgICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNv
dXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cs
IFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNl
TG9hZENhbGxiYWNrcyA9IHRydWUsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0gdHJ1ZSwgY29u
c3QgU3RyaW5nJiBvcHRpb25hbE91dGdvaW5nUmVmZXJyZXIgPSBTdHJpbmcoKSk7CiAgICAgUGFz
c1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQbHVnaW5TdHJlYW1M
b2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFkZE1haW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2Fk
ZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZGM3ZjUyNTU3NmFlMGI4OTE0YjAz
MTNlMjAwMDUxZjI3NWE3MGZkYS4uY2ZlOGQwYTk1ODQ1NGQxYjZlMGI5NzJmY2Y2NmRiYzQwOTk2
N2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC03OCw3ICs3OCw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNl
TG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjCiAKICAgICBTdHJpbmcgb3V0
Z29pbmdSZWZlcnJlcjsKICAgICBTdHJpbmcgb3V0Z29pbmdPcmlnaW47Ci0gICAgaWYgKG91dGdv
aW5nUmVmZXJyZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAob3B0aW9uYWxPdXRnb2luZ1JlZmVycmVy
LmlzTnVsbCgpKSB7CiAgICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBmbC0+b3V0Z29pbmdSZWZl
cnJlcigpOwogICAgICAgICBvdXRnb2luZ09yaWdpbiA9IGZsLT5vdXRnb2luZ09yaWdpbigpOwog
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggNmM2MTMxODE2ZjBlZWUyMDFlOGFhNGM3MjI1NWQyMWI2NDA2M2Vi
Mi4uZDc1M2VjYjRiNWQ0YzViMGYzNTVhOGI1YjcxYTVmMTQ5ZTVlNzMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzQsNiAr
MzQsOCBAQAogCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgogCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNp
bmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC01NSw3ICs1Nyw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAibG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseU1vCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1f
d29ya2VyQ29udGV4dCh3b3JrZXJDb250ZXh0KQogICAgICwgbV93b3JrZXJDbGllbnRXcmFwcGVy
KFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUoY2xpZW50KSkKLSAgICAsIG1f
YnJpZGdlKCoobmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3dv
cmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgcmVx
dWVzdCwgb3B0aW9ucykpKQorICAgICwgbV9icmlkZ2UoKihuZXcgTWFpblRocmVhZEJyaWRnZSht
X3dvcmtlckNsaWVudFdyYXBwZXIsIG1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxv
YWRlclByb3h5KCksIHRhc2tNb2RlLCByZXF1ZXN0LCBvcHRpb25zLCB3b3JrZXJDb250ZXh0LT51
cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSkpKQogewogfQogCkBAIC04NywzMiArODks
MzAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogfQogCiBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIs
IFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2lu
Z1JlZmVycmVyKQogICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKHdvcmtlckNsaWVudFdyYXBw
ZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQogICAgICwgbV90YXNrTW9kZSh0
YXNrTW9kZS5jcm9zc1RocmVhZFN0cmluZygpKQogewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVu
dFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVh
dGVDYWxsYmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIs
IHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9M
b2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3Jl
YXRlTG9hZGVyLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKSk7CiB9
CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFk
QnJpZGdlKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQdHIsIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMg
b3B0aW9ucykKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBN
YWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEsIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnMs
IGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CiAKLSAgICAvLyBG
SVhNRTogdGhlIGNyZWF0ZWQgbG9hZGVyIGhhcyBubyBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbiBv
ZiB0aGUgd29ya2VyIGRvaW5nIHRoZSBsb2FkIHJlcXVlc3QuCi0gICAgLy8gQmFzaWNhbGx5IGV2
ZXJ5IHNldHRpbmcgZG9uZSBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIChpbmNsdWRpbmcg
dGhlIGNvbnRlbnRzIG9mIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KQotICAgIC8vIG5lZWRzIHRv
IGJlIGV4YW1pbmVkIGZvciBob3cgaXQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IGEgZGlmZmVy
ZW50IG9yaWdpbmF0b3IuCiAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChSZXNv
dXJjZVJlcXVlc3Q6OmFkb3B0KHJlcXVlc3REYXRhKSk7CiAgICAgLy8gRklYTUU6IElmIHRoZSBh
IHNpdGUgcmVxdWVzdHMgYSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0aGlzIHdpbGwgcmV0dXJuIGEg
bm9uLXplcm8gdmFsdWUgYnV0IHRoZSBzeW5jIHBhdGgKICAgICAvLyB3aWxsIHJldHVybiBhIDAg
dmFsdWUuICBFaXRoZXIgdGhpcyBzaG91bGQgcmV0dXJuIDAgb3IgdGhlIG90aGVyIGNvZGUgcGF0
aCBzaG91bGQgZG8gYSBjYWxsYmFjayB3aXRoCiAgICAgLy8gYSBmYWlsdXJlLgotICAgIHRoaXNQ
dHItPm1fbWFpblRocmVhZExvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShjb250ZXh0
LCB0aGlzUHRyLCAqcmVxdWVzdCwgb3B0aW9ucyk7CisgICAgdGhpc1B0ci0+bV9tYWluVGhyZWFk
TG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIHRoaXNQ
dHIsICpyZXF1ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKTsKICAgICBBU1NFUlQodGhp
c1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggMjQ3N2YxOWFlMWNkOGI2OWEwMzhhMDg5
Y2VjYjlhMWE3OGJkNjU1Yi4uNzY4NWVlZDJlODQzYzU1MzgxNTk4MTE5ODgzNmQ1MWU5MzEwZDc0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CkBAIC05OCw3ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTWFp
blRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAg
cHVibGljOgogICAgICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4
dCdzIHRocmVhZC4KLSAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoUGFzc1JlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoUGFzc1JlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpOwogICAgICAg
ICAgICAgdm9pZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCkBAIC0x
MTAsNyArMTEwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRC
cmlkZ2UqKTsKICAgICAgICAgICAgIH5NYWluVGhyZWFkQnJpZGdlKCk7CiAKLSAgICAgICAgICAg
IHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25zKTsKKyAgICAgICAgICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5U
aHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4s
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIp
OwogICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSopOwogICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>