<?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>23223</bug_id>
          
          <creation_ts>2009-01-09 18:18:37 -0800</creation_ts>
          <short_desc>Teach ScheduledAction how to execute script in WorkerContext, in addition to a Document.</short_desc>
          <delta_ts>2009-01-11 00:07:49 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>
          
          <blocked>22718</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105099</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-09 18:18:37 -0800</bug_when>
    <thetext>For timers in Workers, we need the ScheduledAction to know how to execute the callback in WorkerContext. The patch adds execute(WorkerContext) method that does it.

Since there is no way currently to test the code, I&apos;ve hacked enough of WorkerContext to be able to run &quot;fake timer&quot; and verify that the code works (separate test patch which is here only for info)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105100</commentid>
    <comment_count>1</comment_count>
      <attachid>26586</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-09 18:25:45 -0800</bug_when>
    <thetext>Created attachment 26586
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105101</commentid>
    <comment_count>2</comment_count>
      <attachid>26587</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-09 18:30:21 -0800</bug_when>
    <thetext>Created attachment 26587
test case (not for landing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105107</commentid>
    <comment_count>3</comment_count>
      <attachid>26586</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-10 02:04:55 -0800</bug_when>
    <thetext>Comment on attachment 26586
Proposed patch

You need to conditionalize Worker support with ENABLE(WORKERS), or the patch will break ports that don&apos;t have workers enabled. r- because of this, some nitpicks below.

&gt; +    
&gt; +void ScheduledAction::executeFunctionInContext(JSGlobalObject* globalObject, JSValuePtr thisValue)

Extra whitespace on empty line (same issue below in this file), please remove

&gt; +    ASSERT(workerContext-&gt;thread() &amp;&amp; workerContext-&gt;thread()-&gt;threadID() == currentThread());

It is sub-optimal to have two checks in one ASSERT - if it fails, you won&apos;t immediately know which part failed. You could break it in two, or remove the first part completely (depending on how important it is to document this expectation in your opinion).

Maybe a similar assertion should be present in Document case for symmetry. Maybe not.

&gt; +        void executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValuePtr /* thisValue */);

No need to comment out &quot;thisValue&quot; - this is a method declaration, so compiler won&apos;t complain about unused argument.

-        void execute(JSDOMWindowShell*);
+        void executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValuePtr /* thisValue */);
+        void execute(Document*);
+        void execute(WorkerContext*);

The combination of overloaded functions and manual dispatch for execute() is somewhat inelegant. Sounds like it calls for a virtual function in ScriptExecutionContext, or for ScriptController unification. But it&apos;s sufficiently clear and local, so I&apos;m not asking you to do anything about it neither in this bug, nor in near future.

Also, executeFunctionInContext looks like it could mostly go in ScriptController. Again, not something to do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105114</commentid>
    <comment_count>4</comment_count>
      <attachid>26586</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-10 10:25:39 -0800</bug_when>
    <thetext>Comment on attachment 26586
Proposed patch

&gt; +        void executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValuePtr /* thisValue */);

There&apos;s no reason to comment out the name thisValue here. That only needs to be done when it&apos;s a function *definition* that doesn&apos;t use the argument. If it&apos;s a pure declaration like this that doesn&apos;t define the function you can and should just include the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105132</commentid>
    <comment_count>5</comment_count>
      <attachid>26590</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-10 14:30:54 -0800</bug_when>
    <thetext>Created attachment 26590
Updated patch

Thanks for review!
Everything fixed in this patch, except making execute() method a virtual of ScriptExecutionContext as Alexey suggested. I really like the idea but feel it&apos;d be better in a separate patch (no functionality change, just code move) so I&apos;ve created a bug 23229 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105136</commentid>
    <comment_count>6</comment_count>
      <attachid>26590</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-10 14:40:36 -0800</bug_when>
    <thetext>Comment on attachment 26590
Updated patch

&gt; +    if (context-&gt;isDocument())
&gt; +        execute(static_cast&lt;Document*&gt;(context));
&gt; +#if ENABLE(WORKERS)
&gt; +    else {
&gt; +        ASSERT(context-&gt;isWorkerContext());
&gt; +        execute(static_cast&lt;WorkerContext*&gt;(context));
&gt; +    }
&gt; +#else
&gt;      ASSERT(context-&gt;isDocument());
&gt; +#endif

