<?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>3615</bug_id>
          
          <creation_ts>2005-06-19 22:18:25 -0700</creation_ts>
          <short_desc>canvas transform matrix does not apply to patterns</short_desc>
          <delta_ts>2005-07-24 16:01:10 -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>412</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 2000</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.shaderlab.com/test/canvas/scanlines.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="Randy Reddig">ydnar</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12630</commentid>
    <comment_count>0</comment_count>
    <who name="Randy Reddig">ydnar</who>
    <bug_when>2005-06-19 22:18:25 -0700</bug_when>
    <thetext>CanvasPattern usage is more interesting when it can be transformed by the
canvas&apos; current transform matrix. Scaling/rotation of bitmaps make interesting
effects.

The WHATWG spec on the subject is ambiguous on the subject:

http://www.whatwg.org/specs/web-apps/current-work/#canvaspattern0

In addition, it specifies the origin of the pattern to be centered on the center
of the canvas, which makes the output pixels of a rendering operation dependent
on the size of the viewport, not orthagonal as all other raster ops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12664</commentid>
    <comment_count>1</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2005-06-20 02:53:24 -0700</bug_when>
    <thetext>What&apos;s ambiguous?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12686</commentid>
    <comment_count>2</comment_count>
    <who name="Randy Reddig">ydnar</who>
    <bug_when>2005-06-20 07:56:34 -0700</bug_when>
    <thetext>Whether patterns (or gradients) are subject to transformation. The document does
not specify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12747</commentid>
    <comment_count>3</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2005-06-20 17:53:26 -0700</bug_when>
    <thetext>&quot;The transformation matrix is applied to all drawing operations prior to their
being rendered.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12754</commentid>
    <comment_count>4</comment_count>
    <who name="Randy Reddig">ydnar</who>
    <bug_when>2005-06-20 19:24:35 -0700</bug_when>
    <thetext>Okay, so you agree that Safari&apos;s behavior is incorrect then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12784</commentid>
    <comment_count>5</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2005-06-21 03:35:25 -0700</bug_when>
    <thetext>I&apos;ve no idea what Safari does, but if it ignores the transformation matrix when
painting patterns, then I&apos;d say yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12822</commentid>
    <comment_count>6</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-06-21 23:08:03 -0700</bug_when>
    <thetext>Then i&apos;ll say yes too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13107</commentid>
    <comment_count>7</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-06-24 16:19:43 -0700</bug_when>
    <thetext>This is also in Radar as &lt;rdar://problem/4161599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14454</commentid>
    <comment_count>8</comment_count>
      <attachid>2930</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-07-12 12:19:59 -0700</bug_when>
    <thetext>Created attachment 2930
Create patterns lazily

Here&apos;s a patch that changes the behavior so that fill and stroke patterns are
created in the respective fill and stroke functions using the current CTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14460</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-12 12:56:58 -0700</bug_when>
    <thetext>It might be interesting to compare this with how I did the (incomplete) pattern code for KCanvas.  The 
same fixes might be applicable there.

The file in question is
WebCore/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14465</commentid>
    <comment_count>10</comment_count>
      <attachid>2930</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-07-12 13:50:42 -0700</bug_when>
    <thetext>Comment on attachment 2930
Create patterns lazily

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15142</commentid>
    <comment_count>11</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2005-07-24 16:01:10 -0700</bug_when>
    <thetext>Landed this patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2930</attachid>
            <date>2005-07-12 12:19:59 -0700</date>
            <delta_ts>2005-07-12 13:50:42 -0700</delta_ts>
            <desc>Create patterns lazily</desc>
            <filename>canvas-transform.diff</filename>
            <type>text/plain</type>
            <size>12159</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuRFNfU3RvcmUKPyAuZ2RiX2hpc3RvcnkKPyBmb28KPyBGb3J3YXJkaW5nSGVhZGVycy9taXNj
