<?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>38400</bug_id>
          
          <creation_ts>2010-04-30 13:22:03 -0700</creation_ts>
          <short_desc>[Qt] Failure on http://philip.html5.org/tests/canvas/suite/tests/2d.shadow.alpha.5.html</short_desc>
          <delta_ts>2010-07-17 15:15:05 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5, Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="qi">qi.2.zhang</reporter>
          <assigned_to name="qi">qi.2.zhang</assigned_to>
          <cc>cshu</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219593</commentid>
    <comment_count>0</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-04-30 13:22:03 -0700</bug_when>
    <thetext>In this case, shadow should use the alpha information which was set at style in painting

ctx.fillStyle = &apos;#f00&apos;;
ctx.fillRect(0, 0, 100, 50);
ctx.fillStyle = &apos;rgba(64, 0, 0, 0.5)&apos;;
ctx.shadowColor = &apos;#00f&apos;;
ctx.shadowOffsetY = 50;
ctx.fillRect(0, -50, 100, 50);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219599</commentid>
    <comment_count>1</comment_count>
      <attachid>54822</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-04-30 13:31:15 -0700</bug_when>
    <thetext>Created attachment 54822
patch

Set the shadow color with alpha if fillstyle has alpha information but shadow color don&apos;t have it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229481</commentid>
    <comment_count>2</comment_count>
      <attachid>54822</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-23 09:08:45 -0700</bug_when>
    <thetext>Comment on attachment 54822
patch

Your code replaces the alpha of shadowColor with the alpha of fillStyle. IIRC both alpha values should be multiplied:

ctx.fillStyle = &apos;#f00&apos;;
ctx.fillRect(0, 0, 100, 50);
ctx.fillStyle = &apos;rgba(64, 0, 0, 0.5)&apos;;
ctx.shadowColor = &apos;rgba(0, 0, 255, 0.5)&apos;;
ctx.shadowOffsetY = 50;
ctx.fillRect(0, -50, 100, 50);

Would make the shadowColor (0,0,255,0.25). There is also a DRT test missing. Can be tested with getImageData, see fast/canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249166</commentid>
    <comment_count>3</comment_count>
      <attachid>61072</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-09 12:13:31 -0700</bug_when>
    <thetext>Created attachment 61072
patch2

Created a patch for using composition mode to generate shadow for fillRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249641</commentid>
    <comment_count>4</comment_count>
      <attachid>61072</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-11 10:54:09 -0700</bug_when>
    <thetext>Comment on attachment 61072
patch2

Awesome that you&apos;re working on shadows :-)

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:725
&gt; +              if (m_common-&gt;state.shadowColor.isValid()) {
This is redundant since getShadow() will check shadowColor.isValid().
The same shadowSize/shadowBlur/shadowColor variables could be used for all shadow paths.

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:731
&gt; +                      FloatRect shadowImageRect(normalizedRect);
This variable name is a bit confusing when used together with shadowImage.rect() below.

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:734
&gt; +                      QImage shadowImage(QSize(static_cast&lt;int&gt;(normalizedRect.width()), static_cast&lt;int&gt;(normalizedRect.height())), QImage::Format_ARGB32_Premultiplied);
The QSize part would read nicer as &quot;roundedIntSize(normalizedRect.size())&quot; IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249786</commentid>
    <comment_count>5</comment_count>
      <attachid>61215</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-12 06:03:40 -0700</bug_when>
    <thetext>Created attachment 61215
patch3

Based on comments to make a change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250314</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-12 22:37:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=61215) [details]
&gt; patch3
&gt; 
&gt; Based on comments to make a change.

Is it possible to share some code? All shadow related stuff looks pretty similar, maybe you can put it into an inline function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250621</commentid>
    <comment_count>7</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-13 10:53:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=61215) [details] [details]
&gt; &gt; patch3
&gt; &gt; 
&gt; &gt; Based on comments to make a change.
&gt; 
&gt; Is it possible to share some code? All shadow related stuff looks pretty similar, maybe you can put it into an inline function?

I also think about it using a common function to handle the shadow drawing. The difficult is how can I let the function know how to draw (repeat pattern, gradient or just rect ???)

