<?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>48738</bug_id>
          
          <creation_ts>2010-10-31 14:00:31 -0700</creation_ts>
          <short_desc>GraphicsContext: Don&apos;t do full save/restore when painting with low quality scaling</short_desc>
          <delta_ts>2010-11-04 08:48: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>Layout and Rendering</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>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302487</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-31 14:00:31 -0700</bug_when>
    <thetext>When &quot;useLowQualityScale&quot; is true, GraphicsContext will currently save() and restore() in drawImage(), drawTiledImage() and drawImageBuffer().
This is unnecessary, we can just remember the current imageInterpolationQuality() and reset it after drawing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302488</commentid>
    <comment_count>1</comment_count>
      <attachid>72477</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-31 14:08:48 -0700</bug_when>
    <thetext>Created attachment 72477
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302489</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-31 14:11:18 -0700</bug_when>
    <thetext>Attachment 72477 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/GraphicsContext.cpp:406:  More than one command on the same line  [whitespace/newline] [4]
WebCore/platform/graphics/GraphicsContext.cpp:418:  More than one command on the same line  [whitespace/newline] [4]
WebCore/platform/graphics/GraphicsContext.cpp:431:  More than one command on the same line  [whitespace/newline] [4]
WebCore/platform/graphics/GraphicsContext.cpp:483:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302495</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-31 15:09:03 -0700</bug_when>
    <thetext>Attachment 72477 did not build on chromium:
Build output: http://queues.webkit.org/results/4877050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302602</commentid>
    <comment_count>4</comment_count>
      <attachid>72477</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-01 05:16:39 -0700</bug_when>
    <thetext>Comment on attachment 72477
Proposed patch

This&apos;ll need some cleaning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302624</commentid>
    <comment_count>5</comment_count>
      <attachid>72500</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-01 06:13:50 -0700</bug_when>
    <thetext>Created attachment 72500
Proposed patch v2

Add missing GraphicsContext::imageInterpolationQuality() implementations to Skia, Haiku and WinCE.
Also avoid the call to imageInterpolationQuality() if !useLowQualityScale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304615</commentid>
    <comment_count>6</comment_count>
      <attachid>72500</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-04 06:00:30 -0700</bug_when>
    <thetext>Comment on attachment 72500
Proposed patch v2

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

&gt; WebCore/platform/graphics/GraphicsContext.cpp:415
&gt; +    InterpolationQuality previousInterpolationQuality = InterpolationDefault;
&gt;      if (useLowQualityScale) {
&gt; -        save();
&gt; +        previousInterpolationQuality = imageInterpolationQuality();
&gt;          setImageInterpolationQuality(InterpolationNone);
&gt;      }
&gt; +
&gt;      image-&gt;draw(this, FloatRect(dest.location(), FloatSize(tw, th)), FloatRect(src.location(), FloatSize(tsw, tsh)), styleColorSpace, op);
&gt; +
&gt;      if (useLowQualityScale)
&gt; -        restore();
&gt; +        setImageInterpolationQuality(previousInterpolationQuality);

Hm, I think we could do better, and avoid the temporary variable, if !useLowQualityScale is used:
if (useLowQualityScale) {
    InterpolationQuality previousInterpolationQuality = imageInterpolationQuality();
    setImageInterpolationQuality(InterpolationLow); // NOTE: The InterpolationNone looks wrong to me.
    image-&gt;draw(this, FloatRect(dest.location(), FloatSize(tw, th)), FloatRect(src.location(), FloatSize(tsw, tsh)), styleColorSpace, op);
    setImageInterpolationQuality(previousInterpolationQuality);
} else
    image-&gt;draw(this, FloatRect(dest.location(), FloatSize(tw, th)), FloatRect(src.location(), FloatSize(tsw, tsh)), styleColorSpace, op);

etc.
What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304635</commentid>
    <comment_count>7</comment_count>
      <attachid>72938</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-04 07:18:13 -0700</bug_when>
    <thetext>Created attachment 72938
Proposed patch v3

Updated wrt Niko&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304651</commentid>
    <comment_count>8</comment_count>
      <attachid>72938</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-04 07:46:49 -0700</bug_when>
    <thetext>Comment on attachment 72938
