<?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>23400</bug_id>
          
          <creation_ts>2009-01-16 19:24:17 -0800</creation_ts>
          <short_desc>eval can return the incorrect result if an exception is thrown and caught</short_desc>
          <delta_ts>2009-02-12 20:11:03 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Brichford">chrisb</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>olaru</cc>
    
    <cc>oliver</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106160</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Brichford">chrisb</who>
    <bug_when>2009-01-16 19:24:17 -0800</bug_when>
    <thetext>In the latest nightly ( r40000 ) on the mac, JSCore&apos;s eval will return the incorrect value for the following code:

eval(&quot;1; try { 2; throw \&quot;\&quot;; } catch (e){}&quot;);

JSCore&apos;s eval will return an empty string instead of 1.  Attached is a small test suite that tests various forms of eval strings.  All of the tests in the suite pass in FireFox 3 and IE 7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106161</commentid>
    <comment_count>1</comment_count>
      <attachid>26821</attachid>
    <who name="Chris Brichford">chrisb</who>
    <bug_when>2009-01-16 19:25:19 -0800</bug_when>
    <thetext>Created attachment 26821
small eval test suite</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106163</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Brichford">chrisb</who>
    <bug_when>2009-01-16 19:32:08 -0800</bug_when>
    <thetext>I ran into this in WebKit as of r34190.  In that version of WebKit I was able to fix this problem, by changing ExprStatementNode::emitCode to be:

RegisterID* ExprStatementNode::emitCode(CodeGenerator&amp; generator, RegisterID* dst)
{
    ASSERT(m_expr);
    RefPtr&lt;RegisterID&gt; value = generator.emitNode(m_expr.get());
    return dst ? generator.moveToDestinationIfNeeded(dst, value.get()) : value.get();
}

This is a somewhat crude fix, but hopefully safe fix.  It has the unfortunate side effect of causing every statement in an eval to put its result in a temporary and then move it to dst.  Code in functions in an eval is not affected, because dst for those statements is 0.

I think the correct fix may be to audit all uses of dst in Nodes.cpp to make sure dst is never used to store a temporary value unless all subsequent instruction emitted for the node can not throw an exception.  That seems very fragile and it the perf improvement to eval calls may not be worth the extra maintenance cost.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106195</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-17 04:14:47 -0800</bug_when>
    <thetext>Confirmed with r39961.

Just to clarify, the result in shipping Safari/WebKit does not match expectations either (1 vs. &quot;&quot; vs. 2). The attached test has several examples where ToT behavior is different, but no changes from correct to incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108119</commentid>
    <comment_count>4</comment_count>
      <attachid>27280</attachid>
    <who name="Horia Olaru">olaru</who>
    <bug_when>2009-02-03 08:18:40 -0800</bug_when>
    <thetext>Created attachment 27280
Patch with fix and test suite.

Following up with the fix for Chris Brichfort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108120</commentid>
    <comment_count>5</comment_count>
      <attachid>27280</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-02-03 08:27:28 -0800</bug_when>
    <thetext>Comment on attachment 27280
Patch with fix and test suite.

Have you perf tested this?  I&apos;m concerned that ExprStatementNode::emitBytecode changes will result in an additional copy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108437</commentid>
    <comment_count>6</comment_count>
      <attachid>27348</attachid>
    <who name="Horia Olaru">olaru</who>
    <bug_when>2009-02-05 07:36:10 -0800</bug_when>
    <thetext>Created attachment 27348
Another fix and test suite

After running the console sunspider tests the previous patch had results in the range of *1.006x as slow* compared to ToT.
Attaching a revised patch that improves performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109570</commentid>
    <comment_count>7</comment_count>
      <attachid>27348</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-02-12 15:21:03 -0800</bug_when>
    <thetext>Comment on attachment 27348
Another fix and test suite

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109608</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-02-12 20:11:03 -0800</bug_when>
    <thetext>landed.

Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/parser/Nodes.cpp
Sending        LayoutTests/ChangeLog
Adding         LayoutTests/fast/js/eval-throw-return-expected.txt
Adding         LayoutTests/fast/js/eval-throw-return.html
Adding         LayoutTests/fast/js/resources/eval-throw-return.js
Transmitting file data ......
Committed revision 40962.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26821</attachid>
            <date>2009-01-16 19:25:19 -0800</date>
            <delta_ts>2009-01-16 19:25:19 -0800</delta_ts>
            <desc>small eval test suite</desc>
            <filename>foo.html</filename>
            <type>text/html</type>
            <size>2722</size>
            <attacher name="Chris Brichford">chrisb</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjxzY3JpcHQ+PCEtLQ0KZnVuY3Rpb24gdGhyb3dGdW5jKCkgew0KICB0
