<?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>35783</bug_id>
          
          <creation_ts>2010-03-05 00:20:56 -0800</creation_ts>
          <short_desc>[GStreamer] Use ImageBuffer API to do painting</short_desc>
          <delta_ts>2010-03-22 12:39:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>196374</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-05 00:20:56 -0800</bug_when>
    <thetext>The current ::paint method of the player contains calls to Cairo. It would be better, I think, to add support for GStreamer buffers in cairo/ImageBuffer and use it in the painting code. That way other ports could reuse the player backend more easily. They&apos;d need to add GStreamer buffer-&gt;Image support in their painting abstraction though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196462</commentid>
    <comment_count>1</comment_count>
      <attachid>50098</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-05 08:50:32 -0800</bug_when>
    <thetext>Created attachment 50098
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196464</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-05 08:51:29 -0800</bug_when>
    <thetext>Attachment 50098 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/gstreamer/ImageGStreamer.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/gstreamer/ImageGStreamer.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/graphics/gstreamer/ImageGStreamer.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 4 in 5 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>196466</commentid>
    <comment_count>3</comment_count>
      <attachid>50099</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-05 08:54:23 -0800</bug_when>
    <thetext>Created attachment 50099
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196583</commentid>
    <comment_count>4</comment_count>
      <attachid>50099</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 12:31:10 -0800</bug_when>
    <thetext>Comment on attachment 50099
proposed patch

is + * Copyright (C) 2010 Igalia S.L a company name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197079</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-08 00:05:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 50099 [details])
&gt; is + * Copyright (C) 2010 Igalia S.L a company name?

Yes Igalia S.L is the company I work for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197177</commentid>
    <comment_count>6</comment_count>
      <attachid>50222</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-08 08:16:27 -0800</bug_when>
    <thetext>Created attachment 50222
proposed patch

Previous patch with cairo.h include removed from the header of the player</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197296</commentid>
    <comment_count>7</comment_count>
      <attachid>50222</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-08 13:44:50 -0800</bug_when>
    <thetext>Comment on attachment 50222
proposed patch

 49     private:
 50         cairo_surface_t* m_surface;
 51         RefPtr&lt;BitmapImage&gt; m_image;
 52 
 53     };

Drop the needless line.

 1172     bool success;
 1173     ImageGStreamer gstImage(m_buffer, &amp;success);

I don&apos;t like this. It looks very non-idiomatic. I would prefer to have the createClass pattern used in, say, ScrollBar. That means create a static function that instantiates the object, and does whatever checking/initialization is needed, then return the object or NULL. You can decide on success based on the return value being NULL or not. Also, you seem to be leaking the image, aren&apos;t you? Should it be OwnPtr?

 1180     bool useLowQualityScale = false;
 1181     context-&gt;drawImage(reinterpret_cast&lt;Image*&gt;(gstImage.image().get()), styleColorSpace,
 1182                        rect, op, useLowQualityScale);

This is not very readable. You&apos;re saying &apos;Do not use low quality scale&apos; by passing a &apos;useLowQualityScale&apos; variable =D. I understand it&apos;s a boolean, of course, but I got confused reading this. I&apos;d drop the variables, give values directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197503</commentid>
    <comment_count>8</comment_count>
      <attachid>50282</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-09 02:08:44 -0800</bug_when>
    <thetext>Created attachment 50282
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197504</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-09 02:11:43 -0800</bug_when>
    <thetext>Attachment 50282 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/gstreamer/ImageGStreamer.cpp:43:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 6 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>198139</commentid>
    <comment_count>10</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-10 07:51:35 -0800</bug_when>
    <thetext>Eric, could you share some thoughts on this? =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201808</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-19 04:04:21 -0700</bug_when>
    <thetext>Eric, we&apos;d like your opinion on this patch, please :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201847</commentid>
    <comment_count>12</comment_count>
      <attachid>50282</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-19 07:46:35 -0700</bug_when>
    <thetext>Comment on attachment 50282
proposed patch

&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
&gt; + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt; + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt; + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; + */

I think this is the wrong version, don&apos;t you want the one with &quot;THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS&quot;?


&gt; +
&gt; +    IntSize size(width, height);
&gt; +
This local is only used in the call to the ImageGStreamer constructor, you could pass &quot;size(width, height)&quot; instead.


&gt; +    if (format == GST_VIDEO_FORMAT_ARGB || format == GST_VIDEO_FORMAT_BGRA)
&gt; +        cairoFormat = CAIRO_FORMAT_ARGB32;
&gt; +    else
&gt; +        cairoFormat = CAIRO_FORMAT_RGB24;
&gt; +
Now that the GstBuffer is being created in a completely different class it seems unsafe to assume you have RGB if you don&apos;t have ARGB or BGRA. Worth an assert()?


&gt; +ImageGStreamer::ImageGStreamer(GstBuffer*&amp; buffer, IntSize&amp; size, cairo_format_t&amp; cairoFormat)
&gt; +    : m_surface(0)
&gt; +    , m_image(0)
&gt; +{
&gt; +    m_surface = cairo_image_surface_create_for_data(GST_BUFFER_DATA(buffer), cairoFormat,
&gt; +                                                    size.width(), size.height(),
&gt; +                                                    4 * size.width());
&gt; +
Won&apos;t &quot;4 * size.width()&quot; only work for some widths and/or pixel formats? I think it would be more future proof to calculate the stride with cairo_format_stride_for_width instead.


&gt; +    if (m_surface)
&gt; +        m_image = BitmapImage::create(m_surface);
&gt; +}
The Cairo documentation says cairo_image_surface_create_for_data() always returns a valid pointer, even if the allocation fails or the stride value is invalid. Seems like cairo_surface_status() is the correct way to check for failure. Might be worth adding an assert to catch failures here since ImageGStreamer::image() will assert later when someone tries to get the image.


&gt; +    if (cairo_surface_get_reference_count(m_surface))
&gt; +        cairo_surface_destroy(m_surface);
&gt; +
Is it possible for m_surface to be non-nil and have a reference count? If not, I think it would be better to test the pointer directly assert the reference count when it is non-nil.


&gt; +class ImageGStreamer : public RefCounted&lt;ImageGStreamer&gt; {
&gt; +    public:
&gt; +        static PassRefPtr&lt;ImageGStreamer&gt; createImage(GstBuffer*);
&gt; +
&gt; +        ImageGStreamer(GstBuffer*&amp;, IntSize&amp;, cairo_format_t&amp;);
&gt; +        ~ImageGStreamer();
&gt; +
&gt; +        PassRefPtr&lt;BitmapImage&gt; image();
&gt; +
&gt; +    private:
&gt; +
The constructor and destructor should be private.


&gt; -
&gt; -    cairo_save(cr);
&gt; -
&gt; -    // translate and scale the context to correct size
&gt; -    cairo_translate(cr, rect.x(), rect.y());
&gt; -    cairo_scale(cr, static_cast&lt;double&gt;(rect.width()) / width, static_cast&lt;double&gt;(rect.height()) / height);
&gt; -
&gt; -    // And paint it.
&gt; -    cairo_set_source_surface(cr, src, 0, 0);
&gt; -    cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_PAD);
&gt; -    cairo_rectangle(cr, 0, 0, width, height);
&gt; -    cairo_fill(cr);
&gt; -    cairo_restore(cr);
&gt;
Why are you able to remove the positioning and sizing code, was it unnecessary before? 

