<?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>20578</bug_id>
          
          <creation_ts>2008-08-31 11:30:01 -0700</creation_ts>
          <short_desc>[CAIRO] pattern of a canvas-element changes after modifications on canvas-element</short_desc>
          <delta_ts>2009-07-16 15:28:02 -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>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://philip.html5.org/tests/canvas/suite/tests/2d.pattern.modify.canvas1.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>hamaji</cc>
    
    <cc>jmalonzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>89804</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-08-31 11:30:01 -0700</bug_when>
    <thetext>If you create a pattern of a canvas-element

var pattern = ctx.createPattern(canvas, &apos;no-repeat&apos;);

and modify the canvas after that, the pattern is changed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127608</commentid>
    <comment_count>1</comment_count>
      <attachid>31714</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-23 02:10:41 -0700</bug_when>
    <thetext>Created attachment 31714
Patch v1

 LayoutTests/ChangeLog                              |   18 +++++++
 .../fast/canvas/canvas-pattern-modify-expected.txt |   13 +++++
 LayoutTests/fast/canvas/canvas-pattern-modify.html |    6 ++
 LayoutTests/fast/canvas/canvas-pattern-modify.js   |   52 ++++++++++++++++++++
 WebCore/ChangeLog                                  |   15 ++++++
 .../platform/graphics/cairo/ImageBufferCairo.cpp   |   19 +++++++-
 6 files changed, 122 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127764</commentid>
    <comment_count>2</comment_count>
      <attachid>31714</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-23 17:42:52 -0700</bug_when>
    <thetext>Comment on attachment 31714
Patch v1

Isn&apos;t there an easier/cleaner way to copy an image in Cairo? 

Is memcpy the right allocator to use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127782</commentid>
    <comment_count>3</comment_count>
      <attachid>31764</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-23 18:33:41 -0700</bug_when>
    <thetext>Created attachment 31764
Patch v2

 LayoutTests/ChangeLog                              |   18 +++++++
 .../fast/canvas/canvas-pattern-modify-expected.txt |   13 +++++
 LayoutTests/fast/canvas/canvas-pattern-modify.html |    6 ++
 LayoutTests/fast/canvas/canvas-pattern-modify.js   |   52 ++++++++++++++++++++
 WebCore/ChangeLog                                  |   15 ++++++
 .../platform/graphics/cairo/ImageBufferCairo.cpp   |   22 ++++++++-
 6 files changed, 125 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127784</commentid>
    <comment_count>4</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-23 18:41:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 31714 [review])
&gt; Isn&apos;t there an easier/cleaner way to copy an image in Cairo? 

I searched cairo API and web, but couldn&apos;t find an convenient API for this. In the following discussion, a person is saying that &quot;cairo isn&apos;t providing a &quot;copy surface&quot; primitive&quot;.

http://lists.cairographics.org/archives/cairo/2007-June/010877.html

&gt; Is memcpy the right allocator to use?

Ah, I think using cairo_paint would be better as it would work even if the source surface has different internal representation. I&apos;ve uploaded another patch which changes this. Thanks.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128466</commentid>
    <comment_count>5</comment_count>
      <attachid>31764</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 03:25:46 -0700</bug_when>
    <thetext>Comment on attachment 31764
Patch v2

I think this should be broken into a &quot;copySurface&quot; static inline.  That function should have a comment pointing to the discussion about how cairo is lacking this call.

Otherwise this looks great.

I think it would be nice to fix the one nit about breaking this out into its own function with a comment about how cairo doesn&apos;t provide this natively.  Eventually cairo is likely to provide this, and when it does, we can replace your copySurface function with a call to the native cairo call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128471</commentid>
    <comment_count>6</comment_count>
      <attachid>31926</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-26 04:29:29 -0700</bug_when>
    <thetext>Created attachment 31926
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128472</commentid>
    <comment_count>7</comment_count>
      <attachid>31926</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-26 04:30:21 -0700</bug_when>
    <thetext>Comment on attachment 31926
Patch v3

Thanks for the review! I&apos;ve created a new static inline function with some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130840</commentid>
    <comment_count>8</comment_count>
      <attachid>32550</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-09 22:45:13 -0700</bug_when>
    <thetext>Created attachment 32550
Patch v4

Fixing a style error for copySurface. Though Eric kindly said that he&apos;ll fix this, I fixed it to save Eric&apos;s time a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132167</commentid>
    <comment_count>9</comment_count>
      <attachid>32550</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-07-16 00:02:55 -0700</bug_when>
    <thetext>Comment on attachment 32550
Patch v4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132361</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 15:07:21 -0700</bug_when>
    <thetext>Will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132372</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 15:28:02 -0700</bug_when>
    <thetext>Committed r45989</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31714</attachid>
            <date>2009-06-23 02:10:41 -0700</date>
            <delta_ts>2009-06-23 18:41:15 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>Patch-v1.patch</filename>
            <type>text/plain</type>
            <size>6578</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ODQ0Mjg5N2EwNmJlNDBjNWJlMDFhNWUxMjAwM2RkMmM4NjE4NWNiNwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhhZTE4NjYu
