<?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>17442</bug_id>
          
          <creation_ts>2008-02-19 22:24:51 -0800</creation_ts>
          <short_desc>Correct Windows Cairo (GraphicsContext) implementation</short_desc>
          <delta_ts>2008-02-23 23:27:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71180</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-19 22:24:51 -0800</bug_when>
    <thetext>My initial Cairo implementation on Windows had a few mistakes:

1.  It improperly put some &quot;GraphicsContextPlatformPrivate&quot; code in the general Windows implementation.
2.  The higher-level calls need to call the platform-private windows calls that keep the WorldTransform in sync.
3.  The concatCTM method didn&apos;t even do anything with the passed transform -- a clear bug!
4.  SVG does not rotate or scale properly in the current implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71297</commentid>
    <comment_count>1</comment_count>
      <attachid>19237</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-20 13:38:31 -0800</bug_when>
    <thetext>Created attachment 19237
Initial patch based on discussions with Alp Toker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71507</commentid>
    <comment_count>2</comment_count>
      <attachid>19237</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-22 09:52:26 -0800</bug_when>
    <thetext>Comment on attachment 19237
Initial patch based on discussions with Alp Toker

Looks like you have some strange indenting in the ChangeLog.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71531</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-02-22 16:25:23 -0800</bug_when>
    <thetext>Committed revision 30500.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71553</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-22 20:17:16 -0800</bug_when>
    <thetext>This patch completely broke the non-Windows case.  Unconditional calls such as:

m_data-&gt;save();

are using method which are declared:

#if PLATFORM(WIN)
     // On Windows, we need to update the HDC for form controls to draw in the right place.
     void save();


I&apos;m going to roll this out so it can be addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71554</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-22 20:20:06 -0800</bug_when>
    <thetext>Rolled out in r30500.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71558</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-22 22:25:24 -0800</bug_when>
    <thetext>It looks like I screwed up the patch by omitting the non-Windows case.  I have a building GTK Webkit on a Linux box, which I will use to test this patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71562</commentid>
    <comment_count>7</comment_count>
      <attachid>19287</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-22 23:53:46 -0800</bug_when>
    <thetext>Created attachment 19287
Updated patch with missing non-Windows stanza</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71563</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-22 23:54:25 -0800</bug_when>
    <thetext>Yes, I agree that the #if/def is perhaps clunky, but it&apos;s the approach used in the CoreGraphics implementations on Mac and WIndows.

I have now built and run this patch on Windows, Mac, and GTK+.  Current patch was generated against today&apos;s SVN head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71595</commentid>
    <comment_count>9</comment_count>
      <attachid>19287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-23 09:32:33 -0800</bug_when>
    <thetext>Comment on attachment 19287
Updated patch with missing non-Windows stanza

ChangeLog has some tabs in it. When working on WebKit patches please make sure your editor is set in a mode that won&apos;t add tabs.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71662</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-02-23 20:16:06 -0800</bug_when>
    <thetext>Committed revision 30533.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71663</commentid>
    <comment_count>11</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-02-23 20:17:13 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Rolled out in r30500.
&gt; 

It was actually rolled out in r30513.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71685</commentid>
    <comment_count>12</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-02-23 23:14:18 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #5)
&gt; &gt; Rolled out in r30500.
&gt; &gt; 
&gt; 
&gt; It was actually rolled out in r30513.
&gt; 

So why the bug is resolved as FIXED?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71690</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-02-23 23:27:38 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Rolled out in r30500.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; It was actually rolled out in r30513.
&gt; &gt; 
&gt; 
&gt; So why the bug is resolved as FIXED?
&gt; 

Because I recommitted in r30533 (comment 10) after Brent tweaked it.  I just happened to see that comment and mentioned it for the sake of correctness.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19237</attachid>
            <date>2008-02-20 13:38:31 -0800</date>
            <delta_ts>2008-02-22 23:53:46 -0800</delta_ts>
            <desc>Initial patch based on discussions with Alp Toker</desc>
            <filename>cairographics.patch</filename>
            <type>text/plain</type>
            <size>13522</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDQyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDgtMDItMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDIKKyAgICAgICAgQ29y
cmVjdCB0aGUgV2luZG93cyBDYWlybyBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHQg
c28KKyAgICAgICAgdGhhdCBXaW5kb3dzICdXb3JsZFRyYW5zZm9ybScgaXMga2VwdCBpbiBzeW5j
IHdpdGggdGhlIENhaXJvCisgICAgICAgIHRyYW5zb3JtYXRpb25zLgorCisgICAgICAgIEFsc28g
Y29ycmVjdHMgYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiB0aGUgQ2Fpcm8gV2luZG93cwor
ICAgICAgICBpbWFnZSBkcmFnIGhhbmRsZXIuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBD
QVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6ICBNb2RpZnkKKyAgICAgICAgICBtZXRob2RzIHRv
IGNhbGwgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIGNhbGxzLCBqdXN0CisgICAgICAg
ICAgYXMgaXMgZG9uZSBmb3IgdGhlIENvcmVHcmFwaGljcyB2ZXJzaW9uLiAgVGhlc2UgY2FsbHMg
YXJlCisgICAgICAgICAgbm9wJ3MgZm9yIGV2ZXJ5dGhpbmcgYnV0IFdpbmRvd3MuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6IFJlLWVuYWJsZSBmb3IgV2luZG93cwor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOiAg
TW92ZSBjb21tb24KKyAgICAgICAgICBjb2RlIGZvciBoYW5kbGluZyBXb3JsZFRyYW5zZm9ybSBj
YWxscyB0byBwYXJlbnQgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDogIEFkZCBjb21tb24KKyAgICAgICAgICBjb2RlIGZv
ciBoYW5kbGluZyBXb3JsZFRyYW5zZm9ybSBjYWxscy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y29uY2F0Q1RNKTogIENoYW5nZQorCWltcGxlbWVu
dGF0aW9uIHNvIHRoYXQgaXQgb25seSBoYW5kbGVzIFdvcmxkVHJhbnNmb3JtLiAgVGhlCisJQ2Fp
cm8gdXBkYXRlIGlzIGRvbmUgaW4gR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHA6ICBDYWxsIHBsYXRm
b3JtLXByaXZhdGUKKyAgICAgICAgICBtZXRob2RzIHRvIGtlZXAgV29ybGRUcmFuc2Zvcm0gaW4g
c3luYy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6
OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlOjpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlOjp0cmFuc2xhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
YWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Up
OiAgQ29ycmVjdCB1bmluaXRpYWxpemVkIHZhbHVlCisKIDIwMDgtMDItMjAgIEp1c3RpbiBHYXJj
aWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiAzMDQyNSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsMTEgKzEwMywxMyBAQCBjYWlyb190KiBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtQ29udGV4CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUo
KQogewogICAgIGNhaXJvX3NhdmUobV9kYXRhLT5jcik7CisgICAgbV9kYXRhLT5zYXZlKCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7CiAgICAg
Y2Fpcm9fcmVzdG9yZShtX2RhdGEtPmNyKTsKKyAgICBtX2RhdGEtPnJlc3RvcmUoKTsKIH0KIAog
Ly8gRHJhd3MgYSBmaWxsZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KQEAgLTM4
MCw2ICszODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0CiAg
ICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAg
IGNhaXJvX2NsaXAoY3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1
bGUpOworICAgIG1fZGF0YS0+Y2xpcChyZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdGb2N1c1JpbmcoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNDMxLDcgKzQzNCw2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3NwZWwKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShHVEspCiAgICAgY2Fp
cm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCkBAIC00NDIsMTMg
KzQ0NCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsCiAgICAg
ZWxzZQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMSwgMCwgMCk7CiAKKyNpZiBQ
TEFURk9STShHVEspCiAgICAgLy8gV2UgaWdub3JlIG1vc3Qgb2YgdGhlIHByb3ZpZGVkIGNvbnN0
YW50cyBpbiBmYXZvdXIgb2YgdGhlIHBsYXRmb3JtIHN0eWxlCiAgICAgcGFuZ29fY2Fpcm9fc2hv
d19lcnJvcl91bmRlcmxpbmUoY3IsIG9yaWdpbi54KCksIG9yaWdpbi55KCksIHdpZHRoLCBjTWlz
c3BlbGxpbmdMaW5lVGhpY2tuZXNzKTsKLQotICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogI2Vsc2UK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCisKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsK
IH0KIAogRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25z
dCBGbG9hdFJlY3QmIGZyZWN0KQpAQCAtNDgxLDYgKzQ4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
ICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHgsIHkpOworICAgIG1fZGF0YS0+dHJhbnNsYXRlKHgs
IHkpOwogfQogCiBJbnRQb2ludCBHcmFwaGljc0NvbnRleHQ6Om9yaWdpbigpCkBAIC01NDQsOSAr
NTQ4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29ucwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLSNpZiBQTEFURk9STShHVEspCi0vLyBGSVhNRTogIFRoaXMg
c2hvdWxkIGJlIG1vdmVkIHRvIHNvbWV0aGluZyBsaWtlIEdyYXBoaWNzQ29udGV4dENhaXJvR1RL
LmNwcCwKLS8vIGFzIHRoZXJlIGlzIGEgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBpbiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC01NTUsOCArNTU2LDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZgogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRh
LT5jcjsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCogbWF0cml4ID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjYWlyb19tYXRyaXhfdCo+KCZ0cmFuc2Zvcm0pOwogICAgIGNhaXJvX3RyYW5zZm9y
bShjciwgbWF0cml4KTsKKyAgICBtX2RhdGEtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogfQotI2Vu
ZGlmCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25z
dCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzKQogewpAQCAtNjAwLDYgKzYwMSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUwKICAgICBjYWlyb190KiBjciA9
IG1fZGF0YS0+Y3I7CiAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7CiAgICAgbV9kYXRhLT5sYXll
cnMuYXBwZW5kKG9wYWNpdHkpOworICAgIG1fZGF0YS0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQpAQCAt
NjEyLDYgKzYxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXkK
ICAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNlKGNyKTsKICAgICBjYWlyb19wYWludF93aXRo
X2FscGhhKGNyLCBtX2RhdGEtPmxheWVycy5sYXN0KCkpOwogICAgIG1fZGF0YS0+bGF5ZXJzLnJl
bW92ZUxhc3QoKTsKKyAgICBtX2RhdGEtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAt
NzczLDYgKzc3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAK
ICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfV0lORElORyk7CiAg
ICAgY2Fpcm9fY2xpcChjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxs
UnVsZSk7CisgICAgbV9kYXRhLT5jbGlwKHBhdGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQpAQCAtNzk4LDYgKzgwMiw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWEKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y2Fpcm9fcm90YXRlKG1fZGF0YS0+Y3IsIHJhZGlhbnMpOworICAgIG1fZGF0YS0+cm90YXRlKHJh
ZGlhbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQpAQCAtODA2LDYgKzgxMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZShj
b25zdCBGbG9hdFMKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fpcm9fc2NhbGUobV9kYXRhLT5j
ciwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICBtX2RhdGEtPnNjYWxlKHNpemUp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDYWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAkocmV2aXNpb24g
MzA0MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE0IEBA
IHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICAvLyBPbiBXaW5kb3dzLCB3ZSBuZWVk
IHRvIHVwZGF0ZSB0aGUgSERDIGZvciBmb3JtIGNvbnRyb2xzIHRvIGRyYXcgaW4gdGhlIHJpZ2h0
IHBsYWNlLgorICAgIHZvaWQgc2F2ZSgpOworICAgIHZvaWQgcmVzdG9yZSgpOworICAgIHZvaWQg
Y2xpcChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsKKyAgICB2
b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgcm90YXRlKGZsb2F0KTsKKyAg
ICB2b2lkIHRyYW5zbGF0ZShmbG9hdCwgZmxvYXQpOworICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHsg
bV90cmFuc3BhcmVuY3lDb3VudCsrOyB9CiAgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigp
IHsgbV90cmFuc3BhcmVuY3lDb3VudC0tOyB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHJl
dmlzaW9uIDMwNDI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0Q0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNzcgKzE2OCw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnQKICAgICBtX2RhdGEtPnJlc3RvcmUo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnNhdmUoKQotewot
ICAgIGlmICghbV9oZGMpCi0gICAgICAgIHJldHVybjsKLSAgICBTYXZlREMobV9oZGMpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCi17Ci0gICAg
aWYgKCFtX2hkYykKLSAgICAgICAgcmV0dXJuOwotICAgIFJlc3RvcmVEQyhtX2hkYywgLTEpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y2xpcChjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCkKLXsKLSAgICBpZiAoIW1faGRjKQotICAgICAgICByZXR1cm47Ci0gICAg
SW50ZXJzZWN0Q2xpcFJlY3QobV9oZGMsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlw
UmVjdC5yaWdodCgpLCBjbGlwUmVjdC5ib3R0b20oKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGlwKGNvbnN0IFBhdGgmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzY2FsZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgaWYgKCFtX2hkYykKLSAgICAgICAgcmV0dXJu
OwotICAgIFhGT1JNIHhmb3JtOwotICAgIHhmb3JtLmVNMTEgPSBzaXplLndpZHRoKCk7Ci0gICAg
eGZvcm0uZU0xMiA9IDAuMGY7Ci0gICAgeGZvcm0uZU0yMSA9IDAuMGY7Ci0gICAgeGZvcm0uZU0y
MiA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgeGZvcm0uZUR4ID0gMC4wZjsKLSAgICB4Zm9ybS5lRHkg
PSAwLjBmOwotICAgIE1vZGlmeVdvcmxkVHJhbnNmb3JtKG1faGRjLCAmeGZvcm0sIE1XVF9MRUZU
TVVMVElQTFkpOwotfQotCi1zdGF0aWMgY29uc3QgZG91YmxlIGRlZzJyYWQgPSAwLjAxNzQ1MzI5
MjUxOTk0MzI5NTc2OTsgLy8gcGkvMTgwCi0KLXZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlOjpyb3RhdGUoZmxvYXQgZGVncmVlc0FuZ2xlKQotewotICAgIGZsb2F0IHJhZGlhbnNB
bmdsZSA9IGRlZ3JlZXNBbmdsZSAqIGRlZzJyYWQ7Ci0gICAgZmxvYXQgY29zQW5nbGUgPSBjb3Nm
KHJhZGlhbnNBbmdsZSk7Ci0gICAgZmxvYXQgc2luQW5nbGUgPSBzaW5mKHJhZGlhbnNBbmdsZSk7
Ci0gICAgWEZPUk0geGZvcm07Ci0gICAgeGZvcm0uZU0xMSA9IGNvc0FuZ2xlOwotICAgIHhmb3Jt
LmVNMTIgPSAtc2luQW5nbGU7Ci0gICAgeGZvcm0uZU0yMSA9IHNpbkFuZ2xlOwotICAgIHhmb3Jt
LmVNMjIgPSBjb3NBbmdsZTsKLSAgICB4Zm9ybS5lRHggPSAwLjBmOwotICAgIHhmb3JtLmVEeSA9
IDAuMGY7Ci0gICAgTW9kaWZ5V29ybGRUcmFuc2Zvcm0obV9oZGMsICZ4Zm9ybSwgTVdUX0xFRlRN
VUxUSVBMWSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp0cmFu
c2xhdGUoZmxvYXQgeCAsIGZsb2F0IHkpCi17Ci0gICAgaWYgKCFtX2hkYykKLSAgICAgICAgcmV0
dXJuOwotICAgIFhGT1JNIHhmb3JtOwotICAgIHhmb3JtLmVNMTEgPSAxLjBmOwotICAgIHhmb3Jt
LmVNMTIgPSAwLjBmOwotICAgIHhmb3JtLmVNMjEgPSAwLjBmOwotICAgIHhmb3JtLmVNMjIgPSAx
LjBmOwotICAgIHhmb3JtLmVEeCA9IHg7Ci0gICAgeGZvcm0uZUR5ID0geTsKLSAgICBNb2RpZnlX
b3JsZFRyYW5zZm9ybShtX2hkYywgJnhmb3JtLCBNV1RfTEVGVE1VTFRJUExZKTsKLX0KLQogdm9p
ZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICBpZiAoIW1faGRjKQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJv
V2luLmNwcAkocmV2aXNpb24gMzA0MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDIxICs5
MiwyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250CiAgICAgY2Fp
cm9fc3VyZmFjZV9tYXJrX2RpcnR5KHN1cmZhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQordm9pZCBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSkKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19n
ZXRfdGFyZ2V0KHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNyKTsKICAgICBIREMgaGRjID0gY2Fpcm9fd2luMzJfc3Vy
ZmFjZV9nZXRfZGMoc3VyZmFjZSk7ICAgCiAgICAgU2F2ZURDKGhkYyk7CiAKLSAgICBjYWlyb19t
YXRyaXhfdCBtYXQ7Ci0gICAgY2Fpcm9fZ2V0X21hdHJpeChwbGF0Zm9ybUNvbnRleHQoKSwgJm1h
dCk7CisgICAgY29uc3QgY2Fpcm9fbWF0cml4X3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2Fpcm9fbWF0cml4X3QqPigmdHJhbnNmb3JtKTsKKwogICAgIFhGT1JNIHhmb3JtOwot
ICAgIHhmb3JtLmVNMTEgPSBtYXQueHg7Ci0gICAgeGZvcm0uZU0xMiA9IG1hdC54eTsKLSAgICB4
Zm9ybS5lTTIxID0gbWF0Lnl4OwotICAgIHhmb3JtLmVNMjIgPSBtYXQueXk7Ci0gICAgeGZvcm0u
ZUR4ID0gbWF0LngwOwotICAgIHhmb3JtLmVEeSA9IG1hdC55MDsKKyAgICB4Zm9ybS5lTTExID0g
bWF0cml4LT54eDsKKyAgICB4Zm9ybS5lTTEyID0gbWF0cml4LT54eTsKKyAgICB4Zm9ybS5lTTIx
ID0gbWF0cml4LT55eDsKKyAgICB4Zm9ybS5lTTIyID0gbWF0cml4LT55eTsKKyAgICB4Zm9ybS5l
RHggPSBtYXRyaXgtPngwOworICAgIHhmb3JtLmVEeSA9IG1hdHJpeC0+eTA7CiAKICAgICBNb2Rp
ZnlXb3JsZFRyYW5zZm9ybShoZGMsICZ4Zm9ybSwgTVdUX0xFRlRNVUxUSVBMWSk7CiB9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dFdpbi5jcHAJKHJldmlzaW9uIDMwNDI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAor
I2lmIFBMQVRGT1JNKENHKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZUNHLmgiCisjZWxpZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGVDYWlyby5oIgorI2VuZGlmCisKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAg
LTM3LDYgKzQzLDc3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUmVzb3VyY2VJ
bWFnZTsKIAordm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnNhdmUoKQorewor
ICAgIGlmICghbV9oZGMpCisgICAgICAgIHJldHVybjsKKyAgICBTYXZlREMobV9oZGMpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCit7CisgICAg
aWYgKCFtX2hkYykKKyAgICAgICAgcmV0dXJuOworICAgIFJlc3RvcmVEQyhtX2hkYywgLTEpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y2xpcChjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoIW1faGRjKQorICAgICAgICByZXR1cm47CisgICAg
SW50ZXJzZWN0Q2xpcFJlY3QobV9oZGMsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlw
UmVjdC5yaWdodCgpLCBjbGlwUmVjdC5ib3R0b20oKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGlwKGNvbnN0IFBhdGgmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzY2FsZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKCFtX2hkYykKKyAgICAgICAgcmV0dXJu
OworICAgIFhGT1JNIHhmb3JtOworICAgIHhmb3JtLmVNMTEgPSBzaXplLndpZHRoKCk7CisgICAg
eGZvcm0uZU0xMiA9IDAuMGY7CisgICAgeGZvcm0uZU0yMSA9IDAuMGY7CisgICAgeGZvcm0uZU0y
MiA9IHNpemUuaGVpZ2h0KCk7CisgICAgeGZvcm0uZUR4ID0gMC4wZjsKKyAgICB4Zm9ybS5lRHkg
PSAwLjBmOworICAgIE1vZGlmeVdvcmxkVHJhbnNmb3JtKG1faGRjLCAmeGZvcm0sIE1XVF9MRUZU
TVVMVElQTFkpOworfQorCitzdGF0aWMgY29uc3QgZG91YmxlIGRlZzJyYWQgPSAwLjAxNzQ1MzI5
MjUxOTk0MzI5NTc2OTsgLy8gcGkvMTgwCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlOjpyb3RhdGUoZmxvYXQgZGVncmVlc0FuZ2xlKQoreworICAgIGZsb2F0IHJhZGlhbnNB
bmdsZSA9IGRlZ3JlZXNBbmdsZSAqIGRlZzJyYWQ7CisgICAgZmxvYXQgY29zQW5nbGUgPSBjb3Nm
KHJhZGlhbnNBbmdsZSk7CisgICAgZmxvYXQgc2luQW5nbGUgPSBzaW5mKHJhZGlhbnNBbmdsZSk7
CisgICAgWEZPUk0geGZvcm07CisgICAgeGZvcm0uZU0xMSA9IGNvc0FuZ2xlOworICAgIHhmb3Jt
LmVNMTIgPSAtc2luQW5nbGU7CisgICAgeGZvcm0uZU0yMSA9IHNpbkFuZ2xlOworICAgIHhmb3Jt
LmVNMjIgPSBjb3NBbmdsZTsKKyAgICB4Zm9ybS5lRHggPSAwLjBmOworICAgIHhmb3JtLmVEeSA9
IDAuMGY7CisgICAgTW9kaWZ5V29ybGRUcmFuc2Zvcm0obV9oZGMsICZ4Zm9ybSwgTVdUX0xFRlRN
VUxUSVBMWSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp0cmFu
c2xhdGUoZmxvYXQgeCAsIGZsb2F0IHkpCit7CisgICAgaWYgKCFtX2hkYykKKyAgICAgICAgcmV0
dXJuOworICAgIFhGT1JNIHhmb3JtOworICAgIHhmb3JtLmVNMTEgPSAxLjBmOworICAgIHhmb3Jt
LmVNMTIgPSAwLjBmOworICAgIHhmb3JtLmVNMjEgPSAwLjBmOworICAgIHhmb3JtLmVNMjIgPSAx
LjBmOworICAgIHhmb3JtLmVEeCA9IHg7CisgICAgeGZvcm0uZUR5ID0geTsKKyAgICBNb2RpZnlX
b3JsZFRyYW5zZm9ybShtX2hkYywgJnhmb3JtLCBNV1RfTEVGVE1VTFRJUExZKTsKK30KKwogI2lm
IEVOQUJMRShTVkcpCiBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRGb3JJbWFnZShTVkdSZXNvdXJj
ZUltYWdlKikKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dp
bi5jcHAJKHJldmlzaW9uIDMwNDI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q2Fpcm9XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw3IEBAIERyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW0KIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
Ci0gICAgRHJhZ0ltYWdlUmVmIHRlbXA7Ci0gICAgcmV0dXJuIHRlbXA7CisgICAgcmV0dXJuIDA7
CiB9CiAgICAgCiB9Cg==
</data>
<flag name="review"
          id="8401"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19287</attachid>
            <date>2008-02-22 23:53:46 -0800</date>
            <delta_ts>2008-02-23 09:32:33 -0800</delta_ts>
            <desc>Updated patch with missing non-Windows stanza</desc>
            <filename>cairofix.patch</filename>
            <type>text/plain</type>
            <size>13758</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMwNDI4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMDgtMDIt
MjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc0NDIKKyAgICAgICAgQ29ycmVjdCB0aGUgV2luZG93cyBDYWlybyBp
bXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHQgc28KKyAgICAgICAgdGhhdCBXaW5kb3dz
ICdXb3JsZFRyYW5zZm9ybScgaXMga2VwdCBpbiBzeW5jIHdpdGggdGhlIENhaXJvCisgICAgICAg
IHRyYW5zb3JtYXRpb25zLgorCisgICAgICAgIEFsc28gY29ycmVjdHMgYW4gdW5pbml0aWFsaXpl
ZCB2YXJpYWJsZSBpbiB0aGUgQ2Fpcm8gV2luZG93cworICAgICAgICBpbWFnZSBkcmFnIGhhbmRs
ZXIuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHA6ICBNb2RpZnkKKyAgICAgICAgICBtZXRob2RzIHRvIGNhbGwgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlIGNhbGxzLCBqdXN0CisgICAgICAgICAgYXMgaXMgZG9uZSBmb3IgdGhlIENv
cmVHcmFwaGljcyB2ZXJzaW9uLiAgVGhlc2UgY2FsbHMgYXJlCisgICAgICAgICAgbm9wJ3MgZm9y
IGV2ZXJ5dGhpbmcgYnV0IFdpbmRvd3MuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNhdmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVG
b3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNv
bmNhdENUTSk6IFJlLWVuYWJsZSBmb3IgV2luZG93cworICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOiAgTW92ZSBjb21tb24KKyAgICAgICAgICBj
b2RlIGZvciBoYW5kbGluZyBXb3JsZFRyYW5zZm9ybSBjYWxscyB0byBwYXJlbnQgY2xhc3MuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNw
cDogIEFkZCBjb21tb24KKyAgICAgICAgICBjb2RlIGZvciBoYW5kbGluZyBXb3JsZFRyYW5zZm9y
bSBjYWxscy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZTo6Y29uY2F0Q1RNKTogIENoYW5nZQorCWltcGxlbWVudGF0aW9uIHNvIHRoYXQgaXQgb25seSBo
YW5kbGVzIFdvcmxkVHJhbnNmb3JtLiAgVGhlCisJQ2Fpcm8gdXBkYXRlIGlzIGRvbmUgaW4gR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dFdpbi5jcHA6ICBDYWxsIHBsYXRmb3JtLXByaXZhdGUKKyAgICAgICAgICBt
ZXRob2RzIHRvIGtlZXAgV29ybGRUcmFuc2Zvcm0gaW4gc3luYy4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c2F2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnJlc3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpyb3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp0cmFuc2xhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOiAgQ29ycmVjdCB1bmluaXRpYWxpemVk
IHZhbHVlCisKIDIwMDgtMDItMjIgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZp
c2lvbiAzMDUxNSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDExICsxMDMsMTMgQEAgY2Fpcm9fdCogR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNvbnRleAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmVQ
bGF0Zm9ybVN0YXRlKCkKIHsKICAgICBjYWlyb19zYXZlKG1fZGF0YS0+Y3IpOworICAgIG1fZGF0
YS0+c2F2ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3Rh
dGUoKQogewogICAgIGNhaXJvX3Jlc3RvcmUobV9kYXRhLT5jcik7CisgICAgbV9kYXRhLT5yZXN0
b3JlKCk7CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBi
b3JkZXIuCkBAIC0zODAsNiArMzgyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29u
c3QgSW50UmVjdAogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIENBSVJPX0ZJTExfUlVMRV9X
SU5ESU5HKTsKICAgICBjYWlyb19jbGlwKGNyKTsKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNy
LCBzYXZlZEZpbGxSdWxlKTsKKyAgICBtX2RhdGEtPmNsaXAocmVjdCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTQzMSw3
ICs0MzQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0o
R1RLKQogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWlyb19zYXZlKGNyKTsK
IApAQCAtNDQyLDEzICs0NDQsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9y
TWlzc3BlbAogICAgIGVsc2UKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDAs
IDApOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIC8vIFdlIGlnbm9yZSBtb3N0IG9mIHRoZSBw
cm92aWRlZCBjb25zdGFudHMgaW4gZmF2b3VyIG9mIHRoZSBwbGF0Zm9ybSBzdHlsZQogICAgIHBh
bmdvX2NhaXJvX3Nob3dfZXJyb3JfdW5kZXJsaW5lKGNyLCBvcmlnaW4ueCgpLCBvcmlnaW4ueSgp
LCB3aWR0aCwgY01pc3NwZWxsaW5nTGluZVRoaWNrbmVzcyk7Ci0KLSAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgorCisgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZp
Y2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiBmcmVjdCkKQEAgLTQ4MSw2ICs0ODQsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgsCiAKICAgICBjYWlyb190KiBjciA9
IG1fZGF0YS0+Y3I7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCB4LCB5KTsKKyAgICBtX2RhdGEt
PnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAogSW50UG9pbnQgR3JhcGhpY3NDb250ZXh0OjpvcmlnaW4o
KQpAQCAtNTQ0LDkgKzU0OCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0
KGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotLy8g
RklYTUU6ICBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0byBzb21ldGhpbmcgbGlrZSBHcmFwaGljc0Nv
bnRleHRDYWlyb0dUSy5jcHAsCi0vLyBhcyB0aGVyZSBpcyBhIFdpbmRvd3MgaW1wbGVtZW50YXRp
b24gaW4gcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpAQCAtNTU1LDggKzU1Niw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWYKICAgICBjYWlyb190
KiBjciA9IG1fZGF0YS0+Y3I7CiAgICAgY29uc3QgY2Fpcm9fbWF0cml4X3QqIG1hdHJpeCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2Fpcm9fbWF0cml4X3QqPigmdHJhbnNmb3JtKTsKICAgICBj
YWlyb190cmFuc2Zvcm0oY3IsIG1hdHJpeCk7CisgICAgbV9kYXRhLT5jb25jYXRDVE0odHJhbnNm
b3JtKTsKIH0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVk
UmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNrbmVzcykKIHsKQEAgLTYwMCw2
ICs2MDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMCiAgICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3B1c2hfZ3JvdXAoY3IpOwogICAg
IG1fZGF0YS0+bGF5ZXJzLmFwcGVuZChvcGFjaXR5KTsKKyAgICBtX2RhdGEtPmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5j
eUxheWVyKCkKQEAgLTYxMiw2ICs2MTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJh
bnNwYXJlbmN5TGF5CiAgICAgY2Fpcm9fcG9wX2dyb3VwX3RvX3NvdXJjZShjcik7CiAgICAgY2Fp
cm9fcGFpbnRfd2l0aF9hbHBoYShjciwgbV9kYXRhLT5sYXllcnMubGFzdCgpKTsKICAgICBtX2Rh
dGEtPmxheWVycy5yZW1vdmVMYXN0KCk7CisgICAgbV9kYXRhLT5lbmRUcmFuc3BhcmVuY3lMYXll
cigpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKQEAgLTc3Myw2ICs3NzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChj
b25zdCBQYXRoJiBwCiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxF
X1dJTkRJTkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUo
Y3IsIHNhdmVkRmlsbFJ1bGUpOworICAgIG1fZGF0YS0+Y2xpcChwYXRoKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTc5OCw2ICs4MDIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cm90YXRlKGZsb2F0IHJhZGlhCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhaXJvX3JvdGF0ZShtX2RhdGEtPmNyLCByYWRpYW5zKTsKKyAgICBtX2Rh
dGEtPnJvdGF0ZShyYWRpYW5zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKQEAgLTgwNiw2ICs4MTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTCiAgICAgICAgIHJldHVybjsKIAogICAgIGNhaXJvX3Nj
YWxlKG1fZGF0YS0+Y3IsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgbV9kYXRh
LT5zY2FsZShzaXplKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3Qg
SW50UmVjdCYgcikKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAkocmV2aXNpb24gMzA1
MTUpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVDYWlyby5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2MiwyOCBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gT24gV2luZG93cywgd2UgbmVlZCB0byB1cGRhdGUg
dGhlIEhEQyBmb3IgZm9ybSBjb250cm9scyB0byBkcmF3IGluIHRoZSByaWdodCBwbGFjZS4KKyAg
ICB2b2lkIHNhdmUoKTsKKyAgICB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIGNsaXAoY29uc3Qg
SW50UmVjdCYpOworICAgIHZvaWQgY2xpcChjb25zdCBQYXRoJik7CisgICAgdm9pZCBzY2FsZShj
b25zdCBGbG9hdFNpemUmKTsKKyAgICB2b2lkIHJvdGF0ZShmbG9hdCk7CisgICAgdm9pZCB0cmFu
c2xhdGUoZmxvYXQsIGZsb2F0KTsKKyAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKSB7IG1fdHJhbnNwYXJl
bmN5Q291bnQrKzsgfQogICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSB7IG1fdHJhbnNw
YXJlbmN5Q291bnQtLTsgfQorI2Vsc2UKKyAgICAvLyBPbiBldmVyeXRoaW5nIGVsc2UsIHdlIGRv
IG5vdGhpbmcuCisgICAgdm9pZCBzYXZlKCkge30KKyAgICB2b2lkIHJlc3RvcmUoKSB7fQorICAg
IHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jikge30KKyAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYp
IHt9CisgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSB7fQorICAgIHZvaWQgcm90YXRl
KGZsb2F0KSB7fQorICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0LCBmbG9hdCkge30KKyAgICB2b2lk
IGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSB7fQorICAgIHZvaWQgYmVnaW5UcmFu
c3BhcmVuY3lMYXllcigpIHt9CisgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIHt9CiAj
ZW5kaWYKIAogICAgIGNhaXJvX3QqIGNyOwpJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCShyZXZpc2lvbiAzMDUxNSkKKysrIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OCw3NyArMTY4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29u
dAogICAgIG1fZGF0YS0+cmVzdG9yZSgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZTo6c2F2ZSgpCi17Ci0gICAgaWYgKCFtX2hkYykKLSAgICAgICAgcmV0dXJuOwot
ICAgIFNhdmVEQyhtX2hkYyk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOjpyZXN0b3JlKCkKLXsKLSAgICBpZiAoIW1faGRjKQotICAgICAgICByZXR1cm47Ci0gICAg
UmVzdG9yZURDKG1faGRjLCAtMSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlOjpjbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotewotICAgIGlmICghbV9oZGMp
Ci0gICAgICAgIHJldHVybjsKLSAgICBJbnRlcnNlY3RDbGlwUmVjdChtX2hkYywgY2xpcFJlY3Qu
eCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LnJpZ2h0KCksIGNsaXBSZWN0LmJvdHRvbSgpKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAoY29uc3QgUGF0
aCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAo
IW1faGRjKQotICAgICAgICByZXR1cm47Ci0gICAgWEZPUk0geGZvcm07Ci0gICAgeGZvcm0uZU0x
MSA9IHNpemUud2lkdGgoKTsKLSAgICB4Zm9ybS5lTTEyID0gMC4wZjsKLSAgICB4Zm9ybS5lTTIx
ID0gMC4wZjsKLSAgICB4Zm9ybS5lTTIyID0gc2l6ZS5oZWlnaHQoKTsKLSAgICB4Zm9ybS5lRHgg
PSAwLjBmOwotICAgIHhmb3JtLmVEeSA9IDAuMGY7Ci0gICAgTW9kaWZ5V29ybGRUcmFuc2Zvcm0o
bV9oZGMsICZ4Zm9ybSwgTVdUX0xFRlRNVUxUSVBMWSk7Ci19Ci0KLXN0YXRpYyBjb25zdCBkb3Vi
bGUgZGVnMnJhZCA9IDAuMDE3NDUzMjkyNTE5OTQzMjk1NzY5OyAvLyBwaS8xODAKLQotdm9pZCBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnJvdGF0ZShmbG9hdCBkZWdyZWVzQW5nbGUp
Ci17Ci0gICAgZmxvYXQgcmFkaWFuc0FuZ2xlID0gZGVncmVlc0FuZ2xlICogZGVnMnJhZDsKLSAg
ICBmbG9hdCBjb3NBbmdsZSA9IGNvc2YocmFkaWFuc0FuZ2xlKTsKLSAgICBmbG9hdCBzaW5Bbmds
ZSA9IHNpbmYocmFkaWFuc0FuZ2xlKTsKLSAgICBYRk9STSB4Zm9ybTsKLSAgICB4Zm9ybS5lTTEx
ID0gY29zQW5nbGU7Ci0gICAgeGZvcm0uZU0xMiA9IC1zaW5BbmdsZTsKLSAgICB4Zm9ybS5lTTIx
ID0gc2luQW5nbGU7Ci0gICAgeGZvcm0uZU0yMiA9IGNvc0FuZ2xlOwotICAgIHhmb3JtLmVEeCA9
IDAuMGY7Ci0gICAgeGZvcm0uZUR5ID0gMC4wZjsKLSAgICBNb2RpZnlXb3JsZFRyYW5zZm9ybSht
X2hkYywgJnhmb3JtLCBNV1RfTEVGVE1VTFRJUExZKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OnRyYW5zbGF0ZShmbG9hdCB4ICwgZmxvYXQgeSkKLXsKLSAgICBp
ZiAoIW1faGRjKQotICAgICAgICByZXR1cm47Ci0gICAgWEZPUk0geGZvcm07Ci0gICAgeGZvcm0u
ZU0xMSA9IDEuMGY7Ci0gICAgeGZvcm0uZU0xMiA9IDAuMGY7Ci0gICAgeGZvcm0uZU0yMSA9IDAu
MGY7Ci0gICAgeGZvcm0uZU0yMiA9IDEuMGY7Ci0gICAgeGZvcm0uZUR4ID0geDsKLSAgICB4Zm9y
bS5lRHkgPSB5OwotICAgIE1vZGlmeVdvcmxkVHJhbnNmb3JtKG1faGRjLCAmeGZvcm0sIE1XVF9M
RUZUTVVMVElQTFkpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIGlmICgh
bV9oZGMpCkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9X
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMjEgKzky
LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnQKICAgICBjYWly
b19zdXJmYWNlX21hcmtfZGlydHkoc3VyZmFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
Ojpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lkIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtKQogewotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dl
dF90YXJnZXQocGxhdGZvcm1Db250ZXh0KCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSA9IGNhaXJvX2dldF90YXJnZXQoY3IpOwogICAgIEhEQyBoZGMgPSBjYWlyb193aW4zMl9zdXJm
YWNlX2dldF9kYyhzdXJmYWNlKTsgICAKICAgICBTYXZlREMoaGRjKTsKIAotICAgIGNhaXJvX21h
dHJpeF90IG1hdDsKLSAgICBjYWlyb19nZXRfbWF0cml4KHBsYXRmb3JtQ29udGV4dCgpLCAmbWF0
KTsKKyAgICBjb25zdCBjYWlyb19tYXRyaXhfdCogbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjYWlyb19tYXRyaXhfdCo+KCZ0cmFuc2Zvcm0pOworCiAgICAgWEZPUk0geGZvcm07Ci0g
ICAgeGZvcm0uZU0xMSA9IG1hdC54eDsKLSAgICB4Zm9ybS5lTTEyID0gbWF0Lnh5OwotICAgIHhm
b3JtLmVNMjEgPSBtYXQueXg7Ci0gICAgeGZvcm0uZU0yMiA9IG1hdC55eTsKLSAgICB4Zm9ybS5l
RHggPSBtYXQueDA7Ci0gICAgeGZvcm0uZUR5ID0gbWF0LnkwOworICAgIHhmb3JtLmVNMTEgPSBt
YXRyaXgtPnh4OworICAgIHhmb3JtLmVNMTIgPSBtYXRyaXgtPnh5OworICAgIHhmb3JtLmVNMjEg
PSBtYXRyaXgtPnl4OworICAgIHhmb3JtLmVNMjIgPSBtYXRyaXgtPnl5OworICAgIHhmb3JtLmVE
eCA9IG1hdHJpeC0+eDA7CisgICAgeGZvcm0uZUR5ID0gbWF0cml4LT55MDsKIAogICAgIE1vZGlm
eVdvcmxkVHJhbnNmb3JtKGhkYywgJnhmb3JtLCBNV1RfTEVGVE1VTFRJUExZKTsKIH0KSW5kZXg6
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCShyZXZpc2lv
biAzMDUxNSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCisjaWYgUExBVEZPUk0oQ0cpCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKKyNlbGlmIFBMQVRGT1JNKENB
SVJPKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCisj
ZW5kaWYKKwogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtMzcsNiArNDMsNzcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdSZXNvdXJjZUltYWdlOwogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTo6c2F2ZSgpCit7CisgICAgaWYgKCFtX2hkYykKKyAgICAgICAg
cmV0dXJuOworICAgIFNhdmVEQyhtX2hkYyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpyZXN0b3JlKCkKK3sKKyAgICBpZiAoIW1faGRjKQorICAgICAgICByZXR1
cm47CisgICAgUmVzdG9yZURDKG1faGRjLCAtMSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlOjpjbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGlm
ICghbV9oZGMpCisgICAgICAgIHJldHVybjsKKyAgICBJbnRlcnNlY3RDbGlwUmVjdChtX2hkYywg
Y2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LnJpZ2h0KCksIGNsaXBSZWN0LmJv
dHRvbSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAo
Y29uc3QgUGF0aCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sK
KyAgICBpZiAoIW1faGRjKQorICAgICAgICByZXR1cm47CisgICAgWEZPUk0geGZvcm07CisgICAg
eGZvcm0uZU0xMSA9IHNpemUud2lkdGgoKTsKKyAgICB4Zm9ybS5lTTEyID0gMC4wZjsKKyAgICB4
Zm9ybS5lTTIxID0gMC4wZjsKKyAgICB4Zm9ybS5lTTIyID0gc2l6ZS5oZWlnaHQoKTsKKyAgICB4
Zm9ybS5lRHggPSAwLjBmOworICAgIHhmb3JtLmVEeSA9IDAuMGY7CisgICAgTW9kaWZ5V29ybGRU
cmFuc2Zvcm0obV9oZGMsICZ4Zm9ybSwgTVdUX0xFRlRNVUxUSVBMWSk7Cit9CisKK3N0YXRpYyBj
b25zdCBkb3VibGUgZGVnMnJhZCA9IDAuMDE3NDUzMjkyNTE5OTQzMjk1NzY5OyAvLyBwaS8xODAK
Kwordm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnJvdGF0ZShmbG9hdCBkZWdy
ZWVzQW5nbGUpCit7CisgICAgZmxvYXQgcmFkaWFuc0FuZ2xlID0gZGVncmVlc0FuZ2xlICogZGVn
MnJhZDsKKyAgICBmbG9hdCBjb3NBbmdsZSA9IGNvc2YocmFkaWFuc0FuZ2xlKTsKKyAgICBmbG9h
dCBzaW5BbmdsZSA9IHNpbmYocmFkaWFuc0FuZ2xlKTsKKyAgICBYRk9STSB4Zm9ybTsKKyAgICB4
Zm9ybS5lTTExID0gY29zQW5nbGU7CisgICAgeGZvcm0uZU0xMiA9IC1zaW5BbmdsZTsKKyAgICB4
Zm9ybS5lTTIxID0gc2luQW5nbGU7CisgICAgeGZvcm0uZU0yMiA9IGNvc0FuZ2xlOworICAgIHhm
b3JtLmVEeCA9IDAuMGY7CisgICAgeGZvcm0uZUR5ID0gMC4wZjsKKyAgICBNb2RpZnlXb3JsZFRy
YW5zZm9ybShtX2hkYywgJnhmb3JtLCBNV1RfTEVGVE1VTFRJUExZKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnRyYW5zbGF0ZShmbG9hdCB4ICwgZmxvYXQgeSkK
K3sKKyAgICBpZiAoIW1faGRjKQorICAgICAgICByZXR1cm47CisgICAgWEZPUk0geGZvcm07Cisg
ICAgeGZvcm0uZU0xMSA9IDEuMGY7CisgICAgeGZvcm0uZU0xMiA9IDAuMGY7CisgICAgeGZvcm0u
ZU0yMSA9IDAuMGY7CisgICAgeGZvcm0uZU0yMiA9IDEuMGY7CisgICAgeGZvcm0uZUR4ID0geDsK
KyAgICB4Zm9ybS5lRHkgPSB5OworICAgIE1vZGlmeVdvcmxkVHJhbnNmb3JtKG1faGRjLCAmeGZv
cm0sIE1XVF9MRUZUTVVMVElQTFkpOworfQorCiAjaWYgRU5BQkxFKFNWRykKIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dEZvckltYWdlKFNWR1Jlc291cmNlSW1hZ2UqKQogewpJbmRleDogcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAzMDUxNSkKKysrIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDcgQEAgRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAKLSAgICBEcmFnSW1hZ2VSZWYgdGVtcDsKLSAgICByZXR1cm4gdGVtcDsKKyAgICBy
ZXR1cm4gMDsKIH0KICAgICAKIH0K
</data>
<flag name="review"
          id="8423"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>