<?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>64879</bug_id>
          
          <creation_ts>2011-07-20 10:13:06 -0700</creation_ts>
          <short_desc>[Qt] Implement WebGL antialiasing (part 3)</short_desc>
          <delta_ts>2011-08-08 11:42:38 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>64878</dependson>
          <blocked>57261</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrew Wason">rectalogic</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>439865</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-20 10:13:06 -0700</bug_when>
    <thetext>This is part 3 of a 3 part migration for bug 57261 to migrate to GraphicsContext3DOpenGL.cpp for Qt.

Part 3 implements antialiasing leveraging the existing partial antialiasing implementation
in GraphicsContext3DOpenGL.cpp and also adopting Extensions3DOpenGL.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447211</commentid>
    <comment_count>1</comment_count>
      <attachid>103072</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-05 08:18:14 -0700</bug_when>
    <thetext>Created attachment 103072
implement antialiasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447278</commentid>
    <comment_count>2</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-08-05 10:42:49 -0700</bug_when>
    <thetext>Can this be done in two patches? (one for extensions, one for antialiasing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447281</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-05 10:49:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Can this be done in two patches? (one for extensions, one for antialiasing)

Not really because Extensions3DOpenGL::supports() is queried to see if multisample etc. is supported and antialiasing is disabled if not.

Well, I guess it could be done as 2 patches but antialiasing won&apos;t actually work unless both are applied. Should I split it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447381</commentid>
    <comment_count>4</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-08-05 13:07:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Can this be done in two patches? (one for extensions, one for antialiasing)
&gt; 
&gt; Not really because Extensions3DOpenGL::supports() is queried to see if multisample etc. is supported and antialiasing is disabled if not.
&gt; 
&gt; Well, I guess it could be done as 2 patches but antialiasing won&apos;t actually work unless both are applied. Should I split it?

Yes, please send in two patches. You can keep one bug report, and commit together - but for reviewing, the smaller the better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447401</commentid>
    <comment_count>5</comment_count>
      <attachid>103106</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-05 14:01:10 -0700</bug_when>
    <thetext>Created attachment 103106
adopt Extensions3DOpenGL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447402</commentid>
    <comment_count>6</comment_count>
      <attachid>103107</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-05 14:01:34 -0700</bug_when>
    <thetext>Created attachment 103107
implement antialiasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447403</commentid>
    <comment_count>7</comment_count>
      <attachid>103106</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-08-05 14:05:28 -0700</bug_when>
    <thetext>Comment on attachment 103106
adopt Extensions3DOpenGL

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

Code is good, Changelog needs to be a lot more descriptive. In particular the differences between how we handle ES and desktop. Don&apos;t be afraid to repeat yourself.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Adopt Extensions3DOpenGL for Qt antialiasing support.

Insufficient. We&apos;re doing things differently for ES and desktop - please describe it in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447414</commentid>
    <comment_count>8</comment_count>
      <attachid>103107</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-08-05 14:16:46 -0700</bug_when>
    <thetext>Comment on attachment 103107
implement antialiasing

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Implement WebGL antialiasing for Qt.
&gt; +        Requires adoption of Extensions3DOpenGL to be functional.

Please explain concisely what this would do, how we&apos;re using existing code for antialiasing, and what your new patch does.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:79
&gt; +    void multisampleResolve() const;

Maybe a more descriptive name? something like blitMultisampleFboToMainFbo? (you can choose a better name).
&quot;Resolve&quot; sounds a bit too close to resolving GL function names, even though it&apos;s a technically accurate term.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:154
&gt; +        if (currentContext) {
&gt; +            if (currentContext != widgetContext)
&gt; +                const_cast&lt;QGLContext*&gt;(currentContext)-&gt;makeCurrent();
&gt; +        } else
&gt; +            m_glWidget-&gt;doneCurrent();
&gt; +    }
&gt; +

Please add a comment (e.g. // switch to the FBO&apos;s context for resolving multisamples)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447983</commentid>
    <comment_count>9</comment_count>
      <attachid>103240</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-08 07:23:54 -0700</bug_when>
    <thetext>Created attachment 103240
adopt Extensions3DOpenGL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447984</commentid>
    <comment_count>10</comment_count>
      <attachid>103241</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-08 07:24:21 -0700</bug_when>
    <thetext>Created attachment 103241
implement antialiasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447992</commentid>
    <comment_count>11</comment_count>
      <attachid>103241</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-08-08 07:42:31 -0700</bug_when>
    <thetext>Comment on attachment 103241
implement antialiasing

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Existing WebGL layout tests.

Do you mean &quot;Existing WebGL layout tests cover this&quot;?

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:155
&gt; +    if (m_context-&gt;m_attrs.antialias) {
&gt; +        // Switch to FBOs context for resolving multisamples, then restore.
&gt; +        const QGLContext* currentContext = QGLContext::currentContext();
&gt; +        const QGLContext* widgetContext = m_glWidget-&gt;context();
&gt; +        if (currentContext != widgetContext)
&gt; +            m_glWidget-&gt;makeCurrent();
&gt; +        blitMultisampleFramebuffer();
&gt; +        if (currentContext) {
&gt; +            if (currentContext != widgetContext)
&gt; +                const_cast&lt;QGLContext*&gt;(currentContext)-&gt;makeCurrent();
&gt; +        } else
&gt; +            m_glWidget-&gt;doneCurrent();
&gt; +    }
&gt; +

I don&apos;t like this inside paintToTextureMapper. Maybe put this in a new function like blitMultisampleFramebufferAndRestoreContext?
If we do that you don&apos;t actually need the comment and the code describes itself.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:389
&gt;      if (m_internal-&gt;m_glWidget-&gt;isValid()) {
&gt;          glDeleteTextures(1, &amp;m_texture);
&gt; -        glDeleteRenderbuffers(1, &amp;m_depthStencilBuffer);
&gt; +        if (m_attrs.antialias) {
&gt; +            glDeleteRenderbuffers(1, &amp;m_multisampleColorBuffer);
&gt; +            if (m_attrs.stencil || m_attrs.depth)
&gt; +                glDeleteRenderbuffers(1, &amp;m_multisampleDepthStencilBuffer);
&gt; +            glDeleteFramebuffers(1, &amp;m_multisampleFBO);
&gt; +        } else if (m_attrs.stencil || m_attrs.depth)
&gt; +            glDeleteRenderbuffers(1, &amp;m_depthStencilBuffer);
&gt;          glDeleteFramebuffers(1, &amp;m_fbo);
&gt;      }
&gt;  }

This is becoming rather unreadable... can we refactor to use early returns? Looks to me that with early returns this can shrink to a single condition level from 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448005</commentid>
    <comment_count>12</comment_count>
      <attachid>103248</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-08 08:24:37 -0700</bug_when>
    <thetext>Created attachment 103248
implement antialiasing

&gt; This is becoming rather unreadable... can we refactor to use early returns?
&gt; Looks to me that with early returns this can shrink to a single condition level from 3.

I refactored, but I kept the 2nd condition level for deleting m_multisampleDepthStencilBuffer, it looked more confusing using an early return for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448007</commentid>
    <comment_count>13</comment_count>
      <attachid>103240</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 08:29:59 -0700</bug_when>
    <thetext>Comment on attachment 103240
adopt Extensions3DOpenGL

Clearing flags on attachment: 103240

Committed r92596: &lt;http://trac.webkit.org/changeset/92596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448008</commentid>
    <comment_count>14</comment_count>
      <attachid>103248</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-08-08 08:30:04 -0700</bug_when>
    <thetext>Comment on attachment 103248
implement antialiasing

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

Almost there.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:143
&gt; +    if (m_context-&gt;m_attrs.antialias)

This should be an early return inside blitMultisampleFramebufferAndRestoreContext

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:209
&gt; +    if (m_context-&gt;m_attrs.antialias)

This should be an early return inside blitMultisampleFramebuffer

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:348
&gt; +        // Bind canvas FBO

