<?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>121130</bug_id>
          
          <creation_ts>2013-09-10 15:54:36 -0700</creation_ts>
          <short_desc>Unexpected word wrapping for wrapped content then raw content</short_desc>
          <delta_ts>2013-10-15 02:15: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>Layout and Rendering</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>robert</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>927562</commentid>
    <comment_count>0</comment_count>
      <attachid>211259</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-10 15:54:36 -0700</bug_when>
    <thetext>Created attachment 211259
[TEST] Reduction

See attached test case. Wrapping in WebKit trunk differs from Safari 6.0.4 as well as Firefox and Chrome dev builds.

TEST:

&gt; &lt;div style=&quot;width: 3em; word-wrap: break-word;&quot;&gt;
&gt; 12345678
&gt; &lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;
&gt; &lt;/div&gt;

EXPECTED:

&gt; 123456
&gt; 78
&gt; 123456
&gt; 78

ACTUAL:

&gt; 123456
&gt; 78
&gt; 1234567
&gt; 8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927563</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-10 15:55:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/14959559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927612</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-10 18:12:48 -0700</bug_when>
    <thetext>Easier test case (less looping through code!)

&gt; &lt;div style=&quot;width: 3em; word-wrap: break-word;&quot;&gt;
&gt; 12345678&lt;br&gt;
&gt; 1234567&lt;span&gt;8&lt;/span&gt;
&gt; &lt;/div&gt;

Zalan and Robert made changes in this area recently. I&apos;ll see if I can find when it regressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927615</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-10 18:20:14 -0700</bug_when>
    <thetext>Interesting. It looks like behavior changed with r152793, a change by Zalan:
&lt;http://trac.webkit.org/changeset/152793&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927619</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-10 18:38:08 -0700</bug_when>
    <thetext>So it looks like the &quot;!current.m_pos&quot; in this case might be mis-diagnosing input as an empty inline element?

+        } else if (!width.committedWidth() &amp;&amp; (!current.m_obj || !current.m_obj-&gt;isBR()) &amp;&amp; !current.m_pos) {
+            // Do not push the current object to the next line, when this line has some content, but it is still considered empty.
+            // Empty inline elements like &lt;span&gt;&lt;/span&gt; can produce such lines and now we just ignore these break opportunities
+            // at the start of a line, if no width has been committed yet.
+            // Behave as if it was actually empty and consume at least one object.
+            lBreak.increment();
         }

