<?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>19346</bug_id>
          
          <creation_ts>2008-05-31 16:26:51 -0700</creation_ts>
          <short_desc>REGRESSION: Mootools 1.2 Class inheritance broken in post-SquirrelFish merge</short_desc>
          <delta_ts>2008-06-08 18:00:05 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://prototype.tangerinesmash.com/DOMReadyTest/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Gleave">andrew</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrowe</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82037</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Gleave">andrew</who>
    <bug_when>2008-05-31 16:26:51 -0700</bug_when>
    <thetext>There seems to be a regression relating to the way class inheritance is implemented in the Mootools JS framework which has been broken recent WebKit nightlies.  This has been reported to Mootools in case they&apos;re relying on a JavaScriptCore quirk but they don&apos;t seem interested, so I&apos;m reporting here as well since mrowe* indicated that regressions should be filed here as well.

I&apos;m not sure quite what the problem is, although, it seems related to calling a base class method from a subclass.  This has been tested with r34254.

See URL for test case.

* See http://64.233.183.104/search?q=cache:u4k4sf4FNswJ:dev.mootools.net/ticket/711+Webkit+mootools+class&amp;hl=en&amp;client=safari&amp;strip=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82040</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-05-31 17:08:30 -0700</bug_when>
    <thetext>If the problem is caused by a change in behaviour of WebKit, then it&apos;s definitely preferable to file a bug report in WebKit&apos;s bug tracker as it&apos;s often an unintentional change.

I think we need a reduced test case to make headway on this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82043</commentid>
    <comment_count>2</comment_count>
      <attachid>21453</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-05-31 18:04:18 -0700</bug_when>
    <thetext>Created attachment 21453
Reduced test case

The problem is that arguments.callee.caller is returning null when the function is called via Function.apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82046</commentid>
    <comment_count>3</comment_count>
      <attachid>21454</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-05-31 18:48:32 -0700</bug_when>
    <thetext>Created attachment 21454
this test case shows that caller skips native function callers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82607</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-07 23:15:49 -0700</bug_when>
    <thetext>The problem is that Machine::retrieveCaller() calls getCallerFunctionOffset(), which stops when it sees a null codeBlock. In that case, we want to check the prior call frame instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82608</commentid>
    <comment_count>5</comment_count>
      <attachid>21571</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 02:32:31 -0700</bug_when>
    <thetext>Created attachment 21571
Patch in progress

Here&apos;s a patch in progress. It fixes the bug, but the code is somewhat ugly. I made it by inlining the calls to getCallFrame() and getCallerFunctionOffset() and modifying the logic to handle this special case. I am not quite sure of the necessity of the second if (!exec) at this hour.

When the caller functionality was added to SquirrelFish, a test case was added to fast/js/function-dot-arguments-and-caller.html that codifies the behaviour in the bug. This is the only JavaScriptCore or layout test that this patch fails, and JavaScriptCore also fails this test prior to SquirrelFish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82609</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 03:39:26 -0700</bug_when>
    <thetext>Interestingly enough, the patch I posted works on the two test cases but not the URL linked in the bug. I&apos;ll try to figure out the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82678</commentid>
    <comment_count>7</comment_count>
      <attachid>21581</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 14:23:08 -0700</bug_when>
    <thetext>Created attachment 21581
Reduction

So, it turns out that the earlier reductions for a different bug. Here is a new reduction of the bug, working from the MooTools source. It can probably be reduced further, but I wanted to dump it on Bugzilla in case I have to do something else later.

There is no immediate native caller that is the problem, and all of the callers of the functions leading up to the one that is the problem are the same in Safari 3.1 and ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82679</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 15:11:36 -0700</bug_when>
    <thetext>Sorry, when I said that ToT is the same as Safari 3.1 on all of those cases, I meant ToT with my patches. The call chain is as follows:

initialize() in Class:

Safari 3.1 and ToT agree that the caller is null.

initialize() in ExampleClass.Inherited:

Safari 3.1 says that the caller is initialize() in class, whereas ToT says that the caller is null. My patch fixes this, because this function is called by using apply in the body of initialize() in Class.

self.parent() in Extends:

Safari 3.1 says that the caller is initialize() in ExampleClass.Inherited, whereas both ToT and ToT with my patch say that the caller is null.

Thus, the problem is not directly due to a native call. I&apos;ll try to reduce it further and figure out what&apos;s going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82681</commentid>
    <comment_count>9</comment_count>
      <attachid>21582</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 15:57:40 -0700</bug_when>
    <thetext>Created attachment 21582
Further reduction

Here is a further reduction of the bug. It has two cases to demonstrate that the native call messes up the later attempt to get a JS caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82685</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 16:58:30 -0700</bug_when>
    <thetext>The problem is this code in 

    Register* callerCallFrame = (*registerBase) + callerOffset;
    if (!callerCallFrame[Machine::CallerCodeBlock].u.codeBlock) // test for eval frame
        return false;

It is testing whether the caller is an eval frame by testing whether the caller&apos;s caller has a codeBlock, but this also happens when the caller&apos;s caller is native code. Removing the code fixes the bug, but causes an assertion failure when the caller is eval code. The easiest fix is probably to add a CodeType field to CodeBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82687</commentid>
    <comment_count>11</comment_count>
      <attachid>21584</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 17:19:24 -0700</bug_when>
    <thetext>Created attachment 21584
Proposed patch

Here&apos;s a fix. I won&apos;t put it up for review until I write some layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82689</commentid>
    <comment_count>12</comment_count>
      <attachid>21585</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 17:45:05 -0700</bug_when>
    <thetext>Created attachment 21585
Proposed patch with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82690</commentid>
    <comment_count>13</comment_count>
      <attachid>21585</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-08 17:48:26 -0700</bug_when>
    <thetext>Comment on attachment 21585
