<?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>89246</bug_id>
          
          <creation_ts>2012-06-15 14:29:32 -0700</creation_ts>
          <short_desc>[Cairo] do not multiply/demultiply colors when alpha is 255</short_desc>
          <delta_ts>2012-10-25 13:09:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="arno.">a.renevier</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>d-r</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>650510</commentid>
    <comment_count>0</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-06-15 14:29:32 -0700</bug_when>
    <thetext>Hi,

currently, when computing color from premultiplied ARGB, and vice/versa (colorFromPremultipliedARGB and premultipliedARGBFromColor functions), the computation is performed if alpha is non 0. But if alpha is 255, computation is the identity computation. So we can avoid this computation in the case alpha is 255.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650517</commentid>
    <comment_count>1</comment_count>
      <attachid>147901</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-06-15 14:34:17 -0700</bug_when>
    <thetext>Created attachment 147901
patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654683</commentid>
    <comment_count>2</comment_count>
      <attachid>148836</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-06-21 10:45:48 -0700</bug_when>
    <thetext>Created attachment 148836
updated patch on top of 89138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654685</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-21 10:47:32 -0700</bug_when>
    <thetext>Is this a measurable perf win on a specific test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654692</commentid>
    <comment_count>4</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-06-21 10:53:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Is this a measurable perf win on a specific test?

http://renevier.net/misc/webkit_89246.html

tested with GtkLauncher

getImageData goes from 275ms to 136ms when alpha is 255
             goes from 255ms to 261ms when alpha is 128
putImageData goes from 165ms to 82ms when alpha is 255
             goes from 160ms to 165ms when alpha is 128

So, we loose about 3% or 5% speed when there is transparency (may be because of the extra condition check?), but we are twice as fast when there is no transparency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659775</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-28 13:42:51 -0700</bug_when>
    <thetext>Seems reasonable, but I don&apos;t know how to weigh 3-5% loss in the transparent case against the speed win in the opaque case.  It&apos;s likely someone other than me should review this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660803</commentid>
    <comment_count>6</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-06-29 14:55:16 -0700</bug_when>
    <thetext>CCing darin as he has reviewed patches in Color.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680672</commentid>
    <comment_count>7</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-27 08:20:39 -0700</bug_when>
    <thetext>Does someone known who could be a good reviewer for this patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680783</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-27 10:28:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Seems reasonable, but I don&apos;t know how to weigh 3-5% loss in the transparent case against the speed win in the opaque case.  It&apos;s likely someone other than me should review this patch.

I don&apos;t either. Some perf data from PLT or pages on the web might help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681012</commentid>
    <comment_count>9</comment_count>
      <attachid>148836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-27 13:08:37 -0700</bug_when>
    <thetext>Comment on attachment 148836
updated patch on top of 89138

We should only add this code if the speedup is measurable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681013</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-27 13:09:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; We should only add this code if the speedup is measurable.

Oh, I see, it was measured.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681018</commentid>
    <comment_count>11</comment_count>
      <attachid>148836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-27 13:11:35 -0700</bug_when>
    <thetext>Comment on attachment 148836
updated patch on top of 89138

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