Period at end of sentence :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448016</commentid>
    <comment_count>15</comment_count>
      <attachid>103253</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-08 08:36:28 -0700</bug_when>
    <thetext>Created attachment 103253
implement antialiasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448139</commentid>
    <comment_count>16</comment_count>
      <attachid>103253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 11:42:33 -0700</bug_when>
    <thetext>Comment on attachment 103253
implement antialiasing

Clearing flags on attachment: 103253

Committed r92615: &lt;http://trac.webkit.org/changeset/92615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448140</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 11:42:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103072</attachid>
            <date>2011-08-05 08:18:14 -0700</date>
            <delta_ts>2011-08-05 14:01:10 -0700</delta_ts>
            <desc>implement antialiasing</desc>
            <filename>part3.diff</filename>
            <type>text/plain</type>
            <size>13966</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi5lZTA2Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICBBZG9wdCBFeHRlbnNpb25zM0RPcGVuR0wgZm9y
IFF0IGFuZCBpbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nLgorCisgICAgICAgICogV2ViQ29y
ZS5wcmk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMz
RE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uczNET3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zM0RPcGVuR0w6OmlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uczNET3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6Om11bHRpc2FtcGxlUmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKToKKwogMjAxMS0wOC0wNSAgS2Vpc2hpIEhhdHRvcmkg
IDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgPGlucHV0IHR5cGU9Y29s
b3I+IFVJIGJlaGF2aW9yIFdlYkNvcmUgcGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQppbmRleCBhMGRlZGQ4Li4y
NWZkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMTI0LDYgKzEyNCw3IEBAIFdFQkNPUkVfSU5DTFVE
RVBBVEggPSBcCiBXRUJDT1JFX0lOQ0xVREVQQVRIID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJD
b3JlL2JyaWRnZS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGFnZS9xdCBcCisgICAg
JCRTT1VSQ0VfRElSL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdCBcCiAgICAgJCRTT1VSQ0VfRElS
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUv
cGxhdGZvcm0vcXQgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA3MDA4YzIxLi4wODA4MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwpAQCAtMzY1OSw3ICszNjU5LDExIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9X
RUJHTD0xKSB7CiAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
CiAKICAgICAhY29udGFpbnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpIHsKKyAgICAgICAgSEVBREVS
UyArPSBcCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMLmgKKwogICAgICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIFwKICAgICAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKIAogICAgICAg
ICBBTkdMRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAiV2ViQ29yZSIsICJUaGlyZFBhcnR5L0FOR0xF
IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCmluZGV4IGY4NmEyZjguLjVmYzZlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtODgsOSArODgs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsK
IGNsYXNzIERyYXdpbmdCdWZmZXI7CiBjbGFzcyBFeHRlbnNpb25zM0Q7Ci0jaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFFUKQogY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwotI2VsaWYgUExBVEZP
Uk0oUVQpCisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKIGNsYXNzIEV4dGVuc2lvbnMzRFF0Owog
I2VuZGlmCiBjbGFzcyBIb3N0V2luZG93OwpAQCAtOTE4LDcgKzkxOSw3IEBAIHB1YmxpYzoKICAg
ICBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIFNoYWRlclNvdXJjZUVudHJ5PiBtX3NoYWRlclNv
dXJjZU1hcDsKIAogICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29tcGlsZXI7Ci0jaWYgUExBVEZP
Uk0oUVQpCisjaWYgUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAg
ZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRFF0OwogICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4g
bV9leHRlbnNpb25zOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKaW5kZXggNGM3
MTY0ZS4uN2RlZDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKQEAgLTM3LDYgKzM3
LDggQEAKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlICJPcGVuR0xTaGltcy5oIgorI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8Y2Fpcm8v
T3BlbkdMU2hpbXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDcsNyAr
MTQ5LDcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW4KIFBsYXRmb3JtM0RPYmplY3QgRXh0ZW5z
aW9uczNET3BlbkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiAhUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QK
KyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmIGRlZmluZWQoR0xfQVBQTEVf
dmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdAogICAg
IEdMdWludCBhcnJheSA9IDA7CiAgICAgZ2xHZW5WZXJ0ZXhBcnJheXNBUFBMRSgxLCAmYXJyYXkp
OwogICAgIHJldHVybiBhcnJheTsKQEAgLTE2Miw3ICsxNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnMz
RE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJheSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0jaWYgIVBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisjaWYgIVBMQVRGT1JNKEdUSykg
JiYgIVBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3Qp
ICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICBnbERlbGV0ZVZlcnRleEFycmF5
c0FQUExFKDEsICZhcnJheSk7CiAjZW5kaWYKIH0KQEAgLTE3Myw3ICsxNzUsNyBAQCBHQzNEYm9v
bGVhbiBFeHRlbnNpb25zM0RPcGVuR0w6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVj
dCBhcnJheSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgIVBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHTF9B
UFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0
CisjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKEdMX0FQUExF
X3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICByZXR1cm4gZ2xJc1ZlcnRleEFycmF5QVBQTEUoYXJyYXkpOwogI2Vsc2UKICAgICByZXR1cm4g
R0xfRkFMU0U7CkBAIC0xODYsNyArMTg4LDcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OmJp
bmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0IGFycmF5KQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmICFQTEFURk9STShH
VEspICYmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVf
dmVydGV4X2FycmF5X29iamVjdAorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkg
JiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0CiAgICAgZ2xCaW5kVmVydGV4QXJyYXlBUFBMRShhcnJheSk7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGQ5MWZiNjYu
LmY3YTc2ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTE1
MjMsMTQgKzE1MjMsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVk
KCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oUVQpCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkK
IHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQ
dHIobmV3IEV4dGVuc2lvbnMzRE9wZW5HTCh0aGlzKSk7CiAgICAgcmV0dXJuIG1fZXh0ZW5zaW9u
cy5nZXQoKTsKIH0KLSNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggN2U0
MTg3MS4uMGFiMGE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTIzLDcgKzIzLDExIEBA
CiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRlIDxjYWlyby9PcGVuR0xTaGltcy5o
PgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpZiBkZWZpbmVkKFFUX09Q
RU5HTF9FU18yKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRFF0LmgiCisjZWxzZQorI2luY2x1ZGUg
IkV4dGVuc2lvbnMzRE9wZW5HTC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93
LmgiCkBAIC03Niw2ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIq
LCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7CiAgICAgUVJlY3RG
IGJvdW5kaW5nUmVjdCgpIGNvbnN0OworICAgIHZvaWQgbXVsdGlzYW1wbGVSZXNvbHZlKCkgY29u
c3Q7CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cq
IG1faG9zdFdpbmRvdzsKQEAgLTEwOSwxMSArMTE0LDYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwKICAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRyeSgwLCAwLCAwLCAwKTsKIAogICAgIG1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0KLSNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAg
ICBnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwotICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9H
UkFNX1BPSU5UX1NJWkUpOwotI2VuZGlmCiB9CiAKIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKQEAgLTE0Myw2ICsxNDMsMTkgQEAgc3RhdGlj
IGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2sp
IGNvbnN0CiB7CisgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMpIHsKKyAgICAg
ICAgY29uc3QgUUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRR0xDb250ZXh0OjpjdXJyZW50
Q29udGV4dCgpOworICAgICAgICBjb25zdCBRR0xDb250ZXh0KiB3aWRnZXRDb250ZXh0ID0gbV9n
bFdpZGdldC0+Y29udGV4dCgpOworICAgICAgICBpZiAoY3VycmVudENvbnRleHQgIT0gd2lkZ2V0
Q29udGV4dCkKKyAgICAgICAgICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgICAg
IG11bHRpc2FtcGxlUmVzb2x2ZSgpOworICAgICAgICBpZiAoY3VycmVudENvbnRleHQpIHsKKyAg
ICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAhPSB3aWRnZXRDb250ZXh0KQorICAgICAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8UUdMQ29udGV4dCo+KGN1cnJlbnRDb250ZXh0KS0+bWFrZUN1cnJl
bnQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2dsV2lkZ2V0LT5kb25lQ3VycmVu
dCgpOworICAgIH0KKwogICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5pc09wZW5HTEJhY2tlZCgpKSB7
CiAgICAgICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJl
TWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKICAgICAgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJl
KG1fY29udGV4dC0+bV90ZXh0dXJlLCAhbV9jb250ZXh0LT5tX2F0dHJzLmFscGhhLCBGbG9hdFNp
emUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlw
ICovKTsKQEAgLTIwNSw2ICsyMTgsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKIAogICAg
IFFSZWN0RiByZWN0ID0gb3B0aW9uID8gb3B0aW9uLT5yZWN0IDogYm91bmRpbmdSZWN0KCk7CiAK
KyAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGlmIChtX2NvbnRleHQtPm1fYXR0
cnMuYW50aWFsaWFzKQorICAgICAgICBtdWx0aXNhbXBsZVJlc29sdmUoKTsKKwogICAgIC8vIFVz
ZSBkaXJlY3QgdGV4dHVyZSBtYXBwaW5nIGlmIFdlYkdMIGNhbnZhcyBoYXMgYSBzaGFyZWQgT3Bl
bkdMIGNvbnRleHQKICAgICAvLyB3aXRoIGJyb3dzZXJzIE9wZW5HTCBjb250ZXh0LgogICAgIFFH
TFdpZGdldCogdmlld3BvcnRHTFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKQEAgLTIx
Nyw3ICsyMzQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIFFJbWFnZSBvZmZzY3Jl
ZW5JbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
Mik7CiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIq
PihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCi0gICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fY29udGV4dC0+bV9mYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8g
MCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+
bV9ib3VuZEZCTyk7CkBAIC0yNDksNiArMjY1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
CiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKC8qIHggKi8gMCwgLyogeSAqLyAwLCBvZmZzY3JlZW5J
bWFnZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bXVsdGlzYW1wbGVS
ZXNvbHZlKCkgY29uc3QKK3sKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVG
RkVSX0VYVCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9jb250ZXh0LT5tX2Zibyk7CisgICAgZ2xC
bGl0RnJhbWVidWZmZXIoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0
LT5tX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29u
dGV4dC0+bV9jdXJyZW50SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9j
b250ZXh0LT5tX2JvdW5kRkJPKTsKK30KKwogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlIHJlbmRlclN0eWxlKQogewogICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBj
dXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkBA
IC0yODAsMTAgKzMwNCw4IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAjaWYgZGVmaW5lZChR
VF9PUEVOR0xfRVNfMikKICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKICNlbHNlCi0gICAg
aWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7CisgICAg
dmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAjZW5kaWYKLSAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZh
bHNlOwogCiAgICAgaWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0
aW9uIGZhaWxlZC4iKTsKQEAgLTMxMywxMyArMzM1LDIxIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9z
dFdpCiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFN
UF9UT19FREdFKTsKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwKTsKIAotICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBnbEdlblJlbmRlcmJ1
ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLQotICAgIC8vIEJp
bmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCi0gICAg
bV9ib3VuZEZCTyA9IG1fZmJvOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4w
LCAwLjApOworICAgIC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KKyAgICBpZiAobV9hdHRy
cy5hbnRpYWxpYXMpIHsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBtX2JvdW5kRkJPID0gbV9tdWx0
aXNhbXBsZUZCTzsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxl
Q29sb3JCdWZmZXIpOworICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVw
dGgpCisgICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0
aFN0ZW5jaWxCdWZmZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEJpbmQgY2FudmFzIEZC
TworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fZmJvKTsKKyAgICAgICAgbV9ib3VuZEZCTyA9IG1fZmJvOworICAgICAgICBpZiAobV9h
dHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBnbEdlblJlbmRlcmJ1
ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICB9CiAKICNpZiAhZGVmaW5lZChR
VF9PUEVOR0xfRVNfMikKICAgICAvLyBBTkdMRSBpbml0aWFsaXphdGlvbi4KQEAgLTMzNyw3ICsz
NjcsMTIgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICAvLyBBbHdheXMgc2V0IHRvIDEg
Zm9yIE9wZW5HTCBFUy4KICAgICBBTkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDE7CiAg
ICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMpOworCisgICAgZ2xFbmFi
bGUoR0xfUE9JTlRfU1BSSVRFKTsKKyAgICBnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lO
VF9TSVpFKTsKICNlbmRpZgorCisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7
CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQpAQCAtMzQ1LDcg
KzM4MCwxMyBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGlmIChtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAm
bV90ZXh0dXJlKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisgICAgICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgeworICAgICAgICAg
ICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwor
ICAgICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAg
ICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisgICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgIH0gZWxzZSBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0
cnMuZGVwdGgpCisgICAgICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsK
ICAgICB9CiB9CkBAIC0xNDk1LDcgKzE1MzYsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjps
YXllckNvbXBvc2l0ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsK
IH0KLSNlbmRpZgogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKCkKIHsKQEAgLTE1MDMsNiArMTU0Myw3IEBAIEV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihu
ZXcgRXh0ZW5zaW9uczNEUXQpOwogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9Cisj
ZW5kaWYKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFn
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103106</attachid>
            <date>2011-08-05 14:01:10 -0700</date>
            <delta_ts>2011-08-08 07:23:54 -0700</delta_ts>
            <desc>adopt Extensions3DOpenGL</desc>
            <filename>extensions.diff</filename>
            <type>text/plain</type>
            <size>7126</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi41YTlmYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICBBZG9wdCBFeHRlbnNpb25zM0RPcGVuR0wgZm9y