Proposed patch with test

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82693</commentid>
    <comment_count>14</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 18:00:05 -0700</bug_when>
    <thetext>Landed in r34457. I will make a new bug for the issue with a direct native caller.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21453</attachid>
            <date>2008-05-31 18:04:18 -0700</date>
            <delta_ts>2008-06-08 14:23:08 -0700</delta_ts>
            <desc>Reduced test case</desc>
            <filename>bug-19346.html</filename>
            <type>text/html</type>
            <size>159</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgIGZ1bmN0
aW9uIGYoKSB7IGFsZXJ0KGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyKTsgfTsKICAgIGZ1bmN0aW9u
IGRvSXQoKSB7IGYuYXBwbHkoKTsgfQogICAgZG9JdCgpOwo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21454</attachid>
            <date>2008-05-31 18:48:32 -0700</date>
            <delta_ts>2008-06-08 14:23:08 -0700</delta_ts>
            <desc>this test case shows that caller skips native function callers</desc>
            <filename>caller-test.html</filename>
            <type>text/html</type>
            <size>257</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZnVuY3Rpb24gZigpIHsKICAgIGRvY3VtZW50LndyaXRlKGYuY2FsbGVyKyAiPGJy
PiIpOwp9CgpmdW5jdGlvbiBnKCkgewogICAgZigpOwogICAgZi5hcHBseSgpOwogICAgZi5jYWxs
KCk7CiAgICBbMF0ubWFwKGYpOwogICAgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYXBwbHkoZik7
CiAgICBbMF0ubWFwKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLCBmKTsKICAgICJ4Ii5yZXBsYWNl
KCJ4IiwgZik7Cn0KCmcoKTsKCjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21571</attachid>
            <date>2008-06-08 02:32:31 -0700</date>
            <delta_ts>2008-06-08 14:23:08 -0700</delta_ts>
            <desc>Patch in progress</desc>
            <filename>caller.diff</filename>
            <type>text/plain</type>
            <size>2167</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IFZNL01hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZNL01hY2hpbmUuY3BwCShyZXZp
c2lvbiAzNDQzNykKKysrIFZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTM0LDE2
ICsyNTM0LDQ4IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnJldHJpZXZlQXJndW1lbnRzKEV4ZWMKIEpT
VmFsdWUqIE1hY2hpbmU6OnJldHJpZXZlQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25J
bXAqIGZ1bmN0aW9uKSBjb25zdAogewogICAgIFJlZ2lzdGVyKiogcmVnaXN0ZXJCYXNlOwotICAg
IGludCBjYWxsRnJhbWVPZmZzZXQ7Ci0KLSAgICBpZiAoIWdldENhbGxGcmFtZShleGVjLCBmdW5j
dGlvbiwgcmVnaXN0ZXJCYXNlLCBjYWxsRnJhbWVPZmZzZXQpKQotICAgICAgICByZXR1cm4ganNO
dWxsKCk7Ci0KKyAgICAKKyAgICBpbnQgY2FsbEZyYW1lT2Zmc2V0ID0gZXhlYy0+bV9jYWxsRnJh
bWVPZmZzZXQ7CisgICAgUmVnaXN0ZXIqIGNhbGxGcmFtZTsKKyAgICB3aGlsZSAoMSkgeworICAg
ICAgICB3aGlsZSAoY2FsbEZyYW1lT2Zmc2V0IDwgMCkgeworICAgICAgICAgICAgZXhlYyA9IGV4
ZWMtPm1fcHJldjsKKyAgICAgICAgICAgIGlmICghZXhlYykKKyAgICAgICAgICAgICAgICByZXR1
cm4ganNOdWxsKCk7CisgICAgICAgICAgICBjYWxsRnJhbWVPZmZzZXQgPSBleGVjLT5tX2NhbGxG
cmFtZU9mZnNldDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVnaXN0ZXJCYXNlID0g
ZXhlYy0+bV9yZWdpc3RlckZpbGUtPmJhc2VQb2ludGVyKCk7CisgICAgICAgIGNhbGxGcmFtZSA9
ICgqcmVnaXN0ZXJCYXNlKSArIGNhbGxGcmFtZU9mZnNldDsKKyAgICAgICAgaWYgKGNhbGxGcmFt
ZVtDYWxsZWVdLnUuanNWYWx1ZSA9PSBmdW5jdGlvbikKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFnZXRDYWxsZXJGdW5jdGlvbk9mZnNldChyZWdpc3RlckJhc2Us
IGNhbGxGcmFtZU9mZnNldCwgY2FsbEZyYW1lT2Zmc2V0KSkKKyAgICAgICAgICAgIGNhbGxGcmFt
ZU9mZnNldCA9IC0xOworICAgIH0KKyAgICAKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGNhbGxGcmFtZVtDYWxsZXJDb2RlQmxvY2tdLnUuY29kZUJsb2NrOwogICAgIGludCBjYWxs
ZXJGcmFtZU9mZnNldDsKLSAgICBpZiAoIWdldENhbGxlckZ1bmN0aW9uT2Zmc2V0KHJlZ2lzdGVy
QmFzZSwgY2FsbEZyYW1lT2Zmc2V0LCBjYWxsZXJGcmFtZU9mZnNldCkpCisgICAgaWYgKGNhbGxl
ckNvZGVCbG9jaykKKyAgICAgICAgY2FsbGVyRnJhbWVPZmZzZXQgPSBjYWxsRnJhbWVbQ2FsbGVy
UmVnaXN0ZXJPZmZzZXRdLnUuaSAtIGNhbGxlckNvZGVCbG9jay0+bnVtTG9jYWxzIC0gQ2FsbEZy
YW1lSGVhZGVyU2l6ZTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY2Fs
bGVyIGNvZGUgYmxvY2ssIGl0IHNpZ25hbHMgYSByZS1lbnRyYW50IGZ1bmN0aW9uIGNhbGwsCisg
ICAgICAgIC8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBza2lwIHRvIHRoZSBuZXh0IGNhbGwg
ZnJhbWUuCisKKyAgICAgICAgZXhlYyA9IGV4ZWMtPm1fcHJldjsKKyAgICAgICAgaWYgKCFleGVj
KQorICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgICAgICByZWdpc3RlckJhc2UgPSBl
eGVjLT5tX3JlZ2lzdGVyRmlsZS0+YmFzZVBvaW50ZXIoKTsKKyAgICAgICAgY2FsbGVyRnJhbWVP
ZmZzZXQgPSBleGVjLT5tX2NhbGxGcmFtZU9mZnNldDsKKyAgICB9CisgICAgCisgICAgaWYgKGNh
bGxlckZyYW1lT2Zmc2V0IDwgMCkgLy8gVGVzdCBmb3IgZ2xvYmFsIGZyYW1lCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKLQorICAgIAogICAgIFJlZ2lzdGVyKiBjYWxsZXJGcmFtZSA9ICgqcmVn
aXN0ZXJCYXNlKSArIGNhbGxlckZyYW1lT2Zmc2V0OworICAgIGlmICghY2FsbGVyRnJhbWVbQ2Fs
bGVyQ29kZUJsb2NrXS51LmNvZGVCbG9jaykgLy8gVGVzdCBmb3IgZXZhbCBmcmFtZQorICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgCiAgICAgQVNTRVJUKGNhbGxlckZyYW1lW0NhbGxlZV0u
dS5qc1ZhbHVlKTsKICAgICByZXR1cm4gY2FsbGVyRnJhbWVbQ2FsbGVlXS51LmpzVmFsdWU7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21581</attachid>
            <date>2008-06-08 14:23:08 -0700</date>
            <delta_ts>2008-06-08 15:57:40 -0700</delta_ts>
            <desc>Reduction</desc>
            <filename>reduction.html</filename>
            <type>text/html</type>
            <size>3156</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KdmFyIE5hdGl2ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpewoJb3B0aW9ucyA9IG9wdGlv