LjZkNTVhN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNi0yMyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDU3ODogW0NBSVJPXSBwYXR0ZXJuIG9mIGEgY2Fu
dmFzLWVsZW1lbnQgY2hhbmdlcyBhZnRlcgorICAgICAgICBtb2RpZmljYXRpb25zIG9uIGNhbnZh
cy1lbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDU3OAorCisgICAgICAgIENvcHkgcGl4ZWwgaW1hZ2UgaW4gSW1hZ2VCdWZmZXI6OmltYWdl
KCkganVzdCBsaWtlIENHIGFuZCBTa2lhIGdsdWUuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtcGF0dGVybi1tb2RpZnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGRhdGFU
b0FycmF5KToKKyAgICAgICAgKGdldFBpeGVsKToKKyAgICAgICAgKHBpeGVsU2hvdWxkQmUpOgor
ICAgICAgICAoY3JlYXRlQ2FudmFzSW1hZ2UpOgorCiAyMDA5LTA2LTIyICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkZGMyZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LW1vZGlmeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGNoZWNrcyBp
ZiBwYXR0ZXJuIGNoYW5nZXMgYWZ0ZXIgdGhlIHNvdXJjZSBjYW52YXMgaXMgbW9kaWZpZWQuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzggLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBnZXRQaXhlbChjdHgsIDEsMSkgaXMgWzAs
MjU1LDAsMjU1XQorUEFTUyBnZXRQaXhlbChjdHgsIDk4LDEpIGlzIFswLDI1NSwwLDI1NV0KK1BB
U1MgZ2V0UGl4ZWwoY3R4LCAxLDQ4KSBpcyBbMCwyNTUsMCwyNTVdCitQQVNTIGdldFBpeGVsKGN0
eCwgOTgsNDgpIGlzIFswLDI1NSwwLDI1NV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1wYXR0ZXJuLW1vZGlmeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUyMjgxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJjYW52YXMtcGF0dGVybi1tb2RpZnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIyZjNlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuanMKQEAgLTAsMCArMSw1MiBAQAorLy8g
QmFzZWQgb24gaHR0cDovL3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3Rz
LzJkLnBhdHRlcm4ubW9kaWZ5LmNhbnZhczEuaHRtbAorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyBpZiBwYXR0ZXJuIGNoYW5nZXMgYWZ0ZXIgdGhlIHNvdXJjZSBjYW52YXMgaXMgbW9k
aWZpZWQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzgg
LiIpOworCitmdW5jdGlvbiBkYXRhVG9BcnJheShkYXRhKSB7CisgICAgdmFyIHJlc3VsdCA9IG5l
dyBBcnJheShkYXRhLmxlbmd0aCkKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3Ro
OyBpKyspCisgICAgICAgIHJlc3VsdFtpXSA9IGRhdGFbaV07CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworZnVuY3Rpb24gZ2V0UGl4ZWwoY3R4LCB4LCB5KSB7CisgICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKHgseSwxLDEpOworICAgIGlmICghZGF0YSkgLy8gZ2V0SW1hZ2VEYXRhIGZh
aWxlZCwgd2hpY2ggc2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICByZXR1cm4gWy0xLC0xLC0x
LC0xXTsKKyAgICByZXR1cm4gZGF0YVRvQXJyYXkoZGF0YS5kYXRhKTsKK30KKworZnVuY3Rpb24g
cGl4ZWxTaG91bGRCZShjdHgsIHgsIHksIGNvbG91cikgeworICAgIHNob3VsZEJlKCJnZXRQaXhl
bChjdHgsICIgKyBbeCwgeV0gKyIpIiwgIlsiK2NvbG91cisiXSIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNJbWFnZSh3aWR0aCwgaGVpZ2h0LCBjb2xvdXIpIHsKKyAgICB2YXIgYyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGMud2lkdGggPSB3aWR0aDsKKyAg
ICBjLmhlaWdodCA9IGhlaWdodDsKKyAgICB2YXIgY29udGV4dCA9IGMuZ2V0Q29udGV4dCgiMmQi
KTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG91cjsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KDAsMCx3aWR0aCxoZWlnaHQpOworICAgIHJldHVybiBjOworfQorCit2YXIgY2FudmFzID0gY3Jl
YXRlQ2FudmFzSW1hZ2UoMTAwLCA1MCwgJyNmZmYnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKwordmFyIHBhdHRlcm5DYW52YXMgPSBjcmVhdGVDYW52YXNJbWFnZSgxMDAs
IDUwLCAnIzBmMCcpOwordmFyIHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybihwYXR0ZXJuQ2Fu
dmFzLCAnbm8tcmVwZWF0Jyk7CisKKy8vIE1vZGlmeSB0aGUgb3JpZ2luYWwgY2FudmFzIGFmdGVy
IHdlIGNyZWF0ZSBhIHBhdHRlcm4uCit2YXIgcGF0dGVybkN0eCA9IHBhdHRlcm5DYW52YXMuZ2V0
Q29udGV4dCgnMmQnKTsKK3BhdHRlcm5DdHguZmlsbFN0eWxlID0gJyNmMDAnOworcGF0dGVybkN0
eC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKKworY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm47Citj
dHguZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CisKK3BpeGVsU2hvdWxkQmUoY3R4LCAxLCAxLCBb
MCwgMjU1LCAwLCAyNTVdKTsKK3BpeGVsU2hvdWxkQmUoY3R4LCA5OCwgMSwgWzAsIDI1NSwgMCwg
MjU1XSk7CitwaXhlbFNob3VsZEJlKGN0eCwgMSwgNDgsIFswLCAyNTUsIDAsIDI1NV0pOworcGl4
ZWxTaG91bGRCZShjdHgsIDk4LCA0OCwgWzAsIDI1NSwgMCwgMjU1XSk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmNmFjZDM4Li43MmMxMWY0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDA5
LTA2LTIzICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwNTc4OiBbQ0FJ
Uk9dIHBhdHRlcm4gb2YgYSBjYW52YXMtZWxlbWVudCBjaGFuZ2VzIGFmdGVyCisgICAgICAgIG1v
ZGlmaWNhdGlvbnMgb24gY2FudmFzLWVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4CisKKyAgICAgICAgQ29weSBwaXhlbCBpbWFnZSBp
biBJbWFnZUJ1ZmZlcjo6aW1hZ2UoKSBqdXN0IGxpa2UgQ0cgYW5kIFNraWEgZ2x1ZS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbAorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6aW1hZ2UpOgorCiAyMDA5LTA2LTIyICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzaWxob3VldHRl
IGltYWdlIGZvciB0aGUgZW5hYmxlIHZpZXcgb2YgdGhlIFJlc291cmNlIHBhbmVsLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
aW5kZXggZDI2NTJkNi4uMjgwYjczMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC04Miw4ICs4MiwyNSBAQCBJbWFn
ZSogSW1hZ2VCdWZmZXI6OmltYWdlKCkgY29uc3QKICAgICAgICAgLy8gSXQncyBhc3N1bWVkIHRo
YXQgaWYgaW1hZ2UoKSBpcyBjYWxsZWQsIHRoZSBhY3R1YWwgcmVuZGVyaW5nIHRvIHRoZQogICAg
ICAgICAvLyBHcmFwaGljc0NvbnRleHQgbXVzdCBiZSBkb25lLgogICAgICAgICBBU1NFUlQoY29u
dGV4dCgpKTsKKworICAgICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBDT1BZIG9mIHRoZSBpbWFnZSBh
bmQgd2lsbCBjYWNoZSB0aGF0IGNvcHkuIFRoaXMgbWVhbnMKKyAgICAgICAgLy8gdGhhdCBpZiBz
dWJzZXF1ZW50IG9wZXJhdGlvbnMgdGFrZSBwbGFjZSBvbiB0aGUgY29udGV4dCwgbmVpdGhlciB0
aGUKKyAgICAgICAgLy8gY3VycmVudGx5LXJldHVybmVkIGltYWdlLCBub3IgdGhlIHJlc3VsdHMg
b2YgZnV0dXJlIGltYWdlKCkgY2FsbHMsCisgICAgICAgIC8vIHdpbGwgY29udGFpbiB0aGF0IG9w
ZXJhdGlvbi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBzZWVtcyBzaWxseSwgYnV0IGlz
IHRoZSB3YXkgdGhlIENHIHBvcnQgd29ya3M6IGltYWdlKCkgaXMKKyAgICAgICAgLy8gaW50ZW5k
ZWQgdG8gYmUgdXNlZCBvbmx5IHdoZW4gcmVuZGVyaW5nIGlzICJjb21wbGV0ZS4iCisgICAgICAg
IHVuc2lnbmVkIGNoYXIqIHNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRh
Lm1fc3VyZmFjZSk7CisgICAgICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdCA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2Zvcm1hdChtX2RhdGEubV9zdXJmYWNlKTsKKyAgICAgICAgaW50IHdpZHRo
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9kYXRhLm1fc3VyZmFjZSk7CisgICAg
ICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9kYXRhLm1f
c3VyZmFjZSk7CisgICAgICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9z
dHJpZGUobV9kYXRhLm1fc3VyZmFjZSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfdCogbmV3c3Vy
ZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Rh
dGEobmV3c3VyZmFjZSk7CisgICAgICAgIG1lbWNweShkc3QsIHNyYywgc3RyaWRlICogaGVpZ2h0
KTsKKwogICAgICAgICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2UgdGhlIHBhc3NlZCBpbiBz
dXJmYWNlIG9uIGRlc3RydWN0aW9uCi0gICAgICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fZGF0YS5tX3N1cmZhY2UpKTsKKyAgICAgICAg
bV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3c3VyZmFjZSk7CiAgICAgfQogICAgIHJl
dHVybiBtX2ltYWdlLmdldCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31764</attachid>
            <date>2009-06-23 18:33:41 -0700</date>
            <delta_ts>2009-06-26 04:29:42 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>Patch-v2.patch</filename>
            <type>text/plain</type>
            <size>6608</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">NTZiZTEwYWJiZjU2MjNkOGJlNzNmMjBlZjlhNzQxODY3MGI4YTQ2ZgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhhZTE4NjYu
