<?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>34684</bug_id>
          
          <creation_ts>2010-02-06 13:58:54 -0800</creation_ts>
          <short_desc>[Haiku] Fix rect conversion and image rendering on Haiku</short_desc>
          <delta_ts>2010-02-10 18:47:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Stephan Aßmus">superstippi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>188467</commentid>
    <comment_count>0</comment_count>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-06 13:58:54 -0800</bug_when>
    <thetext>The changes to the rect conversions are indeed correct. In Haiku (to stay
compatibly with BeOS), a BRect specifies the left/top and bottom/right pixel
*indices*, even though the values are floating point. So a rectangle covering
just one pixel would be specified as BRect(0, 0, 0, 0). In WebCore and other
frame works, such rectangles would be expressed as 0, 0, 1, 1. In WebCore, the
width and height of rectangles refer to the distance between pixels, while on
Haiku, a one pixel rect has indeed a width and height of 0, as confusing as
that may be.

The part of the patch that affects
WebCore/platform/graphics/haiku/ImageHaiku.cpp also implements the drawing
methods more correctly. Image observers are notified, and pattern drawing takes
the &quot;phase&quot; into account which makes scrolled backgrounds render correctly.
Transformations are still not supported, since the Haiku drawing backend itself
does not yet support them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188468</commentid>
    <comment_count>1</comment_count>
      <attachid>48296</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-06 14:00:14 -0800</bug_when>
    <thetext>Created attachment 48296
Fixes to the rect conversions and image rendering on Haiku

Patch against r54275.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188469</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-06 14:04:19 -0800</bug_when>
    <thetext>Attachment 48296 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/haiku/ImageHaiku.cpp:180:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188472</commentid>
    <comment_count>3</comment_count>
      <attachid>48297</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-06 14:16:09 -0800</bug_when>
    <thetext>Created attachment 48297
Fixes to the rect conversions and image rendering on Haiku