bnMgfHwge307Cgl2YXIgb2JqZWN0ID0gb3B0aW9ucy5pbml0aWFsaXplOwoJb2JqZWN0LnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IG9iamVjdDsJCglyZXR1cm4gb2JqZWN0Owp9OwoKZnVuY3Rpb24g
JGVtcHR5KCl7fTsKCmZ1bmN0aW9uICRleHRlbmQob3JpZ2luYWwsIGV4dGVuZGVkKXsKCWZvciAo
dmFyIGtleSBpbiAoZXh0ZW5kZWQgfHwge30pKSBvcmlnaW5hbFtrZXldID0gZXh0ZW5kZWRba2V5
XTsKCXJldHVybiBvcmlnaW5hbDsKfTsKCmZ1bmN0aW9uICR1bmxpbmsob2JqZWN0KXsKCXZhciB1
bmxpbmtlZDsKCQoJc3dpdGNoICgkdHlwZShvYmplY3QpKXsKCQljYXNlICdvYmplY3QnOgoJCQl1
bmxpbmtlZCA9IHt9OwoJCQlmb3IgKHZhciBwIGluIG9iamVjdCkgdW5saW5rZWRbcF0gPSAkdW5s
aW5rKG9iamVjdFtwXSk7CgkJYnJlYWs7CgkJY2FzZSAnaGFzaCc6CgkJCXVubGlua2VkID0gJHVu
bGluayhvYmplY3QuZ2V0Q2xlYW4oKSk7CgkJYnJlYWs7CgkJY2FzZSAnYXJyYXknOgoJCQl1bmxp
bmtlZCA9IFtdOwoJCQlmb3IgKHZhciBpID0gMCwgbCA9IG9iamVjdC5sZW5ndGg7IGkgPCBsOyBp
KyspIHVubGlua2VkW2ldID0gJHVubGluayhvYmplY3RbaV0pOwoJCWJyZWFrOwoJCWRlZmF1bHQ6
IHJldHVybiBvYmplY3Q7Cgl9CgkKCXJldHVybiB1bmxpbmtlZDsKfTsKCmZ1bmN0aW9uICRtZXJn
ZSgpewoJdmFyIG1peCA9IHt9OwoJZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3Ro
OyBpIDwgbDsgaSsrKXsKCQl2YXIgb2JqZWN0ID0gYXJndW1lbnRzW2ldOwoJCWlmICgkdHlwZShv
YmplY3QpICE9ICdvYmplY3QnKSBjb250aW51ZTsKCQlmb3IgKHZhciBrZXkgaW4gb2JqZWN0KXsK
CQkJdmFyIG9wID0gb2JqZWN0W2tleV0sIG1wID0gbWl4W2tleV07CgkJCW1peFtrZXldID0gKG1w
ICYmICR0eXBlKG9wKSA9PSAnb2JqZWN0JyAmJiAkdHlwZShtcCkgPT0gJ29iamVjdCcpID8gJG1l
cmdlKG1wLCBvcCkgOiAkdW5saW5rKG9wKTsKCQl9Cgl9CglyZXR1cm4gbWl4Owp9OwoKZnVuY3Rp
b24gJHR5cGUob2JqKXsKCWlmIChvYmogPT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7CglpZiAo
b2JqLiRmYW1pbHkpIHJldHVybiAob2JqLiRmYW1pbHkubmFtZSA9PSAnbnVtYmVyJyAmJiAhaXNG
aW5pdGUob2JqKSkgPyBmYWxzZSA6IG9iai4kZmFtaWx5Lm5hbWU7CglpZiAob2JqLm5vZGVOYW1l
KXsKCQlzd2l0Y2ggKG9iai5ub2RlVHlwZSl7CgkJCWNhc2UgMTogcmV0dXJuICdlbGVtZW50JzsK
CQkJY2FzZSAzOiByZXR1cm4gKC9cUy8pLnRlc3Qob2JqLm5vZGVWYWx1ZSkgPyAndGV4dG5vZGUn
IDogJ3doaXRlc3BhY2UnOwoJCX0KCX0gZWxzZSBpZiAodHlwZW9mIG9iai5sZW5ndGggPT0gJ251
bWJlcicpewoJCWlmIChvYmouY2FsbGVlKSByZXR1cm4gJ2FyZ3VtZW50cyc7CgkJZWxzZSBpZiAo
b2JqLml0ZW0pIHJldHVybiAnY29sbGVjdGlvbic7Cgl9CglyZXR1cm4gdHlwZW9mIG9iajsKfTsK
CnZhciBDbGFzcyA9IG5ldyBOYXRpdmUoewoKCW5hbWU6ICdDbGFzcycsCgoJaW5pdGlhbGl6ZTog
ZnVuY3Rpb24ocHJvcGVydGllcyl7CgkJcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307CgkJ
dmFyIGtsYXNzID0gZnVuY3Rpb24oZW1wdHkpewoJCQlmb3IgKHZhciBrZXkgaW4gdGhpcykgdGhp
c1trZXldID0gJHVubGluayh0aGlzW2tleV0pOwoJCQlmb3IgKHZhciBtdXRhdG9yIGluIENsYXNz
Lk11dGF0b3JzKXsKCQkJCWlmICghdGhpc1ttdXRhdG9yXSkgY29udGludWU7CgkJCQlDbGFzcy5N
dXRhdG9yc1ttdXRhdG9yXSh0aGlzLCB0aGlzW211dGF0b3JdKTsKCQkJCWRlbGV0ZSB0aGlzW211
dGF0b3JdOwoJCQl9CgoJCQl0aGlzLmNvbnN0cnVjdG9yID0ga2xhc3M7CgkJCWlmIChlbXB0eSA9
PT0gJGVtcHR5KSByZXR1cm4gdGhpczsKCQkJCgkJCXZhciBzZWxmID0gKHRoaXMuaW5pdGlhbGl6
ZSkgPyB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRoaXM7CgkJCWlm
ICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmluaXRpYWxpemUpIHRoaXMub3B0aW9ucy5p
bml0aWFsaXplLmNhbGwodGhpcyk7CgkJCXJldHVybiBzZWxmOwoJCX07CgoJCSRleHRlbmQoa2xh
c3MsIHRoaXMpOwoJCWtsYXNzLmNvbnN0cnVjdG9yID0gQ2xhc3M7CgkJa2xhc3MucHJvdG90eXBl
ID0gcHJvcGVydGllczsKCQlyZXR1cm4ga2xhc3M7Cgl9Cgp9KTsKCkNsYXNzLk11dGF0b3JzID0g
ewogIAogIEV4dGVuZHM6IGZ1bmN0aW9uKHNlbGYsIGtsYXNzKXsKICAJdmFyIGluc3RhbmNlID0g
bmV3IGtsYXNzKCRlbXB0eSk7CiAgCWRlbGV0ZSBpbnN0YW5jZS5wYXJlbnQ7CgogIAlmb3IgKHZh
ciBrZXkgaW4gaW5zdGFuY2UpewogIAkJdmFyIGN1cnJlbnQgPSBzZWxmW2tleV0sIHByZXZpb3Vz
ID0gaW5zdGFuY2Vba2V5XTsKICAJCWlmIChjdXJyZW50ID09IHVuZGVmaW5lZCl7CiAgCQkJc2Vs
ZltrZXldID0gcHJldmlvdXM7CiAgCQkJY29udGludWU7CiAgCQl9CgogIAkJdmFyIGN0eXBlID0g
JHR5cGUoY3VycmVudCksIHB0eXBlID0gJHR5cGUocHJldmlvdXMpOwogIAkJaWYgKGN0eXBlICE9
IHB0eXBlKSBjb250aW51ZTsKCiAgCQlzd2l0Y2ggKGN0eXBlKSB7CiAgCQkJY2FzZSAnb2JqZWN0
Jzogc2VsZltrZXldID0gJG1lcmdlKHByZXZpb3VzLCBjdXJyZW50KTsKICAJCX0KICAJfQoKICAJ
c2VsZi5wYXJlbnQgPSBmdW5jdGlvbigpIHsKICAJICAgIGlmIChhcmd1bWVudHMuY2FsbGVlLmNh
bGxlciA9PSBudWxsKQogIAkgICAgICAgIGFsZXJ0KCJGQUlMIik7CiAgCSAgICBlbHNlCiAgCSAg
ICAgICAgYWxlcnQoIlBBU1MiKTsKICAJfTsKICB9CiAgCn07Cgp2YXIgRXhhbXBsZUNsYXNzID0g
e307CkV4YW1wbGVDbGFzcy5CYXNlID0gbmV3IENsYXNzKHsKICAgIGluaXRpYWxpemU6IGZ1bmN0
aW9uKCkgeyB9Cn0pOwpFeGFtcGxlQ2xhc3MuSW5oZXJpdGVkID0gbmV3IENsYXNzKHsKICAgIEV4
dGVuZHM6IEV4YW1wbGVDbGFzcy5CYXNlLAogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAg
ICAgICAgdGhpcy5wYXJlbnQoKTsKICAgIH0KfSk7CnZhciBvID0gbmV3IEV4YW1wbGVDbGFzcy5J
bmhlcml0ZWQoKTsKPC9zY3JpcHQ+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21582</attachid>
            <date>2008-06-08 15:57:40 -0700</date>
            <delta_ts>2008-06-08 15:57:40 -0700</delta_ts>
            <desc>Further reduction</desc>
            <filename>reduction.html</filename>
            <type>text/html</type>
            <size>215</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KdmFyIHByaW50ID0gYWxlcnQ7CgpmdW5jdGlvbiBmKCkKewogICAgZygpOwogICAg
