<?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>43804</bug_id>
          
          <creation_ts>2010-08-10 12:21:17 -0700</creation_ts>
          <short_desc>[CHROMIUM] Use the BGRA format for canvas 2D accel upload and readback.</short_desc>
          <delta_ts>2010-08-13 06:59:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          <dependson>43858</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262813</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-10 12:21:17 -0700</bug_when>
    <thetext>[CHROMIUM] Use the BGRA format for canvas 2D accel upload and readback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262815</commentid>
    <comment_count>1</comment_count>
      <attachid>64039</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-10 12:25:33 -0700</bug_when>
    <thetext>Created attachment 64039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262829</commentid>
    <comment_count>2</comment_count>
      <attachid>64039</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-10 13:28:12 -0700</bug_when>
    <thetext>Comment on attachment 64039
Patch

&gt; Index: WebCore/platform/graphics/chromium/GLES2Texture.cpp
&gt; +    case GLES2Texture::BGRA8:
&gt; +        if (true) { // FIXME:  check for BGRA extension support
&gt; +            *glFormat = 0x80E1;
&gt; +            *glType = GraphicsContext3D::UNSIGNED_BYTE;
&gt; +        } else {
&gt; +            *glFormat = GraphicsContext3D::RGBA;
&gt; +            *glType = GraphicsContext3D::UNSIGNED_BYTE;
&gt; +            *swizzle = true;

Don&apos;t keep dead code around.  If we need this later (which I think we will) we can get it out of SVN history.

&gt;  void PlatformContextSkia::readbackHardwareToSoftware() const
&gt; +        // FIXME:  Check for BGRA extension support
&gt; +        if (true)
&gt; +            context-&gt;readPixels(0, height - 1 - y, width, 1, 0x80E1, GraphicsContext3D::UNSIGNED_BYTE, pixels);
&gt; +        else {
&gt; +            context-&gt;readPixels(0, height - 1 - y, width, 1, GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BYTE, pixels);
&gt; +            for (int i = 0; i &lt; width; ++i) {
&gt; +                uint32_t pixel = pixels[i];
&gt; +                // Swizzles from RGBA -&gt; BGRA.
&gt; +                pixels[i] = pixel &amp; 0xFF00FF00 | ((pixel &amp; 0x00FF0000) &gt;&gt; 16) | ((pixel &amp; 0x000000FF) &lt;&lt; 16);
&gt; +            }
&gt;          }

Same here - keep the FIXME but nuke the unreachable code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262874</commentid>
    <comment_count>3</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-10 14:59:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 64039 [details])
&gt; &gt; Index: WebCore/platform/graphics/chromium/GLES2Texture.cpp
&gt; &gt; +    case GLES2Texture::BGRA8:
&gt; &gt; +        if (true) { // FIXME:  check for BGRA extension support
&gt; &gt; +            *glFormat = 0x80E1;
&gt; &gt; +            *glType = GraphicsContext3D::UNSIGNED_BYTE;
&gt; &gt; +        } else {
&gt; &gt; +            *glFormat = GraphicsContext3D::RGBA;
&gt; &gt; +            *glType = GraphicsContext3D::UNSIGNED_BYTE;
&gt; &gt; +            *swizzle = true;
&gt; 
&gt; Don&apos;t keep dead code around.  If we need this later (which I think we will) we can get it out of SVN history.

In that case, I&apos;ll see about landing the change to GraphicsContext3D first.  We&apos;ll definitely need this code later.

&gt; &gt;  void PlatformContextSkia::readbackHardwareToSoftware() const
&gt; &gt; +        // FIXME:  Check for BGRA extension support
&gt; &gt; +        if (true)
&gt; &gt; +            context-&gt;readPixels(0, height - 1 - y, width, 1, 0x80E1, GraphicsContext3D::UNSIGNED_BYTE, pixels);
&gt; &gt; +        else {
&gt; &gt; +            context-&gt;readPixels(0, height - 1 - y, width, 1, GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BYTE, pixels);
&gt; &gt; +            for (int i = 0; i &lt; width; ++i) {
&gt; &gt; +                uint32_t pixel = pixels[i];
&gt; &gt; +                // Swizzles from RGBA -&gt; BGRA.
&gt; &gt; +                pixels[i] = pixel &amp; 0xFF00FF00 | ((pixel &amp; 0x00FF0000) &gt;&gt; 16) | ((pixel &amp; 0x000000FF) &lt;&lt; 16);
&gt; &gt; +            }
&gt; &gt;          }
&gt; 
&gt; Same here - keep the FIXME but nuke the unreachable code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263859</commentid>
    <comment_count>4</comment_count>
      <attachid>64233</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-12 10:08:07 -0700</bug_when>
    <thetext>Created attachment 64233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263870</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-12 10:36:40 -0700</bug_when>
    <thetext>Looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263951</commentid>
    <comment_count>6</comment_count>
      <attachid>64233</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-12 13:44:50 -0700</bug_when>
    <thetext>Comment on attachment 64233
Patch


&gt; Index: WebCore/platform/graphics/chromium/GLES2Texture.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/chromium/GLES2Texture.cpp	(revision 65251)
&gt; +++ WebCore/platform/graphics/chromium/GLES2Texture.cpp	(working copy)
&gt; @@ -54,6 +54,30 @@ GLES2Texture::~GLES2Texture()
&gt;      m_context-&gt;deleteTexture(m_textureId);
&gt;  }
&gt;  
&gt; +static void convertFormat(GraphicsContext3D* context, GLES2Texture::Format format, unsigned int* glFormat, unsigned int* glType, bool* swizzle)
..
&gt; +    default:
&gt; +        ASSERT(!&quot;bad format&quot;);

