<?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>51869</bug_id>
          
          <creation_ts>2011-01-04 02:50:05 -0800</creation_ts>
          <short_desc>Shadows are not drawn when filling a rect with a gradient fillStyle on Mac and Chromium-Mac</short_desc>
          <delta_ts>2011-01-18 01:42:45 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52531</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Helder Correia">helder</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328937</commentid>
    <comment_count>0</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-04 02:50:05 -0800</bug_when>
    <thetext>In CG, a gradient doesn&apos;t count as a fill. First, we must fill a rect with a shadow set, then draw the gradient over the fill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328939</commentid>
    <comment_count>1</comment_count>
      <attachid>77875</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-04 02:56:13 -0800</bug_when>
    <thetext>Created attachment 77875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328940</commentid>
    <comment_count>2</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-04 02:57:47 -0800</bug_when>
    <thetext>This is my very first contact with CG. Please let me know if the fix is not the most correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329004</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-04 08:34:38 -0800</bug_when>
    <thetext>Does this work if some of the gradient stops have alpha?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329011</commentid>
    <comment_count>4</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-04 09:16:57 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Does this work if some of the gradient stops have alpha?

Right. Apparently, the shadow is still there but remains solid, which I believe is not the right behavior (at least compared to what we do in Qt). Any pointers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329056</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-04 10:35:34 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Does this work if some of the gradient stops have alpha?
&gt; 
&gt; Right. Apparently, the shadow is still there but remains solid, which I believe is not the right behavior (at least compared to what we do in Qt). Any pointers?

The canvas spec implies that the opacity of the shadow should follow the alpha of the content being drawn.

In my testing, CG does this just fine. Can you attach a testcase that shows the failure?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329114</commentid>
    <comment_count>6</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-04 12:05:34 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; The canvas spec implies that the opacity of the shadow should follow the alpha of the content being drawn. In my testing, CG does this just fine. Can you attach a testcase that shows the failure?

Go to http://ie.microsoft.com/testdrive/Graphics/CanvasPad/ and click on shadows. Then replace all the code with:

ctx.shadowOffsetX = 40;  
ctx.shadowOffsetY = 40; 
ctx.shadowBlur = 10;  
ctx.shadowColor = &quot;rgba(255, 0, 0, 0.5)&quot;;

var gradient = ctx.createLinearGradient(0, 0, 250, 0);
gradient.addColorStop(0, &apos;rgba(0, 0, 200, 0.3)&apos;);
gradient.addColorStop(1, &apos;rgba(200, 200, 200, 0.9)&apos;);

ctx.fillStyle = gradient;
ctx.shadowColor = &quot;rgba(255, 0, 0, 1)&quot;;
ctx.fillRect(0, 0, 340, 200);

Finally click to preview. Without the patch, no shadow is shown. With the patch, the shadow does not follow the gradient&apos;s alpha. Same happens with the test included in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329164</commentid>
    <comment_count>7</comment_count>
      <attachid>77923</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-04 13:18:49 -0800</bug_when>
    <thetext>Created attachment 77923
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329178</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-04 13:36:05 -0800</bug_when>
    <thetext>The real issue is that GraphicsContext::fillRect(const FloatRect&amp; rect) is clipping to the rect. So the shadow is being drawn, it&apos;s just getting clipped to the rect being filled (you can see this if you remove the shadow; the gradient looks lighter).

So you may have to draw the gradient into a transparency layer (clipped), and then render that (unclipped).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329470</commentid>
    <comment_count>9</comment_count>
      <attachid>77980</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-05 00:53:44 -0800</bug_when>
    <thetext>Created attachment 77980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329473</commentid>
    <comment_count>10</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-05 01:01:49 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; The real issue is that GraphicsContext::fillRect(const FloatRect&amp; rect) is clipping to the rect.

Indeed. Patch 77980 seems to fix that. I&apos;m not sure if the addition of Gradient::paint(CGContextRef) is the best way to go, but ATM seems like the most convenient to me.

&gt; So you may have to draw the gradient into a transparency layer (clipped), and then render that (unclipped).

I can&apos;t seem to clip the layer. If I add CGContextClipToRect(layerContext, rect) after the creation of the layer, the top box will be slightly translated in both axis. I guess I&apos;m missing something possibly obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329479</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-05 01:22:48 -0800</bug_when>
    <thetext>Attachment 77980 did not build on win:
Build output: http://queues.webkit.org/results/7324387</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329580</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-05 08:40:46 -0800</bug_when>
    <thetext>(In reply to comment #10)

This patch looks close.

&gt; I can&apos;t seem to clip the layer. If I add CGContextClipToRect(layerContext, rect) after the creation of the layer, the top box will be slightly translated in both axis. I guess I&apos;m missing something possibly obvious.

I&apos;d expect the layer to clip for you.

You should also do a test here where the context has been transformed (e.g. rotated) before the drawing of the gradient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329891</commentid>
    <comment_count>13</comment_count>
      <attachid>78073</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-05 17:07:30 -0800</bug_when>
    <thetext>Created attachment 78073
Extra test step for rotation; fix Win build (hopefully)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329917</commentid>
    <comment_count>14</comment_count>
      <attachid>78073</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-05 17:22:29 -0800</bug_when>
    <thetext>Comment on attachment 78073
Extra test step for rotation; fix Win build (hopefully)

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

Does this patch alter any of the canvas/ test results?

&gt; WebCore/ChangeLog:10
&gt; +        The solution is to draw the gradient into a transparency layer,

Strictly speaking, a transparency layer is something else. This is just a CGLayer.

&gt; WebCore/platform/graphics/cg/GraphicsContextCG.cpp:608
&gt; -        CGContextSaveGState(context);
&gt; -        CGContextClipToRect(context, rect);
&gt; +        CGLayerRef layer = CGLayerCreateWithContext(context, CGSizeMake(rect.width(), rect.height()), 0);
&gt; +        CGContextRef layerContext = CGLayerGetContext(layer);
&gt; +        m_state.fillGradient-&gt;paint(layerContext);
&gt;          CGContextConcatCTM(context, m_state.fillGradient-&gt;gradientSpaceTransform());
&gt; -        m_state.fillGradient-&gt;paint(this);
&gt; -        CGContextRestoreGState(context);
&gt; +        CGContextDrawLayerAtPoint(context, CGPointMake(rect.left(), rect.top()), layer);
&gt; +        CGLayerRelease(layer);

You should only create the CGLayerRef if you know it should render with a shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329981</commentid>
    <comment_count>15</comment_count>
      <attachid>78088</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-05 19:26:13 -0800</bug_when>
    <thetext>Created attachment 78088
No layer if no shadow required; update new test expected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329982</commentid>
    <comment_count>16</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-05 19:28:53 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Does this patch alter any of the canvas/ test results?

Only the three Philip tests that it solves :)

&gt; You should only create the CGLayerRef if you know it should render with a shadow.

Of course, added in patch 78088.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330029</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-05 22:08:26 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 78088:

