<?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>141146</bug_id>
          
          <creation_ts>2015-02-01 19:56:34 -0800</creation_ts>
          <short_desc>Simple line layout: use std::upper_bound in splitFragmentToFitLine()</short_desc>
          <delta_ts>2015-02-02 15:53:27 -0800</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1066030</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-02-01 19:56:34 -0800</bug_when>
    <thetext>instead of having yet another binary search implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066031</commentid>
    <comment_count>1</comment_count>
      <attachid>245854</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-01 20:04:59 -0800</bug_when>
    <thetext>Created attachment 245854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066095</commentid>
    <comment_count>2</comment_count>
      <attachid>245876</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 08:13:57 -0800</bug_when>
    <thetext>Created attachment 245876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066096</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 08:15:53 -0800</bug_when>
    <thetext>Attachment 245876 did not pass style-queue:


ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:303:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:304:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/rendering/SimpleLineLayout.cpp:307:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066105</commentid>
    <comment_count>4</comment_count>
      <attachid>245876</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-02 08:29:38 -0800</bug_when>
    <thetext>Comment on attachment 245876
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:302
&gt; +    typedef std::pair&lt;unsigned, unsigned&gt; WidthRange;

The code would read bit better if this was struct { unsigned begin, unsigned end; }.
Specifically with pair it is unclear if the second field is length or end.

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:307
&gt; +    typedef ptrdiff_t difference_type;
&gt; +    typedef WidthRange value_type;
&gt; +    typedef WidthRange* pointer;
&gt; +    typedef WidthRange&amp; reference;
&gt; +    typedef std::forward_iterator_tag iterator_category;