IFF0IGFudGlhbGlhc2luZyBzdXBwb3J0LgorCisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6Y3Jl
YXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdM
OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RP
cGVuR0w6OmlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNE
T3BlbkdMOjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKToKKwogMjAxMS0wOC0wNSAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgPGlucHV0IHR5
cGU9Y29sb3I+IFVJIGJlaGF2aW9yIFdlYkNvcmUgcGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQppbmRleCBhMGRl
ZGQ4Li4yNWZkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMTI0LDYgKzEyNCw3IEBAIFdFQkNPUkVf
SU5DTFVERVBBVEggPSBcCiBXRUJDT1JFX0lOQ0xVREVQQVRIID0gXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJDb3JlL2JyaWRnZS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGFnZS9xdCBc
CisgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIFwKICAg
ICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdCBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1dl
YkNvcmUvcGxhdGZvcm0vcXQgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA3MDA4YzIxLi4wODA4MTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMzY1OSw3ICszNjU5LDExIEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJHTD0xKSB7CiAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1CiAKICAgICAhY29udGFpbnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpIHsKKyAgICAgICAg
SEVBREVSUyArPSBcCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMLmgKKwogICAgICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIFwKICAgICAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKIAog
ICAgICAgICBBTkdMRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAiV2ViQ29yZSIsICJUaGlyZFBhcnR5
L0FOR0xFIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCmluZGV4IGY4NmEyZjguLjVmYzZlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtODgs
OSArODgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDsKIGNsYXNzIERyYXdpbmdCdWZmZXI7CiBjbGFzcyBFeHRlbnNpb25zM0Q7Ci0jaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKQogY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwotI2VsaWYg
UExBVEZPUk0oUVQpCisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKIGNsYXNzIEV4dGVuc2lvbnMz
RFF0OwogI2VuZGlmCiBjbGFzcyBIb3N0V2luZG93OwpAQCAtOTE4LDcgKzkxOSw3IEBAIHB1Ymxp
YzoKICAgICBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIFNoYWRlclNvdXJjZUVudHJ5PiBtX3No
YWRlclNvdXJjZU1hcDsKIAogICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29tcGlsZXI7Ci0jaWYg
UExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIp
CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRFF0OwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RRdD4gbV9leHRlbnNpb25zOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKaW5k
ZXggNGM3MTY0ZS4uN2RlZDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKQEAgLTM3
LDYgKzM3LDggQEAKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNlbGlmIFBMQVRGT1JNKEdUSykK
ICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8
Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
NDcsNyArMTQ5LDcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW4KIFBsYXRmb3JtM0RPYmplY3Qg
RXh0ZW5zaW9uczNET3BlbkdMOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiAhUExBVEZPUk0oR1RLKSAmJiBkZWZpbmVk
KEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9v
YmplY3QKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmIGRlZmluZWQoR0xf
QVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVj
dAogICAgIEdMdWludCBhcnJheSA9IDA7CiAgICAgZ2xHZW5WZXJ0ZXhBcnJheXNBUFBMRSgxLCAm
YXJyYXkpOwogICAgIHJldHVybiBhcnJheTsKQEAgLTE2Miw3ICsxNjQsNyBAQCB2b2lkIEV4dGVu
c2lvbnMzRE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJh
eSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0jaWYgIVBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJy
YXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisjaWYgIVBMQVRGT1JN
KEdUSykgJiYgIVBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9v
YmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICBnbERlbGV0ZVZlcnRl
eEFycmF5c0FQUExFKDEsICZhcnJheSk7CiAjZW5kaWYKIH0KQEAgLTE3Myw3ICsxNzUsNyBAQCBH
QzNEYm9vbGVhbiBFeHRlbnNpb25zM0RPcGVuR0w6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0z
RE9iamVjdCBhcnJheSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgIVBMQVRGT1JNKEdUSykgJiYgZGVmaW5l
ZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlf
b2JqZWN0CisjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKEdM
X0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmpl
Y3QKICAgICByZXR1cm4gZ2xJc1ZlcnRleEFycmF5QVBQTEUoYXJyYXkpOwogI2Vsc2UKICAgICBy
ZXR1cm4gR0xfRkFMU0U7CkBAIC0xODYsNyArMTg4LDcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVu
R0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0IGFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmICFQTEFU
Rk9STShHVEspICYmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xf
QVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9S
TShRVCkgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBM
RV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgZ2xCaW5kVmVydGV4QXJyYXlBUFBMRShhcnJheSk7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGQ5
MWZiNjYuLmY3YTc2ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAK
QEAgLTE1MjMsMTQgKzE1MjMsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKLSNpZiAh
UExBVEZPUk0oUVQpCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0g
YWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRE9wZW5HTCh0aGlzKSk7CiAgICAgcmV0dXJuIG1fZXh0
ZW5zaW9ucy5nZXQoKTsKIH0KLSNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5k
ZXggN2U0MTg3MS4uZTk3MjAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTIzLDcgKzIz
LDExIEBACiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRlIDxjYWlyby9PcGVuR0xT
aGltcy5oPgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpZiBkZWZpbmVk
KFFUX09QRU5HTF9FU18yKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRFF0LmgiCisjZWxzZQorI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0
V2luZG93LmgiCkBAIC0xNDk1LDcgKzE0OTksNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjps
YXllckNvbXBvc2l0ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsK
IH0KLSNlbmRpZgogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKCkKIHsKQEAgLTE1MDMsNiArMTUwNiw3IEBAIEV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihu
ZXcgRXh0ZW5zaW9uczNEUXQpOwogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9Cisj
ZW5kaWYKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFn
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
Cg==
</data>
<flag name="review"
          id="98587"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103107</attachid>
            <date>2011-08-05 14:01:34 -0700</date>
            <delta_ts>2011-08-08 07:24:21 -0700</delta_ts>
            <desc>implement antialiasing</desc>
            <filename>antialias.diff</filename>
            <type>text/plain</type>
            <size>7832</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi42OWRjMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5n