http/tests/xmlhttprequest/cookies.html bug 51976 (authors: ap@webkit.org and eric@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330030</commentid>
    <comment_count>18</comment_count>
      <attachid>78088</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-05 22:11:20 -0800</bug_when>
    <thetext>Comment on attachment 78088
No layer if no shadow required; update new test expected

Clearing flags on attachment: 78088

Committed r75139: &lt;http://trac.webkit.org/changeset/75139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330031</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-05 22:11:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330071</commentid>
    <comment_count>20</comment_count>
      <attachid>78088</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-06 02:54:07 -0800</bug_when>
    <thetext>Comment on attachment 78088
No layer if no shadow required; update new test expected

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

&gt; WebCore/platform/graphics/Gradient.h:40
&gt; +#if PLATFORM(WIN)
&gt; +#include &lt;CoreGraphics/CoreGraphics.h&gt;
&gt; +#endif

Why is this PLATFORM(WIN) and not PLATFOMR(CG)?

FYI: This broke WinCE: http://build.webkit.org/builders/WinCE%20Release%20%28Build%29/builds/169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330271</commentid>
    <comment_count>21</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-06 11:58:33 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Why is this PLATFORM(WIN) and not PLATFOMR(CG)? FYI: This broke WinCE: 

Sorry for that. IIUC, you&apos;ve already fixed it, thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335031</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-16 03:01:20 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Why is this PLATFORM(WIN) and not PLATFOMR(CG)? FYI: This broke WinCE: 
&gt; 
&gt; Sorry for that. IIUC, you&apos;ve already fixed it, thank you.

Causes a regression with SVG texts and gradients. See bug 52531.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335033</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-16 03:12:55 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; Why is this PLATFORM(WIN) and not PLATFOMR(CG)? FYI: This broke WinCE: 
&gt; &gt; 
&gt; &gt; Sorry for that. IIUC, you&apos;ve already fixed it, thank you.
&gt; 
&gt; Causes a regression with SVG texts and gradients. See bug 52531.

It would be interesting as well, how your patch works with SVG texts, filled with gradient and CSS shadow. 

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; &gt;
&lt;defs&gt;
&lt;linearGradient id=&quot;gradient&quot; x1=&quot;0%&quot; y1=&quot;0%&quot; x2=&quot;100%&quot; y2=&quot;0%&quot;&gt;
&lt;stop offset=&quot;0%&quot; stop-color=&quot;red&quot;/&gt;
&lt;stop offset=&quot;100%&quot; stop-color=&quot;blue&quot;/&gt;
&lt;/linearGradient&gt;
&lt;/defs&gt;
&lt;text x=&quot;200&quot; y=&quot;200&quot; style=&quot;font-size: 200px; text-shadow: #000 20px 20px 20px;&quot; fill=&quot;url(#gradient)&quot;&gt;SVG&lt;/text&gt;
&lt;/svg&gt;

Can you add a test case with pixel test please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335712</commentid>
    <comment_count>24</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-18 01:42:45 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Can you add a test case with pixel test please?

Done in bug 52509.

BTW, I&apos;d like to confirm with you: with Qt the shadow appears in black shades (following the gradient). In CG, the shadow has the same colors of the gradient. Isn&apos;t the former the correct behavior?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77875</attachid>
            <date>2011-01-04 02:56:13 -0800</date>
            <delta_ts>2011-01-05 00:53:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51869-20110104025611.patch</filename>
            <type>text/plain</type>
            <size>9824</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYjgzNDNmNzA0MDk5MWM1NzZkNGI3MDExNWZmYWIzYjE3ZWFhOTJjLi4zYWRlNzIy
ZjMxMWJmYzBlNjgwZDViOTk2MmUyM2JhYTFkYzk5YmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDEtMDQgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhZG93cyBhcmUgbm90
IGRyYXduIHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdyYWRpZW50IGZpbGxTdHlsZSBvbiBN
YWMgYW5kIENocm9taXVtLU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE4NjkKKworICAgICAgICBJbiBDRywgYSBncmFkaWVudCBkb2Vzbid0IGNv
dW50IGFzIGEgZmlsbC4gRmlyc3QsIHdlIG11c3QgZmlsbCBhIHJlY3QKKyAgICAgICAgd2l0aCBh
IHNoYWRvdyBzZXQsIHRoZW4gZHJhdyB0aGUgZ3JhZGllbnQgb3ZlciB0aGUgZmlsbC4KKworICAg
ICAgICBOZXcgdGVzdCB0byBlbnN1cmUgdGhhdCBzaGFkb3dzIGFyZSBkcmF3biB3aGVuIGZpbGxT
dHlsZSBpcyBhIGdyYWRpZW50CisgICAgICAgIGFuZCBzcGVjaWZpY2FsbHkgZHJhd2luZyB3aXRo
IGZpbGxSZWN0LgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRp
ZW50LXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuanM6
IEFkZGVkLgorCiAyMDEwLTEyLTIwICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVu
dC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZDFhNjM4YTI0ZTE2MDkwMzFlZThj
ZDFjMzZhMzZhNTcyN2Q3MjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDczIEBACitFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVj
dCB1c2luZyBhIGdyYWRpZW50IGZpbGxTdHlsZSBhbmQgYSBzaGFkb3cKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNT
IGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1Mg
ZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlz
IDI1NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQ
QVNTIGRbM10gaXMgYXJvdW5kIDc2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAor
UEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgNzYKK1BBU1MgZFswXSBpcyAyNTUK
K1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCA3Ngor
UEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRb
M10gaXMgYXJvdW5kIDc2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBk
WzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4gMjUKK1BBU1MgZFswXSBpcyAyNTUK
K1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhh
biAyNQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQ
QVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDI1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0g
aXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4gMjUKK1BBU1Mg
ZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlz
IHNtYWxsZXIgdGhhbiAxMAorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1Mg
ZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDEwCitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRo
YW4gMTAKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAxMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNDc2NjVkYWIyZDE5NTI4NDJlYWI1ZjU5ZTVlYzlkYjIzZGU1ODEwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNo
YWRvdy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJlY3Qt
Z3JhZGllbnQtc2hhZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZTMzNmEwMWU4ZDY2Zjc4YTE2NzBkZThi
NTM5NTRlOTIyNjJlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5qcwpAQCAtMCww
ICsxLDE3MSBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZh
cyB3aXRoIGZpbGxSZWN0IHVzaW5nIGEgZ3JhZGllbnQgZmlsbFN0eWxlIGFuZCBhIHNoYWRvdyIp
OworCitmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikKK3sKKyAgICB2YXIgcGFyYWdyYXBo
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyYWdyYXBoLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBwYXJhZ3JhcGguc3R5
bGUuZm9udEZhbWlseSA9ICJtb25vc3BhY2UiOworICAgIGlmIChjb2xvcikKKyAgICAgICAgcGFy
YWdyYXBoLnN0eWxlLmNvbG9yID0gY29sb3I7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOworfQorCitmdW5jdGlvbiBzaG91bGRC
ZUFyb3VuZChhLCBiKQoreworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAgICAgICBldmFs
QSA9IGV2YWwoYSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGV2YWxBID0gZTsKKyAgICB9
CisKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDUpCisgICAgICAgIHByaW50KCJQQVNT
ICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQorICAgIGVsc2UKKyAgICAgICAg
cHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIg
KyBldmFsQSArICIpIiwgInJlZCIpOworfQorCitmdW5jdGlvbiBzaG91bGRCZVNtYWxsZXIoYSwg
YikKK3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEp
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYg
KGV2YWxBIDwgYikKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIHNtYWxsZXIgdGhh
biAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAiICsgYSAr
ICIgaXMgbm90IHNtYWxsZXIgdGhhbiAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIiki
LCAicmVkIik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRy
aWJ1dGUoJ3dpZHRoJywgJzQwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzY1
MCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCit2YXIgZ3JhZGllbnQg
PSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMTAwLCAxMDApOworZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDAsICdyZ2JhKDAsIDAsIDI1NSwgMS4wKScpOworZ3JhZGllbnQuYWRkQ29sb3JT
dG9wKDEsICdyZ2JhKDAsIDAsIDI1NSwgMS4wKScpOworCitjdHguc2hhZG93T2Zmc2V0WCA9IDIw
MDsKK2N0eC5maWxsU3R5bGUgPSBncmFkaWVudDsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEo
MjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCg1MCwgNTAsIDEwMCwgMTAwKTsKKworY3R4
LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjMpJzsKK2N0eC5maWxsUmVjdCg1MCwg
MjAwLCAxMDAsIDEwMCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4w
KSc7CitjdHguc2hhZG93Qmx1ciA9IDU7CitjdHguZmlsbFJlY3QoNTAsIDM1MCwgMTAwLCAxMDAp
OworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuMyknOworY3R4LmZpbGxS
ZWN0KDUwLCA1MDAsIDEwMCwgMTAwKTsKKwordmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCisKKy8v
IFZlcmlmeSBzb2xpZCBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDUwLCAxLCAx
KS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7
CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNDksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScs
ICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsK
K3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNDksIDUw
LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScs
ICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
KworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzQ5LCAxNDksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywg
JzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCisvLyBWZXJpZnkgc29saWQgYWxwaGEg
c2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAyMDAsIDEsIDEpLmRhdGE7CitzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdk
WzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CisKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDI1MCwgMjk5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRC
ZUFyb3VuZCgnZFszXScsICc3NicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNDksIDIwMCwg
MSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzQ5LCAyOTksIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CisKKy8vIFZlcmlmeSBibHVy
cnkgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjQ4LCAzNDgsIDEsIDEpLmRhdGE7Citz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJl
KCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcyNScpOworCitkID0gY3R4
LmdldEltYWdlRGF0YSgyNDgsIDQ1MSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1
NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hv
dWxkQmVTbWFsbGVyKCdkWzNdJywgJzI1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM1MSwg
MzQ4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10n
LCAnMjUnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzUxLCA0NTEsIDEsIDEpLmRhdGE7Citz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJl
KCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcyNScpOworCisvLyBWZXJp
ZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI0OCwgNDk4LCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMTAn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjQ4LCA2MDEsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcxMCcpOworCitkID0gY3R4LmdldElt
YWdlRGF0YSgzNTEsIDQ5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVT
bWFsbGVyKCdkWzNdJywgJzEwJyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM1MSwgNjAxLCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMTAn
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlYzFkNjI5OTY2NTlmODA0ZGU4
YWU5YjI3ZDMzMjM4YjM1M2JhOTYuLmVkMWFjYWY1ZDdjMjk2YThjMDI3YjU1MjU1NzE4MWJlNmQ5
NzNhZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMDQgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVy
QHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2hhZG93cyBhcmUgbm90IGRyYXduIHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdy
YWRpZW50IGZpbGxTdHlsZSBvbiBNYWMgYW5kIENocm9taXVtLU1hYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4NjkKKworICAgICAgICBUZXN0OiBm
YXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93Lmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorCiAyMDExLTAxLTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IENocm9taXVt
IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAppbmRleCA3ODk4ZDYyYWMyMjVhMjVhZDk3YjdhYjIxZTBhYjdjY2NiMTg2MmY5
Li5iOGMyMmRkOGVjODdjNjcxZTM4YjA1MWQ0YmFjNjMyNzMxMmFhNWY3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNjAw
LDYgKzYwMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
IAogICAgIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgeworICAgICAgICBDR0NvbnRleHRGaWxs
UmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0
KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVu
dFNwYWNlVHJhbnNmb3JtKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>77923</attachid>
            <date>2011-01-04 13:18:49 -0800</date>
            <delta_ts>2011-01-04 13:18:49 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>canvas-gradient-shadow.html</filename>
            <type>text/html</type>
            <size>906</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgIAogICAgZnVuY3Rpb24gZHJhd0NhbnZhcygpCiAg
ICB7CiAgICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFz
JylbMF0uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LnNoYWRvd09mZnNldFggPSAwOwogICAg
ICBjdHguc2hhZG93T2Zmc2V0WSA9IDIwOwogICAgICBjdHguc2hhZG93Qmx1ciA9IDIwOyAgCiAg
ICAgIGN0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDAuOCkiOwoKICAgICAgdmFyIGdy
YWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDI1MCwgMCk7CiAgICAgIGdy
YWRpZW50LmFkZENvbG9yU3RvcCgwLCAncmdiYSgwLCAwLCAyNTUsIDAuMSknKTsKICAgICAgZ3Jh
ZGllbnQuYWRkQ29sb3JTdG9wKDAuNSwgJ3JnYmEoMCwgMCwgMjU1LCAwLjkpJyk7CiAgICAgIGdy
YWRpZW50LmFkZENvbG9yU3RvcCgxLCAncmdiYSgwLCAwLCAyNTUsIDAuMSknKTsKCiAgICAgIGN0
eC5maWxsU3R5bGUgPSBncmFkaWVudDsKICAgICAgY3R4LmZpbGxSZWN0KDIwLCAyMCwgMzYwLCA4
MCk7CiAgICAgIAogICAgICBjdHguZmlsbFN0eWxlID0gJ2JsdWUnOwogICAgICBjdHguZmlsbFJl
Y3QoMjAsIDE3MCwgMzYwLCA4MCk7CiAgICB9CiAgICAKICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdsb2FkJywgZHJhd0NhbnZhcywgZmFsc2UpOwogIDwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5
PgoKICA8cD5Cb3RoIHJlY3RhbmdsZXMgc2hvdWxkIGJlIHNoYWRvd2VkPC9wPgogIDxjYW52YXMg
aGVpZ2h0PSIzMDAiIHdpZHRoPSI0MDAiPjwvY2FudmFzPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77980</attachid>
            <date>2011-01-05 00:53:44 -0800</date>
            <delta_ts>2011-01-05 17:07:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51869-20110105005343.patch</filename>
            <type>text/plain</type>
            <size>13502</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjYwMDdlYjczMjA4YjM0N2VlODRhZjU0MzE4ZmViNjIwMmE5YmEwLi45MzE2N2Vm
M2JlMDE4YThmYzNmZjhlODExZjQwNjAzOTcwY2U2NDBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTEtMDEtMDUgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhZG93cyBhcmUgbm90
IGRyYXduIHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdyYWRpZW50IGZpbGxTdHlsZSBvbiBN
YWMgYW5kIENocm9taXVtLU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE4NjkKKworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpIGlzIGNsaXBwaW5nIHRvIHRoZSByZWN0LgorICAgICAgICBUaGUgc2hh
ZG93IGlzIGJlaW5nIGRyYXduLCBidXQgZ2V0dGluZyBjbGlwcGVkIHRvIHRoZSByZWN0IGJlaW5n
IGZpbGxlZC4KKyAgICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIGRyYXcgdGhlIGdyYWRpZW50IGlu
dG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIKKyAgICAgICAgKGNsaXBwZWQpLCB0aGVuIHJlbmRlciB0
aGUgbGF5ZXIgdG8gdGhlIEdyYXBoaWNzQ29udGV4dCAodW5jbGlwcGVkKS4KKworICAgICAgICBO
ZXcgdGVzdCB0byBlbnN1cmUgdGhhdCBzaGFkb3dzIGFyZSBkcmF3biB3aGVuIGZpbGxTdHlsZSBp
cyBhIGdyYWRpZW50LAorICAgICAgICBwb3NzaWJseSB3aXRoIHNvbWUgdHJhbnNwYXJlbmN5LCBh
bmQgc3BlY2lmaWNhbGxsIHVzaW5nIGZpbGxSZWN0LgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUmVj
dC1ncmFkaWVudC1zaGFkb3cuanM6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsUmVjdC1n
cmFkaWVudC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNk
MWE2MzhhMjRlMTYwOTAzMWVlOGNkMWMzNmEzNmE1NzI3ZDcyNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3ct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzMgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9m
IGNhbnZhcyB3aXRoIGZpbGxSZWN0IHVzaW5nIGEgZ3JhZGllbnQgZmlsbFN0eWxlIGFuZCBhIHNo
YWRvdworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQor
UEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRb
MF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAy
NTUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFT
UyBkWzNdIGlzIDI1NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMg
MAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgNzYKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCA3
NgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNT
IGRbM10gaXMgYXJvdW5kIDc2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFT
UyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgNzYKK1BBU1MgZFswXSBpcyAyNTUKK1BB
U1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAy
NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNT
IGRbM10gaXMgc21hbGxlciB0aGFuIDI1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMg
MAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4gMjUKK1BBU1MgZFsw
XSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIHNt
YWxsZXIgdGhhbiAyNQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDEwCitQQVNTIGRbMF0gaXMgMjU1CitQ
QVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4g
MTAKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFT
UyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAxMAorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlz
IDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDEwCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNo
YWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NzY2NWRhYjJkMTk1Mjg0MmVhYjVmNTllNWVjOWRiMjNk
ZTU4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
ZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJl
Y3QtZ3JhZGllbnQtc2hhZG93LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJl
Y3QtZ3JhZGllbnQtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDllMzM2
YTAxZThkNjZmNzhhMTY3MGRlOGI1Mzk1NGU5MjI2MmVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJlY3QtZ3JhZGll
bnQtc2hhZG93LmpzCkBAIC0wLDAgKzEsMTcxIEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGNvcnJl
Y3QgYmVoYXZpb3Igb2YgY2FudmFzIHdpdGggZmlsbFJlY3QgdXNpbmcgYSBncmFkaWVudCBmaWxs
U3R5bGUgYW5kIGEgc2hhZG93Iik7CisKK2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQor
eworICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkp
OworICAgIHBhcmFncmFwaC5zdHlsZS5mb250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYg
KGNvbG9yKQorICAgICAgICBwYXJhZ3JhcGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCit7CisgICAgdmFyIGV2YWxBOworICAg
IHRyeSB7CisgICAgICAgIGV2YWxBID0gZXZhbChhKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgZXZhbEEgPSBlOworICAgIH0KKworICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgNSkK
KyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIp
CisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAi
ICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVkIik7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZEJlU21hbGxlcihhLCBiKQoreworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAg
ICAgICBldmFsQSA9IGV2YWwoYSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGV2YWxBID0g
ZTsKKyAgICB9CisKKyAgICBpZiAoZXZhbEEgPCBiKQorICAgICAgICBwcmludCgiUEFTUyAiICsg
YSArICIgaXMgc21hbGxlciB0aGFuICIgKyBiICwgImdyZWVuIikKKyAgICBlbHNlCisgICAgICAg
IHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3Qgc21hbGxlciB0aGFuICIgKyBiICsgIiAoYWN0
dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52
YXMpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnNDAwJyk7CitjYW52YXMuc2V0QXR0
cmlidXRlKCdoZWlnaHQnLCAnNjUwJyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJk
Jyk7CisKK3ZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMDAs
IDEwMCk7CitncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgJ3JnYmEoMCwgMCwgMjU1LCAxLjApJyk7
CitncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgJ3JnYmEoMCwgMCwgMjU1LCAxLjApJyk7CisKK2N0
eC5zaGFkb3dPZmZzZXRYID0gMjAwOworY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50OworCitjdHgu
c2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZpbGxSZWN0KDUwLCA1
MCwgMTAwLCAxMDApOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuMykn
OworY3R4LmZpbGxSZWN0KDUwLCAyMDAsIDEwMCwgMTAwKTsKKworY3R4LnNoYWRvd0NvbG9yID0g
J3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5zaGFkb3dCbHVyID0gNTsKK2N0eC5maWxsUmVj
dCg1MCwgMzUwLCAxMDAsIDEwMCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwg
MCwgMC4zKSc7CitjdHguZmlsbFJlY3QoNTAsIDUwMCwgMTAwLCAxMDApOworCit2YXIgZDsgLy8g
aW1hZ2VEYXRhLmRhdGEKKworLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI1MCwgNTAsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3No
b3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlKCdk
WzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDE0OSwgMSwgMSkuZGF0
YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDM0OSwgNTAsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNDksIDE0OSwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKKy8v
IFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDIw
MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
NzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAyOTksIDEsIDEpLmRhdGE7CitzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdk
WzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CisKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDM0OSwgMjAwLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRC
ZUFyb3VuZCgnZFszXScsICc3NicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNDksIDI5OSwg
MSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYn
KTsKKworLy8gVmVyaWZ5IGJsdXJyeSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgyNDgs
IDM0OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNd
JywgJzI1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI0OCwgNDUxLCAxLCAxKS5kYXRhOwor
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRC
ZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMjUnKTsKKworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMzUxLCAzNDgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3No
b3VsZEJlU21hbGxlcignZFszXScsICcyNScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNTEs
IDQ1MSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNd
JywgJzI1Jyk7CisKKy8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93LgorZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjQ4LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
K3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJl
U21hbGxlcignZFszXScsICcxMCcpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyNDgsIDYwMSwg
MSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNdJywgJzEw
Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM1MSwgNDk4LCAxLCAxKS5kYXRhOworc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsy
XScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMTAnKTsKKworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMzUxLCA2MDEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
K3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJl
U21hbGxlcignZFszXScsICcxMCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTI3YmExNTIzYmI5MGQ0MTI3MDE5Y2I5NDM3ZDFjY2M2MjZiZWMyZS4uNGIyZDQzODNkN2ZmOWY3
ZTZjZDAyMGQ5YzE3MDU3MWFjNjE1ZWM4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wMS0wNSAgSGVs
ZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFkb3dzIGFyZSBub3QgZHJhd24gd2hlbiBmaWxs
aW5nIGEgcmVjdCB3aXRoIGEgZ3JhZGllbnQgZmlsbFN0eWxlIG9uIE1hYyBhbmQgQ2hyb21pdW0t
TWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTg2
OQorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jikg
aXMgY2xpcHBpbmcgdG8gdGhlIHJlY3QuCisgICAgICAgIFRoZSBzaGFkb3cgaXMgYmVpbmcgZHJh
d24sIGJ1dCBnZXR0aW5nIGNsaXBwZWQgdG8gdGhlIHJlY3QgYmVpbmcgZmlsbGVkLgorICAgICAg
ICBUaGUgc29sdXRpb24gaXMgdG8gZHJhdyB0aGUgZ3JhZGllbnQgaW50byBhIHRyYW5zcGFyZW5j
eSBsYXllcgorICAgICAgICAoY2xpcHBlZCksIHRoZW4gcmVuZGVyIHRoZSBsYXllciB0byB0aGUg
R3JhcGhpY3NDb250ZXh0ICh1bmNsaXBwZWQpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFz
L2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTEtMDEtMDQgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBCdWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKaW5kZXggMTliOWM2
YThkYWY0YzFkYzA1MjE3NzFkNDU4YjZmMDFkMTlkNzllMC4uODQzYzgxYjI2ZjFlY2FmNWRlZjBi
YmViOTNhNmExMjQ5NjQwMWI4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaApA
QCAtMTM2LDYgKzEzNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQ
bGF0Zm9ybUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFk
aWVudFNwYWNlVHJhbnNmb3JtYXRpb24pOwogCiAjaWYgUExBVEZPUk0oQ0cpCisgICAgICAgIHZv
aWQgcGFpbnQoQ0dDb250ZXh0UmVmKTsKICAgICAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqKTsKICNlbmRpZgogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHLmNwcAppbmRleCAwNTAzNDAwN2Y3OGFmZWRiOGQyMGVmYWRmMzI4ZWJmMjBm
ZmQ4ZTJmLi44YzgyYzU1ZTMxZjRiMjFmOGYyYzlmODJlZDhjNDYxMjRmOGM2NzNlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKQEAgLTExMywyOCArMTEz
LDMzIEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB2b2lkIEdyYWRpZW50OjpwYWludChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgQ0dDb250ZXh0UmVmIGN0eCA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIHBhaW50KGN0eCk7Cit9CisKK3ZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29u
dGV4dFJlZiBjb250ZXh0KQorewogI2lmIFVTRV9DR19TSEFESU5HCi0gICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcoY3R4LCBwbGF0Zm9ybUdyYWRpZW50KCkpOworICAgIENHQ29udGV4dERyYXdTaGFk
aW5nKGNvbnRleHQsIHBsYXRmb3JtR3JhZGllbnQoKSk7CiAjZWxzZQogICAgIENHR3JhZGllbnRE
cmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0
TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKICAgICBpZiAobV9y
YWRpYWwpIHsKICAgICAgICAgYm9vbCBuZWVkU2NhbGluZyA9IGFzcGVjdFJhdGlvKCkgIT0gMTsK
ICAgICAgICAgaWYgKG5lZWRTY2FsaW5nKSB7Ci0gICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0
YXRlKGN0eCk7CisgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAg
ICAgICAgICAgLy8gU2NhbGUgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBncmFkaWVudC4gV2Ugb25s
eSBldmVyIHNjYWxlIG5vbi1kZXByZWNhdGVkIGdyYWRpZW50cywKICAgICAgICAgICAgIC8vIGZv
ciB3aGljaCBtX3AwID09IG1fcDEuCiAgICAgICAgICAgICBBU1NFUlQobV9wMCA9PSBtX3AxKTsK
LSAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjdHgsIG1fcDAueCgpLCBtX3AwLnko
KSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIDEsIDEgLyBhc3BlY3RSYXRp
bygpKTsKLSAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjdHgsIC1tX3AwLngoKSwg
LW1fcDAueSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBt
X3AwLngoKSwgbV9wMC55KCkpOworICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgMSAvIGFzcGVjdFJhdGlvKCkpOworICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGNvbnRleHQsIC1tX3AwLngoKSwgLW1fcDAueSgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVudChjdHgsIHBsYXRmb3JtR3JhZGllbnQoKSwgbV9w
MCwgbV9yMCwgbV9wMSwgbV9yMSwgZXh0ZW5kT3B0aW9ucyk7Ci0gICAgICAgIAorICAgICAgICBD
R0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQoY29udGV4dCwgcGxhdGZvcm1HcmFkaWVudCgpLCBt
X3AwLCBtX3IwLCBtX3AxLCBtX3IxLCBleHRlbmRPcHRpb25zKTsKKwogICAgICAgICBpZiAobmVl
ZFNjYWxpbmcpCi0gICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGN0eCk7CisgICAg
ICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogICAgIH0gZWxzZQotICAg
ICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQoY3R4LCBwbGF0Zm9ybUdyYWRpZW50KCks
IG1fcDAsIG1fcDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICBDR0NvbnRleHREcmF3TGluZWFy
R3JhZGllbnQoY29udGV4dCwgcGxhdGZvcm1HcmFkaWVudCgpLCBtX3AwLCBtX3AxLCBleHRlbmRP
cHRpb25zKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDc4OThkNjJhYzIyNWEyNWFkOTdiN2FiMjFl
MGFiN2NjY2IxODYyZjkuLmVjMmYxMjQ1OGMxODVkMzQ4YTU3YjlkYzkwODFmOGM5OTEyNzFmMzcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCkBAIC02MDAsMTEgKzYwMCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0KCk7CiAKICAgICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKLSAgICAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLSAgICAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LCByZWN0KTsKKyAgICAgICAgQ0dMYXllclJlZiBsYXllciA9IENHTGF5ZXJD
cmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBDR1NpemVNYWtlKHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSksIDApOworICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXll
ckdldENvbnRleHQobGF5ZXIpOworICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQo
bGF5ZXJDb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3Rh
dGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwotICAgICAgICBtX3N0
YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQodGhpcyk7Ci0gICAgICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUoY29udGV4dCk7CisgICAgICAgIENHQ29udGV4dERyYXdMYXllckF0UG9pbnQoY29udGV4
dCwgQ0dQb2ludE1ha2UocmVjdC5sZWZ0KCksIHJlY3QudG9wKCkpLCBsYXllcik7CisgICAgICAg
IENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78073</attachid>
            <date>2011-01-05 17:07:30 -0800</date>
            <delta_ts>2011-01-05 19:26:09 -0800</delta_ts>
            <desc>Extra test step for rotation; fix Win build (hopefully)</desc>
            <filename>bug-51869-20110105170729.patch</filename>
            <type>text/plain</type>
            <size>14421</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjYwMDdlYjczMjA4YjM0N2VlODRhZjU0MzE4ZmViNjIwMmE5YmEwLi45ZTllOWUw
ZGIxMTE0Njg2ZDU1ODA3NGNhYmE4MWQ2ODNlNmVmZDBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTEtMDEtMDUgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhZG93cyBhcmUgbm90
IGRyYXduIHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdyYWRpZW50IGZpbGxTdHlsZSBvbiBN
YWMgYW5kIENocm9taXVtLU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE4NjkKKworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpIGlzIGNsaXBwaW5nIHRvIHRoZSByZWN0LgorICAgICAgICBUaGUgc2hh
ZG93IGlzIGJlaW5nIGRyYXduLCBidXQgZ2V0dGluZyBjbGlwcGVkIHRvIHRoZSByZWN0IGJlaW5n
IGZpbGxlZC4KKyAgICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIGRyYXcgdGhlIGdyYWRpZW50IGlu
dG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIsCisgICAgICAgIHRoZW4gcmVuZGVyIHRoZSBsYXllciB0
byB0aGUgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgIE5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0
IHNoYWRvd3MgYXJlIGRyYXduIHdoZW4gZmlsbFN0eWxlIGlzIGEgZ3JhZGllbnQsCisgICAgICAg
IHBvc3NpYmx5IHdpdGggc29tZSB0cmFuc3BhcmVuY3ksIGFuZCBzcGVjaWZpY2FsbHkgdXNpbmcg
ZmlsbFJlY3QuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGll
bnQtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5qczog
QWRkZWQuCisKIDIwMTEtMDEtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQt
c2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2QxYTYzOGEyNGUxNjA5MDMxZWU4Y2Qx
YzM2YTM2YTU3MjdkNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3MyBAQAorRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2FudmFzIHdpdGggZmlsbFJlY3Qg
dXNpbmcgYSBncmFkaWVudCBmaWxsU3R5bGUgYW5kIGEgc2hhZG93CisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBk
WzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBp
cyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBkWzBdIGlzIDI1NQor
UEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRb
MF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAy
NTUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFT
UyBkWzNdIGlzIGFyb3VuZCA3NgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BB
U1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDc2CitQQVNTIGRbMF0gaXMgMjU1CitQ
QVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgNzYKK1BB
U1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNd
IGlzIGFyb3VuZCA3NgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDI1CitQQVNTIGRbMF0gaXMgMjU1CitQ
QVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4g
MjUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFT
UyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAyNQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlz
IDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDI1CitQQVNTIGRb
MF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBz
bWFsbGVyIHRoYW4gMTAKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRb
Ml0gaXMgMAorUEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAxMAorUEFTUyBkWzBdIGlzIDI1NQor
UEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFu
IDEwCitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BB
U1MgZFszXSBpcyBzbWFsbGVyIHRoYW4gMTAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjQ3NjY1ZGFiMmQxOTUyODQyZWFiNWY1OWU1ZWM5ZGIyM2RlNTgxMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFk
b3cuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxSZWN0LWdy
YWRpZW50LXNoYWRvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTJhNzM3ZGI3ZWVmNjY4YTVhNDY5ZjliMDRj
MTg3MGJmN2U1MmI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3cuanMKQEAgLTAsMCAr
MSwxOTkgQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMg
d2l0aCBmaWxsUmVjdCB1c2luZyBhIGdyYWRpZW50IGZpbGxTdHlsZSBhbmQgYSBzaGFkb3ciKTsK
KworZnVuY3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxl
LmZvbnRGYW1pbHkgPSAibW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFn
cmFwaC5zdHlsZS5jb2xvciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVB
cm91bmQoYSwgYikKK3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEg
PSBldmFsKGEpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQor
CisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCA1KQorICAgICAgICBwcmludCgiUEFTUyAi
ICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKKyAgICBlbHNlCisgICAgICAgIHBy
aW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsg
ZXZhbEEgKyAiKSIsICJyZWQiKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVTbWFsbGVyKGEsIGIp
Cit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAgICAgIGV2YWxBID0gZXZhbChhKTsK
KyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEgPSBlOworICAgIH0KKworICAgIGlmIChl
dmFsQSA8IGIpCisgICAgICAgIHByaW50KCJQQVNTICIgKyBhICsgIiBpcyBzbWFsbGVyIHRoYW4g
IiArIGIgLCAiZ3JlZW4iKQorICAgIGVsc2UKKyAgICAgICAgcHJpbnQoIkZBSUwgIiArIGEgKyAi
IGlzIG5vdCBzbWFsbGVyIHRoYW4gIiArIGIgKyAiIChhY3R1YWw6ICIgKyBldmFsQSArICIpIiwg
InJlZCIpOworfQorCit2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CitjYW52YXMuc2V0QXR0cmli
dXRlKCd3aWR0aCcsICc0MDAnKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICc4MDAn
KTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKwordmFyIGdyYWRpZW50ID0g
Y3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDEwMCwgMTAwKTsKK2dyYWRpZW50LmFkZENv
bG9yU3RvcCgwLCAncmdiYSgwLCAwLCAyNTUsIDEuMCknKTsKK2dyYWRpZW50LmFkZENvbG9yU3Rv
cCgxLCAncmdiYSgwLCAwLCAyNTUsIDEuMCknKTsKKworY3R4LnNoYWRvd09mZnNldFggPSAyMDA7
CitjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1
NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoNTAsIDUwLCAxMDAsIDEwMCk7CisKK2N0eC5z
aGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC4zKSc7CitjdHguZmlsbFJlY3QoNTAsIDIw
MCwgMTAwLCAxMDApOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCkn
OworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LmZpbGxSZWN0KDUwLCAzNTAsIDEwMCwgMTAwKTsK
KworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjMpJzsKK2N0eC5maWxsUmVj
dCg1MCwgNTAwLCAxMDAsIDEwMCk7CisKK2N0eC5yb3RhdGUoTWF0aC5QSS8yKTsKK2N0eC5maWxs
UmVjdCg2NTAsIC0xNTAsIDEwMCwgMTAwKTsKKwordmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCisK
Ky8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDUwLCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNDksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNDks
IDUwLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzQ5LCAxNDksIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCisvLyBWZXJpZnkgc29saWQgYWxw
aGEgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAyMDAsIDEsIDEpLmRhdGE7Citz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJl
KCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CisKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI1MCwgMjk5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91
bGRCZUFyb3VuZCgnZFszXScsICc3NicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNDksIDIw
MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
NzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzQ5LCAyOTksIDEsIDEpLmRhdGE7CitzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdk
WzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CisKKy8vIFZlcmlmeSBi
bHVycnkgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjQ4LCAzNDgsIDEsIDEpLmRhdGE7
CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcyNScpOworCitkID0g
Y3R4LmdldEltYWdlRGF0YSgyNDgsIDQ1MSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywg
JzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwor
c2hvdWxkQmVTbWFsbGVyKCdkWzNdJywgJzI1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM1
MSwgMzQ4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgn
ZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2Rb
M10nLCAnMjUnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzUxLCA0NTEsIDEsIDEpLmRhdGE7
CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcyNScpOworCisvLyBW
ZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI0OCwgNDk4
LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScs
ICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAn
MTAnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjQ4LCA2MDEsIDEsIDEpLmRhdGE7CitzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdk
WzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcxMCcpOworCitkID0gY3R4Lmdl
dEltYWdlRGF0YSgzNTEsIDQ5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScp
Oworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxk
QmVTbWFsbGVyKCdkWzNdJywgJzEwJyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM1MSwgNjAx
LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScs
ICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAn
MTAnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cgd2l0aCByb3RhdGlvbi4KK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI0OSwgNjQ5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMTUnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEo
MjQ4LCA3NTEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJl
KCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcign
ZFszXScsICcxNScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNTAsIDY0OSwgMSwgMSkuZGF0
YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNdJywgJzE1Jyk7CisKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDM1MSwgNzUxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMTUnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDEyN2JhMTUyM2JiOTBkNDEyNzAxOWNiOTQzN2QxY2NjNjI2YmVjMmUuLjBmN2Ey
MzlhZWVhYjUwYmM2YjdlYTVkZmYyYTNjM2RkNmNiYTAxNjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDEtMDUgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhZG93cyBhcmUgbm90IGRyYXdu
IHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdyYWRpZW50IGZpbGxTdHlsZSBvbiBNYWMgYW5k
IENocm9taXVtLU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTE4NjkKKworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGlzIGNsaXBwaW5nIHRvIHRoZSByZWN0LgorICAgICAgICBUaGUgc2hhZG93IGlz
IGJlaW5nIGRyYXduLCBidXQgZ2V0dGluZyBjbGlwcGVkIHRvIHRoZSByZWN0IGJlaW5nIGZpbGxl
ZC4KKyAgICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIGRyYXcgdGhlIGdyYWRpZW50IGludG8gYSB0
cmFuc3BhcmVuY3kgbGF5ZXIsCisgICAgICAgIHRoZW4gcmVuZGVyIHRoZSBsYXllciB0byB0aGUg
R3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1maWxs
UmVjdC1ncmFkaWVudC1zaGFkb3cuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMTEtMDEtMDQgIENocmlzIEZsZWl6YWNo
ICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKaW5kZXggMTliOWM2YThkYWY0YzFkYzA1
MjE3NzFkNDU4YjZmMDFkMTlkNzllMC4uNGQ1Y2RjNjE0OGZhMzkxOWU4OWM0OWVjN2IzN2NlN2Rh
MDg4ZmYwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaApAQCAtMzUsNiArMzUs
MTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENHKQogCiAjZGVmaW5lIFVTRV9DR19TSEFE
SU5HIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkKQEAgLTEzNiw2ICsxNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0UGxhdGZvcm1HcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENHKQorICAg
ICAgICB2b2lkIHBhaW50KENHQ29udGV4dFJlZik7CiAgICAgICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0Kik7CiAjZW5kaWYKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKaW5kZXggMDUwMzQwMDdmNzhhZmVkYjhkMjBlZmFkZjMy
OGViZjIwZmZkOGUyZi4uOGM4MmM1NWUzMWY0YjIxZjhmMmM5ZjgyZWQ4YzQ2MTI0ZjhjNjczZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCkBAIC0xMTMs
MjggKzExMywzMyBAQCB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogdm9pZCBHcmFkaWVudDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogewogICAgIENHQ29udGV4dFJlZiBjdHggPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBwYWludChjdHgpOworfQorCit2b2lkIEdyYWRpZW50OjpwYWlu
dChDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKICNpZiBVU0VfQ0dfU0hBRElORwotICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKGN0eCwgcGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhjb250ZXh0LCBwbGF0Zm9ybUdyYWRpZW50KCkpOwogI2Vsc2UKICAgICBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZv
cmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CiAgICAg
aWYgKG1fcmFkaWFsKSB7CiAgICAgICAgIGJvb2wgbmVlZFNjYWxpbmcgPSBhc3BlY3RSYXRpbygp
ICE9IDE7CiAgICAgICAgIGlmIChuZWVkU2NhbGluZykgewotICAgICAgICAgICAgQ0dDb250ZXh0
U2F2ZUdTdGF0ZShjdHgpOworICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0
KTsKICAgICAgICAgICAgIC8vIFNjYWxlIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgZ3JhZGllbnQu
IFdlIG9ubHkgZXZlciBzY2FsZSBub24tZGVwcmVjYXRlZCBncmFkaWVudHMsCiAgICAgICAgICAg
ICAvLyBmb3Igd2hpY2ggbV9wMCA9PSBtX3AxLgogICAgICAgICAgICAgQVNTRVJUKG1fcDAgPT0g
bV9wMSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCBtX3AwLngoKSwg
bV9wMC55KCkpOwotICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY3R4LCAxLCAxIC8gYXNw
ZWN0UmF0aW8oKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCAtbV9w
MC54KCksIC1tX3AwLnkoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29u
dGV4dCwgbV9wMC54KCksIG1fcDAueSgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RN
KGNvbnRleHQsIDEsIDEgLyBhc3BlY3RSYXRpbygpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFRy
YW5zbGF0ZUNUTShjb250ZXh0LCAtbV9wMC54KCksIC1tX3AwLnkoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBDR0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQoY3R4LCBwbGF0Zm9ybUdyYWRpZW50
KCksIG1fcDAsIG1fcjAsIG1fcDEsIG1fcjEsIGV4dGVuZE9wdGlvbnMpOwotICAgICAgICAKKyAg
ICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRpZW50KGNvbnRleHQsIHBsYXRmb3JtR3JhZGll
bnQoKSwgbV9wMCwgbV9yMCwgbV9wMSwgbV9yMSwgZXh0ZW5kT3B0aW9ucyk7CisKICAgICAgICAg
aWYgKG5lZWRTY2FsaW5nKQotICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjdHgp
OworICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKICAgICB9IGVs
c2UKLSAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KGN0eCwgcGxhdGZvcm1HcmFk
aWVudCgpLCBtX3AwLCBtX3AxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0xpbmVhckdyYWRpZW50KGNvbnRleHQsIHBsYXRmb3JtR3JhZGllbnQoKSwgbV9wMCwgbV9wMSwg
ZXh0ZW5kT3B0aW9ucyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA3ODk4ZDYyYWMyMjVhMjVhZDk3
YjdhYjIxZTBhYjdjY2NiMTg2MmY5Li5lYzJmMTI0NThjMTg1ZDM0OGE1N2I5ZGM5MDgxZjhjOTkx
MjcxZjM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcApAQCAtNjAwLDExICs2MDAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7
Ci0gICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4
dENsaXBUb1JlY3QoY29udGV4dCwgcmVjdCk7CisgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBD
R0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgQ0dTaXplTWFrZShyZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpLCAwKTsKKyAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9
IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KGxheWVyQ29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0
LCBtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAg
ICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KHRoaXMpOwotICAgICAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNvbnRleHQpOworICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJBdFBvaW50
KGNvbnRleHQsIENHUG9pbnRNYWtlKHJlY3QubGVmdCgpLCByZWN0LnRvcCgpKSwgbGF5ZXIpOwor
ICAgICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78088</attachid>
            <date>2011-01-05 19:26:13 -0800</date>
            <delta_ts>2011-01-06 02:54:07 -0800</delta_ts>
            <desc>No layer if no shadow required; update new test expected</desc>
            <filename>bug-51869-20110105192612.patch</filename>
            <type>text/plain</type>
            <size>18733</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjYwMDdlYjczMjA4YjM0N2VlODRhZjU0MzE4ZmViNjIwMmE5YmEwLi5jOTI1NDYw
NWFmMDcxNmIzZjJiZjRjM2U4YjAxYjVmMjliZDNiNTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDEtMDUgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhZG93cyBhcmUgbm90
IGRyYXduIHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdyYWRpZW50IGZpbGxTdHlsZSBvbiBN
YWMgYW5kIENocm9taXVtLU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE4NjkKKworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpIGlzIGNsaXBwaW5nIHRvIHRoZSByZWN0LgorICAgICAgICBUaGUgc2hh
ZG93IGlzIGJlaW5nIGRyYXduLCBidXQgZ2V0dGluZyBjbGlwcGVkIHRvIHRoZSByZWN0IGJlaW5n
IGZpbGxlZC4KKyAgICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIGRyYXcgdGhlIGdyYWRpZW50IGlu
dG8gYSBDR0xheWVyICh3aGVuIGEgc2hhZG93IGlzCisgICAgICAgIHJlcXVpcmVkKSwgdGhlbiBy
ZW5kZXIgdGhlIGxheWVyIHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIGZpeGVzOgorICAgICAgICBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5n
cmFkaWVudC5hbHBoYS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93
LmdyYWRpZW50LmJhc2ljLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFk
b3cuZ3JhZGllbnQudHJhbnNwYXJlbnQuMi5odG1sCisKKyAgICAgICAgTmV3IHRlc3QgdG8gZW5z
dXJlIHRoYXQgc2hhZG93cyBhcmUgZHJhd24gd2hlbiBmaWxsU3R5bGUgaXMgYSBncmFkaWVudCwK
KyAgICAgICAgcG9zc2libHkgd2l0aCBzb21lIHRyYW5zcGFyZW5jeSBhbmQgYmx1ciwgYW5kIHNw
ZWNpZmljYWxseSB1c2luZworICAgICAgICBmaWxsUmVjdC4KKworICAgICAgICAqIGZhc3QvY2Fu
dmFzL2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmls
bFJlY3QtZ3JhZGllbnQtc2hhZG93LmpzOiBBZGRlZC4KKwogMjAxMS0wMS0wNCAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJl
Y3QtZ3JhZGllbnQtc2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmMDQ2OTcwOGE2N2E4MTc4NDdmYTg0MGYzMzllYjQzMzBlMGQxNWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hh
ZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg5IEBACitFbnN1cmUgY29ycmVjdCBiZWhhdmlv
ciBvZiBjYW52YXMgd2l0aCBmaWxsUmVjdCB1c2luZyBhIGdyYWRpZW50IGZpbGxTdHlsZSBhbmQg
YSBzaGFkb3cKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFT
UyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10g
aXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAK
K1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNT
IGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDc2CitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91
bmQgNzYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCA3NgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDc2CitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRo
YW4gMjUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAyNQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDI1CitQQVNT
IGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBp
cyBzbWFsbGVyIHRoYW4gMjUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNT
IGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAxMAorUEFTUyBkWzBdIGlzIDI1
NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgc21hbGxlciB0
aGFuIDEwCitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAK
K1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4gMTAKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsx
XSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIHNtYWxsZXIgdGhhbiAxMAorUEFT
UyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10g
aXMgc21hbGxlciB0aGFuIDE1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFT
UyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBzbWFsbGVyIHRoYW4gMTUKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIHNtYWxsZXIg
dGhhbiAxNQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAw
CitQQVNTIGRbM10gaXMgc21hbGxlciB0aGFuIDE1CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI0NzY2NWRhYjJkMTk1Mjg0MmVhYjVmNTllNWVjOWRiMjNkZTU4MTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQt
c2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUmVj
dC1ncmFkaWVudC1zaGFkb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUyYTczN2RiN2VlZjY2OGE1YTQ2OWY5
YjA0YzE4NzBiZjdlNTJiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93LmpzCkBAIC0w
LDAgKzEsMTk5IEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2Fu
dmFzIHdpdGggZmlsbFJlY3QgdXNpbmcgYSBncmFkaWVudCBmaWxsU3R5bGUgYW5kIGEgc2hhZG93
Iik7CisKK2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQoreworICAgIHZhciBwYXJhZ3Jh
cGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFncmFwaC5z
dHlsZS5mb250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAgICAgICBw
YXJhZ3JhcGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZEJlQXJvdW5kKGEsIGIpCit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAgICAgIGV2
YWxBID0gZXZhbChhKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEgPSBlOworICAg
IH0KKworICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgNSkKKyAgICAgICAgcHJpbnQoIlBB
U1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAg
ICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDog
IiArIGV2YWxBICsgIikiLCAicmVkIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlU21hbGxlcihh
LCBiKQoreworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAgICAgICBldmFsQSA9IGV2YWwo
YSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGV2YWxBID0gZTsKKyAgICB9CisKKyAgICBp
ZiAoZXZhbEEgPCBiKQorICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgc21hbGxlciB0
aGFuICIgKyBiICwgImdyZWVuIikKKyAgICBlbHNlCisgICAgICAgIHByaW50KCJGQUlMICIgKyBh
ICsgIiBpcyBub3Qgc21hbGxlciB0aGFuICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAi
KSIsICJyZWQiKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworY2FudmFzLnNldEF0
dHJpYnV0ZSgnd2lkdGgnLCAnNDAwJyk7CitjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAn
ODAwJyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK3ZhciBncmFkaWVu
dCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMDAsIDEwMCk7CitncmFkaWVudC5h
ZGRDb2xvclN0b3AoMCwgJ3JnYmEoMCwgMCwgMjU1LCAxLjApJyk7CitncmFkaWVudC5hZGRDb2xv
clN0b3AoMSwgJ3JnYmEoMCwgMCwgMjU1LCAxLjApJyk7CisKK2N0eC5zaGFkb3dPZmZzZXRYID0g
MjAwOworY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50OworCitjdHguc2hhZG93Q29sb3IgPSAncmdi
YSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZpbGxSZWN0KDUwLCA1MCwgMTAwLCAxMDApOworCitj
dHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuMyknOworY3R4LmZpbGxSZWN0KDUw
LCAyMDAsIDEwMCwgMTAwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAx
LjApJzsKK2N0eC5zaGFkb3dCbHVyID0gNTsKK2N0eC5maWxsUmVjdCg1MCwgMzUwLCAxMDAsIDEw
MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC4zKSc7CitjdHguZmls
bFJlY3QoNTAsIDUwMCwgMTAwLCAxMDApOworCitjdHgucm90YXRlKE1hdGguUEkvMik7CitjdHgu
ZmlsbFJlY3QoNjUwLCAtMTUwLCAxMDAsIDEwMCk7CisKK3ZhciBkOyAvLyBpbWFnZURhdGEuZGF0
YQorCisvLyBWZXJpZnkgc29saWQgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCA1
MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7
CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMTQ5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEo
MzQ5LCA1MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAn
MjU1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM0OSwgMTQ5LCAxLCAxKS5kYXRhOworc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgn
ZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworLy8gVmVyaWZ5IHNvbGlk
IGFscGhhIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRh
Oworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91
bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOworCitkID0g
Y3R4LmdldEltYWdlRGF0YSgyNTAsIDI5OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywg
JzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwor
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzQ5
LCAyMDAsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdk
WzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzc2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM0OSwgMjk5LCAxLCAxKS5kYXRhOwor
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRC
ZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOworCisvLyBWZXJp
ZnkgYmx1cnJ5IHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI0OCwgMzQ4LCAxLCAxKS5k
YXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7Citz
aG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMjUnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjQ4LCA0NTEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcyNScpOworCitkID0gY3R4LmdldEltYWdlRGF0
YSgzNTEsIDM0OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVy
KCdkWzNdJywgJzI1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM1MSwgNDUxLCAxLCAxKS5k
YXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7Citz
aG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMjUnKTsKKwor
Ly8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgyNDgs
IDQ5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNd
JywgJzEwJyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI0OCwgNjAxLCAxLCAxKS5kYXRhOwor
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRC
ZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxsZXIoJ2RbM10nLCAnMTAnKTsKKworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMzUxLCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3No
b3VsZEJlU21hbGxlcignZFszXScsICcxMCcpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgzNTEs
IDYwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNd
JywgJzEwJyk7CisKKy8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93IHdpdGggcm90YXRpb24u
CitkID0gY3R4LmdldEltYWdlRGF0YSgyNDksIDY0OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdk
WzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNdJywgJzE1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDI0OCwgNzUxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91
bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZVNtYWxs
ZXIoJ2RbM10nLCAnMTUnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzUwLCA2NDksIDEsIDEp
LmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsK
K3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlU21hbGxlcignZFszXScsICcxNScpOwor
CitkID0gY3R4LmdldEltYWdlRGF0YSgzNTEsIDc1MSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdk
WzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOworc2hvdWxkQmVTbWFsbGVyKCdkWzNdJywgJzE1Jyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3ds
ZW9wYXJkL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LmFscGhhLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9jYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnNoYWRvdy5ncmFkaWVudC5hbHBoYS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNjY5MWIxOWUzOWNjMWVkNDY1Y2QyMWRhZDYyN2FiZmI2
NTkzNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQu
c2hhZG93LmdyYWRpZW50LmFscGhhLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLUZhaWxlZCBhc3NlcnRpb246IGdvdCBwaXhlbCBbMjU1LDAsMCwyNTVdIGF0ICg1MCwy
NSksIGV4cGVjdGVkIFsxMjcsMCwxMjcsMjU1XSArLy0gMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93
LmdyYWRpZW50LmJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1z
bm93bGVvcGFyZC9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5ncmFkaWVudC5iYXNpYy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYTcxMjQzZWEwMjBk
MGY4NDA2OWU4OTNmNmMyMmVlMjdmMjY5ZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL2Nh
bnZhcy9waGlsaXAvdGVzdHMvMmQuc2hhZG93LmdyYWRpZW50LmJhc2ljLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUZhaWxlZCBhc3NlcnRpb246IGdvdCBwaXhlbCBb
MjU1LDAsMCwyNTVdIGF0ICg1MCwyNSksIGV4cGVjdGVkIFswLDI1NSwwLDI1NV0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9jYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnNoYWRvdy5ncmFkaWVudC50cmFuc3BhcmVudC4yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNo
YWRvdy5ncmFkaWVudC50cmFuc3BhcmVudC4yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTI0MzBhZWJkYTRjYjhjOTc2NGRjZDAzNmI4NDQ2YjA1OTdiNTk4MC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cu
Z3JhZGllbnQudHJhbnNwYXJlbnQuMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSAr
MCwwIEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBhdCAoMjUs
MjUpLCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEyN2JhMTUyM2JiOTBkNDEyNzAxOWNiOTQzN2Qx
Y2NjNjI2YmVjMmUuLjgwOWM3MmE5YjQyYjdiOTU4YTdhODMyYzZhNmY0NDgyYjkxY2YzYjAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDEtMDUgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hh
ZG93cyBhcmUgbm90IGRyYXduIHdoZW4gZmlsbGluZyBhIHJlY3Qgd2l0aCBhIGdyYWRpZW50IGZp
bGxTdHlsZSBvbiBNYWMgYW5kIENocm9taXVtLU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4NjkKKworICAgICAgICBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGlzIGNsaXBwaW5nIHRvIHRoZSByZWN0LgorICAg
ICAgICBUaGUgc2hhZG93IGlzIGJlaW5nIGRyYXduLCBidXQgZ2V0dGluZyBjbGlwcGVkIHRvIHRo
ZSByZWN0IGJlaW5nIGZpbGxlZC4KKyAgICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIGRyYXcgdGhl
IGdyYWRpZW50IGludG8gYSBDR0xheWVyICh3aGVuIGEgc2hhZG93IGlzCisgICAgICAgIHJlcXVp
cmVkKSwgdGhlbiByZW5kZXIgdGhlIGxheWVyIHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzOgorICAgICAgICBjYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnNoYWRvdy5ncmFkaWVudC5hbHBoYS5odG1sCisgICAgICAgIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuc2hhZG93LmdyYWRpZW50LmJhc2ljLmh0bWwKKyAgICAgICAgY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5zaGFkb3cuZ3JhZGllbnQudHJhbnNwYXJlbnQuMi5odG1sCisKKyAgICAgICAgVGVz
dDogZmFzdC9jYW52YXMvY2FudmFzLWZpbGxSZWN0LWdyYWRpZW50LXNoYWRvdy5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKwog
MjAxMS0wMS0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQu
aAppbmRleCAxOWI5YzZhOGRhZjRjMWRjMDUyMTc3MWQ0NThiNmYwMWQxOWQ3OWUwLi40ZDVjZGM2
MTQ4ZmEzOTE5ZTg5YzQ5ZWM3YjM3Y2U3ZGEwODhmZjAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudC5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q0cpCiAKICNkZWZpbmUgVVNFX0NHX1NIQURJTkcgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikg
fHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQpAQCAtMTM2LDYgKzE0MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24p
OwogCiAjaWYgUExBVEZPUk0oQ0cpCisgICAgICAgIHZvaWQgcGFpbnQoQ0dDb250ZXh0UmVmKTsK
ICAgICAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgogICAgIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5k
ZXggOTZhOTJmYjYwNGRiNmE4MDIzNzUwMWRjYjc2M2NhZjk5ZjY4NTM4Ni4uNDM0ZDM1YjU3MWNl
ZmRjOWJlM2NiMjMyYzljZGIyNjI4ODJhNDY3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTQ4LDYgKzE0OCwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAgIGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIH0K
IAorYm9vbCBHcmFwaGljc0NvbnRleHQ6Omhhc1NoYWRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxw
aGEoKQorICAgICAgICAgICAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93
T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOworfQorCiBi
b29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYg
Ymx1ciwgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25zdAogewogICAg
IG9mZnNldCA9IG1fc3RhdGUuc2hhZG93T2Zmc2V0OwpAQCAtMTU1LDcgKzE2MSw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0JiBibHVy
LCBDb2xvciYgY29sb3IsIENvCiAgICAgY29sb3IgPSBtX3N0YXRlLnNoYWRvd0NvbG9yOwogICAg
IGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2U7CiAKLSAgICByZXR1cm4gY29s
b3IuaXNWYWxpZCgpICYmIGNvbG9yLmFscGhhKCkgJiYgKGJsdXIgfHwgb2Zmc2V0LndpZHRoKCkg
fHwgb2Zmc2V0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CiAKIGZsb2F0
IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGE0YTI2OTVhNTI5ZmEzYWQ4MzM1
NTViOGQyNTMyNGE3Y2JiODRiMjkuLjNjNWNkYWQzYjQ3NTIyOGFhOTY5Y2E5YjY0Yjk5YTQ4MWQw
ZTBiOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtMzQ2LDYgKzM0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBiZWdp
blRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwogICAgICAgICB2b2lkIGVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiAKKyAgICAgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhclNoYWRv
dygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENH
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKaW5kZXgg
MDUwMzQwMDdmNzhhZmVkYjhkMjBlZmFkZjMyOGViZjIwZmZkOGUyZi4uOGM4MmM1NWUzMWY0YjIx
ZjhmMmM5ZjgyZWQ4YzQ2MTI0ZjhjNjczZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYWRpZW50Q0cuY3BwCkBAIC0xMTMsMjggKzExMywzMyBAQCB2b2lkIEdyYWRpZW50Ojpm
aWxsKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogdm9p
ZCBHcmFkaWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIENHQ29u
dGV4dFJlZiBjdHggPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBwYWludChjdHgp
OworfQorCit2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKICNp
ZiBVU0VfQ0dfU0hBRElORwotICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGN0eCwgcGxhdGZvcm1H
cmFkaWVudCgpKTsKKyAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBwbGF0Zm9ybUdy
YWRpZW50KCkpOwogI2Vsc2UKICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0
aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnRE
cmF3c0FmdGVyRW5kTG9jYXRpb247CiAgICAgaWYgKG1fcmFkaWFsKSB7CiAgICAgICAgIGJvb2wg
bmVlZFNjYWxpbmcgPSBhc3BlY3RSYXRpbygpICE9IDE7CiAgICAgICAgIGlmIChuZWVkU2NhbGlu
ZykgewotICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjdHgpOworICAgICAgICAgICAg
Q0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgICAgIC8vIFNjYWxlIGZyb20g
dGhlIGNlbnRlciBvZiB0aGUgZ3JhZGllbnQuIFdlIG9ubHkgZXZlciBzY2FsZSBub24tZGVwcmVj
YXRlZCBncmFkaWVudHMsCiAgICAgICAgICAgICAvLyBmb3Igd2hpY2ggbV9wMCA9PSBtX3AxLgog
ICAgICAgICAgICAgQVNTRVJUKG1fcDAgPT0gbV9wMSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY3R4LCBtX3AwLngoKSwgbV9wMC55KCkpOwotICAgICAgICAgICAgQ0dDb250
ZXh0U2NhbGVDVE0oY3R4LCAxLCAxIC8gYXNwZWN0UmF0aW8oKSk7Ci0gICAgICAgICAgICBDR0Nv
bnRleHRUcmFuc2xhdGVDVE0oY3R4LCAtbV9wMC54KCksIC1tX3AwLnkoKSk7CisgICAgICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgbV9wMC54KCksIG1fcDAueSgpKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIDEgLyBhc3BlY3RSYXRpbygp
KTsKKyAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAtbV9wMC54KCks
IC1tX3AwLnkoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBDR0NvbnRleHREcmF3UmFkaWFsR3Jh
ZGllbnQoY3R4LCBwbGF0Zm9ybUdyYWRpZW50KCksIG1fcDAsIG1fcjAsIG1fcDEsIG1fcjEsIGV4
dGVuZE9wdGlvbnMpOwotICAgICAgICAKKyAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRp
ZW50KGNvbnRleHQsIHBsYXRmb3JtR3JhZGllbnQoKSwgbV9wMCwgbV9yMCwgbV9wMSwgbV9yMSwg
ZXh0ZW5kT3B0aW9ucyk7CisKICAgICAgICAgaWYgKG5lZWRTY2FsaW5nKQotICAgICAgICAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjdHgpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9y
ZUdTdGF0ZShjb250ZXh0KTsKICAgICB9IGVsc2UKLSAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVh
ckdyYWRpZW50KGN0eCwgcGxhdGZvcm1HcmFkaWVudCgpLCBtX3AwLCBtX3AxLCBleHRlbmRPcHRp
b25zKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KGNvbnRleHQsIHBsYXRm
b3JtR3JhZGllbnQoKSwgbV9wMCwgbV9wMSwgZXh0ZW5kT3B0aW9ucyk7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAppbmRleCA3ODk4ZDYyYWMyMjVhMjVhZDk3YjdhYjIxZTBhYjdjY2NiMTg2MmY5Li4wYzIyZjFm
YjY3ZDFlZGRhNGY4ODcwMDczMTU2NThhYzkwMWI1YzIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNjAxLDkgKzYwMSwx
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogCiAgICAgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CiAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
cmVjdCk7CiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxH
cmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAgICAgbV9zdGF0ZS5maWxs
R3JhZGllbnQtPnBhaW50KHRoaXMpOworICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKKyAgICAg
ICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4
dCwgQ0dTaXplTWFrZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLCAwKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7
CisgICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckF0UG9pbnQoY29udGV4dCwgQ0dQb2ludE1h
a2UocmVjdC5sZWZ0KCksIHJlY3QudG9wKCkpLCBsYXllcik7CisgICAgICAgICAgICBDR0xheWVy
UmVsZWFzZShsYXllcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDR0NvbnRleHRD
bGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOworICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGll
bnQtPnBhaW50KHRoaXMpOworICAgICAgICB9CiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>