I think the code above is unnecessarily twisted. How about this?

    #if !ENABLE(WORKERS)
        ASSERT(context-&gt;isDocument());
        execute(static_cast&lt;Document*&gt;(context));
    #else
        if (context-&gt;isDocument())
            execute(static_cast&lt;Document*&gt;(context));
        else {
            ASSERT(context-&gt;isWorkerContext());
            execute(static_cast&lt;WorkerContext*&gt;(context));
        }
    #endif

I think Alexey&apos;s other original comments are definitely worth considering too. But this patch seems OK to land as-is.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105184</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 00:07:49 -0800</bug_when>
    <thetext>Committed revision 39783.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26586</attachid>
            <date>2009-01-09 18:25:45 -0800</date>
            <delta_ts>2009-01-10 02:04:55 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>execute.txt</filename>
            <type>text/plain</type>
            <size>5895</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTc3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDEtMDkgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBTY2hlZHVsZWRBY3Rpb24gKFRpbWVvdXQgY2FsbGJhY2spIGFibGUgdG8gZXhlY3V0ZSBj
YWxsYmFjayB1bmRlciBXb3JrZXJDb250ZXh0LgorICAgICAgICBQYXJ0IG9mICdUaW1lcnMgaW4g
V29ya2Vycycgd29yay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMjIzCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKTogbmV3IG1ldGhv
ZCB0aGF0IHRha2VzIFdvcmtlckNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRB
Y3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCk6IEV4ZWN1dGVzIGEgSlNGdW5jdGlvbiBp
biBwcm9wZXIgY29udGV4dCB3aXRoICd0aGlzJyBvYmplY3QuCisgICAgICAgICogYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmg6CisKIDIwMDktMDEtMDkgIEFkYW0gVHJlYXQgIDxhZGFtLnRy
ZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lvbiAzOTc3MykKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
OSArMzAsMTMgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNXb3JrZXJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKQEAgLTUwLDQ1ICs1NCw3MCBAQCBTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxl
ZEFjdGlvbihFeGVjU3RhCiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgLy8gRklYTUU6IG1ha2UgaXQgd29yayB3
aXRoIFdvcmtlcnMgU0VDIHRvby4KLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
LSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
OwotICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+
ZnJhbWUoKSkpCi0gICAgICAgIGV4ZWN1dGUod2luZG93LT5zaGVsbCgpKTsKKyAgICBpZiAoY29u
dGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICBleGVjdXRlKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oY29udGV4dCkpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoY29udGV4dC0+aXNXb3Jr
ZXJDb250ZXh0KCkpOworICAgICAgICBleGVjdXRlKHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQq
Pihjb250ZXh0KSk7CisgICAgfQogfQotCi12b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShK
U0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCkKKyAgICAKK3ZvaWQgU2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZVB0ciB0aGlzVmFsdWUpCiB7Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHdpbmRv
d1NoZWxsLT53aW5kb3coKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCisgICAg
QVNTRVJUKG1fZnVuY3Rpb24pOworICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fZnVuY3Rpb24tPmdl
dENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkp
CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAg
CisgICAgQXJnTGlzdCBhcmdzOworICAgIHNpemVfdCBzaXplID0gbV9hcmdzLnNpemUoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgYXJncy5hcHBlbmQo
bV9hcmdzW2ldKTsKKyAgICAKKyAgICBnbG9iYWxPYmplY3QtPnN0YXJ0VGltZW91dENoZWNrKCk7
CisgICAgY2FsbChleGVjLCBtX2Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1
ZSwgYXJncyk7CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNrKCk7CisKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24o
ZXhlYyk7Cit9CisKK3ZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckNvbnRleHQq
IHdvcmtlckNvbnRleHQpCit7CisgICAgLy8gSW4gYSBXb3JrZXIsIHRoZSBleGVjdXRpb24gc2hv
dWxkIGFsd2F5cyBoYXBwZW4gb24gYSB3b3JrZXIgdGhyZWFkLgorICAgIEFTU0VSVCh3b3JrZXJD
b250ZXh0LT50aHJlYWQoKSAmJiB3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+dGhyZWFkSUQoKSA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIAorICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNj
cmlwdENvbnRyb2xsZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKKyAgIAorICAgIGlmICht
X2Z1bmN0aW9uKSB7CisgICAgICAgIEpTV29ya2VyQ29udGV4dCogY29udGV4dFdyYXBwZXIgPSBz
Y3JpcHRDb250cm9sbGVyLT53b3JrZXJDb250ZXh0V3JhcHBlcigpOworICAgICAgICBleGVjdXRl
RnVuY3Rpb25JbkNvbnRleHQoY29udGV4dFdyYXBwZXIsIGNvbnRleHRXcmFwcGVyKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIGNvZGUobV9jb2RlLCB3b3JrZXJDb250
ZXh0LT51cmwoKSk7CisgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV2YWx1YXRlKGNvZGUpOwor
ICAgIH0KK30KKyAgICAKK3ZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1
bWVudC0+ZnJhbWUoKSk7CisgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybjsKIAorICAg
IFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisgICAgCiAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQcm9jZXNzaW5nVGltZXJDYWxsYmFjayh0
cnVlKTsKIAotICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKLQotICAgIGlmIChtX2Z1bmN0aW9uKSB7
Ci0gICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IG1fZnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKLSAgICAgICAgaWYgKGNhbGxUeXBl
ICE9IENhbGxUeXBlTm9uZSkgewotICAgICAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHdp
bmRvd1NoZWxsLT53aW5kb3coKTsKLSAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRv
dy0+Z2xvYmFsRXhlYygpOwotCi0gICAgICAgICAgICBBcmdMaXN0IGFyZ3M7Ci0gICAgICAgICAg
ICBzaXplX3Qgc2l6ZSA9IG1fYXJncy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChtX2FyZ3Nb
aV0pOwotCi0gICAgICAgICAgICB3aW5kb3ctPnN0YXJ0VGltZW91dENoZWNrKCk7Ci0gICAgICAg
ICAgICBjYWxsKGV4ZWMsIG1fZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgd2luZG93U2hl
bGwsIGFyZ3MpOwotICAgICAgICAgICAgd2luZG93LT5zdG9wVGltZW91dENoZWNrKCk7Ci0gICAg
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmVwb3J0
Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIGlmICht
X2Z1bmN0aW9uKQorICAgICAgICBleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQod2luZG93LCB3aW5k
b3ctPnNoZWxsKCkpOworICAgIGVsc2UKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5leGVjdXRl
U2NyaXB0KG1fY29kZSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGRvY3VtZW50J3MgcmVuZGVyaW5n
IGZvbGxvd2luZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSB0aW1lb3V0IGNhbGxiYWNrLgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCShyZXZpc2lvbiAzOTc3MykKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDEwICsyNCwxNSBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEpTRE9NV2luZG93U2hlbGw7
CisgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
KyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogCiAgICAvKiBBbiBhY3Rpb24gKGVpdGhlciBmdW5j
dGlvbiBvciBzdHJpbmcpIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIGEgc3BlY2lmaWVkCiAgICAgKiB0
aW1lIGludGVydmFsLCBlaXRoZXIgb25jZSBvciByZXBlYXRlZGx5LiBVc2VkIGZvciB3aW5kb3cu
c2V0VGltZW91dCgpCkBAIC00NCw3ICs0OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZvaWQgZXhlY3V0ZShKU0RPTVdpbmRvd1NoZWxsKik7CisgICAgICAgIHZvaWQg
ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFs
dWVQdHIgLyogdGhpc1ZhbHVlICovKTsKKyAgICAgICAgdm9pZCBleGVjdXRlKERvY3VtZW50Kik7
CisgICAgICAgIHZvaWQgZXhlY3V0ZShXb3JrZXJDb250ZXh0Kik7CiAKICAgICAgICAgSlNDOjpQ
cm90ZWN0ZWRKU1ZhbHVlUHRyIG1fZnVuY3Rpb247CiAgICAgICAgIFZlY3RvcjxKU0M6OlByb3Rl
Y3RlZEpTVmFsdWVQdHI+IG1fYXJnczsK
</data>
<flag name="review"
          id="12638"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26587</attachid>
            <date>2009-01-09 18:30:21 -0800</date>
            <delta_ts>2009-01-09 18:30:21 -0800</delta_ts>
            <desc>test case (not for landing)</desc>
            <filename>testExecute.txt</filename>
            <type>text/plain</type>
            <size>2927</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDM5NzczKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiSlNF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogCisjaW5jbHVkZSAi