IGZvciBRdC4KKyAgICAgICAgUmVxdWlyZXMgYWRvcHRpb24gb2YgRXh0ZW5zaW9uczNET3BlbkdM
IHRvIGJlIGZ1bmN0aW9uYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bXVsdGlzYW1wbGVSZXNvbHZlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNE
KToKKwogMjAxMS0wOC0wNSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbXBsZW1lbnQgPGlucHV0IHR5cGU9Y29sb3I+IFVJIGJlaGF2aW9yIFdlYkNvcmUg
cGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA3ZTQxODcxLi4xNmFlYTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBh
aW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCop
OwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKKyAgICB2b2lkIG11bHRpc2FtcGxl
UmVzb2x2ZSgpIGNvbnN0OwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAg
ICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CkBAIC0xMDksMTEgKzExMCw2IEBAIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7
CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0jaWYgIWRlZmluZWQoUVRfT1BF
TkdMX0VTXzIpCi0gICAgZ2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKLSAgICBnbEVuYWJsZShH
TF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKLSNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCkBAIC0xNDMsNiArMTM5
LDE5IEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVpbnQzMiBwaXhlbCkK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKSBjb25zdAogeworICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFs
aWFzKSB7CisgICAgICAgIGNvbnN0IFFHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUUdMQ29u
dGV4dDo6Y3VycmVudENvbnRleHQoKTsKKyAgICAgICAgY29uc3QgUUdMQ29udGV4dCogd2lkZ2V0
Q29udGV4dCA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250
ZXh0ICE9IHdpZGdldENvbnRleHQpCisgICAgICAgICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgICAgICBtdWx0aXNhbXBsZVJlc29sdmUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRD
b250ZXh0KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgIT0gd2lkZ2V0Q29udGV4
dCkKKyAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFFHTENvbnRleHQqPihjdXJyZW50Q29udGV4
dCktPm1ha2VDdXJyZW50KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9nbFdpZGdl
dC0+ZG9uZUN1cnJlbnQoKTsKKyAgICB9CisKICAgICBpZiAodGV4dHVyZU1hcHBlci0+aXNPcGVu
R0xCYWNrZWQoKSkgewogICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGlj
X2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7CiAgICAgICAgIHRleG1hcEdM
LT5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgIW1fY29udGV4dC0+bV9hdHRycy5h
bHBoYSwgRmxvYXRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ss
IHRydWUgLyogZmxpcCAqLyk7CkBAIC0yMDUsNiArMjE0LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlv
bkdyYXBoCiAKICAgICBRUmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9wdGlvbi0+cmVjdCA6IGJvdW5k
aW5nUmVjdCgpOwogCisgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBpZiAobV9j
b250ZXh0LT5tX2F0dHJzLmFudGlhbGlhcykKKyAgICAgICAgbXVsdGlzYW1wbGVSZXNvbHZlKCk7
CisKICAgICAvLyBVc2UgZGlyZWN0IHRleHR1cmUgbWFwcGluZyBpZiBXZWJHTCBjYW52YXMgaGFz
IGEgc2hhcmVkIE9wZW5HTCBjb250ZXh0CiAgICAgLy8gd2l0aCBicm93c2VycyBPcGVuR0wgY29u
dGV4dC4KICAgICBRR0xXaWRnZXQqIHZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9ydEdMV2lk
Z2V0KCk7CkBAIC0yMTcsNyArMjMwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBR
SW1hZ2Ugb2Zmc2NyZWVuSW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBRSW1hZ2U6
OkZvcm1hdF9BUkdCMzIpOwogICAgIHF1aW50MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRf
Y2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2UuYml0cygpKTsKIAotICAgIG1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKICAgICBnbFJlYWRQaXhlbHMoLyogeCAq
LyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVs
cyk7CiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOwpAQCAtMjQ5LDYgKzI2MSwxNCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5
bGVPcHRpb25HcmFwaAogICAgIHBhaW50ZXItPmRyYXdJbWFnZSgvKiB4ICovIDAsIC8qIHkgKi8g
MCwgb2Zmc2NyZWVuSW1hZ2UpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
Om11bHRpc2FtcGxlUmVzb2x2ZSgpIGNvbnN0Cit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
UkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fY29udGV4dC0+bV9m
Ym8pOworICAgIGdsQmxpdEZyYW1lYnVmZmVyKDAsIDAsIG1fY29udGV4dC0+bV9jdXJyZW50V2lk
dGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2NvbnRleHQtPm1fY3VycmVu
dFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwg
R0xfTElORUFSKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7Cit9CisKIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKIHsKICAgICAvLyBUaGlzIGltcGxlbWVudGF0
aW9uIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSBI
b3N0V2luZG93LgpAQCAtMjgwLDEwICszMDAsOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhp
Y3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQog
I2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgbV9hdHRycy5zdGVuY2lsID0gZmFsc2U7
CiAjZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIG1fYXR0cnMuZGVwdGgg
PSB0cnVlOworICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogI2VuZGlmCi0gICAgbV9hdHRycy5h
bnRpYWxpYXMgPSBmYWxzZTsKIAogICAgIGlmICghbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNW
YWxpZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdl
dCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CkBAIC0zMTMsMTMgKzMzMSwyMSBAQCBHcmFwaGlj
c0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaQogICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0Nv
bnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCk7CiAKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAg
Z2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7
Ci0KLSAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0aWFsIGNsZWFyIGNvbG9yIHRv
IGJsYWNrLgotICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICBnbENsZWFyQ29sb3Io
MC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICAvLyBDcmVhdGUgYSBtdWx0aXNhbXBsZSBGQk8uCisg
ICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgbV9ib3Vu
ZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAm
bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8
fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX211
bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBC
aW5kIGNhbnZhcyBGQk8KKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKKyAg
ICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAg
Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfQogCiAj
aWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgLy8gQU5HTEUgaW5pdGlhbGl6YXRpb24u
CkBAIC0zMzcsNyArMzYzLDEyIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQz
RChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAgICAgLy8gQWx3
YXlzIHNldCB0byAxIGZvciBPcGVuR0wgRVMuCiAgICAgQU5HTEVSZXNvdXJjZXMuTWF4RHJhd0J1
ZmZlcnMgPSAxOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsK
KworICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CisgICAgZ2xFbmFibGUoR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSk7CiAjZW5kaWYKKworICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAu
MCwgMC4wLCAwLjApOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNE
KCkKQEAgLTM0NSw3ICszNzYsMTMgQEAgR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRl
eHQzRCgpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBp
ZiAobV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CiAgICAgICAgIGdsRGVsZXRl
VGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMp
IHsKKyAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUNv
bG9yQnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5k
ZXB0aCkKKyAgICAgICAgICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlz
YW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICB9IGVsc2UgaWYgKG1fYXR0cnMuc3Rl
bmNpbCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJz
KDEsICZtX2Zibyk7CiAgICAgfQogfQo=
</data>
<flag name="review"
          id="98588"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103240</attachid>
            <date>2011-08-08 07:23:54 -0700</date>
            <delta_ts>2011-08-08 08:29:59 -0700</delta_ts>
            <desc>adopt Extensions3DOpenGL</desc>
            <filename>extensions.diff</filename>
            <type>text/plain</type>
            <size>7223</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi5hODYzZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICBBZG9wdCBFeHRlbnNpb25zM0RPcGVuR0wgZm9y