Zy5hcHBseSh0aGlzKTsKfQoKZnVuY3Rpb24gZygpCnsKICAgIGgoKTsKfQoKZnVuY3Rpb24gaCgp
CnsKICAgIGlmIChoLmNhbGxlciA9PSBudWxsKQogICAgICAgIHByaW50KCJGQUlMIik7CiAgICBl
bHNlCiAgICAgICAgcHJpbnQoIlBBU1MiKTsKfQoKZigpOwo8L3NjcmlwdD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21584</attachid>
            <date>2008-06-08 17:19:24 -0700</date>
            <delta_ts>2008-06-08 17:45:05 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>caller.diff</filename>
            <type>text/plain</type>
            <size>4801</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0NDU2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDgtMDYt
MDggIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE5MzQ2OiBSRUdSRVNT
SU9OOiBNb290b29scyAxLjIgQ2xhc3MgaW5oZXJpdGFuY2UgYnJva2VuIGluIHBvc3QtU3F1aXJy
ZWxGaXNoIG1lcmdlCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzNDY+CisKKyAgICAgICAgQSBjaGVjayBmb3Igd2hldGhlciBhIGZ1bmN0aW9uJ3Mg
Y2FsbGVyIGlzIGV2YWwgY29kZSBhY2NpZGVudGFsbHkgaW5jbHVkZWQKKyAgICAgICAgdGhlIGNh
c2Ugd2hlcmUgdGhlIGNhbGxlcidzIGNhbGxlciBpcyBuYXRpdmUgY29kZS4gQWRkIGEgQ29kZVR5
cGUgZmllbGQgdG8KKyAgICAgICAgQ29kZUJsb2NrIGFuZCB1c2UgdGhpcyBmb3IgdGhlIGV2YWwg
Y2FsbGVyIHRlc3QgaW5zdGVhZC4KKworICAgICAgICAqIFZNL0NvZGVCbG9jay5oOgorICAgICAg
ICAoS0pTOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChLSlM6OlByb2dyYW1Db2Rl
QmxvY2s6OlByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoS0pTOjpFdmFsQ29kZUJsb2NrOjpF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBWTS9NYWNoaW5lLmNwcDoKKyAgICAgICAgKEtKUzo6
Z2V0Q2FsbGVyRnVuY3Rpb25PZmZzZXQpOgorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAg
ICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OmdlbmVyYXRlQ29kZSk6CisgICAgICAgIChLSlM6
OlByb2dyYW1Ob2RlOjpnZW5lcmF0ZUNvZGUpOgorCiAyMDA4LTA2LTA3ICBDYW1lcm9uIFp3YXJp
Y2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCkluZGV4OiBWTS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gMzQ0NTYpCisrKyBWTS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB9OwogCiAgICAgc3RydWN0IENv
ZGVCbG9jayB7Ci0gICAgICAgIENvZGVCbG9jayhTY29wZU5vZGUqIG93bmVyTm9kZV8pCisgICAg
ICAgIENvZGVCbG9jayhTY29wZU5vZGUqIG93bmVyTm9kZV8sIENvZGVUeXBlIGNvZGVUeXBlXykK
ICAgICAgICAgICAgIDogb3duZXJOb2RlKG93bmVyTm9kZV8pCiAgICAgICAgICAgICAsIG51bVRl
bXBvcmFyaWVzKDApCiAgICAgICAgICAgICAsIG51bVZhcnMoMCkKQEAgLTY0LDYgKzY0LDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAgICAsIG51bUxvY2FscygwKQogICAgICAgICAgICAg
LCBuZWVkc0Z1bGxTY29wZUNoYWluKG93bmVyTm9kZV8tPnVzZXNFdmFsKCkgfHwgb3duZXJOb2Rl
Xy0+bmVlZHNDbG9zdXJlKCkpCiAgICAgICAgICAgICAsIHVzZXNFdmFsKG93bmVyTm9kZV8tPnVz
ZXNFdmFsKCkpCisgICAgICAgICAgICAsIGNvZGVUeXBlKGNvZGVUeXBlXykKICAgICAgICAgewog
ICAgICAgICB9CiAKQEAgLTgxLDYgKzgyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGlu
dCB0aGlzUmVnaXN0ZXI7CiAgICAgICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbjsKICAgICAg
ICAgYm9vbCB1c2VzRXZhbDsKKyAgICAgICAgQ29kZVR5cGUgY29kZVR5cGU7CiAKICAgICAgICAg
VmVjdG9yPEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CiAKQEAgLTEwMSw4ICsxMDMsOCBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAvLyByZXNwb25zaWJsZSBmb3IgbWFya2luZyBpdC4KIAogICAg
IHN0cnVjdCBQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7Ci0gICAgICAgIFBy
b2dyYW1Db2RlQmxvY2soU2NvcGVOb2RlKiBvd25lck5vZGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3RfKQotICAgICAgICAgICAgOiBDb2RlQmxvY2sob3duZXJOb2RlKQorICAgICAgICBQ
cm9ncmFtQ29kZUJsb2NrKFNjb3BlTm9kZSogb3duZXJOb2RlXywgQ29kZVR5cGUgY29kZVR5cGVf
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0XykKKyAgICAgICAgICAgIDogQ29kZUJsb2Nr
KG93bmVyTm9kZV8sIGNvZGVUeXBlXykKICAgICAgICAgICAgICwgZ2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdF8pCiAgICAgICAgIHsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Y29kZUJsb2Nr
cygpLmFkZCh0aGlzKTsKQEAgLTExOCw4ICsxMjAsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB9
OwogCiAgICAgc3RydWN0IEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgUHJvZ3JhbUNvZGVCbG9jayB7
Ci0gICAgICAgIEV2YWxDb2RlQmxvY2soU2NvcGVOb2RlKiBvd25lck5vZGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3RfKQotICAgICAgICAgICAgOiBQcm9ncmFtQ29kZUJsb2NrKG93bmVy
Tm9kZSwgZ2xvYmFsT2JqZWN0XykKKyAgICAgICAgRXZhbENvZGVCbG9jayhTY29wZU5vZGUqIG93
bmVyTm9kZV8sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RfKQorICAgICAgICAgICAgOiBQ
cm9ncmFtQ29kZUJsb2NrKG93bmVyTm9kZV8sIEV2YWxDb2RlLCBnbG9iYWxPYmplY3RfKQogICAg
ICAgICB7CiAgICAgICAgIH0KICAgICB9OwpJbmRleDogVk0vTWFjaGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVk0vTWFjaGluZS5jcHAJKHJldmlzaW9uIDM0NDU2KQorKysgVk0vTWFjaGluZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDE1ICs2NCwxNCBAQCBib29sIGdldENhbGxlckZ1bmN0aW9u
T2Zmc2V0KFJlZ2lzdGVyKiogCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxs
RnJhbWVbTWFjaGluZTo6Q2FsbGVyQ29kZUJsb2NrXS51LmNvZGVCbG9jazsKICAgICBpZiAoIWNh
bGxlckNvZGVCbG9jaykgLy8gdGVzdCBmb3IgdG9wIGZyYW1lIG9mIHJlLWVudHJhbnQgZnVuY3Rp
b24gY2FsbAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAKKyAgICBpZiAoY2FsbGVyQ29k
ZUJsb2NrLT5jb2RlVHlwZSA9PSBFdmFsQ29kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIGNhbGxlck9mZnNldCA9IGNhbGxGcmFtZVtNYWNoaW5lOjpDYWxsZXJSZWdpc3Rlck9m
ZnNldF0udS5pIC0gY2FsbGVyQ29kZUJsb2NrLT5udW1Mb2NhbHMgLSBNYWNoaW5lOjpDYWxsRnJh
bWVIZWFkZXJTaXplOwogICAgIGlmIChjYWxsZXJPZmZzZXQgPCAwKSAvLyB0ZXN0IGZvciBnbG9i
YWwgZnJhbWUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVnaXN0ZXIqIGNhbGxlckNh
bGxGcmFtZSA9ICgqcmVnaXN0ZXJCYXNlKSArIGNhbGxlck9mZnNldDsKLSAgICBpZiAoIWNhbGxl
ckNhbGxGcmFtZVtNYWNoaW5lOjpDYWxsZXJDb2RlQmxvY2tdLnUuY29kZUJsb2NrKSAvLyB0ZXN0
IGZvciBldmFsIGZyYW1lCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVl
OwogfQogCkluZGV4OiBranMvbm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5jcHAJ
KHJldmlzaW9uIDM0NDU2KQorKysga2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgx
Nyw3ICsxODE3LDcgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpnZW5lcmF0ZUNvZGUoU2NvcAog
ICAgIFNjb3BlQ2hhaW4gc2NvcGVDaGFpbihzYyk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCk7CiAKLSAgICBtX2NvZGUuc2V0KG5l
dyBDb2RlQmxvY2sodGhpcykpOworICAgIG1fY29kZS5zZXQobmV3IENvZGVCbG9jayh0aGlzLCBG
dW5jdGlvbkNvZGUpKTsKIAogICAgIENvZGVHZW5lcmF0b3IgZ2VuZXJhdG9yKHRoaXMsIGdsb2Jh
bE9iamVjdC0+ZGVidWdnZXIoKSwgc2NvcGVDaGFpbiwgJm1fc3ltYm9sVGFibGUsIG1fY29kZS5n
ZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmdlbmVyYXRlKCk7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCB2
b2lkIFByb2dyYW1Ob2RlOjpnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpCiAgICAgU2NvcGVDaGFpbiBz
Y29wZUNoYWluKHNjKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVD
aGFpbi5nbG9iYWxPYmplY3QoKTsKICAgICAKLSAgICBtX2NvZGUuc2V0KG5ldyBQcm9ncmFtQ29k
ZUJsb2NrKHRoaXMsIGdsb2JhbE9iamVjdCkpOworICAgIG1fY29kZS5zZXQobmV3IFByb2dyYW1D
b2RlQmxvY2sodGhpcywgR2xvYmFsQ29kZSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgCiAgICAgQ29k
ZUdlbmVyYXRvciBnZW5lcmF0b3IodGhpcywgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBzY29w
ZUNoYWluLCAmZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLCBtX2NvZGUuZ2V0KCksIG1fdmFy
U3RhY2ssIG1fZnVuY3Rpb25TdGFjaywgY2FuQ3JlYXRlR2xvYmFscyk7CiAgICAgZ2VuZXJhdG9y
LmdlbmVyYXRlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21585</attachid>
            <date>2008-06-08 17:45:05 -0700</date>
            <delta_ts>2008-06-08 17:48:26 -0700</delta_ts>
            <desc>Proposed patch with test</desc>
            <filename>caller.diff</filename>
            <type>text/plain</type>
            <size>6963</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM0NDU2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDgtMDYtMDggIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE5MzQ2OiBSRUdSRVNTSU9OOiBNb290b29s