This is odd, but I see it existed before. Anyway please consider using ASSERT_NOT_REACHED(); instead.

(Also if the list of enum is short, it is considered preferable to list them and remove the default to allow the compiler to flag enums not being handled.)

&gt; +        break;
&gt; +    }
&gt; +}
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264346</commentid>
    <comment_count>7</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-13 06:59:33 -0700</bug_when>
    <thetext>Committed r65323: &lt;http://trac.webkit.org/changeset/65323&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64039</attachid>
            <date>2010-08-10 12:25:33 -0700</date>
            <delta_ts>2010-08-12 10:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43804-20100810152531.patch</filename>
            <type>text/plain</type>
            <size>8245</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTA4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDgtMTAgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0NIUk9NSVVNXSBVc2UgdGhlIEJHUkEgZm9ybWF0IGZvciBjYW52YXMgMkQgYWNjZWwg
dXBsb2FkIGFuZCByZWFkYmFja3MuCisKKyAgICAgICAgRm9yIG5vdywgd2UgdXNlIHRoZSBoZXgg
dmFsdWUgb2YgR0xfQkdSQSAoYWthIEdMX0JHUkFfRVhUKSBkaXJlY3RseSwKKyAgICAgICAgc2lu
Y2Ugd2Uga25vdyBpdCBpcyBzdXBwb3J0ZWQgb24gYWxsIENocm9taXVtIGJhY2tlbmRzLCBhbmQK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QgcGFzc2VzIGl0IHRocm91Z2ggdW5tb2xlc3RlZC4g
IEluIGFub3RoZXIKKyAgICAgICAgQ0wsIEknbGwgcHJvdmlkZSBwcm9wZXIgc3VwcG9ydCBmb3Ig
aXQgKGFuZCBhIHJ1bnRpbWUgY2hlY2sgZm9yIHRoZQorICAgICAgICBhcHByb3ByaWF0ZSBleHRl
bnNpb25zKSBpbiBHcmFwaGljc0NvbnRleHQzRC4gIEFsc28ga2VlcCBhCisgICAgICAgIHRleHR1
cmUgYXJvdW5kIGZvciB1cGxvYWRzLCByYXRoZXIgdGhhbiByZS1jcmVhdGluZyBpdCBlYWNoIHRp
bWUuCisKKyAgICAgICAgQ292ZXJlZCBieSBtYW55IGxheW91dCB0ZXN0cyAob25jZSB3ZSdyZSBy
dW5uaW5nIHRoZW0pLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xF
UzJUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRGb3JtYXQpOgorICAgICAg
ICBNb3ZlIGNvbnZlcnRGb3JtYXQoKSBhaGVhZCBvZiB0ZXh0dXJlIGNyZWF0aW9uLCBzaW5jZSBH
TEVTMiBpbnNpc3RzIG9uCisgICAgICAgIGhhdmluZyB0aGUgc2FtZSBpbnRlcm5hbEZvcm1hdCBh
bmQgZm9ybWF0LiAgVXNlIEJHUkEgaW5zdGVhZCBvZgorICAgICAgICBzd2l6emxpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpHTEVTMlRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIFVzZSBjb252ZXJ0
Rm9ybWF0KCkgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZvcm1hdCBhbmQgdHlwZXMgdG8gdXNl
OworICAgICAgICB1c2UgZm9ybWF0IGFsc28gZm9yIGludGVybmFsRm9ybWF0LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRHcmFwaGljc0NvbnRleHQzRCk6Cisg
ICAgICAgIENsZWFyIHRoZSB1cGxvYWQgdGV4dHVyZSB3aGVuIGEgbmV3IGNvbnRleHQgaXMgc2V0
LgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6dXBsb2FkU29mdHdhcmVU
b0hhcmR3YXJlKToKKyAgICAgICAgVXNlIG1fdXBsb2FkVGV4dHVyZSBpbnN0ZWFkIG9mIGNyZWF0
aW5nIGEgbmV3IG9uZSBlYWNoIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpyZWFkYmFja0hhcmR3YXJlVG9Tb2Z0d2FyZSk6CisgICAgICAgIFVzZSB0aGUgQkdS
QSBmb3JtYXQgZm9yIHJlYWRiYWNrcyBpbnN0ZWFkIG9mIHN3aXp6bGluZy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAgQWRk
IG1fdXBsb2FkVGV4dHVyZSBmb3IgY29uc2VjdXRpdmUgdXBsb2Fkcy4KKwogMjAxMC0wOC0xMCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hy
b21pdW0gYnVpbGQgZml4CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dMRVMyVGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HTEVTMlRleHR1cmUuY3BwCShyZXZpc2lvbiA2NTA3OSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNiArNTQsMzAgQEAgR0xFUzJUZXh0dXJlOjp+R0xFUzJUZXh0dXJlKCkKICAgICBt
X2NvbnRleHQtPmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOwogfQogCitzdGF0aWMgdm9pZCBj
b252ZXJ0Rm9ybWF0KEdMRVMyVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgaW50KiBn
bEZvcm1hdCwgdW5zaWduZWQgaW50KiBnbFR5cGUsIGJvb2wqIHN3aXp6bGUpCit7CisgICAgKnN3
aXp6bGUgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR0xFUzJUZXh0
dXJlOjpSR0JBODoKKyAgICAgICAgKmdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7
CisgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHTEVTMlRleHR1cmU6OkJHUkE4OgorICAgICAgICBpZiAo
dHJ1ZSkgeyAvLyBGSVhNRTogIGNoZWNrIGZvciBCR1JBIGV4dGVuc2lvbiBzdXBwb3J0CisgICAg
ICAgICAgICAqZ2xGb3JtYXQgPSAweDgwRTE7CisgICAgICAgICAgICAqZ2xUeXBlID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAqZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICAgICAgICAgICpnbFR5
cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTsKKyAgICAgICAgICAgICpzd2l6
emxlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlQoISJiYWQgZm9ybWF0Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwog
UGFzc1JlZlB0cjxHTEVTMlRleHR1cmU+IEdMRVMyVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
CiAgICAgaW50IG1heDsKQEAgLTY3LDMzICs5MSwxNSBAQCBQYXNzUmVmUHRyPEdMRVMyVGV4dHVy
ZT4gR0xFUzJUZXh0dXJlOjpjCiAgICAgaWYgKCF0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybiAw
OwogCisgICAgdW5zaWduZWQgaW50IGdsRm9ybWF0LCBnbFR5cGU7CisgICAgYm9vbCBzd2l6emxl
OworICAgIGNvbnZlcnRGb3JtYXQoZm9ybWF0LCAmZ2xGb3JtYXQsICZnbFR5cGUsICZzd2l6emxl
KTsKICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGV4dHVyZUlkKTsKLSAgICBjb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwg
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCAwKTsKKyAgICBjb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBnbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZ2xGb3JtYXQsIGdsVHlwZSwg
MCk7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdMRVMyVGV4dHVyZShjb250ZXh0LCB0ZXh0
dXJlSWQsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogfQogCi1zdGF0aWMgdm9pZCBjb252ZXJ0
Rm9ybWF0KEdMRVMyVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgaW50KiBnbEZvcm1h
dCwgdW5zaWduZWQgaW50KiBnbFR5cGUsIGJvb2wqIHN3aXp6bGUpCi17Ci0gICAgKnN3aXp6bGUg
PSBmYWxzZTsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR0xFUzJUZXh0dXJlOjpS
R0JBODoKLSAgICAgICAgKmdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7Ci0gICAg
ICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBHTEVTMlRleHR1cmU6OkJHUkE4OgotLy8gRklYTUU6ICBPbmNlIHdl
IGhhdmUgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucywgd2Ugc2hvdWxkIGNoZWNrIGZvciBFWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgsCi0vLyBhbmQgdXNlIHRoYXQgaWYgcHJlc2VudC4KLSAgICAg
ICAgKmdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7Ci0gICAgICAgICpnbFR5cGUg
PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTsKLSAgICAgICAgKnN3aXp6bGUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoISJiYWQg
Zm9ybWF0Iik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQogdm9pZCBHTEVTMlRleHR1cmU6
OmxvYWQodm9pZCogcGl4ZWxzKQogewogICAgIHVuc2lnbmVkIGludCBnbEZvcm1hdCwgZ2xUeXBl
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNr
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gNjUwNzkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwNiw2ICs3MDYsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEdyYXBoaWNzQ29u
CiB7CiAgICAgbV91c2VHUFUgPSB0cnVlOwogICAgIG1fZ3B1Q2FudmFzID0gbmV3IEdMRVMyQ2Fu
dmFzKGNvbnRleHQsIHNpemUpOworICAgIG1fdXBsb2FkVGV4dHVyZS5jbGVhcigpOwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBDYW52YXNMYXllckNocm9taXVtKiBsYXll
ciA9IHN0YXRpY19jYXN0PENhbnZhc0xheWVyQ2hyb21pdW0qPihjb250ZXh0LT5wbGF0Zm9ybUxh
eWVyKCkpOwogICAgIGxheWVyLT5zZXRQcmVwYXJlVGV4dHVyZUNhbGxiYWNrKFByZXBhcmVUZXh0
dXJlQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpOwpAQCAtNzkxLDEzICs3OTIsMTMgQEAgdm9p
ZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjp1cGxvYWRTb2Z0d2FyZQogewogICAgIGNvbnN0IFNrQml0
bWFwJiBiaXRtYXAgPSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7
CiAgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKGJpdG1hcCk7Ci0gICAgLy8gRklYTUU6IEtlZXAg
YSB0ZXh0dXJlIGFyb3VuZCBmb3IgdGhpcyByYXRoZXIgdGhhbiBjb25zdGFudGx5IGNyZWF0aW5n
L2Rlc3Ryb3lpbmcgb25lLgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9ncHVD
YW52YXMtPmNvbnRleHQoKTsKLSAgICBSZWZQdHI8R0xFUzJUZXh0dXJlPiB0ZXh0dXJlID0gR0xF
UzJUZXh0dXJlOjpjcmVhdGUoY29udGV4dCwgR0xFUzJUZXh0dXJlOjpCR1JBOCwgYml0bWFwLndp
ZHRoKCksIGJpdG1hcC5oZWlnaHQoKSk7Ci0gICAgdGV4dHVyZS0+bG9hZChiaXRtYXAuZ2V0UGl4
ZWxzKCkpOworICAgIGlmICghbV91cGxvYWRUZXh0dXJlIHx8IG1fdXBsb2FkVGV4dHVyZS0+d2lk
dGgoKSA8IGJpdG1hcC53aWR0aCgpIHx8IG1fdXBsb2FkVGV4dHVyZS0+aGVpZ2h0KCkgPCBiaXRt
YXAuaGVpZ2h0KCkpCisgICAgICAgIG1fdXBsb2FkVGV4dHVyZSA9IEdMRVMyVGV4dHVyZTo6Y3Jl
YXRlKGNvbnRleHQsIEdMRVMyVGV4dHVyZTo6QkdSQTgsIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAu
aGVpZ2h0KCkpOworICAgIG1fdXBsb2FkVGV4dHVyZS0+bG9hZChiaXRtYXAuZ2V0UGl4ZWxzKCkp
OwogICAgIEludFJlY3QgcmVjdCgwLCAwLCBiaXRtYXAud2lkdGgoKSwgYml0bWFwLmhlaWdodCgp
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gaWRlbnRpdHk7Ci0gICAgZ3B1Q2FudmFzKCktPmRyYXdU
ZXh0dXJlZFJlY3QodGV4dHVyZS5nZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2
aWNlQ29sb3JTcGFjZSwgb3ApOworICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0KG1f
dXBsb2FkVGV4dHVyZS5nZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2aWNlQ29s
b3JTcGFjZSwgb3ApOwogfQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnJlYWRiYWNrSGFy
ZHdhcmVUb1NvZnR3YXJlKCkgY29uc3QKQEAgLTgxMCwxMSArODExLDE2IEBAIHZvaWQgUGxhdGZv
cm1Db250ZXh0U2tpYTo6cmVhZGJhY2tIYXJkd2EKICAgICAvLyBGbGlwcyB0aGUgaW1hZ2UgdmVy
dGljYWxseS4KICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CiAgICAgICAg
IHVpbnQzMl90KiBwaXhlbHMgPSBiaXRtYXAuZ2V0QWRkcjMyKDAsIHkpOwotICAgICAgICBjb250
ZXh0LT5yZWFkUGl4ZWxzKDAsIGhlaWdodCAtIDEgLSB5LCB3aWR0aCwgMSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbHMpOwot
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyArK2kpIHsKLSAgICAgICAgICAgIHVp
bnQzMl90IHBpeGVsID0gcGl4ZWxzW2ldOwotICAgICAgICAgICAgLy8gU3dpenpsZXMgZnJvbSBS
R0JBIC0+IEJHUkEuCi0gICAgICAgICAgICBwaXhlbHNbaV0gPSBwaXhlbCAmIDB4RkYwMEZGMDAg
fCAoKHBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTYpIHwgKChwaXhlbCAmIDB4MDAwMDAwRkYpIDw8
IDE2KTsKKyAgICAgICAgLy8gRklYTUU6ICBDaGVjayBmb3IgQkdSQSBleHRlbnNpb24gc3VwcG9y
dAorICAgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgICAgIGNvbnRleHQtPnJlYWRQaXhlbHMoMCwg
aGVpZ2h0IC0gMSAtIHksIHdpZHRoLCAxLCAweDgwRTEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFLCBwaXhlbHMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PnJlYWRQaXhlbHMoMCwgaGVpZ2h0IC0gMSAtIHksIHdpZHRoLCAxLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICB1aW50MzJfdCBwaXhlbCA9IHBpeGVsc1tpXTsKKyAgICAgICAgICAgICAgICAvLyBTd2l6emxl
cyBmcm9tIFJHQkEgLT4gQkdSQS4KKyAgICAgICAgICAgICAgICBwaXhlbHNbaV0gPSBwaXhlbCAm
IDB4RkYwMEZGMDAgfCAoKHBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTYpIHwgKChwaXhlbCAmIDB4
MDAwMDAwRkYpIDw8IDE2KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuaAkocmV2aXNpb24gNjUwNzkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoR0xFUzJfUkVOREVSSU5HKQogZW51bSBD
b21wb3NpdGVPcGVyYXRvcjsKIGNsYXNzIEdMRVMyQ2FudmFzOworY2xhc3MgR0xFUzJUZXh0dXJl
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAjZW5kaWYKIApAQCAtMjQwLDYgKzI0MSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUdQVTsKICAgICBPd25QdHI8R0xFUzJDYW52YXM+IG1f
Z3B1Q2FudmFzOwogICAgIG11dGFibGUgZW51bSB7IE5vbmUsIFNvZnR3YXJlLCBNaXhlZCwgSGFy
ZHdhcmUgfSBtX2JhY2tpbmdTdG9yZVN0YXRlOworICAgIG11dGFibGUgUmVmUHRyPEdMRVMyVGV4
dHVyZT4gbV91cGxvYWRUZXh0dXJlOwogI2VuZGlmCiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64233</attachid>
            <date>2010-08-12 10:08:07 -0700</date>
            <delta_ts>2010-08-12 13:44:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43804-20100812130805.patch</filename>
            <type>text/plain</type>
            <size>8400</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTI1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDgtMTIgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0NIUk9NSVVNXSBVc2UgdGhlIEJHUkEgZm9ybWF0IGZvciBjYW52YXMgMkQgYWNjZWwg