IFF0IGRlc2t0b3AgYXMgYSBwcmVyZXF1aXNpdGUKKyAgICAgICAgZm9yIGltcGxlbWVudGluZyBX
ZWJHTCBhbnRpYWxpYXNpbmcuCisgICAgICAgIEV4dGVuc2lvbnMzRFF0IGlzIHN0aWxsIHVzZWQg
Zm9yIEVTMi4KKworICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VT
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMOjppc1ZlcnRleEFy
cmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6YmluZFZlcnRl
eEFycmF5T0VTKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxh
eWVyQ29tcG9zaXRlZCk6CisKIDIwMTEtMDgtMDUgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IDxpbnB1dCB0eXBlPWNvbG9yPiBVSSBiZWhh
dmlvciBXZWJDb3JlIHBhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggYTBkZWRkOC4uMjVmZGYzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkKQEAgLTEyNCw2ICsxMjQsNyBAQCBXRUJDT1JFX0lOQ0xVREVQQVRIID0gXAog
V0VCQ09SRV9JTkNMVURFUEFUSCA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9icmlkZ2Uv
cXQgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BhZ2UvcXQgXAorICAgICQkU09VUkNFX0RJ
Ui9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbCBcCiAgICAgJCRTT1VSQ0VfRElSL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL3F0
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggNzAwOGMyMS4uMDgwODEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTM2NTksNyArMzY1OSwxMSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewog
ICAgIElOQ0xVREVQQVRIICs9ICQkUFdEL3BsYXRmb3JtL2dyYXBoaWNzL2dwdQogCiAgICAgIWNv
bnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsZXMyKSB7CisgICAgICAgIEhFQURFUlMgKz0gXAorICAg
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCisK
ICAgICAgICAgU09VUkNFUyArPSBcCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCiAKICAgICAgICAgQU5HTEVfRElS
ID0gJCRyZXBsYWNlKFBXRCwgIldlYkNvcmUiLCAiVGhpcmRQYXJ0eS9BTkdMRSIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApp
bmRleCBmODZhMmY4Li41ZmM2ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTg4LDkgKzg4LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBEcmF3
aW5nQnVmZmVyOwogY2xhc3MgRXh0ZW5zaW9uczNEOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShRVCkKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKLSNlbGlmIFBMQVRGT1JNKFFUKQorI2Vu
ZGlmCisjaWYgUExBVEZPUk0oUVQpCiBjbGFzcyBFeHRlbnNpb25zM0RRdDsKICNlbmRpZgogY2xh
c3MgSG9zdFdpbmRvdzsKQEAgLTkxOCw3ICs5MTksNyBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxQ
bGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9zaGFkZXJTb3VyY2VNYXA7CiAK
ICAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwotI2lmIFBMQVRGT1JNKFFUKQorI2lm
IFBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGZyaWVuZCBjbGFz
cyBFeHRlbnNpb25zM0RRdDsKICAgICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+IG1fZXh0ZW5zaW9u
czsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCmluZGV4IDRjNzE2NGUuLjdkZWQ2
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zM0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5j
bHVkZSA8T3BlbkdML2dsLmg+CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKKyNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPGNhaXJvL09wZW5HTFNoaW1z
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTQ3LDcgKzE0OSw3IEBAIHZv
aWQgRXh0ZW5zaW9uczNET3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuCiBQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lvbnMzRE9wZW5H
TDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0jaWYgIVBMQVRGT1JNKEdUSykgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhf
YXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisjaWYgIVBMQVRG
T1JNKEdUSykgJiYgIVBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKEdMX0FQUExFX3ZlcnRleF9hcnJh
eV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICBHTHVpbnQgYXJy
YXkgPSAwOwogICAgIGdsR2VuVmVydGV4QXJyYXlzQVBQTEUoMSwgJmFycmF5KTsKICAgICByZXR1
cm4gYXJyYXk7CkBAIC0xNjIsNyArMTY0LDcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OmRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmICFQTEFU
Rk9STShHVEspICYmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xf
QVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9S
TShRVCkgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBM
RV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgZ2xEZWxldGVWZXJ0ZXhBcnJheXNBUFBMRSgxLCAm
YXJyYXkpOwogI2VuZGlmCiB9CkBAIC0xNzMsNyArMTc1LDcgQEAgR0MzRGJvb2xlYW4gRXh0ZW5z
aW9uczNET3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCiAg
ICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOwotI2lmICFQTEFURk9STShHVEspICYmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4
X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorI2lmICFQTEFU
Rk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJy
YXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgcmV0dXJuIGds
SXNWZXJ0ZXhBcnJheUFQUExFKGFycmF5KTsKICNlbHNlCiAgICAgcmV0dXJuIEdMX0ZBTFNFOwpA
QCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgRXh0ZW5zaW9uczNET3BlbkdMOjpiaW5kVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJheSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiAhUExBVEZPUk0oR1RLKSAmJiBkZWZp
bmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJh
eV9vYmplY3QKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmIGRlZmluZWQo
R0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29i
amVjdAogICAgIGdsQmluZFZlcnRleEFycmF5QVBQTEUoYXJyYXkpOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBkOTFmYjY2Li5mN2E3NmUwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xNTIzLDE0ICsxNTIz
LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCi0jaWYgIVBMQVRGT1JNKFFUKQogRXh0
ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYg
KCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRl
bnNpb25zM0RPcGVuR0wodGhpcykpOwogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9
Ci0jZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IDdlNDE4NzEuLmU5NzIw
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0yMyw3ICsyMywxMSBAQAogI2luY2x1ZGUg
IldlYkdMT2JqZWN0LmgiCiAjaW5jbHVkZSA8Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KICNpbmNsdWRl
ICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikK
ICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgorI2Vsc2UKKyNpbmNsdWRlICJFeHRlbnNpb25z
M0RPcGVuR0wuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgpAQCAtMTQ5
NSw3ICsxNDk5LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9Ci0jZW5kaWYKIAogRXh0
ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CkBAIC0xNTAz
LDYgKzE1MDYsNyBAQCBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKCkKICAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0
KTsKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwogfQorI2VuZGlmCiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103241</attachid>
            <date>2011-08-08 07:24:21 -0700</date>
            <delta_ts>2011-08-08 08:24:37 -0700</delta_ts>
            <desc>implement antialiasing</desc>
            <filename>antialias.diff</filename>
            <type>text/plain</type>
            <size>8138</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi4yZjAxMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5n
