<?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>57269</bug_id>
          
          <creation_ts>2011-03-28 14:37:48 -0700</creation_ts>
          <short_desc>REGRESSION (r82151): Every WKView paint now makes an extra copy of the painted bits</short_desc>
          <delta_ts>2011-05-04 09:58:45 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>sfalken</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>374788</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 14:37:48 -0700</bug_when>
    <thetext>r82151 changed ShareableBitmap::paint to use CGBitmapContextCreateImage in its implementation, rather than creating an image using a custom data provider. On Mac, CGBitmapContextCreateImage uses a copy-on-write implementation, but on Windows it just copies the data. This means that we&apos;re now making an extra copy of every pixel that we paint into a WKView.

This is likely a performance regression, though that has not been confirmed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374789</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 14:38:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/9198788&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381331</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-07 07:45:24 -0700</bug_when>
    <thetext>It has now been confirmed that r82151 is a performance regression. Once upon a time we had a policy of rolling out performance regressions. I guess that&apos;s no longer the policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381363</commentid>
    <comment_count>3</comment_count>
      <attachid>88643</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-07 08:31:13 -0700</bug_when>
    <thetext>Created attachment 88643
Patch for performance testing

Here&apos;s a patch that should get rid of the extra copy. I haven&apos;t performance tested it, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381454</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Falkenburg">sfalken</who>
    <bug_when>2011-04-07 10:20:53 -0700</bug_when>
    <thetext>This patch is a 5% speed-up on iBench HTML cached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381740</commentid>
    <comment_count>5</comment_count>
      <attachid>88643</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-07 14:52:08 -0700</bug_when>
    <thetext>Comment on attachment 88643
Patch for performance testing

I don&apos;t think this patch is safe. If someone modifies the ShareableBitmap after the CGImageRef has been made but before the newMapping has been written into, the newMapping will see the modifications. This is exactly what we&apos;re trying to avoid. (And since newMapping should never be written into, we&apos;re basically never safe.)

This is just how copy-on-write views work in Windows. If I have two views of the same mapping, A and B, and A has FILE_MAP_WRITE and B has FILE_MAP_COPY, B will see writes to A until B is written into. From then on B will be operating on its own copy that is insulated from A.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396665</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-02 14:27:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 88643 [details])
&gt; I don&apos;t think this patch is safe. If someone modifies the ShareableBitmap after the CGImageRef has been made but before the newMapping has been written into, the newMapping will see the modifications. This is exactly what we&apos;re trying to avoid. (And since newMapping should never be written into, we&apos;re basically never safe.)
&gt; 
&gt; This is just how copy-on-write views work in Windows. If I have two views of the same mapping, A and B, and A has FILE_MAP_WRITE and B has FILE_MAP_COPY, B will see writes to A until B is written into. From then on B will be operating on its own copy that is insulated from A.

I guess we could use A for the CGImageRef and use B for the ShareableBitmap from then on. The CGImageRef can&apos;t be written to, so that should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397941</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-04 08:43:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 88643 [details] [details])
&gt; &gt; I don&apos;t think this patch is safe. If someone modifies the ShareableBitmap after the CGImageRef has been made but before the newMapping has been written into, the newMapping will see the modifications. This is exactly what we&apos;re trying to avoid. (And since newMapping should never be written into, we&apos;re basically never safe.)
&gt; &gt; 
&gt; &gt; This is just how copy-on-write views work in Windows. If I have two views of the same mapping, A and B, and A has FILE_MAP_WRITE and B has FILE_MAP_COPY, B will see writes to A until B is written into. From then on B will be operating on its own copy that is insulated from A.
&gt; 
&gt; I guess we could use A for the CGImageRef and use B for the ShareableBitmap from then on. The CGImageRef can&apos;t be written to, so that should work.

Trying this out now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397995</commentid>
    <comment_count>8</comment_count>
      <attachid>92261</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-04 09:51:28 -0700</bug_when>
    <thetext>Created attachment 92261