aHJvdyAiIjsNCn0NCg0KZnVuY3Rpb24gZG9FdmFsVGVzdChzdHJUb0V2YWwsIGV4cGVjdGVkKQ0K
ew0KICB2YXIgYWN0dWFsID0gZXZhbChzdHJUb0V2YWwpOw0KICB2YXIgcGFzc2VkID0gZmFsc2U7
DQogIGlmICgoYWN0dWFsID09PSBleHBlY3RlZCkgfHwgKGFjdHVhbCA9PSBleHBlY3RlZCkpDQog
ICAgcGFzc2VkID0gdHJ1ZTsNCiAgDQogIHZhciBldmFsVGV4dCA9IHdpbmRvdy5kb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShzdHJUb0V2YWwpOw0KICB2YXIgZXZhbFREID0gd2luZG93LmRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIik7DQogIGV2YWxURC5hcHBlbmRDaGlsZChldmFsVGV4dCk7DQog
IA0KICBpZiAoZXhwZWN0ZWQgPT09IHVuZGVmaW5lZCkNCiAgICBleHBlY3RlZCA9ICJ1bmRlZmlu
ZWQiOw0KICB2YXIgZXhwZWN0ZWRUZXh0ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGV4cGVjdGVkLnRvU3RyaW5nKCkpOw0KICB2YXIgZXhwZWN0ZWRURCA9IHdpbmRvdy5kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZCIpOw0KICBleHBlY3RlZFREIC5hcHBlbmRDaGlsZChleHBlY3Rl
ZFRleHQpOw0KDQogIGlmIChhY3R1YWwgPT09IHVuZGVmaW5lZCkNCiAgICBhY3R1YWwgPSAidW5k
ZWZpbmVkIjsNCiAgdmFyIGFjdHVhbFRleHQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoYWN0dWFsLnRvU3RyaW5nKCkpOw0KICB2YXIgYWN0dWFsVEQgPSB3aW5kb3cuZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsNCiAgYWN0dWFsVEQuYXBwZW5kQ2hpbGQoYWN0dWFsVGV4dCk7
DQoNCiAgdmFyIHBhc3NUZXh0ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhc3Nl
ZC50b1N0cmluZygpKTsNCiAgdmFyIHBhc3NURCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0ZCIpOw0KICBwYXNzVEQuYXBwZW5kQ2hpbGQocGFzc1RleHQpOw0KDQogIHZhciByZXN1
bHRUUiA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOw0KICByZXN1bHRUUi5h
cHBlbmRDaGlsZChldmFsVEQpOw0KICByZXN1bHRUUi5hcHBlbmRDaGlsZChleHBlY3RlZFREKTsN
CiAgcmVzdWx0VFIuYXBwZW5kQ2hpbGQoYWN0dWFsVEQpOw0KICByZXN1bHRUUi5hcHBlbmRDaGls
ZChwYXNzVEQpOw0KDQogIGlmIChwYXNzZWQpDQogICAgcmVzdWx0VFIuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gImdyZWVuIjsNCiAgZWxzZQ0KICAgIHJlc3VsdFRSLnN0eWxlLmJhY2tncm91bmRD
b2xvciA9ICJyZWQiOw0KDQogIHZhciByZXN1bHRzID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHRzIik7DQogIHJlc3VsdHMuYXBwZW5kQ2hpbGQocmVzdWx0VFIpOw0KfQ0K
DQotLT4NCjwvc2NyaXB0Pg0KPHNjcmlwdD48IS0tDQoNCmZ1bmN0aW9uIHRocm93T25SZXR1cm4o
KXsNCiAgMTsNCiAgcmV0dXJuIHRocm93RnVuYygpOw0KfSANCg0KZnVuY3Rpb24gdHdvRnVuYygp
IHsNCiAgMjsNCn0NCg0KZnVuY3Rpb24gb25Mb2FkKCkgew0KICBkb0V2YWxUZXN0KCIxOyIsIDEp
Ow0KICBkb0V2YWxUZXN0KCIxOyB0cnkgeyBmb28gPSBbMiwzLHRocm93RnVuYygpLCA0XTsgfSBj
YXRjaCAoZSl7fSIsIDEpOw0KICBkb0V2YWxUZXN0KCIxOyB0cnkgeyAyOyB0aHJvdyBcIlwiOyB9
IGNhdGNoIChlKXt9IiwgMik7DQogIGRvRXZhbFRlc3QoIjE7IHRyeSB7IDI7IHRocm93RnVuYygp
OyB9IGNhdGNoIChlKXt9IiwgMik7DQogIGRvRXZhbFRlc3QoIjE7IHRyeSB7IDI7IHRocm93RnVu
YygpOyB9IGNhdGNoIChlKXszO30gZmluYWxseSB7fSIsIDMpOw0KICBkb0V2YWxUZXN0KCIxOyB0
cnkgeyAyOyB0aHJvd0Z1bmMoKTsgfSBjYXRjaCAoZSl7Mzt9IGZpbmFsbHkgezQ7fSIsIDQpOw0K
ICBkb0V2YWxUZXN0KCJmdW5jdGlvbiBibGFoKCkgeyAxOyB9XG4gYmxhaCgpOyIsIHVuZGVmaW5l
ZCk7DQogIGRvRXZhbFRlc3QoInZhciB4ID0gMTsiLCB1bmRlZmluZWQpOw0KICBkb0V2YWxUZXN0
KCJpZiAodHJ1ZSkgeyAxOyB9IGVsc2UgeyAyOyB9IiwgMSk7DQogIGRvRXZhbFRlc3QoImlmIChm
YWxzZSkgeyAxOyB9IGVsc2UgeyAyOyB9IiwgMik7DQogIGRvRXZhbFRlc3QoInRyeXsxOyBpZiAo
dHJ1ZSkgeyAyOyB0aHJvdyBcIlwiOyB9IGVsc2UgeyAyOyB9fSBjYXRjaChlKXt9IiwgMik7DQog
IGRvRXZhbFRlc3QoIjE7IHZhciBpID0gMDsgZG8geyArK2k7IDI7IH0gd2hpbGUoaSE9MSk7Iiwg
Mik7DQogIGRvRXZhbFRlc3QoInRyeXsxOyB2YXIgaSA9IDA7IGRvIHsgKytpOyAyOyB0aHJvdyBc
IlwiOyB9IHdoaWxlKGkhPTEpO30gY2F0Y2goZSl7fSIsIDIpOw0KICBkb0V2YWxUZXN0KCIxOyB0
cnl7MjsgdGhyb3dPblJldHVybigpO30gY2F0Y2goZSl7fSIsIDIpOw0KICBkb0V2YWxUZXN0KCIx
OyB0d29GdW5jKCk7IiwgdW5kZWZpbmVkKTsNCiAgZG9FdmFsVGVzdCgiMTsgd2l0aCAoIHsgYTog
MCB9ICkgeyAyOyB9IiwgMik7DQoNCn0NCg0KLS0+PC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+DQogIDx0YWJsZT48dGJvZHkgaWQ9InJlc3VsdHMiPjx0cj48dGQ+
RXZhbCBTdHJpbmc8L3RkPjx0ZD5FeHBlY3RlZDwvdGQ+PHRkPkFjdHVhbDwvdGQ+PHRkPlBhc3M8
L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPg0KPC9ib2R5Pg0KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27280</attachid>
            <date>2009-02-03 08:18:40 -0800</date>
            <delta_ts>2009-02-05 07:36:10 -0800</delta_ts>
            <desc>Patch with fix and test suite.</desc>
            <filename>EvalPatch.txt</filename>
            <type>text/plain</type>
            <size>7173</size>
            <attacher name="Horia Olaru">olaru</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQwNTM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDItMDMgIEhvcmlhIE9s
YXJ1ICA8b2xhcnVAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJ1ZyAyMzQwMDogZXZhbCBjYW4gcmV0dXJuIHRoZSBpbmNvcnJlY3Qg
cmVzdWx0IGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYW5kIGNhdWdodAorICAgICAgICA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAwPgorCisgICAgICAgIFRo
ZSBkZXN0aW5hdGlvbiByZWdpc3RlciBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiBhbiBldmFsIHN0
YXRlbWVudCBnZXRzIG92ZXJ3cml0dGVuIHdoZW4KKyAgICAgICAgYW4gdGhlIGV4Y2VwdGlvbiBp
cyB0aHJvd24gYW5kIHRoZSByZXR1cm4gdmFsdWVzIGlzIGxvc3QuIFRoZSBmaXggY2F1c2VzIGFs
bCBzdGF0ZW1lbnRzCisgICAgICAgIGluIHRoZSBldmFsIHRvIHB1dCB0aGVpciByZXR1cm4gcmVz
dWx0IGludG8gYSB0ZW1wb3JhcnkgYW5kIHRoZW4gbW92ZSBpdCB0byBkc3QuCisKKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpFeHByU3RhdGVtZW50Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUpOgorCiAyMDA5LTAyLTAzICBEbWl0
cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9u
IDQwNTM0KQorKysgSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY0Miw3ICsxNjQyLDggQEAgUmVnaXN0ZXJJRCogRGVidWdnZXJTdGF0ZW1lbnROb2Rl
OjplbWl0QgogUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQVNTRVJU
KG1fZXhwcik7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZXhwci5nZXQo
KSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1f
ZXhwci5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgdmFsdWUuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gVmFyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0y
MDE0LDcgKzIwMTUsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRz
dCA9IDA7Ci0gICAgUmVnaXN0ZXJJRCogcjAgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV92YWx1ZS5nZXQoKSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSZWdpc3RlcklEKiByMCA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGUo
bV92YWx1ZS5nZXQoKSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsK
ICAgICBpZiAoZ2VuZXJhdG9yLnNjb3BlRGVwdGgoKSkgewogICAgICAgICBSZWZQdHI8TGFiZWw+
IGwwID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcFNj
b3BlcyhsMC5nZXQoKSwgMCk7CkBAIC0yMjkzLDEwICsyMjk0LDEwIEBAIFJlZ2lzdGVySUQqIFRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIuZ2V0KCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBleHByID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwci5nZXQoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleHByLmdldCgpKTsKLSAgICBy
ZXR1cm4gZHN0OworICAgIHJldHVybiAwOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gVHJ5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNDA1MzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wMi0wMyAgSG9yaWEgT2xhcnUgIDxvbGFy
dUBhZG9iZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwk8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAwPgkKKworCVRlc3Qg
Y2FzZXMgZm9yIGV2YWwgcmV0dXJuIHZhbHVlcywgaW5jbHVkaW5nIGNhc2VzIHdoZW4gdGhlIGV2
YWwgc3RyaW5nIHRocm93cyBhbmQgY2F0Y2hlcyBhbiBleGNlcHRpb24KKworICAgICAgICAqIGZh
c3QvanMvZXZhbC10aHJvdy1yZXR1cm4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL2V2YWwtdGhyb3ctcmV0dXJuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVzb3VyY2VzL2V2YWwtdGhyb3ctcmV0dXJuLmpzOiBBZGRlZC4KKyAgICAgICAgKHRocm93RnVu
Yyk6CisgICAgICAgICh0aHJvd09uUmV0dXJuKToKKyAgICAgICAgKHR3b0Z1bmMpOgorCiAyMDA5
LTAyLTAzICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L2V2YWwtdGhyb3ctcmV0dXJuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2V2YWwtdGhyb3ctcmV0dXJuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvZXZhbC10aHJvdy1yZXR1cm4tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIHJlc3VsdCBy
ZXR1cm5lZCBieSB0aGUgZXZhbCBmdW5jdGlvbiB3aGVuIGV4Y2VwdGlvbnMgYXJlIHRocm93biBh
bmQgY2F1Z2h0IHdoaXRoaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBldmFsdWF0ZWQgc3RyaW5nLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBldmFsKCIxOyIpIGlzIDEKK1BB
U1MgZXZhbCgiMTsgdHJ5IHsgZm9vID0gWzIsMyx0aHJvd0Z1bmMoKSwgNF07IH0gY2F0Y2ggKGUp
e30iKSBpcyAxCitQQVNTIGV2YWwoIjE7IHRyeSB7IDI7IHRocm93IFwiXCI7IH0gY2F0Y2ggKGUp
e30iKSBpcyAyCitQQVNTIGV2YWwoIjE7IHRyeSB7IDI7IHRocm93RnVuYygpOyB9IGNhdGNoIChl
KXt9IikgaXMgMgorUEFTUyBldmFsKCIxOyB0cnkgeyAyOyB0aHJvd0Z1bmMoKTsgfSBjYXRjaCAo
ZSl7Mzt9IGZpbmFsbHkge30iKSBpcyAzCitQQVNTIGV2YWwoIjE7IHRyeSB7IDI7IHRocm93RnVu
YygpOyB9IGNhdGNoIChlKXszO30gZmluYWxseSB7NDt9IikgaXMgNAorUEFTUyBldmFsKCJmdW5j
dGlvbiBibGFoKCkgeyAxOyB9XG4gYmxhaCgpOyIpIGlzIHVuZGVmaW5lZAorUEFTUyBldmFsKCJ2
YXIgeCA9IDE7IikgaXMgdW5kZWZpbmVkCitQQVNTIGV2YWwoImlmICh0cnVlKSB7IDE7IH0gZWxz
ZSB7IDI7IH0iKSBpcyAxCitQQVNTIGV2YWwoImlmIChmYWxzZSkgeyAxOyB9IGVsc2UgeyAyOyB9
IikgaXMgMgorUEFTUyBldmFsKCJ0cnl7MTsgaWYgKHRydWUpIHsgMjsgdGhyb3cgXCJcIjsgfSBl
bHNlIHsgMjsgfX0gY2F0Y2goZSl7fSIpIGlzIDIKK1BBU1MgZXZhbCgiMTsgdmFyIGkgPSAwOyBk
byB7ICsraTsgMjsgfSB3aGlsZShpIT0xKTsiKSBpcyAyCitQQVNTIGV2YWwoInRyeXsxOyB2YXIg
aSA9IDA7IGRvIHsgKytpOyAyOyB0aHJvdyBcIlwiOyB9IHdoaWxlKGkhPTEpO30gY2F0Y2goZSl7
fSIpIGlzIDIKK1BBU1MgZXZhbCgiMTsgdHJ5ezI7IHRocm93T25SZXR1cm4oKTt9IGNhdGNoKGUp
e30iKSBpcyAyCitQQVNTIGV2YWwoIjE7IHR3b0Z1bmMoKTsiKSBpcyB1bmRlZmluZWQKK1BBU1Mg
ZXZhbCgiMTsgd2l0aCAoIHsgYTogMCB9ICkgeyAyOyB9IikgaXMgMgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvZXZhbC10aHJvdy1yZXR1cm4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL2V2YWwtdGhyb3ctcmV0dXJuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL2V2YWwtdGhyb3ctcmV0dXJuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXZhbC10aHJvdy1y
ZXR1cm4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvZXZhbC10aHJvdy1yZXR1cm4uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvZXZhbC10aHJvdy1yZXR1cm4uanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9ldmFsLXRocm93LXJldHVybi5qcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBldmFsIGZ1bmN0aW9uIHdoZW4gZXhjZXB0aW9u
cyBhcmUgdGhyb3duIGFuZCBjYXVnaHQgd2hpdGhpbiB0aGUgY29udGVudHMgb2YgdGhlIGV2YWx1
YXRlZCBzdHJpbmcuJyk7CisKK2Z1bmN0aW9uIHRocm93RnVuYygpIHsKKyAgdGhyb3cgIiI7Cit9
CisKK2Z1bmN0aW9uIHRocm93T25SZXR1cm4oKXsKKyAgMTsKKyAgcmV0dXJuIHRocm93RnVuYygp
OworfSAKKworZnVuY3Rpb24gdHdvRnVuYygpIHsKKyAgMjsKK30KKworc2hvdWxkQmUoJ2V2YWwo
IjE7IiknLCAiMSIpOworc2hvdWxkQmUoJ2V2YWwoIjE7IHRyeSB7IGZvbyA9IFsyLDMsdGhyb3dG
dW5jKCksIDRdOyB9IGNhdGNoIChlKXt9IiknLCAiMSIpOworc2hvdWxkQmUoJ2V2YWwoIjE7IHRy
eSB7IDI7IHRocm93IFxcIlxcIjsgfSBjYXRjaCAoZSl7fSIpJywgIjIiKTsKK3Nob3VsZEJlKCdl
dmFsKCIxOyB0cnkgeyAyOyB0aHJvd0Z1bmMoKTsgfSBjYXRjaCAoZSl7fSIpJywgIjIiKTsKK3No
b3VsZEJlKCdldmFsKCIxOyB0cnkgeyAyOyB0aHJvd0Z1bmMoKTsgfSBjYXRjaCAoZSl7Mzt9IGZp
bmFsbHkge30iKScsICIzIik7CitzaG91bGRCZSgnZXZhbCgiMTsgdHJ5IHsgMjsgdGhyb3dGdW5j
KCk7IH0gY2F0Y2ggKGUpezM7fSBmaW5hbGx5IHs0O30iKScsICI0Iik7CitzaG91bGRCZSgnZXZh
bCgiZnVuY3Rpb24gYmxhaCgpIHsgMTsgfVxcbiBibGFoKCk7IiknLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgnZXZhbCgidmFyIHggPSAxOyIpJywgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoJ2V2
YWwoImlmICh0cnVlKSB7IDE7IH0gZWxzZSB7IDI7IH0iKScsICIxIik7CitzaG91bGRCZSgnZXZh
bCgiaWYgKGZhbHNlKSB7IDE7IH0gZWxzZSB7IDI7IH0iKScsICIyIik7CitzaG91bGRCZSgnZXZh
bCgidHJ5ezE7IGlmICh0cnVlKSB7IDI7IHRocm93IFxcIlxcIjsgfSBlbHNlIHsgMjsgfX0gY2F0
Y2goZSl7fSIpJywgIjIiKTsKK3Nob3VsZEJlKCdldmFsKCIxOyB2YXIgaSA9IDA7IGRvIHsgKytp
OyAyOyB9IHdoaWxlKGkhPTEpOyIpJywgIjIiKTsKK3Nob3VsZEJlKCdldmFsKCJ0cnl7MTsgdmFy
IGkgPSAwOyBkbyB7ICsraTsgMjsgdGhyb3cgXFwiXFwiOyB9IHdoaWxlKGkhPTEpO30gY2F0Y2go
ZSl7fSIpJywgIjIiKTsKK3Nob3VsZEJlKCdldmFsKCIxOyB0cnl7MjsgdGhyb3dPblJldHVybigp
O30gY2F0Y2goZSl7fSIpJywgIjIiKTsKK3Nob3VsZEJlKCdldmFsKCIxOyB0d29GdW5jKCk7Iikn
LCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgnZXZhbCgiMTsgd2l0aCAoIHsgYTogMCB9ICkgeyAy
OyB9IiknLCAiMiIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27348</attachid>
            <date>2009-02-05 07:36:10 -0800</date>
            <delta_ts>2009-02-12 15:21:03 -0800</delta_ts>
            <desc>Another fix and test suite</desc>
            <filename>ImprovedEvalPatch.txt</filename>
            <type>text/plain</type>
            <size>7016</size>
            <attacher name="Horia Olaru">olaru</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQwNjcwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDItMDUgIEhvcmlhIE9s
YXJ1ICA8b2xhcnVAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzQwMAorCisgICAgICAgIFdoZW4gdGhyb3dpbmcgYW4gZXhjZXB0aW9uIHdpdGhpbiBhbiBldmFs
IGFyZ3VtZW50IHN0cmluZywgdGhlIGRzdCBwYXJhbWV0ZXIgd2FzCisgICAgICAgIG1vZGlmaWVk
IGluIHRoZSBmdW5jdGlvbnMgYmVsb3cgYW5kIHRoZSByZXR1cm4gdmFsdWUgZm9yIGV2YWwgd2Fz
IGFsdGVyZWQuIENoYW5nZWQKKyAgICAgICAgdGhlIGVtaXROb2RlIGNhbGwgaW4gSlNDOjpUaHJv
d05vZGU6OmVtaXRCeXRlY29kZSB0byB1c2UgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIKKyAgICAgICAg
dG8gc3RvcmUgaXRzIHJlc3VsdHMgaW5zdGVhZCBvZiBkc3QuIFRoZSBKU0M6OkZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUKKyAgICAgICAgd291bGQgbG9hZCB0aGUgZnVuY3Rp
b24gd2l0aGluIHRoZSBkc3QgcmVnaXN0cnksIGFsc28gYWx0ZXJpbmcgdGhlIHJlc3VsdCByZXR1
cm5lZAorICAgICAgICBieSBldmFsLiBSZXBsYWNlZCBpdCB3aXRoIGFub3RoZXIgdGVtcG9yYXJ5
LgorCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25D
YWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKwogMjAwOS0wMi0wNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyICd0aGUgbnVuJyBI
dW50LgpJbmRleDogSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiA0MDY2OCkKKysrIEph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2
NDAsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBmdW5jLmdldCgpKSwgZnVuYy5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBtX2FyZ3MuZ2V0
KCksIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwogICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gc3RhcnRPZmZzZXQo
KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1f
aWRlbnQuc2l6ZSgpLCBtX2lkZW50LnNpemUoKSwgMCk7CkBAIC0yMjkzLDEwICsyMjkzLDEwIEBA
IFJlZ2lzdGVySUQqIFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKIHsKICAgICBpZiAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIuZ2V0
KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleHByID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1f
ZXhwci5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleHBy
LmdldCgpKTsKLSAgICByZXR1cm4gZHN0OworICAgIHJldHVybiAwOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHJ5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDA2NzApCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wMi0wNSAgSG9y
aWEgT2xhcnUgIDxvbGFydUBhZG9iZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDAwCisKKyAgICAgICAgQWRkZWQgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSB0ZXN0
IENocmlzIEJyaWNoZm9yZCBhdHRhY2hlZCB0byB0aGUgYnVnLgorICAgICAgICBXaWxsIHRlc3Qg
cmV0dXJuIHZhbHVlcyBvZiB2YXJpb3VzIGV2YWwgZnVuY3Rpb24gY2FsbHMsIGluY2x1ZGluZyBz
b21lIHdoaWNoCisgICAgICAgIHRocm93IGFuZCBjYXRjaCBlcnJvcnMgaW4gdGhlIHN0cmluZyB0
byBldmFsdWF0ZS4KKworICAgICAgICAqIGZhc3QvanMvZXZhbC10aHJvdy1yZXR1cm4tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2V2YWwtdGhyb3ctcmV0dXJuLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2V2YWwtdGhyb3ctcmV0dXJuLmpz
OiBBZGRlZC4KKyAgICAgICAgKHRocm93RnVuYyk6CisgICAgICAgICh0aHJvd09uUmV0dXJuKToK
KyAgICAgICAgKHR3b0Z1bmMpOgorCiAyMDA5LTAyLTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvZXZhbC10aHJvdy1yZXR1cm4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvZXZhbC10aHJvdy1yZXR1cm4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9ldmFsLXRocm93LXJldHVybi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBldmFsIGZ1bmN0aW9uIHdoZW4gZXhjZXB0aW9u
cyBhcmUgdGhyb3duIGFuZCBjYXVnaHQgd2hpdGhpbiB0aGUgY29udGVudHMgb2YgdGhlIGV2YWx1
YXRlZCBzdHJpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2YWwo
IjE7IikgaXMgMQorUEFTUyBldmFsKCIxOyB0cnkgeyBmb28gPSBbMiwzLHRocm93RnVuYygpLCA0
XTsgfSBjYXRjaCAoZSl7fSIpIGlzIDEKK1BBU1MgZXZhbCgiMTsgdHJ5IHsgMjsgdGhyb3cgXCJc
IjsgfSBjYXRjaCAoZSl7fSIpIGlzIDIKK1BBU1MgZXZhbCgiMTsgdHJ5IHsgMjsgdGhyb3dGdW5j
KCk7IH0gY2F0Y2ggKGUpe30iKSBpcyAyCitQQVNTIGV2YWwoIjE7IHRyeSB7IDI7IHRocm93RnVu
YygpOyB9IGNhdGNoIChlKXszO30gZmluYWxseSB7fSIpIGlzIDMKK1BBU1MgZXZhbCgiMTsgdHJ5
IHsgMjsgdGhyb3dGdW5jKCk7IH0gY2F0Y2ggKGUpezM7fSBmaW5hbGx5IHs0O30iKSBpcyA0CitQ
QVNTIGV2YWwoImZ1bmN0aW9uIGJsYWgoKSB7IDE7IH1cbiBibGFoKCk7IikgaXMgdW5kZWZpbmVk
CitQQVNTIGV2YWwoInZhciB4ID0gMTsiKSBpcyB1bmRlZmluZWQKK1BBU1MgZXZhbCgiaWYgKHRy
dWUpIHsgMTsgfSBlbHNlIHsgMjsgfSIpIGlzIDEKK1BBU1MgZXZhbCgiaWYgKGZhbHNlKSB7IDE7
IH0gZWxzZSB7IDI7IH0iKSBpcyAyCitQQVNTIGV2YWwoInRyeXsxOyBpZiAodHJ1ZSkgeyAyOyB0
aHJvdyBcIlwiOyB9IGVsc2UgeyAyOyB9fSBjYXRjaChlKXt9IikgaXMgMgorUEFTUyBldmFsKCIx
OyB2YXIgaSA9IDA7IGRvIHsgKytpOyAyOyB9IHdoaWxlKGkhPTEpOyIpIGlzIDIKK1BBU1MgZXZh
bCgidHJ5ezE7IHZhciBpID0gMDsgZG8geyArK2k7IDI7IHRocm93IFwiXCI7IH0gd2hpbGUoaSE9
MSk7fSBjYXRjaChlKXt9IikgaXMgMgorUEFTUyBldmFsKCIxOyB0cnl7MjsgdGhyb3dPblJldHVy
bigpO30gY2F0Y2goZSl7fSIpIGlzIDIKK1BBU1MgZXZhbCgiMTsgdHdvRnVuYygpOyIpIGlzIHVu
ZGVmaW5lZAorUEFTUyBldmFsKCIxOyB3aXRoICggeyBhOiAwIH0gKSB7IDI7IH0iKSBpcyAyCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9ldmFsLXRocm93LXJldHVybi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvZXZhbC10aHJvdy1yZXR1cm4uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvZXZhbC10aHJvdy1yZXR1cm4uaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9ldmFsLXRocm93LXJldHVybi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9ldmFsLXRocm93LXJldHVybi5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9ldmFsLXRocm93LXJldHVybi5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2V2YWwtdGhyb3ct
cmV0dXJuLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACitkZXNjcmlwdGlvbignVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGV2YWwgZnVuY3Rpb24g
d2hlbiBleGNlcHRpb25zIGFyZSB0aHJvd24gYW5kIGNhdWdodCB3aGl0aGluIHRoZSBjb250ZW50
cyBvZiB0aGUgZXZhbHVhdGVkIHN0cmluZy4nKTsKKworZnVuY3Rpb24gdGhyb3dGdW5jKCkgewor
ICB0aHJvdyAiIjsKK30KKworZnVuY3Rpb24gdGhyb3dPblJldHVybigpeworICAxOworICByZXR1
cm4gdGhyb3dGdW5jKCk7Cit9IAorCitmdW5jdGlvbiB0d29GdW5jKCkgeworICAyOworfQorCitz
aG91bGRCZSgnZXZhbCgiMTsiKScsICIxIik7CitzaG91bGRCZSgnZXZhbCgiMTsgdHJ5IHsgZm9v
ID0gWzIsMyx0aHJvd0Z1bmMoKSwgNF07IH0gY2F0Y2ggKGUpe30iKScsICIxIik7CitzaG91bGRC
ZSgnZXZhbCgiMTsgdHJ5IHsgMjsgdGhyb3cgXFwiXFwiOyB9IGNhdGNoIChlKXt9IiknLCAiMiIp
Oworc2hvdWxkQmUoJ2V2YWwoIjE7IHRyeSB7IDI7IHRocm93RnVuYygpOyB9IGNhdGNoIChlKXt9
IiknLCAiMiIpOworc2hvdWxkQmUoJ2V2YWwoIjE7IHRyeSB7IDI7IHRocm93RnVuYygpOyB9IGNh
dGNoIChlKXszO30gZmluYWxseSB7fSIpJywgIjMiKTsKK3Nob3VsZEJlKCdldmFsKCIxOyB0cnkg
eyAyOyB0aHJvd0Z1bmMoKTsgfSBjYXRjaCAoZSl7Mzt9IGZpbmFsbHkgezQ7fSIpJywgIjQiKTsK
K3Nob3VsZEJlKCdldmFsKCJmdW5jdGlvbiBibGFoKCkgeyAxOyB9XFxuIGJsYWgoKTsiKScsICJ1
bmRlZmluZWQiKTsKK3Nob3VsZEJlKCdldmFsKCJ2YXIgeCA9IDE7IiknLCAidW5kZWZpbmVkIik7
CitzaG91bGRCZSgnZXZhbCgiaWYgKHRydWUpIHsgMTsgfSBlbHNlIHsgMjsgfSIpJywgIjEiKTsK
K3Nob3VsZEJlKCdldmFsKCJpZiAoZmFsc2UpIHsgMTsgfSBlbHNlIHsgMjsgfSIpJywgIjIiKTsK
K3Nob3VsZEJlKCdldmFsKCJ0cnl7MTsgaWYgKHRydWUpIHsgMjsgdGhyb3cgXFwiXFwiOyB9IGVs
c2UgeyAyOyB9fSBjYXRjaChlKXt9IiknLCAiMiIpOworc2hvdWxkQmUoJ2V2YWwoIjE7IHZhciBp
ID0gMDsgZG8geyArK2k7IDI7IH0gd2hpbGUoaSE9MSk7IiknLCAiMiIpOworc2hvdWxkQmUoJ2V2
YWwoInRyeXsxOyB2YXIgaSA9IDA7IGRvIHsgKytpOyAyOyB0aHJvdyBcXCJcXCI7IH0gd2hpbGUo
aSE9MSk7fSBjYXRjaChlKXt9IiknLCAiMiIpOworc2hvdWxkQmUoJ2V2YWwoIjE7IHRyeXsyOyB0
aHJvd09uUmV0dXJuKCk7fSBjYXRjaChlKXt9IiknLCAiMiIpOworc2hvdWxkQmUoJ2V2YWwoIjE7
IHR3b0Z1bmMoKTsiKScsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCdldmFsKCIxOyB3aXRoICgg
eyBhOiAwIH0gKSB7IDI7IH0iKScsICIyIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwo=
</data>
<flag name="review"
          id="13202"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>