cyAxLjIgQ2xhc3MgaW5oZXJpdGFuY2UgYnJva2VuIGluIHBvc3QtU3F1aXJyZWxGaXNoIG1lcmdl
CisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDY+
CisKKyAgICAgICAgQSBjaGVjayBmb3Igd2hldGhlciBhIGZ1bmN0aW9uJ3MgY2FsbGVyIGlzIGV2
YWwgY29kZSBhY2NpZGVudGFsbHkgaW5jbHVkZWQKKyAgICAgICAgdGhlIGNhc2Ugd2hlcmUgdGhl
IGNhbGxlcidzIGNhbGxlciBpcyBuYXRpdmUgY29kZS4gQWRkIGEgQ29kZVR5cGUgZmllbGQgdG8K
KyAgICAgICAgQ29kZUJsb2NrIGFuZCB1c2UgdGhpcyBmb3IgdGhlIGV2YWwgY2FsbGVyIHRlc3Qg
aW5zdGVhZC4KKworICAgICAgICAqIFZNL0NvZGVCbG9jay5oOgorICAgICAgICAoS0pTOjpDb2Rl
QmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChLSlM6OlByb2dyYW1Db2RlQmxvY2s6OlByb2dy
YW1Db2RlQmxvY2spOgorICAgICAgICAoS0pTOjpFdmFsQ29kZUJsb2NrOjpFdmFsQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBWTS9NYWNoaW5lLmNwcDoKKyAgICAgICAgKEtKUzo6Z2V0Q2FsbGVyRnVu
Y3Rpb25PZmZzZXQpOgorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OkZ1
bmN0aW9uQm9keU5vZGU6OmdlbmVyYXRlQ29kZSk6CisgICAgICAgIChLSlM6OlByb2dyYW1Ob2Rl
OjpnZW5lcmF0ZUNvZGUpOgorCiAyMDA4LTA2LTA3ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJp
Y2hAdXdhdGVybG9vLmNhPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9WTS9Db2RlQmxvY2suaAkocmV2aXNpb24gMzQ0NTYpCisrKyBKYXZhU2NyaXB0Q29y
ZS9WTS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICB9OwogCiAgICAgc3RydWN0IENvZGVCbG9jayB7Ci0gICAgICAgIENvZGVC
bG9jayhTY29wZU5vZGUqIG93bmVyTm9kZV8pCisgICAgICAgIENvZGVCbG9jayhTY29wZU5vZGUq
IG93bmVyTm9kZV8sIENvZGVUeXBlIGNvZGVUeXBlXykKICAgICAgICAgICAgIDogb3duZXJOb2Rl
KG93bmVyTm9kZV8pCiAgICAgICAgICAgICAsIG51bVRlbXBvcmFyaWVzKDApCiAgICAgICAgICAg
ICAsIG51bVZhcnMoMCkKQEAgLTY0LDYgKzY0LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAg
ICAgICAsIG51bUxvY2FscygwKQogICAgICAgICAgICAgLCBuZWVkc0Z1bGxTY29wZUNoYWluKG93
bmVyTm9kZV8tPnVzZXNFdmFsKCkgfHwgb3duZXJOb2RlXy0+bmVlZHNDbG9zdXJlKCkpCiAgICAg
ICAgICAgICAsIHVzZXNFdmFsKG93bmVyTm9kZV8tPnVzZXNFdmFsKCkpCisgICAgICAgICAgICAs
IGNvZGVUeXBlKGNvZGVUeXBlXykKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTgxLDYgKzgy
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGludCB0aGlzUmVnaXN0ZXI7CiAgICAgICAg
IGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbjsKICAgICAgICAgYm9vbCB1c2VzRXZhbDsKKyAgICAg
ICAgQ29kZVR5cGUgY29kZVR5cGU7CiAKICAgICAgICAgVmVjdG9yPEluc3RydWN0aW9uPiBpbnN0
cnVjdGlvbnM7CiAKQEAgLTEwMSw4ICsxMDMsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAvLyBy
ZXNwb25zaWJsZSBmb3IgbWFya2luZyBpdC4KIAogICAgIHN0cnVjdCBQcm9ncmFtQ29kZUJsb2Nr
IDogcHVibGljIENvZGVCbG9jayB7Ci0gICAgICAgIFByb2dyYW1Db2RlQmxvY2soU2NvcGVOb2Rl
KiBvd25lck5vZGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RfKQotICAgICAgICAgICAg
OiBDb2RlQmxvY2sob3duZXJOb2RlKQorICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKFNjb3BlTm9k
ZSogb3duZXJOb2RlXywgQ29kZVR5cGUgY29kZVR5cGVfLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0XykKKyAgICAgICAgICAgIDogQ29kZUJsb2NrKG93bmVyTm9kZV8sIGNvZGVUeXBlXykK
ICAgICAgICAgICAgICwgZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdF8pCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGdsb2JhbE9iamVjdC0+Y29kZUJsb2NrcygpLmFkZCh0aGlzKTsKQEAgLTExOCw4
ICsxMjAsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB9OwogCiAgICAgc3RydWN0IEV2YWxDb2Rl
QmxvY2sgOiBwdWJsaWMgUHJvZ3JhbUNvZGVCbG9jayB7Ci0gICAgICAgIEV2YWxDb2RlQmxvY2so
U2NvcGVOb2RlKiBvd25lck5vZGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RfKQotICAg
ICAgICAgICAgOiBQcm9ncmFtQ29kZUJsb2NrKG93bmVyTm9kZSwgZ2xvYmFsT2JqZWN0XykKKyAg
ICAgICAgRXZhbENvZGVCbG9jayhTY29wZU5vZGUqIG93bmVyTm9kZV8sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3RfKQorICAgICAgICAgICAgOiBQcm9ncmFtQ29kZUJsb2NrKG93bmVyTm9k
ZV8sIEV2YWxDb2RlLCBnbG9iYWxPYmplY3RfKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAJKHJldmlzaW9uIDM0NDU2KQorKysgSmF2YVNjcmlw
dENvcmUvVk0vTWFjaGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDE1ICs2NCwxNCBAQCBi
b29sIGdldENhbGxlckZ1bmN0aW9uT2Zmc2V0KFJlZ2lzdGVyKiogCiAgICAgQ29kZUJsb2NrKiBj
YWxsZXJDb2RlQmxvY2sgPSBjYWxsRnJhbWVbTWFjaGluZTo6Q2FsbGVyQ29kZUJsb2NrXS51LmNv
ZGVCbG9jazsKICAgICBpZiAoIWNhbGxlckNvZGVCbG9jaykgLy8gdGVzdCBmb3IgdG9wIGZyYW1l
IG9mIHJlLWVudHJhbnQgZnVuY3Rpb24gY2FsbAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAg
ICAKKyAgICBpZiAoY2FsbGVyQ29kZUJsb2NrLT5jb2RlVHlwZSA9PSBFdmFsQ29kZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIGNhbGxlck9mZnNldCA9IGNhbGxGcmFtZVtNYWNo
aW5lOjpDYWxsZXJSZWdpc3Rlck9mZnNldF0udS5pIC0gY2FsbGVyQ29kZUJsb2NrLT5udW1Mb2Nh
bHMgLSBNYWNoaW5lOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIGlmIChjYWxsZXJPZmZzZXQg
PCAwKSAvLyB0ZXN0IGZvciBnbG9iYWwgZnJhbWUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUmVnaXN0ZXIqIGNhbGxlckNhbGxGcmFtZSA9ICgqcmVnaXN0ZXJCYXNlKSArIGNhbGxlck9m
ZnNldDsKLSAgICBpZiAoIWNhbGxlckNhbGxGcmFtZVtNYWNoaW5lOjpDYWxsZXJDb2RlQmxvY2td
LnUuY29kZUJsb2NrKSAvLyB0ZXN0IGZvciBldmFsIGZyYW1lCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHJldmlz
aW9uIDM0NDU2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgxNyw3ICsxODE3LDcgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpnZW5lcmF0ZUNv
ZGUoU2NvcAogICAgIFNjb3BlQ2hhaW4gc2NvcGVDaGFpbihzYyk7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCk7CiAKLSAgICBtX2Nv
ZGUuc2V0KG5ldyBDb2RlQmxvY2sodGhpcykpOworICAgIG1fY29kZS5zZXQobmV3IENvZGVCbG9j
ayh0aGlzLCBGdW5jdGlvbkNvZGUpKTsKIAogICAgIENvZGVHZW5lcmF0b3IgZ2VuZXJhdG9yKHRo
aXMsIGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgc2NvcGVDaGFpbiwgJm1fc3ltYm9sVGFibGUs
IG1fY29kZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmdlbmVyYXRlKCk7CkBAIC0xODUzLDcgKzE4
NTMsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpCiAgICAgU2Nv
cGVDaGFpbiBzY29wZUNoYWluKHNjKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKTsKICAgICAKLSAgICBtX2NvZGUuc2V0KG5ldyBQ
cm9ncmFtQ29kZUJsb2NrKHRoaXMsIGdsb2JhbE9iamVjdCkpOworICAgIG1fY29kZS5zZXQobmV3
IFByb2dyYW1Db2RlQmxvY2sodGhpcywgR2xvYmFsQ29kZSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAg
CiAgICAgQ29kZUdlbmVyYXRvciBnZW5lcmF0b3IodGhpcywgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dl
cigpLCBzY29wZUNoYWluLCAmZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLCBtX2NvZGUuZ2V0
KCksIG1fdmFyU3RhY2ssIG1fZnVuY3Rpb25TdGFjaywgY2FuQ3JlYXRlR2xvYmFscyk7CiAgICAg
Z2VuZXJhdG9yLmdlbmVyYXRlKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNDQ1NikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA2
LTA4ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgZm9yOgorCisgICAg
ICAgIEJ1ZyAxOTM0NjogUkVHUkVTU0lPTjogTW9vdG9vbHMgMS4yIENsYXNzIGluaGVyaXRhbmNl
IGJyb2tlbiBpbiBwb3N0LVNxdWlycmVsRmlzaCBtZXJnZQorICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ2PgorCisgICAgICAgICogZmFzdC9qcy9m
dW5jdGlvbi1kb3QtYXJndW1lbnRzLWFuZC1jYWxsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvanMvZnVuY3Rpb24tZG90LWFyZ3VtZW50cy1hbmQtY2FsbGVyLmh0bWw6CisKIDIwMDgt
MDYtMDggIFZpbmNlbnQgUmljYXJkICA8bWFnaWNAbWFnaWNuaW5qYS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLWRv
dC1hcmd1bWVudHMtYW5kLWNhbGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1kb3QtYXJndW1lbnRzLWFuZC1jYWxsZXItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAzNDQ1NikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tZG90
LWFyZ3VtZW50cy1hbmQtY2FsbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw1
ICsyLDUgQEAgVGhpcyBwYWdlIHRlc3RzIGZ1bmN0aW9uLmNhbGxlciBhbmQgZnVuYwogCiBJZiB0
aGUgdGVzdCBwYXNzZXMsIHlvdSdsbCBzZWUgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcyBiZWxv
dy4KIAotUEFTUyxQQVNTLFBBU1MsUEFTUyxQQVNTLFBBU1MsUEFTUyxQQVNTLFBBU1MsUEFTUyxQ
QVNTLFBBU1MsUEFTUyxQQVNTLFBBU1MsUEFTUworUEFTUyxQQVNTLFBBU1MsUEFTUyxQQVNTLFBB
U1MsUEFTUyxQQVNTLFBBU1MsUEFTUyxQQVNTLFBBU1MsUEFTUyxQQVNTLFBBU1MsUEFTUyxQQVNT
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tZG90LWFyZ3VtZW50cy1hbmQt
Y2FsbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1k
b3QtYXJndW1lbnRzLWFuZC1jYWxsZXIuaHRtbAkocmV2aXNpb24gMzQ0NTYpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLWRvdC1hcmd1bWVudHMtYW5kLWNhbGxlci5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSw2ICs4MSwxNCBAQCBldmFsKCcoZnVuY3Rpb24gZigpIHsgcmV0dXJu
IGYuY2FsbGVyIGluCiAKIChmdW5jdGlvbiBmKCkgewogICAgIHJldHVybiBTdHJpbmcoeyB0b1N0
cmluZzogZnVuY3Rpb24gZygpIHsgcmV0dXJuIGcuY2FsbGVyIGluc3RhbmNlb2YgT2JqZWN0ID8g
IkZBSUwiIDogIlBBU1MiOyB9IH0pOworfSkoKSwKKworKGZ1bmN0aW9uIGYoKSB7CisgICAgZnVu
Y3Rpb24gZygpIHsgcmV0dXJuIGguYXBwbHkodGhpcyk7IH0KKyAgICBmdW5jdGlvbiBoKCkgeyBy
ZXR1cm4gaygpOyB9CisgICAgZnVuY3Rpb24gaygpIHsgcmV0dXJuIGsuY2FsbGVyIGluc3RhbmNl
b2YgT2JqZWN0ID8gIlBBU1MiIDogIkZBSUwiOyB9CisgICAgCisgICAgcmV0dXJuIGcoKTsKIH0p
KCkKIF07CiAK
</data>
<flag name="review"
          id="9463"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>