Zalan, any ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928335</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-09-12 09:32:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; So it looks like the &quot;!current.m_pos&quot; in this case might be mis-diagnosing input as an empty inline element?
&gt; 
&gt; +        } else if (!width.committedWidth() &amp;&amp; (!current.m_obj || !current.m_obj-&gt;isBR()) &amp;&amp; !current.m_pos) {
&gt; +            // Do not push the current object to the next line, when this line has some content, but it is still considered empty.
&gt; +            // Empty inline elements like &lt;span&gt;&lt;/span&gt; can produce such lines and now we just ignore these break opportunities
&gt; +            // at the start of a line, if no width has been committed yet.
&gt; +            // Behave as if it was actually empty and consume at least one object.
&gt; +            lBreak.increment();
&gt;          }
&gt; 
&gt; Zalan, any ideas?
I knew it was going to break something :( ...yes, it looks like a misdiagnosis of an &quot;empty line&quot; when we decide about the line breaking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929451</commentid>
    <comment_count>6</comment_count>
      <attachid>211712</attachid>
    <who name="alan">zalan</who>
    <bug_when>2013-09-15 09:06:39 -0700</bug_when>
    <thetext>Created attachment 211712
some more reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929471</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-09-15 11:40:48 -0700</bug_when>
    <thetext>I suspect canBreakAtThisPosition() should allow breaking for &quot;word-wrap: break-word;&quot; when the content does not fit the line. For some reason, it currently returns false. I am looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930348</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-09-17 12:38:16 -0700</bug_when>
    <thetext>I think I have the fix for this, patch is coming up soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933056</commentid>
    <comment_count>9</comment_count>
      <attachid>212592</attachid>
    <who name="alan">zalan</who>
    <bug_when>2013-09-25 09:58:41 -0700</bug_when>
    <thetext>Created attachment 212592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933307</commentid>
    <comment_count>10</comment_count>
      <attachid>212592</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-25 18:43:57 -0700</bug_when>
    <thetext>Comment on attachment 212592
Patch

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

&gt; Source/WebCore/rendering/LineWidth.cpp:158
&gt; +    UncommittedWidthMap::const_iterator it = m_uncommittedWidthMap.find(&amp;object);
&gt; +    if (it != m_uncommittedWidthMap.end())
&gt; +        return it-&gt;value;
&gt; +    return -1;

If this was returning 0 we could just use get, which would result in easier to read code. But I assume there’s a good reason we need to return -1 rather than 0.

&gt; Source/WebCore/rendering/LineWidth.cpp:169
&gt; +    UncommittedWidthMap::iterator it = m_uncommittedWidthMap.find(&amp;current);
&gt; +    if (it == m_uncommittedWidthMap.end())
&gt; +        m_uncommittedWidthMap.add(&amp;current, delta);
&gt; +    else
&gt; +        it-&gt;value += delta;

This is the way to write this efficiently:

    auto result = m_uncommittedWidthMap.add(&amp;current, delta);
    if (!result.isNewEntry)
        result.iterator-&gt;value += delta;

Writing it this way does only a single hash table lookup, even the first time.

&gt; Source/WebCore/rendering/LineWidth.h:95
&gt; +    typedef HashMap&lt;const RenderObject*, float&gt; UncommittedWidthMap;
&gt; +    UncommittedWidthMap m_uncommittedWidthMap;

Our more modern style is to not use a typedef, and use “auto” instead when defining iterators. I suggest following that style instead.

Is it really OK to add a map to every one of these? Even empty maps are relatively big objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933452</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-09-26 05:49:41 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/rendering/LineWidth.cpp:169
&gt; &gt; +    UncommittedWidthMap::iterator it = m_uncommittedWidthMap.find(&amp;current);
&gt; &gt; +    if (it == m_uncommittedWidthMap.end())
&gt; &gt; +        m_uncommittedWidthMap.add(&amp;current, delta);
&gt; &gt; +    else
&gt; &gt; +        it-&gt;value += delta;
&gt; 
&gt; This is the way to write this efficiently:
&gt; 
&gt;     auto result = m_uncommittedWidthMap.add(&amp;current, delta);
&gt;     if (!result.isNewEntry)
&gt;         result.iterator-&gt;value += delta;
&gt; 
&gt; Writing it this way does only a single hash table lookup, even the first time.
&gt; 
&gt; &gt; Source/WebCore/rendering/LineWidth.h:95
&gt; &gt; +    typedef HashMap&lt;const RenderObject*, float&gt; UncommittedWidthMap;
&gt; &gt; +    UncommittedWidthMap m_uncommittedWidthMap;
&gt; 
&gt; Our more modern style is to not use a typedef, and use “auto” instead when defining iterators. I suggest following that style instead.
&gt; 
Thanks for the style/efficiency corrections above! I&apos;ve already seen all of them (and used them), but apparently old reflexes came back. :(

(In reply to comment #10)
&gt; (From update of attachment 212592 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212592&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/LineWidth.cpp:158
&gt; &gt; +    UncommittedWidthMap::const_iterator it = m_uncommittedWidthMap.find(&amp;object);
&gt; &gt; +    if (it != m_uncommittedWidthMap.end())
&gt; &gt; +        return it-&gt;value;
&gt; &gt; +    return -1;
&gt; 
&gt; If this was returning 0 we could just use get, which would result in easier to read code. But I assume there’s a good reason we need to return -1 rather than 0.
There are objects (&lt;br&gt;) with 0 uncommitted length, so 0 is a valid value.

&gt; Is it really OK to add a map to every one of these? Even empty maps are relatively big objects.
It&apos;s a stack allocated helper object in LineBreaker::nextSegmentBreak().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933456</commentid>
    <comment_count>12</comment_count>
      <attachid>212696</attachid>
    <who name="alan">zalan</who>
    <bug_when>2013-09-26 06:01:34 -0700</bug_when>
    <thetext>Created attachment 212696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933457</commentid>
    <comment_count>13</comment_count>
      <attachid>212696</attachid>
    <who name="alan">zalan</who>
    <bug_when>2013-09-26 06:02:23 -0700</bug_when>
    <thetext>Comment on attachment 212696
Patch

EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933908</commentid>
    <comment_count>14</comment_count>
      <attachid>212696</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-27 05:46:39 -0700</bug_when>
    <thetext>Comment on attachment 212696
Patch

Clearing flags on attachment: 212696

Committed r156536: &lt;http://trac.webkit.org/changeset/156536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933909</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-27 05:46:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937209</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-07 13:06:20 -0700</bug_when>
    <thetext>This seems to have caused ~5% regression in inline layout performance:

https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mountainlion%22%2C%22Layout%2Fline-layout%3ARuns%22%5D%5D&amp;days=154&amp;zoom=%5B1380171301992.8076%2C1380436865631.5427%5D

I don&apos;t think it is a good idea to put a hash lookup into middle of this super hot code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937210</commentid>
    <comment_count>17</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-10-07 13:08:33 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; This seems to have caused ~5% regression in inline layout performance:
&gt; 
&gt; https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mountainlion%22%2C%22Layout%2Fline-layout%3ARuns%22%5D%5D&amp;days=154&amp;zoom=%5B1380171301992.8076%2C1380436865631.5427%5D
&gt; 
&gt; I don&apos;t think it is a good idea to put a hash lookup into middle of this super hot code.
Indeed. Let me find a different way to address this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937482</commentid>
    <comment_count>18</comment_count>
      <attachid>212696</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-08 03:27:58 -0700</bug_when>
    <thetext>Comment on attachment 212696
Patch

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

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:3286
&gt; +        } else if (!current.m_pos &amp;&amp; !width.committedWidth() &amp;&amp; current.m_obj &amp;&amp; width.uncommittedWidthForObject(*current.m_obj) == width.uncommittedWidth()) {

Basically the question is if there was any uncommitted width before processing the current object, right? Maybe a boolean to save that information on top of the loop would be enough?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937483</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-08 03:34:49 -0700</bug_when>
    <thetext>It might be better to roll this out while pondering a better solution as it is bit invasive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937495</commentid>
    <comment_count>20</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-10-08 06:06:52 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 212696 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212696&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:3286
&gt; &gt; +        } else if (!current.m_pos &amp;&amp; !width.committedWidth() &amp;&amp; current.m_obj &amp;&amp; width.uncommittedWidthForObject(*current.m_obj) == width.uncommittedWidth()) {
&gt; 
&gt; Basically the question is if there was any uncommitted width before processing the current object, right? Maybe a boolean to save that information on top of the loop would be enough?

It&apos;s a bit more involved than that, but yea, let&apos;s roll this out while finding a better fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937505</commentid>
    <comment_count>21</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-10-08 07:39:56 -0700</bug_when>
    <thetext>rolled out http://trac.webkit.org/changeset/157100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939304</commentid>
    <comment_count>22</comment_count>
      <attachid>214108</attachid>
    <who name="alan">zalan</who>
    <bug_when>2013-10-13 12:33:30 -0700</bug_when>
    <thetext>Created attachment 214108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939305</commentid>
    <comment_count>23</comment_count>
      <attachid>214108</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-13 12:37:14 -0700</bug_when>
    <thetext>Comment on attachment 214108
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939395</commentid>
    <comment_count>24</comment_count>
      <attachid>214108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 02:42:20 -0700</bug_when>
    <thetext>Comment on attachment 214108
Patch

Clearing flags on attachment: 214108

Committed r157391: &lt;http://trac.webkit.org/changeset/157391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939396</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 02:42:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939897</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-15 02:07:39 -0700</bug_when>
    <thetext>Looks like this regressed line layout performance by 4-5% on Layout/line-layout:Runs:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-lion%22%2C%22Layout%2Fline-layout%3ARuns%22%5D%2C%5B%22mac-mountainlion%22%2C%22Layout%2Fline-layout%3ARuns%22%5D%5D&amp;days=56</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939904</commentid>
    <comment_count>27</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2013-10-15 02:15:02 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Looks like this regressed line layout performance by 4-5% on Layout/line-layout:Runs:
&gt; https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-lion%22%2C%22Layout%2Fline-layout%3ARuns%22%5D%2C%5B%22mac-mountainlion%22%2C%22Layout%2Fline-layout%3ARuns%22%5D%5D&amp;days=56

I believe it was addressed by the rollout (you can see the perf recovery around 10/8) and a new fix was landed yesterday.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>211259</attachid>
            <date>2013-09-10 15:54:36 -0700</date>
            <delta_ts>2013-09-15 09:06:39 -0700</delta_ts>
            <desc>[TEST] Reduction</desc>
            <filename>line-break-reduction.html</filename>
            <type>text/html</type>
            <size>178</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">PGRpdiBzdHlsZT0id2lkdGg6IDNlbTsgd29yZC13cmFwOiBicmVhay13b3JkOyI+CjEyMzQ1Njc4
CjxzcGFuPjE8L3NwYW4+PHNwYW4+Mjwvc3Bhbj48c3Bhbj4zPC9zcGFuPjxzcGFuPjQ8L3NwYW4+
PHNwYW4+NTwvc3Bhbj48c3Bhbj42PC9zcGFuPjxzcGFuPjc8L3NwYW4+PHNwYW4+ODwvc3Bhbj4K
PC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>211712</attachid>
            <date>2013-09-15 09:06:39 -0700</date>
            <delta_ts>2013-09-15 09:06:39 -0700</delta_ts>
            <desc>some more reduction</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>202</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogIDxzdHlsZT4KICAgIGRpdiB7IAogICAgICBib3JkZXI6IDFweCBzb2xp
ZCByZWQ7IAogICAgICB3aWR0aDogMTZweDsgCiAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsK
ICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PjxkaXY+PHNwYW4+MTIzPC9zcGFuPjxzcGFu
PjQ8L3NwYW4+PC9kaXY+PC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212592</attachid>
            <date>2013-09-25 09:58:41 -0700</date>
            <delta_ts>2013-09-26 06:01:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121130-20130925185835.patch</filename>
            <type>text/plain</type>
            <size>13014</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdlMGQ5YjYyZjQwMTYw
MmMwNmMzMmI4NTQwMmJiNjQxMTFkMDk0MC4uMzZlMTU4ZjM2MzA1YWJlMjcxMTczZTc2YjQ1Y2Q4
YmVhYzQ5NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA5LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVW5leHBlY3RlZCB3b3JkIHdy
YXBwaW5nIGZvciB3cmFwcGVkIGNvbnRlbnQgdGhlbiByYXcgY29udGVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTEzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gZGVjaWRpbmcgd2hldGhl
ciBhIGxpbmUgaXMgY29uc2lkZXJlZCBlbXB0eSwgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY3Vy
cmVudAorICAgICAgICBvYmplY3QgaXMgZnVsbHkgcmVzcG9uc2libGUgZm9yIHRoZSBjdXJyZW50
bHkgdW5jb21taXR0ZWQgd2lkdGguIEl0IGhlbHBzIGRpZmZlcmVudGlhdGluZworICAgICAgICA8
c3Bhbj48L3NwYW4+PHNwYW4+YWJjZDwvc3Bhbj4gZnJvbSA8c3Bhbj5hPC9zcGFuPjxzcGFuPmJj
ZDwvc3Bhbj4sIHdoZXJlIGluIHRoZSBmaXJzdAorICAgICAgICBjYXNlIHdoZW4gd2UgaGl0IHRo
ZSBzZWNvbmQgPHNwYW4+IHRoZSBsaW5lIGlzIHN0aWxsIGNvbnNpZGVyZWQgZW1wdHksIGFzIG9w
cG9zZWQgdG8gdGhlCisgICAgICAgIHNlY29uZCBleGFtcGxlLgorICAgICAgICBUaGlzIHBhdGNo
IGludHJvZHVjZXMgYSBtYXAgdG8ga2VlcCB0cmFjayBvZiB0aGUgdW5jb21taXR0ZWQgd2lkdGhz
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3VuZXhwZWN0ZWQtd29yZC13cmFwcGluZy13aXRo
LW5vbi1lbXB0eS1zcGFucy5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvTGluZVdpZHRoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6dW5jb21taXR0ZWRXaWR0aEZvck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmFkZFVuY29tbWl0dGVkV2lkdGgpOgor
ICAgICAgICAqIHJlbmRlcmluZy9MaW5lV2lkdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpu
ZXh0U2VnbWVudEJyZWFrKToKKwogMjAxMy0wOS0yNCAgTG9yZW56byBUaWx2ZSAgPGx0aWx2ZUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBjb21waWxhdGlvbiBwcm9ibGVtcyB3aGVu
IHNldHRpbmcgRU5BQkxFX0RSQUdfU1VQUE9SVCA9IEZBTFNFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MaW5lV2lkdGguY3BwCmluZGV4IDU2YWYzZmYxMDNiZDY3YWYxYzg1N2QwMmIzNjZjZTY0ZmU0
NmQwMzguLjZlMDczMTZhODRlOGU0NjgxMTEwMzEyNTA2MDU5ODNkMWQyOWQ5YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwCkBAIC0xNTAsNiArMTUwLDI1IEBAIHZvaWQg
TGluZVdpZHRoOjpzaHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRp
bmdPYmplY3QqIG5ld0Zsb2F0CiAgICAgY29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRS
aWdodCgpOwogfQogCitmbG9hdCBMaW5lV2lkdGg6OnVuY29tbWl0dGVkV2lkdGhGb3JPYmplY3Qo
Y29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpIGNvbnN0Cit7CisgICAgVW5jb21taXR0ZWRXaWR0
aE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3VuY29tbWl0dGVkV2lkdGhNYXAuZmluZCgmb2Jq
ZWN0KTsKKyAgICBpZiAoaXQgIT0gbV91bmNvbW1pdHRlZFdpZHRoTWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm4gaXQtPnZhbHVlOworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBMaW5lV2lkdGg6
OmFkZFVuY29tbWl0dGVkV2lkdGgoZmxvYXQgZGVsdGEsIGNvbnN0IFJlbmRlck9iamVjdCYgY3Vy
cmVudCkKK3sKKyAgICBtX3VuY29tbWl0dGVkV2lkdGggKz0gZGVsdGE7CisKKyAgICBVbmNvbW1p
dHRlZFdpZHRoTWFwOjppdGVyYXRvciBpdCA9IG1fdW5jb21taXR0ZWRXaWR0aE1hcC5maW5kKCZj
dXJyZW50KTsKKyAgICBpZiAoaXQgPT0gbV91bmNvbW1pdHRlZFdpZHRoTWFwLmVuZCgpKQorICAg
ICAgICBtX3VuY29tbWl0dGVkV2lkdGhNYXAuYWRkKCZjdXJyZW50LCBkZWx0YSk7CisgICAgZWxz
ZQorICAgICAgICBpdC0+dmFsdWUgKz0gZGVsdGE7Cit9CisKIHZvaWQgTGluZVdpZHRoOjpjb21t
aXQoKQogewogICAgIG1fY29tbWl0dGVkV2lkdGggKz0gbV91bmNvbW1pdHRlZFdpZHRoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oCmluZGV4IDQyN2M3NGFlMTg5ZmFkZDUxNDY1OTZi
NGFlZGU3NzFhNDNjMGEyOWUuLjVmMzlhZDJlMzU1NDcwNTkxNGY4ZDY0N2Y4YjcwYjMxZWM3YmIy
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNkZWZpbmUgTGluZVdpZHRoX2gKIAogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDEyICs1NCwx
MyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgY3VycmVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9j
b21taXR0ZWRXaWR0aCArIG1fdW5jb21taXR0ZWRXaWR0aDsgfQogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZXZlbnR1YWxseSByZXBsYWNlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBieSBvbmVzIHRo
YXQgd29yayBvbiBhIGhpZ2hlciBhYnN0cmFjdGlvbi4KICAgICBmbG9hdCB1bmNvbW1pdHRlZFdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1pdHRlZFdpZHRoOyB9CisgICAgZmxvYXQgdW5j
b21taXR0ZWRXaWR0aEZvck9iamVjdChjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKICAgICBm
bG9hdCBjb21taXR0ZWRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0dGVkV2lkdGg7IH0K
ICAgICBmbG9hdCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXZhaWxhYmxlV2lk
dGg7IH0KIAogICAgIHZvaWQgdXBkYXRlQXZhaWxhYmxlV2lkdGgoTGF5b3V0VW5pdCBtaW5pbXVt
SGVpZ2h0ID0gMCk7CiAgICAgdm9pZCBzaHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZO
ZWVkZWQoRmxvYXRpbmdPYmplY3QqKTsKLSAgICB2b2lkIGFkZFVuY29tbWl0dGVkV2lkdGgoZmxv
YXQgZGVsdGEpIHsgbV91bmNvbW1pdHRlZFdpZHRoICs9IGRlbHRhOyB9CisgICAgdm9pZCBhZGRV
bmNvbW1pdHRlZFdpZHRoKGZsb2F0IGRlbHRhLCBjb25zdCBSZW5kZXJPYmplY3QmKTsKICAgICB2
b2lkIGNvbW1pdCgpOwogICAgIHZvaWQgYXBwbHlPdmVyaGFuZyhSZW5kZXJSdWJ5UnVuKiwgUmVu
ZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyKTsKICAg
ICB2b2lkIGZpdEJlbG93RmxvYXRzKCk7CkBAIC04OCw2ICs5MCw5IEBAIHByaXZhdGU6CiAjZW5k
aWYKICAgICBib29sIG1faXNGaXJzdExpbmU7CiAgICAgSW5kZW50VGV4dE9yTm90IG1fc2hvdWxk
SW5kZW50VGV4dDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBm
bG9hdD4gVW5jb21taXR0ZWRXaWR0aE1hcDsKKyAgICBVbmNvbW1pdHRlZFdpZHRoTWFwIG1fdW5j
b21taXR0ZWRXaWR0aE1hcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggZmFlOTI0NDEwZmQ1ZGNlYzVmNDIx
NGQ1NjE0MWMyZTI1MDdjNWVhZC4uNDdiOGRmY2FlYTc3NjY2M2ZjNDI0NjAwNDM1ZWFhZTM5NTQ5
OWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAKQEAgLTI3NzksNyArMjc3OSw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVh
a2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJ
CiAgICAgICAgICAgICAgICAgdHJhaWxpbmdPYmplY3RzLmFwcGVuZEJveElmTmVlZGVkKGJveCk7
CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3Rz
LmFwcGVuZChib3gpOwotICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChpbmxp
bmVMb2dpY2FsV2lkdGgoY3VycmVudC5tX29iaikpOworICAgICAgICAgICAgd2lkdGguYWRkVW5j
b21taXR0ZWRXaWR0aChpbmxpbmVMb2dpY2FsV2lkdGgoY3VycmVudC5tX29iaiksICpjdXJyZW50
Lm1fb2JqKTsKICAgICAgICAgICAgIC8vIFJlc2V0IHByaW9yIGxpbmUgYnJlYWsgY29udGV4dCBj
aGFyYWN0ZXJzLgogICAgICAgICAgICAgcmVuZGVyVGV4dEluZm8ubV9saW5lQnJlYWtJdGVyYXRv
ci5yZXNldFByaW9yQ29udGV4dCgpOwogICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQubV9vYmot
PmlzRmxvYXRpbmcoKSkgewpAQCAtMjgzMCw3ICsyODMwLDcgQEAgSW5saW5lSXRlcmF0b3IgTGlu
ZUJyZWFrZXI6Om5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwg
TGluZUkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdp
ZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoaW5saW5lTG9naWNhbFdpZHRoKGN1cnJlbnQubV9vYmop
ICsgYm9yZGVyUGFkZGluZ01hcmdpblN0YXJ0KGZsb3dCb3gpICsgYm9yZGVyUGFkZGluZ01hcmdp
bkVuZChmbG93Qm94KSk7CisgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGlu
bGluZUxvZ2ljYWxXaWR0aChjdXJyZW50Lm1fb2JqKSArIGJvcmRlclBhZGRpbmdNYXJnaW5TdGFy
dChmbG93Qm94KSArIGJvcmRlclBhZGRpbmdNYXJnaW5FbmQoZmxvd0JveCksICpjdXJyZW50Lm1f
b2JqKTsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Lm1fb2JqLT5pc1JlcGxhY2VkKCkpIHsK
ICAgICAgICAgICAgIFJlbmRlckJveCogcmVwbGFjZWRCb3ggPSB0b1JlbmRlckJveChjdXJyZW50
Lm1fb2JqKTsKIApAQCAtMjg2Miw5ICsyODYyLDkgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFr
ZXI6Om5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUkK
ICAgICAgICAgICAgICAgICAgICAgaWdub3JpbmdTcGFjZXMgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAodG9SZW5kZXJMaXN0TWFya2VyKCpjdXJyZW50Lm1f
b2JqKS5pc0luc2lkZSgpKQotICAgICAgICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRl
ZFdpZHRoKHJlcGxhY2VkTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGgu
YWRkVW5jb21taXR0ZWRXaWR0aChyZXBsYWNlZExvZ2ljYWxXaWR0aCwgKmN1cnJlbnQubV9vYmop
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0
ZWRXaWR0aChyZXBsYWNlZExvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgd2lkdGguYWRk
VW5jb21taXR0ZWRXaWR0aChyZXBsYWNlZExvZ2ljYWxXaWR0aCwgKmN1cnJlbnQubV9vYmopOwog
ICAgICAgICAgICAgaWYgKGN1cnJlbnQubV9vYmotPmlzUnVieVJ1bigpKQogICAgICAgICAgICAg
ICAgIHdpZHRoLmFwcGx5T3ZlcmhhbmcodG9SZW5kZXJSdWJ5UnVuKGN1cnJlbnQubV9vYmopLCBs
YXN0LCBuZXh0KTsKICAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmlvciBsaW5lIGJyZWFrIGNvbnRl
eHQgY2hhcmFjdGVycywgdXNpbmcgVStGRkZEIChPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVS
KSBmb3IgcmVwbGFjZWQgZWxlbWVudC4KQEAgLTI5NTIsNyArMjk1Miw3IEBAIElubGluZUl0ZXJh
dG9yIExpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVz
b2x2ZXIsIExpbmVJCiAKICAgICAgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIGF1
dG9XcmFwICYmICFoeXBoZW5XaWR0aCAmJiBzdHlsZS0+aHlwaGVucygpICE9IEh5cGhlbnNOb25l
KSB7CiAgICAgICAgICAgICAgICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRo
KHQsIGYsICZmYWxsYmFja0ZvbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5j
b21taXR0ZWRXaWR0aChoeXBoZW5XaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoLmFk
ZFVuY29tbWl0dGVkV2lkdGgoaHlwaGVuV2lkdGgsICpjdXJyZW50Lm1fb2JqKTsKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBib29sIGFwcGx5V29yZFNwYWNpbmcgPSBmYWxz
ZTsKQEAgLTMwMDYsMTMgKzMwMDYsMTMgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5l
eHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUkKIAogICAg
ICAgICAgICAgICAgICAgICB3b3JkTWVhc3VyZW1lbnQud2lkdGggPSBhZGRpdGlvbmFsVGVtcFdp
ZHRoICsgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAg
IGFkZGl0aW9uYWxUZW1wV2lkdGggKz0gbGFzdFNwYWNlV29yZFNwYWNpbmc7Ci0gICAgICAgICAg
ICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCk7
CisgICAgICAgICAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25h
bFRlbXBXaWR0aCwgKmN1cnJlbnQubV9vYmopOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChj
b2xsYXBzZVdoaXRlU3BhY2UgJiYgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlICYmIGN1cnJlbnRD
aGFyYWN0ZXJJc1NwYWNlICYmIGFkZGl0aW9uYWxUZW1wV2lkdGgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aC5zZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChhZGRpdGlvbmFsVGVtcFdp
ZHRoKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoIWFwcGxpZWRTdGFydFdpZHRoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGlubGluZUxv
Z2ljYWxXaWR0aChjdXJyZW50Lm1fb2JqLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChpbmxpbmVMb2dpY2FsV2lkdGgoY3Vy
cmVudC5tX29iaiwgdHJ1ZSwgZmFsc2UpLCAqY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBsaWVkU3RhcnRXaWR0aCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IH0KIApAQCAtMzA2OCwxMCArMzA2OCwxMCBAQCBJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6
bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZXR3ZWVu
V29yZHMgfHwgKG1pZFdvcmRCcmVhayAmJiAhYXV0b1dyYXApKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKC1hZGRpdGlvbmFsVGVtcFdp
ZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0
ZWRXaWR0aCgtYWRkaXRpb25hbFRlbXBXaWR0aCwgKmN1cnJlbnQubV9vYmopOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChoeXBoZW5XaWR0aCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCB0aGUgd2lkdGggb2YgdGhlIHNvZnQgaHlwaGVuIG91
dCBzaW5jZSB3ZSBmaXQgb24gYSBsaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKC1oeXBoZW5XaWR0aCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoLWh5cGhlbldpZHRo
LCAqY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cGhl
bldpZHRoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0zMTgzLDcgKzMxODMsNyBAQCBJbmxpbmVJdGVyYXRvciBMaW5lQnJl
YWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5l
SQogICAgICAgICAgICAgYWRkaXRpb25hbFRlbXBXaWR0aCArPSBsYXN0U3BhY2VXb3JkU3BhY2lu
ZzsKIAogICAgICAgICAgICAgZmxvYXQgaW5saW5lTG9naWNhbFRlbXBXaWR0aCA9IGlubGluZUxv
Z2ljYWxXaWR0aChjdXJyZW50Lm1fb2JqLCAhYXBwbGllZFN0YXJ0V2lkdGgsIGluY2x1ZGVFbmRX
aWR0aCk7Ci0gICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGFkZGl0aW9uYWxU
ZW1wV2lkdGggKyBpbmxpbmVMb2dpY2FsVGVtcFdpZHRoKTsKKyAgICAgICAgICAgIHdpZHRoLmFk
ZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCArIGlubGluZUxvZ2ljYWxUZW1w
V2lkdGgsICpjdXJyZW50Lm1fb2JqKTsKIAogICAgICAgICAgICAgaWYgKHdvcmRNZWFzdXJlbWVu
dC5mYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMuc3dhcChmYWxsYmFj
a0ZvbnRzKTsKQEAgLTMyNzMsNyArMzI3Myw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2Vy
OjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJCiAg
ICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgY29uc3VtZSBhdCBsZWFzdCBvbmUgY2hhci9vYmpl
Y3QuCiAgICAgICAgICAgICBpZiAobEJyZWFrID09IHJlc29sdmVyLnBvc2l0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgbEJyZWFrLmluY3JlbWVudCgpOwotICAgICAgICB9IGVsc2UgaWYgKCF3aWR0
aC5jb21taXR0ZWRXaWR0aCgpICYmICghY3VycmVudC5tX29iaiB8fCAhY3VycmVudC5tX29iai0+
aXNCUigpKSAmJiAhY3VycmVudC5tX3BvcykgeworICAgICAgICB9IGVsc2UgaWYgKCFjdXJyZW50
Lm1fcG9zICYmICF3aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmIGN1cnJlbnQubV9vYmogJiYgd2lk
dGgudW5jb21taXR0ZWRXaWR0aEZvck9iamVjdCgqY3VycmVudC5tX29iaikgPT0gd2lkdGgudW5j
b21taXR0ZWRXaWR0aCgpKSB7CiAgICAgICAgICAgICAvLyBEbyBub3QgcHVzaCB0aGUgY3VycmVu
dCBvYmplY3QgdG8gdGhlIG5leHQgbGluZSwgd2hlbiB0aGlzIGxpbmUgaGFzIHNvbWUgY29udGVu
dCwgYnV0IGl0IGlzIHN0aWxsIGNvbnNpZGVyZWQgZW1wdHkuCiAgICAgICAgICAgICAvLyBFbXB0
eSBpbmxpbmUgZWxlbWVudHMgbGlrZSA8c3Bhbj48L3NwYW4+IGNhbiBwcm9kdWNlIHN1Y2ggbGlu
ZXMgYW5kIG5vdyB3ZSBqdXN0IGlnbm9yZSB0aGVzZSBicmVhayBvcHBvcnR1bml0aWVzCiAgICAg
ICAgICAgICAvLyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLCBpZiBubyB3aWR0aCBoYXMgYmVlbiBj
b21taXR0ZWQgeWV0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAyNjM3ODVjNWIyOTM3YTNlNWNjNjAzZTNjYTI5MWZkMDU5
MWM1ZjkuLmNjNDM2MWVhNTMzNGI5ZWMwNjY0ODRjZDgzNGEyMTdhNzA0Njk4MTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMy0wOS0yNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFVuZXhwZWN0ZWQgd29yZCB3cmFwcGluZyBmb3Igd3JhcHBlZCBjb250ZW50
IHRoZW4gcmF3IGNvbnRlbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjExMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIGRlY2lkaW5nIHdoZXRoZXIgYSBsaW5lIGlzIGNvbnNpZGVyZWQgZW1w
dHksIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgb2JqZWN0IGlzIGZ1
bGx5IHJlc3BvbnNpYmxlIGZvciB0aGUgY3VycmVudGx5IHVuY29tbWl0dGVkIHdpZHRoLiBJdCBo
ZWxwcyBkaWZmZXJlbnRpYXRpbmcKKyAgICAgICAgPHNwYW4+PC9zcGFuPjxzcGFuPmFiY2Q8L3Nw
YW4+IGZyb20gPHNwYW4+YTwvc3Bhbj48c3Bhbj5iY2Q8L3NwYW4+LCB3aGVyZSBpbiB0aGUgZmly
c3QKKyAgICAgICAgY2FzZSB3aGVuIHdlIGhpdCB0aGUgc2Vjb25kIDxzcGFuPiB0aGUgbGluZSBp
cyBzdGlsbCBjb25zaWRlcmVkIGVtcHR5LCBhcyBvcHBvc2VkIHRvIHRoZQorICAgICAgICBzZWNv
bmQgZXhhbXBsZS4KKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbWFwIHRvIGtlZXAg
dHJhY2sgb2YgdGhlIHVuY29tbWl0dGVkIHdpZHRocy4KKworICAgICAgICAqIGZhc3QvY3NzL3Vu
ZXhwZWN0ZWQtd29yZC13cmFwcGluZy13aXRoLW5vbi1lbXB0eS1zcGFucy1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0
aC1ub24tZW1wdHktc3BhbnMuaHRtbDogQWRkZWQuCisKIDIwMTMtMDktMjQgIERlbmlzIE5vbWl5
YW1hICA8ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQVRLXSBNaXNzaW5nIFdU
UiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVt
ZW50YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VuZXhwZWN0ZWQtd29y
ZC13cmFwcGluZy13aXRoLW5vbi1lbXB0eS1zcGFucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdW5leHBlY3RlZC13b3JkLXdyYXBwaW5nLXdpdGgtbm9uLWVtcHR5LXNwYW5z
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlMTQzZjQ0NmE4NWY1MDQ4MWYxMTI2OTQ5YzEz
NjBiOTNiNTBjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VuZXhw
ZWN0ZWQtd29yZC13cmFwcGluZy13aXRoLW5vbi1lbXB0eS1zcGFucy1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMjMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgeyAKKyAg
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgCisgICAgICB3aWR0aDogMTZweDsgCisgICAgICB3
b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3RzIGlmIG5vbi1lbXB0eSBzcGFucyBjaGFuZ2VzIHdvcmQgd3JhcHBpbmcu
PC9wPgorPGRpdj4KKyAgICAxMjM0Cis8L2Rpdj4KKzxkaXY+CisgICAgMTIzNAorPC9kaXY+Cis8
ZGl2PgorICAgIDEyMzQ1Njc4CisgICAgMTIzNDU2NzgKKzwvZGl2PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdW5leHBlY3RlZC13b3JkLXdyYXBwaW5nLXdpdGgt
bm9uLWVtcHR5LXNwYW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91bmV4cGVjdGVkLXdv
cmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHktc3BhbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2JiN2Q4
MTk1ZWJmN2Q2ZGZhMGZmNTY5ZDY4Yjk1NjBjM2ViMWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdW5leHBlY3RlZC13b3JkLXdyYXBwaW5nLXdpdGgtbm9uLWVtcHR5
LXNwYW5zLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgor
ICAgIGRpdiB7IAorICAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkOyAKKyAgICAgIHdpZHRoOiAx
NnB4OyAKKyAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAgICB9CisgIDwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgaWYgbm9uLWVtcHR5IHNwYW5zIGNoYW5nZXMg
d29yZCB3cmFwcGluZy48L3A+Cis8ZGl2PgorICAgIDxzcGFuPjEyMzwvc3Bhbj48c3Bhbj48L3Nw
YW4+PHNwYW4+NDwvc3Bhbj4KKzwvZGl2PgorPGRpdj4KKyAgICA8c3Bhbj48L3NwYW4+PHNwYW4+
MTIzPC9zcGFuPjxzcGFuPjQ8L3NwYW4+Cis8L2Rpdj4KKzxkaXY+CisgICAgMTIzNDU2NzgKKyAg
ICA8c3Bhbj4xPC9zcGFuPjxzcGFuPjI8L3NwYW4+PHNwYW4+Mzwvc3Bhbj48c3Bhbj40PC9zcGFu
PjxzcGFuPjU8L3NwYW4+PHNwYW4+Njwvc3Bhbj48c3Bhbj43PC9zcGFuPjxzcGFuPjg8L3NwYW4+
Cis8L2Rpdj4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212696</attachid>
            <date>2013-09-26 06:01:34 -0700</date>
            <delta_ts>2013-10-13 12:33:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121130-20130926150132.patch</filename>
            <type>text/plain</type>
            <size>12773</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUyYjAxOGE1ZGYyYThh
NjhkYmJjZDczZDMxNzlmZWJlMmY0NjI4OC4uNTNmMjI5OTE5YjI2MWMyNjY4OWUxNzE3NWMxMzFk
MDAwMTVlOTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA5LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVW5leHBlY3RlZCB3b3JkIHdy
YXBwaW5nIGZvciB3cmFwcGVkIGNvbnRlbnQgdGhlbiByYXcgY29udGVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTEzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gZGVjaWRpbmcgd2hldGhlciBh
IGxpbmUgaXMgY29uc2lkZXJlZCBlbXB0eSwgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY3VycmVu
dAorICAgICAgICBvYmplY3QgaXMgZnVsbHkgcmVzcG9uc2libGUgZm9yIHRoZSBjdXJyZW50bHkg
dW5jb21taXR0ZWQgd2lkdGguIEl0IGhlbHBzIGRpZmZlcmVudGlhdGluZworICAgICAgICA8c3Bh
bj48L3NwYW4+PHNwYW4+YWJjZDwvc3Bhbj4gZnJvbSA8c3Bhbj5hPC9zcGFuPjxzcGFuPmJjZDwv
c3Bhbj4sIHdoZXJlIGluIHRoZSBmaXJzdAorICAgICAgICBjYXNlIHdoZW4gd2UgaGl0IHRoZSBz
ZWNvbmQgPHNwYW4+IHRoZSBsaW5lIGlzIHN0aWxsIGNvbnNpZGVyZWQgZW1wdHksIGFzIG9wcG9z
ZWQgdG8gdGhlCisgICAgICAgIHNlY29uZCBleGFtcGxlLgorICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgYSBtYXAgdG8ga2VlcCB0cmFjayBvZiB0aGUgdW5jb21taXR0ZWQgd2lkdGhzLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3VuZXhwZWN0ZWQtd29yZC13cmFwcGluZy13aXRoLW5v
bi1lbXB0eS1zcGFucy5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvTGluZVdpZHRoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6dW5jb21taXR0ZWRXaWR0aEZvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmFkZFVuY29tbWl0dGVkV2lkdGgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9MaW5lV2lkdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpuZXh0
U2VnbWVudEJyZWFrKToKKwogMjAxMy0wOS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYmxpbmQgYXR0ZW1wdCBhdCBhIGJ1aWxkIGZp
eC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKaW5kZXggYjQxYzcxYjkzZGU3
Mjk2YjY3ZjFhMjRmMTYxNmI2NzhhNzZhNTQxNS4uZjgyNDY4NTIzYTJkNGExZGNiODljNWJjYmYy
NzI1YjI1NmI1OTU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVX
aWR0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKQEAg
LTE1MCw2ICsxNTAsMjMgQEAgdm9pZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9y
TmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVjdCogbmV3RmxvYXQKICAgICBjb21wdXRlQXZh
aWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJpZ2h0KCk7CiB9CiAKK2Zsb2F0IExpbmVXaWR0aDo6dW5j
b21taXR0ZWRXaWR0aEZvck9iamVjdChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCkgY29uc3QK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdW5jb21taXR0ZWRXaWR0aE1hcC5maW5kKCZvYmplY3Qp
OworICAgIGlmIChyZXN1bHQgIT0gbV91bmNvbW1pdHRlZFdpZHRoTWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3ZvaWQgTGluZVdp
ZHRoOjphZGRVbmNvbW1pdHRlZFdpZHRoKGZsb2F0IGRlbHRhLCBjb25zdCBSZW5kZXJPYmplY3Qm
IGN1cnJlbnQpCit7CisgICAgbV91bmNvbW1pdHRlZFdpZHRoICs9IGRlbHRhOworCisgICAgYXV0
byByZXN1bHQgPSBtX3VuY29tbWl0dGVkV2lkdGhNYXAuYWRkKCZjdXJyZW50LCBkZWx0YSk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSArPSBkZWx0YTsKK30KKwogdm9pZCBMaW5lV2lkdGg6OmNvbW1pdCgpCiB7CiAgICAgbV9jb21t
aXR0ZWRXaWR0aCArPSBtX3VuY29tbWl0dGVkV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGlu
ZVdpZHRoLmgKaW5kZXggNDI3Yzc0YWUxODlmYWRkNTE0NjU5NmI0YWVkZTc3MWE0M2MwYTI5ZS4u
ZDAwYjFjZDFlOGFjMjI5ZDM2NjIyODJkMTRlYTg3MmEwOGFhY2ZhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MaW5lV2lkdGguaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBMaW5lV2lkdGhf
aAogCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsMTIgKzU0LDEzIEBAIHB1YmxpYzoKICAgICBm
bG9hdCBjdXJyZW50V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZFdpZHRoICsgbV91
bmNvbW1pdHRlZFdpZHRoOyB9CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IHJl
cGxhY2UgdGhlc2UgdGhyZWUgZnVuY3Rpb25zIGJ5IG9uZXMgdGhhdCB3b3JrIG9uIGEgaGlnaGVy
IGFic3RyYWN0aW9uLgogICAgIGZsb2F0IHVuY29tbWl0dGVkV2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX3VuY29tbWl0dGVkV2lkdGg7IH0KKyAgICBmbG9hdCB1bmNvbW1pdHRlZFdpZHRoRm9yT2Jq
ZWN0KGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogICAgIGZsb2F0IGNvbW1pdHRlZFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRXaWR0aDsgfQogICAgIGZsb2F0IGF2YWlsYWJs
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0aDsgfQogCiAgICAgdm9pZCB1
cGRhdGVBdmFpbGFibGVXaWR0aChMYXlvdXRVbml0IG1pbmltdW1IZWlnaHQgPSAwKTsKICAgICB2
b2lkIHNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVj
dCopOwotICAgIHZvaWQgYWRkVW5jb21taXR0ZWRXaWR0aChmbG9hdCBkZWx0YSkgeyBtX3VuY29t
bWl0dGVkV2lkdGggKz0gZGVsdGE7IH0KKyAgICB2b2lkIGFkZFVuY29tbWl0dGVkV2lkdGgoZmxv
YXQgZGVsdGEsIGNvbnN0IFJlbmRlck9iamVjdCYpOwogICAgIHZvaWQgY29tbWl0KCk7CiAgICAg
dm9pZCBhcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVu
ZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIpOwogICAgIHZvaWQgZml0QmVsb3dGbG9h
dHMoKTsKQEAgLTg4LDYgKzkwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9pc0Zp
cnN0TGluZTsKICAgICBJbmRlbnRUZXh0T3JOb3QgbV9zaG91bGRJbmRlbnRUZXh0OworICAgIEhh
c2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQ+IG1fdW5jb21taXR0ZWRXaWR0aE1hcDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAKaW5kZXggZDIzZmI3YzJjMmYxMjJmZjg2NzI3YjQ1MmUyODRjYjNjMDVlOTc0
MC4uNDYyNjZjOTU2OTAzOTQ5MDNhZDNmYWQ5NDlkYThmNWI5Y2EwMWI0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTI3
ODksNyArMjc4OSw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJy
ZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJCiAgICAgICAgICAgICAgICAg
dHJhaWxpbmdPYmplY3RzLmFwcGVuZEJveElmTmVlZGVkKGJveCk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3RzLmFwcGVuZChib3gpOwotICAg
ICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChpbmxpbmVMb2dpY2FsV2lkdGgoY3Vy
cmVudC5tX29iaikpOworICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChpbmxp
bmVMb2dpY2FsV2lkdGgoY3VycmVudC5tX29iaiksICpjdXJyZW50Lm1fb2JqKTsKICAgICAgICAg
ICAgIC8vIFJlc2V0IHByaW9yIGxpbmUgYnJlYWsgY29udGV4dCBjaGFyYWN0ZXJzLgogICAgICAg
ICAgICAgcmVuZGVyVGV4dEluZm8ubV9saW5lQnJlYWtJdGVyYXRvci5yZXNldFByaW9yQ29udGV4
dCgpOwogICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQubV9vYmotPmlzRmxvYXRpbmcoKSkgewpA
QCAtMjg0MCw3ICsyODQwLDcgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRTZWdt
ZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUkKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVk
V2lkdGgoaW5saW5lTG9naWNhbFdpZHRoKGN1cnJlbnQubV9vYmopICsgYm9yZGVyUGFkZGluZ01h
cmdpblN0YXJ0KGZsb3dCb3gpICsgYm9yZGVyUGFkZGluZ01hcmdpbkVuZChmbG93Qm94KSk7Cisg
ICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGlubGluZUxvZ2ljYWxXaWR0aChj
dXJyZW50Lm1fb2JqKSArIGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydChmbG93Qm94KSArIGJvcmRl
clBhZGRpbmdNYXJnaW5FbmQoZmxvd0JveCksICpjdXJyZW50Lm1fb2JqKTsKICAgICAgICAgfSBl
bHNlIGlmIChjdXJyZW50Lm1fb2JqLT5pc1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgIFJlbmRl
ckJveCogcmVwbGFjZWRCb3ggPSB0b1JlbmRlckJveChjdXJyZW50Lm1fb2JqKTsKIApAQCAtMjg3
Miw5ICsyODcyLDkgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRTZWdtZW50QnJl
YWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUkKICAgICAgICAgICAgICAgICAg
ICAgaWdub3JpbmdTcGFjZXMgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBpZiAodG9SZW5kZXJMaXN0TWFya2VyKCpjdXJyZW50Lm1fb2JqKS5pc0luc2lkZSgpKQot
ICAgICAgICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKHJlcGxhY2VkTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0
aChyZXBsYWNlZExvZ2ljYWxXaWR0aCwgKmN1cnJlbnQubV9vYmopOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChyZXBsYWNlZExv
Z2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChy
ZXBsYWNlZExvZ2ljYWxXaWR0aCwgKmN1cnJlbnQubV9vYmopOwogICAgICAgICAgICAgaWYgKGN1
cnJlbnQubV9vYmotPmlzUnVieVJ1bigpKQogICAgICAgICAgICAgICAgIHdpZHRoLmFwcGx5T3Zl
cmhhbmcodG9SZW5kZXJSdWJ5UnVuKGN1cnJlbnQubV9vYmopLCBsYXN0LCBuZXh0KTsKICAgICAg
ICAgICAgIC8vIFVwZGF0ZSBwcmlvciBsaW5lIGJyZWFrIGNvbnRleHQgY2hhcmFjdGVycywgdXNp
bmcgVStGRkZEIChPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSKSBmb3IgcmVwbGFjZWQgZWxl
bWVudC4KQEAgLTI5NjIsNyArMjk2Miw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpu
ZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJCiAKICAg
ICAgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIGF1dG9XcmFwICYmICFoeXBoZW5X
aWR0aCAmJiBzdHlsZS0+aHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRoKHQsIGYsICZmYWxsYmFja0Zv
bnRzKTsKLSAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChoeXBo
ZW5XaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgo
aHlwaGVuV2lkdGgsICpjdXJyZW50Lm1fb2JqKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBib29sIGFwcGx5V29yZFNwYWNpbmcgPSBmYWxzZTsKQEAgLTMwMTYsMTMgKzMw
MTYsMTMgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRTZWdtZW50QnJlYWsoSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUkKIAogICAgICAgICAgICAgICAgICAgICB3
b3JkTWVhc3VyZW1lbnQud2lkdGggPSBhZGRpdGlvbmFsVGVtcFdpZHRoICsgd29yZFNwYWNpbmdG
b3JXb3JkTWVhc3VyZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxUZW1wV2lk
dGggKz0gbGFzdFNwYWNlV29yZFNwYWNpbmc7Ci0gICAgICAgICAgICAgICAgICAgIHdpZHRoLmFk
ZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCk7CisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCwgKmN1cnJl
bnQubV9vYmopOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xsYXBzZVdoaXRlU3BhY2Ug
JiYgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlICYmIGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlICYm
IGFkZGl0aW9uYWxUZW1wV2lkdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC5zZXRU
cmFpbGluZ1doaXRlc3BhY2VXaWR0aChhZGRpdGlvbmFsVGVtcFdpZHRoKTsKIAogICAgICAgICAg
ICAgICAgICAgICBpZiAoIWFwcGxpZWRTdGFydFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGlubGluZUxvZ2ljYWxXaWR0aChjdXJyZW50
Lm1fb2JqLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRk
VW5jb21taXR0ZWRXaWR0aChpbmxpbmVMb2dpY2FsV2lkdGgoY3VycmVudC5tX29iaiwgdHJ1ZSwg
ZmFsc2UpLCAqY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWVk
U3RhcnRXaWR0aCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMzA3OCwxMCAr
MzA3OCwxMCBAQCBJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJ
bmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZXR3ZWVuV29yZHMgfHwgKG1pZFdvcmRC
cmVhayAmJiAhYXV0b1dyYXApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aC5hZGRVbmNvbW1pdHRlZFdpZHRoKC1hZGRpdGlvbmFsVGVtcFdpZHRoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aCgtYWRkaXRpb25h
bFRlbXBXaWR0aCwgKmN1cnJlbnQubV9vYmopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChoeXBoZW5XaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT
dWJ0cmFjdCB0aGUgd2lkdGggb2YgdGhlIHNvZnQgaHlwaGVuIG91dCBzaW5jZSB3ZSBmaXQgb24g
YSBsaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1p
dHRlZFdpZHRoKC1oeXBoZW5XaWR0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoLWh5cGhlbldpZHRoLCAqY3VycmVudC5tX29iaik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cGhlbldpZHRoID0gMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0z
MTkzLDcgKzMxOTMsNyBAQCBJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRC
cmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSQogICAgICAgICAgICAgYWRk
aXRpb25hbFRlbXBXaWR0aCArPSBsYXN0U3BhY2VXb3JkU3BhY2luZzsKIAogICAgICAgICAgICAg
ZmxvYXQgaW5saW5lTG9naWNhbFRlbXBXaWR0aCA9IGlubGluZUxvZ2ljYWxXaWR0aChjdXJyZW50
Lm1fb2JqLCAhYXBwbGllZFN0YXJ0V2lkdGgsIGluY2x1ZGVFbmRXaWR0aCk7Ci0gICAgICAgICAg
ICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKGFkZGl0aW9uYWxUZW1wV2lkdGggKyBpbmxpbmVM
b2dpY2FsVGVtcFdpZHRoKTsKKyAgICAgICAgICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgo
YWRkaXRpb25hbFRlbXBXaWR0aCArIGlubGluZUxvZ2ljYWxUZW1wV2lkdGgsICpjdXJyZW50Lm1f
b2JqKTsKIAogICAgICAgICAgICAgaWYgKHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlz
RW1wdHkoKSAmJiAhZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgd29y
ZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMuc3dhcChmYWxsYmFja0ZvbnRzKTsKQEAgLTMyODMs
NyArMzI4Myw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFr
KElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJCiAgICAgICAgICAgICAvLyBtYWtl
IHN1cmUgd2UgY29uc3VtZSBhdCBsZWFzdCBvbmUgY2hhci9vYmplY3QuCiAgICAgICAgICAgICBp
ZiAobEJyZWFrID09IHJlc29sdmVyLnBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgbEJyZWFr
LmluY3JlbWVudCgpOwotICAgICAgICB9IGVsc2UgaWYgKCF3aWR0aC5jb21taXR0ZWRXaWR0aCgp
ICYmICghY3VycmVudC5tX29iaiB8fCAhY3VycmVudC5tX29iai0+aXNCUigpKSAmJiAhY3VycmVu
dC5tX3BvcykgeworICAgICAgICB9IGVsc2UgaWYgKCFjdXJyZW50Lm1fcG9zICYmICF3aWR0aC5j
b21taXR0ZWRXaWR0aCgpICYmIGN1cnJlbnQubV9vYmogJiYgd2lkdGgudW5jb21taXR0ZWRXaWR0
aEZvck9iamVjdCgqY3VycmVudC5tX29iaikgPT0gd2lkdGgudW5jb21taXR0ZWRXaWR0aCgpKSB7
CiAgICAgICAgICAgICAvLyBEbyBub3QgcHVzaCB0aGUgY3VycmVudCBvYmplY3QgdG8gdGhlIG5l
eHQgbGluZSwgd2hlbiB0aGlzIGxpbmUgaGFzIHNvbWUgY29udGVudCwgYnV0IGl0IGlzIHN0aWxs
IGNvbnNpZGVyZWQgZW1wdHkuCiAgICAgICAgICAgICAvLyBFbXB0eSBpbmxpbmUgZWxlbWVudHMg
bGlrZSA8c3Bhbj48L3NwYW4+IGNhbiBwcm9kdWNlIHN1Y2ggbGluZXMgYW5kIG5vdyB3ZSBqdXN0
IGlnbm9yZSB0aGVzZSBicmVhayBvcHBvcnR1bml0aWVzCiAgICAgICAgICAgICAvLyBhdCB0aGUg
c3RhcnQgb2YgYSBsaW5lLCBpZiBubyB3aWR0aCBoYXMgYmVlbiBjb21taXR0ZWQgeWV0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGRiMGNmYWQ5YzIyODdmNjNmODI3MTJhNmM4ZTZjZTA5YmU3OTU5ZmMuLjIyNzZjNjMxZDRi
Yzg1ZmY0ZDJlZTI1ZGVmYTNjOGI2YWE0ZDIwMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
My0wOS0yNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVuZXhw
ZWN0ZWQgd29yZCB3cmFwcGluZyBmb3Igd3JhcHBlZCBjb250ZW50IHRoZW4gcmF3IGNvbnRlbnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjExMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBXaGVuIGRlY2lk
aW5nIHdoZXRoZXIgYSBsaW5lIGlzIGNvbnNpZGVyZWQgZW1wdHksIHdlIG5lZWQgdG8gY2hlY2sg
aWYgdGhlIGN1cnJlbnQKKyAgICAgICAgb2JqZWN0IGlzIGZ1bGx5IHJlc3BvbnNpYmxlIGZvciB0
aGUgY3VycmVudGx5IHVuY29tbWl0dGVkIHdpZHRoLiBJdCBoZWxwcyBkaWZmZXJlbnRpYXRpbmcK
KyAgICAgICAgPHNwYW4+PC9zcGFuPjxzcGFuPmFiY2Q8L3NwYW4+IGZyb20gPHNwYW4+YTwvc3Bh
bj48c3Bhbj5iY2Q8L3NwYW4+LCB3aGVyZSBpbiB0aGUgZmlyc3QKKyAgICAgICAgY2FzZSB3aGVu
IHdlIGhpdCB0aGUgc2Vjb25kIDxzcGFuPiB0aGUgbGluZSBpcyBzdGlsbCBjb25zaWRlcmVkIGVt
cHR5LCBhcyBvcHBvc2VkIHRvIHRoZQorICAgICAgICBzZWNvbmQgZXhhbXBsZS4KKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbWFwIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHVuY29tbWl0
dGVkIHdpZHRocy4KKworICAgICAgICAqIGZhc3QvY3NzL3VuZXhwZWN0ZWQtd29yZC13cmFwcGlu
Zy13aXRoLW5vbi1lbXB0eS1zcGFucy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHktc3BhbnMuaHRt
bDogQWRkZWQuCisKIDIwMTMtMDktMjUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgZmFzdC9jc3MvZm9udC1mYWNlLWRhdGEtdXJpLmh0bWwgaXMgZmFpbGlu
ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdW5leHBlY3RlZC13b3JkLXdyYXBw
aW5nLXdpdGgtbm9uLWVtcHR5LXNwYW5zLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHktc3BhbnMtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMTI1OTZmNTc5MWE1MWZlNzdjNDEwMjUxNWI2MjUxNGIzYzdl
OTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdW5leHBlY3RlZC13
b3JkLXdyYXBwaW5nLXdpdGgtbm9uLWVtcHR5LXNwYW5zLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwyMyBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGRpdiB7CisgICAgICBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7CisgICAgICB3aWR0aDogMTZweDsKKyAgICAgIHdvcmQtd3JhcDog
YnJlYWstd29yZDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdHMgaWYgbm9uLWVtcHR5IHNwYW5zIGNoYW5nZXMgd29yZCB3cmFwcGluZy48L3A+Cis8ZGl2
PgorICAgIDEyMzQKKzwvZGl2PgorPGRpdj4KKyAgICAxMjM0Cis8L2Rpdj4KKzxkaXY+CisgICAg
MTIzNDU2NzgKKyAgICAxMjM0NTY3OAorPC9kaXY+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHkt
c3BhbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VuZXhwZWN0ZWQtd29yZC13cmFwcGlu
Zy13aXRoLW5vbi1lbXB0eS1zcGFucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYTI0Y2Y5NzU5MmIwNTVh
YjQzZTkzYjlmMWJlZjFlNzM0ODU4ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHktc3BhbnMuaHRt
bApAQCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsK
KyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsKKyAgICAgIHdpZHRoOiAxNnB4OworICAgICAg
d29yZC13cmFwOiBicmVhay13b3JkOworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0cyBpZiBub24tZW1wdHkgc3BhbnMgY2hhbmdlcyB3b3JkIHdyYXBwaW5n
LjwvcD4KKzxkaXY+CisgICAgPHNwYW4+MTIzPC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj40PC9z
cGFuPgorPC9kaXY+Cis8ZGl2PgorICAgIDxzcGFuPjwvc3Bhbj48c3Bhbj4xMjM8L3NwYW4+PHNw
YW4+NDwvc3Bhbj4KKzwvZGl2PgorPGRpdj4KKyAgICAxMjM0NTY3OAorICAgIDxzcGFuPjE8L3Nw
YW4+PHNwYW4+Mjwvc3Bhbj48c3Bhbj4zPC9zcGFuPjxzcGFuPjQ8L3NwYW4+PHNwYW4+NTwvc3Bh
bj48c3Bhbj42PC9zcGFuPjxzcGFuPjc8L3NwYW4+PHNwYW4+ODwvc3Bhbj4KKzwvZGl2PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214108</attachid>
            <date>2013-10-13 12:33:30 -0700</date>
            <delta_ts>2013-10-14 02:42:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121130-20131013213328.patch</filename>
            <type>text/plain</type>
            <size>5829</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY0MDMxNGVlNGFmOGVi
MDUwYzBmYmNmYjZjMjg3ZDEzN2NlNWNiMS4uZDUyMTcyYTIxNDk4Y2U5MGQ1YTg4Y2FhZDY3N2Fm
YjNkOWY5ZTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTEwLTEzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVW5leHBlY3RlZCB3b3JkIHdy
YXBwaW5nIGZvciB3cmFwcGVkIGNvbnRlbnQgdGhlbiByYXcgY29udGVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTEzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gZGVjaWRpbmcgd2hldGhl
ciBhIGxpbmUgaXMgY29uc2lkZXJlZCBlbXB0eSwgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY3Vy
cmVudAorICAgICAgICBvYmplY3QgaXMgZnVsbHkgcmVzcG9uc2libGUgZm9yIHRoZSBjdXJyZW50
bHkgdW5jb21taXR0ZWQgd2lkdGguIEl0IGhlbHBzIGRpZmZlcmVudGlhdGluZworICAgICAgICA8
c3Bhbj48L3NwYW4+PHNwYW4+YWJjZDwvc3Bhbj4gZnJvbSA8c3Bhbj5hPC9zcGFuPjxzcGFuPmJj
ZDwvc3Bhbj4sIHdoZXJlIGluIHRoZSBmaXJzdAorICAgICAgICBjYXNlIHdoZW4gd2UgaGl0IHRo
ZSBzZWNvbmQgPHNwYW4+IHRoZSBsaW5lIGlzIHN0aWxsIGNvbnNpZGVyZWQgZW1wdHksIGFzIG9w
cG9zZWQgdG8gdGhlCisgICAgICAgIHNlY29uZCBleGFtcGxlLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvY3NzL3VuZXhwZWN0ZWQtd29yZC13cmFwcGluZy13aXRoLW5vbi1lbXB0eS1zcGFucy5odG1s
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKToKKwogMjAxMy0xMC0x
MCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBSZW5k
ZXJPYmplY3Q6OmxheW91dCgpIHRvIFJlbmRlckVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGE2ODRiZWE0NjY5
ZjcyMjYzYmNjZjRiOWNjM2U5NzQ4NmQ4NDVjMTcuLmU1ZTI0MGY0N2MwNWZhYTQwMWQ3YjUyMjY5
OWYwYTA1NDA0MGQ3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0yNzQ2LDcgKzI3NDYsOSBAQCBJbmxpbmVJdGVyYXRv
ciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyLCBMaW5lSQogCiAgICAgRVdoaXRlU3BhY2UgY3VycldTID0gYmxvY2tTdHlsZS53aGl0ZVNw
YWNlKCk7CiAgICAgRVdoaXRlU3BhY2UgbGFzdFdTID0gY3VycldTOworICAgIGJvb2wgaGFkVW5j
b21taXR0ZWRXaWR0aEJlZm9yZUN1cnJlbnQgPSBmYWxzZTsKICAgICB3aGlsZSAoY3VycmVudC5t
X29iaikgeworICAgICAgICBoYWRVbmNvbW1pdHRlZFdpZHRoQmVmb3JlQ3VycmVudCA9ICEhd2lk
dGgudW5jb21taXR0ZWRXaWR0aCgpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVu
dFN0eWxlID0gKmN1cnJlbnQubV9vYmotPnN0eWxlKCk7CiAgICAgICAgIFJlbmRlck9iamVjdCog
bmV4dCA9IGJpZGlOZXh0U2tpcHBpbmdFbXB0eUlubGluZXMobV9ibG9jaywgY3VycmVudC5tX29i
aik7CiAgICAgICAgIGlmIChuZXh0ICYmIG5leHQtPnBhcmVudCgpICYmICFuZXh0LT5wYXJlbnQo
KS0+aXNEZXNjZW5kYW50T2YoY3VycmVudC5tX29iai0+cGFyZW50KCkpKQpAQCAtMzMxMSw3ICsz
MzEzLDcgQEAgSW5saW5lSXRlcmF0b3IgTGluZUJyZWFrZXI6Om5leHRTZWdtZW50QnJlYWsoSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUkKICAgICAgICAgICAgIC8vIG1ha2Ugc3Vy
ZSB3ZSBjb25zdW1lIGF0IGxlYXN0IG9uZSBjaGFyL29iamVjdC4KICAgICAgICAgICAgIGlmIChs
QnJlYWsgPT0gcmVzb2x2ZXIucG9zaXRpb24oKSkKICAgICAgICAgICAgICAgICBsQnJlYWsuaW5j
cmVtZW50KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXdpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYg
KCFjdXJyZW50Lm1fb2JqIHx8ICFjdXJyZW50Lm1fb2JqLT5pc0JSKCkpICYmICFjdXJyZW50Lm1f
cG9zKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnQubV9wb3MgJiYgIXdpZHRoLmNvbW1p
dHRlZFdpZHRoKCkgJiYgd2lkdGgudW5jb21taXR0ZWRXaWR0aCgpICYmICFoYWRVbmNvbW1pdHRl
ZFdpZHRoQmVmb3JlQ3VycmVudCkgewogICAgICAgICAgICAgLy8gRG8gbm90IHB1c2ggdGhlIGN1
cnJlbnQgb2JqZWN0IHRvIHRoZSBuZXh0IGxpbmUsIHdoZW4gdGhpcyBsaW5lIGhhcyBzb21lIGNv
bnRlbnQsIGJ1dCBpdCBpcyBzdGlsbCBjb25zaWRlcmVkIGVtcHR5LgogICAgICAgICAgICAgLy8g
RW1wdHkgaW5saW5lIGVsZW1lbnRzIGxpa2UgPHNwYW4+PC9zcGFuPiBjYW4gcHJvZHVjZSBzdWNo
IGxpbmVzIGFuZCBub3cgd2UganVzdCBpZ25vcmUgdGhlc2UgYnJlYWsgb3Bwb3J0dW5pdGllcwog
ICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSwgaWYgbm8gd2lkdGggaGFzIGJl
ZW4gY29tbWl0dGVkIHlldC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYjBhYmYyMDllM2Y5NzE4NWFkOGU5YWRiOTk3Nzkz
OWUyYmMwNjkwLi5hMGRiM2ViM2U2OTQ3NGEyZDFiODEwMzQyZGFhMDI4NjhmNjRiNWJmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMTAtMTMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBVbmV4cGVjdGVkIHdvcmQgd3JhcHBpbmcgZm9yIHdyYXBwZWQgY29u
dGVudCB0aGVuIHJhdyBjb250ZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIxMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2hlbiBkZWNpZGluZyB3aGV0aGVyIGEgbGluZSBpcyBjb25zaWRlcmVk
IGVtcHR5LCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50CisgICAgICAgIG9iamVjdCBp
cyBmdWxseSByZXNwb25zaWJsZSBmb3IgdGhlIGN1cnJlbnRseSB1bmNvbW1pdHRlZCB3aWR0aC4g
SXQgaGVscHMgZGlmZmVyZW50aWF0aW5nCisgICAgICAgIDxzcGFuPjwvc3Bhbj48c3Bhbj5hYmNk
PC9zcGFuPiBmcm9tIDxzcGFuPmE8L3NwYW4+PHNwYW4+YmNkPC9zcGFuPiwgd2hlcmUgaW4gdGhl
IGZpcnN0CisgICAgICAgIGNhc2Ugd2hlbiB3ZSBoaXQgdGhlIHNlY29uZCA8c3Bhbj4gdGhlIGxp
bmUgaXMgc3RpbGwgY29uc2lkZXJlZCBlbXB0eSwgYXMgb3Bwb3NlZCB0byB0aGUKKyAgICAgICAg
c2Vjb25kIGV4YW1wbGUuCisKKyAgICAgICAgKiBmYXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3Jh
cHBpbmctd2l0aC1ub24tZW1wdHktc3BhbnMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MvdW5leHBlY3RlZC13b3JkLXdyYXBwaW5nLXdpdGgtbm9uLWVtcHR5LXNwYW5z
Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTEwLTEwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IENyYXNoIGF0IFdlYkNvcmU6OmFjY2Vzc2libGVOYW1l
Rm9yTm9kZSB3aGVuIHZpc2l0aW5nIEZhY2Vib29rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHktc3BhbnMtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VuZXhwZWN0ZWQtd29yZC13cmFwcGlu
Zy13aXRoLW5vbi1lbXB0eS1zcGFucy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYjY0NTYy
YjI5OWQ5MDk4YTI3YTU3NzVkMWIzY2RhNTAyZTA5ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0aC1ub24tZW1wdHkt
c3BhbnMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgYm9yZGVyOiAxcHggc29s
aWQgcmVkOworICAgICAgICB3aWR0aDogMTZweDsKKyAgICAgICAgd29yZC13cmFwOiBicmVhay13
b3JkOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgaWYg
bm9uLWVtcHR5IHNwYW5zIGNoYW5nZXMgd29yZCB3cmFwcGluZy4gVGV4dCBzaG91bGQgd3JhcCB0
aGUgcmVkIGJvcmRlci48L3A+Cis8ZGl2PgorICAgIDEyMzQKKzwvZGl2PgorPGRpdj4KKyAgICAx
MjM0Cis8L2Rpdj4KKzxkaXY+CisgICAgMTIzNDU2NzgKKyAgICAxMjM0NTY3OAorPC9kaXY+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdW5leHBlY3RlZC13b3JkLXdyYXBwaW5nLXdpdGgtbm9uLWVtcHR5LXNwYW5z
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91bmV4cGVjdGVkLXdvcmQtd3JhcHBpbmctd2l0
aC1ub24tZW1wdHktc3BhbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmJjOWU4YTBlZmJjYzY1M2NmNjRm
N2ZhMmM3NTYzMDBlMzQ4ZDBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvdW5leHBlY3RlZC13b3JkLXdyYXBwaW5nLXdpdGgtbm9uLWVtcHR5LXNwYW5zLmh0bWwKQEAg
LTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
ICAgIGRpdiB7CisgCSAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7CisgCSAgICB3aWR0aDogMTZw
eDsKKyAJICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAJfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0cyBpZiBub24tZW1wdHkgc3BhbnMgY2hhbmdlcyB3b3JkIHdy
YXBwaW5nLiBUZXh0IHNob3VsZCB3cmFwIHRoZSByZWQgYm9yZGVyLjwvcD4KKzxkaXY+CisgICAg
PHNwYW4+MTIzPC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj40PC9zcGFuPgorPC9kaXY+Cis8ZGl2
PgorICAgIDxzcGFuPjwvc3Bhbj48c3Bhbj4xMjM8L3NwYW4+PHNwYW4+NDwvc3Bhbj4KKzwvZGl2
PgorPGRpdj4KKyAgICAxMjM0NTY3OAorICAgIDxzcGFuPjE8L3NwYW4+PHNwYW4+Mjwvc3Bhbj48
c3Bhbj4zPC9zcGFuPjxzcGFuPjQ8L3NwYW4+PHNwYW4+NTwvc3Bhbj48c3Bhbj42PC9zcGFuPjxz
cGFuPjc8L3NwYW4+PHNwYW4+ODwvc3Bhbj4KKzwvZGl2PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>