These are all needed?

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:387
&gt; +    auto it = std::upper_bound(begin(fragmentToSplit), end(fragmentToSplit), availableWidth, [&amp;](float availableWidth, const FragmentWidthIterator::WidthRange&amp; range) {

I think we don&apos;t like implicit capture. You should capture just the stuff you use, [&amp;flowContentsIterator].

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:388
&gt; +        // FIXME: use x position instead of 0.

This comment is bit unclear. Is it a bug are unsupported feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066106</commentid>
    <comment_count>5</comment_count>
      <attachid>245876</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-02 08:40:41 -0800</bug_when>
    <thetext>Comment on attachment 245876
Patch

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

&gt;&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:307
&gt;&gt; +    typedef std::forward_iterator_tag iterator_category;
&gt; 
&gt; These are all needed?

The modern way to do this is to derive from std::iterator&lt;&gt;. We could get all of these defined just by specifying std::forward_iterator_tag and giving the type. It would make all the other typedefs for us.

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:324
&gt; +        this-&gt;operator++();

I normally prefer to write:

    ++*this;

Not sure which way is clearer.

&gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:126
&gt; +    if (splitPosition == end()) {
&gt; +        newFragment.m_start = end();
&gt; +        newFragment.m_width = 0;
&gt; +        newFragment.m_isCollapsed = false;
&gt; +        newFragment.m_isBreakable = false;
&gt; +        return newFragment;
&gt; +    }
&gt; +
&gt; +    if (splitPosition == start()) {
&gt; +        m_end = start();
&gt; +        m_width = 0;
&gt; +        m_isCollapsed = false;
&gt; +        m_isBreakable = false;
&gt; +        return newFragment;
&gt; +    }

Do we really need these? Can’t we write the code below to handle these cases efficiently?

&gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:132
&gt; +    bool single = start() + 1 == end();
&gt; +    m_isBreakable = single ? false : m_isBreakable;
&gt; +    m_isCollapsed = single ? false : m_isCollapsed;

How about writing these in a more straightforward style?

    if (start() + 1 == end()) {
        m_isBreakable = false;
        m_isCollapsed = false;
    }

&gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:138
&gt; +    newFragment.m_start = splitPosition;
&gt; +    newFragment.m_width = flowContentsIterator.textWidth(newFragment.start(), newFragment.end(), 0);
&gt; +    single = newFragment.start() + 1 == newFragment.end();
&gt; +    newFragment.m_isBreakable = single ? false : newFragment.m_isBreakable;
&gt; +    newFragment.m_isCollapsed = single ? false : newFragment.m_isCollapsed;

Since this code is identical to what’s above, how about a helper function to avoid repeating the code twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066113</commentid>
    <comment_count>6</comment_count>
      <attachid>245876</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-02 09:01:44 -0800</bug_when>
    <thetext>Comment on attachment 245876
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:142
&gt;  inline UChar FlowContentsIterator::characterAt(unsigned position) const

You should rename FlowContentsIterator at some point. We currently have both FlowContentsIterator and FlowContents::Iterator which is confusing. This is more like TextFragmentIterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066153</commentid>
    <comment_count>7</comment_count>
      <attachid>245887</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 11:09:49 -0800</bug_when>
    <thetext>Created attachment 245887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066158</commentid>
    <comment_count>8</comment_count>
      <attachid>245887</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-02 11:29:16 -0800</bug_when>
    <thetext>Comment on attachment 245887
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:304
&gt; +typedef struct {
&gt; +    unsigned start { 0 };
&gt; +    unsigned end { 0 };
&gt; +} WidthRange;
&gt; +class FragmentWidthIterator : public std::iterator&lt;std::forward_iterator_tag, WidthRange&gt; {

This could be just struct WidthRange {} instead of a typedef.

Missing empty line after.

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:336
&gt; +    FragmentWidthIterator&amp; operator--()
&gt; +    {
&gt; +        --m_fragmentIndex;
&gt; +        return *this;
&gt; +    }
&gt; +
&gt; +    FragmentWidthIterator operator--(int)
&gt; +    {
&gt; +        FragmentWidthIterator result(*this);
&gt; +        --*this;
&gt; +        return result;
&gt; +    }

This is marked as a forward iterator. Why does it have operator--?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066160</commentid>
    <comment_count>9</comment_count>
      <attachid>245888</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 11:36:37 -0800</bug_when>
    <thetext>Created attachment 245888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066161</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 11:38:22 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 245876 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245876&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:302
&gt; &gt; +    typedef std::pair&lt;unsigned, unsigned&gt; WidthRange;
&gt; 
&gt; The code would read bit better if this was struct { unsigned begin, unsigned
&gt; end; }.
&gt; Specifically with pair it is unclear if the second field is length or end.
&gt; 
Good point! Done.

&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:307
&gt; &gt; +    typedef ptrdiff_t difference_type;
&gt; &gt; +    typedef WidthRange value_type;
&gt; &gt; +    typedef WidthRange* pointer;
&gt; &gt; +    typedef WidthRange&amp; reference;
&gt; &gt; +    typedef std::forward_iterator_tag iterator_category;
&gt; 
&gt; These are all needed?
No. Fixed.

&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:387
&gt; &gt; +    auto it = std::upper_bound(begin(fragmentToSplit), end(fragmentToSplit), availableWidth, [&amp;](float availableWidth, const FragmentWidthIterator::WidthRange&amp; range) {
&gt; 
&gt; I think we don&apos;t like implicit capture. You should capture just the stuff
&gt; you use, [&amp;flowContentsIterator].
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:388
&gt; &gt; +        // FIXME: use x position instead of 0.
&gt; 
&gt; This comment is bit unclear. Is it a bug are unsupported feature?
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066162</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 11:39:08 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 245876 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245876&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:307
&gt; &gt;&gt; +    typedef std::forward_iterator_tag iterator_category;
&gt; &gt; 
&gt; &gt; These are all needed?
&gt; 
&gt; The modern way to do this is to derive from std::iterator&lt;&gt;. We could get
&gt; all of these defined just by specifying std::forward_iterator_tag and giving
&gt; the type. It would make all the other typedefs for us.
Thanks. Fixed.

&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:324
&gt; &gt; +        this-&gt;operator++();
&gt; 
&gt; I normally prefer to write:
&gt; 
&gt;     ++*this;
&gt; 
&gt; Not sure which way is clearer.
Fixed.

&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:126
&gt; &gt; +    if (splitPosition == end()) {
&gt; &gt; +        newFragment.m_start = end();
&gt; &gt; +        newFragment.m_width = 0;
&gt; &gt; +        newFragment.m_isCollapsed = false;
&gt; &gt; +        newFragment.m_isBreakable = false;
&gt; &gt; +        return newFragment;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (splitPosition == start()) {
&gt; &gt; +        m_end = start();
&gt; &gt; +        m_width = 0;
&gt; &gt; +        m_isCollapsed = false;
&gt; &gt; +        m_isBreakable = false;
&gt; &gt; +        return newFragment;
&gt; &gt; +    }
&gt; 
&gt; Do we really need these? Can’t we write the code below to handle these cases
&gt; efficiently?
Removed.

&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:132
&gt; &gt; +    bool single = start() + 1 == end();
&gt; &gt; +    m_isBreakable = single ? false : m_isBreakable;
&gt; &gt; +    m_isCollapsed = single ? false : m_isCollapsed;
&gt; 
&gt; How about writing these in a more straightforward style?
&gt; 
&gt;     if (start() + 1 == end()) {
&gt;         m_isBreakable = false;
&gt;         m_isCollapsed = false;
&gt;     }
&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:138
&gt; &gt; +    newFragment.m_start = splitPosition;
&gt; &gt; +    newFragment.m_width = flowContentsIterator.textWidth(newFragment.start(), newFragment.end(), 0);
&gt; &gt; +    single = newFragment.start() + 1 == newFragment.end();
&gt; &gt; +    newFragment.m_isBreakable = single ? false : newFragment.m_isBreakable;
&gt; &gt; +    newFragment.m_isCollapsed = single ? false : newFragment.m_isCollapsed;
&gt; 
&gt; Since this code is identical to what’s above, how about a helper function to
&gt; avoid repeating the code twice?
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066163</commentid>
    <comment_count>12</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 11:40:03 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 245887 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245887&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:304
&gt; &gt; +typedef struct {
&gt; &gt; +    unsigned start { 0 };
&gt; &gt; +    unsigned end { 0 };
&gt; &gt; +} WidthRange;
&gt; &gt; +class FragmentWidthIterator : public std::iterator&lt;std::forward_iterator_tag, WidthRange&gt; {
&gt; 
&gt; This could be just struct WidthRange {} instead of a typedef.
&gt; 
&gt; Missing empty line after.
Done.

&gt; 
&gt; &gt; Source/WebCore/rendering/SimpleLineLayout.cpp:336
&gt; &gt; +    FragmentWidthIterator&amp; operator--()
&gt; &gt; +    {
&gt; &gt; +        --m_fragmentIndex;
&gt; &gt; +        return *this;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    FragmentWidthIterator operator--(int)
&gt; &gt; +    {
&gt; &gt; +        FragmentWidthIterator result(*this);
&gt; &gt; +        --*this;
&gt; &gt; +        return result;
&gt; &gt; +    }
&gt; 
&gt; This is marked as a forward iterator. Why does it have operator--?
It&apos;s just leftover from my attempts with std::distance. Thanks for spotting this. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066207</commentid>
    <comment_count>13</comment_count>
      <attachid>245896</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 13:36:13 -0800</bug_when>
    <thetext>Created attachment 245896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066220</commentid>
    <comment_count>14</comment_count>
      <attachid>245900</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-02 14:24:49 -0800</bug_when>
    <thetext>Created attachment 245900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066281</commentid>
    <comment_count>15</comment_count>
      <attachid>245900</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 15:53:22 -0800</bug_when>
    <thetext>Comment on attachment 245900
Patch

Clearing flags on attachment: 245900

Committed r179510: &lt;http://trac.webkit.org/changeset/179510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066282</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 15:53:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245854</attachid>
            <date>2015-02-01 20:04:59 -0800</date>
            <delta_ts>2015-02-02 08:13:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141146-20150201200508.patch</filename>
            <type>text/plain</type>
            <size>10084</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlMmE2NzQ5NjgwOGEy
NTJhNDQ4ZTE2ZjE3ODkyMDZlODlmZmY3My4uYjgzOWRkZWJjOThiOWY5ZDY0MzRhNTdkYjQ5ODNi
YjgwZDFlOTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiB1c2Ugc3RkOjp1cHBlcl9ib3VuZCBpbiBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGN1
c3RvbSBiaW5hcnkgc2VhcmNoIGltcGxlbWVudGF0aW9uIHdpdGggc3RkOjp1cHBlcl9ib3VuZCBh
bmQKKyAgICAgICAgbW92ZSBzcGxpdHRpbmcgZnVuY3Rpb25hbGl0eSB0byBUZXh0RnJhZ21lbnQu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6OkZyYWdtZW50V2lkdGhJdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6
Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21l
bnRXaWR0aEl0ZXJhdG9yOjpvcGVyYXRvci0tKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OkZyYWdtZW50V2lkdGhJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRXaWR0aEl0
ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnNwbGl0RnJhZ21lbnRUb0ZpdExpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRl
cmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpzcGxpdCk6CisKIDIwMTUtMDEt
MzEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzk0MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggMTNiNzdmZTM0ZDc1OTk5MzhmMWZjMjIyNTI4
NGI0Yzc0NzcwYzA3MS4uYmJkODAyODBkZDgzMTQ5ZWE1OWI3ZWU0Zjc1NDcxMmJhMWIxODBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAt
Mjk3LDYgKzI5Nyw1OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXJzdENoYXJhY3RlckZpdHMg
eyBmYWxzZSB9OwogfTsKIAorY2xhc3MgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IFdpZHRoUmFuZ2U7Cisg
ICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOworICAgIHR5cGVkZWYgV2lkdGhS
YW5nZSB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgV2lkdGhSYW5nZSogcG9pbnRlcjsKKyAgICB0
eXBlZGVmIFdpZHRoUmFuZ2UmIHJlZmVyZW5jZTsKKyAgICB0eXBlZGVmIHN0ZDo6Zm9yd2FyZF9p
dGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CisKKyAgICBGcmFnbWVudFdpZHRoSXRlcmF0
b3IoY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJhZ21lbnQsIHVu
c2lnbmVkIGZyYWdtZW50SW5kZXgpCisgICAgICAgIDogbV9mcmFnbWVudChmcmFnbWVudCkKKyAg
ICAgICAgLCBtX2ZyYWdtZW50SW5kZXgoZnJhZ21lbnRJbmRleCkKKyAgICB7CisgICAgfQorCisg
ICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgICsr
bV9mcmFnbWVudEluZGV4OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRnJh
Z21lbnRXaWR0aEl0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQorICAgIHsKKyAgICAgICAgRnJhZ21l
bnRXaWR0aEl0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7CisgICAgICAgIHRoaXMtPm9wZXJhdG9yKyso
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBGcmFnbWVudFdpZHRoSXRl
cmF0b3ImIG9wZXJhdG9yLS0oKQorICAgIHsKKyAgICAgICAgLS1tX2ZyYWdtZW50SW5kZXg7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBGcmFnbWVudFdpZHRoSXRlcmF0b3Ig
b3BlcmF0b3ItLShpbnQpCisgICAgeworICAgICAgICBGcmFnbWVudFdpZHRoSXRlcmF0b3IgcmVz
dWx0KCp0aGlzKTsKKyAgICAgICAgdGhpcy0+b3BlcmF0b3ItLSgpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFnbWVudFdpZHRo
SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50SW5kZXggPT0gb3RoZXIu
bV9mcmFnbWVudEluZGV4OyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYWdtZW50V2lk
dGhJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Cisg
ICAgY29uc3QgV2lkdGhSYW5nZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihtX2ZyYWdtZW50LnN0YXJ0KCksIG1fZnJhZ21lbnRJbmRleCk7IH0KKworcHJpdmF0ZToK
KyAgICBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IG1fZnJhZ21lbnQ7CisgICAg
dW5zaWduZWQgbV9mcmFnbWVudEluZGV4IHsgMCB9OworfTsKKworc3RhdGljIEZyYWdtZW50V2lk
dGhJdGVyYXRvciBiZWdpbihjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50
JiBmcmFnbWVudCkgIHsgcmV0dXJuIEZyYWdtZW50V2lkdGhJdGVyYXRvcihmcmFnbWVudCwgZnJh
Z21lbnQuc3RhcnQoKSk7IH0KK3N0YXRpYyBGcmFnbWVudFdpZHRoSXRlcmF0b3IgZW5kKGNvbnN0
IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KSAgeyByZXR1cm4g
RnJhZ21lbnRXaWR0aEl0ZXJhdG9yKGZyYWdtZW50LCBmcmFnbWVudC5lbmQoKSk7IH0KKwogc3Rh
dGljIGJvb2wgcHJlV3JhcChjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6U3R5bGUmIHN0eWxl
KQogewogICAgIHJldHVybiBzdHlsZS53cmFwTGluZXMgJiYgIXN0eWxlLmNvbGxhcHNlV2hpdGVz
cGFjZTsKQEAgLTMzMCw0NyArMzgzLDE1IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVDb25zdHJh
aW5zKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgTGluZVN0YXRlJiBsaW5lKQogCiBzdGF0
aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBzcGxpdEZyYWdtZW50VG9GaXRM
aW5lKEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50VG9TcGxpdCwg
ZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wga2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIsIGNvbnN0
IEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRvcikKIHsKLSAgICAvLyBG
YXN0IHBhdGggZm9yIHNpbmdsZSBjaGFyIGZyYWdtZW50cy4KLSAgICBpZiAoZnJhZ21lbnRUb1Nw
bGl0LnN0YXJ0KCkgKyAxID09IGZyYWdtZW50VG9TcGxpdC5lbmQoKSkgewotICAgICAgICBpZiAo
a2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIpCi0gICAgICAgICAgICByZXR1cm4gRmxvd0NvbnRlbnRz
SXRlcmF0b3I6OlRleHRGcmFnbWVudCgpOwotCi0gICAgICAgIEZsb3dDb250ZW50c0l0ZXJhdG9y
OjpUZXh0RnJhZ21lbnQgZnJhZ21lbnRGb3JOZXh0TGluZShmcmFnbWVudFRvU3BsaXQpOwotICAg
ICAgICAvLyBNYWtlIGl0IGVtcHR5IGZyYWdtZW50LgotICAgICAgICBmcmFnbWVudFRvU3BsaXQg
PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KGZyYWdtZW50VG9TcGxpdC5zdGFy
dCgpLCBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSwgMCwgZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSk7
Ci0gICAgICAgIHJldHVybiBmcmFnbWVudEZvck5leHRMaW5lOwotICAgIH0KLSAgICAvLyBTaW1w
bGUgYmluYXJ5IHNlYXJjaCB0byBmaW5kIG91dCB3aGF0IGZpdHMgdGhlIGN1cnJlbnQgbGluZS4K
ICAgICAvLyBGSVhNRTogYWRkIHN1cnJvZ2F0ZSBwYWlyIHN1cHBvcnQuCi0gICAgdW5zaWduZWQg
bGVmdCA9IGZyYWdtZW50VG9TcGxpdC5zdGFydCgpOwotICAgIHVuc2lnbmVkIHJpZ2h0ID0gZnJh
Z21lbnRUb1NwbGl0LmVuZCgpIC0gMTsgLy8gV2UgY2FuIGlnbm9yZSB0aGUgbGFzdCBjaGFyYWN0
ZXIuIEl0IHN1cmVseSBkb2VzIG5vdCBmaXQuCi0gICAgZmxvYXQgd2lkdGggPSAwOwotICAgIHdo
aWxlIChsZWZ0IDwgcmlnaHQpIHsKLSAgICAgICAgdW5zaWduZWQgbWlkZGxlID0gKGxlZnQgKyBy
aWdodCkgLyAyOwotICAgICAgICB3aWR0aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0
aChmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSwgbWlkZGxlICsgMSwgMCk7Ci0gICAgICAgIGlmIChh
dmFpbGFibGVXaWR0aCA+IHdpZHRoKQotICAgICAgICAgICAgbGVmdCA9IG1pZGRsZSArIDE7Ci0g
ICAgICAgIGVsc2UgaWYgKGF2YWlsYWJsZVdpZHRoIDwgd2lkdGgpCi0gICAgICAgICAgICByaWdo
dCA9IG1pZGRsZTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByaWdodCA9IG1pZGRsZSAr
IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChrZWVw
QXRMZWFzdE9uZUNoYXJhY3RlciAmJiByaWdodCA9PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSkK
LSAgICAgICAgKytyaWdodDsKLQotICAgIC8vIEZyYWdtZW50IGZvciBuZXh0IGxpbmUuCi0gICAg
dW5zaWduZWQgbmV4dExpbmVTdGFydCA9IHJpZ2h0OwotICAgIHVuc2lnbmVkIG5leHRMaW5lRW5k
ID0gZnJhZ21lbnRUb1NwbGl0LmVuZCgpOwotICAgIGZsb2F0IG5leHRMaW5lV2lkdGggPSBmbG93
Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgobmV4dExpbmVTdGFydCwgbmV4dExpbmVFbmQsIDAp
OwotCi0gICAgdW5zaWduZWQgdGhpc0xpbmVTdGFydCA9IGZyYWdtZW50VG9TcGxpdC5zdGFydCgp
OwotICAgIHVuc2lnbmVkIHRoaXNMaW5lRW5kID0gcmlnaHQ7Ci0gICAgZmxvYXQgdGhpc0xpbmVX
aWR0aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aCh0aGlzTGluZVN0YXJ0LCB0aGlz
TGluZUVuZCwgMCk7Ci0gICAgZnJhZ21lbnRUb1NwbGl0ID0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6
OlRleHRGcmFnbWVudCh0aGlzTGluZVN0YXJ0LCB0aGlzTGluZUVuZCwgdGhpc0xpbmVXaWR0aCwg
ZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQ29sbGFwc2VkKCksIGZy
YWdtZW50VG9TcGxpdC5pc0JyZWFrYWJsZSgpKTsKLSAgICByZXR1cm4gRmxvd0NvbnRlbnRzSXRl
cmF0b3I6OlRleHRGcmFnbWVudChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVuZCwgbmV4dExpbmVX
aWR0aCwgZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQ29sbGFwc2Vk
KCksIGZyYWdtZW50VG9TcGxpdC5pc0JyZWFrYWJsZSgpKTsKKyAgICBhdXRvIGl0ID0gc3RkOjp1
cHBlcl9ib3VuZChiZWdpbihmcmFnbWVudFRvU3BsaXQpLCBlbmQoZnJhZ21lbnRUb1NwbGl0KSwg
YXZhaWxhYmxlV2lkdGgsIFsmXShmbG9hdCBhdmFpbGFibGVXaWR0aCwgY29uc3QgRnJhZ21lbnRX
aWR0aEl0ZXJhdG9yOjpXaWR0aFJhbmdlJiByYW5nZSkgeworICAgICAgICAvLyBGSVhNRTogdXNl
IHggcG9zaXRpb24gaW5zdGVhZCBvZiAwLgorICAgICAgICByZXR1cm4gYXZhaWxhYmxlV2lkdGgg
PCBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29u
ZCArIDEsIDApOworICAgIH0pOworICAgIHVuc2lnbmVkIHNwbGl0UG9zaXRpb24gPSAoKml0KS5z
ZWNvbmQ7CisgICAgaWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyICYmIHNwbGl0UG9zaXRpb24g
PT0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCkpCisgICAgICAgICsrc3BsaXRQb3NpdGlvbjsKKyAg
ICByZXR1cm4gZnJhZ21lbnRUb1NwbGl0LnNwbGl0KHNwbGl0UG9zaXRpb24sIGZsb3dDb250ZW50
c0l0ZXJhdG9yKTsKIH0KIAogc3RhdGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21l
bnQgZmlyc3RGcmFnbWVudChGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0
b3IsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0
ZXJhdG9yLmNwcAppbmRleCAwZWQ2ZjQ5ODg5OTM1ZTIzZGQyOTFlYjJmY2U1ZjAwZDdhYjgyZmUy
Li4zYWJkNGY4ZjQ0ZjMwMmI5MWQzYWMzZjBmZTZkNWE0Y2I5YmQxNTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmNwcApAQCAtMTcxLDcgKzE3MSw5IEBAIHVuc2lnbmVkIEZsb3dD
b250ZW50c0l0ZXJhdG9yOjpmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih1bnNpZ25lZCBw
b3NpdGlvbiwKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogZmxvYXQgRmxvd0Nv
bnRlbnRzSXRlcmF0b3I6OnJ1bldpZHRoKGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIGZsb2F0IHhQb3NpdGlvbikgY29uc3QKIHsKLSAgICBBU1NFUlQoZnJv
bSA8IHRvKTsKKyAgICBBU1NFUlQoZnJvbSA8PSB0byk7CisgICAgaWYgKGZyb20gPT0gdG8pCisg
ICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgbWVhc3VyZVdpdGhFbmRTcGFjZSA9IG1fc3R5bGUu
Y29sbGFwc2VXaGl0ZXNwYWNlICYmIHRvIDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0W3RvXSA9PSAn
ICc7CiAgICAgaWYgKG1lYXN1cmVXaXRoRW5kU3BhY2UpCiAgICAgICAgICsrdG87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50
c0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmgKaW5kZXggZWM0OTg4ZmZkMmYwZmM4NTJhNGYwNmQzMDRmMDFi
ODFiNzUzNzkwYS4uYjVmZjNjMWFjMzk4YWEwNjY0Njg0ZjlkNzk5NDE3NTIyNmQ1MjI3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29u
dGVudHNJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaApAQCAtNTksNyArNTksOSBAQCBwdWJsaWM6CiAg
ICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAgICBib29s
IGlzQ29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbGxhcHNlZDsgfQogICAgICAgICBi
b29sIGlzQnJlYWthYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0JyZWFrYWJsZTsgfQorCiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgPT0gZW5kKCk7IH0KKyAg
ICAgICAgVGV4dEZyYWdtZW50IHNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIGNvbnN0IEZs
b3dDb250ZW50c0l0ZXJhdG9yJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBt
X3N0YXJ0IHsgMCB9OwpAQCAtMTAzLDYgKzEwNSw0MCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fcG9zaXRpb24geyAwIH07CiB9OwogCitpbmxpbmUgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudCBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpzcGxpdCh1bnNp
Z25lZCBzcGxpdFBvc2l0aW9uLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRl
bnRzSXRlcmF0b3IpCit7CisgICAgVGV4dEZyYWdtZW50IG5ld0ZyYWdtZW50KCp0aGlzKTsKKwor
ICAgIGlmIChzcGxpdFBvc2l0aW9uID09IGVuZCgpKSB7CisgICAgICAgIG5ld0ZyYWdtZW50Lm1f
c3RhcnQgPSBlbmQoKTsKKyAgICAgICAgbmV3RnJhZ21lbnQubV93aWR0aCA9IDA7CisgICAgICAg
IG5ld0ZyYWdtZW50Lm1faXNDb2xsYXBzZWQgPSBmYWxzZTsKKyAgICAgICAgbmV3RnJhZ21lbnQu
bV9pc0JyZWFrYWJsZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gbmV3RnJhZ21lbnQ7CisgICAg
fQorCisgICAgaWYgKHNwbGl0UG9zaXRpb24gPT0gc3RhcnQoKSkgeworICAgICAgICBtX2VuZCA9
IHN0YXJ0KCk7CisgICAgICAgIG1fd2lkdGggPSAwOworICAgICAgICBtX2lzQ29sbGFwc2VkID0g
ZmFsc2U7CisgICAgICAgIG1faXNCcmVha2FibGUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5l
d0ZyYWdtZW50OworICAgIH0KKworICAgIG1fZW5kID0gc3BsaXRQb3NpdGlvbjsKKyAgICBtX3dp
ZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHN0YXJ0KCksIGVuZCgpLCAwKTsK
KyAgICBib29sIHNpbmdsZSA9IHN0YXJ0KCkgKyAxID09IGVuZCgpOworICAgIG1faXNCcmVha2Fi
bGUgPSBzaW5nbGUgPyBmYWxzZSA6IG1faXNCcmVha2FibGU7CisgICAgbV9pc0NvbGxhcHNlZCA9
IHNpbmdsZSA/IGZhbHNlIDogbV9pc0NvbGxhcHNlZDsKKworICAgIG5ld0ZyYWdtZW50Lm1fc3Rh
cnQgPSBzcGxpdFBvc2l0aW9uOworICAgIG5ld0ZyYWdtZW50Lm1fd2lkdGggPSBmbG93Q29udGVu
dHNJdGVyYXRvci50ZXh0V2lkdGgobmV3RnJhZ21lbnQuc3RhcnQoKSwgbmV3RnJhZ21lbnQuZW5k
KCksIDApOworICAgIHNpbmdsZSA9IG5ld0ZyYWdtZW50LnN0YXJ0KCkgKyAxID09IG5ld0ZyYWdt
ZW50LmVuZCgpOworICAgIG5ld0ZyYWdtZW50Lm1faXNCcmVha2FibGUgPSBzaW5nbGUgPyBmYWxz
ZSA6IG5ld0ZyYWdtZW50Lm1faXNCcmVha2FibGU7CisgICAgbmV3RnJhZ21lbnQubV9pc0NvbGxh
cHNlZCA9IHNpbmdsZSA/IGZhbHNlIDogbmV3RnJhZ21lbnQubV9pc0NvbGxhcHNlZDsKKyAgICBy
ZXR1cm4gbmV3RnJhZ21lbnQ7Cit9CisKIGlubGluZSBVQ2hhciBGbG93Q29udGVudHNJdGVyYXRv
cjo6Y2hhcmFjdGVyQXQodW5zaWduZWQgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byYgc2Vn
bWVudCA9IG1fZmxvd0NvbnRlbnRzLnNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245876</attachid>
            <date>2015-02-02 08:13:57 -0800</date>
            <delta_ts>2015-02-02 11:09:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141146-20150202081406.patch</filename>
            <type>text/plain</type>
            <size>10156</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRiMDY1YmVlNzEwNWQ5
YjQ0ZTgwNWQyMGJlYzdkODEwMTJlN2JlYy4uOWUxNmQ5Y2QxNzVhYWUzYjI3OTU5ZTYwYzJlMmJl
Mjk1M2FkNmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiB1c2Ugc3RkOjp1cHBlcl9ib3VuZCBpbiBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGN1
c3RvbSBiaW5hcnkgc2VhcmNoIGltcGxlbWVudGF0aW9uIHdpdGggc3RkOjp1cHBlcl9ib3VuZCBh
bmQKKyAgICAgICAgbW92ZSBzcGxpdHRpbmcgZnVuY3Rpb25hbGl0eSB0byBUZXh0RnJhZ21lbnQu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6OkZyYWdtZW50V2lkdGhJdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6
Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21l
bnRXaWR0aEl0ZXJhdG9yOjpvcGVyYXRvci0tKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OkZyYWdtZW50V2lkdGhJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRXaWR0aEl0
ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnNwbGl0RnJhZ21lbnRUb0ZpdExpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRl
cmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpzcGxpdCk6CisKIDIwMTUtMDIt
MDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzb21lIGxl
YWtzIGZvdW5kIGJ5IHRoZSBsZWFrIGJvdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IGI5MzEyYjY2NDQ5ZDgxYjMwNzMxODFlNTIwNWZlNzVi
ZDlmNDRiYjguLmJiZDgwMjgwZGQ4MzE0OWVhNTliN2VlNGY3NTQ3MTJiYTFiMTgwYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTI5Nyw2
ICsyOTcsNTkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZmlyc3RDaGFyYWN0ZXJGaXRzIHsgZmFs
c2UgfTsKIH07CiAKK2NsYXNzIEZyYWdtZW50V2lkdGhJdGVyYXRvciB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBXaWR0aFJhbmdlOworICAgIHR5
cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKKyAgICB0eXBlZGVmIFdpZHRoUmFuZ2Ug
dmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIFdpZHRoUmFuZ2UqIHBvaW50ZXI7CisgICAgdHlwZWRl
ZiBXaWR0aFJhbmdlJiByZWZlcmVuY2U7CisgICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRlcmF0
b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OworCisgICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yKGNv
bnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCB1bnNpZ25l
ZCBmcmFnbWVudEluZGV4KQorICAgICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCisgICAgICAg
ICwgbV9mcmFnbWVudEluZGV4KGZyYWdtZW50SW5kZXgpCisgICAgeworICAgIH0KKworICAgIEZy
YWdtZW50V2lkdGhJdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICArK21fZnJh
Z21lbnRJbmRleDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEZyYWdtZW50
V2lkdGhJdGVyYXRvciBvcGVyYXRvcisrKGludCkKKyAgICB7CisgICAgICAgIEZyYWdtZW50V2lk
dGhJdGVyYXRvciByZXN1bHQoKnRoaXMpOworICAgICAgICB0aGlzLT5vcGVyYXRvcisrKCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9y
JiBvcGVyYXRvci0tKCkKKyAgICB7CisgICAgICAgIC0tbV9mcmFnbWVudEluZGV4OworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yIG9wZXJh
dG9yLS0oaW50KQorICAgIHsKKyAgICAgICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yIHJlc3VsdCgq
dGhpcyk7CisgICAgICAgIHRoaXMtPm9wZXJhdG9yLS0oKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRXaWR0aEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudEluZGV4ID09IG90aGVyLm1fZnJh
Z21lbnRJbmRleDsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFnbWVudFdpZHRoSXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGNv
bnN0IFdpZHRoUmFuZ2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bV9mcmFnbWVudC5zdGFydCgpLCBtX2ZyYWdtZW50SW5kZXgpOyB9CisKK3ByaXZhdGU6CisgICAg
Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBtX2ZyYWdtZW50OworICAgIHVuc2ln
bmVkIG1fZnJhZ21lbnRJbmRleCB7IDAgfTsKK307CisKK3N0YXRpYyBGcmFnbWVudFdpZHRoSXRl
cmF0b3IgYmVnaW4oY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJh
Z21lbnQpICB7IHJldHVybiBGcmFnbWVudFdpZHRoSXRlcmF0b3IoZnJhZ21lbnQsIGZyYWdtZW50
LnN0YXJ0KCkpOyB9CitzdGF0aWMgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yIGVuZChjb25zdCBGbG93
Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBmcmFnbWVudCkgIHsgcmV0dXJuIEZyYWdt
ZW50V2lkdGhJdGVyYXRvcihmcmFnbWVudCwgZnJhZ21lbnQuZW5kKCkpOyB9CisKIHN0YXRpYyBi
b29sIHByZVdyYXAoY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlN0eWxlJiBzdHlsZSkKIHsK
ICAgICByZXR1cm4gc3R5bGUud3JhcExpbmVzICYmICFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2U7
CkBAIC0zMzAsNDggKzM4MywxNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVMaW5lQ29uc3RyYWlucyhj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIExpbmVTdGF0ZSYgbGluZSkKIAogc3RhdGljIEZs
b3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0TGluZShG
bG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBmcmFnbWVudFRvU3BsaXQsIGZsb2F0
IGF2YWlsYWJsZVdpZHRoLCBib29sIGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyLCBjb25zdCBGbG93
Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCiB7Ci0gICAgLy8gRmFzdCBw
YXRoIGZvciBzaW5nbGUgY2hhciBmcmFnbWVudHMuCi0gICAgaWYgKGZyYWdtZW50VG9TcGxpdC5z
dGFydCgpICsgMSA9PSBmcmFnbWVudFRvU3BsaXQuZW5kKCkpIHsKLSAgICAgICAgaWYgKGtlZXBB
dExlYXN0T25lQ2hhcmFjdGVyKQotICAgICAgICAgICAgcmV0dXJuIEZsb3dDb250ZW50c0l0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQoKTsKLQotICAgICAgICBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4
dEZyYWdtZW50IGZyYWdtZW50Rm9yTmV4dExpbmUoZnJhZ21lbnRUb1NwbGl0KTsKLSAgICAgICAg
Ly8gTWFrZSBpdCBlbXB0eSBmcmFnbWVudC4KLSAgICAgICAgZnJhZ21lbnRUb1NwbGl0ID0gRmxv
d0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudChmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSwg
ZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIDAsIGZyYWdtZW50VG9TcGxpdC50eXBlKCkpOwotICAg
ICAgICByZXR1cm4gZnJhZ21lbnRGb3JOZXh0TGluZTsKLSAgICB9Ci0gICAgLy8gU2ltcGxlIGJp
bmFyeSBzZWFyY2ggdG8gZmluZCBvdXQgd2hhdCBmaXRzIHRoZSBjdXJyZW50IGxpbmUuCiAgICAg
Ly8gRklYTUU6IGFkZCBzdXJyb2dhdGUgcGFpciBzdXBwb3J0LgotICAgIHVuc2lnbmVkIGxlZnQg
PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKLSAgICB1bnNpZ25lZCByaWdodCA9IGZyYWdtZW50
VG9TcGxpdC5lbmQoKSAtIDE7IC8vIFdlIGNhbiBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJ
dCBzdXJlbHkgZG9lcyBub3QgZml0LgotICAgIGZsb2F0IHdpZHRoID0gMDsKLSAgICB3aGlsZSAo
bGVmdCA8IHJpZ2h0KSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQp
IC8gMjsKLSAgICAgICAgd2lkdGggPSBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgoZnJh
Z21lbnRUb1NwbGl0LnN0YXJ0KCksIG1pZGRsZSArIDEsIDApOwotICAgICAgICBpZiAoYXZhaWxh
YmxlV2lkdGggPiB3aWR0aCkKLSAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwotICAgICAg
ICBlbHNlIGlmIChhdmFpbGFibGVXaWR0aCA8IHdpZHRoKQotICAgICAgICAgICAgcmlnaHQgPSBt
aWRkbGU7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGUgKyAxOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoa2VlcEF0TGVh
c3RPbmVDaGFyYWN0ZXIgJiYgcmlnaHQgPT0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCkpCi0gICAg
ICAgICsrcmlnaHQ7Ci0KLSAgICAvLyBGcmFnbWVudCBmb3IgbmV4dCBsaW5lLgotICAgIHVuc2ln
bmVkIG5leHRMaW5lU3RhcnQgPSByaWdodDsKLSAgICB1bnNpZ25lZCBuZXh0TGluZUVuZCA9IGZy
YWdtZW50VG9TcGxpdC5lbmQoKTsKLSAgICBmbG9hdCBuZXh0TGluZVdpZHRoID0gZmxvd0NvbnRl
bnRzSXRlcmF0b3IudGV4dFdpZHRoKG5leHRMaW5lU3RhcnQsIG5leHRMaW5lRW5kLCAwKTsKLQot
ICAgIHVuc2lnbmVkIHRoaXNMaW5lU3RhcnQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKLSAg
ICB1bnNpZ25lZCB0aGlzTGluZUVuZCA9IHJpZ2h0OwotICAgIEFTU0VSVCh0aGlzTGluZVN0YXJ0
IDw9IHRoaXNMaW5lRW5kKTsKLSAgICBmbG9hdCB0aGlzTGluZVdpZHRoID0gdGhpc0xpbmVTdGFy
dCA8IHRoaXNMaW5lRW5kID8gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHRoaXNMaW5l
U3RhcnQsIHRoaXNMaW5lRW5kLCAwKSA6IDA7Ci0gICAgZnJhZ21lbnRUb1NwbGl0ID0gRmxvd0Nv
bnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCh0aGlzTGluZVN0YXJ0LCB0aGlzTGluZUVuZCwg
dGhpc0xpbmVXaWR0aCwgZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSwgZnJhZ21lbnRUb1NwbGl0Lmlz
Q29sbGFwc2VkKCksIGZyYWdtZW50VG9TcGxpdC5pc0JyZWFrYWJsZSgpKTsKLSAgICByZXR1cm4g
Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudChuZXh0TGluZVN0YXJ0LCBuZXh0TGlu
ZUVuZCwgbmV4dExpbmVXaWR0aCwgZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSwgZnJhZ21lbnRUb1Nw
bGl0LmlzQ29sbGFwc2VkKCksIGZyYWdtZW50VG9TcGxpdC5pc0JyZWFrYWJsZSgpKTsKKyAgICBh
dXRvIGl0ID0gc3RkOjp1cHBlcl9ib3VuZChiZWdpbihmcmFnbWVudFRvU3BsaXQpLCBlbmQoZnJh
Z21lbnRUb1NwbGl0KSwgYXZhaWxhYmxlV2lkdGgsIFsmXShmbG9hdCBhdmFpbGFibGVXaWR0aCwg
Y29uc3QgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yOjpXaWR0aFJhbmdlJiByYW5nZSkgeworICAgICAg
ICAvLyBGSVhNRTogdXNlIHggcG9zaXRpb24gaW5zdGVhZCBvZiAwLgorICAgICAgICByZXR1cm4g
YXZhaWxhYmxlV2lkdGggPCBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgocmFuZ2UuZmly
c3QsIHJhbmdlLnNlY29uZCArIDEsIDApOworICAgIH0pOworICAgIHVuc2lnbmVkIHNwbGl0UG9z
aXRpb24gPSAoKml0KS5zZWNvbmQ7CisgICAgaWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyICYm
IHNwbGl0UG9zaXRpb24gPT0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCkpCisgICAgICAgICsrc3Bs
aXRQb3NpdGlvbjsKKyAgICByZXR1cm4gZnJhZ21lbnRUb1NwbGl0LnNwbGl0KHNwbGl0UG9zaXRp
b24sIGZsb3dDb250ZW50c0l0ZXJhdG9yKTsKIH0KIAogc3RhdGljIEZsb3dDb250ZW50c0l0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQgZmlyc3RGcmFnbWVudChGbG93Q29udGVudHNJdGVyYXRvciYgZmxv
d0NvbnRlbnRzSXRlcmF0b3IsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHNJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZsb3dDb250ZW50c0l0ZXJhdG9yLmNwcAppbmRleCAwZWQ2ZjQ5ODg5OTM1ZTIzZGQyOTFlYjJm
Y2U1ZjAwZDdhYjgyZmUyLi4zYWJkNGY4ZjQ0ZjMwMmI5MWQzYWMzZjBmZTZkNWE0Y2I5YmQxNTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmNwcApAQCAtMTcxLDcgKzE3MSw5IEBA
IHVuc2lnbmVkIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3Np
dGlvbih1bnNpZ25lZCBwb3NpdGlvbiwKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgogZmxvYXQgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OnJ1bldpZHRoKGNvbnN0IFN0cmluZyYgdGV4
dCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGZsb2F0IHhQb3NpdGlvbikgY29uc3QKIHsK
LSAgICBBU1NFUlQoZnJvbSA8IHRvKTsKKyAgICBBU1NFUlQoZnJvbSA8PSB0byk7CisgICAgaWYg
KGZyb20gPT0gdG8pCisgICAgICAgIHJldHVybiAwOwogICAgIGJvb2wgbWVhc3VyZVdpdGhFbmRT
cGFjZSA9IG1fc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlICYmIHRvIDwgdGV4dC5sZW5ndGgoKSAm
JiB0ZXh0W3RvXSA9PSAnICc7CiAgICAgaWYgKG1lYXN1cmVXaXRoRW5kU3BhY2UpCiAgICAgICAg
ICsrdG87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmgKaW5kZXggZWM0OTg4ZmZkMmYwZmM4
NTJhNGYwNmQzMDRmMDFiODFiNzUzNzkwYS4uYjVmZjNjMWFjMzk4YWEwNjY0Njg0ZjlkNzk5NDE3
NTIyNmQ1MjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaApAQCAtNTksNyArNTks
OSBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogICAgICAgICBib29sIGlzQ29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbGxhcHNl
ZDsgfQogICAgICAgICBib29sIGlzQnJlYWthYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0JyZWFr
YWJsZTsgfQorCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkg
PT0gZW5kKCk7IH0KKyAgICAgICAgVGV4dEZyYWdtZW50IHNwbGl0KHVuc2lnbmVkIHNwbGl0UG9z
aXRpb24sIGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yJik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0IHsgMCB9OwpAQCAtMTAzLDYgKzEwNSw0MCBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fcG9zaXRpb24geyAwIH07CiB9OwogCitpbmxpbmUgRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdt
ZW50OjpzcGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCBjb25zdCBGbG93Q29udGVudHNJdGVy
YXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCit7CisgICAgVGV4dEZyYWdtZW50IG5ld0ZyYWdt
ZW50KCp0aGlzKTsKKworICAgIGlmIChzcGxpdFBvc2l0aW9uID09IGVuZCgpKSB7CisgICAgICAg
IG5ld0ZyYWdtZW50Lm1fc3RhcnQgPSBlbmQoKTsKKyAgICAgICAgbmV3RnJhZ21lbnQubV93aWR0
aCA9IDA7CisgICAgICAgIG5ld0ZyYWdtZW50Lm1faXNDb2xsYXBzZWQgPSBmYWxzZTsKKyAgICAg
ICAgbmV3RnJhZ21lbnQubV9pc0JyZWFrYWJsZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gbmV3
RnJhZ21lbnQ7CisgICAgfQorCisgICAgaWYgKHNwbGl0UG9zaXRpb24gPT0gc3RhcnQoKSkgewor
ICAgICAgICBtX2VuZCA9IHN0YXJ0KCk7CisgICAgICAgIG1fd2lkdGggPSAwOworICAgICAgICBt
X2lzQ29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgIG1faXNCcmVha2FibGUgPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIG5ld0ZyYWdtZW50OworICAgIH0KKworICAgIG1fZW5kID0gc3BsaXRQb3Np
dGlvbjsKKyAgICBtX3dpZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHN0YXJ0
KCksIGVuZCgpLCAwKTsKKyAgICBib29sIHNpbmdsZSA9IHN0YXJ0KCkgKyAxID09IGVuZCgpOwor
ICAgIG1faXNCcmVha2FibGUgPSBzaW5nbGUgPyBmYWxzZSA6IG1faXNCcmVha2FibGU7CisgICAg
bV9pc0NvbGxhcHNlZCA9IHNpbmdsZSA/IGZhbHNlIDogbV9pc0NvbGxhcHNlZDsKKworICAgIG5l
d0ZyYWdtZW50Lm1fc3RhcnQgPSBzcGxpdFBvc2l0aW9uOworICAgIG5ld0ZyYWdtZW50Lm1fd2lk
dGggPSBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgobmV3RnJhZ21lbnQuc3RhcnQoKSwg
bmV3RnJhZ21lbnQuZW5kKCksIDApOworICAgIHNpbmdsZSA9IG5ld0ZyYWdtZW50LnN0YXJ0KCkg
KyAxID09IG5ld0ZyYWdtZW50LmVuZCgpOworICAgIG5ld0ZyYWdtZW50Lm1faXNCcmVha2FibGUg
PSBzaW5nbGUgPyBmYWxzZSA6IG5ld0ZyYWdtZW50Lm1faXNCcmVha2FibGU7CisgICAgbmV3RnJh
Z21lbnQubV9pc0NvbGxhcHNlZCA9IHNpbmdsZSA/IGZhbHNlIDogbmV3RnJhZ21lbnQubV9pc0Nv
bGxhcHNlZDsKKyAgICByZXR1cm4gbmV3RnJhZ21lbnQ7Cit9CisKIGlubGluZSBVQ2hhciBGbG93
Q29udGVudHNJdGVyYXRvcjo6Y2hhcmFjdGVyQXQodW5zaWduZWQgcG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgYXV0byYgc2VnbWVudCA9IG1fZmxvd0NvbnRlbnRzLnNlZ21lbnRGb3JQb3NpdGlvbihw
b3NpdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245887</attachid>
            <date>2015-02-02 11:09:49 -0800</date>
            <delta_ts>2015-02-02 11:31:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141146-20150202111001.patch</filename>
            <type>text/plain</type>
            <size>9626</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRiMDY1YmVlNzEwNWQ5
YjQ0ZTgwNWQyMGJlYzdkODEwMTJlN2JlYy4uZmM1NmFlOWMyYTU3MzU3YWUwZWU4MjMxMzBhMmM0
NWQ3YmI1OWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiB1c2Ugc3RkOjp1cHBlcl9ib3VuZCBpbiBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGN1
c3RvbSBiaW5hcnkgc2VhcmNoIGltcGxlbWVudGF0aW9uIHdpdGggc3RkOjp1cHBlcl9ib3VuZCBh
bmQKKyAgICAgICAgbW92ZSBzcGxpdHRpbmcgZnVuY3Rpb25hbGl0eSB0byBUZXh0RnJhZ21lbnQu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6OkZyYWdtZW50V2lkdGhJdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6
Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21l
bnRXaWR0aEl0ZXJhdG9yOjpvcGVyYXRvci0tKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OkZyYWdtZW50V2lkdGhJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRXaWR0aEl0
ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnNwbGl0RnJhZ21lbnRUb0ZpdExpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRl
cmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpzcGxpdCk6CisKIDIwMTUtMDIt
MDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzb21lIGxl
YWtzIGZvdW5kIGJ5IHRoZSBsZWFrIGJvdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IGI5MzEyYjY2NDQ5ZDgxYjMwNzMxODFlNTIwNWZlNzVi
ZDlmNDRiYjguLjYxNmY3OTcyYzQ4NDg4NWRkNTIyMDMxZDY5YjY2N2M5N2U2MjlkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTI5Nyw2
ICsyOTcsNTYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZmlyc3RDaGFyYWN0ZXJGaXRzIHsgZmFs
c2UgfTsKIH07CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsK
KyAgICB1bnNpZ25lZCBlbmQgeyAwIH07Cit9IFdpZHRoUmFuZ2U7CitjbGFzcyBGcmFnbWVudFdp
ZHRoSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3Jf
dGFnLCBXaWR0aFJhbmdlPiB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yKGNv
bnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCB1bnNpZ25l
ZCBmcmFnbWVudEluZGV4KQorICAgICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCisgICAgICAg
ICwgbV9mcmFnbWVudEluZGV4KGZyYWdtZW50SW5kZXgpCisgICAgeworICAgIH0KKworICAgIEZy
YWdtZW50V2lkdGhJdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICArK21fZnJh
Z21lbnRJbmRleDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEZyYWdtZW50
V2lkdGhJdGVyYXRvciBvcGVyYXRvcisrKGludCkKKyAgICB7CisgICAgICAgIEZyYWdtZW50V2lk
dGhJdGVyYXRvciByZXN1bHQoKnRoaXMpOworICAgICAgICArKyp0aGlzOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIEZyYWdtZW50V2lkdGhJdGVyYXRvciYgb3BlcmF0b3It
LSgpCisgICAgeworICAgICAgICAtLW1fZnJhZ21lbnRJbmRleDsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIEZyYWdtZW50V2lkdGhJdGVyYXRvciBvcGVyYXRvci0tKGludCkK
KyAgICB7CisgICAgICAgIEZyYWdtZW50V2lkdGhJdGVyYXRvciByZXN1bHQoKnRoaXMpOworICAg
ICAgICAtLSp0aGlzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGcmFnbWVudFdpZHRoSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2ZyYWdtZW50SW5kZXggPT0gb3RoZXIubV9mcmFnbWVudEluZGV4OyB9CisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZyYWdtZW50V2lkdGhJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgY29uc3QgV2lkdGhSYW5nZSBvcGVyYXRv
ciooKSBjb25zdCB7IFdpZHRoUmFuZ2UgcmFuZ2U7IHJhbmdlLnN0YXJ0ID0gbV9mcmFnbWVudC5z
dGFydCgpOyByYW5nZS5lbmQgPSBtX2ZyYWdtZW50SW5kZXg7IHJldHVybiByYW5nZTsgfQorCitw
cml2YXRlOgorICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgbV9mcmFnbWVu
dDsKKyAgICB1bnNpZ25lZCBtX2ZyYWdtZW50SW5kZXggeyAwIH07Cit9OworCitzdGF0aWMgRnJh
Z21lbnRXaWR0aEl0ZXJhdG9yIGJlZ2luKGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQmIGZyYWdtZW50KSAgeyByZXR1cm4gRnJhZ21lbnRXaWR0aEl0ZXJhdG9yKGZyYWdt
ZW50LCBmcmFnbWVudC5zdGFydCgpKTsgfQorc3RhdGljIEZyYWdtZW50V2lkdGhJdGVyYXRvciBl
bmQoY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJhZ21lbnQpICB7
IHJldHVybiBGcmFnbWVudFdpZHRoSXRlcmF0b3IoZnJhZ21lbnQsIGZyYWdtZW50LmVuZCgpKTsg
fQorCiBzdGF0aWMgYm9vbCBwcmVXcmFwKGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpTdHls
ZSYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLndyYXBMaW5lcyAmJiAhc3R5bGUuY29sbGFw
c2VXaGl0ZXNwYWNlOwpAQCAtMzMwLDQ4ICszODAsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlTGlu
ZUNvbnN0cmFpbnMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBMaW5lU3RhdGUmIGxpbmUp
CiAKIHN0YXRpYyBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IHNwbGl0RnJhZ21l
bnRUb0ZpdExpbmUoRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJhZ21lbnRU
b1NwbGl0LCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBrZWVwQXRMZWFzdE9uZUNoYXJhY3Rl
ciwgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZsb3dDb250ZW50c0l0ZXJhdG9yKQogewot
ICAgIC8vIEZhc3QgcGF0aCBmb3Igc2luZ2xlIGNoYXIgZnJhZ21lbnRzLgotICAgIGlmIChmcmFn
bWVudFRvU3BsaXQuc3RhcnQoKSArIDEgPT0gZnJhZ21lbnRUb1NwbGl0LmVuZCgpKSB7Ci0gICAg
ICAgIGlmIChrZWVwQXRMZWFzdE9uZUNoYXJhY3RlcikKLSAgICAgICAgICAgIHJldHVybiBGbG93
Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KCk7Ci0KLSAgICAgICAgRmxvd0NvbnRlbnRz
SXRlcmF0b3I6OlRleHRGcmFnbWVudCBmcmFnbWVudEZvck5leHRMaW5lKGZyYWdtZW50VG9TcGxp
dCk7Ci0gICAgICAgIC8vIE1ha2UgaXQgZW1wdHkgZnJhZ21lbnQuCi0gICAgICAgIGZyYWdtZW50
VG9TcGxpdCA9IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQoZnJhZ21lbnRUb1Nw
bGl0LnN0YXJ0KCksIGZyYWdtZW50VG9TcGxpdC5zdGFydCgpLCAwLCBmcmFnbWVudFRvU3BsaXQu
dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50Rm9yTmV4dExpbmU7Ci0gICAgfQotICAg
IC8vIFNpbXBsZSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgb3V0IHdoYXQgZml0cyB0aGUgY3VycmVu
dCBsaW5lLgogICAgIC8vIEZJWE1FOiBhZGQgc3Vycm9nYXRlIHBhaXIgc3VwcG9ydC4KLSAgICB1
bnNpZ25lZCBsZWZ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCk7Ci0gICAgdW5zaWduZWQgcmln
aHQgPSBmcmFnbWVudFRvU3BsaXQuZW5kKCkgLSAxOyAvLyBXZSBjYW4gaWdub3JlIHRoZSBsYXN0
IGNoYXJhY3Rlci4gSXQgc3VyZWx5IGRvZXMgbm90IGZpdC4KLSAgICBmbG9hdCB3aWR0aCA9IDA7
Ci0gICAgd2hpbGUgKGxlZnQgPCByaWdodCkgewotICAgICAgICB1bnNpZ25lZCBtaWRkbGUgPSAo
bGVmdCArIHJpZ2h0KSAvIDI7Ci0gICAgICAgIHdpZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3Iu
dGV4dFdpZHRoKGZyYWdtZW50VG9TcGxpdC5zdGFydCgpLCBtaWRkbGUgKyAxLCAwKTsKLSAgICAg
ICAgaWYgKGF2YWlsYWJsZVdpZHRoID4gd2lkdGgpCi0gICAgICAgICAgICBsZWZ0ID0gbWlkZGxl
ICsgMTsKLSAgICAgICAgZWxzZSBpZiAoYXZhaWxhYmxlV2lkdGggPCB3aWR0aCkKLSAgICAgICAg
ICAgIHJpZ2h0ID0gbWlkZGxlOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJpZ2h0ID0g
bWlkZGxlICsgMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyICYmIHJpZ2h0ID09IGZyYWdtZW50VG9TcGxpdC5z
dGFydCgpKQotICAgICAgICArK3JpZ2h0OwotCi0gICAgLy8gRnJhZ21lbnQgZm9yIG5leHQgbGlu
ZS4KLSAgICB1bnNpZ25lZCBuZXh0TGluZVN0YXJ0ID0gcmlnaHQ7Ci0gICAgdW5zaWduZWQgbmV4
dExpbmVFbmQgPSBmcmFnbWVudFRvU3BsaXQuZW5kKCk7Ci0gICAgZmxvYXQgbmV4dExpbmVXaWR0
aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChuZXh0TGluZVN0YXJ0LCBuZXh0TGlu
ZUVuZCwgMCk7Ci0KLSAgICB1bnNpZ25lZCB0aGlzTGluZVN0YXJ0ID0gZnJhZ21lbnRUb1NwbGl0
LnN0YXJ0KCk7Ci0gICAgdW5zaWduZWQgdGhpc0xpbmVFbmQgPSByaWdodDsKLSAgICBBU1NFUlQo
dGhpc0xpbmVTdGFydCA8PSB0aGlzTGluZUVuZCk7Ci0gICAgZmxvYXQgdGhpc0xpbmVXaWR0aCA9
IHRoaXNMaW5lU3RhcnQgPCB0aGlzTGluZUVuZCA/IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRX
aWR0aCh0aGlzTGluZVN0YXJ0LCB0aGlzTGluZUVuZCwgMCkgOiAwOwotICAgIGZyYWdtZW50VG9T
cGxpdCA9IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQodGhpc0xpbmVTdGFydCwg
dGhpc0xpbmVFbmQsIHRoaXNMaW5lV2lkdGgsIGZyYWdtZW50VG9TcGxpdC50eXBlKCksIGZyYWdt
ZW50VG9TcGxpdC5pc0NvbGxhcHNlZCgpLCBmcmFnbWVudFRvU3BsaXQuaXNCcmVha2FibGUoKSk7
Ci0gICAgcmV0dXJuIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQobmV4dExpbmVT
dGFydCwgbmV4dExpbmVFbmQsIG5leHRMaW5lV2lkdGgsIGZyYWdtZW50VG9TcGxpdC50eXBlKCks
IGZyYWdtZW50VG9TcGxpdC5pc0NvbGxhcHNlZCgpLCBmcmFnbWVudFRvU3BsaXQuaXNCcmVha2Fi
bGUoKSk7CisgICAgYXV0byBpdCA9IHN0ZDo6dXBwZXJfYm91bmQoYmVnaW4oZnJhZ21lbnRUb1Nw
bGl0KSwgZW5kKGZyYWdtZW50VG9TcGxpdCksIGF2YWlsYWJsZVdpZHRoLCBbJmZsb3dDb250ZW50
c0l0ZXJhdG9yXShmbG9hdCBhdmFpbGFibGVXaWR0aCwgY29uc3QgV2lkdGhSYW5nZSYgcmFuZ2Up
IHsKKyAgICAgICAgLy8gRklYTUU6IHVzZSB0aGUgYWN0dWFsIGxlZnQgcG9zaXRpb24gb2YgdGhl
IGxpbmUgKGluc3RlYWQgb2YgMCkgdG8gY2FsY3VsYXRlZCB3aWR0aC4gSXQgbWlnaHQgZ2l2ZSBm
YWxzZSB3aWR0aCBmb3IgdGFiIGNoYXJhY3RlcnMuCisgICAgICAgIHJldHVybiBhdmFpbGFibGVX
aWR0aCA8IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChyYW5nZS5zdGFydCwgcmFuZ2Uu
ZW5kICsgMSwgMCk7CisgICAgfSk7CisgICAgdW5zaWduZWQgc3BsaXRQb3NpdGlvbiA9ICgqaXQp
LmVuZDsKKyAgICBpZiAoa2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIgJiYgc3BsaXRQb3NpdGlvbiA9
PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSkKKyAgICAgICAgKytzcGxpdFBvc2l0aW9uOworICAg
IHJldHVybiBmcmFnbWVudFRvU3BsaXQuc3BsaXQoc3BsaXRQb3NpdGlvbiwgZmxvd0NvbnRlbnRz
SXRlcmF0b3IpOwogfQogCiBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVu
dCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRv
ciwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRl
cmF0b3IuY3BwCmluZGV4IDBlZDZmNDk4ODk5MzVlMjNkZDI5MWViMmZjZTVmMDBkN2FiODJmZTIu
LjNhYmQ0ZjhmNDRmMzAyYjkxZDNhYzNmMGZlNmQ1YTRjYjliZDE1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxv
d0NvbnRlbnRzSXRlcmF0b3IuY3BwCkBAIC0xNzEsNyArMTcxLDkgQEAgdW5zaWduZWQgRmxvd0Nv
bnRlbnRzSXRlcmF0b3I6OmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHVuc2lnbmVkIHBv
c2l0aW9uLAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBmbG9hdCBGbG93Q29u
dGVudHNJdGVyYXRvcjo6cnVuV2lkdGgoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdAogewotICAgIEFTU0VSVChmcm9t
IDwgdG8pOworICAgIEFTU0VSVChmcm9tIDw9IHRvKTsKKyAgICBpZiAoZnJvbSA9PSB0bykKKyAg
ICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBtZWFzdXJlV2l0aEVuZFNwYWNlID0gbV9zdHlsZS5j
b2xsYXBzZVdoaXRlc3BhY2UgJiYgdG8gPCB0ZXh0Lmxlbmd0aCgpICYmIHRleHRbdG9dID09ICcg
JzsKICAgICBpZiAobWVhc3VyZVdpdGhFbmRTcGFjZSkKICAgICAgICAgKyt0bzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRz
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxv
d0NvbnRlbnRzSXRlcmF0b3IuaAppbmRleCBlYzQ5ODhmZmQyZjBmYzg1MmE0ZjA2ZDMwNGYwMWI4
MWI3NTM3OTBhLi5kNmY2ZmU1M2M0YWYwYTY5MDY3YjhlYmUyNzhjOTc3NmRmMjZmMTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250
ZW50c0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgICAgIGJvb2wg
aXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29sbGFwc2VkOyB9CiAgICAgICAgIGJv
b2wgaXNCcmVha2FibGUoKSBjb25zdCB7IHJldHVybiBtX2lzQnJlYWthYmxlOyB9CisKICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSA9PSBlbmQoKTsgfQorICAg
ICAgICBUZXh0RnJhZ21lbnQgc3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgY29uc3QgRmxv
d0NvbnRlbnRzSXRlcmF0b3ImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1f
c3RhcnQgeyAwIH07CkBAIC0xMDMsNiArMTA1LDI2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9wb3NpdGlvbiB7IDAgfTsKIH07CiAKK2lubGluZSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4
dEZyYWdtZW50IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OnNwbGl0KHVuc2ln
bmVkIHNwbGl0UG9zaXRpb24sIGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVu
dHNJdGVyYXRvcikKK3sKKyAgICBhdXRvIHVwZGF0ZUZyYWdtZW50UHJvcGVydGllcyA9IFsmZmxv
d0NvbnRlbnRzSXRlcmF0b3JdIChUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQorICAgIHsKKyAgICAg
ICAgZnJhZ21lbnQubV93aWR0aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChmcmFn
bWVudC5zdGFydCgpLCBmcmFnbWVudC5lbmQoKSwgMCk7CisgICAgICAgIGlmIChmcmFnbWVudC5z
dGFydCgpICsgMSA+IGZyYWdtZW50LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBmcmFnbWVudC5tX2lzQ29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgIGZyYWdtZW50Lm1faXNC
cmVha2FibGUgPSBmYWxzZTsKKyAgICB9OworCisgICAgVGV4dEZyYWdtZW50IG5ld0ZyYWdtZW50
KCp0aGlzKTsKKyAgICBtX2VuZCA9IHNwbGl0UG9zaXRpb247CisgICAgdXBkYXRlRnJhZ21lbnRQ
cm9wZXJ0aWVzKCp0aGlzKTsKKworICAgIG5ld0ZyYWdtZW50Lm1fc3RhcnQgPSBzcGxpdFBvc2l0
aW9uOworICAgIHVwZGF0ZUZyYWdtZW50UHJvcGVydGllcyhuZXdGcmFnbWVudCk7CisgICAgcmV0
dXJuIG5ld0ZyYWdtZW50OworfQorCiBpbmxpbmUgVUNoYXIgRmxvd0NvbnRlbnRzSXRlcmF0b3I6
OmNoYXJhY3RlckF0KHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdAogewogICAgIGF1dG8mIHNlZ21l
bnQgPSBtX2Zsb3dDb250ZW50cy5zZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245888</attachid>
            <date>2015-02-02 11:36:37 -0800</date>
            <delta_ts>2015-02-02 12:16:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141146-20150202113647.patch</filename>
            <type>text/plain</type>
            <size>9365</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRiMDY1YmVlNzEwNWQ5
YjQ0ZTgwNWQyMGJlYzdkODEwMTJlN2JlYy4uZmM1NmFlOWMyYTU3MzU3YWUwZWU4MjMxMzBhMmM0
NWQ3YmI1OWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiB1c2Ugc3RkOjp1cHBlcl9ib3VuZCBpbiBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGN1
c3RvbSBiaW5hcnkgc2VhcmNoIGltcGxlbWVudGF0aW9uIHdpdGggc3RkOjp1cHBlcl9ib3VuZCBh
bmQKKyAgICAgICAgbW92ZSBzcGxpdHRpbmcgZnVuY3Rpb25hbGl0eSB0byBUZXh0RnJhZ21lbnQu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6OkZyYWdtZW50V2lkdGhJdGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6
Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21l
bnRXaWR0aEl0ZXJhdG9yOjpvcGVyYXRvci0tKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OkZyYWdtZW50V2lkdGhJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGcmFnbWVudFdpZHRoSXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRXaWR0aEl0
ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnNwbGl0RnJhZ21lbnRUb0ZpdExpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRl
cmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpzcGxpdCk6CisKIDIwMTUtMDIt
MDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzb21lIGxl
YWtzIGZvdW5kIGJ5IHRoZSBsZWFrIGJvdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IGI5MzEyYjY2NDQ5ZDgxYjMwNzMxODFlNTIwNWZlNzVi
ZDlmNDRiYjguLjRjODg2NzQ3OTcxNTFiMjFmMGJjMGFmNDQwYmYzNTdhMzRiMzc3MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTI5Nyw2
ICsyOTcsNDQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZmlyc3RDaGFyYWN0ZXJGaXRzIHsgZmFs
c2UgfTsKIH07CiAKK3N0cnVjdCBXaWR0aFJhbmdlIHsKKyAgICB1bnNpZ25lZCBzdGFydCB7IDAg
fTsKKyAgICB1bnNpZ25lZCBlbmQgeyAwIH07Cit9OworCitjbGFzcyBGcmFnbWVudFdpZHRoSXRl
cmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBX
aWR0aFJhbmdlPiB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yKGNvbnN0IEZs
b3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCB1bnNpZ25lZCBmcmFn
bWVudEluZGV4KQorICAgICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCisgICAgICAgICwgbV9m
cmFnbWVudEluZGV4KGZyYWdtZW50SW5kZXgpCisgICAgeworICAgIH0KKworICAgIEZyYWdtZW50
V2lkdGhJdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICArK21fZnJhZ21lbnRJ
bmRleDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEZyYWdtZW50V2lkdGhJ
dGVyYXRvciBvcGVyYXRvcisrKGludCkKKyAgICB7CisgICAgICAgIEZyYWdtZW50V2lkdGhJdGVy
YXRvciByZXN1bHQoKnRoaXMpOworICAgICAgICArKyp0aGlzOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFnbWVudFdpZHRoSXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50SW5kZXggPT0gb3RoZXIubV9m
cmFnbWVudEluZGV4OyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYWdtZW50V2lkdGhJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAg
Y29uc3QgV2lkdGhSYW5nZSBvcGVyYXRvciooKSBjb25zdCB7IFdpZHRoUmFuZ2UgcmFuZ2U7IHJh
bmdlLnN0YXJ0ID0gbV9mcmFnbWVudC5zdGFydCgpOyByYW5nZS5lbmQgPSBtX2ZyYWdtZW50SW5k
ZXg7IHJldHVybiByYW5nZTsgfQorCitwcml2YXRlOgorICAgIEZsb3dDb250ZW50c0l0ZXJhdG9y
OjpUZXh0RnJhZ21lbnQgbV9mcmFnbWVudDsKKyAgICB1bnNpZ25lZCBtX2ZyYWdtZW50SW5kZXgg
eyAwIH07Cit9OworCitzdGF0aWMgRnJhZ21lbnRXaWR0aEl0ZXJhdG9yIGJlZ2luKGNvbnN0IEZs
b3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KSAgeyByZXR1cm4gRnJh
Z21lbnRXaWR0aEl0ZXJhdG9yKGZyYWdtZW50LCBmcmFnbWVudC5zdGFydCgpKTsgfQorc3RhdGlj
IEZyYWdtZW50V2lkdGhJdGVyYXRvciBlbmQoY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudCYgZnJhZ21lbnQpICB7IHJldHVybiBGcmFnbWVudFdpZHRoSXRlcmF0b3IoZnJh
Z21lbnQsIGZyYWdtZW50LmVuZCgpKTsgfQorCiBzdGF0aWMgYm9vbCBwcmVXcmFwKGNvbnN0IEZs
b3dDb250ZW50c0l0ZXJhdG9yOjpTdHlsZSYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLndy
YXBMaW5lcyAmJiAhc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlOwpAQCAtMzMwLDQ4ICszNjgsMTUg
QEAgc3RhdGljIHZvaWQgdXBkYXRlTGluZUNvbnN0cmFpbnMoY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBmbG93LCBMaW5lU3RhdGUmIGxpbmUpCiAKIHN0YXRpYyBGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoRmxvd0NvbnRlbnRzSXRlcmF0b3I6
OlRleHRGcmFnbWVudCYgZnJhZ21lbnRUb1NwbGl0LCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgYm9v
bCBrZWVwQXRMZWFzdE9uZUNoYXJhY3RlciwgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZs
b3dDb250ZW50c0l0ZXJhdG9yKQogewotICAgIC8vIEZhc3QgcGF0aCBmb3Igc2luZ2xlIGNoYXIg
ZnJhZ21lbnRzLgotICAgIGlmIChmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSArIDEgPT0gZnJhZ21l
bnRUb1NwbGl0LmVuZCgpKSB7Ci0gICAgICAgIGlmIChrZWVwQXRMZWFzdE9uZUNoYXJhY3RlcikK
LSAgICAgICAgICAgIHJldHVybiBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KCk7
Ci0KLSAgICAgICAgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmcmFnbWVudEZv
ck5leHRMaW5lKGZyYWdtZW50VG9TcGxpdCk7Ci0gICAgICAgIC8vIE1ha2UgaXQgZW1wdHkgZnJh
Z21lbnQuCi0gICAgICAgIGZyYWdtZW50VG9TcGxpdCA9IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpU
ZXh0RnJhZ21lbnQoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIGZyYWdtZW50VG9TcGxpdC5zdGFy
dCgpLCAwLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50
Rm9yTmV4dExpbmU7Ci0gICAgfQotICAgIC8vIFNpbXBsZSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQg
b3V0IHdoYXQgZml0cyB0aGUgY3VycmVudCBsaW5lLgogICAgIC8vIEZJWE1FOiBhZGQgc3Vycm9n
YXRlIHBhaXIgc3VwcG9ydC4KLSAgICB1bnNpZ25lZCBsZWZ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0
YXJ0KCk7Ci0gICAgdW5zaWduZWQgcmlnaHQgPSBmcmFnbWVudFRvU3BsaXQuZW5kKCkgLSAxOyAv
LyBXZSBjYW4gaWdub3JlIHRoZSBsYXN0IGNoYXJhY3Rlci4gSXQgc3VyZWx5IGRvZXMgbm90IGZp
dC4KLSAgICBmbG9hdCB3aWR0aCA9IDA7Ci0gICAgd2hpbGUgKGxlZnQgPCByaWdodCkgewotICAg
ICAgICB1bnNpZ25lZCBtaWRkbGUgPSAobGVmdCArIHJpZ2h0KSAvIDI7Ci0gICAgICAgIHdpZHRo
ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKGZyYWdtZW50VG9TcGxpdC5zdGFydCgp
LCBtaWRkbGUgKyAxLCAwKTsKLSAgICAgICAgaWYgKGF2YWlsYWJsZVdpZHRoID4gd2lkdGgpCi0g
ICAgICAgICAgICBsZWZ0ID0gbWlkZGxlICsgMTsKLSAgICAgICAgZWxzZSBpZiAoYXZhaWxhYmxl
V2lkdGggPCB3aWR0aCkKLSAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlICsgMTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyICYmIHJp
Z2h0ID09IGZyYWdtZW50VG9TcGxpdC5zdGFydCgpKQotICAgICAgICArK3JpZ2h0OwotCi0gICAg
Ly8gRnJhZ21lbnQgZm9yIG5leHQgbGluZS4KLSAgICB1bnNpZ25lZCBuZXh0TGluZVN0YXJ0ID0g
cmlnaHQ7Ci0gICAgdW5zaWduZWQgbmV4dExpbmVFbmQgPSBmcmFnbWVudFRvU3BsaXQuZW5kKCk7
Ci0gICAgZmxvYXQgbmV4dExpbmVXaWR0aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0
aChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVuZCwgMCk7Ci0KLSAgICB1bnNpZ25lZCB0aGlzTGlu
ZVN0YXJ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCk7Ci0gICAgdW5zaWduZWQgdGhpc0xpbmVF
bmQgPSByaWdodDsKLSAgICBBU1NFUlQodGhpc0xpbmVTdGFydCA8PSB0aGlzTGluZUVuZCk7Ci0g
ICAgZmxvYXQgdGhpc0xpbmVXaWR0aCA9IHRoaXNMaW5lU3RhcnQgPCB0aGlzTGluZUVuZCA/IGZs
b3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aCh0aGlzTGluZVN0YXJ0LCB0aGlzTGluZUVuZCwg
MCkgOiAwOwotICAgIGZyYWdtZW50VG9TcGxpdCA9IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQodGhpc0xpbmVTdGFydCwgdGhpc0xpbmVFbmQsIHRoaXNMaW5lV2lkdGgsIGZyYWdt
ZW50VG9TcGxpdC50eXBlKCksIGZyYWdtZW50VG9TcGxpdC5pc0NvbGxhcHNlZCgpLCBmcmFnbWVu
dFRvU3BsaXQuaXNCcmVha2FibGUoKSk7Ci0gICAgcmV0dXJuIEZsb3dDb250ZW50c0l0ZXJhdG9y
OjpUZXh0RnJhZ21lbnQobmV4dExpbmVTdGFydCwgbmV4dExpbmVFbmQsIG5leHRMaW5lV2lkdGgs
IGZyYWdtZW50VG9TcGxpdC50eXBlKCksIGZyYWdtZW50VG9TcGxpdC5pc0NvbGxhcHNlZCgpLCBm
cmFnbWVudFRvU3BsaXQuaXNCcmVha2FibGUoKSk7CisgICAgYXV0byBpdCA9IHN0ZDo6dXBwZXJf
Ym91bmQoYmVnaW4oZnJhZ21lbnRUb1NwbGl0KSwgZW5kKGZyYWdtZW50VG9TcGxpdCksIGF2YWls
YWJsZVdpZHRoLCBbJmZsb3dDb250ZW50c0l0ZXJhdG9yXShmbG9hdCBhdmFpbGFibGVXaWR0aCwg
Y29uc3QgV2lkdGhSYW5nZSYgcmFuZ2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHVzZSB0aGUgYWN0
dWFsIGxlZnQgcG9zaXRpb24gb2YgdGhlIGxpbmUgKGluc3RlYWQgb2YgMCkgdG8gY2FsY3VsYXRl
ZCB3aWR0aC4gSXQgbWlnaHQgZ2l2ZSBmYWxzZSB3aWR0aCBmb3IgdGFiIGNoYXJhY3RlcnMuCisg
ICAgICAgIHJldHVybiBhdmFpbGFibGVXaWR0aCA8IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRX
aWR0aChyYW5nZS5zdGFydCwgcmFuZ2UuZW5kICsgMSwgMCk7CisgICAgfSk7CisgICAgdW5zaWdu
ZWQgc3BsaXRQb3NpdGlvbiA9ICgqaXQpLmVuZDsKKyAgICBpZiAoa2VlcEF0TGVhc3RPbmVDaGFy
YWN0ZXIgJiYgc3BsaXRQb3NpdGlvbiA9PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSkKKyAgICAg
ICAgKytzcGxpdFBvc2l0aW9uOworICAgIHJldHVybiBmcmFnbWVudFRvU3BsaXQuc3BsaXQoc3Bs
aXRQb3NpdGlvbiwgZmxvd0NvbnRlbnRzSXRlcmF0b3IpOwogfQogCiBzdGF0aWMgRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50c0l0ZXJh
dG9yJiBmbG93Q29udGVudHNJdGVyYXRvciwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCmluZGV4IDBlZDZmNDk4ODk5MzVlMjNk
ZDI5MWViMmZjZTVmMDBkN2FiODJmZTIuLjNhYmQ0ZjhmNDRmMzAyYjkxZDNhYzNmMGZlNmQ1YTRj
YjliZDE1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCkBAIC0xNzEsNyAr
MTcxLDkgQEAgdW5zaWduZWQgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OmZpbmROZXh0Tm9uV2hpdGVz
cGFjZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uLAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CiBmbG9hdCBGbG93Q29udGVudHNJdGVyYXRvcjo6cnVuV2lkdGgoY29uc3QgU3Ry
aW5nJiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBj
b25zdAogewotICAgIEFTU0VSVChmcm9tIDwgdG8pOworICAgIEFTU0VSVChmcm9tIDw9IHRvKTsK
KyAgICBpZiAoZnJvbSA9PSB0bykKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBtZWFzdXJl
V2l0aEVuZFNwYWNlID0gbV9zdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgJiYgdG8gPCB0ZXh0Lmxl
bmd0aCgpICYmIHRleHRbdG9dID09ICcgJzsKICAgICBpZiAobWVhc3VyZVdpdGhFbmRTcGFjZSkK
ICAgICAgICAgKyt0bzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaAppbmRleCBlYzQ5ODhm
ZmQyZjBmYzg1MmE0ZjA2ZDMwNGYwMWI4MWI3NTM3OTBhLi5kNmY2ZmU1M2M0YWYwYTY5MDY3Yjhl
YmUyNzhjOTc3NmRmMjZmMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oCkBAIC01
OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAgICAgICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29sbGFwc2VkOyB9CiAgICAgICAgIGJvb2wgaXNCcmVha2FibGUoKSBjb25zdCB7IHJldHVybiBt
X2lzQnJlYWthYmxlOyB9CisKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
c3RhcnQoKSA9PSBlbmQoKTsgfQorICAgICAgICBUZXh0RnJhZ21lbnQgc3BsaXQodW5zaWduZWQg
c3BsaXRQb3NpdGlvbiwgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3ImKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnQgeyAwIH07CkBAIC0xMDMsNiArMTA1LDI2IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wb3NpdGlvbiB7IDAgfTsKIH07CiAKK2lubGluZSBG
bG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpU
ZXh0RnJhZ21lbnQ6OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIGNvbnN0IEZsb3dDb250
ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRvcikKK3sKKyAgICBhdXRvIHVwZGF0ZUZy
YWdtZW50UHJvcGVydGllcyA9IFsmZmxvd0NvbnRlbnRzSXRlcmF0b3JdIChUZXh0RnJhZ21lbnQm
IGZyYWdtZW50KQorICAgIHsKKyAgICAgICAgZnJhZ21lbnQubV93aWR0aCA9IGZsb3dDb250ZW50
c0l0ZXJhdG9yLnRleHRXaWR0aChmcmFnbWVudC5zdGFydCgpLCBmcmFnbWVudC5lbmQoKSwgMCk7
CisgICAgICAgIGlmIChmcmFnbWVudC5zdGFydCgpICsgMSA+IGZyYWdtZW50LmVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBmcmFnbWVudC5tX2lzQ29sbGFwc2VkID0gZmFsc2U7
CisgICAgICAgIGZyYWdtZW50Lm1faXNCcmVha2FibGUgPSBmYWxzZTsKKyAgICB9OworCisgICAg
VGV4dEZyYWdtZW50IG5ld0ZyYWdtZW50KCp0aGlzKTsKKyAgICBtX2VuZCA9IHNwbGl0UG9zaXRp
b247CisgICAgdXBkYXRlRnJhZ21lbnRQcm9wZXJ0aWVzKCp0aGlzKTsKKworICAgIG5ld0ZyYWdt
ZW50Lm1fc3RhcnQgPSBzcGxpdFBvc2l0aW9uOworICAgIHVwZGF0ZUZyYWdtZW50UHJvcGVydGll
cyhuZXdGcmFnbWVudCk7CisgICAgcmV0dXJuIG5ld0ZyYWdtZW50OworfQorCiBpbmxpbmUgVUNo
YXIgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OmNoYXJhY3RlckF0KHVuc2lnbmVkIHBvc2l0aW9uKSBj
b25zdAogewogICAgIGF1dG8mIHNlZ21lbnQgPSBtX2Zsb3dDb250ZW50cy5zZWdtZW50Rm9yUG9z
aXRpb24ocG9zaXRpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245896</attachid>
            <date>2015-02-02 13:36:13 -0800</date>
            <delta_ts>2015-02-02 14:24:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141146-20150202133623.patch</filename>
            <type>text/plain</type>
            <size>9125</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRiMDY1YmVlNzEwNWQ5
YjQ0ZTgwNWQyMGJlYzdkODEwMTJlN2JlYy4uMzU1Y2Y2ZjNlNTYzYTlhZTEwNWNhOThhOGI0OTky
ZWJiOTQ4MWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTAyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiB1c2Ugc3RkOjp1cHBlcl9ib3VuZCBpbiBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGN1
c3RvbSBiaW5hcnkgc2VhcmNoIGltcGxlbWVudGF0aW9uIHdpdGggc3RkOjp1cHBlcl9ib3VuZCBh
bmQKKyAgICAgICAgbW92ZSBzcGxpdHRpbmcgZnVuY3Rpb25hbGl0eSB0byBUZXh0RnJhZ21lbnQu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGcmFnbWVudEZvcndhcmRJdGVyYXRvcjo6RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRGb3J3YXJkSXRl
cmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3I6Om9wZXJhdG9yIT0pOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRGb3J3YXJkSXRlcmF0
b3I6Om9wZXJhdG9yKik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpiZWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjplbmQpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6c3BsaXRGcmFnbWVudFRvRml0TGluZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRv
cjo6cnVuV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0Nv
bnRlbnRzSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZs
b3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OnNwbGl0KToKKwogMjAxNS0wMi0wMiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgbGVha3Mg
Zm91bmQgYnkgdGhlIGxlYWsgYm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dC5jcHAKaW5kZXggYjkzMTJiNjY0NDlkODFiMzA3MzE4MWU1MjA1ZmU3NWJkOWY0
NGJiOC4uNTA2Y2I3MjNiODhmYjMyZmFjOGIwYTI3MTdlNmVhNDJjZTEwZGUzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjk3LDYgKzI5
NywzNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXJzdENoYXJhY3RlckZpdHMgeyBmYWxzZSB9
OwogfTsKIAorY2xhc3MgRnJhZ21lbnRGb3J3YXJkSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVy
YXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCB1bnNpZ25lZD4geworcHVibGljOgorICAg
IEZyYWdtZW50Rm9yd2FyZEl0ZXJhdG9yKHVuc2lnbmVkIGZyYWdtZW50SW5kZXgpCisgICAgICAg
IDogbV9mcmFnbWVudEluZGV4KGZyYWdtZW50SW5kZXgpCisgICAgeworICAgIH0KKworICAgIEZy
YWdtZW50Rm9yd2FyZEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgICsrbV9m
cmFnbWVudEluZGV4OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRnJhZ21l
bnRGb3J3YXJkSXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpCisgICAgeworICAgICAgICBGcmFnbWVu
dEZvcndhcmRJdGVyYXRvciByZXN1bHQoKnRoaXMpOworICAgICAgICArKyp0aGlzOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFn
bWVudEZvcndhcmRJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRJbmRl
eCA9PSBvdGhlci5tX2ZyYWdtZW50SW5kZXg7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQorICAgIHVuc2lnbmVkIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
Z21lbnRJbmRleDsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fZnJhZ21lbnRJbmRleCB7
IDAgfTsKK307CisKK3N0YXRpYyBGcmFnbWVudEZvcndhcmRJdGVyYXRvciBiZWdpbihjb25zdCBG
bG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBmcmFnbWVudCkgIHsgcmV0dXJuIEZy
YWdtZW50Rm9yd2FyZEl0ZXJhdG9yKGZyYWdtZW50LnN0YXJ0KCkpOyB9CitzdGF0aWMgRnJhZ21l
bnRGb3J3YXJkSXRlcmF0b3IgZW5kKGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQmIGZyYWdtZW50KSAgeyByZXR1cm4gRnJhZ21lbnRGb3J3YXJkSXRlcmF0b3IoZnJhZ21l
bnQuZW5kKCkpOyB9CisKIHN0YXRpYyBib29sIHByZVdyYXAoY29uc3QgRmxvd0NvbnRlbnRzSXRl
cmF0b3I6OlN0eWxlJiBzdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGUud3JhcExpbmVzICYmICFz
dHlsZS5jb2xsYXBzZVdoaXRlc3BhY2U7CkBAIC0zMzAsNDggKzM2MSwxNiBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVMaW5lQ29uc3RyYWlucyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIExpbmVT
dGF0ZSYgbGluZSkKIAogc3RhdGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQg
c3BsaXRGcmFnbWVudFRvRml0TGluZShGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50
JiBmcmFnbWVudFRvU3BsaXQsIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGtlZXBBdExlYXN0
T25lQ2hhcmFjdGVyLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRl
cmF0b3IpCiB7Ci0gICAgLy8gRmFzdCBwYXRoIGZvciBzaW5nbGUgY2hhciBmcmFnbWVudHMuCi0g
ICAgaWYgKGZyYWdtZW50VG9TcGxpdC5zdGFydCgpICsgMSA9PSBmcmFnbWVudFRvU3BsaXQuZW5k
KCkpIHsKLSAgICAgICAgaWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyKQotICAgICAgICAgICAg
cmV0dXJuIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQoKTsKLQotICAgICAgICBG
bG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IGZyYWdtZW50Rm9yTmV4dExpbmUoZnJh
Z21lbnRUb1NwbGl0KTsKLSAgICAgICAgLy8gTWFrZSBpdCBlbXB0eSBmcmFnbWVudC4KLSAgICAg
ICAgZnJhZ21lbnRUb1NwbGl0ID0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudChm
cmFnbWVudFRvU3BsaXQuc3RhcnQoKSwgZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIDAsIGZyYWdt
ZW50VG9TcGxpdC50eXBlKCkpOwotICAgICAgICByZXR1cm4gZnJhZ21lbnRGb3JOZXh0TGluZTsK
LSAgICB9Ci0gICAgLy8gU2ltcGxlIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBvdXQgd2hhdCBmaXRz
IHRoZSBjdXJyZW50IGxpbmUuCiAgICAgLy8gRklYTUU6IGFkZCBzdXJyb2dhdGUgcGFpciBzdXBw
b3J0LgotICAgIHVuc2lnbmVkIGxlZnQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKLSAgICB1
bnNpZ25lZCByaWdodCA9IGZyYWdtZW50VG9TcGxpdC5lbmQoKSAtIDE7IC8vIFdlIGNhbiBpZ25v
cmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9lcyBub3QgZml0LgotICAgIGZsb2F0
IHdpZHRoID0gMDsKLSAgICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7Ci0gICAgICAgIHVuc2lnbmVk
IG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKLSAgICAgICAgd2lkdGggPSBmbG93Q29udGVu
dHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIG1pZGRsZSArIDEs
IDApOwotICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGggPiB3aWR0aCkKLSAgICAgICAgICAgIGxl
ZnQgPSBtaWRkbGUgKyAxOwotICAgICAgICBlbHNlIGlmIChhdmFpbGFibGVXaWR0aCA8IHdpZHRo
KQotICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgcmlnaHQgPSBtaWRkbGUgKyAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoa2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIgJiYgcmlnaHQgPT0gZnJhZ21l
bnRUb1NwbGl0LnN0YXJ0KCkpCi0gICAgICAgICsrcmlnaHQ7Ci0KLSAgICAvLyBGcmFnbWVudCBm
b3IgbmV4dCBsaW5lLgotICAgIHVuc2lnbmVkIG5leHRMaW5lU3RhcnQgPSByaWdodDsKLSAgICB1
bnNpZ25lZCBuZXh0TGluZUVuZCA9IGZyYWdtZW50VG9TcGxpdC5lbmQoKTsKLSAgICBmbG9hdCBu
ZXh0TGluZVdpZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKG5leHRMaW5lU3Rh
cnQsIG5leHRMaW5lRW5kLCAwKTsKLQotICAgIHVuc2lnbmVkIHRoaXNMaW5lU3RhcnQgPSBmcmFn
bWVudFRvU3BsaXQuc3RhcnQoKTsKLSAgICB1bnNpZ25lZCB0aGlzTGluZUVuZCA9IHJpZ2h0Owot
ICAgIEFTU0VSVCh0aGlzTGluZVN0YXJ0IDw9IHRoaXNMaW5lRW5kKTsKLSAgICBmbG9hdCB0aGlz
TGluZVdpZHRoID0gdGhpc0xpbmVTdGFydCA8IHRoaXNMaW5lRW5kID8gZmxvd0NvbnRlbnRzSXRl
cmF0b3IudGV4dFdpZHRoKHRoaXNMaW5lU3RhcnQsIHRoaXNMaW5lRW5kLCAwKSA6IDA7Ci0gICAg
ZnJhZ21lbnRUb1NwbGl0ID0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCh0aGlz
TGluZVN0YXJ0LCB0aGlzTGluZUVuZCwgdGhpc0xpbmVXaWR0aCwgZnJhZ21lbnRUb1NwbGl0LnR5
cGUoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQ29sbGFwc2VkKCksIGZyYWdtZW50VG9TcGxpdC5pc0Jy
ZWFrYWJsZSgpKTsKLSAgICByZXR1cm4gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVu
dChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVuZCwgbmV4dExpbmVXaWR0aCwgZnJhZ21lbnRUb1Nw
bGl0LnR5cGUoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQ29sbGFwc2VkKCksIGZyYWdtZW50VG9TcGxp
dC5pc0JyZWFrYWJsZSgpKTsKKyAgICB1bnNpZ25lZCBzdGFydCA9IGZyYWdtZW50VG9TcGxpdC5z
dGFydCgpOworICAgIGF1dG8gaXQgPSBzdGQ6OnVwcGVyX2JvdW5kKGJlZ2luKGZyYWdtZW50VG9T
cGxpdCksIGVuZChmcmFnbWVudFRvU3BsaXQpLCBhdmFpbGFibGVXaWR0aCwgWyZmbG93Q29udGVu
dHNJdGVyYXRvciwgc3RhcnRdKGZsb2F0IGF2YWlsYWJsZVdpZHRoLCB1bnNpZ25lZCBpbmRleCkg
eworICAgICAgICAvLyBGSVhNRTogdXNlIHRoZSBhY3R1YWwgbGVmdCBwb3NpdGlvbiBvZiB0aGUg
bGluZSAoaW5zdGVhZCBvZiAwKSB0byBjYWxjdWxhdGVkIHdpZHRoLiBJdCBtaWdodCBnaXZlIGZh
bHNlIHdpZHRoIGZvciB0YWIgY2hhcmFjdGVycy4KKyAgICAgICAgcmV0dXJuIGF2YWlsYWJsZVdp
ZHRoIDwgZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHN0YXJ0LCBpbmRleCArIDEsIDAp
OworICAgIH0pOworICAgIHVuc2lnbmVkIHNwbGl0UG9zaXRpb24gPSAoKml0KTsKKyAgICBpZiAo
a2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIgJiYgc3BsaXRQb3NpdGlvbiA9PSBmcmFnbWVudFRvU3Bs
aXQuc3RhcnQoKSkKKyAgICAgICAgKytzcGxpdFBvc2l0aW9uOworICAgIHJldHVybiBmcmFnbWVu
dFRvU3BsaXQuc3BsaXQoc3BsaXRQb3NpdGlvbiwgZmxvd0NvbnRlbnRzSXRlcmF0b3IpOwogfQog
CiBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmaXJzdEZyYWdtZW50
KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRvciwgY29uc3QgTGluZVN0
YXRlJiBwcmV2aW91c0xpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCmluZGV4
IDBlZDZmNDk4ODk5MzVlMjNkZDI5MWViMmZjZTVmMDBkN2FiODJmZTIuLjNhYmQ0ZjhmNDRmMzAy
YjkxZDNhYzNmMGZlNmQ1YTRjYjliZDE1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0
b3IuY3BwCkBAIC0xNzEsNyArMTcxLDkgQEAgdW5zaWduZWQgRmxvd0NvbnRlbnRzSXRlcmF0b3I6
OmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uLAogdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBmbG9hdCBGbG93Q29udGVudHNJdGVyYXRvcjo6
cnVuV2lkdGgoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
ZmxvYXQgeFBvc2l0aW9uKSBjb25zdAogewotICAgIEFTU0VSVChmcm9tIDwgdG8pOworICAgIEFT
U0VSVChmcm9tIDw9IHRvKTsKKyAgICBpZiAoZnJvbSA9PSB0bykKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgYm9vbCBtZWFzdXJlV2l0aEVuZFNwYWNlID0gbV9zdHlsZS5jb2xsYXBzZVdoaXRlc3Bh
Y2UgJiYgdG8gPCB0ZXh0Lmxlbmd0aCgpICYmIHRleHRbdG9dID09ICcgJzsKICAgICBpZiAobWVh
c3VyZVdpdGhFbmRTcGFjZSkKICAgICAgICAgKyt0bzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0
b3IuaAppbmRleCBlYzQ5ODhmZmQyZjBmYzg1MmE0ZjA2ZDMwNGYwMWI4MWI3NTM3OTBhLi42NGU2
ZTIxMDU5NTU4ODIyNWQ2N2RiMDE2YmU0NGUxMTY2NGE5MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHNJdGVyYXRvci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzQ29sbGFwc2VkOyB9CiAgICAgICAgIGJvb2wgaXNCcmVha2FibGUo
KSBjb25zdCB7IHJldHVybiBtX2lzQnJlYWthYmxlOyB9CisKICAgICAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSA9PSBlbmQoKTsgfQorICAgICAgICBUZXh0RnJhZ21l
bnQgc3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0
b3ImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnQgeyAwIH07CkBA
IC0xMDMsNiArMTA1LDI4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wb3NpdGlvbiB7IDAg
fTsKIH07CiAKK2lubGluZSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IEZsb3dD
b250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRp
b24sIGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRvcikKK3sK
KyAgICBhdXRvIHVwZGF0ZUZyYWdtZW50UHJvcGVydGllcyA9IFsmZmxvd0NvbnRlbnRzSXRlcmF0
b3JdIChUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQorICAgIHsKKyAgICAgICAgZnJhZ21lbnQubV93
aWR0aCA9IDA7CisgICAgICAgIGlmIChmcmFnbWVudC5zdGFydCgpICE9IGZyYWdtZW50LmVuZCgp
KQorICAgICAgICAgICAgZnJhZ21lbnQubV93aWR0aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRl
eHRXaWR0aChmcmFnbWVudC5zdGFydCgpLCBmcmFnbWVudC5lbmQoKSwgMCk7CisgICAgICAgIGlm
IChmcmFnbWVudC5zdGFydCgpICsgMSA+IGZyYWdtZW50LmVuZCgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBmcmFnbWVudC5tX2lzQ29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgIGZy
YWdtZW50Lm1faXNCcmVha2FibGUgPSBmYWxzZTsKKyAgICB9OworCisgICAgVGV4dEZyYWdtZW50
IG5ld0ZyYWdtZW50KCp0aGlzKTsKKyAgICBtX2VuZCA9IHNwbGl0UG9zaXRpb247CisgICAgdXBk
YXRlRnJhZ21lbnRQcm9wZXJ0aWVzKCp0aGlzKTsKKworICAgIG5ld0ZyYWdtZW50Lm1fc3RhcnQg
PSBzcGxpdFBvc2l0aW9uOworICAgIHVwZGF0ZUZyYWdtZW50UHJvcGVydGllcyhuZXdGcmFnbWVu
dCk7CisgICAgcmV0dXJuIG5ld0ZyYWdtZW50OworfQorCiBpbmxpbmUgVUNoYXIgRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OmNoYXJhY3RlckF0KHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdAogewogICAg
IGF1dG8mIHNlZ21lbnQgPSBtX2Zsb3dDb250ZW50cy5zZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRp
b24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245900</attachid>
            <date>2015-02-02 14:24:49 -0800</date>
            <delta_ts>2015-02-02 15:53:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141146-20150202142459.patch</filename>
            <type>text/plain</type>
            <size>8804</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRiMDY1YmVlNzEwNWQ5
YjQ0ZTgwNWQyMGJlYzdkODEwMTJlN2JlYy4uMjU3YTQzMThlNTg4MDIxMzQ4NDNjYzI0MWM1ODUz
Y2M5NjU0NjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAyLTAyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiB1c2Ugc3RkOjp1cHBlcl9ib3VuZCBpbiBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGN1
c3RvbSBiaW5hcnkgc2VhcmNoIGltcGxlbWVudGF0aW9uIHdpdGggc3RkOjp1cHBlcl9ib3VuZCBh
bmQKKyAgICAgICAgbW92ZSBzcGxpdHRpbmcgZnVuY3Rpb25hbGl0eSB0byBUZXh0RnJhZ21lbnQu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGcmFnbWVudEZvcndhcmRJdGVyYXRvcjo6RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRGb3J3YXJkSXRl
cmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6RnJhZ21lbnRGb3J3YXJkSXRlcmF0b3I6Om9wZXJhdG9yKik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpiZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6c3BsaXRGcmFnbWVudFRvRml0TGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6cnVuV2lkdGgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50c0l0ZXJhdG9y
OjpUZXh0RnJhZ21lbnQ6OnNwbGl0KToKKwogMjAxNS0wMi0wMiAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgbGVha3MgZm91bmQgYnkgdGhlIGxlYWsg
Ym90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5k
ZXggYjkzMTJiNjY0NDlkODFiMzA3MzE4MWU1MjA1ZmU3NWJkOWY0NGJiOC4uYWJhNDhiNmViMTU3
NDk2YTRkZWM1MDEyNzdiYmZkYTU2MWQ0ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjk3LDYgKzI5NywyOSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9maXJzdENoYXJhY3RlckZpdHMgeyBmYWxzZSB9OwogfTsKIAorY2xhc3MgRnJh
Z21lbnRGb3J3YXJkSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRf
aXRlcmF0b3JfdGFnLCB1bnNpZ25lZD4geworcHVibGljOgorICAgIEZyYWdtZW50Rm9yd2FyZEl0
ZXJhdG9yKHVuc2lnbmVkIGZyYWdtZW50SW5kZXgpCisgICAgICAgIDogbV9mcmFnbWVudEluZGV4
KGZyYWdtZW50SW5kZXgpCisgICAgeworICAgIH0KKworICAgIEZyYWdtZW50Rm9yd2FyZEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgICsrbV9mcmFnbWVudEluZGV4OworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZy
YWdtZW50Rm9yd2FyZEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudElu
ZGV4ICE9IG90aGVyLm1fZnJhZ21lbnRJbmRleDsgfQorICAgIHVuc2lnbmVkIG9wZXJhdG9yKigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRJbmRleDsgfQorCitwcml2YXRlOgorICAgIHVuc2ln
bmVkIG1fZnJhZ21lbnRJbmRleCB7IDAgfTsKK307CisKK3N0YXRpYyBGcmFnbWVudEZvcndhcmRJ
dGVyYXRvciBiZWdpbihjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBm
cmFnbWVudCkgIHsgcmV0dXJuIEZyYWdtZW50Rm9yd2FyZEl0ZXJhdG9yKGZyYWdtZW50LnN0YXJ0
KCkpOyB9CitzdGF0aWMgRnJhZ21lbnRGb3J3YXJkSXRlcmF0b3IgZW5kKGNvbnN0IEZsb3dDb250
ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KSAgeyByZXR1cm4gRnJhZ21lbnRG
b3J3YXJkSXRlcmF0b3IoZnJhZ21lbnQuZW5kKCkpOyB9CisKIHN0YXRpYyBib29sIHByZVdyYXAo
Y29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlN0eWxlJiBzdHlsZSkKIHsKICAgICByZXR1cm4g
c3R5bGUud3JhcExpbmVzICYmICFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2U7CkBAIC0zMzAsNDgg
KzM1MywxNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVMaW5lQ29uc3RyYWlucyhjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIExpbmVTdGF0ZSYgbGluZSkKIAogc3RhdGljIEZsb3dDb250ZW50c0l0
ZXJhdG9yOjpUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0TGluZShGbG93Q29udGVudHNJ
dGVyYXRvcjo6VGV4dEZyYWdtZW50JiBmcmFnbWVudFRvU3BsaXQsIGZsb2F0IGF2YWlsYWJsZVdp
ZHRoLCBib29sIGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyLCBjb25zdCBGbG93Q29udGVudHNJdGVy
YXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCiB7Ci0gICAgLy8gRmFzdCBwYXRoIGZvciBzaW5n
bGUgY2hhciBmcmFnbWVudHMuCi0gICAgaWYgKGZyYWdtZW50VG9TcGxpdC5zdGFydCgpICsgMSA9
PSBmcmFnbWVudFRvU3BsaXQuZW5kKCkpIHsKLSAgICAgICAgaWYgKGtlZXBBdExlYXN0T25lQ2hh
cmFjdGVyKQotICAgICAgICAgICAgcmV0dXJuIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQoKTsKLQotICAgICAgICBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IGZy
YWdtZW50Rm9yTmV4dExpbmUoZnJhZ21lbnRUb1NwbGl0KTsKLSAgICAgICAgLy8gTWFrZSBpdCBl
bXB0eSBmcmFnbWVudC4KLSAgICAgICAgZnJhZ21lbnRUb1NwbGl0ID0gRmxvd0NvbnRlbnRzSXRl
cmF0b3I6OlRleHRGcmFnbWVudChmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSwgZnJhZ21lbnRUb1Nw
bGl0LnN0YXJ0KCksIDAsIGZyYWdtZW50VG9TcGxpdC50eXBlKCkpOwotICAgICAgICByZXR1cm4g
ZnJhZ21lbnRGb3JOZXh0TGluZTsKLSAgICB9Ci0gICAgLy8gU2ltcGxlIGJpbmFyeSBzZWFyY2gg
dG8gZmluZCBvdXQgd2hhdCBmaXRzIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgLy8gRklYTUU6IGFk
ZCBzdXJyb2dhdGUgcGFpciBzdXBwb3J0LgotICAgIHVuc2lnbmVkIGxlZnQgPSBmcmFnbWVudFRv
U3BsaXQuc3RhcnQoKTsKLSAgICB1bnNpZ25lZCByaWdodCA9IGZyYWdtZW50VG9TcGxpdC5lbmQo
KSAtIDE7IC8vIFdlIGNhbiBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9l
cyBub3QgZml0LgotICAgIGZsb2F0IHdpZHRoID0gMDsKLSAgICB3aGlsZSAobGVmdCA8IHJpZ2h0
KSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKLSAgICAg
ICAgd2lkdGggPSBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0
LnN0YXJ0KCksIG1pZGRsZSArIDEsIDApOwotICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGggPiB3
aWR0aCkKLSAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwotICAgICAgICBlbHNlIGlmIChh
dmFpbGFibGVXaWR0aCA8IHdpZHRoKQotICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGUgKyAxOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoa2VlcEF0TGVhc3RPbmVDaGFyYWN0
ZXIgJiYgcmlnaHQgPT0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCkpCi0gICAgICAgICsrcmlnaHQ7
Ci0KLSAgICAvLyBGcmFnbWVudCBmb3IgbmV4dCBsaW5lLgotICAgIHVuc2lnbmVkIG5leHRMaW5l
U3RhcnQgPSByaWdodDsKLSAgICB1bnNpZ25lZCBuZXh0TGluZUVuZCA9IGZyYWdtZW50VG9TcGxp
dC5lbmQoKTsKLSAgICBmbG9hdCBuZXh0TGluZVdpZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3Iu
dGV4dFdpZHRoKG5leHRMaW5lU3RhcnQsIG5leHRMaW5lRW5kLCAwKTsKLQotICAgIHVuc2lnbmVk
IHRoaXNMaW5lU3RhcnQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKLSAgICB1bnNpZ25lZCB0
aGlzTGluZUVuZCA9IHJpZ2h0OwotICAgIEFTU0VSVCh0aGlzTGluZVN0YXJ0IDw9IHRoaXNMaW5l
RW5kKTsKLSAgICBmbG9hdCB0aGlzTGluZVdpZHRoID0gdGhpc0xpbmVTdGFydCA8IHRoaXNMaW5l
RW5kID8gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHRoaXNMaW5lU3RhcnQsIHRoaXNM
aW5lRW5kLCAwKSA6IDA7Ci0gICAgZnJhZ21lbnRUb1NwbGl0ID0gRmxvd0NvbnRlbnRzSXRlcmF0
b3I6OlRleHRGcmFnbWVudCh0aGlzTGluZVN0YXJ0LCB0aGlzTGluZUVuZCwgdGhpc0xpbmVXaWR0
aCwgZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQ29sbGFwc2VkKCks
IGZyYWdtZW50VG9TcGxpdC5pc0JyZWFrYWJsZSgpKTsKLSAgICByZXR1cm4gRmxvd0NvbnRlbnRz
SXRlcmF0b3I6OlRleHRGcmFnbWVudChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVuZCwgbmV4dExp
bmVXaWR0aCwgZnJhZ21lbnRUb1NwbGl0LnR5cGUoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQ29sbGFw
c2VkKCksIGZyYWdtZW50VG9TcGxpdC5pc0JyZWFrYWJsZSgpKTsKKyAgICB1bnNpZ25lZCBzdGFy
dCA9IGZyYWdtZW50VG9TcGxpdC5zdGFydCgpOworICAgIGF1dG8gaXQgPSBzdGQ6OnVwcGVyX2Jv
dW5kKGJlZ2luKGZyYWdtZW50VG9TcGxpdCksIGVuZChmcmFnbWVudFRvU3BsaXQpLCBhdmFpbGFi
bGVXaWR0aCwgWyZmbG93Q29udGVudHNJdGVyYXRvciwgc3RhcnRdKGZsb2F0IGF2YWlsYWJsZVdp
ZHRoLCB1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAvLyBGSVhNRTogdXNlIHRoZSBhY3R1YWwg
bGVmdCBwb3NpdGlvbiBvZiB0aGUgbGluZSAoaW5zdGVhZCBvZiAwKSB0byBjYWxjdWxhdGVkIHdp
ZHRoLiBJdCBtaWdodCBnaXZlIGZhbHNlIHdpZHRoIGZvciB0YWIgY2hhcmFjdGVycy4KKyAgICAg
ICAgcmV0dXJuIGF2YWlsYWJsZVdpZHRoIDwgZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRo
KHN0YXJ0LCBpbmRleCArIDEsIDApOworICAgIH0pOworICAgIHVuc2lnbmVkIHNwbGl0UG9zaXRp
b24gPSAoKml0KTsKKyAgICBpZiAoa2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIgJiYgc3BsaXRQb3Np
dGlvbiA9PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSkKKyAgICAgICAgKytzcGxpdFBvc2l0aW9u
OworICAgIHJldHVybiBmcmFnbWVudFRvU3BsaXQuc3BsaXQoc3BsaXRQb3NpdGlvbiwgZmxvd0Nv
bnRlbnRzSXRlcmF0b3IpOwogfQogCiBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJ
dGVyYXRvciwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRl
bnRzSXRlcmF0b3IuY3BwCmluZGV4IDBlZDZmNDk4ODk5MzVlMjNkZDI5MWViMmZjZTVmMDBkN2Fi
ODJmZTIuLjNhYmQ0ZjhmNDRmMzAyYjkxZDNhYzNmMGZlNmQ1YTRjYjliZDE1MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRz
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCkBAIC0xNzEsNyArMTcxLDkgQEAgdW5zaWduZWQg
Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHVuc2ln
bmVkIHBvc2l0aW9uLAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBmbG9hdCBG
bG93Q29udGVudHNJdGVyYXRvcjo6cnVuV2lkdGgoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdAogewotICAgIEFTU0VS
VChmcm9tIDwgdG8pOworICAgIEFTU0VSVChmcm9tIDw9IHRvKTsKKyAgICBpZiAoZnJvbSA9PSB0
bykKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgYm9vbCBtZWFzdXJlV2l0aEVuZFNwYWNlID0gbV9z
dHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgJiYgdG8gPCB0ZXh0Lmxlbmd0aCgpICYmIHRleHRbdG9d
ID09ICcgJzsKICAgICBpZiAobWVhc3VyZVdpdGhFbmRTcGFjZSkKICAgICAgICAgKyt0bzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0Nv
bnRlbnRzSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaAppbmRleCBlYzQ5ODhmZmQyZjBmYzg1MmE0ZjA2ZDMw
NGYwMWI4MWI3NTM3OTBhLi42NGU2ZTIxMDU5NTU4ODIyNWQ2N2RiMDE2YmU0NGUxMTY2NGE5MmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50c0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgICAg
IGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29sbGFwc2VkOyB9CiAgICAg
ICAgIGJvb2wgaXNCcmVha2FibGUoKSBjb25zdCB7IHJldHVybiBtX2lzQnJlYWthYmxlOyB9CisK
ICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSA9PSBlbmQoKTsg
fQorICAgICAgICBUZXh0RnJhZ21lbnQgc3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgY29u
c3QgRmxvd0NvbnRlbnRzSXRlcmF0b3ImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2ln
bmVkIG1fc3RhcnQgeyAwIH07CkBAIC0xMDMsNiArMTA1LDI4IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9wb3NpdGlvbiB7IDAgfTsKIH07CiAKK2lubGluZSBGbG93Q29udGVudHNJdGVyYXRv
cjo6VGV4dEZyYWdtZW50IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OnNwbGl0
KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93
Q29udGVudHNJdGVyYXRvcikKK3sKKyAgICBhdXRvIHVwZGF0ZUZyYWdtZW50UHJvcGVydGllcyA9
IFsmZmxvd0NvbnRlbnRzSXRlcmF0b3JdIChUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQorICAgIHsK
KyAgICAgICAgZnJhZ21lbnQubV93aWR0aCA9IDA7CisgICAgICAgIGlmIChmcmFnbWVudC5zdGFy
dCgpICE9IGZyYWdtZW50LmVuZCgpKQorICAgICAgICAgICAgZnJhZ21lbnQubV93aWR0aCA9IGZs
b3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChmcmFnbWVudC5zdGFydCgpLCBmcmFnbWVudC5l
bmQoKSwgMCk7CisgICAgICAgIGlmIChmcmFnbWVudC5zdGFydCgpICsgMSA+IGZyYWdtZW50LmVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmcmFnbWVudC5tX2lzQ29sbGFwc2Vk
ID0gZmFsc2U7CisgICAgICAgIGZyYWdtZW50Lm1faXNCcmVha2FibGUgPSBmYWxzZTsKKyAgICB9
OworCisgICAgVGV4dEZyYWdtZW50IG5ld0ZyYWdtZW50KCp0aGlzKTsKKyAgICBtX2VuZCA9IHNw
bGl0UG9zaXRpb247CisgICAgdXBkYXRlRnJhZ21lbnRQcm9wZXJ0aWVzKCp0aGlzKTsKKworICAg
IG5ld0ZyYWdtZW50Lm1fc3RhcnQgPSBzcGxpdFBvc2l0aW9uOworICAgIHVwZGF0ZUZyYWdtZW50
UHJvcGVydGllcyhuZXdGcmFnbWVudCk7CisgICAgcmV0dXJuIG5ld0ZyYWdtZW50OworfQorCiBp
bmxpbmUgVUNoYXIgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OmNoYXJhY3RlckF0KHVuc2lnbmVkIHBv
c2l0aW9uKSBjb25zdAogewogICAgIGF1dG8mIHNlZ21lbnQgPSBtX2Zsb3dDb250ZW50cy5zZWdt
ZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>