LjZkNTVhN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNi0yMyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDU3ODogW0NBSVJPXSBwYXR0ZXJuIG9mIGEgY2Fu
dmFzLWVsZW1lbnQgY2hhbmdlcyBhZnRlcgorICAgICAgICBtb2RpZmljYXRpb25zIG9uIGNhbnZh
cy1lbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDU3OAorCisgICAgICAgIENvcHkgcGl4ZWwgaW1hZ2UgaW4gSW1hZ2VCdWZmZXI6OmltYWdl
KCkganVzdCBsaWtlIENHIGFuZCBTa2lhIGdsdWUuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtcGF0dGVybi1tb2RpZnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGRhdGFU
b0FycmF5KToKKyAgICAgICAgKGdldFBpeGVsKToKKyAgICAgICAgKHBpeGVsU2hvdWxkQmUpOgor
ICAgICAgICAoY3JlYXRlQ2FudmFzSW1hZ2UpOgorCiAyMDA5LTA2LTIyICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkZGMyZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LW1vZGlmeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGNoZWNrcyBp
ZiBwYXR0ZXJuIGNoYW5nZXMgYWZ0ZXIgdGhlIHNvdXJjZSBjYW52YXMgaXMgbW9kaWZpZWQuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzggLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBnZXRQaXhlbChjdHgsIDEsMSkgaXMgWzAs
MjU1LDAsMjU1XQorUEFTUyBnZXRQaXhlbChjdHgsIDk4LDEpIGlzIFswLDI1NSwwLDI1NV0KK1BB
U1MgZ2V0UGl4ZWwoY3R4LCAxLDQ4KSBpcyBbMCwyNTUsMCwyNTVdCitQQVNTIGdldFBpeGVsKGN0
eCwgOTgsNDgpIGlzIFswLDI1NSwwLDI1NV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1wYXR0ZXJuLW1vZGlmeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUyMjgxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJjYW52YXMtcGF0dGVybi1tb2RpZnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIyZjNlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuanMKQEAgLTAsMCArMSw1MiBAQAorLy8g
QmFzZWQgb24gaHR0cDovL3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3Rz
LzJkLnBhdHRlcm4ubW9kaWZ5LmNhbnZhczEuaHRtbAorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyBpZiBwYXR0ZXJuIGNoYW5nZXMgYWZ0ZXIgdGhlIHNvdXJjZSBjYW52YXMgaXMgbW9k
aWZpZWQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzgg
LiIpOworCitmdW5jdGlvbiBkYXRhVG9BcnJheShkYXRhKSB7CisgICAgdmFyIHJlc3VsdCA9IG5l
dyBBcnJheShkYXRhLmxlbmd0aCkKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3Ro
OyBpKyspCisgICAgICAgIHJlc3VsdFtpXSA9IGRhdGFbaV07CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworZnVuY3Rpb24gZ2V0UGl4ZWwoY3R4LCB4LCB5KSB7CisgICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKHgseSwxLDEpOworICAgIGlmICghZGF0YSkgLy8gZ2V0SW1hZ2VEYXRhIGZh
aWxlZCwgd2hpY2ggc2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICByZXR1cm4gWy0xLC0xLC0x
LC0xXTsKKyAgICByZXR1cm4gZGF0YVRvQXJyYXkoZGF0YS5kYXRhKTsKK30KKworZnVuY3Rpb24g
cGl4ZWxTaG91bGRCZShjdHgsIHgsIHksIGNvbG91cikgeworICAgIHNob3VsZEJlKCJnZXRQaXhl
bChjdHgsICIgKyBbeCwgeV0gKyIpIiwgIlsiK2NvbG91cisiXSIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNJbWFnZSh3aWR0aCwgaGVpZ2h0LCBjb2xvdXIpIHsKKyAgICB2YXIgYyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGMud2lkdGggPSB3aWR0aDsKKyAg
ICBjLmhlaWdodCA9IGhlaWdodDsKKyAgICB2YXIgY29udGV4dCA9IGMuZ2V0Q29udGV4dCgiMmQi
KTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG91cjsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KDAsMCx3aWR0aCxoZWlnaHQpOworICAgIHJldHVybiBjOworfQorCit2YXIgY2FudmFzID0gY3Jl
YXRlQ2FudmFzSW1hZ2UoMTAwLCA1MCwgJyNmZmYnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKwordmFyIHBhdHRlcm5DYW52YXMgPSBjcmVhdGVDYW52YXNJbWFnZSgxMDAs
IDUwLCAnIzBmMCcpOwordmFyIHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybihwYXR0ZXJuQ2Fu
dmFzLCAnbm8tcmVwZWF0Jyk7CisKKy8vIE1vZGlmeSB0aGUgb3JpZ2luYWwgY2FudmFzIGFmdGVy
IHdlIGNyZWF0ZSBhIHBhdHRlcm4uCit2YXIgcGF0dGVybkN0eCA9IHBhdHRlcm5DYW52YXMuZ2V0
Q29udGV4dCgnMmQnKTsKK3BhdHRlcm5DdHguZmlsbFN0eWxlID0gJyNmMDAnOworcGF0dGVybkN0
eC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKKworY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm47Citj
dHguZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CisKK3BpeGVsU2hvdWxkQmUoY3R4LCAxLCAxLCBb
MCwgMjU1LCAwLCAyNTVdKTsKK3BpeGVsU2hvdWxkQmUoY3R4LCA5OCwgMSwgWzAsIDI1NSwgMCwg
MjU1XSk7CitwaXhlbFNob3VsZEJlKGN0eCwgMSwgNDgsIFswLCAyNTUsIDAsIDI1NV0pOworcGl4
ZWxTaG91bGRCZShjdHgsIDk4LCA0OCwgWzAsIDI1NSwgMCwgMjU1XSk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmNmFjZDM4Li43MmMxMWY0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDA5
LTA2LTIzICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwNTc4OiBbQ0FJ
Uk9dIHBhdHRlcm4gb2YgYSBjYW52YXMtZWxlbWVudCBjaGFuZ2VzIGFmdGVyCisgICAgICAgIG1v
ZGlmaWNhdGlvbnMgb24gY2FudmFzLWVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4CisKKyAgICAgICAgQ29weSBwaXhlbCBpbWFnZSBp
biBJbWFnZUJ1ZmZlcjo6aW1hZ2UoKSBqdXN0IGxpa2UgQ0cgYW5kIFNraWEgZ2x1ZS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbAorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6aW1hZ2UpOgorCiAyMDA5LTA2LTIyICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzaWxob3VldHRl
IGltYWdlIGZvciB0aGUgZW5hYmxlIHZpZXcgb2YgdGhlIFJlc291cmNlIHBhbmVsLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
aW5kZXggZDI2NTJkNi4uZWM5YjM1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC04Miw4ICs4MiwyOCBAQCBJbWFn
ZSogSW1hZ2VCdWZmZXI6OmltYWdlKCkgY29uc3QKICAgICAgICAgLy8gSXQncyBhc3N1bWVkIHRo
YXQgaWYgaW1hZ2UoKSBpcyBjYWxsZWQsIHRoZSBhY3R1YWwgcmVuZGVyaW5nIHRvIHRoZQogICAg
ICAgICAvLyBHcmFwaGljc0NvbnRleHQgbXVzdCBiZSBkb25lLgogICAgICAgICBBU1NFUlQoY29u
dGV4dCgpKTsKKworICAgICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBDT1BZIG9mIHRoZSBpbWFnZSBh
bmQgd2lsbCBjYWNoZSB0aGF0IGNvcHkuIFRoaXMgbWVhbnMKKyAgICAgICAgLy8gdGhhdCBpZiBz
dWJzZXF1ZW50IG9wZXJhdGlvbnMgdGFrZSBwbGFjZSBvbiB0aGUgY29udGV4dCwgbmVpdGhlciB0
aGUKKyAgICAgICAgLy8gY3VycmVudGx5LXJldHVybmVkIGltYWdlLCBub3IgdGhlIHJlc3VsdHMg
b2YgZnV0dXJlIGltYWdlKCkgY2FsbHMsCisgICAgICAgIC8vIHdpbGwgY29udGFpbiB0aGF0IG9w
ZXJhdGlvbi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBzZWVtcyBzaWxseSwgYnV0IGlz
IHRoZSB3YXkgdGhlIENHIHBvcnQgd29ya3M6IGltYWdlKCkgaXMKKyAgICAgICAgLy8gaW50ZW5k
ZWQgdG8gYmUgdXNlZCBvbmx5IHdoZW4gcmVuZGVyaW5nIGlzICJjb21wbGV0ZS4iCisgICAgICAg
IGNhaXJvX2Zvcm1hdF90IGZvcm1hdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdCht
X2RhdGEubV9zdXJmYWNlKTsKKyAgICAgICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfd2lkdGgobV9kYXRhLm1fc3VyZmFjZSk7CisgICAgICAgIGludCBoZWlnaHQgPSBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9kYXRhLm1fc3VyZmFjZSk7CisgICAgICAgIGlu
dCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9kYXRhLm1fc3VyZmFj
ZSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfdCogbmV3c3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlKGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgY2Fpcm9fdCog
Y3IgPSBjYWlyb19jcmVhdGUobmV3c3VyZmFjZSk7CisgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vf
c3VyZmFjZShjciwgbV9kYXRhLm1fc3VyZmFjZSwgMCwgMCk7CisgICAgICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICAgICAgY2Fpcm9fcGFpbnQo
Y3IpOworICAgICAgICBjYWlyb19kZXN0cm95KGNyKTsKKwogICAgICAgICAvLyBCaXRtYXBJbWFn
ZSB3aWxsIHJlbGVhc2UgdGhlIHBhc3NlZCBpbiBzdXJmYWNlIG9uIGRlc3RydWN0aW9uCi0gICAg
ICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNl
KG1fZGF0YS5tX3N1cmZhY2UpKTsKKyAgICAgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUobmV3c3VyZmFjZSk7CiAgICAgfQogICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwogfQo=
</data>
<flag name="review"
          id="16354"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31926</attachid>
            <date>2009-06-26 04:29:29 -0700</date>
            <delta_ts>2009-07-09 22:45:13 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>Patch-v3.patch</filename>
            <type>text/plain</type>
            <size>7022</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZWE2NTg0M2VkYzRlZDI3YjVjYzM3YThhNjk2ZDMzN2JiOGU2N2Y3NgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhhZTE4NjYu