IGZvciBRdCBkZXNrdG9wLgorICAgICAgICBFeGlzdGluZyBjb2RlIGluIEdyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcCBtYW5hZ2VzIHRoZQorICAgICAgICBtdWx0aXNhbXBsZSBGQk8uIEdyYXBo
aWNzQ29udGV4dDNEUXQuY3BwIGNyZWF0ZXMgaXQgYW5kIGJsaXRzCisgICAgICAgIGl0IHRvIHRo
ZSByZWd1bGFyIEZCTyB3aGVuIHBhaW50aW5nLgorICAgICAgICBSZXF1aXJlcyBhZG9wdGlvbiBv
ZiBFeHRlbnNpb25zM0RPcGVuR0wgdG8gYmUgZnVsbHkgZnVuY3Rpb25hbC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjptdWx0aXNhbXBsZVJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorCiAyMDExLTA4LTA1ICBLZWlzaGkgSGF0dG9y
aSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCA8aW5wdXQgdHlwZT1j
b2xvcj4gVUkgYmVoYXZpb3IgV2ViQ29yZSBwYXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4
IDdlNDE4NzEuLmRkOTg0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC03Niw2ICs3Niw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBRU3R5bGVPcHRp
b25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7CiAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNv
bnN0OworICAgIHZvaWQgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXIoKSBjb25zdDsKIAogICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2lu
ZG93OwpAQCAtMTA5LDExICsxMTAsNiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgIG1f
Z2xXaWRnZXQtPnNldEdlb21ldHJ5KDAsIDAsIDAsIDApOwogCiAgICAgbV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLQotI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIGdsRW5hYmxl
KEdMX1BPSU5UX1NQUklURSk7Ci0gICAgZ2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRf
U0laRSk7Ci0jZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoKQpAQCAtMTQzLDYgKzEzOSwyMCBAQCBzdGF0aWMgaW5saW5lIHF1
aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykgY29uc3QKIHsK
KyAgICBpZiAobV9jb250ZXh0LT5tX2F0dHJzLmFudGlhbGlhcykgeworICAgICAgICAvLyBTd2l0
Y2ggdG8gRkJPcyBjb250ZXh0IGZvciByZXNvbHZpbmcgbXVsdGlzYW1wbGVzLCB0aGVuIHJlc3Rv
cmUuCisgICAgICAgIGNvbnN0IFFHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUUdMQ29udGV4
dDo6Y3VycmVudENvbnRleHQoKTsKKyAgICAgICAgY29uc3QgUUdMQ29udGV4dCogd2lkZ2V0Q29u
dGV4dCA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0
ICE9IHdpZGdldENvbnRleHQpCisgICAgICAgICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworICAgICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpOworICAgICAgICBpZiAoY3Vy
cmVudENvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAhPSB3aWRnZXRD
b250ZXh0KQorICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UUdMQ29udGV4dCo+KGN1cnJlbnRD
b250ZXh0KS0+bWFrZUN1cnJlbnQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ds
V2lkZ2V0LT5kb25lQ3VycmVudCgpOworICAgIH0KKwogICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5p
c09wZW5HTEJhY2tlZCgpKSB7CiAgICAgICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKICAgICAgICAgdGV4
bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCAhbV9jb250ZXh0LT5tX2F0
dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwg
bWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKQEAgLTIwNSw2ICsyMTUsMTAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxl
T3B0aW9uR3JhcGgKIAogICAgIFFSZWN0RiByZWN0ID0gb3B0aW9uID8gb3B0aW9uLT5yZWN0IDog
Ym91bmRpbmdSZWN0KCk7CiAKKyAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGlm
IChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKQorICAgICAgICBibGl0TXVsdGlzYW1wbGVG
cmFtZWJ1ZmZlcigpOworCiAgICAgLy8gVXNlIGRpcmVjdCB0ZXh0dXJlIG1hcHBpbmcgaWYgV2Vi
R0wgY2FudmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29udGV4dAogICAgIC8vIHdpdGggYnJvd3Nl
cnMgT3BlbkdMIGNvbnRleHQuCiAgICAgUUdMV2lkZ2V0KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0
Vmlld3BvcnRHTFdpZGdldCgpOwpAQCAtMjE3LDcgKzIzMSw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlv
bkdyYXBoCiAgICAgUUltYWdlIG9mZnNjcmVlbkltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKLSAg
ICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CiAgICAgZ2xSZWFk
UGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgaW1hZ2VQaXhlbHMpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKQEAgLTI0OSw2ICsyNjIsMTQg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRl
ciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoLyogeCAq
LyAwLCAvKiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fY29udGV4dC0+bV9t
dWx0aXNhbXBsZUZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZF
Ul9FWFQsIG1fY29udGV4dC0+bV9mYm8pOworICAgIGdsQmxpdEZyYW1lYnVmZmVyKDAsIDAsIG1f
Y29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0LCAwLCAw
LCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCwg
R0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7Cit9
CisKIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKIHsKICAg
ICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVy
aW5nIGRpcmVjdGx5IHRvIHRoZSBIb3N0V2luZG93LgpAQCAtMjgwLDEwICszMDEsOCBAQCBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaQogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgbV9h
dHRycy5zdGVuY2lsID0gZmFsc2U7CiAjZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0g
ICAgICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOworICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwog
I2VuZGlmCi0gICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKIAogICAgIGlmICghbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhp
Y3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CkBAIC0zMTMs
MTMgKzMzMiwyMSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIGdsVGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgZ2xCaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CiAKLSAgICBpZiAobV9h
dHRycy5kZXB0aCkKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0KLSAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBp
bml0aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgotICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKLSAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJv
KTsKLSAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICAvLyBDcmVhdGUg
YSBtdWx0aXNhbXBsZSBGQk8uCisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CisgICAgICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxl
RkJPKTsKKyAgICAgICAgbV9ib3VuZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CisgICAgICAgIGds
R2VuUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAg
aWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAgZ2xHZW5S
ZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBCaW5kIGNhbnZhcyBGQk8KKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgICAgIG1f
Ym91bmRGQk8gPSBtX2ZibzsKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJz
LmRlcHRoKQorICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNp
bEJ1ZmZlcik7CisgICAgfQogCiAjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgLy8g
QU5HTEUgaW5pdGlhbGl6YXRpb24uCkBAIC0zMzcsNyArMzY0LDEyIEBAIEdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpCiAgICAgLy8gQWx3YXlzIHNldCB0byAxIGZvciBPcGVuR0wgRVMuCiAgICAgQU5H
TEVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSAxOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3Vy
Y2VzKEFOR0xFUmVzb3VyY2VzKTsKKworICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7Cisg
ICAgZ2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7CiAjZW5kaWYKKworICAg
IGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCiBHcmFwaGljc0NvbnRleHQz
RDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKQEAgLTM0NSw3ICszNzcsMTMgQEAgR3JhcGhpY3NDb250
ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKICAgICBpZiAobV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgp
KSB7CiAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGds
RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBp
ZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKKyAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgICAgICBnbERlbGV0ZVJlbmRl
cmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAg
ICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICB9
IGVsc2UgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAg
Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAg
IGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CiAgICAgfQogfQo=
</data>
<flag name="review"
          id="98771"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="98772"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103248</attachid>
            <date>2011-08-08 08:24:37 -0700</date>
            <delta_ts>2011-08-08 08:36:28 -0700</delta_ts>
            <desc>implement antialiasing</desc>
            <filename>antialias.diff</filename>
            <type>text/plain</type>
            <size>8305</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi5jY2Q1MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cyBjb3ZlciB0aGlzLgorCisgICAgICAgIEltcGxlbWVudCBXZWJHTCBh