U2NoZWR1bGVkQWN0aW9uLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTY1LDYgKzY3LDI3IEBAIHZvaWQgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkK
ICAgICB9CiB9CiAKK0pTVmFsdWVQdHIgSlNXb3JrZXJDb250ZXh0Ojp0ZXN0KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBKU1ZhbHVlUHRyIHYgPSBhcmdzLmF0
KGV4ZWMsIDApOworICAgIGlmICh2LT5pc1N0cmluZygpKSB7CisgICAgICAgIFNjaGVkdWxlZEFj
dGlvbiBhY3Rpb24oYXNTdHJpbmcodiktPnZhbHVlKCkpOworICAgICAgICBhY3Rpb24uZXhlY3V0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisKKyAgICAvLyBOb3Qgc3RyaW5nIC0gdGhlbiBhIGZ1bmN0aW9uIQorICAgIENh
bGxEYXRhIGNhbGxEYXRhOworICAgIGlmICh2LT5nZXRDYWxsRGF0YShjYWxsRGF0YSkgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBBcmdM
aXN0IGFyZ3NUYWlsOworICAgIGFyZ3MuZ2V0U2xpY2UoMSwgYXJnc1RhaWwpOworICAgIFNjaGVk
dWxlZEFjdGlvbiBhY3Rpb24oZXhlYywgdiwgYXJnc1RhaWwpOworICAgIGFjdGlvbi5leGVjdXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9
CisgICAgCiBKU1ZhbHVlUHRyIEpTV29ya2VyQ29udGV4dDo6c2VsZihFeGVjU3RhdGUqKSBjb25z
dAogewogICAgIHJldHVybiBKU1ZhbHVlUHRyKHRoaXMpOwpJbmRleDogV2ViQ29yZS9kb20vV29y
a2VyQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5p
ZGwJKHJldmlzaW9uIDM5NzczKQorKysgV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmlu
ZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkKICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIFdvcmtl
ckNvbnRleHQgc2VsZjsKICNlbmRpZgorICAgICAgICBbQ3VzdG9tXSB2b2lkIHRlc3QoaW4gVGlt
ZW91dEhhbmRsZXIgaGFuZGxlcik7CiAKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25tZXNzYWdlOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdl
KTsKSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL3dvcmtlci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL21hbnVhbC10ZXN0cy93b3JrZXIuanMJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21h
bnVhbC10ZXN0cy93b3JrZXIuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK2Z1bmN0
aW9uIHByaW50KGFyZykKK3sKKyAgICBwb3N0TWVzc2FnZSgicHJpbnRlZDogIiArIGFyZyk7Cit9
CisKK3ZhciBzb21lVmFyaWFibGUgPSAiVGVzdCBNZXNzYWdlIDMiOworCitwb3N0TWVzc2FnZSgi
VGVzdCBTdGFydGVkLiBTaG91bGQgcHJpbnQgMyB0ZXN0IG1lc3NhZ2VzLiIpOworCit0ZXN0KCJw
b3N0TWVzc2FnZSgnVGVzdCBNZXNzYWdlIDEnKTsiKTsKK3Rlc3QocHJpbnQsICJUZXN0IE1lc3Nh
Z2UgMiIpOwordGVzdChwcmludCwgc29tZVZhcmlhYmxlKTsKK3Rlc3QocHJpbnQsIHRoaXMpOwor
Citwb3N0TWVzc2FnZSgiVGVzdCBjb21wbGV0ZWQuIik7CisKSW5kZXg6IFdlYkNvcmUvbWFudWFs
LXRlc3RzL3dvcmtlcl90ZXN0Lmh0bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0
cy93b3JrZXJfdGVzdC5odG0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0cy93
b3JrZXJfdGVzdC5odG0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorCis8
Ym9keT4KKzxsYWJlbCBmb3I9InN0YXR1cyI+U3RhdHVzOjwvbGFiZWw+Cis8ZGl2IHN0eWxlPSJi
b3JkZXI6MXB4IHNvbGlkIG9yYW5nZTsiIGlkPSJzdGF0dXMiPkxvZyBzdGFydDwvZGl2PgorCis8
c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICB2YXIgc3RhdHVzX3BhbmVsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1cycpOworICBzdGF0dXNfcGFuZWwuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgIHN0YXR1c19wYW5lbC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKK30KKwordmFyIHdvcmtlciA9IG5ldyBX
b3JrZXIoIndvcmtlci5qcyIpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBs
b2coZXZ0LmRhdGEpOyB9CisKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26590</attachid>
            <date>2009-01-10 14:30:54 -0800</date>
            <delta_ts>2009-01-10 14:40:36 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>execute.txt</filename>
            <type>text/plain</type>
            <size>6498</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTc3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDEtMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBTY2hlZHVsZWRBY3Rpb24gKFRpbWVvdXQgY2FsbGJhY2spIGFibGUgdG8gZXhlY3V0ZSB0