LjZkNTVhN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNi0yMyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDU3ODogW0NBSVJPXSBwYXR0ZXJuIG9mIGEgY2Fu
dmFzLWVsZW1lbnQgY2hhbmdlcyBhZnRlcgorICAgICAgICBtb2RpZmljYXRpb25zIG9uIGNhbnZh
cy1lbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDU3OAorCisgICAgICAgIENvcHkgcGl4ZWwgaW1hZ2UgaW4gSW1hZ2VCdWZmZXI6OmltYWdl
KCkganVzdCBsaWtlIENHIGFuZCBTa2lhIGdsdWUuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtcGF0dGVybi1tb2RpZnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGRhdGFU
b0FycmF5KToKKyAgICAgICAgKGdldFBpeGVsKToKKyAgICAgICAgKHBpeGVsU2hvdWxkQmUpOgor
ICAgICAgICAoY3JlYXRlQ2FudmFzSW1hZ2UpOgorCiAyMDA5LTA2LTIyICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkZGMyZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LW1vZGlmeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGNoZWNrcyBp
ZiBwYXR0ZXJuIGNoYW5nZXMgYWZ0ZXIgdGhlIHNvdXJjZSBjYW52YXMgaXMgbW9kaWZpZWQuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzggLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBnZXRQaXhlbChjdHgsIDEsMSkgaXMgWzAs
MjU1LDAsMjU1XQorUEFTUyBnZXRQaXhlbChjdHgsIDk4LDEpIGlzIFswLDI1NSwwLDI1NV0KK1BB
U1MgZ2V0UGl4ZWwoY3R4LCAxLDQ4KSBpcyBbMCwyNTUsMCwyNTVdCitQQVNTIGdldFBpeGVsKGN0
eCwgOTgsNDgpIGlzIFswLDI1NSwwLDI1NV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1wYXR0ZXJuLW1vZGlmeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUyMjgxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJjYW52YXMtcGF0dGVybi1tb2RpZnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIyZjNlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuanMKQEAgLTAsMCArMSw1MiBAQAorLy8g
QmFzZWQgb24gaHR0cDovL3BoaWxpcC5odG1sNS5vcmcvdGVzdHMvY2FudmFzL3N1aXRlL3Rlc3Rz
LzJkLnBhdHRlcm4ubW9kaWZ5LmNhbnZhczEuaHRtbAorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyBpZiBwYXR0ZXJuIGNoYW5nZXMgYWZ0ZXIgdGhlIHNvdXJjZSBjYW52YXMgaXMgbW9k
aWZpZWQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzgg
LiIpOworCitmdW5jdGlvbiBkYXRhVG9BcnJheShkYXRhKSB7CisgICAgdmFyIHJlc3VsdCA9IG5l
dyBBcnJheShkYXRhLmxlbmd0aCkKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3Ro
OyBpKyspCisgICAgICAgIHJlc3VsdFtpXSA9IGRhdGFbaV07CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworZnVuY3Rpb24gZ2V0UGl4ZWwoY3R4LCB4LCB5KSB7CisgICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKHgseSwxLDEpOworICAgIGlmICghZGF0YSkgLy8gZ2V0SW1hZ2VEYXRhIGZh
aWxlZCwgd2hpY2ggc2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICByZXR1cm4gWy0xLC0xLC0x
LC0xXTsKKyAgICByZXR1cm4gZGF0YVRvQXJyYXkoZGF0YS5kYXRhKTsKK30KKworZnVuY3Rpb24g
cGl4ZWxTaG91bGRCZShjdHgsIHgsIHksIGNvbG91cikgeworICAgIHNob3VsZEJlKCJnZXRQaXhl
bChjdHgsICIgKyBbeCwgeV0gKyIpIiwgIlsiK2NvbG91cisiXSIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNJbWFnZSh3aWR0aCwgaGVpZ2h0LCBjb2xvdXIpIHsKKyAgICB2YXIgYyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGMud2lkdGggPSB3aWR0aDsKKyAg
ICBjLmhlaWdodCA9IGhlaWdodDsKKyAgICB2YXIgY29udGV4dCA9IGMuZ2V0Q29udGV4dCgiMmQi
KTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG91cjsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KDAsMCx3aWR0aCxoZWlnaHQpOworICAgIHJldHVybiBjOworfQorCit2YXIgY2FudmFzID0gY3Jl
YXRlQ2FudmFzSW1hZ2UoMTAwLCA1MCwgJyNmZmYnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKwordmFyIHBhdHRlcm5DYW52YXMgPSBjcmVhdGVDYW52YXNJbWFnZSgxMDAs
IDUwLCAnIzBmMCcpOwordmFyIHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybihwYXR0ZXJuQ2Fu
dmFzLCAnbm8tcmVwZWF0Jyk7CisKKy8vIE1vZGlmeSB0aGUgb3JpZ2luYWwgY2FudmFzIGFmdGVy
IHdlIGNyZWF0ZSBhIHBhdHRlcm4uCit2YXIgcGF0dGVybkN0eCA9IHBhdHRlcm5DYW52YXMuZ2V0
Q29udGV4dCgnMmQnKTsKK3BhdHRlcm5DdHguZmlsbFN0eWxlID0gJyNmMDAnOworcGF0dGVybkN0
eC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKKworY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm47Citj
dHguZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CisKK3BpeGVsU2hvdWxkQmUoY3R4LCAxLCAxLCBb
MCwgMjU1LCAwLCAyNTVdKTsKK3BpeGVsU2hvdWxkQmUoY3R4LCA5OCwgMSwgWzAsIDI1NSwgMCwg
MjU1XSk7CitwaXhlbFNob3VsZEJlKGN0eCwgMSwgNDgsIFswLCAyNTUsIDAsIDI1NV0pOworcGl4
ZWxTaG91bGRCZShjdHgsIDk4LCA0OCwgWzAsIDI1NSwgMCwgMjU1XSk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmNmFjZDM4Li43MmMxMWY0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDA5
LTA2LTIzICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwNTc4OiBbQ0FJ
Uk9dIHBhdHRlcm4gb2YgYSBjYW52YXMtZWxlbWVudCBjaGFuZ2VzIGFmdGVyCisgICAgICAgIG1v
ZGlmaWNhdGlvbnMgb24gY2FudmFzLWVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4CisKKyAgICAgICAgQ29weSBwaXhlbCBpbWFnZSBp
biBJbWFnZUJ1ZmZlcjo6aW1hZ2UoKSBqdXN0IGxpa2UgQ0cgYW5kIFNraWEgZ2x1ZS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRtbAorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6aW1hZ2UpOgorCiAyMDA5LTA2LTIyICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzaWxob3VldHRl
IGltYWdlIGZvciB0aGUgZW5hYmxlIHZpZXcgb2YgdGhlIFJlc291cmNlIHBhbmVsLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
aW5kZXggZDI2NTJkNi4uMTZlNWUzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC00Miw2ICs0MiwyNSBAQAogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCisvLyBDYWlybyBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8g
Y29weSBhIGNhaXJvX3N1cmZhY2VfdC4KKy8vIFNlZSBodHRwOi8vbGlzdHMuY2Fpcm9ncmFwaGlj
cy5vcmcvYXJjaGl2ZXMvY2Fpcm8vMjAwNy1KdW5lLzAxMDg3Ny5odG1sCisvLyBPbmNlIGNhaXJv
IHByb3ZpZGVzIHRoZSB3YXksIHVzZSB0aGUgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGlzLgorc3Rh
dGljIGlubGluZSBjYWlyb19zdXJmYWNlX3QqIGNvcHlTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSkgeworICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdCA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2Zvcm1hdChzdXJmYWNlKTsKKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBuZXdzdXJm
YWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
KworICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2UpOworICAgIGNhaXJv
X3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KGNyKTsK
KyAgICBjYWlyb19kZXN0cm95KGNyKTsKKworICAgIHJldHVybiBuZXdzdXJmYWNlOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNv
bnN0IEludFNpemUmIHNpemUpCkBAIC04Miw4ICsxMDEsMTggQEAgSW1hZ2UqIEltYWdlQnVmZmVy
OjppbWFnZSgpIGNvbnN0CiAgICAgICAgIC8vIEl0J3MgYXNzdW1lZCB0aGF0IGlmIGltYWdlKCkg
aXMgY2FsbGVkLCB0aGUgYWN0dWFsIHJlbmRlcmluZyB0byB0aGUKICAgICAgICAgLy8gR3JhcGhp
Y3NDb250ZXh0IG11c3QgYmUgZG9uZS4KICAgICAgICAgQVNTRVJUKGNvbnRleHQoKSk7CisKKyAg
ICAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQ09QWSBvZiB0aGUgaW1hZ2UgYW5kIHdpbGwgY2FjaGUg
dGhhdCBjb3B5LiBUaGlzIG1lYW5zCisgICAgICAgIC8vIHRoYXQgaWYgc3Vic2VxdWVudCBvcGVy
YXRpb25zIHRha2UgcGxhY2Ugb24gdGhlIGNvbnRleHQsIG5laXRoZXIgdGhlCisgICAgICAgIC8v
IGN1cnJlbnRseS1yZXR1cm5lZCBpbWFnZSwgbm9yIHRoZSByZXN1bHRzIG9mIGZ1dHVyZSBpbWFn
ZSgpIGNhbGxzLAorICAgICAgICAvLyB3aWxsIGNvbnRhaW4gdGhhdCBvcGVyYXRpb24uCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFRoaXMgc2VlbXMgc2lsbHksIGJ1dCBpcyB0aGUgd2F5IHRoZSBD
RyBwb3J0IHdvcmtzOiBpbWFnZSgpIGlzCisgICAgICAgIC8vIGludGVuZGVkIHRvIGJlIHVzZWQg
b25seSB3aGVuIHJlbmRlcmluZyBpcyAiY29tcGxldGUuIgorICAgICAgICBjYWlyb19zdXJmYWNl
X3QqIG5ld3N1cmZhY2UgPSBjb3B5U3VyZmFjZShtX2RhdGEubV9zdXJmYWNlKTsKKwogICAgICAg
ICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2UgdGhlIHBhc3NlZCBpbiBzdXJmYWNlIG9uIGRl
c3RydWN0aW9uCi0gICAgICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNhaXJvX3N1
cmZhY2VfcmVmZXJlbmNlKG1fZGF0YS5tX3N1cmZhY2UpKTsKKyAgICAgICAgbV9pbWFnZSA9IEJp
dG1hcEltYWdlOjpjcmVhdGUobmV3c3VyZmFjZSk7CiAgICAgfQogICAgIHJldHVybiBtX2ltYWdl
LmdldCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32550</attachid>
            <date>2009-07-09 22:45:13 -0700</date>
            <delta_ts>2009-07-16 00:02:54 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>6978</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZDk4N2RmYTQxMzEyMDQyNjBiNjRhODg4Y2QwNjhkNGYyMjA5YjcxOQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDExNTY5MGEu