&gt; Source/WebCore/platform/graphics/Color.cpp:403
&gt; -    if (unsigned alpha = (pixelColor &amp; 0xFF000000) &gt;&gt; 24) {
&gt; +    unsigned alpha = (pixelColor &amp; 0xFF000000) &gt;&gt; 24;
&gt; +    if (alpha &amp;&amp; alpha != 255) {

Some compilers might make more efficient code if we write this kind of crazy code:

    unsigned char alpha = pixelColor &gt;&gt; 24;
    if (alpha + 1 &lt; 2)

Might be worth testing if that’s faster.

&gt; Source/WebCore/platform/graphics/Color.cpp:420
&gt; -    if (unsigned alpha = color.alpha()) {
&gt; +    unsigned alpha = color.alpha();
&gt; +    if (alpha &amp;&amp; alpha != 255) {

Similarly:

    unsigned char alpha = color.alpha();
    if (alpha + 1 &lt; 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681019</commentid>
    <comment_count>12</comment_count>
      <attachid>148836</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-27 13:12:17 -0700</bug_when>
    <thetext>Comment on attachment 148836
updated patch on top of 89138

If the code is used in such a tight loop, maybe these functions should be inlined, or done with vector operations on systems that support them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681153</commentid>
    <comment_count>13</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-27 15:26:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 148836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148836&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Color.cpp:403
&gt; &gt; -    if (unsigned alpha = (pixelColor &amp; 0xFF000000) &gt;&gt; 24) {
&gt; &gt; +    unsigned alpha = (pixelColor &amp; 0xFF000000) &gt;&gt; 24;
&gt; &gt; +    if (alpha &amp;&amp; alpha != 255) {
&gt; 
&gt; Some compilers might make more efficient code if we write this kind of crazy code:
&gt; 
&gt;     unsigned char alpha = pixelColor &gt;&gt; 24;
&gt;     if (alpha + 1 &lt; 2)
&gt; 
&gt; Might be worth testing if that’s faster.

Actually, it&apos;s much faster.
getImageData and putImageData take now 120ms and 85ms to execute with alpha 128. So, it&apos;s nearly twice faster.

It tried to set red(), green(), blue() and alpha() methods inline, but there was no performance change.

I didn&apos;t try yet to use vectors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681218</commentid>
    <comment_count>14</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-27 16:16:48 -0700</bug_when>
    <thetext>(In reply to comment #13)

&gt; Actually, it&apos;s much faster.
&gt; getImageData and putImageData take now 120ms and 85ms to execute with alpha 128. So, it&apos;s nearly twice faster.
&gt; 

Sorry, I was totally mistaken. Actually, there is no performance win with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685563</commentid>
    <comment_count>15</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-08-02 10:42:21 -0700</bug_when>
    <thetext>Actually, I discovered that skipping the calls to premultipliedARGBFromColor/colorFromPremultipliedARGB, and performing the computation inside the loop is much faster. This optimization is already performed in webkitVideoSinkRender:
http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp?rev=124472#L212
This makes getImageData 10% faster, and putImageData 30% faster.

Then, if I don&apos;t perform the multiply/demultiply when alpha is 255, it&apos;s still 3%/5% slower with transparency. But with the 10%/30% previous win, overall, there is no case with performance loss.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685565</commentid>
    <comment_count>16</comment_count>
      <attachid>156120</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-08-02 10:43:52 -0700</bug_when>
    <thetext>Created attachment 156120
new patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685567</commentid>
    <comment_count>17</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-08-02 10:45:16 -0700</bug_when>
    <thetext>With the new patch, on http://renevier.net/misc/webkit_89246.html

getImageData goes from 275ms to 62ms when alpha is 255
             goes from 255ms to 235ms when alpha is 128
putImageData goes from 165ms to 55ms when alpha is 255
             goes from 160ms to 115ms when alpha is 128

(tested with GtkLauncher)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745065</commentid>
    <comment_count>18</comment_count>
      <attachid>156120</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-18 01:06:11 -0700</bug_when>
    <thetext>Comment on attachment 156120
new patch proposal

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Do not use colorFromPremultipliedARGB in getImageData nor
&gt; +        premultipliedARGBFromColor in putByteArray. Avoiding object creation

Qt has a lot of such optimizations, worth have a look, though some might have moved into Qt itself

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:180
&gt; +            // We don&apos;t use Color::colorFromPremultipliedARGB() here because
&gt; +            // one function call per pixel is just too expensive:
&gt; +            // On standard 200x400 canvas for example, 80000 calls each time.

// Avoid calling Color::colorFromPremultipliedARGB() per pixel for performance reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749939</commentid>
    <comment_count>19</comment_count>
      <attachid>170453</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-10-24 12:48:18 -0700</bug_when>
    <thetext>Created attachment 170453
Patch

updated patch: better comment wording</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750084</commentid>
    <comment_count>20</comment_count>
      <attachid>170453</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 15:01:25 -0700</bug_when>
    <thetext>Comment on attachment 170453
Patch

Rejecting attachment 170453 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ngeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [EFL][WK2] Get rid of Ewk_View private C API (Part 1)

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 154.

Full output: http://queues.webkit.org/results/14553357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751089</commentid>
    <comment_count>21</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-10-25 12:02:36 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 170453 [details])
&gt; Rejecting attachment 170453 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; ngeLog
&gt; CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
&gt; Failed to merge in the changes.
&gt; Patch failed at 0001 [EFL][WK2] Get rid of Ewk_View private C API (Part 1)
&gt; 
&gt; When you have resolved this problem run &quot;git rebase --continue&quot;.
&gt; If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
&gt; To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.
&gt; 
&gt; rebase refs/remotes/origin/master: command returned error: 1
&gt; 
&gt; Died at Tools/Scripts/update-webkit line 154.
&gt; 
&gt; Full output: http://queues.webkit.org/results/14553357

I don&apos;t really understand why it failed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751148</commentid>
    <comment_count>22</comment_count>
      <attachid>170453</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 13:09:14 -0700</bug_when>
    <thetext>Comment on attachment 170453
Patch

Clearing flags on attachment: 170453

Committed r132522: &lt;http://trac.webkit.org/changeset/132522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751149</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 13:09:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147901</attachid>
            <date>2012-06-15 14:34:17 -0700</date>
            <delta_ts>2012-06-21 10:45:36 -0700</delta_ts>
            <desc>patch proposal</desc>
            <filename>bug-89246-20120615143415.patch</filename>
            <type>text/plain</type>
            <size>2495</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdlMmNkYzQxODlmYWJj
OGM3YTk4ZmZmYjRmYTY2M2M5N2ZjMjNiYy4uMzhkZmNjNzhhODU3ODBlNWYzMjM4NmU2ZTdkM2Ew
N2NmOWRmOGU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhcm5vQHJlbmV2aWVyLm5ldD4KKworICAgICAgICBkbyBub3QgbXVsdGlw
bHkvZGVtdWx0aXBseSBjb2xvcnMgd2hlbiBhbHBoYSBpcyAyNTUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgbXVsdGlwbGljYXRpb24vZGVtdWx0
aXBsaWNhdGlvbiBjb21wdXRhdGlvbiB3aGVuIGFscGhhIGlzIDI1NToKKyAgICAgICAgdGhlIHJl
c3VsdCBpcyB0aGUgc2FtZSwgYnV0IGl0J3MgbXVjaCBmYXN0ZXIgKHB1dEltYWdlRGF0YSBpcyBh
Ym91dAorICAgICAgICB0d2ljZSBmYXN0ZXIgYW5kIGdldEltYWdlRGF0YSBpcyBhYm91dCB0aHJl
ZSB0aW1lcyBmYXN0ZXIgb24gY2Fpcm8KKyAgICAgICAgcG9ydHMpCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOiBubyBiZWhhdmlvdXIgY2hhbmdlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJH
Qik6CisgICAgICAgIChXZWJDb3JlOjpwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcik6CisKIDIw
MTItMDYtMTQgIEFybmF1ZCBSZW5ldmllciAgPGFybm9AcmVuZXZpZXIubmV0PgogCiAgICAgICAg
IFtjYWlyb10gaW1wcm92ZSBwdXRCeXRlQXJyYXkgc3BlZWQgYnkgYXZvaWRpbmcgbWF4L21pbiBj
aGVja3MgYXQgQ29sb3IgY29uc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwCmluZGV4IDIyZjgxNjg1YTAwZDgzNjQyMzVjMzRkMmM3ZGY1MjUxYTY3
YjA3NjguLmZmZDM0ZGNkNjllNjk3ZGU0MjBmMmE0YzdjMWVlMDI0Y2M3OTNjMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKQEAgLTM5OSwxMSArMzk5LDEy
IEBAIENvbG9yIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKHVuc2lnbmVkIHBpeGVsQ29sb3Ip
CiB7CiAgICAgUkdCQTMyIHJnYmE7CiAKLSAgICBpZiAodW5zaWduZWQgYWxwaGEgPSAocGl4ZWxD
b2xvciAmIDB4RkYwMDAwMDApID4+IDI0KSB7Ci0gICAgICAgIHJnYmEgPSBtYWtlUkdCQSgoKHBp
eGVsQ29sb3IgJiAweDAwRkYwMDAwKSA+PiAxNikgKiAyNTUgLyBhbHBoYSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICgocGl4ZWxDb2xvciAmIDB4MDAwMEZGMDApID4+IDgpICogMjU1IC8gYWxw
aGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHBpeGVsQ29sb3IgJiAweDAwMDAwMEZGKSAq
IDI1NSAvIGFscGhhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSk7CisgICAgdW5z
aWduZWQgYWxwaGEgPSAocGl4ZWxDb2xvciAmIDB4RkYwMDAwMDApID4+IDI0OworICAgIGlmIChh
bHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsKKyAgICAgICAgcmdiYSA9IGFscGhhIDw8IDI0IHwKKyAg
ICAgICAgICAgICAoKChwaXhlbENvbG9yICYgMHgwMEZGMDAwMCkgPj4gMTYpICogMjU1IC8gYWxw
aGEpIDw8IDE2IHwKKyAgICAgICAgICAgICAoKChwaXhlbENvbG9yICYgMHgwMDAwRkYwMCkgPj4g
OCkgKiAyNTUgLyBhbHBoYSkgPDwgOCB8CisgICAgICAgICAgICAgKHBpeGVsQ29sb3IgJiAweDAw
MDAwMEZGKSAqIDI1NSAvIGFscGhhOwogICAgIH0gZWxzZQogICAgICAgICByZ2JhID0gcGl4ZWxD
b2xvcjsKIApAQCAtNDE0LDcgKzQxNSw4IEBAIHVuc2lnbmVkIHByZW11bHRpcGxpZWRBUkdCRnJv
bUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICB1bnNpZ25lZCBwaXhlbENvbG9yOwog
Ci0gICAgaWYgKHVuc2lnbmVkIGFscGhhID0gY29sb3IuYWxwaGEoKSkgeworICAgIHVuc2lnbmVk
IGFscGhhID0gY29sb3IuYWxwaGEoKTsKKyAgICBpZiAoYWxwaGEgJiYgYWxwaGEgIT0gMjU1KSB7
CiAgICAgICAgIHBpeGVsQ29sb3IgPSBhbHBoYSA8PCAyNCB8CiAgICAgICAgICAgICAgKChjb2xv
ci5yZWQoKSAqIGFscGhhICArIDI1NCkgLyAyNTUpIDw8IDE2IHwgCiAgICAgICAgICAgICAgKChj
b2xvci5ncmVlbigpICogYWxwaGEgICsgMjU0KSAvIDI1NSkgPDwgOCB8IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148836</attachid>
            <date>2012-06-21 10:45:48 -0700</date>
            <delta_ts>2012-08-02 10:43:44 -0700</delta_ts>
            <desc>updated patch on top of 89138</desc>
            <filename>bug-89246-20120621104547.patch</filename>
            <type>text/plain</type>
            <size>2047</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBhZTIwMDhlOGNlZTFm
NzQ0ODU1MGUwMGZkYmI4ZjE0ODY1N2E1YS4uNWY4MDlmMDM3MDExNGFmODIzZGI3MjY2MTg0OTZi
MGFmNGJmNDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA2LTIxICBBcm5h
dWQgUmVuZXZpZXIgIDxhcm5vQHJlbmV2aWVyLm5ldD4KKworICAgICAgICBkbyBub3QgbXVsdGlw
bHkvZGVtdWx0aXBseSBjb2xvcnMgd2hlbiBhbHBoYSBpcyAyNTUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgbXVsdGlwbGljYXRpb24vZGVtdWx0
aXBsaWNhdGlvbiBjb21wdXRhdGlvbiB3aGVuIGFscGhhIGlzIDI1NToKKyAgICAgICAgdGhlIHJl
c3VsdCBpcyB0aGUgc2FtZSwgYnV0IGl0J3MgYWJvdXQgdHdpY2UgZmFzdGVyIHdoZW4gdGhlcmUg
aXMgbm8KKyAgICAgICAgdHJhbnNwYXJlbmN5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBubyBi
ZWhhdmlvdXIgY2hhbmdlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQik6CisgICAgICAg
IChXZWJDb3JlOjpwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcik6CisKIDIwMTItMDYtMjEgIFRh
aWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFVuaWZ5IEZpbGVTeXN0ZW0gY2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHAKaW5kZXggNzNkOGU5NWVkM2E2NjgzYmRhMzRiNzFlZjdmZjU4M2QzYmU2
YTM4NS4uMGFkYmQ1MDQ3YTQ4OTc1OGE5ZjcwNTc3MTczYWRmYzliYWVhMDIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtMzk5LDcgKzM5OSw4IEBA
IENvbG9yIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKHVuc2lnbmVkIHBpeGVsQ29sb3IpCiB7
CiAgICAgQ29sb3IgY29sb3I7CiAKLSAgICBpZiAodW5zaWduZWQgYWxwaGEgPSAocGl4ZWxDb2xv
ciAmIDB4RkYwMDAwMDApID4+IDI0KSB7CisgICAgdW5zaWduZWQgYWxwaGEgPSAocGl4ZWxDb2xv
ciAmIDB4RkYwMDAwMDApID4+IDI0OworICAgIGlmIChhbHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsK
ICAgICAgICAgY29sb3IgPSBDb2xvcjo6Y3JlYXRlVW5DaGVrZWQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAoKHBpeGVsQ29sb3IgJiAweDAwRkYwMDAwKSA+PiAxNikgKiAyNTUgLyBhbHBoYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICgocGl4ZWxDb2xvciAmIDB4MDAwMEZGMDApID4+IDgp
ICogMjU1IC8gYWxwaGEsCkBAIC00MTUsNyArNDE2LDggQEAgdW5zaWduZWQgcHJlbXVsdGlwbGll
ZEFSR0JGcm9tQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHVuc2lnbmVkIHBpeGVs
Q29sb3I7CiAKLSAgICBpZiAodW5zaWduZWQgYWxwaGEgPSBjb2xvci5hbHBoYSgpKSB7CisgICAg
dW5zaWduZWQgYWxwaGEgPSBjb2xvci5hbHBoYSgpOworICAgIGlmIChhbHBoYSAmJiBhbHBoYSAh
PSAyNTUpIHsKICAgICAgICAgcGl4ZWxDb2xvciA9IGFscGhhIDw8IDI0IHwKICAgICAgICAgICAg
ICAoKGNvbG9yLnJlZCgpICogYWxwaGEgICsgMjU0KSAvIDI1NSkgPDwgMTYgfCAKICAgICAgICAg
ICAgICAoKGNvbG9yLmdyZWVuKCkgKiBhbHBoYSAgKyAyNTQpIC8gMjU1KSA8PCA4IHwgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156120</attachid>
            <date>2012-08-02 10:43:52 -0700</date>
            <delta_ts>2012-10-24 12:48:15 -0700</delta_ts>
            <desc>new patch proposal</desc>
            <filename>bug-89246-20120802104332.patch</filename>
            <type>text/plain</type>
            <size>4823</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYzNTdkODBkN2VhYTAw
OGVlYzJjZTEzZWFmNDQxZWJmYjAxYWU5MS4uMTcxYWIzM2I4NDJjZGJlNzhhMzc2ZGZjOTQyZjdl
NmYzYjM1M2Y3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTAyICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgZG8g
bm90IG11bHRpcGx5L2RlbXVsdGlwbHkgY29sb3JzIHdoZW4gYWxwaGEgaXMgMjU1CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTI0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCB1c2UgY29sb3JG
cm9tUHJlbXVsdGlwbGllZEFSR0IgaW4gZ2V0SW1hZ2VEYXRhIG5vcgorICAgICAgICBwcmVtdWx0
aXBsaWVkQVJHQkZyb21Db2xvciBpbiBwdXRCeXRlQXJyYXkuIEF2b2lkaW5nIG9iamVjdCBjcmVh
dGlvbgorICAgICAgICBhbmQgZnVuY3Rpb24gY2FsbCBtYWtlIGNhbnZhcy5nZXRJbWFnZURhdGEg
YWJvdXQgMTAlIGZhc3RlciBhbmQKKyAgICAgICAgY2FudmFzLnB1dEltYWdlRGF0YSBhYm91dCAz
MCUgZmFzdGVyLgorCisgICAgICAgIEFsc28sIHdlIGF2b2lkIG11bHRpcGxpY2F0aW9uL2RlbXVs
dGlwbGljYXRpb24gY29tcHV0YXRpb24gd2hlbiBhbHBoYQorICAgICAgICBpcyAyNTUuIFJlc3Vs
dCBpcyB0aGUgc2FtZSwgYnV0IHdoZW4gdGhlcmUgaXMgbm8gdHJhbnNwYXJlbmN5LAorICAgICAg
ICBjYW52YXMuZ2V0SW1hZ2VEYXRhIGlzIGFib3V0IDR4IGZhc3RlciwgYW5kIGNhbnZhcy5wdXRJ
bWFnZURhdGEgaXMKKyAgICAgICAgYWJvdXQgMnggZmFzdGVyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFn
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisK
IDIwMTItMDgtMDEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNv
bT4KIAogICAgICAgICBbVjhdIFR5cGVkQXJyYXkgYmluZGluZyBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggM2I0YzljY2YzNTg2ZWRlMzBiYTc0YTFk
ZGQwNTJjNGQ1MDkzMzMzZi4uNmZjYzI5YTI4M2ZlYTM3NGM4NWUzM2MzMDgyZmJkZGYwZGFmMTQ4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE3NCwxNSArMTc0LDI3IEBAIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbWFnZUJ1ZmZlCiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbnVtQ29sdW1uczsg
eCsrKSB7CiAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKICAgICAgICAgICAgIHVuc2ln
bmVkKiBwaXhlbCA9IHJvdyArIHggKyBvcmlnaW54OwotICAgICAgICAgICAgQ29sb3IgcGl4ZWxD
b2xvcjsKLSAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkKLSAgICAg
ICAgICAgICAgICBwaXhlbENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVs
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwaXhlbENvbG9yID0gQ29sb3Io
KnBpeGVsKTsKLSAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSAgICAgPSBwaXhlbENvbG9yLnJl
ZCgpOwotICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IHBpeGVsQ29sb3IuZ3JlZW4o
KTsKLSAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBwaXhlbENvbG9yLmJsdWUoKTsK
LSAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBwaXhlbENvbG9yLmFscGhhKCk7CisK
KyAgICAgICAgICAgIC8vIFdlIGRvbid0IHVzZSBDb2xvcjo6Y29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoKSBoZXJlIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIG9uZSBmdW5jdGlvbiBjYWxsIHBl
ciBwaXhlbCBpcyBqdXN0IHRvbyBleHBlbnNpdmU6CisgICAgICAgICAgICAvLyBPbiBzdGFuZGFy
ZCAyMDB4NDAwIGNhbnZhcyBmb3IgZXhhbXBsZSwgODAwMDAgY2FsbHMgZWFjaCB0aW1lLgorICAg
ICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSAoKnBpeGVsICYgMHhGRjAwMDAwMCkgPj4gMjQ7Cisg
ICAgICAgICAgICB1bnNpZ25lZCByZWQgPSAoKnBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTY7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBncmVlbiA9ICgqcGl4ZWwgJiAweDAwMDBGRjAwKSA+PiA4Owor
ICAgICAgICAgICAgdW5zaWduZWQgYmx1ZSA9ICgqcGl4ZWwgJiAweDAwMDAwMEZGKTsKKworICAg
ICAgICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGFscGhhICYmIGFscGhhICE9IDI1NSkgeworICAgICAgICAgICAgICAgICAgICByZWQg
PSByZWQgKiAyNTUgLyBhbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgZ3JlZW4gPSBncmVlbiAq
IDI1NSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBibHVlID0gYmx1ZSAqIDI1NSAvIGFs
cGhhOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVz
dFJvd3NbYmFzZXhdICAgICA9IHJlZDsKKyAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0g
PSBncmVlbjsKKyAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBibHVlOworICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwogICAgICAgICB9CiAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CkBAIC0yNDEsMTQgKzI1MywyNCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG51bUNv
bHVtbnM7IHgrKykgewogICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CiAgICAgICAgICAg
ICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4ICsgZGVzdHg7Ci0gICAgICAgICAgICBDb2xvciBw
aXhlbENvbG9yID0gQ29sb3I6OmNyZWF0ZVVuQ2hla2VkKHNyY1Jvd3NbYmFzZXhdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNSb3dzW2Jh
c2V4ICsgMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNyY1Jvd3NbYmFzZXggKyAyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3JjUm93c1tiYXNleCArIDNdKTsKLSAgICAgICAgICAg
IGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkKLSAgICAgICAgICAgICAgICAqcGl4ZWwg
PSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihwaXhlbENvbG9yKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAqcGl4ZWwgPSBwaXhlbENvbG9yLnJnYigpOworCisgICAgICAg
ICAgICAvLyBXZSBkb24ndCB1c2UgQ29sb3I6OnByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkg
aGVyZSBiZWNhdXNlCisgICAgICAgICAgICAvLyBvbmUgZnVuY3Rpb24gY2FsbCBwZXIgcGl4ZWwg
aXMganVzdCB0b28gZXhwZW5zaXZlOgorICAgICAgICAgICAgLy8gT24gc3RhbmRhcmQgMjAweDQw
MCBjYW52YXMgZm9yIGV4YW1wbGUsIDgwMDAwIGNhbGxzIGVhY2ggdGltZS4KKyAgICAgICAgICAg
IHVuc2lnbmVkIHJlZCA9IHNyY1Jvd3NbYmFzZXhdOworICAgICAgICAgICAgdW5zaWduZWQgZ3Jl
ZW4gPSBzcmNSb3dzW2Jhc2V4ICsgMV07CisgICAgICAgICAgICB1bnNpZ25lZCBibHVlID0gc3Jj
Um93c1tiYXNleCArIDJdOworICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBzcmNSb3dzW2Jh
c2V4ICsgM107CisKKyAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkg
eworICAgICAgICAgICAgICAgIGlmIChhbHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVkID0gKHJlZCAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAg
ICAgICAgICAgZ3JlZW4gPSAoZ3JlZW4gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAgICAgICAg
ICAgICAgICAgIGJsdWUgPSAoYmx1ZSAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICpwaXhlbCA9IChhbHBoYSA8PCAy
NCkgfCByZWQgIDw8IDE2IHwgZ3JlZW4gIDw8IDggfCBibHVlOwogICAgICAgICB9CiAgICAgICAg
IHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170453</attachid>
            <date>2012-10-24 12:48:18 -0700</date>
            <delta_ts>2012-10-25 13:09:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89246-20121024124652.patch</filename>
            <type>text/plain</type>
            <size>4690</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFlNGE0MzNkNzdmYTdi
YWY3ZjdjNTA1YmMxN2Y4Njc5ODM3MTMxZC4uNGRlYjU3NDg0ODNlYTYzY2IxMjgzMDQzZmQ5OTJk
YjQ1NzE0ZTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEwLTI0ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgZG8g
bm90IG11bHRpcGx5L2RlbXVsdGlwbHkgY29sb3JzIHdoZW4gYWxwaGEgaXMgMjU1CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTI0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIERvIG5v
dCB1c2UgY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IgaW4gZ2V0SW1hZ2VEYXRhIG5vcgorICAg
ICAgICBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvciBpbiBwdXRCeXRlQXJyYXkuIEF2b2lkaW5n
IG9iamVjdCBjcmVhdGlvbgorICAgICAgICBhbmQgZnVuY3Rpb24gY2FsbCBtYWtlIGNhbnZhcy5n
ZXRJbWFnZURhdGEgYWJvdXQgMTAlIGZhc3RlciBhbmQKKyAgICAgICAgY2FudmFzLnB1dEltYWdl
RGF0YSBhYm91dCAzMCUgZmFzdGVyLgorCisgICAgICAgIEFsc28sIHdlIGF2b2lkIG11bHRpcGxp
Y2F0aW9uL2RlbXVsdGlwbGljYXRpb24gY29tcHV0YXRpb24gd2hlbiBhbHBoYQorICAgICAgICBp
cyAyNTUuIFJlc3VsdCBpcyB0aGUgc2FtZSwgYnV0IHdoZW4gdGhlcmUgaXMgbm8gdHJhbnNwYXJl
bmN5LAorICAgICAgICBjYW52YXMuZ2V0SW1hZ2VEYXRhIGlzIGFib3V0IDR4IGZhc3RlciwgYW5k
IGNhbnZhcy5wdXRJbWFnZURhdGEgaXMKKyAgICAgICAgYWJvdXQgMnggZmFzdGVyLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5
dGVBcnJheSk6CisKIDIwMTItMTAtMTYgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lz
YS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbZ3N0cmVhbWVyXSB2aWRlbyBlcnJvciBpZiBnc3Rf
YXBwX3NyY19wdXNoX2J1ZmZlciByZXR1cm5zIEdTVF9GTE9XX1dST05HX1NUQVRFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCmluZGV4IDhjY2I4ZDliYzgxMTgwYjM5NTU2MzM0MGQ4MGM5YTVhM2QyYWFk
ZDguLjcyMmNiNjk5OWM5YWNiOTc3Y2EyYzUxOWZjZWNiYjZmODE2M2JiZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCkBAIC0xNzUsMTUgKzE3NSwyNiBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZm
ZQogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7IHgrKykgewogICAgICAg
ICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CiAgICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSBy
b3cgKyB4ICsgb3JpZ2lueDsKLSAgICAgICAgICAgIENvbG9yIHBpeGVsQ29sb3I7Ci0gICAgICAg
ICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQpCi0gICAgICAgICAgICAgICAgcGl4
ZWxDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcGl4ZWxDb2xvciA9IENvbG9yKCpwaXhlbCk7Ci0gICAg
ICAgICAgICBkZXN0Um93c1tiYXNleF0gICAgID0gcGl4ZWxDb2xvci5yZWQoKTsKLSAgICAgICAg
ICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSBwaXhlbENvbG9yLmdyZWVuKCk7Ci0gICAgICAgICAg
ICBkZXN0Um93c1tiYXNleCArIDJdID0gcGl4ZWxDb2xvci5ibHVlKCk7Ci0gICAgICAgICAgICBk
ZXN0Um93c1tiYXNleCArIDNdID0gcGl4ZWxDb2xvci5hbHBoYSgpOworCisgICAgICAgICAgICAv
LyBBdm9pZCBjYWxsaW5nIENvbG9yOjpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigpIGJlY2F1
c2Ugb25lCisgICAgICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIHBlciBwaXhlbCBpcyB0b28gZXhw
ZW5zaXZlLgorICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSAoKnBpeGVsICYgMHhGRjAwMDAw
MCkgPj4gMjQ7CisgICAgICAgICAgICB1bnNpZ25lZCByZWQgPSAoKnBpeGVsICYgMHgwMEZGMDAw
MCkgPj4gMTY7CisgICAgICAgICAgICB1bnNpZ25lZCBncmVlbiA9ICgqcGl4ZWwgJiAweDAwMDBG
RjAwKSA+PiA4OworICAgICAgICAgICAgdW5zaWduZWQgYmx1ZSA9ICgqcGl4ZWwgJiAweDAwMDAw
MEZGKTsKKworICAgICAgICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGFscGhhICYmIGFscGhhICE9IDI1NSkgeworICAgICAgICAgICAg
ICAgICAgICByZWQgPSByZWQgKiAyNTUgLyBhbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgZ3Jl
ZW4gPSBncmVlbiAqIDI1NSAvIGFscGhhOworICAgICAgICAgICAgICAgICAgICBibHVlID0gYmx1
ZSAqIDI1NSAvIGFscGhhOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZGVzdFJvd3NbYmFzZXhdICAgICA9IHJlZDsKKyAgICAgICAgICAgIGRlc3RSb3dz
W2Jhc2V4ICsgMV0gPSBncmVlbjsKKyAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBi
bHVlOworICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwogICAgICAgICB9
CiAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CkBAIC0yNDIsMTQg
KzI1MywyMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlw
bGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IG51bUNvbHVtbnM7IHgrKykgewogICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7
CiAgICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4ICsgZGVzdHg7Ci0gICAgICAg
ICAgICBDb2xvciBwaXhlbENvbG9yID0gQ29sb3I6OmNyZWF0ZVVuQ2hla2VkKHNyY1Jvd3NbYmFz
ZXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzcmNSb3dzW2Jhc2V4ICsgMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNyY1Jvd3NbYmFzZXggKyAyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUm93c1tiYXNleCArIDNdKTsK
LSAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCkKLSAgICAgICAgICAg
ICAgICAqcGl4ZWwgPSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihwaXhlbENvbG9yKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqcGl4ZWwgPSBwaXhlbENvbG9yLnJnYigp
OworCisgICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIENvbG9yOjpwcmVtdWx0aXBsaWVkQVJH
QkZyb21Db2xvcigpIGJlY2F1c2Ugb25lCisgICAgICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIHBl
ciBwaXhlbCBpcyB0b28gZXhwZW5zaXZlLgorICAgICAgICAgICAgdW5zaWduZWQgcmVkID0gc3Jj
Um93c1tiYXNleF07CisgICAgICAgICAgICB1bnNpZ25lZCBncmVlbiA9IHNyY1Jvd3NbYmFzZXgg
KyAxXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJsdWUgPSBzcmNSb3dzW2Jhc2V4ICsgMl07Cisg
ICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsKKworICAgICAg
ICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKSB7CisgICAgICAgICAgICAgICAg
aWYgKGFscGhhICYmIGFscGhhICE9IDI1NSkgeworICAgICAgICAgICAgICAgICAgICByZWQgPSAo
cmVkICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAgICAgICBncmVlbiA9IChn
cmVlbiAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgYmx1ZSA9IChi
bHVlICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgKnBpeGVsID0gKGFscGhhIDw8IDI0KSB8IHJlZCAgPDwgMTYgfCBn
cmVlbiAgPDwgOCB8IGJsdWU7CiAgICAgICAgIH0KICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRl
c1BlclJvdzsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>