Proposed patch v3

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

&gt; WebCore/platform/graphics/GraphicsContext.cpp:408
&gt;          setImageInterpolationQuality(InterpolationNone);

Please add a FIXME here, that None is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304685</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-04 08:48:33 -0700</bug_when>
    <thetext>Committed r71337: &lt;http://trac.webkit.org/changeset/71337&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72477</attachid>
            <date>2010-10-31 14:08:48 -0700</date>
            <delta_ts>2010-11-01 06:13:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-48738.diff</filename>
            <type>text/plain</type>
            <size>4272</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTIyZTMzNy4uYjMxODRhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMC0xMC0zMSAgQW5kcmVhcyBLbGlu
ZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OiBEb24ndCBkbyBmdWxsIHNhdmUvcmVzdG9y
ZSB3aGVuIHBhaW50aW5nIHdpdGggbG93IHF1YWxpdHkgc2NhbGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MzgKKworICAgICAgICBTdGFzaCB0
aGUgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGluIGEgbG9jYWwgYW5kIHJlc2V0IGl0IGFm
dGVyIHBhaW50aW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhbiBvcHRpbWl6
YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisKKzIwMTAtMTAtMzEg
IEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IERpcmsgU2NodWx6ZS4KIAogICAgICAgICBSZW1vdmUgdGhlIHVudXNlZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXRFbGxpcHNlSW5SZWN0KEludFJlY3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYjJlZDhiNS4uN2U0NDBiNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDAzLDI2
ICs0MDMsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdAogICAgIGlmICh0aCA9PSAtMSkKICAg
ICAgICAgdGggPSBpbWFnZS0+aGVpZ2h0KCk7CiAKLSAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxl
KSB7Ci0gICAgICAgIHNhdmUoKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBwcmV2aW91c0lu
dGVycG9sYXRpb25RdWFsaXR5ID0gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOzsKKyAgICBp
ZiAodXNlTG93UXVhbGl0eVNjYWxlKQogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICB9CiAgICAgaW1hZ2UtPmRyYXcodGhpcywgRmxv
YXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3Jj
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsK
ICAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQotICAgICAgICByZXN0b3JlKCk7CisgICAgICAg
IHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1h
Z2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAodXNlTG93UXVh
bGl0eVNjYWxlKSB7Ci0gICAgICAgIHNhdmUoKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBw
cmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5ID0gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgp
OzsKKyAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQogICAgICAgICBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwotICAgIH0KICAgICBpbWFnZS0+ZHJhd1Rp
bGVkKHRoaXMsIHJlY3QsIHNyY1BvaW50LCB0aWxlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7
CiAgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkKLSAgICAgICAgcmVzdG9yZSgpOworICAgICAg
ICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxp
dHkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
QEAgLTQzMCwxNyArNDI4LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFn
ZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh1
c2VMb3dRdWFsaXR5U2NhbGUpIHsKLSAgICAgICAgc2F2ZSgpOworICAgIEludGVycG9sYXRpb25R
dWFsaXR5IHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCk7OworICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCiAgICAgICAgIHNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7Ci0gICAgfQogICAgIGlmICho
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxl
KQogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCiAgICAgICAgIGRyYXdJbWFnZShpbWFnZSwg
c3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmNSZWN0LCBvcCk7CiAgICAgZWxzZQogICAgICAgICBp
bWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3QsIGhSdWxlLCB2UnVsZSwgc3R5bGVD
b2xvclNwYWNlLCBvcCk7CiAgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkKLSAgICAgICAgcmVz
dG9yZSgpOworICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50
ZXJwb2xhdGlvblF1YWxpdHkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTQ4MywxNSArNDgwLDE0
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTCiAgICAgaWYgKHRoID09IC0xKQogICAgICAgICB0
aCA9IGltYWdlLT5oZWlnaHQoKTsKIAotICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpIHsKLSAg
ICAgICAgc2F2ZSgpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5IHByZXZpb3VzSW50ZXJwb2xh
dGlvblF1YWxpdHkgPSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCk7OworICAgIGlmICh1c2VM
b3dRdWFsaXR5U2NhbGUpCiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvbk5vbmUpOwotICAgIH0KIAogICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29s
b3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIAogICAgIGlmICh1
c2VMb3dRdWFsaXR5U2NhbGUpCi0gICAgICAgIHJlc3RvcmUoKTsKKyAgICAgICAgc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72500</attachid>
            <date>2010-11-01 06:13:50 -0700</date>
            <delta_ts>2010-11-04 07:18:13 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-48738-v2.diff</filename>
            <type>text/plain</type>
            <size>6709</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZiNDk5NC4uMGI4NTc5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0xMS0wMSAgQW5kcmVhcyBLbGlu
ZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OiBEb24ndCBkbyBmdWxsIHNhdmUvcmVzdG9y
ZSB3aGVuIHBhaW50aW5nIHdpdGggbG93IHF1YWxpdHkgc2NhbGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MzgKKworICAgICAgICBTdGFzaCB0
aGUgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGluIGEgbG9jYWwgYW5kIHJlc2V0IGl0IGFm
dGVyIHBhaW50aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkp
OiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGlj
c0NvbnRleHRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOiBBZGRlZCBzdHViLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6IEFkZGVkIHN0
dWIuCisKIDIwMTAtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm90IHJldmlld2VkOiBzaW1wbGlmeSBpbnNwZWN0b3Igc3R5bGVzIHRlc3Qg
dG8gbWFrZSBhbGwgYm90cyBoYXBweS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCBiMmVkOGI1Li4wYmY5OGY2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00MDMsMjYgKzQwMywzMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0CiAgICAgaWYgKHRoID09IC0xKQogICAgICAgICB0aCA9
IGltYWdlLT5oZWlnaHQoKTsKIAorICAgIEludGVycG9sYXRpb25RdWFsaXR5IHByZXZpb3VzSW50
ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKICAgICBpZiAodXNlTG93
UXVhbGl0eVNjYWxlKSB7Ci0gICAgICAgIHNhdmUoKTsKKyAgICAgICAgcHJldmlvdXNJbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICAgICAgc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CiAgICAgfQorCiAg
ICAgaW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXpl
KHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkp
LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKwogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCi0g
ICAgICAgIHJlc3RvcmUoKTsKKyAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShw
cmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQb2ludCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAg
cmV0dXJuOworCisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgcHJldmlvdXNJbnRlcnBvbGF0aW9u
UXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0OwogICAgIGlmICh1c2VMb3dRdWFsaXR5U2Nh
bGUpIHsKLSAgICAgICAgc2F2ZSgpOworICAgICAgICBwcmV2aW91c0ludGVycG9sYXRpb25RdWFs
aXR5ID0gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOwogICAgICAgICBzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgIH0KKwogICAgIGltYWdlLT5k
cmF3VGlsZWQodGhpcywgcmVjdCwgc3JjUG9pbnQsIHRpbGVTaXplLCBzdHlsZUNvbG9yU3BhY2Us
IG9wKTsKKwogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCi0gICAgICAgIHJlc3RvcmUoKTsK
KyAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRp
b25RdWFsaXR5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRl
c3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6
OlRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUpCkBAIC00MzAsMTcgKzQzNywyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgYwogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5ID0gSW50
ZXJwb2xhdGlvbkRlZmF1bHQ7CiAgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkgewotICAgICAg
ICBzYXZlKCk7CisgICAgICAgIHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCk7CiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgfQorCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpT
dHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpCiAgICAgICAgIC8vIEp1
c3QgZG8gYSBzY2FsZS4KICAgICAgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IGRlc3QsIHNyY1JlY3QsIG9wKTsKICAgICBlbHNlCiAgICAgICAgIGltYWdlLT5kcmF3VGlsZWQo
dGhpcywgZGVzdCwgc3JjUmVjdCwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsK
KwogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCi0gICAgICAgIHJlc3RvcmUoKTsKKyAgICAg
ICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFs
aXR5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
cCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCkBAIC00ODMsMTUgKzQ5MywxNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yUwogICAgIGlmICh0aCA9PSAtMSkKICAgICAgICAgdGggPSBpbWFnZS0+aGVp
Z2h0KCk7CiAKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBwcmV2aW91c0ludGVycG9sYXRpb25R
dWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7CiAgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2Fs
ZSkgewotICAgICAgICBzYXZlKCk7CisgICAgICAgIHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxp
dHkgPSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCk7CiAgICAgICAgIHNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwogICAgIH0KIAogICAgIGltYWdlLT5k
cmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKIAogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCi0gICAgICAgIHJlc3RvcmUoKTsK
KyAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRp
b25RdWFsaXR5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xp
cChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRT
aXplJiB0b3BSaWdodCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFp
a3UvR3JhcGhpY3NDb250ZXh0SGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YWlrdS9HcmFwaGljc0NvbnRleHRIYWlrdS5jcHAKaW5kZXggMjRlOTI2Zi4uNjkxMWIzMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0NvbnRleHRI
YWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0Nv
bnRleHRIYWlrdS5jcHAKQEAgLTQ2OCw2ICs0NjgsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiB9
CiAKK0ludGVycG9sYXRpb25RdWFsaXR5IEdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
SW50ZXJwb2xhdGlvbkRlZmF1bHQ7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxG
b3JSZWN0KGNvbnN0IEtVUkwmIGxpbmssIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggNGJkNDQ5Mi4uZTUwNmU1ZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHRTa2lhLmNwcApAQCAtOTMyLDYgKzkzMiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zZXRYZmVybW9kZU1vZGUoV2ViQ29yZUNvbXBvc2l0ZVRvU2tpYUNvbXBvc2l0ZShv
cCkpOwogfQogCitJbnRlcnBvbGF0aW9uUXVhbGl0eSBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybUNvbnRleHQo
KS0+aW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgcSkKIHsKICAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0SW50ZXJwb2xhdGlvblF1YWxpdHkocSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNF
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCmluZGV4IDg1MTkyZTUuLjVhNmRmY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC0xNTI0
LDYgKzE1MjQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3co
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK0ludGVycG9sYXRpb25RdWFsaXR5IEdyYXBo
aWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7Cit9CisKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9s
YXRpb25RdWFsaXR5KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72938</attachid>
            <date>2010-11-04 07:18:13 -0700</date>
            <delta_ts>2010-11-04 07:46:49 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-48738-v3.diff</filename>
            <type>text/plain</type>
            <size>7275</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWYzMWE5My4uMDkxMDM3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0xMS0wNCAgQW5kcmVhcyBLbGlu
ZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OiBEb24ndCBkbyBmdWxsIHNhdmUvcmVzdG9y
ZSB3aGVuIHBhaW50aW5nIHdpdGggbG93IHF1YWxpdHkgc2NhbGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MzgKKworICAgICAgICBTdGFzaCB0
aGUgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGluIGEgbG9jYWwgYW5kIHJlc2V0IGl0IGFm
dGVyIHBhaW50aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0dyYXBoaWNzQ29udGV4dEhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3ND
b250ZXh0V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjppbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KToKKwogMjAxMC0xMS0wNCAgTmlrb2xhcyBaaW1tZXJtYW5u
ICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmlu
ZGV4IGIyZWQ4YjUuLmQ2NWYwOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKQEAgLTQwNCwyNSArNDA0LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Y29uc3QKICAgICAgICAgdGggPSBpbWFnZS0+aGVpZ2h0KCk7CiAKICAgICBpZiAodXNlTG93UXVh
bGl0eVNjYWxlKSB7Ci0gICAgICAgIHNhdmUoKTsKKyAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgcHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKTsKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
Tm9uZSk7Ci0gICAgfQotICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0
aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9h
dFNpemUodHN3LCB0c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Ci0gICAgaWYgKHVzZUxvd1F1
YWxpdHlTY2FsZSkKLSAgICAgICAgcmVzdG9yZSgpOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlz
LCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVj
dChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwg
b3ApOworICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJw
b2xhdGlvblF1YWxpdHkpOworICAgIH0gZWxzZQorICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBG
bG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChz
cmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3Ap
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CisKICAgICBpZiAodXNlTG93UXVh
bGl0eVNjYWxlKSB7Ci0gICAgICAgIHNhdmUoKTsKKyAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgcHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKTsKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
TG93KTsKLSAgICB9Ci0gICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCByZWN0LCBzcmNQb2ludCwg
dGlsZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwotICAgIGlmICh1c2VMb3dRdWFsaXR5U2Nh
bGUpCi0gICAgICAgIHJlc3RvcmUoKTsKKyAgICAgICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCBy
ZWN0LCBzcmNQb2ludCwgdGlsZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBz
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkp
OworICAgIH0gZWxzZQorICAgICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIHJlY3QsIHNyY1Bv
aW50LCB0aWxlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQpAQCAtNDMwLDE3ICs0MzEsMTkgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGMKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkgewotICAg
ICAgICBzYXZlKCk7Ci0gICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvbkxvdyk7Ci0gICAgfQotICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUg
JiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKQorICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6
U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAgICAgICAgIC8v
IEp1c3QgZG8gYSBzY2FsZS4KICAgICAgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3Bh
Y2UsIGRlc3QsIHNyY1JlY3QsIG9wKTsKLSAgICBlbHNlCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKSB7CisgICAgICAgIEludGVycG9sYXRpb25R
dWFsaXR5IHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCk7CisgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xh
dGlvbkxvdyk7CisgICAgICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVjdCwg
aFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICB9IGVs
c2UKICAgICAgICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwg
dlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwotICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUp
Ci0gICAgICAgIHJlc3RvcmUoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCkBAIC00ODQsMTQgKzQ4Nywx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yUwogICAgICAgICB0aCA9IGltYWdlLT5oZWlnaHQo
KTsKIAogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpIHsKLSAgICAgICAgc2F2ZSgpOworICAg
ICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5ID0g
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICB9Ci0KLSAgICBpbWFnZS0+ZHJhdyh0
aGlzLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7
Ci0KLSAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQotICAgICAgICByZXN0b3JlKCk7CisgICAg
ICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCwgdXNl
TG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShw
cmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICB9IGVsc2UKKyAgICAgICAgaW1hZ2Ut
PmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wLCB1c2VMb3dRdWFsaXR5
U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUm91bmRlZFJlY3RDbGlwKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQsIGNvbnN0IEludFNpemUm
IHRvcFJpZ2h0LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9H
cmFwaGljc0NvbnRleHRIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1
L0dyYXBoaWNzQ29udGV4dEhhaWt1LmNwcAppbmRleCAyNGU5MjZmLi42OTExYjMxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0dyYXBoaWNzQ29udGV4dEhhaWt1
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0dyYXBoaWNzQ29udGV4
dEhhaWt1LmNwcApAQCAtNDY4LDYgKzQ2OCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSkKIHsKIH0KIAor
SW50ZXJwb2xhdGlvblF1YWxpdHkgR3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBJbnRl
cnBvbGF0aW9uRGVmYXVsdDsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJl
Y3QoY29uc3QgS1VSTCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCA0YmQ0NDkyLi5lNTA2ZTVkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwCkBAIC05MzIsNiArOTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiAgICAgcGxhdGZvcm1Db250ZXh0
KCktPnNldFhmZXJtb2RlTW9kZShXZWJDb3JlQ29tcG9zaXRlVG9Ta2lhQ29tcG9zaXRlKG9wKSk7
CiB9CiAKK0ludGVycG9sYXRpb25RdWFsaXR5IEdyYXBoaWNzQ29udGV4dDo6aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ29udGV4dCgpLT5p
bnRlcnBvbGF0aW9uUXVhbGl0eSgpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBxKQogewogICAgIHBs
YXRmb3JtQ29udGV4dCgpLT5zZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShxKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5j
cHAKaW5kZXggNDlhMDBlZi4uOGFmNmVmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKQEAgLTE1MjIsNiAr
MTUyMiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorSW50ZXJwb2xhdGlvblF1YWxpdHkgR3JhcGhpY3ND
b250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKK30KKwogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlv
blF1YWxpdHkpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
</data>
<flag name="review"
          id="63281"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>