LmY2NTkxZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNy0wOSAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDQUlST10gcGF0dGVybiBvZiBhIGNhbnZhcy1lbGVtZW50
IGNoYW5nZXMgYWZ0ZXIgbW9kaWZpY2F0aW9ucyBvbiBjYW52YXMtZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzgKKworICAgICAgICBD
b3B5IHBpeGVsIGltYWdlIGluIEltYWdlQnVmZmVyOjppbWFnZSgpIGp1c3QgbGlrZSBDRyBhbmQg
U2tpYSBnbHVlLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXBhdHRl
cm4tbW9kaWZ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1wYXR0
ZXJuLW1vZGlmeS5qczogQWRkZWQuCisgICAgICAgIChkYXRhVG9BcnJheSk6CisgICAgICAgIChn
ZXRQaXhlbCk6CisgICAgICAgIChwaXhlbFNob3VsZEJlKToKKyAgICAgICAgKGNyZWF0ZUNhbnZh
c0ltYWdlKToKKwogMjAwOS0wNy0wOCAgUGllcnJlIGQnSGVyYmVtb250ICA8cGRoZXJiZW1vbnRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZGRjMmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1t
b2RpZnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBjaGVja3MgaWYg
cGF0dGVybiBjaGFuZ2VzIGFmdGVyIHRoZSBzb3VyY2UgY2FudmFzIGlzIG1vZGlmaWVkLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4IC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0UGl4ZWwoY3R4LCAxLDEpIGlzIFswLDI1
NSwwLDI1NV0KK1BBU1MgZ2V0UGl4ZWwoY3R4LCA5OCwxKSBpcyBbMCwyNTUsMCwyNTVdCitQQVNT
IGdldFBpeGVsKGN0eCwgMSw0OCkgaXMgWzAsMjU1LDAsMjU1XQorUEFTUyBnZXRQaXhlbChjdHgs
IDk4LDQ4KSBpcyBbMCwyNTUsMCwyNTVdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXBhdHRlcm4tbW9kaWZ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtcGF0dGVybi1tb2RpZnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lMjI4MTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXBhdHRlcm4tbW9kaWZ5Lmh0bWwKQEAgLTAsMCArMSw2IEBACis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
Y2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iMmYzZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXBhdHRlcm4tbW9kaWZ5LmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8vIEJh
c2VkIG9uIGh0dHA6Ly9waGlsaXAuaHRtbDUub3JnL3Rlc3RzL2NhbnZhcy9zdWl0ZS90ZXN0cy8y
ZC5wYXR0ZXJuLm1vZGlmeS5jYW52YXMxLmh0bWwKKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBj
aGVja3MgaWYgcGF0dGVybiBjaGFuZ2VzIGFmdGVyIHRoZSBzb3VyY2UgY2FudmFzIGlzIG1vZGlm
aWVkLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4IC4i
KTsKKworZnVuY3Rpb24gZGF0YVRvQXJyYXkoZGF0YSkgeworICAgIHZhciByZXN1bHQgPSBuZXcg
QXJyYXkoZGF0YS5sZW5ndGgpCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsg
aSsrKQorICAgICAgICByZXN1bHRbaV0gPSBkYXRhW2ldOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2Z1bmN0aW9uIGdldFBpeGVsKGN0eCwgeCwgeSkgeworICAgIHZhciBkYXRhID0gY3R4Lmdl
dEltYWdlRGF0YSh4LHksMSwxKTsKKyAgICBpZiAoIWRhdGEpIC8vIGdldEltYWdlRGF0YSBmYWls
ZWQsIHdoaWNoIHNob3VsZCBuZXZlciBoYXBwZW4KKyAgICAgICAgcmV0dXJuIFstMSwtMSwtMSwt
MV07CisgICAgcmV0dXJuIGRhdGFUb0FycmF5KGRhdGEuZGF0YSk7Cit9CisKK2Z1bmN0aW9uIHBp
eGVsU2hvdWxkQmUoY3R4LCB4LCB5LCBjb2xvdXIpIHsKKyAgICBzaG91bGRCZSgiZ2V0UGl4ZWwo
Y3R4LCAiICsgW3gsIHldICsiKSIsICJbIitjb2xvdXIrIl0iKTsKK30KKworZnVuY3Rpb24gY3Jl
YXRlQ2FudmFzSW1hZ2Uod2lkdGgsIGhlaWdodCwgY29sb3VyKSB7CisgICAgdmFyIGMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjLndpZHRoID0gd2lkdGg7CisgICAg
Yy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgdmFyIGNvbnRleHQgPSBjLmdldENvbnRleHQoIjJkIik7
CisgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xvdXI7CisgICAgY29udGV4dC5maWxsUmVjdCgw
LDAsd2lkdGgsaGVpZ2h0KTsKKyAgICByZXR1cm4gYzsKK30KKwordmFyIGNhbnZhcyA9IGNyZWF0
ZUNhbnZhc0ltYWdlKDEwMCwgNTAsICcjZmZmJyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRl
eHQoJzJkJyk7CisKK3ZhciBwYXR0ZXJuQ2FudmFzID0gY3JlYXRlQ2FudmFzSW1hZ2UoMTAwLCA1
MCwgJyMwZjAnKTsKK3ZhciBwYXR0ZXJuID0gY3R4LmNyZWF0ZVBhdHRlcm4ocGF0dGVybkNhbnZh
cywgJ25vLXJlcGVhdCcpOworCisvLyBNb2RpZnkgdGhlIG9yaWdpbmFsIGNhbnZhcyBhZnRlciB3
ZSBjcmVhdGUgYSBwYXR0ZXJuLgordmFyIHBhdHRlcm5DdHggPSBwYXR0ZXJuQ2FudmFzLmdldENv
bnRleHQoJzJkJyk7CitwYXR0ZXJuQ3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsKK3BhdHRlcm5DdHgu
ZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CisKK2N0eC5maWxsU3R5bGUgPSBwYXR0ZXJuOworY3R4
LmZpbGxSZWN0KDAsIDAsIDEwMCwgNTApOworCitwaXhlbFNob3VsZEJlKGN0eCwgMSwgMSwgWzAs
IDI1NSwgMCwgMjU1XSk7CitwaXhlbFNob3VsZEJlKGN0eCwgOTgsIDEsIFswLCAyNTUsIDAsIDI1
NV0pOworcGl4ZWxTaG91bGRCZShjdHgsIDEsIDQ4LCBbMCwgMjU1LCAwLCAyNTVdKTsKK3BpeGVs
U2hvdWxkQmUoY3R4LCA5OCwgNDgsIFswLCAyNTUsIDAsIDI1NV0pOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYTc0ODNiNy4uNTQ1OTlhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0w
Ny0wOSAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDQUlST10gcGF0dGVybiBv
ZiBhIGNhbnZhcy1lbGVtZW50IGNoYW5nZXMgYWZ0ZXIgbW9kaWZpY2F0aW9ucyBvbiBjYW52YXMt
ZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1NzgKKworICAgICAgICBDb3B5IHBpeGVsIGltYWdlIGluIEltYWdlQnVmZmVyOjppbWFnZSgp
IGp1c3QgbGlrZSBDRyBhbmQgU2tpYSBnbHVlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFz
L2NhbnZhcy1wYXR0ZXJuLW1vZGlmeS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKGNvcHlTdXJmYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjppbWFnZSk6CisKIDIwMDktMDctMDkgIFNpbW9u
IEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIFF0IGJ1
aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKaW5kZXggZDI2NTJkNi4uNzMzYWViZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC00Miw2ICs0
MiwyNiBAQAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCisvLyBDYWlybyBkb2Vzbid0IHByb3Zp
ZGUgYSB3YXkgdG8gY29weSBhIGNhaXJvX3N1cmZhY2VfdC4KKy8vIFNlZSBodHRwOi8vbGlzdHMu
Y2Fpcm9ncmFwaGljcy5vcmcvYXJjaGl2ZXMvY2Fpcm8vMjAwNy1KdW5lLzAxMDg3Ny5odG1sCisv
LyBPbmNlIGNhaXJvIHByb3ZpZGVzIHRoZSB3YXksIHVzZSB0aGUgZnVuY3Rpb24gaW5zdGVhZCBv
ZiB0aGlzLgorc3RhdGljIGlubGluZSBjYWlyb19zdXJmYWNlX3QqIGNvcHlTdXJmYWNlKGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQgPSBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoc3VyZmFjZSk7CisgICAgaW50IHdpZHRoID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CisgICAgaW50IGhlaWdodCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsKKyAgICBpbnQgc3RyaWRlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworICAgIGNhaXJvX3N1cmZh
Y2VfdCogbmV3c3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CisKKyAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShuZXdzdXJmYWNl
KTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOworICAg
IGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWly
b19wYWludChjcik7CisgICAgY2Fpcm9fZGVzdHJveShjcik7CisKKyAgICByZXR1cm4gbmV3c3Vy
ZmFjZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbWFnZUJ1ZmZlckRhdGE6OkltYWdl
QnVmZmVyRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtODIsOCArMTAyLDE4IEBAIEltYWdl
KiBJbWFnZUJ1ZmZlcjo6aW1hZ2UoKSBjb25zdAogICAgICAgICAvLyBJdCdzIGFzc3VtZWQgdGhh
dCBpZiBpbWFnZSgpIGlzIGNhbGxlZCwgdGhlIGFjdHVhbCByZW5kZXJpbmcgdG8gdGhlCiAgICAg
ICAgIC8vIEdyYXBoaWNzQ29udGV4dCBtdXN0IGJlIGRvbmUuCiAgICAgICAgIEFTU0VSVChjb250
ZXh0KCkpOworCisgICAgICAgIC8vIFRoaXMgY3JlYXRlcyBhIENPUFkgb2YgdGhlIGltYWdlIGFu
ZCB3aWxsIGNhY2hlIHRoYXQgY29weS4gVGhpcyBtZWFucworICAgICAgICAvLyB0aGF0IGlmIHN1
YnNlcXVlbnQgb3BlcmF0aW9ucyB0YWtlIHBsYWNlIG9uIHRoZSBjb250ZXh0LCBuZWl0aGVyIHRo
ZQorICAgICAgICAvLyBjdXJyZW50bHktcmV0dXJuZWQgaW1hZ2UsIG5vciB0aGUgcmVzdWx0cyBv
ZiBmdXR1cmUgaW1hZ2UoKSBjYWxscywKKyAgICAgICAgLy8gd2lsbCBjb250YWluIHRoYXQgb3Bl
cmF0aW9uLgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIHNlZW1zIHNpbGx5LCBidXQgaXMg
dGhlIHdheSB0aGUgQ0cgcG9ydCB3b3JrczogaW1hZ2UoKSBpcworICAgICAgICAvLyBpbnRlbmRl
ZCB0byBiZSB1c2VkIG9ubHkgd2hlbiByZW5kZXJpbmcgaXMgImNvbXBsZXRlLiIKKyAgICAgICAg
Y2Fpcm9fc3VyZmFjZV90KiBuZXdzdXJmYWNlID0gY29weVN1cmZhY2UobV9kYXRhLm1fc3VyZmFj
ZSk7CisKICAgICAgICAgLy8gQml0bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQgaW4g
c3VyZmFjZSBvbiBkZXN0cnVjdGlvbgotICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZShjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX2RhdGEubV9zdXJmYWNlKSk7CisgICAgICAg
IG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ld3N1cmZhY2UpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9pbWFnZS5nZXQoKTsKIH0K
</data>
<flag name="review"
          id="16972"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>