dXBsb2FkIGFuZCByZWFkYmFja3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MzgwNAorCisgICAgICAgIFVzZSB0aGUgQkdSQSBmb3JtYXQgZnJvbSBH
cmFwaGljc0NvbnRleHQzRCwgaWYgc3VwcG9ydGVkLiAgQWxzbyBrZWVwIGEKKyAgICAgICAgdGV4
dHVyZSBhcm91bmQgZm9yIHVwbG9hZHMsIHJhdGhlciB0aGFuIHJlLWNyZWF0aW5nIGl0IGVhY2gg
dGltZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG1hbnkgbGF5b3V0IHRlc3RzIChvbmNlIHdlJ3Jl
IHJ1bm5pbmcgdGhlbSkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
TEVTMlRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEZvcm1hdCk6CisgICAg
ICAgIE1vdmUgY29udmVydEZvcm1hdCgpIGFoZWFkIG9mIHRleHR1cmUgY3JlYXRpb24sIHNvIHdl
IGNhbiBjaGVjayBmb3IKKyAgICAgICAgQkdSQSBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6
R0xFUzJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICBVc2UgY29udmVydEZvcm1hdCgpIHRvIGRl
dGVybWluZSB0aGUgY29ycmVjdCBmb3JtYXQgYW5kIHR5cGVzIHRvIHVzZTsKKyAgICAgICAgdXNl
IHRoZSByZXR1cm5lZCBmb3JtYXQgYWxzbyBmb3IgaW50ZXJuYWxGb3JtYXQsIHNpbmNlIEdMRVMy
IGluc2lzdHMKKyAgICAgICAgdGhleSBtYXRjaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBDbGVhciB0aGUg
dXBsb2FkIHRleHR1cmUgd2hlbiBhIG5ldyBjb250ZXh0IGlzIHNldC4KKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnVwbG9hZFNvZnR3YXJlVG9IYXJkd2FyZSk6CisgICAg
ICAgIFVzZSBtX3VwbG9hZFRleHR1cmUgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUgZWFj
aCB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6cmVhZGJhY2tI
YXJkd2FyZVRvU29mdHdhcmUpOgorICAgICAgICBXaGVuIHRoZSBjb250ZXh0IHN1cHBvcnRzIGl0
LCB1c2UgdGhlIEJHUkEgZm9ybWF0IGZvciByZWFkYmFja3MKKyAgICAgICAgaW5zdGVhZCBvZiBz
d2l6emxpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmg6CisgICAgICAgIEFkZCBtX3VwbG9hZFRleHR1cmUgZm9yIGNvbnNlY3V0aXZlIHVw
bG9hZHMuCisKIDIwMTAtMDgtMTIgIEh1aSBIdWFuZyAgPGh1aS4yLmh1YW5nQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dMRVMyVGV4dHVyZS5jcHAJKHJldmlzaW9u
IDY1MjUxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HTEVTMlRleHR1
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwzMCBAQCBHTEVTMlRleHR1cmU6On5H
TEVTMlRleHR1cmUoKQogICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX3RleHR1cmVJZCk7
CiB9CiAKK3N0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEdMRVMyVGV4dHVyZTo6Rm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgaW50KiBnbEZvcm1hdCwg
dW5zaWduZWQgaW50KiBnbFR5cGUsIGJvb2wqIHN3aXp6bGUpCit7CisgICAgKnN3aXp6bGUgPSBm
YWxzZTsKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR0xFUzJUZXh0dXJlOjpSR0JB
ODoKKyAgICAgICAgKmdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgICAg
ICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHTEVTMlRleHR1cmU6OkJHUkE4OgorICAgICAgICBpZiAoY29udGV4dC0+
c3VwcG9ydHNCR1JBKCkpIHsKKyAgICAgICAgICAgICpnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4
dDNEOjpCR1JBX0VYVDsKKyAgICAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpnbEZvcm1hdCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgICAgICAgICAgKmdsVHlwZSA9IEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFOworICAgICAgICAgICAgKnN3aXp6bGUgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVCgh
ImJhZCBmb3JtYXQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPEdM
RVMyVGV4dHVyZT4gR0xFUzJUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEZvcm1hdCBmb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpbnQgbWF4
OwpAQCAtNjcsMzggKzkxLDIwIEBAIFBhc3NSZWZQdHI8R0xFUzJUZXh0dXJlPiBHTEVTMlRleHR1
cmU6OmMKICAgICBpZiAoIXRleHR1cmVJZCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICB1bnNp
Z25lZCBpbnQgZ2xGb3JtYXQsIGdsVHlwZTsKKyAgICBib29sIHN3aXp6bGU7CisgICAgY29udmVy
dEZvcm1hdChjb250ZXh0LCBmb3JtYXQsICZnbEZvcm1hdCwgJmdsVHlwZSwgJnN3aXp6bGUpOwog
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlSWQpOwotICAgIGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUs
IDApOworICAgIGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDAsIGdsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBnbEZvcm1hdCwgZ2xUeXBlLCAwKTsK
IAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR0xFUzJUZXh0dXJlKGNvbnRleHQsIHRleHR1cmVJ
ZCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZlcnRGb3Jt
YXQoR0xFUzJUZXh0dXJlOjpGb3JtYXQgZm9ybWF0LCB1bnNpZ25lZCBpbnQqIGdsRm9ybWF0LCB1
bnNpZ25lZCBpbnQqIGdsVHlwZSwgYm9vbCogc3dpenpsZSkKLXsKLSAgICAqc3dpenpsZSA9IGZh
bHNlOwotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHTEVTMlRleHR1cmU6OlJHQkE4
OgotICAgICAgICAqZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLSAgICAgICAg
KmdsVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEdMRVMyVGV4dHVyZTo6QkdSQTg6Ci0vLyBGSVhNRTogIE9uY2Ugd2UgaGF2
ZSBzdXBwb3J0IGZvciBleHRlbnNpb25zLCB3ZSBzaG91bGQgY2hlY2sgZm9yIEVYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OCwKLS8vIGFuZCB1c2UgdGhhdCBpZiBwcmVzZW50LgotICAgICAgICAq
Z2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLSAgICAgICAgKmdsVHlwZSA9IEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOwotICAgICAgICAqc3dpenpsZSA9IHRydWU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVCghImJhZCBmb3Jt
YXQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCiB2b2lkIEdMRVMyVGV4dHVyZTo6bG9h
ZCh2b2lkKiBwaXhlbHMpCiB7CiAgICAgdW5zaWduZWQgaW50IGdsRm9ybWF0LCBnbFR5cGU7CiAg
ICAgYm9vbCBzd2l6emxlOwotICAgIGNvbnZlcnRGb3JtYXQobV9mb3JtYXQsICZnbEZvcm1hdCwg
JmdsVHlwZSwgJnN3aXp6bGUpOworICAgIGNvbnZlcnRGb3JtYXQobV9jb250ZXh0LCBtX2Zvcm1h
dCwgJmdsRm9ybWF0LCAmZ2xUeXBlLCAmc3dpenpsZSk7CiAgICAgbV9jb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogICAgIGlm
IChzd2l6emxlKSB7CiAgICAgICAgIEFTU0VSVChnbEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSAmJiBnbFR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gNjUyNTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
Niw2ICs3MDYsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEdyYXBoaWNzQ29uCiB7
CiAgICAgbV91c2VHUFUgPSB0cnVlOwogICAgIG1fZ3B1Q2FudmFzID0gbmV3IEdMRVMyQ2FudmFz
KGNvbnRleHQsIHNpemUpOworICAgIG1fdXBsb2FkVGV4dHVyZS5jbGVhcigpOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBDYW52YXNMYXllckNocm9taXVtKiBsYXllciA9
IHN0YXRpY19jYXN0PENhbnZhc0xheWVyQ2hyb21pdW0qPihjb250ZXh0LT5wbGF0Zm9ybUxheWVy
KCkpOwogICAgIGxheWVyLT5zZXRQcmVwYXJlVGV4dHVyZUNhbGxiYWNrKFByZXBhcmVUZXh0dXJl
Q2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpOwpAQCAtNzkxLDEzICs3OTIsMTMgQEAgdm9pZCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjp1cGxvYWRTb2Z0d2FyZQogewogICAgIGNvbnN0IFNrQml0bWFw
JiBiaXRtYXAgPSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7CiAg
ICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKGJpdG1hcCk7Ci0gICAgLy8gRklYTUU6IEtlZXAgYSB0
ZXh0dXJlIGFyb3VuZCBmb3IgdGhpcyByYXRoZXIgdGhhbiBjb25zdGFudGx5IGNyZWF0aW5nL2Rl
c3Ryb3lpbmcgb25lLgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9ncHVDYW52
YXMtPmNvbnRleHQoKTsKLSAgICBSZWZQdHI8R0xFUzJUZXh0dXJlPiB0ZXh0dXJlID0gR0xFUzJU
ZXh0dXJlOjpjcmVhdGUoY29udGV4dCwgR0xFUzJUZXh0dXJlOjpCR1JBOCwgYml0bWFwLndpZHRo
KCksIGJpdG1hcC5oZWlnaHQoKSk7Ci0gICAgdGV4dHVyZS0+bG9hZChiaXRtYXAuZ2V0UGl4ZWxz
KCkpOworICAgIGlmICghbV91cGxvYWRUZXh0dXJlIHx8IG1fdXBsb2FkVGV4dHVyZS0+d2lkdGgo
KSA8IGJpdG1hcC53aWR0aCgpIHx8IG1fdXBsb2FkVGV4dHVyZS0+aGVpZ2h0KCkgPCBiaXRtYXAu
aGVpZ2h0KCkpCisgICAgICAgIG1fdXBsb2FkVGV4dHVyZSA9IEdMRVMyVGV4dHVyZTo6Y3JlYXRl
KGNvbnRleHQsIEdMRVMyVGV4dHVyZTo6QkdSQTgsIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVp
Z2h0KCkpOworICAgIG1fdXBsb2FkVGV4dHVyZS0+bG9hZChiaXRtYXAuZ2V0UGl4ZWxzKCkpOwog
ICAgIEludFJlY3QgcmVjdCgwLCAwLCBiaXRtYXAud2lkdGgoKSwgYml0bWFwLmhlaWdodCgpKTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gaWRlbnRpdHk7Ci0gICAgZ3B1Q2FudmFzKCktPmRyYXdUZXh0
dXJlZFJlY3QodGV4dHVyZS5nZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2aWNl
Q29sb3JTcGFjZSwgb3ApOworICAgIGdwdUNhbnZhcygpLT5kcmF3VGV4dHVyZWRSZWN0KG1fdXBs
b2FkVGV4dHVyZS5nZXQoKSwgcmVjdCwgcmVjdCwgaWRlbnRpdHksIDEuMCwgRGV2aWNlQ29sb3JT
cGFjZSwgb3ApOwogfQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnJlYWRiYWNrSGFyZHdh
cmVUb1NvZnR3YXJlKCkgY29uc3QKQEAgLTgxMCwxMSArODExLDE1IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0U2tpYTo6cmVhZGJhY2tIYXJkd2EKICAgICAvLyBGbGlwcyB0aGUgaW1hZ2UgdmVydGlj
YWxseS4KICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CiAgICAgICAgIHVp
bnQzMl90KiBwaXhlbHMgPSBiaXRtYXAuZ2V0QWRkcjMyKDAsIHkpOwotICAgICAgICBjb250ZXh0
LT5yZWFkUGl4ZWxzKDAsIGhlaWdodCAtIDEgLSB5LCB3aWR0aCwgMSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbHMpOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyArK2kpIHsKLSAgICAgICAgICAgIHVpbnQz
Ml90IHBpeGVsID0gcGl4ZWxzW2ldOwotICAgICAgICAgICAgLy8gU3dpenpsZXMgZnJvbSBSR0JB
IC0+IEJHUkEuCi0gICAgICAgICAgICBwaXhlbHNbaV0gPSBwaXhlbCAmIDB4RkYwMEZGMDAgfCAo
KHBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTYpIHwgKChwaXhlbCAmIDB4MDAwMDAwRkYpIDw8IDE2
KTsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzQkdSQSgpKQorICAgICAgICAgICAgY29u
dGV4dC0+cmVhZFBpeGVscygwLCBoZWlnaHQgLSAxIC0geSwgd2lkdGgsIDEsIEdyYXBoaWNzQ29u
dGV4dDNEOjpCR1JBX0VYVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVs
cyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29udGV4dC0+cmVhZFBpeGVscygwLCBo
ZWlnaHQgLSAxIC0geSwgd2lkdGgsIDEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgd2lkdGg7ICsraSkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHBpeGVs
ID0gcGl4ZWxzW2ldOworICAgICAgICAgICAgICAgIC8vIFN3aXp6bGVzIGZyb20gUkdCQSAtPiBC
R1JBLgorICAgICAgICAgICAgICAgIHBpeGVsc1tpXSA9IHBpeGVsICYgMHhGRjAwRkYwMCB8ICgo
cGl4ZWwgJiAweDAwRkYwMDAwKSA+PiAxNikgfCAoKHBpeGVsICYgMHgwMDAwMDBGRikgPDwgMTYp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCShyZXZp
c2lvbiA2NTI1MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIFVTRShHTEVTMl9SRU5ERVJJTkcpCiBlbnVtIENvbXBvc2l0ZU9wZXJhdG9y
OwogY2xhc3MgR0xFUzJDYW52YXM7CitjbGFzcyBHTEVTMlRleHR1cmU7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKICNlbmRpZgogCkBAIC0yNDAsNiArMjQxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fdXNlR1BVOwogICAgIE93blB0cjxHTEVTMkNhbnZhcz4gbV9ncHVDYW52YXM7CiAgICAg
bXV0YWJsZSBlbnVtIHsgTm9uZSwgU29mdHdhcmUsIE1peGVkLCBIYXJkd2FyZSB9IG1fYmFja2lu
Z1N0b3JlU3RhdGU7CisgICAgbXV0YWJsZSBSZWZQdHI8R0xFUzJUZXh0dXJlPiBtX3VwbG9hZFRl
eHR1cmU7CiAjZW5kaWYKIH07CiAK
</data>
<flag name="review"
          id="52756"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>