static inline void drawRectShadow(GraphicsContext* context, QPainter* p, const FloatRect&amp; rect)
{
    FloatSize shadowSize;
    float shadowBlur;
    Color shadowColor;
    if (context-&gt;getShadow(shadowSize, shadowBlur, shadowColor)) {
        FloatRect destRect(rect);
        destRect.move(shadowSize.width(), shadowSize.height());

        QImage shadowImage(roundedIntSize(rect.size()), QImage::Format_ARGB32_Premultiplied);
        QPainter pShadow(&amp;shadowImage);
        pShadow.setCompositionMode(QPainter::CompositionMode_Source);
        pShadow.fillRect(shadowImage.rect(), shadowColor);
        pShadow.setCompositionMode(QPainter::CompositionMode_DestinationIn);
        
        if ((m_common-&gt;state.fillPattern) {
           // need image !!!!
        } else if (m_common-&gt;state.fillGradient) {
           // need brush !!!!
        } else if (fillColor().alpha()) {
           // need brush  !!!!
        }
        pShadow.end();
        p-&gt;drawImage(destRect, shadowImage, shadowImage.rect());
    }
}

Because pattern need a image, and gradient need a brush, both of them are private member under context (m_common-&gt;state.fillPattern-&gt;tileImage()-&gt;nativeImageForCurrentFrame() or m_common-&gt;state.fillGradient-&gt;platformGradient()), so I have to pass them to the function, like:

drawRectShadow(context, painter, rect, image, brush)  or
drawRectShadow(context, painter, rect, void* image_brush)

I think both of them are ugly.

Do you have any good idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250676</commentid>
    <comment_count>8</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-13 12:31:21 -0700</bug_when>
    <thetext>Dirk, Laszlo give me some other suggestion.

How about do not create a new inline function, but move the duplicate code to the top as the common part, like:

void GraphicsContext::fillRect(const FloatRect&amp; rect)
{
...
            // Draw shadow  -- duplicate code , common code
            FloatSize shadowSize;
            float shadowBlur;
            Color shadowColor;
            if (getShadow(shadowSize, shadowBlur, shadowColor)) {
                FloatRect destRect(normalizedRect);
                destRect.move(shadowSize.width(), shadowSize.height());

                QImage shadowImage(roundedIntSize(normalizedRect.size()), QImage::Format_ARGB32_Premultiplied);
                QPainter pShadow(&amp;shadowImage);
                pShadow.setCompositionMode(QPainter::CompositionMode_Source);
                pShadow.fillRect(shadowImage.rect(), shadowColor);
                pShadow.setCompositionMode(QPainter::CompositionMode_DestinationIn)

 if (m_common-&gt;state.fillPattern || m_common-&gt;state.fillGradient || fillColor().alpha()) {
        if (m_common-&gt;state.fillPattern) {
             // draw shadow
             drawRepeatPattern(..);
             pShadow.end();
             p-&gt;drawImage(destRect, shadowImage, shadowImage.rect());
         }
         p-&gt;fillRect(normalizedRect, brush);
 } else if(){
 } else {

 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251129</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-14 05:54:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Dirk, Laszlo give me some other suggestion.
&gt; 
&gt; How about do not create a new inline function, but move the duplicate code to the top as the common part, like:
&gt; 
&gt; void GraphicsContext::fillRect(const FloatRect&amp; rect)
&gt; {
&gt; ...
&gt;             // Draw shadow  -- duplicate code , common code
&gt;             FloatSize shadowSize;
&gt;             float shadowBlur;
&gt;             Color shadowColor;
&gt;             if (getShadow(shadowSize, shadowBlur, shadowColor)) {
&gt;                 FloatRect destRect(normalizedRect);
&gt;                 destRect.move(shadowSize.width(), shadowSize.height());
&gt; 
&gt;                 QImage shadowImage(roundedIntSize(normalizedRect.size()), QImage::Format_ARGB32_Premultiplied);
&gt;                 QPainter pShadow(&amp;shadowImage);
&gt;                 pShadow.setCompositionMode(QPainter::CompositionMode_Source);
&gt;                 pShadow.fillRect(shadowImage.rect(), shadowColor);
&gt;                 pShadow.setCompositionMode(QPainter::CompositionMode_DestinationIn)
&gt; 
&gt;  if (m_common-&gt;state.fillPattern || m_common-&gt;state.fillGradient || fillColor().alpha()) {
&gt;         if (m_common-&gt;state.fillPattern) {
&gt;              // draw shadow
&gt;              drawRepeatPattern(..);
&gt;              pShadow.end();
&gt;              p-&gt;drawImage(destRect, shadowImage, shadowImage.rect());
&gt;          }
&gt;          p-&gt;fillRect(normalizedRect, brush);
&gt;  } else if(){
&gt;  } else {
&gt; 
&gt;  }

Sorry, didn&apos;t realized that we spoke about just one function fllRect() :-P In this case it should be realtively easy to share the code, not? ;-)

At first you should check if none of the operands (m_common-&gt;state.fillPattern || m_common-&gt;state.fillGradient || fillColor().alpha()) are true, and return earlier in this case.
Yes of course you have to split the part that is used by all fill operations and move it to the top. Create a boolean, that stores if you have a shadow or not and handle the rest on the actual drawing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251155</commentid>
    <comment_count>10</comment_count>
      <attachid>61513</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-14 06:38:37 -0700</bug_when>
    <thetext>Created attachment 61513
patch4

Based on comments, change the code to reduce the duplication of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251367</commentid>
    <comment_count>11</comment_count>
      <attachid>61513</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-14 12:44:42 -0700</bug_when>
    <thetext>Comment on attachment 61513
patch4

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:725
&gt; +      QImage shadowImage(roundedIntSize(normalizedRect.size()), QImage::Format_ARGB32_Premultiplied);
&gt; +      QPainter pShadow(&amp;shadowImage);
This will add huge performance penalty to fillRect() calls where no shadow is used.
This QImage and QPainter should only be initialized if they&apos;re actually going to be used.

r- for this, the rest of the code is shaping up nicely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251850</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 06:54:40 -0700</bug_when>
    <thetext>One way of doing this would be:

QPainter pShadow;
QImage shadowImage;

if (hasShadow) {
    shadowImage = QImage(...);
    pShadow.begin(&amp;shadowImage);
    ...

That said, it&apos;s still adding a heap allocation (pShadow&apos;s QPainterPrivate) to the common path, which I&apos;m not a huge fan of.

I would probably do something like a ShadowHelper class that is cheap to instantiate and only creates the painter and image when needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251869</commentid>
    <comment_count>13</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-15 07:30:17 -0700</bug_when>
    <thetext>I don&apos;t think it is a good idea to create a helper class. From comments history, you can find. Dirk asked me to create a function to handle the shadow, but I found it is difficult to do it, because for each one (repeat pattern, gradient or normal rect) has different parameter(image or brush) and different draw function. So, current proposal is just put the common code to the top to reduce the duplicate code. The common code is just part of the shadow drawing. If we put these code into a helper class, I think it will make confused. 

Actually I prefer your comment 12 &apos;s proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251877</commentid>
    <comment_count>14</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 07:45:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I don&apos;t think it is a good idea to create a helper class. From comments history, you can find. Dirk asked me to create a function to handle the shadow, but I found it is difficult to do it, because for each one (repeat pattern, gradient or normal rect) has different parameter(image or brush) and different draw function. So, current proposal is just put the common code to the top to reduce the duplicate code. The common code is just part of the shadow drawing. If we put these code into a helper class, I think it will make confused. 

Ah, bad wording on my part. What I had in mind was a helper class to encapsulate the image and painter.

Adding rarely-used allocations to the common path of something as basic as fillRect() is a very bad idea IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251883</commentid>
    <comment_count>15</comment_count>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-15 07:53:02 -0700</bug_when>
    <thetext>How about using pointer? I think it is straight forward, how do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251892</commentid>
    <comment_count>16</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 08:05:56 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; How about using pointer? I think it is straight forward, how do you think about it?

Sure, it should be fairly clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251989</commentid>
    <comment_count>17</comment_count>
      <attachid>61687</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-15 10:56:51 -0700</bug_when>
    <thetext>Created attachment 61687
patch5

Using pointer to reduce the cost when shadow is not required</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251999</commentid>
    <comment_count>18</comment_count>
      <attachid>61687</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 11:15:02 -0700</bug_when>
    <thetext>Comment on attachment 61687
patch5

This is looking pretty okay. Just some nits:

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:725
&gt; +      FloatRect destRect;
Misleading name, should be something like &quot;shadowDestRect&quot;

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:746
&gt; +          // Draw shadow
Redundant comment.

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:757
&gt; +          // Draw shadow
Ditto.

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:765
&gt; +          // Draw shadow
Ditto.

&gt;WebCore/platform/graphics/qt/GraphicsContextQt.cpp:774
&gt; +      if (hasShadow) {
If you initialize shadowImage and pShadow to 0 at the start of this function, you won&apos;t need the &quot;if (hasShadow)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252005</commentid>
    <comment_count>19</comment_count>
      <attachid>61687</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-07-15 11:21:00 -0700</bug_when>
    <thetext>Comment on attachment 61687
patch5

r=me, but please consider Kling&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252016</commentid>
    <comment_count>20</comment_count>
      <attachid>61693</attachid>
    <who name="qi">qi.2.zhang</who>
    <bug_when>2010-07-15 11:40:33 -0700</bug_when>
    <thetext>Created attachment 61693
patch6

Minor change based on Kling&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252910</commentid>
    <comment_count>21</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-17 14:33:01 -0700</bug_when>
    <thetext>Committed r63614: &lt;http://trac.webkit.org/changeset/63614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252918</commentid>
    <comment_count>22</comment_count>
      <attachid>61693</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-17 15:15:05 -0700</bug_when>
    <thetext>Comment on attachment 61693
patch6

Removing r?, committed this as &lt;http://trac.webkit.org/changeset/63614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54822</attachid>
            <date>2010-04-30 13:31:15 -0700</date>
            <delta_ts>2010-07-12 06:03:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug38400.patch</filename>
            <type>text/plain</type>
            <size>1482</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODU5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMzAgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBGYWlsdXJlIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODQwMAorCisgICAgICAgIEZpbGxSZWN0IHdpdGggc2hhZG93
IG5lZWQgdGFrZSBhbHBoYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGxzdHlsZQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKwogMjAxMC0wNC0zMCAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBHVEsrIGJ1aWxkLgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAJKHJldmlzaW9uIDU4MzA0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw3ICs2MDQsMTAg
QEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdCb3JkZXJsZXNzUmVjdFNoYQogICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAg
ICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KHJlY3QpOwogICAgICAgICBzaGFkb3dSZWN0Lm1v
dmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKLSAgICAgICAgcC0+
ZmlsbFJlY3Qoc2hhZG93UmVjdCwgUUNvbG9yKHNoYWRvd0NvbG9yKSk7CisgICAgICAgIFFDb2xv
ciBxU2hhZG93Q29sb3Ioc2hhZG93Q29sb3IpOworICAgICAgICBpZiAoIXNoYWRvd0NvbG9yLmhh
c0FscGhhKCkgJiYgY29udGV4dC0+ZmlsbENvbG9yKCkuaGFzQWxwaGEoKSkKKyAgICAgICAgICAg
IHFTaGFkb3dDb2xvci5zZXRBbHBoYShjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpKTsKKyAg
ICAgICAgcC0+ZmlsbFJlY3Qoc2hhZG93UmVjdCwgcVNoYWRvd0NvbG9yKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="38877"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61072</attachid>
            <date>2010-07-09 12:13:31 -0700</date>
            <delta_ts>2010-07-12 06:03:40 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>bug38400_2.patch</filename>
            <type>text/plain</type>
            <size>8154</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mjk3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMDkgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBGYWlsdXJlIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODQwMAorCisgICAgICAgIEZpbGxSZWN0IHdpdGggc2hhZG93
IG5lZWQgdGFrZSBhbHBoYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGxzdHlsZQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTAtMDctMDkgIFBhdHJpY2sg
R2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
dCBUYW11cmEuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24gNjI5NDUpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEz
LDI0ICs3MTMsODIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsbwog
ICAgICAgICByZXR1cm47CiAKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOworICAgIEZs
b2F0UmVjdCBub3JtYWxpemVkUmVjdCA9IHJlY3Qubm9ybWFsaXplZCgpOwogCiAgICAgaWYgKG1f
Y29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiB8fCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50
IHx8IGZpbGxDb2xvcigpLmFscGhhKCkpIHsKLSAgICAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBkcmF3Qm9yZGVybGVzc1JlY3RTaGFk
b3codGhpcywgcCwgcmVjdCk7CiAgICAgICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRl
cm4pIHsKICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmU7CiAgICAgICAgICAgICBG
bG9hdFJlY3QgcmVjdE0ocmVjdCk7CiAgICAgICAgICAgICBRQnJ1c2ggYnJ1c2gobV9jb21tb24t
PnN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oYWZmaW5lKSk7CiAgICAg
ICAgICAgICBRUGl4bWFwKiBpbWFnZSA9IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+dGls
ZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKLSAgICAgICAgICAgIGRy
YXdSZXBlYXRQYXR0ZXJuKHAsIGltYWdlLCByZWN0LCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRl
cm4tPnJlcGVhdFgoKSwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCkpOwor
ICAgICAgICAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBEcmF3IHNoYWRvdworICAgICAgICAgICAgICAgIEZsb2F0U2l6
ZSBzaGFkb3dTaXplOworICAgICAgICAgICAgICAgIGZsb2F0IHNoYWRvd0JsdXI7CisgICAgICAg
ICAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgICAgICAgICAgICAgaWYgKGdldFNoYWRv
dyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgRmxvYXRSZWN0IHNoYWRvd0ltYWdlUmVjdChub3JtYWxpemVkUmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgIHNoYWRvd0ltYWdlUmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSwgc2hh
ZG93U2l6ZS5oZWlnaHQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgUUltYWdlIHNoYWRvd0lt
YWdlKFFTaXplKHN0YXRpY19jYXN0PGludD4obm9ybWFsaXplZFJlY3Qud2lkdGgoKSksIHN0YXRp
Y19jYXN0PGludD4obm9ybWFsaXplZFJlY3QuaGVpZ2h0KCkpKSwgUUltYWdlOjpGb3JtYXRfQVJH
QjMyX1ByZW11bHRpcGxpZWQpOworICAgICAgICAgICAgICAgICAgICBRUGFpbnRlciBwU2hhZG93
KCZzaGFkb3dJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgIHBTaGFkb3cuc2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcFNoYWRvdy5maWxsUmVjdChzaGFkb3dJbWFnZS5yZWN0KCksIHNoYWRvd0NvbG9yKTsK
KyAgICAgICAgICAgICAgICAgICAgcFNoYWRvdy5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6
OkNvbXBvc2l0aW9uTW9kZV9EZXN0aW5hdGlvbkluKTsKKyAgICAgICAgICAgICAgICAgICAgZHJh
d1JlcGVhdFBhdHRlcm4oJnBTaGFkb3csIGltYWdlLCBGbG9hdFJlY3Qoc3RhdGljX2Nhc3Q8UVJl
Y3RGPihzaGFkb3dJbWFnZS5yZWN0KCkpKSwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCksIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcFNoYWRvdy5lbmQoKTsKKyAgICAgICAgICAgICAgICAgICAgcC0+ZHJh
d0ltYWdlKHNoYWRvd0ltYWdlUmVjdCwgc2hhZG93SW1hZ2UsIHNoYWRvd0ltYWdlLnJlY3QoKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZHJhd1JlcGVh
dFBhdHRlcm4ocCwgaW1hZ2UsIG5vcm1hbGl6ZWRSZWN0LCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBh
dHRlcm4tPnJlcGVhdFgoKSwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCkp
OwogICAgICAgICB9IGVsc2UgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQpIHsKICAg
ICAgICAgICAgIFFCcnVzaCBicnVzaCgqbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC0+cGxh
dGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgICAgIGJydXNoLnNldFRyYW5zZm9ybShtX2NvbW1v
bi0+c3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwotICAgICAg
ICAgICAgcC0+ZmlsbFJlY3QocmVjdCwgYnJ1c2gpOworCisgICAgICAgICAgICBpZiAobV9jb21t
b24tPnN0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8vIERy
YXcgc2hhZG93CisgICAgICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgICAg
ICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKKyAgICAgICAgICAgICAgICBDb2xvciBzaGFkb3dD
b2xvcjsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yKSkgeworICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc2hhZG93
SW1hZ2VSZWN0KG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93SW1h
Z2VSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKKwor
ICAgICAgICAgICAgICAgICAgICBRSW1hZ2Ugc2hhZG93SW1hZ2UoUVNpemUoc3RhdGljX2Nhc3Q8
aW50Pihub3JtYWxpemVkUmVjdC53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemVk
UmVjdC5oZWlnaHQoKSkpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7Cisg
ICAgICAgICAgICAgICAgICAgIFFQYWludGVyIHBTaGFkb3coJnNoYWRvd0ltYWdlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcFNoYWRvdy5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9Tb3VyY2UpOworICAgICAgICAgICAgICAgICAgICBwU2hhZG93LmZpbGxSZWN0
KHNoYWRvd0ltYWdlLnJlY3QoKSwgc2hhZG93Q29sb3IpOworICAgICAgICAgICAgICAgICAgICBw
U2hhZG93LnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0Rlc3Rp
bmF0aW9uSW4pOworICAgICAgICAgICAgICAgICAgICBwU2hhZG93LmZpbGxSZWN0KHNoYWRvd0lt
YWdlLnJlY3QoKSwgYnJ1c2gpOworICAgICAgICAgICAgICAgICAgICBwU2hhZG93LmVuZCgpOwor
ICAgICAgICAgICAgICAgICAgICBwLT5kcmF3SW1hZ2Uoc2hhZG93SW1hZ2VSZWN0LCBzaGFkb3dJ
bWFnZSwgc2hhZG93SW1hZ2UucmVjdCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAg
ICAgICAgICAgICAgcC0+ZmlsbFJlY3QocmVjdCwgcC0+YnJ1c2goKSk7CisgICAgICAgICAgICBp
ZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX2NvbW1vbi0+
c3RhdGUuc2hhZG93Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERy
YXcgc2hhZG93CisgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAg
ICAgICAgICAgICAgICAgICBmbG9hdCBzaGFkb3dCbHVyOworICAgICAgICAgICAgICAgICAgICBD
b2xvciBzaGFkb3dDb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEZsb2F0UmVjdCBzaGFkb3dJbWFnZVJlY3Qobm9ybWFsaXplZFJlY3QpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2hhZG93SW1hZ2VSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBz
aGFkb3dTaXplLmhlaWdodCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgUUltYWdlIHNo
YWRvd0ltYWdlKFFTaXplKHN0YXRpY19jYXN0PGludD4obm9ybWFsaXplZFJlY3Qud2lkdGgoKSks
IHN0YXRpY19jYXN0PGludD4obm9ybWFsaXplZFJlY3QuaGVpZ2h0KCkpKSwgUUltYWdlOjpGb3Jt
YXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgUVBhaW50
ZXIgcFNoYWRvdygmc2hhZG93SW1hZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcFNoYWRv
dy5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcFNoYWRvdy5maWxsUmVjdChzaGFkb3dJbWFnZS5yZWN0
KCksIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBTaGFkb3cuc2V0Q29t
cG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwU2hhZG93LmZpbGxSZWN0KHNoYWRvd0ltYWdlLnJlY3Qo
KSwgcC0+YnJ1c2goKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwU2hhZG93LmVuZCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcC0+ZHJhd0ltYWdlKHNoYWRvd0ltYWdlUmVjdCwgc2hh
ZG93SW1hZ2UsIHNoYWRvd0ltYWdlLnJlY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QsIHAtPmJydXNoKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjI5NzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNy0wOSAgUWkgWmhhbmcgIDxxaS4yLnpoYW5n
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUXRdIEZhaWx1cmUgb24gaHR0cDovL3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFz
L3N1aXRlL3Rlc3RzLzJkLnNoYWRvdy5hbHBoYS41Lmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NDAwCisKKyAgICAgICAgUmVtb3ZlIHRoZSBm
b2xsb3dpbmcgdGVzdCBjYXNlIGZyb20gU2tpcHBlZDoKKyAgICAgICAgY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuc2hhZG93LmdyYWRpZW50LmFscGhhLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5zaGFkb3cuZ3JhZGllbnQudHJhbnNwYXJlbnQuMS5odG1sCisgICAgICAgIGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuc2hhZG93LmltYWdlLnNjYWxlLmh0bWwKKyAgICAgICAgY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi5hbHBoYS5odG1sCisgICAgICAgIGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRlcm4udHJhbnNwYXJlbnQuMS5odG1sCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDEwLTA3LTA5ICBBbGJlcnQgSi4gV29uZyAg
PGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDYyOTQ1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTMwNSwxOCArNTMwNSwxMiBAQCBjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uaW1hZ2UuaW5jCiBjYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnBhdHRlcm4uaW1hZ2UubnVsbC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRl
cm4uaW1hZ2Uuc3RyaW5nLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5pbWFn
ZS51bmRlZmluZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5jYW52YXMuYWxwaGEuaHRtbAogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuY2FudmFzLmJhc2ljLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvMmQuc2hhZG93LmNhbnZhcy50cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LmFscGhhLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuc2hhZG93LmdyYWRpZW50LnRyYW5zcGFyZW50LjEuaHRtbAogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5zaGFkb3cuaW1hZ2UuYWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5z
aGFkb3cuaW1hZ2Uuc2NhbGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuaW1h
Z2UudHJhbnNwYXJlbnQuMS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5pbWFn
ZS50cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRl
cm4uYWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi50cmFu
c3BhcmVudC4xLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnRyYW5zZm9ybS4y
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLmJvdHRvbS5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS5oYW5naW5nLmh0
bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61215</attachid>
            <date>2010-07-12 06:03:40 -0700</date>
            <delta_ts>2010-07-14 06:38:37 -0700</delta_ts>
            <desc>patch3</desc>
            <filename>bug38400_3.patch</filename>
            <type>text/plain</type>
            <size>7527</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzA3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMTIgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBGYWlsdXJlIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODQwMAorCisgICAgICAgIEZpbGxSZWN0IHdpdGggc2hhZG93
IG5lZWQgdGFrZSBhbHBoYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGxzdHlsZQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTAtMDctMTIgIFhhbiBMb3Bl
eiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA2Mjk0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMsMjQg
KzcxMyw3NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgRmxvYXRS
ZWN0IG5vcm1hbGl6ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7CiAKICAgICBpZiAobV9jb21t
b24tPnN0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQgfHwg
ZmlsbENvbG9yKCkuYWxwaGEoKSkgewotICAgICAgICBpZiAobV9jb21tb24tPnN0YXRlLnNoYWRv
d0NvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyh0
aGlzLCBwLCByZWN0KTsKICAgICAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybikg
ewogICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKICAgICAgICAgICAgIEZsb2F0
UmVjdCByZWN0TShyZWN0KTsKICAgICAgICAgICAgIFFCcnVzaCBicnVzaChtX2NvbW1vbi0+c3Rh
dGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihhZmZpbmUpKTsKICAgICAgICAg
ICAgIFFQaXhtYXAqIGltYWdlID0gbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1h
Z2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAotICAgICAgICAgICAgZHJhd1Jl
cGVhdFBhdHRlcm4ocCwgaW1hZ2UsIHJlY3QsIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WCgpLCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKSk7CisgICAg
ICAgICAgICAvLyBEcmF3IHNoYWRvdworICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd1NpemU7
CisgICAgICAgICAgICBmbG9hdCBzaGFkb3dCbHVyOworICAgICAgICAgICAgQ29sb3Igc2hhZG93
Q29sb3I7CisgICAgICAgICAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKSkgeworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdChub3Jt
YWxpemVkUmVjdCk7CisgICAgICAgICAgICAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dTaXplLndp
ZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOworCisgICAgICAgICAgICAgICAgUUltYWdlIHNo
YWRvd0ltYWdlKHJvdW5kZWRJbnRTaXplKG5vcm1hbGl6ZWRSZWN0LnNpemUoKSksIFFJbWFnZTo6
Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciBw
U2hhZG93KCZzaGFkb3dJbWFnZSk7CisgICAgICAgICAgICAgICAgcFNoYWRvdy5zZXRDb21wb3Np
dGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOworICAgICAgICAgICAg
ICAgIHBTaGFkb3cuZmlsbFJlY3Qoc2hhZG93SW1hZ2UucmVjdCgpLCBzaGFkb3dDb2xvcik7Cisg
ICAgICAgICAgICAgICAgcFNoYWRvdy5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9EZXN0aW5hdGlvbkluKTsKKyAgICAgICAgICAgICAgICBkcmF3UmVwZWF0UGF0
dGVybigmcFNoYWRvdywgaW1hZ2UsIEZsb2F0UmVjdChzdGF0aWNfY2FzdDxRUmVjdEY+KHNoYWRv
d0ltYWdlLnJlY3QoKSkpLCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKSwg
bV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCkpOworICAgICAgICAgICAgICAg
IHBTaGFkb3cuZW5kKCk7CisgICAgICAgICAgICAgICAgcC0+ZHJhd0ltYWdlKGRlc3RSZWN0LCBz
aGFkb3dJbWFnZSwgc2hhZG93SW1hZ2UucmVjdCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHAsIGltYWdlLCBub3JtYWxpemVkUmVjdCwgbV9jb21tb24t
PnN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRYKCksIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVy
bi0+cmVwZWF0WSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbEdy
YWRpZW50KSB7CiAgICAgICAgICAgICBRQnJ1c2ggYnJ1c2goKm1fY29tbW9uLT5zdGF0ZS5maWxs
R3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAgICAgICAgICAgICBicnVzaC5zZXRUcmFu
c2Zvcm0obV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpKTsKLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KHJlY3QsIGJydXNoKTsKKworICAgICAgICAg
ICAgLy8gRHJhdyBzaGFkb3cKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAg
ICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKKyAgICAgICAgICAgIENvbG9yIHNoYWRvd0NvbG9y
OworICAgICAgICAgICAgaWYgKGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvcikpIHsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qobm9ybWFsaXpl
ZFJlY3QpOworICAgICAgICAgICAgICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgp
LCBzaGFkb3dTaXplLmhlaWdodCgpKTsKKworICAgICAgICAgICAgICAgIFFJbWFnZSBzaGFkb3dJ
bWFnZShyb3VuZGVkSW50U2l6ZShub3JtYWxpemVkUmVjdC5zaXplKCkpLCBRSW1hZ2U6OkZvcm1h
dF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CisgICAgICAgICAgICAgICAgUVBhaW50ZXIgcFNoYWRv
dygmc2hhZG93SW1hZ2UpOworICAgICAgICAgICAgICAgIHBTaGFkb3cuc2V0Q29tcG9zaXRpb25N
b2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICAgICAgICAgICAgICBw
U2hhZG93LmZpbGxSZWN0KHNoYWRvd0ltYWdlLnJlY3QoKSwgc2hhZG93Q29sb3IpOworICAgICAg
ICAgICAgICAgIHBTaGFkb3cuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlv
bk1vZGVfRGVzdGluYXRpb25Jbik7CisgICAgICAgICAgICAgICAgcFNoYWRvdy5maWxsUmVjdChz
aGFkb3dJbWFnZS5yZWN0KCksIGJydXNoKTsKKyAgICAgICAgICAgICAgICBwU2hhZG93LmVuZCgp
OworICAgICAgICAgICAgICAgIHAtPmRyYXdJbWFnZShkZXN0UmVjdCwgc2hhZG93SW1hZ2UsIHNo
YWRvd0ltYWdlLnJlY3QoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwLT5maWxsUmVj
dChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3QocmVj
dCwgcC0+YnJ1c2goKSk7CisgICAgICAgICAgICBpZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkgewor
ICAgICAgICAgICAgICAgIC8vIERyYXcgc2hhZG93CisgICAgICAgICAgICAgICAgRmxvYXRTaXpl
IHNoYWRvd1NpemU7CisgICAgICAgICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKKyAgICAgICAg
ICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0U2hhZG93
KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgICAgICAgICAgICAg
ICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qobm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgICAg
ICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgUUltYWdlIHNoYWRvd0ltYWdlKHJvdW5kZWRJbnRT
aXplKG5vcm1hbGl6ZWRSZWN0LnNpemUoKSksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0
aXBsaWVkKTsKKyAgICAgICAgICAgICAgICAgICAgUVBhaW50ZXIgcFNoYWRvdygmc2hhZG93SW1h
Z2UpOworICAgICAgICAgICAgICAgICAgICBwU2hhZG93LnNldENvbXBvc2l0aW9uTW9kZShRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgIHBTaGFk
b3cuZmlsbFJlY3Qoc2hhZG93SW1hZ2UucmVjdCgpLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAg
ICAgICAgICAgIHBTaGFkb3cuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlv
bk1vZGVfRGVzdGluYXRpb25Jbik7CisgICAgICAgICAgICAgICAgICAgIHBTaGFkb3cuZmlsbFJl
Y3Qoc2hhZG93SW1hZ2UucmVjdCgpLCBwLT5icnVzaCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cFNoYWRvdy5lbmQoKTsKKyAgICAgICAgICAgICAgICAgICAgcC0+ZHJhd0ltYWdlKGRlc3RSZWN0
LCBzaGFkb3dJbWFnZSwgc2hhZG93SW1hZ2UucmVjdCgpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHAtPmJydXNoKCkpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjMw
NzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MCBAQAorMjAxMC0wNy0xMiAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEZhaWx1cmUg
b24gaHR0cDovL3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3RzLzJkLnNo
YWRvdy5hbHBoYS41Lmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4NDAwCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmb2xsb3dpbmcgdGVzdCBjYXNl
IGZyb20gU2tpcHBlZDoKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuYWxw
aGEuNS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50
LmFscGhhLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuZ3JhZGll
bnQudHJhbnNwYXJlbnQuMS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hh
ZG93LmltYWdlLnNjYWxlLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFk
b3cucGF0dGVybi5hbHBoYS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hh
ZG93LnBhdHRlcm4udHJhbnNwYXJlbnQuMS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9T
a2lwcGVkOgorCiAyMDEwLTA3LTEyICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDYyOTQ1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTMwNSwxOCArNTMwNSwxMiBAQCBjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uaW1hZ2UuaW5jCiBjYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnBhdHRlcm4uaW1hZ2UubnVsbC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRl
cm4uaW1hZ2Uuc3RyaW5nLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5pbWFn
ZS51bmRlZmluZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5jYW52YXMuYWxwaGEuaHRtbAogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuY2FudmFzLmJhc2ljLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvMmQuc2hhZG93LmNhbnZhcy50cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LmFscGhhLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuc2hhZG93LmdyYWRpZW50LnRyYW5zcGFyZW50LjEuaHRtbAogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5zaGFkb3cuaW1hZ2UuYWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5z
aGFkb3cuaW1hZ2Uuc2NhbGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuaW1h
Z2UudHJhbnNwYXJlbnQuMS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5pbWFn
ZS50cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRl
cm4uYWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi50cmFu
c3BhcmVudC4xLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnRyYW5zZm9ybS4y
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLmJvdHRvbS5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS5oYW5naW5nLmh0
bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61513</attachid>
            <date>2010-07-14 06:38:37 -0700</date>
            <delta_ts>2010-07-15 10:56:51 -0700</delta_ts>
            <desc>patch4</desc>
            <filename>bug38400_4.patch</filename>
            <type>text/plain</type>
            <size>6840</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzMxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMTQgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBGYWlsdXJlIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODQwMAorCisgICAgICAgIEZpbGxSZWN0IHdpdGggc2hhZG93
IG5lZWQgdGFrZSBhbHBoYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGxzdHlsZQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTAtMDctMTQgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI2MzMwNS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA2Mjk0NSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MTIsMjkgKzcxMiw2NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qo
Y29uc3QgRmxvCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKCEobV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fY29tbW9uLT5zdGF0
ZS5maWxsR3JhZGllbnQgfHwgZmlsbENvbG9yKCkuYWxwaGEoKSkpCisgICAgICAgIHJldHVybjsK
KwogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgRmxvYXRSZWN0IG5vcm1hbGl6
ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7CisKKyAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsK
KyAgICBmbG9hdCBzaGFkb3dCbHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIEZsb2F0
UmVjdCBkZXN0UmVjdDsKKyAgICBRSW1hZ2Ugc2hhZG93SW1hZ2Uocm91bmRlZEludFNpemUobm9y
bWFsaXplZFJlY3Quc2l6ZSgpKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQp
OworICAgIFFQYWludGVyIHBTaGFkb3coJnNoYWRvd0ltYWdlKTsKKyAgICBib29sIGhhc1NoYWRv
dyA9IGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisKKyAg
ICBpZiAoaGFzU2hhZG93KSB7CisgICAgICAgIGRlc3RSZWN0ID0gbm9ybWFsaXplZFJlY3Q7Cisg
ICAgICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdo
dCgpKTsKKworICAgICAgICBwU2hhZG93LnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29t
cG9zaXRpb25Nb2RlX1NvdXJjZSk7CisgICAgICAgIHBTaGFkb3cuZmlsbFJlY3Qoc2hhZG93SW1h
Z2UucmVjdCgpLCBzaGFkb3dDb2xvcik7CisgICAgICAgIHBTaGFkb3cuc2V0Q29tcG9zaXRpb25N
b2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7CisgICAgfQorCisg
ICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybikgeworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gYWZmaW5lOworICAgICAgICBGbG9hdFJlY3QgcmVjdE0ocmVjdCk7CisgICAgICAgIFFC
cnVzaCBicnVzaChtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0
dGVybihhZmZpbmUpKTsKKyAgICAgICAgUVBpeG1hcCogaW1hZ2UgPSBtX2NvbW1vbi0+c3RhdGUu
ZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwog
Ci0gICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiB8fCBtX2NvbW1vbi0+c3RhdGUu
ZmlsbEdyYWRpZW50IHx8IGZpbGxDb2xvcigpLmFscGhhKCkpIHsKLSAgICAgICAgaWYgKG1fY29t
bW9uLT5zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBkcmF3Qm9yZGVy
bGVzc1JlY3RTaGFkb3codGhpcywgcCwgcmVjdCk7Ci0gICAgICAgIGlmIChtX2NvbW1vbi0+c3Rh
dGUuZmlsbFBhdHRlcm4pIHsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmU7Ci0g
ICAgICAgICAgICBGbG9hdFJlY3QgcmVjdE0ocmVjdCk7Ci0gICAgICAgICAgICBRQnJ1c2ggYnJ1
c2gobV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oYWZm
aW5lKSk7Ci0gICAgICAgICAgICBRUGl4bWFwKiBpbWFnZSA9IG1fY29tbW9uLT5zdGF0ZS5maWxs
UGF0dGVybi0+dGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KLSAg
ICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHAsIGltYWdlLCByZWN0LCBtX2NvbW1vbi0+c3Rh
dGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKSwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCkpOwotICAgICAgICB9IGVsc2UgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGll
bnQpIHsKLSAgICAgICAgICAgIFFCcnVzaCBicnVzaCgqbV9jb21tb24tPnN0YXRlLmZpbGxHcmFk
aWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKLSAgICAgICAgICAgIGJydXNoLnNldFRyYW5zZm9y
bShtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkp
OwotICAgICAgICAgICAgcC0+ZmlsbFJlY3QocmVjdCwgYnJ1c2gpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAgICAgICAgICAgICAg
cC0+ZmlsbFJlY3QocmVjdCwgcC0+YnJ1c2goKSk7CisgICAgICAgIC8vIERyYXcgc2hhZG93Cisg
ICAgICAgIGlmIChoYXNTaGFkb3cpIHsKKyAgICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKCZw
U2hhZG93LCBpbWFnZSwgRmxvYXRSZWN0KHN0YXRpY19jYXN0PFFSZWN0Rj4oc2hhZG93SW1hZ2Uu
cmVjdCgpKSksIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpLCBtX2NvbW1v
bi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKSk7CisgICAgICAgICAgICBwU2hhZG93LmVu
ZCgpOworICAgICAgICAgICAgcC0+ZHJhd0ltYWdlKGRlc3RSZWN0LCBzaGFkb3dJbWFnZSwgc2hh
ZG93SW1hZ2UucmVjdCgpKTsKKyAgICAgICAgfQorICAgICAgICBkcmF3UmVwZWF0UGF0dGVybihw
LCBpbWFnZSwgbm9ybWFsaXplZFJlY3QsIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+cmVw
ZWF0WCgpLCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKSk7CisgICAgfSBl
bHNlIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgICAgIFFCcnVzaCBi
cnVzaCgqbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsK
KyAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQt
PmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisKKyAgICAgICAgLy8gRHJhdyBzaGFkb3cKKyAg
ICAgICAgaWYgKGhhc1NoYWRvdykgeworICAgICAgICAgICAgcFNoYWRvdy5maWxsUmVjdChzaGFk
b3dJbWFnZS5yZWN0KCksIGJydXNoKTsKKyAgICAgICAgICAgIHBTaGFkb3cuZW5kKCk7CisgICAg
ICAgICAgICBwLT5kcmF3SW1hZ2UoZGVzdFJlY3QsIHNoYWRvd0ltYWdlLCBzaGFkb3dJbWFnZS5y
ZWN0KCkpOwogICAgICAgICB9CisgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBi
cnVzaCk7CisgICAgfSBlbHNlIGlmIChmaWxsQ29sb3IoKS5hbHBoYSgpKSB7CisgICAgICAgIC8v
IERyYXcgc2hhZG93CisgICAgICAgIGlmIChoYXNTaGFkb3cpIHsKKyAgICAgICAgICAgIHBTaGFk
b3cuZmlsbFJlY3Qoc2hhZG93SW1hZ2UucmVjdCgpLCBwLT5icnVzaCgpKTsKKyAgICAgICAgICAg
IHBTaGFkb3cuZW5kKCk7CisgICAgICAgICAgICBwLT5kcmF3SW1hZ2UoZGVzdFJlY3QsIHNoYWRv
d0ltYWdlLCBzaGFkb3dJbWFnZS5yZWN0KCkpOworICAgICAgICB9CisgICAgICAgIHAtPmZpbGxS
ZWN0KG5vcm1hbGl6ZWRSZWN0LCBwLT5icnVzaCgpKTsKICAgICB9CiB9CiAKKwogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjMzMTQpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
MC0wNy0xNCAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEZhaWx1cmUgb24gaHR0cDov
L3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3RzLzJkLnNoYWRvdy5hbHBo
YS41Lmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM4NDAwCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlIGZyb20gU2tp
cHBlZDoKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1s
CisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LmFscGhhLmh0
bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuZ3JhZGllbnQudHJhbnNw
YXJlbnQuMS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmltYWdl
LnNjYWxlLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVy
bi5hbHBoYS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRl
cm4udHJhbnNwYXJlbnQuMS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgor
CiAyMDEwLTA3LTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjMzMDUuCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDYyOTQ1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTMwNSwxOCArNTMwNSwxMiBAQCBjYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uaW1hZ2UuaW5jCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LnBhdHRlcm4uaW1hZ2UubnVsbC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4u
aW1hZ2Uuc3RyaW5nLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5pbWFnZS51
bmRlZmluZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5jYW52YXMuYWxwaGEuaHRtbAogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuY2FudmFzLmJhc2ljLmh0bWwKIGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQuc2hhZG93LmNhbnZhcy50cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGlsaXAv
dGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LmFscGhhLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuc2hhZG93LmdyYWRpZW50LnRyYW5zcGFyZW50LjEuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5zaGFkb3cuaW1hZ2UuYWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFk
b3cuaW1hZ2Uuc2NhbGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuaW1hZ2Uu
dHJhbnNwYXJlbnQuMS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5pbWFnZS50
cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRlcm4u
YWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi50cmFuc3Bh
cmVudC4xLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnRyYW5zZm9ybS4yLmh0
bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLmJvdHRvbS5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS5oYW5naW5nLmh0bWwK
</data>
<flag name="review"
          id="49551"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>61687</attachid>
            <date>2010-07-15 10:56:51 -0700</date>
            <delta_ts>2010-07-15 11:40:47 -0700</delta_ts>
            <desc>patch5</desc>
            <filename>bug38400_5.patch</filename>
            <type>text/plain</type>
            <size>7008</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzQzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMTUgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBGYWlsdXJlIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODQwMAorCisgICAgICAgIEZpbGxSZWN0IHdpdGggc2hhZG93
IG5lZWQgdGFrZSBhbHBoYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGxzdHlsZQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTAtMDctMTUgIEFuZHJlYXMg
S2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA2Mjk0
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MTIsMjkgKzcxMiw3MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKCEobV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuIHx8IG1f
Y29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQgfHwgZmlsbENvbG9yKCkuYWxwaGEoKSkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgRmxvYXRS
ZWN0IG5vcm1hbGl6ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7CiAKLSAgICBpZiAobV9jb21t
b24tPnN0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQgfHwg
ZmlsbENvbG9yKCkuYWxwaGEoKSkgewotICAgICAgICBpZiAobV9jb21tb24tPnN0YXRlLnNoYWRv
d0NvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyh0
aGlzLCBwLCByZWN0KTsKLSAgICAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybikg
ewotICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKLSAgICAgICAgICAgIEZsb2F0
UmVjdCByZWN0TShyZWN0KTsKLSAgICAgICAgICAgIFFCcnVzaCBicnVzaChtX2NvbW1vbi0+c3Rh
dGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihhZmZpbmUpKTsKLSAgICAgICAg
ICAgIFFQaXhtYXAqIGltYWdlID0gbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1h
Z2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLQotICAgICAgICAgICAgZHJhd1Jl
cGVhdFBhdHRlcm4ocCwgaW1hZ2UsIHJlY3QsIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WCgpLCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAobV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkgewotICAgICAgICAg
ICAgUUJydXNoIGJydXNoKCptX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5wbGF0Zm9ybUdy
YWRpZW50KCkpOwotICAgICAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fY29tbW9uLT5zdGF0
ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgICAgICAgICBw
LT5maWxsUmVjdChyZWN0LCBicnVzaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiAoZmlsbENvbG9yKCkuYWxwaGEoKSkKLSAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChyZWN0
LCBwLT5icnVzaCgpKTsKKyAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBmbG9hdCBzaGFk
b3dCbHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIGJvb2wgaGFzU2hhZG93ID0gZ2V0
U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBGbG9hdFJl
Y3QgZGVzdFJlY3Q7CisgICAgUUltYWdlKiBzaGFkb3dJbWFnZTsKKyAgICBRUGFpbnRlciogcFNo
YWRvdzsKKworICAgIGlmIChoYXNTaGFkb3cpIHsKKyAgICAgICAgc2hhZG93SW1hZ2UgPSBuZXcg
UUltYWdlKHJvdW5kZWRJbnRTaXplKG5vcm1hbGl6ZWRSZWN0LnNpemUoKSksIFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKyAgICAgICAgcFNoYWRvdyA9IG5ldyBRUGFpbnRl
cihzaGFkb3dJbWFnZSk7CisgICAgICAgIGRlc3RSZWN0ID0gbm9ybWFsaXplZFJlY3Q7CisgICAg
ICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgp
KTsKKworICAgICAgICBwU2hhZG93LT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9Tb3VyY2UpOworICAgICAgICBwU2hhZG93LT5maWxsUmVjdChzaGFkb3dJbWFn
ZS0+cmVjdCgpLCBzaGFkb3dDb2xvcik7CisgICAgICAgIHBTaGFkb3ctPnNldENvbXBvc2l0aW9u
TW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0Rlc3RpbmF0aW9uSW4pOworICAgIH0KKwor
ICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4pIHsKKyAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGFmZmluZTsKKyAgICAgICAgRmxvYXRSZWN0IHJlY3RNKHJlY3QpOworICAgICAgICBR
QnJ1c2ggYnJ1c2gobV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oYWZmaW5lKSk7CisgICAgICAgIFFQaXhtYXAqIGltYWdlID0gbV9jb21tb24tPnN0YXRl
LmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KworICAgICAgICAvLyBEcmF3IHNoYWRvdworICAgICAgICBpZiAoaGFzU2hhZG93KSB7CisgICAg
ICAgICAgICBkcmF3UmVwZWF0UGF0dGVybihwU2hhZG93LCBpbWFnZSwgRmxvYXRSZWN0KHN0YXRp
Y19jYXN0PFFSZWN0Rj4oc2hhZG93SW1hZ2UtPnJlY3QoKSkpLCBtX2NvbW1vbi0+c3RhdGUuZmls
bFBhdHRlcm4tPnJlcGVhdFgoKSwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZ
KCkpOworICAgICAgICAgICAgcFNoYWRvdy0+ZW5kKCk7CisgICAgICAgICAgICBwLT5kcmF3SW1h
Z2UoZGVzdFJlY3QsICpzaGFkb3dJbWFnZSwgc2hhZG93SW1hZ2UtPnJlY3QoKSk7CisgICAgICAg
IH0KKyAgICAgICAgZHJhd1JlcGVhdFBhdHRlcm4ocCwgaW1hZ2UsIG5vcm1hbGl6ZWRSZWN0LCBt
X2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFgoKSwgbV9jb21tb24tPnN0YXRlLmZp
bGxQYXR0ZXJuLT5yZXBlYXRZKCkpOworICAgIH0gZWxzZSBpZiAobV9jb21tb24tPnN0YXRlLmZp
bGxHcmFkaWVudCkgeworICAgICAgICBRQnJ1c2ggYnJ1c2goKm1fY29tbW9uLT5zdGF0ZS5maWxs
R3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CisgICAgICAgIGJydXNoLnNldFRyYW5zZm9y
bShtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkp
OworCisgICAgICAgIC8vIERyYXcgc2hhZG93CisgICAgICAgIGlmIChoYXNTaGFkb3cpIHsKKyAg
ICAgICAgICAgIHBTaGFkb3ctPmZpbGxSZWN0KHNoYWRvd0ltYWdlLT5yZWN0KCksIGJydXNoKTsK
KyAgICAgICAgICAgIHBTaGFkb3ctPmVuZCgpOworICAgICAgICAgICAgcC0+ZHJhd0ltYWdlKGRl
c3RSZWN0LCAqc2hhZG93SW1hZ2UsIHNoYWRvd0ltYWdlLT5yZWN0KCkpOworICAgICAgICB9Cisg
ICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CisgICAgfSBlbHNlIGlm
IChmaWxsQ29sb3IoKS5hbHBoYSgpKSB7CisgICAgICAgIC8vIERyYXcgc2hhZG93CisgICAgICAg
IGlmIChoYXNTaGFkb3cpIHsKKyAgICAgICAgICAgIHBTaGFkb3ctPmZpbGxSZWN0KHNoYWRvd0lt
YWdlLT5yZWN0KCksIHAtPmJydXNoKCkpOworICAgICAgICAgICAgcFNoYWRvdy0+ZW5kKCk7Cisg
ICAgICAgICAgICBwLT5kcmF3SW1hZ2UoZGVzdFJlY3QsICpzaGFkb3dJbWFnZSwgc2hhZG93SW1h
Z2UtPnJlY3QoKSk7CiAgICAgICAgIH0KKyAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QsIHAtPmJydXNoKCkpOworICAgIH0KKworICAgIGlmIChoYXNTaGFkb3cpIHsKKyAgICAgICAg
ZGVsZXRlIHNoYWRvd0ltYWdlOworICAgICAgICBkZWxldGUgcFNoYWRvdzsKICAgICB9CiB9CiAK
Kwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NjM0MzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMC0wNy0xNSAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEZhaWx1
cmUgb24gaHR0cDovL3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3RzLzJk
LnNoYWRvdy5hbHBoYS41Lmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4NDAwCisKKyAgICAgICAgUmVtb3ZlIHRoZSBmb2xsb3dpbmcgdGVzdCBj
YXNlIGZyb20gU2tpcHBlZDoKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cu
YWxwaGEuNS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmdyYWRp
ZW50LmFscGhhLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuZ3Jh
ZGllbnQudHJhbnNwYXJlbnQuMS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
c2hhZG93LmltYWdlLnNjYWxlLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5z
aGFkb3cucGF0dGVybi5hbHBoYS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
c2hhZG93LnBhdHRlcm4udHJhbnNwYXJlbnQuMS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9Ta2lwcGVkOgorCiAyMDEwLTA3LTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQJKHJldmlzaW9uIDYyOTQ1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTMwNSwxOCArNTMwNSwxMiBAQCBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnBhdHRlcm4uaW1hZ2UuaW5jCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBh
dHRlcm4uaW1hZ2UubnVsbC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uaW1h
Z2Uuc3RyaW5nLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5pbWFnZS51bmRl
ZmluZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5jYW52YXMuYWxwaGEuaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5zaGFkb3cuY2FudmFzLmJhc2ljLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuc2hhZG93LmNhbnZhcy50cmFuc3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuc2hhZG93LmdyYWRpZW50LmFscGhhLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
c2hhZG93LmdyYWRpZW50LnRyYW5zcGFyZW50LjEuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5zaGFkb3cuaW1hZ2UuYWxwaGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cu
aW1hZ2Uuc2NhbGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuaW1hZ2UudHJh
bnNwYXJlbnQuMS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5pbWFnZS50cmFu
c3BhcmVudC4yLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRlcm4uYWxw
aGEuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi50cmFuc3BhcmVu
dC4xLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnRyYW5zZm9ybS4yLmh0bWwK
IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLmJvdHRvbS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS5oYW5naW5nLmh0bWwK
</data>
<flag name="review"
          id="49755"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61693</attachid>
            <date>2010-07-15 11:40:33 -0700</date>
            <delta_ts>2010-07-17 15:15:05 -0700</delta_ts>
            <desc>patch6</desc>
            <filename>bug38400_6.patch</filename>
            <type>text/plain</type>
            <size>6943</size>
            <attacher name="qi">qi.2.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzQzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDctMTUgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBGYWlsdXJlIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90
ZXN0cy8yZC5zaGFkb3cuYWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODQwMAorCisgICAgICAgIEZpbGxSZWN0IHdpdGggc2hhZG93
IG5lZWQgdGFrZSBhbHBoYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGxzdHlsZQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTAtMDctMTUgIEFuZHJlYXMg
S2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA2Mjk0
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MTIsMjkgKzcxMiw2NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKCEobV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuIHx8IG1f
Y29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQgfHwgZmlsbENvbG9yKCkuYWxwaGEoKSkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgRmxvYXRS
ZWN0IG5vcm1hbGl6ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7CisKKyAgICBGbG9hdFNpemUg
c2hhZG93U2l6ZTsKKyAgICBmbG9hdCBzaGFkb3dCbHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9y
OworICAgIGJvb2wgaGFzU2hhZG93ID0gZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKTsKKyAgICBGbG9hdFJlY3Qgc2hhZG93RGVzdFJlY3Q7CisgICAgUUltYWdl
KiBzaGFkb3dJbWFnZSA9IDA7CisgICAgUVBhaW50ZXIqIHBTaGFkb3cgPSAwOworCisgICAgaWYg
KGhhc1NoYWRvdykgeworICAgICAgICBzaGFkb3dJbWFnZSA9IG5ldyBRSW1hZ2Uocm91bmRlZElu
dFNpemUobm9ybWFsaXplZFJlY3Quc2l6ZSgpKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11
bHRpcGxpZWQpOworICAgICAgICBwU2hhZG93ID0gbmV3IFFQYWludGVyKHNoYWRvd0ltYWdlKTsK
KyAgICAgICAgc2hhZG93RGVzdFJlY3QgPSBub3JtYWxpemVkUmVjdDsKKyAgICAgICAgc2hhZG93
RGVzdFJlY3QubW92ZShzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwor
CisgICAgICAgIHBTaGFkb3ctPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX1NvdXJjZSk7CisgICAgICAgIHBTaGFkb3ctPmZpbGxSZWN0KHNoYWRvd0ltYWdlLT5y
ZWN0KCksIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgcFNoYWRvdy0+c2V0Q29tcG9zaXRpb25Nb2Rl
KFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7CisgICAgfQogCi0gICAg
aWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiB8fCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdy
YWRpZW50IHx8IGZpbGxDb2xvcigpLmFscGhhKCkpIHsKLSAgICAgICAgaWYgKG1fY29tbW9uLT5z
dGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBkcmF3Qm9yZGVybGVzc1Jl
Y3RTaGFkb3codGhpcywgcCwgcmVjdCk7Ci0gICAgICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZmls
bFBhdHRlcm4pIHsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmU7Ci0gICAgICAg
ICAgICBGbG9hdFJlY3QgcmVjdE0ocmVjdCk7Ci0gICAgICAgICAgICBRQnJ1c2ggYnJ1c2gobV9j
b21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oYWZmaW5lKSk7
Ci0gICAgICAgICAgICBRUGl4bWFwKiBpbWFnZSA9IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVy
bi0+dGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KLSAgICAgICAg
ICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHAsIGltYWdlLCByZWN0LCBtX2NvbW1vbi0+c3RhdGUuZmls
bFBhdHRlcm4tPnJlcGVhdFgoKSwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZ
KCkpOwotICAgICAgICB9IGVsc2UgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQpIHsK
LSAgICAgICAgICAgIFFCcnVzaCBicnVzaCgqbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC0+
cGxhdGZvcm1HcmFkaWVudCgpKTsKLSAgICAgICAgICAgIGJydXNoLnNldFRyYW5zZm9ybShtX2Nv
bW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwotICAg
ICAgICAgICAgcC0+ZmlsbFJlY3QocmVjdCwgYnJ1c2gpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCi0gICAgICAgICAgICAgICAgcC0+Zmls
bFJlY3QocmVjdCwgcC0+YnJ1c2goKSk7CisgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0
dGVybikgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYWZmaW5lOworICAgICAgICBGbG9hdFJl
Y3QgcmVjdE0ocmVjdCk7CisgICAgICAgIFFCcnVzaCBicnVzaChtX2NvbW1vbi0+c3RhdGUuZmls
bFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihhZmZpbmUpKTsKKyAgICAgICAgUVBpeG1h
cCogaW1hZ2UgPSBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworCisgICAgICAgIGlmIChoYXNTaGFkb3cpIHsKKyAg
ICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHBTaGFkb3csIGltYWdlLCBGbG9hdFJlY3Qoc3Rh
dGljX2Nhc3Q8UVJlY3RGPihzaGFkb3dJbWFnZS0+cmVjdCgpKSksIG1fY29tbW9uLT5zdGF0ZS5m
aWxsUGF0dGVybi0+cmVwZWF0WCgpLCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVh
dFkoKSk7CisgICAgICAgICAgICBwU2hhZG93LT5lbmQoKTsKKyAgICAgICAgICAgIHAtPmRyYXdJ
bWFnZShzaGFkb3dEZXN0UmVjdCwgKnNoYWRvd0ltYWdlLCBzaGFkb3dJbWFnZS0+cmVjdCgpKTsK
KyAgICAgICAgfQorICAgICAgICBkcmF3UmVwZWF0UGF0dGVybihwLCBpbWFnZSwgbm9ybWFsaXpl
ZFJlY3QsIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpLCBtX2NvbW1vbi0+
c3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKSk7CisgICAgfSBlbHNlIGlmIChtX2NvbW1vbi0+
c3RhdGUuZmlsbEdyYWRpZW50KSB7CisgICAgICAgIFFCcnVzaCBicnVzaCgqbV9jb21tb24tPnN0
YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAgICAgYnJ1c2guc2V0
VHJhbnNmb3JtKG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oKSk7CisKKyAgICAgICAgaWYgKGhhc1NoYWRvdykgeworICAgICAgICAgICAgcFNoYWRv
dy0+ZmlsbFJlY3Qoc2hhZG93SW1hZ2UtPnJlY3QoKSwgYnJ1c2gpOworICAgICAgICAgICAgcFNo
YWRvdy0+ZW5kKCk7CisgICAgICAgICAgICBwLT5kcmF3SW1hZ2Uoc2hhZG93RGVzdFJlY3QsICpz
aGFkb3dJbWFnZSwgc2hhZG93SW1hZ2UtPnJlY3QoKSk7CisgICAgICAgIH0KKyAgICAgICAgcC0+
ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIGJydXNoKTsKKyAgICB9IGVsc2UgaWYgKGZpbGxDb2xv
cigpLmFscGhhKCkpIHsKKyAgICAgICAgaWYgKGhhc1NoYWRvdykgeworICAgICAgICAgICAgcFNo
YWRvdy0+ZmlsbFJlY3Qoc2hhZG93SW1hZ2UtPnJlY3QoKSwgcC0+YnJ1c2goKSk7CisgICAgICAg
ICAgICBwU2hhZG93LT5lbmQoKTsKKyAgICAgICAgICAgIHAtPmRyYXdJbWFnZShzaGFkb3dEZXN0
UmVjdCwgKnNoYWRvd0ltYWdlLCBzaGFkb3dJbWFnZS0+cmVjdCgpKTsKICAgICAgICAgfQorICAg
ICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgcC0+YnJ1c2goKSk7CiAgICAgfQorCisg
ICAgZGVsZXRlIHNoYWRvd0ltYWdlOworICAgIGRlbGV0ZSBwU2hhZG93OwogfQogCisKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNDM3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDctMTUgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBGYWlsdXJlIG9uIGh0
dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90ZXN0cy8yZC5zaGFkb3cu
YWxwaGEuNS5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODQwMAorCisgICAgICAgIFJlbW92ZSB0aGUgZm9sbG93aW5nIHRlc3QgY2FzZSBmcm9t
IFNraXBwZWQ6CisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmFscGhhLjUu
aHRtbAorICAgICAgICBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5ncmFkaWVudC5hbHBo
YS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LnRy
YW5zcGFyZW50LjEuaHRtbAorICAgICAgICBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5p
bWFnZS5zY2FsZS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBh
dHRlcm4uYWxwaGEuaHRtbAorICAgICAgICBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5w
YXR0ZXJuLnRyYW5zcGFyZW50LjEuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKwogMjAxMC0wNy0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCShyZXZpc2lvbiA2Mjk0NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJ
KHdvcmtpbmcgY29weSkKQEAgLTUzMDUsMTggKzUzMDUsMTIgQEAgY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5wYXR0ZXJuLmltYWdlLmluYwogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLmlt
YWdlLm51bGwuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLmltYWdlLnN0cmlu
Zy5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uaW1hZ2UudW5kZWZpbmVkLmh0
bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmFscGhhLjUuaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5zaGFkb3cuY2FudmFzLmFscGhhLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuc2hhZG93LmNhbnZhcy5iYXNpYy5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNo
YWRvdy5jYW52YXMudHJhbnNwYXJlbnQuMi5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNo
YWRvdy5ncmFkaWVudC5hbHBoYS5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5n
cmFkaWVudC50cmFuc3BhcmVudC4xLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93
LmltYWdlLmFscGhhLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmltYWdlLnNj
YWxlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmltYWdlLnRyYW5zcGFyZW50
LjEuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cuaW1hZ2UudHJhbnNwYXJlbnQu
Mi5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5wYXR0ZXJuLmFscGhhLmh0bWwK
LWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LnBhdHRlcm4udHJhbnNwYXJlbnQuMS5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy50cmFuc2Zvcm0uMi5odG1sCiBjYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS5ib3R0b20uaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUuaGFuZ2luZy5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>