bnRpYWxpYXNpbmcgZm9yIFF0IGRlc2t0b3AuCisgICAgICAgIEV4aXN0aW5nIGNvZGUgaW4gR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIG1hbmFnZXMgdGhlCisgICAgICAgIG11bHRpc2FtcGxl
IEZCTy4gR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgY3JlYXRlcyBpdCBhbmQgYmxpdHMKKyAgICAg
ICAgaXQgdG8gdGhlIHJlZ3VsYXIgRkJPIHdoZW4gcGFpbnRpbmcuCisgICAgICAgIFJlcXVpcmVz
IGFkb3B0aW9uIG9mIEV4dGVuc2lvbnMzRE9wZW5HTCB0byBiZSBmdWxseSBmdW5jdGlvbmFsLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6Om11bHRpc2FtcGxlUmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCk6CisKIDIwMTEtMDgtMDUgIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IDxp
bnB1dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKaW5kZXggN2U0MTg3MS4uODU5YTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAg
LTc2LDYgKzc2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0
IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKICAgICBRUmVjdEYgYm91bmRp
bmdSZWN0KCkgY29uc3Q7CisgICAgdm9pZCBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpIGNv
bnN0OworICAgIHZvaWQgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4
dCgpIGNvbnN0OwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBIb3N0
V2luZG93KiBtX2hvc3RXaW5kb3c7CkBAIC0xMDksMTEgKzExMSw2IEBAIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7CiAKICAg
ICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0jaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VT
XzIpCi0gICAgZ2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKLSAgICBnbEVuYWJsZShHTF9WRVJU
RVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKLSNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCkBAIC0xNDMsNiArMTQwLDkgQEAg
c3RhdGljIGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spIGNvbnN0CiB7CisgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMpCisg
ICAgICAgIGJsaXRNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQW5kUmVzdG9yZUNvbnRleHQoKTsKKwog
ICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5pc09wZW5HTEJhY2tlZCgpKSB7CiAgICAgICAgIFRleHR1
cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0
dXJlTWFwcGVyKTsKICAgICAgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90
ZXh0dXJlLCAhbV9jb250ZXh0LT5tX2F0dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKQEAgLTIwNSw2
ICsyMDUsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRl
ciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKIAogICAgIFFSZWN0RiByZWN0ID0g
b3B0aW9uID8gb3B0aW9uLT5yZWN0IDogYm91bmRpbmdSZWN0KCk7CiAKKyAgICBtX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKQor
ICAgICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpOworCiAgICAgLy8gVXNlIGRpcmVj
dCB0ZXh0dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2FudmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29u
dGV4dAogICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRleHQuCiAgICAgUUdMV2lkZ2V0
KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdpZGdldCgpOwpAQCAtMjE3LDcgKzIy
MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgUUltYWdlIG9mZnNjcmVlbkltYWdl
KHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKICAg
ICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNj
cmVlbkltYWdlLmJpdHMoKSk7CiAKLSAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250
ZXh0LT5tX2Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwogICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5k
RkJPKTsKQEAgLTI0OSw2ICsyNTIsMjggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBw
YWludGVyLT5kcmF3SW1hZ2UoLyogeCAqLyAwLCAvKiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsK
IH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGl0TXVsdGlzYW1wbGVGcmFt
ZWJ1ZmZlcigpIGNvbnN0Cit7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJV
RkZFUl9FWFQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7CisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fY29udGV4dC0+bV9mYm8pOworICAgIGds
QmxpdEZyYW1lYnVmZmVyKDAsIDAsIG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4
dC0+bV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2Nv
bnRleHQtPm1fY3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y29udGV4dC0+bV9ib3VuZEZCTyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6YmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpIGNvbnN0Cit7
CisgICAgY29uc3QgUUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRR0xDb250ZXh0OjpjdXJy
ZW50Q29udGV4dCgpOworICAgIGNvbnN0IFFHTENvbnRleHQqIHdpZGdldENvbnRleHQgPSBtX2ds
V2lkZ2V0LT5jb250ZXh0KCk7CisgICAgaWYgKGN1cnJlbnRDb250ZXh0ICE9IHdpZGdldENvbnRl
eHQpCisgICAgICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgYmxpdE11bHRpc2Ft
cGxlRnJhbWVidWZmZXIoKTsKKyAgICBpZiAoY3VycmVudENvbnRleHQpIHsKKyAgICAgICAgaWYg
KGN1cnJlbnRDb250ZXh0ICE9IHdpZGdldENvbnRleHQpCisgICAgICAgICAgICBjb25zdF9jYXN0
PFFHTENvbnRleHQqPihjdXJyZW50Q29udGV4dCktPm1ha2VDdXJyZW50KCk7CisgICAgfSBlbHNl
CisgICAgICAgIG1fZ2xXaWRnZXQtPmRvbmVDdXJyZW50KCk7Cit9CisKIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKIHsKICAgICAvLyBUaGlzIGltcGxlbWVu
dGF0aW9uIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRo
ZSBIb3N0V2luZG93LgpAQCAtMjgwLDEwICszMDUsOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aQogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgbV9hdHRycy5zdGVuY2lsID0gZmFs
c2U7CiAjZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIG1fYXR0cnMuZGVw
dGggPSB0cnVlOworICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogI2VuZGlmCi0gICAgbV9hdHRy
cy5hbnRpYWxpYXMgPSBmYWxzZTsKIAogICAgIGlmICghbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
aXNWYWxpZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdp
ZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CkBAIC0zMTMsMTMgKzMzNiwyMSBAQCBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CiAKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZl
cik7Ci0KLSAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0aWFsIGNsZWFyIGNvbG9y
IHRvIGJsYWNrLgotICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICBnbENsZWFyQ29s
b3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKKyAgICAvLyBDcmVhdGUgYSBtdWx0aXNhbXBsZSBGQk8u
CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgbV9i
b3VuZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygx
LCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNp
bCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZt
X211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBCaW5kIGNhbnZhcyBGQk8KKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgICAgIG1fYm91bmRGQk8gPSBtX2ZibzsK
KyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfQog
CiAjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgLy8gQU5HTEUgaW5pdGlhbGl6YXRp
b24uCkBAIC0zMzcsMTcgKzM2OCwyOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250
ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIC8v
IEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgogICAgIEFOR0xFUmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzID0gMTsKICAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNl
cyk7CisKKyAgICBnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOworICAgIGdsRW5hYmxlKEdMX1ZF
UlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUpOwogI2VuZGlmCisKKyAgICBnbENsZWFyQ29sb3IoMC4w
LCAwLjAsIDAuMCwgMC4wKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRl
eHQzRCgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBpZiAobV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgaWYgKCFtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtX3RleHR1cmUpOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CisgICAg
aWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8
IG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1f
bXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgIH0gZWxzZSBpZiAobV9hdHRycy5z
dGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCiAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbV9mYm8pOwotICAgIH0KIH0KIAogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCg==
</data>
<flag name="review"
          id="98783"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="98784"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103253</attachid>
            <date>2011-08-08 08:36:28 -0700</date>
            <delta_ts>2011-08-08 11:42:33 -0700</delta_ts>
            <desc>implement antialiasing</desc>
            <filename>antialias.diff</filename>
            <type>text/plain</type>
            <size>8335</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDI5M2ZkLi5jY2Q1MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDgtMDUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+
CisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgV2ViR0wgYW50aWFsaWFzaW5nIChwYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cyBjb3ZlciB0aGlzLgorCisgICAgICAgIEltcGxlbWVudCBXZWJHTCBh
bnRpYWxpYXNpbmcgZm9yIFF0IGRlc2t0b3AuCisgICAgICAgIEV4aXN0aW5nIGNvZGUgaW4gR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIG1hbmFnZXMgdGhlCisgICAgICAgIG11bHRpc2FtcGxl
IEZCTy4gR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgY3JlYXRlcyBpdCBhbmQgYmxpdHMKKyAgICAg
ICAgaXQgdG8gdGhlIHJlZ3VsYXIgRkJPIHdoZW4gcGFpbnRpbmcuCisgICAgICAgIFJlcXVpcmVz
IGFkb3B0aW9uIG9mIEV4dGVuc2lvbnMzRE9wZW5HTCB0byBiZSBmdWxseSBmdW5jdGlvbmFsLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6Om11bHRpc2FtcGxlUmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCk6CisKIDIwMTEtMDgtMDUgIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IDxp
bnB1dCB0eXBlPWNvbG9yPiBVSSBiZWhhdmlvciBXZWJDb3JlIHBhcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKaW5kZXggN2U0MTg3MS4uMjBhNWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAg
LTc2LDYgKzc2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0
IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKICAgICBRUmVjdEYgYm91bmRp
bmdSZWN0KCkgY29uc3Q7CisgICAgdm9pZCBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpIGNv
bnN0OworICAgIHZvaWQgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4
dCgpIGNvbnN0OwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBIb3N0
V2luZG93KiBtX2hvc3RXaW5kb3c7CkBAIC0xMDksMTEgKzExMSw2IEBAIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7CiAKICAg
ICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0jaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VT
XzIpCi0gICAgZ2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKLSAgICBnbEVuYWJsZShHTF9WRVJU
RVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKLSNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCkBAIC0xNDMsNiArMTQwLDggQEAg
c3RhdGljIGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spIGNvbnN0CiB7CisgICAgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3Jl
Q29udGV4dCgpOworCiAgICAgaWYgKHRleHR1cmVNYXBwZXItPmlzT3BlbkdMQmFja2VkKCkpIHsK
ICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVN
YXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwogICAgICAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUo
bV9jb250ZXh0LT5tX3RleHR1cmUsICFtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEsIEZsb2F0U2l6
ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCB0cnVlIC8qIGZsaXAg
Ki8pOwpAQCAtMjA1LDYgKzIwNCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAKICAgICBR
UmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9wdGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVjdCgpOwogCisg
ICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1
ZmZlcigpOworCiAgICAgLy8gVXNlIGRpcmVjdCB0ZXh0dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2Fu
dmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29udGV4dAogICAgIC8vIHdpdGggYnJvd3NlcnMgT3Bl
bkdMIGNvbnRleHQuCiAgICAgUUdMV2lkZ2V0KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3Bv
cnRHTFdpZGdldCgpOwpAQCAtMjE3LDcgKzIxOSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
CiAgICAgUUltYWdlIG9mZnNjcmVlbkltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwg
UUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKLSAgICBtX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxz
KC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1h
Z2VQaXhlbHMpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKQEAgLTI0OSw2ICsyNTAsMzMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29u
c3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoLyogeCAqLyAwLCAv
KiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKQorICAgICAgICByZXR1cm47CisgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fY29udGV4dC0+bV9tdWx0aXNh
bXBsZUZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQs
IG1fY29udGV4dC0+bV9mYm8pOworICAgIGdsQmxpdEZyYW1lYnVmZmVyKDAsIDAsIG1fY29udGV4
dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2Nv
bnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCwgR0xfQ09M
T1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJB
bmRSZXN0b3JlQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NvbnRleHQtPm1fYXR0cnMu
YW50aWFsaWFzKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBRR0xDb250ZXh0KiBjdXJy
ZW50Q29udGV4dCA9IFFHTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCk7CisgICAgY29uc3QgUUdM
Q29udGV4dCogd2lkZ2V0Q29udGV4dCA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKTsKKyAgICBpZiAo
Y3VycmVudENvbnRleHQgIT0gd2lkZ2V0Q29udGV4dCkKKyAgICAgICAgbV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKyAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigpOworICAgIGlmIChj
dXJyZW50Q29udGV4dCkgeworICAgICAgICBpZiAoY3VycmVudENvbnRleHQgIT0gd2lkZ2V0Q29u
dGV4dCkKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UUdMQ29udGV4dCo+KGN1cnJlbnRDb250ZXh0
KS0+bWFrZUN1cnJlbnQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9nbFdpZGdldC0+ZG9uZUN1
cnJlbnQoKTsKK30KKwogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0
eWxlKQogewogICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgc3Vw
cG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkBAIC0yODAsMTAgKzMw
OCw4IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNf
MikKICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKICNlbHNlCi0gICAgaWYgKG1fYXR0cnMu
c3RlbmNpbCkKLSAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7CisgICAgdmFsaWRhdGVBdHRy
aWJ1dGVzKCk7CiAjZW5kaWYKLSAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogCiAgICAg
aWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4i
KTsKQEAgLTMxMywxMyArMzM5LDIxIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRl
eHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsK
ICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAot
ICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLQotICAgIC8vIEJpbmQgY2FudmFzIEZC
TyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCi0gICAgbV9ib3VuZEZCTyA9
IG1fZmJvOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9mYm8pOwotICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOworICAg
IC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KKyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMp
IHsKKyAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOworICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
bXVsdGlzYW1wbGVGQk8pOworICAgICAgICBtX2JvdW5kRkJPID0gbV9tdWx0aXNhbXBsZUZCTzsK
KyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIp
OworICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCisgICAgICAg
ICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZm
ZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEJpbmQgY2FudmFzIEZCTy4KKyAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7
CisgICAgICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNp
bCB8fCBtX2F0dHJzLmRlcHRoKQorICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfQogCiAjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VT
XzIpCiAgICAgLy8gQU5HTEUgaW5pdGlhbGl6YXRpb24uCkBAIC0zMzcsMTcgKzM3MSwyOCBAQCBH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdM
IEVTLgogICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsKICAgICBtX2NvbXBp
bGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CisKKyAgICBnbEVuYWJsZShHTF9QT0lO
VF9TUFJJVEUpOworICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUpOwog
I2VuZGlmCisKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIAogR3Jh
cGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBpZiAobV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7
CisgICAgaWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOworICAgIGdsRGVsZXRl
RnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Cisg
ICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVy
KTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOwor
ICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZm
ZXIpOworICAgIH0gZWxzZSBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCiAg
ICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwot
ICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8pOwotICAgIH0KIH0KIAogUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>