aGUgY2FsbGJhY2sgdW5kZXIgV29ya2VyQ29udGV4dC4KKyAgICAgICAgUGFydCBvZiAnVGltZXJz
IGluIFdvcmtlcnMnIHdvcmsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzIyMworCisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6IG5ldyBt
ZXRob2QgdGhhdCB0YWtlcyBXb3JrZXJDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQpOiBFeGVjdXRlcyBhIEpTRnVuY3Rp
b24gaW4gcHJvcGVyIGNvbnRleHQgd2l0aCAndGhpcycgb2JqZWN0LgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorCiAyMDA5LTAxLTA5ICBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAkocmV2aXNpb24gMzk3NzMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA2IEpvbiBTaGllciAoanNoaWVyQGlhc3RhdGUuZWR1KQogICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Vi
a2l0Lm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNldmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsOSArMzEsMTMgQEAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTUwLDQ1
ICs1NSw3NiBAQCBTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbihFeGVjU3RhCiAKIHZv
aWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7Ci0gICAgLy8gRklYTUU6IG1ha2UgaXQgd29yayB3aXRoIFdvcmtlcnMgU0VDIHRvby4K
KyAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKQorICAgICAgICBleGVjdXRlKHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCkpOworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIGVsc2Ug
eworICAgICAgICBBU1NFUlQoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgICAgICBl
eGVjdXRlKHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KSk7CisgICAgfQorI2Vs
c2UKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOwotICAgIGlmIChKU0RPTVdp
bmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+ZnJhbWUoKSkpCi0gICAgICAg
IGV4ZWN1dGUod2luZG93LT5zaGVsbCgpKTsKKyNlbmRpZgogfQogCi12b2lkIFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCkKK3ZvaWQgU2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZVB0ciB0aGlzVmFsdWUpCiB7Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFt
ZSA9IHdpbmRvd1NoZWxsLT53aW5kb3coKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mdW5jdGlvbik7CisgICAgSlNMb2Nr
IGxvY2soZmFsc2UpOwogCi0gICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQor
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gbV9mdW5jdGlv
bi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5v
bmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UHJvY2Vzc2lu
Z1RpbWVyQ2FsbGJhY2sodHJ1ZSk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgQXJnTGlzdCBh
cmdzOworICAgIHNpemVfdCBzaXplID0gbV9hcmdzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgYXJncy5hcHBlbmQobV9hcmdzW2ldKTsKKwor
ICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMsIG1f
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICBnbG9i
YWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKKworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKK30KKworI2lmIEVO
QUJMRShXT1JLRVJTKQordm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCkKK3sKKyAgICAvLyBJbiBhIFdvcmtlciwgdGhlIGV4ZWN1dGlvbiBz
aG91bGQgYWx3YXlzIGhhcHBlbiBvbiBhIHdvcmtlciB0aHJlYWQuCisgICAgQVNTRVJUKHdvcmtl
ckNvbnRleHQtPnRocmVhZCgpLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisKKyAg
ICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gd29ya2VyQ29udGV4
dC0+c2NyaXB0KCk7CiAKICAgICBpZiAobV9mdW5jdGlvbikgewotICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBtX2Z1bmN0aW9uLT5nZXRDYWxs
RGF0YShjYWxsRGF0YSk7Ci0gICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsK
LSAgICAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB3aW5kb3dTaGVsbC0+d2luZG93KCk7
Ci0gICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKLQot
ICAgICAgICAgICAgQXJnTGlzdCBhcmdzOwotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBtX2Fy
Z3Muc2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgICAgICAgICAgYXJncy5hcHBlbmQobV9hcmdzW2ldKTsKLQotICAgICAgICAgICAg
d2luZG93LT5zdGFydFRpbWVvdXRDaGVjaygpOwotICAgICAgICAgICAgY2FsbChleGVjLCBtX2Z1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHdpbmRvd1NoZWxsLCBhcmdzKTsKLSAgICAgICAg
ICAgIHdpbmRvdy0+c3RvcFRpbWVvdXRDaGVjaygpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhl
Yyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICAgICAgSlNXb3JrZXJDb250ZXh0KiBjb250
ZXh0V3JhcHBlciA9IHNjcmlwdENvbnRyb2xsZXItPndvcmtlckNvbnRleHRXcmFwcGVyKCk7Cisg
ICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChjb250ZXh0V3JhcHBlciwgY29udGV4dFdy
YXBwZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFNjcmlwdFNvdXJjZUNvZGUgY29kZShtX2Nv
ZGUsIHdvcmtlckNvbnRleHQtPnVybCgpKTsKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXZh
bHVhdGUoY29kZSk7CisgICAgfQorfQorI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCit2b2lk
IFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgSlNE
T01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQtPmZyYW1lKCkpOworICAg
IGlmICghd2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8RnJhbWU+IGZyYW1l
ID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNj
cmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPnNjcmlw
dCgpLT5zZXRQcm9jZXNzaW5nVGltZXJDYWxsYmFjayh0cnVlKTsKKworICAgIGlmIChtX2Z1bmN0
aW9uKQorICAgICAgICBleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQod2luZG93LCB3aW5kb3ctPnNo
ZWxsKCkpOworICAgIGVsc2UKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0
KG1fY29kZSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGRvY3VtZW50J3MgcmVuZGVyaW5nIGZvbGxv
d2luZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSB0aW1lb3V0IGNhbGxiYWNrLgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCShyZXZpc2lvbiAzOTc3MykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsy
NCwxNSBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEpTRE9NV2luZG93U2hlbGw7CisgICAg
Y2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBj
bGFzcyBXb3JrZXJDb250ZXh0OwogCiAgICAvKiBBbiBhY3Rpb24gKGVpdGhlciBmdW5jdGlvbiBv
ciBzdHJpbmcpIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIGEgc3BlY2lmaWVkCiAgICAgKiB0aW1lIGlu
dGVydmFsLCBlaXRoZXIgb25jZSBvciByZXBlYXRlZGx5LiBVc2VkIGZvciB3aW5kb3cuc2V0VGlt
ZW91dCgpCkBAIC00MCwxMSArNDUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgOiBtX2NvZGUoY29kZSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgICAKKwogICAg
ICAgICB2b2lkIGV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdm9pZCBleGVjdXRlKEpTRE9NV2luZG93U2hlbGwqKTsKKyAgICAgICAgdm9p
ZCBleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNW
YWx1ZVB0ciB0aGlzVmFsdWUpOworICAgICAgICB2b2lkIGV4ZWN1dGUoRG9jdW1lbnQqKTsKKyNp
ZiBFTkFCTEUoV09SS0VSUykgICAgICAgIAorICAgICAgICB2b2lkIGV4ZWN1dGUoV29ya2VyQ29u
dGV4dCopOworI2VuZGlmCiAKICAgICAgICAgSlNDOjpQcm90ZWN0ZWRKU1ZhbHVlUHRyIG1fZnVu
Y3Rpb247CiAgICAgICAgIFZlY3RvcjxKU0M6OlByb3RlY3RlZEpTVmFsdWVQdHI+IG1fYXJnczsK
</data>
<flag name="review"
          id="12640"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>