Make ShareableBitmap::makeCGImageCopy use a copy-on-write copy on Windows when possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398009</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-04 09:58:45 -0700</bug_when>
    <thetext>Committed r85754: &lt;http://trac.webkit.org/changeset/85754&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88643</attachid>
            <date>2011-04-07 08:31:13 -0700</date>
            <delta_ts>2011-05-04 09:51:22 -0700</delta_ts>
            <desc>Patch for performance testing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6056</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZjU3NTY2NS4uMWE1ZDVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTkzLDYgKzkzLDEw
IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQog
ICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorI2lmIFBMQVRGT1JN
KFdJTikKKyAgICBIQU5ETEUgbmF0aXZlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGU7
IH0KKyNlbmRpZgorCiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVz
LgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggZmU3ZmEwYS4uMTU0YWIyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtMTE0LDYgKzExNCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHNpemVfdCBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkgeyByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7IH0K
IAogI2lmIFBMQVRGT1JNKENHKQorICAgIHN0YXRpYyBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyhG
bGFncyk7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5
cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbGVzc0RhdGEpOwogICAgIHN0YXRpYyB2b2lkIHJlbGVh
c2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lkKiB0eXBl
bGVzc0RhdGEsIHNpemVfdCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDZiY2MxMDguLjFmYTg4ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMzQsMTAgKzM0
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
c3RhdGljIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxh
Z3MpCitDR0JpdG1hcEluZm8gU2hhcmVhYmxlQml0bWFwOjpiaXRtYXBJbmZvKEZsYWdzIGZsYWdz
KQogewogICAgIENHQml0bWFwSW5mbyBpbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0Owot
ICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKKyAgICBpZiAo
ZmxhZ3MgJiBTdXBwb3J0c0FscGhhKQogICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3Q7CiAgICAgZWxzZQogICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0OwpAQCAtNjcsMTIgKzY3LDE0IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpw
YWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBk
CiAgICAgcGFpbnRJbWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBtYWtlQ0dJbWFnZUNv
cHkoKS5nZXQoKSwgZHN0UG9pbnQsIHNyY1JlY3QpOwogfQogCisjaWYgIVBMQVRGT1JNKFdJTikK
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgp
CiB7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gY3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0
Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKICAgICByZXR1cm4gaW1hZ2U7CiB9CisjZW5kaWYKIAogUmV0YWluUHRyPENH
SW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2UoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2NnL3dpbi9TaGFyZWFibGVCaXRtYXBDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvd2luL1NoYXJlYWJsZUJpdG1hcENHV2luLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOThjYjUyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL3dpbi9TaGFyZWFibGVCaXRtYXBDR1dpbi5jcHAK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgIkNHVXRpbGl0aWVz
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIHZvaWQgdW5tYXBWaWV3KHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCit7
CisgICAgOjpVbm1hcFZpZXdPZkZpbGUoZGF0YSk7Cit9CisKK1JldGFpblB0cjxDR0ltYWdlUmVm
PiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCit7CisgICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXI7CisgICAgaWYgKGlzQmFja2VkQnlTaGFyZWRN
ZW1vcnkoKSkgeworICAgICAgICBpZiAodm9pZCogbmV3TWFwcGluZyA9IDo6TWFwVmlld09mRmls
ZShtX3NoYXJlZE1lbW9yeS0+bmF0aXZlSGFuZGxlKCksIEZJTEVfTUFQX0NPUFksIDAsIDAsIHNp
emVJbkJ5dGVzKCkpKQorICAgICAgICAgICAgZGF0YVByb3ZpZGVyLmFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBuZXdNYXBwaW5nLCBzaXplSW5CeXRlcygpLCB1bm1hcFZp
ZXcpKTsKKyAgICB9CisgICAgaWYgKCFkYXRhUHJvdmlkZXIpIHsKKyAgICAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gY2ZEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZSgwLCBzdGF0aWNfY2FzdDxV
SW50OCo+KGRhdGEoKSksIHNpemVJbkJ5dGVzKCkpKTsKKyAgICAgICAgZGF0YVByb3ZpZGVyLmFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGNmRGF0YS5nZXQoKSkpOworICAg
IH0KKyAgICBBU1NFUlQoZGF0YVByb3ZpZGVyKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsK
KyAgICByZXR1cm4gUmV0YWluUHRyPENHSW1hZ2VSZWY+KEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGUo
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fc2l6ZS53aWR0aCgpICog
NCwgY29sb3JTcGFjZS5nZXQoKSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZj
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCBiMzE5NThmLi45
ZjU4NGE4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKKysr
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC0xMzEzLDYgKzEzMTMsMzAg
QEAKIAkJCQkJCS8+CiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgorCQkJ
CTxGaWx0ZXIKKwkJCQkJTmFtZT0id2luIgorCQkJCQk+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFNoYXJlZFxjZ1x3aW5cU2hhcmVhYmxlQml0bWFwQ0dXaW4uY3BwIgorCQkJ
CQkJPgorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCT4K
KwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJCS8+
CisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTwvRmlsZT4KKwkJCQk8L0ZpbHRlcj4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJ
CU5hbWU9ImNhaXJvIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92261</attachid>
            <date>2011-05-04 09:51:28 -0700</date>
            <delta_ts>2011-05-04 09:56:12 -0700</delta_ts>
            <desc>Make ShareableBitmap::makeCGImageCopy use a copy-on-write copy on Windows when possible</desc>
            <filename>bug-57269-20110504125151.patch</filename>
            <type>text/plain</type>
            <size>11417</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU3NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkNGM1M2ZkOTg2YzUwMzJk