Revised patch to please the style police. (I found it nicer to read before...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189456</commentid>
    <comment_count>4</comment_count>
      <attachid>48297</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-10 13:27:51 -0800</bug_when>
    <thetext>Comment on attachment 48297
Fixes to the rect conversions and image rendering on Haiku

 46 #include &lt;stdio.h&gt;
seems wrong.

This should be an OwnPtr:
     BBitmap* bmp = new BBitmap(BRect(0, 0, width() - 1, height() - 1), 0,
 38         B_RGBA32, bytesPerRow);
you can call .release() during return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189476</commentid>
    <comment_count>5</comment_count>
      <attachid>48297</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-10 14:47:40 -0800</bug_when>
    <thetext>Comment on attachment 48297
Fixes to the rect conversions and image rendering on Haiku

Eric&apos;s comment plus these:

&gt; Index: WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp
&gt;  NativeImagePtr RGBA32Buffer::asNewNativeImage() const
&gt;  {
&gt; +    int bytesPerRow = width() * sizeof(PixelData);
&gt; +    BBitmap* bmp = new BBitmap(BRect(0, 0, width() - 1, height() - 1), 0,
&gt; +        B_RGBA32, bytesPerRow);

You don&apos;t need to wrap this line, but if you&apos;re going to do this, I think folks typically align with the enclosing paren.

&gt; +
&gt; +    const uint8* src = reinterpret_cast&lt;const uint8*&gt;(m_bytes.data());
&gt; +    uint8* dst = reinterpret_cast&lt;uint8*&gt;(bmp-&gt;Bits());

In general WebKit, likes to avoid abbreviations. s/src/source/ s/dst/destination/

&gt; +    int h = height();
&gt; +    for (int y = 0; y &lt; h; y++) {
&gt; +        memcpy(dst, src, bytesPerRow);
&gt; +        dst += bytesPerRow;
&gt; +        src += bytesPerRow;

Why doesn&apos;t this just do memcpy(dst, src, bytesPerRow * h); ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189491</commentid>
    <comment_count>6</comment_count>
      <attachid>48521</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-10 15:11:00 -0800</bug_when>
    <thetext>Created attachment 48521
Fixes to the rect conversions and image rendering on Haiku

New patch fixes the issues pointed out, but my code evolved to fix drawing pre-multiplied bitmaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189498</commentid>
    <comment_count>7</comment_count>
      <attachid>48524</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-10 15:23:18 -0800</bug_when>
    <thetext>Created attachment 48524
Fixes to the rect conversions and image rendering on Haiku

Patch properly created with &quot;svn-create-patch&quot;, which adds the &quot;namespaces&quot;. Sorry about that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189505</commentid>
    <comment_count>8</comment_count>
      <attachid>48526</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-10 15:42:40 -0800</bug_when>
    <thetext>Created attachment 48526
Fixes to the rect conversions and image rendering on Haiku

Fixed patch, the old one didn&apos;t apply anymore because of the changes to AffineTransform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189507</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-10 15:46:36 -0800</bug_when>
    <thetext>Attachment 48526 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:51:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:52:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:53:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:54:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:55:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:56:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:57:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:58:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:59:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:60:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:61:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:62:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:63:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 13


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189508</commentid>
    <comment_count>10</comment_count>
      <attachid>48527</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-10 15:49:36 -0800</bug_when>
    <thetext>Created attachment 48527
Fixes to the rect conversions and image rendering on Haiku

Renamed bpr -&gt; bytesPerRow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189509</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-10 15:52:13 -0800</bug_when>
    <thetext>Attachment 48527 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:51:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:52:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:53:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:54:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:55:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:56:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:57:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:58:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:59:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:60:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:61:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:62:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/platform/image-decoders/haiku/ImageDecoderHaiku.cpp:63:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 13


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189510</commentid>
    <comment_count>12</comment_count>
      <attachid>48528</attachid>
    <who name="Stephan Aßmus">superstippi</who>
    <bug_when>2010-02-10 15:52:32 -0800</bug_when>
    <thetext>Created attachment 48528
Fixes to the rect conversions and image rendering on Haiku

Of course I forgot to replace tabs with spaces for the new code I added meanwhile. Really sorry for the noise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189570</commentid>
    <comment_count>13</comment_count>
      <attachid>48528</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 18:47:05 -0800</bug_when>
    <thetext>Comment on attachment 48528
Fixes to the rect conversions and image rendering on Haiku

Clearing flags on attachment: 48528

Committed r54637: &lt;http://trac.webkit.org/changeset/54637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189571</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 18:47:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48296</attachid>
            <date>2010-02-06 14:00:14 -0800</date>
            <delta_ts>2010-02-06 14:16:09 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects2.diff</filename>
            <type>text/plain</type>
            <size>9832</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDMyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1
LmNwcDogRml4ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1
L0ltYWdlSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOiBG
aXhlZCBwbGFjZW1lbnQsIG5vdGlmeSBvYnNlcnZlcnMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpkcmF3UGF0dGVybik6IEltcGxlbWVudGVkIHVzaW5nICJwaGFzZSIgdG8gZml4IHNjcm9sbGlu
Zywgbm90aWZ5IG9ic2VydmVycworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0lu
dFJlY3RIYWlrdS5jcHA6IEZpeGVkIGNvbnZlcnNpb24KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5jcHA6IEZpeGVkIGNvbnZlcnNpb24K
KwogMjAxMC0wMi0wMyAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgRGVidWdfQWxsIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwCShyZXZpc2lvbiA1
NDI3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzIDxzdXBlcnN0aXBwaUBnbXguZGU+CiAgKgogICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zNSwxMyArMzYsMTMgQEAKIAogRmxvYXRSZWN0OjpG
bG9hdFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3QuTGVmdFRv
cCgpKQotICAgICwgbV9zaXplKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSkKKyAgICAsIG1f
c2l6ZShyZWN0LldpZHRoKCkgKyAxLCByZWN0LkhlaWdodCgpICsgMSkKIHsKIH0KIAogRmxvYXRS
ZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQb2ludCh4
KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YWlrdS9JbWFnZUhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCShyZXZpc2lvbiA1NDI3NSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQs
NiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5n
b29kQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZWEgQW56YW5pIDxhbmRy
ZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFuIEHDn211
cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtMzUsMTMgKzM2LDE1IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFn
ZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVk
ZSA8QXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxCaXRtYXAuaD4KICNpbmNsdWRlIDxWaWV3Lmg+
CisjaW5jbHVkZSA8c3RkaW8uaD4KIAotCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNl
cyBmcm9tIFdlYktpdAogVmVjdG9yPGNoYXI+IGxvYWRSZXNvdXJjZUludG9BcnJheShjb25zdCBj
aGFyKik7CiAKQEAgLTg1LDYgKzg4LDEyIEBACiAvLyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBTcGluIHRoZSBhbmltYXRpb24gdG8gdGhlIGNvcnJl
Y3QgZnJhbWUgYmVmb3JlIHdlIHRyeSB0byBkcmF3IGl0LCBzbyB3ZQorICAgIC8vIGRvbid0IGRy
YXcgYW4gb2xkIGZyYW1lIGFuZCB0aGVuIGltbWVkaWF0ZWx5IG5lZWQgdG8gZHJhdyBhIG5ld2Vy
IG9uZSwKKyAgICAvLyBjYXVzaW5nIGZsaWNrZXIgYW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0
QW5pbWF0aW9uKCk7CiAKICAgICBCQml0bWFwKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CkBAIC0xMDUsNDIgKzExNCw3NSBAQAogICAgIC8vIFRlc3QgdXNpbmcgZXhhbXBs
ZSBzaXRlIGF0CiAgICAgLy8gaHR0cDovL3d3dy5tZXllcndlYi5jb20vZXJpYy9jc3MvZWRnZS9j
b21wbGV4c3BpcmFsL2RlbW8uaHRtbAogICAgIGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5TZXRE
cmF3aW5nTW9kZShCX09QX0FMUEhBKTsKLSAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJh
d0JpdG1hcChpbWFnZSwgc3JjUmVjdCAmIGltYWdlLT5Cb3VuZHMoKSwgZHN0UmVjdCk7CisgICAg
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRtYXBBc3luYyhpbWFnZSwgc3JjUmVjdCwg
ZHN0UmVjdCk7CiAgICAgY3R4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIo
KSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCi12b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICAvLyBGSVhNRTog
ZmluaXNoIHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAoc3JjUG9pbnQpCi0g
ICAgc3RhcnRBbmltYXRpb24oKTsKLQogICAgIEJCaXRtYXAqIGltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+SXNWYWxpZCgpKSAv
LyBJZiB0aGUgaW1hZ2UgaGFzbid0IGZ1bGx5IGxvYWRlZC4KICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgY3VycmVudFcgPSAwOwotICAgIGZsb2F0IGN1cnJlbnRIID0gMDsKKyAgICAvLyBG
aWd1cmUgb3V0IGlmIHRoZSBpbWFnZSBoYXMgYW55IGFscGhhIHRyYW5zcGFyZW5jeSwgd2UgY2Fu
IHVzZSBmYXN0ZXIgZHJhd2luZyBpZiBub3QKKyAgICBib29sIGhhc0FscGhhID0gdHJ1ZTsKIAor
ICAgIHVpbnQ4KiBiaXRzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGltYWdlLT5CaXRzKCkp
OworICAgIHVpbnQzMiB3aWR0aCA9IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VyV2lkdGgoKSArIDE7
CisgICAgdWludDMyIGhlaWdodCA9IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VySGVpZ2h0KCkgKyAx
OworCisgICAgdWludDMyIGJwciA9IGltYWdlLT5CeXRlc1BlclJvdygpOworICAgIGZvciAodWlu
dDMyIHkgPSAwOyB5IDwgaGVpZ2h0ICYmICFoYXNBbHBoYTsgeSsrKSB7CisgICAgICAgIHVpbnQ4
KiBwID0gYml0czsKKyAgICAgICAgZm9yICh1aW50MzIgeCA9IDA7IHggPCB3aWR0aCAmJiAhaGFz
QWxwaGE7IHgrKykgeworICAgICAgICAgICAgaGFzQWxwaGEgPSBwWzNdIDwgMjU1OworICAgICAg
ICAgICAgcCArPSA0OworICAgICAgICB9CisgICAgICAgIGJpdHMgKz0gYnByOworICAgIH0KKwog
ICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0
RHJhd2luZ01vZGUoQl9PUF9BTFBIQSk7CisgICAgaWYgKGhhc0FscGhhKQorICAgICAgICBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2luZ01vZGUoQl9PUF9BTFBIQSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2luZ01vZGUo
Ql9PUF9DT1BZKTsKICAgICBjb250ZXh0LT5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkp
OwotCi0gICAgd2hpbGUgKGN1cnJlbnRXIDwgZHN0UmVjdC53aWR0aCgpKSB7Ci0gICAgICAgIHdo
aWxlIChjdXJyZW50SCA8IGRzdFJlY3QuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBCUG9pbnQoZHN0UmVjdC54KCkg
KyBjdXJyZW50VywgZHN0UmVjdC55KCkgKyBjdXJyZW50SCkpOwotICAgICAgICAgICAgY3VycmVu
dEggKz0gdGlsZVJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgY3VycmVudFcgPSBwaGFzZS54KCk7
CisgICAgQlJlY3QgYlRpbGVSZWN0KHRpbGVSZWN0KTsKKyAgICB3aGlsZSAoY3VycmVudFcgPCBk
c3RSZWN0LngoKSArIGRzdFJlY3Qud2lkdGgoKSkgeworICAgICAgICBmbG9hdCBjdXJyZW50SCA9
IHBoYXNlLnkoKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRIIDwgZHN0UmVjdC55KCkgKyBkc3RS
ZWN0LmhlaWdodCgpKSB7CisgICAgICAgICAgICBCUmVjdCBiRHN0UmVjdChjdXJyZW50VywgY3Vy
cmVudEgsIGN1cnJlbnRXICsgd2lkdGggLSAxLCBjdXJyZW50SCArIGhlaWdodCAtIDEpOworICAg
ICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRtYXBBc3luYyhpbWFn
ZSwgYlRpbGVSZWN0LCBiRHN0UmVjdCk7CisgICAgICAgICAgICBjdXJyZW50SCArPSBoZWlnaHQ7
CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudFcgKz0gdGlsZVJlY3Qud2lkdGgoKTsKLSAgICAg
ICAgY3VycmVudEggPSAwOworICAgICAgICBjdXJyZW50VyArPSB3aWR0aDsKICAgICB9CiAgICAg
Y29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQogewotICAgIC8vIEZJWE1FOiBuZWVkIHRvIGNoZWNrIHRoZSBS
R0JBMzIgYnVmZmVyIHRvIHNlZSBpZiBpdCBpcyAxeDEuCiAgICAgbV9pc1NvbGlkQ29sb3IgPSBm
YWxzZTsKICAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKKworICAgIGlmIChmcmFt
ZUNvdW50KCkgPiAxKQorICAgICAgICByZXR1cm47CisKKyAgICBCQml0bWFwKiBpbWFnZSA9IGdl
dEJCaXRtYXAoKTsKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VyV2lk
dGgoKSAhPSAwIHx8IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VySGVpZ2h0KCkgIT0gMCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworICAgIHVpbnQ4KiBiaXRz
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGltYWdlLT5CaXRzKCkpOworICAgIG1fc29saWRD
b2xvciA9IENvbG9yKGJpdHNbMl0sIGJpdHNbMV0sIGJpdHNbMF0sIGJpdHNbM10pOwogfQogCiBC
Qml0bWFwKiBCaXRtYXBJbWFnZTo6Z2V0QkJpdG1hcCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ludFJlY3RIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCShyZXZpc2lvbiA1
NDI3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBACiAKIEludFJlY3Q6OkludFJlY3Qo
Y29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3QuTGVmdFRvcCgpKQotICAg
ICwgbV9zaXplKHJlY3QuSW50ZWdlcldpZHRoKCksIHJlY3QuSW50ZWdlckhlaWdodCgpKQorICAg
ICwgbV9zaXplKHJlY3QuSW50ZWdlcldpZHRoKCkgKyAxLCByZWN0LkludGVnZXJIZWlnaHQoKSAr
IDEpCiB7CiB9CiAKIEludFJlY3Q6Om9wZXJhdG9yIEJSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gQlJlY3QoQlBvaW50KHgoKSwgeSgpKSwgQlNpemUod2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAg
ICByZXR1cm4gQlJlY3QoQlBvaW50KHgoKSwgeSgpKSwgQlNpemUod2lkdGgoKSAtIDEsIGhlaWdo
dCgpIC0gMSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0ltYWdlRGVjb2RlckhhaWt1LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0ltYWdlRGVjb2Rl
ckhhaWt1LmNwcAkocmV2aXNpb24gNTQyNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2hhaWt1L0ltYWdlRGVjb2RlckhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU3RlcGhhbiBBw59t
dXMsIDxzdXBlcnN0aXBwaUBnbXguZGU+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDggKzMzLDE5IEBACiAKIE5hdGl2ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdO
YXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgQkJpdG1hcCogYm1wID0gbmV3IEJCaXRtYXAoQlJl
Y3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpLCBCX1JHQjMyKTsKLSAgICBibXAtPlNldEJpdHMo
bV9ieXRlcy5kYXRhKCksIG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpLCAwLCBCX1JH
QjMyKTsKKyAgICBpbnQgYnl0ZXNQZXJSb3cgPSB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSk7
CisgICAgQkJpdG1hcCogYm1wID0gbmV3IEJCaXRtYXAoQlJlY3QoMCwgMCwgd2lkdGgoKSAtIDEs
IGhlaWdodCgpIC0gMSksIDAsCisgICAgICAgIEJfUkdCQTMyLCBieXRlc1BlclJvdyk7CisKKyAg
ICBjb25zdCB1aW50OCogc3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OCo+KG1fYnl0
ZXMuZGF0YSgpKTsKKyAgICB1aW50OCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGJt
cC0+Qml0cygpKTsKKyAgICBpbnQgaCA9IGhlaWdodCgpOworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgaDsgeSsrKSB7CisgICAgICAgIG1lbWNweShkc3QsIHNyYywgYnl0ZXNQZXJSb3cpOworICAg
ICAgICBkc3QgKz0gYnl0ZXNQZXJSb3c7CisgICAgICAgIHNyYyArPSBieXRlc1BlclJvdzsKKyAg
ICB9CisKICAgICByZXR1cm4gYm1wOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48297</attachid>
            <date>2010-02-06 14:16:09 -0800</date>
            <delta_ts>2010-02-10 15:11:00 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects2.diff</filename>
            <type>text/plain</type>
            <size>9878</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDMyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1
LmNwcDogRml4ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1
L0ltYWdlSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOiBG
aXhlZCBwbGFjZW1lbnQsIG5vdGlmeSBvYnNlcnZlcnMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpkcmF3UGF0dGVybik6IEltcGxlbWVudGVkIHVzaW5nICJwaGFzZSIgdG8gZml4IHNjcm9sbGlu
Zywgbm90aWZ5IG9ic2VydmVycworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0lu
dFJlY3RIYWlrdS5jcHA6IEZpeGVkIGNvbnZlcnNpb24KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5jcHA6IEZpeGVkIGNvbnZlcnNpb24K
KwogMjAxMC0wMi0wMyAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgRGVidWdfQWxsIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwCShyZXZpc2lvbiA1
NDI3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzIDxzdXBlcnN0aXBwaUBnbXguZGU+CiAgKgogICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zNSwxMyArMzYsMTMgQEAKIAogRmxvYXRSZWN0OjpG
bG9hdFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3QuTGVmdFRv
cCgpKQotICAgICwgbV9zaXplKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSkKKyAgICAsIG1f
c2l6ZShyZWN0LldpZHRoKCkgKyAxLCByZWN0LkhlaWdodCgpICsgMSkKIHsKIH0KIAogRmxvYXRS
ZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQb2ludCh4
KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YWlrdS9JbWFnZUhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCShyZXZpc2lvbiA1NDI3NSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQs
NiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5n
b29kQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZWEgQW56YW5pIDxhbmRy
ZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFuIEHDn211
cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtMzUsMTMgKzM2LDE1IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFn
ZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVk
ZSA8QXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxCaXRtYXAuaD4KICNpbmNsdWRlIDxWaWV3Lmg+
CisjaW5jbHVkZSA8c3RkaW8uaD4KIAotCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNl
cyBmcm9tIFdlYktpdAogVmVjdG9yPGNoYXI+IGxvYWRSZXNvdXJjZUludG9BcnJheShjb25zdCBj
aGFyKik7CiAKQEAgLTg1LDYgKzg4LDEyIEBACiAvLyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBTcGluIHRoZSBhbmltYXRpb24gdG8gdGhlIGNvcnJl
Y3QgZnJhbWUgYmVmb3JlIHdlIHRyeSB0byBkcmF3IGl0LCBzbyB3ZQorICAgIC8vIGRvbid0IGRy
YXcgYW4gb2xkIGZyYW1lIGFuZCB0aGVuIGltbWVkaWF0ZWx5IG5lZWQgdG8gZHJhdyBhIG5ld2Vy
IG9uZSwKKyAgICAvLyBjYXVzaW5nIGZsaWNrZXIgYW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0
QW5pbWF0aW9uKCk7CiAKICAgICBCQml0bWFwKiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CkBAIC0xMDUsNDIgKzExNCw3NyBAQAogICAgIC8vIFRlc3QgdXNpbmcgZXhhbXBs
ZSBzaXRlIGF0CiAgICAgLy8gaHR0cDovL3d3dy5tZXllcndlYi5jb20vZXJpYy9jc3MvZWRnZS9j
b21wbGV4c3BpcmFsL2RlbW8uaHRtbAogICAgIGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5TZXRE
cmF3aW5nTW9kZShCX09QX0FMUEhBKTsKLSAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJh
d0JpdG1hcChpbWFnZSwgc3JjUmVjdCAmIGltYWdlLT5Cb3VuZHMoKSwgZHN0UmVjdCk7CisgICAg
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRtYXBBc3luYyhpbWFnZSwgc3JjUmVjdCwg
ZHN0UmVjdCk7CiAgICAgY3R4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIo
KSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCi12b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICAvLyBGSVhNRTog
ZmluaXNoIHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAoc3JjUG9pbnQpCi0g
ICAgc3RhcnRBbmltYXRpb24oKTsKLQogICAgIEJCaXRtYXAqIGltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+SXNWYWxpZCgpKSAv
LyBJZiB0aGUgaW1hZ2UgaGFzbid0IGZ1bGx5IGxvYWRlZC4KICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgY3VycmVudFcgPSAwOwotICAgIGZsb2F0IGN1cnJlbnRIID0gMDsKKyAgICAvLyBG
aWd1cmUgb3V0IGlmIHRoZSBpbWFnZSBoYXMgYW55IGFscGhhIHRyYW5zcGFyZW5jeSwgd2UgY2Fu
IHVzZSBmYXN0ZXIgZHJhd2luZyBpZiBub3QKKyAgICBib29sIGhhc0FscGhhID0gdHJ1ZTsKIAor
ICAgIHVpbnQ4KiBiaXRzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGltYWdlLT5CaXRzKCkp
OworICAgIHVpbnQzMiB3aWR0aCA9IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VyV2lkdGgoKSArIDE7
CisgICAgdWludDMyIGhlaWdodCA9IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VySGVpZ2h0KCkgKyAx
OworCisgICAgdWludDMyIGJwciA9IGltYWdlLT5CeXRlc1BlclJvdygpOworICAgIGZvciAodWlu
dDMyIHkgPSAwOyB5IDwgaGVpZ2h0ICYmICFoYXNBbHBoYTsgeSsrKSB7CisgICAgICAgIHVpbnQ4
KiBwID0gYml0czsKKyAgICAgICAgZm9yICh1aW50MzIgeCA9IDA7IHggPCB3aWR0aCAmJiAhaGFz
QWxwaGE7IHgrKykgeworICAgICAgICAgICAgaGFzQWxwaGEgPSBwWzNdIDwgMjU1OworICAgICAg
ICAgICAgcCArPSA0OworICAgICAgICB9CisgICAgICAgIGJpdHMgKz0gYnByOworICAgIH0KKwog
ICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0
RHJhd2luZ01vZGUoQl9PUF9BTFBIQSk7CisgICAgaWYgKGhhc0FscGhhKQorICAgICAgICBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2luZ01vZGUoQl9PUF9BTFBIQSk7CisgICAg
ZWxzZQorICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2luZ01vZGUo
Ql9PUF9DT1BZKTsKICAgICBjb250ZXh0LT5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkp
OwotCi0gICAgd2hpbGUgKGN1cnJlbnRXIDwgZHN0UmVjdC53aWR0aCgpKSB7Ci0gICAgICAgIHdo
aWxlIChjdXJyZW50SCA8IGRzdFJlY3QuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBCUG9pbnQoZHN0UmVjdC54KCkg
KyBjdXJyZW50VywgZHN0UmVjdC55KCkgKyBjdXJyZW50SCkpOwotICAgICAgICAgICAgY3VycmVu
dEggKz0gdGlsZVJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgY3VycmVudFcgPSBwaGFzZS54KCk7
CisgICAgQlJlY3QgYlRpbGVSZWN0KHRpbGVSZWN0KTsKKyAgICB3aGlsZSAoY3VycmVudFcgPCBk
c3RSZWN0LngoKSArIGRzdFJlY3Qud2lkdGgoKSkgeworICAgICAgICBmbG9hdCBjdXJyZW50SCA9
IHBoYXNlLnkoKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRIIDwgZHN0UmVjdC55KCkgKyBkc3RS
ZWN0LmhlaWdodCgpKSB7CisgICAgICAgICAgICBCUmVjdCBiRHN0UmVjdChjdXJyZW50VywgY3Vy
cmVudEgsIGN1cnJlbnRXICsgd2lkdGggLSAxLCBjdXJyZW50SCArIGhlaWdodCAtIDEpOworICAg
ICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRtYXBBc3luYyhpbWFn
ZSwgYlRpbGVSZWN0LCBiRHN0UmVjdCk7CisgICAgICAgICAgICBjdXJyZW50SCArPSBoZWlnaHQ7
CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudFcgKz0gdGlsZVJlY3Qud2lkdGgoKTsKLSAgICAg
ICAgY3VycmVudEggPSAwOworICAgICAgICBjdXJyZW50VyArPSB3aWR0aDsKICAgICB9CiAgICAg
Y29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQogewotICAgIC8vIEZJWE1FOiBuZWVkIHRvIGNoZWNrIHRoZSBS
R0JBMzIgYnVmZmVyIHRvIHNlZSBpZiBpdCBpcyAxeDEuCiAgICAgbV9pc1NvbGlkQ29sb3IgPSBm
YWxzZTsKICAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKKworICAgIGlmIChmcmFt
ZUNvdW50KCkgPiAxKQorICAgICAgICByZXR1cm47CisKKyAgICBCQml0bWFwKiBpbWFnZSA9IGdl
dEJCaXRtYXAoKTsKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Qm91bmRzKCkuSXNWYWxpZCgp
CisgICAgICAgIHx8IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VyV2lkdGgoKSA+IDAgfHwgaW1hZ2Ut
PkJvdW5kcygpLkludGVnZXJIZWlnaHQoKSA+IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKKyAgICB1aW50OCogYml0cyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDgqPihpbWFnZS0+Qml0cygpKTsKKyAgICBtX3NvbGlkQ29sb3IgPSBDb2xv
cihiaXRzWzJdLCBiaXRzWzFdLCBiaXRzWzBdLCBiaXRzWzNdKTsKIH0KIAogQkJpdG1hcCogQml0
bWFwSW1hZ2U6OmdldEJCaXRtYXAoKSBjb25zdApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcAkocmV2aXNpb24gNTQyNzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ludFJlY3RIYWlrdS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDEzICszNSwxMyBAQAogCiBJbnRSZWN0OjpJbnRSZWN0KGNvbnN0IEJSZWN0
JiByZWN0KQogICAgIDogbV9sb2NhdGlvbihyZWN0LkxlZnRUb3AoKSkKLSAgICAsIG1fc2l6ZShy
ZWN0LkludGVnZXJXaWR0aCgpLCByZWN0LkludGVnZXJIZWlnaHQoKSkKKyAgICAsIG1fc2l6ZShy
ZWN0LkludGVnZXJXaWR0aCgpICsgMSwgcmVjdC5JbnRlZ2VySGVpZ2h0KCkgKyAxKQogewogfQog
CiBJbnRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJS
ZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5jcHAJ
KHJldmlzaW9uIDU0Mjc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlr
dS9JbWFnZURlY29kZXJIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFN0ZXBoYW4gQcOfbXVzLCA8c3VwZXJz
dGlwcGlAZ214LmRlPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw4ICsz
MywxOSBAQAogCiBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdAogewotICAgIEJCaXRtYXAqIGJtcCA9IG5ldyBCQml0bWFwKEJSZWN0KDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpKSwgQl9SR0IzMik7Ci0gICAgYm1wLT5TZXRCaXRzKG1fYnl0ZXMuZGF0
YSgpLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSwgMCwgQl9SR0IzMik7CisgICAg
aW50IGJ5dGVzUGVyUm93ID0gd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpOworICAgIEJCaXRt
YXAqIGJtcCA9IG5ldyBCQml0bWFwKEJSZWN0KDAsIDAsIHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAt
IDEpLCAwLAorICAgICAgICBCX1JHQkEzMiwgYnl0ZXNQZXJSb3cpOworCisgICAgY29uc3QgdWlu
dDgqIHNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDgqPihtX2J5dGVzLmRhdGEoKSk7
CisgICAgdWludDgqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihibXAtPkJpdHMoKSk7
CisgICAgaW50IGggPSBoZWlnaHQoKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykg
eworICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIGJ5dGVzUGVyUm93KTsKKyAgICAgICAgZHN0ICs9
IGJ5dGVzUGVyUm93OworICAgICAgICBzcmMgKz0gYnl0ZXNQZXJSb3c7CisgICAgfQorCiAgICAg
cmV0dXJuIGJtcDsKIH0KIAo=
</data>
<flag name="review"
          id="30957"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48521</attachid>
            <date>2010-02-10 15:11:00 -0800</date>
            <delta_ts>2010-02-10 15:23:18 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects3.diff</filename>
            <type>text/plain</type>
            <size>11101</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICBVc2UgT3duUHRyIHdoZW4gY3JlYXRpbmcgdGhlIEJCaXRtYXAgdG8g
YXZvaWQgZnV0dXJlIGxlYWtzIHdpdGggZWFybHkgcmV0dXJucy4KKworICAgICAgICBDb252ZXJ0
IHRoZSBiaXRtYXAgZGF0YSB0byBub24gcHJlLW11bHRpcGxpZWQgdW50aWwgSGFpa3Ugc3VwcG9y
dHMgZHJhd2luZworICAgICAgICBwcmUtbXVsdGlwbGllZCBiaXRtYXBzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwOiBGaXhlZCBjb252ZXJz
aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IEZpeGVkIHBsYWNlbWVudCwgbm90
aWZ5IG9ic2VydmVycworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKTogSW1w
bGVtZW50ZWQgdXNpbmcgInBoYXNlIiB0byBmaXggc2Nyb2xsaW5nLCBub3RpZnkgb2JzZXJ2ZXJz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcDogRml4
ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0lt
YWdlRGVjb2RlckhhaWt1LmNwcDogRml4ZWQgY29udmVyc2lvbgorCiAyMDEwLTAyLTA2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3
LCByb2xsaW5nIG91dCByNTQzNjQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2
ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVw
aGFuIEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtMzUsMTMgKzM2LDEzIEBACiAKIEZsb2F0UmVjdDo6RmxvYXRSZWN0KGNvbnN0
IEJSZWN0JiByZWN0KQogICAgIDogbV9sb2NhdGlvbihyZWN0LkxlZnRUb3AoKSkKLSAgICAsIG1f
c2l6ZShyZWN0LldpZHRoKCksIHJlY3QuSGVpZ2h0KCkpCisgICAgLCBtX3NpemUocmVjdC5XaWR0
aCgpICsgMSwgcmVjdC5IZWlnaHQoKSArIDEpCiB7CiB9CiAKIEZsb2F0UmVjdDo6b3BlcmF0b3Ig
QlJlY3QoKSBjb25zdAogewotICAgIHJldHVybiBCUmVjdChCUG9pbnQoeCgpLCB5KCkpLCBCU2l6
ZSh3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgIHJldHVybiBCUmVjdChCUG9pbnQoeCgpLCB5KCkp
LCBCU2l6ZSh3aWR0aCgpIC0gMSwgaGVpZ2h0KCkgLSAxKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlr
dS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFn
ZUhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhaWt1L0ltYWdlSGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA2IFNpbW9uIEhhdXNtYW5uIDxoYXVzbWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA3IFJ5YW4gTGVhdmVuZ29vZCA8bGVhdmVuZ29vZEBnbWFpbC5jb20+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQW5kcmVhIEFuemFuaSA8YW5kcmVhLmFuemFuaUBnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU3RlcGhhbiBBw59tdXMgPHN1cGVyc3RpcHBp
QGdteC5kZT4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTM1LDEzICszNiwx
NCBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPEFwcGxpY2F0aW9u
Lmg+CiAjaW5jbHVkZSA8Qml0bWFwLmg+CiAjaW5jbHVkZSA8Vmlldy5oPgogCi0KIC8vIFRoaXMg
ZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0CiBWZWN0b3I8Y2hhcj4gbG9hZFJl
c291cmNlSW50b0FycmF5KGNvbnN0IGNoYXIqKTsKIApAQCAtODUsNiArODcsMTIgQEAKIC8vIERy
YXdpbmcgUm91dGluZXMKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKKyAgICBpZiAoIW1f
c291cmNlLmluaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNwaW4gdGhl
IGFuaW1hdGlvbiB0byB0aGUgY29ycmVjdCBmcmFtZSBiZWZvcmUgd2UgdHJ5IHRvIGRyYXcgaXQs
IHNvIHdlCisgICAgLy8gZG9uJ3QgZHJhdyBhbiBvbGQgZnJhbWUgYW5kIHRoZW4gaW1tZWRpYXRl
bHkgbmVlZCB0byBkcmF3IGEgbmV3ZXIgb25lLAorICAgIC8vIGNhdXNpbmcgZmxpY2tlciBhbmQg
d2FzdGluZyBDUFUuCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAogICAgIEJCaXRtYXAqIGltYWdl
ID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTEwNSw0MiArMTEzLDc3IEBACiAg
ICAgLy8gVGVzdCB1c2luZyBleGFtcGxlIHNpdGUgYXQKICAgICAvLyBodHRwOi8vd3d3Lm1leWVy
d2ViLmNvbS9lcmljL2Nzcy9lZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCiAgICAgY3R4dC0+
cGxhdGZvcm1Db250ZXh0KCktPlNldERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOwotICAgIGN0eHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBzcmNSZWN0ICYgaW1hZ2UtPkJv
dW5kcygpLCBkc3RSZWN0KTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJhd0JpdG1h
cEFzeW5jKGltYWdlLCBzcmNSZWN0LCBkc3RSZWN0KTsKICAgICBjdHh0LT5yZXN0b3JlKCk7CisK
KyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERy
YXcodGhpcyk7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQor
dm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRy
YW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0KQogewotICAgIC8vIEZJWE1FOiBmaW5pc2ggdGhpcyB0byBzdXBwb3J0IGFsc28gcGhhc2Vk
IHBvc2l0aW9uIChzcmNQb2ludCkKLSAgICBzdGFydEFuaW1hdGlvbigpOwotCiAgICAgQkJpdG1h
cCogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghaW1hZ2Ug
fHwgIWltYWdlLT5Jc1ZhbGlkKCkpIC8vIElmIHRoZSBpbWFnZSBoYXNuJ3QgZnVsbHkgbG9hZGVk
LgogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBjdXJyZW50VyA9IDA7Ci0gICAgZmxvYXQg
Y3VycmVudEggPSAwOworICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhlIGltYWdlIGhhcyBhbnkgYWxw
aGEgdHJhbnNwYXJlbmN5LCB3ZSBjYW4gdXNlIGZhc3RlciBkcmF3aW5nIGlmIG5vdAorICAgIGJv
b2wgaGFzQWxwaGEgPSBmYWxzZTsKIAorICAgIHVpbnQ4KiBiaXRzID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OCo+KGltYWdlLT5CaXRzKCkpOworICAgIHVpbnQzMiB3aWR0aCA9IGltYWdlLT5Cb3Vu
ZHMoKS5JbnRlZ2VyV2lkdGgoKSArIDE7CisgICAgdWludDMyIGhlaWdodCA9IGltYWdlLT5Cb3Vu
ZHMoKS5JbnRlZ2VySGVpZ2h0KCkgKyAxOworCisgICAgdWludDMyIGJwciA9IGltYWdlLT5CeXRl
c1BlclJvdygpOworICAgIGZvciAodWludDMyIHkgPSAwOyB5IDwgaGVpZ2h0ICYmICFoYXNBbHBo
YTsgeSsrKSB7CisgICAgICAgIHVpbnQ4KiBwID0gYml0czsKKyAgICAgICAgZm9yICh1aW50MzIg
eCA9IDA7IHggPCB3aWR0aCAmJiAhaGFzQWxwaGE7IHgrKykgeworICAgICAgICAgICAgaGFzQWxw
aGEgPSBwWzNdIDwgMjU1OworICAgICAgICAgICAgcCArPSA0OworICAgICAgICB9CisgICAgICAg
IGJpdHMgKz0gYnByOworICAgIH0KKwogICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2luZ01vZGUoQl9PUF9BTFBIQSk7CisgICAgaWYg
KGhhc0FscGhhKQorICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2lu
Z01vZGUoQl9PUF9BTFBIQSk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+U2V0RHJhd2luZ01vZGUoQl9PUF9DT1BZKTsKICAgICBjb250ZXh0LT5jbGlwKGVu
Y2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwotCi0gICAgd2hpbGUgKGN1cnJlbnRXIDwgZHN0UmVj
dC53aWR0aCgpKSB7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50SCA8IGRzdFJlY3QuaGVpZ2h0KCkp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5EcmF3Qml0bWFwKGlt
YWdlLCBCUG9pbnQoZHN0UmVjdC54KCkgKyBjdXJyZW50VywgZHN0UmVjdC55KCkgKyBjdXJyZW50
SCkpOwotICAgICAgICAgICAgY3VycmVudEggKz0gdGlsZVJlY3QuaGVpZ2h0KCk7CisgICAgZmxv
YXQgY3VycmVudFcgPSBwaGFzZS54KCk7CisgICAgQlJlY3QgYlRpbGVSZWN0KHRpbGVSZWN0KTsK
KyAgICB3aGlsZSAoY3VycmVudFcgPCBkc3RSZWN0LngoKSArIGRzdFJlY3Qud2lkdGgoKSkgewor
ICAgICAgICBmbG9hdCBjdXJyZW50SCA9IHBoYXNlLnkoKTsKKyAgICAgICAgd2hpbGUgKGN1cnJl
bnRIIDwgZHN0UmVjdC55KCkgKyBkc3RSZWN0LmhlaWdodCgpKSB7CisgICAgICAgICAgICBCUmVj
dCBiRHN0UmVjdChjdXJyZW50VywgY3VycmVudEgsIGN1cnJlbnRXICsgd2lkdGggLSAxLCBjdXJy
ZW50SCArIGhlaWdodCAtIDEpOworICAgICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPkRyYXdCaXRtYXBBc3luYyhpbWFnZSwgYlRpbGVSZWN0LCBiRHN0UmVjdCk7CisgICAgICAg
ICAgICBjdXJyZW50SCArPSBoZWlnaHQ7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudFcgKz0g
dGlsZVJlY3Qud2lkdGgoKTsKLSAgICAgICAgY3VycmVudEggPSAwOworICAgICAgICBjdXJyZW50
VyArPSB3aWR0aDsKICAgICB9CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGlt
YWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwog
fQogCiB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogewotICAgIC8vIEZJ
WE1FOiBuZWVkIHRvIGNoZWNrIHRoZSBSR0JBMzIgYnVmZmVyIHRvIHNlZSBpZiBpdCBpcyAxeDEu
CiAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKICAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9y
ID0gdHJ1ZTsKKworICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQorICAgICAgICByZXR1cm47CisK
KyAgICBCQml0bWFwKiBpbWFnZSA9IGdldEJCaXRtYXAoKTsKKyAgICBpZiAoIWltYWdlIHx8ICFp
bWFnZS0+Qm91bmRzKCkuSXNWYWxpZCgpCisgICAgICAgIHx8IGltYWdlLT5Cb3VuZHMoKS5JbnRl
Z2VyV2lkdGgoKSA+IDAgfHwgaW1hZ2UtPkJvdW5kcygpLkludGVnZXJIZWlnaHQoKSA+IDApIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKKyAg
ICB1aW50OCogYml0cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihpbWFnZS0+Qml0cygpKTsK
KyAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihiaXRzWzJdLCBiaXRzWzFdLCBiaXRzWzBdLCBiaXRz
WzNdKTsKIH0KIAogQkJpdG1hcCogQml0bWFwSW1hZ2U6OmdldEJCaXRtYXAoKSBjb25zdApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNw
cAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0lu
dFJlY3RIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQAogCiBJbnRS
ZWN0OjpJbnRSZWN0KGNvbnN0IEJSZWN0JiByZWN0KQogICAgIDogbV9sb2NhdGlvbihyZWN0Lkxl
ZnRUb3AoKSkKLSAgICAsIG1fc2l6ZShyZWN0LkludGVnZXJXaWR0aCgpLCByZWN0LkludGVnZXJI
ZWlnaHQoKSkKKyAgICAsIG1fc2l6ZShyZWN0LkludGVnZXJXaWR0aCgpICsgMSwgcmVjdC5JbnRl
Z2VySGVpZ2h0KCkgKyAxKQogewogfQogCiBJbnRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhl
aWdodCgpKSk7CisgICAgcmV0dXJuIEJSZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRo
KCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlr
dS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlr
dS9JbWFnZURlY29kZXJIYWlrdS5jcHAJKHJldmlzaW9uIDU0NDY2KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFN0ZXBoYW4gQcOfbXVzLCA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMyw0MSBAQAogCiBOYXRpdmVJbWFnZVB0ciBSR0JBMzJC
dWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewotICAgIEJCaXRtYXAqIGJtcCA9IG5l
dyBCQml0bWFwKEJSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSwgQl9SR0IzMik7Ci0gICAg
Ym1wLT5TZXRCaXRzKG1fYnl0ZXMuZGF0YSgpLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWln
aHQoKSwgMCwgQl9SR0IzMik7Ci0gICAgcmV0dXJuIGJtcDsKKyAgICBpbnQgYnl0ZXNQZXJSb3cg
PSB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSk7CisgICAgT3duUHRyPEJCaXRtYXA+IGJpdG1h
cChuZXcgQkJpdG1hcChCUmVjdCgwLCAwLCB3aWR0aCgpIC0gMSwgaGVpZ2h0KCkgLSAxKSwgMCwg
Ql9SR0JBMzIsIGJ5dGVzUGVyUm93KSk7CisKKyAgICBjb25zdCB1aW50OCogc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OCo+KG1fYnl0ZXMuZGF0YSgpKTsKKyAgICB1aW50OCog
ZGVzdGluYXRpb24gPSByZWludGVycHJldF9jYXN0PHVpbnQ4Kj4oYml0bWFwLT5CaXRzKCkpOwor
ICAgIGludCBoID0gaGVpZ2h0KCk7CisgICAgaW50IHcgPSB3aWR0aCgpOworICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgaDsgeSsrKSB7CisjaWYgMAorLy8gRklYTUU6IEVuYWJsZSB0aGlzIGNvbnZl
cnNpb24gb25jZSBIYWlrdSBoYXMgQl9SR0JBMzJQW3JlbXVsdGlwbGllZF0uLi4KKyAgICAgICAg
bWVtY3B5KGRzdCwgc291cmNlLCBieXRlc1BlclJvdyk7CisjZWxzZQorICAgICAgICBjb25zdCB1
aW50OCogc291cmNlSGFuZGxlID0gc291cmNlOworICAgICAgICB1aW50OCogZGVzdGluYXRpb25I
YW5kbGUgPSBkZXN0aW5hdGlvbjsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4Kysp
IHsKKyAgICAgICAgCWlmIChzb3VyY2VIYW5kbGVbM10gPT0gMjU1IHx8ICFzb3VyY2VIYW5kbGVb
M10pIHsKKyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhhbmRsZVswXSA9IHNvdXJjZUhhbmRsZVsw
XTsKKyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhhbmRsZVsxXSA9IHNvdXJjZUhhbmRsZVsxXTsK
KyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhhbmRsZVsyXSA9IHNvdXJjZUhhbmRsZVsyXTsKKyAg
ICAgICAgCSAgICBkZXN0aW5hdGlvbkhhbmRsZVszXSA9IHNvdXJjZUhhbmRsZVszXTsKKyAgICAg
ICAgCX0gZWxzZSB7CisgICAgICAgIAkgICAgZGVzdGluYXRpb25IYW5kbGVbMF0gPSAodWludDE2
KXNvdXJjZUhhbmRsZVswXSAqIDI1NSAvIHNvdXJjZUhhbmRsZVszXTsKKyAgICAgICAgCSAgICBk
ZXN0aW5hdGlvbkhhbmRsZVsxXSA9ICh1aW50MTYpc291cmNlSGFuZGxlWzFdICogMjU1IC8gc291
cmNlSGFuZGxlWzNdOworICAgICAgICAJICAgIGRlc3RpbmF0aW9uSGFuZGxlWzJdID0gKHVpbnQx
Nilzb3VyY2VIYW5kbGVbMl0gKiAyNTUgLyBzb3VyY2VIYW5kbGVbM107CisgICAgICAgIAkgICAg
ZGVzdGluYXRpb25IYW5kbGVbM10gPSBzb3VyY2VIYW5kbGVbM107CisgICAgICAgIAl9CisgICAg
ICAgIAlkZXN0aW5hdGlvbkhhbmRsZSArPSA0OworICAgICAgICAJc291cmNlSGFuZGxlICs9IDQ7
CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZXN0aW5hdGlvbiArPSBieXRlc1BlclJvdzsK
KyAgICAgICAgc291cmNlICs9IGJ5dGVzUGVyUm93OworICAgIH0KKworICAgIHJldHVybiBiaXRt
YXAucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48524</attachid>
            <date>2010-02-10 15:23:18 -0800</date>
            <delta_ts>2010-02-10 15:42:40 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects3.diff</filename>
            <type>text/plain</type>
            <size>11243</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICBVc2UgT3duUHRyIHdoZW4gY3JlYXRpbmcgdGhlIEJCaXRtYXAgdG8g
YXZvaWQgZnV0dXJlIGxlYWtzIHdpdGggZWFybHkgcmV0dXJucy4KKworICAgICAgICBDb252ZXJ0
IHRoZSBiaXRtYXAgZGF0YSB0byBub24gcHJlLW11bHRpcGxpZWQgdW50aWwgSGFpa3Ugc3VwcG9y
dHMgZHJhd2luZworICAgICAgICBwcmUtbXVsdGlwbGllZCBiaXRtYXBzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwOiBGaXhlZCBjb252ZXJz
aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IEZpeGVkIHBsYWNlbWVudCwgbm90
aWZ5IG9ic2VydmVycworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKTogSW1w
bGVtZW50ZWQgdXNpbmcgInBoYXNlIiB0byBmaXggc2Nyb2xsaW5nLCBub3RpZnkgb2JzZXJ2ZXJz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcDogRml4
ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0lt
YWdlRGVjb2RlckhhaWt1LmNwcDogRml4ZWQgY29udmVyc2lvbgorCiAyMDEwLTAyLTA2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3
LCByb2xsaW5nIG91dCByNTQzNjQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2
ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVw
aGFuIEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmxvYXRS
ZWN0OjpGbG9hdFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3Qu
TGVmdFRvcCgpKQotICAgICwgbV9zaXplKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSkKKyAg
ICAsIG1fc2l6ZShyZWN0LldpZHRoKCkgKyAxLCByZWN0LkhlaWdodCgpICsgMSkKIHsKIH0KIAog
RmxvYXRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJS
ZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCShyZXZpc2lvbiA1NDQ2NikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhh
dXNtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZWEgQW56YW5p
IDxhbmRyZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFu
IEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtMzUsMTMgKzM2LDE0IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSA8QXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxCaXRtYXAuaD4KICNpbmNsdWRlIDxW
aWV3Lmg+CiAKLQogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQK
IFZlY3RvcjxjaGFyPiBsb2FkUmVzb3VyY2VJbnRvQXJyYXkoY29uc3QgY2hhciopOwogCkBAIC04
NSw2ICs4NywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiAv
LyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgaWYg
KCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTcGlu
IHRoZSBhbmltYXRpb24gdG8gdGhlIGNvcnJlY3QgZnJhbWUgYmVmb3JlIHdlIHRyeSB0byBkcmF3
IGl0LCBzbyB3ZQorICAgIC8vIGRvbid0IGRyYXcgYW4gb2xkIGZyYW1lIGFuZCB0aGVuIGltbWVk
aWF0ZWx5IG5lZWQgdG8gZHJhdyBhIG5ld2VyIG9uZSwKKyAgICAvLyBjYXVzaW5nIGZsaWNrZXIg
YW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKICAgICBCQml0bWFwKiBp
bWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMDUsNDIgKzExMyw3NyBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgLy8gVGVzdCB1
c2luZyBleGFtcGxlIHNpdGUgYXQKICAgICAvLyBodHRwOi8vd3d3Lm1leWVyd2ViLmNvbS9lcmlj
L2Nzcy9lZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCiAgICAgY3R4dC0+cGxhdGZvcm1Db250
ZXh0KCktPlNldERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOwotICAgIGN0eHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBzcmNSZWN0ICYgaW1hZ2UtPkJvdW5kcygpLCBkc3RS
ZWN0KTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJhd0JpdG1hcEFzeW5jKGltYWdl
LCBzcmNSZWN0LCBkc3RSZWN0KTsKICAgICBjdHh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9
CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQordm9pZCBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewotICAg
IC8vIEZJWE1FOiBmaW5pc2ggdGhpcyB0byBzdXBwb3J0IGFsc28gcGhhc2VkIHBvc2l0aW9uIChz
cmNQb2ludCkKLSAgICBzdGFydEFuaW1hdGlvbigpOwotCiAgICAgQkJpdG1hcCogaW1hZ2UgPSBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5J
c1ZhbGlkKCkpIC8vIElmIHRoZSBpbWFnZSBoYXNuJ3QgZnVsbHkgbG9hZGVkLgogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmbG9hdCBjdXJyZW50VyA9IDA7Ci0gICAgZmxvYXQgY3VycmVudEggPSAw
OworICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhlIGltYWdlIGhhcyBhbnkgYWxwaGEgdHJhbnNwYXJl
bmN5LCB3ZSBjYW4gdXNlIGZhc3RlciBkcmF3aW5nIGlmIG5vdAorICAgIGJvb2wgaGFzQWxwaGEg
PSBmYWxzZTsKKworICAgIHVpbnQ4KiBiaXRzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGlt
YWdlLT5CaXRzKCkpOworICAgIHVpbnQzMiB3aWR0aCA9IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2Vy
V2lkdGgoKSArIDE7CisgICAgdWludDMyIGhlaWdodCA9IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2Vy
SGVpZ2h0KCkgKyAxOworCisgICAgdWludDMyIGJwciA9IGltYWdlLT5CeXRlc1BlclJvdygpOwor
ICAgIGZvciAodWludDMyIHkgPSAwOyB5IDwgaGVpZ2h0ICYmICFoYXNBbHBoYTsgeSsrKSB7Cisg
ICAgICAgIHVpbnQ4KiBwID0gYml0czsKKyAgICAgICAgZm9yICh1aW50MzIgeCA9IDA7IHggPCB3
aWR0aCAmJiAhaGFzQWxwaGE7IHgrKykgeworICAgICAgICAgICAgaGFzQWxwaGEgPSBwWzNdIDwg
MjU1OworICAgICAgICAgICAgcCArPSA0OworICAgICAgICB9CisgICAgICAgIGJpdHMgKz0gYnBy
OworICAgIH0KIAogICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+U2V0RHJhd2luZ01vZGUoQl9PUF9BTFBIQSk7CisgICAgaWYgKGhhc0FscGhhKQor
ICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0RHJhd2luZ01vZGUoQl9PUF9B
TFBIQSk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+U2V0
RHJhd2luZ01vZGUoQl9PUF9DT1BZKTsKICAgICBjb250ZXh0LT5jbGlwKGVuY2xvc2luZ0ludFJl
Y3QoZHN0UmVjdCkpOwotCi0gICAgd2hpbGUgKGN1cnJlbnRXIDwgZHN0UmVjdC53aWR0aCgpKSB7
Ci0gICAgICAgIHdoaWxlIChjdXJyZW50SCA8IGRzdFJlY3QuaGVpZ2h0KCkpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBCUG9pbnQo
ZHN0UmVjdC54KCkgKyBjdXJyZW50VywgZHN0UmVjdC55KCkgKyBjdXJyZW50SCkpOwotICAgICAg
ICAgICAgY3VycmVudEggKz0gdGlsZVJlY3QuaGVpZ2h0KCk7CisgICAgZmxvYXQgY3VycmVudFcg
PSBwaGFzZS54KCk7CisgICAgQlJlY3QgYlRpbGVSZWN0KHRpbGVSZWN0KTsKKyAgICB3aGlsZSAo
Y3VycmVudFcgPCBkc3RSZWN0LngoKSArIGRzdFJlY3Qud2lkdGgoKSkgeworICAgICAgICBmbG9h
dCBjdXJyZW50SCA9IHBoYXNlLnkoKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRIIDwgZHN0UmVj
dC55KCkgKyBkc3RSZWN0LmhlaWdodCgpKSB7CisgICAgICAgICAgICBCUmVjdCBiRHN0UmVjdChj
dXJyZW50VywgY3VycmVudEgsIGN1cnJlbnRXICsgd2lkdGggLSAxLCBjdXJyZW50SCArIGhlaWdo
dCAtIDEpOworICAgICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRt
YXBBc3luYyhpbWFnZSwgYlRpbGVSZWN0LCBiRHN0UmVjdCk7CisgICAgICAgICAgICBjdXJyZW50
SCArPSBoZWlnaHQ7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudFcgKz0gdGlsZVJlY3Qud2lk
dGgoKTsKLSAgICAgICAgY3VycmVudEggPSAwOworICAgICAgICBjdXJyZW50VyArPSB3aWR0aDsK
ICAgICB9CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIo
KSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCiB2b2lkIEJp
dG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogewotICAgIC8vIEZJWE1FOiBuZWVkIHRv
IGNoZWNrIHRoZSBSR0JBMzIgYnVmZmVyIHRvIHNlZSBpZiBpdCBpcyAxeDEuCiAgICAgbV9pc1Nv
bGlkQ29sb3IgPSBmYWxzZTsKICAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKKwor
ICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQorICAgICAgICByZXR1cm47CisKKyAgICBCQml0bWFw
KiBpbWFnZSA9IGdldEJCaXRtYXAoKTsKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Qm91bmRz
KCkuSXNWYWxpZCgpCisgICAgICAgIHx8IGltYWdlLT5Cb3VuZHMoKS5JbnRlZ2VyV2lkdGgoKSA+
IDAgfHwgaW1hZ2UtPkJvdW5kcygpLkludGVnZXJIZWlnaHQoKSA+IDApIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKKyAgICB1aW50OCogYml0
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihpbWFnZS0+Qml0cygpKTsKKyAgICBtX3NvbGlk
Q29sb3IgPSBDb2xvcihiaXRzWzJdLCBiaXRzWzFdLCBiaXRzWzBdLCBiaXRzWzNdKTsKIH0KIAog
QkJpdG1hcCogQml0bWFwSW1hZ2U6OmdldEJCaXRtYXAoKSBjb25zdApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcAkocmV2aXNpb24g
NTQ0NjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ludFJlY3RIYWlrdS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEludFJlY3Q6OkludFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9u
KHJlY3QuTGVmdFRvcCgpKQotICAgICwgbV9zaXplKHJlY3QuSW50ZWdlcldpZHRoKCksIHJlY3Qu
SW50ZWdlckhlaWdodCgpKQorICAgICwgbV9zaXplKHJlY3QuSW50ZWdlcldpZHRoKCkgKyAxLCBy
ZWN0LkludGVnZXJIZWlnaHQoKSArIDEpCiB7CiB9CiAKIEludFJlY3Q6Om9wZXJhdG9yIEJSZWN0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQlJlY3QoQlBvaW50KHgoKSwgeSgpKSwgQlNpemUod2lk
dGgoKSwgaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gQlJlY3QoQlBvaW50KHgoKSwgeSgpKSwgQlNp
emUod2lkdGgoKSAtIDEsIGhlaWdodCgpIC0gMSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0ltYWdlRGVj
b2RlckhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2hhaWt1L0ltYWdlRGVjb2RlckhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0ltYWdlRGVjb2RlckhhaWt1LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgU3RlcGhhbiBBw59tdXMsIDxzdXBlcnN0aXBwaUBnbXguZGU+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDkgKzMzLDQxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogTmF0aXZlSW1hZ2VQdHIgUkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKIHsKLSAgICBCQml0bWFwKiBibXAgPSBuZXcgQkJpdG1hcChCUmVjdCgwLCAwLCB3aWR0aCgp
LCBoZWlnaHQoKSksIEJfUkdCMzIpOwotICAgIGJtcC0+U2V0Qml0cyhtX2J5dGVzLmRhdGEoKSwg
bV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCksIDAsIEJfUkdCMzIpOwotICAgIHJldHVy
biBibXA7CisgICAgaW50IGJ5dGVzUGVyUm93ID0gd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEp
OworICAgIE93blB0cjxCQml0bWFwPiBiaXRtYXAobmV3IEJCaXRtYXAoQlJlY3QoMCwgMCwgd2lk
dGgoKSAtIDEsIGhlaWdodCgpIC0gMSksIDAsIEJfUkdCQTMyLCBieXRlc1BlclJvdykpOworCisg
ICAgY29uc3QgdWludDgqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDgqPiht
X2J5dGVzLmRhdGEoKSk7CisgICAgdWludDgqIGRlc3RpbmF0aW9uID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OCo+KGJpdG1hcC0+Qml0cygpKTsKKyAgICBpbnQgaCA9IGhlaWdodCgpOworICAgIGlu
dCB3ID0gd2lkdGgoKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykgeworI2lmIDAK
Ky8vIEZJWE1FOiBFbmFibGUgdGhpcyBjb252ZXJzaW9uIG9uY2UgSGFpa3UgaGFzIEJfUkdCQTMy
UFtyZW11bHRpcGxpZWRdLi4uCisgICAgICAgIG1lbWNweShkc3QsIHNvdXJjZSwgYnl0ZXNQZXJS
b3cpOworI2Vsc2UKKyAgICAgICAgY29uc3QgdWludDgqIHNvdXJjZUhhbmRsZSA9IHNvdXJjZTsK
KyAgICAgICAgdWludDgqIGRlc3RpbmF0aW9uSGFuZGxlID0gZGVzdGluYXRpb247CisgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsrKSB7CisgICAgICAgIAlpZiAoc291cmNlSGFuZGxl
WzNdID09IDI1NSB8fCAhc291cmNlSGFuZGxlWzNdKSB7CisgICAgICAgIAkgICAgZGVzdGluYXRp
b25IYW5kbGVbMF0gPSBzb3VyY2VIYW5kbGVbMF07CisgICAgICAgIAkgICAgZGVzdGluYXRpb25I
YW5kbGVbMV0gPSBzb3VyY2VIYW5kbGVbMV07CisgICAgICAgIAkgICAgZGVzdGluYXRpb25IYW5k
bGVbMl0gPSBzb3VyY2VIYW5kbGVbMl07CisgICAgICAgIAkgICAgZGVzdGluYXRpb25IYW5kbGVb
M10gPSBzb3VyY2VIYW5kbGVbM107CisgICAgICAgIAl9IGVsc2UgeworICAgICAgICAJICAgIGRl
c3RpbmF0aW9uSGFuZGxlWzBdID0gKHVpbnQxNilzb3VyY2VIYW5kbGVbMF0gKiAyNTUgLyBzb3Vy
Y2VIYW5kbGVbM107CisgICAgICAgIAkgICAgZGVzdGluYXRpb25IYW5kbGVbMV0gPSAodWludDE2
KXNvdXJjZUhhbmRsZVsxXSAqIDI1NSAvIHNvdXJjZUhhbmRsZVszXTsKKyAgICAgICAgCSAgICBk
ZXN0aW5hdGlvbkhhbmRsZVsyXSA9ICh1aW50MTYpc291cmNlSGFuZGxlWzJdICogMjU1IC8gc291
cmNlSGFuZGxlWzNdOworICAgICAgICAJICAgIGRlc3RpbmF0aW9uSGFuZGxlWzNdID0gc291cmNl
SGFuZGxlWzNdOworICAgICAgICAJfQorICAgICAgICAJZGVzdGluYXRpb25IYW5kbGUgKz0gNDsK
KyAgICAgICAgCXNvdXJjZUhhbmRsZSArPSA0OworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAg
ZGVzdGluYXRpb24gKz0gYnl0ZXNQZXJSb3c7CisgICAgICAgIHNvdXJjZSArPSBieXRlc1BlclJv
dzsKKyAgICB9CisKKyAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48526</attachid>
            <date>2010-02-10 15:42:40 -0800</date>
            <delta_ts>2010-02-10 15:49:36 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects3.diff</filename>
            <type>text/plain</type>
            <size>11043</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICBVc2UgT3duUHRyIHdoZW4gY3JlYXRpbmcgdGhlIEJCaXRtYXAgdG8g
YXZvaWQgZnV0dXJlIGxlYWtzIHdpdGggZWFybHkgcmV0dXJucy4KKworICAgICAgICBDb252ZXJ0
IHRoZSBiaXRtYXAgZGF0YSB0byBub24gcHJlLW11bHRpcGxpZWQgdW50aWwgSGFpa3Ugc3VwcG9y
dHMgZHJhd2luZworICAgICAgICBwcmUtbXVsdGlwbGllZCBiaXRtYXBzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwOiBGaXhlZCBjb252ZXJz
aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IEZpeGVkIHBsYWNlbWVudCwgbm90
aWZ5IG9ic2VydmVycworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKTogSW1w
bGVtZW50ZWQgdXNpbmcgInBoYXNlIiB0byBmaXggc2Nyb2xsaW5nLCBub3RpZnkgb2JzZXJ2ZXJz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcDogRml4
ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0lt
YWdlRGVjb2RlckhhaWt1LmNwcDogRml4ZWQgY29udmVyc2lvbgorCiAyMDEwLTAyLTA2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3
LCByb2xsaW5nIG91dCByNTQzNjQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2
ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVw
aGFuIEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmxvYXRS
ZWN0OjpGbG9hdFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3Qu
TGVmdFRvcCgpKQotICAgICwgbV9zaXplKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSkKKyAg
ICAsIG1fc2l6ZShyZWN0LldpZHRoKCkgKyAxLCByZWN0LkhlaWdodCgpICsgMSkKIHsKIH0KIAog
RmxvYXRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJS
ZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCShyZXZpc2lvbiA1NDYyNikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhh
dXNtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZWEgQW56YW5p
IDxhbmRyZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFu
IEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtMzUsMTMgKzM2LDE0IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSA8QXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxCaXRtYXAuaD4KICNpbmNsdWRlIDxW
aWV3Lmg+CiAKLQogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQK
IFZlY3RvcjxjaGFyPiBsb2FkUmVzb3VyY2VJbnRvQXJyYXkoY29uc3QgY2hhciopOwogCkBAIC04
NSw2ICs4NywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiAv
LyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgaWYg
KCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTcGlu
IHRoZSBhbmltYXRpb24gdG8gdGhlIGNvcnJlY3QgZnJhbWUgYmVmb3JlIHdlIHRyeSB0byBkcmF3
IGl0LCBzbyB3ZQorICAgIC8vIGRvbid0IGRyYXcgYW4gb2xkIGZyYW1lIGFuZCB0aGVuIGltbWVk
aWF0ZWx5IG5lZWQgdG8gZHJhdyBhIG5ld2VyIG9uZSwKKyAgICAvLyBjYXVzaW5nIGZsaWNrZXIg
YW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKICAgICBCQml0bWFwKiBp
bWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMDUsNDIgKzExMyw3NiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgLy8gVGVzdCB1
c2luZyBleGFtcGxlIHNpdGUgYXQKICAgICAvLyBodHRwOi8vd3d3Lm1leWVyd2ViLmNvbS9lcmlj
L2Nzcy9lZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCiAgICAgY3R4dC0+cGxhdGZvcm1Db250
ZXh0KCktPlNldERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOwotICAgIGN0eHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBzcmNSZWN0ICYgaW1hZ2UtPkJvdW5kcygpLCBkc3RS
ZWN0KTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJhd0JpdG1hcEFzeW5jKGltYWdl
LCBzcmNSZWN0LCBkc3RSZWN0KTsKICAgICBjdHh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9
CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICAvLyBGSVhNRTog
ZmluaXNoIHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAoc3JjUG9pbnQpCi0g
ICAgc3RhcnRBbmltYXRpb24oKTsKLQogICAgIEJCaXRtYXAqIGltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+SXNWYWxpZCgpKSAv
LyBJZiB0aGUgaW1hZ2UgaGFzbid0IGZ1bGx5IGxvYWRlZC4KICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgY3VycmVudFcgPSAwOwotICAgIGZsb2F0IGN1cnJlbnRIID0gMDsKKyAgICAvLyBG
aWd1cmUgb3V0IGlmIHRoZSBpbWFnZSBoYXMgYW55IGFscGhhIHRyYW5zcGFyZW5jeSwgd2UgY2Fu
IHVzZSBmYXN0ZXIgZHJhd2luZyBpZiBub3QKKyAgICBib29sIGhhc0FscGhhID0gZmFsc2U7CisK
KyAgICB1aW50OCogYml0cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihpbWFnZS0+Qml0cygp
KTsKKyAgICB1aW50MzIgd2lkdGggPSBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlcldpZHRoKCkgKyAx
OworICAgIHVpbnQzMiBoZWlnaHQgPSBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlckhlaWdodCgpICsg
MTsKKworICAgIHVpbnQzMiBicHIgPSBpbWFnZS0+Qnl0ZXNQZXJSb3coKTsKKyAgICBmb3IgKHVp
bnQzMiB5ID0gMDsgeSA8IGhlaWdodCAmJiAhaGFzQWxwaGE7IHkrKykgeworICAgICAgICB1aW50
OCogcCA9IGJpdHM7CisgICAgICAgIGZvciAodWludDMyIHggPSAwOyB4IDwgd2lkdGggJiYgIWhh
c0FscGhhOyB4KyspIHsKKyAgICAgICAgICAgIGhhc0FscGhhID0gcFszXSA8IDI1NTsKKyAgICAg
ICAgICAgIHAgKz0gNDsKKyAgICAgICAgfQorICAgICAgICBiaXRzICs9IGJwcjsKKyAgICB9CiAK
ICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPlNl
dERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOworICAgIGlmIChoYXNBbHBoYSkKKyAgICAgICAgY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPlNldERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOworICAg
IGVsc2UKKyAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPlNldERyYXdpbmdNb2Rl
KEJfT1BfQ09QWSk7CiAgICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3Qp
KTsKLQotICAgIHdoaWxlIChjdXJyZW50VyA8IGRzdFJlY3Qud2lkdGgoKSkgewotICAgICAgICB3
aGlsZSAoY3VycmVudEggPCBkc3RSZWN0LmhlaWdodCgpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJhd0JpdG1hcChpbWFnZSwgQlBvaW50KGRzdFJlY3QueCgp
ICsgY3VycmVudFcsIGRzdFJlY3QueSgpICsgY3VycmVudEgpKTsKLSAgICAgICAgICAgIGN1cnJl
bnRIICs9IHRpbGVSZWN0LmhlaWdodCgpOworICAgIGZsb2F0IGN1cnJlbnRXID0gcGhhc2UueCgp
OworICAgIEJSZWN0IGJUaWxlUmVjdCh0aWxlUmVjdCk7CisgICAgd2hpbGUgKGN1cnJlbnRXIDwg
ZHN0UmVjdC54KCkgKyBkc3RSZWN0LndpZHRoKCkpIHsKKyAgICAgICAgZmxvYXQgY3VycmVudEgg
PSBwaGFzZS55KCk7CisgICAgICAgIHdoaWxlIChjdXJyZW50SCA8IGRzdFJlY3QueSgpICsgZHN0
UmVjdC5oZWlnaHQoKSkgeworICAgICAgICAgICAgQlJlY3QgYkRzdFJlY3QoY3VycmVudFcsIGN1
cnJlbnRILCBjdXJyZW50VyArIHdpZHRoIC0gMSwgY3VycmVudEggKyBoZWlnaHQgLSAxKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5EcmF3Qml0bWFwQXN5bmMoaW1h
Z2UsIGJUaWxlUmVjdCwgYkRzdFJlY3QpOworICAgICAgICAgICAgY3VycmVudEggKz0gaGVpZ2h0
OwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRXICs9IHRpbGVSZWN0LndpZHRoKCk7Ci0gICAg
ICAgIGN1cnJlbnRIID0gMDsKKyAgICAgICAgY3VycmVudFcgKz0gd2lkdGg7CiAgICAgfQogICAg
IGNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCisgICAgICAg
IGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKCkKIHsKLSAgICAvLyBGSVhNRTogbmVlZCB0byBjaGVjayB0aGUg
UkdCQTMyIGJ1ZmZlciB0byBzZWUgaWYgaXQgaXMgMXgxLgogICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7CiAgICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7CisKKyAgICBpZiAoZnJh
bWVDb3VudCgpID4gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQkJpdG1hcCogaW1hZ2UgPSBn
ZXRCQml0bWFwKCk7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPkJvdW5kcygpLklzVmFsaWQo
KQorICAgICAgICB8fCBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlcldpZHRoKCkgPiAwIHx8IGltYWdl
LT5Cb3VuZHMoKS5JbnRlZ2VySGVpZ2h0KCkgPiAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2lzU29saWRDb2xvciA9IHRydWU7CisgICAgdWludDgqIGJpdHMgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4Kj4oaW1hZ2UtPkJpdHMoKSk7CisgICAgbV9zb2xpZENvbG9yID0gQ29s
b3IoYml0c1syXSwgYml0c1sxXSwgYml0c1swXSwgYml0c1szXSk7CiB9CiAKIEJCaXRtYXAqIEJp
dG1hcEltYWdlOjpnZXRCQml0bWFwKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhaWt1L0ludFJlY3RIYWlrdS5jcHAJKHJldmlzaW9uIDU0NDY2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRSZWN0
OjpJbnRSZWN0KGNvbnN0IEJSZWN0JiByZWN0KQogICAgIDogbV9sb2NhdGlvbihyZWN0LkxlZnRU
b3AoKSkKLSAgICAsIG1fc2l6ZShyZWN0LkludGVnZXJXaWR0aCgpLCByZWN0LkludGVnZXJIZWln
aHQoKSkKKyAgICAsIG1fc2l6ZShyZWN0LkludGVnZXJXaWR0aCgpICsgMSwgcmVjdC5JbnRlZ2Vy
SGVpZ2h0KCkgKyAxKQogewogfQogCiBJbnRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIEJSZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdo
dCgpKSk7CisgICAgcmV0dXJuIEJSZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkg
LSAxLCBoZWlnaHQoKSAtIDEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9oYWlrdS9J
bWFnZURlY29kZXJIYWlrdS5jcHAJKHJldmlzaW9uIDU0NDY2KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9oYWlrdS9JbWFnZURlY29kZXJIYWlrdS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFN0
ZXBoYW4gQcOfbXVzLCA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiw5ICszMyw0MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5hdGl2
ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAg
QkJpdG1hcCogYm1wID0gbmV3IEJCaXRtYXAoQlJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkp
LCBCX1JHQjMyKTsKLSAgICBibXAtPlNldEJpdHMobV9ieXRlcy5kYXRhKCksIG1fc2l6ZS53aWR0
aCgpICogbV9zaXplLmhlaWdodCgpLCAwLCBCX1JHQjMyKTsKLSAgICByZXR1cm4gYm1wOworICAg
IGludCBieXRlc1BlclJvdyA9IHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxEYXRhKTsKKyAgICBPd25Q
dHI8QkJpdG1hcD4gYml0bWFwKG5ldyBCQml0bWFwKEJSZWN0KDAsIDAsIHdpZHRoKCkgLSAxLCBo
ZWlnaHQoKSAtIDEpLCAwLCBCX1JHQkEzMiwgYnl0ZXNQZXJSb3cpKTsKKworICAgIGNvbnN0IHVp
bnQ4KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4Kj4obV9ieXRlcy5kYXRh
KCkpOworICAgIHVpbnQ4KiBkZXN0aW5hdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihi
aXRtYXAtPkJpdHMoKSk7CisgICAgaW50IGggPSBoZWlnaHQoKTsKKyAgICBpbnQgdyA9IHdpZHRo
KCk7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKKyNpZiAwCisvLyBGSVhNRTog
RW5hYmxlIHRoaXMgY29udmVyc2lvbiBvbmNlIEhhaWt1IGhhcyBCX1JHQkEzMlBbcmVtdWx0aXBs
aWVkXS4uLgorICAgICAgICBtZW1jcHkoZHN0LCBzb3VyY2UsIGJ5dGVzUGVyUm93KTsKKyNlbHNl
CisgICAgICAgIGNvbnN0IHVpbnQ4KiBzb3VyY2VIYW5kbGUgPSBzb3VyY2U7CisgICAgICAgIHVp
bnQ4KiBkZXN0aW5hdGlvbkhhbmRsZSA9IGRlc3RpbmF0aW9uOworICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHc7IHgrKykgeworICAgICAgICAJaWYgKHNvdXJjZUhhbmRsZVszXSA9PSAyNTUg
fHwgIXNvdXJjZUhhbmRsZVszXSkgeworICAgICAgICAJICAgIGRlc3RpbmF0aW9uSGFuZGxlWzBd
ID0gc291cmNlSGFuZGxlWzBdOworICAgICAgICAJICAgIGRlc3RpbmF0aW9uSGFuZGxlWzFdID0g
c291cmNlSGFuZGxlWzFdOworICAgICAgICAJICAgIGRlc3RpbmF0aW9uSGFuZGxlWzJdID0gc291
cmNlSGFuZGxlWzJdOworICAgICAgICAJICAgIGRlc3RpbmF0aW9uSGFuZGxlWzNdID0gc291cmNl
SGFuZGxlWzNdOworICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhh
bmRsZVswXSA9IHN0YXRpY19jYXN0PHVpbnQxNj4oc291cmNlSGFuZGxlWzBdKSAqIDI1NSAvIHNv
dXJjZUhhbmRsZVszXTsKKyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhhbmRsZVsxXSA9IHN0YXRp
Y19jYXN0PHVpbnQxNj4oc291cmNlSGFuZGxlWzFdKSAqIDI1NSAvIHNvdXJjZUhhbmRsZVszXTsK
KyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhhbmRsZVsyXSA9IHN0YXRpY19jYXN0PHVpbnQxNj4o
c291cmNlSGFuZGxlWzJdKSAqIDI1NSAvIHNvdXJjZUhhbmRsZVszXTsKKyAgICAgICAgCSAgICBk
ZXN0aW5hdGlvbkhhbmRsZVszXSA9IHNvdXJjZUhhbmRsZVszXTsKKyAgICAgICAgCX0KKyAgICAg
ICAgCWRlc3RpbmF0aW9uSGFuZGxlICs9IDQ7CisgICAgICAgIAlzb3VyY2VIYW5kbGUgKz0gNDsK
KyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlc3RpbmF0aW9uICs9IGJ5dGVzUGVyUm93Owor
ICAgICAgICBzb3VyY2UgKz0gYnl0ZXNQZXJSb3c7CisgICAgfQorCisgICAgcmV0dXJuIGJpdG1h
cC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48527</attachid>
            <date>2010-02-10 15:49:36 -0800</date>
            <delta_ts>2010-02-10 15:52:32 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects3.diff</filename>
            <type>text/plain</type>
            <size>11059</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICBVc2UgT3duUHRyIHdoZW4gY3JlYXRpbmcgdGhlIEJCaXRtYXAgdG8g
YXZvaWQgZnV0dXJlIGxlYWtzIHdpdGggZWFybHkgcmV0dXJucy4KKworICAgICAgICBDb252ZXJ0
IHRoZSBiaXRtYXAgZGF0YSB0byBub24gcHJlLW11bHRpcGxpZWQgdW50aWwgSGFpa3Ugc3VwcG9y
dHMgZHJhd2luZworICAgICAgICBwcmUtbXVsdGlwbGllZCBiaXRtYXBzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwOiBGaXhlZCBjb252ZXJz
aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IEZpeGVkIHBsYWNlbWVudCwgbm90
aWZ5IG9ic2VydmVycworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKTogSW1w
bGVtZW50ZWQgdXNpbmcgInBoYXNlIiB0byBmaXggc2Nyb2xsaW5nLCBub3RpZnkgb2JzZXJ2ZXJz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcDogRml4
ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0lt
YWdlRGVjb2RlckhhaWt1LmNwcDogRml4ZWQgY29udmVyc2lvbgorCiAyMDEwLTAyLTA2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3
LCByb2xsaW5nIG91dCByNTQzNjQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2
ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVw
aGFuIEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmxvYXRS
ZWN0OjpGbG9hdFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3Qu
TGVmdFRvcCgpKQotICAgICwgbV9zaXplKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSkKKyAg
ICAsIG1fc2l6ZShyZWN0LldpZHRoKCkgKyAxLCByZWN0LkhlaWdodCgpICsgMSkKIHsKIH0KIAog
RmxvYXRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJS
ZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCShyZXZpc2lvbiA1NDYyNikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhh
dXNtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZWEgQW56YW5p
IDxhbmRyZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFu
IEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtMzUsMTMgKzM2LDE0IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSA8QXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxCaXRtYXAuaD4KICNpbmNsdWRlIDxW
aWV3Lmg+CiAKLQogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQK
IFZlY3RvcjxjaGFyPiBsb2FkUmVzb3VyY2VJbnRvQXJyYXkoY29uc3QgY2hhciopOwogCkBAIC04
NSw2ICs4NywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiAv
LyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgaWYg
KCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTcGlu
IHRoZSBhbmltYXRpb24gdG8gdGhlIGNvcnJlY3QgZnJhbWUgYmVmb3JlIHdlIHRyeSB0byBkcmF3
IGl0LCBzbyB3ZQorICAgIC8vIGRvbid0IGRyYXcgYW4gb2xkIGZyYW1lIGFuZCB0aGVuIGltbWVk
aWF0ZWx5IG5lZWQgdG8gZHJhdyBhIG5ld2VyIG9uZSwKKyAgICAvLyBjYXVzaW5nIGZsaWNrZXIg
YW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKICAgICBCQml0bWFwKiBp
bWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMDUsNDIgKzExMyw3NiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgLy8gVGVzdCB1
c2luZyBleGFtcGxlIHNpdGUgYXQKICAgICAvLyBodHRwOi8vd3d3Lm1leWVyd2ViLmNvbS9lcmlj
L2Nzcy9lZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCiAgICAgY3R4dC0+cGxhdGZvcm1Db250
ZXh0KCktPlNldERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOwotICAgIGN0eHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBzcmNSZWN0ICYgaW1hZ2UtPkJvdW5kcygpLCBkc3RS
ZWN0KTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJhd0JpdG1hcEFzeW5jKGltYWdl
LCBzcmNSZWN0LCBkc3RSZWN0KTsKICAgICBjdHh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9
CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICAvLyBGSVhNRTog
ZmluaXNoIHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAoc3JjUG9pbnQpCi0g
ICAgc3RhcnRBbmltYXRpb24oKTsKLQogICAgIEJCaXRtYXAqIGltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+SXNWYWxpZCgpKSAv
LyBJZiB0aGUgaW1hZ2UgaGFzbid0IGZ1bGx5IGxvYWRlZC4KICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgY3VycmVudFcgPSAwOwotICAgIGZsb2F0IGN1cnJlbnRIID0gMDsKKyAgICAvLyBG
aWd1cmUgb3V0IGlmIHRoZSBpbWFnZSBoYXMgYW55IGFscGhhIHRyYW5zcGFyZW5jeSwgd2UgY2Fu
IHVzZSBmYXN0ZXIgZHJhd2luZyBpZiBub3QKKyAgICBib29sIGhhc0FscGhhID0gZmFsc2U7CisK
KyAgICB1aW50OCogYml0cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihpbWFnZS0+Qml0cygp
KTsKKyAgICB1aW50MzIgd2lkdGggPSBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlcldpZHRoKCkgKyAx
OworICAgIHVpbnQzMiBoZWlnaHQgPSBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlckhlaWdodCgpICsg
MTsKKworICAgIHVpbnQzMiBieXRlc1BlclJvdyA9IGltYWdlLT5CeXRlc1BlclJvdygpOworICAg
IGZvciAodWludDMyIHkgPSAwOyB5IDwgaGVpZ2h0ICYmICFoYXNBbHBoYTsgeSsrKSB7CisgICAg
ICAgIHVpbnQ4KiBwID0gYml0czsKKyAgICAgICAgZm9yICh1aW50MzIgeCA9IDA7IHggPCB3aWR0
aCAmJiAhaGFzQWxwaGE7IHgrKykgeworICAgICAgICAgICAgaGFzQWxwaGEgPSBwWzNdIDwgMjU1
OworICAgICAgICAgICAgcCArPSA0OworICAgICAgICB9CisgICAgICAgIGJpdHMgKz0gYnl0ZXNQ
ZXJSb3c7CisgICAgfQogCiAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgIGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5TZXREcmF3aW5nTW9kZShCX09QX0FMUEhBKTsKKyAgICBpZiAoaGFzQWxw
aGEpCisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5TZXREcmF3aW5nTW9kZShC
X09QX0FMUEhBKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5TZXREcmF3aW5nTW9kZShCX09QX0NPUFkpOwogICAgIGNvbnRleHQtPmNsaXAoZW5jbG9zaW5n
SW50UmVjdChkc3RSZWN0KSk7Ci0KLSAgICB3aGlsZSAoY3VycmVudFcgPCBkc3RSZWN0LndpZHRo
KCkpIHsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnRIIDwgZHN0UmVjdC5oZWlnaHQoKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRtYXAoaW1hZ2UsIEJQ
b2ludChkc3RSZWN0LngoKSArIGN1cnJlbnRXLCBkc3RSZWN0LnkoKSArIGN1cnJlbnRIKSk7Ci0g
ICAgICAgICAgICBjdXJyZW50SCArPSB0aWxlUmVjdC5oZWlnaHQoKTsKKyAgICBmbG9hdCBjdXJy
ZW50VyA9IHBoYXNlLngoKTsKKyAgICBCUmVjdCBiVGlsZVJlY3QodGlsZVJlY3QpOworICAgIHdo
aWxlIChjdXJyZW50VyA8IGRzdFJlY3QueCgpICsgZHN0UmVjdC53aWR0aCgpKSB7CisgICAgICAg
IGZsb2F0IGN1cnJlbnRIID0gcGhhc2UueSgpOworICAgICAgICB3aGlsZSAoY3VycmVudEggPCBk
c3RSZWN0LnkoKSArIGRzdFJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIEJSZWN0IGJEc3RS
ZWN0KGN1cnJlbnRXLCBjdXJyZW50SCwgY3VycmVudFcgKyB3aWR0aCAtIDEsIGN1cnJlbnRIICsg
aGVpZ2h0IC0gMSk7CisgICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJh
d0JpdG1hcEFzeW5jKGltYWdlLCBiVGlsZVJlY3QsIGJEc3RSZWN0KTsKKyAgICAgICAgICAgIGN1
cnJlbnRIICs9IGhlaWdodDsKICAgICAgICAgfQotICAgICAgICBjdXJyZW50VyArPSB0aWxlUmVj
dC53aWR0aCgpOwotICAgICAgICBjdXJyZW50SCA9IDA7CisgICAgICAgIGN1cnJlbnRXICs9IHdp
ZHRoOwogICAgIH0KICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKIHZv
aWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiB7Ci0gICAgLy8gRklYTUU6IG5l
ZWQgdG8gY2hlY2sgdGhlIFJHQkEzMiBidWZmZXIgdG8gc2VlIGlmIGl0IGlzIDF4MS4KICAgICBt
X2lzU29saWRDb2xvciA9IGZhbHNlOwogICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVl
OworCisgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEJC
aXRtYXAqIGltYWdlID0gZ2V0QkJpdG1hcCgpOworICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5C
b3VuZHMoKS5Jc1ZhbGlkKCkKKyAgICAgICAgfHwgaW1hZ2UtPkJvdW5kcygpLkludGVnZXJXaWR0
aCgpID4gMCB8fCBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlckhlaWdodCgpID4gMCkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworICAgIHVpbnQ4
KiBiaXRzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGltYWdlLT5CaXRzKCkpOworICAgIG1f
c29saWRDb2xvciA9IENvbG9yKGJpdHNbMl0sIGJpdHNbMV0sIGJpdHNbMF0sIGJpdHNbM10pOwog
fQogCiBCQml0bWFwKiBCaXRtYXBJbWFnZTo6Z2V0QkJpdG1hcCgpIGNvbnN0CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ludFJlY3RIYWlrdS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCShyZXZp
c2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhh
aWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSW50UmVjdDo6SW50UmVjdChjb25zdCBCUmVjdCYgcmVjdCkKICAgICA6IG1fbG9j
YXRpb24ocmVjdC5MZWZ0VG9wKCkpCi0gICAgLCBtX3NpemUocmVjdC5JbnRlZ2VyV2lkdGgoKSwg
cmVjdC5JbnRlZ2VySGVpZ2h0KCkpCisgICAgLCBtX3NpemUocmVjdC5JbnRlZ2VyV2lkdGgoKSAr
IDEsIHJlY3QuSW50ZWdlckhlaWdodCgpICsgMSkKIHsKIH0KIAogSW50UmVjdDo6b3BlcmF0b3Ig
QlJlY3QoKSBjb25zdAogewotICAgIHJldHVybiBCUmVjdChCUG9pbnQoeCgpLCB5KCkpLCBCU2l6
ZSh3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgIHJldHVybiBCUmVjdChCUG9pbnQoeCgpLCB5KCkp
LCBCU2l6ZSh3aWR0aCgpIC0gMSwgaGVpZ2h0KCkgLSAxKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaGFpa3UvSW1h
Z2VEZWNvZGVySGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3UuY3BwCShyZXZpc2lvbiA1NDQ2NikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBTdGVwaGFuIEHDn211cywgPHN1cGVyc3RpcHBpQGdteC5kZT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOSArMzMsNDEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdAogewotICAgIEJCaXRtYXAqIGJtcCA9IG5ldyBCQml0bWFwKEJSZWN0KDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpKSwgQl9SR0IzMik7Ci0gICAgYm1wLT5TZXRCaXRzKG1fYnl0ZXMuZGF0
YSgpLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSwgMCwgQl9SR0IzMik7Ci0gICAg
cmV0dXJuIGJtcDsKKyAgICBpbnQgYnl0ZXNQZXJSb3cgPSB3aWR0aCgpICogc2l6ZW9mKFBpeGVs
RGF0YSk7CisgICAgT3duUHRyPEJCaXRtYXA+IGJpdG1hcChuZXcgQkJpdG1hcChCUmVjdCgwLCAw
LCB3aWR0aCgpIC0gMSwgaGVpZ2h0KCkgLSAxKSwgMCwgQl9SR0JBMzIsIGJ5dGVzUGVyUm93KSk7
CisKKyAgICBjb25zdCB1aW50OCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OCo+KG1fYnl0ZXMuZGF0YSgpKTsKKyAgICB1aW50OCogZGVzdGluYXRpb24gPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4Kj4oYml0bWFwLT5CaXRzKCkpOworICAgIGludCBoID0gaGVpZ2h0KCk7Cisg
ICAgaW50IHcgPSB3aWR0aCgpOworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Cisj
aWYgMAorLy8gRklYTUU6IEVuYWJsZSB0aGlzIGNvbnZlcnNpb24gb25jZSBIYWlrdSBoYXMgQl9S
R0JBMzJQW3JlbXVsdGlwbGllZF0uLi4KKyAgICAgICAgbWVtY3B5KGRzdCwgc291cmNlLCBieXRl
c1BlclJvdyk7CisjZWxzZQorICAgICAgICBjb25zdCB1aW50OCogc291cmNlSGFuZGxlID0gc291
cmNlOworICAgICAgICB1aW50OCogZGVzdGluYXRpb25IYW5kbGUgPSBkZXN0aW5hdGlvbjsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4KyspIHsKKyAgICAgICAgCWlmIChzb3VyY2VI
YW5kbGVbM10gPT0gMjU1IHx8ICFzb3VyY2VIYW5kbGVbM10pIHsKKyAgICAgICAgCSAgICBkZXN0
aW5hdGlvbkhhbmRsZVswXSA9IHNvdXJjZUhhbmRsZVswXTsKKyAgICAgICAgCSAgICBkZXN0aW5h
dGlvbkhhbmRsZVsxXSA9IHNvdXJjZUhhbmRsZVsxXTsKKyAgICAgICAgCSAgICBkZXN0aW5hdGlv
bkhhbmRsZVsyXSA9IHNvdXJjZUhhbmRsZVsyXTsKKyAgICAgICAgCSAgICBkZXN0aW5hdGlvbkhh
bmRsZVszXSA9IHNvdXJjZUhhbmRsZVszXTsKKyAgICAgICAgCX0gZWxzZSB7CisgICAgICAgIAkg
ICAgZGVzdGluYXRpb25IYW5kbGVbMF0gPSBzdGF0aWNfY2FzdDx1aW50MTY+KHNvdXJjZUhhbmRs
ZVswXSkgKiAyNTUgLyBzb3VyY2VIYW5kbGVbM107CisgICAgICAgIAkgICAgZGVzdGluYXRpb25I
YW5kbGVbMV0gPSBzdGF0aWNfY2FzdDx1aW50MTY+KHNvdXJjZUhhbmRsZVsxXSkgKiAyNTUgLyBz
b3VyY2VIYW5kbGVbM107CisgICAgICAgIAkgICAgZGVzdGluYXRpb25IYW5kbGVbMl0gPSBzdGF0
aWNfY2FzdDx1aW50MTY+KHNvdXJjZUhhbmRsZVsyXSkgKiAyNTUgLyBzb3VyY2VIYW5kbGVbM107
CisgICAgICAgIAkgICAgZGVzdGluYXRpb25IYW5kbGVbM10gPSBzb3VyY2VIYW5kbGVbM107Cisg
ICAgICAgIAl9CisgICAgICAgIAlkZXN0aW5hdGlvbkhhbmRsZSArPSA0OworICAgICAgICAJc291
cmNlSGFuZGxlICs9IDQ7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZXN0aW5hdGlvbiAr
PSBieXRlc1BlclJvdzsKKyAgICAgICAgc291cmNlICs9IGJ5dGVzUGVyUm93OworICAgIH0KKwor
ICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48528</attachid>
            <date>2010-02-10 15:52:32 -0800</date>
            <delta_ts>2010-02-10 18:47:04 -0800</delta_ts>
            <desc>Fixes to the rect conversions and image rendering on Haiku</desc>
            <filename>rects3.diff</filename>
            <type>text/plain</type>
            <size>11098</size>
            <attacher name="Stephan Aßmus">superstippi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDItMDMgIFN0ZXBoYW4gQcOfbXVzICA8c3VwZXJzdGlwcGlA
Z214LmRlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVzIHRvIHJlY3QgY29udmVyc2lvbiBhbmQgaW1hZ2UgcmVuZGVyaW5nIG9uIEhhaWt1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY4NAorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMg
dG8gdGhlIHJlY3QgY29udmVyc2lvbnMgYXJlIGluZGVlZCBjb3JyZWN0LiBJbiBIYWlrdSAodG8g
c3RheQorICAgICAgICBjb21wYXRpYmx5IHdpdGggQmVPUyksIGEgQlJlY3Qgc3BlY2lmaWVzIHRo
ZSBsZWZ0L3RvcCBhbmQgYm90dG9tL3JpZ2h0IHBpeGVsCisgICAgICAgICppbmRpY2VzKiwgZXZl
biB0aG91Z2ggdGhlIHZhbHVlcyBhcmUgZmxvYXRpbmcgcG9pbnQuIFNvIGEgcmVjdGFuZ2xlIGNv
dmVyaW5nCisgICAgICAgIGp1c3Qgb25lIHBpeGVsIHdvdWxkIGJlIHNwZWNpZmllZCBhcyBCUmVj
dCgwLCAwLCAwLCAwKS4gSW4gV2ViQ29yZSBhbmQgb3RoZXIKKyAgICAgICAgZnJhbWUgd29ya3Ms
IHN1Y2ggcmVjdGFuZ2xlcyB3b3VsZCBiZSBleHByZXNzZWQgYXMgMCwgMCwgMSwgMS4gSW4gV2Vi
Q29yZSwgdGhlCisgICAgICAgIHdpZHRoIGFuZCBoZWlnaHQgb2YgcmVjdGFuZ2xlcyByZWZlciB0
byB0aGUgZGlzdGFuY2UgYmV0d2VlbiBwaXhlbHMsIHdoaWxlIG9uCisgICAgICAgIEhhaWt1LCBh
IG9uZSBwaXhlbCByZWN0IGhhcyBpbmRlZWQgYSB3aWR0aCBhbmQgaGVpZ2h0IG9mIDAsIGFzIGNv
bmZ1c2luZyBhcworICAgICAgICB0aGF0IG1heSBiZS4KKworICAgICAgICBUaGUgcGFydCBvZiB0
aGUgcGF0Y2ggdGhhdCBhZmZlY3RzCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VIYWlrdS5jcHAgYWxzbyBpbXBsZW1lbnRzIHRoZSBkcmF3aW5nCisgICAgICAg
IG1ldGhvZHMgbW9yZSBjb3JyZWN0bHkuIEltYWdlIG9ic2VydmVycyBhcmUgbm90aWZpZWQsIGFu
ZCBwYXR0ZXJuIGRyYXdpbmcgdGFrZXMKKyAgICAgICAgdGhlICJwaGFzZSIgaW50byBhY2NvdW50
IHdoaWNoIG1ha2VzIHNjcm9sbGVkIGJhY2tncm91bmRzIHJlbmRlciBjb3JyZWN0bHkuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9ucyBhcmUgc3RpbGwgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhlIEhh
aWt1IGRyYXdpbmcgYmFja2VuZCBpdHNlbGYKKyAgICAgICAgZG9lcyBub3QgeWV0IHN1cHBvcnQg
dGhlbS4KKworICAgICAgICBVc2UgT3duUHRyIHdoZW4gY3JlYXRpbmcgdGhlIEJCaXRtYXAgdG8g
YXZvaWQgZnV0dXJlIGxlYWtzIHdpdGggZWFybHkgcmV0dXJucy4KKworICAgICAgICBDb252ZXJ0
IHRoZSBiaXRtYXAgZGF0YSB0byBub24gcHJlLW11bHRpcGxpZWQgdW50aWwgSGFpa3Ugc3VwcG9y
dHMgZHJhd2luZworICAgICAgICBwcmUtbXVsdGlwbGllZCBiaXRtYXBzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRmxvYXRSZWN0SGFpa3UuY3BwOiBGaXhlZCBjb252ZXJz
aW9uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IEZpeGVkIHBsYWNlbWVudCwgbm90
aWZ5IG9ic2VydmVycworICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKTogSW1w
bGVtZW50ZWQgdXNpbmcgInBoYXNlIiB0byBmaXggc2Nyb2xsaW5nLCBub3RpZnkgb2JzZXJ2ZXJz
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhhaWt1LmNwcDogRml4
ZWQgY29udmVyc2lvbgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0lt
YWdlRGVjb2RlckhhaWt1LmNwcDogRml4ZWQgY29udmVyc2lvbgorCiAyMDEwLTAyLTA2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3
LCByb2xsaW5nIG91dCByNTQzNjQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkocmV2aXNpb24gNTQ0NjYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0Zsb2F0UmVjdEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2
ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVw
aGFuIEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmxvYXRS
ZWN0OjpGbG9hdFJlY3QoY29uc3QgQlJlY3QmIHJlY3QpCiAgICAgOiBtX2xvY2F0aW9uKHJlY3Qu
TGVmdFRvcCgpKQotICAgICwgbV9zaXplKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSkKKyAg
ICAsIG1fc2l6ZShyZWN0LldpZHRoKCkgKyAxLCByZWN0LkhlaWdodCgpICsgMSkKIHsKIH0KIAog
RmxvYXRSZWN0OjpvcGVyYXRvciBCUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEJSZWN0KEJQ
b2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgcmV0dXJuIEJS
ZWN0KEJQb2ludCh4KCksIHkoKSksIEJTaXplKHdpZHRoKCkgLSAxLCBoZWlnaHQoKSAtIDEpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCShyZXZpc2lvbiA1NDYyNikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhh
dXNtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbmRyZWEgQW56YW5p
IDxhbmRyZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTdGVwaGFu
IEHDn211cyA8c3VwZXJzdGlwcGlAZ214LmRlPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtMzUsMTMgKzM2LDE0IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSA8QXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxCaXRtYXAuaD4KICNpbmNsdWRlIDxW
aWV3Lmg+CiAKLQogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQK
IFZlY3RvcjxjaGFyPiBsb2FkUmVzb3VyY2VJbnRvQXJyYXkoY29uc3QgY2hhciopOwogCkBAIC04
NSw2ICs4NywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiAv
LyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CisgICAgaWYg
KCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTcGlu
IHRoZSBhbmltYXRpb24gdG8gdGhlIGNvcnJlY3QgZnJhbWUgYmVmb3JlIHdlIHRyeSB0byBkcmF3
IGl0LCBzbyB3ZQorICAgIC8vIGRvbid0IGRyYXcgYW4gb2xkIGZyYW1lIGFuZCB0aGVuIGltbWVk
aWF0ZWx5IG5lZWQgdG8gZHJhdyBhIG5ld2VyIG9uZSwKKyAgICAvLyBjYXVzaW5nIGZsaWNrZXIg
YW5kIHdhc3RpbmcgQ1BVLgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKICAgICBCQml0bWFwKiBp
bWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMDUsNDIgKzExMyw3NiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgLy8gVGVzdCB1
c2luZyBleGFtcGxlIHNpdGUgYXQKICAgICAvLyBodHRwOi8vd3d3Lm1leWVyd2ViLmNvbS9lcmlj
L2Nzcy9lZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCiAgICAgY3R4dC0+cGxhdGZvcm1Db250
ZXh0KCktPlNldERyYXdpbmdNb2RlKEJfT1BfQUxQSEEpOwotICAgIGN0eHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5EcmF3Qml0bWFwKGltYWdlLCBzcmNSZWN0ICYgaW1hZ2UtPkJvdW5kcygpLCBkc3RS
ZWN0KTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJhd0JpdG1hcEFzeW5jKGltYWdl
LCBzcmNSZWN0LCBkc3RSZWN0KTsKICAgICBjdHh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9
CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICAvLyBGSVhNRTog
ZmluaXNoIHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAoc3JjUG9pbnQpCi0g
ICAgc3RhcnRBbmltYXRpb24oKTsKLQogICAgIEJCaXRtYXAqIGltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+SXNWYWxpZCgpKSAv
LyBJZiB0aGUgaW1hZ2UgaGFzbid0IGZ1bGx5IGxvYWRlZC4KICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgY3VycmVudFcgPSAwOwotICAgIGZsb2F0IGN1cnJlbnRIID0gMDsKKyAgICAvLyBG
aWd1cmUgb3V0IGlmIHRoZSBpbWFnZSBoYXMgYW55IGFscGhhIHRyYW5zcGFyZW5jeSwgd2UgY2Fu
IHVzZSBmYXN0ZXIgZHJhd2luZyBpZiBub3QKKyAgICBib29sIGhhc0FscGhhID0gZmFsc2U7CisK
KyAgICB1aW50OCogYml0cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDgqPihpbWFnZS0+Qml0cygp
KTsKKyAgICB1aW50MzIgd2lkdGggPSBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlcldpZHRoKCkgKyAx
OworICAgIHVpbnQzMiBoZWlnaHQgPSBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlckhlaWdodCgpICsg
MTsKKworICAgIHVpbnQzMiBieXRlc1BlclJvdyA9IGltYWdlLT5CeXRlc1BlclJvdygpOworICAg
IGZvciAodWludDMyIHkgPSAwOyB5IDwgaGVpZ2h0ICYmICFoYXNBbHBoYTsgeSsrKSB7CisgICAg
ICAgIHVpbnQ4KiBwID0gYml0czsKKyAgICAgICAgZm9yICh1aW50MzIgeCA9IDA7IHggPCB3aWR0
aCAmJiAhaGFzQWxwaGE7IHgrKykgeworICAgICAgICAgICAgaGFzQWxwaGEgPSBwWzNdIDwgMjU1
OworICAgICAgICAgICAgcCArPSA0OworICAgICAgICB9CisgICAgICAgIGJpdHMgKz0gYnl0ZXNQ
ZXJSb3c7CisgICAgfQogCiAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgIGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5TZXREcmF3aW5nTW9kZShCX09QX0FMUEhBKTsKKyAgICBpZiAoaGFzQWxw
aGEpCisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5TZXREcmF3aW5nTW9kZShC
X09QX0FMUEhBKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5TZXREcmF3aW5nTW9kZShCX09QX0NPUFkpOwogICAgIGNvbnRleHQtPmNsaXAoZW5jbG9zaW5n
SW50UmVjdChkc3RSZWN0KSk7Ci0KLSAgICB3aGlsZSAoY3VycmVudFcgPCBkc3RSZWN0LndpZHRo
KCkpIHsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnRIIDwgZHN0UmVjdC5oZWlnaHQoKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPkRyYXdCaXRtYXAoaW1hZ2UsIEJQ
b2ludChkc3RSZWN0LngoKSArIGN1cnJlbnRXLCBkc3RSZWN0LnkoKSArIGN1cnJlbnRIKSk7Ci0g
ICAgICAgICAgICBjdXJyZW50SCArPSB0aWxlUmVjdC5oZWlnaHQoKTsKKyAgICBmbG9hdCBjdXJy
ZW50VyA9IHBoYXNlLngoKTsKKyAgICBCUmVjdCBiVGlsZVJlY3QodGlsZVJlY3QpOworICAgIHdo
aWxlIChjdXJyZW50VyA8IGRzdFJlY3QueCgpICsgZHN0UmVjdC53aWR0aCgpKSB7CisgICAgICAg
IGZsb2F0IGN1cnJlbnRIID0gcGhhc2UueSgpOworICAgICAgICB3aGlsZSAoY3VycmVudEggPCBk
c3RSZWN0LnkoKSArIGRzdFJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIEJSZWN0IGJEc3RS
ZWN0KGN1cnJlbnRXLCBjdXJyZW50SCwgY3VycmVudFcgKyB3aWR0aCAtIDEsIGN1cnJlbnRIICsg
aGVpZ2h0IC0gMSk7CisgICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+RHJh
d0JpdG1hcEFzeW5jKGltYWdlLCBiVGlsZVJlY3QsIGJEc3RSZWN0KTsKKyAgICAgICAgICAgIGN1
cnJlbnRIICs9IGhlaWdodDsKICAgICAgICAgfQotICAgICAgICBjdXJyZW50VyArPSB0aWxlUmVj
dC53aWR0aCgpOwotICAgICAgICBjdXJyZW50SCA9IDA7CisgICAgICAgIGN1cnJlbnRXICs9IHdp
ZHRoOwogICAgIH0KICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKIHZv
aWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiB7Ci0gICAgLy8gRklYTUU6IG5l
ZWQgdG8gY2hlY2sgdGhlIFJHQkEzMiBidWZmZXIgdG8gc2VlIGlmIGl0IGlzIDF4MS4KICAgICBt
X2lzU29saWRDb2xvciA9IGZhbHNlOwogICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVl
OworCisgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEJC
aXRtYXAqIGltYWdlID0gZ2V0QkJpdG1hcCgpOworICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5C
b3VuZHMoKS5Jc1ZhbGlkKCkKKyAgICAgICAgfHwgaW1hZ2UtPkJvdW5kcygpLkludGVnZXJXaWR0
aCgpID4gMCB8fCBpbWFnZS0+Qm91bmRzKCkuSW50ZWdlckhlaWdodCgpID4gMCkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworICAgIHVpbnQ4
KiBiaXRzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OCo+KGltYWdlLT5CaXRzKCkpOworICAgIG1f
c29saWRDb2xvciA9IENvbG9yKGJpdHNbMl0sIGJpdHNbMV0sIGJpdHNbMF0sIGJpdHNbM10pOwog
fQogCiBCQml0bWFwKiBCaXRtYXBJbWFnZTo6Z2V0QkJpdG1hcCgpIGNvbnN0CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ludFJlY3RIYWlrdS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbnRSZWN0SGFpa3UuY3BwCShyZXZp
c2lvbiA1NDQ2NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW50UmVjdEhh
aWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSW50UmVjdDo6SW50UmVjdChjb25zdCBCUmVjdCYgcmVjdCkKICAgICA6IG1fbG9j
YXRpb24ocmVjdC5MZWZ0VG9wKCkpCi0gICAgLCBtX3NpemUocmVjdC5JbnRlZ2VyV2lkdGgoKSwg
cmVjdC5JbnRlZ2VySGVpZ2h0KCkpCisgICAgLCBtX3NpemUocmVjdC5JbnRlZ2VyV2lkdGgoKSAr
IDEsIHJlY3QuSW50ZWdlckhlaWdodCgpICsgMSkKIHsKIH0KIAogSW50UmVjdDo6b3BlcmF0b3Ig
QlJlY3QoKSBjb25zdAogewotICAgIHJldHVybiBCUmVjdChCUG9pbnQoeCgpLCB5KCkpLCBCU2l6
ZSh3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgIHJldHVybiBCUmVjdChCUG9pbnQoeCgpLCB5KCkp
LCBCU2l6ZSh3aWR0aCgpIC0gMSwgaGVpZ2h0KCkgLSAxKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaGFpa3UvSW1h
Z2VEZWNvZGVySGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3UuY3BwCShyZXZpc2lvbiA1NDQ2NikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBTdGVwaGFuIEHDn211cywgPHN1cGVyc3RpcHBpQGdteC5kZT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOSArMzMsNDEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdAogewotICAgIEJCaXRtYXAqIGJtcCA9IG5ldyBCQml0bWFwKEJSZWN0KDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpKSwgQl9SR0IzMik7Ci0gICAgYm1wLT5TZXRCaXRzKG1fYnl0ZXMuZGF0
YSgpLCBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSwgMCwgQl9SR0IzMik7Ci0gICAg
cmV0dXJuIGJtcDsKKyAgICBpbnQgYnl0ZXNQZXJSb3cgPSB3aWR0aCgpICogc2l6ZW9mKFBpeGVs
RGF0YSk7CisgICAgT3duUHRyPEJCaXRtYXA+IGJpdG1hcChuZXcgQkJpdG1hcChCUmVjdCgwLCAw
LCB3aWR0aCgpIC0gMSwgaGVpZ2h0KCkgLSAxKSwgMCwgQl9SR0JBMzIsIGJ5dGVzUGVyUm93KSk7
CisKKyAgICBjb25zdCB1aW50OCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OCo+KG1fYnl0ZXMuZGF0YSgpKTsKKyAgICB1aW50OCogZGVzdGluYXRpb24gPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4Kj4oYml0bWFwLT5CaXRzKCkpOworICAgIGludCBoID0gaGVpZ2h0KCk7Cisg
ICAgaW50IHcgPSB3aWR0aCgpOworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Cisj
aWYgMAorLy8gRklYTUU6IEVuYWJsZSB0aGlzIGNvbnZlcnNpb24gb25jZSBIYWlrdSBoYXMgQl9S
R0JBMzJQW3JlbXVsdGlwbGllZF0uLi4KKyAgICAgICAgbWVtY3B5KGRzdCwgc291cmNlLCBieXRl
c1BlclJvdyk7CisjZWxzZQorICAgICAgICBjb25zdCB1aW50OCogc291cmNlSGFuZGxlID0gc291
cmNlOworICAgICAgICB1aW50OCogZGVzdGluYXRpb25IYW5kbGUgPSBkZXN0aW5hdGlvbjsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4KyspIHsKKyAgICAgICAgICAgIGlmIChzb3Vy
Y2VIYW5kbGVbM10gPT0gMjU1IHx8ICFzb3VyY2VIYW5kbGVbM10pIHsKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkhhbmRsZVswXSA9IHNvdXJjZUhhbmRsZVswXTsKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkhhbmRsZVsxXSA9IHNvdXJjZUhhbmRsZVsxXTsKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkhhbmRsZVsyXSA9IHNvdXJjZUhhbmRsZVsyXTsKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkhhbmRsZVszXSA9IHNvdXJjZUhhbmRsZVszXTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25IYW5kbGVbMF0gPSBzdGF0aWNfY2Fz
dDx1aW50MTY+KHNvdXJjZUhhbmRsZVswXSkgKiAyNTUgLyBzb3VyY2VIYW5kbGVbM107CisgICAg
ICAgICAgICAgICAgZGVzdGluYXRpb25IYW5kbGVbMV0gPSBzdGF0aWNfY2FzdDx1aW50MTY+KHNv
dXJjZUhhbmRsZVsxXSkgKiAyNTUgLyBzb3VyY2VIYW5kbGVbM107CisgICAgICAgICAgICAgICAg
ZGVzdGluYXRpb25IYW5kbGVbMl0gPSBzdGF0aWNfY2FzdDx1aW50MTY+KHNvdXJjZUhhbmRsZVsy
XSkgKiAyNTUgLyBzb3VyY2VIYW5kbGVbM107CisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25I
YW5kbGVbM10gPSBzb3VyY2VIYW5kbGVbM107CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
ZXN0aW5hdGlvbkhhbmRsZSArPSA0OworICAgICAgICAgICAgc291cmNlSGFuZGxlICs9IDQ7Cisg
ICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZXN0aW5hdGlvbiArPSBieXRlc1BlclJvdzsKKyAg
ICAgICAgc291cmNlICs9IGJ5dGVzUGVyUm93OworICAgIH0KKworICAgIHJldHVybiBiaXRtYXAu
cmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>