<?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>112069</bug_id>
          
          <creation_ts>2013-03-11 14:43:00 -0700</creation_ts>
          <short_desc>Threaded HTML Parser should limit speculation to avoid using too much memory</short_desc>
          <delta_ts>2013-03-20 00:06:02 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110547</dependson>
          <blocked>111645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852743</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 14:43:00 -0700</bug_when>
    <thetext>Threaded HTML Parser should limit speculation to avoid using too much memory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852744</commentid>
    <comment_count>1</comment_count>
      <attachid>192564</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 14:43:28 -0700</bug_when>
    <thetext>Created attachment 192564
wip, hangs several tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852747</commentid>
    <comment_count>2</comment_count>
      <attachid>192564</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 14:44:13 -0700</bug_when>
    <thetext>Comment on attachment 192564
wip, hangs several tests.

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

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:186
&gt; +    // display:none iframes don&apos;t need renderers.
&gt; +    // However, if our ownerElement is not yet attached, we can&apos;t trust its renderer() being null.
&gt; +    if (m_node-&gt;document()-&gt;ownerElement()
&gt; +        &amp;&amp; m_node-&gt;document()-&gt;ownerElement()-&gt;attached()
&gt; +        &amp;&amp; !m_node-&gt;document()-&gt;ownerElement()-&gt;renderer())
&gt; +        return false;

This was from another patch.  ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852893</commentid>
    <comment_count>3</comment_count>
      <attachid>192599</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 17:06:27 -0700</bug_when>
    <thetext>Created attachment 192599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852897</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 17:09:55 -0700</bug_when>
    <thetext>*** Bug 111893 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852913</commentid>
    <comment_count>5</comment_count>
      <attachid>192599</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-11 17:23:27 -0700</bug_when>
    <thetext>Comment on attachment 192599
Patch

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

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:-348
&gt; -    if (!m_currentChunk) {
&gt; -        // If there is no m_currentChunk, we must have already called didFailSpeculation
&gt; -        // for this chunk.
&gt; -        // FIXME: In this case, we&apos;re losing whatever state has been changed since
&gt; -        // we called didFailSpeculation. See https://bugs.webkit.org/show_bug.cgi?id=110546
&gt; -        return;
&gt; -    }

I&apos;m worried that we&apos;re not handling this case anymore.  Maybe this patch fixes it?  We should have test coverage for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852954</commentid>
    <comment_count>6</comment_count>
      <attachid>192614</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 18:24:00 -0700</bug_when>
    <thetext>Created attachment 192614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852962</commentid>
    <comment_count>7</comment_count>
      <attachid>192614</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-11 18:35:09 -0700</bug_when>
    <thetext>Comment on attachment 192614
Patch

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

&gt; Source/WebCore/html/parser/BackgroundHTMLParser.cpp:53
&gt; +static const size_t outstandingCheckpointStopLimit = 10;
&gt; +static const size_t outstandingCheckpointStartLimit = 3;

We should tune these constants based on some performance data.

&gt; Source/WebCore/html/parser/BackgroundHTMLParser.cpp:152
&gt; +    // No need to start speculating until the main thread is nearly caught up.
&gt; +    if (m_input.outstandingCheckpointCount() &gt; outstandingCheckpointStartLimit)
&gt; +        return;

How do you know that we&apos;ll actually finish parsing everything?  Don&apos;t we need to bypass this check in the finish() call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853032</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-11 20:43:03 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 192614 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192614&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/BackgroundHTMLParser.cpp:53
&gt; &gt; +static const size_t outstandingCheckpointStopLimit = 10;
&gt; &gt; +static const size_t outstandingCheckpointStartLimit = 3;
&gt; 
&gt; We should tune these constants based on some performance data.
&gt; 
&gt; &gt; Source/WebCore/html/parser/BackgroundHTMLParser.cpp:152
&gt; &gt; +    // No need to start speculating until the main thread is nearly caught up.
&gt; &gt; +    if (m_input.outstandingCheckpointCount() &gt; outstandingCheckpointStartLimit)
&gt; &gt; +        return;
&gt; 
&gt; How do you know that we&apos;ll actually finish parsing everything?  Don&apos;t we need to bypass this check in the finish() call?

This code is correct because the main thread will eventually catch up, which will kick the background thread into action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853033</commentid>
    <comment_count>9</comment_count>
      <attachid>192614</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 20:46:22 -0700</bug_when>
    <thetext>Comment on attachment 192614
Patch

Rejecting attachment 192614 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 192614, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:

Hunk #6 succeeded at 486 (offset 2 lines).
Hunk #7 succeeded at 886 (offset 2 lines).
2 out of 7 hunks FAILED -- saving rejects to file Source/WebCore/html/parser/HTMLDocumentParser.cpp.rej
patching file Source/WebCore/html/parser/HTMLDocumentParser.h
Hunk #1 succeeded at 143 (offset 2 lines).
Hunk #2 succeeded at 196 (offset 2 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Adam Barth&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://webkit-commit-queue.appspot.com/results/17130351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853074</commentid>
    <comment_count>10</comment_count>
      <attachid>192640</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 22:33:37 -0700</bug_when>
    <thetext>Created attachment 192640
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853091</commentid>
    <comment_count>11</comment_count>
      <attachid>192644</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 22:59:05 -0700</bug_when>
    <thetext>Created attachment 192644
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853096</commentid>
    <comment_count>12</comment_count>
      <attachid>192646</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 23:04:25 -0700</bug_when>
    <thetext>Created attachment 192646
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853100</commentid>
    <comment_count>13</comment_count>
      <attachid>192648</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 23:12:46 -0700</bug_when>
    <thetext>Created attachment 192648
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853104</commentid>
    <comment_count>14</comment_count>
      <attachid>192648</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 23:17:15 -0700</bug_when>
    <thetext>Comment on attachment 192648
Patch for landing

Rejecting attachment 192648 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 192648, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-commit-queue.appspot.com/results/17174031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853109</commentid>
    <comment_count>15</comment_count>
      <attachid>192649</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-11 23:19:28 -0700</bug_when>
    <thetext>Created attachment 192649
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853322</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-12 04:20:43 -0700</bug_when>
    <thetext>I wonder if this is causing falkiness.  Teh CQ is having trouble landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853326</commentid>
    <comment_count>17</comment_count>
      <attachid>192649</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-12 04:21:28 -0700</bug_when>
    <thetext>Comment on attachment 192649
Patch for landing

I&apos;m going to look at this again tomorrow before we land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854706</commentid>
    <comment_count>18</comment_count>
      <attachid>193008</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 15:25:00 -0700</bug_when>
    <thetext>Created attachment 193008
updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854736</commentid>
    <comment_count>19</comment_count>
      <attachid>193012</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 15:45:45 -0700</bug_when>
    <thetext>Created attachment 193012
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854778</commentid>
    <comment_count>20</comment_count>
      <attachid>193019</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 16:25:07 -0700</bug_when>
    <thetext>Created attachment 193019
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854848</commentid>
    <comment_count>21</comment_count>
      <attachid>193019</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 18:28:09 -0700</bug_when>
    <thetext>Comment on attachment 193019
Patch for landing

Attachment 193019 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17194175

New failing tests:
inspector/debugger/dom-breakpoints.html
inspector/audits/audits-panel-functional.html
fast/parser/external-script-document-write.html
http/tests/navigation/lockedhistory-iframe.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854849</commentid>
    <comment_count>22</comment_count>
      <attachid>193019</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 18:28:47 -0700</bug_when>
    <thetext>Comment on attachment 193019
Patch for landing

Attachment 193019 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17215030

New failing tests:
fast/parser/external-script-document-write.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854870</commentid>
    <comment_count>23</comment_count>
      <attachid>193019</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 19:33:30 -0700</bug_when>
    <thetext>Comment on attachment 193019
Patch for landing

Attachment 193019 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17199079

New failing tests:
fast/parser/external-script-document-write.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854970</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 22:50:47 -0700</bug_when>
    <thetext>The Mac failures are because I failed to add the necessary subresource for the new test in my diff.  I&apos;m not sure about the cr-linux failures.  Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854982</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 23:16:50 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 193019 [details])
&gt; Attachment 193019 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://webkit-commit-queue.appspot.com/results/17194175
&gt; 
&gt; New failing tests:
&gt; inspector/debugger/dom-breakpoints.html
&gt; inspector/audits/audits-panel-functional.html
&gt; http/tests/navigation/lockedhistory-iframe.html

These other 3 are real failures from my patch.  I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854989</commentid>
    <comment_count>26</comment_count>
      <attachid>193072</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 23:29:13 -0700</bug_when>
    <thetext>Created attachment 193072
Fixed one test, but still breaks 2 inspector tests somehow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855037</commentid>
    <comment_count>27</comment_count>
      <attachid>193072</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 01:10:29 -0700</bug_when>
    <thetext>Comment on attachment 193072
Fixed one test, but still breaks 2 inspector tests somehow

Attachment 193072 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17132110

New failing tests:
inspector/debugger/dom-breakpoints.html
inspector/audits/audits-panel-functional.html
http/tests/navigation/lockedhistory-iframe.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855068</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:03:36 -0700</bug_when>
    <thetext>I dumped printfs all over the parser.  There are multiple documents being parsed at once in these tests, these limits change the order in which the documents complete.  I think the inspector tests are just racy here, and I&apos;m causing us to now alway lose the race.

If I adjust the outstandingChunkLimit up to 10, then the failures go away. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855069</commentid>
    <comment_count>29</comment_count>
      <attachid>193091</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:07:15 -0700</bug_when>
    <thetext>Created attachment 193091
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855072</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:08:54 -0700</bug_when>
    <thetext>In the end this is just a rather awkward producer/consumer implementation, using the MessageQueue lock to build a semaphore. :)  We could probably change this around to be simpler/more-explicit in future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855074</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:12:14 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; I dumped printfs all over the parser.  There are multiple documents being parsed at once in these tests, these limits change the order in which the documents complete.  I think the inspector tests are just racy here, and I&apos;m causing us to now alway lose the race.
&gt; 
&gt; If I adjust the outstandingChunkLimit up to 10, then the failures go away. :)

I unified the start/stop limits into one.  What was happening was that if your document could parse with fewer than 10 checkpoints it would never yield.  So short documents were beating out longer ones, especially since longer ones got throttled down to 3 checkpoints after the first one. :)

So I removed the separate start/stop limits, and that magically made the larger document able to parse again before the smaller one as it did not have to wait for 7 checkpoints to get processed before it could start pumping again.

Again, I believe this to be a race in the inspector tests for expecting one document to not load before the other but it&apos;s not longer possible to trigger it again for the meanwhile. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855077</commentid>
    <comment_count>32</comment_count>
      <attachid>193091</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 02:27:16 -0700</bug_when>
    <thetext>Comment on attachment 193091
Patch for landing

Clearing flags on attachment: 193091

Committed r145797: &lt;http://trac.webkit.org/changeset/145797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855078</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 02:27:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855079</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:27:36 -0700</bug_when>
    <thetext>To restate:  The previous code worked that if your main document had more than 10 checkpoints (aka chunks) in it (1000 tokens, or a &lt;/script&gt; tag cause a chunk/checkpoint) then it would yield, and continue yielding until the main thread had processed enough of those chunks until only 3 outstanding checkpoints/chunks were remaining.  In that time, if it caused a sub-resource load and that load happend to fit under 10 chunks (or better yet, under 3) then it likely would be processed to completion before the main load was.  This is what seemed to be biting the inspector tests.

I didn&apos;t dig deep enough to figure out which page (it could even have been the inspector page itself) was being loaded &quot;out of order&quot;, but such an investigation would be possible using an earlier version of my patch and some printfs in HTMLDocumentParser.

It was important that the start and stop limits were separate, as that gave time for &quot;little&quot; documents to easily complete parsing in one go before the larger document (which had yielded the background thread) would have processed stop - start tokens and be able to continue/finish parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855087</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-14 02:35:20 -0700</bug_when>
    <thetext>*** Bug 110547 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859112</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-20 00:06:02 -0700</bug_when>
    <thetext>This was another big perf win on the PLTs.  Quoting Nils:
https://code.google.com/p/chromium/issues/detail?id=180819#c19

Moz times:
-1.3% on chromium-rel-win7-webkit/moz/times
http://chromium-perf.appspot.com/?tab=chromium-rel-win7-webkit&amp;graph=times&amp;trace=t_extcs1&amp;rev=188340&amp;history=150&amp;master=ChromiumWebkit&amp;testSuite=page_cycler_moz&amp;details=true
-1.3% and -2.0% on chromium-rel-win7-webkit/intl2/times
http://chromium-perf.appspot.com/?tab=chromium-rel-win7-webkit&amp;graph=times&amp;trace=t_extwr&amp;rev=188353&amp;history=150&amp;master=ChromiumWebkit&amp;testSuite=page_cycler_intl2&amp;details=true
http://chromium-perf.appspot.com/?tab=chromium-rel-win7-webkit&amp;graph=times&amp;trace=t&amp;rev=188368&amp;history=150&amp;master=ChromiumWebkit&amp;testSuite=page_cycler_intl2&amp;details=true

Startup times:
-2.4% chromium-rel-win7-webkit/startup/warm/profiling_scripts1-first change after rev 145805
http://chromium-perf.appspot.com/?tab=chromium-rel-win7-webkit&amp;graph=warm&amp;trace=profiling_scripts1-first&amp;rev=188340&amp;history=150&amp;master=ChromiumWebkit&amp;testSuite=startup_test&amp;details=true</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192564</attachid>
            <date>2013-03-11 14:43:28 -0700</date>
            <delta_ts>2013-03-11 17:06:26 -0700</delta_ts>
            <desc>wip, hangs several tests.</desc>
            <filename>bug-112069-20130311143927.patch</filename>
            <type>text/plain</type>
            <size>6777</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFlOGUwODM5NzYyYmQ1
NTY1ZTAxNTYxYzUwOTVjMDJjNmMyNGE2Mi4uMDdkMmUxM2Y4NGM2NGRiMjIzNTY1ZDc1M2U3NDk2
YWQ3NWNjODYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06Om91dHN0YW5k
aW5nQ2hlY2twb2ludENvdW50KToKKyAgICAgICAgKEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0p
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnBh
c3NlZENoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6
OnB1bXBUb2tlbml6ZXIpOgorCiAyMDEzLTAzLTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29tcGlsZSBmaXguIFJ1YmJlci1zdGFtcCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IGU4NGM1ZTQxNTk4YzRkYThjMTE2ZTI2YjFkMWI1ZTczNzRkNjAzODUuLjIxNTExMjhmZTI5
NzFiNDIzODc4ZDI0MzkyOThhZDU5MzlmNDk5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVsZW1l
bnRTaGFkb3cuaCIKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkhUTUxDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgpAQCAtMTc3LDYgKzE3OCwxMiBAQCBib29s
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX25vZGUtPmRvY3VtZW50KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gZGlzcGxheTpub25lIGlmcmFtZXMgZG9uJ3QgbmVl
ZCByZW5kZXJlcnMuCisgICAgLy8gSG93ZXZlciwgaWYgb3VyIG93bmVyRWxlbWVudCBpcyBub3Qg
eWV0IGF0dGFjaGVkLCB3ZSBjYW4ndCB0cnVzdCBpdHMgcmVuZGVyZXIoKSBiZWluZyBudWxsLgor
ICAgIGlmIChtX25vZGUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpCisgICAgICAgICYmIG1f
bm9kZS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCktPmF0dGFjaGVkKCkKKyAgICAgICAgJiYg
IW1fbm9kZS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIW1fcmVuZGVyaW5nUGFyZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVu
dFJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmgKaW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2Yy
ZTdiYTc5OGRiYmQ2NS4uZWYxNDRlMjdmZDZlNWU2MWY5YjA1YjU1NjFiMzAxYmNkZWNiNmIzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0uaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXdpbmRU
byhIVE1MSW5wdXRDaGVja3BvaW50LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpOwogICAg
IHZvaWQgaW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQp
OwogCisgICAgc2l6ZV90IG91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9jaGVja3BvaW50cy5zaXplKCkgLSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7IH0K
KwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7CiAgICAgICAgIENoZWNrcG9pbnQo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJiBpLCBzaXplX3QgbikgOiBpbnB1dChpKSwgbnVtYmVyT2ZT
ZWdtZW50c0FscmVhZHlBcHBlbmRlZChuKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA1OWRjMmY0ZTNkNjcyMjVh
ZDA2NWM2MzBiMGJmZDBiZTE0MGVmZGNjLi4zNWIyODZmMWZlYzQ0N2NmOThhOTkyMmU0MjUzOGY2
NWE3YjQyYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3Jv
dW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0zOSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lk
dGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBz
cGVjdWxhdGl2ZWx5IHRva2VuaXppbmcKKy8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVh
ZCBvZiB3aGVuIHRoZSBtYWluLXRocmVhZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMg
YSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBwb3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlv
biBmYWlscykuCisvLyBTbyB3ZSBsaW1pdCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFy
Yml0cmFyaWx5IHRvIDEwLgorLy8gT3VyIG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5n
IHdpbGwgYmUgYXBwcm94aW1hdGVseToKKy8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICog
cGVuZGluZ1Rva2VuTGltaXQgKiBzaXplb2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2Vw
YXJhdGUgbG93IGFuZCBoaWdoIHdhdGVyIG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5n
CisvLyBvZmYgdGhlIG1haW4gdGhyZWFkJ3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVy
cyBoYXZlIG5vdCBiZWVuIHR1bmVkLgorc3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0No
ZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsKK3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdD
aGVja3BvaW50U3RhcnRMaW1pdCA9IDM7CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAw
MCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRp
bmcgb24gdGhlIHBhcnNlciB0aHJlYWQgZm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGlu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMg
Y29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKKwogI2lmbmRlZiBOREVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9r
ZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3Ry
ZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0lu
Zm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAK
ICNlbmRpZgogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsK
LQogQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8
V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25Q
dHI8Q29uZmlndXJhdGlvbj4gY29uZmlnKQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2Us
IHRoaXMpCiAgICAgLCBtX3RyZWVCdWlsZGVyU2ltdWxhdG9yKGNvbmZpZy0+b3B0aW9ucykKQEAg
LTk4LDYgKzExNiw3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENoZWNrcG9p
bnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCiAgICAgLy8gTm90ZSwgd2Ug
c2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBpbmRleCBiZWluZyBpbnZhbGlkCiAg
ICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgd2lsbCBiZSBwcm9jZXNzZWQg
aW4gRklGTyBvcmRlci4KICAgICBtX2lucHV0LmludmFsaWRhdGVDaGVja3BvaW50c1VwVGhyb3Vn
aChpbnB1dENoZWNrcG9pbnQpOworICAgIHB1bXBUb2tlbml6ZXIoKTsKIH0KIAogdm9pZCBCYWNr
Z3JvdW5kSFRNTFBhcnNlcjo6ZmluaXNoKCkKQEAgLTEyOCwxMCArMTQ3LDE3IEBAIHZvaWQgQmFj
a2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZpbGUoKQogCiB2b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIHsKKyAgICAvLyBObyBuZWVkIHRvIHN0YXJ0IHNwZWN1
bGF0aW5nIHVudGlsIHRoZSBtYWluIHRocmVhZCBpcyBuZWFybHkgY2F1Z2h0IHVwLgorICAgIGlm
IChtX2lucHV0Lm91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50KCkgPiBvdXRzdGFuZGluZ0NoZWNr
cG9pbnRTdGFydExpbWl0KQorICAgICAgICByZXR1cm47CisKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQobV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5p
emVyLmdldCgpLCAqbV90b2tlbik7Ci0gICAgICAgIGlmICghbV90b2tlbml6ZXItPm5leHRUb2tl
bihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4uZ2V0KCkpKQorICAgICAgICBpZiAoIW1fdG9r
ZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkgewor
ICAgICAgICAgICAgLy8gV2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIG91ciBjdXJyZW50IGlucHV0
LgorICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgbV9zb3VyY2VUcmFja2VyLmVuZChtX2lucHV0LmN1cnJl
bnQoKSwgbV90b2tlbml6ZXIuZ2V0KCksICptX3Rva2VuKTsKIAogICAgICAgICB7CkBAIC0xNTEs
MTEgKzE3NywxMyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkK
IAogICAgICAgICBtX3Rva2VuLT5jbGVhcigpOwogCi0gICAgICAgIGlmICghbV90cmVlQnVpbGRl
clNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRpbmdUb2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIu
Z2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQor
ICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9r
ZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUo
KSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkgewogICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRo
cmVhZCgpOworICAgICAgICAgICAgLy8gSWYgd2UncmUgZmFyIGFoZWFkIG9mIHRoZSBtYWluIHRo
cmVhZCwgeWllbGQgZm9yIGEgYml0IHRvIGF2b2lkIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnku
CisgICAgICAgICAgICBpZiAobV9pbnB1dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4g
b3V0c3RhbmRpbmdDaGVja3BvaW50U3RvcExpbWl0KQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgfQotCi0gICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogfQogCiB2
b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192599</attachid>
            <date>2013-03-11 17:06:27 -0700</date>
            <delta_ts>2013-03-11 18:23:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112069-20130311170227.patch</filename>
            <type>text/plain</type>
            <size>19570</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFlOGUwODM5NzYyYmQ1
NTY1ZTAxNTYxYzUwOTVjMDJjNmMyNGE2Mi4uOTcyZjNkNWE3MmYyOTBkN2FkMDlkYjlkOGVmN2Zh
ODU4NmVlZGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgc3BlY3VsYXRpdmUgZml4IGZvciBtZW1vcnkgaXNzdWVzIHNlZW4gaW46CisgICAgICAgIGh0
dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xODA4MTkK
KworICAgICAgICBXZSBub3cgdGVsbCB0aGUgYmFja2dyb3VuZCBodG1sIHBhcnNlciBldmVyeSB0
aW1lIHdlIHN0YXJ0CisgICAgICAgIGEgY2h1bmsgb24gdGhlIG1haW4gdGhyZWFkIChpbnN0ZWFk
IG9mIGVuZCksIHdoaWNoIGdyZWF0bHkKKyAgICAgICAgc2ltcGxpZmllZCB0aGUgY2hlY2twb2lu
dCBjbGVhbnVwIGNvZGUgZnJvbToKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE0NTI3NworCisgICAgICAgIFRoZSBjb3N0IGZvciB0aGlzIGlzIG5vdyB3ZSBoYXZl
IG1vcmUgbWVzc2FnZXMgZ29pbmcgdG8gdGhlCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkIChh
bmQgcG9zdFRhc2sgYWNxdWlyZXMgYSBsb2NrIHRvIHdyaXRlIHRvIHRoZQorICAgICAgICBtZXNz
YWdlIHF1ZXVlKS4gIENocm9taXVtIGhhcyBtb3JlIGFkdmFuY2VkIChsb2NrLWxlc3MpIHByaW1h
dGl2ZXMKKyAgICAgICAgZm9yIG1lc3NhZ2UgcG9zdGluZywgd2hpY2ggd2UnbGwgaG9wZWZ1bGx5
IGFkZCB0byBXZWJLaXQgaW4KKyAgICAgICAgZnVydHVyZSBwYXRjaGVzLgorCisgICAgICAgIFRo
ZSBzdGFydC9zdG9wIHNwZWN1bGF0aW5nIGxpbWl0cyBoYXZlIG5vdCBiZWVuIHR1bmVkLiAgQnV0
IGl0IG1ha2VzIHNlbnNlIHRoYXQKKyAgICAgICAgd2Ugc2hvdWxkIG5vdCBrZWVwaW5nIGluZmlu
aXRlIHNwZWN1bGF0aXZlIHRva2VucyBhcm91bmQgZm9yCisgICAgICAgIGxhcmdlIGRvY3VtZW50
cyB3aXRoIHNsb3ctdG8tbG9hZCBzY3JpcHRzLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5k
SFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAgKEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVj
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9r
ZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgor
ICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJz
ZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dFBhcnNlcjo6ZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3Vu
ZFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5k
aW5nU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisK
IDIwMTMtMDMtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDb21waWxlIGZpeC4gUnViYmVyLXN0YW1wIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
LmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgwYjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2
MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApA
QCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBU
aHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4KQordm9pZCBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0
Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQogewotICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENo
ZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0g
ICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0
aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAgICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBDaGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNr
cG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsK
KworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQu
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRz
W2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsg
KytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludEluZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgK
aW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyAr
NTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRz
IGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9p
bnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmlu
ZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNC
ZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVj
a3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3Bv
aW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCA1OWRjMmY0ZTNkNjcyMjVhZDA2NWM2MzBiMGJmZDBiZTE0MGVmZGNj
Li4yNzY3MDliOWNhMzU3NDUwZWQxYjE4MDZiMWZjMjk1YTdhOWRmMWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0z
OSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3
aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3
aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcK
Ky8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVh
ZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBw
b3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1p
dCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3Vy
IG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToK
Ky8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXpl
b2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVy
IG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFk
J3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgor
c3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7
CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0
aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQg
Zm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tl
bkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBO
REVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4
MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
c2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmln
KQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3RyZWVCdWls
ZGVyU2ltdWxhdG9yKGNvbmZpZy0+b3B0aW9ucykKQEAgLTkzLDExICsxMTEsMTIgQEAgdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbShQYXNzT3duUHRyPENoZWNrcG9pbnQ+IGNo
ZWNrcG9pbnQpCiAgICAgcHVtcFRva2VuaXplcigpOwogfQogCi12b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjpwYXNzZWRDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQgaW5wdXRDaGVja3Bv
aW50KQordm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9p
bnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCiB7CiAgICAgLy8gTm90ZSwg
d2Ugc2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBpbmRleCBiZWluZyBpbnZhbGlk
CiAgICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgd2lsbCBiZSBwcm9jZXNz
ZWQgaW4gRklGTyBvcmRlci4KLSAgICBtX2lucHV0LmludmFsaWRhdGVDaGVja3BvaW50c1VwVGhy
b3VnaChpbnB1dENoZWNrcG9pbnQpOworICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRz
QmVmb3JlKGlucHV0Q2hlY2twb2ludCk7CisgICAgcHVtcFRva2VuaXplcigpOwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQpAQCAtMTI4LDEwICsxNDcsMTcgQEAgdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiAKIHZvaWQgQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIoKQogeworICAgIC8vIE5vIG5lZWQgdG8gc3RhcnQg
c3BlY3VsYXRpbmcgdW50aWwgdGhlIG1haW4gdGhyZWFkIGlzIG5lYXJseSBjYXVnaHQgdXAuCisg
ICAgaWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91dHN0YW5kaW5n
Q2hlY2twb2ludFN0YXJ0TGltaXQpCisgICAgICAgIHJldHVybjsKKwogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFydChtX2lucHV0LmN1cnJlbnQoKSwgbV90
b2tlbml6ZXIuZ2V0KCksICptX3Rva2VuKTsKLSAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4
dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpCisgICAgICAgIGlmICgh
bV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4uZ2V0KCkp
KSB7CisgICAgICAgICAgICAvLyBXZSd2ZSByZWFjaGVkIHRoZSBlbmQgb2Ygb3VyIGN1cnJlbnQg
aW5wdXQuCisgICAgICAgICAgICBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5wdXQu
Y3VycmVudCgpLCBtX3Rva2VuaXplci5nZXQoKSwgKm1fdG9rZW4pOwogCiAgICAgICAgIHsKQEAg
LTE1MSwxMSArMTc3LDEzIEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6
ZXIoKQogCiAgICAgICAgIG1fdG9rZW4tPmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKCFtX3RyZWVC
dWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpLCBtX3Rva2Vu
aXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rva2VuTGlt
aXQpCisgICAgICAgIGlmICghbV90cmVlQnVpbGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRp
bmdUb2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+
c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KSB7CiAgICAgICAgICAgICBzZW5kVG9rZW5zVG9N
YWluVGhyZWFkKCk7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBmYXIgYWhlYWQgb2YgdGhlIG1h
aW4gdGhyZWFkLCB5aWVsZCBmb3IgYSBiaXQgdG8gYXZvaWQgY29uc3VtaW5nIHRvbyBtdWNoIG1l
bW9yeS4KKyAgICAgICAgICAgIGlmIChtX2lucHV0Lm91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50
KCkgPiBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiB9
CiAKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNlbmRUb2tlbnNUb01haW5UaHJlYWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgK
aW5kZXggYWE2MGIwOWM0NzdlM2I0ZjEwYWQ4MTU2ZmViNjJjOTJkNDRlOTc4OC4uZDMyMWNhMzIz
ZjU0MDIwMzFhMjY4MzRjZmI4MmM0OGJkNGUwMTI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVzdW1l
RnJvbShQYXNzT3duUHRyPENoZWNrcG9pbnQ+KTsKLSAgICB2b2lkIHBhc3NlZENoZWNrcG9pbnQo
SFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2lu
dChIVE1MSW5wdXRDaGVja3BvaW50KTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgc3Rv
cCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcAppbmRleCAyNjNjNGVmN2ZhMTQwYzg1ZGI2M2VmN2FkMGI0MDQ0NTBlNzQyZmRlLi4y
MTlkOGM1MzIyNjNhMTFiMzE0Zjc4MzU5ZWI4OWM4M2MwYmFjOGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTMyOCw4ICsz
MjgsMjIgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVQYXJzZWRDaHVua0Zy
b21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7
CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCit2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCiB7CisgICAgQVNTRVJUKGNodW5rKTsKKyAgICBpZiAoaXNXYWl0
aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcgb24gYSBuZXR3b3Jr
IHNjcmlwdCwganVzdCBzYXZlIHRoZSBjaHVuaywgd2UnbGwgZ2V0CisgICAgICAgIC8vIGEgc2Vj
b25kIHZhbGlkYXRlU3BlY3VsYXRpb25zIGNhbGwgYWZ0ZXIgdGhlIHNjcmlwdCBjb21wbGV0ZXMu
CisgICAgICAgIC8vIFRoaXMgY2FsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgaW1tZWRpYXRlbHkg
YWZ0ZXIgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyCisgICAgICAgIC8vIHdoaWNoIG1h
eSBoYXZlIHN0YXJ0ZWQgYSBuZXR3b3JrIGxvYWQgYW5kIGxlZnQgdXMgd2FpdGluZy4KKyAgICAg
ICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CisgICAgICAgIEFTU0VSVCghbV90b2tlbik7CisgICAg
ICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOworICAgICAgICBtX2xhc3RDaHVu
a0JlZm9yZVNjcmlwdCA9IGNodW5rOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKCFtX2xhc3RDaHVua0JlZm9yZVNjcmlwdCk7CiAgICAgT3duUHRyPEhUTUxUb2tlbml6ZXI+
IHRva2VuaXplciA9IG1fdG9rZW5pemVyLnJlbGVhc2UoKTsKICAgICBPd25QdHI8SFRNTFRva2Vu
PiB0b2tlbiA9IG1fdG9rZW4ucmVsZWFzZSgpOwogCkBAIC0zMzksMzAgKzM1MywyMiBAQCB2b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCFtX2N1cnJlbnRDaHVuaykgewotICAgICAgICAvLyBJZiB0
aGVyZSBpcyBubyBtX2N1cnJlbnRDaHVuaywgd2UgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIGRp
ZEZhaWxTcGVjdWxhdGlvbgotICAgICAgICAvLyBmb3IgdGhpcyBjaHVuay4KLSAgICAgICAgLy8g
RklYTUU6IEluIHRoaXMgY2FzZSwgd2UncmUgbG9zaW5nIHdoYXRldmVyIHN0YXRlIGhhcyBiZWVu
IGNoYW5nZWQgc2luY2UKLSAgICAgICAgLy8gd2UgY2FsbGVkIGRpZEZhaWxTcGVjdWxhdGlvbi4g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NDYKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIEN1cnJlbnRseSB3ZSdyZSBvbmx5IHNtYXJ0IGVu
b3VnaCB0byByZXVzZSB0aGUgc3BlY3VsYXRpb24gYnVmZmVyIGlmIHRoZSB0b2tlbml6ZXIKICAg
ICAvLyBib3RoIHN0YXJ0cyBhbmQgZW5kcyBpbiB0aGUgRGF0YVN0YXRlLiBUaGF0IHN0YXRlIGlz
IHNpbXBsZXN0IGJlY2F1c2UgdGhlIEhUTUxUb2tlbgogICAgIC8vIGlzIGFsd2F5cyBpbiB0aGUg
VW5pbml0aWFsaXplZCBzdGF0ZS4gV2Ugc2hvdWxkIGNvbnNpZGVyIHdoZXRoZXIgd2UgY2FuIHJl
dXNlIHRoZQogICAgIC8vIHNwZWN1bGF0aW9uIGJ1ZmZlciBpbiBvdGhlciBzdGF0ZXMsIGJ1dCB3
ZSdkIGxpa2VseSBuZWVkIHRvIGRvIHNvbWV0aGluZyBtb3JlCiAgICAgLy8gc29waGlzdGljYXRl
ZCB3aXRoIHRoZSBIVE1MVG9rZW4uCi0gICAgaWYgKG1fY3VycmVudENodW5rLT50b2tlbml6ZXJT
dGF0ZSA9PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKKyAgICBpZiAoY2h1bmstPnRva2VuaXpl
clN0YXRlID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQogICAgICAgICAmJiB0b2tlbml6ZXIt
PnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCiAgICAgICAgICYmIG1faW5wdXQu
Y3VycmVudCgpLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQodG9rZW4tPmlzVW5pbml0aWFs
aXplZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZEZhaWxTcGVjdWxhdGlv
bih0b2tlbi5yZWxlYXNlKCksIHRva2VuaXplci5yZWxlYXNlKCkpOworICAgIGRpc2NhcmRTcGVj
dWxhdGlvbnNBbmRSZXN1bWVGcm9tKGNodW5rLCB0b2tlbi5yZWxlYXNlKCksIHRva2VuaXplci5y
ZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1bGF0
aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVy
PiB0b2tlbml6ZXIpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlzY2FyZFNwZWN1bGF0aW9u
c0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFzdENodW5rQmVmb3JlU2Ny
aXB0LCBQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXpl
cj4gdG9rZW5pemVyKQogewogICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7CiAgICAgbV9z
cGVjdWxhdGlvbnMuY2xlYXIoKTsKQEAgLTM3MSwzMCArMzc3LDMxIEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2Vu
LCBQYXNzT3duCiAgICAgY2hlY2twb2ludC0+cGFyc2VyID0gbV93ZWFrRmFjdG9yeS5jcmVhdGVX
ZWFrUHRyKCk7CiAgICAgY2hlY2twb2ludC0+dG9rZW4gPSB0b2tlbjsKICAgICBjaGVja3BvaW50
LT50b2tlbml6ZXIgPSB0b2tlbml6ZXI7Ci0gICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50
ID0gbV9jdXJyZW50Q2h1bmstPmlucHV0Q2hlY2twb2ludDsKLSAgICBjaGVja3BvaW50LT5wcmVs
b2FkU2Nhbm5lckNoZWNrcG9pbnQgPSBtX2N1cnJlbnRDaHVuay0+cHJlbG9hZFNjYW5uZXJDaGVj
a3BvaW50OworICAgIGNoZWNrcG9pbnQtPmlucHV0Q2hlY2twb2ludCA9IGxhc3RDaHVua0JlZm9y
ZVNjcmlwdC0+aW5wdXRDaGVja3BvaW50OworICAgIGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVy
Q2hlY2twb2ludCA9IGxhc3RDaHVua0JlZm9yZVNjcmlwdC0+cHJlbG9hZFNjYW5uZXJDaGVja3Bv
aW50OwogICAgIGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQgPSBtX2lucHV0LmN1cnJlbnQoKS50
b1N0cmluZygpLmlzb2xhdGVkQ29weSgpOwotICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFyKCk7
Ci0gICAgbV9jdXJyZW50Q2h1bmsuY2xlYXIoKTsKKyAgICBtX2lucHV0LmN1cnJlbnQoKS5jbGVh
cigpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGluc3RlYWQgb2YgY2xlYXJl
ZC4KIAogICAgIEFTU0VSVChjaGVja3BvaW50LT51bnBhcnNlZElucHV0LmlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpKTsKICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRh
c2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJlc3VtZUZyb20sIG1fYmFja2dyb3VuZFBh
cnNlciwgY2hlY2twb2ludC5yZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFy
c2VkQ2h1bms+IGNodW5rKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRD
aHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IHBvcENodW5r
KQogewogICAgIC8vIEFTU0VSVCB0aGF0IHRoaXMgb2JqZWN0IGlzIGJvdGggYXR0YWNoZWQgdG8g
dGhlIERvY3VtZW50IGFuZCBwcm90ZWN0ZWQuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgPj0gMik7
CiAgICAgQVNTRVJUKHNob3VsZFVzZVRocmVhZGluZygpKTsKICAgICBBU1NFUlQoIW1fdG9rZW5p
emVyKTsKICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZv
cmVTY3JpcHQpOyAvLyB2YWxpZGF0ZVNwZWN1bGF0aW9ucyBtdXN0IGhhdmUgYmVlbiBjYWxsZWQg
YmVmb3JlIHdlIGNhbiBjb250aW51ZSBwYXJzaW5nLgogCiAgICAgQWN0aXZlUGFyc2VyU2Vzc2lv
biBzZXNzaW9uKGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpKTsKKyAgICBPd25QdHI8UGFyc2Vk
Q2h1bms+IGNodW5rID0gcG9wQ2h1bms7CisgICAgT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJl
YW0+IHRva2VucyA9IGNodW5rLT50b2tlbnMucmVsZWFzZSgpOwogCi0gICAgbV9jdXJyZW50Q2h1
bmsgPSBjaHVuazsKLSAgICBPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0g
bV9jdXJyZW50Q2h1bmstPnRva2Vucy5yZWxlYXNlKCk7CisgICAgSFRNTFBhcnNlclRocmVhZDo6
c2hhcmVkKCktPnBvc3RUYXNrKGJpbmQoJkJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1
bmtXaXRoQ2hlY2twb2ludCwgbV9iYWNrZ3JvdW5kUGFyc2VyLCBjaHVuay0+aW5wdXRDaGVja3Bv
aW50KSk7CiAKLSAgICBmb3IgKFhTU0luZm9TdHJlYW06OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9j
dXJyZW50Q2h1bmstPnhzc0luZm9zLmJlZ2luKCk7IGl0ICE9IG1fY3VycmVudENodW5rLT54c3NJ
bmZvcy5lbmQoKTsgKytpdCkgeworICAgIGZvciAoWFNTSW5mb1N0cmVhbTo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBjaHVuay0+eHNzSW5mb3MuYmVnaW4oKTsgaXQgIT0gY2h1bmstPnhzc0luZm9zLmVu
ZCgpOyArK2l0KSB7CiAgICAgICAgIG1fdGV4dFBvc2l0aW9uID0gKCppdCktPm1fdGV4dFBvc2l0
aW9uOwogICAgICAgICBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZS5kaWRCbG9ja1NjcmlwdCgqKml0KTsg
CiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKQEAgLTQyNiw3ICs0MzMsNyBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFz
c093blB0cjxQYXJzZQogICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXQgKyAxID09IHRva2Vucy0+ZW5kKCkpOyAvLyBUaGUgPC9zY3JpcHQ+
IGlzIGFzc3VtZWQgdG8gYmUgdGhlIGxhc3QgdG9rZW4gb2YgdGhpcyBidW5jaC4KICAgICAgICAg
ICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigpOwotICAgICAgICAgICAgdmFsaWRh
dGVTcGVjdWxhdGlvbnMoKTsKKyAgICAgICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKGNodW5r
LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC00NTMsMjYg
KzQ2MCwxNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlv
bnMoKQogICAgIC8vIG1fdG9rZW5pemVyIGFuZCBtX3Rva2VuIGRvbid0IGhhdmUgc3RhdGUgdGhh
dCBpbnZhbGlkYXRlcyBtX3NwZWN1bGF0aW9ucy4KICAgICBBU1NFUlQoIW1fdG9rZW5pemVyKTsK
ICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3Jp
cHQpOwogCiAgICAgLy8gRklYTUU6IFBhc3MgaW4gY3VycmVudCBpbnB1dCBsZW5ndGguCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVudCgpLCBsaW5lTnVtYmVyKCkuemVyb0Jhc2Vk
SW50KCkpOwogCiAgICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgSFRN
TElucHV0Q2hlY2twb2ludCBsYXN0Q2hlY2twb2ludFBhc3NlZCA9IDA7CiAKICAgICB3aGlsZSAo
IW1fc3BlY3VsYXRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8UGFyc2VkQ2h1bms+
IGNodW5rID0gbV9zcGVjdWxhdGlvbnMudGFrZUZpcnN0KCk7Ci0gICAgICAgIGxhc3RDaGVja3Bv
aW50UGFzc2VkID0gY2h1bmstPmlucHV0Q2hlY2twb2ludDsKLSAgICAgICAgcHJvY2Vzc1BhcnNl
ZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoY2h1bmsucmVsZWFzZSgpKTsKLQotICAgICAgICAv
LyBQcm9jZXNzaW5nIGEgY2h1bmsgY2FuIGNhbGwgZG9jdW1lbnQud3JpdGUsIGNhdXNpbmcgdXMg
dG8gaW52YWxpZGF0ZSBhbnkgcmVtYWluaW5nIHNwZWN1bGF0aW9ucy4KLSAgICAgICAgaWYgKG1f
c3BlY3VsYXRpb25zLmlzRW1wdHkoKSB8fCBpc1N0b3BwZWQoKSkgewotICAgICAgICAgICAgLy8g
V2UncmUgYWJvcnRpbmcgdGhlc2Ugc3BlY3VsYXRpb25zLCBzbyBkb24ndCB0ZWxsIHRoZSBwYXJz
ZXIgd2UndmUgcGFzc2VkIGEgY2hlY2twb2ludCAoaXRzIGFscmVhZHkgY2xlYXJlZCBpdHMgY2hl
Y2twb2ludHMpLgotICAgICAgICAgICAgbGFzdENoZWNrcG9pbnRQYXNzZWQgPSAwOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJh
Y2tncm91bmRQYXJzZXIobV9zcGVjdWxhdGlvbnMudGFrZUZpcnN0KCkpOwogCi0gICAgICAgIGlm
IChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCisgICAgICAgIGlmIChpc1N0b3BwZWQoKSB8fCBpc1dh
aXRpbmdGb3JTY3JpcHRzKCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAoY3Vy
cmVudFRpbWUoKSAtIHN0YXJ0VGltZSA+IHBhcnNlclRpbWVMaW1pdCkgewpAQCAtNDgxLDkgKzQ3
OSw2IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wUGVuZGluZ1NwZWN1bGF0aW9ucygp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobGFzdENoZWNrcG9pbnRQYXNzZWQpCi0gICAg
ICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhiaW5kKCZCYWNrZ3JvdW5k
SFRNTFBhcnNlcjo6cGFzc2VkQ2hlY2twb2ludCwgbV9iYWNrZ3JvdW5kUGFyc2VyLCBsYXN0Q2hl
Y2twb2ludFBhc3NlZCkpOwotCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0
ZUhUTUwoY29va2llLCBsaW5lTnVtYmVyKCkuemVyb0Jhc2VkSW50KCkpOwogfQogCkBAIC04ODQs
NyArODc5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNj
cmlwdEV4ZWN1dGlvbigpCiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAg
aWYgKG1faGF2ZUJhY2tncm91bmRQYXJzZXIpIHsKLSAgICAgICAgdmFsaWRhdGVTcGVjdWxhdGlv
bnMoKTsKKyAgICAgICAgdmFsaWRhdGVTcGVjdWxhdGlvbnMobV9sYXN0Q2h1bmtCZWZvcmVTY3Jp
cHQucmVsZWFzZSgpKTsKICAgICAgICAgLy8gcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91
bmRQYXJzZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERv
Y3VtZW50LAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRl
ZCB5ZXQuCiAgICAgICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmlu
ZGV4IDliM2M4MzNjN2FjMzNmMTAxN2UwNGI5ZTgzMWJmODBhMGM2M2E3NzguLmNmNTY3MWNmNTlm
MjE2YWJiZWQ2OGM5ZDMyYmUyYmVjZDQ0M2I0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xNDEsOCArMTQxLDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tn
cm91bmRQYXJzZXIoKTsKICAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7Ci0gICAgdm9p
ZCB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOwotICAgIHZvaWQgZGlkRmFpbFNwZWN1bGF0aW9uKFBh
c3NPd25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CisgICAgdm9p
ZCB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmsp
OworICAgIHZvaWQgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gbGFzdENodW5rLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8
SFRNTFRva2VuaXplcj4pOwogICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91
bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogICAgIHZvaWQgcHVtcFBlbmRpbmdT
cGVjdWxhdGlvbnMoKTsKICNlbmRpZgpAQCAtMTk0LDcgKzE5NCw5IEBAIHByaXZhdGU6CiAgICAg
WFNTQXVkaXRvckRlbGVnYXRlIG1feHNzQXVkaXRvckRlbGVnYXRlOwogCiAjaWYgRU5BQkxFKFRI
UkVBREVEX0hUTUxfUEFSU0VSKQotICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1
bms7CisgICAgLy8gRklYTUU6IG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LCBtX3Rva2VuaXplciwg
bV90b2tlbiwgYW5kIG1faW5wdXQgc2hvdWxkIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3Rh
dGUgb2JqZWN0CisgICAgLy8gc28gdGhleSBjYW4gYmUgc2V0IGFuZCBjbGVhcmVkIHRvZ2V0aGVy
IGFuZCBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzIHRvZ2V0aGVyLgorICAgIE93blB0cjxQYXJzZWRD
aHVuaz4gbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQ7CiAgICAgRGVxdWU8T3duUHRyPFBhcnNlZENo
dW5rPiA+IG1fc3BlY3VsYXRpb25zOwogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxEb2N1bWVudFBh
cnNlcj4gbV93ZWFrRmFjdG9yeTsKICAgICBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBt
X2JhY2tncm91bmRQYXJzZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192614</attachid>
            <date>2013-03-11 18:24:00 -0700</date>
            <delta_ts>2013-03-11 22:33:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112069-20130311182000.patch</filename>
            <type>text/plain</type>
            <size>19555</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFlOGUwODM5NzYyYmQ1
NTY1ZTAxNTYxYzUwOTVjMDJjNmMyNGE2Mi4uOTcyZjNkNWE3MmYyOTBkN2FkMDlkYjlkOGVmN2Zh
ODU4NmVlZGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgc3BlY3VsYXRpdmUgZml4IGZvciBtZW1vcnkgaXNzdWVzIHNlZW4gaW46CisgICAgICAgIGh0
dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xODA4MTkK
KworICAgICAgICBXZSBub3cgdGVsbCB0aGUgYmFja2dyb3VuZCBodG1sIHBhcnNlciBldmVyeSB0
aW1lIHdlIHN0YXJ0CisgICAgICAgIGEgY2h1bmsgb24gdGhlIG1haW4gdGhyZWFkIChpbnN0ZWFk
IG9mIGVuZCksIHdoaWNoIGdyZWF0bHkKKyAgICAgICAgc2ltcGxpZmllZCB0aGUgY2hlY2twb2lu
dCBjbGVhbnVwIGNvZGUgZnJvbToKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE0NTI3NworCisgICAgICAgIFRoZSBjb3N0IGZvciB0aGlzIGlzIG5vdyB3ZSBoYXZl
IG1vcmUgbWVzc2FnZXMgZ29pbmcgdG8gdGhlCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkIChh
bmQgcG9zdFRhc2sgYWNxdWlyZXMgYSBsb2NrIHRvIHdyaXRlIHRvIHRoZQorICAgICAgICBtZXNz
YWdlIHF1ZXVlKS4gIENocm9taXVtIGhhcyBtb3JlIGFkdmFuY2VkIChsb2NrLWxlc3MpIHByaW1h
dGl2ZXMKKyAgICAgICAgZm9yIG1lc3NhZ2UgcG9zdGluZywgd2hpY2ggd2UnbGwgaG9wZWZ1bGx5
IGFkZCB0byBXZWJLaXQgaW4KKyAgICAgICAgZnVydHVyZSBwYXRjaGVzLgorCisgICAgICAgIFRo
ZSBzdGFydC9zdG9wIHNwZWN1bGF0aW5nIGxpbWl0cyBoYXZlIG5vdCBiZWVuIHR1bmVkLiAgQnV0
IGl0IG1ha2VzIHNlbnNlIHRoYXQKKyAgICAgICAgd2Ugc2hvdWxkIG5vdCBrZWVwaW5nIGluZmlu
aXRlIHNwZWN1bGF0aXZlIHRva2VucyBhcm91bmQgZm9yCisgICAgICAgIGxhcmdlIGRvY3VtZW50
cyB3aXRoIHNsb3ctdG8tbG9hZCBzY3JpcHRzLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5k
SFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAgKEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVj
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9r
ZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgor
ICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJz
ZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dFBhcnNlcjo6ZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3Vu
ZFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5k
aW5nU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisK
IDIwMTMtMDMtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDb21waWxlIGZpeC4gUnViYmVyLXN0YW1wIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
LmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgwYjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2
MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApA
QCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBU
aHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4KQordm9pZCBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0
Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQogewotICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENo
ZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0g
ICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0
aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAgICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBDaGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNr
cG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsK
KworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQu
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRz
W2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsg
KytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludEluZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgK
aW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyAr
NTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRz
IGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9p
bnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmlu
ZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNC
ZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVj
a3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3Bv
aW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCA1OWRjMmY0ZTNkNjcyMjVhZDA2NWM2MzBiMGJmZDBiZTE0MGVmZGNj
Li4yNzY3MDliOWNhMzU3NDUwZWQxYjE4MDZiMWZjMjk1YTdhOWRmMWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0z
OSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3
aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3
aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcK
Ky8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVh
ZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBw
b3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1p
dCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3Vy
IG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToK
Ky8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXpl
b2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVy
IG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFk
J3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgor
c3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7
CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0
aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQg
Zm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tl
bkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBO
REVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4
MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
c2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmln
KQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3RyZWVCdWls
ZGVyU2ltdWxhdG9yKGNvbmZpZy0+b3B0aW9ucykKQEAgLTkzLDExICsxMTEsMTIgQEAgdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbShQYXNzT3duUHRyPENoZWNrcG9pbnQ+IGNo
ZWNrcG9pbnQpCiAgICAgcHVtcFRva2VuaXplcigpOwogfQogCi12b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjpwYXNzZWRDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQgaW5wdXRDaGVja3Bv
aW50KQordm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9p
bnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCiB7CiAgICAgLy8gTm90ZSwg
d2Ugc2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBpbmRleCBiZWluZyBpbnZhbGlk
CiAgICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgd2lsbCBiZSBwcm9jZXNz
ZWQgaW4gRklGTyBvcmRlci4KLSAgICBtX2lucHV0LmludmFsaWRhdGVDaGVja3BvaW50c1VwVGhy
b3VnaChpbnB1dENoZWNrcG9pbnQpOworICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRz
QmVmb3JlKGlucHV0Q2hlY2twb2ludCk7CisgICAgcHVtcFRva2VuaXplcigpOwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQpAQCAtMTI4LDEwICsxNDcsMTcgQEAgdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiAKIHZvaWQgQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIoKQogeworICAgIC8vIE5vIG5lZWQgdG8gc3RhcnQg
c3BlY3VsYXRpbmcgdW50aWwgdGhlIG1haW4gdGhyZWFkIGlzIG5lYXJseSBjYXVnaHQgdXAuCisg
ICAgaWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91dHN0YW5kaW5n
Q2hlY2twb2ludFN0YXJ0TGltaXQpCisgICAgICAgIHJldHVybjsKKwogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFydChtX2lucHV0LmN1cnJlbnQoKSwgbV90
b2tlbml6ZXIuZ2V0KCksICptX3Rva2VuKTsKLSAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4
dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpCisgICAgICAgIGlmICgh
bV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4uZ2V0KCkp
KSB7CisgICAgICAgICAgICAvLyBXZSd2ZSByZWFjaGVkIHRoZSBlbmQgb2Ygb3VyIGN1cnJlbnQg
aW5wdXQuCisgICAgICAgICAgICBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5wdXQu
Y3VycmVudCgpLCBtX3Rva2VuaXplci5nZXQoKSwgKm1fdG9rZW4pOwogCiAgICAgICAgIHsKQEAg
LTE1MSwxMSArMTc3LDEzIEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6
ZXIoKQogCiAgICAgICAgIG1fdG9rZW4tPmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKCFtX3RyZWVC
dWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpLCBtX3Rva2Vu
aXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rva2VuTGlt
aXQpCisgICAgICAgIGlmICghbV90cmVlQnVpbGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRp
bmdUb2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+
c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KSB7CiAgICAgICAgICAgICBzZW5kVG9rZW5zVG9N
YWluVGhyZWFkKCk7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBmYXIgYWhlYWQgb2YgdGhlIG1h
aW4gdGhyZWFkLCB5aWVsZCBmb3IgYSBiaXQgdG8gYXZvaWQgY29uc3VtaW5nIHRvbyBtdWNoIG1l
bW9yeS4KKyAgICAgICAgICAgIGlmIChtX2lucHV0Lm91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50
KCkgPiBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiB9
CiAKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNlbmRUb2tlbnNUb01haW5UaHJlYWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgK
aW5kZXggYWE2MGIwOWM0NzdlM2I0ZjEwYWQ4MTU2ZmViNjJjOTJkNDRlOTc4OC4uZDMyMWNhMzIz
ZjU0MDIwMzFhMjY4MzRjZmI4MmM0OGJkNGUwMTI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVzdW1l
RnJvbShQYXNzT3duUHRyPENoZWNrcG9pbnQ+KTsKLSAgICB2b2lkIHBhc3NlZENoZWNrcG9pbnQo
SFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2lu
dChIVE1MSW5wdXRDaGVja3BvaW50KTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgc3Rv
cCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcAppbmRleCAyNjNjNGVmN2ZhMTQwYzg1ZGI2M2VmN2FkMGI0MDQ0NTBlNzQyZmRlLi5k
MWY4MzAzMmIxOWQxNjNlOWM1ZjMzNjU2MDhhZjdiZDhhMTQ3MTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTMyOCw4ICsz
MjgsMjAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVQYXJzZWRDaHVua0Zy
b21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7
CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCit2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCiB7CisgICAgQVNTRVJUKGNodW5rKTsKKyAgICBpZiAoaXNXYWl0
aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcgb24gYSBuZXR3b3Jr
IHNjcmlwdCwganVzdCBzYXZlIHRoZSBjaHVuaywgd2UnbGwgZ2V0CisgICAgICAgIC8vIGEgc2Vj
b25kIHZhbGlkYXRlU3BlY3VsYXRpb25zIGNhbGwgYWZ0ZXIgdGhlIHNjcmlwdCBjb21wbGV0ZXMu
CisgICAgICAgIC8vIFRoaXMgY2FsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgaW1tZWRpYXRlbHkg
YWZ0ZXIgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyCisgICAgICAgIC8vIHdoaWNoIG1h
eSBoYXZlIHN0YXJ0ZWQgYSBuZXR3b3JrIGxvYWQgYW5kIGxlZnQgdXMgd2FpdGluZy4KKyAgICAg
ICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9yZVNjcmlwdCk7CisgICAgICAgIG1fbGFzdENodW5r
QmVmb3JlU2NyaXB0ID0gY2h1bms7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4g
dG9rZW5pemVyID0gbV90b2tlbml6ZXIucmVsZWFzZSgpOwogICAgIE93blB0cjxIVE1MVG9rZW4+
IHRva2VuID0gbV90b2tlbi5yZWxlYXNlKCk7CiAKQEAgLTMzOSwzMCArMzUxLDIyIEBAIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoIW1fY3VycmVudENodW5rKSB7Ci0gICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIG1fY3VycmVudENodW5rLCB3ZSBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgZGlk
RmFpbFNwZWN1bGF0aW9uCi0gICAgICAgIC8vIGZvciB0aGlzIGNodW5rLgotICAgICAgICAvLyBG
SVhNRTogSW4gdGhpcyBjYXNlLCB3ZSdyZSBsb3Npbmcgd2hhdGV2ZXIgc3RhdGUgaGFzIGJlZW4g
Y2hhbmdlZCBzaW5jZQotICAgICAgICAvLyB3ZSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDU0NgotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8gQ3VycmVudGx5IHdlJ3JlIG9ubHkgc21hcnQgZW5v
dWdoIHRvIHJldXNlIHRoZSBzcGVjdWxhdGlvbiBidWZmZXIgaWYgdGhlIHRva2VuaXplcgogICAg
IC8vIGJvdGggc3RhcnRzIGFuZCBlbmRzIGluIHRoZSBEYXRhU3RhdGUuIFRoYXQgc3RhdGUgaXMg
c2ltcGxlc3QgYmVjYXVzZSB0aGUgSFRNTFRva2VuCiAgICAgLy8gaXMgYWx3YXlzIGluIHRoZSBV
bmluaXRpYWxpemVkIHN0YXRlLiBXZSBzaG91bGQgY29uc2lkZXIgd2hldGhlciB3ZSBjYW4gcmV1
c2UgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24gYnVmZmVyIGluIG90aGVyIHN0YXRlcywgYnV0IHdl
J2QgbGlrZWx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIG1vcmUKICAgICAvLyBzb3BoaXN0aWNhdGVk
IHdpdGggdGhlIEhUTUxUb2tlbi4KLSAgICBpZiAobV9jdXJyZW50Q2h1bmstPnRva2VuaXplclN0
YXRlID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQorICAgIGlmIChjaHVuay0+dG9rZW5pemVy
U3RhdGUgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCiAgICAgICAgICYmIHRva2VuaXplci0+
c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKICAgICAgICAgJiYgbV9pbnB1dC5j
dXJyZW50KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCh0b2tlbi0+aXNVbmluaXRpYWxp
emVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGlkRmFpbFNwZWN1bGF0aW9u
KHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2UoKSk7CisgICAgZGlzY2FyZFNwZWN1
bGF0aW9uc0FuZFJlc3VtZUZyb20oY2h1bmssIHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJl
bGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRp
b24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+
IHRva2VuaXplcikKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaXNjYXJkU3BlY3VsYXRpb25z
QW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmtCZWZvcmVTY3Jp
cHQsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVy
PiB0b2tlbml6ZXIpCiB7CiAgICAgbV93ZWFrRmFjdG9yeS5yZXZva2VBbGwoKTsKICAgICBtX3Nw
ZWN1bGF0aW9ucy5jbGVhcigpOwpAQCAtMzcxLDMwICszNzUsMzEgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4s
IFBhc3NPd24KICAgICBjaGVja3BvaW50LT5wYXJzZXIgPSBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKTsKICAgICBjaGVja3BvaW50LT50b2tlbiA9IHRva2VuOwogICAgIGNoZWNrcG9pbnQt
PnRva2VuaXplciA9IHRva2VuaXplcjsKLSAgICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9pbnQg
PSBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVja3BvaW50OwotICAgIGNoZWNrcG9pbnQtPnByZWxv
YWRTY2FubmVyQ2hlY2twb2ludCA9IG1fY3VycmVudENodW5rLT5wcmVsb2FkU2Nhbm5lckNoZWNr
cG9pbnQ7CisgICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3Jl
U2NyaXB0LT5pbnB1dENoZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5uZXJD
aGVja3BvaW50ID0gbGFzdENodW5rQmVmb3JlU2NyaXB0LT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9p
bnQ7CiAgICAgY2hlY2twb2ludC0+dW5wYXJzZWRJbnB1dCA9IG1faW5wdXQuY3VycmVudCgpLnRv
U3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIoKTsK
LSAgICBtX2N1cnJlbnRDaHVuay5jbGVhcigpOworICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFy
KCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gaW5zdGVhZCBvZiBjbGVhcmVk
LgogCiAgICAgQVNTRVJUKGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQuaXNTYWZlVG9TZW5kVG9B
bm90aGVyVGhyZWFkKCkpOwogICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFz
ayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSwgbV9iYWNrZ3JvdW5kUGFy
c2VyLCBjaGVja3BvaW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNl
cjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJz
ZWRDaHVuaz4gY2h1bmspCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENo
dW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gcG9wQ2h1bmsp
CiB7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0
aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsK
ICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkpOwogICAgIEFTU0VSVCghbV90b2tlbml6
ZXIpOwogICAgIEFTU0VSVCghbV90b2tlbik7CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9y
ZVNjcmlwdCk7IC8vIHZhbGlkYXRlU3BlY3VsYXRpb25zIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBi
ZWZvcmUgd2UgY2FuIGNvbnRpbnVlIHBhcnNpbmcuCiAKICAgICBBY3RpdmVQYXJzZXJTZXNzaW9u
IHNlc3Npb24oY29udGV4dEZvclBhcnNpbmdTZXNzaW9uKCkpOworICAgIE93blB0cjxQYXJzZWRD
aHVuaz4gY2h1bmsgPSBwb3BDaHVuazsKKyAgICBPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVh
bT4gdG9rZW5zID0gY2h1bmstPnRva2Vucy5yZWxlYXNlKCk7CiAKLSAgICBtX2N1cnJlbnRDaHVu
ayA9IGNodW5rOwotICAgIE93blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMgPSBt
X2N1cnJlbnRDaHVuay0+dG9rZW5zLnJlbGVhc2UoKTsKKyAgICBIVE1MUGFyc2VyVGhyZWFkOjpz
aGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVu
a1dpdGhDaGVja3BvaW50LCBtX2JhY2tncm91bmRQYXJzZXIsIGNodW5rLT5pbnB1dENoZWNrcG9p
bnQpKTsKIAotICAgIGZvciAoWFNTSW5mb1N0cmVhbTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2N1
cnJlbnRDaHVuay0+eHNzSW5mb3MuYmVnaW4oKTsgaXQgIT0gbV9jdXJyZW50Q2h1bmstPnhzc0lu
Zm9zLmVuZCgpOyArK2l0KSB7CisgICAgZm9yIChYU1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGNodW5rLT54c3NJbmZvcy5iZWdpbigpOyBpdCAhPSBjaHVuay0+eHNzSW5mb3MuZW5k
KCk7ICsraXQpIHsKICAgICAgICAgbV90ZXh0UG9zaXRpb24gPSAoKml0KS0+bV90ZXh0UG9zaXRp
b247CiAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KCoqaXQpOyAK
ICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQpAQCAtNDI2LDcgKzQzMSw3IEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNz
T3duUHRyPFBhcnNlCiAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChpdCArIDEgPT0gdG9rZW5zLT5lbmQoKSk7IC8vIFRoZSA8L3NjcmlwdD4g
aXMgYXNzdW1lZCB0byBiZSB0aGUgbGFzdCB0b2tlbiBvZiB0aGlzIGJ1bmNoLgogICAgICAgICAg
ICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7Ci0gICAgICAgICAgICB2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpOworICAgICAgICAgICAgdmFsaWRhdGVTcGVjdWxhdGlvbnMoY2h1bmsu
cmVsZWFzZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTQ1MywyNiAr
NDU4LDE3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wUGVuZGluZ1NwZWN1bGF0aW9u
cygpCiAgICAgLy8gbV90b2tlbml6ZXIgYW5kIG1fdG9rZW4gZG9uJ3QgaGF2ZSBzdGF0ZSB0aGF0
IGludmFsaWRhdGVzIG1fc3BlY3VsYXRpb25zLgogICAgIEFTU0VSVCghbV90b2tlbml6ZXIpOwog
ICAgIEFTU0VSVCghbV90b2tlbik7CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9yZVNjcmlw
dCk7CiAKICAgICAvLyBGSVhNRTogUGFzcyBpbiBjdXJyZW50IGlucHV0IGxlbmd0aC4KICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsV3JpdGVIVE1MKGRvY3VtZW50KCksIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJ
bnQoKSk7CiAKICAgICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBIVE1M
SW5wdXRDaGVja3BvaW50IGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsKIAogICAgIHdoaWxlICgh
bV9zcGVjdWxhdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxQYXJzZWRDaHVuaz4g
Y2h1bmsgPSBtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKTsKLSAgICAgICAgbGFzdENoZWNrcG9p
bnRQYXNzZWQgPSBjaHVuay0+aW5wdXRDaGVja3BvaW50OwotICAgICAgICBwcm9jZXNzUGFyc2Vk
Q2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihjaHVuay5yZWxlYXNlKCkpOwotCi0gICAgICAgIC8v
IFByb2Nlc3NpbmcgYSBjaHVuayBjYW4gY2FsbCBkb2N1bWVudC53cml0ZSwgY2F1c2luZyB1cyB0
byBpbnZhbGlkYXRlIGFueSByZW1haW5pbmcgc3BlY3VsYXRpb25zLgotICAgICAgICBpZiAobV9z
cGVjdWxhdGlvbnMuaXNFbXB0eSgpIHx8IGlzU3RvcHBlZCgpKSB7Ci0gICAgICAgICAgICAvLyBX
ZSdyZSBhYm9ydGluZyB0aGVzZSBzcGVjdWxhdGlvbnMsIHNvIGRvbid0IHRlbGwgdGhlIHBhcnNl
ciB3ZSd2ZSBwYXNzZWQgYSBjaGVja3BvaW50IChpdHMgYWxyZWFkeSBjbGVhcmVkIGl0cyBjaGVj
a3BvaW50cykuCi0gICAgICAgICAgICBsYXN0Q2hlY2twb2ludFBhc3NlZCA9IDA7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CiAKLSAgICAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKKyAgICAgICAgaWYgKGlzU3RvcHBlZCgpIHx8IGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChjdXJy
ZW50VGltZSgpIC0gc3RhcnRUaW1lID4gcGFyc2VyVGltZUxpbWl0KSB7CkBAIC00ODEsOSArNDc3
LDYgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChsYXN0Q2hlY2twb2ludFBhc3NlZCkKLSAgICAg
ICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVkKCktPnBvc3RUYXNrKGJpbmQoJkJhY2tncm91bmRI
VE1MUGFyc2VyOjpwYXNzZWRDaGVja3BvaW50LCBtX2JhY2tncm91bmRQYXJzZXIsIGxhc3RDaGVj
a3BvaW50UGFzc2VkKSk7Ci0KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRl
SFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAKQEAgLTg4NCw3
ICs4NzcsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2Ny
aXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKICAgICBp
ZiAobV9oYXZlQmFja2dyb3VuZFBhcnNlcikgewotICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9u
cygpOworICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhtX2xhc3RDaHVua0JlZm9yZVNjcmlw
dC5yZWxlYXNlKCkpOworICAgICAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsK
ICAgICAgICAgLy8gcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIgY2FuIGNh
dXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgICAg
ICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAgICAg
IFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDliM2M4MzNjN2Fj
MzNmMTAxN2UwNGI5ZTgzMWJmODBhMGM2M2E3NzguLmNmNTY3MWNmNTlmMjE2YWJiZWQ2OGM5ZDMy
YmUyYmVjZDQ0M2I0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oCkBAIC0xNDEsOCArMTQxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
VEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tncm91bmRQYXJzZXIoKTsK
ICAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7Ci0gICAgdm9pZCB2YWxpZGF0ZVNwZWN1
bGF0aW9ucygpOwotICAgIHZvaWQgZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRv
a2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CisgICAgdm9pZCB2YWxpZGF0ZVNwZWN1
bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmspOworICAgIHZvaWQgZGlz
Y2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFz
dENodW5rLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4p
OwogICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093
blB0cjxQYXJzZWRDaHVuaz4pOwogICAgIHZvaWQgcHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKTsK
ICNlbmRpZgpAQCAtMTk0LDcgKzE5NCw5IEBAIHByaXZhdGU6CiAgICAgWFNTQXVkaXRvckRlbGVn
YXRlIG1feHNzQXVkaXRvckRlbGVnYXRlOwogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQotICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1bms7CisgICAgLy8gRklY
TUU6IG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LCBtX3Rva2VuaXplciwgbV90b2tlbiwgYW5kIG1f
aW5wdXQgc2hvdWxkIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RhdGUgb2JqZWN0CisgICAg
Ly8gc28gdGhleSBjYW4gYmUgc2V0IGFuZCBjbGVhcmVkIHRvZ2V0aGVyIGFuZCBwYXNzZWQgYmV0
d2VlbiB0aHJlYWRzIHRvZ2V0aGVyLgorICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9sYXN0Q2h1
bmtCZWZvcmVTY3JpcHQ7CiAgICAgRGVxdWU8T3duUHRyPFBhcnNlZENodW5rPiA+IG1fc3BlY3Vs
YXRpb25zOwogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxEb2N1bWVudFBhcnNlcj4gbV93ZWFrRmFj
dG9yeTsKICAgICBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBtX2JhY2tncm91bmRQYXJz
ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192640</attachid>
            <date>2013-03-11 22:33:37 -0700</date>
            <delta_ts>2013-03-11 22:59:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130311222937.patch</filename>
            <type>text/plain</type>
            <size>19734</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgxZTUyMmZiOThlNTJh
YjQ0NzZhZmY2MDVlNjg1NTg0YjJmYzMxNC4uM2NjYmY4MTQ4MTE3MjAwOTJkNTA2MmU2Mjc4MDQ1
ZjRlNWYxOGEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNrZ3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUg
d2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBvbiB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2Yg
ZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAgICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNs
ZWFudXAgY29kZSBmcm9tOgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNvc3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9y
ZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAgICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBw
b3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8gd3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2Ug
cXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUgYWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZl
cworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRk
IHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0
YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRzIGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQg
bWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUg
c3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBmb3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdp
dGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW06OmludmFsaWRhdGVDaGVja3BvaW50c0JlZm9yZSk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oOgorICAgICAgICAoQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtOjpvdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6
ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAg
ICAgIChCYWNrZ3JvdW5kSFRNTFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
dmFsaWRhdGVTcGVjdWxhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFy
c2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdT
cGVjdWxhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1
bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAx
My0wMy0xMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkgZnVuY3Rpb25zIG91dCBvZiBEZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgw
YjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2Njlj
ODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApAQCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENo
ZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAg
ICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAKLXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hl
Y2twb2ludEluZGV4KQordm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRl
Q2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2tw
b2ludEluZGV4KQogewotICAgIEFTU0VSVChjaGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRz
LnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENoZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNr
cG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0gICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJ
bmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAg
IGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50
Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1fY2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBU
aGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAg
ICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3Bv
aW50SW5kZXgpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hl
Y2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBD
aGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsKKworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdt
ZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5
QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7
IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRl
ZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRzW2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZh
bGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVu
ZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9
IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkK
KyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3
Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgKytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ld
LmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludElu
ZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4OwogfQogCiB2b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJl
d2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcm
IHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKaW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFm
Y2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2Ji
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyArNTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQg
YWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5w
dXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9pbnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJ
bnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBp
bnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAg
dm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisK
KyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBt
X2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBw
cml2YXRlOgogICAgIHN0cnVjdCBDaGVja3BvaW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCAwYjc1MjBlNDBkM2Uz
NzM5YzIyY2UzYjUwMmMzZmNhOTM5NGRmZWVmLi5lMWUyZThhMjdlZmUwNjZiNmI3NDkzZWVkNGE0
ZWM4OTAzMzgyNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0zOSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5k
d2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1
cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcKKy8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBh
aGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVhZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMg
aXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBwb3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxh
dGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1pdCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25z
IGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3VyIG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0
aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToKKy8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0
ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXplb2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEg
c2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVyIG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3Bw
aW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFkJ3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVt
YmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgorc3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGlu
Z0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsKK3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRp
bmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8g
MTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdh
aXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQgZm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVk
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0
aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBOREVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0
VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2Vu
U3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhT
U0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4
CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAw
MDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQ
dHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NP
d25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmlnKQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVu
Y2UsIHRoaXMpCiAgICAgLCBtX3Rva2VuKGFkb3B0UHRyKG5ldyBIVE1MVG9rZW4pKQpAQCAtOTQs
MTEgKzExMiwxMiBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NP
d25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2ludCkKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hl
Y2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFy
dGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2lu
dCkKIHsKICAgICAvLyBOb3RlLCB3ZSBzaG91bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhl
IGluZGV4IGJlaW5nIGludmFsaWQKICAgICAvLyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRo
cmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBGSUZPIG9yZGVyLgotICAgIG1faW5wdXQuaW52YWxp
ZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKGlucHV0Q2hlY2twb2ludCk7CisgICAgbV9pbnB1dC5p
bnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoaW5wdXRDaGVja3BvaW50KTsKKyAgICBwdW1wVG9r
ZW5pemVyKCk7CiB9CiAKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCkBAIC0x
MjksMTAgKzE0OCwxNyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxl
KCkKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiB7CisgICAg
Ly8gTm8gbmVlZCB0byBzdGFydCBzcGVjdWxhdGluZyB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMg
bmVhcmx5IGNhdWdodCB1cC4KKyAgICBpZiAobV9pbnB1dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRD
b3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0KG1f
aW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXplci5nZXQoKSwgKm1fdG9rZW4pOwotICAgICAgICBp
ZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdl
dCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVu
dCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhl
IGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4KKyAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5U
aHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIG1fc291cmNl
VHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tl
bik7CiAKICAgICAgICAgewpAQCAtMTUyLDExICsxNzgsMTMgQEAgdm9pZCBCYWNrZ3JvdW5kSFRN
TFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAKICAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIAot
ICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9r
ZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUo
KSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAgICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyU2ltdWxh
dG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpLCBtX3Rva2VuaXplci5nZXQoKSkg
fHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rva2VuTGltaXQpIHsKICAgICAg
ICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKKyAgICAgICAgICAgIC8vIElmIHdlJ3Jl
IGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJlYWQsIHlpZWxkIGZvciBhIGJpdCB0byBhdm9pZCBj
b25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5LgorICAgICAgICAgICAgaWYgKG1faW5wdXQub3V0c3Rh
bmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHNlbmRUb2tl
bnNUb01haW5UaHJlYWQoKTsKIH0KIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRv
a2Vuc1RvTWFpblRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCA4MTVjMTE1NTgyOWZkNzJmNjIxYmRiYTU2OTZjZmUz
NmRkNmQ1ZmI5Li4yODIxZmJmZjI4MjEyMjIzZjQwMTMwYzQ4ZjRhN2IzZDE1MDNhMTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCByZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZv
aWQgcGFzc2VkQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50KTsKKyAgICB2b2lkIHN0YXJ0
ZWRDaHVua1dpdGhDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQpOwogICAgIHZvaWQgZmlu
aXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDk2N2QxZDU0ZDMzYjIxMzJhNzk1MDg0
ODJiZTFjNjdiM2QwYzExZWYuLjkzMjFmMmZjNjMxMTE1NzBhM2M3OWU5YWRkMGZhODdlODU4YWNj
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcApAQCAtMzI4LDggKzMyOCwyMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlk
UmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYQogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJl
cigpLnplcm9CYXNlZEludCgpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlk
YXRlU3BlY3VsYXRpb25zKCkKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1
bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENodW5rPiBjaHVuaykKIHsKKyAgICBBU1NFUlQoY2h1
bmspOworICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKKyAgICAgICAgLy8gV2UncmUg
d2FpdGluZyBvbiBhIG5ldHdvcmsgc2NyaXB0LCBqdXN0IHNhdmUgdGhlIGNodW5rLCB3ZSdsbCBn
ZXQKKyAgICAgICAgLy8gYSBzZWNvbmQgdmFsaWRhdGVTcGVjdWxhdGlvbnMgY2FsbCBhZnRlciB0
aGUgc2NyaXB0IGNvbXBsZXRlcy4KKyAgICAgICAgLy8gVGhpcyBjYWxsIHNob3VsZCBoYXZlIGJl
ZW4gbWFkZSBpbW1lZGlhdGVseSBhZnRlciBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIK
KyAgICAgICAgLy8gd2hpY2ggbWF5IGhhdmUgc3RhcnRlZCBhIG5ldHdvcmsgbG9hZCBhbmQgbGVm
dCB1cyB3YWl0aW5nLgorICAgICAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsK
KyAgICAgICAgbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQgPSBjaHVuazsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgIE93
blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIgPSBtX3Rva2VuaXplci5yZWxlYXNlKCk7CiAg
ICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4gPSBtX3Rva2VuLnJlbGVhc2UoKTsKIApAQCAtMzM5
LDMxICszNTEsMjMgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRp
b25zKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9jdXJyZW50Q2h1bmsp
IHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbV9jdXJyZW50Q2h1bmssIHdlIG11c3QgaGF2
ZSBhbHJlYWR5IGNhbGxlZCBkaWRGYWlsU3BlY3VsYXRpb24KLSAgICAgICAgLy8gZm9yIHRoaXMg
Y2h1bmsuCi0gICAgICAgIC8vIEZJWE1FOiBJbiB0aGlzIGNhc2UsIHdlJ3JlIGxvc2luZyB3aGF0
ZXZlciBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2VkIHNpbmNlCi0gICAgICAgIC8vIHdlIGNhbGxlZCBk
aWRGYWlsU3BlY3VsYXRpb24uIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICAvLyBDdXJyZW50bHkg
d2UncmUgb25seSBzbWFydCBlbm91Z2ggdG8gcmV1c2UgdGhlIHNwZWN1bGF0aW9uIGJ1ZmZlciBp
ZiB0aGUgdG9rZW5pemVyCiAgICAgLy8gYm90aCBzdGFydHMgYW5kIGVuZHMgaW4gdGhlIERhdGFT
dGF0ZS4gVGhhdCBzdGF0ZSBpcyBzaW1wbGVzdCBiZWNhdXNlIHRoZSBIVE1MVG9rZW4KICAgICAv
LyBpcyBhbHdheXMgaW4gdGhlIFVuaW5pdGlhbGl6ZWQgc3RhdGUuIFdlIHNob3VsZCBjb25zaWRl
ciB3aGV0aGVyIHdlIGNhbiByZXVzZSB0aGUKICAgICAvLyBzcGVjdWxhdGlvbiBidWZmZXIgaW4g
b3RoZXIgc3RhdGVzLCBidXQgd2UnZCBsaWtlbHkgbmVlZCB0byBkbyBzb21ldGhpbmcgbW9yZQog
ICAgIC8vIHNvcGhpc3RpY2F0ZWQgd2l0aCB0aGUgSFRNTFRva2VuLgotICAgIGlmIChtX2N1cnJl
bnRDaHVuay0+dG9rZW5pemVyU3RhdGUgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCisgICAg
aWYgKGNodW5rLT50b2tlbml6ZXJTdGF0ZSA9PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKICAg
ICAgICAgJiYgdG9rZW5pemVyLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQog
ICAgICAgICAmJiBtX2lucHV0LmN1cnJlbnQoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYgbV9jdXJy
ZW50Q2h1bmstPnRyZWVCdWlsZGVyU3RhdGUgPT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpz
dGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKSkgeworICAgICAgICAmJiBjaHVuay0+dHJlZUJ1
aWxkZXJTdGF0ZSA9PSBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJlZUJ1
aWxkZXIuZ2V0KCkpKSB7CiAgICAgICAgIEFTU0VSVCh0b2tlbi0+aXNVbmluaXRpYWxpemVkKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGlkRmFpbFNwZWN1bGF0aW9uKHRva2Vu
LnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2UoKSk7CisgICAgZGlzY2FyZFNwZWN1bGF0aW9u
c0FuZFJlc3VtZUZyb20oY2h1bmssIHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFz
c093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IHRva2Vu
aXplcikKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVz
dW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQsIFBh
c3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tl
bml6ZXIpCiB7CiAgICAgbV93ZWFrRmFjdG9yeS5yZXZva2VBbGwoKTsKICAgICBtX3NwZWN1bGF0
aW9ucy5jbGVhcigpOwpAQCAtMzczLDMwICszNzcsMzEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NP
d24KICAgICBjaGVja3BvaW50LT50b2tlbiA9IHRva2VuOwogICAgIGNoZWNrcG9pbnQtPnRva2Vu
aXplciA9IHRva2VuaXplcjsKICAgICBjaGVja3BvaW50LT50cmVlQnVpbGRlclN0YXRlID0gSFRN
TFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKTsKLSAg
ICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9pbnQgPSBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVj
a3BvaW50OwotICAgIGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fY3Vy
cmVudENodW5rLT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+aW5w
dXRDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3JlU2NyaXB0LT5pbnB1dENoZWNrcG9pbnQ7Cisg
ICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3Jl
U2NyaXB0LT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9pbnQ7CiAgICAgY2hlY2twb2ludC0+dW5wYXJz
ZWRJbnB1dCA9IG1faW5wdXQuY3VycmVudCgpLnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRDaHVuay5jbGVhcigp
OworICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFyKCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBwYXNzZWQgaW4gaW5zdGVhZCBvZiBjbGVhcmVkLgogCiAgICAgQVNTRVJUKGNoZWNrcG9pbnQt
PnVucGFyc2VkSW5wdXQuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkpOwogICAgIEhUTUxQ
YXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNl
cjo6cmVzdW1lRnJvbSwgbV9iYWNrZ3JvdW5kUGFyc2VyLCBjaGVja3BvaW50LnJlbGVhc2UoKSkp
OwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJh
Y2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gY2h1bmspCit2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFz
c093blB0cjxQYXJzZWRDaHVuaz4gcG9wQ2h1bmspCiB7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhp
cyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4K
ICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFk
aW5nKCkpOwogICAgIEFTU0VSVCghbV90b2tlbml6ZXIpOwogICAgIEFTU0VSVCghbV90b2tlbik7
CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9yZVNjcmlwdCk7CiAKICAgICBBY3RpdmVQYXJz
ZXJTZXNzaW9uIHNlc3Npb24oY29udGV4dEZvclBhcnNpbmdTZXNzaW9uKCkpOworICAgIE93blB0
cjxQYXJzZWRDaHVuaz4gY2h1bmsocG9wQ2h1bmspOworICAgIE93blB0cjxDb21wYWN0SFRNTFRv
a2VuU3RyZWFtPiB0b2tlbnMgPSBjaHVuay0+dG9rZW5zLnJlbGVhc2UoKTsKIAotICAgIG1fY3Vy
cmVudENodW5rID0gY2h1bms7Ci0gICAgT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRv
a2VucyA9IG1fY3VycmVudENodW5rLT50b2tlbnMucmVsZWFzZSgpOworICAgIEhUTUxQYXJzZXJU
aHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3Rh
cnRlZENodW5rV2l0aENoZWNrcG9pbnQsIG1fYmFja2dyb3VuZFBhcnNlciwgY2h1bmstPmlucHV0
Q2hlY2twb2ludCkpOwogCi0gICAgZm9yIChYU1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fY3VycmVudENodW5rLT54c3NJbmZvcy5iZWdpbigpOyBpdCAhPSBtX2N1cnJlbnRDaHVu
ay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsKKyAgICBmb3IgKFhTU0luZm9TdHJlYW06OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gY2h1bmstPnhzc0luZm9zLmJlZ2luKCk7IGl0ICE9IGNodW5rLT54c3NJ
bmZvcy5lbmQoKTsgKytpdCkgewogICAgICAgICBtX3RleHRQb3NpdGlvbiA9ICgqaXQpLT5tX3Rl
eHRQb3NpdGlvbjsKICAgICAgICAgbV94c3NBdWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3JpcHQo
KippdCk7IAogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCkBAIC00MjgsNyArNDMzLDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFy
c2VyKFBhc3NPd25QdHI8UGFyc2UKICAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkg
ewogICAgICAgICAgICAgQVNTRVJUKGl0ICsgMSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIDwv
c2NyaXB0PiBpcyBhc3N1bWVkIHRvIGJlIHRoZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAg
ICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKTsKLSAgICAgICAgICAg
IHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7CisgICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9u
cyhjaHVuay5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
NDU1LDI2ICs0NjAsMTcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3Bl
Y3VsYXRpb25zKCkKICAgICAvLyBtX3Rva2VuaXplciBhbmQgbV90b2tlbiBkb24ndCBoYXZlIHN0
YXRlIHRoYXQgaW52YWxpZGF0ZXMgbV9zcGVjdWxhdGlvbnMuCiAgICAgQVNTRVJUKCFtX3Rva2Vu
aXplcik7CiAgICAgQVNTRVJUKCFtX3Rva2VuKTsKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVm
b3JlU2NyaXB0KTsKIAogICAgIC8vIEZJWE1FOiBQYXNzIGluIGN1cnJlbnQgaW5wdXQgbGVuZ3Ro
LgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwoZG9jdW1lbnQoKSwgbGluZU51bWJlcigpLnpl
cm9CYXNlZEludCgpKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwot
ICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgbGFzdENoZWNrcG9pbnRQYXNzZWQgPSAwOwogCiAgICAg
d2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFBhcnNl
ZENodW5rPiBjaHVuayA9IG1fc3BlY3VsYXRpb25zLnRha2VGaXJzdCgpOwotICAgICAgICBsYXN0
Q2hlY2twb2ludFBhc3NlZCA9IGNodW5rLT5pbnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIHByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKGNodW5rLnJlbGVhc2UoKSk7Ci0KLSAg
ICAgICAgLy8gUHJvY2Vzc2luZyBhIGNodW5rIGNhbiBjYWxsIGRvY3VtZW50LndyaXRlLCBjYXVz
aW5nIHVzIHRvIGludmFsaWRhdGUgYW55IHJlbWFpbmluZyBzcGVjdWxhdGlvbnMuCi0gICAgICAg
IGlmIChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkgfHwgaXNTdG9wcGVkKCkpIHsKLSAgICAgICAg
ICAgIC8vIFdlJ3JlIGFib3J0aW5nIHRoZXNlIHNwZWN1bGF0aW9ucywgc28gZG9uJ3QgdGVsbCB0
aGUgcGFyc2VyIHdlJ3ZlIHBhc3NlZCBhIGNoZWNrcG9pbnQgKGl0cyBhbHJlYWR5IGNsZWFyZWQg
aXRzIGNoZWNrcG9pbnRzKS4KLSAgICAgICAgICAgIGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIHByb2Nlc3NQYXJzZWRDaHVu
a0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3BlY3VsYXRpb25zLnRha2VGaXJzdCgpKTsKIAotICAg
ICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKQorICAgICAgICBpZiAoaXNTdG9wcGVkKCkg
fHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
aWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKQEAgLTQ4
Myw5ICs0NzksNiBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxh
dGlvbnMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGxhc3RDaGVja3BvaW50UGFzc2Vk
KQotICAgICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENoZWNrcG9pbnQsIG1fYmFja2dyb3VuZFBhcnNlciwg
bGFzdENoZWNrcG9pbnRQYXNzZWQpKTsKLQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIApA
QCAtODg2LDcgKzg3OSw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5n
QWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VS
KQogICAgIGlmIChtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyKSB7Ci0gICAgICAgIHZhbGlkYXRlU3Bl
Y3VsYXRpb25zKCk7CisgICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKG1fbGFzdENodW5rQmVm
b3JlU2NyaXB0LnJlbGVhc2UoKSk7CisgICAgICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVT
Y3JpcHQpOwogICAgICAgICAvLyBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNl
ciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQs
CiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4K
ICAgICAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNjEw
MDRlMjc3ZTg0NzcwMjNkYWI1MzMwNmY1NjE3MmI1ZTlkMmMzYy4uMWRhZWVmM2RiZjlmZGQyZjgy
ODBhZjkwM2I1ODNmYmJiOWJkYzE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBh
cnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tncm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHZhbGlk
YXRlU3BlY3VsYXRpb25zKCk7Ci0gICAgdm9pZCBkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0
cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+KTsKKyAgICB2b2lkIHZhbGlk
YXRlU3BlY3VsYXRpb25zKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGxhc3RDaHVuayk7CisgICAg
dm9pZCBkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBsYXN0Q2h1bmssIFBhc3NPd25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9r
ZW5pemVyPik7CiAgICAgdm9pZCBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNl
cihQYXNzT3duUHRyPFBhcnNlZENodW5rPik7CiAgICAgdm9pZCBwdW1wUGVuZGluZ1NwZWN1bGF0
aW9ucygpOwogI2VuZGlmCkBAIC0xOTYsNyArMTk2LDkgQEAgcHJpdmF0ZToKICAgICBYU1NBdWRp
dG9yRGVsZWdhdGUgbV94c3NBdWRpdG9yRGVsZWdhdGU7CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
SFRNTF9QQVJTRVIpCi0gICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAg
ICAvLyBGSVhNRTogbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQsIG1fdG9rZW5pemVyLCBtX3Rva2Vu
LCBhbmQgbV9pbnB1dCBzaG91bGQgYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBzdGF0ZSBvYmpl
Y3QKKyAgICAvLyBzbyB0aGV5IGNhbiBiZSBzZXQgYW5kIGNsZWFyZWQgdG9nZXRoZXIgYW5kIHBh
c3NlZCBiZXR3ZWVuIHRocmVhZHMgdG9nZXRoZXIuCisgICAgT3duUHRyPFBhcnNlZENodW5rPiBt
X2xhc3RDaHVua0JlZm9yZVNjcmlwdDsKICAgICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4g
bV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBt
X3dlYWtGYWN0b3J5OwogICAgIFdlYWtQdHI8QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fYmFja2dy
b3VuZFBhcnNlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192644</attachid>
            <date>2013-03-11 22:59:05 -0700</date>
            <delta_ts>2013-03-11 23:04:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130311225506.patch</filename>
            <type>text/plain</type>
            <size>22228</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgxZTUyMmZiOThlNTJh
YjQ0NzZhZmY2MDVlNjg1NTg0YjJmYzMxNC4uNGQ3OTE3ZjNjOWM3ODkzOWI0ZGIyNWQxNmFkNTcw
M2Y2NmU0NzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRhdGVDaGVj
a3BvaW50c0JlZm9yZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpvdXRzdGFuZGluZ0NoZWNrcG9p
bnRDb3VudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChCYWNrZ3JvdW5kSFRNTFBhcnNlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRp
b24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAg
ICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMy0xMSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkg
ZnVuY3Rpb25zIG91dCBvZiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
LmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgwYjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2
MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApA
QCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBU
aHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4KQordm9pZCBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0
Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQogewotICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENo
ZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0g
ICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0
aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAgICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBDaGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNr
cG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsK
KworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQu
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRz
W2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsg
KytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludEluZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgK
aW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyAr
NTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRz
IGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9p
bnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmlu
ZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNC
ZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVj
a3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3Bv
aW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCAwYjc1MjBlNDBkM2UzNzM5YzIyY2UzYjUwMmMzZmNhOTM5NGRmZWVm
Li5lMWUyZThhMjdlZmUwNjZiNmI3NDkzZWVkNGE0ZWM4OTAzMzgyNzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0z
OSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3
aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3
aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcK
Ky8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVh
ZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBw
b3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1p
dCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3Vy
IG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToK
Ky8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXpl
b2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVy
IG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFk
J3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgor
c3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7
CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0
aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQg
Zm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tl
bkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBO
REVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4
MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
c2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmln
KQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3Rva2VuKGFk
b3B0UHRyKG5ldyBIVE1MVG9rZW4pKQpAQCAtOTQsMTEgKzExMiwxMiBAQCB2b2lkIEJhY2tncm91
bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2lu
dCkKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKLXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnBhc3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit2
b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1M
SW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKIHsKICAgICAvLyBOb3RlLCB3ZSBzaG91
bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFsaWQKICAgICAv
LyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBG
SUZPIG9yZGVyLgotICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKGlu
cHV0Q2hlY2twb2ludCk7CisgICAgbV9pbnB1dC5pbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUo
aW5wdXRDaGVja3BvaW50KTsKKyAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKIHZvaWQgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCkBAIC0xMjksMTAgKzE0OCwxNyBAQCB2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6cHVtcFRva2VuaXplcigpCiB7CisgICAgLy8gTm8gbmVlZCB0byBzdGFydCBzcGVjdWxh
dGluZyB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMgbmVhcmx5IGNhdWdodCB1cC4KKyAgICBpZiAo
bV9pbnB1dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3Bv
aW50U3RhcnRMaW1pdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXpl
ci5nZXQoKSwgKm1fdG9rZW4pOwotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4o
bV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2Vu
aXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4K
KyAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50
KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7CiAKICAgICAgICAgewpAQCAtMTUyLDEx
ICsxNzgsMTMgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAK
ICAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIAotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJT
aW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdl
dCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAg
ICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vu
cy0+bGFzdCgpLCBtX3Rva2VuaXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkg
Pj0gcGVuZGluZ1Rva2VuTGltaXQpIHsKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJl
YWQoKTsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJl
YWQsIHlpZWxkIGZvciBhIGJpdCB0byBhdm9pZCBjb25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5Lgor
ICAgICAgICAgICAgaWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgIH0KLQotICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKIH0KIAogdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCA4
MTVjMTE1NTgyOWZkNzJmNjIxYmRiYTU2OTZjZmUzNmRkNmQ1ZmI5Li4yODIxZmJmZjI4MjEyMjIz
ZjQwMTMwYzQ4ZjRhN2IzZDE1MDNhMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXN1bWVGcm9tKFBh
c3NPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZvaWQgcGFzc2VkQ2hlY2twb2ludChIVE1MSW5w
dXRDaGVja3BvaW50KTsKKyAgICB2b2lkIHN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KEhUTUxJ
bnB1dENoZWNrcG9pbnQpOwogICAgIHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDk2N2QxZDU0ZDMzYjIxMzJhNzk1MDg0ODJiZTFjNjdiM2QwYzExZWYuLjkzMjFmMmZj
NjMxMTE1NzBhM2M3OWU5YWRkMGZhODdlODU4YWNjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzI4LDggKzMyOCwyMCBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tn
cm91bmRQYXJzZXIoUGFzc093blB0cjxQYQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIAot
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKK3ZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBjaHVuaykKIHsKKyAgICBBU1NFUlQoY2h1bmspOworICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKKyAgICAgICAgLy8gV2UncmUgd2FpdGluZyBvbiBhIG5ldHdvcmsgc2NyaXB0
LCBqdXN0IHNhdmUgdGhlIGNodW5rLCB3ZSdsbCBnZXQKKyAgICAgICAgLy8gYSBzZWNvbmQgdmFs
aWRhdGVTcGVjdWxhdGlvbnMgY2FsbCBhZnRlciB0aGUgc2NyaXB0IGNvbXBsZXRlcy4KKyAgICAg
ICAgLy8gVGhpcyBjYWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBpbW1lZGlhdGVseSBhZnRlciBy
dW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIKKyAgICAgICAgLy8gd2hpY2ggbWF5IGhhdmUg
c3RhcnRlZCBhIG5ldHdvcmsgbG9hZCBhbmQgbGVmdCB1cyB3YWl0aW5nLgorICAgICAgICBBU1NF
UlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKKyAgICAgICAgbV9sYXN0Q2h1bmtCZWZvcmVT
Y3JpcHQgPSBjaHVuazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV9s
YXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6
ZXIgPSBtX3Rva2VuaXplci5yZWxlYXNlKCk7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4g
PSBtX3Rva2VuLnJlbGVhc2UoKTsKIApAQCAtMzM5LDMxICszNTEsMjMgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghbV9jdXJyZW50Q2h1bmspIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gbV9jdXJyZW50Q2h1bmssIHdlIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBkaWRGYWlsU3Bl
Y3VsYXRpb24KLSAgICAgICAgLy8gZm9yIHRoaXMgY2h1bmsuCi0gICAgICAgIC8vIEZJWE1FOiBJ
biB0aGlzIGNhc2UsIHdlJ3JlIGxvc2luZyB3aGF0ZXZlciBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2Vk
IHNpbmNlCi0gICAgICAgIC8vIHdlIGNhbGxlZCBkaWRGYWlsU3BlY3VsYXRpb24uIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ2Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICAvLyBDdXJyZW50bHkgd2UncmUgb25seSBzbWFydCBlbm91Z2ggdG8g
cmV1c2UgdGhlIHNwZWN1bGF0aW9uIGJ1ZmZlciBpZiB0aGUgdG9rZW5pemVyCiAgICAgLy8gYm90
aCBzdGFydHMgYW5kIGVuZHMgaW4gdGhlIERhdGFTdGF0ZS4gVGhhdCBzdGF0ZSBpcyBzaW1wbGVz
dCBiZWNhdXNlIHRoZSBIVE1MVG9rZW4KICAgICAvLyBpcyBhbHdheXMgaW4gdGhlIFVuaW5pdGlh
bGl6ZWQgc3RhdGUuIFdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIHdlIGNhbiByZXVzZSB0aGUK
ICAgICAvLyBzcGVjdWxhdGlvbiBidWZmZXIgaW4gb3RoZXIgc3RhdGVzLCBidXQgd2UnZCBsaWtl
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgbW9yZQogICAgIC8vIHNvcGhpc3RpY2F0ZWQgd2l0aCB0
aGUgSFRNTFRva2VuLgotICAgIGlmIChtX2N1cnJlbnRDaHVuay0+dG9rZW5pemVyU3RhdGUgPT0g
SFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCisgICAgaWYgKGNodW5rLT50b2tlbml6ZXJTdGF0ZSA9
PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKICAgICAgICAgJiYgdG9rZW5pemVyLT5zdGF0ZSgp
ID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQogICAgICAgICAmJiBtX2lucHV0LmN1cnJlbnQo
KS5pc0VtcHR5KCkKLSAgICAgICAgJiYgbV9jdXJyZW50Q2h1bmstPnRyZWVCdWlsZGVyU3RhdGUg
PT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgp
KSkgeworICAgICAgICAmJiBjaHVuay0+dHJlZUJ1aWxkZXJTdGF0ZSA9PSBIVE1MVHJlZUJ1aWxk
ZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJlZUJ1aWxkZXIuZ2V0KCkpKSB7CiAgICAgICAgIEFT
U0VSVCh0b2tlbi0+aXNVbmluaXRpYWxpemVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGlkRmFpbFNwZWN1bGF0aW9uKHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVh
c2UoKSk7CisgICAgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oY2h1bmssIHRva2Vu
LnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50
UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQ
YXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IHRva2VuaXplcikKK3ZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwg
UGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIpCiB7CiAgICAgbV93ZWFrRmFjdG9y
eS5yZXZva2VBbGwoKTsKICAgICBtX3NwZWN1bGF0aW9ucy5jbGVhcigpOwpAQCAtMzczLDMwICsz
NzcsMzEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNz
T3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd24KICAgICBjaGVja3BvaW50LT50b2tlbiA9
IHRva2VuOwogICAgIGNoZWNrcG9pbnQtPnRva2VuaXplciA9IHRva2VuaXplcjsKICAgICBjaGVj
a3BvaW50LT50cmVlQnVpbGRlclN0YXRlID0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0
ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKTsKLSAgICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVja3BvaW50OwotICAgIGNoZWNrcG9pbnQtPnBy
ZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fY3VycmVudENodW5rLT5wcmVsb2FkU2Nhbm5lckNo
ZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbGFzdENodW5rQmVm
b3JlU2NyaXB0LT5pbnB1dENoZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5u
ZXJDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3JlU2NyaXB0LT5wcmVsb2FkU2Nhbm5lckNoZWNr
cG9pbnQ7CiAgICAgY2hlY2twb2ludC0+dW5wYXJzZWRJbnB1dCA9IG1faW5wdXQuY3VycmVudCgp
LnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIo
KTsKLSAgICBtX2N1cnJlbnRDaHVuay5jbGVhcigpOworICAgIG1faW5wdXQuY3VycmVudCgpLmNs
ZWFyKCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gaW5zdGVhZCBvZiBjbGVh
cmVkLgogCiAgICAgQVNTRVJUKGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQuaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkpOwogICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0
VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSwgbV9iYWNrZ3JvdW5k
UGFyc2VyLCBjaGVja3BvaW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNl
ZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gcG9wQ2h1
bmspCiB7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0
byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAy
KTsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkpOwogICAgIEFTU0VSVCghbV90b2tl
bml6ZXIpOwogICAgIEFTU0VSVCghbV90b2tlbik7CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0Jl
Zm9yZVNjcmlwdCk7CiAKICAgICBBY3RpdmVQYXJzZXJTZXNzaW9uIHNlc3Npb24oY29udGV4dEZv
clBhcnNpbmdTZXNzaW9uKCkpOworICAgIE93blB0cjxQYXJzZWRDaHVuaz4gY2h1bmsocG9wQ2h1
bmspOworICAgIE93blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMgPSBjaHVuay0+
dG9rZW5zLnJlbGVhc2UoKTsKIAotICAgIG1fY3VycmVudENodW5rID0gY2h1bms7Ci0gICAgT3du
UHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IG1fY3VycmVudENodW5rLT50b2tl
bnMucmVsZWFzZSgpOworICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhi
aW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQsIG1f
YmFja2dyb3VuZFBhcnNlciwgY2h1bmstPmlucHV0Q2hlY2twb2ludCkpOwogCi0gICAgZm9yIChY
U1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY3VycmVudENodW5rLT54c3NJbmZv
cy5iZWdpbigpOyBpdCAhPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsK
KyAgICBmb3IgKFhTU0luZm9TdHJlYW06OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2h1bmstPnhzc0lu
Zm9zLmJlZ2luKCk7IGl0ICE9IGNodW5rLT54c3NJbmZvcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBtX3RleHRQb3NpdGlvbiA9ICgqaXQpLT5tX3RleHRQb3NpdGlvbjsKICAgICAgICAgbV94c3NB
dWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3JpcHQoKippdCk7IAogICAgICAgICBpZiAoaXNTdG9w
cGVkKCkpCkBAIC00MjgsNyArNDMzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKICAgICAg
ICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsg
MSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIDwvc2NyaXB0PiBpcyBhc3N1bWVkIHRvIGJlIHRo
ZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAgICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1
c2VkVHJlZUJ1aWxkZXIoKTsKLSAgICAgICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Cisg
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhjaHVuay5yZWxlYXNlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDU1LDI2ICs0NjAsMTcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAvLyBtX3Rva2Vu
aXplciBhbmQgbV90b2tlbiBkb24ndCBoYXZlIHN0YXRlIHRoYXQgaW52YWxpZGF0ZXMgbV9zcGVj
dWxhdGlvbnMuCiAgICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CiAgICAgQVNTRVJUKCFtX3Rva2Vu
KTsKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKIAogICAgIC8vIEZJWE1F
OiBQYXNzIGluIGN1cnJlbnQgaW5wdXQgbGVuZ3RoLgogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhU
TUwoZG9jdW1lbnQoKSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIAogICAgIGRvdWJs
ZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgbGFz
dENoZWNrcG9pbnRQYXNzZWQgPSAwOwogCiAgICAgd2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFBhcnNlZENodW5rPiBjaHVuayA9IG1fc3BlY3VsYXRp
b25zLnRha2VGaXJzdCgpOwotICAgICAgICBsYXN0Q2hlY2twb2ludFBhc3NlZCA9IGNodW5rLT5p
bnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKGNodW5rLnJlbGVhc2UoKSk7Ci0KLSAgICAgICAgLy8gUHJvY2Vzc2luZyBhIGNodW5r
IGNhbiBjYWxsIGRvY3VtZW50LndyaXRlLCBjYXVzaW5nIHVzIHRvIGludmFsaWRhdGUgYW55IHJl
bWFpbmluZyBzcGVjdWxhdGlvbnMuCi0gICAgICAgIGlmIChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5
KCkgfHwgaXNTdG9wcGVkKCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGFib3J0aW5nIHRoZXNl
IHNwZWN1bGF0aW9ucywgc28gZG9uJ3QgdGVsbCB0aGUgcGFyc2VyIHdlJ3ZlIHBhc3NlZCBhIGNo
ZWNrcG9pbnQgKGl0cyBhbHJlYWR5IGNsZWFyZWQgaXRzIGNoZWNrcG9pbnRzKS4KLSAgICAgICAg
ICAgIGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3Bl
Y3VsYXRpb25zLnRha2VGaXJzdCgpKTsKIAotICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0
cygpKQorICAgICAgICBpZiAoaXNTdG9wcGVkKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRp
bWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKQEAgLTQ4Myw5ICs0NzksNiBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGxhc3RDaGVja3BvaW50UGFzc2VkKQotICAgICAgICBIVE1MUGFyc2VyVGhyZWFk
OjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENo
ZWNrcG9pbnQsIG1fYmFja2dyb3VuZFBhcnNlciwgbGFzdENoZWNrcG9pbnRQYXNzZWQpKTsKLQog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51
bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIApAQCAtODg2LDcgKzg3OSw4IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIGlmIChtX2hhdmVCYWNrZ3JvdW5k
UGFyc2VyKSB7Ci0gICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7CisgICAgICAgIHZhbGlk
YXRlU3BlY3VsYXRpb25zKG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LnJlbGVhc2UoKSk7CisgICAg
ICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgICAgICAvLyBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8g
YmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICAgICAgUmVmUHRyPEhUTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNjEwMDRlMjc3ZTg0NzcwMjNkYWI1MzMwNmY1NjE3
MmI1ZTlkMmMzYy4uMWRhZWVmM2RiZjlmZGQyZjgyODBhZjkwM2I1ODNmYmJiOWJkYzE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNF
UikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tn
cm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Ci0gICAgdm9p
ZCBkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhU
TUxUb2tlbml6ZXI+KTsKKyAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKFBhc3NPd25QdHI8
UGFyc2VkQ2h1bms+IGxhc3RDaHVuayk7CisgICAgdm9pZCBkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmssIFBhc3NPd25QdHI8
SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CiAgICAgdm9pZCBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPik7
CiAgICAgdm9pZCBwdW1wUGVuZGluZ1NwZWN1bGF0aW9ucygpOwogI2VuZGlmCkBAIC0xOTYsNyAr
MTk2LDkgQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9yRGVsZWdhdGUgbV94c3NBdWRpdG9yRGVs
ZWdhdGU7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgT3duUHRyPFBh
cnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICAvLyBGSVhNRTogbV9sYXN0Q2h1bmtCZWZv
cmVTY3JpcHQsIG1fdG9rZW5pemVyLCBtX3Rva2VuLCBhbmQgbV9pbnB1dCBzaG91bGQgYmUgY29t
YmluZWQgaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QKKyAgICAvLyBzbyB0aGV5IGNhbiBiZSBz
ZXQgYW5kIGNsZWFyZWQgdG9nZXRoZXIgYW5kIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMgdG9nZXRo
ZXIuCisgICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2xhc3RDaHVua0JlZm9yZVNjcmlwdDsKICAg
ICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0
ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogICAgIFdlYWtQdHI8
QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fYmFja2dyb3VuZFBhcnNlcjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZmMwMTky
Y2I2NGJiZDYzNWFiZWUyMDJiNzU2NWFmMmZlYjA5ZWIzLi4wZmY3YTJmM2I0YzViZTI2OThjZmVl
NjA4MDZkYTAxNjMxNjcxZmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTEgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFy
c2VyIHNob3VsZCBsaW1pdCBzcGVjdWxhdGlvbiB0byBhdm9pZCB1c2luZyB0b28gbXVjaCBtZW1v
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qg
dGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA1NDYuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVu
dGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFy
c2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAzLTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgTWFrZSBCYWNrZ3JvdW5kSFRNTFBhcnNlciB3b3JrIHdpdGggZG9jLndyaXRlcyB0aGF0IGVu
dGVyIG9yIGxlYXZlIGZvcmVpZ24gY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1l
bnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YTNlMzA3ZjE5YjBl
MmJmZmNiZWRhYjgxOWEyYWJiNTkxY2RlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSA2NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ4
OiAiRkFJTCA6ICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDgsMCkgd2lkdGggMTY6ICJndDsi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0
aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9j
dW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MmJlOTY3YmNkNzM5NTAyYTg5NWIwMzY3ZDE5ODI2YzMxZWEwMGVkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHkt
YmVmb3JlLWxvYWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxkaXYgaWQ9
InRlc3QiPjxzY3JpcHQgb25iZWZvcmVsb2FkPSJkb2N1bWVudC53cml0ZSgnJicpIiBzcmM9ImRh
dGE6dGV4dC9qYXZhc2NyaXB0LGRvY3VtZW50LndyaXRlKCdnJyk7Ij48L3NjcmlwdD50OzwvZGl2
PgorPHNjcmlwdD4KK3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qi
KTsKK3Rlc3REaXYudGV4dENvbnRlbnQgPSAodGVzdERpdi50ZXh0Q29udGVudCA9PSAnPicpID8g
IlBBU1MiIDogKCJGQUlMIDogIiArIHRlc3REaXYudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192646</attachid>
            <date>2013-03-11 23:04:25 -0700</date>
            <delta_ts>2013-03-11 23:12:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130311230025.patch</filename>
            <type>text/plain</type>
            <size>21860</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgxZTUyMmZiOThlNTJh
YjQ0NzZhZmY2MDVlNjg1NTg0YjJmYzMxNC4uNGQ3OTE3ZjNjOWM3ODkzOWI0ZGIyNWQxNmFkNTcw
M2Y2NmU0NzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRhdGVDaGVj
a3BvaW50c0JlZm9yZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpvdXRzdGFuZGluZ0NoZWNrcG9p
bnRDb3VudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChCYWNrZ3JvdW5kSFRNTFBhcnNlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRp
b24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAg
ICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMy0xMSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkg
ZnVuY3Rpb25zIG91dCBvZiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
LmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgwYjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2
MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApA
QCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBU
aHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4KQordm9pZCBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0
Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQogewotICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENo
ZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0g
ICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0
aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAgICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBDaGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNr
cG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsK
KworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQu
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRz
W2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsg
KytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludEluZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgK
aW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyAr
NTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRz
IGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9p
bnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmlu
ZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNC
ZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVj
a3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3Bv
aW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCAwYjc1MjBlNDBkM2UzNzM5YzIyY2UzYjUwMmMzZmNhOTM5NGRmZWVm
Li5lMWUyZThhMjdlZmUwNjZiNmI3NDkzZWVkNGE0ZWM4OTAzMzgyNzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0z
OSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3
aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3
aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcK
Ky8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVh
ZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBw
b3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1p
dCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3Vy
IG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToK
Ky8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXpl
b2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVy
IG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFk
J3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgor
c3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7
CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0
aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQg
Zm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tl
bkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBO
REVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4
MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
c2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmln
KQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3Rva2VuKGFk
b3B0UHRyKG5ldyBIVE1MVG9rZW4pKQpAQCAtOTQsMTEgKzExMiwxMiBAQCB2b2lkIEJhY2tncm91
bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2lu
dCkKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKLXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnBhc3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit2
b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1M
SW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKIHsKICAgICAvLyBOb3RlLCB3ZSBzaG91
bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFsaWQKICAgICAv
LyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBG
SUZPIG9yZGVyLgotICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKGlu
cHV0Q2hlY2twb2ludCk7CisgICAgbV9pbnB1dC5pbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUo
aW5wdXRDaGVja3BvaW50KTsKKyAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKIHZvaWQgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCkBAIC0xMjksMTAgKzE0OCwxNyBAQCB2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6cHVtcFRva2VuaXplcigpCiB7CisgICAgLy8gTm8gbmVlZCB0byBzdGFydCBzcGVjdWxh
dGluZyB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMgbmVhcmx5IGNhdWdodCB1cC4KKyAgICBpZiAo
bV9pbnB1dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3Bv
aW50U3RhcnRMaW1pdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXpl
ci5nZXQoKSwgKm1fdG9rZW4pOwotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4o
bV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2Vu
aXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4K
KyAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50
KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7CiAKICAgICAgICAgewpAQCAtMTUyLDEx
ICsxNzgsMTMgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAK
ICAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIAotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJT
aW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdl
dCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAg
ICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vu
cy0+bGFzdCgpLCBtX3Rva2VuaXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkg
Pj0gcGVuZGluZ1Rva2VuTGltaXQpIHsKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJl
YWQoKTsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJl
YWQsIHlpZWxkIGZvciBhIGJpdCB0byBhdm9pZCBjb25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5Lgor
ICAgICAgICAgICAgaWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgIH0KLQotICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKIH0KIAogdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCA4
MTVjMTE1NTgyOWZkNzJmNjIxYmRiYTU2OTZjZmUzNmRkNmQ1ZmI5Li4yODIxZmJmZjI4MjEyMjIz
ZjQwMTMwYzQ4ZjRhN2IzZDE1MDNhMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXN1bWVGcm9tKFBh
c3NPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZvaWQgcGFzc2VkQ2hlY2twb2ludChIVE1MSW5w
dXRDaGVja3BvaW50KTsKKyAgICB2b2lkIHN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KEhUTUxJ
bnB1dENoZWNrcG9pbnQpOwogICAgIHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDk2N2QxZDU0ZDMzYjIxMzJhNzk1MDg0ODJiZTFjNjdiM2QwYzExZWYuLjkzMjFmMmZj
NjMxMTE1NzBhM2M3OWU5YWRkMGZhODdlODU4YWNjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzI4LDggKzMyOCwyMCBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tn
cm91bmRQYXJzZXIoUGFzc093blB0cjxQYQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIAot
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKK3ZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBjaHVuaykKIHsKKyAgICBBU1NFUlQoY2h1bmspOworICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKKyAgICAgICAgLy8gV2UncmUgd2FpdGluZyBvbiBhIG5ldHdvcmsgc2NyaXB0
LCBqdXN0IHNhdmUgdGhlIGNodW5rLCB3ZSdsbCBnZXQKKyAgICAgICAgLy8gYSBzZWNvbmQgdmFs
aWRhdGVTcGVjdWxhdGlvbnMgY2FsbCBhZnRlciB0aGUgc2NyaXB0IGNvbXBsZXRlcy4KKyAgICAg
ICAgLy8gVGhpcyBjYWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBpbW1lZGlhdGVseSBhZnRlciBy
dW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIKKyAgICAgICAgLy8gd2hpY2ggbWF5IGhhdmUg
c3RhcnRlZCBhIG5ldHdvcmsgbG9hZCBhbmQgbGVmdCB1cyB3YWl0aW5nLgorICAgICAgICBBU1NF
UlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKKyAgICAgICAgbV9sYXN0Q2h1bmtCZWZvcmVT
Y3JpcHQgPSBjaHVuazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV9s
YXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6
ZXIgPSBtX3Rva2VuaXplci5yZWxlYXNlKCk7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4g
PSBtX3Rva2VuLnJlbGVhc2UoKTsKIApAQCAtMzM5LDMxICszNTEsMjMgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghbV9jdXJyZW50Q2h1bmspIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gbV9jdXJyZW50Q2h1bmssIHdlIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBkaWRGYWlsU3Bl
Y3VsYXRpb24KLSAgICAgICAgLy8gZm9yIHRoaXMgY2h1bmsuCi0gICAgICAgIC8vIEZJWE1FOiBJ
biB0aGlzIGNhc2UsIHdlJ3JlIGxvc2luZyB3aGF0ZXZlciBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2Vk
IHNpbmNlCi0gICAgICAgIC8vIHdlIGNhbGxlZCBkaWRGYWlsU3BlY3VsYXRpb24uIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ2Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICAvLyBDdXJyZW50bHkgd2UncmUgb25seSBzbWFydCBlbm91Z2ggdG8g
cmV1c2UgdGhlIHNwZWN1bGF0aW9uIGJ1ZmZlciBpZiB0aGUgdG9rZW5pemVyCiAgICAgLy8gYm90
aCBzdGFydHMgYW5kIGVuZHMgaW4gdGhlIERhdGFTdGF0ZS4gVGhhdCBzdGF0ZSBpcyBzaW1wbGVz
dCBiZWNhdXNlIHRoZSBIVE1MVG9rZW4KICAgICAvLyBpcyBhbHdheXMgaW4gdGhlIFVuaW5pdGlh
bGl6ZWQgc3RhdGUuIFdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIHdlIGNhbiByZXVzZSB0aGUK
ICAgICAvLyBzcGVjdWxhdGlvbiBidWZmZXIgaW4gb3RoZXIgc3RhdGVzLCBidXQgd2UnZCBsaWtl
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgbW9yZQogICAgIC8vIHNvcGhpc3RpY2F0ZWQgd2l0aCB0
aGUgSFRNTFRva2VuLgotICAgIGlmIChtX2N1cnJlbnRDaHVuay0+dG9rZW5pemVyU3RhdGUgPT0g
SFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCisgICAgaWYgKGNodW5rLT50b2tlbml6ZXJTdGF0ZSA9
PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKICAgICAgICAgJiYgdG9rZW5pemVyLT5zdGF0ZSgp
ID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQogICAgICAgICAmJiBtX2lucHV0LmN1cnJlbnQo
KS5pc0VtcHR5KCkKLSAgICAgICAgJiYgbV9jdXJyZW50Q2h1bmstPnRyZWVCdWlsZGVyU3RhdGUg
PT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgp
KSkgeworICAgICAgICAmJiBjaHVuay0+dHJlZUJ1aWxkZXJTdGF0ZSA9PSBIVE1MVHJlZUJ1aWxk
ZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJlZUJ1aWxkZXIuZ2V0KCkpKSB7CiAgICAgICAgIEFT
U0VSVCh0b2tlbi0+aXNVbmluaXRpYWxpemVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGlkRmFpbFNwZWN1bGF0aW9uKHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVh
c2UoKSk7CisgICAgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oY2h1bmssIHRva2Vu
LnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50
UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQ
YXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IHRva2VuaXplcikKK3ZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwg
UGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIpCiB7CiAgICAgbV93ZWFrRmFjdG9y
eS5yZXZva2VBbGwoKTsKICAgICBtX3NwZWN1bGF0aW9ucy5jbGVhcigpOwpAQCAtMzczLDMwICsz
NzcsMzEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNz
T3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd24KICAgICBjaGVja3BvaW50LT50b2tlbiA9
IHRva2VuOwogICAgIGNoZWNrcG9pbnQtPnRva2VuaXplciA9IHRva2VuaXplcjsKICAgICBjaGVj
a3BvaW50LT50cmVlQnVpbGRlclN0YXRlID0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0
ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKTsKLSAgICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVja3BvaW50OwotICAgIGNoZWNrcG9pbnQtPnBy
ZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fY3VycmVudENodW5rLT5wcmVsb2FkU2Nhbm5lckNo
ZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbGFzdENodW5rQmVm
b3JlU2NyaXB0LT5pbnB1dENoZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5u
ZXJDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3JlU2NyaXB0LT5wcmVsb2FkU2Nhbm5lckNoZWNr
cG9pbnQ7CiAgICAgY2hlY2twb2ludC0+dW5wYXJzZWRJbnB1dCA9IG1faW5wdXQuY3VycmVudCgp
LnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIo
KTsKLSAgICBtX2N1cnJlbnRDaHVuay5jbGVhcigpOworICAgIG1faW5wdXQuY3VycmVudCgpLmNs
ZWFyKCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gaW5zdGVhZCBvZiBjbGVh
cmVkLgogCiAgICAgQVNTRVJUKGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQuaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkpOwogICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0
VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSwgbV9iYWNrZ3JvdW5k
UGFyc2VyLCBjaGVja3BvaW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNl
ZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gcG9wQ2h1
bmspCiB7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0
byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAy
KTsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkpOwogICAgIEFTU0VSVCghbV90b2tl
bml6ZXIpOwogICAgIEFTU0VSVCghbV90b2tlbik7CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0Jl
Zm9yZVNjcmlwdCk7CiAKICAgICBBY3RpdmVQYXJzZXJTZXNzaW9uIHNlc3Npb24oY29udGV4dEZv
clBhcnNpbmdTZXNzaW9uKCkpOworICAgIE93blB0cjxQYXJzZWRDaHVuaz4gY2h1bmsocG9wQ2h1
bmspOworICAgIE93blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMgPSBjaHVuay0+
dG9rZW5zLnJlbGVhc2UoKTsKIAotICAgIG1fY3VycmVudENodW5rID0gY2h1bms7Ci0gICAgT3du
UHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IG1fY3VycmVudENodW5rLT50b2tl
bnMucmVsZWFzZSgpOworICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhi
aW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQsIG1f
YmFja2dyb3VuZFBhcnNlciwgY2h1bmstPmlucHV0Q2hlY2twb2ludCkpOwogCi0gICAgZm9yIChY
U1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY3VycmVudENodW5rLT54c3NJbmZv
cy5iZWdpbigpOyBpdCAhPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsK
KyAgICBmb3IgKFhTU0luZm9TdHJlYW06OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2h1bmstPnhzc0lu
Zm9zLmJlZ2luKCk7IGl0ICE9IGNodW5rLT54c3NJbmZvcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBtX3RleHRQb3NpdGlvbiA9ICgqaXQpLT5tX3RleHRQb3NpdGlvbjsKICAgICAgICAgbV94c3NB
dWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3JpcHQoKippdCk7IAogICAgICAgICBpZiAoaXNTdG9w
cGVkKCkpCkBAIC00MjgsNyArNDMzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKICAgICAg
ICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsg
MSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIDwvc2NyaXB0PiBpcyBhc3N1bWVkIHRvIGJlIHRo
ZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAgICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1
c2VkVHJlZUJ1aWxkZXIoKTsKLSAgICAgICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Cisg
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhjaHVuay5yZWxlYXNlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDU1LDI2ICs0NjAsMTcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAvLyBtX3Rva2Vu
aXplciBhbmQgbV90b2tlbiBkb24ndCBoYXZlIHN0YXRlIHRoYXQgaW52YWxpZGF0ZXMgbV9zcGVj
dWxhdGlvbnMuCiAgICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CiAgICAgQVNTRVJUKCFtX3Rva2Vu
KTsKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKIAogICAgIC8vIEZJWE1F
OiBQYXNzIGluIGN1cnJlbnQgaW5wdXQgbGVuZ3RoLgogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhU
TUwoZG9jdW1lbnQoKSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIAogICAgIGRvdWJs
ZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgbGFz
dENoZWNrcG9pbnRQYXNzZWQgPSAwOwogCiAgICAgd2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFBhcnNlZENodW5rPiBjaHVuayA9IG1fc3BlY3VsYXRp
b25zLnRha2VGaXJzdCgpOwotICAgICAgICBsYXN0Q2hlY2twb2ludFBhc3NlZCA9IGNodW5rLT5p
bnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKGNodW5rLnJlbGVhc2UoKSk7Ci0KLSAgICAgICAgLy8gUHJvY2Vzc2luZyBhIGNodW5r
IGNhbiBjYWxsIGRvY3VtZW50LndyaXRlLCBjYXVzaW5nIHVzIHRvIGludmFsaWRhdGUgYW55IHJl
bWFpbmluZyBzcGVjdWxhdGlvbnMuCi0gICAgICAgIGlmIChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5
KCkgfHwgaXNTdG9wcGVkKCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGFib3J0aW5nIHRoZXNl
IHNwZWN1bGF0aW9ucywgc28gZG9uJ3QgdGVsbCB0aGUgcGFyc2VyIHdlJ3ZlIHBhc3NlZCBhIGNo
ZWNrcG9pbnQgKGl0cyBhbHJlYWR5IGNsZWFyZWQgaXRzIGNoZWNrcG9pbnRzKS4KLSAgICAgICAg
ICAgIGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3Bl
Y3VsYXRpb25zLnRha2VGaXJzdCgpKTsKIAotICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0
cygpKQorICAgICAgICBpZiAoaXNTdG9wcGVkKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRp
bWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKQEAgLTQ4Myw5ICs0NzksNiBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGxhc3RDaGVja3BvaW50UGFzc2VkKQotICAgICAgICBIVE1MUGFyc2VyVGhyZWFk
OjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENo
ZWNrcG9pbnQsIG1fYmFja2dyb3VuZFBhcnNlciwgbGFzdENoZWNrcG9pbnRQYXNzZWQpKTsKLQog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51
bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIApAQCAtODg2LDcgKzg3OSw4IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIGlmIChtX2hhdmVCYWNrZ3JvdW5k
UGFyc2VyKSB7Ci0gICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7CisgICAgICAgIHZhbGlk
YXRlU3BlY3VsYXRpb25zKG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LnJlbGVhc2UoKSk7CisgICAg
ICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgICAgICAvLyBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8g
YmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICAgICAgUmVmUHRyPEhUTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNjEwMDRlMjc3ZTg0NzcwMjNkYWI1MzMwNmY1NjE3
MmI1ZTlkMmMzYy4uMWRhZWVmM2RiZjlmZGQyZjgyODBhZjkwM2I1ODNmYmJiOWJkYzE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNF
UikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tn
cm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Ci0gICAgdm9p
ZCBkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhU
TUxUb2tlbml6ZXI+KTsKKyAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKFBhc3NPd25QdHI8
UGFyc2VkQ2h1bms+IGxhc3RDaHVuayk7CisgICAgdm9pZCBkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmssIFBhc3NPd25QdHI8
SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CiAgICAgdm9pZCBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPik7
CiAgICAgdm9pZCBwdW1wUGVuZGluZ1NwZWN1bGF0aW9ucygpOwogI2VuZGlmCkBAIC0xOTYsNyAr
MTk2LDkgQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9yRGVsZWdhdGUgbV94c3NBdWRpdG9yRGVs
ZWdhdGU7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgT3duUHRyPFBh
cnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICAvLyBGSVhNRTogbV9sYXN0Q2h1bmtCZWZv
cmVTY3JpcHQsIG1fdG9rZW5pemVyLCBtX3Rva2VuLCBhbmQgbV9pbnB1dCBzaG91bGQgYmUgY29t
YmluZWQgaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QKKyAgICAvLyBzbyB0aGV5IGNhbiBiZSBz
ZXQgYW5kIGNsZWFyZWQgdG9nZXRoZXIgYW5kIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMgdG9nZXRo
ZXIuCisgICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2xhc3RDaHVua0JlZm9yZVNjcmlwdDsKICAg
ICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0
ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogICAgIFdlYWtQdHI8
QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fYmFja2dyb3VuZFBhcnNlcjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZmMwMTky
Y2I2NGJiZDYzNWFiZWUyMDJiNzU2NWFmMmZlYjA5ZWIzLi4wZmY3YTJmM2I0YzViZTI2OThjZmVl
NjA4MDZkYTAxNjMxNjcxZmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTEgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFy
c2VyIHNob3VsZCBsaW1pdCBzcGVjdWxhdGlvbiB0byBhdm9pZCB1c2luZyB0b28gbXVjaCBtZW1v
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qg
dGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA1NDYuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVu
dGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFy
c2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAzLTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgTWFrZSBCYWNrZ3JvdW5kSFRNTFBhcnNlciB3b3JrIHdpdGggZG9jLndyaXRlcyB0aGF0IGVu
dGVyIG9yIGxlYXZlIGZvcmVpZ24gY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1l
bnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZjIyZTlhNDMxYWQw
MjcyNzEzYjcxZmRjODc5NDAxNmM4ZWYxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5
LWJlZm9yZS1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJiZTk2N2JjZDczOTUwMmE4OTViMDM2N2Qx
OTgyNmMzMWVhMDBlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwKQEAgLTAsMCAr
MSw5IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCXRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0Ij48c2NyaXB0IG9uYmVmb3JlbG9h
ZD0iZG9jdW1lbnQud3JpdGUoJyYnKSIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxkb2N1bWVu
dC53cml0ZSgnZycpOyI+PC9zY3JpcHQ+dDs8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgdGVzdERpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit0ZXN0RGl2LnRleHRDb250ZW50ID0g
KHRlc3REaXYudGV4dENvbnRlbnQgPT0gJz4nKSA/ICJQQVNTIiA6ICgiRkFJTCA6ICIgKyB0ZXN0
RGl2LnRleHRDb250ZW50KTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192648</attachid>
            <date>2013-03-11 23:12:46 -0700</date>
            <delta_ts>2013-03-11 23:19:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130311230848.patch</filename>
            <type>text/plain</type>
            <size>24839</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgxZTUyMmZiOThlNTJh
YjQ0NzZhZmY2MDVlNjg1NTg0YjJmYzMxNC4uNGQ3OTE3ZjNjOWM3ODkzOWI0ZGIyNWQxNmFkNTcw
M2Y2NmU0NzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRhdGVDaGVj
a3BvaW50c0JlZm9yZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpvdXRzdGFuZGluZ0NoZWNrcG9p
bnRDb3VudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChCYWNrZ3JvdW5kSFRNTFBhcnNlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRp
b24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAg
ICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMy0xMSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkg
ZnVuY3Rpb25zIG91dCBvZiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
LmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgwYjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2
MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApA
QCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBU
aHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4KQordm9pZCBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0
Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQogewotICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENo
ZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0g
ICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0
aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAgICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBDaGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNr
cG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsK
KworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQu
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRz
W2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsg
KytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludEluZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgK
aW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyAr
NTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRz
IGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9p
bnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmlu
ZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNC
ZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVj
a3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3Bv
aW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCAwYjc1MjBlNDBkM2UzNzM5YzIyY2UzYjUwMmMzZmNhOTM5NGRmZWVm
Li5lMWUyZThhMjdlZmUwNjZiNmI3NDkzZWVkNGE0ZWM4OTAzMzgyNzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0z
OSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3
aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3
aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcK
Ky8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVh
ZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBw
b3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1p
dCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3Vy
IG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToK
Ky8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXpl
b2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVy
IG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFk
J3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgor
c3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7
CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0
aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQg
Zm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tl
bkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBO
REVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4
MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
c2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmln
KQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3Rva2VuKGFk
b3B0UHRyKG5ldyBIVE1MVG9rZW4pKQpAQCAtOTQsMTEgKzExMiwxMiBAQCB2b2lkIEJhY2tncm91
bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2lu
dCkKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKLXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnBhc3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit2
b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1M
SW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKIHsKICAgICAvLyBOb3RlLCB3ZSBzaG91
bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFsaWQKICAgICAv
LyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBG
SUZPIG9yZGVyLgotICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKGlu
cHV0Q2hlY2twb2ludCk7CisgICAgbV9pbnB1dC5pbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUo
aW5wdXRDaGVja3BvaW50KTsKKyAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKIHZvaWQgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCkBAIC0xMjksMTAgKzE0OCwxNyBAQCB2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6cHVtcFRva2VuaXplcigpCiB7CisgICAgLy8gTm8gbmVlZCB0byBzdGFydCBzcGVjdWxh
dGluZyB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMgbmVhcmx5IGNhdWdodCB1cC4KKyAgICBpZiAo
bV9pbnB1dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3Bv
aW50U3RhcnRMaW1pdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXpl
ci5nZXQoKSwgKm1fdG9rZW4pOwotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4o
bV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2Vu
aXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4K
KyAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50
KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7CiAKICAgICAgICAgewpAQCAtMTUyLDEx
ICsxNzgsMTMgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAK
ICAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIAotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJT
aW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdl
dCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAg
ICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vu
cy0+bGFzdCgpLCBtX3Rva2VuaXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkg
Pj0gcGVuZGluZ1Rva2VuTGltaXQpIHsKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJl
YWQoKTsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJl
YWQsIHlpZWxkIGZvciBhIGJpdCB0byBhdm9pZCBjb25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5Lgor
ICAgICAgICAgICAgaWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgIH0KLQotICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKIH0KIAogdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCA4
MTVjMTE1NTgyOWZkNzJmNjIxYmRiYTU2OTZjZmUzNmRkNmQ1ZmI5Li4yODIxZmJmZjI4MjEyMjIz
ZjQwMTMwYzQ4ZjRhN2IzZDE1MDNhMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXN1bWVGcm9tKFBh
c3NPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZvaWQgcGFzc2VkQ2hlY2twb2ludChIVE1MSW5w
dXRDaGVja3BvaW50KTsKKyAgICB2b2lkIHN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KEhUTUxJ
bnB1dENoZWNrcG9pbnQpOwogICAgIHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDk2N2QxZDU0ZDMzYjIxMzJhNzk1MDg0ODJiZTFjNjdiM2QwYzExZWYuLjkzMjFmMmZj
NjMxMTE1NzBhM2M3OWU5YWRkMGZhODdlODU4YWNjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzI4LDggKzMyOCwyMCBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tn
cm91bmRQYXJzZXIoUGFzc093blB0cjxQYQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIAot
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKK3ZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBjaHVuaykKIHsKKyAgICBBU1NFUlQoY2h1bmspOworICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKKyAgICAgICAgLy8gV2UncmUgd2FpdGluZyBvbiBhIG5ldHdvcmsgc2NyaXB0
LCBqdXN0IHNhdmUgdGhlIGNodW5rLCB3ZSdsbCBnZXQKKyAgICAgICAgLy8gYSBzZWNvbmQgdmFs
aWRhdGVTcGVjdWxhdGlvbnMgY2FsbCBhZnRlciB0aGUgc2NyaXB0IGNvbXBsZXRlcy4KKyAgICAg
ICAgLy8gVGhpcyBjYWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBpbW1lZGlhdGVseSBhZnRlciBy
dW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIKKyAgICAgICAgLy8gd2hpY2ggbWF5IGhhdmUg
c3RhcnRlZCBhIG5ldHdvcmsgbG9hZCBhbmQgbGVmdCB1cyB3YWl0aW5nLgorICAgICAgICBBU1NF
UlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKKyAgICAgICAgbV9sYXN0Q2h1bmtCZWZvcmVT
Y3JpcHQgPSBjaHVuazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV9s
YXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6
ZXIgPSBtX3Rva2VuaXplci5yZWxlYXNlKCk7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4g
PSBtX3Rva2VuLnJlbGVhc2UoKTsKIApAQCAtMzM5LDMxICszNTEsMjMgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghbV9jdXJyZW50Q2h1bmspIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gbV9jdXJyZW50Q2h1bmssIHdlIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBkaWRGYWlsU3Bl
Y3VsYXRpb24KLSAgICAgICAgLy8gZm9yIHRoaXMgY2h1bmsuCi0gICAgICAgIC8vIEZJWE1FOiBJ
biB0aGlzIGNhc2UsIHdlJ3JlIGxvc2luZyB3aGF0ZXZlciBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2Vk
IHNpbmNlCi0gICAgICAgIC8vIHdlIGNhbGxlZCBkaWRGYWlsU3BlY3VsYXRpb24uIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ2Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICAvLyBDdXJyZW50bHkgd2UncmUgb25seSBzbWFydCBlbm91Z2ggdG8g
cmV1c2UgdGhlIHNwZWN1bGF0aW9uIGJ1ZmZlciBpZiB0aGUgdG9rZW5pemVyCiAgICAgLy8gYm90
aCBzdGFydHMgYW5kIGVuZHMgaW4gdGhlIERhdGFTdGF0ZS4gVGhhdCBzdGF0ZSBpcyBzaW1wbGVz
dCBiZWNhdXNlIHRoZSBIVE1MVG9rZW4KICAgICAvLyBpcyBhbHdheXMgaW4gdGhlIFVuaW5pdGlh
bGl6ZWQgc3RhdGUuIFdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIHdlIGNhbiByZXVzZSB0aGUK
ICAgICAvLyBzcGVjdWxhdGlvbiBidWZmZXIgaW4gb3RoZXIgc3RhdGVzLCBidXQgd2UnZCBsaWtl
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgbW9yZQogICAgIC8vIHNvcGhpc3RpY2F0ZWQgd2l0aCB0
aGUgSFRNTFRva2VuLgotICAgIGlmIChtX2N1cnJlbnRDaHVuay0+dG9rZW5pemVyU3RhdGUgPT0g
SFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCisgICAgaWYgKGNodW5rLT50b2tlbml6ZXJTdGF0ZSA9
PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKICAgICAgICAgJiYgdG9rZW5pemVyLT5zdGF0ZSgp
ID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQogICAgICAgICAmJiBtX2lucHV0LmN1cnJlbnQo
KS5pc0VtcHR5KCkKLSAgICAgICAgJiYgbV9jdXJyZW50Q2h1bmstPnRyZWVCdWlsZGVyU3RhdGUg
PT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgp
KSkgeworICAgICAgICAmJiBjaHVuay0+dHJlZUJ1aWxkZXJTdGF0ZSA9PSBIVE1MVHJlZUJ1aWxk
ZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJlZUJ1aWxkZXIuZ2V0KCkpKSB7CiAgICAgICAgIEFT
U0VSVCh0b2tlbi0+aXNVbmluaXRpYWxpemVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGlkRmFpbFNwZWN1bGF0aW9uKHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVh
c2UoKSk7CisgICAgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oY2h1bmssIHRva2Vu
LnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50
UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQ
YXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IHRva2VuaXplcikKK3ZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwg
UGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIpCiB7CiAgICAgbV93ZWFrRmFjdG9y
eS5yZXZva2VBbGwoKTsKICAgICBtX3NwZWN1bGF0aW9ucy5jbGVhcigpOwpAQCAtMzczLDMwICsz
NzcsMzEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNz
T3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd24KICAgICBjaGVja3BvaW50LT50b2tlbiA9
IHRva2VuOwogICAgIGNoZWNrcG9pbnQtPnRva2VuaXplciA9IHRva2VuaXplcjsKICAgICBjaGVj
a3BvaW50LT50cmVlQnVpbGRlclN0YXRlID0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0
ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKTsKLSAgICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVja3BvaW50OwotICAgIGNoZWNrcG9pbnQtPnBy
ZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fY3VycmVudENodW5rLT5wcmVsb2FkU2Nhbm5lckNo
ZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbGFzdENodW5rQmVm
b3JlU2NyaXB0LT5pbnB1dENoZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5u
ZXJDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3JlU2NyaXB0LT5wcmVsb2FkU2Nhbm5lckNoZWNr
cG9pbnQ7CiAgICAgY2hlY2twb2ludC0+dW5wYXJzZWRJbnB1dCA9IG1faW5wdXQuY3VycmVudCgp
LnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIo
KTsKLSAgICBtX2N1cnJlbnRDaHVuay5jbGVhcigpOworICAgIG1faW5wdXQuY3VycmVudCgpLmNs
ZWFyKCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gaW5zdGVhZCBvZiBjbGVh
cmVkLgogCiAgICAgQVNTRVJUKGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQuaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkpOwogICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0
VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSwgbV9iYWNrZ3JvdW5k
UGFyc2VyLCBjaGVja3BvaW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNl
ZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gcG9wQ2h1
bmspCiB7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0
byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAy
KTsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkpOwogICAgIEFTU0VSVCghbV90b2tl
bml6ZXIpOwogICAgIEFTU0VSVCghbV90b2tlbik7CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0Jl
Zm9yZVNjcmlwdCk7CiAKICAgICBBY3RpdmVQYXJzZXJTZXNzaW9uIHNlc3Npb24oY29udGV4dEZv
clBhcnNpbmdTZXNzaW9uKCkpOworICAgIE93blB0cjxQYXJzZWRDaHVuaz4gY2h1bmsocG9wQ2h1
bmspOworICAgIE93blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMgPSBjaHVuay0+
dG9rZW5zLnJlbGVhc2UoKTsKIAotICAgIG1fY3VycmVudENodW5rID0gY2h1bms7Ci0gICAgT3du
UHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IG1fY3VycmVudENodW5rLT50b2tl
bnMucmVsZWFzZSgpOworICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhi
aW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQsIG1f
YmFja2dyb3VuZFBhcnNlciwgY2h1bmstPmlucHV0Q2hlY2twb2ludCkpOwogCi0gICAgZm9yIChY
U1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY3VycmVudENodW5rLT54c3NJbmZv
cy5iZWdpbigpOyBpdCAhPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsK
KyAgICBmb3IgKFhTU0luZm9TdHJlYW06OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2h1bmstPnhzc0lu
Zm9zLmJlZ2luKCk7IGl0ICE9IGNodW5rLT54c3NJbmZvcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBtX3RleHRQb3NpdGlvbiA9ICgqaXQpLT5tX3RleHRQb3NpdGlvbjsKICAgICAgICAgbV94c3NB
dWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3JpcHQoKippdCk7IAogICAgICAgICBpZiAoaXNTdG9w
cGVkKCkpCkBAIC00MjgsNyArNDMzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKICAgICAg
ICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsg
MSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIDwvc2NyaXB0PiBpcyBhc3N1bWVkIHRvIGJlIHRo
ZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAgICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1
c2VkVHJlZUJ1aWxkZXIoKTsKLSAgICAgICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Cisg
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhjaHVuay5yZWxlYXNlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDU1LDI2ICs0NjAsMTcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAvLyBtX3Rva2Vu
aXplciBhbmQgbV90b2tlbiBkb24ndCBoYXZlIHN0YXRlIHRoYXQgaW52YWxpZGF0ZXMgbV9zcGVj
dWxhdGlvbnMuCiAgICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CiAgICAgQVNTRVJUKCFtX3Rva2Vu
KTsKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKIAogICAgIC8vIEZJWE1F
OiBQYXNzIGluIGN1cnJlbnQgaW5wdXQgbGVuZ3RoLgogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhU
TUwoZG9jdW1lbnQoKSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIAogICAgIGRvdWJs
ZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgbGFz
dENoZWNrcG9pbnRQYXNzZWQgPSAwOwogCiAgICAgd2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFBhcnNlZENodW5rPiBjaHVuayA9IG1fc3BlY3VsYXRp
b25zLnRha2VGaXJzdCgpOwotICAgICAgICBsYXN0Q2hlY2twb2ludFBhc3NlZCA9IGNodW5rLT5p
bnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKGNodW5rLnJlbGVhc2UoKSk7Ci0KLSAgICAgICAgLy8gUHJvY2Vzc2luZyBhIGNodW5r
IGNhbiBjYWxsIGRvY3VtZW50LndyaXRlLCBjYXVzaW5nIHVzIHRvIGludmFsaWRhdGUgYW55IHJl
bWFpbmluZyBzcGVjdWxhdGlvbnMuCi0gICAgICAgIGlmIChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5
KCkgfHwgaXNTdG9wcGVkKCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGFib3J0aW5nIHRoZXNl
IHNwZWN1bGF0aW9ucywgc28gZG9uJ3QgdGVsbCB0aGUgcGFyc2VyIHdlJ3ZlIHBhc3NlZCBhIGNo
ZWNrcG9pbnQgKGl0cyBhbHJlYWR5IGNsZWFyZWQgaXRzIGNoZWNrcG9pbnRzKS4KLSAgICAgICAg
ICAgIGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3Bl
Y3VsYXRpb25zLnRha2VGaXJzdCgpKTsKIAotICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0
cygpKQorICAgICAgICBpZiAoaXNTdG9wcGVkKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRp
bWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKQEAgLTQ4Myw5ICs0NzksNiBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGxhc3RDaGVja3BvaW50UGFzc2VkKQotICAgICAgICBIVE1MUGFyc2VyVGhyZWFk
OjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENo
ZWNrcG9pbnQsIG1fYmFja2dyb3VuZFBhcnNlciwgbGFzdENoZWNrcG9pbnRQYXNzZWQpKTsKLQog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51
bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIApAQCAtODg2LDcgKzg3OSw4IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIGlmIChtX2hhdmVCYWNrZ3JvdW5k
UGFyc2VyKSB7Ci0gICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7CisgICAgICAgIHZhbGlk
YXRlU3BlY3VsYXRpb25zKG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LnJlbGVhc2UoKSk7CisgICAg
ICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgICAgICAvLyBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8g
YmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICAgICAgUmVmUHRyPEhUTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNjEwMDRlMjc3ZTg0NzcwMjNkYWI1MzMwNmY1NjE3
MmI1ZTlkMmMzYy4uMWRhZWVmM2RiZjlmZGQyZjgyODBhZjkwM2I1ODNmYmJiOWJkYzE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNF
UikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tn
cm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Ci0gICAgdm9p
ZCBkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhU
TUxUb2tlbml6ZXI+KTsKKyAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKFBhc3NPd25QdHI8
UGFyc2VkQ2h1bms+IGxhc3RDaHVuayk7CisgICAgdm9pZCBkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmssIFBhc3NPd25QdHI8
SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CiAgICAgdm9pZCBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPik7
CiAgICAgdm9pZCBwdW1wUGVuZGluZ1NwZWN1bGF0aW9ucygpOwogI2VuZGlmCkBAIC0xOTYsNyAr
MTk2LDkgQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9yRGVsZWdhdGUgbV94c3NBdWRpdG9yRGVs
ZWdhdGU7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgT3duUHRyPFBh
cnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICAvLyBGSVhNRTogbV9sYXN0Q2h1bmtCZWZv
cmVTY3JpcHQsIG1fdG9rZW5pemVyLCBtX3Rva2VuLCBhbmQgbV9pbnB1dCBzaG91bGQgYmUgY29t
YmluZWQgaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QKKyAgICAvLyBzbyB0aGV5IGNhbiBiZSBz
ZXQgYW5kIGNsZWFyZWQgdG9nZXRoZXIgYW5kIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMgdG9nZXRo
ZXIuCisgICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2xhc3RDaHVua0JlZm9yZVNjcmlwdDsKICAg
ICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0
ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogICAgIFdlYWtQdHI8
QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fYmFja2dyb3VuZFBhcnNlcjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZmMwMTky
Y2I2NGJiZDYzNWFiZWUyMDJiNzU2NWFmMmZlYjA5ZWIzLi44ZWRkNTE4NzdkZmE5OTg4MDM1MTRk
YWVmNGNlZjgwM2UxOWRjOTExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMTEgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFy
c2VyIHNob3VsZCBsaW1pdCBzcGVjdWxhdGlvbiB0byBhdm9pZCB1c2luZyB0b28gbXVjaCBtZW1v
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qg
dGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA1NDYgZm9yIHRoZSB0aHJlYWRlZCBwYXJzZXIuCisgICAgICAgIFBvcnRzIHVzaW5nIHRoZSBt
YWluLXRocmVhZCBwYXJzZXIgYXJlIGV4cGVjdGVkIHRvIGZhaWwgKEFTU0VSVCBpbiBEZWJ1Zyku
CisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1i
ZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL2Rv
Y3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWw6IEFkZGVkLgorCiAy
MDEzLTAzLTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFr
ZSBCYWNrZ3JvdW5kSFRNTFBhcnNlciB3b3JrIHdpdGggZG9jLndyaXRlcyB0aGF0IGVudGVyIG9y
IGxlYXZlIGZvcmVpZ24gY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHkt
YmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZjIyZTlhNDMxYWQwMjcyNzEz
YjcxZmRjODc5NDAxNmM4ZWYxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9w
YXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9y
ZS1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJiZTk2N2JjZDczOTUwMmE4OTViMDM2N2QxOTgyNmMz
MWVhMDBlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwKQEAgLTAsMCArMSw5IEBA
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCXRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworPC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0Ij48c2NyaXB0IG9uYmVmb3JlbG9hZD0iZG9j
dW1lbnQud3JpdGUoJyYnKSIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxkb2N1bWVudC53cml0
ZSgnZycpOyI+PC9zY3JpcHQ+dDs8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgdGVzdERpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit0ZXN0RGl2LnRleHRDb250ZW50ID0gKHRlc3RE
aXYudGV4dENvbnRlbnQgPT0gJz4nKSA/ICJQQVNTIiA6ICgiRkFJTCA6ICIgKyB0ZXN0RGl2LnRl
eHRDb250ZW50KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA2MGVjOTVmNDVkYzBiODAxYmZjYTMzNmFlYjg2ZWYwYmFmYWZmMjA5Li5l
YTE3Mzg4ZDBkYjEwYmFkZDRiZDE5ZDA3NTk1MTkzODc2YjViYmYxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDg3LDcgKzQ4Nyw4IEBAIHdlYmtpdC5v
cmcvYi8xMTA2OTUgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFn
ZS1hbGxvd2VkLmh0bWwKIHdlYmtpdC5vcmcvYi8xMTA2OTUgaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1vcmlnaW4tcGx1Z2luLWFsbG93ZWQuaHRtbCBbIENyYXNoIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzExMDY5NSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1wbHVnaW4tcHJpdmF0
ZS1icm93c2luZy10b2dnbGVkLWFsbG93ZWQuaHRtbCBbIENyYXNoIFBhc3MgXQogCi13ZWJraXQu
b3JnL2IvMTExNDQ5IFsgRGVidWcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGlu
Zy1lb2YuaHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3Qv
cGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgQ3Jhc2ggXQord2Via2l0
Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlh
bC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbCBbIENyYXNoIF0KIAogIy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIENyYXNoaW5nIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM4YzVjMzg3OTdiYTcwODI2OTk3MmIxZTM0
MmY3NjBiMmMyOGEwN2QuLjZkYjA4OWFkZmEyNGE4NDExMTNhMTcwNGI0OGE5MWFjNjFhYjY5ODkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDQ4LDcg
KzE0NDgsOCBAQCB3ZWJraXQub3JnL2IvMTExNTIxIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGlv
bi1pbnZhbGlkLW9mZnNldC5odG1sIFsgQ3Jhc2ggUGFzcwogCiB3ZWJraXQub3JnL2IvMTExNjEz
IHBsYXRmb3JtL21hYy9mYXN0L3NwZWVjaHN5bnRoZXNpcy9zcGVlY2gtc3ludGhlc2lzLWNhbmNl
bC5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xMTA1NDYgZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0bWwgWyBDcmFzaCBdCit3ZWJraXQub3JnL2Iv
MTEwNTQ2IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2Yu
aHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3QvcGFyc2Vy
L2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgWyBDcmFzaCBd
CiAKIHdlYmtpdC5vcmcvYi8xMTE2NDcgc3B1dG5pay9Db25mb3JtYW5jZS8wN19MZXhpY2FsX0Nv
bnZlbnRpb25zLzcuOF9MaXRlcmFscy83LjguNV9SZWd1bGFyX0V4cHJlc3Npb25fTGl0ZXJhbHMv
UzcuOC41X0ExLjFfVDIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzExMTY0NyBzcHV0bmlr
L0NvbmZvcm1hbmNlLzA3X0xleGljYWxfQ29udmVudGlvbnMvNy44X0xpdGVyYWxzLzcuOC41X1Jl
Z3VsYXJfRXhwcmVzc2lvbl9MaXRlcmFscy9TNy44LjVfQTIuMV9UMi5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMzdhNjMyZWZjYzMx
OThlY2Y4YzIwY2Q2MGU4Mzg4MjQ1ZmM3OWQ5Li4wNjMyMDdkMzNhM2RhMWViNWNiMTc2ZTU3NzUz
N2FlODMyZGIzMjlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE5MDAsNyArMTkwMCw4IEBAIHdlYmtpdC5vcmcvYi8xMDg1MDggZmFzdC9jYW52YXMvY2Fu
dmFzLWN1cnJlbnRQYXRoLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzExMTI5MCBmYXN0
L3JlZ2lvbnMvc2VhbWxlc3MtaWZyYW1lLWZsb3dlZC1pbnRvLXJlZ2lvbnMuaHRtbCBbIFNraXAg
XQogCi13ZWJraXQub3JnL2IvMTExNDQ5IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13
cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERF
QlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0bWwgWyBDcmFz
aCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13
cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIFsgQ3Jhc2ggXQogCiAjID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ICMKICMgZmFpbGluZyBzZWN1cml0eSB0ZXN0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192649</attachid>
            <date>2013-03-11 23:19:28 -0700</date>
            <delta_ts>2013-03-13 15:24:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130311231530.patch</filename>
            <type>text/plain</type>
            <size>24835</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgxZTUyMmZiOThlNTJh
YjQ0NzZhZmY2MDVlNjg1NTg0YjJmYzMxNC4uNGQ3OTE3ZjNjOWM3ODkzOWI0ZGIyNWQxNmFkNTcw
M2Y2NmU0NzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAzLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRhdGVDaGVj
a3BvaW50c0JlZm9yZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpvdXRzdGFuZGluZ0NoZWNrcG9p
bnRDb3VudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChCYWNrZ3JvdW5kSFRNTFBhcnNlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRp
b24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAg
ICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMy0xMSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkg
ZnVuY3Rpb25zIG91dCBvZiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
LmNwcAppbmRleCA2YmEzZmYyN2NkNDU5NWNjMDgwYjU1N2YxOTc5OWE2MWMxNWVhMDNkLi4xOWE2
MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApA
QCAtNTUsMTkgKzU1LDI0IEBAIEhUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgpCiAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7CiB9CiAK
LXZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBU
aHJvdWdoKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4KQordm9pZCBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0
Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQogewotICAgIEFTU0VSVChj
aGVja3BvaW50SW5kZXggPCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7Ci0gICAgQVNTRVJUKGNoZWNr
cG9pbnRJbmRleCA+PSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOwotICAgIGNvbnN0IENo
ZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07Ci0g
ICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBjaGVja3BvaW50Lm51bWJlck9m
U2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFs
aWRTZWdtZW50SW5kZXg7IGkgPCBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQ7ICsraSkKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGRvIGZvciB0
aGUgZmlyc3QgdmFsaWQgY2hlY2twb2ludC4KKyAgICBpZiAobV9maXJzdFZhbGlkQ2hlY2twb2lu
dEluZGV4ID09IG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID4gbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KTsKKyAgICBjb25zdCBDaGVja3BvaW50JiBsYXN0SW52YWxpZENoZWNr
cG9pbnQgPSBtX2NoZWNrcG9pbnRzW25ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggLSAxXTsK
KworICAgIEFTU0VSVChtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPD0gbGFzdEludmFsaWRDaGVj
a3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQpOworICAgIGZvciAoc2l6ZV90
IGkgPSBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXg7IGkgPCBsYXN0SW52YWxpZENoZWNrcG9pbnQu
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgKytpKQogICAgICAgICBtX3NlZ21lbnRz
W2ldID0gU3RyaW5nKCk7Ci0gICAgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4ID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworICAgIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCA9IGxhc3RJbnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFw
cGVuZGVkOwogCi0gICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eDsgaSA8PSBjaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gbV9maXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OyBpIDwgbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsg
KytpKQogICAgICAgICBtX2NoZWNrcG9pbnRzW2ldLmNsZWFyKCk7Ci0gICAgbV9maXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4ID0gY2hlY2twb2ludEluZGV4ICsgMTsKKyAgICBtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OwogfQogCiB2b2lk
IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQg
Y2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgK
aW5kZXggY2Q3ZmNkYTA0M2Y4YjVlZWFjM2QyZDFmY2YyZTdiYTc5OGRiYmQ2NS4uY2ViYTU2ZTM4
ZGM0YTE2ZjM1OTIwNDAyODBiOGRhNGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNyAr
NTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRz
IGFyZSBpbnZhbGlkYXRlZC4KICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9p
bnQoKTsKICAgICB2b2lkIHJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmlu
ZyYgdW5wYXJzZWRJbnB1dCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNVcFRocm91
Z2goSFRNTElucHV0Q2hlY2twb2ludCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNC
ZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVj
a3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmly
c3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3Bv
aW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCAwYjc1MjBlNDBkM2UzNzM5YzIyY2UzYjUwMmMzZmNhOTM5NGRmZWVm
Li5lMWUyZThhMjdlZmUwNjZiNmI3NDkzZWVkNGE0ZWM4OTAzMzgyNzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0z
OSw2ICszOSwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3
aXRoIGhpZ2ggbGF0ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3
aXRoIGEgZmFzdCBDUFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcK
Ky8vIHRoZSB3aG9sZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVh
ZCBhY3R1YWxseSBuZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBw
b3RlbnRpYWxseSB0aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1p
dCBvdXIgb3V0c3RhbmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3Vy
IG1heGltYWwgbWVtb3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToK
Ky8vIG91dHN0YW5kaW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXpl
b2YoQ29tcGFjdFRva2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVy
IG1hcmsgdG8gYXZvaWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFk
J3MgdG9rZW4gYnVmZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgor
c3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7
CisKKy8vIFdlIGxpbWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0
aGUgbWFpbgorLy8gdGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQg
Zm9yIHRva2Vucy4KKy8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tl
bkxpbWl0ID0gMTAwMDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBO
REVCVUcKIAogc3RhdGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC02MSw4ICs4
MSw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
c2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmln
KQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3Rva2VuKGFk
b3B0UHRyKG5ldyBIVE1MVG9rZW4pKQpAQCAtOTQsMTEgKzExMiwxMiBAQCB2b2lkIEJhY2tncm91
bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2lu
dCkKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKLXZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnBhc3NlZENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit2
b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1M
SW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKIHsKICAgICAvLyBOb3RlLCB3ZSBzaG91
bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFsaWQKICAgICAv
LyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nlc3NlZCBpbiBG
SUZPIG9yZGVyLgotICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzVXBUaHJvdWdoKGlu
cHV0Q2hlY2twb2ludCk7CisgICAgbV9pbnB1dC5pbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUo
aW5wdXRDaGVja3BvaW50KTsKKyAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKIHZvaWQgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCkBAIC0xMjksMTAgKzE0OCwxNyBAQCB2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6cHVtcFRva2VuaXplcigpCiB7CisgICAgLy8gTm8gbmVlZCB0byBzdGFydCBzcGVjdWxh
dGluZyB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMgbmVhcmx5IGNhdWdodCB1cC4KKyAgICBpZiAo
bV9pbnB1dC5vdXRzdGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3Bv
aW50U3RhcnRMaW1pdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXpl
ci5nZXQoKSwgKm1fdG9rZW4pOwotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4o
bV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2Vu
aXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4K
KyAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50
KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7CiAKICAgICAgICAgewpAQCAtMTUyLDEx
ICsxNzgsMTMgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAK
ICAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIAotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJT
aW11bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdl
dCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAg
ICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vu
cy0+bGFzdCgpLCBtX3Rva2VuaXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkg
Pj0gcGVuZGluZ1Rva2VuTGltaXQpIHsKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJl
YWQoKTsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJl
YWQsIHlpZWxkIGZvciBhIGJpdCB0byBhdm9pZCBjb25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5Lgor
ICAgICAgICAgICAgaWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgIH0KLQotICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKIH0KIAogdm9p
ZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCA4
MTVjMTE1NTgyOWZkNzJmNjIxYmRiYTU2OTZjZmUzNmRkNmQ1ZmI5Li4yODIxZmJmZjI4MjEyMjIz
ZjQwMTMwYzQ4ZjRhN2IzZDE1MDNhMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXN1bWVGcm9tKFBh
c3NPd25QdHI8Q2hlY2twb2ludD4pOwotICAgIHZvaWQgcGFzc2VkQ2hlY2twb2ludChIVE1MSW5w
dXRDaGVja3BvaW50KTsKKyAgICB2b2lkIHN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KEhUTUxJ
bnB1dENoZWNrcG9pbnQpOwogICAgIHZvaWQgZmluaXNoKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDk2N2QxZDU0ZDMzYjIxMzJhNzk1MDg0ODJiZTFjNjdiM2QwYzExZWYuLjkzMjFmMmZj
NjMxMTE1NzBhM2M3OWU5YWRkMGZhODdlODU4YWNjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzI4LDggKzMyOCwyMCBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tn
cm91bmRQYXJzZXIoUGFzc093blB0cjxQYQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIAot
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKK3ZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBjaHVuaykKIHsKKyAgICBBU1NFUlQoY2h1bmspOworICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKKyAgICAgICAgLy8gV2UncmUgd2FpdGluZyBvbiBhIG5ldHdvcmsgc2NyaXB0
LCBqdXN0IHNhdmUgdGhlIGNodW5rLCB3ZSdsbCBnZXQKKyAgICAgICAgLy8gYSBzZWNvbmQgdmFs
aWRhdGVTcGVjdWxhdGlvbnMgY2FsbCBhZnRlciB0aGUgc2NyaXB0IGNvbXBsZXRlcy4KKyAgICAg
ICAgLy8gVGhpcyBjYWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBpbW1lZGlhdGVseSBhZnRlciBy
dW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIKKyAgICAgICAgLy8gd2hpY2ggbWF5IGhhdmUg
c3RhcnRlZCBhIG5ldHdvcmsgbG9hZCBhbmQgbGVmdCB1cyB3YWl0aW5nLgorICAgICAgICBBU1NF
UlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKKyAgICAgICAgbV9sYXN0Q2h1bmtCZWZvcmVT
Y3JpcHQgPSBjaHVuazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV9s
YXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6
ZXIgPSBtX3Rva2VuaXplci5yZWxlYXNlKCk7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4g
PSBtX3Rva2VuLnJlbGVhc2UoKTsKIApAQCAtMzM5LDMxICszNTEsMjMgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghbV9jdXJyZW50Q2h1bmspIHsKLSAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gbV9jdXJyZW50Q2h1bmssIHdlIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBkaWRGYWlsU3Bl
Y3VsYXRpb24KLSAgICAgICAgLy8gZm9yIHRoaXMgY2h1bmsuCi0gICAgICAgIC8vIEZJWE1FOiBJ
biB0aGlzIGNhc2UsIHdlJ3JlIGxvc2luZyB3aGF0ZXZlciBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2Vk
IHNpbmNlCi0gICAgICAgIC8vIHdlIGNhbGxlZCBkaWRGYWlsU3BlY3VsYXRpb24uIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTQ2Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICAvLyBDdXJyZW50bHkgd2UncmUgb25seSBzbWFydCBlbm91Z2ggdG8g
cmV1c2UgdGhlIHNwZWN1bGF0aW9uIGJ1ZmZlciBpZiB0aGUgdG9rZW5pemVyCiAgICAgLy8gYm90
aCBzdGFydHMgYW5kIGVuZHMgaW4gdGhlIERhdGFTdGF0ZS4gVGhhdCBzdGF0ZSBpcyBzaW1wbGVz
dCBiZWNhdXNlIHRoZSBIVE1MVG9rZW4KICAgICAvLyBpcyBhbHdheXMgaW4gdGhlIFVuaW5pdGlh
bGl6ZWQgc3RhdGUuIFdlIHNob3VsZCBjb25zaWRlciB3aGV0aGVyIHdlIGNhbiByZXVzZSB0aGUK
ICAgICAvLyBzcGVjdWxhdGlvbiBidWZmZXIgaW4gb3RoZXIgc3RhdGVzLCBidXQgd2UnZCBsaWtl
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgbW9yZQogICAgIC8vIHNvcGhpc3RpY2F0ZWQgd2l0aCB0
aGUgSFRNTFRva2VuLgotICAgIGlmIChtX2N1cnJlbnRDaHVuay0+dG9rZW5pemVyU3RhdGUgPT0g
SFRNTFRva2VuaXplcjo6RGF0YVN0YXRlCisgICAgaWYgKGNodW5rLT50b2tlbml6ZXJTdGF0ZSA9
PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUKICAgICAgICAgJiYgdG9rZW5pemVyLT5zdGF0ZSgp
ID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZQogICAgICAgICAmJiBtX2lucHV0LmN1cnJlbnQo
KS5pc0VtcHR5KCkKLSAgICAgICAgJiYgbV9jdXJyZW50Q2h1bmstPnRyZWVCdWlsZGVyU3RhdGUg
PT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgp
KSkgeworICAgICAgICAmJiBjaHVuay0+dHJlZUJ1aWxkZXJTdGF0ZSA9PSBIVE1MVHJlZUJ1aWxk
ZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJlZUJ1aWxkZXIuZ2V0KCkpKSB7CiAgICAgICAgIEFT
U0VSVCh0b2tlbi0+aXNVbmluaXRpYWxpemVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGlkRmFpbFNwZWN1bGF0aW9uKHRva2VuLnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVh
c2UoKSk7CisgICAgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oY2h1bmssIHRva2Vu
LnJlbGVhc2UoKSwgdG9rZW5pemVyLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50
UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQ
YXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IHRva2VuaXplcikKK3ZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENo
dW5rPiBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwg
UGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIpCiB7CiAgICAgbV93ZWFrRmFjdG9y
eS5yZXZva2VBbGwoKTsKICAgICBtX3NwZWN1bGF0aW9ucy5jbGVhcigpOwpAQCAtMzczLDMwICsz
NzcsMzEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNz
T3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd24KICAgICBjaGVja3BvaW50LT50b2tlbiA9
IHRva2VuOwogICAgIGNoZWNrcG9pbnQtPnRva2VuaXplciA9IHRva2VuaXplcjsKICAgICBjaGVj
a3BvaW50LT50cmVlQnVpbGRlclN0YXRlID0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0
ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKTsKLSAgICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVja3BvaW50OwotICAgIGNoZWNrcG9pbnQtPnBy
ZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IG1fY3VycmVudENodW5rLT5wcmVsb2FkU2Nhbm5lckNo
ZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbGFzdENodW5rQmVm
b3JlU2NyaXB0LT5pbnB1dENoZWNrcG9pbnQ7CisgICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5u
ZXJDaGVja3BvaW50ID0gbGFzdENodW5rQmVmb3JlU2NyaXB0LT5wcmVsb2FkU2Nhbm5lckNoZWNr
cG9pbnQ7CiAgICAgY2hlY2twb2ludC0+dW5wYXJzZWRJbnB1dCA9IG1faW5wdXQuY3VycmVudCgp
LnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIo
KTsKLSAgICBtX2N1cnJlbnRDaHVuay5jbGVhcigpOworICAgIG1faW5wdXQuY3VycmVudCgpLmNs
ZWFyKCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gaW5zdGVhZCBvZiBjbGVh
cmVkLgogCiAgICAgQVNTRVJUKGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQuaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkpOwogICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0
VGFzayhiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSwgbV9iYWNrZ3JvdW5k
UGFyc2VyLCBjaGVja3BvaW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNl
ZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gcG9wQ2h1
bmspCiB7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0
byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAy
KTsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkpOwogICAgIEFTU0VSVCghbV90b2tl
bml6ZXIpOwogICAgIEFTU0VSVCghbV90b2tlbik7CisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0Jl
Zm9yZVNjcmlwdCk7CiAKICAgICBBY3RpdmVQYXJzZXJTZXNzaW9uIHNlc3Npb24oY29udGV4dEZv
clBhcnNpbmdTZXNzaW9uKCkpOworICAgIE93blB0cjxQYXJzZWRDaHVuaz4gY2h1bmsocG9wQ2h1
bmspOworICAgIE93blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMgPSBjaHVuay0+
dG9rZW5zLnJlbGVhc2UoKTsKIAotICAgIG1fY3VycmVudENodW5rID0gY2h1bms7Ci0gICAgT3du
UHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IG1fY3VycmVudENodW5rLT50b2tl
bnMucmVsZWFzZSgpOworICAgIEhUTUxQYXJzZXJUaHJlYWQ6OnNoYXJlZCgpLT5wb3N0VGFzayhi
aW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQsIG1f
YmFja2dyb3VuZFBhcnNlciwgY2h1bmstPmlucHV0Q2hlY2twb2ludCkpOwogCi0gICAgZm9yIChY
U1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY3VycmVudENodW5rLT54c3NJbmZv
cy5iZWdpbigpOyBpdCAhPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsK
KyAgICBmb3IgKFhTU0luZm9TdHJlYW06OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2h1bmstPnhzc0lu
Zm9zLmJlZ2luKCk7IGl0ICE9IGNodW5rLT54c3NJbmZvcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBtX3RleHRQb3NpdGlvbiA9ICgqaXQpLT5tX3RleHRQb3NpdGlvbjsKICAgICAgICAgbV94c3NB
dWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3JpcHQoKippdCk7IAogICAgICAgICBpZiAoaXNTdG9w
cGVkKCkpCkBAIC00MjgsNyArNDMzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKICAgICAg
ICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsg
MSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIDwvc2NyaXB0PiBpcyBhc3N1bWVkIHRvIGJlIHRo
ZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAgICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1
c2VkVHJlZUJ1aWxkZXIoKTsKLSAgICAgICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Cisg
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhjaHVuay5yZWxlYXNlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDU1LDI2ICs0NjAsMTcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAvLyBtX3Rva2Vu
aXplciBhbmQgbV90b2tlbiBkb24ndCBoYXZlIHN0YXRlIHRoYXQgaW52YWxpZGF0ZXMgbV9zcGVj
dWxhdGlvbnMuCiAgICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CiAgICAgQVNTRVJUKCFtX3Rva2Vu
KTsKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKIAogICAgIC8vIEZJWE1F
OiBQYXNzIGluIGN1cnJlbnQgaW5wdXQgbGVuZ3RoLgogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhU
TUwoZG9jdW1lbnQoKSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKIAogICAgIGRvdWJs
ZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIEhUTUxJbnB1dENoZWNrcG9pbnQgbGFz
dENoZWNrcG9pbnRQYXNzZWQgPSAwOwogCiAgICAgd2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFBhcnNlZENodW5rPiBjaHVuayA9IG1fc3BlY3VsYXRp
b25zLnRha2VGaXJzdCgpOwotICAgICAgICBsYXN0Q2hlY2twb2ludFBhc3NlZCA9IGNodW5rLT5p
bnB1dENoZWNrcG9pbnQ7Ci0gICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKGNodW5rLnJlbGVhc2UoKSk7Ci0KLSAgICAgICAgLy8gUHJvY2Vzc2luZyBhIGNodW5r
IGNhbiBjYWxsIGRvY3VtZW50LndyaXRlLCBjYXVzaW5nIHVzIHRvIGludmFsaWRhdGUgYW55IHJl
bWFpbmluZyBzcGVjdWxhdGlvbnMuCi0gICAgICAgIGlmIChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5
KCkgfHwgaXNTdG9wcGVkKCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIGFib3J0aW5nIHRoZXNl
IHNwZWN1bGF0aW9ucywgc28gZG9uJ3QgdGVsbCB0aGUgcGFyc2VyIHdlJ3ZlIHBhc3NlZCBhIGNo
ZWNrcG9pbnQgKGl0cyBhbHJlYWR5IGNsZWFyZWQgaXRzIGNoZWNrcG9pbnRzKS4KLSAgICAgICAg
ICAgIGxhc3RDaGVja3BvaW50UGFzc2VkID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3Bl
Y3VsYXRpb25zLnRha2VGaXJzdCgpKTsKIAotICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0
cygpKQorICAgICAgICBpZiAoaXNTdG9wcGVkKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRp
bWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKQEAgLTQ4Myw5ICs0NzksNiBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGxhc3RDaGVja3BvaW50UGFzc2VkKQotICAgICAgICBIVE1MUGFyc2VyVGhyZWFk
OjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnBhc3NlZENo
ZWNrcG9pbnQsIG1fYmFja2dyb3VuZFBhcnNlciwgbGFzdENoZWNrcG9pbnRQYXNzZWQpKTsKLQog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tpZSwgbGluZU51
bWJlcigpLnplcm9CYXNlZEludCgpKTsKIH0KIApAQCAtODg2LDcgKzg3OSw4IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIGlmIChtX2hhdmVCYWNrZ3JvdW5k
UGFyc2VyKSB7Ci0gICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7CisgICAgICAgIHZhbGlk
YXRlU3BlY3VsYXRpb25zKG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LnJlbGVhc2UoKSk7CisgICAg
ICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgICAgICAvLyBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8g
YmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICAgICAgUmVmUHRyPEhUTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNjEwMDRlMjc3ZTg0NzcwMjNkYWI1MzMwNmY1NjE3
MmI1ZTlkMmMzYy4uMWRhZWVmM2RiZjlmZGQyZjgyODBhZjkwM2I1ODNmYmJiOWJkYzE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNF
UikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tn
cm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Ci0gICAgdm9p
ZCBkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhU
TUxUb2tlbml6ZXI+KTsKKyAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKFBhc3NPd25QdHI8
UGFyc2VkQ2h1bms+IGxhc3RDaHVuayk7CisgICAgdm9pZCBkaXNjYXJkU3BlY3VsYXRpb25zQW5k
UmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmssIFBhc3NPd25QdHI8
SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CiAgICAgdm9pZCBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPik7
CiAgICAgdm9pZCBwdW1wUGVuZGluZ1NwZWN1bGF0aW9ucygpOwogI2VuZGlmCkBAIC0xOTYsNyAr
MTk2LDkgQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9yRGVsZWdhdGUgbV94c3NBdWRpdG9yRGVs
ZWdhdGU7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgT3duUHRyPFBh
cnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICAvLyBGSVhNRTogbV9sYXN0Q2h1bmtCZWZv
cmVTY3JpcHQsIG1fdG9rZW5pemVyLCBtX3Rva2VuLCBhbmQgbV9pbnB1dCBzaG91bGQgYmUgY29t
YmluZWQgaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QKKyAgICAvLyBzbyB0aGV5IGNhbiBiZSBz
ZXQgYW5kIGNsZWFyZWQgdG9nZXRoZXIgYW5kIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMgdG9nZXRo
ZXIuCisgICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2xhc3RDaHVua0JlZm9yZVNjcmlwdDsKICAg
ICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0
ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogICAgIFdlYWtQdHI8
QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fYmFja2dyb3VuZFBhcnNlcjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZmMwMTky
Y2I2NGJiZDYzNWFiZWUyMDJiNzU2NWFmMmZlYjA5ZWIzLi41NGQ3YmMyMDM2ODA4MWJhZjI1NGIx
NWZkY2RkNDUwZTdmYzk2NWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMTEgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFy
c2VyIHNob3VsZCBsaW1pdCBzcGVjdWxhdGlvbiB0byBhdm9pZCB1c2luZyB0b28gbXVjaCBtZW1v
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGVzdCB0aGF0
IHRoaXMgZml4ZXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDU0
NiBmb3IgdGhlIHRocmVhZGVkIHBhcnNlci4KKyAgICAgICAgUG9ydHMgdXNpbmcgdGhlIG1haW4t
dGhyZWFkIHBhcnNlciBhcmUgZXhwZWN0ZWQgdG8gZmFpbCAoQVNTRVJUIGluIERlYnVnKS4KKwor
ICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9y
ZS1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9wYXJzZXIvZG9jdW1l
bnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbDogQWRkZWQuCisKIDIwMTMt
MDMtMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJh
Y2tncm91bmRIVE1MUGFyc2VyIHdvcmsgd2l0aCBkb2Mud3JpdGVzIHRoYXQgZW50ZXIgb3IgbGVh
dmUgZm9yZWlnbiBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9k
b2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZv
cmUtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VmMjJlOWE0MzFhZDAyNzI3MTNiNzFm
ZGM4Nzk0MDE2YzhlZjEyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFy
c2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxIEBACitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNl
ci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxv
YWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmJlOTY3YmNkNzM5NTAyYTg5NWIwMzY3ZDE5ODI2YzMxZWEw
MGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQt
d3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Cis8L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3QiPjxzY3JpcHQgb25iZWZvcmVsb2FkPSJkb2N1bWVu
dC53cml0ZSgnJicpIiBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGRvY3VtZW50LndyaXRlKCdn
Jyk7Ij48L3NjcmlwdD50OzwvZGl2PgorPHNjcmlwdD4KK3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3Rlc3REaXYudGV4dENvbnRlbnQgPSAodGVzdERpdi50
ZXh0Q29udGVudCA9PSAnPicpID8gIlBBU1MiIDogKCJGQUlMIDogIiArIHRlc3REaXYudGV4dENv
bnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDYwZWM5NWY0NWRjMGI4MDFiZmNhMzM2YWViODZlZjBiYWZhZmYyMDkuLmVhMTcz
ODhkMGRiMTBiYWRkNGJkMTlkMDc1OTUxOTM4NzZiNWJiZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC00ODcsNyArNDg3LDggQEAgd2Via2l0Lm9yZy9i
LzExMDY5NSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLWFs
bG93ZWQuaHRtbAogd2Via2l0Lm9yZy9iLzExMDY5NSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1wbHVnaW4tYWxsb3dlZC5odG1sIFsgQ3Jhc2ggUGFzcyBdCiB3ZWJraXQub3JnL2Iv
MTEwNjk1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXBsdWdpbi1wcml2YXRlLWJy
b3dzaW5nLXRvZ2dsZWQtYWxsb3dlZC5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcv
Yi8xMTE0NDkgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVv
Zi5odG1sIFsgQ3Jhc2ggXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJz
ZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0bWwgWyBDcmFzaCBdCit3ZWJraXQub3Jn
L2IvMTEwNTQ2IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVu
dGl0eS1iZWZvcmUtbG9hZC5odG1sIFsgQ3Jhc2ggXQogCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogIyBFbmQgb2YgQ3Jhc2hpbmcgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzhjNWMzODc5N2JhNzA4MjY5OTcyYjFlMzQyZjc2
MGIyYzI4YTA3ZC4uNmRiMDg5YWRmYTI0YTg0MTExM2ExNzA0YjQ4YTkxYWM2MWFiNjk4OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0NDgsNyArMTQ0
OCw4IEBAIHdlYmtpdC5vcmcvYi8xMTE1MjEgZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW9uLWlu
dmFsaWQtb2Zmc2V0Lmh0bWwgWyBDcmFzaCBQYXNzCiAKIHdlYmtpdC5vcmcvYi8xMTE2MTMgcGxh
dGZvcm0vbWFjL2Zhc3Qvc3BlZWNoc3ludGhlc2lzL3NwZWVjaC1zeW50aGVzaXMtY2FuY2VsLmh0
bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzExMDU0NiBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1
NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1s
IFsgQ3Jhc2ggXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9j
dW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbCBbIENyYXNoIF0KIAog
d2Via2l0Lm9yZy9iLzExMTY0NyBzcHV0bmlrL0NvbmZvcm1hbmNlLzA3X0xleGljYWxfQ29udmVu
dGlvbnMvNy44X0xpdGVyYWxzLzcuOC41X1JlZ3VsYXJfRXhwcmVzc2lvbl9MaXRlcmFscy9TNy44
LjVfQTEuMV9UMi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTExNjQ3IHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMDdfTGV4aWNhbF9Db252ZW50aW9ucy83LjhfTGl0ZXJhbHMvNy44LjVfUmVndWxh
cl9FeHByZXNzaW9uX0xpdGVyYWxzL1M3LjguNV9BMi4xX1QyLmh0bWwgWyBTa2lwIF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDAzN2E2MzJlZmNjMzE5OGVj
ZjhjMjBjZDYwZTgzODgyNDVmYzc5ZDkuLjA2MzIwN2QzM2EzZGExZWI1Y2IxNzZlNTc3NTM3YWU4
MzJkYjMyOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTkwMCw3ICsxOTAwLDggQEAgd2Via2l0Lm9yZy9iLzEwODUwOCBmYXN0L2NhbnZhcy9jYW52YXMt
Y3VycmVudFBhdGguaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTExMjkwIGZhc3QvcmVn
aW9ucy9zZWFtbGVzcy1pZnJhbWUtZmxvd2VkLWludG8tcmVnaW9ucy5odG1sIFsgU2tpcCBdCiAK
LXdlYmtpdC5vcmcvYi8xMTE0NDkgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRl
LWZpZ2h0aW5nLWVvZi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgREVCVUcg
XSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0K
K3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRl
LXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgWyBDcmFzaCBdCiAKICMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gIwogIyBmYWlsaW5nIHNlY3VyaXR5IHRlc3RzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193008</attachid>
            <date>2013-03-13 15:25:00 -0700</date>
            <delta_ts>2013-03-13 15:45:42 -0700</delta_ts>
            <desc>updated</desc>
            <filename>bug-112069-20130313152057.patch</filename>
            <type>text/plain</type>
            <size>25405</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNjNjM3ZTMxZTIyYjRm
YjAwZjNhNTIxMGU1OGMzMDI0MzczYzdkOC4uZTc1ZWM4NjI3ZTI5ODVkOTgzM2I3ZWQ3MGM4Nzk5
NTA4NzA0NGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAzLTEzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAg
KEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAo
Q2hlY2twb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
OjpDaGVja3BvaW50Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6Q2hlY2twb2ludDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgorICAgICAgICAo
QmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlk
YXRlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3Vs
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisKIDIwMTMtMDMt
MTMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXBs
YWNlIHN0YXRpY19jYXN0cyB3aXRoIHRvKiBmdW5jdGlvbnMgZm9yIGRvY3VtZW50IHR5cGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmNwcAppbmRleCAxYzNmYmM0YTMzZTliNWY1ZGEzZTQzMGQ3YzM5MWIzMjJmMTFk
Nzg1Li4xOWE2MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmNwcApAQCAtMzIsNiArMzIsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCkKKyAgICA6IG1f
Zmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCgwKQorICAgICwgbV9maXJzdFZhbGlkU2VnbWVudElu
ZGV4KDApCiB7CiB9CiAKQEAgLTUzLDE3ICs1NSw0MCBAQCBIVE1MSW5wdXRDaGVja3BvaW50IEJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQogICAgIHJldHVybiBj
aGVja3BvaW50OwogfQogCit2b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRh
dGVDaGVja3BvaW50c0JlZm9yZShIVE1MSW5wdXRDaGVja3BvaW50IG5ld0ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgg
PCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7CisgICAgLy8gVGhlcmUgaXMgbm90aGluZyB0byBkbyBm
b3IgdGhlIGZpcnN0IHZhbGlkIGNoZWNrcG9pbnQuCisgICAgaWYgKG1fZmlyc3RWYWxpZENoZWNr
cG9pbnRJbmRleCA9PSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA+IG1fZmlyc3RW
YWxpZENoZWNrcG9pbnRJbmRleCk7CisgICAgY29uc3QgQ2hlY2twb2ludCYgbGFzdEludmFsaWRD
aGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4IC0g
MV07CisKKyAgICBBU1NFUlQobV9maXJzdFZhbGlkU2VnbWVudEluZGV4IDw9IGxhc3RJbnZhbGlk
Q2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OyBpIDwgbGFzdEludmFsaWRDaGVja3Bv
aW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKKyAgICAgICAgbV9zZWdt
ZW50c1tpXSA9IFN0cmluZygpOworICAgIG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA9IGxhc3RJ
bnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworCisgICAg
Zm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgaSA8IG5ld0ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICAgICAgbV9jaGVja3BvaW50c1tpXS5jbGVh
cigpOworICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IG5ld0ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXg7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5k
VG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNvbnN0IFN0cmluZyYgdW5w
YXJzZWRJbnB1dCkKIHsKICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4IDwgbV9jaGVja3BvaW50
cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2twb2ludEluZGV4IGlzIGlu
dmFsaWQuCiAgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9IG1fY2hlY2twb2ludHNb
Y2hlY2twb2ludEluZGV4XTsKKyAgICBBU1NFUlQoIWNoZWNrcG9pbnQuaXNOdWxsKCkpOwogCiAg
ICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwogCiAgICAgbV9jdXJyZW50
ID0gY2hlY2twb2ludC5pbnB1dDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51
bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytp
KQorICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5
QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9zZWdtZW50c1tpXS5pc051bGwoKSk7CiAgICAgICAgIG1fY3VycmVudC5hcHBlbmQoU2VnbWVu
dGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKyAgICB9CiAKICAgICBpZiAoIXVucGFyc2VkSW5w
dXQuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnQucHJlcGVuZChTZWdtZW50ZWRTdHJpbmco
dW5wYXJzZWRJbnB1dCkpOwpAQCAtNzUsNiArMTAwLDggQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtOjpyZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCwg
Y28KIAogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBtX2NoZWNrcG9pbnRzLmNsZWFyKCk7
CisgICAgbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID0gMDsKKyAgICBtX2ZpcnN0VmFsaWRT
ZWdtZW50SW5kZXggPSAwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKaW5kZXggYzcwYjA3MmNkNTQwYWUw
OWE2NjU0NDdiZGUxNjU3MjQyN2QzMzJlOC4uY2ViYTU2ZTM4ZGM0YTE2ZjM1OTIwNDAyODBiOGRh
NGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4KICAg
ICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9pbnQoKTsKICAgICB2b2lkIHJld2lu
ZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCk7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7
CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3BvaW50IHsKQEAgLTU3LDExICs2MCwyMCBAQCBw
cml2YXRlOgogCiAgICAgICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dDsKICAgICAgICAgc2l6ZV90
IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7CisKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gaW5wdXQuaXNFbXB0eSgpICYmICFudW1i
ZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyB9CisjZW5kaWYKKyAgICAgICAgdm9pZCBjbGVh
cigpIHsgaW5wdXQuY2xlYXIoKTsgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZCA9IDA7
IH0KICAgICB9OwogCiAgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3NlZ21lbnRzOwogICAgIFZlY3RvcjxDaGVja3BvaW50PiBtX2NoZWNrcG9pbnRz
OworCisgICAgLy8gTm90ZTogVGhlc2UgaW5kaWNpZXMgbWF5ID09PSB2ZWN0b3Iuc2l6ZSgpLCBp
biB3aGljaCBjYXNlIHRoZXJlIGFyZSBubyB2YWxpZCBjaGVja3BvaW50cy9zZWdtZW50cyBhdCB0
aGlzIHRpbWUuCisgICAgc2l6ZV90IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsKKyAgICBz
aXplX3QgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IDhhOGM1
OGNkZjk2ZWU3MjBmMGM2NzAxYjBkN2ZiNjQwNGI5ZWNlMmMuLjVkNDRmYjdiMjQyY2E3YWFjZDI1
MGRhNmFiZWI1YTEwOThhYmMzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTM5LDYgKzM5LDI2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gT24gYSBuZXR3b3JrIHdpdGggaGlnaCBsYXRlbmN5IGFuZCBo
aWdoIGJhbmR3aWR0aCwgdXNpbmcgYSBkZXZpY2UKKy8vIHdpdGggYSBmYXN0IENQVSwgd2UgY291
bGQgZW5kIHVwIHNwZWN1bGF0aXZlbHkgdG9rZW5pemluZworLy8gdGhlIHdob2xlIGRvY3VtZW50
LCB3ZWxsIGFoZWFkIG9mIHdoZW4gdGhlIG1haW4tdGhyZWFkIGFjdHVhbGx5IG5lZWRzIGl0Lgor
Ly8gVGhpcyBpcyBhIHdhc3RlIG9mIG1lbW9yeSAoYW5kIHBvdGVudGlhbGx5IHRpbWUgaWYgdGhl
IHNwZWN1bGF0aW9uIGZhaWxzKS4KKy8vIFNvIHdlIGxpbWl0IG91ciBvdXRzdGFuZGluZyBzcGVj
dWxhdGlvbnMgYXJiaXRyYXJpbHkgdG8gMTAuCisvLyBPdXIgbWF4aW1hbCBtZW1vcnkgc3BlbnQg
c3BlY3VsYXRpbmcgd2lsbCBiZSBhcHByb3hpbWF0ZWx5OgorLy8gb3V0c3RhbmRpbmdDaGVja3Bv
aW50TGltaXQgKiBwZW5kaW5nVG9rZW5MaW1pdCAqIHNpemVvZihDb21wYWN0VG9rZW4pCisvLyBX
ZSB1c2UgYSBzZXBhcmF0ZSBsb3cgYW5kIGhpZ2ggd2F0ZXIgbWFyayB0byBhdm9pZCBjb25zdGFu
dGx5IHRvcHBpbmcKKy8vIG9mZiB0aGUgbWFpbiB0aHJlYWQncyB0b2tlbiBidWZmZXIuCisvLyBU
aGVzZSBudW1iZXJzIGhhdmUgbm90IGJlZW4gdHVuZWQuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCA9IDEwOworc3RhdGljIGNvbnN0IHNpemVfdCBv
dXRzdGFuZGluZ0NoZWNrcG9pbnRTdGFydExpbWl0ID0gMzsKKworLy8gV2UgbGltaXQgb3VyIGNo
dWNrcyB0byAxMDAwIHRva2VucywgdG8gbWFrZSBzdXJlIHRoZSBtYWluCisvLyB0aHJlYWQgaXMg
bmV2ZXIgd2FpdGluZyBvbiB0aGUgcGFyc2VyIHRocmVhZCBmb3IgdG9rZW5zLgorLy8gVGhpcyB3
YXMgdHVuZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQw
OC4KK3N0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGltaXQgPSAxMDAwOworCit1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiAjaWZuZGVmIE5ERUJVRwogCiBzdGF0aWMgdm9pZCBj
aGVja1RoYXRUb2tlbnNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IENvbXBhY3RI
VE1MVG9rZW5TdHJlYW0qIHRva2VucykKQEAgLTU1LDggKzc1LDYgQEAgc3RhdGljIHZvaWQgY2hl
Y2tUaGF0UHJlbG9hZHNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFByZWxvYWRS
ZXF1ZXN0U3QKIAogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGlt
aXQgPSAxMDAwOwotCiBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJzZXIo
UGFzc1JlZlB0cjxXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPiA+IHJlZmVyZW5j
ZSwgUGFzc093blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCiAgICAgOiBtX3dlYWtGYWN0b3J5
KHJlZmVyZW5jZSwgdGhpcykKICAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikp
CkBAIC04OCw2ICsxMDYsMTQgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJv
bShQYXNzT3duUHRyPENoZWNrcG9pbnQ+IGNoZWNrcG9pbnQpCiAgICAgcHVtcFRva2VuaXplcigp
OwogfQogCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2tw
b2ludChIVE1MSW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKK3sKKyAgICAvLyBOb3Rl
LCB3ZSBzaG91bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFs
aWQKKyAgICAvLyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nl
c3NlZCBpbiBGSUZPIG9yZGVyLgorICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVm
b3JlKGlucHV0Q2hlY2twb2ludCk7CisgICAgcHVtcFRva2VuaXplcigpOworfQorCiB2b2lkIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQogewogICAgIG1hcmtFbmRPZkZpbGUoKTsKQEAg
LTExNiwxMCArMTQyLDE3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZp
bGUoKQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIHsKKyAg
ICAvLyBObyBuZWVkIHRvIHN0YXJ0IHNwZWN1bGF0aW5nIHVudGlsIHRoZSBtYWluIHRocmVhZCBp
cyBuZWFybHkgY2F1Z2h0IHVwLgorICAgIGlmIChtX2lucHV0Lm91dHN0YW5kaW5nQ2hlY2twb2lu
dENvdW50KCkgPiBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdGFydExpbWl0KQorICAgICAgICByZXR1
cm47CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQo
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7Ci0gICAgICAg
IGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4u
Z2V0KCkpKQorICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJy
ZW50KCksICptX3Rva2VuLmdldCgpKSkgeworICAgICAgICAgICAgLy8gV2UndmUgcmVhY2hlZCB0
aGUgZW5kIG9mIG91ciBjdXJyZW50IGlucHV0LgorICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFp
blRocmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgbV9zb3Vy
Y2VUcmFja2VyLmVuZChtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbml6ZXIuZ2V0KCksICptX3Rv
a2VuKTsKIAogICAgICAgICB7CkBAIC0xMzksMTEgKzE3MiwxMyBAQCB2b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIAogICAgICAgICBtX3Rva2VuLT5jbGVhcigpOwog
Ci0gICAgICAgIGlmICghbV90cmVlQnVpbGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRpbmdU
b2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+c2l6
ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQorICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11
bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgp
KSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkgewogICAg
ICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOworICAgICAgICAgICAgLy8gSWYgd2Un
cmUgZmFyIGFoZWFkIG9mIHRoZSBtYWluIHRocmVhZCwgeWllbGQgZm9yIGEgYml0IHRvIGF2b2lk
IGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuCisgICAgICAgICAgICBpZiAobV9pbnB1dC5vdXRz
dGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50U3RvcExpbWl0
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotCi0gICAgc2VuZFRv
a2Vuc1RvTWFpblRocmVhZCgpOwogfQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzZW5k
VG9rZW5zVG9NYWluVGhyZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4IGNhMDY3Y2ZkNWQ2OWJiZGRjY2RkNzZjOTVhMjY1
NDZkZjk5ZjhhNjYuLjI4MjFmYmZmMjgyMTIyMjNmNDAxMzBjNDhmNGE3YjNkMTUwM2ExM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
aApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3BvaW50Pik7CisgICAg
dm9pZCBzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50KTsKICAg
ICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgc3RvcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2YTNlMjlkMTQyODNi
YWM4ZDA5ZjE3MWY2YTk1NDY3NDllZTk0OTU0Li4xZWMzNTFjMDU5MzYxZTE1NDQ1ZWI2ZjIwNGU0
ZDYyNDMwNTdiMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTMyOCw4ICszMjgsMjAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25Q
dHI8UGEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUs
IGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6dmFs
aWRhdGVTcGVjdWxhdGlvbnMoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gY2h1bmspCiB7CisgICAg
QVNTRVJUKGNodW5rKTsKKyAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAg
IC8vIFdlJ3JlIHdhaXRpbmcgb24gYSBuZXR3b3JrIHNjcmlwdCwganVzdCBzYXZlIHRoZSBjaHVu
aywgd2UnbGwgZ2V0CisgICAgICAgIC8vIGEgc2Vjb25kIHZhbGlkYXRlU3BlY3VsYXRpb25zIGNh
bGwgYWZ0ZXIgdGhlIHNjcmlwdCBjb21wbGV0ZXMuCisgICAgICAgIC8vIFRoaXMgY2FsbCBzaG91
bGQgaGF2ZSBiZWVuIG1hZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgcnVuU2NyaXB0c0ZvclBhdXNlZFRy
ZWVCdWlsZGVyCisgICAgICAgIC8vIHdoaWNoIG1heSBoYXZlIHN0YXJ0ZWQgYSBuZXR3b3JrIGxv
YWQgYW5kIGxlZnQgdXMgd2FpdGluZy4KKyAgICAgICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9y
ZVNjcmlwdCk7CisgICAgICAgIG1fbGFzdENodW5rQmVmb3JlU2NyaXB0ID0gY2h1bms7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0
KTsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gdG9rZW5pemVyID0gbV90b2tlbml6ZXIucmVs
ZWFzZSgpOwogICAgIE93blB0cjxIVE1MVG9rZW4+IHRva2VuID0gbV90b2tlbi5yZWxlYXNlKCk7
CiAKQEAgLTMzOSwzMSArMzUxLDIzIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fY3Vy
cmVudENodW5rKSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1fY3VycmVudENodW5rLCB3
ZSBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uCi0gICAgICAgIC8v
IGZvciB0aGlzIGNodW5rLgotICAgICAgICAvLyBGSVhNRTogSW4gdGhpcyBjYXNlLCB3ZSdyZSBs
b3Npbmcgd2hhdGV2ZXIgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZQotICAgICAgICAvLyB3
ZSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDU0NgotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8g
Q3VycmVudGx5IHdlJ3JlIG9ubHkgc21hcnQgZW5vdWdoIHRvIHJldXNlIHRoZSBzcGVjdWxhdGlv
biBidWZmZXIgaWYgdGhlIHRva2VuaXplcgogICAgIC8vIGJvdGggc3RhcnRzIGFuZCBlbmRzIGlu
IHRoZSBEYXRhU3RhdGUuIFRoYXQgc3RhdGUgaXMgc2ltcGxlc3QgYmVjYXVzZSB0aGUgSFRNTFRv
a2VuCiAgICAgLy8gaXMgYWx3YXlzIGluIHRoZSBVbmluaXRpYWxpemVkIHN0YXRlLiBXZSBzaG91
bGQgY29uc2lkZXIgd2hldGhlciB3ZSBjYW4gcmV1c2UgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24g
YnVmZmVyIGluIG90aGVyIHN0YXRlcywgYnV0IHdlJ2QgbGlrZWx5IG5lZWQgdG8gZG8gc29tZXRo
aW5nIG1vcmUKICAgICAvLyBzb3BoaXN0aWNhdGVkIHdpdGggdGhlIEhUTUxUb2tlbi4KLSAgICBp
ZiAobV9jdXJyZW50Q2h1bmstPnRva2VuaXplclN0YXRlID09IEhUTUxUb2tlbml6ZXI6OkRhdGFT
dGF0ZQorICAgIGlmIChjaHVuay0+dG9rZW5pemVyU3RhdGUgPT0gSFRNTFRva2VuaXplcjo6RGF0
YVN0YXRlCiAgICAgICAgICYmIHRva2VuaXplci0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpE
YXRhU3RhdGUKICAgICAgICAgJiYgbV9pbnB1dC5jdXJyZW50KCkuaXNFbXB0eSgpCi0gICAgICAg
ICYmIG1fY3VycmVudENodW5rLT50cmVlQnVpbGRlclN0YXRlID09IEhUTUxUcmVlQnVpbGRlclNp
bXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5nZXQoKSkpIHsKKyAgICAgICAgJiYgY2h1
bmstPnRyZWVCdWlsZGVyU3RhdGUgPT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZv
cihtX3RyZWVCdWlsZGVyLmdldCgpKSkgewogICAgICAgICBBU1NFUlQodG9rZW4tPmlzVW5pbml0
aWFsaXplZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZEZhaWxTcGVjdWxh
dGlvbih0b2tlbi5yZWxlYXNlKCksIHRva2VuaXplci5yZWxlYXNlKCkpOworICAgIGRpc2NhcmRT
cGVjdWxhdGlvbnNBbmRSZXN1bWVGcm9tKGNodW5rLCB0b2tlbi5yZWxlYXNlKCksIHRva2VuaXpl
ci5yZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1
bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5p
emVyPiB0b2tlbml6ZXIpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlzY2FyZFNwZWN1bGF0
aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFzdENodW5rQmVmb3Jl
U2NyaXB0LCBQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRNTFRva2Vu
aXplcj4gdG9rZW5pemVyKQogewogICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7CiAgICAg
bV9zcGVjdWxhdGlvbnMuY2xlYXIoKTsKQEAgLTM3MywzMCArMzc3LDMxIEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRv
a2VuLCBQYXNzT3duCiAgICAgY2hlY2twb2ludC0+dG9rZW4gPSB0b2tlbjsKICAgICBjaGVja3Bv
aW50LT50b2tlbml6ZXIgPSB0b2tlbml6ZXI7CiAgICAgY2hlY2twb2ludC0+dHJlZUJ1aWxkZXJT
dGF0ZSA9IEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5n
ZXQoKSk7Ci0gICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbV9jdXJyZW50Q2h1bmst
PmlucHV0Q2hlY2twb2ludDsKLSAgICBjaGVja3BvaW50LT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50OworICAgIGNoZWNr
cG9pbnQtPmlucHV0Q2hlY2twb2ludCA9IGxhc3RDaHVua0JlZm9yZVNjcmlwdC0+aW5wdXRDaGVj
a3BvaW50OworICAgIGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IGxhc3RD
aHVua0JlZm9yZVNjcmlwdC0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50OwogICAgIGNoZWNrcG9p
bnQtPnVucGFyc2VkSW5wdXQgPSBtX2lucHV0LmN1cnJlbnQoKS50b1N0cmluZygpLmlzb2xhdGVk
Q29weSgpOwotICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50Q2h1
bmsuY2xlYXIoKTsKKyAgICBtX2lucHV0LmN1cnJlbnQoKS5jbGVhcigpOyAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFzc2VkIGluIGluc3RlYWQgb2YgY2xlYXJlZC4KIAogICAgIEFTU0VSVChj
aGVja3BvaW50LT51bnBhcnNlZElucHV0LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsK
ICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnJlc3VtZUZyb20sIG1fYmFja2dyb3VuZFBhcnNlciwgY2hlY2twb2ludC5y
ZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRD
aHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKQor
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IHBvcENodW5rKQogewogICAgIC8vIEFTU0VS
VCB0aGF0IHRoaXMgb2JqZWN0IGlzIGJvdGggYXR0YWNoZWQgdG8gdGhlIERvY3VtZW50IGFuZCBw
cm90ZWN0ZWQuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgPj0gMik7CiAgICAgQVNTRVJUKHNob3Vs
ZFVzZVRocmVhZGluZygpKTsKICAgICBBU1NFUlQoIW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQo
IW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAg
QWN0aXZlUGFyc2VyU2Vzc2lvbiBzZXNzaW9uKGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpKTsK
KyAgICBPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKHBvcENodW5rKTsKKyAgICBPd25QdHI8Q29t
cGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gY2h1bmstPnRva2Vucy5yZWxlYXNlKCk7CiAK
LSAgICBtX2N1cnJlbnRDaHVuayA9IGNodW5rOwotICAgIE93blB0cjxDb21wYWN0SFRNTFRva2Vu
U3RyZWFtPiB0b2tlbnMgPSBtX2N1cnJlbnRDaHVuay0+dG9rZW5zLnJlbGVhc2UoKTsKKyAgICBI
VE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQ
YXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50LCBtX2JhY2tncm91bmRQYXJzZXIsIGNo
dW5rLT5pbnB1dENoZWNrcG9pbnQpKTsKIAotICAgIGZvciAoWFNTSW5mb1N0cmVhbTo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuYmVnaW4oKTsgaXQgIT0gbV9j
dXJyZW50Q2h1bmstPnhzc0luZm9zLmVuZCgpOyArK2l0KSB7CisgICAgZm9yIChYU1NJbmZvU3Ry
ZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IGNodW5rLT54c3NJbmZvcy5iZWdpbigpOyBpdCAhPSBj
aHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsKICAgICAgICAgbV90ZXh0UG9zaXRpb24gPSAo
Kml0KS0+bV90ZXh0UG9zaXRpb247CiAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJs
b2NrU2NyaXB0KCoqaXQpOyAKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQpAQCAtNDI4LDcgKzQz
Myw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdCArIDEgPT0gdG9rZW5zLT5lbmQoKSk7
IC8vIFRoZSA8L3NjcmlwdD4gaXMgYXNzdW1lZCB0byBiZSB0aGUgbGFzdCB0b2tlbiBvZiB0aGlz
IGJ1bmNoLgogICAgICAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7Ci0g
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOworICAgICAgICAgICAgdmFsaWRhdGVT
cGVjdWxhdGlvbnMoY2h1bmsucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKQEAgLTQ1NSw2ICs0NjAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBl
bmRpbmdTcGVjdWxhdGlvbnMoKQogICAgIC8vIG1fdG9rZW5pemVyIGFuZCBtX3Rva2VuIGRvbid0
IGhhdmUgc3RhdGUgdGhhdCBpbnZhbGlkYXRlcyBtX3NwZWN1bGF0aW9ucy4KICAgICBBU1NFUlQo
IW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0
Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAgLy8gRklYTUU6IFBhc3MgaW4gY3VycmVudCBpbnB1
dCBsZW5ndGguCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVudCgpLCBsaW5lTnVt
YmVyKCkuemVyb0Jhc2VkSW50KCkpOwpAQCAtNDY0LDEwICs0NzAsMTAgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICB3aGlsZSAoIW1fc3Bl
Y3VsYXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CiAKLSAgICAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKKyAgICAgICAgaWYgKGlzU3Rv
cHBlZCgpIHx8IGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lID4gcGFyc2VyVGltZUxpbWl0ICYm
ICFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkg
LSBzdGFydFRpbWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKICAgICAgICAgICAgIG1fcGFyc2VyU2No
ZWR1bGVyLT5zY2hlZHVsZUZvclJlc3VtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTg3Myw3ICs4NzksOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BB
UlNFUikKICAgICBpZiAobV9oYXZlQmFja2dyb3VuZFBhcnNlcikgewotICAgICAgICB2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpOworICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhtX2xhc3RDaHVu
a0JlZm9yZVNjcmlwdC5yZWxlYXNlKCkpOworICAgICAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVm
b3JlU2NyaXB0KTsKICAgICAgICAgLy8gcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3Vt
ZW50LAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5
ZXQuCiAgICAgICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4
IDYxMDA0ZTI3N2U4NDc3MDIzZGFiNTMzMDZmNTYxNzJiNWU5ZDJjM2MuLjFkYWVlZjNkYmY5ZmRk
MmY4MjgwYWY5MDNiNTgzZmJiYjliZGMxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tncm91
bmRQYXJzZXIoKTsKICAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7Ci0gICAgdm9pZCB2
YWxpZGF0ZVNwZWN1bGF0aW9ucygpOwotICAgIHZvaWQgZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NP
d25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CisgICAgdm9pZCB2
YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmspOwor
ICAgIHZvaWQgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJz
ZWRDaHVuaz4gbGFzdENodW5rLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRN
TFRva2VuaXplcj4pOwogICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogICAgIHZvaWQgcHVtcFBlbmRpbmdTcGVj
dWxhdGlvbnMoKTsKICNlbmRpZgpAQCAtMTk2LDcgKzE5Niw5IEBAIHByaXZhdGU6CiAgICAgWFNT
QXVkaXRvckRlbGVnYXRlIG1feHNzQXVkaXRvckRlbGVnYXRlOwogCiAjaWYgRU5BQkxFKFRIUkVB
REVEX0hUTUxfUEFSU0VSKQotICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1bms7
CisgICAgLy8gRklYTUU6IG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LCBtX3Rva2VuaXplciwgbV90
b2tlbiwgYW5kIG1faW5wdXQgc2hvdWxkIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RhdGUg
b2JqZWN0CisgICAgLy8gc28gdGhleSBjYW4gYmUgc2V0IGFuZCBjbGVhcmVkIHRvZ2V0aGVyIGFu
ZCBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzIHRvZ2V0aGVyLgorICAgIE93blB0cjxQYXJzZWRDaHVu
az4gbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQ7CiAgICAgRGVxdWU8T3duUHRyPFBhcnNlZENodW5r
PiA+IG1fc3BlY3VsYXRpb25zOwogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxEb2N1bWVudFBhcnNl
cj4gbV93ZWFrRmFjdG9yeTsKICAgICBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBtX2Jh
Y2tncm91bmRQYXJzZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNkYTZkYzRiYjc2MmI1ZTU2YWY4MzY0MWIzMDNhNDJm
MmZmZDIzNi4uNWMxNDRjMjhlNTExNTQ3MTA0MDUyMTA0Y2M5OTZmOWEzMWVmOGNkOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEzLTAzLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNlciBzaG91bGQgbGltaXQgc3BlY3VsYXRp
b24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgorCisgICAgICAgIFRlc3QgdGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NDYgZm9yIHRoZSB0aHJlYWRlZCBwYXJzZXIu
CisgICAgICAgIFBvcnRzIHVzaW5nIHRoZSBtYWluLXRocmVhZCBwYXJzZXIgYXJlIGV4cGVjdGVk
IHRvIGZhaWwgKEFTU0VSVCBpbiBEZWJ1ZykuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJl
Zm9yZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDMtMTMgIExpYW0gUXVp
bm4gIDxscXVpbm5AYmxhY2tiZXJyeS5jb20+CiAKICAgICAgICAgTmV3IHRlc3RzIHRvIGNoZWNr
IHRoYXQgWEhUTUwgZW50aXRpZXMgYXJlIHN1cHBvcnRlZCBpbiBYSFRNTCBNb2JpbGUgUHJvZmls
ZSAxLjEgYW5kIDEuMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWYyMmU5YTQzMWFkMDI3MjcxM2I3MWZkYzg3
OTQwMTZjOGVmMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2Rv
Y3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYyYmU5NjdiY2Q3Mzk1MDJhODk1YjAzNjdkMTk4MjZjMzFlYTAwZWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0
ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPGRpdiBpZD0idGVzdCI+PHNjcmlwdCBvbmJlZm9yZWxvYWQ9ImRvY3VtZW50Lndy
aXRlKCcmJykiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZG9jdW1lbnQud3JpdGUoJ2cnKTsi
Pjwvc2NyaXB0PnQ7PC9kaXY+Cis8c2NyaXB0PgordmFyIHRlc3REaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOwordGVzdERpdi50ZXh0Q29udGVudCA9ICh0ZXN0RGl2LnRleHRD
b250ZW50ID09ICc+JykgPyAiUEFTUyIgOiAoIkZBSUwgOiAiICsgdGVzdERpdi50ZXh0Q29udGVu
dCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggZGYwZWU0ZWJiNzhhMmMzMTRkZGE0NmE4NDRkOWU0Mzg1ZjA2YjYxMi4uM2E3YjM2MWQ0
MTliNTg2NjcwODMzMzY2YjkxYmJjM2ExZjczMjBiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ4OSw3ICs0ODksOCBAQCB3ZWJraXQub3JnL2IvMTEw
Njk1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UuaHRtbCBb
IENyYXNoCiB3ZWJraXQub3JnL2IvMTEwNjk1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLXBsdWdpbi1hbGxvd2VkLmh0bWwgWyBDcmFzaCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xMTA2
OTUgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tcGx1Z2luLXByaXZhdGUtYnJvd3Np
bmctdG9nZ2xlZC1hbGxvd2VkLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzEx
MTQ0OSBbIERlYnVnIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0
bWwgWyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgREVCVUcgXSBmYXN0L3BhcnNlci9k
b2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8x
MTA1NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5
LWJlZm9yZS1sb2FkLmh0bWwgWyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xMTIxNTIgWyBEZWJ1
ZyBdIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy5odG1sIFsgQ3Jhc2gg
XQogd2Via2l0Lm9yZy9iLzExMjE1MiBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS90YWJsZS13aXRo
LWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbCBbIENyYXNoIF0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDE2ZmJkNmFlNmY3MWZhZWVmZTVlOTU1YjJhOWQ0
YWRiNjFiNjk3Yy4uM2UzNjRlMTIzNzQwYjlmMjMwNWRjOTYxNGFlMjYxYjFmNjU4NjZjYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0NDgsNyArMTQ0
OCw4IEBAIHdlYmtpdC5vcmcvYi8xMTE1MjEgZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW9uLWlu
LWlmcmFtZS1yZW1vdmVkLWNyYXNoLmh0bWwgWyBDCiAKIHdlYmtpdC5vcmcvYi8xMTE2MTMgcGxh
dGZvcm0vbWFjL2Zhc3Qvc3BlZWNoc3ludGhlc2lzL3NwZWVjaC1zeW50aGVzaXMtY2FuY2VsLmh0
bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzExMDU0NiBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1
NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1s
IFsgQ3Jhc2ggXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9j
dW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbCBbIENyYXNoIF0KIAog
d2Via2l0Lm9yZy9iLzExMTY0NyBzcHV0bmlrL0NvbmZvcm1hbmNlLzA3X0xleGljYWxfQ29udmVu
dGlvbnMvNy44X0xpdGVyYWxzLzcuOC41X1JlZ3VsYXJfRXhwcmVzc2lvbl9MaXRlcmFscy9TNy44
LjVfQTEuMV9UMi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTExNjQ3IHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMDdfTGV4aWNhbF9Db252ZW50aW9ucy83LjhfTGl0ZXJhbHMvNy44LjVfUmVndWxh
cl9FeHByZXNzaW9uX0xpdGVyYWxzL1M3LjguNV9BMi4xX1QyLmh0bWwgWyBTa2lwIF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVmOGNmYjAyM2JkZmViM2Qw
Yjc5ZjQ2MTY0YTFmYTBjYTdmNzU4MTYuLjkzOWJlYTQzMzRhYjlmNTY0MDg2MDZkZjQ0NDVjMmM3
NTcwMmQ2YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTkwMiw3ICsxOTAyLDggQEAgd2Via2l0Lm9yZy9iLzEwODUwOCBmYXN0L2NhbnZhcy9jYW52YXMt
Y3VycmVudFBhdGguaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTExMjkwIGZhc3QvcmVn
aW9ucy9zZWFtbGVzcy1pZnJhbWUtZmxvd2VkLWludG8tcmVnaW9ucy5odG1sIFsgU2tpcCBdCiAK
LXdlYmtpdC5vcmcvYi8xMTE0NDkgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRl
LWZpZ2h0aW5nLWVvZi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgREVCVUcg
XSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0K
K3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRl
LXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgWyBDcmFzaCBdCiAKICMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gIwogIyBmYWlsaW5nIHNlY3VyaXR5IHRlc3RzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193012</attachid>
            <date>2013-03-13 15:45:45 -0700</date>
            <delta_ts>2013-03-13 16:25:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130313154142.patch</filename>
            <type>text/plain</type>
            <size>25399</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNjNjM3ZTMxZTIyYjRm
YjAwZjNhNTIxMGU1OGMzMDI0MzczYzdkOC4uZTc1ZWM4NjI3ZTI5ODVkOTgzM2I3ZWQ3MGM4Nzk5
NTA4NzA0NGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAzLTEzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAg
KEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAo
Q2hlY2twb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
OjpDaGVja3BvaW50Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6Q2hlY2twb2ludDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgorICAgICAgICAo
QmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlk
YXRlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3Vs
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisKIDIwMTMtMDMt
MTMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXBs
YWNlIHN0YXRpY19jYXN0cyB3aXRoIHRvKiBmdW5jdGlvbnMgZm9yIGRvY3VtZW50IHR5cGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmNwcAppbmRleCAxYzNmYmM0YTMzZTliNWY1ZGEzZTQzMGQ3YzM5MWIzMjJmMTFk
Nzg1Li4xOWE2MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmNwcApAQCAtMzIsNiArMzIsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCkKKyAgICA6IG1f
Zmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCgwKQorICAgICwgbV9maXJzdFZhbGlkU2VnbWVudElu
ZGV4KDApCiB7CiB9CiAKQEAgLTUzLDE3ICs1NSw0MCBAQCBIVE1MSW5wdXRDaGVja3BvaW50IEJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQogICAgIHJldHVybiBj
aGVja3BvaW50OwogfQogCit2b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRh
dGVDaGVja3BvaW50c0JlZm9yZShIVE1MSW5wdXRDaGVja3BvaW50IG5ld0ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgg
PCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7CisgICAgLy8gVGhlcmUgaXMgbm90aGluZyB0byBkbyBm
b3IgdGhlIGZpcnN0IHZhbGlkIGNoZWNrcG9pbnQuCisgICAgaWYgKG1fZmlyc3RWYWxpZENoZWNr
cG9pbnRJbmRleCA9PSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA+IG1fZmlyc3RW
YWxpZENoZWNrcG9pbnRJbmRleCk7CisgICAgY29uc3QgQ2hlY2twb2ludCYgbGFzdEludmFsaWRD
aGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4IC0g
MV07CisKKyAgICBBU1NFUlQobV9maXJzdFZhbGlkU2VnbWVudEluZGV4IDw9IGxhc3RJbnZhbGlk
Q2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OyBpIDwgbGFzdEludmFsaWRDaGVja3Bv
aW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKKyAgICAgICAgbV9zZWdt
ZW50c1tpXSA9IFN0cmluZygpOworICAgIG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA9IGxhc3RJ
bnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworCisgICAg
Zm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgaSA8IG5ld0ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICAgICAgbV9jaGVja3BvaW50c1tpXS5jbGVh
cigpOworICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IG5ld0ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXg7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5k
VG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNvbnN0IFN0cmluZyYgdW5w
YXJzZWRJbnB1dCkKIHsKICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4IDwgbV9jaGVja3BvaW50
cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2twb2ludEluZGV4IGlzIGlu
dmFsaWQuCiAgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9IG1fY2hlY2twb2ludHNb
Y2hlY2twb2ludEluZGV4XTsKKyAgICBBU1NFUlQoIWNoZWNrcG9pbnQuaXNOdWxsKCkpOwogCiAg
ICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwogCiAgICAgbV9jdXJyZW50
ID0gY2hlY2twb2ludC5pbnB1dDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51
bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytp
KQorICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5
QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9zZWdtZW50c1tpXS5pc051bGwoKSk7CiAgICAgICAgIG1fY3VycmVudC5hcHBlbmQoU2VnbWVu
dGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKyAgICB9CiAKICAgICBpZiAoIXVucGFyc2VkSW5w
dXQuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnQucHJlcGVuZChTZWdtZW50ZWRTdHJpbmco
dW5wYXJzZWRJbnB1dCkpOwpAQCAtNzUsNiArMTAwLDggQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtOjpyZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCwg
Y28KIAogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBtX2NoZWNrcG9pbnRzLmNsZWFyKCk7
CisgICAgbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID0gMDsKKyAgICBtX2ZpcnN0VmFsaWRT
ZWdtZW50SW5kZXggPSAwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKaW5kZXggYzcwYjA3MmNkNTQwYWUw
OWE2NjU0NDdiZGUxNjU3MjQyN2QzMzJlOC4uY2ViYTU2ZTM4ZGM0YTE2ZjM1OTIwNDAyODBiOGRh
NGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4KICAg
ICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9pbnQoKTsKICAgICB2b2lkIHJld2lu
ZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCk7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7
CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3BvaW50IHsKQEAgLTU3LDExICs2MCwyMCBAQCBw
cml2YXRlOgogCiAgICAgICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dDsKICAgICAgICAgc2l6ZV90
IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7CisKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gaW5wdXQuaXNFbXB0eSgpICYmICFudW1i
ZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyB9CisjZW5kaWYKKyAgICAgICAgdm9pZCBjbGVh
cigpIHsgaW5wdXQuY2xlYXIoKTsgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZCA9IDA7
IH0KICAgICB9OwogCiAgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3NlZ21lbnRzOwogICAgIFZlY3RvcjxDaGVja3BvaW50PiBtX2NoZWNrcG9pbnRz
OworCisgICAgLy8gTm90ZTogVGhlc2UgaW5kaWNpZXMgbWF5ID09PSB2ZWN0b3Iuc2l6ZSgpLCBp
biB3aGljaCBjYXNlIHRoZXJlIGFyZSBubyB2YWxpZCBjaGVja3BvaW50cy9zZWdtZW50cyBhdCB0
aGlzIHRpbWUuCisgICAgc2l6ZV90IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsKKyAgICBz
aXplX3QgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IDhhOGM1
OGNkZjk2ZWU3MjBmMGM2NzAxYjBkN2ZiNjQwNGI5ZWNlMmMuLjVkNDRmYjdiMjQyY2E3YWFjZDI1
MGRhNmFiZWI1YTEwOThhYmMzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTM5LDYgKzM5LDI2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gT24gYSBuZXR3b3JrIHdpdGggaGlnaCBsYXRlbmN5IGFuZCBo
aWdoIGJhbmR3aWR0aCwgdXNpbmcgYSBkZXZpY2UKKy8vIHdpdGggYSBmYXN0IENQVSwgd2UgY291
bGQgZW5kIHVwIHNwZWN1bGF0aXZlbHkgdG9rZW5pemluZworLy8gdGhlIHdob2xlIGRvY3VtZW50
LCB3ZWxsIGFoZWFkIG9mIHdoZW4gdGhlIG1haW4tdGhyZWFkIGFjdHVhbGx5IG5lZWRzIGl0Lgor
Ly8gVGhpcyBpcyBhIHdhc3RlIG9mIG1lbW9yeSAoYW5kIHBvdGVudGlhbGx5IHRpbWUgaWYgdGhl
IHNwZWN1bGF0aW9uIGZhaWxzKS4KKy8vIFNvIHdlIGxpbWl0IG91ciBvdXRzdGFuZGluZyBzcGVj
dWxhdGlvbnMgYXJiaXRyYXJpbHkgdG8gMTAuCisvLyBPdXIgbWF4aW1hbCBtZW1vcnkgc3BlbnQg
c3BlY3VsYXRpbmcgd2lsbCBiZSBhcHByb3hpbWF0ZWx5OgorLy8gb3V0c3RhbmRpbmdDaGVja3Bv
aW50TGltaXQgKiBwZW5kaW5nVG9rZW5MaW1pdCAqIHNpemVvZihDb21wYWN0VG9rZW4pCisvLyBX
ZSB1c2UgYSBzZXBhcmF0ZSBsb3cgYW5kIGhpZ2ggd2F0ZXIgbWFyayB0byBhdm9pZCBjb25zdGFu
dGx5IHRvcHBpbmcKKy8vIG9mZiB0aGUgbWFpbiB0aHJlYWQncyB0b2tlbiBidWZmZXIuCisvLyBU
aGVzZSBudW1iZXJzIGhhdmUgbm90IGJlZW4gdHVuZWQuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCA9IDEwOworc3RhdGljIGNvbnN0IHNpemVfdCBv
dXRzdGFuZGluZ0NoZWNrcG9pbnRTdGFydExpbWl0ID0gMzsKKworLy8gV2UgbGltaXQgb3VyIGNo
dWNrcyB0byAxMDAwIHRva2VucywgdG8gbWFrZSBzdXJlIHRoZSBtYWluCisvLyB0aHJlYWQgaXMg
bmV2ZXIgd2FpdGluZyBvbiB0aGUgcGFyc2VyIHRocmVhZCBmb3IgdG9rZW5zLgorLy8gVGhpcyB3
YXMgdHVuZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQw
OC4KK3N0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGltaXQgPSAxMDAwOworCit1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiAjaWZuZGVmIE5ERUJVRwogCiBzdGF0aWMgdm9pZCBj
aGVja1RoYXRUb2tlbnNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IENvbXBhY3RI
VE1MVG9rZW5TdHJlYW0qIHRva2VucykKQEAgLTU1LDggKzc1LDYgQEAgc3RhdGljIHZvaWQgY2hl
Y2tUaGF0UHJlbG9hZHNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFByZWxvYWRS
ZXF1ZXN0U3QKIAogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGlt
aXQgPSAxMDAwOwotCiBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJzZXIo
UGFzc1JlZlB0cjxXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPiA+IHJlZmVyZW5j
ZSwgUGFzc093blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCiAgICAgOiBtX3dlYWtGYWN0b3J5
KHJlZmVyZW5jZSwgdGhpcykKICAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikp
CkBAIC04OCw2ICsxMDYsMTQgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJv
bShQYXNzT3duUHRyPENoZWNrcG9pbnQ+IGNoZWNrcG9pbnQpCiAgICAgcHVtcFRva2VuaXplcigp
OwogfQogCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2tw
b2ludChIVE1MSW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKK3sKKyAgICAvLyBOb3Rl
LCB3ZSBzaG91bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFs
aWQKKyAgICAvLyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nl
c3NlZCBpbiBGSUZPIG9yZGVyLgorICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVm
b3JlKGlucHV0Q2hlY2twb2ludCk7CisgICAgcHVtcFRva2VuaXplcigpOworfQorCiB2b2lkIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQogewogICAgIG1hcmtFbmRPZkZpbGUoKTsKQEAg
LTExNiwxMCArMTQyLDE3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZp
bGUoKQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIHsKKyAg
ICAvLyBObyBuZWVkIHRvIHN0YXJ0IHNwZWN1bGF0aW5nIHVudGlsIHRoZSBtYWluIHRocmVhZCBp
cyBuZWFybHkgY2F1Z2h0IHVwLgorICAgIGlmIChtX2lucHV0Lm91dHN0YW5kaW5nQ2hlY2twb2lu
dENvdW50KCkgPiBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdGFydExpbWl0KQorICAgICAgICByZXR1
cm47CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQo
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7Ci0gICAgICAg
IGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4u
Z2V0KCkpKQorICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJy
ZW50KCksICptX3Rva2VuLmdldCgpKSkgeworICAgICAgICAgICAgLy8gV2UndmUgcmVhY2hlZCB0
aGUgZW5kIG9mIG91ciBjdXJyZW50IGlucHV0LgorICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFp
blRocmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgbV9zb3Vy
Y2VUcmFja2VyLmVuZChtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbml6ZXIuZ2V0KCksICptX3Rv
a2VuKTsKIAogICAgICAgICB7CkBAIC0xMzksMTEgKzE3MiwxMyBAQCB2b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIAogICAgICAgICBtX3Rva2VuLT5jbGVhcigpOwog
Ci0gICAgICAgIGlmICghbV90cmVlQnVpbGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRpbmdU
b2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+c2l6
ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQorICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11
bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgp
KSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkgewogICAg
ICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOworICAgICAgICAgICAgLy8gSWYgd2Un
cmUgZmFyIGFoZWFkIG9mIHRoZSBtYWluIHRocmVhZCwgeWllbGQgZm9yIGEgYml0IHRvIGF2b2lk
IGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuCisgICAgICAgICAgICBpZiAobV9pbnB1dC5vdXRz
dGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50U3RvcExpbWl0
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotCi0gICAgc2VuZFRv
a2Vuc1RvTWFpblRocmVhZCgpOwogfQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzZW5k
VG9rZW5zVG9NYWluVGhyZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4IGNhMDY3Y2ZkNWQ2OWJiZGRjY2RkNzZjOTVhMjY1
NDZkZjk5ZjhhNjYuLjI4MjFmYmZmMjgyMTIyMjNmNDAxMzBjNDhmNGE3YjNkMTUwM2ExM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
aApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3BvaW50Pik7CisgICAg
dm9pZCBzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50KTsKICAg
ICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgc3RvcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2YTNlMjlkMTQyODNi
YWM4ZDA5ZjE3MWY2YTk1NDY3NDllZTk0OTU0Li4xZWMzNTFjMDU5MzYxZTE1NDQ1ZWI2ZjIwNGU0
ZDYyNDMwNTdiMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTMyOCw4ICszMjgsMjAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25Q
dHI8UGEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUs
IGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6dmFs
aWRhdGVTcGVjdWxhdGlvbnMoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gY2h1bmspCiB7CisgICAg
QVNTRVJUKGNodW5rKTsKKyAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAg
IC8vIFdlJ3JlIHdhaXRpbmcgb24gYSBuZXR3b3JrIHNjcmlwdCwganVzdCBzYXZlIHRoZSBjaHVu
aywgd2UnbGwgZ2V0CisgICAgICAgIC8vIGEgc2Vjb25kIHZhbGlkYXRlU3BlY3VsYXRpb25zIGNh
bGwgYWZ0ZXIgdGhlIHNjcmlwdCBjb21wbGV0ZXMuCisgICAgICAgIC8vIFRoaXMgY2FsbCBzaG91
bGQgaGF2ZSBiZWVuIG1hZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgcnVuU2NyaXB0c0ZvclBhdXNlZFRy
ZWVCdWlsZGVyCisgICAgICAgIC8vIHdoaWNoIG1heSBoYXZlIHN0YXJ0ZWQgYSBuZXR3b3JrIGxv
YWQgYW5kIGxlZnQgdXMgd2FpdGluZy4KKyAgICAgICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9y
ZVNjcmlwdCk7CisgICAgICAgIG1fbGFzdENodW5rQmVmb3JlU2NyaXB0ID0gY2h1bms7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0
KTsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gdG9rZW5pemVyID0gbV90b2tlbml6ZXIucmVs
ZWFzZSgpOwogICAgIE93blB0cjxIVE1MVG9rZW4+IHRva2VuID0gbV90b2tlbi5yZWxlYXNlKCk7
CiAKQEAgLTMzOSwzMSArMzUxLDIzIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fY3Vy
cmVudENodW5rKSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1fY3VycmVudENodW5rLCB3
ZSBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uCi0gICAgICAgIC8v
IGZvciB0aGlzIGNodW5rLgotICAgICAgICAvLyBGSVhNRTogSW4gdGhpcyBjYXNlLCB3ZSdyZSBs
b3Npbmcgd2hhdGV2ZXIgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZQotICAgICAgICAvLyB3
ZSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDU0NgotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8g
Q3VycmVudGx5IHdlJ3JlIG9ubHkgc21hcnQgZW5vdWdoIHRvIHJldXNlIHRoZSBzcGVjdWxhdGlv
biBidWZmZXIgaWYgdGhlIHRva2VuaXplcgogICAgIC8vIGJvdGggc3RhcnRzIGFuZCBlbmRzIGlu
IHRoZSBEYXRhU3RhdGUuIFRoYXQgc3RhdGUgaXMgc2ltcGxlc3QgYmVjYXVzZSB0aGUgSFRNTFRv
a2VuCiAgICAgLy8gaXMgYWx3YXlzIGluIHRoZSBVbmluaXRpYWxpemVkIHN0YXRlLiBXZSBzaG91
bGQgY29uc2lkZXIgd2hldGhlciB3ZSBjYW4gcmV1c2UgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24g
YnVmZmVyIGluIG90aGVyIHN0YXRlcywgYnV0IHdlJ2QgbGlrZWx5IG5lZWQgdG8gZG8gc29tZXRo
aW5nIG1vcmUKICAgICAvLyBzb3BoaXN0aWNhdGVkIHdpdGggdGhlIEhUTUxUb2tlbi4KLSAgICBp
ZiAobV9jdXJyZW50Q2h1bmstPnRva2VuaXplclN0YXRlID09IEhUTUxUb2tlbml6ZXI6OkRhdGFT
dGF0ZQorICAgIGlmIChjaHVuay0+dG9rZW5pemVyU3RhdGUgPT0gSFRNTFRva2VuaXplcjo6RGF0
YVN0YXRlCiAgICAgICAgICYmIHRva2VuaXplci0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpE
YXRhU3RhdGUKICAgICAgICAgJiYgbV9pbnB1dC5jdXJyZW50KCkuaXNFbXB0eSgpCi0gICAgICAg
ICYmIG1fY3VycmVudENodW5rLT50cmVlQnVpbGRlclN0YXRlID09IEhUTUxUcmVlQnVpbGRlclNp
bXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5nZXQoKSkpIHsKKyAgICAgICAgJiYgY2h1
bmstPnRyZWVCdWlsZGVyU3RhdGUgPT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZv
cihtX3RyZWVCdWlsZGVyLmdldCgpKSkgewogICAgICAgICBBU1NFUlQodG9rZW4tPmlzVW5pbml0
aWFsaXplZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZEZhaWxTcGVjdWxh
dGlvbih0b2tlbi5yZWxlYXNlKCksIHRva2VuaXplci5yZWxlYXNlKCkpOworICAgIGRpc2NhcmRT
cGVjdWxhdGlvbnNBbmRSZXN1bWVGcm9tKGNodW5rLCB0b2tlbi5yZWxlYXNlKCksIHRva2VuaXpl
ci5yZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1
bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5p
emVyPiB0b2tlbml6ZXIpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlzY2FyZFNwZWN1bGF0
aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFzdENodW5rQmVmb3Jl
U2NyaXB0LCBQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRNTFRva2Vu
aXplcj4gdG9rZW5pemVyKQogewogICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7CiAgICAg
bV9zcGVjdWxhdGlvbnMuY2xlYXIoKTsKQEAgLTM3MywzMCArMzc3LDMxIEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRv
a2VuLCBQYXNzT3duCiAgICAgY2hlY2twb2ludC0+dG9rZW4gPSB0b2tlbjsKICAgICBjaGVja3Bv
aW50LT50b2tlbml6ZXIgPSB0b2tlbml6ZXI7CiAgICAgY2hlY2twb2ludC0+dHJlZUJ1aWxkZXJT
dGF0ZSA9IEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5n
ZXQoKSk7Ci0gICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbV9jdXJyZW50Q2h1bmst
PmlucHV0Q2hlY2twb2ludDsKLSAgICBjaGVja3BvaW50LT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50OworICAgIGNoZWNr
cG9pbnQtPmlucHV0Q2hlY2twb2ludCA9IGxhc3RDaHVua0JlZm9yZVNjcmlwdC0+aW5wdXRDaGVj
a3BvaW50OworICAgIGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IGxhc3RD
aHVua0JlZm9yZVNjcmlwdC0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50OwogICAgIGNoZWNrcG9p
bnQtPnVucGFyc2VkSW5wdXQgPSBtX2lucHV0LmN1cnJlbnQoKS50b1N0cmluZygpLmlzb2xhdGVk
Q29weSgpOwotICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50Q2h1
bmsuY2xlYXIoKTsKKyAgICBtX2lucHV0LmN1cnJlbnQoKS5jbGVhcigpOyAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFzc2VkIGluIGluc3RlYWQgb2YgY2xlYXJlZC4KIAogICAgIEFTU0VSVChj
aGVja3BvaW50LT51bnBhcnNlZElucHV0LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsK
ICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnJlc3VtZUZyb20sIG1fYmFja2dyb3VuZFBhcnNlciwgY2hlY2twb2ludC5y
ZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRD
aHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKQor
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IHBvcENodW5rKQogewogICAgIC8vIEFTU0VS
VCB0aGF0IHRoaXMgb2JqZWN0IGlzIGJvdGggYXR0YWNoZWQgdG8gdGhlIERvY3VtZW50IGFuZCBw
cm90ZWN0ZWQuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgPj0gMik7CiAgICAgQVNTRVJUKHNob3Vs
ZFVzZVRocmVhZGluZygpKTsKICAgICBBU1NFUlQoIW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQo
IW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAg
QWN0aXZlUGFyc2VyU2Vzc2lvbiBzZXNzaW9uKGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpKTsK
KyAgICBPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKHBvcENodW5rKTsKKyAgICBPd25QdHI8Q29t
cGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gY2h1bmstPnRva2Vucy5yZWxlYXNlKCk7CiAK
LSAgICBtX2N1cnJlbnRDaHVuayA9IGNodW5rOwotICAgIE93blB0cjxDb21wYWN0SFRNTFRva2Vu
U3RyZWFtPiB0b2tlbnMgPSBtX2N1cnJlbnRDaHVuay0+dG9rZW5zLnJlbGVhc2UoKTsKKyAgICBI
VE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQ
YXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50LCBtX2JhY2tncm91bmRQYXJzZXIsIGNo
dW5rLT5pbnB1dENoZWNrcG9pbnQpKTsKIAotICAgIGZvciAoWFNTSW5mb1N0cmVhbTo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuYmVnaW4oKTsgaXQgIT0gbV9j
dXJyZW50Q2h1bmstPnhzc0luZm9zLmVuZCgpOyArK2l0KSB7CisgICAgZm9yIChYU1NJbmZvU3Ry
ZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IGNodW5rLT54c3NJbmZvcy5iZWdpbigpOyBpdCAhPSBj
aHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsKICAgICAgICAgbV90ZXh0UG9zaXRpb24gPSAo
Kml0KS0+bV90ZXh0UG9zaXRpb247CiAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJs
b2NrU2NyaXB0KCoqaXQpOyAKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQpAQCAtNDI4LDcgKzQz
Myw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdCArIDEgPT0gdG9rZW5zLT5lbmQoKSk7
IC8vIFRoZSA8L3NjcmlwdD4gaXMgYXNzdW1lZCB0byBiZSB0aGUgbGFzdCB0b2tlbiBvZiB0aGlz
IGJ1bmNoLgogICAgICAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7Ci0g
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOworICAgICAgICAgICAgdmFsaWRhdGVT
cGVjdWxhdGlvbnMoY2h1bmsucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKQEAgLTQ1NSw2ICs0NjAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBl
bmRpbmdTcGVjdWxhdGlvbnMoKQogICAgIC8vIG1fdG9rZW5pemVyIGFuZCBtX3Rva2VuIGRvbid0
IGhhdmUgc3RhdGUgdGhhdCBpbnZhbGlkYXRlcyBtX3NwZWN1bGF0aW9ucy4KICAgICBBU1NFUlQo
IW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0
Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAgLy8gRklYTUU6IFBhc3MgaW4gY3VycmVudCBpbnB1
dCBsZW5ndGguCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVudCgpLCBsaW5lTnVt
YmVyKCkuemVyb0Jhc2VkSW50KCkpOwpAQCAtNDY0LDEwICs0NzAsMTAgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICB3aGlsZSAoIW1fc3Bl
Y3VsYXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CiAKLSAgICAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKKyAgICAgICAgaWYgKGlzU3Rv
cHBlZCgpIHx8IGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lID4gcGFyc2VyVGltZUxpbWl0ICYm
ICFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkg
LSBzdGFydFRpbWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKICAgICAgICAgICAgIG1fcGFyc2VyU2No
ZWR1bGVyLT5zY2hlZHVsZUZvclJlc3VtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTg3Myw3ICs4NzksOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BB
UlNFUikKICAgICBpZiAobV9oYXZlQmFja2dyb3VuZFBhcnNlcikgewotICAgICAgICB2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpOworICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhtX2xhc3RDaHVu
a0JlZm9yZVNjcmlwdC5yZWxlYXNlKCkpOworICAgICAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVm
b3JlU2NyaXB0KTsKICAgICAgICAgLy8gcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3Vt
ZW50LAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5
ZXQuCiAgICAgICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4
IDYxMDA0ZTI3N2U4NDc3MDIzZGFiNTMzMDZmNTYxNzJiNWU5ZDJjM2MuLjFkYWVlZjNkYmY5ZmRk
MmY4MjgwYWY5MDNiNTgzZmJiYjliZGMxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tncm91
bmRQYXJzZXIoKTsKICAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7Ci0gICAgdm9pZCB2
YWxpZGF0ZVNwZWN1bGF0aW9ucygpOwotICAgIHZvaWQgZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NP
d25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CisgICAgdm9pZCB2
YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmspOwor
ICAgIHZvaWQgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJz
ZWRDaHVuaz4gbGFzdENodW5rLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRN
TFRva2VuaXplcj4pOwogICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogICAgIHZvaWQgcHVtcFBlbmRpbmdTcGVj
dWxhdGlvbnMoKTsKICNlbmRpZgpAQCAtMTk2LDcgKzE5Niw5IEBAIHByaXZhdGU6CiAgICAgWFNT
QXVkaXRvckRlbGVnYXRlIG1feHNzQXVkaXRvckRlbGVnYXRlOwogCiAjaWYgRU5BQkxFKFRIUkVB
REVEX0hUTUxfUEFSU0VSKQotICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1bms7
CisgICAgLy8gRklYTUU6IG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LCBtX3Rva2VuaXplciwgbV90
b2tlbiwgYW5kIG1faW5wdXQgc2hvdWxkIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RhdGUg
b2JqZWN0CisgICAgLy8gc28gdGhleSBjYW4gYmUgc2V0IGFuZCBjbGVhcmVkIHRvZ2V0aGVyIGFu
ZCBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzIHRvZ2V0aGVyLgorICAgIE93blB0cjxQYXJzZWRDaHVu
az4gbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQ7CiAgICAgRGVxdWU8T3duUHRyPFBhcnNlZENodW5r
PiA+IG1fc3BlY3VsYXRpb25zOwogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxEb2N1bWVudFBhcnNl
cj4gbV93ZWFrRmFjdG9yeTsKICAgICBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBtX2Jh
Y2tncm91bmRQYXJzZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNkYTZkYzRiYjc2MmI1ZTU2YWY4MzY0MWIzMDNhNDJm
MmZmZDIzNi4uNWMxNDRjMjhlNTExNTQ3MTA0MDUyMTA0Y2M5OTZmOWEzMWVmOGNkOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEzLTAzLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNlciBzaG91bGQgbGltaXQgc3BlY3VsYXRp
b24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgorCisgICAgICAgIFRlc3QgdGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NDYgZm9yIHRoZSB0aHJlYWRlZCBwYXJzZXIu
CisgICAgICAgIFBvcnRzIHVzaW5nIHRoZSBtYWluLXRocmVhZCBwYXJzZXIgYXJlIGV4cGVjdGVk
IHRvIGZhaWwgKEFTU0VSVCBpbiBEZWJ1ZykuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJl
Zm9yZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDMtMTMgIExpYW0gUXVp
bm4gIDxscXVpbm5AYmxhY2tiZXJyeS5jb20+CiAKICAgICAgICAgTmV3IHRlc3RzIHRvIGNoZWNr
IHRoYXQgWEhUTUwgZW50aXRpZXMgYXJlIHN1cHBvcnRlZCBpbiBYSFRNTCBNb2JpbGUgUHJvZmls
ZSAxLjEgYW5kIDEuMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWYyMmU5YTQzMWFkMDI3MjcxM2I3MWZkYzg3
OTQwMTZjOGVmMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2Rv
Y3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYyYmU5NjdiY2Q3Mzk1MDJhODk1YjAzNjdkMTk4MjZjMzFlYTAwZWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0
ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPGRpdiBpZD0idGVzdCI+PHNjcmlwdCBvbmJlZm9yZWxvYWQ9ImRvY3VtZW50Lndy
aXRlKCcmJykiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZG9jdW1lbnQud3JpdGUoJ2cnKTsi
Pjwvc2NyaXB0PnQ7PC9kaXY+Cis8c2NyaXB0PgordmFyIHRlc3REaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOwordGVzdERpdi50ZXh0Q29udGVudCA9ICh0ZXN0RGl2LnRleHRD
b250ZW50ID09ICc+JykgPyAiUEFTUyIgOiAoIkZBSUwgOiAiICsgdGVzdERpdi50ZXh0Q29udGVu
dCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggZGYwZWU0ZWJiNzhhMmMzMTRkZGE0NmE4NDRkOWU0Mzg1ZjA2YjYxMi4uN2VjMDI1OWU5
MzI3OWU1OTcwM2ExYzUwOGVhNDAyODk5MGNjYzczOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ4OSw3ICs0ODksOCBAQCB3ZWJraXQub3JnL2IvMTEw
Njk1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UuaHRtbCBb
IENyYXNoCiB3ZWJraXQub3JnL2IvMTEwNjk1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLXBsdWdpbi1hbGxvd2VkLmh0bWwgWyBDcmFzaCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xMTA2
OTUgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tcGx1Z2luLXByaXZhdGUtYnJvd3Np
bmctdG9nZ2xlZC1hbGxvd2VkLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzEx
MTQ0OSBbIERlYnVnIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0
bWwgWyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgRGVidWcgXSBmYXN0L3BhcnNlci9k
b2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEx
MDU0NiBbIERlYnVnIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHkt
YmVmb3JlLWxvYWQuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTEyMTUyIFsgRGVidWcg
XSBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgtZWxlbWVudHMuaHRtbCBbIENyYXNoIF0K
IHdlYmtpdC5vcmcvYi8xMTIxNTIgWyBEZWJ1ZyBdIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1o
aWRkZW4taGVhZC1zZWN0aW9uLmh0bWwgWyBDcmFzaCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQxNmZiZDZhZTZmNzFmYWVlZmU1ZTk1NWIyYTlkNGFk
YjYxYjY5N2MuLjlkMWU3ODZkN2EyZjcyZWViMTMxYWUwYjRiNWMwMmQ3MThiYjdiZjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDQ4LDcgKzE0NDgs
OCBAQCB3ZWJraXQub3JnL2IvMTExNTIxIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGlvbi1pbi1p
ZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1sIFsgQwogCiB3ZWJraXQub3JnL2IvMTExNjEzIHBsYXRm
b3JtL21hYy9mYXN0L3NwZWVjaHN5bnRoZXNpcy9zcGVlY2gtc3ludGhlc2lzLWNhbmNlbC5odG1s
IFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xMTA1NDYgZmFzdC9wYXJzZXIvZG9jdW1l
bnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0bWwgWyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2
IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1l
bnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbCBbIFNraXAgXQogCiB3ZWJr
aXQub3JnL2IvMTExNjQ3IHNwdXRuaWsvQ29uZm9ybWFuY2UvMDdfTGV4aWNhbF9Db252ZW50aW9u
cy83LjhfTGl0ZXJhbHMvNy44LjVfUmVndWxhcl9FeHByZXNzaW9uX0xpdGVyYWxzL1M3LjguNV9B
MS4xX1QyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMTE2NDcgc3B1dG5pay9Db25mb3Jt
YW5jZS8wN19MZXhpY2FsX0NvbnZlbnRpb25zLzcuOF9MaXRlcmFscy83LjguNV9SZWd1bGFyX0V4
cHJlc3Npb25fTGl0ZXJhbHMvUzcuOC41X0EyLjFfVDIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNWY4Y2ZiMDIzYmRmZWIzZDBiNzlm
NDYxNjRhMWZhMGNhN2Y3NTgxNi4uMDZjNTAwZjNlNjA2OTU3YWQ5MzQ1ZjViZWVlNmZlNTY4NjBh
YjU4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTAy
LDcgKzE5MDIsOCBAQCB3ZWJraXQub3JnL2IvMTA4NTA4IGZhc3QvY2FudmFzL2NhbnZhcy1jdXJy
ZW50UGF0aC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xMTEyOTAgZmFzdC9yZWdpb25z
L3NlYW1sZXNzLWlmcmFtZS1mbG93ZWQtaW50by1yZWdpb25zLmh0bWwgWyBTa2lwIF0KIAotd2Vi
a2l0Lm9yZy9iLzExMTQ0OSBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmln
aHRpbmctZW9mLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZh
c3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgU2tpcCBdCit3ZWJr
aXQub3JnL2IvMTEwNTQ2IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0
aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIFsgU2tpcCBdCiAKICMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gIwogIyBmYWlsaW5nIHNlY3VyaXR5IHRlc3RzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193019</attachid>
            <date>2013-03-13 16:25:07 -0700</date>
            <delta_ts>2013-03-13 23:29:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130313162104.patch</filename>
            <type>text/plain</type>
            <size>26337</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNjNjM3ZTMxZTIyYjRm
YjAwZjNhNTIxMGU1OGMzMDI0MzczYzdkOC4uZTc1ZWM4NjI3ZTI5ODVkOTgzM2I3ZWQ3MGM4Nzk5
NTA4NzA0NGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAzLTEzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAg
KEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAo
Q2hlY2twb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
OjpDaGVja3BvaW50Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6Q2hlY2twb2ludDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgorICAgICAgICAo
QmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlk
YXRlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3Vs
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisKIDIwMTMtMDMt
MTMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXBs
YWNlIHN0YXRpY19jYXN0cyB3aXRoIHRvKiBmdW5jdGlvbnMgZm9yIGRvY3VtZW50IHR5cGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmNwcAppbmRleCAxYzNmYmM0YTMzZTliNWY1ZGEzZTQzMGQ3YzM5MWIzMjJmMTFk
Nzg1Li4xOWE2MDMxMWE1MjJmZmQ3MzdlYzU2OTE4ZjIzZmM2NjljODllNzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmNwcApAQCAtMzIsNiArMzIsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCkKKyAgICA6IG1f
Zmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCgwKQorICAgICwgbV9maXJzdFZhbGlkU2VnbWVudElu
ZGV4KDApCiB7CiB9CiAKQEAgLTUzLDE3ICs1NSw0MCBAQCBIVE1MSW5wdXRDaGVja3BvaW50IEJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQoKQogICAgIHJldHVybiBj
aGVja3BvaW50OwogfQogCit2b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmludmFsaWRh
dGVDaGVja3BvaW50c0JlZm9yZShIVE1MSW5wdXRDaGVja3BvaW50IG5ld0ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXgpCit7CisgICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgg
PCBtX2NoZWNrcG9pbnRzLnNpemUoKSk7CisgICAgLy8gVGhlcmUgaXMgbm90aGluZyB0byBkbyBm
b3IgdGhlIGZpcnN0IHZhbGlkIGNoZWNrcG9pbnQuCisgICAgaWYgKG1fZmlyc3RWYWxpZENoZWNr
cG9pbnRJbmRleCA9PSBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4KQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQobmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA+IG1fZmlyc3RW
YWxpZENoZWNrcG9pbnRJbmRleCk7CisgICAgY29uc3QgQ2hlY2twb2ludCYgbGFzdEludmFsaWRD
aGVja3BvaW50ID0gbV9jaGVja3BvaW50c1tuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4IC0g
MV07CisKKyAgICBBU1NFUlQobV9maXJzdFZhbGlkU2VnbWVudEluZGV4IDw9IGxhc3RJbnZhbGlk
Q2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OyBpIDwgbGFzdEludmFsaWRDaGVja3Bv
aW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7ICsraSkKKyAgICAgICAgbV9zZWdt
ZW50c1tpXSA9IFN0cmluZygpOworICAgIG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA9IGxhc3RJ
bnZhbGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworCisgICAg
Zm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgaSA8IG5ld0ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXg7ICsraSkKKyAgICAgICAgbV9jaGVja3BvaW50c1tpXS5jbGVh
cigpOworICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IG5ld0ZpcnN0VmFsaWRDaGVj
a3BvaW50SW5kZXg7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5k
VG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgsIGNvbnN0IFN0cmluZyYgdW5w
YXJzZWRJbnB1dCkKIHsKICAgICBBU1NFUlQoY2hlY2twb2ludEluZGV4IDwgbV9jaGVja3BvaW50
cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hlY2twb2ludEluZGV4IGlzIGlu
dmFsaWQuCiAgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9IG1fY2hlY2twb2ludHNb
Y2hlY2twb2ludEluZGV4XTsKKyAgICBBU1NFUlQoIWNoZWNrcG9pbnQuaXNOdWxsKCkpOwogCiAg
ICAgYm9vbCBpc0Nsb3NlZCA9IG1fY3VycmVudC5pc0Nsb3NlZCgpOwogCiAgICAgbV9jdXJyZW50
ID0gY2hlY2twb2ludC5pbnB1dDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51
bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytp
KQorICAgIGZvciAoc2l6ZV90IGkgPSBjaGVja3BvaW50Lm51bWJlck9mU2VnbWVudHNBbHJlYWR5
QXBwZW5kZWQ7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9zZWdtZW50c1tpXS5pc051bGwoKSk7CiAgICAgICAgIG1fY3VycmVudC5hcHBlbmQoU2VnbWVu
dGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKyAgICB9CiAKICAgICBpZiAoIXVucGFyc2VkSW5w
dXQuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnQucHJlcGVuZChTZWdtZW50ZWRTdHJpbmco
dW5wYXJzZWRJbnB1dCkpOwpAQCAtNzUsNiArMTAwLDggQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtOjpyZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCwg
Y28KIAogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBtX2NoZWNrcG9pbnRzLmNsZWFyKCk7
CisgICAgbV9maXJzdFZhbGlkQ2hlY2twb2ludEluZGV4ID0gMDsKKyAgICBtX2ZpcnN0VmFsaWRT
ZWdtZW50SW5kZXggPSAwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKaW5kZXggYzcwYjA3MmNkNTQwYWUw
OWE2NjU0NDdiZGUxNjU3MjQyN2QzMzJlOC4uY2ViYTU2ZTM4ZGM0YTE2ZjM1OTIwNDAyODBiOGRh
NGE0ZGE5N2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4KICAg
ICBIVE1MSW5wdXRDaGVja3BvaW50IGNyZWF0ZUNoZWNrcG9pbnQoKTsKICAgICB2b2lkIHJld2lu
ZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQsIGNvbnN0IFN0cmluZyYgdW5wYXJzZWRJbnB1dCk7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCk7
CisKKyAgICBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2NoZWNrcG9pbnRzLnNpemUoKSAtIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsgfQog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBDaGVja3BvaW50IHsKQEAgLTU3LDExICs2MCwyMCBAQCBw
cml2YXRlOgogCiAgICAgICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dDsKICAgICAgICAgc2l6ZV90
IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQ7CisKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gaW5wdXQuaXNFbXB0eSgpICYmICFudW1i
ZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyB9CisjZW5kaWYKKyAgICAgICAgdm9pZCBjbGVh
cigpIHsgaW5wdXQuY2xlYXIoKTsgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZCA9IDA7
IH0KICAgICB9OwogCiAgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3NlZ21lbnRzOwogICAgIFZlY3RvcjxDaGVja3BvaW50PiBtX2NoZWNrcG9pbnRz
OworCisgICAgLy8gTm90ZTogVGhlc2UgaW5kaWNpZXMgbWF5ID09PSB2ZWN0b3Iuc2l6ZSgpLCBp
biB3aGljaCBjYXNlIHRoZXJlIGFyZSBubyB2YWxpZCBjaGVja3BvaW50cy9zZWdtZW50cyBhdCB0
aGlzIHRpbWUuCisgICAgc2l6ZV90IG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleDsKKyAgICBz
aXplX3QgbV9maXJzdFZhbGlkU2VnbWVudEluZGV4OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IDhhOGM1
OGNkZjk2ZWU3MjBmMGM2NzAxYjBkN2ZiNjQwNGI5ZWNlMmMuLjVkNDRmYjdiMjQyY2E3YWFjZDI1
MGRhNmFiZWI1YTEwOThhYmMzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTM5LDYgKzM5LDI2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gT24gYSBuZXR3b3JrIHdpdGggaGlnaCBsYXRlbmN5IGFuZCBo
aWdoIGJhbmR3aWR0aCwgdXNpbmcgYSBkZXZpY2UKKy8vIHdpdGggYSBmYXN0IENQVSwgd2UgY291
bGQgZW5kIHVwIHNwZWN1bGF0aXZlbHkgdG9rZW5pemluZworLy8gdGhlIHdob2xlIGRvY3VtZW50
LCB3ZWxsIGFoZWFkIG9mIHdoZW4gdGhlIG1haW4tdGhyZWFkIGFjdHVhbGx5IG5lZWRzIGl0Lgor
Ly8gVGhpcyBpcyBhIHdhc3RlIG9mIG1lbW9yeSAoYW5kIHBvdGVudGlhbGx5IHRpbWUgaWYgdGhl
IHNwZWN1bGF0aW9uIGZhaWxzKS4KKy8vIFNvIHdlIGxpbWl0IG91ciBvdXRzdGFuZGluZyBzcGVj
dWxhdGlvbnMgYXJiaXRyYXJpbHkgdG8gMTAuCisvLyBPdXIgbWF4aW1hbCBtZW1vcnkgc3BlbnQg
c3BlY3VsYXRpbmcgd2lsbCBiZSBhcHByb3hpbWF0ZWx5OgorLy8gb3V0c3RhbmRpbmdDaGVja3Bv
aW50TGltaXQgKiBwZW5kaW5nVG9rZW5MaW1pdCAqIHNpemVvZihDb21wYWN0VG9rZW4pCisvLyBX
ZSB1c2UgYSBzZXBhcmF0ZSBsb3cgYW5kIGhpZ2ggd2F0ZXIgbWFyayB0byBhdm9pZCBjb25zdGFu
dGx5IHRvcHBpbmcKKy8vIG9mZiB0aGUgbWFpbiB0aHJlYWQncyB0b2tlbiBidWZmZXIuCisvLyBU
aGVzZSBudW1iZXJzIGhhdmUgbm90IGJlZW4gdHVuZWQuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG91
dHN0YW5kaW5nQ2hlY2twb2ludFN0b3BMaW1pdCA9IDEwOworc3RhdGljIGNvbnN0IHNpemVfdCBv
dXRzdGFuZGluZ0NoZWNrcG9pbnRTdGFydExpbWl0ID0gMzsKKworLy8gV2UgbGltaXQgb3VyIGNo
dWNrcyB0byAxMDAwIHRva2VucywgdG8gbWFrZSBzdXJlIHRoZSBtYWluCisvLyB0aHJlYWQgaXMg
bmV2ZXIgd2FpdGluZyBvbiB0aGUgcGFyc2VyIHRocmVhZCBmb3IgdG9rZW5zLgorLy8gVGhpcyB3
YXMgdHVuZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQw
OC4KK3N0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGltaXQgPSAxMDAwOworCit1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiAjaWZuZGVmIE5ERUJVRwogCiBzdGF0aWMgdm9pZCBj
aGVja1RoYXRUb2tlbnNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IENvbXBhY3RI
VE1MVG9rZW5TdHJlYW0qIHRva2VucykKQEAgLTU1LDggKzc1LDYgQEAgc3RhdGljIHZvaWQgY2hl
Y2tUaGF0UHJlbG9hZHNBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFByZWxvYWRS
ZXF1ZXN0U3QKIAogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBzaXplX3QgcGVuZGluZ1Rva2VuTGlt
aXQgPSAxMDAwOwotCiBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJzZXIo
UGFzc1JlZlB0cjxXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPiA+IHJlZmVyZW5j
ZSwgUGFzc093blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCiAgICAgOiBtX3dlYWtGYWN0b3J5
KHJlZmVyZW5jZSwgdGhpcykKICAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikp
CkBAIC04OCw2ICsxMDYsMTQgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJv
bShQYXNzT3duUHRyPENoZWNrcG9pbnQ+IGNoZWNrcG9pbnQpCiAgICAgcHVtcFRva2VuaXplcigp
OwogfQogCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2tw
b2ludChIVE1MSW5wdXRDaGVja3BvaW50IGlucHV0Q2hlY2twb2ludCkKK3sKKyAgICAvLyBOb3Rl
LCB3ZSBzaG91bGQgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGluZGV4IGJlaW5nIGludmFs
aWQKKyAgICAvLyBhcyBtZXNzYWdlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGJlIHByb2Nl
c3NlZCBpbiBGSUZPIG9yZGVyLgorICAgIG1faW5wdXQuaW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVm
b3JlKGlucHV0Q2hlY2twb2ludCk7CisgICAgcHVtcFRva2VuaXplcigpOworfQorCiB2b2lkIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2goKQogewogICAgIG1hcmtFbmRPZkZpbGUoKTsKQEAg
LTExNiwxMCArMTQyLDE3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZp
bGUoKQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIHsKKyAg
ICAvLyBObyBuZWVkIHRvIHN0YXJ0IHNwZWN1bGF0aW5nIHVudGlsIHRoZSBtYWluIHRocmVhZCBp
cyBuZWFybHkgY2F1Z2h0IHVwLgorICAgIGlmIChtX2lucHV0Lm91dHN0YW5kaW5nQ2hlY2twb2lu
dENvdW50KCkgPiBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdGFydExpbWl0KQorICAgICAgICByZXR1
cm47CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQo
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7Ci0gICAgICAg
IGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4u
Z2V0KCkpKQorICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJy
ZW50KCksICptX3Rva2VuLmdldCgpKSkgeworICAgICAgICAgICAgLy8gV2UndmUgcmVhY2hlZCB0
aGUgZW5kIG9mIG91ciBjdXJyZW50IGlucHV0LgorICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFp
blRocmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgbV9zb3Vy
Y2VUcmFja2VyLmVuZChtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbml6ZXIuZ2V0KCksICptX3Rv
a2VuKTsKIAogICAgICAgICB7CkBAIC0xMzksMTEgKzE3MiwxMyBAQCB2b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIAogICAgICAgICBtX3Rva2VuLT5jbGVhcigpOwog
Ci0gICAgICAgIGlmICghbV90cmVlQnVpbGRlclNpbXVsYXRvci5zaW11bGF0ZShtX3BlbmRpbmdU
b2tlbnMtPmxhc3QoKSwgbV90b2tlbml6ZXIuZ2V0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+c2l6
ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQorICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11
bGF0b3Iuc2ltdWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgp
KSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkgewogICAg
ICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOworICAgICAgICAgICAgLy8gSWYgd2Un
cmUgZmFyIGFoZWFkIG9mIHRoZSBtYWluIHRocmVhZCwgeWllbGQgZm9yIGEgYml0IHRvIGF2b2lk
IGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuCisgICAgICAgICAgICBpZiAobV9pbnB1dC5vdXRz
dGFuZGluZ0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50U3RvcExpbWl0
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotCi0gICAgc2VuZFRv
a2Vuc1RvTWFpblRocmVhZCgpOwogfQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzZW5k
VG9rZW5zVG9NYWluVGhyZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4IGNhMDY3Y2ZkNWQ2OWJiZGRjY2RkNzZjOTVhMjY1
NDZkZjk5ZjhhNjYuLjI4MjFmYmZmMjgyMTIyMjNmNDAxMzBjNDhmNGE3YjNkMTUwM2ExM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
aApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3BvaW50Pik7CisgICAg
dm9pZCBzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVja3BvaW50KTsKICAg
ICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgc3RvcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2YTNlMjlkMTQyODNi
YWM4ZDA5ZjE3MWY2YTk1NDY3NDllZTk0OTU0Li4xZWMzNTFjMDU5MzYxZTE1NDQ1ZWI2ZjIwNGU0
ZDYyNDMwNTdiMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTMyOCw4ICszMjgsMjAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25Q
dHI8UGEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUs
IGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6dmFs
aWRhdGVTcGVjdWxhdGlvbnMoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gY2h1bmspCiB7CisgICAg
QVNTRVJUKGNodW5rKTsKKyAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CisgICAgICAg
IC8vIFdlJ3JlIHdhaXRpbmcgb24gYSBuZXR3b3JrIHNjcmlwdCwganVzdCBzYXZlIHRoZSBjaHVu
aywgd2UnbGwgZ2V0CisgICAgICAgIC8vIGEgc2Vjb25kIHZhbGlkYXRlU3BlY3VsYXRpb25zIGNh
bGwgYWZ0ZXIgdGhlIHNjcmlwdCBjb21wbGV0ZXMuCisgICAgICAgIC8vIFRoaXMgY2FsbCBzaG91
bGQgaGF2ZSBiZWVuIG1hZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgcnVuU2NyaXB0c0ZvclBhdXNlZFRy
ZWVCdWlsZGVyCisgICAgICAgIC8vIHdoaWNoIG1heSBoYXZlIHN0YXJ0ZWQgYSBuZXR3b3JrIGxv
YWQgYW5kIGxlZnQgdXMgd2FpdGluZy4KKyAgICAgICAgQVNTRVJUKCFtX2xhc3RDaHVua0JlZm9y
ZVNjcmlwdCk7CisgICAgICAgIG1fbGFzdENodW5rQmVmb3JlU2NyaXB0ID0gY2h1bms7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0
KTsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gdG9rZW5pemVyID0gbV90b2tlbml6ZXIucmVs
ZWFzZSgpOwogICAgIE93blB0cjxIVE1MVG9rZW4+IHRva2VuID0gbV90b2tlbi5yZWxlYXNlKCk7
CiAKQEAgLTMzOSwzMSArMzUxLDIzIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fY3Vy
cmVudENodW5rKSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1fY3VycmVudENodW5rLCB3
ZSBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uCi0gICAgICAgIC8v
IGZvciB0aGlzIGNodW5rLgotICAgICAgICAvLyBGSVhNRTogSW4gdGhpcyBjYXNlLCB3ZSdyZSBs
b3Npbmcgd2hhdGV2ZXIgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZQotICAgICAgICAvLyB3
ZSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDU0NgotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8g
Q3VycmVudGx5IHdlJ3JlIG9ubHkgc21hcnQgZW5vdWdoIHRvIHJldXNlIHRoZSBzcGVjdWxhdGlv
biBidWZmZXIgaWYgdGhlIHRva2VuaXplcgogICAgIC8vIGJvdGggc3RhcnRzIGFuZCBlbmRzIGlu
IHRoZSBEYXRhU3RhdGUuIFRoYXQgc3RhdGUgaXMgc2ltcGxlc3QgYmVjYXVzZSB0aGUgSFRNTFRv
a2VuCiAgICAgLy8gaXMgYWx3YXlzIGluIHRoZSBVbmluaXRpYWxpemVkIHN0YXRlLiBXZSBzaG91
bGQgY29uc2lkZXIgd2hldGhlciB3ZSBjYW4gcmV1c2UgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24g
YnVmZmVyIGluIG90aGVyIHN0YXRlcywgYnV0IHdlJ2QgbGlrZWx5IG5lZWQgdG8gZG8gc29tZXRo
aW5nIG1vcmUKICAgICAvLyBzb3BoaXN0aWNhdGVkIHdpdGggdGhlIEhUTUxUb2tlbi4KLSAgICBp
ZiAobV9jdXJyZW50Q2h1bmstPnRva2VuaXplclN0YXRlID09IEhUTUxUb2tlbml6ZXI6OkRhdGFT
dGF0ZQorICAgIGlmIChjaHVuay0+dG9rZW5pemVyU3RhdGUgPT0gSFRNTFRva2VuaXplcjo6RGF0
YVN0YXRlCiAgICAgICAgICYmIHRva2VuaXplci0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpE
YXRhU3RhdGUKICAgICAgICAgJiYgbV9pbnB1dC5jdXJyZW50KCkuaXNFbXB0eSgpCi0gICAgICAg
ICYmIG1fY3VycmVudENodW5rLT50cmVlQnVpbGRlclN0YXRlID09IEhUTUxUcmVlQnVpbGRlclNp
bXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5nZXQoKSkpIHsKKyAgICAgICAgJiYgY2h1
bmstPnRyZWVCdWlsZGVyU3RhdGUgPT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxhdG9yOjpzdGF0ZUZv
cihtX3RyZWVCdWlsZGVyLmdldCgpKSkgewogICAgICAgICBBU1NFUlQodG9rZW4tPmlzVW5pbml0
aWFsaXplZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpZEZhaWxTcGVjdWxh
dGlvbih0b2tlbi5yZWxlYXNlKCksIHRva2VuaXplci5yZWxlYXNlKCkpOworICAgIGRpc2NhcmRT
cGVjdWxhdGlvbnNBbmRSZXN1bWVGcm9tKGNodW5rLCB0b2tlbi5yZWxlYXNlKCksIHRva2VuaXpl
ci5yZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1
bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5p
emVyPiB0b2tlbml6ZXIpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlzY2FyZFNwZWN1bGF0
aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFzdENodW5rQmVmb3Jl
U2NyaXB0LCBQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRNTFRva2Vu
aXplcj4gdG9rZW5pemVyKQogewogICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7CiAgICAg
bV9zcGVjdWxhdGlvbnMuY2xlYXIoKTsKQEAgLTM3MywzMCArMzc3LDMxIEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+IHRv
a2VuLCBQYXNzT3duCiAgICAgY2hlY2twb2ludC0+dG9rZW4gPSB0b2tlbjsKICAgICBjaGVja3Bv
aW50LT50b2tlbml6ZXIgPSB0b2tlbml6ZXI7CiAgICAgY2hlY2twb2ludC0+dHJlZUJ1aWxkZXJT
dGF0ZSA9IEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5n
ZXQoKSk7Ci0gICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbV9jdXJyZW50Q2h1bmst
PmlucHV0Q2hlY2twb2ludDsKLSAgICBjaGVja3BvaW50LT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9p
bnQgPSBtX2N1cnJlbnRDaHVuay0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50OworICAgIGNoZWNr
cG9pbnQtPmlucHV0Q2hlY2twb2ludCA9IGxhc3RDaHVua0JlZm9yZVNjcmlwdC0+aW5wdXRDaGVj
a3BvaW50OworICAgIGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludCA9IGxhc3RD
aHVua0JlZm9yZVNjcmlwdC0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50OwogICAgIGNoZWNrcG9p
bnQtPnVucGFyc2VkSW5wdXQgPSBtX2lucHV0LmN1cnJlbnQoKS50b1N0cmluZygpLmlzb2xhdGVk
Q29weSgpOwotICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50Q2h1
bmsuY2xlYXIoKTsKKyAgICBtX2lucHV0LmN1cnJlbnQoKS5jbGVhcigpOyAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFzc2VkIGluIGluc3RlYWQgb2YgY2xlYXJlZC4KIAogICAgIEFTU0VSVChj
aGVja3BvaW50LT51bnBhcnNlZElucHV0LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsK
ICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnJlc3VtZUZyb20sIG1fYmFja2dyb3VuZFBhcnNlciwgY2hlY2twb2ludC5y
ZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRD
aHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKQor
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5k
UGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IHBvcENodW5rKQogewogICAgIC8vIEFTU0VS
VCB0aGF0IHRoaXMgb2JqZWN0IGlzIGJvdGggYXR0YWNoZWQgdG8gdGhlIERvY3VtZW50IGFuZCBw
cm90ZWN0ZWQuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgPj0gMik7CiAgICAgQVNTRVJUKHNob3Vs
ZFVzZVRocmVhZGluZygpKTsKICAgICBBU1NFUlQoIW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQo
IW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAg
QWN0aXZlUGFyc2VyU2Vzc2lvbiBzZXNzaW9uKGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpKTsK
KyAgICBPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKHBvcENodW5rKTsKKyAgICBPd25QdHI8Q29t
cGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gY2h1bmstPnRva2Vucy5yZWxlYXNlKCk7CiAK
LSAgICBtX2N1cnJlbnRDaHVuayA9IGNodW5rOwotICAgIE93blB0cjxDb21wYWN0SFRNTFRva2Vu
U3RyZWFtPiB0b2tlbnMgPSBtX2N1cnJlbnRDaHVuay0+dG9rZW5zLnJlbGVhc2UoKTsKKyAgICBI
VE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQ
YXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50LCBtX2JhY2tncm91bmRQYXJzZXIsIGNo
dW5rLT5pbnB1dENoZWNrcG9pbnQpKTsKIAotICAgIGZvciAoWFNTSW5mb1N0cmVhbTo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuYmVnaW4oKTsgaXQgIT0gbV9j
dXJyZW50Q2h1bmstPnhzc0luZm9zLmVuZCgpOyArK2l0KSB7CisgICAgZm9yIChYU1NJbmZvU3Ry
ZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IGNodW5rLT54c3NJbmZvcy5iZWdpbigpOyBpdCAhPSBj
aHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsKICAgICAgICAgbV90ZXh0UG9zaXRpb24gPSAo
Kml0KS0+bV90ZXh0UG9zaXRpb247CiAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJs
b2NrU2NyaXB0KCoqaXQpOyAKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQpAQCAtNDI4LDcgKzQz
Myw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdCArIDEgPT0gdG9rZW5zLT5lbmQoKSk7
IC8vIFRoZSA8L3NjcmlwdD4gaXMgYXNzdW1lZCB0byBiZSB0aGUgbGFzdCB0b2tlbiBvZiB0aGlz
IGJ1bmNoLgogICAgICAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7Ci0g
ICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOworICAgICAgICAgICAgdmFsaWRhdGVT
cGVjdWxhdGlvbnMoY2h1bmsucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKQEAgLTQ1NSw2ICs0NjAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFBl
bmRpbmdTcGVjdWxhdGlvbnMoKQogICAgIC8vIG1fdG9rZW5pemVyIGFuZCBtX3Rva2VuIGRvbid0
IGhhdmUgc3RhdGUgdGhhdCBpbnZhbGlkYXRlcyBtX3NwZWN1bGF0aW9ucy4KICAgICBBU1NFUlQo
IW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0
Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAgLy8gRklYTUU6IFBhc3MgaW4gY3VycmVudCBpbnB1
dCBsZW5ndGguCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVudCgpLCBsaW5lTnVt
YmVyKCkuemVyb0Jhc2VkSW50KCkpOwpAQCAtNDY0LDEwICs0NzAsMTAgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICB3aGlsZSAoIW1fc3Bl
Y3VsYXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CiAKLSAgICAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKKyAgICAgICAgaWYgKGlzU3Rv
cHBlZCgpIHx8IGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lID4gcGFyc2VyVGltZUxpbWl0ICYm
ICFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRUaW1lKCkg
LSBzdGFydFRpbWUgPiBwYXJzZXJUaW1lTGltaXQpIHsKICAgICAgICAgICAgIG1fcGFyc2VyU2No
ZWR1bGVyLT5zY2hlZHVsZUZvclJlc3VtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTg3Myw3ICs4NzksOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BB
UlNFUikKICAgICBpZiAobV9oYXZlQmFja2dyb3VuZFBhcnNlcikgewotICAgICAgICB2YWxpZGF0
ZVNwZWN1bGF0aW9ucygpOworICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhtX2xhc3RDaHVu
a0JlZm9yZVNjcmlwdC5yZWxlYXNlKCkpOworICAgICAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVm
b3JlU2NyaXB0KTsKICAgICAgICAgLy8gcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3Vt
ZW50LAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5
ZXQuCiAgICAgICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4
IDYxMDA0ZTI3N2U4NDc3MDIzZGFiNTMzMDZmNTYxNzJiNWU5ZDJjM2MuLjFkYWVlZjNkYmY5ZmRk
MmY4MjgwYWY5MDNiNTgzZmJiYjliZGMxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tncm91
bmRQYXJzZXIoKTsKICAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7Ci0gICAgdm9pZCB2
YWxpZGF0ZVNwZWN1bGF0aW9ucygpOwotICAgIHZvaWQgZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NP
d25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CisgICAgdm9pZCB2
YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmspOwor
ICAgIHZvaWQgZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJz
ZWRDaHVuaz4gbGFzdENodW5rLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRN
TFRva2VuaXplcj4pOwogICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogICAgIHZvaWQgcHVtcFBlbmRpbmdTcGVj
dWxhdGlvbnMoKTsKICNlbmRpZgpAQCAtMTk2LDcgKzE5Niw5IEBAIHByaXZhdGU6CiAgICAgWFNT
QXVkaXRvckRlbGVnYXRlIG1feHNzQXVkaXRvckRlbGVnYXRlOwogCiAjaWYgRU5BQkxFKFRIUkVB
REVEX0hUTUxfUEFSU0VSKQotICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1bms7
CisgICAgLy8gRklYTUU6IG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LCBtX3Rva2VuaXplciwgbV90
b2tlbiwgYW5kIG1faW5wdXQgc2hvdWxkIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RhdGUg
b2JqZWN0CisgICAgLy8gc28gdGhleSBjYW4gYmUgc2V0IGFuZCBjbGVhcmVkIHRvZ2V0aGVyIGFu
ZCBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzIHRvZ2V0aGVyLgorICAgIE93blB0cjxQYXJzZWRDaHVu
az4gbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQ7CiAgICAgRGVxdWU8T3duUHRyPFBhcnNlZENodW5r
PiA+IG1fc3BlY3VsYXRpb25zOwogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxEb2N1bWVudFBhcnNl
cj4gbV93ZWFrRmFjdG9yeTsKICAgICBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBtX2Jh
Y2tncm91bmRQYXJzZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNkYTZkYzRiYjc2MmI1ZTU2YWY4MzY0MWIzMDNhNDJm
MmZmZDIzNi4uNWMxNDRjMjhlNTExNTQ3MTA0MDUyMTA0Y2M5OTZmOWEzMWVmOGNkOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEzLTAzLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNlciBzaG91bGQgbGltaXQgc3BlY3VsYXRp
b24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgorCisgICAgICAgIFRlc3QgdGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NDYgZm9yIHRoZSB0aHJlYWRlZCBwYXJzZXIu
CisgICAgICAgIFBvcnRzIHVzaW5nIHRoZSBtYWluLXRocmVhZCBwYXJzZXIgYXJlIGV4cGVjdGVk
IHRvIGZhaWwgKEFTU0VSVCBpbiBEZWJ1ZykuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJl
Zm9yZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDMtMTMgIExpYW0gUXVp
bm4gIDxscXVpbm5AYmxhY2tiZXJyeS5jb20+CiAKICAgICAgICAgTmV3IHRlc3RzIHRvIGNoZWNr
IHRoYXQgWEhUTUwgZW50aXRpZXMgYXJlIHN1cHBvcnRlZCBpbiBYSFRNTCBNb2JpbGUgUHJvZmls
ZSAxLjEgYW5kIDEuMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWYyMmU5YTQzMWFkMDI3MjcxM2I3MWZkYzg3
OTQwMTZjOGVmMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2Rv
Y3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYyYmU5NjdiY2Q3Mzk1MDJhODk1YjAzNjdkMTk4MjZjMzFlYTAwZWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0
ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPGRpdiBpZD0idGVzdCI+PHNjcmlwdCBvbmJlZm9yZWxvYWQ9ImRvY3VtZW50Lndy
aXRlKCcmJykiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZG9jdW1lbnQud3JpdGUoJ2cnKTsi
Pjwvc2NyaXB0PnQ7PC9kaXY+Cis8c2NyaXB0PgordmFyIHRlc3REaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOwordGVzdERpdi50ZXh0Q29udGVudCA9ICh0ZXN0RGl2LnRleHRD
b250ZW50ID09ICc+JykgPyAiUEFTUyIgOiAoIkZBSUwgOiAiICsgdGVzdERpdi50ZXh0Q29udGVu
dCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2V4dGVy
bmFsLXNjcmlwdC1kb2N1bWVudC13cml0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3BhcnNlci9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE5MmNkMjgyMjI5OGFkZGQ2ZWEwNGQ1NWFkNGRhZjE4NDA1NGM3NjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9leHRlcm5hbC1zY3JpcHQtZG9jdW1l
bnQtd3JpdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCis8UEFTUz4gPC0gU2hvdWxk
IHNheSA8UEFTUz4gYmVmb3JlIHRoaXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVudC13cml0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9wYXJzZXIvZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjFkMzI2MTA5Y2Y2MDFlMmQ3ODg4ZDIyZjUwZWExYmMwZTU1ZTEwNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVudC13
cml0ZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUuanMiPjwvc2NyaXB0Pgor
PFBBU1M+IDwtIFNob3VsZCBzYXkgPFBBU1M+IGJlZm9yZSB0aGlzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZjBlZTRlYmI3OGEyYzMxNGRkYTQ2YTg0
NGQ5ZTQzODVmMDZiNjEyLi43ZWMwMjU5ZTkzMjc5ZTU5NzAzYTFjNTA4ZWE0MDI4OTkwY2NjNzM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDg5LDcg
KzQ4OSw4IEBAIHdlYmtpdC5vcmcvYi8xMTA2OTUgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tbG9jYWwtc3RvcmFnZS5odG1sIFsgQ3Jhc2gKIHdlYmtpdC5vcmcvYi8xMTA2OTUgaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tcGx1Z2luLWFsbG93ZWQuaHRtbCBbIENyYXNo
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzExMDY5NSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1wbHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLWFsbG93ZWQuaHRtbCBbIENyYXNo
IFBhc3MgXQogCi13ZWJraXQub3JnL2IvMTExNDQ5IFsgRGVidWcgXSBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1
NDYgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgRGVidWcgXSBmYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIFsgU2tpcCBdCiAKIHdl
YmtpdC5vcmcvYi8xMTIxNTIgWyBEZWJ1ZyBdIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0
aC1lbGVtZW50cy5odG1sIFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzExMjE1MiBbIERlYnVnIF0g
YWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbCBbIENyYXNo
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDE2ZmJk
NmFlNmY3MWZhZWVmZTVlOTU1YjJhOWQ0YWRiNjFiNjk3Yy4uOWQxZTc4NmQ3YTJmNzJlZWIxMzFh
ZTBiNGI1YzAyZDcxOGJiN2JmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTE0NDgsNyArMTQ0OCw4IEBAIHdlYmtpdC5vcmcvYi8xMTE1MjEgZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0aW9uLWluLWlmcmFtZS1yZW1vdmVkLWNyYXNoLmh0bWwgWyBDCiAK
IHdlYmtpdC5vcmcvYi8xMTE2MTMgcGxhdGZvcm0vbWFjL2Zhc3Qvc3BlZWNoc3ludGhlc2lzL3Nw
ZWVjaC1zeW50aGVzaXMtY2FuY2VsLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9i
LzExMDU0NiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENy
YXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50
LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsg
REVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUt
bG9hZC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xMTE2NDcgc3B1dG5pay9Db25mb3Jt
YW5jZS8wN19MZXhpY2FsX0NvbnZlbnRpb25zLzcuOF9MaXRlcmFscy83LjguNV9SZWd1bGFyX0V4
cHJlc3Npb25fTGl0ZXJhbHMvUzcuOC41X0ExLjFfVDIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzExMTY0NyBzcHV0bmlrL0NvbmZvcm1hbmNlLzA3X0xleGljYWxfQ29udmVudGlvbnMvNy44
X0xpdGVyYWxzLzcuOC41X1JlZ3VsYXJfRXhwcmVzc2lvbl9MaXRlcmFscy9TNy44LjVfQTIuMV9U
Mi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA1ZjhjZmIwMjNiZGZlYjNkMGI3OWY0NjE2NGExZmEwY2E3Zjc1ODE2Li4wNmM1MDBmM2U2
MDY5NTdhZDkzNDVmNWJlZWU2ZmU1Njg2MGFiNThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE5MDIsNyArMTkwMiw4IEBAIHdlYmtpdC5vcmcvYi8xMDg1
MDggZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRQYXRoLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0
Lm9yZy9iLzExMTI5MCBmYXN0L3JlZ2lvbnMvc2VhbWxlc3MtaWZyYW1lLWZsb3dlZC1pbnRvLXJl
Z2lvbnMuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTExNDQ5IFsgREVCVUcgXSBmYXN0
L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIFNraXAgXQord2Via2l0
Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRp
bmctZW9mLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3Qv
cGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgWyBT
a2lwIF0KIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgc2VjdXJpdHkgdGVz
dHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193072</attachid>
            <date>2013-03-13 23:29:13 -0700</date>
            <delta_ts>2013-03-14 02:07:09 -0700</delta_ts>
            <desc>Fixed one test, but still breaks 2 inspector tests somehow</desc>
            <filename>bug-112069-20130313232514.patch</filename>
            <type>text/plain</type>
            <size>26391</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVjMGI4MjAzZDQyYWFi
Y2M1NDJmM2M1N2FmYjI2N2Y3NmM1ZTYxOS4uOTI5ZjM2NGJkMTJjYzNlYWYxZDA5ODBiM2JjNzU4
YjFlYmJmMGVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAzLTEzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIHN0YXJ0L3N0b3Agc3BlY3VsYXRpbmcgbGltaXRz
IGhhdmUgbm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3
ZSBzaG91bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBm
b3IKKyAgICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bTo6aW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAg
KEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAo
Q2hlY2twb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
OjpDaGVja3BvaW50Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6Q2hlY2twb2ludDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgorICAgICAgICAo
QmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlk
YXRlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlzY2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3Vs
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFy
c2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisKIDIwMTMtMDMt
MTMgIEJydW5vIGRlIE9saXZlaXJhIEFiaW5hZGVyICA8YnJ1bm8uYWJpbmFkZXJAYmFzeXNrb20u
Y29tPgogCiAgICAgICAgIFtjc3MzLXRleHRdIEFkZCBzdXBwb3J0IGZvciB0ZXh0LWRlY29yYXRp
b24tY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MSW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAKaW5kZXggMWMzZmJjNGEzM2U5YjVmNWRhM2U0MzBkN2Mz
OTFiMzIyZjExZDc4NS4uMTlhNjAzMTFhNTIyZmZkNzM3ZWM1NjkxOGYyM2ZjNjY5Yzg5ZTc5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSgp
CisgICAgOiBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgoMCkKKyAgICAsIG1fZmlyc3RWYWxp
ZFNlZ21lbnRJbmRleCgwKQogewogfQogCkBAIC01MywxNyArNTUsNDAgQEAgSFRNTElucHV0Q2hl
Y2twb2ludCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpjcmVhdGVDaGVja3BvaW50KCkKICAg
ICByZXR1cm4gY2hlY2twb2ludDsKIH0KIAordm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
OjppbnZhbGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCBuZXdGaXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2tw
b2ludEluZGV4IDwgbV9jaGVja3BvaW50cy5zaXplKCkpOworICAgIC8vIFRoZXJlIGlzIG5vdGhp
bmcgdG8gZG8gZm9yIHRoZSBmaXJzdCB2YWxpZCBjaGVja3BvaW50LgorICAgIGlmIChtX2ZpcnN0
VmFsaWRDaGVja3BvaW50SW5kZXggPT0gbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgg
PiBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOworICAgIGNvbnN0IENoZWNrcG9pbnQmIGxh
c3RJbnZhbGlkQ2hlY2twb2ludCA9IG1fY2hlY2twb2ludHNbbmV3Rmlyc3RWYWxpZENoZWNrcG9p
bnRJbmRleCAtIDFdOworCisgICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBs
YXN0SW52YWxpZENoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleDsgaSA8IGxhc3RJbnZh
bGlkQ2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyArK2kpCisgICAg
ICAgIG1fc2VnbWVudHNbaV0gPSBTdHJpbmcoKTsKKyAgICBtX2ZpcnN0VmFsaWRTZWdtZW50SW5k
ZXggPSBsYXN0SW52YWxpZENoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRl
ZDsKKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7IGkg
PCBuZXdGaXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OyArK2kpCisgICAgICAgIG1fY2hlY2twb2lu
dHNbaV0uY2xlYXIoKTsKKyAgICBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggPSBuZXdGaXJz
dFZhbGlkQ2hlY2twb2ludEluZGV4OworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJl
YW06OnJld2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4LCBjb25zdCBT
dHJpbmcmIHVucGFyc2VkSW5wdXQpCiB7CiAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA8IG1f
Y2hlY2twb2ludHMuc2l6ZSgpKTsgLy8gSWYgdGhpcyBBU1NFUlQgZmlyZXMsIGNoZWNrcG9pbnRJ
bmRleCBpcyBpbnZhbGlkLgogICAgIGNvbnN0IENoZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2No
ZWNrcG9pbnRzW2NoZWNrcG9pbnRJbmRleF07CisgICAgQVNTRVJUKCFjaGVja3BvaW50LmlzTnVs
bCgpKTsKIAogICAgIGJvb2wgaXNDbG9zZWQgPSBtX2N1cnJlbnQuaXNDbG9zZWQoKTsKIAogICAg
IG1fY3VycmVudCA9IGNoZWNrcG9pbnQuaW5wdXQ7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gY2hl
Y2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyBpIDwgbV9zZWdtZW50cy5z
aXplKCk7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gY2hlY2twb2ludC5udW1iZXJPZlNlZ21l
bnRzQWxyZWFkeUFwcGVuZGVkOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgICAg
ICBBU1NFUlQoIW1fc2VnbWVudHNbaV0uaXNOdWxsKCkpOwogICAgICAgICBtX2N1cnJlbnQuYXBw
ZW5kKFNlZ21lbnRlZFN0cmluZyhtX3NlZ21lbnRzW2ldKSk7CisgICAgfQogCiAgICAgaWYgKCF1
bnBhcnNlZElucHV0LmlzRW1wdHkoKSkKICAgICAgICAgbV9jdXJyZW50LnByZXBlbmQoU2VnbWVu
dGVkU3RyaW5nKHVucGFyc2VkSW5wdXQpKTsKQEAgLTc1LDYgKzEwMCw4IEBAIHZvaWQgQmFja2dy
b3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3Bv
aW50SW5kZXgsIGNvCiAKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgbV9jaGVja3BvaW50
cy5jbGVhcigpOworICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IDA7CisgICAgbV9m
aXJzdFZhbGlkU2VnbWVudEluZGV4ID0gMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCmluZGV4IGM3MGIw
NzJjZDU0MGFlMDlhNjY1NDQ3YmRlMTY1NzI0MjdkMzMyZTguLmNlYmE1NmUzOGRjNGExNmYzNTky
MDQwMjgwYjhkYTRhNGRhOTdiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVi
bGljOgogICAgIC8vIHBvaW50IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52YWxp
ZGF0ZWQuCiAgICAgSFRNTElucHV0Q2hlY2twb2ludCBjcmVhdGVDaGVja3BvaW50KCk7CiAgICAg
dm9pZCByZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50LCBjb25zdCBTdHJpbmcmIHVucGFyc2Vk
SW5wdXQpOworICAgIHZvaWQgaW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKEhUTUxJbnB1dENo
ZWNrcG9pbnQpOworCisgICAgc2l6ZV90IG91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9jaGVja3BvaW50cy5zaXplKCkgLSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50
SW5kZXg7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7CkBAIC01NywxMSAr
NjAsMjAgQEAgcHJpdmF0ZToKIAogICAgICAgICBTZWdtZW50ZWRTdHJpbmcgaW5wdXQ7CiAgICAg
ICAgIHNpemVfdCBudW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworCisjaWZuZGVmIE5E
RUJVRworICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGlucHV0LmlzRW1wdHko
KSAmJiAhbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgfQorI2VuZGlmCisgICAgICAg
IHZvaWQgY2xlYXIoKSB7IGlucHV0LmNsZWFyKCk7IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBw
ZW5kZWQgPSAwOyB9CiAgICAgfTsKIAogICAgIFNlZ21lbnRlZFN0cmluZyBtX2N1cnJlbnQ7CiAg
ICAgVmVjdG9yPFN0cmluZz4gbV9zZWdtZW50czsKICAgICBWZWN0b3I8Q2hlY2twb2ludD4gbV9j
aGVja3BvaW50czsKKworICAgIC8vIE5vdGU6IFRoZXNlIGluZGljaWVzIG1heSA9PT0gdmVjdG9y
LnNpemUoKSwgaW4gd2hpY2ggY2FzZSB0aGVyZSBhcmUgbm8gdmFsaWQgY2hlY2twb2ludHMvc2Vn
bWVudHMgYXQgdGhpcyB0aW1lLgorICAgIHNpemVfdCBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5k
ZXg7CisgICAgc2l6ZV90IG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApp
bmRleCA4YThjNThjZGY5NmVlNzIwZjBjNjcwMWIwZDdmYjY0MDRiOWVjZTJjLi41ZDQ0ZmI3YjI0
MmNhN2FhY2QyNTBkYTZhYmViNWExMDk4YWJjM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0zOSw2ICszOSwyNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3aXRoIGhpZ2ggbGF0
ZW5jeSBhbmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3aXRoIGEgZmFzdCBD
UFUsIHdlIGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcKKy8vIHRoZSB3aG9s
ZSBkb2N1bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVhZCBhY3R1YWxseSBu
ZWVkcyBpdC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBwb3RlbnRpYWxseSB0
aW1lIGlmIHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1pdCBvdXIgb3V0c3Rh
bmRpbmcgc3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3VyIG1heGltYWwgbWVt
b3J5IHNwZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToKKy8vIG91dHN0YW5k
aW5nQ2hlY2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXplb2YoQ29tcGFjdFRv
a2VuKQorLy8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVyIG1hcmsgdG8gYXZv
aWQgY29uc3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFkJ3MgdG9rZW4gYnVm
ZmVyLgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVkLgorc3RhdGljIGNvbnN0
IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRTdG9wTGltaXQgPSAxMDsKK3N0YXRpYyBjb25z
dCBzaXplX3Qgb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCA9IDM7CisKKy8vIFdlIGxp
bWl0IG91ciBjaHVja3MgdG8gMTAwMCB0b2tlbnMsIHRvIG1ha2Ugc3VyZSB0aGUgbWFpbgorLy8g
dGhyZWFkIGlzIG5ldmVyIHdhaXRpbmcgb24gdGhlIHBhcnNlciB0aHJlYWQgZm9yIHRva2Vucy4K
Ky8vIFRoaXMgd2FzIHR1bmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA0MDguCitzdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRpbmdUb2tlbkxpbWl0ID0gMTAw
MDsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogI2lmbmRlZiBOREVCVUcKIAogc3Rh
dGljIHZvaWQgY2hlY2tUaGF0VG9rZW5zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25z
dCBDb21wYWN0SFRNTFRva2VuU3RyZWFtKiB0b2tlbnMpCkBAIC01NSw4ICs3NSw2IEBAIHN0YXRp
YyB2b2lkIGNoZWNrVGhhdFByZWxvYWRzQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25z
dCBQcmVsb2FkUmVxdWVzdFN0CiAKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHBlbmRp
bmdUb2tlbkxpbWl0ID0gMTAwMDsKLQogQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91bmRI
VE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4g
PiByZWZlcmVuY2UsIFBhc3NPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmlnKQogICAgIDogbV93
ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAgICAgLCBtX3Rva2VuKGFkb3B0UHRyKG5ldyBI
VE1MVG9rZW4pKQpAQCAtODgsNiArMTA2LDE0IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3BvaW50PiBjaGVja3BvaW50KQogICAgIHB1bXBU
b2tlbml6ZXIoKTsKIH0KIAordm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RhcnRlZENodW5r
V2l0aENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2twb2ludCBpbnB1dENoZWNrcG9pbnQpCit7Cisg
ICAgLy8gTm90ZSwgd2Ugc2hvdWxkIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBpbmRleCBi
ZWluZyBpbnZhbGlkCisgICAgLy8gYXMgbWVzc2FnZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgd2ls
bCBiZSBwcm9jZXNzZWQgaW4gRklGTyBvcmRlci4KKyAgICBtX2lucHV0LmludmFsaWRhdGVDaGVj
a3BvaW50c0JlZm9yZShpbnB1dENoZWNrcG9pbnQpOworICAgIHB1bXBUb2tlbml6ZXIoKTsKK30K
Kwogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6ZmluaXNoKCkKIHsKICAgICBtYXJrRW5kT2ZG
aWxlKCk7CkBAIC0xMTYsMTAgKzE0MiwxNyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpt
YXJrRW5kT2ZGaWxlKCkKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXpl
cigpCiB7CisgICAgLy8gTm8gbmVlZCB0byBzdGFydCBzcGVjdWxhdGluZyB1bnRpbCB0aGUgbWFp
biB0aHJlYWQgaXMgbmVhcmx5IGNhdWdodCB1cC4KKyAgICBpZiAobV9pbnB1dC5vdXRzdGFuZGlu
Z0NoZWNrcG9pbnRDb3VudCgpID4gb3V0c3RhbmRpbmdDaGVja3BvaW50U3RhcnRMaW1pdCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgbV9zb3VyY2VUcmFj
a2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXplci5nZXQoKSwgKm1fdG9rZW4p
OwotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCks
ICptX3Rva2VuLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4dFRva2VuKG1f
aW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8vIFdlJ3Zl
IHJlYWNoZWQgdGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4KKyAgICAgICAgICAgIHNlbmRU
b2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdl
dCgpLCAqbV90b2tlbik7CiAKICAgICAgICAgewpAQCAtMTM5LDExICsxNzIsMTMgQEAgdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAKICAgICAgICAgbV90b2tlbi0+
Y2xlYXIoKTsKIAotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc2ltdWxhdGUo
bV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgpKSB8fCBtX3BlbmRpbmdU
b2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAgICAgICAgaWYgKCFtX3RyZWVC
dWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpLCBtX3Rva2Vu
aXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rva2VuTGlt
aXQpIHsKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKKyAgICAgICAgICAg
IC8vIElmIHdlJ3JlIGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJlYWQsIHlpZWxkIGZvciBhIGJp
dCB0byBhdm9pZCBjb25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5LgorICAgICAgICAgICAgaWYgKG1f
aW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91dHN0YW5kaW5nQ2hlY2twb2lu
dFN0b3BMaW1pdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KLQot
ICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKIH0KIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBh
cnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCBjYTA2N2NmZDVkNjliYmRkY2Nk
ZDc2Yzk1YTI2NTQ2ZGY5OWY4YTY2Li4yODIxZmJmZjI4MjEyMjIzZjQwMTMwYzQ4ZjRhN2IzZDE1
MDNhMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2lu
dD4pOworICAgIHZvaWQgc3RhcnRlZENodW5rV2l0aENoZWNrcG9pbnQoSFRNTElucHV0Q2hlY2tw
b2ludCk7CiAgICAgdm9pZCBmaW5pc2goKTsKICAgICB2b2lkIHN0b3AoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmEz
ZTI5ZDE0MjgzYmFjOGQwOWYxNzFmNmE5NTQ2NzQ5ZWU5NDk1NC4uOWVkYjE0YjY0YjcwNDBhMjk5
ZDk3YmNjZDc2YjMzMDZlYjEzMWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zMjgsOCArMzI4LDIwIEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpkaWRSZWNlaXZlUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNl
cihQYXNzT3duUHRyPFBhCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhU
TUwoY29va2llLCBsaW5lTnVtYmVyKCkuemVyb0Jhc2VkSW50KCkpOwogfQogCi12b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMoKQordm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnZhbGlkYXRlU3BlY3VsYXRpb25zKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5r
KQogeworICAgIEFTU0VSVChjaHVuayk7CisgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkg
eworICAgICAgICAvLyBXZSdyZSB3YWl0aW5nIG9uIGEgbmV0d29yayBzY3JpcHQsIGp1c3Qgc2F2
ZSB0aGUgY2h1bmssIHdlJ2xsIGdldAorICAgICAgICAvLyBhIHNlY29uZCB2YWxpZGF0ZVNwZWN1
bGF0aW9ucyBjYWxsIGFmdGVyIHRoZSBzY3JpcHQgY29tcGxldGVzLgorICAgICAgICAvLyBUaGlz
IGNhbGwgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIGltbWVkaWF0ZWx5IGFmdGVyIHJ1blNjcmlwdHNG
b3JQYXVzZWRUcmVlQnVpbGRlcgorICAgICAgICAvLyB3aGljaCBtYXkgaGF2ZSBzdGFydGVkIGEg
bmV0d29yayBsb2FkIGFuZCBsZWZ0IHVzIHdhaXRpbmcuCisgICAgICAgIEFTU0VSVCghbV9sYXN0
Q2h1bmtCZWZvcmVTY3JpcHQpOworICAgICAgICBtX2xhc3RDaHVua0JlZm9yZVNjcmlwdCA9IGNo
dW5rOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFtX2xhc3RDaHVua0Jl
Zm9yZVNjcmlwdCk7CiAgICAgT3duUHRyPEhUTUxUb2tlbml6ZXI+IHRva2VuaXplciA9IG1fdG9r
ZW5pemVyLnJlbGVhc2UoKTsKICAgICBPd25QdHI8SFRNTFRva2VuPiB0b2tlbiA9IG1fdG9rZW4u
cmVsZWFzZSgpOwogCkBAIC0zMzksMzEgKzM1MSwyMyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNl
cjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFtX2N1cnJlbnRDaHVuaykgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBtX2N1cnJl
bnRDaHVuaywgd2UgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIGRpZEZhaWxTcGVjdWxhdGlvbgot
ICAgICAgICAvLyBmb3IgdGhpcyBjaHVuay4KLSAgICAgICAgLy8gRklYTUU6IEluIHRoaXMgY2Fz
ZSwgd2UncmUgbG9zaW5nIHdoYXRldmVyIHN0YXRlIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UKLSAg
ICAgICAgLy8gd2UgY2FsbGVkIGRpZEZhaWxTcGVjdWxhdGlvbi4gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NDYKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQogICAgIC8vIEN1cnJlbnRseSB3ZSdyZSBvbmx5IHNtYXJ0IGVub3VnaCB0byByZXVzZSB0aGUg
c3BlY3VsYXRpb24gYnVmZmVyIGlmIHRoZSB0b2tlbml6ZXIKICAgICAvLyBib3RoIHN0YXJ0cyBh
bmQgZW5kcyBpbiB0aGUgRGF0YVN0YXRlLiBUaGF0IHN0YXRlIGlzIHNpbXBsZXN0IGJlY2F1c2Ug
dGhlIEhUTUxUb2tlbgogICAgIC8vIGlzIGFsd2F5cyBpbiB0aGUgVW5pbml0aWFsaXplZCBzdGF0
ZS4gV2Ugc2hvdWxkIGNvbnNpZGVyIHdoZXRoZXIgd2UgY2FuIHJldXNlIHRoZQogICAgIC8vIHNw
ZWN1bGF0aW9uIGJ1ZmZlciBpbiBvdGhlciBzdGF0ZXMsIGJ1dCB3ZSdkIGxpa2VseSBuZWVkIHRv
IGRvIHNvbWV0aGluZyBtb3JlCiAgICAgLy8gc29waGlzdGljYXRlZCB3aXRoIHRoZSBIVE1MVG9r
ZW4uCi0gICAgaWYgKG1fY3VycmVudENodW5rLT50b2tlbml6ZXJTdGF0ZSA9PSBIVE1MVG9rZW5p
emVyOjpEYXRhU3RhdGUKKyAgICBpZiAoY2h1bmstPnRva2VuaXplclN0YXRlID09IEhUTUxUb2tl
bml6ZXI6OkRhdGFTdGF0ZQogICAgICAgICAmJiB0b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRv
a2VuaXplcjo6RGF0YVN0YXRlCiAgICAgICAgICYmIG1faW5wdXQuY3VycmVudCgpLmlzRW1wdHko
KQotICAgICAgICAmJiBtX2N1cnJlbnRDaHVuay0+dHJlZUJ1aWxkZXJTdGF0ZSA9PSBIVE1MVHJl
ZUJ1aWxkZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJlZUJ1aWxkZXIuZ2V0KCkpKSB7CisgICAg
ICAgICYmIGNodW5rLT50cmVlQnVpbGRlclN0YXRlID09IEhUTUxUcmVlQnVpbGRlclNpbXVsYXRv
cjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5nZXQoKSkpIHsKICAgICAgICAgQVNTRVJUKHRva2Vu
LT5pc1VuaW5pdGlhbGl6ZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaWRG
YWlsU3BlY3VsYXRpb24odG9rZW4ucmVsZWFzZSgpLCB0b2tlbml6ZXIucmVsZWFzZSgpKTsKKyAg
ICBkaXNjYXJkU3BlY3VsYXRpb25zQW5kUmVzdW1lRnJvbShjaHVuaywgdG9rZW4ucmVsZWFzZSgp
LCB0b2tlbml6ZXIucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRp
ZEZhaWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8
SFRNTFRva2VuaXplcj4gdG9rZW5pemVyKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpc2Nh
cmRTcGVjdWxhdGlvbnNBbmRSZXN1bWVGcm9tKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGxhc3RD
aHVua0JlZm9yZVNjcmlwdCwgUGFzc093blB0cjxIVE1MVG9rZW4+IHRva2VuLCBQYXNzT3duUHRy
PEhUTUxUb2tlbml6ZXI+IHRva2VuaXplcikKIHsKICAgICBtX3dlYWtGYWN0b3J5LnJldm9rZUFs
bCgpOwogICAgIG1fc3BlY3VsYXRpb25zLmNsZWFyKCk7CkBAIC0zNzMsMzAgKzM3NywzMSBAQCB2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRN
TFRva2VuPiB0b2tlbiwgUGFzc093bgogICAgIGNoZWNrcG9pbnQtPnRva2VuID0gdG9rZW47CiAg
ICAgY2hlY2twb2ludC0+dG9rZW5pemVyID0gdG9rZW5pemVyOwogICAgIGNoZWNrcG9pbnQtPnRy
ZWVCdWlsZGVyU3RhdGUgPSBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3I6OnN0YXRlRm9yKG1fdHJl
ZUJ1aWxkZXIuZ2V0KCkpOwotICAgIGNoZWNrcG9pbnQtPmlucHV0Q2hlY2twb2ludCA9IG1fY3Vy
cmVudENodW5rLT5pbnB1dENoZWNrcG9pbnQ7Ci0gICAgY2hlY2twb2ludC0+cHJlbG9hZFNjYW5u
ZXJDaGVja3BvaW50ID0gbV9jdXJyZW50Q2h1bmstPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludDsK
KyAgICBjaGVja3BvaW50LT5pbnB1dENoZWNrcG9pbnQgPSBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQt
PmlucHV0Q2hlY2twb2ludDsKKyAgICBjaGVja3BvaW50LT5wcmVsb2FkU2Nhbm5lckNoZWNrcG9p
bnQgPSBsYXN0Q2h1bmtCZWZvcmVTY3JpcHQtPnByZWxvYWRTY2FubmVyQ2hlY2twb2ludDsKICAg
ICBjaGVja3BvaW50LT51bnBhcnNlZElucHV0ID0gbV9pbnB1dC5jdXJyZW50KCkudG9TdHJpbmco
KS5pc29sYXRlZENvcHkoKTsKLSAgICBtX2lucHV0LmN1cnJlbnQoKS5jbGVhcigpOwotICAgIG1f
Y3VycmVudENodW5rLmNsZWFyKCk7CisgICAgbV9pbnB1dC5jdXJyZW50KCkuY2xlYXIoKTsgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhc3NlZCBpbiBpbnN0ZWFkIG9mIGNsZWFyZWQuCiAKICAg
ICBBU1NFUlQoY2hlY2twb2ludC0+dW5wYXJzZWRJbnB1dC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKSk7CiAgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVkKCktPnBvc3RUYXNrKGJpbmQo
JkJhY2tncm91bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tLCBtX2JhY2tncm91bmRQYXJzZXIsIGNo
ZWNrcG9pbnQucmVsZWFzZSgpKSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9j
ZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5r
PiBjaHVuaykKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9t
QmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPiBwb3BDaHVuaykKIHsKICAg
ICAvLyBBU1NFUlQgdGhhdCB0aGlzIG9iamVjdCBpcyBib3RoIGF0dGFjaGVkIHRvIHRoZSBEb2N1
bWVudCBhbmQgcHJvdGVjdGVkLgogICAgIEFTU0VSVChyZWZDb3VudCgpID49IDIpOwogICAgIEFT
U0VSVChzaG91bGRVc2VUaHJlYWRpbmcoKSk7CiAgICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CiAg
ICAgQVNTRVJUKCFtX3Rva2VuKTsKKyAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0
KTsKIAogICAgIEFjdGl2ZVBhcnNlclNlc3Npb24gc2Vzc2lvbihjb250ZXh0Rm9yUGFyc2luZ1Nl
c3Npb24oKSk7CisgICAgT3duUHRyPFBhcnNlZENodW5rPiBjaHVuayhwb3BDaHVuayk7CisgICAg
T3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IGNodW5rLT50b2tlbnMucmVs
ZWFzZSgpOwogCi0gICAgbV9jdXJyZW50Q2h1bmsgPSBjaHVuazsKLSAgICBPd25QdHI8Q29tcGFj
dEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gbV9jdXJyZW50Q2h1bmstPnRva2Vucy5yZWxlYXNl
KCk7CisgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVkKCktPnBvc3RUYXNrKGJpbmQoJkJhY2tn
cm91bmRIVE1MUGFyc2VyOjpzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludCwgbV9iYWNrZ3JvdW5k
UGFyc2VyLCBjaHVuay0+aW5wdXRDaGVja3BvaW50KSk7CiAKLSAgICBmb3IgKFhTU0luZm9TdHJl
YW06OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jdXJyZW50Q2h1bmstPnhzc0luZm9zLmJlZ2luKCk7
IGl0ICE9IG1fY3VycmVudENodW5rLT54c3NJbmZvcy5lbmQoKTsgKytpdCkgeworICAgIGZvciAo
WFNTSW5mb1N0cmVhbTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaHVuay0+eHNzSW5mb3MuYmVnaW4o
KTsgaXQgIT0gY2h1bmstPnhzc0luZm9zLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIG1fdGV4dFBv
c2l0aW9uID0gKCppdCktPm1fdGV4dFBvc2l0aW9uOwogICAgICAgICBtX3hzc0F1ZGl0b3JEZWxl
Z2F0ZS5kaWRCbG9ja1NjcmlwdCgqKml0KTsgCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKQEAg
LTQyOCw3ICs0MzMsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENo
dW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZQogICAgICAgICBpZiAoaXNX
YWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgKyAxID09IHRva2Vu
cy0+ZW5kKCkpOyAvLyBUaGUgPC9zY3JpcHQ+IGlzIGFzc3VtZWQgdG8gYmUgdGhlIGxhc3QgdG9r
ZW4gb2YgdGhpcyBidW5jaC4KICAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVp
bGRlcigpOwotICAgICAgICAgICAgdmFsaWRhdGVTcGVjdWxhdGlvbnMoKTsKKyAgICAgICAgICAg
IHZhbGlkYXRlU3BlY3VsYXRpb25zKGNodW5rLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCkBAIC00NTUsNiArNDYwLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25zKCkKICAgICAvLyBtX3Rva2VuaXplciBhbmQgbV90
b2tlbiBkb24ndCBoYXZlIHN0YXRlIHRoYXQgaW52YWxpZGF0ZXMgbV9zcGVjdWxhdGlvbnMuCiAg
ICAgQVNTRVJUKCFtX3Rva2VuaXplcik7CiAgICAgQVNTRVJUKCFtX3Rva2VuKTsKKyAgICBBU1NF
UlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKIAogICAgIC8vIEZJWE1FOiBQYXNzIGluIGN1
cnJlbnQgaW5wdXQgbGVuZ3RoLgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwoZG9jdW1lbnQo
KSwgbGluZU51bWJlcigpLnplcm9CYXNlZEludCgpKTsKQEAgLTg3Myw3ICs4NzksOCBAQCB2b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkK
IAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKICAgICBpZiAobV9oYXZlQmFja2dy
b3VuZFBhcnNlcikgewotICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOworICAgICAgICB2
YWxpZGF0ZVNwZWN1bGF0aW9ucyhtX2xhc3RDaHVua0JlZm9yZVNjcmlwdC5yZWxlYXNlKCkpOwor
ICAgICAgICBBU1NFUlQoIW1fbGFzdENodW5rQmVmb3JlU2NyaXB0KTsKICAgICAgICAgLy8gcHJv
Y2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2Vy
IHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgICAgICAvLyBidXQgd2UgbmVl
ZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAgICAgIFJlZlB0cjxIVE1MRG9j
dW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDYxMDA0ZTI3N2U4NDc3MDIzZGFiNTMzMDZm
NTYxNzJiNWU5ZDJjM2MuLjFkYWVlZjNkYmY5ZmRkMmY4MjgwYWY5MDNiNTgzZmJiYjliZGMxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
CkBAIC0xNDMsOCArMTQzLDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9Q
QVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tncm91bmRQYXJzZXIoKTsKICAgICB2b2lkIHN0b3BC
YWNrZ3JvdW5kUGFyc2VyKCk7Ci0gICAgdm9pZCB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOwotICAg
IHZvaWQgZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0
cjxIVE1MVG9rZW5pemVyPik7CisgICAgdm9pZCB2YWxpZGF0ZVNwZWN1bGF0aW9ucyhQYXNzT3du
UHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmspOworICAgIHZvaWQgZGlzY2FyZFNwZWN1bGF0aW9u
c0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFzdENodW5rLCBQYXNzT3du
UHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4pOwogICAgIHZvaWQgcHJv
Y2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVu
az4pOwogICAgIHZvaWQgcHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKTsKICNlbmRpZgpAQCAtMTk2
LDcgKzE5Niw5IEBAIHByaXZhdGU6CiAgICAgWFNTQXVkaXRvckRlbGVnYXRlIG1feHNzQXVkaXRv
ckRlbGVnYXRlOwogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotICAgIE93blB0
cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1bms7CisgICAgLy8gRklYTUU6IG1fbGFzdENodW5r
QmVmb3JlU2NyaXB0LCBtX3Rva2VuaXplciwgbV90b2tlbiwgYW5kIG1faW5wdXQgc2hvdWxkIGJl
IGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RhdGUgb2JqZWN0CisgICAgLy8gc28gdGhleSBjYW4g
YmUgc2V0IGFuZCBjbGVhcmVkIHRvZ2V0aGVyIGFuZCBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzIHRv
Z2V0aGVyLgorICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQ7
CiAgICAgRGVxdWU8T3duUHRyPFBhcnNlZENodW5rPiA+IG1fc3BlY3VsYXRpb25zOwogICAgIFdl
YWtQdHJGYWN0b3J5PEhUTUxEb2N1bWVudFBhcnNlcj4gbV93ZWFrRmFjdG9yeTsKICAgICBXZWFr
UHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBtX2JhY2tncm91bmRQYXJzZXI7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjhj
MWU0ZmFkMjY1MjJiNjBjMzVmZmQwOWM1MGUyZGMyODAzOWQ5ZS4uY2JmNGVmNzc2OWJiZmZmNWRm
ZjgyZWE0MTRjZjgyNTUzODg3MjRhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAzLTEz
ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1M
IFBhcnNlciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2gg
bWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTIwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRlc3Qg
dGhhdCB0aGlzIGZpeGVzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA1NDYgZm9yIHRoZSB0aHJlYWRlZCBwYXJzZXIuCisgICAgICAgIFBvcnRzIHVzaW5nIHRoZSBt
YWluLXRocmVhZCBwYXJzZXIgYXJlIGV4cGVjdGVkIHRvIGZhaWwgKEFTU0VSVCBpbiBEZWJ1Zyku
CisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1i
ZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL2Rv
Y3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvcGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVudC13cml0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1
bWVudC13cml0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3BhcnNlci9yZXNvdXJjZXMv
ZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDEzLTAzLTEzICBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJh
c3lza29tLmNvbT4KIAogICAgICAgICBbY3NzMy10ZXh0XSBBZGQgc3VwcG9ydCBmb3IgdGV4dC1k
ZWNvcmF0aW9uLWNvbG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUt
bG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VmMjJlOWE0MzFhZDAyNzI3MTNiNzFmZGM4
Nzk0MDE2YzhlZjEyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxIEBACitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9k
b2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMmJlOTY3YmNkNzM5NTAyYTg5NWIwMzY3ZDE5ODI2YzMxZWEwMGVk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3Jp
dGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxzY3Jp
cHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8
L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3QiPjxzY3JpcHQgb25iZWZvcmVsb2FkPSJkb2N1bWVudC53
cml0ZSgnJicpIiBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGRvY3VtZW50LndyaXRlKCdnJyk7
Ij48L3NjcmlwdD50OzwvZGl2PgorPHNjcmlwdD4KK3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3QiKTsKK3Rlc3REaXYudGV4dENvbnRlbnQgPSAodGVzdERpdi50ZXh0
Q29udGVudCA9PSAnPicpID8gIlBBU1MiIDogKCJGQUlMIDogIiArIHRlc3REaXYudGV4dENvbnRl
bnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9leHRl
cm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9wYXJzZXIvZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xOTJjZDI4MjIyOThhZGRkNmVhMDRkNTVhZDRkYWYxODQwNTRjNzYyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZXh0ZXJuYWwtc2NyaXB0LWRvY3Vt
ZW50LXdyaXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworPFBBU1M+IDwtIFNob3Vs
ZCBzYXkgPFBBU1M+IGJlZm9yZSB0aGlzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3BhcnNlci9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvcGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVudC13cml0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxZDMyNjEwOWNmNjAxZTJkNzg4OGQyMmY1MGVhMWJjMGU1NWUxMDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQt
d3JpdGUuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLmpzIj48L3NjcmlwdD4K
KzxQQVNTPiA8LSBTaG91bGQgc2F5IDxQQVNTPiBiZWZvcmUgdGhpcy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvcGFyc2VyL3Jlc291cmNlcy9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQt
d3JpdGUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZXNvdXJjZXMvZXh0ZXJuYWwtc2Ny
aXB0LWRvY3VtZW50LXdyaXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZTZkNTZiNjEyYmEzMTJiNTE4MTdm
NTZiOTcwYjE5Y2RhNDZlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Bh
cnNlci9yZXNvdXJjZXMvZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLmpzCkBAIC0wLDAg
KzEgQEAKK2RvY3VtZW50LndyaXRlKCI8cGxhaW50ZXh0PiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyNWFmMTg0NjkwZDExNmMxYjQ1NDliYjczMDM4
ZWYyMmYwMTg3ZTdmLi5jZDgzZDBhMDMwYjY3ZmMzOGViNmMzZGFiZjI2NTc0NDFjOWU0NGMwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDkxLDcgKzQ5
MSw4IEBAIHdlYmtpdC5vcmcvYi8xMTA2OTUgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmln
aW4tbG9jYWwtc3RvcmFnZS5odG1sIFsgQ3Jhc2gKIHdlYmtpdC5vcmcvYi8xMTA2OTUgaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tcGx1Z2luLWFsbG93ZWQuaHRtbCBbIENyYXNoIFBh
c3MgXQogd2Via2l0Lm9yZy9iLzExMDY5NSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdp
bi1wbHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLWFsbG93ZWQuaHRtbCBbIENyYXNoIFBh
c3MgXQogCi13ZWJraXQub3JnL2IvMTExNDQ5IFsgRGVidWcgXSBmYXN0L3BhcnNlci9kb2N1bWVu
dC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYg
WyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgRGVidWcgXSBmYXN0L3BhcnNlci9kb2N1bWVu
dC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sIFsgU2tpcCBdCiAKIHdlYmtp
dC5vcmcvYi8xMTIxNTIgWyBEZWJ1ZyBdIGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4td2l0aC1l
bGVtZW50cy5odG1sIFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzExMjE1MiBbIERlYnVnIF0gYWNj
ZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbCBbIENyYXNoIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMWI2NGJjNjJh
MWU2OTIyN2JhNmJlN2FlN2RhODY0MDY0YjgwYzhkYi4uM2M0NzMwNmUxNGY0OTcyYTdmY2I4YzM3
NWFlZDEyODE1YTM1ZmNlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTE0NTAsNyArMTQ1MCw4IEBAIHdlYmtpdC5vcmcvYi8xMTE1MjEgZWRpdGluZy9z
ZWxlY3Rpb24vc2VsZWN0aW9uLWluLWlmcmFtZS1yZW1vdmVkLWNyYXNoLmh0bWwgWyBDCiAKIHdl
YmtpdC5vcmcvYi8xMTE2MTMgcGxhdGZvcm0vbWFjL2Zhc3Qvc3BlZWNoc3ludGhlc2lzL3NwZWVj
aC1zeW50aGVzaXMtY2FuY2VsLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzEx
MDU0NiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIENyYXNo
IF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdy
aXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTEwNTQ2IFsgREVC
VUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9h
ZC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xMTE2NDcgc3B1dG5pay9Db25mb3JtYW5j
ZS8wN19MZXhpY2FsX0NvbnZlbnRpb25zLzcuOF9MaXRlcmFscy83LjguNV9SZWd1bGFyX0V4cHJl
c3Npb25fTGl0ZXJhbHMvUzcuOC41X0ExLjFfVDIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzExMTY0NyBzcHV0bmlrL0NvbmZvcm1hbmNlLzA3X0xleGljYWxfQ29udmVudGlvbnMvNy44X0xp
dGVyYWxzLzcuOC41X1JlZ3VsYXJfRXhwcmVzc2lvbl9MaXRlcmFscy9TNy44LjVfQTIuMV9UMi5o
dG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA5ZDk0MjU2MGFmZGFiYTg4MGYxNThjNDllMzg1OGNmYjNmNzA3MjcwLi5lZDkyNDc5NGIzN2Qz
ZThmYzg0NWNiOWNmZjc5MDBlNDFiZTU0NDA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE5MDQsNyArMTkwNCw4IEBAIHdlYmtpdC5vcmcvYi8xMDg1MDgg
ZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRQYXRoLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9y
Zy9iLzExMTI5MCBmYXN0L3JlZ2lvbnMvc2VhbWxlc3MtaWZyYW1lLWZsb3dlZC1pbnRvLXJlZ2lv
bnMuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTExNDQ5IFsgREVCVUcgXSBmYXN0L3Bh
cnNlci9kb2N1bWVudC13cml0ZS1maWdodGluZy1lb2YuaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmct
ZW9mLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBERUJVRyBdIGZhc3QvcGFy
c2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgWyBTa2lw
IF0KIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgc2VjdXJpdHkgdGVzdHMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193091</attachid>
            <date>2013-03-14 02:07:15 -0700</date>
            <delta_ts>2013-03-14 02:27:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112069-20130314020322.patch</filename>
            <type>text/plain</type>
            <size>26393</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVjMGI4MjAzZDQyYWFi
Y2M1NDJmM2M1N2FmYjI2N2Y3NmM1ZTYxOS4uOTgwZjBkNDNmNDZkN2E5ODA5Mjk1YmJlMDliODA5
N2EwOGVkNjJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAzLTEzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRlZCBIVE1MIFBhcnNl
ciBzaG91bGQgbGltaXQgc3BlY3VsYXRpb24gdG8gYXZvaWQgdXNpbmcgdG9vIG11Y2ggbWVtb3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgaXMgYSBz
cGVjdWxhdGl2ZSBmaXggZm9yIG1lbW9yeSBpc3N1ZXMgc2VlbiBpbjoKKyAgICAgICAgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE4MDgxOQorCisg
ICAgICAgIFRoaXMgYWxzbyBmaXhlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNTQ2CisgICAgICAgIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc2ltcGxpZnlpbmcgdGhl
IG1fY3VycmVudENodW5rIGhhbmRsaW5nLgorCisgICAgICAgIFdlIG5vdyB0ZWxsIHRoZSBiYWNr
Z3JvdW5kIGh0bWwgcGFyc2VyIGV2ZXJ5IHRpbWUgd2Ugc3RhcnQKKyAgICAgICAgYSBjaHVuayBv
biB0aGUgbWFpbiB0aHJlYWQgKGluc3RlYWQgb2YgZW5kKSwgd2hpY2ggZ3JlYXRseQorICAgICAg
ICBzaW1wbGlmaWVkIHRoZSBjaGVja3BvaW50IGNsZWFudXAgY29kZSBmcm9tOgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1Mjc3CisKKyAgICAgICAgVGhlIGNv
c3QgZm9yIHRoaXMgaXMgbm93IHdlIGhhdmUgbW9yZSBtZXNzYWdlcyBnb2luZyB0byB0aGUKKyAg
ICAgICAgYmFja2dyb3VuZCB0aHJlYWQgKGFuZCBwb3N0VGFzayBhY3F1aXJlcyBhIGxvY2sgdG8g
d3JpdGUgdG8gdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWUpLiAgQ2hyb21pdW0gaGFzIG1vcmUg
YWR2YW5jZWQgKGxvY2stbGVzcykgcHJpbWF0aXZlcworICAgICAgICBmb3IgbWVzc2FnZSBwb3N0
aW5nLCB3aGljaCB3ZSdsbCBob3BlZnVsbHkgYWRkIHRvIFdlYktpdCBpbgorICAgICAgICBmdXJ0
dXJlIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIG91dHN0YW5kaW5nIGNodW5rcyBsaW1pdCBoYXMg
bm90IGJlZW4gdHVuZWQuICBCdXQgaXQgbWFrZXMgc2Vuc2UgdGhhdAorICAgICAgICB3ZSBzaG91
bGQgbm90IGtlZXBpbmcgaW5maW5pdGUgc3BlY3VsYXRpdmUgdG9rZW5zIGFyb3VuZCBmb3IKKyAg
ICAgICAgbGFyZ2UgZG9jdW1lbnRzIHdpdGggc2xvdy10by1sb2FkIHNjcmlwdHMuCisKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6aW52
YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8pOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAgKEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJ
bnB1dFN0cmVhbTo6b3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQpOgorICAgICAgICAoQ2hlY2tw
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpDaGVj
a3BvaW50Ojppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0
cmVhbTo6Q2hlY2twb2ludDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oOgorICAgICAgICAoQmFja2dy
b3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnZhbGlkYXRlU3Bl
Y3VsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlzY2Fy
ZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBQZW5kaW5nU3BlY3VsYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0Fm
dGVyU2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuaDoKKyAgICAgICAgKEhUTUxEb2N1bWVudFBhcnNlcik6CisKIDIwMTMtMDMtMTMgIEJy
dW5vIGRlIE9saXZlaXJhIEFiaW5hZGVyICA8YnJ1bm8uYWJpbmFkZXJAYmFzeXNrb20uY29tPgog
CiAgICAgICAgIFtjc3MzLXRleHRdIEFkZCBzdXBwb3J0IGZvciB0ZXh0LWRlY29yYXRpb24tY29s
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbS5jcHAKaW5kZXggMWMzZmJjNGEzM2U5YjVmNWRhM2U0MzBkN2MzOTFiMzIy
ZjExZDc4NS4uMTlhNjAzMTFhNTIyZmZkNzM3ZWM1NjkxOGYyM2ZjNjY5Yzg5ZTc5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQmFj
a2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbSgpCisgICAg
OiBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXgoMCkKKyAgICAsIG1fZmlyc3RWYWxpZFNlZ21l
bnRJbmRleCgwKQogewogfQogCkBAIC01MywxNyArNTUsNDAgQEAgSFRNTElucHV0Q2hlY2twb2lu
dCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpjcmVhdGVDaGVja3BvaW50KCkKICAgICByZXR1
cm4gY2hlY2twb2ludDsKIH0KIAordm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjppbnZh
bGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoSFRNTElucHV0Q2hlY2twb2ludCBuZXdGaXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4KQoreworICAgIEFTU0VSVChuZXdGaXJzdFZhbGlkQ2hlY2twb2ludElu
ZGV4IDwgbV9jaGVja3BvaW50cy5zaXplKCkpOworICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgdG8g
ZG8gZm9yIHRoZSBmaXJzdCB2YWxpZCBjaGVja3BvaW50LgorICAgIGlmIChtX2ZpcnN0VmFsaWRD
aGVja3BvaW50SW5kZXggPT0gbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKG5ld0ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggPiBtX2Zp
cnN0VmFsaWRDaGVja3BvaW50SW5kZXgpOworICAgIGNvbnN0IENoZWNrcG9pbnQmIGxhc3RJbnZh
bGlkQ2hlY2twb2ludCA9IG1fY2hlY2twb2ludHNbbmV3Rmlyc3RWYWxpZENoZWNrcG9pbnRJbmRl
eCAtIDFdOworCisgICAgQVNTRVJUKG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleCA8PSBsYXN0SW52
YWxpZENoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZCk7CisgICAgZm9y
IChzaXplX3QgaSA9IG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleDsgaSA8IGxhc3RJbnZhbGlkQ2hl
Y2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyArK2kpCisgICAgICAgIG1f
c2VnbWVudHNbaV0gPSBTdHJpbmcoKTsKKyAgICBtX2ZpcnN0VmFsaWRTZWdtZW50SW5kZXggPSBs
YXN0SW52YWxpZENoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7IGkgPCBuZXdG
aXJzdFZhbGlkQ2hlY2twb2ludEluZGV4OyArK2kpCisgICAgICAgIG1fY2hlY2twb2ludHNbaV0u
Y2xlYXIoKTsKKyAgICBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXggPSBuZXdGaXJzdFZhbGlk
Q2hlY2twb2ludEluZGV4OworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OnJl
d2luZFRvKEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2ludEluZGV4LCBjb25zdCBTdHJpbmcm
IHVucGFyc2VkSW5wdXQpCiB7CiAgICAgQVNTRVJUKGNoZWNrcG9pbnRJbmRleCA8IG1fY2hlY2tw
b2ludHMuc2l6ZSgpKTsgLy8gSWYgdGhpcyBBU1NFUlQgZmlyZXMsIGNoZWNrcG9pbnRJbmRleCBp
cyBpbnZhbGlkLgogICAgIGNvbnN0IENoZWNrcG9pbnQmIGNoZWNrcG9pbnQgPSBtX2NoZWNrcG9p
bnRzW2NoZWNrcG9pbnRJbmRleF07CisgICAgQVNTRVJUKCFjaGVja3BvaW50LmlzTnVsbCgpKTsK
IAogICAgIGJvb2wgaXNDbG9zZWQgPSBtX2N1cnJlbnQuaXNDbG9zZWQoKTsKIAogICAgIG1fY3Vy
cmVudCA9IGNoZWNrcG9pbnQuaW5wdXQ7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gY2hlY2twb2lu
dC5udW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7
ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gY2hlY2twb2ludC5udW1iZXJPZlNlZ21lbnRzQWxy
ZWFkeUFwcGVuZGVkOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NF
UlQoIW1fc2VnbWVudHNbaV0uaXNOdWxsKCkpOwogICAgICAgICBtX2N1cnJlbnQuYXBwZW5kKFNl
Z21lbnRlZFN0cmluZyhtX3NlZ21lbnRzW2ldKSk7CisgICAgfQogCiAgICAgaWYgKCF1bnBhcnNl
ZElucHV0LmlzRW1wdHkoKSkKICAgICAgICAgbV9jdXJyZW50LnByZXBlbmQoU2VnbWVudGVkU3Ry
aW5nKHVucGFyc2VkSW5wdXQpKTsKQEAgLTc1LDYgKzEwMCw4IEBAIHZvaWQgQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5k
ZXgsIGNvCiAKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgbV9jaGVja3BvaW50cy5jbGVh
cigpOworICAgIG1fZmlyc3RWYWxpZENoZWNrcG9pbnRJbmRleCA9IDA7CisgICAgbV9maXJzdFZh
bGlkU2VnbWVudEluZGV4ID0gMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oCmluZGV4IGM3MGIwNzJjZDU0
MGFlMDlhNjY1NDQ3YmRlMTY1NzI0MjdkMzMyZTguLmNlYmE1NmUzOGRjNGExNmYzNTkyMDQwMjgw
YjhkYTRhNGRhOTdiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVibGljOgog
ICAgIC8vIHBvaW50IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52YWxpZGF0ZWQu
CiAgICAgSFRNTElucHV0Q2hlY2twb2ludCBjcmVhdGVDaGVja3BvaW50KCk7CiAgICAgdm9pZCBy
ZXdpbmRUbyhIVE1MSW5wdXRDaGVja3BvaW50LCBjb25zdCBTdHJpbmcmIHVucGFyc2VkSW5wdXQp
OworICAgIHZvaWQgaW52YWxpZGF0ZUNoZWNrcG9pbnRzQmVmb3JlKEhUTUxJbnB1dENoZWNrcG9p
bnQpOworCisgICAgc2l6ZV90IG91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGVja3BvaW50cy5zaXplKCkgLSBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7
IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7CkBAIC01NywxMSArNjAsMjAg
QEAgcHJpdmF0ZToKIAogICAgICAgICBTZWdtZW50ZWRTdHJpbmcgaW5wdXQ7CiAgICAgICAgIHNp
emVfdCBudW1iZXJPZlNlZ21lbnRzQWxyZWFkeUFwcGVuZGVkOworCisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGlucHV0LmlzRW1wdHkoKSAmJiAh
bnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRlZDsgfQorI2VuZGlmCisgICAgICAgIHZvaWQg
Y2xlYXIoKSB7IGlucHV0LmNsZWFyKCk7IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQg
PSAwOyB9CiAgICAgfTsKIAogICAgIFNlZ21lbnRlZFN0cmluZyBtX2N1cnJlbnQ7CiAgICAgVmVj
dG9yPFN0cmluZz4gbV9zZWdtZW50czsKICAgICBWZWN0b3I8Q2hlY2twb2ludD4gbV9jaGVja3Bv
aW50czsKKworICAgIC8vIE5vdGU6IFRoZXNlIGluZGljaWVzIG1heSA9PT0gdmVjdG9yLnNpemUo
KSwgaW4gd2hpY2ggY2FzZSB0aGVyZSBhcmUgbm8gdmFsaWQgY2hlY2twb2ludHMvc2VnbWVudHMg
YXQgdGhpcyB0aW1lLgorICAgIHNpemVfdCBtX2ZpcnN0VmFsaWRDaGVja3BvaW50SW5kZXg7Cisg
ICAgc2l6ZV90IG1fZmlyc3RWYWxpZFNlZ21lbnRJbmRleDsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA4
YThjNThjZGY5NmVlNzIwZjBjNjcwMWIwZDdmYjY0MDRiOWVjZTJjLi44ZDYyOWQxYzU3OWRmMjkz
MTM1YTIyMjU4YzMxZDI0OTZiNTQ2ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0zOSw2ICszOSwyNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIE9uIGEgbmV0d29yayB3aXRoIGhpZ2ggbGF0ZW5jeSBh
bmQgaGlnaCBiYW5kd2lkdGgsIHVzaW5nIGEgZGV2aWNlCisvLyB3aXRoIGEgZmFzdCBDUFUsIHdl
IGNvdWxkIGVuZCB1cCBzcGVjdWxhdGl2ZWx5IHRva2VuaXppbmcKKy8vIHRoZSB3aG9sZSBkb2N1
bWVudCwgd2VsbCBhaGVhZCBvZiB3aGVuIHRoZSBtYWluLXRocmVhZCBhY3R1YWxseSBuZWVkcyBp
dC4KKy8vIFRoaXMgaXMgYSB3YXN0ZSBvZiBtZW1vcnkgKGFuZCBwb3RlbnRpYWxseSB0aW1lIGlm
IHRoZSBzcGVjdWxhdGlvbiBmYWlscykuCisvLyBTbyB3ZSBsaW1pdCBvdXIgb3V0c3RhbmRpbmcg
c3BlY3VsYXRpb25zIGFyYml0cmFyaWx5IHRvIDEwLgorLy8gT3VyIG1heGltYWwgbWVtb3J5IHNw
ZW50IHNwZWN1bGF0aW5nIHdpbGwgYmUgYXBwcm94aW1hdGVseToKKy8vIG91dHN0YW5kaW5nQ2hl
Y2twb2ludExpbWl0ICogcGVuZGluZ1Rva2VuTGltaXQgKiBzaXplb2YoQ29tcGFjdFRva2VuKQor
Ly8gV2UgdXNlIGEgc2VwYXJhdGUgbG93IGFuZCBoaWdoIHdhdGVyIG1hcmsgdG8gYXZvaWQgY29u
c3RhbnRseSB0b3BwaW5nCisvLyBvZmYgdGhlIG1haW4gdGhyZWFkJ3MgdG9rZW4gYnVmZmVyLgor
Ly8gQXQgdGltZSBvZiB3cml0aW5nLCB0aGlzIGlzIDEwICogMTAwMCAqIDI4IGJ5dGVzID0gYXBw
b3ggMjgwa2Igb2YgbWVtb3J5LgorLy8gVGhlc2UgbnVtYmVycyBoYXZlIG5vdCBiZWVuIHR1bmVk
Lgorc3RhdGljIGNvbnN0IHNpemVfdCBvdXRzdGFuZGluZ0NoZWNrcG9pbnRMaW1pdCA9IDEwOwor
CisvLyBXZSBsaW1pdCBvdXIgY2h1Y2tzIHRvIDEwMDAgdG9rZW5zLCB0byBtYWtlIHN1cmUgdGhl
IG1haW4KKy8vIHRocmVhZCBpcyBuZXZlciB3YWl0aW5nIG9uIHRoZSBwYXJzZXIgdGhyZWFkIGZv
ciB0b2tlbnMuCisvLyBUaGlzIHdhcyB0dW5lZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEwNDA4Lgorc3RhdGljIGNvbnN0IHNpemVfdCBwZW5kaW5nVG9rZW5M
aW1pdCA9IDEwMDA7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKICNpZm5kZWYgTkRF
QlVHCiAKIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoY29uc3QgQ29tcGFjdEhUTUxUb2tlblN0cmVhbSogdG9rZW5zKQpAQCAtNTUsOCArNzUs
NiBAQCBzdGF0aWMgdm9pZCBjaGVja1RoYXRQcmVsb2Fkc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoY29uc3QgUHJlbG9hZFJlcXVlc3RTdAogCiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IHNp
emVfdCBwZW5kaW5nVG9rZW5MaW1pdCA9IDEwMDA7Ci0KIEJhY2tncm91bmRIVE1MUGFyc2VyOjpC
YWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhU
TUxQYXJzZXI+ID4gcmVmZXJlbmNlLCBQYXNzT3duUHRyPENvbmZpZ3VyYXRpb24+IGNvbmZpZykK
ICAgICA6IG1fd2Vha0ZhY3RvcnkocmVmZXJlbmNlLCB0aGlzKQogICAgICwgbV90b2tlbihhZG9w
dFB0cihuZXcgSFRNTFRva2VuKSkKQEAgLTg4LDYgKzEwNiwxNCBAQCB2b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjpyZXN1bWVGcm9tKFBhc3NPd25QdHI8Q2hlY2twb2ludD4gY2hlY2twb2ludCkK
ICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0
YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50KEhUTUxJbnB1dENoZWNrcG9pbnQgaW5wdXRDaGVja3Bv
aW50KQoreworICAgIC8vIE5vdGUsIHdlIHNob3VsZCBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0
aGUgaW5kZXggYmVpbmcgaW52YWxpZAorICAgIC8vIGFzIG1lc3NhZ2VzIGZyb20gdGhlIG1haW4g
dGhyZWFkIHdpbGwgYmUgcHJvY2Vzc2VkIGluIEZJRk8gb3JkZXIuCisgICAgbV9pbnB1dC5pbnZh
bGlkYXRlQ2hlY2twb2ludHNCZWZvcmUoaW5wdXRDaGVja3BvaW50KTsKKyAgICBwdW1wVG9rZW5p
emVyKCk7Cit9CisKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmZpbmlzaCgpCiB7CiAgICAg
bWFya0VuZE9mRmlsZSgpOwpAQCAtMTE2LDEwICsxNDIsMTcgQEAgdm9pZCBCYWNrZ3JvdW5kSFRN
TFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiAKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1
bXBUb2tlbml6ZXIoKQogeworICAgIC8vIE5vIG5lZWQgdG8gc3RhcnQgc3BlY3VsYXRpbmcgdW50
aWwgdGhlIG1haW4gdGhyZWFkIGhhcyBhbG1vc3QgY2F1Z2h0IHVwLgorICAgIGlmIChtX2lucHV0
Lm91dHN0YW5kaW5nQ2hlY2twb2ludENvdW50KCkgPiBvdXRzdGFuZGluZ0NoZWNrcG9pbnRMaW1p
dCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgbV9zb3Vy
Y2VUcmFja2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXplci5nZXQoKSwgKm1f
dG9rZW4pOwotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJy
ZW50KCksICptX3Rva2VuLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4dFRv
a2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8v
IFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiBvdXIgY3VycmVudCBpbnB1dC4KKyAgICAgICAgICAg
IHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5p
emVyLmdldCgpLCAqbV90b2tlbik7CiAKICAgICAgICAgewpAQCAtMTM5LDExICsxNzIsMTMgQEAg
dm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAKICAgICAgICAgbV90
b2tlbi0+Y2xlYXIoKTsKIAotICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXJTaW11bGF0b3Iuc2lt
dWxhdGUobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCksIG1fdG9rZW5pemVyLmdldCgpKSB8fCBtX3Bl
bmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAgICAgICAgaWYgKCFt
X3RyZWVCdWlsZGVyU2ltdWxhdG9yLnNpbXVsYXRlKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpLCBt
X3Rva2VuaXplci5nZXQoKSkgfHwgbV9wZW5kaW5nVG9rZW5zLT5zaXplKCkgPj0gcGVuZGluZ1Rv
a2VuTGltaXQpIHsKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKKyAgICAg
ICAgICAgIC8vIElmIHdlJ3JlIGZhciBhaGVhZCBvZiB0aGUgbWFpbiB0aHJlYWQsIHlpZWxkIGZv
ciBhIGJpdCB0byBhdm9pZCBjb25zdW1pbmcgdG9vIG11Y2ggbWVtb3J5LgorICAgICAgICAgICAg
aWYgKG1faW5wdXQub3V0c3RhbmRpbmdDaGVja3BvaW50Q291bnQoKSA+IG91dHN0YW5kaW5nQ2hl
Y2twb2ludExpbWl0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQot
Ci0gICAgc2VuZFRva2Vuc1RvTWFpblRocmVhZCgpOwogfQogCiB2b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjpzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCmluZGV4IGNhMDY3Y2ZkNWQ2OWJiZGRj
Y2RkNzZjOTVhMjY1NDZkZjk5ZjhhNjYuLjI4MjFmYmZmMjgyMTIyMjNmNDAxMzBjNDhmNGE3YjNk
MTUwM2ExM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxQYXJzZXIuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3Bv
aW50Pik7CisgICAgdm9pZCBzdGFydGVkQ2h1bmtXaXRoQ2hlY2twb2ludChIVE1MSW5wdXRDaGVj
a3BvaW50KTsKICAgICB2b2lkIGZpbmlzaCgpOwogICAgIHZvaWQgc3RvcCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2
YTNlMjlkMTQyODNiYWM4ZDA5ZjE3MWY2YTk1NDY3NDllZTk0OTU0Li45ZWRiMTRiNjRiNzA0MGEy
OTlkOTdiY2NkNzZiMzMwNmViMTMxYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTMyOCw4ICszMjgsMjAgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFy
c2VyKFBhc3NPd25QdHI8UGEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRl
SFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAKLXZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCit2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6dmFsaWRhdGVTcGVjdWxhdGlvbnMoUGFzc093blB0cjxQYXJzZWRDaHVuaz4gY2h1
bmspCiB7CisgICAgQVNTRVJUKGNodW5rKTsKKyAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygp
KSB7CisgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcgb24gYSBuZXR3b3JrIHNjcmlwdCwganVzdCBz
YXZlIHRoZSBjaHVuaywgd2UnbGwgZ2V0CisgICAgICAgIC8vIGEgc2Vjb25kIHZhbGlkYXRlU3Bl
Y3VsYXRpb25zIGNhbGwgYWZ0ZXIgdGhlIHNjcmlwdCBjb21wbGV0ZXMuCisgICAgICAgIC8vIFRo
aXMgY2FsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgcnVuU2NyaXB0
c0ZvclBhdXNlZFRyZWVCdWlsZGVyCisgICAgICAgIC8vIHdoaWNoIG1heSBoYXZlIHN0YXJ0ZWQg
YSBuZXR3b3JrIGxvYWQgYW5kIGxlZnQgdXMgd2FpdGluZy4KKyAgICAgICAgQVNTRVJUKCFtX2xh
c3RDaHVua0JlZm9yZVNjcmlwdCk7CisgICAgICAgIG1fbGFzdENodW5rQmVmb3JlU2NyaXB0ID0g
Y2h1bms7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fbGFzdENodW5r
QmVmb3JlU2NyaXB0KTsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gdG9rZW5pemVyID0gbV90
b2tlbml6ZXIucmVsZWFzZSgpOwogICAgIE93blB0cjxIVE1MVG9rZW4+IHRva2VuID0gbV90b2tl
bi5yZWxlYXNlKCk7CiAKQEAgLTMzOSwzMSArMzUxLDIzIEBAIHZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjp2YWxpZGF0ZVNwZWN1bGF0aW9ucygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoIW1fY3VycmVudENodW5rKSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1fY3Vy
cmVudENodW5rLCB3ZSBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9u
Ci0gICAgICAgIC8vIGZvciB0aGlzIGNodW5rLgotICAgICAgICAvLyBGSVhNRTogSW4gdGhpcyBj
YXNlLCB3ZSdyZSBsb3Npbmcgd2hhdGV2ZXIgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZQot
ICAgICAgICAvLyB3ZSBjYWxsZWQgZGlkRmFpbFNwZWN1bGF0aW9uLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDU0NgotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgLy8gQ3VycmVudGx5IHdlJ3JlIG9ubHkgc21hcnQgZW5vdWdoIHRvIHJldXNlIHRo
ZSBzcGVjdWxhdGlvbiBidWZmZXIgaWYgdGhlIHRva2VuaXplcgogICAgIC8vIGJvdGggc3RhcnRz
IGFuZCBlbmRzIGluIHRoZSBEYXRhU3RhdGUuIFRoYXQgc3RhdGUgaXMgc2ltcGxlc3QgYmVjYXVz
ZSB0aGUgSFRNTFRva2VuCiAgICAgLy8gaXMgYWx3YXlzIGluIHRoZSBVbmluaXRpYWxpemVkIHN0
YXRlLiBXZSBzaG91bGQgY29uc2lkZXIgd2hldGhlciB3ZSBjYW4gcmV1c2UgdGhlCiAgICAgLy8g
c3BlY3VsYXRpb24gYnVmZmVyIGluIG90aGVyIHN0YXRlcywgYnV0IHdlJ2QgbGlrZWx5IG5lZWQg
dG8gZG8gc29tZXRoaW5nIG1vcmUKICAgICAvLyBzb3BoaXN0aWNhdGVkIHdpdGggdGhlIEhUTUxU
b2tlbi4KLSAgICBpZiAobV9jdXJyZW50Q2h1bmstPnRva2VuaXplclN0YXRlID09IEhUTUxUb2tl
bml6ZXI6OkRhdGFTdGF0ZQorICAgIGlmIChjaHVuay0+dG9rZW5pemVyU3RhdGUgPT0gSFRNTFRv
a2VuaXplcjo6RGF0YVN0YXRlCiAgICAgICAgICYmIHRva2VuaXplci0+c3RhdGUoKSA9PSBIVE1M
VG9rZW5pemVyOjpEYXRhU3RhdGUKICAgICAgICAgJiYgbV9pbnB1dC5jdXJyZW50KCkuaXNFbXB0
eSgpCi0gICAgICAgICYmIG1fY3VycmVudENodW5rLT50cmVlQnVpbGRlclN0YXRlID09IEhUTUxU
cmVlQnVpbGRlclNpbXVsYXRvcjo6c3RhdGVGb3IobV90cmVlQnVpbGRlci5nZXQoKSkpIHsKKyAg
ICAgICAgJiYgY2h1bmstPnRyZWVCdWlsZGVyU3RhdGUgPT0gSFRNTFRyZWVCdWlsZGVyU2ltdWxh
dG9yOjpzdGF0ZUZvcihtX3RyZWVCdWlsZGVyLmdldCgpKSkgewogICAgICAgICBBU1NFUlQodG9r
ZW4tPmlzVW5pbml0aWFsaXplZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRp
ZEZhaWxTcGVjdWxhdGlvbih0b2tlbi5yZWxlYXNlKCksIHRva2VuaXplci5yZWxlYXNlKCkpOwor
ICAgIGRpc2NhcmRTcGVjdWxhdGlvbnNBbmRSZXN1bWVGcm9tKGNodW5rLCB0b2tlbi5yZWxlYXNl
KCksIHRva2VuaXplci5yZWxlYXNlKCkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0
cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlz
Y2FyZFNwZWN1bGF0aW9uc0FuZFJlc3VtZUZyb20oUGFzc093blB0cjxQYXJzZWRDaHVuaz4gbGFz
dENodW5rQmVmb3JlU2NyaXB0LCBQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25Q
dHI8SFRNTFRva2VuaXplcj4gdG9rZW5pemVyKQogewogICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tl
QWxsKCk7CiAgICAgbV9zcGVjdWxhdGlvbnMuY2xlYXIoKTsKQEAgLTM3MywzMCArMzc3LDMxIEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxI
VE1MVG9rZW4+IHRva2VuLCBQYXNzT3duCiAgICAgY2hlY2twb2ludC0+dG9rZW4gPSB0b2tlbjsK
ICAgICBjaGVja3BvaW50LT50b2tlbml6ZXIgPSB0b2tlbml6ZXI7CiAgICAgY2hlY2twb2ludC0+
dHJlZUJ1aWxkZXJTdGF0ZSA9IEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvcjo6c3RhdGVGb3IobV90
cmVlQnVpbGRlci5nZXQoKSk7Ci0gICAgY2hlY2twb2ludC0+aW5wdXRDaGVja3BvaW50ID0gbV9j
dXJyZW50Q2h1bmstPmlucHV0Q2hlY2twb2ludDsKLSAgICBjaGVja3BvaW50LT5wcmVsb2FkU2Nh
bm5lckNoZWNrcG9pbnQgPSBtX2N1cnJlbnRDaHVuay0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50
OworICAgIGNoZWNrcG9pbnQtPmlucHV0Q2hlY2twb2ludCA9IGxhc3RDaHVua0JlZm9yZVNjcmlw
dC0+aW5wdXRDaGVja3BvaW50OworICAgIGNoZWNrcG9pbnQtPnByZWxvYWRTY2FubmVyQ2hlY2tw
b2ludCA9IGxhc3RDaHVua0JlZm9yZVNjcmlwdC0+cHJlbG9hZFNjYW5uZXJDaGVja3BvaW50Owog
ICAgIGNoZWNrcG9pbnQtPnVucGFyc2VkSW5wdXQgPSBtX2lucHV0LmN1cnJlbnQoKS50b1N0cmlu
ZygpLmlzb2xhdGVkQ29weSgpOwotICAgIG1faW5wdXQuY3VycmVudCgpLmNsZWFyKCk7Ci0gICAg
bV9jdXJyZW50Q2h1bmsuY2xlYXIoKTsKKyAgICBtX2lucHV0LmN1cnJlbnQoKS5jbGVhcigpOyAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGluc3RlYWQgb2YgY2xlYXJlZC4KIAog
ICAgIEFTU0VSVChjaGVja3BvaW50LT51bnBhcnNlZElucHV0LmlzU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZCgpKTsKICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmlu
ZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJlc3VtZUZyb20sIG1fYmFja2dyb3VuZFBhcnNlciwg
Y2hlY2twb2ludC5yZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBy
b2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1
bms+IGNodW5rKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zy
b21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IHBvcENodW5rKQogewog
ICAgIC8vIEFTU0VSVCB0aGF0IHRoaXMgb2JqZWN0IGlzIGJvdGggYXR0YWNoZWQgdG8gdGhlIERv
Y3VtZW50IGFuZCBwcm90ZWN0ZWQuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgPj0gMik7CiAgICAg
QVNTRVJUKHNob3VsZFVzZVRocmVhZGluZygpKTsKICAgICBBU1NFUlQoIW1fdG9rZW5pemVyKTsK
ICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3Jp
cHQpOwogCiAgICAgQWN0aXZlUGFyc2VyU2Vzc2lvbiBzZXNzaW9uKGNvbnRleHRGb3JQYXJzaW5n
U2Vzc2lvbigpKTsKKyAgICBPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKHBvcENodW5rKTsKKyAg
ICBPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gY2h1bmstPnRva2Vucy5y
ZWxlYXNlKCk7CiAKLSAgICBtX2N1cnJlbnRDaHVuayA9IGNodW5rOwotICAgIE93blB0cjxDb21w
YWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMgPSBtX2N1cnJlbnRDaHVuay0+dG9rZW5zLnJlbGVh
c2UoKTsKKyAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFj
a2dyb3VuZEhUTUxQYXJzZXI6OnN0YXJ0ZWRDaHVua1dpdGhDaGVja3BvaW50LCBtX2JhY2tncm91
bmRQYXJzZXIsIGNodW5rLT5pbnB1dENoZWNrcG9pbnQpKTsKIAotICAgIGZvciAoWFNTSW5mb1N0
cmVhbTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2N1cnJlbnRDaHVuay0+eHNzSW5mb3MuYmVnaW4o
KTsgaXQgIT0gbV9jdXJyZW50Q2h1bmstPnhzc0luZm9zLmVuZCgpOyArK2l0KSB7CisgICAgZm9y
IChYU1NJbmZvU3RyZWFtOjpjb25zdF9pdGVyYXRvciBpdCA9IGNodW5rLT54c3NJbmZvcy5iZWdp
bigpOyBpdCAhPSBjaHVuay0+eHNzSW5mb3MuZW5kKCk7ICsraXQpIHsKICAgICAgICAgbV90ZXh0
UG9zaXRpb24gPSAoKml0KS0+bV90ZXh0UG9zaXRpb247CiAgICAgICAgIG1feHNzQXVkaXRvckRl
bGVnYXRlLmRpZEJsb2NrU2NyaXB0KCoqaXQpOyAKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQpA
QCAtNDI4LDcgKzQzMyw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2Vk
Q2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiAgICAgICAgIGlmIChp
c1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdCArIDEgPT0gdG9r
ZW5zLT5lbmQoKSk7IC8vIFRoZSA8L3NjcmlwdD4gaXMgYXNzdW1lZCB0byBiZSB0aGUgbGFzdCB0
b2tlbiBvZiB0aGlzIGJ1bmNoLgogICAgICAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVC
dWlsZGVyKCk7Ci0gICAgICAgICAgICB2YWxpZGF0ZVNwZWN1bGF0aW9ucygpOworICAgICAgICAg
ICAgdmFsaWRhdGVTcGVjdWxhdGlvbnMoY2h1bmsucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKQEAgLTQ1NSw2ICs0NjAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHVtcFBlbmRpbmdTcGVjdWxhdGlvbnMoKQogICAgIC8vIG1fdG9rZW5pemVyIGFuZCBt
X3Rva2VuIGRvbid0IGhhdmUgc3RhdGUgdGhhdCBpbnZhbGlkYXRlcyBtX3NwZWN1bGF0aW9ucy4K
ICAgICBBU1NFUlQoIW1fdG9rZW5pemVyKTsKICAgICBBU1NFUlQoIW1fdG9rZW4pOworICAgIEFT
U0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogCiAgICAgLy8gRklYTUU6IFBhc3MgaW4g
Y3VycmVudCBpbnB1dCBsZW5ndGguCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVu
dCgpLCBsaW5lTnVtYmVyKCkuemVyb0Jhc2VkSW50KCkpOwpAQCAtODczLDcgKzg3OSw4IEBAIHZv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24o
KQogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIGlmIChtX2hhdmVCYWNr
Z3JvdW5kUGFyc2VyKSB7Ci0gICAgICAgIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7CisgICAgICAg
IHZhbGlkYXRlU3BlY3VsYXRpb25zKG1fbGFzdENodW5rQmVmb3JlU2NyaXB0LnJlbGVhc2UoKSk7
CisgICAgICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3JpcHQpOwogICAgICAgICAvLyBw
cm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJz
ZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgICAgIC8vIGJ1dCB3ZSBu
ZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICAgICAgUmVmUHRyPEhUTUxE
b2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNjEwMDRlMjc3ZTg0NzcwMjNkYWI1MzMw
NmY1NjE3MmI1ZTlkMmMzYy4uMWRhZWVmM2RiZjlmZGQyZjgyODBhZjkwM2I1ODNmYmJiOWJkYzE1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmgKQEAgLTE0Myw4ICsxNDMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1M
X1BBUlNFUikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3Rv
cEJhY2tncm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKCk7Ci0g
ICAgdm9pZCBkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3du
UHRyPEhUTUxUb2tlbml6ZXI+KTsKKyAgICB2b2lkIHZhbGlkYXRlU3BlY3VsYXRpb25zKFBhc3NP
d25QdHI8UGFyc2VkQ2h1bms+IGxhc3RDaHVuayk7CisgICAgdm9pZCBkaXNjYXJkU3BlY3VsYXRp
b25zQW5kUmVzdW1lRnJvbShQYXNzT3duUHRyPFBhcnNlZENodW5rPiBsYXN0Q2h1bmssIFBhc3NP
d25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPik7CiAgICAgdm9pZCBw
cm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENo
dW5rPik7CiAgICAgdm9pZCBwdW1wUGVuZGluZ1NwZWN1bGF0aW9ucygpOwogI2VuZGlmCkBAIC0x
OTYsNyArMTk2LDkgQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9yRGVsZWdhdGUgbV94c3NBdWRp
dG9yRGVsZWdhdGU7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgT3du
UHRyPFBhcnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICAvLyBGSVhNRTogbV9sYXN0Q2h1
bmtCZWZvcmVTY3JpcHQsIG1fdG9rZW5pemVyLCBtX3Rva2VuLCBhbmQgbV9pbnB1dCBzaG91bGQg
YmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QKKyAgICAvLyBzbyB0aGV5IGNh
biBiZSBzZXQgYW5kIGNsZWFyZWQgdG9nZXRoZXIgYW5kIHBhc3NlZCBiZXR3ZWVuIHRocmVhZHMg
dG9nZXRoZXIuCisgICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2xhc3RDaHVua0JlZm9yZVNjcmlw
dDsKICAgICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAg
V2Vha1B0ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogICAgIFdl
YWtQdHI8QmFja2dyb3VuZEhUTUxQYXJzZXI+IG1fYmFja2dyb3VuZFBhcnNlcjsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2
OGMxZTRmYWQyNjUyMmI2MGMzNWZmZDA5YzUwZTJkYzI4MDM5ZDllLi5jYmY0ZWY3NzY5YmJmZmY1
ZGZmODJlYTQxNGNmODI1NTM4ODcyNGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDMt
MTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhU
TUwgUGFyc2VyIHNob3VsZCBsaW1pdCBzcGVjdWxhdGlvbiB0byBhdm9pZCB1c2luZyB0b28gbXVj
aCBtZW1vcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGVz
dCB0aGF0IHRoaXMgZml4ZXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMDU0NiBmb3IgdGhlIHRocmVhZGVkIHBhcnNlci4KKyAgICAgICAgUG9ydHMgdXNpbmcgdGhl
IG1haW4tdGhyZWFkIHBhcnNlciBhcmUgZXhwZWN0ZWQgdG8gZmFpbCAoQVNTRVJUIGluIERlYnVn
KS4KKworICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5
LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9wYXJzZXIvZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9wYXJzZXIvZXh0ZXJuYWwtc2NyaXB0LWRv
Y3VtZW50LXdyaXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL3Jlc291cmNl
cy9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUuanM6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTMtMDMtMTMgIEJydW5vIGRlIE9saXZlaXJhIEFiaW5hZGVyICA8YnJ1bm8uYWJpbmFkZXJA
YmFzeXNrb20uY29tPgogCiAgICAgICAgIFtjc3MzLXRleHRdIEFkZCBzdXBwb3J0IGZvciB0ZXh0
LWRlY29yYXRpb24tY29sb3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2Rv
Y3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9y
ZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWYyMmU5YTQzMWFkMDI3MjcxM2I3MWZk
Yzg3OTQwMTZjOGVmMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9h
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyYmU5NjdiY2Q3Mzk1MDJhODk1YjAzNjdkMTk4MjZjMzFlYTAw
ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13
cml0ZS1wYXJ0aWFsLWVudGl0eS1iZWZvcmUtbG9hZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNj
cmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
Kzwvc2NyaXB0PgorPGRpdiBpZD0idGVzdCI+PHNjcmlwdCBvbmJlZm9yZWxvYWQ9ImRvY3VtZW50
LndyaXRlKCcmJykiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZG9jdW1lbnQud3JpdGUoJ2cn
KTsiPjwvc2NyaXB0PnQ7PC9kaXY+Cis8c2NyaXB0PgordmFyIHRlc3REaXYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOwordGVzdERpdi50ZXh0Q29udGVudCA9ICh0ZXN0RGl2LnRl
eHRDb250ZW50ID09ICc+JykgPyAiUEFTUyIgOiAoIkZBSUwgOiAiICsgdGVzdERpdi50ZXh0Q29u
dGVudCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2V4
dGVybmFsLXNjcmlwdC1kb2N1bWVudC13cml0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3BhcnNlci9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5MmNkMjgyMjI5OGFkZGQ2ZWEwNGQ1NWFkNGRhZjE4NDA1NGM3NjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9leHRlcm5hbC1zY3JpcHQtZG9j
dW1lbnQtd3JpdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCis8UEFTUz4gPC0gU2hv
dWxkIHNheSA8UEFTUz4gYmVmb3JlIHRoaXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVudC13cml0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9wYXJzZXIvZXh0ZXJuYWwtc2NyaXB0LWRvY3VtZW50LXdyaXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjFkMzI2MTA5Y2Y2MDFlMmQ3ODg4ZDIyZjUwZWExYmMwZTU1ZTEwNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVu
dC13cml0ZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUuanMiPjwvc2NyaXB0
PgorPFBBU1M+IDwtIFNob3VsZCBzYXkgPFBBU1M+IGJlZm9yZSB0aGlzLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVzb3VyY2VzL2V4dGVybmFsLXNjcmlwdC1kb2N1bWVu
dC13cml0ZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3Jlc291cmNlcy9leHRlcm5hbC1z
Y3JpcHQtZG9jdW1lbnQtd3JpdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBlNmQ1NmI2MTJiYTMxMmI1MTgx
N2Y1NmI5NzBiMTljZGE0NmVhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL3Jlc291cmNlcy9leHRlcm5hbC1zY3JpcHQtZG9jdW1lbnQtd3JpdGUuanMKQEAgLTAs
MCArMSBAQAorZG9jdW1lbnQud3JpdGUoIjxwbGFpbnRleHQ+Iik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI1YWYxODQ2OTBkMTE2YzFiNDU0OWJiNzMw
MzhlZjIyZjAxODdlN2YuLmNkODNkMGEwMzBiNjdmYzM4ZWI2YzNkYWJmMjY1NzQ0MWM5ZTQ0YzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC00OTEsNyAr
NDkxLDggQEAgd2Via2l0Lm9yZy9iLzExMDY5NSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1sb2NhbC1zdG9yYWdlLmh0bWwgWyBDcmFzaAogd2Via2l0Lm9yZy9iLzExMDY5NSBodHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1wbHVnaW4tYWxsb3dlZC5odG1sIFsgQ3Jhc2gg
UGFzcyBdCiB3ZWJraXQub3JnL2IvMTEwNjk1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLXBsdWdpbi1wcml2YXRlLWJyb3dzaW5nLXRvZ2dsZWQtYWxsb3dlZC5odG1sIFsgQ3Jhc2gg
UGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xMTE0NDkgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgQ3Jhc2ggXQord2Via2l0Lm9yZy9iLzExMDU0
NiBbIERlYnVnIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtZmlnaHRpbmctZW9mLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1sb2FkLmh0bWwgWyBTa2lwIF0KIAogd2Vi
a2l0Lm9yZy9iLzExMjE1MiBbIERlYnVnIF0gYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRo
LWVsZW1lbnRzLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMTEyMTUyIFsgRGVidWcgXSBh
Y2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sIFsgQ3Jhc2gg
XQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxYjY0YmM2
MmExZTY5MjI3YmE2YmU3YWU3ZGE4NjQwNjRiODBjOGRiLi4zYzQ3MzA2ZTE0ZjQ5NzJhN2ZjYjhj
Mzc1YWVkMTI4MTVhMzVmY2U1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMTQ1MCw3ICsxNDUwLDggQEAgd2Via2l0Lm9yZy9iLzExMTUyMSBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3Rpb24taW4taWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbCBbIEMKIAog
d2Via2l0Lm9yZy9iLzExMTYxMyBwbGF0Zm9ybS9tYWMvZmFzdC9zcGVlY2hzeW50aGVzaXMvc3Bl
ZWNoLXN5bnRoZXNpcy1jYW5jZWwuaHRtbCBbIENyYXNoIFBhc3MgXQogCi13ZWJraXQub3JnL2Iv
MTEwNTQ2IGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgQ3Jh
c2ggXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9wYXJzZXIvZG9jdW1lbnQt
d3JpdGUtZmlnaHRpbmctZW9mLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMTA1NDYgWyBE
RUJVRyBdIGZhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtZW50aXR5LWJlZm9yZS1s
b2FkLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzExMTY0NyBzcHV0bmlrL0NvbmZvcm1h
bmNlLzA3X0xleGljYWxfQ29udmVudGlvbnMvNy44X0xpdGVyYWxzLzcuOC41X1JlZ3VsYXJfRXhw
cmVzc2lvbl9MaXRlcmFscy9TNy44LjVfQTEuMV9UMi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTExNjQ3IHNwdXRuaWsvQ29uZm9ybWFuY2UvMDdfTGV4aWNhbF9Db252ZW50aW9ucy83Ljhf
TGl0ZXJhbHMvNy44LjVfUmVndWxhcl9FeHByZXNzaW9uX0xpdGVyYWxzL1M3LjguNV9BMi4xX1Qy
Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDlkOTQyNTYwYWZkYWJhODgwZjE1OGM0OWUzODU4Y2ZiM2Y3MDcyNzAuLmVkOTI0Nzk0YjM3
ZDNlOGZjODQ1Y2I5Y2ZmNzkwMGU0MWJlNTQ0MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTkwNCw3ICsxOTA0LDggQEAgd2Via2l0Lm9yZy9iLzEwODUw
OCBmYXN0L2NhbnZhcy9jYW52YXMtY3VycmVudFBhdGguaHRtbCBbIFNraXAgXQogCiB3ZWJraXQu
b3JnL2IvMTExMjkwIGZhc3QvcmVnaW9ucy9zZWFtbGVzcy1pZnJhbWUtZmxvd2VkLWludG8tcmVn
aW9ucy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xMTE0NDkgWyBERUJVRyBdIGZhc3Qv
cGFyc2VyL2RvY3VtZW50LXdyaXRlLWZpZ2h0aW5nLWVvZi5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMTEwNTQ2IFsgREVCVUcgXSBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1maWdodGlu
Zy1lb2YuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzExMDU0NiBbIERFQlVHIF0gZmFzdC9w
YXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1lbnRpdHktYmVmb3JlLWxvYWQuaHRtbCBbIFNr
aXAgXQogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgZmFpbGluZyBzZWN1cml0eSB0ZXN0
cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>