r=me with these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202444</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-22 04:53:06 -0700</bug_when>
    <thetext>Thanks Eric for your careful review ;) Due to the amount of changes asked I preferred to rework the patch so it can get a last pass from you and/or Gustavo.

I adressed all your comments excepted:

&gt; 
&gt; &gt; +class ImageGStreamer : public RefCounted&lt;ImageGStreamer&gt; {
&gt; &gt; +    public:
&gt; &gt; +        static PassRefPtr&lt;ImageGStreamer&gt; createImage(GstBuffer*);
&gt; &gt; +
&gt; &gt; +        ImageGStreamer(GstBuffer*&amp;, IntSize&amp;, cairo_format_t&amp;);
&gt; &gt; +        ~ImageGStreamer();
&gt; &gt; +
&gt; &gt; +        PassRefPtr&lt;BitmapImage&gt; image();
&gt; &gt; +
&gt; &gt; +    private:
&gt; &gt; +
&gt; The constructor and destructor should be private.
&gt; 

It seems I can&apos;t make the destructor private because in the case where the public createImage() returns NULL, ~PassRefPtr() is called which somehow triggers the ~ImageGStreamer(). So in this context the destructor can&apos;t be private.

But agreed, I made the constructor private :)
&gt; 
&gt; &gt; -
&gt; &gt; -    cairo_save(cr);
&gt; &gt; -
&gt; &gt; -    // translate and scale the context to correct size
&gt; &gt; -    cairo_translate(cr, rect.x(), rect.y());
&gt; &gt; -    cairo_scale(cr, static_cast&lt;double&gt;(rect.width()) / width, static_cast&lt;double&gt;(rect.height()) / height);
&gt; &gt; -
&gt; &gt; -    // And paint it.
&gt; &gt; -    cairo_set_source_surface(cr, src, 0, 0);
&gt; &gt; -    cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_PAD);
&gt; &gt; -    cairo_rectangle(cr, 0, 0, width, height);
&gt; &gt; -    cairo_fill(cr);
&gt; &gt; -    cairo_restore(cr);
&gt; &gt;
&gt; Why are you able to remove the positioning and sizing code, was it unnecessary
&gt; before? 
&gt; 

Those are done in ImageCairo.cpp in the draw method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202445</commentid>
    <comment_count>14</comment_count>
      <attachid>50282</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-22 04:56:30 -0700</bug_when>
    <thetext>Comment on attachment 50282
proposed patch

Attaching a reworked patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202446</commentid>
    <comment_count>15</comment_count>
      <attachid>51276</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-22 04:57:51 -0700</bug_when>
    <thetext>Created attachment 51276
updated patch

I also explicitely named ImageGStreamer.cpp to ImageGStreamerCairo.cpp
and added the checks for CAIRO platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202448</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-22 05:02:02 -0700</bug_when>
    <thetext>Attachment 51276 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/gstreamer/ImageGStreamer.h:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 6 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>202512</commentid>
    <comment_count>17</comment_count>
      <attachid>51276</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-22 08:40:07 -0700</bug_when>
    <thetext>Comment on attachment 51276
updated patch

&gt; + *
&gt; + * You should have received a copy of the GNU Library General Public License
&gt; + * aint with this library; see the file COPYING.LIB.  If not, write to
&gt; 
Typo here, &quot;aint&quot; should be &quot;along&quot; (see https://bugs.webkit.org/show_bug.cgi?id=36442).


&gt; +        PassRefPtr&lt;BitmapImage&gt; image() {
&gt; +            ASSERT(m_image);
&gt; +            return m_image.get();
&gt; +        }
&gt;
The brace beginning a function definition should be on its own line.


&gt; + *
&gt; + * You should have received a copy of the GNU Library General Public License
&gt; + * aint with this library; see the file COPYING.LIB.  If not, write to
&gt;
Same typo here too.


&gt; +#include &quot;ImageGStreamer.h&quot;
&gt; +
&gt; +#include &quot;GOwnPtr.h&quot;
&gt; +
Don&apos;t need a blank line between these.


&gt; +
&gt; +    cairo_format_t cairoFormat;
&gt; +    if (format == GST_VIDEO_FORMAT_ARGB || format == GST_VIDEO_FORMAT_BGRA)
&gt; +        cairoFormat = CAIRO_FORMAT_ARGB32;
&gt; +    else
&gt; +        cairoFormat = CAIRO_FORMAT_RGB24;
&gt; +
In the previous review I recommended asserting the format is GST_VIDEO_FORMAT_RGB before assigning CAIRO_FORMAT_RGB24. I suspect Cairo will support other pixel formats in the future, if so someone will want to optimize and not always convert to RGB. Do you disagree?


r=me with these minor changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202521</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-22 09:01:39 -0700</bug_when>
    <thetext>(In reply to comment #17)

&gt; &gt; +
&gt; &gt; +    cairo_format_t cairoFormat;
&gt; &gt; +    if (format == GST_VIDEO_FORMAT_ARGB || format == GST_VIDEO_FORMAT_BGRA)
&gt; &gt; +        cairoFormat = CAIRO_FORMAT_ARGB32;
&gt; &gt; +    else
&gt; &gt; +        cairoFormat = CAIRO_FORMAT_RGB24;
&gt; &gt; +
&gt; In the previous review I recommended asserting the format is
&gt; GST_VIDEO_FORMAT_RGB before assigning CAIRO_FORMAT_RGB24. I suspect Cairo will
&gt; support other pixel formats in the future, if so someone will want to optimize
&gt; and not always convert to RGB. Do you disagree?
&gt; 

Yes ;) It can be sparse RGB too, like GST_VIDEO_FORMAT_BGRx or GST_VIDEO_CAPS_xRGB depending on endian-ness. CAIRO_FORMAT_RGB24 is little/big endian dependant as mentionned in the VideoSinkGStreamer.cpp file, where the sinktemplate of the sink is defined.

Should I really assert anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202526</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-22 09:10:30 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; &gt; +
&gt; &gt; &gt; +    cairo_format_t cairoFormat;
&gt; &gt; &gt; +    if (format == GST_VIDEO_FORMAT_ARGB || format == GST_VIDEO_FORMAT_BGRA)
&gt; &gt; &gt; +        cairoFormat = CAIRO_FORMAT_ARGB32;
&gt; &gt; &gt; +    else
&gt; &gt; &gt; +        cairoFormat = CAIRO_FORMAT_RGB24;
&gt; &gt; &gt; +
&gt; &gt; In the previous review I recommended asserting the format is
&gt; &gt; GST_VIDEO_FORMAT_RGB before assigning CAIRO_FORMAT_RGB24. I suspect Cairo will
&gt; &gt; support other pixel formats in the future, if so someone will want to optimize
&gt; &gt; and not always convert to RGB. Do you disagree?
&gt; &gt; 
&gt; 
&gt; Yes ;) It can be sparse RGB too, like GST_VIDEO_FORMAT_BGRx or
&gt; GST_VIDEO_CAPS_xRGB depending on endian-ness. CAIRO_FORMAT_RGB24 is little/big
&gt; endian dependant as mentionned in the VideoSinkGStreamer.cpp file, where the
&gt; sinktemplate of the sink is defined.
&gt; 
&gt; Should I really assert anyway?