L2hhc2h0YWJsZS5oCj8ga2h0bWwvLkRTX1N0b3JlCj8ga2h0bWwvY3NzLy5EU19TdG9yZQo/IGxh
eW91dC10ZXN0cy8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvY3NzMS8uRFNfU3RvcmUKPyBsYXlv
dXQtdGVzdHMvY3NzMS9iYXNpYy8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvY3NzMS9jbGFzc2lm
aWNhdGlvbi8uRFNfU3RvcmUKPyBsYXlvdXQtdGVzdHMvZmFzdC8uRFNfU3RvcmUKPyBsYXlvdXQt
dGVzdHMvZmFzdC9kb20vLkRTX1N0b3JlCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2Nzcy1kb20t
cmVhZC0yLWV4cGVjdGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9jc3MtZG9tLXJlYWQt
Mi5odG1sCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1pdGVt
LWV4cGVjdGVkLnR4dAo/IGxheW91dC10ZXN0cy9mYXN0L2RvbS9jc3Mtc3R5bGUtZGVjbGFyYXRp
b24taXRlbS5odG1sCj8gbGF5b3V0LXRlc3RzL2Zhc3QvZG9tL2lkcwo/IGxheW91dC10ZXN0cy9m
YXN0L2pzL2xvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKPyBsYXlvdXQtdGVzdHMvZmFzdC9q
cy9sb2NhdGlvbi1hc3NpZ24uaHRtbAo/IGxheW91dC10ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9u
ZXctbG9jYXRpb24uaHRtbApJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL0NoYW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NDEzCmRp
ZmYgLXUgLXIxLjQ0MTMgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAwNS8wNy8xMiAxODoxMzo0
NgkxLjQ0MTMKKysrIENoYW5nZUxvZwkyMDA1LzA3LzEyIDE5OjE5OjE4CkBAIC0xLDMgKzEsMzEg
QEAKKzIwMDUtMDctMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQG1hYy5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBjYXNlcyBh
ZGRlZDogKE5PTkUpCisKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19odG1sLmNwcDoKKyAgICAg
ICAgKEtKUzo6S0pTOjpDb250ZXh0MkRGdW5jdGlvbjo6dHJ5Q2FsbCk6CisJVXBkYXRlIHRoZSBm
aWxsIGFuZCBzdHJva2UgaW1hZ2UgcGF0dGVybnMgbGF6aWx5IGluIHRoZQorCXJlc3BlY3RpdmUg
ZnVuY3Rpb24gY2FsbHMgaWYgdGhleSBhcmVuJ3QgdmFsaWQgb3IgaWYgdGhlCisJdHJhbnNmb3Jt
YXRpb24gbWF0cml4IGhhcyBjaGFuZ2VkLgorCQorICAgICAgICAoS0pTOjpDb250ZXh0MkQ6OnVw
ZGF0ZUZpbGxJbWFnZVBhdHRlcm4pOgorICAgICAgICAoS0pTOjpDb250ZXh0MkQ6OnVwZGF0ZVN0
cm9rZUltYWdlUGF0dGVybik6CisJTmV3IGZ1bmN0aW9ucyBmb3IgdXBkYXRpbmcgdGhlIGZpbGwg
YW5kIHN0cm9rZSBpbWFnZSBwYXR0ZXJucy4KKwkKKyAgICAgICAgKEtKUzo6Q29udGV4dDJEOjpw
dXRWYWx1ZSk6CisJRG9uJ3QgdXBkYXRlIHRoZSBpbWFnZSBwYXR0ZXJucyBoZXJlLgorCQorICAg
ICAgICAoS0pTOjpDb250ZXh0MkQ6OkNvbnRleHQyRCk6CisJSW5pdGlhbGl6ZSBuZXcgbWVtYmVy
IHZhcmlhYmxlcy4KKwkKKyAgICAgICAgKEtKUzo6SW1hZ2VQYXR0ZXJuOjpjcmVhdGVQYXR0ZXJu
KToKKwlOZXcgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHBhdHRlcm5zIGdpdmVuIGEgdHJhbnNmb3Jt
LgorCQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2h0bWwuaDoKKwlVcGRhdGUgaW5zdGFuY2Ug
dmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCisJCiAyMDA1LTA3LTEyICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCBjYXNlcyBtb2RpZmllZDoKSW5kZXg6
IGtodG1sL2VjbWEva2pzX2h0bWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEy
MgpkaWZmIC11IC1yMS4xMjIga2pzX2h0bWwuY3BwCi0tLSBranNfaHRtbC5jcHAJMjAwNS8wNy8w
OSAyMDoxOTowNQkxLjEyMgorKysga2pzX2h0bWwuY3BwCTIwMDUvMDcvMTIgMTk6MTk6MjAKQEAg
LTQwMTksOSArNDAxOSwxMiBAQAogICAgICAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5n
KGRyYXdpbmdDb250ZXh0LCBzaGFkaW5nKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGRyYXdpbmdDb250ZXh0KTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXNJbWFnZVBhdHRlcm4oY29udGV4dE9iamVjdC0+X2ZpbGxTdHlsZSkpIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0T2JqZWN0LT51cGRhdGVGaWxsSW1hZ2VQYXR0ZXJuKCk7
CisgICAgICAgICAgICAgICAgQ0dDb250ZXh0RmlsbFBhdGgoZHJhd2luZ0NvbnRleHQpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIENHQ29udGV4dEZp
bGxQYXRoIChkcmF3aW5nQ29udGV4dCk7CisgICAgICAgICAgICAgICAgQ0dDb250ZXh0RmlsbFBh
dGgoZHJhd2luZ0NvbnRleHQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgcmVuZGVy
ZXItPnNldE5lZWRzSW1hZ2VVcGRhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0OSw2
ICs0MDUyLDkgQEAKICAgICAgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhkcmF3aW5n
Q29udGV4dCwgc2hhZGluZyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShkcmF3aW5nQ29udGV4dCk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzSW1hZ2VQYXR0ZXJuKGNvbnRleHRPYmplY3QtPl9zdHJva2VTdHlsZSkpIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0T2JqZWN0LT51cGRhdGVTdHJva2VJbWFnZVBhdHRlcm4oKTsKKyAg
ICAgICAgICAgICAgICBDR0NvbnRleHRGaWxsUGF0aChkcmF3aW5nQ29udGV4dCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U3Ryb2tl
UGF0aCAoZHJhd2luZ0NvbnRleHQpOwpAQCAtNDIxOSw2ICs0MjI1LDggQEAKICAgICAgICAgICAg
IGZsb2F0IHkgPSAoZmxvYXQpYXJnc1sxXS50b051bWJlcihleGVjKTsKICAgICAgICAgICAgIGZs
b2F0IHcgPSAoZmxvYXQpYXJnc1syXS50b051bWJlcihleGVjKTsKICAgICAgICAgICAgIGZsb2F0
IGggPSAoZmxvYXQpYXJnc1szXS50b051bWJlcihleGVjKTsKKyAgICAgICAgICAgIGlmIChpc0lt
YWdlUGF0dGVybihjb250ZXh0T2JqZWN0LT5fZmlsbFN0eWxlKSkKKyAgICAgICAgICAgICAgICBj
b250ZXh0T2JqZWN0LT51cGRhdGVGaWxsSW1hZ2VQYXR0ZXJuKCk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRGaWxsUmVjdCAoZHJhd2luZ0NvbnRleHQsIENHUmVjdE1ha2UoeCx5LHcsaCkpOwogICAg
ICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzSW1hZ2VVcGRhdGUoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDIzNCw3ICs0MjQyLDggQEAKICAgICAgICAgICAgIGZsb2F0IHkgPSAoZmxvYXQp
YXJnc1sxXS50b051bWJlcihleGVjKTsKICAgICAgICAgICAgIGZsb2F0IHcgPSAoZmxvYXQpYXJn
c1syXS50b051bWJlcihleGVjKTsKICAgICAgICAgICAgIGZsb2F0IGggPSAoZmxvYXQpYXJnc1sz
XS50b051bWJlcihleGVjKTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzSW1hZ2VQ
YXR0ZXJuKGNvbnRleHRPYmplY3QtPl9zdHJva2VTdHlsZSkpCisgICAgICAgICAgICAgICAgY29u
dGV4dE9iamVjdC0+dXBkYXRlU3Ryb2tlSW1hZ2VQYXR0ZXJuKCk7CiAgICAgICAgICAgICBpZiAo
c2l6ZSA+IDQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUmVjdFdpdGhXaWR0aCAo
ZHJhd2luZ0NvbnRleHQsIENHUmVjdE1ha2UoeCx5LHcsaCksIChmbG9hdClhcmdzWzRdLnRvTnVt
YmVyKGV4ZWMpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTQ3ODYsNiArNDc5NSw0NCBAQAogICAg
IENGUmVsZWFzZSAoY29sb3JSZWYpOwogfQogCit2b2lkIENvbnRleHQyRDo6dXBkYXRlRmlsbElt
YWdlUGF0dGVybigpCit7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBkcmF3aW5nQ29udGV4
dCgpOworICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQ29udGV4dEdldENUTShj
b250ZXh0KTsKKyAgICAKKyAgICBpZiAoIV92YWxpZEZpbGxJbWFnZVBhdHRlcm4gfHwgIUNHQWZm
aW5lVHJhbnNmb3JtRXF1YWxUb1RyYW5zZm9ybSh0cmFuc2Zvcm0sIF9sYXN0RmlsbEltYWdlUGF0
dGVybkNUTSkpIHsKKyAgICAgICAgSW1hZ2VQYXR0ZXJuICppbWFnZVBhdHRlcm4gPSBzdGF0aWNf
Y2FzdDxJbWFnZVBhdHRlcm4gKj4oX2ZpbGxTdHlsZS5pbXAoKSk7CisgICAgICAgIENHUGF0dGVy
blJlZiBwYXR0ZXJuID0gaW1hZ2VQYXR0ZXJuLT5jcmVhdGVQYXR0ZXJuKENHQ29udGV4dEdldENU
TShjb250ZXh0KSk7CisgICAgICAgIGZsb2F0IHBhdHRlcm5BbHBoYSA9IDE7CisgICAgICAgIENH
Q29sb3JTcGFjZVJlZiBwYXR0ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDAp
OworICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJuU3Bh
Y2UpOworICAgICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjb250ZXh0LCBwYXR0ZXJuLCAm
cGF0dGVybkFscGhhKTsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShwYXR0ZXJuU3BhY2Up
OworICAgICAgICBDR1BhdHRlcm5SZWxlYXNlKHBhdHRlcm4pOworICAgICAgICBfdmFsaWRGaWxs
SW1hZ2VQYXR0ZXJuID0gdHJ1ZTsKKyAgICAgICAgX2xhc3RGaWxsSW1hZ2VQYXR0ZXJuQ1RNID0g
dHJhbnNmb3JtOworICAgIH0KK30KKwordm9pZCBDb250ZXh0MkQ6OnVwZGF0ZVN0cm9rZUltYWdl
UGF0dGVybigpCit7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBkcmF3aW5nQ29udGV4dCgp
OworICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQ29udGV4dEdldENUTShjb250
ZXh0KTsKKyAgICAKKyAgICBpZiAoIV92YWxpZFN0cm9rZUltYWdlUGF0dGVybiB8fCAhQ0dBZmZp
bmVUcmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKHRyYW5zZm9ybSwgX2xhc3RTdHJva2VJbWFnZVBh
dHRlcm5DVE0pKSB7CisgICAgICAgIEltYWdlUGF0dGVybiAqaW1hZ2VQYXR0ZXJuID0gc3RhdGlj
X2Nhc3Q8SW1hZ2VQYXR0ZXJuICo+KF9maWxsU3R5bGUuaW1wKCkpOworICAgICAgICBDR1BhdHRl
cm5SZWYgcGF0dGVybiA9IGltYWdlUGF0dGVybi0+Y3JlYXRlUGF0dGVybihDR0NvbnRleHRHZXRD
VE0oY29udGV4dCkpOworICAgICAgICBmbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOworICAgICAgICBD
R0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigw
KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJu
U3BhY2UpOworICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VQYXR0ZXJuKGNvbnRleHQsIHBhdHRl
cm4sICZwYXR0ZXJuQWxwaGEpOworICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKHBhdHRlcm5T
cGFjZSk7CisgICAgICAgIENHUGF0dGVyblJlbGVhc2UocGF0dGVybik7CisgICAgICAgIF92YWxp
ZFN0cm9rZUltYWdlUGF0dGVybiA9IHRydWU7CisgICAgICAgIF9sYXN0U3Ryb2tlSW1hZ2VQYXR0
ZXJuQ1RNID0gdHJhbnNmb3JtOworICAgIH0KK30KKwogdm9pZCBDb250ZXh0MkQ6OnB1dFZhbHVl
KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBjb25zdCBWYWx1ZSYgdmFsdWUsIGludCAvKmF0
dHIqLykKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CkBA
IC00ODEwLDE1ICs0ODU3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+c2V0RXhjZXB0
aW9uKGVycik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNJbWFnZVBhdHRlcm4odmFsdWUpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHBhdHRlcm5BbHBoYSA9IDE7Ci0gICAgICAgICAgICAgICAgICAg
IEltYWdlUGF0dGVybiAqaW1hZ2VQYXR0ZXJuID0gc3RhdGljX2Nhc3Q8SW1hZ2VQYXR0ZXJuKj4o
byk7Ci0gICAgICAgICAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlZiBwYXR0ZXJuU3BhY2UgPSBD
R0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBDR0Nv
bnRleHRTZXRTdHJva2VDb2xvclNwYWNlKGNvbnRleHQsIHBhdHRlcm5TcGFjZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIENHQ29udGV4dFNldFN0cm9rZVBhdHRlcm4oY29udGV4dCwgaW1hZ2VQYXR0
ZXJuLT5nZXRQYXR0ZXJuKCksICZwYXR0ZXJuQWxwaGEpOwotICAgICAgICAgICAgICAgICAgICBD
R0NvbG9yU3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7Ci0gICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ4NDEsMTYgKzQ4
NzksNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgaWYgKGlzSW1hZ2VQYXR0ZXJuKHZhbHVlKSkgewotICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwotICAgICAgICAgICAgICAgICAgICBJ
bWFnZVBhdHRlcm4gKmltYWdlUGF0dGVybiA9IHN0YXRpY19jYXN0PEltYWdlUGF0dGVybio+KG8p
OwotICAgICAgICAgICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNlID0gQ0dD
b2xvclNwYWNlQ3JlYXRlUGF0dGVybihOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlKTsKLSAgICAgICAgICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRlcm4oY29udGV4dCwgaW1hZ2VQYXR0ZXJuLT5n
ZXRQYXR0ZXJuKCksICZwYXR0ZXJuQWxwaGEpOwotICAgICAgICAgICAgICAgICAgICBDR0NvbG9y
U3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgLy8gR3JhZGllbnRzIGFyZSBjb25zdHJ1Y3RlZCB3aGVuIG5lZWRlZCBkdXJpbmcg
ZmlsbCBhbmQgc3Ryb2tlIG9wZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgLy8gR3JhZGllbnRz
IGFuZCBpbWFnZSBwYXR0ZXJucyBhcmUgY29uc3RydWN0ZWQgd2hlbiBuZWVkZWQgZHVyaW5nIGZp
bGwgYW5kIHN0cm9rZSBvcGVyYXRpb25zLgogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTQ5ODYsNyArNTAxNSw4IEBACiB9CiAKIENvbnRleHQyRDo6Q29u
dGV4dDJEKEhUTUxFbGVtZW50SW1wbCAqZSkKLSAgOiBfZWxlbWVudChlKSwgX25lZWRzRmx1c2hS
YXN0ZXJDYWNoZShmYWxzZSkKKyAgOiBfdmFsaWRGaWxsSW1hZ2VQYXR0ZXJuKGZhbHNlKSwgX3Zh
bGlkU3Ryb2tlSW1hZ2VQYXR0ZXJuKGZhbHNlKSwKKyAgICBfZWxlbWVudChlKSwgX25lZWRzRmx1
c2hSYXN0ZXJDYWNoZShmYWxzZSkKIHsKICAgICBfbGluZVdpZHRoID0gTnVtYmVyICgxLik7CiAg
ICAgX3N0cm9rZVN0eWxlID0gU3RyaW5nICgiYmxhY2siKTsKQEAgLTUzNjgsMzcgKzUzOTgsNDMg
QEAKIAogQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0
ZXJuLCBOVUxMIH07CiBJbWFnZVBhdHRlcm46OkltYWdlUGF0dGVybihJbWFnZSAqaSwgaW50IHJl
cGV0aXRpb25UeXBlKQorICAgIDpfcncoMCksIF9yaCgwKQogewotICAgIF9yZXBldGl0aW9uVHlw
ZSA9IHJlcGV0aXRpb25UeXBlOwogICAgIGtodG1sOjpDYWNoZWRJbWFnZSAqY2kgPSBpLT5pbWFn
ZSgpOwogICAgIGlmIChjaSkgewogICAgICAgICBfcGl4bWFwID0gY2ktPnBpeG1hcCgpOwotICAg
ICAgICBmbG9hdCB3ID0gX3BpeG1hcC53aWR0aCgpLCBydyA9IDA7Ci0gICAgICAgIGZsb2F0IGgg
PSBfcGl4bWFwLmhlaWdodCgpLCByaCA9IDA7Ci0gICAgICAgIENHUmVjdCBib3VuZHMgPSBDR1Jl
Y3RNYWtlICgwLCAwLCB3LCBoKTsKLSAKKyAgICAgICAgZmxvYXQgdyA9IF9waXhtYXAud2lkdGgo
KTsKKyAgICAgICAgZmxvYXQgaCA9IF9waXhtYXAuaGVpZ2h0KCk7CisgICAgICAgIF9ib3VuZHMg
PSBDR1JlY3RNYWtlICgwLCAwLCB3LCBoKTsKKyAgICAgICAgCiAgICAgICAgIGlmIChyZXBldGl0
aW9uVHlwZSA9PSBSZXBlYXQpIHsKLSAgICAgICAgICAgIHJ3ID0gdzsgcmggPSBoOworICAgICAg
ICAgICAgX3J3ID0gdzsgX3JoID0gaDsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChyZXBl
dGl0aW9uVHlwZSA9PSBSZXBlYXRYKSB7Ci0gICAgICAgICAgICBydyA9IHc7IHJoID0gMDsKKyAg
ICAgICAgICAgIF9ydyA9IHc7IF9yaCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAo
cmVwZXRpdGlvblR5cGUgPT0gUmVwZWF0WSkgewotICAgICAgICAgICAgcncgPSAwOyByaCA9IGg7
CisgICAgICAgICAgICBfcncgPSAwOyBfcmggPSBoOwogICAgICAgICB9CiAgICAgICAgIGVsc2Ug
aWYgKHJlcGV0aXRpb25UeXBlID09IE5vUmVwZWF0KSB7Ci0gICAgICAgICAgICBydyA9IDA7IHJo
ID0gMDsKKyAgICAgICAgICAgIF9ydyA9IDA7IF9yaCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAg
ICAgIAotICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybUlkZW50aXR5OwotICAgICAgICB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxl
ICh0cmFuc2Zvcm0sIDEsIC0xKTsKLSAgICAgICAgdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zv
cm1UcmFuc2xhdGUgKHRyYW5zZm9ybSwgMCwgLWgpOwotICAgICAgICAKLSAgICAgICAgX3BhdHRl
cm5SZWYgPSBDR1BhdHRlcm5DcmVhdGUodGhpcywgYm91bmRzLCB0cmFuc2Zvcm0sIHJ3LCByaCwg
Ci0gICAgICAgICAgICBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCB0cnVlLCAmcGF0
dGVybkNhbGxiYWNrcyk7CiAgICAgfQogfQogCitDR1BhdHRlcm5SZWYgSW1hZ2VQYXR0ZXJuOjpj
cmVhdGVQYXR0ZXJuKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAoX3Bp
eG1hcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgCisgICAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBwYXR0ZXJu
VHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZShwYXR0ZXJuVHJhbnNmb3JtLCAtMSwg
LTEpOworICAgIHBhdHRlcm5UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShw
YXR0ZXJuVHJhbnNmb3JtLCAwLCAtX3BpeG1hcC5oZWlnaHQoKSk7CisKKyAgICByZXR1cm4gQ0dQ
YXR0ZXJuQ3JlYXRlKHRoaXMsIF9ib3VuZHMsIHBhdHRlcm5UcmFuc2Zvcm0sIF9ydywgX3JoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2lu
ZywgdHJ1ZSwgJnBhdHRlcm5DYWxsYmFja3MpOworfQorCiBWYWx1ZSBJbWFnZVBhdHRlcm46OnRy
eUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29u
c3QKIHsKICAgICBjb25zdCBIYXNoVGFibGUqIHRhYmxlID0gY2xhc3NJbmZvKCktPnByb3BIYXNo
VGFibGU7IC8vIGdldCB0aGUgcmlnaHQgaGFzaHRhYmxlCkBAIC01NDI0LDE0ICs1NDYwLDYgQEAK
IAogdm9pZCBJbWFnZVBhdHRlcm46OnB1dFZhbHVlKEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2Vu
LCBjb25zdCBWYWx1ZSYgdmFsdWUsIGludCAvKmF0dHIqLykKIHsKLX0KLQotSW1hZ2VQYXR0ZXJu
Ojp+SW1hZ2VQYXR0ZXJuKCkKLXsKLSAgICBpZiAoX3BhdHRlcm5SZWYpIHsKLSAgICAgICAgQ0dQ
YXR0ZXJuUmVsZWFzZSAoX3BhdHRlcm5SZWYpOwotICAgICAgICBfcGF0dGVyblJlZiA9IDA7Ci0g
ICAgfQogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCkluZGV4OiBraHRtbC9lY21hL2tqc19odG1sLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvZWNtYS9ranNfaHRtbC5oLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjUwCmRpZmYgLXUgLXIxLjUwIGtqc19odG1sLmgKLS0tIGtqc19o
dG1sLmgJMjAwNS8wNy8wOSAyMDoxOTowNQkxLjUwCisrKyBranNfaHRtbC5oCTIwMDUvMDcvMTIg
MTk6MTk6MjAKQEAgLTQxOCw3ICs0MTgsMTMgQEAKICAgICAKICAgICAvLyBGSVhNRTogTWFjaW50
b3NoIHNwZWNpZmljLCBhbmQgc2hvdWxkIGJlIGFic3RyYWN0ZWQgYnkgS1dRIGluIFFQYWludGVy
LgogICAgIENHQ29udGV4dFJlZiBkcmF3aW5nQ29udGV4dCgpOwotCisgICAgQ0dBZmZpbmVUcmFu
c2Zvcm0gX2xhc3RGaWxsSW1hZ2VQYXR0ZXJuQ1RNOworICAgIENHQWZmaW5lVHJhbnNmb3JtIF9s
YXN0U3Ryb2tlSW1hZ2VQYXR0ZXJuQ1RNOworICAgIGJvb2wgX3ZhbGlkRmlsbEltYWdlUGF0dGVy
bjsKKyAgICBib29sIF92YWxpZFN0cm9rZUltYWdlUGF0dGVybjsKKyAgICB2b2lkIHVwZGF0ZUZp
bGxJbWFnZVBhdHRlcm4oKTsKKyAgICB2b2lkIHVwZGF0ZVN0cm9rZUltYWdlUGF0dGVybigpOwor
ICAgIAogICAgIHZvaWQgc2V0U2hhZG93KEV4ZWNTdGF0ZSAqZXhlYyk7CiAKICAgICBraHRtbDo6
U2hhcmVkUHRyPERPTTo6SFRNTEVsZW1lbnRJbXBsPiBfZWxlbWVudDsKQEAgLTUwNyw3ICs1MTMs
NiBAQAogICBjbGFzcyBJbWFnZVBhdHRlcm4gOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVibGlj
OgogICAgIEltYWdlUGF0dGVybihJbWFnZSAqaSwgaW50IHR5cGUpOwotICAgIH5JbWFnZVBhdHRl
cm4oKTsKICAgICB2aXJ0dWFsIFZhbHVlIHRyeUdldChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElk
ZW50aWZpZXIgJnByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgVmFsdWUgZ2V0VmFsdWVQcm9wZXJ0
eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHRy
eVB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwgY29u
c3QgVmFsdWUmIHZhbHVlLCBpbnQgYXR0ciA9IE5vbmUpOwpAQCAtNTE3LDcgKzUyMiw3IEBACiAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogICAgIAogICAgIC8vIEZJWE1FOiBNYWNp
bnRvc2ggc3BlY2lmaWMsIGFuZCBzaG91bGQgYmUgYWJzdHJhY3RlZCBieSBLV1EgaW4gUVBhaW50
ZXIuCi0gICAgQ0dQYXR0ZXJuUmVmIGdldFBhdHRlcm4oKSB7IHJldHVybiBfcGF0dGVyblJlZjsg
fQorICAgIENHUGF0dGVyblJlZiBjcmVhdGVQYXR0ZXJuKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybSk7CiAgICAgCiAgICAgUVBpeG1hcCBwaXhtYXAoKSB7IHJldHVybiBfcGl4bWFwOyB9CiAg
ICAgCkBAIC01MjYsMTEgKzUzMSwxMCBAQAogICAgIH07CiAgICAgCiBwcml2YXRlOgotICAgIGlu
dCBfcmVwZXRpdGlvblR5cGU7CisgICAgZmxvYXQgX3J3LCBfcmg7CiAgICAgUVBpeG1hcCBfcGl4
bWFwOwotCi0gICAgLy8gRklYTUU6IE1hY2ludG9zaCBzcGVjaWZpYywgYW5kIHNob3VsZCBiZSBh
YnN0cmFjdGVkIGJ5IEtXUSBpbiBRUGl4bWFwLgotICAgIENHUGF0dGVyblJlZiBfcGF0dGVyblJl
ZjsKKyAgICAvLyBGSVhNRTogTWFjaW50b3NoIHNwZWNpZmljLCBhbmQgc2hvdWxkIGJlIGFic3Ry
YWN0ZWQgYnkgS1dRIGluIFFQYWludGVyLgorICAgIENHUmVjdCBfYm91bmRzOwogICB9OwogCiAg
IFZhbHVlSW1wICpnZXRIVE1MQ29sbGVjdGlvbihFeGVjU3RhdGUgKmV4ZWMsIERPTTo6SFRNTENv
bGxlY3Rpb25JbXBsICpjKTsK
</data>
<flag name="review"
          id="223"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>