MWJmMTJiN2RhNTFkNDNjOGM4MWY3NGRhLi4zOGMwNjQxNjFkZDg4Yzk5ZTBiZTI0MDIwZTVlYmNh
N2JhMzgxMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDUtMDQgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2hhcmVhYmxlQml0bWFw
OjptYWtlQ0dJbWFnZUNvcHkgdXNlIGEgY29weS1vbi13cml0ZSBjb3B5IG9uIFdpbmRvd3Mgd2hl
biBwb3NzaWJsZQorCisgICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MjY5PiA8
cmRhcjovL3Byb2JsZW0vOTE5ODc4OD4gUkVHUkVTU0lPTiAocjgyMTUxKTogRXZlcnkgV0tWaWV3
CisgICAgICAgIHBhaW50IG5vdyBtYWtlcyBhbiBleHRyYSBjb3B5IG9mIHRoZSBwYWludGVkIGJp
dHMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFBsYXRmb3JtL3dpbi9TaGFyZWRNZW1v
cnlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZUNvcHlPbldy
aXRlQ29weSk6CisgICAgICAgIEFkZGVkIHRoaXMgbmV3IGZ1bmN0aW9uLiBDcmVhdGVzIGEgY29w
eS1vbi13cml0ZSBjb3B5IG9mIHRoZSBmaXJzdCB8c2l6ZXwgYnl0ZXMgb2YgdGhlCisgICAgICAg
IG9yaWdpbmFsIFNoYXJlZE1lbW9yeS4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaDogQWRkZWQgY3JlYXRlQ0dJbWFnZSBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBT
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSk6IERvbid0IGNvbXBpbGUgdGhpcyB2ZXJzaW9uIG9m
IHRoaXMgZnVuY3Rpb24gb24KKyAgICAgICAgV2luZG93czsgd2UnbGwgcHJvdmlkZSBvdXIgb3du
IGltcGxlbWVudGF0aW9uIHNpbmNlIENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlIGlzbid0IHNt
YXJ0CisgICAgICAgIGVub3VnaCB0byBtYWtlIGEgY29weS1vbi13cml0ZSBjb3B5IG9uIFdpbmRv
d3MuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2UpOiBNb3Zl
ZCBzb21lIGNvZGUgZnJvbSBoZXJlLi4uCisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlQ0dJbWFnZSk6IC4uLnRvIHRoaXMgbmV3IGZ1bmN0aW9uLgorCisgICAgICAgICog
U2hhcmVkL2NnL3dpbi9TaGFyZWFibGVCaXRtYXBDR1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpkZXJlZlNoYXJlZE1lbW9yeSk6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4g
dGhlIENHRGF0YVByb3ZpZGVyIGlzIGZpbmFsaXplZC4KKyAgICAgICAgQWxsIHdlIGhhdmUgdG8g
ZG8gaXMgZGVyZWYgdGhlIFNoYXJlZE1lbW9yeSB0aGF0IHdhcyBiYWNraW5nIHRoZSBDR0RhdGFQ
cm92aWRlci4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNv
cHkpOiBDcmVhdGUgYSBjb3B5LW9uLXdyaXRlIGNvcHkgb2YgdGhlIGltYWdlIGRhdGEKKyAgICAg
ICAgd2hlbiBwb3NzaWJsZS4gV2UgdXNlIHRoZSBjb3B5LW9uLXdyaXRlIGNvcHkgdG8gYmFjayB0
aGlzIFNoYXJlYWJsZUJpdG1hcCBmcm9tIGhlcmUgb24gb3V0LAorICAgICAgICBhbmQgdXNlIHRo
ZSBvcmlnaW5hbCBTaGFyZWRNZW1vcnkgdG8gYmFjayB0aGUgQ0dJbWFnZS4gVGhpcyBzaG91bGQg
cHJldmVudCBmdXR1cmUKKyAgICAgICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgU2hhcmVhYmxlQml0
bWFwIGZyb20gYWZmZWN0aW5nIHRoZSBDR0ltYWdlLiBJZiB3ZSBjYW4ndCBtYWtlIGEKKyAgICAg
ICAgY29weS1vbi13cml0ZSBjb3B5LCB3ZSBmYWxsIGJhY2sgdG8ganVzdCBjb3B5aW5nIHRoZSBk
YXRhIG5vcm1hbGx5LgorCisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOiBBZGRlZCBTaGFy
ZWFibGVCaXRtYXBDR1dpbi5jcHAuCisKIDIwMTEtMDUtMDMgIEFkYW0gUm9iZW4gIDxhcm9iZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGIyNDJiOWJmZWVjZDMz
MWZiYzQ2NjUzNmQ2MGM5YjRmMDA1Y2Q0ZjIuLjAyNTQyNWIxMDBmMTIyYzJkYzU1NjZmNmY2NGI0
M2JiYjk4MmUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC05
Myw2ICs5Myw5IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAg
IC8vIENyZWF0ZXMgYSBjb3B5LW9uLXdyaXRlIGNvcHkgb2YgdGhlIGZpcnN0IHxzaXplfCBieXRl
cy4KKyAgICBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlQ29weU9uV3JpdGVDb3B5KHNp
emVfdCkgY29uc3Q7CisKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0
ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKaW5kZXggNTA5ODVlNzlh
Zjg2Y2JhNGRiZDUxYzczYzQ1MjM1MDgxOWQxMWQ1Yy4uYzdlNjc3OThjYWZhYjQ4Y2M2YmY0NTMy
MmJlYWUyNzcyMjhmYzI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vd2lu
L1NoYXJlZE1lbW9yeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vd2luL1No
YXJlZE1lbW9yeVdpbi5jcHAKQEAgLTIwMCw2ICsyMDAsMzEgQEAgYm9vbCBTaGFyZWRNZW1vcnk6
OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQogICAg
IHJldHVybiB0cnVlOwogfQogCitQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjpjcmVhdGVDb3B5T25Xcml0ZUNvcHkoc2l6ZV90IHNpemUpIGNvbnN0Cit7CisgICAgQVNTRVJU
X0FSRyhzaXplLCBzaXplIDw9IHRoaXMtPnNpemUoKSk7CisKKyAgICBIQU5ETEUgZHVwbGljYXRl
ZEhhbmRsZTsKKyAgICBCT09MIHJlc3VsdCA9IDo6RHVwbGljYXRlSGFuZGxlKDo6R2V0Q3VycmVu
dFByb2Nlc3MoKSwgbV9oYW5kbGUsIDo6R2V0Q3VycmVudFByb2Nlc3MoKSwgJmR1cGxpY2F0ZWRI
YW5kbGUsIDAsIEZBTFNFLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UocmVzdWx0LCAiOjpEdXBsaWNhdGVIYW5kbGUgZmFpbGVkIHdpdGggZXJyb3IgJWx1
IiwgOjpHZXRMYXN0RXJyb3IoKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdm9pZCogbmV3TWFwcGluZyA9IDo6TWFwVmlld09mRmlsZShkdXBsaWNhdGVkSGFu
ZGxlLCBGSUxFX01BUF9DT1BZLCAwLCAwLCBzaXplKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG5ld01hcHBpbmcsICI6Ok1hcFZpZXdPZkZpbGUgZmFpbGVkIHdpdGggZXJyb3IgJWx1IiwgOjpH
ZXRMYXN0RXJyb3IoKSk7CisgICAgaWYgKCFuZXdNYXBwaW5nKSB7CisgICAgICAgIDo6Q2xvc2VI
YW5kbGUoZHVwbGljYXRlZEhhbmRsZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1lbW9yeSA9IGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkp
OworICAgIG1lbW9yeS0+bV9zaXplID0gc2l6ZTsKKyAgICBtZW1vcnktPm1fZGF0YSA9IG5ld01h
cHBpbmc7CisgICAgbWVtb3J5LT5tX2hhbmRsZSA9IGR1cGxpY2F0ZWRIYW5kbGU7CisKKyAgICBy
ZXR1cm4gbWVtb3J5LnJlbGVhc2UoKTsKK30KKwogdW5zaWduZWQgU2hhcmVkTWVtb3J5OjpzeXN0
ZW1QYWdlU2l6ZSgpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIHBhZ2VTaXplID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCBkNjQ3YTEyZTY1YzIxNDQ0YTc5
ZjhhYTMzYWQ2ZDMzYWU0OWE2NzE5Li43MGYwZTY3OWYzMDYyMDhmOGNkMTdjMzEwYWU5MDVjNzlk
NjI3NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0xMTQs
NiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgc2l6ZV90IG51bUJ5dGVzRm9yU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSB7IHJldHVybiBzaXplLndpZHRoKCkgKiBzaXpl
LmhlaWdodCgpICogNDsgfQogCiAjaWYgVVNFKENHKQorICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25zdDsKICAgICBzdGF0aWMgdm9p
ZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIHZvaWQqIHR5
cGVsZXNzRGF0YSk7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9p
ZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAK
aW5kZXggNmJjYzEwODJiODAzNWY5ODkzM2Y2NDdmMmQwMjE4Zjc1NjE2MTJhNi4uZjQ2Yzk0Nzcw
ZjlkZGZhZmUzYTljZWNkNjY1YjQ4MTE4MGI4MTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC02NywyMCArNjcsMjggQEAgdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UG9pbnQmIGQKICAgICBwYWludEltYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIG1ha2VDR0ltYWdlQ29weSgpLmdldCgpLCBkc3RQb2ludCwgc3JjUmVjdCk7CiB9CiAKKyNp
ZiAhUExBVEZPUk0oV0lOKQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6
bWFrZUNHSW1hZ2VDb3B5KCkKIHsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQgPSBjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2UoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JhcGhpY3ND
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIHJldHVybiBpbWFnZTsKIH0KKyNlbmRp
ZgogCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZSgp
CiB7CiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VEYXRhUHJvdmlk
ZXJEYXRhLgogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVByb3ZpZGVyKEFkb3B0
Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEodGhpcywgZGF0YSgpLCBzaXplSW5CeXRl
cygpLCByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSkpOworICAgIHJldHVybiBjcmVhdGVDR0ltYWdl
KGRhdGFQcm92aWRlci5nZXQoKSk7Cit9CisKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpZGVyKSBj
b25zdAoreworICAgIEFTU0VSVF9BUkcoZGF0YVByb3ZpZGVyLCBkYXRhUHJvdmlkZXIpOwogCiAg
ICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9y
U3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdl
KEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwg
OCwgMzIsIG1fc2l6ZS53aWR0aCgpICogNCwgY29sb3JTcGFjZS5nZXQoKSwgYml0bWFwSW5mbyht
X2ZsYWdzKSwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50
RGVmYXVsdCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShBZG9wdENGLCBDR0lt
YWdlQ3JlYXRlKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDgsIDMyLCBtX3NpemUu
d2lkdGgoKSAqIDQsIGNvbG9yU3BhY2UuZ2V0KCksIGJpdG1hcEluZm8obV9mbGFncyksIGRhdGFQ
cm92aWRlciwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICByZXR1
cm4gaW1hZ2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy93aW4v
U2hhcmVhYmxlQml0bWFwQ0dXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL3dpbi9T
aGFyZWFibGVCaXRtYXBDR1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkwM2I5NTUwZDIxZjYwNTc1NzU2
ZjJhNTc0MzM5NGZjMmRiOWEzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9jZy93aW4vU2hhcmVhYmxlQml0bWFwQ0dXaW4uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCBkZXJlZlNoYXJlZE1lbW9y
eSh2b2lkKiB0eXBlbGVzc1NoYXJlZE1lbW9yeSwgY29uc3Qgdm9pZCosIHNpemVfdCkKK3sKKyAg
ICBBU1NFUlRfQVJHKHR5cGVsZXNzU2hhcmVkTWVtb3J5LCB0eXBlbGVzc1NoYXJlZE1lbW9yeSk7
CisKKyAgICAvLyBCYWxhbmNlZCBieSBsZWFrUmVmIGluIG1ha2VDR0ltYWdlQ29weS4KKyAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBtZW1vcnkgPSBhZG9wdFJlZihzdGF0aWNfY2FzdDxTaGFyZWRN
ZW1vcnkqPih0eXBlbGVzc1NoYXJlZE1lbW9yeSkpOworfQorCitSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQoreworICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyOworICAgIGlmIChpc0JhY2tlZEJ5U2hhcmVk
TWVtb3J5KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlPbldyaXRl
TWVtb3J5ID0gbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUNvcHlPbldyaXRlQ29weShzaXplSW5CeXRl
cygpKSkgeworICAgICAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gb3JpZ2luYWxNZW1vcnkg
PSBtX3NoYXJlZE1lbW9yeS5yZWxlYXNlKCk7CisgICAgICAgICAgICAvLyBXcml0ZXMgdG8gb3Jp
Z2luYWxNZW1vcnkgd2lsbCBhZmZlY3QgY29weU9uV3JpdGVNZW1vcnkgKHVudGlsIGNvcHlPbldy
aXRlTWVtb3J5IGlzCisgICAgICAgICAgICAvLyB3cml0dGVuIHRvIGZvciB0aGUgZmlyc3QgdGlt
ZSksIGJ1dCB3cml0ZXMgdG8gY29weU9uV3JpdGVNZW1vcnkgd2lsbCBub3QgYWZmZWN0CisgICAg
ICAgICAgICAvLyBvcmlnaW5hbE1lbW9yeS4gU28gd2Ugd3JhcCBvcmlnaW5hbE1lbW9yeSBpbiBh
IENHSW1hZ2UgKHdoaWNoIHdpbGwgbmV2ZXIgd3JpdGUgdG8KKyAgICAgICAgICAgIC8vIGl0KSBh
bmQgdXNlIGNvcHlPbldyaXRlTWVtb3J5IHRvIGJhY2sgdGhpcyBTaGFyZWFibGVCaXRtYXAgZnJv
bSBoZXJlIG9uIG91dC4gVGhhdAorICAgICAgICAgICAgLy8gd2F5LCB3cml0ZXMgdG8gdGhpcyBT
aGFyZWFibGVCaXRtYXAgd2lsbCBub3QgYWZmZWN0IHRoZSBDR0ltYWdlLgorICAgICAgICAgICAg
bV9zaGFyZWRNZW1vcnkgPSBjb3B5T25Xcml0ZU1lbW9yeS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBkYXRhUHJvdmlkZXIuYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKG9yaWdp
bmFsTWVtb3J5LmdldCgpLCBvcmlnaW5hbE1lbW9yeS0+ZGF0YSgpLCBzaXplSW5CeXRlcygpLCBk
ZXJlZlNoYXJlZE1lbW9yeSkpOworICAgICAgICAgICAgLy8gQmFsYW5jZWQgYnkgYWRvcHRSZWYg
aW4gZGVyZWZTaGFyZWRNZW1vcnkuCisgICAgICAgICAgICBvcmlnaW5hbE1lbW9yeS5yZWxlYXNl
KCkubGVha1JlZigpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghZGF0YVByb3ZpZGVyKSB7
CisgICAgICAgIC8vIFdlIHdlcmVuJ3QgYWJsZSB0byBtYWtlIGEgY29weS1vbi13cml0ZSBjb3B5
LCBzbyB3ZSdsbCBqdXN0IGhhdmUgdG8gZmFsbCBiYWNrIHRvIGEKKyAgICAgICAgLy8gbm9ybWFs
IGNvcHkgKHdoaWNoIGlzIG1vcmUgZXhwZW5zaXZlLCBidXQgdGhlIGJlc3Qgd2UgY2FuIGRvKS4K
KyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0
ZSgwLCBzdGF0aWNfY2FzdDxVSW50OCo+KGRhdGEoKSksIHNpemVJbkJ5dGVzKCkpKTsKKyAgICAg
ICAgZGF0YVByb3ZpZGVyLmFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGNm
RGF0YS5nZXQoKSkpOworICAgIH0KKyAgICBBU1NFUlQoZGF0YVByb3ZpZGVyKTsKKyAgICByZXR1
cm4gY3JlYXRlQ0dJbWFnZShkYXRhUHJvdmlkZXIuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvaiBi
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCA5MjIyMDE1OTYzNjExNGMy
YWFhYTM5ZDk3ZjQwYTIyMDMwZDI0ZDYzLi4yMzA1ZWRmOTcxNWM1NGRiZTg2MDZkZWZkY2VkY2Rm
MjRkYTRmZmViIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oK
KysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC0xMzE3LDYgKzEzMTcs
MzAgQEAKIAkJCQkJCS8+CiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgor
CQkJCTxGaWx0ZXIKKwkJCQkJTmFtZT0id2luIgorCQkJCQk+CisJCQkJCTxGaWxlCisJCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxjZ1x3aW5cU2hhcmVhYmxlQml0bWFwQ0dXaW4uY3BwIgor
CQkJCQkJPgorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJTmFtZT0iRGVidWdfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
CT4KKwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
CS8+CisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJPgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJLz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJCTwvRmlsZT4KKwkJCQk8L0ZpbHRlcj4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgog
CQkJCU5hbWU9ImNhaXJvIgo=
</data>
<flag name="review"
          id="85211"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>