Completely up to you, as I noted in my previous review I know essentially *nothing* about Cairo or GStreamer ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202704</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-22 12:39:23 -0700</bug_when>
    <thetext>Landed as r56354. Thanks for the review! I didn&apos;t add the ASSERT() for GST_VIDEO_FORMAT_RGB finally ;)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50098</attachid>
            <date>2010-03-05 08:50:32 -0800</date>
            <delta_ts>2010-03-05 08:54:23 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>10317</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0YTRjY2FhM2FhMTU5NmQwY2Q5NWI1NGE5Yjk2MzJiYjRiZmIwNjJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDUgTWFyIDIwMTAgMTY6Mjc6NDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjAgKysrKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcCB8ICAgODcgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCAgIHwgICA1OCAr
KysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgICAgICB8ICAgNDYgKysrLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlv
bnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGM4NWI0ZjguLmNlOTI1ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDMtMDUgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIFVzZSBJbWFnZUJ1ZmZlciBBUEkgdG8g
ZG8gcGFpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1NzgzCisKKyAgICAgICAgTmV3IEltYWdlR1N0cmVhbWVyIGNsYXNzIGFic3RyYWN0aW5n
IHRoZSBjb252ZXJzaW9uIG9mIEdTdHJlYW1lcgorICAgICAgICBidWZmZXJzIHRvIGNhaXJvIHN1
cmZhY2VzLiBVc2luZyB0aGlzIG1ha2VzIHRoZSBwYWludGluZyBjb2RlIG9mCisgICAgICAgIHRo
ZSBwbGF5ZXIgbW9yZSBnZW5lcmljLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6aW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGFpbnQpOgorCiAyMDEw
LTAzLTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDhmZDM2YmMuLmZhMDQwOGIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtMjQyOCw2ICsyNDI4LDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRGF0YVNvdXJjZUdTdHJlYW1l
ci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RhdGFTb3VyY2VH
U3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaAogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZhNmNjYwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcApAQCAt
MCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VHU3RyZWFtZXIuaCIKKyNpbmNs
dWRlICJHT3duUHRyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciomIGJ1ZmZl
ciwgYm9vbCogc3VjY2VzcykKKyAgICA6IG1fc3VyZmFjZSgwKQorICAgICwgbV9pbWFnZSgwKQor
eworICAgICpzdWNjZXNzID0gZmFsc2U7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAw
OworICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7CisgICAg
R3N0VmlkZW9Gb3JtYXQgZm9ybWF0OworCisgICAgaWYgKCFnc3RfdmlkZW9fZm9ybWF0X3BhcnNl
X2NhcHMoY2FwcywgJmZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0KSkgeworICAgICAgICBnc3RfY2Fw
c191bnJlZihjYXBzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdzdF9jYXBzX3Vu
cmVmKGNhcHMpOworCisgICAgSW50U2l6ZSBzaXplKHdpZHRoLCBoZWlnaHQpOworCisgICAgY2Fp
cm9fZm9ybWF0X3QgY2Fpcm9Gb3JtYXQ7CisgICAgaWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9S
TUFUX0FSR0IgfHwgZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfQkdSQSkKKyAgICAgICAgY2Fp
cm9Gb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOworICAgIGVsc2UKKyAgICAgICAgY2Fpcm9G
b3JtYXQgPSBDQUlST19GT1JNQVRfUkdCMjQ7CisKKyAgICBtX3N1cmZhY2UgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwgY2Fpcm9G
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgKiBzaXplLndpZHRoKCkpOworICAgIGlmICht
X3N1cmZhY2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobV9zdXJm
YWNlKTsKKyAgICAgICAgKnN1Y2Nlc3MgPSB0cnVlOworICAgIH0KK30KKworSW1hZ2VHU3RyZWFt
ZXI6On5JbWFnZUdTdHJlYW1lcigpCit7CisgICAgaWYgKG1faW1hZ2UpCisgICAgICAgIG1faW1h
Z2UuY2xlYXIoKTsKKworICAgIG1faW1hZ2UgPSAwOworCisgICAgaWYgKGNhaXJvX3N1cmZhY2Vf
Z2V0X3JlZmVyZW5jZV9jb3VudChtX3N1cmZhY2UpKQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3kobV9zdXJmYWNlKTsKKworICAgIG1fc3VyZmFjZSA9IDA7Cit9CisKK1Bhc3NSZWZQdHI8
Qml0bWFwSW1hZ2U+IEltYWdlR1N0cmVhbWVyOjppbWFnZSgpCit7CisgICAgQVNTRVJUKG1faW1h
Z2UpOworICAgIHJldHVybiBtX2ltYWdlLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGE1N2NhCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEltYWdlR1N0cmVhbWVyX2gKKyNkZWZpbmUgSW1hZ2VHU3RyZWFtZXJfaAorCisjaWYg
RU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKworI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisKKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgSW1hZ2VHU3RyZWFtZXIgeworCisgICAgcHVibGljOgorICAgICAgICBJbWFn
ZUdTdHJlYW1lcihHc3RCdWZmZXIqJiwgYm9vbCopOworICAgICAgICB+SW1hZ2VHU3RyZWFtZXIo
KTsKKworICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7CisgICAgICAgIFJlZlB0
cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKworICAgIH07Cit9CisKKyNlbmRpZgorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGZlNGIyZjkuLjM5MmVi
ZDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgogCiAKKyNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRhdGFT
b3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzUsNyArMzYsOSBA
QAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkltYWdlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllci5oIgpAQCAtMTE2Niw0MiArMTE2OSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCB3aWR0aCA9IDAsIGhl
aWdodCA9IDA7Ci0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9idWZmZXJfZ2V0X2NhcHMobV9idWZm
ZXIpOwotICAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKLQotICAgIGlmICghZ3N0X3ZpZGVvX2Zv
cm1hdF9wYXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkpIHsKLSAgICAg
IGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhaXJv
X2Zvcm1hdF90IGNhaXJvRm9ybWF0OwotICAgIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1B
VF9BUkdCIHx8IGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUkEpCi0gICAgICAgIGNhaXJv
Rm9ybWF0ID0gQ0FJUk9fRk9STUFUX0FSR0IzMjsKLSAgICBlbHNlCi0gICAgICAgIGNhaXJvRm9y
bWF0ID0gQ0FJUk9fRk9STUFUX1JHQjI0OworICAgIGJvb2wgc3VjY2VzczsKKyAgICBJbWFnZUdT
dHJlYW1lciBnc3RJbWFnZShtX2J1ZmZlciwgJnN1Y2Nlc3MpOwogCi0gICAgY2Fpcm9fdCogY3Ig
PSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHNyYyA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKEdTVF9CVUZGRVJfREFUQShtX2J1
ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWlyb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
ICogd2lkdGgpOwotCi0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICAvLyB0cmFuc2xhdGUgYW5k
IHNjYWxlIHRoZSBjb250ZXh0IHRvIGNvcnJlY3Qgc2l6ZQotICAgIGNhaXJvX3RyYW5zbGF0ZShj
ciwgcmVjdC54KCksIHJlY3QueSgpKTsKLSAgICBjYWlyb19zY2FsZShjciwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihyZWN0LndpZHRoKCkpIC8gd2lkdGgsIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5o
ZWlnaHQoKSkgLyBoZWlnaHQpOwotCi0gICAgLy8gQW5kIHBhaW50IGl0LgotICAgIGNhaXJvX3Nl
dF9zb3VyY2Vfc3VyZmFjZShjciwgc3JjLCAwLCAwKTsKLSAgICBjYWlyb19wYXR0ZXJuX3NldF9l
eHRlbmQoY2Fpcm9fZ2V0X3NvdXJjZShjciksIENBSVJPX0VYVEVORF9QQUQpOwotICAgIGNhaXJv
X3JlY3RhbmdsZShjciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZmlsbChjcik7
Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1
cm47CiAKLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3JjKTsKLSAgICBnc3RfY2Fwc191bnJl
ZihjYXBzKTsKKyAgICBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNl
OworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wID0gQ29tcG9zaXRlQ29weTsKKyAgICBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZWludGVy
cHJldF9jYXN0PEltYWdlKj4oZ3N0SW1hZ2UuaW1hZ2UoKS5nZXQoKSksIHN0eWxlQ29sb3JTcGFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7
CiB9CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVDYWNoZSgpCi0tIAoxLjYuMy4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50099</attachid>
            <date>2010-03-05 08:54:23 -0800</date>
            <delta_ts>2010-03-08 08:16:27 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>10291</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBlYjlmNWExMjM0NGNhNjI2ZGJjOTc1NjU1NzMyNDlmOGNjOTc4NGY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDUgTWFyIDIwMTAgMTY6Mjc6NDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjAgKysrKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcCB8ICAgODkgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCAgIHwgICA1OCAr
KysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgICAgICB8ICAgNDYgKysrLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlv
bnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGM4NWI0ZjguLmNlOTI1ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDMtMDUgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIFVzZSBJbWFnZUJ1ZmZlciBBUEkgdG8g
ZG8gcGFpbnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1NzgzCisKKyAgICAgICAgTmV3IEltYWdlR1N0cmVhbWVyIGNsYXNzIGFic3RyYWN0aW5n
IHRoZSBjb252ZXJzaW9uIG9mIEdTdHJlYW1lcgorICAgICAgICBidWZmZXJzIHRvIGNhaXJvIHN1
cmZhY2VzLiBVc2luZyB0aGlzIG1ha2VzIHRoZSBwYWludGluZyBjb2RlIG9mCisgICAgICAgIHRo
ZSBwbGF5ZXIgbW9yZSBnZW5lcmljLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6aW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGFpbnQpOgorCiAyMDEw
LTAzLTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDhmZDM2YmMuLmZhMDQwOGIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtMjQyOCw2ICsyNDI4LDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRGF0YVNvdXJjZUdTdHJlYW1l
ci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RhdGFTb3VyY2VH
U3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaAogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxYjhhNAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcApAQCAt
MCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgorCisj
aW5jbHVkZSAiR093blB0ci5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0ltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RCdWZmZXIqJiBi
dWZmZXIsIGJvb2wqIHN1Y2Nlc3MpCisgICAgOiBtX3N1cmZhY2UoMCkKKyAgICAsIG1faW1hZ2Uo
MCkKK3sKKyAgICAqc3VjY2VzcyA9IGZhbHNlOworCisgICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0
ID0gMDsKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2J1ZmZlcl9nZXRfY2FwcyhidWZmZXIpOwor
ICAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKKworICAgIGlmICghZ3N0X3ZpZGVvX2Zvcm1hdF9w
YXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkpIHsKKyAgICAgICAgZ3N0
X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnc3RfY2Fw
c191bnJlZihjYXBzKTsKKworICAgIEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKworICAg
IGNhaXJvX2Zvcm1hdF90IGNhaXJvRm9ybWF0OworICAgIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVP
X0ZPUk1BVF9BUkdCIHx8IGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUkEpCisgICAgICAg
IGNhaXJvRm9ybWF0ID0gQ0FJUk9fRk9STUFUX0FSR0IzMjsKKyAgICBlbHNlCisgICAgICAgIGNh
aXJvRm9ybWF0ID0gQ0FJUk9fRk9STUFUX1JHQjI0OworCisgICAgbV9zdXJmYWNlID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGNh
aXJvRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ICogc2l6ZS53aWR0aCgpKTsKKyAgICBp
ZiAobV9zdXJmYWNlKSB7CisgICAgICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG1f
c3VyZmFjZSk7CisgICAgICAgICpzdWNjZXNzID0gdHJ1ZTsKKyAgICB9Cit9CisKK0ltYWdlR1N0
cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIoKQoreworICAgIGlmIChtX2ltYWdlKQorICAgICAgICBt
X2ltYWdlLmNsZWFyKCk7CisKKyAgICBtX2ltYWdlID0gMDsKKworICAgIGlmIChjYWlyb19zdXJm
YWNlX2dldF9yZWZlcmVuY2VfY291bnQobV9zdXJmYWNlKSkKKyAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9kZXN0cm95KG1fc3VyZmFjZSk7CisKKyAgICBtX3N1cmZhY2UgPSAwOworfQorCitQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBJbWFnZUdTdHJlYW1lcjo6aW1hZ2UoKQoreworICAgIEFTU0VSVCht
X2ltYWdlKTsKKyAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0YTRhMwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJbWFnZUdTdHJlYW1lcl9oCisjZGVmaW5lIEltYWdlR1N0cmVhbWVyX2gKKwor
I2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisKKyNpbmNsdWRl
IDxjYWlyby5oPgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlk
ZW8uaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSW1hZ2VHU3RyZWFtZXIgeworCisgICAgcHVibGljOgorICAgICAgICBJbWFn
ZUdTdHJlYW1lcihHc3RCdWZmZXIqJiwgYm9vbCopOworICAgICAgICB+SW1hZ2VHU3RyZWFtZXIo
KTsKKworICAgICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7CisgICAgICAgIFJlZlB0
cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKworICAgIH07Cit9CisKKyNlbmRpZgorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGZlNGIyZjkuLmExZjBi
MzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgogCiAKKyNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRhdGFT
b3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzUsNiArMzYsOCBA
QAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5j
bHVkZSAiSW1hZ2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTExNjYsNDIgKzExNjks
MTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIEdzdENhcHMqIGNh
cHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKG1fYnVmZmVyKTsKLSAgICBHc3RWaWRlb0Zvcm1hdCBm
b3JtYXQ7Ci0KLSAgICBpZiAoIWdzdF92aWRlb19mb3JtYXRfcGFyc2VfY2FwcyhjYXBzLCAmZm9y
bWF0LCAmd2lkdGgsICZoZWlnaHQpKSB7Ci0gICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKLSAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWlyb19mb3JtYXRfdCBjYWlyb0Zvcm1hdDsKLSAg
ICBpZiAoZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfQVJHQiB8fCBmb3JtYXQgPT0gR1NUX1ZJ
REVPX0ZPUk1BVF9CR1JBKQotICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdC
MzI7Ci0gICAgZWxzZQotICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9SR0IyNDsK
KyAgICBib29sIHN1Y2Nlc3M7CisgICAgSW1hZ2VHU3RyZWFtZXIgZ3N0SW1hZ2UobV9idWZmZXIs
ICZzdWNjZXNzKTsKIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZV9mb3JfZGF0YShHU1RfQlVGRkVSX0RBVEEobV9idWZmZXIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9Gb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCAqIHdpZHRoKTsKLQotICAgIGNhaXJvX3Nh
dmUoY3IpOwotCi0gICAgLy8gdHJhbnNsYXRlIGFuZCBzY2FsZSB0aGUgY29udGV4dCB0byBjb3Jy
ZWN0IHNpemUKLSAgICBjYWlyb190cmFuc2xhdGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSk7Ci0g
ICAgY2Fpcm9fc2NhbGUoY3IsIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC53aWR0aCgpKSAvIHdp
ZHRoLCBzdGF0aWNfY2FzdDxkb3VibGU+KHJlY3QuaGVpZ2h0KCkpIC8gaGVpZ2h0KTsKLQotICAg
IC8vIEFuZCBwYWludCBpdC4KLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHNyYywg
MCwgMCk7Ci0gICAgY2Fpcm9fcGF0dGVybl9zZXRfZXh0ZW5kKGNhaXJvX2dldF9zb3VyY2UoY3Ip
LCBDQUlST19FWFRFTkRfUEFEKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsIHdpZHRo
LCBoZWlnaHQpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwor
ICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KHNyYyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZTsKKyAgICBDb21wb3NpdGVPcGVyYXRvciBv
cCA9IENvbXBvc2l0ZUNvcHk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZTsK
KyAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVpbnRlcnByZXRfY2FzdDxJbWFnZSo+KGdzdEltYWdl
LmltYWdlKCkuZ2V0KCkpLCBzdHlsZUNvbG9yU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAg
IHJlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJp
bmc+IG1pbWVUeXBlQ2FjaGUoKQotLSAKMS42LjMuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50222</attachid>
            <date>2010-03-08 08:16:27 -0800</date>
            <delta_ts>2010-03-09 02:08:44 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>10879</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwMjc4M2RiYjhjNDBhZTQ4NTFiMDdlMTRmYzNiNjRkNWE3NDI0ZWQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDUgTWFyIDIwMTAgMTY6Mjc6NDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcCB8ICAgODkgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCAgIHwgICA1OCAr
KysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgICAgICB8ICAgNDYgKysrLS0tLS0tLS0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmggICAgICAgIHwgICAgMSAtCiA2IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNl
cnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ci5oCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjODViNGY4Li40OWNkNTY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTAzLTA1ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBVc2UgSW1hZ2VCdWZmZXIgQVBJ
IHRvIGRvIHBhaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTc4MworCisgICAgICAgIE5ldyBJbWFnZUdTdHJlYW1lciBjbGFzcyBhYnN0cmFj
dGluZyB0aGUgY29udmVyc2lvbiBvZiBHU3RyZWFtZXIKKyAgICAgICAgYnVmZmVycyB0byBjYWly
byBzdXJmYWNlcy4gVXNpbmcgdGhpcyBtYWtlcyB0aGUgcGFpbnRpbmcgY29kZSBvZgorICAgICAg
ICB0aGUgcGxheWVyIG1vcmUgZ2VuZXJpYy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisKIDIwMTAtMDMtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
OGZkMzZiYy4uZmEwNDA4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDI4LDYgKzI0MjgsOCBAQCB3ZWJjb3JlZ3Rr
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
U2lua0dTdHJlYW1lci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9E
YXRhU291cmNlR1N0cmVhbWVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvRGF0YVNvdXJjZUdTdHJlYW1lci5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgXAogCVdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDFiOGE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
SWdhbGlhIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkltYWdl
R1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlICJHT3duUHRyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVh
bWVyKEdzdEJ1ZmZlciomIGJ1ZmZlciwgYm9vbCogc3VjY2VzcykKKyAgICA6IG1fc3VyZmFjZSgw
KQorICAgICwgbV9pbWFnZSgwKQoreworICAgICpzdWNjZXNzID0gZmFsc2U7CisKKyAgICBpbnQg
d2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfYnVmZmVyX2dl
dF9jYXBzKGJ1ZmZlcik7CisgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OworCisgICAgaWYgKCFn
c3RfdmlkZW9fZm9ybWF0X3BhcnNlX2NhcHMoY2FwcywgJmZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0
KSkgeworICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworCisgICAgSW50U2l6ZSBzaXplKHdpZHRo
LCBoZWlnaHQpOworCisgICAgY2Fpcm9fZm9ybWF0X3QgY2Fpcm9Gb3JtYXQ7CisgICAgaWYgKGZv
cm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0FSR0IgfHwgZm9ybWF0ID09IEdTVF9WSURFT19GT1JN
QVRfQkdSQSkKKyAgICAgICAgY2Fpcm9Gb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOworICAg
IGVsc2UKKyAgICAgICAgY2Fpcm9Gb3JtYXQgPSBDQUlST19GT1JNQVRfUkdCMjQ7CisKKyAgICBt
X3N1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShHU1RfQlVGRkVS
X0RBVEEoYnVmZmVyKSwgY2Fpcm9Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgKiBzaXpl
LndpZHRoKCkpOworICAgIGlmIChtX3N1cmZhY2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUobV9zdXJmYWNlKTsKKyAgICAgICAgKnN1Y2Nlc3MgPSB0cnVlOworICAg
IH0KK30KKworSW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcigpCit7CisgICAgaWYgKG1f
aW1hZ2UpCisgICAgICAgIG1faW1hZ2UuY2xlYXIoKTsKKworICAgIG1faW1hZ2UgPSAwOworCisg
ICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3JlZmVyZW5jZV9jb3VudChtX3N1cmZhY2UpKQorICAg
ICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKKworICAgIG1fc3VyZmFjZSA9
IDA7Cit9CisKK1Bhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEltYWdlR1N0cmVhbWVyOjppbWFnZSgp
Cit7CisgICAgQVNTRVJUKG1faW1hZ2UpOworICAgIHJldHVybiBtX2ltYWdlLmdldCgpOworfQor
Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODRhNGEzCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VHU3RyZWFtZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IElnYWxpYSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlR1N0cmVhbWVyX2gKKyNkZWZpbmUgSW1h
Z2VHU3RyZWFtZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiQml0bWFwSW1h
Z2UuaCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1
ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUdTdHJlYW1lciB7CisKKyAgICBwdWJs
aWM6CisgICAgICAgIEltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciomLCBib29sKik7CisgICAgICAg
IH5JbWFnZUdTdHJlYW1lcigpOworCisgICAgICAgIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGlt
YWdlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFj
ZTsKKyAgICAgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBtX2ltYWdlOworCisgICAgfTsKK30KKwor
I2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggZmU0YjJmOS4uYTFmMGIzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgiCiAKIAorI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgi
CiAjaW5jbHVkZSAiRGF0YVNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CkBAIC0zNSw2ICszNiw4IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR093
blB0ckd0ay5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpA
QCAtMTE2Niw0MiArMTE2OSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7
Ci0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9idWZmZXJfZ2V0X2NhcHMobV9idWZmZXIpOwotICAg
IEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKLQotICAgIGlmICghZ3N0X3ZpZGVvX2Zvcm1hdF9wYXJz
ZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkpIHsKLSAgICAgIGdzdF9jYXBz
X3VucmVmKGNhcHMpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhaXJvX2Zvcm1hdF90
IGNhaXJvRm9ybWF0OwotICAgIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9BUkdCIHx8
IGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUkEpCi0gICAgICAgIGNhaXJvRm9ybWF0ID0g
Q0FJUk9fRk9STUFUX0FSR0IzMjsKLSAgICBlbHNlCi0gICAgICAgIGNhaXJvRm9ybWF0ID0gQ0FJ
Uk9fRk9STUFUX1JHQjI0OworICAgIGJvb2wgc3VjY2VzczsKKyAgICBJbWFnZUdTdHJlYW1lciBn
c3RJbWFnZShtX2J1ZmZlciwgJnN1Y2Nlc3MpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHNyYyA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKEdTVF9CVUZGRVJfREFUQShtX2J1ZmZlciksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWlyb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ICogd2lkdGgp
OwotCi0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICAvLyB0cmFuc2xhdGUgYW5kIHNjYWxlIHRo
ZSBjb250ZXh0IHRvIGNvcnJlY3Qgc2l6ZQotICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgcmVjdC54
KCksIHJlY3QueSgpKTsKLSAgICBjYWlyb19zY2FsZShjciwgc3RhdGljX2Nhc3Q8ZG91YmxlPihy
ZWN0LndpZHRoKCkpIC8gd2lkdGgsIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5oZWlnaHQoKSkg
LyBoZWlnaHQpOwotCi0gICAgLy8gQW5kIHBhaW50IGl0LgotICAgIGNhaXJvX3NldF9zb3VyY2Vf
c3VyZmFjZShjciwgc3JjLCAwLCAwKTsKLSAgICBjYWlyb19wYXR0ZXJuX3NldF9leHRlbmQoY2Fp
cm9fZ2V0X3NvdXJjZShjciksIENBSVJPX0VYVEVORF9QQUQpOwotICAgIGNhaXJvX3JlY3Rhbmds
ZShjciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgY2Fp
cm9fcmVzdG9yZShjcik7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3JjKTsKLSAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
KyAgICBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlOworICAgIENv
bXBvc2l0ZU9wZXJhdG9yIG9wID0gQ29tcG9zaXRlQ29weTsKKyAgICBib29sIHVzZUxvd1F1YWxp
dHlTY2FsZSA9IGZhbHNlOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZWludGVycHJldF9jYXN0
PEltYWdlKj4oZ3N0SW1hZ2UuaW1hZ2UoKS5nZXQoKSksIHN0eWxlQ29sb3JTcGFjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgcmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHN0
YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVDYWNoZSgpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCmluZGV4IDQwMWRkNjUuLmM4NGVkMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAotI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5j
bHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KIAotLSAKMS42LjMuMw==
</data>
<flag name="review"
          id="33289"
          type_id="1"
          status="-"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="33322"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50282</attachid>
            <date>2010-03-09 02:08:44 -0800</date>
            <delta_ts>2010-03-22 04:57:51 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11021</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwOTc0YzhiNzI4MTFhZGVkODdmNTdlMWYzZTAwNjNhOGJjNjk4OTUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDUgTWFyIDIwMTAgMTY6Mjc6NDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmNwcCB8ICAgODcgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCAgIHwgICA2MCAr
KysrKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwICAgICAgfCAgIDQzICsrLS0tLS0tLS0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmggICAgICAgIHwgICAgMSAtCiA2IGZpbGVzIGNoYW5nZWQsIDE3OCBpbnNl
cnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHAKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ci5oCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA4MjVkZDFlLi4wYzVhODVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTAzLTA1ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBVc2UgSW1hZ2VCdWZmZXIgQVBJ
IHRvIGRvIHBhaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNTc4MworCisgICAgICAgIE5ldyBJbWFnZUdTdHJlYW1lciBjbGFzcyBhYnN0cmFj
dGluZyB0aGUgY29udmVyc2lvbiBvZiBHU3RyZWFtZXIKKyAgICAgICAgYnVmZmVycyB0byBjYWly
byBzdXJmYWNlcy4gVXNpbmcgdGhpcyBtYWtlcyB0aGUgcGFpbnRpbmcgY29kZSBvZgorICAgICAg
ICB0aGUgcGxheWVyIG1vcmUgZ2VuZXJpYy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisKIDIwMTAtMDMtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
NzA5MWZhMS4uNDIzNDQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDM4LDYgKzI0MzgsOCBAQCB3ZWJjb3JlZ3Rr
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RhdGFT
b3VyY2VHU3RyZWFtZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R093blB0ckdTdHJlYW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dPd25QdHJHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VHU3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaAogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmMGE0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxp
YSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJJbWFnZUdTdHJl
YW1lci5oIgorCisjaW5jbHVkZSAiR093blB0ci5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUGFzc1JlZlB0cjxJbWFnZUdTdHJlYW1lcj4g
SW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIGlu
dCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9idWZmZXJf
Z2V0X2NhcHMoYnVmZmVyKTsKKyAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CisgICAgaWYgKCFn
c3RfdmlkZW9fZm9ybWF0X3BhcnNlX2NhcHMoY2FwcywgJmZvcm1hdCwgJndpZHRoLCAmaGVpZ2h0
KSkgeworICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorCisgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisKKyAgICBJbnRTaXplIHNpemUo
d2lkdGgsIGhlaWdodCk7CisKKyAgICBjYWlyb19mb3JtYXRfdCBjYWlyb0Zvcm1hdDsKKyAgICBp
ZiAoZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfQVJHQiB8fCBmb3JtYXQgPT0gR1NUX1ZJREVP
X0ZPUk1BVF9CR1JBKQorICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7
CisgICAgZWxzZQorICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9SR0IyNDsKKwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VHU3RyZWFtZXIoYnVmZmVyLCBzaXplLCBjYWly
b0Zvcm1hdCkpOworfQorCitJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0QnVmZmVy
KiYgYnVmZmVyLCBJbnRTaXplJiBzaXplLCBjYWlyb19mb3JtYXRfdCYgY2Fpcm9Gb3JtYXQpCisg
ICAgOiBtX3N1cmZhY2UoMCkKKyAgICAsIG1faW1hZ2UoMCkKK3sKKyAgICBtX3N1cmZhY2UgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShHU1RfQlVGRkVSX0RBVEEoYnVmZmVy
KSwgY2Fpcm9Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgKiBzaXplLndpZHRoKCkpOwor
ICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRl
KG1fc3VyZmFjZSk7Cit9CisKK0ltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIoKQorewor
ICAgIGlmIChtX2ltYWdlKQorICAgICAgICBtX2ltYWdlLmNsZWFyKCk7CisKKyAgICBtX2ltYWdl
ID0gMDsKKworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF9yZWZlcmVuY2VfY291bnQobV9zdXJm
YWNlKSkKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc3VyZmFjZSk7CisKKyAgICBt
X3N1cmZhY2UgPSAwOworfQorCitQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBJbWFnZUdTdHJlYW1l
cjo6aW1hZ2UoKQoreworICAgIEFTU0VSVChtX2ltYWdlKTsKKyAgICByZXR1cm4gbV9pbWFnZS5n
ZXQoKTsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMDg3
YjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgSWdhbGlhIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VHU3RyZWFtZXJfaAorI2RlZmlu
ZSBJbWFnZUdTdHJlYW1lcl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Cisj
aW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRTaXplOworCitjbGFzcyBJbWFnZUdT
dHJlYW1lciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlR1N0cmVhbWVyPiB7CisgICAgcHVibGlj
OgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2Uo
R3N0QnVmZmVyKik7CisKKyAgICAgICAgSW1hZ2VHU3RyZWFtZXIoR3N0QnVmZmVyKiYsIEludFNp
emUmLCBjYWlyb19mb3JtYXRfdCYpOworICAgICAgICB+SW1hZ2VHU3RyZWFtZXIoKTsKKworICAg
ICAgICBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBpbWFnZSgpOworCisgICAgcHJpdmF0ZToKKwor
ICAgICAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKKyAgICAgICAgUmVmUHRyPEJpdG1h
cEltYWdlPiBtX2ltYWdlOworICAgIH07Cit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNlMDI2MzMuLjBiNjM1NmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgogCiAKKyNpbmNsdWRlICJDb2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRhdGFTb3VyY2VHU3Ry
ZWFtZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzUsNiArMzYsOCBAQAogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdPd25QdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVk
ZSAiSW1hZ2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTExMjgsNDIgKzExMzEsMTIg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIEdzdENhcHMqIGNhcHMg
PSBnc3RfYnVmZmVyX2dldF9jYXBzKG1fYnVmZmVyKTsKLSAgICBHc3RWaWRlb0Zvcm1hdCBmb3Jt
YXQ7Ci0KLSAgICBpZiAoIWdzdF92aWRlb19mb3JtYXRfcGFyc2VfY2FwcyhjYXBzLCAmZm9ybWF0
LCAmd2lkdGgsICZoZWlnaHQpKSB7Ci0gICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKLSAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWlyb19mb3JtYXRfdCBjYWlyb0Zvcm1hdDsKLSAgICBp
ZiAoZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfQVJHQiB8fCBmb3JtYXQgPT0gR1NUX1ZJREVP
X0ZPUk1BVF9CR1JBKQotICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7
Ci0gICAgZWxzZQotICAgICAgICBjYWlyb0Zvcm1hdCA9IENBSVJPX0ZPUk1BVF9SR0IyNDsKLQot
ICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgY2Fpcm9f
c3VyZmFjZV90KiBzcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShHU1Rf
QlVGRkVSX0RBVEEobV9idWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9Gb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNCAqIHdpZHRoKTsKLQotICAgIGNhaXJvX3NhdmUoY3IpOwotCi0gICAg
Ly8gdHJhbnNsYXRlIGFuZCBzY2FsZSB0aGUgY29udGV4dCB0byBjb3JyZWN0IHNpemUKLSAgICBj
YWlyb190cmFuc2xhdGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgY2Fpcm9fc2NhbGUo
Y3IsIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC53aWR0aCgpKSAvIHdpZHRoLCBzdGF0aWNfY2Fz
dDxkb3VibGU+KHJlY3QuaGVpZ2h0KCkpIC8gaGVpZ2h0KTsKLQotICAgIC8vIEFuZCBwYWludCBp
dC4KLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHNyYywgMCwgMCk7Ci0gICAgY2Fp
cm9fcGF0dGVybl9zZXRfZXh0ZW5kKGNhaXJvX2dldF9zb3VyY2UoY3IpLCBDQUlST19FWFRFTkRf
UEFEKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwotICAg
IGNhaXJvX2ZpbGwoY3IpOwotICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworICAgIFJlZlB0cjxJbWFn
ZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9idWZm
ZXIpOworICAgIGlmICghZ3N0SW1hZ2UpCisgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3N1
cmZhY2VfZGVzdHJveShzcmMpOwotICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShyZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1hZ2UtPmltYWdlKCku
Z2V0KCkpLCBzUkdCQ29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVjdCwgQ29t
cG9zaXRlQ29weSwgZmFsc2UpOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVUeXBl
Q2FjaGUoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAzOWY2ZTRjLi5j
YmQzNTYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjgsNyArMjgs
NiBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAKLSNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3Qv
Z3N0Lmg+CiAKLS0gCjEuNi4zLjM=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51276</attachid>
            <date>2010-03-22 04:57:51 -0700</date>
            <delta_ts>2010-03-22 08:40:07 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>10138</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3NWIwNTMzYWM1OWIyMjMyMDk5Y2U2NTBjYzE2OTc2YTk1MWNjYTUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDIyIE1hciAyMDEwIDA5OjA1OjE1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjIgKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZUdTdHJlYW1lci5oICAgfCAgIDYxICsrKysrKysrKysrKysrKysKIC4uLi9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgICAgIHwgICA3MyArKysr
KysrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwICAgICAgfCAgIDQzICsrLS0tLS0tLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDEgLQogNiBmaWxlcyBjaGFuZ2VkLCAxNjYg
aW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyQ2Fpcm8uY3BwCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNDViMjlkLi4xNmNmYjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEwLTAzLTIy
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBVc2UgSW1hZ2VC
dWZmZXIgQVBJIHRvIGRvIHBhaW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTc4MworCisgICAgICAgIE5ldyBJbWFnZUdTdHJlYW1lciBjbGFz
cyBhYnN0cmFjdGluZyB0aGUgY29udmVyc2lvbiBvZiBHU3RyZWFtZXIKKyAgICAgICAgYnVmZmVy
cyB0byBjYWlybyBzdXJmYWNlcy4gVXNpbmcgdGhpcyBtYWtlcyB0aGUgcGFpbnRpbmcgY29kZSBv
ZgorICAgICAgICB0aGUgcGxheWVyIG1vcmUgZ2VuZXJpYy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlR1N0cmVhbWVyOjppbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fp
cm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZSk6Cisg
ICAgICAgIChJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIpOgorICAgICAgICAoSW1hZ2VH
U3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisKIDIwMTAtMDMt
MTkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNmMxZDU4Ny4uZTA0MDFmZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0yNDcxLDYgKzI0NzEsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RhdGFTb3VyY2VHU3RyZWFtZXIuaCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR093blB0ckdTdHJlYW1lci5jcHAg
XAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dPd25QdHJHU3RyZWFtZXIu
aCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIu
aCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJD
YWlyby5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhkM2FkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgSW1hZ2VHU3Ry
ZWFtZXJfaAorI2RlZmluZSBJbWFnZUdTdHJlYW1lcl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisK
KyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1
ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNp
ZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEludFNpemU7CisKK2NsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFtZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RCdWZmZXIqKTsK
KyAgICAgICAgfkltYWdlR1N0cmVhbWVyKCk7CisKKyAgICAgICAgUGFzc1JlZlB0cjxCaXRtYXBJ
bWFnZT4gaW1hZ2UoKSB7CisgICAgICAgICAgICBBU1NFUlQobV9pbWFnZSk7CisgICAgICAgICAg
ICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgUmVmUHRyPEJpdG1hcEltYWdlPiBtX2ltYWdlOworCisjaWYgUExBVEZPUk0oQ0FJUk8pCisg
ICAgICAgIEltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciomLCBJbnRTaXplLCBjYWlyb19mb3JtYXRf
dCYpOworICAgICAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKKyNlbmRpZgorCisgICAg
fTsKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODdmOTIwCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSW1hZ2VHU3RyZWFtZXIuaCIKKworI2luY2x1
ZGUgIkdPd25QdHIuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK1Bhc3NSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IEltYWdlR1N0cmVhbWVyOjpj
cmVhdGVJbWFnZShHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBpbnQgd2lkdGggPSAwLCBoZWln
aHQgPSAwOworICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7
CisgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OworICAgIGlmICghZ3N0X3ZpZGVvX2Zvcm1hdF9w
YXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkpIHsKKyAgICAgICAgZ3N0
X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGdzdF9j
YXBzX3VucmVmKGNhcHMpOworCisgICAgY2Fpcm9fZm9ybWF0X3QgY2Fpcm9Gb3JtYXQ7CisgICAg
aWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0FSR0IgfHwgZm9ybWF0ID09IEdTVF9WSURF
T19GT1JNQVRfQkdSQSkKKyAgICAgICAgY2Fpcm9Gb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMy
OworICAgIGVsc2UKKyAgICAgICAgY2Fpcm9Gb3JtYXQgPSBDQUlST19GT1JNQVRfUkdCMjQ7CisK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKGJ1ZmZlciwgSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSwgY2Fpcm9Gb3JtYXQpKTsKK30KKworSW1hZ2VHU3RyZWFtZXI6OkltYWdl
R1N0cmVhbWVyKEdzdEJ1ZmZlciomIGJ1ZmZlciwgSW50U2l6ZSBzaXplLCBjYWlyb19mb3JtYXRf
dCYgY2Fpcm9Gb3JtYXQpCisgICAgOiBtX2ltYWdlKDApCisgICAgLCBtX3N1cmZhY2UoMCkKK3sK
KyAgICBtX3N1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShHU1Rf
QlVGRkVSX0RBVEEoYnVmZmVyKSwgY2Fpcm9Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
aXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKGNhaXJvRm9ybWF0LCBzaXplLndpZHRoKCkpKTsK
KyAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9zdXJmYWNlKSA9PSBDQUlST19TVEFU
VVNfU1VDQ0VTUyk7CisgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobV9zdXJmYWNl
KTsKK30KKworSW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcigpCit7CisgICAgaWYgKG1f
aW1hZ2UpCisgICAgICAgIG1faW1hZ2UuY2xlYXIoKTsKKworICAgIG1faW1hZ2UgPSAwOworCisg
ICAgaWYgKG1fc3VyZmFjZSAmJiBjYWlyb19zdXJmYWNlX2dldF9yZWZlcmVuY2VfY291bnQobV9z
dXJmYWNlKSkKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc3VyZmFjZSk7CisKKyAg
ICBtX3N1cmZhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggOTM5ODZkYS4uZWQ2NmZkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgiCiAKIAorI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiRGF0YVNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCkBAIC0zNSw2ICszNiw4IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
R093blB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgpAQCAtMTIwNCw0MiArMTIwNywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCB3aWR0aCA9IDAsIGhl
aWdodCA9IDA7Ci0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9idWZmZXJfZ2V0X2NhcHMobV9idWZm
ZXIpOwotICAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKLQotICAgIGlmICghZ3N0X3ZpZGVvX2Zv
cm1hdF9wYXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkpIHsKLSAgICAg
IGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhaXJv
X2Zvcm1hdF90IGNhaXJvRm9ybWF0OwotICAgIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1B
VF9BUkdCIHx8IGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUkEpCi0gICAgICAgIGNhaXJv
Rm9ybWF0ID0gQ0FJUk9fRk9STUFUX0FSR0IzMjsKLSAgICBlbHNlCi0gICAgICAgIGNhaXJvRm9y
bWF0ID0gQ0FJUk9fRk9STUFUX1JHQjI0OwotCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHNyYyA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKEdTVF9CVUZGRVJfREFUQShtX2J1ZmZlciksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWlyb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ICogd2lkdGgpOwot
Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICAvLyB0cmFuc2xhdGUgYW5kIHNjYWxlIHRoZSBj
b250ZXh0IHRvIGNvcnJlY3Qgc2l6ZQotICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgcmVjdC54KCks
IHJlY3QueSgpKTsKLSAgICBjYWlyb19zY2FsZShjciwgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN0
LndpZHRoKCkpIC8gd2lkdGgsIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5oZWlnaHQoKSkgLyBo
ZWlnaHQpOwotCi0gICAgLy8gQW5kIHBhaW50IGl0LgotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3Vy
ZmFjZShjciwgc3JjLCAwLCAwKTsKLSAgICBjYWlyb19wYXR0ZXJuX3NldF9leHRlbmQoY2Fpcm9f
Z2V0X3NvdXJjZShjciksIENBSVJPX0VYVEVORF9QQUQpOwotICAgIGNhaXJvX3JlY3RhbmdsZShj
ciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgY2Fpcm9f
cmVzdG9yZShjcik7CisgICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdl
R1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX2J1ZmZlcik7CisgICAgaWYgKCFnc3RJbWFnZSkKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHNyYyk7Ci0gICAgZ3N0
X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlaW50ZXJwcmV0X2Nh
c3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSksIHNSR0JDb2xvclNwYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICByZWN0LCBDb21wb3NpdGVDb3B5LCBmYWxzZSk7CiB9CiAKIHN0
YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVDYWNoZSgpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCmluZGV4IGVjOTEyM2EuLmFiOGVlMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAotI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5j
bHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KIAotLSAKMS42LjMuMw==
</data>
<flag name="review"
          id="34502"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="34525"
          type_id="3"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>